From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- js/src/octane/base.js | 390 + js/src/octane/code-load.js | 1552 + js/src/octane/crypto.js | 1698 + js/src/octane/deltablue.js | 883 + js/src/octane/earley-boyer.js | 4684 + js/src/octane/gbemu-part1.js | 1350 + js/src/octane/gbemu-part2.js | 9780 ++ js/src/octane/index.html | 453 + js/src/octane/mandreel.js | 277403 ++++++++++++++++++++++++++++++++ js/src/octane/navier-stokes.js | 415 + js/src/octane/raytrace.js | 904 + js/src/octane/richards.js | 539 + js/src/octane/run-box2d.js | 59 + js/src/octane/run-code-load.js | 59 + js/src/octane/run-crypto.js | 59 + js/src/octane/run-deltablue.js | 59 + js/src/octane/run-earley-boyer.js | 59 + js/src/octane/run-gbemu.js | 60 + js/src/octane/run-mandreel.js | 59 + js/src/octane/run-navier-stokes.js | 59 + js/src/octane/run-pdfjs.js | 59 + js/src/octane/run-raytrace.js | 59 + js/src/octane/run-regexp.js | 59 + js/src/octane/run-richards.js | 59 + js/src/octane/run-splay.js | 59 + js/src/octane/run-typescript.js | 61 + js/src/octane/run-zlib.js | 60 + js/src/octane/run.js | 77 + js/src/octane/splay.js | 423 + js/src/octane/typescript-compiler.js | 25745 +++ js/src/octane/typescript.js | 172 + js/src/octane/zlib-data.js | 2409 + js/src/octane/zlib.js | 176 + 33 files changed, 329942 insertions(+) create mode 100644 js/src/octane/base.js create mode 100644 js/src/octane/code-load.js create mode 100644 js/src/octane/crypto.js create mode 100644 js/src/octane/deltablue.js create mode 100644 js/src/octane/earley-boyer.js create mode 100644 js/src/octane/gbemu-part1.js create mode 100644 js/src/octane/gbemu-part2.js create mode 100644 js/src/octane/index.html create mode 100644 js/src/octane/mandreel.js create mode 100644 js/src/octane/navier-stokes.js create mode 100644 js/src/octane/raytrace.js create mode 100644 js/src/octane/richards.js create mode 100644 js/src/octane/run-box2d.js create mode 100644 js/src/octane/run-code-load.js create mode 100644 js/src/octane/run-crypto.js create mode 100644 js/src/octane/run-deltablue.js create mode 100644 js/src/octane/run-earley-boyer.js create mode 100644 js/src/octane/run-gbemu.js create mode 100644 js/src/octane/run-mandreel.js create mode 100644 js/src/octane/run-navier-stokes.js create mode 100644 js/src/octane/run-pdfjs.js create mode 100644 js/src/octane/run-raytrace.js create mode 100644 js/src/octane/run-regexp.js create mode 100644 js/src/octane/run-richards.js create mode 100644 js/src/octane/run-splay.js create mode 100644 js/src/octane/run-typescript.js create mode 100644 js/src/octane/run-zlib.js create mode 100644 js/src/octane/run.js create mode 100644 js/src/octane/splay.js create mode 100644 js/src/octane/typescript-compiler.js create mode 100644 js/src/octane/typescript.js create mode 100644 js/src/octane/zlib-data.js create mode 100644 js/src/octane/zlib.js (limited to 'js/src/octane') diff --git a/js/src/octane/base.js b/js/src/octane/base.js new file mode 100644 index 0000000000..9d6e3dee5d --- /dev/null +++ b/js/src/octane/base.js @@ -0,0 +1,390 @@ +// Copyright 2013 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +// Performance.now is used in latency benchmarks, the fallback is Date.now. +var performance = performance || {}; +performance.now = (function() { + return performance.now || + performance.mozNow || + performance.msNow || + performance.oNow || + performance.webkitNow || + Date.now; +})(); + +// Simple framework for running the benchmark suites and +// computing a score based on the timing measurements. + + +// A benchmark has a name (string) and a function that will be run to +// do the performance measurement. The optional setup and tearDown +// arguments are functions that will be invoked before and after +// running the benchmark, but the running time of these functions will +// not be accounted for in the benchmark score. +function Benchmark(name, doWarmup, doDeterministic, deterministicIterations, + run, setup, tearDown, rmsResult, minIterations) { + this.name = name; + this.doWarmup = doWarmup; + this.doDeterministic = doDeterministic; + this.deterministicIterations = deterministicIterations; + this.run = run; + this.Setup = setup ? setup : function() { }; + this.TearDown = tearDown ? tearDown : function() { }; + this.rmsResult = rmsResult ? rmsResult : null; + this.minIterations = minIterations ? minIterations : 32; +} + + +// Benchmark results hold the benchmark and the measured time used to +// run the benchmark. The benchmark score is computed later once a +// full benchmark suite has run to completion. If latency is set to 0 +// then there is no latency score for this benchmark. +function BenchmarkResult(benchmark, time, latency) { + this.benchmark = benchmark; + this.time = time; + this.latency = latency; +} + + +// Automatically convert results to numbers. Used by the geometric +// mean computation. +BenchmarkResult.prototype.valueOf = function() { + return this.time; +} + + +// Suites of benchmarks consist of a name and the set of benchmarks in +// addition to the reference timing that the final score will be based +// on. This way, all scores are relative to a reference run and higher +// scores implies better performance. +function BenchmarkSuite(name, reference, benchmarks) { + this.name = name; + this.reference = reference; + this.benchmarks = benchmarks; + BenchmarkSuite.suites.push(this); +} + + +// Keep track of all declared benchmark suites. +BenchmarkSuite.suites = []; + +// Scores are not comparable across versions. Bump the version if +// you're making changes that will affect that scores, e.g. if you add +// a new benchmark or change an existing one. +BenchmarkSuite.version = '9'; + + +// Defines global benchsuite running mode that overrides benchmark suite +// behavior. Intended to be set by the benchmark driver. Undefined +// values here allow a benchmark to define behaviour itself. +BenchmarkSuite.config = { + doWarmup: undefined, + doDeterministic: undefined +}; + + +// Override the alert function to throw an exception instead. +alert = function(s) { + throw "Alert called with argument: " + s; +}; + + +// To make the benchmark results predictable, we replace Math.random +// with a 100% deterministic alternative. +BenchmarkSuite.ResetRNG = function() { + Math.random = (function() { + var seed = 49734321; + return function() { + // Robert Jenkins' 32 bit integer hash function. + seed = ((seed + 0x7ed55d16) + (seed << 12)) & 0xffffffff; + seed = ((seed ^ 0xc761c23c) ^ (seed >>> 19)) & 0xffffffff; + seed = ((seed + 0x165667b1) + (seed << 5)) & 0xffffffff; + seed = ((seed + 0xd3a2646c) ^ (seed << 9)) & 0xffffffff; + seed = ((seed + 0xfd7046c5) + (seed << 3)) & 0xffffffff; + seed = ((seed ^ 0xb55a4f09) ^ (seed >>> 16)) & 0xffffffff; + return (seed & 0xfffffff) / 0x10000000; + }; + })(); +} + + +// Runs all registered benchmark suites and optionally yields between +// each individual benchmark to avoid running for too long in the +// context of browsers. Once done, the final score is reported to the +// runner. +BenchmarkSuite.RunSuites = function(runner, skipBenchmarks) { + skipBenchmarks = typeof skipBenchmarks === 'undefined' ? [] : skipBenchmarks; + var continuation = null; + var suites = BenchmarkSuite.suites; + var length = suites.length; + BenchmarkSuite.scores = []; + var index = 0; + function RunStep() { + while (continuation || index < length) { + if (continuation) { + continuation = continuation(); + } else { + var suite = suites[index++]; + if (runner.NotifyStart) runner.NotifyStart(suite.name); + if (skipBenchmarks.indexOf(suite.name) > -1) { + suite.NotifySkipped(runner); + } else { + continuation = suite.RunStep(runner); + } + } + if (continuation && typeof window != 'undefined' && window.setTimeout) { + window.setTimeout(RunStep, 25); + return; + } + } + + // show final result + if (runner.NotifyScore) { + var score = BenchmarkSuite.GeometricMean(BenchmarkSuite.scores); + var formatted = BenchmarkSuite.FormatScore(100 * score); + runner.NotifyScore(formatted); + } + } + RunStep(); +} + + +// Counts the total number of registered benchmarks. Useful for +// showing progress as a percentage. +BenchmarkSuite.CountBenchmarks = function() { + var result = 0; + var suites = BenchmarkSuite.suites; + for (var i = 0; i < suites.length; i++) { + result += suites[i].benchmarks.length; + } + return result; +} + + +// Computes the geometric mean of a set of numbers. +BenchmarkSuite.GeometricMean = function(numbers) { + var log = 0; + for (var i = 0; i < numbers.length; i++) { + log += Math.log(numbers[i]); + } + return Math.pow(Math.E, log / numbers.length); +} + + +// Computes the geometric mean of a set of throughput time measurements. +BenchmarkSuite.GeometricMeanTime = function(measurements) { + var log = 0; + for (var i = 0; i < measurements.length; i++) { + log += Math.log(measurements[i].time); + } + return Math.pow(Math.E, log / measurements.length); +} + + +// Computes the geometric mean of a set of rms measurements. +BenchmarkSuite.GeometricMeanLatency = function(measurements) { + var log = 0; + var hasLatencyResult = false; + for (var i = 0; i < measurements.length; i++) { + if (measurements[i].latency != 0) { + log += Math.log(measurements[i].latency); + hasLatencyResult = true; + } + } + if (hasLatencyResult) { + return Math.pow(Math.E, log / measurements.length); + } else { + return 0; + } +} + + +// Converts a score value to a string with at least three significant +// digits. +BenchmarkSuite.FormatScore = function(value) { + if (value > 100) { + return value.toFixed(0); + } else { + return value.toPrecision(3); + } +} + +// Notifies the runner that we're done running a single benchmark in +// the benchmark suite. This can be useful to report progress. +BenchmarkSuite.prototype.NotifyStep = function(result) { + this.results.push(result); + if (this.runner.NotifyStep) this.runner.NotifyStep(result.benchmark.name); +} + + +// Notifies the runner that we're done with running a suite and that +// we have a result which can be reported to the user if needed. +BenchmarkSuite.prototype.NotifyResult = function() { + var mean = BenchmarkSuite.GeometricMeanTime(this.results); + var score = this.reference[0] / mean; + BenchmarkSuite.scores.push(score); + if (this.runner.NotifyResult) { + var formatted = BenchmarkSuite.FormatScore(100 * score); + this.runner.NotifyResult(this.name, formatted); + } + if (this.reference.length == 2) { + var meanLatency = BenchmarkSuite.GeometricMeanLatency(this.results); + if (meanLatency != 0) { + var scoreLatency = this.reference[1] / meanLatency; + BenchmarkSuite.scores.push(scoreLatency); + if (this.runner.NotifyResult) { + var formattedLatency = BenchmarkSuite.FormatScore(100 * scoreLatency) + this.runner.NotifyResult(this.name + "Latency", formattedLatency); + } + } + } +} + + +BenchmarkSuite.prototype.NotifySkipped = function(runner) { + BenchmarkSuite.scores.push(1); // push default reference score. + if (runner.NotifyResult) { + runner.NotifyResult(this.name, "Skipped"); + } +} + + +// Notifies the runner that running a benchmark resulted in an error. +BenchmarkSuite.prototype.NotifyError = function(error) { + if (this.runner.NotifyError) { + this.runner.NotifyError(this.name, error); + } + if (this.runner.NotifyStep) { + this.runner.NotifyStep(this.name); + } +} + + +// Runs a single benchmark for at least a second and computes the +// average time it takes to run a single iteration. +BenchmarkSuite.prototype.RunSingleBenchmark = function(benchmark, data) { + var config = BenchmarkSuite.config; + var doWarmup = config.doWarmup !== undefined + ? config.doWarmup + : benchmark.doWarmup; + var doDeterministic = config.doDeterministic !== undefined + ? config.doDeterministic + : benchmark.doDeterministic; + + function Measure(data) { + var elapsed = 0; + var start = new Date(); + + // Run either for 1 second or for the number of iterations specified + // by minIterations, depending on the config flag doDeterministic. + for (var i = 0; (doDeterministic ? + i 0: + cutoff = min(79, len(data)) + while data[cutoff-1] == '\\': + cutoff -= 1 + line = data[0:cutoff] + data = data[cutoff:] + if len(data) > 0: + line += '\\' + print line + +url = "http://closure-compiler.appspot.com/compile" +request_params = {"output_format": "text", + "compilation_level": "SIMPLE_OPTIMIZATIONS", + "use_closure_library": "true", + "js_code": "", + "output_info": "compiled_code"} +result = urllib2.urlopen(url, urllib.urlencode(request_params)) +escape_and_format(result.read(), "BASE_JS") + +print "\n\n" + +url = "http://code.jquery.com/jquery.min.js" +result = urllib2.urlopen(url) +escape_and_format(result.read(), "JQUERY_JS") + +*/ +var BASE_JS = "var COMPILED=!0,goog=goog||{};goog.global=this;goog.DEBUG=!0;goo\ +g.LOCALE=\"en\";goog.provide=function(a){if(!COMPILED){if(goog.isProvided_(a))t\ +hrow Error('Namespace \"'+a+'\" already declared.');delete goog.implicitNamespa\ +ces_[a];for(var b=a;(b=b.substring(0,b.lastIndexOf(\".\")))&&!goog.getObjectByN\ +ame(b);)goog.implicitNamespaces_[b]=!0}goog.exportPath_(a)};goog.setTestOnly=fu\ +nction(a){if(COMPILED&&!goog.DEBUG)throw a=a||\"\",Error(\"Importing test-only \ +code into non-debug environment\"+a?\": \"+a:\".\");};COMPILED||(goog.isProvide\ +d_=function(a){return!goog.implicitNamespaces_[a]&&!!goog.getObjectByName(a)},g\ +oog.implicitNamespaces_={});goog.exportPath_=function(a,b,c){a=a.split(\".\");c\ +=c||goog.global;!(a[0]in c)&&c.execScript&&c.execScript(\"var \"+a[0]);for(var \ +d;a.length&&(d=a.shift());)!a.length&&goog.isDef(b)?c[d]=b:c=c[d]?c[d]:c[d]={}}\ +;goog.getObjectByName=function(a,b){for(var c=a.split(\".\"),d=b||goog.global,e\ +;e=c.shift();)if(goog.isDefAndNotNull(d[e]))d=d[e];else return null;return d};g\ +oog.globalize=function(a,b){var c=b||goog.global,d;for(d in a)c[d]=a[d]};goog.a\ +ddDependency=function(a,b,c){if(!COMPILED){for(var d,a=a.replace(/\\\\/g,\"/\")\ +,e=goog.dependencies_,g=0;d=b[g];g++){e.nameToPath[d]=a;a in e.pathToNames||(e.\ +pathToNames[a]={});e.pathToNames[a][d]=true}for(d=0;b=c[d];d++){a in e.requires\ +||(e.requires[a]={});e.requires[a][b]=true}}};goog.ENABLE_DEBUG_LOADER=!0;goog.\ +require=function(a){if(!COMPILED&&!goog.isProvided_(a)){if(goog.ENABLE_DEBUG_LO\ +ADER){var b=goog.getPathFromDeps_(a);if(b){goog.included_[b]=true;goog.writeScr\ +ipts_();return}}a=\"goog.require could not find: \"+a;goog.global.console&&goog\ +.global.console.error(a);throw Error(a);}};goog.basePath=\"\";goog.nullFunction\ +=function(){};goog.identityFunction=function(a){return a};goog.abstractMethod=f\ +unction(){throw Error(\"unimplemented abstract method\");};goog.addSingletonGet\ +ter=function(a){a.getInstance=function(){return a.instance_||(a.instance_=new a\ +)}};!COMPILED&&goog.ENABLE_DEBUG_LOADER&&(goog.included_={},goog.dependencies_=\ +{pathToNames:{},nameToPath:{},requires:{},visited:{},written:{}},goog.inHtmlDoc\ +ument_=function(){var a=goog.global.document;return typeof a!=\"undefined\"&&\"\ +write\"in a},goog.findBasePath_=function(){if(goog.global.CLOSURE_BASE_PATH)goo\ +g.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_())for(var\ + a=goog.global.document.getElementsByTagName(\"script\"),b=a.length-1;b>=0;--b)\ +{var c=a[b].src,d=c.lastIndexOf(\"?\"), d=d==-1?c.length:d;if(c.substr(d-7,7)==\ +\"base.js\"){goog.basePath=c.substr(0,d-7);break}}},goog.importScript_=function\ +(a){var b=goog.global.CLOSURE_IMPORT_SCRIPT||goog.writeScriptTag_;!goog.depende\ +ncies_.written[a]&&b(a)&&(goog.dependencies_.written[a]=true)},goog.writeScript\ +Tag_=function(a){if(goog.inHtmlDocument_()){goog.global.document.write('<\\/script>');return true}return false}\ +,goog.writeScripts_=function(){function a(e){if(!(e in d.written)){if(!(e in d.\ +visited)){d.visited[e]=true;if(e in d.requires)for(var f in d.requires[e])if(!g\ +oog.isProvided_(f))if(f in d.nameToPath)a(d.nameToPath[f]);else throw Error(\"U\ +ndefined nameToPath for \"+f);}if(!(e in c)){c[e]=true;b.push(e)}}}var b=[],c={\ +},d=goog.dependencies_,e;for(e in goog.included_)d.written[e]||a(e);for(e=0;e2){var d=Array.pr\ +ototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.c\ +all(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return f\ +unction(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){goog.bind=Fun\ +ction.prototype.bind&&Function.prototype.bind.toString().indexOf(\"native code\ +\")!=-1?goog.bindNative_:goog.bindJs_;return goog.bind.apply(null,arguments)};g\ +oog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return \ +function(){var b=Array.prototype.slice.call(arguments);b.unshift.apply(b,c);ret\ +urn a.apply(this,b)}};goog.mixin=function(a,b){for(var c in b)a[c]=b[c]};goog.n\ +ow=Date.now||function(){return+new Date};goog.globalEval=function(a){if(goog.gl\ +obal.execScript)goog.global.execScript(a,\"JavaScript\");else if(goog.global.ev\ +al){if(goog.evalWorksForGlobals_==null){goog.global.eval(\"var _et_ = 1;\");if(\ +typeof goog.global._et_!=\"undefined\"){delete goog.global._et_;goog.evalWorksF\ +orGlobals_=true}else goog.evalWorksForGlobals_=false}if(goog.evalWorksForGlobal\ +s_)goog.global.eval(a);else{var b=goog.global.document,c=b.createElement(\"scri\ +pt\");c.type=\"text/javascript\";c.defer=false;c.appendChild(b.createTextNode(a\ +));b.body.appendChild(c);b.body.removeChild(c)}}else throw Error(\"goog.globalE\ +val not available\");};goog.evalWorksForGlobals_=null;goog.getCssName=function(\ +a,b){var c=function(a){return goog.cssNameMapping_[a]||a},d=function(a){for(var\ + a=a.split(\"-\"),b=[],d=0;d\").appendTo\ +(b),e=d.css(\"display\");d.remove();if(e===\"none\"||e===\"\"){ck||(ck=c.create\ +Element(\"iframe\"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!\ +cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.wri\ +te((f.support.boxModel?\"\":\"\")+\"\"),cl.close();d\ +=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,\"display\"),b.removeChil\ +d(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],\ +cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr()\ +{setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObjec\ +t(\"Microsoft.XMLHTTP\")}catch(b){}}function ch(){try{return new a.XMLHttpReque\ +st}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var\ + d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!==\"border\")for(;e=0===c})}function S(a){return!a||!a.parentNode||a.parentNod\ +e.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){v\ +ar d=b+\"defer\",e=b+\"queue\",g=b+\"mark\",h=f._data(a,d);h&&(c===\"queue\"||!\ +f._data(a,e))&&(c===\"mark\"||!f._data(a,g))&&setTimeout(function(){!f._data(a,\ +e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b \ +in a){if(b===\"data\"&&f.isEmptyObject(a[b]))continue;if(b!==\"toJSON\")return!\ +1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e=\"data-\"+c.replac\ +e(k,\"-$1\").toLowerCase();d=a.getAttribute(e);if(typeof d==\"string\"){try{d=d\ +===\"true\"?!0:d===\"false\"?!1:d===\"null\"?null:f.isNumeric(d)?+d:j.test(d)?f\ +.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g\ +[a]={},c,d;a=a.split(/\\s+/);for(c=0,d=a.length;c)[^>]*$|#([\\w\\-]*)$)/,j=/\\S/,k=/^\\s+/,l=/\\s+$/,m=/^<\ +(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,n=/^[\\],:{}\\s]*$/,o=/\\\\(?:[\"\\\\\\/bfnrt]|u\ +[0-9a-fA-F]{4})/g,p=/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:\ +[eE][+\\-]?\\d+)?/g,q=/(?:^|:|,)(?:\\s*\\[)+/g,r=/(webkit)[ \\/]([\\w.]+)/,s=/(\ +opera)(?:.*version)?[ \\/]([\\w.]+)/,t=/(msie) ([\\w.]+)/,u=/(mozilla)(?:.*? rv\ +:([\\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+\"\").toU\ +pperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.\ +hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototyp\ +e.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:func\ +tion(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a\ +,this.length=1;return this}if(a===\"body\"&&!d&&c.body){this.context=c,this[0]=\ +c.body,this.selector=a,this.length=1;return this}if(typeof a==\"string\"){a.cha\ +rAt(0)!==\"<\"||a.charAt(a.length-1)!==\">\"||a.length<3?g=i.exec(a):g=[null,a,\ +null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d\ +:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a\ +,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable\ +?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElem\ +entById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1\ +,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f)\ +.find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.sel\ +ector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray\ +(a,this)},selector:\"\",jquery:\"1.7.2\",length:0,size:function(){return this.l\ +ength},toArray:function(){return F.call(this,0)},get:function(a){return a==null\ +?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var \ +d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d\ +.context=this.context,b===\"find\"?d.selector=this.selector+(this.selector?\" \ +\":\"\")+c:b&&(d.selector=this.selector+\".\"+b+\"(\"+c+\")\");return d},each:f\ +unction(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);\ +return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)}\ +,first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:\ +function(){return this.pushStack(F.apply(this,arguments),\"slice\",F.call(argum\ +ents).join(\",\"))},map:function(a){return this.pushStack(e.map(this,function(b\ +,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constr\ +uctor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.e\ +xtend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments\ +.length,l=!1;typeof i==\"boolean\"&&(l=i,i=arguments[1]||{},j=2),typeof i!=\"ob\ +ject\"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.tr\ +igger&&e(c).trigger(\"ready\").off(\"ready\")}},bindReady:function(){if(!A){A=e\ +.Callbacks(\"once memory\");if(c.readyState===\"complete\")return setTimeout(e.\ +ready,1);if(c.addEventListener)c.addEventListener(\"DOMContentLoaded\",B,!1),a.\ +addEventListener(\"load\",e.ready,!1);else if(c.attachEvent){c.attachEvent(\"on\ +readystatechange\",B),a.attachEvent(\"onload\",e.ready);var b=!1;try{b=a.frameE\ +lement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:functio\ +n(a){return e.type(a)===\"function\"},isArray:Array.isArray||function(a){return\ + e.type(a)===\"array\"},isWindow:function(a){return a!=null&&a==a.window},isNum\ +eric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){ret\ +urn a==null?String(a):I[C.call(a)]||\"object\"},isPlainObject:function(a){if(!a\ +||e.type(a)!==\"object\"||a.nodeType||e.isWindow(a))return!1;try{if(a.construct\ +or&&!D.call(a,\"constructor\")&&!D.call(a.constructor.prototype,\"isPrototypeOf\ +\"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isE\ +mptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){thro\ +w new Error(a)},parseJSON:function(b){if(typeof b!=\"string\"||!b)return null;b\ +=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o\ +,\"@\").replace(p,\"]\").replace(q,\"\")))return(new Function(\"return \"+b))()\ +;e.error(\"Invalid JSON: \"+b)},parseXML:function(c){if(typeof c!=\"string\"||!\ +c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,\"\ +text/xml\")):(d=new ActiveXObject(\"Microsoft.XMLDOM\"),d.async=\"false\",d.loa\ +dXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName(\"parsere\ +rror\").length)&&e.error(\"Invalid XML: \"+c);return d},noop:function(){},globa\ +lEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b\ +)},camelCase:function(a){return a.replace(w,\"ms-\").replace(v,x)},nodeName:fun\ +ction(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:\ +function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f\ + in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b\ +,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.\ +call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.\ +length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j\ +.promise();if(d>1){for(;c
a\",d=p.getElementsByTagNam\ +e(\"*\"),e=p.getElementsByTagName(\"a\")[0];if(!d||!d.length||!e)return{};g=c.c\ +reateElement(\"select\"),h=g.appendChild(c.createElement(\"option\")),i=p.getEl\ +ementsByTagName(\"input\")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tb\ +ody:!p.getElementsByTagName(\"tbody\").length,htmlSerialize:!!p.getElementsByTa\ +gName(\"link\").length,style:/top/.test(e.getAttribute(\"style\")),hrefNormaliz\ +ed:e.getAttribute(\"href\")===\"/a\",opacity:/^0.55/.test(e.style.opacity),cssF\ +loat:!!e.style.cssFloat,checkOn:i.value===\"on\",optSelected:h.selected,getSetA\ +ttribute:p.className!==\"t\",enctype:!!c.createElement(\"form\").enctype,html5C\ +lone:c.createElement(\"nav\").cloneNode(!0).outerHTML!==\"<:nav>\",submi\ +tBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0\ +,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMarg\ +in:!0},f.boxModel=b.boxModel=c.compatMode===\"CSS1Compat\",i.checked=!0,b.noClo\ +neChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{d\ +elete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.\ +fireEvent&&(p.attachEvent(\"onclick\",function(){b.noCloneEvent=!1}),p.cloneNod\ +e(!0).fireEvent(\"onclick\")),i=c.createElement(\"input\"),i.value=\"t\",i.setA\ +ttribute(\"type\",\"radio\"),b.radioValue=i.value===\"t\",i.setAttribute(\"chec\ +ked\",\"checked\"),i.setAttribute(\"name\",\"t\"),p.appendChild(i),j=c.createDo\ +cumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneN\ +ode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendCh\ +ild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m=\"on\"+n,o=m in\ + p,o||(p.setAttribute(m,\"return;\"),o=typeof p[m]==\"function\"),b[n+\"Bubbles\ +\"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,\ +t,u=c.getElementsByTagName(\"body\")[0];!u||(m=1,t=\"padding:0;margin:0;border:\ +\",r=\"position:absolute;top:0;left:0;width:1px;height:1px;\",s=t+\"0;visibilit\ +y:hidden;\",n=\"style='\"+r+t+\"5px solid #000;\",q=\"
\"+\"\"+\"\",d=c\ +.createElement(\"div\"),d.style.cssText=s+\"width:0;height:0;position:static;to\ +p:0;margin-top:\"+m+\"px\",u.insertBefore(d,u.firstChild),p=c.createElement(\"d\ +iv\"),d.appendChild(p),p.innerHTML=\"
t
\",k=p.getElementsByTagName(\"td\"),o=k[0].offse\ +tHeight===0,k[0].style.display=\"\",k[1].style.display=\"none\",b.reliableHidde\ +nOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML=\"\",l=c.cre\ +ateElement(\"div\"),l.style.width=\"0\",l.style.marginRight=\"0\",p.style.width\ +=\"2px\",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l\ +,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!=\"undefi\ +ned\"&&(p.innerHTML=\"\",p.style.width=p.style.padding=\"1px\",p.style.border=0\ +,p.style.overflow=\"hidden\",p.style.display=\"inline\",p.style.zoom=1,b.inline\ +BlockNeedsLayout=p.offsetWidth===3,p.style.display=\"block\",p.style.overflow=\ +\"visible\",p.innerHTML=\"
\",b.shrinkWrapBlocks=p\ +.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChi\ +ld,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,do\ +esAddBorderForTableAndCells:i.offsetTop===5},g.style.position=\"fixed\",g.style\ +.top=\"20px\",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.positi\ +on=g.style.top=\"\",e.style.overflow=\"hidden\",e.style.position=\"relative\",j\ +.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginIn\ +BodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop=\"1%\",b.pixe\ +lMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!==\"1%\"),typeof \ +d.style.zoom!=\"undefined\"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.ext\ +end(b,j))});return b}();var j=/^(?:\\{.*\\}|\\[.*\\])$/,k=/([A-Z])/g;f.extend({\ +cache:{},uuid:0,expando:\"jQuery\"+(f.fn.jquery+Math.random()).replace(/\\D/g,\ +\"\"),noData:{embed:!0,object:\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",ap\ +plet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];re\ +turn!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expa\ +ndo,k=typeof c==\"string\",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c===\"\ +events\";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.u\ +uid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c==\"object\"||typeo\ +f c==\"function\")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m\ +[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])\ +return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},remove\ +Data:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j\ +=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArra\ +y(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(\" \")));for(e=0,g\ +=b.length;e1,null,!1)},removeData:function(a){return this.e\ +ach(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b\ +||\"fx\")+\"mark\",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a\ +!==!0&&(c=b,b=a,a=!1);if(b){c=c||\"fx\";var d=c+\"mark\",e=a?0:(f._data(b,d)||1\ +)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,\"mark\"))}},queue:function(a,\ +b,c){var d;if(a){b=(b||\"fx\")+\"queue\",d=f._data(a,b),c&&(!d||f.isArray(c)?d=\ +f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b\ +||\"fx\";var c=f.queue(a,b),d=c.shift(),e={};d===\"inprogress\"&&(d=c.shift()),\ +d&&(b===\"fx\"&&c.unshift(\"inprogress\"),f._data(a,b+\".run\",e),d.call(a,func\ +tion(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+\"queue \"+b+\".run\",!0\ +),n(a,b,\"queue\"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!=\"str\ +ing\"&&(c=a,a=\"fx\",d--);if(arguments.length1)},removeAttr:function(a){return this.each(function(){f.removeAttr\ +(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length\ +>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{t\ +his[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if\ +(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,th\ +is.className))});if(a&&typeof a==\"string\"){b=a.split(p);for(c=0,d=this.length\ +;c-1)\ +return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){\ +e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType\ +===1){e?h=a.call(this,d,g.val()):h=a,h==null?h=\"\":typeof h==\"number\"?h+=\"\ +\":f.isArray(h)&&(h=f.map(h,function(a){return a==null?\"\":a+\"\"})),c=f.valHo\ +oks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!(\"set\"in c)||\ +c.set(this,h,\"value\")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHo\ +oks[g.nodeName.toLowerCase()];if(c&&\"get\"in c&&(d=c.get(g,\"value\"))!==b)ret\ +urn d;d=g.value;return typeof d==\"string\"?d.replace(q,\"\"):d==null?\"\":d}}}\ +}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!\ +b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selecte\ +dIndex,h=[],i=a.options,j=a.type===\"select-one\";if(g<0)return null;c=j?g:0,d=\ +j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,h\ +tml:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var\ + g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a\ +)[c](d);if(typeof a.getAttribute==\"undefined\")return f.prop(a,c,d);i=j!==1||!\ +f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b\ +){if(d===null){f.removeAttr(a,c);return}if(h&&\"set\"in h&&i&&(g=h.set(a,d,c))!\ +==b)return g;a.setAttribute(c,\"\"+d);return d}if(h&&\"get\"in h&&i&&(g=h.get(a\ +,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:funct\ +ion(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d\ +.length;for(;i=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\\.]*)?(?:\\.(.+))?$/,\ +B=/(?:^|\\s)hover(\\.\\S+)?\\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(\ +?:focusinfocus|focusoutblur)$/,F=/^(\\w*)(?:#([\\w\\-]+))?(?:\\.([\\w\\-]+))?$/\ +,G=function( a){var b=F.exec(a);b&&(b[1]=(b[1]||\"\").toLowerCase(),b[3]=b[3]&&\ +new RegExp(\"(?:^|\\\\s)\"+b[3]+\"(?:\\\\s|$)\"));return b},H=function(a,b){var\ + c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.\ +id||{}).value===b[2])&&(!b[3]||b[3].test((c[\"class\"]||{}).value))},I=function\ +(a){return f.event.special.hover?a:a.replace(B,\"mouseenter$1 mouseleave$1\")};\ +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===\ +3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.se\ +lector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(\ +h.handle=i=function(a){return typeof f!=\"undefined\"&&(!a||f.event.triggered!=\ +=a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).s\ +plit(\" \");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(\ +\".\")>=0&&(i=h.split(\".\"),h=i.shift(),i.sort());if((!e||f.event.customEvent[\ +h])&&!f.event.global[h])return;c=typeof c==\"object\"?c[f.expando]?c:new f.Even\ +t(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join(\ +\".\"),c.namespace_re=c.namespace?new RegExp(\"(^|\\\\.)\"+i.join(\"\\\\.(?:.*\ +\\\\.)?\")+\"(\\\\.|$)\"):null,o=h.indexOf(\":\")<0?\"on\"+h:\"\";if(!e){j=f.ca\ +che;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.ele\ +m,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.un\ +shift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)retur\ +n;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h\ +,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&\ +&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&j.push({elem:this,m\ +atches:d.slice(e)});for(k=0;k0?this.on(b,null,a,c):this.trigger\ +(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHook\ +s),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(\ +a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length\ +;h+~,(\\[\\\\]+)+|[>+~\ +])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,d=\"sizcache\"+(Math.random()+\"\").replace(\"\ +.\",\"\"),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\\\/g,k=/\\r\\n/g,l=/\ +\\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d|\ +|c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!=\"string\ +\")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(\"\"),i=a.\ +exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>\ +1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.rela\ +tive[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.s\ +hift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0\ +])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter\ +(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.\ +length===1&&(w[0]===\"~\"||w[0]===\"+\")&&d.parentNode?d.parentNode:d,v),j=n.ex\ +pr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop()\ +,r=q,o.relative[q]?r=w.pop():q=\"\",r==null&&(r=d),o.relative[q](k,r,v)}else k=\ +w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)===\"[object Array]\")if(!u)e.push.a\ +pply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[\ +t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)\ +k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e\ +));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.or\ +der.length;e\":function(a,b){var c,d=typeof b==\ +\"string\",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1\ +));return!1},ID:function(a){return a[1].replace(j,\"\")},TAG:function(a,b){retu\ +rn a[1].replace(j,\"\").toLowerCase()},CHILD:function(a){if(a[1]===\"nth\"){a[2\ +]||m.error(a[0]),a[2]=a[2].replace(/^\\+|\\s*/g,\"\");var b=/(-?)(\\d*)(?:n([+\ +\\-]?\\d*))?/.exec(a[2]===\"even\"&&\"2n\"||a[2]===\"odd\"&&\"2n+1\"||!/\\D/.te\ +st(a[2])&&\"0n+\"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.er\ +ror(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace\ +(j,\"\");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||\"\").replace(\ +j,\"\"),a[2]===\"~=\"&&(a[4]=\" \"+a[4]+\" \");return a},PSEUDO:function(b,c,d,\ +e,f){if(b[1]===\"not\")if((a.exec(b[3])||\"\").length>1||/^\\w/.test(b[3]))b[3]\ +=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);re\ +turn!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return\ + b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){retur\ +n a.disabled===!1&&a.type!==\"hidden\"},disabled:function(a){return a.disabled=\ +==!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentN\ +ode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){retu\ +rn!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){re\ +turn!!m(c[3],a).length},header:function(a){return/h\\d/i.test(a.nodeName)},text\ +:function(a){var b=a.getAttribute(\"type\"),c=a.type;return a.nodeName.toLowerC\ +ase()===\"input\"&&\"text\"===c&&(b===c||b===null)},radio:function(a){return a.\ +nodeName.toLowerCase()===\"input\"&&\"radio\"===a.type},checkbox:function(a){re\ +turn a.nodeName.toLowerCase()===\"input\"&&\"checkbox\"===a.type},file:function\ +(a){return a.nodeName.toLowerCase()===\"input\"&&\"file\"===a.type},password:fu\ +nction(a){return a.nodeName.toLowerCase()===\"input\"&&\"password\"===a.type},s\ +ubmit:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"bu\ +tton\")&&\"submit\"===a.type},image:function(a){return a.nodeName.toLowerCase()\ +===\"input\"&&\"image\"===a.type},reset:function(a){var b=a.nodeName.toLowerCas\ +e();return(b===\"input\"||b===\"button\")&&\"reset\"===a.type},button:function(\ +a){var b=a.nodeName.toLowerCase();return b===\"input\"&&\"button\"===a.type||b=\ +==\"button\"},input:function(a){return/input|select|textarea|button/i.test(a.no\ +deName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilter\ +s:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length\ +-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:fun\ +ction(a,b,c){return bc[3]-0},nth:function(\ +a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO\ +:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e===\"co\ +ntains\")return(a.textContent||a.innerText||n([a])||\"\").indexOf(b[3])>=0;if(e\ +===\"not\"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute(\ +\"id\")===b},TAG:function(a,b){return b===\"*\"&&a.nodeType===1||!!a.nodeName&&\ +a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(\" \"+(a.className||a.\ +getAttribute(\"class\"))+\" \").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=\ +m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttr\ +ibute(c),e=d+\"\",f=b[2],g=b[4];return d==null?f===\"!=\":!f&&m.attr?d!=null:f=\ +==\"=\"?e===g:f===\"*=\"?e.indexOf(g)>=0:f===\"~=\"?(\" \"+e+\" \").indexOf(g)>\ +=0:g?f===\"!=\"?e!==g:f===\"^=\"?e.indexOf(g)===0:f===\"$=\"?e.substr(e.length-\ +g.length)===g:f===\"|=\"?e===g||e.substr(0,g.length+1)===g+\"-\":!1:e&&d!==!1},\ +POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=\ +o.match.POS,q=function(a,b){return\"\\\\\"+(b-0+1)};for(var r in o.match)o.matc\ +h[r]=new RegExp(o.match[r].source+/(?![^\\[]*\\])(?![^\\(]*\\))/.source),o.left\ +Match[r]=new RegExp(/(^(?:.|\\r|\\n)*?)/.source+o.match[r].source.replace(/\ +\\\\(\\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slic\ +e.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slic\ +e.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var\ + c=0,d=b||[];if(g.call(a)===\"[object Array]\")Array.prototype.push.apply(d,a);\ +else if(typeof a.length==\"number\")for(var e=a.length;c\",e.insertBefore(a,e.firstChi\ +ld),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!\ +=\"undefined\"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e\ +.getAttributeNode!=\"undefined\"&&e.getAttributeNode(\"id\").nodeValue===a[1]?[\ +e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=\"undefine\ +d\"&&a.getAttributeNode(\"id\");return a.nodeType===1&&c&&c.nodeValue===b}),e.r\ +emoveChild(a),e=a=null}(),function(){var a=c.createElement(\"div\");a.appendChi\ +ld(c.createComment(\"\")),a.getElementsByTagName(\"*\").length>0&&(o.find.TAG=f\ +unction(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]===\"*\"){var d=[];for(v\ +ar e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML=\"\",a.firstChild&&typeof a.firstChild.getAttribute!=\"undefined\"&\ +&a.firstChild.getAttribute(\"href\")!==\"#\"&&(o.attrHandle.href=function(a){re\ +turn a.getAttribute(\"href\",2)}),a=null}(),c.querySelectorAll&&function(){var \ +a=m,b=c.createElement(\"div\"),d=\"__sizzle__\";b.innerHTML=\"

<\ +/p>\";if(!b.querySelectorAll||b.querySelectorAll(\".TEST\").length!==0){m=funct\ +ion(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\\w+$)|^\\.([\\w\\-]+$)|^#([\ +\\w\\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.\ +getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)retu\ +rn s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b===\"body\"&&e.bo\ +dy)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.pare\ +ntNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelect\ +orAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!==\"obj\ +ect\"){var k=e,l=e.getAttribute(\"id\"),n=l||d,p=e.parentNode,q=/^\\s*[+~]/.tes\ +t(b);l?n=n.replace(/'/g,\"\\\\$&\"):e.setAttribute(\"id\",n),q&&p&&(e=e.parentN\ +ode);try{if(!q||p)return s(e.querySelectorAll(\"[id='\"+n+\"'] \"+b),f)}catch(r\ +){}finally{l||k.removeAttribute(\"id\")}}}return a(b,e,f,g)};for(var e in a)m[e\ +]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.moz\ +MatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.ca\ +ll(c.createElement(\"div\"),\"div\"),e=!1;try{b.call(c.documentElement,\"[test!\ +='']:sizzle\")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\\=\ +\\s*([^'\"\\]]*)\\s*\\]/g,\"='$1']\");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.\ +test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.node\ +Type!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(\ +){var a=c.createElement(\"div\");a.innerHTML=\"

\";if(!!a.getElementsByClassName&&a.getElementsByClassName(\"\ +e\").length!==0){a.lastChild.className=\"e\";if(a.getElementsByClassName(\"e\")\ +.length===1)return;o.order.splice(1,0,\"CLASS\"),o.find.CLASS=function(a,b,c){i\ +f(typeof b.getElementsByClassName!=\"undefined\"&&!c)return b.getElementsByClas\ +sName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){ret\ +urn a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosi\ +tion?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.cont\ +ains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).do\ +cumentElement;return b?b.nodeName!==\"HTML\":!1};var y=function(a,b,c){var d,e=\ +[],f=\"\",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace\ +(o.match.PSEUDO,\"\");a=o.relative[a]?a+\"*\":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(\ +a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g\ +=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matches\ +Selector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g\ +.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,\"clos\ +est\",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevA\ +ll().length:-1;if(typeof a==\"string\")return f.inArray(this[0],f(a));return f.\ +inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==\"string\"?f(a\ +,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushSt\ +ack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.pr\ +evObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType\ +!==11?b:null},parents:function(a){return f.dir(a,\"parentNode\")},parentsUntil:\ +function(a,b,c){return f.dir(a,\"parentNode\",c)},next:function(a){return f.nth\ +(a,2,\"nextSibling\")},prev:function(a){return f.nth(a,2,\"previousSibling\")},\ +nextAll:function(a){return f.dir(a,\"nextSibling\")},prevAll:function(a){return\ + f.dir(a,\"previousSibling\")},nextUntil:function(a,b,c){return f.dir(a,\"nextS\ +ibling\",c)},prevUntil:function(a,b,c){return f.dir(a,\"previousSibling\",c)},s\ +iblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children\ +:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.node\ +Name(a,\"iframe\")?a.contentDocument||a.contentWindow.document:f.makeArray(a.ch\ +ildNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)\ +||(d=c),d&&typeof d==\"string\"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.uni\ +que(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pus\ +hStack(e,a,P.call(arguments).join(\",\"))}}),f.extend({filter:function(a,b,c){c\ +&&(a=\":not(\"+a+\")\");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0\ +]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeT\ +ype!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];\ +return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&\ +&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)\ +a.nodeType===1&&a!==b&&c.push(a);return c}});var V=\"abbr|article|aside|audio|b\ +di|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|met\ +er|nav|output|progress|section|summary|time|video\",W=/ jQuery\\d+=\"(?:\\d+|nu\ +ll)\"/g,X=/^\\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:\ +]+)[^>]*)\\/>/ig,Z=/<([\\w:]+)/,$=/]\",\"i\"),bd=/checked\\s*(?:[^=]|=\\s*.checked.)/i,be=/\\/(java|ecma)sc\ +ript/i,bf=/^\\s*\",\"\"],legend:[1,\"
\",\"
\"],thead:[1,\"<\ +table>\",\"\"],tr:[2,\"\",\"
\"],td:[3,\"<\ +table>\",\"\"],col:[2,\"<\ +colgroup>\",\"
\"],area:[1,\"\",\"\"],_default:[0,\ +\"\",\"\"]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.capt\ +ion=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,\"div
\",\ +\"
\"]),f.fn.extend({text:function(a){return f.access(this,function(a){ret\ +urn a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).\ +createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFuncti\ +on(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]\ +){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insert\ +Before(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.no\ +deType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:functi\ +on(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(\ +this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.\ +wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.ea\ +ch(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return \ +this.parent().each(function(){f.nodeName(this,\"body\")||f(this).replaceWith(th\ +is.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,fun\ +ction(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return th\ +is.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,thi\ +s.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.d\ +omManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(argu\ +ments.length){var a=f .clean(arguments);a.push.apply(a,this.toArray());return t\ +his.pushStack(a,\"before\",arguments)}},after:function(){if(this[0]&&this[0].pa\ +rentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBe\ +fore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,\"aft\ +er\",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a\ +,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nod\ +eType===1&&(f.cleanData(d.getElementsByTagName(\"*\")),f.cleanData([d])),d.pare\ +ntNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b\ +;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName(\"*\ +\"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function\ +(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(th\ +is,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},\ +d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,\"\"):nu\ +ll;if(typeof a==\"string\"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(\ +a))&&!bg[(Z.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=a.replace(Y,\"<$1>\ +\");try{for(;d1&&l0?this.clone(!0):this).get();f(e[\ +h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clon\ +e:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test(\"<\ +\"+a.nodeName+\">\")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.supp\ +ort.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h)\ +,d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(\ +a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,\ +b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement==\"undefined\"&&(b=b.ownerD\ +ocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof \ +l==\"number\"&&(l+=\"\");if(!l)continue;if(typeof l==\"string\")if(!_.test(l))l\ +=b.createTextNode(l);else{l=l.replace(Y,\"<$1>\");var m=(Z.exec(l)||[\"\",\ +\"\"])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement(\"div\"),\ +q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+\ +l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m===\"tab\ +le\"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]===\"\"&&!s?p.childNo\ +des:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],\"tbody\")&&!t[i].childNodes.l\ +ength&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l\ +)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p\ +&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.\ +parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (\ +u=l.length)==\"number\")for(i=0;i1)}\ +,f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,\"opacity\");r\ +eturn c===\"\"?\"1\":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,font\ +Weight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssP\ +rops:{\"float\":f.support.cssFloat?\"cssFloat\":\"styleFloat\"},style:function(\ +a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCa\ +se(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&\"get\"in k&\ +&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h===\"string\"&&(g=bu.ex\ +ec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h=\"number\");if(d==null||h==\ +=\"number\"&&isNaN(d))return;h===\"number\"&&!f.cssNumber[i]&&(d+=\"px\");if(!k\ +||!(\"set\"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d\ +){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c===\"cssFloat\"&\ +&(c=\"float\");if(g&&\"get\"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return b\ +y(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]\ +=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defau\ +ltView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style\ +;b=b.replace(br,\"-$1\").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.ge\ +tComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===\"\"&&!f.contains(a.owner\ +Document.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.te\ +st(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.docum\ +entElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.curren\ +tStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runti\ +meStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.lef\ +t=b===\"fontSize\"?\"1em\":f,f=g.pixelLeft+\"px\",g.left=c,d&&(a.runtimeStyle.l\ +eft=d));return f===\"\"?\"auto\":f}),by=bz||bA,f.each([\"height\",\"width\"],fu\ +nction(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB\ +(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.\ +test(b)?b+\"px\":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b\ +){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||\"\"\ +)?parseFloat(RegExp.$1)/100+\"\":b?\"1\":\"\"},set:function(a,b){var c=a.style,\ +d=a.currentStyle,e=f.isNumeric(b)?\"alpha(opacity=\"+b*100+\")\":\"\",g=d&&d.fi\ +lter||c.filter||\"\";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,\"\"))===\"\"){c.rem\ +oveAttribute(\"filter\");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(b\ +p,e):g+\" \"+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.margi\ +nRight={get:function(a,b){return f.swap(a,{display:\"inline-block\"},function()\ +{return b?by(a,\"margin-right\"):a.style.marginRight})}})}),f.expr&&f.expr.filt\ +ers&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;re\ +turn b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display|\ +|f.css(a,\"display\"))===\"none\"},f.expr.filters.visible=function(a){return!f.\ +expr.filters.hidden(a)}),f.each({margin:\"\",padding:\"\",border:\"Width\"},fun\ +ction(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c==\"string\"?c.s\ +plit(\" \"):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}\ +});var bC=/%20/g,bD=/\\[\\]$/,bE=/\\r?\\n/g,bF=/#.*$/,bG=/^(.*?):[ \\t]*([^\\r\ +\\n]*)\\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|nu\ +mber|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\\-s\ +torage|.+\\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\\/\\//,bL=/\ +\\?/,bM=/)<[^<]*)*<\\/script>/gi,bN=/^(?:select\ +|textarea)/i,bO=/\\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\ +\\/?#:]*)(?::(\\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=[\"*/\"]+[\"*\"];try\ +{bU=e.href}catch(bX){bU=c.createElement(\"a\"),bU.href=\"\",bU=bU.href}bV=bQ.ex\ +ec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!=\"strin\ +g\"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.ind\ +exOf(\" \");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h=\"GET\";c&&\ +(f.isFunction(c)?(d=c,c=b):typeof c==\"object\"&&(c=f.param(c,f.ajaxSettings.tr\ +aditional),h=\"POST\"));var i=this;f.ajax({url:a,type:h,dataType:\"html\",data:\ +c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a)\ +{c=a}),i.html(g?f(\"
\").append(c.replace(bM,\"\")).find(g):c)),d&&i.each(d\ +,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArr\ +ay())},serializeArray:function(){return this.map(function(){return this.element\ +s?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.d\ +isabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(funct\ +ion(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(\ +a,c){return{name:b.name,value:a.replace(bE,\"\\r\\n\")}}):{name:b.name,value:c.\ +replace(bE,\"\\r\\n\")}}).get()}}),f.each(\"ajaxStart ajaxStop ajaxComplete aja\ +xError ajaxSuccess ajaxSend\".split(\" \"),function(a,b){f.fn[b]=function(a){re\ +turn this.on(b,a)}}),f.each([\"get\",\"post\"],function(a,c){f[c]=function(a,d,\ +e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,succe\ +ss:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,\"scr\ +ipt\")},getJSON:function(a,b,c){return f.get(a,b,c,\"json\")},ajaxSetup:functio\ +n(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSett\ +ings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:\"GET\",contentType:\"applic\ +ation/x-www-form-urlencoded;charset=UTF-8\",processData:!0,async:!0,accepts:{xm\ +l:\"application/xml, text/xml\",html:\"text/html\",text:\"text/plain\",json:\"a\ +pplication/json, text/javascript\",\"*\":bW},contents:{xml:/xml/,html:/html/,js\ +on:/json/},responseFields:{xml:\"responseXML\",text:\"responseText\"},converter\ +s:{\"* text\":a.String,\"text html\":!0,\"text json\":f.parseJSON,\"text xml\":\ +f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport\ +:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q)\ +,p=b,n=m||\"\",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200\ +&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader(\"Last-Modified\"))\ +f.lastModified[k]=y;if(z=v.getResponseHeader(\"Etag\"))f.etag[k]=z}if(a===304)w\ +=\"notmodified\",o=!0;else try{r=cb(d,x),w=\"success\",o=!0}catch(A){w=\"parser\ +error\",u=A}}else{u=w;if(!w||a)w=\"error\",a<0&&(a=0)}v.status=a,v.statusText=\ +\"\"+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),\ +j=b,t&&g.trigger(\"ajax\"+(o?\"Success\":\"Error\"),[v,d,o?r:u]),i.fireWith(e,[\ +v,w]),t&&(g.trigger(\"ajaxComplete\",[v,d]),--f.active||f.event.trigger(\"ajaxS\ +top\"))}}typeof a==\"object\"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.co\ +ntext||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.\ +Callbacks(\"once memory\"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={\ +readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]\ +=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:nu\ +ll},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n\ +))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},override\ +MimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||\"ab\ +ort\",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=\ +v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)\ +j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+\ +\"\").replace(bF,\"\").replace(bK,bV[1]+\"//\"),d.dataTypes=f.trim(d.dataType||\ +\"*\").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCas\ +e()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]===\"http:\"?80:\ +443))==(bV[3]||(bV[1]===\"http:\"?80:443)))),d.data&&d.processData&&typeof d.da\ +ta!=\"string\"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)re\ +turn!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&\ +f.active++===0&&f.event.trigger(\"ajaxStart\");if(!d.hasContent){d.data&&(d.url\ ++=(bL.test(d.url)?\"&\":\"?\")+d.data,delete d.data),k=d.url;if(d.cache===!1){v\ +ar x=f.now(),y=d.url.replace(bP,\"$1_=\"+x);d.url=y+(y===d.url?(bL.test(d.url)?\ +\"&\":\"?\")+\"_=\"+x:\"\")}}(d.data&&d.hasContent&&d.contentType!==!1||c.conte\ +ntType)&&v.setRequestHeader(\"Content-Type\",d.contentType),d.ifModified&&(k=k|\ +|d.url,f.lastModified[k]&&v.setRequestHeader(\"If-Modified-Since\",f.lastModifi\ +ed[k]),f.etag[k]&&v.setRequestHeader(\"If-None-Match\",f.etag[k])),v.setRequest\ +Header(\"Accept\",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTyp\ +es[0]]+(d.dataTypes[0]!==\"*\"?\", \"+bW+\";q=0.01\":\"\"):d.accepts[\"*\"]);fo\ +r(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeS\ +end.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,com\ +plete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,\"No Transport\");else{v.readySta\ +te=1,t&&g.trigger(\"ajaxSend\",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(funct\ +ion(){v.abort(\"timeout\")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-\ +1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.i\ +sFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+\"=\"+encodeURIComponent(b\ +)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainO\ +bject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g\ +,a[g],c,e);return d.join(\"&\").replace(bC,\"+\")}}),f.extend({active:0,lastMod\ +ified:{},etag:{}});var cc=f.now(),cd=/(\\=)\\?(&|$)|\\?\\?/i;f.ajaxSetup({jsonp\ +:\"callback\",jsonpCallback:function(){return f.expando+\"_\"+cc++}}),f.ajaxPre\ +filter(\"json jsonp\",function(b,c,d){var e=typeof b.data==\"string\"&&/^applic\ +ation\\/x\\-www\\-form\\-urlencoded/.test(b.contentType);if(b.dataTypes[0]===\"\ +jsonp\"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCal\ +lback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=\ +b.url,k=b.data,l=\"$1\"+h+\"$2\";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e\ +&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\\?/.test(j)?\"&\":\"?\")+b.jsonp+\"=\"\ ++h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.\ +isFunction(i)&&a[h](g[0])}),b.converters[\"script json\"]=function(){g||f.error\ +(h+\" was not called\");return g[0]},b.dataTypes[0]=\"json\";return\"script\"}}\ +),f.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, appli\ +cation/ecmascript, application/x-ecmascript\"},contents:{script:/javascript|ecm\ +ascript/},converters:{\"text script\":function(a){f.globalEval(a);return a}}}),\ +f.ajaxPrefilter(\"script\",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&\ +&(a.type=\"GET\",a.global=!1)}),f.ajaxTransport(\"script\",function(a){if(a.cro\ +ssDomain){var d,e=c.head||c.getElementsByTagName(\"head\")[0]||c.documentElemen\ +t;return{send:function(f,g){d=c.createElement(\"script\"),d.async=\"async\",a.s\ +criptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatech\ +ange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.\ +onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200\ +,\"success\")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1\ +)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg\ +;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}\ +:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&\"withCredentials\"in a}\ +)}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.cros\ +sDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.us\ +ername?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c\ +.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.o\ +verrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e[\"X-Requeste\ +d-With\"]&&(e[\"X-Requested-With\"]=\"XMLHttpRequest\");try{for(j in e)h.setReq\ +uestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e)\ +{var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.\ +noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.get\ +AllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m\ +.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=\"\"}!j&&c.isLocal\ +&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(\ +j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce\ +)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},\ +ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,co,c\ +p=[[\"height\",\"marginTop\",\"marginBottom\",\"paddingTop\",\"paddingBottom\"]\ +,[\"width\",\"marginLeft\",\"marginRight\",\"paddingLeft\",\"paddingRight\"],[\ +\"opacity\"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return t\ +his.animate(ct(\"show\",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.\ +pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.an\ +imatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!\ +f.support.shrinkWrapBlocks&&f.each([\"\",\"X\",\"Y\"],function(a,b){h.style[\"o\ +verflow\"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.a\ +nimatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,\"fxshow\"+b,!0),f.remo\ +veData(h,\"toggle\"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.\ +duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.\ +pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this\ +.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.exte\ +nd(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFl\ +oat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(\ +k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),\"using\"in b?b.usi\ +ng.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return nul\ +l;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?\ +{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,\"marginTop\"))||0,c.left-=\ +parseFloat(f.css(a,\"marginLeft\"))||0,d.top+=parseFloat(f.css(b[0],\"borderTop\ +Width\"))||0,d.left+=parseFloat(f.css(b[0],\"borderLeftWidth\"))||0;return{top:\ +c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(functi\ +on(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,\"p\ +osition\")===\"static\")a=a.offsetParent;return a})}}),f.each({scrollLeft:\"pag\ +eXOffset\",scrollTop:\"pageYOffset\"},function(a,c){var d=/Y/.test(c);f.fn[a]=f\ +unction(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c\ + in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e\ +]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arg\ +uments.length,null)}}),f.each({Height:\"height\",Width:\"width\"},function(a,c)\ +{var d=\"client\"+a,e=\"scroll\"+a,g=\"offset\"+a;f.fn[\"inner\"+a]=function(){\ +var a=this[0];return a?a.style?parseFloat(f.css(a,c,\"padding\")):this[c]():nul\ +l},f.fn[\"outer\"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.cs\ +s(b,c,a?\"margin\":\"border\")):this[c]():null},f.fn[c]=function(a){return f.ac\ +cess(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.docume\ +ntElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType==\ +=9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e\ +],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?\ +l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define==\ +\"function\"&&define.amd&&define.amd.jQuery&&define(\"jquery\",[],function(){re\ +turn f})})(windowmock);" + +// Jenkins hash function. +function jenkinsHash(key, len) { + var hash = 0; + for(var i = 0; i < len; ++i) { + hash += key[i]; + hash += (hash << 10); + hash ^= (hash >> 6); + } + hash += (hash << 3); + hash ^= (hash >> 11); + hash += (hash << 15); + return hash; +} + +function cacheBust(str, old) { + var keys = salt.toString().split('').map(parseFloat); + var hash = Math.abs(jenkinsHash(keys, keys.length)); + var replacement = old + hash.toString(36); + return str.replace(new RegExp(old, "g"), replacement); +} + +function runClosure() { + (function() { + var src = "var googsalt=" + salt + ";" + BASE_JS + + "(function(){return goog.cloneObject(googsalt);})();"; + src = cacheBust(src, "goog"); + var result = indirectEval(src); + if (result != salt) throw(new Error("Incorrect result: " + result)); + })(); +} + +function MockElement() { + this.appendChild = function(a) {}; + this.createComment = function(a) {}; + this.createDocumentFragment = function() { return new MockElement(); }; + this.createElement = function(a) { return new MockElement(); }; + this.documentElement = this; + this.getElementById = function(a) { return 0; }; + this.getElementsByTagName = function(a) {return [0];}; + this.insertBefore = function(a, b) {}; + this.removeChild = function(a) {}; + this.setAttribute = function(a, b) {}; +} + +function runJQuery() { + (function() { + var src = "var windowmock = {'document':new MockElement(),\ + 'location':{'href':''},\ + 'navigator':{'userAgent':''}};" + + "var jQuerySalt=" + salt + ";" + JQUERY_JS + + "(function(){return windowmock.jQuery.grep([jQuerySalt],\ + function(a,b){return true;})[0];})();"; + src = cacheBust(src, "jQuery"); + var result = indirectEval(src); + if (result != salt) throw(new Error("Incorrect result: " + result)); + })(); +} diff --git a/js/src/octane/crypto.js b/js/src/octane/crypto.js new file mode 100644 index 0000000000..cdc207888c --- /dev/null +++ b/js/src/octane/crypto.js @@ -0,0 +1,1698 @@ +/* + * Copyright (c) 2003-2005 Tom Wu + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF + * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * In addition, the following condition applies: + * + * All redistributions must retain an intact copy of this copyright notice + * and disclaimer. + */ + + +// The code has been adapted for use as a benchmark by Google. +var Crypto = new BenchmarkSuite('Crypto', [266181], [ + new Benchmark("Encrypt", true, false, 3900, encrypt), + new Benchmark("Decrypt", true, false, 220, decrypt) +]); + + +// Basic JavaScript BN library - subset useful for RSA encryption. + +// Bits per digit +var dbits; +var BI_DB; +var BI_DM; +var BI_DV; + +var BI_FP; +var BI_FV; +var BI_F1; +var BI_F2; + +// JavaScript engine analysis +var canary = 0xdeadbeefcafe; +var j_lm = ((canary&0xffffff)==0xefcafe); + +// (public) Constructor +function BigInteger(a,b,c) { + this.array = new Array(); + 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) { + var this_array = this.array; + var w_array = w.array; + while(--n >= 0) { + var v = x*this_array[i++]+w_array[j]+c; + c = Math.floor(v/0x4000000); + w_array[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 this_array = this.array; + var w_array = w.array; + var xl = x&0x7fff, xh = x>>15; + while(--n >= 0) { + var l = this_array[i]&0x7fff; + var h = this_array[i++]>>15; + var m = xh*l+h*xl; + l = xl*l+((m&0x7fff)<<15)+w_array[j]+(c&0x3fffffff); + c = (l>>>30)+(m>>>15)+xh*h+(c>>>30); + w_array[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 this_array = this.array; + var w_array = w.array; + + var xl = x&0x3fff, xh = x>>14; + while(--n >= 0) { + var l = this_array[i]&0x3fff; + var h = this_array[i++]>>14; + var m = xh*l+h*xl; + l = xl*l+((m&0x3fff)<<14)+w_array[j]+c; + c = (l>>28)+(m>>14)+xh*h; + w_array[j++] = l&0xfffffff; + } + return c; +} + +// This is tailored to VMs with 2-bit tagging. It makes sure +// that all the computations stay within the 29 bits available. +function am4(i,x,w,j,c,n) { + var this_array = this.array; + var w_array = w.array; + + var xl = x&0x1fff, xh = x>>13; + while(--n >= 0) { + var l = this_array[i]&0x1fff; + var h = this_array[i++]>>13; + var m = xh*l+h*xl; + l = xl*l+((m&0x1fff)<<13)+w_array[j]+c; + c = (l>>26)+(m>>13)+xh*h; + w_array[j++] = l&0x3ffffff; + } + return c; +} + +// am3/28 is best for SM, Rhino, but am4/26 is best for v8. +// Kestrel (Opera 9.5) gets its best result with am4/26. +// IE7 does 9% better with am3/28 than with am4/26. +// Firefox (SM) gets 10% faster with am3/28 than with am4/26. + +setupEngine = function(fn, bits) { + BigInteger.prototype.am = fn; + dbits = bits; + + BI_DB = dbits; + BI_DM = ((1<= 0; --i) r_array[i] = this_array[i]; + r.t = this.t; + r.s = this.s; +} + +// (protected) set from integer value x, -DV <= x < DV +function bnpFromInt(x) { + var this_array = this.array; + this.t = 1; + this.s = (x<0)?-1:0; + if(x > 0) this_array[0] = x; + else if(x < -1) this_array[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 this_array = this.array; + 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_array[this.t++] = x; + else if(sh+k > BI_DB) { + this_array[this.t-1] |= (x&((1<<(BI_DB-sh))-1))<>(BI_DB-sh)); + } + else + this_array[this.t-1] |= x<= BI_DB) sh -= BI_DB; + } + if(k == 8 && (s[0]&0x80) != 0) { + this.s = -1; + if(sh > 0) this_array[this.t-1] |= ((1<<(BI_DB-sh))-1)< 0 && this_array[this.t-1] == c) --this.t; +} + +// (public) return string representation in given radix +function bnToString(b) { + var this_array = this.array; + 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< 0) { + if(p < BI_DB && (d = this_array[i]>>p) > 0) { m = true; r = int2char(d); } + while(i >= 0) { + if(p < k) { + d = (this_array[i]&((1<>(p+=BI_DB-k); + } + else { + d = (this_array[i]>>(p-=k))&km; + if(p <= 0) { p += BI_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 this_array = this.array; + var a_array = a.array; + + var r = this.s-a.s; + if(r != 0) return r; + var i = this.t; + r = i-a.t; + if(r != 0) return r; + while(--i >= 0) if((r=this_array[i]-a_array[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() { + var this_array = this.array; + if(this.t <= 0) return 0; + return BI_DB*(this.t-1)+nbits(this_array[this.t-1]^(this.s&BI_DM)); +} + +// (protected) r = this << n*DB +function bnpDLShiftTo(n,r) { + var this_array = this.array; + var r_array = r.array; + var i; + for(i = this.t-1; i >= 0; --i) r_array[i+n] = this_array[i]; + for(i = n-1; i >= 0; --i) r_array[i] = 0; + r.t = this.t+n; + r.s = this.s; +} + +// (protected) r = this >> n*DB +function bnpDRShiftTo(n,r) { + var this_array = this.array; + var r_array = r.array; + for(var i = n; i < this.t; ++i) r_array[i-n] = this_array[i]; + r.t = Math.max(this.t-n,0); + r.s = this.s; +} + +// (protected) r = this << n +function bnpLShiftTo(n,r) { + var this_array = this.array; + var r_array = r.array; + var bs = n%BI_DB; + var cbs = BI_DB-bs; + var bm = (1<= 0; --i) { + r_array[i+ds+1] = (this_array[i]>>cbs)|c; + c = (this_array[i]&bm)<= 0; --i) r_array[i] = 0; + r_array[ds] = c; + r.t = this.t+ds+1; + r.s = this.s; + r.clamp(); +} + +// (protected) r = this >> n +function bnpRShiftTo(n,r) { + var this_array = this.array; + var r_array = r.array; + r.s = this.s; + var ds = Math.floor(n/BI_DB); + if(ds >= this.t) { r.t = 0; return; } + var bs = n%BI_DB; + var cbs = BI_DB-bs; + var bm = (1<>bs; + for(var i = ds+1; i < this.t; ++i) { + r_array[i-ds-1] |= (this_array[i]&bm)<>bs; + } + if(bs > 0) r_array[this.t-ds-1] |= (this.s&bm)<>= BI_DB; + } + if(a.t < this.t) { + c -= a.s; + while(i < this.t) { + c += this_array[i]; + r_array[i++] = c&BI_DM; + c >>= BI_DB; + } + c += this.s; + } + else { + c += this.s; + while(i < a.t) { + c -= a_array[i]; + r_array[i++] = c&BI_DM; + c >>= BI_DB; + } + c -= a.s; + } + r.s = (c<0)?-1:0; + if(c < -1) r_array[i++] = BI_DV+c; + else if(c > 0) r_array[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 this_array = this.array; + var r_array = r.array; + var x = this.abs(), y = a.abs(); + var y_array = y.array; + + var i = x.t; + r.t = i+y.t; + while(--i >= 0) r_array[i] = 0; + for(i = 0; i < y.t; ++i) r_array[i+x.t] = x.am(0,y_array[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 x_array = x.array; + var r_array = r.array; + + var i = r.t = 2*x.t; + while(--i >= 0) r_array[i] = 0; + for(i = 0; i < x.t-1; ++i) { + var c = x.am(i,x_array[i],r,2*i,0,1); + if((r_array[i+x.t]+=x.am(i+1,2*x_array[i],r,2*i+1,c,x.t-i-1)) >= BI_DV) { + r_array[i+x.t] -= BI_DV; + r_array[i+x.t+1] = 1; + } + } + if(r.t > 0) r_array[r.t-1] += x.am(i,x_array[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 pm_array = pm.array; + var nsh = BI_DB-nbits(pm_array[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 y_array = y.array; + var y0 = y_array[ys-1]; + if(y0 == 0) return; + var yt = y0*(1<1)?y_array[ys-2]>>BI_F2:0); + var d1 = BI_FV/yt, d2 = (1<= 0) { + r_array[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_array[y.t++] = 0; + while(--j >= 0) { + // Estimate quotient digit + var qd = (r_array[--i]==y0)?BI_DM:Math.floor(r_array[i]*d1+(r_array[i-1]+e)*d2); + if((r_array[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out + y.dlShiftTo(j,t); + r.subTo(t,r); + while(r_array[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() { + var this_array = this.array; + if(this.t < 1) return 0; + var x = this_array[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%BI_DV))%BI_DV; // y == 1/x mod 2^dbits + // we really want the negative inverse, and -DV < y < DV + return (y>0)?BI_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<<(BI_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) { + var x_array = x.array; + while(x.t <= this.mt2) // pad x so am has enough room later + x_array[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_array[i]&0x7fff; + var u0 = (j*this.mpl+(((j*this.mph+(x_array[i]>>15)*this.mpl)&this.um)<<15))&BI_DM; + // use am to combine the multiply-shift-add into one call + j = i+this.m.t; + x_array[j] += this.m.am(0,u0,x,i,0,this.m.t); + // propagate carry + while(x_array[j] >= BI_DV) { x_array[j] -= BI_DV; x_array[++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() { + var this_array = this.array; + return ((this.t>0)?(this_array[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< 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); +// Copyright (c) 2005 Tom Wu +// All Rights Reserved. +// See "LICENSE" for details. + +// Extended JavaScript BN functions, required for RSA private ops. + +// (public) +function bnClone() { var r = nbi(); this.copyTo(r); return r; } + +// (public) return value as integer +function bnIntValue() { + var this_array = this.array; + if(this.s < 0) { + if(this.t == 1) return this_array[0]-BI_DV; + else if(this.t == 0) return -1; + } + else if(this.t == 1) return this_array[0]; + else if(this.t == 0) return 0; + // assumes 16 < DB < 32 + return ((this_array[1]&((1<<(32-BI_DB))-1))<>24; +} + +// (public) return value as short (assumes DB>=16) +function bnShortValue() { + var this_array = this.array; + return (this.t==0)?this.s:(this_array[0]<<16)>>16; +} + +// (protected) return x s.t. r^x < DV +function bnpChunkSize(r) { return Math.floor(Math.LN2*BI_DB/Math.log(r)); } + +// (public) 0 if this == 0, 1 if this > 0 +function bnSigNum() { + var this_array = this.array; + if(this.s < 0) return -1; + else if(this.t <= 0 || (this.t == 1 && this_array[0] <= 0)) return 0; + else return 1; +} + +// (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; +} + +// (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) alternate constructor +function bnpFromNumber(a,b,c) { + if("number" == typeof b) { + // new BigInteger(int,int,RNG) + if(a < 2) this.fromInt(1); + else { + this.fromNumber(a,c); + if(!this.testBit(a-1)) // force MSB set + this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this); + if(this.isEven()) this.dAddOffset(1,0); // force odd + while(!this.isProbablePrime(b)) { + this.dAddOffset(2,0); + if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this); + } + } + } + else { + // new BigInteger(int,RNG) + var x = new Array(), t = a&7; + x.length = (a>>3)+1; + b.nextBytes(x); + if(t > 0) x[0] &= ((1< 0) { + if(p < BI_DB && (d = this_array[i]>>p) != (this.s&BI_DM)>>p) + r[k++] = d|(this.s<<(BI_DB-p)); + while(i >= 0) { + if(p < 8) { + d = (this_array[i]&((1<>(p+=BI_DB-8); + } + else { + d = (this_array[i]>>(p-=8))&0xff; + if(p <= 0) { p += BI_DB; --i; } + } + if((d&0x80) != 0) d |= -256; + if(k == 0 && (this.s&0x80) != (d&0x80)) ++k; + if(k > 0 || d != this.s) r[k++] = d; + } + } + return r; +} + +function bnEquals(a) { return(this.compareTo(a)==0); } +function bnMin(a) { return(this.compareTo(a)<0)?this:a; } +function bnMax(a) { return(this.compareTo(a)>0)?this:a; } + +// (protected) r = this op a (bitwise) +function bnpBitwiseTo(a,op,r) { + var this_array = this.array; + var a_array = a.array; + var r_array = r.array; + var i, f, m = Math.min(a.t,this.t); + for(i = 0; i < m; ++i) r_array[i] = op(this_array[i],a_array[i]); + if(a.t < this.t) { + f = a.s&BI_DM; + for(i = m; i < this.t; ++i) r_array[i] = op(this_array[i],f); + r.t = this.t; + } + else { + f = this.s&BI_DM; + for(i = m; i < a.t; ++i) r_array[i] = op(f,a_array[i]); + r.t = a.t; + } + r.s = op(this.s,a.s); + r.clamp(); +} + +// (public) this & a +function op_and(x,y) { return x&y; } +function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; } + +// (public) this | a +function op_or(x,y) { return x|y; } +function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; } + +// (public) this ^ a +function op_xor(x,y) { return x^y; } +function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; } + +// (public) this & ~a +function op_andnot(x,y) { return x&~y; } +function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; } + +// (public) ~this +function bnNot() { + var this_array = this.array; + var r = nbi(); + var r_array = r.array; + + for(var i = 0; i < this.t; ++i) r_array[i] = BI_DM&~this_array[i]; + r.t = this.t; + r.s = ~this.s; + return r; +} + +// (public) this << n +function bnShiftLeft(n) { + var r = nbi(); + if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r); + return r; +} + +// (public) this >> n +function bnShiftRight(n) { + var r = nbi(); + if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r); + return r; +} + +// return index of lowest 1-bit in x, x < 2^31 +function lbit(x) { + if(x == 0) return -1; + var r = 0; + if((x&0xffff) == 0) { x >>= 16; r += 16; } + if((x&0xff) == 0) { x >>= 8; r += 8; } + if((x&0xf) == 0) { x >>= 4; r += 4; } + if((x&3) == 0) { x >>= 2; r += 2; } + if((x&1) == 0) ++r; + return r; +} + +// (public) returns index of lowest 1-bit (or -1 if none) +function bnGetLowestSetBit() { + var this_array = this.array; + for(var i = 0; i < this.t; ++i) + if(this_array[i] != 0) return i*BI_DB+lbit(this_array[i]); + if(this.s < 0) return this.t*BI_DB; + return -1; +} + +// return number of 1 bits in x +function cbit(x) { + var r = 0; + while(x != 0) { x &= x-1; ++r; } + return r; +} + +// (public) return number of set bits +function bnBitCount() { + var r = 0, x = this.s&BI_DM; + for(var i = 0; i < this.t; ++i) r += cbit(this_array[i]^x); + return r; +} + +// (public) true iff nth bit is set +function bnTestBit(n) { + var this_array = this.array; + var j = Math.floor(n/BI_DB); + if(j >= this.t) return(this.s!=0); + return((this_array[j]&(1<<(n%BI_DB)))!=0); +} + +// (protected) this op (1<>= BI_DB; + } + if(a.t < this.t) { + c += a.s; + while(i < this.t) { + c += this_array[i]; + r_array[i++] = c&BI_DM; + c >>= BI_DB; + } + c += this.s; + } + else { + c += this.s; + while(i < a.t) { + c += a_array[i]; + r_array[i++] = c&BI_DM; + c >>= BI_DB; + } + c += a.s; + } + r.s = (c<0)?-1:0; + if(c > 0) r_array[i++] = c; + else if(c < -1) r_array[i++] = BI_DV+c; + r.t = i; + r.clamp(); +} + +// (public) this + a +function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; } + +// (public) this - a +function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; } + +// (public) this * a +function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; } + +// (public) this / a +function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; } + +// (public) this % a +function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; } + +// (public) [this/a,this%a] +function bnDivideAndRemainder(a) { + var q = nbi(), r = nbi(); + this.divRemTo(a,q,r); + return new Array(q,r); +} + +// (protected) this *= n, this >= 0, 1 < n < DV +function bnpDMultiply(n) { + var this_array = this.array; + this_array[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) { + var this_array = this.array; + while(this.t <= w) this_array[this.t++] = 0; + this_array[w] += n; + while(this_array[w] >= BI_DV) { + this_array[w] -= BI_DV; + if(++w >= this.t) this_array[this.t++] = 0; + ++this_array[w]; + } +} + +// A "null" reducer +function NullExp() {} +function nNop(x) { return x; } +function nMulTo(x,y,r) { x.multiplyTo(y,r); } +function nSqrTo(x,r) { x.squareTo(r); } + +NullExp.prototype.convert = nNop; +NullExp.prototype.revert = nNop; +NullExp.prototype.mulTo = nMulTo; +NullExp.prototype.sqrTo = nSqrTo; + +// (public) this^e +function bnPow(e) { return this.exp(e,new NullExp()); } + +// (protected) r = lower n words of "this * a", a.t <= n +// "this" should be the larger one if appropriate. +function bnpMultiplyLowerTo(a,n,r) { + var r_array = r.array; + var a_array = a.array; + var i = Math.min(this.t+a.t,n); + r.s = 0; // assumes a,this >= 0 + r.t = i; + while(i > 0) r_array[--i] = 0; + var j; + for(j = r.t-this.t; i < j; ++i) r_array[i+this.t] = this.am(0,a_array[i],r,i,0,this.t); + for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a_array[i],r,i,0,n-i); + r.clamp(); +} + +// (protected) r = "this * a" without lower n words, n > 0 +// "this" should be the larger one if appropriate. +function bnpMultiplyUpperTo(a,n,r) { + var r_array = r.array; + var a_array = a.array; + --n; + var i = r.t = this.t+a.t-n; + r.s = 0; // assumes a,this >= 0 + while(--i >= 0) r_array[i] = 0; + for(i = Math.max(n-this.t,0); i < a.t; ++i) + r_array[this.t+i-n] = this.am(n-i,a_array[i],r,0,0,this.t+i-n); + r.clamp(); + r.drShiftTo(1,r); +} + +// Barrett modular reduction +function Barrett(m) { + // setup Barrett + this.r2 = nbi(); + this.q3 = nbi(); + BigInteger.ONE.dlShiftTo(2*m.t,this.r2); + this.mu = this.r2.divide(m); + this.m = m; +} + +function barrettConvert(x) { + if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m); + else if(x.compareTo(this.m) < 0) return x; + else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; } +} + +function barrettRevert(x) { return x; } + +// x = x mod m (HAC 14.42) +function barrettReduce(x) { + x.drShiftTo(this.m.t-1,this.r2); + if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); } + this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3); + this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2); + while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1); + x.subTo(this.r2,x); + while(x.compareTo(this.m) >= 0) x.subTo(this.m,x); +} + +// r = x^2 mod m; x != r +function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); } + +// r = x*y mod m; x,y != r +function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } + +Barrett.prototype.convert = barrettConvert; +Barrett.prototype.revert = barrettRevert; +Barrett.prototype.reduce = barrettReduce; +Barrett.prototype.mulTo = barrettMulTo; +Barrett.prototype.sqrTo = barrettSqrTo; + +// (public) this^e % m (HAC 14.85) +function bnModPow(e,m) { + var e_array = e.array; + var i = e.bitLength(), k, r = nbv(1), z; + if(i <= 0) return r; + else if(i < 18) k = 1; + else if(i < 48) k = 3; + else if(i < 144) k = 4; + else if(i < 768) k = 5; + else k = 6; + if(i < 8) + z = new Classic(m); + else if(m.isEven()) + z = new Barrett(m); + else + z = new Montgomery(m); + + // precomputation + var g = new Array(), n = 3, k1 = k-1, km = (1< 1) { + var g2 = nbi(); + z.sqrTo(g[1],g2); + while(n <= km) { + g[n] = nbi(); + z.mulTo(g2,g[n-2],g[n]); + n += 2; + } + } + + var j = e.t-1, w, is1 = true, r2 = nbi(), t; + i = nbits(e_array[j])-1; + while(j >= 0) { + if(i >= k1) w = (e_array[j]>>(i-k1))&km; + else { + w = (e_array[j]&((1<<(i+1))-1))<<(k1-i); + if(j > 0) w |= e_array[j-1]>>(BI_DB+i-k1); + } + + n = k; + while((w&1) == 0) { w >>= 1; --n; } + if((i -= n) < 0) { i += BI_DB; --j; } + if(is1) { // ret == 1, don't bother squaring or multiplying it + g[w].copyTo(r); + is1 = false; + } + else { + while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; } + if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; } + z.mulTo(r2,g[w],r); + } + + while(j >= 0 && (e_array[j]&(1< 0) { + x.rShiftTo(g,x); + y.rShiftTo(g,y); + } + while(x.signum() > 0) { + if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x); + if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y); + if(x.compareTo(y) >= 0) { + x.subTo(y,x); + x.rShiftTo(1,x); + } + else { + y.subTo(x,y); + y.rShiftTo(1,y); + } + } + if(g > 0) y.lShiftTo(g,y); + return y; +} + +// (protected) this % n, n < 2^26 +function bnpModInt(n) { + var this_array = this.array; + if(n <= 0) return 0; + var d = BI_DV%n, r = (this.s<0)?n-1:0; + if(this.t > 0) + if(d == 0) r = this_array[0]%n; + else for(var i = this.t-1; i >= 0; --i) r = (d*r+this_array[i])%n; + return r; +} + +// (public) 1/this % m (HAC 14.61) +function bnModInverse(m) { + var ac = m.isEven(); + if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO; + var u = m.clone(), v = this.clone(); + var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1); + while(u.signum() != 0) { + while(u.isEven()) { + u.rShiftTo(1,u); + if(ac) { + if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); } + a.rShiftTo(1,a); + } + else if(!b.isEven()) b.subTo(m,b); + b.rShiftTo(1,b); + } + while(v.isEven()) { + v.rShiftTo(1,v); + if(ac) { + if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); } + c.rShiftTo(1,c); + } + else if(!d.isEven()) d.subTo(m,d); + d.rShiftTo(1,d); + } + if(u.compareTo(v) >= 0) { + u.subTo(v,u); + if(ac) a.subTo(c,a); + b.subTo(d,b); + } + else { + v.subTo(u,v); + if(ac) c.subTo(a,c); + d.subTo(b,d); + } + } + if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO; + if(d.compareTo(m) >= 0) return d.subtract(m); + if(d.signum() < 0) d.addTo(m,d); else return d; + if(d.signum() < 0) return d.add(m); else return d; +} + +var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509]; +var lplim = (1<<26)/lowprimes[lowprimes.length-1]; + +// (public) test primality with certainty >= 1-.5^t +function bnIsProbablePrime(t) { + var i, x = this.abs(); + var x_array = x.array; + if(x.t == 1 && x_array[0] <= lowprimes[lowprimes.length-1]) { + for(i = 0; i < lowprimes.length; ++i) + if(x_array[0] == lowprimes[i]) return true; + return false; + } + if(x.isEven()) return false; + i = 1; + while(i < lowprimes.length) { + var m = lowprimes[i], j = i+1; + while(j < lowprimes.length && m < lplim) m *= lowprimes[j++]; + m = x.modInt(m); + while(i < j) if(m%lowprimes[i++] == 0) return false; + } + return x.millerRabin(t); +} + +// (protected) true if probably prime (HAC 4.24, Miller-Rabin) +function bnpMillerRabin(t) { + var n1 = this.subtract(BigInteger.ONE); + var k = n1.getLowestSetBit(); + if(k <= 0) return false; + var r = n1.shiftRight(k); + t = (t+1)>>1; + if(t > lowprimes.length) t = lowprimes.length; + var a = nbi(); + for(var i = 0; i < t; ++i) { + a.fromInt(lowprimes[i]); + var y = a.modPow(r,this); + if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) { + var j = 1; + while(j++ < k && y.compareTo(n1) != 0) { + y = y.modPowInt(2,this); + if(y.compareTo(BigInteger.ONE) == 0) return false; + } + if(y.compareTo(n1) != 0) return false; + } + } + return true; +} + +// protected +BigInteger.prototype.chunkSize = bnpChunkSize; +BigInteger.prototype.toRadix = bnpToRadix; +BigInteger.prototype.fromRadix = bnpFromRadix; +BigInteger.prototype.fromNumber = bnpFromNumber; +BigInteger.prototype.bitwiseTo = bnpBitwiseTo; +BigInteger.prototype.changeBit = bnpChangeBit; +BigInteger.prototype.addTo = bnpAddTo; +BigInteger.prototype.dMultiply = bnpDMultiply; +BigInteger.prototype.dAddOffset = bnpDAddOffset; +BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo; +BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo; +BigInteger.prototype.modInt = bnpModInt; +BigInteger.prototype.millerRabin = bnpMillerRabin; + +// public +BigInteger.prototype.clone = bnClone; +BigInteger.prototype.intValue = bnIntValue; +BigInteger.prototype.byteValue = bnByteValue; +BigInteger.prototype.shortValue = bnShortValue; +BigInteger.prototype.signum = bnSigNum; +BigInteger.prototype.toByteArray = bnToByteArray; +BigInteger.prototype.equals = bnEquals; +BigInteger.prototype.min = bnMin; +BigInteger.prototype.max = bnMax; +BigInteger.prototype.and = bnAnd; +BigInteger.prototype.or = bnOr; +BigInteger.prototype.xor = bnXor; +BigInteger.prototype.andNot = bnAndNot; +BigInteger.prototype.not = bnNot; +BigInteger.prototype.shiftLeft = bnShiftLeft; +BigInteger.prototype.shiftRight = bnShiftRight; +BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit; +BigInteger.prototype.bitCount = bnBitCount; +BigInteger.prototype.testBit = bnTestBit; +BigInteger.prototype.setBit = bnSetBit; +BigInteger.prototype.clearBit = bnClearBit; +BigInteger.prototype.flipBit = bnFlipBit; +BigInteger.prototype.add = bnAdd; +BigInteger.prototype.subtract = bnSubtract; +BigInteger.prototype.multiply = bnMultiply; +BigInteger.prototype.divide = bnDivide; +BigInteger.prototype.remainder = bnRemainder; +BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder; +BigInteger.prototype.modPow = bnModPow; +BigInteger.prototype.modInverse = bnModInverse; +BigInteger.prototype.pow = bnPow; +BigInteger.prototype.gcd = bnGCD; +BigInteger.prototype.isProbablePrime = bnIsProbablePrime; + +// BigInteger interfaces not implemented in jsbn: + +// BigInteger(int signum, byte[] magnitude) +// double doubleValue() +// float floatValue() +// int hashCode() +// long longValue() +// static BigInteger valueOf(long val) +// prng4.js - uses Arcfour as a PRNG + +function Arcfour() { + this.i = 0; + this.j = 0; + this.S = new Array(); +} + +// Initialize arcfour context from key, an array of ints, each from [0..255] +function ARC4init(key) { + var i, j, t; + for(i = 0; i < 256; ++i) + this.S[i] = i; + j = 0; + for(i = 0; i < 256; ++i) { + j = (j + this.S[i] + key[i % key.length]) & 255; + t = this.S[i]; + this.S[i] = this.S[j]; + this.S[j] = t; + } + this.i = 0; + this.j = 0; +} + +function ARC4next() { + var t; + this.i = (this.i + 1) & 255; + this.j = (this.j + this.S[this.i]) & 255; + t = this.S[this.i]; + this.S[this.i] = this.S[this.j]; + this.S[this.j] = t; + return this.S[(t + this.S[this.i]) & 255]; +} + +Arcfour.prototype.init = ARC4init; +Arcfour.prototype.next = ARC4next; + +// Plug in your RNG constructor here +function prng_newstate() { + return new Arcfour(); +} + +// Pool size must be a multiple of 4 and greater than 32. +// An array of bytes the size of the pool will be passed to init() +var rng_psize = 256; +// Random number generator - requires a PRNG backend, e.g. prng4.js + +// For best results, put code like +// +// in your main HTML document. + +var rng_state; +var rng_pool; +var rng_pptr; + +// Mix in a 32-bit integer into the pool +function rng_seed_int(x) { + rng_pool[rng_pptr++] ^= x & 255; + rng_pool[rng_pptr++] ^= (x >> 8) & 255; + rng_pool[rng_pptr++] ^= (x >> 16) & 255; + rng_pool[rng_pptr++] ^= (x >> 24) & 255; + if(rng_pptr >= rng_psize) rng_pptr -= rng_psize; +} + +// Mix in the current time (w/milliseconds) into the pool +function rng_seed_time() { + // Use pre-computed date to avoid making the benchmark + // results dependent on the current date. + rng_seed_int(1122926989487); +} + +// Initialize the pool with junk if needed. +if(rng_pool == null) { + rng_pool = new Array(); + rng_pptr = 0; + var t; + while(rng_pptr < rng_psize) { // extract some randomness from Math.random() + t = Math.floor(65536 * Math.random()); + rng_pool[rng_pptr++] = t >>> 8; + rng_pool[rng_pptr++] = t & 255; + } + rng_pptr = 0; + rng_seed_time(); + //rng_seed_int(window.screenX); + //rng_seed_int(window.screenY); +} + +function rng_get_byte() { + if(rng_state == null) { + rng_seed_time(); + rng_state = prng_newstate(); + rng_state.init(rng_pool); + for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) + rng_pool[rng_pptr] = 0; + rng_pptr = 0; + //rng_pool = null; + } + // TODO: allow reseeding after first request + return rng_state.next(); +} + +function rng_get_bytes(ba) { + var i; + for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte(); +} + +function SecureRandom() {} + +SecureRandom.prototype.nextBytes = rng_get_bytes; +// Depends on jsbn.js and rng.js + +// convert a (hex) string to a bignum object +function parseBigInt(str,r) { + return new BigInteger(str,r); +} + +function linebrk(s,n) { + var ret = ""; + var i = 0; + while(i + n < s.length) { + ret += s.substring(i,i+n) + "\n"; + i += n; + } + return ret + s.substring(i,s.length); +} + +function byte2Hex(b) { + if(b < 0x10) + return "0" + b.toString(16); + else + return b.toString(16); +} + +// PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint +function pkcs1pad2(s,n) { + if(n < s.length + 11) { + alert("Message too long for RSA"); + return null; + } + var ba = new Array(); + var i = s.length - 1; + while(i >= 0 && n > 0) ba[--n] = s.charCodeAt(i--); + ba[--n] = 0; + var rng = new SecureRandom(); + var x = new Array(); + while(n > 2) { // random non-zero pad + x[0] = 0; + while(x[0] == 0) rng.nextBytes(x); + ba[--n] = x[0]; + } + ba[--n] = 2; + ba[--n] = 0; + return new BigInteger(ba); +} + +// "empty" RSA key constructor +function RSAKey() { + this.n = null; + this.e = 0; + this.d = null; + this.p = null; + this.q = null; + this.dmp1 = null; + this.dmq1 = null; + this.coeff = null; +} + +// Set the public key fields N and e from hex strings +function RSASetPublic(N,E) { + if(N != null && E != null && N.length > 0 && E.length > 0) { + this.n = parseBigInt(N,16); + this.e = parseInt(E,16); + } + else + alert("Invalid RSA public key"); +} + +// Perform raw public operation on "x": return x^e (mod n) +function RSADoPublic(x) { + return x.modPowInt(this.e, this.n); +} + +// Return the PKCS#1 RSA encryption of "text" as an even-length hex string +function RSAEncrypt(text) { + var m = pkcs1pad2(text,(this.n.bitLength()+7)>>3); + if(m == null) return null; + var c = this.doPublic(m); + if(c == null) return null; + var h = c.toString(16); + if((h.length & 1) == 0) return h; else return "0" + h; +} + +// Return the PKCS#1 RSA encryption of "text" as a Base64-encoded string +//function RSAEncryptB64(text) { +// var h = this.encrypt(text); +// if(h) return hex2b64(h); else return null; +//} + +// protected +RSAKey.prototype.doPublic = RSADoPublic; + +// public +RSAKey.prototype.setPublic = RSASetPublic; +RSAKey.prototype.encrypt = RSAEncrypt; +//RSAKey.prototype.encrypt_b64 = RSAEncryptB64; +// Depends on rsa.js and jsbn2.js + +// Undo PKCS#1 (type 2, random) padding and, if valid, return the plaintext +function pkcs1unpad2(d,n) { + var b = d.toByteArray(); + var i = 0; + while(i < b.length && b[i] == 0) ++i; + if(b.length-i != n-1 || b[i] != 2) + return null; + ++i; + while(b[i] != 0) + if(++i >= b.length) return null; + var ret = ""; + while(++i < b.length) + ret += String.fromCharCode(b[i]); + return ret; +} + +// Set the private key fields N, e, and d from hex strings +function RSASetPrivate(N,E,D) { + if(N != null && E != null && N.length > 0 && E.length > 0) { + this.n = parseBigInt(N,16); + this.e = parseInt(E,16); + this.d = parseBigInt(D,16); + } + else + alert("Invalid RSA private key"); +} + +// Set the private key fields N, e, d and CRT params from hex strings +function RSASetPrivateEx(N,E,D,P,Q,DP,DQ,C) { + if(N != null && E != null && N.length > 0 && E.length > 0) { + this.n = parseBigInt(N,16); + this.e = parseInt(E,16); + this.d = parseBigInt(D,16); + this.p = parseBigInt(P,16); + this.q = parseBigInt(Q,16); + this.dmp1 = parseBigInt(DP,16); + this.dmq1 = parseBigInt(DQ,16); + this.coeff = parseBigInt(C,16); + } + else + alert("Invalid RSA private key"); +} + +// Generate a new random private key B bits long, using public expt E +function RSAGenerate(B,E) { + var rng = new SecureRandom(); + var qs = B>>1; + this.e = parseInt(E,16); + var ee = new BigInteger(E,16); + for(;;) { + for(;;) { + this.p = new BigInteger(B-qs,1,rng); + if(this.p.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.p.isProbablePrime(10)) break; + } + for(;;) { + this.q = new BigInteger(qs,1,rng); + if(this.q.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.q.isProbablePrime(10)) break; + } + if(this.p.compareTo(this.q) <= 0) { + var t = this.p; + this.p = this.q; + this.q = t; + } + var p1 = this.p.subtract(BigInteger.ONE); + var q1 = this.q.subtract(BigInteger.ONE); + var phi = p1.multiply(q1); + if(phi.gcd(ee).compareTo(BigInteger.ONE) == 0) { + this.n = this.p.multiply(this.q); + this.d = ee.modInverse(phi); + this.dmp1 = this.d.mod(p1); + this.dmq1 = this.d.mod(q1); + this.coeff = this.q.modInverse(this.p); + break; + } + } +} + +// Perform raw private operation on "x": return x^d (mod n) +function RSADoPrivate(x) { + if(this.p == null || this.q == null) + return x.modPow(this.d, this.n); + + // TODO: re-calculate any missing CRT params + var xp = x.mod(this.p).modPow(this.dmp1, this.p); + var xq = x.mod(this.q).modPow(this.dmq1, this.q); + + while(xp.compareTo(xq) < 0) + xp = xp.add(this.p); + return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq); +} + +// Return the PKCS#1 RSA decryption of "ctext". +// "ctext" is an even-length hex string and the output is a plain string. +function RSADecrypt(ctext) { + var c = parseBigInt(ctext, 16); + var m = this.doPrivate(c); + if(m == null) return null; + return pkcs1unpad2(m, (this.n.bitLength()+7)>>3); +} + +// Return the PKCS#1 RSA decryption of "ctext". +// "ctext" is a Base64-encoded string and the output is a plain string. +//function RSAB64Decrypt(ctext) { +// var h = b64tohex(ctext); +// if(h) return this.decrypt(h); else return null; +//} + +// protected +RSAKey.prototype.doPrivate = RSADoPrivate; + +// public +RSAKey.prototype.setPrivate = RSASetPrivate; +RSAKey.prototype.setPrivateEx = RSASetPrivateEx; +RSAKey.prototype.generate = RSAGenerate; +RSAKey.prototype.decrypt = RSADecrypt; +//RSAKey.prototype.b64_decrypt = RSAB64Decrypt; + + +nValue="a5261939975948bb7a58dffe5ff54e65f0498f9175f5a09288810b8975871e99af3b5dd94057b0fc07535f5f97444504fa35169d461d0d30cf0192e307727c065168c788771c561a9400fb49175e9e6aa4e23fe11af69e9412dd23b0cb6684c4c2429bce139e848ab26d0829073351f4acd36074eafd036a5eb83359d2a698d3"; +eValue="10001"; +dValue="8e9912f6d3645894e8d38cb58c0db81ff516cf4c7e5a14c7f1eddb1459d2cded4d8d293fc97aee6aefb861859c8b6a3d1dfe710463e1f9ddc72048c09751971c4a580aa51eb523357a3cc48d31cfad1d4a165066ed92d4748fb6571211da5cb14bc11b6e2df7c1a559e6d5ac1cd5c94703a22891464fba23d0d965086277a161"; +pValue="d090ce58a92c75233a6486cb0a9209bf3583b64f540c76f5294bb97d285eed33aec220bde14b2417951178ac152ceab6da7090905b478195498b352048f15e7d"; +qValue="cab575dc652bb66df15a0359609d51d1db184750c00c6698b90ef3465c99655103edbf0d54c56aec0ce3c4d22592338092a126a0cc49f65a4a30d222b411e58f"; +dmp1Value="1a24bca8e273df2f0e47c199bbf678604e7df7215480c77c8db39f49b000ce2cf7500038acfff5433b7d582a01f1826e6f4d42e1c57f5e1fef7b12aabc59fd25"; +dmq1Value="3d06982efbbe47339e1f6d36b1216b8a741d410b0c662f54f7118b27b9a4ec9d914337eb39841d8666f3034408cf94f5b62f11c402fc994fe15a05493150d9fd"; +coeffValue="3a3e731acd8960b7ff9eb81a7ff93bd1cfa74cbd56987db58b4594fb09c09084db1734c8143f98b602b981aaa9243ca28deb69b5b280ee8dcee0fd2625e53250"; + +setupEngine(am3, 28); + +var TEXT = "The quick brown fox jumped over the extremely lazy frog! " + + "Now is the time for all good men to come to the party."; +var encrypted; + +function encrypt() { + var RSA = new RSAKey(); + RSA.setPublic(nValue, eValue); + RSA.setPrivateEx(nValue, eValue, dValue, pValue, qValue, dmp1Value, dmq1Value, coeffValue); + encrypted = RSA.encrypt(TEXT); +} + +function decrypt() { + var RSA = new RSAKey(); + RSA.setPublic(nValue, eValue); + RSA.setPrivateEx(nValue, eValue, dValue, pValue, qValue, dmp1Value, dmq1Value, coeffValue); + var decrypted = RSA.decrypt(encrypted); + if (decrypted != TEXT) { + throw new Error("Crypto operation failed"); + } +} diff --git a/js/src/octane/deltablue.js b/js/src/octane/deltablue.js new file mode 100644 index 0000000000..a3a5976488 --- /dev/null +++ b/js/src/octane/deltablue.js @@ -0,0 +1,883 @@ +// Copyright 2008 the V8 project authors. All rights reserved. +// Copyright 1996 John Maloney and Mario Wolczko. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +// This implementation of the DeltaBlue benchmark is derived +// from the Smalltalk implementation by John Maloney and Mario +// Wolczko. Some parts have been translated directly, whereas +// others have been modified more aggresively to make it feel +// more like a JavaScript program. + + +var DeltaBlue = new BenchmarkSuite('DeltaBlue', [66118], [ + new Benchmark('DeltaBlue', true, false, 4400, deltaBlue) +]); + + +/** + * A JavaScript implementation of the DeltaBlue constraint-solving + * algorithm, as described in: + * + * "The DeltaBlue Algorithm: An Incremental Constraint Hierarchy Solver" + * Bjorn N. Freeman-Benson and John Maloney + * January 1990 Communications of the ACM, + * also available as University of Washington TR 89-08-06. + * + * Beware: this benchmark is written in a grotesque style where + * the constraint model is built by side-effects from constructors. + * I've kept it this way to avoid deviating too much from the original + * implementation. + */ + + +/* --- O b j e c t M o d e l --- */ + +Object.defineProperty(Object.prototype, "inheritsFrom", { + + value: function (shuper) { + function Inheriter() { } + Inheriter.prototype = shuper.prototype; + this.prototype = new Inheriter(); + this.superConstructor = shuper; + } +}); + +function OrderedCollection() { + this.elms = new Array(); +} + +OrderedCollection.prototype.add = function (elm) { + this.elms.push(elm); +} + +OrderedCollection.prototype.at = function (index) { + return this.elms[index]; +} + +OrderedCollection.prototype.size = function () { + return this.elms.length; +} + +OrderedCollection.prototype.removeFirst = function () { + return this.elms.pop(); +} + +OrderedCollection.prototype.remove = function (elm) { + var index = 0, skipped = 0; + for (var i = 0; i < this.elms.length; i++) { + var value = this.elms[i]; + if (value != elm) { + this.elms[index] = value; + index++; + } else { + skipped++; + } + } + for (var i = 0; i < skipped; i++) + this.elms.pop(); +} + +/* --- * + * S t r e n g t h + * --- */ + +/** + * Strengths are used to measure the relative importance of constraints. + * New strengths may be inserted in the strength hierarchy without + * disrupting current constraints. Strengths cannot be created outside + * this class, so pointer comparison can be used for value comparison. + */ +function Strength(strengthValue, name) { + this.strengthValue = strengthValue; + this.name = name; +} + +Strength.stronger = function (s1, s2) { + return s1.strengthValue < s2.strengthValue; +} + +Strength.weaker = function (s1, s2) { + return s1.strengthValue > s2.strengthValue; +} + +Strength.weakestOf = function (s1, s2) { + return this.weaker(s1, s2) ? s1 : s2; +} + +Strength.strongest = function (s1, s2) { + return this.stronger(s1, s2) ? s1 : s2; +} + +Strength.prototype.nextWeaker = function () { + switch (this.strengthValue) { + case 0: return Strength.WEAKEST; + case 1: return Strength.WEAK_DEFAULT; + case 2: return Strength.NORMAL; + case 3: return Strength.STRONG_DEFAULT; + case 4: return Strength.PREFERRED; + case 5: return Strength.REQUIRED; + } +} + +// Strength constants. +Strength.REQUIRED = new Strength(0, "required"); +Strength.STONG_PREFERRED = new Strength(1, "strongPreferred"); +Strength.PREFERRED = new Strength(2, "preferred"); +Strength.STRONG_DEFAULT = new Strength(3, "strongDefault"); +Strength.NORMAL = new Strength(4, "normal"); +Strength.WEAK_DEFAULT = new Strength(5, "weakDefault"); +Strength.WEAKEST = new Strength(6, "weakest"); + +/* --- * + * C o n s t r a i n t + * --- */ + +/** + * An abstract class representing a system-maintainable relationship + * (or "constraint") between a set of variables. A constraint supplies + * a strength instance variable; concrete subclasses provide a means + * of storing the constrained variables and other information required + * to represent a constraint. + */ +function Constraint(strength) { + this.strength = strength; +} + +/** + * Activate this constraint and attempt to satisfy it. + */ +Constraint.prototype.addConstraint = function () { + this.addToGraph(); + planner.incrementalAdd(this); +} + +/** + * Attempt to find a way to enforce this constraint. If successful, + * record the solution, perhaps modifying the current dataflow + * graph. Answer the constraint that this constraint overrides, if + * there is one, or nil, if there isn't. + * Assume: I am not already satisfied. + */ +Constraint.prototype.satisfy = function (mark) { + this.chooseMethod(mark); + if (!this.isSatisfied()) { + if (this.strength == Strength.REQUIRED) + alert("Could not satisfy a required constraint!"); + return null; + } + this.markInputs(mark); + var out = this.output(); + var overridden = out.determinedBy; + if (overridden != null) overridden.markUnsatisfied(); + out.determinedBy = this; + if (!planner.addPropagate(this, mark)) + alert("Cycle encountered"); + out.mark = mark; + return overridden; +} + +Constraint.prototype.destroyConstraint = function () { + if (this.isSatisfied()) planner.incrementalRemove(this); + else this.removeFromGraph(); +} + +/** + * Normal constraints are not input constraints. An input constraint + * is one that depends on external state, such as the mouse, the + * keybord, a clock, or some arbitraty piece of imperative code. + */ +Constraint.prototype.isInput = function () { + return false; +} + +/* --- * + * U n a r y C o n s t r a i n t + * --- */ + +/** + * Abstract superclass for constraints having a single possible output + * variable. + */ +function UnaryConstraint(v, strength) { + UnaryConstraint.superConstructor.call(this, strength); + this.myOutput = v; + this.satisfied = false; + this.addConstraint(); +} + +UnaryConstraint.inheritsFrom(Constraint); + +/** + * Adds this constraint to the constraint graph + */ +UnaryConstraint.prototype.addToGraph = function () { + this.myOutput.addConstraint(this); + this.satisfied = false; +} + +/** + * Decides if this constraint can be satisfied and records that + * decision. + */ +UnaryConstraint.prototype.chooseMethod = function (mark) { + this.satisfied = (this.myOutput.mark != mark) + && Strength.stronger(this.strength, this.myOutput.walkStrength); +} + +/** + * Returns true if this constraint is satisfied in the current solution. + */ +UnaryConstraint.prototype.isSatisfied = function () { + return this.satisfied; +} + +UnaryConstraint.prototype.markInputs = function (mark) { + // has no inputs +} + +/** + * Returns the current output variable. + */ +UnaryConstraint.prototype.output = function () { + return this.myOutput; +} + +/** + * Calculate the walkabout strength, the stay flag, and, if it is + * 'stay', the value for the current output of this constraint. Assume + * this constraint is satisfied. + */ +UnaryConstraint.prototype.recalculate = function () { + this.myOutput.walkStrength = this.strength; + this.myOutput.stay = !this.isInput(); + if (this.myOutput.stay) this.execute(); // Stay optimization +} + +/** + * Records that this constraint is unsatisfied + */ +UnaryConstraint.prototype.markUnsatisfied = function () { + this.satisfied = false; +} + +UnaryConstraint.prototype.inputsKnown = function () { + return true; +} + +UnaryConstraint.prototype.removeFromGraph = function () { + if (this.myOutput != null) this.myOutput.removeConstraint(this); + this.satisfied = false; +} + +/* --- * + * S t a y C o n s t r a i n t + * --- */ + +/** + * Variables that should, with some level of preference, stay the same. + * Planners may exploit the fact that instances, if satisfied, will not + * change their output during plan execution. This is called "stay + * optimization". + */ +function StayConstraint(v, str) { + StayConstraint.superConstructor.call(this, v, str); +} + +StayConstraint.inheritsFrom(UnaryConstraint); + +StayConstraint.prototype.execute = function () { + // Stay constraints do nothing +} + +/* --- * + * E d i t C o n s t r a i n t + * --- */ + +/** + * A unary input constraint used to mark a variable that the client + * wishes to change. + */ +function EditConstraint(v, str) { + EditConstraint.superConstructor.call(this, v, str); +} + +EditConstraint.inheritsFrom(UnaryConstraint); + +/** + * Edits indicate that a variable is to be changed by imperative code. + */ +EditConstraint.prototype.isInput = function () { + return true; +} + +EditConstraint.prototype.execute = function () { + // Edit constraints do nothing +} + +/* --- * + * B i n a r y C o n s t r a i n t + * --- */ + +var Direction = new Object(); +Direction.NONE = 0; +Direction.FORWARD = 1; +Direction.BACKWARD = -1; + +/** + * Abstract superclass for constraints having two possible output + * variables. + */ +function BinaryConstraint(var1, var2, strength) { + BinaryConstraint.superConstructor.call(this, strength); + this.v1 = var1; + this.v2 = var2; + this.direction = Direction.NONE; + this.addConstraint(); +} + +BinaryConstraint.inheritsFrom(Constraint); + +/** + * Decides if this constraint can be satisfied and which way it + * should flow based on the relative strength of the variables related, + * and record that decision. + */ +BinaryConstraint.prototype.chooseMethod = function (mark) { + if (this.v1.mark == mark) { + this.direction = (this.v2.mark != mark && Strength.stronger(this.strength, this.v2.walkStrength)) + ? Direction.FORWARD + : Direction.NONE; + } + if (this.v2.mark == mark) { + this.direction = (this.v1.mark != mark && Strength.stronger(this.strength, this.v1.walkStrength)) + ? Direction.BACKWARD + : Direction.NONE; + } + if (Strength.weaker(this.v1.walkStrength, this.v2.walkStrength)) { + this.direction = Strength.stronger(this.strength, this.v1.walkStrength) + ? Direction.BACKWARD + : Direction.NONE; + } else { + this.direction = Strength.stronger(this.strength, this.v2.walkStrength) + ? Direction.FORWARD + : Direction.BACKWARD + } +} + +/** + * Add this constraint to the constraint graph + */ +BinaryConstraint.prototype.addToGraph = function () { + this.v1.addConstraint(this); + this.v2.addConstraint(this); + this.direction = Direction.NONE; +} + +/** + * Answer true if this constraint is satisfied in the current solution. + */ +BinaryConstraint.prototype.isSatisfied = function () { + return this.direction != Direction.NONE; +} + +/** + * Mark the input variable with the given mark. + */ +BinaryConstraint.prototype.markInputs = function (mark) { + this.input().mark = mark; +} + +/** + * Returns the current input variable + */ +BinaryConstraint.prototype.input = function () { + return (this.direction == Direction.FORWARD) ? this.v1 : this.v2; +} + +/** + * Returns the current output variable + */ +BinaryConstraint.prototype.output = function () { + return (this.direction == Direction.FORWARD) ? this.v2 : this.v1; +} + +/** + * Calculate the walkabout strength, the stay flag, and, if it is + * 'stay', the value for the current output of this + * constraint. Assume this constraint is satisfied. + */ +BinaryConstraint.prototype.recalculate = function () { + var ihn = this.input(), out = this.output(); + out.walkStrength = Strength.weakestOf(this.strength, ihn.walkStrength); + out.stay = ihn.stay; + if (out.stay) this.execute(); +} + +/** + * Record the fact that this constraint is unsatisfied. + */ +BinaryConstraint.prototype.markUnsatisfied = function () { + this.direction = Direction.NONE; +} + +BinaryConstraint.prototype.inputsKnown = function (mark) { + var i = this.input(); + return i.mark == mark || i.stay || i.determinedBy == null; +} + +BinaryConstraint.prototype.removeFromGraph = function () { + if (this.v1 != null) this.v1.removeConstraint(this); + if (this.v2 != null) this.v2.removeConstraint(this); + this.direction = Direction.NONE; +} + +/* --- * + * S c a l e C o n s t r a i n t + * --- */ + +/** + * Relates two variables by the linear scaling relationship: "v2 = + * (v1 * scale) + offset". Either v1 or v2 may be changed to maintain + * this relationship but the scale factor and offset are considered + * read-only. + */ +function ScaleConstraint(src, scale, offset, dest, strength) { + this.direction = Direction.NONE; + this.scale = scale; + this.offset = offset; + ScaleConstraint.superConstructor.call(this, src, dest, strength); +} + +ScaleConstraint.inheritsFrom(BinaryConstraint); + +/** + * Adds this constraint to the constraint graph. + */ +ScaleConstraint.prototype.addToGraph = function () { + ScaleConstraint.superConstructor.prototype.addToGraph.call(this); + this.scale.addConstraint(this); + this.offset.addConstraint(this); +} + +ScaleConstraint.prototype.removeFromGraph = function () { + ScaleConstraint.superConstructor.prototype.removeFromGraph.call(this); + if (this.scale != null) this.scale.removeConstraint(this); + if (this.offset != null) this.offset.removeConstraint(this); +} + +ScaleConstraint.prototype.markInputs = function (mark) { + ScaleConstraint.superConstructor.prototype.markInputs.call(this, mark); + this.scale.mark = this.offset.mark = mark; +} + +/** + * Enforce this constraint. Assume that it is satisfied. + */ +ScaleConstraint.prototype.execute = function () { + if (this.direction == Direction.FORWARD) { + this.v2.value = this.v1.value * this.scale.value + this.offset.value; + } else { + this.v1.value = (this.v2.value - this.offset.value) / this.scale.value; + } +} + +/** + * Calculate the walkabout strength, the stay flag, and, if it is + * 'stay', the value for the current output of this constraint. Assume + * this constraint is satisfied. + */ +ScaleConstraint.prototype.recalculate = function () { + var ihn = this.input(), out = this.output(); + out.walkStrength = Strength.weakestOf(this.strength, ihn.walkStrength); + out.stay = ihn.stay && this.scale.stay && this.offset.stay; + if (out.stay) this.execute(); +} + +/* --- * + * E q u a l i t y C o n s t r a i n t + * --- */ + +/** + * Constrains two variables to have the same value. + */ +function EqualityConstraint(var1, var2, strength) { + EqualityConstraint.superConstructor.call(this, var1, var2, strength); +} + +EqualityConstraint.inheritsFrom(BinaryConstraint); + +/** + * Enforce this constraint. Assume that it is satisfied. + */ +EqualityConstraint.prototype.execute = function () { + this.output().value = this.input().value; +} + +/* --- * + * V a r i a b l e + * --- */ + +/** + * A constrained variable. In addition to its value, it maintain the + * structure of the constraint graph, the current dataflow graph, and + * various parameters of interest to the DeltaBlue incremental + * constraint solver. + **/ +function Variable(name, initialValue) { + this.value = initialValue || 0; + this.constraints = new OrderedCollection(); + this.determinedBy = null; + this.mark = 0; + this.walkStrength = Strength.WEAKEST; + this.stay = true; + this.name = name; +} + +/** + * Add the given constraint to the set of all constraints that refer + * this variable. + */ +Variable.prototype.addConstraint = function (c) { + this.constraints.add(c); +} + +/** + * Removes all traces of c from this variable. + */ +Variable.prototype.removeConstraint = function (c) { + this.constraints.remove(c); + if (this.determinedBy == c) this.determinedBy = null; +} + +/* --- * + * P l a n n e r + * --- */ + +/** + * The DeltaBlue planner + */ +function Planner() { + this.currentMark = 0; +} + +/** + * Attempt to satisfy the given constraint and, if successful, + * incrementally update the dataflow graph. Details: If satifying + * the constraint is successful, it may override a weaker constraint + * on its output. The algorithm attempts to resatisfy that + * constraint using some other method. This process is repeated + * until either a) it reaches a variable that was not previously + * determined by any constraint or b) it reaches a constraint that + * is too weak to be satisfied using any of its methods. The + * variables of constraints that have been processed are marked with + * a unique mark value so that we know where we've been. This allows + * the algorithm to avoid getting into an infinite loop even if the + * constraint graph has an inadvertent cycle. + */ +Planner.prototype.incrementalAdd = function (c) { + var mark = this.newMark(); + var overridden = c.satisfy(mark); + while (overridden != null) + overridden = overridden.satisfy(mark); +} + +/** + * Entry point for retracting a constraint. Remove the given + * constraint and incrementally update the dataflow graph. + * Details: Retracting the given constraint may allow some currently + * unsatisfiable downstream constraint to be satisfied. We therefore collect + * a list of unsatisfied downstream constraints and attempt to + * satisfy each one in turn. This list is traversed by constraint + * strength, strongest first, as a heuristic for avoiding + * unnecessarily adding and then overriding weak constraints. + * Assume: c is satisfied. + */ +Planner.prototype.incrementalRemove = function (c) { + var out = c.output(); + c.markUnsatisfied(); + c.removeFromGraph(); + var unsatisfied = this.removePropagateFrom(out); + var strength = Strength.REQUIRED; + do { + for (var i = 0; i < unsatisfied.size(); i++) { + var u = unsatisfied.at(i); + if (u.strength == strength) + this.incrementalAdd(u); + } + strength = strength.nextWeaker(); + } while (strength != Strength.WEAKEST); +} + +/** + * Select a previously unused mark value. + */ +Planner.prototype.newMark = function () { + return ++this.currentMark; +} + +/** + * Extract a plan for resatisfaction starting from the given source + * constraints, usually a set of input constraints. This method + * assumes that stay optimization is desired; the plan will contain + * only constraints whose output variables are not stay. Constraints + * that do no computation, such as stay and edit constraints, are + * not included in the plan. + * Details: The outputs of a constraint are marked when it is added + * to the plan under construction. A constraint may be appended to + * the plan when all its input variables are known. A variable is + * known if either a) the variable is marked (indicating that has + * been computed by a constraint appearing earlier in the plan), b) + * the variable is 'stay' (i.e. it is a constant at plan execution + * time), or c) the variable is not determined by any + * constraint. The last provision is for past states of history + * variables, which are not stay but which are also not computed by + * any constraint. + * Assume: sources are all satisfied. + */ +Planner.prototype.makePlan = function (sources) { + var mark = this.newMark(); + var plan = new Plan(); + var todo = sources; + while (todo.size() > 0) { + var c = todo.removeFirst(); + if (c.output().mark != mark && c.inputsKnown(mark)) { + plan.addConstraint(c); + c.output().mark = mark; + this.addConstraintsConsumingTo(c.output(), todo); + } + } + return plan; +} + +/** + * Extract a plan for resatisfying starting from the output of the + * given constraints, usually a set of input constraints. + */ +Planner.prototype.extractPlanFromConstraints = function (constraints) { + var sources = new OrderedCollection(); + for (var i = 0; i < constraints.size(); i++) { + var c = constraints.at(i); + if (c.isInput() && c.isSatisfied()) + // not in plan already and eligible for inclusion + sources.add(c); + } + return this.makePlan(sources); +} + +/** + * Recompute the walkabout strengths and stay flags of all variables + * downstream of the given constraint and recompute the actual + * values of all variables whose stay flag is true. If a cycle is + * detected, remove the given constraint and answer + * false. Otherwise, answer true. + * Details: Cycles are detected when a marked variable is + * encountered downstream of the given constraint. The sender is + * assumed to have marked the inputs of the given constraint with + * the given mark. Thus, encountering a marked node downstream of + * the output constraint means that there is a path from the + * constraint's output to one of its inputs. + */ +Planner.prototype.addPropagate = function (c, mark) { + var todo = new OrderedCollection(); + todo.add(c); + while (todo.size() > 0) { + var d = todo.removeFirst(); + if (d.output().mark == mark) { + this.incrementalRemove(c); + return false; + } + d.recalculate(); + this.addConstraintsConsumingTo(d.output(), todo); + } + return true; +} + + +/** + * Update the walkabout strengths and stay flags of all variables + * downstream of the given constraint. Answer a collection of + * unsatisfied constraints sorted in order of decreasing strength. + */ +Planner.prototype.removePropagateFrom = function (out) { + out.determinedBy = null; + out.walkStrength = Strength.WEAKEST; + out.stay = true; + var unsatisfied = new OrderedCollection(); + var todo = new OrderedCollection(); + todo.add(out); + while (todo.size() > 0) { + var v = todo.removeFirst(); + for (var i = 0; i < v.constraints.size(); i++) { + var c = v.constraints.at(i); + if (!c.isSatisfied()) + unsatisfied.add(c); + } + var determining = v.determinedBy; + for (var i = 0; i < v.constraints.size(); i++) { + var next = v.constraints.at(i); + if (next != determining && next.isSatisfied()) { + next.recalculate(); + todo.add(next.output()); + } + } + } + return unsatisfied; +} + +Planner.prototype.addConstraintsConsumingTo = function (v, coll) { + var determining = v.determinedBy; + var cc = v.constraints; + for (var i = 0; i < cc.size(); i++) { + var c = cc.at(i); + if (c != determining && c.isSatisfied()) + coll.add(c); + } +} + +/* --- * + * P l a n + * --- */ + +/** + * A Plan is an ordered list of constraints to be executed in sequence + * to resatisfy all currently satisfiable constraints in the face of + * one or more changing inputs. + */ +function Plan() { + this.v = new OrderedCollection(); +} + +Plan.prototype.addConstraint = function (c) { + this.v.add(c); +} + +Plan.prototype.size = function () { + return this.v.size(); +} + +Plan.prototype.constraintAt = function (index) { + return this.v.at(index); +} + +Plan.prototype.execute = function () { + for (var i = 0; i < this.size(); i++) { + var c = this.constraintAt(i); + c.execute(); + } +} + +/* --- * + * M a i n + * --- */ + +/** + * This is the standard DeltaBlue benchmark. A long chain of equality + * constraints is constructed with a stay constraint on one end. An + * edit constraint is then added to the opposite end and the time is + * measured for adding and removing this constraint, and extracting + * and executing a constraint satisfaction plan. There are two cases. + * In case 1, the added constraint is stronger than the stay + * constraint and values must propagate down the entire length of the + * chain. In case 2, the added constraint is weaker than the stay + * constraint so it cannot be accomodated. The cost in this case is, + * of course, very low. Typical situations lie somewhere between these + * two extremes. + */ +function chainTest(n) { + planner = new Planner(); + var prev = null, first = null, last = null; + + // Build chain of n equality constraints + for (var i = 0; i <= n; i++) { + var name = "v" + i; + var v = new Variable(name); + if (prev != null) + new EqualityConstraint(prev, v, Strength.REQUIRED); + if (i == 0) first = v; + if (i == n) last = v; + prev = v; + } + + new StayConstraint(last, Strength.STRONG_DEFAULT); + var edit = new EditConstraint(first, Strength.PREFERRED); + var edits = new OrderedCollection(); + edits.add(edit); + var plan = planner.extractPlanFromConstraints(edits); + for (var i = 0; i < 100; i++) { + first.value = i; + plan.execute(); + if (last.value != i) + alert("Chain test failed."); + } +} + +/** + * This test constructs a two sets of variables related to each + * other by a simple linear transformation (scale and offset). The + * time is measured to change a variable on either side of the + * mapping and to change the scale and offset factors. + */ +function projectionTest(n) { + planner = new Planner(); + var scale = new Variable("scale", 10); + var offset = new Variable("offset", 1000); + var src = null, dst = null; + + var dests = new OrderedCollection(); + for (var i = 0; i < n; i++) { + src = new Variable("src" + i, i); + dst = new Variable("dst" + i, i); + dests.add(dst); + new StayConstraint(src, Strength.NORMAL); + new ScaleConstraint(src, scale, offset, dst, Strength.REQUIRED); + } + + change(src, 17); + if (dst.value != 1170) alert("Projection 1 failed"); + change(dst, 1050); + if (src.value != 5) alert("Projection 2 failed"); + change(scale, 5); + for (var i = 0; i < n - 1; i++) { + if (dests.at(i).value != i * 5 + 1000) + alert("Projection 3 failed"); + } + change(offset, 2000); + for (var i = 0; i < n - 1; i++) { + if (dests.at(i).value != i * 5 + 2000) + alert("Projection 4 failed"); + } +} + +function change(v, newValue) { + var edit = new EditConstraint(v, Strength.PREFERRED); + var edits = new OrderedCollection(); + edits.add(edit); + var plan = planner.extractPlanFromConstraints(edits); + for (var i = 0; i < 10; i++) { + v.value = newValue; + plan.execute(); + } + edit.destroyConstraint(); +} + +// Global variable holding the current planner. +var planner = null; + +function deltaBlue() { + chainTest(100); + projectionTest(100); +} diff --git a/js/src/octane/earley-boyer.js b/js/src/octane/earley-boyer.js new file mode 100644 index 0000000000..41d593d3bf --- /dev/null +++ b/js/src/octane/earley-boyer.js @@ -0,0 +1,4684 @@ +// This file is automatically generated by scheme2js, except for the +// benchmark harness code at the beginning and end of the file. + +var EarleyBoyer = new BenchmarkSuite('EarleyBoyer', [666463], [ + new Benchmark("Earley", true, false, 2500, function () { BgL_earleyzd2benchmarkzd2(); }), + new Benchmark("Boyer", true, false, 200, function () { BgL_nboyerzd2benchmarkzd2(); }) +]); + + +/************* GENERATED FILE - DO NOT EDIT *************/ +/************* GENERATED FILE - DO NOT EDIT *************/ +/************* GENERATED FILE - DO NOT EDIT *************/ +/************* GENERATED FILE - DO NOT EDIT *************/ +/************* GENERATED FILE - DO NOT EDIT *************/ +/************* GENERATED FILE - DO NOT EDIT *************/ +/************* GENERATED FILE - DO NOT EDIT *************/ +/************* GENERATED FILE - DO NOT EDIT *************/ +/* + * To use write/prints/... the default-output port has to be set first. + * Simply setting SC_DEFAULT_OUT and SC_ERROR_OUT to the desired values + * should do the trick. + * In the following example the std-out and error-port are redirected to + * a DIV. +function initRuntime() { + function escapeHTML(s) { + var tmp = s; + tmp = tmp.replace(/&/g, "&"); + tmp = tmp.replace(//g, ">"); + tmp = tmp.replace(/ /g, " "); + tmp = tmp.replace(/\n/g, "
"); + tmp = tmp.replace(/\t/g, "    "); + return tmp; + + } + + document.write("
"); + SC_DEFAULT_OUT = new sc_GenericOutputPort( + function(s) { + var stdout = document.getElementById('stdout'); + stdout.innerHTML = stdout.innerHTML + escapeHTML(s); + }); + SC_ERROR_OUT = SC_DEFAULT_OUT; +} +*/ + + +function sc_print_debug() { + sc_print.apply(null, arguments); +} +/*** META ((export *js*)) */ +var sc_JS_GLOBALS = this; + +var __sc_LINE=-1; +var __sc_FILE=""; + +/*** META ((export #t)) */ +function sc_alert() { + var len = arguments.length; + var s = ""; + var i; + + for( i = 0; i < len; i++ ) { + s += sc_toDisplayString(arguments[ i ]); + } + + return alert( s ); +} + +/*** META ((export #t)) */ +function sc_typeof( x ) { + return typeof x; +} + +/*** META ((export #t)) */ +function sc_error() { + var a = [sc_jsstring2symbol("*error*")]; + for (var i = 0; i < arguments.length; i++) { + a[i+1] = arguments[i]; + } + throw a; +} + +/*** META ((export #t) + (peephole (prefix "throw "))) +*/ +function sc_raise(obj) { + throw obj; +} + +/*** META ((export with-handler-lambda)) */ +function sc_withHandlerLambda(handler, body) { + try { + return body(); + } catch(e) { + if (!e._internalException) + return handler(e); + else + throw e; + } +} + +var sc_properties = new Object(); + +/*** META ((export #t)) */ +function sc_putpropBang(sym, key, val) { + var ht = sc_properties[sym]; + if (!ht) { + ht = new Object(); + sc_properties[sym] = ht; + } + ht[key] = val; +} + +/*** META ((export #t)) */ +function sc_getprop(sym, key) { + var ht = sc_properties[sym]; + if (ht) { + if (key in ht) + return ht[key]; + else + return false; + } else + return false; +} + +/*** META ((export #t)) */ +function sc_rempropBang(sym, key) { + var ht = sc_properties[sym]; + if (ht) + delete ht[key]; +} + +/*** META ((export #t)) */ +function sc_any2String(o) { + return jsstring2string(sc_toDisplayString(o)); +} + +/*** META ((export #t) + (peephole (infix 2 2 "===")) + (type bool)) +*/ +function sc_isEqv(o1, o2) { + return (o1 === o2); +} + +/*** META ((export #t) + (peephole (infix 2 2 "===")) + (type bool)) +*/ +function sc_isEq(o1, o2) { + return (o1 === o2); +} + +/*** META ((export #t) + (type bool)) +*/ +function sc_isNumber(n) { + return (typeof n === "number"); +} + +/*** META ((export #t) + (type bool)) +*/ +function sc_isComplex(n) { + return sc_isNumber(n); +} + +/*** META ((export #t) + (type bool)) +*/ +function sc_isReal(n) { + return sc_isNumber(n); +} + +/*** META ((export #t) + (type bool)) +*/ +function sc_isRational(n) { + return sc_isReal(n); +} + +/*** META ((export #t) + (type bool)) +*/ +function sc_isInteger(n) { + return (parseInt(n) === n); +} + +/*** META ((export #t) + (type bool) + (peephole (postfix ", false"))) +*/ +// we don't have exact numbers... +function sc_isExact(n) { + return false; +} + +/*** META ((export #t) + (peephole (postfix ", true")) + (type bool)) +*/ +function sc_isInexact(n) { + return true; +} + +/*** META ((export = =fx =fl) + (type bool) + (peephole (infix 2 2 "==="))) +*/ +function sc_equal(x) { + for (var i = 1; i < arguments.length; i++) + if (x !== arguments[i]) + return false; + return true; +} + +/*** META ((export < = arguments[i]) + return false; + x = arguments[i]; + } + return true; +} + +/*** META ((export > >fx >fl) + (type bool) + (peephole (infix 2 2 ">"))) +*/ +function sc_greater(x, y) { + for (var i = 1; i < arguments.length; i++) { + if (x <= arguments[i]) + return false; + x = arguments[i]; + } + return true; +} + +/*** META ((export <= <=fx <=fl) + (type bool) + (peephole (infix 2 2 "<="))) +*/ +function sc_lessEqual(x, y) { + for (var i = 1; i < arguments.length; i++) { + if (x > arguments[i]) + return false; + x = arguments[i]; + } + return true; +} + +/*** META ((export >= >=fl >=fx) + (type bool) + (peephole (infix 2 2 ">="))) +*/ +function sc_greaterEqual(x, y) { + for (var i = 1; i < arguments.length; i++) { + if (x < arguments[i]) + return false; + x = arguments[i]; + } + return true; +} + +/*** META ((export #t) + (type bool) + (peephole (postfix "=== 0"))) +*/ +function sc_isZero(x) { + return (x === 0); +} + +/*** META ((export #t) + (type bool) + (peephole (postfix "> 0"))) +*/ +function sc_isPositive(x) { + return (x > 0); +} + +/*** META ((export #t) + (type bool) + (peephole (postfix "< 0"))) +*/ +function sc_isNegative(x) { + return (x < 0); +} + +/*** META ((export #t) + (type bool) + (peephole (postfix "%2===1"))) +*/ +function sc_isOdd(x) { + return (x % 2 === 1); +} + +/*** META ((export #t) + (type bool) + (peephole (postfix "%2===0"))) +*/ +function sc_isEven(x) { + return (x % 2 === 0); +} + +/*** META ((export #t)) */ +var sc_max = Math.max; +/*** META ((export #t)) */ +var sc_min = Math.min; + +/*** META ((export + +fx +fl) + (peephole (infix 0 #f "+" "0"))) +*/ +function sc_plus() { + var sum = 0; + for (var i = 0; i < arguments.length; i++) + sum += arguments[i]; + return sum; +} + +/*** META ((export * *fx *fl) + (peephole (infix 0 #f "*" "1"))) +*/ +function sc_multi() { + var product = 1; + for (var i = 0; i < arguments.length; i++) + product *= arguments[i]; + return product; +} + +/*** META ((export - -fx -fl) + (peephole (minus))) +*/ +function sc_minus(x) { + if (arguments.length === 1) + return -x; + else { + var res = x; + for (var i = 1; i < arguments.length; i++) + res -= arguments[i]; + return res; + } +} + +/*** META ((export / /fl) + (peephole (div))) +*/ +function sc_div(x) { + if (arguments.length === 1) + return 1/x; + else { + var res = x; + for (var i = 1; i < arguments.length; i++) + res /= arguments[i]; + return res; + } +} + +/*** META ((export #t)) */ +var sc_abs = Math.abs; + +/*** META ((export quotient /fx) + (peephole (hole 2 "parseInt(" x "/" y ")"))) +*/ +function sc_quotient(x, y) { + return parseInt(x / y); +} + +/*** META ((export #t) + (peephole (infix 2 2 "%"))) +*/ +function sc_remainder(x, y) { + return x % y; +} + +/*** META ((export #t) + (peephole (modulo))) +*/ +function sc_modulo(x, y) { + var remainder = x % y; + // if they don't have the same sign + if ((remainder * y) < 0) + return remainder + y; + else + return remainder; +} + +function sc_euclid_gcd(a, b) { + var temp; + if (a === 0) return b; + if (b === 0) return a; + if (a < 0) {a = -a;}; + if (b < 0) {b = -b;}; + if (b > a) {temp = a; a = b; b = temp;}; + while (true) { + a %= b; + if(a === 0) {return b;}; + b %= a; + if(b === 0) {return a;}; + }; + return b; +} + +/*** META ((export #t)) */ +function sc_gcd() { + var gcd = 0; + for (var i = 0; i < arguments.length; i++) + gcd = sc_euclid_gcd(gcd, arguments[i]); + return gcd; +} + +/*** META ((export #t)) */ +function sc_lcm() { + var lcm = 1; + for (var i = 0; i < arguments.length; i++) { + var f = Math.round(arguments[i] / sc_euclid_gcd(arguments[i], lcm)); + lcm *= Math.abs(f); + } + return lcm; +} + +// LIMITATION: numerator and denominator don't make sense in floating point world. +//var SC_MAX_DECIMALS = 1000000 +// +// function sc_numerator(x) { +// var rounded = Math.round(x * SC_MAX_DECIMALS); +// return Math.round(rounded / sc_euclid_gcd(rounded, SC_MAX_DECIMALS)); +// } + +// function sc_denominator(x) { +// var rounded = Math.round(x * SC_MAX_DECIMALS); +// return Math.round(SC_MAX_DECIMALS / sc_euclid_gcd(rounded, SC_MAX_DECIMALS)); +// } + +/*** META ((export #t)) */ +var sc_floor = Math.floor; +/*** META ((export #t)) */ +var sc_ceiling = Math.ceil; +/*** META ((export #t)) */ +var sc_truncate = parseInt; +/*** META ((export #t)) */ +var sc_round = Math.round; + +// LIMITATION: sc_rationalize doesn't make sense in a floating point world. + +/*** META ((export #t)) */ +var sc_exp = Math.exp; +/*** META ((export #t)) */ +var sc_log = Math.log; +/*** META ((export #t)) */ +var sc_sin = Math.sin; +/*** META ((export #t)) */ +var sc_cos = Math.cos; +/*** META ((export #t)) */ +var sc_tan = Math.tan; +/*** META ((export #t)) */ +var sc_asin = Math.asin; +/*** META ((export #t)) */ +var sc_acos = Math.acos; +/*** META ((export #t)) */ +var sc_atan = Math.atan; + +/*** META ((export #t)) */ +var sc_sqrt = Math.sqrt; +/*** META ((export #t)) */ +var sc_expt = Math.pow; + +// LIMITATION: we don't have complex numbers. +// LIMITATION: the following functions are hence not implemented. +// LIMITATION: make-rectangular, make-polar, real-part, imag-part, magnitude, angle +// LIMITATION: 2 argument atan + +/*** META ((export #t) + (peephole (id))) +*/ +function sc_exact2inexact(x) { + return x; +} + +/*** META ((export #t) + (peephole (id))) +*/ +function sc_inexact2exact(x) { + return x; +} + +function sc_number2jsstring(x, radix) { + if (radix) + return x.toString(radix); + else + return x.toString(); +} + +function sc_jsstring2number(s, radix) { + if (s === "") return false; + + if (radix) { + var t = parseInt(s, radix); + if (!t && t !== 0) return false; + // verify that each char is in range. (parseInt ignores leading + // white and trailing chars) + var allowedChars = "01234567890abcdefghijklmnopqrstuvwxyz".substring(0, radix+1); + if ((new RegExp("^["+allowedChars+"]*$", "i")).test(s)) + return t; + else return false; + } else { + var t = +s; // does not ignore trailing chars. + if (!t && t !== 0) return false; + // simply verify that first char is not whitespace. + var c = s.charAt(0); + // if +c is 0, but the char is not "0", then we have a whitespace. + if (+c === 0 && c !== "0") return false; + return t; + } +} + +/*** META ((export #t) + (type bool) + (peephole (not))) +*/ +function sc_not(b) { + return b === false; +} + +/*** META ((export #t) + (type bool)) +*/ +function sc_isBoolean(b) { + return (b === true) || (b === false); +} + +function sc_Pair(car, cdr) { + this.car = car; + this.cdr = cdr; +} + +sc_Pair.prototype.toString = function() { + return sc_toDisplayString(this); +}; +sc_Pair.prototype.sc_toWriteOrDisplayString = function(writeOrDisplay) { + var current = this; + + var res = "("; + + while(true) { + res += writeOrDisplay(current.car); + if (sc_isPair(current.cdr)) { + res += " "; + current = current.cdr; + } else if (current.cdr !== null) { + res += " . " + writeOrDisplay(current.cdr); + break; + } else // current.cdr == null + break; + } + + res += ")"; + + return res; +}; +sc_Pair.prototype.sc_toDisplayString = function() { + return this.sc_toWriteOrDisplayString(sc_toDisplayString); +}; +sc_Pair.prototype.sc_toWriteString = function() { + return this.sc_toWriteOrDisplayString(sc_toWriteString); +}; +// sc_Pair.prototype.sc_toWriteCircleString in IO.js + +/*** META ((export #t) + (type bool) + (peephole (postfix " instanceof sc_Pair"))) +*/ +function sc_isPair(p) { + return (p instanceof sc_Pair); +} + +function sc_isPairEqual(p1, p2, comp) { + return (comp(p1.car, p2.car) && comp(p1.cdr, p2.cdr)); +} + +/*** META ((export #t) + (peephole (hole 2 "new sc_Pair(" car ", " cdr ")"))) +*/ +function sc_cons(car, cdr) { + return new sc_Pair(car, cdr); +} + +/*** META ((export cons*)) */ +function sc_consStar() { + var res = arguments[arguments.length - 1]; + for (var i = arguments.length-2; i >= 0; i--) + res = new sc_Pair(arguments[i], res); + return res; +} + +/*** META ((export #t) + (peephole (postfix ".car"))) +*/ +function sc_car(p) { + return p.car; +} + +/*** META ((export #t) + (peephole (postfix ".cdr"))) +*/ +function sc_cdr(p) { + return p.cdr; +} + +/*** META ((export #t) + (peephole (hole 2 p ".car = " val))) +*/ +function sc_setCarBang(p, val) { + p.car = val; +} + +/*** META ((export #t) + (peephole (hole 2 p ".cdr = " val))) +*/ +function sc_setCdrBang(p, val) { + p.cdr = val; +} + +/*** META ((export #t) + (peephole (postfix ".car.car"))) +*/ +function sc_caar(p) { return p.car.car; } +/*** META ((export #t) + (peephole (postfix ".cdr.car"))) +*/ +function sc_cadr(p) { return p.cdr.car; } +/*** META ((export #t) + (peephole (postfix ".car.cdr"))) +*/ +function sc_cdar(p) { return p.car.cdr; } +/*** META ((export #t) + (peephole (postfix ".cdr.cdr"))) +*/ +function sc_cddr(p) { return p.cdr.cdr; } +/*** META ((export #t) + (peephole (postfix ".car.car.car"))) +*/ +function sc_caaar(p) { return p.car.car.car; } +/*** META ((export #t) + (peephole (postfix ".car.cdr.car"))) +*/ +function sc_cadar(p) { return p.car.cdr.car; } +/*** META ((export #t) + (peephole (postfix ".cdr.car.car"))) +*/ +function sc_caadr(p) { return p.cdr.car.car; } +/*** META ((export #t) + (peephole (postfix ".cdr.cdr.car"))) +*/ +function sc_caddr(p) { return p.cdr.cdr.car; } +/*** META ((export #t) + (peephole (postfix ".car.car.cdr"))) +*/ +function sc_cdaar(p) { return p.car.car.cdr; } +/*** META ((export #t) + (peephole (postfix ".cdr.car.cdr"))) +*/ +function sc_cdadr(p) { return p.cdr.car.cdr; } +/*** META ((export #t) + (peephole (postfix ".car.cdr.cdr"))) +*/ +function sc_cddar(p) { return p.car.cdr.cdr; } +/*** META ((export #t) + (peephole (postfix ".cdr.cdr.cdr"))) +*/ +function sc_cdddr(p) { return p.cdr.cdr.cdr; } +/*** META ((export #t) + (peephole (postfix ".car.car.car.car"))) +*/ +function sc_caaaar(p) { return p.car.car.car.car; } +/*** META ((export #t) + (peephole (postfix ".car.cdr.car.car"))) +*/ +function sc_caadar(p) { return p.car.cdr.car.car; } +/*** META ((export #t) + (peephole (postfix ".cdr.car.car.car"))) +*/ +function sc_caaadr(p) { return p.cdr.car.car.car; } +/*** META ((export #t) + (peephole (postfix ".cdr.cdr.car.car"))) +*/ +function sc_caaddr(p) { return p.cdr.cdr.car.car; } +/*** META ((export #t) + (peephole (postfix ".car.car.car.cdr"))) +*/ +function sc_cdaaar(p) { return p.car.car.car.cdr; } +/*** META ((export #t) + (peephole (postfix ".car.cdr.car.cdr"))) +*/ +function sc_cdadar(p) { return p.car.cdr.car.cdr; } +/*** META ((export #t) + (peephole (postfix ".cdr.car.car.cdr"))) +*/ +function sc_cdaadr(p) { return p.cdr.car.car.cdr; } +/*** META ((export #t) + (peephole (postfix ".cdr.cdr.car.cdr"))) +*/ +function sc_cdaddr(p) { return p.cdr.cdr.car.cdr; } +/*** META ((export #t) + (peephole (postfix ".car.car.cdr.car"))) +*/ +function sc_cadaar(p) { return p.car.car.cdr.car; } +/*** META ((export #t) + (peephole (postfix ".car.cdr.cdr.car"))) +*/ +function sc_caddar(p) { return p.car.cdr.cdr.car; } +/*** META ((export #t) + (peephole (postfix ".cdr.car.cdr.car"))) +*/ +function sc_cadadr(p) { return p.cdr.car.cdr.car; } +/*** META ((export #t) + (peephole (postfix ".cdr.cdr.cdr.car"))) +*/ +function sc_cadddr(p) { return p.cdr.cdr.cdr.car; } +/*** META ((export #t) + (peephole (postfix ".car.car.cdr.cdr"))) +*/ +function sc_cddaar(p) { return p.car.car.cdr.cdr; } +/*** META ((export #t) + (peephole (postfix ".car.cdr.cdr.cdr"))) +*/ +function sc_cdddar(p) { return p.car.cdr.cdr.cdr; } +/*** META ((export #t) + (peephole (postfix ".cdr.car.cdr.cdr"))) +*/ +function sc_cddadr(p) { return p.cdr.car.cdr.cdr; } +/*** META ((export #t) + (peephole (postfix ".cdr.cdr.cdr.cdr"))) +*/ +function sc_cddddr(p) { return p.cdr.cdr.cdr.cdr; } + +/*** META ((export #t)) */ +function sc_lastPair(l) { + if (!sc_isPair(l)) sc_error("sc_lastPair: pair expected"); + var res = l; + var cdr = l.cdr; + while (sc_isPair(cdr)) { + res = cdr; + cdr = res.cdr; + } + return res; +} + +/*** META ((export #t) + (type bool) + (peephole (postfix " === null"))) +*/ +function sc_isNull(o) { + return (o === null); +} + +/*** META ((export #t) + (type bool)) +*/ +function sc_isList(o) { + var rabbit; + var turtle; + + var rabbit = o; + var turtle = o; + while (true) { + if (rabbit === null || + (rabbit instanceof sc_Pair && rabbit.cdr === null)) + return true; // end of list + else if ((rabbit instanceof sc_Pair) && + (rabbit.cdr instanceof sc_Pair)) { + rabbit = rabbit.cdr.cdr; + turtle = turtle.cdr; + if (rabbit === turtle) return false; // cycle + } else + return false; // not pair + } +} + +/*** META ((export #t)) */ +function sc_list() { + var res = null; + var a = arguments; + for (var i = a.length-1; i >= 0; i--) + res = new sc_Pair(a[i], res); + return res; +} + +/*** META ((export #t)) */ +function sc_iota(num, init) { + var res = null; + if (!init) init = 0; + for (var i = num - 1; i >= 0; i--) + res = new sc_Pair(i + init, res); + return res; +} + +/*** META ((export #t)) */ +function sc_makeList(nbEls, fill) { + var res = null; + for (var i = 0; i < nbEls; i++) + res = new sc_Pair(fill, res); + return res; +} + +/*** META ((export #t)) */ +function sc_length(l) { + var res = 0; + while (l !== null) { + res++; + l = l.cdr; + } + return res; +} + +/*** META ((export #t)) */ +function sc_remq(o, l) { + var dummy = { cdr : null }; + var tail = dummy; + while (l !== null) { + if (l.car !== o) { + tail.cdr = sc_cons(l.car, null); + tail = tail.cdr; + } + l = l.cdr; + } + return dummy.cdr; +} + +/*** META ((export #t)) */ +function sc_remqBang(o, l) { + var dummy = { cdr : null }; + var tail = dummy; + var needsAssig = true; + while (l !== null) { + if (l.car === o) { + needsAssig = true; + } else { + if (needsAssig) { + tail.cdr = l; + needsAssig = false; + } + tail = l; + } + l = l.cdr; + } + tail.cdr = null; + return dummy.cdr; +} + +/*** META ((export #t)) */ +function sc_delete(o, l) { + var dummy = { cdr : null }; + var tail = dummy; + while (l !== null) { + if (!sc_isEqual(l.car, o)) { + tail.cdr = sc_cons(l.car, null); + tail = tail.cdr; + } + l = l.cdr; + } + return dummy.cdr; +} + +/*** META ((export #t)) */ +function sc_deleteBang(o, l) { + var dummy = { cdr : null }; + var tail = dummy; + var needsAssig = true; + while (l !== null) { + if (sc_isEqual(l.car, o)) { + needsAssig = true; + } else { + if (needsAssig) { + tail.cdr = l; + needsAssig = false; + } + tail = l; + } + l = l.cdr; + } + tail.cdr = null; + return dummy.cdr; +} + +function sc_reverseAppendBang(l1, l2) { + var res = l2; + while (l1 !== null) { + var tmp = res; + res = l1; + l1 = l1.cdr; + res.cdr = tmp; + } + return res; +} + +function sc_dualAppend(l1, l2) { + if (l1 === null) return l2; + if (l2 === null) return l1; + var rev = sc_reverse(l1); + return sc_reverseAppendBang(rev, l2); +} + +/*** META ((export #t)) */ +function sc_append() { + if (arguments.length === 0) + return null; + var res = arguments[arguments.length - 1]; + for (var i = arguments.length - 2; i >= 0; i--) + res = sc_dualAppend(arguments[i], res); + return res; +} + +function sc_dualAppendBang(l1, l2) { + if (l1 === null) return l2; + if (l2 === null) return l1; + var tmp = l1; + while (tmp.cdr !== null) tmp=tmp.cdr; + tmp.cdr = l2; + return l1; +} + +/*** META ((export #t)) */ +function sc_appendBang() { + var res = null; + for (var i = 0; i < arguments.length; i++) + res = sc_dualAppendBang(res, arguments[i]); + return res; +} + +/*** META ((export #t)) */ +function sc_reverse(l1) { + var res = null; + while (l1 !== null) { + res = sc_cons(l1.car, res); + l1 = l1.cdr; + } + return res; +} + +/*** META ((export #t)) */ +function sc_reverseBang(l) { + return sc_reverseAppendBang(l, null); +} + +/*** META ((export #t)) */ +function sc_listTail(l, k) { + var res = l; + for (var i = 0; i < k; i++) { + res = res.cdr; + } + return res; +} + +/*** META ((export #t)) */ +function sc_listRef(l, k) { + return sc_listTail(l, k).car; +} + +/* // unoptimized generic versions +function sc_memX(o, l, comp) { + while (l != null) { + if (comp(l.car, o)) + return l; + l = l.cdr; + } + return false; +} +function sc_memq(o, l) { return sc_memX(o, l, sc_isEq); } +function sc_memv(o, l) { return sc_memX(o, l, sc_isEqv); } +function sc_member(o, l) { return sc_memX(o, l, sc_isEqual); } +*/ + +/* optimized versions */ +/*** META ((export #t)) */ +function sc_memq(o, l) { + while (l !== null) { + if (l.car === o) + return l; + l = l.cdr; + } + return false; +} +/*** META ((export #t)) */ +function sc_memv(o, l) { + while (l !== null) { + if (l.car === o) + return l; + l = l.cdr; + } + return false; +} +/*** META ((export #t)) */ +function sc_member(o, l) { + while (l !== null) { + if (sc_isEqual(l.car,o)) + return l; + l = l.cdr; + } + return false; +} + +/* // generic unoptimized versions +function sc_assX(o, al, comp) { + while (al != null) { + if (comp(al.car.car, o)) + return al.car; + al = al.cdr; + } + return false; +} +function sc_assq(o, al) { return sc_assX(o, al, sc_isEq); } +function sc_assv(o, al) { return sc_assX(o, al, sc_isEqv); } +function sc_assoc(o, al) { return sc_assX(o, al, sc_isEqual); } +*/ +// optimized versions +/*** META ((export #t)) */ +function sc_assq(o, al) { + while (al !== null) { + if (al.car.car === o) + return al.car; + al = al.cdr; + } + return false; +} +/*** META ((export #t)) */ +function sc_assv(o, al) { + while (al !== null) { + if (al.car.car === o) + return al.car; + al = al.cdr; + } + return false; +} +/*** META ((export #t)) */ +function sc_assoc(o, al) { + while (al !== null) { + if (sc_isEqual(al.car.car, o)) + return al.car; + al = al.cdr; + } + return false; +} + +/* can be used for mutable strings and characters */ +function sc_isCharStringEqual(cs1, cs2) { return cs1.val === cs2.val; } +function sc_isCharStringLess(cs1, cs2) { return cs1.val < cs2.val; } +function sc_isCharStringGreater(cs1, cs2) { return cs1.val > cs2.val; } +function sc_isCharStringLessEqual(cs1, cs2) { return cs1.val <= cs2.val; } +function sc_isCharStringGreaterEqual(cs1, cs2) { return cs1.val >= cs2.val; } +function sc_isCharStringCIEqual(cs1, cs2) + { return cs1.val.toLowerCase() === cs2.val.toLowerCase(); } +function sc_isCharStringCILess(cs1, cs2) + { return cs1.val.toLowerCase() < cs2.val.toLowerCase(); } +function sc_isCharStringCIGreater(cs1, cs2) + { return cs1.val.toLowerCase() > cs2.val.toLowerCase(); } +function sc_isCharStringCILessEqual(cs1, cs2) + { return cs1.val.toLowerCase() <= cs2.val.toLowerCase(); } +function sc_isCharStringCIGreaterEqual(cs1, cs2) + { return cs1.val.toLowerCase() >= cs2.val.toLowerCase(); } + + + + +function sc_Char(c) { + var cached = sc_Char.lazy[c]; + if (cached) + return cached; + this.val = c; + sc_Char.lazy[c] = this; + // add return, so FF does not complain. + return undefined; +} +sc_Char.lazy = new Object(); +// thanks to Eric +sc_Char.char2readable = { + "\000": "#\\null", + "\007": "#\\bell", + "\010": "#\\backspace", + "\011": "#\\tab", + "\012": "#\\newline", + "\014": "#\\page", + "\015": "#\\return", + "\033": "#\\escape", + "\040": "#\\space", + "\177": "#\\delete", + + /* poeticless names */ + "\001": "#\\soh", + "\002": "#\\stx", + "\003": "#\\etx", + "\004": "#\\eot", + "\005": "#\\enq", + "\006": "#\\ack", + + "\013": "#\\vt", + "\016": "#\\so", + "\017": "#\\si", + + "\020": "#\\dle", + "\021": "#\\dc1", + "\022": "#\\dc2", + "\023": "#\\dc3", + "\024": "#\\dc4", + "\025": "#\\nak", + "\026": "#\\syn", + "\027": "#\\etb", + + "\030": "#\\can", + "\031": "#\\em", + "\032": "#\\sub", + "\033": "#\\esc", + "\034": "#\\fs", + "\035": "#\\gs", + "\036": "#\\rs", + "\037": "#\\us"}; + +sc_Char.readable2char = { + "null": "\000", + "bell": "\007", + "backspace": "\010", + "tab": "\011", + "newline": "\012", + "page": "\014", + "return": "\015", + "escape": "\033", + "space": "\040", + "delete": "\000", + "soh": "\001", + "stx": "\002", + "etx": "\003", + "eot": "\004", + "enq": "\005", + "ack": "\006", + "bel": "\007", + "bs": "\010", + "ht": "\011", + "nl": "\012", + "vt": "\013", + "np": "\014", + "cr": "\015", + "so": "\016", + "si": "\017", + "dle": "\020", + "dc1": "\021", + "dc2": "\022", + "dc3": "\023", + "dc4": "\024", + "nak": "\025", + "syn": "\026", + "etb": "\027", + "can": "\030", + "em": "\031", + "sub": "\032", + "esc": "\033", + "fs": "\034", + "gs": "\035", + "rs": "\036", + "us": "\037", + "sp": "\040", + "del": "\177"}; + +sc_Char.prototype.toString = function() { + return this.val; +}; +// sc_toDisplayString == toString +sc_Char.prototype.sc_toWriteString = function() { + var entry = sc_Char.char2readable[this.val]; + if (entry) + return entry; + else + return "#\\" + this.val; +}; + +/*** META ((export #t) + (type bool) + (peephole (postfix "instanceof sc_Char"))) +*/ +function sc_isChar(c) { + return (c instanceof sc_Char); +} + +/*** META ((export char=?) + (type bool) + (peephole (hole 2 c1 ".val === " c2 ".val"))) +*/ +var sc_isCharEqual = sc_isCharStringEqual; +/*** META ((export char?) + (type bool) + (peephole (hole 2 c1 ".val > " c2 ".val"))) +*/ +var sc_isCharGreater = sc_isCharStringGreater; +/*** META ((export char<=?) + (type bool) + (peephole (hole 2 c1 ".val <= " c2 ".val"))) +*/ +var sc_isCharLessEqual = sc_isCharStringLessEqual; +/*** META ((export char>=?) + (type bool) + (peephole (hole 2 c1 ".val >= " c2 ".val"))) +*/ +var sc_isCharGreaterEqual = sc_isCharStringGreaterEqual; +/*** META ((export char-ci=?) + (type bool) + (peephole (hole 2 c1 ".val.toLowerCase() === " c2 ".val.toLowerCase()"))) +*/ +var sc_isCharCIEqual = sc_isCharStringCIEqual; +/*** META ((export char-ci?) + (type bool) + (peephole (hole 2 c1 ".val.toLowerCase() > " c2 ".val.toLowerCase()"))) +*/ +var sc_isCharCIGreater = sc_isCharStringCIGreater; +/*** META ((export char-ci<=?) + (type bool) + (peephole (hole 2 c1 ".val.toLowerCase() <= " c2 ".val.toLowerCase()"))) +*/ +var sc_isCharCILessEqual = sc_isCharStringCILessEqual; +/*** META ((export char-ci>=?) + (type bool) + (peephole (hole 2 c1 ".val.toLowerCase() >= " c2 ".val.toLowerCase()"))) +*/ +var sc_isCharCIGreaterEqual = sc_isCharStringCIGreaterEqual; + +var SC_NUMBER_CLASS = "0123456789"; +var SC_WHITESPACE_CLASS = ' \r\n\t\f'; +var SC_LOWER_CLASS = 'abcdefghijklmnopqrstuvwxyz'; +var SC_UPPER_CLASS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; + +function sc_isCharOfClass(c, cl) { return (cl.indexOf(c) != -1); } +/*** META ((export #t) + (type bool)) +*/ +function sc_isCharAlphabetic(c) + { return sc_isCharOfClass(c.val, SC_LOWER_CLASS) || + sc_isCharOfClass(c.val, SC_UPPER_CLASS); } +/*** META ((export #t) + (type bool) + (peephole (hole 1 "SC_NUMBER_CLASS.indexOf(" c ".val) != -1"))) +*/ +function sc_isCharNumeric(c) + { return sc_isCharOfClass(c.val, SC_NUMBER_CLASS); } +/*** META ((export #t) + (type bool)) +*/ +function sc_isCharWhitespace(c) { + var tmp = c.val; + return tmp === " " || tmp === "\r" || tmp === "\n" || tmp === "\t" || tmp === "\f"; +} +/*** META ((export #t) + (type bool) + (peephole (hole 1 "SC_UPPER_CLASS.indexOf(" c ".val) != -1"))) +*/ +function sc_isCharUpperCase(c) + { return sc_isCharOfClass(c.val, SC_UPPER_CLASS); } +/*** META ((export #t) + (type bool) + (peephole (hole 1 "SC_LOWER_CLASS.indexOf(" c ".val) != -1"))) +*/ +function sc_isCharLowerCase(c) + { return sc_isCharOfClass(c.val, SC_LOWER_CLASS); } + +/*** META ((export #t) + (peephole (postfix ".val.charCodeAt(0)"))) +*/ +function sc_char2integer(c) + { return c.val.charCodeAt(0); } +/*** META ((export #t) + (peephole (hole 1 "new sc_Char(String.fromCharCode(" n "))"))) +*/ +function sc_integer2char(n) + { return new sc_Char(String.fromCharCode(n)); } + +/*** META ((export #t) + (peephole (hole 1 "new sc_Char(" c ".val.toUpperCase())"))) +*/ +function sc_charUpcase(c) + { return new sc_Char(c.val.toUpperCase()); } +/*** META ((export #t) + (peephole (hole 1 "new sc_Char(" c ".val.toLowerCase())"))) +*/ +function sc_charDowncase(c) + { return new sc_Char(c.val.toLowerCase()); } + +function sc_makeJSStringOfLength(k, c) { + var fill; + if (c === undefined) + fill = " "; + else + fill = c; + var res = ""; + var len = 1; + // every round doubles the size of fill. + while (k >= len) { + if (k & len) + res = res.concat(fill); + fill = fill.concat(fill); + len *= 2; + } + return res; +} + +function sc_makejsString(k, c) { + var fill; + if (c) + fill = c.val; + else + fill = " "; + return sc_makeJSStringOfLength(k, fill); +} + +function sc_jsstring2list(s) { + var res = null; + for (var i = s.length - 1; i >= 0; i--) + res = sc_cons(new sc_Char(s.charAt(i)), res); + return res; +} + +function sc_list2jsstring(l) { + var a = new Array(); + while(l !== null) { + a.push(l.car.val); + l = l.cdr; + } + return "".concat.apply("", a); +} + +var sc_Vector = Array; + +sc_Vector.prototype.sc_toWriteOrDisplayString = function(writeOrDisplay) { + if (this.length === 0) return "#()"; + + var res = "#(" + writeOrDisplay(this[0]); + for (var i = 1; i < this.length; i++) + res += " " + writeOrDisplay(this[i]); + res += ")"; + return res; +}; +sc_Vector.prototype.sc_toDisplayString = function() { + return this.sc_toWriteOrDisplayString(sc_toDisplayString); +}; +sc_Vector.prototype.sc_toWriteString = function() { + return this.sc_toWriteOrDisplayString(sc_toWriteString); +}; + +/*** META ((export vector? array?) + (type bool) + (peephole (postfix " instanceof sc_Vector"))) +*/ +function sc_isVector(v) { + return (v instanceof sc_Vector); +} + +// only applies to vectors +function sc_isVectorEqual(v1, v2, comp) { + if (v1.length !== v2.length) return false; + for (var i = 0; i < v1.length; i++) + if (!comp(v1[i], v2[i])) return false; + return true; +} + +/*** META ((export make-vector make-array)) */ +function sc_makeVector(size, fill) { + var a = new sc_Vector(size); + if (fill !== undefined) + sc_vectorFillBang(a, fill); + return a; +} + +/*** META ((export vector array) + (peephole (vector))) +*/ +function sc_vector() { + var a = new sc_Vector(); + for (var i = 0; i < arguments.length; i++) + a.push(arguments[i]); + return a; +} + +/*** META ((export vector-length array-length) + (peephole (postfix ".length"))) +*/ +function sc_vectorLength(v) { + return v.length; +} + +/*** META ((export vector-ref array-ref) + (peephole (hole 2 v "[" pos "]"))) +*/ +function sc_vectorRef(v, pos) { + return v[pos]; +} + +/*** META ((export vector-set! array-set!) + (peephole (hole 3 v "[" pos "] = " val))) +*/ +function sc_vectorSetBang(v, pos, val) { + v[pos] = val; +} + +/*** META ((export vector->list array->list)) */ +function sc_vector2list(a) { + var res = null; + for (var i = a.length-1; i >= 0; i--) + res = sc_cons(a[i], res); + return res; +} + +/*** META ((export list->vector list->array)) */ +function sc_list2vector(l) { + var a = new sc_Vector(); + while(l !== null) { + a.push(l.car); + l = l.cdr; + } + return a; +} + +/*** META ((export vector-fill! array-fill!)) */ +function sc_vectorFillBang(a, fill) { + for (var i = 0; i < a.length; i++) + a[i] = fill; +} + + +/*** META ((export #t)) */ +function sc_copyVector(a, len) { + if (len <= a.length) + return a.slice(0, len); + else { + var tmp = a.concat(); + tmp.length = len; + return tmp; + } +} + +/*** META ((export #t) + (peephole (hole 3 a ".slice(" start "," end ")"))) +*/ +function sc_vectorCopy(a, start, end) { + return a.slice(start, end); +} + +/*** META ((export #t)) */ +function sc_vectorCopyBang(target, tstart, source, sstart, send) { + if (!sstart) sstart = 0; + if (!send) send = source.length; + + // if target == source we don't want to overwrite not yet copied elements. + if (tstart <= sstart) { + for (var i = tstart, j = sstart; j < send; i++, j++) { + target[i] = source[j]; + } + } else { + var diff = send - sstart; + for (var i = tstart + diff - 1, j = send - 1; + j >= sstart; + i--, j--) { + target[i] = source[j]; + } + } + return target; +} + +/*** META ((export #t) + (type bool) + (peephole (hole 1 "typeof " o " === 'function'"))) +*/ +function sc_isProcedure(o) { + return (typeof o === "function"); +} + +/*** META ((export #t)) */ +function sc_apply(proc) { + var args = new Array(); + // first part of arguments are not in list-form. + for (var i = 1; i < arguments.length - 1; i++) + args.push(arguments[i]); + var l = arguments[arguments.length - 1]; + while (l !== null) { + args.push(l.car); + l = l.cdr; + } + return proc.apply(null, args); +} + +/*** META ((export #t)) */ +function sc_map(proc, l1) { + if (l1 === undefined) + return null; + // else + var nbApplyArgs = arguments.length - 1; + var applyArgs = new Array(nbApplyArgs); + var revres = null; + while (l1 !== null) { + for (var i = 0; i < nbApplyArgs; i++) { + applyArgs[i] = arguments[i + 1].car; + arguments[i + 1] = arguments[i + 1].cdr; + } + revres = sc_cons(proc.apply(null, applyArgs), revres); + } + return sc_reverseAppendBang(revres, null); +} + +/*** META ((export #t)) */ +function sc_mapBang(proc, l1) { + if (l1 === undefined) + return null; + // else + var l1_orig = l1; + var nbApplyArgs = arguments.length - 1; + var applyArgs = new Array(nbApplyArgs); + while (l1 !== null) { + var tmp = l1; + for (var i = 0; i < nbApplyArgs; i++) { + applyArgs[i] = arguments[i + 1].car; + arguments[i + 1] = arguments[i + 1].cdr; + } + tmp.car = proc.apply(null, applyArgs); + } + return l1_orig; +} + +/*** META ((export #t)) */ +function sc_forEach(proc, l1) { + if (l1 === undefined) + return undefined; + // else + var nbApplyArgs = arguments.length - 1; + var applyArgs = new Array(nbApplyArgs); + while (l1 !== null) { + for (var i = 0; i < nbApplyArgs; i++) { + applyArgs[i] = arguments[i + 1].car; + arguments[i + 1] = arguments[i + 1].cdr; + } + proc.apply(null, applyArgs); + } + // add return so FF does not complain. + return undefined; +} + +/*** META ((export #t)) */ +function sc_filter(proc, l1) { + var dummy = { cdr : null }; + var tail = dummy; + while (l1 !== null) { + if (proc(l1.car) !== false) { + tail.cdr = sc_cons(l1.car, null); + tail = tail.cdr; + } + l1 = l1.cdr; + } + return dummy.cdr; +} + +/*** META ((export #t)) */ +function sc_filterBang(proc, l1) { + var head = sc_cons("dummy", l1); + var it = head; + var next = l1; + while (next !== null) { + if (proc(next.car) !== false) { + it.cdr = next + it = next; + } + next = next.cdr; + } + it.cdr = null; + return head.cdr; +} + +function sc_filterMap1(proc, l1) { + var revres = null; + while (l1 !== null) { + var tmp = proc(l1.car) + if (tmp !== false) revres = sc_cons(tmp, revres); + l1 = l1.cdr; + } + return sc_reverseAppendBang(revres, null); +} +function sc_filterMap2(proc, l1, l2) { + var revres = null; + while (l1 !== null) { + var tmp = proc(l1.car, l2.car); + if(tmp !== false) revres = sc_cons(tmp, revres); + l1 = l1.cdr; + l2 = l2.cdr + } + return sc_reverseAppendBang(revres, null); +} + +/*** META ((export #t)) */ +function sc_filterMap(proc, l1, l2, l3) { + if (l2 === undefined) + return sc_filterMap1(proc, l1); + else if (l3 === undefined) + return sc_filterMap2(proc, l1, l2); + // else + var nbApplyArgs = arguments.length - 1; + var applyArgs = new Array(nbApplyArgs); + var revres = null; + while (l1 !== null) { + for (var i = 0; i < nbApplyArgs; i++) { + applyArgs[i] = arguments[i + 1].car; + arguments[i + 1] = arguments[i + 1].cdr; + } + var tmp = proc.apply(null, applyArgs); + if(tmp !== false) revres = sc_cons(tmp, revres); + } + return sc_reverseAppendBang(revres, null); +} + +/*** META ((export #t)) */ +function sc_any(proc, l) { + var revres = null; + while (l !== null) { + var tmp = proc(l.car); + if(tmp !== false) return tmp; + l = l.cdr; + } + return false; +} + +/*** META ((export any?) + (peephole (hole 2 "sc_any(" proc "," l ") !== false"))) +*/ +function sc_anyPred(proc, l) { + return sc_any(proc, l)!== false; +} + +/*** META ((export #t)) */ +function sc_every(proc, l) { + var revres = null; + var tmp = true; + while (l !== null) { + tmp = proc(l.car); + if (tmp === false) return false; + l = l.cdr; + } + return tmp; +} + +/*** META ((export every?) + (peephole (hole 2 "sc_every(" proc "," l ") !== false"))) +*/ +function sc_everyPred(proc, l) { + var tmp = sc_every(proc, l); + if (tmp !== false) return true; + return false; +} + +/*** META ((export #t) + (peephole (postfix "()"))) +*/ +function sc_force(o) { + return o(); +} + +/*** META ((export #t)) */ +function sc_makePromise(proc) { + var isResultReady = false; + var result = undefined; + return function() { + if (!isResultReady) { + var tmp = proc(); + if (!isResultReady) { + isResultReady = true; + result = tmp; + } + } + return result; + }; +} + +function sc_Values(values) { + this.values = values; +} + +/*** META ((export #t) + (peephole (values))) +*/ +function sc_values() { + if (arguments.length === 1) + return arguments[0]; + else + return new sc_Values(arguments); +} + +/*** META ((export #t)) */ +function sc_callWithValues(producer, consumer) { + var produced = producer(); + if (produced instanceof sc_Values) + return consumer.apply(null, produced.values); + else + return consumer(produced); +} + +/*** META ((export #t)) */ +function sc_dynamicWind(before, thunk, after) { + before(); + try { + var res = thunk(); + return res; + } finally { + after(); + } +} + + +// TODO: eval/scheme-report-environment/null-environment/interaction-environment + +// LIMITATION: 'load' doesn't exist without files. +// LIMITATION: transcript-on/transcript-off doesn't exist without files. + + +function sc_Struct(name) { + this.name = name; +} +sc_Struct.prototype.sc_toDisplayString = function() { + return "#"; +}; +sc_Struct.prototype.sc_toWriteString = sc_Struct.prototype.sc_toDisplayString; + +/*** META ((export #t) + (peephole (hole 1 "new sc_Struct(" name ")"))) +*/ +function sc_makeStruct(name) { + return new sc_Struct(name); +} + +/*** META ((export #t) + (type bool) + (peephole (postfix " instanceof sc_Struct"))) +*/ +function sc_isStruct(o) { + return (o instanceof sc_Struct); +} + +/*** META ((export #t) + (type bool) + (peephole (hole 2 "(" 1 " instanceof sc_Struct) && ( " 1 ".name === " 0 ")"))) +*/ +function sc_isStructNamed(name, s) { + return ((s instanceof sc_Struct) && (s.name === name)); +} + +/*** META ((export struct-field) + (peephole (hole 3 0 "[" 2 "]"))) +*/ +function sc_getStructField(s, name, field) { + return s[field]; +} + +/*** META ((export struct-field-set!) + (peephole (hole 4 0 "[" 2 "] = " 3))) +*/ +function sc_setStructFieldBang(s, name, field, val) { + s[field] = val; +} + +/*** META ((export #t) + (peephole (prefix "~"))) +*/ +function sc_bitNot(x) { + return ~x; +} + +/*** META ((export #t) + (peephole (infix 2 2 "&"))) +*/ +function sc_bitAnd(x, y) { + return x & y; +} + +/*** META ((export #t) + (peephole (infix 2 2 "|"))) +*/ +function sc_bitOr(x, y) { + return x | y; +} + +/*** META ((export #t) + (peephole (infix 2 2 "^"))) +*/ +function sc_bitXor(x, y) { + return x ^ y; +} + +/*** META ((export #t) + (peephole (infix 2 2 "<<"))) +*/ +function sc_bitLsh(x, y) { + return x << y; +} + +/*** META ((export #t) + (peephole (infix 2 2 ">>"))) +*/ +function sc_bitRsh(x, y) { + return x >> y; +} + +/*** META ((export #t) + (peephole (infix 2 2 ">>>"))) +*/ +function sc_bitUrsh(x, y) { + return x >>> y; +} + +/*** META ((export js-field js-property) + (peephole (hole 2 o "[" field "]"))) +*/ +function sc_jsField(o, field) { + return o[field]; +} + +/*** META ((export js-field-set! js-property-set!) + (peephole (hole 3 o "[" field "] = " val))) +*/ +function sc_setJsFieldBang(o, field, val) { + return o[field] = val; +} + +/*** META ((export js-field-delete! js-property-delete!) + (peephole (hole 2 "delete" o "[" field "]"))) +*/ +function sc_deleteJsFieldBang(o, field) { + delete o[field]; +} + +/*** META ((export #t) + (peephole (jsCall))) +*/ +function sc_jsCall(o, fun) { + var args = new Array(); + for (var i = 2; i < arguments.length; i++) + args[i-2] = arguments[i]; + return fun.apply(o, args); +} + +/*** META ((export #t) + (peephole (jsMethodCall))) +*/ +function sc_jsMethodCall(o, field) { + var args = new Array(); + for (var i = 2; i < arguments.length; i++) + args[i-2] = arguments[i]; + return o[field].apply(o, args); +} + +/*** META ((export new js-new) + (peephole (jsNew))) +*/ +function sc_jsNew(c) { + var evalStr = "new c("; + evalStr +=arguments.length > 1? "arguments[1]": ""; + for (var i = 2; i < arguments.length; i++) + evalStr += ", arguments[" + i + "]"; + evalStr +=")"; + return eval(evalStr); +} + +// ======================== RegExp ==================== +/*** META ((export #t)) */ +function sc_pregexp(re) { + return new RegExp(sc_string2jsstring(re)); +} + +/*** META ((export #t)) */ +function sc_pregexpMatch(re, s) { + var reg = (re instanceof RegExp) ? re : sc_pregexp(re); + var tmp = reg.exec(sc_string2jsstring(s)); + + if (tmp == null) return false; + + var res = null; + for (var i = tmp.length-1; i >= 0; i--) { + if (tmp[i] !== null) { + res = sc_cons(sc_jsstring2string(tmp[i]), res); + } else { + res = sc_cons(false, res); + } + } + return res; +} + +/*** META ((export #t)) */ +function sc_pregexpReplace(re, s1, s2) { + var reg; + var jss1 = sc_string2jsstring(s1); + var jss2 = sc_string2jsstring(s2); + + if (re instanceof RegExp) { + if (re.global) + reg = re; + else + reg = new RegExp(re.source); + } else { + reg = new RegExp(sc_string2jsstring(re)); + } + + return jss1.replace(reg, jss2); +} + +/*** META ((export pregexp-replace*)) */ +function sc_pregexpReplaceAll(re, s1, s2) { + var reg; + var jss1 = sc_string2jsstring(s1); + var jss2 = sc_string2jsstring(s2); + + if (re instanceof RegExp) { + if (re.global) + reg = re; + else + reg = new RegExp(re.source, "g"); + } else { + reg = new RegExp(sc_string2jsstring(re), "g"); + } + + return jss1.replace(reg, jss2); +} + +/*** META ((export #t)) */ +function sc_pregexpSplit(re, s) { + var reg = ((re instanceof RegExp) ? + re : + new RegExp(sc_string2jsstring(re))); + var jss = sc_string2jsstring(s); + var tmp = jss.split(reg); + + if (tmp == null) return false; + + return sc_vector2list(tmp); +} + + +/* =========================================================================== */ +/* Other library stuff */ +/* =========================================================================== */ + +/*** META ((export #t) + (peephole (hole 1 "Math.floor(Math.random()*" 'n ")"))) +*/ +function sc_random(n) { + return Math.floor(Math.random()*n); +} + +/*** META ((export current-date) + (peephole (hole 0 "new Date()"))) +*/ +function sc_currentDate() { + return new Date(); +} + +function sc_Hashtable() { +} +sc_Hashtable.prototype.toString = function() { + return "#{%hashtable}"; +}; +// sc_toWriteString == sc_toDisplayString == toString + +function sc_HashtableElement(key, val) { + this.key = key; + this.val = val; +} + +/*** META ((export #t) + (peephole (hole 0 "new sc_Hashtable()"))) +*/ +function sc_makeHashtable() { + return new sc_Hashtable(); +} + +/*** META ((export #t)) */ +function sc_hashtablePutBang(ht, key, val) { + var hash = sc_hash(key); + ht[hash] = new sc_HashtableElement(key, val); +} + +/*** META ((export #t)) */ +function sc_hashtableGet(ht, key) { + var hash = sc_hash(key); + if (hash in ht) + return ht[hash].val; + else + return false; +} + +/*** META ((export #t)) */ +function sc_hashtableForEach(ht, f) { + for (var v in ht) { + if (ht[v] instanceof sc_HashtableElement) + f(ht[v].key, ht[v].val); + } +} + +/*** META ((export hashtable-contains?) + (peephole (hole 2 "sc_hash(" 1 ") in " 0))) +*/ +function sc_hashtableContains(ht, key) { + var hash = sc_hash(key); + if (hash in ht) + return true; + else + return false; +} + +var SC_HASH_COUNTER = 0; + +function sc_hash(o) { + if (o === null) + return "null"; + else if (o === undefined) + return "undefined"; + else if (o === true) + return "true"; + else if (o === false) + return "false"; + else if (typeof o === "number") + return "num-" + o; + else if (typeof o === "string") + return "jsstr-" + o; + else if (o.sc_getHash) + return o.sc_getHash(); + else + return sc_counterHash.call(o); +} +function sc_counterHash() { + if (!this.sc_hash) { + this.sc_hash = "hash-" + SC_HASH_COUNTER; + SC_HASH_COUNTER++; + } + return this.sc_hash; +} + +function sc_Trampoline(args, maxTailCalls) { + this['__trampoline return__'] = true; + this.args = args; + this.MAX_TAIL_CALLs = maxTailCalls; +} +// TODO: call/cc stuff +sc_Trampoline.prototype.restart = function() { + var o = this; + while (true) { + // set both globals. + SC_TAIL_OBJECT.calls = o.MAX_TAIL_CALLs-1; + var fun = o.args.callee; + var res = fun.apply(SC_TAIL_OBJECT, o.args); + if (res instanceof sc_Trampoline) + o = res; + else + return res; + } +} + +/*** META ((export bind-exit-lambda)) */ +function sc_bindExitLambda(proc) { + var escape_obj = new sc_BindExitException(); + var escape = function(res) { + escape_obj.res = res; + throw escape_obj; + }; + try { + return proc(escape); + } catch(e) { + if (e === escape_obj) { + return e.res; + } + throw e; + } +} +function sc_BindExitException() { + this._internalException = true; +} + +var SC_SCM2JS_GLOBALS = new Object(); + +// default tail-call depth. +// normally the program should set it again. but just in case... +var SC_TAIL_OBJECT = new Object(); +SC_SCM2JS_GLOBALS.TAIL_OBJECT = SC_TAIL_OBJECT; +// ======================== I/O ======================= + +/*------------------------------------------------------------------*/ + +function sc_EOF() { +} +var SC_EOF_OBJECT = new sc_EOF(); + +function sc_Port() { +} + +/* --------------- Input ports -------------------------------------*/ + +function sc_InputPort() { +} +sc_InputPort.prototype = new sc_Port(); + +sc_InputPort.prototype.peekChar = function() { + if (!("peeked" in this)) + this.peeked = this.getNextChar(); + return this.peeked; +} +sc_InputPort.prototype.readChar = function() { + var tmp = this.peekChar(); + delete this.peeked; + return tmp; +} +sc_InputPort.prototype.isCharReady = function() { + return true; +} +sc_InputPort.prototype.close = function() { + // do nothing +} + +/* .............. String port ..........................*/ +function sc_ErrorInputPort() { +}; +sc_ErrorInputPort.prototype = new sc_InputPort(); +sc_ErrorInputPort.prototype.getNextChar = function() { + throw "can't read from error-port."; +}; +sc_ErrorInputPort.prototype.isCharReady = function() { + return false; +}; + + +/* .............. String port ..........................*/ + +function sc_StringInputPort(jsStr) { + // we are going to do some charAts on the str. + // instead of recreating all the time a String-object, we + // create one in the beginning. (not sure, if this is really an optim) + this.str = new String(jsStr); + this.pos = 0; +} +sc_StringInputPort.prototype = new sc_InputPort(); +sc_StringInputPort.prototype.getNextChar = function() { + if (this.pos >= this.str.length) + return SC_EOF_OBJECT; + return this.str.charAt(this.pos++); +}; + +/* ------------- Read and other lib-funs -------------------------------*/ +function sc_Token(type, val, pos) { + this.type = type; + this.val = val; + this.pos = pos; +} +sc_Token.EOF = 0/*EOF*/; +sc_Token.OPEN_PAR = 1/*OPEN_PAR*/; +sc_Token.CLOSE_PAR = 2/*CLOSE_PAR*/; +sc_Token.OPEN_BRACE = 3/*OPEN_BRACE*/; +sc_Token.CLOSE_BRACE = 4/*CLOSE_BRACE*/; +sc_Token.OPEN_BRACKET = 5/*OPEN_BRACKET*/; +sc_Token.CLOSE_BRACKET = 6/*CLOSE_BRACKET*/; +sc_Token.WHITESPACE = 7/*WHITESPACE*/; +sc_Token.QUOTE = 8/*QUOTE*/; +sc_Token.ID = 9/*ID*/; +sc_Token.DOT = 10/*DOT*/; +sc_Token.STRING = 11/*STRING*/; +sc_Token.NUMBER = 12/*NUMBER*/; +sc_Token.ERROR = 13/*ERROR*/; +sc_Token.VECTOR_BEGIN = 14/*VECTOR_BEGIN*/; +sc_Token.TRUE = 15/*TRUE*/; +sc_Token.FALSE = 16/*FALSE*/; +sc_Token.UNSPECIFIED = 17/*UNSPECIFIED*/; +sc_Token.REFERENCE = 18/*REFERENCE*/; +sc_Token.STORE = 19/*STORE*/; +sc_Token.CHAR = 20/*CHAR*/; + +var SC_ID_CLASS = SC_LOWER_CLASS + SC_UPPER_CLASS + "!$%*+-./:<=>?@^_~"; +function sc_Tokenizer(port) { + this.port = port; +} +sc_Tokenizer.prototype.peekToken = function() { + if (this.peeked) + return this.peeked; + var newToken = this.nextToken(); + this.peeked = newToken; + return newToken; +}; +sc_Tokenizer.prototype.readToken = function() { + var tmp = this.peekToken(); + delete this.peeked; + return tmp; +}; +sc_Tokenizer.prototype.nextToken = function() { + var port = this.port; + + function isNumberChar(c) { + return (c >= "0" && c <= "9"); + }; + function isIdOrNumberChar(c) { + return SC_ID_CLASS.indexOf(c) != -1 || // ID-char + (c >= "0" && c <= "9"); + } + function isWhitespace(c) { + return c === " " || c === "\r" || c === "\n" || c === "\t" || c === "\f"; + }; + function isWhitespaceOrEOF(c) { + return isWhitespace(c) || c === SC_EOF_OBJECT; + }; + + function readString() { + res = ""; + while (true) { + var c = port.readChar(); + switch (c) { + case '"': + return new sc_Token(11/*STRING*/, res); + case "\\": + var tmp = port.readChar(); + switch (tmp) { + case '0': res += "\0"; break; + case 'a': res += "\a"; break; + case 'b': res += "\b"; break; + case 'f': res += "\f"; break; + case 'n': res += "\n"; break; + case 'r': res += "\r"; break; + case 't': res += "\t"; break; + case 'v': res += "\v"; break; + case '"': res += '"'; break; + case '\\': res += '\\'; break; + case 'x': + /* hexa-number */ + var nb = 0; + while (true) { + var hexC = port.peekChar(); + if (hexC >= '0' && hexC <= '9') { + port.readChar(); + nb = nb * 16 + hexC.charCodeAt(0) - '0'.charCodeAt(0); + } else if (hexC >= 'a' && hexC <= 'f') { + port.readChar(); + nb = nb * 16 + hexC.charCodeAt(0) - 'a'.charCodeAt(0); + } else if (hexC >= 'A' && hexC <= 'F') { + port.readChar(); + nb = nb * 16 + hexC.charCodeAt(0) - 'A'.charCodeAt(0); + } else { + // next char isn't part of hex. + res += String.fromCharCode(nb); + break; + } + } + break; + default: + if (tmp === SC_EOF_OBJECT) { + return new sc_Token(13/*ERROR*/, "unclosed string-literal" + res); + } + res += tmp; + } + break; + default: + if (c === SC_EOF_OBJECT) { + return new sc_Token(13/*ERROR*/, "unclosed string-literal" + res); + } + res += c; + } + } + }; + function readIdOrNumber(firstChar) { + var res = firstChar; + while (isIdOrNumberChar(port.peekChar())) + res += port.readChar(); + if (isNaN(res)) + return new sc_Token(9/*ID*/, res); + else + return new sc_Token(12/*NUMBER*/, res - 0); + }; + + function skipWhitespaceAndComments() { + var done = false; + while (!done) { + done = true; + while (isWhitespace(port.peekChar())) + port.readChar(); + if (port.peekChar() === ';') { + port.readChar(); + done = false; + while (true) { + curChar = port.readChar(); + if (curChar === SC_EOF_OBJECT || + curChar === '\n') + break; + } + } + } + }; + + function readDot() { + if (isWhitespace(port.peekChar())) + return new sc_Token(10/*DOT*/); + else + return readIdOrNumber("."); + }; + + function readSharp() { + var c = port.readChar(); + if (isWhitespace(c)) + return new sc_Token(13/*ERROR*/, "bad #-pattern0."); + + // reference + if (isNumberChar(c)) { + var nb = c - 0; + while (isNumberChar(port.peekChar())) + nb = nb*10 + (port.readChar() - 0); + switch (port.readChar()) { + case '#': + return new sc_Token(18/*REFERENCE*/, nb); + case '=': + return new sc_Token(19/*STORE*/, nb); + default: + return new sc_Token(13/*ERROR*/, "bad #-pattern1." + nb); + } + } + + if (c === "(") + return new sc_Token(14/*VECTOR_BEGIN*/); + + if (c === "\\") { // character + var tmp = "" + while (!isWhitespaceOrEOF(port.peekChar())) + tmp += port.readChar(); + switch (tmp.length) { + case 0: // it's escaping a whitespace char: + if (sc_isEOFObject(port.peekChar)) + return new sc_Token(13/*ERROR*/, "bad #-pattern2."); + else + return new sc_Token(20/*CHAR*/, port.readChar()); + case 1: + return new sc_Token(20/*CHAR*/, tmp); + default: + var entry = sc_Char.readable2char[tmp.toLowerCase()]; + if (entry) + return new sc_Token(20/*CHAR*/, entry); + else + return new sc_Token(13/*ERROR*/, "unknown character description: #\\" + tmp); + } + } + + // some constants (#t, #f, #unspecified) + var res; + var needing; + switch (c) { + case 't': res = new sc_Token(15/*TRUE*/, true); needing = ""; break; + case 'f': res = new sc_Token(16/*FALSE*/, false); needing = ""; break; + case 'u': res = new sc_Token(17/*UNSPECIFIED*/, undefined); needing = "nspecified"; break; + default: + return new sc_Token(13/*ERROR*/, "bad #-pattern3: " + c); + } + while(true) { + c = port.peekChar(); + if ((isWhitespaceOrEOF(c) || c === ')') && + needing == "") + return res; + else if (isWhitespace(c) || needing == "") + return new sc_Token(13/*ERROR*/, "bad #-pattern4 " + c + " " + needing); + else if (needing.charAt(0) == c) { + port.readChar(); // consume + needing = needing.slice(1); + } else + return new sc_Token(13/*ERROR*/, "bad #-pattern5"); + } + + }; + + skipWhitespaceAndComments(); + var curChar = port.readChar(); + if (curChar === SC_EOF_OBJECT) + return new sc_Token(0/*EOF*/, curChar); + switch (curChar) + { + case " ": + case "\n": + case "\t": + return readWhitespace(); + case "(": + return new sc_Token(1/*OPEN_PAR*/); + case ")": + return new sc_Token(2/*CLOSE_PAR*/); + case "{": + return new sc_Token(3/*OPEN_BRACE*/); + case "}": + return new sc_Token(4/*CLOSE_BRACE*/); + case "[": + return new sc_Token(5/*OPEN_BRACKET*/); + case "]": + return new sc_Token(6/*CLOSE_BRACKET*/); + case "'": + return new sc_Token(8/*QUOTE*/); + case "#": + return readSharp(); + case ".": + return readDot(); + case '"': + return readString(); + default: + if (isIdOrNumberChar(curChar)) + return readIdOrNumber(curChar); + throw "unexpected character: " + curChar; + } +}; + +function sc_Reader(tokenizer) { + this.tokenizer = tokenizer; + this.backref = new Array(); +} +sc_Reader.prototype.read = function() { + function readList(listBeginType) { + function matchesPeer(open, close) { + return open === 1/*OPEN_PAR*/ && close === 2/*CLOSE_PAR*/ + || open === 3/*OPEN_BRACE*/ && close === 4/*CLOSE_BRACE*/ + || open === 5/*OPEN_BRACKET*/ && close === 6/*CLOSE_BRACKET*/; + }; + var res = null; + + while (true) { + var token = tokenizer.peekToken(); + + switch (token.type) { + case 2/*CLOSE_PAR*/: + case 4/*CLOSE_BRACE*/: + case 6/*CLOSE_BRACKET*/: + if (matchesPeer(listBeginType, token.type)) { + tokenizer.readToken(); // consume token + return sc_reverseBang(res); + } else + throw "closing par doesn't match: " + listBeginType + + " " + listEndType; + + case 0/*EOF*/: + throw "unexpected end of file"; + + case 10/*DOT*/: + tokenizer.readToken(); // consume token + var cdr = this.read(); + var par = tokenizer.readToken(); + if (!matchesPeer(listBeginType, par.type)) + throw "closing par doesn't match: " + listBeginType + + " " + par.type; + else + return sc_reverseAppendBang(res, cdr); + + + default: + res = sc_cons(this.read(), res); + } + } + }; + function readQuote() { + return sc_cons("quote", sc_cons(this.read(), null)); + }; + function readVector() { + // opening-parenthesis is already consumed + var a = new Array(); + while (true) { + var token = tokenizer.peekToken(); + switch (token.type) { + case 2/*CLOSE_PAR*/: + tokenizer.readToken(); + return a; + + default: + a.push(this.read()); + } + } + }; + + function storeRefence(nb) { + var tmp = this.read(); + this.backref[nb] = tmp; + return tmp; + }; + + function readReference(nb) { + if (nb in this.backref) + return this.backref[nb]; + else + throw "bad reference: " + nb; + }; + + var tokenizer = this.tokenizer; + + var token = tokenizer.readToken(); + + // handle error + if (token.type === 13/*ERROR*/) + throw token.val; + + switch (token.type) { + case 1/*OPEN_PAR*/: + case 3/*OPEN_BRACE*/: + case 5/*OPEN_BRACKET*/: + return readList.call(this, token.type); + case 8/*QUOTE*/: + return readQuote.call(this); + case 11/*STRING*/: + return sc_jsstring2string(token.val); + case 20/*CHAR*/: + return new sc_Char(token.val); + case 14/*VECTOR_BEGIN*/: + return readVector.call(this); + case 18/*REFERENCE*/: + return readReference.call(this, token.val); + case 19/*STORE*/: + return storeRefence.call(this, token.val); + case 9/*ID*/: + return sc_jsstring2symbol(token.val); + case 0/*EOF*/: + case 12/*NUMBER*/: + case 15/*TRUE*/: + case 16/*FALSE*/: + case 17/*UNSPECIFIED*/: + return token.val; + default: + throw "unexpected token " + token.type + " " + token.val; + } +}; + +/*** META ((export #t)) */ +function sc_read(port) { + if (port === undefined) // we assume the port hasn't been given. + port = SC_DEFAULT_IN; // THREAD: shared var... + var reader = new sc_Reader(new sc_Tokenizer(port)); + return reader.read(); +} +/*** META ((export #t)) */ +function sc_readChar(port) { + if (port === undefined) // we assume the port hasn't been given. + port = SC_DEFAULT_IN; // THREAD: shared var... + var t = port.readChar(); + return t === SC_EOF_OBJECT? t: new sc_Char(t); +} +/*** META ((export #t)) */ +function sc_peekChar(port) { + if (port === undefined) // we assume the port hasn't been given. + port = SC_DEFAULT_IN; // THREAD: shared var... + var t = port.peekChar(); + return t === SC_EOF_OBJECT? t: new sc_Char(t); +} +/*** META ((export #t) + (type bool)) +*/ +function sc_isCharReady(port) { + if (port === undefined) // we assume the port hasn't been given. + port = SC_DEFAULT_IN; // THREAD: shared var... + return port.isCharReady(); +} +/*** META ((export #t) + (peephole (postfix ".close()"))) +*/ +function sc_closeInputPort(p) { + return p.close(); +} + +/*** META ((export #t) + (type bool) + (peephole (postfix " instanceof sc_InputPort"))) +*/ +function sc_isInputPort(o) { + return (o instanceof sc_InputPort); +} + +/*** META ((export eof-object?) + (type bool) + (peephole (postfix " === SC_EOF_OBJECT"))) +*/ +function sc_isEOFObject(o) { + return o === SC_EOF_OBJECT; +} + +/*** META ((export #t) + (peephole (hole 0 "SC_DEFAULT_IN"))) +*/ +function sc_currentInputPort() { + return SC_DEFAULT_IN; +} + +/* ------------ file operations are not supported -----------*/ +/*** META ((export #t)) */ +function sc_callWithInputFile(s, proc) { + throw "can't open " + s; +} + +/*** META ((export #t)) */ +function sc_callWithOutputFile(s, proc) { + throw "can't open " + s; +} + +/*** META ((export #t)) */ +function sc_withInputFromFile(s, thunk) { + throw "can't open " + s; +} + +/*** META ((export #t)) */ +function sc_withOutputToFile(s, thunk) { + throw "can't open " + s; +} + +/*** META ((export #t)) */ +function sc_openInputFile(s) { + throw "can't open " + s; +} + +/*** META ((export #t)) */ +function sc_openOutputFile(s) { + throw "can't open " + s; +} + +/* ----------------------------------------------------------------------------*/ +/*** META ((export #t)) */ +function sc_basename(p) { + var i = p.lastIndexOf('/'); + + if(i >= 0) + return p.substring(i + 1, p.length); + else + return ''; +} + +/*** META ((export #t)) */ +function sc_dirname(p) { + var i = p.lastIndexOf('/'); + + if(i >= 0) + return p.substring(0, i); + else + return ''; +} + +/* ----------------------------------------------------------------------------*/ + +/*** META ((export #t)) */ +function sc_withInputFromPort(p, thunk) { + try { + var tmp = SC_DEFAULT_IN; // THREAD: shared var. + SC_DEFAULT_IN = p; + return thunk(); + } finally { + SC_DEFAULT_IN = tmp; + } +} + +/*** META ((export #t)) */ +function sc_withInputFromString(s, thunk) { + return sc_withInputFromPort(new sc_StringInputPort(sc_string2jsstring(s)), thunk); +} + +/*** META ((export #t)) */ +function sc_withOutputToPort(p, thunk) { + try { + var tmp = SC_DEFAULT_OUT; // THREAD: shared var. + SC_DEFAULT_OUT = p; + return thunk(); + } finally { + SC_DEFAULT_OUT = tmp; + } +} + +/*** META ((export #t)) */ +function sc_withOutputToString(thunk) { + var p = new sc_StringOutputPort(); + sc_withOutputToPort(p, thunk); + return p.close(); +} + +/*** META ((export #t)) */ +function sc_withOutputToProcedure(proc, thunk) { + var t = function(s) { proc(sc_jsstring2string(s)); }; + return sc_withOutputToPort(new sc_GenericOutputPort(t), thunk); +} + +/*** META ((export #t) + (peephole (hole 0 "new sc_StringOutputPort()"))) +*/ +function sc_openOutputString() { + return new sc_StringOutputPort(); +} + +/*** META ((export #t)) */ +function sc_openInputString(str) { + return new sc_StringInputPort(sc_string2jsstring(str)); +} + +/* ----------------------------------------------------------------------------*/ + +function sc_OutputPort() { +} +sc_OutputPort.prototype = new sc_Port(); +sc_OutputPort.prototype.appendJSString = function(obj) { + /* do nothing */ +} +sc_OutputPort.prototype.close = function() { + /* do nothing */ +} + +function sc_StringOutputPort() { + this.res = ""; +} +sc_StringOutputPort.prototype = new sc_OutputPort(); +sc_StringOutputPort.prototype.appendJSString = function(s) { + this.res += s; +} +sc_StringOutputPort.prototype.close = function() { + return sc_jsstring2string(this.res); +} + +/*** META ((export #t)) */ +function sc_getOutputString(sp) { + return sc_jsstring2string(sp.res); +} + + +function sc_ErrorOutputPort() { +} +sc_ErrorOutputPort.prototype = new sc_OutputPort(); +sc_ErrorOutputPort.prototype.appendJSString = function(s) { + throw "don't write on ErrorPort!"; +} +sc_ErrorOutputPort.prototype.close = function() { + /* do nothing */ +} + +function sc_GenericOutputPort(appendJSString, close) { + this.appendJSString = appendJSString; + if (close) + this.close = close; +} +sc_GenericOutputPort.prototype = new sc_OutputPort(); + +/*** META ((export #t) + (type bool) + (peephole (postfix " instanceof sc_OutputPort"))) +*/ +function sc_isOutputPort(o) { + return (o instanceof sc_OutputPort); +} + +/*** META ((export #t) + (peephole (postfix ".close()"))) +*/ +function sc_closeOutputPort(p) { + return p.close(); +} + +/* ------------------ write ---------------------------------------------------*/ + +/*** META ((export #t)) */ +function sc_write(o, p) { + if (p === undefined) // we assume not given + p = SC_DEFAULT_OUT; + p.appendJSString(sc_toWriteString(o)); +} + +function sc_toWriteString(o) { + if (o === null) + return "()"; + else if (o === true) + return "#t"; + else if (o === false) + return "#f"; + else if (o === undefined) + return "#unspecified"; + else if (typeof o === 'function') + return "#"; + else if (o.sc_toWriteString) + return o.sc_toWriteString(); + else + return o.toString(); +} + +function sc_escapeWriteString(s) { + var res = ""; + var j = 0; + for (i = 0; i < s.length; i++) { + switch (s.charAt(i)) { + case "\0": res += s.substring(j, i) + "\\0"; j = i + 1; break; + case "\b": res += s.substring(j, i) + "\\b"; j = i + 1; break; + case "\f": res += s.substring(j, i) + "\\f"; j = i + 1; break; + case "\n": res += s.substring(j, i) + "\\n"; j = i + 1; break; + case "\r": res += s.substring(j, i) + "\\r"; j = i + 1; break; + case "\t": res += s.substring(j, i) + "\\t"; j = i + 1; break; + case "\v": res += s.substring(j, i) + "\\v"; j = i + 1; break; + case '"': res += s.substring(j, i) + '\\"'; j = i + 1; break; + case "\\": res += s.substring(j, i) + "\\\\"; j = i + 1; break; + default: + var c = s.charAt(i); + if ("\a" !== "a" && c == "\a") { + res += s.substring(j, i) + "\\a"; j = i + 1; continue; + } + if ("\v" !== "v" && c == "\v") { + res += s.substring(j, i) + "\\v"; j = i + 1; continue; + } + //if (s.charAt(i) < ' ' || s.charCodeAt(i) > 127) { + // CARE: Manuel is this OK with HOP? + if (s.charAt(i) < ' ') { + /* non printable character and special chars */ + res += s.substring(j, i) + "\\x" + s.charCodeAt(i).toString(16); + j = i + 1; + } + // else just let i increase... + } + } + res += s.substring(j, i); + return res; +} + +/* ------------------ display ---------------------------------------------------*/ + +/*** META ((export #t)) */ +function sc_display(o, p) { + if (p === undefined) // we assume not given + p = SC_DEFAULT_OUT; + p.appendJSString(sc_toDisplayString(o)); +} + +function sc_toDisplayString(o) { + if (o === null) + return "()"; + else if (o === true) + return "#t"; + else if (o === false) + return "#f"; + else if (o === undefined) + return "#unspecified"; + else if (typeof o === 'function') + return "#"; + else if (o.sc_toDisplayString) + return o.sc_toDisplayString(); + else + return o.toString(); +} + +/* ------------------ newline ---------------------------------------------------*/ + +/*** META ((export #t)) */ +function sc_newline(p) { + if (p === undefined) // we assume not given + p = SC_DEFAULT_OUT; + p.appendJSString("\n"); +} + +/* ------------------ write-char ---------------------------------------------------*/ + +/*** META ((export #t)) */ +function sc_writeChar(c, p) { + if (p === undefined) // we assume not given + p = SC_DEFAULT_OUT; + p.appendJSString(c.val); +} + +/* ------------------ write-circle ---------------------------------------------------*/ + +/*** META ((export #t)) */ +function sc_writeCircle(o, p) { + if (p === undefined) // we assume not given + p = SC_DEFAULT_OUT; + p.appendJSString(sc_toWriteCircleString(o)); +} + +function sc_toWriteCircleString(o) { + var symb = sc_gensym("writeCircle"); + var nbPointer = new Object(); + nbPointer.nb = 0; + sc_prepWriteCircle(o, symb, nbPointer); + return sc_genToWriteCircleString(o, symb); +} + +function sc_prepWriteCircle(o, symb, nbPointer) { + // TODO sc_Struct + if (o instanceof sc_Pair || + o instanceof sc_Vector) { + if (o[symb] !== undefined) { + // not the first visit. + o[symb]++; + // unless there is already a number, assign one. + if (!o[symb + "nb"]) o[symb + "nb"] = nbPointer.nb++; + return; + } + o[symb] = 0; + if (o instanceof sc_Pair) { + sc_prepWriteCircle(o.car, symb, nbPointer); + sc_prepWriteCircle(o.cdr, symb, nbPointer); + } else { + for (var i = 0; i < o.length; i++) + sc_prepWriteCircle(o[i], symb, nbPointer); + } + } +} + +function sc_genToWriteCircleString(o, symb) { + if (!(o instanceof sc_Pair || + o instanceof sc_Vector)) + return sc_toWriteString(o); + return o.sc_toWriteCircleString(symb); +} +sc_Pair.prototype.sc_toWriteCircleString = function(symb, inList) { + if (this[symb + "use"]) { // use-flag is set. Just use it. + var nb = this[symb + "nb"]; + if (this[symb]-- === 0) { // if we are the last use. remove all fields. + delete this[symb]; + delete this[symb + "nb"]; + delete this[symb + "use"]; + } + if (inList) + return '. #' + nb + '#'; + else + return '#' + nb + '#'; + } + if (this[symb]-- === 0) { // if we are the last use. remove all fields. + delete this[symb]; + delete this[symb + "nb"]; + delete this[symb + "use"]; + } + + var res = ""; + + if (this[symb] !== undefined) { // implies > 0 + this[symb + "use"] = true; + if (inList) + res += '. #' + this[symb + "nb"] + '='; + else + res += '#' + this[symb + "nb"] + '='; + inList = false; + } + + if (!inList) + res += "("; + + // print car + res += sc_genToWriteCircleString(this.car, symb); + + if (sc_isPair(this.cdr)) { + res += " " + this.cdr.sc_toWriteCircleString(symb, true); + } else if (this.cdr !== null) { + res += " . " + sc_genToWriteCircleString(this.cdr, symb); + } + if (!inList) + res += ")"; + return res; +}; +sc_Vector.prototype.sc_toWriteCircleString = function(symb) { + if (this[symb + "use"]) { // use-flag is set. Just use it. + var nb = this[symb + "nb"]; + if (this[symb]-- === 0) { // if we are the last use. remove all fields. + delete this[symb]; + delete this[symb + "nb"]; + delete this[symb + "use"]; + } + return '#' + nb + '#'; + } + if (this[symb]-- === 0) { // if we are the last use. remove all fields. + delete this[symb]; + delete this[symb + "nb"]; + delete this[symb + "use"]; + } + + var res = ""; + if (this[symb] !== undefined) { // implies > 0 + this[symb + "use"] = true; + res += '#' + this[symb + "nb"] + '='; + } + res += "#("; + for (var i = 0; i < this.length; i++) { + res += sc_genToWriteCircleString(this[i], symb); + if (i < this.length - 1) res += " "; + } + res += ")"; + return res; +}; + + +/* ------------------ print ---------------------------------------------------*/ + +/*** META ((export #t)) */ +function sc_print(s) { + if (arguments.length === 1) { + sc_display(s); + sc_newline(); + } + else { + for (var i = 0; i < arguments.length; i++) + sc_display(arguments[i]); + sc_newline(); + } +} + +/* ------------------ format ---------------------------------------------------*/ +/*** META ((export #t)) */ +function sc_format(s, args) { + var len = s.length; + var p = new sc_StringOutputPort(); + var i = 0, j = 1; + + while( i < len ) { + var i2 = s.indexOf("~", i); + + if (i2 == -1) { + p.appendJSString( s.substring( i, len ) ); + return p.close(); + } else { + if (i2 > i) { + if (i2 == (len - 1)) { + p.appendJSString(s.substring(i, len)); + return p.close(); + } else { + p.appendJSString(s.substring(i, i2)); + i = i2; + } + } + + switch(s.charCodeAt(i2 + 1)) { + case 65: + case 97: + // a + sc_display(arguments[j], p); + i += 2; j++; + break; + + case 83: + case 115: + // s + sc_write(arguments[j], p); + i += 2; j++; + break; + + case 86: + case 118: + // v + sc_display(arguments[j], p); + p.appendJSString("\n"); + i += 2; j++; + break; + + case 67: + case 99: + // c + p.appendJSString(String.fromCharCode(arguments[j])); + i += 2; j++; + break; + + case 88: + case 120: + // x + p.appendJSString(arguments[j].toString(6)); + i += 2; j++; + break; + + case 79: + case 111: + // o + p.appendJSString(arguments[j].toString(8)); + i += 2; j++; + break; + + case 66: + case 98: + // b + p.appendJSString(arguments[j].toString(2)); + i += 2; j++; + break; + + case 37: + case 110: + // %, n + p.appendJSString("\n"); + i += 2; break; + + case 114: + // r + p.appendJSString("\r"); + i += 2; break; + + case 126: + // ~ + p.appendJSString("~"); + i += 2; break; + + default: + sc_error( "format: illegal ~" + + String.fromCharCode(s.charCodeAt(i2 + 1)) + + " sequence" ); + return ""; + } + } + } + + return p.close(); +} + +/* ------------------ global ports ---------------------------------------------------*/ + +var SC_DEFAULT_IN = new sc_ErrorInputPort(); +var SC_DEFAULT_OUT = new sc_ErrorOutputPort(); +var SC_ERROR_OUT = new sc_ErrorOutputPort(); + +var sc_SYMBOL_PREFIX = "\u1E9C"; +var sc_KEYWORD_PREFIX = "\u1E9D"; + +/*** META ((export #t) + (peephole (id))) */ +function sc_jsstring2string(s) { + return s; +} + +/*** META ((export #t) + (peephole (prefix "'\\u1E9C' +"))) +*/ +function sc_jsstring2symbol(s) { + return sc_SYMBOL_PREFIX + s; +} + +/*** META ((export #t) + (peephole (id))) +*/ +function sc_string2jsstring(s) { + return s; +} + +/*** META ((export #t) + (peephole (symbol2jsstring_immutable))) +*/ +function sc_symbol2jsstring(s) { + return s.slice(1); +} + +/*** META ((export #t) + (peephole (postfix ".slice(1)"))) +*/ +function sc_keyword2jsstring(k) { + return k.slice(1); +} + +/*** META ((export #t) + (peephole (prefix "'\\u1E9D' +"))) +*/ +function sc_jsstring2keyword(s) { + return sc_KEYWORD_PREFIX + s; +} + +/*** META ((export #t) + (type bool)) +*/ +function sc_isKeyword(s) { + return (typeof s === "string") && + (s.charAt(0) === sc_KEYWORD_PREFIX); +} + + +/*** META ((export #t)) */ +var sc_gensym = function() { + var counter = 1000; + return function(sym) { + counter++; + if (!sym) sym = sc_SYMBOL_PREFIX; + return sym + "s" + counter + "~" + "^sC-GeNsYm "; + }; +}(); + + +/*** META ((export #t) + (type bool)) +*/ +function sc_isEqual(o1, o2) { + return ((o1 === o2) || + (sc_isPair(o1) && sc_isPair(o2) + && sc_isPairEqual(o1, o2, sc_isEqual)) || + (sc_isVector(o1) && sc_isVector(o2) + && sc_isVectorEqual(o1, o2, sc_isEqual))); +} + +/*** META ((export number->symbol integer->symbol)) */ +function sc_number2symbol(x, radix) { + return sc_SYMBOL_PREFIX + sc_number2jsstring(x, radix); +} + +/*** META ((export number->string integer->string)) */ +var sc_number2string = sc_number2jsstring; + +/*** META ((export #t)) */ +function sc_symbol2number(s, radix) { + return sc_jsstring2number(s.slice(1), radix); +} + +/*** META ((export #t)) */ +var sc_string2number = sc_jsstring2number; + +/*** META ((export #t) + (peephole (prefix "+" s))) + ;; peephole will only apply if no radix is given. +*/ +function sc_string2integer(s, radix) { + if (!radix) return +s; + return parseInt(s, radix); +} + +/*** META ((export #t) + (peephole (prefix "+"))) +*/ +function sc_string2real(s) { + return +s; +} + + +/*** META ((export #t) + (type bool)) +*/ +function sc_isSymbol(s) { + return (typeof s === "string") && + (s.charAt(0) === sc_SYMBOL_PREFIX); +} + +/*** META ((export #t) + (peephole (symbol2string_immutable))) +*/ +function sc_symbol2string(s) { + return s.slice(1); +} + +/*** META ((export #t) + (peephole (prefix "'\\u1E9C' +"))) +*/ +function sc_string2symbol(s) { + return sc_SYMBOL_PREFIX + s; +} + +/*** META ((export symbol-append) + (peephole (symbolAppend_immutable))) +*/ +function sc_symbolAppend() { + var res = sc_SYMBOL_PREFIX; + for (var i = 0; i < arguments.length; i++) + res += arguments[i].slice(1); + return res; +} + +/*** META ((export #t) + (peephole (postfix ".val"))) +*/ +function sc_char2string(c) { return c.val; } + +/*** META ((export #t) + (peephole (hole 1 "'\\u1E9C' + " c ".val"))) +*/ +function sc_char2symbol(c) { return sc_SYMBOL_PREFIX + c.val; } + +/*** META ((export #t) + (type bool)) +*/ +function sc_isString(s) { + return (typeof s === "string") && + (s.charAt(0) !== sc_SYMBOL_PREFIX); +} + +/*** META ((export #t)) */ +var sc_makeString = sc_makejsString; + + +/*** META ((export #t)) */ +function sc_string() { + for (var i = 0; i < arguments.length; i++) + arguments[i] = arguments[i].val; + return "".concat.apply("", arguments); +} + +/*** META ((export #t) + (peephole (postfix ".length"))) +*/ +function sc_stringLength(s) { return s.length; } + +/*** META ((export #t)) */ +function sc_stringRef(s, k) { + return new sc_Char(s.charAt(k)); +} + +/* there's no stringSet in the immutable version +function sc_stringSet(s, k, c) +*/ + + +/*** META ((export string=?) + (type bool) + (peephole (hole 2 str1 " === " str2))) +*/ +function sc_isStringEqual(s1, s2) { + return s1 === s2; +} +/*** META ((export string?) + (type bool) + (peephole (hole 2 str1 " > " str2))) +*/ +function sc_isStringGreater(s1, s2) { + return s1 > s2; +} +/*** META ((export string<=?) + (type bool) + (peephole (hole 2 str1 " <= " str2))) +*/ +function sc_isStringLessEqual(s1, s2) { + return s1 <= s2; +} +/*** META ((export string>=?) + (type bool) + (peephole (hole 2 str1 " >= " str2))) +*/ +function sc_isStringGreaterEqual(s1, s2) { + return s1 >= s2; +} +/*** META ((export string-ci=?) + (type bool) + (peephole (hole 2 str1 ".toLowerCase() === " str2 ".toLowerCase()"))) +*/ +function sc_isStringCIEqual(s1, s2) { + return s1.toLowerCase() === s2.toLowerCase(); +} +/*** META ((export string-ci?) + (type bool) + (peephole (hole 2 str1 ".toLowerCase() > " str2 ".toLowerCase()"))) +*/ +function sc_isStringCIGreater(s1, s2) { + return s1.toLowerCase() > s2.toLowerCase(); +} +/*** META ((export string-ci<=?) + (type bool) + (peephole (hole 2 str1 ".toLowerCase() <= " str2 ".toLowerCase()"))) +*/ +function sc_isStringCILessEqual(s1, s2) { + return s1.toLowerCase() <= s2.toLowerCase(); +} +/*** META ((export string-ci>=?) + (type bool) + (peephole (hole 2 str1 ".toLowerCase() >= " str2 ".toLowerCase()"))) +*/ +function sc_isStringCIGreaterEqual(s1, s2) { + return s1.toLowerCase() >= s2.toLowerCase(); +} + +/*** META ((export #t) + (peephole (hole 3 s ".substring(" start ", " end ")"))) +*/ +function sc_substring(s, start, end) { + return s.substring(start, end); +} + +/*** META ((export #t)) +*/ +function sc_isSubstring_at(s1, s2, i) { + return s2 == s1.substring(i, i+ s2.length); +} + +/*** META ((export #t) + (peephole (infix 0 #f "+" "''"))) +*/ +function sc_stringAppend() { + return "".concat.apply("", arguments); +} + +/*** META ((export #t)) */ +var sc_string2list = sc_jsstring2list; + +/*** META ((export #t)) */ +var sc_list2string = sc_list2jsstring; + +/*** META ((export #t) + (peephole (id))) +*/ +function sc_stringCopy(s) { + return s; +} + +/* there's no string-fill in the immutable version +function sc_stringFill(s, c) +*/ + +/*** META ((export #t) + (peephole (postfix ".slice(1)"))) +*/ +function sc_keyword2string(o) { + return o.slice(1); +} + +/*** META ((export #t) + (peephole (prefix "'\\u1E9D' +"))) +*/ +function sc_string2keyword(o) { + return sc_KEYWORD_PREFIX + o; +} + +String.prototype.sc_toDisplayString = function() { + if (this.charAt(0) === sc_SYMBOL_PREFIX) + // TODO: care for symbols with spaces (escape-chars symbols). + return this.slice(1); + else if (this.charAt(0) === sc_KEYWORD_PREFIX) + return ":" + this.slice(1); + else + return this.toString(); +}; + +String.prototype.sc_toWriteString = function() { + if (this.charAt(0) === sc_SYMBOL_PREFIX) + // TODO: care for symbols with spaces (escape-chars symbols). + return this.slice(1); + else if (this.charAt(0) === sc_KEYWORD_PREFIX) + return ":" + this.slice(1); + else + return '"' + sc_escapeWriteString(this) + '"'; +}; +/* Exported Variables */ +var BgL_testzd2boyerzd2; +var BgL_nboyerzd2benchmarkzd2; +var BgL_setupzd2boyerzd2; +/* End Exports */ + +var translate_term_nboyer; +var translate_args_nboyer; +var untranslate_term_nboyer; +var BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer; +var BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer; +var translate_alist_nboyer; +var apply_subst_nboyer; +var apply_subst_lst_nboyer; +var tautologyp_nboyer; +var if_constructor_nboyer; +var rewrite_count_nboyer; +var rewrite_nboyer; +var rewrite_args_nboyer; +var unify_subst_nboyer; +var one_way_unify1_nboyer; +var false_term_nboyer; +var true_term_nboyer; +var trans_of_implies1_nboyer; +var is_term_equal_nboyer; +var is_term_member_nboyer; +var const_nboyer; +var sc_const_3_nboyer; +var sc_const_4_nboyer; +{ + (sc_const_4_nboyer = (new sc_Pair("\u1E9Cimplies",(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cu",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cu",(new sc_Pair("\u1E9Cw",null)))))),null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cw",null)))))),null))))))); + (sc_const_3_nboyer = sc_list((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccompile",(new sc_Pair("\u1E9Cform",null)))),(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair((new sc_Pair("\u1E9Ccodegen",(new sc_Pair((new sc_Pair("\u1E9Coptimize",(new sc_Pair("\u1E9Cform",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ceqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreaterp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clesseqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatereqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cboolean",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ciff",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ceven1",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Codd",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccountps-",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Cpred",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccountps-loop",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Cpred",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfact-",(new sc_Pair("\u1E9Ci",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfact-loop",(new sc_Pair("\u1E9Ci",(new sc_Pair((1),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse-",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Creverse-loop",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdivides",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cassume-true",(new sc_Pair("\u1E9Cvar",(new sc_Pair("\u1E9Calist",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cvar",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))),(new sc_Pair("\u1E9Calist",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cassume-false",(new sc_Pair("\u1E9Cvar",(new sc_Pair("\u1E9Calist",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cvar",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))),(new sc_Pair("\u1E9Calist",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctautology-checker",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ctautologyp",(new sc_Pair((new sc_Pair("\u1E9Cnormalize",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfalsify",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfalsify1",(new sc_Pair((new sc_Pair("\u1E9Cnormalize",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cprime",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))),null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cprime1",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Cx",null)))),null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair("\u1E9Cp",(new sc_Pair("\u1E9Cq",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cq",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair("\u1E9Cp",(new sc_Pair("\u1E9Cq",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cq",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair("\u1E9Cp",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cp",(new sc_Pair("\u1E9Cq",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cq",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))))),(new sc_Pair("\u1E9Cd",(new sc_Pair("\u1E9Ce",null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cd",(new sc_Pair("\u1E9Ce",null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cd",(new sc_Pair("\u1E9Ce",null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Ca",null)))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cb",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cc",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair("\u1E9Ca",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair((new sc_Pair("\u1E9Cplus-fringe",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Ca",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cexec",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cpds",(new sc_Pair("\u1E9Cenvrn",null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cexec",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cexec",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cpds",(new sc_Pair("\u1E9Cenvrn",null)))))))),(new sc_Pair("\u1E9Cenvrn",null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmc-flatten",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Cy",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cb",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cy",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Cintersect",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Ck",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Ck",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Ck",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),(new sc_Pair("\u1E9Ck",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse-loop",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Cy",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse-loop",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccount-list",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Csort-lp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Ccount-list",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccount-list",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cbig-plus1",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair("\u1E9Ci",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cbig-plus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cbase",null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Ci",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cj",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cj",(new sc_Pair((1),null)))))),null)))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cpower-rep",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Ci",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cbig-plus",(new sc_Pair((new sc_Pair("\u1E9Cpower-rep",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cpower-rep",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair("\u1E9Cbase",null)))))))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair("\u1E9Cb",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Ca",null)))),null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cy",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cy",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cw",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cw",(new sc_Pair("\u1E9Cx",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cb",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cy",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cz",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cvalue",(new sc_Pair((new sc_Pair("\u1E9Cnormalize",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cvalue",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnlistp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair((new sc_Pair("\u1E9Cgopher",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csamefringe",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatest-factor",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatest-factor",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((1),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((1),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair((new sc_Pair("\u1E9Cgreatest-factor",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes-list",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Ctimes-list",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ctimes-list",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cprime-list",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cprime-list",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cprime-list",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cw",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cz",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cw",(new sc_Pair((1),null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatereqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((1),null)))))),(new sc_Pair(sc_list("\u1E9Cand", (new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))), (new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cb",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))), (new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Ca",null)))), (new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cb",null)))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Ca",null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cl",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cl",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cl",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csort2",(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cl",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Csort2",(new sc_Pair("\u1E9Cl",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdsort",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Csort2",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx1",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx2",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx3",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx4",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx5",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx6",(new sc_Pair("\u1E9Cx7",null)))))),null)))))),null)))))),null)))))),null)))))),null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((6),(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cx7",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((2),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((2),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair("\u1E9Cy",(new sc_Pair((2),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csigma",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Ci",null)))),null)))))),(new sc_Pair((2),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cy",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cx",null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cz",null)))),null)))))),null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair("\u1E9Ca",null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cy",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Ci",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clast",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Clast",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Ca",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Ccar",(new sc_Pair((new sc_Pair("\u1E9Clast",(new sc_Pair("\u1E9Ca",null)))),null)))),(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair("\u1E9Cb",null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),(new sc_Pair("\u1E9Cz",null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cassignment",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cassignedp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cassignment",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cassignment",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cb",null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccar",(new sc_Pair((new sc_Pair("\u1E9Cgopher",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccar",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair((new sc_Pair("\u1E9Ccdr",(new sc_Pair((new sc_Pair("\u1E9Cgopher",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccdr",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cget",(new sc_Pair("\u1E9Cj",(new sc_Pair((new sc_Pair("\u1E9Cset",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cval",(new sc_Pair("\u1E9Cmem",null)))))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Ceqp",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair("\u1E9Cval",(new sc_Pair((new sc_Pair("\u1E9Cget",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Cmem",null)))))),null)))))))),null)))))))); + (const_nboyer = (new sc_Pair((new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cf",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cc",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cf",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cd",null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cf",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cu",(new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cw",(new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cb",null)))),null)))))),null)))))))),null))))))))))); + BgL_nboyerzd2benchmarkzd2 = function() { + var args = null; + for (var sc_tmp = arguments.length - 1; sc_tmp >= 0; sc_tmp--) { + args = sc_cons(arguments[sc_tmp], args); + } + var n; + return ((n = ((args === null)?(0):(args.car))), (BgL_setupzd2boyerzd2()), (BgL_runzd2benchmarkzd2(("nboyer"+(sc_number2string(n))), (1), function() { + return (BgL_testzd2boyerzd2(n)); + }, function(rewrites) { + if ((sc_isNumber(rewrites))) + switch (n) { + case (0): + return (rewrites===(95024)); + break; + case (1): + return (rewrites===(591777)); + break; + case (2): + return (rewrites===(1813975)); + break; + case (3): + return (rewrites===(5375678)); + break; + case (4): + return (rewrites===(16445406)); + break; + case (5): + return (rewrites===(51507739)); + break; + default: + return true; + break; + } + else + return false; + }))); + }; + BgL_setupzd2boyerzd2 = function() { + return true; + }; + BgL_testzd2boyerzd2 = function() { + return true; + }; + translate_term_nboyer = function(term) { + var lst; + return (!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), ((lst = (term.cdr)), ((lst === null)?null:(new sc_Pair((translate_term_nboyer((lst.car))), (translate_args_nboyer((lst.cdr)))))))))); + }; + translate_args_nboyer = function(lst) { + var sc_lst_5; + var term; + return ((lst === null)?null:(new sc_Pair(((term = (lst.car)), (!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), (translate_args_nboyer((term.cdr))))))), ((sc_lst_5 = (lst.cdr)), ((sc_lst_5 === null)?null:(new sc_Pair((translate_term_nboyer((sc_lst_5.car))), (translate_args_nboyer((sc_lst_5.cdr)))))))))); + }; + untranslate_term_nboyer = function(term) { + var optrOpnd; + var tail1131; + var L1127; + var falseHead1130; + var symbol_record; + if (!(term instanceof sc_Pair)) + return term; + else + { + (falseHead1130 = (new sc_Pair(null, null))); + (L1127 = (term.cdr)); + (tail1131 = falseHead1130); + while (!(L1127 === null)) { + { + (tail1131.cdr = (new sc_Pair((untranslate_term_nboyer((L1127.car))), null))); + (tail1131 = (tail1131.cdr)); + (L1127 = (L1127.cdr)); + } + } + (optrOpnd = (falseHead1130.cdr)); + return (new sc_Pair(((symbol_record = (term.car)), (symbol_record[(0)])), optrOpnd)); + } + }; + BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer = function(sym) { + var r; + var x; + return ((x = (sc_assq(sym, BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer))), ((x!== false)?(x.cdr):((r = [sym, null]), (BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer = (new sc_Pair((new sc_Pair(sym, r)), BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer))), r))); + }; + (BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer = null); + translate_alist_nboyer = function(alist) { + var sc_alist_6; + var term; + return ((alist === null)?null:(new sc_Pair((new sc_Pair((alist.car.car), ((term = (alist.car.cdr)), (!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), (translate_args_nboyer((term.cdr))))))))), ((sc_alist_6 = (alist.cdr)), ((sc_alist_6 === null)?null:(new sc_Pair((new sc_Pair((sc_alist_6.car.car), (translate_term_nboyer((sc_alist_6.car.cdr))))), (translate_alist_nboyer((sc_alist_6.cdr)))))))))); + }; + apply_subst_nboyer = function(alist, term) { + var lst; + var temp_temp; + return (!(term instanceof sc_Pair)?((temp_temp = (sc_assq(term, alist))), ((temp_temp!== false)?(temp_temp.cdr):term)):(new sc_Pair((term.car), ((lst = (term.cdr)), ((lst === null)?null:(new sc_Pair((apply_subst_nboyer(alist, (lst.car))), (apply_subst_lst_nboyer(alist, (lst.cdr)))))))))); + }; + apply_subst_lst_nboyer = function(alist, lst) { + var sc_lst_7; + return ((lst === null)?null:(new sc_Pair((apply_subst_nboyer(alist, (lst.car))), ((sc_lst_7 = (lst.cdr)), ((sc_lst_7 === null)?null:(new sc_Pair((apply_subst_nboyer(alist, (sc_lst_7.car))), (apply_subst_lst_nboyer(alist, (sc_lst_7.cdr)))))))))); + }; + tautologyp_nboyer = function(sc_x_11, true_lst, false_lst) { + var tmp1125; + var x; + var tmp1126; + var sc_x_8; + var sc_tmp1125_9; + var sc_tmp1126_10; + var sc_x_11; + var true_lst; + var false_lst; + while (true) { + if ((((sc_tmp1126_10 = (is_term_equal_nboyer(sc_x_11, true_term_nboyer))), ((sc_tmp1126_10!== false)?sc_tmp1126_10:(is_term_member_nboyer(sc_x_11, true_lst))))!== false)) + return true; + else + if ((((sc_tmp1125_9 = (is_term_equal_nboyer(sc_x_11, false_term_nboyer))), ((sc_tmp1125_9!== false)?sc_tmp1125_9:(is_term_member_nboyer(sc_x_11, false_lst))))!== false)) + return false; + else + if (!(sc_x_11 instanceof sc_Pair)) + return false; + else + if (((sc_x_11.car)===if_constructor_nboyer)) + if ((((sc_x_8 = (sc_x_11.cdr.car)), (tmp1126 = (is_term_equal_nboyer(sc_x_8, true_term_nboyer))), ((tmp1126!== false)?tmp1126:(is_term_member_nboyer(sc_x_8, true_lst))))!== false)) + (sc_x_11 = (sc_x_11.cdr.cdr.car)); + else + if ((((x = (sc_x_11.cdr.car)), (tmp1125 = (is_term_equal_nboyer(x, false_term_nboyer))), ((tmp1125!== false)?tmp1125:(is_term_member_nboyer(x, false_lst))))!== false)) + (sc_x_11 = (sc_x_11.cdr.cdr.cdr.car)); + else + if (((tautologyp_nboyer((sc_x_11.cdr.cdr.car), (new sc_Pair((sc_x_11.cdr.car), true_lst)), false_lst))!== false)) + { + (false_lst = (new sc_Pair((sc_x_11.cdr.car), false_lst))); + (sc_x_11 = (sc_x_11.cdr.cdr.cdr.car)); + } + else + return false; + else + return false; + } + }; + (if_constructor_nboyer = "\u1E9C*"); + (rewrite_count_nboyer = (0)); + rewrite_nboyer = function(term) { + var term2; + var sc_term_12; + var lst; + var symbol_record; + var sc_lst_13; + { + (++rewrite_count_nboyer); + if (!(term instanceof sc_Pair)) + return term; + else + { + (sc_term_12 = (new sc_Pair((term.car), ((sc_lst_13 = (term.cdr)), ((sc_lst_13 === null)?null:(new sc_Pair((rewrite_nboyer((sc_lst_13.car))), (rewrite_args_nboyer((sc_lst_13.cdr)))))))))); + (lst = ((symbol_record = (term.car)), (symbol_record[(1)]))); + while (true) { + if ((lst === null)) + return sc_term_12; + else + if ((((term2 = ((lst.car).cdr.car)), (unify_subst_nboyer = null), (one_way_unify1_nboyer(sc_term_12, term2)))!== false)) + return (rewrite_nboyer((apply_subst_nboyer(unify_subst_nboyer, ((lst.car).cdr.cdr.car))))); + else + (lst = (lst.cdr)); + } + } + } + }; + rewrite_args_nboyer = function(lst) { + var sc_lst_14; + return ((lst === null)?null:(new sc_Pair((rewrite_nboyer((lst.car))), ((sc_lst_14 = (lst.cdr)), ((sc_lst_14 === null)?null:(new sc_Pair((rewrite_nboyer((sc_lst_14.car))), (rewrite_args_nboyer((sc_lst_14.cdr)))))))))); + }; + (unify_subst_nboyer = "\u1E9C*"); + one_way_unify1_nboyer = function(term1, term2) { + var lst1; + var lst2; + var temp_temp; + if (!(term2 instanceof sc_Pair)) + { + (temp_temp = (sc_assq(term2, unify_subst_nboyer))); + if ((temp_temp!== false)) + return (is_term_equal_nboyer(term1, (temp_temp.cdr))); + else + if ((sc_isNumber(term2))) + return (sc_isEqual(term1, term2)); + else + { + (unify_subst_nboyer = (new sc_Pair((new sc_Pair(term2, term1)), unify_subst_nboyer))); + return true; + } + } + else + if (!(term1 instanceof sc_Pair)) + return false; + else + if (((term1.car)===(term2.car))) + { + (lst1 = (term1.cdr)); + (lst2 = (term2.cdr)); + while (true) { + if ((lst1 === null)) + return (lst2 === null); + else + if ((lst2 === null)) + return false; + else + if (((one_way_unify1_nboyer((lst1.car), (lst2.car)))!== false)) + { + (lst1 = (lst1.cdr)); + (lst2 = (lst2.cdr)); + } + else + return false; + } + } + else + return false; + }; + (false_term_nboyer = "\u1E9C*"); + (true_term_nboyer = "\u1E9C*"); + trans_of_implies1_nboyer = function(n) { + var sc_n_15; + return ((sc_isEqual(n, (1)))?(sc_list("\u1E9Cimplies", (0), (1))):(sc_list("\u1E9Cand", (sc_list("\u1E9Cimplies", (n-(1)), n)), ((sc_n_15 = (n-(1))), ((sc_isEqual(sc_n_15, (1)))?(sc_list("\u1E9Cimplies", (0), (1))):(sc_list("\u1E9Cand", (sc_list("\u1E9Cimplies", (sc_n_15-(1)), sc_n_15)), (trans_of_implies1_nboyer((sc_n_15-(1))))))))))); + }; + is_term_equal_nboyer = function(x, y) { + var lst1; + var lst2; + var r2; + var r1; + if ((x instanceof sc_Pair)) + if ((y instanceof sc_Pair)) + if ((((r1 = (x.car)), (r2 = (y.car)), (r1===r2))!== false)) + { + (lst1 = (x.cdr)); + (lst2 = (y.cdr)); + while (true) { + if ((lst1 === null)) + return (lst2 === null); + else + if ((lst2 === null)) + return false; + else + if (((is_term_equal_nboyer((lst1.car), (lst2.car)))!== false)) + { + (lst1 = (lst1.cdr)); + (lst2 = (lst2.cdr)); + } + else + return false; + } + } + else + return false; + else + return false; + else + return (sc_isEqual(x, y)); + }; + is_term_member_nboyer = function(x, lst) { + var x; + var lst; + while (true) { + if ((lst === null)) + return false; + else + if (((is_term_equal_nboyer(x, (lst.car)))!== false)) + return true; + else + (lst = (lst.cdr)); + } + }; + BgL_setupzd2boyerzd2 = function() { + var symbol_record; + var value; + var BgL_sc_symbolzd2record_16zd2; + var sym; + var sc_sym_17; + var term; + var lst; + var sc_term_18; + var sc_term_19; + { + (BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer = null); + (if_constructor_nboyer = (BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer("\u1E9Cif"))); + (false_term_nboyer = ((sc_term_19 = (new sc_Pair("\u1E9Cf",null))), (!(sc_term_19 instanceof sc_Pair)?sc_term_19:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((sc_term_19.car))), (translate_args_nboyer((sc_term_19.cdr)))))))); + (true_term_nboyer = ((sc_term_18 = (new sc_Pair("\u1E9Ct",null))), (!(sc_term_18 instanceof sc_Pair)?sc_term_18:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((sc_term_18.car))), (translate_args_nboyer((sc_term_18.cdr)))))))); + (lst = sc_const_3_nboyer); + while (!(lst === null)) { + { + (term = (lst.car)); + if (((term instanceof sc_Pair)&&(((term.car)==="\u1E9Cequal")&&((term.cdr.car) instanceof sc_Pair)))) + { + (sc_sym_17 = ((term.cdr.car).car)); + (value = (new sc_Pair((!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), (translate_args_nboyer((term.cdr)))))), ((sym = ((term.cdr.car).car)), (BgL_sc_symbolzd2record_16zd2 = (BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer(sym))), (BgL_sc_symbolzd2record_16zd2[(1)]))))); + (symbol_record = (BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer(sc_sym_17))); + (symbol_record[(1)] = value); + } + else + (sc_error("ADD-LEMMA did not like term: ", term)); + (lst = (lst.cdr)); + } + } + return true; + } + }; + BgL_testzd2boyerzd2 = function(n) { + var optrOpnd; + var term; + var sc_n_20; + var answer; + var sc_term_21; + var sc_term_22; + { + (rewrite_count_nboyer = (0)); + (term = sc_const_4_nboyer); + (sc_n_20 = n); + while (!(sc_n_20=== 0)) { + { + (term = (sc_list("\u1E9Cor", term, (new sc_Pair("\u1E9Cf",null))))); + (--sc_n_20); + } + } + (sc_term_22 = term); + if (!(sc_term_22 instanceof sc_Pair)) + (optrOpnd = sc_term_22); + else + (optrOpnd = (new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((sc_term_22.car))), (translate_args_nboyer((sc_term_22.cdr)))))); + (sc_term_21 = (apply_subst_nboyer(((const_nboyer === null)?null:(new sc_Pair((new sc_Pair((const_nboyer.car.car), (translate_term_nboyer((const_nboyer.car.cdr))))), (translate_alist_nboyer((const_nboyer.cdr)))))), optrOpnd))); + (answer = (tautologyp_nboyer((rewrite_nboyer(sc_term_21)), null, null))); + (sc_write(rewrite_count_nboyer)); + (sc_display(" rewrites")); + (sc_newline()); + if ((answer!== false)) + return rewrite_count_nboyer; + else + return false; + } + }; +} +/* Exported Variables */ +var BgL_parsezd2ze3nbzd2treesze3; +var BgL_earleyzd2benchmarkzd2; +var BgL_parsezd2ze3parsedzf3zc2; +var test; +var BgL_parsezd2ze3treesz31; +var BgL_makezd2parserzd2; +/* End Exports */ + +var const_earley; +{ + (const_earley = (new sc_Pair((new sc_Pair("\u1E9Cs",(new sc_Pair((new sc_Pair("\u1E9Ca",null)),(new sc_Pair((new sc_Pair("\u1E9Cs",(new sc_Pair("\u1E9Cs",null)))),null)))))),null))); + BgL_makezd2parserzd2 = function(grammar, lexer) { + var i; + var parser_descr; + var def_loop; + var nb_nts; + var names; + var steps; + var predictors; + var enders; + var starters; + var nts; + var sc_names_1; + var sc_steps_2; + var sc_predictors_3; + var sc_enders_4; + var sc_starters_5; + var nb_confs; + var BgL_sc_defzd2loop_6zd2; + var BgL_sc_nbzd2nts_7zd2; + var sc_nts_8; + var BgL_sc_defzd2loop_9zd2; + var ind; + { + ind = function(nt, sc_nts_10) { + var i; + { + (i = ((sc_nts_10.length)-(1))); + while (true) { + if ((i>=(0))) + if ((sc_isEqual((sc_nts_10[i]), nt))) + return i; + else + (--i); + else + return false; + } + } + }; + (sc_nts_8 = ((BgL_sc_defzd2loop_9zd2 = function(defs, sc_nts_11) { + var rule_loop; + var head; + var def; + return ((defs instanceof sc_Pair)?((def = (defs.car)), (head = (def.car)), (rule_loop = function(rules, sc_nts_12) { + var nt; + var l; + var sc_nts_13; + var rule; + if ((rules instanceof sc_Pair)) + { + (rule = (rules.car)); + (l = rule); + (sc_nts_13 = sc_nts_12); + while ((l instanceof sc_Pair)) { + { + (nt = (l.car)); + (l = (l.cdr)); + (sc_nts_13 = (((sc_member(nt, sc_nts_13))!== false)?sc_nts_13:(new sc_Pair(nt, sc_nts_13)))); + } + } + return (rule_loop((rules.cdr), sc_nts_13)); + } + else + return (BgL_sc_defzd2loop_9zd2((defs.cdr), sc_nts_12)); + }), (rule_loop((def.cdr), (((sc_member(head, sc_nts_11))!== false)?sc_nts_11:(new sc_Pair(head, sc_nts_11)))))):(sc_list2vector((sc_reverse(sc_nts_11))))); + }), (BgL_sc_defzd2loop_9zd2(grammar, null)))); + (BgL_sc_nbzd2nts_7zd2 = (sc_nts_8.length)); + (nb_confs = (((BgL_sc_defzd2loop_6zd2 = function(defs, BgL_sc_nbzd2confs_14zd2) { + var rule_loop; + var def; + return ((defs instanceof sc_Pair)?((def = (defs.car)), (rule_loop = function(rules, BgL_sc_nbzd2confs_15zd2) { + var l; + var BgL_sc_nbzd2confs_16zd2; + var rule; + if ((rules instanceof sc_Pair)) + { + (rule = (rules.car)); + (l = rule); + (BgL_sc_nbzd2confs_16zd2 = BgL_sc_nbzd2confs_15zd2); + while ((l instanceof sc_Pair)) { + { + (l = (l.cdr)); + (++BgL_sc_nbzd2confs_16zd2); + } + } + return (rule_loop((rules.cdr), (BgL_sc_nbzd2confs_16zd2+(1)))); + } + else + return (BgL_sc_defzd2loop_6zd2((defs.cdr), BgL_sc_nbzd2confs_15zd2)); + }), (rule_loop((def.cdr), BgL_sc_nbzd2confs_14zd2))):BgL_sc_nbzd2confs_14zd2); + }), (BgL_sc_defzd2loop_6zd2(grammar, (0))))+BgL_sc_nbzd2nts_7zd2)); + (sc_starters_5 = (sc_makeVector(BgL_sc_nbzd2nts_7zd2, null))); + (sc_enders_4 = (sc_makeVector(BgL_sc_nbzd2nts_7zd2, null))); + (sc_predictors_3 = (sc_makeVector(BgL_sc_nbzd2nts_7zd2, null))); + (sc_steps_2 = (sc_makeVector(nb_confs, false))); + (sc_names_1 = (sc_makeVector(nb_confs, false))); + (nts = sc_nts_8); + (starters = sc_starters_5); + (enders = sc_enders_4); + (predictors = sc_predictors_3); + (steps = sc_steps_2); + (names = sc_names_1); + (nb_nts = (sc_nts_8.length)); + (i = (nb_nts-(1))); + while ((i>=(0))) { + { + (sc_steps_2[i] = (i-nb_nts)); + (sc_names_1[i] = (sc_list((sc_nts_8[i]), (0)))); + (sc_enders_4[i] = (sc_list(i))); + (--i); + } + } + def_loop = function(defs, conf) { + var rule_loop; + var head; + var def; + return ((defs instanceof sc_Pair)?((def = (defs.car)), (head = (def.car)), (rule_loop = function(rules, conf, rule_num) { + var i; + var sc_i_17; + var nt; + var l; + var sc_conf_18; + var sc_i_19; + var rule; + if ((rules instanceof sc_Pair)) + { + (rule = (rules.car)); + (names[conf] = (sc_list(head, rule_num))); + (sc_i_19 = (ind(head, nts))); + (starters[sc_i_19] = (new sc_Pair(conf, (starters[sc_i_19])))); + (l = rule); + (sc_conf_18 = conf); + while ((l instanceof sc_Pair)) { + { + (nt = (l.car)); + (steps[sc_conf_18] = (ind(nt, nts))); + (sc_i_17 = (ind(nt, nts))); + (predictors[sc_i_17] = (new sc_Pair(sc_conf_18, (predictors[sc_i_17])))); + (l = (l.cdr)); + (++sc_conf_18); + } + } + (steps[sc_conf_18] = ((ind(head, nts))-nb_nts)); + (i = (ind(head, nts))); + (enders[i] = (new sc_Pair(sc_conf_18, (enders[i])))); + return (rule_loop((rules.cdr), (sc_conf_18+(1)), (rule_num+(1)))); + } + else + return (def_loop((defs.cdr), conf)); + }), (rule_loop((def.cdr), conf, (1)))):undefined); + }; + (def_loop(grammar, (sc_nts_8.length))); + (parser_descr = [lexer, sc_nts_8, sc_starters_5, sc_enders_4, sc_predictors_3, sc_steps_2, sc_names_1]); + return function(input) { + var optrOpnd; + var sc_optrOpnd_20; + var sc_optrOpnd_21; + var sc_optrOpnd_22; + var loop1; + var BgL_sc_stateza2_23za2; + var toks; + var BgL_sc_nbzd2nts_24zd2; + var sc_steps_25; + var sc_enders_26; + var state_num; + var BgL_sc_statesza2_27za2; + var states; + var i; + var conf; + var l; + var tok_nts; + var sc_i_28; + var sc_i_29; + var l1; + var l2; + var tok; + var tail1129; + var L1125; + var goal_enders; + var BgL_sc_statesza2_30za2; + var BgL_sc_nbzd2nts_31zd2; + var BgL_sc_nbzd2confs_32zd2; + var nb_toks; + var goal_starters; + var sc_states_33; + var BgL_sc_nbzd2confs_34zd2; + var BgL_sc_nbzd2toks_35zd2; + var sc_toks_36; + var falseHead1128; + var sc_names_37; + var sc_steps_38; + var sc_predictors_39; + var sc_enders_40; + var sc_starters_41; + var sc_nts_42; + var lexer; + var sc_ind_43; + var make_states; + var BgL_sc_confzd2setzd2getza2_44za2; + var conf_set_merge_new_bang; + var conf_set_adjoin; + var BgL_sc_confzd2setzd2adjoinza2_45za2; + var BgL_sc_confzd2setzd2adjoinza2za2_46z00; + var conf_set_union; + var forw; + var is_parsed; + var deriv_trees; + var BgL_sc_derivzd2treesza2_47z70; + var nb_deriv_trees; + var BgL_sc_nbzd2derivzd2treesza2_48za2; + { + sc_ind_43 = function(nt, sc_nts_49) { + var i; + { + (i = ((sc_nts_49.length)-(1))); + while (true) { + if ((i>=(0))) + if ((sc_isEqual((sc_nts_49[i]), nt))) + return i; + else + (--i); + else + return false; + } + } + }; + make_states = function(BgL_sc_nbzd2toks_50zd2, BgL_sc_nbzd2confs_51zd2) { + var v; + var i; + var sc_states_52; + { + (sc_states_52 = (sc_makeVector((BgL_sc_nbzd2toks_50zd2+(1)), false))); + (i = BgL_sc_nbzd2toks_50zd2); + while ((i>=(0))) { + { + (v = (sc_makeVector((BgL_sc_nbzd2confs_51zd2+(1)), false))); + (v[(0)] = (-1)); + (sc_states_52[i] = v); + (--i); + } + } + return sc_states_52; + } + }; + BgL_sc_confzd2setzd2getza2_44za2 = function(state, BgL_sc_statezd2num_53zd2, sc_conf_54) { + var conf_set; + var BgL_sc_confzd2set_55zd2; + return ((BgL_sc_confzd2set_55zd2 = (state[(sc_conf_54+(1))])), ((BgL_sc_confzd2set_55zd2!== false)?BgL_sc_confzd2set_55zd2:((conf_set = (sc_makeVector((BgL_sc_statezd2num_53zd2+(6)), false))), (conf_set[(1)] = (-3)), (conf_set[(2)] = (-1)), (conf_set[(3)] = (-1)), (conf_set[(4)] = (-1)), (state[(sc_conf_54+(1))] = conf_set), conf_set))); + }; + conf_set_merge_new_bang = function(conf_set) { + return ((conf_set[((conf_set[(1)])+(5))] = (conf_set[(4)])), (conf_set[(1)] = (conf_set[(3)])), (conf_set[(3)] = (-1)), (conf_set[(4)] = (-1))); + }; + conf_set_adjoin = function(state, conf_set, sc_conf_56, i) { + var tail; + return ((tail = (conf_set[(3)])), (conf_set[(i+(5))] = (-1)), (conf_set[(tail+(5))] = i), (conf_set[(3)] = i), ((tail<(0))?((conf_set[(0)] = (state[(0)])), (state[(0)] = sc_conf_56)):undefined)); + }; + BgL_sc_confzd2setzd2adjoinza2_45za2 = function(sc_states_57, BgL_sc_statezd2num_58zd2, l, i) { + var conf_set; + var sc_conf_59; + var l1; + var state; + { + (state = (sc_states_57[BgL_sc_statezd2num_58zd2])); + (l1 = l); + while ((l1 instanceof sc_Pair)) { + { + (sc_conf_59 = (l1.car)); + (conf_set = (BgL_sc_confzd2setzd2getza2_44za2(state, BgL_sc_statezd2num_58zd2, sc_conf_59))); + if (((conf_set[(i+(5))])=== false)) + { + (conf_set_adjoin(state, conf_set, sc_conf_59, i)); + (l1 = (l1.cdr)); + } + else + (l1 = (l1.cdr)); + } + } + return undefined; + } + }; + BgL_sc_confzd2setzd2adjoinza2za2_46z00 = function(sc_states_60, BgL_sc_statesza2_61za2, BgL_sc_statezd2num_62zd2, sc_conf_63, i) { + var BgL_sc_confzd2setza2_64z70; + var BgL_sc_stateza2_65za2; + var conf_set; + var state; + return ((state = (sc_states_60[BgL_sc_statezd2num_62zd2])), ((((conf_set = (state[(sc_conf_63+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false)?((BgL_sc_stateza2_65za2 = (BgL_sc_statesza2_61za2[BgL_sc_statezd2num_62zd2])), (BgL_sc_confzd2setza2_64z70 = (BgL_sc_confzd2setzd2getza2_44za2(BgL_sc_stateza2_65za2, BgL_sc_statezd2num_62zd2, sc_conf_63))), (((BgL_sc_confzd2setza2_64z70[(i+(5))])=== false)?(conf_set_adjoin(BgL_sc_stateza2_65za2, BgL_sc_confzd2setza2_64z70, sc_conf_63, i)):undefined), true):false)); + }; + conf_set_union = function(state, conf_set, sc_conf_66, other_set) { + var i; + { + (i = (other_set[(2)])); + while ((i>=(0))) { + if (((conf_set[(i+(5))])=== false)) + { + (conf_set_adjoin(state, conf_set, sc_conf_66, i)); + (i = (other_set[(i+(5))])); + } + else + (i = (other_set[(i+(5))])); + } + return undefined; + } + }; + forw = function(sc_states_67, BgL_sc_statezd2num_68zd2, sc_starters_69, sc_enders_70, sc_predictors_71, sc_steps_72, sc_nts_73) { + var next_set; + var next; + var conf_set; + var ender; + var l; + var starter_set; + var starter; + var sc_l_74; + var sc_loop1_75; + var head; + var BgL_sc_confzd2set_76zd2; + var BgL_sc_statezd2num_77zd2; + var state; + var sc_states_78; + var preds; + var BgL_sc_confzd2set_79zd2; + var step; + var sc_conf_80; + var BgL_sc_nbzd2nts_81zd2; + var sc_state_82; + { + (sc_state_82 = (sc_states_67[BgL_sc_statezd2num_68zd2])); + (BgL_sc_nbzd2nts_81zd2 = (sc_nts_73.length)); + while (true) { + { + (sc_conf_80 = (sc_state_82[(0)])); + if ((sc_conf_80>=(0))) + { + (step = (sc_steps_72[sc_conf_80])); + (BgL_sc_confzd2set_79zd2 = (sc_state_82[(sc_conf_80+(1))])); + (head = (BgL_sc_confzd2set_79zd2[(4)])); + (sc_state_82[(0)] = (BgL_sc_confzd2set_79zd2[(0)])); + (conf_set_merge_new_bang(BgL_sc_confzd2set_79zd2)); + if ((step>=(0))) + { + (sc_l_74 = (sc_starters_69[step])); + while ((sc_l_74 instanceof sc_Pair)) { + { + (starter = (sc_l_74.car)); + (starter_set = (BgL_sc_confzd2setzd2getza2_44za2(sc_state_82, BgL_sc_statezd2num_68zd2, starter))); + if (((starter_set[(BgL_sc_statezd2num_68zd2+(5))])=== false)) + { + (conf_set_adjoin(sc_state_82, starter_set, starter, BgL_sc_statezd2num_68zd2)); + (sc_l_74 = (sc_l_74.cdr)); + } + else + (sc_l_74 = (sc_l_74.cdr)); + } + } + (l = (sc_enders_70[step])); + while ((l instanceof sc_Pair)) { + { + (ender = (l.car)); + if ((((conf_set = (sc_state_82[(ender+(1))])), ((conf_set!== false)?(conf_set[(BgL_sc_statezd2num_68zd2+(5))]):false))!== false)) + { + (next = (sc_conf_80+(1))); + (next_set = (BgL_sc_confzd2setzd2getza2_44za2(sc_state_82, BgL_sc_statezd2num_68zd2, next))); + (conf_set_union(sc_state_82, next_set, next, BgL_sc_confzd2set_79zd2)); + (l = (l.cdr)); + } + else + (l = (l.cdr)); + } + } + } + else + { + (preds = (sc_predictors_71[(step+BgL_sc_nbzd2nts_81zd2)])); + (sc_states_78 = sc_states_67); + (state = sc_state_82); + (BgL_sc_statezd2num_77zd2 = BgL_sc_statezd2num_68zd2); + (BgL_sc_confzd2set_76zd2 = BgL_sc_confzd2set_79zd2); + sc_loop1_75 = function(l) { + var sc_state_83; + var BgL_sc_nextzd2set_84zd2; + var sc_next_85; + var pred_set; + var i; + var pred; + if ((l instanceof sc_Pair)) + { + (pred = (l.car)); + (i = head); + while ((i>=(0))) { + { + (pred_set = ((sc_state_83 = (sc_states_78[i])), (sc_state_83[(pred+(1))]))); + if ((pred_set!== false)) + { + (sc_next_85 = (pred+(1))); + (BgL_sc_nextzd2set_84zd2 = (BgL_sc_confzd2setzd2getza2_44za2(state, BgL_sc_statezd2num_77zd2, sc_next_85))); + (conf_set_union(state, BgL_sc_nextzd2set_84zd2, sc_next_85, pred_set)); + } + (i = (BgL_sc_confzd2set_76zd2[(i+(5))])); + } + } + return (sc_loop1_75((l.cdr))); + } + else + return undefined; + }; + (sc_loop1_75(preds)); + } + } + else + return undefined; + } + } + } + }; + is_parsed = function(nt, i, j, sc_nts_86, sc_enders_87, sc_states_88) { + var conf_set; + var state; + var sc_conf_89; + var l; + var BgL_sc_ntza2_90za2; + { + (BgL_sc_ntza2_90za2 = (sc_ind_43(nt, sc_nts_86))); + if ((BgL_sc_ntza2_90za2!== false)) + { + (sc_nts_86.length); + (l = (sc_enders_87[BgL_sc_ntza2_90za2])); + while (true) { + if ((l instanceof sc_Pair)) + { + (sc_conf_89 = (l.car)); + if ((((state = (sc_states_88[j])), (conf_set = (state[(sc_conf_89+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false)) + return true; + else + (l = (l.cdr)); + } + else + return false; + } + } + else + return false; + } + }; + deriv_trees = function(sc_conf_91, i, j, sc_enders_92, sc_steps_93, sc_names_94, sc_toks_95, sc_states_96, BgL_sc_nbzd2nts_97zd2) { + var sc_loop1_98; + var prev; + var name; + return ((name = (sc_names_94[sc_conf_91])), ((name!== false)?((sc_conf_91=(0))) + if (((k>=i)&&(((sc_state_99 = (sc_states_96[k])), (conf_set = (sc_state_99[(prev+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false))) + { + (prev_trees = (deriv_trees(prev, i, k, sc_enders_92, sc_steps_93, sc_names_94, sc_toks_95, sc_states_96, BgL_sc_nbzd2nts_97zd2))); + (ender_trees = (deriv_trees(ender, k, j, sc_enders_92, sc_steps_93, sc_names_94, sc_toks_95, sc_states_96, BgL_sc_nbzd2nts_97zd2))); + loop3 = function(l3, l2) { + var l4; + var sc_l2_100; + var ender_tree; + if ((l3 instanceof sc_Pair)) + { + (ender_tree = (sc_list((l3.car)))); + (l4 = prev_trees); + (sc_l2_100 = l2); + while ((l4 instanceof sc_Pair)) { + { + (sc_l2_100 = (new sc_Pair((sc_append((l4.car), ender_tree)), sc_l2_100))); + (l4 = (l4.cdr)); + } + } + return (loop3((l3.cdr), sc_l2_100)); + } + else + return (loop2((ender_set[(k+(5))]), l2)); + }; + return (loop3(ender_trees, l2)); + } + else + (k = (ender_set[(k+(5))])); + else + return (sc_loop1_98((l1.cdr), l2)); + } + }; + return (loop2((ender_set[(2)]), l2)); + } + else + (l1 = (l1.cdr)); + } + else + return l2; + } + }), (sc_loop1_98((sc_enders_92[(sc_steps_93[prev])]), null))))); + }; + BgL_sc_derivzd2treesza2_47z70 = function(nt, i, j, sc_nts_101, sc_enders_102, sc_steps_103, sc_names_104, sc_toks_105, sc_states_106) { + var conf_set; + var state; + var sc_conf_107; + var l; + var trees; + var BgL_sc_nbzd2nts_108zd2; + var BgL_sc_ntza2_109za2; + { + (BgL_sc_ntza2_109za2 = (sc_ind_43(nt, sc_nts_101))); + if ((BgL_sc_ntza2_109za2!== false)) + { + (BgL_sc_nbzd2nts_108zd2 = (sc_nts_101.length)); + (l = (sc_enders_102[BgL_sc_ntza2_109za2])); + (trees = null); + while ((l instanceof sc_Pair)) { + { + (sc_conf_107 = (l.car)); + if ((((state = (sc_states_106[j])), (conf_set = (state[(sc_conf_107+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false)) + { + (l = (l.cdr)); + (trees = (sc_append((deriv_trees(sc_conf_107, i, j, sc_enders_102, sc_steps_103, sc_names_104, sc_toks_105, sc_states_106, BgL_sc_nbzd2nts_108zd2)), trees))); + } + else + (l = (l.cdr)); + } + } + return trees; + } + else + return false; + } + }; + nb_deriv_trees = function(sc_conf_110, i, j, sc_enders_111, sc_steps_112, sc_toks_113, sc_states_114, BgL_sc_nbzd2nts_115zd2) { + var sc_loop1_116; + var tmp1124; + var prev; + return ((prev = (sc_conf_110-(1))), ((((tmp1124 = (sc_conf_110=(0))) { + if (((k>=i)&&(((state = (sc_states_114[k])), (conf_set = (state[(prev+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false))) + { + (nb_prev_trees = (nb_deriv_trees(prev, i, k, sc_enders_111, sc_steps_112, sc_toks_113, sc_states_114, BgL_sc_nbzd2nts_115zd2))); + (nb_ender_trees = (nb_deriv_trees(ender, k, j, sc_enders_111, sc_steps_112, sc_toks_113, sc_states_114, BgL_sc_nbzd2nts_115zd2))); + (k = (ender_set[(k+(5))])); + (n +=(nb_prev_trees*nb_ender_trees)); + } + else + (k = (ender_set[(k+(5))])); + } + return (sc_loop1_116((l.cdr), n)); + } + else + (l = (l.cdr)); + } + else + return sc_n_118; + } + }), (sc_loop1_116((sc_enders_111[(sc_steps_112[prev])]), (0)))))); + }; + BgL_sc_nbzd2derivzd2treesza2_48za2 = function(nt, i, j, sc_nts_119, sc_enders_120, sc_steps_121, sc_toks_122, sc_states_123) { + var conf_set; + var state; + var sc_conf_124; + var l; + var nb_trees; + var BgL_sc_nbzd2nts_125zd2; + var BgL_sc_ntza2_126za2; + { + (BgL_sc_ntza2_126za2 = (sc_ind_43(nt, sc_nts_119))); + if ((BgL_sc_ntza2_126za2!== false)) + { + (BgL_sc_nbzd2nts_125zd2 = (sc_nts_119.length)); + (l = (sc_enders_120[BgL_sc_ntza2_126za2])); + (nb_trees = (0)); + while ((l instanceof sc_Pair)) { + { + (sc_conf_124 = (l.car)); + if ((((state = (sc_states_123[j])), (conf_set = (state[(sc_conf_124+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false)) + { + (l = (l.cdr)); + (nb_trees = ((nb_deriv_trees(sc_conf_124, i, j, sc_enders_120, sc_steps_121, sc_toks_122, sc_states_123, BgL_sc_nbzd2nts_125zd2))+nb_trees)); + } + else + (l = (l.cdr)); + } + } + return nb_trees; + } + else + return false; + } + }; + (lexer = (parser_descr[(0)])); + (sc_nts_42 = (parser_descr[(1)])); + (sc_starters_41 = (parser_descr[(2)])); + (sc_enders_40 = (parser_descr[(3)])); + (sc_predictors_39 = (parser_descr[(4)])); + (sc_steps_38 = (parser_descr[(5)])); + (sc_names_37 = (parser_descr[(6)])); + (falseHead1128 = (new sc_Pair(null, null))); + (L1125 = (lexer(input))); + (tail1129 = falseHead1128); + while (!(L1125 === null)) { + { + (tok = (L1125.car)); + (l1 = (tok.cdr)); + (l2 = null); + while ((l1 instanceof sc_Pair)) { + { + (sc_i_29 = (sc_ind_43((l1.car), sc_nts_42))); + if ((sc_i_29!== false)) + { + (l1 = (l1.cdr)); + (l2 = (new sc_Pair(sc_i_29, l2))); + } + else + (l1 = (l1.cdr)); + } + } + (sc_optrOpnd_22 = (new sc_Pair((tok.car), (sc_reverse(l2))))); + (sc_optrOpnd_21 = (new sc_Pair(sc_optrOpnd_22, null))); + (tail1129.cdr = sc_optrOpnd_21); + (tail1129 = (tail1129.cdr)); + (L1125 = (L1125.cdr)); + } + } + (sc_optrOpnd_20 = (falseHead1128.cdr)); + (sc_toks_36 = (sc_list2vector(sc_optrOpnd_20))); + (BgL_sc_nbzd2toks_35zd2 = (sc_toks_36.length)); + (BgL_sc_nbzd2confs_34zd2 = (sc_steps_38.length)); + (sc_states_33 = (make_states(BgL_sc_nbzd2toks_35zd2, BgL_sc_nbzd2confs_34zd2))); + (goal_starters = (sc_starters_41[(0)])); + (BgL_sc_confzd2setzd2adjoinza2_45za2(sc_states_33, (0), goal_starters, (0))); + (forw(sc_states_33, (0), sc_starters_41, sc_enders_40, sc_predictors_39, sc_steps_38, sc_nts_42)); + (sc_i_28 = (0)); + while ((sc_i_28=(0))) { + { + (states = sc_states_33); + (BgL_sc_statesza2_27za2 = BgL_sc_statesza2_30za2); + (state_num = i); + (sc_enders_26 = sc_enders_40); + (sc_steps_25 = sc_steps_38); + (BgL_sc_nbzd2nts_24zd2 = BgL_sc_nbzd2nts_31zd2); + (toks = sc_toks_36); + (BgL_sc_stateza2_23za2 = (BgL_sc_statesza2_30za2[i])); + loop1 = function() { + var sc_loop1_127; + var prev; + var BgL_sc_statesza2_128za2; + var sc_states_129; + var j; + var i; + var sc_i_130; + var head; + var conf_set; + var sc_conf_131; + { + (sc_conf_131 = (BgL_sc_stateza2_23za2[(0)])); + if ((sc_conf_131>=(0))) + { + (conf_set = (BgL_sc_stateza2_23za2[(sc_conf_131+(1))])); + (head = (conf_set[(4)])); + (BgL_sc_stateza2_23za2[(0)] = (conf_set[(0)])); + (conf_set_merge_new_bang(conf_set)); + (sc_i_130 = head); + while ((sc_i_130>=(0))) { + { + (i = sc_i_130); + (j = state_num); + (sc_states_129 = states); + (BgL_sc_statesza2_128za2 = BgL_sc_statesza2_27za2); + (prev = (sc_conf_131-(1))); + if (((sc_conf_131>=BgL_sc_nbzd2nts_24zd2)&&((sc_steps_25[prev])>=(0)))) + { + sc_loop1_127 = function(l) { + var k; + var ender_set; + var state; + var ender; + var l; + while (true) { + if ((l instanceof sc_Pair)) + { + (ender = (l.car)); + (ender_set = ((state = (sc_states_129[j])), (state[(ender+(1))]))); + if ((ender_set!== false)) + { + (k = (ender_set[(2)])); + while ((k>=(0))) { + { + if ((k>=i)) + if (((BgL_sc_confzd2setzd2adjoinza2za2_46z00(sc_states_129, BgL_sc_statesza2_128za2, k, prev, i))!== false)) + (BgL_sc_confzd2setzd2adjoinza2za2_46z00(sc_states_129, BgL_sc_statesza2_128za2, j, ender, k)); + (k = (ender_set[(k+(5))])); + } + } + return (sc_loop1_127((l.cdr))); + } + else + (l = (l.cdr)); + } + else + return undefined; + } + }; + (sc_loop1_127((sc_enders_26[(sc_steps_25[prev])]))); + } + (sc_i_130 = (conf_set[(sc_i_130+(5))])); + } + } + return (loop1()); + } + else + return undefined; + } + }; + (loop1()); + (--i); + } + } + (optrOpnd = BgL_sc_statesza2_30za2); + return [sc_nts_42, sc_starters_41, sc_enders_40, sc_predictors_39, sc_steps_38, sc_names_37, sc_toks_36, optrOpnd, is_parsed, BgL_sc_derivzd2treesza2_47z70, BgL_sc_nbzd2derivzd2treesza2_48za2]; + } + }; + } + }; + BgL_parsezd2ze3parsedzf3zc2 = function(parse, nt, i, j) { + var is_parsed; + var states; + var enders; + var nts; + return ((nts = (parse[(0)])), (enders = (parse[(2)])), (states = (parse[(7)])), (is_parsed = (parse[(8)])), (is_parsed(nt, i, j, nts, enders, states))); + }; + BgL_parsezd2ze3treesz31 = function(parse, nt, i, j) { + var BgL_sc_derivzd2treesza2_132z70; + var states; + var toks; + var names; + var steps; + var enders; + var nts; + return ((nts = (parse[(0)])), (enders = (parse[(2)])), (steps = (parse[(4)])), (names = (parse[(5)])), (toks = (parse[(6)])), (states = (parse[(7)])), (BgL_sc_derivzd2treesza2_132z70 = (parse[(9)])), (BgL_sc_derivzd2treesza2_132z70(nt, i, j, nts, enders, steps, names, toks, states))); + }; + BgL_parsezd2ze3nbzd2treesze3 = function(parse, nt, i, j) { + var BgL_sc_nbzd2derivzd2treesza2_133za2; + var states; + var toks; + var steps; + var enders; + var nts; + return ((nts = (parse[(0)])), (enders = (parse[(2)])), (steps = (parse[(4)])), (toks = (parse[(6)])), (states = (parse[(7)])), (BgL_sc_nbzd2derivzd2treesza2_133za2 = (parse[(10)])), (BgL_sc_nbzd2derivzd2treesza2_133za2(nt, i, j, nts, enders, steps, toks, states))); + }; + test = function(k) { + var x; + var p; + return ((p = (BgL_makezd2parserzd2(const_earley, function(l) { + var sc_x_134; + var tail1134; + var L1130; + var falseHead1133; + { + (falseHead1133 = (new sc_Pair(null, null))); + (tail1134 = falseHead1133); + (L1130 = l); + while (!(L1130 === null)) { + { + (tail1134.cdr = (new sc_Pair(((sc_x_134 = (L1130.car)), (sc_list(sc_x_134, sc_x_134))), null))); + (tail1134 = (tail1134.cdr)); + (L1130 = (L1130.cdr)); + } + } + return (falseHead1133.cdr); + } + }))), (x = (p((sc_vector2list((sc_makeVector(k, "\u1E9Ca"))))))), (sc_length((BgL_parsezd2ze3treesz31(x, "\u1E9Cs", (0), k))))); + }; + BgL_earleyzd2benchmarkzd2 = function() { + var args = null; + for (var sc_tmp = arguments.length - 1; sc_tmp >= 0; sc_tmp--) { + args = sc_cons(arguments[sc_tmp], args); + } + var k; + return ((k = ((args === null)?(7):(args.car))), (BgL_runzd2benchmarkzd2("earley", (1), function() { + return (test(k)); + }, function(result) { + return ((sc_display(result)), (sc_newline()), result == 132); + }))); + }; +} + + +/************* END OF GENERATED CODE *************/ +// Invoke this function to run a benchmark. +// The first argument is a string identifying the benchmark. +// The second argument is the number of times to run the benchmark. +// The third argument is a function that runs the benchmark. +// The fourth argument is a unary function that warns if the result +// returned by the benchmark is incorrect. +// +// Example: +// RunBenchmark("new Array()", +// 1, +// function () { new Array(1000000); } +// function (v) { +// return (v instanceof Array) && (v.length == 1000000); +// }); + +SC_DEFAULT_OUT = new sc_GenericOutputPort(function(s) {}); +SC_ERROR_OUT = SC_DEFAULT_OUT; + +function RunBenchmark(name, count, run, warn) { + for (var n = 0; n < count; ++n) { + result = run(); + if (!warn(result)) { + throw new Error("Earley or Boyer did incorrect number of rewrites"); + } + } +} + +var BgL_runzd2benchmarkzd2 = RunBenchmark; diff --git a/js/src/octane/gbemu-part1.js b/js/src/octane/gbemu-part1.js new file mode 100644 index 0000000000..10f19e4a19 --- /dev/null +++ b/js/src/octane/gbemu-part1.js @@ -0,0 +1,1350 @@ +// Portions copyright 2013 Google, Inc + +// Copyright (C) 2010 - 2012 Grant Galitz +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License version 2 as +// published by the Free Software Foundation. +// The full license is available at http://www.gnu.org/licenses/gpl.html +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. + +// The code has been adapted for use as a benchmark by Google. + +var GameboyBenchmark = new BenchmarkSuite('Gameboy', [26288412], + [new Benchmark('Gameboy', + false, + false, + 20, + runGameboy, + setupGameboy, + tearDownGameboy, + null, + 4)]); + +var decoded_gameboy_rom = null; + +function setupGameboy() { + + // Check if all the types required by the code are supported. + // If not, throw exception and quit. + if (!(typeof Uint8Array != "undefined" && + typeof Int8Array != "undefined" && + typeof Float32Array != "undefined" && + typeof Int32Array != "undefined") ) { + throw "TypedArrayUnsupported"; + } + decoded_gameboy_rom = base64_decode(gameboy_rom); + rom = null; +} + +function runGameboy() { + start(new GameBoyCanvas(), decoded_gameboy_rom); + + gameboy.instructions = 0; + gameboy.totalInstructions = 250000; + + while (gameboy.instructions <= gameboy.totalInstructions) { + gameboy.run(); + GameBoyAudioNode.run(); + } + + resetGlobalVariables(); +} + +function tearDownGameboy() { + decoded_gameboy_rom = null; + expectedGameboyStateStr = null; +} + +var expectedGameboyStateStr = + '{"registerA":160,"registerB":255,"registerC":255,"registerE":11,' + + '"registersHL":51600,"programCounter":24309,"stackPointer":49706,' + + '"sumROM":10171578,"sumMemory":3435856,"sumMBCRam":234598,"sumVRam":0}'; + +// Start of browser emulation. + +var GameBoyWindow = { }; + +function GameBoyContext() { + this.createBuffer = function() { + return new Buffer(); + } + this.createImageData = function (w, h) { + var result = {}; + // The following line was updated since Octane 1.0 to avoid OOB access. + result.data = new Uint8Array(w * h * 4); + return result; + } + this.putImageData = function (buffer, x, y) { + var sum = 0; + for (var i = 0; i < buffer.data.length; i++) { + sum += i * buffer.data[i]; + sum = sum % 1000; + } + } + this.drawImage = function () { } +}; + +function GameBoyCanvas() { + this.getContext = function() { + return new GameBoyContext(); + } + this.width = 160; + this.height = 144; + this.style = { visibility: "visibile" }; +} + +function cout(message, colorIndex) { +} + +function clear_terminal() { +} + +var GameBoyAudioNode = { + bufferSize : 0, + onaudioprocess : null , + connect : function () {}, + run: function() { + var event = {outputBuffer : this.outputBuffer}; + this.onaudioprocess(event); + } +}; + +function GameBoyAudioContext () { + this.createBufferSource = function() { + return { noteOn : function () {}, connect : function() {}}; + } + this.sampleRate = 48000; + this.destination = {} + this.createBuffer = function (channels, len, sampleRate) { + return { gain : 1, + numberOfChannels : 1, + length : 1, + duration : 0.000020833333110203966, + sampleRate : 48000} + } + this.createJavaScriptNode = function (bufferSize, inputChannels, outputChannels) { + GameBoyAudioNode.bufferSize = bufferSize; + GameBoyAudioNode.outputBuffer = { + getChannelData : function (i) {return this.channelData[i];}, + channelData : [] + }; + for (var i = 0; i < outputChannels; i++) { + GameBoyAudioNode.outputBuffer.channelData[i] = new Float32Array(bufferSize); + } + return GameBoyAudioNode; + } +} + +var mock_date_time_counter = 0; + +function new_Date() { + return { + getTime: function() { + mock_date_time_counter += 16; + return mock_date_time_counter; + } + }; +} + +// End of browser emulation. + +// Start of helper functions. + +function checkFinalState() { + function sum(a) { + var result = 0; + for (var i = 0; i < a.length; i++) { + result += a[i]; + } + return result; + } + var state = { + registerA: gameboy.registerA, + registerB: gameboy.registerB, + registerC: gameboy.registerC, + registerE: gameboy.registerE, + registerF: gameboy.registerF, + registersHL: gameboy.registersHL, + programCounter: gameboy.programCounter, + stackPointer: gameboy.stackPointer, + sumROM : sum(gameboy.fromTypedArray(gameboy.ROM)), + sumMemory: sum(gameboy.fromTypedArray(gameboy.memory)), + sumMBCRam: sum(gameboy.fromTypedArray(gameboy.MBCRam)), + sumVRam: sum(gameboy.fromTypedArray(gameboy.VRam)) + }; + var expectedState = JSON.parse(expectedGameboyStateStr); + for (var prop in expectedState) { + if (state[prop] !== expectedState[prop]) { + var stateStr = JSON.stringify(state); + alert("Incorrect final state of processor:\n" + + " actual " + stateStr + "\n" + + " expected " + expectedGameboyStateStr); + } + } +} + + +function resetGlobalVariables () { + //Audio API Event Handler: + audioContextHandle = null; + audioNode = null; + audioSource = null; + launchedContext = false; + audioContextSampleBuffer = []; + resampled = []; + webAudioMinBufferSize = 15000; + webAudioMaxBufferSize = 25000; + webAudioActualSampleRate = 44100; + XAudioJSSampleRate = 0; + webAudioMono = false; + XAudioJSVolume = 1; + resampleControl = null; + audioBufferSize = 0; + resampleBufferStart = 0; + resampleBufferEnd = 0; + resampleBufferSize = 2; + + gameboy = null; //GameBoyCore object. + gbRunInterval = null; //GameBoyCore Timer +} + + +// End of helper functions. + +// Original code from Grant Galitz follows. +// Modifications by Google are marked in comments. + +// Start of js/other/base64.js file. + +var toBase64 = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", + "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", + "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+" , "/", "="]; +var fromBase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; +function base64(data) { + try { + // The following line was modified for benchmarking: + var base64 = GameBoyWindow.btoa(data); //Use this native function when it's available, as it's a magnitude faster than the non-native code below. + } + catch (error) { + //Defaulting to non-native base64 encoding... + var base64 = ""; + var dataLength = data.length; + if (dataLength > 0) { + var bytes = [0, 0, 0]; + var index = 0; + var remainder = dataLength % 3; + while (data.length % 3 > 0) { + //Make sure we don't do fuzzy math in the next loop... + data[data.length] = " "; + } + while (index < dataLength) { + //Keep this loop small for speed. + bytes = [data.charCodeAt(index++) & 0xFF, data.charCodeAt(index++) & 0xFF, data.charCodeAt(index++) & 0xFF]; + base64 += toBase64[bytes[0] >> 2] + toBase64[((bytes[0] & 0x3) << 4) | (bytes[1] >> 4)] + toBase64[((bytes[1] & 0xF) << 2) | (bytes[2] >> 6)] + toBase64[bytes[2] & 0x3F]; + } + if (remainder > 0) { + //Fill in the padding and recalulate the trailing six-bit group... + base64[base64.length - 1] = "="; + if (remainder == 2) { + base64[base64.length - 2] = "="; + base64[base64.length - 3] = toBase64[(bytes[0] & 0x3) << 4]; + } + else { + base64[base64.length - 2] = toBase64[(bytes[1] & 0xF) << 2]; + } + } + } + } + return base64; +} +function base64_decode(data) { + try { + // The following line was modified for benchmarking: + var decode64 = GameBoyWindow.atob(data); //Use this native function when it's available, as it's a magnitude faster than the non-native code below. + } + catch (error) { + //Defaulting to non-native base64 decoding... + var decode64 = ""; + var dataLength = data.length; + if (dataLength > 3 && dataLength % 4 == 0) { + var sixbits = [0, 0, 0, 0]; //Declare this out of the loop, to speed up the ops. + var index = 0; + while (index < dataLength) { + //Keep this loop small for speed. + sixbits = [fromBase64.indexOf(data.charAt(index++)), fromBase64.indexOf(data.charAt(index++)), fromBase64.indexOf(data.charAt(index++)), fromBase64.indexOf(data.charAt(index++))]; + decode64 += String.fromCharCode((sixbits[0] << 2) | (sixbits[1] >> 4)) + String.fromCharCode(((sixbits[1] & 0x0F) << 4) | (sixbits[2] >> 2)) + String.fromCharCode(((sixbits[2] & 0x03) << 6) | sixbits[3]); + } + //Check for the '=' character after the loop, so we don't hose it up. + if (sixbits[3] >= 0x40) { + decode64.length -= 1; + if (sixbits[2] >= 0x40) { + decode64.length -= 1; + } + } + } + } + return decode64; +} +function to_little_endian_dword(str) { + return to_little_endian_word(str) + String.fromCharCode((str >> 16) & 0xFF, (str >> 24) & 0xFF); +} +function to_little_endian_word(str) { + return to_byte(str) + String.fromCharCode((str >> 8) & 0xFF); +} +function to_byte(str) { + return String.fromCharCode(str & 0xFF); +} +function arrayToBase64(arrayIn) { + var binString = ""; + var length = arrayIn.length; + for (var index = 0; index < length; ++index) { + if (typeof arrayIn[index] == "number") { + binString += String.fromCharCode(arrayIn[index]); + } + } + return base64(binString); +} +function base64ToArray(b64String) { + var binString = base64_decode(b64String); + var outArray = []; + var length = binString.length; + for (var index = 0; index < length;) { + outArray.push(binString.charCodeAt(index++) & 0xFF); + } + return outArray; +} + +// End of js/other/base64.js file. + +// Start of js/other/resampler.js file. + +//JavaScript Audio Resampler (c) 2011 - Grant Galitz +function Resampler(fromSampleRate, toSampleRate, channels, outputBufferSize, noReturn) { + this.fromSampleRate = fromSampleRate; + this.toSampleRate = toSampleRate; + this.channels = channels | 0; + this.outputBufferSize = outputBufferSize; + this.noReturn = !!noReturn; + this.initialize(); +} +Resampler.prototype.initialize = function () { + //Perform some checks: + if (this.fromSampleRate > 0 && this.toSampleRate > 0 && this.channels > 0) { + if (this.fromSampleRate == this.toSampleRate) { + //Setup a resampler bypass: + this.resampler = this.bypassResampler; //Resampler just returns what was passed through. + this.ratioWeight = 1; + } + else { + //Setup the interpolation resampler: + this.compileInterpolationFunction(); + this.resampler = this.interpolate; //Resampler is a custom quality interpolation algorithm. + this.ratioWeight = this.fromSampleRate / this.toSampleRate; + this.tailExists = false; + this.lastWeight = 0; + this.initializeBuffers(); + } + } + else { + throw(new Error("Invalid settings specified for the resampler.")); + } +} +Resampler.prototype.compileInterpolationFunction = function () { + var toCompile = "var bufferLength = Math.min(buffer.length, this.outputBufferSize);\ + if ((bufferLength % " + this.channels + ") == 0) {\ + if (bufferLength > 0) {\ + var ratioWeight = this.ratioWeight;\ + var weight = 0;"; + for (var channel = 0; channel < this.channels; ++channel) { + toCompile += "var output" + channel + " = 0;" + } + toCompile += "var actualPosition = 0;\ + var amountToNext = 0;\ + var alreadyProcessedTail = !this.tailExists;\ + this.tailExists = false;\ + var outputBuffer = this.outputBuffer;\ + var outputOffset = 0;\ + var currentPosition = 0;\ + do {\ + if (alreadyProcessedTail) {\ + weight = ratioWeight;"; + for (channel = 0; channel < this.channels; ++channel) { + toCompile += "output" + channel + " = 0;" + } + toCompile += "}\ + else {\ + weight = this.lastWeight;"; + for (channel = 0; channel < this.channels; ++channel) { + toCompile += "output" + channel + " = this.lastOutput[" + channel + "];" + } + toCompile += "alreadyProcessedTail = true;\ + }\ + while (weight > 0 && actualPosition < bufferLength) {\ + amountToNext = 1 + actualPosition - currentPosition;\ + if (weight >= amountToNext) {"; + for (channel = 0; channel < this.channels; ++channel) { + toCompile += "output" + channel + " += buffer[actualPosition++] * amountToNext;" + } + toCompile += "currentPosition = actualPosition;\ + weight -= amountToNext;\ + }\ + else {"; + for (channel = 0; channel < this.channels; ++channel) { + toCompile += "output" + channel + " += buffer[actualPosition" + ((channel > 0) ? (" + " + channel) : "") + "] * weight;" + } + toCompile += "currentPosition += weight;\ + weight = 0;\ + break;\ + }\ + }\ + if (weight == 0) {"; + for (channel = 0; channel < this.channels; ++channel) { + toCompile += "outputBuffer[outputOffset++] = output" + channel + " / ratioWeight;" + } + toCompile += "}\ + else {\ + this.lastWeight = weight;"; + for (channel = 0; channel < this.channels; ++channel) { + toCompile += "this.lastOutput[" + channel + "] = output" + channel + ";" + } + toCompile += "this.tailExists = true;\ + break;\ + }\ + } while (actualPosition < bufferLength);\ + return this.bufferSlice(outputOffset);\ + }\ + else {\ + return (this.noReturn) ? 0 : [];\ + }\ + }\ + else {\ + throw(new Error(\"Buffer was of incorrect sample length.\"));\ + }"; + this.interpolate = Function("buffer", toCompile); +} +Resampler.prototype.bypassResampler = function (buffer) { + if (this.noReturn) { + //Set the buffer passed as our own, as we don't need to resample it: + this.outputBuffer = buffer; + return buffer.length; + } + else { + //Just return the buffer passsed: + return buffer; + } +} +Resampler.prototype.bufferSlice = function (sliceAmount) { + if (this.noReturn) { + //If we're going to access the properties directly from this object: + return sliceAmount; + } + else { + //Typed array and normal array buffer section referencing: + try { + return this.outputBuffer.subarray(0, sliceAmount); + } + catch (error) { + try { + //Regular array pass: + this.outputBuffer.length = sliceAmount; + return this.outputBuffer; + } + catch (error) { + //Nightly Firefox 4 used to have the subarray function named as slice: + return this.outputBuffer.slice(0, sliceAmount); + } + } + } +} +Resampler.prototype.initializeBuffers = function () { + //Initialize the internal buffer: + try { + this.outputBuffer = new Float32Array(this.outputBufferSize); + this.lastOutput = new Float32Array(this.channels); + } + catch (error) { + this.outputBuffer = []; + this.lastOutput = []; + } +} + +// End of js/other/resampler.js file. + +// Start of js/other/XAudioServer.js file. + +/*Initialize here first: + Example: + Stereo audio with a sample rate of 70 khz, a minimum buffer of 15000 samples total, a maximum buffer of 25000 samples total and a starting volume level of 1. + var parentObj = this; + this.audioHandle = new XAudioServer(2, 70000, 15000, 25000, function (sampleCount) { + return parentObj.audioUnderRun(sampleCount); + }, 1); + + The callback is passed the number of samples requested, while it can return any number of samples it wants back. +*/ +function XAudioServer(channels, sampleRate, minBufferSize, maxBufferSize, underRunCallback, volume) { + this.audioChannels = (channels == 2) ? 2 : 1; + webAudioMono = (this.audioChannels == 1); + XAudioJSSampleRate = (sampleRate > 0 && sampleRate <= 0xFFFFFF) ? sampleRate : 44100; + webAudioMinBufferSize = (minBufferSize >= (samplesPerCallback << 1) && minBufferSize < maxBufferSize) ? (minBufferSize & ((webAudioMono) ? 0xFFFFFFFF : 0xFFFFFFFE)) : (samplesPerCallback << 1); + webAudioMaxBufferSize = (Math.floor(maxBufferSize) > webAudioMinBufferSize + this.audioChannels) ? (maxBufferSize & ((webAudioMono) ? 0xFFFFFFFF : 0xFFFFFFFE)) : (minBufferSize << 1); + this.underRunCallback = (typeof underRunCallback == "function") ? underRunCallback : function () {}; + XAudioJSVolume = (volume >= 0 && volume <= 1) ? volume : 1; + this.audioType = -1; + this.mozAudioTail = []; + this.audioHandleMoz = null; + this.audioHandleFlash = null; + this.flashInitialized = false; + this.mozAudioFound = false; + this.initializeAudio(); +} +XAudioServer.prototype.MOZWriteAudio = function (buffer) { + //mozAudio: + this.MOZWriteAudioNoCallback(buffer); + this.MOZExecuteCallback(); +} +XAudioServer.prototype.MOZWriteAudioNoCallback = function (buffer) { + //mozAudio: + this.writeMozAudio(buffer); +} +XAudioServer.prototype.callbackBasedWriteAudio = function (buffer) { + //Callback-centered audio APIs: + this.callbackBasedWriteAudioNoCallback(buffer); + this.callbackBasedExecuteCallback(); +} +XAudioServer.prototype.callbackBasedWriteAudioNoCallback = function (buffer) { + //Callback-centered audio APIs: + var length = buffer.length; + for (var bufferCounter = 0; bufferCounter < length && audioBufferSize < webAudioMaxBufferSize;) { + audioContextSampleBuffer[audioBufferSize++] = buffer[bufferCounter++]; + } +} +/*Pass your samples into here! +Pack your samples as a one-dimenional array +With the channel samplea packed uniformly. +examples: + mono - [left, left, left, left] + stereo - [left, right, left, right, left, right, left, right] +*/ +XAudioServer.prototype.writeAudio = function (buffer) { + if (this.audioType == 0) { + this.MOZWriteAudio(buffer); + } + else if (this.audioType == 1) { + this.callbackBasedWriteAudio(buffer); + } + else if (this.audioType == 2) { + if (this.checkFlashInit() || launchedContext) { + this.callbackBasedWriteAudio(buffer); + } + else if (this.mozAudioFound) { + this.MOZWriteAudio(buffer); + } + } +} +/*Pass your samples into here if you don't want automatic callback calling: +Pack your samples as a one-dimenional array +With the channel samplea packed uniformly. +examples: + mono - [left, left, left, left] + stereo - [left, right, left, right, left, right, left, right] +Useful in preventing infinite recursion issues with calling writeAudio inside your callback. +*/ +XAudioServer.prototype.writeAudioNoCallback = function (buffer) { + if (this.audioType == 0) { + this.MOZWriteAudioNoCallback(buffer); + } + else if (this.audioType == 1) { + this.callbackBasedWriteAudioNoCallback(buffer); + } + else if (this.audioType == 2) { + if (this.checkFlashInit() || launchedContext) { + this.callbackBasedWriteAudioNoCallback(buffer); + } + else if (this.mozAudioFound) { + this.MOZWriteAudioNoCallback(buffer); + } + } +} +//Developer can use this to see how many samples to write (example: minimum buffer allotment minus remaining samples left returned from this function to make sure maximum buffering is done...) +//If -1 is returned, then that means metric could not be done. +XAudioServer.prototype.remainingBuffer = function () { + if (this.audioType == 0) { + //mozAudio: + return this.samplesAlreadyWritten - this.audioHandleMoz.mozCurrentSampleOffset(); + } + else if (this.audioType == 1) { + //WebKit Audio: + return (((resampledSamplesLeft() * resampleControl.ratioWeight) >> (this.audioChannels - 1)) << (this.audioChannels - 1)) + audioBufferSize; + } + else if (this.audioType == 2) { + if (this.checkFlashInit() || launchedContext) { + //Webkit Audio / Flash Plugin Audio: + return (((resampledSamplesLeft() * resampleControl.ratioWeight) >> (this.audioChannels - 1)) << (this.audioChannels - 1)) + audioBufferSize; + } + else if (this.mozAudioFound) { + //mozAudio: + return this.samplesAlreadyWritten - this.audioHandleMoz.mozCurrentSampleOffset(); + } + } + //Default return: + return 0; +} +XAudioServer.prototype.MOZExecuteCallback = function () { + //mozAudio: + var samplesRequested = webAudioMinBufferSize - this.remainingBuffer(); + if (samplesRequested > 0) { + this.writeMozAudio(this.underRunCallback(samplesRequested)); + } +} +XAudioServer.prototype.callbackBasedExecuteCallback = function () { + //WebKit /Flash Audio: + var samplesRequested = webAudioMinBufferSize - this.remainingBuffer(); + if (samplesRequested > 0) { + this.callbackBasedWriteAudioNoCallback(this.underRunCallback(samplesRequested)); + } +} +//If you just want your callback called for any possible refill (Execution of callback is still conditional): +XAudioServer.prototype.executeCallback = function () { + if (this.audioType == 0) { + this.MOZExecuteCallback(); + } + else if (this.audioType == 1) { + this.callbackBasedExecuteCallback(); + } + else if (this.audioType == 2) { + if (this.checkFlashInit() || launchedContext) { + this.callbackBasedExecuteCallback(); + } + else if (this.mozAudioFound) { + this.MOZExecuteCallback(); + } + } +} +//DO NOT CALL THIS, the lib calls this internally! +XAudioServer.prototype.initializeAudio = function () { + try { + throw (new Error("Select initializeWebAudio case")); // Line added for benchmarking. + this.preInitializeMozAudio(); + if (navigator.platform == "Linux i686") { + //Block out mozaudio usage for Linux Firefox due to moz bugs: + throw(new Error("")); + } + this.initializeMozAudio(); + } + catch (error) { + try { + this.initializeWebAudio(); + } + catch (error) { + try { + this.initializeFlashAudio(); + } + catch (error) { + throw(new Error("Browser does not support real time audio output.")); + } + } + } +} +XAudioServer.prototype.preInitializeMozAudio = function () { + //mozAudio - Synchronous Audio API + this.audioHandleMoz = new Audio(); + this.audioHandleMoz.mozSetup(this.audioChannels, XAudioJSSampleRate); + this.samplesAlreadyWritten = 0; + var emptySampleFrame = (this.audioChannels == 2) ? [0, 0] : [0]; + var prebufferAmount = 0; + if (navigator.platform != "MacIntel" && navigator.platform != "MacPPC") { //Mac OS X doesn't experience this moz-bug! + while (this.audioHandleMoz.mozCurrentSampleOffset() == 0) { + //Mozilla Audio Bugginess Workaround (Firefox freaks out if we don't give it a prebuffer under certain OSes): + prebufferAmount += this.audioHandleMoz.mozWriteAudio(emptySampleFrame); + } + var samplesToDoubleBuffer = prebufferAmount / this.audioChannels; + //Double the prebuffering for windows: + for (var index = 0; index < samplesToDoubleBuffer; index++) { + this.samplesAlreadyWritten += this.audioHandleMoz.mozWriteAudio(emptySampleFrame); + } + } + this.samplesAlreadyWritten += prebufferAmount; + webAudioMinBufferSize += this.samplesAlreadyWritten; + this.mozAudioFound = true; +} +XAudioServer.prototype.initializeMozAudio = function () { + //Fill in our own buffering up to the minimum specified: + this.writeMozAudio(getFloat32(webAudioMinBufferSize)); + this.audioType = 0; +} +XAudioServer.prototype.initializeWebAudio = function () { + if (launchedContext) { + resetCallbackAPIAudioBuffer(webAudioActualSampleRate, samplesPerCallback); + this.audioType = 1; + } + else { + throw(new Error("")); + } +} +XAudioServer.prototype.initializeFlashAudio = function () { + var existingFlashload = document.getElementById("XAudioJS"); + if (existingFlashload == null) { + var thisObj = this; + var mainContainerNode = document.createElement("div"); + mainContainerNode.setAttribute("style", "position: fixed; bottom: 0px; right: 0px; margin: 0px; padding: 0px; border: none; width: 8px; height: 8px; overflow: hidden; z-index: -1000; "); + var containerNode = document.createElement("div"); + containerNode.setAttribute("style", "position: static; border: none; width: 0px; height: 0px; visibility: hidden; margin: 8px; padding: 0px;"); + containerNode.setAttribute("id", "XAudioJS"); + mainContainerNode.appendChild(containerNode); + document.getElementsByTagName("body")[0].appendChild(mainContainerNode); + swfobject.embedSWF( + "XAudioJS.swf", + "XAudioJS", + "8", + "8", + "9.0.0", + "", + {}, + {"allowscriptaccess":"always"}, + {"style":"position: static; visibility: hidden; margin: 8px; padding: 0px; border: none"}, + function (event) { + if (event.success) { + thisObj.audioHandleFlash = event.ref; + } + else { + thisObj.audioType = 1; + } + } + ); + } + else { + this.audioHandleFlash = existingFlashload; + } + this.audioType = 2; +} +XAudioServer.prototype.changeVolume = function (newVolume) { + if (newVolume >= 0 && newVolume <= 1) { + XAudioJSVolume = newVolume; + if (this.checkFlashInit()) { + this.audioHandleFlash.changeVolume(XAudioJSVolume); + } + if (this.mozAudioFound) { + this.audioHandleMoz.volume = XAudioJSVolume; + } + } +} +//Moz Audio Buffer Writing Handler: +XAudioServer.prototype.writeMozAudio = function (buffer) { + var length = this.mozAudioTail.length; + if (length > 0) { + var samplesAccepted = this.audioHandleMoz.mozWriteAudio(this.mozAudioTail); + this.samplesAlreadyWritten += samplesAccepted; + this.mozAudioTail.splice(0, samplesAccepted); + } + length = Math.min(buffer.length, webAudioMaxBufferSize - this.samplesAlreadyWritten + this.audioHandleMoz.mozCurrentSampleOffset()); + var samplesAccepted = this.audioHandleMoz.mozWriteAudio(buffer); + this.samplesAlreadyWritten += samplesAccepted; + for (var index = 0; length > samplesAccepted; --length) { + //Moz Audio wants us saving the tail: + this.mozAudioTail.push(buffer[index++]); + } +} +//Checks to see if the NPAPI Adobe Flash bridge is ready yet: +XAudioServer.prototype.checkFlashInit = function () { + if (!this.flashInitialized && this.audioHandleFlash && this.audioHandleFlash.initialize) { + this.flashInitialized = true; + this.audioHandleFlash.initialize(this.audioChannels, XAudioJSVolume); + resetCallbackAPIAudioBuffer(44100, samplesPerCallback); + } + return this.flashInitialized; +} +/////////END LIB +function getFloat32(size) { + try { + return new Float32Array(size); + } + catch (error) { + return new Array(size); + } +} +function getFloat32Flat(size) { + try { + var newBuffer = new Float32Array(size); + } + catch (error) { + var newBuffer = new Array(size); + var audioSampleIndice = 0; + do { + newBuffer[audioSampleIndice] = 0; + } while (++audioSampleIndice < size); + } + return newBuffer; +} +//Flash NPAPI Event Handler: +var samplesPerCallback = 2048; //Has to be between 2048 and 4096 (If over, then samples are ignored, if under then silence is added). +var outputConvert = null; +function audioOutputFlashEvent() { //The callback that flash calls... + resampleRefill(); + return outputConvert(); +} +function generateFlashStereoString() { //Convert the arrays to one long string for speed. + var copyBinaryStringLeft = ""; + var copyBinaryStringRight = ""; + for (var index = 0; index < samplesPerCallback && resampleBufferStart != resampleBufferEnd; ++index) { + //Sanitize the buffer: + copyBinaryStringLeft += String.fromCharCode(((Math.min(Math.max(resampled[resampleBufferStart++] + 1, 0), 2) * 0x3FFF) | 0) + 0x3000); + copyBinaryStringRight += String.fromCharCode(((Math.min(Math.max(resampled[resampleBufferStart++] + 1, 0), 2) * 0x3FFF) | 0) + 0x3000); + if (resampleBufferStart == resampleBufferSize) { + resampleBufferStart = 0; + } + } + return copyBinaryStringLeft + copyBinaryStringRight; +} +function generateFlashMonoString() { //Convert the array to one long string for speed. + var copyBinaryString = ""; + for (var index = 0; index < samplesPerCallback && resampleBufferStart != resampleBufferEnd; ++index) { + //Sanitize the buffer: + copyBinaryString += String.fromCharCode(((Math.min(Math.max(resampled[resampleBufferStart++] + 1, 0), 2) * 0x3FFF) | 0) + 0x3000); + if (resampleBufferStart == resampleBufferSize) { + resampleBufferStart = 0; + } + } + return copyBinaryString; +} +//Audio API Event Handler: +var audioContextHandle = null; +var audioNode = null; +var audioSource = null; +var launchedContext = false; +var audioContextSampleBuffer = []; +var resampled = []; +var webAudioMinBufferSize = 15000; +var webAudioMaxBufferSize = 25000; +var webAudioActualSampleRate = 44100; +var XAudioJSSampleRate = 0; +var webAudioMono = false; +var XAudioJSVolume = 1; +var resampleControl = null; +var audioBufferSize = 0; +var resampleBufferStart = 0; +var resampleBufferEnd = 0; +var resampleBufferSize = 2; +function audioOutputEvent(event) { //Web Audio API callback... + var index = 0; + var buffer1 = event.outputBuffer.getChannelData(0); + var buffer2 = event.outputBuffer.getChannelData(1); + resampleRefill(); + if (!webAudioMono) { + //STEREO: + while (index < samplesPerCallback && resampleBufferStart != resampleBufferEnd) { + buffer1[index] = resampled[resampleBufferStart++] * XAudioJSVolume; + buffer2[index++] = resampled[resampleBufferStart++] * XAudioJSVolume; + if (resampleBufferStart == resampleBufferSize) { + resampleBufferStart = 0; + } + } + } + else { + //MONO: + while (index < samplesPerCallback && resampleBufferStart != resampleBufferEnd) { + buffer2[index] = buffer1[index] = resampled[resampleBufferStart++] * XAudioJSVolume; + ++index; + if (resampleBufferStart == resampleBufferSize) { + resampleBufferStart = 0; + } + } + } + //Pad with silence if we're underrunning: + while (index < samplesPerCallback) { + buffer2[index] = buffer1[index] = 0; + ++index; + } +} +function resampleRefill() { + if (audioBufferSize > 0) { + //Resample a chunk of audio: + var resampleLength = resampleControl.resampler(getBufferSamples()); + var resampledResult = resampleControl.outputBuffer; + for (var index2 = 0; index2 < resampleLength; ++index2) { + resampled[resampleBufferEnd++] = resampledResult[index2]; + if (resampleBufferEnd == resampleBufferSize) { + resampleBufferEnd = 0; + } + if (resampleBufferStart == resampleBufferEnd) { + ++resampleBufferStart; + if (resampleBufferStart == resampleBufferSize) { + resampleBufferStart = 0; + } + } + } + audioBufferSize = 0; + } +} +function resampledSamplesLeft() { + return ((resampleBufferStart <= resampleBufferEnd) ? 0 : resampleBufferSize) + resampleBufferEnd - resampleBufferStart; +} +function getBufferSamples() { + //Typed array and normal array buffer section referencing: + try { + return audioContextSampleBuffer.subarray(0, audioBufferSize); + } + catch (error) { + try { + //Regular array pass: + audioContextSampleBuffer.length = audioBufferSize; + return audioContextSampleBuffer; + } + catch (error) { + //Nightly Firefox 4 used to have the subarray function named as slice: + return audioContextSampleBuffer.slice(0, audioBufferSize); + } + } +} +//Initialize WebKit Audio /Flash Audio Buffer: +function resetCallbackAPIAudioBuffer(APISampleRate, bufferAlloc) { + audioContextSampleBuffer = getFloat32(webAudioMaxBufferSize); + audioBufferSize = webAudioMaxBufferSize; + resampleBufferStart = 0; + resampleBufferEnd = 0; + resampleBufferSize = Math.max(webAudioMaxBufferSize * Math.ceil(XAudioJSSampleRate / APISampleRate), samplesPerCallback) << 1; + if (webAudioMono) { + //MONO Handling: + resampled = getFloat32Flat(resampleBufferSize); + resampleControl = new Resampler(XAudioJSSampleRate, APISampleRate, 1, resampleBufferSize, true); + outputConvert = generateFlashMonoString; + } + else { + //STEREO Handling: + resampleBufferSize <<= 1; + resampled = getFloat32Flat(resampleBufferSize); + resampleControl = new Resampler(XAudioJSSampleRate, APISampleRate, 2, resampleBufferSize, true); + outputConvert = generateFlashStereoString; + } +} +//Initialize WebKit Audio: +(function () { + if (!launchedContext) { + try { + // The following line was modified for benchmarking: + audioContextHandle = new GameBoyAudioContext(); //Create a system audio context. + } + catch (error) { + try { + audioContextHandle = new AudioContext(); //Create a system audio context. + } + catch (error) { + return; + } + } + try { + audioSource = audioContextHandle.createBufferSource(); //We need to create a false input to get the chain started. + audioSource.loop = false; //Keep this alive forever (Event handler will know when to ouput.) + XAudioJSSampleRate = webAudioActualSampleRate = audioContextHandle.sampleRate; + audioSource.buffer = audioContextHandle.createBuffer(1, 1, webAudioActualSampleRate); //Create a zero'd input buffer for the input to be valid. + audioNode = audioContextHandle.createJavaScriptNode(samplesPerCallback, 1, 2); //Create 2 outputs and ignore the input buffer (Just copy buffer 1 over if mono) + audioNode.onaudioprocess = audioOutputEvent; //Connect the audio processing event to a handling function so we can manipulate output + audioSource.connect(audioNode); //Send and chain the input to the audio manipulation. + audioNode.connect(audioContextHandle.destination); //Send and chain the output of the audio manipulation to the system audio output. + audioSource.noteOn(0); //Start the loop! + } + catch (error) { + return; + } + launchedContext = true; + } +})(); + +// End of js/other/XAudioServer.js file. + +// Start of js/other/resize.js file. + +//JavaScript Image Resizer (c) 2012 - Grant Galitz +function Resize(widthOriginal, heightOriginal, targetWidth, targetHeight, blendAlpha, interpolationPass) { + this.widthOriginal = Math.abs(parseInt(widthOriginal) || 0); + this.heightOriginal = Math.abs(parseInt(heightOriginal) || 0); + this.targetWidth = Math.abs(parseInt(targetWidth) || 0); + this.targetHeight = Math.abs(parseInt(targetHeight) || 0); + this.colorChannels = (!!blendAlpha) ? 4 : 3; + this.interpolationPass = !!interpolationPass; + this.targetWidthMultipliedByChannels = this.targetWidth * this.colorChannels; + this.originalWidthMultipliedByChannels = this.widthOriginal * this.colorChannels; + this.originalHeightMultipliedByChannels = this.heightOriginal * this.colorChannels; + this.widthPassResultSize = this.targetWidthMultipliedByChannels * this.heightOriginal; + this.finalResultSize = this.targetWidthMultipliedByChannels * this.targetHeight; + this.initialize(); +} +Resize.prototype.initialize = function () { + //Perform some checks: + if (this.widthOriginal > 0 && this.heightOriginal > 0 && this.targetWidth > 0 && this.targetHeight > 0) { + if (this.widthOriginal == this.targetWidth) { + //Bypass the width resizer pass: + this.resizeWidth = this.bypassResizer; + } + else { + //Setup the width resizer pass: + this.ratioWeightWidthPass = this.widthOriginal / this.targetWidth; + if (this.ratioWeightWidthPass < 1 && this.interpolationPass) { + this.initializeFirstPassBuffers(true); + this.resizeWidth = (this.colorChannels == 4) ? this.resizeWidthInterpolatedRGBA : this.resizeWidthInterpolatedRGB; + } + else { + this.initializeFirstPassBuffers(false); + this.resizeWidth = (this.colorChannels == 4) ? this.resizeWidthRGBA : this.resizeWidthRGB; + } + } + if (this.heightOriginal == this.targetHeight) { + //Bypass the height resizer pass: + this.resizeHeight = this.bypassResizer; + } + else { + //Setup the height resizer pass: + this.ratioWeightHeightPass = this.heightOriginal / this.targetHeight; + if (this.ratioWeightHeightPass < 1 && this.interpolationPass) { + this.initializeSecondPassBuffers(true); + this.resizeHeight = this.resizeHeightInterpolated; + } + else { + this.initializeSecondPassBuffers(false); + this.resizeHeight = (this.colorChannels == 4) ? this.resizeHeightRGBA : this.resizeHeightRGB; + } + } + } + else { + throw(new Error("Invalid settings specified for the resizer.")); + } +} +Resize.prototype.resizeWidthRGB = function (buffer) { + var ratioWeight = this.ratioWeightWidthPass; + var weight = 0; + var amountToNext = 0; + var actualPosition = 0; + var currentPosition = 0; + var line = 0; + var pixelOffset = 0; + var outputOffset = 0; + var nextLineOffsetOriginalWidth = this.originalWidthMultipliedByChannels - 2; + var nextLineOffsetTargetWidth = this.targetWidthMultipliedByChannels - 2; + var output = this.outputWidthWorkBench; + var outputBuffer = this.widthBuffer; + do { + for (line = 0; line < this.originalHeightMultipliedByChannels;) { + output[line++] = 0; + output[line++] = 0; + output[line++] = 0; + } + weight = ratioWeight; + do { + amountToNext = 1 + actualPosition - currentPosition; + if (weight >= amountToNext) { + for (line = 0, pixelOffset = actualPosition; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetOriginalWidth) { + output[line++] += buffer[pixelOffset++] * amountToNext; + output[line++] += buffer[pixelOffset++] * amountToNext; + output[line++] += buffer[pixelOffset] * amountToNext; + } + currentPosition = actualPosition = actualPosition + 3; + weight -= amountToNext; + } + else { + for (line = 0, pixelOffset = actualPosition; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetOriginalWidth) { + output[line++] += buffer[pixelOffset++] * weight; + output[line++] += buffer[pixelOffset++] * weight; + output[line++] += buffer[pixelOffset] * weight; + } + currentPosition += weight; + break; + } + } while (weight > 0 && actualPosition < this.originalWidthMultipliedByChannels); + for (line = 0, pixelOffset = outputOffset; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetTargetWidth) { + outputBuffer[pixelOffset++] = output[line++] / ratioWeight; + outputBuffer[pixelOffset++] = output[line++] / ratioWeight; + outputBuffer[pixelOffset] = output[line++] / ratioWeight; + } + outputOffset += 3; + } while (outputOffset < this.targetWidthMultipliedByChannels); + return outputBuffer; +} +Resize.prototype.resizeWidthInterpolatedRGB = function (buffer) { + var ratioWeight = (this.widthOriginal - 1) / this.targetWidth; + var weight = 0; + var finalOffset = 0; + var pixelOffset = 0; + var outputBuffer = this.widthBuffer; + for (var targetPosition = 0; targetPosition < this.targetWidthMultipliedByChannels; targetPosition += 3, weight += ratioWeight) { + //Calculate weightings: + secondWeight = weight % 1; + firstWeight = 1 - secondWeight; + //Interpolate: + for (finalOffset = targetPosition, pixelOffset = Math.floor(weight) * 3; finalOffset < this.widthPassResultSize; pixelOffset += this.originalWidthMultipliedByChannels, finalOffset += this.targetWidthMultipliedByChannels) { + outputBuffer[finalOffset] = (buffer[pixelOffset] * firstWeight) + (buffer[pixelOffset + 3] * secondWeight); + outputBuffer[finalOffset + 1] = (buffer[pixelOffset + 1] * firstWeight) + (buffer[pixelOffset + 4] * secondWeight); + outputBuffer[finalOffset + 2] = (buffer[pixelOffset + 2] * firstWeight) + (buffer[pixelOffset + 5] * secondWeight); + } + } + return outputBuffer; +} +Resize.prototype.resizeWidthRGBA = function (buffer) { + var ratioWeight = this.ratioWeightWidthPass; + var weight = 0; + var amountToNext = 0; + var actualPosition = 0; + var currentPosition = 0; + var line = 0; + var pixelOffset = 0; + var outputOffset = 0; + var nextLineOffsetOriginalWidth = this.originalWidthMultipliedByChannels - 3; + var nextLineOffsetTargetWidth = this.targetWidthMultipliedByChannels - 3; + var output = this.outputWidthWorkBench; + var outputBuffer = this.widthBuffer; + do { + for (line = 0; line < this.originalHeightMultipliedByChannels;) { + output[line++] = 0; + output[line++] = 0; + output[line++] = 0; + output[line++] = 0; + } + weight = ratioWeight; + do { + amountToNext = 1 + actualPosition - currentPosition; + if (weight >= amountToNext) { + for (line = 0, pixelOffset = actualPosition; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetOriginalWidth) { + output[line++] += buffer[pixelOffset++] * amountToNext; + output[line++] += buffer[pixelOffset++] * amountToNext; + output[line++] += buffer[pixelOffset++] * amountToNext; + output[line++] += buffer[pixelOffset] * amountToNext; + } + currentPosition = actualPosition = actualPosition + 4; + weight -= amountToNext; + } + else { + for (line = 0, pixelOffset = actualPosition; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetOriginalWidth) { + output[line++] += buffer[pixelOffset++] * weight; + output[line++] += buffer[pixelOffset++] * weight; + output[line++] += buffer[pixelOffset++] * weight; + output[line++] += buffer[pixelOffset] * weight; + } + currentPosition += weight; + break; + } + } while (weight > 0 && actualPosition < this.originalWidthMultipliedByChannels); + for (line = 0, pixelOffset = outputOffset; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetTargetWidth) { + outputBuffer[pixelOffset++] = output[line++] / ratioWeight; + outputBuffer[pixelOffset++] = output[line++] / ratioWeight; + outputBuffer[pixelOffset++] = output[line++] / ratioWeight; + outputBuffer[pixelOffset] = output[line++] / ratioWeight; + } + outputOffset += 4; + } while (outputOffset < this.targetWidthMultipliedByChannels); + return outputBuffer; +} +Resize.prototype.resizeWidthInterpolatedRGBA = function (buffer) { + var ratioWeight = (this.widthOriginal - 1) / this.targetWidth; + var weight = 0; + var finalOffset = 0; + var pixelOffset = 0; + var outputBuffer = this.widthBuffer; + for (var targetPosition = 0; targetPosition < this.targetWidthMultipliedByChannels; targetPosition += 4, weight += ratioWeight) { + //Calculate weightings: + secondWeight = weight % 1; + firstWeight = 1 - secondWeight; + //Interpolate: + for (finalOffset = targetPosition, pixelOffset = Math.floor(weight) * 4; finalOffset < this.widthPassResultSize; pixelOffset += this.originalWidthMultipliedByChannels, finalOffset += this.targetWidthMultipliedByChannels) { + outputBuffer[finalOffset] = (buffer[pixelOffset] * firstWeight) + (buffer[pixelOffset + 4] * secondWeight); + outputBuffer[finalOffset + 1] = (buffer[pixelOffset + 1] * firstWeight) + (buffer[pixelOffset + 5] * secondWeight); + outputBuffer[finalOffset + 2] = (buffer[pixelOffset + 2] * firstWeight) + (buffer[pixelOffset + 6] * secondWeight); + outputBuffer[finalOffset + 3] = (buffer[pixelOffset + 3] * firstWeight) + (buffer[pixelOffset + 7] * secondWeight); + } + } + return outputBuffer; +} +Resize.prototype.resizeHeightRGB = function (buffer) { + var ratioWeight = this.ratioWeightHeightPass; + var weight = 0; + var amountToNext = 0; + var actualPosition = 0; + var currentPosition = 0; + var pixelOffset = 0; + var outputOffset = 0; + var output = this.outputHeightWorkBench; + var outputBuffer = this.heightBuffer; + do { + for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) { + output[pixelOffset++] = 0; + output[pixelOffset++] = 0; + output[pixelOffset++] = 0; + } + weight = ratioWeight; + do { + amountToNext = 1 + actualPosition - currentPosition; + if (weight >= amountToNext) { + for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) { + output[pixelOffset++] += buffer[actualPosition++] * amountToNext; + output[pixelOffset++] += buffer[actualPosition++] * amountToNext; + output[pixelOffset++] += buffer[actualPosition++] * amountToNext; + } + currentPosition = actualPosition; + weight -= amountToNext; + } + else { + for (pixelOffset = 0, amountToNext = actualPosition; pixelOffset < this.targetWidthMultipliedByChannels;) { + output[pixelOffset++] += buffer[amountToNext++] * weight; + output[pixelOffset++] += buffer[amountToNext++] * weight; + output[pixelOffset++] += buffer[amountToNext++] * weight; + } + currentPosition += weight; + break; + } + } while (weight > 0 && actualPosition < this.widthPassResultSize); + for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) { + outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] / ratioWeight); + outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] / ratioWeight); + outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] / ratioWeight); + } + } while (outputOffset < this.finalResultSize); + return outputBuffer; +} +Resize.prototype.resizeHeightInterpolated = function (buffer) { + var ratioWeight = (this.heightOriginal - 1) / this.targetHeight; + var weight = 0; + var finalOffset = 0; + var pixelOffset = 0; + var pixelOffsetAccumulated = 0; + var pixelOffsetAccumulated2 = 0; + var outputBuffer = this.heightBuffer; + do { + //Calculate weightings: + secondWeight = weight % 1; + firstWeight = 1 - secondWeight; + //Interpolate: + pixelOffsetAccumulated = Math.floor(weight) * this.targetWidthMultipliedByChannels; + pixelOffsetAccumulated2 = pixelOffsetAccumulated + this.targetWidthMultipliedByChannels; + for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels; ++pixelOffset) { + outputBuffer[finalOffset++] = (buffer[pixelOffsetAccumulated + pixelOffset] * firstWeight) + (buffer[pixelOffsetAccumulated2 + pixelOffset] * secondWeight); + } + weight += ratioWeight; + } while (finalOffset < this.finalResultSize); + return outputBuffer; +} +Resize.prototype.resizeHeightRGBA = function (buffer) { + var ratioWeight = this.ratioWeightHeightPass; + var weight = 0; + var amountToNext = 0; + var actualPosition = 0; + var currentPosition = 0; + var pixelOffset = 0; + var outputOffset = 0; + var output = this.outputHeightWorkBench; + var outputBuffer = this.heightBuffer; + do { + for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) { + output[pixelOffset++] = 0; + output[pixelOffset++] = 0; + output[pixelOffset++] = 0; + output[pixelOffset++] = 0; + } + weight = ratioWeight; + do { + amountToNext = 1 + actualPosition - currentPosition; + if (weight >= amountToNext) { + for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) { + output[pixelOffset++] += buffer[actualPosition++] * amountToNext; + output[pixelOffset++] += buffer[actualPosition++] * amountToNext; + output[pixelOffset++] += buffer[actualPosition++] * amountToNext; + output[pixelOffset++] += buffer[actualPosition++] * amountToNext; + } + currentPosition = actualPosition; + weight -= amountToNext; + } + else { + for (pixelOffset = 0, amountToNext = actualPosition; pixelOffset < this.targetWidthMultipliedByChannels;) { + output[pixelOffset++] += buffer[amountToNext++] * weight; + output[pixelOffset++] += buffer[amountToNext++] * weight; + output[pixelOffset++] += buffer[amountToNext++] * weight; + output[pixelOffset++] += buffer[amountToNext++] * weight; + } + currentPosition += weight; + break; + } + } while (weight > 0 && actualPosition < this.widthPassResultSize); + for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) { + outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] / ratioWeight); + outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] / ratioWeight); + outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] / ratioWeight); + outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] / ratioWeight); + } + } while (outputOffset < this.finalResultSize); + return outputBuffer; +} +Resize.prototype.resizeHeightInterpolatedRGBA = function (buffer) { + var ratioWeight = (this.heightOriginal - 1) / this.targetHeight; + var weight = 0; + var finalOffset = 0; + var pixelOffset = 0; + var outputBuffer = this.heightBuffer; + while (pixelOffset < this.finalResultSize) { + //Calculate weightings: + secondWeight = weight % 1; + firstWeight = 1 - secondWeight; + //Interpolate: + for (pixelOffset = Math.floor(weight) * 4; pixelOffset < this.targetWidthMultipliedByChannels; pixelOffset += 4) { + outputBuffer[finalOffset++] = (buffer[pixelOffset] * firstWeight) + (buffer[pixelOffset + 4] * secondWeight); + outputBuffer[finalOffset++] = (buffer[pixelOffset + 1] * firstWeight) + (buffer[pixelOffset + 5] * secondWeight); + outputBuffer[finalOffset++] = (buffer[pixelOffset + 2] * firstWeight) + (buffer[pixelOffset + 6] * secondWeight); + outputBuffer[finalOffset++] = (buffer[pixelOffset + 3] * firstWeight) + (buffer[pixelOffset + 7] * secondWeight); + } + weight += ratioWeight; + } + return outputBuffer; +} +Resize.prototype.resize = function (buffer) { + return this.resizeHeight(this.resizeWidth(buffer)); +} +Resize.prototype.bypassResizer = function (buffer) { + //Just return the buffer passsed: + return buffer; +} +Resize.prototype.initializeFirstPassBuffers = function (BILINEARAlgo) { + //Initialize the internal width pass buffers: + this.widthBuffer = this.generateFloatBuffer(this.widthPassResultSize); + if (!BILINEARAlgo) { + this.outputWidthWorkBench = this.generateFloatBuffer(this.originalHeightMultipliedByChannels); + } +} +Resize.prototype.initializeSecondPassBuffers = function (BILINEARAlgo) { + //Initialize the internal height pass buffers: + this.heightBuffer = this.generateUint8Buffer(this.finalResultSize); + if (!BILINEARAlgo) { + this.outputHeightWorkBench = this.generateFloatBuffer(this.targetWidthMultipliedByChannels); + } +} +Resize.prototype.generateFloatBuffer = function (bufferLength) { + //Generate a float32 typed array buffer: + try { + return new Float32Array(bufferLength); + } + catch (error) { + return []; + } +} +Resize.prototype.generateUint8Buffer = function (bufferLength) { + //Generate a uint8 typed array buffer: + try { + return this.checkForOperaMathBug(new Uint8Array(bufferLength)); + } + catch (error) { + return []; + } +} +Resize.prototype.checkForOperaMathBug = function (typedArray) { + typedArray[0] = -1; + typedArray[0] >>= 0; + if (typedArray[0] != 0xFF) { + return []; + } + else { + return typedArray; + } +} + +// End of js/other/resize.js file. + +// Remaining files are in gbemu-part2.js, since they run in strict mode. + diff --git a/js/src/octane/gbemu-part2.js b/js/src/octane/gbemu-part2.js new file mode 100644 index 0000000000..b4c9a8d19d --- /dev/null +++ b/js/src/octane/gbemu-part2.js @@ -0,0 +1,9780 @@ +// Portions copyright 2013 Google, Inc + +// Copyright (C) 2010 - 2012 Grant Galitz +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License version 2 as +// published by the Free Software Foundation. +// The full license is available at http://www.gnu.org/licenses/gpl.html +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. + +// The code has been adapted for use as a benchmark by Google. + +// Previous files are in gbemu-part1.js, since they need to run in sloppy mode. + +// Start of js/GameBoyCore.js file. + +"use strict"; +/* + * JavaScript GameBoy Color Emulator + * Copyright (C) 2010 - 2012 Grant Galitz + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * The full license is available at http://www.gnu.org/licenses/gpl.html + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ +function GameBoyCore(canvas, ROMImage) { + //Params, etc... + this.canvas = canvas; //Canvas DOM object for drawing out the graphics to. + this.drawContext = null; // LCD Context + this.ROMImage = ROMImage; //The game's ROM. + //CPU Registers and Flags: + this.registerA = 0x01; //Register A (Accumulator) + this.FZero = true; //Register F - Result was zero + this.FSubtract = false; //Register F - Subtraction was executed + this.FHalfCarry = true; //Register F - Half carry or half borrow + this.FCarry = true; //Register F - Carry or borrow + this.registerB = 0x00; //Register B + this.registerC = 0x13; //Register C + this.registerD = 0x00; //Register D + this.registerE = 0xD8; //Register E + this.registersHL = 0x014D; //Registers H and L combined + this.stackPointer = 0xFFFE; //Stack Pointer + this.programCounter = 0x0100; //Program Counter + //Some CPU Emulation State Variables: + this.CPUCyclesTotal = 0; //Relative CPU clocking to speed set, rounded appropriately. + this.CPUCyclesTotalBase = 0; //Relative CPU clocking to speed set base. + this.CPUCyclesTotalCurrent = 0; //Relative CPU clocking to speed set, the directly used value. + this.CPUCyclesTotalRoundoff = 0; //Clocking per iteration rounding catch. + this.baseCPUCyclesPerIteration = 0; //CPU clocks per iteration at 1x speed. + this.remainingClocks = 0; //HALT clocking overrun carry over. + this.inBootstrap = true; //Whether we're in the GBC boot ROM. + this.usedBootROM = false; //Updated upon ROM loading... + this.usedGBCBootROM = false; //Did we boot to the GBC boot ROM? + this.halt = false; //Has the CPU been suspended until the next interrupt? + this.skipPCIncrement = false; //Did we trip the DMG Halt bug? + this.stopEmulator = 3; //Has the emulation been paused or a frame has ended? + this.IME = true; //Are interrupts enabled? + this.IRQLineMatched = 0; //CPU IRQ assertion. + this.interruptsRequested = 0; //IF Register + this.interruptsEnabled = 0; //IE Register + this.hdmaRunning = false; //HDMA Transfer Flag - GBC only + this.CPUTicks = 0; //The number of clock cycles emulated. + this.doubleSpeedShifter = 0; //GBC double speed clocking shifter. + this.JoyPad = 0xFF; //Joypad State (two four-bit states actually) + this.CPUStopped = false; //CPU STOP status. + //Main RAM, MBC RAM, GBC Main RAM, VRAM, etc. + this.memoryReader = []; //Array of functions mapped to read back memory + this.memoryWriter = []; //Array of functions mapped to write to memory + this.memoryHighReader = []; //Array of functions mapped to read back 0xFFXX memory + this.memoryHighWriter = []; //Array of functions mapped to write to 0xFFXX memory + this.ROM = []; //The full ROM file dumped to an array. + this.memory = []; //Main Core Memory + this.MBCRam = []; //Switchable RAM (Used by games for more RAM) for the main memory range 0xA000 - 0xC000. + this.VRAM = []; //Extra VRAM bank for GBC. + this.GBCMemory = []; //GBC main RAM Banks + this.MBC1Mode = false; //MBC1 Type (4/32, 16/8) + this.MBCRAMBanksEnabled = false; //MBC RAM Access Control. + this.currMBCRAMBank = 0; //MBC Currently Indexed RAM Bank + this.currMBCRAMBankPosition = -0xA000; //MBC Position Adder; + this.cGBC = false; //GameBoy Color detection. + this.gbcRamBank = 1; //Currently Switched GameBoy Color ram bank + this.gbcRamBankPosition = -0xD000; //GBC RAM offset from address start. + this.gbcRamBankPositionECHO = -0xF000; //GBC RAM (ECHO mirroring) offset from address start. + this.RAMBanks = [0, 1, 2, 4, 16]; //Used to map the RAM banks to maximum size the MBC used can do. + this.ROMBank1offs = 0; //Offset of the ROM bank switching. + this.currentROMBank = 0; //The parsed current ROM bank selection. + this.cartridgeType = 0; //Cartridge Type + this.name = ""; //Name of the game + this.gameCode = ""; //Game code (Suffix for older games) + this.fromSaveState = false; //A boolean to see if this was loaded in as a save state. + this.savedStateFileName = ""; //When loaded in as a save state, this will not be empty. + this.STATTracker = 0; //Tracker for STAT triggering. + this.modeSTAT = 0; //The scan line mode (for lines 1-144 it's 2-3-0, for 145-154 it's 1) + this.spriteCount = 252; //Mode 3 extra clocking counter (Depends on how many sprites are on the current line.). + this.LYCMatchTriggerSTAT = false; //Should we trigger an interrupt if LY==LYC? + this.mode2TriggerSTAT = false; //Should we trigger an interrupt if in mode 2? + this.mode1TriggerSTAT = false; //Should we trigger an interrupt if in mode 1? + this.mode0TriggerSTAT = false; //Should we trigger an interrupt if in mode 0? + this.LCDisOn = false; //Is the emulated LCD controller on? + this.LINECONTROL = []; //Array of functions to handle each scan line we do (onscreen + offscreen) + this.DISPLAYOFFCONTROL = [function (parentObj) { + //Array of line 0 function to handle the LCD controller when it's off (Do nothing!). + }]; + this.LCDCONTROL = null; //Pointer to either LINECONTROL or DISPLAYOFFCONTROL. + this.initializeLCDController(); //Compile the LCD controller functions. + //RTC (Real Time Clock for MBC3): + this.RTCisLatched = false; + this.latchedSeconds = 0; //RTC latched seconds. + this.latchedMinutes = 0; //RTC latched minutes. + this.latchedHours = 0; //RTC latched hours. + this.latchedLDays = 0; //RTC latched lower 8-bits of the day counter. + this.latchedHDays = 0; //RTC latched high-bit of the day counter. + this.RTCSeconds = 0; //RTC seconds counter. + this.RTCMinutes = 0; //RTC minutes counter. + this.RTCHours = 0; //RTC hours counter. + this.RTCDays = 0; //RTC days counter. + this.RTCDayOverFlow = false; //Did the RTC overflow and wrap the day counter? + this.RTCHALT = false; //Is the RTC allowed to clock up? + //Gyro: + this.highX = 127; + this.lowX = 127; + this.highY = 127; + this.lowY = 127; + //Sound variables: + this.audioHandle = null; //XAudioJS handle + this.numSamplesTotal = 0; //Length of the sound buffers. + this.sampleSize = 0; //Length of the sound buffer for one channel. + this.dutyLookup = [ //Map the duty values given to ones we can work with. + [false, false, false, false, false, false, false, true], + [true, false, false, false, false, false, false, true], + [true, false, false, false, false, true, true, true], + [false, true, true, true, true, true, true, false] + ]; + this.currentBuffer = []; //The audio buffer we're working on. + this.bufferContainAmount = 0; //Buffer maintenance metric. + this.LSFR15Table = null; + this.LSFR7Table = null; + this.noiseSampleTable = null; + this.initializeAudioStartState(); + this.soundMasterEnabled = false; //As its name implies + this.channel3PCM = null; //Channel 3 adjusted sample buffer. + //Vin Shit: + this.VinLeftChannelMasterVolume = 8; //Computed post-mixing volume. + this.VinRightChannelMasterVolume = 8; //Computed post-mixing volume. + //Channel paths enabled: + this.leftChannel1 = false; + this.leftChannel2 = false; + this.leftChannel3 = false; + this.leftChannel4 = false; + this.rightChannel1 = false; + this.rightChannel2 = false; + this.rightChannel3 = false; + this.rightChannel4 = false; + //Channel output level caches: + this.channel1currentSampleLeft = 0; + this.channel1currentSampleRight = 0; + this.channel2currentSampleLeft = 0; + this.channel2currentSampleRight = 0; + this.channel3currentSampleLeft = 0; + this.channel3currentSampleRight = 0; + this.channel4currentSampleLeft = 0; + this.channel4currentSampleRight = 0; + this.channel1currentSampleLeftSecondary = 0; + this.channel1currentSampleRightSecondary = 0; + this.channel2currentSampleLeftSecondary = 0; + this.channel2currentSampleRightSecondary = 0; + this.channel3currentSampleLeftSecondary = 0; + this.channel3currentSampleRightSecondary = 0; + this.channel4currentSampleLeftSecondary = 0; + this.channel4currentSampleRightSecondary = 0; + this.channel1currentSampleLeftTrimary = 0; + this.channel1currentSampleRightTrimary = 0; + this.channel2currentSampleLeftTrimary = 0; + this.channel2currentSampleRightTrimary = 0; + this.mixerOutputCache = 0; + //Pre-multipliers to cache some calculations: + this.initializeTiming(); + this.machineOut = 0; //Premultiplier for audio samples per instruction. + //Audio generation counters: + this.audioTicks = 0; //Used to sample the audio system every x CPU instructions. + this.audioIndex = 0; //Used to keep alignment on audio generation. + this.rollover = 0; //Used to keep alignment on the number of samples to output (Realign from counter alias). + //Timing Variables + this.emulatorTicks = 0; //Times for how many instructions to execute before ending the loop. + this.DIVTicks = 56; //DIV Ticks Counter (Invisible lower 8-bit) + this.LCDTicks = 60; //Counter for how many instructions have been executed on a scanline so far. + this.timerTicks = 0; //Counter for the TIMA timer. + this.TIMAEnabled = false; //Is TIMA enabled? + this.TACClocker = 1024; //Timer Max Ticks + this.serialTimer = 0; //Serial IRQ Timer + this.serialShiftTimer = 0; //Serial Transfer Shift Timer + this.serialShiftTimerAllocated = 0; //Serial Transfer Shift Timer Refill + this.IRQEnableDelay = 0; //Are the interrupts on queue to be enabled? + var dateVar = new_Date(); // The line is changed for benchmarking. + this.lastIteration = dateVar.getTime();//The last time we iterated the main loop. + dateVar = new_Date(); // The line is changed for benchmarking. + this.firstIteration = dateVar.getTime(); + this.iterations = 0; + this.actualScanLine = 0; //Actual scan line... + this.lastUnrenderedLine = 0; //Last rendered scan line... + this.queuedScanLines = 0; + this.totalLinesPassed = 0; + this.haltPostClocks = 0; //Post-Halt clocking. + //ROM Cartridge Components: + this.cMBC1 = false; //Does the cartridge use MBC1? + this.cMBC2 = false; //Does the cartridge use MBC2? + this.cMBC3 = false; //Does the cartridge use MBC3? + this.cMBC5 = false; //Does the cartridge use MBC5? + this.cMBC7 = false; //Does the cartridge use MBC7? + this.cSRAM = false; //Does the cartridge use save RAM? + this.cMMMO1 = false; //... + this.cRUMBLE = false; //Does the cartridge use the RUMBLE addressing (modified MBC5)? + this.cCamera = false; //Is the cartridge actually a GameBoy Camera? + this.cTAMA5 = false; //Does the cartridge use TAMA5? (Tamagotchi Cartridge) + this.cHuC3 = false; //Does the cartridge use HuC3 (Hudson Soft / modified MBC3)? + this.cHuC1 = false; //Does the cartridge use HuC1 (Hudson Soft / modified MBC1)? + this.cTIMER = false; //Does the cartridge have an RTC? + this.ROMBanks = [ // 1 Bank = 16 KBytes = 256 Kbits + 2, 4, 8, 16, 32, 64, 128, 256, 512 + ]; + this.ROMBanks[0x52] = 72; + this.ROMBanks[0x53] = 80; + this.ROMBanks[0x54] = 96; + this.numRAMBanks = 0; //How many RAM banks were actually allocated? + ////Graphics Variables + this.currVRAMBank = 0; //Current VRAM bank for GBC. + this.backgroundX = 0; //Register SCX (X-Scroll) + this.backgroundY = 0; //Register SCY (Y-Scroll) + this.gfxWindowDisplay = false; //Is the windows enabled? + this.gfxSpriteShow = false; //Are sprites enabled? + this.gfxSpriteNormalHeight = true; //Are we doing 8x8 or 8x16 sprites? + this.bgEnabled = true; //Is the BG enabled? + this.BGPriorityEnabled = true; //Can we flag the BG for priority over sprites? + this.gfxWindowCHRBankPosition = 0; //The current bank of the character map the window uses. + this.gfxBackgroundCHRBankPosition = 0; //The current bank of the character map the BG uses. + this.gfxBackgroundBankOffset = 0x80; //Fast mapping of the tile numbering/ + this.windowY = 0; //Current Y offset of the window. + this.windowX = 0; //Current X offset of the window. + this.drewBlank = 0; //To prevent the repeating of drawing a blank screen. + this.drewFrame = false; //Throttle how many draws we can do to once per iteration. + this.midScanlineOffset = -1; //mid-scanline rendering offset. + this.pixelEnd = 0; //track the x-coord limit for line rendering (mid-scanline usage). + this.currentX = 0; //The x-coord we left off at for mid-scanline rendering. + //BG Tile Pointer Caches: + this.BGCHRBank1 = null; + this.BGCHRBank2 = null; + this.BGCHRCurrentBank = null; + //Tile Data Cache: + this.tileCache = null; + //Palettes: + this.colors = [0xEFFFDE, 0xADD794, 0x529273, 0x183442]; //"Classic" GameBoy palette colors. + this.OBJPalette = null; + this.BGPalette = null; + this.gbcOBJRawPalette = null; + this.gbcBGRawPalette = null; + this.gbOBJPalette = null; + this.gbBGPalette = null; + this.gbcOBJPalette = null; + this.gbcBGPalette = null; + this.gbBGColorizedPalette = null; + this.gbOBJColorizedPalette = null; + this.cachedBGPaletteConversion = null; + this.cachedOBJPaletteConversion = null; + this.updateGBBGPalette = this.updateGBRegularBGPalette; + this.updateGBOBJPalette = this.updateGBRegularOBJPalette; + this.colorizedGBPalettes = false; + this.BGLayerRender = null; //Reference to the BG rendering function. + this.WindowLayerRender = null; //Reference to the window rendering function. + this.SpriteLayerRender = null; //Reference to the OAM rendering function. + this.frameBuffer = []; //The internal frame-buffer. + this.swizzledFrame = null; //The secondary gfx buffer that holds the converted RGBA values. + this.canvasBuffer = null; //imageData handle + this.pixelStart = 0; //Temp variable for holding the current working framebuffer offset. + //Variables used for scaling in JS: + this.onscreenWidth = this.offscreenWidth = 160; + this.onscreenHeight = this.offScreenheight = 144; + this.offscreenRGBCount = this.onscreenWidth * this.onscreenHeight * 4; + //Initialize the white noise cache tables ahead of time: + this.intializeWhiteNoise(); +} + +// Start of code changed for benchmarking (removed ROM): +GameBoyCore.prototype.GBBOOTROM = []; +GameBoyCore.prototype.GBCBOOTROM = []; +// End of code changed for benchmarking. + +GameBoyCore.prototype.ffxxDump = [ //Dump of the post-BOOT I/O register state (From gambatte): + 0x0F, 0x00, 0x7C, 0xFF, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, + 0x80, 0xBF, 0xF3, 0xFF, 0xBF, 0xFF, 0x3F, 0x00, 0xFF, 0xBF, 0x7F, 0xFF, 0x9F, 0xFF, 0xBF, 0xFF, + 0xFF, 0x00, 0x00, 0xBF, 0x77, 0xF3, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, + 0x91, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7E, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xC1, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, + 0xF8, 0xFF, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xCE, 0xED, 0x66, 0x66, 0xCC, 0x0D, 0x00, 0x0B, 0x03, 0x73, 0x00, 0x83, 0x00, 0x0C, 0x00, 0x0D, + 0x00, 0x08, 0x11, 0x1F, 0x88, 0x89, 0x00, 0x0E, 0xDC, 0xCC, 0x6E, 0xE6, 0xDD, 0xDD, 0xD9, 0x99, + 0xBB, 0xBB, 0x67, 0x63, 0x6E, 0x0E, 0xEC, 0xCC, 0xDD, 0xDC, 0x99, 0x9F, 0xBB, 0xB9, 0x33, 0x3E, + 0x45, 0xEC, 0x52, 0xFA, 0x08, 0xB7, 0x07, 0x5D, 0x01, 0xFD, 0xC0, 0xFF, 0x08, 0xFC, 0x00, 0xE5, + 0x0B, 0xF8, 0xC2, 0xCE, 0xF4, 0xF9, 0x0F, 0x7F, 0x45, 0x6D, 0x3D, 0xFE, 0x46, 0x97, 0x33, 0x5E, + 0x08, 0xEF, 0xF1, 0xFF, 0x86, 0x83, 0x24, 0x74, 0x12, 0xFC, 0x00, 0x9F, 0xB4, 0xB7, 0x06, 0xD5, + 0xD0, 0x7A, 0x00, 0x9E, 0x04, 0x5F, 0x41, 0x2F, 0x1D, 0x77, 0x36, 0x75, 0x81, 0xAA, 0x70, 0x3A, + 0x98, 0xD1, 0x71, 0x02, 0x4D, 0x01, 0xC1, 0xFF, 0x0D, 0x00, 0xD3, 0x05, 0xF9, 0x00, 0x0B, 0x00 +]; +GameBoyCore.prototype.OPCODE = [ + //NOP + //#0x00: + function (parentObj) { + //Do Nothing... + }, + //LD BC, nn + //#0x01: + function (parentObj) { + parentObj.registerC = parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.registerB = parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF); + parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF; + }, + //LD (BC), A + //#0x02: + function (parentObj) { + parentObj.memoryWrite((parentObj.registerB << 8) | parentObj.registerC, parentObj.registerA); + }, + //INC BC + //#0x03: + function (parentObj) { + var temp_var = ((parentObj.registerB << 8) | parentObj.registerC) + 1; + parentObj.registerB = (temp_var >> 8) & 0xFF; + parentObj.registerC = temp_var & 0xFF; + }, + //INC B + //#0x04: + function (parentObj) { + parentObj.registerB = (parentObj.registerB + 1) & 0xFF; + parentObj.FZero = (parentObj.registerB == 0); + parentObj.FHalfCarry = ((parentObj.registerB & 0xF) == 0); + parentObj.FSubtract = false; + }, + //DEC B + //#0x05: + function (parentObj) { + parentObj.registerB = (parentObj.registerB - 1) & 0xFF; + parentObj.FZero = (parentObj.registerB == 0); + parentObj.FHalfCarry = ((parentObj.registerB & 0xF) == 0xF); + parentObj.FSubtract = true; + }, + //LD B, n + //#0x06: + function (parentObj) { + parentObj.registerB = parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + }, + //RLCA + //#0x07: + function (parentObj) { + parentObj.FCarry = (parentObj.registerA > 0x7F); + parentObj.registerA = ((parentObj.registerA << 1) & 0xFF) | (parentObj.registerA >> 7); + parentObj.FZero = parentObj.FSubtract = parentObj.FHalfCarry = false; + }, + //LD (nn), SP + //#0x08: + function (parentObj) { + var temp_var = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF; + parentObj.memoryWrite(temp_var, parentObj.stackPointer & 0xFF); + parentObj.memoryWrite((temp_var + 1) & 0xFFFF, parentObj.stackPointer >> 8); + }, + //ADD HL, BC + //#0x09: + function (parentObj) { + var dirtySum = parentObj.registersHL + ((parentObj.registerB << 8) | parentObj.registerC); + parentObj.FHalfCarry = ((parentObj.registersHL & 0xFFF) > (dirtySum & 0xFFF)); + parentObj.FCarry = (dirtySum > 0xFFFF); + parentObj.registersHL = dirtySum & 0xFFFF; + parentObj.FSubtract = false; + }, + //LD A, (BC) + //#0x0A: + function (parentObj) { + parentObj.registerA = parentObj.memoryRead((parentObj.registerB << 8) | parentObj.registerC); + }, + //DEC BC + //#0x0B: + function (parentObj) { + var temp_var = (((parentObj.registerB << 8) | parentObj.registerC) - 1) & 0xFFFF; + parentObj.registerB = temp_var >> 8; + parentObj.registerC = temp_var & 0xFF; + }, + //INC C + //#0x0C: + function (parentObj) { + parentObj.registerC = (parentObj.registerC + 1) & 0xFF; + parentObj.FZero = (parentObj.registerC == 0); + parentObj.FHalfCarry = ((parentObj.registerC & 0xF) == 0); + parentObj.FSubtract = false; + }, + //DEC C + //#0x0D: + function (parentObj) { + parentObj.registerC = (parentObj.registerC - 1) & 0xFF; + parentObj.FZero = (parentObj.registerC == 0); + parentObj.FHalfCarry = ((parentObj.registerC & 0xF) == 0xF); + parentObj.FSubtract = true; + }, + //LD C, n + //#0x0E: + function (parentObj) { + parentObj.registerC = parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + }, + //RRCA + //#0x0F: + function (parentObj) { + parentObj.registerA = (parentObj.registerA >> 1) | ((parentObj.registerA & 1) << 7); + parentObj.FCarry = (parentObj.registerA > 0x7F); + parentObj.FZero = parentObj.FSubtract = parentObj.FHalfCarry = false; + }, + //STOP + //#0x10: + function (parentObj) { + if (parentObj.cGBC) { + if ((parentObj.memory[0xFF4D] & 0x01) == 0x01) { //Speed change requested. + if (parentObj.memory[0xFF4D] > 0x7F) { //Go back to single speed mode. + cout("Going into single clock speed mode.", 0); + parentObj.doubleSpeedShifter = 0; + parentObj.memory[0xFF4D] &= 0x7F; //Clear the double speed mode flag. + } + else { //Go to double speed mode. + cout("Going into double clock speed mode.", 0); + parentObj.doubleSpeedShifter = 1; + parentObj.memory[0xFF4D] |= 0x80; //Set the double speed mode flag. + } + parentObj.memory[0xFF4D] &= 0xFE; //Reset the request bit. + } + else { + parentObj.handleSTOP(); + } + } + else { + parentObj.handleSTOP(); + } + }, + //LD DE, nn + //#0x11: + function (parentObj) { + parentObj.registerE = parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.registerD = parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF); + parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF; + }, + //LD (DE), A + //#0x12: + function (parentObj) { + parentObj.memoryWrite((parentObj.registerD << 8) | parentObj.registerE, parentObj.registerA); + }, + //INC DE + //#0x13: + function (parentObj) { + var temp_var = ((parentObj.registerD << 8) | parentObj.registerE) + 1; + parentObj.registerD = (temp_var >> 8) & 0xFF; + parentObj.registerE = temp_var & 0xFF; + }, + //INC D + //#0x14: + function (parentObj) { + parentObj.registerD = (parentObj.registerD + 1) & 0xFF; + parentObj.FZero = (parentObj.registerD == 0); + parentObj.FHalfCarry = ((parentObj.registerD & 0xF) == 0); + parentObj.FSubtract = false; + }, + //DEC D + //#0x15: + function (parentObj) { + parentObj.registerD = (parentObj.registerD - 1) & 0xFF; + parentObj.FZero = (parentObj.registerD == 0); + parentObj.FHalfCarry = ((parentObj.registerD & 0xF) == 0xF); + parentObj.FSubtract = true; + }, + //LD D, n + //#0x16: + function (parentObj) { + parentObj.registerD = parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + }, + //RLA + //#0x17: + function (parentObj) { + var carry_flag = (parentObj.FCarry) ? 1 : 0; + parentObj.FCarry = (parentObj.registerA > 0x7F); + parentObj.registerA = ((parentObj.registerA << 1) & 0xFF) | carry_flag; + parentObj.FZero = parentObj.FSubtract = parentObj.FHalfCarry = false; + }, + //JR n + //#0x18: + function (parentObj) { + parentObj.programCounter = (parentObj.programCounter + ((parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter) << 24) >> 24) + 1) & 0xFFFF; + }, + //ADD HL, DE + //#0x19: + function (parentObj) { + var dirtySum = parentObj.registersHL + ((parentObj.registerD << 8) | parentObj.registerE); + parentObj.FHalfCarry = ((parentObj.registersHL & 0xFFF) > (dirtySum & 0xFFF)); + parentObj.FCarry = (dirtySum > 0xFFFF); + parentObj.registersHL = dirtySum & 0xFFFF; + parentObj.FSubtract = false; + }, + //LD A, (DE) + //#0x1A: + function (parentObj) { + parentObj.registerA = parentObj.memoryRead((parentObj.registerD << 8) | parentObj.registerE); + }, + //DEC DE + //#0x1B: + function (parentObj) { + var temp_var = (((parentObj.registerD << 8) | parentObj.registerE) - 1) & 0xFFFF; + parentObj.registerD = temp_var >> 8; + parentObj.registerE = temp_var & 0xFF; + }, + //INC E + //#0x1C: + function (parentObj) { + parentObj.registerE = (parentObj.registerE + 1) & 0xFF; + parentObj.FZero = (parentObj.registerE == 0); + parentObj.FHalfCarry = ((parentObj.registerE & 0xF) == 0); + parentObj.FSubtract = false; + }, + //DEC E + //#0x1D: + function (parentObj) { + parentObj.registerE = (parentObj.registerE - 1) & 0xFF; + parentObj.FZero = (parentObj.registerE == 0); + parentObj.FHalfCarry = ((parentObj.registerE & 0xF) == 0xF); + parentObj.FSubtract = true; + }, + //LD E, n + //#0x1E: + function (parentObj) { + parentObj.registerE = parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + }, + //RRA + //#0x1F: + function (parentObj) { + var carry_flag = (parentObj.FCarry) ? 0x80 : 0; + parentObj.FCarry = ((parentObj.registerA & 1) == 1); + parentObj.registerA = (parentObj.registerA >> 1) | carry_flag; + parentObj.FZero = parentObj.FSubtract = parentObj.FHalfCarry = false; + }, + //JR NZ, n + //#0x20: + function (parentObj) { + if (!parentObj.FZero) { + parentObj.programCounter = (parentObj.programCounter + ((parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter) << 24) >> 24) + 1) & 0xFFFF; + parentObj.CPUTicks += 4; + } + else { + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + } + }, + //LD HL, nn + //#0x21: + function (parentObj) { + parentObj.registersHL = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF; + }, + //LDI (HL), A + //#0x22: + function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.registerA); + parentObj.registersHL = (parentObj.registersHL + 1) & 0xFFFF; + }, + //INC HL + //#0x23: + function (parentObj) { + parentObj.registersHL = (parentObj.registersHL + 1) & 0xFFFF; + }, + //INC H + //#0x24: + function (parentObj) { + var H = ((parentObj.registersHL >> 8) + 1) & 0xFF; + parentObj.FZero = (H == 0); + parentObj.FHalfCarry = ((H & 0xF) == 0); + parentObj.FSubtract = false; + parentObj.registersHL = (H << 8) | (parentObj.registersHL & 0xFF); + }, + //DEC H + //#0x25: + function (parentObj) { + var H = ((parentObj.registersHL >> 8) - 1) & 0xFF; + parentObj.FZero = (H == 0); + parentObj.FHalfCarry = ((H & 0xF) == 0xF); + parentObj.FSubtract = true; + parentObj.registersHL = (H << 8) | (parentObj.registersHL & 0xFF); + }, + //LD H, n + //#0x26: + function (parentObj) { + parentObj.registersHL = (parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter) << 8) | (parentObj.registersHL & 0xFF); + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + }, + //DAA + //#0x27: + function (parentObj) { + if (!parentObj.FSubtract) { + if (parentObj.FCarry || parentObj.registerA > 0x99) { + parentObj.registerA = (parentObj.registerA + 0x60) & 0xFF; + parentObj.FCarry = true; + } + if (parentObj.FHalfCarry || (parentObj.registerA & 0xF) > 0x9) { + parentObj.registerA = (parentObj.registerA + 0x06) & 0xFF; + parentObj.FHalfCarry = false; + } + } + else if (parentObj.FCarry && parentObj.FHalfCarry) { + parentObj.registerA = (parentObj.registerA + 0x9A) & 0xFF; + parentObj.FHalfCarry = false; + } + else if (parentObj.FCarry) { + parentObj.registerA = (parentObj.registerA + 0xA0) & 0xFF; + } + else if (parentObj.FHalfCarry) { + parentObj.registerA = (parentObj.registerA + 0xFA) & 0xFF; + parentObj.FHalfCarry = false; + } + parentObj.FZero = (parentObj.registerA == 0); + }, + //JR Z, n + //#0x28: + function (parentObj) { + if (parentObj.FZero) { + parentObj.programCounter = (parentObj.programCounter + ((parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter) << 24) >> 24) + 1) & 0xFFFF; + parentObj.CPUTicks += 4; + } + else { + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + } + }, + //ADD HL, HL + //#0x29: + function (parentObj) { + parentObj.FHalfCarry = ((parentObj.registersHL & 0xFFF) > 0x7FF); + parentObj.FCarry = (parentObj.registersHL > 0x7FFF); + parentObj.registersHL = (parentObj.registersHL << 1) & 0xFFFF; + parentObj.FSubtract = false; + }, + //LDI A, (HL) + //#0x2A: + function (parentObj) { + parentObj.registerA = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + parentObj.registersHL = (parentObj.registersHL + 1) & 0xFFFF; + }, + //DEC HL + //#0x2B: + function (parentObj) { + parentObj.registersHL = (parentObj.registersHL - 1) & 0xFFFF; + }, + //INC L + //#0x2C: + function (parentObj) { + var L = (parentObj.registersHL + 1) & 0xFF; + parentObj.FZero = (L == 0); + parentObj.FHalfCarry = ((L & 0xF) == 0); + parentObj.FSubtract = false; + parentObj.registersHL = (parentObj.registersHL & 0xFF00) | L; + }, + //DEC L + //#0x2D: + function (parentObj) { + var L = (parentObj.registersHL - 1) & 0xFF; + parentObj.FZero = (L == 0); + parentObj.FHalfCarry = ((L & 0xF) == 0xF); + parentObj.FSubtract = true; + parentObj.registersHL = (parentObj.registersHL & 0xFF00) | L; + }, + //LD L, n + //#0x2E: + function (parentObj) { + parentObj.registersHL = (parentObj.registersHL & 0xFF00) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + }, + //CPL + //#0x2F: + function (parentObj) { + parentObj.registerA ^= 0xFF; + parentObj.FSubtract = parentObj.FHalfCarry = true; + }, + //JR NC, n + //#0x30: + function (parentObj) { + if (!parentObj.FCarry) { + parentObj.programCounter = (parentObj.programCounter + ((parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter) << 24) >> 24) + 1) & 0xFFFF; + parentObj.CPUTicks += 4; + } + else { + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + } + }, + //LD SP, nn + //#0x31: + function (parentObj) { + parentObj.stackPointer = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF; + }, + //LDD (HL), A + //#0x32: + function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.registerA); + parentObj.registersHL = (parentObj.registersHL - 1) & 0xFFFF; + }, + //INC SP + //#0x33: + function (parentObj) { + parentObj.stackPointer = (parentObj.stackPointer + 1) & 0xFFFF; + }, + //INC (HL) + //#0x34: + function (parentObj) { + var temp_var = (parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) + 1) & 0xFF; + parentObj.FZero = (temp_var == 0); + parentObj.FHalfCarry = ((temp_var & 0xF) == 0); + parentObj.FSubtract = false; + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, temp_var); + }, + //DEC (HL) + //#0x35: + function (parentObj) { + var temp_var = (parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) - 1) & 0xFF; + parentObj.FZero = (temp_var == 0); + parentObj.FHalfCarry = ((temp_var & 0xF) == 0xF); + parentObj.FSubtract = true; + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, temp_var); + }, + //LD (HL), n + //#0x36: + function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter)); + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + }, + //SCF + //#0x37: + function (parentObj) { + parentObj.FCarry = true; + parentObj.FSubtract = parentObj.FHalfCarry = false; + }, + //JR C, n + //#0x38: + function (parentObj) { + if (parentObj.FCarry) { + parentObj.programCounter = (parentObj.programCounter + ((parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter) << 24) >> 24) + 1) & 0xFFFF; + parentObj.CPUTicks += 4; + } + else { + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + } + }, + //ADD HL, SP + //#0x39: + function (parentObj) { + var dirtySum = parentObj.registersHL + parentObj.stackPointer; + parentObj.FHalfCarry = ((parentObj.registersHL & 0xFFF) > (dirtySum & 0xFFF)); + parentObj.FCarry = (dirtySum > 0xFFFF); + parentObj.registersHL = dirtySum & 0xFFFF; + parentObj.FSubtract = false; + }, + //LDD A, (HL) + //#0x3A: + function (parentObj) { + parentObj.registerA = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + parentObj.registersHL = (parentObj.registersHL - 1) & 0xFFFF; + }, + //DEC SP + //#0x3B: + function (parentObj) { + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + }, + //INC A + //#0x3C: + function (parentObj) { + parentObj.registerA = (parentObj.registerA + 1) & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) == 0); + parentObj.FSubtract = false; + }, + //DEC A + //#0x3D: + function (parentObj) { + parentObj.registerA = (parentObj.registerA - 1) & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) == 0xF); + parentObj.FSubtract = true; + }, + //LD A, n + //#0x3E: + function (parentObj) { + parentObj.registerA = parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + }, + //CCF + //#0x3F: + function (parentObj) { + parentObj.FCarry = !parentObj.FCarry; + parentObj.FSubtract = parentObj.FHalfCarry = false; + }, + //LD B, B + //#0x40: + function (parentObj) { + //Do nothing... + }, + //LD B, C + //#0x41: + function (parentObj) { + parentObj.registerB = parentObj.registerC; + }, + //LD B, D + //#0x42: + function (parentObj) { + parentObj.registerB = parentObj.registerD; + }, + //LD B, E + //#0x43: + function (parentObj) { + parentObj.registerB = parentObj.registerE; + }, + //LD B, H + //#0x44: + function (parentObj) { + parentObj.registerB = parentObj.registersHL >> 8; + }, + //LD B, L + //#0x45: + function (parentObj) { + parentObj.registerB = parentObj.registersHL & 0xFF; + }, + //LD B, (HL) + //#0x46: + function (parentObj) { + parentObj.registerB = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + }, + //LD B, A + //#0x47: + function (parentObj) { + parentObj.registerB = parentObj.registerA; + }, + //LD C, B + //#0x48: + function (parentObj) { + parentObj.registerC = parentObj.registerB; + }, + //LD C, C + //#0x49: + function (parentObj) { + //Do nothing... + }, + //LD C, D + //#0x4A: + function (parentObj) { + parentObj.registerC = parentObj.registerD; + }, + //LD C, E + //#0x4B: + function (parentObj) { + parentObj.registerC = parentObj.registerE; + }, + //LD C, H + //#0x4C: + function (parentObj) { + parentObj.registerC = parentObj.registersHL >> 8; + }, + //LD C, L + //#0x4D: + function (parentObj) { + parentObj.registerC = parentObj.registersHL & 0xFF; + }, + //LD C, (HL) + //#0x4E: + function (parentObj) { + parentObj.registerC = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + }, + //LD C, A + //#0x4F: + function (parentObj) { + parentObj.registerC = parentObj.registerA; + }, + //LD D, B + //#0x50: + function (parentObj) { + parentObj.registerD = parentObj.registerB; + }, + //LD D, C + //#0x51: + function (parentObj) { + parentObj.registerD = parentObj.registerC; + }, + //LD D, D + //#0x52: + function (parentObj) { + //Do nothing... + }, + //LD D, E + //#0x53: + function (parentObj) { + parentObj.registerD = parentObj.registerE; + }, + //LD D, H + //#0x54: + function (parentObj) { + parentObj.registerD = parentObj.registersHL >> 8; + }, + //LD D, L + //#0x55: + function (parentObj) { + parentObj.registerD = parentObj.registersHL & 0xFF; + }, + //LD D, (HL) + //#0x56: + function (parentObj) { + parentObj.registerD = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + }, + //LD D, A + //#0x57: + function (parentObj) { + parentObj.registerD = parentObj.registerA; + }, + //LD E, B + //#0x58: + function (parentObj) { + parentObj.registerE = parentObj.registerB; + }, + //LD E, C + //#0x59: + function (parentObj) { + parentObj.registerE = parentObj.registerC; + }, + //LD E, D + //#0x5A: + function (parentObj) { + parentObj.registerE = parentObj.registerD; + }, + //LD E, E + //#0x5B: + function (parentObj) { + //Do nothing... + }, + //LD E, H + //#0x5C: + function (parentObj) { + parentObj.registerE = parentObj.registersHL >> 8; + }, + //LD E, L + //#0x5D: + function (parentObj) { + parentObj.registerE = parentObj.registersHL & 0xFF; + }, + //LD E, (HL) + //#0x5E: + function (parentObj) { + parentObj.registerE = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + }, + //LD E, A + //#0x5F: + function (parentObj) { + parentObj.registerE = parentObj.registerA; + }, + //LD H, B + //#0x60: + function (parentObj) { + parentObj.registersHL = (parentObj.registerB << 8) | (parentObj.registersHL & 0xFF); + }, + //LD H, C + //#0x61: + function (parentObj) { + parentObj.registersHL = (parentObj.registerC << 8) | (parentObj.registersHL & 0xFF); + }, + //LD H, D + //#0x62: + function (parentObj) { + parentObj.registersHL = (parentObj.registerD << 8) | (parentObj.registersHL & 0xFF); + }, + //LD H, E + //#0x63: + function (parentObj) { + parentObj.registersHL = (parentObj.registerE << 8) | (parentObj.registersHL & 0xFF); + }, + //LD H, H + //#0x64: + function (parentObj) { + //Do nothing... + }, + //LD H, L + //#0x65: + function (parentObj) { + parentObj.registersHL = (parentObj.registersHL & 0xFF) * 0x101; + }, + //LD H, (HL) + //#0x66: + function (parentObj) { + parentObj.registersHL = (parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) << 8) | (parentObj.registersHL & 0xFF); + }, + //LD H, A + //#0x67: + function (parentObj) { + parentObj.registersHL = (parentObj.registerA << 8) | (parentObj.registersHL & 0xFF); + }, + //LD L, B + //#0x68: + function (parentObj) { + parentObj.registersHL = (parentObj.registersHL & 0xFF00) | parentObj.registerB; + }, + //LD L, C + //#0x69: + function (parentObj) { + parentObj.registersHL = (parentObj.registersHL & 0xFF00) | parentObj.registerC; + }, + //LD L, D + //#0x6A: + function (parentObj) { + parentObj.registersHL = (parentObj.registersHL & 0xFF00) | parentObj.registerD; + }, + //LD L, E + //#0x6B: + function (parentObj) { + parentObj.registersHL = (parentObj.registersHL & 0xFF00) | parentObj.registerE; + }, + //LD L, H + //#0x6C: + function (parentObj) { + parentObj.registersHL = (parentObj.registersHL & 0xFF00) | (parentObj.registersHL >> 8); + }, + //LD L, L + //#0x6D: + function (parentObj) { + //Do nothing... + }, + //LD L, (HL) + //#0x6E: + function (parentObj) { + parentObj.registersHL = (parentObj.registersHL & 0xFF00) | parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + }, + //LD L, A + //#0x6F: + function (parentObj) { + parentObj.registersHL = (parentObj.registersHL & 0xFF00) | parentObj.registerA; + }, + //LD (HL), B + //#0x70: + function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.registerB); + }, + //LD (HL), C + //#0x71: + function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.registerC); + }, + //LD (HL), D + //#0x72: + function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.registerD); + }, + //LD (HL), E + //#0x73: + function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.registerE); + }, + //LD (HL), H + //#0x74: + function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.registersHL >> 8); + }, + //LD (HL), L + //#0x75: + function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.registersHL & 0xFF); + }, + //HALT + //#0x76: + function (parentObj) { + //See if there's already an IRQ match: + if ((parentObj.interruptsEnabled & parentObj.interruptsRequested & 0x1F) > 0) { + if (!parentObj.cGBC && !parentObj.usedBootROM) { + //HALT bug in the DMG CPU model (Program Counter fails to increment for one instruction after HALT): + parentObj.skipPCIncrement = true; + } + else { + //CGB gets around the HALT PC bug by doubling the hidden NOP. + parentObj.CPUTicks += 4; + } + } + else { + //CPU is stalled until the next IRQ match: + parentObj.calculateHALTPeriod(); + } + }, + //LD (HL), A + //#0x77: + function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.registerA); + }, + //LD A, B + //#0x78: + function (parentObj) { + parentObj.registerA = parentObj.registerB; + }, + //LD A, C + //#0x79: + function (parentObj) { + parentObj.registerA = parentObj.registerC; + }, + //LD A, D + //#0x7A: + function (parentObj) { + parentObj.registerA = parentObj.registerD; + }, + //LD A, E + //#0x7B: + function (parentObj) { + parentObj.registerA = parentObj.registerE; + }, + //LD A, H + //#0x7C: + function (parentObj) { + parentObj.registerA = parentObj.registersHL >> 8; + }, + //LD A, L + //#0x7D: + function (parentObj) { + parentObj.registerA = parentObj.registersHL & 0xFF; + }, + //LD, A, (HL) + //#0x7E: + function (parentObj) { + parentObj.registerA = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + }, + //LD A, A + //#0x7F: + function (parentObj) { + //Do Nothing... + }, + //ADD A, B + //#0x80: + function (parentObj) { + var dirtySum = parentObj.registerA + parentObj.registerB; + parentObj.FHalfCarry = ((dirtySum & 0xF) < (parentObj.registerA & 0xF)); + parentObj.FCarry = (dirtySum > 0xFF); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = false; + }, + //ADD A, C + //#0x81: + function (parentObj) { + var dirtySum = parentObj.registerA + parentObj.registerC; + parentObj.FHalfCarry = ((dirtySum & 0xF) < (parentObj.registerA & 0xF)); + parentObj.FCarry = (dirtySum > 0xFF); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = false; + }, + //ADD A, D + //#0x82: + function (parentObj) { + var dirtySum = parentObj.registerA + parentObj.registerD; + parentObj.FHalfCarry = ((dirtySum & 0xF) < (parentObj.registerA & 0xF)); + parentObj.FCarry = (dirtySum > 0xFF); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = false; + }, + //ADD A, E + //#0x83: + function (parentObj) { + var dirtySum = parentObj.registerA + parentObj.registerE; + parentObj.FHalfCarry = ((dirtySum & 0xF) < (parentObj.registerA & 0xF)); + parentObj.FCarry = (dirtySum > 0xFF); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = false; + }, + //ADD A, H + //#0x84: + function (parentObj) { + var dirtySum = parentObj.registerA + (parentObj.registersHL >> 8); + parentObj.FHalfCarry = ((dirtySum & 0xF) < (parentObj.registerA & 0xF)); + parentObj.FCarry = (dirtySum > 0xFF); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = false; + }, + //ADD A, L + //#0x85: + function (parentObj) { + var dirtySum = parentObj.registerA + (parentObj.registersHL & 0xFF); + parentObj.FHalfCarry = ((dirtySum & 0xF) < (parentObj.registerA & 0xF)); + parentObj.FCarry = (dirtySum > 0xFF); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = false; + }, + //ADD A, (HL) + //#0x86: + function (parentObj) { + var dirtySum = parentObj.registerA + parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + parentObj.FHalfCarry = ((dirtySum & 0xF) < (parentObj.registerA & 0xF)); + parentObj.FCarry = (dirtySum > 0xFF); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = false; + }, + //ADD A, A + //#0x87: + function (parentObj) { + parentObj.FHalfCarry = ((parentObj.registerA & 0x8) == 0x8); + parentObj.FCarry = (parentObj.registerA > 0x7F); + parentObj.registerA = (parentObj.registerA << 1) & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = false; + }, + //ADC A, B + //#0x88: + function (parentObj) { + var dirtySum = parentObj.registerA + parentObj.registerB + ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) + (parentObj.registerB & 0xF) + ((parentObj.FCarry) ? 1 : 0) > 0xF); + parentObj.FCarry = (dirtySum > 0xFF); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = false; + }, + //ADC A, C + //#0x89: + function (parentObj) { + var dirtySum = parentObj.registerA + parentObj.registerC + ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) + (parentObj.registerC & 0xF) + ((parentObj.FCarry) ? 1 : 0) > 0xF); + parentObj.FCarry = (dirtySum > 0xFF); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = false; + }, + //ADC A, D + //#0x8A: + function (parentObj) { + var dirtySum = parentObj.registerA + parentObj.registerD + ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) + (parentObj.registerD & 0xF) + ((parentObj.FCarry) ? 1 : 0) > 0xF); + parentObj.FCarry = (dirtySum > 0xFF); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = false; + }, + //ADC A, E + //#0x8B: + function (parentObj) { + var dirtySum = parentObj.registerA + parentObj.registerE + ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) + (parentObj.registerE & 0xF) + ((parentObj.FCarry) ? 1 : 0) > 0xF); + parentObj.FCarry = (dirtySum > 0xFF); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = false; + }, + //ADC A, H + //#0x8C: + function (parentObj) { + var tempValue = (parentObj.registersHL >> 8); + var dirtySum = parentObj.registerA + tempValue + ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) + (tempValue & 0xF) + ((parentObj.FCarry) ? 1 : 0) > 0xF); + parentObj.FCarry = (dirtySum > 0xFF); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = false; + }, + //ADC A, L + //#0x8D: + function (parentObj) { + var tempValue = (parentObj.registersHL & 0xFF); + var dirtySum = parentObj.registerA + tempValue + ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) + (tempValue & 0xF) + ((parentObj.FCarry) ? 1 : 0) > 0xF); + parentObj.FCarry = (dirtySum > 0xFF); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = false; + }, + //ADC A, (HL) + //#0x8E: + function (parentObj) { + var tempValue = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + var dirtySum = parentObj.registerA + tempValue + ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) + (tempValue & 0xF) + ((parentObj.FCarry) ? 1 : 0) > 0xF); + parentObj.FCarry = (dirtySum > 0xFF); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = false; + }, + //ADC A, A + //#0x8F: + function (parentObj) { + //shift left register A one bit for some ops here as an optimization: + var dirtySum = (parentObj.registerA << 1) | ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = ((((parentObj.registerA << 1) & 0x1E) | ((parentObj.FCarry) ? 1 : 0)) > 0xF); + parentObj.FCarry = (dirtySum > 0xFF); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = false; + }, + //SUB A, B + //#0x90: + function (parentObj) { + var dirtySum = parentObj.registerA - parentObj.registerB; + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) < (dirtySum & 0xF)); + parentObj.FCarry = (dirtySum < 0); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (dirtySum == 0); + parentObj.FSubtract = true; + }, + //SUB A, C + //#0x91: + function (parentObj) { + var dirtySum = parentObj.registerA - parentObj.registerC; + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) < (dirtySum & 0xF)); + parentObj.FCarry = (dirtySum < 0); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (dirtySum == 0); + parentObj.FSubtract = true; + }, + //SUB A, D + //#0x92: + function (parentObj) { + var dirtySum = parentObj.registerA - parentObj.registerD; + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) < (dirtySum & 0xF)); + parentObj.FCarry = (dirtySum < 0); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (dirtySum == 0); + parentObj.FSubtract = true; + }, + //SUB A, E + //#0x93: + function (parentObj) { + var dirtySum = parentObj.registerA - parentObj.registerE; + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) < (dirtySum & 0xF)); + parentObj.FCarry = (dirtySum < 0); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (dirtySum == 0); + parentObj.FSubtract = true; + }, + //SUB A, H + //#0x94: + function (parentObj) { + var dirtySum = parentObj.registerA - (parentObj.registersHL >> 8); + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) < (dirtySum & 0xF)); + parentObj.FCarry = (dirtySum < 0); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (dirtySum == 0); + parentObj.FSubtract = true; + }, + //SUB A, L + //#0x95: + function (parentObj) { + var dirtySum = parentObj.registerA - (parentObj.registersHL & 0xFF); + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) < (dirtySum & 0xF)); + parentObj.FCarry = (dirtySum < 0); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (dirtySum == 0); + parentObj.FSubtract = true; + }, + //SUB A, (HL) + //#0x96: + function (parentObj) { + var dirtySum = parentObj.registerA - parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) < (dirtySum & 0xF)); + parentObj.FCarry = (dirtySum < 0); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (dirtySum == 0); + parentObj.FSubtract = true; + }, + //SUB A, A + //#0x97: + function (parentObj) { + //number - same number == 0 + parentObj.registerA = 0; + parentObj.FHalfCarry = parentObj.FCarry = false; + parentObj.FZero = parentObj.FSubtract = true; + }, + //SBC A, B + //#0x98: + function (parentObj) { + var dirtySum = parentObj.registerA - parentObj.registerB - ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) - (parentObj.registerB & 0xF) - ((parentObj.FCarry) ? 1 : 0) < 0); + parentObj.FCarry = (dirtySum < 0); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = true; + }, + //SBC A, C + //#0x99: + function (parentObj) { + var dirtySum = parentObj.registerA - parentObj.registerC - ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) - (parentObj.registerC & 0xF) - ((parentObj.FCarry) ? 1 : 0) < 0); + parentObj.FCarry = (dirtySum < 0); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = true; + }, + //SBC A, D + //#0x9A: + function (parentObj) { + var dirtySum = parentObj.registerA - parentObj.registerD - ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) - (parentObj.registerD & 0xF) - ((parentObj.FCarry) ? 1 : 0) < 0); + parentObj.FCarry = (dirtySum < 0); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = true; + }, + //SBC A, E + //#0x9B: + function (parentObj) { + var dirtySum = parentObj.registerA - parentObj.registerE - ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) - (parentObj.registerE & 0xF) - ((parentObj.FCarry) ? 1 : 0) < 0); + parentObj.FCarry = (dirtySum < 0); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = true; + }, + //SBC A, H + //#0x9C: + function (parentObj) { + var temp_var = parentObj.registersHL >> 8; + var dirtySum = parentObj.registerA - temp_var - ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) - (temp_var & 0xF) - ((parentObj.FCarry) ? 1 : 0) < 0); + parentObj.FCarry = (dirtySum < 0); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = true; + }, + //SBC A, L + //#0x9D: + function (parentObj) { + var dirtySum = parentObj.registerA - (parentObj.registersHL & 0xFF) - ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) - (parentObj.registersHL & 0xF) - ((parentObj.FCarry) ? 1 : 0) < 0); + parentObj.FCarry = (dirtySum < 0); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = true; + }, + //SBC A, (HL) + //#0x9E: + function (parentObj) { + var temp_var = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + var dirtySum = parentObj.registerA - temp_var - ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) - (temp_var & 0xF) - ((parentObj.FCarry) ? 1 : 0) < 0); + parentObj.FCarry = (dirtySum < 0); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = true; + }, + //SBC A, A + //#0x9F: + function (parentObj) { + //Optimized SBC A: + if (parentObj.FCarry) { + parentObj.FZero = false; + parentObj.FSubtract = parentObj.FHalfCarry = parentObj.FCarry = true; + parentObj.registerA = 0xFF; + } + else { + parentObj.FHalfCarry = parentObj.FCarry = false; + parentObj.FSubtract = parentObj.FZero = true; + parentObj.registerA = 0; + } + }, + //AND B + //#0xA0: + function (parentObj) { + parentObj.registerA &= parentObj.registerB; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FHalfCarry = true; + parentObj.FSubtract = parentObj.FCarry = false; + }, + //AND C + //#0xA1: + function (parentObj) { + parentObj.registerA &= parentObj.registerC; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FHalfCarry = true; + parentObj.FSubtract = parentObj.FCarry = false; + }, + //AND D + //#0xA2: + function (parentObj) { + parentObj.registerA &= parentObj.registerD; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FHalfCarry = true; + parentObj.FSubtract = parentObj.FCarry = false; + }, + //AND E + //#0xA3: + function (parentObj) { + parentObj.registerA &= parentObj.registerE; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FHalfCarry = true; + parentObj.FSubtract = parentObj.FCarry = false; + }, + //AND H + //#0xA4: + function (parentObj) { + parentObj.registerA &= (parentObj.registersHL >> 8); + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FHalfCarry = true; + parentObj.FSubtract = parentObj.FCarry = false; + }, + //AND L + //#0xA5: + function (parentObj) { + parentObj.registerA &= parentObj.registersHL; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FHalfCarry = true; + parentObj.FSubtract = parentObj.FCarry = false; + }, + //AND (HL) + //#0xA6: + function (parentObj) { + parentObj.registerA &= parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FHalfCarry = true; + parentObj.FSubtract = parentObj.FCarry = false; + }, + //AND A + //#0xA7: + function (parentObj) { + //number & same number = same number + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FHalfCarry = true; + parentObj.FSubtract = parentObj.FCarry = false; + }, + //XOR B + //#0xA8: + function (parentObj) { + parentObj.registerA ^= parentObj.registerB; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = parentObj.FHalfCarry = parentObj.FCarry = false; + }, + //XOR C + //#0xA9: + function (parentObj) { + parentObj.registerA ^= parentObj.registerC; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = parentObj.FHalfCarry = parentObj.FCarry = false; + }, + //XOR D + //#0xAA: + function (parentObj) { + parentObj.registerA ^= parentObj.registerD; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = parentObj.FHalfCarry = parentObj.FCarry = false; + }, + //XOR E + //#0xAB: + function (parentObj) { + parentObj.registerA ^= parentObj.registerE; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = parentObj.FHalfCarry = parentObj.FCarry = false; + }, + //XOR H + //#0xAC: + function (parentObj) { + parentObj.registerA ^= (parentObj.registersHL >> 8); + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = parentObj.FHalfCarry = parentObj.FCarry = false; + }, + //XOR L + //#0xAD: + function (parentObj) { + parentObj.registerA ^= (parentObj.registersHL & 0xFF); + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = parentObj.FHalfCarry = parentObj.FCarry = false; + }, + //XOR (HL) + //#0xAE: + function (parentObj) { + parentObj.registerA ^= parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = parentObj.FHalfCarry = parentObj.FCarry = false; + }, + //XOR A + //#0xAF: + function (parentObj) { + //number ^ same number == 0 + parentObj.registerA = 0; + parentObj.FZero = true; + parentObj.FSubtract = parentObj.FHalfCarry = parentObj.FCarry = false; + }, + //OR B + //#0xB0: + function (parentObj) { + parentObj.registerA |= parentObj.registerB; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = parentObj.FCarry = parentObj.FHalfCarry = false; + }, + //OR C + //#0xB1: + function (parentObj) { + parentObj.registerA |= parentObj.registerC; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = parentObj.FCarry = parentObj.FHalfCarry = false; + }, + //OR D + //#0xB2: + function (parentObj) { + parentObj.registerA |= parentObj.registerD; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = parentObj.FCarry = parentObj.FHalfCarry = false; + }, + //OR E + //#0xB3: + function (parentObj) { + parentObj.registerA |= parentObj.registerE; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = parentObj.FCarry = parentObj.FHalfCarry = false; + }, + //OR H + //#0xB4: + function (parentObj) { + parentObj.registerA |= (parentObj.registersHL >> 8); + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = parentObj.FCarry = parentObj.FHalfCarry = false; + }, + //OR L + //#0xB5: + function (parentObj) { + parentObj.registerA |= (parentObj.registersHL & 0xFF); + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = parentObj.FCarry = parentObj.FHalfCarry = false; + }, + //OR (HL) + //#0xB6: + function (parentObj) { + parentObj.registerA |= parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = parentObj.FCarry = parentObj.FHalfCarry = false; + }, + //OR A + //#0xB7: + function (parentObj) { + //number | same number == same number + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = parentObj.FCarry = parentObj.FHalfCarry = false; + }, + //CP B + //#0xB8: + function (parentObj) { + var dirtySum = parentObj.registerA - parentObj.registerB; + parentObj.FHalfCarry = ((dirtySum & 0xF) > (parentObj.registerA & 0xF)); + parentObj.FCarry = (dirtySum < 0); + parentObj.FZero = (dirtySum == 0); + parentObj.FSubtract = true; + }, + //CP C + //#0xB9: + function (parentObj) { + var dirtySum = parentObj.registerA - parentObj.registerC; + parentObj.FHalfCarry = ((dirtySum & 0xF) > (parentObj.registerA & 0xF)); + parentObj.FCarry = (dirtySum < 0); + parentObj.FZero = (dirtySum == 0); + parentObj.FSubtract = true; + }, + //CP D + //#0xBA: + function (parentObj) { + var dirtySum = parentObj.registerA - parentObj.registerD; + parentObj.FHalfCarry = ((dirtySum & 0xF) > (parentObj.registerA & 0xF)); + parentObj.FCarry = (dirtySum < 0); + parentObj.FZero = (dirtySum == 0); + parentObj.FSubtract = true; + }, + //CP E + //#0xBB: + function (parentObj) { + var dirtySum = parentObj.registerA - parentObj.registerE; + parentObj.FHalfCarry = ((dirtySum & 0xF) > (parentObj.registerA & 0xF)); + parentObj.FCarry = (dirtySum < 0); + parentObj.FZero = (dirtySum == 0); + parentObj.FSubtract = true; + }, + //CP H + //#0xBC: + function (parentObj) { + var dirtySum = parentObj.registerA - (parentObj.registersHL >> 8); + parentObj.FHalfCarry = ((dirtySum & 0xF) > (parentObj.registerA & 0xF)); + parentObj.FCarry = (dirtySum < 0); + parentObj.FZero = (dirtySum == 0); + parentObj.FSubtract = true; + }, + //CP L + //#0xBD: + function (parentObj) { + var dirtySum = parentObj.registerA - (parentObj.registersHL & 0xFF); + parentObj.FHalfCarry = ((dirtySum & 0xF) > (parentObj.registerA & 0xF)); + parentObj.FCarry = (dirtySum < 0); + parentObj.FZero = (dirtySum == 0); + parentObj.FSubtract = true; + }, + //CP (HL) + //#0xBE: + function (parentObj) { + var dirtySum = parentObj.registerA - parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + parentObj.FHalfCarry = ((dirtySum & 0xF) > (parentObj.registerA & 0xF)); + parentObj.FCarry = (dirtySum < 0); + parentObj.FZero = (dirtySum == 0); + parentObj.FSubtract = true; + }, + //CP A + //#0xBF: + function (parentObj) { + parentObj.FHalfCarry = parentObj.FCarry = false; + parentObj.FZero = parentObj.FSubtract = true; + }, + //RET !FZ + //#0xC0: + function (parentObj) { + if (!parentObj.FZero) { + parentObj.programCounter = (parentObj.memoryRead((parentObj.stackPointer + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.stackPointer](parentObj, parentObj.stackPointer); + parentObj.stackPointer = (parentObj.stackPointer + 2) & 0xFFFF; + parentObj.CPUTicks += 12; + } + }, + //POP BC + //#0xC1: + function (parentObj) { + parentObj.registerC = parentObj.memoryReader[parentObj.stackPointer](parentObj, parentObj.stackPointer); + parentObj.registerB = parentObj.memoryRead((parentObj.stackPointer + 1) & 0xFFFF); + parentObj.stackPointer = (parentObj.stackPointer + 2) & 0xFFFF; + }, + //JP !FZ, nn + //#0xC2: + function (parentObj) { + if (!parentObj.FZero) { + parentObj.programCounter = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.CPUTicks += 4; + } + else { + parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF; + } + }, + //JP nn + //#0xC3: + function (parentObj) { + parentObj.programCounter = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + }, + //CALL !FZ, nn + //#0xC4: + function (parentObj) { + if (!parentObj.FZero) { + var temp_pc = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF; + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8); + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF); + parentObj.programCounter = temp_pc; + parentObj.CPUTicks += 12; + } + else { + parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF; + } + }, + //PUSH BC + //#0xC5: + function (parentObj) { + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.registerB); + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.registerC); + }, + //ADD, n + //#0xC6: + function (parentObj) { + var dirtySum = parentObj.registerA + parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + parentObj.FHalfCarry = ((dirtySum & 0xF) < (parentObj.registerA & 0xF)); + parentObj.FCarry = (dirtySum > 0xFF); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = false; + }, + //RST 0 + //#0xC7: + function (parentObj) { + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8); + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF); + parentObj.programCounter = 0; + }, + //RET FZ + //#0xC8: + function (parentObj) { + if (parentObj.FZero) { + parentObj.programCounter = (parentObj.memoryRead((parentObj.stackPointer + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.stackPointer](parentObj, parentObj.stackPointer); + parentObj.stackPointer = (parentObj.stackPointer + 2) & 0xFFFF; + parentObj.CPUTicks += 12; + } + }, + //RET + //#0xC9: + function (parentObj) { + parentObj.programCounter = (parentObj.memoryRead((parentObj.stackPointer + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.stackPointer](parentObj, parentObj.stackPointer); + parentObj.stackPointer = (parentObj.stackPointer + 2) & 0xFFFF; + }, + //JP FZ, nn + //#0xCA: + function (parentObj) { + if (parentObj.FZero) { + parentObj.programCounter = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.CPUTicks += 4; + } + else { + parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF; + } + }, + //Secondary OP Code Set: + //#0xCB: + function (parentObj) { + var opcode = parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + //Increment the program counter to the next instruction: + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + //Get how many CPU cycles the current 0xCBXX op code counts for: + parentObj.CPUTicks += parentObj.SecondaryTICKTable[opcode]; + //Execute secondary OP codes for the 0xCB OP code call. + parentObj.CBOPCODE[opcode](parentObj); + }, + //CALL FZ, nn + //#0xCC: + function (parentObj) { + if (parentObj.FZero) { + var temp_pc = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF; + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8); + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF); + parentObj.programCounter = temp_pc; + parentObj.CPUTicks += 12; + } + else { + parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF; + } + }, + //CALL nn + //#0xCD: + function (parentObj) { + var temp_pc = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF; + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8); + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF); + parentObj.programCounter = temp_pc; + }, + //ADC A, n + //#0xCE: + function (parentObj) { + var tempValue = parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + var dirtySum = parentObj.registerA + tempValue + ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) + (tempValue & 0xF) + ((parentObj.FCarry) ? 1 : 0) > 0xF); + parentObj.FCarry = (dirtySum > 0xFF); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = false; + }, + //RST 0x8 + //#0xCF: + function (parentObj) { + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8); + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF); + parentObj.programCounter = 0x8; + }, + //RET !FC + //#0xD0: + function (parentObj) { + if (!parentObj.FCarry) { + parentObj.programCounter = (parentObj.memoryRead((parentObj.stackPointer + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.stackPointer](parentObj, parentObj.stackPointer); + parentObj.stackPointer = (parentObj.stackPointer + 2) & 0xFFFF; + parentObj.CPUTicks += 12; + } + }, + //POP DE + //#0xD1: + function (parentObj) { + parentObj.registerE = parentObj.memoryReader[parentObj.stackPointer](parentObj, parentObj.stackPointer); + parentObj.registerD = parentObj.memoryRead((parentObj.stackPointer + 1) & 0xFFFF); + parentObj.stackPointer = (parentObj.stackPointer + 2) & 0xFFFF; + }, + //JP !FC, nn + //#0xD2: + function (parentObj) { + if (!parentObj.FCarry) { + parentObj.programCounter = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.CPUTicks += 4; + } + else { + parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF; + } + }, + //0xD3 - Illegal + //#0xD3: + function (parentObj) { + cout("Illegal op code 0xD3 called, pausing emulation.", 2); + pause(); + }, + //CALL !FC, nn + //#0xD4: + function (parentObj) { + if (!parentObj.FCarry) { + var temp_pc = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF; + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8); + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF); + parentObj.programCounter = temp_pc; + parentObj.CPUTicks += 12; + } + else { + parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF; + } + }, + //PUSH DE + //#0xD5: + function (parentObj) { + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.registerD); + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.registerE); + }, + //SUB A, n + //#0xD6: + function (parentObj) { + var dirtySum = parentObj.registerA - parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) < (dirtySum & 0xF)); + parentObj.FCarry = (dirtySum < 0); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (dirtySum == 0); + parentObj.FSubtract = true; + }, + //RST 0x10 + //#0xD7: + function (parentObj) { + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8); + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF); + parentObj.programCounter = 0x10; + }, + //RET FC + //#0xD8: + function (parentObj) { + if (parentObj.FCarry) { + parentObj.programCounter = (parentObj.memoryRead((parentObj.stackPointer + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.stackPointer](parentObj, parentObj.stackPointer); + parentObj.stackPointer = (parentObj.stackPointer + 2) & 0xFFFF; + parentObj.CPUTicks += 12; + } + }, + //RETI + //#0xD9: + function (parentObj) { + parentObj.programCounter = (parentObj.memoryRead((parentObj.stackPointer + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.stackPointer](parentObj, parentObj.stackPointer); + parentObj.stackPointer = (parentObj.stackPointer + 2) & 0xFFFF; + //Immediate for HALT: + parentObj.IRQEnableDelay = (parentObj.IRQEnableDelay == 2 || parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter) == 0x76) ? 1 : 2; + }, + //JP FC, nn + //#0xDA: + function (parentObj) { + if (parentObj.FCarry) { + parentObj.programCounter = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.CPUTicks += 4; + } + else { + parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF; + } + }, + //0xDB - Illegal + //#0xDB: + function (parentObj) { + cout("Illegal op code 0xDB called, pausing emulation.", 2); + pause(); + }, + //CALL FC, nn + //#0xDC: + function (parentObj) { + if (parentObj.FCarry) { + var temp_pc = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF; + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8); + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF); + parentObj.programCounter = temp_pc; + parentObj.CPUTicks += 12; + } + else { + parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF; + } + }, + //0xDD - Illegal + //#0xDD: + function (parentObj) { + cout("Illegal op code 0xDD called, pausing emulation.", 2); + pause(); + }, + //SBC A, n + //#0xDE: + function (parentObj) { + var temp_var = parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + var dirtySum = parentObj.registerA - temp_var - ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = ((parentObj.registerA & 0xF) - (temp_var & 0xF) - ((parentObj.FCarry) ? 1 : 0) < 0); + parentObj.FCarry = (dirtySum < 0); + parentObj.registerA = dirtySum & 0xFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = true; + }, + //RST 0x18 + //#0xDF: + function (parentObj) { + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8); + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF); + parentObj.programCounter = 0x18; + }, + //LDH (n), A + //#0xE0: + function (parentObj) { + parentObj.memoryHighWrite(parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter), parentObj.registerA); + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + }, + //POP HL + //#0xE1: + function (parentObj) { + parentObj.registersHL = (parentObj.memoryRead((parentObj.stackPointer + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.stackPointer](parentObj, parentObj.stackPointer); + parentObj.stackPointer = (parentObj.stackPointer + 2) & 0xFFFF; + }, + //LD (0xFF00 + C), A + //#0xE2: + function (parentObj) { + parentObj.memoryHighWriter[parentObj.registerC](parentObj, parentObj.registerC, parentObj.registerA); + }, + //0xE3 - Illegal + //#0xE3: + function (parentObj) { + cout("Illegal op code 0xE3 called, pausing emulation.", 2); + pause(); + }, + //0xE4 - Illegal + //#0xE4: + function (parentObj) { + cout("Illegal op code 0xE4 called, pausing emulation.", 2); + pause(); + }, + //PUSH HL + //#0xE5: + function (parentObj) { + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.registersHL >> 8); + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.registersHL & 0xFF); + }, + //AND n + //#0xE6: + function (parentObj) { + parentObj.registerA &= parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FHalfCarry = true; + parentObj.FSubtract = parentObj.FCarry = false; + }, + //RST 0x20 + //#0xE7: + function (parentObj) { + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8); + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF); + parentObj.programCounter = 0x20; + }, + //ADD SP, n + //#0xE8: + function (parentObj) { + var temp_value2 = (parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter) << 24) >> 24; + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + var temp_value = (parentObj.stackPointer + temp_value2) & 0xFFFF; + temp_value2 = parentObj.stackPointer ^ temp_value2 ^ temp_value; + parentObj.stackPointer = temp_value; + parentObj.FCarry = ((temp_value2 & 0x100) == 0x100); + parentObj.FHalfCarry = ((temp_value2 & 0x10) == 0x10); + parentObj.FZero = parentObj.FSubtract = false; + }, + //JP, (HL) + //#0xE9: + function (parentObj) { + parentObj.programCounter = parentObj.registersHL; + }, + //LD n, A + //#0xEA: + function (parentObj) { + parentObj.memoryWrite((parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter), parentObj.registerA); + parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF; + }, + //0xEB - Illegal + //#0xEB: + function (parentObj) { + cout("Illegal op code 0xEB called, pausing emulation.", 2); + pause(); + }, + //0xEC - Illegal + //#0xEC: + function (parentObj) { + cout("Illegal op code 0xEC called, pausing emulation.", 2); + pause(); + }, + //0xED - Illegal + //#0xED: + function (parentObj) { + cout("Illegal op code 0xED called, pausing emulation.", 2); + pause(); + }, + //XOR n + //#0xEE: + function (parentObj) { + parentObj.registerA ^= parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FSubtract = parentObj.FHalfCarry = parentObj.FCarry = false; + }, + //RST 0x28 + //#0xEF: + function (parentObj) { + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8); + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF); + parentObj.programCounter = 0x28; + }, + //LDH A, (n) + //#0xF0: + function (parentObj) { + parentObj.registerA = parentObj.memoryHighRead(parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter)); + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + }, + //POP AF + //#0xF1: + function (parentObj) { + var temp_var = parentObj.memoryReader[parentObj.stackPointer](parentObj, parentObj.stackPointer); + parentObj.FZero = (temp_var > 0x7F); + parentObj.FSubtract = ((temp_var & 0x40) == 0x40); + parentObj.FHalfCarry = ((temp_var & 0x20) == 0x20); + parentObj.FCarry = ((temp_var & 0x10) == 0x10); + parentObj.registerA = parentObj.memoryRead((parentObj.stackPointer + 1) & 0xFFFF); + parentObj.stackPointer = (parentObj.stackPointer + 2) & 0xFFFF; + }, + //LD A, (0xFF00 + C) + //#0xF2: + function (parentObj) { + parentObj.registerA = parentObj.memoryHighReader[parentObj.registerC](parentObj, parentObj.registerC); + }, + //DI + //#0xF3: + function (parentObj) { + parentObj.IME = false; + parentObj.IRQEnableDelay = 0; + }, + //0xF4 - Illegal + //#0xF4: + function (parentObj) { + cout("Illegal op code 0xF4 called, pausing emulation.", 2); + pause(); + }, + //PUSH AF + //#0xF5: + function (parentObj) { + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.registerA); + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, ((parentObj.FZero) ? 0x80 : 0) | ((parentObj.FSubtract) ? 0x40 : 0) | ((parentObj.FHalfCarry) ? 0x20 : 0) | ((parentObj.FCarry) ? 0x10 : 0)); + }, + //OR n + //#0xF6: + function (parentObj) { + parentObj.registerA |= parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.FZero = (parentObj.registerA == 0); + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + parentObj.FSubtract = parentObj.FCarry = parentObj.FHalfCarry = false; + }, + //RST 0x30 + //#0xF7: + function (parentObj) { + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8); + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF); + parentObj.programCounter = 0x30; + }, + //LDHL SP, n + //#0xF8: + function (parentObj) { + var temp_var = (parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter) << 24) >> 24; + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + parentObj.registersHL = (parentObj.stackPointer + temp_var) & 0xFFFF; + temp_var = parentObj.stackPointer ^ temp_var ^ parentObj.registersHL; + parentObj.FCarry = ((temp_var & 0x100) == 0x100); + parentObj.FHalfCarry = ((temp_var & 0x10) == 0x10); + parentObj.FZero = parentObj.FSubtract = false; + }, + //LD SP, HL + //#0xF9: + function (parentObj) { + parentObj.stackPointer = parentObj.registersHL; + }, + //LD A, (nn) + //#0xFA: + function (parentObj) { + parentObj.registerA = parentObj.memoryRead((parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter)); + parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF; + }, + //EI + //#0xFB: + function (parentObj) { + //Immediate for HALT: + parentObj.IRQEnableDelay = (parentObj.IRQEnableDelay == 2 || parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter) == 0x76) ? 1 : 2; + }, + //0xFC - Illegal + //#0xFC: + function (parentObj) { + cout("Illegal op code 0xFC called, pausing emulation.", 2); + pause(); + }, + //0xFD - Illegal + //#0xFD: + function (parentObj) { + cout("Illegal op code 0xFD called, pausing emulation.", 2); + pause(); + }, + //CP n + //#0xFE: + function (parentObj) { + var dirtySum = parentObj.registerA - parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter); + parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF; + parentObj.FHalfCarry = ((dirtySum & 0xF) > (parentObj.registerA & 0xF)); + parentObj.FCarry = (dirtySum < 0); + parentObj.FZero = (dirtySum == 0); + parentObj.FSubtract = true; + }, + //RST 0x38 + //#0xFF: + function (parentObj) { + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8); + parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF; + parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF); + parentObj.programCounter = 0x38; + } +]; +GameBoyCore.prototype.CBOPCODE = [ + //RLC B + //#0x00: + function (parentObj) { + parentObj.FCarry = (parentObj.registerB > 0x7F); + parentObj.registerB = ((parentObj.registerB << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerB == 0); + } + //RLC C + //#0x01: + ,function (parentObj) { + parentObj.FCarry = (parentObj.registerC > 0x7F); + parentObj.registerC = ((parentObj.registerC << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerC == 0); + } + //RLC D + //#0x02: + ,function (parentObj) { + parentObj.FCarry = (parentObj.registerD > 0x7F); + parentObj.registerD = ((parentObj.registerD << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerD == 0); + } + //RLC E + //#0x03: + ,function (parentObj) { + parentObj.FCarry = (parentObj.registerE > 0x7F); + parentObj.registerE = ((parentObj.registerE << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerE == 0); + } + //RLC H + //#0x04: + ,function (parentObj) { + parentObj.FCarry = (parentObj.registersHL > 0x7FFF); + parentObj.registersHL = ((parentObj.registersHL << 1) & 0xFE00) | ((parentObj.FCarry) ? 0x100 : 0) | (parentObj.registersHL & 0xFF); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registersHL < 0x100); + } + //RLC L + //#0x05: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registersHL & 0x80) == 0x80); + parentObj.registersHL = (parentObj.registersHL & 0xFF00) | ((parentObj.registersHL << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0xFF) == 0); + } + //RLC (HL) + //#0x06: + ,function (parentObj) { + var temp_var = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + parentObj.FCarry = (temp_var > 0x7F); + temp_var = ((temp_var << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0); + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, temp_var); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (temp_var == 0); + } + //RLC A + //#0x07: + ,function (parentObj) { + parentObj.FCarry = (parentObj.registerA > 0x7F); + parentObj.registerA = ((parentObj.registerA << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerA == 0); + } + //RRC B + //#0x08: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registerB & 0x01) == 0x01); + parentObj.registerB = ((parentObj.FCarry) ? 0x80 : 0) | (parentObj.registerB >> 1); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerB == 0); + } + //RRC C + //#0x09: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registerC & 0x01) == 0x01); + parentObj.registerC = ((parentObj.FCarry) ? 0x80 : 0) | (parentObj.registerC >> 1); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerC == 0); + } + //RRC D + //#0x0A: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registerD & 0x01) == 0x01); + parentObj.registerD = ((parentObj.FCarry) ? 0x80 : 0) | (parentObj.registerD >> 1); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerD == 0); + } + //RRC E + //#0x0B: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registerE & 0x01) == 0x01); + parentObj.registerE = ((parentObj.FCarry) ? 0x80 : 0) | (parentObj.registerE >> 1); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerE == 0); + } + //RRC H + //#0x0C: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registersHL & 0x0100) == 0x0100); + parentObj.registersHL = ((parentObj.FCarry) ? 0x8000 : 0) | ((parentObj.registersHL >> 1) & 0xFF00) | (parentObj.registersHL & 0xFF); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registersHL < 0x100); + } + //RRC L + //#0x0D: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registersHL & 0x01) == 0x01); + parentObj.registersHL = (parentObj.registersHL & 0xFF00) | ((parentObj.FCarry) ? 0x80 : 0) | ((parentObj.registersHL & 0xFF) >> 1); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0xFF) == 0); + } + //RRC (HL) + //#0x0E: + ,function (parentObj) { + var temp_var = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + parentObj.FCarry = ((temp_var & 0x01) == 0x01); + temp_var = ((parentObj.FCarry) ? 0x80 : 0) | (temp_var >> 1); + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, temp_var); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (temp_var == 0); + } + //RRC A + //#0x0F: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registerA & 0x01) == 0x01); + parentObj.registerA = ((parentObj.FCarry) ? 0x80 : 0) | (parentObj.registerA >> 1); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerA == 0); + } + //RL B + //#0x10: + ,function (parentObj) { + var newFCarry = (parentObj.registerB > 0x7F); + parentObj.registerB = ((parentObj.registerB << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0); + parentObj.FCarry = newFCarry; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerB == 0); + } + //RL C + //#0x11: + ,function (parentObj) { + var newFCarry = (parentObj.registerC > 0x7F); + parentObj.registerC = ((parentObj.registerC << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0); + parentObj.FCarry = newFCarry; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerC == 0); + } + //RL D + //#0x12: + ,function (parentObj) { + var newFCarry = (parentObj.registerD > 0x7F); + parentObj.registerD = ((parentObj.registerD << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0); + parentObj.FCarry = newFCarry; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerD == 0); + } + //RL E + //#0x13: + ,function (parentObj) { + var newFCarry = (parentObj.registerE > 0x7F); + parentObj.registerE = ((parentObj.registerE << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0); + parentObj.FCarry = newFCarry; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerE == 0); + } + //RL H + //#0x14: + ,function (parentObj) { + var newFCarry = (parentObj.registersHL > 0x7FFF); + parentObj.registersHL = ((parentObj.registersHL << 1) & 0xFE00) | ((parentObj.FCarry) ? 0x100 : 0) | (parentObj.registersHL & 0xFF); + parentObj.FCarry = newFCarry; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registersHL < 0x100); + } + //RL L + //#0x15: + ,function (parentObj) { + var newFCarry = ((parentObj.registersHL & 0x80) == 0x80); + parentObj.registersHL = (parentObj.registersHL & 0xFF00) | ((parentObj.registersHL << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0); + parentObj.FCarry = newFCarry; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0xFF) == 0); + } + //RL (HL) + //#0x16: + ,function (parentObj) { + var temp_var = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + var newFCarry = (temp_var > 0x7F); + temp_var = ((temp_var << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0); + parentObj.FCarry = newFCarry; + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, temp_var); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (temp_var == 0); + } + //RL A + //#0x17: + ,function (parentObj) { + var newFCarry = (parentObj.registerA > 0x7F); + parentObj.registerA = ((parentObj.registerA << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0); + parentObj.FCarry = newFCarry; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerA == 0); + } + //RR B + //#0x18: + ,function (parentObj) { + var newFCarry = ((parentObj.registerB & 0x01) == 0x01); + parentObj.registerB = ((parentObj.FCarry) ? 0x80 : 0) | (parentObj.registerB >> 1); + parentObj.FCarry = newFCarry; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerB == 0); + } + //RR C + //#0x19: + ,function (parentObj) { + var newFCarry = ((parentObj.registerC & 0x01) == 0x01); + parentObj.registerC = ((parentObj.FCarry) ? 0x80 : 0) | (parentObj.registerC >> 1); + parentObj.FCarry = newFCarry; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerC == 0); + } + //RR D + //#0x1A: + ,function (parentObj) { + var newFCarry = ((parentObj.registerD & 0x01) == 0x01); + parentObj.registerD = ((parentObj.FCarry) ? 0x80 : 0) | (parentObj.registerD >> 1); + parentObj.FCarry = newFCarry; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerD == 0); + } + //RR E + //#0x1B: + ,function (parentObj) { + var newFCarry = ((parentObj.registerE & 0x01) == 0x01); + parentObj.registerE = ((parentObj.FCarry) ? 0x80 : 0) | (parentObj.registerE >> 1); + parentObj.FCarry = newFCarry; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerE == 0); + } + //RR H + //#0x1C: + ,function (parentObj) { + var newFCarry = ((parentObj.registersHL & 0x0100) == 0x0100); + parentObj.registersHL = ((parentObj.FCarry) ? 0x8000 : 0) | ((parentObj.registersHL >> 1) & 0xFF00) | (parentObj.registersHL & 0xFF); + parentObj.FCarry = newFCarry; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registersHL < 0x100); + } + //RR L + //#0x1D: + ,function (parentObj) { + var newFCarry = ((parentObj.registersHL & 0x01) == 0x01); + parentObj.registersHL = (parentObj.registersHL & 0xFF00) | ((parentObj.FCarry) ? 0x80 : 0) | ((parentObj.registersHL & 0xFF) >> 1); + parentObj.FCarry = newFCarry; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0xFF) == 0); + } + //RR (HL) + //#0x1E: + ,function (parentObj) { + var temp_var = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + var newFCarry = ((temp_var & 0x01) == 0x01); + temp_var = ((parentObj.FCarry) ? 0x80 : 0) | (temp_var >> 1); + parentObj.FCarry = newFCarry; + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, temp_var); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (temp_var == 0); + } + //RR A + //#0x1F: + ,function (parentObj) { + var newFCarry = ((parentObj.registerA & 0x01) == 0x01); + parentObj.registerA = ((parentObj.FCarry) ? 0x80 : 0) | (parentObj.registerA >> 1); + parentObj.FCarry = newFCarry; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerA == 0); + } + //SLA B + //#0x20: + ,function (parentObj) { + parentObj.FCarry = (parentObj.registerB > 0x7F); + parentObj.registerB = (parentObj.registerB << 1) & 0xFF; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerB == 0); + } + //SLA C + //#0x21: + ,function (parentObj) { + parentObj.FCarry = (parentObj.registerC > 0x7F); + parentObj.registerC = (parentObj.registerC << 1) & 0xFF; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerC == 0); + } + //SLA D + //#0x22: + ,function (parentObj) { + parentObj.FCarry = (parentObj.registerD > 0x7F); + parentObj.registerD = (parentObj.registerD << 1) & 0xFF; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerD == 0); + } + //SLA E + //#0x23: + ,function (parentObj) { + parentObj.FCarry = (parentObj.registerE > 0x7F); + parentObj.registerE = (parentObj.registerE << 1) & 0xFF; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerE == 0); + } + //SLA H + //#0x24: + ,function (parentObj) { + parentObj.FCarry = (parentObj.registersHL > 0x7FFF); + parentObj.registersHL = ((parentObj.registersHL << 1) & 0xFE00) | (parentObj.registersHL & 0xFF); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registersHL < 0x100); + } + //SLA L + //#0x25: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registersHL & 0x0080) == 0x0080); + parentObj.registersHL = (parentObj.registersHL & 0xFF00) | ((parentObj.registersHL << 1) & 0xFF); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0xFF) == 0); + } + //SLA (HL) + //#0x26: + ,function (parentObj) { + var temp_var = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + parentObj.FCarry = (temp_var > 0x7F); + temp_var = (temp_var << 1) & 0xFF; + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, temp_var); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (temp_var == 0); + } + //SLA A + //#0x27: + ,function (parentObj) { + parentObj.FCarry = (parentObj.registerA > 0x7F); + parentObj.registerA = (parentObj.registerA << 1) & 0xFF; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerA == 0); + } + //SRA B + //#0x28: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registerB & 0x01) == 0x01); + parentObj.registerB = (parentObj.registerB & 0x80) | (parentObj.registerB >> 1); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerB == 0); + } + //SRA C + //#0x29: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registerC & 0x01) == 0x01); + parentObj.registerC = (parentObj.registerC & 0x80) | (parentObj.registerC >> 1); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerC == 0); + } + //SRA D + //#0x2A: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registerD & 0x01) == 0x01); + parentObj.registerD = (parentObj.registerD & 0x80) | (parentObj.registerD >> 1); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerD == 0); + } + //SRA E + //#0x2B: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registerE & 0x01) == 0x01); + parentObj.registerE = (parentObj.registerE & 0x80) | (parentObj.registerE >> 1); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerE == 0); + } + //SRA H + //#0x2C: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registersHL & 0x0100) == 0x0100); + parentObj.registersHL = ((parentObj.registersHL >> 1) & 0xFF00) | (parentObj.registersHL & 0x80FF); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registersHL < 0x100); + } + //SRA L + //#0x2D: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registersHL & 0x0001) == 0x0001); + parentObj.registersHL = (parentObj.registersHL & 0xFF80) | ((parentObj.registersHL & 0xFF) >> 1); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0xFF) == 0); + } + //SRA (HL) + //#0x2E: + ,function (parentObj) { + var temp_var = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + parentObj.FCarry = ((temp_var & 0x01) == 0x01); + temp_var = (temp_var & 0x80) | (temp_var >> 1); + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, temp_var); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (temp_var == 0); + } + //SRA A + //#0x2F: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registerA & 0x01) == 0x01); + parentObj.registerA = (parentObj.registerA & 0x80) | (parentObj.registerA >> 1); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerA == 0); + } + //SWAP B + //#0x30: + ,function (parentObj) { + parentObj.registerB = ((parentObj.registerB & 0xF) << 4) | (parentObj.registerB >> 4); + parentObj.FZero = (parentObj.registerB == 0); + parentObj.FCarry = parentObj.FHalfCarry = parentObj.FSubtract = false; + } + //SWAP C + //#0x31: + ,function (parentObj) { + parentObj.registerC = ((parentObj.registerC & 0xF) << 4) | (parentObj.registerC >> 4); + parentObj.FZero = (parentObj.registerC == 0); + parentObj.FCarry = parentObj.FHalfCarry = parentObj.FSubtract = false; + } + //SWAP D + //#0x32: + ,function (parentObj) { + parentObj.registerD = ((parentObj.registerD & 0xF) << 4) | (parentObj.registerD >> 4); + parentObj.FZero = (parentObj.registerD == 0); + parentObj.FCarry = parentObj.FHalfCarry = parentObj.FSubtract = false; + } + //SWAP E + //#0x33: + ,function (parentObj) { + parentObj.registerE = ((parentObj.registerE & 0xF) << 4) | (parentObj.registerE >> 4); + parentObj.FZero = (parentObj.registerE == 0); + parentObj.FCarry = parentObj.FHalfCarry = parentObj.FSubtract = false; + } + //SWAP H + //#0x34: + ,function (parentObj) { + parentObj.registersHL = ((parentObj.registersHL & 0xF00) << 4) | ((parentObj.registersHL & 0xF000) >> 4) | (parentObj.registersHL & 0xFF); + parentObj.FZero = (parentObj.registersHL < 0x100); + parentObj.FCarry = parentObj.FHalfCarry = parentObj.FSubtract = false; + } + //SWAP L + //#0x35: + ,function (parentObj) { + parentObj.registersHL = (parentObj.registersHL & 0xFF00) | ((parentObj.registersHL & 0xF) << 4) | ((parentObj.registersHL & 0xF0) >> 4); + parentObj.FZero = ((parentObj.registersHL & 0xFF) == 0); + parentObj.FCarry = parentObj.FHalfCarry = parentObj.FSubtract = false; + } + //SWAP (HL) + //#0x36: + ,function (parentObj) { + var temp_var = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + temp_var = ((temp_var & 0xF) << 4) | (temp_var >> 4); + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, temp_var); + parentObj.FZero = (temp_var == 0); + parentObj.FCarry = parentObj.FHalfCarry = parentObj.FSubtract = false; + } + //SWAP A + //#0x37: + ,function (parentObj) { + parentObj.registerA = ((parentObj.registerA & 0xF) << 4) | (parentObj.registerA >> 4); + parentObj.FZero = (parentObj.registerA == 0); + parentObj.FCarry = parentObj.FHalfCarry = parentObj.FSubtract = false; + } + //SRL B + //#0x38: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registerB & 0x01) == 0x01); + parentObj.registerB >>= 1; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerB == 0); + } + //SRL C + //#0x39: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registerC & 0x01) == 0x01); + parentObj.registerC >>= 1; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerC == 0); + } + //SRL D + //#0x3A: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registerD & 0x01) == 0x01); + parentObj.registerD >>= 1; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerD == 0); + } + //SRL E + //#0x3B: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registerE & 0x01) == 0x01); + parentObj.registerE >>= 1; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerE == 0); + } + //SRL H + //#0x3C: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registersHL & 0x0100) == 0x0100); + parentObj.registersHL = ((parentObj.registersHL >> 1) & 0xFF00) | (parentObj.registersHL & 0xFF); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registersHL < 0x100); + } + //SRL L + //#0x3D: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registersHL & 0x0001) == 0x0001); + parentObj.registersHL = (parentObj.registersHL & 0xFF00) | ((parentObj.registersHL & 0xFF) >> 1); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0xFF) == 0); + } + //SRL (HL) + //#0x3E: + ,function (parentObj) { + var temp_var = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL); + parentObj.FCarry = ((temp_var & 0x01) == 0x01); + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, temp_var >> 1); + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (temp_var < 2); + } + //SRL A + //#0x3F: + ,function (parentObj) { + parentObj.FCarry = ((parentObj.registerA & 0x01) == 0x01); + parentObj.registerA >>= 1; + parentObj.FHalfCarry = parentObj.FSubtract = false; + parentObj.FZero = (parentObj.registerA == 0); + } + //BIT 0, B + //#0x40: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerB & 0x01) == 0); + } + //BIT 0, C + //#0x41: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerC & 0x01) == 0); + } + //BIT 0, D + //#0x42: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerD & 0x01) == 0); + } + //BIT 0, E + //#0x43: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerE & 0x01) == 0); + } + //BIT 0, H + //#0x44: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0x0100) == 0); + } + //BIT 0, L + //#0x45: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0x0001) == 0); + } + //BIT 0, (HL) + //#0x46: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0x01) == 0); + } + //BIT 0, A + //#0x47: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerA & 0x01) == 0); + } + //BIT 1, B + //#0x48: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerB & 0x02) == 0); + } + //BIT 1, C + //#0x49: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerC & 0x02) == 0); + } + //BIT 1, D + //#0x4A: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerD & 0x02) == 0); + } + //BIT 1, E + //#0x4B: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerE & 0x02) == 0); + } + //BIT 1, H + //#0x4C: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0x0200) == 0); + } + //BIT 1, L + //#0x4D: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0x0002) == 0); + } + //BIT 1, (HL) + //#0x4E: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0x02) == 0); + } + //BIT 1, A + //#0x4F: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerA & 0x02) == 0); + } + //BIT 2, B + //#0x50: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerB & 0x04) == 0); + } + //BIT 2, C + //#0x51: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerC & 0x04) == 0); + } + //BIT 2, D + //#0x52: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerD & 0x04) == 0); + } + //BIT 2, E + //#0x53: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerE & 0x04) == 0); + } + //BIT 2, H + //#0x54: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0x0400) == 0); + } + //BIT 2, L + //#0x55: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0x0004) == 0); + } + //BIT 2, (HL) + //#0x56: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0x04) == 0); + } + //BIT 2, A + //#0x57: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerA & 0x04) == 0); + } + //BIT 3, B + //#0x58: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerB & 0x08) == 0); + } + //BIT 3, C + //#0x59: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerC & 0x08) == 0); + } + //BIT 3, D + //#0x5A: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerD & 0x08) == 0); + } + //BIT 3, E + //#0x5B: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerE & 0x08) == 0); + } + //BIT 3, H + //#0x5C: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0x0800) == 0); + } + //BIT 3, L + //#0x5D: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0x0008) == 0); + } + //BIT 3, (HL) + //#0x5E: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0x08) == 0); + } + //BIT 3, A + //#0x5F: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerA & 0x08) == 0); + } + //BIT 4, B + //#0x60: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerB & 0x10) == 0); + } + //BIT 4, C + //#0x61: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerC & 0x10) == 0); + } + //BIT 4, D + //#0x62: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerD & 0x10) == 0); + } + //BIT 4, E + //#0x63: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerE & 0x10) == 0); + } + //BIT 4, H + //#0x64: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0x1000) == 0); + } + //BIT 4, L + //#0x65: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0x0010) == 0); + } + //BIT 4, (HL) + //#0x66: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0x10) == 0); + } + //BIT 4, A + //#0x67: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerA & 0x10) == 0); + } + //BIT 5, B + //#0x68: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerB & 0x20) == 0); + } + //BIT 5, C + //#0x69: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerC & 0x20) == 0); + } + //BIT 5, D + //#0x6A: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerD & 0x20) == 0); + } + //BIT 5, E + //#0x6B: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerE & 0x20) == 0); + } + //BIT 5, H + //#0x6C: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0x2000) == 0); + } + //BIT 5, L + //#0x6D: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0x0020) == 0); + } + //BIT 5, (HL) + //#0x6E: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0x20) == 0); + } + //BIT 5, A + //#0x6F: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerA & 0x20) == 0); + } + //BIT 6, B + //#0x70: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerB & 0x40) == 0); + } + //BIT 6, C + //#0x71: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerC & 0x40) == 0); + } + //BIT 6, D + //#0x72: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerD & 0x40) == 0); + } + //BIT 6, E + //#0x73: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerE & 0x40) == 0); + } + //BIT 6, H + //#0x74: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0x4000) == 0); + } + //BIT 6, L + //#0x75: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0x0040) == 0); + } + //BIT 6, (HL) + //#0x76: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0x40) == 0); + } + //BIT 6, A + //#0x77: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerA & 0x40) == 0); + } + //BIT 7, B + //#0x78: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerB & 0x80) == 0); + } + //BIT 7, C + //#0x79: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerC & 0x80) == 0); + } + //BIT 7, D + //#0x7A: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerD & 0x80) == 0); + } + //BIT 7, E + //#0x7B: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerE & 0x80) == 0); + } + //BIT 7, H + //#0x7C: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0x8000) == 0); + } + //BIT 7, L + //#0x7D: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registersHL & 0x0080) == 0); + } + //BIT 7, (HL) + //#0x7E: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0x80) == 0); + } + //BIT 7, A + //#0x7F: + ,function (parentObj) { + parentObj.FHalfCarry = true; + parentObj.FSubtract = false; + parentObj.FZero = ((parentObj.registerA & 0x80) == 0); + } + //RES 0, B + //#0x80: + ,function (parentObj) { + parentObj.registerB &= 0xFE; + } + //RES 0, C + //#0x81: + ,function (parentObj) { + parentObj.registerC &= 0xFE; + } + //RES 0, D + //#0x82: + ,function (parentObj) { + parentObj.registerD &= 0xFE; + } + //RES 0, E + //#0x83: + ,function (parentObj) { + parentObj.registerE &= 0xFE; + } + //RES 0, H + //#0x84: + ,function (parentObj) { + parentObj.registersHL &= 0xFEFF; + } + //RES 0, L + //#0x85: + ,function (parentObj) { + parentObj.registersHL &= 0xFFFE; + } + //RES 0, (HL) + //#0x86: + ,function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0xFE); + } + //RES 0, A + //#0x87: + ,function (parentObj) { + parentObj.registerA &= 0xFE; + } + //RES 1, B + //#0x88: + ,function (parentObj) { + parentObj.registerB &= 0xFD; + } + //RES 1, C + //#0x89: + ,function (parentObj) { + parentObj.registerC &= 0xFD; + } + //RES 1, D + //#0x8A: + ,function (parentObj) { + parentObj.registerD &= 0xFD; + } + //RES 1, E + //#0x8B: + ,function (parentObj) { + parentObj.registerE &= 0xFD; + } + //RES 1, H + //#0x8C: + ,function (parentObj) { + parentObj.registersHL &= 0xFDFF; + } + //RES 1, L + //#0x8D: + ,function (parentObj) { + parentObj.registersHL &= 0xFFFD; + } + //RES 1, (HL) + //#0x8E: + ,function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0xFD); + } + //RES 1, A + //#0x8F: + ,function (parentObj) { + parentObj.registerA &= 0xFD; + } + //RES 2, B + //#0x90: + ,function (parentObj) { + parentObj.registerB &= 0xFB; + } + //RES 2, C + //#0x91: + ,function (parentObj) { + parentObj.registerC &= 0xFB; + } + //RES 2, D + //#0x92: + ,function (parentObj) { + parentObj.registerD &= 0xFB; + } + //RES 2, E + //#0x93: + ,function (parentObj) { + parentObj.registerE &= 0xFB; + } + //RES 2, H + //#0x94: + ,function (parentObj) { + parentObj.registersHL &= 0xFBFF; + } + //RES 2, L + //#0x95: + ,function (parentObj) { + parentObj.registersHL &= 0xFFFB; + } + //RES 2, (HL) + //#0x96: + ,function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0xFB); + } + //RES 2, A + //#0x97: + ,function (parentObj) { + parentObj.registerA &= 0xFB; + } + //RES 3, B + //#0x98: + ,function (parentObj) { + parentObj.registerB &= 0xF7; + } + //RES 3, C + //#0x99: + ,function (parentObj) { + parentObj.registerC &= 0xF7; + } + //RES 3, D + //#0x9A: + ,function (parentObj) { + parentObj.registerD &= 0xF7; + } + //RES 3, E + //#0x9B: + ,function (parentObj) { + parentObj.registerE &= 0xF7; + } + //RES 3, H + //#0x9C: + ,function (parentObj) { + parentObj.registersHL &= 0xF7FF; + } + //RES 3, L + //#0x9D: + ,function (parentObj) { + parentObj.registersHL &= 0xFFF7; + } + //RES 3, (HL) + //#0x9E: + ,function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0xF7); + } + //RES 3, A + //#0x9F: + ,function (parentObj) { + parentObj.registerA &= 0xF7; + } + //RES 3, B + //#0xA0: + ,function (parentObj) { + parentObj.registerB &= 0xEF; + } + //RES 4, C + //#0xA1: + ,function (parentObj) { + parentObj.registerC &= 0xEF; + } + //RES 4, D + //#0xA2: + ,function (parentObj) { + parentObj.registerD &= 0xEF; + } + //RES 4, E + //#0xA3: + ,function (parentObj) { + parentObj.registerE &= 0xEF; + } + //RES 4, H + //#0xA4: + ,function (parentObj) { + parentObj.registersHL &= 0xEFFF; + } + //RES 4, L + //#0xA5: + ,function (parentObj) { + parentObj.registersHL &= 0xFFEF; + } + //RES 4, (HL) + //#0xA6: + ,function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0xEF); + } + //RES 4, A + //#0xA7: + ,function (parentObj) { + parentObj.registerA &= 0xEF; + } + //RES 5, B + //#0xA8: + ,function (parentObj) { + parentObj.registerB &= 0xDF; + } + //RES 5, C + //#0xA9: + ,function (parentObj) { + parentObj.registerC &= 0xDF; + } + //RES 5, D + //#0xAA: + ,function (parentObj) { + parentObj.registerD &= 0xDF; + } + //RES 5, E + //#0xAB: + ,function (parentObj) { + parentObj.registerE &= 0xDF; + } + //RES 5, H + //#0xAC: + ,function (parentObj) { + parentObj.registersHL &= 0xDFFF; + } + //RES 5, L + //#0xAD: + ,function (parentObj) { + parentObj.registersHL &= 0xFFDF; + } + //RES 5, (HL) + //#0xAE: + ,function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0xDF); + } + //RES 5, A + //#0xAF: + ,function (parentObj) { + parentObj.registerA &= 0xDF; + } + //RES 6, B + //#0xB0: + ,function (parentObj) { + parentObj.registerB &= 0xBF; + } + //RES 6, C + //#0xB1: + ,function (parentObj) { + parentObj.registerC &= 0xBF; + } + //RES 6, D + //#0xB2: + ,function (parentObj) { + parentObj.registerD &= 0xBF; + } + //RES 6, E + //#0xB3: + ,function (parentObj) { + parentObj.registerE &= 0xBF; + } + //RES 6, H + //#0xB4: + ,function (parentObj) { + parentObj.registersHL &= 0xBFFF; + } + //RES 6, L + //#0xB5: + ,function (parentObj) { + parentObj.registersHL &= 0xFFBF; + } + //RES 6, (HL) + //#0xB6: + ,function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0xBF); + } + //RES 6, A + //#0xB7: + ,function (parentObj) { + parentObj.registerA &= 0xBF; + } + //RES 7, B + //#0xB8: + ,function (parentObj) { + parentObj.registerB &= 0x7F; + } + //RES 7, C + //#0xB9: + ,function (parentObj) { + parentObj.registerC &= 0x7F; + } + //RES 7, D + //#0xBA: + ,function (parentObj) { + parentObj.registerD &= 0x7F; + } + //RES 7, E + //#0xBB: + ,function (parentObj) { + parentObj.registerE &= 0x7F; + } + //RES 7, H + //#0xBC: + ,function (parentObj) { + parentObj.registersHL &= 0x7FFF; + } + //RES 7, L + //#0xBD: + ,function (parentObj) { + parentObj.registersHL &= 0xFF7F; + } + //RES 7, (HL) + //#0xBE: + ,function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0x7F); + } + //RES 7, A + //#0xBF: + ,function (parentObj) { + parentObj.registerA &= 0x7F; + } + //SET 0, B + //#0xC0: + ,function (parentObj) { + parentObj.registerB |= 0x01; + } + //SET 0, C + //#0xC1: + ,function (parentObj) { + parentObj.registerC |= 0x01; + } + //SET 0, D + //#0xC2: + ,function (parentObj) { + parentObj.registerD |= 0x01; + } + //SET 0, E + //#0xC3: + ,function (parentObj) { + parentObj.registerE |= 0x01; + } + //SET 0, H + //#0xC4: + ,function (parentObj) { + parentObj.registersHL |= 0x0100; + } + //SET 0, L + //#0xC5: + ,function (parentObj) { + parentObj.registersHL |= 0x01; + } + //SET 0, (HL) + //#0xC6: + ,function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) | 0x01); + } + //SET 0, A + //#0xC7: + ,function (parentObj) { + parentObj.registerA |= 0x01; + } + //SET 1, B + //#0xC8: + ,function (parentObj) { + parentObj.registerB |= 0x02; + } + //SET 1, C + //#0xC9: + ,function (parentObj) { + parentObj.registerC |= 0x02; + } + //SET 1, D + //#0xCA: + ,function (parentObj) { + parentObj.registerD |= 0x02; + } + //SET 1, E + //#0xCB: + ,function (parentObj) { + parentObj.registerE |= 0x02; + } + //SET 1, H + //#0xCC: + ,function (parentObj) { + parentObj.registersHL |= 0x0200; + } + //SET 1, L + //#0xCD: + ,function (parentObj) { + parentObj.registersHL |= 0x02; + } + //SET 1, (HL) + //#0xCE: + ,function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) | 0x02); + } + //SET 1, A + //#0xCF: + ,function (parentObj) { + parentObj.registerA |= 0x02; + } + //SET 2, B + //#0xD0: + ,function (parentObj) { + parentObj.registerB |= 0x04; + } + //SET 2, C + //#0xD1: + ,function (parentObj) { + parentObj.registerC |= 0x04; + } + //SET 2, D + //#0xD2: + ,function (parentObj) { + parentObj.registerD |= 0x04; + } + //SET 2, E + //#0xD3: + ,function (parentObj) { + parentObj.registerE |= 0x04; + } + //SET 2, H + //#0xD4: + ,function (parentObj) { + parentObj.registersHL |= 0x0400; + } + //SET 2, L + //#0xD5: + ,function (parentObj) { + parentObj.registersHL |= 0x04; + } + //SET 2, (HL) + //#0xD6: + ,function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) | 0x04); + } + //SET 2, A + //#0xD7: + ,function (parentObj) { + parentObj.registerA |= 0x04; + } + //SET 3, B + //#0xD8: + ,function (parentObj) { + parentObj.registerB |= 0x08; + } + //SET 3, C + //#0xD9: + ,function (parentObj) { + parentObj.registerC |= 0x08; + } + //SET 3, D + //#0xDA: + ,function (parentObj) { + parentObj.registerD |= 0x08; + } + //SET 3, E + //#0xDB: + ,function (parentObj) { + parentObj.registerE |= 0x08; + } + //SET 3, H + //#0xDC: + ,function (parentObj) { + parentObj.registersHL |= 0x0800; + } + //SET 3, L + //#0xDD: + ,function (parentObj) { + parentObj.registersHL |= 0x08; + } + //SET 3, (HL) + //#0xDE: + ,function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) | 0x08); + } + //SET 3, A + //#0xDF: + ,function (parentObj) { + parentObj.registerA |= 0x08; + } + //SET 4, B + //#0xE0: + ,function (parentObj) { + parentObj.registerB |= 0x10; + } + //SET 4, C + //#0xE1: + ,function (parentObj) { + parentObj.registerC |= 0x10; + } + //SET 4, D + //#0xE2: + ,function (parentObj) { + parentObj.registerD |= 0x10; + } + //SET 4, E + //#0xE3: + ,function (parentObj) { + parentObj.registerE |= 0x10; + } + //SET 4, H + //#0xE4: + ,function (parentObj) { + parentObj.registersHL |= 0x1000; + } + //SET 4, L + //#0xE5: + ,function (parentObj) { + parentObj.registersHL |= 0x10; + } + //SET 4, (HL) + //#0xE6: + ,function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) | 0x10); + } + //SET 4, A + //#0xE7: + ,function (parentObj) { + parentObj.registerA |= 0x10; + } + //SET 5, B + //#0xE8: + ,function (parentObj) { + parentObj.registerB |= 0x20; + } + //SET 5, C + //#0xE9: + ,function (parentObj) { + parentObj.registerC |= 0x20; + } + //SET 5, D + //#0xEA: + ,function (parentObj) { + parentObj.registerD |= 0x20; + } + //SET 5, E + //#0xEB: + ,function (parentObj) { + parentObj.registerE |= 0x20; + } + //SET 5, H + //#0xEC: + ,function (parentObj) { + parentObj.registersHL |= 0x2000; + } + //SET 5, L + //#0xED: + ,function (parentObj) { + parentObj.registersHL |= 0x20; + } + //SET 5, (HL) + //#0xEE: + ,function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) | 0x20); + } + //SET 5, A + //#0xEF: + ,function (parentObj) { + parentObj.registerA |= 0x20; + } + //SET 6, B + //#0xF0: + ,function (parentObj) { + parentObj.registerB |= 0x40; + } + //SET 6, C + //#0xF1: + ,function (parentObj) { + parentObj.registerC |= 0x40; + } + //SET 6, D + //#0xF2: + ,function (parentObj) { + parentObj.registerD |= 0x40; + } + //SET 6, E + //#0xF3: + ,function (parentObj) { + parentObj.registerE |= 0x40; + } + //SET 6, H + //#0xF4: + ,function (parentObj) { + parentObj.registersHL |= 0x4000; + } + //SET 6, L + //#0xF5: + ,function (parentObj) { + parentObj.registersHL |= 0x40; + } + //SET 6, (HL) + //#0xF6: + ,function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) | 0x40); + } + //SET 6, A + //#0xF7: + ,function (parentObj) { + parentObj.registerA |= 0x40; + } + //SET 7, B + //#0xF8: + ,function (parentObj) { + parentObj.registerB |= 0x80; + } + //SET 7, C + //#0xF9: + ,function (parentObj) { + parentObj.registerC |= 0x80; + } + //SET 7, D + //#0xFA: + ,function (parentObj) { + parentObj.registerD |= 0x80; + } + //SET 7, E + //#0xFB: + ,function (parentObj) { + parentObj.registerE |= 0x80; + } + //SET 7, H + //#0xFC: + ,function (parentObj) { + parentObj.registersHL |= 0x8000; + } + //SET 7, L + //#0xFD: + ,function (parentObj) { + parentObj.registersHL |= 0x80; + } + //SET 7, (HL) + //#0xFE: + ,function (parentObj) { + parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) | 0x80); + } + //SET 7, A + //#0xFF: + ,function (parentObj) { + parentObj.registerA |= 0x80; + } +]; +GameBoyCore.prototype.TICKTable = [ //Number of machine cycles for each instruction: +/* 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F*/ + 4, 12, 8, 8, 4, 4, 8, 4, 20, 8, 8, 8, 4, 4, 8, 4, //0 + 4, 12, 8, 8, 4, 4, 8, 4, 12, 8, 8, 8, 4, 4, 8, 4, //1 + 8, 12, 8, 8, 4, 4, 8, 4, 8, 8, 8, 8, 4, 4, 8, 4, //2 + 8, 12, 8, 8, 12, 12, 12, 4, 8, 8, 8, 8, 4, 4, 8, 4, //3 + + 4, 4, 4, 4, 4, 4, 8, 4, 4, 4, 4, 4, 4, 4, 8, 4, //4 + 4, 4, 4, 4, 4, 4, 8, 4, 4, 4, 4, 4, 4, 4, 8, 4, //5 + 4, 4, 4, 4, 4, 4, 8, 4, 4, 4, 4, 4, 4, 4, 8, 4, //6 + 8, 8, 8, 8, 8, 8, 4, 8, 4, 4, 4, 4, 4, 4, 8, 4, //7 + + 4, 4, 4, 4, 4, 4, 8, 4, 4, 4, 4, 4, 4, 4, 8, 4, //8 + 4, 4, 4, 4, 4, 4, 8, 4, 4, 4, 4, 4, 4, 4, 8, 4, //9 + 4, 4, 4, 4, 4, 4, 8, 4, 4, 4, 4, 4, 4, 4, 8, 4, //A + 4, 4, 4, 4, 4, 4, 8, 4, 4, 4, 4, 4, 4, 4, 8, 4, //B + + 8, 12, 12, 16, 12, 16, 8, 16, 8, 16, 12, 0, 12, 24, 8, 16, //C + 8, 12, 12, 4, 12, 16, 8, 16, 8, 16, 12, 4, 12, 4, 8, 16, //D + 12, 12, 8, 4, 4, 16, 8, 16, 16, 4, 16, 4, 4, 4, 8, 16, //E + 12, 12, 8, 4, 4, 16, 8, 16, 12, 8, 16, 4, 0, 4, 8, 16 //F +]; +GameBoyCore.prototype.SecondaryTICKTable = [ //Number of machine cycles for each 0xCBXX instruction: +/* 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F*/ + 8, 8, 8, 8, 8, 8, 16, 8, 8, 8, 8, 8, 8, 8, 16, 8, //0 + 8, 8, 8, 8, 8, 8, 16, 8, 8, 8, 8, 8, 8, 8, 16, 8, //1 + 8, 8, 8, 8, 8, 8, 16, 8, 8, 8, 8, 8, 8, 8, 16, 8, //2 + 8, 8, 8, 8, 8, 8, 16, 8, 8, 8, 8, 8, 8, 8, 16, 8, //3 + + 8, 8, 8, 8, 8, 8, 12, 8, 8, 8, 8, 8, 8, 8, 12, 8, //4 + 8, 8, 8, 8, 8, 8, 12, 8, 8, 8, 8, 8, 8, 8, 12, 8, //5 + 8, 8, 8, 8, 8, 8, 12, 8, 8, 8, 8, 8, 8, 8, 12, 8, //6 + 8, 8, 8, 8, 8, 8, 12, 8, 8, 8, 8, 8, 8, 8, 12, 8, //7 + + 8, 8, 8, 8, 8, 8, 16, 8, 8, 8, 8, 8, 8, 8, 16, 8, //8 + 8, 8, 8, 8, 8, 8, 16, 8, 8, 8, 8, 8, 8, 8, 16, 8, //9 + 8, 8, 8, 8, 8, 8, 16, 8, 8, 8, 8, 8, 8, 8, 16, 8, //A + 8, 8, 8, 8, 8, 8, 16, 8, 8, 8, 8, 8, 8, 8, 16, 8, //B + + 8, 8, 8, 8, 8, 8, 16, 8, 8, 8, 8, 8, 8, 8, 16, 8, //C + 8, 8, 8, 8, 8, 8, 16, 8, 8, 8, 8, 8, 8, 8, 16, 8, //D + 8, 8, 8, 8, 8, 8, 16, 8, 8, 8, 8, 8, 8, 8, 16, 8, //E + 8, 8, 8, 8, 8, 8, 16, 8, 8, 8, 8, 8, 8, 8, 16, 8 //F +]; +GameBoyCore.prototype.saveSRAMState = function () { + if (!this.cBATT || this.MBCRam.length == 0) { + //No battery backup... + return []; + } + else { + //Return the MBC RAM for backup... + return this.fromTypedArray(this.MBCRam); + } +} +GameBoyCore.prototype.saveRTCState = function () { + if (!this.cTIMER) { + //No battery backup... + return []; + } + else { + //Return the MBC RAM for backup... + return [ + this.lastIteration, + this.RTCisLatched, + this.latchedSeconds, + this.latchedMinutes, + this.latchedHours, + this.latchedLDays, + this.latchedHDays, + this.RTCSeconds, + this.RTCMinutes, + this.RTCHours, + this.RTCDays, + this.RTCDayOverFlow, + this.RTCHALT + ]; + } +} +GameBoyCore.prototype.saveState = function () { + return [ + this.fromTypedArray(this.ROM), + this.inBootstrap, + this.registerA, + this.FZero, + this.FSubtract, + this.FHalfCarry, + this.FCarry, + this.registerB, + this.registerC, + this.registerD, + this.registerE, + this.registersHL, + this.stackPointer, + this.programCounter, + this.halt, + this.IME, + this.hdmaRunning, + this.CPUTicks, + this.doubleSpeedShifter, + this.fromTypedArray(this.memory), + this.fromTypedArray(this.MBCRam), + this.fromTypedArray(this.VRAM), + this.currVRAMBank, + this.fromTypedArray(this.GBCMemory), + this.MBC1Mode, + this.MBCRAMBanksEnabled, + this.currMBCRAMBank, + this.currMBCRAMBankPosition, + this.cGBC, + this.gbcRamBank, + this.gbcRamBankPosition, + this.ROMBank1offs, + this.currentROMBank, + this.cartridgeType, + this.name, + this.gameCode, + this.modeSTAT, + this.LYCMatchTriggerSTAT, + this.mode2TriggerSTAT, + this.mode1TriggerSTAT, + this.mode0TriggerSTAT, + this.LCDisOn, + this.gfxWindowCHRBankPosition, + this.gfxWindowDisplay, + this.gfxSpriteShow, + this.gfxSpriteNormalHeight, + this.gfxBackgroundCHRBankPosition, + this.gfxBackgroundBankOffset, + this.TIMAEnabled, + this.DIVTicks, + this.LCDTicks, + this.timerTicks, + this.TACClocker, + this.serialTimer, + this.serialShiftTimer, + this.serialShiftTimerAllocated, + this.IRQEnableDelay, + this.lastIteration, + this.cMBC1, + this.cMBC2, + this.cMBC3, + this.cMBC5, + this.cMBC7, + this.cSRAM, + this.cMMMO1, + this.cRUMBLE, + this.cCamera, + this.cTAMA5, + this.cHuC3, + this.cHuC1, + this.drewBlank, + this.fromTypedArray(this.frameBuffer), + this.bgEnabled, + this.BGPriorityEnabled, + this.channel1FrequencyTracker, + this.channel1FrequencyCounter, + this.channel1totalLength, + this.channel1envelopeVolume, + this.channel1envelopeType, + this.channel1envelopeSweeps, + this.channel1envelopeSweepsLast, + this.channel1consecutive, + this.channel1frequency, + this.channel1SweepFault, + this.channel1ShadowFrequency, + this.channel1timeSweep, + this.channel1lastTimeSweep, + this.channel1numSweep, + this.channel1frequencySweepDivider, + this.channel1decreaseSweep, + this.channel2FrequencyTracker, + this.channel2FrequencyCounter, + this.channel2totalLength, + this.channel2envelopeVolume, + this.channel2envelopeType, + this.channel2envelopeSweeps, + this.channel2envelopeSweepsLast, + this.channel2consecutive, + this.channel2frequency, + this.channel3canPlay, + this.channel3totalLength, + this.channel3patternType, + this.channel3frequency, + this.channel3consecutive, + this.fromTypedArray(this.channel3PCM), + this.channel4FrequencyPeriod, + this.channel4lastSampleLookup, + this.channel4totalLength, + this.channel4envelopeVolume, + this.channel4currentVolume, + this.channel4envelopeType, + this.channel4envelopeSweeps, + this.channel4envelopeSweepsLast, + this.channel4consecutive, + this.channel4BitRange, + this.soundMasterEnabled, + this.VinLeftChannelMasterVolume, + this.VinRightChannelMasterVolume, + this.leftChannel1, + this.leftChannel2, + this.leftChannel3, + this.leftChannel4, + this.rightChannel1, + this.rightChannel2, + this.rightChannel3, + this.rightChannel4, + this.channel1currentSampleLeft, + this.channel1currentSampleRight, + this.channel2currentSampleLeft, + this.channel2currentSampleRight, + this.channel3currentSampleLeft, + this.channel3currentSampleRight, + this.channel4currentSampleLeft, + this.channel4currentSampleRight, + this.channel1currentSampleLeftSecondary, + this.channel1currentSampleRightSecondary, + this.channel2currentSampleLeftSecondary, + this.channel2currentSampleRightSecondary, + this.channel3currentSampleLeftSecondary, + this.channel3currentSampleRightSecondary, + this.channel4currentSampleLeftSecondary, + this.channel4currentSampleRightSecondary, + this.channel1currentSampleLeftTrimary, + this.channel1currentSampleRightTrimary, + this.channel2currentSampleLeftTrimary, + this.channel2currentSampleRightTrimary, + this.mixerOutputCache, + this.channel1DutyTracker, + this.channel1CachedDuty, + this.channel2DutyTracker, + this.channel2CachedDuty, + this.channel1Enabled, + this.channel2Enabled, + this.channel3Enabled, + this.channel4Enabled, + this.sequencerClocks, + this.sequencePosition, + this.channel3Counter, + this.channel4Counter, + this.cachedChannel3Sample, + this.cachedChannel4Sample, + this.channel3FrequencyPeriod, + this.channel3lastSampleLookup, + this.actualScanLine, + this.lastUnrenderedLine, + this.queuedScanLines, + this.RTCisLatched, + this.latchedSeconds, + this.latchedMinutes, + this.latchedHours, + this.latchedLDays, + this.latchedHDays, + this.RTCSeconds, + this.RTCMinutes, + this.RTCHours, + this.RTCDays, + this.RTCDayOverFlow, + this.RTCHALT, + this.usedBootROM, + this.skipPCIncrement, + this.STATTracker, + this.gbcRamBankPositionECHO, + this.numRAMBanks, + this.windowY, + this.windowX, + this.fromTypedArray(this.gbcOBJRawPalette), + this.fromTypedArray(this.gbcBGRawPalette), + this.fromTypedArray(this.gbOBJPalette), + this.fromTypedArray(this.gbBGPalette), + this.fromTypedArray(this.gbcOBJPalette), + this.fromTypedArray(this.gbcBGPalette), + this.fromTypedArray(this.gbBGColorizedPalette), + this.fromTypedArray(this.gbOBJColorizedPalette), + this.fromTypedArray(this.cachedBGPaletteConversion), + this.fromTypedArray(this.cachedOBJPaletteConversion), + this.fromTypedArray(this.BGCHRBank1), + this.fromTypedArray(this.BGCHRBank2), + this.haltPostClocks, + this.interruptsRequested, + this.interruptsEnabled, + this.remainingClocks, + this.colorizedGBPalettes, + this.backgroundY, + this.backgroundX, + this.CPUStopped + ]; +} +GameBoyCore.prototype.returnFromState = function (returnedFrom) { + var index = 0; + var state = returnedFrom.slice(0); + this.ROM = this.toTypedArray(state[index++], "uint8"); + this.ROMBankEdge = Math.floor(this.ROM.length / 0x4000); + this.inBootstrap = state[index++]; + this.registerA = state[index++]; + this.FZero = state[index++]; + this.FSubtract = state[index++]; + this.FHalfCarry = state[index++]; + this.FCarry = state[index++]; + this.registerB = state[index++]; + this.registerC = state[index++]; + this.registerD = state[index++]; + this.registerE = state[index++]; + this.registersHL = state[index++]; + this.stackPointer = state[index++]; + this.programCounter = state[index++]; + this.halt = state[index++]; + this.IME = state[index++]; + this.hdmaRunning = state[index++]; + this.CPUTicks = state[index++]; + this.doubleSpeedShifter = state[index++]; + this.memory = this.toTypedArray(state[index++], "uint8"); + this.MBCRam = this.toTypedArray(state[index++], "uint8"); + this.VRAM = this.toTypedArray(state[index++], "uint8"); + this.currVRAMBank = state[index++]; + this.GBCMemory = this.toTypedArray(state[index++], "uint8"); + this.MBC1Mode = state[index++]; + this.MBCRAMBanksEnabled = state[index++]; + this.currMBCRAMBank = state[index++]; + this.currMBCRAMBankPosition = state[index++]; + this.cGBC = state[index++]; + this.gbcRamBank = state[index++]; + this.gbcRamBankPosition = state[index++]; + this.ROMBank1offs = state[index++]; + this.currentROMBank = state[index++]; + this.cartridgeType = state[index++]; + this.name = state[index++]; + this.gameCode = state[index++]; + this.modeSTAT = state[index++]; + this.LYCMatchTriggerSTAT = state[index++]; + this.mode2TriggerSTAT = state[index++]; + this.mode1TriggerSTAT = state[index++]; + this.mode0TriggerSTAT = state[index++]; + this.LCDisOn = state[index++]; + this.gfxWindowCHRBankPosition = state[index++]; + this.gfxWindowDisplay = state[index++]; + this.gfxSpriteShow = state[index++]; + this.gfxSpriteNormalHeight = state[index++]; + this.gfxBackgroundCHRBankPosition = state[index++]; + this.gfxBackgroundBankOffset = state[index++]; + this.TIMAEnabled = state[index++]; + this.DIVTicks = state[index++]; + this.LCDTicks = state[index++]; + this.timerTicks = state[index++]; + this.TACClocker = state[index++]; + this.serialTimer = state[index++]; + this.serialShiftTimer = state[index++]; + this.serialShiftTimerAllocated = state[index++]; + this.IRQEnableDelay = state[index++]; + this.lastIteration = state[index++]; + this.cMBC1 = state[index++]; + this.cMBC2 = state[index++]; + this.cMBC3 = state[index++]; + this.cMBC5 = state[index++]; + this.cMBC7 = state[index++]; + this.cSRAM = state[index++]; + this.cMMMO1 = state[index++]; + this.cRUMBLE = state[index++]; + this.cCamera = state[index++]; + this.cTAMA5 = state[index++]; + this.cHuC3 = state[index++]; + this.cHuC1 = state[index++]; + this.drewBlank = state[index++]; + this.frameBuffer = this.toTypedArray(state[index++], "int32"); + this.bgEnabled = state[index++]; + this.BGPriorityEnabled = state[index++]; + this.channel1FrequencyTracker = state[index++]; + this.channel1FrequencyCounter = state[index++]; + this.channel1totalLength = state[index++]; + this.channel1envelopeVolume = state[index++]; + this.channel1envelopeType = state[index++]; + this.channel1envelopeSweeps = state[index++]; + this.channel1envelopeSweepsLast = state[index++]; + this.channel1consecutive = state[index++]; + this.channel1frequency = state[index++]; + this.channel1SweepFault = state[index++]; + this.channel1ShadowFrequency = state[index++]; + this.channel1timeSweep = state[index++]; + this.channel1lastTimeSweep = state[index++]; + this.channel1numSweep = state[index++]; + this.channel1frequencySweepDivider = state[index++]; + this.channel1decreaseSweep = state[index++]; + this.channel2FrequencyTracker = state[index++]; + this.channel2FrequencyCounter = state[index++]; + this.channel2totalLength = state[index++]; + this.channel2envelopeVolume = state[index++]; + this.channel2envelopeType = state[index++]; + this.channel2envelopeSweeps = state[index++]; + this.channel2envelopeSweepsLast = state[index++]; + this.channel2consecutive = state[index++]; + this.channel2frequency = state[index++]; + this.channel3canPlay = state[index++]; + this.channel3totalLength = state[index++]; + this.channel3patternType = state[index++]; + this.channel3frequency = state[index++]; + this.channel3consecutive = state[index++]; + this.channel3PCM = this.toTypedArray(state[index++], "int8"); + this.channel4FrequencyPeriod = state[index++]; + this.channel4lastSampleLookup = state[index++]; + this.channel4totalLength = state[index++]; + this.channel4envelopeVolume = state[index++]; + this.channel4currentVolume = state[index++]; + this.channel4envelopeType = state[index++]; + this.channel4envelopeSweeps = state[index++]; + this.channel4envelopeSweepsLast = state[index++]; + this.channel4consecutive = state[index++]; + this.channel4BitRange = state[index++]; + this.soundMasterEnabled = state[index++]; + this.VinLeftChannelMasterVolume = state[index++]; + this.VinRightChannelMasterVolume = state[index++]; + this.leftChannel1 = state[index++]; + this.leftChannel2 = state[index++]; + this.leftChannel3 = state[index++]; + this.leftChannel4 = state[index++]; + this.rightChannel1 = state[index++]; + this.rightChannel2 = state[index++]; + this.rightChannel3 = state[index++]; + this.rightChannel4 = state[index++]; + this.channel1currentSampleLeft = state[index++]; + this.channel1currentSampleRight = state[index++]; + this.channel2currentSampleLeft = state[index++]; + this.channel2currentSampleRight = state[index++]; + this.channel3currentSampleLeft = state[index++]; + this.channel3currentSampleRight = state[index++]; + this.channel4currentSampleLeft = state[index++]; + this.channel4currentSampleRight = state[index++]; + this.channel1currentSampleLeftSecondary = state[index++]; + this.channel1currentSampleRightSecondary = state[index++]; + this.channel2currentSampleLeftSecondary = state[index++]; + this.channel2currentSampleRightSecondary = state[index++]; + this.channel3currentSampleLeftSecondary = state[index++]; + this.channel3currentSampleRightSecondary = state[index++]; + this.channel4currentSampleLeftSecondary = state[index++]; + this.channel4currentSampleRightSecondary = state[index++]; + this.channel1currentSampleLeftTrimary = state[index++]; + this.channel1currentSampleRightTrimary = state[index++]; + this.channel2currentSampleLeftTrimary = state[index++]; + this.channel2currentSampleRightTrimary = state[index++]; + this.mixerOutputCache = state[index++]; + this.channel1DutyTracker = state[index++]; + this.channel1CachedDuty = state[index++]; + this.channel2DutyTracker = state[index++]; + this.channel2CachedDuty = state[index++]; + this.channel1Enabled = state[index++]; + this.channel2Enabled = state[index++]; + this.channel3Enabled = state[index++]; + this.channel4Enabled = state[index++]; + this.sequencerClocks = state[index++]; + this.sequencePosition = state[index++]; + this.channel3Counter = state[index++]; + this.channel4Counter = state[index++]; + this.cachedChannel3Sample = state[index++]; + this.cachedChannel4Sample = state[index++]; + this.channel3FrequencyPeriod = state[index++]; + this.channel3lastSampleLookup = state[index++]; + this.actualScanLine = state[index++]; + this.lastUnrenderedLine = state[index++]; + this.queuedScanLines = state[index++]; + this.RTCisLatched = state[index++]; + this.latchedSeconds = state[index++]; + this.latchedMinutes = state[index++]; + this.latchedHours = state[index++]; + this.latchedLDays = state[index++]; + this.latchedHDays = state[index++]; + this.RTCSeconds = state[index++]; + this.RTCMinutes = state[index++]; + this.RTCHours = state[index++]; + this.RTCDays = state[index++]; + this.RTCDayOverFlow = state[index++]; + this.RTCHALT = state[index++]; + this.usedBootROM = state[index++]; + this.skipPCIncrement = state[index++]; + this.STATTracker = state[index++]; + this.gbcRamBankPositionECHO = state[index++]; + this.numRAMBanks = state[index++]; + this.windowY = state[index++]; + this.windowX = state[index++]; + this.gbcOBJRawPalette = this.toTypedArray(state[index++], "uint8"); + this.gbcBGRawPalette = this.toTypedArray(state[index++], "uint8"); + this.gbOBJPalette = this.toTypedArray(state[index++], "int32"); + this.gbBGPalette = this.toTypedArray(state[index++], "int32"); + this.gbcOBJPalette = this.toTypedArray(state[index++], "int32"); + this.gbcBGPalette = this.toTypedArray(state[index++], "int32"); + this.gbBGColorizedPalette = this.toTypedArray(state[index++], "int32"); + this.gbOBJColorizedPalette = this.toTypedArray(state[index++], "int32"); + this.cachedBGPaletteConversion = this.toTypedArray(state[index++], "int32"); + this.cachedOBJPaletteConversion = this.toTypedArray(state[index++], "int32"); + this.BGCHRBank1 = this.toTypedArray(state[index++], "uint8"); + this.BGCHRBank2 = this.toTypedArray(state[index++], "uint8"); + this.haltPostClocks = state[index++]; + this.interruptsRequested = state[index++]; + this.interruptsEnabled = state[index++]; + this.checkIRQMatching(); + this.remainingClocks = state[index++]; + this.colorizedGBPalettes = state[index++]; + this.backgroundY = state[index++]; + this.backgroundX = state[index++]; + this.CPUStopped = state[index]; + this.fromSaveState = true; + this.TICKTable = this.toTypedArray(this.TICKTable, "uint8"); + this.SecondaryTICKTable = this.toTypedArray(this.SecondaryTICKTable, "uint8"); + this.initializeReferencesFromSaveState(); + this.memoryReadJumpCompile(); + this.memoryWriteJumpCompile(); + this.initLCD(); + this.initSound(); + this.noiseSampleTable = (this.channel4BitRange == 0x7FFF) ? this.LSFR15Table : this.LSFR7Table; + this.channel4VolumeShifter = (this.channel4BitRange == 0x7FFF) ? 15 : 7; +} +GameBoyCore.prototype.returnFromRTCState = function () { + if (typeof this.openRTC == "function" && this.cTIMER) { + var rtcData = this.openRTC(this.name); + var index = 0; + this.lastIteration = rtcData[index++]; + this.RTCisLatched = rtcData[index++]; + this.latchedSeconds = rtcData[index++]; + this.latchedMinutes = rtcData[index++]; + this.latchedHours = rtcData[index++]; + this.latchedLDays = rtcData[index++]; + this.latchedHDays = rtcData[index++]; + this.RTCSeconds = rtcData[index++]; + this.RTCMinutes = rtcData[index++]; + this.RTCHours = rtcData[index++]; + this.RTCDays = rtcData[index++]; + this.RTCDayOverFlow = rtcData[index++]; + this.RTCHALT = rtcData[index]; + } +} + +GameBoyCore.prototype.start = function () { + this.initMemory(); //Write the startup memory. + this.ROMLoad(); //Load the ROM into memory and get cartridge information from it. + this.initLCD(); //Initialize the graphics. + this.initSound(); //Sound object initialization. + this.run(); //Start the emulation. +} +GameBoyCore.prototype.initMemory = function () { + //Initialize the RAM: + this.memory = this.getTypedArray(0x10000, 0, "uint8"); + this.frameBuffer = this.getTypedArray(23040, 0xF8F8F8, "int32"); + this.BGCHRBank1 = this.getTypedArray(0x800, 0, "uint8"); + this.TICKTable = this.toTypedArray(this.TICKTable, "uint8"); + this.SecondaryTICKTable = this.toTypedArray(this.SecondaryTICKTable, "uint8"); + this.channel3PCM = this.getTypedArray(0x20, 0, "int8"); +} +GameBoyCore.prototype.generateCacheArray = function (tileAmount) { + var tileArray = []; + var tileNumber = 0; + while (tileNumber < tileAmount) { + tileArray[tileNumber++] = this.getTypedArray(64, 0, "uint8"); + } + return tileArray; +} +GameBoyCore.prototype.initSkipBootstrap = function () { + //Fill in the boot ROM set register values + //Default values to the GB boot ROM values, then fill in the GBC boot ROM values after ROM loading + var index = 0xFF; + while (index >= 0) { + if (index >= 0x30 && index < 0x40) { + this.memoryWrite(0xFF00 | index, this.ffxxDump[index]); + } + else { + switch (index) { + case 0x00: + case 0x01: + case 0x02: + case 0x05: + case 0x07: + case 0x0F: + case 0xFF: + this.memoryWrite(0xFF00 | index, this.ffxxDump[index]); + break; + default: + this.memory[0xFF00 | index] = this.ffxxDump[index]; + } + } + --index; + } + if (this.cGBC) { + this.memory[0xFF6C] = 0xFE; + this.memory[0xFF74] = 0xFE; + } + else { + this.memory[0xFF48] = 0xFF; + this.memory[0xFF49] = 0xFF; + this.memory[0xFF6C] = 0xFF; + this.memory[0xFF74] = 0xFF; + } + //Start as an unset device: + cout("Starting without the GBC boot ROM.", 0); + this.registerA = (this.cGBC) ? 0x11 : 0x1; + this.registerB = 0; + this.registerC = 0x13; + this.registerD = 0; + this.registerE = 0xD8; + this.FZero = true; + this.FSubtract = false; + this.FHalfCarry = true; + this.FCarry = true; + this.registersHL = 0x014D; + this.LCDCONTROL = this.LINECONTROL; + this.IME = false; + this.IRQLineMatched = 0; + this.interruptsRequested = 225; + this.interruptsEnabled = 0; + this.hdmaRunning = false; + this.CPUTicks = 12; + this.STATTracker = 0; + this.modeSTAT = 1; + this.spriteCount = 252; + this.LYCMatchTriggerSTAT = false; + this.mode2TriggerSTAT = false; + this.mode1TriggerSTAT = false; + this.mode0TriggerSTAT = false; + this.LCDisOn = true; + this.channel1FrequencyTracker = 0x2000; + this.channel1DutyTracker = 0; + this.channel1CachedDuty = this.dutyLookup[2]; + this.channel1totalLength = 0; + this.channel1envelopeVolume = 0; + this.channel1envelopeType = false; + this.channel1envelopeSweeps = 0; + this.channel1envelopeSweepsLast = 0; + this.channel1consecutive = true; + this.channel1frequency = 1985; + this.channel1SweepFault = true; + this.channel1ShadowFrequency = 1985; + this.channel1timeSweep = 1; + this.channel1lastTimeSweep = 0; + this.channel1numSweep = 0; + this.channel1frequencySweepDivider = 0; + this.channel1decreaseSweep = false; + this.channel2FrequencyTracker = 0x2000; + this.channel2DutyTracker = 0; + this.channel2CachedDuty = this.dutyLookup[2]; + this.channel2totalLength = 0; + this.channel2envelopeVolume = 0; + this.channel2envelopeType = false; + this.channel2envelopeSweeps = 0; + this.channel2envelopeSweepsLast = 0; + this.channel2consecutive = true; + this.channel2frequency = 0; + this.channel3canPlay = false; + this.channel3totalLength = 0; + this.channel3patternType = 4; + this.channel3frequency = 0; + this.channel3consecutive = true; + this.channel3Counter = 0x418; + this.channel4FrequencyPeriod = 8; + this.channel4totalLength = 0; + this.channel4envelopeVolume = 0; + this.channel4currentVolume = 0; + this.channel4envelopeType = false; + this.channel4envelopeSweeps = 0; + this.channel4envelopeSweepsLast = 0; + this.channel4consecutive = true; + this.channel4BitRange = 0x7FFF; + this.channel4VolumeShifter = 15; + this.channel1FrequencyCounter = 0x200; + this.channel2FrequencyCounter = 0x200; + this.channel3Counter = 0x800; + this.channel3FrequencyPeriod = 0x800; + this.channel3lastSampleLookup = 0; + this.channel4lastSampleLookup = 0; + this.VinLeftChannelMasterVolume = 1; + this.VinRightChannelMasterVolume = 1; + this.soundMasterEnabled = true; + this.leftChannel1 = true; + this.leftChannel2 = true; + this.leftChannel3 = true; + this.leftChannel4 = true; + this.rightChannel1 = true; + this.rightChannel2 = true; + this.rightChannel3 = false; + this.rightChannel4 = false; + this.DIVTicks = 27044; + this.LCDTicks = 160; + this.timerTicks = 0; + this.TIMAEnabled = false; + this.TACClocker = 1024; + this.serialTimer = 0; + this.serialShiftTimer = 0; + this.serialShiftTimerAllocated = 0; + this.IRQEnableDelay = 0; + this.actualScanLine = 144; + this.lastUnrenderedLine = 0; + this.gfxWindowDisplay = false; + this.gfxSpriteShow = false; + this.gfxSpriteNormalHeight = true; + this.bgEnabled = true; + this.BGPriorityEnabled = true; + this.gfxWindowCHRBankPosition = 0; + this.gfxBackgroundCHRBankPosition = 0; + this.gfxBackgroundBankOffset = 0; + this.windowY = 0; + this.windowX = 0; + this.drewBlank = 0; + this.midScanlineOffset = -1; + this.currentX = 0; +} +GameBoyCore.prototype.initBootstrap = function () { + //Start as an unset device: + cout("Starting the selected boot ROM.", 0); + this.programCounter = 0; + this.stackPointer = 0; + this.IME = false; + this.LCDTicks = 0; + this.DIVTicks = 0; + this.registerA = 0; + this.registerB = 0; + this.registerC = 0; + this.registerD = 0; + this.registerE = 0; + this.FZero = this.FSubtract = this.FHalfCarry = this.FCarry = false; + this.registersHL = 0; + this.leftChannel1 = false; + this.leftChannel2 = false; + this.leftChannel3 = false; + this.leftChannel4 = false; + this.rightChannel1 = false; + this.rightChannel2 = false; + this.rightChannel3 = false; + this.rightChannel4 = false; + this.channel2frequency = this.channel1frequency = 0; + this.channel4consecutive = this.channel2consecutive = this.channel1consecutive = false; + this.VinLeftChannelMasterVolume = 8; + this.VinRightChannelMasterVolume = 8; + this.memory[0xFF00] = 0xF; //Set the joypad state. +} +GameBoyCore.prototype.ROMLoad = function () { + //Load the first two ROM banks (0x0000 - 0x7FFF) into regular gameboy memory: + this.ROM = []; + this.usedBootROM = settings[1]; + var maxLength = this.ROMImage.length; + if (maxLength < 0x4000) { + throw(new Error("ROM image size too small.")); + } + this.ROM = this.getTypedArray(maxLength, 0, "uint8"); + var romIndex = 0; + if (this.usedBootROM) { + if (!settings[11]) { + //Patch in the GBC boot ROM into the memory map: + for (; romIndex < 0x100; ++romIndex) { + this.memory[romIndex] = this.GBCBOOTROM[romIndex]; //Load in the GameBoy Color BOOT ROM. + this.ROM[romIndex] = (this.ROMImage.charCodeAt(romIndex) & 0xFF); //Decode the ROM binary for the switch out. + } + for (; romIndex < 0x200; ++romIndex) { + this.memory[romIndex] = this.ROM[romIndex] = (this.ROMImage.charCodeAt(romIndex) & 0xFF); //Load in the game ROM. + } + for (; romIndex < 0x900; ++romIndex) { + this.memory[romIndex] = this.GBCBOOTROM[romIndex - 0x100]; //Load in the GameBoy Color BOOT ROM. + this.ROM[romIndex] = (this.ROMImage.charCodeAt(romIndex) & 0xFF); //Decode the ROM binary for the switch out. + } + this.usedGBCBootROM = true; + } + else { + //Patch in the GBC boot ROM into the memory map: + for (; romIndex < 0x100; ++romIndex) { + this.memory[romIndex] = this.GBBOOTROM[romIndex]; //Load in the GameBoy Color BOOT ROM. + this.ROM[romIndex] = (this.ROMImage.charCodeAt(romIndex) & 0xFF); //Decode the ROM binary for the switch out. + } + } + for (; romIndex < 0x4000; ++romIndex) { + this.memory[romIndex] = this.ROM[romIndex] = (this.ROMImage.charCodeAt(romIndex) & 0xFF); //Load in the game ROM. + } + } + else { + //Don't load in the boot ROM: + for (; romIndex < 0x4000; ++romIndex) { + this.memory[romIndex] = this.ROM[romIndex] = (this.ROMImage.charCodeAt(romIndex) & 0xFF); //Load in the game ROM. + } + } + //Finish the decoding of the ROM binary: + for (; romIndex < maxLength; ++romIndex) { + this.ROM[romIndex] = (this.ROMImage.charCodeAt(romIndex) & 0xFF); + } + this.ROMBankEdge = Math.floor(this.ROM.length / 0x4000); + //Set up the emulator for the cartidge specifics: + this.interpretCartridge(); + //Check for IRQ matching upon initialization: + this.checkIRQMatching(); +} +GameBoyCore.prototype.getROMImage = function () { + //Return the binary version of the ROM image currently running: + if (this.ROMImage.length > 0) { + return this.ROMImage.length; + } + var length = this.ROM.length; + for (var index = 0; index < length; index++) { + this.ROMImage += String.fromCharCode(this.ROM[index]); + } + return this.ROMImage; +} +GameBoyCore.prototype.interpretCartridge = function () { + // ROM name + for (var index = 0x134; index < 0x13F; index++) { + if (this.ROMImage.charCodeAt(index) > 0) { + this.name += this.ROMImage[index]; + } + } + // ROM game code (for newer games) + for (var index = 0x13F; index < 0x143; index++) { + if (this.ROMImage.charCodeAt(index) > 0) { + this.gameCode += this.ROMImage[index]; + } + } + cout("Game Title: " + this.name + "[" + this.gameCode + "][" + this.ROMImage[0x143] + "]", 0); + cout("Game Code: " + this.gameCode, 0); + // Cartridge type + this.cartridgeType = this.ROM[0x147]; + cout("Cartridge type #" + this.cartridgeType, 0); + //Map out ROM cartridge sub-types. + var MBCType = ""; + switch (this.cartridgeType) { + case 0x00: + //ROM w/o bank switching + if (!settings[9]) { + MBCType = "ROM"; + break; + } + case 0x01: + this.cMBC1 = true; + MBCType = "MBC1"; + break; + case 0x02: + this.cMBC1 = true; + this.cSRAM = true; + MBCType = "MBC1 + SRAM"; + break; + case 0x03: + this.cMBC1 = true; + this.cSRAM = true; + this.cBATT = true; + MBCType = "MBC1 + SRAM + BATT"; + break; + case 0x05: + this.cMBC2 = true; + MBCType = "MBC2"; + break; + case 0x06: + this.cMBC2 = true; + this.cBATT = true; + MBCType = "MBC2 + BATT"; + break; + case 0x08: + this.cSRAM = true; + MBCType = "ROM + SRAM"; + break; + case 0x09: + this.cSRAM = true; + this.cBATT = true; + MBCType = "ROM + SRAM + BATT"; + break; + case 0x0B: + this.cMMMO1 = true; + MBCType = "MMMO1"; + break; + case 0x0C: + this.cMMMO1 = true; + this.cSRAM = true; + MBCType = "MMMO1 + SRAM"; + break; + case 0x0D: + this.cMMMO1 = true; + this.cSRAM = true; + this.cBATT = true; + MBCType = "MMMO1 + SRAM + BATT"; + break; + case 0x0F: + this.cMBC3 = true; + this.cTIMER = true; + this.cBATT = true; + MBCType = "MBC3 + TIMER + BATT"; + break; + case 0x10: + this.cMBC3 = true; + this.cTIMER = true; + this.cBATT = true; + this.cSRAM = true; + MBCType = "MBC3 + TIMER + BATT + SRAM"; + break; + case 0x11: + this.cMBC3 = true; + MBCType = "MBC3"; + break; + case 0x12: + this.cMBC3 = true; + this.cSRAM = true; + MBCType = "MBC3 + SRAM"; + break; + case 0x13: + this.cMBC3 = true; + this.cSRAM = true; + this.cBATT = true; + MBCType = "MBC3 + SRAM + BATT"; + break; + case 0x19: + this.cMBC5 = true; + MBCType = "MBC5"; + break; + case 0x1A: + this.cMBC5 = true; + this.cSRAM = true; + MBCType = "MBC5 + SRAM"; + break; + case 0x1B: + this.cMBC5 = true; + this.cSRAM = true; + this.cBATT = true; + MBCType = "MBC5 + SRAM + BATT"; + break; + case 0x1C: + this.cRUMBLE = true; + MBCType = "RUMBLE"; + break; + case 0x1D: + this.cRUMBLE = true; + this.cSRAM = true; + MBCType = "RUMBLE + SRAM"; + break; + case 0x1E: + this.cRUMBLE = true; + this.cSRAM = true; + this.cBATT = true; + MBCType = "RUMBLE + SRAM + BATT"; + break; + case 0x1F: + this.cCamera = true; + MBCType = "GameBoy Camera"; + break; + case 0x22: + this.cMBC7 = true; + this.cSRAM = true; + this.cBATT = true; + MBCType = "MBC7 + SRAM + BATT"; + break; + case 0xFD: + this.cTAMA5 = true; + MBCType = "TAMA5"; + break; + case 0xFE: + this.cHuC3 = true; + MBCType = "HuC3"; + break; + case 0xFF: + this.cHuC1 = true; + MBCType = "HuC1"; + break; + default: + MBCType = "Unknown"; + cout("Cartridge type is unknown.", 2); + pause(); + } + cout("Cartridge Type: " + MBCType + ".", 0); + // ROM and RAM banks + this.numROMBanks = this.ROMBanks[this.ROM[0x148]]; + cout(this.numROMBanks + " ROM banks.", 0); + switch (this.RAMBanks[this.ROM[0x149]]) { + case 0: + cout("No RAM banking requested for allocation or MBC is of type 2.", 0); + break; + case 2: + cout("1 RAM bank requested for allocation.", 0); + break; + case 3: + cout("4 RAM banks requested for allocation.", 0); + break; + case 4: + cout("16 RAM banks requested for allocation.", 0); + break; + default: + cout("RAM bank amount requested is unknown, will use maximum allowed by specified MBC type.", 0); + } + //Check the GB/GBC mode byte: + if (!this.usedBootROM) { + switch (this.ROM[0x143]) { + case 0x00: //Only GB mode + this.cGBC = false; + cout("Only GB mode detected.", 0); + break; + case 0x32: //Exception to the GBC identifying code: + if (!settings[2] && this.name + this.gameCode + this.ROM[0x143] == "Game and Watch 50") { + this.cGBC = true; + cout("Created a boot exception for Game and Watch Gallery 2 (GBC ID byte is wrong on the cartridge).", 1); + } + else { + this.cGBC = false; + } + break; + case 0x80: //Both GB + GBC modes + this.cGBC = !settings[2]; + cout("GB and GBC mode detected.", 0); + break; + case 0xC0: //Only GBC mode + this.cGBC = true; + cout("Only GBC mode detected.", 0); + break; + default: + this.cGBC = false; + cout("Unknown GameBoy game type code #" + this.ROM[0x143] + ", defaulting to GB mode (Old games don't have a type code).", 1); + } + this.inBootstrap = false; + this.setupRAM(); //CPU/(V)RAM initialization. + this.initSkipBootstrap(); + this.initializeAudioStartState(); // Line added for benchmarking. + } + else { + this.cGBC = this.usedGBCBootROM; //Allow the GBC boot ROM to run in GBC mode... + this.setupRAM(); //CPU/(V)RAM initialization. + this.initBootstrap(); + } + this.initializeModeSpecificArrays(); + //License Code Lookup: + var cOldLicense = this.ROM[0x14B]; + var cNewLicense = (this.ROM[0x144] & 0xFF00) | (this.ROM[0x145] & 0xFF); + if (cOldLicense != 0x33) { + //Old Style License Header + cout("Old style license code: " + cOldLicense, 0); + } + else { + //New Style License Header + cout("New style license code: " + cNewLicense, 0); + } + this.ROMImage = ""; //Memory consumption reduction. +} +GameBoyCore.prototype.disableBootROM = function () { + //Remove any traces of the boot ROM from ROM memory. + for (var index = 0; index < 0x100; ++index) { + this.memory[index] = this.ROM[index]; //Replace the GameBoy or GameBoy Color boot ROM with the game ROM. + } + if (this.usedGBCBootROM) { + //Remove any traces of the boot ROM from ROM memory. + for (index = 0x200; index < 0x900; ++index) { + this.memory[index] = this.ROM[index]; //Replace the GameBoy Color boot ROM with the game ROM. + } + if (!this.cGBC) { + //Clean up the post-boot (GB mode only) state: + this.GBCtoGBModeAdjust(); + } + else { + this.recompileBootIOWriteHandling(); + } + } + else { + this.recompileBootIOWriteHandling(); + } +} +GameBoyCore.prototype.initializeTiming = function () { + //Emulator Timing: + this.baseCPUCyclesPerIteration = 0x80000 / 0x7D * settings[6]; + this.CPUCyclesTotalRoundoff = this.baseCPUCyclesPerIteration % 4; + this.CPUCyclesTotalBase = this.CPUCyclesTotal = (this.baseCPUCyclesPerIteration - this.CPUCyclesTotalRoundoff) | 0; + this.CPUCyclesTotalCurrent = 0; +} +GameBoyCore.prototype.setupRAM = function () { + //Setup the auxilliary/switchable RAM: + if (this.cMBC2) { + this.numRAMBanks = 1 / 16; + } + else if (this.cMBC1 || this.cRUMBLE || this.cMBC3 || this.cHuC3) { + this.numRAMBanks = 4; + } + else if (this.cMBC5) { + this.numRAMBanks = 16; + } + else if (this.cSRAM) { + this.numRAMBanks = 1; + } + if (this.numRAMBanks > 0) { + if (!this.MBCRAMUtilized()) { + //For ROM and unknown MBC cartridges using the external RAM: + this.MBCRAMBanksEnabled = true; + } + //Switched RAM Used + var MBCRam = (typeof this.openMBC == "function") ? this.openMBC(this.name) : []; + if (MBCRam.length > 0) { + //Flash the SRAM into memory: + this.MBCRam = this.toTypedArray(MBCRam, "uint8"); + } + else { + this.MBCRam = this.getTypedArray(this.numRAMBanks * 0x2000, 0, "uint8"); + } + } + cout("Actual bytes of MBC RAM allocated: " + (this.numRAMBanks * 0x2000), 0); + this.returnFromRTCState(); + //Setup the RAM for GBC mode. + if (this.cGBC) { + this.VRAM = this.getTypedArray(0x2000, 0, "uint8"); + this.GBCMemory = this.getTypedArray(0x7000, 0, "uint8"); + } + this.memoryReadJumpCompile(); + this.memoryWriteJumpCompile(); +} +GameBoyCore.prototype.MBCRAMUtilized = function () { + return this.cMBC1 || this.cMBC2 || this.cMBC3 || this.cMBC5 || this.cMBC7 || this.cRUMBLE; +} +GameBoyCore.prototype.recomputeDimension = function () { + initNewCanvas(); + //Cache some dimension info: + this.onscreenWidth = this.canvas.width; + this.onscreenHeight = this.canvas.height; + // The following line was modified for benchmarking: + if (GameBoyWindow && GameBoyWindow.mozRequestAnimationFrame) { + //Firefox slowness hack: + this.canvas.width = this.onscreenWidth = (!settings[12]) ? 160 : this.canvas.width; + this.canvas.height = this.onscreenHeight = (!settings[12]) ? 144 : this.canvas.height; + } + else { + this.onscreenWidth = this.canvas.width; + this.onscreenHeight = this.canvas.height; + } + this.offscreenWidth = (!settings[12]) ? 160 : this.canvas.width; + this.offscreenHeight = (!settings[12]) ? 144 : this.canvas.height; + this.offscreenRGBCount = this.offscreenWidth * this.offscreenHeight * 4; +} +GameBoyCore.prototype.initLCD = function () { + this.recomputeDimension(); + if (this.offscreenRGBCount != 92160) { + //Only create the resizer handle if we need it: + this.compileResizeFrameBufferFunction(); + } + else { + //Resizer not needed: + this.resizer = null; + } + try { + this.canvasOffscreen = new GameBoyCanvas(); // Line modified for benchmarking. + this.canvasOffscreen.width = this.offscreenWidth; + this.canvasOffscreen.height = this.offscreenHeight; + this.drawContextOffscreen = this.canvasOffscreen.getContext("2d"); + this.drawContextOnscreen = this.canvas.getContext("2d"); + //Get a CanvasPixelArray buffer: + try { + this.canvasBuffer = this.drawContextOffscreen.createImageData(this.offscreenWidth, this.offscreenHeight); + } + catch (error) { + cout("Falling back to the getImageData initialization (Error \"" + error.message + "\").", 1); + this.canvasBuffer = this.drawContextOffscreen.getImageData(0, 0, this.offscreenWidth, this.offscreenHeight); + } + var index = this.offscreenRGBCount; + while (index > 0) { + this.canvasBuffer.data[index -= 4] = 0xF8; + this.canvasBuffer.data[index + 1] = 0xF8; + this.canvasBuffer.data[index + 2] = 0xF8; + this.canvasBuffer.data[index + 3] = 0xFF; + } + this.graphicsBlit(); + this.canvas.style.visibility = "visible"; + if (this.swizzledFrame == null) { + this.swizzledFrame = this.getTypedArray(69120, 0xFF, "uint8"); + } + //Test the draw system and browser vblank latching: + this.drewFrame = true; //Copy the latest graphics to buffer. + this.requestDraw(); + } + catch (error) { + throw(new Error("HTML5 Canvas support required: " + error.message + "file: " + error.fileName + ", line: " + error.lineNumber)); + } +} +GameBoyCore.prototype.graphicsBlit = function () { + if (this.offscreenWidth == this.onscreenWidth && this.offscreenHeight == this.onscreenHeight) { + this.drawContextOnscreen.putImageData(this.canvasBuffer, 0, 0); + } + else { + this.drawContextOffscreen.putImageData(this.canvasBuffer, 0, 0); + this.drawContextOnscreen.drawImage(this.canvasOffscreen, 0, 0, this.onscreenWidth, this.onscreenHeight); + } +} +GameBoyCore.prototype.JoyPadEvent = function (key, down) { + if (down) { + this.JoyPad &= 0xFF ^ (1 << key); + if (!this.cGBC && (!this.usedBootROM || !this.usedGBCBootROM)) { + this.interruptsRequested |= 0x10; //A real GBC doesn't set this! + this.remainingClocks = 0; + this.checkIRQMatching(); + } + } + else { + this.JoyPad |= (1 << key); + } + this.memory[0xFF00] = (this.memory[0xFF00] & 0x30) + ((((this.memory[0xFF00] & 0x20) == 0) ? (this.JoyPad >> 4) : 0xF) & (((this.memory[0xFF00] & 0x10) == 0) ? (this.JoyPad & 0xF) : 0xF)); + this.CPUStopped = false; +} +GameBoyCore.prototype.GyroEvent = function (x, y) { + x *= -100; + x += 2047; + this.highX = x >> 8; + this.lowX = x & 0xFF; + y *= -100; + y += 2047; + this.highY = y >> 8; + this.lowY = y & 0xFF; +} +GameBoyCore.prototype.initSound = function () { + this.sampleSize = 0x400000 / 1000 * settings[6]; + this.machineOut = settings[13]; + if (settings[0]) { + try { + var parentObj = this; + this.audioHandle = new XAudioServer(2, 0x400000 / settings[13], 0, Math.max(this.sampleSize * settings[8] / settings[13], 8192) << 1, null, settings[14]); + this.initAudioBuffer(); + } + catch (error) { + cout("Audio system cannot run: " + error.message, 2); + settings[0] = false; + } + } + else if (this.audioHandle) { + //Mute the audio output, as it has an immediate silencing effect: + try { + this.audioHandle.changeVolume(0); + } + catch (error) { } + } +} +GameBoyCore.prototype.changeVolume = function () { + if (settings[0] && this.audioHandle) { + try { + this.audioHandle.changeVolume(settings[14]); + } + catch (error) { } + } +} +GameBoyCore.prototype.initAudioBuffer = function () { + this.audioIndex = 0; + this.bufferContainAmount = Math.max(this.sampleSize * settings[7] / settings[13], 4096) << 1; + this.numSamplesTotal = (this.sampleSize - (this.sampleSize % settings[13])) | 0; + this.currentBuffer = this.getTypedArray(this.numSamplesTotal, 0xF0F0, "int32"); + this.secondaryBuffer = this.getTypedArray((this.numSamplesTotal << 1) / settings[13], 0, "float32"); +} +GameBoyCore.prototype.intializeWhiteNoise = function () { + //Noise Sample Tables: + var randomFactor = 1; + //15-bit LSFR Cache Generation: + this.LSFR15Table = this.getTypedArray(0x80000, 0, "int8"); + var LSFR = 0x7FFF; //Seed value has all its bits set. + var LSFRShifted = 0x3FFF; + for (var index = 0; index < 0x8000; ++index) { + //Normalize the last LSFR value for usage: + randomFactor = 1 - (LSFR & 1); //Docs say it's the inverse. + //Cache the different volume level results: + this.LSFR15Table[0x08000 | index] = randomFactor; + this.LSFR15Table[0x10000 | index] = randomFactor * 0x2; + this.LSFR15Table[0x18000 | index] = randomFactor * 0x3; + this.LSFR15Table[0x20000 | index] = randomFactor * 0x4; + this.LSFR15Table[0x28000 | index] = randomFactor * 0x5; + this.LSFR15Table[0x30000 | index] = randomFactor * 0x6; + this.LSFR15Table[0x38000 | index] = randomFactor * 0x7; + this.LSFR15Table[0x40000 | index] = randomFactor * 0x8; + this.LSFR15Table[0x48000 | index] = randomFactor * 0x9; + this.LSFR15Table[0x50000 | index] = randomFactor * 0xA; + this.LSFR15Table[0x58000 | index] = randomFactor * 0xB; + this.LSFR15Table[0x60000 | index] = randomFactor * 0xC; + this.LSFR15Table[0x68000 | index] = randomFactor * 0xD; + this.LSFR15Table[0x70000 | index] = randomFactor * 0xE; + this.LSFR15Table[0x78000 | index] = randomFactor * 0xF; + //Recompute the LSFR algorithm: + LSFRShifted = LSFR >> 1; + LSFR = LSFRShifted | (((LSFRShifted ^ LSFR) & 0x1) << 14); + } + //7-bit LSFR Cache Generation: + this.LSFR7Table = this.getTypedArray(0x800, 0, "int8"); + LSFR = 0x7F; //Seed value has all its bits set. + for (index = 0; index < 0x80; ++index) { + //Normalize the last LSFR value for usage: + randomFactor = 1 - (LSFR & 1); //Docs say it's the inverse. + //Cache the different volume level results: + this.LSFR7Table[0x080 | index] = randomFactor; + this.LSFR7Table[0x100 | index] = randomFactor * 0x2; + this.LSFR7Table[0x180 | index] = randomFactor * 0x3; + this.LSFR7Table[0x200 | index] = randomFactor * 0x4; + this.LSFR7Table[0x280 | index] = randomFactor * 0x5; + this.LSFR7Table[0x300 | index] = randomFactor * 0x6; + this.LSFR7Table[0x380 | index] = randomFactor * 0x7; + this.LSFR7Table[0x400 | index] = randomFactor * 0x8; + this.LSFR7Table[0x480 | index] = randomFactor * 0x9; + this.LSFR7Table[0x500 | index] = randomFactor * 0xA; + this.LSFR7Table[0x580 | index] = randomFactor * 0xB; + this.LSFR7Table[0x600 | index] = randomFactor * 0xC; + this.LSFR7Table[0x680 | index] = randomFactor * 0xD; + this.LSFR7Table[0x700 | index] = randomFactor * 0xE; + this.LSFR7Table[0x780 | index] = randomFactor * 0xF; + //Recompute the LSFR algorithm: + LSFRShifted = LSFR >> 1; + LSFR = LSFRShifted | (((LSFRShifted ^ LSFR) & 0x1) << 6); + } + if (!this.noiseSampleTable && this.memory.length == 0x10000) { + //If enabling audio for the first time after a game is already running, set up the internal table reference: + this.noiseSampleTable = ((this.memory[0xFF22] & 0x8) == 0x8) ? this.LSFR7Table : this.LSFR15Table; + } +} +GameBoyCore.prototype.audioUnderrunAdjustment = function () { + if (settings[0]) { + var underrunAmount = this.bufferContainAmount - this.audioHandle.remainingBuffer(); + if (underrunAmount > 0) { + this.CPUCyclesTotalCurrent += (underrunAmount >> 1) * this.machineOut; + this.recalculateIterationClockLimit(); + } + } +} +GameBoyCore.prototype.initializeAudioStartState = function () { + this.channel1FrequencyTracker = 0x2000; + this.channel1DutyTracker = 0; + this.channel1CachedDuty = this.dutyLookup[2]; + this.channel1totalLength = 0; + this.channel1envelopeVolume = 0; + this.channel1envelopeType = false; + this.channel1envelopeSweeps = 0; + this.channel1envelopeSweepsLast = 0; + this.channel1consecutive = true; + this.channel1frequency = 0; + this.channel1SweepFault = false; + this.channel1ShadowFrequency = 0; + this.channel1timeSweep = 1; + this.channel1lastTimeSweep = 0; + this.channel1numSweep = 0; + this.channel1frequencySweepDivider = 0; + this.channel1decreaseSweep = false; + this.channel2FrequencyTracker = 0x2000; + this.channel2DutyTracker = 0; + this.channel2CachedDuty = this.dutyLookup[2]; + this.channel2totalLength = 0; + this.channel2envelopeVolume = 0; + this.channel2envelopeType = false; + this.channel2envelopeSweeps = 0; + this.channel2envelopeSweepsLast = 0; + this.channel2consecutive = true; + this.channel2frequency = 0; + this.channel3canPlay = false; + this.channel3totalLength = 0; + this.channel3patternType = 4; + this.channel3frequency = 0; + this.channel3consecutive = true; + this.channel3Counter = 0x800; + this.channel4FrequencyPeriod = 8; + this.channel4totalLength = 0; + this.channel4envelopeVolume = 0; + this.channel4currentVolume = 0; + this.channel4envelopeType = false; + this.channel4envelopeSweeps = 0; + this.channel4envelopeSweepsLast = 0; + this.channel4consecutive = true; + this.channel4BitRange = 0x7FFF; + this.noiseSampleTable = this.LSFR15Table; + this.channel4VolumeShifter = 15; + this.channel1FrequencyCounter = 0x2000; + this.channel2FrequencyCounter = 0x2000; + this.channel3Counter = 0x800; + this.channel3FrequencyPeriod = 0x800; + this.channel3lastSampleLookup = 0; + this.channel4lastSampleLookup = 0; + this.VinLeftChannelMasterVolume = 8; + this.VinRightChannelMasterVolume = 8; + this.mixerOutputCache = 0; + this.sequencerClocks = 0x2000; + this.sequencePosition = 0; + this.channel4FrequencyPeriod = 8; + this.channel4Counter = 8; + this.cachedChannel3Sample = 0; + this.cachedChannel4Sample = 0; + this.channel1Enabled = false; + this.channel2Enabled = false; + this.channel3Enabled = false; + this.channel4Enabled = false; + this.channel1canPlay = false; + this.channel2canPlay = false; + this.channel4canPlay = false; + this.channel1OutputLevelCache(); + this.channel2OutputLevelCache(); + this.channel3OutputLevelCache(); + this.channel4OutputLevelCache(); +} +GameBoyCore.prototype.outputAudio = function () { + var sampleFactor = 0; + var dirtySample = 0; + var averageL = 0; + var averageR = 0; + var destinationPosition = 0; + var divisor1 = settings[13]; + var divisor2 = divisor1 * 0xF0; + for (var sourcePosition = 0; sourcePosition < this.numSamplesTotal;) { + for (sampleFactor = averageL = averageR = 0; sampleFactor < divisor1; ++sampleFactor) { + dirtySample = this.currentBuffer[sourcePosition++]; + averageL += dirtySample >> 9; + averageR += dirtySample & 0x1FF; + } + this.secondaryBuffer[destinationPosition++] = averageL / divisor2 - 1; + this.secondaryBuffer[destinationPosition++] = averageR / divisor2 - 1; + } + this.audioHandle.writeAudioNoCallback(this.secondaryBuffer); +} +//Below are the audio generation functions timed against the CPU: +GameBoyCore.prototype.generateAudio = function (numSamples) { + if (this.soundMasterEnabled && !this.CPUStopped) { + for (var samplesToGenerate = 0; numSamples > 0;) { + samplesToGenerate = (numSamples < this.sequencerClocks) ? numSamples : this.sequencerClocks; + this.sequencerClocks -= samplesToGenerate; + numSamples -= samplesToGenerate; + while (--samplesToGenerate > -1) { + this.computeAudioChannels(); + this.currentBuffer[this.audioIndex++] = this.mixerOutputCache; + if (this.audioIndex == this.numSamplesTotal) { + this.audioIndex = 0; + this.outputAudio(); + } + } + if (this.sequencerClocks == 0) { + this.audioComputeSequencer(); + this.sequencerClocks = 0x2000; + } + } + } + else { + //SILENT OUTPUT: + while (--numSamples > -1) { + this.currentBuffer[this.audioIndex++] = 0xF0F0; + if (this.audioIndex == this.numSamplesTotal) { + this.audioIndex = 0; + this.outputAudio(); + } + } + } +} +//Generate audio, but don't actually output it (Used for when sound is disabled by user/browser): +GameBoyCore.prototype.generateAudioFake = function (numSamples) { + if (this.soundMasterEnabled && !this.CPUStopped) { + while (--numSamples > -1) { + this.computeAudioChannels(); + if (--this.sequencerClocks == 0) { + this.audioComputeSequencer(); + this.sequencerClocks = 0x2000; + } + } + } +} +GameBoyCore.prototype.audioJIT = function () { + //Audio Sample Generation Timing: + if (settings[0]) { + this.generateAudio(this.audioTicks); + } + else { + this.generateAudioFake(this.audioTicks); + } + this.audioTicks = 0; +} +GameBoyCore.prototype.audioComputeSequencer = function () { + switch (this.sequencePosition++) { + case 0: + this.clockAudioLength(); + break; + case 2: + this.clockAudioLength(); + this.clockAudioSweep(); + break; + case 4: + this.clockAudioLength(); + break; + case 6: + this.clockAudioLength(); + this.clockAudioSweep(); + break; + case 7: + this.clockAudioEnvelope(); + this.sequencePosition = 0; + } +} +GameBoyCore.prototype.clockAudioLength = function () { + //Channel 1: + if (this.channel1totalLength > 1) { + --this.channel1totalLength; + } + else if (this.channel1totalLength == 1) { + this.channel1totalLength = 0; + this.channel1EnableCheck(); + this.memory[0xFF26] &= 0xFE; //Channel #1 On Flag Off + } + //Channel 2: + if (this.channel2totalLength > 1) { + --this.channel2totalLength; + } + else if (this.channel2totalLength == 1) { + this.channel2totalLength = 0; + this.channel2EnableCheck(); + this.memory[0xFF26] &= 0xFD; //Channel #2 On Flag Off + } + //Channel 3: + if (this.channel3totalLength > 1) { + --this.channel3totalLength; + } + else if (this.channel3totalLength == 1) { + this.channel3totalLength = 0; + this.channel3EnableCheck(); + this.memory[0xFF26] &= 0xFB; //Channel #3 On Flag Off + } + //Channel 4: + if (this.channel4totalLength > 1) { + --this.channel4totalLength; + } + else if (this.channel4totalLength == 1) { + this.channel4totalLength = 0; + this.channel4EnableCheck(); + this.memory[0xFF26] &= 0xF7; //Channel #4 On Flag Off + } +} +GameBoyCore.prototype.clockAudioSweep = function () { + //Channel 1: + if (!this.channel1SweepFault && this.channel1timeSweep > 0) { + if (--this.channel1timeSweep == 0) { + this.runAudioSweep(); + } + } +} +GameBoyCore.prototype.runAudioSweep = function () { + //Channel 1: + if (this.channel1lastTimeSweep > 0) { + if (this.channel1frequencySweepDivider > 0) { + if (this.channel1numSweep > 0) { + --this.channel1numSweep; + if (this.channel1decreaseSweep) { + this.channel1ShadowFrequency -= this.channel1ShadowFrequency >> this.channel1frequencySweepDivider; + this.channel1frequency = this.channel1ShadowFrequency & 0x7FF; + this.channel1FrequencyTracker = (0x800 - this.channel1frequency) << 2; + } + else { + this.channel1ShadowFrequency += this.channel1ShadowFrequency >> this.channel1frequencySweepDivider; + this.channel1frequency = this.channel1ShadowFrequency; + if (this.channel1ShadowFrequency <= 0x7FF) { + this.channel1FrequencyTracker = (0x800 - this.channel1frequency) << 2; + //Run overflow check twice: + if ((this.channel1ShadowFrequency + (this.channel1ShadowFrequency >> this.channel1frequencySweepDivider)) > 0x7FF) { + this.channel1SweepFault = true; + this.channel1EnableCheck(); + this.memory[0xFF26] &= 0xFE; //Channel #1 On Flag Off + } + } + else { + this.channel1frequency &= 0x7FF; + this.channel1SweepFault = true; + this.channel1EnableCheck(); + this.memory[0xFF26] &= 0xFE; //Channel #1 On Flag Off + } + } + } + this.channel1timeSweep = this.channel1lastTimeSweep; + } + else { + //Channel has sweep disabled and timer becomes a length counter: + this.channel1SweepFault = true; + this.channel1EnableCheck(); + } + } +} +GameBoyCore.prototype.clockAudioEnvelope = function () { + //Channel 1: + if (this.channel1envelopeSweepsLast > -1) { + if (this.channel1envelopeSweeps > 0) { + --this.channel1envelopeSweeps; + } + else { + if (!this.channel1envelopeType) { + if (this.channel1envelopeVolume > 0) { + --this.channel1envelopeVolume; + this.channel1envelopeSweeps = this.channel1envelopeSweepsLast; + this.channel1OutputLevelCache(); + } + else { + this.channel1envelopeSweepsLast = -1; + } + } + else if (this.channel1envelopeVolume < 0xF) { + ++this.channel1envelopeVolume; + this.channel1envelopeSweeps = this.channel1envelopeSweepsLast; + this.channel1OutputLevelCache(); + } + else { + this.channel1envelopeSweepsLast = -1; + } + } + } + //Channel 2: + if (this.channel2envelopeSweepsLast > -1) { + if (this.channel2envelopeSweeps > 0) { + --this.channel2envelopeSweeps; + } + else { + if (!this.channel2envelopeType) { + if (this.channel2envelopeVolume > 0) { + --this.channel2envelopeVolume; + this.channel2envelopeSweeps = this.channel2envelopeSweepsLast; + this.channel2OutputLevelCache(); + } + else { + this.channel2envelopeSweepsLast = -1; + } + } + else if (this.channel2envelopeVolume < 0xF) { + ++this.channel2envelopeVolume; + this.channel2envelopeSweeps = this.channel2envelopeSweepsLast; + this.channel2OutputLevelCache(); + } + else { + this.channel2envelopeSweepsLast = -1; + } + } + } + //Channel 4: + if (this.channel4envelopeSweepsLast > -1) { + if (this.channel4envelopeSweeps > 0) { + --this.channel4envelopeSweeps; + } + else { + if (!this.channel4envelopeType) { + if (this.channel4envelopeVolume > 0) { + this.channel4currentVolume = --this.channel4envelopeVolume << this.channel4VolumeShifter; + this.channel4envelopeSweeps = this.channel4envelopeSweepsLast; + this.channel4UpdateCache(); + } + else { + this.channel4envelopeSweepsLast = -1; + } + } + else if (this.channel4envelopeVolume < 0xF) { + this.channel4currentVolume = ++this.channel4envelopeVolume << this.channel4VolumeShifter; + this.channel4envelopeSweeps = this.channel4envelopeSweepsLast; + this.channel4UpdateCache(); + } + else { + this.channel4envelopeSweepsLast = -1; + } + } + } +} +GameBoyCore.prototype.computeAudioChannels = function () { + //Channel 1 counter: + if (--this.channel1FrequencyCounter == 0) { + this.channel1FrequencyCounter = this.channel1FrequencyTracker; + this.channel1DutyTracker = (this.channel1DutyTracker + 1) & 0x7; + this.channel1OutputLevelTrimaryCache(); + } + //Channel 2 counter: + if (--this.channel2FrequencyCounter == 0) { + this.channel2FrequencyCounter = this.channel2FrequencyTracker; + this.channel2DutyTracker = (this.channel2DutyTracker + 1) & 0x7; + this.channel2OutputLevelTrimaryCache(); + } + //Channel 3 counter: + if (--this.channel3Counter == 0) { + if (this.channel3canPlay) { + this.channel3lastSampleLookup = (this.channel3lastSampleLookup + 1) & 0x1F; + } + this.channel3Counter = this.channel3FrequencyPeriod; + this.channel3UpdateCache(); + } + //Channel 4 counter: + if (--this.channel4Counter == 0) { + this.channel4lastSampleLookup = (this.channel4lastSampleLookup + 1) & this.channel4BitRange; + this.channel4Counter = this.channel4FrequencyPeriod; + this.channel4UpdateCache(); + } +} +GameBoyCore.prototype.channel1EnableCheck = function () { + this.channel1Enabled = ((this.channel1consecutive || this.channel1totalLength > 0) && !this.channel1SweepFault && this.channel1canPlay); + this.channel1OutputLevelSecondaryCache(); +} +GameBoyCore.prototype.channel1VolumeEnableCheck = function () { + this.channel1canPlay = (this.memory[0xFF12] > 7); + this.channel1EnableCheck(); + this.channel1OutputLevelSecondaryCache(); +} +GameBoyCore.prototype.channel1OutputLevelCache = function () { + this.channel1currentSampleLeft = (this.leftChannel1) ? this.channel1envelopeVolume : 0; + this.channel1currentSampleRight = (this.rightChannel1) ? this.channel1envelopeVolume : 0; + this.channel1OutputLevelSecondaryCache(); +} +GameBoyCore.prototype.channel1OutputLevelSecondaryCache = function () { + if (this.channel1Enabled) { + this.channel1currentSampleLeftSecondary = this.channel1currentSampleLeft; + this.channel1currentSampleRightSecondary = this.channel1currentSampleRight; + } + else { + this.channel1currentSampleLeftSecondary = 0; + this.channel1currentSampleRightSecondary = 0; + } + this.channel1OutputLevelTrimaryCache(); +} +GameBoyCore.prototype.channel1OutputLevelTrimaryCache = function () { + if (this.channel1CachedDuty[this.channel1DutyTracker]) { + this.channel1currentSampleLeftTrimary = this.channel1currentSampleLeftSecondary; + this.channel1currentSampleRightTrimary = this.channel1currentSampleRightSecondary; + } + else { + this.channel1currentSampleLeftTrimary = 0; + this.channel1currentSampleRightTrimary = 0; + } + this.mixerOutputLevelCache(); +} +GameBoyCore.prototype.channel2EnableCheck = function () { + this.channel2Enabled = ((this.channel2consecutive || this.channel2totalLength > 0) && this.channel2canPlay); + this.channel2OutputLevelSecondaryCache(); +} +GameBoyCore.prototype.channel2VolumeEnableCheck = function () { + this.channel2canPlay = (this.memory[0xFF17] > 7); + this.channel2EnableCheck(); + this.channel2OutputLevelSecondaryCache(); +} +GameBoyCore.prototype.channel2OutputLevelCache = function () { + this.channel2currentSampleLeft = (this.leftChannel2) ? this.channel2envelopeVolume : 0; + this.channel2currentSampleRight = (this.rightChannel2) ? this.channel2envelopeVolume : 0; + this.channel2OutputLevelSecondaryCache(); +} +GameBoyCore.prototype.channel2OutputLevelSecondaryCache = function () { + if (this.channel2Enabled) { + this.channel2currentSampleLeftSecondary = this.channel2currentSampleLeft; + this.channel2currentSampleRightSecondary = this.channel2currentSampleRight; + } + else { + this.channel2currentSampleLeftSecondary = 0; + this.channel2currentSampleRightSecondary = 0; + } + this.channel2OutputLevelTrimaryCache(); +} +GameBoyCore.prototype.channel2OutputLevelTrimaryCache = function () { + if (this.channel2CachedDuty[this.channel2DutyTracker]) { + this.channel2currentSampleLeftTrimary = this.channel2currentSampleLeftSecondary; + this.channel2currentSampleRightTrimary = this.channel2currentSampleRightSecondary; + } + else { + this.channel2currentSampleLeftTrimary = 0; + this.channel2currentSampleRightTrimary = 0; + } + this.mixerOutputLevelCache(); +} +GameBoyCore.prototype.channel3EnableCheck = function () { + this.channel3Enabled = (/*this.channel3canPlay && */(this.channel3consecutive || this.channel3totalLength > 0)); + this.channel3OutputLevelSecondaryCache(); +} +GameBoyCore.prototype.channel3OutputLevelCache = function () { + this.channel3currentSampleLeft = (this.leftChannel3) ? this.cachedChannel3Sample : 0; + this.channel3currentSampleRight = (this.rightChannel3) ? this.cachedChannel3Sample : 0; + this.channel3OutputLevelSecondaryCache(); +} +GameBoyCore.prototype.channel3OutputLevelSecondaryCache = function () { + if (this.channel3Enabled) { + this.channel3currentSampleLeftSecondary = this.channel3currentSampleLeft; + this.channel3currentSampleRightSecondary = this.channel3currentSampleRight; + } + else { + this.channel3currentSampleLeftSecondary = 0; + this.channel3currentSampleRightSecondary = 0; + } + this.mixerOutputLevelCache(); +} +GameBoyCore.prototype.channel4EnableCheck = function () { + this.channel4Enabled = ((this.channel4consecutive || this.channel4totalLength > 0) && this.channel4canPlay); + this.channel4OutputLevelSecondaryCache(); +} +GameBoyCore.prototype.channel4VolumeEnableCheck = function () { + this.channel4canPlay = (this.memory[0xFF21] > 7); + this.channel4EnableCheck(); + this.channel4OutputLevelSecondaryCache(); +} +GameBoyCore.prototype.channel4OutputLevelCache = function () { + this.channel4currentSampleLeft = (this.leftChannel4) ? this.cachedChannel4Sample : 0; + this.channel4currentSampleRight = (this.rightChannel4) ? this.cachedChannel4Sample : 0; + this.channel4OutputLevelSecondaryCache(); +} +GameBoyCore.prototype.channel4OutputLevelSecondaryCache = function () { + if (this.channel4Enabled) { + this.channel4currentSampleLeftSecondary = this.channel4currentSampleLeft; + this.channel4currentSampleRightSecondary = this.channel4currentSampleRight; + } + else { + this.channel4currentSampleLeftSecondary = 0; + this.channel4currentSampleRightSecondary = 0; + } + this.mixerOutputLevelCache(); +} +GameBoyCore.prototype.mixerOutputLevelCache = function () { + this.mixerOutputCache = ((((this.channel1currentSampleLeftTrimary + this.channel2currentSampleLeftTrimary + this.channel3currentSampleLeftSecondary + this.channel4currentSampleLeftSecondary) * this.VinLeftChannelMasterVolume) << 9) + + ((this.channel1currentSampleRightTrimary + this.channel2currentSampleRightTrimary + this.channel3currentSampleRightSecondary + this.channel4currentSampleRightSecondary) * this.VinRightChannelMasterVolume)); +} +GameBoyCore.prototype.channel3UpdateCache = function () { + this.cachedChannel3Sample = this.channel3PCM[this.channel3lastSampleLookup] >> this.channel3patternType; + this.channel3OutputLevelCache(); +} +GameBoyCore.prototype.channel3WriteRAM = function (address, data) { + if (this.channel3canPlay) { + this.audioJIT(); + //address = this.channel3lastSampleLookup >> 1; + } + this.memory[0xFF30 | address] = data; + address <<= 1; + this.channel3PCM[address] = data >> 4; + this.channel3PCM[address | 1] = data & 0xF; +} +GameBoyCore.prototype.channel4UpdateCache = function () { + this.cachedChannel4Sample = this.noiseSampleTable[this.channel4currentVolume | this.channel4lastSampleLookup]; + this.channel4OutputLevelCache(); +} +GameBoyCore.prototype.run = function () { + //The preprocessing before the actual iteration loop: + if ((this.stopEmulator & 2) == 0) { + if ((this.stopEmulator & 1) == 1) { + if (!this.CPUStopped) { + this.stopEmulator = 0; + this.drewFrame = false; + this.audioUnderrunAdjustment(); + this.clockUpdate(); //RTC clocking. + if (!this.halt) { + this.executeIteration(); + } + else { //Finish the HALT rundown execution. + this.CPUTicks = 0; + this.calculateHALTPeriod(); + if (this.halt) { + this.updateCoreFull(); + } + else { + this.executeIteration(); + } + } + //Request the graphics target to be updated: + this.requestDraw(); + } + else { + this.audioUnderrunAdjustment(); + this.audioTicks += this.CPUCyclesTotal; + this.audioJIT(); + this.stopEmulator |= 1; //End current loop. + } + } + else { //We can only get here if there was an internal error, but the loop was restarted. + cout("Iterator restarted a faulted core.", 2); + pause(); + } + } +} + +GameBoyCore.prototype.executeIteration = function () { + //Iterate the interpreter loop: + var opcodeToExecute = 0; + var timedTicks = 0; + while (this.stopEmulator == 0) { + //Interrupt Arming: + switch (this.IRQEnableDelay) { + case 1: + this.IME = true; + this.checkIRQMatching(); + case 2: + --this.IRQEnableDelay; + } + //Is an IRQ set to fire?: + if (this.IRQLineMatched > 0) { + //IME is true and and interrupt was matched: + this.launchIRQ(); + } + //Fetch the current opcode: + opcodeToExecute = this.memoryReader[this.programCounter](this, this.programCounter); + //Increment the program counter to the next instruction: + this.programCounter = (this.programCounter + 1) & 0xFFFF; + //Check for the program counter quirk: + if (this.skipPCIncrement) { + this.programCounter = (this.programCounter - 1) & 0xFFFF; + this.skipPCIncrement = false; + } + //Get how many CPU cycles the current instruction counts for: + this.CPUTicks = this.TICKTable[opcodeToExecute]; + //Execute the current instruction: + this.OPCODE[opcodeToExecute](this); + //Update the state (Inlined updateCoreFull manually here): + //Update the clocking for the LCD emulation: + this.LCDTicks += this.CPUTicks >> this.doubleSpeedShifter; //LCD Timing + this.LCDCONTROL[this.actualScanLine](this); //Scan Line and STAT Mode Control + //Single-speed relative timing for A/V emulation: + timedTicks = this.CPUTicks >> this.doubleSpeedShifter; //CPU clocking can be updated from the LCD handling. + this.audioTicks += timedTicks; //Audio Timing + this.emulatorTicks += timedTicks; //Emulator Timing + //CPU Timers: + this.DIVTicks += this.CPUTicks; //DIV Timing + if (this.TIMAEnabled) { //TIMA Timing + this.timerTicks += this.CPUTicks; + while (this.timerTicks >= this.TACClocker) { + this.timerTicks -= this.TACClocker; + if (++this.memory[0xFF05] == 0x100) { + this.memory[0xFF05] = this.memory[0xFF06]; + this.interruptsRequested |= 0x4; + this.checkIRQMatching(); + } + } + } + if (this.serialTimer > 0) { //Serial Timing + //IRQ Counter: + this.serialTimer -= this.CPUTicks; + if (this.serialTimer <= 0) { + this.interruptsRequested |= 0x8; + this.checkIRQMatching(); + } + //Bit Shit Counter: + this.serialShiftTimer -= this.CPUTicks; + if (this.serialShiftTimer <= 0) { + this.serialShiftTimer = this.serialShiftTimerAllocated; + this.memory[0xFF01] = ((this.memory[0xFF01] << 1) & 0xFE) | 0x01; //We could shift in actual link data here if we were to implement such!!! + } + } + //End of iteration routine: + if (this.emulatorTicks >= this.CPUCyclesTotal) { + this.iterationEndRoutine(); + } + // Start of code added for benchmarking: + this.instructions += 1; + if (this.instructions > this.totalInstructions) { + this.iterationEndRoutine(); + this.stopEmulator |= 2; + checkFinalState(); + } + // End of code added for benchmarking. + } +} +GameBoyCore.prototype.iterationEndRoutine = function () { + if ((this.stopEmulator & 0x1) == 0) { + this.audioJIT(); //Make sure we at least output once per iteration. + //Update DIV Alignment (Integer overflow safety): + this.memory[0xFF04] = (this.memory[0xFF04] + (this.DIVTicks >> 8)) & 0xFF; + this.DIVTicks &= 0xFF; + //Update emulator flags: + this.stopEmulator |= 1; //End current loop. + this.emulatorTicks -= this.CPUCyclesTotal; + this.CPUCyclesTotalCurrent += this.CPUCyclesTotalRoundoff; + this.recalculateIterationClockLimit(); + } +} +GameBoyCore.prototype.handleSTOP = function () { + this.CPUStopped = true; //Stop CPU until joypad input changes. + this.iterationEndRoutine(); + if (this.emulatorTicks < 0) { + this.audioTicks -= this.emulatorTicks; + this.audioJIT(); + } +} +GameBoyCore.prototype.recalculateIterationClockLimit = function () { + var endModulus = this.CPUCyclesTotalCurrent % 4; + this.CPUCyclesTotal = this.CPUCyclesTotalBase + this.CPUCyclesTotalCurrent - endModulus; + this.CPUCyclesTotalCurrent = endModulus; +} +GameBoyCore.prototype.scanLineMode2 = function () { //OAM Search Period + if (this.STATTracker != 1) { + if (this.mode2TriggerSTAT) { + this.interruptsRequested |= 0x2; + this.checkIRQMatching(); + } + this.STATTracker = 1; + this.modeSTAT = 2; + } +} +GameBoyCore.prototype.scanLineMode3 = function () { //Scan Line Drawing Period + if (this.modeSTAT != 3) { + if (this.STATTracker == 0 && this.mode2TriggerSTAT) { + this.interruptsRequested |= 0x2; + this.checkIRQMatching(); + } + this.STATTracker = 1; + this.modeSTAT = 3; + } +} +GameBoyCore.prototype.scanLineMode0 = function () { //Horizontal Blanking Period + if (this.modeSTAT != 0) { + if (this.STATTracker != 2) { + if (this.STATTracker == 0) { + if (this.mode2TriggerSTAT) { + this.interruptsRequested |= 0x2; + this.checkIRQMatching(); + } + this.modeSTAT = 3; + } + this.incrementScanLineQueue(); + this.updateSpriteCount(this.actualScanLine); + this.STATTracker = 2; + } + if (this.LCDTicks >= this.spriteCount) { + if (this.hdmaRunning) { + this.executeHDMA(); + } + if (this.mode0TriggerSTAT) { + this.interruptsRequested |= 0x2; + this.checkIRQMatching(); + } + this.STATTracker = 3; + this.modeSTAT = 0; + } + } +} +GameBoyCore.prototype.clocksUntilLYCMatch = function () { + if (this.memory[0xFF45] != 0) { + if (this.memory[0xFF45] > this.actualScanLine) { + return 456 * (this.memory[0xFF45] - this.actualScanLine); + } + return 456 * (154 - this.actualScanLine + this.memory[0xFF45]); + } + return (456 * ((this.actualScanLine == 153 && this.memory[0xFF44] == 0) ? 154 : (153 - this.actualScanLine))) + 8; +} +GameBoyCore.prototype.clocksUntilMode0 = function () { + switch (this.modeSTAT) { + case 0: + if (this.actualScanLine == 143) { + this.updateSpriteCount(0); + return this.spriteCount + 5016; + } + this.updateSpriteCount(this.actualScanLine + 1); + return this.spriteCount + 456; + case 2: + case 3: + this.updateSpriteCount(this.actualScanLine); + return this.spriteCount; + case 1: + this.updateSpriteCount(0); + return this.spriteCount + (456 * (154 - this.actualScanLine)); + } +} +GameBoyCore.prototype.updateSpriteCount = function (line) { + this.spriteCount = 252; + if (this.cGBC && this.gfxSpriteShow) { //Is the window enabled and are we in CGB mode? + var lineAdjusted = line + 0x10; + var yoffset = 0; + var yCap = (this.gfxSpriteNormalHeight) ? 0x8 : 0x10; + for (var OAMAddress = 0xFE00; OAMAddress < 0xFEA0 && this.spriteCount < 312; OAMAddress += 4) { + yoffset = lineAdjusted - this.memory[OAMAddress]; + if (yoffset > -1 && yoffset < yCap) { + this.spriteCount += 6; + } + } + } +} +GameBoyCore.prototype.matchLYC = function () { //LYC Register Compare + if (this.memory[0xFF44] == this.memory[0xFF45]) { + this.memory[0xFF41] |= 0x04; + if (this.LYCMatchTriggerSTAT) { + this.interruptsRequested |= 0x2; + this.checkIRQMatching(); + } + } + else { + this.memory[0xFF41] &= 0x7B; + } +} +GameBoyCore.prototype.updateCore = function () { + //Update the clocking for the LCD emulation: + this.LCDTicks += this.CPUTicks >> this.doubleSpeedShifter; //LCD Timing + this.LCDCONTROL[this.actualScanLine](this); //Scan Line and STAT Mode Control + //Single-speed relative timing for A/V emulation: + var timedTicks = this.CPUTicks >> this.doubleSpeedShifter; //CPU clocking can be updated from the LCD handling. + this.audioTicks += timedTicks; //Audio Timing + this.emulatorTicks += timedTicks; //Emulator Timing + //CPU Timers: + this.DIVTicks += this.CPUTicks; //DIV Timing + if (this.TIMAEnabled) { //TIMA Timing + this.timerTicks += this.CPUTicks; + while (this.timerTicks >= this.TACClocker) { + this.timerTicks -= this.TACClocker; + if (++this.memory[0xFF05] == 0x100) { + this.memory[0xFF05] = this.memory[0xFF06]; + this.interruptsRequested |= 0x4; + this.checkIRQMatching(); + } + } + } + if (this.serialTimer > 0) { //Serial Timing + //IRQ Counter: + this.serialTimer -= this.CPUTicks; + if (this.serialTimer <= 0) { + this.interruptsRequested |= 0x8; + this.checkIRQMatching(); + } + //Bit Shit Counter: + this.serialShiftTimer -= this.CPUTicks; + if (this.serialShiftTimer <= 0) { + this.serialShiftTimer = this.serialShiftTimerAllocated; + this.memory[0xFF01] = ((this.memory[0xFF01] << 1) & 0xFE) | 0x01; //We could shift in actual link data here if we were to implement such!!! + } + } +} +GameBoyCore.prototype.updateCoreFull = function () { + //Update the state machine: + this.updateCore(); + //End of iteration routine: + if (this.emulatorTicks >= this.CPUCyclesTotal) { + this.iterationEndRoutine(); + } +} +GameBoyCore.prototype.initializeLCDController = function () { + //Display on hanlding: + var line = 0; + while (line < 154) { + if (line < 143) { + //We're on a normal scan line: + this.LINECONTROL[line] = function (parentObj) { + if (parentObj.LCDTicks < 80) { + parentObj.scanLineMode2(); + } + else if (parentObj.LCDTicks < 252) { + parentObj.scanLineMode3(); + } + else if (parentObj.LCDTicks < 456) { + parentObj.scanLineMode0(); + } + else { + //We're on a new scan line: + parentObj.LCDTicks -= 456; + if (parentObj.STATTracker != 3) { + //Make sure the mode 0 handler was run at least once per scan line: + if (parentObj.STATTracker != 2) { + if (parentObj.STATTracker == 0 && parentObj.mode2TriggerSTAT) { + parentObj.interruptsRequested |= 0x2; + } + parentObj.incrementScanLineQueue(); + } + if (parentObj.hdmaRunning) { + parentObj.executeHDMA(); + } + if (parentObj.mode0TriggerSTAT) { + parentObj.interruptsRequested |= 0x2; + } + } + //Update the scanline registers and assert the LYC counter: + parentObj.actualScanLine = ++parentObj.memory[0xFF44]; + //Perform a LYC counter assert: + if (parentObj.actualScanLine == parentObj.memory[0xFF45]) { + parentObj.memory[0xFF41] |= 0x04; + if (parentObj.LYCMatchTriggerSTAT) { + parentObj.interruptsRequested |= 0x2; + } + } + else { + parentObj.memory[0xFF41] &= 0x7B; + } + parentObj.checkIRQMatching(); + //Reset our mode contingency variables: + parentObj.STATTracker = 0; + parentObj.modeSTAT = 2; + parentObj.LINECONTROL[parentObj.actualScanLine](parentObj); //Scan Line and STAT Mode Control. + } + } + } + else if (line == 143) { + //We're on the last visible scan line of the LCD screen: + this.LINECONTROL[143] = function (parentObj) { + if (parentObj.LCDTicks < 80) { + parentObj.scanLineMode2(); + } + else if (parentObj.LCDTicks < 252) { + parentObj.scanLineMode3(); + } + else if (parentObj.LCDTicks < 456) { + parentObj.scanLineMode0(); + } + else { + //Starting V-Blank: + //Just finished the last visible scan line: + parentObj.LCDTicks -= 456; + if (parentObj.STATTracker != 3) { + //Make sure the mode 0 handler was run at least once per scan line: + if (parentObj.STATTracker != 2) { + if (parentObj.STATTracker == 0 && parentObj.mode2TriggerSTAT) { + parentObj.interruptsRequested |= 0x2; + } + parentObj.incrementScanLineQueue(); + } + if (parentObj.hdmaRunning) { + parentObj.executeHDMA(); + } + if (parentObj.mode0TriggerSTAT) { + parentObj.interruptsRequested |= 0x2; + } + } + //Update the scanline registers and assert the LYC counter: + parentObj.actualScanLine = parentObj.memory[0xFF44] = 144; + //Perform a LYC counter assert: + if (parentObj.memory[0xFF45] == 144) { + parentObj.memory[0xFF41] |= 0x04; + if (parentObj.LYCMatchTriggerSTAT) { + parentObj.interruptsRequested |= 0x2; + } + } + else { + parentObj.memory[0xFF41] &= 0x7B; + } + //Reset our mode contingency variables: + parentObj.STATTracker = 0; + //Update our state for v-blank: + parentObj.modeSTAT = 1; + parentObj.interruptsRequested |= (parentObj.mode1TriggerSTAT) ? 0x3 : 0x1; + parentObj.checkIRQMatching(); + //Attempt to blit out to our canvas: + if (parentObj.drewBlank == 0) { + //Ensure JIT framing alignment: + if (parentObj.totalLinesPassed < 144 || (parentObj.totalLinesPassed == 144 && parentObj.midScanlineOffset > -1)) { + //Make sure our gfx are up-to-date: + parentObj.graphicsJITVBlank(); + //Draw the frame: + parentObj.prepareFrame(); + } + } + else { + //LCD off takes at least 2 frames: + --parentObj.drewBlank; + } + parentObj.LINECONTROL[144](parentObj); //Scan Line and STAT Mode Control. + } + } + } + else if (line < 153) { + //In VBlank + this.LINECONTROL[line] = function (parentObj) { + if (parentObj.LCDTicks >= 456) { + //We're on a new scan line: + parentObj.LCDTicks -= 456; + parentObj.actualScanLine = ++parentObj.memory[0xFF44]; + //Perform a LYC counter assert: + if (parentObj.actualScanLine == parentObj.memory[0xFF45]) { + parentObj.memory[0xFF41] |= 0x04; + if (parentObj.LYCMatchTriggerSTAT) { + parentObj.interruptsRequested |= 0x2; + parentObj.checkIRQMatching(); + } + } + else { + parentObj.memory[0xFF41] &= 0x7B; + } + parentObj.LINECONTROL[parentObj.actualScanLine](parentObj); //Scan Line and STAT Mode Control. + } + } + } + else { + //VBlank Ending (We're on the last actual scan line) + this.LINECONTROL[153] = function (parentObj) { + if (parentObj.LCDTicks >= 8) { + if (parentObj.STATTracker != 4 && parentObj.memory[0xFF44] == 153) { + parentObj.memory[0xFF44] = 0; //LY register resets to 0 early. + //Perform a LYC counter assert: + if (parentObj.memory[0xFF45] == 0) { + parentObj.memory[0xFF41] |= 0x04; + if (parentObj.LYCMatchTriggerSTAT) { + parentObj.interruptsRequested |= 0x2; + parentObj.checkIRQMatching(); + } + } + else { + parentObj.memory[0xFF41] &= 0x7B; + } + parentObj.STATTracker = 4; + } + if (parentObj.LCDTicks >= 456) { + //We reset back to the beginning: + parentObj.LCDTicks -= 456; + parentObj.STATTracker = parentObj.actualScanLine = 0; + parentObj.LINECONTROL[0](parentObj); //Scan Line and STAT Mode Control. + } + } + } + } + ++line; + } +} +GameBoyCore.prototype.DisplayShowOff = function () { + if (this.drewBlank == 0) { + //Output a blank screen to the output framebuffer: + this.clearFrameBuffer(); + this.drewFrame = true; + } + this.drewBlank = 2; +} +GameBoyCore.prototype.executeHDMA = function () { + this.DMAWrite(1); + if (this.halt) { + if ((this.LCDTicks - this.spriteCount) < ((4 >> this.doubleSpeedShifter) | 0x20)) { + //HALT clocking correction: + this.CPUTicks = 4 + ((0x20 + this.spriteCount) << this.doubleSpeedShifter); + this.LCDTicks = this.spriteCount + ((4 >> this.doubleSpeedShifter) | 0x20); + } + } + else { + this.LCDTicks += (4 >> this.doubleSpeedShifter) | 0x20; //LCD Timing Update For HDMA. + } + if (this.memory[0xFF55] == 0) { + this.hdmaRunning = false; + this.memory[0xFF55] = 0xFF; //Transfer completed ("Hidden last step," since some ROMs don't imply this, but most do). + } + else { + --this.memory[0xFF55]; + } +} +GameBoyCore.prototype.clockUpdate = function () { + if (this.cTIMER) { + var dateObj = new_Date(); // The line is changed for benchmarking. + var newTime = dateObj.getTime(); + var timeElapsed = newTime - this.lastIteration; //Get the numnber of milliseconds since this last executed. + this.lastIteration = newTime; + if (this.cTIMER && !this.RTCHALT) { + //Update the MBC3 RTC: + this.RTCSeconds += timeElapsed / 1000; + while (this.RTCSeconds >= 60) { //System can stutter, so the seconds difference can get large, thus the "while". + this.RTCSeconds -= 60; + ++this.RTCMinutes; + if (this.RTCMinutes >= 60) { + this.RTCMinutes -= 60; + ++this.RTCHours; + if (this.RTCHours >= 24) { + this.RTCHours -= 24 + ++this.RTCDays; + if (this.RTCDays >= 512) { + this.RTCDays -= 512; + this.RTCDayOverFlow = true; + } + } + } + } + } + } +} +GameBoyCore.prototype.prepareFrame = function () { + //Copy the internal frame buffer to the output buffer: + this.swizzleFrameBuffer(); + this.drewFrame = true; +} +GameBoyCore.prototype.requestDraw = function () { + if (this.drewFrame) { + this.dispatchDraw(); + } +} +GameBoyCore.prototype.dispatchDraw = function () { + var canvasRGBALength = this.offscreenRGBCount; + if (canvasRGBALength > 0) { + //We actually updated the graphics internally, so copy out: + var frameBuffer = (canvasRGBALength == 92160) ? this.swizzledFrame : this.resizeFrameBuffer(); + var canvasData = this.canvasBuffer.data; + var bufferIndex = 0; + for (var canvasIndex = 0; canvasIndex < canvasRGBALength; ++canvasIndex) { + canvasData[canvasIndex++] = frameBuffer[bufferIndex++]; + canvasData[canvasIndex++] = frameBuffer[bufferIndex++]; + canvasData[canvasIndex++] = frameBuffer[bufferIndex++]; + } + this.graphicsBlit(); + } +} +GameBoyCore.prototype.swizzleFrameBuffer = function () { + //Convert our dirty 24-bit (24-bit, with internal render flags above it) framebuffer to an 8-bit buffer with separate indices for the RGB channels: + var frameBuffer = this.frameBuffer; + var swizzledFrame = this.swizzledFrame; + var bufferIndex = 0; + for (var canvasIndex = 0; canvasIndex < 69120;) { + swizzledFrame[canvasIndex++] = (frameBuffer[bufferIndex] >> 16) & 0xFF; //Red + swizzledFrame[canvasIndex++] = (frameBuffer[bufferIndex] >> 8) & 0xFF; //Green + swizzledFrame[canvasIndex++] = frameBuffer[bufferIndex++] & 0xFF; //Blue + } +} +GameBoyCore.prototype.clearFrameBuffer = function () { + var bufferIndex = 0; + var frameBuffer = this.swizzledFrame; + if (this.cGBC || this.colorizedGBPalettes) { + while (bufferIndex < 69120) { + frameBuffer[bufferIndex++] = 248; + } + } + else { + while (bufferIndex < 69120) { + frameBuffer[bufferIndex++] = 239; + frameBuffer[bufferIndex++] = 255; + frameBuffer[bufferIndex++] = 222; + } + } +} +GameBoyCore.prototype.resizeFrameBuffer = function () { + //Return a reference to the generated resized framebuffer: + return this.resizer.resize(this.swizzledFrame); +} +GameBoyCore.prototype.compileResizeFrameBufferFunction = function () { + if (this.offscreenRGBCount > 0) { + this.resizer = new Resize(160, 144, this.offscreenWidth, this.offscreenHeight, false, true); + } +} +GameBoyCore.prototype.renderScanLine = function (scanlineToRender) { + this.pixelStart = scanlineToRender * 160; + if (this.bgEnabled) { + this.pixelEnd = 160; + this.BGLayerRender(scanlineToRender); + this.WindowLayerRender(scanlineToRender); + } + else { + var pixelLine = (scanlineToRender + 1) * 160; + var defaultColor = (this.cGBC || this.colorizedGBPalettes) ? 0xF8F8F8 : 0xEFFFDE; + for (var pixelPosition = (scanlineToRender * 160) + this.currentX; pixelPosition < pixelLine; pixelPosition++) { + this.frameBuffer[pixelPosition] = defaultColor; + } + } + this.SpriteLayerRender(scanlineToRender); + this.currentX = 0; + this.midScanlineOffset = -1; +} +GameBoyCore.prototype.renderMidScanLine = function () { + if (this.actualScanLine < 144 && this.modeSTAT == 3) { + //TODO: Get this accurate: + if (this.midScanlineOffset == -1) { + this.midScanlineOffset = this.backgroundX & 0x7; + } + if (this.LCDTicks >= 82) { + this.pixelEnd = this.LCDTicks - 74; + this.pixelEnd = Math.min(this.pixelEnd - this.midScanlineOffset - (this.pixelEnd % 0x8), 160); + if (this.bgEnabled) { + this.pixelStart = this.lastUnrenderedLine * 160; + this.BGLayerRender(this.lastUnrenderedLine); + this.WindowLayerRender(this.lastUnrenderedLine); + //TODO: Do midscanline JIT for sprites... + } + else { + var pixelLine = (this.lastUnrenderedLine * 160) + this.pixelEnd; + var defaultColor = (this.cGBC || this.colorizedGBPalettes) ? 0xF8F8F8 : 0xEFFFDE; + for (var pixelPosition = (this.lastUnrenderedLine * 160) + this.currentX; pixelPosition < pixelLine; pixelPosition++) { + this.frameBuffer[pixelPosition] = defaultColor; + } + } + this.currentX = this.pixelEnd; + } + } +} +GameBoyCore.prototype.initializeModeSpecificArrays = function () { + this.LCDCONTROL = (this.LCDisOn) ? this.LINECONTROL : this.DISPLAYOFFCONTROL; + if (this.cGBC) { + this.gbcOBJRawPalette = this.getTypedArray(0x40, 0, "uint8"); + this.gbcBGRawPalette = this.getTypedArray(0x40, 0, "uint8"); + this.gbcOBJPalette = this.getTypedArray(0x20, 0x1000000, "int32"); + this.gbcBGPalette = this.getTypedArray(0x40, 0, "int32"); + this.BGCHRBank2 = this.getTypedArray(0x800, 0, "uint8"); + this.BGCHRCurrentBank = (this.currVRAMBank > 0) ? this.BGCHRBank2 : this.BGCHRBank1; + this.tileCache = this.generateCacheArray(0xF80); + } + else { + this.gbOBJPalette = this.getTypedArray(8, 0, "int32"); + this.gbBGPalette = this.getTypedArray(4, 0, "int32"); + this.BGPalette = this.gbBGPalette; + this.OBJPalette = this.gbOBJPalette; + this.tileCache = this.generateCacheArray(0x700); + this.sortBuffer = this.getTypedArray(0x100, 0, "uint8"); + this.OAMAddressCache = this.getTypedArray(10, 0, "int32"); + } + this.renderPathBuild(); +} +GameBoyCore.prototype.GBCtoGBModeAdjust = function () { + cout("Stepping down from GBC mode.", 0); + this.VRAM = this.GBCMemory = this.BGCHRCurrentBank = this.BGCHRBank2 = null; + this.tileCache.length = 0x700; + if (settings[4]) { + this.gbBGColorizedPalette = this.getTypedArray(4, 0, "int32"); + this.gbOBJColorizedPalette = this.getTypedArray(8, 0, "int32"); + this.cachedBGPaletteConversion = this.getTypedArray(4, 0, "int32"); + this.cachedOBJPaletteConversion = this.getTypedArray(8, 0, "int32"); + this.BGPalette = this.gbBGColorizedPalette; + this.OBJPalette = this.gbOBJColorizedPalette; + this.gbOBJPalette = this.gbBGPalette = null; + this.getGBCColor(); + } + else { + this.gbOBJPalette = this.getTypedArray(8, 0, "int32"); + this.gbBGPalette = this.getTypedArray(4, 0, "int32"); + this.BGPalette = this.gbBGPalette; + this.OBJPalette = this.gbOBJPalette; + } + this.sortBuffer = this.getTypedArray(0x100, 0, "uint8"); + this.OAMAddressCache = this.getTypedArray(10, 0, "int32"); + this.renderPathBuild(); + this.memoryReadJumpCompile(); + this.memoryWriteJumpCompile(); +} +GameBoyCore.prototype.renderPathBuild = function () { + if (!this.cGBC) { + this.BGLayerRender = this.BGGBLayerRender; + this.WindowLayerRender = this.WindowGBLayerRender; + this.SpriteLayerRender = this.SpriteGBLayerRender; + } + else { + this.priorityFlaggingPathRebuild(); + this.SpriteLayerRender = this.SpriteGBCLayerRender; + } +} +GameBoyCore.prototype.priorityFlaggingPathRebuild = function () { + if (this.BGPriorityEnabled) { + this.BGLayerRender = this.BGGBCLayerRender; + this.WindowLayerRender = this.WindowGBCLayerRender; + } + else { + this.BGLayerRender = this.BGGBCLayerRenderNoPriorityFlagging; + this.WindowLayerRender = this.WindowGBCLayerRenderNoPriorityFlagging; + } +} +GameBoyCore.prototype.initializeReferencesFromSaveState = function () { + this.LCDCONTROL = (this.LCDisOn) ? this.LINECONTROL : this.DISPLAYOFFCONTROL; + var tileIndex = 0; + if (!this.cGBC) { + if (this.colorizedGBPalettes) { + this.BGPalette = this.gbBGColorizedPalette; + this.OBJPalette = this.gbOBJColorizedPalette; + this.updateGBBGPalette = this.updateGBColorizedBGPalette; + this.updateGBOBJPalette = this.updateGBColorizedOBJPalette; + + } + else { + this.BGPalette = this.gbBGPalette; + this.OBJPalette = this.gbOBJPalette; + } + this.tileCache = this.generateCacheArray(0x700); + for (tileIndex = 0x8000; tileIndex < 0x9000; tileIndex += 2) { + this.generateGBOAMTileLine(tileIndex); + } + for (tileIndex = 0x9000; tileIndex < 0x9800; tileIndex += 2) { + this.generateGBTileLine(tileIndex); + } + this.sortBuffer = this.getTypedArray(0x100, 0, "uint8"); + this.OAMAddressCache = this.getTypedArray(10, 0, "int32"); + } + else { + this.BGCHRCurrentBank = (this.currVRAMBank > 0) ? this.BGCHRBank2 : this.BGCHRBank1; + this.tileCache = this.generateCacheArray(0xF80); + for (; tileIndex < 0x1800; tileIndex += 0x10) { + this.generateGBCTileBank1(tileIndex); + this.generateGBCTileBank2(tileIndex); + } + } + this.renderPathBuild(); +} +GameBoyCore.prototype.RGBTint = function (value) { + //Adjustment for the GBC's tinting (According to Gambatte): + var r = value & 0x1F; + var g = (value >> 5) & 0x1F; + var b = (value >> 10) & 0x1F; + return ((r * 13 + g * 2 + b) >> 1) << 16 | (g * 3 + b) << 9 | (r * 3 + g * 2 + b * 11) >> 1; +} +GameBoyCore.prototype.getGBCColor = function () { + //GBC Colorization of DMG ROMs: + //BG + for (var counter = 0; counter < 4; counter++) { + var adjustedIndex = counter << 1; + //BG + this.cachedBGPaletteConversion[counter] = this.RGBTint((this.gbcBGRawPalette[adjustedIndex | 1] << 8) | this.gbcBGRawPalette[adjustedIndex]); + //OBJ 1 + this.cachedOBJPaletteConversion[counter] = this.RGBTint((this.gbcOBJRawPalette[adjustedIndex | 1] << 8) | this.gbcOBJRawPalette[adjustedIndex]); + } + //OBJ 2 + for (counter = 4; counter < 8; counter++) { + adjustedIndex = counter << 1; + this.cachedOBJPaletteConversion[counter] = this.RGBTint((this.gbcOBJRawPalette[adjustedIndex | 1] << 8) | this.gbcOBJRawPalette[adjustedIndex]); + } + //Update the palette entries: + this.updateGBBGPalette = this.updateGBColorizedBGPalette; + this.updateGBOBJPalette = this.updateGBColorizedOBJPalette; + this.updateGBBGPalette(this.memory[0xFF47]); + this.updateGBOBJPalette(0, this.memory[0xFF48]); + this.updateGBOBJPalette(1, this.memory[0xFF49]); + this.colorizedGBPalettes = true; +} +GameBoyCore.prototype.updateGBRegularBGPalette = function (data) { + this.gbBGPalette[0] = this.colors[data & 0x03] | 0x2000000; + this.gbBGPalette[1] = this.colors[(data >> 2) & 0x03]; + this.gbBGPalette[2] = this.colors[(data >> 4) & 0x03]; + this.gbBGPalette[3] = this.colors[data >> 6]; +} +GameBoyCore.prototype.updateGBColorizedBGPalette = function (data) { + //GB colorization: + this.gbBGColorizedPalette[0] = this.cachedBGPaletteConversion[data & 0x03] | 0x2000000; + this.gbBGColorizedPalette[1] = this.cachedBGPaletteConversion[(data >> 2) & 0x03]; + this.gbBGColorizedPalette[2] = this.cachedBGPaletteConversion[(data >> 4) & 0x03]; + this.gbBGColorizedPalette[3] = this.cachedBGPaletteConversion[data >> 6]; +} +GameBoyCore.prototype.updateGBRegularOBJPalette = function (index, data) { + this.gbOBJPalette[index | 1] = this.colors[(data >> 2) & 0x03]; + this.gbOBJPalette[index | 2] = this.colors[(data >> 4) & 0x03]; + this.gbOBJPalette[index | 3] = this.colors[data >> 6]; +} +GameBoyCore.prototype.updateGBColorizedOBJPalette = function (index, data) { + //GB colorization: + this.gbOBJColorizedPalette[index | 1] = this.cachedOBJPaletteConversion[index | ((data >> 2) & 0x03)]; + this.gbOBJColorizedPalette[index | 2] = this.cachedOBJPaletteConversion[index | ((data >> 4) & 0x03)]; + this.gbOBJColorizedPalette[index | 3] = this.cachedOBJPaletteConversion[index | (data >> 6)]; +} +GameBoyCore.prototype.updateGBCBGPalette = function (index, data) { + if (this.gbcBGRawPalette[index] != data) { + this.midScanLineJIT(); + //Update the color palette for BG tiles since it changed: + this.gbcBGRawPalette[index] = data; + if ((index & 0x06) == 0) { + //Palette 0 (Special tile Priority stuff) + data = 0x2000000 | this.RGBTint((this.gbcBGRawPalette[index | 1] << 8) | this.gbcBGRawPalette[index & 0x3E]); + index >>= 1; + this.gbcBGPalette[index] = data; + this.gbcBGPalette[0x20 | index] = 0x1000000 | data; + } + else { + //Regular Palettes (No special crap) + data = this.RGBTint((this.gbcBGRawPalette[index | 1] << 8) | this.gbcBGRawPalette[index & 0x3E]); + index >>= 1; + this.gbcBGPalette[index] = data; + this.gbcBGPalette[0x20 | index] = 0x1000000 | data; + } + } +} +GameBoyCore.prototype.updateGBCOBJPalette = function (index, data) { + if (this.gbcOBJRawPalette[index] != data) { + //Update the color palette for OBJ tiles since it changed: + this.gbcOBJRawPalette[index] = data; + if ((index & 0x06) > 0) { + //Regular Palettes (No special crap) + this.midScanLineJIT(); + this.gbcOBJPalette[index >> 1] = 0x1000000 | this.RGBTint((this.gbcOBJRawPalette[index | 1] << 8) | this.gbcOBJRawPalette[index & 0x3E]); + } + } +} +GameBoyCore.prototype.BGGBLayerRender = function (scanlineToRender) { + var scrollYAdjusted = (this.backgroundY + scanlineToRender) & 0xFF; //The line of the BG we're at. + var tileYLine = (scrollYAdjusted & 7) << 3; + var tileYDown = this.gfxBackgroundCHRBankPosition | ((scrollYAdjusted & 0xF8) << 2); //The row of cached tiles we're fetching from. + var scrollXAdjusted = (this.backgroundX + this.currentX) & 0xFF; //The scroll amount of the BG. + var pixelPosition = this.pixelStart + this.currentX; //Current pixel we're working on. + var pixelPositionEnd = this.pixelStart + ((this.gfxWindowDisplay && (scanlineToRender - this.windowY) >= 0) ? Math.min(Math.max(this.windowX, 0) + this.currentX, this.pixelEnd) : this.pixelEnd); //Make sure we do at most 160 pixels a scanline. + var tileNumber = tileYDown + (scrollXAdjusted >> 3); + var chrCode = this.BGCHRBank1[tileNumber]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + var tile = this.tileCache[chrCode]; + for (var texel = (scrollXAdjusted & 0x7); texel < 8 && pixelPosition < pixelPositionEnd && scrollXAdjusted < 0x100; ++scrollXAdjusted) { + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[tileYLine | texel++]]; + } + var scrollXAdjustedAligned = Math.min(pixelPositionEnd - pixelPosition, 0x100 - scrollXAdjusted) >> 3; + scrollXAdjusted += scrollXAdjustedAligned << 3; + scrollXAdjustedAligned += tileNumber; + while (tileNumber < scrollXAdjustedAligned) { + chrCode = this.BGCHRBank1[++tileNumber]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + tile = this.tileCache[chrCode]; + texel = tileYLine; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel]]; + } + if (pixelPosition < pixelPositionEnd) { + if (scrollXAdjusted < 0x100) { + chrCode = this.BGCHRBank1[++tileNumber]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + tile = this.tileCache[chrCode]; + for (texel = tileYLine - 1; pixelPosition < pixelPositionEnd && scrollXAdjusted < 0x100; ++scrollXAdjusted) { + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[++texel]]; + } + } + scrollXAdjustedAligned = ((pixelPositionEnd - pixelPosition) >> 3) + tileYDown; + while (tileYDown < scrollXAdjustedAligned) { + chrCode = this.BGCHRBank1[tileYDown++]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + tile = this.tileCache[chrCode]; + texel = tileYLine; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel]]; + } + if (pixelPosition < pixelPositionEnd) { + chrCode = this.BGCHRBank1[tileYDown]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + tile = this.tileCache[chrCode]; + switch (pixelPositionEnd - pixelPosition) { + case 7: + this.frameBuffer[pixelPosition + 6] = this.BGPalette[tile[tileYLine | 6]]; + case 6: + this.frameBuffer[pixelPosition + 5] = this.BGPalette[tile[tileYLine | 5]]; + case 5: + this.frameBuffer[pixelPosition + 4] = this.BGPalette[tile[tileYLine | 4]]; + case 4: + this.frameBuffer[pixelPosition + 3] = this.BGPalette[tile[tileYLine | 3]]; + case 3: + this.frameBuffer[pixelPosition + 2] = this.BGPalette[tile[tileYLine | 2]]; + case 2: + this.frameBuffer[pixelPosition + 1] = this.BGPalette[tile[tileYLine | 1]]; + case 1: + this.frameBuffer[pixelPosition] = this.BGPalette[tile[tileYLine]]; + } + } + } +} +GameBoyCore.prototype.BGGBCLayerRender = function (scanlineToRender) { + var scrollYAdjusted = (this.backgroundY + scanlineToRender) & 0xFF; //The line of the BG we're at. + var tileYLine = (scrollYAdjusted & 7) << 3; + var tileYDown = this.gfxBackgroundCHRBankPosition | ((scrollYAdjusted & 0xF8) << 2); //The row of cached tiles we're fetching from. + var scrollXAdjusted = (this.backgroundX + this.currentX) & 0xFF; //The scroll amount of the BG. + var pixelPosition = this.pixelStart + this.currentX; //Current pixel we're working on. + var pixelPositionEnd = this.pixelStart + ((this.gfxWindowDisplay && (scanlineToRender - this.windowY) >= 0) ? Math.min(Math.max(this.windowX, 0) + this.currentX, this.pixelEnd) : this.pixelEnd); //Make sure we do at most 160 pixels a scanline. + var tileNumber = tileYDown + (scrollXAdjusted >> 3); + var chrCode = this.BGCHRBank1[tileNumber]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + var attrCode = this.BGCHRBank2[tileNumber]; + var tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode]; + var palette = ((attrCode & 0x7) << 2) | ((attrCode & 0x80) >> 2); + for (var texel = (scrollXAdjusted & 0x7); texel < 8 && pixelPosition < pixelPositionEnd && scrollXAdjusted < 0x100; ++scrollXAdjusted) { + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[tileYLine | texel++]]; + } + var scrollXAdjustedAligned = Math.min(pixelPositionEnd - pixelPosition, 0x100 - scrollXAdjusted) >> 3; + scrollXAdjusted += scrollXAdjustedAligned << 3; + scrollXAdjustedAligned += tileNumber; + while (tileNumber < scrollXAdjustedAligned) { + chrCode = this.BGCHRBank1[++tileNumber]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + attrCode = this.BGCHRBank2[tileNumber]; + tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode]; + palette = ((attrCode & 0x7) << 2) | ((attrCode & 0x80) >> 2); + texel = tileYLine; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel]]; + } + if (pixelPosition < pixelPositionEnd) { + if (scrollXAdjusted < 0x100) { + chrCode = this.BGCHRBank1[++tileNumber]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + attrCode = this.BGCHRBank2[tileNumber]; + tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode]; + palette = ((attrCode & 0x7) << 2) | ((attrCode & 0x80) >> 2); + for (texel = tileYLine - 1; pixelPosition < pixelPositionEnd && scrollXAdjusted < 0x100; ++scrollXAdjusted) { + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[++texel]]; + } + } + scrollXAdjustedAligned = ((pixelPositionEnd - pixelPosition) >> 3) + tileYDown; + while (tileYDown < scrollXAdjustedAligned) { + chrCode = this.BGCHRBank1[tileYDown]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + attrCode = this.BGCHRBank2[tileYDown++]; + tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode]; + palette = ((attrCode & 0x7) << 2) | ((attrCode & 0x80) >> 2); + texel = tileYLine; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel]]; + } + if (pixelPosition < pixelPositionEnd) { + chrCode = this.BGCHRBank1[tileYDown]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + attrCode = this.BGCHRBank2[tileYDown]; + tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode]; + palette = ((attrCode & 0x7) << 2) | ((attrCode & 0x80) >> 2); + switch (pixelPositionEnd - pixelPosition) { + case 7: + this.frameBuffer[pixelPosition + 6] = this.gbcBGPalette[palette | tile[tileYLine | 6]]; + case 6: + this.frameBuffer[pixelPosition + 5] = this.gbcBGPalette[palette | tile[tileYLine | 5]]; + case 5: + this.frameBuffer[pixelPosition + 4] = this.gbcBGPalette[palette | tile[tileYLine | 4]]; + case 4: + this.frameBuffer[pixelPosition + 3] = this.gbcBGPalette[palette | tile[tileYLine | 3]]; + case 3: + this.frameBuffer[pixelPosition + 2] = this.gbcBGPalette[palette | tile[tileYLine | 2]]; + case 2: + this.frameBuffer[pixelPosition + 1] = this.gbcBGPalette[palette | tile[tileYLine | 1]]; + case 1: + this.frameBuffer[pixelPosition] = this.gbcBGPalette[palette | tile[tileYLine]]; + } + } + } +} +GameBoyCore.prototype.BGGBCLayerRenderNoPriorityFlagging = function (scanlineToRender) { + var scrollYAdjusted = (this.backgroundY + scanlineToRender) & 0xFF; //The line of the BG we're at. + var tileYLine = (scrollYAdjusted & 7) << 3; + var tileYDown = this.gfxBackgroundCHRBankPosition | ((scrollYAdjusted & 0xF8) << 2); //The row of cached tiles we're fetching from. + var scrollXAdjusted = (this.backgroundX + this.currentX) & 0xFF; //The scroll amount of the BG. + var pixelPosition = this.pixelStart + this.currentX; //Current pixel we're working on. + var pixelPositionEnd = this.pixelStart + ((this.gfxWindowDisplay && (scanlineToRender - this.windowY) >= 0) ? Math.min(Math.max(this.windowX, 0) + this.currentX, this.pixelEnd) : this.pixelEnd); //Make sure we do at most 160 pixels a scanline. + var tileNumber = tileYDown + (scrollXAdjusted >> 3); + var chrCode = this.BGCHRBank1[tileNumber]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + var attrCode = this.BGCHRBank2[tileNumber]; + var tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode]; + var palette = (attrCode & 0x7) << 2; + for (var texel = (scrollXAdjusted & 0x7); texel < 8 && pixelPosition < pixelPositionEnd && scrollXAdjusted < 0x100; ++scrollXAdjusted) { + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[tileYLine | texel++]]; + } + var scrollXAdjustedAligned = Math.min(pixelPositionEnd - pixelPosition, 0x100 - scrollXAdjusted) >> 3; + scrollXAdjusted += scrollXAdjustedAligned << 3; + scrollXAdjustedAligned += tileNumber; + while (tileNumber < scrollXAdjustedAligned) { + chrCode = this.BGCHRBank1[++tileNumber]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + attrCode = this.BGCHRBank2[tileNumber]; + tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode]; + palette = (attrCode & 0x7) << 2; + texel = tileYLine; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel]]; + } + if (pixelPosition < pixelPositionEnd) { + if (scrollXAdjusted < 0x100) { + chrCode = this.BGCHRBank1[++tileNumber]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + attrCode = this.BGCHRBank2[tileNumber]; + tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode]; + palette = (attrCode & 0x7) << 2; + for (texel = tileYLine - 1; pixelPosition < pixelPositionEnd && scrollXAdjusted < 0x100; ++scrollXAdjusted) { + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[++texel]]; + } + } + scrollXAdjustedAligned = ((pixelPositionEnd - pixelPosition) >> 3) + tileYDown; + while (tileYDown < scrollXAdjustedAligned) { + chrCode = this.BGCHRBank1[tileYDown]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + attrCode = this.BGCHRBank2[tileYDown++]; + tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode]; + palette = (attrCode & 0x7) << 2; + texel = tileYLine; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel]]; + } + if (pixelPosition < pixelPositionEnd) { + chrCode = this.BGCHRBank1[tileYDown]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + attrCode = this.BGCHRBank2[tileYDown]; + tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode]; + palette = (attrCode & 0x7) << 2; + switch (pixelPositionEnd - pixelPosition) { + case 7: + this.frameBuffer[pixelPosition + 6] = this.gbcBGPalette[palette | tile[tileYLine | 6]]; + case 6: + this.frameBuffer[pixelPosition + 5] = this.gbcBGPalette[palette | tile[tileYLine | 5]]; + case 5: + this.frameBuffer[pixelPosition + 4] = this.gbcBGPalette[palette | tile[tileYLine | 4]]; + case 4: + this.frameBuffer[pixelPosition + 3] = this.gbcBGPalette[palette | tile[tileYLine | 3]]; + case 3: + this.frameBuffer[pixelPosition + 2] = this.gbcBGPalette[palette | tile[tileYLine | 2]]; + case 2: + this.frameBuffer[pixelPosition + 1] = this.gbcBGPalette[palette | tile[tileYLine | 1]]; + case 1: + this.frameBuffer[pixelPosition] = this.gbcBGPalette[palette | tile[tileYLine]]; + } + } + } +} +GameBoyCore.prototype.WindowGBLayerRender = function (scanlineToRender) { + if (this.gfxWindowDisplay) { //Is the window enabled? + var scrollYAdjusted = scanlineToRender - this.windowY; //The line of the BG we're at. + if (scrollYAdjusted >= 0) { + var scrollXRangeAdjusted = (this.windowX > 0) ? (this.windowX + this.currentX) : this.currentX; + var pixelPosition = this.pixelStart + scrollXRangeAdjusted; + var pixelPositionEnd = this.pixelStart + this.pixelEnd; + if (pixelPosition < pixelPositionEnd) { + var tileYLine = (scrollYAdjusted & 0x7) << 3; + var tileNumber = (this.gfxWindowCHRBankPosition | ((scrollYAdjusted & 0xF8) << 2)) + (this.currentX >> 3); + var chrCode = this.BGCHRBank1[tileNumber]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + var tile = this.tileCache[chrCode]; + var texel = (scrollXRangeAdjusted - this.windowX) & 0x7; + scrollXRangeAdjusted = Math.min(8, texel + pixelPositionEnd - pixelPosition); + while (texel < scrollXRangeAdjusted) { + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[tileYLine | texel++]]; + } + scrollXRangeAdjusted = tileNumber + ((pixelPositionEnd - pixelPosition) >> 3); + while (tileNumber < scrollXRangeAdjusted) { + chrCode = this.BGCHRBank1[++tileNumber]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + tile = this.tileCache[chrCode]; + texel = tileYLine; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel]]; + } + if (pixelPosition < pixelPositionEnd) { + chrCode = this.BGCHRBank1[++tileNumber]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + tile = this.tileCache[chrCode]; + switch (pixelPositionEnd - pixelPosition) { + case 7: + this.frameBuffer[pixelPosition + 6] = this.BGPalette[tile[tileYLine | 6]]; + case 6: + this.frameBuffer[pixelPosition + 5] = this.BGPalette[tile[tileYLine | 5]]; + case 5: + this.frameBuffer[pixelPosition + 4] = this.BGPalette[tile[tileYLine | 4]]; + case 4: + this.frameBuffer[pixelPosition + 3] = this.BGPalette[tile[tileYLine | 3]]; + case 3: + this.frameBuffer[pixelPosition + 2] = this.BGPalette[tile[tileYLine | 2]]; + case 2: + this.frameBuffer[pixelPosition + 1] = this.BGPalette[tile[tileYLine | 1]]; + case 1: + this.frameBuffer[pixelPosition] = this.BGPalette[tile[tileYLine]]; + } + } + } + } + } +} +GameBoyCore.prototype.WindowGBCLayerRender = function (scanlineToRender) { + if (this.gfxWindowDisplay) { //Is the window enabled? + var scrollYAdjusted = scanlineToRender - this.windowY; //The line of the BG we're at. + if (scrollYAdjusted >= 0) { + var scrollXRangeAdjusted = (this.windowX > 0) ? (this.windowX + this.currentX) : this.currentX; + var pixelPosition = this.pixelStart + scrollXRangeAdjusted; + var pixelPositionEnd = this.pixelStart + this.pixelEnd; + if (pixelPosition < pixelPositionEnd) { + var tileYLine = (scrollYAdjusted & 0x7) << 3; + var tileNumber = (this.gfxWindowCHRBankPosition | ((scrollYAdjusted & 0xF8) << 2)) + (this.currentX >> 3); + var chrCode = this.BGCHRBank1[tileNumber]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + var attrCode = this.BGCHRBank2[tileNumber]; + var tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode]; + var palette = ((attrCode & 0x7) << 2) | ((attrCode & 0x80) >> 2); + var texel = (scrollXRangeAdjusted - this.windowX) & 0x7; + scrollXRangeAdjusted = Math.min(8, texel + pixelPositionEnd - pixelPosition); + while (texel < scrollXRangeAdjusted) { + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[tileYLine | texel++]]; + } + scrollXRangeAdjusted = tileNumber + ((pixelPositionEnd - pixelPosition) >> 3); + while (tileNumber < scrollXRangeAdjusted) { + chrCode = this.BGCHRBank1[++tileNumber]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + attrCode = this.BGCHRBank2[tileNumber]; + tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode]; + palette = ((attrCode & 0x7) << 2) | ((attrCode & 0x80) >> 2); + texel = tileYLine; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel]]; + } + if (pixelPosition < pixelPositionEnd) { + chrCode = this.BGCHRBank1[++tileNumber]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + attrCode = this.BGCHRBank2[tileNumber]; + tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode]; + palette = ((attrCode & 0x7) << 2) | ((attrCode & 0x80) >> 2); + switch (pixelPositionEnd - pixelPosition) { + case 7: + this.frameBuffer[pixelPosition + 6] = this.gbcBGPalette[palette | tile[tileYLine | 6]]; + case 6: + this.frameBuffer[pixelPosition + 5] = this.gbcBGPalette[palette | tile[tileYLine | 5]]; + case 5: + this.frameBuffer[pixelPosition + 4] = this.gbcBGPalette[palette | tile[tileYLine | 4]]; + case 4: + this.frameBuffer[pixelPosition + 3] = this.gbcBGPalette[palette | tile[tileYLine | 3]]; + case 3: + this.frameBuffer[pixelPosition + 2] = this.gbcBGPalette[palette | tile[tileYLine | 2]]; + case 2: + this.frameBuffer[pixelPosition + 1] = this.gbcBGPalette[palette | tile[tileYLine | 1]]; + case 1: + this.frameBuffer[pixelPosition] = this.gbcBGPalette[palette | tile[tileYLine]]; + } + } + } + } + } +} +GameBoyCore.prototype.WindowGBCLayerRenderNoPriorityFlagging = function (scanlineToRender) { + if (this.gfxWindowDisplay) { //Is the window enabled? + var scrollYAdjusted = scanlineToRender - this.windowY; //The line of the BG we're at. + if (scrollYAdjusted >= 0) { + var scrollXRangeAdjusted = (this.windowX > 0) ? (this.windowX + this.currentX) : this.currentX; + var pixelPosition = this.pixelStart + scrollXRangeAdjusted; + var pixelPositionEnd = this.pixelStart + this.pixelEnd; + if (pixelPosition < pixelPositionEnd) { + var tileYLine = (scrollYAdjusted & 0x7) << 3; + var tileNumber = (this.gfxWindowCHRBankPosition | ((scrollYAdjusted & 0xF8) << 2)) + (this.currentX >> 3); + var chrCode = this.BGCHRBank1[tileNumber]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + var attrCode = this.BGCHRBank2[tileNumber]; + var tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode]; + var palette = (attrCode & 0x7) << 2; + var texel = (scrollXRangeAdjusted - this.windowX) & 0x7; + scrollXRangeAdjusted = Math.min(8, texel + pixelPositionEnd - pixelPosition); + while (texel < scrollXRangeAdjusted) { + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[tileYLine | texel++]]; + } + scrollXRangeAdjusted = tileNumber + ((pixelPositionEnd - pixelPosition) >> 3); + while (tileNumber < scrollXRangeAdjusted) { + chrCode = this.BGCHRBank1[++tileNumber]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + attrCode = this.BGCHRBank2[tileNumber]; + tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode]; + palette = (attrCode & 0x7) << 2; + texel = tileYLine; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]]; + this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel]]; + } + if (pixelPosition < pixelPositionEnd) { + chrCode = this.BGCHRBank1[++tileNumber]; + if (chrCode < this.gfxBackgroundBankOffset) { + chrCode |= 0x100; + } + attrCode = this.BGCHRBank2[tileNumber]; + tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode]; + palette = (attrCode & 0x7) << 2; + switch (pixelPositionEnd - pixelPosition) { + case 7: + this.frameBuffer[pixelPosition + 6] = this.gbcBGPalette[palette | tile[tileYLine | 6]]; + case 6: + this.frameBuffer[pixelPosition + 5] = this.gbcBGPalette[palette | tile[tileYLine | 5]]; + case 5: + this.frameBuffer[pixelPosition + 4] = this.gbcBGPalette[palette | tile[tileYLine | 4]]; + case 4: + this.frameBuffer[pixelPosition + 3] = this.gbcBGPalette[palette | tile[tileYLine | 3]]; + case 3: + this.frameBuffer[pixelPosition + 2] = this.gbcBGPalette[palette | tile[tileYLine | 2]]; + case 2: + this.frameBuffer[pixelPosition + 1] = this.gbcBGPalette[palette | tile[tileYLine | 1]]; + case 1: + this.frameBuffer[pixelPosition] = this.gbcBGPalette[palette | tile[tileYLine]]; + } + } + } + } + } +} +GameBoyCore.prototype.SpriteGBLayerRender = function (scanlineToRender) { + if (this.gfxSpriteShow) { //Are sprites enabled? + var lineAdjusted = scanlineToRender + 0x10; + var OAMAddress = 0xFE00; + var yoffset = 0; + var xcoord = 1; + var xCoordStart = 0; + var xCoordEnd = 0; + var attrCode = 0; + var palette = 0; + var tile = null; + var data = 0; + var spriteCount = 0; + var length = 0; + var currentPixel = 0; + var linePixel = 0; + //Clear our x-coord sort buffer: + while (xcoord < 168) { + this.sortBuffer[xcoord++] = 0xFF; + } + if (this.gfxSpriteNormalHeight) { + //Draw the visible sprites: + for (var length = this.findLowestSpriteDrawable(lineAdjusted, 0x7); spriteCount < length; ++spriteCount) { + OAMAddress = this.OAMAddressCache[spriteCount]; + yoffset = (lineAdjusted - this.memory[OAMAddress]) << 3; + attrCode = this.memory[OAMAddress | 3]; + palette = (attrCode & 0x10) >> 2; + tile = this.tileCache[((attrCode & 0x60) << 4) | this.memory[OAMAddress | 0x2]]; + linePixel = xCoordStart = this.memory[OAMAddress | 1]; + xCoordEnd = Math.min(168 - linePixel, 8); + xcoord = (linePixel > 7) ? 0 : (8 - linePixel); + for (currentPixel = this.pixelStart + ((linePixel > 8) ? (linePixel - 8) : 0); xcoord < xCoordEnd; ++xcoord, ++currentPixel, ++linePixel) { + if (this.sortBuffer[linePixel] > xCoordStart) { + if (this.frameBuffer[currentPixel] >= 0x2000000) { + data = tile[yoffset | xcoord]; + if (data > 0) { + this.frameBuffer[currentPixel] = this.OBJPalette[palette | data]; + this.sortBuffer[linePixel] = xCoordStart; + } + } + else if (this.frameBuffer[currentPixel] < 0x1000000) { + data = tile[yoffset | xcoord]; + if (data > 0 && attrCode < 0x80) { + this.frameBuffer[currentPixel] = this.OBJPalette[palette | data]; + this.sortBuffer[linePixel] = xCoordStart; + } + } + } + } + } + } + else { + //Draw the visible sprites: + for (var length = this.findLowestSpriteDrawable(lineAdjusted, 0xF); spriteCount < length; ++spriteCount) { + OAMAddress = this.OAMAddressCache[spriteCount]; + yoffset = (lineAdjusted - this.memory[OAMAddress]) << 3; + attrCode = this.memory[OAMAddress | 3]; + palette = (attrCode & 0x10) >> 2; + if ((attrCode & 0x40) == (0x40 & yoffset)) { + tile = this.tileCache[((attrCode & 0x60) << 4) | (this.memory[OAMAddress | 0x2] & 0xFE)]; + } + else { + tile = this.tileCache[((attrCode & 0x60) << 4) | this.memory[OAMAddress | 0x2] | 1]; + } + yoffset &= 0x3F; + linePixel = xCoordStart = this.memory[OAMAddress | 1]; + xCoordEnd = Math.min(168 - linePixel, 8); + xcoord = (linePixel > 7) ? 0 : (8 - linePixel); + for (currentPixel = this.pixelStart + ((linePixel > 8) ? (linePixel - 8) : 0); xcoord < xCoordEnd; ++xcoord, ++currentPixel, ++linePixel) { + if (this.sortBuffer[linePixel] > xCoordStart) { + if (this.frameBuffer[currentPixel] >= 0x2000000) { + data = tile[yoffset | xcoord]; + if (data > 0) { + this.frameBuffer[currentPixel] = this.OBJPalette[palette | data]; + this.sortBuffer[linePixel] = xCoordStart; + } + } + else if (this.frameBuffer[currentPixel] < 0x1000000) { + data = tile[yoffset | xcoord]; + if (data > 0 && attrCode < 0x80) { + this.frameBuffer[currentPixel] = this.OBJPalette[palette | data]; + this.sortBuffer[linePixel] = xCoordStart; + } + } + } + } + } + } + } +} +GameBoyCore.prototype.findLowestSpriteDrawable = function (scanlineToRender, drawableRange) { + var address = 0xFE00; + var spriteCount = 0; + var diff = 0; + while (address < 0xFEA0 && spriteCount < 10) { + diff = scanlineToRender - this.memory[address]; + if ((diff & drawableRange) == diff) { + this.OAMAddressCache[spriteCount++] = address; + } + address += 4; + } + return spriteCount; +} +GameBoyCore.prototype.SpriteGBCLayerRender = function (scanlineToRender) { + if (this.gfxSpriteShow) { //Are sprites enabled? + var OAMAddress = 0xFE00; + var lineAdjusted = scanlineToRender + 0x10; + var yoffset = 0; + var xcoord = 0; + var endX = 0; + var xCounter = 0; + var attrCode = 0; + var palette = 0; + var tile = null; + var data = 0; + var currentPixel = 0; + var spriteCount = 0; + if (this.gfxSpriteNormalHeight) { + for (; OAMAddress < 0xFEA0 && spriteCount < 10; OAMAddress += 4) { + yoffset = lineAdjusted - this.memory[OAMAddress]; + if ((yoffset & 0x7) == yoffset) { + xcoord = this.memory[OAMAddress | 1] - 8; + endX = Math.min(160, xcoord + 8); + attrCode = this.memory[OAMAddress | 3]; + palette = (attrCode & 7) << 2; + tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | this.memory[OAMAddress | 2]]; + xCounter = (xcoord > 0) ? xcoord : 0; + xcoord -= yoffset << 3; + for (currentPixel = this.pixelStart + xCounter; xCounter < endX; ++xCounter, ++currentPixel) { + if (this.frameBuffer[currentPixel] >= 0x2000000) { + data = tile[xCounter - xcoord]; + if (data > 0) { + this.frameBuffer[currentPixel] = this.gbcOBJPalette[palette | data]; + } + } + else if (this.frameBuffer[currentPixel] < 0x1000000) { + data = tile[xCounter - xcoord]; + if (data > 0 && attrCode < 0x80) { //Don't optimize for attrCode, as LICM-capable JITs should optimize its checks. + this.frameBuffer[currentPixel] = this.gbcOBJPalette[palette | data]; + } + } + } + ++spriteCount; + } + } + } + else { + for (; OAMAddress < 0xFEA0 && spriteCount < 10; OAMAddress += 4) { + yoffset = lineAdjusted - this.memory[OAMAddress]; + if ((yoffset & 0xF) == yoffset) { + xcoord = this.memory[OAMAddress | 1] - 8; + endX = Math.min(160, xcoord + 8); + attrCode = this.memory[OAMAddress | 3]; + palette = (attrCode & 7) << 2; + if ((attrCode & 0x40) == (0x40 & (yoffset << 3))) { + tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | (this.memory[OAMAddress | 0x2] & 0xFE)]; + } + else { + tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | this.memory[OAMAddress | 0x2] | 1]; + } + xCounter = (xcoord > 0) ? xcoord : 0; + xcoord -= (yoffset & 0x7) << 3; + for (currentPixel = this.pixelStart + xCounter; xCounter < endX; ++xCounter, ++currentPixel) { + if (this.frameBuffer[currentPixel] >= 0x2000000) { + data = tile[xCounter - xcoord]; + if (data > 0) { + this.frameBuffer[currentPixel] = this.gbcOBJPalette[palette | data]; + } + } + else if (this.frameBuffer[currentPixel] < 0x1000000) { + data = tile[xCounter - xcoord]; + if (data > 0 && attrCode < 0x80) { //Don't optimize for attrCode, as LICM-capable JITs should optimize its checks. + this.frameBuffer[currentPixel] = this.gbcOBJPalette[palette | data]; + } + } + } + ++spriteCount; + } + } + } + } +} +//Generate only a single tile line for the GB tile cache mode: +GameBoyCore.prototype.generateGBTileLine = function (address) { + var lineCopy = (this.memory[0x1 | address] << 8) | this.memory[0x9FFE & address]; + var tileBlock = this.tileCache[(address & 0x1FF0) >> 4]; + address = (address & 0xE) << 2; + tileBlock[address | 7] = ((lineCopy & 0x100) >> 7) | (lineCopy & 0x1); + tileBlock[address | 6] = ((lineCopy & 0x200) >> 8) | ((lineCopy & 0x2) >> 1); + tileBlock[address | 5] = ((lineCopy & 0x400) >> 9) | ((lineCopy & 0x4) >> 2); + tileBlock[address | 4] = ((lineCopy & 0x800) >> 10) | ((lineCopy & 0x8) >> 3); + tileBlock[address | 3] = ((lineCopy & 0x1000) >> 11) | ((lineCopy & 0x10) >> 4); + tileBlock[address | 2] = ((lineCopy & 0x2000) >> 12) | ((lineCopy & 0x20) >> 5); + tileBlock[address | 1] = ((lineCopy & 0x4000) >> 13) | ((lineCopy & 0x40) >> 6); + tileBlock[address] = ((lineCopy & 0x8000) >> 14) | ((lineCopy & 0x80) >> 7); +} +//Generate only a single tile line for the GBC tile cache mode (Bank 1): +GameBoyCore.prototype.generateGBCTileLineBank1 = function (address) { + var lineCopy = (this.memory[0x1 | address] << 8) | this.memory[0x9FFE & address]; + address &= 0x1FFE; + var tileBlock1 = this.tileCache[address >> 4]; + var tileBlock2 = this.tileCache[0x200 | (address >> 4)]; + var tileBlock3 = this.tileCache[0x400 | (address >> 4)]; + var tileBlock4 = this.tileCache[0x600 | (address >> 4)]; + address = (address & 0xE) << 2; + var addressFlipped = 0x38 - address; + tileBlock4[addressFlipped] = tileBlock2[address] = tileBlock3[addressFlipped | 7] = tileBlock1[address | 7] = ((lineCopy & 0x100) >> 7) | (lineCopy & 0x1); + tileBlock4[addressFlipped | 1] = tileBlock2[address | 1] = tileBlock3[addressFlipped | 6] = tileBlock1[address | 6] = ((lineCopy & 0x200) >> 8) | ((lineCopy & 0x2) >> 1); + tileBlock4[addressFlipped | 2] = tileBlock2[address | 2] = tileBlock3[addressFlipped | 5] = tileBlock1[address | 5] = ((lineCopy & 0x400) >> 9) | ((lineCopy & 0x4) >> 2); + tileBlock4[addressFlipped | 3] = tileBlock2[address | 3] = tileBlock3[addressFlipped | 4] = tileBlock1[address | 4] = ((lineCopy & 0x800) >> 10) | ((lineCopy & 0x8) >> 3); + tileBlock4[addressFlipped | 4] = tileBlock2[address | 4] = tileBlock3[addressFlipped | 3] = tileBlock1[address | 3] = ((lineCopy & 0x1000) >> 11) | ((lineCopy & 0x10) >> 4); + tileBlock4[addressFlipped | 5] = tileBlock2[address | 5] = tileBlock3[addressFlipped | 2] = tileBlock1[address | 2] = ((lineCopy & 0x2000) >> 12) | ((lineCopy & 0x20) >> 5); + tileBlock4[addressFlipped | 6] = tileBlock2[address | 6] = tileBlock3[addressFlipped | 1] = tileBlock1[address | 1] = ((lineCopy & 0x4000) >> 13) | ((lineCopy & 0x40) >> 6); + tileBlock4[addressFlipped | 7] = tileBlock2[address | 7] = tileBlock3[addressFlipped] = tileBlock1[address] = ((lineCopy & 0x8000) >> 14) | ((lineCopy & 0x80) >> 7); +} +//Generate all the flip combinations for a full GBC VRAM bank 1 tile: +GameBoyCore.prototype.generateGBCTileBank1 = function (vramAddress) { + var address = vramAddress >> 4; + var tileBlock1 = this.tileCache[address]; + var tileBlock2 = this.tileCache[0x200 | address]; + var tileBlock3 = this.tileCache[0x400 | address]; + var tileBlock4 = this.tileCache[0x600 | address]; + var lineCopy = 0; + vramAddress |= 0x8000; + address = 0; + var addressFlipped = 56; + do { + lineCopy = (this.memory[0x1 | vramAddress] << 8) | this.memory[vramAddress]; + tileBlock4[addressFlipped] = tileBlock2[address] = tileBlock3[addressFlipped | 7] = tileBlock1[address | 7] = ((lineCopy & 0x100) >> 7) | (lineCopy & 0x1); + tileBlock4[addressFlipped | 1] = tileBlock2[address | 1] = tileBlock3[addressFlipped | 6] = tileBlock1[address | 6] = ((lineCopy & 0x200) >> 8) | ((lineCopy & 0x2) >> 1); + tileBlock4[addressFlipped | 2] = tileBlock2[address | 2] = tileBlock3[addressFlipped | 5] = tileBlock1[address | 5] = ((lineCopy & 0x400) >> 9) | ((lineCopy & 0x4) >> 2); + tileBlock4[addressFlipped | 3] = tileBlock2[address | 3] = tileBlock3[addressFlipped | 4] = tileBlock1[address | 4] = ((lineCopy & 0x800) >> 10) | ((lineCopy & 0x8) >> 3); + tileBlock4[addressFlipped | 4] = tileBlock2[address | 4] = tileBlock3[addressFlipped | 3] = tileBlock1[address | 3] = ((lineCopy & 0x1000) >> 11) | ((lineCopy & 0x10) >> 4); + tileBlock4[addressFlipped | 5] = tileBlock2[address | 5] = tileBlock3[addressFlipped | 2] = tileBlock1[address | 2] = ((lineCopy & 0x2000) >> 12) | ((lineCopy & 0x20) >> 5); + tileBlock4[addressFlipped | 6] = tileBlock2[address | 6] = tileBlock3[addressFlipped | 1] = tileBlock1[address | 1] = ((lineCopy & 0x4000) >> 13) | ((lineCopy & 0x40) >> 6); + tileBlock4[addressFlipped | 7] = tileBlock2[address | 7] = tileBlock3[addressFlipped] = tileBlock1[address] = ((lineCopy & 0x8000) >> 14) | ((lineCopy & 0x80) >> 7); + address += 8; + addressFlipped -= 8; + vramAddress += 2; + } while (addressFlipped > -1); +} +//Generate only a single tile line for the GBC tile cache mode (Bank 2): +GameBoyCore.prototype.generateGBCTileLineBank2 = function (address) { + var lineCopy = (this.VRAM[0x1 | address] << 8) | this.VRAM[0x1FFE & address]; + var tileBlock1 = this.tileCache[0x800 | (address >> 4)]; + var tileBlock2 = this.tileCache[0xA00 | (address >> 4)]; + var tileBlock3 = this.tileCache[0xC00 | (address >> 4)]; + var tileBlock4 = this.tileCache[0xE00 | (address >> 4)]; + address = (address & 0xE) << 2; + var addressFlipped = 0x38 - address; + tileBlock4[addressFlipped] = tileBlock2[address] = tileBlock3[addressFlipped | 7] = tileBlock1[address | 7] = ((lineCopy & 0x100) >> 7) | (lineCopy & 0x1); + tileBlock4[addressFlipped | 1] = tileBlock2[address | 1] = tileBlock3[addressFlipped | 6] = tileBlock1[address | 6] = ((lineCopy & 0x200) >> 8) | ((lineCopy & 0x2) >> 1); + tileBlock4[addressFlipped | 2] = tileBlock2[address | 2] = tileBlock3[addressFlipped | 5] = tileBlock1[address | 5] = ((lineCopy & 0x400) >> 9) | ((lineCopy & 0x4) >> 2); + tileBlock4[addressFlipped | 3] = tileBlock2[address | 3] = tileBlock3[addressFlipped | 4] = tileBlock1[address | 4] = ((lineCopy & 0x800) >> 10) | ((lineCopy & 0x8) >> 3); + tileBlock4[addressFlipped | 4] = tileBlock2[address | 4] = tileBlock3[addressFlipped | 3] = tileBlock1[address | 3] = ((lineCopy & 0x1000) >> 11) | ((lineCopy & 0x10) >> 4); + tileBlock4[addressFlipped | 5] = tileBlock2[address | 5] = tileBlock3[addressFlipped | 2] = tileBlock1[address | 2] = ((lineCopy & 0x2000) >> 12) | ((lineCopy & 0x20) >> 5); + tileBlock4[addressFlipped | 6] = tileBlock2[address | 6] = tileBlock3[addressFlipped | 1] = tileBlock1[address | 1] = ((lineCopy & 0x4000) >> 13) | ((lineCopy & 0x40) >> 6); + tileBlock4[addressFlipped | 7] = tileBlock2[address | 7] = tileBlock3[addressFlipped] = tileBlock1[address] = ((lineCopy & 0x8000) >> 14) | ((lineCopy & 0x80) >> 7); +} +//Generate all the flip combinations for a full GBC VRAM bank 2 tile: +GameBoyCore.prototype.generateGBCTileBank2 = function (vramAddress) { + var address = vramAddress >> 4; + var tileBlock1 = this.tileCache[0x800 | address]; + var tileBlock2 = this.tileCache[0xA00 | address]; + var tileBlock3 = this.tileCache[0xC00 | address]; + var tileBlock4 = this.tileCache[0xE00 | address]; + var lineCopy = 0; + address = 0; + var addressFlipped = 56; + do { + lineCopy = (this.VRAM[0x1 | vramAddress] << 8) | this.VRAM[vramAddress]; + tileBlock4[addressFlipped] = tileBlock2[address] = tileBlock3[addressFlipped | 7] = tileBlock1[address | 7] = ((lineCopy & 0x100) >> 7) | (lineCopy & 0x1); + tileBlock4[addressFlipped | 1] = tileBlock2[address | 1] = tileBlock3[addressFlipped | 6] = tileBlock1[address | 6] = ((lineCopy & 0x200) >> 8) | ((lineCopy & 0x2) >> 1); + tileBlock4[addressFlipped | 2] = tileBlock2[address | 2] = tileBlock3[addressFlipped | 5] = tileBlock1[address | 5] = ((lineCopy & 0x400) >> 9) | ((lineCopy & 0x4) >> 2); + tileBlock4[addressFlipped | 3] = tileBlock2[address | 3] = tileBlock3[addressFlipped | 4] = tileBlock1[address | 4] = ((lineCopy & 0x800) >> 10) | ((lineCopy & 0x8) >> 3); + tileBlock4[addressFlipped | 4] = tileBlock2[address | 4] = tileBlock3[addressFlipped | 3] = tileBlock1[address | 3] = ((lineCopy & 0x1000) >> 11) | ((lineCopy & 0x10) >> 4); + tileBlock4[addressFlipped | 5] = tileBlock2[address | 5] = tileBlock3[addressFlipped | 2] = tileBlock1[address | 2] = ((lineCopy & 0x2000) >> 12) | ((lineCopy & 0x20) >> 5); + tileBlock4[addressFlipped | 6] = tileBlock2[address | 6] = tileBlock3[addressFlipped | 1] = tileBlock1[address | 1] = ((lineCopy & 0x4000) >> 13) | ((lineCopy & 0x40) >> 6); + tileBlock4[addressFlipped | 7] = tileBlock2[address | 7] = tileBlock3[addressFlipped] = tileBlock1[address] = ((lineCopy & 0x8000) >> 14) | ((lineCopy & 0x80) >> 7); + address += 8; + addressFlipped -= 8; + vramAddress += 2; + } while (addressFlipped > -1); +} +//Generate only a single tile line for the GB tile cache mode (OAM accessible range): +GameBoyCore.prototype.generateGBOAMTileLine = function (address) { + var lineCopy = (this.memory[0x1 | address] << 8) | this.memory[0x9FFE & address]; + address &= 0x1FFE; + var tileBlock1 = this.tileCache[address >> 4]; + var tileBlock2 = this.tileCache[0x200 | (address >> 4)]; + var tileBlock3 = this.tileCache[0x400 | (address >> 4)]; + var tileBlock4 = this.tileCache[0x600 | (address >> 4)]; + address = (address & 0xE) << 2; + var addressFlipped = 0x38 - address; + tileBlock4[addressFlipped] = tileBlock2[address] = tileBlock3[addressFlipped | 7] = tileBlock1[address | 7] = ((lineCopy & 0x100) >> 7) | (lineCopy & 0x1); + tileBlock4[addressFlipped | 1] = tileBlock2[address | 1] = tileBlock3[addressFlipped | 6] = tileBlock1[address | 6] = ((lineCopy & 0x200) >> 8) | ((lineCopy & 0x2) >> 1); + tileBlock4[addressFlipped | 2] = tileBlock2[address | 2] = tileBlock3[addressFlipped | 5] = tileBlock1[address | 5] = ((lineCopy & 0x400) >> 9) | ((lineCopy & 0x4) >> 2); + tileBlock4[addressFlipped | 3] = tileBlock2[address | 3] = tileBlock3[addressFlipped | 4] = tileBlock1[address | 4] = ((lineCopy & 0x800) >> 10) | ((lineCopy & 0x8) >> 3); + tileBlock4[addressFlipped | 4] = tileBlock2[address | 4] = tileBlock3[addressFlipped | 3] = tileBlock1[address | 3] = ((lineCopy & 0x1000) >> 11) | ((lineCopy & 0x10) >> 4); + tileBlock4[addressFlipped | 5] = tileBlock2[address | 5] = tileBlock3[addressFlipped | 2] = tileBlock1[address | 2] = ((lineCopy & 0x2000) >> 12) | ((lineCopy & 0x20) >> 5); + tileBlock4[addressFlipped | 6] = tileBlock2[address | 6] = tileBlock3[addressFlipped | 1] = tileBlock1[address | 1] = ((lineCopy & 0x4000) >> 13) | ((lineCopy & 0x40) >> 6); + tileBlock4[addressFlipped | 7] = tileBlock2[address | 7] = tileBlock3[addressFlipped] = tileBlock1[address] = ((lineCopy & 0x8000) >> 14) | ((lineCopy & 0x80) >> 7); +} +GameBoyCore.prototype.graphicsJIT = function () { + if (this.LCDisOn) { + this.totalLinesPassed = 0; //Mark frame for ensuring a JIT pass for the next framebuffer output. + this.graphicsJITScanlineGroup(); + } +} +GameBoyCore.prototype.graphicsJITVBlank = function () { + //JIT the graphics to v-blank framing: + this.totalLinesPassed += this.queuedScanLines; + this.graphicsJITScanlineGroup(); +} +GameBoyCore.prototype.graphicsJITScanlineGroup = function () { + //Normal rendering JIT, where we try to do groups of scanlines at once: + while (this.queuedScanLines > 0) { + this.renderScanLine(this.lastUnrenderedLine); + if (this.lastUnrenderedLine < 143) { + ++this.lastUnrenderedLine; + } + else { + this.lastUnrenderedLine = 0; + } + --this.queuedScanLines; + } +} +GameBoyCore.prototype.incrementScanLineQueue = function () { + if (this.queuedScanLines < 144) { + ++this.queuedScanLines; + } + else { + this.currentX = 0; + this.midScanlineOffset = -1; + if (this.lastUnrenderedLine < 143) { + ++this.lastUnrenderedLine; + } + else { + this.lastUnrenderedLine = 0; + } + } +} +GameBoyCore.prototype.midScanLineJIT = function () { + this.graphicsJIT(); + this.renderMidScanLine(); +} +//Check for the highest priority IRQ to fire: +GameBoyCore.prototype.launchIRQ = function () { + var bitShift = 0; + var testbit = 1; + do { + //Check to see if an interrupt is enabled AND requested. + if ((testbit & this.IRQLineMatched) == testbit) { + this.IME = false; //Reset the interrupt enabling. + this.interruptsRequested -= testbit; //Reset the interrupt request. + this.IRQLineMatched = 0; //Reset the IRQ assertion. + //Interrupts have a certain clock cycle length: + this.CPUTicks = 20; + //Set the stack pointer to the current program counter value: + this.stackPointer = (this.stackPointer - 1) & 0xFFFF; + this.memoryWriter[this.stackPointer](this, this.stackPointer, this.programCounter >> 8); + this.stackPointer = (this.stackPointer - 1) & 0xFFFF; + this.memoryWriter[this.stackPointer](this, this.stackPointer, this.programCounter & 0xFF); + //Set the program counter to the interrupt's address: + this.programCounter = 0x40 | (bitShift << 3); + //Clock the core for mid-instruction updates: + this.updateCore(); + return; //We only want the highest priority interrupt. + } + testbit = 1 << ++bitShift; + } while (bitShift < 5); +} +/* + Check for IRQs to be fired while not in HALT: +*/ +GameBoyCore.prototype.checkIRQMatching = function () { + if (this.IME) { + this.IRQLineMatched = this.interruptsEnabled & this.interruptsRequested & 0x1F; + } +} +/* + Handle the HALT opcode by predicting all IRQ cases correctly, + then selecting the next closest IRQ firing from the prediction to + clock up to. This prevents hacky looping that doesn't predict, but + instead just clocks through the core update procedure by one which + is very slow. Not many emulators do this because they have to cover + all the IRQ prediction cases and they usually get them wrong. +*/ +GameBoyCore.prototype.calculateHALTPeriod = function () { + //Initialize our variables and start our prediction: + if (!this.halt) { + this.halt = true; + var currentClocks = -1; + var temp_var = 0; + if (this.LCDisOn) { + //If the LCD is enabled, then predict the LCD IRQs enabled: + if ((this.interruptsEnabled & 0x1) == 0x1) { + currentClocks = ((456 * (((this.modeSTAT == 1) ? 298 : 144) - this.actualScanLine)) - this.LCDTicks) << this.doubleSpeedShifter; + } + if ((this.interruptsEnabled & 0x2) == 0x2) { + if (this.mode0TriggerSTAT) { + temp_var = (this.clocksUntilMode0() - this.LCDTicks) << this.doubleSpeedShifter; + if (temp_var <= currentClocks || currentClocks == -1) { + currentClocks = temp_var; + } + } + if (this.mode1TriggerSTAT && (this.interruptsEnabled & 0x1) == 0) { + temp_var = ((456 * (((this.modeSTAT == 1) ? 298 : 144) - this.actualScanLine)) - this.LCDTicks) << this.doubleSpeedShifter; + if (temp_var <= currentClocks || currentClocks == -1) { + currentClocks = temp_var; + } + } + if (this.mode2TriggerSTAT) { + temp_var = (((this.actualScanLine >= 143) ? (456 * (154 - this.actualScanLine)) : 456) - this.LCDTicks) << this.doubleSpeedShifter; + if (temp_var <= currentClocks || currentClocks == -1) { + currentClocks = temp_var; + } + } + if (this.LYCMatchTriggerSTAT && this.memory[0xFF45] <= 153) { + temp_var = (this.clocksUntilLYCMatch() - this.LCDTicks) << this.doubleSpeedShifter; + if (temp_var <= currentClocks || currentClocks == -1) { + currentClocks = temp_var; + } + } + } + } + if (this.TIMAEnabled && (this.interruptsEnabled & 0x4) == 0x4) { + //CPU timer IRQ prediction: + temp_var = ((0x100 - this.memory[0xFF05]) * this.TACClocker) - this.timerTicks; + if (temp_var <= currentClocks || currentClocks == -1) { + currentClocks = temp_var; + } + } + if (this.serialTimer > 0 && (this.interruptsEnabled & 0x8) == 0x8) { + //Serial IRQ prediction: + if (this.serialTimer <= currentClocks || currentClocks == -1) { + currentClocks = this.serialTimer; + } + } + } + else { + var currentClocks = this.remainingClocks; + } + var maxClocks = (this.CPUCyclesTotal - this.emulatorTicks) << this.doubleSpeedShifter; + if (currentClocks >= 0) { + if (currentClocks <= maxClocks) { + //Exit out of HALT normally: + this.CPUTicks = Math.max(currentClocks, this.CPUTicks); + this.updateCoreFull(); + this.halt = false; + this.CPUTicks = 0; + } + else { + //Still in HALT, clock only up to the clocks specified per iteration: + this.CPUTicks = Math.max(maxClocks, this.CPUTicks); + this.remainingClocks = currentClocks - this.CPUTicks; + } + } + else { + //Still in HALT, clock only up to the clocks specified per iteration: + //Will stay in HALT forever (Stuck in HALT forever), but the APU and LCD are still clocked, so don't pause: + this.CPUTicks += maxClocks; + } +} +//Memory Reading: +GameBoyCore.prototype.memoryRead = function (address) { + //Act as a wrapper for reading the returns from the compiled jumps to memory. + return this.memoryReader[address](this, address); //This seems to be faster than the usual if/else. +} +GameBoyCore.prototype.memoryHighRead = function (address) { + //Act as a wrapper for reading the returns from the compiled jumps to memory. + return this.memoryHighReader[address](this, address); //This seems to be faster than the usual if/else. +} +GameBoyCore.prototype.memoryReadJumpCompile = function () { + //Faster in some browsers, since we are doing less conditionals overall by implementing them in advance. + for (var index = 0x0000; index <= 0xFFFF; index++) { + if (index < 0x4000) { + this.memoryReader[index] = this.memoryReadNormal; + } + else if (index < 0x8000) { + this.memoryReader[index] = this.memoryReadROM; + } + else if (index < 0x9800) { + this.memoryReader[index] = (this.cGBC) ? this.VRAMDATAReadCGBCPU : this.VRAMDATAReadDMGCPU; + } + else if (index < 0xA000) { + this.memoryReader[index] = (this.cGBC) ? this.VRAMCHRReadCGBCPU : this.VRAMCHRReadDMGCPU; + } + else if (index >= 0xA000 && index < 0xC000) { + if ((this.numRAMBanks == 1 / 16 && index < 0xA200) || this.numRAMBanks >= 1) { + if (this.cMBC7) { + this.memoryReader[index] = this.memoryReadMBC7; + } + else if (!this.cMBC3) { + this.memoryReader[index] = this.memoryReadMBC; + } + else { + //MBC3 RTC + RAM: + this.memoryReader[index] = this.memoryReadMBC3; + } + } + else { + this.memoryReader[index] = this.memoryReadBAD; + } + } + else if (index >= 0xC000 && index < 0xE000) { + if (!this.cGBC || index < 0xD000) { + this.memoryReader[index] = this.memoryReadNormal; + } + else { + this.memoryReader[index] = this.memoryReadGBCMemory; + } + } + else if (index >= 0xE000 && index < 0xFE00) { + if (!this.cGBC || index < 0xF000) { + this.memoryReader[index] = this.memoryReadECHONormal; + } + else { + this.memoryReader[index] = this.memoryReadECHOGBCMemory; + } + } + else if (index < 0xFEA0) { + this.memoryReader[index] = this.memoryReadOAM; + } + else if (this.cGBC && index >= 0xFEA0 && index < 0xFF00) { + this.memoryReader[index] = this.memoryReadNormal; + } + else if (index >= 0xFF00) { + switch (index) { + case 0xFF00: + //JOYPAD: + this.memoryHighReader[0] = this.memoryReader[0xFF00] = function (parentObj, address) { + return 0xC0 | parentObj.memory[0xFF00]; //Top nibble returns as set. + } + break; + case 0xFF01: + //SB + this.memoryHighReader[0x01] = this.memoryReader[0xFF01] = function (parentObj, address) { + return (parentObj.memory[0xFF02] < 0x80) ? parentObj.memory[0xFF01] : 0xFF; + } + break; + case 0xFF02: + //SC + if (this.cGBC) { + this.memoryHighReader[0x02] = this.memoryReader[0xFF02] = function (parentObj, address) { + return ((parentObj.serialTimer <= 0) ? 0x7C : 0xFC) | parentObj.memory[0xFF02]; + } + } + else { + this.memoryHighReader[0x02] = this.memoryReader[0xFF02] = function (parentObj, address) { + return ((parentObj.serialTimer <= 0) ? 0x7E : 0xFE) | parentObj.memory[0xFF02]; + } + } + break; + case 0xFF04: + //DIV + this.memoryHighReader[0x04] = this.memoryReader[0xFF04] = function (parentObj, address) { + parentObj.memory[0xFF04] = (parentObj.memory[0xFF04] + (parentObj.DIVTicks >> 8)) & 0xFF; + parentObj.DIVTicks &= 0xFF; + return parentObj.memory[0xFF04]; + + } + break; + case 0xFF07: + this.memoryHighReader[0x07] = this.memoryReader[0xFF07] = function (parentObj, address) { + return 0xF8 | parentObj.memory[0xFF07]; + } + break; + case 0xFF0F: + //IF + this.memoryHighReader[0x0F] = this.memoryReader[0xFF0F] = function (parentObj, address) { + return 0xE0 | parentObj.interruptsRequested; + } + break; + case 0xFF10: + this.memoryHighReader[0x10] = this.memoryReader[0xFF10] = function (parentObj, address) { + return 0x80 | parentObj.memory[0xFF10]; + } + break; + case 0xFF11: + this.memoryHighReader[0x11] = this.memoryReader[0xFF11] = function (parentObj, address) { + return 0x3F | parentObj.memory[0xFF11]; + } + break; + case 0xFF13: + this.memoryHighReader[0x13] = this.memoryReader[0xFF13] = this.memoryReadBAD; + break; + case 0xFF14: + this.memoryHighReader[0x14] = this.memoryReader[0xFF14] = function (parentObj, address) { + return 0xBF | parentObj.memory[0xFF14]; + } + break; + case 0xFF16: + this.memoryHighReader[0x16] = this.memoryReader[0xFF16] = function (parentObj, address) { + return 0x3F | parentObj.memory[0xFF16]; + } + break; + case 0xFF18: + this.memoryHighReader[0x18] = this.memoryReader[0xFF18] = this.memoryReadBAD; + break; + case 0xFF19: + this.memoryHighReader[0x19] = this.memoryReader[0xFF19] = function (parentObj, address) { + return 0xBF | parentObj.memory[0xFF19]; + } + break; + case 0xFF1A: + this.memoryHighReader[0x1A] = this.memoryReader[0xFF1A] = function (parentObj, address) { + return 0x7F | parentObj.memory[0xFF1A]; + } + break; + case 0xFF1B: + this.memoryHighReader[0x1B] = this.memoryReader[0xFF1B] = this.memoryReadBAD; + break; + case 0xFF1C: + this.memoryHighReader[0x1C] = this.memoryReader[0xFF1C] = function (parentObj, address) { + return 0x9F | parentObj.memory[0xFF1C]; + } + break; + case 0xFF1D: + this.memoryHighReader[0x1D] = this.memoryReader[0xFF1D] = function (parentObj, address) { + return 0xFF; + } + break; + case 0xFF1E: + this.memoryHighReader[0x1E] = this.memoryReader[0xFF1E] = function (parentObj, address) { + return 0xBF | parentObj.memory[0xFF1E]; + } + break; + case 0xFF1F: + case 0xFF20: + this.memoryHighReader[index & 0xFF] = this.memoryReader[index] = this.memoryReadBAD; + break; + case 0xFF23: + this.memoryHighReader[0x23] = this.memoryReader[0xFF23] = function (parentObj, address) { + return 0xBF | parentObj.memory[0xFF23]; + } + break; + case 0xFF26: + this.memoryHighReader[0x26] = this.memoryReader[0xFF26] = function (parentObj, address) { + parentObj.audioJIT(); + return 0x70 | parentObj.memory[0xFF26]; + } + break; + case 0xFF27: + case 0xFF28: + case 0xFF29: + case 0xFF2A: + case 0xFF2B: + case 0xFF2C: + case 0xFF2D: + case 0xFF2E: + case 0xFF2F: + this.memoryHighReader[index & 0xFF] = this.memoryReader[index] = this.memoryReadBAD; + break; + case 0xFF30: + case 0xFF31: + case 0xFF32: + case 0xFF33: + case 0xFF34: + case 0xFF35: + case 0xFF36: + case 0xFF37: + case 0xFF38: + case 0xFF39: + case 0xFF3A: + case 0xFF3B: + case 0xFF3C: + case 0xFF3D: + case 0xFF3E: + case 0xFF3F: + this.memoryReader[index] = function (parentObj, address) { + return (parentObj.channel3canPlay) ? parentObj.memory[0xFF00 | (parentObj.channel3lastSampleLookup >> 1)] : parentObj.memory[address]; + } + this.memoryHighReader[index & 0xFF] = function (parentObj, address) { + return (parentObj.channel3canPlay) ? parentObj.memory[0xFF00 | (parentObj.channel3lastSampleLookup >> 1)] : parentObj.memory[0xFF00 | address]; + } + break; + case 0xFF41: + this.memoryHighReader[0x41] = this.memoryReader[0xFF41] = function (parentObj, address) { + return 0x80 | parentObj.memory[0xFF41] | parentObj.modeSTAT; + } + break; + case 0xFF42: + this.memoryHighReader[0x42] = this.memoryReader[0xFF42] = function (parentObj, address) { + return parentObj.backgroundY; + } + break; + case 0xFF43: + this.memoryHighReader[0x43] = this.memoryReader[0xFF43] = function (parentObj, address) { + return parentObj.backgroundX; + } + break; + case 0xFF44: + this.memoryHighReader[0x44] = this.memoryReader[0xFF44] = function (parentObj, address) { + return ((parentObj.LCDisOn) ? parentObj.memory[0xFF44] : 0); + } + break; + case 0xFF4A: + //WY + this.memoryHighReader[0x4A] = this.memoryReader[0xFF4A] = function (parentObj, address) { + return parentObj.windowY; + } + break; + case 0xFF4F: + this.memoryHighReader[0x4F] = this.memoryReader[0xFF4F] = function (parentObj, address) { + return parentObj.currVRAMBank; + } + break; + case 0xFF55: + if (this.cGBC) { + this.memoryHighReader[0x55] = this.memoryReader[0xFF55] = function (parentObj, address) { + if (!parentObj.LCDisOn && parentObj.hdmaRunning) { //Undocumented behavior alert: HDMA becomes GDMA when LCD is off (Worms Armageddon Fix). + //DMA + parentObj.DMAWrite((parentObj.memory[0xFF55] & 0x7F) + 1); + parentObj.memory[0xFF55] = 0xFF; //Transfer completed. + parentObj.hdmaRunning = false; + } + return parentObj.memory[0xFF55]; + } + } + else { + this.memoryReader[0xFF55] = this.memoryReadNormal; + this.memoryHighReader[0x55] = this.memoryHighReadNormal; + } + break; + case 0xFF56: + if (this.cGBC) { + this.memoryHighReader[0x56] = this.memoryReader[0xFF56] = function (parentObj, address) { + //Return IR "not connected" status: + return 0x3C | ((parentObj.memory[0xFF56] >= 0xC0) ? (0x2 | (parentObj.memory[0xFF56] & 0xC1)) : (parentObj.memory[0xFF56] & 0xC3)); + } + } + else { + this.memoryReader[0xFF56] = this.memoryReadNormal; + this.memoryHighReader[0x56] = this.memoryHighReadNormal; + } + break; + case 0xFF6C: + if (this.cGBC) { + this.memoryHighReader[0x6C] = this.memoryReader[0xFF6C] = function (parentObj, address) { + return 0xFE | parentObj.memory[0xFF6C]; + } + } + else { + this.memoryHighReader[0x6C] = this.memoryReader[0xFF6C] = this.memoryReadBAD; + } + break; + case 0xFF70: + if (this.cGBC) { + //SVBK + this.memoryHighReader[0x70] = this.memoryReader[0xFF70] = function (parentObj, address) { + return 0x40 | parentObj.memory[0xFF70]; + } + } + else { + this.memoryHighReader[0x70] = this.memoryReader[0xFF70] = this.memoryReadBAD; + } + break; + case 0xFF75: + this.memoryHighReader[0x75] = this.memoryReader[0xFF75] = function (parentObj, address) { + return 0x8F | parentObj.memory[0xFF75]; + } + break; + case 0xFF76: + case 0xFF77: + this.memoryHighReader[index & 0xFF] = this.memoryReader[index] = function (parentObj, address) { + return 0; + } + break; + case 0xFFFF: + //IE + this.memoryHighReader[0xFF] = this.memoryReader[0xFFFF] = function (parentObj, address) { + return parentObj.interruptsEnabled; + } + break; + default: + this.memoryReader[index] = this.memoryReadNormal; + this.memoryHighReader[index & 0xFF] = this.memoryHighReadNormal; + } + } + else { + this.memoryReader[index] = this.memoryReadBAD; + } + } +} +GameBoyCore.prototype.memoryReadNormal = function (parentObj, address) { + return parentObj.memory[address]; +} +GameBoyCore.prototype.memoryHighReadNormal = function (parentObj, address) { + return parentObj.memory[0xFF00 | address]; +} +GameBoyCore.prototype.memoryReadROM = function (parentObj, address) { + return parentObj.ROM[parentObj.currentROMBank + address]; +} +GameBoyCore.prototype.memoryReadMBC = function (parentObj, address) { + //Switchable RAM + if (parentObj.MBCRAMBanksEnabled || settings[10]) { + return parentObj.MBCRam[address + parentObj.currMBCRAMBankPosition]; + } + //cout("Reading from disabled RAM.", 1); + return 0xFF; +} +GameBoyCore.prototype.memoryReadMBC7 = function (parentObj, address) { + //Switchable RAM + if (parentObj.MBCRAMBanksEnabled || settings[10]) { + switch (address) { + case 0xA000: + case 0xA060: + case 0xA070: + return 0; + case 0xA080: + //TODO: Gyro Control Register + return 0; + case 0xA050: + //Y High Byte + return parentObj.highY; + case 0xA040: + //Y Low Byte + return parentObj.lowY; + case 0xA030: + //X High Byte + return parentObj.highX; + case 0xA020: + //X Low Byte: + return parentObj.lowX; + default: + return parentObj.MBCRam[address + parentObj.currMBCRAMBankPosition]; + } + } + //cout("Reading from disabled RAM.", 1); + return 0xFF; +} +GameBoyCore.prototype.memoryReadMBC3 = function (parentObj, address) { + //Switchable RAM + if (parentObj.MBCRAMBanksEnabled || settings[10]) { + switch (parentObj.currMBCRAMBank) { + case 0x00: + case 0x01: + case 0x02: + case 0x03: + return parentObj.MBCRam[address + parentObj.currMBCRAMBankPosition]; + break; + case 0x08: + return parentObj.latchedSeconds; + break; + case 0x09: + return parentObj.latchedMinutes; + break; + case 0x0A: + return parentObj.latchedHours; + break; + case 0x0B: + return parentObj.latchedLDays; + break; + case 0x0C: + return (((parentObj.RTCDayOverFlow) ? 0x80 : 0) + ((parentObj.RTCHALT) ? 0x40 : 0)) + parentObj.latchedHDays; + } + } + //cout("Reading from invalid or disabled RAM.", 1); + return 0xFF; +} +GameBoyCore.prototype.memoryReadGBCMemory = function (parentObj, address) { + return parentObj.GBCMemory[address + parentObj.gbcRamBankPosition]; +} +GameBoyCore.prototype.memoryReadOAM = function (parentObj, address) { + return (parentObj.modeSTAT > 1) ? 0xFF : parentObj.memory[address]; +} +GameBoyCore.prototype.memoryReadECHOGBCMemory = function (parentObj, address) { + return parentObj.GBCMemory[address + parentObj.gbcRamBankPositionECHO]; +} +GameBoyCore.prototype.memoryReadECHONormal = function (parentObj, address) { + return parentObj.memory[address - 0x2000]; +} +GameBoyCore.prototype.memoryReadBAD = function (parentObj, address) { + return 0xFF; +} +GameBoyCore.prototype.VRAMDATAReadCGBCPU = function (parentObj, address) { + //CPU Side Reading The VRAM (Optimized for GameBoy Color) + return (parentObj.modeSTAT > 2) ? 0xFF : ((parentObj.currVRAMBank == 0) ? parentObj.memory[address] : parentObj.VRAM[address & 0x1FFF]); +} +GameBoyCore.prototype.VRAMDATAReadDMGCPU = function (parentObj, address) { + //CPU Side Reading The VRAM (Optimized for classic GameBoy) + return (parentObj.modeSTAT > 2) ? 0xFF : parentObj.memory[address]; +} +GameBoyCore.prototype.VRAMCHRReadCGBCPU = function (parentObj, address) { + //CPU Side Reading the Character Data Map: + return (parentObj.modeSTAT > 2) ? 0xFF : parentObj.BGCHRCurrentBank[address & 0x7FF]; +} +GameBoyCore.prototype.VRAMCHRReadDMGCPU = function (parentObj, address) { + //CPU Side Reading the Character Data Map: + return (parentObj.modeSTAT > 2) ? 0xFF : parentObj.BGCHRBank1[address & 0x7FF]; +} +GameBoyCore.prototype.setCurrentMBC1ROMBank = function () { + //Read the cartridge ROM data from RAM memory: + switch (this.ROMBank1offs) { + case 0x00: + case 0x20: + case 0x40: + case 0x60: + //Bank calls for 0x00, 0x20, 0x40, and 0x60 are really for 0x01, 0x21, 0x41, and 0x61. + this.currentROMBank = (this.ROMBank1offs % this.ROMBankEdge) << 14; + break; + default: + this.currentROMBank = ((this.ROMBank1offs % this.ROMBankEdge) - 1) << 14; + } +} +GameBoyCore.prototype.setCurrentMBC2AND3ROMBank = function () { + //Read the cartridge ROM data from RAM memory: + //Only map bank 0 to bank 1 here (MBC2 is like MBC1, but can only do 16 banks, so only the bank 0 quirk appears for MBC2): + this.currentROMBank = Math.max((this.ROMBank1offs % this.ROMBankEdge) - 1, 0) << 14; +} +GameBoyCore.prototype.setCurrentMBC5ROMBank = function () { + //Read the cartridge ROM data from RAM memory: + this.currentROMBank = ((this.ROMBank1offs % this.ROMBankEdge) - 1) << 14; +} +//Memory Writing: +GameBoyCore.prototype.memoryWrite = function (address, data) { + //Act as a wrapper for writing by compiled jumps to specific memory writing functions. + this.memoryWriter[address](this, address, data); +} +//0xFFXX fast path: +GameBoyCore.prototype.memoryHighWrite = function (address, data) { + //Act as a wrapper for writing by compiled jumps to specific memory writing functions. + this.memoryHighWriter[address](this, address, data); +} +GameBoyCore.prototype.memoryWriteJumpCompile = function () { + //Faster in some browsers, since we are doing less conditionals overall by implementing them in advance. + for (var index = 0x0000; index <= 0xFFFF; index++) { + if (index < 0x8000) { + if (this.cMBC1) { + if (index < 0x2000) { + this.memoryWriter[index] = this.MBCWriteEnable; + } + else if (index < 0x4000) { + this.memoryWriter[index] = this.MBC1WriteROMBank; + } + else if (index < 0x6000) { + this.memoryWriter[index] = this.MBC1WriteRAMBank; + } + else { + this.memoryWriter[index] = this.MBC1WriteType; + } + } + else if (this.cMBC2) { + if (index < 0x1000) { + this.memoryWriter[index] = this.MBCWriteEnable; + } + else if (index >= 0x2100 && index < 0x2200) { + this.memoryWriter[index] = this.MBC2WriteROMBank; + } + else { + this.memoryWriter[index] = this.cartIgnoreWrite; + } + } + else if (this.cMBC3) { + if (index < 0x2000) { + this.memoryWriter[index] = this.MBCWriteEnable; + } + else if (index < 0x4000) { + this.memoryWriter[index] = this.MBC3WriteROMBank; + } + else if (index < 0x6000) { + this.memoryWriter[index] = this.MBC3WriteRAMBank; + } + else { + this.memoryWriter[index] = this.MBC3WriteRTCLatch; + } + } + else if (this.cMBC5 || this.cRUMBLE || this.cMBC7) { + if (index < 0x2000) { + this.memoryWriter[index] = this.MBCWriteEnable; + } + else if (index < 0x3000) { + this.memoryWriter[index] = this.MBC5WriteROMBankLow; + } + else if (index < 0x4000) { + this.memoryWriter[index] = this.MBC5WriteROMBankHigh; + } + else if (index < 0x6000) { + this.memoryWriter[index] = (this.cRUMBLE) ? this.RUMBLEWriteRAMBank : this.MBC5WriteRAMBank; + } + else { + this.memoryWriter[index] = this.cartIgnoreWrite; + } + } + else if (this.cHuC3) { + if (index < 0x2000) { + this.memoryWriter[index] = this.MBCWriteEnable; + } + else if (index < 0x4000) { + this.memoryWriter[index] = this.MBC3WriteROMBank; + } + else if (index < 0x6000) { + this.memoryWriter[index] = this.HuC3WriteRAMBank; + } + else { + this.memoryWriter[index] = this.cartIgnoreWrite; + } + } + else { + this.memoryWriter[index] = this.cartIgnoreWrite; + } + } + else if (index < 0x9000) { + this.memoryWriter[index] = (this.cGBC) ? this.VRAMGBCDATAWrite : this.VRAMGBDATAWrite; + } + else if (index < 0x9800) { + this.memoryWriter[index] = (this.cGBC) ? this.VRAMGBCDATAWrite : this.VRAMGBDATAUpperWrite; + } + else if (index < 0xA000) { + this.memoryWriter[index] = (this.cGBC) ? this.VRAMGBCCHRMAPWrite : this.VRAMGBCHRMAPWrite; + } + else if (index < 0xC000) { + if ((this.numRAMBanks == 1 / 16 && index < 0xA200) || this.numRAMBanks >= 1) { + if (!this.cMBC3) { + this.memoryWriter[index] = this.memoryWriteMBCRAM; + } + else { + //MBC3 RTC + RAM: + this.memoryWriter[index] = this.memoryWriteMBC3RAM; + } + } + else { + this.memoryWriter[index] = this.cartIgnoreWrite; + } + } + else if (index < 0xE000) { + if (this.cGBC && index >= 0xD000) { + this.memoryWriter[index] = this.memoryWriteGBCRAM; + } + else { + this.memoryWriter[index] = this.memoryWriteNormal; + } + } + else if (index < 0xFE00) { + if (this.cGBC && index >= 0xF000) { + this.memoryWriter[index] = this.memoryWriteECHOGBCRAM; + } + else { + this.memoryWriter[index] = this.memoryWriteECHONormal; + } + } + else if (index <= 0xFEA0) { + this.memoryWriter[index] = this.memoryWriteOAMRAM; + } + else if (index < 0xFF00) { + if (this.cGBC) { //Only GBC has access to this RAM. + this.memoryWriter[index] = this.memoryWriteNormal; + } + else { + this.memoryWriter[index] = this.cartIgnoreWrite; + } + } + else { + //Start the I/O initialization by filling in the slots as normal memory: + this.memoryWriter[index] = this.memoryWriteNormal; + this.memoryHighWriter[index & 0xFF] = this.memoryHighWriteNormal; + } + } + this.registerWriteJumpCompile(); //Compile the I/O write functions separately... +} +GameBoyCore.prototype.MBCWriteEnable = function (parentObj, address, data) { + //MBC RAM Bank Enable/Disable: + parentObj.MBCRAMBanksEnabled = ((data & 0x0F) == 0x0A); //If lower nibble is 0x0A, then enable, otherwise disable. +} +GameBoyCore.prototype.MBC1WriteROMBank = function (parentObj, address, data) { + //MBC1 ROM bank switching: + parentObj.ROMBank1offs = (parentObj.ROMBank1offs & 0x60) | (data & 0x1F); + parentObj.setCurrentMBC1ROMBank(); +} +GameBoyCore.prototype.MBC1WriteRAMBank = function (parentObj, address, data) { + //MBC1 RAM bank switching + if (parentObj.MBC1Mode) { + //4/32 Mode + parentObj.currMBCRAMBank = data & 0x03; + parentObj.currMBCRAMBankPosition = (parentObj.currMBCRAMBank << 13) - 0xA000; + } + else { + //16/8 Mode + parentObj.ROMBank1offs = ((data & 0x03) << 5) | (parentObj.ROMBank1offs & 0x1F); + parentObj.setCurrentMBC1ROMBank(); + } +} +GameBoyCore.prototype.MBC1WriteType = function (parentObj, address, data) { + //MBC1 mode setting: + parentObj.MBC1Mode = ((data & 0x1) == 0x1); + if (parentObj.MBC1Mode) { + parentObj.ROMBank1offs &= 0x1F; + parentObj.setCurrentMBC1ROMBank(); + } + else { + parentObj.currMBCRAMBank = 0; + parentObj.currMBCRAMBankPosition = -0xA000; + } +} +GameBoyCore.prototype.MBC2WriteROMBank = function (parentObj, address, data) { + //MBC2 ROM bank switching: + parentObj.ROMBank1offs = data & 0x0F; + parentObj.setCurrentMBC2AND3ROMBank(); +} +GameBoyCore.prototype.MBC3WriteROMBank = function (parentObj, address, data) { + //MBC3 ROM bank switching: + parentObj.ROMBank1offs = data & 0x7F; + parentObj.setCurrentMBC2AND3ROMBank(); +} +GameBoyCore.prototype.MBC3WriteRAMBank = function (parentObj, address, data) { + parentObj.currMBCRAMBank = data; + if (data < 4) { + //MBC3 RAM bank switching + parentObj.currMBCRAMBankPosition = (parentObj.currMBCRAMBank << 13) - 0xA000; + } +} +GameBoyCore.prototype.MBC3WriteRTCLatch = function (parentObj, address, data) { + if (data == 0) { + parentObj.RTCisLatched = false; + } + else if (!parentObj.RTCisLatched) { + //Copy over the current RTC time for reading. + parentObj.RTCisLatched = true; + parentObj.latchedSeconds = parentObj.RTCSeconds | 0; + parentObj.latchedMinutes = parentObj.RTCMinutes; + parentObj.latchedHours = parentObj.RTCHours; + parentObj.latchedLDays = (parentObj.RTCDays & 0xFF); + parentObj.latchedHDays = parentObj.RTCDays >> 8; + } +} +GameBoyCore.prototype.MBC5WriteROMBankLow = function (parentObj, address, data) { + //MBC5 ROM bank switching: + parentObj.ROMBank1offs = (parentObj.ROMBank1offs & 0x100) | data; + parentObj.setCurrentMBC5ROMBank(); +} +GameBoyCore.prototype.MBC5WriteROMBankHigh = function (parentObj, address, data) { + //MBC5 ROM bank switching (by least significant bit): + parentObj.ROMBank1offs = ((data & 0x01) << 8) | (parentObj.ROMBank1offs & 0xFF); + parentObj.setCurrentMBC5ROMBank(); +} +GameBoyCore.prototype.MBC5WriteRAMBank = function (parentObj, address, data) { + //MBC5 RAM bank switching + parentObj.currMBCRAMBank = data & 0xF; + parentObj.currMBCRAMBankPosition = (parentObj.currMBCRAMBank << 13) - 0xA000; +} +GameBoyCore.prototype.RUMBLEWriteRAMBank = function (parentObj, address, data) { + //MBC5 RAM bank switching + //Like MBC5, but bit 3 of the lower nibble is used for rumbling and bit 2 is ignored. + parentObj.currMBCRAMBank = data & 0x03; + parentObj.currMBCRAMBankPosition = (parentObj.currMBCRAMBank << 13) - 0xA000; +} +GameBoyCore.prototype.HuC3WriteRAMBank = function (parentObj, address, data) { + //HuC3 RAM bank switching + parentObj.currMBCRAMBank = data & 0x03; + parentObj.currMBCRAMBankPosition = (parentObj.currMBCRAMBank << 13) - 0xA000; +} +GameBoyCore.prototype.cartIgnoreWrite = function (parentObj, address, data) { + //We might have encountered illegal RAM writing or such, so just do nothing... +} +GameBoyCore.prototype.memoryWriteNormal = function (parentObj, address, data) { + parentObj.memory[address] = data; +} +GameBoyCore.prototype.memoryHighWriteNormal = function (parentObj, address, data) { + parentObj.memory[0xFF00 | address] = data; +} +GameBoyCore.prototype.memoryWriteMBCRAM = function (parentObj, address, data) { + if (parentObj.MBCRAMBanksEnabled || settings[10]) { + parentObj.MBCRam[address + parentObj.currMBCRAMBankPosition] = data; + } +} +GameBoyCore.prototype.memoryWriteMBC3RAM = function (parentObj, address, data) { + if (parentObj.MBCRAMBanksEnabled || settings[10]) { + switch (parentObj.currMBCRAMBank) { + case 0x00: + case 0x01: + case 0x02: + case 0x03: + parentObj.MBCRam[address + parentObj.currMBCRAMBankPosition] = data; + break; + case 0x08: + if (data < 60) { + parentObj.RTCSeconds = data; + } + else { + cout("(Bank #" + parentObj.currMBCRAMBank + ") RTC write out of range: " + data, 1); + } + break; + case 0x09: + if (data < 60) { + parentObj.RTCMinutes = data; + } + else { + cout("(Bank #" + parentObj.currMBCRAMBank + ") RTC write out of range: " + data, 1); + } + break; + case 0x0A: + if (data < 24) { + parentObj.RTCHours = data; + } + else { + cout("(Bank #" + parentObj.currMBCRAMBank + ") RTC write out of range: " + data, 1); + } + break; + case 0x0B: + parentObj.RTCDays = (data & 0xFF) | (parentObj.RTCDays & 0x100); + break; + case 0x0C: + parentObj.RTCDayOverFlow = (data > 0x7F); + parentObj.RTCHalt = (data & 0x40) == 0x40; + parentObj.RTCDays = ((data & 0x1) << 8) | (parentObj.RTCDays & 0xFF); + break; + default: + cout("Invalid MBC3 bank address selected: " + parentObj.currMBCRAMBank, 0); + } + } +} +GameBoyCore.prototype.memoryWriteGBCRAM = function (parentObj, address, data) { + parentObj.GBCMemory[address + parentObj.gbcRamBankPosition] = data; +} +GameBoyCore.prototype.memoryWriteOAMRAM = function (parentObj, address, data) { + if (parentObj.modeSTAT < 2) { //OAM RAM cannot be written to in mode 2 & 3 + if (parentObj.memory[address] != data) { + parentObj.graphicsJIT(); + parentObj.memory[address] = data; + } + } +} +GameBoyCore.prototype.memoryWriteECHOGBCRAM = function (parentObj, address, data) { + parentObj.GBCMemory[address + parentObj.gbcRamBankPositionECHO] = data; +} +GameBoyCore.prototype.memoryWriteECHONormal = function (parentObj, address, data) { + parentObj.memory[address - 0x2000] = data; +} +GameBoyCore.prototype.VRAMGBDATAWrite = function (parentObj, address, data) { + if (parentObj.modeSTAT < 3) { //VRAM cannot be written to during mode 3 + if (parentObj.memory[address] != data) { + //JIT the graphics render queue: + parentObj.graphicsJIT(); + parentObj.memory[address] = data; + parentObj.generateGBOAMTileLine(address); + } + } +} +GameBoyCore.prototype.VRAMGBDATAUpperWrite = function (parentObj, address, data) { + if (parentObj.modeSTAT < 3) { //VRAM cannot be written to during mode 3 + if (parentObj.memory[address] != data) { + //JIT the graphics render queue: + parentObj.graphicsJIT(); + parentObj.memory[address] = data; + parentObj.generateGBTileLine(address); + } + } +} +GameBoyCore.prototype.VRAMGBCDATAWrite = function (parentObj, address, data) { + if (parentObj.modeSTAT < 3) { //VRAM cannot be written to during mode 3 + if (parentObj.currVRAMBank == 0) { + if (parentObj.memory[address] != data) { + //JIT the graphics render queue: + parentObj.graphicsJIT(); + parentObj.memory[address] = data; + parentObj.generateGBCTileLineBank1(address); + } + } + else { + address &= 0x1FFF; + if (parentObj.VRAM[address] != data) { + //JIT the graphics render queue: + parentObj.graphicsJIT(); + parentObj.VRAM[address] = data; + parentObj.generateGBCTileLineBank2(address); + } + } + } +} +GameBoyCore.prototype.VRAMGBCHRMAPWrite = function (parentObj, address, data) { + if (parentObj.modeSTAT < 3) { //VRAM cannot be written to during mode 3 + address &= 0x7FF; + if (parentObj.BGCHRBank1[address] != data) { + //JIT the graphics render queue: + parentObj.graphicsJIT(); + parentObj.BGCHRBank1[address] = data; + } + } +} +GameBoyCore.prototype.VRAMGBCCHRMAPWrite = function (parentObj, address, data) { + if (parentObj.modeSTAT < 3) { //VRAM cannot be written to during mode 3 + address &= 0x7FF; + if (parentObj.BGCHRCurrentBank[address] != data) { + //JIT the graphics render queue: + parentObj.graphicsJIT(); + parentObj.BGCHRCurrentBank[address] = data; + } + } +} +GameBoyCore.prototype.DMAWrite = function (tilesToTransfer) { + if (!this.halt) { + //Clock the CPU for the DMA transfer (CPU is halted during the transfer): + this.CPUTicks += 4 | ((tilesToTransfer << 5) << this.doubleSpeedShifter); + } + //Source address of the transfer: + var source = (this.memory[0xFF51] << 8) | this.memory[0xFF52]; + //Destination address in the VRAM memory range: + var destination = (this.memory[0xFF53] << 8) | this.memory[0xFF54]; + //Creating some references: + var memoryReader = this.memoryReader; + //JIT the graphics render queue: + this.graphicsJIT(); + var memory = this.memory; + //Determining which bank we're working on so we can optimize: + if (this.currVRAMBank == 0) { + //DMA transfer for VRAM bank 0: + do { + if (destination < 0x1800) { + memory[0x8000 | destination] = memoryReader[source](this, source++); + memory[0x8001 | destination] = memoryReader[source](this, source++); + memory[0x8002 | destination] = memoryReader[source](this, source++); + memory[0x8003 | destination] = memoryReader[source](this, source++); + memory[0x8004 | destination] = memoryReader[source](this, source++); + memory[0x8005 | destination] = memoryReader[source](this, source++); + memory[0x8006 | destination] = memoryReader[source](this, source++); + memory[0x8007 | destination] = memoryReader[source](this, source++); + memory[0x8008 | destination] = memoryReader[source](this, source++); + memory[0x8009 | destination] = memoryReader[source](this, source++); + memory[0x800A | destination] = memoryReader[source](this, source++); + memory[0x800B | destination] = memoryReader[source](this, source++); + memory[0x800C | destination] = memoryReader[source](this, source++); + memory[0x800D | destination] = memoryReader[source](this, source++); + memory[0x800E | destination] = memoryReader[source](this, source++); + memory[0x800F | destination] = memoryReader[source](this, source++); + this.generateGBCTileBank1(destination); + destination += 0x10; + } + else { + destination &= 0x7F0; + this.BGCHRBank1[destination++] = memoryReader[source](this, source++); + this.BGCHRBank1[destination++] = memoryReader[source](this, source++); + this.BGCHRBank1[destination++] = memoryReader[source](this, source++); + this.BGCHRBank1[destination++] = memoryReader[source](this, source++); + this.BGCHRBank1[destination++] = memoryReader[source](this, source++); + this.BGCHRBank1[destination++] = memoryReader[source](this, source++); + this.BGCHRBank1[destination++] = memoryReader[source](this, source++); + this.BGCHRBank1[destination++] = memoryReader[source](this, source++); + this.BGCHRBank1[destination++] = memoryReader[source](this, source++); + this.BGCHRBank1[destination++] = memoryReader[source](this, source++); + this.BGCHRBank1[destination++] = memoryReader[source](this, source++); + this.BGCHRBank1[destination++] = memoryReader[source](this, source++); + this.BGCHRBank1[destination++] = memoryReader[source](this, source++); + this.BGCHRBank1[destination++] = memoryReader[source](this, source++); + this.BGCHRBank1[destination++] = memoryReader[source](this, source++); + this.BGCHRBank1[destination++] = memoryReader[source](this, source++); + destination = (destination + 0x1800) & 0x1FF0; + } + source &= 0xFFF0; + --tilesToTransfer; + } while (tilesToTransfer > 0); + } + else { + var VRAM = this.VRAM; + //DMA transfer for VRAM bank 1: + do { + if (destination < 0x1800) { + VRAM[destination] = memoryReader[source](this, source++); + VRAM[destination | 0x1] = memoryReader[source](this, source++); + VRAM[destination | 0x2] = memoryReader[source](this, source++); + VRAM[destination | 0x3] = memoryReader[source](this, source++); + VRAM[destination | 0x4] = memoryReader[source](this, source++); + VRAM[destination | 0x5] = memoryReader[source](this, source++); + VRAM[destination | 0x6] = memoryReader[source](this, source++); + VRAM[destination | 0x7] = memoryReader[source](this, source++); + VRAM[destination | 0x8] = memoryReader[source](this, source++); + VRAM[destination | 0x9] = memoryReader[source](this, source++); + VRAM[destination | 0xA] = memoryReader[source](this, source++); + VRAM[destination | 0xB] = memoryReader[source](this, source++); + VRAM[destination | 0xC] = memoryReader[source](this, source++); + VRAM[destination | 0xD] = memoryReader[source](this, source++); + VRAM[destination | 0xE] = memoryReader[source](this, source++); + VRAM[destination | 0xF] = memoryReader[source](this, source++); + this.generateGBCTileBank2(destination); + destination += 0x10; + } + else { + destination &= 0x7F0; + this.BGCHRBank2[destination++] = memoryReader[source](this, source++); + this.BGCHRBank2[destination++] = memoryReader[source](this, source++); + this.BGCHRBank2[destination++] = memoryReader[source](this, source++); + this.BGCHRBank2[destination++] = memoryReader[source](this, source++); + this.BGCHRBank2[destination++] = memoryReader[source](this, source++); + this.BGCHRBank2[destination++] = memoryReader[source](this, source++); + this.BGCHRBank2[destination++] = memoryReader[source](this, source++); + this.BGCHRBank2[destination++] = memoryReader[source](this, source++); + this.BGCHRBank2[destination++] = memoryReader[source](this, source++); + this.BGCHRBank2[destination++] = memoryReader[source](this, source++); + this.BGCHRBank2[destination++] = memoryReader[source](this, source++); + this.BGCHRBank2[destination++] = memoryReader[source](this, source++); + this.BGCHRBank2[destination++] = memoryReader[source](this, source++); + this.BGCHRBank2[destination++] = memoryReader[source](this, source++); + this.BGCHRBank2[destination++] = memoryReader[source](this, source++); + this.BGCHRBank2[destination++] = memoryReader[source](this, source++); + destination = (destination + 0x1800) & 0x1FF0; + } + source &= 0xFFF0; + --tilesToTransfer; + } while (tilesToTransfer > 0); + } + //Update the HDMA registers to their next addresses: + memory[0xFF51] = source >> 8; + memory[0xFF52] = source & 0xF0; + memory[0xFF53] = destination >> 8; + memory[0xFF54] = destination & 0xF0; +} +GameBoyCore.prototype.registerWriteJumpCompile = function () { + //I/O Registers (GB + GBC): + //JoyPad + this.memoryHighWriter[0] = this.memoryWriter[0xFF00] = function (parentObj, address, data) { + parentObj.memory[0xFF00] = (data & 0x30) | ((((data & 0x20) == 0) ? (parentObj.JoyPad >> 4) : 0xF) & (((data & 0x10) == 0) ? (parentObj.JoyPad & 0xF) : 0xF)); + } + //SB (Serial Transfer Data) + this.memoryHighWriter[0x1] = this.memoryWriter[0xFF01] = function (parentObj, address, data) { + if (parentObj.memory[0xFF02] < 0x80) { //Cannot write while a serial transfer is active. + parentObj.memory[0xFF01] = data; + } + } + //DIV + this.memoryHighWriter[0x4] = this.memoryWriter[0xFF04] = function (parentObj, address, data) { + parentObj.DIVTicks &= 0xFF; //Update DIV for realignment. + parentObj.memory[0xFF04] = 0; + } + //TIMA + this.memoryHighWriter[0x5] = this.memoryWriter[0xFF05] = function (parentObj, address, data) { + parentObj.memory[0xFF05] = data; + } + //TMA + this.memoryHighWriter[0x6] = this.memoryWriter[0xFF06] = function (parentObj, address, data) { + parentObj.memory[0xFF06] = data; + } + //TAC + this.memoryHighWriter[0x7] = this.memoryWriter[0xFF07] = function (parentObj, address, data) { + parentObj.memory[0xFF07] = data & 0x07; + parentObj.TIMAEnabled = (data & 0x04) == 0x04; + parentObj.TACClocker = Math.pow(4, ((data & 0x3) != 0) ? (data & 0x3) : 4) << 2; //TODO: Find a way to not make a conditional in here... + } + //IF (Interrupt Request) + this.memoryHighWriter[0xF] = this.memoryWriter[0xFF0F] = function (parentObj, address, data) { + parentObj.interruptsRequested = data; + parentObj.checkIRQMatching(); + } + this.memoryHighWriter[0x10] = this.memoryWriter[0xFF10] = function (parentObj, address, data) { + if (parentObj.soundMasterEnabled) { + parentObj.audioJIT(); + if (parentObj.channel1decreaseSweep && (data & 0x08) == 0) { + if (parentObj.channel1numSweep != parentObj.channel1frequencySweepDivider) { + parentObj.channel1SweepFault = true; + } + } + parentObj.channel1lastTimeSweep = (data & 0x70) >> 4; + parentObj.channel1frequencySweepDivider = data & 0x07; + parentObj.channel1decreaseSweep = ((data & 0x08) == 0x08); + parentObj.memory[0xFF10] = data; + parentObj.channel1EnableCheck(); + } + } + this.memoryHighWriter[0x11] = this.memoryWriter[0xFF11] = function (parentObj, address, data) { + if (parentObj.soundMasterEnabled || !parentObj.cGBC) { + if (parentObj.soundMasterEnabled) { + parentObj.audioJIT(); + } + else { + data &= 0x3F; + } + parentObj.channel1CachedDuty = parentObj.dutyLookup[data >> 6]; + parentObj.channel1totalLength = 0x40 - (data & 0x3F); + parentObj.memory[0xFF11] = data & 0xC0; + parentObj.channel1EnableCheck(); + } + } + this.memoryHighWriter[0x12] = this.memoryWriter[0xFF12] = function (parentObj, address, data) { + if (parentObj.soundMasterEnabled) { + parentObj.audioJIT(); + if (parentObj.channel1Enabled && parentObj.channel1envelopeSweeps == 0) { + //Zombie Volume PAPU Bug: + if (((parentObj.memory[0xFF12] ^ data) & 0x8) == 0x8) { + if ((parentObj.memory[0xFF12] & 0x8) == 0) { + if ((parentObj.memory[0xFF12] & 0x7) == 0x7) { + parentObj.channel1envelopeVolume += 2; + } + else { + ++parentObj.channel1envelopeVolume; + } + } + parentObj.channel1envelopeVolume = (16 - parentObj.channel1envelopeVolume) & 0xF; + } + else if ((parentObj.memory[0xFF12] & 0xF) == 0x8) { + parentObj.channel1envelopeVolume = (1 + parentObj.channel1envelopeVolume) & 0xF; + } + parentObj.channel1OutputLevelCache(); + } + parentObj.channel1envelopeType = ((data & 0x08) == 0x08); + parentObj.memory[0xFF12] = data; + parentObj.channel1VolumeEnableCheck(); + } + } + this.memoryHighWriter[0x13] = this.memoryWriter[0xFF13] = function (parentObj, address, data) { + if (parentObj.soundMasterEnabled) { + parentObj.audioJIT(); + parentObj.channel1frequency = (parentObj.channel1frequency & 0x700) | data; + parentObj.channel1FrequencyTracker = (0x800 - parentObj.channel1frequency) << 2; + parentObj.memory[0xFF13] = data; + } + } + this.memoryHighWriter[0x14] = this.memoryWriter[0xFF14] = function (parentObj, address, data) { + if (parentObj.soundMasterEnabled) { + parentObj.audioJIT(); + parentObj.channel1consecutive = ((data & 0x40) == 0x0); + parentObj.channel1frequency = ((data & 0x7) << 8) | (parentObj.channel1frequency & 0xFF); + parentObj.channel1FrequencyTracker = (0x800 - parentObj.channel1frequency) << 2; + if (data > 0x7F) { + //Reload 0xFF10: + parentObj.channel1timeSweep = parentObj.channel1lastTimeSweep; + parentObj.channel1numSweep = parentObj.channel1frequencySweepDivider; + //Reload 0xFF12: + var nr12 = parentObj.memory[0xFF12]; + parentObj.channel1envelopeVolume = nr12 >> 4; + parentObj.channel1OutputLevelCache(); + parentObj.channel1envelopeSweepsLast = (nr12 & 0x7) - 1; + if (parentObj.channel1totalLength == 0) { + parentObj.channel1totalLength = 0x40; + } + if (parentObj.channel1lastTimeSweep > 0 || parentObj.channel1frequencySweepDivider > 0) { + parentObj.memory[0xFF26] |= 0x1; + } + else { + parentObj.memory[0xFF26] &= 0xFE; + } + if ((data & 0x40) == 0x40) { + parentObj.memory[0xFF26] |= 0x1; + } + parentObj.channel1ShadowFrequency = parentObj.channel1frequency; + //Reset frequency overflow check + frequency sweep type check: + parentObj.channel1SweepFault = false; + //Supposed to run immediately: + parentObj.runAudioSweep(); + } + parentObj.channel1EnableCheck(); + parentObj.memory[0xFF14] = data & 0x40; + } + } + this.memoryHighWriter[0x16] = this.memoryWriter[0xFF16] = function (parentObj, address, data) { + if (parentObj.soundMasterEnabled || !parentObj.cGBC) { + if (parentObj.soundMasterEnabled) { + parentObj.audioJIT(); + } + else { + data &= 0x3F; + } + parentObj.channel2CachedDuty = parentObj.dutyLookup[data >> 6]; + parentObj.channel2totalLength = 0x40 - (data & 0x3F); + parentObj.memory[0xFF16] = data & 0xC0; + parentObj.channel2EnableCheck(); + } + } + this.memoryHighWriter[0x17] = this.memoryWriter[0xFF17] = function (parentObj, address, data) { + if (parentObj.soundMasterEnabled) { + parentObj.audioJIT(); + if (parentObj.channel2Enabled && parentObj.channel2envelopeSweeps == 0) { + //Zombie Volume PAPU Bug: + if (((parentObj.memory[0xFF17] ^ data) & 0x8) == 0x8) { + if ((parentObj.memory[0xFF17] & 0x8) == 0) { + if ((parentObj.memory[0xFF17] & 0x7) == 0x7) { + parentObj.channel2envelopeVolume += 2; + } + else { + ++parentObj.channel2envelopeVolume; + } + } + parentObj.channel2envelopeVolume = (16 - parentObj.channel2envelopeVolume) & 0xF; + } + else if ((parentObj.memory[0xFF17] & 0xF) == 0x8) { + parentObj.channel2envelopeVolume = (1 + parentObj.channel2envelopeVolume) & 0xF; + } + parentObj.channel2OutputLevelCache(); + } + parentObj.channel2envelopeType = ((data & 0x08) == 0x08); + parentObj.memory[0xFF17] = data; + parentObj.channel2VolumeEnableCheck(); + } + } + this.memoryHighWriter[0x18] = this.memoryWriter[0xFF18] = function (parentObj, address, data) { + if (parentObj.soundMasterEnabled) { + parentObj.audioJIT(); + parentObj.channel2frequency = (parentObj.channel2frequency & 0x700) | data; + parentObj.channel2FrequencyTracker = (0x800 - parentObj.channel2frequency) << 2; + parentObj.memory[0xFF18] = data; + } + } + this.memoryHighWriter[0x19] = this.memoryWriter[0xFF19] = function (parentObj, address, data) { + if (parentObj.soundMasterEnabled) { + parentObj.audioJIT(); + if (data > 0x7F) { + //Reload 0xFF17: + var nr22 = parentObj.memory[0xFF17]; + parentObj.channel2envelopeVolume = nr22 >> 4; + parentObj.channel2OutputLevelCache(); + parentObj.channel2envelopeSweepsLast = (nr22 & 0x7) - 1; + if (parentObj.channel2totalLength == 0) { + parentObj.channel2totalLength = 0x40; + } + if ((data & 0x40) == 0x40) { + parentObj.memory[0xFF26] |= 0x2; + } + } + parentObj.channel2consecutive = ((data & 0x40) == 0x0); + parentObj.channel2frequency = ((data & 0x7) << 8) | (parentObj.channel2frequency & 0xFF); + parentObj.channel2FrequencyTracker = (0x800 - parentObj.channel2frequency) << 2; + parentObj.memory[0xFF19] = data & 0x40; + parentObj.channel2EnableCheck(); + } + } + this.memoryHighWriter[0x1A] = this.memoryWriter[0xFF1A] = function (parentObj, address, data) { + if (parentObj.soundMasterEnabled) { + parentObj.audioJIT(); + if (!parentObj.channel3canPlay && data >= 0x80) { + parentObj.channel3lastSampleLookup = 0; + parentObj.channel3UpdateCache(); + } + parentObj.channel3canPlay = (data > 0x7F); + if (parentObj.channel3canPlay && parentObj.memory[0xFF1A] > 0x7F && !parentObj.channel3consecutive) { + parentObj.memory[0xFF26] |= 0x4; + } + parentObj.memory[0xFF1A] = data & 0x80; + //parentObj.channel3EnableCheck(); + } + } + this.memoryHighWriter[0x1B] = this.memoryWriter[0xFF1B] = function (parentObj, address, data) { + if (parentObj.soundMasterEnabled || !parentObj.cGBC) { + if (parentObj.soundMasterEnabled) { + parentObj.audioJIT(); + } + parentObj.channel3totalLength = 0x100 - data; + parentObj.memory[0xFF1B] = data; + parentObj.channel3EnableCheck(); + } + } + this.memoryHighWriter[0x1C] = this.memoryWriter[0xFF1C] = function (parentObj, address, data) { + if (parentObj.soundMasterEnabled) { + parentObj.audioJIT(); + data &= 0x60; + parentObj.memory[0xFF1C] = data; + parentObj.channel3patternType = (data == 0) ? 4 : ((data >> 5) - 1); + } + } + this.memoryHighWriter[0x1D] = this.memoryWriter[0xFF1D] = function (parentObj, address, data) { + if (parentObj.soundMasterEnabled) { + parentObj.audioJIT(); + parentObj.channel3frequency = (parentObj.channel3frequency & 0x700) | data; + parentObj.channel3FrequencyPeriod = (0x800 - parentObj.channel3frequency) << 1; + parentObj.memory[0xFF1D] = data; + } + } + this.memoryHighWriter[0x1E] = this.memoryWriter[0xFF1E] = function (parentObj, address, data) { + if (parentObj.soundMasterEnabled) { + parentObj.audioJIT(); + if (data > 0x7F) { + if (parentObj.channel3totalLength == 0) { + parentObj.channel3totalLength = 0x100; + } + parentObj.channel3lastSampleLookup = 0; + if ((data & 0x40) == 0x40) { + parentObj.memory[0xFF26] |= 0x4; + } + } + parentObj.channel3consecutive = ((data & 0x40) == 0x0); + parentObj.channel3frequency = ((data & 0x7) << 8) | (parentObj.channel3frequency & 0xFF); + parentObj.channel3FrequencyPeriod = (0x800 - parentObj.channel3frequency) << 1; + parentObj.memory[0xFF1E] = data & 0x40; + parentObj.channel3EnableCheck(); + } + } + this.memoryHighWriter[0x20] = this.memoryWriter[0xFF20] = function (parentObj, address, data) { + if (parentObj.soundMasterEnabled || !parentObj.cGBC) { + if (parentObj.soundMasterEnabled) { + parentObj.audioJIT(); + } + parentObj.channel4totalLength = 0x40 - (data & 0x3F); + parentObj.memory[0xFF20] = data | 0xC0; + parentObj.channel4EnableCheck(); + } + } + this.memoryHighWriter[0x21] = this.memoryWriter[0xFF21] = function (parentObj, address, data) { + if (parentObj.soundMasterEnabled) { + parentObj.audioJIT(); + if (parentObj.channel4Enabled && parentObj.channel4envelopeSweeps == 0) { + //Zombie Volume PAPU Bug: + if (((parentObj.memory[0xFF21] ^ data) & 0x8) == 0x8) { + if ((parentObj.memory[0xFF21] & 0x8) == 0) { + if ((parentObj.memory[0xFF21] & 0x7) == 0x7) { + parentObj.channel4envelopeVolume += 2; + } + else { + ++parentObj.channel4envelopeVolume; + } + } + parentObj.channel4envelopeVolume = (16 - parentObj.channel4envelopeVolume) & 0xF; + } + else if ((parentObj.memory[0xFF21] & 0xF) == 0x8) { + parentObj.channel4envelopeVolume = (1 + parentObj.channel4envelopeVolume) & 0xF; + } + parentObj.channel4currentVolume = parentObj.channel4envelopeVolume << parentObj.channel4VolumeShifter; + } + parentObj.channel4envelopeType = ((data & 0x08) == 0x08); + parentObj.memory[0xFF21] = data; + parentObj.channel4UpdateCache(); + parentObj.channel4VolumeEnableCheck(); + } + } + this.memoryHighWriter[0x22] = this.memoryWriter[0xFF22] = function (parentObj, address, data) { + if (parentObj.soundMasterEnabled) { + parentObj.audioJIT(); + parentObj.channel4FrequencyPeriod = Math.max((data & 0x7) << 4, 8) << (data >> 4); + var bitWidth = (data & 0x8); + if ((bitWidth == 0x8 && parentObj.channel4BitRange == 0x7FFF) || (bitWidth == 0 && parentObj.channel4BitRange == 0x7F)) { + parentObj.channel4lastSampleLookup = 0; + parentObj.channel4BitRange = (bitWidth == 0x8) ? 0x7F : 0x7FFF; + parentObj.channel4VolumeShifter = (bitWidth == 0x8) ? 7 : 15; + parentObj.channel4currentVolume = parentObj.channel4envelopeVolume << parentObj.channel4VolumeShifter; + parentObj.noiseSampleTable = (bitWidth == 0x8) ? parentObj.LSFR7Table : parentObj.LSFR15Table; + } + parentObj.memory[0xFF22] = data; + parentObj.channel4UpdateCache(); + } + } + this.memoryHighWriter[0x23] = this.memoryWriter[0xFF23] = function (parentObj, address, data) { + if (parentObj.soundMasterEnabled) { + parentObj.audioJIT(); + parentObj.memory[0xFF23] = data; + parentObj.channel4consecutive = ((data & 0x40) == 0x0); + if (data > 0x7F) { + var nr42 = parentObj.memory[0xFF21]; + parentObj.channel4envelopeVolume = nr42 >> 4; + parentObj.channel4currentVolume = parentObj.channel4envelopeVolume << parentObj.channel4VolumeShifter; + parentObj.channel4envelopeSweepsLast = (nr42 & 0x7) - 1; + if (parentObj.channel4totalLength == 0) { + parentObj.channel4totalLength = 0x40; + } + if ((data & 0x40) == 0x40) { + parentObj.memory[0xFF26] |= 0x8; + } + } + parentObj.channel4EnableCheck(); + } + } + this.memoryHighWriter[0x24] = this.memoryWriter[0xFF24] = function (parentObj, address, data) { + if (parentObj.soundMasterEnabled && parentObj.memory[0xFF24] != data) { + parentObj.audioJIT(); + parentObj.memory[0xFF24] = data; + parentObj.VinLeftChannelMasterVolume = ((data >> 4) & 0x07) + 1; + parentObj.VinRightChannelMasterVolume = (data & 0x07) + 1; + parentObj.mixerOutputLevelCache(); + } + } + this.memoryHighWriter[0x25] = this.memoryWriter[0xFF25] = function (parentObj, address, data) { + if (parentObj.soundMasterEnabled && parentObj.memory[0xFF25] != data) { + parentObj.audioJIT(); + parentObj.memory[0xFF25] = data; + parentObj.rightChannel1 = ((data & 0x01) == 0x01); + parentObj.rightChannel2 = ((data & 0x02) == 0x02); + parentObj.rightChannel3 = ((data & 0x04) == 0x04); + parentObj.rightChannel4 = ((data & 0x08) == 0x08); + parentObj.leftChannel1 = ((data & 0x10) == 0x10); + parentObj.leftChannel2 = ((data & 0x20) == 0x20); + parentObj.leftChannel3 = ((data & 0x40) == 0x40); + parentObj.leftChannel4 = (data > 0x7F); + parentObj.channel1OutputLevelCache(); + parentObj.channel2OutputLevelCache(); + parentObj.channel3OutputLevelCache(); + parentObj.channel4OutputLevelCache(); + } + } + this.memoryHighWriter[0x26] = this.memoryWriter[0xFF26] = function (parentObj, address, data) { + parentObj.audioJIT(); + if (!parentObj.soundMasterEnabled && data > 0x7F) { + parentObj.memory[0xFF26] = 0x80; + parentObj.soundMasterEnabled = true; + parentObj.initializeAudioStartState(); + } + else if (parentObj.soundMasterEnabled && data < 0x80) { + parentObj.memory[0xFF26] = 0; + parentObj.soundMasterEnabled = false; + //GBDev wiki says the registers are written with zeros on power off: + for (var index = 0xFF10; index < 0xFF26; index++) { + parentObj.memoryWriter[index](parentObj, index, 0); + } + } + } + //0xFF27 to 0xFF2F don't do anything... + this.memoryHighWriter[0x27] = this.memoryWriter[0xFF27] = this.cartIgnoreWrite; + this.memoryHighWriter[0x28] = this.memoryWriter[0xFF28] = this.cartIgnoreWrite; + this.memoryHighWriter[0x29] = this.memoryWriter[0xFF29] = this.cartIgnoreWrite; + this.memoryHighWriter[0x2A] = this.memoryWriter[0xFF2A] = this.cartIgnoreWrite; + this.memoryHighWriter[0x2B] = this.memoryWriter[0xFF2B] = this.cartIgnoreWrite; + this.memoryHighWriter[0x2C] = this.memoryWriter[0xFF2C] = this.cartIgnoreWrite; + this.memoryHighWriter[0x2D] = this.memoryWriter[0xFF2D] = this.cartIgnoreWrite; + this.memoryHighWriter[0x2E] = this.memoryWriter[0xFF2E] = this.cartIgnoreWrite; + this.memoryHighWriter[0x2F] = this.memoryWriter[0xFF2F] = this.cartIgnoreWrite; + //WAVE PCM RAM: + this.memoryHighWriter[0x30] = this.memoryWriter[0xFF30] = function (parentObj, address, data) { + parentObj.channel3WriteRAM(0, data); + } + this.memoryHighWriter[0x31] = this.memoryWriter[0xFF31] = function (parentObj, address, data) { + parentObj.channel3WriteRAM(0x1, data); + } + this.memoryHighWriter[0x32] = this.memoryWriter[0xFF32] = function (parentObj, address, data) { + parentObj.channel3WriteRAM(0x2, data); + } + this.memoryHighWriter[0x33] = this.memoryWriter[0xFF33] = function (parentObj, address, data) { + parentObj.channel3WriteRAM(0x3, data); + } + this.memoryHighWriter[0x34] = this.memoryWriter[0xFF34] = function (parentObj, address, data) { + parentObj.channel3WriteRAM(0x4, data); + } + this.memoryHighWriter[0x35] = this.memoryWriter[0xFF35] = function (parentObj, address, data) { + parentObj.channel3WriteRAM(0x5, data); + } + this.memoryHighWriter[0x36] = this.memoryWriter[0xFF36] = function (parentObj, address, data) { + parentObj.channel3WriteRAM(0x6, data); + } + this.memoryHighWriter[0x37] = this.memoryWriter[0xFF37] = function (parentObj, address, data) { + parentObj.channel3WriteRAM(0x7, data); + } + this.memoryHighWriter[0x38] = this.memoryWriter[0xFF38] = function (parentObj, address, data) { + parentObj.channel3WriteRAM(0x8, data); + } + this.memoryHighWriter[0x39] = this.memoryWriter[0xFF39] = function (parentObj, address, data) { + parentObj.channel3WriteRAM(0x9, data); + } + this.memoryHighWriter[0x3A] = this.memoryWriter[0xFF3A] = function (parentObj, address, data) { + parentObj.channel3WriteRAM(0xA, data); + } + this.memoryHighWriter[0x3B] = this.memoryWriter[0xFF3B] = function (parentObj, address, data) { + parentObj.channel3WriteRAM(0xB, data); + } + this.memoryHighWriter[0x3C] = this.memoryWriter[0xFF3C] = function (parentObj, address, data) { + parentObj.channel3WriteRAM(0xC, data); + } + this.memoryHighWriter[0x3D] = this.memoryWriter[0xFF3D] = function (parentObj, address, data) { + parentObj.channel3WriteRAM(0xD, data); + } + this.memoryHighWriter[0x3E] = this.memoryWriter[0xFF3E] = function (parentObj, address, data) { + parentObj.channel3WriteRAM(0xE, data); + } + this.memoryHighWriter[0x3F] = this.memoryWriter[0xFF3F] = function (parentObj, address, data) { + parentObj.channel3WriteRAM(0xF, data); + } + //SCY + this.memoryHighWriter[0x42] = this.memoryWriter[0xFF42] = function (parentObj, address, data) { + if (parentObj.backgroundY != data) { + parentObj.midScanLineJIT(); + parentObj.backgroundY = data; + } + } + //SCX + this.memoryHighWriter[0x43] = this.memoryWriter[0xFF43] = function (parentObj, address, data) { + if (parentObj.backgroundX != data) { + parentObj.midScanLineJIT(); + parentObj.backgroundX = data; + } + } + //LY + this.memoryHighWriter[0x44] = this.memoryWriter[0xFF44] = function (parentObj, address, data) { + //Read Only: + if (parentObj.LCDisOn) { + //Gambatte says to do this: + parentObj.modeSTAT = 2; + parentObj.midScanlineOffset = -1; + parentObj.totalLinesPassed = parentObj.currentX = parentObj.queuedScanLines = parentObj.lastUnrenderedLine = parentObj.LCDTicks = parentObj.STATTracker = parentObj.actualScanLine = parentObj.memory[0xFF44] = 0; + } + } + //LYC + this.memoryHighWriter[0x45] = this.memoryWriter[0xFF45] = function (parentObj, address, data) { + if (parentObj.memory[0xFF45] != data) { + parentObj.memory[0xFF45] = data; + if (parentObj.LCDisOn) { + parentObj.matchLYC(); //Get the compare of the first scan line. + } + } + } + //WY + this.memoryHighWriter[0x4A] = this.memoryWriter[0xFF4A] = function (parentObj, address, data) { + if (parentObj.windowY != data) { + parentObj.midScanLineJIT(); + parentObj.windowY = data; + } + } + //WX + this.memoryHighWriter[0x4B] = this.memoryWriter[0xFF4B] = function (parentObj, address, data) { + if (parentObj.memory[0xFF4B] != data) { + parentObj.midScanLineJIT(); + parentObj.memory[0xFF4B] = data; + parentObj.windowX = data - 7; + } + } + this.memoryHighWriter[0x72] = this.memoryWriter[0xFF72] = function (parentObj, address, data) { + parentObj.memory[0xFF72] = data; + } + this.memoryHighWriter[0x73] = this.memoryWriter[0xFF73] = function (parentObj, address, data) { + parentObj.memory[0xFF73] = data; + } + this.memoryHighWriter[0x75] = this.memoryWriter[0xFF75] = function (parentObj, address, data) { + parentObj.memory[0xFF75] = data; + } + this.memoryHighWriter[0x76] = this.memoryWriter[0xFF76] = this.cartIgnoreWrite; + this.memoryHighWriter[0x77] = this.memoryWriter[0xFF77] = this.cartIgnoreWrite; + //IE (Interrupt Enable) + this.memoryHighWriter[0xFF] = this.memoryWriter[0xFFFF] = function (parentObj, address, data) { + parentObj.interruptsEnabled = data; + parentObj.checkIRQMatching(); + } + this.recompileModelSpecificIOWriteHandling(); + this.recompileBootIOWriteHandling(); +} +GameBoyCore.prototype.recompileModelSpecificIOWriteHandling = function () { + if (this.cGBC) { + //GameBoy Color Specific I/O: + //SC (Serial Transfer Control Register) + this.memoryHighWriter[0x2] = this.memoryWriter[0xFF02] = function (parentObj, address, data) { + if (((data & 0x1) == 0x1)) { + //Internal clock: + parentObj.memory[0xFF02] = (data & 0x7F); + parentObj.serialTimer = ((data & 0x2) == 0) ? 4096 : 128; //Set the Serial IRQ counter. + parentObj.serialShiftTimer = parentObj.serialShiftTimerAllocated = ((data & 0x2) == 0) ? 512 : 16; //Set the transfer data shift counter. + } + else { + //External clock: + parentObj.memory[0xFF02] = data; + parentObj.serialShiftTimer = parentObj.serialShiftTimerAllocated = parentObj.serialTimer = 0; //Zero the timers, since we're emulating as if nothing is connected. + } + } + this.memoryHighWriter[0x40] = this.memoryWriter[0xFF40] = function (parentObj, address, data) { + if (parentObj.memory[0xFF40] != data) { + parentObj.midScanLineJIT(); + var temp_var = (data > 0x7F); + if (temp_var != parentObj.LCDisOn) { + //When the display mode changes... + parentObj.LCDisOn = temp_var; + parentObj.memory[0xFF41] &= 0x78; + parentObj.midScanlineOffset = -1; + parentObj.totalLinesPassed = parentObj.currentX = parentObj.queuedScanLines = parentObj.lastUnrenderedLine = parentObj.STATTracker = parentObj.LCDTicks = parentObj.actualScanLine = parentObj.memory[0xFF44] = 0; + if (parentObj.LCDisOn) { + parentObj.modeSTAT = 2; + parentObj.matchLYC(); //Get the compare of the first scan line. + parentObj.LCDCONTROL = parentObj.LINECONTROL; + } + else { + parentObj.modeSTAT = 0; + parentObj.LCDCONTROL = parentObj.DISPLAYOFFCONTROL; + parentObj.DisplayShowOff(); + } + parentObj.interruptsRequested &= 0xFD; + } + parentObj.gfxWindowCHRBankPosition = ((data & 0x40) == 0x40) ? 0x400 : 0; + parentObj.gfxWindowDisplay = ((data & 0x20) == 0x20); + parentObj.gfxBackgroundBankOffset = ((data & 0x10) == 0x10) ? 0 : 0x80; + parentObj.gfxBackgroundCHRBankPosition = ((data & 0x08) == 0x08) ? 0x400 : 0; + parentObj.gfxSpriteNormalHeight = ((data & 0x04) == 0); + parentObj.gfxSpriteShow = ((data & 0x02) == 0x02); + parentObj.BGPriorityEnabled = ((data & 0x01) == 0x01); + parentObj.priorityFlaggingPathRebuild(); //Special case the priority flagging as an optimization. + parentObj.memory[0xFF40] = data; + } + } + this.memoryHighWriter[0x41] = this.memoryWriter[0xFF41] = function (parentObj, address, data) { + parentObj.LYCMatchTriggerSTAT = ((data & 0x40) == 0x40); + parentObj.mode2TriggerSTAT = ((data & 0x20) == 0x20); + parentObj.mode1TriggerSTAT = ((data & 0x10) == 0x10); + parentObj.mode0TriggerSTAT = ((data & 0x08) == 0x08); + parentObj.memory[0xFF41] = data & 0x78; + } + this.memoryHighWriter[0x46] = this.memoryWriter[0xFF46] = function (parentObj, address, data) { + parentObj.memory[0xFF46] = data; + if (data < 0xE0) { + data <<= 8; + address = 0xFE00; + var stat = parentObj.modeSTAT; + parentObj.modeSTAT = 0; + var newData = 0; + do { + newData = parentObj.memoryReader[data](parentObj, data++); + if (newData != parentObj.memory[address]) { + //JIT the graphics render queue: + parentObj.modeSTAT = stat; + parentObj.graphicsJIT(); + parentObj.modeSTAT = 0; + parentObj.memory[address++] = newData; + break; + } + } while (++address < 0xFEA0); + if (address < 0xFEA0) { + do { + parentObj.memory[address++] = parentObj.memoryReader[data](parentObj, data++); + parentObj.memory[address++] = parentObj.memoryReader[data](parentObj, data++); + parentObj.memory[address++] = parentObj.memoryReader[data](parentObj, data++); + parentObj.memory[address++] = parentObj.memoryReader[data](parentObj, data++); + } while (address < 0xFEA0); + } + parentObj.modeSTAT = stat; + } + } + //KEY1 + this.memoryHighWriter[0x4D] = this.memoryWriter[0xFF4D] = function (parentObj, address, data) { + parentObj.memory[0xFF4D] = (data & 0x7F) | (parentObj.memory[0xFF4D] & 0x80); + } + this.memoryHighWriter[0x4F] = this.memoryWriter[0xFF4F] = function (parentObj, address, data) { + parentObj.currVRAMBank = data & 0x01; + if (parentObj.currVRAMBank > 0) { + parentObj.BGCHRCurrentBank = parentObj.BGCHRBank2; + } + else { + parentObj.BGCHRCurrentBank = parentObj.BGCHRBank1; + } + //Only writable by GBC. + } + this.memoryHighWriter[0x51] = this.memoryWriter[0xFF51] = function (parentObj, address, data) { + if (!parentObj.hdmaRunning) { + parentObj.memory[0xFF51] = data; + } + } + this.memoryHighWriter[0x52] = this.memoryWriter[0xFF52] = function (parentObj, address, data) { + if (!parentObj.hdmaRunning) { + parentObj.memory[0xFF52] = data & 0xF0; + } + } + this.memoryHighWriter[0x53] = this.memoryWriter[0xFF53] = function (parentObj, address, data) { + if (!parentObj.hdmaRunning) { + parentObj.memory[0xFF53] = data & 0x1F; + } + } + this.memoryHighWriter[0x54] = this.memoryWriter[0xFF54] = function (parentObj, address, data) { + if (!parentObj.hdmaRunning) { + parentObj.memory[0xFF54] = data & 0xF0; + } + } + this.memoryHighWriter[0x55] = this.memoryWriter[0xFF55] = function (parentObj, address, data) { + if (!parentObj.hdmaRunning) { + if ((data & 0x80) == 0) { + //DMA + parentObj.DMAWrite((data & 0x7F) + 1); + parentObj.memory[0xFF55] = 0xFF; //Transfer completed. + } + else { + //H-Blank DMA + parentObj.hdmaRunning = true; + parentObj.memory[0xFF55] = data & 0x7F; + } + } + else if ((data & 0x80) == 0) { + //Stop H-Blank DMA + parentObj.hdmaRunning = false; + parentObj.memory[0xFF55] |= 0x80; + } + else { + parentObj.memory[0xFF55] = data & 0x7F; + } + } + this.memoryHighWriter[0x68] = this.memoryWriter[0xFF68] = function (parentObj, address, data) { + parentObj.memory[0xFF69] = parentObj.gbcBGRawPalette[data & 0x3F]; + parentObj.memory[0xFF68] = data; + } + this.memoryHighWriter[0x69] = this.memoryWriter[0xFF69] = function (parentObj, address, data) { + parentObj.updateGBCBGPalette(parentObj.memory[0xFF68] & 0x3F, data); + if (parentObj.memory[0xFF68] > 0x7F) { // high bit = autoincrement + var next = ((parentObj.memory[0xFF68] + 1) & 0x3F); + parentObj.memory[0xFF68] = (next | 0x80); + parentObj.memory[0xFF69] = parentObj.gbcBGRawPalette[next]; + } + else { + parentObj.memory[0xFF69] = data; + } + } + this.memoryHighWriter[0x6A] = this.memoryWriter[0xFF6A] = function (parentObj, address, data) { + parentObj.memory[0xFF6B] = parentObj.gbcOBJRawPalette[data & 0x3F]; + parentObj.memory[0xFF6A] = data; + } + this.memoryHighWriter[0x6B] = this.memoryWriter[0xFF6B] = function (parentObj, address, data) { + parentObj.updateGBCOBJPalette(parentObj.memory[0xFF6A] & 0x3F, data); + if (parentObj.memory[0xFF6A] > 0x7F) { // high bit = autoincrement + var next = ((parentObj.memory[0xFF6A] + 1) & 0x3F); + parentObj.memory[0xFF6A] = (next | 0x80); + parentObj.memory[0xFF6B] = parentObj.gbcOBJRawPalette[next]; + } + else { + parentObj.memory[0xFF6B] = data; + } + } + //SVBK + this.memoryHighWriter[0x70] = this.memoryWriter[0xFF70] = function (parentObj, address, data) { + var addressCheck = (parentObj.memory[0xFF51] << 8) | parentObj.memory[0xFF52]; //Cannot change the RAM bank while WRAM is the source of a running HDMA. + if (!parentObj.hdmaRunning || addressCheck < 0xD000 || addressCheck >= 0xE000) { + parentObj.gbcRamBank = Math.max(data & 0x07, 1); //Bank range is from 1-7 + parentObj.gbcRamBankPosition = ((parentObj.gbcRamBank - 1) << 12) - 0xD000; + parentObj.gbcRamBankPositionECHO = parentObj.gbcRamBankPosition - 0x2000; + } + parentObj.memory[0xFF70] = data; //Bit 6 cannot be written to. + } + this.memoryHighWriter[0x74] = this.memoryWriter[0xFF74] = function (parentObj, address, data) { + parentObj.memory[0xFF74] = data; + } + } + else { + //Fill in the GameBoy Color I/O registers as normal RAM for GameBoy compatibility: + //SC (Serial Transfer Control Register) + this.memoryHighWriter[0x2] = this.memoryWriter[0xFF02] = function (parentObj, address, data) { + if (((data & 0x1) == 0x1)) { + //Internal clock: + parentObj.memory[0xFF02] = (data & 0x7F); + parentObj.serialTimer = 4096; //Set the Serial IRQ counter. + parentObj.serialShiftTimer = parentObj.serialShiftTimerAllocated = 512; //Set the transfer data shift counter. + } + else { + //External clock: + parentObj.memory[0xFF02] = data; + parentObj.serialShiftTimer = parentObj.serialShiftTimerAllocated = parentObj.serialTimer = 0; //Zero the timers, since we're emulating as if nothing is connected. + } + } + this.memoryHighWriter[0x40] = this.memoryWriter[0xFF40] = function (parentObj, address, data) { + if (parentObj.memory[0xFF40] != data) { + parentObj.midScanLineJIT(); + var temp_var = (data > 0x7F); + if (temp_var != parentObj.LCDisOn) { + //When the display mode changes... + parentObj.LCDisOn = temp_var; + parentObj.memory[0xFF41] &= 0x78; + parentObj.midScanlineOffset = -1; + parentObj.totalLinesPassed = parentObj.currentX = parentObj.queuedScanLines = parentObj.lastUnrenderedLine = parentObj.STATTracker = parentObj.LCDTicks = parentObj.actualScanLine = parentObj.memory[0xFF44] = 0; + if (parentObj.LCDisOn) { + parentObj.modeSTAT = 2; + parentObj.matchLYC(); //Get the compare of the first scan line. + parentObj.LCDCONTROL = parentObj.LINECONTROL; + } + else { + parentObj.modeSTAT = 0; + parentObj.LCDCONTROL = parentObj.DISPLAYOFFCONTROL; + parentObj.DisplayShowOff(); + } + parentObj.interruptsRequested &= 0xFD; + } + parentObj.gfxWindowCHRBankPosition = ((data & 0x40) == 0x40) ? 0x400 : 0; + parentObj.gfxWindowDisplay = (data & 0x20) == 0x20; + parentObj.gfxBackgroundBankOffset = ((data & 0x10) == 0x10) ? 0 : 0x80; + parentObj.gfxBackgroundCHRBankPosition = ((data & 0x08) == 0x08) ? 0x400 : 0; + parentObj.gfxSpriteNormalHeight = ((data & 0x04) == 0); + parentObj.gfxSpriteShow = (data & 0x02) == 0x02; + parentObj.bgEnabled = ((data & 0x01) == 0x01); + parentObj.memory[0xFF40] = data; + } + } + this.memoryHighWriter[0x41] = this.memoryWriter[0xFF41] = function (parentObj, address, data) { + parentObj.LYCMatchTriggerSTAT = ((data & 0x40) == 0x40); + parentObj.mode2TriggerSTAT = ((data & 0x20) == 0x20); + parentObj.mode1TriggerSTAT = ((data & 0x10) == 0x10); + parentObj.mode0TriggerSTAT = ((data & 0x08) == 0x08); + parentObj.memory[0xFF41] = data & 0x78; + if ((!parentObj.usedBootROM || !parentObj.usedGBCBootROM) && parentObj.LCDisOn && parentObj.modeSTAT < 2) { + parentObj.interruptsRequested |= 0x2; + parentObj.checkIRQMatching(); + } + } + this.memoryHighWriter[0x46] = this.memoryWriter[0xFF46] = function (parentObj, address, data) { + parentObj.memory[0xFF46] = data; + if (data > 0x7F && data < 0xE0) { //DMG cannot DMA from the ROM banks. + data <<= 8; + address = 0xFE00; + var stat = parentObj.modeSTAT; + parentObj.modeSTAT = 0; + var newData = 0; + do { + newData = parentObj.memoryReader[data](parentObj, data++); + if (newData != parentObj.memory[address]) { + //JIT the graphics render queue: + parentObj.modeSTAT = stat; + parentObj.graphicsJIT(); + parentObj.modeSTAT = 0; + parentObj.memory[address++] = newData; + break; + } + } while (++address < 0xFEA0); + if (address < 0xFEA0) { + do { + parentObj.memory[address++] = parentObj.memoryReader[data](parentObj, data++); + parentObj.memory[address++] = parentObj.memoryReader[data](parentObj, data++); + parentObj.memory[address++] = parentObj.memoryReader[data](parentObj, data++); + parentObj.memory[address++] = parentObj.memoryReader[data](parentObj, data++); + } while (address < 0xFEA0); + } + parentObj.modeSTAT = stat; + } + } + this.memoryHighWriter[0x47] = this.memoryWriter[0xFF47] = function (parentObj, address, data) { + if (parentObj.memory[0xFF47] != data) { + parentObj.midScanLineJIT(); + parentObj.updateGBBGPalette(data); + parentObj.memory[0xFF47] = data; + } + } + this.memoryHighWriter[0x48] = this.memoryWriter[0xFF48] = function (parentObj, address, data) { + if (parentObj.memory[0xFF48] != data) { + parentObj.midScanLineJIT(); + parentObj.updateGBOBJPalette(0, data); + parentObj.memory[0xFF48] = data; + } + } + this.memoryHighWriter[0x49] = this.memoryWriter[0xFF49] = function (parentObj, address, data) { + if (parentObj.memory[0xFF49] != data) { + parentObj.midScanLineJIT(); + parentObj.updateGBOBJPalette(4, data); + parentObj.memory[0xFF49] = data; + } + } + this.memoryHighWriter[0x4D] = this.memoryWriter[0xFF4D] = function (parentObj, address, data) { + parentObj.memory[0xFF4D] = data; + } + this.memoryHighWriter[0x4F] = this.memoryWriter[0xFF4F] = this.cartIgnoreWrite; //Not writable in DMG mode. + this.memoryHighWriter[0x55] = this.memoryWriter[0xFF55] = this.cartIgnoreWrite; + this.memoryHighWriter[0x68] = this.memoryWriter[0xFF68] = this.cartIgnoreWrite; + this.memoryHighWriter[0x69] = this.memoryWriter[0xFF69] = this.cartIgnoreWrite; + this.memoryHighWriter[0x6A] = this.memoryWriter[0xFF6A] = this.cartIgnoreWrite; + this.memoryHighWriter[0x6B] = this.memoryWriter[0xFF6B] = this.cartIgnoreWrite; + this.memoryHighWriter[0x6C] = this.memoryWriter[0xFF6C] = this.cartIgnoreWrite; + this.memoryHighWriter[0x70] = this.memoryWriter[0xFF70] = this.cartIgnoreWrite; + this.memoryHighWriter[0x74] = this.memoryWriter[0xFF74] = this.cartIgnoreWrite; + } +} +GameBoyCore.prototype.recompileBootIOWriteHandling = function () { + //Boot I/O Registers: + if (this.inBootstrap) { + this.memoryHighWriter[0x50] = this.memoryWriter[0xFF50] = function (parentObj, address, data) { + cout("Boot ROM reads blocked: Bootstrap process has ended.", 0); + parentObj.inBootstrap = false; + parentObj.disableBootROM(); //Fill in the boot ROM ranges with ROM bank 0 ROM ranges + parentObj.memory[0xFF50] = data; //Bits are sustained in memory? + } + if (this.cGBC) { + this.memoryHighWriter[0x6C] = this.memoryWriter[0xFF6C] = function (parentObj, address, data) { + if (parentObj.inBootstrap) { + parentObj.cGBC = ((data & 0x1) == 0); + //Exception to the GBC identifying code: + if (parentObj.name + parentObj.gameCode + parentObj.ROM[0x143] == "Game and Watch 50") { + parentObj.cGBC = true; + cout("Created a boot exception for Game and Watch Gallery 2 (GBC ID byte is wrong on the cartridge).", 1); + } + cout("Booted to GBC Mode: " + parentObj.cGBC, 0); + } + parentObj.memory[0xFF6C] = data; + } + } + } + else { + //Lockout the ROMs from accessing the BOOT ROM control register: + this.memoryHighWriter[0x50] = this.memoryWriter[0xFF50] = this.cartIgnoreWrite; + } +} +//Helper Functions +GameBoyCore.prototype.toTypedArray = function (baseArray, memtype) { + try { + // The following line was modified for benchmarking: + if (settings[5] || (memtype != "float32" && GameBoyWindow.opera && this.checkForOperaMathBug())) { + return baseArray; + } + if (!baseArray || !baseArray.length) { + return []; + } + var length = baseArray.length; + switch (memtype) { + case "uint8": + var typedArrayTemp = new Uint8Array(length); + break; + case "int8": + var typedArrayTemp = new Int8Array(length); + break; + case "int32": + var typedArrayTemp = new Int32Array(length); + break; + case "float32": + var typedArrayTemp = new Float32Array(length); + } + for (var index = 0; index < length; index++) { + typedArrayTemp[index] = baseArray[index]; + } + return typedArrayTemp; + } + catch (error) { + cout("Could not convert an array to a typed array: " + error.message, 1); + return baseArray; + } +} +GameBoyCore.prototype.fromTypedArray = function (baseArray) { + try { + if (!baseArray || !baseArray.length) { + return []; + } + var arrayTemp = []; + for (var index = 0; index < baseArray.length; ++index) { + arrayTemp[index] = baseArray[index]; + } + return arrayTemp; + } + catch (error) { + cout("Conversion from a typed array failed: " + error.message, 1); + return baseArray; + } +} +GameBoyCore.prototype.getTypedArray = function (length, defaultValue, numberType) { + try { + if (settings[5]) { + throw(new Error("")); + } + // The following line was modified for benchmarking: + if (numberType != "float32" && GameBoyWindow.opera && this.checkForOperaMathBug()) { + //Caught Opera breaking typed array math: + throw(new Error("")); + } + switch (numberType) { + case "int8": + var arrayHandle = new Int8Array(length); + break; + case "uint8": + var arrayHandle = new Uint8Array(length); + break; + case "int32": + var arrayHandle = new Int32Array(length); + break; + case "float32": + var arrayHandle = new Float32Array(length); + } + if (defaultValue != 0) { + var index = 0; + while (index < length) { + arrayHandle[index++] = defaultValue; + } + } + } + catch (error) { + cout("Could not convert an array to a typed array: " + error.message, 1); + var arrayHandle = []; + var index = 0; + while (index < length) { + arrayHandle[index++] = defaultValue; + } + } + return arrayHandle; +} +GameBoyCore.prototype.checkForOperaMathBug = function () { + var testTypedArray = new Uint8Array(1); + testTypedArray[0] = -1; + testTypedArray[0] >>= 0; + if (testTypedArray[0] != 0xFF) { + cout("Detected faulty math by your browser.", 2); + return true; + } + else { + return false; + } +} + +// End of js/GameBoyCore.js file. + +// Start of js/GameBoyIO.js file. + +"use strict"; +var gameboy = null; //GameBoyCore object. +var gbRunInterval = null; //GameBoyCore Timer +var settings = [ //Some settings. + true, //Turn on sound. + false, //Boot with boot ROM first? (set to false for benchmarking) + false, //Give priority to GameBoy mode + [39, 37, 38, 40, 88, 90, 16, 13], //Keyboard button map. + true, //Colorize GB mode? + false, //Disallow typed arrays? + 4, //Interval for the emulator loop. + 15, //Audio buffer minimum span amount over x interpreter iterations. + 30, //Audio buffer maximum span amount over x interpreter iterations. + false, //Override to allow for MBC1 instead of ROM only (compatibility for broken 3rd-party cartridges). + false, //Override MBC RAM disabling and always allow reading and writing to the banks. + false, //Use the GameBoy boot ROM instead of the GameBoy Color boot ROM. + false, //Scale the canvas in JS, or let the browser scale the canvas? + 0x10, //Internal audio buffer pre-interpolation factor. + 1 //Volume level set. +]; +function start(canvas, ROM) { + clearLastEmulation(); + autoSave(); //If we are about to load a new game, then save the last one... + gameboy = new GameBoyCore(canvas, ROM); + gameboy.openMBC = openSRAM; + gameboy.openRTC = openRTC; + gameboy.start(); + run(); +} +function run() { + if (GameBoyEmulatorInitialized()) { + if (!GameBoyEmulatorPlaying()) { + gameboy.stopEmulator &= 1; + cout("Starting the iterator.", 0); + var dateObj = new_Date(); // The line is changed for benchmarking. + gameboy.firstIteration = dateObj.getTime(); + gameboy.iterations = 0; + // The following lines are commented out for benchmarking. + // gbRunInterval = setInterval(function () { + // if (!document.hidden && !document.msHidden && !document.mozHidden && !document.webkitHidden) { + // gameboy.run(); + // } + // }, settings[6]); + } + else { + cout("The GameBoy core is already running.", 1); + } + } + else { + cout("GameBoy core cannot run while it has not been initialized.", 1); + } +} +function pause() { + if (GameBoyEmulatorInitialized()) { + if (GameBoyEmulatorPlaying()) { + clearLastEmulation(); + } + else { + cout("GameBoy core has already been paused.", 1); + } + } + else { + cout("GameBoy core cannot be paused while it has not been initialized.", 1); + } +} +function clearLastEmulation() { + if (GameBoyEmulatorInitialized() && GameBoyEmulatorPlaying()) { + clearInterval(gbRunInterval); + gameboy.stopEmulator |= 2; + cout("The previous emulation has been cleared.", 0); + } + else { + cout("No previous emulation was found to be cleared.", 0); + } +} +function save() { + if (GameBoyEmulatorInitialized()) { + try { + var state_suffix = 0; + while (findValue("FREEZE_" + gameboy.name + "_" + state_suffix) != null) { + state_suffix++; + } + setValue("FREEZE_" + gameboy.name + "_" + state_suffix, gameboy.saveState()); + cout("Saved the current state as: FREEZE_" + gameboy.name + "_" + state_suffix, 0); + } + catch (error) { + cout("Could not save the current emulation state(\"" + error.message + "\").", 2); + } + } + else { + cout("GameBoy core cannot be saved while it has not been initialized.", 1); + } +} +function saveSRAM() { + if (GameBoyEmulatorInitialized()) { + if (gameboy.cBATT) { + try { + var sram = gameboy.saveSRAMState(); + if (sram.length > 0) { + cout("Saving the SRAM...", 0); + if (findValue("SRAM_" + gameboy.name) != null) { + //Remove the outdated storage format save: + cout("Deleting the old SRAM save due to outdated format.", 0); + deleteValue("SRAM_" + gameboy.name); + } + setValue("B64_SRAM_" + gameboy.name, arrayToBase64(sram)); + } + else { + cout("SRAM could not be saved because it was empty.", 1); + } + } + catch (error) { + cout("Could not save the current emulation state(\"" + error.message + "\").", 2); + } + } + else { + cout("Cannot save a game that does not have battery backed SRAM specified.", 1); + } + saveRTC(); + } + else { + cout("GameBoy core cannot be saved while it has not been initialized.", 1); + } +} +function saveRTC() { //Execute this when SRAM is being saved as well. + if (GameBoyEmulatorInitialized()) { + if (gameboy.cTIMER) { + try { + cout("Saving the RTC...", 0); + setValue("RTC_" + gameboy.name, gameboy.saveRTCState()); + } + catch (error) { + cout("Could not save the RTC of the current emulation state(\"" + error.message + "\").", 2); + } + } + } + else { + cout("GameBoy core cannot be saved while it has not been initialized.", 1); + } +} +function autoSave() { + if (GameBoyEmulatorInitialized()) { + cout("Automatically saving the SRAM.", 0); + saveSRAM(); + saveRTC(); + } +} +function openSRAM(filename) { + try { + if (findValue("B64_SRAM_" + filename) != null) { + cout("Found a previous SRAM state (Will attempt to load).", 0); + return base64ToArray(findValue("B64_SRAM_" + filename)); + } + else if (findValue("SRAM_" + filename) != null) { + cout("Found a previous SRAM state (Will attempt to load).", 0); + return findValue("SRAM_" + filename); + } + else { + cout("Could not find any previous SRAM copy for the current ROM.", 0); + } + } + catch (error) { + cout("Could not open the SRAM of the saved emulation state.", 2); + } + return []; +} +function openRTC(filename) { + try { + if (findValue("RTC_" + filename) != null) { + cout("Found a previous RTC state (Will attempt to load).", 0); + return findValue("RTC_" + filename); + } + else { + cout("Could not find any previous RTC copy for the current ROM.", 0); + } + } + catch (error) { + cout("Could not open the RTC data of the saved emulation state.", 2); + } + return []; +} +function openState(filename, canvas) { + try { + if (findValue(filename) != null) { + try { + clearLastEmulation(); + cout("Attempting to run a saved emulation state.", 0); + gameboy = new GameBoyCore(canvas, ""); + gameboy.savedStateFileName = filename; + gameboy.returnFromState(findValue(filename)); + run(); + } + catch (error) { + alert(error.message + " file: " + error.fileName + " line: " + error.lineNumber); + } + } + else { + cout("Could not find the save state " + filename + "\".", 2); + } + } + catch (error) { + cout("Could not open the saved emulation state.", 2); + } +} +function import_save(blobData) { + blobData = decodeBlob(blobData); + if (blobData && blobData.blobs) { + if (blobData.blobs.length > 0) { + for (var index = 0; index < blobData.blobs.length; ++index) { + cout("Importing blob \"" + blobData.blobs[index].blobID + "\"", 0); + if (blobData.blobs[index].blobContent) { + if (blobData.blobs[index].blobID.substring(0, 5) == "SRAM_") { + setValue("B64_" + blobData.blobs[index].blobID, base64(blobData.blobs[index].blobContent)); + } + else { + setValue(blobData.blobs[index].blobID, JSON.parse(blobData.blobs[index].blobContent)); + } + } + else if (blobData.blobs[index].blobID) { + cout("Save file imported had blob \"" + blobData.blobs[index].blobID + "\" with no blob data interpretable.", 2); + } + else { + cout("Blob chunk information missing completely.", 2); + } + } + } + else { + cout("Could not decode the imported file.", 2); + } + } + else { + cout("Could not decode the imported file.", 2); + } +} +function generateBlob(keyName, encodedData) { + //Append the file format prefix: + var saveString = "EMULATOR_DATA"; + var consoleID = "GameBoy"; + //Figure out the length: + var totalLength = (saveString.length + 4 + (1 + consoleID.length)) + ((1 + keyName.length) + (4 + encodedData.length)); + //Append the total length in bytes: + saveString += to_little_endian_dword(totalLength); + //Append the console ID text's length: + saveString += to_byte(consoleID.length); + //Append the console ID text: + saveString += consoleID; + //Append the blob ID: + saveString += to_byte(keyName.length); + saveString += keyName; + //Now append the save data: + saveString += to_little_endian_dword(encodedData.length); + saveString += encodedData; + return saveString; +} +function generateMultiBlob(blobPairs) { + var consoleID = "GameBoy"; + //Figure out the initial length: + var totalLength = 13 + 4 + 1 + consoleID.length; + //Append the console ID text's length: + var saveString = to_byte(consoleID.length); + //Append the console ID text: + saveString += consoleID; + var keyName = ""; + var encodedData = ""; + //Now append all the blobs: + for (var index = 0; index < blobPairs.length; ++index) { + keyName = blobPairs[index][0]; + encodedData = blobPairs[index][1]; + //Append the blob ID: + saveString += to_byte(keyName.length); + saveString += keyName; + //Now append the save data: + saveString += to_little_endian_dword(encodedData.length); + saveString += encodedData; + //Update the total length: + totalLength += 1 + keyName.length + 4 + encodedData.length; + } + //Now add the prefix: + saveString = "EMULATOR_DATA" + to_little_endian_dword(totalLength) + saveString; + return saveString; +} +function decodeBlob(blobData) { + /*Format is as follows: + - 13 byte string "EMULATOR_DATA" + - 4 byte total size (including these 4 bytes). + - 1 byte Console type ID length + - Console type ID text of 8 bit size + blobs { + - 1 byte blob ID length + - blob ID text (Used to say what the data is (SRAM/freeze state/etc...)) + - 4 byte blob length + - blob length of 32 bit size + } + */ + var length = blobData.length; + var blobProperties = {}; + blobProperties.consoleID = null; + var blobsCount = -1; + blobProperties.blobs = []; + if (length > 17) { + if (blobData.substring(0, 13) == "EMULATOR_DATA") { + var length = Math.min(((blobData.charCodeAt(16) & 0xFF) << 24) | ((blobData.charCodeAt(15) & 0xFF) << 16) | ((blobData.charCodeAt(14) & 0xFF) << 8) | (blobData.charCodeAt(13) & 0xFF), length); + var consoleIDLength = blobData.charCodeAt(17) & 0xFF; + if (length > 17 + consoleIDLength) { + blobProperties.consoleID = blobData.substring(18, 18 + consoleIDLength); + var blobIDLength = 0; + var blobLength = 0; + for (var index = 18 + consoleIDLength; index < length;) { + blobIDLength = blobData.charCodeAt(index++) & 0xFF; + if (index + blobIDLength < length) { + blobProperties.blobs[++blobsCount] = {}; + blobProperties.blobs[blobsCount].blobID = blobData.substring(index, index + blobIDLength); + index += blobIDLength; + if (index + 4 < length) { + blobLength = ((blobData.charCodeAt(index + 3) & 0xFF) << 24) | ((blobData.charCodeAt(index + 2) & 0xFF) << 16) | ((blobData.charCodeAt(index + 1) & 0xFF) << 8) | (blobData.charCodeAt(index) & 0xFF); + index += 4; + if (index + blobLength <= length) { + blobProperties.blobs[blobsCount].blobContent = blobData.substring(index, index + blobLength); + index += blobLength; + } + else { + cout("Blob length check failed, blob determined to be incomplete.", 2); + break; + } + } + else { + cout("Blob was incomplete, bailing out.", 2); + break; + } + } + else { + cout("Blob was incomplete, bailing out.", 2); + break; + } + } + } + } + } + return blobProperties; +} +function matchKey(key) { //Maps a keyboard key to a gameboy key. + //Order: Right, Left, Up, Down, A, B, Select, Start + for (var index = 0; index < settings[3].length; index++) { + if (settings[3][index] == key) { + return index; + } + } + return -1; +} +function GameBoyEmulatorInitialized() { + return (typeof gameboy == "object" && gameboy != null); +} +function GameBoyEmulatorPlaying() { + return ((gameboy.stopEmulator & 2) == 0); +} +function GameBoyKeyDown(e) { + if (GameBoyEmulatorInitialized() && GameBoyEmulatorPlaying()) { + var keycode = matchKey(e.keyCode); + if (keycode >= 0 && keycode < 8) { + gameboy.JoyPadEvent(keycode, true); + try { + e.preventDefault(); + } + catch (error) { } + } + } +} +function GameBoyKeyUp(e) { + if (GameBoyEmulatorInitialized() && GameBoyEmulatorPlaying()) { + var keycode = matchKey(e.keyCode); + if (keycode >= 0 && keycode < 8) { + gameboy.JoyPadEvent(keycode, false); + try { + e.preventDefault(); + } + catch (error) { } + } + } +} +function GameBoyGyroSignalHandler(e) { + if (GameBoyEmulatorInitialized() && GameBoyEmulatorPlaying()) { + if (e.gamma || e.beta) { + gameboy.GyroEvent(e.gamma * Math.PI / 180, e.beta * Math.PI / 180); + } + else { + gameboy.GyroEvent(e.x, e.y); + } + try { + e.preventDefault(); + } + catch (error) { } + } +} +//The emulator will call this to sort out the canvas properties for (re)initialization. +function initNewCanvas() { + if (GameBoyEmulatorInitialized()) { + gameboy.canvas.width = gameboy.canvas.clientWidth; + gameboy.canvas.height = gameboy.canvas.clientHeight; + } +} +//Call this when resizing the canvas: +function initNewCanvasSize() { + if (GameBoyEmulatorInitialized()) { + if (!settings[12]) { + if (gameboy.onscreenWidth != 160 || gameboy.onscreenHeight != 144) { + gameboy.initLCD(); + } + } + else { + if (gameboy.onscreenWidth != gameboy.canvas.clientWidth || gameboy.onscreenHeight != gameboy.canvas.clientHeight) { + gameboy.initLCD(); + } + } + } +} + +// End of js/GameBoyIO.js file. + +// Start of realtime.js file. +// ROM code from Public Domain LPC2000 Demo "realtime" by AGO. + +var gameboy_rom='r+BPyZiEZwA+AeBPySAobeEq6gAgKlYj5WJv6SRmZjjhKuXqACDJ/////////////////////////////////xgHZwCYhGcA2fX6/3/1xdXlIRPKNgHN9f/h0cHx6gAg+hLKtyAC8cnwgLcoF/CC7hjgUT6Q4FOv4FLgVOCAPv/gVfHZ8IG3IALx2fBA7gjgQA8PD+YB7gHgT/CC4FHuEOCCPojgU6/gUuBU4IE+/uBV4ID6NMs86jTL8dkKCgoKbWFkZSBieSBhZ28uIGVtYWlsOmdvYnV6b3ZAeWFob28uY29tCnVybDogc3BlY2N5LmRhLnJ1CgoKCv///////wDDSgnO7WZmzA0ACwNzAIMADAANAAgRH4iJAA7czG7m3d3Zmbu7Z2NuDuzM3dyZn7u5Mz5BR08nUyBSRUFMVElNRSCAAAAAAgEDADMBSTQeIUD/y37I8P/1y4fg//BE/pEg+su+8eD/yT7A4EY+KD0g/cnF1eWvEQPK1RITEhMGAyEAyuXFTgYAIWAMCQkqEhMqEhPB4SMFIOrhrwYIzYsU4dHByf////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAgMFBggJCwwOEBETFBYXGBobHR4fISIjJSYnKSorLC0uLzAxMjM0NTY3ODg5Ojo7PDw9PT4+Pj8/Pz9AQEBAQEBAQEBAPz8/Pz4+PT08PDs7Ojk5ODc2NTU0MzIxMC8uLCsqKSgmJSQjISAfHRwaGRcWFRMSEA8NCwoIBwUEAgH//fz6+ff29PPx8O7t6+ro5+Xk4uHg3t3c2tnY19bU09LR0M/OzczLysnJyMfGxsXFxMPDw8LCwcHBwcDAwMDAwMDAwMDBwcHBwsLDw8PExcXGxsfIycnKy8zNzs/Q0dLT1NXX2Nna3N3e4OHi5OXn6Onr7O7v8fL09vf5+vz9AAEECRAZJDFAUWR5kKnE4QAhRGmQueQRQHGk2RBJhMEAQYTJEFmk8UCR5DmQ6UShAGHEKZD5ZNFAsSSZEIkEgQCBBIkQmSSxQNFk+ZApxGEAoUTpkDnkkUDxpFkQyYRBAMGESRDZpHFAEeS5kGlEIQDhxKmQeWRRQDEkGRAJBAEAAQQJEBkkMUBRZHmQqcThACFEaZC55BFAcaTZEEmEwQBBhMkQWaTxQJHkOZDpRKEAYcQpkPlk0UCxJJkQiQSBAIEEiRCZJLFA0WT5kCnEYQChROmQOeSRQPGkWRDJhEEAwYRJENmkcUAR5LmQaUQhAOHEqZB5ZFFAMSQZEAkEAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAgICAgIDAwMDBAQEBAUFBQUGBgYHBwcICAkJCQoKCgsLDAwNDQ4ODw8QEBEREhITExQUFRUWFxcYGRkaGhscHB0eHh8gISEiIyQkJSYnJygpKisrLC0uLzAxMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1FSU1RVVldZWltcXV9gYWJkZWZnaWprbG5vcHJzdHZ3eXp7fX5/gYKEhYeIiouNjpCRk5SWl5manJ2foKKkpaepqqytr7GytLa3ubu9vsDCxMXHycvMztDS1NXX2dvd3+Hi5Obo6uzu8PL09vj6/P4A//z38Ofcz8CvnIdwVzwfAN+8l3BHHO/Aj1wn8Ld8PwC/fDfwp1wPwG8cx3AXvF8AnzzXcAecL8BP3Gfwd/x/AH/8d/Bn3E/AL5wHcNc8nwBfvBdwxxxvwA9cp/A3fL8AP3y38Cdcj8DvHEdwl7zfAB88V3CHnK/Az9zn8Pf8/wD//Pfw59zPwK+ch3BXPB8A37yXcEcc78CPXCfwt3w/AL98N/CnXA/AbxzHcBe8XwCfPNdwB5wvwE/cZ/B3/H8Af/x38GfcT8AvnAdw1zyfAF+8F3DHHG/AD1yn8Dd8vwA/fLfwJ1yPwO8cR3CXvN8AHzxXcIecr8DP3Ofw9/z/AP/////////////////////+/v7+/v79/f39/fz8/Pz8+/v7+vr6+vn5+fj4+Pf39/b29fX19PTz8/Ly8fHw8PDv7u7t7ezs6+vq6uno6Ofn5uXl5OPj4uHh4N/e3t3c3Nva2djY19bV1NTT0tHQz8/OzczLysnIx8bFxMPCwcDAvr28u7q5uLe2tbSzsrGwr62sq6qpqKalpKOioJ+enZyamZiWlZSTkZCPjYyLiYiHhYSCgYB+fXt6eHd1dHJxcG5sa2loZmVjYmBfXVtaWFdVU1JQTk1LSUhGREJBPz08Ojg2NDMxLy0rKigmJCIgHx0bGRcVExEPDQsJBwUDAf9/Px8PBwMBgEAgEAgEAgEAAQEBAQEBAQEBAQEA//////////////+AEAcAAQABAAEBAAEBAAEA/wD//wD//wD/AP+AKwcBAAEAAQD/AP8A/wD/AP8A/wABAAEAAQCARgcBAQEBAQD//////////////wABAQEBAQGAYQf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+AwODw+Pz+/xEAwAGxwj4E9cU+BfUKbwMKZ37+gCALI34LAiN+AwILGOsahhIDHBwcHPE9IN7BIRAAGVRdPgX1Cm8DCmcalhIjfAILfQIDAx0dHR3xPSDnIRgAGVRd8T0grskRAcAB6cI+BPUKbwMKZ37+gCALI34LAiN+AwILGOs+CvUahhIcHBwc8T0g9CN8Agt9AgMD8T0g0MkgIEZJTExFRCAgIFBPTFlHT05TIEhFTElDT1BURVJJTiBBQ1RJT04gIQDADgpwLHQsGhPWICI2ACwNIPE+oOoQyngBCQDlYmsJVF3hDMYKR3AsdCwaG9YgIjYALA0g8a/qEcrJ+hDK/jDI1gTqEMpHPqCQ/lA4Aj5QDgAM1ggw+3ghAcARBAB3xggZDSD5+hHKg+oRykf+UDgCPlAOAAzWCDD7eC4td9YIGQ0g+ckh9grzMf/PzVABr+Am4P/gD+BD4EL2SOBFPkDgQT4E4AfN9RM+CuoAAA4HeeBwJqCvIstsKPsNIPIh/v8yy30g+wEKABH1/yFpAc3kE+cCAVYAEQDBIVt2zeQTrwYYIWsOzYsUIYsOzaQUxwGwAxEAgCGhF8XlzeQT4cERAIjN5BMhAJgRAwABYMDHcc9yIwUg+BQdIPHN9RMhuxUGAc2WE82JEz5E4EGv4EU+A+D/+z4B6hLK4E0QAAB4zccTBSD6zZATxwEACFkhAIhzIwt4sSD5IQDHPv9FdyRwJCJ3JXclcCwg8x5/IQCYx3PPNgDL1DYIx3PLlCPLVCjuPoABDxARIAAhIpjF5XfL1HfLlDwZDSD1POEswQUg7D486jPLr+o0yz3qL8s+oOCCPgLqG8vNiRM+ROBBr+BFPgPg/68+ACEXyyI+CiI+IHev6h7L4ITgluodyz4B6h/L6g/D6g3KBlARnAjNxAjNcwsBLAHFzTsLzQAJwQt4sSDzzZATxwEACFkhAIhzIwt4sSD5zfUTeQYQIYMOzYsUPv/qKcsGgBGwCM3ECM2JEwEsAcXNbAzNAAnBC3ixIPOv6hLKzZATPpDgU/PHAbADEQCIIaEXzeQTzfUTIQIWBgHNlhPNiRM+ROBBr+BFPgPg//sY/j4D6gAgzcRGBgMhF8t+gCJ+gDwifoB3zckP+jDLb/oxy2fNtgs+AeCB8IG3IPv6Dcq3KAPNcwHJ+h3LBgARTg2Hb2AZKmZvTgkq4ItfKjzgjD1PKuCNe4eHg0cRAMUqEhwFIPp5h4eBRxEAxCoSHAUg+n3qMMt86jHLyfCL4I7wjOCP8I3gkBEAw9XlzcoQ4dHwpeaAEhwBAwAJ8JA94JAg6CEAxQYPKk+gXxq3IB95yzegXxq3IBYqT6BfGrcgD3nLN6BfGrcgBiwsLBhHLOXNyhDwlrcoKwYB8KXGP0/LfygBBcXwpMY/Vx4AzZMOe8H18KPGP1ceAM2TDsHhJCJwGAzhJPCjxj8i8KTGPyIsJRbDBg/wjj3gjsLiCz4C6gAgw1JhfBjcHwAL7mpIYL9vBgMhF8t+gCJ+gDwifoB3zckPIcsNEQDGzf4MI+U+A+oAICEgy83+DPocy9YIb+ocy82vYAYDESDLIWIOxeXVzcoQ4fCjxhQi8KQiNg8jVF3hIyMjwQUg5M3ERsE+AeoAIAr+/ygiEQDGbyYAKRnlAwoDbyYAKRleI1bhKmZvxc0xHMwAQMEY2T4B4IHwgbcg+8l+PMjl1c3KEAYB8KVPy38oAQXF8KTLf/UoAi88Vx4AzZMO8XsgAi88xn/B9fCjy3/1KAIvPFceAM2TDvF7KAIvPMZ/wdESE3gSE+EjIyMYsFANAgAIDAYCRCgoFANEKAAUE0QAABQSRAAoFAJVKCjsA1UoAOwTVQAA7BJVACjsAAAEBQAAAAEFAAEBAwIGAQEDBwYCAgAHAwICAAcEAwMBAgYDAwEFBgQEAAECBAQAAwIFBQQFBgUFBAcGMgAAzgAAADIAAM4AAAAyAADOKAAAHhEAChEAAAAACu8AHu8AFAAKFAD2FAAPCgAF6AAC4gAQ3gAQ4gD+CgD74g4C3Q4C4QAC4vIC3fIC4AAM4PsM4PsQ4/sJ3fsJ/wABAQICAwMEBAUFAAAGAQYCBgMGBAYFBgAHAQcCBwMHBAcFBwYICQoKCwsMDA0NDgoPDxAQEQoSEhMTERQVFRYVFxUYCBkIGggb/yAAD/AbD/DlD/9//3+XEQAAAGD/f5cRAAAYAP9/lxEAAIB8lxH/f/9/QHz/f18IAADLI8sSeC9HeS9PAyEAAH2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEssoyxkJ0BPJ+hfLJgJvfuCcLzzgnn3GQG9+4Jvgn6/gmOCZ4JrgneChPkDgl/oYy29OfcZAb0bFeOCgeeCizdMQ8KPgpvCk4KnwpeCsr+Cg4KI+QOChzdMQ8KPgp/Ck4KrwpeCtwXkvPOCgr+CheOCizdMQ8KPgmfCk4JzwpeCf8Kbgl/Cp4JrwrOCd8KfgmPCq4JvwreCe+hnLJgJvTn3GQG9GxXjgoHkvPOChr+CizdMQ8KPgpvCk4KnwpeCswXngoHjgoa/gos3TEPCj4KfwpOCq8KXgra/goOChPkDgos3TEPCj4JnwpOCc8KXgn/Cm4JfwqeCa8KzgnfCn4JjwquCb8K3gnskq4KAq4KEq4KLwl1/woCYGV8t6ICDLe3soJy88X3qTMAIvPG96g1YlXiVvfiVuZxl8LzwYH3ovPFfLeyjhey88X5IwAi88b3qDViVeJW9+JW5nGXxH8Jhf8KEmBlfLeiAgy3t7KCcvPF96kzACLzxveoNWJV4lb34lbmcZfC88GB96LzxXy3so4XsvPF+SMAIvPG96g1YlXiVvfiVuZxl8T/CZX/CiJgZXy3ogIMt7eygnLzxfepMwAi88b3qDViVeJW9+JW5nGXwvPBgfei88V8t7KOF7LzxfkjACLzxveoNWJV4lb34lbmcZfICB4KPwml/woCYGV8t6ICDLe3soJy88X3qTMAIvPG96g1YlXiVvfiVuZxl8LzwYH3ovPFfLeyjhey88X5IwAi88b3qDViVeJW9+JW5nGXxH8Jtf8KEmBlfLeiAgy3t7KCcvPF96kzACLzxveoNWJV4lb34lbmcZfC88GB96LzxXy3so4XsvPF+SMAIvPG96g1YlXiVvfiVuZxl8T/CcX/CiJgZXy3ogIMt7eygnLzxfepMwAi88b3qDViVeJW9+JW5nGXwvPBgfei88V8t7KOF7LzxfkjACLzxveoNWJV4lb34lbmcZfICB4KTwnV/woCYGV8t6ICDLe3soJy88X3qTMAIvPG96g1YlXiVvfiVuZxl8LzwYH3ovPFfLeyjhey88X5IwAi88b3qDViVeJW9+JW5nGXxH8J5f8KEmBlfLeiAgy3t7KCcvPF96kzACLzxveoNWJV4lb34lbmcZfC88GB96LzxXy3so4XsvPF+SMAIvPG96g1YlXiVvfiVuZxl8T/CfX/CiJgZXy3ogIMt7eygnLzxfepMwAi88b3qDViVeJW9+JW5nGXwvPBgfei88V8t7KOF7LzxfkjACLzxveoNWJV4lb34lbmcZfICB4KXJ9T6D4EDxyfWv4EDxyfXF1eXHKv7/KFD+FiAaTiMqh4eHVF1vJgApKXgGmAlHelRne11vGNzGYBLPeBIcGNN2ACETyjQ1KPc1yfvFBmR2AAUg+8HJ+3YABSD7yfXF1eUqEhMLeLEg+OHRwfHJxeUBAKAhAMDNAxThwcnF5XEjBSD74cHJxdXlAQCAIZXKzQMU4dHBycXV5a/qFcuwIAwaEyIaEzIEDXjqFcvlxRq+EyAPIxq+IAkTIw0gCMHhGBkrGyMjBSDmecFPBBoTIhoTIiEVyzThDSDS+hXL4dHBydVfzXIUuzD60cnF9cH6FMrLD6mAR/CLkR+AR/AFqOoUysHJ9cXltxcXF/aA4Ggq4GkFIPo+5OBH4cHxyfXF5bcXFxf2gOBqKuBrBSD6PuTgSOBJ4cHxyT4Q4ADwAC/LN+bwRz4g4ADwAC/mD7DqFsvJzyEAgK8GIE8+CCINIPwFIPnHIQCABiBPIg0g/AUg+cnFzQMVSs0eFcHJxc0RFUjNGRVLzSMVwcnFBgHNKxXBycUGABj2xQYDGPHFBgLNKxXByfXlh4eAJsBvceHxyfXlh4cmwG9GI04jXiNW4fHJ9cXV5eCDKjzK8BPWIF/wg835FF95xghPezwY6PXF1eXF1c13FdHBex4FIS3LGNUBKssR8NjNlRURGPzNlRURnP/NlRUR9v/NlRUR//8+LzwZOPwCA3ovV3svXxMZyTAwRlBT/zAwUE5UU/8wMExJTkVT/xYFB1dFTENPTUUgVE8WBQgtUkVBTFRJTUUtFgAJREVNTyBNQURFIEVTUEVDSUFMTFkWAQpGT1IgTENQJzIwMDAgUEFSVFn/FgAAR1JFRVRJTlg6ICAgICAgICAgICAWAAFEU0MsUEFOLFNBQixGQVRBTElUWRYAAkpFRkYgRlJPSFdFSU4sSUNBUlVTFgADRE9YLFFVQU5HLEFCWVNTICAgICAWAAQgICAgICAgICAgICAgICAgICAgIBYABUNSRURJVFM6ICAgICAgICAgICAgFgAGQUxMIEdGWCZDT0RFIEJZIEFHTyAWAAdIRUxJQ09QVEVSIDNEIE1PREVMIBYACENSRUFURUQgQlkgQlVTWSAgICAgFgAJICAgICAgICAgICAgICAgICAgICAWAApVU0VEIFNPRlRXQVJFOiAgICAgIBYAC1JHQkRTLE5PJENBU0gsRkFSICAgFgAMICAgICAgICAgICAgICAgICAgICAWAA1DT05UQUNUOiAgICAgICAgICAgIBYADkdPQlVaT1ZAWUFIT08uQ09NICAgFgAPSFRUUDovL1NQRUNDWS5EQS5SVSAWABAgICAgICAgICAgICAgICAgICAgIBYAEVNFRSBZT1UgT04gR0JERVYyMDAw/wAAAAAAAAAAAAAAAAAAAAAICBwUHBQ4KDgoMDBwUCAgKCh8VHxUKCgAAAAAAAAAABQUPip/QT4qfFT+gnxUKCgICDw0fkL8rP6Cfmr8hHhYJCR+Wn5SPCR4SPyU/LRISBgYPCR+Wjwkflr8tH5KNDQQEDgocFAgIAAAAAAAAAAABAQOChwUOCg4KDgoHBQICBAQOCgcFBwUHBQ4KHBQICAAABQUPio8NH5CPCx8VCgoAAAICBwUPDR+QjwsOCgQEAAAAAAAAAAAEBA4KHBQcFAAAAAAAAB8fP6CfHwAAAAAAAAAAAAAAAAwMHhIeEgwMAQEDgoeEjwkeEjwkOCgQEAYGDwkflr+qv6q/LR4SDAwGBg8JHxUPDQ4KHxs/oJ8fBwcPiJ+Wjw0eEj8vP6CfHwcHD4iflo8NE5K/LR4SDAwJCR+Wn5afFT8tP6CfGwQEBwcPiJ8XPyEfnr8tHhIMDAYGDwkeFj8pP66/LR4SDAwPDx+Qv66XFQ4KHBQcFAgIBwcPiJ+Wjwkflr8tPiIcHAcHD4iflr+sn5KfHT4iHBwAAAAAAgIHBQICBAQOCgQEAAACAgcFAgIEBA4KDgocFAAAAAAHBQ4KHBQcFA4KAAAAAAAADw8fkJ8fPyEeHgAAAAAAAA4KBwUHBQ4KHBQAAAYGDwkflr8tHhoEBA4KBAQHBw+In5a/rL8pPi4+IhwcBwcPiJ+Wv66/oL+uvy0SEg4OHxEflr8pP6a/LT4iHBwHBw+In5a5qbgoP6y/IxwcDAweEh8VH5a7qr+uvyEeHgcHD4ifFx8RHhY/Lz+gnx8HBw+Inxc/IT4uOCg4KBAQBwcPiJ+Wvy8/qL+uvyEeHgkJH5a/rr+gv66/LT8tEhIPDx+QjwsOChwUHhY/IR4eDw8fkI+Og4KXFT8tHhIMDAkJH5afFR+Qv66/LT8tEhIICBwUHBQ4KDkpP66fEQ4OCgofFR+Qv6q/rr8tPy0SEgkJH5a/pr+qv6y7qr8tEhIHBw+In5a7qruqvy0+IhwcBwcPiJ+Wv66/IT4uOCgQEAcHD4iflr+uv6q/LT+inZ2HBw+In5a/LT4iPy0/LRISBwcPiJ8XP6Cfnr8tPiIcHB8fP6CfGw4KHBQcFBwUCAgJCR+Wn5a7qruqvy0eEgwMERE7qruqnxUfFR4SHBQICAkJH5aflr+uv6q/KR8VCgoJCR+WnxUOCg8JH5a/LRISCQkflr8tPy0eEhwUHBQICA8PH5C/LT46Dwsflr8hHh4HBw+IjwsOChwUHhYfEQ4OEBA4KDwkHhIPCQeEg4KBAQ4OHxEPDQcFDgoeGj4iHBwGBg8JH5a7qpERAAAAAAAAAAAAAAAAAAAAAB8fP6CfHx81rdPfJJne5X1MAIvPEevyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxnLEcsXlDABhMsRyxeUMAGEyxHLF5QwAYTLEcsXlDABhMsRyxeUMAGEyxHLF5QwAYTLEcsXlDABhMsRyxeUMAGEeRcvT/F5MAIvPIVvJrcBAAA+t7zLEbrLED6/vcsRu8sQPj+8P8sRuj/LEL0/yxG7P8sQeLHIeKHAebcgB3xiV31rX3jLH9L/HD5AlU97lW96lPUwAi88R6/LGTABgB/LGTABgB/LGTABgB/LGTABgB/LGTABgB/LGTABgB/LGTABgB/LGTABgB/LGcsRyxeVMAGFyxHLF5UwAYXLEcsXlTABhcsRyxeVMAGFyxHLF5UwAYXLEcsXlTABhcsRyxeVMAGFyxHLF5UwAYV5Fy9P8XkwAi88hGcuQMMxHMsf0pcdPkCUT3qUZ3uV9TACLzxHr8sZMAGAH8sZMAGAH8sZMAGAH8sZMAGAH8sZMAGAH8sZMAGAH8sZMAGAH8sZMAGAH8sZyxHLF5QwAYTLEcsXlDABhMsRyxeUMAGEyxHLF5QwAYTLEcsXlDABhMsRyxeUMAGEyxHLF5QwAYTLEcsXlDABhHkXL0/xeTACLzyFbyZAwzEcyx/SoRt91r9PfZNvepT1MAIvPEevyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxnLEcsXlTABhcsRyxeVMAGFyxHLF5UwAYXLEcsXlTABhcsRyxeVMAGFyxHLF5UwAYXLEcsXlTABhcsRyxeVMAGFeRcvT/F5MAIvPIRnLr/DMRz//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3q8MAVUZ3tdb3u90pdAfZNPepRfkTA+V3nLPy88g+CDPn+R5YdPbyYARCkpKQkBkVIJweV41kAXb3nWQB8fH+YPZ/CChGd55gcGB/YITwpP8INHLMl5S1+RV3nLPy88g+CDPneR5YdPbyYARCkpKQkBklsJweV41kAXb3nWQB8fH+YPZ/CChGd55gcGB/YITwpP8INHLMmVT3qUX5EwPld5yz8vPIPggz5/keWHT28mAEQpKSkJAR9BCcHleNZAF2951kAfHx/mD2fwgoRneeYHBgf2CE8KT/CDRyzJeUtfkVd5yz8vPIPggz53keWHT28mAEQpKSkJASBKCcHleNZAF2951kAfHx/mD2fwgoRneeYHBgf2CE8KT/CDRyzJfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkyX6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALMl+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASXJfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsyf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wHRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyIxDsrh+eEWwxgNIf3Er+oLyuoMyiwsLPCPPcjgj14sGrcqKPDGeeCT+g3Ktygm+gvKPP4DIAI+AeoLyiAH+gzKPOoMyvoMyl8WyvCT1nkSe8bH4JMqTypHKuUmxl+Hh4M8PG8qX1Z5h4eBPDxveE4sh4eARjw8bypmb3y6OAViV31rX3y4OAVgR31pT3q4OAVQR3tZT3iU4JR8h+CV5dXFr+CSzUpifeCS0eHVzUpi0eE+AeCSzUpi8JRfPniTZy5Hr8sdMAGEH8sdMAGEH8sdMAGEH8sdMAGEH8sdMAGEH8sdMAGEH8sdMAGEH8sdMAGEH8sdxkBnCA7KMQDC5fCVb8l7vTBVfZNPepRfkTAkV3nLPy88Rz5/kU3Fh09vJgBEKSkJAfdiCcHlJsLwkm94BoDJeUtfkVd5yz8vPEc+d5FNxYdPbyYARCkpCQH4ZwnB5SbC8JJveAaAyZVPepRfkTAkV3nLPy88Rz5/kU3Fh09vJgBEKSkJAalsCcHlJsLwkm94BoDJeUtfkVd5yz8vPEc+d5FNxYdPbyYARCkpCQGqcQnB5SbC8JJveAaAyYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNyXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDcmDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDMlxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggzJxg+Hh+oawXovpl96obMiei+mX3qgszIkeRgAInAtJCJwLSQicC0kInAtJCJwLSQicC0kInAtJCJwLSQicC0kInAtJCJwLSQicC0kInAtJCJwLSQW/8n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+qqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVACEzDDPAABIAEjPAMwwAIQAhMwwzwAASABIzwDMMACEAITMMM8AAEgASM8AzDAAhACEzDDPAABIAEjPAMwwAIQAhMwwzwAASABIzwDMMACEAITMMM8AAEgASM8AzDAAhACEzDDPAABIAEjPAMwwAIQAhMwwzwAASABIzwDMMACEAITMMM8AAEgASM8AzDAAhACEzDDPAABIAEjPAMwwAIQAhMwwzwAASABIzwDMMACEAITMMM8AAEgASM8AzDAAhACEzDDPAABIAEjPAMwwAIQAhMwwzwAASABIzwDMMACEAITMMM8AAEgASM8AzDAAhACEzDDPAABIAEjPAMwwAIQj8GH4y/WT7wO+B50CzINkI/Bh+Mv1k+8DvgedAsyDZCPwYfjL9ZPvA74HnQLMg2Qj8GH4y/WT7wO+B50CzINkI/Bh+Mv1k+8DvgedAsyDZCPwYfjL9ZPvA74HnQLMg2Qj8GH4y/WT7wO+B50CzINkI/Bh+Mv1k+8DvgedAsyDZCPwYfjL9ZPvA74HnQLMg2Qj8GH4y/WT7wO+B50CzINkI/Bh+Mv1k+8DvgedAsyDZCPwYfjL9ZPvA74HnQLMg2Qj8GH4y/WT7wO+B50CzINkI/Bh+Mv1k+8DvgedAsyDZCPwYfjL9ZPvA74HnQLMg2Qj8GH4y/WT7wO+B50CzINnMzMzMMzMzM8zMzMwzMzMzzMzMzDMzMzPMzMzMMzMzM8zMzMwzMzMzzMzMzDMzMzPMzMzMMzMzM8zMzMwzMzMzzMzMzDMzMzPMzMzMMzMzM8zMzMwzMzMzzMzMzDMzMzPMzMzMMzMzM8zMzMwzMzMzzMzMzDMzMzPMzMzMMzMzM8zMzMwzMzMzzMzMzDMzMzPMzMzMMzMzM8zMzMwzMzMzzMzMzDMzMzPMzMzMMzMzM8zMzMwzMzMzzMzMzDMzMzPMzMzMMzMzM8zMzMwzMzMzzMzMzDMzMzPMzMzMMzMzM8zMzMwzMzMzzMzMzDMzMzPMzMzMMzMzM8zMzMwzMzMzwMDAwAwMDAzAwMDADAwMDMDAwMAMDAwMwMDAwAwMDAzAwMDADAwMDMDAwMAMDAwMwMDAwAwMDAzAwMDADAwMDMDAwMAMDAwMwMDAwAwMDAzAwMDADAwMDMDAwMAMDAwMwMDAwAwMDAzAwMDADAwMDMDAwMAMDAwMwMDAwAwMDAzAwMDADAwMDMDAwMAMDAwMwMDAwAwMDAzAwMDADAwMDMDAwMAMDAwMwMDAwAwMDAzAwMDADAwMDMDAwMAMDAwMwMDAwAwMDAzAwMDADAwMDMDAwMAMDAwMwMDAwAwMDAzAwMDADAwMDMDAwMAMDAwMwMDAwAwMDAzAwMDADAwMDPHxAQEBAQEBHx8QEBAQEBDx8QEBAQEBAR8fEBAQEBAQ8fEBAQEBAQEfHxAQEBAQEPHxAQEBAQEBHx8QEBAQEBDx8QEBAQEBAR8fEBAQEBAQ8fEBAQEBAQEfHxAQEBAQEPHxAQEBAQEBHx8QEBAQEBDx8QEBAQEBAR8fEBAQEBAQ8fEBAQEBAQEfHxAQEBAQEPHxAQEBAQEBHx8QEBAQEBDx8QEBAQEBAR8fEBAQEBAQ8fEBAQEBAQEfHxAQEBAQEPHxAQEBAQEBHx8QEBAQEBDx8QEBAQEBAR8fEBAQEBAQ8fEBAQEBAQEfHxAQEBAQEPHxAQEBAQEBHx8QEBAQEBCqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlUC4XIscAl7InAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJLCwly2XIJGjJycnJyeEicAlyLHAJeyJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSwsJctlyCRoycnJycnhInAJInAJcixwCXsicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAksLCXLZcgkaMnJycnJ4SJwCSJwCSJwCXIscAl7InAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJLCwly2XIJGjJycnJyeEicAkicAkicAkicAlyLHAJeyJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSwsJctlyCRoycnJycnhInAJInAJInAJInAJInAJcixwCXsicAkicAkicAkicAkicAkicAkicAkicAkicAkicAksLCXLZcgkaMnJycnJ4SJwCSJwCSJwCSJwCSJwCSJwCXIscAl7InAJInAJInAJInAJInAJInAJInAJInAJInAJLCwly2XIJGjJycnJyeEicAkicAkicAkicAkicAkicAkicAlyLHAJeyJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSwsJctlyCRoycnJycnhInAJInAJInAJInAJInAJInAJInAJInAJcixwCXsicAkicAkicAkicAkicAkicAkicAksLCXLZcgkaMnJycnJ4SJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCXIscAl7InAJInAJInAJInAJInAJInAJLCwly2XIJGjJycnJyeEicAkicAkicAkicAkicAkicAkicAkicAkicAkicAlyLHAJeyJwCSJwCSJwCSJwCSJwCSwsJctlyCRoycnJycnhInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJcixwCXsicAkicAkicAkicAksLCXLZcgkaMnJycnJ4SJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCXIscAl7InAJInAJInAJLCwly2XIJGjJycnJyeEicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAlyLHAJeyJwCSJwCSwsJctlyCRoycnJycnhInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJcixwCXsicAksLCXLZcgkaMnJycnJ4SJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCXIscAl7LCwly2XIJGjJycnJydE+t5LI4IXmB8RSRPCFHx8focjlzTJE4XkicCwicCwicCwicCwicCwicCwicCwicCzJ+ABUXWhHeZAfyx1nATNZCfCCMQCv/qAoAzEAvwH/AOlHPgeQVF1HDjOvyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxlHIbRXCeViaz7/AQ8Ayfoay2/6G8uFZ/4UIAU+/y0YBtbsIAU8LOoby3zqGsvNr2AhlEbNyhDwpMagV/Cjxn9f1SGXRs3KEPCkxqBn8KPGf2/RzTEcKAsf2hhZH9oYWcPERny6OAViV31rX+XNmkbh1Xu90sxFe9ZA4Ih9k0884Il6lF/ghjzgij2RMGvgh3nLPy88g+CF8IIBDwBvVHzWQBfLN6GFZ3rmBxdvGAjwij3KAETgivCJX/CGV/CFGASCHSgLy38g+Ffwh4LghR3NYkUY2nvgifCIg1/l5gf2CG8mB1Z7aB8fHx/LHR/LHeYDxkBnrx7/6XnghpPgh3vLPy88geCF8IIBDwBvVHzWQBfLN6GFZ3rmBxdv8Ilf8IZX8IXLfyAHV/CHgh0YAYLghc1iRfCKPcoAROCKGN171kDgiHuVTzzgiXqUX+CGPOCKPZEwa+CHecs/LzyD4IXwggEPAG9UfNZAF8s3oYVneuYHF28YCPCKPcoAROCK8Ilf8IZX8IUYBIIdKAvLfyD4V/CHguCFHc0qRhjae+CJ8IiTX+XmB/YQbyYHVntoHx8fH8sdH8sd5gPGQGc+/1jpeeCGk+CHe8s/LzyB4IXwggEPAG9UfNZAF8s3oYVneuYHF2/wiV/whlfwhct/IAdX8IeCHRgBguCFzSpG8Io9ygBE4IoY3UYAALoAAHzWQMhPHx8f5h9HeeYHKAsE/gUwBvUhylblBT4PkCHJRoRn5fCCZ69vyfCCZ69vIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIsnxAQ8APcqEVz0odj0oOj0idwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwksLCXLZSgCJGgidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwksLCXLZSgCJGgidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwksLCXLZSgCJGgidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkid8kicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAksLCUicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAksLCUicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAksLCUicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAksLCUicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAksLCUicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAksLCUicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAloyfgAVF3wgjEAr/6gKAMxAL8B/wDFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcVia/nJJgJ+4JovPOCYfcZAb37gl+Cbr+CZ4JzgneCePkDgn8n/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Aw=='; + +// End of realtime.js file. diff --git a/js/src/octane/index.html b/js/src/octane/index.html new file mode 100644 index 0000000000..77cbdfb468 --- /dev/null +++ b/js/src/octane/index.html @@ -0,0 +1,453 @@ + + + + + + +Octane 2.0 JavaScript Benchmark + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ Welcome to Octane 2.0, a JavaScript benchmark for the modern web. For more accurate results, start the browser anew before running the test. +

+ What's new in Octane 2.0 - Documentation - Run Octane v1 +
+ + +
+ +
+
+
+ + +
+
+ +
+
+ +
+
+ +
+ +
+ + +
+ +
+ +
+
+ +
+
+ +
+
+ +
+ +
+ + +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+ + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+ + +
+ + + + +
+ + + + + + diff --git a/js/src/octane/mandreel.js b/js/src/octane/mandreel.js new file mode 100644 index 0000000000..82ebd23d36 --- /dev/null +++ b/js/src/octane/mandreel.js @@ -0,0 +1,277403 @@ +// Portions copyright 2012 Google, Inc. +// Copyright 2012 Onan Games. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +var MandreelBenchmark = new BenchmarkSuite('Mandreel', [16831872, 49852], + [new Benchmark('Mandreel', + false, + false, + 15, + runMandreel, + setupMandreel, + tearDownMandreel, + RMSMandreel, + 4)]); + +var mandreelSumSquaredPauses = 0; +var mandreelSamples = 0; +var mandreelSampleTimeStart = 0.0; + +function setupMandreel() { + // Check for Typed Arrays support, throw error if not. + if (!(typeof Uint8Array != "undefined" && + typeof Float64Array != "undefined" && + typeof (new Uint8Array(0)).subarray != "undefined")) { + throw "TypedArrayUnsupported"; + } + + my_old_constructors = mandreel_call_constructors; + mandreel_call_constructors = my_mandreel_call_constructors; + startMandreelTimer(); + startApp(); + _mandreelAppAudioReady(); +} + +function runMandreel() { + Mandreel_currentTime = 0; + var sp = g_stack_pointer+800*1024; + for (var i=0;i>2] = 640; + heapU32[(sp+4)>>2] = 480; + __mandreel_internal_SetResolution(sp); + __mandreel_internal_init(g_stack_pointer+800*1024); + __init(g_stack_pointer+800*1024); + for (var i = 0; i < 20; i++) { + render(); + Mandreel_flushTimeouts(); + updateMandreelStats(performance.now()); + } + Mandreel_checkState(); +} + +function updateMandreelStats(time) { + var pause = time - mandreelSampleTimeStart; + mandreelSampleTimeStart = time; + mandreelSumSquaredPauses += (pause * pause); + mandreelSamples++; +} + +function startMandreelTimer() { + mandreelSampleTimeStart = performance.now(); +} + +function RMSMandreel() { + return Math.round(Math.sqrt(mandreelSumSquaredPauses / mandreelSamples) * 100); +} + +function tearDownMandreel() { + my_old_constructors = null; + my_heap = null; + my_heap8 = null; + my_heap32 = null; + + heap = null; + heap8 = null; + heapU8 = null; + heap16 = null; + heapU16 = null; + heap32 = null; + heapU32 = null; + heapFloat = null; + heapDouble = null; + mandreelAppUsePackAsyncTexture = null; + mandreelSumSquaredPauses = 0; + mandreelSamples = 0; +} + +// Mocks for browser functions. + +function Mandreel_setTimeout(cmd, delay) { + timeouts.push(cmd); +} + +function Mandreel_flushTimeouts() { + while (Mandreel_timeouts.length != 0) { + var next = Mandreel_timeouts.pop(); + eval(next); + } +} + +Mandreel_timeouts = new Array(); + +Mandreel_XMLHttpRequest = function() { + this.open = function(type, url, some_bool) { + this.url = url; + } + this.overrideMimeType = function() { + } + this.send = function() { + this.response = null; + this.readyState = 4; + this.status = 0; + this.onreadystatechange(); + } +}; + +function Mandreel_Element(type) { + this.element_type = type; + this.insertBefore = function() { + } +} + + +function Mandreel_Context() { +} + +function Mandreel_Canvas() { +} + +function Mandreel_CanvasDiv() { +} + +Mandreel_document = { + createElement : function(element_type) { + var element = new Mandreel_Element(element_type); + element.parentNode = new Mandreel_Element("dummy_parent"); + return element; + }, + getElementById : function(name) { + if (name === "canvas") { + return new Mandreel_Canvas(); + } else if (name === "canvasDiv") { + return new Mandreel_CanvasDiv(); + } else { + return undefined; + } + }, + getElementsByTagName : function(element) { + if (element === "script") { + return new Array(new this.createElement(element)); + } + } + +}; + +Mandreel_window = { + WebGLRenderingContext: {}, + Float64Array: Float64Array, + Float32Array: Float32Array, + Int32Array: Int32Array, + Uint32Array: Uint32Array, + Int16Array: Int16Array, + Uint16Array: Uint16Array, + Int8Array: Int8Array, + Uint8Array: Uint8Array, + setTimeout: Mandreel_setTimeout, + addEventListener : function () {}, + document: Mandreel_document +}; + +function dump(x) { } + +alert = typeof alert != "undefined" ? alert : function(x) { + print(x); +} + +var my_old_constructors; +var my_heap; +var my_heap8; +var my_heap32; +var my_heapNewPos; + +function my_mandreel_call_constructors(_ptr, size,stackPos) { + my_heapNewPos = heapNewPos; + my_heap = new ArrayBuffer(mandreel_total_memory); + my_heap8 = new Int8Array(my_heap); + my_heap32 = new Int32Array(my_heap); + for (var i=0;i100) + percentage = 100; + + if ( mandreelAppStartStateFunc ) + mandreelAppStartStateFunc("loadingScriptUpdate",percentage); + + imandreel_update_load(delta_size,0); +} + +function mandreel_swf_size_loaded(str) +{ + if ( mandreelAppStartStateFunc ) + mandreelAppStartStateFunc("scriptLoaded",""); +} + +function mandreelNextDecompress(mandreel_result_lzma) +{ + + if ( mandreelAppStartStateFunc ) + { + var totalBytesLeft = mandreel_result_lzma.totalSize - mandreel_result_lzma.remainingBytes; + + var percentage; + + if (totalBytesLeft == 0) + percentage = 0; + else + percentage = ((100*totalBytesLeft)/mandreel_result_lzma.totalSize)|0; + + mandreelAppStartStateFunc("uncompressingDataUpdate",percentage); + } + + var old_result = mandreel_result_lzma; + mandreel_result_lzma = LZMA.decompress2(mandreel_result_lzma.inStream,mandreel_result_lzma.inStream,mandreel_result_lzma.outStream,mandreel_result_lzma); + + if (mandreel_result_lzma == null) + { + //setTimeout(mandreelLoadScript,10,old_result.my_outStream.data); + + //mandreel_fs_saveFile('data.bin', old_result.my_outStream.arrayBuffer); + //callback(old_result.my_outStream.arrayBuffer); + //alert('done'); + mandreelLoadPackData(old_result.my_outStream.arrayBuffer,true); + } + else + { + Mandreel_setTimeout(mandreelNextDecompress,10,mandreel_result_lzma); + } + + +} + +function mandreel_load_packfile(array_buffer) +{ + if (array_buffer) + { + mandreelLoadPackData(array_buffer,false); + return; + } + + var working_folder = mandreelAppWorkingFolder; + if ( mandreelAppReadDataFromLocalHost ) + working_folder = mandreelAppLocalHost+"/"+mandreelAppWorkingFolder; + var packdata_request = new XMLHttpRequest(); + var url = working_folder+mandreel_packfiledata_name; + + packdata_request.open("GET", url, true); + + if("responseType" in packdata_request) + packdata_request.responseType="arraybuffer"; + else + packdata_request.overrideMimeType('text/plain; charset=x-user-defined'); + + var last_loaded_size = 0; + + packdata_request.onreadystatechange = function() + { + if (packdata_request.readyState != 4) return; + + if (packdata_request.status == 200) + { + var buffer; + if (packdata_request.responseType=="arraybuffer") + buffer=packdata_request.response; + else if (packdata_request.mozResponseArrayBuffer != null) + buffer = packdata_request.mozResponseArrayBuffer; + else + buffer=packdata_request.response; + + if (mandreel_packfiledata_compressed) + { + var inStream = { + data: new Uint8Array(buffer), + offset: 0, + readByte: function(){ + return this.data[this.offset ++]; + } + }; + + var outStream = { + data: null, + offset: 0, + binary_mode : true, + writeByte: function(value){ + this.data[this.offset ++] = value; + } + }; + + + var result = LZMA.decompress2(inStream,inStream,outStream,null); + + if (result == null) + mandreelLoadPackData(outStream.arrayBuffer,true); + else + Mandreel_setTimeout(mandreelNextDecompress,10,result); + } + else + mandreelLoadPackData(buffer,true); + } + else + { + if ( mandreelAppStartStateFunc ) + mandreelAppStartStateFunc("error","can't load packfile data"); + } + } + packdata_request.onprogress = function(e) + { + var delta_size = e.loaded - last_loaded_size; + last_loaded_size = e.loaded; + var percentage = ((100*e.loaded)/mandreel_packfiledata_size)|0; + + + imandreel_update_load(delta_size,0); + + if (percentage>100) + percentage = 100; + + if ( mandreelAppStartStateFunc ) + mandreelAppStartStateFunc("loadingData",percentage); + } + + packdata_request.send(); +} + +function mandreelJsScriptLoaded() +{ + if (mandreelJsScriptLoaded_loaded) + return; + + if (typeof(mandreel_cache_files)=="undefined") + { + Mandreel_setTimeout(mandreelJsScriptLoaded,10); + return; + } + + mandreelJsScriptLoaded_loaded = true; + + if ( mandreelAppStartStateFunc ) + mandreelAppStartStateFunc("scriptLoaded",""); + + if (mandreel_packfiledata_name) + { + + mandreel_fs_load_binary(mandreel_packfiledata_name, mandreel_load_packfile); + + + } + else + { + mandreelCacheMandreelFat(); + imandreelJsScriptLoaded(); + } +} + +function imandreelLoadAudio() +{ + g_mandreel_working_folder = mandreelAppWorkingFolder; + if ( mandreelAppReadDataFromLocalHost ) + g_mandreel_working_folder = mandreelAppLocalHost+"/"+mandreelAppWorkingFolder; + + // load audio + if ( mandreelAppStartStateFunc ) + mandreelAppStartStateFunc("loadingAudio",""); + mandreel_start_audio(mandreelAppHostedAudioServer,mandreelAppHostedAudioUrl,_mandreelAppAudioReady); +} + +var _mandreel_currentPackTexture = ''; + +function imandreel_packasynctexture_loaded(buffer,save_file) +{ + if (save_file) + mandreel_fs_saveFile(_mandreel_currentPackTexture,buffer); + + //mandreelBufferPackAsyncTexture = buffer; + Mandreel_TextureAsync_PackBufferData[_mandreel_currentPackTexture] = buffer; + + imandreelLoadNextTexturePack(); +} + +var mandreel_update_total_size = 0; + +function imandreel_update_load(size, total) +{ + if (total == 0) + total = mandreel_packfiledata_size + mandreel_total_packtexture_size + mandreel_total_pogfile_size + mandreel_jslzma_size + mandreel_swf_size; + + + mandreel_update_total_size+=size; + + var percentage = ((100*mandreel_update_total_size)/total)|0; + + if (percentage>100) + percentage = 100; + if (mandreelAppStartStateFunc) + mandreelAppStartStateFunc("loadingProgress",percentage); + +} + + +function imandreel_packasynctexture_load(array_buffer) +{ + if (array_buffer) + { + imandreel_packasynctexture_loaded(array_buffer, false); + return; + } + + + var working_folder = mandreelAppWorkingFolder; + if ( mandreelAppReadDataFromLocalHost ) + working_folder = mandreelAppLocalHost+"/"+mandreelAppWorkingFolder; + var packdata_request = new XMLHttpRequest(); + var url = working_folder+_mandreel_currentPackTexture; + + packdata_request.open("GET", url, true); + + if("responseType" in packdata_request) + packdata_request.responseType="arraybuffer"; + else + packdata_request.overrideMimeType('text/plain; charset=x-user-defined'); + + var last_loaded_size = 0; + + packdata_request.onreadystatechange = function() + { + if (packdata_request.readyState != 4) return; + + if (packdata_request.status == 200) + { + var buffer; + if (packdata_request.responseType=="arraybuffer") + buffer=packdata_request.response; + else if (packdata_request.mozResponseArrayBuffer != null) + buffer = packdata_request.mozResponseArrayBuffer; + else + buffer=packdata_request.response; + + imandreel_packasynctexture_loaded(buffer, true); + } + else + { + if ( mandreelAppStartStateFunc ) + mandreelAppStartStateFunc("error","can't load textureasync pack data"); + } + } + packdata_request.onprogress = function(e) + { + var delta_size = e.loaded - last_loaded_size; + last_loaded_size = e.loaded; + mandreel_loaded_packtexture_size+=delta_size; + + imandreel_update_load(delta_size,0); + + var percentage = ((100*mandreel_loaded_packtexture_size)/mandreel_total_packtexture_size)|0; + + if (percentage>100) + percentage = 100; + + if ( mandreelAppStartStateFunc ) + mandreelAppStartStateFunc("loadingTextureAsyncPack",percentage); + } + + packdata_request.send(); + +} + +function imandreelLoadNextTexturePack() +{ + if (mandreelAppUsePackAsyncTexture.length) + { + _mandreel_currentPackTexture = mandreelAppUsePackAsyncTexture.pop(); + mandreel_fs_load_binary(_mandreel_currentPackTexture, imandreel_packasynctexture_load); + } + else + imandreelLoadAudio(); +} + +function imandreelJsScriptLoaded() +{ + imandreelLoadNextTexturePack(); +} + +//////////////////////////////////////////// + +function mandreelDecompressJSReady(code, save_file) +{ + if (save_file) + mandreel_fs_saveFile(mandreelAppMandreelJs + ".lzma", code); + + var ga = Mandreel_document.createElement('script'); + ga.type = "text/javascript"; + ga.text = code; + var s = Mandreel_document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + s.parentNode.removeChild(ga); + mandreelJsScriptLoaded(); +} + +function mandreelNextDecompressJS(mandreel_result_lzma) +{ + + if ( mandreelAppStartStateFunc ) + { + var totalBytesLeft = mandreel_result_lzma.totalSize - mandreel_result_lzma.remainingBytes; + + var percentage; + + if (totalBytesLeft == 0) + percentage = 0; + else + percentage = ((100*totalBytesLeft)/mandreel_result_lzma.totalSize)|0; + + mandreelAppStartStateFunc("uncompressingScriptUpdate",percentage); + } + + var old_result = mandreel_result_lzma; + mandreel_result_lzma = LZMA.decompress2(mandreel_result_lzma.inStream,mandreel_result_lzma.inStream,mandreel_result_lzma.outStream,mandreel_result_lzma); + + if (mandreel_result_lzma == null) + { + mandreelDecompressJSReady(old_result.my_outStream.data,true); + } + else + { + Mandreel_setTimeout(mandreelNextDecompressJS,10,mandreel_result_lzma); + } + + +} + +function mandreel_load_compressed_js(code_js) +{ + if (code_js) + { + mandreelDecompressJSReady(code_js,false); + return; + } + var xmlhttp_get = new XMLHttpRequest(); + + var url = mandreelAppMandreelJs + ".lzma"; + if ( mandreelAppReadMandreelJsFromLocalHost ) + url = mandreelAppLocalHost+"/"+url; + + xmlhttp_get.open('GET',url); + + + if("responseType" in xmlhttp_get) + xmlhttp_get.responseType="arraybuffer"; + else + xmlhttp_get.overrideMimeType('text/plain; charset=x-user-defined'); + + var last_loaded_size = 0; + + xmlhttp_get.onreadystatechange = function() + { + if (xmlhttp_get.readyState==4) + { + if (xmlhttp_get.status==200 || xmlhttp_get.status==0) + { + + var inStream = { + data: new Uint8Array(xmlhttp_get.response), + offset: 0, + readByte: function(){ + return this.data[this.offset ++]; + } + }; + + var outStream = { + data: new String(""), + offset: 0, + binary_mode : false, + writeByte: function(value){ + this.data+=String.fromCharCode(value); + } + }; + + + var result = LZMA.decompress2(inStream,inStream,outStream,null); + if (result == null) + mandreelDecompressJSReady(outStream.data,true); + else + Mandreel_setTimeout(mandreelNextDecompressJS,10,result); + } + else + { + alert('error ' + xmlhttp_get.status); + } + } + + } + + xmlhttp_get.onprogress = function(e) + { + var delta_size = e.loaded - last_loaded_size; + last_loaded_size = e.loaded; + + var percentage = ((100*e.loaded)/e.total)|0; + + mandreel_jslzma_size = e.total; + + imandreel_update_load(delta_size,0); + + if (percentage>100) + percentage = 100; + + if ( mandreelAppStartStateFunc ) + mandreelAppStartStateFunc("loadingScriptUpdate",percentage); + } + + xmlhttp_get.send(); + +} + +function mandreelLoadMandreelJsScript() +{ + if (mandreelAppMandreelJsCompressed) + { + mandreel_fs_load_text(mandreelAppMandreelJs + ".lzma", mandreel_load_compressed_js); + + } + else + { + var ga = Mandreel_document.createElement('script'); + ga.type = 'text/javascript'; + ga.async = true; + ga.onload = ga.onreadystatechange = mandreelJsScriptLoaded; + var url = mandreelAppMandreelJs; + if ( mandreelAppReadMandreelJsFromLocalHost ) + ga.src = mandreelAppLocalHost+"/"+url; + else + ga.src = url; + var s = Mandreel_document.getElementsByTagName('script')[0]; + if ( mandreelAppStartStateFunc ) + mandreelAppStartStateFunc("loadingScript",""); + s.parentNode.insertBefore(ga, s); + } +} + +//////////////////////////////////////////// +function mandreelFatLoaded() +{ + if ( mandreelAppPlatform == "nacl" ) + { + g_mandreel_working_folder = mandreelAppWorkingFolder; + if ( mandreelAppReadDataFromLocalHost ) + g_mandreel_working_folder = mandreelAppLocalHost+"/"+mandreelAppWorkingFolder; + + // load audio + if ( mandreelAppStartStateFunc ) + mandreelAppStartStateFunc("loadingAudio",""); + _mandreelAppAudioReady(); + } + else + mandreelLoadMandreelJsScript(); +} + +var mandreelFatData = ""; +var mandreelFatPreloadRequest = 0; +//////////////////////////////////////////// + +function mandreel_chanka_fixfile(fileName) +{ + var fileNameNoExt = fileName.toLowerCase(); + fileNameNoExt = fileNameNoExt.replace(/\\/g,"/"); + + fileNameNoExt = fileNameNoExt.substr(1); + + var new_fileName = ''; + + for(var j = 0; j < fileNameNoExt.length; j++) + { + var data = fileNameNoExt.charCodeAt(j); + + if (data != 13) + { + var t = String.fromCharCode(data); + new_fileName+=t; + } + } + + return new_fileName; +} + +function mandreel_removecr(my_string) +{ + var new_string = ''; + for(var j = 0; j < my_string.length; j++) + { + var data = my_string.charCodeAt(j); + + if (data != 13) + { + var t = String.fromCharCode(data); + new_string+=t; + } + } + + return new_string; +} + +function mandreelCacheMandreelFat() +{ + var array_mandreel_fat = new ArrayBuffer(mandreelFatData.length+1); + + + { + var j; + var len = mandreelFatData.length; + var data_char; + + var my_bytes = new Uint8Array(array_mandreel_fat); + + for(j = 0; j < len; j++) + { + data_char = mandreelFatData.charCodeAt(j); + + my_bytes[j] = data_char; + } + my_bytes[j] = 0; + } + + + mandreel_cache_files['mandreel.fat'] = array_mandreel_fat; +} + +function mandreelLoadPackData(data, save_pack) +{ + var files = mandreelFatData.split('\n'); + + var current_dir = ''; + var current_offset = 0; + + if (save_pack) + mandreel_fs_saveFile(mandreel_packfiledata_name,data); + + + for (var i=0;i>2] = mandreelAppCanvasWidth; + heapU32[(sp+4)>>2] = mandreelAppCanvasHeight; + __mandreel_internal_SetResolution(sp); + __mandreel_internal_init(g_stack_pointer+800*1024); + __init(g_stack_pointer+800*1024); + } +} + +//////////////////////////////////////////// +function mandreelAppDraw(elapsed) +{ + if ( mandreelAppPlatform == "webgl" || mandreelAppPlatform == "canvas" ) + { + if ( mandreelAppPlatform == "canvas" && imandreel_ctx_canvas != null ) + { + var canvas = Mandreel_document.getElementById(mandreelAppCanvasName); + imandreel_ctx_canvas.clearRect(0,0,canvas.width,canvas.height); + } + var sp = g_stack_pointer+800*1024; + __mandreel_internal_preupdate(sp); + heapU32[sp>>2] = elapsed; + __draw(sp); + __mandreel_internal_update(sp); + __mandreel_process_async_calls(); + } +} + +//////////////////////////////////////////// +function mandreelAppMouseWheel(delta) +{ + if ( mandreelAppPlatform == "webgl" || mandreelAppPlatform == "canvas" ) + { + var i7 = MandreelLockFrame(); + heap32[(i7+0)>>2] = delta; + __mouseWheelDelta(i7); + MandreelUnlockFrame(); + } +} + +//////////////////////////////////////////// +function mandreelAppMouseMove(x,y) +{ + if ( mandreelAppPlatform == "webgl" || mandreelAppPlatform == "canvas" ) + { + var i7 = MandreelLockFrame(); + heap32[(i7+0)>>2] = x; + heap32[(i7+4)>>2] = y; + __mouseMove(i7); + MandreelUnlockFrame(); + } +} + +//////////////////////////////////////////// +function mandreelAppResize(x,y) +{ + if ( mandreelAppPlatform == "webgl" || mandreelAppPlatform == "canvas" ) + { + var i7 = MandreelLockFrame(); + heap32[(i7+0)>>2] = x; + heap32[(i7+4)>>2] = y; + __resize(i7); + heap32[(i7+0)>>2] = x; + heap32[(i7+4)>>2] = y; + __mandreel_internal_SetResolution(i7); + MandreelUnlockFrame(); + } +} + +//////////////////////////////////////////// +function mandreelAppMouseButton(down,x,y) +{ + if ( mandreelAppPlatform == "webgl" || mandreelAppPlatform == "canvas" ) + { + var i7 = MandreelLockFrame(); + heap32[(i7+0)>>2] = down; + heap32[(i7+4)>>2] = x; + heap32[(i7+8)>>2] = y; + __mouseButton(i7); + MandreelUnlockFrame(); + } +} + +//////////////////////////////////////////// +function mandreelAppMouseDblClick(x,y) +{ + if ( mandreelAppPlatform == "webgl" || mandreelAppPlatform == "canvas" ) + { + var i7 = MandreelLockFrame(); + heap32[(i7+0)>>2] = x; + heap32[(i7+4)>>2] = y; + __mouseDoubleClick(i7); + MandreelUnlockFrame(); + } +} + +//////////////////////////////////////////// +function mandreelAppKeyEvent(down,keyId) +{ + if ( mandreelAppPlatform == "webgl" || mandreelAppPlatform == "canvas" ) + { + var i7 = MandreelLockFrame(); + heap32[(i7+0)>>2] = down; + heap32[(i7+4)>>2] = keyId; + __keyEvent(i7); + MandreelUnlockFrame(); + } +} + +//////////////////////////////////////////// +function mandreelAppGetPlatform() +{ + return mandreelAppPlatform; +} + +//////////////////////////////////////////// +function mandreelAppGetElementAbsolutePos(elementName) +{ + var element = Mandreel_document.getElementById(elementName); + var res = new Object(); + res.x = 0; res.y = 0; + if (element !== null) + { + if (element.getBoundingClientRect) + { + var viewportElement = Mandreel_document.documentElement; + var box = element.getBoundingClientRect(); + var scrollLeft = viewportElement.scrollLeft; + var scrollTop = viewportElement.scrollTop; + res.x = box.left + scrollLeft; + res.y = box.top + scrollTop; + } + else + { //for old browsers + res.x = element.offsetLeft; + res.y = element.offsetTop; + var parentNode = element.parentNode; + var borderWidth = null; + while (offsetParent != null) + { + res.x += offsetParent.offsetLeft; + res.y += offsetParent.offsetTop; + var parentTagName = offsetParent.tagName.toLowerCase(); + if ((__isIEOld && parentTagName != "table") || + ((__isFireFoxNew || __isChrome) && + parentTagName == "td")) + { + borderWidth = kGetBorderWidth(offsetParent); + res.x += borderWidth.left; + res.y += borderWidth.top; + } + + if (offsetParent != Mandreel_document.body && + offsetParent != Mandreel_document.documentElement) + { + res.x -= offsetParent.scrollLeft; + res.y -= offsetParent.scrollTop; + } + + //next lines are necessary to fix the problem + //with offsetParent + if (!__isIE && !__isOperaOld || __isIENew) + { + while (offsetParent != parentNode && + parentNode !== null) { + res.x -= parentNode.scrollLeft; + res.y -= parentNode.scrollTop; + if (__isFireFoxOld || __isWebKit) + { + borderWidth = + kGetBorderWidth(parentNode); + res.x += borderWidth.left; + res.y += borderWidth.top; + } + parentNode = parentNode.parentNode; + } + } + + parentNode = offsetParent.parentNode; + offsetParent = offsetParent.offsetParent; + } + } + } + return res; +} +function __getIEVersion() +{ + var rv = -1; // Return value assumes failure. + if (navigator.appName == 'Microsoft Internet Explorer') + { + var ua = navigator.userAgent; + var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); + if (re.exec(ua) != null) + rv = parseFloat(RegExp.$1); + } + return rv; +} +function __getOperaVersion() +{ + var rv = 0; // Default value + if (Mandreel_window.opera) + { + var sver = Mandreel_window.opera.version(); + rv = parseFloat(sver); + } + return rv; +} +/* The following code was removed for benchmarking: +var __userAgent = navigator.userAgent; +var __isIE = navigator.appVersion.match(/MSIE/) != null; +var __IEVersion = __getIEVersion(); +var __isIENew = __isIE && __IEVersion >= 8; +var __isIEOld = __isIE && !__isIENew; +var __isFireFox = __userAgent.match(/firefox/i) != null; +var __isFireFoxOld = __isFireFox && ((__userAgent.match(/firefox\/2./i) != null) || (__userAgent.match(/firefox\/1./i) != null)); +var __isFireFoxNew = __isFireFox && !__isFireFoxOld; +var __isWebKit = navigator.appVersion.match(/WebKit/) != null; +var __isChrome = navigator.appVersion.match(/Chrome/) != null; +var __isOpera = Mandreel_window.opera != null; +var __operaVersion = __getOperaVersion(); +var __isOperaOld = __isOpera && (__operaVersion < 10); */ +function __parseBorderWidth(width) +{ + var res = 0; + if (typeof(width) == "string" && width != null && width != "" ) + { + var p = width.indexOf("px"); + if (p >= 0) + { + res = parseInt(width.substring(0, p)); + } + else + { + //do not know how to calculate other values (such as 0.5em or 0.1cm) correctly now so just set the width to 1 pixel + res = 1; + } + } + return res; +} +function __getBorderWidth(element) +{ + var res = new Object(); + res.left = 0; res.top = 0; res.right = 0; res.bottom = 0; + if (Mandreel_window.getComputedStyle) + { + //for Firefox + var elStyle = Mandreel_window.getComputedStyle(element, null); + res.left = parseInt(elStyle.borderLeftWidth.slice(0, -2)); + res.top = parseInt(elStyle.borderTopWidth.slice(0, -2)); + res.right = parseInt(elStyle.borderRightWidth.slice(0, -2)); + res.bottom = parseInt(elStyle.borderBottomWidth.slice(0, -2)); + } + else + { + //for other browsers + res.left = __parseBorderWidth(element.style.borderLeftWidth); + res.top = __parseBorderWidth(element.style.borderTopWidth); + res.right = __parseBorderWidth(element.style.borderRightWidth); + res.bottom = __parseBorderWidth(element.style.borderBottomWidth); + } + return res; +} + + +//////////////////////////////////////////// +// WebGL +//////////////////////////////////////////// + var imandreel_gl = null; + var imandreel_ctx_canvas = null; + var imandreel_is_ready = 0; + var imandreel_oldTime = Date_now(); + + function mandreel_wheel(event) { imandreel_onMouseWheel(event);event.preventDefault(); event.returnValue=false; } + + //////////////////////////////////////////// + function mandreelAppStartRenderWebGL() + { +/* The following code was removed for benchmarking: + var canvas = document.getElementById(mandreelAppCanvasName); + + mandreelAppCanvasWidth = canvas.width; + mandreelAppCanvasHeight = canvas.height; + + // Register event handlers + if(window.addEventListener){ window.addEventListener('DOMMouseScroll',mandreel_wheel,false); } window.onmousewheel=document.onmousewheel=mandreel_wheel; + + window.addEventListener('mousedown',imandreel_onMouseDown,false); + window.addEventListener('mouseup',imandreel_onMouseUp,false); + window.addEventListener('mousemove',imandreel_onMouseMove,false); + window.addEventListener('dblclick',imandreel_onMouseDblClick,false); + + document.body.oncontextmenu = function() { return false;}; + + var canvasDiv = document.getElementById(mandreelAppCanvasDiv); + canvasDiv.addEventListener('keydown',imandreel_onKeyDown,false); + canvasDiv.addEventListener('keyup',imandreel_onKeyUp,false); + canvasDiv.focus();*/ + + // Call mandreel app init funtion (__init()) + mandreelAppInit(); + + // Start rendering + imandreel_is_ready = 1; + //imandreel_render(); + } + + //////////////////////////////////////////// + function imandreel_render() + { + if( ABORT ) + return; + + var canvas = Mandreel_document.getElementById(mandreelAppCanvasName); + WebGLUtils.requestAnimationFrame(canvas, imandreel_render); + + + // Reshape + if (canvas.clientWidth != mandreelAppCanvasWidth || canvas.clientHeight != mandreelAppCanvasHeight) + { + mandreelAppCanvasWidth = canvas.clientWidth; + mandreelAppCanvasHeight = canvas.clientHeight; + imandreel_gl.viewport(0, 0, mandreelAppCanvasWidth, mandreelAppCanvasHeight); + } + + // Set the focus to the canvas div + if (mandreelAppForceFocus) + { + var canvasDiv = Mandreel_document.getElementById(mandreelAppCanvasDiv); + canvasDiv.focus(); + } + + // Call mandreel app draw funtion (__draw()) + var nowTime = Date_now(); + if (!g_mandreel_frame_locked) + { + g_mandreel_frame_inframe = true; + if (!_imandreel_pause_game) + mandreelAppDraw(nowTime-imandreel_oldTime); + g_mandreel_frame_inframe = false; + } + imandreel_oldTime = nowTime; + } + + function render() + { + // Call mandreel app draw funtion (__draw()) + var nowTime = Date_now(); + if (!g_mandreel_frame_locked) + { + g_mandreel_frame_inframe = true; + if (!_imandreel_pause_game) + mandreelAppDraw(nowTime-imandreel_oldTime); + g_mandreel_frame_inframe = false; + } + imandreel_oldTime = nowTime; + } + + var imandreel_last_movex = 0; + var imandreel_last_movey = 0; + + //////////////////////////////////////////// + function imandreel_onMouseMove(e) + { + if (!imandreel_is_ready) + return; + + if (_imandreel_pause_game) + return; + + var pos = mandreelAppGetElementAbsolutePos(mandreelAppCanvasName); + var setX = e.clientX - pos.x; + var setY = e.clientY - pos.y; + + if(navigator.pointer && navigator.pointer.isLocked) { + var deltaX = event.movementX || event.webkitMovementX || event.mozMovementX || 0; + var deltaY = event.movementY || event.webkitMovementY || event.mozMovementX || 0; + + setX = imandreel_last_movex+deltaX; + setY = imandreel_last_movey+deltaY; + } + + + imandreel_last_movex = setX; + imandreel_last_movey = setY; + mandreelAppMouseMove(setX,setY); + } + + //////////////////////////////////////////// + function imandreel_onMouseDblClick(e) + { + if (!imandreel_is_ready) + return; + + if (_imandreel_pause_game) + return; + + var pos = mandreelAppGetElementAbsolutePos(mandreelAppCanvasName); + var setX = e.clientX - pos.x; + var setY = e.clientY - pos.y; + mandreelAppMouseDblClick(setX,setY); + } + + //////////////////////////////////////////// + var mandreel_mouse_down = false; + var mandreel_rmouse_down = false; + function imandreel_onMouseDown(e) + { + if (!imandreel_is_ready) + return; + + if (_imandreel_pause_game) + return; + + var rightclick; + if (!e) var e = Mandreel_window.event; + if (e.which) rightclick = (e.which == 3); + else if (e.button) rightclick = (e.button == 2); + + var pos = mandreelAppGetElementAbsolutePos(mandreelAppCanvasName); + var setX = e.clientX - pos.x; + var setY = e.clientY - pos.y; + + if (!rightclick) + { + if (mandreel_mouse_down) + return; + + mandreel_mouse_down = true; + mandreelAppMouseButton(1,setX,setY); + } + else + { + if (mandreel_rmouse_down) + return; + + mandreel_rmouse_down = true; + mandreelAppMouseButton(3,setX,setY); + } + } + + //////////////////////////////////////////// + function imandreel_onMouseUp(e) + { + if (!imandreel_is_ready) + return; + + if (_imandreel_pause_game) + return; + + var rightclick; + if (!e) var e = Mandreel_window.event; + if (e.which) rightclick = (e.which == 3); + else if (e.button) rightclick = (e.button == 2); + + var pos = mandreelAppGetElementAbsolutePos(mandreelAppCanvasName); + var setX = e.clientX - pos.x; + var setY = e.clientY - pos.y; + + + if (!rightclick) + { + if (mandreel_mouse_down == false) + return; + + mandreel_mouse_down = false; + mandreelAppMouseButton(0,setX,setY); + } + else + { + if (mandreel_rmouse_down == false) + return; + + mandreel_rmouse_down = false; + mandreelAppMouseButton(2,setX,setY); + } + } + + //////////////////////////////////////////// + function imandreel_onMouseWheel(e) + { + if (!imandreel_is_ready) + return; + + if (_imandreel_pause_game) + return; + + mandreelAppMouseWheel(e.wheelDelta); + } + + //////////////////////////////////////////// + function imandreel_onKeyUp(e) + { + if (!imandreel_is_ready) + return; + + if (_imandreel_pause_game) + return; + + var KeyID = e.keyCode; + mandreelAppKeyEvent(0,KeyID); + } + + //////////////////////////////////////////// + Mandreel_window.onkeydown = function(e) + { + if (mandreelDisableSpaceKey == false && e.keyCode == 32) + return; + return !(e.keyCode == 32 || e.keyCode == 9); + }; + + //////////////////////////////////////////// + function imandreel_onKeyDown(e) + { + if (e.which === 8) // disable back button on browser + { + e.preventDefault(); + } + if (!imandreel_is_ready) + return; + + if (_imandreel_pause_game) + return; + + var KeyID = e.keyCode; + mandreelAppKeyEvent(1,KeyID); + } + + +//////////////////////////////////////////// +// Flash +//////////////////////////////////////////// + +(function(){ + try { + // Disabling SWFObject's Autohide feature + if (typeof swfobject.switchOffAutoHideShow === "function") { + swfobject.switchOffAutoHideShow(); + } + } catch(e) {} + })(); + +var imandreel_flash_global_sp = 0; +var imandreel_flash_global_sp2 = 0; +var imandreel_flash_current_sp = 0; + +function MandreelInterSwfLoaded2() +{ +} +function MandreelInterSwfLoaded() +{ + appStartState('scriptLoaded'); + var flashMovie = swfobject.getObjectById(mandreelAppCanvasDiv) + dump(flashMovie.width); + flashMovie.MandreelInit(); + + imandreel_flash_global_sp = MandreelInterGetSWF().MandreelInterGetGlobalStack(); + imandreel_flash_global_sp2 = MandreelInterGetSWF().MandreelInterGetGlobalStack2(); + if ( mandreelAppStartStateFunc ) + mandreelAppStartStateFunc("ready",mandreelAppCanvasWidth,mandreelAppCanvasHeight); +} + + + +var g_mandreel_swf = null; + +function MandreelInterGetSWF() +{ + if (g_mandreel_swf) + return g_mandreel_swf; + + g_mandreel_swf = swfobject.getObjectById(mandreelAppCanvasDiv) + return g_mandreel_swf; +} + +function MandreelInterWriteInt(ptr, value) +{ + MandreelInterGetSWF().MandreelInterWriteInt(ptr,value); +} + +function MandreelInterWriteFloat(ptr, value) +{ + MandreelInterGetSWF().MandreelInterWriteFloat(ptr,value); +} + +function MandreelInterWriteString(ptr, value) +{ + MandreelInterGetSWF().MandreelInterWriteString(ptr,value); +} + +function MandreelInterWriteWString(ptr, value) +{ + MandreelInterGetSWF().MandreelInterWriteWString(ptr,value); +} + +function MandreelInterCallFunctionRaw(sp, func_name, returnType) +{ + return MandreelInterGetSWF().MandreelInterCallFunctionRaw(sp,func_name,returnType); +} + + +function assert(condition, _text) { +//console.assert(condition, _text); + if (!condition) { + var text = "Assertion failed: " + _text; + alert(text + ':\n' + (new Error).stack); + ABORT = true; + throw "Assertion: " + text; + } + } + + + +function MandreelLockFrame() +{ + MandreelInterGetSWF().MandreelLockFrame(); + + imandreel_flash_current_sp += 300*1024; + + assert(imandreel_flash_current_sp<1024*1024); + + return imandreel_flash_current_sp; +} + +function MandreelPause() +{ + MandreelInterGetSWF().MandreelPause(); +} + +function MandreelResume() +{ + MandreelInterGetSWF().MandreelResume(); +} + + +function MandreelUnlockFrame() +{ + imandreel_flash_current_sp -= 300*1024; + MandreelInterGetSWF().MandreelUnlockFrame(); +} + + + +function MandreelInterCallFunctionAsync(func_name,param) +{ + return MandreelInterGetSWF().MandreelInterCallFunctionAsync(func_name, param); +} + + +function MandreelInterCallFunction(returnType,func_name) +{ + var size_params = 0; + + var i; + var num_params = (arguments.length-2)/2; + num_params|=0; + for (i=2;i=g_mandreel_timestamp_fs) + callback(getReq.result.data); + else + callback(null); + } + else + callback(null); + } + getReq.onerror = function (ev) { + console.log("index.get failed. Error: " + ev.message); + } +} + +function mandreel_fs_get_url(file_name, callback) +{ + if (mandreel_indexedDB.db) + { + callback(null); + return; + } + + + if (g_mandreel_fs == null) + { + callback(null); + return; + } + + g_mandreel_fs.root.getFile(file_name, {}, function(fileEntry) { + + fileEntry.getMetadata(function(metaData){ + var my_seconds = metaData.modificationTime.getTime()/1000; + + if (g_mandreel_timestamp_fs>my_seconds) + { + callback(null); + } + else + { + //alert('mandreel_fscachefile2'); + + + if (Mandreel_window.localStorage.getItem(mandreel_fs_get_key(file_name)) != null) + callback(fileEntry.toURL()); + else + callback(null); + + } + + + }, MandreelFsErrorHandler); + + + }, function(error) {callback(null);}); + + return; + +} + +function mandreel_fs_load_binary(file_name, callback) + { + if (mandreel_indexedDB.db) + { + mandreel_indexedDB.load(file_name,callback); + return; + } + + + if (g_mandreel_fs == null) + { + callback(null); + return; + } + + + g_mandreel_fs.root.getFile(file_name, {}, function(fileEntry) { + + fileEntry.getMetadata(function(metaData){ + var my_seconds = metaData.modificationTime.getTime()/1000; + + if (g_mandreel_timestamp_fs>my_seconds) + { + dump('mandreel_fscachefile1'); + Mandreel_window.localStorage.removeItem(mandreel_fs_get_key(file_name)); + fileEntry.remove(function() { + callback(null); + }, MandreelFsErrorHandler); + + } + else + { + //alert('mandreel_fscachefile2'); + dump('mandreel_fscachefile2 ' + my_seconds); + + fileEntry.file(function(file) { + + var reader = new FileReader(); + + + reader.onloadend = function(e) { + + if (this.result.byteLength && Mandreel_window.localStorage.getItem(mandreel_fs_get_key(file_name)) != null) + { + dump('mandreel_fs_loadFile ' + file_name); + callback(this.result); + } + else + callback(null); + + }; + + + reader.readAsArrayBuffer(file); + + + }, MandreelFsErrorHandler); + + } + + + }, MandreelFsErrorHandler); + + + }, function(error) {dump('mandreel_fscachefile3'); callback(null);}); + + return; + } + + + mandreel_indexedDB.save = function(file_name, data) +{ + var db = mandreel_indexedDB.db; + + + var trans = db.transaction(["cache"], IDBTransaction.READ_WRITE); + var store = trans.objectStore("cache"); + var request = store.put({ + "data": data, + "timeStamp" : Date_now()/1000, + "fileName" : file_name + }); + + request.onsuccess = function(e) { + // Re-render all the todo's + // html5rocks.indexedDB.getAllTodoItems(); + dump('mandreel_indexedDB.save ok '); + }; + + request.onerror = function(e) { + dump('mandreel_indexedDB.save onerror ' + file_name); + dump(e); + }; +} + +function mandreel_fs_get_key(name) +{ + return 'mandreel_fs_' + name; +} + +function mandreel_is_filesystem() +{ + if (mandreel_indexedDB.db) + return false; + + if (!g_mandreel_fs) + return false; + + return true; +} + +function mandreel_is_indexeddb() +{ + if (mandreel_indexedDB.db) + return true; + + return false; +} + + function mandreel_fs_saveFile(name, my_arrayBuffer) +{ + if (mandreel_indexedDB.db) + { + mandreel_indexedDB.save(name,my_arrayBuffer); + return; + } + + if (!g_mandreel_fs) + return; + + Mandreel_window.localStorage.removeItem(mandreel_fs_get_key(name)); + g_mandreel_fs.root.getFile(name, {create: true}, function(fileEntry) { + + // Create a FileWriter object for our FileEntry (log.txt). + fileEntry.createWriter(function(fileWriter) { + + fileWriter.onwriteend = function(e) { + Mandreel_window.localStorage.setItem(mandreel_fs_get_key(name),'valid'); + dump('Write completed.'); + }; + + fileWriter.onerror = function(e) { + dump('Write failed: ' + e.toString()); + }; + + var my_BlobBuilder = Mandreel_window.MozBlobBuilder || Mandreel_window.WebKitBlobBuilder || Mandreel_window.BlobBuilder; + + var bb = new my_BlobBuilder(); // Note: window.WebKitBlobBuilder in Chrome 12. + bb.append(my_arrayBuffer); + fileWriter.write(bb.getBlob('text/plain')); + + + + }, MandreelFsErrorHandler); + + }, MandreelFsErrorHandler); +} + + +function mandreel_fs_load_text(file_name, callback) + { + + if (mandreel_indexedDB.db) + { + mandreel_indexedDB.load(file_name,callback); + return; + } + + if (g_mandreel_fs == null) + { + callback(null); + return; + } + + + g_mandreel_fs.root.getFile(file_name, {}, function(fileEntry) { + + fileEntry.getMetadata(function(metaData){ + var my_seconds = metaData.modificationTime.getTime()/1000; + + if (g_mandreel_timestamp_fs>my_seconds) + { + dump('mandreel_fscachefile1'); + Mandreel_window.localStorage.removeItem(mandreel_fs_get_key(file_name)); + fileEntry.remove(function() { + callback(null); + }, MandreelFsErrorHandler); + + } + else + { + //alert('mandreel_fscachefile2'); + dump('mandreel_fscachefile2 ' + my_seconds); + + fileEntry.file(function(file) { + + var reader = new FileReader(); + + + reader.onloadend = function(e) { + + + if (this.result.length && Mandreel_window.localStorage.getItem(mandreel_fs_get_key(file_name)) != null) + { + dump('mandreel_fs_loadFile ' + file_name); + callback(this.result); + } + else + callback(null); + + }; + + + reader.readAsText(file); + + + }, MandreelFsErrorHandler); + + } + + + }, MandreelFsErrorHandler); + + + }, function(error) {dump('mandreel_fscachefile3'); callback(null);}); + + return; + } + + + // full screen + + +/* The following code was removed for benchmarking: + var __screen = screen; */ + + try + { + (function(global) { + "use strict"; + var elementPrototype = (global.HTMLElement || global.Element)["prototype"]; + + // document.isFullScreen + if(!Mandreel_document.hasOwnProperty("fullscreenEnabled")) { + var getter = (function() { + // These are the functions that match the spec, and should be preferred + if("webkitIsFullScreen" in Mandreel_document) { + return function() { return Mandreel_document.webkitIsFullScreen; } + } + if("mozFullScreen" in Mandreel_document) { + return function() { return Mandreel_document.mozFullScreen; } + } + return function() { return false }; // not supported, never fullscreen + })(); + + Object.defineProperty(Mandreel_document, "fullscreenEnabled", { + enumerable: true, configurable: false, writeable: false, + get: getter + }); + } + + if(!Mandreel_document.hasOwnProperty("fullscreenElement")) { + var getter = (function() { + // These are the functions that match the spec, and should be preferred + if("webkitFullscreenElement" in Mandreel_document) { + return function() { return Mandreel_document.webkitFullscreenElement; } + } + if("mozFullscreenElemen" in Mandreel_document) { + return function() { return Mandreel_document.mozFullscreenElemen; } + } + return function() { return null }; // not supported + })(); + + Object.defineProperty(Mandreel_document, "fullscreenElement", { + enumerable: true, configurable: false, writeable: false, + get: getter + }); + } + + // Document event: fullscreenchange + function fullscreenchange(oldEvent) { + var newEvent = Mandreel_document.createEvent("CustomEvent"); + newEvent.initCustomEvent("fullscreenchange", true, false, null); + // TODO: Any need for variable copy? + Mandreel_document.dispatchEvent(newEvent); + } + Mandreel_document.addEventListener("webkitfullscreenchange", fullscreenchange, false); + Mandreel_document.addEventListener("mozfullscreenchange", fullscreenchange, false); + + // Document event: fullscreenerror + function fullscreenerror(oldEvent) { + var newEvent = Mandreel_document.createEvent("CustomEvent"); + newEvent.initCustomEvent("fullscreenerror", true, false, null); + // TODO: Any need for variable copy? + Mandreel_document.dispatchEvent(newEvent); + } + Mandreel_document.addEventListener("webkitfullscreenerror", fullscreenerror, false); + Mandreel_document.addEventListener("mozfullscreenerror", fullscreenerror, false); + + // element.requestFullScreen + if(!elementPrototype.requestFullScreen) { + elementPrototype.requestFullScreen = (function() { + if(elementPrototype.webkitRequestFullScreen) { + return function() { + this.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT); + } + } + + return elementPrototype.mozRequestFullScreen || + function(){ /* unsupported, fail silently */ }; + })(); + } + + // document.cancelFullscreen + if(!Mandreel_document.cancelFullScreen) { + Mandreel_document.cancelFullScreen = (function() { + return Mandreel_document.webkitCancelFullScreen || + Mandreel_document.mozCancelFullScreen || + function(){ /* unsupported, fail silently */ }; + })(); + } + })((typeof(exports) != 'undefined') ? global : Mandreel_window); + } + catch(e) + { + } + + +try + { +var __onErrorFullscreen = function() { + dump("Mouse lock was not successful."); +}; + +Mandreel_document.addEventListener('fullscreenchange', function(e) { + +var width; +var height; + var canvas = Mandreel_document.getElementById(mandreelAppCanvasName); + if(Mandreel_document.fullscreenEnabled) { + + + width = __screen.width; + height = __screen.height; + + } else { + width = mandreelAppWidthSrc; + height = mandreelAppHeightSrc; + } + + canvas.width = width; + canvas.height = height; + mandreelAppResize(width, height); + + if (Mandreel_document.fullscreenEnabled && navigator.pointer) { + navigator.pointer.lock(Mandreel_document.body, function() { + // Locked and ready to play. + }, __onErrorFullscreen); + } +}, false); + +} +catch(e) +{ +} + + + +function mandreelAppFullscreen(enable) +{ + var canvas = Mandreel_document.getElementById(mandreelAppCanvasName); + if ( mandreelAppPlatform == "webgl" || mandreelAppPlatform == "canvas" ) + { + if (canvas) + { + if (enable) + canvas.requestFullScreen(); + else + Mandreel_document.cancelFullScreen(); + } + } +} + + +function mandreelAppDisableForceFocus() +{ + mandreelAppForceFocus = false; +} + +function mandreelAppEnableForceFocus() +{ + mandreelAppForceFocus = true; +} + +var imandreel_base64 = {}; +imandreel_base64.PADCHAR = '='; +imandreel_base64.ALPHA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + +imandreel_base64.makeDOMException = function() { + // sadly in FF,Safari,Chrome you can't make a DOMException + var e, tmp; + + try { + return new DOMException(DOMException.INVALID_CHARACTER_ERR); + } catch (tmp) { + // not available, just passback a duck-typed equiv + // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Error + // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Error/prototype + var ex = new Error("DOM Exception 5"); + + // ex.number and ex.description is IE-specific. + ex.code = ex.number = 5; + ex.name = ex.description = "INVALID_CHARACTER_ERR"; + + // Safari/Chrome output format + ex.toString = function() { return 'Error: ' + ex.name + ': ' + ex.message; }; + return ex; + } +} + +imandreel_base64.getbyte64 = function(s,i) { + // This is oddly fast, except on Chrome/V8. + // Minimal or no improvement in performance by using a + // object with properties mapping chars to value (eg. 'A': 0) + var idx = imandreel_base64.ALPHA.indexOf(s.charAt(i)); + if (idx === -1) { + throw imandreel_base64.makeDOMException(); + } + return idx; +} + +imandreel_base64.decode = function(s) { + // convert to string + s = '' + s; + var getbyte64 = imandreel_base64.getbyte64; + var pads, i, b10; + var imax = s.length + if (imax === 0) { + return s; + } + + if (imax % 4 !== 0) { + throw imandreel_base64.makeDOMException(); + } + + pads = 0 + if (s.charAt(imax - 1) === imandreel_base64.PADCHAR) { + pads = 1; + if (s.charAt(imax - 2) === imandreel_base64.PADCHAR) { + pads = 2; + } + // either way, we want to ignore this last block + imax -= 4; + } + + var x = []; + for (i = 0; i < imax; i += 4) { + b10 = (getbyte64(s,i) << 18) | (getbyte64(s,i+1) << 12) | + (getbyte64(s,i+2) << 6) | getbyte64(s,i+3); + x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 0xff, b10 & 0xff)); + } + + switch (pads) { + case 1: + b10 = (getbyte64(s,i) << 18) | (getbyte64(s,i+1) << 12) | (getbyte64(s,i+2) << 6); + x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 0xff)); + break; + case 2: + b10 = (getbyte64(s,i) << 18) | (getbyte64(s,i+1) << 12); + x.push(String.fromCharCode(b10 >> 16)); + break; + } + return x.join(''); +} + +if (!Mandreel_window.atob) { +Mandreel_window.atob = function(a) { return imandreel_base64.decode(a); } +} + + +function imandreel_interop_callbridge(new_method, sp) +{ + + var n = new Array(); + + for( var i = 2; i < arguments.length; i++ ) + { + + if (typeof arguments[i] == 'string') + n.push(atob(arguments[i])); + else + n.push(arguments[i]); + } + + var total_args = arguments.length-2; + + switch(total_args) + { + case 0: + return Mandreel_window[new_method](sp); + case 1: + return Mandreel_window[new_method](sp, n[0]); + case 2: + return Mandreel_window[new_method](sp, n[0], n[1]); + case 3: + return Mandreel_window[new_method](sp, n[0], n[1], n[2]); + case 4: + return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3]); + case 5: + return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4]); + case 6: + return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5]); + case 7: + return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5], n[6]); + case 8: + return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7]); + case 9: + return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8]); + case 10: + return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9]); + case 11: + return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10]); + case 12: + return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10], n[11]); + case 13: + return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10], n[11], n[12]); + case 14: + return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10], n[11], n[12], n[13]); + case 15: + return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10], n[11], n[12], n[13], n[14]); + case 16: + return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10], n[11], n[12], n[13], n[14], n[15]); + break; + } + +} +function imandreel_as3_dump(param) +{ + dump(atob(param)); +} + + +var mandreel_embed_plugin; + +function PluginMandreelInterWriteInt(ptr, value) +{ + mandreel_embed_plugin.MandreelInterCalls("WriteInt", ptr,value); +} + +function PluginMandreelInterWriteFloat(ptr, value) +{ + mandreel_embed_plugin.MandreelInterCalls("WriteFloat", ptr,value); +} + +function PluginMandreelInterWriteString(ptr, value) +{ + mandreel_embed_plugin.MandreelInterCalls("WriteString", ptr,value); +} + +function PluginMandreelInterWriteWString(ptr, value) +{ + mandreel_embed_plugin.MandreelInterCalls("WriteWString", ptr,value); +} + +var mandreel_plugin_current_sp = 0; + +function PluginMandreelLockFrame() +{ + var result = mandreel_embed_plugin.MandreelInterCalls("LockFrame"); + + mandreel_plugin_current_sp+=300*1024; + + assert(mandreel_plugin_current_sp<1024*1024); + + return result+mandreel_plugin_current_sp; +} + +function PluginMandreelPause() +{ + mandreel_embed_plugin.MandreelInterCalls("Pause"); +} + +function PluginMandreelResume() +{ + mandreel_embed_plugin.MandreelInterCalls("Resume"); +} + + +function PluginMandreelUnlockFrame() +{ + mandreel_embed_plugin.MandreelInterCalls("UnlockFrame"); + + mandreel_plugin_current_sp-=300*1024; +} + +function PluginMandreelInterCallFunction() +{ + var total_args = arguments.length; + + switch(total_args) + { + case 0: + return mandreel_embed_plugin.MandreelInterCallFunction(); + case 1: + return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0]); + case 2: + return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1]); + case 3: + return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2]); + case 4: + return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3]); + case 5: + return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]); + case 6: + return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); + case 7: + return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6]); + case 8: + return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7]); + case 9: + return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8]); + case 10: + return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8], arguments[9]); + case 11: + return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8], arguments[9], arguments[10]); + case 12: + return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8], arguments[9], arguments[10], arguments[11]); + case 13: + return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8], arguments[9], arguments[10], arguments[11], arguments[12]); + case 14: + return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8], arguments[9], arguments[10], arguments[11], arguments[12], arguments[13]); + case 15: + return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8], arguments[9], arguments[10], arguments[11], arguments[12], arguments[13], arguments[14]); + case 16: + return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8], arguments[9], arguments[10], arguments[11], arguments[12], arguments[13], arguments[14], arguments[15]); + break; + } +} + +function mandreel_plugin_draw() +{ + var canvas = Mandreel_document.getElementById('canvasDiv'); + WebGLUtils.requestAnimationFrame(canvas, mandreel_plugin_draw); + mandreel_embed_plugin.MandreelInterCalls("AppDraw"); + +} + +function mandreelInitPluginPlatform(params) +{ + + if ( params.width != null ) + mandreelAppWidthSrc = params.width; + + if ( params.height != null ) + mandreelAppHeightSrc = params.height; + + + mandreel_embed_plugin = Mandreel_document.createElement('embed'); + mandreel_embed_plugin.setAttribute('width',mandreelAppWidthSrc); + mandreel_embed_plugin.setAttribute('height',mandreelAppHeightSrc); + mandreel_embed_plugin.setAttribute('type',"application/halfbrick-npruntime-scriptable-plugin"); + + var div = Mandreel_document.getElementById('canvasDiv'); + + + var oChild=div.firstChild; + + div.replaceChild(mandreel_embed_plugin, oChild); + + var flashElement = Mandreel_document.getElementById('FlashWrapper'); + if ( flashElement != null ) + { + flashElement.style.visibility = "hidden"; + flashElement.style.width = "0px"; + flashElement.style.height = "0px"; + } + + + + + + Mandreel_window.MandreelInterWriteInt = PluginMandreelInterWriteInt; + Mandreel_window.MandreelInterWriteFloat = PluginMandreelInterWriteInt; + Mandreel_window.MandreelInterWriteString = PluginMandreelInterWriteString; + Mandreel_window.MandreelInterWriteWString = PluginMandreelInterWriteWString; + Mandreel_window.MandreelLockFrame = PluginMandreelLockFrame; + Mandreel_window.MandreelUnlockFrame = PluginMandreelUnlockFrame; + Mandreel_window.MandreelInterCallFunction = PluginMandreelInterCallFunction; + Mandreel_window.MandreelPause = PluginMandreelPause; + Mandreel_window.MandreelResume = PluginMandreelResume; + + Mandreel_setTimeout(function () { + + if ( typeof(params.pluginSolutionName) != 'undefined' ) + mandreel_embed_plugin.init(params.pluginDLL, params.pluginWorkingFolder,params.pluginSolutionName); + else + mandreel_embed_plugin.init(params.pluginDLL, params.pluginWorkingFolder); + + + mandreelAppStartStateFunc("ready",mandreelAppWidthSrc,mandreelAppHeightSrc); + + Mandreel_setTimeout("mandreel_plugin_draw()", 16); + }, 100); + +} + + +function MandreelInterSwfProgress(mode, percentage, bytes, totalbytes) +{ + imandreel_update_load(bytes, totalbytes); + if (mode == 'files') + { + if ( mandreelAppStartStateFunc ) + mandreelAppStartStateFunc("loadingData",percentage); + } + else if (mode == 'audio') + { + if ( mandreelAppStartStateFunc ) + mandreelAppStartStateFunc("loadingAudioUpdate",percentage); + } + else if (mode == 'textureasync') + { + if ( mandreelAppStartStateFunc ) + mandreelAppStartStateFunc("loadingTextureAsyncPack",percentage); + } + +} + +function MandreelInterSwfCheckMethod(method) +{ + if (typeof(Mandreel_window[method])=="undefined") + return 0; + else + return 1; +} + +// End of js/mandreelapp.js file. + +// Start of mandreel.js file. + +var mandreel_total_memory = 15908864; +var mandreel_stack_memory = 1048576; +var mandreel_heap_memory = 13591752; //init_memory = 744248 +///////////////////////////////////////////// +// Heap +///////////////////////////////////////////// +var heap; +var heap8; +var heapU8; +var heap16; +var heapU16; +var heap32; +var heapU32; +var heapFloat; +var heapDouble; +var heapNewPos = 512; + +var ABORT = false; + +var g_mandreel_cache_files = false; + + +var g_mandreel_frame_locked = false; +var g_mandreel_frame_inframe = false; + +var mandreel_cache_files = []; +var g_mandreel_working_folder = 'DataPC/'; +var g_mandreel_datafiles_sufix = '.dat'; +var __FUNCTION_TABLE__ = []; +var mandreel_pos_function_table = 1; +function register_delegate(ptr_func) +{ + var functionId = mandreel_pos_function_table; + __FUNCTION_TABLE__[functionId] = ptr_func; + + mandreel_pos_function_table++; + return functionId*4; +} + + +var g_addr_emit = 0; +function emit_start(addr) +{ + g_addr_emit = addr; +} + +function emit_8(data) +{ + heapU8[g_addr_emit] = data; + g_addr_emit++; +} + +function emit_16(data) +{ + heapU16[g_addr_emit>>1] = data; + g_addr_emit+=2; +} + +function emit_32(data) +{ + heapU32[g_addr_emit>>2] = data; + g_addr_emit+=4; +} + +function emit_fill(data, size) +{ + var j; + for (j=0;j>2];sp+=4; + var p1 = heap32[sp>>2];sp+=4; + var line = heap32[sp>>2];sp+=4; + var name = get_string_from_ptr(p0); + var file = get_string_from_ptr(p1); + assert(false, name + file + ' ' + line); +} +__cxa_pure_virtual.__index__ = 0; +function __cxa_pure_virtual() +{ + assert(0); +} + +// operator delete[] +function _ZdaPv(sp) +{ + free(sp); +} + +// operator delete +function _ZdlPv(sp) +{ + free(sp); +} + +// operator new[](unsigned int) +function _Znaj(sp) +{ + malloc(sp); +} +// operator new[](unsigned int) +function _Znwj(sp) +{ + malloc(sp); +} + +function abort(sp) +{ + assert(0); +} + +var r_g0 = 0; +var r_g1 = 0; +var f_g0 = 0; + +//isFinite(aux) +//isNaN(aux) + +var tlsf_ptr = 0; + + +function initHeap() +{ + heap = new ArrayBuffer(mandreel_total_memory); + heap8 = new Int8Array(heap); + heapU8 = new Uint8Array(heap); + heap16 = new Int16Array(heap); + heapU16 = new Uint16Array(heap); + heap32 = new Int32Array(heap); + heapU32 = new Uint32Array(heap); + heapFloat = new Float32Array(heap); + heapDouble = new Float64Array(heap); + + + for (var i=0;imandreel_total_memory) + { + assert(false); + } + + return newOffset; +} + +function assert(condition, _text) { +//console.assert(condition, _text); + if (!condition) { + var text = "Assertion failed: " + _text; + alert(text + ':\n' + (new Error).stack); + ABORT = true; + throw "Assertion: " + text; + } + } + + function my_assert(sp) + { + var p0 = heap32[sp>>2];sp+=4; + var p1 = heap32[sp>>2];sp+=4; + //var name = get_string_from_ptr(p1); + + assert(false, 'hola'); + } + + function WriteHeapDouble(addr, value) + { + //assert((addr&7)==0); + heapDouble[addr>>3] = value; + } + + function WriteHeapU64(addr, value) + { + heap32[addr>>2] = value.l; + heap32[(addr>>2)+1] = value.h; + } + + +var arg_test_local = Malloc(8); +function my_arg_test(sp) +{ + var ptr = heapU32[sp>>2]; + var size = heapU32[(sp+4)>>2]; + + var arg = heapU32[ptr>>2]; + + + if (size == 4) + { + heap32[ptr>>2] = arg+4; + + arg = heap32[arg>>2]; + + heap32[arg_test_local>>2] = arg; + + //dump('my_arg_test ' + arg + ' ' + ptr + '\n'); + + } + else + { + arg = (arg+7) & ~7; + + heap32[ptr>>2] = arg+8; + + //assert((arg&7)==0); + var value0 = heap32[arg>>2]; + var value1 = heap32[(arg+4)>>2]; + //arg = llvm_readDouble(arg); + + //assert((arg_test_local&7)==0); + + heap32[arg_test_local>>2] = value0; + heap32[(arg_test_local+4)>>2] = value1; + + //llvm_writeDouble(arg_test_local,arg); + + //dump('my_arg_test ' + arg + ' ' + ptr + '\n'); + + + } + + + + + r_g0 = arg_test_local; +} + + + + + + +function uint(value) { + if (value >= 0) return value; + return 4294967296 + value; + } + + + +function puts(sp) +{ + var addr = heapU32[sp>>2]; + + var name = get_string_from_ptr(addr); + + name+='\n'; + + dump(name); + +} + +function _Z11print_valued(_stack_pos, value) +{ + dump(value); + dump('\n'); +} + +function _Z11print_labelPKc(_stack_pos, addr) +{ + puts(_stack_pos,addr); + dump('\n'); +} + + + + +function gettimeofday(sp) + { + var ptr = heap32[sp>>2]; + var time_ms = Date_now(); + heap32[ptr>>2] = time_ms/1000; + heap32[(ptr>>2)+1] = (time_ms%1000)*1000; + r_g0 = 0; + } + + + function free(sp) + { + var ptr = heapU32[sp>>2]; + sp-=8; + + heap32[(sp)>>2] = tlsf_ptr; + heap32[(sp+4)>>2] = ptr; + tlsf_free(sp); + } + + function malloc_size(sp) + { + var ptr = heapU32[sp>>2]; + + sp-=4; + + heap32[(sp)>>2] = ptr; + tlsf_block_size(sp); + } + + + function realloc(sp) + { + var ptr = heapU32[sp>>2]; + var size = heapU32[(sp+4)>>2]; + + //assert(ptr == 0); + + sp-=12; + + //dump('realloc ' + sp + ' ' + ptr + ' ' + size + '\n'); + + heap32[(sp)>>2] = tlsf_ptr; + heap32[(sp+4)>>2] = ptr; + heap32[(sp+8)>>2] = size; + tlsf_realloc(sp); + + //dump('return ' + r_g0 + '\n'); + } + + var llvm_double_addr = Malloc(8); + + function llvm_writeDouble(addr,src) + { + //assert((llvm_double_addr&7)==0); + heapDouble[llvm_double_addr>>3] = src; + + //assert((addr&7)==0); + + var val0 = heap32[(llvm_double_addr)>>2]; + var val1 = heap32[(llvm_double_addr+4)>>2]; + + heap32[(addr)>>2] = val0; + heap32[(addr+4)>>2] = val1; + } + + function llvm_readDouble(addr) + { + //assert((addr&7)==0); + + var val0 = heap32[(addr)>>2]; + var val1 = heap32[(addr+4)>>2]; + + heap32[(llvm_double_addr)>>2] = val0; + heap32[(llvm_double_addr+4)>>2] = val1; + + +// assert((llvm_double_addr&7)==0); + var result = heapDouble[llvm_double_addr>>3]; + + + return result; + + } + + function llvm_move_double(addr_dst, addr_src) + { + + var val0 = heapU32[(addr_src)>>2]; + var val1 = heapU32[(addr_src+4)>>2]; + + heapU32[(addr_dst)>>2] = val0; + heapU32[(addr_dst+4)>>2] = val1; + + } + + function llvm_move_float(addr_dst, addr_src) + { + heapU32[(addr_dst)] = heapU32[(addr_src)]; + } + + function malloc(sp) + { + var size = heapU32[sp>>2]; + + if (size == 0) + { + size = 4; + } + + + if (tlsf_ptr == 0) + { + var addr = Malloc(mandreel_heap_memory); + + sp-=8; + heap32[(sp)>>2] = addr; + heap32[(sp+4)>>2] = mandreel_heap_memory; + tlsf_create(sp); + tlsf_ptr = r_g0; + } + + sp-=8; + + heap32[(sp)>>2] = tlsf_ptr; + heap32[(sp+4)>>2] = size; + tlsf_malloc(sp); + + if (r_g0 == 0) + { + dump('malloc failed ' + size + '\n'); + assert(false); + } + } + + + function log10f(sp) + { + var value = heapFloat[sp>>2]; + f_g0 = Math.log(value)/Math.LN10; + } + + function log10(sp) + { + var value = heapDouble[sp>>3]; + f_g0 = Math.log(value)/Math.LN10; + } + +function logf(sp) + { + var value = heapFloat[sp>>2]; + f_g0 = Math.log(value); + } + + function log(sp) + { + var value = heapDouble[sp>>3]; + f_g0 = Math.log(value); + } + + + + function cosf(sp) + { + var value = heapFloat[sp>>2]; + f_g0 = Math.cos(value); + //assert (isNaN(f_g0) == false); + } + + function acosf(sp) + { + var value = heapFloat[sp>>2]; + f_g0 = Math.acos(value); + } + + function asinf(sp) + { + var value = heapFloat[sp>>2]; + f_g0 = Math.asin(value); + } + + function asin(sp) + { + var value = heapDouble[sp>>3]; + f_g0 = Math.asin(value); + } + + function acos(sp) + { + var value = heapDouble[sp>>3]; + f_g0 = Math.acos(value); + } + + function floor(sp) + { + var value = heapDouble[sp>>3]; + f_g0 = Math.floor(value); + } + + function floorf(sp) + { + var value = heapFloat[sp>>2]; + f_g0 = Math.floor(value); + } + + function round(sp) + { + var value = heapDouble[sp>>3]; + f_g0 = Math.round(value); + } + + function roundf(sp) + { + var value = heapFloat[sp>>2]; + f_g0 = Math.round(value); + } + + function ceilf(sp) + { + var value = heapFloat[sp>>2]; + f_g0 = Math.ceil(value); + } + + function ceil(sp) + { + var value = heapDouble[sp>>3]; + f_g0 = Math.ceil(value); + } + + + function exp2(sp) + { + var value = heapDouble[sp>>3]; + + f_g0 = Math.pow(2,value); + } + + function exp2f(sp) + { + var value = heapFloat[sp>>2]; + + f_g0 = Math.pow(2,value); + } + + + + function pow(sp) + { + var value = heapDouble[sp>>3]; + var value2 = heapDouble[(sp+8)>>3]; + f_g0 = Math.pow(value,value2); + } + + function powf(sp) + { + var value = heapFloat[sp>>2]; + var value2 = heapFloat[(sp+4)>>2]; + f_g0 = Math.pow(value,value2); + } + + function cos(sp) + { + var value = heapDouble[sp>>3]; + f_g0 = Math.cos(value); + //assert (isNaN(f_g0) == false); + } + + function tan(sp) + { + var value = heapDouble[sp>>3]; + f_g0 = Math.tan(value); + //assert (isNaN(f_g0) == false); + } + + function sinf(sp) + { + var value = heapFloat[sp>>2]; + f_g0 = Math.sin(value); + + //assert (isNaN(f_g0) == false); + } + + function expf(sp) + { + var value = heapFloat[sp>>2]; + f_g0 = Math.exp(value); + } + + function exp(sp) + { + var value = heapDouble[sp>>3]; + f_g0 = Math.exp(value); + } + + function tanf(sp) + { + var value = heapFloat[sp>>2]; + f_g0 = Math.tan(value); + } + + function atanf(sp) + { + var value = heapFloat[sp>>2]; + f_g0 = Math.atan(value); + } + + function atan(sp) + { + var value = heapDouble[sp>>3]; + f_g0 = Math.atan(value); + } + + function abs(sp) + { + var value = heap32[sp>>2]; + if (value<0) + r_g0 = -value; + else + r_g0 = value; + } + + function sin(sp) + { + var value = heapDouble[sp>>3]; + f_g0 = Math.sin(value); + } + + function sqrtf(sp) + { + var value = heapFloat[sp>>2]; + f_g0 = Math.sqrt(value); + } + + function sqrt(sp) + { + var value = heapDouble[sp>>3]; + f_g0 = Math.sqrt(value); + } + + function fmod(sp) + { + var value = heapDouble[sp>>3];sp+=8; + var value2 = heapDouble[sp>>3]; + f_g0 = value % value2; + } + + function fmodf(sp) + { + var value = heapFloat[sp>>2];sp+=4; + var value2 = heapFloat[sp>>2]; + f_g0 = value % value2; + } + + + function atan2f(sp) + { + var x = heapFloat[sp>>2];sp+=4; + var y = heapFloat[sp>>2]; + f_g0 = Math.atan2(x,y); + } + + function atan2(sp) + { + var x = heapDouble[sp>>3]; + var y = heapDouble[(sp+8)>>3]; + f_g0 = Math.atan2(x,y); + } + + function fabs(sp) + { + var value = heapDouble[sp>>3]; + f_g0 = Math.abs(value); + } + + + function _Z18OutputDebugStringAPKc(sp) + { + puts(sp); + + } + + + function getenv(sp) + { + r_g0 = 0; + } + + + function mandreel_fcmp_ord(X, Y) + { + return (X == X && Y == Y); + } + + function mandreel_fcmp_uno(X, Y) +{ + + return (X != X || Y != Y); +} + +var llvm_errno = Malloc(4); +function _errno(sp) +{ + r_g0 = llvm_errno; +} + + + + +if (!Mandreel_window["dump"]) + Mandreel_window["dump"] = function dump(str){console.log(str)} ; + + + + + function get_string_from_ptr(ptr) + { + var ret = ""; + + if (ptr == 0) + return ret; + + var i = 0; + while (1) { + // if ((ptr.pos + i) >= ptr.slab.length) { return "<< Invalid read: " + (ptr.pos+i) + " : " + ptr.slab.length + " >>"; } else {} + if (heapU8[ptr + i] == 0) + break; + + var t = String.fromCharCode(heapU8[ptr + i]); + ret += t; + i += 1; + } + + return ret; + } + + function fill_ptr_from_string(ptr, v) + { + var j; + var len = v.length; + var data; + + for(j = 0; j < len; j++) + { + data = v.charCodeAt(j); + + heapU8[ptr] = data; + ptr++; + } + heapU8[ptr] = 0; + } + + var file_ids = []; + var current_file_id = 20; + + function create_file_id(buffer) + { + this.buffer = buffer; + this.offset = 0; + this.byteArray = new Uint8Array(buffer); + } + + function mandreel_rewind(sp) + { + var file_id = heap32[sp>>2];sp+=4; + + file_ids[file_id].offset = 0; + + r_g0 = 0; + + //return 0; + } + + + function mandreel_fseek(sp) + { + var file_id = heap32[sp>>2];sp+=4; + var pos = heap32[sp>>2];sp+=4; + var type = heap32[sp>>2];sp+=4; + + if (type == 2) + { + file_ids[file_id].offset = file_ids[file_id].buffer.byteLength + pos; + } + else if (type == 1) + { + file_ids[file_id].offset = file_ids[file_id].offset + pos; + + } + else if (type == 0) + { + file_ids[file_id].offset = pos; + + } + + r_g0 = 0; + + //return 0; + } + + function mandreel_fclose(sp) + { + var file_id = heap32[sp>>2];sp+=4; + + file_ids[file_id] = null; + r_g0 = 0; + //return 0; + } + + + + function mandreel_feof(sp) + { + var file_id = heap32[sp>>2];sp+=4; + + var offset = file_ids[file_id].offset; + var total = file_ids[file_id].buffer.byteLength; + + if (offset>=total) + r_g0 = 1; + else + r_g0 = 0; + + } + + function mandreel_getc(sp) + { + var file_id = heap32[sp>>2];sp+=4; + + + var offset = file_ids[file_id].offset; + + + var buffer = file_ids[file_id].buffer; + + var byteArray = file_ids[file_id].byteArray; + + var total = 1; + + var result; + + if ((offset+total)>buffer.byteLength) + { + result = -1; + } + else + { + result = byteArray[offset]; + file_ids[file_id].offset+=total; + } + + r_g0 = result; + } + + + + function mandreel_fread(sp) + { + var ptr = heap32[sp>>2];sp+=4; + var size = heap32[sp>>2];sp+=4; + var count = heap32[sp>>2];sp+=4; + var file_id = heap32[sp>>2];sp+=4; + + var offset = file_ids[file_id].offset; + + //dump('fread ' + ptr + ' ' + size + ' ' + count + ' ' + file_id + ' ' + offset + '\n'); + + var buffer = file_ids[file_id].buffer; + + var total = size*count; + + if ((offset+total)>buffer.byteLength) + total = buffer.byteLength-offset; + + var byteArray = file_ids[file_id].byteArray; + + + var sub_array = byteArray.subarray(offset, offset+total); + + heapU8.set(sub_array,ptr); + + + //heapU8.set(byteArray, ptr); + //for (var i=0;i>2];sp+=4; + + var value = file_ids[file_id].offset; + //dump('offset ftell ' + value + '\n'); + r_g0 = value; + //return value; + } + + function _Z30mandreel_fopen_enable_checkfatb(sp) + { + } + + function mandreel_ungetc(sp) + { + var my_char = heap32[sp>>2];sp+=4; + var file_id = heap32[sp>>2];sp+=4; + + var offset = file_ids[file_id].offset-1; + + var byteArray = file_ids[file_id].byteArray; + + assert(byteArray[offset] == my_char); + + file_ids[file_id].offset = offset; + + return my_char; + } + function mandreel_fopen(sp) + { + var ptr_name = heap32[sp>>2];sp+=4; + var ptr_flags = heap32[sp>>2];sp+=4; + + + var name = get_string_from_ptr(ptr_name); + var flags = get_string_from_ptr(ptr_flags); + //dump('fopen\n'); + //dump(name); + //dump('\n'); + //dump(flags); + //dump('\n'); + + var buffer; + + var full_name; + + name = name.toLowerCase(); + + name = name.replace(/\\/g,"/"); + + full_name = g_mandreel_working_folder + name + g_mandreel_datafiles_sufix; + + + buffer =mandreel_cache_files[name]; + + if (buffer == null) + { + r_g0 = 0; + return; + } + + + + //dump('\nopening file ' + full_name + ' ' + buffer.byteLength + '\n'); + + + file_ids[current_file_id] = new create_file_id(buffer); + + var old_id = current_file_id; + current_file_id++; + + r_g0 = old_id; + //return old_id; + } + + function llvm_store_unalign32_float(addr, value) + { + heapFloat[0] = value; + var data = heap32[0]; + heap8[addr] = data&0xff; + heap8[addr+1] = (data>>>8)&0xff; + heap8[addr+2] = (data>>>16)&0xff; + heap8[addr+3] = (data>>>24)&0xff; + } + function llvm_store_unalign32(addr, value) + { + heap8[addr] = value&0xff; + heap8[addr+1] = (value>>>8)&0xff; + heap8[addr+2] = (value>>>16)&0xff; + heap8[addr+3] = (value>>>24)&0xff; + } + + function llvm_read_unalign32(addr) + { + var value; + value = heapU8[addr]; + value |= heapU8[addr+1]<<8; + value |= heapU8[addr+2]<<16; + value |= heapU8[addr+3]<<24; + return value; + } + + function llvm_read_unalign32_float(addr) + { + var value; + value = heapU8[addr]; + value |= heapU8[addr+1]<<8; + value |= heapU8[addr+2]<<16; + value |= heapU8[addr+3]<<24; + + heap32[0] = value; + return heapFloat[0]; + } + + function mandreel_getlocalstorage() + { + return Mandreel_window.localStorage; + //return Mandreel_window.sessionStorage; + } + + function mandreel_openls(sp) + { + var ptr_name = heap32[sp>>2];sp+=4; + + var key = get_string_from_ptr(ptr_name); + + var my_localStorage = mandreel_getlocalstorage(); + + var value = my_localStorage.getItem(key); + + if (value == null) + { + r_g0 = -1; + return; + } + + + var length = my_localStorage.getItem(key + '_size'); + + if (length == null) + { + r_g0 = -1; + return; + } + + + + + dump('mandreel_openls ' + key + ' return ' + length); + + + r_g0 = parseInt(length); + + + + return; + + } + + function mandreel_readls(sp) + { + var ptr_name = heap32[sp>>2];sp+=4; + var data_dst = heap32[sp>>2];sp+=4; + var data_len = heap32[sp>>2];sp+=4; + + var key = get_string_from_ptr(ptr_name); + + var my_localStorage = mandreel_getlocalstorage(); + + var value = my_localStorage.getItem(key); + + var data = JSON.parse(value); + + + for (var i=0;i>2];sp+=4; + var key_a = get_string_from_ptr(ptr_name_a); + + var my_localStorage = mandreel_getlocalstorage(); + + my_localStorage.removeItem(key_a); + my_localStorage.removeItem(key_a + '_size'); + r_g0 = 0; + + } + + +function mandreel_renamels(sp) + { + var ptr_name_a = heap32[sp>>2];sp+=4; + var ptr_name_b = heap32[sp>>2];sp+=4; + + var key_a = get_string_from_ptr(ptr_name_a); + var key_b = get_string_from_ptr(ptr_name_b); + + var my_localStorage = mandreel_getlocalstorage(); + + + var value = my_localStorage.getItem(key_a); + var value2 = my_localStorage.getItem(key_a + '_size'); + + if (value != null && value2 != null) + { + my_localStorage.setItem(key_b, value); + my_localStorage.setItem(key_b + '_size', value2); + + my_localStorage.removeItem(key_a); + my_localStorage.removeItem(key_a + '_size'); + + + r_g0 = 0; +} +else + r_g0 = -1; + } + +function mandreel_writels(sp) + { + var ptr_name = heap32[sp>>2];sp+=4; + var data_src = heap32[sp>>2];sp+=4; + var data_len = heap32[sp>>2];sp+=4; + + var key = get_string_from_ptr(ptr_name); + + + + var data = new Uint8Array(heap,data_src,data_len); + + var value = JSON.stringify(data); + + var my_localStorage = mandreel_getlocalstorage(); + + try + { + my_localStorage.setItem(key, value); + } catch(e) + { + dump('error saving ' + key); + dump(e.message); + r_g0 = 0; + return; + } + + try + { + my_localStorage.setItem(key + '_size', data_len); + } catch(e) + { + dump('error saving ' + key); + dump(e.message); + r_g0 = 0; + return; + } + + + r_g0 = data_len; + return; + +} + +function mandreel_call_constructors(_ptr, size,stackPos) +{ +var ptr = _ptr; + +ptr = ptr >> 2; + +for (var i=0;i>2](stackPos); + +ptr+=2; + +} +} + +function get_string_from_wptr(ptr) + { + var ret = ""; + + if (ptr == 0) + return ret; + + assert((ptr&1)==0); + ptr>>=1; + var i = 0; + while (1) { + // if ((ptr.pos + i) >= ptr.slab.length) { return "<< Invalid read: " + (ptr.pos+i) + " : " + ptr.slab.length + " >>"; } else {} + if (heapU16[ptr + i] == 0) + break; + + var t = String.fromCharCode(heapU16[ptr + i]); + // if (t == "\0") { break; } else {} + ret += t; + i += 1; + } + + return ret; + } + + function fill_wptr_from_string(ptr, v) + { + var j; + var len = v.length; + var data; + + assert((ptr&1)==0); + ptr>>=1; + + for(j = 0; j < len; j++) + { + data = v.charCodeAt(j); + + heapU16[ptr] = data; + ptr++; + } + heapU16[ptr] = 0; + } + +function mandreelInterGetParams(sp) +{ + var params = []; + + var offset = 0; + for (i=1;i>2]; + break; + case 'float': + params[i-1] = heapFloat[(sp+offset)>>2]; + break; + case 'string': + params[i-1] = get_string_from_ptr(heap32[(sp+offset)>>2]); + break; + default: + assert(false); + } + offset+=4; + } + + return params; +} + +function mandreelInterRetParam(type, value) +{ + switch(type) + { + case 'int': + r_g0 = value; + break; + case 'float': + f_g0 = value; + break; + default: + assert(false); + } + + return 0; +} + +function MandreelInterGetFunctionPtr(value) +{ + return __FUNCTION_TABLE__[value >> 2]; +} + + +function MandreelInterCallFunction(returnType,func_name) +{ + var size_params = 0; + + var i; + var num_params = (arguments.length-2)/2; + num_params|=0; + for (i=2;i>2] = arguments[i+1]; + break; + case 'float': + heapFloat[(sp+offset)>>2] = arguments[i+1]; + break; + case 'string': + { + heap32[(sp+offset)>>2] = ptr_data; + var string = arguments[i+1]; + fill_ptr_from_string(ptr_data,string); + + ptr_data += ((string.length + 4) & 0xfffffffc); + } + break; + case 'wstring': + { + MandreelInterWriteInt((sp+offset),ptr_data); + var string = arguments[i+1]; + MandreelInterWriteWString(ptr_data,string); + + ptr_data += ((string.length*2 + 4) & 0xfffffffc); + } + break; + default: + assert(false); + } + offset+=4; + } + + Mandreel_window[func_name](sp); + + if (returnType == 'int') + return r_g0; + else if (returnType == 'float') + return f_g0; + else + { + assert(returnType == 'void'); + return; + } +} + + +function MandreelInterCallFunctionPtr(returnType,func_ptr) +{ + var size_params = 0; + + var i; + var num_params = (arguments.length-2)/2; + num_params|=0; + for (i=2;i>2] = arguments[i+1]; + break; + case 'float': + heapFloat[(sp+offset)>>2] = arguments[i+1]; + break; + case 'string': + { + heap32[(sp+offset)>>2] = ptr_data; + var string = arguments[i+1]; + fill_ptr_from_string(ptr_data,string); + + ptr_data += ((string.length + 4) & 0xfffffffc); + } + break; + case 'wstring': + { + MandreelInterWriteInt((sp+offset),ptr_data); + var string = arguments[i+1]; + MandreelInterWriteWString(ptr_data,string); + + ptr_data += ((string.length*2 + 4) & 0xfffffffc); + } + break; + default: + assert(false); + } + offset+=4; + } + + __FUNCTION_TABLE__[(func_ptr)>>2](sp); + + if (returnType == 'int') + return r_g0; + else if (returnType == 'float') + return f_g0; + else + { + assert(returnType == 'void'); + return; + } +} + + +var MANDREEL_HTTP_REQUEST_MODE_GET = 0; +var MANDREEL_HTTP_REQUEST_MODE_POST = 1; +var MANDREEL_HTTP_REQUEST_MODE_PUT = 2; + +var MANDREEL_HTTP_REQUEST_STATUS_ERROR = 0; +var MANDREEL_HTTP_REQUEST_STATUS_BUSY = 1; +var MANDREEL_HTTP_REQUEST_STATUS_FINISHED = 2; +var MANDREEL_HTTP_REQUEST_STATUS_INIT = 3; + + +var mandreel_js_mapping_ids = []; +var mandreel_js_mapping_ids_free = []; + + +function Mandreel_HttpRequest_Create(sp) +{ + var ptr_url = heap32[sp>>2];sp+=4; + var type = heap32[sp>>2];sp+=4; + + + var url = get_string_from_ptr(ptr_url); + + + var str_type = 'GET'; + if (type == MANDREEL_HTTP_REQUEST_MODE_GET) + str_type = 'GET'; + else if (type == MANDREEL_HTTP_REQUEST_MODE_PUT) + str_type = 'PUT'; + else if (type == MANDREEL_HTTP_REQUEST_MODE_POST) + str_type = 'POST'; + + var xmlhttp_get = new XMLHttpRequest(); + xmlhttp_get.open(str_type,url); + + if("responseType" in xmlhttp_get) + xmlhttp_get.responseType="arraybuffer"; + else + { + xmlhttp_get.overrideMimeType('text/plain; charset=x-user-defined'); + } + + if (mandreel_js_mapping_ids_free.length == 0) + mandreel_js_mapping_ids_free.push(mandreel_js_mapping_ids.length); + + var new_id = mandreel_js_mapping_ids_free.pop(); + + var my_state = { + buffer : null, + httpRequest : xmlhttp_get, + status : MANDREEL_HTTP_REQUEST_STATUS_INIT, + offset_read : 0 + }; + + + + mandreel_js_mapping_ids[new_id] = my_state; + + r_g0 = new_id+1; +} + +function Mandreel_HttpRequest_Send(sp) +{ + var _id = heap32[sp>>2];sp+=4; + var ptr_data = heap32[sp>>2];sp+=4; + var id = _id-1; + + var data; + + if (ptr_data) + data = get_string_from_ptr(ptr_data); + else + data = null; + + var my_state = mandreel_js_mapping_ids[id]; + + + my_state.status = MANDREEL_HTTP_REQUEST_STATUS_BUSY; + + my_state.httpRequest.onreadystatechange = function() + { + if (my_state.httpRequest.readyState==4) + { + if (my_state.httpRequest.status==200) + { + var buffer; + + if (my_state.httpRequest.responseType=="arraybuffer") + buffer=my_state.httpRequest.response; + else if (my_state.httpRequest.mozResponseArrayBuffer != null) + buffer = my_state.httpRequest.mozResponseArrayBuffer; + else + buffer=my_state.httpRequest.response; + + my_state.status = MANDREEL_HTTP_REQUEST_STATUS_FINISHED; + my_state.buffer = new Uint8Array(buffer); + //alert(my_state.buffer.length); + + //alert(mandreel_js_mapping_ids[id].buffer); + + } + else + my_state.status = MANDREEL_HTTP_REQUEST_STATUS_ERROR; + } + } + + my_state.httpRequest.send(data); +} + + +function Mandreel_HttpRequest_Status(sp) +{ + var _id = heap32[sp>>2];sp+=4; + var id = _id-1; + + + r_g0 = mandreel_js_mapping_ids[id].status; +} + +function Mandreel_HttpRequest_Read(sp) +{ + var _id = heap32[sp>>2];sp+=4; + var ptr = heap32[sp>>2];sp+=4; + var size = heap32[sp>>2];sp+=4; + var id = _id-1; + + var remaining_bytes = mandreel_js_mapping_ids[id].buffer.length - mandreel_js_mapping_ids[id].offset_read; + + if (size>remaining_bytes) + size = remaining_bytes; + + var sub_array = mandreel_js_mapping_ids[id].buffer.subarray(mandreel_js_mapping_ids[id].offset_read, mandreel_js_mapping_ids[id].offset_read+size); + heapU8.set(sub_array,ptr); + + mandreel_js_mapping_ids[id].offset_read+=size; + + r_g0 = size; +} + +function Mandreel_HttpRequest_BytesAvalable(sp) +{ + var _id = heap32[sp>>2];sp+=4; + var id = _id-1; + + + if (mandreel_js_mapping_ids[id].buffer) + r_g0 = mandreel_js_mapping_ids[id].buffer.length - mandreel_js_mapping_ids[id].offset_read; + else + r_g0 = 0; +} + +function Mandreel_HttpRequest_Close(sp) +{ + var _id = heap32[sp>>2];sp+=4; + var id = _id-1; + + mandreel_js_mapping_ids[id] = null; + mandreel_js_mapping_ids_free.push(id); +} + +function Mandreel_HttpRequest_SetRequestHeader(sp) +{ + var _id = heap32[sp>>2];sp+=4; + var ptr_a = heap32[sp>>2];sp+=4; + var ptr_b = heap32[sp>>2];sp+=4; + var id = _id-1; + + var str_a = get_string_from_ptr(ptr_a); + var str_b = get_string_from_ptr(ptr_b); + + var my_state = mandreel_js_mapping_ids[id]; + + my_state.httpRequest.setRequestHeader(str_a, str_b); +} + + +var Mandreel_TextureAsync_textures = 0; +var Mandreel_TextureAsync_textures_loaded = 0; + +var Mandreel_TextureAsync_PackBufferData = new Array(); + +function Mandreel_TextureAsync_SetData(sp) +{ + var texture_id = heap32[sp>>2];sp+=4; + + var tex = array_ids_ogl[texture_id]; + + if ( mandreelAppPlatform != "canvas" ) + { + imandreel_gl.texImage2D(imandreel_gl.TEXTURE_2D, 0, imandreel_gl.RGBA, imandreel_gl.RGBA, imandreel_gl.UNSIGNED_BYTE, tex.image); + tex.image = null; + } +} + +function Mandreel_TextureAsync_CheckPending(sp) +{ + r_g0 = Mandreel_TextureAsync_textures - Mandreel_TextureAsync_textures_loaded; +} + +function Mandreel_TextureAsync_GetProperties(sp) +{ + var texture_id = heap32[sp>>2];sp+=4; + var ptr_width = heap32[sp>>2];sp+=4; + var ptr_height = heap32[sp>>2];sp+=4; + + var tex = array_ids_ogl[texture_id]; + + if (tex == null || tex.mandreel_width == undefined) + r_g0 = 0; + else + { + heap32[ptr_width>>2] = tex.mandreel_width; + heap32[ptr_height>>2] = tex.mandreel_height; + r_g0 = 1; + } +} + +function mandreel_arrayBufferDataUri(offset, size, buffer) { +var bytes = new Uint8Array(buffer,offset,size) + var ascii = ''; + for (var i=0; i>2];sp+=4; + var texture_id = heap32[sp>>2];sp+=4; + + var name = get_string_from_ptr(ptr_name); + + var nameSrc = name; + + name = name.toLowerCase(); + + + var full_name = g_mandreel_working_folder + name; + + var image = new Image(); + + + Mandreel_TextureAsync_textures++; + + var imgURL = null; + + + + + image.onerror = function() { + dump('error loading texture ' + image.src + '\n'); + Mandreel_TextureAsync_textures_loaded++; + } + image.onload = function() + { + if (imgURL) + { + var URL = Mandreel_window.URL || Mandreel_window.webkitURL; + URL.revokeObjectURL(imgURL); + } + if ( mandreelAppPlatform == "canvas" ) + { + array_ids_ogl[texture_id] = image; + Mandreel_TextureAsync_textures_loaded++; + } + else + { + var tex = array_ids_ogl[texture_id]; + if (tex) + { + tex.image = image; + tex.mandreel_width = image.width; + tex.mandreel_height = image.height; + Mandreel_TextureAsync_textures_loaded++; + + var sp = MandreelLockFrame(); + MandreelInterCallFunction('void',"Mandreel_TextureAsync_Loaded",'int',texture_id,'int',image.width,'int',image.height, sp); + MandreelUnlockFrame(); + } + else + { + dump('texture not valid ' + texture_id + ' ' + name + '\n'); + Mandreel_TextureAsync_textures_loaded++; + } + } + + + } + + var new_sp = sp-4096; + + var packfile = new_sp + 2048; + var offset_ptr = new_sp + 2048+1024; + var size_ptr = new_sp + 2048+1024+4; + + fill_ptr_from_string(new_sp + 1024,name); + + heap32[(new_sp)>>2] = new_sp + 1024; + heap32[(new_sp+4)>>2] = offset_ptr; + heap32[(new_sp+8)>>2] = size_ptr; + heap32[(new_sp+12)>>2] = packfile; + iMandreel_TextureAsync_GetPackOffset(new_sp); + + + var image_src; + + var image_src_valid = true; + + if (r_g0) + { + var packfilename = get_string_from_ptr(packfile); + image_src = mandreel_arrayBufferDataUri(heap32[offset_ptr>>2],heap32[size_ptr>>2],Mandreel_TextureAsync_PackBufferData[packfilename]); + } + else + { + + if (nameSrc.search('http:') != -1 || nameSrc.search('https:') != -1) + { + image.crossOrigin = 'anonymous'; // no credentials flag. Same as + image_src = nameSrc; + } + else + { + if (mandreel_is_filesystem()) + { + image_src_valid = false; + + var new_name = mandreel_texture_async_fix_name(full_name); + mandreel_fs_get_url(new_name, function Mandreel_TextureAsync_Load_FS(data) { + if (data) + { + image.src = data; + } + else + { + var packdata_request = new XMLHttpRequest(); + + packdata_request.open("GET", full_name, true); + + if("responseType" in packdata_request) + packdata_request.responseType="arraybuffer"; + else + packdata_request.overrideMimeType('text/plain; charset=x-user-defined'); + + packdata_request.onreadystatechange = function() + { + if (packdata_request.readyState != 4) return; + + if (packdata_request.status == 200) + { + var buffer; + if (packdata_request.responseType=="arraybuffer") + buffer=packdata_request.response; + else if (packdata_request.mozResponseArrayBuffer != null) + buffer = packdata_request.mozResponseArrayBuffer; + else + buffer=packdata_request.response; + + mandreel_fs_saveFile(new_name, buffer); + + var uri = mandreel_arrayBufferDataUri(0,buffer.byteLength,buffer); + + image.src = uri; + + } + else + { + + Mandreel_TextureAsync_textures_loaded++; + + } + } + + packdata_request.send(); + + } + } + ); + } + else if (mandreel_is_indexeddb()) + { + image_src_valid = false; + + var new_name = mandreel_texture_async_fix_name(full_name); + mandreel_indexedDB.load(new_name,function Mandreel_TextureAsync_Load_IDB(data) { + if (data) + { + var URL = Mandreel_window.URL || Mandreel_window.webkitURL; + + + // Create and revoke ObjectURL + imgURL = URL.createObjectURL(data); + + image.src = imgURL; + } + else + { + var packdata_request = new XMLHttpRequest(); + + packdata_request.open("GET", full_name, true); + + packdata_request.responseType = "blob"; + + + + packdata_request.onreadystatechange = function() + { + if (packdata_request.readyState != 4) return; + + if (packdata_request.status == 200) + { + var buffer=packdata_request.response; + + var URL = Mandreel_window.URL || Mandreel_window.webkitURL; + + // Create and revoke ObjectURL + imgURL = URL.createObjectURL(buffer); + + image.src = imgURL; + + mandreel_fs_saveFile(new_name, buffer); + + } + else + { + + Mandreel_TextureAsync_textures_loaded++; + + } + } + + packdata_request.send(); + } + + } + ); + } + else + image_src = full_name; + } + } + + + if (image_src_valid) + { + setTimeout( function Mandreel_TextureAsync_Load_callback() { + image.src = image_src; + }, 1); + } +} + + + +function __sandbox_OutputDebugString(sp) +{ + puts(sp); +} + + + + +var MANDREELCALLJS_TYPE_RETURN_VOID = 0; +var MANDREELCALLJS_TYPE_INT = 1; +var MANDREELCALLJS_TYPE_FLOAT = 2; +var MANDREELCALLJS_TYPE_STRING = 3; +var MANDREELCALLJS_TYPE_RETURN_INT = 4; +var MANDREELCALLJS_TYPE_RETURN_FLOAT = 5; + +function MandreelInterWriteString(ptr, value) +{ + fill_ptr_from_string(ptr,value); +} + +function MandreelInterWriteWString(ptr, value) +{ + fill_wptr_from_string(ptr, value); +} + +function MandreelInterWriteFloat(ptr, value) +{ + heapFloat[ptr>>2] = value; +} + +function MandreelPause() +{ + _imandreel_pause_game = true; +} + +function MandreelResume() +{ + _imandreel_pause_game = false; +} + + +function MandreelLockFrame() +{ + assert(g_mandreel_frame_inframe == false, "calling lockframe during render frame"); + assert(g_mandreel_frame_locked == false, "calling lockframe twice"); + g_mandreel_frame_locked = true; + + return g_stack_pointer+800*1024; +} + +function MandreelUnlockFrame() +{ + assert(g_mandreel_frame_inframe == false); + g_mandreel_frame_locked = false; +} + + +function MandreelInterWriteInt(ptr, value) +{ + heap32[ptr>>2] = value; +} + +function MandreelInterStringFromWPtr(ptr) +{ + return get_string_from_wptr(ptr); +} + +function MandreelInterStringFromPtr(ptr) +{ + return get_string_from_ptr(ptr); +} + +function mandreel_my_call_external_array(method, params) +{ + var result + var resultString; + try + { + switch(params.length) + { + case 1: + resultString = Mandreel_window[method](params[0]); + break; + case 2: + resultString = Mandreel_window[method](params[0],params[1]); + break; + case 3: + resultString = Mandreel_window[method](params[0],params[1],params[2]); + break; + case 4: + resultString = Mandreel_window[method](params[0],params[1],params[2],params[3]); + break; + case 5: + resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4]); + break; + case 6: + resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4],params[5]); + break; + case 7: + resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4],params[5],params[6]); + break; + case 8: + resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7]); + break; + case 9: + resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8]); + break; + case 10: + resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9]); + break; + case 11: + resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10]); + break; + case 12: + resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11]); + break; + case 13: + resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12]); + break; + case 14: + resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12],params[13]); + break; + case 15: + resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12],params[13],params[14]); + break; + default: + assert(false); + } + result = 0; + } catch(e) { dump('error calling ' + method + '\n'); dump(e); result = 1;} + + return [result,resultString]; +} + + +function Mandreel_InterJS_Call(sp) +{ + var new_sp = sp; + var method_ptr = heap32[sp>>2];sp+=4; + var method = get_string_from_ptr(method_ptr); + + var params = new Array(); + + + params.push(new_sp); + + var var_int; + var var_string; + var var_double; + + var return_type; + var return_ptr; + while (true) + { + var my_type = heap32[sp>>2];sp+=4; + + + if (my_type == MANDREELCALLJS_TYPE_RETURN_VOID) + { + return_type = my_type; + break; + } + else if (my_type == MANDREELCALLJS_TYPE_INT) + { + var_int = heap32[sp>>2]; + + params.push(var_int); + sp+=4; + } + else if (my_type == MANDREELCALLJS_TYPE_FLOAT) + { + sp = (sp+7) & ~7; + + var_double = llvm_readDouble(sp); + + params.push(var_double); + sp+=8; + } + else if (my_type == MANDREELCALLJS_TYPE_STRING) + { + var_int = heap32[sp>>2]; + var_string = get_string_from_ptr(var_int); + + params.push(var_string); + sp+=4; + } + else if (my_type == MANDREELCALLJS_TYPE_RETURN_INT) + { + return_type = my_type; + return_ptr = heap32[sp>>2]; + break; + } + else if (my_type == MANDREELCALLJS_TYPE_RETURN_FLOAT) + { + return_type = my_type; + return_ptr = heap32[sp>>2]; + break; + } + else + { + assert(false, "invalid arguments calling Mandreel_InterJS_Call"); + } + } + + var result = mandreel_my_call_external_array(method,params); + + r_g0 = result[0]; + + + if (r_g0 == 0) + { + if (return_type == MANDREELCALLJS_TYPE_RETURN_INT) + { + heap32[return_ptr>>2] = result[1]; + } + else if (return_type == MANDREELCALLJS_TYPE_RETURN_FLOAT) + { + heapFloat[return_ptr>>2] = result[1]; + } + + } +} + +function iMandreelRegisterExternalCallback() +{ +} + +function __mandreel_internal_CreateWindow() +{ +} + +var __mandreel_async_calls_mandreel = []; +var __mandreel_async_calls_js = []; + + +function Mandreel_InterJS_AsyncCall(sp) +{ + var method_ptr = heap32[sp>>2];sp+=4; + var _func_name = get_string_from_ptr(method_ptr); + var param_ptr = heap32[sp>>2];sp+=4; + var _param = get_string_from_ptr(param_ptr); + + __mandreel_async_calls_js.push({func_name:_func_name,param:_param}); +} + + + + +function MandreelInterCallFunctionAsync(_func_name, _param) +{ + __mandreel_async_calls_mandreel.push({func_name:_func_name,param:_param}); + + +} + +function __mandreel_process_async_calls() +{ + if (__mandreel_async_calls_mandreel.length) + { + var temp_list = __mandreel_async_calls_mandreel.slice(0); + + __mandreel_async_calls_mandreel = []; + + for (var i=0;i>2] = str_ptr; + + Mandreel_window[func_name](sp); + } + } + + if (__mandreel_async_calls_js.length) + { + var temp_list = __mandreel_async_calls_js.slice(0); + + __mandreel_async_calls_js = []; + + for (var i=0;i>2];sp+=4; + mandreelAppFullscreen(enable); +} + +var array_ids_ogl = []; + +var max_ogl_id = 8192; + +var array_ids_ogl_enable = []; +var g_current_program_id = 0; + + +var uniformArrays2 = []; +var uniformArrays3 = []; +var uniformArrays4 = []; +var uniformArraysCreated = 0; +var mandreel_draw_enable = true; + + +if (typeof imandreel_gl=="undefined") +{ + alert('using old template, update code'); +} + +function myglCreateUniformArrays() +{ + if ( uniformArraysCreated == 0 ) + { + for(var i=0; i<256;i++ ) + { + uniformArrays2[i] = new Float32Array(i*2); + uniformArrays3[i] = new Float32Array(i*3); + uniformArrays4[i] = new Float32Array(i*4); + } + uniformArraysCreated = 1; + } +} + +var my_super_id = 1; +function myglNewSlot() +{ + //var id = array_ids_ogl_enable.pop(); + var id = my_super_id; + my_super_id++; + return id; +} + +function myglFreeSlot(id) +{ + //array_ids_ogl_enable.push(id); +} + + +function myglCreateProgram(sp) +{ + var id = myglNewSlot(); + var program = imandreel_gl.createProgram(); + + program.uniform_locations_current_id = 0; + program.array_uniform_locations = []; + + array_ids_ogl[id] = program; + + + r_g0 = id; +} + +function myglCreateShader(sp) +{ + var type = heap32[sp>>2];sp+=4; + var id = myglNewSlot(); + + array_ids_ogl[id] = imandreel_gl.createShader(type); + + r_g0 = id; +} + +function myglAttachShader(sp) +{ + var program_id = heap32[sp>>2];sp+=4; + var shader_id = heap32[sp>>2];sp+=4; + + imandreel_gl.attachShader(array_ids_ogl[program_id], array_ids_ogl[shader_id]); +} + +function myglBindAttribLocation(sp) +{ + var program_id = heap32[sp>>2];sp+=4; + var index = heap32[sp>>2];sp+=4; + var ptr_string = heap32[sp>>2];sp+=4; + + var string = get_string_from_ptr(ptr_string); + + imandreel_gl.bindAttribLocation(array_ids_ogl[program_id], index, string); +} + +function myglLinkProgram(sp) +{ + var program_id = heap32[sp>>2];sp+=4; + + imandreel_gl.linkProgram(array_ids_ogl[program_id]); +} + +function myglShaderSource(sp) +{ + var id = heap32[sp>>2];sp+=4; + var ptr_string = heap32[sp>>2];sp+=4; + + var shader = array_ids_ogl[id]; + + var shader_code = get_string_from_ptr(ptr_string); + + //dump(shader_code); + + + imandreel_gl.shaderSource(shader, shader_code); +} + + +function myglDrawArrays(sp) +{ + var mode = heap32[sp>>2];sp+=4; + var first = heap32[sp>>2];sp+=4; + var count = heap32[sp>>2];sp+=4; + + if (mandreel_draw_enable) + imandreel_gl.drawArrays(mode, first, count); + + + //dump('draw arrays ' + mode + ' ' + first + ' ' + count + '\n'); + } + +function myglDrawElements(sp) +{ + var mode = heapU32[sp>>2]; sp+=4; + var count = heapU32[sp>>2]; sp+=4; + var type = heapU32[sp>>2]; sp+=4; + var offset = heapU32[sp>>2]; sp+=4; + + + if (mandreel_draw_enable) + imandreel_gl.drawElements(mode, count, type, offset); + + + +} + +function myglCreateTexture(sp) +{ + var id = myglNewSlot(); + array_ids_ogl[id] = imandreel_gl.createTexture(); + + r_g0 = id; +} + +function myglCreateRenderBuffer(sp) { + var id = myglNewSlot(); + array_ids_ogl[id] = imandreel_gl.createRenderbuffer(); + + r_g0 = id; +} + +function myglCreateFrameBuffer(sp) { + var id = myglNewSlot(); + array_ids_ogl[id] = imandreel_gl.createFramebuffer(); + + r_g0 = id; +} + +function myglBindFramebuffer(sp) +{ + var target = heap32[sp >> 2]; sp += 4; + var framebuffer_id = heap32[sp >> 2]; sp += 4; + + if (framebuffer_id != 0) + { + var framebuffer = array_ids_ogl[framebuffer_id]; + imandreel_gl.bindFramebuffer(target,framebuffer); + } + else + imandreel_gl.bindFramebuffer(target,null); + +} + +function myglBindRenderbuffer(sp) +{ + var target = heap32[sp >> 2]; sp += 4; + var renderbuffer_id = heap32[sp >> 2]; sp += 4; + + var renderbuffer = array_ids_ogl[renderbuffer_id]; + + imandreel_gl.bindRenderbuffer(target,renderbuffer); + +} + + +function myglRenderbufferStorage(sp) { + var target = heap32[sp >> 2]; sp += 4; + var internalformat = heap32[sp >> 2]; sp += 4; + var witdth = heap32[sp >> 2]; sp += 4; + var height = heap32[sp >> 2]; sp += 4; + + imandreel_gl.renderbufferStorage(target, internalformat, witdth, height); + +} + +function myglFramebufferRenderbuffer (sp) +{ + var target = heap32[sp>>2];sp+=4; + var attachment = heap32[sp>>2];sp+=4; + var renderbuffertarget = heap32[sp>>2];sp+=4; + var renderbuffer_id = heap32[sp>>2];sp+=4; + + var renderbuffer = array_ids_ogl[renderbuffer_id]; + + imandreel_gl.framebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); + +} + +function myglFramebufferTexture2D (sp) +{ + var target = heap32[sp>>2];sp+=4; + var attachment = heap32[sp>>2];sp+=4; + var textarget = heap32[sp>>2];sp+=4; + var texture_id = heap32[sp>>2];sp+=4; + var level = heap32[sp>>2];sp+=4; + + var texture = array_ids_ogl[texture_id]; + + imandreel_gl.framebufferTexture2D(target, attachment, textarget, texture, level); + + +} + +function myglTexImage2D(sp) + { + var target = heap32[sp>>2];sp+=4; + var level = heap32[sp>>2];sp+=4; + var internalFormat = heap32[sp>>2];sp+=4; + var width = heap32[sp>>2];sp+=4; + var height = heap32[sp>>2];sp+=4; + var border = heap32[sp>>2];sp+=4; + var format = heap32[sp>>2];sp+=4; + var type = heap32[sp>>2];sp+=4; + var data = heap32[sp>>2];sp+=4; + + if (level>0 && target==imandreel_gl.TEXTURE_2D) + return; + + if (data == 0) + { + //imandreel_gl.texImage2D(target, level, internalFormat, width, height, border, format, type, null); + var buffer; + var bufferView; + + if (type == imandreel_gl.UNSIGNED_SHORT_5_6_5 || type == imandreel_gl.UNSIGNED_SHORT_4_4_4_4 || type == imandreel_gl.UNSIGNED_SHORT_5_5_5_1) + { + buffer = new ArrayBuffer(width*height*2); + bufferView = new Uint16Array(buffer); + } + else + { + var size; + if (format == imandreel_gl.LUMINANCE) + size = width*height; + else if (format == imandreel_gl.RGB) + size = width*height*3; + else if (format == imandreel_gl.RGBA) + size = width*height*4; + else if (format == imandreel_gl.ALPHA) + size = width*height; + else if (format == imandreel_gl.LUMINANCE_ALPHA) + size = width*height*2; + + buffer = new ArrayBuffer(size); + bufferView = new Uint8Array(buffer); + } + + imandreel_gl.texImage2D(target, level, internalFormat, width, height, border, format, type, bufferView); + return; + } + + + var bufferView; + if (type == imandreel_gl.UNSIGNED_SHORT_5_6_5 || type == imandreel_gl.UNSIGNED_SHORT_4_4_4_4 || type == imandreel_gl.UNSIGNED_SHORT_5_5_5_1) + { + bufferView = new Uint16Array(heap,data,width*height); + } + else if (type == imandreel_gl.UNSIGNED_BYTE) + { + if (format == imandreel_gl.LUMINANCE) + bufferView = new Uint8Array(heap,data,width*height); + else if (format == imandreel_gl.RGB) + bufferView = new Uint8Array(heap,data,width*height*3); + else if (format == imandreel_gl.RGBA) + bufferView = new Uint8Array(heap,data,width*height*4); + else if (format == imandreel_gl.ALPHA) + bufferView = new Uint8Array(heap,data,width*height); + else if (format == imandreel_gl.LUMINANCE_ALPHA) + bufferView = new Uint8Array(heap,data,width*height*2); + else + { + dump('format unknown ' + format + '\n'); + assert(false); + } + } + else + { + dump('type unknown ' + type + '\n'); + assert(false); + } + + imandreel_gl.texImage2D(target, level, internalFormat, width, height, border, format, type, bufferView); + if ((width&(width-1))==0 && (height&(height-1))==0) + { + if (target==imandreel_gl.TEXTURE_2D) + imandreel_gl.generateMipmap(target); +} + } + function myglStencilFunc(sp) + { + var func = heap32[sp>>2];sp+=4; + var ref = heap32[sp>>2];sp+=4; + var mask = heap32[sp>>2];sp+=4; + + imandreel_gl.stencilFunc(func, ref, mask); + } + + function myglStencilFuncSeparate(sp) + { + var face = heap32[sp>>2];sp+=4; + var func = heap32[sp>>2];sp+=4; + var ref = heap32[sp>>2];sp+=4; + var mask = heap32[sp>>2];sp+=4; + + imandreel_gl.stencilFuncSeparate(face,func,ref,mask); + } + + function myglStencilMaskSeparate(sp) + { + var face = heap32[sp>>2];sp+=4; + var mask = heap32[sp>>2];sp+=4; + + imandreel_gl.stencilMaskSeparate(face,mask); + } + + function myglStencilMask(sp) + { + var mask = heap32[sp>>2];sp+=4; + + imandreel_gl.stencilMask(mask); + } + function myglStencilOp (sp) + { + var fail = heap32[sp>>2];sp+=4; + var zfail = heap32[sp>>2];sp+=4; + var zpass = heap32[sp>>2];sp+=4; + + imandreel_gl.stencilOp(fail, zfail, zpass); + } + + function myglStencilOpSeparate (sp) + { + var face = heap32[sp>>2];sp+=4; + var fail = heap32[sp>>2];sp+=4; + var zfail = heap32[sp>>2];sp+=4; + var zpass = heap32[sp>>2];sp+=4; + + imandreel_gl.stencilOpSeparate(face, fail, zfail, zpass); + } + + function myglTexSubImage2D(sp) + { + var target = heap32[sp>>2];sp+=4; + var level = heap32[sp>>2];sp+=4; + var xoffset = heap32[sp>>2];sp+=4; + var yoffset = heap32[sp>>2];sp+=4; + var width = heap32[sp>>2];sp+=4; + var height = heap32[sp>>2];sp+=4; + var format = heap32[sp>>2];sp+=4; + var type = heap32[sp>>2];sp+=4; + var data = heap32[sp>>2];sp+=4; + + + + var bufferView; + if (type == imandreel_gl.UNSIGNED_SHORT_5_6_5 || type == imandreel_gl.UNSIGNED_SHORT_4_4_4_4 || type == imandreel_gl.UNSIGNED_SHORT_5_5_5_1) + { + bufferView = new Uint16Array(heap,data,width*height); + } + else if (type == imandreel_gl.UNSIGNED_BYTE) + { + if (format == imandreel_gl.LUMINANCE) + bufferView = new Uint8Array(heap,data,width*height); + else if (format == imandreel_gl.RGB) + bufferView = new Uint8Array(heap,data,width*height*3); + else if (format == imandreel_gl.RGBA) + bufferView = new Uint8Array(heap,data,width*height*4); + else if (format == imandreel_gl.ALPHA) + bufferView = new Uint8Array(heap,data,width*height); + } + + imandreel_gl.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, bufferView); + } + + + function myglCreateBuffer(sp) +{ + var id = myglNewSlot(); + array_ids_ogl[id] = imandreel_gl.createBuffer(); + + r_g0 = id; +} + +var glBufferDataArray = []; + +function myglBufferData(sp) +{ + var target = heapU32[sp>>2]; sp+=4; + var size = heapU32[sp>>2]; sp+=4; + var data = heapU32[sp>>2]; sp+=4; + var usage = heapU32[sp>>2]; sp+=4; + + if (data == 0) + imandreel_gl.bufferData(target, size, usage); + else + { + if (usage == imandreel_gl.STATIC_DRAW || true) + { + var buffer_data = new Int8Array(heap, data, size); + imandreel_gl.bufferData(target, buffer_data, usage); + } + else + { + var new_size = size/4; + var buffer_data = glBufferDataArray[new_size]; + + if (buffer_data == null) + { + buffer_data = new Int32Array(new_size); + glBufferDataArray[new_size] = buffer_data; + } + + var new_data = data>>2; + + for ( var i = 0 ; i < new_size ; ++i ) + { + buffer_data[i] = heap32[new_data+i]; + } + + imandreel_gl.bufferData(target, buffer_data, usage); + } + } +} + +function myglBufferSubData(sp) +{ + var target = heapU32[sp>>2]; sp+=4; + var offset = heapU32[sp>>2]; sp+=4; + var size = heapU32[sp>>2]; sp+=4; + var data = heapU32[sp>>2]; sp+=4; + + + var buffer_data = new Int8Array(heap, data, size); + imandreel_gl.bufferSubData(target, offset, buffer_data); + +// dump('buffer sub data ' + offset + ' ' + size + ' ' + data + '\n') + +} + + +function myglBindBuffer(sp) +{ + var target = heapU32[sp>>2]; sp+=4; + var id = heapU32[sp>>2]; sp+=4; + + imandreel_gl.bindBuffer(target, array_ids_ogl[id]); +} + + +function myglUseProgram(sp) +{ + var program_id = heap32[sp>>2];sp+=4; + + g_current_program_id = program_id; + + imandreel_gl.useProgram(array_ids_ogl[program_id]); + +} + +function myglDisableVertexAttribArray(sp) +{ + var idx = heapU32[sp>>2];sp+=4; + imandreel_gl.disableVertexAttribArray(idx); +} +function myglEnableVertexAttribArray(sp) +{ + var idx = heapU32[sp>>2];sp+=4; + imandreel_gl.enableVertexAttribArray(idx); +} + +function myglVertexAttribPointer(sp) +{ + var idx = heapU32[sp>>2];sp+=4; + var size = heapU32[sp>>2];sp+=4; + var type = heapU32[sp>>2];sp+=4; + var normalized = heapU32[sp>>2];sp+=4; + var stride = heapU32[sp>>2];sp+=4; + var ptr = heapU32[sp>>2];sp+=4; + + //dump(idx + ' ' + size + ' ' + type + ' ' + normalized + ' ' + stride + ' ' + ptr + '\n'); + + + imandreel_gl.vertexAttribPointer(idx, size, type, normalized, stride, ptr); +} + +function myglPolygonOffset(sp) +{ + var factor = heapFloat[sp>>2]; sp+=4; + var units = heapFloat[sp>>2]; sp+=4; + imandreel_gl.polygonOffset(factor, units); +} + +function myglEnable(sp) + { + var value = heap32[sp>>2];sp+=4; + + imandreel_gl.enable(value); + } + +function myglDisable(sp) + { + var value = heap32[sp>>2];sp+=4; + + imandreel_gl.disable(value); + } + + function myglDepthFunc(sp) + { + var func = heapU32[sp>>2];sp+=4; + + imandreel_gl.depthFunc(func); + + } + + function myglGenerateMipmap(sp) + { + var texture_type = heap32[sp>>2];sp+=4; + imandreel_gl.generateMipmap(texture_type); + } + + function myglPixelStorei (sp) + { + var pname = heap32[sp>>2];sp+=4; + var param = heap32[sp>>2];sp+=4; + imandreel_gl.pixelStorei(pname,param); + } + + + function myglBindTexture(sp) + { + var texture_type = heap32[sp>>2];sp+=4; + var texture_id = heap32[sp>>2];sp+=4; + +if (texture_id == 0) +{ + imandreel_gl.bindTexture(texture_type, null); +} +else +{ + var tex = array_ids_ogl[texture_id]; + imandreel_gl.bindTexture(texture_type, tex); + } + + } + + function myglActiveTexture(sp) +{ + var param = heapU32[sp>>2];sp+=4; + imandreel_gl.activeTexture(param); +} + +function myglCompileShader(sp) +{ + var id = heap32[sp>>2];sp+=4; + + var shader = array_ids_ogl[id]; + + imandreel_gl.compileShader(shader); +} + +function myglGetUniformLocation(sp) +{ + var program_id = heap32[sp>>2];sp+=4; + var ptr_string = heap32[sp>>2];sp+=4; + + var string = get_string_from_ptr(ptr_string); + var program = array_ids_ogl[program_id]; + var result = imandreel_gl.getUniformLocation(program, string); + + if (result != null) + { + program.array_uniform_locations[program.uniform_locations_current_id] = result; + r_g0 = program.uniform_locations_current_id; + program.uniform_locations_current_id++; + } + else + r_g0 = -1; +} + +function myglIsEnabled(sp) +{ + var cap = heap32[sp>>2];sp+=4; + + r_g0 = imandreel_gl.isEnabled(cap); +} + + +function myglUniform1i(sp) +{ + var index = heap32[sp>>2];sp+=4; + var value = heap32[sp>>2];sp+=4; + + var program = array_ids_ogl[g_current_program_id]; + + var uniform_value = program.array_uniform_locations[index]; + + imandreel_gl.uniform1i(uniform_value, value); +} + +function myglUniform2i(sp) +{ + var index = heap32[sp>>2];sp+=4; + var x = heap32[sp>>2];sp+=4; + var y = heap32[sp>>2];sp+=4; + + var program = array_ids_ogl[g_current_program_id]; + + var uniform_value = program.array_uniform_locations[index]; + + imandreel_gl.uniform2i(uniform_value, x,y); +} + +function myglUniform3i(sp) +{ + var index = heap32[sp>>2];sp+=4; + var x = heap32[sp>>2];sp+=4; + var y = heap32[sp>>2];sp+=4; + var z = heap32[sp>>2];sp+=4; + + var program = array_ids_ogl[g_current_program_id]; + + var uniform_value = program.array_uniform_locations[index]; + + imandreel_gl.uniform3i(uniform_value, x,y,z); +} + +function myglUniform4i(sp) +{ + var index = heap32[sp>>2];sp+=4; + var x = heap32[sp>>2];sp+=4; + var y = heap32[sp>>2];sp+=4; + var z = heap32[sp>>2];sp+=4; + var w = heap32[sp>>2];sp+=4; + + var program = array_ids_ogl[g_current_program_id]; + + var uniform_value = program.array_uniform_locations[index]; + + imandreel_gl.uniform4i(uniform_value, x,y,z,w); +} + +function myglUniform1f(sp) +{ + var index = heap32[sp>>2];sp+=4; + var value = heapFloat[sp>>2];sp+=4; + + var program = array_ids_ogl[g_current_program_id]; + + var uniform_value = program.array_uniform_locations[index]; + + imandreel_gl.uniform1f(uniform_value, value); +} + +function myglUniform3f(sp) +{ + var index = heap32[sp>>2];sp+=4; + var x = heapFloat[sp>>2];sp+=4; + var y = heapFloat[sp>>2];sp+=4; + var z = heapFloat[sp>>2];sp+=4; + + var program = array_ids_ogl[g_current_program_id]; + + var uniform_value = program.array_uniform_locations[index]; + + imandreel_gl.uniform3f(uniform_value, x,y,z); +} + +function myglUniform2f(sp) +{ + var index = heap32[sp>>2];sp+=4; + var x = heapFloat[sp>>2];sp+=4; + var y = heapFloat[sp>>2];sp+=4; + + var program = array_ids_ogl[g_current_program_id]; + + var uniform_value = program.array_uniform_locations[index]; + + imandreel_gl.uniform2f(uniform_value, x,y); +} + + +function myglUniform4f(sp) +{ + var index = heap32[sp>>2];sp+=4; + var x = heapFloat[sp>>2];sp+=4; + var y = heapFloat[sp>>2];sp+=4; + var z = heapFloat[sp>>2];sp+=4; + var w = heapFloat[sp>>2];sp+=4; + + var program = array_ids_ogl[g_current_program_id]; + var uniform_value = program.array_uniform_locations[index]; + + imandreel_gl.uniform4f(uniform_value, x,y,z,w); +} + +function myglUniform1fv(sp) +{ + var index = heap32[sp>>2];sp+=4; + var count = heap32[sp>>2];sp+=4; + var data = heap32[sp>>2];sp+=4; + + var new_data = data>>2; + var new_count = count; + var bufferView = new Float32Array(new_count); + + for ( var i = 0 ; i < new_count ; ++i ) + { + bufferView[i] = heapFloat[new_data+i]; + } + + var program = array_ids_ogl[g_current_program_id]; + var uniform_value = program.array_uniform_locations[index]; + imandreel_gl.uniform1fv(uniform_value, bufferView); + + +} + +function myglUniform1iv(sp) +{ + var index = heap32[sp>>2];sp+=4; + var count = heap32[sp>>2];sp+=4; + var data = heap32[sp>>2];sp+=4; + + var new_data = data>>2; + var new_count = count; + var bufferView = new Int32Array(new_count); + + for ( var i = 0 ; i < new_count ; ++i ) + { + bufferView[i] = heap32[new_data+i]; + } + + var program = array_ids_ogl[g_current_program_id]; + var uniform_value = program.array_uniform_locations[index]; + imandreel_gl.uniform1iv(uniform_value, bufferView); +} + +function myglUniform2iv(sp) +{ + var index = heap32[sp>>2];sp+=4; + var count = heap32[sp>>2];sp+=4; + var data = heap32[sp>>2];sp+=4; + + var new_data = data>>2; + var new_count = count*2; + var bufferView = new Int32Array(new_count); + + for ( var i = 0 ; i < new_count ; ++i ) + { + bufferView[i] = heap32[new_data+i]; + } + + var program = array_ids_ogl[g_current_program_id]; + var uniform_value = program.array_uniform_locations[index]; + imandreel_gl.uniform2iv(uniform_value, bufferView); +} + +function myglUniform3iv(sp) +{ + var index = heap32[sp>>2];sp+=4; + var count = heap32[sp>>2];sp+=4; + var data = heap32[sp>>2];sp+=4; + + var new_data = data>>2; + var new_count = count*3; + var bufferView = new Int32Array(new_count); + + for ( var i = 0 ; i < new_count ; ++i ) + { + bufferView[i] = heap32[new_data+i]; + } + + var program = array_ids_ogl[g_current_program_id]; + var uniform_value = program.array_uniform_locations[index]; + imandreel_gl.uniform3iv(uniform_value, bufferView); +} + +function myglUniform4iv(sp) +{ + var index = heap32[sp>>2];sp+=4; + var count = heap32[sp>>2];sp+=4; + var data = heap32[sp>>2];sp+=4; + + var new_data = data>>2; + var new_count = count*4; + var bufferView = new Int32Array(new_count); + + for ( var i = 0 ; i < new_count ; ++i ) + { + bufferView[i] = heap32[new_data+i]; + } + + var program = array_ids_ogl[g_current_program_id]; + var uniform_value = program.array_uniform_locations[index]; + imandreel_gl.uniform4iv(uniform_value, bufferView); +} + + + +function myglUniform3fv(sp) +{ + myglCreateUniformArrays(); + + var index = heap32[sp>>2];sp+=4; + var count = heap32[sp>>2];sp+=4; + var data = heap32[sp>>2];sp+=4; + + var new_data = data>>2; + var new_count = count*3; + var bufferView = uniformArrays3[count]; + + for ( var i = 0 ; i < new_count ; ++i ) + { + bufferView[i] = heapFloat[new_data+i]; + } + + var program = array_ids_ogl[g_current_program_id]; + var uniform_value = program.array_uniform_locations[index]; + imandreel_gl.uniform3fv(uniform_value, bufferView); +} + +function myglUniform2fv(sp) +{ + myglCreateUniformArrays(); + + var index = heap32[sp >> 2]; sp += 4; + var count = heap32[sp >> 2]; sp += 4; + var data = heap32[sp >> 2]; sp += 4; + + var new_data = data>>2; + var new_count = count*2; + var bufferView = uniformArrays2[count]; + + for ( var i = 0 ; i < new_count ; ++i ) + { + bufferView[i] = heapFloat[new_data+i]; + } + + + var program = array_ids_ogl[g_current_program_id]; + var uniform_value = program.array_uniform_locations[index]; + imandreel_gl.uniform2fv(uniform_value, bufferView); +} + + +function myglUniform4fv(sp) +{ + myglCreateUniformArrays(); + + var index = heap32[sp>>2];sp+=4; + var count = heap32[sp>>2];sp+=4; + var data = heap32[sp>>2];sp+=4; + + + var new_data = data>>2; + var new_count = count*4; + var bufferView = uniformArrays4[count]; + + for ( var i = 0 ; i < new_count ; ++i ) + { + bufferView[i] = heapFloat[new_data+i]; + } + + + var program = array_ids_ogl[g_current_program_id]; + var uniform_value = program.array_uniform_locations[index]; + imandreel_gl.uniform4fv(uniform_value, bufferView); +} + + +function myglUniformMatrix4fv(sp) +{ + myglCreateUniformArrays(); + + var index = heap32[sp>>2];sp+=4; + var count = heap32[sp>>2];sp+=4; + var transpose = heap32[sp>>2];sp+=4; + var ptr = heap32[sp>>2];sp+=4; + + var program = array_ids_ogl[g_current_program_id]; + var uniform_value = program.array_uniform_locations[index]; + + //var buffer_data = new Float32Array(heap, ptr, count*16); + for ( var i = 0 ; i < count*16 ; ++i ) + { + uniformArrays4[count*4][i] = heapFloat[(ptr>>2)+i]; + } + + //imandreel_gl.uniformMatrix4fv(uniform_value, transpose, buffer_data); + //imandreel_gl.uniformMatrix4fv(uniform_value, transpose, heapFloat.subarray(ptr/4,(ptr/4)+(count*16))); + imandreel_gl.uniformMatrix4fv(uniform_value, transpose, uniformArrays4[count*4]); +} + +function myglUniformMatrix3fv(sp) +{ + myglCreateUniformArrays(); + + var index = heap32[sp>>2];sp+=4; + var count = heap32[sp>>2];sp+=4; + var transpose = heap32[sp>>2];sp+=4; + var ptr = heap32[sp>>2];sp+=4; + + var program = array_ids_ogl[g_current_program_id]; + var uniform_value = program.array_uniform_locations[index]; + + //var buffer_data = new Float32Array(heap, ptr, count*9); + for ( var i = 0 ; i < count*9 ; ++i ) + { + uniformArrays3[count*3][i] = heapFloat[(ptr>>2)+i]; + } + + //imandreel_gl.uniformMatrix3fv(uniform_value, transpose, buffer_data); + //imandreel_gl.uniformMatrix3fv(uniform_value, transpose, heapFloat.subarray(ptr/4,(ptr/4)+(count*9))); + imandreel_gl.uniformMatrix3fv(uniform_value, transpose, uniformArrays3[count*3]); +} + + + +function myglValidateProgram(sp) +{ + var program_id = heap32[sp>>2];sp+=4; + + imandreel_gl.validateProgram(array_ids_ogl[program_id]); +} + +function myglGetAttribLocation(sp) +{ + var program_id = heap32[sp>>2];sp+=4; + var ptr_string = heap32[sp>>2];sp+=4; + + var string = get_string_from_ptr(ptr_string); + var result = imandreel_gl.getAttribLocation(array_ids_ogl[program_id], string); + + r_g0 = result; +} + +function myglGetProgramInfoLogLength(sp) +{ + var program_id = heap32[sp>>2];sp+=4; + + var info_log = imandreel_gl.getProgramInfoLog(array_ids_ogl[program_id]); + + if (info_log) + r_g0 = info_log.length+1; + else + r_g0 = 0; +} + + +function myglGetProgramInfoLog(sp) +{ + var program_id = heap32[sp>>2];sp+=4; + var ptr_string = heap32[sp>>2];sp+=4; + + var info_log = imandreel_gl.getProgramInfoLog(array_ids_ogl[program_id]); + + fill_ptr_from_string(ptr_string, info_log); +} + +function myglGetShaderInfoLogLength(sp) +{ + var program_id = heap32[sp>>2];sp+=4; + + var info_log = imandreel_gl.getShaderInfoLog(array_ids_ogl[program_id]); + + if (info_log) + r_g0 = info_log.length+1; + else + r_g0 = 0; +} + +function myglGetShaderInfoLog(sp) +{ + var program_id = heap32[sp>>2];sp+=4; + var ptr_string = heap32[sp>>2];sp+=4; + + var info_log = imandreel_gl.getShaderInfoLog(array_ids_ogl[program_id]); + + fill_ptr_from_string(ptr_string, info_log); +} + +function myglViewport(sp) { + var x = heap32[sp >> 2]; sp += 4; + var y = heap32[sp >> 2]; sp += 4; + var width = heap32[sp >> 2]; sp += 4; + var height = heap32[sp >> 2]; sp += 4; + + imandreel_gl.viewport(x,y,width,height); + +} + +function myglScissor(sp) +{ + var x = heap32[sp >> 2]; sp += 4; + var y = heap32[sp >> 2]; sp += 4; + var width = heap32[sp >> 2]; sp += 4; + var height = heap32[sp >> 2]; sp += 4; + + imandreel_gl.scissor(x,y,width,height); +} + + + +function myglClearColor(sp) +{ + var r = heapFloat[sp>>2];sp+=4; + var g = heapFloat[sp>>2];sp+=4; + var b = heapFloat[sp>>2];sp+=4; + var a = heapFloat[sp>>2];sp+=4; + + imandreel_gl.clearColor(r,g,b,a); + + +} + +function myglClearStencil(sp) +{ + var stencil = heap32[sp>>2];sp+=4; + imandreel_gl.clearStencil(stencil); +} + + +function myglClearDepthf(sp) +{ + var depth = heapFloat[sp>>2];sp+=4; + imandreel_gl.clearDepth(depth); +} + +function myglClear(sp) + { + var mask = heap32[sp>>2];sp+=4; + + + //dump('clear ' + mask + '\n'); + if (mandreel_draw_enable) + imandreel_gl.clear(mask); + } + + function myglGetError(sp) + { +// r_g0 = imandreel_gl.getError(); + r_g0 = 0; + } + + function myglGetProgramParameter(sp) + { + var program_id = heap32[sp>>2];sp+=4; + var pname = heap32[sp>>2];sp+=4; + + r_g0 = imandreel_gl.getProgramParameter(array_ids_ogl[program_id], pname); + } + + function myglGetActiveAttrib (sp) + { + var program_id = heap32[sp>>2];sp+=4; + var index = heap32[sp>>2];sp+=4; + var ptr = heap32[sp>>2];sp+=4; + + var result = imandreel_gl.getActiveAttrib(array_ids_ogl[program_id], index); + + if (result != null) + { + heap32[(ptr)>>2] = result.size; + heap32[(ptr+4)>>2] = result.type; + fill_ptr_from_string(ptr+8, result.name); + r_g0 = 0; + } + else + r_g0 = 1; + } + + function myglGetActiveUniform (sp) + { + var program_id = heap32[sp>>2];sp+=4; + var index = heap32[sp>>2];sp+=4; + var ptr = heap32[sp>>2];sp+=4; + + var result = imandreel_gl.getActiveUniform(array_ids_ogl[program_id], index); + + if (result != null) + { + heap32[(ptr)>>2] = result.size; + heap32[(ptr+4)>>2] = result.type; + fill_ptr_from_string(ptr+8, result.name); + r_g0 = 0; + } + else + r_g0 = 1; + } + + function myglTexParameterf (sp) + { + var target = heap32[sp>>2];sp+=4; + var pname = heap32[sp>>2];sp+=4; + var value = heapFloat[sp>>2];sp+=4; + + imandreel_gl.texParameterf(target,pname,value); +} + +function myglTexParameteri (sp) + { + var target = heap32[sp>>2];sp+=4; + var pname = heap32[sp>>2];sp+=4; + var value = heap32[sp>>2];sp+=4; + + imandreel_gl.texParameteri(target,pname,value); +} + +function myglCullFace (sp) + { + var mode = heap32[sp>>2];sp+=4; + imandreel_gl.cullFace(mode); + } + + function myglDepthMask (sp) + { + var flag = heap32[sp>>2];sp+=4; + imandreel_gl.depthMask(flag); + } + + function myglDepthRangef (sp) + { + var zNear = heapFloat[sp>>2];sp+=4; + var zFar = heapFloat[sp>>2];sp+=4; + imandreel_gl.depthRange(zNear, zFar); + } + +function myglFrontFace (sp) + { + var mode = heap32[sp>>2];sp+=4; + imandreel_gl.frontFace(mode); + } + + function myglBlendFunc (sp) + { + var sfactor = heap32[sp>>2];sp+=4; + var dfactor = heap32[sp>>2];sp+=4; + imandreel_gl.blendFunc(sfactor,dfactor); + } + + function myglBlendColor(sp) + { + var red = heapFloat[sp>>2];sp+=4; + var green = heapFloat[sp>>2];sp+=4; + var blue = heapFloat[sp>>2];sp+=4; + var alpha = heapFloat[sp>>2];sp+=4; + imandreel_gl.blendColor(red,green,blue,alpha); + } + + function myglBlendEquation(sp) + { + var mode = heap32[sp>>2];sp+=4; + imandreel_gl.blendEquation(mode); + } + + function myglBlendEquationSeparate(sp) + { + var modeRGB = heap32[sp>>2];sp+=4; + var modeAlpha = heap32[sp>>2];sp+=4; + imandreel_gl.blendEquationSeparate(modeRGB,modeAlpha); + } + + function myglBlendFuncSeparate(sp) + { + var srcRGB = heap32[sp>>2];sp+=4; + var dstRGB = heap32[sp>>2];sp+=4; + var srcAlpha = heap32[sp>>2];sp+=4; + var dstAlpha = heap32[sp>>2];sp+=4; + + imandreel_gl.blendFuncSeparate(srcRGB,dstRGB,srcAlpha,dstAlpha); + } + + + function myglColorMask (sp) + { + var red = heap32[sp>>2];sp+=4; + var green = heap32[sp>>2];sp+=4; + var blue = heap32[sp>>2];sp+=4; + var alpha = heap32[sp>>2];sp+=4; + imandreel_gl.colorMask(red,green,blue,alpha); + } + + function removeByElement(arrayName,arrayElement) + { + for(var i=0; i>2];sp+=4; + r_g0 = imandreel_gl.getParameter(pname); + } + + + function mygetProgramParameter(sp) + { + var program_id = heap32[sp>>2];sp+=4; + var pname = heap32[sp>>2];sp+=4; + r_g0 = imandreel_gl.getProgramParameter(array_ids_ogl[program_id], pname); + } + + function mygetShaderParameter(sp) + { + var shader_id = heap32[sp>>2];sp+=4; + var pname = heap32[sp>>2];sp+=4; + r_g0 = imandreel_gl.getShaderParameter(array_ids_ogl[shader_id], pname); + } + + function myglVertexAttrib1f(sp) + { + var index = heap32[sp>>2];sp+=4; + var x = heapFloat[sp>>2];sp+=4; + imandreel_gl.vertexAttrib1f(index,x); + } + + function myglVertexAttrib2f(sp) + { + var index = heap32[sp>>2];sp+=4; + var x = heapFloat[sp>>2];sp+=4; + var y = heapFloat[sp>>2];sp+=4; + imandreel_gl.vertexAttrib2f(index,x,y); + } + + function myglVertexAttrib3f(sp) + { + var index = heap32[sp>>2];sp+=4; + var x = heapFloat[sp>>2];sp+=4; + var y = heapFloat[sp>>2];sp+=4; + var z = heapFloat[sp>>2];sp+=4; + imandreel_gl.vertexAttrib3f(index,x,y,z); + } + + function myglVertexAttrib4f(sp) + { + var index = heap32[sp>>2];sp+=4; + var x = heapFloat[sp>>2];sp+=4; + var y = heapFloat[sp>>2];sp+=4; + var z = heapFloat[sp>>2];sp+=4; + var w = heapFloat[sp>>2];sp+=4; + imandreel_gl.vertexAttrib4f(index,x,y,z,w); + } + + function myglVertexAttrib1fv(sp) + { + var index = heap32[sp>>2];sp+=4; + var ptr = heap32[sp>>2];sp+=4; + var x = heap32[ptr>>2];ptr+=4; + imandreel_gl.vertexAttrib1f(index,x); + } + + function myglVertexAttrib2fv(sp) + { + var index = heap32[sp>>2];sp+=4; + var ptr = heap32[sp>>2];sp+=4; + var x = heap32[ptr>>2];ptr+=4; + var y = heap32[ptr>>2];ptr+=4; + + imandreel_gl.vertexAttrib2f(index,x,y); + } + + function myglVertexAttrib3fv(sp) + { + var index = heap32[sp>>2];sp+=4; + var ptr = heap32[sp>>2];sp+=4; + var x = heap32[ptr>>2];ptr+=4; + var y = heap32[ptr>>2];ptr+=4; + var z = heap32[ptr>>2];ptr+=4; + + imandreel_gl.vertexAttrib3f(index,x,y,z); + } + + function myglVertexAttrib4fv(sp) + { + var index = heap32[sp>>2];sp+=4; + var ptr = heap32[sp>>2];sp+=4; + var x = heap32[ptr>>2];ptr+=4; + var y = heap32[ptr>>2];ptr+=4; + var z = heap32[ptr>>2];ptr+=4; + var w = heap32[ptr>>2];ptr+=4; + + imandreel_gl.vertexAttrib4f(index,x,y,z,w); + } + + + function myglDeleteTexture (sp) + { + + var texture_id = heap32[sp>>2];sp+=4; + + var texture = array_ids_ogl[texture_id]; + + imandreel_gl.deleteTexture(texture); + + array_ids_ogl[texture_id] = null; + + myglFreeSlot(texture_id); + } + + function myglDeleteBuffer (sp) + { + + var buffer_id = heap32[sp>>2];sp+=4; + + var buffer = array_ids_ogl[buffer_id]; + + imandreel_gl.deleteBuffer(buffer); + + array_ids_ogl[buffer_id] = null; + + myglFreeSlot(buffer_id); + } + + function myglDeleteFrameBuffer (sp) + { + var framebuffer_id = heap32[sp>>2];sp+=4; + + var framebuffer = array_ids_ogl[framebuffer_id]; + + imandreel_gl.deleteFramebuffer(framebuffer); + + array_ids_ogl[framebuffer_id] = null; + + myglFreeSlot(framebuffer_id); + } + + + function myglDeleteProgram (sp) + { + var program_id = heap32[sp>>2];sp+=4; + + var program = array_ids_ogl[program_id]; + + imandreel_gl.deleteProgram(program); + + array_ids_ogl[program_id] = null; + + myglFreeSlot(program_id); + } + + function myglDeleteRenderBuffer (sp) + { + var renderbuffer_id = heap32[sp>>2];sp+=4; + + var renderbuffer = array_ids_ogl[renderbuffer_id]; + + imandreel_gl.deleteRenderbuffer(renderbuffer); + + array_ids_ogl[renderbuffer_id] = null; + + myglFreeSlot(renderbuffer_id); + } + + function myglDeleteShader (sp) + { + var shader_id = heap32[sp>>2];sp+=4; + + var shader = array_ids_ogl[shader_id]; + + imandreel_gl.deleteShader(shader); + + array_ids_ogl[shader_id] = null; + + myglFreeSlot(shader_id); + } + + function myglInit(sp) + { + + for (var i=0;i>2];sp+=4; + var y = heap32[sp>>2];sp+=4; + var width = heap32[sp>>2];sp+=4; + var height = heap32[sp>>2];sp+=4; + var format = heap32[sp>>2];sp+=4; + var type = heap32[sp>>2];sp+=4; + var pixels = heap32[sp>>2];sp+=4; + + var bufferView = new Uint8Array(heap,pixels,width*height*4); + imandreel_gl.readPixels(x,y,width,height,format,type,bufferView); +} + +function mandreel_internal_DrawSprite(sp) +{ + if ( imandreel_ctx_canvas == null ) + { + console.log("Mandreel_2D_DrawSprite error: canvas context is null"); + return; + } + + var hw_id = heap32[sp>>2]; sp+=4; + var u0 = heapFloat[sp>>2]; sp+=4; + var u1 = heapFloat[sp>>2]; sp+=4; + var v0 = heapFloat[sp>>2]; sp+=4; + var v1 = heapFloat[sp>>2]; sp+=4; + //var x = heapFloat[sp>>2]; sp+=4; + //var y = heapFloat[sp>>2]; sp+=4; + var sx = heapFloat[sp>>2]; sp+=4; + var sy = heapFloat[sp>>2]; sp+=4; + //var rot = heapFloat[sp>>2]; sp+=4; + var m11 = heapFloat[sp>>2]; sp+=4; + var m12 = heapFloat[sp>>2]; sp+=4; + var m21 = heapFloat[sp>>2]; sp+=4; + var m22 = heapFloat[sp>>2]; sp+=4; + var tx = heapFloat[sp>>2]; sp+=4; + var ty = heapFloat[sp>>2]; sp+=4; + var color = heap32[sp>>2]; sp+=4; + + //ctx_canvas.fillStyle="#FF0000"; + //ctx_canvas.fillRect(tx,ty,sx,sy); + var texture = array_ids_ogl[hw_id]; + + if ( texture == null ) + { + console.log("Mandreel_2D_DrawSprite error: texture invalid ("+hw_id+") or loading yet..."); + return; + } + + var width = (u1-u0)*texture.width; + var height = (v1-v0)*texture.height; + + if (width == 0) + return; + if (height == 0) + return; + + var x_offset = u0*texture.width; + var y_offset = v0*texture.height; + + //dump(x_offset + ' ' + y_offset + ' ' + texture.width + ' ' + texture.height + ' ' + x + ' ' +y + ' ' + width + ' ' + height + '\n'); + + x_offset = x_offset % texture.width; + y_offset = y_offset % texture.height; + + var scale_x, scale_y; + if (sx<0) + scale_x = -1; + else + scale_x = 1; + if (sy<0) + scale_y = -1; + else + scale_y = 1; + + var simple_draw = false;//scale_x == 1 && scale_y == 1 && rot == 0; + var x_pos = (0.5*sx + tx/* + 240*/); + var y_pos = (/*320*/ + ((0.5*sy + ty) /*+ 160*/)); + var new_sx = sx; + var new_sy = sy; + + imandreel_ctx_canvas.globalAlpha = (color>>>24)/255; + + if (!simple_draw) + { + imandreel_ctx_canvas.save() + /*ctx_canvas.translate(x_pos + new_sx/2, y_pos + new_sy/2) + ctx_canvas.rotate(-rot*Math.PI/180); + ctx_canvas.scale(scale_x, scale_y); + ctx_canvas.translate(-(x_pos + new_sx/2), -(y_pos + new_sy/2))*/ + imandreel_ctx_canvas.setTransform(m11,m12,m21,m22,tx,ty); + } + + /*if (x_offset<0 || y_offset<0 || (x_offset+width)>texture.width || (y_offset+height)>texture.height) + { + dump(x_offset + ' ' + y_offset + ' ' + texture.width + ' ' + texture.height + ' ' + x + ' ' +y + ' ' + width + ' ' + height + '\n'); + }*/ + + if (new_sx<0) + { + x_pos += new_sx; + new_sx = -new_sx; + } + if (new_sy<0) + { + y_pos += new_sy; + new_sy = -new_sy; + } + + //ctx_canvas.drawImage(texture,x_offset,y_offset, width, height, x_pos, y_pos , new_sx, new_sy); + imandreel_ctx_canvas.drawImage(texture,x_offset,y_offset, width, height, 0,0, 1,1); + + if (!simple_draw) + imandreel_ctx_canvas.restore() +} + +function mandreel_internal_UpdateTexture(sp) +{ + if ( imandreel_ctx_canvas == null ) + { + console.log("Mandreel_2D_UpdateTexture error: canvas context is null"); + return; + } + + var hw_id = heap32[sp>>2]; sp+=4; + var dataptr = heap32[sp>>2]; sp+=4; + var width = heap32[sp>>2]; sp+=4; + var height = heap32[sp>>2]; sp+=4; + + var imageData = imandreel_ctx_canvas.getImageData(0,0,width,height); + var data = imageData.data; + for (var y = 0; y < (height*width*4); ++y) + { + data[y] = heapU8[dataptr + y]; + } + imandreel_ctx_canvas.putImageData(imageData,0,0); + + var dataurl = imandreel_ctx_canvas.canvas.toDataURL(); + + var image = new Image(); + image.onerror = function() + { + dump('error updating texture '+hw_id+'\n'); + } + image.onload = function() + { + //dump('texture '+hw_id+' updated\n'+'width '+image.width+' height '+image.height); + array_ids_ogl[hw_id] = image; + } + image.src = dataurl; +} + +function mandreel_internal_WriteFramebuffer(sp) +{ + if ( imandreel_ctx_canvas == null ) + { + console.log("Mandreel_2D_UpdateTexture error: canvas context is null"); + return; + } + + var dataptr = heap32[sp>>2]; sp+=4; + var width = heap32[sp>>2]; sp+=4; + var height = heap32[sp>>2]; sp+=4; + + var imageData = imandreel_ctx_canvas.getImageData(0,0,width,height); + if ( imageData != null ) + { + var data = imageData.data; + if ( data != null ) + { + var size = (height*width*4); + if ( typeof imageData.data.set != "undefined" ) + { + var sub = heapU8.subarray(dataptr,dataptr+size); + imageData.data.set(sub); + } + else + { + for (var y = 0; y < size; ++y) + { + data[y] = heapU8[dataptr + y]; + } + } + + imandreel_ctx_canvas.putImageData(imageData,0,0); + } + else + { + dump("WriteFramebuffer canvas data null"); + } + } + else + { + dump("WriteFramebuffer canvas imageData null"); + } +} +var mandreel_audio_init = null_mandreel_audio; +var mandreel_audio_end = null_mandreel_audio; +var mandreel_audio_update = null_mandreel_audio; +var mandreel_audio_createBuffer = null_mandreel_audio; +var mandreel_audio_playChannel = null_mandreel_audio; +var mandreel_audio_stopChannel = null_mandreel_audio; +var mandreel_audio_setChannelVolume = null_mandreel_audio; +var mandreel_audio_setChannelPan = null_mandreel_audio; +var mandreel_audio_setChannelPitch = null_mandreel_audio; +var mandreel_audio_playMusic = null_mandreel_audio; +var mandreel_audio_stopMusic = null_mandreel_audio; +var mandreel_audio_useMusicFunctions = _mandreel_audio_useMusicFunctions; +var mandreel_audio_checkBuffersPending = null_mandreel_audio; +var mandreel_audio_setMusicVol = null_mandreel_audio; + +var mandreel_audio_startedFunction = 0; + +var MandreelAudioDriver = "null"; + +function mandreel_start_audio(audioServer, audioUrl,startedFunction) +{ + mandreel_audio_startedFunction = startedFunction; + + // Check audio driver data availability + var webAudioDataAvailable = false; + var flashAudioDataAvailable = false; + var flashLiteAudioDataAvailable = false; + var audiotagsDataAvailable = false; + var FatLines = mandreelFatData.split('\n'); + for ( var i=0;i>2];sp+=4; + fill_ptr_from_string(name_ptr, MandreelAudioDriver); +} +var webAudioUseMusicFunctions = true; + +function wa_mandreel_audio_init(sp) +{ +} + +function wa_mandreel_audio_end(sp) +{ +} + +function wa_mandreel_audio_update(sp) +{ +} + +function wa_mandreel_audio_checkBuffersPending(sp) +{ + r_g0 = wa_imp_mandreel_audio_checkBuffersPending(); +} + +function wa_mandreel_audio_createBuffer(sp) +{ + var ptr_fileName = heap32[sp>>2];sp+=4; + var maxChannels = heap32[sp>>2];sp+=4; + var fileName = get_string_from_ptr(ptr_fileName).toLowerCase(); + wa_imp_mandreel_audio_createBuffer(fileName); + + r_g0 = 0; +} + +function wa_mandreel_audio_playChannel(sp) +{ + var ptr_fileName = heap32[sp>>2];sp+=4; + var channel = heap32[sp>>2];sp+=4; + var vol = heapFloat[sp>>2];sp+=4; + var loop = heap32[sp>>2];sp+=4; + var pitch = heapFloat[sp>>2];sp+=4; + var fileName = get_string_from_ptr(ptr_fileName).toLowerCase(); + wa_imp_mandreel_audio_playChannel(fileName,channel,vol,loop,pitch); + r_g0 = 0; +} + +function wa_mandreel_audio_stopChannel(sp) +{ + var ptr_fileName = heap32[sp>>2];sp+=4; + var channel = heap32[sp>>2];sp+=4; + var index = heapFloat[sp>>2];sp+=4; + wa_imp_mandreel_audio_stopChannel(channel); +} + +function wa_mandreel_audio_setChannelVolume(sp) +{ + var channel = heap32[sp>>2];sp+=4; + var vol = heapFloat[sp>>2];sp+=4; + wa_imp_mandreel_audio_setChannelVolume(channel,vol); +} + +function wa_mandreel_audio_setChannelPan(sp) +{ + var channel = heap32[sp>>2];sp+=4; + var pan = heapFloat[sp>>2];sp+=4; + wa_imp_mandreel_audio_setChannelPan(channel,pan); +} + +function wa_mandreel_audio_setChannelPitch(sp) +{ + var channel = heap32[sp>>2];sp+=4; + var pitch = heapFloat[sp>>2];sp+=4; + wa_imp_mandreel_audio_setChannelPitch(channel,pitch); +} + +function wa_mandreel_audio_useMusicFunctions(sp) +{ + r_g0 = webAudioUseMusicFunctions ? 1 : 0; +} + +function wa_mandreel_audio_playMusic(sp) +{ + var ptr_fileName = heap32[sp>>2];sp+=4; + var fileName = get_string_from_ptr(ptr_fileName).toLowerCase(); + wa_imp_mandreel_audio_playMusic(fileName); +} + +function wa_mandreel_audio_stopMusic(sp) +{ + wa_imp_mandreel_audio_stopMusic(); +} + +function wa_mandreel_audio_setMusicVol(sp) +{ + var vol = heapFloat[sp>>2];sp+=4; + wa_imp_mandreel_audio_setMusicVol(vol); +} + +function wa_MainAudioDriver() +{ + mandreel_audio_init = wa_mandreel_audio_init; + mandreel_audio_end = wa_mandreel_audio_end; + mandreel_audio_update = wa_mandreel_audio_update; + mandreel_audio_createBuffer = wa_mandreel_audio_createBuffer; + mandreel_audio_playChannel = wa_mandreel_audio_playChannel; + mandreel_audio_stopChannel = wa_mandreel_audio_stopChannel; + mandreel_audio_setChannelVolume = wa_mandreel_audio_setChannelVolume; + mandreel_audio_setChannelPan = wa_mandreel_audio_setChannelPan; + mandreel_audio_setChannelPitch = wa_mandreel_audio_setChannelPitch; + mandreel_audio_useMusicFunctions = wa_mandreel_audio_useMusicFunctions; + mandreel_audio_playMusic = wa_mandreel_audio_playMusic; + mandreel_audio_stopMusic = wa_mandreel_audio_stopMusic; + mandreel_audio_checkBuffersPending = wa_mandreel_audio_checkBuffersPending; + mandreel_audio_setMusicVol = wa_mandreel_audio_setMusicVol; + + setTimeout("mandreel_webAudio_PreloadAssets()", 10); +} + + +var webAudioBuffers = new Array(); +var webAudioChannels = new Array(32); +var webAudioGain = new Array(32); +var webAudioContext = 0; + + +function wa_initWebAudio() +{ + if ( preCreatedWebAudioContext != null ) + { + webAudioContext = preCreatedWebAudioContext; + } + else + { + try { webAudioContext = new webkitAudioContext(); } catch(err) { webAudioContext = 0; } + } +} + +function wa_imp_callfunction(params) +{ + if ( params[0] == "#MandreelAudio" ) + { + if ( params[1] == "playChannel" ) + wa_imp_mandreel_audio_playChannel(params[2],params[3],params[4],params[5],params[6],params[7]); + else if ( params[1] == "stopChannel" ) + wa_imp_mandreel_audio_stopChannel(params[2]); + else if ( params[1] == "setChannelVol" ) + wa_imp_mandreel_audio_setChannelVol(params[2],params[3]); + else if ( params[1] == "setChannelPan" ) + wa_imp_mandreel_audio_setChannelPan(params[2],params[3]); + else if ( params[1] == "playMusic" ) + wa_imp_mandreel_audio_playMusic(params[2]); + else if ( params[1] == "stopMusic" ) + wa_imp_mandreel_audio_stopMusic(params[2]); + else if ( params[1] == "setMusicVol" ) + wa_imp_mandreel_audio_setMusicVol(params[2]); + + return true; + } + return false; +} + +function wa_getFileNameNoExt(fileName) +{ + var fileNameNoExt = fileName.toLowerCase(); + var indexDot = fileNameNoExt.lastIndexOf('.'); + if ( indexDot != -1 ) + fileNameNoExt = fileNameNoExt.substr(0,indexDot); + fileNameNoExt = fileNameNoExt.replace(/\\/g,"/"); + if ( fileNameNoExt.length > 0 ) + { + if ( fileNameNoExt.charAt(0) == "/" ) + { + if (fileNameNoExt.length > 1 ) + fileNameNoExt = fileNameNoExt.substr(1,fileNameNoExt.length-1); + else + fileNameNoExt = ""; + } + } + return fileNameNoExt; +} + +var wa_mandreel_cache_audio_files = false; +var wa_mandreel_cache_audio_files_path = ''; + +function mandreel_webAudio_reloadfile(fileName,callback) +{ + var fileNameNoExt = wa_getFileNameNoExt(fileName); + var url = wa_mandreel_cache_audio_files_path+fileNameNoExt+".ogg"; + dump("webAudio: loading buffer ("+fileName+") url("+url+")"); + var request = new XMLHttpRequest(); + request.open("GET", url, true); + request.responseType = "arraybuffer"; + request.onreadystatechange = function() + { + if (request.readyState == 4) + { + + if (request.status == 404) callback(null); + + callback(request.response); + + } + } + request.send(); +} + +Mandreel_window.BlobBuilder = Mandreel_window.MozBlobBuilder || Mandreel_window.WebKitBlobBuilder || Mandreel_window.BlobBuilder; + +function mandreel_webaudio_saveFile(name, my_arrayBuffer) +{ + dump('mandreel_webaudio_saveFile ' + name); + g_mandreel_fs.root.getFile(name, {create: true}, function(fileEntry) { + + // Create a FileWriter object for our FileEntry (log.txt). + fileEntry.createWriter(function(fileWriter) { + + fileWriter.onwriteend = function(e) { + dump('Write completed.'); + }; + + fileWriter.onerror = function(e) { + dump('Write failed: ' + e.toString()); + }; + + var bb = new Mandreel_window.BlobBuilder(); // Note: window.WebKitBlobBuilder in Chrome 12. + bb.append(my_arrayBuffer); + fileWriter.write(bb.getBlob('text/plain')); + + + + }, function(e) { dump('error 1 mandreel_webaudio_saveFile ' + name);MandreelFsErrorHandler(e) }); + + }, function(e) { dump('error 2 mandreel_webaudio_saveFile ' + name);MandreelFsErrorHandler(e) }); +} + +function mandreel_webaudio_loadFile(name, callback, callback2) +{ + g_mandreel_fs.root.getFile(name, {}, function(fileEntry) { + + fileEntry.file(function(file) { + + var reader = new FileReader(); + + + reader.onloadend = function(e) { + + dump('mandreel_fs_loadFile ' + name); + if (this.result.byteLength) + callback(this.result); + else + callback2(this.result); + + }; + + + reader.readAsArrayBuffer(file); + + + + }, function(e) { dump('error 1 webaudio_loadFile ' + name);MandreelFsErrorHandler(e) } ); + + }, function(e) { dump('error 2 webaudio_loadFile ' + name);MandreelFsErrorHandler(e) } ); +} + + +function mandreel_webAudio_cacheFile(fileName, callback) +{ + if (!g_mandreel_fs) + { + mandreel_webAudio_reloadfile(fileName, callback); + + return; + } + fileName = fileName.toLowerCase(); + + fileName = fileName.replace(/\\/g,"/"); + + if (fileName[0] == '/') + fileName = fileName.substring(1); + + dump('chanka name ' + fileName); + + g_mandreel_fs.root.getFile(fileName, {}, function(fileEntry) { + + fileEntry.getMetadata(function(metaData){ + var my_seconds = metaData.modificationTime.getTime()/1000; + + if (g_mandreel_timestamp_fs>my_seconds) + { + dump('mandreel_webAudio_cacheFile1 '); + fileEntry.remove(function() { + mandreel_webAudio_reloadfile(fileName, function(response) { callback(response); if (response) mandreel_webaudio_saveFile(fileName, response); } ); + }, function(e) { dump('error 1 mandreel_webAudio_cacheFile ' + fileName);MandreelFsErrorHandler(e); mandreel_webAudio_reloadfile(fileName, function(response) { callback(response); if (response) mandreel_webaudio_saveFile(fileName, response); } );}); + + } + else + { + //alert('mandreel_fscachefile2'); + dump('mandreel_webAudio_cacheFile2'); + mandreel_webaudio_loadFile(fileName, function(response) { callback(response); } , + function() { + mandreel_webAudio_reloadfile(fileName, function(response) { callback(response); if (response) mandreel_webaudio_saveFile(fileName, response); } ); + } + ); + + + + } + + + }, function(e) { dump('error 2 mandreel_webAudio_cacheFile ' + fileName);MandreelFsErrorHandler(e) }); + + + }, function(error) {dump('mandreel_webAudio_cacheFile3'); mandreel_webAudio_reloadfile(fileName, function(response) { callback(response); if (response) mandreel_webaudio_saveFile(fileName, response); });}); +} + +function mandreel_webAudio_queueLoadBuffer(fileName, callback) +{ + //dump("mandreel_webAudio_queueLoadBuffer "+fileName); + if ( webAudioContext ) + { + var fileNameNoExt = wa_getFileNameNoExt(fileName); + var buffer = webAudioBuffers[fileNameNoExt]; + if ( buffer == null && buffer != "invalid" ) + { + if ( fileNameNoExt != "" ) + { + if (wa_mandreel_cache_audio_files == true) + { + webAudioBuffers[fileNameNoExt] = "invalid"; + + mandreel_webAudio_cacheFile(fileName, function(response) { + + if (callback != null) + callback(); + + if ( response != null ) + webAudioBuffers[fileNameNoExt] = webAudioContext.createBuffer(response, false); + else + webAudioBuffers[fileNameNoExt] = "invalid"; + } ); + return; + } + + var url = g_mandreel_working_folder+fileNameNoExt+".ogg"; + dump("webAudio: loading buffer ("+fileName+") url("+url+")"); + webAudioBuffers[fileNameNoExt] = "invalid"; + var request = new XMLHttpRequest(); + request.open("GET", url, true); + request.responseType = "arraybuffer"; + request.onreadystatechange = function() + { + if (request.readyState == 4) + { + if (callback != null) + callback(); + + if (request.status == 404) return; + //dump("webAudio: loaded buffer "+request.status); + if ( request.response != null ) + webAudioBuffers[fileNameNoExt] = webAudioContext.createBuffer(request.response, false); + else + webAudioBuffers[fileNameNoExt] = "invalid"; + } + } + request.send(); + } + else + webAudioBuffers[fileNameNoExt] = "invalid"; + } + } +} + +var webAudioPreloadAudioFiles = new Array(); +var webAudioPreloadBytes = null; +var webAudioPreloadCurrentFile = 0; +var webAudioPreloadAsync = false; + +function webAudioParsePreloadFile(response) +{ + var pos = 4; + var bytes = new Uint8Array(response); + var i = 0; + if ( webAudioPreloadAsync ) + webAudioPreloadBytes = bytes; + while ( pos < bytes.byteLength ) + { + // filename + var fileName = ""; + while ( bytes[pos] != 0 ) + { + fileName += String.fromCharCode(bytes[pos]); + pos++; + } + pos++; + // filesize + var filesize = bytes[pos] | (bytes[pos+1]<<8) | (bytes[pos+2]<<16) | (bytes[pos+3]<<24); + pos += 4; + + // contents + var fileNameNoExt = wa_getFileNameNoExt(fileName); + if ( webAudioPreloadAsync ) + { + var audioFile = + { + fileName : fileNameNoExt, + fileSize : filesize, + position : pos + }; + webAudioPreloadAudioFiles[i] = audioFile; + } + else + { + var bufferdata = new Uint8Array(filesize); + bufferdata.set(bytes.subarray(pos,pos+filesize)); + webAudioBuffers[fileNameNoExt] = webAudioContext.createBuffer(bufferdata.buffer, false); + dump("preload audio file ("+fileName+")"); + } + + pos += filesize; + i++; + } + if ( webAudioPreloadAsync ) + { + dump("started preloading audio files async"); + setTimeout("mandreel_webAudio_preloadNextAudioFile()",10); + } +} + +function mandreel_webAudio_preloadNextAudioFile() +{ + if ( webAudioPreloadAudioFiles.length > webAudioPreloadCurrentFile ) + { + var audioFile = webAudioPreloadAudioFiles[webAudioPreloadCurrentFile]; + if ( audioFile.fileName == null ) + { + webAudioPreloadCurrentFile++; + setTimeout("mandreel_webAudio_preloadNextAudioFile()",10); + } + else + { + var bufferdata = new Uint8Array(audioFile.fileSize); + bufferdata.set(webAudioPreloadBytes.subarray(audioFile.position,audioFile.position+audioFile.fileSize)); + dump("async preload audio file ("+audioFile.fileName+")"); + webAudioContext.decodeAudioData(bufferdata.buffer,mandreel_webAudio_preloadNextAudioFileOK,mandreel_webAudio_preloadNextAudioFileError); + } + } + else + { + webAudioPreloadAudioFiles = null; + webAudioPreloadBytes = null; + dump("finished preloading audio files async"); + } +} + +function mandreel_webAudio_preloadNextAudioFileOK(audioBuffer) +{ + var audioFile = webAudioPreloadAudioFiles[webAudioPreloadCurrentFile]; + webAudioPreloadCurrentFile++; + if ( audioFile.fileName != null ) + { + webAudioBuffers[audioFile.fileName] = audioBuffer; + setTimeout("mandreel_webAudio_preloadNextAudioFile()",10); + } +} + +function mandreel_webAudio_preloadNextAudioFileError() +{ + var audioFile = webAudioPreloadAudioFiles[webAudioPreloadCurrentFile]; + webAudioPreloadCurrentFile++; + if ( audioFile.fileName != null ) + dump("FAILED async preload audio file ("+audioFile.fileName+")"); + setTimeout("mandreel_webAudio_preloadNextAudioFile()",10); +} + +function mandreel_webAudio_queueLoadPackedBuffers(fileName, callback) +{ + if ( webAudioContext ) + { + // TODO + /*if (wa_mandreel_cache_audio_files == true) + { + webAudioBuffers[fileNameNoExt] = "invalid"; + + mandreel_webAudio_cacheFile(fileName, function(response) { + + if (callback != null) + callback(); + + if ( response != null ) + webAudioBuffers[fileNameNoExt] = webAudioContext.createBuffer(response, true); + else + webAudioBuffers[fileNameNoExt] = "invalid"; + } ); + return; + }*/ + + mandreel_fs_load_binary(fileName, function mandreel_webAudio_queueLoadPackedBuffers_cb(data){ + + if (data) + { + if (callback != null) + callback(); + webAudioParsePreloadFile(data); + } + else + { + var url = g_mandreel_working_folder+fileName; + dump("webAudio: loading preload buffers ("+fileName+") url("+url+")"); + var request = new XMLHttpRequest(); + request.open("GET", url, true); + request.responseType = "arraybuffer"; + var last_loaded_size = 0; + request.onreadystatechange = function() + { + if (request.readyState == 4) + { + if (callback != null) + callback(); + + if (request.status == 404) + return; + if ( request.response != null ) + { + mandreel_fs_saveFile(fileName, request.response); + webAudioParsePreloadFile(request.response); + } + } + } + request.onprogress = function(e) + { + var delta_size = e.loaded - last_loaded_size; + last_loaded_size = e.loaded; + + imandreel_update_load(delta_size,0); + + var percentage = ((100*e.loaded)/mandreel_total_pogfile_size)|0; + + if (percentage>100) + percentage = 100; + + if ( mandreelAppStartStateFunc ) + mandreelAppStartStateFunc("loadingAudioUpdate",percentage); + } + request.send(); + } + }); + } +} + + + +var wa_mandreel_audio_buffers_num = 0; +var wa_mandreel_audio_buffers_loaded = 0; + +function wa_imp_mandreel_audio_checkBuffersPending() +{ + return wa_mandreel_audio_buffers_num - wa_mandreel_audio_buffers_loaded; +} + +function wa_imp_mandreel_audio_createBuffer(fileName) +{ + if ( webAudioContext ) + { + var fileNameNoExt = wa_getFileNameNoExt(fileName); + var buffer = webAudioBuffers[fileNameNoExt]; + if ( buffer == null && buffer != "invalid" ) + { + wa_mandreel_audio_buffers_num++; + mandreel_webAudio_queueLoadBuffer(fileName, function () {wa_mandreel_audio_buffers_loaded++;}); + } + } +} + +function wa_imp_mandreel_audio_playChannel(fileName,channel,vol,loop,pitch) +{ + if ( webAudioContext ) + { + var fileNameNoExt = wa_getFileNameNoExt(fileName); + var buffer = webAudioBuffers[fileNameNoExt]; + if ( buffer == null || buffer == "invalid" ) + { + if ( webAudioPreloadAudioFiles != null ) + { + var i = 0; + while ( i < webAudioPreloadAudioFiles.length ) + { + var audioFile = webAudioPreloadAudioFiles[i]; + if ( audioFile.fileName == fileNameNoExt ) + { + var bufferdata = new Uint8Array(audioFile.fileSize); + bufferdata.set(webAudioPreloadBytes.subarray(audioFile.position,audioFile.position+audioFile.fileSize)); + webAudioBuffers[audioFile.fileName] = webAudioContext.createBuffer(bufferdata.buffer, false); + dump("**** preload audio file ("+audioFile.fileName+"), forced by playChannel"); + audioFile.fileName = null; + i = webAudioPreloadAudioFiles.length; + } + else + { + ++i; + } + } + } + } + if ( buffer == null || buffer == "invalid" ) + { + mandreel_webAudio_queueLoadBuffer(fileName); + buffer = webAudioBuffers[fileNameNoExt]; + } + if ( buffer != null && buffer != "invalid" ) + { + var chn = webAudioContext.createBufferSource(); + var gain = webAudioContext.createGainNode(); + if ( chn && gain ) + { + webAudioChannels[channel] = chn; + webAudioGain[channel] = gain; + chn.buffer = buffer; + chn.connect(gain); + gain.connect(webAudioContext.destination); + var bLoop = loop != 0; + chn.loop = bLoop; + gain.gain.value = vol; + chn.playbackRate.value = pitch; + chn.noteOn(0); + //dump("webAudio: PlayChannel "+channel+" "+fileName+" "+vol+" "+bLoop+" "+pitch); + } + } + } +} + +function wa_imp_mandreel_audio_stopChannel(channel) +{ + if ( webAudioContext ) + { + var chn = webAudioChannels[channel]; + if ( chn != null ) + { + //dump("webAudio: StopChannel "+channel); + chn.noteOff(0); + webAudioChannels[channel] = null; + webAudioGain[channel] = null; + } + } +} + +function wa_imp_mandreel_audio_setChannelVolume(channel,vol) +{ + if ( webAudioContext ) + { + var gain = webAudioGain[channel]; + if ( gain != null ) + gain.gain.value = vol; + } +} + +function wa_imp_mandreel_audio_setChannelPan(channel,pan) +{ + if ( webAudioContext ) + { + } +} + +function wa_imp_mandreel_audio_setChannelPitch(channel,pitch) +{ + if ( webAudioContext ) + { + var chn = webAudioChannels[channel]; + if ( chn != null ) + { + chn.playbackRate.value = pitch; + } + } +} + +var mwebAudioPreloadState = "start"; +//var mwebAudioPreloadRequest = 0; +var mwebAudioPreloadAssets = 0; +var mwebAudioCurrentPreloadAsset = 0; +var mwebAudioAsyncFiles = ''; +var mwebListAudioAsyncFiles =''; +var mwebListAudioAsyncFilesPos = 0; +var mwebTotalPreloadingFiles = 0; +var mwebCurrentPreloadingFiles = 0; +function mwebCallbackAsync() +{ + mwebListAudioAsyncFilesPos++; + if ( mwebListAudioAsyncFilesPos >= mwebListAudioAsyncFiles.length ) + { + mwebListAudioAsyncFiles = null; + mwebAudioAsyncFiles = null; + return; + } + + setTimeout("mandreel_webAudio_queueLoadBuffer(mwebListAudioAsyncFiles[mwebListAudioAsyncFilesPos], mwebCallbackAsync);",10); +} + +function mwebCallbackAsyncPreload() +{ + mwebCurrentPreloadingFiles++; +} + +function mandreel_webAudio_PreloadAssets() +{ + /*if ( mwebAudioPreloadState == "start" ) + { + //dump("webaudio start"); + mwebAudioPreloadRequest = new XMLHttpRequest(); + var url = g_mandreel_working_folder+"mandreel.fat.dat"; + mwebAudioPreloadRequest.open("GET", url, true); + mwebAudioPreloadRequest.onreadystatechange = function() + { + if (mwebAudioPreloadRequest.readyState != 4) return; + if ( mwebAudioPreloadRequest.status != 404 && mwebAudioPreloadRequest.response != null ) + mwebAudioPreloadState = "parseFat"; + else + { + mwebAudioPreloadState = "done"; + dump("error pre-loading audio assets, status("+mwebAudioPreloadRequest.status+")"); + } + } + mwebAudioPreloadState = "loadingFat"; + mwebAudioPreloadRequest.send(); + } + else if ( mwebAudioPreloadState == "parseFat" )*/ + if ( mwebAudioPreloadState == "start" ) + { + //mwebAudioPreloadAssets = mwebAudioPreloadRequest.response.split('\n'); + //mwebAudioPreloadRequest = 0; + mwebAudioPreloadAssets = mandreelFatData.split('\n'); + mwebAudioCurrentPreloadAsset = 0; + mwebAudioPreloadState = "preloading"; + } + else if ( mwebAudioPreloadState == "preloading" ) + { + //dump("webaudio preloading"); + var queued = false; + while ( !queued && mwebAudioPreloadState != "done" ) + { + if ( mwebAudioCurrentPreloadAsset < mwebAudioPreloadAssets.length ) + { + var params = mwebAudioPreloadAssets[mwebAudioCurrentPreloadAsset].split(','); + if ( params[0] == "audiofile" && params[1]) + { + var sync_load = true; + if (params[2] && (params[2]&1) == 0) + sync_load = false; + + if (sync_load) + { + mandreel_webAudio_queueLoadBuffer(params[1],mwebCallbackAsyncPreload); + mwebTotalPreloadingFiles++; + queued = true; + } + + } + else if ( params[0] == "audiopreloadfile" ) + { + mandreel_webAudio_queueLoadPackedBuffers(params[1],mwebCallbackAsyncPreload); + var size_pog_file = parseInt(params[2], 10); + mandreel_total_pogfile_size = size_pog_file; + mwebTotalPreloadingFiles++; + queued = true; + } + else if ( params[0] == "audiopreloadasync" ) + { + webAudioPreloadAsync = true; + } + mwebAudioCurrentPreloadAsset++; + } + else + queued = true; + + if ( mwebAudioCurrentPreloadAsset >= mwebAudioPreloadAssets.length ) + { + if (mwebCurrentPreloadingFiles == mwebTotalPreloadingFiles) + { + mwebAudioPreloadState = "done"; + mwebAudioPreloadAssets = 0; + } + } + } + } + + if ( mwebAudioPreloadState == "done" ) + { + if ( mandreelAppPlatform == "nacl" ) + setTimeout("MandreelAudioStartedNacl()", 10); + else + setTimeout("MandreelAudioStarted()", 10); + } + else + setTimeout("mandreel_webAudio_PreloadAssets()", 10); +} + +var wa_mandreelMusicElement = null; +var wa_mandreelMusicElementFilename = ""; +var wa_mandreelMusicElementVolume = 1.0; +function wa_imp_mandreel_audio_playMusic(fileName) +{ + var fileNameNoExt = wa_getFileNameNoExt(fileName); + var fileNameFull = g_mandreel_working_folder + fileNameNoExt + ".ogg"; + + if ( wa_mandreelMusicElementFilename != fileNameFull ) + { + wa_imp_mandreel_audio_stopMusic(0); + var audio = document.createElement("audio"); + var type = fileNameFull.slice(fileNameFull.lastIndexOf(".")+1); + switch(type){ + case "mp3" : type = "mpeg"; break; + case "ogg" : type = "ogg"; break; + case "wav" : type = "wav"; break; + default : throw("'" + fileNameFull + "' is not a recognized audio file"); + } + + // set correct id for lookup, loading method and data types + audio.setAttribute("type", "audio/" + type); + var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1; + if ( is_chrome ) + audio.setAttribute("loop", "loop"); + else + audio.addEventListener('ended', function(){this.currentTime = 0;}, false); + audio.volume = wa_mandreelMusicElementVolume; + audio.setAttribute("autoplay", "true"); + audio.setAttribute("src", fileNameFull); + + + // include into list and document + document.body.appendChild(audio); + wa_mandreelMusicElement = audio; + wa_mandreelMusicElementFilename = fileNameFull; + } +} + +function wa_imp_mandreel_audio_stopMusic() +{ + if ( wa_mandreelMusicElement != null ) + { + document.body.removeChild(wa_mandreelMusicElement); + wa_mandreelMusicElement = null; + wa_mandreelMusicElementFilename = ""; + } +} + +function wa_imp_mandreel_audio_setMusicVol(vol) +{ + wa_mandreelMusicElementVolume = vol; + if ( wa_mandreelMusicElement != null ) + { + wa_mandreelMusicElement.volume = wa_mandreelMusicElementVolume; + } +} + +var mandreel_audio_stream_func_ptr = 0; +function mandreel_audio_stream_process(e) +{ + var l = e.outputBuffer.getChannelData(0); + var l2 = e.outputBuffer.getChannelData(1); + var n = e.outputBuffer.length; + + var offset2 = 0; + var inc = 44.1 / 48.0; + while ( n > 0 ) + { + var n2 = ((n*inc)|0)/4; + if ( n2 > 1024 ) + n2 = 1024; + + var sp = g_stack_pointer+100*1024; + var ptr = g_stack_pointer+200*1024; + var _sp = sp>>2; + heap32[_sp]=ptr; + heap32[_sp+1]=n2*4; + __FUNCTION_TABLE__[(mandreel_audio_stream_func_ptr)>>2](sp); + + var offset = ptr>>2; + var size = n2*4; + /*for (var i=0;i 0 ) + { + var n2 = n; + if ( n2 > 1024 ) + n2 = 1024; + var sp = g_stack_pointer+100*1024; + var ptr = g_stack_pointer+200*1024; + var _sp = sp>>2; + heap32[_sp]=ptr; + heap32[_sp+1]=n2; + __FUNCTION_TABLE__[(mandreel_audio_stream_func_ptr)>>2](sp); + + var offset = ptr>>2; + var size = n2*2; + var buf = heapFloat.subarray(offset,offset+size); + soundData.set(buf,offset2); + /*for (var i=0; i>2]; + var source = webAudioContext.createJavaScriptNode(1024*4, 0, 2); + source.connect(webAudioContext.destination); + source.onaudioprocess = mandreel_audio_stream_process; + } + else + { + mandreel_audio_stream_func_ptr = heap32[sp>>2]; + AudioDataDestination(44100,mandreel_Audio_requestSoundData); + } + __Mandreel_Audio_CreateStream_created = true; + } +} +function mandreel_webAudio_dummyStream() +{ + var sp = g_stack_pointer+100*1024; + var ptr = g_stack_pointer+200*1024; + var _sp = sp>>2; + heap32[_sp]=ptr; + heap32[_sp+1]=4096; + __FUNCTION_TABLE__[(mandreel_audio_stream_func_ptr)>>2](sp); + setTimeout("mandreel_webAudio_dummyStream()",10); +} + +function AudioDataDestination(sampleRate, readFn) +{ + // Initialize the audio output. + var audio = new Audio(); + if ( audio.mozSetup == null ) + { + setTimeout("mandreel_webAudio_dummyStream()",10); + return; + } + audio.mozSetup(2, sampleRate); + + var currentWritePosition = 0; + var prebufferSize = sampleRate / 2; // buffer 500ms + var tail = null, tailPosition; + + // The function called with regular interval to populate + // the audio output buffer. + setInterval(function() { + var written; + // Check if some data was not written in previous attempts. + if(tail) { + written = audio.mozWriteAudio(tail.subarray(tailPosition)); + currentWritePosition += written; + tailPosition += written; + if(tailPosition < tail.length) { + // Not all the data was written, saving the tail... + return; // ... and exit the function. + } + tail = null; + } + + // Check if we need add some data to the audio output. + var currentPosition = audio.mozCurrentSampleOffset(); + var available = currentPosition + prebufferSize - currentWritePosition; + if(available > 0) { + // Request some sound data from the callback function. + var soundData = new Float32Array(available); + readFn(soundData); + + // Writting the data. + written = audio.mozWriteAudio(soundData); + if(written < soundData.length) { + // Not all the data was written, saving the tail. + tail = soundData; + tailPosition = written; + } + currentWritePosition += written; + } + }, 100); +} +var mandreel_flashaudio_server = ""; +var mandreel_flashaudio_lite = false; +var mandreel_flashaudio_musicaudiotag = true; + +function as3Error(str) +{ + var params = str.split(' '); + if ( params[0] == "createdBuffer" ) + mandreel_audio_flash_lastBufferCreatedSwf = parseInt(params[1]); + dump("as3Log: "+str); +} + +function mandreel_audio_getFlashMovieObject(movieName) +{ + if (Mandreel_window.document[movieName]) + { + return Mandreel_window.document[movieName]; + } + if (navigator.appName.indexOf("Microsoft Internet")==-1) + { + if (document.embeds && document.embeds[movieName]) + return document.embeds[movieName]; + } + else + { + return document.getElementById(movieName); + } +} + +function mandreel_sendmsg_flash(msg) +{ + if ( mandreel_flashaudio_server != "" ) + { + var iframeWin = document.getElementById("ninja-iframe").contentWindow; + iframeWin.postMessage(msg,mandreel_flashaudio_server); + } + else + { + var flashMovie=mandreel_audio_getFlashMovieObject("FlashDivAudio"); + if ( flashMovie != null ) + flashMovie.receiveMessage(msg); + else + dump("error: flashMovie not found"); + } +} + +function fl_mandreel_audio_init(sp) +{ + mandreel_sendmsg_flash("init "+g_mandreel_working_folder); +} + +function fl_mandreel_audio_end(sp) +{ +} + +function fl_mandreel_audio_update(sp) +{ +} + +function mandreel_flashaudiolite_createBuffer(fileName) +{ + mandreel_audio_flash_lastBufferCreated++; + mandreel_sendmsg_flash("createBuffer "+wa_getFileNameNoExt(fileName)+" "+mandreel_audio_flash_lastBufferCreated); +} + +var mandreel_audio_flash_lastBufferCreated = 0; +function fl_mandreel_audio_createBuffer(sp) +{ + var ptr_fileName = heap32[sp>>2];sp+=4; + var fileName = get_string_from_ptr(ptr_fileName).toLowerCase(); + mandreel_flashaudiolite_createBuffer(fileName); +} + +function fl_internal_mandreel_audio_checkBuffersPending() +{ + return mandreel_flashaudio_lite && (mandreel_audio_flash_lastBufferCreatedSwf != mandreel_audio_flash_lastBufferCreated); +} + +var mandreel_audio_flash_lastBufferCreatedSwf = 0; +function fl_mandreel_audio_checkBuffersPending(sp) +{ + r_g0 = 0; + if ( fl_internal_mandreel_audio_checkBuffersPending() ) + r_g0 = 1; + dump("fl_mandreel_audio_checkBuffersPending ("+r_g0+") ("+mandreel_audio_flash_lastBufferCreatedSwf+") ("+mandreel_audio_flash_lastBufferCreated+")"); +} + + +function fl_mandreel_audio_playChannel(sp) +{ + var ptr_fileName = heap32[sp>>2];sp+=4; + var channel = heap32[sp>>2];sp+=4; + var vol = heapFloat[sp>>2];sp+=4; + var loop = heap32[sp>>2];sp+=4; + var pitch = heapFloat[sp>>2];sp+=4; + var fileName = get_string_from_ptr(ptr_fileName).toLowerCase(); + mandreel_sendmsg_flash("playChannel "+fileName+" "+channel+" "+loop+" "+vol+" "+pitch); + r_g0 = 0; +} + +function fl_mandreel_audio_stopChannel(sp) +{ + var ptr_fileName = heap32[sp>>2];sp+=4; + var channel = heap32[sp>>2];sp+=4; + var index = heapFloat[sp>>2];sp+=4; + + mandreel_sendmsg_flash("stopChannel "+channel); +} + +function fl_mandreel_audio_setChannelVolume(sp) +{ + var channel = heap32[sp>>2];sp+=4; + var vol = heapFloat[sp>>2];sp+=4; + + mandreel_sendmsg_flash("setChannelVolume "+channel+" "+vol); +} + +function fl_mandreel_audio_setChannelPan(sp) +{ + var channel = heap32[sp>>2];sp+=4; + var pan = heapFloat[sp>>2];sp+=4; + mandreel_sendmsg_flash("setChannelPan "+channel+" "+pan); +} + +function fl_mandreel_audio_setChannelPitch(sp) +{ + var channel = heap32[sp>>2];sp+=4; + var pitch = heapFloat[sp>>2];sp+=4; + mandreel_sendmsg_flash("setChannelPitch "+channel+" "+pitch); +} + + +function mandreel_audio_load_flash() +{ + var failed = ""; + + + try + { + var mandreelAudioSwf = g_mandreel_working_folder+"mandreelaudio.swf"; + if ( mandreel_flashaudio_lite ) + mandreelAudioSwf = g_mandreel_working_folder+"mandreelaudiolite.swf"; + var swf = swfobject.createSWF({ data:mandreelAudioSwf, width:"0", height:"0", allowScriptAccess:"always" }, { menu:"false" }, "FlashDivAudio"); + if ( !swf ) + failed = "swfobject.js not avaiable or Unable to open "+mandreelAudioSwf; + } + catch(err) + { + failed = err; + } + + if (failed == "" && !swfobject.hasFlashPlayerVersion("9.0.0")) + failed = "flash player not found"; + + if ( failed != "" ) + { + dump("Failed to create flash audio driver ("+failed+"). Null driver will be used."); + MandreelAudioDriver = "null"; + null_MainAudioDriver(); + } +} + +function fl_MainAudioDriver(audioServer, audioUrl) +{ + mandreel_flashaudio_server = audioServer; + if ( mandreel_flashaudio_lite ) + mandreel_flashaudio_server = ""; + if ( mandreel_flashaudio_server != "" ) + { + Mandreel_window.addEventListener("message", receiveMessage2, false); + var el = document.createElement("iframe"); + el.setAttribute('id', 'ninja-iframe'); + el.setAttribute('width', '0'); + el.setAttribute('height', '0'); + el.setAttribute('frameborder', '0'); + document.body.appendChild(el); + el.onerror = function(message) { alert(message); }; + el.setAttribute('src', audioServer+audioUrl+"/MandreelAudio.html"); + setTimeout("CheckNinjaFrameReady()", 1000); + } + else + { + setTimeout("mandreel_audio_load_flash()", 10); + } +} +var ninjaLoaded = false; +function CheckNinjaFrameReady() +{ + try + { + mandreel_sendmsg_flash("loadFlash"); + } + catch(err) + { + } + if ( !ninjaLoaded ) + setTimeout("CheckNinjaFrameReady()", 1000); +} + +function fl_map_mandreel_audio_functions() +{ + mandreel_audio_init = fl_mandreel_audio_init; + mandreel_audio_end = fl_mandreel_audio_end; + mandreel_audio_update = fl_mandreel_audio_update; + mandreel_audio_createBuffer = fl_mandreel_audio_createBuffer; + mandreel_audio_playChannel = fl_mandreel_audio_playChannel; + mandreel_audio_stopChannel = fl_mandreel_audio_stopChannel; + mandreel_audio_setChannelVolume = fl_mandreel_audio_setChannelVolume; + mandreel_audio_setChannelPan = fl_mandreel_audio_setChannelPan; + mandreel_audio_setChannelPitch = fl_mandreel_audio_setChannelPitch; + if ( mandreel_flashaudio_musicaudiotag ) + { + mandreel_audio_useMusicFunctions = wa_mandreel_audio_useMusicFunctions; + mandreel_audio_playMusic = wa_mandreel_audio_playMusic; + mandreel_audio_stopMusic = wa_mandreel_audio_stopMusic; + mandreel_audio_setMusicVol = wa_mandreel_audio_setMusicVol; + } + else + dump("WARNING: flash music functions not supported"); + mandreel_audio_checkBuffersPending = fl_mandreel_audio_checkBuffersPending; +} + +function receiveMessage2(event) +{ + ninjaLoaded = true; + fl_map_mandreel_audio_functions(); + setTimeout("MandreelAudioStarted()", 10); +} + +function mandreel_flashlite_checkPreloadFinished() +{ + if ( !fl_internal_mandreel_audio_checkBuffersPending() ) + MandreelAudioStarted(); + else + setTimeout("mandreel_flashlite_checkPreloadFinished()", 10); +} + +function mandreel_flashlite_startPreload() +{ + mandreel_sendmsg_flash("init "+g_mandreel_working_folder); + // preload sounds + var FatLines = mandreelFatData.split('\n'); + for ( var i=0;i end ) + { + sound.pause(); + maudioChannelEnd[i] = null; + } + } + } + } +} + +function at_mandreel_audio_checkBuffersPending(sp) +{ + r_g0 = 0;//wa_imp_mandreel_audio_checkBuffersPending(); +} + +function at_mandreel_audio_createBuffer(sp) +{ + var ptr_fileName = heap32[sp>>2];sp+=4; + var maxChannels = heap32[sp>>2];sp+=4; + var fileName = get_string_from_ptr(ptr_fileName).toLowerCase(); + //wa_imp_mandreel_audio_createBuffer(fileName); + + r_g0 = 0; +} + +function at_mandreel_audio_playChannel(sp) +{ + var ptr_fileName = heap32[sp>>2];sp+=4; + var channel = heap32[sp>>2];sp+=4; + var vol = heapFloat[sp>>2];sp+=4; + var loop = heap32[sp>>2];sp+=4; + var pitch = heapFloat[sp>>2];sp+=4; + var fileName = get_string_from_ptr(ptr_fileName).toLowerCase(); + at_imp_mandreel_audio_playChannel(fileName,channel,vol,loop,pitch); + r_g0 = 0; +} + +function at_mandreel_audio_stopChannel(sp) +{ + var ptr_fileName = heap32[sp>>2];sp+=4; + var channel = heap32[sp>>2];sp+=4; + var index = heapFloat[sp>>2];sp+=4; + at_imp_mandreel_audio_stopChannel(channel); +} + +function at_mandreel_audio_setChannelVolume(sp) +{ + var channel = heap32[sp>>2];sp+=4; + var vol = heapFloat[sp>>2];sp+=4; + //wa_imp_mandreel_audio_setChannelVolume(channel,vol); +} + +function at_mandreel_audio_setChannelPan(sp) +{ + var channel = heap32[sp>>2];sp+=4; + var pan = heapFloat[sp>>2];sp+=4; + //wa_imp_mandreel_audio_setChannelPan(channel,pan); +} + +function at_mandreel_audio_setChannelPitch(sp) +{ + var channel = heap32[sp>>2];sp+=4; + var pitch = heapFloat[sp>>2];sp+=4; + //wa_imp_mandreel_audio_setChannelPitch(channel,pitch); +} + +function at_mandreel_audio_useMusicFunctions(sp) +{ + r_g0 = 1; +} + +function at_MainAudioDriver() +{ + mandreel_audio_init = at_mandreel_audio_init; + mandreel_audio_end = at_mandreel_audio_end; + mandreel_audio_update = at_mandreel_audio_update; + mandreel_audio_createBuffer = at_mandreel_audio_createBuffer; + mandreel_audio_playChannel = at_mandreel_audio_playChannel; + mandreel_audio_stopChannel = at_mandreel_audio_stopChannel; + mandreel_audio_setChannelVolume = at_mandreel_audio_setChannelVolume; + mandreel_audio_setChannelPan = at_mandreel_audio_setChannelPan; + mandreel_audio_setChannelPitch = at_mandreel_audio_setChannelPitch; + mandreel_audio_useMusicFunctions = at_mandreel_audio_useMusicFunctions; + mandreel_audio_playMusic = wa_mandreel_audio_playMusic; + mandreel_audio_stopMusic = wa_mandreel_audio_stopMusic; + mandreel_audio_checkBuffersPending = at_mandreel_audio_checkBuffersPending; + mandreel_audio_setMusicVol = wa_mandreel_audio_setMusicVol; + + setTimeout("mandreel_audiotag_PreloadAssets()", 10); +} + +var maudiotagPreloadState = "start"; +var maudiotagPreloadAssets = 0; +var maudiotagCurrentPreloadAsset = 0; +var maudiotagPreloadAsync = false; +var maudiotagDurations = Array(); +var maudiotagChannelsCreated = 0; +var maudiotagChannels = Array(); +var maudiotagChannelsLoaded = Array(); +var maudiotagAudioSpriteFound = false; +var maudiotagAvailableChannels = new Array(); +var maudioSecondsPos = new Array(); +var maudioChannelEnd = new Array(); + +function mandreel_audiotag_PreloadAssets() +{ + if ( maudiotagPreloadState == "start" ) + { + maudiotagPreloadAssets = mandreelFatData.split('\n'); + maudiotagCurrentPreloadAsset = 0; + maudiotagPreloadState = "preloading"; + } + else if ( maudiotagPreloadState == "preloading" ) + { + var queued = false; + while ( !queued && maudiotagPreloadState != "done" ) + { + if ( maudiotagCurrentPreloadAsset < maudiotagPreloadAssets.length ) + { + var params = maudiotagPreloadAssets[maudiotagCurrentPreloadAsset].split(','); + if ( params[0] == "audiofile" && params[1]) + { + var duration = params[3]; + var fileNameNoExt = wa_getFileNameNoExt(params[1]); + maudiotagDurations[fileNameNoExt] = duration|0; + dump("audiotag duration ("+params[1]+") "+duration); + } + else if ( params[0] == "audiotagfile" ) + { + var type = params[1]; + var filesize = params[3]; + var numsounds = params[4]; + var at = new Audio(); + if ( !maudiotagAudioSpriteFound && at.canPlayType && at.canPlayType("audio/"+type) != "" ) + { + maudiotagLoadPackFile(params[2],filesize,numsounds,type); + maudiotagAudioSpriteFound = true; + queued = true; + } + } + else if ( params[0] == "audiopreloadasync" ) + { + maudiotagPreloadAsync = true; + } + maudiotagCurrentPreloadAsset++; + } + else + queued = true; + + if ( maudiotagCurrentPreloadAsset >= maudiotagPreloadAssets.length ) + { + maudiotagPreloadState = "done"; + maudiotagPreloadAssets = 0; + } + } + } + + if ( maudiotagPreloadState == "done" ) + { + setTimeout("MandreelAudioStarted()", 10); + } + else + setTimeout("mandreel_audiotag_PreloadAssets()", 10); +} + +function maudiotagLoadPackFile(filename,filesize,numsounds,atype) +{ + dump("audiotag packfile ("+filename+") ("+filesize+") ("+numsounds+")"); + var url = g_mandreel_working_folder+filename; + dump("audiotag: loading packed data ("+filename+") url("+url+")"); + var request = new XMLHttpRequest(); + request.open("GET", url, true); + request.responseType = "arraybuffer"; + request.onreadystatechange = function() + { + if (request.readyState == 4) + { + if (request.status == 404) + return; + if ( request.response != null ) + audiotagParsePreloadFile(request.response,numsounds,atype); + } + } + request.send(); +} + +function audiotagParsePreloadFile(response,numsounds,atype) +{ + var pos = 0; + var bytes = new Uint8Array(response); + var i = 0; + if ( webAudioPreloadAsync ) + webAudioPreloadBytes = bytes; + var secondsPos = 0.0; + while ( pos < bytes.byteLength && i < numsounds) + { + // filename + var fileName = ""; + while ( bytes[pos] != 0 ) + { + fileName += String.fromCharCode(bytes[pos]); + pos++; + } + pos++; + // filesize + var filesize = bytes[pos] | (bytes[pos+1]<<8) | (bytes[pos+2]<<16) | (bytes[pos+3]<<24); + pos += 4; + var fileNameNoExt = wa_getFileNameNoExt(fileName); + var duration = maudiotagDurations[fileNameNoExt]; + dump("afile ("+fileName+") duration("+duration+") posseconds("+secondsPos+")"); + maudioSecondsPos[fileNameNoExt] = secondsPos; + secondsPos += duration / 1000.0; + secondsPos += 0.25; + dump("second "+i+" "+secondsPos); + + i++; + } + + // contents + var contentSize = bytes.byteLength - pos; + var bufferdata = new Uint8Array(contentSize); + bufferdata.set(bytes.subarray(pos,pos+contentSize)); + var ascii = ''; + for (var i=0; i 0 ) + { + var sound = maudiotagAvailableChannels.pop(); + var duration = maudiotagDurations[fileNameNoExt]; + sound.currentTime = time; + console.log("OK "+sound.currentTime); + sound.play(); + maudiotagChannels[channel] = sound; + maudioChannelEnd[channel] = time+(duration/1000.0); + } + } + else + { + console.log("not found play "+fileNameNoExt); + } +} + +function at_imp_mandreel_audio_stopChannel(channel) +{ + var sound = maudiotagChannels[channel]; + if ( sound != null ) + { + sound.pause(); + maudiotagAvailableChannels.push(sound); + maudiotagChannels[channel] = null; + } +} + +var mandreel_flash_socket_callback = null + +function mandreel_flash_sockets_load_flash(callback) +{ + mandreel_flash_socket_callback = callback; + var failed = ""; + try + { + var mandreelSocketsSwf = g_mandreel_working_folder+"mandreelflashsockets.swf"; + var swf = swfobject.createSWF({ data:mandreelSocketsSwf, width:"0", height:"0", allowScriptAccess:"always" }, { menu:"false" }, "FlashDivSockets"); + if ( !swf ) + failed = "Unable to open MandreelFlashSockets.swf"; + } + catch(err) + { + failed = err; + } +} + +var js_mandreel_flash_socket_swf_loaded = false; + +function js_mandreel_flash_socket_ready() +{ + js_mandreel_flash_socket_swf_loaded = true; + if (mandreel_flash_socket_callback) + mandreel_flash_socket_callback(); +} + + +function Mandreel_Socket_InitLibrary(sp) +{ + //mandreel_flash_sockets_load_flash(); +} + + +function mandreel_flash_sockets_getFlashMovieObject(movieName) +{ + if (Mandreel_window.document[movieName]) + { + return Mandreel_window.document[movieName]; + } + if (navigator.appName.indexOf("Microsoft Internet")==-1) + { + if (document.embeds && document.embeds[movieName]) + return document.embeds[movieName]; + } + else + { + return document.getElementById(movieName); + } +} + +function js_mandreel_flash_socket_onError(message) +{ + var id = parseInt(message); + + var sp = g_stack_pointer+512*1024; + + dump('on error ' + id); + + heap32[sp>>2] = id; + mandreel_flash_tcp_onError(sp); + +} +function js_mandreel_flash_socket_onConnect(message) +{ + var id = parseInt(message); + + var sp = g_stack_pointer+512*1024; + + dump('connected ' + id); + + heap32[sp>>2] = id; + mandreel_flash_tcp_onConnect(sp); +} + +function js_mandreel_flash_tcp_receive_callbak(message) +{ + var strings = message.split(' '); + + var id = parseInt(strings[0]); + var data = strings[1]; + + var sp = g_stack_pointer+512*1024; + + var data_ptr = sp + 1024; + fill_ptr_from_string(data_ptr,data); + + heap32[sp>>2] = id; + heap32[(sp+4)>>2] = data_ptr; + mandreel_flash_tcp_receive_callbak(sp); +} + +function js_mandreel_flash_tcp_update(sp) +{ + var id = heap32[sp>>2];sp+=4; + var size = heap32[sp>>2];sp+=4; + + var flashMovie=mandreel_flash_sockets_getFlashMovieObject("FlashDivSockets"); + flashMovie.receiveMessage("receive " + id + " " + size); +} + +function js_mandreel_flash_tcp_create(sp) +{ + var id = heap32[sp>>2];sp+=4; + + var flashMovie=mandreel_flash_sockets_getFlashMovieObject("FlashDivSockets"); + flashMovie.receiveMessage("create " + id); +} + +function js_mandreel_flash_tcp_connectTo(sp) +{ + var id = heap32[sp>>2];sp+=4; + var ptr_string = heap32[sp>>2];sp+=4; + var port = heap32[sp>>2];sp+=4; + + var server_name = get_string_from_ptr(ptr_string); + + var flashMovie=mandreel_flash_sockets_getFlashMovieObject("FlashDivSockets"); + flashMovie.receiveMessage("connect " + id + " " + server_name + " " + port); +} + +function js_mandreel_flash_tcp_close(sp) +{ + var id = heap32[sp>>2];sp+=4; + + + var flashMovie=mandreel_flash_sockets_getFlashMovieObject("FlashDivSockets"); + flashMovie.receiveMessage("close " + id); + dump("js_mandreel_flash_tcp_close " + id); +} +function js_mandreel_flash_tcp_write(sp) +{ + var id = heap32[sp>>2];sp+=4; + var ptr = heap32[sp>>2];sp+=4; + + var message = get_string_from_ptr(ptr); + + dump('js_mandreel_flash_tcp_write ' + message); + + var flashMovie=mandreel_flash_sockets_getFlashMovieObject("FlashDivSockets"); + r_g0 = flashMovie.receiveMessage("send " + id + " " + message); +} + + + +function js_mandreel_flash_tcp_dump(msg) +{ + dump(msg); +} + +function _GLOBAL__I_Landscape02Vtx(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = _ZL10raycastBar; + heap32[(g0)] = 8; + r0 = r0 >> 2; + _Znwj(i7); + heap32[(r0+10006)] = r_g0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = 0; + gettimeofday(i7); + heap32[(r0+10001)] = 0; + heap32[(r0+10005)] = 0; + heap32[(r0+10004)] = 9999; + heap32[(r0+10003)] = 0; + heap32[(r0+10002)] = 0; + return; +} + +function _GLOBAL__D_Landscape02Vtx(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = _ZL10raycastBar; + r0 = r0 >> 2; + r0 = heap32[(r0+10006)]; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN15DemoApplication6myinitEv(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN15DemoApplication16getDynamicsWorldEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+1)]; + r_g0 = r0; + return; +} + +function _ZNK16btCollisionWorld17RayResultCallback14needsCollisionEP17btBroadphaseProxy(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = heapU16[(r0+14)>>1]; + r3 = heapU16[(r1+4)>>1]; + r2 = r2 & r3; + r2 = r2 & 65535; + if(r2 ==0) //_LBB4_2 +{ + r0 = 0; + r_g0 = r0; + return; +} +else{ + r1 = heapU16[(r1+6)>>1]; + r0 = heapU16[(r0+12)>>1]; + r0 = r1 & r0; + r0 = r0 & 65535; + r1 = 0; + r0 = r0 != r1; + r0 = r0 & 1; + r_g0 = r0; + return; +} +} + +function _ZN16btCollisionWorld24ClosestRayResultCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN16btCollisionWorld24ClosestRayResultCallbackE; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN16btCollisionWorld24ClosestRayResultCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN16btCollisionWorld24ClosestRayResultCallbackE; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN16btCollisionWorld24ClosestRayResultCallback15addSingleResultERNS_14LocalRayResultEb(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = heap32[(fp)]; + f0 = heapFloat[(r0+6)]; + r1 = r1 >> 2; + f1 = heapFloat[(r1+1)]; + if(f0 <=f1) //_LBB7_2 +{ + r2 = heap32[(fp+2)]; + heapFloat[(r1+1)] = f0; + r3 = heap32[(r0)]; + heap32[(r1+2)] = r3; + if(r2 ==0) //_LBB7_4 +{ + r2 = r3 >> 2; + f0 = heapFloat[(r0+2)]; + f1 = heapFloat[(r2+1)]; + f2 = heapFloat[(r0+3)]; + f3 = heapFloat[(r2+2)]; + f4 = heapFloat[(r2+5)]; + f5 = heapFloat[(r2+6)]; + f1 = f1*f0; + f3 = f3*f2; + f6 = heapFloat[(r0+4)]; + f7 = heapFloat[(r2+3)]; + f8 = heapFloat[(r2+9)]; + f9 = heapFloat[(r2+10)]; + f10 = heapFloat[(r2+11)]; + f11 = heapFloat[(r2+7)]; + f4 = f4*f0; + f5 = f5*f2; + f1 = f1+f3; + f3 = f7*f6; + f0 = f8*f0; + f2 = f9*f2; + f4 = f4+f5; + f5 = f11*f6; + f1 = f1+f3; + f0 = f0+f2; + f2 = f10*f6; + f3 = f4+f5; + heapFloat[(r1+13)] = f1; + f0 = f0+f2; + heapFloat[(r1+14)] = f3; + heapFloat[(r1+15)] = f0; + heap32[(r1+16)] = 0; +} +else{ + heap32[(r1+13)] = heap32[(r0+2)]; + heap32[(r1+14)] = heap32[(r0+3)]; + heap32[(r1+15)] = heap32[(r0+4)]; + heap32[(r1+16)] = heap32[(r0+5)]; +} + f0 = 1; + f1 = heapFloat[(r0+6)]; + f2 = heapFloat[(r1+9)]; + f3 = heapFloat[(r1+5)]; + f0 = f0-f1; + f3 = f3*f0; + f2 = f2*f1; + f2 = f3+f2; + heapFloat[(r1+17)] = f2; + f2 = heapFloat[(r1+6)]; + f3 = heapFloat[(r1+10)]; + f2 = f2*f0; + f3 = f3*f1; + f2 = f2+f3; + heapFloat[(r1+18)] = f2; + f2 = heapFloat[(r1+7)]; + f3 = heapFloat[(r1+11)]; + f0 = f2*f0; + f1 = f3*f1; + f0 = f0+f1; + heapFloat[(r1+19)] = f0; + f0 = heapFloat[(r0+6)]; + f_g0 = f0; + return; +} +else{ + r0 = _2E_str3; + r1 = _2E_str4; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 250; + _assert(i7); +} +} + +function _ZN20btDefaultMotionStateD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV20btDefaultMotionState; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN20btDefaultMotionStateD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV20btDefaultMotionState; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZNK20btDefaultMotionState17getWorldTransformER11btTransform(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + f0 = heapFloat[(r0+17)]; + f1 = heapFloat[(r0+1)]; + f2 = heapFloat[(r0+21)]; + f3 = heapFloat[(r0+5)]; + f4 = heapFloat[(r0+2)]; + f5 = heapFloat[(r0+6)]; + f6 = f1*f0; + f7 = f3*f2; + f8 = heapFloat[(r0+25)]; + f9 = heapFloat[(r0+9)]; + f10 = heapFloat[(r0+18)]; + f11 = heapFloat[(r0+22)]; + f12 = heapFloat[(r0+19)]; + f13 = heapFloat[(r0+13)]; + f14 = heapFloat[(r0+3)]; + f15 = heapFloat[(r0+23)]; + f16 = heapFloat[(r0+30)]; + f17 = heapFloat[(r0+14)]; + f18 = heapFloat[(r0+7)]; + r1 = heap32[(fp+1)]; + f19 = heapFloat[(r0+26)]; + f20 = heapFloat[(r0+31)]; + f21 = heapFloat[(r0+27)]; + f22 = heapFloat[(r0+15)]; + f23 = heapFloat[(r0+11)]; + f24 = heapFloat[(r0+10)]; + f25 = heapFloat[(r0+29)]; + f26 = f4*f0; + f27 = f5*f2; + f6 = f6+f7; + f7 = f9*f8; + r0 = r1 >> 2; + f28 = f14*f0; + f29 = f18*f2; + f26 = f26+f27; + f27 = f24*f8; + f6 = f6+f7; + f7 = f28+f29; + f28 = f23*f8; + f26 = f26+f27; + heapFloat[(r0)] = f6; + f6 = f1*f10; + f27 = f3*f11; + f7 = f7+f28; + heapFloat[(r0+1)] = f26; + heapFloat[(r0+2)] = f7; + f7 = f4*f10; + f26 = f5*f11; + f6 = f6+f27; + f27 = f9*f19; + f28 = f14*f10; + f29 = f18*f11; + f7 = f7+f26; + f26 = f24*f19; + f6 = f6+f27; + heap32[(r0+3)] = 0; + f27 = f28+f29; + f28 = f23*f19; + f7 = f7+f26; + heapFloat[(r0+4)] = f6; + f1 = f1*f12; + f3 = f3*f15; + f6 = f27+f28; + heapFloat[(r0+5)] = f7; + heapFloat[(r0+6)] = f6; + f4 = f4*f12; + f5 = f5*f15; + f1 = f1+f3; + f3 = f9*f21; + f6 = -f25; + f7 = f14*f12; + f9 = f18*f15; + f4 = f4+f5; + f5 = f24*f21; + f1 = f1+f3; + heap32[(r0+7)] = 0; + f3 = f0*f13; + f14 = f2*f17; + f0 = f0*f6; + f2 = f2*f16; + f7 = f7+f9; + f9 = f23*f21; + f4 = f4+f5; + heapFloat[(r0+8)] = f1; + f1 = f10*f13; + f5 = f11*f17; + f10 = f10*f6; + f11 = f11*f16; + f3 = f3+f14; + f14 = f8*f22; + f0 = f0-f2; + f2 = f8*f20; + f7 = f7+f9; + heapFloat[(r0+9)] = f4; + heapFloat[(r0+10)] = f7; + f4 = f12*f13; + f7 = f15*f17; + f6 = f12*f6; + f8 = f15*f16; + f1 = f1+f5; + f5 = f19*f22; + f9 = f10-f11; + f10 = f19*f20; + f3 = f3+f14; + f0 = f0-f2; + f2 = f4+f7; + f4 = f21*f22; + f6 = f6-f8; + f7 = f21*f20; + f1 = f1+f5; + f5 = f9-f10; + f0 = f3+f0; + heap32[(r0+11)] = 0; + f2 = f2+f4; + f3 = f6-f7; + f1 = f1+f5; + heapFloat[(r0+12)] = f0; + f0 = f2+f3; + heapFloat[(r0+13)] = f1; + heapFloat[(r0+14)] = f0; + heap32[(r0+15)] = 0; + return; +} + +function _ZN20btDefaultMotionState17setWorldTransformERK11btTransform(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = r1 >> 2; + f0 = heapFloat[(r1)]; + f1 = heapFloat[(r0+17)]; + f2 = heapFloat[(r1+1)]; + f3 = heapFloat[(r0+21)]; + f4 = heapFloat[(r0+18)]; + f5 = heapFloat[(r0+22)]; + f6 = f1*f0; + f7 = f3*f2; + f8 = heapFloat[(r1+2)]; + f9 = heapFloat[(r0+25)]; + f10 = heapFloat[(r1+8)]; + f11 = heapFloat[(r0+29)]; + f12 = heapFloat[(r1+4)]; + f13 = heapFloat[(r0+19)]; + f14 = heapFloat[(r1+9)]; + f15 = heapFloat[(r0+30)]; + f16 = heapFloat[(r1+5)]; + f17 = heapFloat[(r0+23)]; + f18 = heapFloat[(r1+10)]; + f19 = heapFloat[(r0+31)]; + f20 = heapFloat[(r1+6)]; + f21 = heapFloat[(r0+27)]; + f22 = heapFloat[(r0+26)]; + f23 = f4*f0; + f24 = f5*f2; + f6 = f6+f7; + f7 = f9*f8; + f25 = heapFloat[(r1+14)]; + f26 = heapFloat[(r1+13)]; + f27 = heapFloat[(r1+12)]; + f28 = f13*f0; + f29 = f17*f2; + f23 = f23+f24; + f24 = f22*f8; + f6 = f6+f7; + f7 = f28+f29; + f28 = f21*f8; + f23 = f23+f24; + heapFloat[(r0+1)] = f6; + f6 = f1*f12; + f24 = f3*f16; + f7 = f7+f28; + heapFloat[(r0+2)] = f23; + heapFloat[(r0+3)] = f7; + f7 = f4*f12; + f23 = f5*f16; + f6 = f6+f24; + f24 = f9*f20; + f28 = f13*f12; + f29 = f17*f16; + f7 = f7+f23; + f23 = f22*f20; + f6 = f6+f24; + heap32[(r0+4)] = 0; + f24 = f28+f29; + f28 = f21*f20; + f7 = f7+f23; + heapFloat[(r0+5)] = f6; + f1 = f1*f10; + f3 = f3*f14; + f6 = f24+f28; + heapFloat[(r0+6)] = f7; + heapFloat[(r0+7)] = f6; + f4 = f4*f10; + f5 = f5*f14; + f1 = f1+f3; + f3 = f9*f18; + f6 = f13*f10; + f7 = f17*f14; + f4 = f4+f5; + f5 = f22*f18; + f1 = f1+f3; + heap32[(r0+8)] = 0; + f0 = f0*f11; + f2 = f2*f15; + f3 = f6+f7; + f6 = f21*f18; + f4 = f4+f5; + heapFloat[(r0+9)] = f1; + f1 = f12*f11; + f5 = f16*f15; + f0 = f0+f2; + f2 = f8*f19; + f3 = f3+f6; + heapFloat[(r0+10)] = f4; + f0 = f0+f2; + heapFloat[(r0+11)] = f3; + f2 = f10*f11; + f3 = f14*f15; + f1 = f1+f5; + f4 = f20*f19; + f1 = f1+f4; + f2 = f2+f3; + f3 = f18*f19; + f0 = f0+f27; + heap32[(r0+12)] = 0; + f2 = f2+f3; + f1 = f1+f26; + heapFloat[(r0+13)] = f0; + f0 = f2+f25; + heapFloat[(r0+14)] = f1; + heapFloat[(r0+15)] = f0; + heap32[(r0+16)] = 0; + return; +} + +function _ZN17btTypedConstraint21setupSolverConstraintER20btAlignedObjectArrayI18btSolverConstraintEiif(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN17btTypedConstraint23solveConstraintObsoleteER11btRigidBodyS1_f(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN13BenchmarkDemo15displayCallbackEv(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN13BenchmarkDemo11exitPhysicsEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+9)]; +if(!(r1 <1)) //_LBB15_5 +{ + r1 = 0; +_3: while(true){ + r2 = heap32[(r0+11)]; + r3 = r1 << 2; + r2 = (r2 + r3)|0; + r2 = r2 >> 2; + r2 = heap32[(r2)]; +if(!(r2 ==0)) //_LBB15_4 +{ + r3 = r2 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+1)]; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r3)>>2](i7); +} + r1 = (r1 + 1)|0; + r2 = heap32[(r0+9)]; + if(r2 >r1) //_LBB15_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + r1 = heap32[(r0+1)]; + r2 = r1 >> 2; + r2 = heap32[(r2+2)]; + r3 = (r2 + -1)|0; +_9: do { +if(!(r3 <0)) //_LBB15_16 +{ + r3 = 1; + r2 = (r3 - r2)|0; +_11: while(true){ + r3 = r1 >> 2; + r3 = heap32[(r3+4)]; + r4 = r2 << 2; + r3 = (r3 - r4)|0; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r4 = heapU8[r3+232]; + r4 = r4 & 2; +if(!(r4 ==0)) //_LBB15_9 +{ + if(r3 !=0) //_LBB15_10 +{ + r4 = r3 >> 2; + r4 = heap32[(r4+118)]; +if(!(r4 ==0)) //_LBB15_9 +{ + r1 = r4 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+1)]; + heap32[(g0)] = r4; + __FUNCTION_TABLE__[(r1)>>2](i7); + r1 = heap32[(r0+1)]; +} +} +} + r4 = r1 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+9)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r3; + __FUNCTION_TABLE__[(r4)>>2](i7); + if(r3 !=0) //_LBB15_15 +{ + r1 = r3 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+2)]; + heap32[(g0)] = r3; + __FUNCTION_TABLE__[(r1)>>2](i7); +} + if(r2 ==0) //_LBB15_16 +{ +break _9; +} +else{ + r2 = (r2 + 1)|0; + r1 = heap32[(r0+1)]; +continue _11; +} +} +} +} while(0); + r1 = heap32[(r0+4)]; +_23: do { +if(!(r1 <1)) //_LBB15_21 +{ + r1 = 0; +_25: while(true){ + r2 = heap32[(r0+6)]; + r3 = r1 << 2; + r2 = (r2 + r3)|0; + r2 = r2 >> 2; + r2 = heap32[(r2)]; +if(!(r2 ==0)) //_LBB15_20 +{ + r3 = r2 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+1)]; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r3)>>2](i7); +} + r1 = (r1 + 1)|0; + r2 = heap32[(r0+4)]; + if(r2 >r1) //_LBB15_18 +{ +continue _25; +} +else{ +break _23; +} +} +} +} while(0); + r1 = heap32[(r0+1)]; +if(!(r1 ==0)) //_LBB15_23 +{ + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+1)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r2)>>2](i7); +} + r1 = heap32[(r0+15)]; +if(!(r1 ==0)) //_LBB15_25 +{ + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+1)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r2)>>2](i7); +} + r1 = heap32[(r0+13)]; +if(!(r1 ==0)) //_LBB15_27 +{ + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+1)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r2)>>2](i7); +} + r1 = heap32[(r0+14)]; +if(!(r1 ==0)) //_LBB15_29 +{ + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+1)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r2)>>2](i7); +} + r0 = heap32[(r0+16)]; +if(!(r0 ==0)) //_LBB15_31 +{ + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+1)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); +} + return; +} + +function _ZN7RagDollD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV7RagDoll; + r2 = 0; + r3 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r3)] = r1; + r1 = r2; +_1: while(true){ + r4 = heap32[(r3+1)]; + r5 = r1 << 2; + r6 = r4 >> 2; + r5 = (r0 - r5)|0; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r5 = r5 >> 2; + r6 = heap32[(r6+14)]; + r7 = heap32[(r5+24)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r7; + __FUNCTION_TABLE__[(r6)>>2](i7); + r4 = heap32[(r5+24)]; +if(!(r4 ==0)) //_LBB16_3 +{ + r5 = r4 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+1)]; + heap32[(g0)] = r4; + __FUNCTION_TABLE__[(r5)>>2](i7); +} + r4 = (r2 - r1)|0; + r4 = r4 << 2; + r4 = (r0 + r4)|0; + r1 = (r1 + -1)|0; + r4 = r4 >> 2; + heap32[(r4+24)] = 0; + if(r1 !=-10) //_LBB16_1 +{ +continue _1; +} +else{ +break _1; +} +} + r1 = 2; +_7: while(true){ + r2 = heap32[(r3+1)]; + r4 = r2 >> 2; + r5 = r1 << 2; + r4 = heap32[(r4)]; + r5 = (r0 + r5)|0; + r4 = r4 >> 2; + r5 = r5 >> 2; + r4 = heap32[(r4+21)]; + r6 = heap32[(r5+11)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r6; + __FUNCTION_TABLE__[(r4)>>2](i7); + r2 = heap32[(r5+11)]; + r4 = r2 >> 2; + r4 = heap32[(r4+118)]; + if(r4 !=0) //_LBB16_7 +{ + r2 = r4 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+1)]; + heap32[(g0)] = r4; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = heap32[(r5+11)]; +} +if(!(r2 ==0)) //_LBB16_10 +{ + r4 = r2 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+2)]; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r4)>>2](i7); +} + heap32[(r5+11)] = 0; + r2 = heap32[(r5)]; +if(!(r2 ==0)) //_LBB16_12 +{ + r4 = r2 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+1)]; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r4)>>2](i7); +} + r1 = (r1 + 1)|0; + heap32[(r5)] = 0; + if(r1 !=13) //_LBB16_5 +{ +continue _7; +} +else{ +break _7; +} +} + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN7RagDollD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV7RagDoll; + r2 = 0; + r3 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r3)] = r1; + r1 = r2; +_1: while(true){ + r4 = heap32[(r3+1)]; + r5 = r1 << 2; + r6 = r4 >> 2; + r5 = (r0 - r5)|0; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r5 = r5 >> 2; + r6 = heap32[(r6+14)]; + r7 = heap32[(r5+24)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r7; + __FUNCTION_TABLE__[(r6)>>2](i7); + r4 = heap32[(r5+24)]; +if(!(r4 ==0)) //_LBB17_3 +{ + r5 = r4 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+1)]; + heap32[(g0)] = r4; + __FUNCTION_TABLE__[(r5)>>2](i7); +} + r4 = (r2 - r1)|0; + r4 = r4 << 2; + r4 = (r0 + r4)|0; + r1 = (r1 + -1)|0; + r4 = r4 >> 2; + heap32[(r4+24)] = 0; + if(r1 !=-10) //_LBB17_1 +{ +continue _1; +} +else{ +break _1; +} +} + r1 = 2; +_7: while(true){ + r2 = heap32[(r3+1)]; + r4 = r2 >> 2; + r5 = r1 << 2; + r4 = heap32[(r4)]; + r5 = (r0 + r5)|0; + r4 = r4 >> 2; + r5 = r5 >> 2; + r4 = heap32[(r4+21)]; + r6 = heap32[(r5+11)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r6; + __FUNCTION_TABLE__[(r4)>>2](i7); + r2 = heap32[(r5+11)]; + r4 = r2 >> 2; + r4 = heap32[(r4+118)]; + if(r4 !=0) //_LBB17_7 +{ + r2 = r4 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+1)]; + heap32[(g0)] = r4; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = heap32[(r5+11)]; +} +if(!(r2 ==0)) //_LBB17_10 +{ + r4 = r2 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+2)]; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r4)>>2](i7); +} + heap32[(r5+11)] = 0; + r2 = heap32[(r5)]; +if(!(r2 ==0)) //_LBB17_12 +{ + r4 = r2 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+1)]; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r4)>>2](i7); +} + r1 = (r1 + 1)|0; + heap32[(r5)] = 0; + if(r1 !=13) //_LBB17_5 +{ +continue _7; +} +else{ +break _7; +} +} + return; +} + +function _ZN13BenchmarkDemoD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV13BenchmarkDemo; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZN13BenchmarkDemo11exitPhysicsEv(i7); + r1 = heap32[(r2+11)]; +if(!(r1 ==0)) //_LBB18_4 +{ + r3 = heapU8[r0+48]; +if(!(r3 ==0)) //_LBB18_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+11)] = 0; +} + r1 = 1; + heap8[r0+48] = r1; + heap32[(r2+11)] = 0; + heap32[(r2+9)] = 0; + heap32[(r2+10)] = 0; + r3 = heap32[(r2+6)]; +if(!(r3 ==0)) //_LBB18_8 +{ + r4 = heapU8[r0+28]; +if(!(r4 ==0)) //_LBB18_7 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+6)] = 0; +} + heap8[r0+28] = r1; + heap32[(r2+6)] = 0; + heap32[(r2+4)] = 0; + heap32[(r2+5)] = 0; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN15DemoApplication20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var f0; + var f1; +var __label__ = 0; + i7 = sp + -168;var g0 = i7>>2; // save stack + r0 = heap32[(fp+3)]; +if(!(r0 ==0)) //_LBB19_3 +{ + r1 = r0 >> 2; + r1 = heap32[(r1+1)]; +if(!(r1 !=35)) //_LBB19_3 +{ + r0 = _2E_str5; + r1 = _2E_str6; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 1297; + _assert(i7); +} +} + f0 = heapFloat[(fp+1)]; + r1 = sp + -152; + r2 = r1 >> 2; + heap32[(fp+-38)] = 0; + heap32[(r2+1)] = 0; + heap32[(r2+2)] = 0; + f1 = 0; + heap32[(r2+3)] = 0; +if(!(f0 ==f1)) //_LBB19_5 +{ + r3 = r0 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+8)]; + heap32[(g0)] = r0; + heapFloat[(g0+1)] = f0; + heap32[(g0+2)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); +} + r1 = heap32[(fp)]; + r3 = heap32[(fp+2)]; + r4 = gNumAlignedAllocs; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + heap32[(r4)] = r5; + heap32[(g0)] = 627; + malloc(i7); + r4 = r_g0; + if(r4 !=0) //_LBB19_7 +{ + r5 = 0; + r6 = (r4 + 4)|0; + r5 = (r5 - r6)|0; + r5 = r5 & 15; + r5 = (r4 + r5)|0; + r6 = (r5 + 4)|0; + r5 = r5 >> 2; + heap32[(r5)] = r4; + r4 = r6; +} + r5 = r4 >> 2; + heap32[(r5+41)] = 1065353216; + heap32[(r5+42)] = 1065353216; + heap32[(r5+43)] = 1065353216; + heap32[(r5+44)] = 0; + heap32[(r5+45)] = 0; + heap32[(r5+46)] = 1566444395; + heap32[(r5+47)] = 0; + heap32[(r5+48)] = 0; + heap32[(r5+49)] = 0; + heap32[(r5+50)] = 0; + heap32[(r5+51)] = 1; + heap32[(r5+52)] = -1; + heap32[(r5+53)] = -1; + heap32[(r5+54)] = 1; + heap32[(r5+55)] = 0; + heap32[(r5+56)] = 1056964608; + heap32[(r5+57)] = 0; + heap32[(r5+58)] = 1; + heap32[(r5+59)] = 0; + heap32[(r5+60)] = 1065353216; + heap32[(r5+61)] = 0; + heap32[(r5+62)] = 0; + heap32[(r5+63)] = 0; + heap32[(r5+1)] = 1065353216; + heap32[(r5+2)] = 0; + heap32[(r5+3)] = 0; + heap32[(r5+4)] = 0; + heap32[(r5+5)] = 0; + heap32[(r5+6)] = 1065353216; + heap32[(r5+7)] = 0; + heap32[(r5+8)] = 0; + heap32[(r5+9)] = 0; + heap32[(r5+10)] = 0; + heap32[(r5+11)] = 1065353216; + heap32[(r5+12)] = 0; + heap32[(r5+13)] = 0; + heap32[(r5+14)] = 0; + r6 = _ZTV11btRigidBody; + heap32[(r5+15)] = 0; + r6 = (r6 + 8)|0; + heap32[(r5+16)] = 0; + r7 = 1; + heap32[(r5)] = r6; + heap8[r4+492] = r7; + heap32[(r5+122)] = 0; + heap32[(r5+120)] = 0; + r6 = sp + -136; + heap32[(r5+121)] = 0; + r7 = r6 >> 2; + heapFloat[(fp+-34)] = f0; + heap32[(r7+1)] = 0; + heap32[(r7+18)] = r0; + heap32[(r7+19)] = heap32[(fp+-38)]; + heap32[(r7+20)] = heap32[(r2+1)]; + heap32[(r7+21)] = heap32[(r2+2)]; + heap32[(r7+22)] = heap32[(r2+3)]; + heap32[(r7+23)] = 0; + heap32[(r7+24)] = 0; + heap32[(r7+25)] = 1056964608; + heap32[(r7+26)] = 0; + heap32[(r7+27)] = 1061997773; + r0 = 0; + heap32[(r7+28)] = 1065353216; + heap8[sp+-20] = r0; + heap32[(r7+30)] = 1000593162; + heap32[(r7+31)] = 1008981770; + heap32[(r7+32)] = 1008981770; + heap32[(r7+33)] = 1008981770; + heap32[(r7+2)] = 1065353216; + heap32[(r7+3)] = 0; + heap32[(r7+4)] = 0; + heap32[(r7+5)] = 0; + heap32[(r7+6)] = 0; + heap32[(r7+7)] = 1065353216; + heap32[(r7+8)] = 0; + heap32[(r7+9)] = 0; + heap32[(r7+10)] = 0; + heap32[(r7+11)] = 0; + heap32[(r7+12)] = 1065353216; + heap32[(r7+13)] = 0; + heap32[(r7+14)] = 0; + heap32[(r7+15)] = 0; + heap32[(r7+16)] = 0; + heap32[(r7+17)] = 0; + heap32[(g0)] = r4; + heap32[(g0+1)] = r6; + _ZN11btRigidBody14setupRigidBodyERKNS_27btRigidBodyConstructionInfoE(i7); + r0 = r3 >> 2; + heap32[(r5+1)] = heap32[(r0)]; + heap32[(r5+2)] = heap32[(r0+1)]; + heap32[(r5+3)] = heap32[(r0+2)]; + heap32[(r5+4)] = heap32[(r0+3)]; + heap32[(r5+5)] = heap32[(r0+4)]; + heap32[(r5+6)] = heap32[(r0+5)]; + heap32[(r5+7)] = heap32[(r0+6)]; + heap32[(r5+8)] = heap32[(r0+7)]; + heap32[(r5+9)] = heap32[(r0+8)]; + heap32[(r5+10)] = heap32[(r0+9)]; + heap32[(r5+11)] = heap32[(r0+10)]; + heap32[(r5+12)] = heap32[(r0+11)]; + heap32[(r5+13)] = heap32[(r0+12)]; + heap32[(r5+14)] = heap32[(r0+13)]; + heap32[(r5+15)] = heap32[(r0+14)]; + r1 = r1 >> 2; + heap32[(r5+16)] = heap32[(r0+15)]; + heap32[(r5+46)] = heap32[(r1+2)]; + r0 = heap32[(r1+1)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+20)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + __FUNCTION_TABLE__[(r1)>>2](i7); + r_g0 = r4; + return; +} + +function _ZN13BenchmarkDemoD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV13BenchmarkDemo; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZN13BenchmarkDemo11exitPhysicsEv(i7); + r1 = heap32[(r2+11)]; +if(!(r1 ==0)) //_LBB20_4 +{ + r3 = heapU8[r0+48]; +if(!(r3 ==0)) //_LBB20_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+11)] = 0; +} + r1 = 1; + heap8[r0+48] = r1; + heap32[(r2+11)] = 0; + heap32[(r2+9)] = 0; + heap32[(r2+10)] = 0; + r3 = heap32[(r2+6)]; +if(!(r3 ==0)) //_LBB20_8 +{ + r4 = heapU8[r0+28]; +if(!(r4 ==0)) //_LBB20_7 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+6)] = 0; +} + heap8[r0+28] = r1; + heap32[(r2+6)] = 0; + heap32[(r2+4)] = 0; + heap32[(r2+5)] = 0; + return; +} + +function _ZN13BenchmarkDemo20clientMoveAndDisplayEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var f0; + var f1; + var f2; +var __label__ = 0; + i7 = sp + -128;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+1)]; +if(!(r1 ==0)) //_LBB21_2 +{ + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+12)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 1015580809; + heap32[(g0+2)] = 1; + heap32[(g0+3)] = 1015580809; + __FUNCTION_TABLE__[(r2)>>2](i7); + r1 = heap32[(r0+1)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+5)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r2)>>2](i7); +} + r1 = heap32[(r0+17)]; +if(!(r1 !=7)) //_LBB21_10 +{ + r1 = _ZL10raycastBar; + r2 = r1 >> 2; + r0 = heap32[(r0+1)]; + r3 = heap32[(r2+10006)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = 0; + r3 = 0; + gettimeofday(i7); +_6: while(true){ + r4 = sp + -96; + r5 = r4 >> 2; + heap32[(r5+1)] = 1065353216; + r6 = 1; + heap32[(r5+2)] = 0; + r7 = -1; + heap16[(sp+-84)>>1] = r6; + r6 = _ZTVN16btCollisionWorld24ClosestRayResultCallbackE; + heap16[(sp+-82)>>1] = r7; + r7 = (r1 + r3)|0; + r6 = (r6 + 8)|0; + heap32[(r5+4)] = 0; + r8 = r7 >> 2; + heap32[(fp+-24)] = r6; + heap32[(r5+5)] = heap32[(r8)]; + heap32[(r5+6)] = heap32[(r8+1)]; + heap32[(r5+7)] = heap32[(r8+2)]; + heap32[(r5+8)] = heap32[(r8+3)]; + heap32[(r5+9)] = heap32[(r8+2000)]; + heap32[(r5+10)] = heap32[(r8+2001)]; + heap32[(r5+11)] = heap32[(r8+2002)]; + r9 = r0 >> 2; + heap32[(r5+12)] = heap32[(r8+2003)]; + r9 = heap32[(r9)]; + r9 = r9 >> 2; + r9 = heap32[(r9+7)]; + r10 = (r7 + 8000)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r10; + heap32[(g0+3)] = r4; + __FUNCTION_TABLE__[(r9)>>2](i7); + r4 = heap32[(r5+2)]; + if(r4 ==0) //_LBB21_6 +{ + r4 = r7 >> 2; + r5 = r7 >> 2; + r9 = r7 >> 2; + r10 = r7 >> 2; + heap32[(r4+6000)] = heap32[(r5+2000)]; + r4 = r7 >> 2; + r5 = r7 >> 2; + heap32[(r9+6001)] = heap32[(r10+2001)]; + r9 = r7 >> 2; + r10 = r7 >> 2; + heap32[(r4+6002)] = heap32[(r5+2002)]; + r4 = r7 >> 2; + heap32[(r9+6003)] = heap32[(r10+2003)]; + r5 = r7 >> 2; + heap32[(r4+8000)] = 1065353216; + r4 = r7 >> 2; + heap32[(r5+8001)] = 0; + heap32[(r4+8002)] = 0; + heap32[(r8+8003)] = 0; +} +else{ + r4 = r7 >> 2; + r9 = r7 >> 2; + heap32[(r4+6000)] = heap32[(r5+17)]; + r4 = r7 >> 2; + heap32[(r9+6001)] = heap32[(r5+18)]; + r9 = r7 >> 2; + heap32[(r4+6002)] = heap32[(r5+19)]; + heap32[(r9+6003)] = heap32[(r5+20)]; + f0 = heapFloat[(r5+13)]; + r4 = r7 >> 2; + heapFloat[(r4+8000)] = f0; + f1 = heapFloat[(r5+14)]; + r9 = r7 >> 2; + heapFloat[(r9+8001)] = f1; + f2 = heapFloat[(r5+15)]; + r7 = r7 >> 2; + f0 = f0*f0; + f1 = f1*f1; + heapFloat[(r7+8002)] = f2; + heap32[(r8+8003)] = heap32[(r5+16)]; + f0 = f0+f1; + f1 = f2*f2; + f0 = f0+f1; + heapFloat[(g0)] = f0; + sqrtf(i7); + f1 = 1; + f0 = f1/f_g0; + f1 = heapFloat[(r4+8000)]; + f1 = f1*f0; + heapFloat[(r4+8000)] = f1; + f1 = heapFloat[(r9+8001)]; + f1 = f1*f0; + heapFloat[(r9+8001)] = f1; + f1 = heapFloat[(r7+8002)]; + f0 = f1*f0; + heapFloat[(r7+8002)] = f0; +} + r3 = (r3 + 16)|0; + heap32[(fp+-24)] = r6; +if(!(r3 !=8000)) //_LBB21_4 +{ +break _6; +} +} + r0 = heap32[(r2+10001)]; + r1 = sp + -8; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + gettimeofday(i7); + r3 = heap32[(r2+10006)]; + r3 = r3 >> 2; + r1 = r1 >> 2; + r4 = heap32[(fp+-2)]; + r5 = heap32[(r3)]; + r1 = heap32[(r1+1)]; + r3 = heap32[(r3+1)]; + r1 = (r1 - r3)|0; + r3 = (r4 - r5)|0; + r1 = (r1 / 1000)|0; + r3 = (r3 * 1000)|0; + r1 = (r1 + r3)|0; + r0 = (r1 + r0)|0; + heap32[(r2+10001)] = r0; + r1 = heap32[(r2+10000)]; + r1 = (r1 + 1)|0; + heap32[(r2+10000)] = r1; +if(!(r1 <51)) //_LBB21_10 +{ + r3 = heap32[(r2+10004)]; + r3 = r0 < r3 ? r0 : r3; + heap32[(r2+10004)] = r3; + r4 = heap32[(r2+10005)]; + r4 = r0 > r4 ? r0 : r4; + heap32[(r2+10005)] = r4; + r5 = heap32[(r2+10002)]; + r5 = (r0 + r5)|0; + heap32[(r2+10002)] = r5; + r6 = heap32[(r2+10003)]; + r6 = (r6 + 1)|0; + f0 = r5; //fitos r5, f0 + f1 = r6; //fitos r6, f1 + f0 = f0/f1; + heap32[(r2+10003)] = r6; + r5 = _2E_str7; + r1 = (r1 * 500)|0; + f0 = f0; //fstod f0, f0 + heap32[(g0)] = r5; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r0; + heap32[(g0+3)] = r3; + heap32[(g0+4)] = r4; + llvm_writeDouble((i7+24),f0); + printf(i7); + heap32[(r2+10001)] = 0; + heap32[(r2+10000)] = 0; +} +} + return; +} + +function _ZN13BenchmarkDemo10createWallERK9btVector3iS2_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; +var __label__ = 0; + i7 = sp + -96;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = gNumAlignedAllocs; + r0 = r0 >> 2; + r1 = r1 >> 2; + r2 = heap32[(r1)]; + f0 = heapFloat[(r0+2)]; + f1 = heapFloat[(r0+1)]; + f2 = heapFloat[(r0)]; + r2 = (r2 + 1)|0; + heap32[(r1)] = r2; + heap32[(g0)] = 71; + malloc(i7); + r1 = r_g0; + r2 = heap32[(fp)]; + if(r1 !=0) //_LBB22_2 +{ + r3 = 0; + r4 = (r1 + 4)|0; + r3 = (r3 - r4)|0; + r3 = r3 & 15; + r3 = (r1 + r3)|0; + r4 = (r3 + 4)|0; + r3 = r3 >> 2; + heap32[(r3)] = r1; + r1 = r4; +} + r3 = r1 >> 2; + heap32[(r3+2)] = 0; + heap32[(r3+3)] = 1065353216; + heap32[(r3+4)] = 1065353216; + heap32[(r3+5)] = 1065353216; + r4 = _ZTV10btBoxShape; + heap32[(r3+6)] = 0; + r4 = (r4 + 8)|0; + heap32[(r3+11)] = 1025758986; + heap32[(r3)] = r4; + f3 = -0.039999999105930328; + f2 = f2+f3; + heap32[(r3+1)] = 0; + f1 = f1+f3; + heapFloat[(r3+7)] = f2; + f0 = f0+f3; + heapFloat[(r3+8)] = f1; + heapFloat[(r3+9)] = f0; + r4 = sp + -16; + heap32[(r3+10)] = 0; + r3 = r4 >> 2; + heap32[(fp+-4)] = 0; + heap32[(r3+1)] = 0; + heap32[(r3+2)] = 0; + heap32[(r3+3)] = 0; + heap32[(g0)] = r1; + heap32[(g0+1)] = 1065353216; + heap32[(g0+2)] = r4; + _ZNK10btBoxShape21calculateLocalInertiaEfR9btVector3(i7); + f4 = heapFloat[(r0+1)]; + f0 = heapFloat[(r0+2)]; + r0 = sp + -80; + r3 = r0 >> 2; + heap32[(fp+-20)] = 1065353216; + heap32[(r3+1)] = 0; + heap32[(r3+2)] = 0; + heap32[(r3+3)] = 0; + heap32[(r3+4)] = 0; + heap32[(r3+5)] = 1065353216; + heap32[(r3+6)] = 0; + heap32[(r3+7)] = 0; + heap32[(r3+8)] = 0; + heap32[(r3+9)] = 0; + heap32[(r3+10)] = 1065353216; + heap32[(r3+11)] = 0; + f1 = f0+f0; + f2 = -12; + heap32[(r3+12)] = 0; + heap32[(r3+13)] = 0; + f2 = f1*f2; + f3 = 0.5; + f3 = f2*f3; + f2 = f4+f4; + r5 = 12; + heap32[(r3+14)] = 0; + heap32[(r3+15)] = 0; +_4: while(true){ +if(!(r5 <1)) //_LBB22_4 +{ + r4 = 0; +_8: while(true){ + r6 = r2 >> 2; + f5 = r4; //fitos r4, f5 + f6 = 0; + f7 = heapFloat[(r6)]; + f8 = heapFloat[(r6+2)]; + f9 = heapFloat[(r6+1)]; + f5 = f5*f1; + f6 = f7+f6; + f5 = f5+f3; + f7 = f9+f4; + heapFloat[(r3+12)] = f6; + f5 = f8+f5; + heapFloat[(r3+13)] = f7; + r6 = _ZL14benchmarkDemo4; + heapFloat[(r3+14)] = f5; + r7 = r6 >> 2; + heap32[(r3+15)] = 0; + r7 = heap32[(r7)]; + r7 = r7 >> 2; + r7 = heap32[(r7+2)]; + heap32[(g0)] = r6; + heap32[(g0+1)] = 1065353216; + heap32[(g0+2)] = r0; + heap32[(g0+3)] = r1; + r4 = (r4 + 1)|0; + __FUNCTION_TABLE__[(r7)>>2](i7); + if(r5 !=r4) //_LBB22_3 +{ +continue _8; +} +else{ +break _8; +} +} +} + r5 = (r5 + -1)|0; + f4 = f4+f2; + f3 = f3+f0; + if(r5 ==0) //_LBB22_8 +{ +break _4; +} +else{ +continue _4; +} +} + return; +} + +function _ZN13BenchmarkDemo19createLargeMeshBodyEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; +var __label__ = 0; + i7 = sp + -80;var g0 = i7>>2; // save stack + r0 = sp + -64; + r1 = r0 >> 2; + heap32[(fp+-16)] = 1065353216; + heap32[(r1+1)] = 0; + heap32[(r1+2)] = 0; + heap32[(r1+3)] = 0; + heap32[(r1+4)] = 0; + heap32[(r1+5)] = 1065353216; + heap32[(r1+6)] = 0; + heap32[(r1+7)] = 0; + heap32[(r1+8)] = 0; + heap32[(r1+9)] = 0; + heap32[(r1+10)] = 1065353216; + heap32[(r1+11)] = 0; + heap32[(r1+12)] = 0; + heap32[(r1+13)] = 0; + r2 = 0; + heap32[(r1+14)] = 0; + heap32[(r1+15)] = 0; +_1: while(true){ + r3 = gNumAlignedAllocs; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r5 = (r4 + 1)|0; + heap32[(r3)] = r5; + heap32[(g0)] = 103; + malloc(i7); + r5 = r_g0; + if(r5 !=0) //_LBB23_3 +{ + r6 = 0; + r7 = (r5 + 4)|0; + r6 = (r6 - r7)|0; + r6 = r6 & 15; + r6 = (r5 + r6)|0; + r7 = (r6 + 4)|0; + r6 = r6 >> 2; + heap32[(r6)] = r5; + r5 = r7; +} + r6 = r5 >> 2; + heap32[(r6+1)] = 1065353216; + heap32[(r6+2)] = 1065353216; + r7 = _ZTV26btTriangleIndexVertexArray; + heap32[(r6+3)] = 1065353216; + r7 = (r7 + 8)|0; + heap32[(r6+4)] = 0; + r8 = 1; + heap32[(r6)] = r7; + heap8[r5+36] = r8; + heap32[(r6+8)] = 0; + heap32[(r6+6)] = 0; + r7 = LandscapeVtx; + r9 = r2 << 2; + r10 = LandscapeVtxCount; + r11 = LandscapeIdx; + r12 = LandscapeIdxCount; + r7 = (r7 + r9)|0; + r10 = (r10 + r9)|0; + r11 = (r11 + r9)|0; + r9 = (r12 + r9)|0; + heap32[(r6+7)] = 0; + r7 = r7 >> 2; + heap32[(r6+12)] = 0; + r10 = r10 >> 2; + r11 = r11 >> 2; + r9 = r9 >> 2; + r7 = heap32[(r7)]; + r10 = heap32[(r10)]; + r11 = heap32[(r11)]; + r9 = heap32[(r9)]; + r12 = (r4 + 2)|0; + heap32[(r3)] = r12; + heap32[(g0)] = 51; + malloc(i7); + r12 = r_g0; + r9 = (r9 / 3)|0; + if(r12 !=0) //_LBB23_6 +{ + r13 = 0; + r14 = (r12 + 4)|0; + r13 = (r13 - r14)|0; + r13 = r13 & 15; + r13 = (r12 + r13)|0; + r14 = (r13 + 4)|0; + r13 = r13 >> 2; + heap32[(r13)] = r12; + r12 = r14; +} + heap8[r5+36] = r8; + heap32[(r6+8)] = r12; + heap32[(r6+7)] = 1; + r13 = heap32[(r6+6)]; + r13 = r13 << 5; + r12 = (r12 + r13)|0; + r12 = r12 >> 2; + heap32[(r12)] = r9; + heap32[(r12+1)] = r11; + heap32[(r12+2)] = 6; + heap32[(r12+3)] = r10; + heap32[(r12+4)] = r7; + heap32[(r12+5)] = 12; + heap32[(r12+6)] = 3; + heap32[(r12+7)] = 0; + r7 = heap32[(r6+6)]; + r9 = (r7 + 1)|0; + heap32[(r6+6)] = r9; + r7 = r7 << 5; + r9 = heap32[(r6+8)]; + r7 = (r9 + r7)|0; + r7 = r7 >> 2; + r4 = (r4 + 3)|0; + heap32[(r7+6)] = 3; + heap32[(r3)] = r4; + heap32[(g0)] = 95; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB23_9 +{ + r4 = 0; + r7 = (r3 + 4)|0; + r4 = (r4 - r7)|0; + r4 = r4 & 15; + r4 = (r3 + r4)|0; + r7 = (r4 + 4)|0; + r4 = r4 >> 2; + heap32[(r4)] = r3; + r3 = r7; +} + r4 = r3 >> 2; + r7 = _ZTV19btTriangleMeshShape; + heap32[(r4+2)] = 0; + r7 = (r7 + 8)|0; + heap32[(r4+3)] = 0; + heap32[(r4)] = r7; + heap32[(r4+12)] = r5; + heap32[(r4+1)] = 21; + r7 = heap32[(r6)]; + r7 = r7 >> 2; + r7 = heap32[(r7+10)]; + heap32[(g0)] = r5; + __FUNCTION_TABLE__[(r7)>>2](i7); + r7 = r_g0; + if(r7 ==0) //_LBB23_12 +{ + heap32[(g0)] = r3; + _ZN19btTriangleMeshShape15recalcLocalAabbEv(i7); +} +else{ + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+12)]; + r7 = (r3 + 16)|0; + r9 = (r3 + 32)|0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r9; + __FUNCTION_TABLE__[(r6)>>2](i7); +} + r5 = _ZTV22btBvhTriangleMeshShape; + r5 = (r5 + 8)|0; + heap32[(r4)] = r5; + heap32[(r4+13)] = 0; + heap32[(r4+14)] = 0; + r5 = 0; + heap8[r3+60] = r8; + heap8[r3+61] = r5; + heap32[(r4+1)] = 21; + heap32[(g0)] = r3; + _ZN22btBvhTriangleMeshShape17buildOptimizedBvhEv(i7); + heap32[(r1+12)] = 0; + heap32[(r1+13)] = -1043857408; + r4 = _ZL14benchmarkDemo4; + heap32[(r1+14)] = 0; + r5 = r4 >> 2; + heap32[(r1+15)] = 0; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+2)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = r0; + heap32[(g0+3)] = r3; + __FUNCTION_TABLE__[(r5)>>2](i7); + r2 = (r2 + 1)|0; + r3 = r_g0 >> 2; + heap32[(r3+56)] = 1063675494; + if(r2 !=8) //_LBB23_1 +{ +continue _1; +} +else{ +break _1; +} +} + return; +} + +function _ZN13BenchmarkDemo11createTest6Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; +var __label__ = 0; + i7 = sp + -112;var g0 = i7>>2; // save stack + r0 = gNumAlignedAllocs; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + heap32[(r0)] = r1; + heap32[(g0)] = 127; + malloc(i7); + r0 = r_g0; + if(r0 !=0) //_LBB24_2 +{ + r1 = 0; + r2 = (r0 + 4)|0; + r1 = (r1 - r2)|0; + r1 = r1 & 15; + r1 = (r0 + r1)|0; + r2 = (r1 + 4)|0; + r1 = r1 >> 2; + heap32[(r1)] = r0; + r0 = r2; +} + heap32[(g0)] = r0; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = 0; + r1 = 0; + _ZN17btConvexHullShapeC1EPKfii(i7); +_4: while(true){ + r2 = (r1 * -3)|0; + r3 = _ZL7TaruVtx; + r2 = r2 << 2; + r2 = (r3 + r2)|0; + r3 = sp + -96; + r2 = r2 >> 2; + r4 = r3 >> 2; + heap32[(fp+-24)] = heap32[(r2)]; + heap32[(r4+1)] = heap32[(r2+1)]; + heap32[(r4+2)] = heap32[(r2+2)]; + heap32[(r4+3)] = 0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + r1 = (r1 + -1)|0; + _ZN17btConvexHullShape8addPointERK9btVector3(i7); + if(r1 ==-43) //_LBB24_10 +{ +break _4; +} +else{ +continue _4; +} +} + r1 = sp + -64; + r2 = r1 >> 2; + heap32[(fp+-16)] = 1065353216; + heap32[(r2+1)] = 0; + heap32[(r2+2)] = 0; + heap32[(r2+3)] = 0; + heap32[(r2+4)] = 0; + heap32[(r2+5)] = 1065353216; + heap32[(r2+6)] = 0; + heap32[(r2+7)] = 0; + heap32[(r2+8)] = 0; + heap32[(r2+9)] = 0; + heap32[(r2+10)] = 1065353216; + heap32[(r2+11)] = 0; + heap32[(r2+12)] = 0; + heap32[(r2+13)] = 0; + heap32[(r2+14)] = 0; + r3 = sp + -80; + heap32[(r2+15)] = 0; + r4 = r3 >> 2; + heap32[(fp+-20)] = 0; + heap32[(r4+1)] = 0; + heap32[(r4+2)] = 0; + r5 = r0 >> 2; + heap32[(r4+3)] = 0; + r4 = heap32[(r5)]; + r4 = r4 >> 2; + r4 = heap32[(r4+8)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = 1065353216; + heap32[(g0+2)] = r3; + r3 = 10; + f0 = 20; + f1 = 2; + f2 = -25; + __FUNCTION_TABLE__[(r4)>>2](i7); + r7 = _ZL14benchmarkDemo4; +_7: while(true){ + f3 = 3; + f4 = 25; + f5 = f1+f3; + f4 = f0+f4; + r4 = 0; + r5 = r4; +_9: while(true){ + f6 = r5; //fitos r5, f6 + f6 = f6*f5; + f6 = f6+f2; + f7 = 5; + f6 = f6*f7; + f8 = 0; + f6 = f6+f8; + r6 = r4; +_11: while(true){ + f9 = r6; //fitos r6, f9 + f9 = f9*f5; + f9 = f9+f2; + f9 = f9*f7; + f9 = f9+f8; + heapFloat[(r2+12)] = f9; + heapFloat[(r2+13)] = f4; + heapFloat[(r2+14)] = f6; + r8 = r7 >> 2; + heap32[(r2+15)] = 0; + r8 = heap32[(r8)]; + r8 = r8 >> 2; + r8 = heap32[(r8+2)]; + heap32[(g0)] = r7; + heap32[(g0+1)] = 1065353216; + heap32[(g0+2)] = r1; + heap32[(g0+3)] = r0; + r6 = (r6 + 1)|0; + __FUNCTION_TABLE__[(r8)>>2](i7); + if(r6 !=10) //_LBB24_7 +{ +continue _11; +} +else{ +break _11; +} +} + r5 = (r5 + 1)|0; + if(r5 !=10) //_LBB24_6 +{ +continue _9; +} +else{ +break _9; +} +} + f4 = 1.1000000238418579; + f5 = -0.05000000074505806; + f4 = f1*f4; + f1 = f1*f5; + f5 = 9; + f3 = f4+f3; + f1 = f1*f5; + r3 = (r3 + -1)|0; + f0 = f0+f3; + f2 = f1+f2; + f1 = f4; + if(r3 ==0) //_LBB24_11 +{ +break _7; +} +else{ +continue _7; +} +} + _ZN13BenchmarkDemo19createLargeMeshBodyEv(i7); + return; +} + +function _ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -168;var g0 = i7>>2; // save stack + r0 = sp + -16; + r1 = r0 >> 2; + heap32[(fp+-4)] = 0; + heap32[(r1+1)] = 0; + r2 = heap32[(fp+2)]; + heap32[(r1+2)] = 0; + r3 = r2 >> 2; + heap32[(r1+3)] = 0; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+8)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = 1065353216; + heap32[(g0+2)] = r0; + r0 = _ZGVZN11btTransform11getIdentityEvE17identityTransform; + __FUNCTION_TABLE__[(r3)>>2](i7); + r3 = heapU8[r0]; +if(!(r3 !=0)) //_LBB25_4 +{ + r3 = _ZGVZN11btMatrix3x311getIdentityEvE14identityMatrix; + r4 = heapU8[r3]; +if(!(r4 !=0)) //_LBB25_3 +{ + r4 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_0_2E_0_2E_0; + r5 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_1_2E_0_2E_1; + r4 = r4 >> 2; + r6 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_2_2E_0_2E_2; + r5 = r5 >> 2; + heap32[(r4)] = 1065353216; + r4 = r6 >> 2; + heap32[(r5)] = 1065353216; + r5 = 1; + heap32[(r4)] = 1065353216; + heap8[r3] = r5; +} + r3 = _ZZN11btTransform11getIdentityEvE17identityTransform; + r4 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_0_2E_0_2E_0; + r3 = r3 >> 2; + r4 = r4 >> 2; + heap32[(r3)] = heap32[(r4)]; + heap32[(r3+1)] = 0; + heap32[(r3+2)] = 0; + r4 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_1_2E_0_2E_1; + heap32[(r3+3)] = 0; + r4 = r4 >> 2; + heap32[(r3+4)] = 0; + heap32[(r3+5)] = heap32[(r4)]; + heap32[(r3+6)] = 0; + heap32[(r3+7)] = 0; + r4 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_2_2E_0_2E_2; + heap32[(r3+8)] = 0; + r4 = r4 >> 2; + heap32[(r3+9)] = 0; + heap32[(r3+10)] = heap32[(r4)]; + heap32[(r3+11)] = 0; + heap32[(r3+12)] = 0; + heap32[(r3+13)] = 0; + heap32[(r3+14)] = 0; + r4 = 1; + heap32[(r3+15)] = 0; + heap8[r0] = r4; +} + r0 = heap32[(fp)]; + r3 = heap32[(fp+1)]; + heap32[(g0)] = 200; + r4 = _ZTV20btDefaultMotionState; + _Znwj(i7); + r6 = r_g0 >> 2; + r4 = (r4 + 8)|0; + r3 = r3 >> 2; + heap32[(r6)] = r4; + heap32[(r6+1)] = heap32[(r3)]; + heap32[(r6+2)] = heap32[(r3+1)]; + heap32[(r6+3)] = heap32[(r3+2)]; + heap32[(r6+4)] = heap32[(r3+3)]; + heap32[(r6+5)] = heap32[(r3+4)]; + heap32[(r6+6)] = heap32[(r3+5)]; + heap32[(r6+7)] = heap32[(r3+6)]; + heap32[(r6+8)] = heap32[(r3+7)]; + heap32[(r6+9)] = heap32[(r3+8)]; + heap32[(r6+10)] = heap32[(r3+9)]; + heap32[(r6+11)] = heap32[(r3+10)]; + heap32[(r6+12)] = heap32[(r3+11)]; + heap32[(r6+13)] = heap32[(r3+12)]; + heap32[(r6+14)] = heap32[(r3+13)]; + r4 = _ZZN11btTransform11getIdentityEvE17identityTransform; + heap32[(r6+15)] = heap32[(r3+14)]; + r4 = r4 >> 2; + heap32[(r6+16)] = heap32[(r3+15)]; + heap32[(r6+17)] = heap32[(r4)]; + heap32[(r6+18)] = heap32[(r4+1)]; + heap32[(r6+19)] = heap32[(r4+2)]; + heap32[(r6+20)] = heap32[(r4+3)]; + heap32[(r6+21)] = heap32[(r4+4)]; + heap32[(r6+22)] = heap32[(r4+5)]; + heap32[(r6+23)] = heap32[(r4+6)]; + heap32[(r6+24)] = heap32[(r4+7)]; + heap32[(r6+25)] = heap32[(r4+8)]; + heap32[(r6+26)] = heap32[(r4+9)]; + heap32[(r6+27)] = heap32[(r4+10)]; + heap32[(r6+28)] = heap32[(r4+11)]; + heap32[(r6+29)] = heap32[(r4+12)]; + heap32[(r6+30)] = heap32[(r4+13)]; + heap32[(r6+31)] = heap32[(r4+14)]; + heap32[(r6+32)] = heap32[(r4+15)]; + heap32[(r6+33)] = heap32[(r3)]; + heap32[(r6+34)] = heap32[(r3+1)]; + heap32[(r6+35)] = heap32[(r3+2)]; + heap32[(r6+36)] = heap32[(r3+3)]; + heap32[(r6+37)] = heap32[(r3+4)]; + heap32[(r6+38)] = heap32[(r3+5)]; + heap32[(r6+39)] = heap32[(r3+6)]; + heap32[(r6+40)] = heap32[(r3+7)]; + heap32[(r6+41)] = heap32[(r3+8)]; + heap32[(r6+42)] = heap32[(r3+9)]; + heap32[(r6+43)] = heap32[(r3+10)]; + heap32[(r6+44)] = heap32[(r3+11)]; + heap32[(r6+45)] = heap32[(r3+12)]; + heap32[(r6+46)] = heap32[(r3+13)]; + heap32[(r6+47)] = heap32[(r3+14)]; + heap32[(r6+48)] = heap32[(r3+15)]; + r3 = sp + -152; + heap32[(r6+49)] = 0; + r4 = r3 >> 2; + heap32[(fp+-38)] = 1065353216; + heap32[(r4+1)] = r_g0; + heap32[(r4+18)] = r2; + heap32[(r4+19)] = heap32[(fp+-4)]; + heap32[(r4+20)] = heap32[(r1+1)]; + heap32[(r4+21)] = heap32[(r1+2)]; + heap32[(r4+22)] = heap32[(r1+3)]; + heap32[(r4+23)] = 0; + heap32[(r4+24)] = 0; + heap32[(r4+25)] = 1056964608; + heap32[(r4+26)] = 0; + heap32[(r4+27)] = 1061997773; + r1 = 0; + heap32[(r4+28)] = 1065353216; + heap8[sp+-36] = r1; + heap32[(r4+30)] = 1000593162; + heap32[(r4+31)] = 1008981770; + heap32[(r4+32)] = 1008981770; + heap32[(r4+33)] = 1008981770; + heap32[(r4+2)] = 1065353216; + heap32[(r4+3)] = 0; + heap32[(r4+4)] = 0; + heap32[(r4+5)] = 0; + heap32[(r4+6)] = 0; + heap32[(r4+7)] = 1065353216; + heap32[(r4+8)] = 0; + heap32[(r4+9)] = 0; + heap32[(r4+10)] = 0; + heap32[(r4+11)] = 0; + heap32[(r4+12)] = 1065353216; + heap32[(r4+13)] = 0; + heap32[(r4+14)] = 0; + heap32[(r4+15)] = 0; + r2 = gNumAlignedAllocs; + heap32[(r4+16)] = 0; + r2 = r2 >> 2; + heap32[(r4+17)] = 0; + r4 = heap32[(r2)]; + r4 = (r4 + 1)|0; + heap32[(r2)] = r4; + heap32[(g0)] = 627; + malloc(i7); + r2 = r_g0; + if(r2 !=0) //_LBB25_6 +{ + r4 = (r2 + 4)|0; + r1 = (r1 - r4)|0; + r1 = r1 & 15; + r1 = (r2 + r1)|0; + r4 = (r1 + 4)|0; + r1 = r1 >> 2; + heap32[(r1)] = r2; + r2 = r4; +} + r1 = r2 >> 2; + heap32[(r1+41)] = 1065353216; + heap32[(r1+42)] = 1065353216; + heap32[(r1+43)] = 1065353216; + heap32[(r1+44)] = 0; + heap32[(r1+45)] = 0; + heap32[(r1+46)] = 1566444395; + heap32[(r1+47)] = 0; + heap32[(r1+48)] = 0; + heap32[(r1+49)] = 0; + heap32[(r1+50)] = 0; + heap32[(r1+51)] = 1; + heap32[(r1+52)] = -1; + heap32[(r1+53)] = -1; + heap32[(r1+54)] = 1; + heap32[(r1+55)] = 0; + heap32[(r1+56)] = 1056964608; + heap32[(r1+57)] = 0; + heap32[(r1+58)] = 1; + heap32[(r1+59)] = 0; + heap32[(r1+60)] = 1065353216; + heap32[(r1+61)] = 0; + heap32[(r1+62)] = 0; + heap32[(r1+63)] = 0; + heap32[(r1+1)] = 1065353216; + heap32[(r1+2)] = 0; + heap32[(r1+3)] = 0; + heap32[(r1+4)] = 0; + heap32[(r1+5)] = 0; + heap32[(r1+6)] = 1065353216; + heap32[(r1+7)] = 0; + heap32[(r1+8)] = 0; + heap32[(r1+9)] = 0; + heap32[(r1+10)] = 0; + heap32[(r1+11)] = 1065353216; + heap32[(r1+12)] = 0; + heap32[(r1+13)] = 0; + heap32[(r1+14)] = 0; + r4 = _ZTV11btRigidBody; + heap32[(r1+15)] = 0; + r4 = (r4 + 8)|0; + heap32[(r1+16)] = 0; + r5 = 1; + heap32[(r1)] = r4; + heap8[r2+492] = r5; + heap32[(r1+122)] = 0; + heap32[(r1+120)] = 0; + heap32[(r1+121)] = 0; + heap32[(g0)] = r2; + heap32[(g0+1)] = r3; + _ZN11btRigidBody14setupRigidBodyERKNS_27btRigidBodyConstructionInfoE(i7); + r0 = r0 >> 2; + r0 = heap32[(r0+1)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+20)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + __FUNCTION_TABLE__[(r1)>>2](i7); + r_g0 = r2; + return; +} + +function _ZN13BenchmarkDemo11initPhysicsEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; +var __label__ = 0; + i7 = sp + -41432;var g0 = i7>>2; // save stack + heap32[(g0)] = 88; + _Znwj(i7); + r0 = r_g0; + r1 = _ZTV31btDefaultCollisionConfiguration; + r2 = gNumAlignedAllocs; + r3 = r0 >> 2; + r1 = (r1 + 8)|0; + r2 = r2 >> 2; + heap32[(r3)] = r1; + r1 = heap32[(r2)]; + r3 = (r1 + 1)|0; + heap32[(r2)] = r3; + heap32[(g0)] = 379; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB26_2 +{ + r4 = 0; + r5 = (r3 + 4)|0; + r4 = (r4 - r5)|0; + r4 = r4 & 15; + r4 = (r3 + r4)|0; + r5 = (r4 + 4)|0; + r4 = r4 >> 2; + heap32[(r4)] = r3; + r3 = r5; +} + r4 = r3 >> 2; + heap32[(r4+77)] = 953267991; + r4 = heapU8[r3+332]; + r4 = r4 & 240; + r5 = r0 >> 2; + heap8[r3+332] = r4; + r4 = (r1 + 2)|0; + heap32[(r5+8)] = r3; + heap32[(r2)] = r4; + heap32[(g0)] = 23; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB26_5 +{ + r4 = 0; + r6 = (r3 + 4)|0; + r4 = (r4 - r6)|0; + r4 = r4 & 15; + r4 = (r3 + r4)|0; + r6 = (r4 + 4)|0; + r4 = r4 >> 2; + heap32[(r4)] = r3; + r3 = r6; +} + r4 = _ZTV30btGjkEpaPenetrationDepthSolver; + r6 = r3 >> 2; + r4 = (r4 + 8)|0; + heap32[(r6)] = r4; + r4 = (r1 + 3)|0; + heap32[(r5+9)] = r3; + heap32[(r2)] = r4; + heap32[(g0)] = 43; + malloc(i7); + r4 = r_g0; + if(r4 !=0) //_LBB26_8 +{ + r3 = 0; + r6 = (r4 + 4)|0; + r3 = (r3 - r6)|0; + r3 = r3 & 15; + r3 = (r4 + r3)|0; + r6 = r3 >> 2; + heap32[(r6)] = r4; + r4 = (r3 + 4)|0; + r3 = heap32[(r5+9)]; +} + r6 = _ZTVN23btConvexConvexAlgorithm10CreateFuncE; + r7 = heap32[(r5+8)]; + r8 = 0; + r9 = r4 >> 2; + r6 = (r6 + 8)|0; + heap8[r4+4] = r8; + heap32[(r9)] = r6; + heap32[(r9+4)] = 0; + heap32[(r9+5)] = 3; + heap32[(r9+3)] = r7; + heap32[(r9+2)] = r3; + r3 = (r1 + 4)|0; + heap32[(r5+10)] = r4; + heap32[(r2)] = r3; + heap32[(g0)] = 27; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB26_11 +{ + r4 = (r3 + 4)|0; + r4 = (r8 - r4)|0; + r4 = r4 & 15; + r4 = (r3 + r4)|0; + r6 = (r4 + 4)|0; + r4 = r4 >> 2; + heap32[(r4)] = r3; + r3 = r6; +} + r4 = _ZTVN33btConvexConcaveCollisionAlgorithm10CreateFuncE; + r6 = r3 >> 2; + r4 = (r4 + 8)|0; + heap8[r3+4] = r8; + heap32[(r6)] = r4; + r4 = (r1 + 5)|0; + heap32[(r5+11)] = r3; + heap32[(r2)] = r4; + heap32[(g0)] = 27; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB26_14 +{ + r4 = (r3 + 4)|0; + r4 = (r8 - r4)|0; + r4 = r4 & 15; + r4 = (r3 + r4)|0; + r6 = (r4 + 4)|0; + r4 = r4 >> 2; + heap32[(r4)] = r3; + r3 = r6; +} + r4 = _ZTVN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE; + r6 = r3 >> 2; + r4 = (r4 + 8)|0; + heap8[r3+4] = r8; + heap32[(r6)] = r4; + r4 = (r1 + 6)|0; + heap32[(r5+12)] = r3; + heap32[(r2)] = r4; + heap32[(g0)] = 27; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB26_17 +{ + r4 = (r3 + 4)|0; + r4 = (r8 - r4)|0; + r4 = r4 & 15; + r4 = (r3 + r4)|0; + r6 = (r4 + 4)|0; + r4 = r4 >> 2; + heap32[(r4)] = r3; + r3 = r6; +} + r4 = _ZTVN28btCompoundCollisionAlgorithm10CreateFuncE; + r6 = r3 >> 2; + r4 = (r4 + 8)|0; + heap8[r3+4] = r8; + heap32[(r6)] = r4; + r4 = (r1 + 7)|0; + heap32[(r5+13)] = r3; + heap32[(r2)] = r4; + heap32[(g0)] = 27; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB26_20 +{ + r4 = (r3 + 4)|0; + r4 = (r8 - r4)|0; + r4 = r4 & 15; + r4 = (r3 + r4)|0; + r6 = (r4 + 4)|0; + r4 = r4 >> 2; + heap32[(r4)] = r3; + r3 = r6; +} + r4 = _ZTVN28btCompoundCollisionAlgorithm17SwappedCreateFuncE; + r6 = r3 >> 2; + r4 = (r4 + 8)|0; + heap8[r3+4] = r8; + heap32[(r6)] = r4; + r4 = (r1 + 8)|0; + heap32[(r5+14)] = r3; + heap32[(r2)] = r4; + heap32[(g0)] = 27; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB26_23 +{ + r4 = (r3 + 4)|0; + r4 = (r8 - r4)|0; + r4 = r4 & 15; + r4 = (r3 + r4)|0; + r6 = (r4 + 4)|0; + r4 = r4 >> 2; + heap32[(r4)] = r3; + r3 = r6; +} + r4 = _ZTVN16btEmptyAlgorithm10CreateFuncE; + r6 = r3 >> 2; + r4 = (r4 + 8)|0; + heap8[r3+4] = r8; + heap32[(r6)] = r4; + r4 = (r1 + 9)|0; + heap32[(r5+15)] = r3; + heap32[(r2)] = r4; + heap32[(g0)] = 27; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB26_26 +{ + r4 = (r3 + 4)|0; + r4 = (r8 - r4)|0; + r4 = r4 & 15; + r4 = (r3 + r4)|0; + r6 = (r4 + 4)|0; + r4 = r4 >> 2; + heap32[(r4)] = r3; + r3 = r6; +} + r4 = _ZTVN32btSphereSphereCollisionAlgorithm10CreateFuncE; + r6 = r3 >> 2; + r4 = (r4 + 8)|0; + heap8[r3+4] = r8; + heap32[(r6)] = r4; + r4 = (r1 + 10)|0; + heap32[(r5+16)] = r3; + heap32[(r2)] = r4; + heap32[(g0)] = 27; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB26_29 +{ + r4 = (r3 + 4)|0; + r4 = (r8 - r4)|0; + r4 = r4 & 15; + r4 = (r3 + r4)|0; + r6 = (r4 + 4)|0; + r4 = r4 >> 2; + heap32[(r4)] = r3; + r3 = r6; +} + r4 = _ZTVN34btSphereTriangleCollisionAlgorithm10CreateFuncE; + r6 = r3 >> 2; + r4 = (r4 + 8)|0; + heap8[r3+4] = r8; + heap32[(r6)] = r4; + r6 = (r1 + 11)|0; + heap32[(r5+18)] = r3; + heap32[(r2)] = r6; + heap32[(g0)] = 27; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB26_32 +{ + r6 = (r3 + 4)|0; + r6 = (r8 - r6)|0; + r6 = r6 & 15; + r6 = (r3 + r6)|0; + r7 = (r6 + 4)|0; + r6 = r6 >> 2; + heap32[(r6)] = r3; + r3 = r7; +} + r6 = r3 >> 2; + heap8[r3+4] = r8; + heap32[(r6)] = r4; + r4 = 1; + heap32[(r5+19)] = r3; + r6 = (r1 + 12)|0; + heap8[r3+4] = r4; + heap32[(r2)] = r6; + heap32[(g0)] = 27; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB26_35 +{ + r6 = (r3 + 4)|0; + r6 = (r8 - r6)|0; + r6 = r6 & 15; + r6 = (r3 + r6)|0; + r7 = (r6 + 4)|0; + r6 = r6 >> 2; + heap32[(r6)] = r3; + r3 = r7; +} + r6 = _ZTVN26btBoxBoxCollisionAlgorithm10CreateFuncE; + r7 = r3 >> 2; + r6 = (r6 + 8)|0; + heap8[r3+4] = r8; + heap32[(r7)] = r6; + r6 = (r1 + 13)|0; + heap32[(r5+17)] = r3; + heap32[(r2)] = r6; + heap32[(g0)] = 35; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB26_38 +{ + r6 = (r3 + 4)|0; + r6 = (r8 - r6)|0; + r6 = r6 & 15; + r6 = (r3 + r6)|0; + r7 = (r6 + 4)|0; + r6 = r6 >> 2; + heap32[(r6)] = r3; + r3 = r7; +} + r6 = _ZTVN31btConvexPlaneCollisionAlgorithm10CreateFuncE; + r7 = r3 >> 2; + r6 = (r6 + 8)|0; + heap8[r3+4] = r8; + heap32[(r7)] = r6; + heap32[(r7+2)] = 1; + heap32[(r7+3)] = 1; + r7 = (r1 + 14)|0; + heap32[(r5+21)] = r3; + heap32[(r2)] = r7; + heap32[(g0)] = 35; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB26_41 +{ + r7 = (r3 + 4)|0; + r7 = (r8 - r7)|0; + r7 = r7 & 15; + r7 = (r3 + r7)|0; + r9 = (r7 + 4)|0; + r7 = r7 >> 2; + heap32[(r7)] = r3; + r3 = r9; +} + r7 = r3 >> 2; + heap8[r3+4] = r8; + heap32[(r7)] = r6; + heap32[(r7+2)] = 1; + heap32[(r7+3)] = 1; + heap32[(r5+20)] = r3; + heap8[r3+4] = r4; + r3 = (r1 + 15)|0; + heap8[r0+12] = r4; + heap32[(r2)] = r3; + heap32[(g0)] = 39; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB26_44 +{ + r6 = (r3 + 4)|0; + r6 = (r8 - r6)|0; + r6 = r6 & 15; + r6 = (r3 + r6)|0; + r7 = (r6 + 4)|0; + r6 = r6 >> 2; + heap32[(r6)] = r3; + r3 = r7; +} + r6 = r3 >> 2; + heap32[(r6+1)] = 0; + heap32[(r6+3)] = 0; + heap8[r3+16] = r8; + heap32[(r6)] = 0; + r7 = (r1 + 16)|0; + heap32[(r6+2)] = 0; + heap32[(r2)] = r7; + heap32[(g0)] = 19; + malloc(i7); + r7 = r_g0; + if(r7 !=0) //_LBB26_47 +{ + r9 = (r7 + 4)|0; + r9 = (r8 - r9)|0; + r9 = r9 & 15; + r9 = (r7 + r9)|0; + r10 = (r9 + 4)|0; + r9 = r9 >> 2; + heap32[(r9)] = r7; + r7 = r10; +} + heap32[(r6)] = r7; + heap32[(r6+1)] = 0; + heap32[(r5+2)] = r3; + r3 = (r1 + 17)|0; + heap8[r0+20] = r4; + heap32[(r2)] = r3; + heap32[(g0)] = 39; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB26_50 +{ + r6 = (r3 + 4)|0; + r6 = (r8 - r6)|0; + r6 = r6 & 15; + r6 = (r3 + r6)|0; + r7 = (r6 + 4)|0; + r6 = r6 >> 2; + heap32[(r6)] = r3; + r3 = r7; +} + r6 = r3 >> 2; + heap32[(r6)] = 1140; + r7 = (r1 + 18)|0; + heap32[(r6+1)] = 4096; + heap32[(r2)] = r7; + heap32[(g0)] = 4669459; + malloc(i7); + r7 = r_g0; + if(r7 !=0) //_LBB26_53 +{ + r9 = (r7 + 4)|0; + r9 = (r8 - r9)|0; + r9 = r9 & 15; + r9 = (r7 + r9)|0; + r10 = (r9 + 4)|0; + r9 = r9 >> 2; + heap32[(r9)] = r7; + r7 = r10; +} + heap32[(r6+4)] = r7; + r9 = 4095; + r10 = 1140; + heap32[(r6+3)] = r7; + heap32[(r6+2)] = 4096; + r11 = r7; +_55: while(true){ + r7 = r7 >> 2; + r10 = (r11 + r10)|0; + heap32[(r7)] = r10; + r10 = heap32[(r6)]; + r7 = (r11 + r10)|0; + r9 = (r9 + -1)|0; + r11 = r7; + if(r9 !=0) //_LBB26_55 +{ +continue _55; +} +else{ +break _55; +} +} + r6 = r7 >> 2; + heap32[(r6)] = 0; + heap32[(r5+4)] = r3; + r3 = (r1 + 19)|0; + heap8[r0+28] = r4; + heap32[(r2)] = r3; + heap32[(g0)] = 39; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB26_58 +{ + r6 = (r3 + 4)|0; + r6 = (r8 - r6)|0; + r6 = r6 & 15; + r6 = (r3 + r6)|0; + r7 = (r6 + 4)|0; + r6 = r6 >> 2; + heap32[(r6)] = r3; + r3 = r7; +} + r6 = r3 >> 2; + heap32[(r6)] = 80; + r1 = (r1 + 20)|0; + heap32[(r6+1)] = 4096; + heap32[(r2)] = r1; + heap32[(g0)] = 327699; + malloc(i7); + r1 = r_g0; + if(r1 !=0) //_LBB26_61 +{ + r7 = (r1 + 4)|0; + r7 = (r8 - r7)|0; + r7 = r7 & 15; + r7 = (r1 + r7)|0; + r9 = (r7 + 4)|0; + r7 = r7 >> 2; + heap32[(r7)] = r1; + r1 = r9; +} + heap32[(r6+4)] = r1; + r7 = 4095; + r9 = 80; + heap32[(r6+3)] = r1; + heap32[(r6+2)] = 4096; + r10 = r1; +_64: while(true){ + r1 = r1 >> 2; + r9 = (r10 + r9)|0; + heap32[(r1)] = r9; + r9 = heap32[(r6)]; + r1 = (r10 + r9)|0; + r7 = (r7 + -1)|0; + r10 = r1; + if(r7 !=0) //_LBB26_63 +{ +continue _64; +} +else{ +break _64; +} +} + r1 = r1 >> 2; + r6 = _ZL14benchmarkDemo4; + heap32[(r1)] = 0; + r1 = r6 >> 2; + heap32[(r5+6)] = r3; + heap32[(r1+16)] = r0; + heap32[(g0)] = 5388; + _Znwj(i7); + r0 = r_g0; + r3 = _ZTV21btCollisionDispatcher; + r5 = heap32[(r1+16)]; + r3 = (r3 + 8)|0; + r7 = r0 >> 2; + heap32[(r7)] = r3; + heap32[(r7+1)] = 2; + heap8[r0+24] = r4; + heap32[(r7+5)] = 0; + r3 = _ZTV16btManifoldResult; + heap32[(r7+3)] = 0; + r3 = (r3 + 8)|0; + heap32[(r7+4)] = 0; + heap32[(r7+7)] = r3; + r3 = _ZN21btCollisionDispatcher19defaultNearCallbackER16btBroadphasePairRS_RK16btDispatcherInfo__index__; + heap32[(r7+1346)] = r5; + heap32[(r7+47)] = r3; + r3 = r5 >> 2; + r9 = heap32[(r3)]; + r9 = r9 >> 2; + r9 = heap32[(r9+3)]; + heap32[(g0)] = r5; + __FUNCTION_TABLE__[(r9)>>2](i7); + heap32[(r7+48)] = r_g0; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+2)]; + heap32[(g0)] = r5; + __FUNCTION_TABLE__[(r3)>>2](i7); + r5 = (r0 + 200)|0; + heap32[(r7+49)] = r_g0; +_67: while(true){ + if(r8 >35) //_LBB26_72 +{ +__label__ = 52; +break _67; +} +else{ + r3 = 0; +_70: while(true){ + if(r3 <36) //_LBB26_65 +{ + r7 = r0 >> 2; + r7 = heap32[(r7+1346)]; + r9 = r7 >> 2; + r9 = heap32[(r9)]; + r9 = r9 >> 2; + r9 = heap32[(r9+5)]; + r10 = r3 << 2; + heap32[(g0)] = r7; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r3; + r7 = (r5 + r10)|0; + r7 = r7 >> 2; + __FUNCTION_TABLE__[(r9)>>2](i7); + r9 = r_g0; + heap32[(r7)] = r9; + if(r9 !=0) //_LBB26_67 +{ + r3 = (r3 + 1)|0; +} +else{ +__label__ = 46; +break _67; +} +} +else{ +break _70; +} +} + r8 = (r8 + 1)|0; + r5 = (r5 + 144)|0; +continue _67; +} +} +switch(__label__ ){//multiple entries +case 52: + heap32[(r1+14)] = r0; + heap32[(g0)] = 76; + _Znwj(i7); + r0 = r_g0; + heap32[(g0)] = r0; + _ZN28btHashedOverlappingPairCacheC1Ev(i7); + r3 = heap32[(r2)]; + r5 = (r3 + 1)|0; + heap32[(r2)] = r5; + heap32[(g0)] = 135; + malloc(i7); + r7 = r_g0; + if(r7 !=0) //_LBB26_74 +{ + r8 = 0; + r9 = (r7 + 4)|0; + r8 = (r8 - r9)|0; + r8 = r8 & 15; + r8 = (r7 + r8)|0; + r9 = (r8 + 4)|0; + r8 = r8 >> 2; + heap32[(r8)] = r7; + r7 = r9; +} + r8 = _ZTV20btAxisSweep3InternalItE; + r9 = r7 >> 2; + r8 = (r8 + 8)|0; + r10 = -2; + heap32[(r9)] = r8; + r8 = -1; + heap16[(r7+4)>>1] = r10; + heap16[(r7+6)>>1] = r8; + heap32[(r9+23)] = r0; + r8 = 0; + heap32[(r9+24)] = 0; + heap8[r7+100] = r8; + heap32[(r9+26)] = 0; + heap32[(r9+27)] = 0; + if(r0 ==0) //_LBB26_77 +{ + r5 = (r3 + 2)|0; + heap32[(r2)] = r5; + heap32[(g0)] = 95; + malloc(i7); + r5 = r_g0; + if(r5 !=0) //_LBB26_79 +{ + r0 = 0; + r3 = (r5 + 4)|0; + r0 = (r0 - r3)|0; + r0 = r0 & 15; + r0 = (r5 + r0)|0; + r3 = (r0 + 4)|0; + r0 = r0 >> 2; + heap32[(r0)] = r5; + r5 = r3; +} + heap32[(g0)] = r5; + _ZN28btHashedOverlappingPairCacheC1Ev(i7); + heap32[(r9+23)] = r5; + heap8[r7+100] = r4; + r5 = heap32[(r2)]; +} + r0 = (r5 + 1)|0; + heap32[(r2)] = r0; + heap32[(g0)] = 43; + malloc(i7); + r0 = r_g0; + if(r0 !=0) //_LBB26_83 +{ + r3 = (r0 + 4)|0; + r3 = (r8 - r3)|0; + r3 = r3 & 15; + r3 = (r0 + r3)|0; + r10 = (r3 + 4)|0; + r3 = r3 >> 2; + heap32[(r3)] = r0; + r0 = r10; +} + r3 = _ZTV15btNullPairCache; + r10 = r0 >> 2; + r3 = (r3 + 8)|0; + heap32[(r10)] = r3; + heap8[r0+20] = r4; + heap32[(r10+4)] = 0; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 0; + r3 = (r5 + 2)|0; + heap32[(r9+28)] = r0; + heap32[(r2)] = r3; + heap32[(g0)] = 175; + malloc(i7); + r10 = r_g0; + if(r10 !=0) //_LBB26_86 +{ + r11 = (r10 + 4)|0; + r11 = (r8 - r11)|0; + r11 = r11 & 15; + r11 = (r10 + r11)|0; + r12 = (r11 + 4)|0; + r11 = r11 >> 2; + heap32[(r11)] = r10; + r10 = r12; +} + r11 = _ZTV16btDbvtBroadphase; + r12 = r10 >> 2; + r11 = (r11 + 8)|0; + heap32[(r12)] = r11; +_92: while(true){ + r11 = (r10 + r8)|0; + r13 = r11 >> 2; + heap8[r11+40] = r4; + heap32[(r13+9)] = 0; + heap32[(r13+7)] = 0; + heap32[(r13+8)] = 0; + heap32[(r13+1)] = 0; + heap32[(r13+2)] = 0; + heap32[(r13+3)] = -1; + r8 = (r8 + 40)|0; + heap32[(r13+4)] = 0; + heap32[(r13+5)] = 0; + if(r8 !=80) //_LBB26_88 +{ +continue _92; +} +else{ +break _92; +} +} + r8 = 0; + r11 = r0 == r8; + heap8[r10+153] = r8; + r11 = r11 & 1; + heap8[r10+154] = r4; + heap8[r10+152] = r11; + heap32[(r12+25)] = 0; + heap32[(r12+26)] = 0; + heap32[(r12+31)] = 0; + heap32[(r12+27)] = 1; + heap32[(r12+28)] = 0; + heap32[(r12+29)] = 10; + heap32[(r12+30)] = 1; + heap32[(r12+32)] = 0; + heap32[(r12+33)] = 0; + heap32[(r12+34)] = 0; + if(r0 ==0) //_LBB26_91 +{ + r0 = (r5 + 3)|0; + heap32[(r2)] = r0; + heap32[(g0)] = 95; + malloc(i7); + r0 = r_g0; + if(r0 !=0) //_LBB26_93 +{ + r3 = 0; + r5 = (r0 + 4)|0; + r3 = (r3 - r5)|0; + r3 = r3 & 15; + r3 = (r0 + r3)|0; + r5 = (r3 + 4)|0; + r3 = r3 >> 2; + heap32[(r3)] = r0; + r0 = r5; +} + heap32[(g0)] = r0; + _ZN28btHashedOverlappingPairCacheC1Ev(i7); + r3 = heap32[(r2)]; +} + heap32[(r12+24)] = r0; + heap32[(r12+37)] = 0; + heap32[(r12+35)] = 0; + heap32[(r12+36)] = 0; + heap32[(r12+21)] = 0; + heap32[(r12+22)] = 0; + heap32[(r12+23)] = 0; + heap32[(r9+27)] = r10; + heap8[r10+153] = r4; + heap32[(r9+2)] = -998637568; + heap32[(r9+3)] = -998637568; + heap32[(r9+4)] = -998637568; + heap32[(r9+5)] = 0; + heap32[(r9+6)] = 1148846080; + heap32[(r9+7)] = 1148846080; + heap32[(r9+8)] = 1148846080; + heap32[(r9+9)] = 0; + r0 = heapU16[(r7+6)>>1]; + f0 = uint(r0); //fuitos r0, f0 + f1 = 2000; + f0 = f0/f1; + heapFloat[(r9+10)] = f0; + heapFloat[(r9+11)] = f0; + heapFloat[(r9+12)] = f0; + r0 = (r3 + 1)|0; + heap32[(r9+13)] = 0; + heap32[(r2)] = r0; + heap32[(g0)] = 224083; + malloc(i7); + r0 = r_g0; + if(r0 !=0) //_LBB26_97 +{ + r5 = (r0 + 4)|0; + r5 = (r8 - r5)|0; + r5 = r5 & 15; + r5 = (r0 + r5)|0; + r10 = (r5 + 4)|0; + r5 = r5 >> 2; + heap32[(r5)] = r0; + r0 = r10; +} +_103: while(true){ + r5 = r8 << 6; + r5 = (r0 - r5)|0; + r5 = r5 >> 2; + r8 = (r8 + -1)|0; + heap32[(r5)] = 0; + heap32[(r5+2)] = 0; + if(r8 !=-3501) //_LBB26_98 +{ +continue _103; +} +else{ +break _103; +} +} + r5 = 3501; + heap32[(r9+15)] = r0; + r8 = 0; + heap16[(r7+58)>>1] = r5; + r5 = -112; + r10 = 2; + heap16[(r7+56)>>1] = r8; + heap16[(r7+64)>>1] = r4; +_106: while(true){ + r0 = (r0 - r5)|0; + heap16[(r0)>>1] = r10; + r5 = (r5 + -64)|0; + r0 = heap32[(r9+15)]; + r10 = (r10 + 1)|0; + if(r5 !=-224112) //_LBB26_100 +{ +continue _106; +} +else{ +break _106; +} +} + r3 = (r3 + 2)|0; + heap16[(r0+224048)>>1] = r8; +_109: while(true){ + r0 = (r3 + r8)|0; + heap32[(r2)] = r0; + heap32[(g0)] = 28027; + malloc(i7); + r0 = r_g0; + if(r0 !=0) //_LBB26_104 +{ + r5 = 0; + r10 = (r0 + 4)|0; + r5 = (r5 - r10)|0; + r5 = r5 & 15; + r5 = (r0 + r5)|0; + r10 = (r5 + 4)|0; + r5 = r5 >> 2; + heap32[(r5)] = r0; + r0 = r10; +} + r5 = r8 << 2; + r5 = (r7 + r5)|0; + r5 = r5 >> 2; + r8 = (r8 + 1)|0; + heap32[(r5+20)] = r0; + heap32[(r5+17)] = r0; + if(r8 !=3) //_LBB26_102 +{ +continue _109; +} +else{ +break _109; +} +} + r0 = heap32[(r9+15)]; + r0 = r0 >> 2; + heap32[(r0)] = 0; + r0 = heap32[(r9+15)]; + r3 = 0; + heap16[(r0+48)>>1] = r3; + r0 = heap32[(r9+15)]; + heap16[(r0+54)>>1] = r4; + r0 = heap32[(r9+17)]; + heap16[(r0)>>1] = r3; + r0 = heap32[(r9+17)]; + heap16[(r0+2)>>1] = r3; + r0 = heap32[(r9+17)]; + r5 = heapU16[(r7+6)>>1]; + heap16[(r0+4)>>1] = r5; + r0 = heap32[(r9+17)]; + heap16[(r0+6)>>1] = r3; + r0 = heap32[(r9+15)]; + heap16[(r0+50)>>1] = r3; + r0 = heap32[(r9+15)]; + heap16[(r0+56)>>1] = r4; + r0 = heap32[(r9+18)]; + heap16[(r0)>>1] = r3; + r0 = heap32[(r9+18)]; + heap16[(r0+2)>>1] = r3; + r0 = heap32[(r9+18)]; + r5 = heapU16[(r7+6)>>1]; + heap16[(r0+4)>>1] = r5; + r0 = heap32[(r9+18)]; + heap16[(r0+6)>>1] = r3; + r0 = heap32[(r9+15)]; + heap16[(r0+52)>>1] = r3; + r0 = heap32[(r9+15)]; + heap16[(r0+58)>>1] = r4; + r0 = heap32[(r9+19)]; + heap16[(r0)>>1] = r3; + r0 = heap32[(r9+19)]; + heap16[(r0+2)>>1] = r3; + r0 = heap32[(r9+19)]; + r5 = heapU16[(r7+6)>>1]; + heap16[(r0+4)>>1] = r5; + r0 = heap32[(r9+19)]; + r5 = _ZTV12btAxisSweep3; + r5 = (r5 + 8)|0; + heap16[(r0+6)>>1] = r3; + heap32[(r9)] = r5; + heap32[(r1+13)] = r7; + heap32[(g0)] = 128; + r0 = _ZTV35btSequentialImpulseConstraintSolver; + _Znwj(i7); + r7 = r_g0 >> 2; + r0 = (r0 + 8)|0; + heap32[(r7)] = r0; + heap8[r_g0+20] = r4; + heap32[(r7+4)] = 0; + heap32[(r7+2)] = 0; + heap32[(r7+3)] = 0; + heap8[r_g0+40] = r4; + heap32[(r7+9)] = 0; + heap32[(r7+7)] = 0; + heap32[(r7+8)] = 0; + heap8[r_g0+60] = r4; + heap32[(r7+14)] = 0; + heap32[(r7+12)] = 0; + heap32[(r7+13)] = 0; + heap8[r_g0+80] = r4; + heap32[(r7+19)] = 0; + heap32[(r7+17)] = 0; + heap32[(r7+18)] = 0; + heap8[r_g0+100] = r4; + heap32[(r7+24)] = 0; + heap32[(r7+22)] = 0; + heap32[(r7+23)] = 0; + heap8[r_g0+120] = r4; + heap32[(r7+29)] = 0; + heap32[(r7+27)] = 0; + heap32[(r7+28)] = 0; + heap32[(r7+31)] = 0; + heap32[(r1+15)] = r_g0; + heap32[(g0)] = 272; + _Znwj(i7); + r5 = r_g0; + r7 = heap32[(r1+16)]; + r8 = _ZTV16btCollisionWorld; + r9 = heap32[(r1+15)]; + r10 = heap32[(r1+13)]; + r11 = heap32[(r1+14)]; + r8 = (r8 + 8)|0; + r12 = r5 >> 2; + heap32[(r12)] = r8; + heap8[r5+20] = r4; + heap32[(r12+4)] = 0; + heap32[(r12+2)] = 0; + heap32[(r12+3)] = 0; + heap32[(r12+6)] = r11; + heap32[(r12+7)] = 0; + heap32[(r12+8)] = 0; + heap32[(r12+9)] = 1; + heap32[(r12+10)] = 1065353216; + heap8[r5+44] = r3; + heap32[(r12+12)] = 0; + heap8[r5+52] = r3; + heap8[r5+53] = r4; + heap8[r5+54] = r4; + heap32[(r12+14)] = 1025758986; + heap8[r5+60] = r3; + heap32[(r12+16)] = 0; + heap8[r5+68] = r3; + heap32[(r12+18)] = 0; + heap32[(r12+20)] = r10; + heap32[(r12+21)] = 0; + r8 = r7 >> 2; + heap8[r5+88] = r4; + r8 = heap32[(r8)]; + r8 = r8 >> 2; + r8 = heap32[(r8+4)]; + heap32[(g0)] = r7; + __FUNCTION_TABLE__[(r8)>>2](i7); + heap32[(r12+19)] = r_g0; + heap32[(r12+18)] = r_g0; + heap32[(r12+23)] = 0; + heap32[(r12+24)] = 0; + heap32[(r12+25)] = 0; + heap32[(r12+26)] = 1058642330; + heap32[(r12+27)] = 1065353216; + heap32[(r12+28)] = 1050253722; + heap32[(r12+30)] = 0; + heap32[(r12+32)] = 1101004800; + heap32[(r12+31)] = 10; + heap32[(r12+34)] = 1045220557; + heap32[(r12+35)] = 1036831949; + heap32[(r12+36)] = 0; + heap32[(r12+33)] = 1065353216; + heap32[(r12+37)] = 0; + heap32[(r12+38)] = -1130113270; + heap32[(r12+39)] = 0; + heap32[(r12+40)] = 1062836634; + heap32[(r12+41)] = 260; + r7 = _ZTV23btDiscreteDynamicsWorld; + heap32[(r12+42)] = 2; + r7 = (r7 + 8)|0; + heap32[(r12+43)] = 128; + heap32[(r12)] = r7; + heap32[(r12+44)] = r9; + heap8[r5+200] = r4; + heap32[(r12+49)] = 0; + heap32[(r12+47)] = 0; + heap32[(r12+48)] = 0; + heap8[r5+220] = r4; + heap32[(r12+54)] = 0; + heap32[(r12+52)] = 0; + heap32[(r12+53)] = 0; + heap32[(r12+56)] = 0; + heap32[(r12+57)] = -1054867456; + heap32[(r12+58)] = 0; + heap32[(r12+59)] = 0; + heap32[(r12+60)] = 0; + heap8[r5+246] = r3; + heap8[r5+264] = r4; + heap32[(r12+65)] = 0; + heap32[(r12+63)] = 0; + heap32[(r12+64)] = 0; + heap32[(r12+67)] = 0; + if(r9 !=0) //_LBB26_111 +{ + heap8[r5+245] = r3; + r7 = heap32[(r2)]; +} +else{ + r7 = heap32[(r2)]; + r7 = (r7 + 1)|0; + heap32[(r2)] = r7; + heap32[(g0)] = 147; + malloc(i7); + r8 = r_g0; + if(r8 !=0) //_LBB26_109 +{ + r9 = 0; + r10 = (r8 + 4)|0; + r9 = (r9 - r10)|0; + r9 = r9 & 15; + r9 = (r8 + r9)|0; + r10 = (r9 + 4)|0; + r9 = r9 >> 2; + heap32[(r9)] = r8; + r8 = r10; +} + r9 = r8 >> 2; + heap32[(r9)] = r0; + heap8[r8+20] = r4; + heap32[(r9+4)] = 0; + heap32[(r9+2)] = 0; + heap32[(r9+3)] = 0; + heap8[r8+40] = r4; + heap32[(r9+9)] = 0; + heap32[(r9+7)] = 0; + heap32[(r9+8)] = 0; + heap8[r8+60] = r4; + heap32[(r9+14)] = 0; + heap32[(r9+12)] = 0; + heap32[(r9+13)] = 0; + heap8[r8+80] = r4; + heap32[(r9+19)] = 0; + heap32[(r9+17)] = 0; + heap32[(r9+18)] = 0; + heap8[r8+100] = r4; + heap32[(r9+24)] = 0; + heap32[(r9+22)] = 0; + heap32[(r9+23)] = 0; + heap8[r8+120] = r4; + heap32[(r9+29)] = 0; + heap32[(r9+27)] = 0; + heap32[(r9+28)] = 0; + r0 = r5 >> 2; + heap32[(r9+31)] = 0; + heap32[(r0+44)] = r8; + heap8[r5+245] = r4; +} + r0 = (r7 + 1)|0; + heap32[(r2)] = r0; + heap32[(g0)] = 87; + malloc(i7); + r0 = r_g0; + if(r0 !=0) //_LBB26_114 +{ + r7 = (r0 + 4)|0; + r7 = (r3 - r7)|0; + r7 = r7 & 15; + r7 = (r0 + r7)|0; + r8 = (r7 + 4)|0; + r7 = r7 >> 2; + heap32[(r7)] = r0; + r0 = r8; +} + r7 = _ZTV25btSimulationIslandManager; + r8 = r0 >> 2; + r7 = (r7 + 8)|0; + heap32[(r8)] = r7; + heap8[r0+20] = r4; + heap32[(r8+4)] = 0; + heap32[(r8+2)] = 0; + heap32[(r8+3)] = 0; + heap8[r0+40] = r4; + heap32[(r8+9)] = 0; + heap32[(r8+7)] = 0; + heap32[(r8+8)] = 0; + heap8[r0+60] = r4; + heap32[(r8+14)] = 0; + heap32[(r8+12)] = 0; + heap32[(r8+13)] = 0; + r7 = r5 >> 2; + heap8[r0+64] = r4; + heap32[(r7+45)] = r0; + heap8[r5+244] = r4; + heap32[(r1+1)] = r5; + r0 = heap32[(r7+41)]; + r0 = r0 | 32; + heap32[(r7+41)] = r0; + heap32[(r7+31)] = 5; + heap32[(r1+2)] = 0; + r0 = heap32[(r1+1)]; + r5 = r0 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+17)]; + r7 = sp + -41280; + r8 = r7 >> 2; + heap32[(fp+-10320)] = 0; + heap32[(r8+1)] = -1054867456; + heap32[(r8+2)] = 0; + heap32[(r8+3)] = 0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r7; + __FUNCTION_TABLE__[(r5)>>2](i7); + r0 = heap32[(r1+17)]; + if(r0 <5) //_LBB26_117 +{ + r0 = heap32[(r2)]; + r5 = (r0 + 1)|0; + heap32[(r2)] = r5; + heap32[(g0)] = 71; + malloc(i7); + r5 = r_g0; + if(r5 !=0) //_LBB26_119 +{ + r7 = 0; + r8 = (r5 + 4)|0; + r7 = (r7 - r8)|0; + r7 = r7 & 15; + r7 = (r5 + r7)|0; + r8 = (r7 + 4)|0; + r7 = r7 >> 2; + heap32[(r7)] = r5; + r5 = r8; +} + r7 = r5 >> 2; + heap32[(r7+2)] = 0; + heap32[(r7+3)] = 1065353216; + heap32[(r7+4)] = 1065353216; + heap32[(r7+5)] = 1065353216; + r8 = _ZTV10btBoxShape; + heap32[(r7+6)] = 0; + r8 = (r8 + 8)|0; + heap32[(r7+11)] = 1025758986; + heap32[(r7)] = r8; + heap32[(r7+1)] = 0; + heap32[(r7+7)] = 1132066243; + heap32[(r7+8)] = 1112004362; + heap32[(r7+9)] = 1132066243; + heap32[(r7+10)] = 0; + r7 = heap32[(r1+5)]; + r8 = heap32[(r1+4)]; + if(r7 ==r8) //_LBB26_122 +{ + r9 = r8 << 1; + r9 = r8 == 0 ? r4 : r9; +if(!(r7 >=r9)) //_LBB26_121 +{ + if(r9 !=0) //_LBB26_125 +{ + r7 = r9 << 2; + r0 = (r0 + 2)|0; + r7 = r7 | 3; + heap32[(r2)] = r0; + r0 = (r7 + 16)|0; + heap32[(g0)] = r0; + malloc(i7); + r0 = r_g0; + if(r0 !=0) //_LBB26_127 +{ + r7 = 0; + r10 = (r0 + 4)|0; + r7 = (r7 - r10)|0; + r7 = r7 & 15; + r7 = (r0 + r7)|0; + r10 = (r7 + 4)|0; + r7 = r7 >> 2; + heap32[(r7)] = r0; + r0 = r10; +} +} +else{ + r0 = 0; +} +_138: do { + if(r8 <1) //_LBB26_130 +{ + r10 = heap32[(r1+6)]; +} +else{ + r7 = 0; +_141: while(true){ + r10 = heap32[(r1+6)]; + r11 = r7 << 2; + r12 = (r10 + r11)|0; + r12 = r12 >> 2; + r11 = (r0 + r11)|0; + r12 = heap32[(r12)]; + r7 = (r7 + 1)|0; + r11 = r11 >> 2; + heap32[(r11)] = r12; +if(!(r8 !=r7)) //_LBB26_131 +{ +break _138; +} +} +} +} while(0); + if(r10 !=0) //_LBB26_134 +{ + r7 = heapU8[r6+28]; + if(r7 !=0) //_LBB26_136 +{ + r8 = gNumAlignedFree; + r8 = r8 >> 2; + r7 = heap32[(r8)]; + r7 = (r7 + 1)|0; + r10 = r10 >> 2; + heap32[(r8)] = r7; + r8 = heap32[(r10+-1)]; + heap32[(g0)] = r8; + free(i7); + r8 = heap32[(r1+4)]; +} + heap32[(r1+6)] = 0; +} + heap8[r6+28] = r4; + heap32[(r1+6)] = r0; + heap32[(r1+5)] = r9; +} +} + r0 = r8 << 2; + r7 = heap32[(r1+6)]; + r0 = (r7 + r0)|0; + r0 = r0 >> 2; + heap32[(r0)] = r5; + r0 = heap32[(r1+4)]; + r0 = (r0 + 1)|0; + r7 = _ZGVZN11btTransform11getIdentityEvE17identityTransform; + heap32[(r1+4)] = r0; + r0 = heapU8[r7]; +if(!(r0 !=0)) //_LBB26_143 +{ + r0 = _ZGVZN11btMatrix3x311getIdentityEvE14identityMatrix; + r8 = heapU8[r0]; +if(!(r8 !=0)) //_LBB26_142 +{ + r8 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_0_2E_0_2E_0; + r9 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_1_2E_0_2E_1; + r8 = r8 >> 2; + r10 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_2_2E_0_2E_2; + r9 = r9 >> 2; + heap32[(r8)] = 1065353216; + r8 = r10 >> 2; + heap32[(r9)] = 1065353216; + heap32[(r8)] = 1065353216; + heap8[r0] = r4; +} + r0 = _ZZN11btTransform11getIdentityEvE17identityTransform; + r8 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_0_2E_0_2E_0; + r0 = r0 >> 2; + r8 = r8 >> 2; + heap32[(r0)] = heap32[(r8)]; + heap32[(r0+1)] = 0; + heap32[(r0+2)] = 0; + r8 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_1_2E_0_2E_1; + heap32[(r0+3)] = 0; + r8 = r8 >> 2; + heap32[(r0+4)] = 0; + heap32[(r0+5)] = heap32[(r8)]; + heap32[(r0+6)] = 0; + heap32[(r0+7)] = 0; + r8 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_2_2E_0_2E_2; + heap32[(r0+8)] = 0; + r8 = r8 >> 2; + heap32[(r0+9)] = 0; + heap32[(r0+10)] = heap32[(r8)]; + heap32[(r0+11)] = 0; + heap32[(r0+12)] = 0; + heap32[(r0+13)] = 0; + heap32[(r0+14)] = 0; + heap32[(r0+15)] = 0; + heap8[r7] = r4; +} + heap32[(g0)] = 200; + r0 = _ZTV20btDefaultMotionState; + _Znwj(i7); + r8 = r_g0 >> 2; + r0 = (r0 + 8)|0; + heap32[(r8)] = r0; + heap32[(r8+1)] = 1065353216; + heap32[(r8+2)] = 0; + heap32[(r8+3)] = 0; + heap32[(r8+4)] = 0; + heap32[(r8+5)] = 0; + heap32[(r8+6)] = 1065353216; + heap32[(r8+7)] = 0; + heap32[(r8+8)] = 0; + heap32[(r8+9)] = 0; + heap32[(r8+10)] = 0; + heap32[(r8+11)] = 1065353216; + heap32[(r8+12)] = 0; + heap32[(r8+13)] = 0; + heap32[(r8+14)] = -1035468800; + r0 = _ZZN11btTransform11getIdentityEvE17identityTransform; + heap32[(r8+15)] = 0; + r0 = r0 >> 2; + heap32[(r8+16)] = 0; + heap32[(r8+17)] = heap32[(r0)]; + heap32[(r8+18)] = heap32[(r0+1)]; + heap32[(r8+19)] = heap32[(r0+2)]; + heap32[(r8+20)] = heap32[(r0+3)]; + heap32[(r8+21)] = heap32[(r0+4)]; + heap32[(r8+22)] = heap32[(r0+5)]; + heap32[(r8+23)] = heap32[(r0+6)]; + heap32[(r8+24)] = heap32[(r0+7)]; + heap32[(r8+25)] = heap32[(r0+8)]; + heap32[(r8+26)] = heap32[(r0+9)]; + heap32[(r8+27)] = heap32[(r0+10)]; + heap32[(r8+28)] = heap32[(r0+11)]; + heap32[(r8+29)] = heap32[(r0+12)]; + heap32[(r8+30)] = heap32[(r0+13)]; + heap32[(r8+31)] = heap32[(r0+14)]; + heap32[(r8+32)] = heap32[(r0+15)]; + heap32[(r8+33)] = 1065353216; + heap32[(r8+34)] = 0; + heap32[(r8+35)] = 0; + heap32[(r8+36)] = 0; + heap32[(r8+37)] = 0; + heap32[(r8+38)] = 1065353216; + heap32[(r8+39)] = 0; + heap32[(r8+40)] = 0; + heap32[(r8+41)] = 0; + heap32[(r8+42)] = 0; + heap32[(r8+43)] = 1065353216; + heap32[(r8+44)] = 0; + heap32[(r8+45)] = 0; + heap32[(r8+46)] = -1035468800; + heap32[(r8+47)] = 0; + heap32[(r8+48)] = 0; + r0 = sp + -41416; + heap32[(r8+49)] = 0; + r8 = r0 >> 2; + heap32[(fp+-10354)] = 0; + heap32[(r8+1)] = r_g0; + heap32[(r8+18)] = r5; + heap32[(r8+19)] = 0; + heap32[(r8+20)] = 0; + heap32[(r8+21)] = 0; + heap32[(r8+22)] = 0; + heap32[(r8+23)] = 0; + heap32[(r8+24)] = 0; + heap32[(r8+25)] = 1056964608; + heap32[(r8+26)] = 0; + heap32[(r8+27)] = 1061997773; + r5 = 0; + heap32[(r8+28)] = 1065353216; + heap8[sp+-41300] = r5; + heap32[(r8+30)] = 1000593162; + heap32[(r8+31)] = 1008981770; + heap32[(r8+32)] = 1008981770; + heap32[(r8+33)] = 1008981770; + heap32[(r8+2)] = 1065353216; + heap32[(r8+3)] = 0; + heap32[(r8+4)] = 0; + heap32[(r8+5)] = 0; + heap32[(r8+6)] = 0; + heap32[(r8+7)] = 1065353216; + heap32[(r8+8)] = 0; + heap32[(r8+9)] = 0; + heap32[(r8+10)] = 0; + heap32[(r8+11)] = 0; + heap32[(r8+12)] = 1065353216; + heap32[(r8+13)] = 0; + heap32[(r8+14)] = 0; + heap32[(r8+15)] = 0; + heap32[(r8+16)] = 0; + heap32[(r8+17)] = 0; + r7 = heap32[(r2)]; + r7 = (r7 + 1)|0; + heap32[(r2)] = r7; + heap32[(g0)] = 627; + malloc(i7); + r7 = r_g0; + if(r7 !=0) //_LBB26_145 +{ + r8 = (r7 + 4)|0; + r5 = (r5 - r8)|0; + r5 = r5 & 15; + r5 = (r7 + r5)|0; + r8 = (r5 + 4)|0; + r5 = r5 >> 2; + heap32[(r5)] = r7; + r7 = r8; +} + r5 = r7 >> 2; + heap32[(r5+41)] = 1065353216; + heap32[(r5+42)] = 1065353216; + heap32[(r5+43)] = 1065353216; + heap32[(r5+44)] = 0; + heap32[(r5+45)] = 0; + heap32[(r5+46)] = 1566444395; + heap32[(r5+47)] = 0; + heap32[(r5+48)] = 0; + heap32[(r5+49)] = 0; + heap32[(r5+50)] = 0; + heap32[(r5+51)] = 1; + heap32[(r5+52)] = -1; + heap32[(r5+53)] = -1; + heap32[(r5+54)] = 1; + heap32[(r5+55)] = 0; + heap32[(r5+56)] = 1056964608; + heap32[(r5+57)] = 0; + heap32[(r5+58)] = 1; + heap32[(r5+59)] = 0; + heap32[(r5+60)] = 1065353216; + heap32[(r5+61)] = 0; + heap32[(r5+62)] = 0; + heap32[(r5+63)] = 0; + heap32[(r5+1)] = 1065353216; + heap32[(r5+2)] = 0; + heap32[(r5+3)] = 0; + heap32[(r5+4)] = 0; + heap32[(r5+5)] = 0; + heap32[(r5+6)] = 1065353216; + heap32[(r5+7)] = 0; + heap32[(r5+8)] = 0; + heap32[(r5+9)] = 0; + heap32[(r5+10)] = 0; + heap32[(r5+11)] = 1065353216; + heap32[(r5+12)] = 0; + heap32[(r5+13)] = 0; + heap32[(r5+14)] = 0; + r8 = _ZTV11btRigidBody; + heap32[(r5+15)] = 0; + r8 = (r8 + 8)|0; + heap32[(r5+16)] = 0; + heap32[(r5)] = r8; + heap8[r7+492] = r4; + heap32[(r5+122)] = 0; + heap32[(r5+120)] = 0; + heap32[(r5+121)] = 0; + heap32[(g0)] = r7; + heap32[(g0+1)] = r0; + _ZN11btRigidBody14setupRigidBodyERKNS_27btRigidBodyConstructionInfoE(i7); + r0 = heap32[(r1+1)]; + r5 = r0 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+20)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r7; + __FUNCTION_TABLE__[(r5)>>2](i7); + r0 = heap32[(r1+17)]; +} +_161: do { + if(r0 >3) //_LBB26_151 +{ + if(r0 >5) //_LBB26_154 +{ + if(r0 ==6) //_LBB26_325 +{ + _ZN13BenchmarkDemo11createTest6Ev(i7); + return; +} +else{ + if(r0 ==7) //_LBB26_326 +{ + _ZN13BenchmarkDemo11createTest6Ev(i7); + r0 = sp + -41264; + heap32[(g0)] = 8; + r1 = r0 >> 2; + _Znwj(i7); + heap32[(r1+10006)] = r_g0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = 0; + gettimeofday(i7); + heap32[(r1+10000)] = 0; + heap32[(r1+10001)] = 0; + heap32[(r1+10005)] = 0; + heap32[(r1+10004)] = 9999; + heap32[(r1+10003)] = 0; + heap32[(r1+10002)] = 0; + heap32[(r1+10007)] = 1092616192; + heap32[(r1+10008)] = 0; + heap32[(r1+10009)] = 0; + heap32[(r1+10010)] = 1112014848; + heap32[(r1+10011)] = 1065353216; + f3 = 0; +_169: while(true){ + f0 = r3; //fitos r3, f0 + f1 = 0.025132741779088974; + f0 = f0*f1; + f1 = 0.5; + f0 = f0*f1; + heapFloat[(g0)] = f0; + sinf(i7); + f2 = 1; + f1 = f_g0/f2; + f2 = f1*f3; + heapFloat[(g0)] = f0; + cosf(i7); + f4 = -f2; + f5 = f_g0*f3; + f6 = f2*f3; + f7 = f4-f2; + f8 = f_g0+f2; + f8 = f8-f6; + f7 = f7-f6; + f9 = f5+f2; + f9 = f9-f6; + f5 = f5+f6; + f6 = f7*f4; + f10 = f8*f_g0; + f5 = f5-f1; + f11 = f9*f_g0; + f7 = f7*f1; + f10 = f6+f10; + f4 = f9*f4; + r2 = r3 << 4; + f0 = f5*f_g0; + f7 = f11-f7; + f9 = f5*f2; + f10 = f10+f4; + f5 = f5*f1; + r2 = (r0 + r2)|0; + f0 = f6+f0; + f1 = f8*f1; + f6 = f7-f9; + f2 = f8*f2; + f5 = f10+f5; + f7 = 2500; + f0 = f0-f1; + f1 = f6+f2; + r2 = r2 >> 2; + f2 = f5*f7; + f0 = f0-f4; + f1 = f1*f7; + heapFloat[(r2+4000)] = f2; + f0 = f0*f7; + heapFloat[(r2+4001)] = f1; + heapFloat[(r2+4002)] = f0; + heap32[(r2+4003)] = 0; + f1 = heapFloat[(r1+10008)]; + heapFloat[(r2)] = f1; + heap32[(r2+1)] = 1112014848; + heap32[(r2+2)] = 0; + f1 = f1+f2; + heap32[(r2+3)] = 0; + f0 = f0+f3; + heapFloat[(r2+2000)] = f1; + heapFloat[(r2+2002)] = f0; + heap32[(r2+2003)] = 0; + heap32[(r2+2001)] = -998637568; + heap32[(r2+8000)] = 1065353216; + heap32[(r2+8001)] = 0; + r3 = (r3 + 1)|0; + heap32[(r2+8002)] = 0; + heap32[(r2+8003)] = 0; +if(!(r3 !=500)) //_LBB26_327 +{ +break _169; +} +} + r2 = _ZL10raycastBar; + heap32[(g0)] = r2; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = 8000; + memcpy(i7); + r3 = (r2 + 8000)|0; + r4 = (r0 + 8000)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = 8000; + memcpy(i7); + r3 = (r2 + 16000)|0; + r4 = (r0 + 16000)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = 8000; + memcpy(i7); + r3 = (r2 + 24000)|0; + r4 = (r0 + 24000)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = 8000; + memcpy(i7); + r3 = (r2 + 32000)|0; + r0 = (r0 + 32000)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = 8000; + memcpy(i7); + r0 = r2 >> 2; + r2 = heap32[(r1+10000)]; + heap32[(r0+10000)] = r2; + r2 = heap32[(r1+10001)]; + heap32[(r0+10001)] = r2; + r2 = heap32[(r1+10002)]; + heap32[(r0+10002)] = r2; + r2 = heap32[(r1+10003)]; + heap32[(r0+10003)] = r2; + r2 = heap32[(r1+10004)]; + heap32[(r0+10004)] = r2; + r2 = heap32[(r1+10005)]; + heap32[(r0+10005)] = r2; + r2 = heap32[(r1+10006)]; + r2 = r2 >> 2; + r3 = heap32[(r0+10006)]; + r4 = heap32[(r2+1)]; + r2 = heap32[(r2)]; + r3 = r3 >> 2; + heap32[(r3)] = r2; + heap32[(r3+1)] = r4; + heap32[(r0+10007)] = heap32[(r1+10007)]; + heap32[(r0+10008)] = heap32[(r1+10008)]; + heap32[(r0+10009)] = heap32[(r1+10009)]; + heap32[(r0+10010)] = heap32[(r1+10010)]; + heap32[(r0+10011)] = heap32[(r1+10011)]; + r0 = heap32[(r1+10006)]; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} +else{ +break _161; +} +} +} +else{ + if(r0 ==4) //_LBB26_291 +{ + r3 = heap32[(r2)]; + r3 = (r3 + 1)|0; + heap32[(r2)] = r3; + heap32[(g0)] = 127; + malloc(i7); + r2 = r_g0; + if(r2 !=0) //_LBB26_293 +{ + r3 = 0; + r4 = (r2 + 4)|0; + r3 = (r3 - r4)|0; + r3 = r3 & 15; + r3 = (r2 + r3)|0; + r4 = (r3 + 4)|0; + r3 = r3 >> 2; + heap32[(r3)] = r2; + r2 = r4; +} + heap32[(g0)] = r2; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = 0; + r3 = r2 >> 2; + _ZN17btConvexHullShapeC1EPKfii(i7); + r4 = heap32[(r3)]; + r4 = r4 >> 2; + r4 = heap32[(r4+6)]; + r0 = sp + -96; + r5 = r0 >> 2; + heap32[(fp+-24)] = 1065353216; + heap32[(r5+1)] = 1065353216; + heap32[(r5+2)] = 1065353216; + heap32[(r5+3)] = 0; + heap32[(g0)] = r2; + heap32[(g0+1)] = r0; + r0 = 0; + __FUNCTION_TABLE__[(r4)>>2](i7); +_178: while(true){ + r4 = (r0 * -3)|0; + r5 = _ZL7TaruVtx; + r4 = r4 << 2; + r4 = (r5 + r4)|0; + r5 = sp + -80; + r4 = r4 >> 2; + r7 = r5 >> 2; + heap32[(fp+-20)] = heap32[(r4)]; + heap32[(r7+1)] = heap32[(r4+1)]; + heap32[(r7+2)] = heap32[(r4+2)]; + heap32[(r7+3)] = 0; + heap32[(g0)] = r2; + heap32[(g0+1)] = r5; + r0 = (r0 + -1)|0; + _ZN17btConvexHullShape8addPointERK9btVector3(i7); + if(r0 ==-43) //_LBB26_301 +{ +break _178; +} +} + r4 = sp + -160; + r0 = r4 >> 2; + heap32[(fp+-40)] = 1065353216; + heap32[(r0+1)] = 0; + heap32[(r0+2)] = 0; + heap32[(r0+3)] = 0; + heap32[(r0+4)] = 0; + heap32[(r0+5)] = 1065353216; + heap32[(r0+6)] = 0; + heap32[(r0+7)] = 0; + heap32[(r0+8)] = 0; + heap32[(r0+9)] = 0; + heap32[(r0+10)] = 1065353216; + heap32[(r0+11)] = 0; + heap32[(r0+12)] = 0; + heap32[(r0+13)] = 0; + heap32[(r0+14)] = 0; + r5 = sp + -176; + heap32[(r0+15)] = 0; + r7 = r5 >> 2; + heap32[(fp+-44)] = 0; + heap32[(r7+1)] = 0; + heap32[(r7+2)] = 0; + heap32[(r7+3)] = 0; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r7 = heap32[(r3+8)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = 1065353216; + heap32[(g0+2)] = r5; + r3 = 15; + f0 = 3; + f2 = -18; + f3 = 1.5; + __FUNCTION_TABLE__[(r7)>>2](i7); + f1 = f0; +_181: while(true){ + f4 = f3+f0; + r5 = 0; + r7 = r5; +_183: while(true){ + f5 = r7; //fitos r7, f5 + f5 = f5*f4; + f5 = f5+f2; + r8 = r5; +_185: while(true){ + f6 = r8; //fitos r8, f6 + f6 = f6*f4; + f6 = f6+f2; + heapFloat[(r0+12)] = f6; + heapFloat[(r0+13)] = f1; + heapFloat[(r0+14)] = f5; + heap32[(r0+15)] = 0; + r9 = heap32[(r1)]; + r9 = r9 >> 2; + r9 = heap32[(r9+2)]; + heap32[(g0)] = r6; + heap32[(g0+1)] = 1065353216; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r2; + r8 = (r8 + 1)|0; + __FUNCTION_TABLE__[(r9)>>2](i7); +if(!(r8 !=8)) //_LBB26_298 +{ +break _185; +} +} + r7 = (r7 + 1)|0; +if(!(r7 !=8)) //_LBB26_297 +{ +break _183; +} +} + f4 = 1.0099999904632568; + f5 = -0.05000000074505806; + f4 = f3*f4; + f6 = 3; + f3 = f3*f5; + f5 = 7; + f6 = f4+f6; + f3 = f3*f5; + r3 = (r3 + -1)|0; + f1 = f1+f6; + f2 = f3+f2; + f3 = f4; + if(r3 ==0) //_LBB26_165 +{ +break _161; +} +else{ +continue _181; +} +} +} +else{ + if(r0 ==5) //_LBB26_302 +{ + r3 = 10; + f0 = 20; + f1 = 2; + f2 = -25; +_191: while(true){ + f3 = 3; + f4 = 25; + f5 = f1+f3; + f4 = f0+f4; + r0 = 0; + r5 = r0; +_193: while(true){ + f6 = r5; //fitos r5, f6 + f6 = f6*f5; + f6 = f6+f2; + f7 = 5; + f6 = f6*f7; + f8 = 0; + f6 = f6+f8; + r7 = r0; +_195: while(true){ + r8 = _ZL8nextRand; + r8 = r8 >> 2; + r9 = heap32[(r8)]; + r9 = (r9 * 214013)|0; + r9 = (r9 + 2531011)|0; + r10 = sp + -64; + heap32[(r8)] = r9; + r8 = r10 >> 2; + heap32[(fp+-16)] = 1065353216; + heap32[(r8+1)] = 0; + heap32[(r8+2)] = 0; + heap32[(r8+3)] = 0; + heap32[(r8+4)] = 0; + heap32[(r8+5)] = 1065353216; + heap32[(r8+6)] = 0; + heap32[(r8+7)] = 0; + f9 = r7; //fitos r7, f9 + heap32[(r8+8)] = 0; + f9 = f9*f5; + heap32[(r8+9)] = 0; + f9 = f9+f2; + heap32[(r8+10)] = 1065353216; + f9 = f9*f7; + f9 = f9+f8; + heap32[(r8+11)] = 0; + r9 = r9 >>> 16; + heapFloat[(r8+12)] = f9; + r9 = r9 & 32767; + heapFloat[(r8+13)] = f4; + r9 = Math.floor(uint(r9) % uint(9)); + heapFloat[(r8+14)] = f6; + heap32[(r8+15)] = 0; +if(!(uint(r9) >uint(8))) //_LBB26_321 +{ + r8 = r4 << r9; + r11 = r8 & 7; + if(r11 !=0) //_LBB26_309 +{ + r8 = heap32[(r2)]; + r8 = (r8 + 1)|0; + heap32[(r2)] = r8; + r9 = (r9 + 1)|0; + f9 = r9; //fitos r9, f9 + f10 = 0.5; + heap32[(g0)] = 71; + f9 = f9*f10; + f10 = 1.5; + malloc(i7); + r9 = r_g0; + f10 = f9*f10; + if(r9 !=0) //_LBB26_311 +{ + r8 = 0; + r11 = (r9 + 4)|0; + r8 = (r8 - r11)|0; + r8 = r8 & 15; + r8 = (r9 + r8)|0; + r11 = (r8 + 4)|0; + r8 = r8 >> 2; + heap32[(r8)] = r9; + r9 = r11; +} + r8 = r9 >> 2; + heap32[(r8+2)] = 0; + heap32[(r8+3)] = 1065353216; + heap32[(r8+4)] = 1065353216; + heap32[(r8+5)] = 1065353216; + r11 = _ZTV10btBoxShape; + heap32[(r8+6)] = 0; + r11 = (r11 + 8)|0; + heap32[(r8+11)] = 1025758986; + heap32[(r8)] = r11; + f11 = -0.039999999105930328; + f10 = f10+f11; + heap32[(r8+1)] = 0; + heapFloat[(r8+7)] = f10; + heapFloat[(r8+8)] = f10; + heapFloat[(r8+9)] = f10; + heap32[(r8+10)] = 0; + r8 = heap32[(r1)]; + r8 = r8 >> 2; + r8 = heap32[(r8+2)]; + heap32[(g0)] = r6; + heapFloat[(g0+1)] = f9; + heap32[(g0+2)] = r10; + heap32[(g0+3)] = r9; + __FUNCTION_TABLE__[(r8)>>2](i7); +} +else{ + r11 = r8 & 56; + if(r11 !=0) //_LBB26_313 +{ + r8 = heap32[(r2)]; + r8 = (r8 + 1)|0; + heap32[(r2)] = r8; + r9 = (r9 + -2)|0; + heap32[(g0)] = 71; + f9 = r9; //fitos r9, f9 + f10 = 0.5; + malloc(i7); + r9 = r_g0; + f9 = f9*f10; + if(r9 !=0) //_LBB26_315 +{ + r8 = 0; + r11 = (r9 + 4)|0; + r8 = (r8 - r11)|0; + r8 = r8 & 15; + r8 = (r9 + r8)|0; + r11 = (r8 + 4)|0; + r8 = r8 >> 2; + heap32[(r8)] = r9; + r9 = r11; +} + r8 = r9 >> 2; + heap32[(r8+2)] = 0; + heap32[(r8+3)] = 1065353216; + heap32[(r8+4)] = 1065353216; + r11 = _ZTV13btSphereShape; + heap32[(r8+5)] = 1065353216; + r11 = (r11 + 8)|0; + heap32[(r8+6)] = 0; + heap32[(r8)] = r11; + f10 = 1.5; + f10 = f9*f10; + heap32[(r8+1)] = 8; + heapFloat[(r8+7)] = f10; + heapFloat[(r8+11)] = f10; + r8 = heap32[(r1)]; + r8 = r8 >> 2; + r8 = heap32[(r8+2)]; + heap32[(g0)] = r6; + heapFloat[(g0+1)] = f9; + heap32[(g0+2)] = r10; + heap32[(g0+3)] = r9; + __FUNCTION_TABLE__[(r8)>>2](i7); +} +else{ + r8 = r8 & 448; + if(r8 !=0) //_LBB26_317 +{ + r8 = heap32[(r2)]; + r8 = (r8 + 1)|0; + heap32[(r2)] = r8; + r8 = (r9 + -5)|0; + heap32[(g0)] = 75; + f9 = r8; //fitos r8, f9 + f10 = 0.5; + malloc(i7); + r8 = r_g0; + f9 = f9*f10; + if(r8 !=0) //_LBB26_319 +{ + r9 = 0; + r11 = (r8 + 4)|0; + r9 = (r9 - r11)|0; + r9 = r9 & 15; + r9 = (r8 + r9)|0; + r11 = (r9 + 4)|0; + r9 = r9 >> 2; + heap32[(r9)] = r8; + r8 = r11; +} + r9 = r8 >> 2; + heap32[(r9+2)] = 0; + heap32[(r9+3)] = 1065353216; + heap32[(r9+4)] = 1065353216; + heap32[(r9+5)] = 1065353216; + r11 = _ZTV14btCapsuleShape; + heap32[(r9+6)] = 0; + r11 = (r11 + 8)|0; + heap32[(r9+11)] = 1025758986; + heap32[(r9)] = r11; + heap32[(r9+1)] = 10; + heap32[(r9+13)] = 1; + f11 = f9+f9; + f10 = f11*f10; + heapFloat[(r9+7)] = f9; + heapFloat[(r9+8)] = f10; + heapFloat[(r9+9)] = f9; + heap32[(r9+10)] = 0; + r9 = heap32[(r1)]; + r9 = r9 >> 2; + r9 = heap32[(r9+2)]; + heap32[(g0)] = r6; + heapFloat[(g0+1)] = f9; + heap32[(g0+2)] = r10; + heap32[(g0+3)] = r8; + __FUNCTION_TABLE__[(r9)>>2](i7); +} +} +} +} + r7 = (r7 + 1)|0; +if(!(r7 !=10)) //_LBB26_305 +{ +break _195; +} +} + r5 = (r5 + 1)|0; +if(!(r5 !=10)) //_LBB26_304 +{ +break _193; +} +} + f4 = 1.1000000238418579; + f5 = -0.05000000074505806; + f4 = f1*f4; + f1 = f1*f5; + f5 = 9; + f3 = f4+f3; + f1 = f1*f5; + r3 = (r3 + -1)|0; + f0 = f0+f3; + f2 = f1+f2; + f1 = f4; +if(!(r3 !=0)) //_LBB26_303 +{ +break _191; +} +} + _ZN13BenchmarkDemo19createLargeMeshBodyEv(i7); + return; +} +else{ +break _161; +} +} +} +} +else{ + if(r0 ==1) //_LBB26_156 +{ + r3 = heap32[(r2)]; + r3 = (r3 + 1)|0; + heap32[(r2)] = r3; + heap32[(g0)] = 71; + malloc(i7); + r2 = r_g0; + if(r2 !=0) //_LBB26_158 +{ + r3 = 0; + r4 = (r2 + 4)|0; + r3 = (r3 - r4)|0; + r3 = r3 & 15; + r3 = (r2 + r3)|0; + r4 = (r3 + 4)|0; + r3 = r3 >> 2; + heap32[(r3)] = r2; + r2 = r4; +} + r3 = r2 >> 2; + heap32[(r3+2)] = 0; + heap32[(r3+3)] = 1065353216; + heap32[(r3+4)] = 1065353216; + heap32[(r3+5)] = 1065353216; + r4 = _ZTV10btBoxShape; + heap32[(r3+6)] = 0; + r4 = (r4 + 8)|0; + heap32[(r3+11)] = 1025758986; + heap32[(r3)] = r4; + heap32[(r3+1)] = 0; + heap32[(r3+7)] = 1064682127; + heap32[(r3+8)] = 1064682127; + heap32[(r3+9)] = 1064682127; + r4 = sp + -1152; + heap32[(r3+10)] = 0; + r3 = r4 >> 2; + heap32[(fp+-288)] = 0; + heap32[(r3+1)] = 0; + heap32[(r3+2)] = 0; + heap32[(r3+3)] = 0; + heap32[(g0)] = r2; + heap32[(g0+1)] = 1073741824; + heap32[(g0+2)] = r4; + _ZNK10btBoxShape21calculateLocalInertiaEfR9btVector3(i7); + r3 = sp + -1216; + r4 = r3 >> 2; + heap32[(fp+-304)] = 1065353216; + heap32[(r4+1)] = 0; + heap32[(r4+2)] = 0; + heap32[(r4+3)] = 0; + heap32[(r4+4)] = 0; + heap32[(r4+5)] = 1065353216; + heap32[(r4+6)] = 0; + heap32[(r4+7)] = 0; + heap32[(r4+8)] = 0; + heap32[(r4+9)] = 0; + heap32[(r4+10)] = 1065353216; + heap32[(r4+11)] = 0; + heap32[(r4+12)] = 0; + heap32[(r4+13)] = 0; + r0 = 47; + f0 = -12; + f1 = 2; + heap32[(r4+14)] = 0; + heap32[(r4+15)] = 0; +_225: while(true){ + r5 = 0; + r7 = r5; +_227: while(true){ + f2 = r7; //fitos r7, f2 + f3 = 3; + f2 = f2*f3; + f2 = f2+f0; + r8 = r5; +_229: while(true){ + f4 = r8; //fitos r8, f4 + f4 = f4*f3; + f4 = f4+f0; + heapFloat[(r4+12)] = f4; + heapFloat[(r4+13)] = f1; + heapFloat[(r4+14)] = f2; + heap32[(r4+15)] = 0; + r9 = heap32[(r1)]; + r9 = r9 >> 2; + r9 = heap32[(r9+2)]; + heap32[(g0)] = r6; + heap32[(g0+1)] = 1073741824; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = r2; + r8 = (r8 + 1)|0; + __FUNCTION_TABLE__[(r9)>>2](i7); +if(!(r8 !=8)) //_LBB26_161 +{ +break _229; +} +} + r7 = (r7 + 1)|0; +if(!(r7 !=8)) //_LBB26_160 +{ +break _227; +} +} + f2 = -0.34999999403953552; + r0 = (r0 + -1)|0; + f1 = f1+f3; + f0 = f0+f2; + if(r0 ==0) //_LBB26_165 +{ +break _161; +} +else{ +continue _225; +} +} +} +else{ + if(r0 ==2) //_LBB26_166 +{ + r3 = heap32[(r2)]; + r3 = (r3 + 1)|0; + heap32[(r2)] = r3; + heap32[(g0)] = 71; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB26_168 +{ + r4 = 0; + r0 = (r3 + 4)|0; + r4 = (r4 - r0)|0; + r4 = r4 & 15; + r4 = (r3 + r4)|0; + r0 = (r4 + 4)|0; + r4 = r4 >> 2; + heap32[(r4)] = r3; + r3 = r0; +} + r4 = r3 >> 2; + heap32[(r4+2)] = 0; + heap32[(r4+3)] = 1065353216; + heap32[(r4+4)] = 1065353216; + heap32[(r4+5)] = 1065353216; + r0 = _ZTV10btBoxShape; + heap32[(r4+6)] = 0; + r0 = (r0 + 8)|0; + heap32[(r4+11)] = 1025758986; + heap32[(r4)] = r0; + heap32[(r4+1)] = 0; + heap32[(r4+7)] = 1064682127; + heap32[(r4+8)] = 1064682127; + heap32[(r4+9)] = 1064682127; + r5 = sp + -1024; + heap32[(r4+10)] = 0; + r4 = r5 >> 2; + heap32[(fp+-256)] = 1065353216; + heap32[(r4+1)] = 0; + heap32[(r4+2)] = 0; + heap32[(r4+3)] = 0; + heap32[(r4+4)] = 0; + heap32[(r4+5)] = 1065353216; + heap32[(r4+6)] = 0; + heap32[(r4+7)] = 0; + heap32[(r4+8)] = 0; + heap32[(r4+9)] = 0; + heap32[(r4+10)] = 1065353216; + heap32[(r4+11)] = 0; + heap32[(r4+12)] = 0; + heap32[(r4+13)] = 0; + heap32[(r4+14)] = 0; + r7 = sp + -1040; + heap32[(r4+15)] = 0; + r8 = r7 >> 2; + heap32[(fp+-260)] = 0; + heap32[(r8+1)] = 0; + heap32[(r8+2)] = 0; + heap32[(r8+3)] = 0; + heap32[(g0)] = r3; + heap32[(g0+1)] = 1065353216; + heap32[(g0+2)] = r7; + r7 = 12; + f0 = -12.240598678588867; + f1 = 1; + _ZNK10btBoxShape21calculateLocalInertiaEfR9btVector3(i7); + f2 = f0; + f8 = -20; +_239: while(true){ +if(!(r7 <1)) //_LBB26_173 +{ + f4 = 0; + f3 = f1+f4; + r8 = 0; + r9 = r8; +_243: while(true){ + f5 = r9; //fitos r9, f5 + f6 = 2.0400998592376709; + f5 = f5*f6; + f5 = f5+f0; + f5 = f5+f4; + r10 = r8; +_245: while(true){ + f7 = r10; //fitos r10, f7 + f7 = f7*f6; + f7 = f7+f2; + f7 = f7+f8; + heapFloat[(r4+12)] = f7; + heapFloat[(r4+13)] = f3; + heapFloat[(r4+14)] = f5; + heap32[(r4+15)] = 0; + r11 = heap32[(r1)]; + r11 = r11 >> 2; + r11 = heap32[(r11+2)]; + heap32[(g0)] = r6; + heap32[(g0+1)] = 1065353216; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r3; + r10 = (r10 + 1)|0; + __FUNCTION_TABLE__[(r11)>>2](i7); +if(!(r7 !=r10)) //_LBB26_171 +{ +break _245; +} +} + r9 = (r9 + 1)|0; +if(!(r7 !=r9)) //_LBB26_170 +{ +break _243; +} +} +} + f3 = 2.0400998592376709; + f4 = 1.0199999809265137; + r7 = (r7 + -1)|0; + f1 = f1+f3; + f0 = f0+f4; + f2 = f2+f4; + if(r7 ==0) //_LBB26_176 +{ +break _239; +} +} + r3 = sp + -1136; + r4 = r3 >> 2; + heap32[(fp+-284)] = 1065353216; + heap32[(r4+1)] = 1065353216; + heap32[(r4+2)] = 1065353216; + r5 = sp + -1120; + heap32[(r4+3)] = 0; + r4 = r5 >> 2; + heap32[(fp+-280)] = -1073741824; + heap32[(r4+1)] = 0; + heap32[(r4+2)] = 0; + heap32[(r4+3)] = 0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r3; + r3 = sp + -1104; + _ZN13BenchmarkDemo10createWallERK9btVector3iS2_(i7); + r4 = r3 >> 2; + heap32[(fp+-276)] = 1065353216; + heap32[(r4+1)] = 1065353216; + heap32[(r4+2)] = 1065353216; + r5 = sp + -1088; + heap32[(r4+3)] = 0; + r4 = r5 >> 2; + heap32[(fp+-272)] = 1082130432; + heap32[(r4+1)] = 0; + heap32[(r4+2)] = 0; + heap32[(r4+3)] = 0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r3; + r3 = sp + -1072; + _ZN13BenchmarkDemo10createWallERK9btVector3iS2_(i7); + r4 = r3 >> 2; + heap32[(fp+-268)] = 1065353216; + heap32[(r4+1)] = 1065353216; + heap32[(r4+2)] = 1065353216; + r5 = sp + -1056; + heap32[(r4+3)] = 0; + r4 = r5 >> 2; + heap32[(fp+-264)] = 1092616192; + heap32[(r4+1)] = 0; + heap32[(r4+2)] = 0; + heap32[(r4+3)] = 0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r3; + _ZN13BenchmarkDemo10createWallERK9btVector3iS2_(i7); + r3 = heap32[(r2)]; + r3 = (r3 + 1)|0; + heap32[(r2)] = r3; + heap32[(g0)] = 71; + malloc(i7); + r2 = r_g0; + if(r2 !=0) //_LBB26_178 +{ + r3 = 0; + r4 = (r2 + 4)|0; + r3 = (r3 - r4)|0; + r3 = r3 & 15; + r3 = (r2 + r3)|0; + r4 = (r3 + 4)|0; + r3 = r3 >> 2; + heap32[(r3)] = r2; + r2 = r4; +} + r3 = r2 >> 2; + heap32[(r3+2)] = 0; + heap32[(r3+3)] = 1065353216; + heap32[(r3+4)] = 1065353216; + heap32[(r3+5)] = 1065353216; + heap32[(r3+6)] = 0; + heap32[(r3+11)] = 1025758986; + heap32[(r3)] = r0; + heap32[(r3+1)] = 0; + heap32[(r3+7)] = 1064682127; + heap32[(r3+8)] = 1064682127; + heap32[(r3+9)] = 1064682127; + r4 = sp + -944; + heap32[(r3+10)] = 0; + r3 = r4 >> 2; + heap32[(fp+-236)] = 1065353216; + heap32[(r3+1)] = 0; + heap32[(r3+2)] = 0; + heap32[(r3+3)] = 0; + heap32[(r3+4)] = 0; + heap32[(r3+5)] = 1065353216; + heap32[(r3+6)] = 0; + heap32[(r3+7)] = 0; + heap32[(r3+8)] = 0; + heap32[(r3+9)] = 0; + heap32[(r3+10)] = 1065353216; + heap32[(r3+11)] = 0; + heap32[(r3+12)] = 0; + heap32[(r3+13)] = 0; + heap32[(r3+14)] = 0; + r0 = sp + -960; + heap32[(r3+15)] = 0; + r5 = r0 >> 2; + heap32[(fp+-240)] = 0; + heap32[(r5+1)] = 0; + heap32[(r5+2)] = 0; + heap32[(r5+3)] = 0; + heap32[(g0)] = r2; + heap32[(g0+1)] = 1065353216; + heap32[(g0+2)] = r0; + r0 = 8; + f0 = 1; + f1 = 0; + _ZNK10btBoxShape21calculateLocalInertiaEfR9btVector3(i7); + f2 = f1; + f3 = f0; + f4 = f1; +_253: while(true){ + r5 = 24; +_255: while(true){ + f5 = 9.9312677383422852; + f6 = 0; + f7 = f3*f0; + f8 = f4*f6; + f9 = f3*f5; + f10 = f1*f6; + f7 = f8+f7; + f11 = f2*f5; + f9 = f10+f9; + f12 = f2*f0; + f13 = f1*f0; + f14 = f2*f6; + f7 = f7+f11; + f9 = f9-f12; + f11 = f13+f14; + f12 = f4*f5; + f5 = f1*f5; + f13 = f4*f0; + f11 = f11-f12; + f12 = f4*f4; + f15 = f3*f3; + f16 = f4*f7; + f17 = f1*f9; + f5 = f5+f13; + f13 = f3*f6; + f5 = f5-f13; + f12 = f12+f15; + f15 = f2*f2; + f18 = f3*f7; + f19 = f1*f11; + f16 = f16+f17; + f17 = f2*f11; + f12 = f12+f15; + f15 = f1*f1; + f7 = f2*f7; + f20 = f1*f5; + f18 = f18+f19; + f19 = f4*f5; + f16 = f16-f17; + f5 = f3*f5; + f17 = 2; + f12 = f12+f15; + f7 = f7+f20; + f15 = f3*f9; + f18 = f18-f19; + f9 = f2*f9; + f5 = f16+f5; + f16 = 25; + f12 = f17/f12; + f9 = f18+f9; + f5 = f5+f16; + f7 = f7-f15; + f11 = f4*f11; + f15 = f2*f12; + f16 = f3*f12; + f7 = f7+f11; + f9 = f9+f6; + heapFloat[(r3+12)] = f5; + f5 = f3*f16; + f11 = f2*f15; + f7 = f7+f6; + heapFloat[(r3+13)] = f9; + heapFloat[(r3+14)] = f7; + f7 = 1; + f9 = f5+f11; + f18 = f4*f16; + f19 = f1*f15; + f9 = f7-f9; + heap32[(r3+15)] = 0; + f20 = f4*f15; + f16 = f1*f16; + f21 = f18-f19; + heapFloat[(fp+-236)] = f9; + f9 = f4*f12; + f12 = f20+f16; + heapFloat[(r3+1)] = f21; + f21 = f4*f9; + heapFloat[(r3+2)] = f12; + f11 = f21+f11; + f12 = f18+f19; + heap32[(r3+3)] = 0; + f15 = f3*f15; + f9 = f1*f9; + f11 = f7-f11; + heapFloat[(r3+4)] = f12; + f12 = f15-f9; + heapFloat[(r3+5)] = f11; + heapFloat[(r3+6)] = f12; + f11 = f20-f16; + heap32[(r3+7)] = 0; + f5 = f21+f5; + f9 = f15+f9; + heapFloat[(r3+8)] = f11; + f5 = f7-f5; + heapFloat[(r3+9)] = f9; + heapFloat[(r3+10)] = f5; + heap32[(r3+11)] = 0; + r7 = heap32[(r1)]; + r7 = r7 >> 2; + f5 = 0.99144488573074341; + f7 = 0.13052619993686676; + r7 = heap32[(r7+2)]; + f9 = f1*f5; + f11 = f2*f5; + f12 = f4*f5; + f1 = f1*f7; + f5 = f3*f5; + f1 = f1+f5; + f5 = f10+f12; + f9 = f9-f8; + f3 = f3*f7; + f10 = f10+f11; + f4 = f4*f7; + f3 = f9-f3; + f4 = f10+f4; + f9 = f1+f14; + heap32[(g0)] = r6; + heap32[(g0+1)] = 1065353216; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r2; + f5 = f5+f13; + f7 = f2*f7; + r5 = (r5 + -1)|0; + f1 = f3-f14; + f2 = f4-f13; + f3 = f9-f8; + f4 = f5-f7; + __FUNCTION_TABLE__[(r7)>>2](i7); +if(!(r5 !=0)) //_LBB26_180 +{ +break _255; +} +} + f5 = 0.99785894155502319; + f7 = 0.065403133630752563; + f8 = f4*f5; + f9 = f1*f6; + f10 = f2*f5; + f11 = f1*f7; + f12 = f3*f5; + f1 = f1*f5; + f5 = f4*f6; + f8 = f9+f8; + f13 = f3*f6; + f11 = f11+f12; + f6 = f2*f6; + f9 = f9+f10; + f4 = f4*f7; + f1 = f1-f5; + f3 = f3*f7; + f10 = f11+f6; + f9 = f9+f4; + f1 = f1-f3; + f3 = f8+f13; + f2 = f2*f7; + r0 = (r0 + -1)|0; + f4 = f3-f2; + f3 = f10-f5; + f2 = f9-f13; + f1 = f1-f6; + f0 = f0+f17; + if(r0 ==0) //_LBB26_165 +{ +break _161; +} +else{ +continue _253; +} +} +} +else{ + if(r0 ==3) //_LBB26_183 +{ + r3 = -16; + r0 = 16; + f0 = 0; + f1 = 1; + f2 = f0; +_260: while(true){ + f3 = r3; //fitos r3, f3 + f4 = 6; + f3 = f3*f4; + f5 = 0.5; + f6 = 3.5; + f7 = 4.2000002861022949; + f8 = 5.5999999046325684; + f9 = 2.2749998569488525; + f10 = 0.69999998807907104; + f11 = 5.0750002861022949; + f3 = f3*f5; + f5 = f2+f0; + f6 = f1+f6; + f7 = f1+f7; + f8 = f1+f8; + f9 = f1+f9; + f10 = f1+f10; + f11 = f1+f11; + r5 = 0; +_262: while(true){ + heap32[(g0)] = 136; + _Znwj(i7); + r7 = r_g0; + r8 = _ZTV7RagDoll; + r9 = r7 >> 2; + r10 = heap32[(r1+1)]; + r8 = (r8 + 8)|0; + heap32[(r9)] = r8; + heap32[(r9+1)] = r10; + r8 = heap32[(r2)]; + r9 = (r8 + 1)|0; + heap32[(r2)] = r9; + f12 = r5; //fitos r5, f12 + heap32[(g0)] = 75; + f12 = f12*f4; + malloc(i7); + r9 = r_g0; + f12 = f12+f3; + if(r9 !=0) //_LBB26_187 +{ + r10 = 0; + r11 = (r9 + 4)|0; + r10 = (r10 - r11)|0; + r10 = r10 & 15; + r10 = (r9 + r10)|0; + r11 = (r10 + 4)|0; + r10 = r10 >> 2; + heap32[(r10)] = r9; + r9 = r11; +} + r10 = r9 >> 2; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 1065353216; + heap32[(r10+4)] = 1065353216; + heap32[(r10+5)] = 1065353216; + r11 = _ZTV14btCapsuleShape; + heap32[(r10+6)] = 0; + r11 = (r11 + 8)|0; + heap32[(r10+11)] = 1025758986; + heap32[(r10)] = r11; + heap32[(r10+1)] = 10; + heap32[(r10+13)] = 1; + heap32[(r10+7)] = 1057384039; + heap32[(r10+8)] = 1051931443; + heap32[(r10+9)] = 1057384039; + r12 = r7 >> 2; + heap32[(r10+10)] = 0; + r10 = (r8 + 2)|0; + heap32[(r12+2)] = r9; + heap32[(r2)] = r10; + heap32[(g0)] = 75; + malloc(i7); + r9 = r_g0; + if(r9 !=0) //_LBB26_190 +{ + r10 = 0; + r13 = (r9 + 4)|0; + r10 = (r10 - r13)|0; + r10 = r10 & 15; + r10 = (r9 + r10)|0; + r13 = (r10 + 4)|0; + r10 = r10 >> 2; + heap32[(r10)] = r9; + r9 = r13; +} + r10 = r9 >> 2; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 1065353216; + heap32[(r10+4)] = 1065353216; + heap32[(r10+5)] = 1065353216; + heap32[(r10+6)] = 0; + heap32[(r10+11)] = 1025758986; + heap32[(r10)] = r11; + heap32[(r10+1)] = 10; + heap32[(r10+13)] = 1; + heap32[(r10+7)] = 1057384039; + heap32[(r10+8)] = 1056629064; + heap32[(r10+9)] = 1057384039; + heap32[(r10+10)] = 0; + r10 = (r8 + 3)|0; + heap32[(r12+3)] = r9; + heap32[(r2)] = r10; + heap32[(g0)] = 75; + malloc(i7); + r9 = r_g0; + if(r9 !=0) //_LBB26_193 +{ + r10 = 0; + r13 = (r9 + 4)|0; + r10 = (r10 - r13)|0; + r10 = r10 & 15; + r10 = (r9 + r10)|0; + r13 = (r10 + 4)|0; + r10 = r10 >> 2; + heap32[(r10)] = r9; + r9 = r13; +} + r10 = r9 >> 2; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 1065353216; + heap32[(r10+4)] = 1065353216; + heap32[(r10+5)] = 1065353216; + heap32[(r10+6)] = 0; + heap32[(r10+11)] = 1025758986; + heap32[(r10)] = r11; + heap32[(r10+1)] = 10; + heap32[(r10+13)] = 1; + heap32[(r10+7)] = 1051931443; + heap32[(r10+8)] = 1035154227; + heap32[(r10+9)] = 1051931443; + heap32[(r10+10)] = 0; + r10 = (r8 + 4)|0; + heap32[(r12+4)] = r9; + heap32[(r2)] = r10; + heap32[(g0)] = 75; + malloc(i7); + r9 = r_g0; + if(r9 !=0) //_LBB26_196 +{ + r10 = 0; + r13 = (r9 + 4)|0; + r10 = (r10 - r13)|0; + r10 = r10 & 15; + r10 = (r9 + r10)|0; + r13 = (r10 + 4)|0; + r10 = r10 >> 2; + heap32[(r10)] = r9; + r9 = r13; +} + r10 = r9 >> 2; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 1065353216; + heap32[(r10+4)] = 1065353216; + heap32[(r10+5)] = 1065353216; + heap32[(r10+6)] = 0; + heap32[(r10+11)] = 1025758986; + heap32[(r10)] = r11; + heap32[(r10+1)] = 10; + heap32[(r10+13)] = 1; + heap32[(r10+7)] = 1048240456; + heap32[(r10+8)] = 1061788057; + heap32[(r10+9)] = 1048240456; + heap32[(r10+10)] = 0; + r10 = (r8 + 5)|0; + heap32[(r12+5)] = r9; + heap32[(r2)] = r10; + heap32[(g0)] = 75; + malloc(i7); + r9 = r_g0; + if(r9 !=0) //_LBB26_199 +{ + r10 = 0; + r13 = (r9 + 4)|0; + r10 = (r10 - r13)|0; + r10 = r10 & 15; + r10 = (r9 + r10)|0; + r13 = (r10 + 4)|0; + r10 = r10 >> 2; + heap32[(r10)] = r9; + r9 = r13; +} + r10 = r9 >> 2; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 1065353216; + heap32[(r10+4)] = 1065353216; + heap32[(r10+5)] = 1065353216; + heap32[(r10+6)] = 0; + heap32[(r10+11)] = 1025758986; + heap32[(r10)] = r11; + heap32[(r10+1)] = 10; + heap32[(r10+13)] = 1; + heap32[(r10+7)] = 1043542835; + heap32[(r10+8)] = 1059439248; + heap32[(r10+9)] = 1043542835; + heap32[(r10+10)] = 0; + r10 = (r8 + 6)|0; + heap32[(r12+6)] = r9; + heap32[(r2)] = r10; + heap32[(g0)] = 75; + malloc(i7); + r9 = r_g0; + if(r9 !=0) //_LBB26_202 +{ + r10 = 0; + r13 = (r9 + 4)|0; + r10 = (r10 - r13)|0; + r10 = r10 & 15; + r10 = (r9 + r10)|0; + r13 = (r10 + 4)|0; + r10 = r10 >> 2; + heap32[(r10)] = r9; + r9 = r13; +} + r10 = r9 >> 2; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 1065353216; + heap32[(r10+4)] = 1065353216; + heap32[(r10+5)] = 1065353216; + heap32[(r10+6)] = 0; + heap32[(r10+11)] = 1025758986; + heap32[(r10)] = r11; + heap32[(r10+1)] = 10; + heap32[(r10+13)] = 1; + heap32[(r10+7)] = 1048240456; + heap32[(r10+8)] = 1061788057; + heap32[(r10+9)] = 1048240456; + heap32[(r10+10)] = 0; + r10 = (r8 + 7)|0; + heap32[(r12+7)] = r9; + heap32[(r2)] = r10; + heap32[(g0)] = 75; + malloc(i7); + r9 = r_g0; + if(r9 !=0) //_LBB26_205 +{ + r10 = 0; + r13 = (r9 + 4)|0; + r10 = (r10 - r13)|0; + r10 = r10 & 15; + r10 = (r9 + r10)|0; + r13 = (r10 + 4)|0; + r10 = r10 >> 2; + heap32[(r10)] = r9; + r9 = r13; +} + r10 = r9 >> 2; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 1065353216; + heap32[(r10+4)] = 1065353216; + heap32[(r10+5)] = 1065353216; + heap32[(r10+6)] = 0; + heap32[(r10+11)] = 1025758986; + heap32[(r10)] = r11; + heap32[(r10+1)] = 10; + heap32[(r10+13)] = 1; + heap32[(r10+7)] = 1043542835; + heap32[(r10+8)] = 1059439248; + heap32[(r10+9)] = 1043542835; + heap32[(r10+10)] = 0; + r10 = (r8 + 8)|0; + heap32[(r12+8)] = r9; + heap32[(r2)] = r10; + heap32[(g0)] = 75; + malloc(i7); + r9 = r_g0; + if(r9 !=0) //_LBB26_208 +{ + r10 = 0; + r13 = (r9 + 4)|0; + r10 = (r10 - r13)|0; + r10 = r10 & 15; + r10 = (r9 + r10)|0; + r13 = (r10 + 4)|0; + r10 = r10 >> 2; + heap32[(r10)] = r9; + r9 = r13; +} + r10 = r9 >> 2; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 1065353216; + heap32[(r10+4)] = 1065353216; + heap32[(r10+5)] = 1065353216; + heap32[(r10+6)] = 0; + heap32[(r10+11)] = 1025758986; + heap32[(r10)] = r11; + heap32[(r10+1)] = 10; + heap32[(r10+13)] = 1; + heap32[(r10+7)] = 1043542835; + heap32[(r10+8)] = 1058264843; + heap32[(r10+9)] = 1043542835; + heap32[(r10+10)] = 0; + r10 = (r8 + 9)|0; + heap32[(r12+9)] = r9; + heap32[(r2)] = r10; + heap32[(g0)] = 75; + malloc(i7); + r9 = r_g0; + if(r9 !=0) //_LBB26_211 +{ + r10 = 0; + r13 = (r9 + 4)|0; + r10 = (r10 - r13)|0; + r10 = r10 & 15; + r10 = (r9 + r10)|0; + r13 = (r10 + 4)|0; + r10 = r10 >> 2; + heap32[(r10)] = r9; + r9 = r13; +} + r10 = r9 >> 2; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 1065353216; + heap32[(r10+4)] = 1065353216; + heap32[(r10+5)] = 1065353216; + heap32[(r10+6)] = 0; + heap32[(r10+11)] = 1025758986; + heap32[(r10)] = r11; + heap32[(r10+1)] = 10; + heap32[(r10+13)] = 1; + heap32[(r10+7)] = 1041194025; + heap32[(r10+8)] = 1054867456; + heap32[(r10+9)] = 1041194025; + heap32[(r10+10)] = 0; + r10 = (r8 + 10)|0; + heap32[(r12+10)] = r9; + heap32[(r2)] = r10; + heap32[(g0)] = 75; + malloc(i7); + r9 = r_g0; + if(r9 !=0) //_LBB26_214 +{ + r10 = 0; + r13 = (r9 + 4)|0; + r10 = (r10 - r13)|0; + r10 = r10 & 15; + r10 = (r9 + r10)|0; + r13 = (r10 + 4)|0; + r10 = r10 >> 2; + heap32[(r10)] = r9; + r9 = r13; +} + r10 = r9 >> 2; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 1065353216; + heap32[(r10+4)] = 1065353216; + heap32[(r10+5)] = 1065353216; + heap32[(r10+6)] = 0; + heap32[(r10+11)] = 1025758986; + heap32[(r10)] = r11; + heap32[(r10+1)] = 10; + heap32[(r10+13)] = 1; + heap32[(r10+7)] = 1043542835; + heap32[(r10+8)] = 1058264843; + heap32[(r10+9)] = 1043542835; + heap32[(r10+10)] = 0; + r8 = (r8 + 11)|0; + heap32[(r12+11)] = r9; + heap32[(r2)] = r8; + heap32[(g0)] = 75; + malloc(i7); + r8 = r_g0; + if(r8 !=0) //_LBB26_217 +{ + r9 = 0; + r10 = (r8 + 4)|0; + r9 = (r9 - r10)|0; + r9 = r9 & 15; + r9 = (r8 + r9)|0; + r10 = (r9 + 4)|0; + r9 = r9 >> 2; + heap32[(r9)] = r8; + r8 = r10; +} + r9 = r8 >> 2; + heap32[(r9+2)] = 0; + heap32[(r9+3)] = 1065353216; + heap32[(r9+4)] = 1065353216; + heap32[(r9+5)] = 1065353216; + heap32[(r9+6)] = 0; + heap32[(r9+11)] = 1025758986; + heap32[(r9)] = r11; + heap32[(r9+1)] = 10; + heap32[(r9+13)] = 1; + heap32[(r9+7)] = 1041194025; + heap32[(r9+8)] = 1054867456; + heap32[(r9+9)] = 1041194025; + heap32[(r9+10)] = 0; + heap32[(r12+12)] = r8; + r8 = heap32[(r12+2)]; + r9 = sp + -880; + r10 = r9 >> 2; + heap32[(fp+-220)] = 1065353216; + heap32[(r10+1)] = 0; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 0; + heap32[(r10+4)] = 0; + heap32[(r10+5)] = 1065353216; + heap32[(r10+6)] = 0; + heap32[(r10+7)] = 0; + heap32[(r10+8)] = 0; + heap32[(r10+9)] = 0; + heap32[(r10+10)] = 1065353216; + f13 = 0; + f13 = f12+f13; + heap32[(r10+11)] = 0; + heapFloat[(r10+12)] = f13; + heapFloat[(r10+13)] = f6; + heapFloat[(r10+14)] = f5; + heap32[(r10+15)] = 0; + heap32[(g0)] = r7; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r8; + _ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7); + heap32[(r12+13)] = r_g0; + r8 = heap32[(r12+3)]; + r9 = sp + -816; + r10 = r9 >> 2; + heap32[(fp+-204)] = 1065353216; + heap32[(r10+1)] = 0; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 0; + heap32[(r10+4)] = 0; + heap32[(r10+5)] = 1065353216; + heap32[(r10+6)] = 0; + heap32[(r10+7)] = 0; + heap32[(r10+8)] = 0; + heap32[(r10+9)] = 0; + heap32[(r10+10)] = 1065353216; + heap32[(r10+11)] = 0; + heapFloat[(r10+12)] = f13; + heapFloat[(r10+13)] = f7; + heapFloat[(r10+14)] = f5; + heap32[(r10+15)] = 0; + heap32[(g0)] = r7; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r8; + _ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7); + heap32[(r12+14)] = r_g0; + r8 = heap32[(r12+4)]; + r9 = sp + -752; + r10 = r9 >> 2; + heap32[(fp+-188)] = 1065353216; + heap32[(r10+1)] = 0; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 0; + heap32[(r10+4)] = 0; + heap32[(r10+5)] = 1065353216; + heap32[(r10+6)] = 0; + heap32[(r10+7)] = 0; + heap32[(r10+8)] = 0; + heap32[(r10+9)] = 0; + heap32[(r10+10)] = 1065353216; + heap32[(r10+11)] = 0; + heapFloat[(r10+12)] = f13; + heapFloat[(r10+13)] = f8; + heapFloat[(r10+14)] = f5; + heap32[(r10+15)] = 0; + heap32[(g0)] = r7; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r8; + _ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7); + heap32[(r12+15)] = r_g0; + r8 = heap32[(r12+5)]; + r9 = sp + -688; + r10 = r9 >> 2; + heap32[(fp+-172)] = 1065353216; + heap32[(r10+1)] = 0; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 0; + heap32[(r10+4)] = 0; + heap32[(r10+5)] = 1065353216; + heap32[(r10+6)] = 0; + heap32[(r10+7)] = 0; + heap32[(r10+8)] = 0; + heap32[(r10+9)] = 0; + f13 = -0.62999999523162842; + heap32[(r10+10)] = 1065353216; + f13 = f12+f13; + heap32[(r10+11)] = 0; + heapFloat[(r10+12)] = f13; + heapFloat[(r10+13)] = f9; + heapFloat[(r10+14)] = f5; + heap32[(r10+15)] = 0; + heap32[(g0)] = r7; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r8; + _ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7); + heap32[(r12+16)] = r_g0; + r8 = heap32[(r12+6)]; + r9 = sp + -624; + r10 = r9 >> 2; + heap32[(fp+-156)] = 1065353216; + heap32[(r10+1)] = 0; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 0; + heap32[(r10+4)] = 0; + heap32[(r10+5)] = 1065353216; + heap32[(r10+6)] = 0; + heap32[(r10+7)] = 0; + heap32[(r10+8)] = 0; + heap32[(r10+9)] = 0; + heap32[(r10+10)] = 1065353216; + heap32[(r10+11)] = 0; + heapFloat[(r10+12)] = f13; + heapFloat[(r10+13)] = f10; + heapFloat[(r10+14)] = f5; + heap32[(r10+15)] = 0; + heap32[(g0)] = r7; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r8; + _ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7); + heap32[(r12+17)] = r_g0; + r8 = heap32[(r12+7)]; + r9 = sp + -560; + r10 = r9 >> 2; + heap32[(fp+-140)] = 1065353216; + heap32[(r10+1)] = 0; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 0; + heap32[(r10+4)] = 0; + heap32[(r10+5)] = 1065353216; + heap32[(r10+6)] = 0; + heap32[(r10+7)] = 0; + heap32[(r10+8)] = 0; + heap32[(r10+9)] = 0; + f13 = 0.62999999523162842; + heap32[(r10+10)] = 1065353216; + f13 = f12+f13; + heap32[(r10+11)] = 0; + heapFloat[(r10+12)] = f13; + heapFloat[(r10+13)] = f9; + heapFloat[(r10+14)] = f5; + heap32[(r10+15)] = 0; + heap32[(g0)] = r7; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r8; + _ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7); + heap32[(r12+18)] = r_g0; + r8 = heap32[(r12+8)]; + r9 = sp + -496; + r10 = r9 >> 2; + heap32[(fp+-124)] = 1065353216; + heap32[(r10+1)] = 0; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 0; + heap32[(r10+4)] = 0; + heap32[(r10+5)] = 1065353216; + heap32[(r10+6)] = 0; + heap32[(r10+7)] = 0; + heap32[(r10+8)] = 0; + heap32[(r10+9)] = 0; + heap32[(r10+10)] = 1065353216; + heap32[(r10+11)] = 0; + heapFloat[(r10+12)] = f13; + heapFloat[(r10+13)] = f10; + heapFloat[(r10+14)] = f5; + heap32[(r10+15)] = 0; + heap32[(g0)] = r7; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r8; + _ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7); + heap32[(r12+19)] = r_g0; + r8 = heap32[(r12+9)]; + r9 = sp + -432; + r10 = r9 >> 2; + heap32[(fp+-108)] = -1287930578; + heap32[(r10+1)] = -1082130432; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 0; + heap32[(r10+4)] = 1065353216; + heap32[(r10+5)] = -1287930578; + heap32[(r10+6)] = 0; + heap32[(r10+7)] = 0; + heap32[(r10+8)] = 0; + heap32[(r10+9)] = 0; + f13 = -1.2250000238418579; + heap32[(r10+10)] = 1065353216; + f13 = f12+f13; + heap32[(r10+11)] = 0; + heapFloat[(r10+12)] = f13; + heapFloat[(r10+13)] = f11; + heapFloat[(r10+14)] = f5; + heap32[(r10+15)] = 0; + heap32[(g0)] = r7; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r8; + _ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7); + heap32[(r12+20)] = r_g0; + r8 = heap32[(r12+10)]; + r9 = sp + -368; + r10 = r9 >> 2; + heap32[(fp+-92)] = -1287930578; + heap32[(r10+1)] = -1082130432; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 0; + heap32[(r10+4)] = 1065353216; + heap32[(r10+5)] = -1287930578; + heap32[(r10+6)] = 0; + heap32[(r10+7)] = 0; + heap32[(r10+8)] = 0; + heap32[(r10+9)] = 0; + f13 = -2.4500000476837158; + heap32[(r10+10)] = 1065353216; + f13 = f12+f13; + heap32[(r10+11)] = 0; + heapFloat[(r10+12)] = f13; + heapFloat[(r10+13)] = f11; + heapFloat[(r10+14)] = f5; + heap32[(r10+15)] = 0; + heap32[(g0)] = r7; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r8; + _ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7); + heap32[(r12+21)] = r_g0; + r8 = heap32[(r12+11)]; + r9 = sp + -304; + r10 = r9 >> 2; + heap32[(fp+-76)] = -1287930578; + heap32[(r10+1)] = 1065353216; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 0; + heap32[(r10+4)] = -1082130432; + heap32[(r10+5)] = -1287930578; + heap32[(r10+6)] = 0; + heap32[(r10+7)] = 0; + heap32[(r10+8)] = -2147483648; + heap32[(r10+9)] = 0; + f13 = 1.2250000238418579; + heap32[(r10+10)] = 1065353216; + f13 = f12+f13; + heap32[(r10+11)] = 0; + heapFloat[(r10+12)] = f13; + heapFloat[(r10+13)] = f11; + heapFloat[(r10+14)] = f5; + heap32[(r10+15)] = 0; + heap32[(g0)] = r7; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r8; + _ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7); + heap32[(r12+22)] = r_g0; + r8 = heap32[(r12+12)]; + r9 = sp + -240; + r10 = r9 >> 2; + heap32[(fp+-60)] = -1287930578; + heap32[(r10+1)] = 1065353216; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 0; + heap32[(r10+4)] = -1082130432; + heap32[(r10+5)] = -1287930578; + heap32[(r10+6)] = 0; + heap32[(r10+7)] = 0; + heap32[(r10+8)] = -2147483648; + heap32[(r10+9)] = 0; + f13 = 2.4500000476837158; + heap32[(r10+10)] = 1065353216; + f12 = f12+f13; + heap32[(r10+11)] = 0; + heapFloat[(r10+12)] = f12; + heapFloat[(r10+13)] = f11; + heapFloat[(r10+14)] = f5; + heap32[(r10+15)] = 0; + heap32[(g0)] = r7; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r8; + _ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7); + r9 = 0; + heap32[(r12+23)] = r_g0; +_297: while(true){ + r8 = r9 << 2; + r8 = (r7 - r8)|0; + r8 = r8 >> 2; + r10 = heap32[(r8+13)]; + r10 = r10 >> 2; + heap32[(r10+109)] = 1028443341; + heap32[(r10+110)] = 1062836634; + r10 = heap32[(r8+13)]; + r10 = r10 >> 2; + heap32[(r10+55)] = 1061997773; + r8 = heap32[(r8+13)]; + r8 = r8 >> 2; + r9 = (r9 + -1)|0; + heap32[(r8+116)] = 1070386381; + heap32[(r8+117)] = 1075838976; +if(!(r9 !=-11)) //_LBB26_219 +{ +break _297; +} +} + heap32[(g0)] = 748; + _Znwj(i7); + r8 = r_g0; + r9 = heap32[(r12+14)]; + r10 = heap32[(r12+13)]; + r11 = r8 >> 2; + heap32[(r11+1)] = 4; + heap32[(r11+2)] = -1; + r13 = 0; + heap32[(r11+3)] = -1; + heap8[r8+16] = r13; + heap32[(r11+5)] = r10; + heap32[(r11+6)] = r9; + r9 = _ZTV17btHingeConstraint; + heap32[(r11+7)] = 0; + r9 = (r9 + 8)|0; + heap32[(r11+8)] = 1050253722; + heap32[(r11)] = r9; + heap32[(r11+135)] = -1287930578; + heap32[(r11+136)] = 0; + heap32[(r11+137)] = 1065353216; + heap32[(r11+138)] = 0; + heap32[(r11+139)] = -2147483648; + heap32[(r11+140)] = 1065353216; + heap32[(r11+141)] = 0; + heap32[(r11+142)] = 0; + heap32[(r11+143)] = -1082130432; + heap32[(r11+144)] = -2147483648; + heap32[(r11+145)] = -1287930578; + heap32[(r11+146)] = 0; + heap32[(r11+147)] = 0; + heap32[(r11+148)] = 1057384039; + heap32[(r11+149)] = 0; + heap32[(r11+150)] = 0; + heap32[(r11+151)] = -1287930578; + heap32[(r11+152)] = 0; + heap32[(r11+153)] = 1065353216; + heap32[(r11+154)] = 0; + heap32[(r11+155)] = -2147483648; + heap32[(r11+156)] = 1065353216; + heap32[(r11+157)] = 0; + heap32[(r11+158)] = 0; + heap32[(r11+159)] = -1082130432; + heap32[(r11+160)] = -2147483648; + heap32[(r11+161)] = -1287930578; + heap32[(r11+162)] = 0; + heap32[(r11+163)] = 0; + heap32[(r11+164)] = -1090099609; + heap32[(r11+165)] = 0; + heap32[(r11+166)] = 0; + heap8[r8+720] = r13; + heap8[r8+721] = r13; + heap8[r8+723] = r13; + heap8[r8+724] = r4; + heap8[r8+725] = r13; + heap32[(r11+183)] = 0; + heap32[(r11+172)] = 1065353216; + heap32[(r11+173)] = -1082130432; + heap32[(r11+170)] = 1050253722; + heap32[(r11+171)] = 1065353216; + heap32[(r11+169)] = 1063675494; + heap8[r8+722] = r13; + heap32[(r11+179)] = 1065353216; + heap32[(g0)] = -1085730853; + heap32[(g0+1)] = 1086918619; + fmodf(i7); + f12 = f_g0; + f13 = -3.1415927410125732; + if(f12 >=f13) //_LBB26_222 +{ + f14 = 3.1415927410125732; + if(f12 >f14) //_LBB26_224 +{ + f14 = -6.2831854820251465; + f12 = f12+f14; +} +} +else{ + f14 = 6.2831854820251465; + f12 = f12+f14; +} + r10 = r8 >> 2; + heapFloat[(r10+172)] = f12; + heap32[(g0)] = 1070141403; + heap32[(g0+1)] = 1086918619; + fmodf(i7); + f12 = f_g0; + if(f12 >=f13) //_LBB26_227 +{ + f14 = 3.1415927410125732; + if(f12 >f14) //_LBB26_229 +{ + f14 = -6.2831854820251465; + f12 = f12+f14; +} +} +else{ + f14 = 6.2831854820251465; + f12 = f12+f14; +} + heapFloat[(r10+173)] = f12; + heap32[(r10+169)] = 1063675494; + heap32[(r10+170)] = 1050253722; + heap32[(r10+171)] = 1065353216; + heap32[(r12+24)] = r8; + r10 = heap32[(r12+1)]; + r11 = r10 >> 2; + r11 = heap32[(r11)]; + r11 = r11 >> 2; + r11 = heap32[(r11+13)]; + heap32[(g0)] = r10; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r11)>>2](i7); + heap32[(g0)] = 596; + _Znwj(i7); + r10 = heap32[(r12+15)]; + r11 = heap32[(r12+14)]; + r14 = r_g0 >> 2; + heap32[(r14+1)] = 5; + heap32[(r14+2)] = -1; + heap32[(r14+3)] = -1; + heap8[r_g0+16] = r13; + heap32[(r14+5)] = r11; + heap32[(r14+6)] = r10; + heap32[(r14+7)] = 0; + r10 = _ZTV21btConeTwistConstraint; + heap32[(r14+8)] = 1050253722; + r10 = (r10 + 8)|0; + heap32[(r14)] = r10; + heap32[(r14+72)] = -1287930578; + heap32[(r14+73)] = -1082130432; + heap32[(r14+74)] = 0; + heap32[(r14+75)] = 0; + heap32[(r14+76)] = 1065353216; + heap32[(r14+77)] = -1287930578; + heap32[(r14+78)] = 0; + heap32[(r14+79)] = 0; + heap32[(r14+80)] = -2147483648; + heap32[(r14+81)] = 0; + heap32[(r14+82)] = 1065353216; + heap32[(r14+83)] = 0; + heap32[(r14+84)] = 0; + heap32[(r14+85)] = 1065772647; + heap32[(r14+86)] = 0; + heap32[(r14+87)] = 0; + heap32[(r14+88)] = -1287930578; + heap32[(r14+89)] = -1082130432; + heap32[(r14+90)] = 0; + heap32[(r14+91)] = 0; + heap32[(r14+92)] = 1065353216; + heap32[(r14+93)] = -1287930578; + heap32[(r14+94)] = 0; + heap32[(r14+95)] = 0; + heap32[(r14+96)] = -2147483648; + heap32[(r14+97)] = 0; + heap32[(r14+98)] = 1065353216; + heap32[(r14+99)] = 0; + heap32[(r14+100)] = 0; + heap32[(r14+101)] = -1090854584; + heap32[(r14+102)] = 0; + heap32[(r14+103)] = 0; + heap8[r_g0+540] = r13; + heap32[(r14+128)] = 0; + heap32[(r14+140)] = -1082130432; + heap32[(r14+107)] = 1008981770; + heap32[(r14+111)] = 1028443341; + heap32[(r14+145)] = 0; + heap32[(r14+146)] = 0; + heap32[(r14+147)] = 1060320051; + heap32[(r14+148)] = 0; + heap32[(r14+108)] = 1061752795; + heap32[(r14+109)] = 1061752795; + heap32[(r14+110)] = 1070141403; + heap32[(r14+104)] = 1065353216; + heap32[(r14+105)] = 1050253722; + heap32[(r14+106)] = 1065353216; + heap32[(r12+25)] = r_g0; + r11 = heap32[(r12+1)]; + r14 = r11 >> 2; + r14 = heap32[(r14)]; + r14 = r14 >> 2; + r14 = heap32[(r14+13)]; + heap32[(g0)] = r11; + heap32[(g0+1)] = r_g0; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r14)>>2](i7); + heap32[(g0)] = 596; + _Znwj(i7); + r11 = heap32[(r12+16)]; + r14 = heap32[(r12+13)]; + r15 = r_g0 >> 2; + heap32[(r15+1)] = 5; + heap32[(r15+2)] = -1; + heap32[(r15+3)] = -1; + heap8[r_g0+16] = r13; + heap32[(r15+5)] = r14; + heap32[(r15+6)] = r11; + heap32[(r15+7)] = 0; + heap32[(r15+8)] = 1050253722; + heap32[(r15)] = r10; + heap32[(r15+72)] = -1087044364; + heap32[(r15+73)] = -1087044366; + heap32[(r15+74)] = 0; + heap32[(r15+75)] = 0; + heap32[(r15+76)] = 1060439282; + heap32[(r15+77)] = -1087044364; + heap32[(r15+78)] = 0; + heap32[(r15+79)] = 0; + heap32[(r15+80)] = -2147483648; + heap32[(r15+81)] = 0; + heap32[(r15+82)] = 1065353216; + heap32[(r15+83)] = 0; + heap32[(r15+84)] = -1088338002; + heap32[(r15+85)] = -1095552205; + heap32[(r15+86)] = 0; + heap32[(r15+87)] = 0; + heap32[(r15+88)] = -1087044364; + heap32[(r15+89)] = -1087044366; + heap32[(r15+90)] = 0; + heap32[(r15+91)] = 0; + heap32[(r15+92)] = 1060439282; + heap32[(r15+93)] = -1087044364; + heap32[(r15+94)] = 0; + heap32[(r15+95)] = 0; + heap32[(r15+96)] = -2147483648; + heap32[(r15+97)] = 0; + heap32[(r15+98)] = 1065353216; + heap32[(r15+99)] = 0; + heap32[(r15+100)] = 0; + heap32[(r15+101)] = 1061788057; + heap32[(r15+102)] = 0; + heap32[(r15+103)] = 0; + heap8[r_g0+540] = r13; + heap32[(r15+128)] = 0; + heap32[(r15+140)] = -1082130432; + heap32[(r15+107)] = 1008981770; + heap32[(r15+111)] = 1028443341; + heap32[(r15+145)] = 0; + heap32[(r15+146)] = 0; + heap32[(r15+147)] = 1060320051; + heap32[(r15+148)] = 0; + heap32[(r15+108)] = 1061752795; + heap32[(r15+109)] = 1061752795; + heap32[(r15+110)] = 0; + heap32[(r15+104)] = 1065353216; + heap32[(r15+105)] = 1050253722; + heap32[(r15+106)] = 1065353216; + heap32[(r12+26)] = r_g0; + r11 = heap32[(r12+1)]; + r14 = r11 >> 2; + r14 = heap32[(r14)]; + r14 = r14 >> 2; + r14 = heap32[(r14+13)]; + heap32[(g0)] = r11; + heap32[(g0+1)] = r_g0; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r14)>>2](i7); + heap32[(g0)] = 748; + _Znwj(i7); + r8 = r_g0; + r11 = heap32[(r12+17)]; + r14 = heap32[(r12+16)]; + r15 = r8 >> 2; + heap32[(r15+1)] = 4; + heap32[(r15+2)] = -1; + heap32[(r15+3)] = -1; + heap8[r8+16] = r13; + heap32[(r15+5)] = r14; + heap32[(r15+6)] = r11; + heap32[(r15+7)] = 0; + heap32[(r15+8)] = 1050253722; + heap32[(r15)] = r9; + heap32[(r15+135)] = -1287930578; + heap32[(r15+136)] = 0; + heap32[(r15+137)] = 1065353216; + heap32[(r15+138)] = 0; + heap32[(r15+139)] = -2147483648; + heap32[(r15+140)] = 1065353216; + heap32[(r15+141)] = 0; + heap32[(r15+142)] = 0; + heap32[(r15+143)] = -1082130432; + heap32[(r15+144)] = -2147483648; + heap32[(r15+145)] = -1287930578; + heap32[(r15+146)] = 0; + heap32[(r15+147)] = 0; + heap32[(r15+148)] = -1085695591; + heap32[(r15+149)] = 0; + heap32[(r15+150)] = 0; + heap32[(r15+151)] = -1287930578; + heap32[(r15+152)] = 0; + heap32[(r15+153)] = 1065353216; + heap32[(r15+154)] = 0; + heap32[(r15+155)] = -2147483648; + heap32[(r15+156)] = 1065353216; + heap32[(r15+157)] = 0; + heap32[(r15+158)] = 0; + heap32[(r15+159)] = -1082130432; + heap32[(r15+160)] = -2147483648; + heap32[(r15+161)] = -1287930578; + heap32[(r15+162)] = 0; + heap32[(r15+163)] = 0; + heap32[(r15+164)] = 1059439248; + heap32[(r15+165)] = 0; + heap32[(r15+166)] = 0; + heap8[r8+720] = r13; + heap8[r8+721] = r13; + heap8[r8+723] = r13; + heap8[r8+724] = r4; + heap8[r8+725] = r13; + heap32[(r15+183)] = 0; + heap32[(r15+172)] = 1065353216; + heap32[(r15+173)] = -1082130432; + heap32[(r15+170)] = 1050253722; + heap32[(r15+171)] = 1065353216; + heap32[(r15+169)] = 1063675494; + heap8[r8+722] = r13; + heap32[(r15+179)] = 1065353216; + heap32[(g0)] = 0; + heap32[(g0+1)] = 1086918619; + fmodf(i7); + f12 = f_g0; + if(f12 >=f13) //_LBB26_232 +{ + f14 = 3.1415927410125732; + if(f12 >f14) //_LBB26_234 +{ + f14 = -6.2831854820251465; + f12 = f12+f14; +} +} +else{ + f14 = 6.2831854820251465; + f12 = f12+f14; +} + r11 = r8 >> 2; + heapFloat[(r11+172)] = f12; + heap32[(g0)] = 1070141403; + heap32[(g0+1)] = 1086918619; + fmodf(i7); + f12 = f_g0; + if(f12 >=f13) //_LBB26_237 +{ + f14 = 3.1415927410125732; + if(f12 >f14) //_LBB26_239 +{ + f14 = -6.2831854820251465; + f12 = f12+f14; +} +} +else{ + f14 = 6.2831854820251465; + f12 = f12+f14; +} + heapFloat[(r11+173)] = f12; + heap32[(r11+169)] = 1063675494; + heap32[(r11+170)] = 1050253722; + heap32[(r11+171)] = 1065353216; + heap32[(r12+27)] = r8; + r11 = heap32[(r12+1)]; + r14 = r11 >> 2; + r14 = heap32[(r14)]; + r14 = r14 >> 2; + r14 = heap32[(r14+13)]; + heap32[(g0)] = r11; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r14)>>2](i7); + heap32[(g0)] = 596; + _Znwj(i7); + r11 = heap32[(r12+18)]; + r14 = heap32[(r12+13)]; + r15 = r_g0 >> 2; + heap32[(r15+1)] = 5; + heap32[(r15+2)] = -1; + heap32[(r15+3)] = -1; + heap8[r_g0+16] = r13; + heap32[(r15+5)] = r14; + heap32[(r15+6)] = r11; + heap32[(r15+7)] = 0; + heap32[(r15+8)] = 1050253722; + heap32[(r15)] = r10; + heap32[(r15+72)] = 1060439283; + heap32[(r15+73)] = -1087044365; + heap32[(r15+74)] = 0; + heap32[(r15+75)] = 0; + heap32[(r15+76)] = 1060439283; + heap32[(r15+77)] = 1060439283; + heap32[(r15+78)] = 0; + heap32[(r15+79)] = 0; + heap32[(r15+80)] = -2147483648; + heap32[(r15+81)] = 0; + heap32[(r15+82)] = 1065353216; + heap32[(r15+83)] = 0; + heap32[(r15+84)] = 1059145646; + heap32[(r15+85)] = -1095552205; + heap32[(r15+86)] = 0; + heap32[(r15+87)] = 0; + heap32[(r15+88)] = 1060439283; + heap32[(r15+89)] = -1087044365; + heap32[(r15+90)] = 0; + heap32[(r15+91)] = 0; + heap32[(r15+92)] = 1060439283; + heap32[(r15+93)] = 1060439283; + heap32[(r15+94)] = 0; + heap32[(r15+95)] = 0; + heap32[(r15+96)] = -2147483648; + heap32[(r15+97)] = 0; + heap32[(r15+98)] = 1065353216; + heap32[(r15+99)] = 0; + heap32[(r15+100)] = 0; + heap32[(r15+101)] = 1061788057; + heap32[(r15+102)] = 0; + heap32[(r15+103)] = 0; + heap8[r_g0+540] = r13; + heap32[(r15+128)] = 0; + heap32[(r15+140)] = -1082130432; + heap32[(r15+107)] = 1008981770; + heap32[(r15+111)] = 1028443341; + heap32[(r15+145)] = 0; + heap32[(r15+146)] = 0; + heap32[(r15+147)] = 1060320051; + heap32[(r15+148)] = 0; + heap32[(r15+108)] = 1061752795; + heap32[(r15+109)] = 1061752795; + heap32[(r15+110)] = 0; + heap32[(r15+104)] = 1065353216; + heap32[(r15+105)] = 1050253722; + heap32[(r15+106)] = 1065353216; + heap32[(r12+28)] = r_g0; + r11 = heap32[(r12+1)]; + r14 = r11 >> 2; + r14 = heap32[(r14)]; + r14 = r14 >> 2; + r14 = heap32[(r14+13)]; + heap32[(g0)] = r11; + heap32[(g0+1)] = r_g0; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r14)>>2](i7); + heap32[(g0)] = 748; + _Znwj(i7); + r8 = r_g0; + r11 = heap32[(r12+19)]; + r14 = heap32[(r12+18)]; + r15 = r8 >> 2; + heap32[(r15+1)] = 4; + heap32[(r15+2)] = -1; + heap32[(r15+3)] = -1; + heap8[r8+16] = r13; + heap32[(r15+5)] = r14; + heap32[(r15+6)] = r11; + heap32[(r15+7)] = 0; + heap32[(r15+8)] = 1050253722; + heap32[(r15)] = r9; + heap32[(r15+135)] = -1287930578; + heap32[(r15+136)] = 0; + heap32[(r15+137)] = 1065353216; + heap32[(r15+138)] = 0; + heap32[(r15+139)] = -2147483648; + heap32[(r15+140)] = 1065353216; + heap32[(r15+141)] = 0; + heap32[(r15+142)] = 0; + heap32[(r15+143)] = -1082130432; + heap32[(r15+144)] = -2147483648; + heap32[(r15+145)] = -1287930578; + heap32[(r15+146)] = 0; + heap32[(r15+147)] = 0; + heap32[(r15+148)] = -1085695591; + heap32[(r15+149)] = 0; + heap32[(r15+150)] = 0; + heap32[(r15+151)] = -1287930578; + heap32[(r15+152)] = 0; + heap32[(r15+153)] = 1065353216; + heap32[(r15+154)] = 0; + heap32[(r15+155)] = -2147483648; + heap32[(r15+156)] = 1065353216; + heap32[(r15+157)] = 0; + heap32[(r15+158)] = 0; + heap32[(r15+159)] = -1082130432; + heap32[(r15+160)] = -2147483648; + heap32[(r15+161)] = -1287930578; + heap32[(r15+162)] = 0; + heap32[(r15+163)] = 0; + heap32[(r15+164)] = 1059439248; + heap32[(r15+165)] = 0; + heap32[(r15+166)] = 0; + heap8[r8+720] = r13; + heap8[r8+721] = r13; + heap8[r8+723] = r13; + heap8[r8+724] = r4; + heap8[r8+725] = r13; + heap32[(r15+183)] = 0; + heap32[(r15+172)] = 1065353216; + heap32[(r15+173)] = -1082130432; + heap32[(r15+170)] = 1050253722; + heap32[(r15+171)] = 1065353216; + heap32[(r15+169)] = 1063675494; + heap8[r8+722] = r13; + heap32[(r15+179)] = 1065353216; + heap32[(g0)] = 0; + heap32[(g0+1)] = 1086918619; + fmodf(i7); + f12 = f_g0; + if(f12 >=f13) //_LBB26_242 +{ + f14 = 3.1415927410125732; + if(f12 >f14) //_LBB26_244 +{ + f14 = -6.2831854820251465; + f12 = f12+f14; +} +} +else{ + f14 = 6.2831854820251465; + f12 = f12+f14; +} + r11 = r8 >> 2; + heapFloat[(r11+172)] = f12; + heap32[(g0)] = 1070141403; + heap32[(g0+1)] = 1086918619; + fmodf(i7); + f12 = f_g0; + if(f12 >=f13) //_LBB26_247 +{ + f14 = 3.1415927410125732; + if(f12 >f14) //_LBB26_249 +{ + f14 = -6.2831854820251465; + f12 = f12+f14; +} +} +else{ + f14 = 6.2831854820251465; + f12 = f12+f14; +} + heapFloat[(r11+173)] = f12; + heap32[(r11+169)] = 1063675494; + heap32[(r11+170)] = 1050253722; + heap32[(r11+171)] = 1065353216; + heap32[(r12+29)] = r8; + r11 = heap32[(r12+1)]; + r14 = r11 >> 2; + r14 = heap32[(r14)]; + r14 = r14 >> 2; + r14 = heap32[(r14+13)]; + heap32[(g0)] = r11; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r14)>>2](i7); + heap32[(g0)] = 596; + _Znwj(i7); + r11 = heap32[(r12+20)]; + r14 = heap32[(r12+14)]; + r15 = r_g0 >> 2; + heap32[(r15+1)] = 5; + heap32[(r15+2)] = -1; + heap32[(r15+3)] = -1; + heap8[r_g0+16] = r13; + heap32[(r15+5)] = r14; + heap32[(r15+6)] = r11; + heap32[(r15+7)] = 0; + heap32[(r15+8)] = 1050253722; + heap32[(r15)] = r10; + heap32[(r15+72)] = -1082130432; + heap32[(r15+73)] = 867941678; + heap32[(r15+74)] = -2147483648; + heap32[(r15+75)] = 0; + heap32[(r15+76)] = -1279541970; + heap32[(r15+77)] = -1082130432; + heap32[(r15+78)] = 0; + heap32[(r15+79)] = 0; + heap32[(r15+80)] = -2147483648; + heap32[(r15+81)] = 0; + heap32[(r15+82)] = 1065353216; + heap32[(r15+83)] = 0; + heap32[(r15+84)] = -1087163597; + heap32[(r15+85)] = 1057384039; + heap32[(r15+86)] = 0; + heap32[(r15+87)] = 0; + heap32[(r15+88)] = -1287930578; + heap32[(r15+89)] = -1082130432; + heap32[(r15+90)] = 0; + heap32[(r15+91)] = 0; + heap32[(r15+92)] = 1065353216; + heap32[(r15+93)] = -1287930578; + heap32[(r15+94)] = 0; + heap32[(r15+95)] = 0; + heap32[(r15+96)] = -2147483648; + heap32[(r15+97)] = 0; + heap32[(r15+98)] = 1065353216; + heap32[(r15+99)] = 0; + heap32[(r15+100)] = 0; + heap32[(r15+101)] = -1088338002; + heap32[(r15+102)] = 0; + heap32[(r15+103)] = 0; + heap8[r_g0+540] = r13; + heap32[(r15+128)] = 0; + heap32[(r15+140)] = -1082130432; + heap32[(r15+107)] = 1008981770; + heap32[(r15+111)] = 1028443341; + heap32[(r15+145)] = 0; + heap32[(r15+146)] = 0; + heap32[(r15+147)] = 1060320051; + heap32[(r15+148)] = 0; + heap32[(r15+108)] = 1070141403; + heap32[(r15+109)] = 1070141403; + heap32[(r15+110)] = 0; + heap32[(r15+104)] = 1065353216; + heap32[(r15+105)] = 1050253722; + heap32[(r15+106)] = 1065353216; + heap32[(r12+30)] = r_g0; + r11 = heap32[(r12+1)]; + r14 = r11 >> 2; + r14 = heap32[(r14)]; + r14 = r14 >> 2; + r14 = heap32[(r14+13)]; + heap32[(g0)] = r11; + heap32[(g0+1)] = r_g0; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r14)>>2](i7); + heap32[(g0)] = 748; + _Znwj(i7); + r8 = r_g0; + r11 = heap32[(r12+21)]; + r14 = heap32[(r12+20)]; + r15 = r8 >> 2; + heap32[(r15+1)] = 4; + heap32[(r15+2)] = -1; + heap32[(r15+3)] = -1; + heap8[r8+16] = r13; + heap32[(r15+5)] = r14; + heap32[(r15+6)] = r11; + heap32[(r15+7)] = 0; + heap32[(r15+8)] = 1050253722; + heap32[(r15)] = r9; + heap32[(r15+135)] = -1287930578; + heap32[(r15+136)] = 0; + heap32[(r15+137)] = 1065353216; + heap32[(r15+138)] = 0; + heap32[(r15+139)] = -2147483648; + heap32[(r15+140)] = 1065353216; + heap32[(r15+141)] = 0; + heap32[(r15+142)] = 0; + heap32[(r15+143)] = -1082130432; + heap32[(r15+144)] = -2147483648; + heap32[(r15+145)] = -1287930578; + heap32[(r15+146)] = 0; + heap32[(r15+147)] = 0; + heap32[(r15+148)] = 1059145646; + heap32[(r15+149)] = 0; + heap32[(r15+150)] = 0; + heap32[(r15+151)] = -1287930578; + heap32[(r15+152)] = 0; + heap32[(r15+153)] = 1065353216; + heap32[(r15+154)] = 0; + heap32[(r15+155)] = -2147483648; + heap32[(r15+156)] = 1065353216; + heap32[(r15+157)] = 0; + heap32[(r15+158)] = 0; + heap32[(r15+159)] = -1082130432; + heap32[(r15+160)] = -2147483648; + heap32[(r15+161)] = -1287930578; + heap32[(r15+162)] = 0; + heap32[(r15+163)] = 0; + heap32[(r15+164)] = -1090854584; + heap32[(r15+165)] = 0; + heap32[(r15+166)] = 0; + heap8[r8+720] = r13; + heap8[r8+721] = r13; + heap8[r8+723] = r13; + heap8[r8+724] = r4; + heap8[r8+725] = r13; + heap32[(r15+183)] = 0; + heap32[(r15+172)] = 1065353216; + heap32[(r15+173)] = -1082130432; + heap32[(r15+170)] = 1050253722; + heap32[(r15+171)] = 1065353216; + heap32[(r15+169)] = 1063675494; + heap8[r8+722] = r13; + heap32[(r15+179)] = 1065353216; + heap32[(g0)] = -1077342245; + heap32[(g0+1)] = 1086918619; + fmodf(i7); + f12 = f_g0; + if(f12 >=f13) //_LBB26_252 +{ + f14 = 3.1415927410125732; + if(f12 >f14) //_LBB26_254 +{ + f14 = -6.2831854820251465; + f12 = f12+f14; +} +} +else{ + f14 = 6.2831854820251465; + f12 = f12+f14; +} + r11 = r8 >> 2; + heapFloat[(r11+172)] = f12; + heap32[(g0)] = 0; + heap32[(g0+1)] = 1086918619; + fmodf(i7); + f12 = f_g0; + if(f12 >=f13) //_LBB26_257 +{ + f14 = 3.1415927410125732; + if(f12 >f14) //_LBB26_259 +{ + f14 = -6.2831854820251465; + f12 = f12+f14; +} +} +else{ + f14 = 6.2831854820251465; + f12 = f12+f14; +} + heapFloat[(r11+173)] = f12; + heap32[(r11+169)] = 1063675494; + heap32[(r11+170)] = 1050253722; + heap32[(r11+171)] = 1065353216; + heap32[(r12+31)] = r8; + r11 = heap32[(r12+1)]; + r14 = r11 >> 2; + r14 = heap32[(r14)]; + r14 = r14 >> 2; + r14 = heap32[(r14+13)]; + heap32[(g0)] = r11; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r14)>>2](i7); + heap32[(g0)] = 596; + _Znwj(i7); + r11 = heap32[(r12+22)]; + r14 = heap32[(r12+14)]; + r15 = r_g0 >> 2; + heap32[(r15+1)] = 5; + heap32[(r15+2)] = -1; + heap32[(r15+3)] = -1; + heap8[r_g0+16] = r13; + heap32[(r15+5)] = r14; + heap32[(r15+6)] = r11; + heap32[(r15+7)] = 0; + heap32[(r15+8)] = 1050253722; + heap32[(r15)] = r10; + heap32[(r15+72)] = 1065353216; + heap32[(r15+73)] = 0; + heap32[(r15+74)] = 0; + heap32[(r15+75)] = 0; + heap32[(r15+76)] = 0; + heap32[(r15+77)] = 1065353216; + heap32[(r15+78)] = 0; + heap32[(r15+79)] = 0; + heap32[(r15+80)] = -2147483648; + heap32[(r15+81)] = 0; + heap32[(r15+82)] = 1065353216; + heap32[(r15+83)] = 0; + heap32[(r15+84)] = 1060320051; + heap32[(r15+85)] = 1057384039; + heap32[(r15+86)] = 0; + heap32[(r15+87)] = 0; + heap32[(r15+88)] = -1287930578; + heap32[(r15+89)] = -1082130432; + heap32[(r15+90)] = 0; + heap32[(r15+91)] = 0; + heap32[(r15+92)] = 1065353216; + heap32[(r15+93)] = -1287930578; + heap32[(r15+94)] = 0; + heap32[(r15+95)] = 0; + heap32[(r15+96)] = -2147483648; + heap32[(r15+97)] = 0; + heap32[(r15+98)] = 1065353216; + heap32[(r15+99)] = 0; + heap32[(r15+100)] = 0; + heap32[(r15+101)] = -1088338002; + heap32[(r15+102)] = 0; + heap32[(r15+103)] = 0; + heap8[r_g0+540] = r13; + heap32[(r15+128)] = 0; + heap32[(r15+140)] = -1082130432; + heap32[(r15+107)] = 1008981770; + heap32[(r15+111)] = 1028443341; + heap32[(r15+145)] = 0; + heap32[(r15+146)] = 0; + heap32[(r15+147)] = 1060320051; + heap32[(r15+148)] = 0; + heap32[(r15+108)] = 1070141403; + heap32[(r15+109)] = 1070141403; + heap32[(r15+110)] = 0; + heap32[(r15+104)] = 1065353216; + heap32[(r15+105)] = 1050253722; + heap32[(r15+106)] = 1065353216; + heap32[(r12+32)] = r_g0; + r10 = heap32[(r12+1)]; + r11 = r10 >> 2; + r11 = heap32[(r11)]; + r11 = r11 >> 2; + r11 = heap32[(r11+13)]; + heap32[(g0)] = r10; + heap32[(g0+1)] = r_g0; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r11)>>2](i7); + heap32[(g0)] = 748; + _Znwj(i7); + r8 = r_g0; + r10 = heap32[(r12+23)]; + r11 = heap32[(r12+22)]; + r14 = r8 >> 2; + heap32[(r14+1)] = 4; + heap32[(r14+2)] = -1; + heap32[(r14+3)] = -1; + heap8[r8+16] = r13; + heap32[(r14+5)] = r11; + heap32[(r14+6)] = r10; + heap32[(r14+7)] = 0; + heap32[(r14+8)] = 1050253722; + heap32[(r14)] = r9; + heap32[(r14+135)] = -1287930578; + heap32[(r14+136)] = 0; + heap32[(r14+137)] = 1065353216; + heap32[(r14+138)] = 0; + heap32[(r14+139)] = -2147483648; + heap32[(r14+140)] = 1065353216; + heap32[(r14+141)] = 0; + heap32[(r14+142)] = 0; + heap32[(r14+143)] = -1082130432; + heap32[(r14+144)] = -2147483648; + heap32[(r14+145)] = -1287930578; + heap32[(r14+146)] = 0; + heap32[(r14+147)] = 0; + heap32[(r14+148)] = 1059145646; + heap32[(r14+149)] = 0; + heap32[(r14+150)] = 0; + heap32[(r14+151)] = -1287930578; + heap32[(r14+152)] = 0; + heap32[(r14+153)] = 1065353216; + heap32[(r14+154)] = 0; + heap32[(r14+155)] = -2147483648; + heap32[(r14+156)] = 1065353216; + heap32[(r14+157)] = 0; + heap32[(r14+158)] = 0; + heap32[(r14+159)] = -1082130432; + heap32[(r14+160)] = -2147483648; + heap32[(r14+161)] = -1287930578; + heap32[(r14+162)] = 0; + heap32[(r14+163)] = 0; + heap32[(r14+164)] = -1090854584; + heap32[(r14+165)] = 0; + heap32[(r14+166)] = 0; + heap8[r8+720] = r13; + heap8[r8+721] = r13; + heap8[r8+723] = r13; + heap8[r8+724] = r4; + heap8[r8+725] = r13; + heap32[(r14+183)] = 0; + heap32[(r14+172)] = 1065353216; + heap32[(r14+173)] = -1082130432; + heap32[(r14+170)] = 1050253722; + heap32[(r14+171)] = 1065353216; + heap32[(r14+169)] = 1063675494; + heap8[r8+722] = r13; + heap32[(r14+179)] = 1065353216; + heap32[(g0)] = -1077342245; + heap32[(g0+1)] = 1086918619; + fmodf(i7); + f12 = f_g0; + if(f12 >=f13) //_LBB26_262 +{ + f14 = 3.1415927410125732; + if(f12 >f14) //_LBB26_264 +{ + f14 = -6.2831854820251465; + f12 = f12+f14; +} +} +else{ + f14 = 6.2831854820251465; + f12 = f12+f14; +} + r9 = r8 >> 2; + heapFloat[(r9+172)] = f12; + heap32[(g0)] = 0; + heap32[(g0+1)] = 1086918619; + fmodf(i7); + f12 = f_g0; + if(f12 >=f13) //_LBB26_267 +{ + f13 = 3.1415927410125732; + if(f12 >f13) //_LBB26_269 +{ + f13 = -6.2831854820251465; + f12 = f12+f13; +} +} +else{ + f13 = 6.2831854820251465; + f12 = f12+f13; +} + heapFloat[(r9+173)] = f12; + heap32[(r9+169)] = 1063675494; + heap32[(r9+170)] = 1050253722; + heap32[(r9+171)] = 1065353216; + heap32[(r12+33)] = r8; + r9 = heap32[(r12+1)]; + r10 = r9 >> 2; + r10 = heap32[(r10)]; + r10 = r10 >> 2; + r10 = heap32[(r10+13)]; + heap32[(g0)] = r9; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r10)>>2](i7); + r8 = heap32[(r1+10)]; + r9 = heap32[(r1+9)]; + if(r8 ==r9) //_LBB26_272 +{ + r10 = r9 << 1; + r10 = r9 == 0 ? r4 : r10; +if(!(r8 >=r10)) //_LBB26_271 +{ + if(r10 !=0) //_LBB26_275 +{ + r8 = heap32[(r2)]; + r11 = r10 << 2; + r8 = (r8 + 1)|0; + r11 = r11 | 3; + heap32[(r2)] = r8; + r8 = (r11 + 16)|0; + heap32[(g0)] = r8; + malloc(i7); + r8 = r_g0; + if(r8 !=0) //_LBB26_277 +{ + r11 = (r8 + 4)|0; + r11 = (r13 - r11)|0; + r11 = r11 & 15; + r11 = (r8 + r11)|0; + r12 = (r11 + 4)|0; + r11 = r11 >> 2; + heap32[(r11)] = r8; + r8 = r12; +} +} +else{ + r8 = 0; +} +_358: do { + if(r9 <1) //_LBB26_280 +{ + r11 = heap32[(r1+11)]; +} +else{ +_360: while(true){ + r11 = heap32[(r1+11)]; + r12 = r13 << 2; + r14 = (r11 + r12)|0; + r14 = r14 >> 2; + r12 = (r8 + r12)|0; + r14 = heap32[(r14)]; + r13 = (r13 + 1)|0; + r12 = r12 >> 2; + heap32[(r12)] = r14; +if(!(r9 !=r13)) //_LBB26_281 +{ +break _358; +} +} +} +} while(0); + if(r11 !=0) //_LBB26_284 +{ + r12 = heapU8[r6+48]; + if(r12 !=0) //_LBB26_286 +{ + r9 = gNumAlignedFree; + r9 = r9 >> 2; + r12 = heap32[(r9)]; + r12 = (r12 + 1)|0; + r11 = r11 >> 2; + heap32[(r9)] = r12; + r9 = heap32[(r11+-1)]; + heap32[(g0)] = r9; + free(i7); + r9 = heap32[(r1+9)]; +} + heap32[(r1+11)] = 0; +} + heap8[r6+48] = r4; + heap32[(r1+11)] = r8; + heap32[(r1+10)] = r10; +} +} + r8 = r9 << 2; + r9 = heap32[(r1+11)]; + r8 = (r9 + r8)|0; + r8 = r8 >> 2; + heap32[(r8)] = r7; + r7 = heap32[(r1+9)]; + r5 = (r5 + 1)|0; + r7 = (r7 + 1)|0; + heap32[(r1+9)] = r7; +if(!(r0 !=r5)) //_LBB26_185 +{ +break _262; +} +} + f3 = 7; + f4 = -2; + r0 = (r0 + -1)|0; + f1 = f1+f3; + f2 = f2+f4; + r3 = (r3 + 1)|0; + if(r0 ==0) //_LBB26_165 +{ +break _161; +} +else{ +continue _260; +} +} +} +} +} +} +} while(0); + return; +break; +case 46: + r0 = _2E_str674; + r1 = _2E_str573; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 53; + _assert(i7); +break; +} +} + +function _GLOBAL__D__Z6mymainiPPc(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = _ZL14benchmarkDemo4; + r1 = _ZTV13BenchmarkDemo; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZN13BenchmarkDemo11exitPhysicsEv(i7); + r1 = heap32[(r2+11)]; +if(!(r1 ==0)) //_LBB27_4 +{ + r3 = heapU8[r0+48]; +if(!(r3 ==0)) //_LBB27_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+11)] = 0; +} + r1 = 1; + heap8[r0+48] = r1; + heap32[(r2+11)] = 0; + heap32[(r2+9)] = 0; + heap32[(r2+10)] = 0; + r3 = heap32[(r2+6)]; +if(!(r3 ==0)) //_LBB27_8 +{ + r4 = heapU8[r0+28]; +if(!(r4 ==0)) //_LBB27_7 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+6)] = 0; +} + heap8[r0+28] = r1; + heap32[(r2+6)] = 0; + heap32[(r2+4)] = 0; + heap32[(r2+5)] = 0; + return; +} + +function _ZN14BenchmarkDemo4D1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV14BenchmarkDemo4; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZN13BenchmarkDemoD2Ev(i7); + return; +} + +function _ZN14BenchmarkDemo4D0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV14BenchmarkDemo4; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZN13BenchmarkDemoD2Ev(i7); + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function __draw(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = _ZL14benchmarkDemo4; + heap32[(g0)] = r0; + _ZN13BenchmarkDemo20clientMoveAndDisplayEv(i7); + return; +} + +function _ZN13BenchmarkDemoD2Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV13BenchmarkDemo; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZN13BenchmarkDemo11exitPhysicsEv(i7); + r1 = heap32[(r2+11)]; +if(!(r1 ==0)) //_LBB31_4 +{ + r3 = heapU8[r0+48]; +if(!(r3 ==0)) //_LBB31_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+11)] = 0; +} + r1 = 1; + heap8[r0+48] = r1; + heap32[(r2+11)] = 0; + heap32[(r2+9)] = 0; + heap32[(r2+10)] = 0; + r3 = heap32[(r2+6)]; +if(!(r3 ==0)) //_LBB31_8 +{ + r4 = heapU8[r0+28]; +if(!(r4 ==0)) //_LBB31_7 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+6)] = 0; +} + heap8[r0+28] = r1; + heap32[(r2+6)] = 0; + heap32[(r2+4)] = 0; + heap32[(r2+5)] = 0; + return; +} + +function __init(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = gDisableDeactivation; + r1 = 1; + heap8[r0] = r1; + _ZN13BenchmarkDemo11initPhysicsEv(i7); + return; +} + +function _ZN15btNullPairCache23getOverlappingPairArrayEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = (r0 + 4)|0; + r_g0 = r0; + return; +} + +function _ZN15btNullPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZNK15btNullPairCache22getNumOverlappingPairsEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN15btNullPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN15btNullPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN15btNullPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN15btNullPairCache8findPairEP17btBroadphaseProxyS1_(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN15btNullPairCache18hasDeferredRemovalEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 1; + r_g0 = r0; + return; +} + +function _ZN15btNullPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN15btNullPairCache18addOverlappingPairEP17btBroadphaseProxyS1_(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN15btNullPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN15btNullPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN15btNullPairCache20sortOverlappingPairsEP12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN15btNullPairCache26getOverlappingPairArrayPtrEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+4)]; + r_g0 = r0; + return; +} + +function _ZNK15btNullPairCache26getOverlappingPairArrayPtrEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+4)]; + r_g0 = r0; + return; +} + +function _ZN15btNullPairCacheD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV15btNullPairCache; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+4)]; +if(!(r1 ==0)) //_LBB48_4 +{ + r3 = heapU8[r0+20]; +if(!(r3 ==0)) //_LBB48_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+4)] = 0; +} + r1 = 1; + heap8[r0+20] = r1; + heap32[(r2+4)] = 0; + heap32[(r2+2)] = 0; + heap32[(r2+3)] = 0; + return; +} + +function _ZN15btNullPairCacheD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV15btNullPairCache; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+4)]; +if(!(r1 ==0)) //_LBB49_4 +{ + r3 = heapU8[r0+20]; +if(!(r3 ==0)) //_LBB49_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+4)] = 0; +} + r1 = 1; + heap8[r0+20] = r1; + heap32[(r2+4)] = 0; + heap32[(r2+2)] = 0; + heap32[(r2+3)] = 0; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZNK20btAxisSweep3InternalItE7getAabbEP17btBroadphaseProxyR9btVector3S4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp+2)]; + r0 = r0 >> 2; + r1 = r1 >> 2; + heap32[(r1)] = heap32[(r0+4)]; + heap32[(r1+1)] = heap32[(r0+5)]; + r2 = heap32[(fp+3)]; + heap32[(r1+2)] = heap32[(r0+6)]; + r2 = r2 >> 2; + heap32[(r1+3)] = heap32[(r0+7)]; + heap32[(r2)] = heap32[(r0+8)]; + heap32[(r2+1)] = heap32[(r0+9)]; + heap32[(r2+2)] = heap32[(r0+10)]; + heap32[(r2+3)] = heap32[(r0+11)]; + return; +} + +function _ZN20btAxisSweep3InternalItE23getOverlappingPairCacheEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+23)]; + r_g0 = r0; + return; +} + +function _ZNK20btAxisSweep3InternalItE23getOverlappingPairCacheEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+23)]; + r_g0 = r0; + return; +} + +function _ZNK20btAxisSweep3InternalItE17getBroadphaseAabbER9btVector3S2_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = r1 >> 2; + heap32[(r1)] = heap32[(r0+2)]; + heap32[(r1+1)] = heap32[(r0+3)]; + r2 = heap32[(fp+2)]; + heap32[(r1+2)] = heap32[(r0+4)]; + r2 = r2 >> 2; + heap32[(r1+3)] = heap32[(r0+5)]; + heap32[(r2)] = heap32[(r0+6)]; + heap32[(r2+1)] = heap32[(r0+7)]; + heap32[(r2+2)] = heap32[(r0+8)]; + heap32[(r2+3)] = heap32[(r0+9)]; + return; +} + +function _ZN20btAxisSweep3InternalItE9resetPoolEP12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heapU16[(r0+56)>>1]; +if(!(r1 !=0)) //_LBB54_6 +{ + r1 = 1; + heap16[(r0+64)>>1] = r1; + r2 = heapU16[(r0+58)>>1]; + if(uint(r2) >uint(1)) //_LBB54_3 +{ + r3 = 2; +_5: while(true){ + r2 = r1 & 65535; + r4 = r0 >> 2; + r2 = r2 << 6; + r4 = heap32[(r4+15)]; + r2 = (r4 + r2)|0; + heap16[(r2+48)>>1] = r3; + r1 = (r1 + 1)|0; + r2 = heapU16[(r0+58)>>1]; + r3 = (r3 + 1)|0; + r4 = r1 & 65535; +if(!(uint(r2) >uint(r4))) //_LBB54_4 +{ +break _5; +} +} +} + r1 = r2 & 65535; + r0 = r0 >> 2; + r1 = r1 << 6; + r0 = heap32[(r0+15)]; + r0 = (r1 + r0)|0; + r1 = 0; + heap16[(r0+-16)>>1] = r1; +} + return; +} + +function _ZN20btAxisSweep3InternalItE10printStatsEv(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN20btAxisSweep3InternalItE8aabbTestERK9btVector3S3_R24btBroadphaseAabbCallback(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var f0; + var f1; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+27)]; + r3 = heap32[(fp+1)]; + r4 = heap32[(fp+2)]; + r5 = heap32[(fp+3)]; + if(r2 !=0) //_LBB56_2 +{ + r0 = r2 >> 2; + r0 = heap32[(r0)]; + r0 = r0 >> 2; + r0 = heap32[(r0+7)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r5; + __FUNCTION_TABLE__[(r0)>>2](i7); + return; +} +else{ + r2 = heapU16[(r0+56)>>1]; + r2 = r2 << 1; + r2 = r2 | 1; +if(!(r2 ==1)) //_LBB56_18 +{ + r2 = 1; + r6 = 2; +_6: while(true){ + r7 = r6; + r6 = r2 & 65535; + r8 = heap32[(r1+17)]; + r6 = r6 << 2; + r9 = heapU8[r8+r6]; + r9 = r9 & 1; +if(!(r9 ==0)) //_LBB56_17 +{ + r6 = (r8 + r6)|0; + r6 = heapU16[(r6+2)>>1]; + r8 = heap32[(r1+15)]; + r6 = r6 << 6; + r6 = (r8 + r6)|0; + r8 = r3 >> 2; + r9 = r6 >> 2; + f0 = heapFloat[(r8)]; + f1 = heapFloat[(r9+8)]; + if(f0 >f1) //_LBB56_8 +{ +__label__ = 8; +} +else{ + r10 = r4 >> 2; + f0 = heapFloat[(r10)]; + f1 = heapFloat[(r9+4)]; + if(f0 f1) //_LBB56_12 +{ +__label__ = 11; +} +else{ + r11 = r4 >> 2; + f0 = heapFloat[(r11+2)]; + f1 = heapFloat[(r9+6)]; + if(f0 f1)) //_LBB56_17 +{ + r8 = r4 >> 2; + f0 = heapFloat[(r8+1)]; + f1 = heapFloat[(r9+5)]; +if(!(f0 > 2; + r8 = heap32[(r8)]; + r8 = r8 >> 2; + r8 = heap32[(r8+2)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = r6; + __FUNCTION_TABLE__[(r8)>>2](i7); +} +} +} +} + r8 = heapU16[(r0+56)>>1]; + r6 = (r7 + 1)|0; + r2 = (r2 + 1)|0; + r8 = r8 << 1; + r7 = r7 & 65535; + r8 = r8 | 1; +if(!(uint(r7) >2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+27)]; + r3 = heap32[(fp+3)]; + if(r2 !=0) //_LBB57_2 +{ + r0 = heap32[(fp+1)]; + r1 = heap32[(fp+2)]; + r4 = heap32[(fp+4)]; + r5 = heap32[(fp+5)]; + r6 = r2 >> 2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+6)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r1; + heap32[(g0+3)] = r3; + heap32[(g0+4)] = r4; + heap32[(g0+5)] = r5; + __FUNCTION_TABLE__[(r6)>>2](i7); + return; +} +else{ + r2 = heapU16[(r0+56)>>1]; + r2 = r2 << 1; + r2 = r2 | 1; +if(!(r2 ==1)) //_LBB57_7 +{ + r2 = 1; + r4 = 2; +_6: while(true){ + r5 = r2 & 65535; + r6 = heap32[(r1+17)]; + r5 = r5 << 2; + r7 = heapU8[r6+r5]; + r7 = r7 & 1; +if(!(r7 ==0)) //_LBB57_6 +{ + r7 = r3 >> 2; + r7 = heap32[(r7)]; + r7 = r7 >> 2; + r5 = (r6 + r5)|0; + r5 = heapU16[(r5+2)>>1]; + r6 = heap32[(r7+2)]; + r7 = heap32[(r1+15)]; + r5 = r5 << 6; + r5 = (r7 + r5)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r5; + __FUNCTION_TABLE__[(r6)>>2](i7); +} + r5 = heapU16[(r0+56)>>1]; + r6 = (r4 + 1)|0; + r2 = (r2 + 1)|0; + r5 = r5 << 1; + r7 = r4 & 65535; + r5 = r5 | 1; + r4 = r6; +if(!(uint(r7) >2; + var r0; + var r1; + var r2; + var r3; + var r4; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + f0 = heapFloat[(fp+2)]; + f1 = heapFloat[(r1+2)]; + f2 = heapFloat[(fp+4)]; + f3 = heapFloat[(r1+4)]; + f4 = heapFloat[(fp+3)]; + f5 = heapFloat[(r1+3)]; + f0 = f0-f1; + f1 = heapFloat[(r1+10)]; + f2 = f2-f3; + f3 = heapFloat[(r1+12)]; + f4 = f4-f5; + f5 = heapFloat[(r1+11)]; + f0 = f0*f1; + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+5)]; + f1 = f2*f3; + f2 = f4*f5; + f3 = 0; + if(f0 >f3) //_LBB58_2 +{ + r3 = heapU16[(r0+6)>>1]; + f4 = r3; //fitos r3, f4 + if(f0 >1]; + r4 = Math.floor(f0); + r3 = r3 & r4; + r3 = r3 | r2; +} +else{ + r4 = heapU16[(r0+4)>>1]; + r3 = r4 & r3; + r3 = r3 | r2; +} +} +else{ + r3 = r2; +} + heap16[(r1)>>1] = r3; + if(f2 >f3) //_LBB58_7 +{ + r3 = heapU16[(r0+6)>>1]; + f0 = r3; //fitos r3, f0 + if(f2 >1]; + r4 = Math.floor(f2); + r3 = r3 & r4; + r3 = r3 | r2; +} +else{ + r4 = heapU16[(r0+4)>>1]; + r3 = r4 & r3; + r3 = r3 | r2; +} +} +else{ + r3 = r2; +} + heap16[(r1+2)>>1] = r3; + if(f1 >f3) //_LBB58_12 +{ + r3 = heapU16[(r0+6)>>1]; + f0 = r3; //fitos r3, f0 + if(f1 >1]; + r3 = Math.floor(f1); + r0 = r0 & r3; + r2 = r0 | r2; +} +else{ + r0 = heapU16[(r0+4)>>1]; + r0 = r0 & r3; + r2 = r0 | r2; +} +} + heap16[(r1+4)>>1] = r2; + return; +} + +function _ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var r19; + var r20; + var r21; + var r22; + var r23; + var r24; + var r25; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = heap32[(fp+1)]; + r2 = (r0 + r1)|0; + r3 = r2 >>> 31; + r4 = heap32[(fp)]; + r2 = (r2 + r3)|0; + r3 = r4 >> 2; + r2 = r2 & 536870910; + r5 = heap32[(r3+3)]; + r2 = r2 << 3; + r2 = (r5 + r2)|0; + r2 = r2 >> 2; + r5 = heap32[(r2)]; + r6 = heap32[(r2+1)]; + r2 = heap32[(r2+2)]; + r7 = r1; + r8 = r0; +_1: while(true){ + r9 = heap32[(r3+3)]; + r10 = r7 << 4; + r10 = (r9 + r10)|0; + r11 = 0; +_3: while(true){ + r12 = r11 << 4; + r12 = (r10 + r12)|0; + r12 = r12 >> 2; + r13 = r11 << 2; + r14 = heap32[(r12)]; + if(r14 !=0) //_LBB59_5 +{ + r15 = r14 >> 2; + r15 = heap32[(r15+3)]; +} +else{ + r15 = -1; +} + if(r5 !=0) //_LBB59_8 +{ + r16 = r5 >> 2; + r16 = heap32[(r16+3)]; +} +else{ + r16 = -1; +} + r17 = r13 << 2; + r17 = (r10 + r17)|0; + r17 = r17 >> 2; + r17 = heap32[(r17+1)]; + if(r17 !=0) //_LBB59_11 +{ + r18 = r17 >> 2; + r18 = heap32[(r18+3)]; +} +else{ + r18 = -1; +} + if(r6 !=0) //_LBB59_14 +{ + r19 = r6 >> 2; + r19 = heap32[(r19+3)]; +} +else{ + r19 = -1; +} +_21: do { +if(!(r15 >r16)) //_LBB59_2 +{ +if(!(r14 !=r5)) //_LBB59_18 +{ + if(r18 >r19) //_LBB59_2 +{ +break _21; +} +} + if(r14 !=r5) //_LBB59_22 +{ +break _3; +} +else{ + if(r17 !=r6) //_LBB59_22 +{ +break _3; +} +else{ + r15 = r13 << 2; + r15 = (r10 + r15)|0; + r15 = r15 >> 2; + r15 = heap32[(r15+2)]; +if(!(uint(r15) >uint(r2))) //_LBB59_2 +{ +break _3; +} +} +} +} +} while(0); + r11 = (r11 + 1)|0; +continue _3; +} + r18 = r8 << 4; + r15 = (r7 + r11)|0; + r9 = (r9 + r18)|0; + r16 = 0; +_30: while(true){ + r19 = r16 << 2; + if(r5 !=0) //_LBB59_25 +{ + r20 = r5 >> 2; + r20 = heap32[(r20+3)]; +} +else{ + r20 = -1; +} + r21 = r19 << 2; + r21 = (r9 + r21)|0; + r21 = r21 >> 2; + r21 = heap32[(r21)]; + if(r21 !=0) //_LBB59_28 +{ + r22 = r21 >> 2; + r22 = heap32[(r22+3)]; +} +else{ + r22 = -1; +} + if(r6 !=0) //_LBB59_31 +{ + r23 = r6 >> 2; + r23 = heap32[(r23+3)]; +} +else{ + r23 = -1; +} + r24 = r19 << 2; + r24 = (r9 + r24)|0; + r24 = r24 >> 2; + r24 = heap32[(r24+1)]; + if(r24 !=0) //_LBB59_34 +{ + r25 = r24 >> 2; + r25 = heap32[(r25+3)]; +} +else{ + r25 = -1; +} +_48: do { +if(!(r20 >r22)) //_LBB59_21 +{ +if(!(r5 !=r21)) //_LBB59_38 +{ + if(r23 >r25) //_LBB59_21 +{ +break _48; +} +} + if(r5 !=r21) //_LBB59_41 +{ +break _30; +} +else{ + if(r6 !=r24) //_LBB59_41 +{ +break _30; +} +else{ + r20 = r19 << 2; + r20 = (r9 + r20)|0; + r20 = r20 >> 2; + r20 = heap32[(r20+2)]; +if(!(uint(r2) >uint(r20))) //_LBB59_21 +{ +break _30; +} +} +} +} +} while(0); + r16 = (r16 + -1)|0; +continue _30; +} + r20 = (r8 + r16)|0; + if(r15 <=r20) //_LBB59_43 +{ + r13 = r13 << 2; + r10 = (r10 + r13)|0; + r10 = r10 >> 2; + r13 = heap32[(r12+3)]; + r15 = heap32[(r10+2)]; + r19 = r19 << 2; + r19 = (r9 + r19)|0; + heap32[(r10)] = r21; + r20 = r16 << 4; + r19 = r19 >> 2; + heap32[(r10+1)] = r24; + r19 = heap32[(r19+2)]; + r9 = (r9 + r20)|0; + r9 = r9 >> 2; + heap32[(r10+2)] = r19; + r9 = heap32[(r9+3)]; + heap32[(r12+3)] = r9; + r9 = heap32[(r3+3)]; + r9 = (r9 + r18)|0; + r9 = (r9 + r20)|0; + r9 = r9 >> 2; + heap32[(r9)] = r14; + r7 = (r7 + r11)|0; + r8 = (r8 + r16)|0; + heap32[(r9+1)] = r17; + r7 = (r7 + 1)|0; + r8 = (r8 + -1)|0; + heap32[(r9+2)] = r15; + heap32[(r9+3)] = r13; +} +else{ + r7 = r15; + r8 = r20; +} + if(r7 <=r8) //_LBB59_1 +{ +continue _1; +} +else{ +break _1; +} +} +if(!(r8 <=r1)) //_LBB59_47 +{ + heap32[(g0)] = r4; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r8; + _ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(i7); +} +if(!(r7 >=r0)) //_LBB59_49 +{ + heap32[(g0)] = r4; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r0; + _ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(i7); +} + return; +} + +function _ZN20btAxisSweep3InternalItE11sortMinDownEitP12btDispatcherb(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r2 = r0 << 2; + r2 = (r1 + r2)|0; + r3 = heap32[(fp+2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+17)]; + r3 = r3 << 2; + r4 = (r2 + r3)|0; + r2 = heapU16[(r2+r3)>>1]; + r3 = heapU16[(r4+-4)>>1]; +if(!(uint(r2) >=uint(r3))) //_LBB60_14 +{ + r1 = r1 >> 2; + r2 = heap32[(fp+3)]; + r3 = heap32[(r1+15)]; + r5 = heapU16[(r4+2)>>1]; + r6 = 1; + r7 = r6 << r0; + r7 = r7 & 3; + r6 = r6 << r7; + r5 = r5 << 6; + r5 = (r3 + r5)|0; + r6 = r6 & 3; + r0 = r0 << 1; + r8 = (r5 + 48)|0; + r7 = r7 << 1; + r9 = (r5 + 54)|0; + r6 = r6 << 1; + r10 = (r8 + r0)|0; + r11 = (r9 + r7)|0; + r12 = (r8 + r7)|0; + r9 = (r9 + r6)|0; + r8 = (r8 + r6)|0; + r4 = (r4 + 2)|0; +_3: while(true){ + r13 = heapU8[r4+-6]; + r14 = heapU16[(r4+-4)>>1]; + r13 = r13 & 1; + if(r13 ==0) //_LBB60_11 +{ + r13 = r14 << 6; + r3 = (r3 + r13)|0; + r3 = (r3 + r0)|0; + r13 = heapU16[(r3+48)>>1]; + r13 = (r13 + 1)|0; + heap16[(r3+48)>>1] = r13; +} +else{ +if(!(r2 ==0)) //_LBB60_10 +{ + r13 = r14 << 6; + r13 = (r3 + r13)|0; + r15 = (r13 + r7)|0; + r16 = heapU16[(r11)>>1]; + r17 = heapU16[(r15+48)>>1]; +if(!(uint(r16) >1]; + r16 = heapU16[(r12)>>1]; +if(!(uint(r15) >1]; + r17 = heapU16[(r15+48)>>1]; +if(!(uint(r16) >1]; + r16 = heapU16[(r8)>>1]; +if(!(uint(r15) > 2; + r16 = heap32[(r16)]; + r16 = r16 >> 2; + r16 = heap32[(r16+2)]; + heap32[(g0)] = r15; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r13; + __FUNCTION_TABLE__[(r16)>>2](i7); + r15 = heap32[(r1+24)]; +if(!(r15 ==0)) //_LBB60_10 +{ + r16 = r15 >> 2; + r16 = heap32[(r16)]; + r16 = r16 >> 2; + r16 = heap32[(r16+2)]; + heap32[(g0)] = r15; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r13; + __FUNCTION_TABLE__[(r16)>>2](i7); +} +} +} +} +} +} + r14 = r14 << 6; + r3 = (r3 + r14)|0; + r3 = (r3 + r0)|0; + r14 = heapU16[(r3+54)>>1]; + r14 = (r14 + 1)|0; + heap16[(r3+54)>>1] = r14; +} + r3 = heapU16[(r10)>>1]; + r3 = (r3 + -1)|0; + heap16[(r10)>>1] = r3; + r3 = heapU16[(r4+-2)>>1]; + r13 = heapU16[(r4)>>1]; + r14 = heapU16[(r4+-4)>>1]; + r15 = heapU16[(r4+-6)>>1]; + heap16[(r4+-2)>>1] = r15; + heap16[(r4)>>1] = r14; + heap16[(r4+-6)>>1] = r3; + heap16[(r4+-4)>>1] = r13; + r13 = heapU16[(r4+-10)>>1]; + if(uint(r3) >=uint(r13)) //_LBB60_14 +{ +break _3; +} +else{ + r3 = heap32[(r1+15)]; + r4 = (r4 + -4)|0; +continue _3; +} +} +} + return; +} + +function _ZN20btAxisSweep3InternalItE9sortMaxUpEitP12btDispatcherb(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r2 = r0 << 2; + r2 = (r1 + r2)|0; + r2 = r2 >> 2; + r3 = heap32[(fp+2)]; + r4 = 1; + r2 = heap32[(r2+17)]; + r3 = r3 << 2; + r2 = (r2 + r3)|0; + r3 = r4 << r0; + r3 = r3 & 3; + r1 = r1 >> 2; + r5 = heapU16[(r2+2)>>1]; + r4 = r4 << r3; + r6 = heap32[(r1+15)]; + r5 = r5 << 6; + r4 = r4 & 3; + r5 = (r6 + r5)|0; + r3 = r3 << 1; + r6 = (r5 + 48)|0; + r4 = r4 << 1; + r5 = (r5 + 54)|0; + r0 = r0 << 1; + r7 = heap32[(fp+3)]; + r8 = (r5 + r3)|0; + r9 = (r6 + r3)|0; + r10 = (r5 + r4)|0; + r6 = (r6 + r4)|0; + r5 = (r5 + r0)|0; + r2 = (r2 + 4)|0; +_1: while(true){ + r11 = heapU16[(r2+2)>>1]; + if(r11 ==0) //_LBB61_14 +{ +break _1; +} +else{ + r12 = heapU16[(r2)>>1]; + r13 = heapU16[(r2+-4)>>1]; + if(uint(r13) >=uint(r12)) //_LBB61_1 +{ + r13 = heap32[(r1+15)]; + r11 = r11 & 65535; + r12 = r12 & 1; + if(r12 != 0) //_LBB61_10 +{ + r11 = r11 << 6; + r11 = (r13 + r11)|0; + r11 = (r11 + r0)|0; + r12 = heapU16[(r11+54)>>1]; + r12 = (r12 + -1)|0; + heap16[(r11+54)>>1] = r12; +} +else{ +if(!(r7 ==0)) //_LBB61_9 +{ + r12 = r11 << 6; + r12 = (r13 + r12)|0; + r14 = (r12 + r3)|0; + r15 = heapU16[(r8)>>1]; + r16 = heapU16[(r14+48)>>1]; +if(!(uint(r15) >1]; + r15 = heapU16[(r9)>>1]; +if(!(uint(r14) >1]; + r16 = heapU16[(r14+48)>>1]; +if(!(uint(r15) >1]; + r15 = heapU16[(r6)>>1]; +if(!(uint(r14) > 2; + r15 = heap32[(r15)]; + r15 = r15 >> 2; + r16 = heapU16[(r2+-2)>>1]; + r15 = heap32[(r15+2)]; + r16 = r16 << 6; + r16 = (r13 + r16)|0; + heap32[(g0)] = r14; + heap32[(g0+1)] = r16; + heap32[(g0+2)] = r12; + __FUNCTION_TABLE__[(r15)>>2](i7); + r14 = heap32[(r1+24)]; +if(!(r14 ==0)) //_LBB61_9 +{ + r15 = r14 >> 2; + r15 = heap32[(r15)]; + r15 = r15 >> 2; + r15 = heap32[(r15+2)]; + heap32[(g0)] = r14; + heap32[(g0+1)] = r16; + heap32[(g0+2)] = r12; + __FUNCTION_TABLE__[(r15)>>2](i7); +} +} +} +} +} +} + r11 = r11 << 6; + r11 = (r13 + r11)|0; + r11 = (r11 + r0)|0; + r12 = heapU16[(r11+48)>>1]; + r12 = (r12 + -1)|0; + heap16[(r11+48)>>1] = r12; +} + r11 = heapU16[(r5)>>1]; + r11 = (r11 + 1)|0; + heap16[(r5)>>1] = r11; + r11 = heapU16[(r2+-2)>>1]; + r12 = heapU16[(r2+-4)>>1]; + r13 = heapU16[(r2+2)>>1]; + r14 = heapU16[(r2)>>1]; + heap16[(r2+-4)>>1] = r14; + heap16[(r2+-2)>>1] = r13; + r13 = (r2 + 4)|0; + heap16[(r2)>>1] = r12; + heap16[(r2+2)>>1] = r11; + r2 = r13; +continue _1; +} +else{ +break _1; +} +} +} + return; +} + +function _ZN20btAxisSweep3InternalItE9sortMinUpEitP12btDispatcherb(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r2 = r0 << 2; + r2 = (r1 + r2)|0; + r2 = r2 >> 2; + r3 = heap32[(fp+2)]; + r2 = heap32[(r2+17)]; + r3 = r3 << 2; + r2 = (r2 + r3)|0; + r1 = r1 >> 2; + r3 = heapU16[(r2+2)>>1]; + r4 = 1; + r5 = r4 << r0; + r6 = heap32[(r1+15)]; + r3 = r3 << 6; + r5 = r5 & 3; + r3 = (r6 + r3)|0; + r0 = r0 << 1; + r3 = (r3 + r0)|0; + r4 = r4 << r5; + r6 = heap32[(fp+3)]; + r7 = heap32[(fp+4)]; + r3 = (r3 + 48)|0; + r4 = r4 & 3; + r2 = (r2 + 4)|0; +_1: while(true){ + r8 = heapU16[(r2+2)>>1]; + if(r8 ==0) //_LBB62_14 +{ +break _1; +} +else{ + r9 = heapU16[(r2)>>1]; + r10 = heapU16[(r2+-4)>>1]; + if(uint(r10) >=uint(r9)) //_LBB62_1 +{ + r10 = heap32[(r1+15)]; + r8 = r8 & 65535; + r9 = r9 & 1; + if(r9 ==0) //_LBB62_10 +{ + r8 = r8 << 6; + r8 = (r10 + r8)|0; + r8 = (r8 + r0)|0; + r9 = heapU16[(r8+48)>>1]; + r9 = (r9 + -1)|0; + heap16[(r8+48)>>1] = r9; +} +else{ +if(!(r7 ==0)) //_LBB62_9 +{ + r9 = heapU16[(r2+-2)>>1]; + r9 = r9 << 6; + r11 = r8 << 6; + r9 = (r10 + r9)|0; + r12 = r5 << 1; + r11 = (r10 + r11)|0; + r13 = (r9 + r12)|0; + r12 = (r11 + r12)|0; + r14 = heapU16[(r13+54)>>1]; + r15 = heapU16[(r12+48)>>1]; +if(!(uint(r14) >1]; + r13 = heapU16[(r13+48)>>1]; +if(!(uint(r12) >1]; + r15 = heapU16[(r12+48)>>1]; +if(!(uint(r14) >1]; + r13 = heapU16[(r13+48)>>1]; +if(!(uint(r12) > 2; + r13 = heap32[(r13)]; + r13 = r13 >> 2; + r13 = heap32[(r13+3)]; + heap32[(g0)] = r12; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r11; + heap32[(g0+3)] = r6; + __FUNCTION_TABLE__[(r13)>>2](i7); + r12 = heap32[(r1+24)]; +if(!(r12 ==0)) //_LBB62_9 +{ + r13 = r12 >> 2; + r13 = heap32[(r13)]; + r13 = r13 >> 2; + r13 = heap32[(r13+3)]; + heap32[(g0)] = r12; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r11; + heap32[(g0+3)] = r6; + __FUNCTION_TABLE__[(r13)>>2](i7); +} +} +} +} +} +} + r8 = r8 << 6; + r8 = (r10 + r8)|0; + r8 = (r8 + r0)|0; + r9 = heapU16[(r8+54)>>1]; + r9 = (r9 + -1)|0; + heap16[(r8+54)>>1] = r9; +} + r8 = heapU16[(r3)>>1]; + r8 = (r8 + 1)|0; + heap16[(r3)>>1] = r8; + r8 = heapU16[(r2+-2)>>1]; + r9 = heapU16[(r2+-4)>>1]; + r10 = heapU16[(r2+2)>>1]; + r11 = heapU16[(r2)>>1]; + heap16[(r2+-4)>>1] = r11; + heap16[(r2+-2)>>1] = r10; + r10 = (r2 + 4)|0; + heap16[(r2)>>1] = r9; + heap16[(r2+2)>>1] = r8; + r2 = r10; +continue _1; +} +else{ +break _1; +} +} +} + return; +} + +function _ZN20btAxisSweep3InternalItE11sortMaxDownEitP12btDispatcherb(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r2 = r0 << 2; + r2 = (r1 + r2)|0; + r3 = heap32[(fp+2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+17)]; + r4 = r3 << 2; + r5 = (r2 + r4)|0; + r4 = heapU16[(r2+r4)>>1]; + r6 = heapU16[(r5+-4)>>1]; +if(!(uint(r4) >=uint(r6))) //_LBB63_14 +{ + r1 = r1 >> 2; + r4 = heap32[(fp+3)]; + r6 = heap32[(fp+4)]; + r7 = heap32[(r1+15)]; + r3 = r3 << 2; + r2 = (r2 + r3)|0; + r2 = heapU16[(r2+2)>>1]; + r3 = 1; + r8 = r3 << r0; + r2 = r2 << 6; + r8 = r8 & 3; + r2 = (r7 + r2)|0; + r0 = r0 << 1; + r3 = r3 << r8; + r2 = (r2 + r0)|0; + r3 = r3 & 3; + r2 = (r2 + 54)|0; + r5 = (r5 + 2)|0; +_3: while(true){ + r9 = heapU8[r5+-6]; + r10 = heapU16[(r5+-4)>>1]; + r9 = r9 & 1; + if(r9 != 0) //_LBB63_11 +{ + r9 = r10 << 6; + r7 = (r7 + r9)|0; + r7 = (r7 + r0)|0; + r9 = heapU16[(r7+54)>>1]; + r9 = (r9 + 1)|0; + heap16[(r7+54)>>1] = r9; +} +else{ +if(!(r6 ==0)) //_LBB63_10 +{ + r9 = heapU16[(r5)>>1]; + r9 = r9 << 6; + r11 = r10 << 6; + r9 = (r7 + r9)|0; + r12 = r8 << 1; + r11 = (r7 + r11)|0; + r13 = (r9 + r12)|0; + r12 = (r11 + r12)|0; + r14 = heapU16[(r13+54)>>1]; + r15 = heapU16[(r12+48)>>1]; +if(!(uint(r14) >1]; + r13 = heapU16[(r13+48)>>1]; +if(!(uint(r12) >1]; + r15 = heapU16[(r12+48)>>1]; +if(!(uint(r14) >1]; + r13 = heapU16[(r13+48)>>1]; +if(!(uint(r12) > 2; + r13 = heap32[(r13)]; + r13 = r13 >> 2; + r13 = heap32[(r13+3)]; + heap32[(g0)] = r12; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r11; + heap32[(g0+3)] = r4; + __FUNCTION_TABLE__[(r13)>>2](i7); + r12 = heap32[(r1+24)]; +if(!(r12 ==0)) //_LBB63_10 +{ + r13 = r12 >> 2; + r13 = heap32[(r13)]; + r13 = r13 >> 2; + r13 = heap32[(r13+3)]; + heap32[(g0)] = r12; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r11; + heap32[(g0+3)] = r4; + __FUNCTION_TABLE__[(r13)>>2](i7); +} +} +} +} +} +} + r10 = r10 << 6; + r7 = (r7 + r10)|0; + r7 = (r7 + r0)|0; + r10 = heapU16[(r7+48)>>1]; + r10 = (r10 + 1)|0; + heap16[(r7+48)>>1] = r10; +} + r7 = heapU16[(r2)>>1]; + r7 = (r7 + -1)|0; + heap16[(r2)>>1] = r7; + r7 = heapU16[(r5+-2)>>1]; + r9 = heapU16[(r5)>>1]; + r10 = heapU16[(r5+-4)>>1]; + r11 = heapU16[(r5+-6)>>1]; + heap16[(r5+-2)>>1] = r11; + heap16[(r5)>>1] = r10; + heap16[(r5+-6)>>1] = r7; + heap16[(r5+-4)>>1] = r9; + r9 = heapU16[(r5+-10)>>1]; + if(uint(r7) >=uint(r9)) //_LBB63_14 +{ +break _3; +} +else{ + r7 = heap32[(r1+15)]; + r5 = (r5 + -4)|0; +continue _3; +} +} +} + return; +} + +function _ZN20btAxisSweep3InternalItE7setAabbEP17btBroadphaseProxyRK9btVector3S5_P12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var r19; + var r20; + var f0; + var f1; + var f2; +var __label__ = 0; + i7 = sp + -40;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = heap32[(fp+1)]; + r2 = r0 >> 2; + r3 = r1 >> 2; + heap32[(r3+4)] = heap32[(r2)]; + heap32[(r3+5)] = heap32[(r2+1)]; + r4 = heap32[(fp+3)]; + heap32[(r3+6)] = heap32[(r2+2)]; + heap32[(r3+7)] = heap32[(r2+3)]; + r5 = r4 >> 2; + heap32[(r3+8)] = heap32[(r5)]; + heap32[(r3+9)] = heap32[(r5+1)]; + r6 = heap32[(fp)]; + heap32[(r3+10)] = heap32[(r5+2)]; + heap32[(r3+11)] = heap32[(r5+3)]; + r7 = r6 >> 2; + r1 = heapU16[(r1+12)>>1]; + r8 = heap32[(r7+15)]; + f0 = heapFloat[(r2)]; + f1 = heapFloat[(r2+1)]; + f2 = heapFloat[(r2+2)]; + r2 = sp + -6; + heap32[(g0)] = r6; + heap32[(g0+1)] = r2; + heapFloat[(g0+2)] = f0; + heapFloat[(g0+3)] = f1; + heapFloat[(g0+4)] = f2; + heap32[(g0+5)] = 0; + _ZNK20btAxisSweep3InternalItE8quantizeEPtRK9btVector3i(i7); + f0 = heapFloat[(r5)]; + f1 = heapFloat[(r5+1)]; + f2 = heapFloat[(r5+2)]; + r1 = r1 << 6; + r5 = sp + -12; + r1 = (r8 + r1)|0; + heap32[(g0)] = r6; + heap32[(g0+1)] = r5; + heapFloat[(g0+2)] = f0; + heapFloat[(g0+3)] = f1; + heapFloat[(g0+4)] = f2; + heap32[(g0+5)] = 1; + r8 = heap32[(fp+4)]; + r1 = (r1 + 48)|0; + r9 = 0; + _ZNK20btAxisSweep3InternalItE8quantizeEPtRK9btVector3i(i7); + r10 = r9; +_1: while(true){ + r11 = r9 << 2; + r12 = r9 << 1; + r13 = (r1 - r12)|0; + r11 = (r6 - r11)|0; + r14 = heapU16[(r13)>>1]; + r13 = heapU16[(r13+6)>>1]; + r11 = r11 >> 2; + r15 = (r2 - r12)|0; + r12 = (r5 - r12)|0; + r16 = heap32[(r11+17)]; + r17 = r14 << 2; + r18 = r13 << 2; + r15 = heapU16[(r15)>>1]; + r19 = heapU16[(r16+r17)>>1]; + r20 = heapU16[(r16+r18)>>1]; + r12 = heapU16[(r12)>>1]; + heap16[(r16+r17)>>1] = r15; + r11 = heap32[(r11+17)]; + r15 = (r15 - r19)|0; + heap16[(r11+r18)>>1] = r12; +if(!(r15 >-1)) //_LBB64_3 +{ + heap32[(g0)] = r6; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r14; + heap32[(g0+3)] = 1; + _ZN20btAxisSweep3InternalItE11sortMinDownEitP12btDispatcherb(i7); +} + r11 = (r12 - r20)|0; +if(!(r11 <1)) //_LBB64_5 +{ + heap32[(g0)] = r6; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r13; + heap32[(g0+3)] = 1; + _ZN20btAxisSweep3InternalItE9sortMaxUpEitP12btDispatcherb(i7); +} +if(!(r15 <1)) //_LBB64_7 +{ + heap32[(g0)] = r6; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r14; + heap32[(g0+3)] = r8; + heap32[(g0+4)] = 1; + _ZN20btAxisSweep3InternalItE9sortMinUpEitP12btDispatcherb(i7); +} +if(!(r11 >-1)) //_LBB64_9 +{ + heap32[(g0)] = r6; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r13; + heap32[(g0+3)] = r8; + heap32[(g0+4)] = 1; + _ZN20btAxisSweep3InternalItE11sortMaxDownEitP12btDispatcherb(i7); +} + r9 = (r9 + -1)|0; + r10 = (r10 + 1)|0; + if(r9 !=-3) //_LBB64_1 +{ +continue _1; +} +else{ +break _1; +} +} + r1 = heap32[(r7+27)]; +if(!(r1 ==0)) //_LBB64_12 +{ + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + r3 = heap32[(r3+15)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r0; + heap32[(g0+3)] = r4; + heap32[(g0+4)] = r8; + __FUNCTION_TABLE__[(r2)>>2](i7); +} + return; +} + +function _ZN20btAxisSweep3InternalItE12destroyProxyEP17btBroadphaseProxyP12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+27)]; + r3 = heap32[(fp+1)]; + r4 = heap32[(fp+2)]; +if(!(r2 ==0)) //_LBB65_2 +{ + r5 = r2 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r6 = r3 >> 2; + r5 = heap32[(r5+3)]; + r6 = heap32[(r6+15)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r4; + __FUNCTION_TABLE__[(r5)>>2](i7); +} + r2 = heap32[(r1+23)]; + r5 = r2 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r3 = r3 >> 2; + r3 = heap32[(r3+3)]; + r6 = heap32[(r1+15)]; + r5 = heap32[(r5+14)]; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r5)>>2](i7); + r2 = r_g0; +if(!(r2 !=0)) //_LBB65_4 +{ + r2 = heap32[(r1+23)]; + r5 = r2 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+4)]; + r7 = r3 & 65535; + r7 = r7 << 6; + r7 = (r6 + r7)|0; + heap32[(g0)] = r2; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r4; + __FUNCTION_TABLE__[(r5)>>2](i7); +} + r2 = heap32[(r1+15)]; + r5 = heapU16[(r0+56)>>1]; + r7 = heapU16[(r2+54)>>1]; + r7 = (r7 + -2)|0; + heap16[(r2+54)>>1] = r7; + r2 = heap32[(r1+15)]; + r7 = heapU16[(r2+56)>>1]; + r7 = (r7 + -2)|0; + r8 = r3 & 65535; + heap16[(r2+56)>>1] = r7; + r2 = heap32[(r1+15)]; + r7 = r8 << 6; + r9 = heapU16[(r2+58)>>1]; + r6 = (r6 + r7)|0; + r5 = r5 << 1; + r6 = (r6 + 54)|0; + r10 = 0; + r9 = (r9 + -2)|0; + heap16[(r2+58)>>1] = r9; + r2 = r10; +_7: while(true){ + r9 = r2 << 2; + r9 = (r0 + r9)|0; + r9 = r9 >> 2; + r11 = heapU16[(r6)>>1]; + r12 = heapU16[(r0+6)>>1]; + r9 = heap32[(r9+17)]; + r13 = r11 << 2; + heap16[(r9+r13)>>1] = r12; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r11; + heap32[(g0+3)] = 0; + _ZN20btAxisSweep3InternalItE9sortMaxUpEitP12btDispatcherb(i7); + r11 = heapU16[(r6+-6)>>1]; + r12 = heapU16[(r0+6)>>1]; + r13 = r11 << 2; + heap16[(r9+r13)>>1] = r12; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r11; + heap32[(g0+3)] = r4; + heap32[(g0+4)] = 0; + r11 = r5 << 2; + _ZN20btAxisSweep3InternalItE9sortMinUpEitP12btDispatcherb(i7); + r9 = (r9 + r11)|0; + heap16[(r9+-2)>>1] = r10; + r11 = heapU16[(r0+6)>>1]; + r2 = (r2 + 1)|0; + r6 = (r6 + 2)|0; + heap16[(r9+-4)>>1] = r11; + if(r2 !=3) //_LBB65_5 +{ +continue _7; +} +else{ +break _7; +} +} +if(!(r8 ==0)) //_LBB65_8 +{ + r2 = heapU16[(r0+58)>>1]; + if(uint(r2) >uint(r8)) //_LBB65_9 +{ + r1 = heap32[(r1+15)]; + r2 = heapU16[(r0+64)>>1]; + r1 = (r1 + r7)|0; + heap16[(r1+48)>>1] = r2; + heap16[(r0+64)>>1] = r3; + r1 = heapU16[(r0+56)>>1]; + r1 = (r1 + -1)|0; + heap16[(r0+56)>>1] = r1; + return; +} +} + r0 = _2E_str11; + r1 = _2E_str112; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 495; + _assert(i7); +} + +function _ZN20btAxisSweep3InternalItE11createProxyERK9btVector3S3_iPvssP12btDispatcherS4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var f0; + var f1; + var f2; +var __label__ = 0; + i7 = sp + -56;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = r0 >> 2; + f0 = heapFloat[(r1)]; + f1 = heapFloat[(r1+1)]; + f2 = heapFloat[(r1+2)]; + r1 = heap32[(fp)]; + r2 = sp + -6; + heap32[(g0)] = r1; + heap32[(g0+1)] = r2; + heapFloat[(g0+2)] = f0; + heapFloat[(g0+3)] = f1; + heapFloat[(g0+4)] = f2; + heap32[(g0+5)] = 0; + r2 = heap32[(fp+2)]; + _ZNK20btAxisSweep3InternalItE8quantizeEPtRK9btVector3i(i7); + r3 = r2 >> 2; + f0 = heapFloat[(r3)]; + f1 = heapFloat[(r3+1)]; + f2 = heapFloat[(r3+2)]; + r3 = sp + -12; + heap32[(g0)] = r1; + heap32[(g0+1)] = r3; + heapFloat[(g0+2)] = f0; + heapFloat[(g0+3)] = f1; + heapFloat[(g0+4)] = f2; + heap32[(g0+5)] = 1; + _ZNK20btAxisSweep3InternalItE8quantizeEPtRK9btVector3i(i7); + r3 = heapU16[(r1+64)>>1]; + if(r3 !=0) //_LBB66_2 +{ + r4 = heap32[(fp+4)]; + r5 = heap32[(fp+5)]; + r6 = heap32[(fp+6)]; + r7 = heap32[(fp+7)]; + r8 = heap32[(fp+8)]; + r9 = r1 >> 2; + r10 = r3 << 6; + r11 = heap32[(r9+15)]; + r10 = (r11 + r10)|0; + r11 = heapU16[(r10+48)>>1]; + heap16[(r1+64)>>1] = r11; + r11 = heapU16[(r1+56)>>1]; + r11 = (r11 + 1)|0; + r12 = r10 >> 2; + heap16[(r1+56)>>1] = r11; + heap32[(r12+3)] = r3; + heap32[(r12)] = r4; + heap16[(r10+4)>>1] = r5; + heap16[(r10+6)>>1] = r6; + heap32[(r12+2)] = r8; + r8 = heap32[(r9+15)]; + r11 = heapU16[(r1+56)>>1]; + r11 = r11 << 1; + r12 = heapU16[(r8+54)>>1]; + r13 = r11 & 65534; + r12 = (r12 + 2)|0; + r14 = (r13 + -1)|0; + heap16[(r8+54)>>1] = r12; + r8 = r14 << 2; + r12 = heap32[(r9+17)]; + r14 = (r12 + r8)|0; + r15 = r13 | 1; + r14 = heapU16[(r14+2)>>1]; + r16 = heapU16[(r12+r8)>>1]; + r15 = r15 << 2; + r17 = (r12 + r15)|0; + heap16[(r12+r15)>>1] = r16; + heap16[(r17+2)>>1] = r14; + r12 = heap32[(r9+17)]; + r14 = heapU16[(sp+-6)>>1]; + heap16[(r12+r8)>>1] = r14; + r12 = heap32[(r9+17)]; + r12 = (r12 + r8)|0; + heap16[(r12+2)>>1] = r3; + r12 = heap32[(r9+17)]; + r14 = heapU16[(sp+-12)>>1]; + r13 = r13 << 2; + heap16[(r12+r13)>>1] = r14; + r12 = heap32[(r9+17)]; + r12 = (r12 + r13)|0; + r14 = (r11 + -1)|0; + heap16[(r12+2)>>1] = r3; + heap16[(r10+48)>>1] = r14; + heap16[(r10+54)>>1] = r11; + r12 = heap32[(r9+15)]; + r16 = heapU16[(r12+56)>>1]; + r16 = (r16 + 2)|0; + heap16[(r12+56)>>1] = r16; + r12 = heap32[(r9+18)]; + r16 = (r12 + r8)|0; + r16 = heapU16[(r16+2)>>1]; + r17 = heapU16[(r12+r8)>>1]; + r18 = (r12 + r15)|0; + heap16[(r12+r15)>>1] = r17; + heap16[(r18+2)>>1] = r16; + r12 = heap32[(r9+18)]; + r16 = heapU16[(sp+-4)>>1]; + heap16[(r12+r8)>>1] = r16; + r12 = heap32[(r9+18)]; + r12 = (r12 + r8)|0; + heap16[(r12+2)>>1] = r3; + r12 = heap32[(r9+18)]; + r16 = heapU16[(sp+-10)>>1]; + heap16[(r12+r13)>>1] = r16; + r12 = heap32[(r9+18)]; + r12 = (r12 + r13)|0; + heap16[(r12+2)>>1] = r3; + heap16[(r10+50)>>1] = r14; + heap16[(r10+56)>>1] = r11; + r12 = heap32[(r9+15)]; + r16 = heapU16[(r12+58)>>1]; + r16 = (r16 + 2)|0; + heap16[(r12+58)>>1] = r16; + r12 = heap32[(r9+19)]; + r16 = (r12 + r8)|0; + r16 = heapU16[(r16+2)>>1]; + r17 = heapU16[(r12+r8)>>1]; + r18 = (r12 + r15)|0; + heap16[(r12+r15)>>1] = r17; + heap16[(r18+2)>>1] = r16; + r12 = heap32[(r9+19)]; + r15 = heapU16[(sp+-2)>>1]; + heap16[(r12+r8)>>1] = r15; + r12 = heap32[(r9+19)]; + r8 = (r12 + r8)|0; + heap16[(r8+2)>>1] = r3; + r8 = heap32[(r9+19)]; + r12 = heapU16[(sp+-8)>>1]; + heap16[(r8+r13)>>1] = r12; + r8 = heap32[(r9+19)]; + r8 = (r8 + r13)|0; + heap16[(r8+2)>>1] = r3; + heap16[(r10+52)>>1] = r14; + heap16[(r10+58)>>1] = r11; + r8 = heapU16[(r10+48)>>1]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = 0; + _ZN20btAxisSweep3InternalItE11sortMinDownEitP12btDispatcherb(i7); + r8 = heapU16[(r10+54)>>1]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r7; + heap32[(g0+4)] = 0; + _ZN20btAxisSweep3InternalItE11sortMaxDownEitP12btDispatcherb(i7); + r8 = heapU16[(r10+50)>>1]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 1; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = 0; + _ZN20btAxisSweep3InternalItE11sortMinDownEitP12btDispatcherb(i7); + r8 = heapU16[(r10+56)>>1]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 1; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r7; + heap32[(g0+4)] = 0; + _ZN20btAxisSweep3InternalItE11sortMaxDownEitP12btDispatcherb(i7); + r8 = heapU16[(r10+52)>>1]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 2; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = 1; + _ZN20btAxisSweep3InternalItE11sortMinDownEitP12btDispatcherb(i7); + r8 = heapU16[(r10+58)>>1]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 2; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r7; + heap32[(g0+4)] = 1; + _ZN20btAxisSweep3InternalItE11sortMaxDownEitP12btDispatcherb(i7); + updateMandreelStats(performance.now()); + r1 = heap32[(r9+27)]; + r8 = heap32[(r9+15)]; +if(!(r1 ==0)) //_LBB66_4 +{ + r9 = heap32[(fp+3)]; + r10 = r1 >> 2; + r10 = heap32[(r10)]; + r10 = r10 >> 2; + r10 = heap32[(r10+2)]; + r11 = r3 << 6; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r9; + heap32[(g0+4)] = r4; + heap32[(g0+5)] = r5; + heap32[(g0+6)] = r6; + heap32[(g0+7)] = r7; + heap32[(g0+8)] = 0; + r0 = (r8 + r11)|0; + r0 = r0 >> 2; + __FUNCTION_TABLE__[(r10)>>2](i7); + heap32[(r0+15)] = r_g0; +} + r0 = r3 << 6; + r0 = (r8 + r0)|0; + r_g0 = r0; + return; +} +else{ + r0 = _2E_str213; + r1 = _2E_str112; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 483; + _assert(i7); +} +} + +function _ZN20btAlignedObjectArrayI16btBroadphasePairE6resizeEiRKS0_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+1)]; + r3 = heap32[(fp+1)]; +_1: do { +if(!(r2 >r3)) //_LBB67_20 +{ +if(!(r2 >=r3)) //_LBB67_20 +{ + r4 = heap32[(r1+2)]; +if(!(r4 >=r3)) //_LBB67_18 +{ + if(r3 !=0) //_LBB67_5 +{ + r4 = gNumAlignedAllocs; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r6 = r3 << 4; + r5 = (r5 + 1)|0; + r6 = r6 | 3; + heap32[(r4)] = r5; + r4 = (r6 + 16)|0; + heap32[(g0)] = r4; + malloc(i7); + r4 = r_g0; + if(r4 !=0) //_LBB67_7 +{ + r5 = 0; + r6 = (r4 + 4)|0; + r5 = (r5 - r6)|0; + r5 = r5 & 15; + r5 = (r4 + r5)|0; + r6 = (r5 + 4)|0; + r5 = r5 >> 2; + heap32[(r5)] = r4; + r4 = r6; +} +} +else{ + r4 = 0; +} + r5 = (r0 + 12)|0; + if(r2 <1) //_LBB67_10 +{ + r6 = r5 >> 2; + r8 = heap32[(r6)]; +} +else{ + r6 = 0; + r7 = (r6 - r2)|0; +_14: while(true){ + r8 = r5 >> 2; + r8 = heap32[(r8)]; + r9 = r6 << 4; + r10 = (r8 - r9)|0; + r10 = r10 >> 2; + r9 = (r4 - r9)|0; + r11 = heap32[(r10)]; + r9 = r9 >> 2; + heap32[(r9)] = r11; + r11 = heap32[(r10+1)]; + heap32[(r9+1)] = r11; + r11 = heap32[(r10+2)]; + heap32[(r9+2)] = r11; + r10 = heap32[(r10+3)]; + r6 = (r6 + -1)|0; + heap32[(r9+3)] = r10; +if(!(r7 !=r6)) //_LBB67_11 +{ +break _14; +} +} + r5 = (r0 + 12)|0; +} +if(!(r8 ==0)) //_LBB67_17 +{ + r6 = heapU8[r0+16]; +if(!(r6 ==0)) //_LBB67_16 +{ + r6 = gNumAlignedFree; + r6 = r6 >> 2; + r7 = heap32[(r6)]; + r7 = (r7 + 1)|0; + r8 = r8 >> 2; + heap32[(r6)] = r7; + r6 = heap32[(r8+-1)]; + heap32[(g0)] = r6; + free(i7); +} + r6 = r5 >> 2; + heap32[(r6)] = 0; +} + r6 = 1; + r5 = r5 >> 2; + heap8[r0+16] = r6; + heap32[(r5)] = r4; + heap32[(r1+2)] = r3; + if(r2 >=r3) //_LBB67_20 +{ +break _1; +} +} + r0 = heap32[(fp+2)]; +_25: while(true){ + r4 = r0 >> 2; + r5 = r2 << 4; + r6 = heap32[(r1+3)]; + r5 = (r6 + r5)|0; + r6 = heap32[(r4)]; + r5 = r5 >> 2; + heap32[(r5)] = r6; + r6 = heap32[(r4+1)]; + heap32[(r5+1)] = r6; + r6 = heap32[(r4+2)]; + heap32[(r5+2)] = r6; + r4 = heap32[(r4+3)]; + r2 = (r2 + 1)|0; + heap32[(r5+3)] = r4; + if(r3 !=r2) //_LBB67_19 +{ +continue _25; +} +else{ +break _1; +} +} +} +} +} while(0); + heap32[(r1+1)] = r3; + return; +} + +function _ZN20btAxisSweep3InternalItE25calculateOverlappingPairsEP12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; +var __label__ = 0; + i7 = sp + -48;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+23)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+14)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r2)>>2](i7); + r1 = r_g0; +if(!(r1 ==0)) //_LBB68_22 +{ + r1 = heap32[(fp+1)]; + r2 = heap32[(r0+23)]; + r3 = r2 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+7)]; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r3)>>2](i7); + r2 = r_g0; + r3 = r2 >> 2; + r3 = heap32[(r3+1)]; + if(r3 >1) //_LBB68_3 +{ + r3 = (r3 + -1)|0; + heap32[(g0)] = r2; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = r3; + r3 = r2 >> 2; + _ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(i7); + r3 = heap32[(r3+1)]; +} + r4 = sp + -32; + r5 = r4 >> 2; + heap32[(fp+-8)] = 0; + heap32[(r5+1)] = 0; + heap32[(r5+2)] = 0; + heap32[(r5+3)] = 0; + r5 = heap32[(r0+26)]; + r3 = (r3 - r5)|0; + heap32[(g0)] = r2; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r4; + r3 = 0; + _ZN20btAlignedObjectArrayI16btBroadphasePairE6resizeEiRKS0_(i7); + heap32[(r0+26)] = 0; + r4 = r3; + r5 = r3; + r6 = r3; + r7 = r3; +_6: while(true){ + r8 = r2 >> 2; + r9 = heap32[(r8+1)]; + if(r9 >r7) //_LBB68_5 +{ + r8 = heap32[(r8+3)]; + r9 = r7 << 4; + r9 = (r8 + r9)|0; + r9 = r9 >> 2; + r10 = heap32[(r9)]; + r11 = r7 << 2; + r12 = heap32[(r9+1)]; + if(r10 !=r5) //_LBB68_7 +{ +__label__ = 6; +} +else{ + if(r12 ==r6) //_LBB68_13 +{ + r4 = heap32[(r9+2)]; + if(r4 ==0) //_LBB68_15 +{ +__label__ = 13; +} +else{ +__label__ = 12; +break _6; +} +} +else{ +__label__ = 6; +} +} +if (__label__ == 6){ + r5 = (r12 + 54)|0; + r6 = (r10 + 48)|0; + r9 = 0; +_14: while(true){ + if(r9 <3) //_LBB68_8 +{ + r13 = heapU16[(r6+6)>>1]; + r14 = heapU16[(r5+-6)>>1]; + if(uint(r13) >1]; + r14 = heapU16[(r6)>>1]; + if(uint(r13) > 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+8)]; + r6 = (r8 + r3)|0; + r9 = r11 << 2; + heap32[(g0)] = r4; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r1; + r4 = (r8 + r9)|0; + r4 = r4 >> 2; + __FUNCTION_TABLE__[(r5)>>2](i7); + heap32[(r4)] = 0; + heap32[(r4+1)] = 0; + r4 = heap32[(r0+26)]; + r4 = (r4 + 1)|0; + r5 = gOverlappingPairs; + r5 = r5 >> 2; + heap32[(r0+26)] = r4; + r6 = heap32[(r5)]; + r6 = (r6 + -1)|0; + heap32[(r5)] = r6; +} + r7 = (r7 + 1)|0; + r3 = (r3 + 16)|0; + r5 = r10; + r6 = r12; +} +else{ +__label__ = 16; +break _6; +} +} +switch(__label__ ){//multiple entries +case 16: + if(r9 >1) //_LBB68_20 +{ + r4 = (r9 + -1)|0; + heap32[(g0)] = r2; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = r4; + _ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(i7); + r9 = heap32[(r8+1)]; + r4 = heap32[(r0+26)]; +} + r1 = sp + -16; + r3 = r1 >> 2; + heap32[(fp+-4)] = 0; + heap32[(r3+1)] = 0; + heap32[(r3+2)] = 0; + heap32[(r3+3)] = 0; + r3 = (r9 - r4)|0; + heap32[(g0)] = r2; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r1; + _ZN20btAlignedObjectArrayI16btBroadphasePairE6resizeEiRKS0_(i7); + heap32[(r0+26)] = 0; +break; +case 12: + r8 = _2E_str314; + r0 = _2E_str112; + heap32[(g0)] = r8; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = 687; + _assert(i7); +break; +} +} + return; +} + +function _ZN20btAxisSweep3InternalItED2Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV20btAxisSweep3InternalItE; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+27)]; +if(!(r1 ==0)) //_LBB69_5 +{ + r1 = heap32[(r2+28)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+28)]; +if(!(r1 ==0)) //_LBB69_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + r1 = heap32[(r2+27)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+27)]; +if(!(r1 ==0)) //_LBB69_5 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} +} + r1 = 0; +_8: while(true){ + r3 = r1 << 2; + r3 = (r0 + r3)|0; + r3 = r3 >> 2; + r3 = heap32[(r3+22)]; +if(!(r3 ==0)) //_LBB69_8 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + r1 = (r1 + -1)|0; + if(r1 !=-3) //_LBB69_6 +{ +continue _8; +} +else{ +break _8; +} +} + r1 = heap32[(r2+15)]; +if(!(r1 ==0)) //_LBB69_11 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + r0 = heapU8[r0+100]; +if(!(r0 ==0)) //_LBB69_14 +{ + r0 = heap32[(r2+23)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = heap32[(r2+23)]; +if(!(r0 ==0)) //_LBB69_14 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r2 = heap32[(r1)]; + r2 = (r2 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r2; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} +} + return; +} + +function _ZN20btAxisSweep3InternalItED1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + heap32[(g0)] = r0; + _ZN20btAxisSweep3InternalItED2Ev(i7); + return; +} + +function _ZN20btAxisSweep3InternalItED0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV20btAxisSweep3InternalItE; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+27)]; +if(!(r1 ==0)) //_LBB71_5 +{ + r1 = heap32[(r2+28)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+28)]; +if(!(r1 ==0)) //_LBB71_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + r1 = heap32[(r2+27)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+27)]; +if(!(r1 ==0)) //_LBB71_5 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} +} + r1 = 0; +_8: while(true){ + r3 = r1 << 2; + r3 = (r0 + r3)|0; + r3 = r3 >> 2; + r3 = heap32[(r3+22)]; +if(!(r3 ==0)) //_LBB71_8 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + r1 = (r1 + -1)|0; + if(r1 !=-3) //_LBB71_6 +{ +continue _8; +} +else{ +break _8; +} +} + r1 = heap32[(r2+15)]; +if(!(r1 ==0)) //_LBB71_11 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + r0 = heapU8[r0+100]; +if(!(r0 ==0)) //_LBB71_14 +{ + r0 = heap32[(r2+23)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = heap32[(r2+23)]; +if(!(r0 ==0)) //_LBB71_14 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r3 = heap32[(r1)]; + r3 = (r3 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r3; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} +} + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + heap32[(r0)] = r1; + r0 = heap32[(r2+-1)]; + heap32[(g0)] = r0; + free(i7); + return; +} + +function _ZN12btAxisSweep3D0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV12btAxisSweep3; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZN20btAxisSweep3InternalItED2Ev(i7); +if(!(r0 ==0)) //_LBB72_2 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + heap32[(r0)] = r1; + r0 = heap32[(r2+-1)]; + heap32[(g0)] = r0; + free(i7); +} + return; +} + +function _ZN12btAxisSweep3D1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV12btAxisSweep3; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZN20btAxisSweep3InternalItED2Ev(i7); + return; +} + +function _ZN20btCollisionAlgorithmD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV20btCollisionAlgorithm; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN20btCollisionAlgorithmD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV20btCollisionAlgorithm; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodeS3_(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodef(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+3)]; + r2 = heap32[(fp+1)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} + +function _ZN6btDbvt8ICollide7DescentEPK10btDbvtNode(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 1; + r_g0 = r0; + return; +} + +function _ZN6btDbvt8ICollide9AllLeavesEPK10btDbvtNode(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 1; + r_g0 = r0; + return; +} + +function _ZL10insertleafP6btDbvtP10btDbvtNodeS2_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+2)]; + r0 = r0 >> 2; + r2 = heap32[(r0)]; + if(r2 !=0) //_LBB80_2 +{ + r2 = heap32[(fp+1)]; + r3 = r2 >> 2; + r3 = heap32[(r3+10)]; + if(r3 !=0) //_LBB80_4 +{ + r4 = r1 >> 2; + f0 = heapFloat[(r4+2)]; + f1 = heapFloat[(r4+6)]; + f2 = heapFloat[(r4+1)]; + f3 = heapFloat[(r4+5)]; + f4 = heapFloat[(r4)]; + f5 = heapFloat[(r4+4)]; + f0 = f0+f1; + f1 = f2+f3; + f2 = f4+f5; +_5: while(true){ + r4 = r2 >> 2; + r4 = heap32[(r4+9)]; + r4 = r4 >> 2; + f3 = heapFloat[(r4)]; + f4 = heapFloat[(r4+4)]; + f5 = heapFloat[(r4+2)]; + f6 = heapFloat[(r4+6)]; + f7 = heapFloat[(r4+1)]; + f8 = heapFloat[(r4+5)]; + f3 = f3+f4; + f4 = f5+f6; + f5 = f7+f8; + f3 = f2-f3; + f4 = f0-f4; + f5 = f1-f5; + f6 = 0; + if(f3 > 2; + f5 = heapFloat[(r3)]; + f7 = heapFloat[(r3+4)]; + f8 = heapFloat[(r3+2)]; + f9 = heapFloat[(r3+6)]; + f10 = heapFloat[(r3+1)]; + f11 = heapFloat[(r3+5)]; + f5 = f5+f7; + f7 = f8+f9; + f8 = f10+f11; + f5 = f2-f5; + f3 = f3+f4; + f4 = f0-f7; + f7 = f1-f8; + if(f5 = f4; + r3 = r3 & 1; + r3 = r3 << 2; + r2 = (r2 + r3)|0; + r2 = r2 >> 2; + r2 = heap32[(r2+9)]; + r3 = r2 >> 2; + r3 = heap32[(r3+10)]; +if(!(r3 !=0)) //_LBB80_5 +{ +break _5; +} +} +} + r3 = r2 >> 2; + r4 = heap32[(r0+1)]; + r5 = heap32[(r3+8)]; + if(r4 ==0) //_LBB80_26 +{ + r4 = gNumAlignedAllocs; + r4 = r4 >> 2; + r6 = heap32[(r4)]; + r6 = (r6 + 1)|0; + heap32[(r4)] = r6; + heap32[(g0)] = 63; + malloc(i7); + r4 = r_g0; + if(r4 !=0) //_LBB80_28 +{ + r6 = 0; + r7 = (r4 + 4)|0; + r6 = (r6 - r7)|0; + r6 = r6 & 15; + r6 = (r4 + r6)|0; + r7 = (r6 + 4)|0; + r6 = r6 >> 2; + heap32[(r6)] = r4; + r4 = r7; +} +} +else{ + heap32[(r0+1)] = 0; +} + r6 = r4 >> 2; + heap32[(r6+8)] = r5; + heap32[(r6+9)] = 0; + heap32[(r6+10)] = 0; + r7 = r1 >> 2; + f0 = heapFloat[(r7)]; + f1 = heapFloat[(r3)]; + f0 = f0 < f1 ? f0 : f1; + heapFloat[(r6)] = f0; + f0 = heapFloat[(r7+4)]; + f1 = heapFloat[(r3+4)]; + f0 = f0 > f1 ? f0 : f1; + heapFloat[(r6+4)] = f0; + f0 = heapFloat[(r7+1)]; + f1 = heapFloat[(r3+1)]; + f0 = f0 < f1 ? f0 : f1; + heapFloat[(r6+1)] = f0; + f0 = heapFloat[(r7+5)]; + f1 = heapFloat[(r3+5)]; + f0 = f0 > f1 ? f0 : f1; + heapFloat[(r6+5)] = f0; + f0 = heapFloat[(r7+2)]; + f1 = heapFloat[(r3+2)]; + f0 = f0 < f1 ? f0 : f1; + heapFloat[(r6+2)] = f0; + f0 = heapFloat[(r7+6)]; + f1 = heapFloat[(r3+6)]; + f0 = f0 > f1 ? f0 : f1; + heapFloat[(r6+6)] = f0; +_31: do { + if(r5 ==0) //_LBB80_38 +{ + heap32[(r6+9)] = r2; + heap32[(r3+8)] = r4; + heap32[(r6+10)] = r1; + heap32[(r7+8)] = r4; + heap32[(r0)] = r4; +} +else{ + r0 = heap32[(r3+8)]; + r0 = r0 >> 2; + r0 = heap32[(r0+10)]; + r0 = r0 == r2; + r0 = r0 & 1; + r0 = r0 << 2; + r0 = (r5 + r0)|0; + r0 = r0 >> 2; + heap32[(r0+9)] = r4; + heap32[(r6+9)] = r2; + heap32[(r3+8)] = r4; + heap32[(r6+10)] = r1; + heap32[(r7+8)] = r4; + f0 = heapFloat[(r6)]; +_34: while(true){ + r0 = r5; + r1 = r0 >> 2; + f1 = heapFloat[(r1)]; +if(!(f1 >f0)) //_LBB80_37 +{ + r2 = r4 >> 2; + f0 = heapFloat[(r1+1)]; + f1 = heapFloat[(r2+1)]; +if(!(f0 >f1)) //_LBB80_37 +{ + f0 = heapFloat[(r1+2)]; + f1 = heapFloat[(r2+2)]; +if(!(f0 >f1)) //_LBB80_37 +{ + f0 = heapFloat[(r1+4)]; + f1 = heapFloat[(r2+4)]; +if(!(f0 =f1) //_LBB80_39 +{ +break _31; +} +} +} +} +} +} + r2 = heap32[(r1+10)]; + r3 = heap32[(r1+9)]; + r2 = r2 >> 2; + r3 = r3 >> 2; + f0 = heapFloat[(r3)]; + f1 = heapFloat[(r2)]; + f0 = f0 < f1 ? f0 : f1; + heapFloat[(r1)] = f0; + f1 = heapFloat[(r3+4)]; + f2 = heapFloat[(r2+4)]; + f1 = f1 > f2 ? f1 : f2; + heapFloat[(r1+4)] = f1; + f1 = heapFloat[(r3+1)]; + f2 = heapFloat[(r2+1)]; + f1 = f1 < f2 ? f1 : f2; + heapFloat[(r1+1)] = f1; + f1 = heapFloat[(r3+5)]; + f2 = heapFloat[(r2+5)]; + f1 = f1 > f2 ? f1 : f2; + heapFloat[(r1+5)] = f1; + f1 = heapFloat[(r3+2)]; + f2 = heapFloat[(r2+2)]; + f1 = f1 < f2 ? f1 : f2; + heapFloat[(r1+2)] = f1; + f1 = heapFloat[(r3+6)]; + f2 = heapFloat[(r2+6)]; + f1 = f1 > f2 ? f1 : f2; + heapFloat[(r1+6)] = f1; + r5 = heap32[(r1+8)]; + r4 = r0; + if(r5 ==0) //_LBB80_39 +{ +break _31; +} +} +} +} while(0); + return; +} +else{ + r2 = r1 >> 2; + heap32[(r0)] = r1; + heap32[(r2+8)] = 0; + return; +} +} + +function _ZL10removeleafP6btDbvtP10btDbvtNode(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r0 = r0 >> 2; + r2 = heap32[(r0)]; + if(r2 !=r1) //_LBB81_2 +{ + r2 = r1 >> 2; + r2 = heap32[(r2+8)]; + r3 = r2 >> 2; + r4 = heap32[(r3+10)]; + r1 = r4 != r1; + r1 = r1 & 1; + r1 = r1 << 2; + r1 = (r2 + r1)|0; + r1 = r1 >> 2; + r3 = heap32[(r3+8)]; + r1 = heap32[(r1+9)]; +_3: do { + if(r3 ==0) //_LBB81_11 +{ + r3 = r1 >> 2; + heap32[(r0)] = r1; + heap32[(r3+8)] = 0; + r3 = heap32[(r0+1)]; +if(!(r3 ==0)) //_LBB81_13 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r4 = heap32[(r1)]; + r4 = (r4 + 1)|0; + r3 = r3 >> 2; + heap32[(r1)] = r4; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r0+1)] = r2; + r3 = heap32[(r0)]; +} +else{ + r4 = r3 >> 2; + r4 = heap32[(r4+10)]; + r4 = r4 == r2; + r4 = r4 & 1; + r4 = r4 << 2; + r4 = (r3 + r4)|0; + r4 = r4 >> 2; + r5 = r1 >> 2; + heap32[(r4+9)] = r1; + heap32[(r5+8)] = r3; + r1 = heap32[(r0+1)]; +if(!(r1 ==0)) //_LBB81_5 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r1 = r1 >> 2; + heap32[(r4)] = r5; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r0+1)] = r2; +_12: while(true){ + if(r3 !=0) //_LBB81_6 +{ + r1 = r3 >> 2; + r2 = heap32[(r1+10)]; + r4 = heap32[(r1+9)]; + r2 = r2 >> 2; + r4 = r4 >> 2; + f0 = heapFloat[(r1+6)]; + f1 = heapFloat[(r1)]; + f2 = heapFloat[(r1+1)]; + f3 = heapFloat[(r1+2)]; + f4 = heapFloat[(r1+4)]; + f5 = heapFloat[(r1+5)]; + f6 = heapFloat[(r4)]; + f7 = heapFloat[(r2)]; + f6 = f6 < f7 ? f6 : f7; + heapFloat[(r1)] = f6; + f7 = heapFloat[(r4+4)]; + f8 = heapFloat[(r2+4)]; + f7 = f7 > f8 ? f7 : f8; + heapFloat[(r1+4)] = f7; + f8 = heapFloat[(r4+1)]; + f9 = heapFloat[(r2+1)]; + f8 = f8 < f9 ? f8 : f9; + heapFloat[(r1+1)] = f8; + f9 = heapFloat[(r4+5)]; + f10 = heapFloat[(r2+5)]; + f9 = f9 > f10 ? f9 : f10; + heapFloat[(r1+5)] = f9; + f10 = heapFloat[(r4+2)]; + f11 = heapFloat[(r2+2)]; + f10 = f10 < f11 ? f10 : f11; + heapFloat[(r1+2)] = f10; + f11 = heapFloat[(r4+6)]; + f12 = heapFloat[(r2+6)]; + f11 = f11 > f12 ? f11 : f12; + heapFloat[(r1+6)] = f11; +if(!(f0 !=f11)) //_LBB81_8 +{ + r2 = f1 == f6; + r4 = f2 == f8; + r2 = r2 & r4; + r4 = f3 == f10; + r2 = r2 & r4; + r4 = f4 == f7; + r2 = r2 & r4; + r4 = f5 == f9; + r2 = r2 & r4; + if(r2 != 0) //_LBB81_14 +{ +break _3; +} +} + r3 = heap32[(r1+8)]; +} +else{ +break _12; +} +} + r0 = heap32[(r0)]; + r_g0 = r0; + return; +} +} while(0); + r_g0 = r3; + return; +} +else{ + heap32[(r0)] = 0; + r0 = 0; + r_g0 = r0; + return; +} +} + +function _ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMmRK9btVector3f(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r0 = r0 >> 2; + r1 = heap32[(fp+1)]; + f0 = heapFloat[(r0)]; + r2 = heap32[(fp)]; + r3 = heap32[(fp+3)]; + f1 = heapFloat[(fp+4)]; + r4 = r1 >> 2; + f2 = heapFloat[(r4)]; + if(f2 <=f0) //_LBB82_2 +{ + f2 = heapFloat[(r0+1)]; + f3 = heapFloat[(r4+1)]; + if(f3 <=f2) //_LBB82_4 +{ + f3 = heapFloat[(r4+2)]; + f4 = heapFloat[(r0+2)]; +if(!(f3 >f4)) //_LBB82_3 +{ + f3 = heapFloat[(r4+4)]; + f4 = heapFloat[(r0+4)]; +if(!(f3 > 2; + heapFloat[(r0+6)] = f1; + f6 = heapFloat[(r3)]; + f7 = 0; + if(f6 <=f7) //_LBB82_10 +{ + f0 = f0+f6; + heapFloat[(r0)] = f0; +} +else{ + f0 = f4+f6; + heapFloat[(r0+4)] = f0; +} + f0 = heapFloat[(r3+1)]; + if(f0 <=f7) //_LBB82_13 +{ + f0 = f2+f0; + heapFloat[(r0+1)] = f0; +} +else{ + f0 = f5+f0; + heapFloat[(r0+5)] = f0; +} + f0 = heapFloat[(r3+2)]; + if(f0 <=f7) //_LBB82_16 +{ + f0 = f3+f0; + heapFloat[(r0+2)] = f0; +} +else{ + f0 = f1+f0; + heapFloat[(r0+6)] = f0; +} + heap32[(g0)] = r2; + heap32[(g0+1)] = r1; + _ZL10removeleafP6btDbvtP10btDbvtNode(i7); + r3 = r_g0; +_22: do { + if(r3 !=0) //_LBB82_19 +{ + r5 = r2 >> 2; + r6 = heap32[(r5+2)]; + if(r6 <0) //_LBB82_24 +{ + r5 = heap32[(r5)]; +} +else{ + r7 = -1; +_27: while(true){ + r5 = r3; + r7 = (r7 + 1)|0; + if(r6 >r7) //_LBB82_23 +{ + r3 = r5 >> 2; + r3 = heap32[(r3+8)]; + if(r3 ==0) //_LBB82_22 +{ +break _22; +} +else{ +continue _27; +} +} +else{ +break _22; +} +} +} +} +else{ + r5 = 0; +} +} while(0); + heap32[(r4)] = heap32[(r0)]; + heap32[(r4+1)] = heap32[(r0+1)]; + heap32[(r4+2)] = heap32[(r0+2)]; + heap32[(r4+3)] = heap32[(r0+3)]; + heap32[(r4+4)] = heap32[(r0+4)]; + heap32[(r4+5)] = heap32[(r0+5)]; + heap32[(r4+6)] = heap32[(r0+6)]; + heap32[(r4+7)] = heap32[(r0+7)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r1; + _ZL10insertleafP6btDbvtP10btDbvtNodeS2_(i7); + r0 = 1; + r_g0 = r0; + return; +} + +function _ZL17recursedeletenodeP6btDbvtP10btDbvtNode(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r2 = r0 >> 2; + r3 = heap32[(r2+10)]; +if(!(r3 ==0)) //_LBB83_2 +{ + r3 = heap32[(r2+9)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r3; + _ZL17recursedeletenodeP6btDbvtP10btDbvtNode(i7); + r2 = heap32[(r2+10)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r2; + _ZL17recursedeletenodeP6btDbvtP10btDbvtNode(i7); +} + r1 = r1 >> 2; + r2 = heap32[(r1)]; +if(!(r2 !=r0)) //_LBB83_4 +{ + heap32[(r1)] = 0; +} + r2 = heap32[(r1+1)]; +if(!(r2 ==0)) //_LBB83_6 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r2 = r2 >> 2; + heap32[(r3)] = r4; + r2 = heap32[(r2+-1)]; + heap32[(g0)] = r2; + free(i7); +} + heap32[(r1+1)] = r0; + return; +} + +function _ZN6btDbvt19optimizeIncrementalEi(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + if(r0 <0) //_LBB84_2 +{ + r0 = r1 >> 2; + r0 = heap32[(r0+3)]; +} + r2 = r1 >> 2; + r3 = heap32[(r2)]; +_4: do { +if(!(r3 ==0)) //_LBB84_20 +{ +if(!(r0 <1)) //_LBB84_20 +{ +_6: while(true){ + r3 = 0; + r4 = r1; +_8: while(true){ + r4 = r4 >> 2; + r4 = heap32[(r4)]; + r5 = r4 >> 2; + r6 = heap32[(r5+10)]; + if(r6 !=0) //_LBB84_6 +{ + r6 = heap32[(r5+8)]; + if(uint(r6) >uint(r4)) //_LBB84_8 +{ + r7 = r6 >> 2; + r8 = heap32[(r7+10)]; + r8 = r8 == r4; + r8 = r8 & 1; + r9 = (r6 + 36)|0; + r10 = r8 << 2; + r11 = (r9 + r10)|0; + r11 = r11 >> 2; + r11 = heap32[(r11)]; + if(r11 ==r4) //_LBB84_10 +{ + r8 = r8 ^ 1; + r8 = r8 << 2; + r9 = (r9 + r8)|0; + r9 = r9 >> 2; + r9 = heap32[(r9)]; + r11 = heap32[(r7+8)]; + if(r11 ==0) //_LBB84_12 +{ + heap32[(r2)] = r4; +} +else{ + r12 = r11 >> 2; + r12 = heap32[(r12+10)]; + r12 = r12 == r6; + r12 = r12 & 1; + r12 = r12 << 2; + r12 = (r11 + r12)|0; + r12 = r12 >> 2; + heap32[(r12+9)] = r4; +} + r12 = r9 >> 2; + heap32[(r12+8)] = r4; + heap32[(r7+8)] = r4; + heap32[(r5+8)] = r11; + r11 = heap32[(r5+9)]; + heap32[(r7+9)] = r11; + r11 = heap32[(r5+10)]; + heap32[(r7+10)] = r11; + r11 = heap32[(r5+9)]; + r11 = r11 >> 2; + heap32[(r11+8)] = r6; + r11 = heap32[(r5+10)]; + r4 = (r4 + 36)|0; + r10 = (r4 + r10)|0; + r11 = r11 >> 2; + r4 = (r4 + r8)|0; + r8 = r10 >> 2; + heap32[(r11+8)] = r6; + r4 = r4 >> 2; + heap32[(r8)] = r6; + heap32[(r4)] = r9; + f0 = heapFloat[(r7+7)]; + f1 = heapFloat[(r7+6)]; + f2 = heapFloat[(r7+5)]; + f3 = heapFloat[(r7+4)]; + f4 = heapFloat[(r7+3)]; + f5 = heapFloat[(r7+2)]; + f6 = heapFloat[(r7+1)]; + f7 = heapFloat[(r7)]; + heap32[(r7)] = heap32[(r5)]; + heap32[(r7+1)] = heap32[(r5+1)]; + heap32[(r7+2)] = heap32[(r5+2)]; + heap32[(r7+3)] = heap32[(r5+3)]; + heap32[(r7+4)] = heap32[(r5+4)]; + heap32[(r7+5)] = heap32[(r5+5)]; + heap32[(r7+6)] = heap32[(r5+6)]; + heap32[(r7+7)] = heap32[(r5+7)]; + heapFloat[(r5)] = f7; + heapFloat[(r5+1)] = f6; + heapFloat[(r5+2)] = f5; + heapFloat[(r5+3)] = f4; + heapFloat[(r5+4)] = f3; + heapFloat[(r5+5)] = f2; + heapFloat[(r5+6)] = f1; + heapFloat[(r5+7)] = f0; +} +else{ +break _6; +} +} +else{ + r6 = r4; +} + r4 = heap32[(r2+4)]; + r4 = r4 >>> r3; + r4 = r4 & 1; + r4 = r4 << 2; + r4 = (r6 + r4)|0; + r3 = (r3 + 1)|0; + r4 = (r4 + 36)|0; + r3 = r3 & 31; +} +else{ +break _8; +} +} + heap32[(g0)] = r1; + heap32[(g0+1)] = r4; + _ZL10removeleafP6btDbvtP10btDbvtNode(i7); + r3 = r_g0; + if(r3 !=0) //_LBB84_18 +{ + r3 = heap32[(r2)]; +} +else{ + r3 = 0; +} + heap32[(g0)] = r1; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r4; + _ZL10insertleafP6btDbvtP10btDbvtNodeS2_(i7); + r3 = heap32[(r2+4)]; + r0 = (r0 + -1)|0; + r3 = (r3 + 1)|0; + heap32[(r2+4)] = r3; +if(!(r0 !=0)) //_LBB84_5 +{ +break _4; +} +} + r4 = _2E_str22; + r0 = _2E_str1118; + heap32[(g0)] = r4; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = 379; + _assert(i7); +} +} +} while(0); + return; +} + +function _ZN18btDbvtTreeColliderD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV18btDbvtTreeCollider; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN18btDbvtTreeColliderD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV18btDbvtTreeCollider; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN18btDbvtTreeCollider7ProcessEPK10btDbvtNodeS2_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp+2)]; +if(!(r0 ==r1)) //_LBB87_2 +{ + r2 = heap32[(fp)]; + r2 = r2 >> 2; + r3 = heap32[(r2+1)]; + r3 = r3 >> 2; + r3 = heap32[(r3+24)]; + r4 = r3 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r1 = r1 >> 2; + r0 = r0 >> 2; + r4 = heap32[(r4+2)]; + r1 = heap32[(r1+9)]; + r0 = heap32[(r0+9)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r1; + __FUNCTION_TABLE__[(r4)>>2](i7); + r0 = heap32[(r2+1)]; + r0 = r0 >> 2; + r1 = heap32[(r0+30)]; + r1 = (r1 + 1)|0; + heap32[(r0+30)] = r1; +} + return; +} + +function _ZN18btDbvtTreeCollider7ProcessEPK10btDbvtNode(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r1 = heap32[(r1+2)]; + r2 = r2 >> 2; + r1 = r1 >> 2; + r2 = heap32[(r2+2)]; + r1 = heap32[(r1+12)]; + r3 = heap32[(fp+1)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r1; + __FUNCTION_TABLE__[(r2)>>2](i7); + return; +} + +function _ZNK16btDbvtBroadphase7getAabbEP17btBroadphaseProxyR9btVector3S3_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp+2)]; + r0 = r0 >> 2; + r1 = r1 >> 2; + heap32[(r1)] = heap32[(r0+4)]; + heap32[(r1+1)] = heap32[(r0+5)]; + r2 = heap32[(fp+3)]; + heap32[(r1+2)] = heap32[(r0+6)]; + r2 = r2 >> 2; + heap32[(r1+3)] = heap32[(r0+7)]; + heap32[(r2)] = heap32[(r0+8)]; + heap32[(r2+1)] = heap32[(r0+9)]; + heap32[(r2+2)] = heap32[(r0+10)]; + heap32[(r2+3)] = heap32[(r0+11)]; + return; +} + +function _ZN19BroadphaseRayTesterD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV19BroadphaseRayTester; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN19BroadphaseRayTesterD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV19BroadphaseRayTester; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN19BroadphaseRayTester7ProcessEPK10btDbvtNode(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+1)]; + r1 = r0 >> 2; + r2 = heap32[(fp+1)]; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r2 = r2 >> 2; + r1 = heap32[(r1+2)]; + r2 = heap32[(r2+9)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} + +function _ZN20BroadphaseAabbTesterD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV20BroadphaseAabbTester; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN20BroadphaseAabbTesterD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV20BroadphaseAabbTester; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN20BroadphaseAabbTester7ProcessEPK10btDbvtNode(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+1)]; + r1 = r0 >> 2; + r2 = heap32[(fp+1)]; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r2 = r2 >> 2; + r1 = heap32[(r1+2)]; + r2 = heap32[(r2+9)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} + +function _ZN16btDbvtBroadphase23getOverlappingPairCacheEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+24)]; + r_g0 = r0; + return; +} + +function _ZNK16btDbvtBroadphase23getOverlappingPairCacheEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+24)]; + r_g0 = r0; + return; +} + +function _ZNK16btDbvtBroadphase17getBroadphaseAabbER9btVector3S1_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+1)]; + r2 = heap32[(fp+1)]; + r3 = heap32[(fp+2)]; + r0 = heap32[(r0+11)]; + if(r1 ==0) //_LBB98_4 +{ + if(r0 !=0) //_LBB98_6 +{ + r0 = r0 >> 2; + f0 = heapFloat[(r0)]; + f2 = heapFloat[(r0+1)]; + f4 = heapFloat[(r0+2)]; + f6 = heapFloat[(r0+3)]; + f1 = heapFloat[(r0+4)]; + f3 = heapFloat[(r0+5)]; + f5 = heapFloat[(r0+6)]; + f7 = heapFloat[(r0+7)]; +} +else{ + f6 = 0; + f4 = f6; + f2 = f6; + f0 = f6; + f1 = f6; + f3 = f6; + f5 = f6; + f7 = f6; +} +} +else{ + if(r0 ==0) //_LBB98_3 +{ + r0 = r1 >> 2; + f0 = heapFloat[(r0)]; + f2 = heapFloat[(r0+1)]; + f4 = heapFloat[(r0+2)]; + f6 = heapFloat[(r0+3)]; + f1 = heapFloat[(r0+4)]; + f3 = heapFloat[(r0+5)]; + f5 = heapFloat[(r0+6)]; + f7 = heapFloat[(r0+7)]; +} +else{ + r1 = r1 >> 2; + r0 = r0 >> 2; + f0 = heapFloat[(r1)]; + f1 = heapFloat[(r0)]; + f2 = heapFloat[(r1+4)]; + f3 = heapFloat[(r0+4)]; + f4 = heapFloat[(r1+1)]; + f5 = heapFloat[(r0+1)]; + f6 = heapFloat[(r1+5)]; + f7 = heapFloat[(r0+5)]; + f8 = heapFloat[(r1+2)]; + f9 = heapFloat[(r0+2)]; + f10 = heapFloat[(r1+6)]; + f11 = heapFloat[(r0+6)]; + f0 = f0 < f1 ? f0 : f1; + f1 = f2 > f3 ? f2 : f3; + f2 = f4 < f5 ? f4 : f5; + f3 = f6 > f7 ? f6 : f7; + f4 = f8 < f9 ? f8 : f9; + f5 = f10 > f11 ? f10 : f11; +} +} + r0 = r2 >> 2; + heapFloat[(r0)] = f0; + heapFloat[(r0+1)] = f2; + heapFloat[(r0+2)] = f4; + r1 = r3 >> 2; + heapFloat[(r0+3)] = f6; + heapFloat[(r1)] = f1; + heapFloat[(r1+1)] = f3; + heapFloat[(r1+2)] = f5; + heapFloat[(r1+3)] = f7; + return; +} + +function _ZN16btDbvtBroadphase10printStatsEv(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN16btDbvtBroadphase9resetPoolEP12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = 0; + r3 = heap32[(r1+14)]; + r4 = heap32[(r1+4)]; + r3 = (r2 - r3)|0; +if(!(r4 !=r3)) //_LBB100_18 +{ + r3 = heap32[(r1+1)]; +if(!(r3 ==0)) //_LBB100_3 +{ + r4 = (r0 + 4)|0; + heap32[(g0)] = r4; + heap32[(g0+1)] = r3; + _ZL17recursedeletenodeP6btDbvtP10btDbvtNode(i7); +} + r3 = heap32[(r1+2)]; +if(!(r3 ==0)) //_LBB100_5 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r1+2)] = 0; + heap32[(r1+3)] = -1; + r3 = heap32[(r1+9)]; +if(!(r3 ==0)) //_LBB100_9 +{ + r4 = heapU8[r0+40]; +if(!(r4 ==0)) //_LBB100_8 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r1+9)] = 0; +} + r3 = 1; + heap8[r0+40] = r3; + heap32[(r1+9)] = 0; + heap32[(r1+7)] = 0; + heap32[(r1+8)] = 0; + heap32[(r1+5)] = 0; + r4 = heap32[(r1+11)]; +if(!(r4 ==0)) //_LBB100_11 +{ + r5 = (r0 + 44)|0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r4; + _ZL17recursedeletenodeP6btDbvtP10btDbvtNode(i7); +} + r4 = heap32[(r1+12)]; +if(!(r4 ==0)) //_LBB100_13 +{ + r5 = gNumAlignedFree; + r5 = r5 >> 2; + r6 = heap32[(r5)]; + r6 = (r6 + 1)|0; + r4 = r4 >> 2; + heap32[(r5)] = r6; + r4 = heap32[(r4+-1)]; + heap32[(g0)] = r4; + free(i7); +} + heap32[(r1+12)] = 0; + heap32[(r1+13)] = -1; + r4 = heap32[(r1+19)]; +if(!(r4 ==0)) //_LBB100_17 +{ + r5 = heapU8[r0+80]; +if(!(r5 ==0)) //_LBB100_16 +{ + r5 = gNumAlignedFree; + r5 = r5 >> 2; + r6 = heap32[(r5)]; + r6 = (r6 + 1)|0; + r4 = r4 >> 2; + heap32[(r5)] = r6; + r4 = heap32[(r4+-1)]; + heap32[(g0)] = r4; + free(i7); +} + heap32[(r1+19)] = 0; +} + heap8[r0+80] = r3; + heap32[(r1+19)] = 0; + heap32[(r1+17)] = 0; + heap32[(r1+18)] = 0; + heap32[(r1+15)] = 0; + heap8[r0+153] = r2; + heap8[r0+154] = r3; + heap32[(r1+26)] = 0; + heap32[(r1+31)] = 0; + heap32[(r1+27)] = 1; + heap32[(r1+28)] = 0; + heap32[(r1+29)] = 10; + heap32[(r1+30)] = 1; + heap32[(r1+32)] = 0; + heap32[(r1+33)] = 0; + heap32[(r1+34)] = 0; + heap32[(r1+37)] = 0; + heap32[(r1+35)] = 0; + heap32[(r1+36)] = 0; + heap32[(r1+21)] = 0; + heap32[(r1+22)] = 0; + heap32[(r1+23)] = 0; +} + return; +} + +function _ZN6btDbvt24collideTTpersistentStackEPK10btDbvtNodeS2_RNS_8ICollideE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var f0; + var f1; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; +_1: do { +if(!(r0 ==0)) //_LBB101_57 +{ + r1 = heap32[(fp+2)]; +if(!(r1 ==0)) //_LBB101_57 +{ + r2 = heap32[(fp)]; + r3 = r2 >> 2; + r4 = heap32[(r3+6)]; +if(!(r4 >127)) //_LBB101_17 +{ + r5 = heap32[(r3+7)]; +if(!(r5 >127)) //_LBB101_17 +{ + r5 = gNumAlignedAllocs; + r5 = r5 >> 2; + r6 = heap32[(r5)]; + r6 = (r6 + 1)|0; + heap32[(r5)] = r6; + heap32[(g0)] = 1043; + malloc(i7); + r5 = r_g0; + if(r5 !=0) //_LBB101_6 +{ + r6 = 0; + r7 = (r5 + 4)|0; + r6 = (r6 - r7)|0; + r6 = r6 & 15; + r6 = (r5 + r6)|0; + r7 = (r6 + 4)|0; + r6 = r6 >> 2; + heap32[(r6)] = r5; + r5 = r7; +} + r6 = (r2 + 32)|0; + if(r4 <1) //_LBB101_9 +{ + r4 = r6 >> 2; + r8 = heap32[(r4)]; +} +else{ + r7 = 0; +_13: while(true){ + r8 = r6 >> 2; + r8 = heap32[(r8)]; + r9 = r7 << 3; + r10 = (r8 + r9)|0; + r10 = r10 >> 2; + r9 = (r5 + r9)|0; + r11 = heap32[(r10+1)]; + r10 = heap32[(r10)]; + r9 = r9 >> 2; + r7 = (r7 + 1)|0; + heap32[(r9)] = r10; + heap32[(r9+1)] = r11; +if(!(r4 !=r7)) //_LBB101_10 +{ +break _13; +} +} + r6 = (r2 + 32)|0; +} +if(!(r8 ==0)) //_LBB101_16 +{ + r4 = heapU8[r2+36]; +if(!(r4 ==0)) //_LBB101_15 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r7 = heap32[(r4)]; + r7 = (r7 + 1)|0; + r8 = r8 >> 2; + heap32[(r4)] = r7; + r4 = heap32[(r8+-1)]; + heap32[(g0)] = r4; + free(i7); +} + r4 = r6 >> 2; + heap32[(r4)] = 0; +} + r4 = 1; + r6 = r6 >> 2; + heap8[r2+36] = r4; + heap32[(r6)] = r5; + heap32[(r3+7)] = 128; +} +} + r4 = heap32[(fp+3)]; + heap32[(r3+6)] = 128; + r5 = heap32[(r3+8)]; + r5 = r5 >> 2; + r6 = 1; + r7 = 124; + heap32[(r5)] = r0; + heap32[(r5+1)] = r1; +_24: while(true){ + r0 = r6; + r6 = (r0 + -1)|0; + r1 = heap32[(r3+8)]; + r5 = r6 << 3; + r5 = (r1 + r5)|0; + r5 = r5 >> 2; + r8 = heap32[(r5)]; + r5 = heap32[(r5+1)]; + if(r6 >r7) //_LBB101_20 +{ + r7 = heap32[(r3+6)]; + r9 = r7 << 1; +_28: do { +if(!(r7 >r9)) //_LBB101_38 +{ +if(!(r7 >=r9)) //_LBB101_38 +{ + r10 = heap32[(r3+7)]; + if(r10 > 2; + r11 = heap32[(r10)]; + r12 = r7 << 4; + r11 = (r11 + 1)|0; + r12 = r12 | 3; + heap32[(r10)] = r11; + r10 = (r12 + 16)|0; + heap32[(g0)] = r10; + malloc(i7); + r10 = r_g0; + if(r10 !=0) //_LBB101_28 +{ + r11 = 0; + r12 = (r10 + 4)|0; + r11 = (r11 - r12)|0; + r11 = r11 & 15; + r11 = (r10 + r11)|0; + r12 = (r11 + 4)|0; + r11 = r11 >> 2; + heap32[(r11)] = r10; + r10 = r12; +} +} +else{ + r10 = 0; +} +if(!(r7 <1)) //_LBB101_32 +{ + r11 = (r1 + 4)|0; + r12 = (r10 + 4)|0; + r13 = r7; +_40: while(true){ + r14 = r11 >> 2; + r15 = heap32[(r14)]; + r14 = heap32[(r14+-1)]; + r16 = r12 >> 2; + r13 = (r13 + -1)|0; + r11 = (r11 + 8)|0; + r12 = (r12 + 8)|0; + heap32[(r16+-1)] = r14; + heap32[(r16)] = r15; +if(!(r13 !=0)) //_LBB101_31 +{ +break _40; +} +} +} +if(!(r1 ==0)) //_LBB101_36 +{ + r11 = heapU8[r2+36]; +if(!(r11 ==0)) //_LBB101_35 +{ + r11 = gNumAlignedFree; + r11 = r11 >> 2; + r12 = heap32[(r11)]; + r12 = (r12 + 1)|0; + r1 = r1 >> 2; + heap32[(r11)] = r12; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r3+8)] = 0; +} + r1 = 1; + heap8[r2+36] = r1; + heap32[(r3+8)] = r10; + heap32[(r3+7)] = r9; +if(!(r7 > 2; + r9 = r5 >> 2; + f0 = heapFloat[(r1)]; + f1 = heapFloat[(r9+4)]; +if(!(f0 >f1)) //_LBB101_41 +{ + f0 = heapFloat[(r1+4)]; + f1 = heapFloat[(r9)]; +if(!(f0 f1)) //_LBB101_41 +{ + f0 = heapFloat[(r1+5)]; + f1 = heapFloat[(r9+1)]; +if(!(f0 f1)) //_LBB101_41 +{ + f0 = heapFloat[(r1+6)]; + f1 = heapFloat[(r9+2)]; +if(!(f0 > 2; + r0 = heap32[(r0)]; + r0 = r0 >> 2; + r0 = heap32[(r0+2)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r5; + __FUNCTION_TABLE__[(r0)>>2](i7); +} +else{ + r5 = r0 << 3; + r6 = heap32[(r3+8)]; + r6 = (r6 + r5)|0; + r1 = heap32[(r9+9)]; + r6 = r6 >> 2; + heap32[(r6+-2)] = r8; + heap32[(r6+-1)] = r1; + r6 = heap32[(r3+8)]; + r5 = (r6 + r5)|0; + r1 = heap32[(r9+10)]; + r5 = r5 >> 2; + r6 = (r0 + 1)|0; + heap32[(r5)] = r8; + heap32[(r5+1)] = r1; +} +} +else{ + r6 = heap32[(r3+8)]; + if(r10 ==0) //_LBB101_52 +{ + r8 = r0 << 3; + r6 = (r6 + r8)|0; + r6 = r6 >> 2; + r9 = heap32[(r1+9)]; + heap32[(r6+-2)] = r9; + heap32[(r6+-1)] = r5; + r6 = heap32[(r3+8)]; + r6 = (r6 + r8)|0; + r8 = heap32[(r1+10)]; + r9 = r6 >> 2; + r6 = (r0 + 1)|0; + heap32[(r9)] = r8; + heap32[(r9+1)] = r5; +} +else{ + r5 = r0 << 3; + r6 = (r6 + r5)|0; + r8 = heap32[(r9+9)]; + r10 = heap32[(r1+9)]; + r6 = r6 >> 2; + heap32[(r6+-2)] = r10; + heap32[(r6+-1)] = r8; + r6 = heap32[(r3+8)]; + r6 = (r6 + r5)|0; + r8 = heap32[(r9+9)]; + r10 = heap32[(r1+10)]; + r6 = r6 >> 2; + heap32[(r6)] = r10; + heap32[(r6+1)] = r8; + r6 = heap32[(r3+8)]; + r6 = (r5 + r6)|0; + r8 = heap32[(r9+10)]; + r10 = heap32[(r1+9)]; + r6 = r6 >> 2; + heap32[(r6+2)] = r10; + heap32[(r6+3)] = r8; + r6 = heap32[(r3+8)]; + r6 = (r5 + r6)|0; + r5 = heap32[(r9+10)]; + r1 = heap32[(r1+10)]; + r8 = r6 >> 2; + r6 = (r0 + 3)|0; + heap32[(r8+4)] = r1; + heap32[(r8+5)] = r5; +} +} +} +} +} +} +} +} +} +else{ + r5 = r8 >> 2; + r8 = heap32[(r5+10)]; + if(r8 !=0) //_LBB101_42 +{ + r6 = r0 << 3; + r8 = heap32[(r3+8)]; + r8 = (r8 + r6)|0; + r1 = heap32[(r5+9)]; + r8 = r8 >> 2; + heap32[(r8+-2)] = r1; + heap32[(r8+-1)] = r1; + r8 = heap32[(r3+8)]; + r8 = (r8 + r6)|0; + r1 = heap32[(r5+10)]; + r8 = r8 >> 2; + heap32[(r8)] = r1; + heap32[(r8+1)] = r1; + r8 = heap32[(r3+8)]; + r6 = (r6 + r8)|0; + r8 = heap32[(r5+10)]; + r5 = heap32[(r5+9)]; + r1 = r6 >> 2; + r6 = (r0 + 2)|0; + heap32[(r1+2)] = r5; + heap32[(r1+3)] = r8; +} +} + if(r6 !=0) //_LBB101_18 +{ +continue _24; +} +else{ +break _1; +} +} +} +} +} while(0); + return; +} + +function _ZN6btDbvt9collideTVEPK10btDbvtNodeRK12btDbvtAabbMmRNS_8ICollideE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; +if(!(r0 ==0)) //_LBB102_46 +{ + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r3 = gNumAlignedAllocs; + r1 = r1 >> 2; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + f0 = heapFloat[(r1)]; + f1 = heapFloat[(r1+1)]; + f2 = heapFloat[(r1+2)]; + f3 = heapFloat[(r1+4)]; + f4 = heapFloat[(r1+5)]; + f5 = heapFloat[(r1+6)]; + r1 = (r4 + 1)|0; + heap32[(r3)] = r1; + heap32[(g0)] = 275; + malloc(i7); + r1 = r_g0; + if(r1 !=0) //_LBB102_3 +{ + r4 = 0; + r5 = (r1 + 4)|0; + r4 = (r4 - r5)|0; + r4 = r4 & 15; + r4 = (r1 + r4)|0; + r5 = (r4 + 4)|0; + r4 = r4 >> 2; + heap32[(r4)] = r1; + r1 = r5; +} + r4 = 1; + r5 = 64; + r6 = r1 >> 2; + heap32[(r6)] = r0; +_6: while(true){ + r0 = r4; + r4 = (r0 + -1)|0; + r6 = r4 << 2; + r6 = (r1 + r6)|0; + r6 = r6 >> 2; + r6 = heap32[(r6)]; + r7 = r6 >> 2; + f6 = heapFloat[(r7)]; + if(f6 <=f3) //_LBB102_7 +{ + f6 = heapFloat[(r7+4)]; +if(!(f6 f4)) //_LBB102_6 +{ + f6 = heapFloat[(r7+5)]; +if(!(f6 f5)) //_LBB102_6 +{ + f6 = heapFloat[(r7+6)]; +if(!(f6 > 2; + r0 = heap32[(r0)]; + r0 = r0 >> 2; + r0 = heap32[(r0+3)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r6; + __FUNCTION_TABLE__[(r0)>>2](i7); +} +else{ + r6 = heap32[(r7+9)]; + if(r5 ==r4) //_LBB102_15 +{ + r8 = 1; + r9 = r4 << 1; + r8 = r4 == 0 ? r8 : r9; +if(!(r5 >=r8)) //_LBB102_14 +{ + if(r8 !=0) //_LBB102_18 +{ + r5 = heap32[(r3)]; + r9 = r8 << 2; + r5 = (r5 + 1)|0; + r9 = r9 | 3; + heap32[(r3)] = r5; + r5 = (r9 + 16)|0; + heap32[(g0)] = r5; + malloc(i7); + r9 = r_g0; + if(r9 !=0) //_LBB102_20 +{ + r5 = 0; + r10 = (r9 + 4)|0; + r5 = (r5 - r10)|0; + r5 = r5 & 15; + r5 = (r9 + r5)|0; + r10 = (r5 + 4)|0; + r5 = r5 >> 2; + heap32[(r5)] = r9; + r9 = r10; +} +} +else{ + r9 = 0; +} +if(!(r4 <1)) //_LBB102_24 +{ + r4 = (r0 + -1)|0; + r5 = r1; + r10 = r9; +_28: while(true){ + r11 = r5 >> 2; + r4 = (r4 + -1)|0; + r12 = (r10 + 4)|0; + r5 = (r5 + 4)|0; + r10 = r10 >> 2; + r11 = heap32[(r11)]; + heap32[(r10)] = r11; + r10 = r12; +if(!(r4 !=0)) //_LBB102_23 +{ +break _28; +} +} +} + if(r1 !=0) //_LBB102_26 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r1 = r1 >> 2; + heap32[(r4)] = r5; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); + r5 = r8; + r1 = r9; +} +else{ + r5 = r8; + r1 = r9; +} +} +} + r4 = r0 << 2; + r8 = (r1 + r4)|0; + r8 = r8 >> 2; + heap32[(r8+-1)] = r6; + r6 = heap32[(r7+10)]; + if(r5 ==r0) //_LBB102_29 +{ + r7 = 1; + r8 = r0 << 1; + r7 = r0 == 0 ? r7 : r8; +if(!(r5 >=r7)) //_LBB102_28 +{ + if(r7 !=0) //_LBB102_32 +{ + r5 = heap32[(r3)]; + r8 = r7 << 2; + r5 = (r5 + 1)|0; + r8 = r8 | 3; + heap32[(r3)] = r5; + r5 = (r8 + 16)|0; + heap32[(g0)] = r5; + malloc(i7); + r8 = r_g0; + if(r8 !=0) //_LBB102_34 +{ + r5 = 0; + r9 = (r8 + 4)|0; + r5 = (r5 - r9)|0; + r5 = r5 & 15; + r5 = (r8 + r5)|0; + r9 = (r5 + 4)|0; + r5 = r5 >> 2; + heap32[(r5)] = r8; + r8 = r9; +} +} +else{ + r8 = 0; +} +_43: do { +if(!(r0 <1)) //_LBB102_38 +{ + r5 = r1; + r9 = r8; + r10 = r0; +_45: while(true){ + r11 = r5 >> 2; + r10 = (r10 + -1)|0; + r12 = (r9 + 4)|0; + r5 = (r5 + 4)|0; + r9 = r9 >> 2; + r11 = heap32[(r11)]; + heap32[(r9)] = r11; + r9 = r12; +if(!(r10 !=0)) //_LBB102_37 +{ +break _43; +} +} +} +} while(0); + if(r1 !=0) //_LBB102_40 +{ + r5 = gNumAlignedFree; + r5 = r5 >> 2; + r9 = heap32[(r5)]; + r9 = (r9 + 1)|0; + r1 = r1 >> 2; + heap32[(r5)] = r9; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); + r5 = r7; + r1 = r8; +} +else{ + r5 = r7; + r1 = r8; +} +} +} + r7 = (r1 + r4)|0; + r4 = (r0 + 1)|0; + r0 = r7 >> 2; + heap32[(r0)] = r6; +} +} +} +} +} +} +} +if(!(r4 >0)) //_LBB102_5 +{ +break _6; +} +} +if(!(r1 ==0)) //_LBB102_46 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r2 = heap32[(r0)]; + r2 = (r2 + 1)|0; + r1 = r1 >> 2; + heap32[(r0)] = r2; + r0 = heap32[(r1+-1)]; + heap32[(g0)] = r0; + free(i7); +} +} + return; +} + +function _ZN16btDbvtBroadphase8aabbTestERK9btVector3S2_R24btBroadphaseAabbCallback(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -56;var g0 = i7>>2; // save stack + r0 = _ZTV20BroadphaseAabbTester; + r1 = sp + -8; + r0 = (r0 + 8)|0; + r2 = heap32[(fp+1)]; + r3 = r1 >> 2; + r4 = heap32[(fp+3)]; + heap32[(fp+-2)] = r0; + r0 = sp + -40; + r2 = r2 >> 2; + heap32[(r3+1)] = r4; + r3 = r0 >> 2; + heap32[(fp+-10)] = heap32[(r2)]; + heap32[(r3+1)] = heap32[(r2+1)]; + r4 = heap32[(fp+2)]; + heap32[(r3+2)] = heap32[(r2+2)]; + r4 = r4 >> 2; + heap32[(r3+3)] = heap32[(r2+3)]; + heap32[(r3+4)] = heap32[(r4)]; + heap32[(r3+5)] = heap32[(r4+1)]; + r2 = heap32[(fp)]; + heap32[(r3+6)] = heap32[(r4+2)]; + r2 = r2 >> 2; + heap32[(r3+7)] = heap32[(r4+3)]; + r3 = heap32[(r2+1)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r1; + _ZN6btDbvt9collideTVEPK10btDbvtNodeRK12btDbvtAabbMmRNS_8ICollideE(i7); + r2 = heap32[(r2+11)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r1; + _ZN6btDbvt9collideTVEPK10btDbvtNodeRK12btDbvtAabbMmRNS_8ICollideE(i7); + return; +} + +function _ZN16btDbvtBroadphase11createProxyERK9btVector3S2_iPvssP12btDispatcherS3_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; +var __label__ = 0; + i7 = sp + -64;var g0 = i7>>2; // save stack + r0 = gNumAlignedAllocs; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = (r1 + 1)|0; + heap32[(r0)] = r2; + heap32[(g0)] = 83; + malloc(i7); + r2 = r_g0; + r3 = heap32[(fp)]; + r4 = heap32[(fp+1)]; + r5 = heap32[(fp+2)]; + r6 = heap32[(fp+4)]; + r7 = heap32[(fp+5)]; + r8 = heap32[(fp+6)]; + if(r2 !=0) //_LBB104_2 +{ + r9 = 0; + r10 = (r2 + 4)|0; + r9 = (r9 - r10)|0; + r9 = r9 & 15; + r9 = (r2 + r9)|0; + r10 = (r9 + 4)|0; + r9 = r9 >> 2; + heap32[(r9)] = r2; + r2 = r10; +} + r9 = r2 >> 2; + heap32[(r9)] = r6; + heap16[(r2+4)>>1] = r7; + r4 = r4 >> 2; + heap16[(r2+6)>>1] = r8; + f0 = heapFloat[(r4)]; + heapFloat[(r9+4)] = f0; + f1 = heapFloat[(r4+1)]; + heapFloat[(r9+5)] = f1; + f2 = heapFloat[(r4+2)]; + heapFloat[(r9+6)] = f2; + f3 = heapFloat[(r4+3)]; + r4 = r5 >> 2; + heapFloat[(r9+7)] = f3; + f4 = heapFloat[(r4)]; + heapFloat[(r9+8)] = f4; + f5 = heapFloat[(r4+1)]; + heapFloat[(r9+9)] = f5; + f6 = heapFloat[(r4+2)]; + heapFloat[(r9+10)] = f6; + f7 = heapFloat[(r4+3)]; + heapFloat[(r9+11)] = f7; + heap32[(r9+2)] = 0; + heap32[(r9+14)] = 0; + r4 = sp + -32; + heap32[(r9+13)] = 0; + r5 = r4 >> 2; + heapFloat[(fp+-8)] = f0; + heapFloat[(r5+1)] = f1; + heapFloat[(r5+2)] = f2; + heapFloat[(r5+3)] = f3; + heapFloat[(r5+4)] = f4; + heapFloat[(r5+5)] = f5; + heapFloat[(r5+6)] = f6; + r6 = r3 >> 2; + heapFloat[(r5+7)] = f7; + r5 = heap32[(r6+26)]; + heap32[(r9+15)] = r5; + r5 = heap32[(r6+37)]; + r5 = (r5 + 1)|0; + heap32[(r6+37)] = r5; + heap32[(r9+3)] = r5; + r5 = heap32[(r6+2)]; + r7 = (r3 + 4)|0; + if(r5 ==0) //_LBB104_5 +{ + r5 = (r1 + 2)|0; + heap32[(r0)] = r5; + heap32[(g0)] = 63; + malloc(i7); + r5 = r_g0; + if(r5 !=0) //_LBB104_7 +{ + r0 = 0; + r1 = (r5 + 4)|0; + r0 = (r0 - r1)|0; + r0 = r0 & 15; + r0 = (r5 + r0)|0; + r1 = (r0 + 4)|0; + r0 = r0 >> 2; + heap32[(r0)] = r5; + r5 = r1; +} +} +else{ + heap32[(r6+2)] = 0; +} + r0 = r5 >> 2; + heap32[(r0+8)] = 0; + heap32[(r0+9)] = r2; + heap32[(r0+10)] = 0; + heapFloat[(r0)] = f0; + heapFloat[(r0+1)] = f1; + heapFloat[(r0+2)] = f2; + heapFloat[(r0+3)] = f3; + heapFloat[(r0+4)] = f4; + heapFloat[(r0+5)] = f5; + heapFloat[(r0+6)] = f6; + heapFloat[(r0+7)] = f7; + r0 = heap32[(r6+1)]; + heap32[(g0)] = r7; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r5; + _ZL10insertleafP6btDbvtP10btDbvtNodeS2_(i7); + r0 = heap32[(r6+4)]; + r0 = (r0 + 1)|0; + heap32[(r6+4)] = r0; + heap32[(r9+12)] = r5; + r0 = heap32[(r6+26)]; + r0 = r0 << 2; + r0 = (r3 + r0)|0; + r0 = r0 >> 2; + heap32[(r9+13)] = 0; + r1 = heap32[(r0+21)]; + heap32[(r9+14)] = r1; +if(!(r1 ==0)) //_LBB104_10 +{ + r1 = r1 >> 2; + heap32[(r1+13)] = r2; +} + heap32[(r0+21)] = r2; + r0 = heapU8[r3+153]; +if(!(r0 !=0)) //_LBB104_12 +{ + r0 = _ZTV18btDbvtTreeCollider; + r0 = (r0 + 8)|0; + r1 = sp + -48; + r5 = r1 >> 2; + heap32[(fp+-12)] = r0; + heap32[(r5+1)] = r3; + heap32[(r5+2)] = r2; + r3 = heap32[(r6+1)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r1; + _ZN6btDbvt9collideTVEPK10btDbvtNodeRK12btDbvtAabbMmRNS_8ICollideE(i7); + r3 = heap32[(r6+11)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r1; + _ZN6btDbvt9collideTVEPK10btDbvtNodeRK12btDbvtAabbMmRNS_8ICollideE(i7); + heap32[(fp+-12)] = r0; +} + r_g0 = r2; + return; +} + +function _ZNK6btDbvt15rayTestInternalEPK10btDbvtNodeRK9btVector3S5_S5_PjfS5_S5_RNS_8ICollideE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var r19; + var r20; + var r21; + var r22; + var r23; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; +var __label__ = 0; + i7 = sp + -40;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; +if(!(r0 ==0)) //_LBB105_43 +{ + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+3)]; + f0 = heapFloat[(fp+4)]; + r4 = heap32[(fp+5)]; + r5 = heap32[(fp+6)]; + r6 = heap32[(fp+7)]; + r7 = gNumAlignedAllocs; + r7 = r7 >> 2; + r8 = heap32[(r7)]; + r8 = (r8 + 1)|0; + heap32[(r7)] = r8; + heap32[(g0)] = 531; + malloc(i7); + r8 = r_g0; + if(r8 !=0) //_LBB105_3 +{ + r9 = 0; + r10 = (r8 + 4)|0; + r9 = (r9 - r10)|0; + r9 = r9 & 15; + r9 = (r8 + r9)|0; + r10 = (r9 + 4)|0; + r9 = r9 >> 2; + heap32[(r9)] = r8; + r8 = r10; +} + r9 = 0; +_6: while(true){ + r10 = r9 << 2; + r10 = (r8 + r10)|0; + r9 = (r9 + 1)|0; + r10 = r10 >> 2; + heap32[(r10)] = 0; +if(!(r9 !=128)) //_LBB105_5 +{ +break _6; +} +} + r9 = 128; + r10 = 1; + r11 = 126; + r12 = r8 >> 2; + heap32[(r12)] = r0; + r0 = r9; + r12 = r10; +_9: while(true){ + r13 = r12; + r12 = (r13 + -1)|0; + r14 = r12 << 2; + r14 = (r8 + r14)|0; + r14 = r14 >> 2; + r14 = heap32[(r14)]; + r15 = r14 >> 2; + r16 = r5 >> 2; + f1 = heapFloat[(r15+2)]; + f2 = heapFloat[(r16+2)]; + f3 = heapFloat[(r15+1)]; + f4 = heapFloat[(r16+1)]; + f5 = heapFloat[(r15)]; + f6 = heapFloat[(r16)]; + r16 = sp + -32; + f5 = f5-f6; + r17 = r16 >> 2; + f3 = f3-f4; + heapFloat[(fp+-8)] = f5; + f1 = f1-f2; + heapFloat[(r17+1)] = f3; + heapFloat[(r17+2)] = f1; + heap32[(r17+3)] = 0; + r18 = r4 >> 2; + f1 = heapFloat[(r15+6)]; + f2 = heapFloat[(r18+2)]; + f3 = heapFloat[(r15+5)]; + f4 = heapFloat[(r18+1)]; + f5 = heapFloat[(r15+4)]; + f6 = heapFloat[(r18)]; + f5 = f5-f6; + f3 = f3-f4; + heapFloat[(r17+4)] = f5; + f1 = f1-f2; + heapFloat[(r17+5)] = f3; + heapFloat[(r17+6)] = f1; + r18 = r3 >> 2; + heap32[(r17+7)] = 0; + r17 = heap32[(r18)]; + r19 = heap32[(r18+1)]; + r20 = (r10 - r19)|0; + r21 = r17 << 4; + r20 = r20 << 4; + r21 = (r16 + r21)|0; + r20 = (r16 + r20)|0; + r22 = r1 >> 2; + r21 = r21 >> 2; + r20 = r20 >> 2; + r23 = r2 >> 2; + f1 = heapFloat[(r21)]; + f2 = heapFloat[(r22)]; + f3 = heapFloat[(r20+1)]; + f4 = heapFloat[(r22+1)]; + f1 = f1-f2; + f5 = heapFloat[(r23)]; + f3 = f3-f4; + f6 = heapFloat[(r23+1)]; + f1 = f1*f5; + f3 = f3*f6; +if(!(f1 >f3)) //_LBB105_9 +{ + r17 = (r10 - r17)|0; + r17 = r17 << 4; + r19 = r19 << 4; + r17 = (r16 + r17)|0; + r19 = (r16 + r19)|0; + r17 = r17 >> 2; + r19 = r19 >> 2; + f7 = heapFloat[(r17)]; + f8 = heapFloat[(r19+1)]; + f2 = f7-f2; + f4 = f8-f4; + f2 = f2*f5; + f4 = f4*f6; + if(f4 <=f2) //_LBB105_10 +{ + r17 = heap32[(r18+2)]; + r18 = 1; + r18 = (r18 - r17)|0; + r18 = r18 << 4; + r18 = (r16 + r18)|0; + r18 = r18 >> 2; + f5 = heapFloat[(r18+2)]; + f6 = heapFloat[(r22+2)]; + f5 = f5-f6; + f7 = heapFloat[(r23+2)]; + f1 = f1 < f4 ? f4 : f1; + f4 = f5*f7; +if(!(f1 >f4)) //_LBB105_9 +{ + r17 = r17 << 4; + r16 = (r16 + r17)|0; + r16 = r16 >> 2; + f5 = heapFloat[(r16+2)]; + f5 = f5-f6; + f2 = f3 < f2 ? f3 : f2; + f3 = f5*f7; +if(!(f3 >f2)) //_LBB105_9 +{ + f1 = f1 < f3 ? f3 : f1; +if(!(f1 >=f0)) //_LBB105_9 +{ + f1 = f4 < f2 ? f4 : f2; + f2 = 0; +if(!(f1 <=f2)) //_LBB105_9 +{ + r16 = heap32[(r15+10)]; + if(r16 ==0) //_LBB105_39 +{ + r13 = r6 >> 2; + r13 = heap32[(r13)]; + r13 = r13 >> 2; + r13 = heap32[(r13+3)]; + heap32[(g0)] = r6; + heap32[(g0+1)] = r14; + __FUNCTION_TABLE__[(r13)>>2](i7); +} +else{ + if(r12 >r11) //_LBB105_17 +{ + r14 = r0 << 1; +_23: do { + if(r0 <=r14) //_LBB105_19 +{ +if(!(r0 >=r14)) //_LBB105_18 +{ + if(r9 > 2; + heap32[(r11)] = r9; + r9 = r12; +} +} +else{ + r9 = 0; +} +if(!(r0 <1)) //_LBB105_30 +{ + r11 = r8; + r12 = r9; + r16 = r0; +_35: while(true){ + r17 = r11 >> 2; + r16 = (r16 + -1)|0; + r18 = (r12 + 4)|0; + r11 = (r11 + 4)|0; + r12 = r12 >> 2; + r17 = heap32[(r17)]; + heap32[(r12)] = r17; + r12 = r18; +if(!(r16 !=0)) //_LBB105_29 +{ +break _35; +} +} +} +if(!(r8 ==0)) //_LBB105_32 +{ + r11 = gNumAlignedFree; + r11 = r11 >> 2; + r12 = heap32[(r11)]; + r12 = (r12 + 1)|0; + r8 = r8 >> 2; + heap32[(r11)] = r12; + r8 = heap32[(r8+-1)]; + heap32[(g0)] = r8; + free(i7); +} + if(r0 > 2; + heap32[(r12)] = 0; +if(!(r11 !=0)) //_LBB105_36 +{ +break _23; +} +} +} +} +} while(0); + r11 = (r14 + -2)|0; +} +else{ + r14 = r0; +} + r0 = r13 << 2; + r0 = (r8 + r0)|0; + r0 = r0 >> 2; + r12 = heap32[(r15+9)]; + heap32[(r0+-1)] = r12; + r15 = heap32[(r15+10)]; + r12 = (r13 + 1)|0; + heap32[(r0)] = r15; + r0 = r14; +} +} +} +} +} +} +} +if(!(r12 !=0)) //_LBB105_7 +{ +break _9; +} +} +if(!(r8 ==0)) //_LBB105_43 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + r2 = r8 >> 2; + heap32[(r0)] = r1; + r0 = heap32[(r2+-1)]; + heap32[(g0)] = r0; + free(i7); +} +} + return; +} + +function _ZN16btDbvtBroadphase7rayTestERK9btVector3S2_R23btBroadphaseRayCallbackS2_S2_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var f0; +var __label__ = 0; + i7 = sp + -40;var g0 = i7>>2; // save stack + r0 = _ZTV19BroadphaseRayTester; + r1 = sp + -8; + r0 = (r0 + 8)|0; + r2 = heap32[(fp+3)]; + r3 = heap32[(fp)]; + r4 = r1 >> 2; + heap32[(fp+-2)] = r0; + heap32[(r4+1)] = r2; + r0 = r2 >> 2; + r3 = r3 >> 2; + f0 = heapFloat[(r0+8)]; + r4 = heap32[(r3+1)]; + r5 = heap32[(fp+1)]; + r6 = (r2 + 4)|0; + r2 = (r2 + 20)|0; + r7 = heap32[(fp+4)]; + r8 = heap32[(fp+5)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r6; + heap32[(g0+3)] = r2; + heapFloat[(g0+4)] = f0; + heap32[(g0+5)] = r7; + heap32[(g0+6)] = r8; + heap32[(g0+7)] = r1; + _ZNK6btDbvt15rayTestInternalEPK10btDbvtNodeRK9btVector3S5_S5_PjfS5_S5_RNS_8ICollideE(i7); + f0 = heapFloat[(r0+8)]; + r0 = heap32[(r3+11)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r6; + heap32[(g0+3)] = r2; + heapFloat[(g0+4)] = f0; + heap32[(g0+5)] = r7; + heap32[(g0+6)] = r8; + heap32[(g0+7)] = r1; + _ZNK6btDbvt15rayTestInternalEPK10btDbvtNodeRK9btVector3S5_S5_PjfS5_S5_RNS_8ICollideE(i7); + return; +} + +function _ZN16btDbvtBroadphase12destroyProxyEP17btBroadphaseProxyP12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = r0 >> 2; + r2 = heap32[(fp)]; + r3 = heap32[(fp+2)]; + r4 = heap32[(r1+12)]; + r5 = heap32[(r1+15)]; + if(r5 !=2) //_LBB107_4 +{ + r5 = (r2 + 4)|0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r4; + r5 = r2 >> 2; + _ZL10removeleafP6btDbvtP10btDbvtNode(i7); + r6 = heap32[(r5+2)]; +if(!(r6 ==0)) //_LBB107_6 +{ + r7 = gNumAlignedFree; + r7 = r7 >> 2; + r8 = heap32[(r7)]; + r8 = (r8 + 1)|0; + r6 = r6 >> 2; + heap32[(r7)] = r8; + r6 = heap32[(r6+-1)]; + heap32[(g0)] = r6; + free(i7); +} + heap32[(r5+2)] = r4; + r4 = heap32[(r5+4)]; + r4 = (r4 + -1)|0; + heap32[(r5+4)] = r4; +} +else{ + r5 = (r2 + 44)|0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r4; + r5 = r2 >> 2; + _ZL10removeleafP6btDbvtP10btDbvtNode(i7); + r6 = heap32[(r5+12)]; +if(!(r6 ==0)) //_LBB107_3 +{ + r7 = gNumAlignedFree; + r7 = r7 >> 2; + r8 = heap32[(r7)]; + r8 = (r8 + 1)|0; + r6 = r6 >> 2; + heap32[(r7)] = r8; + r6 = heap32[(r6+-1)]; + heap32[(g0)] = r6; + free(i7); +} + heap32[(r5+12)] = r4; + r4 = heap32[(r5+14)]; + r4 = (r4 + -1)|0; + heap32[(r5+14)] = r4; +} + r4 = heap32[(r1+13)]; + r5 = heap32[(r1+14)]; + if(r4 ==0) //_LBB107_9 +{ + r4 = heap32[(r1+15)]; + r4 = r4 << 2; + r4 = (r2 + r4)|0; + r4 = r4 >> 2; + heap32[(r4+21)] = r5; +} +else{ + r4 = r4 >> 2; + heap32[(r4+14)] = r5; +} + r4 = heap32[(r1+14)]; +if(!(r4 ==0)) //_LBB107_12 +{ + r4 = r4 >> 2; + r5 = heap32[(r1+13)]; + heap32[(r4+13)] = r5; +} + r4 = r2 >> 2; + r4 = heap32[(r4+24)]; + r5 = r4 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+4)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r3; + __FUNCTION_TABLE__[(r5)>>2](i7); +if(!(r0 ==0)) //_LBB107_14 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r3 = heap32[(r0)]; + r3 = (r3 + 1)|0; + heap32[(r0)] = r3; + r0 = heap32[(r1+-1)]; + heap32[(g0)] = r0; + free(i7); +} + r0 = 1; + heap8[r2+154] = r0; + return; +} + +function _ZN16btDbvtBroadphase25calculateOverlappingPairsEP12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; +var __label__ = 0; + i7 = sp + -48;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+4)]; + r3 = heap32[(r1+28)]; + r2 = (r3 * r2)|0; + r2 = (r2 / 100)|0; + r3 = (r0 + 4)|0; + r2 = (r2 + 1)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r2; + _ZN6btDbvt19optimizeIncrementalEi(i7); + r2 = heap32[(r1+31)]; +if(!(r2 ==0)) //_LBB108_2 +{ + r2 = heap32[(r1+14)]; + r4 = heap32[(r1+27)]; + r2 = (r4 * r2)|0; + r4 = (r2 / 100)|0; + r5 = (r0 + 44)|0; + r4 = (r4 + 1)|0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r4; + _ZN6btDbvt19optimizeIncrementalEi(i7); + r2 = (r2 / -100)|0; + r4 = heap32[(r1+31)]; + r2 = (r2 + r4)|0; + r2 = (r2 + -1)|0; + r4 = 0; + r2 = r2 < 0 ? r4 : r2; + heap32[(r1+31)] = r2; +} + r2 = heap32[(r1+26)]; + r2 = (r2 + 1)|0; + r4 = r2 >>> 31; + r4 = (r2 + r4)|0; + r4 = r4 & -2; + r2 = (r2 - r4)|0; + r4 = r2 << 2; + r4 = (r0 + r4)|0; + r4 = r4 >> 2; + heap32[(r1+26)] = r2; + r2 = heap32[(r4+21)]; +if(!(r2 ==0)) //_LBB108_20 +{ + r4 = (r0 + 44)|0; +_6: while(true){ + r5 = r2 >> 2; + r6 = heap32[(r5+13)]; + r7 = heap32[(r5+14)]; + if(r6 ==0) //_LBB108_6 +{ + r6 = heap32[(r5+15)]; + r6 = r6 << 2; + r6 = (r0 + r6)|0; + r6 = r6 >> 2; + heap32[(r6+21)] = r7; +} +else{ + r6 = r6 >> 2; + heap32[(r6+14)] = r7; +} + r6 = heap32[(r5+14)]; +if(!(r6 ==0)) //_LBB108_9 +{ + r6 = r6 >> 2; + r8 = heap32[(r5+13)]; + heap32[(r6+13)] = r8; +} + heap32[(r5+13)] = 0; + r6 = heap32[(r1+23)]; + heap32[(r5+14)] = r6; + r6 = heap32[(r1+23)]; +if(!(r6 ==0)) //_LBB108_11 +{ + r6 = r6 >> 2; + heap32[(r6+13)] = r2; +} + heap32[(r1+23)] = r2; + r6 = heap32[(r5+12)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r6; + _ZL10removeleafP6btDbvtP10btDbvtNode(i7); + r8 = heap32[(r1+2)]; +if(!(r8 ==0)) //_LBB108_13 +{ + r9 = gNumAlignedFree; + r9 = r9 >> 2; + r10 = heap32[(r9)]; + r10 = (r10 + 1)|0; + r8 = r8 >> 2; + heap32[(r9)] = r10; + r8 = heap32[(r8+-1)]; + heap32[(g0)] = r8; + free(i7); +} + heap32[(r1+2)] = r6; + r6 = heap32[(r1+4)]; + r6 = (r6 + -1)|0; + heap32[(r1+4)] = r6; + r6 = heap32[(r1+12)]; + f0 = heapFloat[(r5+4)]; + f1 = heapFloat[(r5+5)]; + f2 = heapFloat[(r5+6)]; + f3 = heapFloat[(r5+7)]; + f4 = heapFloat[(r5+8)]; + f5 = heapFloat[(r5+9)]; + f6 = heapFloat[(r5+10)]; + f7 = heapFloat[(r5+11)]; + if(r6 ==0) //_LBB108_15 +{ + r6 = gNumAlignedAllocs; + r6 = r6 >> 2; + r8 = heap32[(r6)]; + r8 = (r8 + 1)|0; + heap32[(r6)] = r8; + heap32[(g0)] = 63; + malloc(i7); + r6 = r_g0; + if(r6 !=0) //_LBB108_17 +{ + r8 = 0; + r9 = (r6 + 4)|0; + r8 = (r8 - r9)|0; + r8 = r8 & 15; + r8 = (r6 + r8)|0; + r9 = (r8 + 4)|0; + r8 = r8 >> 2; + heap32[(r8)] = r6; + r6 = r9; +} +} +else{ + heap32[(r1+12)] = 0; +} + r8 = r6 >> 2; + heap32[(r8+8)] = 0; + heap32[(r8+9)] = r2; + heap32[(r8+10)] = 0; + heapFloat[(r8)] = f0; + heapFloat[(r8+1)] = f1; + heapFloat[(r8+2)] = f2; + heapFloat[(r8+3)] = f3; + heapFloat[(r8+4)] = f4; + heapFloat[(r8+5)] = f5; + heapFloat[(r8+6)] = f6; + heapFloat[(r8+7)] = f7; + r2 = heap32[(r1+11)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r6; + _ZL10insertleafP6btDbvtP10btDbvtNodeS2_(i7); + r2 = heap32[(r1+14)]; + r2 = (r2 + 1)|0; + heap32[(r1+14)] = r2; + heap32[(r5+12)] = r6; + heap32[(r5+15)] = 2; + r2 = r7; +if(!(r7 !=0)) //_LBB108_4 +{ +break _6; +} +} + r2 = heap32[(r1+14)]; + r4 = 1; + heap32[(r1+31)] = r2; + heap8[r0+154] = r4; +} + r2 = _ZTV18btDbvtTreeCollider; + r4 = sp + -32; + r2 = (r2 + 8)|0; + r5 = r4 >> 2; + heap32[(fp+-8)] = r2; + heap32[(r5+1)] = r0; + r5 = heapU8[r0+153]; +if(!(r5 ==0)) //_LBB108_23 +{ + r5 = heap32[(r1+11)]; + r6 = heap32[(r1+1)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r4; + _ZN6btDbvt24collideTTpersistentStackEPK10btDbvtNodeS2_RNS_8ICollideE(i7); + r5 = heapU8[r0+153]; +if(!(r5 ==0)) //_LBB108_23 +{ + r5 = heap32[(r1+1)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r4; + _ZN6btDbvt24collideTTpersistentStackEPK10btDbvtNodeS2_RNS_8ICollideE(i7); +} +} + r3 = heap32[(fp+1)]; + heap32[(fp+-8)] = r2; + r2 = heapU8[r0+154]; +_32: do { +if(!(r2 ==0)) //_LBB108_40 +{ + r2 = heap32[(r1+24)]; + r4 = r2 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+7)]; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r4)>>2](i7); + r2 = r_g0; + r4 = r2 >> 2; + r4 = heap32[(r4+1)]; +if(!(r4 <1)) //_LBB108_40 +{ + r5 = heap32[(r1+29)]; + r5 = (r5 * r4)|0; + r6 = heap32[(r1+30)]; + r5 = (r5 / 100)|0; + r5 = r6 > r5 ? r6 : r5; + r5 = r4 < r5 ? r4 : r5; + if(r5 >0) //_LBB108_27 +{ + r4 = 0; +_37: while(true){ + r6 = r2 >> 2; + r7 = heap32[(r1+36)]; + r7 = (r7 + r4)|0; + r8 = heap32[(r6+1)]; + r7 = (r7 % r8)|0; + r8 = heap32[(r6+3)]; + r7 = r7 << 4; + r7 = (r8 + r7)|0; + r7 = r7 >> 2; + r8 = heap32[(r7+1)]; + r7 = heap32[(r7)]; + r9 = r8 >> 2; + r10 = r7 >> 2; + r9 = heap32[(r9+12)]; + r10 = heap32[(r10+12)]; + r10 = r10 >> 2; + r9 = r9 >> 2; + f0 = heapFloat[(r10)]; + f1 = heapFloat[(r9+4)]; + if(f0 >f1) //_LBB108_35 +{ +__label__ = 32; +} +else{ + f0 = heapFloat[(r10+4)]; + f1 = heapFloat[(r9)]; + if(f0 f1) //_LBB108_35 +{ +__label__ = 32; +} +else{ + f0 = heapFloat[(r10+5)]; + f1 = heapFloat[(r9+1)]; + if(f0 f1) //_LBB108_35 +{ +__label__ = 32; +} +else{ + f0 = heapFloat[(r10+6)]; + f1 = heapFloat[(r9+2)]; + if(f0 > 2; + r10 = heap32[(r10)]; + r10 = r10 >> 2; + r10 = heap32[(r10+3)]; + heap32[(g0)] = r9; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r3; + r5 = (r5 + -1)|0; + r4 = (r4 + -1)|0; + __FUNCTION_TABLE__[(r10)>>2](i7); +} + r4 = (r4 + 1)|0; +if(!(r4 >> 1; + r0 = r0 >>> 1; + heap32[(r1+33)] = r4; + heap32[(r1+32)] = r0; + r0 = heap32[(r1+24)]; + r4 = r0 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+14)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r4)>>2](i7); + r0 = r_g0; +if(!(r0 ==0)) //_LBB108_65 +{ + r0 = heap32[(r1+24)]; + r4 = r0 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+7)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r4)>>2](i7); + r0 = r_g0; + r4 = r0 >> 2; + r4 = heap32[(r4+1)]; +if(!(r4 <2)) //_LBB108_46 +{ + r4 = (r4 + -1)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = r4; + _ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(i7); +} + r4 = r2; + r5 = r2; + r6 = r2; + r7 = r2; +_61: while(true){ + r8 = r0 >> 2; + r9 = heap32[(r8+1)]; + if(r9 >r7) //_LBB108_47 +{ + r8 = heap32[(r8+3)]; + r9 = r7 << 4; + r9 = (r8 + r9)|0; + r9 = r9 >> 2; + r10 = heap32[(r9)]; + r11 = r7 << 2; + r12 = heap32[(r9+1)]; + if(r10 !=r4) //_LBB108_49 +{ +__label__ = 46; +} +else{ + if(r12 ==r5) //_LBB108_56 +{ + r4 = heap32[(r9+2)]; + if(r4 ==0) //_LBB108_58 +{ +__label__ = 54; +} +else{ +__label__ = 53; +break _61; +} +} +else{ +__label__ = 46; +} +} +if (__label__ == 46){ + r4 = r12 >> 2; + r5 = r10 >> 2; + r4 = heap32[(r4+12)]; + r5 = heap32[(r5+12)]; + r5 = r5 >> 2; + r4 = r4 >> 2; + f0 = heapFloat[(r5)]; + f1 = heapFloat[(r4+4)]; + if(f0 >f1) //_LBB108_58 +{ +__label__ = 54; +} +else{ + f0 = heapFloat[(r5+4)]; + f1 = heapFloat[(r4)]; + if(f0 f1) //_LBB108_58 +{ +__label__ = 54; +} +else{ + f0 = heapFloat[(r5+5)]; + f1 = heapFloat[(r4+1)]; + if(f0 f1) //_LBB108_58 +{ +__label__ = 54; +} +else{ + f0 = heapFloat[(r5+6)]; + f1 = heapFloat[(r4+2)]; + if(f0 > 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+8)]; + r9 = (r8 + r2)|0; + r11 = r11 << 2; + heap32[(g0)] = r4; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r3; + r4 = (r8 + r11)|0; + r4 = r4 >> 2; + __FUNCTION_TABLE__[(r5)>>2](i7); + r6 = (r6 + 1)|0; + heap32[(r4)] = 0; + heap32[(r4+1)] = 0; +} + r7 = (r7 + 1)|0; + r2 = (r2 + 16)|0; + r4 = r10; + r5 = r12; +} +else{ +__label__ = 57; +break _61; +} +} +switch(__label__ ){//multiple entries +case 57: + if(r9 >1) //_LBB108_63 +{ + r9 = (r9 + -1)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = r9; + _ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(i7); + r9 = heap32[(r8+1)]; +} + r1 = sp + -16; + r2 = r1 >> 2; + heap32[(fp+-4)] = 0; + heap32[(r2+1)] = 0; + heap32[(r2+2)] = 0; + heap32[(r2+3)] = 0; + r2 = (r9 - r6)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r1; + _ZN20btAlignedObjectArrayI16btBroadphasePairE6resizeEiRKS0_(i7); +break; +case 53: + r8 = _2E_str314; + r0 = _2E_str18; + heap32[(g0)] = r8; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = 469; + _assert(i7); +break; +} +} + return; +} + +function _ZN16btDbvtBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; +var __label__ = 0; + i7 = sp + -88;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r0 = r0 >> 2; + f0 = heapFloat[(r0)]; + r1 = sp + -32; + heapFloat[(fp+-8)] = f0; + f1 = heapFloat[(r0+1)]; + r2 = r1 >> 2; + heapFloat[(r2+1)] = f1; + f2 = heapFloat[(r0+2)]; + heapFloat[(r2+2)] = f2; + f3 = heapFloat[(r0+3)]; + r3 = heap32[(fp+3)]; + r3 = r3 >> 2; + heapFloat[(r2+3)] = f3; + f4 = heapFloat[(r3)]; + heapFloat[(r2+4)] = f4; + f5 = heapFloat[(r3+1)]; + heapFloat[(r2+5)] = f5; + f6 = heapFloat[(r3+2)]; + heapFloat[(r2+6)] = f6; + f7 = heapFloat[(r3+3)]; + r4 = heap32[(fp+1)]; + r5 = heap32[(fp)]; + r6 = r4 >> 2; + heapFloat[(r2+7)] = f7; + r7 = heap32[(r6+15)]; +_1: do { + if(r7 !=2) //_LBB109_9 +{ + r2 = r5 >> 2; + r8 = heap32[(r2+32)]; + r8 = (r8 + 1)|0; + heap32[(r2+32)] = r8; + r8 = heap32[(r6+12)]; + r7 = r8 >> 2; + f8 = heapFloat[(r7)]; +if(!(f8 >f4)) //_LBB109_24 +{ + f8 = heapFloat[(r7+4)]; +if(!(f8 f5)) //_LBB109_24 +{ + f8 = heapFloat[(r7+5)]; +if(!(f8 f6)) //_LBB109_24 +{ + f8 = heapFloat[(r7+6)]; +if(!(f8 > 2; + heapFloat[(fp+-12)] = f1; + f2 = f2*f7; + heapFloat[(r9+1)] = f4; + heapFloat[(r9+2)] = f2; + heap32[(r9+3)] = 0; + f0 = f6-f0; + f6 = 0; +if(!(f0 >=f6)) //_LBB109_17 +{ + f0 = -f1; + heapFloat[(fp+-12)] = f0; +} + f0 = f5-f3; +if(!(f0 >=f6)) //_LBB109_19 +{ + f0 = -f4; + heapFloat[(r9+1)] = f0; +} + f0 = f8-f9; +if(!(f0 >=f6)) //_LBB109_21 +{ + f0 = -f2; + heapFloat[(r9+2)] = f0; +} + r9 = (r5 + 4)|0; + heap32[(g0)] = r9; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r1; + heap32[(g0+3)] = r7; + heap32[(g0+4)] = 1028443341; + _ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMmRK9btVector3f(i7); + r8 = r_g0; + if(r8 !=0) //_LBB109_23 +{ + r7 = heap32[(r2+33)]; + r8 = 1; + r7 = (r7 + 1)|0; + heap32[(r2+33)] = r7; +break _1; +} +else{ + r8 = 0; +break _1; +} +} +} +} +} +} +} + r1 = (r5 + 4)|0; + heap32[(g0)] = r1; + heap32[(g0+1)] = r8; + _ZL10removeleafP6btDbvtP10btDbvtNode(i7); + r9 = r_g0; +_23: do { + if(r9 !=0) //_LBB109_26 +{ + r11 = heap32[(r2+3)]; + if(r11 <0) //_LBB109_31 +{ + r10 = heap32[(r2+1)]; +} +else{ + r12 = -1; +_28: while(true){ + r10 = r9; + r12 = (r12 + 1)|0; + if(r11 >r12) //_LBB109_30 +{ + r9 = r10 >> 2; + r9 = heap32[(r9+8)]; + if(r9 ==0) //_LBB109_29 +{ +break _23; +} +} +else{ +break _23; +} +} +} +} +else{ + r10 = 0; +} +} while(0); + heapFloat[(r7)] = f0; + heapFloat[(r7+1)] = f1; + heapFloat[(r7+2)] = f2; + heapFloat[(r7+3)] = f3; + heapFloat[(r7+4)] = f4; + heapFloat[(r7+5)] = f5; + heapFloat[(r7+6)] = f6; + heapFloat[(r7+7)] = f7; + heap32[(g0)] = r1; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r8; + _ZL10insertleafP6btDbvtP10btDbvtNodeS2_(i7); + r1 = heap32[(r2+33)]; + r8 = 1; + r1 = (r1 + 1)|0; + heap32[(r2+33)] = r1; +} +else{ + r1 = heap32[(r6+12)]; + r7 = (r5 + 44)|0; + heap32[(g0)] = r7; + heap32[(g0+1)] = r1; + r7 = r5 >> 2; + _ZL10removeleafP6btDbvtP10btDbvtNode(i7); + r8 = heap32[(r7+12)]; +if(!(r8 ==0)) //_LBB109_3 +{ + r9 = gNumAlignedFree; + r9 = r9 >> 2; + r10 = heap32[(r9)]; + r10 = (r10 + 1)|0; + r8 = r8 >> 2; + heap32[(r9)] = r10; + r8 = heap32[(r8+-1)]; + heap32[(g0)] = r8; + free(i7); +} + heap32[(r7+12)] = r1; + r1 = heap32[(r7+14)]; + r1 = (r1 + -1)|0; + heap32[(r7+14)] = r1; + r1 = heap32[(r7+2)]; + r8 = (r5 + 4)|0; + if(r1 ==0) //_LBB109_5 +{ + r1 = gNumAlignedAllocs; + r1 = r1 >> 2; + r9 = heap32[(r1)]; + r9 = (r9 + 1)|0; + heap32[(r1)] = r9; + heap32[(g0)] = 63; + malloc(i7); + r1 = r_g0; + if(r1 !=0) //_LBB109_7 +{ + r9 = 0; + r10 = (r1 + 4)|0; + r9 = (r9 - r10)|0; + r9 = r9 & 15; + r9 = (r1 + r9)|0; + r10 = (r9 + 4)|0; + r9 = r9 >> 2; + heap32[(r9)] = r1; + r1 = r10; +} +} +else{ + heap32[(r7+2)] = 0; +} + r9 = r1 >> 2; + heap32[(r9+8)] = 0; + heap32[(r9+9)] = r4; + heap32[(r9+10)] = 0; + heap32[(r9)] = heap32[(fp+-8)]; + heap32[(r9+1)] = heap32[(r2+1)]; + heap32[(r9+2)] = heap32[(r2+2)]; + heap32[(r9+3)] = heap32[(r2+3)]; + heapFloat[(r9+4)] = f4; + heapFloat[(r9+5)] = f5; + heapFloat[(r9+6)] = f6; + heapFloat[(r9+7)] = f7; + r2 = heap32[(r7+1)]; + heap32[(g0)] = r8; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r1; + _ZL10insertleafP6btDbvtP10btDbvtNodeS2_(i7); + r2 = heap32[(r7+4)]; + r2 = (r2 + 1)|0; + r8 = 1; + heap32[(r7+4)] = r2; + heap32[(r6+12)] = r1; +} +} while(0); + r1 = heap32[(r6+13)]; + r2 = heap32[(r6+14)]; + if(r1 ==0) //_LBB109_35 +{ + r1 = heap32[(r6+15)]; + r1 = r1 << 2; + r1 = (r5 + r1)|0; + r1 = r1 >> 2; + heap32[(r1+21)] = r2; +} +else{ + r1 = r1 >> 2; + heap32[(r1+14)] = r2; +} + r1 = heap32[(r6+14)]; +if(!(r1 ==0)) //_LBB109_38 +{ + r1 = r1 >> 2; + r2 = heap32[(r6+13)]; + heap32[(r1+13)] = r2; +} + heap32[(r6+4)] = heap32[(r0)]; + heap32[(r6+5)] = heap32[(r0+1)]; + heap32[(r6+6)] = heap32[(r0+2)]; + heap32[(r6+7)] = heap32[(r0+3)]; + heap32[(r6+8)] = heap32[(r3)]; + heap32[(r6+9)] = heap32[(r3+1)]; + heap32[(r6+10)] = heap32[(r3+2)]; + r0 = r5 >> 2; + heap32[(r6+11)] = heap32[(r3+3)]; + r1 = heap32[(r0+26)]; + heap32[(r6+15)] = r1; + r1 = heap32[(r0+26)]; + r1 = r1 << 2; + r1 = (r5 + r1)|0; + r1 = r1 >> 2; + heap32[(r6+13)] = 0; + r2 = heap32[(r1+21)]; + heap32[(r6+14)] = r2; + r2 = heap32[(r1+21)]; +if(!(r2 ==0)) //_LBB109_40 +{ + r2 = r2 >> 2; + heap32[(r2+13)] = r4; +} + r2 = r8 & 1; + heap32[(r1+21)] = r4; +if(!(r2 ==0)) //_LBB109_43 +{ + r1 = 1; + heap8[r5+154] = r1; + r1 = heapU8[r5+153]; +if(!(r1 !=0)) //_LBB109_43 +{ + r1 = _ZTV18btDbvtTreeCollider; + r2 = sp + -64; + r1 = (r1 + 8)|0; + r3 = r2 >> 2; + heap32[(fp+-16)] = r1; + heap32[(r3+1)] = r5; + r1 = heap32[(r6+12)]; + r3 = heap32[(r0+11)]; + r4 = (r5 + 44)|0; + heap32[(g0)] = r4; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r1; + heap32[(g0+3)] = r2; + _ZN6btDbvt24collideTTpersistentStackEPK10btDbvtNodeS2_RNS_8ICollideE(i7); + r1 = heap32[(r6+12)]; + r0 = heap32[(r0+1)]; + r3 = (r5 + 4)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r1; + heap32[(g0+3)] = r2; + _ZN6btDbvt24collideTTpersistentStackEPK10btDbvtNodeS2_RNS_8ICollideE(i7); +} +} + return; +} + +function _ZN16btDbvtBroadphaseD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV16btDbvtBroadphase; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heapU8[r0+152]; +if(!(r1 ==0)) //_LBB110_3 +{ + r1 = heap32[(r2+24)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+24)]; +if(!(r1 ==0)) //_LBB110_3 +{ + r2 = gNumAlignedFree; + r2 = r2 >> 2; + r3 = heap32[(r2)]; + r3 = (r3 + 1)|0; + r1 = r1 >> 2; + heap32[(r2)] = r3; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} +} + r1 = (r0 + 4)|0; +if(!(r1 ==0)) //_LBB110_15 +{ + r2 = (r1 + 80)|0; +if(!(r2 ==r1)) //_LBB110_15 +{ + r1 = (r0 + 44)|0; + r2 = 0; +_8: while(true){ + r3 = (r0 + r2)|0; + r4 = r3 >> 2; + r5 = heap32[(r4+11)]; +if(!(r5 ==0)) //_LBB110_8 +{ + r6 = (r1 + r2)|0; + heap32[(g0)] = r6; + heap32[(g0+1)] = r5; + _ZL17recursedeletenodeP6btDbvtP10btDbvtNode(i7); +} + r5 = heap32[(r4+12)]; +if(!(r5 ==0)) //_LBB110_10 +{ + r6 = gNumAlignedFree; + r6 = r6 >> 2; + r7 = heap32[(r6)]; + r7 = (r7 + 1)|0; + r5 = r5 >> 2; + heap32[(r6)] = r7; + r5 = heap32[(r5+-1)]; + heap32[(g0)] = r5; + free(i7); +} + heap32[(r4+12)] = 0; + heap32[(r4+13)] = -1; + r5 = heap32[(r4+19)]; +if(!(r5 ==0)) //_LBB110_14 +{ + r6 = heapU8[r3+80]; +if(!(r6 ==0)) //_LBB110_13 +{ + r6 = gNumAlignedFree; + r6 = r6 >> 2; + r7 = heap32[(r6)]; + r7 = (r7 + 1)|0; + r5 = r5 >> 2; + heap32[(r6)] = r7; + r5 = heap32[(r5+-1)]; + heap32[(g0)] = r5; + free(i7); +} + heap32[(r4+19)] = 0; +} + r5 = 1; + heap32[(r4+15)] = 0; + heap8[r3+80] = r5; + heap32[(r4+19)] = 0; + r2 = (r2 + -40)|0; + heap32[(r4+17)] = 0; + heap32[(r4+18)] = 0; + if(r2 !=-80) //_LBB110_6 +{ +continue _8; +} +else{ +break _8; +} +} +} +} + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN16btDbvtBroadphaseD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV16btDbvtBroadphase; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heapU8[r0+152]; +if(!(r1 ==0)) //_LBB111_3 +{ + r1 = heap32[(r2+24)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+24)]; +if(!(r1 ==0)) //_LBB111_3 +{ + r2 = gNumAlignedFree; + r2 = r2 >> 2; + r3 = heap32[(r2)]; + r3 = (r3 + 1)|0; + r1 = r1 >> 2; + heap32[(r2)] = r3; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} +} + r1 = (r0 + 4)|0; +if(!(r1 ==0)) //_LBB111_15 +{ + r2 = (r1 + 80)|0; +if(!(r2 ==r1)) //_LBB111_15 +{ + r1 = (r0 + 44)|0; + r2 = 0; +_8: while(true){ + r3 = (r0 + r2)|0; + r4 = r3 >> 2; + r5 = heap32[(r4+11)]; +if(!(r5 ==0)) //_LBB111_8 +{ + r6 = (r1 + r2)|0; + heap32[(g0)] = r6; + heap32[(g0+1)] = r5; + _ZL17recursedeletenodeP6btDbvtP10btDbvtNode(i7); +} + r5 = heap32[(r4+12)]; +if(!(r5 ==0)) //_LBB111_10 +{ + r6 = gNumAlignedFree; + r6 = r6 >> 2; + r7 = heap32[(r6)]; + r7 = (r7 + 1)|0; + r5 = r5 >> 2; + heap32[(r6)] = r7; + r5 = heap32[(r5+-1)]; + heap32[(g0)] = r5; + free(i7); +} + heap32[(r4+12)] = 0; + heap32[(r4+13)] = -1; + r5 = heap32[(r4+19)]; +if(!(r5 ==0)) //_LBB111_14 +{ + r6 = heapU8[r3+80]; +if(!(r6 ==0)) //_LBB111_13 +{ + r6 = gNumAlignedFree; + r6 = r6 >> 2; + r7 = heap32[(r6)]; + r7 = (r7 + 1)|0; + r5 = r5 >> 2; + heap32[(r6)] = r7; + r5 = heap32[(r5+-1)]; + heap32[(g0)] = r5; + free(i7); +} + heap32[(r4+19)] = 0; +} + r5 = 1; + heap32[(r4+15)] = 0; + heap8[r3+80] = r5; + heap32[(r4+19)] = 0; + r2 = (r2 + -40)|0; + heap32[(r4+17)] = 0; + heap32[(r4+18)] = 0; + if(r2 !=-80) //_LBB111_6 +{ +continue _8; +} +else{ +break _8; +} +} +} +} + return; +} + +function _ZN12btDispatcherD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV12btDispatcher; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN12btDispatcherD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV12btDispatcher; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZNK14btQuantizedBvh8quantizeEPtRK9btVector3i(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heapU8[r0+60]; + if(r1 !=0) //_LBB114_2 +{ + r1 = heap32[(fp+2)]; + r1 = r1 >> 2; + f0 = heapFloat[(r1)]; + r0 = r0 >> 2; + f1 = heapFloat[(r0+5)]; + if(f0 <=f1) //_LBB114_4 +{ + f1 = heapFloat[(r1+1)]; + f2 = heapFloat[(r0+6)]; + if(f1 <=f2) //_LBB114_6 +{ + f2 = heapFloat[(r1+2)]; + f3 = heapFloat[(r0+7)]; + if(f2 <=f3) //_LBB114_8 +{ + f3 = heapFloat[(r0+1)]; + if(f0 >=f3) //_LBB114_10 +{ + f4 = heapFloat[(r0+2)]; + if(f1 >=f4) //_LBB114_12 +{ + f5 = heapFloat[(r0+3)]; + if(f2 >=f5) //_LBB114_14 +{ + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+3)]; + f2 = f2-f5; + f5 = heapFloat[(r0+11)]; + f1 = f1-f4; + f4 = heapFloat[(r0+10)]; + f0 = f0-f3; + f3 = heapFloat[(r0+9)]; + f2 = f2*f5; + f1 = f1*f4; + f0 = f0*f3; + if(r2 ==0) //_LBB114_16 +{ + r0 = Math.floor(f0); + r2 = Math.floor(f1); + r0 = r0 & 65534; + r3 = Math.floor(f2); + r2 = r2 & 65534; + heap16[(r1)>>1] = r0; + r0 = r3 & 65534; +} +else{ + f3 = 1; + f0 = f0+f3; + f1 = f1+f3; + r0 = Math.floor(f0); + f0 = f2+f3; + r2 = Math.floor(f1); + r0 = r0 | 1; + r3 = Math.floor(f0); + r2 = r2 | 1; + heap16[(r1)>>1] = r0; + r0 = r3 | 1; +} + heap16[(r1+2)>>1] = r2; + heap16[(r1+4)>>1] = r0; + return; +} +else{ + r0 = _2E_str9; + r1 = _2E_str313; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 361; + _assert(i7); +} +} +else{ + r0 = _2E_str820; + r1 = _2E_str313; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 360; + _assert(i7); +} +} +else{ + r0 = _2E_str717; + r1 = _2E_str313; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 359; + _assert(i7); +} +} +else{ + r0 = _2E_str616; + r1 = _2E_str313; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 357; + _assert(i7); +} +} +else{ + r0 = _2E_str515; + r1 = _2E_str313; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 356; + _assert(i7); +} +} +else{ + r0 = _2E_str414; + r1 = _2E_str313; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 355; + _assert(i7); +} +} +else{ + r0 = _2E_str212; + r1 = _2E_str313; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 353; + _assert(i7); +} +} + +function _ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE7reserveEi(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = r0 >> 2; + r3 = heap32[(r2+2)]; +if(!(r3 >=r1)) //_LBB115_16 +{ + if(r1 !=0) //_LBB115_3 +{ + r3 = gNumAlignedAllocs; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r5 = r1 << 4; + r4 = (r4 + 1)|0; + r5 = r5 | 3; + heap32[(r3)] = r4; + r3 = (r5 + 16)|0; + heap32[(g0)] = r3; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB115_5 +{ + r4 = 0; + r5 = (r3 + 4)|0; + r4 = (r4 - r5)|0; + r4 = r4 & 15; + r4 = (r3 + r4)|0; + r5 = (r4 + 4)|0; + r4 = r4 >> 2; + heap32[(r4)] = r3; + r3 = r5; +} +} +else{ + r3 = 0; +} + r4 = heap32[(r2+1)]; + r5 = (r0 + 12)|0; + if(r4 <1) //_LBB115_8 +{ + r4 = r5 >> 2; + r7 = heap32[(r4)]; +} +else{ + r6 = 0; +_11: while(true){ + r7 = r5 >> 2; + r7 = heap32[(r7)]; + r8 = r6 << 4; + r9 = heapU16[(r7+r8)>>1]; + r10 = (r7 + r8)|0; + heap16[(r3+r8)>>1] = r9; + r8 = (r3 + r8)|0; + r9 = heapU16[(r10+2)>>1]; + heap16[(r8+2)>>1] = r9; + r9 = heapU16[(r10+4)>>1]; + heap16[(r8+4)>>1] = r9; + r9 = heapU16[(r10+6)>>1]; + heap16[(r8+6)>>1] = r9; + r9 = heapU16[(r10+8)>>1]; + heap16[(r8+8)>>1] = r9; + r9 = heapU16[(r10+10)>>1]; + r10 = r10 >> 2; + heap16[(r8+10)>>1] = r9; + r6 = (r6 + 1)|0; + r8 = r8 >> 2; + r9 = heap32[(r10+3)]; + heap32[(r8+3)] = r9; +if(!(r4 !=r6)) //_LBB115_9 +{ +break _11; +} +} + r5 = (r0 + 12)|0; +} +if(!(r7 ==0)) //_LBB115_15 +{ + r4 = heapU8[r0+16]; +if(!(r4 ==0)) //_LBB115_14 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r6 = heap32[(r4)]; + r6 = (r6 + 1)|0; + r7 = r7 >> 2; + heap32[(r4)] = r6; + r4 = heap32[(r7+-1)]; + heap32[(g0)] = r4; + free(i7); +} + r4 = r5 >> 2; + heap32[(r4)] = 0; +} + r4 = 1; + r5 = r5 >> 2; + heap8[r0+16] = r4; + heap32[(r5)] = r3; + heap32[(r2+2)] = r1; +} + return; +} + +function _ZN28btHashedOverlappingPairCache23getOverlappingPairArrayEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = (r0 + 4)|0; + r_g0 = r0; + return; +} + +function _ZN28btHashedOverlappingPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+1)]; + heap32[(r0+6)] = r1; + return; +} + +function _ZN28btHashedOverlappingPairCache18hasDeferredRemovalEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN28btHashedOverlappingPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+1)]; + heap32[(r0+18)] = r1; + return; +} + +function _ZN28btHashedOverlappingPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = heap32[(r0+2)]; +if(!(r1 ==0)) //_LBB120_2 +{ + r2 = heap32[(fp+2)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = r2 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+13)]; + r3 = heap32[(r0+2)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r3; + __FUNCTION_TABLE__[(r1)>>2](i7); + heap32[(r0+2)] = 0; +} + return; +} + +function _ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallback14processOverlapER16btBroadphasePair(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+1)]; + r2 = heap32[(r0+1)]; + r3 = r1 >> 2; + r4 = heap32[(r3)]; + if(r4 ==r2) //_LBB123_2 +{ +__label__ = 2; +} +else{ + r3 = heap32[(r3+1)]; + if(r3 !=r2) //_LBB123_3 +{ +__label__ = 3; +} +else{ +__label__ = 2; +} +} +if (__label__ == 2){ + r2 = heap32[(r0+2)]; + r3 = r2 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+8)]; + r0 = heap32[(r0+3)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r0; + __FUNCTION_TABLE__[(r3)>>2](i7); +} + r0 = 0; + r_g0 = r0; + return; +} + +function _ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallback14processOverlapER16btBroadphasePair(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+1)]; + r0 = heap32[(r0+1)]; + r1 = r1 >> 2; + r2 = heap32[(r1)]; + if(r2 ==r0) //_LBB126_2 +{ + r0 = 1; + r_g0 = r0; + return; +} +else{ + r1 = heap32[(r1+1)]; + r0 = r1 == r0; + r0 = r0 & 1; + r_g0 = r0; + return; +} +} + +function _ZN28btHashedOverlappingPairCache26getOverlappingPairArrayPtrEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+4)]; + r_g0 = r0; + return; +} + +function _ZNK28btHashedOverlappingPairCache26getOverlappingPairArrayPtrEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+4)]; + r_g0 = r0; + return; +} + +function _ZNK28btHashedOverlappingPairCache22getNumOverlappingPairsEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+2)]; + r_g0 = r0; + return; +} + +function _ZN28btHashedOverlappingPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r3 = 0; + r4 = r3; +_1: while(true){ + r5 = r4 << 2; +_3: while(true){ + r6 = r0 >> 2; + r7 = heap32[(r6+2)]; + if(r7 >r4) //_LBB130_1 +{ + r7 = r1 >> 2; + r7 = heap32[(r7)]; + r7 = r7 >> 2; + r8 = heap32[(r6+4)]; + r7 = heap32[(r7+2)]; + r9 = (r8 + r3)|0; + heap32[(g0)] = r1; + heap32[(g0+1)] = r9; + __FUNCTION_TABLE__[(r7)>>2](i7); + r7 = r_g0; + if(r7 ==0) //_LBB130_3 +{ +break _3; +} +else{ + r7 = r5 << 2; + r6 = heap32[(r6)]; + r7 = (r8 + r7)|0; + r7 = r7 >> 2; + r6 = r6 >> 2; + r6 = heap32[(r6+3)]; + r8 = heap32[(r7+1)]; + r7 = heap32[(r7)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r2; + r7 = gOverlappingPairs; + r7 = r7 >> 2; + __FUNCTION_TABLE__[(r6)>>2](i7); + r6 = heap32[(r7)]; + r6 = (r6 + -1)|0; + heap32[(r7)] = r6; +continue _3; +} +} +else{ +break _1; +} +} + r4 = (r4 + 1)|0; + r3 = (r3 + 16)|0; +continue _1; +} + return; +} + +function _ZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = _ZTVZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback; + r1 = sp + -8; + r0 = (r0 + 8)|0; + r2 = heap32[(fp)]; + r3 = r1 >> 2; + r4 = heap32[(fp+1)]; + heap32[(fp+-2)] = r0; + r0 = r2 >> 2; + heap32[(r3+1)] = r4; + r0 = heap32[(r0)]; + r0 = r0 >> 2; + r0 = heap32[(r0+12)]; + r3 = heap32[(fp+2)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r3; + __FUNCTION_TABLE__[(r0)>>2](i7); + return; +} + +function _ZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -32;var g0 = i7>>2; // save stack + r0 = _ZTVZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback; + r1 = sp + -16; + r0 = (r0 + 8)|0; + r2 = r1 >> 2; + r3 = heap32[(fp+1)]; + heap32[(fp+-4)] = r0; + r0 = heap32[(fp)]; + heap32[(r2+1)] = r3; + r3 = heap32[(fp+2)]; + heap32[(r2+2)] = r0; + r4 = r0 >> 2; + heap32[(r2+3)] = r3; + r2 = heap32[(r4)]; + r2 = r2 >> 2; + r2 = heap32[(r2+12)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r3; + __FUNCTION_TABLE__[(r2)>>2](i7); + return; +} + +function _ZN28btHashedOverlappingPairCacheD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV28btHashedOverlappingPairCache; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+16)]; +if(!(r1 ==0)) //_LBB133_4 +{ + r3 = heapU8[r0+68]; +if(!(r3 ==0)) //_LBB133_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+16)] = 0; +} + r1 = 1; + heap8[r0+68] = r1; + heap32[(r2+16)] = 0; + heap32[(r2+14)] = 0; + heap32[(r2+15)] = 0; + r3 = heap32[(r2+11)]; +if(!(r3 ==0)) //_LBB133_8 +{ + r4 = heapU8[r0+48]; +if(!(r4 ==0)) //_LBB133_7 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+11)] = 0; +} + heap8[r0+48] = r1; + heap32[(r2+11)] = 0; + heap32[(r2+9)] = 0; + heap32[(r2+10)] = 0; + r3 = heap32[(r2+4)]; +if(!(r3 ==0)) //_LBB133_12 +{ + r4 = heapU8[r0+20]; +if(!(r4 ==0)) //_LBB133_11 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+4)] = 0; +} + heap8[r0+20] = r1; + heap32[(r2+4)] = 0; + heap32[(r2+2)] = 0; + heap32[(r2+3)] = 0; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN28btHashedOverlappingPairCacheD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV28btHashedOverlappingPairCache; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+16)]; +if(!(r1 ==0)) //_LBB134_4 +{ + r3 = heapU8[r0+68]; +if(!(r3 ==0)) //_LBB134_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+16)] = 0; +} + r1 = 1; + heap8[r0+68] = r1; + heap32[(r2+16)] = 0; + heap32[(r2+14)] = 0; + heap32[(r2+15)] = 0; + r3 = heap32[(r2+11)]; +if(!(r3 ==0)) //_LBB134_8 +{ + r4 = heapU8[r0+48]; +if(!(r4 ==0)) //_LBB134_7 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+11)] = 0; +} + heap8[r0+48] = r1; + heap32[(r2+11)] = 0; + heap32[(r2+9)] = 0; + heap32[(r2+10)] = 0; + r3 = heap32[(r2+4)]; +if(!(r3 ==0)) //_LBB134_12 +{ + r4 = heapU8[r0+20]; +if(!(r4 ==0)) //_LBB134_11 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+4)] = 0; +} + heap8[r0+20] = r1; + heap32[(r2+4)] = 0; + heap32[(r2+2)] = 0; + heap32[(r2+3)] = 0; + return; +} + +function _ZN28btHashedOverlappingPairCache18addOverlappingPairEP17btBroadphaseProxyS1_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = gAddedPairs; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = heap32[(fp)]; + r1 = (r1 + 1)|0; + r3 = r2 >> 2; + heap32[(r0)] = r1; + r0 = heap32[(r3+6)]; + r1 = heap32[(fp+1)]; + r4 = heap32[(fp+2)]; + if(r0 ==0) //_LBB135_2 +{ + r0 = heapU16[(r4+6)>>1]; + r5 = heapU16[(r1+4)>>1]; + r0 = r0 & r5; + r0 = r0 & 65535; + if(r0 ==0) //_LBB135_25 +{ +__label__ = 23; +} +else{ + r0 = heapU16[(r1+6)>>1]; + r5 = heapU16[(r4+4)>>1]; + r0 = r0 & r5; + r0 = r0 & 65535; + r5 = 0; + r0 = r0 != r5; + r0 = r0 & 1; +__label__ = 4; +} +} +else{ + r5 = r0 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+2)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r4; + __FUNCTION_TABLE__[(r5)>>2](i7); + r0 = r_g0; +__label__ = 4; +} +if (__label__ == 4){ + r0 = r0 & 255; +if(!(r0 ==0)) //_LBB135_25 +{ + r0 = r1 >> 2; + r5 = r4 >> 2; + r0 = heap32[(r0+3)]; + r5 = heap32[(r5+3)]; + r6 = r0 > r5 ? r1 : r4; + r0 = r0 > r5 ? r4 : r1; + r1 = r6 >> 2; + r4 = heap32[(r1+3)]; + r5 = r0 >> 2; + r7 = heap32[(r5+3)]; + r8 = r4 << 16; + r8 = r8 | r7; + r9 = r8 << 15; + r9 = r9 ^ -1; + r8 = (r8 + r9)|0; + r9 = r8 >> 10; + r8 = r9 ^ r8; + r8 = (r8 * 9)|0; + r9 = r8 >> 6; + r8 = r9 ^ r8; + r9 = r8 << 11; + r9 = r9 ^ -1; + r8 = (r8 + r9)|0; + r9 = heap32[(r3+3)]; + r10 = r8 >> 16; + r8 = r10 ^ r8; + r10 = (r9 + -1)|0; + r10 = r8 & r10; + r11 = heap32[(r3+11)]; + r12 = r10 << 2; + r11 = (r11 + r12)|0; +_8: while(true){ + r11 = r11 >> 2; + r11 = heap32[(r11)]; + if(r11 ==-1) //_LBB135_14 +{ +__label__ = 13; +break _8; +} +else{ + r12 = heap32[(r3+4)]; + r13 = r11 << 4; + r12 = (r12 + r13)|0; + r13 = r12 >> 2; + r14 = heap32[(r13)]; + r14 = r14 >> 2; + r14 = heap32[(r14+3)]; +if(!(r14 !=r7)) //_LBB135_6 +{ + r13 = heap32[(r13+1)]; + r13 = r13 >> 2; + r13 = heap32[(r13+3)]; +if(!(r13 !=r4)) //_LBB135_6 +{ +__label__ = 10; +break _8; +} +} + r12 = heap32[(r3+16)]; + r11 = r11 << 2; + r11 = (r12 + r11)|0; +} +} +_14: do { +switch(__label__ ){//multiple entries +case 13: + r4 = heap32[(r3+2)]; +__label__ = 14; +break _14; +break; +case 10: + r4 = heap32[(r3+2)]; + if(r4 >r11) //_LBB135_12 +{ + if(r12 !=0) //_LBB135_24 +{ +__label__ = 22; +} +else{ +__label__ = 14; +} +} +else{ + r0 = _2E_str222; + r1 = _2E_str323; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 250; + _assert(i7); +} +break; +} +} while(0); +if (__label__ == 14){ + r12 = (r2 + 4)|0; + heap32[(g0)] = r12; + _ZN20btAlignedObjectArrayI16btBroadphasePairE21expandNonInitializingEv(i7); + r12 = r_g0; + r7 = heap32[(r3+18)]; +if(!(r7 ==0)) //_LBB135_17 +{ + r11 = r7 >> 2; + r11 = heap32[(r11)]; + r11 = r11 >> 2; + r11 = heap32[(r11+2)]; + heap32[(g0)] = r7; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r6; + __FUNCTION_TABLE__[(r11)>>2](i7); +} + r7 = heap32[(r3+3)]; + if(r9 =r1) //_LBB135_22 +{ + r1 = r12 >> 2; + heap32[(r1)] = r6; + heap32[(r1+1)] = r0; +} +else{ + r1 = r12 >> 2; + heap32[(r1)] = r0; + heap32[(r1+1)] = r6; +} + r0 = r12 >> 2; + heap32[(r0+2)] = 0; + heap32[(r0+3)] = 0; + r0 = r10 << 2; + r1 = heap32[(r3+11)]; + r1 = (r1 + r0)|0; + r1 = r1 >> 2; + r2 = r4 << 2; + r5 = heap32[(r3+16)]; + r2 = (r5 + r2)|0; + r1 = heap32[(r1)]; + r2 = r2 >> 2; + heap32[(r2)] = r1; + r1 = heap32[(r3+11)]; + r0 = (r1 + r0)|0; + r0 = r0 >> 2; + heap32[(r0)] = r4; +} + r_g0 = r12; + return; +} +} + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN28btHashedOverlappingPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = gRemovePairs; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+1)]; + r1 = (r1 + 1)|0; + r4 = r3 >> 2; + heap32[(r0)] = r1; + r0 = r2 >> 2; + r1 = heap32[(r4+3)]; + r0 = heap32[(r0+3)]; + r4 = r1 > r0 ? r3 : r2; + r0 = r1 > r0 ? r2 : r3; + r1 = r4 >> 2; + r1 = heap32[(r1+3)]; + r2 = r0 >> 2; + r2 = heap32[(r2+3)]; + r3 = r1 << 16; + r3 = r3 | r2; + r5 = r3 << 15; + r5 = r5 ^ -1; + r3 = (r3 + r5)|0; + r5 = r3 >> 10; + r3 = r5 ^ r3; + r3 = (r3 * 9)|0; + r5 = r3 >> 6; + r3 = r5 ^ r3; + r5 = r3 << 11; + r6 = heap32[(fp)]; + r5 = r5 ^ -1; + r7 = r6 >> 2; + r3 = (r3 + r5)|0; + r5 = r3 >> 16; + r8 = heap32[(r7+3)]; + r3 = r5 ^ r3; + r5 = (r8 + -1)|0; + r3 = r3 & r5; + r5 = heap32[(r7+11)]; + r3 = r3 << 2; + r8 = heap32[(fp+3)]; + r5 = (r5 + r3)|0; +_1: while(true){ + r5 = r5 >> 2; + r5 = heap32[(r5)]; + if(r5 ==-1) //_LBB136_35 +{ +__label__ = 33; +break _1; +} +else{ + r9 = heap32[(r7+4)]; + r10 = r5 << 4; + r9 = (r9 + r10)|0; + r10 = r9 >> 2; + r11 = heap32[(r10)]; + r11 = r11 >> 2; + r11 = heap32[(r11+3)]; +if(!(r11 !=r2)) //_LBB136_1 +{ + r11 = heap32[(r10+1)]; + r11 = r11 >> 2; + r11 = heap32[(r11+3)]; +if(!(r11 !=r1)) //_LBB136_1 +{ +__label__ = 5; +break _1; +} +} + r9 = heap32[(r7+16)]; + r5 = r5 << 2; + r5 = (r9 + r5)|0; +continue _1; +} +} +if (__label__ == 5){ + r11 = heap32[(r7+2)]; + if(r11 >r5) //_LBB136_7 +{ +if(!(r9 ==0)) //_LBB136_35 +{ + r5 = heap32[(r7)]; + r5 = r5 >> 2; + r5 = heap32[(r5+8)]; + heap32[(g0)] = r6; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r8; + __FUNCTION_TABLE__[(r5)>>2](i7); + r5 = heap32[(r10)]; + r5 = r5 >> 2; + r5 = heap32[(r5+3)]; + if(r5 ==r2) //_LBB136_10 +{ + r2 = heap32[(r10+1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+3)]; + if(r2 ==r1) //_LBB136_12 +{ + r1 = heap32[(r7+4)]; + r1 = (r9 - r1)|0; + r1 = r1 >> 4; + r2 = heap32[(r7+2)]; + if(r2 >r1) //_LBB136_14 +{ + r2 = heap32[(r7+11)]; + r2 = (r2 + r3)|0; + r2 = r2 >> 2; + r3 = heap32[(r2)]; + if(r3 ==-1) //_LBB136_17 +{ + r0 = _2E_str727; + r1 = _2E_str121; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 304; + _assert(i7); +} +else{ + r5 = heap32[(r10+3)]; + r6 = heap32[(r7+16)]; + if(r3 ==r1) //_LBB136_21 +{ +__label__ = 20; +} +else{ +_22: while(true){ + r9 = r3; + r3 = r9 << 2; + r3 = (r6 + r3)|0; + r10 = r3 >> 2; + r3 = heap32[(r10)]; +if(!(r3 !=r1)) //_LBB136_18 +{ +break _22; +} +} + if(r9 ==-1) //_LBB136_21 +{ +__label__ = 20; +} +else{ + r2 = r1 << 2; + r2 = (r6 + r2)|0; + r2 = r2 >> 2; + r2 = heap32[(r2)]; + heap32[(r10)] = r2; +__label__ = 21; +} +} +if (__label__ == 20){ + r3 = r1 << 2; + r3 = (r6 + r3)|0; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(r2)] = r3; +} + r2 = heap32[(r7+2)]; + r3 = heap32[(r7+18)]; +if(!(r3 ==0)) //_LBB136_24 +{ + r6 = r3 >> 2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+3)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r8; + __FUNCTION_TABLE__[(r6)>>2](i7); +} + r0 = (r2 + -1)|0; + if(r0 !=r1) //_LBB136_26 +{ + r3 = heap32[(r7+4)]; + r4 = r2 << 4; + r3 = (r3 + r4)|0; + r3 = r3 >> 2; + r6 = heap32[(r3+-3)]; + r3 = heap32[(r3+-4)]; + r6 = r6 >> 2; + r3 = r3 >> 2; + r6 = heap32[(r6+3)]; + r3 = heap32[(r3+3)]; + r6 = r6 << 16; + r3 = r3 | r6; + r6 = r3 << 15; + r6 = r6 ^ -1; + r3 = (r3 + r6)|0; + r6 = r3 >> 10; + r3 = r6 ^ r3; + r3 = (r3 * 9)|0; + r6 = r3 >> 6; + r3 = r6 ^ r3; + r6 = r3 << 11; + r6 = r6 ^ -1; + r3 = (r3 + r6)|0; + r6 = r3 >> 16; + r8 = heap32[(r7+3)]; + r3 = r6 ^ r3; + r6 = (r8 + -1)|0; + r3 = r3 & r6; + r6 = heap32[(r7+11)]; + r3 = r3 << 2; + r6 = (r6 + r3)|0; + r6 = r6 >> 2; + r8 = heap32[(r6)]; + if(r8 ==-1) //_LBB136_29 +{ + r0 = _2E_str727; + r1 = _2E_str121; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 345; + _assert(i7); +} +else{ + r9 = heap32[(r7+16)]; + if(r8 ==r0) //_LBB136_33 +{ +__label__ = 31; +} +else{ +_38: while(true){ + r10 = r8; + r8 = r10 << 2; + r8 = (r9 + r8)|0; + r11 = r8 >> 2; + r8 = heap32[(r11)]; +if(!(r8 !=r0)) //_LBB136_30 +{ +break _38; +} +} + if(r10 ==-1) //_LBB136_33 +{ +__label__ = 31; +} +else{ + r2 = r2 << 2; + r2 = (r9 + r2)|0; + r2 = r2 >> 2; + r2 = heap32[(r2+-1)]; + heap32[(r11)] = r2; +__label__ = 32; +} +} +if (__label__ == 31){ + r0 = r2 << 2; + r0 = (r9 + r0)|0; + r0 = r0 >> 2; + r0 = heap32[(r0+-1)]; + heap32[(r6)] = r0; +} + r0 = heap32[(r7+4)]; + r2 = (r0 + r4)|0; + r4 = r1 << 4; + r2 = r2 >> 2; + r0 = (r0 + r4)|0; + r4 = heap32[(r2+-4)]; + r0 = r0 >> 2; + heap32[(r0)] = r4; + r4 = heap32[(r2+-3)]; + heap32[(r0+1)] = r4; + r4 = heap32[(r2+-2)]; + heap32[(r0+2)] = r4; + r2 = heap32[(r2+-1)]; + heap32[(r0+3)] = r2; + r0 = heap32[(r7+11)]; + r0 = (r0 + r3)|0; + r0 = r0 >> 2; + r2 = r1 << 2; + r4 = heap32[(r7+16)]; + r2 = (r4 + r2)|0; + r0 = heap32[(r0)]; + r2 = r2 >> 2; + heap32[(r2)] = r0; + r0 = heap32[(r7+11)]; + r0 = (r0 + r3)|0; + r0 = r0 >> 2; + heap32[(r0)] = r1; +} +} + r0 = heap32[(r7+2)]; + r0 = (r0 + -1)|0; + heap32[(r7+2)] = r0; + r_g0 = r5; + return; +} +} +else{ + r0 = _2E_str626; + r1 = _2E_str121; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 300; + _assert(i7); +} +} +else{ + r0 = _2E_str525; + r3 = _2E_str121; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = 297; + _assert(i7); +} +} +else{ + r0 = _2E_str424; + r1 = _2E_str121; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 296; + _assert(i7); +} +} +} +else{ + r0 = _2E_str222; + r1 = _2E_str323; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 250; + _assert(i7); +} +} + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN28btHashedOverlappingPairCache8findPairEP17btBroadphaseProxyS1_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = gFindPairs; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = heap32[(fp+1)]; + r3 = heap32[(fp+2)]; + r1 = (r1 + 1)|0; + r4 = r2 >> 2; + heap32[(r0)] = r1; + r0 = r3 >> 2; + r1 = heap32[(r4+3)]; + r0 = heap32[(r0+3)]; + r4 = r1 > r0 ? r2 : r3; + r0 = r1 > r0 ? r3 : r2; + r1 = r4 >> 2; + r1 = heap32[(r1+3)]; + r0 = r0 >> 2; + r0 = heap32[(r0+3)]; + r2 = r1 << 16; + r2 = r2 | r0; + r3 = r2 << 15; + r3 = r3 ^ -1; + r2 = (r2 + r3)|0; + r3 = r2 >> 10; + r2 = r3 ^ r2; + r2 = (r2 * 9)|0; + r3 = r2 >> 6; + r2 = r3 ^ r2; + r3 = r2 << 11; + r4 = heap32[(fp)]; + r3 = r3 ^ -1; + r4 = r4 >> 2; + r2 = (r2 + r3)|0; + r3 = r2 >> 16; + r5 = heap32[(r4+3)]; + r2 = r3 ^ r2; + r3 = (r5 + -1)|0; + r2 = r2 & r3; + r3 = heap32[(r4+9)]; +_1: do { +if(!(r3 <=r2)) //_LBB137_9 +{ + r3 = heap32[(r4+11)]; + r2 = r2 << 2; + r2 = (r3 + r2)|0; +_3: while(true){ + r2 = r2 >> 2; + r2 = heap32[(r2)]; + if(r2 ==-1) //_LBB137_9 +{ +break _1; +} +else{ + r3 = heap32[(r4+4)]; + r5 = r2 << 4; + r3 = (r3 + r5)|0; + r5 = r3 >> 2; + r6 = heap32[(r5)]; + r6 = r6 >> 2; + r6 = heap32[(r6+3)]; +if(!(r6 !=r0)) //_LBB137_2 +{ + r5 = heap32[(r5+1)]; + r5 = r5 >> 2; + r5 = heap32[(r5+3)]; +if(!(r5 !=r1)) //_LBB137_2 +{ +break _3; +} +} + r3 = heap32[(r4+16)]; + r2 = r2 << 2; + r2 = (r3 + r2)|0; +} +} + r0 = heap32[(r4+2)]; + if(r0 >r2) //_LBB137_8 +{ + r_g0 = r3; + return; +} +else{ + r3 = _2E_str222; + r0 = _2E_str121; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = 165; + _assert(i7); +} +} +} while(0); + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN28btHashedOverlappingPairCache20sortOverlappingPairsEP12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; +var __label__ = 0; + i7 = sp + -40;var g0 = i7>>2; // save stack + r0 = sp + -24; + r1 = 1; + r2 = r0 >> 2; + heap8[sp+-8] = r1; + heap32[(r2+3)] = 0; + r3 = heap32[(fp)]; + heap32[(r2+1)] = 0; + r4 = r3 >> 2; + heap32[(r2+2)] = 0; + r5 = heap32[(r4+2)]; +_1: do { + if(r5 >0) //_LBB138_2 +{ + r6 = heap32[(fp+1)]; + r7 = 0; + r5 = r7; +_3: while(true){ + r8 = heap32[(r4+4)]; + if(r7 ==r5) //_LBB138_5 +{ + r9 = 1; + r10 = r5 << 1; + r10 = r5 == 0 ? r9 : r10; +if(!(r7 >=r10)) //_LBB138_4 +{ + if(r10 !=0) //_LBB138_8 +{ + r7 = gNumAlignedAllocs; + r7 = r7 >> 2; + r11 = heap32[(r7)]; + r12 = r10 << 4; + r11 = (r11 + 1)|0; + r12 = r12 | 3; + heap32[(r7)] = r11; + r7 = (r12 + 16)|0; + heap32[(g0)] = r7; + malloc(i7); + r7 = r_g0; + if(r7 !=0) //_LBB138_10 +{ + r11 = 0; + r12 = (r7 + 4)|0; + r11 = (r11 - r12)|0; + r11 = r11 & 15; + r11 = (r7 + r11)|0; + r12 = (r11 + 4)|0; + r11 = r11 >> 2; + heap32[(r11)] = r7; + r7 = r12; +} +} +else{ + r7 = 0; +} + if(r5 <1) //_LBB138_13 +{ + r13 = heap32[(r2+3)]; +} +else{ + r11 = 0; + r12 = (r11 - r5)|0; +_16: while(true){ + r13 = heap32[(r2+3)]; + r14 = r11 << 4; + r15 = (r13 - r14)|0; + r15 = r15 >> 2; + r14 = (r7 - r14)|0; + r16 = heap32[(r15)]; + r14 = r14 >> 2; + heap32[(r14)] = r16; + r16 = heap32[(r15+1)]; + heap32[(r14+1)] = r16; + r16 = heap32[(r15+2)]; + heap32[(r14+2)] = r16; + r15 = heap32[(r15+3)]; + r11 = (r11 + -1)|0; + heap32[(r14+3)] = r15; +if(!(r12 !=r11)) //_LBB138_14 +{ +break _16; +} +} +} + if(r13 !=0) //_LBB138_17 +{ + r11 = heapU8[sp+-8]; + if(r11 !=0) //_LBB138_19 +{ + r5 = gNumAlignedFree; + r5 = r5 >> 2; + r11 = heap32[(r5)]; + r11 = (r11 + 1)|0; + r12 = r13 >> 2; + heap32[(r5)] = r11; + r5 = heap32[(r12+-1)]; + heap32[(g0)] = r5; + free(i7); + r5 = heap32[(r2+1)]; +} + heap32[(r2+3)] = 0; +} + heap8[sp+-8] = r9; + heap32[(r2+3)] = r7; + heap32[(r2+2)] = r10; +} +} + r7 = r1 << 4; + r7 = (r8 + r7)|0; + r7 = r7 >> 2; + r5 = r5 << 4; + r8 = heap32[(r2+3)]; + r5 = (r8 + r5)|0; + r8 = heap32[(r7+-4)]; + r5 = r5 >> 2; + heap32[(r5)] = r8; + r8 = heap32[(r7+-3)]; + heap32[(r5+1)] = r8; + r8 = heap32[(r7+-2)]; + heap32[(r5+2)] = r8; + r7 = heap32[(r7+-1)]; + heap32[(r5+3)] = r7; + r5 = heap32[(r2+1)]; + r5 = (r5 + 1)|0; + heap32[(r2+1)] = r5; + r7 = heap32[(r4+2)]; + if(r7 <=r1) //_LBB138_24 +{ +break _3; +} +else{ + r7 = heap32[(r2+2)]; + r1 = (r1 + 1)|0; +} +} + if(r5 >0) //_LBB138_26 +{ + r1 = 0; +_29: while(true){ + r5 = heap32[(r2+3)]; + r7 = r1 << 4; + r8 = heap32[(r4)]; + r5 = (r5 + r7)|0; + r5 = r5 >> 2; + r7 = r8 >> 2; + r7 = heap32[(r7+3)]; + r8 = heap32[(r5+1)]; + r5 = heap32[(r5)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r6; + __FUNCTION_TABLE__[(r7)>>2](i7); + r5 = heap32[(r2+1)]; + r1 = (r1 + 1)|0; + if(r5 >r1) //_LBB138_27 +{ +continue _29; +} +else{ +break _1; +} +} +} +} +else{ + r5 = 0; +} +} while(0); + r1 = heap32[(r4+14)]; + if(r1 >0) //_LBB138_30 +{ + r5 = 0; +_35: while(true){ + r1 = r5 << 2; + r6 = heap32[(r4+16)]; + r1 = (r6 + r1)|0; + r5 = (r5 + 1)|0; + r1 = r1 >> 2; + heap32[(r1)] = -1; + r1 = heap32[(r4+14)]; +if(!(r1 >r5)) //_LBB138_31 +{ +break _35; +} +} + r5 = heap32[(r2+1)]; +} + if(r5 >1) //_LBB138_35 +{ + r5 = (r5 + -1)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = r5; + _ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(i7); + r5 = heap32[(r2+1)]; +} +_42: do { +if(!(r5 <1)) //_LBB138_39 +{ + r0 = 0; +_44: while(true){ + r1 = heap32[(r2+3)]; + r5 = r0 << 4; + r6 = heap32[(r4)]; + r1 = (r1 + r5)|0; + r1 = r1 >> 2; + r5 = r6 >> 2; + r5 = heap32[(r5+2)]; + r6 = heap32[(r1+1)]; + r1 = heap32[(r1)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r6; + r0 = (r0 + 1)|0; + __FUNCTION_TABLE__[(r5)>>2](i7); + r1 = heap32[(r2+1)]; + if(r1 >r0) //_LBB138_38 +{ +continue _44; +} +else{ +break _42; +} +} +} +} while(0); + r0 = heap32[(r2+3)]; +if(!(r0 ==0)) //_LBB138_42 +{ + r1 = heapU8[sp+-8]; +if(!(r1 ==0)) //_LBB138_42 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r2 = heap32[(r1)]; + r2 = (r2 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r2; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} +} + return; +} + +function _ZN20btAlignedObjectArrayI16btBroadphasePairE21expandNonInitializingEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+2)]; + r3 = heap32[(r1+1)]; + if(r2 ==r3) //_LBB139_2 +{ + r4 = 1; + r5 = r3 << 1; + r5 = r3 == 0 ? r4 : r5; + if(r2 >=r5) //_LBB139_1 +{ +__label__ = 1; +} +else{ + if(r5 !=0) //_LBB139_5 +{ + r2 = gNumAlignedAllocs; + r2 = r2 >> 2; + r6 = heap32[(r2)]; + r7 = r5 << 4; + r6 = (r6 + 1)|0; + r7 = r7 | 3; + heap32[(r2)] = r6; + r2 = (r7 + 16)|0; + heap32[(g0)] = r2; + malloc(i7); + r6 = r_g0; + if(r6 !=0) //_LBB139_7 +{ + r2 = 0; + r7 = (r6 + 4)|0; + r2 = (r2 - r7)|0; + r2 = r2 & 15; + r2 = (r6 + r2)|0; + r7 = (r2 + 4)|0; + r2 = r2 >> 2; + heap32[(r2)] = r6; + r6 = r7; +} +} +else{ + r6 = 0; +} + r7 = (r0 + 12)|0; + if(r3 <1) //_LBB139_10 +{ + r2 = r7 >> 2; + r9 = heap32[(r2)]; +} +else{ + r2 = 0; + r8 = (r2 - r3)|0; +_12: while(true){ + r9 = r7 >> 2; + r9 = heap32[(r9)]; + r10 = r2 << 4; + r11 = (r9 - r10)|0; + r11 = r11 >> 2; + r10 = (r6 - r10)|0; + r12 = heap32[(r11)]; + r10 = r10 >> 2; + heap32[(r10)] = r12; + r12 = heap32[(r11+1)]; + heap32[(r10+1)] = r12; + r12 = heap32[(r11+2)]; + heap32[(r10+2)] = r12; + r11 = heap32[(r11+3)]; + r2 = (r2 + -1)|0; + heap32[(r10+3)] = r11; +if(!(r8 !=r2)) //_LBB139_11 +{ +break _12; +} +} + r7 = (r0 + 12)|0; +} + if(r9 !=0) //_LBB139_15 +{ + r2 = heapU8[r0+16]; + if(r2 !=0) //_LBB139_17 +{ + r2 = gNumAlignedFree; + r2 = r2 >> 2; + r8 = heap32[(r2)]; + r8 = (r8 + 1)|0; + r9 = r9 >> 2; + heap32[(r2)] = r8; + r2 = heap32[(r9+-1)]; + heap32[(g0)] = r2; + free(i7); + r2 = heap32[(r1+1)]; +} +else{ + r2 = r3; +} + r8 = r7 >> 2; + heap32[(r8)] = 0; +} +else{ + r2 = r3; +} + r7 = r7 >> 2; + heap8[r0+16] = r4; + heap32[(r7)] = r6; + heap32[(r1+2)] = r5; +__label__ = 19; +} +} +else{ +__label__ = 1; +} +if (__label__ == 1){ + r2 = r3; +} + r0 = (r2 + 1)|0; + heap32[(r1+1)] = r0; + r0 = heap32[(r1+3)]; + r1 = r3 << 4; + r0 = (r0 + r1)|0; + r_g0 = r0; + return; +} + +function _ZN28btHashedOverlappingPairCache10growTablesEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+9)]; + r3 = heap32[(r1+3)]; +_1: do { +if(!(r2 >=r3)) //_LBB140_48 +{ +_3: do { +if(!(r2 >r3)) //_LBB140_20 +{ + r4 = heap32[(r1+10)]; +if(!(r4 >=r3)) //_LBB140_18 +{ + if(r3 !=0) //_LBB140_5 +{ + r4 = gNumAlignedAllocs; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r6 = r3 << 2; + r5 = (r5 + 1)|0; + r6 = r6 | 3; + heap32[(r4)] = r5; + r4 = (r6 + 16)|0; + heap32[(g0)] = r4; + malloc(i7); + r4 = r_g0; + if(r4 !=0) //_LBB140_7 +{ + r5 = 0; + r6 = (r4 + 4)|0; + r5 = (r5 - r6)|0; + r5 = r5 & 15; + r5 = (r4 + r5)|0; + r6 = (r5 + 4)|0; + r5 = r5 >> 2; + heap32[(r5)] = r4; + r4 = r6; +} +} +else{ + r4 = 0; +} + r5 = (r0 + 44)|0; + if(r2 <1) //_LBB140_10 +{ + r6 = r5 >> 2; + r7 = heap32[(r6)]; +} +else{ + r6 = 0; +_15: while(true){ + r7 = r5 >> 2; + r7 = heap32[(r7)]; + r8 = r6 << 2; + r9 = (r7 + r8)|0; + r9 = r9 >> 2; + r8 = (r4 + r8)|0; + r9 = heap32[(r9)]; + r6 = (r6 + 1)|0; + r8 = r8 >> 2; + heap32[(r8)] = r9; +if(!(r2 !=r6)) //_LBB140_11 +{ +break _15; +} +} + r5 = (r0 + 44)|0; +} +if(!(r7 ==0)) //_LBB140_17 +{ + r6 = heapU8[r0+48]; +if(!(r6 ==0)) //_LBB140_16 +{ + r6 = gNumAlignedFree; + r6 = r6 >> 2; + r8 = heap32[(r6)]; + r8 = (r8 + 1)|0; + r7 = r7 >> 2; + heap32[(r6)] = r8; + r6 = heap32[(r7+-1)]; + heap32[(g0)] = r6; + free(i7); +} + r6 = r5 >> 2; + heap32[(r6)] = 0; +} + r6 = 1; + r5 = r5 >> 2; + heap8[r0+48] = r6; + heap32[(r5)] = r4; + heap32[(r1+10)] = r3; +} + r4 = r2; +_26: while(true){ + r5 = r4 << 2; + r6 = heap32[(r1+11)]; + r5 = (r6 + r5)|0; + r4 = (r4 + 1)|0; + r5 = r5 >> 2; + heap32[(r5)] = 0; +if(!(r3 !=r4)) //_LBB140_19 +{ +break _3; +} +} +} +} while(0); + heap32[(r1+9)] = r3; + r4 = heap32[(r1+14)]; +_29: do { +if(!(r4 >r3)) //_LBB140_39 +{ +if(!(r4 >=r3)) //_LBB140_39 +{ + r5 = heap32[(r1+15)]; +if(!(r5 >=r3)) //_LBB140_38 +{ + if(r3 !=0) //_LBB140_25 +{ + r5 = gNumAlignedAllocs; + r5 = r5 >> 2; + r6 = heap32[(r5)]; + r7 = r3 << 2; + r6 = (r6 + 1)|0; + r7 = r7 | 3; + heap32[(r5)] = r6; + r5 = (r7 + 16)|0; + heap32[(g0)] = r5; + malloc(i7); + r5 = r_g0; + if(r5 !=0) //_LBB140_27 +{ + r6 = 0; + r7 = (r5 + 4)|0; + r6 = (r6 - r7)|0; + r6 = r6 & 15; + r6 = (r5 + r6)|0; + r7 = (r6 + 4)|0; + r6 = r6 >> 2; + heap32[(r6)] = r5; + r5 = r7; +} +} +else{ + r5 = 0; +} + r6 = (r0 + 64)|0; + if(r4 <1) //_LBB140_30 +{ + r7 = r6 >> 2; + r8 = heap32[(r7)]; +} +else{ + r7 = 0; +_42: while(true){ + r8 = r6 >> 2; + r8 = heap32[(r8)]; + r9 = r7 << 2; + r10 = (r8 + r9)|0; + r10 = r10 >> 2; + r9 = (r5 + r9)|0; + r10 = heap32[(r10)]; + r7 = (r7 + 1)|0; + r9 = r9 >> 2; + heap32[(r9)] = r10; +if(!(r4 !=r7)) //_LBB140_31 +{ +break _42; +} +} + r6 = (r0 + 64)|0; +} +if(!(r8 ==0)) //_LBB140_37 +{ + r7 = heapU8[r0+68]; +if(!(r7 ==0)) //_LBB140_36 +{ + r7 = gNumAlignedFree; + r7 = r7 >> 2; + r9 = heap32[(r7)]; + r9 = (r9 + 1)|0; + r8 = r8 >> 2; + heap32[(r7)] = r9; + r7 = heap32[(r8+-1)]; + heap32[(g0)] = r7; + free(i7); +} + r7 = r6 >> 2; + heap32[(r7)] = 0; +} + r7 = 1; + r6 = r6 >> 2; + heap8[r0+68] = r7; + heap32[(r6)] = r5; + heap32[(r1+15)] = r3; + if(r4 >=r3) //_LBB140_39 +{ +break _29; +} +} +_52: while(true){ + r0 = r4 << 2; + r5 = heap32[(r1+16)]; + r0 = (r5 + r0)|0; + r4 = (r4 + 1)|0; + r0 = r0 >> 2; + heap32[(r0)] = 0; +if(!(r3 !=r4)) //_LBB140_38 +{ +break _29; +} +} +} +} +} while(0); + heap32[(r1+14)] = r3; +_55: do { +if(!(r3 <1)) //_LBB140_45 +{ + r0 = 0; +_57: while(true){ + r4 = r0 << 2; + r5 = heap32[(r1+11)]; + r4 = (r5 + r4)|0; + r0 = (r0 + 1)|0; + r4 = r4 >> 2; + heap32[(r4)] = -1; +if(!(r3 !=r0)) //_LBB140_41 +{ +break _57; +} +} +if(!(r3 <1)) //_LBB140_45 +{ + r0 = 0; +_61: while(true){ + r4 = r0 << 2; + r5 = heap32[(r1+16)]; + r4 = (r5 + r4)|0; + r0 = (r0 + 1)|0; + r4 = r4 >> 2; + heap32[(r4)] = -1; +if(!(r3 !=r0)) //_LBB140_44 +{ +break _55; +} +} +} +} +} while(0); +if(!(r2 <1)) //_LBB140_48 +{ + r0 = 0; +_65: while(true){ + r3 = heap32[(r1+4)]; + r4 = r0 << 4; + r3 = (r3 + r4)|0; + r3 = r3 >> 2; + r4 = heap32[(r3+1)]; + r3 = heap32[(r3)]; + r4 = r4 >> 2; + r3 = r3 >> 2; + r4 = heap32[(r4+3)]; + r4 = r4 << 16; + r3 = heap32[(r3+3)]; + r3 = r4 | r3; + r4 = r3 << 15; + r4 = r4 ^ -1; + r3 = (r3 + r4)|0; + r4 = r3 >> 10; + r3 = r4 ^ r3; + r3 = (r3 * 9)|0; + r4 = r3 >> 6; + r3 = r4 ^ r3; + r4 = r3 << 11; + r4 = r4 ^ -1; + r3 = (r3 + r4)|0; + r4 = r3 >> 16; + r5 = heap32[(r1+3)]; + r3 = r4 ^ r3; + r4 = (r5 + -1)|0; + r3 = r3 & r4; + r3 = r3 << 2; + r4 = heap32[(r1+11)]; + r4 = (r4 + r3)|0; + r4 = r4 >> 2; + r5 = r0 << 2; + r6 = heap32[(r1+16)]; + r5 = (r6 + r5)|0; + r4 = heap32[(r4)]; + r5 = r5 >> 2; + heap32[(r5)] = r4; + r4 = heap32[(r1+11)]; + r3 = (r4 + r3)|0; + r4 = (r0 + 1)|0; + r3 = r3 >> 2; + heap32[(r3)] = r0; + r0 = r4; + if(r2 !=r4) //_LBB140_47 +{ +continue _65; +} +else{ +break _1; +} +} +} +} +} while(0); + return; +} + +function _ZN28btHashedOverlappingPairCacheC1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV28btHashedOverlappingPairCache; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + r3 = 1; + heap32[(r2)] = r1; + heap8[r0+20] = r3; + heap32[(r2+4)] = 0; + heap32[(r2+2)] = 0; + heap32[(r2+3)] = 0; + r1 = 0; + heap32[(r2+6)] = 0; + heap8[r0+28] = r1; + heap8[r0+48] = r3; + heap32[(r2+11)] = 0; + heap32[(r2+9)] = 0; + heap32[(r2+10)] = 0; + heap8[r0+68] = r3; + heap32[(r2+16)] = 0; + heap32[(r2+14)] = 0; + r4 = gNumAlignedAllocs; + heap32[(r2+15)] = 0; + r4 = r4 >> 2; + heap32[(r2+18)] = 0; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + heap32[(r4)] = r5; + heap32[(g0)] = 51; + malloc(i7); + r4 = r_g0; + if(r4 !=0) //_LBB141_2 +{ + r5 = (r4 + 4)|0; + r1 = (r1 - r5)|0; + r1 = r1 & 15; + r1 = (r4 + r1)|0; + r5 = (r1 + 4)|0; + r1 = r1 >> 2; + heap32[(r1)] = r4; + r4 = r5; +} + heap8[r0+20] = r3; + heap32[(r2+4)] = r4; + heap32[(r2+3)] = 2; + heap32[(g0)] = r0; + _ZN28btHashedOverlappingPairCache10growTablesEv(i7); + return; +} + +function _ZNK14btQuantizedBvh31calculateSerializeBufferSizeNewEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 84; + r_g0 = r0; + return; +} + +function _ZNK14btQuantizedBvh9serializeEPvP12btSerializer(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r0 = r0 >> 2; + r2 = r1 >> 2; + heap32[(r0+4)] = heap32[(r2+5)]; + heap32[(r0+5)] = heap32[(r2+6)]; + heap32[(r0+6)] = heap32[(r2+7)]; + heap32[(r0+7)] = heap32[(r2+8)]; + heap32[(r0)] = heap32[(r2+1)]; + heap32[(r0+1)] = heap32[(r2+2)]; + heap32[(r0+2)] = heap32[(r2+3)]; + heap32[(r0+3)] = heap32[(r2+4)]; + heap32[(r0+8)] = heap32[(r2+9)]; + heap32[(r0+9)] = heap32[(r2+10)]; + heap32[(r0+10)] = heap32[(r2+11)]; + heap32[(r0+11)] = heap32[(r2+12)]; + r3 = heap32[(r2+14)]; + heap32[(r0+12)] = r3; + r1 = heapU8[r1+60]; + heap32[(r0+13)] = r1; + r1 = heap32[(r2+22)]; + r3 = heap32[(fp+2)]; + heap32[(r0+14)] = r1; + r1 = heap32[(r2+22)]; + if(r1 !=0) //_LBB143_2 +{ + r1 = r3 >> 2; + r4 = heap32[(r1)]; + r4 = r4 >> 2; + r4 = heap32[(r4+7)]; + r5 = heap32[(r2+24)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r5; + __FUNCTION_TABLE__[(r4)>>2](i7); + r4 = r_g0; + heap32[(r0+16)] = r4; +if(!(r4 ==0)) //_LBB143_7 +{ + r4 = heap32[(r1)]; + r4 = r4 >> 2; + r5 = heap32[(r2+22)]; + r4 = heap32[(r4+4)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = 48; + heap32[(g0+2)] = r5; + __FUNCTION_TABLE__[(r4)>>2](i7); + r4 = r_g0; +if(!(r5 <1)) //_LBB143_6 +{ + r6 = r4 >> 2; + r7 = 0; + r6 = heap32[(r6+2)]; + r5 = (r7 - r5)|0; +_6: while(true){ + r8 = (r7 * -12)|0; + r8 = r8 << 2; + r9 = r7 << 6; + r10 = heap32[(r2+24)]; + r8 = (r6 + r8)|0; + r10 = (r10 - r9)|0; + r8 = r8 >> 2; + r10 = r10 >> 2; + heap32[(r8+4)] = heap32[(r10+4)]; + heap32[(r8+5)] = heap32[(r10+5)]; + heap32[(r8+6)] = heap32[(r10+6)]; + heap32[(r8+7)] = heap32[(r10+7)]; + r10 = heap32[(r2+24)]; + r10 = (r10 - r9)|0; + r10 = r10 >> 2; + heap32[(r8)] = heap32[(r10)]; + heap32[(r8+1)] = heap32[(r10+1)]; + heap32[(r8+2)] = heap32[(r10+2)]; + heap32[(r8+3)] = heap32[(r10+3)]; + r10 = heap32[(r2+24)]; + r10 = (r10 - r9)|0; + r10 = r10 >> 2; + r10 = heap32[(r10+8)]; + heap32[(r8+8)] = r10; + r10 = heap32[(r2+24)]; + r10 = (r10 - r9)|0; + r10 = r10 >> 2; + r10 = heap32[(r10+9)]; + heap32[(r8+9)] = r10; + r10 = heap32[(r2+24)]; + r9 = (r10 - r9)|0; + r9 = r9 >> 2; + r9 = heap32[(r9+10)]; + r7 = (r7 + -1)|0; + heap32[(r8+10)] = r9; +if(!(r5 !=r7)) //_LBB143_5 +{ +break _6; +} +} +} + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + r5 = heap32[(r2+24)]; + r6 = _2E_str32; + heap32[(g0)] = r3; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r6; + heap32[(g0+3)] = 1497453121; + heap32[(g0+4)] = r5; + __FUNCTION_TABLE__[(r1)>>2](i7); +} +} +else{ + heap32[(r0+16)] = 0; +} + r1 = heap32[(r2+32)]; + heap32[(r0+15)] = r1; + r1 = heap32[(r2+32)]; + if(r1 !=0) //_LBB143_9 +{ + r1 = r3 >> 2; + r4 = heap32[(r1)]; + r4 = r4 >> 2; + r4 = heap32[(r4+7)]; + r5 = heap32[(r2+34)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r5; + __FUNCTION_TABLE__[(r4)>>2](i7); + r4 = r_g0; + heap32[(r0+17)] = r4; +if(!(r4 ==0)) //_LBB143_14 +{ + r4 = heap32[(r1)]; + r4 = r4 >> 2; + r5 = heap32[(r2+32)]; + r4 = heap32[(r4+4)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = 16; + heap32[(g0+2)] = r5; + __FUNCTION_TABLE__[(r4)>>2](i7); + r4 = r_g0; +_14: do { +if(!(r5 <1)) //_LBB143_13 +{ + r6 = r4 >> 2; + r7 = 0; + r6 = heap32[(r6+2)]; + r5 = (r7 - r5)|0; +_16: while(true){ + r8 = r7 << 4; + r9 = heap32[(r2+34)]; + r9 = (r9 - r8)|0; + r9 = r9 >> 2; + r10 = (r6 - r8)|0; + r9 = heap32[(r9+3)]; + r11 = r10 >> 2; + heap32[(r11+3)] = r9; + r9 = heap32[(r2+34)]; + r9 = (r9 - r8)|0; + r9 = heapU16[(r9+6)>>1]; + heap16[(r10+6)>>1] = r9; + r9 = heap32[(r2+34)]; + r9 = (r9 - r8)|0; + r9 = heapU16[(r9+8)>>1]; + heap16[(r10+8)>>1] = r9; + r9 = heap32[(r2+34)]; + r9 = (r9 - r8)|0; + r9 = heapU16[(r9+10)>>1]; + heap16[(r10+10)>>1] = r9; + r9 = heap32[(r2+34)]; + r9 = (r9 - r8)|0; + r9 = heapU16[(r9)>>1]; + heap16[(r10)>>1] = r9; + r9 = heap32[(r2+34)]; + r9 = (r9 - r8)|0; + r9 = heapU16[(r9+2)>>1]; + heap16[(r10+2)>>1] = r9; + r9 = heap32[(r2+34)]; + r8 = (r9 - r8)|0; + r8 = heapU16[(r8+4)>>1]; + r7 = (r7 + -1)|0; + heap16[(r10+4)>>1] = r8; +if(!(r5 !=r7)) //_LBB143_12 +{ +break _14; +} +} +} +} while(0); + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + r5 = heap32[(r2+34)]; + r6 = _2E_str133; + heap32[(g0)] = r3; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r6; + heap32[(g0+3)] = 1497453121; + heap32[(g0+4)] = r5; + __FUNCTION_TABLE__[(r1)>>2](i7); +} +} +else{ + heap32[(r0+17)] = 0; +} + r1 = heap32[(r2+36)]; + heap32[(r0+19)] = r1; + r1 = heap32[(r2+38)]; + heap32[(r0+20)] = r1; + r1 = heap32[(r2+38)]; + if(r1 !=0) //_LBB143_16 +{ + r1 = r3 >> 2; + r4 = heap32[(r1)]; + r4 = r4 >> 2; + r4 = heap32[(r4+7)]; + r5 = heap32[(r2+40)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r5; + __FUNCTION_TABLE__[(r4)>>2](i7); + r4 = r_g0; + heap32[(r0+18)] = r4; +if(!(r4 ==0)) //_LBB143_21 +{ + r0 = heap32[(r1)]; + r0 = r0 >> 2; + r4 = heap32[(r2+38)]; + r0 = heap32[(r0+4)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = 20; + heap32[(g0+2)] = r4; + __FUNCTION_TABLE__[(r0)>>2](i7); + r0 = r_g0; +_24: do { +if(!(r4 <1)) //_LBB143_20 +{ + r5 = r0 >> 2; + r6 = 0; + r5 = heap32[(r5+2)]; + r4 = (r6 - r4)|0; +_26: while(true){ + r7 = r6 << 5; + r8 = heap32[(r2+40)]; + r9 = (r6 * -10)|0; + r8 = (r8 - r7)|0; + r8 = heapU16[(r8+6)>>1]; + r9 = r9 << 1; + r9 = (r5 + r9)|0; + heap16[(r9+14)>>1] = r8; + r8 = heap32[(r2+40)]; + r8 = (r8 - r7)|0; + r8 = heapU16[(r8+8)>>1]; + heap16[(r9+16)>>1] = r8; + r8 = heap32[(r2+40)]; + r8 = (r8 - r7)|0; + r8 = heapU16[(r8+10)>>1]; + heap16[(r9+18)>>1] = r8; + r8 = heap32[(r2+40)]; + r8 = (r8 - r7)|0; + r8 = heapU16[(r8)>>1]; + heap16[(r9+8)>>1] = r8; + r8 = heap32[(r2+40)]; + r8 = (r8 - r7)|0; + r8 = heapU16[(r8+2)>>1]; + heap16[(r9+10)>>1] = r8; + r8 = heap32[(r2+40)]; + r8 = (r8 - r7)|0; + r8 = heapU16[(r8+4)>>1]; + heap16[(r9+12)>>1] = r8; + r8 = heap32[(r2+40)]; + r9 = (r6 * -5)|0; + r8 = (r8 - r7)|0; + r9 = r9 << 2; + r8 = r8 >> 2; + r9 = (r5 + r9)|0; + r8 = heap32[(r8+3)]; + r9 = r9 >> 2; + heap32[(r9)] = r8; + r8 = heap32[(r2+40)]; + r7 = (r8 - r7)|0; + r7 = r7 >> 2; + r7 = heap32[(r7+4)]; + r6 = (r6 + -1)|0; + heap32[(r9+1)] = r7; +if(!(r4 !=r6)) //_LBB143_19 +{ +break _24; +} +} +} +} while(0); + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + r2 = heap32[(r2+40)]; + r4 = _2E_str234; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = 1497453121; + heap32[(g0+4)] = r2; + __FUNCTION_TABLE__[(r1)>>2](i7); +} +} +else{ + heap32[(r0+18)] = 0; +} + r0 = _2E_str335; + r_g0 = r0; + return; +} + +function _ZN14btQuantizedBvhD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + heap32[(g0)] = r0; + _ZN14btQuantizedBvhD2Ev(i7); + return; +} + +function _ZN14btQuantizedBvhD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV14btQuantizedBvh; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+40)]; +if(!(r1 ==0)) //_LBB145_4 +{ + r3 = heapU8[r0+164]; +if(!(r3 ==0)) //_LBB145_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+40)] = 0; +} + r1 = 1; + heap8[r0+164] = r1; + heap32[(r2+40)] = 0; + heap32[(r2+38)] = 0; + heap32[(r2+39)] = 0; + r3 = heap32[(r2+34)]; +if(!(r3 ==0)) //_LBB145_8 +{ + r4 = heapU8[r0+140]; +if(!(r4 ==0)) //_LBB145_7 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+34)] = 0; +} + heap8[r0+140] = r1; + heap32[(r2+34)] = 0; + heap32[(r2+32)] = 0; + heap32[(r2+33)] = 0; + r3 = heap32[(r2+29)]; +if(!(r3 ==0)) //_LBB145_12 +{ + r4 = heapU8[r0+120]; +if(!(r4 ==0)) //_LBB145_11 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+29)] = 0; +} + heap8[r0+120] = r1; + heap32[(r2+29)] = 0; + heap32[(r2+27)] = 0; + heap32[(r2+28)] = 0; + r3 = heap32[(r2+24)]; +if(!(r3 ==0)) //_LBB145_16 +{ + r4 = heapU8[r0+100]; +if(!(r4 ==0)) //_LBB145_15 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+24)] = 0; +} + heap8[r0+100] = r1; + heap32[(r2+24)] = 0; + heap32[(r2+22)] = 0; + heap32[(r2+23)] = 0; + r3 = heap32[(r2+19)]; +if(!(r3 ==0)) //_LBB145_20 +{ + r4 = heapU8[r0+80]; +if(!(r4 ==0)) //_LBB145_19 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+19)] = 0; +} + heap8[r0+80] = r1; + heap32[(r2+19)] = 0; + heap32[(r2+17)] = 0; + heap32[(r2+18)] = 0; +if(!(r0 ==0)) //_LBB145_22 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + heap32[(r0)] = r1; + r0 = heap32[(r2+-1)]; + heap32[(g0)] = r0; + free(i7); +} + return; +} + +function _ZNK14btQuantizedBvh9serializeEPvjb(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+38)]; + r3 = heap32[(r1+42)]; + if(r3 ==r2) //_LBB146_2 +{ + r3 = heap32[(fp+1)]; + r4 = heap32[(fp+3)]; + r5 = _ZTV14btQuantizedBvh; + r6 = r3 >> 2; + r5 = (r5 + 8)|0; + heap32[(r1+42)] = r2; + heap32[(r6)] = r5; + r2 = 0; + heap32[(r6+13)] = 277; + r5 = 1; + heap8[r3+60] = r2; + heap8[r3+80] = r5; + heap32[(r6+19)] = 0; + heap32[(r6+17)] = 0; + heap32[(r6+18)] = 0; + heap8[r3+100] = r5; + heap32[(r6+24)] = 0; + heap32[(r6+22)] = 0; + heap32[(r6+23)] = 0; + heap8[r3+120] = r5; + heap32[(r6+29)] = 0; + heap32[(r6+27)] = 0; + heap32[(r6+28)] = 0; + heap8[r3+140] = r5; + heap32[(r6+34)] = 0; + heap32[(r6+32)] = 0; + heap32[(r6+33)] = 0; + heap32[(r6+36)] = 0; + heap8[r3+164] = r5; + heap32[(r6+40)] = 0; + heap32[(r6+38)] = 0; + heap32[(r6+39)] = 0; + heap32[(r6+42)] = 0; + heap32[(r6+1)] = -8388609; + heap32[(r6+2)] = -8388609; + heap32[(r6+3)] = -8388609; + heap32[(r6+4)] = 0; + heap32[(r6+5)] = 2139095039; + heap32[(r6+6)] = 2139095039; + heap32[(r6+7)] = 2139095039; + heap32[(r6+8)] = 0; + r7 = heap32[(r1+14)]; + if(r4 ==0) //_LBB146_4 +{ + heap32[(r6+14)] = r7; + heap32[(r6+1)] = heap32[(r1+1)]; + heap32[(r6+2)] = heap32[(r1+2)]; + heap32[(r6+3)] = heap32[(r1+3)]; + heap32[(r6+4)] = heap32[(r1+4)]; + heap32[(r6+5)] = heap32[(r1+5)]; + heap32[(r6+6)] = heap32[(r1+6)]; + heap32[(r6+7)] = heap32[(r1+7)]; + heap32[(r6+8)] = heap32[(r1+8)]; + heap32[(r6+9)] = heap32[(r1+9)]; + heap32[(r6+10)] = heap32[(r1+10)]; + heap32[(r6+11)] = heap32[(r1+11)]; + heap32[(r6+12)] = heap32[(r1+12)]; + r7 = heap32[(r1+36)]; + heap32[(r6+36)] = r7; + r7 = heap32[(r1+42)]; +} +else{ + r8 = r7 << 8; + r9 = r7 >>> 8; + r10 = r7 << 24; + r8 = r8 & 16711680; + r9 = r9 & 65280; + r7 = r7 >>> 24; + r8 = r10 | r8; + r7 = r9 | r7; + r7 = r8 | r7; + heap32[(r6+14)] = r7; + r7 = heapU8[r0+7]; + heap8[r3+4] = r7; + r7 = heapU8[r0+6]; + heap8[r3+5] = r7; + r7 = heapU8[r0+5]; + heap8[r3+6] = r7; + r7 = heapU8[r0+4]; + heap8[r3+7] = r7; + r7 = heapU8[r0+11]; + heap8[r3+8] = r7; + r7 = heapU8[r0+10]; + heap8[r3+9] = r7; + r7 = heapU8[r0+9]; + heap8[r3+10] = r7; + r7 = heapU8[r0+8]; + heap8[r3+11] = r7; + r7 = heapU8[r0+15]; + heap8[r3+12] = r7; + r7 = heapU8[r0+14]; + heap8[r3+13] = r7; + r7 = heapU8[r0+13]; + heap8[r3+14] = r7; + r7 = heapU8[r0+12]; + heap8[r3+15] = r7; + r7 = heapU8[r0+19]; + heap8[r3+16] = r7; + r7 = heapU8[r0+18]; + heap8[r3+17] = r7; + r7 = heapU8[r0+17]; + heap8[r3+18] = r7; + r7 = heapU8[r0+16]; + heap8[r3+19] = r7; + r7 = heapU8[r0+23]; + heap8[r3+20] = r7; + r7 = heapU8[r0+22]; + heap8[r3+21] = r7; + r7 = heapU8[r0+21]; + heap8[r3+22] = r7; + r7 = heapU8[r0+20]; + heap8[r3+23] = r7; + r7 = heapU8[r0+27]; + heap8[r3+24] = r7; + r7 = heapU8[r0+26]; + heap8[r3+25] = r7; + r7 = heapU8[r0+25]; + heap8[r3+26] = r7; + r7 = heapU8[r0+24]; + heap8[r3+27] = r7; + r7 = heapU8[r0+31]; + heap8[r3+28] = r7; + r7 = heapU8[r0+30]; + heap8[r3+29] = r7; + r7 = heapU8[r0+29]; + heap8[r3+30] = r7; + r7 = heapU8[r0+28]; + heap8[r3+31] = r7; + r7 = heapU8[r0+35]; + heap8[r3+32] = r7; + r7 = heapU8[r0+34]; + heap8[r3+33] = r7; + r7 = heapU8[r0+33]; + heap8[r3+34] = r7; + r7 = heapU8[r0+32]; + heap8[r3+35] = r7; + r7 = heapU8[r0+39]; + heap8[r3+36] = r7; + r7 = heapU8[r0+38]; + heap8[r3+37] = r7; + r7 = heapU8[r0+37]; + heap8[r3+38] = r7; + r7 = heapU8[r0+36]; + heap8[r3+39] = r7; + r7 = heapU8[r0+43]; + heap8[r3+40] = r7; + r7 = heapU8[r0+42]; + heap8[r3+41] = r7; + r7 = heapU8[r0+41]; + heap8[r3+42] = r7; + r7 = heapU8[r0+40]; + heap8[r3+43] = r7; + r7 = heapU8[r0+47]; + heap8[r3+44] = r7; + r7 = heapU8[r0+46]; + heap8[r3+45] = r7; + r7 = heapU8[r0+45]; + heap8[r3+46] = r7; + r7 = heapU8[r0+44]; + heap8[r3+47] = r7; + r7 = heapU8[r0+51]; + heap8[r3+48] = r7; + r7 = heapU8[r0+50]; + heap8[r3+49] = r7; + r7 = heapU8[r0+49]; + heap8[r3+50] = r7; + r7 = heapU8[r0+48]; + heap8[r3+51] = r7; + r7 = heap32[(r1+36)]; + r8 = r7 << 8; + r9 = r7 >>> 8; + r10 = r7 << 24; + r8 = r8 & 16711680; + r9 = r9 & 65280; + r7 = r7 >>> 24; + r8 = r10 | r8; + r7 = r9 | r7; + r7 = r8 | r7; + heap32[(r6+36)] = r7; + r7 = heap32[(r1+42)]; + r8 = r7 << 8; + r9 = r7 >>> 8; + r10 = r7 << 24; + r8 = r8 & 16711680; + r9 = r9 & 65280; + r7 = r7 >>> 24; + r8 = r10 | r8; + r7 = r9 | r7; + r7 = r8 | r7; +} + heap32[(r6+42)] = r7; + r7 = heapU8[r0+60]; + heap8[r3+60] = r7; + r7 = (r3 + 172)|0; + r8 = heap32[(r1+14)]; + r0 = heapU8[r0+60]; + if(r0 ==0) //_LBB146_20 +{ + r0 = 0; + heap8[r3+100] = r0; + heap32[(r6+24)] = r7; + heap32[(r6+22)] = r8; + heap32[(r6+23)] = r8; +_9: do { + if(r4 !=0) //_LBB146_22 +{ +if(!(r8 <1)) //_LBB146_29 +{ + r5 = (r5 - r8)|0; +_12: while(true){ + r2 = r0 << 6; + r9 = heap32[(r1+24)]; + r9 = (r9 - r2)|0; + r10 = heapU8[r9+3]; + r7 = (r7 - r2)|0; + heap8[r7] = r10; + r10 = heapU8[r9+2]; + heap8[r7+1] = r10; + r10 = heapU8[r9+1]; + heap8[r7+2] = r10; + r10 = heapU8[r9]; + heap8[r7+3] = r10; + r10 = heapU8[r9+7]; + heap8[r7+4] = r10; + r10 = heapU8[r9+6]; + heap8[r7+5] = r10; + r10 = heapU8[r9+5]; + heap8[r7+6] = r10; + r10 = heapU8[r9+4]; + heap8[r7+7] = r10; + r10 = heapU8[r9+11]; + heap8[r7+8] = r10; + r10 = heapU8[r9+10]; + heap8[r7+9] = r10; + r10 = heapU8[r9+9]; + heap8[r7+10] = r10; + r10 = heapU8[r9+8]; + heap8[r7+11] = r10; + r10 = heapU8[r9+15]; + heap8[r7+12] = r10; + r10 = heapU8[r9+14]; + heap8[r7+13] = r10; + r10 = heapU8[r9+13]; + heap8[r7+14] = r10; + r9 = heapU8[r9+12]; + heap8[r7+15] = r9; + r7 = heap32[(r1+24)]; + r7 = (r7 - r2)|0; + r9 = heap32[(r6+24)]; + r10 = heapU8[r7+19]; + r9 = (r9 - r2)|0; + heap8[r9+16] = r10; + r10 = heapU8[r7+18]; + heap8[r9+17] = r10; + r10 = heapU8[r7+17]; + heap8[r9+18] = r10; + r10 = heapU8[r7+16]; + heap8[r9+19] = r10; + r10 = heapU8[r7+23]; + heap8[r9+20] = r10; + r10 = heapU8[r7+22]; + heap8[r9+21] = r10; + r10 = heapU8[r7+21]; + heap8[r9+22] = r10; + r10 = heapU8[r7+20]; + heap8[r9+23] = r10; + r10 = heapU8[r7+27]; + heap8[r9+24] = r10; + r10 = heapU8[r7+26]; + heap8[r9+25] = r10; + r10 = heapU8[r7+25]; + heap8[r9+26] = r10; + r10 = heapU8[r7+24]; + heap8[r9+27] = r10; + r10 = heapU8[r7+31]; + heap8[r9+28] = r10; + r10 = heapU8[r7+30]; + heap8[r9+29] = r10; + r10 = heapU8[r7+29]; + heap8[r9+30] = r10; + r7 = heapU8[r7+28]; + heap8[r9+31] = r7; + r7 = heap32[(r1+24)]; + r7 = (r7 - r2)|0; + r7 = r7 >> 2; + r7 = heap32[(r7+8)]; + r9 = r7 << 8; + r10 = r7 >>> 8; + r11 = heap32[(r6+24)]; + r12 = r7 << 24; + r9 = r9 & 16711680; + r10 = r10 & 65280; + r7 = r7 >>> 24; + r11 = (r11 - r2)|0; + r9 = r12 | r9; + r7 = r10 | r7; + r10 = r11 >> 2; + r7 = r9 | r7; + heap32[(r10+8)] = r7; + r7 = heap32[(r1+24)]; + r7 = (r7 - r2)|0; + r7 = r7 >> 2; + r7 = heap32[(r7+9)]; + r9 = r7 << 8; + r10 = r7 >>> 8; + r11 = heap32[(r6+24)]; + r12 = r7 << 24; + r9 = r9 & 16711680; + r10 = r10 & 65280; + r7 = r7 >>> 24; + r11 = (r11 - r2)|0; + r9 = r12 | r9; + r7 = r10 | r7; + r10 = r11 >> 2; + r7 = r9 | r7; + heap32[(r10+9)] = r7; + r7 = heap32[(r1+24)]; + r7 = (r7 - r2)|0; + r7 = r7 >> 2; + r7 = heap32[(r7+10)]; + r9 = r7 << 8; + r10 = r7 >>> 8; + r11 = heap32[(r6+24)]; + r12 = r7 << 24; + r9 = r9 & 16711680; + r10 = r10 & 65280; + r7 = r7 >>> 24; + r2 = (r11 - r2)|0; + r9 = r12 | r9; + r7 = r10 | r7; + r2 = r2 >> 2; + r7 = r9 | r7; + heap32[(r2+10)] = r7; + if(r5 ==r0) //_LBB146_29 +{ +break _9; +} +else{ + r7 = heap32[(r6+24)]; + r0 = (r0 + -1)|0; +} +} +} +} +else{ + if(r8 >0) //_LBB146_26 +{ + r5 = (r5 - r8)|0; + r0 = 0; +_17: while(true){ + r2 = r0 << 6; + r9 = heap32[(r1+24)]; + r7 = (r7 - r2)|0; + r9 = (r9 - r2)|0; + r7 = r7 >> 2; + r9 = r9 >> 2; + heap32[(r7)] = heap32[(r9)]; + heap32[(r7+1)] = heap32[(r9+1)]; + heap32[(r7+2)] = heap32[(r9+2)]; + heap32[(r7+3)] = heap32[(r9+3)]; + r7 = heap32[(r6+24)]; + r9 = heap32[(r1+24)]; + r7 = (r7 - r2)|0; + r9 = (r9 - r2)|0; + r7 = r7 >> 2; + r9 = r9 >> 2; + heap32[(r7+4)] = heap32[(r9+4)]; + heap32[(r7+5)] = heap32[(r9+5)]; + heap32[(r7+6)] = heap32[(r9+6)]; + heap32[(r7+7)] = heap32[(r9+7)]; + r7 = heap32[(r1+24)]; + r7 = (r7 - r2)|0; + r7 = r7 >> 2; + r9 = heap32[(r6+24)]; + r9 = (r9 - r2)|0; + r7 = heap32[(r7+8)]; + r9 = r9 >> 2; + heap32[(r9+8)] = r7; + r7 = heap32[(r1+24)]; + r7 = (r7 - r2)|0; + r7 = r7 >> 2; + r9 = heap32[(r6+24)]; + r9 = (r9 - r2)|0; + r7 = heap32[(r7+9)]; + r9 = r9 >> 2; + heap32[(r9+9)] = r7; + r7 = heap32[(r1+24)]; + r7 = (r7 - r2)|0; + r7 = r7 >> 2; + r9 = heap32[(r6+24)]; + r2 = (r9 - r2)|0; + r7 = heap32[(r7+10)]; + r2 = r2 >> 2; + heap32[(r2+10)] = r7; + if(r5 ==r0) //_LBB146_29 +{ +break _9; +} +else{ + r7 = heap32[(r6+24)]; + r0 = (r0 + -1)|0; +} +} +} +} +} while(0); + r5 = heap32[(r6+24)]; +if(!(r5 ==0)) //_LBB146_33 +{ + r0 = heapU8[r3+100]; +if(!(r0 ==0)) //_LBB146_32 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r2 = heap32[(r0)]; + r2 = (r2 + 1)|0; + r5 = r5 >> 2; + heap32[(r0)] = r2; + r5 = heap32[(r5+-1)]; + heap32[(g0)] = r5; + free(i7); +} + heap32[(r6+24)] = 0; +} + r5 = r8 << 6; + r0 = 0; + heap8[r3+100] = r0; + heap32[(r6+24)] = 0; + heap32[(r6+22)] = 0; + heap32[(r6+23)] = 0; +} +else{ + heap8[r3+140] = r2; + heap32[(r6+34)] = r7; + heap32[(r6+32)] = r8; + heap32[(r6+33)] = r8; +_28: do { + if(r4 !=0) //_LBB146_8 +{ +if(!(r8 <1)) //_LBB146_15 +{ + r5 = (r5 - r8)|0; +_31: while(true){ + r0 = heap32[(r1+34)]; + r9 = r2 << 4; + r0 = (r0 - r9)|0; + r0 = heapU16[(r0)>>1]; + r10 = r0 << 8; + r0 = r0 << 24; + r10 = r10 & 16711680; + r0 = r0 | r10; + r7 = (r7 - r9)|0; + r0 = r0 >>> 16; + heap16[(r7)>>1] = r0; + r7 = heap32[(r1+34)]; + r7 = (r7 - r9)|0; + r7 = heapU16[(r7+2)>>1]; + r0 = r7 << 8; + r7 = r7 << 24; + r0 = r0 & 16711680; + r10 = heap32[(r6+34)]; + r7 = r7 | r0; + r0 = (r10 - r9)|0; + r7 = r7 >>> 16; + heap16[(r0+2)>>1] = r7; + r7 = heap32[(r1+34)]; + r7 = (r7 - r9)|0; + r7 = heapU16[(r7+4)>>1]; + r0 = r7 << 8; + r7 = r7 << 24; + r0 = r0 & 16711680; + r10 = heap32[(r6+34)]; + r7 = r7 | r0; + r0 = (r10 - r9)|0; + r7 = r7 >>> 16; + heap16[(r0+4)>>1] = r7; + r7 = heap32[(r1+34)]; + r7 = (r7 - r9)|0; + r7 = heapU16[(r7+6)>>1]; + r0 = r7 << 8; + r7 = r7 << 24; + r0 = r0 & 16711680; + r10 = heap32[(r6+34)]; + r7 = r7 | r0; + r0 = (r10 - r9)|0; + r7 = r7 >>> 16; + heap16[(r0+6)>>1] = r7; + r7 = heap32[(r1+34)]; + r7 = (r7 - r9)|0; + r7 = heapU16[(r7+8)>>1]; + r0 = r7 << 8; + r7 = r7 << 24; + r0 = r0 & 16711680; + r10 = heap32[(r6+34)]; + r7 = r7 | r0; + r0 = (r10 - r9)|0; + r7 = r7 >>> 16; + heap16[(r0+8)>>1] = r7; + r7 = heap32[(r1+34)]; + r7 = (r7 - r9)|0; + r7 = heapU16[(r7+10)>>1]; + r0 = r7 << 8; + r7 = r7 << 24; + r0 = r0 & 16711680; + r10 = heap32[(r6+34)]; + r7 = r7 | r0; + r0 = (r10 - r9)|0; + r7 = r7 >>> 16; + heap16[(r0+10)>>1] = r7; + r7 = heap32[(r1+34)]; + r7 = (r7 - r9)|0; + r7 = r7 >> 2; + r7 = heap32[(r7+3)]; + r0 = r7 << 8; + r10 = r7 >>> 8; + r11 = heap32[(r6+34)]; + r12 = r7 << 24; + r0 = r0 & 16711680; + r10 = r10 & 65280; + r7 = r7 >>> 24; + r9 = (r11 - r9)|0; + r0 = r12 | r0; + r7 = r10 | r7; + r9 = r9 >> 2; + r7 = r0 | r7; + heap32[(r9+3)] = r7; + if(r5 ==r2) //_LBB146_15 +{ +break _28; +} +else{ + r7 = heap32[(r6+34)]; + r2 = (r2 + -1)|0; +} +} +} +} +else{ + if(r8 >0) //_LBB146_12 +{ + r5 = (r5 - r8)|0; + r0 = 0; +_36: while(true){ + r2 = r0 << 4; + r9 = heap32[(r1+34)]; + r9 = (r9 - r2)|0; + r9 = heapU16[(r9)>>1]; + r7 = (r7 - r2)|0; + heap16[(r7)>>1] = r9; + r7 = heap32[(r1+34)]; + r7 = (r7 - r2)|0; + r9 = heap32[(r6+34)]; + r7 = heapU16[(r7+2)>>1]; + r9 = (r9 - r2)|0; + heap16[(r9+2)>>1] = r7; + r7 = heap32[(r1+34)]; + r7 = (r7 - r2)|0; + r9 = heap32[(r6+34)]; + r7 = heapU16[(r7+4)>>1]; + r9 = (r9 - r2)|0; + heap16[(r9+4)>>1] = r7; + r7 = heap32[(r1+34)]; + r7 = (r7 - r2)|0; + r9 = heap32[(r6+34)]; + r7 = heapU16[(r7+6)>>1]; + r9 = (r9 - r2)|0; + heap16[(r9+6)>>1] = r7; + r7 = heap32[(r1+34)]; + r7 = (r7 - r2)|0; + r9 = heap32[(r6+34)]; + r7 = heapU16[(r7+8)>>1]; + r9 = (r9 - r2)|0; + heap16[(r9+8)>>1] = r7; + r7 = heap32[(r1+34)]; + r7 = (r7 - r2)|0; + r9 = heap32[(r6+34)]; + r7 = heapU16[(r7+10)>>1]; + r9 = (r9 - r2)|0; + heap16[(r9+10)>>1] = r7; + r7 = heap32[(r1+34)]; + r7 = (r7 - r2)|0; + r7 = r7 >> 2; + r9 = heap32[(r6+34)]; + r2 = (r9 - r2)|0; + r7 = heap32[(r7+3)]; + r2 = r2 >> 2; + heap32[(r2+3)] = r7; + if(r5 ==r0) //_LBB146_15 +{ +break _28; +} +else{ + r7 = heap32[(r6+34)]; + r0 = (r0 + -1)|0; +} +} +} +} +} while(0); + r5 = heap32[(r6+34)]; +if(!(r5 ==0)) //_LBB146_19 +{ + r7 = heapU8[r3+140]; +if(!(r7 ==0)) //_LBB146_18 +{ + r7 = gNumAlignedFree; + r7 = r7 >> 2; + r0 = heap32[(r7)]; + r0 = (r0 + 1)|0; + r5 = r5 >> 2; + heap32[(r7)] = r0; + r5 = heap32[(r5+-1)]; + heap32[(g0)] = r5; + free(i7); +} + heap32[(r6+34)] = 0; +} + r5 = r8 << 4; + r7 = 0; + heap8[r3+140] = r7; + heap32[(r6+34)] = 0; + heap32[(r6+32)] = 0; + heap32[(r6+33)] = 0; +} + r0 = heap32[(r6+40)]; + r2 = heap32[(r1+42)]; +if(!(r0 ==0)) //_LBB146_38 +{ + r7 = heapU8[r3+164]; +if(!(r7 ==0)) //_LBB146_37 +{ + r7 = gNumAlignedFree; + r7 = r7 >> 2; + r8 = heap32[(r7)]; + r8 = (r8 + 1)|0; + r0 = r0 >> 2; + heap32[(r7)] = r8; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} + heap32[(r6+40)] = 0; +} + r0 = (r5 + r3)|0; + r0 = (r0 + 172)|0; + r5 = 0; + heap8[r3+164] = r5; + heap32[(r6+40)] = r0; + heap32[(r6+38)] = r2; + heap32[(r6+39)] = r2; + r2 = heap32[(r1+42)]; +_53: do { + if(r4 !=0) //_LBB146_40 +{ +if(!(r2 <1)) //_LBB146_46 +{ +__label__ = 41; //SET chanka +_55: while(true){ + r2 = r5 << 5; + r4 = heap32[(r1+40)]; + r4 = heapU16[(r4+r2)>>1]; + r7 = r4 << 8; + r4 = r4 << 24; + r7 = r7 & 16711680; + r4 = r4 | r7; + r4 = r4 >>> 16; + heap16[(r0+r2)>>1] = r4; + r0 = heap32[(r1+40)]; + r0 = (r0 + r2)|0; + r0 = heapU16[(r0+2)>>1]; + r4 = r0 << 8; + r0 = r0 << 24; + r4 = r4 & 16711680; + r7 = heap32[(r6+40)]; + r0 = r0 | r4; + r4 = (r7 + r2)|0; + r0 = r0 >>> 16; + heap16[(r4+2)>>1] = r0; + r0 = heap32[(r1+40)]; + r0 = (r0 + r2)|0; + r0 = heapU16[(r0+4)>>1]; + r4 = r0 << 8; + r0 = r0 << 24; + r4 = r4 & 16711680; + r7 = heap32[(r6+40)]; + r0 = r0 | r4; + r4 = (r7 + r2)|0; + r0 = r0 >>> 16; + heap16[(r4+4)>>1] = r0; + r0 = heap32[(r1+40)]; + r0 = (r0 + r2)|0; + r0 = heapU16[(r0+6)>>1]; + r4 = r0 << 8; + r0 = r0 << 24; + r4 = r4 & 16711680; + r7 = heap32[(r6+40)]; + r0 = r0 | r4; + r4 = (r7 + r2)|0; + r0 = r0 >>> 16; + heap16[(r4+6)>>1] = r0; + r0 = heap32[(r1+40)]; + r0 = (r0 + r2)|0; + r0 = heapU16[(r0+8)>>1]; + r4 = r0 << 8; + r0 = r0 << 24; + r4 = r4 & 16711680; + r7 = heap32[(r6+40)]; + r0 = r0 | r4; + r4 = (r7 + r2)|0; + r0 = r0 >>> 16; + heap16[(r4+8)>>1] = r0; + r0 = heap32[(r1+40)]; + r0 = (r0 + r2)|0; + r0 = heapU16[(r0+10)>>1]; + r4 = r0 << 8; + r0 = r0 << 24; + r4 = r4 & 16711680; + r7 = heap32[(r6+40)]; + r0 = r0 | r4; + r4 = (r7 + r2)|0; + r0 = r0 >>> 16; + heap16[(r4+10)>>1] = r0; + r0 = heap32[(r1+40)]; + r0 = (r0 + r2)|0; + r0 = r0 >> 2; + r0 = heap32[(r0+3)]; + r4 = r0 << 8; + r7 = r0 >>> 8; + r8 = heap32[(r6+40)]; + r9 = r0 << 24; + r4 = r4 & 16711680; + r7 = r7 & 65280; + r0 = r0 >>> 24; + r8 = (r8 + r2)|0; + r4 = r9 | r4; + r0 = r7 | r0; + r7 = r8 >> 2; + r0 = r4 | r0; + heap32[(r7+3)] = r0; + r0 = heap32[(r1+40)]; + r0 = (r0 + r2)|0; + r0 = r0 >> 2; + r0 = heap32[(r0+4)]; + r4 = r0 << 8; + r7 = r0 >>> 8; + r8 = heap32[(r6+40)]; + r9 = r0 << 24; + r4 = r4 & 16711680; + r7 = r7 & 65280; + r0 = r0 >>> 24; + r2 = (r8 + r2)|0; + r4 = r9 | r4; + r0 = r7 | r0; + r5 = (r5 + 1)|0; + r2 = r2 >> 2; + r0 = r4 | r0; + heap32[(r2+4)] = r0; + r0 = heap32[(r1+42)]; + if(r0 <=r5) //_LBB146_46 +{ +break _53; +} +else{ + r0 = heap32[(r6+40)]; +} +} +} +} +else{ + if(r2 >0) //_LBB146_43 +{ + r2 = 0; +_60: while(true){ + r4 = r2 << 5; + r5 = heap32[(r1+40)]; + r5 = heapU16[(r5+r4)>>1]; + heap16[(r0+r4)>>1] = r5; + r0 = heap32[(r1+40)]; + r0 = (r0 + r4)|0; + r5 = heap32[(r6+40)]; + r0 = heapU16[(r0+2)>>1]; + r5 = (r5 + r4)|0; + heap16[(r5+2)>>1] = r0; + r0 = heap32[(r1+40)]; + r0 = (r0 + r4)|0; + r5 = heap32[(r6+40)]; + r0 = heapU16[(r0+4)>>1]; + r5 = (r5 + r4)|0; + heap16[(r5+4)>>1] = r0; + r0 = heap32[(r1+40)]; + r0 = (r0 + r4)|0; + r5 = heap32[(r6+40)]; + r0 = heapU16[(r0+6)>>1]; + r5 = (r5 + r4)|0; + heap16[(r5+6)>>1] = r0; + r0 = heap32[(r1+40)]; + r0 = (r0 + r4)|0; + r5 = heap32[(r6+40)]; + r0 = heapU16[(r0+8)>>1]; + r5 = (r5 + r4)|0; + heap16[(r5+8)>>1] = r0; + r0 = heap32[(r1+40)]; + r0 = (r0 + r4)|0; + r5 = heap32[(r6+40)]; + r0 = heapU16[(r0+10)>>1]; + r5 = (r5 + r4)|0; + heap16[(r5+10)>>1] = r0; + r0 = heap32[(r1+40)]; + r0 = (r0 + r4)|0; + r0 = r0 >> 2; + r5 = heap32[(r6+40)]; + r5 = (r5 + r4)|0; + r0 = heap32[(r0+3)]; + r5 = r5 >> 2; + heap32[(r5+3)] = r0; + r0 = heap32[(r1+40)]; + r0 = (r0 + r4)|0; + r0 = r0 >> 2; + r5 = heap32[(r6+40)]; + r5 = (r5 + r4)|0; + r0 = heap32[(r0+4)]; + r5 = r5 >> 2; + heap32[(r5+4)] = r0; + r0 = heap32[(r6+40)]; + r0 = (r0 + r4)|0; + r0 = r0 >> 2; + heap32[(r0+5)] = 0; + r0 = heap32[(r6+40)]; + r0 = (r0 + r4)|0; + r0 = r0 >> 2; + heap32[(r0+6)] = 0; + r0 = heap32[(r6+40)]; + r0 = (r0 + r4)|0; + r2 = (r2 + 1)|0; + r0 = r0 >> 2; + heap32[(r0+7)] = 0; + r0 = heap32[(r1+42)]; + if(r0 <=r2) //_LBB146_46 +{ +break _53; +} +else{ + r0 = heap32[(r6+40)]; +} +} +} +} +} while(0); + r0 = heap32[(r6+40)]; +if(!(r0 ==0)) //_LBB146_50 +{ + r1 = heapU8[r3+164]; +if(!(r1 ==0)) //_LBB146_49 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r2 = heap32[(r1)]; + r2 = (r2 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r2; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} + heap32[(r6+40)] = 0; +} + r0 = 0; + heap8[r3+164] = r0; + heap32[(r6+40)] = 0; + heap32[(r6+38)] = 0; + heap32[(r6+39)] = 0; + heap32[(r6)] = 0; + r0 = 1; + r_g0 = r0; + return; +} +else{ + r0 = _2E_str638; + r1 = _2E_str537; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 847; + _assert(i7); +} +} + +function _ZN14btQuantizedBvh16deSerializeFloatER23btQuantizedBvhFloatData(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r1 = r1 >> 2; + r2 = r0 >> 2; + heap32[(r2+5)] = heap32[(r1+4)]; + heap32[(r2+6)] = heap32[(r1+5)]; + heap32[(r2+7)] = heap32[(r1+6)]; + heap32[(r2+8)] = heap32[(r1+7)]; + heap32[(r2+1)] = heap32[(r1)]; + heap32[(r2+2)] = heap32[(r1+1)]; + heap32[(r2+3)] = heap32[(r1+2)]; + heap32[(r2+4)] = heap32[(r1+3)]; + heap32[(r2+9)] = heap32[(r1+8)]; + heap32[(r2+10)] = heap32[(r1+9)]; + heap32[(r2+11)] = heap32[(r1+10)]; + heap32[(r2+12)] = heap32[(r1+11)]; + r3 = heap32[(r1+12)]; + heap32[(r2+14)] = r3; + r3 = 0; + r4 = heap32[(r1+13)]; + r4 = r4 != r3; + r4 = r4 & 1; + heap8[r0+60] = r4; + r4 = heap32[(r2+22)]; + r5 = heap32[(r1+14)]; +if(!(r4 >=r5)) //_LBB147_17 +{ + r6 = heap32[(r2+23)]; +if(!(r6 >=r5)) //_LBB147_17 +{ + if(r5 !=0) //_LBB147_4 +{ + r6 = gNumAlignedAllocs; + r6 = r6 >> 2; + r7 = heap32[(r6)]; + r7 = (r7 + 1)|0; + r8 = r5 << 6; + heap32[(r6)] = r7; + r6 = r8 | 19; + heap32[(g0)] = r6; + malloc(i7); + r6 = r_g0; + if(r6 !=0) //_LBB147_6 +{ + r7 = 0; + r8 = (r6 + 4)|0; + r7 = (r7 - r8)|0; + r7 = r7 & 15; + r7 = (r6 + r7)|0; + r8 = (r7 + 4)|0; + r7 = r7 >> 2; + heap32[(r7)] = r6; + r6 = r8; +} +} +else{ + r6 = 0; +} + r7 = (r0 + 96)|0; + if(r4 <1) //_LBB147_9 +{ + r4 = r7 >> 2; + r9 = heap32[(r4)]; +} +else{ + r8 = 0; +_12: while(true){ + r9 = r7 >> 2; + r9 = heap32[(r9)]; + r10 = (r6 + r8)|0; + r11 = (r9 + r8)|0; + heap32[(g0)] = r10; + heap32[(g0+1)] = r11; + heap32[(g0+2)] = 64; + r4 = (r4 + -1)|0; + r8 = (r8 + 64)|0; + memcpy(i7); +if(!(r4 !=0)) //_LBB147_10 +{ +break _12; +} +} + r7 = (r0 + 96)|0; +} +if(!(r9 ==0)) //_LBB147_16 +{ + r4 = heapU8[r0+100]; +if(!(r4 ==0)) //_LBB147_15 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r8 = heap32[(r4)]; + r8 = (r8 + 1)|0; + r9 = r9 >> 2; + heap32[(r4)] = r8; + r4 = heap32[(r9+-1)]; + heap32[(g0)] = r4; + free(i7); +} + r4 = r7 >> 2; + heap32[(r4)] = 0; +} + r4 = 1; + r7 = r7 >> 2; + heap8[r0+100] = r4; + heap32[(r7)] = r6; + heap32[(r2+23)] = r5; +} +} + heap32[(r2+22)] = r5; +_23: do { +if(!(r5 <1)) //_LBB147_20 +{ + r4 = 0; + r6 = heap32[(r1+16)]; + r5 = (r4 - r5)|0; +_25: while(true){ + r7 = (r4 * -12)|0; + r7 = r7 << 2; + r8 = r4 << 6; + r9 = heap32[(r2+24)]; + r7 = (r6 + r7)|0; + r9 = (r9 - r8)|0; + r7 = r7 >> 2; + r9 = r9 >> 2; + heap32[(r9+4)] = heap32[(r7+4)]; + heap32[(r9+5)] = heap32[(r7+5)]; + heap32[(r9+6)] = heap32[(r7+6)]; + heap32[(r9+7)] = heap32[(r7+7)]; + r9 = heap32[(r2+24)]; + r9 = (r9 - r8)|0; + r9 = r9 >> 2; + heap32[(r9)] = heap32[(r7)]; + heap32[(r9+1)] = heap32[(r7+1)]; + heap32[(r9+2)] = heap32[(r7+2)]; + heap32[(r9+3)] = heap32[(r7+3)]; + r9 = heap32[(r2+24)]; + r9 = (r9 - r8)|0; + r10 = heap32[(r7+8)]; + r9 = r9 >> 2; + heap32[(r9+8)] = r10; + r9 = heap32[(r2+24)]; + r9 = (r9 - r8)|0; + r10 = heap32[(r7+9)]; + r9 = r9 >> 2; + heap32[(r9+9)] = r10; + r9 = heap32[(r2+24)]; + r8 = (r9 - r8)|0; + r7 = heap32[(r7+10)]; + r4 = (r4 + -1)|0; + r8 = r8 >> 2; + heap32[(r8+10)] = r7; + if(r5 !=r4) //_LBB147_19 +{ +continue _25; +} +else{ +break _23; +} +} +} +} while(0); + r4 = heap32[(r2+32)]; + r5 = heap32[(r1+15)]; +_28: do { +if(!(r4 >=r5)) //_LBB147_23 +{ + r6 = (r0 + 124)|0; + heap32[(g0)] = r6; + heap32[(g0+1)] = r5; + r6 = (r5 - r4)|0; + r4 = r4 << 4; + _ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE7reserveEi(i7); +_30: while(true){ + r7 = heap32[(r2+34)]; + r7 = (r7 + r4)|0; + r7 = r7 >> 2; + r6 = (r6 + -1)|0; + r4 = (r4 + 16)|0; + heap32[(r7)] = 0; + heap32[(r7+1)] = 0; + heap32[(r7+2)] = 0; + heap32[(r7+3)] = 0; + if(r6 !=0) //_LBB147_22 +{ +continue _30; +} +else{ +break _28; +} +} +} +} while(0); + heap32[(r2+32)] = r5; +_33: do { +if(!(r5 <1)) //_LBB147_26 +{ + r4 = 0; + r6 = heap32[(r1+17)]; + r5 = (r4 - r5)|0; +_35: while(true){ + r7 = r4 << 4; + r8 = (r6 - r7)|0; + r9 = r8 >> 2; + r10 = heap32[(r2+34)]; + r10 = (r10 - r7)|0; + r9 = heap32[(r9+3)]; + r10 = r10 >> 2; + heap32[(r10+3)] = r9; + r9 = heap32[(r2+34)]; + r10 = heapU16[(r8+6)>>1]; + r9 = (r9 - r7)|0; + heap16[(r9+6)>>1] = r10; + r9 = heap32[(r2+34)]; + r10 = heapU16[(r8+8)>>1]; + r9 = (r9 - r7)|0; + heap16[(r9+8)>>1] = r10; + r9 = heap32[(r2+34)]; + r10 = heapU16[(r8+10)>>1]; + r9 = (r9 - r7)|0; + heap16[(r9+10)>>1] = r10; + r9 = heap32[(r2+34)]; + r10 = heapU16[(r8)>>1]; + r9 = (r9 - r7)|0; + heap16[(r9)>>1] = r10; + r9 = heap32[(r2+34)]; + r10 = heapU16[(r8+2)>>1]; + r9 = (r9 - r7)|0; + heap16[(r9+2)>>1] = r10; + r9 = heap32[(r2+34)]; + r8 = heapU16[(r8+4)>>1]; + r4 = (r4 + -1)|0; + r7 = (r9 - r7)|0; + heap16[(r7+4)>>1] = r8; + if(r5 !=r4) //_LBB147_25 +{ +continue _35; +} +else{ +break _33; +} +} +} +} while(0); + r4 = heap32[(r1+19)]; + heap32[(r2+36)] = r4; + r4 = heap32[(r2+38)]; + r5 = heap32[(r1+20)]; +if(!(r4 >=r5)) //_LBB147_43 +{ + r6 = heap32[(r2+39)]; +if(!(r6 >=r5)) //_LBB147_43 +{ + if(r5 !=0) //_LBB147_30 +{ + r6 = gNumAlignedAllocs; + r6 = r6 >> 2; + r7 = heap32[(r6)]; + r7 = (r7 + 1)|0; + r8 = r5 << 5; + heap32[(r6)] = r7; + r6 = r8 | 19; + heap32[(g0)] = r6; + malloc(i7); + r6 = r_g0; + if(r6 !=0) //_LBB147_32 +{ + r7 = 0; + r8 = (r6 + 4)|0; + r7 = (r7 - r8)|0; + r7 = r7 & 15; + r7 = (r6 + r7)|0; + r8 = (r7 + 4)|0; + r7 = r7 >> 2; + heap32[(r7)] = r6; + r6 = r8; +} +} +else{ + r6 = 0; +} + r7 = (r0 + 160)|0; + if(r4 <1) //_LBB147_35 +{ + r4 = r7 >> 2; + r9 = heap32[(r4)]; +} +else{ + r8 = 0; +_49: while(true){ + r9 = r7 >> 2; + r9 = heap32[(r9)]; + r10 = (r9 + r8)|0; + r10 = r10 >> 2; + r11 = (r6 + r8)|0; + r4 = (r4 + -1)|0; + r8 = (r8 + 32)|0; + r12 = heap32[(r10)]; + r11 = r11 >> 2; + r13 = heap32[(r10+1)]; + r14 = heap32[(r10+2)]; + r15 = heap32[(r10+3)]; + r16 = heap32[(r10+4)]; + r17 = heap32[(r10+5)]; + r18 = heap32[(r10+6)]; + r10 = heap32[(r10+7)]; + heap32[(r11)] = r12; + heap32[(r11+1)] = r13; + heap32[(r11+2)] = r14; + heap32[(r11+3)] = r15; + heap32[(r11+4)] = r16; + heap32[(r11+5)] = r17; + heap32[(r11+6)] = r18; + heap32[(r11+7)] = r10; +if(!(r4 !=0)) //_LBB147_36 +{ +break _49; +} +} + r7 = (r0 + 160)|0; +} +if(!(r9 ==0)) //_LBB147_42 +{ + r4 = heapU8[r0+164]; +if(!(r4 ==0)) //_LBB147_41 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r8 = heap32[(r4)]; + r8 = (r8 + 1)|0; + r9 = r9 >> 2; + heap32[(r4)] = r8; + r4 = heap32[(r9+-1)]; + heap32[(g0)] = r4; + free(i7); +} + r4 = r7 >> 2; + heap32[(r4)] = 0; +} + r4 = 1; + r7 = r7 >> 2; + heap8[r0+164] = r4; + heap32[(r7)] = r6; + heap32[(r2+39)] = r5; +} +} + heap32[(r2+38)] = r5; +_60: do { +if(!(r5 <1)) //_LBB147_46 +{ + r0 = heap32[(r1+18)]; + r1 = (r3 - r5)|0; +_62: while(true){ + r4 = (r3 * -10)|0; + r4 = r4 << 1; + r4 = (r0 + r4)|0; + r5 = r3 << 5; + r6 = heap32[(r2+40)]; + r7 = heapU16[(r4+14)>>1]; + r6 = (r6 - r5)|0; + heap16[(r6+6)>>1] = r7; + r6 = heap32[(r2+40)]; + r7 = heapU16[(r4+16)>>1]; + r6 = (r6 - r5)|0; + heap16[(r6+8)>>1] = r7; + r6 = heap32[(r2+40)]; + r7 = heapU16[(r4+18)>>1]; + r6 = (r6 - r5)|0; + heap16[(r6+10)>>1] = r7; + r6 = heap32[(r2+40)]; + r7 = heapU16[(r4+8)>>1]; + r6 = (r6 - r5)|0; + heap16[(r6)>>1] = r7; + r6 = heap32[(r2+40)]; + r7 = heapU16[(r4+10)>>1]; + r6 = (r6 - r5)|0; + heap16[(r6+2)>>1] = r7; + r6 = (r3 * -5)|0; + r7 = heap32[(r2+40)]; + r4 = heapU16[(r4+12)>>1]; + r6 = r6 << 2; + r7 = (r7 - r5)|0; + r6 = (r0 + r6)|0; + heap16[(r7+4)>>1] = r4; + r4 = r6 >> 2; + r6 = heap32[(r2+40)]; + r6 = (r6 - r5)|0; + r7 = heap32[(r4)]; + r6 = r6 >> 2; + heap32[(r6+3)] = r7; + r6 = heap32[(r2+40)]; + r5 = (r6 - r5)|0; + r4 = heap32[(r4+1)]; + r3 = (r3 + -1)|0; + r5 = r5 >> 2; + heap32[(r5+4)] = r4; + if(r1 !=r3) //_LBB147_45 +{ +continue _62; +} +else{ +break _60; +} +} +} +} while(0); + return; +} + +function _ZN14btQuantizedBvh17deSerializeDoubleER24btQuantizedBvhDoubleData(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var f0; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + f0 = llvm_readDouble((r0+32)); + r2 = r1 >> 2; + f0 = f0; //fdtos f0, f0 + heapFloat[(r2+5)] = f0; + f0 = llvm_readDouble((r0+40)); + f0 = f0; //fdtos f0, f0 + heapFloat[(r2+6)] = f0; + f0 = llvm_readDouble((r0+48)); + f0 = f0; //fdtos f0, f0 + heapFloat[(r2+7)] = f0; + f0 = llvm_readDouble((r0+56)); + f0 = f0; //fdtos f0, f0 + heapFloat[(r2+8)] = f0; + f0 = llvm_readDouble((r0)); + f0 = f0; //fdtos f0, f0 + heapFloat[(r2+1)] = f0; + f0 = llvm_readDouble((r0+8)); + f0 = f0; //fdtos f0, f0 + heapFloat[(r2+2)] = f0; + f0 = llvm_readDouble((r0+16)); + f0 = f0; //fdtos f0, f0 + heapFloat[(r2+3)] = f0; + f0 = llvm_readDouble((r0+24)); + f0 = f0; //fdtos f0, f0 + heapFloat[(r2+4)] = f0; + f0 = llvm_readDouble((r0+64)); + f0 = f0; //fdtos f0, f0 + heapFloat[(r2+9)] = f0; + f0 = llvm_readDouble((r0+72)); + f0 = f0; //fdtos f0, f0 + heapFloat[(r2+10)] = f0; + f0 = llvm_readDouble((r0+80)); + f0 = f0; //fdtos f0, f0 + heapFloat[(r2+11)] = f0; + f0 = llvm_readDouble((r0+88)); + f0 = f0; //fdtos f0, f0 + r0 = r0 >> 2; + heapFloat[(r2+12)] = f0; + r3 = heap32[(r0+24)]; + heap32[(r2+14)] = r3; + r3 = 0; + r4 = heap32[(r0+25)]; + r4 = r4 != r3; + r4 = r4 & 1; + heap8[r1+60] = r4; + r4 = heap32[(r2+22)]; + r5 = heap32[(r0+26)]; +if(!(r4 >=r5)) //_LBB148_17 +{ + r6 = heap32[(r2+23)]; +if(!(r6 >=r5)) //_LBB148_17 +{ + if(r5 !=0) //_LBB148_4 +{ + r6 = gNumAlignedAllocs; + r6 = r6 >> 2; + r7 = heap32[(r6)]; + r7 = (r7 + 1)|0; + r8 = r5 << 6; + heap32[(r6)] = r7; + r6 = r8 | 19; + heap32[(g0)] = r6; + malloc(i7); + r6 = r_g0; + if(r6 !=0) //_LBB148_6 +{ + r7 = 0; + r8 = (r6 + 4)|0; + r7 = (r7 - r8)|0; + r7 = r7 & 15; + r7 = (r6 + r7)|0; + r8 = (r7 + 4)|0; + r7 = r7 >> 2; + heap32[(r7)] = r6; + r6 = r8; +} +} +else{ + r6 = 0; +} + r7 = (r1 + 96)|0; + if(r4 <1) //_LBB148_9 +{ + r4 = r7 >> 2; + r9 = heap32[(r4)]; +} +else{ + r8 = 0; +_12: while(true){ + r9 = r7 >> 2; + r9 = heap32[(r9)]; + r10 = (r6 + r8)|0; + r11 = (r9 + r8)|0; + heap32[(g0)] = r10; + heap32[(g0+1)] = r11; + heap32[(g0+2)] = 64; + r4 = (r4 + -1)|0; + r8 = (r8 + 64)|0; + memcpy(i7); +if(!(r4 !=0)) //_LBB148_10 +{ +break _12; +} +} + r7 = (r1 + 96)|0; +} +if(!(r9 ==0)) //_LBB148_16 +{ + r4 = heapU8[r1+100]; +if(!(r4 ==0)) //_LBB148_15 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r8 = heap32[(r4)]; + r8 = (r8 + 1)|0; + r9 = r9 >> 2; + heap32[(r4)] = r8; + r4 = heap32[(r9+-1)]; + heap32[(g0)] = r4; + free(i7); +} + r4 = r7 >> 2; + heap32[(r4)] = 0; +} + r4 = 1; + r7 = r7 >> 2; + heap8[r1+100] = r4; + heap32[(r7)] = r6; + heap32[(r2+23)] = r5; +} +} + heap32[(r2+22)] = r5; +_23: do { +if(!(r5 <1)) //_LBB148_20 +{ + r4 = 0; + r6 = heap32[(r0+28)]; + r5 = (r4 - r5)|0; +_25: while(true){ + r7 = (r4 * -10)|0; + r7 = r7 << 3; + r8 = (r6 + r7)|0; + r9 = r4 << 6; + r10 = heap32[(r2+24)]; + f0 = llvm_readDouble((r8+32)); + r10 = (r10 - r9)|0; + r10 = r10 >> 2; + f0 = f0; //fdtos f0, f0 + heapFloat[(r10+4)] = f0; + f0 = llvm_readDouble((r8+40)); + f0 = f0; //fdtos f0, f0 + heapFloat[(r10+5)] = f0; + f0 = llvm_readDouble((r8+48)); + f0 = f0; //fdtos f0, f0 + heapFloat[(r10+6)] = f0; + f0 = llvm_readDouble((r8+56)); + f0 = f0; //fdtos f0, f0 + heapFloat[(r10+7)] = f0; + r10 = heap32[(r2+24)]; + f0 = llvm_readDouble((r6+r7)); + r7 = (r10 - r9)|0; + r7 = r7 >> 2; + f0 = f0; //fdtos f0, f0 + heapFloat[(r7)] = f0; + f0 = llvm_readDouble((r8+8)); + f0 = f0; //fdtos f0, f0 + heapFloat[(r7+1)] = f0; + f0 = llvm_readDouble((r8+16)); + f0 = f0; //fdtos f0, f0 + heapFloat[(r7+2)] = f0; + r10 = (r4 * -20)|0; + f0 = llvm_readDouble((r8+24)); + r8 = r10 << 2; + f0 = f0; //fdtos f0, f0 + r8 = (r6 + r8)|0; + heapFloat[(r7+3)] = f0; + r7 = r8 >> 2; + r8 = heap32[(r2+24)]; + r8 = (r8 - r9)|0; + r10 = heap32[(r7+16)]; + r8 = r8 >> 2; + heap32[(r8+8)] = r10; + r8 = heap32[(r2+24)]; + r8 = (r8 - r9)|0; + r10 = heap32[(r7+17)]; + r8 = r8 >> 2; + heap32[(r8+9)] = r10; + r8 = heap32[(r2+24)]; + r8 = (r8 - r9)|0; + r7 = heap32[(r7+18)]; + r4 = (r4 + -1)|0; + r8 = r8 >> 2; + heap32[(r8+10)] = r7; + if(r5 !=r4) //_LBB148_19 +{ +continue _25; +} +else{ +break _23; +} +} +} +} while(0); + r4 = heap32[(r2+32)]; + r5 = heap32[(r0+27)]; +_28: do { +if(!(r4 >=r5)) //_LBB148_23 +{ + r6 = (r1 + 124)|0; + heap32[(g0)] = r6; + heap32[(g0+1)] = r5; + r6 = (r5 - r4)|0; + r4 = r4 << 4; + _ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE7reserveEi(i7); +_30: while(true){ + r7 = heap32[(r2+34)]; + r7 = (r7 + r4)|0; + r7 = r7 >> 2; + r6 = (r6 + -1)|0; + r4 = (r4 + 16)|0; + heap32[(r7)] = 0; + heap32[(r7+1)] = 0; + heap32[(r7+2)] = 0; + heap32[(r7+3)] = 0; + if(r6 !=0) //_LBB148_22 +{ +continue _30; +} +else{ +break _28; +} +} +} +} while(0); + heap32[(r2+32)] = r5; +_33: do { +if(!(r5 <1)) //_LBB148_26 +{ + r4 = 0; + r6 = heap32[(r0+29)]; + r5 = (r4 - r5)|0; +_35: while(true){ + r7 = r4 << 4; + r8 = (r6 - r7)|0; + r9 = r8 >> 2; + r10 = heap32[(r2+34)]; + r10 = (r10 - r7)|0; + r9 = heap32[(r9+3)]; + r10 = r10 >> 2; + heap32[(r10+3)] = r9; + r9 = heap32[(r2+34)]; + r10 = heapU16[(r8+6)>>1]; + r9 = (r9 - r7)|0; + heap16[(r9+6)>>1] = r10; + r9 = heap32[(r2+34)]; + r10 = heapU16[(r8+8)>>1]; + r9 = (r9 - r7)|0; + heap16[(r9+8)>>1] = r10; + r9 = heap32[(r2+34)]; + r10 = heapU16[(r8+10)>>1]; + r9 = (r9 - r7)|0; + heap16[(r9+10)>>1] = r10; + r9 = heap32[(r2+34)]; + r10 = heapU16[(r8)>>1]; + r9 = (r9 - r7)|0; + heap16[(r9)>>1] = r10; + r9 = heap32[(r2+34)]; + r10 = heapU16[(r8+2)>>1]; + r9 = (r9 - r7)|0; + heap16[(r9+2)>>1] = r10; + r9 = heap32[(r2+34)]; + r8 = heapU16[(r8+4)>>1]; + r4 = (r4 + -1)|0; + r7 = (r9 - r7)|0; + heap16[(r7+4)>>1] = r8; + if(r5 !=r4) //_LBB148_25 +{ +continue _35; +} +else{ +break _33; +} +} +} +} while(0); + r4 = heap32[(r0+30)]; + heap32[(r2+36)] = r4; + r4 = heap32[(r2+38)]; + r5 = heap32[(r0+31)]; +if(!(r4 >=r5)) //_LBB148_43 +{ + r6 = heap32[(r2+39)]; +if(!(r6 >=r5)) //_LBB148_43 +{ + if(r5 !=0) //_LBB148_30 +{ + r6 = gNumAlignedAllocs; + r6 = r6 >> 2; + r7 = heap32[(r6)]; + r7 = (r7 + 1)|0; + r8 = r5 << 5; + heap32[(r6)] = r7; + r6 = r8 | 19; + heap32[(g0)] = r6; + malloc(i7); + r6 = r_g0; + if(r6 !=0) //_LBB148_32 +{ + r7 = 0; + r8 = (r6 + 4)|0; + r7 = (r7 - r8)|0; + r7 = r7 & 15; + r7 = (r6 + r7)|0; + r8 = (r7 + 4)|0; + r7 = r7 >> 2; + heap32[(r7)] = r6; + r6 = r8; +} +} +else{ + r6 = 0; +} + r7 = (r1 + 160)|0; + if(r4 <1) //_LBB148_35 +{ + r4 = r7 >> 2; + r9 = heap32[(r4)]; +} +else{ + r8 = 0; +_49: while(true){ + r9 = r7 >> 2; + r9 = heap32[(r9)]; + r10 = (r9 + r8)|0; + r10 = r10 >> 2; + r11 = (r6 + r8)|0; + r4 = (r4 + -1)|0; + r8 = (r8 + 32)|0; + r12 = heap32[(r10)]; + r11 = r11 >> 2; + r13 = heap32[(r10+1)]; + r14 = heap32[(r10+2)]; + r15 = heap32[(r10+3)]; + r16 = heap32[(r10+4)]; + r17 = heap32[(r10+5)]; + r18 = heap32[(r10+6)]; + r10 = heap32[(r10+7)]; + heap32[(r11)] = r12; + heap32[(r11+1)] = r13; + heap32[(r11+2)] = r14; + heap32[(r11+3)] = r15; + heap32[(r11+4)] = r16; + heap32[(r11+5)] = r17; + heap32[(r11+6)] = r18; + heap32[(r11+7)] = r10; +if(!(r4 !=0)) //_LBB148_36 +{ +break _49; +} +} + r7 = (r1 + 160)|0; +} +if(!(r9 ==0)) //_LBB148_42 +{ + r4 = heapU8[r1+164]; +if(!(r4 ==0)) //_LBB148_41 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r8 = heap32[(r4)]; + r8 = (r8 + 1)|0; + r9 = r9 >> 2; + heap32[(r4)] = r8; + r4 = heap32[(r9+-1)]; + heap32[(g0)] = r4; + free(i7); +} + r4 = r7 >> 2; + heap32[(r4)] = 0; +} + r4 = 1; + r7 = r7 >> 2; + heap8[r1+164] = r4; + heap32[(r7)] = r6; + heap32[(r2+39)] = r5; +} +} + heap32[(r2+38)] = r5; +_60: do { +if(!(r5 <1)) //_LBB148_46 +{ + r0 = heap32[(r0+32)]; + r1 = (r3 - r5)|0; +_62: while(true){ + r4 = (r3 * -10)|0; + r4 = r4 << 1; + r4 = (r0 + r4)|0; + r5 = r3 << 5; + r6 = heap32[(r2+40)]; + r7 = heapU16[(r4+14)>>1]; + r6 = (r6 - r5)|0; + heap16[(r6+6)>>1] = r7; + r6 = heap32[(r2+40)]; + r7 = heapU16[(r4+16)>>1]; + r6 = (r6 - r5)|0; + heap16[(r6+8)>>1] = r7; + r6 = heap32[(r2+40)]; + r7 = heapU16[(r4+18)>>1]; + r6 = (r6 - r5)|0; + heap16[(r6+10)>>1] = r7; + r6 = heap32[(r2+40)]; + r7 = heapU16[(r4+8)>>1]; + r6 = (r6 - r5)|0; + heap16[(r6)>>1] = r7; + r6 = heap32[(r2+40)]; + r7 = heapU16[(r4+10)>>1]; + r6 = (r6 - r5)|0; + heap16[(r6+2)>>1] = r7; + r6 = (r3 * -5)|0; + r7 = heap32[(r2+40)]; + r4 = heapU16[(r4+12)>>1]; + r6 = r6 << 2; + r7 = (r7 - r5)|0; + r6 = (r0 + r6)|0; + heap16[(r7+4)>>1] = r4; + r4 = r6 >> 2; + r6 = heap32[(r2+40)]; + r6 = (r6 - r5)|0; + r7 = heap32[(r4)]; + r6 = r6 >> 2; + heap32[(r6+3)] = r7; + r6 = heap32[(r2+40)]; + r5 = (r6 - r5)|0; + r4 = heap32[(r4+1)]; + r3 = (r3 + -1)|0; + r5 = r5 >> 2; + heap32[(r5+4)] = r4; + if(r1 !=r3) //_LBB148_45 +{ +continue _62; +} +else{ +break _60; +} +} +} +} while(0); + return; +} + +function _ZN14btQuantizedBvhD2Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV14btQuantizedBvh; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+40)]; +if(!(r1 ==0)) //_LBB149_4 +{ + r3 = heapU8[r0+164]; +if(!(r3 ==0)) //_LBB149_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+40)] = 0; +} + r1 = 1; + heap8[r0+164] = r1; + heap32[(r2+40)] = 0; + heap32[(r2+38)] = 0; + heap32[(r2+39)] = 0; + r3 = heap32[(r2+34)]; +if(!(r3 ==0)) //_LBB149_8 +{ + r4 = heapU8[r0+140]; +if(!(r4 ==0)) //_LBB149_7 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+34)] = 0; +} + heap8[r0+140] = r1; + heap32[(r2+34)] = 0; + heap32[(r2+32)] = 0; + heap32[(r2+33)] = 0; + r3 = heap32[(r2+29)]; +if(!(r3 ==0)) //_LBB149_12 +{ + r4 = heapU8[r0+120]; +if(!(r4 ==0)) //_LBB149_11 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+29)] = 0; +} + heap8[r0+120] = r1; + heap32[(r2+29)] = 0; + heap32[(r2+27)] = 0; + heap32[(r2+28)] = 0; + r3 = heap32[(r2+24)]; +if(!(r3 ==0)) //_LBB149_16 +{ + r4 = heapU8[r0+100]; +if(!(r4 ==0)) //_LBB149_15 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+24)] = 0; +} + heap8[r0+100] = r1; + heap32[(r2+24)] = 0; + heap32[(r2+22)] = 0; + heap32[(r2+23)] = 0; + r3 = heap32[(r2+19)]; +if(!(r3 ==0)) //_LBB149_20 +{ + r4 = heapU8[r0+80]; +if(!(r4 ==0)) //_LBB149_19 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+19)] = 0; +} + heap8[r0+80] = r1; + heap32[(r2+19)] = 0; + heap32[(r2+17)] = 0; + heap32[(r2+18)] = 0; + return; +} + +function _ZNK14btQuantizedBvh26walkStacklessQuantizedTreeEP21btNodeOverlapCallbackPtS2_ii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heapU8[r0+60]; + if(r1 !=0) //_LBB150_2 +{ + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+3)]; + r4 = heap32[(fp+4)]; + r5 = heap32[(fp+5)]; + r0 = r0 >> 2; + r0 = heap32[(r0+34)]; + r6 = r4 << 4; + r7 = (r5 - r4)|0; + r0 = (r0 + r6)|0; + r6 = 0; +_3: while(true){ + if(r4 >1]; + r9 = heapU16[(r0+6)>>1]; + r10 = heapU16[(r3)>>1]; + r11 = heapU16[(r0)>>1]; + r8 = uint(r8) > uint(r9); + r9 = uint(r10) < uint(r11); + r10 = heapU16[(r2+4)>>1]; + r11 = heapU16[(r0+10)>>1]; + r8 = r8 | r9; + r9 = uint(r10) > uint(r11); + r10 = heapU16[(r3+4)>>1]; + r11 = heapU16[(r0+4)>>1]; + r8 = r8 | r9; + r9 = uint(r10) < uint(r11); + r10 = heapU16[(r2+2)>>1]; + r11 = heapU16[(r0+8)>>1]; + r8 = r8 | r9; + r9 = uint(r10) > uint(r11); + r10 = heapU16[(r3+2)>>1]; + r11 = heapU16[(r0+2)>>1]; + r12 = r0 >> 2; + r8 = r8 | r9; + r9 = uint(r10) < uint(r11); + r10 = heap32[(r12+3)]; + r6 = (r6 + 1)|0; + r8 = r8 | r9; + if(r10 <0) //_LBB150_10 +{ +__label__ = 10; +} +else{ + if(r8 != 0) //_LBB150_10 +{ +__label__ = 10; +} +else{ + if(r10 >-1) //_LBB150_9 +{ + r8 = r1 >> 2; + r8 = heap32[(r8)]; + r8 = r8 >> 2; + r8 = heap32[(r8+2)]; + r12 = r10 >> 21; + r10 = r10 & 2097151; + heap32[(g0)] = r1; + heap32[(g0+1)] = r12; + heap32[(g0+2)] = r10; + __FUNCTION_TABLE__[(r8)>>2](i7); +__label__ = 11; +} +else{ +__label__ = 8; +break _3; +} +} +} +if (__label__ == 10){ + r9 = 0; + r9 = r10 < r9; + r8 = r9 & r8; + if(r8 != 0) //_LBB150_12 +{ + r8 = heap32[(r12+3)]; + if(r8 <0) //_LBB150_14 +{ + r9 = r8 << 4; + r0 = (r0 - r9)|0; + r4 = (r4 - r8)|0; +continue _3; +} +else{ +__label__ = 13; +break _3; +} +} +} + r0 = (r0 + 16)|0; + r4 = (r4 + 1)|0; +} +else{ +__label__ = 4; +break _3; +} +} +else{ +__label__ = 16; +break _3; +} +} +switch(__label__ ){//multiple entries +case 16: + r0 = maxIterations; + r0 = r0 >> 2; + r1 = heap32[(r0)]; +if(!(r1 >=r6)) //_LBB150_18 +{ + heap32[(r0)] = r6; +} + return; +break; +case 13: + r0 = _2E_str941; + r1 = _2E_str313; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 75; + _assert(i7); +break; +case 8: + r0 = _2E_str739; + r1 = _2E_str313; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 80; + _assert(i7); +break; +case 4: + r0 = _2E_str1143; + r1 = _2E_str537; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 703; + _assert(i7); +break; +} +} +else{ + r0 = _2E_str212; + r1 = _2E_str537; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 669; + _assert(i7); +} +} + +function _ZNK14btQuantizedBvh17quantizeWithClampEPtRK9btVector3i(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var f0; + var f1; + var f2; + var f3; + var f4; +var __label__ = 0; + i7 = sp + -32;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heapU8[r0+60]; + if(r1 !=0) //_LBB151_2 +{ + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+3)]; + r2 = r2 >> 2; + f0 = heapFloat[(r2)]; + r4 = sp + -16; + heapFloat[(fp+-4)] = f0; + f1 = heapFloat[(r2+1)]; + r5 = r4 >> 2; + heapFloat[(r5+1)] = f1; + f2 = heapFloat[(r2+2)]; + heapFloat[(r5+2)] = f2; + f3 = heapFloat[(r2+3)]; + r2 = r0 >> 2; + heapFloat[(r5+3)] = f3; + f4 = heapFloat[(r2+1)]; + if(f0 =f0)) //_LBB151_16 +{ + heapFloat[(fp+-4)] = f4; +} + f0 = heapFloat[(r2+6)]; +if(!(f0 >=f1)) //_LBB151_18 +{ + heapFloat[(r5+1)] = f0; +} + f0 = heapFloat[(r2+7)]; +if(!(f0 >=f2)) //_LBB151_20 +{ + heapFloat[(r5+2)] = f0; +} + f0 = heapFloat[(r2+8)]; +if(!(f0 >=f3)) //_LBB151_22 +{ + heapFloat[(r5+3)] = f0; +} + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r3; + _ZNK14btQuantizedBvh8quantizeEPtRK9btVector3i(i7); + return; +} +else{ + r0 = _2E_str212; + r1 = _2E_str313; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 420; + _assert(i7); +} +} + +function _ZNK14btQuantizedBvh42walkRecursiveQuantizedTreeAgainstQueryAabbEPK18btQuantizedBvhNodeP21btNodeOverlapCallbackPtS5_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+3)]; + r4 = heap32[(fp+4)]; +_1: while(true){ + r5 = heapU8[r0+60]; + if(r5 !=0) //_LBB152_3 +{ + r5 = heapU16[(r3)>>1]; + r6 = heapU16[(r1+6)>>1]; + if(uint(r5) >uint(r6)) //_LBB152_14 +{ +__label__ = 14; +break _1; +} +else{ + r5 = heapU16[(r4)>>1]; + r6 = heapU16[(r1)>>1]; + r5 = r5 & 65535; + r6 = r6 & 65535; + if(uint(r5) >1]; + r6 = heapU16[(r1+10)>>1]; + r5 = r5 & 65535; + r6 = r6 & 65535; + if(uint(r5) >uint(r6)) //_LBB152_14 +{ +__label__ = 14; +break _1; +} +else{ + r5 = heapU16[(r4+4)>>1]; + r6 = heapU16[(r1+4)>>1]; + r5 = r5 & 65535; + r6 = r6 & 65535; + if(uint(r5) >1]; + r6 = heapU16[(r1+8)>>1]; + r5 = r5 & 65535; + r6 = r6 & 65535; + if(uint(r5) >uint(r6)) //_LBB152_14 +{ +__label__ = 14; +break _1; +} +else{ + r5 = heapU16[(r4+2)>>1]; + r6 = heapU16[(r1+2)>>1]; + r5 = r5 & 65535; + r6 = r6 & 65535; + if(uint(r5) > 2; + r6 = heap32[(r5+3)]; + if(r6 <0) //_LBB152_11 +{ + r6 = (r1 + 16)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r3; + heap32[(g0+4)] = r4; + _ZNK14btQuantizedBvh42walkRecursiveQuantizedTreeAgainstQueryAabbEPK18btQuantizedBvhNodeP21btNodeOverlapCallbackPtS5_(i7); + r5 = heap32[(r5+7)]; + if(r5 <0) //_LBB152_13 +{ + r6 = 1; + r5 = (r6 - r5)|0; + r5 = r5 << 4; + r1 = (r1 + r5)|0; +continue _1; +} +else{ + r1 = (r1 + 32)|0; +continue _1; +} +} +else{ +__label__ = 10; +break _1; +} +} +} +} +} +} +} +} +else{ +__label__ = 2; +break _1; +} +} +switch(__label__ ){//multiple entries +case 14: + return; +break; +case 2: + r0 = _2E_str212; + r1 = _2E_str537; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 419; + _assert(i7); +break; +case 10: + r0 = r2 >> 2; + r0 = heap32[(r0)]; + r0 = r0 >> 2; + r0 = heap32[(r0+2)]; + r1 = r6 >> 21; + r3 = r6 & 2097151; + heap32[(g0)] = r2; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r3; + __FUNCTION_TABLE__[(r0)>>2](i7); + return; +break; +} +} + +function _ZNK14btQuantizedBvh26reportAabbOverlappingNodexEP21btNodeOverlapCallbackRK9btVector3S4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var f0; + var f1; +var __label__ = 0; + i7 = sp + -40;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+3)]; + r4 = heapU8[r0+60]; +_1: do { + if(r4 ==0) //_LBB153_20 +{ + r0 = r0 >> 2; + r4 = heap32[(r0+24)]; + r5 = 0; + r6 = r5; +_3: while(true){ + r7 = heap32[(r0+14)]; + if(r7 >r5) //_LBB153_21 +{ + if(r7 >r6) //_LBB153_23 +{ + r7 = r2 >> 2; + r8 = r4 >> 2; + r6 = (r6 + 1)|0; + f0 = heapFloat[(r7)]; + f1 = heapFloat[(r8+4)]; + if(f0 >f1) //_LBB153_26 +{ +__label__ = 26; +} +else{ + r9 = r3 >> 2; + f0 = heapFloat[(r9)]; + f1 = heapFloat[(r8)]; + if(f0 f1) //_LBB153_30 +{ +__label__ = 29; +} +else{ + r10 = r3 >> 2; + f0 = heapFloat[(r10+2)]; + f1 = heapFloat[(r8+2)]; + if(f0 > 2; + f0 = heapFloat[(r7+1)]; + f1 = heapFloat[(r8+1)]; + r7 = 0; + r10 = heap32[(r8+8)]; + r11 = -1; + r9 = f0 < f1 ? r7 : r9; + r7 = r10 == r11; + r12 = r9 & 255; +if(!(r12 ==0)) //_LBB153_35 +{ + r10 = r10 != r11; + r10 = r10 & 1; + if(r10 ==0) //_LBB153_36 +{ + r10 = r1 >> 2; + r10 = heap32[(r10)]; + r10 = r10 >> 2; + r10 = heap32[(r10+2)]; + r11 = heap32[(r8+10)]; + r12 = heap32[(r8+9)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r12; + heap32[(g0+2)] = r11; + __FUNCTION_TABLE__[(r10)>>2](i7); +} +} +} +else{ + r7 = heap32[(r8+8)]; + r9 = -1; + r7 = r7 == r9; + r9 = 0; +} + r9 = r9 & 255; +if(!(r9 !=0)) //_LBB153_39 +{ + r7 = r7 & 1; + if(r7 ==0) //_LBB153_40 +{ + r7 = heap32[(r8+8)]; + r8 = r7 << 6; + r4 = (r4 + r8)|0; + r5 = (r7 + r5)|0; +continue _3; +} +} + r4 = (r4 + 64)|0; + r5 = (r5 + 1)|0; +} +else{ +__label__ = 22; +break _3; +} +} +else{ +__label__ = 40; +break _3; +} +} +switch(__label__ ){//multiple entries +case 40: + r0 = maxIterations; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + if(r1 >=r6) //_LBB153_17 +{ +break _1; +} +else{ + heap32[(r0)] = r6; + return; +} +break; +case 22: + r0 = _2E_str1921; + r1 = _2E_str537; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 367; + _assert(i7); +break; +} +} +else{ + r4 = sp + -6; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = 0; + _ZNK14btQuantizedBvh17quantizeWithClampEPtRK9btVector3i(i7); + r2 = sp + -12; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = 1; + r3 = r0 >> 2; + _ZNK14btQuantizedBvh17quantizeWithClampEPtRK9btVector3i(i7); + r5 = heap32[(r3+36)]; + if(r5 ==2) //_LBB153_18 +{ + r3 = heap32[(r3+34)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r1; + heap32[(g0+3)] = r4; + heap32[(g0+4)] = r2; + _ZNK14btQuantizedBvh42walkRecursiveQuantizedTreeAgainstQueryAabbEPK18btQuantizedBvhNodeP21btNodeOverlapCallbackPtS5_(i7); + return; +} +else{ + if(r5 ==1) //_LBB153_5 +{ + r5 = heapU8[r0+60]; + if(r5 ==0) //_LBB153_7 +{ + r2 = _2E_str212; + r3 = _2E_str537; + heap32[(g0)] = r2; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = 735; + _assert(i7); +} +else{ + r5 = heap32[(r3+38)]; + if(r5 >0) //_LBB153_8 +{ + r5 = 0; +_42: while(true){ + r6 = heap32[(r3+40)]; + r7 = r5 << 5; + r8 = (r6 + r7)|0; + r9 = heapU16[(sp+-6)>>1]; + r10 = heapU16[(r8+6)>>1]; +if(!(uint(r9) >uint(r10))) //_LBB153_16 +{ + r9 = heapU16[(sp+-12)>>1]; + r6 = heapU16[(r6+r7)>>1]; + r7 = r9 & 65535; + r6 = r6 & 65535; +if(!(uint(r7) >1]; + r7 = heapU16[(r8+10)>>1]; + r6 = r6 & 65535; + r7 = r7 & 65535; +if(!(uint(r6) >uint(r7))) //_LBB153_16 +{ + r6 = heapU16[(sp+-8)>>1]; + r7 = heapU16[(r8+4)>>1]; + r6 = r6 & 65535; + r7 = r7 & 65535; +if(!(uint(r6) >1]; + r7 = heapU16[(r8+8)>>1]; + r6 = r6 & 65535; + r7 = r7 & 65535; +if(!(uint(r6) >uint(r7))) //_LBB153_16 +{ + r6 = heapU16[(sp+-10)>>1]; + r7 = heapU16[(r8+2)>>1]; + r6 = r6 & 65535; + r7 = r7 & 65535; +if(!(uint(r6) > 2; + r7 = heap32[(r6+3)]; + r6 = heap32[(r6+4)]; + r6 = (r6 + r7)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r2; + heap32[(g0+4)] = r7; + heap32[(g0+5)] = r6; + _ZNK14btQuantizedBvh26walkStacklessQuantizedTreeEP21btNodeOverlapCallbackPtS2_ii(i7); +} +} +} +} +} +} + r5 = (r5 + 1)|0; + r6 = heap32[(r3+38)]; + if(r6 >r5) //_LBB153_9 +{ +continue _42; +} +else{ +break _1; +} +} +} +else{ +break _1; +} +} +} +else{ + if(r5 !=0) //_LBB153_19 +{ + r0 = _2E_str10; + r1 = _2E_str537; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 341; + _assert(i7); +} +else{ + r3 = heap32[(r3+14)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r2; + heap32[(g0+4)] = 0; + heap32[(g0+5)] = r3; + _ZNK14btQuantizedBvh26walkStacklessQuantizedTreeEP21btNodeOverlapCallbackPtS2_ii(i7); + return; +} +} +} +} +} while(0); + return; +} + +function _ZN14btQuantizedBvh9buildTreeEii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var r19; + var r20; + var r21; + var r22; + var r23; + var r24; + var r25; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; +var __label__ = 0; + i7 = sp + -112;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp+2)]; + r2 = (r1 - r0)|0; + if(r2 >0) //_LBB154_2 +{ + r3 = heap32[(fp)]; + r4 = r3 >> 2; + r5 = heap32[(r4+14)]; + if(r2 !=1) //_LBB154_7 +{ +_5: do { + if(r0 > 2; + f0 = heapFloat[(r9)]; + f5 = heapFloat[(r9+1)]; + f8 = heapFloat[(r9+2)]; + f4 = heapFloat[(r9+4)]; + f6 = heapFloat[(r9+5)]; + f7 = heapFloat[(r9+6)]; +} +else{ + r9 = heap32[(r4+29)]; + r10 = r7 << 4; + r11 = (r9 + r10)|0; + r9 = heapU16[(r9+r10)>>1]; + r10 = heapU16[(r11+2)>>1]; + r12 = heapU16[(r11+4)>>1]; + r13 = heapU16[(r11+6)>>1]; + r14 = heapU16[(r11+8)>>1]; + r11 = heapU16[(r11+10)>>1]; + f0 = uint(r9); //fuitos r9, f0 + f4 = heapFloat[(r4+9)]; + f5 = uint(r13); //fuitos r13, f5 + f6 = uint(r10); //fuitos r10, f6 + f7 = heapFloat[(r4+10)]; + f8 = uint(r14); //fuitos r14, f8 + f9 = uint(r12); //fuitos r12, f9 + f10 = heapFloat[(r4+11)]; + f11 = uint(r11); //fuitos r11, f11 + f0 = f0/f4; + f12 = heapFloat[(r4+1)]; + f4 = f5/f4; + f5 = f6/f7; + f6 = heapFloat[(r4+2)]; + f7 = f8/f7; + f8 = f9/f10; + f9 = heapFloat[(r4+3)]; + f10 = f11/f10; + f0 = f0+f12; + f5 = f5+f6; + f8 = f8+f9; + f4 = f4+f12; + f6 = f7+f6; + f7 = f10+f9; +} + f0 = f4+f0; + f4 = 0.5; + f5 = f6+f5; + f6 = f7+f8; + f0 = f0*f4; + f5 = f5*f4; + f6 = f6*f4; + r7 = (r7 + 1)|0; + f3 = f3+f0; + f2 = f2+f5; + f1 = f1+f6; +if(!(r1 !=r7)) //_LBB154_10 +{ +break _7; +} +} + f0 = r2; //fitos r2, f0 + if(r0 > 2; + f8 = heapFloat[(r7)]; + f10 = heapFloat[(r7+1)]; + f13 = heapFloat[(r7+2)]; + f9 = heapFloat[(r7+4)]; + f11 = heapFloat[(r7+5)]; + f12 = heapFloat[(r7+6)]; +} +else{ + r7 = heap32[(r4+29)]; + r9 = r6 << 4; + r10 = (r7 + r9)|0; + r7 = heapU16[(r7+r9)>>1]; + r9 = heapU16[(r10+2)>>1]; + r11 = heapU16[(r10+4)>>1]; + r12 = heapU16[(r10+6)>>1]; + r13 = heapU16[(r10+8)>>1]; + r10 = heapU16[(r10+10)>>1]; + f8 = uint(r7); //fuitos r7, f8 + f9 = heapFloat[(r4+9)]; + f10 = uint(r12); //fuitos r12, f10 + f11 = uint(r9); //fuitos r9, f11 + f12 = heapFloat[(r4+10)]; + f13 = uint(r13); //fuitos r13, f13 + f14 = uint(r11); //fuitos r11, f14 + f15 = heapFloat[(r4+11)]; + f16 = uint(r10); //fuitos r10, f16 + f8 = f8/f9; + f17 = heapFloat[(r4+1)]; + f9 = f10/f9; + f10 = f11/f12; + f11 = heapFloat[(r4+2)]; + f12 = f13/f12; + f13 = f14/f15; + f14 = heapFloat[(r4+3)]; + f15 = f16/f15; + f8 = f8+f17; + f10 = f10+f11; + f13 = f13+f14; + f9 = f9+f17; + f11 = f12+f11; + f12 = f15+f14; +} + f8 = f9+f8; + f9 = f11+f10; + f10 = f12+f13; + f8 = f8*f4; + f9 = f9*f4; + f10 = f10*f4; + f8 = f8-f6; + f9 = f9-f7; + f10 = f10-f5; + f8 = f8*f8; + f9 = f9*f9; + f10 = f10*f10; + r6 = (r6 + 1)|0; + f3 = f3+f8; + f2 = f2+f9; + f1 = f1+f10; +if(!(r1 !=r6)) //_LBB154_17 +{ +break _5; +} +} +} +else{ + f1 = 0; + f2 = f1; + f3 = f1; +} +} +else{ + f0 = r2; //fitos r2, f0 + f1 = 0; + f2 = f1; + f3 = f1; +} +} while(0); + f4 = -1; + f5 = 1; + f0 = f0+f4; + f0 = f5/f0; + f3 = f3*f0; + f2 = f2*f0; + f0 = f1*f0; + if(f3 >=f2) //_LBB154_23 +{ + r6 = 2; + r7 = 0; + r6 = f3 < f0 ? r6 : r7; +} +else{ + r6 = 2; + r7 = 1; + r6 = f2 < f0 ? r6 : r7; +} + r7 = sp + -32; + r8 = r7 >> 2; + heap32[(fp+-8)] = 0; + heap32[(r8+1)] = 0; + heap32[(r8+2)] = 0; + heap32[(r8+3)] = 0; + if(r0 > 2; + f3 = heapFloat[(r11)]; + f6 = heapFloat[(r11+1)]; + f9 = heapFloat[(r11+2)]; + f4 = heapFloat[(r11+4)]; + f7 = heapFloat[(r11+5)]; + f8 = heapFloat[(r11+6)]; +} +else{ + r11 = heap32[(r4+29)]; + r12 = r10 << 4; + r13 = (r11 + r12)|0; + r11 = heapU16[(r11+r12)>>1]; + r12 = heapU16[(r13+2)>>1]; + r14 = heapU16[(r13+4)>>1]; + r15 = heapU16[(r13+6)>>1]; + r16 = heapU16[(r13+8)>>1]; + r13 = heapU16[(r13+10)>>1]; + f3 = uint(r11); //fuitos r11, f3 + f4 = heapFloat[(r4+9)]; + f6 = uint(r15); //fuitos r15, f6 + f7 = uint(r12); //fuitos r12, f7 + f8 = heapFloat[(r4+10)]; + f9 = uint(r16); //fuitos r16, f9 + f10 = uint(r14); //fuitos r14, f10 + f11 = heapFloat[(r4+11)]; + f12 = uint(r13); //fuitos r13, f12 + f3 = f3/f4; + f13 = heapFloat[(r4+1)]; + f4 = f6/f4; + f6 = f7/f8; + f7 = heapFloat[(r4+2)]; + f8 = f9/f8; + f9 = f10/f11; + f10 = heapFloat[(r4+3)]; + f11 = f12/f11; + f3 = f3+f13; + f6 = f6+f7; + f9 = f9+f10; + f4 = f4+f13; + f7 = f8+f7; + f8 = f11+f10; +} + f3 = f4+f3; + f4 = 0.5; + f6 = f7+f6; + f7 = f8+f9; + f3 = f3*f4; + f6 = f6*f4; + f4 = f7*f4; + r10 = (r10 + 1)|0; + f2 = f2+f3; + f1 = f1+f6; + f0 = f0+f4; +if(!(r1 !=r10)) //_LBB154_27 +{ +break _31; +} +} + heapFloat[(r8+2)] = f0; + heapFloat[(r8+1)] = f1; + heapFloat[(fp+-8)] = f2; +} +else{ + f0 = 0; + f1 = f0; + f2 = f0; +} + f3 = r2; //fitos r2, f3 + f3 = f5/f3; + f2 = f2*f3; + f1 = f1*f3; + heapFloat[(fp+-8)] = f2; + f0 = f0*f3; + heapFloat[(r8+1)] = f1; + heapFloat[(r8+2)] = f0; +_40: do { + if(r0 > 2; + f0 = heapFloat[(r6)]; + r6 = r0 << 4; + r7 = (r0 - r1)|0; + r9 = r0 << 6; + r10 = r6 | 12; + r11 = 0; + r12 = r9; + r6 = r0; +_42: while(true){ + r13 = heapU8[r3+60]; + if(r13 ==0) //_LBB154_37 +{ + r14 = r11 << 4; + r15 = heap32[(r4+19)]; + r15 = (r15 + r9)|0; + r14 = r14 << 2; + r14 = (r15 - r14)|0; + r14 = r14 >> 2; + f1 = heapFloat[(r14)]; + f3 = heapFloat[(r14+1)]; + f6 = heapFloat[(r14+2)]; + f2 = heapFloat[(r14+4)]; + f4 = heapFloat[(r14+5)]; + f5 = heapFloat[(r14+6)]; +} +else{ + r14 = heap32[(r4+29)]; + r14 = (r14 + r10)|0; + r15 = r11 << 4; + r14 = (r14 - r15)|0; + r15 = heapU16[(r14+-12)>>1]; + r16 = heapU16[(r14+-10)>>1]; + r17 = heapU16[(r14+-8)>>1]; + r18 = heapU16[(r14+-6)>>1]; + r19 = heapU16[(r14+-4)>>1]; + r14 = heapU16[(r14+-2)>>1]; + f1 = uint(r15); //fuitos r15, f1 + f2 = heapFloat[(r4+9)]; + f3 = uint(r18); //fuitos r18, f3 + f4 = uint(r16); //fuitos r16, f4 + f5 = heapFloat[(r4+10)]; + f6 = uint(r19); //fuitos r19, f6 + f7 = uint(r17); //fuitos r17, f7 + f8 = heapFloat[(r4+11)]; + f9 = uint(r14); //fuitos r14, f9 + f1 = f1/f2; + f10 = heapFloat[(r4+1)]; + f2 = f3/f2; + f3 = f4/f5; + f4 = heapFloat[(r4+2)]; + f5 = f6/f5; + f6 = f7/f8; + f7 = heapFloat[(r4+3)]; + f8 = f9/f8; + f1 = f1+f10; + f3 = f3+f4; + f6 = f6+f7; + f2 = f2+f10; + f4 = f5+f4; + f5 = f8+f7; +} + f1 = f2+f1; + f2 = 0.5; + r14 = sp + -48; + f3 = f4+f3; + f1 = f1*f2; + f4 = f5+f6; + r15 = r14 >> 2; + f3 = f3*f2; + heapFloat[(fp+-12)] = f1; + f1 = f4*f2; + heapFloat[(r15+1)] = f3; + r14 = (r14 + r8)|0; + heapFloat[(r15+2)] = f1; + r14 = r14 >> 2; + heap32[(r15+3)] = 0; + f1 = heapFloat[(r14)]; + if(f1 >f0) //_LBB154_40 +{ + if(r13 ==0) //_LBB154_42 +{ + r13 = r11 << 4; + r14 = heap32[(r4+19)]; + r15 = (r14 + r9)|0; + r13 = r13 << 2; + r13 = (r15 - r13)|0; + r13 = r13 >> 2; + r15 = heap32[(r13+15)]; + r16 = heap32[(r13+14)]; + r17 = heap32[(r13+13)]; + r18 = heap32[(r13+12)]; + r19 = heap32[(r13+11)]; + r20 = heap32[(r13+10)]; + r21 = heap32[(r13+9)]; + r22 = heap32[(r13+8)]; + f1 = heapFloat[(r13+7)]; + f2 = heapFloat[(r13+6)]; + f3 = heapFloat[(r13+5)]; + f4 = heapFloat[(r13+4)]; + f5 = heapFloat[(r13+3)]; + f6 = heapFloat[(r13+2)]; + f7 = heapFloat[(r13+1)]; + f8 = heapFloat[(r13)]; + r13 = r6 << 6; + r23 = (r14 + r12)|0; + r14 = (r14 + r13)|0; + heap32[(g0)] = r23; + heap32[(g0+1)] = r14; + heap32[(g0+2)] = 64; + memcpy(i7); + r14 = heap32[(r4+19)]; + r13 = (r14 + r13)|0; + r13 = r13 >> 2; + heapFloat[(r13)] = f8; + heapFloat[(r13+1)] = f7; + heapFloat[(r13+2)] = f6; + heapFloat[(r13+3)] = f5; + heapFloat[(r13+4)] = f4; + heapFloat[(r13+5)] = f3; + heapFloat[(r13+6)] = f2; + heapFloat[(r13+7)] = f1; + heap32[(r13+8)] = r22; + heap32[(r13+9)] = r21; + heap32[(r13+10)] = r20; + heap32[(r13+11)] = r19; + heap32[(r13+12)] = r18; + heap32[(r13+13)] = r17; + heap32[(r13+14)] = r16; + heap32[(r13+15)] = r15; +} +else{ + r13 = heap32[(r4+29)]; + r14 = (r13 + r10)|0; + r15 = r11 << 4; + r14 = (r14 - r15)|0; + r15 = r6 << 4; + r16 = r14 >> 2; + r17 = heap32[(r16)]; + r18 = heapU16[(r14+-2)>>1]; + r19 = heapU16[(r14+-4)>>1]; + r20 = heapU16[(r14+-6)>>1]; + r21 = heapU16[(r14+-8)>>1]; + r22 = heapU16[(r14+-10)>>1]; + r23 = heapU16[(r13+r15)>>1]; + r24 = heapU16[(r14+-12)>>1]; + r13 = (r13 + r15)|0; + heap16[(r14+-12)>>1] = r23; + r23 = heapU16[(r13+2)>>1]; + heap16[(r14+-10)>>1] = r23; + r23 = heapU16[(r13+4)>>1]; + heap16[(r14+-8)>>1] = r23; + r23 = heapU16[(r13+6)>>1]; + heap16[(r14+-6)>>1] = r23; + r23 = heapU16[(r13+8)>>1]; + heap16[(r14+-4)>>1] = r23; + r23 = heapU16[(r13+10)>>1]; + r13 = r13 >> 2; + heap16[(r14+-2)>>1] = r23; + r13 = heap32[(r13+3)]; + heap32[(r16)] = r13; + r13 = heap32[(r4+29)]; + r14 = (r13 + r15)|0; + heap16[(r13+r15)>>1] = r24; + heap16[(r14+2)>>1] = r22; + heap16[(r14+4)>>1] = r21; + heap16[(r14+6)>>1] = r20; + heap16[(r14+8)>>1] = r19; + r13 = r14 >> 2; + heap16[(r14+10)>>1] = r18; + heap32[(r13+3)] = r17; +} + r6 = (r6 + 1)|0; +} + r11 = (r11 + -1)|0; + r12 = (r12 + 64)|0; +if(!(r7 !=r11)) //_LBB154_35 +{ +break _40; +} +} +} +else{ + r6 = r0; +} +} while(0); + r7 = (r2 / 3)|0; + r8 = (r7 + r0)|0; + if(r8 >=r6) //_LBB154_48 +{ +__label__ = 46; +} +else{ + r8 = (r1 + -1)|0; + r7 = (r8 - r7)|0; + if(r7 <=r6) //_LBB154_48 +{ +__label__ = 46; +} +else{ +__label__ = 47; +} +} +if (__label__ == 46){ + r6 = r2 >> 1; + r6 = (r6 + r0)|0; +} +if(!(r6 ==r0)) //_LBB154_51 +{ + if(r6 !=r1) //_LBB154_52 +{ + r2 = heap32[(r4+14)]; + heap32[(fp+-21)] = r2; + r2 = heapU8[r3+60]; + if(r2 ==0) //_LBB154_54 +{ + r2 = heap32[(fp+-21)]; + r2 = r2 << 6; + r7 = heap32[(r4+24)]; + r2 = (r7 + r2)|0; + r2 = r2 >> 2; + heap32[(r2)] = heap32[(r4+5)]; + heap32[(r2+1)] = heap32[(r4+6)]; + heap32[(r2+2)] = heap32[(r4+7)]; + heap32[(r2+3)] = heap32[(r4+8)]; +} +else{ + r2 = heap32[(r4+34)]; + r7 = heap32[(fp+-21)]; + r7 = r7 << 4; + r2 = (r2 + r7)|0; + r7 = (r3 + 20)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r7; + heap32[(g0+3)] = 0; + _ZNK14btQuantizedBvh8quantizeEPtRK9btVector3i(i7); +} + r2 = heap32[(r4+14)]; + r7 = heapU8[r3+60]; + if(r7 ==0) //_LBB154_57 +{ + r2 = r2 << 6; + r7 = heap32[(r4+24)]; + r2 = (r7 + r2)|0; + r2 = r2 >> 2; + heap32[(r2+4)] = heap32[(r4+1)]; + heap32[(r2+5)] = heap32[(r4+2)]; + heap32[(r2+6)] = heap32[(r4+3)]; + heap32[(r2+7)] = heap32[(r4+4)]; +} +else{ + r7 = heap32[(r4+34)]; + r2 = r2 << 4; + r2 = (r7 + r2)|0; + r2 = (r2 + 6)|0; + r7 = (r3 + 4)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r7; + heap32[(g0+3)] = 1; + _ZNK14btQuantizedBvh8quantizeEPtRK9btVector3i(i7); +} +_73: do { +if(!(r0 >=r1)) //_LBB154_95 +{ + r2 = r0; +_75: while(true){ + r7 = heapU8[r3+60]; +_77: do { + if(r7 ==0) //_LBB154_69 +{ + r7 = heap32[(r4+19)]; + r8 = r2 << 6; + r7 = (r7 + r8)|0; + r7 = r7 >> 2; + f0 = heapFloat[(r7+4)]; + r8 = sp + -80; + heapFloat[(fp+-20)] = f0; + f1 = heapFloat[(r7+5)]; + r8 = r8 >> 2; + heapFloat[(r8+1)] = f1; + f2 = heapFloat[(r7+6)]; + heapFloat[(r8+2)] = f2; + f3 = heapFloat[(r7+7)]; + heapFloat[(r8+3)] = f3; + f4 = heapFloat[(r7)]; + r8 = sp + -64; + heapFloat[(fp+-16)] = f4; + f5 = heapFloat[(r7+1)]; + r8 = r8 >> 2; + heapFloat[(r8+1)] = f5; + f6 = heapFloat[(r7+2)]; + heapFloat[(r8+2)] = f6; + f7 = heapFloat[(r7+3)]; + heapFloat[(r8+3)] = f7; + r7 = heap32[(r4+14)]; + r8 = heap32[(r4+24)]; + r7 = r7 << 6; + r8 = (r8 + r7)|0; + r8 = r8 >> 2; + f8 = heapFloat[(r8)]; +if(!(f4 >=f8)) //_LBB154_71 +{ + heapFloat[(r8)] = f4; +} + f4 = heapFloat[(r8+1)]; +if(!(f5 >=f4)) //_LBB154_73 +{ + heapFloat[(r8+1)] = f5; +} + f4 = heapFloat[(r8+2)]; +if(!(f6 >=f4)) //_LBB154_75 +{ + heapFloat[(r8+2)] = f6; +} + f4 = heapFloat[(r8+3)]; +if(!(f7 >=f4)) //_LBB154_77 +{ + heapFloat[(r8+3)] = f7; +} + r8 = heap32[(r4+24)]; + r7 = (r8 + r7)|0; + r7 = r7 >> 2; + f4 = heapFloat[(r7+4)]; +if(!(f4 >=f0)) //_LBB154_79 +{ + heapFloat[(r7+4)] = f0; +} + f0 = heapFloat[(r7+5)]; +if(!(f0 >=f1)) //_LBB154_81 +{ + heapFloat[(r7+5)] = f1; +} + f0 = heapFloat[(r7+6)]; +if(!(f0 >=f2)) //_LBB154_83 +{ + heapFloat[(r7+6)] = f2; +} + f0 = heapFloat[(r7+7)]; + if(f0 >=f3) //_LBB154_94 +{ +break _77; +} +else{ + heapFloat[(r7+7)] = f3; +} +} +else{ + r7 = heap32[(r4+29)]; + r8 = r2 << 4; + r9 = (r7 + r8)|0; + r10 = sp + -80; + r11 = heapU16[(r9+10)>>1]; + r12 = heapU16[(r9+8)>>1]; + r13 = heapU16[(r9+6)>>1]; + f0 = heapFloat[(r4+11)]; + f1 = heapFloat[(r4+10)]; + f2 = heapFloat[(r4+9)]; + r14 = r10 >> 2; + f3 = uint(r13); //fuitos r13, f3 + heap32[(r14+3)] = 0; + f3 = f3/f2; + f4 = heapFloat[(r4+1)]; + f3 = f3+f4; + f5 = uint(r12); //fuitos r12, f5 + heapFloat[(fp+-20)] = f3; + f3 = f5/f1; + f5 = heapFloat[(r4+2)]; + f3 = f3+f5; + f6 = uint(r11); //fuitos r11, f6 + heapFloat[(r14+1)] = f3; + f3 = f6/f0; + f6 = heapFloat[(r4+3)]; + f3 = f3+f6; + heapFloat[(r14+2)] = f3; + r7 = heapU16[(r7+r8)>>1]; + r8 = sp + -64; + f3 = uint(r7); //fuitos r7, f3 + r7 = heapU16[(r9+4)>>1]; + r9 = heapU16[(r9+2)>>1]; + f7 = uint(r9); //fuitos r9, f7 + f2 = f3/f2; + r9 = r8 >> 2; + f3 = uint(r7); //fuitos r7, f3 + f1 = f7/f1; + f2 = f2+f4; + heap32[(r9+3)] = 0; + f0 = f3/f0; + f1 = f1+f5; + heapFloat[(fp+-16)] = f2; + f0 = f0+f6; + heapFloat[(r9+1)] = f1; + heapFloat[(r9+2)] = f0; + r7 = heap32[(r4+14)]; + r9 = sp + -6; + heap32[(g0)] = r3; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = 0; + _ZNK14btQuantizedBvh8quantizeEPtRK9btVector3i(i7); + r8 = sp + -12; + heap32[(g0)] = r3; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r10; + heap32[(g0+3)] = 1; + _ZNK14btQuantizedBvh8quantizeEPtRK9btVector3i(i7); + r8 = heapU16[(sp+-6)>>1]; + r9 = heap32[(r4+34)]; + r7 = r7 << 4; + r10 = heapU16[(r9+r7)>>1]; + if(uint(r10) >uint(r8)) //_LBB154_63 +{ + heap16[(r9+r7)>>1] = r8; + r9 = heap32[(r4+34)]; +} + r8 = (r9 + r7)|0; + r10 = heapU16[(sp+-12)>>1]; + r11 = heapU16[(r8+6)>>1]; + if(uint(r11) >1] = r10; + r9 = heap32[(r4+34)]; +} + r8 = (r9 + r7)|0; + r10 = heapU16[(sp+-4)>>1]; + r11 = heapU16[(r8+2)>>1]; + if(uint(r11) >uint(r10)) //_LBB154_89 +{ + heap16[(r8+2)>>1] = r10; + r9 = heap32[(r4+34)]; +} + r8 = (r9 + r7)|0; + r10 = heapU16[(sp+-10)>>1]; + r11 = heapU16[(r8+8)>>1]; + if(uint(r11) >1] = r10; + r9 = heap32[(r4+34)]; +} + r8 = (r9 + r7)|0; + r10 = heapU16[(sp+-2)>>1]; + r11 = heapU16[(r8+4)>>1]; + if(uint(r11) >uint(r10)) //_LBB154_92 +{ + heap16[(r8+4)>>1] = r10; + r9 = heap32[(r4+34)]; +} + r7 = (r9 + r7)|0; + r8 = heapU16[(sp+-8)>>1]; + r9 = heapU16[(r7+10)>>1]; + if(uint(r9) >1] = r8; +} +} +} while(0); + r2 = (r2 + 1)|0; +if(!(r1 !=r2)) //_LBB154_60 +{ +break _73; +} +} +} +} while(0); + r2 = heap32[(r4+14)]; + r7 = (r2 + 1)|0; + heap32[(r4+14)] = r7; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r6; + _ZN14btQuantizedBvh9buildTreeEii(i7); + r0 = heap32[(r4+14)]; + heap32[(fp+-23)] = r0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r1; + _ZN14btQuantizedBvh9buildTreeEii(i7); + r0 = heap32[(r4+14)]; + r0 = (r0 - r5)|0; + heap32[(fp+-22)] = r0; + r0 = heapU8[r3+60]; +_120: do { +if(!(r0 ==0)) //_LBB154_143 +{ + r0 = heap32[(fp+-22)]; + r0 = r0 << 4; +if(!(r0 <2049)) //_LBB154_142 +{ + r0 = heap32[(r4+34)]; + r1 = heap32[(fp+-23)]; + r1 = r1 << 4; + heap32[(fp+-24)] = r1; + r2 = r2 << 4; + r1 = (r0 + r1)|0; + r2 = (r0 + r2)|0; + r5 = r1 >> 2; + r6 = r2 >> 2; + r5 = heap32[(r5+3)]; + r8 = 0; + r6 = heap32[(r6+7)]; + r9 = 1; + r10 = (r8 - r6)|0; + r6 = r6 < 0 ? r10 : r9; + r10 = r6 << 4; +if(!(r10 >2048)) //_LBB154_119 +{ + r10 = heap32[(r4+39)]; + r11 = heap32[(r4+38)]; + if(r10 ==r11) //_LBB154_100 +{ + r12 = r11 << 1; + r12 = r11 == 0 ? r9 : r12; + if(r10 >=r12) //_LBB154_99 +{ +__label__ = 92; +} +else{ + if(r12 !=0) //_LBB154_103 +{ + r10 = gNumAlignedAllocs; + r10 = r10 >> 2; + r13 = heap32[(r10)]; + r13 = (r13 + 1)|0; + r14 = r12 << 5; + heap32[(r10)] = r13; + r10 = r14 | 19; + heap32[(g0)] = r10; + malloc(i7); + r13 = r_g0; + if(r13 !=0) //_LBB154_105 +{ + r10 = 0; + r14 = (r13 + 4)|0; + r10 = (r10 - r14)|0; + r10 = r10 & 15; + r10 = (r13 + r10)|0; + r14 = (r10 + 4)|0; + r10 = r10 >> 2; + heap32[(r10)] = r13; + r13 = r14; +} +} +else{ + r13 = 0; +} + r14 = (r3 + 160)|0; + if(r11 <1) //_LBB154_108 +{ + r10 = r14 >> 2; + r16 = heap32[(r10)]; +} +else{ + r10 = 0; + r15 = r11; +_137: while(true){ + r16 = r14 >> 2; + r16 = heap32[(r16)]; + r17 = (r16 + r10)|0; + r17 = r17 >> 2; + r18 = (r13 + r10)|0; + r15 = (r15 + -1)|0; + r10 = (r10 + 32)|0; + r19 = heap32[(r17)]; + r18 = r18 >> 2; + r20 = heap32[(r17+1)]; + r21 = heap32[(r17+2)]; + r22 = heap32[(r17+3)]; + r23 = heap32[(r17+4)]; + r24 = heap32[(r17+5)]; + r25 = heap32[(r17+6)]; + r17 = heap32[(r17+7)]; + heap32[(r18)] = r19; + heap32[(r18+1)] = r20; + heap32[(r18+2)] = r21; + heap32[(r18+3)] = r22; + heap32[(r18+4)] = r23; + heap32[(r18+5)] = r24; + heap32[(r18+6)] = r25; + heap32[(r18+7)] = r17; +if(!(r15 !=0)) //_LBB154_109 +{ +break _137; +} +} + r14 = (r3 + 160)|0; +} + if(r16 !=0) //_LBB154_113 +{ + r10 = heapU8[r3+164]; + if(r10 !=0) //_LBB154_115 +{ + r10 = gNumAlignedFree; + r10 = r10 >> 2; + r15 = heap32[(r10)]; + r15 = (r15 + 1)|0; + r16 = r16 >> 2; + heap32[(r10)] = r15; + r10 = heap32[(r16+-1)]; + heap32[(g0)] = r10; + free(i7); + r10 = heap32[(r4+38)]; +} +else{ + r10 = r11; +} + r15 = r14 >> 2; + heap32[(r15)] = 0; +} +else{ + r10 = r11; +} + r14 = r14 >> 2; + heap8[r3+164] = r9; + heap32[(r14)] = r13; + heap32[(r4+39)] = r12; +__label__ = 110; +} +} +else{ +__label__ = 92; +} +if (__label__ == 92){ + r10 = r11; +} + r10 = (r10 + 1)|0; + heap32[(r4+38)] = r10; + r10 = heap32[(r4+40)]; + r12 = heapU16[(r2+16)>>1]; + r11 = r11 << 5; + heap16[(r10+r11)>>1] = r12; + r10 = (r10 + r11)|0; + r11 = heapU16[(r2+18)>>1]; + heap16[(r10+2)>>1] = r11; + r11 = heapU16[(r2+20)>>1]; + heap16[(r10+4)>>1] = r11; + r11 = heapU16[(r2+22)>>1]; + heap16[(r10+6)>>1] = r11; + r11 = heapU16[(r2+24)>>1]; + heap16[(r10+8)>>1] = r11; + r2 = heapU16[(r2+26)>>1]; + r11 = r10 >> 2; + heap16[(r10+10)>>1] = r2; + heap32[(r11+3)] = r7; + heap32[(r11+4)] = r6; +} + r2 = (r8 - r5)|0; + r2 = r5 < 0 ? r2 : r9; + r5 = r2 << 4; +if(!(r5 >2048)) //_LBB154_141 +{ + r5 = heap32[(r4+39)]; + r6 = heap32[(r4+38)]; + if(r5 ==r6) //_LBB154_122 +{ + r7 = r6 << 1; + r7 = r6 == 0 ? r9 : r7; + if(r5 >=r7) //_LBB154_121 +{ +__label__ = 113; +} +else{ + if(r7 !=0) //_LBB154_125 +{ + r5 = gNumAlignedAllocs; + r5 = r5 >> 2; + r10 = heap32[(r5)]; + r10 = (r10 + 1)|0; + r11 = r7 << 5; + heap32[(r5)] = r10; + r5 = r11 | 19; + heap32[(g0)] = r5; + malloc(i7); + r10 = r_g0; + if(r10 !=0) //_LBB154_127 +{ + r5 = (r10 + 4)|0; + r5 = (r8 - r5)|0; + r5 = r5 & 15; + r5 = (r10 + r5)|0; + r11 = (r5 + 4)|0; + r5 = r5 >> 2; + heap32[(r5)] = r10; + r10 = r11; +} +} +else{ + r10 = 0; +} + r11 = (r3 + 160)|0; + if(r6 <1) //_LBB154_130 +{ + r5 = r11 >> 2; + r12 = heap32[(r5)]; +} +else{ + r5 = r6; +_166: while(true){ + r12 = r11 >> 2; + r12 = heap32[(r12)]; + r13 = (r12 + r8)|0; + r13 = r13 >> 2; + r14 = (r10 + r8)|0; + r5 = (r5 + -1)|0; + r8 = (r8 + 32)|0; + r15 = heap32[(r13)]; + r14 = r14 >> 2; + r16 = heap32[(r13+1)]; + r17 = heap32[(r13+2)]; + r18 = heap32[(r13+3)]; + r19 = heap32[(r13+4)]; + r20 = heap32[(r13+5)]; + r21 = heap32[(r13+6)]; + r13 = heap32[(r13+7)]; + heap32[(r14)] = r15; + heap32[(r14+1)] = r16; + heap32[(r14+2)] = r17; + heap32[(r14+3)] = r18; + heap32[(r14+4)] = r19; + heap32[(r14+5)] = r20; + heap32[(r14+6)] = r21; + heap32[(r14+7)] = r13; +if(!(r5 !=0)) //_LBB154_131 +{ +break _166; +} +} + r11 = (r3 + 160)|0; +} + if(r12 !=0) //_LBB154_135 +{ + r5 = heapU8[r3+164]; + if(r5 !=0) //_LBB154_137 +{ + r5 = gNumAlignedFree; + r5 = r5 >> 2; + r8 = heap32[(r5)]; + r8 = (r8 + 1)|0; + r12 = r12 >> 2; + heap32[(r5)] = r8; + r5 = heap32[(r12+-1)]; + heap32[(g0)] = r5; + free(i7); + r5 = heap32[(r4+38)]; +} +else{ + r5 = r6; +} + r8 = r11 >> 2; + heap32[(r8)] = 0; +} +else{ + r5 = r6; +} + r8 = r11 >> 2; + heap8[r3+164] = r9; + heap32[(r8)] = r10; + heap32[(r4+39)] = r7; +__label__ = 131; +} +} +else{ +__label__ = 113; +} +if (__label__ == 113){ + r5 = r6; +} + r5 = (r5 + 1)|0; + heap32[(r4+38)] = r5; + r5 = heap32[(r4+40)]; + r7 = heap32[(fp+-24)]; + r0 = heapU16[(r0+r7)>>1]; + r6 = r6 << 5; + heap16[(r5+r6)>>1] = r0; + r0 = (r5 + r6)|0; + r5 = heapU16[(r1+2)>>1]; + heap16[(r0+2)>>1] = r5; + r5 = heapU16[(r1+4)>>1]; + heap16[(r0+4)>>1] = r5; + r5 = heapU16[(r1+6)>>1]; + heap16[(r0+6)>>1] = r5; + r5 = heapU16[(r1+8)>>1]; + heap16[(r0+8)>>1] = r5; + r1 = heapU16[(r1+10)>>1]; + r5 = r0 >> 2; + heap16[(r0+10)>>1] = r1; + r0 = heap32[(fp+-23)]; + heap32[(r5+3)] = r0; + heap32[(r5+4)] = r2; +} + r0 = heap32[(r4+38)]; + heap32[(r4+42)] = r0; + r0 = heapU8[r3+60]; + if(r0 ==0) //_LBB154_143 +{ +break _120; +} +} + r0 = heap32[(fp+-21)]; + r0 = r0 << 4; + r4 = heap32[(r4+34)]; + r4 = (r4 + r0)|0; + r0 = 0; + r4 = r4 >> 2; + r1 = heap32[(fp+-22)]; + r0 = (r0 - r1)|0; + heap32[(r4+3)] = r0; + return; +} +} while(0); + r0 = heap32[(fp+-21)]; + r0 = r0 << 6; + r1 = heap32[(r4+24)]; + r0 = (r1 + r0)|0; + r0 = r0 >> 2; + r1 = heap32[(fp+-22)]; + heap32[(r0+8)] = r1; + return; +} +} + r0 = _2E_str21; + r1 = _2E_str537; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 278; + _assert(i7); +} +else{ + r1 = heapU8[r3+60]; + if(r1 ==0) //_LBB154_5 +{ + r1 = heap32[(r4+24)]; + r2 = heap32[(r4+19)]; + r3 = r5 << 6; + r0 = r0 << 6; + r1 = (r1 + r3)|0; + r0 = (r2 + r0)|0; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = 64; + memcpy(i7); +} +else{ + r0 = r0 << 4; + r1 = heap32[(r4+29)]; + r2 = heap32[(r4+34)]; + r3 = heapU16[(r1+r0)>>1]; + r5 = r5 << 4; + r0 = (r1 + r0)|0; + heap16[(r2+r5)>>1] = r3; + r1 = (r2 + r5)|0; + r2 = heapU16[(r0+2)>>1]; + heap16[(r1+2)>>1] = r2; + r2 = heapU16[(r0+4)>>1]; + heap16[(r1+4)>>1] = r2; + r2 = heapU16[(r0+6)>>1]; + heap16[(r1+6)>>1] = r2; + r2 = heapU16[(r0+8)>>1]; + heap16[(r1+8)>>1] = r2; + r2 = heapU16[(r0+10)>>1]; + r0 = r0 >> 2; + heap16[(r1+10)>>1] = r2; + r1 = r1 >> 2; + r0 = heap32[(r0+3)]; + heap32[(r1+3)] = r0; +} + r0 = heap32[(r4+14)]; + r0 = (r0 + 1)|0; + heap32[(r4+14)] = r0; + return; +} +} +else{ + r0 = _2E_str2246; + r1 = _2E_str537; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 127; + _assert(i7); +} +} + +function _ZNK14btQuantizedBvh36walkStacklessQuantizedTreeAgainstRayEP21btNodeOverlapCallbackRK9btVector3S4_S4_S4_ii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var r19; + var r20; + var r21; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; +var __label__ = 0; + i7 = sp + -96;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heapU8[r0+60]; + if(r1 !=0) //_LBB155_2 +{ + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+3)]; + r4 = heap32[(fp+4)]; + r5 = heap32[(fp+5)]; + r6 = heap32[(fp+6)]; + r3 = r3 >> 2; + r2 = r2 >> 2; + f0 = heapFloat[(r3)]; + f1 = heapFloat[(r2)]; + f2 = heapFloat[(r3+1)]; + f3 = heapFloat[(r2+1)]; + f0 = f0-f1; + r7 = r0 >> 2; + f1 = f2-f3; + f2 = heapFloat[(r3+2)]; + f3 = heapFloat[(r2+2)]; + r8 = heap32[(r7+34)]; + f2 = f2-f3; + f3 = f0*f0; + f4 = f1*f1; + f3 = f3+f4; + f4 = f2*f2; + f3 = f3+f4; + heapFloat[(g0)] = f3; + sqrtf(i7); + f4 = 1; + f3 = f4/f_g0; + f5 = heapFloat[(r3)]; + f6 = heapFloat[(r2)]; + f7 = heapFloat[(r3+1)]; + f8 = heapFloat[(r2+1)]; + f0 = f0*f3; + f9 = f5-f6; + f1 = f1*f3; + f10 = f7-f8; + f11 = heapFloat[(r3+2)]; + f12 = heapFloat[(r2+2)]; + f2 = f2*f3; + f3 = f11-f12; + f9 = f0*f9; + f10 = f1*f10; + f9 = f9+f10; + f3 = f2*f3; + f3 = f9+f3; + f9 = 0; + if(f0 !=f9) //_LBB155_4 +{ + f0 = f4/f0; +} +else{ + f0 = 999999984306749440; +} + if(f1 !=f9) //_LBB155_7 +{ + f1 = f4/f1; +} +else{ + f1 = 999999984306749440; +} + if(f2 !=f9) //_LBB155_10 +{ + f2 = f4/f2; +} +else{ + f2 = 999999984306749440; +} + r9 = heapU8[r0+60]; + if(r9 !=0) //_LBB155_13 +{ + r4 = r4 >> 2; + r5 = r5 >> 2; + r9 = f0 < f9; + r10 = f1 < f9; + r11 = f2 < f9; + f4 = heapFloat[(r2+3)]; + f10 = heapFloat[(r3+3)]; + f13 = f5 < f6 ? f5 : f6; + f14 = heapFloat[(r4)]; + f15 = f7 < f8 ? f7 : f8; + f16 = heapFloat[(r4+1)]; + f17 = f11 < f12 ? f11 : f12; + f18 = heapFloat[(r4+2)]; + f5 = f6 < f5 ? f5 : f6; + f6 = heapFloat[(r5)]; + f7 = f8 < f7 ? f7 : f8; + f8 = heapFloat[(r5+1)]; + f11 = f12 < f11 ? f11 : f12; + f12 = heapFloat[(r5+2)]; + r3 = r9 & 1; + r9 = r10 & 1; + r10 = r11 & 1; + f19 = f10 < f4 ? f10 : f4; + f4 = f4 < f10 ? f10 : f4; + f10 = f13+f14; + f13 = f15+f16; + f14 = f17+f18; + f5 = f5+f6; + f6 = f7+f8; + f7 = f11+f12; + r11 = sp + -16; + r12 = r11 >> 2; + heapFloat[(fp+-4)] = f10; + heapFloat[(r12+1)] = f13; + heapFloat[(r12+2)] = f14; + heapFloat[(r12+3)] = f19; + f8 = heapFloat[(r7+1)]; + if(f10 =f10)) //_LBB155_27 +{ + heapFloat[(fp+-4)] = f8; +} + f8 = heapFloat[(r7+6)]; +if(!(f8 >=f13)) //_LBB155_29 +{ + heapFloat[(r12+1)] = f8; +} + f8 = heapFloat[(r7+7)]; +if(!(f8 >=f14)) //_LBB155_31 +{ + heapFloat[(r12+2)] = f8; +} + f8 = heapFloat[(r7+8)]; +if(!(f8 >=f19)) //_LBB155_33 +{ + heapFloat[(r12+3)] = f8; +} + r12 = sp + -38; + heap32[(g0)] = r0; + heap32[(g0+1)] = r12; + heap32[(g0+2)] = r11; + heap32[(g0+3)] = 0; + _ZNK14btQuantizedBvh8quantizeEPtRK9btVector3i(i7); + r11 = heapU8[r0+60]; + if(r11 !=0) //_LBB155_35 +{ + r11 = sp + -32; + r12 = r11 >> 2; + heapFloat[(fp+-8)] = f5; + heapFloat[(r12+1)] = f6; + heapFloat[(r12+2)] = f7; + heapFloat[(r12+3)] = f4; + f8 = heapFloat[(r7+1)]; + if(f5 =f5)) //_LBB155_49 +{ + heapFloat[(fp+-8)] = f8; +} + f5 = heapFloat[(r7+6)]; +if(!(f5 >=f6)) //_LBB155_51 +{ + heapFloat[(r12+1)] = f5; +} + f5 = heapFloat[(r7+7)]; +if(!(f5 >=f7)) //_LBB155_53 +{ + heapFloat[(r12+2)] = f5; +} + f5 = heapFloat[(r7+8)]; +if(!(f5 >=f4)) //_LBB155_55 +{ + heapFloat[(r12+3)] = f5; +} + r12 = sp + -44; + heap32[(g0)] = r0; + heap32[(g0+1)] = r12; + heap32[(g0+2)] = r11; + heap32[(g0+3)] = 1; + r0 = r3 ^ 1; + r11 = r9 ^ 1; + r12 = r10 ^ 1; + r13 = 0; + _ZNK14btQuantizedBvh8quantizeEPtRK9btVector3i(i7); + r14 = r13; +_66: while(true){ + if(r13 > 2; + r16 = heap32[(r15+3)]; + r14 = (r14 + 1)|0; + r16 = r16 >>> 31; + r17 = heapU16[(sp+-38)>>1]; + r18 = heapU16[(r8+6)>>1]; + if(uint(r17) >uint(r18)) //_LBB155_64 +{ +__label__ = 55; +} +else{ + r17 = heapU16[(r8)>>1]; + r18 = heapU16[(sp+-44)>>1]; + r18 = r18 & 65535; + r17 = r17 & 65535; + if(uint(r18) >1]; + r19 = heapU16[(r8+10)>>1]; + r18 = r18 & 65535; + r19 = r19 & 65535; + if(uint(r18) >uint(r19)) //_LBB155_64 +{ +__label__ = 55; +} +else{ + r18 = heapU16[(r8+4)>>1]; + r19 = heapU16[(sp+-40)>>1]; + r19 = r19 & 65535; + r18 = r18 & 65535; + if(uint(r19) >1]; + r20 = heapU16[(r8+8)>>1]; + r19 = r19 & 65535; + r20 = r20 & 65535; + if(uint(r19) >uint(r20)) //_LBB155_64 +{ +__label__ = 55; +} +else{ + r19 = heapU16[(r8+2)>>1]; + r20 = heapU16[(sp+-42)>>1]; + r20 = r20 & 65535; + r19 = r19 & 65535; + if(uint(r20) >=uint(r19)) //_LBB155_65 +{ + f4 = uint(r17); //fuitos r17, f4 + f5 = heapFloat[(r7+9)]; + f6 = uint(r19); //fuitos r19, f6 + f7 = heapFloat[(r7+10)]; + f4 = f4/f5; + f8 = heapFloat[(r7+1)]; + f10 = heapFloat[(r7+11)]; + f11 = heapFloat[(r7+2)]; + f12 = heapFloat[(r7+3)]; + r17 = sp + -80; + f13 = uint(r18); //fuitos r18, f13 + f6 = f6/f7; + f4 = f4+f8; + f13 = f13/f10; + r18 = r17 >> 2; + f6 = f6+f11; + heapFloat[(fp+-20)] = f4; + f13 = f13+f12; + heapFloat[(r18+1)] = f6; + heapFloat[(r18+2)] = f13; + heap32[(r18+3)] = 0; + r19 = heapU16[(r8+10)>>1]; + r20 = heapU16[(r8+8)>>1]; + r21 = heapU16[(r8+6)>>1]; + heap32[(r18+7)] = 0; + f14 = heapFloat[(r5)]; + f4 = f4-f14; + heapFloat[(fp+-20)] = f4; + f4 = heapFloat[(r5+1)]; + f4 = f6-f4; + heapFloat[(r18+1)] = f4; + f4 = heapFloat[(r5+2)]; + f6 = uint(r21); //fuitos r21, f6 + f4 = f13-f4; + f5 = f6/f5; + heapFloat[(r18+2)] = f4; + f4 = f5+f8; + f5 = heapFloat[(r4)]; + f6 = uint(r20); //fuitos r20, f6 + f4 = f4-f5; + f5 = f6/f7; + heapFloat[(r18+4)] = f4; + f4 = f5+f11; + f5 = heapFloat[(r4+1)]; + f6 = uint(r19); //fuitos r19, f6 + f4 = f4-f5; + f5 = f6/f10; + heapFloat[(r18+5)] = f4; + r19 = r3 << 4; + r20 = r11 << 4; + f4 = f5+f12; + f5 = heapFloat[(r4+2)]; + r19 = (r17 + r19)|0; + r20 = (r17 + r20)|0; + f4 = f4-f5; + r19 = r19 >> 2; + heapFloat[(r18+6)] = f4; + r18 = r20 >> 2; + f4 = heapFloat[(r19)]; + f5 = heapFloat[(r2)]; + f6 = heapFloat[(r18+1)]; + f7 = heapFloat[(r2+1)]; + f4 = f4-f5; + f6 = f6-f7; + f4 = f4*f0; + f6 = f6*f1; + if(f4 >f6) //_LBB155_64 +{ +__label__ = 55; +} +else{ + r18 = r0 << 4; + r19 = r9 << 4; + r18 = (r17 + r18)|0; + r19 = (r17 + r19)|0; + r18 = r18 >> 2; + r19 = r19 >> 2; + f8 = heapFloat[(r18)]; + f10 = heapFloat[(r19+1)]; + f5 = f8-f5; + f7 = f10-f7; + f5 = f5*f0; + f7 = f7*f1; + if(f7 >f5) //_LBB155_64 +{ +__label__ = 55; +} +else{ + r18 = r12 << 4; + r18 = (r17 + r18)|0; + r18 = r18 >> 2; + f8 = heapFloat[(r18+2)]; + f10 = heapFloat[(r2+2)]; + f8 = f8-f10; + f4 = f4 < f7 ? f7 : f4; + f7 = f8*f2; + if(f4 >f7) //_LBB155_64 +{ +__label__ = 55; +} +else{ + r18 = r10 << 4; + r17 = (r17 + r18)|0; + r17 = r17 >> 2; + f8 = heapFloat[(r17+2)]; + f8 = f8-f10; + f5 = f6 < f5 ? f6 : f5; + f6 = f8*f2; + if(f6 >f5) //_LBB155_64 +{ +__label__ = 55; +} +else{ + f4 = f4 < f6 ? f6 : f4; + f5 = f7 < f5 ? f7 : f5; + r17 = f4 >= f3; + r18 = f5 <= f9; + r17 = r17 | r18; + r18 = r17 & 1; + r17 = r18 ^ 1; + if(r16 != 0) //_LBB155_71 +{ +__label__ = 65; +} +else{ + if(r18 ==0) //_LBB155_72 +{ + r18 = heap32[(r15+3)]; + if(r18 >-1) //_LBB155_74 +{ + r19 = r1 >> 2; + r19 = heap32[(r19)]; + r19 = r19 >> 2; + r19 = heap32[(r19+2)]; + r20 = r18 >> 21; + r18 = r18 & 2097151; + heap32[(g0)] = r1; + heap32[(g0+1)] = r20; + heap32[(g0+2)] = r18; + __FUNCTION_TABLE__[(r19)>>2](i7); +__label__ = 65; +} +else{ +__label__ = 63; +break _66; +} +} +else{ +__label__ = 65; +} +} +} +} +} +} +} +else{ +__label__ = 55; +} +} +} +} +} +} +if (__label__ == 55){ + r17 = 0; +} +if(!(r17 !=0)) //_LBB155_77 +{ + if(r16 != 0) //_LBB155_78 +{ + r15 = heap32[(r15+3)]; + if(r15 <0) //_LBB155_80 +{ + r16 = r15 << 4; + r8 = (r8 - r16)|0; + r13 = (r13 - r15)|0; +continue _66; +} +else{ +__label__ = 69; +break _66; +} +} +} + r8 = (r8 + 16)|0; + r13 = (r13 + 1)|0; +} +else{ +__label__ = 48; +break _66; +} +} +else{ +__label__ = 72; +break _66; +} +} +switch(__label__ ){//multiple entries +case 72: + r0 = maxIterations; + r0 = r0 >> 2; + r1 = heap32[(r0)]; +if(!(r1 >=r14)) //_LBB155_84 +{ + heap32[(r0)] = r14; +} + return; +break; +case 69: + r0 = _2E_str941; + r1 = _2E_str313; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 75; + _assert(i7); +break; +case 63: + r0 = _2E_str739; + r1 = _2E_str313; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 80; + _assert(i7); +break; +case 48: + r0 = _2E_str1143; + r1 = _2E_str537; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 606; + _assert(i7); +break; +} +} +} + r0 = _2E_str212; + r1 = _2E_str313; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 420; + _assert(i7); +} +else{ + r0 = _2E_str212; + r1 = _2E_str537; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 543; + _assert(i7); +} +} + +function _ZNK14btQuantizedBvh27walkStacklessTreeAgainstRayEP21btNodeOverlapCallbackRK9btVector3S4_S4_S4_ii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var r19; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; +var __label__ = 0; + i7 = sp + -48;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heapU8[r0+60]; + if(r1 ==0) //_LBB156_2 +{ + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+3)]; + r4 = heap32[(fp+4)]; + r5 = heap32[(fp+5)]; + r3 = r3 >> 2; + r2 = r2 >> 2; + f0 = heapFloat[(r2)]; + f1 = heapFloat[(r3)]; + f2 = heapFloat[(r3+1)]; + f3 = heapFloat[(r2+1)]; + r4 = r4 >> 2; + r5 = r5 >> 2; + f4 = f1-f0; + r0 = r0 >> 2; + f5 = f2-f3; + f6 = heapFloat[(r3+2)]; + f7 = heapFloat[(r2+2)]; + r6 = heap32[(r0+24)]; + f8 = f6-f7; + f9 = f4*f4; + f10 = f5*f5; + f11 = heapFloat[(r4)]; + f12 = heapFloat[(r4+1)]; + f13 = heapFloat[(r4+2)]; + f14 = heapFloat[(r5)]; + f15 = heapFloat[(r5+1)]; + f16 = heapFloat[(r5+2)]; + f9 = f9+f10; + f10 = f8*f8; + f9 = f9+f10; + heapFloat[(g0)] = f9; + sqrtf(i7); + f10 = 1; + f9 = f10/f_g0; + f17 = heapFloat[(r3)]; + f18 = heapFloat[(r2)]; + f19 = heapFloat[(r3+1)]; + f20 = heapFloat[(r2+1)]; + f4 = f4*f9; + f17 = f17-f18; + f5 = f5*f9; + f18 = f19-f20; + f19 = heapFloat[(r3+2)]; + f20 = heapFloat[(r2+2)]; + f8 = f8*f9; + f9 = f19-f20; + f17 = f4*f17; + f18 = f5*f18; + f19 = f1 < f0 ? f1 : f0; + f20 = f2 < f3 ? f2 : f3; + f21 = f6 < f7 ? f6 : f7; + f0 = f0 < f1 ? f1 : f0; + f1 = f3 < f2 ? f2 : f3; + f2 = f7 < f6 ? f6 : f7; + f3 = f17+f18; + f6 = f8*f9; + f7 = f19+f11; + f9 = f20+f12; + f11 = f21+f13; + f0 = f0+f14; + f1 = f1+f15; + f2 = f2+f16; + f3 = f3+f6; + f6 = 0; + if(f4 !=f6) //_LBB156_4 +{ + f4 = f10/f4; +} +else{ + f4 = 999999984306749440; +} + if(f5 !=f6) //_LBB156_7 +{ + f5 = f10/f5; +} +else{ + f5 = 999999984306749440; +} + if(f8 !=f6) //_LBB156_10 +{ + f8 = f10/f8; +} +else{ + f8 = 999999984306749440; +} + r3 = f4 < f6; + r7 = f5 < f6; + r8 = f8 < f6; + r3 = r3 & 1; + r7 = r7 & 1; + r8 = r8 & 1; + r9 = r3 ^ 1; + r10 = r7 ^ 1; + r11 = r8 ^ 1; + r12 = 0; + r13 = r12; +_15: while(true){ + r14 = heap32[(r0+14)]; + if(r14 >r12) //_LBB156_12 +{ + if(r14 >r13) //_LBB156_14 +{ + r14 = r6 >> 2; + f10 = heapFloat[(r14)]; + r15 = sp + -32; + heapFloat[(fp+-8)] = f10; + r16 = r15 >> 2; + f12 = heapFloat[(r14+1)]; + heapFloat[(r16+1)] = f12; + f13 = heapFloat[(r14+2)]; + heapFloat[(r16+2)] = f13; + heap32[(r16+3)] = heap32[(r14+3)]; + f14 = heapFloat[(r14+4)]; + heapFloat[(r16+4)] = f14; + f15 = heapFloat[(r14+5)]; + heapFloat[(r16+5)] = f15; + f16 = heapFloat[(r14+6)]; + heapFloat[(r16+6)] = f16; + heap32[(r16+7)] = heap32[(r14+7)]; + f17 = heapFloat[(r5)]; + f10 = f10-f17; + heapFloat[(fp+-8)] = f10; + f10 = heapFloat[(r5+1)]; + f10 = f12-f10; + heapFloat[(r16+1)] = f10; + f10 = heapFloat[(r5+2)]; + f10 = f13-f10; + heapFloat[(r16+2)] = f10; + f10 = heapFloat[(r4)]; + f10 = f14-f10; + heapFloat[(r16+4)] = f10; + f10 = heapFloat[(r4+1)]; + f10 = f15-f10; + heapFloat[(r16+5)] = f10; + f10 = heapFloat[(r4+2)]; + r13 = (r13 + 1)|0; + f10 = f16-f10; + heapFloat[(r16+6)] = f10; + f10 = heapFloat[(r14+4)]; + if(f7 >f10) //_LBB156_17 +{ +__label__ = 17; +} +else{ + f10 = heapFloat[(r14)]; + if(f0 f10) //_LBB156_21 +{ +__label__ = 20; +} +else{ + f10 = heapFloat[(r14+2)]; + if(f2 f10) //_LBB156_32 +{ +__label__ = 30; +} +else{ + f10 = heapFloat[(r14+1)]; + if(f1 > 2; + r17 = r17 >> 2; + f10 = heapFloat[(r16)]; + f12 = heapFloat[(r2)]; + f13 = heapFloat[(r17+1)]; + f14 = heapFloat[(r2+1)]; + f10 = f10-f12; + f13 = f13-f14; + f10 = f10*f4; + f13 = f13*f5; + if(f10 >f13) //_LBB156_32 +{ +__label__ = 30; +} +else{ + r16 = r9 << 4; + r17 = r7 << 4; + r16 = (r15 + r16)|0; + r17 = (r15 + r17)|0; + r16 = r16 >> 2; + r17 = r17 >> 2; + f15 = heapFloat[(r16)]; + f16 = heapFloat[(r17+1)]; + f12 = f15-f12; + f14 = f16-f14; + f12 = f12*f4; + f14 = f14*f5; + if(f14 >f12) //_LBB156_32 +{ +__label__ = 30; +} +else{ + r16 = r11 << 4; + r16 = (r15 + r16)|0; + r16 = r16 >> 2; + f15 = heapFloat[(r16+2)]; + f16 = heapFloat[(r2+2)]; + f15 = f15-f16; + f10 = f10 < f14 ? f14 : f10; + f14 = f15*f8; + if(f10 >f14) //_LBB156_32 +{ +__label__ = 30; +} +else{ + r16 = r8 << 4; + r15 = (r15 + r16)|0; + r15 = r15 >> 2; + f15 = heapFloat[(r15+2)]; + f15 = f15-f16; + f12 = f13 < f12 ? f13 : f12; + f13 = f15*f8; + if(f13 >f12) //_LBB156_32 +{ +__label__ = 30; +} +else{ + f10 = f10 < f13 ? f13 : f10; + f12 = f14 < f12 ? f14 : f12; + r15 = f10 >= f3; + r16 = f12 <= f6; + r15 = r15 | r16; + r16 = r15 & 1; + r17 = heap32[(r14+8)]; + r18 = -1; + r16 = r16 ^ 1; + r19 = r17 == r18; + if(r15 != 0) //_LBB156_31 +{ +__label__ = 32; +} +else{ + r15 = r17 != r18; + r15 = r15 & 1; + if(r15 ==0) //_LBB156_33 +{ + r15 = r1 >> 2; + r15 = heap32[(r15)]; + r15 = r15 >> 2; + r15 = heap32[(r15+2)]; + r17 = heap32[(r14+10)]; + r18 = heap32[(r14+9)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r18; + heap32[(g0+2)] = r17; + __FUNCTION_TABLE__[(r15)>>2](i7); +__label__ = 32; +} +else{ +__label__ = 32; +} +} +} +} +} +} +} +} +} +if (__label__ == 30){ + r16 = heap32[(r14+8)]; + r19 = -1; + r19 = r16 == r19; + r16 = 0; +} +if(!(r16 !=0)) //_LBB156_36 +{ + r15 = r19 & 1; + if(r15 ==0) //_LBB156_37 +{ + r14 = heap32[(r14+8)]; + r15 = r14 << 6; + r6 = (r6 + r15)|0; + r12 = (r14 + r12)|0; +continue _15; +} +} + r6 = (r6 + 64)|0; + r12 = (r12 + 1)|0; +} +else{ +__label__ = 13; +break _15; +} +} +else{ +__label__ = 37; +break _15; +} +} +switch(__label__ ){//multiple entries +case 37: + r0 = maxIterations; + r0 = r0 >> 2; + r1 = heap32[(r0)]; +if(!(r1 >=r13)) //_LBB156_41 +{ + heap32[(r0)] = r13; +} + return; +break; +case 13: + r0 = _2E_str1921; + r1 = _2E_str537; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 490; + _assert(i7); +break; +} +} +else{ + r0 = _2E_str1844; + r1 = _2E_str537; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 451; + _assert(i7); +} +} + +function _ZN30btActivatingCollisionAlgorithmD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV30btActivatingCollisionAlgorithm; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN30btActivatingCollisionAlgorithmD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV30btActivatingCollisionAlgorithm; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN26btBoxBoxCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp) +{ + var i7; + var fp = sp>>2; + var f0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + f0 = 1; + f_g0 = f0; + return; +} + +function _ZN26btBoxBoxCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+3)]; +if(!(r2 ==0)) //_LBB160_23 +{ + r0 = heapU8[r0+8]; +if(!(r0 ==0)) //_LBB160_23 +{ + r0 = heap32[(fp+1)]; + r3 = r0 >> 2; + r4 = heap32[(r3+2)]; + r5 = heap32[(r3+1)]; + if(r4 ==r5) //_LBB160_4 +{ + r6 = 1; + r7 = r5 << 1; + r7 = r5 == 0 ? r6 : r7; +if(!(r4 >=r7)) //_LBB160_3 +{ + if(r7 !=0) //_LBB160_7 +{ + r2 = gNumAlignedAllocs; + r2 = r2 >> 2; + r4 = heap32[(r2)]; + r8 = r7 << 2; + r4 = (r4 + 1)|0; + r8 = r8 | 3; + heap32[(r2)] = r4; + r2 = (r8 + 16)|0; + heap32[(g0)] = r2; + malloc(i7); + r2 = r_g0; + if(r2 !=0) //_LBB160_9 +{ + r4 = 0; + r8 = (r2 + 4)|0; + r4 = (r4 - r8)|0; + r4 = r4 & 15; + r4 = (r2 + r4)|0; + r8 = (r4 + 4)|0; + r4 = r4 >> 2; + heap32[(r4)] = r2; + r2 = r8; +} +} +else{ + r2 = 0; +} + r4 = (r0 + 12)|0; + if(r5 <1) //_LBB160_12 +{ + r8 = r4 >> 2; + r9 = heap32[(r8)]; +} +else{ + r8 = 0; +_15: while(true){ + r9 = r4 >> 2; + r9 = heap32[(r9)]; + r10 = r8 << 2; + r11 = (r9 + r10)|0; + r11 = r11 >> 2; + r10 = (r2 + r10)|0; + r11 = heap32[(r11)]; + r8 = (r8 + 1)|0; + r10 = r10 >> 2; + heap32[(r10)] = r11; +if(!(r5 !=r8)) //_LBB160_13 +{ +break _15; +} +} + r4 = (r0 + 12)|0; +} + if(r9 !=0) //_LBB160_17 +{ + r8 = heapU8[r0+16]; + if(r8 !=0) //_LBB160_19 +{ + r5 = gNumAlignedFree; + r5 = r5 >> 2; + r8 = heap32[(r5)]; + r8 = (r8 + 1)|0; + r9 = r9 >> 2; + heap32[(r5)] = r8; + r5 = heap32[(r9+-1)]; + heap32[(g0)] = r5; + free(i7); + r5 = heap32[(r3+1)]; +} + r8 = r4 >> 2; + heap32[(r8)] = 0; +} + r4 = r4 >> 2; + heap8[r0+16] = r6; + heap32[(r4)] = r2; + heap32[(r3+2)] = r7; + r2 = heap32[(r1+3)]; +} +} + r0 = r5 << 2; + r1 = heap32[(r3+3)]; + r0 = (r1 + r0)|0; + r0 = r0 >> 2; + heap32[(r0)] = r2; + r0 = heap32[(r3+1)]; + r0 = (r0 + 1)|0; + heap32[(r3+1)] = r0; +} +} + return; +} + +function _ZN26btBoxBoxCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; +var __label__ = 0; + i7 = sp + -176;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r1 = heap32[(r1+3)]; +if(!(r1 ==0)) //_LBB161_8 +{ + r2 = heap32[(fp+1)]; + r3 = heap32[(fp+2)]; + r4 = heap32[(fp+3)]; + r5 = heap32[(fp+4)]; + r3 = r3 >> 2; + r2 = r2 >> 2; + r6 = heap32[(r3+48)]; + r7 = heap32[(r2+48)]; + r8 = sp + -136; + r9 = r5 >> 2; + r10 = r8 >> 2; + heap32[(r9+1)] = r1; + heap32[(r10+33)] = 0; + heap32[(r10+32)] = 1566444395; + heap32[(fp+-34)] = heap32[(r2+1)]; + heap32[(r10+1)] = heap32[(r2+2)]; + heap32[(r10+2)] = heap32[(r2+3)]; + heap32[(r10+3)] = heap32[(r2+4)]; + heap32[(r10+4)] = heap32[(r2+5)]; + heap32[(r10+5)] = heap32[(r2+6)]; + heap32[(r10+6)] = heap32[(r2+7)]; + heap32[(r10+7)] = heap32[(r2+8)]; + heap32[(r10+8)] = heap32[(r2+9)]; + heap32[(r10+9)] = heap32[(r2+10)]; + heap32[(r10+10)] = heap32[(r2+11)]; + heap32[(r10+11)] = heap32[(r2+12)]; + heap32[(r10+12)] = heap32[(r2+13)]; + heap32[(r10+13)] = heap32[(r2+14)]; + heap32[(r10+14)] = heap32[(r2+15)]; + heap32[(r10+15)] = heap32[(r2+16)]; + heap32[(r10+16)] = heap32[(r3+1)]; + heap32[(r10+17)] = heap32[(r3+2)]; + heap32[(r10+18)] = heap32[(r3+3)]; + heap32[(r10+19)] = heap32[(r3+4)]; + heap32[(r10+20)] = heap32[(r3+5)]; + heap32[(r10+21)] = heap32[(r3+6)]; + heap32[(r10+22)] = heap32[(r3+7)]; + heap32[(r10+23)] = heap32[(r3+8)]; + heap32[(r10+24)] = heap32[(r3+9)]; + heap32[(r10+25)] = heap32[(r3+10)]; + heap32[(r10+26)] = heap32[(r3+11)]; + heap32[(r10+27)] = heap32[(r3+12)]; + heap32[(r10+28)] = heap32[(r3+13)]; + heap32[(r10+29)] = heap32[(r3+14)]; + r1 = _ZTV16btBoxBoxDetector; + heap32[(r10+30)] = heap32[(r3+15)]; + r2 = sp + -152; + r1 = (r1 + 8)|0; + heap32[(r10+31)] = heap32[(r3+16)]; + r3 = r2 >> 2; + heap32[(fp+-38)] = r1; + heap32[(r3+1)] = r7; + r1 = r4 >> 2; + heap32[(r3+2)] = r6; + r1 = heap32[(r1+5)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r1; + heap32[(g0+4)] = 0; + _ZN16btBoxBoxDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(i7); + r0 = heapU8[r0+8]; +if(!(r0 ==0)) //_LBB161_8 +{ + r0 = heap32[(r9+1)]; + if(r0 !=0) //_LBB161_4 +{ + r1 = r0 >> 2; + r2 = heap32[(r1+279)]; +if(!(r2 ==0)) //_LBB161_8 +{ + r1 = heap32[(r1+277)]; + r2 = heap32[(r9+34)]; + if(r1 ==r2) //_LBB161_7 +{ + r1 = (r5 + 8)|0; + r2 = (r5 + 72)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r2; + _ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7); +} +else{ + r1 = (r5 + 72)|0; + r5 = (r5 + 8)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r5; + _ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7); + return; +} +} +} +else{ + r0 = _2E_str59; + r5 = _2E_str160; + heap32[(g0)] = r0; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = 101; + _assert(i7); +} +} +} + return; +} + +function _ZN26btBoxBoxCollisionAlgorithmD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV26btBoxBoxCollisionAlgorithm; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heapU8[r0+8]; +if(!(r1 ==0)) //_LBB162_3 +{ + r1 = heap32[(r2+3)]; +if(!(r1 ==0)) //_LBB162_3 +{ + r3 = heap32[(r2+1)]; + r4 = r3 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+4)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r1; + __FUNCTION_TABLE__[(r4)>>2](i7); +} +} + r1 = _ZTV30btActivatingCollisionAlgorithm; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN26btBoxBoxCollisionAlgorithmD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV26btBoxBoxCollisionAlgorithm; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r0 = heapU8[r0+8]; +if(!(r0 ==0)) //_LBB163_3 +{ + r0 = heap32[(r2+3)]; +if(!(r0 ==0)) //_LBB163_3 +{ + r1 = heap32[(r2+1)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+4)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + __FUNCTION_TABLE__[(r3)>>2](i7); +} +} + r0 = _ZTV30btActivatingCollisionAlgorithm; + r0 = (r0 + 8)|0; + heap32[(r2)] = r0; + return; +} + +function _ZN16btBoxBoxDetectorD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV16btBoxBoxDetector; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN16btBoxBoxDetectorD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV16btBoxBoxDetector; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN16btBoxBoxDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var r19; + var r20; + var r21; + var r22; + var r23; + var r24; + var r25; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; + var f30; +var __label__ = 0; + i7 = sp + -808;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = r0 >> 2; + r2 = sp + -640; + heap32[(fp+-160)] = heap32[(r1)]; + r3 = sp + -688; + heap32[(fp+-172)] = heap32[(r1+16)]; + r4 = r2 >> 2; + r5 = r3 >> 2; + heap32[(r4+1)] = heap32[(r1+1)]; + heap32[(r5+1)] = heap32[(r1+17)]; + heap32[(r4+2)] = heap32[(r1+2)]; + heap32[(r5+2)] = heap32[(r1+18)]; + heap32[(r4+4)] = heap32[(r1+4)]; + heap32[(r5+4)] = heap32[(r1+20)]; + heap32[(r4+5)] = heap32[(r1+5)]; + heap32[(r5+5)] = heap32[(r1+21)]; + heap32[(r4+6)] = heap32[(r1+6)]; + heap32[(r5+6)] = heap32[(r1+22)]; + heap32[(r4+8)] = heap32[(r1+8)]; + heap32[(r5+8)] = heap32[(r1+24)]; + heap32[(r4+9)] = heap32[(r1+9)]; + heap32[(r5+9)] = heap32[(r1+25)]; + r6 = heap32[(fp)]; + heap32[(r4+10)] = heap32[(r1+10)]; + r6 = r6 >> 2; + heap32[(r5+10)] = heap32[(r1+26)]; + r7 = heap32[(r6+2)]; + r8 = r7 >> 2; + r9 = heap32[(r8)]; + r9 = r9 >> 2; + r9 = heap32[(r9+11)]; + f0 = heapFloat[(r8+7)]; + f1 = heapFloat[(r8+8)]; + f2 = heapFloat[(r8+9)]; + heap32[(g0)] = r7; + __FUNCTION_TABLE__[(r9)>>2](i7); + f3 = f_g0; + r9 = heap32[(r8)]; + r9 = r9 >> 2; + r9 = heap32[(r9+11)]; + heap32[(g0)] = r7; + __FUNCTION_TABLE__[(r9)>>2](i7); + f4 = f_g0; + r8 = heap32[(r8)]; + r8 = r8 >> 2; + r8 = heap32[(r8+11)]; + heap32[(g0)] = r7; + __FUNCTION_TABLE__[(r8)>>2](i7); + f5 = f_g0; + r6 = heap32[(r6+1)]; + r7 = r6 >> 2; + r8 = heap32[(r7)]; + r8 = r8 >> 2; + f6 = heapFloat[(r7+8)]; + r8 = heap32[(r8+11)]; + f7 = heapFloat[(r7+9)]; + f8 = heapFloat[(r7+7)]; + heap32[(g0)] = r6; + __FUNCTION_TABLE__[(r8)>>2](i7); + f9 = f_g0; + r8 = heap32[(r7)]; + r8 = r8 >> 2; + r8 = heap32[(r8+11)]; + heap32[(g0)] = r6; + __FUNCTION_TABLE__[(r8)>>2](i7); + f10 = f_g0; + r7 = heap32[(r7)]; + r7 = r7 >> 2; + r7 = heap32[(r7+11)]; + heap32[(g0)] = r6; + __FUNCTION_TABLE__[(r7)>>2](i7); + f8 = f8+f_g0; + f6 = f6+f10; + f8 = f8+f8; + f10 = 0.5; + heapFloat[(fp+-187)] = f10; + f11 = heapFloat[(r1+30)]; + f12 = heapFloat[(r1+14)]; + f13 = heapFloat[(r1+29)]; + f14 = heapFloat[(r1+13)]; + f15 = heapFloat[(r1+28)]; + f16 = heapFloat[(r1+12)]; + f17 = heapFloat[(fp+-160)]; + f18 = heapFloat[(r4+4)]; + f19 = heapFloat[(r4+8)]; + f20 = heapFloat[(r4+1)]; + f21 = heapFloat[(r4+5)]; + f22 = heapFloat[(r4+9)]; + f23 = heapFloat[(r4+2)]; + f24 = heapFloat[(r4+6)]; + f25 = heapFloat[(r4+10)]; + r4 = sp + -236; + f7 = f7+f9; + f6 = f6+f6; + f8 = f8*f10; + heapFloat[(fp+-179)] = f8; + f0 = f0+f5; + f5 = f7+f7; + f6 = f6*f10; + heapFloat[(fp+-178)] = f6; + r6 = r4 >> 2; + heapFloat[(fp+-59)] = f8; + f1 = f1+f4; + f0 = f0+f0; + f4 = f5*f10; + heapFloat[(fp+-177)] = f4; + heapFloat[(r6+1)] = f6; + r7 = sp + -248; + heap32[(fp+-186)] = r7; + f2 = f2+f3; + f1 = f1+f1; + f0 = f0*f10; + heapFloat[(fp+-181)] = f0; + heapFloat[(r6+2)] = f4; + f2 = f2+f2; + f1 = f1*f10; + heapFloat[(fp+-182)] = f1; + r6 = r7 >> 2; + heapFloat[(fp+-62)] = f0; + f0 = f2*f10; + heapFloat[(fp+-180)] = f0; + heapFloat[(r6+1)] = f1; + heapFloat[(r6+2)] = f0; + f0 = f15-f16; + heapFloat[(fp+-183)] = f0; + f1 = f13-f14; + heapFloat[(fp+-184)] = f1; + f2 = heapFloat[(fp+-172)]; + heapFloat[(fp+-194)] = f2; + f3 = heapFloat[(r5+4)]; + heapFloat[(fp+-195)] = f3; + f4 = heapFloat[(r5+1)]; + heapFloat[(fp+-191)] = f4; + f5 = heapFloat[(r5+5)]; + heapFloat[(fp+-192)] = f5; + f6 = heapFloat[(r5+2)]; + heapFloat[(fp+-188)] = f6; + f7 = heapFloat[(r5+6)]; + heapFloat[(fp+-189)] = f7; + f8 = f11-f12; + heapFloat[(fp+-185)] = f8; + f9 = heapFloat[(r5+8)]; + heapFloat[(fp+-196)] = f9; + f10 = heapFloat[(r5+9)]; + heapFloat[(fp+-193)] = f10; + f11 = heapFloat[(r5+10)]; + heapFloat[(fp+-190)] = f11; + f12 = f17*f2; + f13 = f18*f3; + f14 = f17*f0; + f15 = f18*f1; + f16 = f20*f0; + f26 = f21*f1; + f0 = f23*f0; + heapFloat[(fp+-198)] = f0; + f1 = f24*f1; + f27 = f17*f4; + f28 = f18*f5; + f17 = f17*f6; + f18 = f18*f7; + f29 = f20*f2; + f30 = f21*f3; + f0 = f20*f4; + heapFloat[(fp+-197)] = f0; + f0 = f21*f5; + f20 = f20*f6; + f21 = f21*f7; + f2 = f23*f2; + f3 = f24*f3; + f4 = f23*f4; + f5 = f24*f5; + f6 = f23*f6; + f7 = f24*f7; + f12 = f12+f13; + f13 = f19*f9; + f14 = f14+f15; + f15 = f19*f8; + f16 = f16+f26; + f23 = f22*f8; + f24 = heapFloat[(fp+-198)]; + f1 = f24+f1; + f8 = f25*f8; + f24 = f27+f28; + f26 = f19*f10; + f17 = f17+f18; + f18 = f19*f11; + f19 = f29+f30; + f27 = f22*f9; + f28 = heapFloat[(fp+-197)]; + f0 = f28+f0; + f28 = f22*f10; + f20 = f20+f21; + f21 = f22*f11; + f2 = f2+f3; + f3 = f25*f9; + f4 = f4+f5; + f5 = f25*f10; + f6 = f6+f7; + f7 = f25*f11; + f9 = f12+f13; + r5 = heap32[(fp+2)]; + r6 = (r2 + 4)|0; + r7 = (r3 + 4)|0; + r8 = (r2 + 8)|0; + r9 = (r3 + 8)|0; + r10 = (r0 + 112)|0; + r0 = (r0 + 48)|0; + f10 = f14+f15; + f11 = f16+f23; + f1 = f1+f8; + f8 = f24+f26; + f12 = f17+f18; + f13 = f19+f27; + f0 = f0+f28; + f14 = f20+f21; + f2 = f2+f3; + f3 = f4+f5; + f4 = f6+f7; + f5 = 0; + if(f9 f5)) //_LBB166_268 +{ + f23 = -3.4028234663852886e+038; + if(f22 >f23) //_LBB166_33 +{ + f23 = 0; + r11 = f10 < f23; + r13 = sp + -640; + r11 = r11 & 1; + r12 = 1; + f23 = f22; +} +else{ + r11 = 0; + r12 = r11; + r13 = r11; +} + if(f11 f5)) //_LBB166_268 +{ + if(f22 >f23) //_LBB166_40 +{ + f23 = 0; + r11 = f11 < f23; + r11 = r11 & 1; + r12 = 2; + f23 = f22; + r13 = r6; +} + if(f1 f5)) //_LBB166_268 +{ + if(f22 >f23) //_LBB166_47 +{ + f23 = 0; + r11 = f1 < f23; + r11 = r11 & 1; + r12 = 3; + f23 = f22; + r13 = r8; +} + f24 = heapFloat[(fp+-183)]; + f22 = heapFloat[(fp+-194)]; + f22 = f22*f24; + f25 = heapFloat[(fp+-184)]; + f24 = heapFloat[(fp+-195)]; + f24 = f24*f25; + f22 = f22+f24; + f25 = heapFloat[(fp+-185)]; + f24 = heapFloat[(fp+-196)]; + f24 = f24*f25; + f22 = f22+f24; + if(f22 f5)) //_LBB166_268 +{ + if(f24 >f23) //_LBB166_54 +{ + f23 = 0; + r11 = f22 < f23; + r13 = sp + -688; + r11 = r11 & 1; + r12 = 4; + f23 = f24; +} + f24 = heapFloat[(fp+-183)]; + f22 = heapFloat[(fp+-191)]; + f22 = f22*f24; + f25 = heapFloat[(fp+-184)]; + f24 = heapFloat[(fp+-192)]; + f24 = f24*f25; + f22 = f22+f24; + f25 = heapFloat[(fp+-185)]; + f24 = heapFloat[(fp+-193)]; + f24 = f24*f25; + f22 = f22+f24; + if(f22 f5)) //_LBB166_268 +{ + if(f24 >f23) //_LBB166_61 +{ + f23 = 0; + r11 = f22 < f23; + r11 = r11 & 1; + r12 = 5; + f23 = f24; + r13 = r7; +} + f24 = heapFloat[(fp+-183)]; + f22 = heapFloat[(fp+-188)]; + f22 = f22*f24; + f25 = heapFloat[(fp+-184)]; + f24 = heapFloat[(fp+-189)]; + f24 = f24*f25; + f22 = f22+f24; + f25 = heapFloat[(fp+-185)]; + f24 = heapFloat[(fp+-190)]; + f24 = f24*f25; + f22 = f22+f24; + if(f22 f5)) //_LBB166_268 +{ + if(f24 >f23) //_LBB166_68 +{ + f23 = 0; + r11 = f22 < f23; + r11 = r11 & 1; + r12 = 6; + f23 = f24; + r13 = r9; +} + f22 = f1*f13; + f24 = f11*f2; + f25 = 9.9999997473787516e-006; + f22 = f22-f24; + f6 = f6+f25; + f7 = f7+f25; + f15 = f15+f25; + heapFloat[(fp+-183)] = f15; + f15 = f16+f25; + f16 = f17+f25; + f17 = f18+f25; + f18 = f19+f25; + heapFloat[(fp+-184)] = f18; + f18 = f20+f25; + heapFloat[(fp+-185)] = f18; + f18 = f21+f25; + if(f22 f20)) //_LBB166_268 +{ + f21 = f2*f2; + f21 = f21+f5; + f24 = f13*f13; + heapFloat[(fp+-188)] = f24; + f24 = f21+f24; + heapFloat[(g0)] = f24; + sqrtf(i7); + f24 = f_g0; + if(f24 >f20) //_LBB166_75 +{ + f25 = f19/f24; + f19 = 1.0499999523162842; + f19 = f25*f19; + if(f19 <=f23) //_LBB166_74 +{ +__label__ = 69; +} +else{ + f19 = 0; + f23 = -f2; + r11 = f22 < f19; + f19 = f19/f24; + f22 = f23/f24; + f24 = f13/f24; + r11 = r11 & 1; + r12 = 7; + r13 = 0; + f23 = f25; +__label__ = 72; +} +} +else{ +__label__ = 69; +} +if (__label__ == 69){ + f19 = f5; + f22 = f5; + f24 = f5; +} + f25 = f1*f0; + f26 = f11*f3; + f25 = f25-f26; + if(f25 f20)) //_LBB166_268 +{ + f26 = f3*f3; + f27 = 0; + f26 = f26+f27; + f28 = f0*f0; + heapFloat[(fp+-189)] = f28; + f28 = f26+f28; + heapFloat[(g0)] = f28; + sqrtf(i7); + f28 = f_g0; + if(f28 >f20) //_LBB166_83 +{ + f5 = f5/f28; + f29 = 1.0499999523162842; + f29 = f5*f29; +if(!(f29 <=f23)) //_LBB166_82 +{ + f19 = 0; + f22 = -f3; + r11 = f25 < f19; + f19 = f19/f28; + f22 = f22/f28; + f24 = f0/f28; + r11 = r11 & 1; + r12 = 8; + r13 = 0; + f23 = f5; +} +} + f5 = f1*f14; + f25 = f11*f4; + f5 = f5-f25; + if(f5 f20)) //_LBB166_268 +{ + f28 = f4*f4; + f28 = f28+f27; + f29 = f14*f14; + heapFloat[(fp+-190)] = f29; + f29 = f28+f29; + heapFloat[(g0)] = f29; + sqrtf(i7); + f29 = f_g0; + if(f29 >f20) //_LBB166_91 +{ + f25 = f25/f29; + f30 = 1.0499999523162842; + f30 = f25*f30; +if(!(f30 <=f23)) //_LBB166_90 +{ + f19 = 0; + f22 = -f4; + r11 = f5 < f19; + f19 = f19/f29; + f22 = f22/f29; + f24 = f14/f29; + r11 = r11 & 1; + r12 = 9; + r13 = 0; + f23 = f25; +} +} + f5 = f10*f2; + f25 = f1*f9; + f5 = f5-f25; + if(f5 f20)) //_LBB166_268 +{ + f29 = f9*f9; + f21 = f21+f29; + heapFloat[(g0)] = f21; + sqrtf(i7); + f21 = f_g0; + if(f21 >f20) //_LBB166_99 +{ + f25 = f25/f21; + f30 = 1.0499999523162842; + f30 = f25*f30; +if(!(f30 <=f23)) //_LBB166_98 +{ + f22 = 0; + f23 = -f9; + r11 = f5 < f22; + f19 = f2/f21; + f22 = f22/f21; + f24 = f23/f21; + r11 = r11 & 1; + r12 = 10; + r13 = 0; + f23 = f25; +} +} + f2 = f10*f3; + f5 = f1*f8; + f2 = f2-f5; + if(f2 f20)) //_LBB166_268 +{ + f21 = f8*f8; + f25 = f26+f21; + heapFloat[(g0)] = f25; + sqrtf(i7); + f25 = f_g0; + if(f25 >f20) //_LBB166_107 +{ + f5 = f5/f25; + f26 = 1.0499999523162842; + f26 = f5*f26; +if(!(f26 <=f23)) //_LBB166_106 +{ + f22 = 0; + f23 = -f8; + r11 = f2 < f22; + f19 = f3/f25; + f22 = f22/f25; + f24 = f23/f25; + r11 = r11 & 1; + r12 = 11; + r13 = 0; + f23 = f5; +} +} + f2 = f10*f4; + f1 = f1*f12; + f1 = f2-f1; + if(f1 f20)) //_LBB166_268 +{ + f3 = f12*f12; + f5 = f28+f3; + heapFloat[(g0)] = f5; + sqrtf(i7); + f5 = f_g0; + if(f5 >f20) //_LBB166_115 +{ + f2 = f2/f5; + f25 = 1.0499999523162842; + f25 = f2*f25; +if(!(f25 <=f23)) //_LBB166_114 +{ + f22 = 0; + f23 = -f12; + r11 = f1 < f22; + f19 = f4/f5; + f22 = f22/f5; + f24 = f23/f5; + r11 = r11 & 1; + r12 = 12; + r13 = 0; + f23 = f2; +} +} + f1 = f11*f9; + f2 = f10*f13; + f1 = f1-f2; + if(f1 f20)) //_LBB166_268 +{ + f4 = heapFloat[(fp+-188)]; + f4 = f4+f29; + f4 = f4+f27; + heapFloat[(g0)] = f4; + sqrtf(i7); + f4 = f_g0; + if(f4 >f20) //_LBB166_123 +{ + f2 = f2/f4; + f5 = 1.0499999523162842; + f5 = f2*f5; +if(!(f5 <=f23)) //_LBB166_122 +{ + f23 = 0; + f19 = -f13; + r11 = f1 < f23; + f19 = f19/f4; + f22 = f9/f4; + f24 = f23/f4; + r11 = r11 & 1; + r12 = 13; + r13 = 0; + f23 = f2; +} +} + f1 = f11*f8; + f2 = f10*f0; + f1 = f1-f2; + if(f1 f20)) //_LBB166_268 +{ + f4 = heapFloat[(fp+-189)]; + f4 = f4+f21; + f4 = f4+f27; + heapFloat[(g0)] = f4; + sqrtf(i7); + f4 = f_g0; + if(f4 >f20) //_LBB166_131 +{ + f2 = f2/f4; + f5 = 1.0499999523162842; + f5 = f2*f5; +if(!(f5 <=f23)) //_LBB166_130 +{ + f23 = 0; + f19 = -f0; + r11 = f1 < f23; + f19 = f19/f4; + f22 = f8/f4; + f24 = f23/f4; + r11 = r11 & 1; + r12 = 14; + r13 = 0; + f23 = f2; +} +} + f0 = f11*f12; + f1 = f10*f14; + f0 = f0-f1; + if(f0 f20)) //_LBB166_268 +{ + f2 = heapFloat[(fp+-190)]; + f2 = f2+f3; + f2 = f2+f27; + heapFloat[(g0)] = f2; + sqrtf(i7); + f2 = f_g0; + if(f2 <=f20) //_LBB166_140 +{ +__label__ = 128; +} +else{ + f1 = f1/f2; + heapFloat[(fp+-183)] = f1; + f3 = 1.0499999523162842; + f1 = f1*f3; + if(f1 <=f23) //_LBB166_140 +{ +__label__ = 128; +} +else{ + f23 = 0; + f19 = -f14; + r11 = f0 < f23; + f19 = f19/f2; + f22 = f12/f2; + f24 = f23/f2; + r11 = r11 & 1; + r13 = sp + -704; + r12 = 15; +__label__ = 132; +} +} +if (__label__ == 128){ + if(r12 ==0) //_LBB166_268 +{ +break _41; +} +else{ + if(r13 !=0) //_LBB166_143 +{ + r13 = r13 >> 2; + f0 = heapFloat[(r13)]; + r6 = sp + -704; + heapFloat[(fp+-176)] = f0; + f1 = heapFloat[(r13+4)]; + r6 = r6 >> 2; + heapFloat[(r6+1)] = f1; + f19 = heapFloat[(r13+8)]; + heapFloat[(r6+2)] = f19; + heapFloat[(fp+-183)] = f23; +__label__ = 133; +} +else{ + r13 = sp + -704; + heapFloat[(fp+-183)] = f23; +__label__ = 132; +} +} +} +if (__label__ == 132){ + r6 = sp + -640; + r6 = r6 >> 2; + f0 = heapFloat[(fp+-160)]; + f1 = heapFloat[(r6+1)]; + f2 = heapFloat[(r6+2)]; + f0 = f0*f19; + f1 = f1*f22; + f0 = f0+f1; + f1 = f2*f24; + f0 = f0+f1; + r7 = r13 >> 2; + heapFloat[(r7)] = f0; + f1 = heapFloat[(r6+4)]; + f2 = heapFloat[(r6+5)]; + f3 = heapFloat[(r6+6)]; + f1 = f1*f19; + f2 = f2*f22; + r7 = sp + -704; + f1 = f1+f2; + f2 = f3*f24; + f1 = f1+f2; + r7 = r7 >> 2; + heapFloat[(r7+1)] = f1; + f2 = heapFloat[(r6+8)]; + f3 = heapFloat[(r6+9)]; + f4 = heapFloat[(r6+10)]; + f19 = f2*f19; + f2 = f3*f22; + f19 = f19+f2; + f2 = f4*f24; + f19 = f19+f2; + heapFloat[(r7+2)] = f19; +} + if(r11 !=0) //_LBB166_147 +{ + f0 = -f0; + r6 = sp + -704; + f1 = -f1; + r6 = r6 >> 2; + heapFloat[(fp+-176)] = f0; + f19 = -f19; + heapFloat[(r6+1)] = f1; + heapFloat[(r6+2)] = f19; +} + if(r12 <7) //_LBB166_153 +{ + if(r12 >3) //_LBB166_155 +{ + f0 = -f0; + f1 = -f1; + f19 = -f19; + r1 = r0; + r0 = r10; +} +else{ + r3 = sp + -640; + r2 = sp + -688; + r4 = sp + -236; + heap32[(fp+-186)] = r4; + r4 = sp + -248; + r1 = r10; +} + r6 = r2 >> 2; + f2 = heapFloat[(r6)]; + f3 = heapFloat[(r6+4)]; + f4 = heapFloat[(r6+8)]; + f2 = f2*f0; + f3 = f3*f1; + f2 = f2+f3; + f3 = f4*f19; + f2 = f2+f3; + heapFloat[(fp+-66)] = f2; + f3 = heapFloat[(r6+1)]; + f4 = heapFloat[(r6+5)]; + f5 = heapFloat[(r6+9)]; + f3 = f3*f0; + f4 = f4*f1; + r7 = sp + -264; + f3 = f3+f4; + f4 = f5*f19; + f3 = f3+f4; + r8 = r7 >> 2; + heapFloat[(r8+1)] = f3; + f4 = heapFloat[(r6+2)]; + f5 = heapFloat[(r6+6)]; + f6 = heapFloat[(r6+10)]; + f4 = f4*f0; + f5 = f5*f1; + f4 = f4+f5; + f5 = f6*f19; + f4 = f4+f5; + heapFloat[(r8+2)] = f4; + if(f2 > 2; + r0 = r0 >> 2; + r11 = r11 >> 2; + r13 = r13 >> 2; + f2 = heapFloat[(r11)]; + f3 = heapFloat[(r13)]; + f4 = heapFloat[(r1)]; + f5 = heapFloat[(r0)]; + r7 = (r7 + r10)|0; + f4 = f4-f5; + f3 = f2*f3; + r7 = r7 >> 2; + f5 = heapFloat[(r7)]; + if(f5 > 2; + r6 = r6 >> 2; + f5 = heapFloat[(r1+1)]; + f6 = heapFloat[(r0+1)]; + f7 = heapFloat[(r7)]; + f8 = heapFloat[(r6)]; + f9 = heapFloat[(r1+2)]; + f10 = heapFloat[(r0+2)]; + f5 = f5-f6; + f6 = f2*f7; + f7 = f9-f10; + f2 = f2*f8; + f3 = f4+f3; + f4 = f5+f6; + f2 = f7+f2; +} +else{ + r7 = r6 | 4; + r6 = r6 | 8; + r7 = r7 << 2; + r6 = r6 << 2; + r7 = (r2 + r7)|0; + r6 = (r2 + r6)|0; + r7 = r7 >> 2; + r6 = r6 >> 2; + f5 = heapFloat[(r1+1)]; + f6 = heapFloat[(r0+1)]; + f7 = heapFloat[(r7)]; + f8 = heapFloat[(r6)]; + f9 = heapFloat[(r1+2)]; + f10 = heapFloat[(r0+2)]; + f5 = f5-f6; + f6 = f2*f7; + f7 = f9-f10; + f2 = f2*f8; + f3 = f4-f3; + f4 = f5-f6; + f2 = f7-f2; +} + r1 = -1; + r6 = -4; + r6 = r12 < 4 ? r1 : r6; + r6 = (r6 + r12)|0; + if(r6 ==1) //_LBB166_178 +{ + r7 = 0; + r10 = 2; +} +else{ + if(r6 !=0) //_LBB166_179 +{ + r7 = 0; + r10 = 1; +} +else{ + r7 = 1; + r10 = 2; +} +} + r11 = r8 | 4; + r13 = r7 | 4; + r14 = r8 | 8; + r15 = r9 | 4; + r16 = r7 | 8; + r17 = r10 | 4; + r7 = r7 << 2; + r13 = r13 << 2; + r11 = r11 << 2; + r8 = r8 << 2; + r18 = r9 | 8; + r19 = (r3 + r7)|0; + r13 = (r3 + r13)|0; + r16 = r16 << 2; + r20 = r10 << 2; + r17 = r17 << 2; + r10 = r10 | 8; + r21 = (r2 + r8)|0; + r11 = (r2 + r11)|0; + r14 = r14 << 2; + r15 = r15 << 2; + r9 = r9 << 2; + r19 = r19 >> 2; + r13 = r13 >> 2; + r16 = (r3 + r16)|0; + r22 = (r3 + r20)|0; + r17 = (r3 + r17)|0; + r10 = r10 << 2; + r21 = r21 >> 2; + heap32[(fp+-178)] = r21; + r11 = r11 >> 2; + heap32[(fp+-177)] = r11; + r14 = (r2 + r14)|0; + r23 = (r2 + r9)|0; + r15 = (r2 + r15)|0; + r18 = r18 << 2; + r16 = r16 >> 2; + r22 = r22 >> 2; + r17 = r17 >> 2; + r3 = (r3 + r10)|0; + r10 = r14 >> 2; + heap32[(fp+-179)] = r10; + r14 = r23 >> 2; + heap32[(fp+-180)] = r14; + r15 = r15 >> 2; + r2 = (r2 + r18)|0; + f5 = heapFloat[(r19)]; + f6 = heapFloat[(r21)]; + f7 = heapFloat[(r13)]; + f8 = heapFloat[(r11)]; + f9 = heapFloat[(r22)]; + f10 = heapFloat[(r14)]; + f11 = heapFloat[(r17)]; + f12 = heapFloat[(r15)]; + r3 = r3 >> 2; + r2 = r2 >> 2; + r8 = (r4 + r8)|0; + f13 = f5*f6; + f14 = f7*f8; + f15 = heapFloat[(r16)]; + f16 = heapFloat[(r10)]; + f17 = heapFloat[(r3)]; + f18 = heapFloat[(r2)]; + r3 = r8 >> 2; + r4 = (r4 + r9)|0; + f6 = f9*f6; + f8 = f11*f8; + f21 = f3*f5; + f22 = f4*f7; + f13 = f13+f14; + f14 = f15*f16; + f5 = f5*f10; + f7 = f7*f12; + f13 = f13+f14; + f14 = heapFloat[(r3)]; + r3 = r4 >> 2; + f23 = f3*f9; + f24 = f4*f11; + f6 = f6+f8; + f8 = f17*f16; + f9 = f9*f10; + f10 = f11*f12; + f11 = f21+f22; + f12 = f2*f15; + f5 = f5+f7; + f7 = f15*f18; + f6 = f6+f8; + f8 = f11+f12; + f11 = f14*f13; + f5 = f5+f7; + f7 = heapFloat[(r3)]; + f12 = f23+f24; + f15 = f2*f17; + f9 = f9+f10; + f10 = f17*f18; + f9 = f9+f10; + f10 = f12+f15; + f12 = f14*f6; + f14 = f8-f11; + f15 = f7*f5; + r3 = sp + -296; + f16 = f10-f12; + f7 = f7*f9; + f17 = f14-f15; + r4 = r3 >> 2; + f18 = f16-f7; + heapFloat[(fp+-74)] = f17; + f14 = f14+f15; + heapFloat[(r4+1)] = f18; + f11 = f8+f11; + f16 = f16+f7; + heapFloat[(r4+2)] = f14; + f12 = f10+f12; + f14 = f11+f15; + heapFloat[(r4+3)] = f16; + f16 = f12+f7; + heapFloat[(r4+4)] = f14; + f11 = f11-f15; + heapFloat[(r4+5)] = f16; + r8 = heap32[(fp+-186)]; + r7 = (r8 + r7)|0; + f7 = f12-f7; + heapFloat[(r4+6)] = f11; + r9 = sp + -304; + r8 = (r8 + r20)|0; + r7 = r7 >> 2; + heapFloat[(r4+7)] = f7; + r4 = sp + -368; + r10 = 0; + r11 = 4; + r13 = r9 >> 2; + r8 = r8 >> 2; + heap32[(fp+-76)] = heap32[(r7)]; + heap32[(r13+1)] = heap32[(r8)]; + r7 = r10; +_217: while(true){ + if(r7 <2) //_LBB166_199 +{ + r18 = 0; + r17 = (r18 - r7)|0; + r14 = r1; + r8 = r4; +_220: while(true){ + r4 = r8; + if(r14 >1) //_LBB166_196 +{ +break _220; +} +else{ + f7 = r14; //fitos r14, f7 + r16 = (r3 + 8)|0; + r8 = r18; + r10 = r18; + r13 = r4; +_223: while(true){ + if(r11 >0) //_LBB166_181 +{ + r19 = (r3 + r8)|0; + r20 = (r16 + r8)|0; + r21 = r7 << 2; + r22 = (r9 + r21)|0; + r23 = (r19 + r21)|0; + r22 = r22 >> 2; + r23 = r23 >> 2; + f11 = heapFloat[(r22)]; + f12 = heapFloat[(r23)]; + f14 = f7*f12; + if(f14 > 2; + r25 = r19 >> 2; + r10 = (r10 + 1)|0; + heap32[(r24)] = heap32[(r25)]; + heap32[(r24+1)] = heap32[(r25+1)]; + r24 = r10 & 8; + if(r24 ==0) //_LBB166_185 +{ + r13 = (r13 + 8)|0; + f12 = heapFloat[(r23)]; + f11 = heapFloat[(r22)]; +} +else{ +__label__ = 179; +break _217; +} +} + r20 = r11 > 1 ? r20 : r3; + r23 = (r20 + r21)|0; + r23 = r23 >> 2; + f14 = heapFloat[(r23)]; + f15 = f7*f12; + f16 = f7*f14; + r23 = f15 < f11; + r24 = f16 < f11; + r23 = r23 ^ r24; + if(r23 != 0) //_LBB166_188 +{ + r23 = r17 << 2; + r19 = (r19 + r23)|0; + r20 = (r20 + r23)|0; + r19 = r19 >> 2; + r20 = r20 >> 2; + f15 = heapFloat[(r19+1)]; + f16 = heapFloat[(r20+1)]; + f11 = f7*f11; + f16 = f16-f15; + f14 = f14-f12; + f14 = f16/f14; + f11 = f11-f12; + r19 = (r13 + r23)|0; + f11 = f14*f11; + r19 = r19 >> 2; + f11 = f15+f11; + heapFloat[(r19+1)] = f11; + r19 = (r13 + r21)|0; + f11 = heapFloat[(r22)]; + r10 = (r10 + 1)|0; + r19 = r19 >> 2; + f11 = f7*f11; + heapFloat[(r19)] = f11; + r19 = r10 & 8; + if(r19 ==0) //_LBB166_190 +{ + r13 = (r13 + 8)|0; +} +else{ +__label__ = 179; +break _217; +} +} + r11 = (r11 + -1)|0; + r8 = (r8 + 8)|0; +} +else{ +break _223; +} +} + r3 = sp + -368; + r8 = sp + -128; + r8 = r4 == r3 ? r8 : r3; + r14 = (r14 + 2)|0; + r3 = r4; + r11 = r10; +} +} + r7 = (r7 + 1)|0; +} +else{ +__label__ = 177; +break _217; +} +} +if (__label__ == 177){ + r4 = r3; +} + r1 = sp + -368; +if(!(r4 ==r1)) //_LBB166_202 +{ + r3 = r10 << 3; + heap32[(g0)] = r1; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r3; + memcpy(i7); +} + if(r10 <1) //_LBB166_268 +{ +break _41; +} +else{ + f7 = f13*f9; + f11 = f5*f6; + f12 = 1; + f7 = f7-f11; + r3 = r6 << 2; + f7 = f12/f7; + r4 = heap32[(fp+-186)]; + r3 = (r4 + r3)|0; + f6 = f6*f7; + r3 = r3 >> 2; + f11 = f13*f7; + f5 = f5*f7; + f7 = f9*f7; + f6 = -f6; + f9 = heapFloat[(r3)]; + r3 = heap32[(fp+-178)]; + f13 = heapFloat[(r3)]; + r3 = heap32[(fp+-180)]; + f14 = heapFloat[(r3)]; + r3 = heap32[(fp+-177)]; + f15 = heapFloat[(r3)]; + f16 = heapFloat[(r15)]; + r3 = heap32[(fp+-179)]; + f17 = heapFloat[(r3)]; + f18 = heapFloat[(r2)]; + r2 = (r1 + 4)|0; + r3 = 0; +_243: while(true){ + r4 = r2 >> 2; + f21 = heapFloat[(r4+-1)]; + f22 = heapFloat[(r4)]; + f23 = f21-f8; + f24 = f22-f10; + f25 = f23*f7; + f26 = f24*f5; + f25 = f25-f26; + f23 = f23*f6; + f24 = f24*f11; + r4 = (r3 * 3)|0; + f26 = f15*f25; + f23 = f23+f24; + f24 = f13*f25; + r6 = sp + -464; + r4 = r4 << 2; + f25 = f17*f25; + f26 = f4+f26; + f28 = f16*f23; + f24 = f3+f24; + f29 = f14*f23; + r4 = (r6 + r4)|0; + f24 = f24+f29; + f26 = f26+f28; + f25 = f2+f25; + f23 = f18*f23; + f28 = f0*f24; + f29 = f1*f26; + f23 = f25+f23; + r4 = r4 >> 2; + heapFloat[(r4)] = f24; + f24 = f28+f29; + f25 = f19*f23; + r7 = sp + -496; + r8 = r3 << 2; + r8 = (r7 + r8)|0; + heapFloat[(r4+1)] = f26; + f24 = f24+f25; + f24 = f9-f24; + r8 = r8 >> 2; + heapFloat[(r4+2)] = f23; + heapFloat[(r8)] = f24; + if(f24 >=f27) //_LBB166_206 +{ + r4 = r3 << 3; + r8 = r4 | 4; + r4 = (r1 + r4)|0; + r8 = (r1 + r8)|0; + r4 = r4 >> 2; + r3 = (r3 + 1)|0; + r8 = r8 >> 2; + heapFloat[(r4)] = f21; + heapFloat[(r8)] = f22; +} + r10 = (r10 + -1)|0; + r2 = (r2 + 8)|0; +if(!(r10 !=0)) //_LBB166_204 +{ +break _243; +} +} + if(r3 <1) //_LBB166_268 +{ +break _41; +} +else{ + r2 = 4; + r2 = r3 < 4 ? r3 : r2; + r4 = 1; + r8 = r2 < 1 ? r4 : r2; + if(r3 >r8) //_LBB166_215 +{ +_252: do { + if(r3 >1) //_LBB166_217 +{ + f0 = heapFloat[(fp+-124)]; + r9 = 1; + r7 = 0; +_254: while(true){ + r10 = sp + -496; + r11 = r9 << 2; + r10 = (r10 + r11)|0; + r10 = r10 >> 2; + f1 = heapFloat[(r10)]; + r10 = (r9 + 1)|0; + r7 = f1 > f0 ? r9 : r7; + f0 = f1 > f0 ? f1 : f0; + r9 = r10; +if(!(r3 !=r10)) //_LBB166_218 +{ +break _252; +} +} +} +else{ + r7 = 0; +} +} while(0); +_258: do { + if(r3 ==1) //_LBB166_224 +{ + r9 = r1 >> 2; + f0 = heapFloat[(fp+-92)]; + f1 = heapFloat[(r9+1)]; +__label__ = 214; +break _258; +} +else{ + if(r3 ==2) //_LBB166_225 +{ + r9 = r1 >> 2; + f0 = heapFloat[(fp+-92)]; + f1 = heapFloat[(r9+2)]; + f2 = heapFloat[(r9+1)]; + f12 = heapFloat[(r9+3)]; + f0 = f0+f1; + f1 = f2+f12; + f2 = heapFloat[(fp+-187)]; + f0 = f0*f2; + f1 = f1*f2; +__label__ = 214; +break _258; +} +else{ + r9 = (r3 + -1)|0; +_264: do { + if(r9 >0) //_LBB166_223 +{ + r10 = (r1 + 8)|0; + f0 = 0; + f1 = f0; + f2 = f0; +_266: while(true){ + r11 = r10 >> 2; + f3 = heapFloat[(r11+-2)]; + f4 = heapFloat[(r11+1)]; + f5 = heapFloat[(r11)]; + f6 = heapFloat[(r11+-1)]; + f7 = f3*f4; + f8 = f5*f6; + f3 = f3+f5; + f5 = f7-f8; + f4 = f6+f4; + f3 = f3*f5; + f4 = f4*f5; + r9 = (r9 + -1)|0; + f2 = f2+f5; + f1 = f3+f1; + f0 = f4+f0; + r10 = (r10 + 8)|0; +if(!(r9 !=0)) //_LBB166_226 +{ +break _264; +} +} +} +else{ + f0 = f27; + f1 = f27; + f2 = f27; +} +} while(0); + r9 = r3 << 3; + r9 = (r9 + r1)|0; + r9 = r9 >> 2; + r10 = r1 >> 2; + f3 = heapFloat[(r9+-2)]; + f4 = heapFloat[(r10+1)]; + f5 = heapFloat[(fp+-92)]; + f6 = heapFloat[(r9+-1)]; + f7 = f3*f4; + f8 = f5*f6; + f7 = f7-f8; + f2 = f2+f7; + if(f2 f20) //_LBB166_232 +{ + f8 = 3; + f2 = f2*f8; + f2 = f12/f2; +} +else{ + f2 = 999999984306749440; +} + if(r3 >0) //_LBB166_235 +{ + f3 = f3+f5; + f4 = f6+f4; + f3 = f3*f7; + f4 = f4*f7; + f1 = f3+f1; + f3 = f4+f0; + f0 = f1*f2; + f1 = f3*f2; +__label__ = 214; +} +else{ + r1 = 0; +__label__ = 219; +} +} +} +} while(0); +if (__label__ == 214){ + r1 = (r1 + 4)|0; + r9 = sp + -32; + r10 = r3; +_283: while(true){ + r11 = r1 >> 2; + f2 = heapFloat[(r11+-1)]; + f3 = heapFloat[(r11)]; + f3 = f3-f1; + f2 = f2-f0; + heapFloat[(g0)] = f3; + heapFloat[(g0+1)] = f2; + r10 = (r10 + -1)|0; + r1 = (r1 + 8)|0; + r11 = (r9 + 4)|0; + r9 = r9 >> 2; + atan2f(i7); + heapFloat[(r9)] = f_g0; + r9 = r11; +if(!(r10 !=0)) //_LBB166_237 +{ +break _283; +} +} + r1 = sp + -64; + r9 = r3; +_286: while(true){ + r9 = (r9 + -1)|0; + r10 = (r1 + 4)|0; + r1 = r1 >> 2; + heap32[(r1)] = 1; + r1 = r10; +if(!(r9 !=0)) //_LBB166_239 +{ +break _286; +} +} + r1 = 1; +} + r9 = sp + -64; + r10 = r7 << 2; + r11 = (r9 + r10)|0; + r11 = r11 >> 2; + f0 = 6.2831854820251465; + f1 = r8; //fitos r8, f1 + f1 = f0/f1; + heap32[(r11)] = 0; + heap32[(fp+-144)] = r7; + f6 = 0; +_290: while(true){ + if(r4 > 2; + f2 = r4; //fitos r4, f2 + f2 = f2*f1; + f3 = heapFloat[(r13)]; + f2 = f2+f3; + f3 = 3.1415927410125732; + if(f2 >f3) //_LBB166_244 +{ + f4 = -6.2831854820251465; + f2 = f2+f4; +} + r13 = sp + -576; + r14 = r4 << 2; + r13 = (r13 + r14)|0; + r13 = r13 >> 2; + r14 = r1 & 1; + heap32[(r13)] = r7; + if(r14 ==0) //_LBB166_259 +{ +__label__ = 233; +break _290; +} +else{ + f4 = 1000000000; + r14 = 0; + r15 = r7; +_297: while(true){ + r16 = r14 << 2; + r17 = (r9 + r16)|0; + r17 = r17 >> 2; + r17 = heap32[(r17)]; + if(r17 !=0) //_LBB166_249 +{ + r16 = (r11 + r16)|0; + r16 = r16 >> 2; + f5 = heapFloat[(r16)]; + f5 = f5-f2; + if(f5 f3) //_LBB166_254 +{ + f5 = f0-f5; +} +if(!(f5 >=f4)) //_LBB166_248 +{ + heap32[(r13)] = r14; + r15 = r14; + f4 = f5; +} +} + r14 = (r14 + 1)|0; +if(!(r3 !=r14)) //_LBB166_247 +{ +break _297; +} +} + if(r15 !=r7) //_LBB166_260 +{ + r11 = r15 << 2; + r11 = (r9 + r11)|0; + r4 = (r4 + 1)|0; + r11 = r11 >> 2; + heap32[(r11)] = 0; +} +else{ +__label__ = 233; +break _290; +} +} +} +else{ +__label__ = 236; +break _290; +} +} +switch(__label__ ){//multiple entries +case 233: + r0 = _2E_str65; + r1 = _2E_str166; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 248; + _assert(i7); +break; +case 236: + if(r8 >0) //_LBB166_267 +{ + r1 = 0; +_315: while(true){ + r3 = sp + -576; + r4 = r1 << 2; + r3 = (r3 + r4)|0; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r4 = (r3 * 3)|0; + r4 = r4 << 2; + r4 = (r6 + r4)|0; + r4 = r4 >> 2; + f0 = heapFloat[(r4)]; + f1 = heapFloat[(r0)]; + f0 = f0+f1; + heapFloat[(fp+-148)] = f0; + r7 = sp + -592; + f1 = heapFloat[(r4+1)]; + f2 = heapFloat[(r0+1)]; + f1 = f1+f2; + r8 = r7 >> 2; + heapFloat[(r8+1)] = f1; + f2 = heapFloat[(r4+2)]; + f3 = heapFloat[(r0+2)]; + f2 = f2+f3; + r4 = sp + -496; + r3 = r3 << 2; + r3 = (r4 + r3)|0; + r4 = r5 >> 2; + heapFloat[(r8+2)] = f2; + r4 = heap32[(r4)]; + r3 = r3 >> 2; + r8 = sp + -704; + f3 = heapFloat[(r3)]; + r3 = r4 >> 2; + r4 = r8 >> 2; + r3 = heap32[(r3+4)]; + f4 = -f3; + f5 = heapFloat[(r4+2)]; + if(r12 >3) //_LBB166_265 +{ + f6 = heapFloat[(fp+-176)]; + f7 = heapFloat[(r4+1)]; + f8 = f6*f3; + r4 = sp + -160; + f9 = f7*f3; + f0 = f0-f8; + r7 = r4 >> 2; + f3 = f5*f3; + f1 = f1-f9; + heapFloat[(fp+-40)] = f0; + f0 = f2-f3; + heapFloat[(r7+1)] = f1; + heapFloat[(r7+2)] = f0; + r8 = sp + -144; + f0 = -f6; + heap32[(r7+3)] = 0; + r7 = r8 >> 2; + f1 = -f7; + heapFloat[(fp+-36)] = f0; + f0 = -f5; + heapFloat[(r7+1)] = f1; + heapFloat[(r7+2)] = f0; + heap32[(r7+3)] = 0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r4; + heapFloat[(g0+3)] = f4; + __FUNCTION_TABLE__[(r3)>>2](i7); +} +else{ + f0 = heapFloat[(r4+1)]; + f1 = heapFloat[(fp+-176)]; + r4 = sp + -176; + f1 = -f1; + r8 = r4 >> 2; + f0 = -f0; + heapFloat[(fp+-44)] = f1; + f1 = -f5; + heapFloat[(r8+1)] = f0; + heapFloat[(r8+2)] = f1; + heap32[(r8+3)] = 0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r7; + heapFloat[(g0+3)] = f4; + __FUNCTION_TABLE__[(r3)>>2](i7); +} + r1 = (r1 + 1)|0; + if(r1 >=r2) //_LBB166_268 +{ +break _41; +} +else{ +continue _315; +} +} +} +else{ +break _41; +} +break; +} +} +else{ + if(r12 <4) //_LBB166_212 +{ + r1 = (r6 + 8)|0; + r2 = sp + -496; +_324: while(true){ + r4 = r1 >> 2; + f12 = heapFloat[(r4+-2)]; + f20 = heapFloat[(r0)]; + f12 = f12+f20; + heapFloat[(fp+-132)] = f12; + r6 = sp + -528; + f12 = heapFloat[(r4+-1)]; + f20 = heapFloat[(r0+1)]; + r7 = r6 >> 2; + f12 = f12+f20; + heapFloat[(r7+1)] = f12; + f12 = heapFloat[(r4)]; + f20 = heapFloat[(r0+2)]; + f12 = f12+f20; + heapFloat[(r7+2)] = f12; + r4 = r5 >> 2; + r4 = heap32[(r4)]; + r7 = sp + -704; + r7 = r7 >> 2; + r4 = r4 >> 2; + r8 = r2 >> 2; + f12 = heapFloat[(r8)]; + f20 = heapFloat[(r7+2)]; + f27 = heapFloat[(r7+1)]; + f0 = heapFloat[(fp+-176)]; + r4 = heap32[(r4+4)]; + r7 = sp + -208; + f0 = -f0; + r8 = r7 >> 2; + f27 = -f27; + heapFloat[(fp+-52)] = f0; + f20 = -f20; + heapFloat[(r8+1)] = f27; + heapFloat[(r8+2)] = f20; + heap32[(r8+3)] = 0; + f12 = -f12; + heap32[(g0)] = r5; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r6; + heapFloat[(g0+3)] = f12; + r3 = (r3 + -1)|0; + r2 = (r2 + 4)|0; + r1 = (r1 + 12)|0; + __FUNCTION_TABLE__[(r4)>>2](i7); + if(r3 ==0) //_LBB166_268 +{ +break _41; +} +else{ +continue _324; +} +} +} +else{ + r1 = (r6 + 8)|0; +_327: while(true){ + r2 = r7 >> 2; + r4 = r1 >> 2; + f12 = heapFloat[(r2)]; + f20 = heapFloat[(fp+-176)]; + f27 = heapFloat[(r4+-2)]; + f0 = heapFloat[(r0)]; + f27 = f27+f0; + f0 = f20*f12; + r2 = sp + -704; + f27 = f27-f0; + heapFloat[(fp+-136)] = f27; + r2 = r2 >> 2; + f27 = heapFloat[(r2+1)]; + f0 = heapFloat[(r4+-1)]; + f1 = heapFloat[(r0+1)]; + r6 = sp + -544; + f0 = f0+f1; + f1 = f27*f12; + r8 = r6 >> 2; + f0 = f0-f1; + heapFloat[(r8+1)] = f0; + f0 = heapFloat[(r2+2)]; + f1 = heapFloat[(r4)]; + f2 = heapFloat[(r0+2)]; + f1 = f1+f2; + f2 = f0*f12; + f1 = f1-f2; + r2 = r5 >> 2; + heapFloat[(r8+2)] = f1; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + r4 = sp + -192; + f20 = -f20; + r8 = r4 >> 2; + f27 = -f27; + heapFloat[(fp+-48)] = f20; + f20 = -f0; + heapFloat[(r8+1)] = f27; + heapFloat[(r8+2)] = f20; + heap32[(r8+3)] = 0; + f12 = -f12; + heap32[(g0)] = r5; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r6; + heapFloat[(g0+3)] = f12; + r3 = (r3 + -1)|0; + r7 = (r7 + 4)|0; + r1 = (r1 + 12)|0; + __FUNCTION_TABLE__[(r2)>>2](i7); + if(r3 ==0) //_LBB166_268 +{ +break _41; +} +else{ +continue _327; +} +} +} +} +} +} +} +else{ + r0 = sp + -688; + r2 = r0 >> 2; + f20 = heapFloat[(fp+-172)]; + f27 = heapFloat[(r2+4)]; + f2 = heapFloat[(r2+5)]; + f3 = heapFloat[(r2+1)]; + f4 = f0*f20; + f5 = f1*f27; + f6 = heapFloat[(r2+8)]; + f7 = heapFloat[(r2+9)]; + f8 = heapFloat[(r2+6)]; + f9 = heapFloat[(r2+2)]; + f4 = f4+f5; + f5 = f19*f6; + f10 = f0*f3; + f11 = f1*f2; + f12 = heapFloat[(r2+10)]; + f4 = f4+f5; + f5 = f10+f11; + f10 = f19*f7; + f11 = f0*f9; + f13 = f1*f8; + f14 = 0; + f15 = -1; + f16 = 1; + f5 = f5+f10; + f4 = f4 > f14 ? f15 : f16; + f10 = f11+f13; + f11 = f19*f12; + f13 = heapFloat[(fp+-181)]; + f4 = f13*f4; + f10 = f10+f11; + f5 = f5 > f14 ? f15 : f16; + f11 = heapFloat[(fp+-182)]; + f5 = f11*f5; + r2 = sp + -640; + f20 = f4*f20; + f11 = heapFloat[(r1+28)]; + f10 = f10 > f14 ? f15 : f16; + r3 = r2 >> 2; + f13 = heapFloat[(fp+-180)]; + f10 = f13*f10; + f27 = f4*f27; + f13 = heapFloat[(r1+29)]; + f20 = f11+f20; + f3 = f5*f3; + r4 = (r12 + -7)|0; + f11 = heapFloat[(r3+4)]; + f17 = heapFloat[(fp+-160)]; + f18 = heapFloat[(r3+8)]; + f21 = heapFloat[(r3+5)]; + f22 = heapFloat[(r3+1)]; + f23 = heapFloat[(r3+9)]; + f24 = heapFloat[(r3+6)]; + f25 = heapFloat[(r3+2)]; + f26 = heapFloat[(r3+10)]; + f4 = f4*f6; + f6 = heapFloat[(r1+30)]; + f27 = f13+f27; + f2 = f5*f2; + f20 = f20+f3; + f3 = f10*f9; + f9 = heapFloat[(r1+12)]; + heapFloat[(fp+-182)] = f9; + f9 = heapFloat[(r1+13)]; + heapFloat[(fp+-181)] = f9; + f9 = heapFloat[(r1+14)]; + heapFloat[(fp+-180)] = f9; + r3 = (r4 / 3)|0; + r4 = (r4 % 3)|0; + r10 = sp + -512; + f20 = f20+f3; + f3 = f6+f4; + f4 = f5*f7; + f27 = f27+f2; + f2 = f10*f8; + r3 = r3 << 2; + r4 = r4 << 2; + f27 = f27+f2; + r12 = r10 >> 2; + heapFloat[(fp+-128)] = f20; + f2 = f3+f4; + f3 = f10*f12; + r2 = (r2 + r3)|0; + r0 = (r0 + r4)|0; + f2 = f2+f3; + heapFloat[(r12+1)] = f27; + r2 = r2 >> 2; + heapFloat[(r12+2)] = f2; + r0 = r0 >> 2; + f3 = heapFloat[(r2)]; + f4 = heapFloat[(r0)]; + f5 = heapFloat[(r2+4)]; + f6 = heapFloat[(r0+4)]; + f7 = heapFloat[(r2+8)]; + f8 = heapFloat[(r0+8)]; + f9 = f3*f4; + f10 = f5*f6; + f9 = f9+f10; + f10 = f7*f8; + f9 = f9+f10; + f10 = f9*f9; + f10 = f16-f10; + f12 = 9.9999997473787516e-005; + if(f10 >f12) //_LBB166_151 +{ + f12 = f0*f17; + f13 = f1*f11; + f12 = f12+f13; + f13 = f19*f18; + f28 = f0*f22; + f29 = f1*f21; + f12 = f12+f13; + f13 = f28+f29; + f28 = f19*f23; + f29 = f0*f25; + f30 = f1*f24; + f13 = f13+f28; + f12 = f12 > f14 ? f16 : f15; + f28 = f29+f30; + f29 = f19*f26; + f30 = heapFloat[(fp+-179)]; + f12 = f30*f12; + f28 = f28+f29; + f13 = f13 > f14 ? f16 : f15; + f29 = heapFloat[(fp+-178)]; + f13 = f29*f13; + f17 = f12*f17; + f11 = f12*f11; + f12 = f12*f18; + f14 = f28 > f14 ? f16 : f15; + f15 = heapFloat[(fp+-177)]; + f14 = f15*f14; + f15 = heapFloat[(fp+-182)]; + f15 = f15+f17; + f17 = f13*f22; + f18 = heapFloat[(fp+-181)]; + f11 = f18+f11; + f18 = f13*f21; + f21 = heapFloat[(fp+-180)]; + f12 = f21+f12; + f13 = f13*f23; + f15 = f15+f17; + f17 = f14*f25; + f11 = f11+f18; + f18 = f14*f24; + f12 = f12+f13; + f14 = f14*f26; + f13 = f15+f17; + f11 = f11+f18; + f14 = f12+f14; + f12 = f20-f13; + f11 = f27-f11; + f14 = f2-f14; + f3 = f3*f12; + f5 = f5*f11; + f3 = f3+f5; + f5 = f7*f14; + f7 = f4*f12; + f11 = f6*f11; + f3 = f3+f5; + f5 = f7+f11; + f14 = f8*f14; + f3 = f9*f3; + f14 = f5+f14; + f14 = f3-f14; + f3 = f16/f10; + f14 = f14*f3; +} + f3 = f4*f14; + f20 = f20+f3; + f3 = f6*f14; + f4 = f8*f14; + f27 = f27+f3; + heapFloat[(fp+-128)] = f20; + f20 = f2+f4; + heapFloat[(r12+1)] = f27; + r0 = r5 >> 2; + heapFloat[(r12+2)] = f20; + r0 = heap32[(r0)]; + r0 = r0 >> 2; + r0 = heap32[(r0+4)]; + r2 = sp + -224; + f0 = -f0; + r3 = r2 >> 2; + f1 = -f1; + heapFloat[(fp+-56)] = f0; + f0 = -f19; + heapFloat[(r3+1)] = f1; + heapFloat[(r3+2)] = f0; + heap32[(r3+3)] = 0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r10; + f0 = heapFloat[(fp+-183)]; + heapFloat[(g0+3)] = f0; + __FUNCTION_TABLE__[(r0)>>2](i7); + return; +} +} +} +} +} +} +} +} +} +} +} +} +} +} +} +} +} while(0); + return; +} + +function _ZN21btCollisionDispatcher13findAlgorithmEP17btCollisionObjectS1_P20btPersistentManifold(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = sp + -8; + r1 = heap32[(fp)]; + r2 = heap32[(fp+1)]; + r3 = r0 >> 2; + r4 = heap32[(fp+3)]; + heap32[(fp+-2)] = r1; + r5 = heap32[(fp+2)]; + r6 = r2 >> 2; + heap32[(r3+1)] = r4; + r3 = heap32[(r6+48)]; + r4 = r5 >> 2; + r3 = r3 >> 2; + r4 = heap32[(r4+48)]; + r3 = heap32[(r3+1)]; + r4 = r4 >> 2; + r4 = heap32[(r4+1)]; + r3 = (r3 * 144)|0; + r1 = (r1 + r3)|0; + r3 = r4 << 2; + r1 = (r1 + r3)|0; + r1 = r1 >> 2; + r1 = heap32[(r1+50)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+2)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r5; + __FUNCTION_TABLE__[(r3)>>2](i7); + return; +} + +function _ZN21btCollisionDispatcher13needsResponseEP17btCollisionObjectS1_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + r0 = heap32[(r0+51)]; + r1 = r0 & 4; +if(!(r1 !=0)) //_LBB168_4 +{ + r1 = heap32[(fp+2)]; + r1 = r1 >> 2; + r1 = heap32[(r1+51)]; + r2 = r1 & 4; +if(!(r2 !=0)) //_LBB168_4 +{ + r0 = r0 & 3; + if(r0 ==0) //_LBB168_5 +{ + r0 = 1; + r_g0 = r0; + return; +} +else{ + r0 = r1 & 3; + r1 = 0; + r0 = r0 == r1; + r0 = r0 & 1; + r_g0 = r0; + return; +} +} +} + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN23btCollisionPairCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV23btCollisionPairCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN23btCollisionPairCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV23btCollisionPairCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN23btCollisionPairCallback14processOverlapER16btBroadphasePair(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+2)]; + r2 = r1 >> 2; + r2 = heap32[(r2+47)]; + r0 = heap32[(r0+1)]; + r3 = heap32[(fp+1)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN21btCollisionDispatcher25dispatchAllCollisionPairsEP22btOverlappingPairCacheRK16btDispatcherInfoP12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -32;var g0 = i7>>2; // save stack + r0 = _ZTV23btCollisionPairCallback; + r1 = sp + -16; + r0 = (r0 + 8)|0; + r2 = r1 >> 2; + r3 = heap32[(fp+2)]; + heap32[(fp+-4)] = r0; + r0 = heap32[(fp+1)]; + r4 = heap32[(fp)]; + heap32[(r2+1)] = r3; + r3 = r0 >> 2; + heap32[(r2+2)] = r4; + r2 = heap32[(r3)]; + r2 = r2 >> 2; + r2 = heap32[(r2+12)]; + r3 = heap32[(fp+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r3; + __FUNCTION_TABLE__[(r2)>>2](i7); + return; +} + +function _ZNK21btCollisionDispatcher15getNumManifoldsEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+3)]; + r_g0 = r0; + return; +} + +function _ZN21btCollisionDispatcher26getInternalManifoldPointerEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+5)]; + r_g0 = r0; + return; +} + +function _ZN21btCollisionDispatcher26getManifoldByIndexInternalEi(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+1)]; + r0 = heap32[(r0+5)]; + r1 = r1 << 2; + r0 = (r0 + r1)|0; + r0 = r0 >> 2; + r0 = heap32[(r0)]; + r_g0 = r0; + return; +} + +function _ZN21btCollisionDispatcher22freeCollisionAlgorithmEPv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; +if(!(r0 ==0)) //_LBB176_5 +{ + r1 = heap32[(fp)]; + r1 = r1 >> 2; + r1 = heap32[(r1+48)]; + r1 = r1 >> 2; + r2 = heap32[(r1+4)]; +if(!(uint(r2) >uint(r0))) //_LBB176_4 +{ + r3 = heap32[(r1)]; + r4 = heap32[(r1+1)]; + r3 = (r3 * r4)|0; + r2 = (r2 + r3)|0; +if(!(uint(r2) <=uint(r0))) //_LBB176_4 +{ + r2 = r0 >> 2; + r3 = heap32[(r1+3)]; + heap32[(r2)] = r3; + heap32[(r1+3)] = r0; + r0 = heap32[(r1+2)]; + r0 = (r0 + 1)|0; + heap32[(r1+2)] = r0; + return; +} +} + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r2 = heap32[(r1)]; + r2 = (r2 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r2; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} + return; +} + +function _ZN21btCollisionDispatcher15releaseManifoldEP20btPersistentManifold(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = gNumManifold; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = heap32[(fp)]; + r1 = (r1 + -1)|0; + r3 = r2 >> 2; + heap32[(r0)] = r1; + r0 = heap32[(r3)]; + r0 = r0 >> 2; + r0 = heap32[(r0+5)]; + r1 = heap32[(fp+1)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r1; + __FUNCTION_TABLE__[(r0)>>2](i7); + r0 = r1 >> 2; + r2 = heap32[(r3+3)]; + r4 = heap32[(r0+284)]; + if(r2 >r4) //_LBB177_2 +{ + r2 = (r2 + -1)|0; + r5 = r4 << 2; + r6 = heap32[(r3+5)]; + r2 = r2 << 2; + r7 = (r6 + r5)|0; + r6 = (r6 + r2)|0; + r7 = r7 >> 2; + r6 = r6 >> 2; + r8 = heap32[(r7)]; + r6 = heap32[(r6)]; + heap32[(r7)] = r6; + r6 = heap32[(r3+5)]; + r2 = (r6 + r2)|0; + r2 = r2 >> 2; + heap32[(r2)] = r8; + r2 = heap32[(r3+5)]; + r2 = (r2 + r5)|0; + r2 = r2 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + heap32[(r2+284)] = r4; + r2 = heap32[(r3+3)]; + r2 = (r2 + -1)|0; + heap32[(r3+3)] = r2; +if(!(r1 ==0)) //_LBB177_7 +{ + r2 = heap32[(r3+49)]; + r2 = r2 >> 2; + r3 = heap32[(r2+4)]; +if(!(uint(r3) >uint(r1))) //_LBB177_6 +{ + r4 = heap32[(r2)]; + r5 = heap32[(r2+1)]; + r4 = (r4 * r5)|0; + r3 = (r3 + r4)|0; +if(!(uint(r3) <=uint(r1))) //_LBB177_6 +{ + r3 = heap32[(r2+3)]; + heap32[(r0)] = r3; + heap32[(r2+3)] = r1; + r0 = heap32[(r2+2)]; + r0 = (r0 + 1)|0; + heap32[(r2+2)] = r0; + return; +} +} + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r2 = heap32[(r1)]; + r2 = (r2 + 1)|0; + heap32[(r1)] = r2; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} + return; +} +else{ + r0 = _2E_str472; + r1 = _2E_str573; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 120; + _assert(i7); +} +} + +function _ZN21btCollisionDispatcherD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV21btCollisionDispatcher; + r2 = _ZTV16btManifoldResult; + r3 = r0 >> 2; + r1 = (r1 + 8)|0; + r2 = (r2 + 8)|0; + heap32[(r3)] = r1; + heap32[(r3+7)] = r2; + r1 = heap32[(r3+5)]; +if(!(r1 ==0)) //_LBB178_4 +{ + r2 = heapU8[r0+24]; +if(!(r2 ==0)) //_LBB178_3 +{ + r2 = gNumAlignedFree; + r2 = r2 >> 2; + r4 = heap32[(r2)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r2)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r3+5)] = 0; +} + r1 = 1; + heap8[r0+24] = r1; + heap32[(r3+5)] = 0; + r0 = _ZTV12btDispatcher; + heap32[(r3+3)] = 0; + r0 = (r0 + 8)|0; + heap32[(r3+4)] = 0; + heap32[(r3)] = r0; + return; +} + +function _ZN21btCollisionDispatcherD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV21btCollisionDispatcher; + r2 = _ZTV16btManifoldResult; + r3 = r0 >> 2; + r1 = (r1 + 8)|0; + r2 = (r2 + 8)|0; + heap32[(r3)] = r1; + heap32[(r3+7)] = r2; + r1 = heap32[(r3+5)]; +if(!(r1 ==0)) //_LBB179_4 +{ + r2 = heapU8[r0+24]; +if(!(r2 ==0)) //_LBB179_3 +{ + r2 = gNumAlignedFree; + r2 = r2 >> 2; + r4 = heap32[(r2)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r2)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r3+5)] = 0; +} + r1 = 1; + heap8[r0+24] = r1; + heap32[(r3+5)] = 0; + r1 = _ZTV12btDispatcher; + heap32[(r3+3)] = 0; + r1 = (r1 + 8)|0; + heap32[(r3+4)] = 0; + heap32[(r3)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN21btCollisionDispatcher14getNewManifoldEPvS0_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var f0; + var f1; + var f2; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = gNumManifold; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + r2 = heap32[(fp)]; + r3 = heap32[(fp+1)]; + r4 = heap32[(fp+2)]; + heap32[(r0)] = r1; + r0 = heapU8[r2+4]; + r0 = r0 & 2; + if(r0 !=0) //_LBB180_2 +{ + r0 = r4 >> 2; + r0 = heap32[(r0+48)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = 1017370378; + __FUNCTION_TABLE__[(r1)>>2](i7); + f0 = f_g0; + r0 = r3 >> 2; + heapFloat[(fp+-2)] = f0; + r0 = heap32[(r0+48)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = 1017370378; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = sp + -4; + r1 = sp + -8; + r0 = f_g0 < f0 ? r0 : r1; + heapFloat[(fp+-1)] = f_g0; +} +else{ + r0 = gContactBreakingThreshold; +} + r1 = r2 >> 2; + r5 = heap32[(r1+49)]; + r6 = r3 >> 2; + r7 = r4 >> 2; + r5 = r5 >> 2; + r0 = r0 >> 2; + f0 = heapFloat[(r6+46)]; + f1 = heapFloat[(r7+46)]; + r6 = heap32[(r5+2)]; + f2 = heapFloat[(r0)]; + f0 = f0 < f1 ? f0 : f1; +_5: do { + if(r6 ==0) //_LBB180_9 +{ + r0 = gNumAlignedAllocs; + r0 = r0 >> 2; + r5 = heap32[(r0)]; + r5 = (r5 + 1)|0; + heap32[(r0)] = r5; + heap32[(g0)] = 1159; + malloc(i7); + r0 = r_g0; + if(r0 !=0) //_LBB180_11 +{ + r5 = 0; + r6 = (r0 + 4)|0; + r5 = (r5 - r6)|0; + r5 = r5 & 15; + r5 = (r0 + r5)|0; + r6 = (r5 + 4)|0; + r5 = r5 >> 2; + heap32[(r5)] = r0; + r0 = r6; +} +else{ +break _5; +} +} +else{ + r0 = heap32[(r5)]; + if(r0 >1139) //_LBB180_6 +{ + if(r6 >0) //_LBB180_8 +{ + r0 = heap32[(r5+3)]; + r7 = r0 >> 2; + r7 = heap32[(r7)]; + r6 = (r6 + -1)|0; + heap32[(r5+3)] = r7; + heap32[(r5+2)] = r6; +} +else{ + r1 = _2E_str371; + r2 = _2E_str169; + heap32[(g0)] = r1; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = 70; + _assert(i7); +} +} +else{ + r1 = _2E_str270; + r2 = _2E_str169; + heap32[(g0)] = r1; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = 69; + _assert(i7); +} +} +} while(0); + r5 = r0 >> 2; + heap32[(r5)] = 1; + heap32[(r5+28)] = 0; + r6 = 0; + heap32[(r5+29)] = 0; + heap8[r0+120] = r6; + heap32[(r5+31)] = 0; + heap32[(r5+32)] = 0; + heap32[(r5+33)] = 0; + heap32[(r5+34)] = 0; + heap32[(r5+35)] = 0; + heap32[(r5+36)] = 0; + heap32[(r5+37)] = 0; + heap32[(r5+97)] = 0; + heap32[(r5+98)] = 0; + heap8[r0+396] = r6; + heap32[(r5+100)] = 0; + heap32[(r5+101)] = 0; + heap32[(r5+102)] = 0; + heap32[(r5+103)] = 0; + heap32[(r5+104)] = 0; + heap32[(r5+105)] = 0; + heap32[(r5+106)] = 0; + heap32[(r5+166)] = 0; + heap32[(r5+167)] = 0; + heap8[r0+672] = r6; + heap32[(r5+169)] = 0; + heap32[(r5+170)] = 0; + heap32[(r5+171)] = 0; + heap32[(r5+172)] = 0; + heap32[(r5+173)] = 0; + heap32[(r5+174)] = 0; + heap32[(r5+175)] = 0; + heap32[(r5+235)] = 0; + heap32[(r5+236)] = 0; + heap8[r0+948] = r6; + heap32[(r5+238)] = 0; + heap32[(r5+239)] = 0; + heap32[(r5+240)] = 0; + heap32[(r5+241)] = 0; + heap32[(r5+242)] = 0; + heap32[(r5+243)] = 0; + heap32[(r5+244)] = 0; + heap32[(r5+277)] = r3; + heap32[(r5+278)] = r4; + heap32[(r5+279)] = 0; + heapFloat[(r5+280)] = f2; + heapFloat[(r5+281)] = f0; + r3 = heap32[(r1+3)]; + heap32[(r5+284)] = r3; + r3 = heap32[(r1+4)]; + r4 = heap32[(r1+3)]; + if(r3 ==r4) //_LBB180_14 +{ + r5 = 1; + r7 = r4 << 1; + r7 = r4 == 0 ? r5 : r7; +if(!(r3 >=r7)) //_LBB180_13 +{ + if(r7 !=0) //_LBB180_17 +{ + r3 = gNumAlignedAllocs; + r3 = r3 >> 2; + r8 = heap32[(r3)]; + r9 = r7 << 2; + r8 = (r8 + 1)|0; + r9 = r9 | 3; + heap32[(r3)] = r8; + r3 = (r9 + 16)|0; + heap32[(g0)] = r3; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB180_19 +{ + r8 = (r3 + 4)|0; + r8 = (r6 - r8)|0; + r8 = r8 & 15; + r8 = (r3 + r8)|0; + r9 = (r8 + 4)|0; + r8 = r8 >> 2; + heap32[(r8)] = r3; + r3 = r9; +} +} +else{ + r3 = 0; +} + r8 = (r2 + 20)|0; + if(r4 <1) //_LBB180_22 +{ + r6 = r8 >> 2; + r9 = heap32[(r6)]; +} +else{ +_26: while(true){ + r9 = r8 >> 2; + r9 = heap32[(r9)]; + r10 = r6 << 2; + r11 = (r9 + r10)|0; + r11 = r11 >> 2; + r10 = (r3 + r10)|0; + r11 = heap32[(r11)]; + r6 = (r6 + 1)|0; + r10 = r10 >> 2; + heap32[(r10)] = r11; +if(!(r4 !=r6)) //_LBB180_23 +{ +break _26; +} +} + r8 = (r2 + 20)|0; +} + if(r9 !=0) //_LBB180_27 +{ + r6 = heapU8[r2+24]; + if(r6 !=0) //_LBB180_29 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r6 = heap32[(r4)]; + r6 = (r6 + 1)|0; + r9 = r9 >> 2; + heap32[(r4)] = r6; + r4 = heap32[(r9+-1)]; + heap32[(g0)] = r4; + free(i7); + r4 = heap32[(r1+3)]; +} + r6 = r8 >> 2; + heap32[(r6)] = 0; +} + r6 = r8 >> 2; + heap8[r2+24] = r5; + heap32[(r6)] = r3; + heap32[(r1+4)] = r7; +} +} + r2 = r4 << 2; + r3 = heap32[(r1+5)]; + r2 = (r3 + r2)|0; + r2 = r2 >> 2; + heap32[(r2)] = r0; + r2 = heap32[(r1+3)]; + r2 = (r2 + 1)|0; + heap32[(r1+3)] = r2; + r_g0 = r0; + return; +} + +function _ZN21btCollisionDispatcher13clearManifoldEP20btPersistentManifold(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = heap32[(r0+279)]; +if(!(r1 <1)) //_LBB181_3 +{ + r2 = 0; +_3: while(true){ + r2 = (r2 + 1)|0; + if(r1 >r2) //_LBB181_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + heap32[(r0+279)] = 0; + return; +} + +function _ZN21btCollisionDispatcher14needsCollisionEP17btCollisionObjectS1_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + if(r0 !=0) //_LBB182_2 +{ + r1 = heap32[(fp+2)]; + if(r1 !=0) //_LBB182_4 +{ + r2 = heap32[(fp)]; + r2 = r2 >> 2; + r3 = heap32[(r2+1)]; + r4 = r3 & 1; +if(!(r4 != 0)) //_LBB182_8 +{ + r4 = heapU8[r0+204]; + r4 = r4 & 3; +if(!(r4 ==0)) //_LBB182_8 +{ + r4 = heapU8[r1+204]; + r4 = r4 & 3; +if(!(r4 ==0)) //_LBB182_8 +{ + r3 = r3 | 1; + heap32[(r2+1)] = r3; + r2 = _2E_str977; + heap32[(g0)] = r2; + printf(i7); +} +} +} + r2 = r0 >> 2; + r3 = heap32[(r2+54)]; + if(r3 ==2) //_LBB182_10 +{ +__label__ = 10; +} +else{ + if(r3 !=5) //_LBB182_12 +{ +__label__ = 12; +} +else{ +__label__ = 10; +} +} +_12: do { +if (__label__ == 10){ + r3 = r1 >> 2; + r3 = heap32[(r3+54)]; +if(!(r3 ==2)) //_LBB182_16 +{ +if(!(r3 ==5)) //_LBB182_16 +{ +break _12; +} +} + r0 = 0; + r_g0 = r0; + return; +} +} while(0); + r3 = heap32[(r2+63)]; + if(r3 !=0) //_LBB182_14 +{ + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + r0 = 0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r0 = r_g0 == r0; +} +else{ + r0 = 0; +} + r0 = r0 & 1; + r0 = r0 ^ 1; + r_g0 = r0; + return; +} +else{ + r0 = _2E_str876; + r1 = _2E_str573; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 167; + _assert(i7); +} +} +else{ + r0 = _2E_str775; + r1 = _2E_str573; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 166; + _assert(i7); +} +} + +function _ZN21btCollisionDispatcher26allocateCollisionAlgorithmEi(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+48)]; + r0 = r0 >> 2; + r1 = heap32[(r0+2)]; + r2 = heap32[(fp+1)]; + if(r1 ==0) //_LBB183_7 +{ + r0 = gNumAlignedAllocs; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + heap32[(r0)] = r1; + r0 = (r2 + 19)|0; + heap32[(g0)] = r0; + malloc(i7); + r0 = r_g0; +if(!(r0 ==0)) //_LBB183_9 +{ + r1 = 0; + r2 = (r0 + 4)|0; + r1 = (r1 - r2)|0; + r1 = r1 & 15; + r1 = (r0 + r1)|0; + r2 = r1 >> 2; + heap32[(r2)] = r0; + r0 = (r1 + 4)|0; +} + r_g0 = r0; + return; +} +else{ +if(!(r2 ==0)) //_LBB183_4 +{ + r3 = heap32[(r0)]; +if(!(r3 >=r2)) //_LBB183_4 +{ + r0 = _2E_str270; + r1 = _2E_str169; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 69; + _assert(i7); +} +} + if(r1 >0) //_LBB183_6 +{ + r2 = heap32[(r0+3)]; + r3 = r2 >> 2; + r3 = heap32[(r3)]; + r1 = (r1 + -1)|0; + heap32[(r0+3)] = r3; + heap32[(r0+2)] = r1; + r_g0 = r2; + return; +} +else{ + r0 = _2E_str371; + r1 = _2E_str169; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 70; + _assert(i7); +} +} +} + +function _ZN21btCollisionDispatcher19defaultNearCallbackER16btBroadphasePairRS_RK16btDispatcherInfo(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var f0; + var f1; +var __label__ = 0; + i7 = sp + -184;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r1 = r1 >> 2; + r2 = r0 >> 2; + r3 = heap32[(r2)]; + r4 = heap32[(r1)]; + r5 = heap32[(r1+1)]; + r3 = r3 >> 2; + r4 = r4 >> 2; + r5 = r5 >> 2; + r4 = heap32[(r4)]; + r5 = heap32[(r5)]; + r3 = heap32[(r3+6)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r5; + __FUNCTION_TABLE__[(r3)>>2](i7); + r3 = r_g0; +_1: do { +if(!(r3 ==0)) //_LBB184_8 +{ + r3 = heap32[(fp+2)]; + r6 = heap32[(r1+2)]; + if(r6 ==0) //_LBB184_3 +{ + r6 = heap32[(r2)]; + r6 = r6 >> 2; + r6 = heap32[(r6+2)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = 0; + __FUNCTION_TABLE__[(r6)>>2](i7); + r6 = r_g0; + heap32[(r1+2)] = r6; + if(r6 ==0) //_LBB184_8 +{ +break _1; +} +} + r0 = _ZTV16btManifoldResult; + r1 = sp + -160; + r0 = (r0 + 8)|0; + r2 = r1 >> 2; + heap32[(fp+-40)] = r0; + heap32[(r2+1)] = 0; + heap32[(r2+34)] = r4; + r0 = r4 >> 2; + heap32[(r2+35)] = r5; + heap32[(r2+2)] = heap32[(r0+1)]; + heap32[(r2+3)] = heap32[(r0+2)]; + heap32[(r2+4)] = heap32[(r0+3)]; + heap32[(r2+5)] = heap32[(r0+4)]; + heap32[(r2+6)] = heap32[(r0+5)]; + heap32[(r2+7)] = heap32[(r0+6)]; + heap32[(r2+8)] = heap32[(r0+7)]; + heap32[(r2+9)] = heap32[(r0+8)]; + heap32[(r2+10)] = heap32[(r0+9)]; + heap32[(r2+11)] = heap32[(r0+10)]; + heap32[(r2+12)] = heap32[(r0+11)]; + heap32[(r2+13)] = heap32[(r0+12)]; + heap32[(r2+14)] = heap32[(r0+13)]; + heap32[(r2+15)] = heap32[(r0+14)]; + heap32[(r2+16)] = heap32[(r0+15)]; + r7 = r5 >> 2; + heap32[(r2+17)] = heap32[(r0+16)]; + heap32[(r2+18)] = heap32[(r7+1)]; + heap32[(r2+19)] = heap32[(r7+2)]; + heap32[(r2+20)] = heap32[(r7+3)]; + heap32[(r2+21)] = heap32[(r7+4)]; + heap32[(r2+22)] = heap32[(r7+5)]; + heap32[(r2+23)] = heap32[(r7+6)]; + heap32[(r2+24)] = heap32[(r7+7)]; + heap32[(r2+25)] = heap32[(r7+8)]; + heap32[(r2+26)] = heap32[(r7+9)]; + heap32[(r2+27)] = heap32[(r7+10)]; + heap32[(r2+28)] = heap32[(r7+11)]; + heap32[(r2+29)] = heap32[(r7+12)]; + heap32[(r2+30)] = heap32[(r7+13)]; + heap32[(r2+31)] = heap32[(r7+14)]; + heap32[(r2+32)] = heap32[(r7+15)]; + r0 = r6 >> 2; + heap32[(r2+33)] = heap32[(r7+16)]; + r0 = heap32[(r0)]; + r2 = r3 >> 2; + r7 = heap32[(r2+2)]; + if(r7 !=1) //_LBB184_6 +{ + r0 = r0 >> 2; + r0 = heap32[(r0+3)]; + heap32[(g0)] = r6; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r3; + heap32[(g0+4)] = r1; + __FUNCTION_TABLE__[(r0)>>2](i7); + f0 = f_g0; + f1 = heapFloat[(r2+3)]; +if(!(f1 <=f0)) //_LBB184_8 +{ + heapFloat[(r2+3)] = f0; +} +} +else{ + r0 = r0 >> 2; + r0 = heap32[(r0+2)]; + heap32[(g0)] = r6; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r3; + heap32[(g0+4)] = r1; + __FUNCTION_TABLE__[(r0)>>2](i7); + return; +} +} +} while(0); + return; +} + +function _ZN17btCollisionObject24checkCollideWithOverrideEPS_(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 1; + r_g0 = r0; + return; +} + +function _ZN17btCollisionObject17setCollisionShapeEP16btCollisionShape(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+1)]; + heap32[(r0+48)] = r1; + heap32[(r0+50)] = r1; + return; +} + +function _ZNK17btCollisionObject28calculateSerializeBufferSizeEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 248; + r_g0 = r0; + return; +} + +function _ZN17btCollisionObjectD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV17btCollisionObject; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN17btCollisionObjectD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV17btCollisionObject; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; +if(!(r0 ==0)) //_LBB189_2 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + heap32[(r0)] = r1; + r0 = heap32[(r2+-1)]; + heap32[(g0)] = r0; + free(i7); +} + return; +} + +function _ZNK17btCollisionObject9serializeEPvP12btSerializer(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = r0 >> 2; + r1 = r1 >> 2; + heap32[(r1+4)] = heap32[(r2+1)]; + heap32[(r1+5)] = heap32[(r2+2)]; + heap32[(r1+6)] = heap32[(r2+3)]; + heap32[(r1+7)] = heap32[(r2+4)]; + heap32[(r1+8)] = heap32[(r2+5)]; + heap32[(r1+9)] = heap32[(r2+6)]; + heap32[(r1+10)] = heap32[(r2+7)]; + heap32[(r1+11)] = heap32[(r2+8)]; + heap32[(r1+12)] = heap32[(r2+9)]; + heap32[(r1+13)] = heap32[(r2+10)]; + heap32[(r1+14)] = heap32[(r2+11)]; + heap32[(r1+15)] = heap32[(r2+12)]; + heap32[(r1+16)] = heap32[(r2+13)]; + heap32[(r1+17)] = heap32[(r2+14)]; + heap32[(r1+18)] = heap32[(r2+15)]; + heap32[(r1+19)] = heap32[(r2+16)]; + heap32[(r1+20)] = heap32[(r2+17)]; + heap32[(r1+21)] = heap32[(r2+18)]; + heap32[(r1+22)] = heap32[(r2+19)]; + heap32[(r1+23)] = heap32[(r2+20)]; + heap32[(r1+24)] = heap32[(r2+21)]; + heap32[(r1+25)] = heap32[(r2+22)]; + heap32[(r1+26)] = heap32[(r2+23)]; + heap32[(r1+27)] = heap32[(r2+24)]; + heap32[(r1+28)] = heap32[(r2+25)]; + heap32[(r1+29)] = heap32[(r2+26)]; + heap32[(r1+30)] = heap32[(r2+27)]; + heap32[(r1+31)] = heap32[(r2+28)]; + heap32[(r1+32)] = heap32[(r2+29)]; + heap32[(r1+33)] = heap32[(r2+30)]; + heap32[(r1+34)] = heap32[(r2+31)]; + heap32[(r1+35)] = heap32[(r2+32)]; + heap32[(r1+36)] = heap32[(r2+33)]; + heap32[(r1+37)] = heap32[(r2+34)]; + heap32[(r1+38)] = heap32[(r2+35)]; + heap32[(r1+39)] = heap32[(r2+36)]; + heap32[(r1+40)] = heap32[(r2+37)]; + heap32[(r1+41)] = heap32[(r2+38)]; + heap32[(r1+42)] = heap32[(r2+39)]; + heap32[(r1+43)] = heap32[(r2+40)]; + heap32[(r1+44)] = heap32[(r2+41)]; + heap32[(r1+45)] = heap32[(r2+42)]; + heap32[(r1+46)] = heap32[(r2+43)]; + heap32[(r1+47)] = heap32[(r2+44)]; + r3 = heap32[(r2+45)]; + heap32[(r1+55)] = r3; + r3 = heap32[(fp+2)]; + heap32[(r1+48)] = heap32[(r2+46)]; + heap32[(r1)] = 0; + r4 = r3 >> 2; + r5 = heap32[(r4)]; + r5 = r5 >> 2; + r5 = heap32[(r5+7)]; + r6 = heap32[(r2+48)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r6; + __FUNCTION_TABLE__[(r5)>>2](i7); + heap32[(r1+1)] = r_g0; + heap32[(r1+2)] = 0; + r5 = heap32[(r2+51)]; + heap32[(r1+56)] = r5; + r5 = heap32[(r2+52)]; + heap32[(r1+57)] = r5; + r5 = heap32[(r2+53)]; + heap32[(r1+58)] = r5; + r5 = heap32[(r2+54)]; + heap32[(r1+59)] = r5; + r5 = heap32[(r2+54)]; + heap32[(r1+59)] = r5; + heap32[(r1+49)] = heap32[(r2+55)]; + heap32[(r1+50)] = heap32[(r2+56)]; + heap32[(r1+51)] = heap32[(r2+57)]; + r5 = heap32[(r2+58)]; + heap32[(r1+60)] = r5; + r5 = heap32[(r4)]; + r5 = r5 >> 2; + r5 = heap32[(r5+10)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + __FUNCTION_TABLE__[(r5)>>2](i7); + r0 = r_g0; + r5 = heap32[(r4)]; + r5 = r5 >> 2; + r5 = heap32[(r5+7)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + __FUNCTION_TABLE__[(r5)>>2](i7); + r5 = r_g0; + heap32[(r1+3)] = r5; +if(!(r5 ==0)) //_LBB190_2 +{ + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+12)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + __FUNCTION_TABLE__[(r4)>>2](i7); +} + heap32[(r1+52)] = heap32[(r2+60)]; + heap32[(r1+53)] = heap32[(r2+61)]; + heap32[(r1+54)] = heap32[(r2+62)]; + heap32[(r1+54)] = heap32[(r2+62)]; + r0 = heap32[(r2+63)]; + heap32[(r1+61)] = r0; + r0 = _2E_str78; + r_g0 = r0; + return; +} + +function _ZNK17btCollisionObject21serializeSingleObjectEP12btSerializer(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + heap32[(g0)] = r0; + r3 = heap32[(fp+1)]; + __FUNCTION_TABLE__[(r2)>>2](i7); + r4 = r3 >> 2; + r5 = heap32[(r4)]; + r5 = r5 >> 2; + r5 = heap32[(r5+4)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r_g0; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r5)>>2](i7); + r2 = r_g0; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r5 = r2 >> 2; + r1 = heap32[(r1+5)]; + r5 = heap32[(r5+2)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r3; + __FUNCTION_TABLE__[(r1)>>2](i7); + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+5)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r_g0; + heap32[(g0+3)] = 1245859651; + heap32[(g0+4)] = r0; + __FUNCTION_TABLE__[(r4)>>2](i7); + return; +} + +function _ZN16btManifoldResult20setShapeIdentifiersAEii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + heap32[(r0+36)] = r1; + heap32[(r0+38)] = r2; + return; +} + +function _ZN16btManifoldResult20setShapeIdentifiersBEii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + heap32[(r0+37)] = r1; + heap32[(r0+39)] = r2; + return; +} + +function _ZN16btCollisionWorld14setDebugDrawerEP12btIDebugDraw(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+1)]; + heap32[(r0+21)] = r1; + return; +} + +function _ZN16btCollisionWorld14getDebugDrawerEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+21)]; + r_g0 = r0; + return; +} + +function _ZNK16btCollisionWorld20ConvexResultCallback14needsCollisionEP17btBroadphaseProxy(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = heapU16[(r0+10)>>1]; + r3 = heapU16[(r1+4)>>1]; + r2 = r2 & r3; + r2 = r2 & 65535; + if(r2 ==0) //_LBB196_2 +{ + r0 = 0; + r_g0 = r0; + return; +} +else{ + r1 = heapU16[(r1+6)>>1]; + r0 = heapU16[(r0+8)>>1]; + r0 = r1 & r0; + r0 = r0 & 65535; + r1 = 0; + r0 = r0 != r1; + r0 = r0 & 1; + r_g0 = r0; + return; +} +} + +function _ZN12btConvexCast10CastResult9DebugDrawEf(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN12btConvexCast10CastResult15drawCoordSystemERK11btTransform(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN12btConvexCast10CastResultD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN12btConvexCast10CastResultE; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN12btConvexCast10CastResultD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN12btConvexCast10CastResultE; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallback9reportHitERK9btVector3fii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; +var __label__ = 0; + i7 = sp + -56;var g0 = i7>>2; // save stack + r0 = sp + -8; + r1 = heap32[(fp+3)]; + r2 = heap32[(fp+1)]; + r3 = heap32[(fp)]; + r4 = r0 >> 2; + r5 = heap32[(fp+4)]; + heap32[(fp+-2)] = r1; + r1 = r2 >> 2; + heap32[(r4+1)] = r5; + r2 = r3 >> 2; + r3 = heap32[(r2+12)]; + f0 = heapFloat[(r2+22)]; + f1 = heapFloat[(r1)]; + f2 = heapFloat[(r2+18)]; + f3 = heapFloat[(r2+14)]; + f4 = heapFloat[(r2+23)]; + f5 = heapFloat[(r1+1)]; + f6 = heapFloat[(r2+19)]; + f7 = heapFloat[(r2+15)]; + f8 = heapFloat[(r2+24)]; + f9 = heapFloat[(r1+2)]; + f10 = heapFloat[(r2+20)]; + f11 = heapFloat[(r2+16)]; + r1 = sp + -40; + f3 = f3*f1; + f7 = f7*f5; + r4 = r1 >> 2; + heap32[(fp+-10)] = r3; + f2 = f2*f1; + f6 = f6*f5; + f3 = f3+f7; + f7 = f11*f9; + f0 = f0*f1; + f1 = f4*f5; + f2 = f2+f6; + f4 = f10*f9; + f3 = f3+f7; + heap32[(r4+1)] = r0; + f0 = f0+f1; + f1 = f8*f9; + f2 = f2+f4; + heapFloat[(r4+2)] = f3; + f0 = f0+f1; + heapFloat[(r4+3)] = f2; + heapFloat[(r4+4)] = f0; + heap32[(r4+5)] = 0; + heap32[(r4+6)] = heap32[(fp+2)]; + r0 = heap32[(r2+11)]; + r2 = r0 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r2)>>2](i7); + return; +} + +function _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallback9reportHitE_0RK9btVector3fii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; +var __label__ = 0; + i7 = sp + -56;var g0 = i7>>2; // save stack + r0 = sp + -8; + r1 = heap32[(fp+3)]; + r2 = heap32[(fp+1)]; + r3 = heap32[(fp)]; + r4 = r0 >> 2; + r5 = heap32[(fp+4)]; + heap32[(fp+-2)] = r1; + r1 = r2 >> 2; + heap32[(r4+1)] = r5; + r2 = r3 >> 2; + r3 = heap32[(r2+12)]; + f0 = heapFloat[(r2+22)]; + f1 = heapFloat[(r1)]; + f2 = heapFloat[(r2+18)]; + f3 = heapFloat[(r2+14)]; + f4 = heapFloat[(r2+23)]; + f5 = heapFloat[(r1+1)]; + f6 = heapFloat[(r2+19)]; + f7 = heapFloat[(r2+15)]; + f8 = heapFloat[(r2+24)]; + f9 = heapFloat[(r1+2)]; + f10 = heapFloat[(r2+20)]; + f11 = heapFloat[(r2+16)]; + r1 = sp + -40; + f3 = f3*f1; + f7 = f7*f5; + r4 = r1 >> 2; + heap32[(fp+-10)] = r3; + f2 = f2*f1; + f6 = f6*f5; + f3 = f3+f7; + f7 = f11*f9; + f0 = f0*f1; + f1 = f4*f5; + f2 = f2+f6; + f4 = f10*f9; + f3 = f3+f7; + heap32[(r4+1)] = r0; + f0 = f0+f1; + f1 = f8*f9; + f2 = f2+f4; + heapFloat[(r4+2)] = f3; + f0 = f0+f1; + heapFloat[(r4+3)] = f2; + heapFloat[(r4+4)] = f0; + heap32[(r4+5)] = 0; + heap32[(r4+6)] = heap32[(fp+2)]; + r0 = heap32[(r2+11)]; + r2 = r0 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r2)>>2](i7); + return; +} + +function _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder2D1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder2D0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder215addSingleResultERNS_14LocalRayResultEb(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = sp + -8; + r0 = r0 >> 2; + heap32[(fp+-2)] = -1; + r2 = heap32[(fp+1)]; + r3 = r1 >> 2; + r4 = heap32[(r0+6)]; + r5 = r2 >> 2; + heap32[(r3+1)] = r4; + r3 = heap32[(r5+1)]; +if(!(r3 !=0)) //_LBB205_2 +{ + heap32[(r5+1)] = r1; +} + r1 = heap32[(fp+2)]; + r3 = heap32[(r0+5)]; + r4 = r3 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+3)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r1; + __FUNCTION_TABLE__[(r4)>>2](i7); + r1 = heap32[(r0+5)]; + r1 = r1 >> 2; + heap32[(r0+1)] = heap32[(r1+1)]; + return; +} + +function _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallback9reportHitERK9btVector3SG_fii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var f0; + var f1; +var __label__ = 0; + i7 = sp + -72;var g0 = i7>>2; // save stack + r0 = sp + -8; + r1 = heap32[(fp+4)]; + r2 = heap32[(fp)]; + r3 = r0 >> 2; + r4 = heap32[(fp+5)]; + heap32[(fp+-2)] = r1; + r1 = r2 >> 2; + heap32[(r3+1)] = r4; + r2 = heap32[(r1+52)]; + f0 = heapFloat[(fp+3)]; + r3 = r2 >> 2; + f1 = heapFloat[(r3+1)]; + if(f1 > 2; + heap32[(fp+-14)] = r1; + r1 = r4 >> 2; + heap32[(r7+1)] = r0; + heap32[(r7+2)] = heap32[(r1)]; + heap32[(r7+3)] = heap32[(r1+1)]; + heap32[(r7+4)] = heap32[(r1+2)]; + r0 = r5 >> 2; + heap32[(r7+5)] = heap32[(r1+3)]; + heap32[(r7+6)] = heap32[(r0)]; + heap32[(r7+7)] = heap32[(r0+1)]; + heap32[(r7+8)] = heap32[(r0+2)]; + heap32[(r7+9)] = heap32[(r0+3)]; + heapFloat[(r7+10)] = f0; + r0 = heap32[(r3)]; + r0 = r0 >> 2; + r0 = heap32[(r0+3)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r0)>>2](i7); + return; +} +} + +function _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallback9reportHitE_0RK9btVector3SG_fii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var f0; + var f1; +var __label__ = 0; + i7 = sp + -72;var g0 = i7>>2; // save stack + r0 = sp + -8; + r1 = heap32[(fp+4)]; + r2 = heap32[(fp)]; + r3 = r0 >> 2; + r4 = heap32[(fp+5)]; + heap32[(fp+-2)] = r1; + r1 = r2 >> 2; + heap32[(r3+1)] = r4; + r2 = heap32[(r1+52)]; + f0 = heapFloat[(fp+3)]; + r3 = r2 >> 2; + f1 = heapFloat[(r3+1)]; + if(f1 > 2; + heap32[(fp+-14)] = r1; + r1 = r4 >> 2; + heap32[(r7+1)] = r0; + heap32[(r7+2)] = heap32[(r1)]; + heap32[(r7+3)] = heap32[(r1+1)]; + heap32[(r7+4)] = heap32[(r1+2)]; + r0 = r5 >> 2; + heap32[(r7+5)] = heap32[(r1+3)]; + heap32[(r7+6)] = heap32[(r0)]; + heap32[(r7+7)] = heap32[(r0+1)]; + heap32[(r7+8)] = heap32[(r0+2)]; + heap32[(r7+9)] = heap32[(r0+3)]; + heapFloat[(r7+10)] = f0; + r0 = heap32[(r3)]; + r0 = r0 >> 2; + r0 = heap32[(r0+3)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = 0; + __FUNCTION_TABLE__[(r0)>>2](i7); + return; +} +} + +function _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdderD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdderD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdder15addSingleResultERNS_17LocalConvexResultEb(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = sp + -8; + r0 = r0 >> 2; + heap32[(fp+-2)] = -1; + r2 = heap32[(fp+1)]; + r3 = r1 >> 2; + r4 = heap32[(r0+4)]; + r5 = r2 >> 2; + heap32[(r3+1)] = r4; + r3 = heap32[(r5+1)]; +if(!(r3 !=0)) //_LBB210_2 +{ + heap32[(r5+1)] = r1; +} + r1 = heap32[(fp+2)]; + r3 = heap32[(r0+3)]; + r4 = r3 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+3)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r1; + __FUNCTION_TABLE__[(r4)>>2](i7); + r1 = heap32[(r0+3)]; + r1 = r1 >> 2; + heap32[(r0+1)] = heap32[(r1+1)]; + return; +} + +function _ZN17DebugDrawcallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = _ZTV17DebugDrawcallback; + r1 = heap32[(fp)]; + r1 = r1 >> 2; + r2 = (r0 + 8)|0; + r3 = _ZTV31btInternalTriangleIndexCallback; + r0 = (r0 + 32)|0; + heap32[(r1)] = r2; + r2 = _ZTV18btTriangleCallback; + r3 = (r3 + 8)|0; + heap32[(r1+1)] = r0; + r0 = (r2 + 8)|0; + heap32[(r1+1)] = r3; + heap32[(r1)] = r0; + return; +} + +function _ZN17DebugDrawcallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = _ZTV17DebugDrawcallback; + r1 = heap32[(fp)]; + r2 = r1 >> 2; + r3 = (r0 + 8)|0; + r4 = _ZTV31btInternalTriangleIndexCallback; + r0 = (r0 + 32)|0; + heap32[(r2)] = r3; + r3 = _ZTV18btTriangleCallback; + r4 = (r4 + 8)|0; + heap32[(r2+1)] = r0; + r0 = (r3 + 8)|0; + heap32[(r2+1)] = r4; + heap32[(r2)] = r0; + heap32[(g0)] = r1; + _ZdlPv(i7); + return; +} + +function _ZN17DebugDrawcallback15processTriangleEP9btVector3ii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; +var __label__ = 0; + i7 = sp + -112;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = r0 >> 2; + r1 = r1 >> 2; + f0 = heapFloat[(r1)]; + f1 = heapFloat[(r2+7)]; + f2 = heapFloat[(r1+1)]; + f3 = heapFloat[(r2+8)]; + f4 = heapFloat[(r2+11)]; + f5 = heapFloat[(r2+12)]; + f6 = f1*f0; + f7 = f3*f2; + f8 = heapFloat[(r1+2)]; + f9 = heapFloat[(r2+9)]; + f10 = heapFloat[(r2+15)]; + f11 = heapFloat[(r2+16)]; + f12 = heapFloat[(r2+13)]; + f13 = f4*f0; + f14 = f5*f2; + f6 = f6+f7; + f7 = f9*f8; + f15 = heapFloat[(r2+17)]; + f0 = f10*f0; + f2 = f11*f2; + f13 = f13+f14; + f14 = f12*f8; + f6 = f6+f7; + f7 = heapFloat[(r2+19)]; + f16 = heapFloat[(r2+21)]; + f17 = heapFloat[(r2+20)]; + r3 = sp + -32; + f13 = f13+f14; + f0 = f0+f2; + f2 = f15*f8; + f6 = f6+f7; + f0 = f0+f2; + r4 = r3 >> 2; + f2 = f13+f17; + heapFloat[(fp+-8)] = f6; + f0 = f0+f16; + heapFloat[(r4+1)] = f2; + heapFloat[(r4+2)] = f0; + heap32[(r4+3)] = 0; + f8 = heapFloat[(r1+4)]; + f13 = heapFloat[(r1+5)]; + f14 = heapFloat[(r1+6)]; + f18 = f1*f8; + f19 = f3*f13; + f20 = f4*f8; + f21 = f5*f13; + f18 = f18+f19; + f19 = f9*f14; + f18 = f18+f19; + f8 = f10*f8; + f13 = f11*f13; + f19 = f20+f21; + f20 = f12*f14; + f18 = f18+f7; + r4 = sp + -48; + f19 = f19+f20; + f8 = f8+f13; + f13 = f15*f14; + f14 = f19+f17; + f8 = f8+f13; + r5 = r4 >> 2; + heapFloat[(fp+-12)] = f18; + f8 = f8+f16; + heapFloat[(r5+1)] = f14; + heapFloat[(r5+2)] = f8; + heap32[(r5+3)] = 0; + f13 = heapFloat[(r1+8)]; + f19 = heapFloat[(r1+9)]; + f20 = heapFloat[(r1+10)]; + f1 = f1*f13; + f3 = f3*f19; + f4 = f4*f13; + f5 = f5*f19; + f1 = f1+f3; + f3 = f9*f20; + f1 = f1+f3; + f3 = f10*f13; + f9 = f11*f19; + f4 = f4+f5; + f5 = f12*f20; + r1 = sp + -64; + f4 = f4+f5; + f1 = f1+f7; + f3 = f3+f9; + f5 = f15*f20; + f3 = f3+f5; + f4 = f4+f17; + r5 = r1 >> 2; + heapFloat[(fp+-16)] = f1; + f5 = f6+f18; + f3 = f3+f16; + heapFloat[(r5+1)] = f4; + f7 = f2+f14; + heapFloat[(r5+2)] = f3; + f5 = f5+f1; + f9 = 0.3333333432674408; + r6 = sp + -80; + f10 = f0+f8; + f7 = f7+f4; + f8 = f8-f0; + f4 = f4-f2; + f11 = f18-f6; + f0 = f3-f0; + f2 = f14-f2; + f1 = f1-f6; + f5 = f5*f9; + heap32[(r5+3)] = 0; + f3 = f10+f3; + f6 = f2*f0; + f10 = f8*f4; + f8 = f8*f1; + f0 = f11*f0; + r5 = r6 >> 2; + f7 = f7*f9; + heapFloat[(fp+-20)] = f5; + f5 = f6-f10; + f0 = f8-f0; + f4 = f11*f4; + f1 = f2*f1; + f2 = f3*f9; + heapFloat[(r5+1)] = f7; + f1 = f4-f1; + heapFloat[(r5+2)] = f2; + f2 = f5*f5; + f3 = f0*f0; + heap32[(r5+3)] = 0; + f2 = f2+f3; + f3 = f1*f1; + f2 = f2+f3; + heapFloat[(g0)] = f2; + r7 = sp + -96; + sqrtf(i7); + r8 = r7 >> 2; + heap32[(fp+-24)] = 1065353216; + heap32[(r8+1)] = 1065353216; + heap32[(r8+2)] = 0; + heap32[(r8+3)] = 0; + r8 = heap32[(r2+2)]; + r9 = r8 >> 2; + f3 = 1; + r9 = heap32[(r9)]; + f2 = f3/f_g0; + r9 = r9 >> 2; + r9 = heap32[(r9+2)]; + f3 = f5*f2; + f4 = heapFloat[(fp+-20)]; + f5 = heapFloat[(r5+2)]; + f6 = heapFloat[(r5+1)]; + r5 = sp + -16; + f0 = f0*f2; + f3 = f4+f3; + f1 = f1*f2; + r10 = r5 >> 2; + f0 = f6+f0; + heapFloat[(fp+-4)] = f3; + f1 = f5+f1; + heapFloat[(r10+1)] = f0; + heapFloat[(r10+2)] = f1; + heap32[(r10+3)] = 0; + heap32[(g0)] = r8; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r7; + __FUNCTION_TABLE__[(r9)>>2](i7); + r5 = heap32[(r2+2)]; + r6 = r5 >> 2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+2)]; + r0 = (r0 + 12)|0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r0; + __FUNCTION_TABLE__[(r6)>>2](i7); + r5 = heap32[(r2+2)]; + r6 = r5 >> 2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+2)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r1; + heap32[(g0+3)] = r0; + __FUNCTION_TABLE__[(r6)>>2](i7); + r2 = heap32[(r2+2)]; + r4 = r2 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+2)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = r0; + __FUNCTION_TABLE__[(r4)>>2](i7); + return; +} + +function _ZN17DebugDrawcallback28internalProcessTriangleIndexEP9btVector3ii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+2)]; + r2 = heap32[(fp+1)]; + r3 = heap32[(fp+2)]; + r4 = heap32[(fp+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = r4; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} + +function _ZThn4_N17DebugDrawcallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = _ZTV17DebugDrawcallback; + r1 = heap32[(fp)]; + r1 = r1 >> 2; + r2 = (r0 + 8)|0; + r3 = _ZTV31btInternalTriangleIndexCallback; + r0 = (r0 + 32)|0; + heap32[(r1+-1)] = r2; + r2 = _ZTV18btTriangleCallback; + r3 = (r3 + 8)|0; + heap32[(r1)] = r0; + r0 = (r2 + 8)|0; + heap32[(r1)] = r3; + heap32[(r1+-1)] = r0; + return; +} + +function _ZThn4_N17DebugDrawcallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV17DebugDrawcallback; + r2 = r0 >> 2; + r3 = (r1 + 8)|0; + r4 = _ZTV31btInternalTriangleIndexCallback; + r1 = (r1 + 32)|0; + heap32[(r2+-1)] = r3; + r3 = _ZTV18btTriangleCallback; + r4 = (r4 + 8)|0; + heap32[(r2)] = r1; + r1 = (r3 + 8)|0; + heap32[(r2)] = r4; + heap32[(r2+-1)] = r1; + r0 = (r0 + -4)|0; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZThn4_N17DebugDrawcallback28internalProcessTriangleIndexEP9btVector3ii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r1 = heap32[(r1+-1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+2)]; + r0 = (r0 + -4)|0; + r2 = heap32[(fp+1)]; + r3 = heap32[(fp+2)]; + r4 = heap32[(fp+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = r4; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} + +function _ZN16btCollisionWorldD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + heap32[(g0)] = r0; + _ZN16btCollisionWorldD2Ev(i7); + return; +} + +function _ZN16btCollisionWorldD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV16btCollisionWorld; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+4)]; + r3 = heap32[(r2+2)]; + if(r3 >0) //_LBB219_2 +{ + r3 = 0; +_3: while(true){ + r4 = r3 << 2; + r1 = (r1 + r4)|0; + r1 = r1 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r4 = heap32[(r1+47)]; +if(!(r4 ==0)) //_LBB219_5 +{ + r5 = heap32[(r2+20)]; + r6 = r5 >> 2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+9)]; + heap32[(g0)] = r5; + __FUNCTION_TABLE__[(r6)>>2](i7); + r6 = r_g0 >> 2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+10)]; + r7 = heap32[(r2+6)]; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r7; + __FUNCTION_TABLE__[(r6)>>2](i7); + r5 = heap32[(r2+20)]; + r6 = r5 >> 2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+3)]; + r7 = heap32[(r2+6)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r7; + __FUNCTION_TABLE__[(r6)>>2](i7); + heap32[(r1+47)] = 0; +} + r3 = (r3 + 1)|0; + r1 = heap32[(r2+4)]; + r4 = heap32[(r2+2)]; + if(r4 >r3) //_LBB219_3 +{ +continue _3; +} +else{ +break _3; +} +} +} +if(!(r1 ==0)) //_LBB219_10 +{ + r3 = heapU8[r0+20]; +if(!(r3 ==0)) //_LBB219_9 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+4)] = 0; +} + r1 = 1; + heap8[r0+20] = r1; + heap32[(r2+4)] = 0; + heap32[(r2+2)] = 0; + heap32[(r2+3)] = 0; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN16btCollisionWorld11updateAabbsEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; +var __label__ = 0; + i7 = sp + -64;var g0 = i7>>2; // save stack + r0 = _2E_str1998; + r1 = heap32[(fp)]; + heap32[(g0)] = r0; + r0 = r1 >> 2; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + r2 = heap32[(r0+2)]; +if(!(r2 <1)) //_LBB220_14 +{ + r2 = 0; +_3: while(true){ + r3 = heap32[(r0+4)]; + r4 = r2 << 2; + r3 = (r3 + r4)|0; + r3 = r3 >> 2; + r2 = (r2 + 1)|0; + r3 = heap32[(r3)]; + r4 = heapU8[r1+88]; + if(r4 !=0) //_LBB220_5 +{ +__label__ = 5; +} +else{ + r4 = r3 >> 2; + r4 = heap32[(r4+54)]; + if(r4 ==2) //_LBB220_13 +{ +__label__ = 13; +} +else{ + if(r4 ==5) //_LBB220_13 +{ +__label__ = 13; +} +else{ +__label__ = 5; +} +} +} +_8: do { +if (__label__ == 5){ + r4 = r3 >> 2; + r5 = heap32[(r4+48)]; + r6 = r5 >> 2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+2)]; + r7 = sp + -40; + r8 = sp + -24; + r9 = (r3 + 4)|0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r7; + __FUNCTION_TABLE__[(r6)>>2](i7); + f0 = -0.019999999552965164; + f1 = heapFloat[(fp+-6)]; + f1 = f1+f0; + r5 = r8 >> 2; + heapFloat[(fp+-6)] = f1; + f2 = heapFloat[(r5+1)]; + f2 = f2+f0; + heapFloat[(r5+1)] = f2; + f3 = heapFloat[(r5+2)]; + f0 = f3+f0; + heapFloat[(r5+2)] = f0; + f3 = 0.019999999552965164; + f4 = heapFloat[(fp+-10)]; + f4 = f4+f3; + r5 = r7 >> 2; + heapFloat[(fp+-10)] = f4; + f5 = heapFloat[(r5+1)]; + f5 = f5+f3; + heapFloat[(r5+1)] = f5; + f6 = heapFloat[(r5+2)]; + f3 = f6+f3; + heapFloat[(r5+2)] = f3; + r5 = heap32[(r0+20)]; + r3 = heapU8[r3+204]; + r3 = r3 & 1; +if(!(r3 != 0)) //_LBB220_10 +{ + f1 = f4-f1; + f2 = f5-f2; + f0 = f3-f0; + f1 = f1*f1; + f2 = f2*f2; + f1 = f1+f2; + f0 = f0*f0; + f0 = f1+f0; + f1 = 999999995904; +if(!(f0 > 2; + heap8[r4] = r5; + r4 = heap32[(r6)]; + r4 = r4 >> 2; + r4 = heap32[(r4+9)]; + r5 = _2E_str1594; + heap32[(g0)] = r3; + heap32[(g0+1)] = r5; + __FUNCTION_TABLE__[(r4)>>2](i7); + r3 = heap32[(r0+21)]; + r4 = r3 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+9)]; + r5 = _2E_str1695; + heap32[(g0)] = r3; + heap32[(g0+1)] = r5; + __FUNCTION_TABLE__[(r4)>>2](i7); + r3 = heap32[(r0+21)]; + r4 = r3 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+9)]; + r5 = _2E_str1796; + heap32[(g0)] = r3; + heap32[(g0+1)] = r5; + __FUNCTION_TABLE__[(r4)>>2](i7); + r3 = heap32[(r0+21)]; + r4 = r3 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+9)]; + r5 = _2E_str1897; + heap32[(g0)] = r3; + heap32[(g0+1)] = r5; + __FUNCTION_TABLE__[(r4)>>2](i7); +break _8; +} +} +} +} + r3 = r5 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+4)]; + r6 = heap32[(r0+6)]; + r4 = heap32[(r4+47)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r7; + heap32[(g0+4)] = r6; + __FUNCTION_TABLE__[(r3)>>2](i7); +} +} while(0); + r3 = heap32[(r0+2)]; + if(r3 >r2) //_LBB220_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + r0 = _ZN15CProfileManager11CurrentNodeE; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r3 = heap32[(r2+4)]; + r3 = (r3 + -1)|0; + heap32[(r2+4)] = r3; +_21: do { +if(!(r3 !=0)) //_LBB220_20 +{ + r3 = heap32[(r2+1)]; + if(r3 !=0) //_LBB220_17 +{ + r1 = sp + -8; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + r3 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r1 = r1 >> 2; + r4 = heap32[(fp+-2)]; + r5 = heap32[(r3)]; + r4 = (r4 - r5)|0; + r1 = heap32[(r1+1)]; + r3 = heap32[(r3+1)]; + r1 = (r1 - r3)|0; + r3 = (r4 * 1000000)|0; + r1 = (r1 + r3)|0; + r3 = heap32[(r2+3)]; + r1 = (r1 - r3)|0; + f0 = uint(r1); //fuitos r1, f0 + f1 = 1000; + f2 = heapFloat[(r2+2)]; + f0 = f0/f1; + f0 = f2+f0; + heapFloat[(r2+2)] = f0; + r1 = heap32[(r2+4)]; + if(r1 !=0) //_LBB220_20 +{ +break _21; +} +else{ + r1 = heap32[(r0)]; +} +} + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + heap32[(r0)] = r1; +} +} while(0); + return; +} + +function _ZN16btCollisionWorld14debugDrawWorldEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var f0; +var __label__ = 0; + i7 = sp + -104;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r_g0; +_1: do { +if(!(r2 ==0)) //_LBB221_10 +{ + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r3 = r_g0 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+12)]; + heap32[(g0)] = r_g0; + __FUNCTION_TABLE__[(r3)>>2](i7); + r2 = r_g0 & 8; +if(!(r2 ==0)) //_LBB221_10 +{ + r2 = heap32[(r1+6)]; + r3 = r2 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+9)]; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r3)>>2](i7); + r2 = r_g0; + r3 = sp + -16; + r4 = r3 >> 2; + heap32[(fp+-4)] = 0; + heap32[(r4+1)] = 0; + r5 = 0; + heap32[(r4+2)] = 0; + heap32[(r4+3)] = 0; +_4: while(true){ + if(r5 > 2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+10)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r5; + __FUNCTION_TABLE__[(r6)>>2](i7); + r4 = r_g0; + r6 = r4 >> 2; + r6 = heap32[(r6+279)]; + r7 = 36; + r8 = 68; + r9 = 0; +_7: while(true){ + if(r9 > 2; + r10 = heap32[(r10+279)]; + if(r10 >r9) //_LBB221_6 +{ + r10 = (r9 * 69)|0; + r11 = (r4 + r7)|0; + r12 = (r4 + r8)|0; + r13 = heap32[(r1)]; + r13 = r13 >> 2; + r13 = heap32[(r13+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r13)>>2](i7); + r14 = r_g0 >> 2; + r15 = r10 << 2; + r10 = r10 << 2; + r14 = heap32[(r14)]; + r15 = (r4 + r15)|0; + r10 = (r4 + r10)|0; + r14 = r14 >> 2; + r15 = r15 >> 2; + r10 = r10 >> 2; + r14 = heap32[(r14+8)]; + r15 = heap32[(r15+37)]; + f0 = heapFloat[(r10+21)]; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r11; + heap32[(g0+2)] = r12; + heapFloat[(g0+3)] = f0; + heap32[(g0+4)] = r15; + heap32[(g0+5)] = r3; + r9 = (r9 + 1)|0; + r8 = (r8 + 276)|0; + r7 = (r7 + 276)|0; + __FUNCTION_TABLE__[(r14)>>2](i7); +} +else{ +break _4; +} +} +else{ +break _7; +} +} + r5 = (r5 + 1)|0; +} +else{ +break _1; +} +} + r0 = _2E_str382; + r1 = _2E_str483; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 122; + _assert(i7); +} +} +} while(0); + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r_g0; +_14: do { +if(!(r2 ==0)) //_LBB221_13 +{ + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r3 = r_g0 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+12)]; + heap32[(g0)] = r_g0; + __FUNCTION_TABLE__[(r3)>>2](i7); + r2 = r_g0 & 3; +if(!(r2 ==0)) //_LBB221_13 +{ + r2 = heap32[(r1+2)]; + if(r2 >0) //_LBB221_14 +{ + r2 = 0; +_18: while(true){ + r3 = heap32[(r1+4)]; + r4 = r2 << 2; + r3 = (r3 + r4)|0; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r4 = heapU8[r3+204]; + r4 = r4 & 32; +if(!(r4 !=0)) //_LBB221_34 +{ + r4 = heap32[(r1)]; + r4 = r4 >> 2; + r4 = heap32[(r4+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r4)>>2](i7); + r4 = r_g0; +if(!(r4 ==0)) //_LBB221_31 +{ + r4 = heap32[(r1)]; + r4 = r4 >> 2; + r4 = heap32[(r4+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r4)>>2](i7); + r5 = r_g0 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+12)]; + heap32[(g0)] = r_g0; + __FUNCTION_TABLE__[(r5)>>2](i7); + r4 = r_g0 & 1; +if(!(r4 ==0)) //_LBB221_31 +{ + r4 = sp + -32; + r5 = r4 >> 2; + heap32[(fp+-8)] = 1065353216; + heap32[(r5+1)] = 1065353216; + heap32[(r5+2)] = 1065353216; + r6 = r3 >> 2; + heap32[(r5+3)] = 0; + r7 = heap32[(r6+54)]; +_25: do { + if(r7 >2) //_LBB221_21 +{ + if(r7 ==3) //_LBB221_26 +{ + heap32[(fp+-8)] = 0; + heap32[(r5+1)] = 1065353216; + heap32[(r5+2)] = 1065353216; + heap32[(r5+3)] = 0; +__label__ = 30; +break _25; +} +else{ + if(r7 ==4) //_LBB221_27 +{ + heap32[(fp+-8)] = 1065353216; + heap32[(r5+1)] = 0; + heap32[(r5+2)] = 0; + heap32[(r5+3)] = 0; +__label__ = 30; +break _25; +} +else{ + if(r7 ==5) //_LBB221_28 +{ + heap32[(fp+-8)] = 1065353216; + heap32[(r5+1)] = 1065353216; + heap32[(r5+2)] = 0; + heap32[(r5+3)] = 0; +__label__ = 30; +break _25; +} +else{ +__label__ = 29; +break _25; +} +} +} +} +else{ + if(r7 ==1) //_LBB221_24 +{ + heap32[(fp+-8)] = 1065353216; + heap32[(r5+1)] = 1065353216; + heap32[(r5+2)] = 1065353216; + heap32[(r5+3)] = 0; +__label__ = 30; +} +else{ + if(r7 ==2) //_LBB221_25 +{ + heap32[(fp+-8)] = 0; + heap32[(r5+1)] = 1065353216; + heap32[(r5+2)] = 0; + heap32[(r5+3)] = 0; +__label__ = 30; +} +else{ +__label__ = 29; +} +} +} +} while(0); +if (__label__ == 29){ + heap32[(fp+-8)] = 1065353216; + heap32[(r5+1)] = 0; + heap32[(r5+2)] = 0; + heap32[(r5+3)] = 0; +} + r5 = heap32[(r1)]; + r5 = r5 >> 2; + r5 = heap32[(r5+6)]; + r6 = heap32[(r6+48)]; + r7 = (r3 + 4)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r6; + heap32[(g0+3)] = r4; + __FUNCTION_TABLE__[(r5)>>2](i7); +} +} + r4 = heap32[(r1+21)]; +if(!(r4 ==0)) //_LBB221_34 +{ + r5 = r4 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+12)]; + heap32[(g0)] = r4; + __FUNCTION_TABLE__[(r5)>>2](i7); + r4 = r_g0 & 2; +if(!(r4 ==0)) //_LBB221_34 +{ + r4 = sp + -80; + r5 = r4 >> 2; + heap32[(fp+-20)] = 1065353216; + heap32[(r5+1)] = 0; + heap32[(r5+2)] = 0; + r6 = r3 >> 2; + heap32[(r5+3)] = 0; + r5 = heap32[(r6+48)]; + r6 = r5 >> 2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+2)]; + r3 = (r3 + 4)|0; + r7 = sp + -48; + r8 = sp + -64; + heap32[(g0)] = r5; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r7; + heap32[(g0+3)] = r8; + __FUNCTION_TABLE__[(r6)>>2](i7); + r3 = heap32[(r1+21)]; + r5 = r3 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+13)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r4; + __FUNCTION_TABLE__[(r5)>>2](i7); +} +} +} + r2 = (r2 + 1)|0; + r3 = heap32[(r1+2)]; + if(r3 >r2) //_LBB221_15 +{ +continue _18; +} +else{ +break _14; +} +} +} +} +} +} while(0); + return; +} + +function _ZN16btCollisionWorld15debugDrawObjectERK11btTransformPK16btCollisionShapeRK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; +var __label__ = 0; + i7 = sp + -1376;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r3 = r_g0 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+14)]; + r4 = heap32[(fp+1)]; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = 1065353216; + r2 = heap32[(fp+2)]; + r5 = r2 >> 2; + __FUNCTION_TABLE__[(r3)>>2](i7); + r3 = heap32[(r5+1)]; + r6 = heap32[(fp+3)]; +_1: do { + if(r3 >10) //_LBB222_6 +{ + if(r3 >27) //_LBB222_9 +{ + if(r3 ==28) //_LBB222_23 +{ + f0 = heapFloat[(r5+14)]; + f1 = heapFloat[(r5+13)]; + f2 = heapFloat[(r5+16)]; + f3 = heapFloat[(r5+12)]; + f4 = f0*f2; + f5 = f1*f2; + f2 = f3*f2; + f6 = 0; + if(f0 > 2; + r2 = heap32[(r2+4)]; + heap32[(g0)] = r0; + f9 = 100; + __FUNCTION_TABLE__[(r2)>>2](i7); + r3 = r4 >> 2; + f8 = f8*f9; + r4 = r_g0 >> 2; + f10 = f2-f0; + f11 = heapFloat[(r3)]; + f12 = f5-f8; + f13 = heapFloat[(r3+1)]; + r4 = heap32[(r4)]; + f14 = heapFloat[(r3+4)]; + f15 = heapFloat[(r3+5)]; + f16 = f11*f10; + f17 = f13*f12; + f18 = f4-f6; + f19 = heapFloat[(r3+2)]; + r4 = r4 >> 2; + f20 = heapFloat[(r3+8)]; + f21 = heapFloat[(r3+9)]; + f22 = heapFloat[(r3+6)]; + f23 = f14*f10; + f24 = f15*f12; + f16 = f16+f17; + f17 = f19*f18; + f25 = heapFloat[(r3+10)]; + r4 = heap32[(r4+2)]; + f10 = f20*f10; + f12 = f21*f12; + f23 = f23+f24; + f24 = f22*f18; + f16 = f16+f17; + f17 = heapFloat[(r3+12)]; + f26 = heapFloat[(r3+14)]; + f27 = heapFloat[(r3+13)]; + f0 = f2+f0; + f8 = f5+f8; + r5 = sp + -64; + f23 = f23+f24; + f10 = f10+f12; + f12 = f25*f18; + f16 = f16+f17; + f6 = f4+f6; + f10 = f10+f12; + f11 = f11*f0; + f12 = f13*f8; + r7 = r5 >> 2; + f13 = f23+f27; + heapFloat[(fp+-16)] = f16; + f14 = f14*f0; + f15 = f15*f8; + f11 = f11+f12; + f12 = f19*f6; + f10 = f10+f26; + heapFloat[(r7+1)] = f13; + f11 = f11+f12; + heapFloat[(r7+2)] = f10; + f0 = f20*f0; + f8 = f21*f8; + f10 = f14+f15; + f12 = f22*f6; + r8 = sp + -48; + f10 = f10+f12; + f0 = f0+f8; + f6 = f25*f6; + f8 = f11+f17; + heap32[(r7+3)] = 0; + f0 = f0+f6; + r7 = r8 >> 2; + f6 = f10+f27; + heapFloat[(fp+-12)] = f8; + f0 = f0+f26; + heapFloat[(r7+1)] = f6; + heapFloat[(r7+2)] = f0; + heap32[(r7+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r6; + __FUNCTION_TABLE__[(r4)>>2](i7); + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + f0 = f1*f9; + f1 = f3*f9; + f3 = f7*f9; + r1 = r_g0 >> 2; + f6 = f2-f0; + f7 = heapFloat[(r3)]; + f8 = f5-f1; + f9 = heapFloat[(r3+1)]; + r1 = heap32[(r1)]; + f10 = heapFloat[(r3+4)]; + f11 = heapFloat[(r3+5)]; + f12 = f7*f6; + f13 = f9*f8; + f14 = f4-f3; + f15 = heapFloat[(r3+2)]; + r1 = r1 >> 2; + f16 = heapFloat[(r3+8)]; + f17 = heapFloat[(r3+9)]; + f18 = heapFloat[(r3+6)]; + f19 = f10*f6; + f20 = f11*f8; + f12 = f12+f13; + f13 = f15*f14; + f21 = heapFloat[(r3+10)]; + r1 = heap32[(r1+2)]; + f6 = f16*f6; + f8 = f17*f8; + f19 = f19+f20; + f20 = f18*f14; + f12 = f12+f13; + f13 = heapFloat[(r3+12)]; + f22 = heapFloat[(r3+14)]; + f23 = heapFloat[(r3+13)]; + f0 = f2+f0; + f1 = f5+f1; + r2 = sp + -32; + f2 = f19+f20; + f5 = f6+f8; + f6 = f21*f14; + f8 = f12+f13; + f3 = f4+f3; + f4 = f5+f6; + f5 = f7*f0; + f6 = f9*f1; + r3 = r2 >> 2; + f2 = f2+f23; + heapFloat[(fp+-8)] = f8; + f7 = f10*f0; + f8 = f11*f1; + f5 = f5+f6; + f6 = f15*f3; + f4 = f4+f22; + heapFloat[(r3+1)] = f2; + f2 = f5+f6; + heapFloat[(r3+2)] = f4; + f0 = f16*f0; + f1 = f17*f1; + f4 = f7+f8; + f5 = f18*f3; + r4 = sp + -16; + f4 = f4+f5; + f0 = f0+f1; + f1 = f21*f3; + f2 = f2+f13; + heap32[(r3+3)] = 0; + f0 = f0+f1; + r3 = r4 >> 2; + f1 = f4+f23; + heapFloat[(fp+-4)] = f2; + f0 = f0+f22; + heapFloat[(r3+1)] = f1; + heapFloat[(r3+2)] = f0; + heap32[(r3+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r4; +__label__ = 30; +break _1; +} +else{ + if(r3 !=31) //_LBB222_32 +{ +__label__ = 32; +break _1; +} +else{ + r2 = heap32[(r5+4)]; + r3 = (r2 + -1)|0; + if(r3 <0) //_LBB222_42 +{ +__label__ = 40; +break _1; +} +else{ + r3 = 1; + r2 = (r3 - r2)|0; +_18: while(true){ + r3 = r2; + r2 = (r3 * -20)|0; + r7 = heap32[(r5+6)]; + r2 = r2 << 2; + r2 = (r7 + r2)|0; + r2 = r2 >> 2; + r7 = r4 >> 2; + r8 = heap32[(r1)]; + f0 = heapFloat[(r2)]; + f1 = heapFloat[(r7)]; + f2 = heapFloat[(r2+4)]; + f3 = heapFloat[(r7+1)]; + r8 = r8 >> 2; + f4 = heapFloat[(r2+1)]; + f5 = heapFloat[(r2+5)]; + f6 = f0*f1; + f7 = f2*f3; + f8 = heapFloat[(r2+8)]; + f9 = heapFloat[(r7+2)]; + f10 = heapFloat[(r7+8)]; + f11 = heapFloat[(r2+2)]; + f12 = heapFloat[(r7+4)]; + f13 = heapFloat[(r2+12)]; + f14 = heapFloat[(r7+9)]; + f15 = heapFloat[(r2+6)]; + f16 = heapFloat[(r7+5)]; + f17 = heapFloat[(r2+13)]; + f18 = heapFloat[(r2+9)]; + f19 = heapFloat[(r7+10)]; + f20 = heapFloat[(r2+10)]; + f21 = heapFloat[(r7+6)]; + f22 = heapFloat[(r2+14)]; + r8 = heap32[(r8+6)]; + f23 = f4*f1; + f24 = f5*f3; + f6 = f6+f7; + f7 = f8*f9; + r2 = heap32[(r2+16)]; + f25 = heapFloat[(r7+14)]; + f26 = heapFloat[(r7+13)]; + f27 = heapFloat[(r7+12)]; + r7 = sp + -688; + f28 = f11*f1; + f29 = f15*f3; + f23 = f23+f24; + f24 = f18*f9; + f6 = f6+f7; + r9 = r7 >> 2; + f7 = f28+f29; + f28 = f20*f9; + f23 = f23+f24; + heapFloat[(fp+-172)] = f6; + f6 = f0*f12; + f24 = f2*f16; + f7 = f7+f28; + heapFloat[(r9+1)] = f23; + heapFloat[(r9+2)] = f7; + f7 = f4*f12; + f23 = f5*f16; + f6 = f6+f24; + f24 = f8*f21; + f28 = f11*f12; + f29 = f15*f16; + f7 = f7+f23; + f23 = f18*f21; + f6 = f6+f24; + heap32[(r9+3)] = 0; + f24 = f28+f29; + f28 = f20*f21; + f7 = f7+f23; + heapFloat[(r9+4)] = f6; + f0 = f0*f10; + f2 = f2*f14; + f6 = f24+f28; + heapFloat[(r9+5)] = f7; + heapFloat[(r9+6)] = f6; + f4 = f4*f10; + f5 = f5*f14; + f0 = f0+f2; + f2 = f8*f19; + f6 = f11*f10; + f7 = f15*f14; + f4 = f4+f5; + f5 = f18*f19; + f0 = f0+f2; + heap32[(r9+7)] = 0; + f1 = f1*f13; + f2 = f3*f17; + f3 = f6+f7; + f6 = f20*f19; + f4 = f4+f5; + heapFloat[(r9+8)] = f0; + f0 = f12*f13; + f5 = f16*f17; + f1 = f1+f2; + f2 = f9*f22; + f3 = f3+f6; + heapFloat[(r9+9)] = f4; + f1 = f1+f2; + heapFloat[(r9+10)] = f3; + f2 = f10*f13; + f3 = f14*f17; + f0 = f0+f5; + f4 = f21*f22; + f0 = f0+f4; + f2 = f2+f3; + f3 = f19*f22; + f1 = f1+f27; + heap32[(r9+11)] = 0; + f2 = f2+f3; + f0 = f0+f26; + heapFloat[(r9+12)] = f1; + f1 = f2+f25; + heapFloat[(r9+13)] = f0; + heapFloat[(r9+14)] = f1; + heap32[(r9+15)] = 0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r6; + r2 = (r3 + 1)|0; + __FUNCTION_TABLE__[(r8)>>2](i7); + if(r3 ==0) //_LBB222_42 +{ +__label__ = 40; +break _1; +} +else{ +continue _18; +} +} +} +} +} +} +else{ + if(r3 ==11) //_LBB222_20 +{ + r2 = r4 >> 2; + r3 = heap32[(r5+17)]; + f0 = heapFloat[(r5+14)]; + f1 = heapFloat[(r5+15)]; + f2 = heapFloat[(r2+12)]; + f3 = heapFloat[(r2+13)]; + f4 = heapFloat[(r2+14)]; + r4 = sp + -880; + r5 = r4 >> 2; + heap32[(fp+-220)] = 0; + heap32[(r5+1)] = 0; + r7 = r3 << 2; + r4 = (r4 + r7)|0; + f5 = 0.5; + heap32[(r5+2)] = 0; + r4 = r4 >> 2; + f1 = f1*f5; + heap32[(r5+3)] = 0; + r8 = sp + -896; + heapFloat[(r4)] = f1; + r4 = (r3 + 1)|0; + r4 = (r4 % 3)|0; + r9 = r8 >> 2; + heap32[(fp+-224)] = 0; + heap32[(r9+1)] = 0; + r4 = r4 << 2; + r8 = (r8 + r4)|0; + heap32[(r9+2)] = 0; + r8 = r8 >> 2; + heap32[(r9+3)] = 0; + r3 = (r3 + 2)|0; + r10 = sp + -912; + heapFloat[(r8)] = f0; + r3 = (r3 % 3)|0; + r8 = r10 >> 2; + heap32[(fp+-228)] = 0; + r3 = r3 << 2; + heap32[(r8+1)] = 0; + r3 = (r10 + r3)|0; + heap32[(r8+2)] = 0; + r3 = r3 >> 2; + heap32[(r8+3)] = 0; + heapFloat[(r3)] = f0; + r3 = heap32[(r1)]; + r3 = r3 >> 2; + r3 = heap32[(r3+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r3)>>2](i7); + f1 = heapFloat[(r5+1)]; + f5 = heapFloat[(fp+-220)]; + f6 = heapFloat[(r9+1)]; + f7 = heapFloat[(fp+-224)]; + r10 = r_g0 >> 2; + f8 = heapFloat[(r5+2)]; + f9 = heapFloat[(r9+2)]; + f10 = heapFloat[(r2)]; + f11 = f7-f5; + f12 = heapFloat[(r2+1)]; + f13 = f6-f1; + f14 = heapFloat[(r2+4)]; + f15 = heapFloat[(r2+5)]; + r5 = heap32[(r10)]; + f16 = heapFloat[(r2+2)]; + f17 = f9-f8; + f18 = f10*f11; + f19 = f12*f13; + f20 = heapFloat[(r2+8)]; + f21 = heapFloat[(r2+9)]; + f22 = heapFloat[(r2+6)]; + r5 = r5 >> 2; + f23 = f14*f11; + f24 = f15*f13; + f18 = f18+f19; + f19 = f16*f17; + f25 = heapFloat[(r2+10)]; + r5 = heap32[(r5+2)]; + f18 = f18+f19; + f11 = f20*f11; + f13 = f21*f13; + f19 = f23+f24; + f23 = f22*f17; + r9 = sp + -416; + f19 = f19+f23; + f11 = f11+f13; + f13 = f25*f17; + f17 = f2+f18; + f11 = f11+f13; + f10 = f10*f5; + f12 = f12*f1; + r10 = r9 >> 2; + f13 = f3+f19; + heapFloat[(fp+-104)] = f17; + f14 = f14*f5; + f15 = f15*f1; + f10 = f10+f12; + f12 = f16*f8; + f11 = f4+f11; + heapFloat[(r10+1)] = f13; + f10 = f10+f12; + heapFloat[(r10+2)] = f11; + f11 = f20*f5; + f12 = f21*f1; + f13 = f14+f15; + f14 = f22*f8; + r11 = sp + -400; + f13 = f13+f14; + f11 = f11+f12; + f12 = f25*f8; + f10 = f2+f10; + heap32[(r10+3)] = 0; + f11 = f11+f12; + r10 = r11 >> 2; + f12 = f3+f13; + heapFloat[(fp+-100)] = f10; + f10 = f4+f11; + heapFloat[(r10+1)] = f12; + heapFloat[(r10+2)] = f10; + heap32[(r10+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r11; + heap32[(g0+2)] = r9; + heap32[(g0+3)] = r6; + __FUNCTION_TABLE__[(r5)>>2](i7); + r3 = heap32[(r1)]; + r3 = r3 >> 2; + r3 = heap32[(r3+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r3)>>2](i7); + f10 = -f5; + f11 = -f1; + f12 = -f8; + r5 = r_g0 >> 2; + f13 = heapFloat[(r2)]; + f7 = f10-f7; + f14 = heapFloat[(r2+1)]; + f6 = f11-f6; + f15 = heapFloat[(r2+4)]; + f16 = heapFloat[(r2+5)]; + r5 = heap32[(r5)]; + f17 = heapFloat[(r2+2)]; + f9 = f12-f9; + f18 = f13*f7; + f19 = f14*f6; + f20 = heapFloat[(r2+8)]; + f21 = heapFloat[(r2+9)]; + f22 = heapFloat[(r2+6)]; + r5 = r5 >> 2; + f23 = f15*f7; + f24 = f16*f6; + f18 = f18+f19; + f19 = f17*f9; + f25 = heapFloat[(r2+10)]; + r5 = heap32[(r5+2)]; + f18 = f18+f19; + f7 = f20*f7; + f6 = f21*f6; + f19 = f23+f24; + f23 = f22*f9; + r9 = sp + -384; + f19 = f19+f23; + f6 = f7+f6; + f7 = f25*f9; + f9 = f2+f18; + f6 = f6+f7; + f7 = f13*f5; + f13 = f14*f1; + r10 = r9 >> 2; + f14 = f3+f19; + heapFloat[(fp+-96)] = f9; + f9 = f15*f5; + f15 = f16*f1; + f7 = f7+f13; + f13 = f17*f8; + f6 = f4+f6; + heapFloat[(r10+1)] = f14; + f7 = f7+f13; + heapFloat[(r10+2)] = f6; + f6 = f20*f5; + f13 = f21*f1; + f9 = f9+f15; + f14 = f22*f8; + r11 = sp + -368; + f9 = f9+f14; + f6 = f6+f13; + f13 = f25*f8; + f7 = f2+f7; + heap32[(r10+3)] = 0; + f6 = f6+f13; + r10 = r11 >> 2; + f9 = f3+f9; + heapFloat[(fp+-92)] = f7; + f6 = f4+f6; + heapFloat[(r10+1)] = f9; + heapFloat[(r10+2)] = f6; + heap32[(r10+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r11; + heap32[(g0+2)] = r9; + heap32[(g0+3)] = r6; + __FUNCTION_TABLE__[(r5)>>2](i7); + r3 = heap32[(r1)]; + r3 = r3 >> 2; + r3 = heap32[(r3+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r3)>>2](i7); + f6 = heapFloat[(r8+1)]; + f7 = heapFloat[(fp+-228)]; + f9 = heapFloat[(r8+2)]; + r5 = r_g0 >> 2; + f13 = heapFloat[(r2)]; + f14 = f7-f5; + f15 = heapFloat[(r2+1)]; + f16 = f6-f1; + f17 = heapFloat[(r2+4)]; + f18 = heapFloat[(r2+5)]; + r5 = heap32[(r5)]; + f19 = heapFloat[(r2+2)]; + f20 = f9-f8; + f21 = f13*f14; + f22 = f15*f16; + f23 = heapFloat[(r2+8)]; + f24 = heapFloat[(r2+9)]; + f25 = heapFloat[(r2+6)]; + r5 = r5 >> 2; + f26 = f17*f14; + f27 = f18*f16; + f21 = f21+f22; + f22 = f19*f20; + f28 = heapFloat[(r2+10)]; + r5 = heap32[(r5+2)]; + f21 = f21+f22; + f14 = f23*f14; + f16 = f24*f16; + f22 = f26+f27; + f26 = f25*f20; + r8 = sp + -352; + f22 = f22+f26; + f14 = f14+f16; + f16 = f28*f20; + f20 = f2+f21; + f14 = f14+f16; + f13 = f13*f5; + f15 = f15*f1; + r9 = r8 >> 2; + f16 = f3+f22; + heapFloat[(fp+-88)] = f20; + f17 = f17*f5; + f18 = f18*f1; + f13 = f13+f15; + f15 = f19*f8; + f14 = f4+f14; + heapFloat[(r9+1)] = f16; + f13 = f13+f15; + heapFloat[(r9+2)] = f14; + f14 = f23*f5; + f15 = f24*f1; + f16 = f17+f18; + f17 = f25*f8; + r10 = sp + -336; + f16 = f16+f17; + f14 = f14+f15; + f15 = f28*f8; + f13 = f2+f13; + heap32[(r9+3)] = 0; + f14 = f14+f15; + r9 = r10 >> 2; + f15 = f3+f16; + heapFloat[(fp+-84)] = f13; + f13 = f4+f14; + heapFloat[(r9+1)] = f15; + heapFloat[(r9+2)] = f13; + heap32[(r9+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r6; + __FUNCTION_TABLE__[(r5)>>2](i7); + r3 = heap32[(r1)]; + r3 = r3 >> 2; + r3 = heap32[(r3+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r3)>>2](i7); + r5 = r_g0 >> 2; + f13 = heapFloat[(r2)]; + f7 = f10-f7; + f10 = heapFloat[(r2+1)]; + f6 = f11-f6; + f11 = heapFloat[(r2+4)]; + f14 = heapFloat[(r2+5)]; + r5 = heap32[(r5)]; + f15 = heapFloat[(r2+2)]; + f9 = f12-f9; + f12 = f13*f7; + f16 = f10*f6; + f17 = heapFloat[(r2+8)]; + f18 = heapFloat[(r2+9)]; + f19 = heapFloat[(r2+6)]; + r5 = r5 >> 2; + f20 = f11*f7; + f21 = f14*f6; + f12 = f12+f16; + f16 = f15*f9; + f22 = heapFloat[(r2+10)]; + r5 = heap32[(r5+2)]; + f12 = f12+f16; + f7 = f17*f7; + f6 = f18*f6; + f16 = f20+f21; + f20 = f19*f9; + r8 = sp + -320; + f16 = f16+f20; + f6 = f7+f6; + f7 = f22*f9; + f9 = f2+f12; + f6 = f6+f7; + f7 = f13*f5; + f10 = f10*f1; + r9 = r8 >> 2; + f12 = f3+f16; + heapFloat[(fp+-80)] = f9; + f9 = f11*f5; + f11 = f14*f1; + f7 = f7+f10; + f10 = f15*f8; + f6 = f4+f6; + heapFloat[(r9+1)] = f12; + f7 = f7+f10; + heapFloat[(r9+2)] = f6; + f6 = f17*f5; + f10 = f18*f1; + f9 = f9+f11; + f11 = f19*f8; + r10 = sp + -304; + f9 = f9+f11; + f6 = f6+f10; + f10 = f22*f8; + f7 = f2+f7; + heap32[(r9+3)] = 0; + f6 = f6+f10; + r9 = r10 >> 2; + f9 = f3+f9; + heapFloat[(fp+-76)] = f7; + f6 = f4+f6; + heapFloat[(r9+1)] = f9; + heapFloat[(r9+2)] = f6; + heap32[(r9+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r6; + r3 = sp + -928; + __FUNCTION_TABLE__[(r5)>>2](i7); + r5 = r3 >> 2; + heap32[(fp+-232)] = 0; + heap32[(r5+1)] = 0; + r3 = (r3 + r7)|0; + heap32[(r5+2)] = 0; + r3 = r3 >> 2; + heap32[(r5+3)] = 0; + r7 = sp + -944; + heap32[(r3)] = 1065353216; + r3 = r7 >> 2; + heap32[(fp+-236)] = 0; + heap32[(r3+1)] = 0; + r4 = (r7 + r4)|0; + heap32[(r3+2)] = 0; + r4 = r4 >> 2; + heap32[(r3+3)] = 0; + heap32[(r4)] = 1065353216; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r1 = r_g0 >> 2; + r1 = heap32[(r1)]; + f6 = heapFloat[(r2)]; + f7 = heapFloat[(fp+-236)]; + f9 = heapFloat[(r2+1)]; + f10 = heapFloat[(r3+1)]; + f11 = heapFloat[(r2+4)]; + f12 = heapFloat[(r2+5)]; + r1 = r1 >> 2; + f13 = heapFloat[(r2+2)]; + f14 = heapFloat[(r3+2)]; + f15 = f6*f7; + f16 = f9*f10; + f17 = heapFloat[(r2+8)]; + f18 = heapFloat[(r2+9)]; + f19 = heapFloat[(r2+10)]; + f20 = heapFloat[(r2+6)]; + r1 = heap32[(r1+15)]; + f21 = f11*f7; + f22 = f12*f10; + f15 = f15+f16; + f16 = f13*f14; + r2 = sp + -288; + f7 = f17*f7; + f10 = f18*f10; + f21 = f21+f22; + f22 = f20*f14; + f15 = f15+f16; + r3 = r2 >> 2; + f7 = f7+f10; + f10 = f19*f14; + f14 = f21+f22; + heapFloat[(fp+-72)] = f15; + f7 = f7+f10; + heapFloat[(r3+1)] = f14; + heapFloat[(r3+2)] = f7; + heap32[(r3+3)] = 0; + f7 = heapFloat[(fp+-232)]; + f10 = heapFloat[(r5+1)]; + f14 = heapFloat[(r5+2)]; + f15 = f6*f7; + f16 = f9*f10; + f21 = f11*f7; + f22 = f12*f10; + f15 = f15+f16; + f16 = f13*f14; + r3 = sp + -272; + f7 = f17*f7; + f10 = f18*f10; + f21 = f21+f22; + f22 = f20*f14; + f15 = f15+f16; + f6 = f6*f5; + f9 = f9*f1; + r4 = r3 >> 2; + f7 = f7+f10; + f10 = f19*f14; + f14 = f21+f22; + heapFloat[(fp+-68)] = f15; + f11 = f11*f5; + f12 = f12*f1; + f6 = f6+f9; + f9 = f13*f8; + f7 = f7+f10; + heapFloat[(r4+1)] = f14; + f6 = f6+f9; + heapFloat[(r4+2)] = f7; + f5 = f17*f5; + f1 = f18*f1; + f7 = f11+f12; + f9 = f20*f8; + r5 = sp + -256; + f7 = f7+f9; + f1 = f5+f1; + f5 = f19*f8; + f2 = f2-f6; + heap32[(r4+3)] = 0; + f1 = f1+f5; + r4 = r5 >> 2; + f3 = f3-f7; + heapFloat[(fp+-64)] = f2; + f1 = f4-f1; + heapFloat[(r4+1)] = f3; + heapFloat[(r4+2)] = f1; + heap32[(r4+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r3; +} +else{ + if(r3 ==13) //_LBB222_21 +{ + r3 = heap32[(r5)]; + r3 = r3 >> 2; + r7 = heap32[(r5+13)]; + r3 = heap32[(r3+21)]; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r3)>>2](i7); + f0 = f_g0; + r3 = sp + -240; + f1 = heapFloat[(r5+8)]; + f2 = heapFloat[(r5+9)]; + f3 = heapFloat[(r5+7)]; + r8 = r3 >> 2; + heap32[(r8+3)] = heap32[(r5+10)]; + r9 = heap32[(r5)]; + r9 = r9 >> 2; + r9 = heap32[(r9+11)]; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r9)>>2](i7); + f4 = f_g0; + r9 = heap32[(r5)]; + r9 = r9 >> 2; + r9 = heap32[(r9+11)]; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r9)>>2](i7); + f5 = f_g0; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+11)]; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r5)>>2](i7); + f3 = f3+f_g0; + r2 = r7 << 2; + f1 = f1+f5; + heapFloat[(fp+-60)] = f3; + r3 = (r3 + r2)|0; + f2 = f2+f4; + heapFloat[(r8+1)] = f1; + r3 = r3 >> 2; + heapFloat[(r8+2)] = f2; + r4 = r4 >> 2; + f1 = heapFloat[(r3)]; + f2 = heapFloat[(r4+12)]; + f3 = heapFloat[(r4+13)]; + f4 = heapFloat[(r4+14)]; + r3 = sp + -960; + r5 = r3 >> 2; + heap32[(fp+-240)] = 0; + heap32[(r5+1)] = 0; + r3 = (r3 + r2)|0; + heap32[(r5+2)] = 0; + r3 = r3 >> 2; + heap32[(r5+3)] = 0; + r8 = sp + -976; + heapFloat[(r3)] = f1; + r3 = (r7 + 1)|0; + r3 = (r3 % 3)|0; + r7 = r8 >> 2; + heap32[(fp+-244)] = 0; + heap32[(r7+1)] = 0; + r3 = r3 << 2; + r8 = (r8 + r3)|0; + heap32[(r7+2)] = 0; + r8 = r8 >> 2; + heap32[(r7+3)] = 0; + heapFloat[(r8)] = f0; + r8 = heap32[(r1)]; + r8 = r8 >> 2; + r8 = heap32[(r8+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r8)>>2](i7); + f1 = heapFloat[(r5+1)]; + f5 = heapFloat[(r7+1)]; + f6 = heapFloat[(fp+-240)]; + f7 = heapFloat[(fp+-244)]; + r9 = r_g0 >> 2; + f8 = heapFloat[(r5+2)]; + f9 = heapFloat[(r7+2)]; + f10 = f7-f6; + f11 = heapFloat[(r4)]; + f12 = f5-f1; + f13 = heapFloat[(r4+1)]; + r5 = heap32[(r9)]; + f14 = heapFloat[(r4+4)]; + f15 = heapFloat[(r4+5)]; + f16 = f11*f10; + f17 = f13*f12; + f18 = f9-f8; + f19 = heapFloat[(r4+2)]; + r5 = r5 >> 2; + f20 = heapFloat[(r4+8)]; + f21 = heapFloat[(r4+9)]; + f22 = heapFloat[(r4+6)]; + f23 = f14*f10; + f24 = f15*f12; + f16 = f16+f17; + f17 = f19*f18; + f16 = f16+f17; + f17 = heapFloat[(r4+10)]; + r5 = heap32[(r5+2)]; + f10 = f20*f10; + f12 = f21*f12; + f23 = f23+f24; + f24 = f22*f18; + f25 = f6+f7; + f26 = f1+f5; + r7 = sp + -224; + f23 = f23+f24; + f10 = f10+f12; + f12 = f17*f18; + f16 = f2+f16; + f18 = f8+f9; + f10 = f10+f12; + f11 = f11*f25; + f12 = f13*f26; + r9 = r7 >> 2; + f13 = f3+f23; + heapFloat[(fp+-56)] = f16; + f14 = f14*f25; + f15 = f15*f26; + f11 = f11+f12; + f12 = f19*f18; + f10 = f4+f10; + heapFloat[(r9+1)] = f13; + f11 = f11+f12; + heapFloat[(r9+2)] = f10; + f10 = f20*f25; + f12 = f21*f26; + f13 = f14+f15; + f14 = f22*f18; + r10 = sp + -208; + f13 = f13+f14; + f10 = f10+f12; + f12 = f17*f18; + f11 = f2+f11; + heap32[(r9+3)] = 0; + f10 = f10+f12; + r9 = r10 >> 2; + f12 = f3+f13; + heapFloat[(fp+-52)] = f11; + f10 = f4+f10; + heapFloat[(r9+1)] = f12; + heapFloat[(r9+2)] = f10; + heap32[(r9+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r7; + heap32[(g0+3)] = r6; + __FUNCTION_TABLE__[(r5)>>2](i7); + r5 = heap32[(r1)]; + r5 = r5 >> 2; + r5 = heap32[(r5+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r5)>>2](i7); + f10 = -f6; + f11 = -f1; + f12 = -f8; + r7 = r_g0 >> 2; + f10 = f10-f7; + f13 = heapFloat[(r4)]; + f11 = f11-f5; + f14 = heapFloat[(r4+1)]; + r7 = heap32[(r7)]; + f15 = heapFloat[(r4+4)]; + f16 = heapFloat[(r4+5)]; + f17 = f13*f10; + f18 = f14*f11; + f12 = f12-f9; + f19 = heapFloat[(r4+2)]; + r7 = r7 >> 2; + f20 = heapFloat[(r4+8)]; + f21 = heapFloat[(r4+9)]; + f22 = heapFloat[(r4+6)]; + f23 = f15*f10; + f24 = f16*f11; + f17 = f17+f18; + f18 = f19*f12; + f17 = f17+f18; + f18 = heapFloat[(r4+10)]; + r7 = heap32[(r7+2)]; + f10 = f20*f10; + f11 = f21*f11; + f23 = f23+f24; + f24 = f22*f12; + f7 = f6-f7; + f5 = f1-f5; + r8 = sp + -192; + f23 = f23+f24; + f10 = f10+f11; + f11 = f18*f12; + f12 = f2+f17; + f9 = f8-f9; + f10 = f10+f11; + f11 = f13*f7; + f13 = f14*f5; + r9 = r8 >> 2; + f14 = f3+f23; + heapFloat[(fp+-48)] = f12; + f12 = f15*f7; + f15 = f16*f5; + f11 = f11+f13; + f13 = f19*f9; + f10 = f4+f10; + heapFloat[(r9+1)] = f14; + f11 = f11+f13; + heapFloat[(r9+2)] = f10; + f7 = f20*f7; + f5 = f21*f5; + f10 = f12+f15; + f12 = f22*f9; + r10 = sp + -176; + f10 = f10+f12; + f5 = f7+f5; + f7 = f18*f9; + f9 = f2+f11; + heap32[(r9+3)] = 0; + f5 = f5+f7; + r9 = r10 >> 2; + f7 = f3+f10; + heapFloat[(fp+-44)] = f9; + f5 = f4+f5; + heapFloat[(r9+1)] = f7; + heapFloat[(r9+2)] = f5; + heap32[(r9+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r6; + r5 = sp + -992; + __FUNCTION_TABLE__[(r7)>>2](i7); + r7 = r5 >> 2; + heap32[(fp+-248)] = 0; + heap32[(r7+1)] = 0; + r2 = (r5 + r2)|0; + heap32[(r7+2)] = 0; + r2 = r2 >> 2; + heap32[(r7+3)] = 0; + r5 = sp + -1008; + heap32[(r2)] = 1065353216; + r2 = r5 >> 2; + heap32[(fp+-252)] = 0; + heap32[(r2+1)] = 0; + r3 = (r5 + r3)|0; + heap32[(r2+2)] = 0; + r3 = r3 >> 2; + heap32[(r2+3)] = 0; + heap32[(r3)] = 1065353216; + r3 = heap32[(r1)]; + r3 = r3 >> 2; + r3 = heap32[(r3+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r3)>>2](i7); + r5 = r_g0 >> 2; + r5 = heap32[(r5)]; + f5 = heapFloat[(r4)]; + f7 = heapFloat[(fp+-252)]; + f9 = heapFloat[(r4+1)]; + f10 = heapFloat[(r2+1)]; + f11 = heapFloat[(r4+4)]; + f12 = heapFloat[(r4+5)]; + r5 = r5 >> 2; + f13 = heapFloat[(r4+2)]; + f14 = heapFloat[(r2+2)]; + f15 = f5*f7; + f16 = f9*f10; + f17 = heapFloat[(r4+8)]; + f18 = heapFloat[(r4+9)]; + f19 = heapFloat[(r4+10)]; + f20 = heapFloat[(r4+6)]; + r2 = heap32[(r5+15)]; + f21 = f11*f7; + f22 = f12*f10; + f15 = f15+f16; + f16 = f13*f14; + r5 = sp + -160; + f23 = f17*f7; + f24 = f18*f10; + f21 = f21+f22; + f22 = f20*f14; + f15 = f15+f16; + r8 = r5 >> 2; + f16 = f23+f24; + f23 = f19*f14; + f21 = f21+f22; + heapFloat[(fp+-40)] = f15; + f15 = f16+f23; + heapFloat[(r8+1)] = f21; + heapFloat[(r8+2)] = f15; + heap32[(r8+3)] = 0; + f15 = heapFloat[(fp+-248)]; + f16 = heapFloat[(r7+1)]; + f21 = heapFloat[(r7+2)]; + f22 = f5*f15; + f23 = f9*f16; + f24 = f11*f15; + f25 = f12*f16; + f22 = f22+f23; + f23 = f13*f21; + r7 = sp + -144; + f26 = f17*f15; + f27 = f18*f16; + f24 = f24+f25; + f25 = f20*f21; + f22 = f22+f23; + f5 = f5*f6; + f9 = f9*f1; + r8 = r7 >> 2; + f23 = f26+f27; + f26 = f19*f21; + f24 = f24+f25; + heapFloat[(fp+-36)] = f22; + f11 = f11*f6; + f12 = f12*f1; + f5 = f5+f9; + f9 = f13*f8; + f13 = f23+f26; + heapFloat[(r8+1)] = f24; + f5 = f5+f9; + heapFloat[(r8+2)] = f13; + f9 = f17*f6; + f13 = f18*f1; + f11 = f11+f12; + f12 = f20*f8; + r9 = sp + -128; + f11 = f11+f12; + f9 = f9+f13; + f12 = f19*f8; + f5 = f2-f5; + heap32[(r8+3)] = 0; + f9 = f9+f12; + r8 = r9 >> 2; + f11 = f3-f11; + heapFloat[(fp+-32)] = f5; + f5 = f4-f9; + heapFloat[(r8+1)] = f11; + heapFloat[(r8+2)] = f5; + heap32[(r8+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r7; + heap32[(g0+3)] = r5; + heapFloat[(g0+4)] = f0; + heapFloat[(g0+5)] = f0; + heap32[(g0+6)] = 0; + heap32[(g0+7)] = 1086918619; + heap32[(g0+8)] = r6; + heap32[(g0+9)] = 0; + heap32[(g0+10)] = 1092616192; + __FUNCTION_TABLE__[(r2)>>2](i7); + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r1 = r_g0 >> 2; + f5 = heapFloat[(r4)]; + f9 = heapFloat[(r4+1)]; + r1 = heap32[(r1)]; + f11 = heapFloat[(r4+4)]; + f12 = heapFloat[(r4+5)]; + f13 = heapFloat[(r4+2)]; + r1 = r1 >> 2; + f17 = f5*f7; + f18 = f9*f10; + f19 = heapFloat[(r4+8)]; + f20 = heapFloat[(r4+9)]; + f22 = heapFloat[(r4+10)]; + f23 = heapFloat[(r4+6)]; + r1 = heap32[(r1+15)]; + f24 = f11*f7; + f25 = f12*f10; + f17 = f17+f18; + f18 = f13*f14; + r2 = sp + -112; + f7 = f19*f7; + f10 = f20*f10; + f24 = f24+f25; + f25 = f23*f14; + f17 = f17+f18; + r3 = r2 >> 2; + f7 = f7+f10; + f10 = f22*f14; + f14 = f24+f25; + heapFloat[(fp+-28)] = f17; + f17 = f5*f15; + f18 = f9*f16; + f7 = f7+f10; + heapFloat[(r3+1)] = f14; + heapFloat[(r3+2)] = f7; + f7 = f11*f15; + f10 = f12*f16; + f14 = f17+f18; + f17 = f13*f21; + r4 = sp + -96; + f15 = f19*f15; + f16 = f20*f16; + f7 = f7+f10; + f10 = f23*f21; + f14 = f14+f17; + heap32[(r3+3)] = 0; + f5 = f5*f6; + f9 = f9*f1; + r3 = r4 >> 2; + f15 = f15+f16; + f16 = f22*f21; + f7 = f7+f10; + heapFloat[(fp+-24)] = f14; + f10 = f11*f6; + f11 = f12*f1; + f5 = f5+f9; + f9 = f13*f8; + f12 = f15+f16; + heapFloat[(r3+1)] = f7; + f5 = f5+f9; + heapFloat[(r3+2)] = f12; + f6 = f19*f6; + f1 = f20*f1; + f7 = f10+f11; + f9 = f23*f8; + r5 = sp + -80; + f7 = f7+f9; + f1 = f6+f1; + f6 = f22*f8; + f2 = f2+f5; + heap32[(r3+3)] = 0; + f1 = f1+f6; + r3 = r5 >> 2; + f3 = f3+f7; + heapFloat[(fp+-20)] = f2; + f1 = f4+f1; + heapFloat[(r3+1)] = f3; + heapFloat[(r3+2)] = f1; + heap32[(r3+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r4; +} +else{ +__label__ = 32; +break _1; +} +} + heap32[(g0+3)] = r2; + heapFloat[(g0+4)] = f0; + heapFloat[(g0+5)] = f0; + heap32[(g0+6)] = 0; + heap32[(g0+7)] = 1086918619; + heap32[(g0+8)] = r6; + heap32[(g0+9)] = 0; + heap32[(g0+10)] = 1092616192; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} +} +else{ + if(r3 >8) //_LBB222_4 +{ + if(r3 ==9) //_LBB222_16 +{ + r2 = heap32[(r5+23)]; + r3 = (r2 + -1)|0; + if(r3 <0) //_LBB222_42 +{ +__label__ = 40; +break _1; +} +else{ + r3 = 1; + r2 = (r3 - r2)|0; +_32: while(true){ + r3 = r2; + r2 = heap32[(r5+25)]; + r7 = r3 << 4; + r8 = heap32[(r1)]; + r2 = (r2 - r7)|0; + r2 = r2 >> 2; + r7 = r8 >> 2; + r7 = heap32[(r7+4)]; + f0 = heapFloat[(r2)]; + f1 = heapFloat[(r2+1)]; + f2 = heapFloat[(r2+2)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r7)>>2](i7); + r7 = r4 >> 2; + r8 = r_g0 >> 2; + r8 = heap32[(r8)]; + f3 = heapFloat[(r7+1)]; + f4 = 0; + f5 = heapFloat[(r7)]; + f6 = heapFloat[(r7+2)]; + r8 = r8 >> 2; + f7 = f3*f4; + f8 = f5*f4; + f9 = heapFloat[(r7+8)]; + f10 = heapFloat[(r7+9)]; + f11 = heapFloat[(r7+10)]; + f12 = heapFloat[(r7+4)]; + f13 = heapFloat[(r7+5)]; + f14 = heapFloat[(r7+6)]; + r8 = heap32[(r8+4)]; + f15 = f5+f7; + f16 = f6*f4; + f17 = heapFloat[(r7+14)]; + f18 = heapFloat[(r7+13)]; + f19 = heapFloat[(r7+12)]; + r7 = sp + -608; + f20 = f8+f3; + f15 = f15+f16; + f7 = f8+f7; + r9 = r7 >> 2; + f8 = f20+f16; + heapFloat[(fp+-152)] = f15; + f15 = f13*f4; + f7 = f7+f6; + heapFloat[(r9+1)] = f8; + f8 = f12*f4; + heapFloat[(r9+2)] = f7; + f7 = f12+f15; + f16 = f14*f4; + f20 = f8+f13; + f7 = f7+f16; + heap32[(r9+3)] = 0; + f8 = f8+f15; + f15 = f20+f16; + heapFloat[(r9+4)] = f7; + f7 = f10*f4; + f8 = f8+f14; + heapFloat[(r9+5)] = f15; + f15 = f9*f4; + heapFloat[(r9+6)] = f8; + f8 = f9+f7; + f4 = f11*f4; + f16 = f15+f10; + f8 = f8+f4; + heap32[(r9+7)] = 0; + f7 = f15+f7; + f5 = f5*f0; + f3 = f3*f1; + f4 = f16+f4; + heapFloat[(r9+8)] = f8; + f8 = f12*f0; + f12 = f13*f1; + f3 = f5+f3; + f5 = f6*f2; + f6 = f7+f11; + heapFloat[(r9+9)] = f4; + f3 = f3+f5; + heapFloat[(r9+10)] = f6; + f0 = f9*f0; + f1 = f10*f1; + f4 = f8+f12; + f5 = f14*f2; + f4 = f4+f5; + f0 = f0+f1; + f1 = f11*f2; + f2 = f3+f19; + heap32[(r9+11)] = 0; + f0 = f0+f1; + f1 = f4+f18; + heapFloat[(r9+12)] = f2; + f0 = f0+f17; + heapFloat[(r9+13)] = f1; + heapFloat[(r9+14)] = f0; + heap32[(r9+15)] = 0; + r9 = heap32[(r5+30)]; + r10 = r3 << 2; + r9 = (r9 - r10)|0; + r9 = r9 >> 2; + f0 = heapFloat[(r9)]; + heap32[(g0)] = r_g0; + heapFloat[(g0+1)] = f0; + heap32[(g0+2)] = r7; + heap32[(g0+3)] = r6; + r2 = (r3 + 1)|0; + __FUNCTION_TABLE__[(r8)>>2](i7); + if(r3 ==0) //_LBB222_42 +{ +__label__ = 40; +break _1; +} +else{ +continue _32; +} +} +} +} +else{ + if(r3 ==10) //_LBB222_19 +{ + r3 = heap32[(r5+13)]; + r5 = (r3 + 2)|0; + r5 = (r5 % 3)|0; + r7 = r3 << 2; + r2 = (r2 + 28)|0; + r5 = r5 << 2; + r8 = (r2 + r7)|0; + r2 = (r2 + r5)|0; + r8 = r8 >> 2; + r2 = r2 >> 2; + f0 = heapFloat[(r8)]; + f1 = heapFloat[(r2)]; + r2 = sp + -720; + r8 = r2 >> 2; + heap32[(fp+-180)] = 0; + heap32[(r8+1)] = 0; + r9 = (r2 + r7)|0; + heap32[(r8+2)] = 0; + r9 = r9 >> 2; + f2 = -f0; + heap32[(r8+3)] = 0; + r10 = sp + -736; + heapFloat[(r9)] = f2; + heap32[(fp+-184)] = 0; + r9 = r10 >> 2; + heap32[(r9+1)] = 0; + r7 = (r10 + r7)|0; + heap32[(r9+2)] = 0; + r7 = r7 >> 2; + heap32[(r9+3)] = 0; + heapFloat[(r7)] = f0; + r4 = r4 >> 2; + f0 = heapFloat[(r4)]; + r7 = sp + -800; + heapFloat[(fp+-200)] = f0; + r11 = r7 >> 2; + f2 = heapFloat[(r4+1)]; + heapFloat[(r11+1)] = f2; + f3 = heapFloat[(r4+2)]; + heapFloat[(r11+2)] = f3; + heap32[(r11+3)] = heap32[(r4+3)]; + f4 = heapFloat[(r4+4)]; + heapFloat[(r11+4)] = f4; + f5 = heapFloat[(r4+5)]; + heapFloat[(r11+5)] = f5; + f6 = heapFloat[(r4+6)]; + heapFloat[(r11+6)] = f6; + heap32[(r11+7)] = heap32[(r4+7)]; + f7 = heapFloat[(r4+8)]; + heapFloat[(r11+8)] = f7; + f8 = heapFloat[(r4+9)]; + heapFloat[(r11+9)] = f8; + f9 = heapFloat[(r4+10)]; + heapFloat[(r11+10)] = f9; + heap32[(r11+11)] = heap32[(r4+11)]; + f10 = heapFloat[(fp+-180)]; + f11 = heapFloat[(r8+1)]; + f12 = heapFloat[(r8+2)]; + f0 = f0*f10; + f2 = f2*f11; + f4 = f4*f10; + f5 = f5*f11; + f0 = f0+f2; + f2 = f3*f12; + f3 = f7*f10; + f7 = f8*f11; + f4 = f4+f5; + f5 = f6*f12; + f0 = f0+f2; + f2 = heapFloat[(r4+12)]; + f6 = heapFloat[(r4+13)]; + f8 = heapFloat[(r4+14)]; + f4 = f4+f5; + f3 = f3+f7; + f5 = f9*f12; + f0 = f0+f2; + f2 = f3+f5; + f3 = f4+f6; + heapFloat[(r11+12)] = f0; + f0 = f2+f8; + heapFloat[(r11+13)] = f3; + heapFloat[(r11+14)] = f0; + heap32[(r11+15)] = 0; + r11 = heap32[(r1)]; + r11 = r11 >> 2; + r11 = heap32[(r11+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r11)>>2](i7); + r12 = r_g0 >> 2; + r12 = heap32[(r12)]; + r12 = r12 >> 2; + r12 = heap32[(r12+4)]; + heap32[(g0)] = r_g0; + heapFloat[(g0+1)] = f1; + heap32[(g0+2)] = r7; + heap32[(g0+3)] = r6; + __FUNCTION_TABLE__[(r12)>>2](i7); + f0 = heapFloat[(r4)]; + r7 = sp + -864; + heapFloat[(fp+-216)] = f0; + r11 = r7 >> 2; + f2 = heapFloat[(r4+1)]; + heapFloat[(r11+1)] = f2; + f3 = heapFloat[(r4+2)]; + heapFloat[(r11+2)] = f3; + heap32[(r11+3)] = heap32[(r4+3)]; + f4 = heapFloat[(r4+4)]; + heapFloat[(r11+4)] = f4; + f5 = heapFloat[(r4+5)]; + heapFloat[(r11+5)] = f5; + f6 = heapFloat[(r4+6)]; + heapFloat[(r11+6)] = f6; + heap32[(r11+7)] = heap32[(r4+7)]; + f7 = heapFloat[(r4+8)]; + heapFloat[(r11+8)] = f7; + f8 = heapFloat[(r4+9)]; + heapFloat[(r11+9)] = f8; + f9 = heapFloat[(r4+10)]; + heapFloat[(r11+10)] = f9; + heap32[(r11+11)] = heap32[(r4+11)]; + f10 = heapFloat[(fp+-184)]; + f11 = heapFloat[(r9+1)]; + f12 = heapFloat[(r9+2)]; + f0 = f0*f10; + f2 = f2*f11; + f4 = f4*f10; + f5 = f5*f11; + f0 = f0+f2; + f2 = f3*f12; + f3 = f7*f10; + f7 = f8*f11; + f4 = f4+f5; + f5 = f6*f12; + f0 = f0+f2; + f2 = heapFloat[(r4+12)]; + f6 = heapFloat[(r4+13)]; + f8 = heapFloat[(r4+14)]; + f4 = f4+f5; + f3 = f3+f7; + f5 = f9*f12; + f0 = f0+f2; + f2 = f3+f5; + f3 = f4+f6; + heapFloat[(r11+12)] = f0; + f0 = f2+f8; + heapFloat[(r11+13)] = f3; + heapFloat[(r11+14)] = f0; + heap32[(r11+15)] = 0; + r11 = heap32[(r1)]; + r11 = r11 >> 2; + r11 = heap32[(r11+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r11)>>2](i7); + r12 = r_g0 >> 2; + r12 = heap32[(r12)]; + r12 = r12 >> 2; + r12 = heap32[(r12+4)]; + r3 = (r3 + 1)|0; + heap32[(g0)] = r_g0; + heapFloat[(g0+1)] = f1; + heap32[(g0+2)] = r7; + heap32[(g0+3)] = r6; + r3 = (r3 % 3)|0; + __FUNCTION_TABLE__[(r12)>>2](i7); + r3 = r3 << 2; + r7 = (r2 + r3)|0; + f0 = heapFloat[(r4+12)]; + f2 = heapFloat[(r4+13)]; + f3 = heapFloat[(r4+14)]; + r3 = (r10 + r3)|0; + r7 = r7 >> 2; + heapFloat[(r7)] = f1; + r3 = r3 >> 2; + heapFloat[(r3)] = f1; + r11 = heap32[(r1)]; + r11 = r11 >> 2; + r11 = heap32[(r11+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r11)>>2](i7); + r12 = r_g0 >> 2; + f4 = heapFloat[(fp+-184)]; + f5 = heapFloat[(r4)]; + f6 = heapFloat[(r9+1)]; + f7 = heapFloat[(r4+1)]; + r12 = heap32[(r12)]; + f8 = heapFloat[(r4+4)]; + f9 = heapFloat[(r4+5)]; + f10 = f5*f4; + f11 = f7*f6; + f12 = heapFloat[(r9+2)]; + f13 = heapFloat[(r4+2)]; + r12 = r12 >> 2; + f14 = heapFloat[(r4+8)]; + f15 = heapFloat[(r4+9)]; + f16 = heapFloat[(r4+6)]; + f17 = f8*f4; + f18 = f9*f6; + f10 = f10+f11; + f11 = f13*f12; + f10 = f10+f11; + f11 = heapFloat[(r4+10)]; + r12 = heap32[(r12+2)]; + f4 = f14*f4; + f6 = f15*f6; + f17 = f17+f18; + f18 = f16*f12; + r13 = sp + -544; + f17 = f17+f18; + f4 = f4+f6; + f6 = f11*f12; + f10 = f0+f10; + f4 = f4+f6; + r14 = r13 >> 2; + f6 = f2+f17; + heapFloat[(fp+-136)] = f10; + f4 = f3+f4; + heapFloat[(r14+1)] = f6; + heapFloat[(r14+2)] = f4; + heap32[(r14+3)] = 0; + f4 = heapFloat[(fp+-180)]; + f6 = heapFloat[(r8+1)]; + f10 = heapFloat[(r8+2)]; + f5 = f5*f4; + f7 = f7*f6; + f8 = f8*f4; + f9 = f9*f6; + f5 = f5+f7; + f7 = f13*f10; + f5 = f5+f7; + f4 = f14*f4; + f6 = f15*f6; + f7 = f8+f9; + f8 = f16*f10; + r14 = sp + -528; + f7 = f7+f8; + f4 = f4+f6; + f6 = f11*f10; + f5 = f0+f5; + f4 = f4+f6; + r15 = r14 >> 2; + f6 = f2+f7; + heapFloat[(fp+-132)] = f5; + f4 = f3+f4; + heapFloat[(r15+1)] = f6; + heapFloat[(r15+2)] = f4; + heap32[(r15+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r14; + heap32[(g0+2)] = r13; + heap32[(g0+3)] = r6; + __FUNCTION_TABLE__[(r12)>>2](i7); + f4 = -f1; + heapFloat[(r7)] = f4; + heapFloat[(r3)] = f4; + r11 = heap32[(r1)]; + r11 = r11 >> 2; + r11 = heap32[(r11+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r11)>>2](i7); + r12 = r_g0 >> 2; + f5 = heapFloat[(fp+-184)]; + f6 = heapFloat[(r4)]; + f7 = heapFloat[(r9+1)]; + f8 = heapFloat[(r4+1)]; + r12 = heap32[(r12)]; + f9 = heapFloat[(r4+4)]; + f10 = heapFloat[(r4+5)]; + f11 = f6*f5; + f12 = f8*f7; + f13 = heapFloat[(r9+2)]; + f14 = heapFloat[(r4+2)]; + r12 = r12 >> 2; + f15 = heapFloat[(r4+8)]; + f16 = heapFloat[(r4+9)]; + f17 = heapFloat[(r4+6)]; + f18 = f9*f5; + f19 = f10*f7; + f11 = f11+f12; + f12 = f14*f13; + f11 = f11+f12; + f12 = heapFloat[(r4+10)]; + r12 = heap32[(r12+2)]; + f5 = f15*f5; + f7 = f16*f7; + f18 = f18+f19; + f19 = f17*f13; + r13 = sp + -512; + f18 = f18+f19; + f5 = f5+f7; + f7 = f12*f13; + f11 = f0+f11; + f5 = f5+f7; + r14 = r13 >> 2; + f7 = f2+f18; + heapFloat[(fp+-128)] = f11; + f5 = f3+f5; + heapFloat[(r14+1)] = f7; + heapFloat[(r14+2)] = f5; + heap32[(r14+3)] = 0; + f5 = heapFloat[(fp+-180)]; + f7 = heapFloat[(r8+1)]; + f11 = heapFloat[(r8+2)]; + f6 = f6*f5; + f8 = f8*f7; + f9 = f9*f5; + f10 = f10*f7; + f6 = f6+f8; + f8 = f14*f11; + f6 = f6+f8; + f5 = f15*f5; + f7 = f16*f7; + f8 = f9+f10; + f9 = f17*f11; + r14 = sp + -496; + f8 = f8+f9; + f5 = f5+f7; + f7 = f12*f11; + f6 = f0+f6; + f5 = f5+f7; + r15 = r14 >> 2; + f7 = f2+f8; + heapFloat[(fp+-124)] = f6; + f5 = f3+f5; + heapFloat[(r15+1)] = f7; + heapFloat[(r15+2)] = f5; + heap32[(r15+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r14; + heap32[(g0+2)] = r13; + heap32[(g0+3)] = r6; + __FUNCTION_TABLE__[(r12)>>2](i7); + heap32[(r7)] = 0; + r2 = (r2 + r5)|0; + r5 = (r10 + r5)|0; + heap32[(r3)] = 0; + r2 = r2 >> 2; + heapFloat[(r2)] = f1; + r3 = r5 >> 2; + heapFloat[(r3)] = f1; + r5 = heap32[(r1)]; + r5 = r5 >> 2; + r5 = heap32[(r5+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r5)>>2](i7); + r7 = r_g0 >> 2; + f1 = heapFloat[(fp+-184)]; + f5 = heapFloat[(r4)]; + f6 = heapFloat[(r9+1)]; + f7 = heapFloat[(r4+1)]; + r7 = heap32[(r7)]; + f8 = heapFloat[(r4+4)]; + f9 = heapFloat[(r4+5)]; + f10 = f5*f1; + f11 = f7*f6; + f12 = heapFloat[(r9+2)]; + f13 = heapFloat[(r4+2)]; + r7 = r7 >> 2; + f14 = heapFloat[(r4+8)]; + f15 = heapFloat[(r4+9)]; + f16 = heapFloat[(r4+6)]; + f17 = f8*f1; + f18 = f9*f6; + f10 = f10+f11; + f11 = f13*f12; + f10 = f10+f11; + f11 = heapFloat[(r4+10)]; + r7 = heap32[(r7+2)]; + f1 = f14*f1; + f6 = f15*f6; + f17 = f17+f18; + f18 = f16*f12; + r10 = sp + -480; + f17 = f17+f18; + f1 = f1+f6; + f6 = f11*f12; + f10 = f0+f10; + f1 = f1+f6; + r11 = r10 >> 2; + f6 = f2+f17; + heapFloat[(fp+-120)] = f10; + f1 = f3+f1; + heapFloat[(r11+1)] = f6; + heapFloat[(r11+2)] = f1; + heap32[(r11+3)] = 0; + f1 = heapFloat[(fp+-180)]; + f6 = heapFloat[(r8+1)]; + f10 = heapFloat[(r8+2)]; + f5 = f5*f1; + f7 = f7*f6; + f8 = f8*f1; + f9 = f9*f6; + f5 = f5+f7; + f7 = f13*f10; + f5 = f5+f7; + f1 = f14*f1; + f6 = f15*f6; + f7 = f8+f9; + f8 = f16*f10; + r11 = sp + -464; + f7 = f7+f8; + f1 = f1+f6; + f6 = f11*f10; + f5 = f0+f5; + f1 = f1+f6; + r12 = r11 >> 2; + f6 = f2+f7; + heapFloat[(fp+-116)] = f5; + f1 = f3+f1; + heapFloat[(r12+1)] = f6; + heapFloat[(r12+2)] = f1; + heap32[(r12+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r11; + heap32[(g0+2)] = r10; + heap32[(g0+3)] = r6; + __FUNCTION_TABLE__[(r7)>>2](i7); + heapFloat[(r2)] = f4; + heapFloat[(r3)] = f4; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r1 = r_g0 >> 2; + f1 = heapFloat[(fp+-184)]; + f4 = heapFloat[(r4)]; + f5 = heapFloat[(r9+1)]; + f6 = heapFloat[(r4+1)]; + r1 = heap32[(r1)]; + f7 = heapFloat[(r4+4)]; + f8 = heapFloat[(r4+5)]; + f9 = f4*f1; + f10 = f6*f5; + f11 = heapFloat[(r9+2)]; + f12 = heapFloat[(r4+2)]; + r1 = r1 >> 2; + f13 = heapFloat[(r4+8)]; + f14 = heapFloat[(r4+9)]; + f15 = heapFloat[(r4+6)]; + f16 = f7*f1; + f17 = f8*f5; + f9 = f9+f10; + f10 = f12*f11; + f9 = f9+f10; + f10 = heapFloat[(r4+10)]; + r1 = heap32[(r1+2)]; + f1 = f13*f1; + f5 = f14*f5; + f16 = f16+f17; + f17 = f15*f11; + r2 = sp + -448; + f16 = f16+f17; + f1 = f1+f5; + f5 = f10*f11; + f9 = f0+f9; + f1 = f1+f5; + r3 = r2 >> 2; + f5 = f2+f16; + heapFloat[(fp+-112)] = f9; + f1 = f3+f1; + heapFloat[(r3+1)] = f5; + heapFloat[(r3+2)] = f1; + heap32[(r3+3)] = 0; + f1 = heapFloat[(fp+-180)]; + f5 = heapFloat[(r8+1)]; + f9 = heapFloat[(r8+2)]; + f4 = f4*f1; + f6 = f6*f5; + f7 = f7*f1; + f8 = f8*f5; + f4 = f4+f6; + f6 = f12*f9; + f4 = f4+f6; + f1 = f13*f1; + f5 = f14*f5; + f6 = f7+f8; + f7 = f15*f9; + r3 = sp + -432; + f6 = f6+f7; + f1 = f1+f5; + f5 = f10*f9; + f0 = f0+f4; + f1 = f1+f5; + r4 = r3 >> 2; + f2 = f2+f6; + heapFloat[(fp+-108)] = f0; + f0 = f3+f1; + heapFloat[(r4+1)] = f2; + heapFloat[(r4+2)] = f0; + heap32[(r4+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r3; +__label__ = 30; +break _1; +} +else{ +__label__ = 32; +break _1; +} +} +} +else{ + if(r3 ==0) //_LBB222_14 +{ + r3 = sp + -704; + f0 = heapFloat[(r5+8)]; + f1 = heapFloat[(r5+9)]; + f2 = heapFloat[(r5+7)]; + r7 = r3 >> 2; + heap32[(r7+3)] = heap32[(r5+10)]; + r8 = heap32[(r5)]; + r8 = r8 >> 2; + r8 = heap32[(r8+11)]; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r8)>>2](i7); + f3 = f_g0; + r8 = heap32[(r5)]; + r8 = r8 >> 2; + r8 = heap32[(r8+11)]; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r8)>>2](i7); + f4 = f_g0; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+11)]; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r5)>>2](i7); + f2 = f2+f_g0; + f0 = f0+f4; + heapFloat[(fp+-176)] = f2; + f1 = f1+f3; + heapFloat[(r7+1)] = f0; + heapFloat[(r7+2)] = f1; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r1 = r_g0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + f0 = heapFloat[(r7+2)]; + f1 = heapFloat[(r7+1)]; + f2 = heapFloat[(fp+-176)]; + r1 = heap32[(r1+18)]; + r2 = sp + -624; + f2 = -f2; + r5 = r2 >> 2; + f1 = -f1; + heapFloat[(fp+-156)] = f2; + f0 = -f0; + heapFloat[(r5+1)] = f1; + heapFloat[(r5+2)] = f0; + heap32[(r5+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = r4; + heap32[(g0+4)] = r6; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} +else{ + if(r3 ==8) //_LBB222_15 +{ + r3 = heap32[(r5)]; + r3 = r3 >> 2; + r3 = heap32[(r3+11)]; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r3)>>2](i7); + f0 = f_g0; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r1 = r_g0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+4)]; + heap32[(g0)] = r_g0; + heapFloat[(g0+1)] = f0; + heap32[(g0+2)] = r4; +__label__ = 31; +} +else{ +__label__ = 32; +} +} +} +} +} while(0); +_41: do { +switch(__label__ ){//multiple entries +case 30: + heap32[(g0+2)] = r2; +__label__ = 31; +break _41; +break; +case 32: + r7 = (r3 + -21)|0; + if(uint(r7) > 2; + heap32[(fp+-256)] = 1566444395; + heap32[(r7+1)] = 1566444395; + heap32[(r7+2)] = 1566444395; + r8 = sp + -1040; + heap32[(r7+3)] = 0; + r7 = r8 >> 2; + heap32[(fp+-260)] = -581039253; + heap32[(r7+1)] = -581039253; + heap32[(r7+2)] = -581039253; + heap32[(r7+3)] = 0; + r7 = heap32[(r1)]; + r7 = r7 >> 2; + r7 = heap32[(r7+4)]; + r9 = _ZTV17DebugDrawcallback; + heap32[(g0)] = r0; + r10 = sp + -1136; + r11 = (r9 + 8)|0; + __FUNCTION_TABLE__[(r7)>>2](i7); + r12 = r10 >> 2; + r9 = (r9 + 32)|0; + heap32[(fp+-284)] = r11; + heap32[(r12+1)] = r9; + r13 = r6 >> 2; + heap32[(r12+2)] = r_g0; + heap32[(r12+3)] = heap32[(r13)]; + heap32[(r12+4)] = heap32[(r13+1)]; + heap32[(r12+5)] = heap32[(r13+2)]; + r7 = r4 >> 2; + heap32[(r12+6)] = heap32[(r13+3)]; + heap32[(r12+7)] = heap32[(r7)]; + heap32[(r12+8)] = heap32[(r7+1)]; + heap32[(r12+9)] = heap32[(r7+2)]; + heap32[(r12+10)] = heap32[(r7+3)]; + heap32[(r12+11)] = heap32[(r7+4)]; + heap32[(r12+12)] = heap32[(r7+5)]; + heap32[(r12+13)] = heap32[(r7+6)]; + heap32[(r12+14)] = heap32[(r7+7)]; + heap32[(r12+15)] = heap32[(r7+8)]; + heap32[(r12+16)] = heap32[(r7+9)]; + heap32[(r12+17)] = heap32[(r7+10)]; + heap32[(r12+18)] = heap32[(r7+11)]; + heap32[(r12+19)] = heap32[(r7+12)]; + heap32[(r12+20)] = heap32[(r7+13)]; + heap32[(r12+21)] = heap32[(r7+14)]; + heap32[(r12+22)] = heap32[(r7+15)]; + r7 = heap32[(r5)]; + r7 = r7 >> 2; + r7 = heap32[(r7+15)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r3; + __FUNCTION_TABLE__[(r7)>>2](i7); + r3 = r10 | 4; + r7 = _ZTV31btInternalTriangleIndexCallback; + heap32[(fp+-284)] = r11; + r8 = _ZTV18btTriangleCallback; + r3 = r3 >> 2; + r7 = (r7 + 8)|0; + heap32[(r12+1)] = r9; + r8 = (r8 + 8)|0; + heap32[(r3)] = r7; + heap32[(fp+-284)] = r8; + r3 = heap32[(r5+1)]; +} + if(r3 ==3) //_LBB222_37 +{ + r3 = sp + -1152; + r7 = r3 >> 2; + heap32[(fp+-288)] = 1566444395; + heap32[(r7+1)] = 1566444395; + heap32[(r7+2)] = 1566444395; + r8 = sp + -1168; + heap32[(r7+3)] = 0; + r7 = r8 >> 2; + heap32[(fp+-292)] = -581039253; + heap32[(r7+1)] = -581039253; + heap32[(r7+2)] = -581039253; + heap32[(r7+3)] = 0; + r7 = heap32[(r1)]; + r7 = r7 >> 2; + r7 = heap32[(r7+4)]; + r9 = _ZTV17DebugDrawcallback; + heap32[(g0)] = r0; + r10 = sp + -1264; + r11 = (r9 + 8)|0; + __FUNCTION_TABLE__[(r7)>>2](i7); + r12 = r10 >> 2; + r9 = (r9 + 32)|0; + heap32[(fp+-316)] = r11; + heap32[(r12+1)] = r9; + r13 = r6 >> 2; + heap32[(r12+2)] = r_g0; + heap32[(r12+3)] = heap32[(r13)]; + heap32[(r12+4)] = heap32[(r13+1)]; + heap32[(r12+5)] = heap32[(r13+2)]; + r7 = r4 >> 2; + heap32[(r12+6)] = heap32[(r13+3)]; + heap32[(r12+7)] = heap32[(r7)]; + heap32[(r12+8)] = heap32[(r7+1)]; + heap32[(r12+9)] = heap32[(r7+2)]; + heap32[(r12+10)] = heap32[(r7+3)]; + heap32[(r12+11)] = heap32[(r7+4)]; + heap32[(r12+12)] = heap32[(r7+5)]; + heap32[(r12+13)] = heap32[(r7+6)]; + heap32[(r12+14)] = heap32[(r7+7)]; + heap32[(r12+15)] = heap32[(r7+8)]; + heap32[(r12+16)] = heap32[(r7+9)]; + heap32[(r12+17)] = heap32[(r7+10)]; + heap32[(r12+18)] = heap32[(r7+11)]; + heap32[(r12+19)] = heap32[(r7+12)]; + heap32[(r12+20)] = heap32[(r7+13)]; + heap32[(r12+21)] = heap32[(r7+14)]; + heap32[(r12+22)] = heap32[(r7+15)]; + r7 = heap32[(r5+22)]; + r13 = r7 >> 2; + r13 = heap32[(r13)]; + r13 = r13 >> 2; + r13 = heap32[(r13+2)]; + r14 = (r10 + 4)|0; + heap32[(g0)] = r7; + heap32[(g0+1)] = r14; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r3; + __FUNCTION_TABLE__[(r13)>>2](i7); + r3 = r10 | 4; + r7 = _ZTV31btInternalTriangleIndexCallback; + heap32[(fp+-316)] = r11; + r8 = _ZTV18btTriangleCallback; + r3 = r3 >> 2; + r7 = (r7 + 8)|0; + heap32[(r12+1)] = r9; + r8 = (r8 + 8)|0; + heap32[(r3)] = r7; + heap32[(fp+-316)] = r8; + r3 = heap32[(r5+1)]; +} + if(r3 >6) //_LBB222_42 +{ +__label__ = 40; +} +else{ + r3 = heap32[(r5)]; + r3 = r3 >> 2; + r3 = heap32[(r3+22)]; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r3)>>2](i7); + r3 = r_g0; + if(r3 <1) //_LBB222_42 +{ +__label__ = 40; +} +else{ + r3 = 0; +_52: while(true){ + r7 = heap32[(r5)]; + r7 = r7 >> 2; + r7 = heap32[(r7+23)]; + r8 = sp + -1296; + r9 = sp + -1280; + heap32[(g0)] = r2; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r9; + heap32[(g0+3)] = r8; + __FUNCTION_TABLE__[(r7)>>2](i7); + r7 = r4 >> 2; + r9 = r9 >> 2; + f0 = heapFloat[(fp+-320)]; + f1 = heapFloat[(r7)]; + f2 = heapFloat[(r9+1)]; + f3 = heapFloat[(r7+1)]; + f4 = heapFloat[(r7+4)]; + f5 = heapFloat[(r7+5)]; + f6 = f1*f0; + f7 = f3*f2; + f8 = heapFloat[(r9+2)]; + f9 = heapFloat[(r7+2)]; + f10 = heapFloat[(r7+8)]; + f11 = heapFloat[(r7+9)]; + f12 = heapFloat[(r7+6)]; + f13 = f4*f0; + f14 = f5*f2; + f6 = f6+f7; + f7 = f9*f8; + f15 = heapFloat[(r7+10)]; + f0 = f10*f0; + f2 = f11*f2; + f13 = f13+f14; + f14 = f12*f8; + f6 = f6+f7; + f7 = heapFloat[(r7+12)]; + f16 = heapFloat[(r7+14)]; + f17 = heapFloat[(r7+13)]; + r7 = sp + -1312; + f13 = f13+f14; + f0 = f0+f2; + f2 = f15*f8; + f6 = f6+f7; + f0 = f0+f2; + r9 = r7 >> 2; + f2 = f13+f17; + heapFloat[(fp+-328)] = f6; + f0 = f0+f16; + heapFloat[(r9+1)] = f2; + heapFloat[(r9+2)] = f0; + heap32[(r9+3)] = 0; + r8 = r8 >> 2; + f0 = heapFloat[(fp+-324)]; + f2 = heapFloat[(r8+1)]; + f6 = heapFloat[(r8+2)]; + f1 = f1*f0; + f3 = f3*f2; + f4 = f4*f0; + f5 = f5*f2; + f1 = f1+f3; + f3 = f9*f6; + f1 = f1+f3; + f0 = f10*f0; + f2 = f11*f2; + f3 = f4+f5; + f4 = f12*f6; + r8 = sp + -1328; + f3 = f3+f4; + f0 = f0+f2; + f2 = f15*f6; + f1 = f1+f7; + f0 = f0+f2; + r9 = r8 >> 2; + f2 = f3+f17; + heapFloat[(fp+-332)] = f1; + f0 = f0+f16; + heapFloat[(r9+1)] = f2; + heapFloat[(r9+2)] = f0; + heap32[(r9+3)] = 0; + r9 = heap32[(r1)]; + r9 = r9 >> 2; + r9 = heap32[(r9+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r9)>>2](i7); + r10 = r_g0 >> 2; + r10 = heap32[(r10)]; + r10 = r10 >> 2; + r10 = heap32[(r10+2)]; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r6; + __FUNCTION_TABLE__[(r10)>>2](i7); + r7 = heap32[(r5)]; + r7 = r7 >> 2; + r7 = heap32[(r7+22)]; + r3 = (r3 + 1)|0; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r7)>>2](i7); + r7 = r_g0; + if(r7 >r3) //_LBB222_41 +{ +continue _52; +} +else{ +__label__ = 40; +break _41; +} +} +} +} +break; +} +} while(0); +switch(__label__ ){//multiple entries +case 31: + heap32[(g0+3)] = r6; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +break; +case 40: + return; +break; +} +} + +function _ZNK16btCollisionWorld7rayTestERK9btVector3S2_RNS_17RayResultCallbackE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; +var __label__ = 0; + i7 = sp + -280;var g0 = i7>>2; // save stack + r0 = _ZTV19btSingleRayCallback; + r1 = heap32[(fp+1)]; + r0 = (r0 + 8)|0; + r2 = sp + -256; + r3 = r1 >> 2; + heap32[(fp+-64)] = r0; + r0 = r2 >> 2; + f0 = heapFloat[(r3)]; + heapFloat[(r0+9)] = f0; + f1 = heapFloat[(r3+1)]; + heapFloat[(r0+10)] = f1; + f2 = heapFloat[(r3+2)]; + heapFloat[(r0+11)] = f2; + r4 = heap32[(fp+2)]; + f3 = heapFloat[(r3+3)]; + r3 = r4 >> 2; + heapFloat[(r0+12)] = f3; + f4 = heapFloat[(r3)]; + heapFloat[(r0+13)] = f4; + f5 = heapFloat[(r3+1)]; + heapFloat[(r0+14)] = f5; + f6 = heapFloat[(r3+2)]; + heapFloat[(r0+15)] = f6; + f7 = heapFloat[(r3+3)]; + r3 = heap32[(fp)]; + heapFloat[(r0+16)] = f7; + r5 = heap32[(fp+3)]; + heap32[(r0+53)] = r3; + heap32[(r0+54)] = r5; + heap32[(r0+17)] = 1065353216; + heap32[(r0+18)] = 0; + heap32[(r0+19)] = 0; + heap32[(r0+20)] = 0; + heap32[(r0+21)] = 0; + heap32[(r0+22)] = 1065353216; + heap32[(r0+23)] = 0; + heap32[(r0+24)] = 0; + heap32[(r0+25)] = 0; + heap32[(r0+26)] = 0; + heap32[(r0+27)] = 1065353216; + heap32[(r0+28)] = 0; + heapFloat[(r0+29)] = f0; + heapFloat[(r0+30)] = f1; + heapFloat[(r0+31)] = f2; + heapFloat[(r0+32)] = f3; + heap32[(r0+33)] = 1065353216; + heap32[(r0+34)] = 0; + heap32[(r0+35)] = 0; + heap32[(r0+36)] = 0; + heap32[(r0+37)] = 0; + heap32[(r0+38)] = 1065353216; + heap32[(r0+39)] = 0; + heap32[(r0+40)] = 0; + heap32[(r0+41)] = 0; + heap32[(r0+42)] = 0; + heap32[(r0+43)] = 1065353216; + heap32[(r0+44)] = 0; + heapFloat[(r0+45)] = f4; + f0 = f4-f0; + heapFloat[(r0+46)] = f5; + f1 = f5-f1; + heapFloat[(r0+47)] = f6; + f2 = f6-f2; + f3 = f0*f0; + f4 = f1*f1; + heapFloat[(r0+48)] = f7; + f3 = f3+f4; + f4 = f2*f2; + f3 = f3+f4; + heapFloat[(g0)] = f3; + f3 = 1; + sqrtf(i7); + f4 = f3/f_g0; + f0 = f0*f4; + f1 = f1*f4; + f2 = f2*f4; + f4 = 0; + if(f0 !=f4) //_LBB223_2 +{ + f5 = f3/f0; +} +else{ + f5 = 999999984306749440; +} + heapFloat[(r0+1)] = f5; + if(f1 !=f4) //_LBB223_5 +{ + f6 = f3/f1; +} +else{ + f6 = 999999984306749440; +} + heapFloat[(r0+2)] = f6; + if(f2 !=f4) //_LBB223_8 +{ + f3 = f3/f2; +} +else{ + f3 = 999999984306749440; +} + r5 = f5 < f4; + r6 = f6 < f4; + r5 = r5 & 1; + heapFloat[(r0+3)] = f3; + r7 = f3 < f4; + r6 = r6 & 1; + heap32[(r0+5)] = r5; + r5 = r7 & 1; + heap32[(r0+6)] = r6; + heap32[(r0+7)] = r5; + f3 = heapFloat[(r0+14)]; + f4 = heapFloat[(r0+10)]; + f5 = heapFloat[(r0+13)]; + f6 = heapFloat[(r0+9)]; + f5 = f5-f6; + f3 = f3-f4; + f4 = heapFloat[(r0+15)]; + f6 = heapFloat[(r0+11)]; + f0 = f0*f5; + f1 = f1*f3; + f3 = f4-f6; + f0 = f0+f1; + f1 = f2*f3; + f0 = f0+f1; + r3 = r3 >> 2; + heapFloat[(r0+8)] = f0; + r0 = heap32[(r3+20)]; + r3 = r0 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+6)]; + r5 = sp + -32; + r6 = r5 >> 2; + heap32[(fp+-8)] = 0; + heap32[(r6+1)] = 0; + heap32[(r6+2)] = 0; + r7 = sp + -16; + heap32[(r6+3)] = 0; + r6 = r7 >> 2; + heap32[(fp+-4)] = 0; + heap32[(r6+1)] = 0; + heap32[(r6+2)] = 0; + heap32[(r6+3)] = 0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r2; + heap32[(g0+4)] = r7; + heap32[(g0+5)] = r5; + __FUNCTION_TABLE__[(r3)>>2](i7); + return; +} + +function _ZN16btCollisionWorld18addCollisionObjectEP17btCollisionObjectss(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; +var __label__ = 0; + i7 = sp + -136;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + if(r0 !=0) //_LBB224_2 +{ + r1 = heap32[(fp)]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+3)]; + r4 = r1 >> 2; + r5 = heap32[(r4+2)]; + r6 = 0; +_3: while(true){ + if(r5 >r6) //_LBB224_3 +{ + r7 = heap32[(r4+4)]; + r8 = r6 << 2; + r7 = (r7 + r8)|0; + r7 = r7 >> 2; + r7 = heap32[(r7)]; + if(r7 ==r0) //_LBB224_6 +{ +__label__ = 6; +break _3; +} +else{ + r6 = (r6 + 1)|0; +} +} +else{ +__label__ = 8; +break _3; +} +} +if (__label__ == 6){ +if(!(r5 ==r6)) //_LBB224_8 +{ + r0 = _2E_str988; + r1 = _2E_str887; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 114; + _assert(i7); +} +} + r6 = heap32[(r4+3)]; + if(r6 ==r5) //_LBB224_10 +{ + r7 = 1; + r8 = r5 << 1; + r8 = r5 == 0 ? r7 : r8; +if(!(r6 >=r8)) //_LBB224_9 +{ + if(r8 !=0) //_LBB224_13 +{ + r6 = gNumAlignedAllocs; + r6 = r6 >> 2; + r9 = heap32[(r6)]; + r10 = r8 << 2; + r9 = (r9 + 1)|0; + r10 = r10 | 3; + heap32[(r6)] = r9; + r6 = (r10 + 16)|0; + heap32[(g0)] = r6; + malloc(i7); + r6 = r_g0; + if(r6 !=0) //_LBB224_15 +{ + r9 = 0; + r10 = (r6 + 4)|0; + r9 = (r9 - r10)|0; + r9 = r9 & 15; + r9 = (r6 + r9)|0; + r10 = (r9 + 4)|0; + r9 = r9 >> 2; + heap32[(r9)] = r6; + r6 = r10; +} +} +else{ + r6 = 0; +} +_19: do { + if(r5 <1) //_LBB224_18 +{ + r10 = heap32[(r4+4)]; +} +else{ + r9 = 0; +_22: while(true){ + r10 = heap32[(r4+4)]; + r11 = r9 << 2; + r12 = (r10 + r11)|0; + r12 = r12 >> 2; + r11 = (r6 + r11)|0; + r12 = heap32[(r12)]; + r9 = (r9 + 1)|0; + r11 = r11 >> 2; + heap32[(r11)] = r12; +if(!(r5 !=r9)) //_LBB224_19 +{ +break _19; +} +} +} +} while(0); + if(r10 !=0) //_LBB224_22 +{ + r9 = heapU8[r1+20]; + if(r9 !=0) //_LBB224_24 +{ + r5 = gNumAlignedFree; + r5 = r5 >> 2; + r9 = heap32[(r5)]; + r9 = (r9 + 1)|0; + r10 = r10 >> 2; + heap32[(r5)] = r9; + r5 = heap32[(r10+-1)]; + heap32[(g0)] = r5; + free(i7); + r5 = heap32[(r4+2)]; +} + heap32[(r4+4)] = 0; +} + heap8[r1+20] = r7; + heap32[(r4+4)] = r6; + heap32[(r4+3)] = r8; +} +} + r1 = r5 << 2; + r5 = heap32[(r4+4)]; + r1 = (r5 + r1)|0; + r1 = r1 >> 2; + heap32[(r1)] = r0; + r1 = heap32[(r4+2)]; + r1 = (r1 + 1)|0; + r5 = sp + -64; + r6 = r0 >> 2; + heap32[(r4+2)] = r1; + r1 = r5 >> 2; + heap32[(fp+-16)] = heap32[(r6+1)]; + heap32[(r1+1)] = heap32[(r6+2)]; + heap32[(r1+2)] = heap32[(r6+3)]; + heap32[(r1+3)] = heap32[(r6+4)]; + heap32[(r1+4)] = heap32[(r6+5)]; + heap32[(r1+5)] = heap32[(r6+6)]; + heap32[(r1+6)] = heap32[(r6+7)]; + heap32[(r1+7)] = heap32[(r6+8)]; + heap32[(r1+8)] = heap32[(r6+9)]; + heap32[(r1+9)] = heap32[(r6+10)]; + heap32[(r1+10)] = heap32[(r6+11)]; + heap32[(r1+11)] = heap32[(r6+12)]; + heap32[(r1+12)] = heap32[(r6+13)]; + heap32[(r1+13)] = heap32[(r6+14)]; + heap32[(r1+14)] = heap32[(r6+15)]; + heap32[(r1+15)] = heap32[(r6+16)]; + r1 = heap32[(r6+48)]; + r7 = r1 >> 2; + r7 = heap32[(r7)]; + r7 = r7 >> 2; + r7 = heap32[(r7+2)]; + r8 = sp + -80; + r9 = sp + -96; + heap32[(g0)] = r1; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r9; + __FUNCTION_TABLE__[(r7)>>2](i7); + r1 = heap32[(r4+20)]; + r5 = r1 >> 2; + r7 = heap32[(r6+48)]; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r7 = r7 >> 2; + r5 = heap32[(r5+2)]; + r7 = heap32[(r7+1)]; + r4 = heap32[(r4+6)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r9; + heap32[(g0+3)] = r7; + heap32[(g0+4)] = r0; + heap32[(g0+5)] = r2; + heap32[(g0+6)] = r3; + heap32[(g0+7)] = r4; + heap32[(g0+8)] = 0; + __FUNCTION_TABLE__[(r5)>>2](i7); + heap32[(r6+47)] = r_g0; + return; +} +else{ + r0 = _2E_str786; + r1 = _2E_str887; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 111; + _assert(i7); +} +} + +function _ZN16btCollisionWorld21removeCollisionObjectEP17btCollisionObject(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = r0 >> 2; + r2 = heap32[(r1+47)]; + r3 = heap32[(fp)]; +if(!(r2 ==0)) //_LBB225_2 +{ + r4 = r3 >> 2; + r5 = heap32[(r4+20)]; + r6 = r5 >> 2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+9)]; + heap32[(g0)] = r5; + __FUNCTION_TABLE__[(r6)>>2](i7); + r6 = r_g0 >> 2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+10)]; + r7 = heap32[(r4+6)]; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r7; + __FUNCTION_TABLE__[(r6)>>2](i7); + r5 = heap32[(r4+20)]; + r6 = r5 >> 2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+3)]; + r4 = heap32[(r4+6)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r4; + __FUNCTION_TABLE__[(r6)>>2](i7); + heap32[(r1+47)] = 0; +} + r1 = r3 >> 2; + r2 = heap32[(r1+2)]; + r3 = 0; +_4: while(true){ + if(r2 >r3) //_LBB225_3 +{ + r4 = heap32[(r1+4)]; + r5 = r3 << 2; + r4 = (r4 + r5)|0; + r4 = r4 >> 2; + r4 = heap32[(r4)]; + if(r4 !=r0) //_LBB225_5 +{ + r3 = (r3 + 1)|0; +continue _4; +} +else{ +__label__ = 7; +break _4; +} +} +else{ +__label__ = 6; +break _4; +} +} +if (__label__ == 6){ + r3 = r2; +} +if(!(r2 <=r3)) //_LBB225_10 +{ + r0 = (r2 + -1)|0; + r2 = r3 << 2; + r3 = heap32[(r1+4)]; + r0 = r0 << 2; + r2 = (r3 + r2)|0; + r3 = (r3 + r0)|0; + r2 = r2 >> 2; + r3 = r3 >> 2; + r4 = heap32[(r2)]; + r3 = heap32[(r3)]; + heap32[(r2)] = r3; + r2 = heap32[(r1+4)]; + r0 = (r2 + r0)|0; + r0 = r0 >> 2; + heap32[(r0)] = r4; + r0 = heap32[(r1+2)]; + r0 = (r0 + -1)|0; + heap32[(r1+2)] = r0; +} + return; +} + +function _ZN16btCollisionWorld33performDiscreteCollisionDetectionEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var f0; + var f1; + var f2; +var __label__ = 0; + i7 = sp + -40;var g0 = i7>>2; // save stack + r0 = _2E_str1190; + r1 = heap32[(fp)]; + heap32[(g0)] = r0; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + r0 = r1 >> 2; + r2 = heap32[(r0)]; + r2 = r2 >> 2; + r2 = heap32[(r2+2)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = _2E_str1291; + heap32[(g0)] = r2; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + r2 = heap32[(r0+20)]; + r3 = r2 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+8)]; + r4 = heap32[(r0+6)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r4; + r2 = _ZN15CProfileManager11CurrentNodeE; + __FUNCTION_TABLE__[(r3)>>2](i7); + r2 = r2 >> 2; + r3 = heap32[(r2)]; + r4 = r3 >> 2; + r5 = heap32[(r4+4)]; + r5 = (r5 + -1)|0; + heap32[(r4+4)] = r5; +_1: do { +if(!(r5 !=0)) //_LBB226_6 +{ + r5 = heap32[(r4+1)]; + if(r5 !=0) //_LBB226_3 +{ + r3 = sp + -24; + heap32[(g0)] = r3; + heap32[(g0+1)] = 0; + r5 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r5 = r5 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r3 = r3 >> 2; + r6 = heap32[(fp+-6)]; + r7 = heap32[(r5)]; + r6 = (r6 - r7)|0; + r3 = heap32[(r3+1)]; + r5 = heap32[(r5+1)]; + r3 = (r3 - r5)|0; + r5 = (r6 * 1000000)|0; + r3 = (r3 + r5)|0; + r5 = heap32[(r4+3)]; + r3 = (r3 - r5)|0; + f0 = uint(r3); //fuitos r3, f0 + f1 = 1000; + f2 = heapFloat[(r4+2)]; + f0 = f0/f1; + f0 = f2+f0; + heapFloat[(r4+2)] = f0; + r3 = heap32[(r4+4)]; + if(r3 !=0) //_LBB226_6 +{ +break _1; +} +else{ + r3 = heap32[(r2)]; +} +} + r3 = r3 >> 2; + r3 = heap32[(r3+5)]; + heap32[(r2)] = r3; +} +} while(0); + r3 = heap32[(r0+6)]; + r4 = _2E_str1392; + heap32[(g0)] = r4; + _ZN15CProfileManager13Start_ProfileEPKc(i7); +if(!(r3 ==0)) //_LBB226_8 +{ + r4 = heap32[(r0+20)]; + r5 = r3 >> 2; + r6 = r4 >> 2; + r5 = heap32[(r5)]; + r6 = heap32[(r6)]; + r5 = r5 >> 2; + r6 = r6 >> 2; + r5 = heap32[(r5+8)]; + r0 = heap32[(r0+6)]; + r6 = heap32[(r6+9)]; + heap32[(g0)] = r4; + __FUNCTION_TABLE__[(r6)>>2](i7); + r1 = (r1 + 28)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r_g0; + heap32[(g0+2)] = r1; + heap32[(g0+3)] = r0; + __FUNCTION_TABLE__[(r5)>>2](i7); +} + r0 = heap32[(r2)]; + r1 = r0 >> 2; + r3 = heap32[(r1+4)]; + r3 = (r3 + -1)|0; + heap32[(r1+4)] = r3; +_11: do { + if(r3 ==0) //_LBB226_10 +{ + r3 = heap32[(r1+1)]; + if(r3 !=0) //_LBB226_12 +{ + r0 = sp + -16; + heap32[(g0)] = r0; + heap32[(g0+1)] = 0; + r3 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r0 = r0 >> 2; + r4 = heap32[(fp+-4)]; + r5 = heap32[(r3)]; + r4 = (r4 - r5)|0; + r0 = heap32[(r0+1)]; + r3 = heap32[(r3+1)]; + r0 = (r0 - r3)|0; + r3 = (r4 * 1000000)|0; + r0 = (r0 + r3)|0; + r3 = heap32[(r1+3)]; + r0 = (r0 - r3)|0; + f0 = uint(r0); //fuitos r0, f0 + f1 = 1000; + f2 = heapFloat[(r1+2)]; + f0 = f0/f1; + f0 = f2+f0; + heapFloat[(r1+2)] = f0; + r0 = heap32[(r2)]; + r1 = heap32[(r1+4)]; +if(!(r1 ==0)) //_LBB226_14 +{ +break _11; +} +} + r0 = r0 >> 2; + r0 = heap32[(r0+5)]; + heap32[(r2)] = r0; +} +} while(0); + r1 = r0 >> 2; + r3 = heap32[(r1+4)]; + r3 = (r3 + -1)|0; + heap32[(r1+4)] = r3; +_17: do { +if(!(r3 !=0)) //_LBB226_21 +{ + r3 = heap32[(r1+1)]; + if(r3 !=0) //_LBB226_18 +{ + r0 = sp + -8; + heap32[(g0)] = r0; + heap32[(g0+1)] = 0; + r3 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r0 = r0 >> 2; + r4 = heap32[(fp+-2)]; + r5 = heap32[(r3)]; + r4 = (r4 - r5)|0; + r0 = heap32[(r0+1)]; + r3 = heap32[(r3+1)]; + r0 = (r0 - r3)|0; + r3 = (r4 * 1000000)|0; + r0 = (r0 + r3)|0; + r3 = heap32[(r1+3)]; + r0 = (r0 - r3)|0; + f0 = uint(r0); //fuitos r0, f0 + f1 = 1000; + f2 = heapFloat[(r1+2)]; + f0 = f0/f1; + f0 = f2+f0; + heapFloat[(r1+2)] = f0; + r0 = heap32[(r1+4)]; + if(r0 !=0) //_LBB226_21 +{ +break _17; +} +else{ + r0 = heap32[(r2)]; +} +} + r0 = r0 >> 2; + r0 = heap32[(r0+5)]; + heap32[(r2)] = r0; +} +} while(0); + return; +} + +function _ZN16btCollisionWorld9serializeEP12btSerializer(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+8)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = heap32[(fp)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r0; + _ZN16btCollisionWorld25serializeCollisionObjectsEP12btSerializer(i7); + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+9)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} + +function _ZN21btSingleSweepCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV21btSingleSweepCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN21btSingleSweepCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV21btSingleSweepCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN21btSingleSweepCallback7processEPK17btBroadphaseProxy(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var f0; + var f1; +var __label__ = 0; + i7 = sp + -32;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+46)]; + r3 = r2 >> 2; + f0 = heapFloat[(r3+1)]; + f1 = 0; + if(f0 !=f1) //_LBB230_2 +{ + r4 = heap32[(fp+1)]; + r4 = r4 >> 2; + r4 = heap32[(r4)]; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r5 = r4 >> 2; + r3 = heap32[(r3+2)]; + r6 = heap32[(r5+47)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r6; + __FUNCTION_TABLE__[(r3)>>2](i7); + r2 = r_g0; + if(r2 !=0) //_LBB230_4 +{ + f0 = heapFloat[(r1+47)]; + r2 = heap32[(r1+46)]; + r3 = heap32[(r5+48)]; + r1 = heap32[(r1+48)]; + r5 = (r0 + 36)|0; + r0 = (r0 + 100)|0; + r6 = (r4 + 4)|0; + heap32[(g0)] = r1; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r0; + heap32[(g0+3)] = r4; + heap32[(g0+4)] = r3; + heap32[(g0+5)] = r6; + heap32[(g0+6)] = r2; + heapFloat[(g0+7)] = f0; + _ZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEf(i7); + r0 = 1; + r_g0 = r0; + return; +} +else{ + r0 = 1; +} +} +else{ + r0 = 0; +} + r0 = r0 & 255; + r_g0 = r0; + return; +} + +function _ZN19btSingleRayCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV19btSingleRayCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN19btSingleRayCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV19btSingleRayCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN19btSingleRayCallback7processEPK17btBroadphaseProxy(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var f0; + var f1; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+54)]; + r3 = r2 >> 2; + f0 = heapFloat[(r3+1)]; + f1 = 0; + if(f0 !=f1) //_LBB233_2 +{ + r4 = heap32[(fp+1)]; + r4 = r4 >> 2; + r4 = heap32[(r4)]; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r5 = r4 >> 2; + r3 = heap32[(r3+2)]; + r6 = heap32[(r5+47)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r6; + __FUNCTION_TABLE__[(r3)>>2](i7); + r2 = r_g0; + if(r2 !=0) //_LBB233_4 +{ + r1 = heap32[(r1+54)]; + r2 = heap32[(r5+48)]; + r3 = (r0 + 68)|0; + r0 = (r0 + 132)|0; + r5 = (r4 + 4)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r2; + heap32[(g0+4)] = r5; + heap32[(g0+5)] = r1; + _ZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackE(i7); + r0 = 1; + r_g0 = r0; + return; +} +else{ + r0 = 1; +} +} +else{ + r0 = 0; +} + r0 = r0 & 255; + r_g0 = r0; + return; +} + +function _ZN16btCollisionWorldD2Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV16btCollisionWorld; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+4)]; + r3 = heap32[(r2+2)]; + if(r3 >0) //_LBB234_2 +{ + r3 = 0; +_3: while(true){ + r4 = r3 << 2; + r1 = (r1 + r4)|0; + r1 = r1 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r4 = heap32[(r1+47)]; +if(!(r4 ==0)) //_LBB234_5 +{ + r5 = heap32[(r2+20)]; + r6 = r5 >> 2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+9)]; + heap32[(g0)] = r5; + __FUNCTION_TABLE__[(r6)>>2](i7); + r6 = r_g0 >> 2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+10)]; + r7 = heap32[(r2+6)]; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r7; + __FUNCTION_TABLE__[(r6)>>2](i7); + r5 = heap32[(r2+20)]; + r6 = r5 >> 2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+3)]; + r7 = heap32[(r2+6)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r7; + __FUNCTION_TABLE__[(r6)>>2](i7); + heap32[(r1+47)] = 0; +} + r3 = (r3 + 1)|0; + r1 = heap32[(r2+4)]; + r4 = heap32[(r2+2)]; + if(r4 >r3) //_LBB234_3 +{ +continue _3; +} +else{ +break _3; +} +} +} +if(!(r1 ==0)) //_LBB234_10 +{ + r3 = heapU8[r0+20]; +if(!(r3 ==0)) //_LBB234_9 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+4)] = 0; +} + r1 = 1; + heap8[r0+20] = r1; + heap32[(r2+4)] = 0; + heap32[(r2+2)] = 0; + heap32[(r2+3)] = 0; + return; +} + +function _ZN16btCollisionWorld25serializeCollisionObjectsEP12btSerializer(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var r19; + var r20; + var r21; + var r22; + var r23; + var r24; + var r25; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+2)]; +if(!(r1 <1)) //_LBB235_110 +{ + r1 = heap32[(fp+1)]; + heap32[(fp+-2)] = r1; + r1 = 0; +_3: while(true){ + r2 = heap32[(r0+4)]; + r3 = r1 << 2; + r2 = (r2 + r3)|0; + r2 = r2 >> 2; + r2 = heap32[(r2)]; + r3 = r2 >> 2; + r4 = heap32[(r3+58)]; +if(!(r4 !=1)) //_LBB235_4 +{ + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+6)]; + heap32[(g0)] = r2; + r2 = heap32[(fp+-2)]; + heap32[(g0+1)] = r2; + __FUNCTION_TABLE__[(r3)>>2](i7); +} + r1 = (r1 + 1)|0; + r2 = heap32[(r0+2)]; +if(!(r2 >r1)) //_LBB235_2 +{ +break _3; +} +} +if(!(r2 <1)) //_LBB235_110 +{ + r1 = 0; + r2 = r1; + r3 = r1; + r4 = r1; + r5 = r1; + r6 = r1; + heap32[(fp+-1)] = r1; + r7 = r1; + r8 = r1; + r9 = r1; + r10 = r1; + r11 = r1; + r12 = r1; +_10: while(true){ + r13 = heap32[(r0+4)]; + r14 = r12 << 2; + r13 = (r13 + r14)|0; + r13 = r13 >> 2; + r13 = heap32[(r13)]; + r13 = r13 >> 2; + r13 = heap32[(r13+48)]; + r14 = r13 << 15; + r14 = r14 ^ -1; + r14 = (r13 + r14)|0; + r15 = r14 >> 10; + r14 = r15 ^ r14; + r14 = (r14 * 9)|0; + r15 = r14 >> 6; + r14 = r15 ^ r14; + r15 = r14 << 11; + r15 = r15 ^ -1; + r14 = (r14 + r15)|0; + r15 = r14 >> 16; + r14 = r15 ^ r14; + r15 = (r4 + -1)|0; + r15 = r14 & r15; + r12 = (r12 + 1)|0; +_12: do { + if(uint(r10) <=uint(r15)) //_LBB235_20 +{ +__label__ = 19; +} +else{ + r16 = r15 << 2; + r17 = (r8 + r16)|0; +_14: while(true){ + r17 = r17 >> 2; + r17 = heap32[(r17)]; + if(r17 ==-1) //_LBB235_14 +{ +__label__ = 13; +break _14; +} +else{ + r18 = r17 << 3; + r18 = (r11 + r18)|0; + r18 = r18 >> 2; + r18 = heap32[(r18)]; + if(r13 !=r18) //_LBB235_9 +{ + r17 = r17 << 2; + r17 = (r6 + r17)|0; +} +else{ +__label__ = 12; +break _14; +} +} +} +if (__label__ == 12){ + r17 = r17 << 2; + r17 = (r3 + r17)|0; +if(!(r17 ==0)) //_LBB235_14 +{ +__label__ = 89; +break _12; +} +} + if(uint(r10) <=uint(r15)) //_LBB235_20 +{ +__label__ = 19; +} +else{ + r16 = (r8 + r16)|0; +_22: while(true){ + r16 = r16 >> 2; + r16 = heap32[(r16)]; + if(r16 ==-1) //_LBB235_20 +{ +__label__ = 19; +break _12; +} +else{ + r17 = r16 << 3; + r17 = (r11 + r17)|0; + r17 = r17 >> 2; + r17 = heap32[(r17)]; + if(r13 !=r17) //_LBB235_16 +{ + r16 = r16 << 2; + r16 = (r6 + r16)|0; +} +else{ +break _22; +} +} +} + r14 = r16 << 2; + r14 = (r3 + r14)|0; + r14 = r14 >> 2; + heap32[(r14)] = r13; + r16 = r4; + r17 = r5; +__label__ = 88; +} +} +} while(0); +if (__label__ == 19){ + if(r4 ==r5) //_LBB235_22 +{ + r16 = 1; + r17 = r5 << 1; + r16 = r5 == 0 ? r16 : r17; + if(r4 >=r16) //_LBB235_21 +{ +__label__ = 20; +} +else{ + if(r16 !=0) //_LBB235_25 +{ + r17 = gNumAlignedAllocs; + r17 = r17 >> 2; + r18 = heap32[(r17)]; + r19 = r16 << 2; + r18 = (r18 + 1)|0; + r19 = r19 | 3; + heap32[(r17)] = r18; + r17 = (r19 + 16)|0; + heap32[(g0)] = r17; + malloc(i7); + r17 = r_g0; + if(r17 !=0) //_LBB235_27 +{ + r18 = 0; + r19 = (r17 + 4)|0; + r18 = (r18 - r19)|0; + r18 = r18 & 15; + r18 = (r17 + r18)|0; + r19 = (r18 + 4)|0; + r18 = r18 >> 2; + heap32[(r18)] = r17; + r17 = r19; +} +} +else{ + r17 = 0; +} +_37: do { +if(!(r5 <1)) //_LBB235_31 +{ + r18 = r17; + r19 = r3; + r20 = r5; +_39: while(true){ + r21 = r19 >> 2; + r20 = (r20 + -1)|0; + r19 = (r19 + 4)|0; + r22 = (r18 + 4)|0; + r18 = r18 >> 2; + r21 = heap32[(r21)]; + heap32[(r18)] = r21; + r18 = r22; +if(!(r20 !=0)) //_LBB235_30 +{ +break _37; +} +} +} +} while(0); + if(r3 !=0) //_LBB235_33 +{ + r18 = gNumAlignedFree; + r18 = r18 >> 2; + r19 = heap32[(r18)]; + r19 = (r19 + 1)|0; + r3 = r3 >> 2; + heap32[(r18)] = r19; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); + r3 = r17; +__label__ = 32; +} +else{ + r3 = r17; +__label__ = 32; +} +} +} +else{ +__label__ = 20; +} +if (__label__ == 20){ + r16 = r4; +} + r18 = r5 << 2; + r19 = (r3 + r18)|0; + r17 = (r5 + 1)|0; + r19 = r19 >> 2; + heap32[(r19)] = r13; + if(r1 ==r2) //_LBB235_36 +{ + r19 = 1; + r20 = r2 << 1; + r19 = r2 == 0 ? r19 : r20; +if(!(r1 >=r19)) //_LBB235_35 +{ + if(r19 !=0) //_LBB235_39 +{ + r1 = gNumAlignedAllocs; + r1 = r1 >> 2; + r20 = heap32[(r1)]; + r21 = r19 << 3; + r20 = (r20 + 1)|0; + r21 = r21 | 3; + heap32[(r1)] = r20; + r1 = (r21 + 16)|0; + heap32[(g0)] = r1; + malloc(i7); + r20 = r_g0; + if(r20 !=0) //_LBB235_41 +{ + r1 = 0; + r21 = (r20 + 4)|0; + r1 = (r1 - r21)|0; + r1 = r1 & 15; + r1 = (r20 + r1)|0; + r21 = (r1 + 4)|0; + r1 = r1 >> 2; + heap32[(r1)] = r20; + r20 = r21; +} +} +else{ + r20 = 0; +} +_56: do { +if(!(r2 <1)) //_LBB235_45 +{ + r1 = (r11 + 4)|0; + r21 = (r20 + 4)|0; + r22 = r2; +_58: while(true){ + r23 = r1 >> 2; + r24 = heap32[(r23)]; + r23 = heap32[(r23+-1)]; + r25 = r21 >> 2; + r22 = (r22 + -1)|0; + r1 = (r1 + 8)|0; + r21 = (r21 + 8)|0; + heap32[(r25+-1)] = r23; + heap32[(r25)] = r24; +if(!(r22 !=0)) //_LBB235_44 +{ +break _56; +} +} +} +} while(0); + if(r11 !=0) //_LBB235_47 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r21 = heap32[(r1)]; + r21 = (r21 + 1)|0; + r11 = r11 >> 2; + heap32[(r1)] = r21; + r1 = heap32[(r11+-1)]; + heap32[(g0)] = r1; + free(i7); + r1 = r19; + r11 = r20; +} +else{ + r1 = r19; + r11 = r20; +} +} +} + r19 = r2 << 3; + r19 = (r11 + r19)|0; + r2 = (r2 + 1)|0; + r19 = r19 >> 2; + heap32[(r19)] = r13; + if(r4 > 2; + r9 = heap32[(r4)]; + r15 = r16 << 2; + r9 = (r9 + 1)|0; + r15 = r15 | 3; + heap32[(r4)] = r9; + r4 = (r15 + 16)|0; + heap32[(g0)] = r4; + malloc(i7); + r4 = r_g0; + if(r4 !=0) //_LBB235_60 +{ + r9 = 0; + r15 = (r4 + 4)|0; + r9 = (r9 - r15)|0; + r9 = r9 & 15; + r9 = (r4 + r9)|0; + r15 = (r9 + 4)|0; + r9 = r9 >> 2; + heap32[(r9)] = r4; + r4 = r15; +} +} +else{ + r4 = 0; +} +_78: do { +if(!(r10 <1)) //_LBB235_64 +{ + r9 = r4; + r15 = r8; + r19 = r10; +_80: while(true){ + r20 = r15 >> 2; + r19 = (r19 + -1)|0; + r15 = (r15 + 4)|0; + r21 = (r9 + 4)|0; + r9 = r9 >> 2; + r20 = heap32[(r20)]; + heap32[(r9)] = r20; + r9 = r21; +if(!(r19 !=0)) //_LBB235_63 +{ +break _78; +} +} +} +} while(0); + if(r8 !=0) //_LBB235_66 +{ + r9 = gNumAlignedFree; + r9 = r9 >> 2; + r15 = heap32[(r9)]; + r15 = (r15 + 1)|0; + r8 = r8 >> 2; + heap32[(r9)] = r15; + r8 = heap32[(r8+-1)]; + heap32[(g0)] = r8; + free(i7); + r8 = r4; + r9 = r16; +} +else{ + r8 = r4; + r9 = r16; +} +} + r4 = r10; +_87: while(true){ + r15 = r4 << 2; + r15 = (r8 + r15)|0; + r4 = (r4 + 1)|0; + r15 = r15 >> 2; + heap32[(r15)] = 0; +if(!(r16 !=r4)) //_LBB235_68 +{ +break _69; +} +} +} +} while(0); +_90: do { + if(r7 <=r16) //_LBB235_71 +{ +if(!(r7 >=r16)) //_LBB235_70 +{ + r4 = heap32[(fp+-1)]; + if(r4 > 2; + r15 = heap32[(r4)]; + r19 = r16 << 2; + r15 = (r15 + 1)|0; + r19 = r19 | 3; + heap32[(r4)] = r15; + r4 = (r19 + 16)|0; + heap32[(g0)] = r4; + malloc(i7); + r4 = r_g0; + if(r4 !=0) //_LBB235_78 +{ + r15 = 0; + r19 = (r4 + 4)|0; + r15 = (r15 - r19)|0; + r15 = r15 & 15; + r15 = (r4 + r15)|0; + r19 = (r15 + 4)|0; + r15 = r15 >> 2; + heap32[(r15)] = r4; + r4 = r19; +} +} +else{ + r4 = 0; +} +_100: do { +if(!(r7 <1)) //_LBB235_82 +{ + r15 = r4; + r19 = r6; + r20 = r7; +_102: while(true){ + r21 = r19 >> 2; + r20 = (r20 + -1)|0; + r19 = (r19 + 4)|0; + r22 = (r15 + 4)|0; + r15 = r15 >> 2; + r21 = heap32[(r21)]; + heap32[(r15)] = r21; + r15 = r22; +if(!(r20 !=0)) //_LBB235_81 +{ +break _100; +} +} +} +} while(0); +if(!(r6 ==0)) //_LBB235_84 +{ + r15 = gNumAlignedFree; + r15 = r15 >> 2; + r19 = heap32[(r15)]; + r19 = (r19 + 1)|0; + r6 = r6 >> 2; + heap32[(r15)] = r19; + r6 = heap32[(r6+-1)]; + heap32[(g0)] = r6; + free(i7); +} + if(r7 > 2; + heap32[(r4)] = 0; +if(!(r16 !=r7)) //_LBB235_87 +{ +break _90; +} +} +} +} +} while(0); +_114: do { +if(!(r16 <1)) //_LBB235_94 +{ + r4 = r8; + r7 = r16; +_116: while(true){ + r7 = (r7 + -1)|0; + r15 = (r4 + 4)|0; + r4 = r4 >> 2; + heap32[(r4)] = -1; + r4 = r15; +if(!(r7 !=0)) //_LBB235_90 +{ +break _116; +} +} +if(!(r16 <1)) //_LBB235_94 +{ + r4 = r6; + r7 = r16; +_120: while(true){ + r7 = (r7 + -1)|0; + r15 = (r4 + 4)|0; + r4 = r4 >> 2; + heap32[(r4)] = -1; + r4 = r15; +if(!(r7 !=0)) //_LBB235_93 +{ +break _114; +} +} +} +} +} while(0); +_123: do { + if(r10 >0) //_LBB235_96 +{ + r4 = (r16 + -1)|0; + r7 = 0; +_125: while(true){ + r15 = r7 << 3; + r15 = (r11 + r15)|0; + r15 = r15 >> 2; + r15 = heap32[(r15)]; + r19 = r15 << 15; + r19 = r19 ^ -1; + r15 = (r15 + r19)|0; + r19 = r15 >> 10; + r15 = r19 ^ r15; + r15 = (r15 * 9)|0; + r19 = r15 >> 6; + r15 = r19 ^ r15; + r19 = r15 << 11; + r19 = r19 ^ -1; + r15 = (r15 + r19)|0; + r19 = r15 >> 16; + r15 = r19 ^ r15; + r15 = r15 & r4; + r15 = r15 << 2; + r15 = (r8 + r15)|0; + r15 = r15 >> 2; + r19 = r7 << 2; + r19 = (r6 + r19)|0; + r20 = heap32[(r15)]; + r19 = r19 >> 2; + r21 = (r7 + 1)|0; + heap32[(r19)] = r20; + heap32[(r15)] = r7; + r7 = r21; + if(r10 ==r21) //_LBB235_95 +{ +break _123; +} +} +} +} while(0); + r7 = r16; + r10 = r16; +} + r4 = (r16 + -1)|0; + r15 = r14 & r4; +} + r4 = r15 << 2; + r4 = (r8 + r4)|0; + r4 = r4 >> 2; + r14 = (r6 + r18)|0; + r14 = r14 >> 2; + r15 = heap32[(r4)]; + heap32[(r14)] = r15; + heap32[(r4)] = r5; +__label__ = 88; +} +if (__label__ == 88){ + r4 = r13 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+14)]; + heap32[(g0)] = r13; + r5 = heap32[(fp+-2)]; + heap32[(g0+1)] = r5; + __FUNCTION_TABLE__[(r4)>>2](i7); + r4 = r16; + r5 = r17; +} + r13 = heap32[(r0+2)]; +if(!(r13 >r12)) //_LBB235_7 +{ +break _10; +} +} +if(!(r11 ==0)) //_LBB235_104 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + r2 = r11 >> 2; + heap32[(r0)] = r1; + r0 = heap32[(r2+-1)]; + heap32[(g0)] = r0; + free(i7); +} +if(!(r3 ==0)) //_LBB235_106 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + r2 = r3 >> 2; + heap32[(r0)] = r1; + r0 = heap32[(r2+-1)]; + heap32[(g0)] = r0; + free(i7); +} +if(!(r6 ==0)) //_LBB235_108 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + r2 = r6 >> 2; + heap32[(r0)] = r1; + r0 = heap32[(r2+-1)]; + heap32[(g0)] = r0; + free(i7); +} +if(!(r8 ==0)) //_LBB235_110 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + r2 = r8 >> 2; + heap32[(r0)] = r1; + r0 = heap32[(r2+-1)]; + heap32[(g0)] = r0; + free(i7); +} +} +} + return; +} + +function _ZNK11btMatrix3x311getRotationER12btQuaternion(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + f0 = heapFloat[(r1)]; + f1 = heapFloat[(r1+5)]; + f2 = heapFloat[(r1+10)]; + f3 = f0+f1; + f3 = f3+f2; + r2 = heap32[(fp+1)]; + f4 = 0; + if(f3 <=f4) //_LBB236_2 +{ + if(f0 >=f1) //_LBB236_4 +{ + r1 = 2; + r3 = 0; + r1 = f0 < f2 ? r1 : r3; +} +else{ + r1 = 2; + r3 = 1; + r1 = f1 < f2 ? r1 : r3; +} + r3 = (r1 + 1)|0; + r3 = (r3 % 3)|0; + r4 = (r1 + 2)|0; + r4 = (r4 % 3)|0; + r5 = r1 << 4; + r6 = r3 << 4; + r7 = r4 << 4; + r5 = (r0 + r5)|0; + r1 = r1 << 2; + r6 = (r0 + r6)|0; + r3 = r3 << 2; + r0 = (r0 + r7)|0; + r4 = r4 << 2; + r7 = (r5 + r1)|0; + r8 = (r6 + r3)|0; + r7 = r7 >> 2; + r8 = r8 >> 2; + r9 = (r0 + r4)|0; + r9 = r9 >> 2; + f0 = heapFloat[(r7)]; + f1 = heapFloat[(r8)]; + f2 = heapFloat[(r9)]; + f0 = f0-f1; + f0 = f0-f2; + f1 = 1; + f0 = f0+f1; + r7 = sp + -16; + heapFloat[(g0)] = f0; + r8 = (r7 + r1)|0; + f0 = 0.5; + sqrtf(i7); + r9 = (r0 + r3)|0; + r10 = (r6 + r4)|0; + r8 = r8 >> 2; + f2 = f_g0*f0; + r9 = r9 >> 2; + heapFloat[(r8)] = f2; + r8 = r10 >> 2; + f2 = heapFloat[(r9)]; + f3 = heapFloat[(r8)]; + f2 = f2-f3; + f0 = f0/f_g0; + r6 = (r6 + r1)|0; + r8 = (r5 + r3)|0; + r9 = r7 >> 2; + f1 = f2*f0; + r6 = r6 >> 2; + heapFloat[(r9+3)] = f1; + r8 = r8 >> 2; + f1 = heapFloat[(r6)]; + f2 = heapFloat[(r8)]; + r3 = (r7 + r3)|0; + f1 = f1+f2; + r0 = (r0 + r1)|0; + r1 = (r5 + r4)|0; + r3 = r3 >> 2; + f1 = f1*f0; + r0 = r0 >> 2; + heapFloat[(r3)] = f1; + r1 = r1 >> 2; + f1 = heapFloat[(r0)]; + f2 = heapFloat[(r1)]; + r0 = (r7 + r4)|0; + f1 = f1+f2; + r0 = r0 >> 2; + f0 = f1*f0; + heapFloat[(r0)] = f0; + f1 = heapFloat[(fp+-4)]; + f3 = heapFloat[(r9+1)]; + f0 = heapFloat[(r9+2)]; + f2 = heapFloat[(r9+3)]; +} +else{ + f0 = 1; + f0 = f3+f0; + heapFloat[(g0)] = f0; + r0 = sp + -16; + f0 = 0.5; + sqrtf(i7); + f2 = f_g0*f0; + r0 = r0 >> 2; + heapFloat[(r0+3)] = f2; + f3 = heapFloat[(r1+9)]; + f4 = heapFloat[(r1+6)]; + f3 = f3-f4; + f0 = f0/f_g0; + f1 = f3*f0; + heapFloat[(fp+-4)] = f1; + f3 = heapFloat[(r1+2)]; + f4 = heapFloat[(r1+8)]; + f3 = f3-f4; + f3 = f3*f0; + heapFloat[(r0+1)] = f3; + f4 = heapFloat[(r1+4)]; + f5 = heapFloat[(r1+1)]; + f4 = f4-f5; + f0 = f4*f0; + heapFloat[(r0+2)] = f0; +} + r0 = r2 >> 2; + heapFloat[(r0)] = f1; + heapFloat[(r0+1)] = f3; + heapFloat[(r0+2)] = f0; + heapFloat[(r0+3)] = f2; + return; +} + +function _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD0E_0v(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV18btTriangleCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD1E_0v(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV18btTriangleCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV18btTriangleCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV18btTriangleCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD0E_0v(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV18btTriangleCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD1E_0v(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV18btTriangleCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV18btTriangleCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV18btTriangleCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; +var __label__ = 0; + i7 = sp + -80;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + f0 = heapFloat[(r0+4)]; + f1 = heapFloat[(r0+9)]; + f2 = heapFloat[(r0+6)]; + f3 = heapFloat[(r0+8)]; + f4 = heapFloat[(r0+5)]; + f5 = heapFloat[(r0+10)]; + f6 = f4*f5; + f7 = f2*f1; + f8 = f2*f3; + f9 = f0*f5; + f10 = heapFloat[(r0)]; + f11 = heapFloat[(r0+1)]; + f6 = f6-f7; + f7 = f8-f9; + f8 = f0*f1; + f9 = f4*f3; + f12 = heapFloat[(r0+2)]; + f8 = f8-f9; + f9 = f10*f6; + f13 = f11*f7; + f9 = f9+f13; + f13 = f12*f8; + r0 = heap32[(fp+1)]; + f14 = 1; + f9 = f9+f13; + r0 = r0 >> 2; + f9 = f14/f9; + f13 = f12*f1; + f15 = f11*f5; + f5 = f10*f5; + f16 = f12*f3; + f13 = f13-f15; + f5 = f5-f16; + f15 = f11*f2; + f16 = f12*f4; + f12 = f12*f0; + f2 = f10*f2; + f3 = f11*f3; + f1 = f10*f1; + f6 = f6*f9; + f17 = heapFloat[(r0)]; + f7 = f7*f9; + f18 = heapFloat[(r0+1)]; + f15 = f15-f16; + f2 = f12-f2; + f12 = f13*f9; + f5 = f5*f9; + f1 = f3-f1; + f3 = f10*f4; + f0 = f11*f0; + f4 = f6*f17; + f10 = f7*f18; + f8 = f8*f9; + f11 = heapFloat[(r0+2)]; + f13 = heapFloat[(r0+8)]; + f15 = f15*f9; + f16 = heapFloat[(r0+4)]; + f19 = heapFloat[(r0+9)]; + f2 = f2*f9; + f20 = heapFloat[(r0+5)]; + f0 = f3-f0; + f1 = f1*f9; + f3 = heapFloat[(r0+10)]; + f21 = heapFloat[(r0+6)]; + f22 = f12*f17; + f23 = f5*f18; + f4 = f4+f10; + f10 = f8*f11; + f0 = f0*f9; + r0 = sp + -48; + f9 = f15*f17; + f17 = f2*f18; + f18 = f22+f23; + f22 = f1*f11; + f4 = f4+f10; + r1 = r0 >> 2; + f9 = f9+f17; + f10 = f0*f11; + f11 = f18+f22; + heapFloat[(fp+-12)] = f4; + f4 = f6*f16; + f17 = f7*f20; + f9 = f9+f10; + heapFloat[(r1+1)] = f11; + heapFloat[(r1+2)] = f9; + f9 = f12*f16; + f10 = f5*f20; + f4 = f4+f17; + f11 = f8*f21; + f16 = f15*f16; + f17 = f2*f20; + f9 = f9+f10; + f10 = f1*f21; + f4 = f4+f11; + heap32[(r1+3)] = 0; + f11 = f16+f17; + f16 = f0*f21; + f9 = f9+f10; + heapFloat[(r1+4)] = f4; + f4 = f6*f13; + f6 = f7*f19; + f7 = f11+f16; + heapFloat[(r1+5)] = f9; + heapFloat[(r1+6)] = f7; + f7 = f12*f13; + f5 = f5*f19; + f4 = f4+f6; + f6 = f8*f3; + f8 = f15*f13; + f2 = f2*f19; + f5 = f7+f5; + f1 = f1*f3; + f4 = f4+f6; + heap32[(r1+7)] = 0; + f2 = f8+f2; + f0 = f0*f3; + f1 = f5+f1; + heapFloat[(r1+8)] = f4; + f0 = f2+f0; + heapFloat[(r1+9)] = f1; + heapFloat[(r1+10)] = f0; + heap32[(r1+11)] = 0; + r1 = sp + -64; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + _ZNK11btMatrix3x311getRotationER12btQuaternion(i7); + r0 = r1 >> 2; + f0 = heapFloat[(fp+-16)]; + f1 = heapFloat[(r0+1)]; + f2 = heapFloat[(r0+2)]; + f3 = f0*f0; + f4 = f1*f1; + f5 = heapFloat[(r0+3)]; + f3 = f3+f4; + f4 = f2*f2; + f3 = f3+f4; + f4 = f5*f5; + f3 = f3+f4; + heapFloat[(g0)] = f3; + sqrtf(i7); + f3 = f_g0; + f4 = 0; + if(f3 !=f4) //_LBB245_2 +{ + r1 = heap32[(fp+2)]; + r2 = heap32[(fp+3)]; + f3 = f14/f3; + f0 = f0*f3; + f1 = f1*f3; + heapFloat[(fp+-16)] = f0; + f2 = f2*f3; + heapFloat[(r0+1)] = f1; + f4 = -1; + f3 = f5*f3; + heapFloat[(r0+2)] = f2; + f4 = f3 < f4 ? f4 : f3; + heapFloat[(r0+3)] = f3; + f3 = f4 > f14 ? f14 : f4; + heapFloat[(g0)] = f3; + acosf(i7); + r0 = r2 >> 2; + f3 = f_g0+f_g0; + r1 = r1 >> 2; + heapFloat[(r0)] = f3; + heapFloat[(r1)] = f0; + f0 = f0*f0; + f3 = f1*f1; + heapFloat[(r1+1)] = f1; + f0 = f0+f3; + f1 = f2*f2; + f0 = f0+f1; + heapFloat[(r1+2)] = f2; + heap32[(r1+3)] = 0; + f1 = 1.4210854715202004e-014; + if(f0 >=f1) //_LBB245_4 +{ + heapFloat[(g0)] = f0; + sqrtf(i7); + f0 = f14/f_g0; + f1 = heapFloat[(r1)]; + f1 = f1*f0; + heapFloat[(r1)] = f1; + f1 = heapFloat[(r1+1)]; + f1 = f1*f0; + heapFloat[(r1+1)] = f1; + f1 = heapFloat[(r1+2)]; + f0 = f1*f0; + heapFloat[(r1+2)] = f0; + return; +} +else{ + heap32[(r1)] = 1065353216; + heap32[(r1+1)] = 0; + heap32[(r1+2)] = 0; + heap32[(r1+3)] = 0; + return; +} +} +else{ + r0 = _2E_str584; + r1 = _2E_str685; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 188; + _assert(i7); +} +} + +function _ZNK16btCollisionWorld15convexSweepTestEPK13btConvexShapeRK11btTransformS5_RNS_20ConvexResultCallbackEf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; +var __label__ = 0; + i7 = sp + -528;var g0 = i7>>2; // save stack + r0 = _2E_str1089; + r1 = heap32[(fp+2)]; + heap32[(g0)] = r0; + r0 = sp + -112; + r1 = r1 >> 2; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + r2 = r0 >> 2; + heap32[(fp+-28)] = heap32[(r1)]; + heap32[(r2+1)] = heap32[(r1+1)]; + heap32[(r2+2)] = heap32[(r1+2)]; + heap32[(r2+3)] = heap32[(r1+3)]; + heap32[(r2+4)] = heap32[(r1+4)]; + heap32[(r2+5)] = heap32[(r1+5)]; + heap32[(r2+6)] = heap32[(r1+6)]; + heap32[(r2+7)] = heap32[(r1+7)]; + heap32[(r2+8)] = heap32[(r1+8)]; + heap32[(r2+9)] = heap32[(r1+9)]; + heap32[(r2+10)] = heap32[(r1+10)]; + heap32[(r2+11)] = heap32[(r1+11)]; + heap32[(r2+12)] = heap32[(r1+12)]; + heap32[(r2+13)] = heap32[(r1+13)]; + r3 = heap32[(fp+3)]; + heap32[(r2+14)] = heap32[(r1+14)]; + r4 = sp + -176; + r3 = r3 >> 2; + heap32[(r2+15)] = heap32[(r1+15)]; + r2 = r4 >> 2; + heap32[(fp+-44)] = heap32[(r3)]; + heap32[(r2+1)] = heap32[(r3+1)]; + heap32[(r2+2)] = heap32[(r3+2)]; + heap32[(r2+3)] = heap32[(r3+3)]; + heap32[(r2+4)] = heap32[(r3+4)]; + heap32[(r2+5)] = heap32[(r3+5)]; + heap32[(r2+6)] = heap32[(r3+6)]; + heap32[(r2+7)] = heap32[(r3+7)]; + heap32[(r2+8)] = heap32[(r3+8)]; + heap32[(r2+9)] = heap32[(r3+9)]; + heap32[(r2+10)] = heap32[(r3+10)]; + heap32[(r2+11)] = heap32[(r3+11)]; + heap32[(r2+12)] = heap32[(r3+12)]; + heap32[(r2+13)] = heap32[(r3+13)]; + heap32[(r2+14)] = heap32[(r3+14)]; + heap32[(r2+15)] = heap32[(r3+15)]; + r2 = sp + -24; + r5 = sp + -28; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r5; + _ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(i7); + r2 = r2 >> 2; + f0 = heapFloat[(r2+2)]; + f1 = heapFloat[(fp+-7)]; + f2 = heapFloat[(r2+1)]; + f3 = heapFloat[(fp+-6)]; + r2 = sp + -424; + f3 = f3*f1; + r5 = r2 >> 2; + f2 = f2*f1; + heapFloat[(fp+-106)] = f3; + f0 = f0*f1; + heapFloat[(r5+1)] = f2; + heapFloat[(r5+2)] = f0; + r6 = sp + -440; + heap32[(r5+3)] = 0; + r5 = r6 >> 2; + heap32[(fp+-110)] = 0; + heap32[(r5+1)] = 0; + heap32[(r5+2)] = 0; + r7 = sp + -504; + heap32[(r5+3)] = 0; + r5 = r7 >> 2; + heap32[(fp+-126)] = 1065353216; + heap32[(r5+1)] = 0; + heap32[(r5+2)] = 0; + heap32[(r5+3)] = 0; + heap32[(r5+4)] = 0; + heap32[(r5+5)] = 1065353216; + heap32[(r5+6)] = 0; + heap32[(r5+7)] = 0; + heap32[(r5+8)] = 0; + heap32[(r5+9)] = 0; + heap32[(r5+10)] = 1065353216; + heap32[(r5+11)] = 0; + heap32[(r5+12)] = 0; + heap32[(r5+13)] = 0; + heap32[(r5+14)] = 0; + heap32[(r5+15)] = 0; + r8 = sp + -48; + heap32[(g0)] = r0; + heap32[(g0+1)] = r8; + _ZNK11btMatrix3x311getRotationER12btQuaternion(i7); + r8 = r8 >> 2; + f0 = heapFloat[(fp+-12)]; + f1 = heapFloat[(r8+1)]; + f2 = heapFloat[(r8+2)]; + f3 = f0*f0; + f4 = f1*f1; + f5 = heapFloat[(r8+3)]; + f3 = f3+f4; + f4 = f2*f2; + f3 = f3+f4; + f4 = f5*f5; + f6 = 2; + f3 = f3+f4; + f3 = f6/f3; + f4 = f2*f3; + f6 = f1*f3; + f7 = f1*f6; + f2 = f2*f4; + f8 = f7+f2; + f9 = 1; + f10 = f0*f6; + f11 = f5*f4; + f8 = f9-f8; + f12 = f0*f4; + f6 = f5*f6; + f13 = f10-f11; + heapFloat[(fp+-126)] = f8; + f3 = f0*f3; + f8 = f12+f6; + heapFloat[(r5+1)] = f13; + f0 = f0*f3; + heapFloat[(r5+2)] = f8; + f2 = f0+f2; + f8 = f10+f11; + heap32[(r5+3)] = 0; + f1 = f1*f4; + f3 = f5*f3; + f2 = f9-f2; + heapFloat[(r5+4)] = f8; + f4 = f1-f3; + heapFloat[(r5+5)] = f2; + heapFloat[(r5+6)] = f4; + f2 = f12-f6; + heap32[(r5+7)] = 0; + f0 = f0+f7; + f1 = f1+f3; + heapFloat[(r5+8)] = f2; + f0 = f9-f0; + heapFloat[(r5+9)] = f1; + heapFloat[(r5+10)] = f0; + heap32[(r5+11)] = 0; + r5 = heap32[(fp+1)]; + r8 = sp + -192; + r9 = sp + -208; + heap32[(g0)] = r5; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r6; + heap32[(g0+3)] = r2; + heap32[(g0+4)] = r8; + heap32[(g0+5)] = r9; + r2 = _ZTV21btSingleSweepCallback; + r6 = sp + -408; + r2 = (r2 + 8)|0; + _ZNK16btCollisionShape21calculateTemporalAabbERK11btTransformRK9btVector3S5_fRS3_S6_(i7); + r7 = r6 >> 2; + heap32[(fp+-102)] = r2; + heap32[(r7+9)] = heap32[(r1)]; + heap32[(r7+10)] = heap32[(r1+1)]; + heap32[(r7+11)] = heap32[(r1+2)]; + heap32[(r7+12)] = heap32[(r1+3)]; + heap32[(r7+13)] = heap32[(r1+4)]; + heap32[(r7+14)] = heap32[(r1+5)]; + heap32[(r7+15)] = heap32[(r1+6)]; + heap32[(r7+16)] = heap32[(r1+7)]; + heap32[(r7+17)] = heap32[(r1+8)]; + heap32[(r7+18)] = heap32[(r1+9)]; + heap32[(r7+19)] = heap32[(r1+10)]; + heap32[(r7+20)] = heap32[(r1+11)]; + f0 = heapFloat[(r1+12)]; + heapFloat[(r7+21)] = f0; + f1 = heapFloat[(r1+13)]; + heapFloat[(r7+22)] = f1; + f2 = heapFloat[(r1+14)]; + heapFloat[(r7+23)] = f2; + heap32[(r7+24)] = heap32[(r1+15)]; + heap32[(r7+25)] = heap32[(r3)]; + heap32[(r7+26)] = heap32[(r3+1)]; + heap32[(r7+27)] = heap32[(r3+2)]; + heap32[(r7+28)] = heap32[(r3+3)]; + heap32[(r7+29)] = heap32[(r3+4)]; + heap32[(r7+30)] = heap32[(r3+5)]; + heap32[(r7+31)] = heap32[(r3+6)]; + heap32[(r7+32)] = heap32[(r3+7)]; + heap32[(r7+33)] = heap32[(r3+8)]; + heap32[(r7+34)] = heap32[(r3+9)]; + heap32[(r7+35)] = heap32[(r3+10)]; + heap32[(r7+36)] = heap32[(r3+11)]; + f3 = heapFloat[(r3+12)]; + heapFloat[(r7+37)] = f3; + f4 = heapFloat[(r3+13)]; + heapFloat[(r7+38)] = f4; + f5 = heapFloat[(r3+14)]; + heapFloat[(r7+39)] = f5; + r1 = heap32[(fp)]; + heap32[(r7+40)] = heap32[(r3+15)]; + r3 = heap32[(fp+4)]; + heap32[(r7+45)] = r1; + heap32[(r7+46)] = r3; + f0 = f3-f0; + f1 = f4-f1; + heap32[(r7+47)] = heap32[(fp+5)]; + f2 = f5-f2; + heap32[(r7+48)] = r5; + f3 = f0*f0; + f4 = f1*f1; + f3 = f3+f4; + f4 = f2*f2; + f3 = f3+f4; + heapFloat[(g0)] = f3; + sqrtf(i7); + f3 = f9/f_g0; + f4 = f0*f3; + f5 = f2*f3; + f3 = f1*f3; + f6 = 0; + if(f4 !=f6) //_LBB246_2 +{ + f7 = f9/f4; +} +else{ + f7 = 999999984306749440; +} + heapFloat[(r7+1)] = f7; + if(f3 !=f6) //_LBB246_5 +{ + f8 = f9/f3; +} +else{ + f8 = 999999984306749440; +} + heapFloat[(r7+2)] = f8; + if(f5 !=f6) //_LBB246_8 +{ + f9 = f9/f5; +} +else{ + f9 = 999999984306749440; +} + r3 = f7 < f6; + r5 = f8 < f6; + r3 = r3 & 1; + heapFloat[(r7+3)] = f9; + r10 = f9 < f6; + f0 = f4*f0; + f1 = f3*f1; + r5 = r5 & 1; + heap32[(r7+5)] = r3; + f0 = f0+f1; + f1 = f5*f2; + r3 = r10 & 1; + heap32[(r7+6)] = r5; + f0 = f0+f1; + heap32[(r7+7)] = r3; + r1 = r1 >> 2; + heapFloat[(r7+8)] = f0; + r1 = heap32[(r1+20)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+6)]; + r0 = (r0 + 48)|0; + r4 = (r4 + 48)|0; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r6; + heap32[(g0+4)] = r8; + heap32[(g0+5)] = r9; + r0 = _ZN15CProfileManager11CurrentNodeE; + __FUNCTION_TABLE__[(r3)>>2](i7); + r0 = r0 >> 2; + heap32[(fp+-102)] = r2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r3 = heap32[(r2+4)]; + r3 = (r3 + -1)|0; + heap32[(r2+4)] = r3; +_13: do { +if(!(r3 !=0)) //_LBB246_15 +{ + r3 = heap32[(r2+1)]; + if(r3 !=0) //_LBB246_12 +{ + r1 = sp + -8; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + r3 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r1 = r1 >> 2; + r4 = heap32[(fp+-2)]; + r5 = heap32[(r3)]; + r4 = (r4 - r5)|0; + r1 = heap32[(r1+1)]; + r3 = heap32[(r3+1)]; + r1 = (r1 - r3)|0; + r3 = (r4 * 1000000)|0; + r1 = (r1 + r3)|0; + r3 = heap32[(r2+3)]; + r1 = (r1 - r3)|0; + f0 = uint(r1); //fuitos r1, f0 + f1 = 1000; + f2 = heapFloat[(r2+2)]; + f0 = f0/f1; + f0 = f2+f0; + heapFloat[(r2+2)] = f0; + r1 = heap32[(r2+4)]; + if(r1 !=0) //_LBB246_15 +{ +break _13; +} +else{ + r1 = heap32[(r0)]; +} +} + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + heap32[(r0)] = r1; +} +} while(0); + return; +} + +function _ZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; + var f30; +var __label__ = 0; + i7 = sp + -1472;var g0 = i7>>2; // save stack + r0 = heap32[(fp+4)]; + r1 = r0 >> 2; + r2 = heap32[(r1+1)]; + r3 = heap32[(fp)]; + r4 = heap32[(fp+1)]; + r5 = heap32[(fp+2)]; + r6 = heap32[(fp+3)]; + r7 = heap32[(fp+5)]; + r8 = heap32[(fp+6)]; + f0 = heapFloat[(fp+7)]; +_1: do { + if(r2 >19) //_LBB247_6 +{ + r9 = (r2 + -21)|0; + if(uint(r9) >uint(8)) //_LBB247_30 +{ + if(r2 !=31) //_LBB247_5 +{ +break _1; +} +else{ + r0 = _2E_str1493; + heap32[(g0)] = r0; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + r0 = heap32[(r1+4)]; +if(!(r0 <1)) //_LBB247_34 +{ + r0 = 0; +_8: while(true){ + r2 = (r0 * 20)|0; + r9 = heap32[(r1+6)]; + r2 = r2 << 2; + r2 = (r9 + r2)|0; + r2 = r2 >> 2; + r9 = r7 >> 2; + f1 = heapFloat[(r2)]; + f2 = heapFloat[(r9)]; + f3 = heapFloat[(r2+4)]; + f4 = heapFloat[(r9+1)]; + f5 = heapFloat[(r2+1)]; + f6 = heapFloat[(r2+5)]; + f7 = f1*f2; + f8 = f3*f4; + f9 = heapFloat[(r2+8)]; + f10 = heapFloat[(r9+2)]; + f11 = heapFloat[(r9+8)]; + f12 = heapFloat[(r2+2)]; + f13 = heapFloat[(r9+4)]; + f14 = heapFloat[(r2+12)]; + f15 = heapFloat[(r9+9)]; + f16 = heapFloat[(r2+6)]; + f17 = heapFloat[(r9+5)]; + f18 = heapFloat[(r2+13)]; + f19 = heapFloat[(r2+9)]; + f20 = heapFloat[(r9+10)]; + f21 = heapFloat[(r2+10)]; + f22 = heapFloat[(r9+6)]; + f23 = heapFloat[(r2+14)]; + f24 = f5*f2; + f25 = f6*f4; + f7 = f7+f8; + f8 = f9*f10; + r2 = heap32[(r2+16)]; + f26 = heapFloat[(r9+14)]; + f27 = heapFloat[(r9+13)]; + f28 = heapFloat[(r9+12)]; + r9 = sp + -1408; + f29 = f12*f2; + f30 = f16*f4; + f24 = f24+f25; + f25 = f19*f10; + f7 = f7+f8; + r10 = r9 >> 2; + f8 = f29+f30; + f29 = f21*f10; + f24 = f24+f25; + heapFloat[(fp+-352)] = f7; + f7 = f1*f13; + f25 = f3*f17; + f8 = f8+f29; + heapFloat[(r10+1)] = f24; + heapFloat[(r10+2)] = f8; + f8 = f5*f13; + f24 = f6*f17; + f7 = f7+f25; + f25 = f9*f22; + f29 = f12*f13; + f30 = f16*f17; + f8 = f8+f24; + f24 = f19*f22; + f7 = f7+f25; + heap32[(r10+3)] = 0; + f25 = f29+f30; + f29 = f21*f22; + f8 = f8+f24; + heapFloat[(r10+4)] = f7; + f1 = f1*f11; + f3 = f3*f15; + f7 = f25+f29; + heapFloat[(r10+5)] = f8; + heapFloat[(r10+6)] = f7; + f5 = f5*f11; + f6 = f6*f15; + f1 = f1+f3; + f3 = f9*f20; + f7 = f12*f11; + f8 = f16*f15; + f5 = f5+f6; + f6 = f19*f20; + f1 = f1+f3; + heap32[(r10+7)] = 0; + f2 = f2*f14; + f3 = f4*f18; + f4 = f7+f8; + f7 = f21*f20; + f5 = f5+f6; + heapFloat[(r10+8)] = f1; + f1 = f13*f14; + f6 = f17*f18; + f2 = f2+f3; + f3 = f10*f23; + f4 = f4+f7; + heapFloat[(r10+9)] = f5; + f2 = f2+f3; + heapFloat[(r10+10)] = f4; + f3 = f11*f14; + f4 = f15*f18; + f1 = f1+f6; + f5 = f22*f23; + f1 = f1+f5; + f3 = f3+f4; + f4 = f20*f23; + f2 = f2+f28; + heap32[(r10+11)] = 0; + f3 = f3+f4; + f1 = f1+f27; + heapFloat[(r10+12)] = f2; + f2 = f3+f26; + heapFloat[(r10+13)] = f1; + heapFloat[(r10+14)] = f2; + r11 = r6 >> 2; + heap32[(r10+15)] = 0; + r10 = heap32[(r11+48)]; + r12 = 1; + heap32[(r11+48)] = r2; + r13 = _ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder; + r14 = -1; + heap16[(sp+-1424)>>1] = r12; + r12 = sp + -1432; + heap16[(sp+-1422)>>1] = r14; + r13 = (r13 + 8)|0; + r14 = r12 >> 2; + heap32[(fp+-358)] = r13; + heap32[(r14+3)] = r8; + r15 = r8 >> 2; + heap32[(r14+4)] = r0; + heap32[(r14+1)] = heap32[(r15+1)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r6; + heap32[(g0+4)] = r2; + heap32[(g0+5)] = r9; + heap32[(g0+6)] = r12; + heapFloat[(g0+7)] = f0; + _ZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEf(i7); + r0 = (r0 + 1)|0; + heap32[(r11+48)] = r10; + heap32[(fp+-358)] = r13; + r2 = heap32[(r1+4)]; +if(!(r2 >r0)) //_LBB247_33 +{ +break _8; +} +} +} + r0 = _ZN15CProfileManager11CurrentNodeE; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r3 = heap32[(r2+4)]; + r3 = (r3 + -1)|0; + heap32[(r2+4)] = r3; + if(r3 !=0) //_LBB247_5 +{ +break _1; +} +else{ + r3 = heap32[(r2+1)]; + if(r3 !=0) //_LBB247_37 +{ + r1 = sp + -24; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + r3 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r1 = r1 >> 2; + r4 = heap32[(fp+-6)]; + r5 = heap32[(r3)]; + r4 = (r4 - r5)|0; + r1 = heap32[(r1+1)]; + r3 = heap32[(r3+1)]; + r1 = (r1 - r3)|0; + r3 = (r4 * 1000000)|0; + r1 = (r1 + r3)|0; + r3 = heap32[(r2+3)]; + r1 = (r1 - r3)|0; + f0 = uint(r1); //fuitos r1, f0 + f1 = 1000; + f2 = heapFloat[(r2+2)]; + f0 = f0/f1; + f0 = f2+f0; + heapFloat[(r2+2)] = f0; + r1 = heap32[(r2+4)]; + if(r1 !=0) //_LBB247_5 +{ +break _1; +} +else{ + r1 = heap32[(r0)]; +} +} + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + heap32[(r0)] = r1; + return; +} +} +} +else{ + if(r2 !=21) //_LBB247_11 +{ + r2 = r5 >> 2; + r9 = r7 >> 2; + f0 = heapFloat[(r9)]; + f1 = heapFloat[(r2)]; + f2 = heapFloat[(r9+4)]; + f3 = heapFloat[(r2+4)]; + r10 = r4 >> 2; + f4 = heapFloat[(r2+1)]; + f5 = heapFloat[(r2+5)]; + f6 = f1*f0; + f7 = f3*f2; + f8 = heapFloat[(r9+8)]; + f9 = heapFloat[(r2+8)]; + f10 = heapFloat[(r9+2)]; + f11 = heapFloat[(r2+2)]; + f12 = heapFloat[(r9+1)]; + f13 = heapFloat[(r2+12)]; + f14 = heapFloat[(r10+12)]; + f15 = heapFloat[(r9+6)]; + f16 = heapFloat[(r2+6)]; + f17 = heapFloat[(r9+5)]; + f18 = heapFloat[(r2+13)]; + f19 = heapFloat[(r10+13)]; + f20 = heapFloat[(r9+13)]; + f21 = heapFloat[(r2+10)]; + f22 = heapFloat[(r9+10)]; + f23 = heapFloat[(r2+9)]; + f24 = heapFloat[(r9+9)]; + f25 = heapFloat[(r2+14)]; + heapFloat[(fp+-360)] = f25; + f26 = heapFloat[(r10+14)]; + f27 = heapFloat[(r9+14)]; + f28 = heapFloat[(r9+12)]; + heapFloat[(fp+-359)] = f28; + f29 = f4*f0; + f30 = f5*f2; + f6 = f6+f7; + f7 = f9*f8; + r2 = sp + -1056; + f25 = f11*f0; + f28 = f16*f2; + f29 = f29+f30; + f30 = f23*f8; + f6 = f6+f7; + r9 = r2 >> 2; + f7 = f25+f28; + f25 = f21*f8; + f28 = f29+f30; + heapFloat[(fp+-264)] = f6; + f6 = f1*f12; + f29 = f3*f17; + f7 = f7+f25; + heapFloat[(r9+1)] = f28; + heapFloat[(r9+2)] = f7; + f7 = f4*f12; + f25 = f5*f17; + f6 = f6+f29; + f28 = f9*f24; + f29 = f11*f12; + f30 = f16*f17; + f7 = f7+f25; + f25 = f23*f24; + f6 = f6+f28; + heap32[(r9+3)] = 0; + f28 = f29+f30; + f29 = f21*f24; + f7 = f7+f25; + heapFloat[(r9+4)] = f6; + f1 = f1*f10; + f3 = f3*f15; + f6 = f28+f29; + heapFloat[(r9+5)] = f7; + heapFloat[(r9+6)] = f6; + f4 = f4*f10; + f5 = f5*f15; + f1 = f1+f3; + f3 = f9*f22; + f6 = f11*f10; + f7 = f16*f15; + f4 = f4+f5; + f5 = f23*f22; + f1 = f1+f3; + heap32[(r9+7)] = 0; + f3 = f6+f7; + f6 = f21*f22; + f4 = f4+f5; + heapFloat[(r9+8)] = f1; + f1 = f3+f6; + heapFloat[(r9+9)] = f4; + heapFloat[(r9+10)] = f1; + heap32[(r9+11)] = 0; + heap32[(r9+12)] = 0; + heap32[(r9+13)] = 0; + heap32[(r9+14)] = 0; + heap32[(r9+15)] = 0; + r9 = heap32[(r1)]; + r9 = r9 >> 2; + r9 = heap32[(r9+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r9)>>2](i7); + r9 = sp + -1280; + heap32[(g0)] = r9; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r5; + heap32[(g0+4)] = r7; + heapFloat[(g0+5)] = f_g0; + r4 = _ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0; + _ZN28btTriangleConvexcastCallbackC2EPK13btConvexShapeRK11btTransformS5_S5_f(i7); + r4 = (r4 + 8)|0; + r5 = r9 >> 2; + heap32[(fp+-320)] = r4; + heap32[(r5+52)] = r8; + heap32[(r5+53)] = r6; + r4 = r8 >> 2; + heap32[(r5+54)] = r0; + r6 = r3 >> 2; + heap32[(r5+50)] = heap32[(r4+1)]; + r4 = heap32[(r6)]; + r4 = r4 >> 2; + r4 = heap32[(r4+2)]; + f28 = heapFloat[(fp+-359)]; + f1 = -f28; + r5 = sp + -1296; + r6 = sp + -1312; + f3 = f0*f14; + f4 = f2*f19; + f5 = f0*f1; + f6 = f2*f20; + f3 = f3+f4; + f4 = f8*f26; + f5 = f5-f6; + f6 = f8*f27; + heap32[(g0)] = r3; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r6; + f7 = f12*f14; + f9 = f17*f19; + f11 = f12*f1; + f16 = f17*f20; + f3 = f3+f4; + f4 = f5-f6; + f5 = f10*f14; + f6 = f15*f19; + f1 = f10*f1; + f14 = f15*f20; + f7 = f7+f9; + f9 = f24*f26; + f11 = f11-f16; + f16 = f24*f27; + f3 = f3+f4; + __FUNCTION_TABLE__[(r4)>>2](i7); + r2 = sp + -1328; + f0 = f0*f13; + f2 = f2*f18; + f10 = f10*f13; + f15 = f15*f18; + f12 = f12*f13; + f13 = f17*f18; + f5 = f5+f6; + f6 = f22*f26; + f1 = f1-f14; + f14 = f22*f27; + f7 = f7+f9; + f9 = f11-f16; + f7 = f7+f9; + f0 = f0+f2; + f25 = heapFloat[(fp+-360)]; + f2 = f8*f25; + f8 = f10+f15; + f10 = f22*f25; + f11 = f12+f13; + f12 = f24*f25; + r3 = r2 >> 2; + heapFloat[(fp+-332)] = f3; + f5 = f5+f6; + f1 = f1-f14; + f0 = f0+f2; + f2 = f8+f10; + f6 = f11+f12; + f5 = f5+f1; + heapFloat[(r3+1)] = f7; + f0 = f0+f4; + f1 = f2+f1; + f2 = f6+f9; + heapFloat[(r3+2)] = f5; + heap32[(r3+3)] = 0; + if(f0 > 2; + heapFloat[(fp+-336)] = f3; + heapFloat[(r7+1)] = f7; + heapFloat[(r7+2)] = f5; + heap32[(r7+3)] = 0; + if(f3 > 2; + heapFloat[(fp+-332)] = f0; + f0 = heapFloat[(r5+1)]; + f0 = f6+f0; + heapFloat[(r3+1)] = f0; + f0 = heapFloat[(r5+2)]; + f0 = f8+f0; + heapFloat[(r3+2)] = f0; + f0 = heapFloat[(fp+-328)]; + f0 = f3+f0; + r3 = r6 >> 2; + heapFloat[(fp+-336)] = f0; + f0 = heapFloat[(r3+1)]; + f0 = f7+f0; + heapFloat[(r7+1)] = f0; + f0 = heapFloat[(r3+2)]; + f0 = f5+f0; + heapFloat[(r7+2)] = f0; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+15)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r4; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} +else{ + r2 = r7 >> 2; + r9 = r4 >> 2; + f0 = heapFloat[(r2+12)]; + f0 = -f0; + f1 = heapFloat[(r2)]; + f2 = heapFloat[(r9+12)]; + f3 = heapFloat[(r2+4)]; + f4 = heapFloat[(r2+13)]; + f5 = heapFloat[(r9+13)]; + f6 = heapFloat[(r2+1)]; + f7 = heapFloat[(r2+5)]; + f8 = f1*f2; + f9 = f3*f5; + f10 = f1*f0; + f11 = f3*f4; + f12 = heapFloat[(r2+8)]; + f13 = heapFloat[(r2+14)]; + f14 = heapFloat[(r9+14)]; + f15 = heapFloat[(r2+9)]; + f16 = heapFloat[(r2+2)]; + f17 = heapFloat[(r2+6)]; + f18 = f6*f2; + f19 = f7*f5; + f20 = f6*f0; + f21 = f7*f4; + f8 = f8+f9; + f9 = f12*f14; + f10 = f10-f11; + f11 = f12*f13; + f22 = heapFloat[(r2+10)]; + f2 = f16*f2; + f5 = f17*f5; + f0 = f16*f0; + f4 = f17*f4; + f18 = f18+f19; + f19 = f15*f14; + f20 = f20-f21; + f21 = f15*f13; + f8 = f8+f9; + f9 = f10-f11; + r2 = sp + -656; + f2 = f2+f5; + f5 = f22*f14; + f0 = f0-f4; + f4 = f22*f13; + f10 = f18+f19; + f11 = f20-f21; + f8 = f8+f9; + r9 = r2 >> 2; + f2 = f2+f5; + f0 = f0-f4; + f4 = f10+f11; + heapFloat[(fp+-164)] = f8; + f2 = f2+f0; + heapFloat[(r9+1)] = f4; + heapFloat[(r9+2)] = f2; + r10 = r5 >> 2; + heap32[(r9+3)] = 0; + f2 = heapFloat[(r10+12)]; + f4 = heapFloat[(r10+13)]; + f5 = heapFloat[(r10+14)]; + f8 = f1*f2; + f10 = f3*f4; + f13 = f6*f2; + f14 = f7*f4; + f8 = f8+f10; + f10 = f12*f5; + f8 = f8+f10; + f2 = f16*f2; + f4 = f17*f4; + f10 = f13+f14; + f13 = f15*f5; + r9 = sp + -672; + f10 = f10+f13; + f2 = f2+f4; + f4 = f22*f5; + f5 = f8+f9; + f2 = f2+f4; + r11 = r9 >> 2; + f4 = f10+f11; + heapFloat[(fp+-168)] = f5; + f0 = f2+f0; + heapFloat[(r11+1)] = f4; + heapFloat[(r11+2)] = f0; + heap32[(r11+3)] = 0; + f0 = heapFloat[(r10)]; + f2 = heapFloat[(r10+4)]; + f4 = heapFloat[(r10+1)]; + f5 = heapFloat[(r10+5)]; + f8 = heapFloat[(r10+8)]; + f9 = f0*f1; + f10 = f2*f3; + f11 = heapFloat[(r10+2)]; + f13 = heapFloat[(r10+6)]; + f14 = heapFloat[(r10+10)]; + f18 = heapFloat[(r10+9)]; + f19 = f4*f1; + f20 = f5*f3; + f9 = f9+f10; + f10 = f8*f12; + r10 = sp + -736; + f1 = f11*f1; + f3 = f13*f3; + f19 = f19+f20; + f20 = f18*f12; + f9 = f9+f10; + r11 = r10 >> 2; + f1 = f1+f3; + f3 = f14*f12; + f10 = f19+f20; + heapFloat[(fp+-184)] = f9; + f9 = f0*f6; + f12 = f2*f7; + f1 = f1+f3; + heapFloat[(r11+1)] = f10; + heapFloat[(r11+2)] = f1; + f1 = f4*f6; + f3 = f5*f7; + f9 = f9+f12; + f10 = f8*f15; + f6 = f11*f6; + f7 = f13*f7; + f1 = f1+f3; + f3 = f18*f15; + f9 = f9+f10; + heap32[(r11+3)] = 0; + f6 = f6+f7; + f7 = f14*f15; + f1 = f1+f3; + heapFloat[(r11+4)] = f9; + f0 = f0*f16; + f2 = f2*f17; + f3 = f6+f7; + heapFloat[(r11+5)] = f1; + heapFloat[(r11+6)] = f3; + f1 = f4*f16; + f3 = f5*f17; + f0 = f0+f2; + f2 = f8*f22; + f4 = f11*f16; + f5 = f13*f17; + f1 = f1+f3; + f3 = f18*f22; + f0 = f0+f2; + heap32[(r11+7)] = 0; + f2 = f4+f5; + f4 = f14*f22; + f1 = f1+f3; + heapFloat[(r11+8)] = f0; + f0 = f2+f4; + heapFloat[(r11+9)] = f1; + heapFloat[(r11+10)] = f0; + heap32[(r11+11)] = 0; + heap32[(r11+12)] = 0; + heap32[(r11+13)] = 0; + heap32[(r11+14)] = 0; + heap32[(r11+15)] = 0; + r11 = heap32[(r1)]; + r11 = r11 >> 2; + r11 = heap32[(r11+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r11)>>2](i7); + r11 = sp + -960; + heap32[(g0)] = r11; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r5; + heap32[(g0+4)] = r7; + heapFloat[(g0+5)] = f_g0; + r4 = _ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback; + _ZN28btTriangleConvexcastCallbackC2EPK13btConvexShapeRK11btTransformS5_S5_f(i7); + r4 = (r4 + 8)|0; + r5 = r11 >> 2; + heap32[(fp+-240)] = r4; + heap32[(r5+52)] = r8; + heap32[(r5+53)] = r6; + r4 = r8 >> 2; + heap32[(r5+54)] = r0; + r0 = r3 >> 2; + heap32[(r5+50)] = heap32[(r4+1)]; + r0 = heap32[(r0)]; + r0 = r0 >> 2; + r0 = heap32[(r0+2)]; + r4 = sp + -976; + r5 = sp + -992; + heap32[(g0)] = r3; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r5; + __FUNCTION_TABLE__[(r0)>>2](i7); + r0 = _ZTVZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback; + r3 = sp + -16; + r6 = heap32[(r1+12)]; + r0 = (r0 + 8)|0; + r7 = r3 >> 2; + heap32[(fp+-4)] = r0; + heap32[(r7+1)] = r6; + heap32[(r7+2)] = r11; + r0 = heap32[(r1+13)]; + r1 = heapU8[r0+60]; + if(r1 ==0) //_LBB247_10 +{ + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r9; + heap32[(g0+4)] = r4; + heap32[(g0+5)] = r5; + _ZNK14btQuantizedBvh27walkStacklessTreeAgainstRayEP21btNodeOverlapCallbackRK9btVector3S4_S4_S4_ii(i7); + return; +} +else{ + r1 = r0 >> 2; + r1 = heap32[(r1+14)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r9; + heap32[(g0+4)] = r4; + heap32[(g0+5)] = r5; + heap32[(g0+6)] = r1; + _ZNK14btQuantizedBvh36walkStacklessQuantizedTreeAgainstRayEP21btNodeOverlapCallbackRK9btVector3S4_S4_S4_ii(i7); + return; +} +} +} +} +else{ + r1 = _ZTVN12btConvexCast10CastResultE; + r2 = sp + -200; + r1 = (r1 + 8)|0; + r9 = r2 >> 2; + heap32[(fp+-50)] = r1; + heap32[(r9+42)] = 0; + r1 = sp + -560; + r10 = r8 >> 2; + heapFloat[(r9+43)] = f0; + r11 = r1 >> 2; + heap32[(r9+41)] = heap32[(r10+1)]; + r12 = _ZTV30btGjkEpaPenetrationDepthSolver; + r13 = 0; + heap32[(r11+77)] = 953267991; + r11 = _ZTV27btContinuousConvexCollision; + r12 = (r12 + 8)|0; + heap8[sp+-228] = r13; + r13 = sp + -592; + r11 = (r11 + 8)|0; + heap32[(fp+-142)] = r12; + r12 = r13 >> 2; + heap32[(fp+-148)] = r11; + r11 = sp + -568; + heap32[(r12+1)] = r1; + heap32[(r12+2)] = r11; + heap32[(r12+3)] = r3; + heap32[(r12+4)] = r0; + heap32[(g0)] = r13; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r7; + heap32[(g0+4)] = r7; + heap32[(g0+5)] = r2; + _ZN27btContinuousConvexCollision16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(i7); + r0 = r_g0; +if(!(r0 ==0)) //_LBB247_5 +{ + f0 = heapFloat[(r9+33)]; + f1 = heapFloat[(r9+34)]; + f2 = heapFloat[(r9+35)]; + f0 = f0*f0; + f1 = f1*f1; + f0 = f0+f1; + f1 = f2*f2; + f0 = f0+f1; + f1 = 9.9999997473787516e-005; +if(!(f0 <=f1)) //_LBB247_5 +{ + f1 = heapFloat[(r9+41)]; + f2 = heapFloat[(r10+1)]; +if(!(f1 >=f2)) //_LBB247_5 +{ + heapFloat[(g0)] = f0; + sqrtf(i7); + f1 = 1; + f2 = heapFloat[(r9+33)]; + f0 = f1/f_g0; + f1 = f2*f0; + heapFloat[(r9+33)] = f1; + f2 = heapFloat[(r9+34)]; + f2 = f2*f0; + heapFloat[(r9+34)] = f2; + f3 = heapFloat[(r9+35)]; + f0 = f3*f0; + heapFloat[(r9+35)] = f0; + r0 = sp + -640; + f3 = heapFloat[(r9+41)]; + r1 = r0 >> 2; + heap32[(fp+-160)] = r6; + heap32[(r1+1)] = 0; + heapFloat[(r1+2)] = f1; + heapFloat[(r1+3)] = f2; + heapFloat[(r1+4)] = f0; + heap32[(r1+5)] = heap32[(r9+36)]; + heap32[(r1+6)] = heap32[(r9+37)]; + heap32[(r1+7)] = heap32[(r9+38)]; + heap32[(r1+8)] = heap32[(r9+39)]; + heap32[(r1+9)] = heap32[(r9+40)]; + heapFloat[(r1+10)] = f3; + r1 = heap32[(r10)]; + r1 = r1 >> 2; + r1 = heap32[(r1+3)]; + heap32[(g0)] = r8; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r1)>>2](i7); +} +} +} +} +} while(0); + return; +} + +function _ZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; +var __label__ = 0; + i7 = sp + -1120;var g0 = i7>>2; // save stack + r0 = sp + -104; + r1 = r0 >> 2; + heap32[(r1+2)] = 0; + heap32[(r1+3)] = 1065353216; + heap32[(r1+4)] = 1065353216; + r2 = _ZTV13btSphereShape; + heap32[(r1+5)] = 1065353216; + r2 = (r2 + 8)|0; + heap32[(r1+6)] = 0; + heap32[(fp+-26)] = r2; + heap32[(r1+1)] = 8; + r2 = heap32[(fp+3)]; + heap32[(r1+7)] = 0; + r3 = r2 >> 2; + heap32[(r1+11)] = 0; + r1 = heap32[(r3+1)]; + r4 = heap32[(fp)]; + r5 = heap32[(fp+1)]; + r6 = heap32[(fp+2)]; + r7 = heap32[(fp+4)]; + r8 = heap32[(fp+5)]; + if(r1 >19) //_LBB248_6 +{ + r0 = (r1 + -21)|0; + if(uint(r0) >uint(8)) //_LBB248_25 +{ +if(!(r1 !=31)) //_LBB248_29 +{ + r0 = heap32[(r3+4)]; +if(!(r0 <1)) //_LBB248_29 +{ + r0 = 0; +_8: while(true){ + r1 = (r0 * 20)|0; + r2 = heap32[(r3+6)]; + r1 = r1 << 2; + r1 = (r2 + r1)|0; + r1 = r1 >> 2; + r2 = r7 >> 2; + f0 = heapFloat[(r1)]; + f1 = heapFloat[(r2)]; + f2 = heapFloat[(r1+4)]; + f3 = heapFloat[(r2+1)]; + f4 = heapFloat[(r1+1)]; + f5 = heapFloat[(r1+5)]; + f6 = f0*f1; + f7 = f2*f3; + f8 = heapFloat[(r1+8)]; + f9 = heapFloat[(r2+2)]; + f10 = heapFloat[(r2+8)]; + f11 = heapFloat[(r1+2)]; + f12 = heapFloat[(r2+4)]; + f13 = heapFloat[(r1+12)]; + f14 = heapFloat[(r2+9)]; + f15 = heapFloat[(r1+6)]; + f16 = heapFloat[(r2+5)]; + f17 = heapFloat[(r1+13)]; + f18 = heapFloat[(r1+9)]; + f19 = heapFloat[(r2+10)]; + f20 = heapFloat[(r1+10)]; + f21 = heapFloat[(r2+6)]; + f22 = heapFloat[(r1+14)]; + f23 = f4*f1; + f24 = f5*f3; + f6 = f6+f7; + f7 = f8*f9; + r1 = heap32[(r1+16)]; + f25 = heapFloat[(r2+14)]; + f26 = heapFloat[(r2+13)]; + f27 = heapFloat[(r2+12)]; + r2 = sp + -1056; + f28 = f11*f1; + f29 = f15*f3; + f23 = f23+f24; + f24 = f18*f9; + f6 = f6+f7; + r9 = r2 >> 2; + f7 = f28+f29; + f28 = f20*f9; + f23 = f23+f24; + heapFloat[(fp+-264)] = f6; + f6 = f0*f12; + f24 = f2*f16; + f7 = f7+f28; + heapFloat[(r9+1)] = f23; + heapFloat[(r9+2)] = f7; + f7 = f4*f12; + f23 = f5*f16; + f6 = f6+f24; + f24 = f8*f21; + f28 = f11*f12; + f29 = f15*f16; + f7 = f7+f23; + f23 = f18*f21; + f6 = f6+f24; + heap32[(r9+3)] = 0; + f24 = f28+f29; + f28 = f20*f21; + f7 = f7+f23; + heapFloat[(r9+4)] = f6; + f0 = f0*f10; + f2 = f2*f14; + f6 = f24+f28; + heapFloat[(r9+5)] = f7; + heapFloat[(r9+6)] = f6; + f4 = f4*f10; + f5 = f5*f14; + f0 = f0+f2; + f2 = f8*f19; + f6 = f11*f10; + f7 = f15*f14; + f4 = f4+f5; + f5 = f18*f19; + f0 = f0+f2; + heap32[(r9+7)] = 0; + f1 = f1*f13; + f2 = f3*f17; + f3 = f6+f7; + f6 = f20*f19; + f4 = f4+f5; + heapFloat[(r9+8)] = f0; + f0 = f12*f13; + f5 = f16*f17; + f1 = f1+f2; + f2 = f9*f22; + f3 = f3+f6; + heapFloat[(r9+9)] = f4; + f1 = f1+f2; + heapFloat[(r9+10)] = f3; + f2 = f10*f13; + f3 = f14*f17; + f0 = f0+f5; + f4 = f21*f22; + f0 = f0+f4; + f2 = f2+f3; + f3 = f19*f22; + f1 = f1+f27; + heap32[(r9+11)] = 0; + f2 = f2+f3; + f0 = f0+f26; + heapFloat[(r9+12)] = f1; + f1 = f2+f25; + heapFloat[(r9+13)] = f0; + heapFloat[(r9+14)] = f1; + r10 = r6 >> 2; + heap32[(r9+15)] = 0; + r9 = sp + -1088; + r11 = heap32[(r10+48)]; + r12 = r9 >> 2; + heap32[(r10+48)] = r1; + r13 = 1; + heap32[(r12+2)] = 0; + r14 = -1; + heap16[(sp+-1076)>>1] = r13; + heap16[(sp+-1074)>>1] = r14; + r13 = _ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2; + heap32[(r12+4)] = 0; + r13 = (r13 + 8)|0; + heap32[(fp+-272)] = r13; + heap32[(r12+5)] = r8; + r14 = r8 >> 2; + heap32[(r12+6)] = r0; + heap32[(r12+1)] = heap32[(r14+1)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r6; + heap32[(g0+3)] = r1; + heap32[(g0+4)] = r2; + heap32[(g0+5)] = r9; + _ZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackE(i7); + r0 = (r0 + 1)|0; + heap32[(r10+48)] = r11; + heap32[(fp+-272)] = r13; + r1 = heap32[(r3+4)]; +if(!(r1 >r0)) //_LBB248_28 +{ +break _8; +} +} +} +} + return; +} +else{ + if(r1 !=21) //_LBB248_12 +{ + r1 = r7 >> 2; + r4 = r4 >> 2; + f0 = heapFloat[(r1+12)]; + f1 = heapFloat[(r1+13)]; + f2 = heapFloat[(r1+4)]; + f3 = heapFloat[(r4+13)]; + f4 = heapFloat[(r1)]; + f5 = -f0; + f6 = heapFloat[(r4+12)]; + f7 = heapFloat[(r1+5)]; + f8 = heapFloat[(r1+1)]; + f9 = f4*f6; + f10 = f2*f3; + f11 = f4*f5; + f12 = f2*f1; + f13 = heapFloat[(r1+14)]; + f14 = heapFloat[(r1+8)]; + f15 = heapFloat[(r4+14)]; + r4 = r5 >> 2; + f16 = heapFloat[(r1+9)]; + f17 = heapFloat[(r1+6)]; + f18 = heapFloat[(r1+2)]; + r5 = r8 >> 2; + f9 = f9+f10; + f10 = f14*f15; + f11 = f11-f12; + f12 = f14*f13; + f19 = f8*f6; + f20 = f7*f3; + f21 = f8*f5; + f22 = f7*f1; + f23 = heapFloat[(r4+12)]; + f24 = heapFloat[(r4+13)]; + f25 = heapFloat[(r1+10)]; + f26 = heapFloat[(r4+14)]; + r4 = sp + -960; + r7 = heap32[(r5+4)]; + f9 = f9+f10; + f10 = f11-f12; + f6 = f18*f6; + f3 = f17*f3; + f11 = f19+f20; + f12 = f16*f15; + f5 = f18*f5; + f19 = f17*f1; + f20 = f21-f22; + f21 = f16*f13; + f9 = f9+f10; + f3 = f6+f3; + f6 = f25*f15; + f11 = f11+f12; + f12 = f20-f21; + r0 = r4 >> 2; + f5 = f5-f19; + f15 = f25*f13; + f11 = f11+f12; + heapFloat[(r0+1)] = f9; + f19 = f4*f23; + f20 = f2*f24; + f3 = f3+f6; + f5 = f5-f15; + f3 = f3+f5; + heapFloat[(r0+2)] = f11; + f6 = f19+f20; + f15 = f14*f26; + f19 = f8*f23; + f20 = f7*f24; + f6 = f6+f15; + heapFloat[(r0+3)] = f3; + f15 = f18*f23; + f21 = f17*f24; + f19 = f19+f20; + f20 = f16*f26; + f6 = f6+f10; + f10 = f19+f20; + heap32[(r0+4)] = 0; + f15 = f15+f21; + f19 = f25*f26; + f15 = f15+f19; + f10 = f10+f12; + heapFloat[(r0+5)] = f6; + f5 = f15+f5; + heapFloat[(r0+6)] = f10; + heapFloat[(r0+7)] = f5; + r9 = _ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0; + heap32[(r0+8)] = 0; + r9 = (r9 + 8)|0; + heap32[(r0+9)] = r7; + heap32[(fp+-240)] = r9; + heap32[(r0+11)] = r8; + heap32[(r0+12)] = r6; + heap32[(r0+13)] = r2; + heapFloat[(r0+14)] = f4; + heapFloat[(r0+15)] = f8; + heapFloat[(r0+16)] = f18; + heap32[(r0+17)] = heap32[(r1+3)]; + heapFloat[(r0+18)] = f2; + heapFloat[(r0+19)] = f7; + heapFloat[(r0+20)] = f17; + heap32[(r0+21)] = heap32[(r1+7)]; + heapFloat[(r0+22)] = f14; + heapFloat[(r0+23)] = f16; + heapFloat[(r0+24)] = f25; + heap32[(r0+25)] = heap32[(r1+11)]; + heapFloat[(r0+26)] = f0; + heapFloat[(r0+27)] = f1; + heapFloat[(r0+28)] = f13; + heap32[(r0+29)] = heap32[(r1+15)]; + r1 = sp + -976; + heap32[(r0+10)] = heap32[(r5+1)]; + r5 = r1 >> 2; + heapFloat[(fp+-244)] = f9; + heapFloat[(r5+1)] = f11; + heapFloat[(r5+2)] = f3; + heap32[(r5+3)] = 0; +if(!(f6 >=f9)) //_LBB248_14 +{ + heapFloat[(fp+-244)] = f6; +} +if(!(f10 >=f11)) //_LBB248_16 +{ + heapFloat[(r5+1)] = f10; +} +if(!(f5 >=f3)) //_LBB248_18 +{ + heapFloat[(r5+2)] = f5; +} + r5 = sp + -992; + r6 = r5 >> 2; + heapFloat[(fp+-248)] = f9; + heapFloat[(r6+1)] = f11; + heapFloat[(r6+2)] = f3; + heap32[(r6+3)] = 0; +if(!(f9 >=f6)) //_LBB248_20 +{ + heapFloat[(fp+-248)] = f6; +} +if(!(f11 >=f10)) //_LBB248_22 +{ + heapFloat[(r6+1)] = f10; +} +if(!(f3 >=f5)) //_LBB248_24 +{ + heapFloat[(r6+2)] = f5; +} + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+15)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r1; + heap32[(g0+3)] = r5; + r1 = _ZTV18btTriangleCallback; + r1 = (r1 + 8)|0; + __FUNCTION_TABLE__[(r3)>>2](i7); + heap32[(fp+-240)] = r1; + return; +} +else{ + r1 = r7 >> 2; + r4 = r4 >> 2; + f0 = heapFloat[(r1+12)]; + f1 = heapFloat[(r1+13)]; + f2 = heapFloat[(r1+4)]; + f3 = heapFloat[(r4+13)]; + f4 = heapFloat[(r1)]; + f5 = heapFloat[(r4+12)]; + f6 = -f0; + f7 = heapFloat[(r1+5)]; + f8 = heapFloat[(r1+1)]; + f9 = heapFloat[(r1+14)]; + f10 = heapFloat[(r1+8)]; + f11 = heapFloat[(r4+14)]; + f12 = f4*f5; + f13 = f2*f3; + f14 = f4*f6; + f15 = f2*f1; + f16 = heapFloat[(r1+9)]; + f17 = heapFloat[(r1+6)]; + f18 = heapFloat[(r1+2)]; + f19 = f8*f5; + f20 = f7*f3; + f21 = f8*f6; + f22 = f7*f1; + f12 = f12+f13; + f13 = f10*f11; + f14 = f14-f15; + f15 = f10*f9; + f23 = heapFloat[(r1+10)]; + f5 = f18*f5; + f3 = f17*f3; + f6 = f18*f6; + f24 = f17*f1; + f19 = f19+f20; + f20 = f16*f11; + f21 = f21-f22; + f22 = f16*f9; + f12 = f12+f13; + f13 = f14-f15; + r4 = sp + -704; + f12 = f12+f13; + f3 = f5+f3; + f5 = f23*f11; + f6 = f6-f24; + f11 = f23*f9; + f14 = f19+f20; + f15 = f21-f22; + r7 = r4 >> 2; + heapFloat[(fp+-176)] = f12; + f14 = f14+f15; + f3 = f3+f5; + f5 = f6-f11; + heapFloat[(r7+1)] = f14; + f3 = f3+f5; + heapFloat[(r7+2)] = f3; + r5 = r5 >> 2; + heap32[(r7+3)] = 0; + f6 = heapFloat[(r5+12)]; + f11 = heapFloat[(r5+13)]; + f19 = heapFloat[(r5+14)]; + f20 = f4*f6; + f21 = f2*f11; + f22 = f8*f6; + f24 = f7*f11; + f20 = f20+f21; + f21 = f10*f19; + f20 = f20+f21; + f6 = f18*f6; + f11 = f17*f11; + f21 = f22+f24; + f22 = f16*f19; + r5 = sp + -720; + f21 = f21+f22; + f13 = f20+f13; + f6 = f6+f11; + f11 = f23*f19; + f6 = f6+f11; + r7 = r5 >> 2; + heapFloat[(fp+-180)] = f13; + f11 = f21+f15; + heapFloat[(r7+1)] = f11; + f5 = f6+f5; + heapFloat[(r7+2)] = f5; + r0 = sp + -840; + r9 = r8 >> 2; + heap32[(r7+3)] = 0; + r7 = r0 >> 2; + r10 = heap32[(r9+4)]; + heapFloat[(r7+1)] = f12; + heapFloat[(r7+2)] = f14; + heapFloat[(r7+3)] = f3; + heap32[(r7+4)] = 0; + heapFloat[(r7+5)] = f13; + heapFloat[(r7+6)] = f11; + heapFloat[(r7+7)] = f5; + r11 = _ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback; + heap32[(r7+8)] = 0; + r11 = (r11 + 8)|0; + heap32[(r7+9)] = r10; + heap32[(fp+-210)] = r11; + heap32[(r7+11)] = r8; + heap32[(r7+12)] = r6; + heap32[(r7+13)] = r2; + heapFloat[(r7+14)] = f4; + heapFloat[(r7+15)] = f8; + heapFloat[(r7+16)] = f18; + heap32[(r7+17)] = heap32[(r1+3)]; + heapFloat[(r7+18)] = f2; + heapFloat[(r7+19)] = f7; + heapFloat[(r7+20)] = f17; + heap32[(r7+21)] = heap32[(r1+7)]; + heapFloat[(r7+22)] = f10; + heapFloat[(r7+23)] = f16; + heapFloat[(r7+24)] = f23; + heap32[(r7+25)] = heap32[(r1+11)]; + heapFloat[(r7+26)] = f0; + heapFloat[(r7+27)] = f1; + heapFloat[(r7+28)] = f9; + heap32[(r7+29)] = heap32[(r1+15)]; + r1 = _ZTVZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback; + heap32[(r7+10)] = heap32[(r9+1)]; + r2 = sp + -48; + r6 = heap32[(r3+12)]; + r1 = (r1 + 8)|0; + r7 = r2 >> 2; + heap32[(fp+-12)] = r1; + heap32[(r7+1)] = r6; + heap32[(r7+2)] = r0; + r1 = heap32[(r3+13)]; + r3 = sp + -32; + r6 = r3 >> 2; + heap32[(fp+-8)] = 0; + heap32[(r6+1)] = 0; + heap32[(r6+2)] = 0; + r7 = sp + -16; + heap32[(r6+3)] = 0; + r6 = r7 >> 2; + heap32[(fp+-4)] = 0; + heap32[(r6+1)] = 0; + heap32[(r6+2)] = 0; + heap32[(r6+3)] = 0; + r6 = heapU8[r1+60]; + if(r6 ==0) //_LBB248_10 +{ + heap32[(g0)] = r1; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r5; + heap32[(g0+4)] = r7; + heap32[(g0+5)] = r3; + _ZNK14btQuantizedBvh27walkStacklessTreeAgainstRayEP21btNodeOverlapCallbackRK9btVector3S4_S4_S4_ii(i7); +} +else{ + r6 = r1 >> 2; + r6 = heap32[(r6+14)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r5; + heap32[(g0+4)] = r7; + heap32[(g0+5)] = r3; + heap32[(g0+6)] = r6; + _ZNK14btQuantizedBvh36walkStacklessQuantizedTreeAgainstRayEP21btNodeOverlapCallbackRK9btVector3S4_S4_S4_ii(i7); +} + r1 = _ZTV18btTriangleCallback; + r1 = (r1 + 8)|0; + heap32[(fp+-210)] = r1; + return; +} +} +} +else{ + r1 = _ZTVN12btConvexCast10CastResultE; + r3 = sp + -280; + r1 = (r1 + 8)|0; + r9 = r3 >> 2; + heap32[(fp+-70)] = r1; + heap32[(r9+42)] = 0; + r1 = sp + -640; + r10 = r8 >> 2; + heap32[(r9+43)] = 0; + r11 = r1 >> 2; + heap32[(r9+41)] = heap32[(r10+1)]; + r12 = _ZTV22btSubsimplexConvexCast; + r13 = 0; + heap32[(r11+77)] = 953267991; + r11 = sp + -656; + r12 = (r12 + 8)|0; + heap8[sp+-308] = r13; + r13 = r11 >> 2; + heap32[(fp+-164)] = r12; + heap32[(r13+1)] = r1; + heap32[(r13+2)] = r0; + heap32[(r13+3)] = r2; + heap32[(g0)] = r11; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r7; + heap32[(g0+4)] = r7; + heap32[(g0+5)] = r3; + _ZN22btSubsimplexConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(i7); + r1 = r_g0; +if(!(r1 ==0)) //_LBB248_5 +{ + f0 = heapFloat[(r9+33)]; + f1 = heapFloat[(r9+34)]; + f2 = heapFloat[(r9+35)]; + f3 = f0*f0; + f4 = f1*f1; + f3 = f3+f4; + f4 = f2*f2; + f3 = f3+f4; + f4 = 9.9999997473787516e-005; +if(!(f3 <=f4)) //_LBB248_5 +{ + f3 = heapFloat[(r9+41)]; + f4 = heapFloat[(r10+1)]; +if(!(f3 >=f4)) //_LBB248_5 +{ + r1 = r4 >> 2; + f4 = heapFloat[(r1+4)]; + f5 = heapFloat[(r1)]; + f6 = heapFloat[(r1+5)]; + f7 = heapFloat[(r1+1)]; + f8 = heapFloat[(r1+8)]; + f9 = heapFloat[(r1+9)]; + f4 = f4*f0; + f6 = f6*f1; + f10 = heapFloat[(r1+6)]; + f11 = heapFloat[(r1+2)]; + f5 = f5*f0; + f7 = f7*f1; + f12 = heapFloat[(r1+10)]; + f0 = f8*f0; + f1 = f9*f1; + f4 = f4+f6; + f6 = f10*f2; + f5 = f5+f7; + f7 = f11*f2; + f4 = f4+f6; + f5 = f5+f7; + f0 = f0+f1; + f1 = f12*f2; + f0 = f0+f1; + f1 = f5*f5; + f2 = f4*f4; + heap32[(r9+36)] = 0; + f1 = f1+f2; + f2 = f0*f0; + f1 = f1+f2; + heapFloat[(g0)] = f1; + f1 = 1; + sqrtf(i7); + f1 = f1/f_g0; + f2 = f5*f1; + f4 = f4*f1; + heapFloat[(r9+33)] = f2; + f0 = f0*f1; + heapFloat[(r9+34)] = f4; + r1 = sp + -688; + heapFloat[(r9+35)] = f0; + r2 = r1 >> 2; + heap32[(fp+-172)] = r6; + heap32[(r2+1)] = 0; + heapFloat[(r2+2)] = f2; + heapFloat[(r2+3)] = f4; + heapFloat[(r2+4)] = f0; + heap32[(r2+5)] = 0; + heapFloat[(r2+6)] = f3; + r2 = heap32[(r10)]; + r2 = r2 >> 2; + r2 = heap32[(r2+3)]; + heap32[(g0)] = r8; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r2)>>2](i7); +} +} +} + r1 = _ZTV12btConvexCast; + r1 = (r1 + 8)|0; + heap32[(fp+-164)] = r1; + return; +} +} + +function _ZN22btCompoundLeafCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV22btCompoundLeafCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN22btCompoundLeafCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV22btCompoundLeafCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN22btCompoundLeafCallback7ProcessEPK10btDbvtNode(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; +var __label__ = 0; + i7 = sp + -136;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+1)]; + r3 = heap32[(fp+1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+48)]; + r4 = r3 >> 2; + r4 = heap32[(r4+9)]; + r2 = r2 >> 2; + r2 = heap32[(r2+6)]; + r5 = (r4 * 80)|0; + r6 = heap32[(r1+4)]; + r2 = (r2 + r5)|0; + r5 = r6 >> 2; + r2 = r2 >> 2; + r5 = heap32[(r5+5)]; + r2 = heap32[(r2+16)]; +if(!(r5 ==0)) //_LBB251_3 +{ + r6 = r5 >> 2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+12)]; + heap32[(g0)] = r5; + __FUNCTION_TABLE__[(r6)>>2](i7); + r5 = r_g0 & 2; +if(!(r5 ==0)) //_LBB251_3 +{ + r5 = heap32[(r1+1)]; + r6 = sp + -112; + r5 = r5 >> 2; + r7 = r6 >> 2; + heap32[(fp+-28)] = heap32[(r5+1)]; + heap32[(r7+1)] = heap32[(r5+2)]; + heap32[(r7+2)] = heap32[(r5+3)]; + heap32[(r7+3)] = heap32[(r5+4)]; + heap32[(r7+4)] = heap32[(r5+5)]; + heap32[(r7+5)] = heap32[(r5+6)]; + heap32[(r7+6)] = heap32[(r5+7)]; + heap32[(r7+7)] = heap32[(r5+8)]; + heap32[(r7+8)] = heap32[(r5+9)]; + heap32[(r7+9)] = heap32[(r5+10)]; + heap32[(r7+10)] = heap32[(r5+11)]; + heap32[(r7+11)] = heap32[(r5+12)]; + heap32[(r7+12)] = heap32[(r5+13)]; + heap32[(r7+13)] = heap32[(r5+14)]; + heap32[(r7+14)] = heap32[(r5+15)]; + heap32[(r7+15)] = heap32[(r5+16)]; + r5 = (r3 + 16)|0; + r7 = sp + -32; + r8 = sp + -48; + heap32[(g0)] = r3; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = 0; + heap32[(g0+3)] = r6; + heap32[(g0+4)] = r7; + heap32[(g0+5)] = r8; + _Z15btTransformAabbRK9btVector3S1_fRK11btTransformRS_S5_(i7); + r1 = heap32[(r1+4)]; + r1 = r1 >> 2; + r3 = heap32[(r1+5)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+13)]; + r5 = sp + -16; + r6 = r5 >> 2; + heap32[(fp+-4)] = 1065353216; + heap32[(r6+1)] = 0; + heap32[(r6+2)] = 0; + heap32[(r6+3)] = 0; + r1 = heap32[(r1+5)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r5; + __FUNCTION_TABLE__[(r3)>>2](i7); +} +} + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r4; + _ZN22btCompoundLeafCallback17ProcessChildShapeEP16btCollisionShapei(i7); + return; +} + +function _ZN28btCompoundCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+3)]; +if(!(r1 <1)) //_LBB252_5 +{ + r1 = heap32[(fp+1)]; + r2 = 0; +_3: while(true){ + r3 = heap32[(r0+5)]; + r4 = r2 << 2; + r3 = (r3 + r4)|0; + r3 = r3 >> 2; + r3 = heap32[(r3)]; +if(!(r3 ==0)) //_LBB252_4 +{ + r4 = r3 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+4)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r1; + __FUNCTION_TABLE__[(r4)>>2](i7); +} + r2 = (r2 + 1)|0; + r3 = heap32[(r0+3)]; + if(r3 >r2) //_LBB252_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + return; +} + +function _ZN28btCompoundCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; + var f30; +var __label__ = 0; + i7 = sp + -40;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heapU8[r0+28]; + r2 = heap32[(fp+1)]; + r3 = heap32[(fp+2)]; + r4 = r1 == 0 ? r2 : r3; + r5 = r4 >> 2; + r6 = heap32[(r5+48)]; + r7 = r6 >> 2; + r8 = heap32[(r7+1)]; + if(r8 ==31) //_LBB253_2 +{ + r0 = r0 >> 2; + r8 = heap32[(r0+3)]; +_3: do { + if(r8 >0) //_LBB253_4 +{ + r9 = heap32[(fp+3)]; + r10 = heap32[(fp+4)]; + r1 = r1 == 0 ? r3 : r2; + r2 = 0; + f0 = 1; +_5: while(true){ + r3 = (r2 * 20)|0; + r11 = heap32[(r7+6)]; + r3 = r3 << 2; + r3 = (r11 + r3)|0; + r3 = r3 >> 2; + f1 = heapFloat[(r3)]; + f2 = heapFloat[(r5+1)]; + f3 = heapFloat[(r3+4)]; + f4 = heapFloat[(r5+2)]; + f5 = heapFloat[(r3+1)]; + f6 = heapFloat[(r3+5)]; + f7 = f1*f2; + f8 = f3*f4; + f9 = heapFloat[(r3+8)]; + f10 = heapFloat[(r5+3)]; + f11 = heapFloat[(r5+10)]; + f12 = heapFloat[(r3+13)]; + f13 = heapFloat[(r5+6)]; + f14 = heapFloat[(r3+6)]; + f15 = heapFloat[(r5+9)]; + f16 = heapFloat[(r3+12)]; + f17 = heapFloat[(r5+5)]; + f18 = heapFloat[(r3+2)]; + f19 = heapFloat[(r3+14)]; + f20 = heapFloat[(r5+11)]; + f21 = heapFloat[(r3+10)]; + f22 = heapFloat[(r5+7)]; + f23 = heapFloat[(r3+9)]; + r3 = heap32[(r3+16)]; + f24 = f5*f2; + f25 = f6*f4; + f7 = f7+f8; + f8 = f9*f10; + f26 = heapFloat[(r5+16)]; + heapFloat[(fp+-1)] = f26; + f27 = heapFloat[(r5+15)]; + f28 = heapFloat[(r5+14)]; + f29 = heapFloat[(r5+13)]; + f26 = heapFloat[(r5+12)]; + heapFloat[(fp+-2)] = f26; + f26 = heapFloat[(r5+8)]; + heapFloat[(fp+-3)] = f26; + f26 = heapFloat[(r5+4)]; + heapFloat[(fp+-4)] = f26; + f30 = f18*f2; + f26 = f14*f4; + f24 = f24+f25; + f25 = f23*f10; + f7 = f7+f8; + f8 = f30+f26; + f26 = f21*f10; + f24 = f24+f25; + heapFloat[(r5+1)] = f7; + f7 = f1*f17; + f25 = f3*f13; + f8 = f8+f26; + heapFloat[(r5+2)] = f24; + heapFloat[(r5+3)] = f8; + f8 = f5*f17; + f24 = f6*f13; + f7 = f7+f25; + f25 = f9*f22; + f26 = f18*f17; + f30 = f14*f13; + f8 = f8+f24; + f24 = f23*f22; + f7 = f7+f25; + heap32[(r5+4)] = 0; + f25 = f26+f30; + f26 = f21*f22; + f8 = f8+f24; + heapFloat[(r5+5)] = f7; + f1 = f1*f15; + f3 = f3*f11; + f7 = f25+f26; + heapFloat[(r5+6)] = f8; + heapFloat[(r5+7)] = f7; + f5 = f5*f15; + f6 = f6*f11; + f1 = f1+f3; + f3 = f9*f20; + f7 = f18*f15; + f8 = f14*f11; + f5 = f5+f6; + f6 = f23*f20; + f1 = f1+f3; + heap32[(r5+8)] = 0; + f3 = f2*f16; + f9 = f4*f12; + f7 = f7+f8; + f8 = f21*f20; + f5 = f5+f6; + heapFloat[(r5+9)] = f1; + f1 = f17*f16; + f6 = f13*f12; + f3 = f3+f9; + f9 = f10*f19; + f7 = f7+f8; + heapFloat[(r5+10)] = f5; + f3 = f3+f9; + heapFloat[(r5+11)] = f7; + f5 = f15*f16; + f7 = f11*f12; + f1 = f1+f6; + f6 = f22*f19; + f1 = f1+f6; + f5 = f5+f7; + f6 = f20*f19; + f3 = f3+f29; + heap32[(r5+12)] = 0; + f5 = f5+f6; + f1 = f1+f28; + heapFloat[(r5+13)] = f3; + f3 = f5+f27; + heapFloat[(r5+14)] = f1; + heapFloat[(r5+15)] = f3; + heap32[(r5+16)] = 0; + heap32[(r5+48)] = r3; + r3 = heap32[(r0+5)]; + r11 = r2 << 2; + r3 = (r3 + r11)|0; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r11 = r3 >> 2; + r11 = heap32[(r11)]; + r11 = r11 >> 2; + r11 = heap32[(r11+3)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r1; + heap32[(g0+3)] = r9; + heap32[(g0+4)] = r10; + __FUNCTION_TABLE__[(r11)>>2](i7); + heap32[(r5+48)] = r6; + heapFloat[(r5+1)] = f2; + heapFloat[(r5+2)] = f4; + heapFloat[(r5+3)] = f10; + f26 = heapFloat[(fp+-4)]; + heapFloat[(r5+4)] = f26; + heapFloat[(r5+5)] = f17; + heapFloat[(r5+6)] = f13; + heapFloat[(r5+7)] = f22; + f26 = heapFloat[(fp+-3)]; + heapFloat[(r5+8)] = f26; + heapFloat[(r5+9)] = f15; + heapFloat[(r5+10)] = f11; + heapFloat[(r5+11)] = f20; + f26 = heapFloat[(fp+-2)]; + heapFloat[(r5+12)] = f26; + heapFloat[(r5+13)] = f29; + heapFloat[(r5+14)] = f28; + r2 = (r2 + 1)|0; + f0 = f_g0 < f0 ? f_g0 : f0; + heapFloat[(r5+15)] = f27; + f26 = heapFloat[(fp+-1)]; + heapFloat[(r5+16)] = f26; +if(!(r8 !=r2)) //_LBB253_5 +{ +break _3; +} +} +} +else{ + f0 = 1; +} +} while(0); + f_g0 = f0; + return; +} +else{ + r0 = _2E_str99; + r1 = _2E_str1100; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 308; + _assert(i7); +} +} + +function _Z15btTransformAabbRK9btVector3S1_fRK11btTransformRS_S5_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = r1 >> 2; + f0 = heapFloat[(r0)]; + f1 = heapFloat[(r1)]; + if(f0 <=f1) //_LBB254_2 +{ + f2 = heapFloat[(r0+1)]; + f3 = heapFloat[(r1+1)]; + if(f2 <=f3) //_LBB254_4 +{ + f4 = heapFloat[(r0+2)]; + f5 = heapFloat[(r1+2)]; + if(f4 <=f5) //_LBB254_6 +{ + f6 = heapFloat[(fp+2)]; + r0 = heap32[(fp+3)]; + r1 = heap32[(fp+4)]; + r2 = heap32[(fp+5)]; + f7 = f1-f0; + f8 = 0.5; + f9 = f3-f2; + f10 = f5-f4; + r0 = r0 >> 2; + f4 = f5+f4; + f2 = f3+f2; + f0 = f1+f0; + f1 = f7*f8; + f3 = f9*f8; + f5 = f10*f8; + f7 = heapFloat[(r0+10)]; + f1 = f1+f6; + f3 = f3+f6; + f5 = f5+f6; + f4 = f4*f8; + f2 = f2*f8; + f0 = f0*f8; + f6 = 0; + if(f7 > 2; + f1 = f1+f3; + f2 = f8*f5; + f3 = f4+f7; + f4 = f10+f11; + f5 = f12-f6; + f0 = f0+f9; + f1 = f1+f2; + f2 = f3-f4; + heapFloat[(r0)] = f5; + f5 = f0-f1; + heapFloat[(r0+1)] = f2; + heapFloat[(r0+2)] = f5; + r1 = r2 >> 2; + f2 = f12+f6; + heap32[(r0+3)] = 0; + f3 = f3+f4; + heapFloat[(r1)] = f2; + f0 = f0+f1; + heapFloat[(r1+1)] = f3; + heapFloat[(r1+2)] = f0; + heap32[(r1+3)] = 0; + return; +} +else{ + r0 = _2E_str5104; + r1 = _2E_str3102; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 199; + _assert(i7); +} +} +else{ + r0 = _2E_str4103; + r1 = _2E_str3102; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 198; + _assert(i7); +} +} +else{ + r0 = _2E_str2101; + r1 = _2E_str3102; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 197; + _assert(i7); +} +} + +function _ZN22btCompoundLeafCallback17ProcessChildShapeEP16btCollisionShapei(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; + var f30; +var __label__ = 0; + i7 = sp + -264;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + if(r0 >-1) //_LBB255_2 +{ + r1 = heap32[(fp)]; + r1 = r1 >> 2; + r2 = heap32[(r1+1)]; + r2 = r2 >> 2; + r3 = heap32[(r2+48)]; + r3 = r3 >> 2; + r4 = heap32[(r3+4)]; + if(r4 >r0) //_LBB255_4 +{ + r4 = heap32[(fp+1)]; + r3 = heap32[(r3+6)]; + r5 = (r0 * 80)|0; + r3 = (r3 + r5)|0; + r3 = r3 >> 2; + f0 = heapFloat[(r2+1)]; + f1 = heapFloat[(r3)]; + f2 = heapFloat[(r2+2)]; + f3 = heapFloat[(r3+4)]; + f4 = heapFloat[(r3+1)]; + f5 = heapFloat[(r3+5)]; + f6 = heapFloat[(r2+3)]; + f7 = heapFloat[(r3+8)]; + f8 = f1*f0; + f9 = f3*f2; + f10 = heapFloat[(r2+5)]; + f11 = heapFloat[(r2+6)]; + f12 = heapFloat[(r2+9)]; + f13 = heapFloat[(r3+12)]; + f14 = heapFloat[(r3+2)]; + f15 = heapFloat[(r2+10)]; + f16 = heapFloat[(r3+13)]; + f17 = heapFloat[(r3+6)]; + f18 = heapFloat[(r2+7)]; + f19 = heapFloat[(r3+14)]; + f20 = heapFloat[(r2+11)]; + f21 = heapFloat[(r3+10)]; + f22 = heapFloat[(r3+9)]; + f23 = heapFloat[(r2+4)]; + f24 = heapFloat[(r2+8)]; + heapFloat[(fp+-59)] = f24; + f24 = heapFloat[(r2+12)]; + heapFloat[(fp+-57)] = f24; + f24 = heapFloat[(r2+13)]; + f25 = heapFloat[(r2+14)]; + f26 = heapFloat[(r2+15)]; + f27 = heapFloat[(r2+16)]; + heapFloat[(fp+-58)] = f27; + f27 = heapFloat[(r2+17)]; + heapFloat[(fp+-42)] = f27; + f27 = heapFloat[(r2+18)]; + heapFloat[(fp+-41)] = f27; + f27 = heapFloat[(r2+19)]; + heapFloat[(fp+-44)] = f27; + f27 = heapFloat[(r2+20)]; + heapFloat[(fp+-43)] = f27; + f27 = heapFloat[(r2+21)]; + heapFloat[(fp+-46)] = f27; + f27 = heapFloat[(r2+22)]; + heapFloat[(fp+-45)] = f27; + f27 = heapFloat[(r2+23)]; + heapFloat[(fp+-48)] = f27; + f27 = heapFloat[(r2+24)]; + heapFloat[(fp+-47)] = f27; + f27 = heapFloat[(r2+25)]; + heapFloat[(fp+-50)] = f27; + f27 = heapFloat[(r2+26)]; + heapFloat[(fp+-49)] = f27; + f27 = heapFloat[(r2+27)]; + heapFloat[(fp+-52)] = f27; + f27 = heapFloat[(r2+28)]; + heapFloat[(fp+-51)] = f27; + f27 = heapFloat[(r2+29)]; + heapFloat[(fp+-54)] = f27; + f27 = heapFloat[(r2+30)]; + heapFloat[(fp+-53)] = f27; + f27 = heapFloat[(r2+31)]; + heapFloat[(fp+-56)] = f27; + f27 = heapFloat[(r2+32)]; + heapFloat[(fp+-55)] = f27; + f27 = f4*f0; + f28 = f5*f2; + f8 = f8+f9; + f9 = f7*f6; + r2 = sp + -96; + f29 = f14*f0; + f30 = f17*f2; + f27 = f27+f28; + f28 = f22*f6; + f8 = f8+f9; + r3 = r2 >> 2; + f9 = f29+f30; + f29 = f21*f6; + f27 = f27+f28; + heapFloat[(fp+-24)] = f8; + f8 = f1*f10; + f28 = f3*f11; + f9 = f9+f29; + heapFloat[(r3+1)] = f27; + heapFloat[(r3+2)] = f9; + f9 = f4*f10; + f27 = f5*f11; + f8 = f8+f28; + f28 = f7*f18; + f29 = f14*f10; + f30 = f17*f11; + f9 = f9+f27; + f27 = f22*f18; + f8 = f8+f28; + heap32[(r3+3)] = 0; + f28 = f29+f30; + f29 = f21*f18; + f9 = f9+f27; + heapFloat[(r3+4)] = f8; + f1 = f1*f12; + f3 = f3*f15; + f8 = f28+f29; + heapFloat[(r3+5)] = f9; + heapFloat[(r3+6)] = f8; + f4 = f4*f12; + f5 = f5*f15; + f1 = f1+f3; + f3 = f7*f20; + f7 = f14*f12; + f8 = f17*f15; + f4 = f4+f5; + f5 = f22*f20; + f1 = f1+f3; + heap32[(r3+7)] = 0; + f3 = f0*f13; + f9 = f2*f16; + f7 = f7+f8; + f8 = f21*f20; + f4 = f4+f5; + heapFloat[(r3+8)] = f1; + f1 = f10*f13; + f5 = f11*f16; + f3 = f3+f9; + f9 = f6*f19; + f7 = f7+f8; + heapFloat[(r3+9)] = f4; + f3 = f3+f9; + heapFloat[(r3+10)] = f7; + f4 = f12*f13; + f7 = f15*f16; + f1 = f1+f5; + f5 = f18*f19; + f1 = f1+f5; + f4 = f4+f7; + f5 = f20*f19; + f3 = f3+f24; + heap32[(r3+11)] = 0; + f4 = f4+f5; + f1 = f1+f25; + heapFloat[(r3+12)] = f3; + f3 = f4+f26; + heapFloat[(r3+13)] = f1; + heapFloat[(r3+14)] = f3; + r5 = r4 >> 2; + heap32[(r3+15)] = 0; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+2)]; + r6 = sp + -112; + r7 = sp + -128; + heap32[(g0)] = r4; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r6; + heap32[(g0+3)] = r7; + __FUNCTION_TABLE__[(r5)>>2](i7); + r2 = heap32[(r1+2)]; + r5 = r2 >> 2; + r5 = heap32[(r5+48)]; + r8 = r5 >> 2; + r8 = heap32[(r8)]; + r8 = r8 >> 2; + r8 = heap32[(r8+2)]; + r2 = (r2 + 4)|0; + r9 = sp + -144; + r10 = sp + -160; + heap32[(g0)] = r5; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r9; + heap32[(g0+3)] = r10; + __FUNCTION_TABLE__[(r8)>>2](i7); + f1 = heapFloat[(fp+-28)]; + f3 = heapFloat[(fp+-40)]; + if(f1 >f3) //_LBB255_7 +{ +__label__ = 7; +} +else{ + f1 = heapFloat[(fp+-32)]; + f3 = heapFloat[(fp+-36)]; + if(f1 > 2; + r8 = r10 >> 2; + f1 = heapFloat[(r5+2)]; + f3 = heapFloat[(r8+2)]; + if(f1 >f3) //_LBB255_11 +{ +__label__ = 10; +} +else{ + r11 = r7 >> 2; + r12 = r9 >> 2; + f1 = heapFloat[(r11+2)]; + f3 = heapFloat[(r12+2)]; + if(f1 f3)) //_LBB255_24 +{ + r5 = r7 >> 2; + r8 = r9 >> 2; + f1 = heapFloat[(r5+1)]; + f3 = heapFloat[(r8+1)]; +if(!(f1 > 2; + heap32[(r2+1)] = heap32[(fp+-24)]; + heap32[(r2+2)] = heap32[(r3+1)]; + heap32[(r2+3)] = heap32[(r3+2)]; + heap32[(r2+4)] = heap32[(r3+3)]; + heap32[(r2+5)] = heap32[(r3+4)]; + heap32[(r2+6)] = heap32[(r3+5)]; + heap32[(r2+7)] = heap32[(r3+6)]; + heap32[(r2+8)] = heap32[(r3+7)]; + heap32[(r2+9)] = heap32[(r3+8)]; + heap32[(r2+10)] = heap32[(r3+9)]; + heap32[(r2+11)] = heap32[(r3+10)]; + heap32[(r2+12)] = heap32[(r3+11)]; + heap32[(r2+13)] = heap32[(r3+12)]; + heap32[(r2+14)] = heap32[(r3+13)]; + heap32[(r2+15)] = heap32[(r3+14)]; + heap32[(r2+16)] = heap32[(r3+15)]; + r2 = heap32[(r1+1)]; + r2 = r2 >> 2; + heap32[(r2+17)] = heap32[(fp+-24)]; + heap32[(r2+18)] = heap32[(r3+1)]; + heap32[(r2+19)] = heap32[(r3+2)]; + heap32[(r2+20)] = heap32[(r3+3)]; + heap32[(r2+21)] = heap32[(r3+4)]; + heap32[(r2+22)] = heap32[(r3+5)]; + heap32[(r2+23)] = heap32[(r3+6)]; + heap32[(r2+24)] = heap32[(r3+7)]; + heap32[(r2+25)] = heap32[(r3+8)]; + heap32[(r2+26)] = heap32[(r3+9)]; + heap32[(r2+27)] = heap32[(r3+10)]; + heap32[(r2+28)] = heap32[(r3+11)]; + heap32[(r2+29)] = heap32[(r3+12)]; + heap32[(r2+30)] = heap32[(r3+13)]; + heap32[(r2+31)] = heap32[(r3+14)]; + heap32[(r2+32)] = heap32[(r3+15)]; + r2 = heap32[(r1+1)]; + r2 = r2 >> 2; + r3 = heap32[(r2+48)]; + heap32[(r2+48)] = r4; + r2 = heap32[(r1+6)]; + r4 = r0 << 2; + r2 = (r2 + r4)|0; + r2 = r2 >> 2; + r5 = heap32[(r2)]; +if(!(r5 !=0)) //_LBB255_17 +{ + r5 = heap32[(r1+3)]; + r8 = r5 >> 2; + r8 = heap32[(r8)]; + r8 = r8 >> 2; + r8 = heap32[(r8+2)]; + r11 = heap32[(r1+7)]; + r12 = heap32[(r1+2)]; + r13 = heap32[(r1+1)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = r13; + heap32[(g0+2)] = r12; + heap32[(g0+3)] = r11; + __FUNCTION_TABLE__[(r8)>>2](i7); + heap32[(r2)] = r_g0; +} + r2 = heap32[(r1+5)]; + r5 = r2 >> 2; + r8 = heap32[(r5)]; + r5 = heap32[(r5+34)]; + r11 = heap32[(r1+1)]; + if(r5 !=r11) //_LBB255_19 +{ + r5 = r8 >> 2; + r5 = heap32[(r5+3)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = -1; + heap32[(g0+2)] = r0; + __FUNCTION_TABLE__[(r5)>>2](i7); +} +else{ + r8 = r8 >> 2; + r8 = heap32[(r8+2)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = -1; + heap32[(g0+2)] = r0; + __FUNCTION_TABLE__[(r8)>>2](i7); +} + r0 = heap32[(r1+6)]; + r0 = (r0 + r4)|0; + r0 = r0 >> 2; + r0 = heap32[(r0)]; + r2 = r0 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+2)]; + r4 = heap32[(r1+5)]; + r5 = heap32[(r1+4)]; + r8 = heap32[(r1+2)]; + r11 = heap32[(r1+1)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r11; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r5; + heap32[(g0+4)] = r4; + __FUNCTION_TABLE__[(r2)>>2](i7); + r0 = heap32[(r1+4)]; + r0 = r0 >> 2; + r0 = heap32[(r0+5)]; +if(!(r0 ==0)) //_LBB255_23 +{ + r2 = r0 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+12)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r0 = r_g0 & 2; +if(!(r0 ==0)) //_LBB255_23 +{ + r0 = heap32[(r1+4)]; + r0 = r0 >> 2; + r2 = heap32[(r0+5)]; + r2 = r2 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+13)]; + r4 = sp + -32; + r5 = r4 >> 2; + heap32[(fp+-8)] = 1065353216; + heap32[(r5+1)] = 1065353216; + heap32[(r5+2)] = 1065353216; + heap32[(r5+3)] = 0; + r0 = heap32[(r0+5)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r7; + heap32[(g0+3)] = r4; + __FUNCTION_TABLE__[(r2)>>2](i7); + r0 = heap32[(r1+4)]; + r0 = r0 >> 2; + r2 = heap32[(r0+5)]; + r2 = r2 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+13)]; + r4 = sp + -16; + r5 = r4 >> 2; + heap32[(fp+-4)] = 1065353216; + heap32[(r5+1)] = 1065353216; + heap32[(r5+2)] = 1065353216; + heap32[(r5+3)] = 0; + r0 = heap32[(r0+5)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r10; + heap32[(g0+3)] = r4; + __FUNCTION_TABLE__[(r2)>>2](i7); +} +} + r0 = heap32[(r1+1)]; + r0 = r0 >> 2; + heap32[(r0+48)] = r3; + r0 = heap32[(r1+1)]; + r0 = r0 >> 2; + heapFloat[(r0+1)] = f0; + heapFloat[(r0+2)] = f2; + heapFloat[(r0+3)] = f6; + heapFloat[(r0+4)] = f23; + heapFloat[(r0+5)] = f10; + heapFloat[(r0+6)] = f11; + heapFloat[(r0+7)] = f18; + f0 = heapFloat[(fp+-59)]; + heapFloat[(r0+8)] = f0; + heapFloat[(r0+9)] = f12; + heapFloat[(r0+10)] = f15; + heapFloat[(r0+11)] = f20; + f0 = heapFloat[(fp+-57)]; + heapFloat[(r0+12)] = f0; + heapFloat[(r0+13)] = f24; + heapFloat[(r0+14)] = f25; + heapFloat[(r0+15)] = f26; + f0 = heapFloat[(fp+-58)]; + heapFloat[(r0+16)] = f0; + r0 = heap32[(r1+1)]; + r0 = r0 >> 2; + f0 = heapFloat[(fp+-42)]; + heapFloat[(r0+17)] = f0; + f0 = heapFloat[(fp+-41)]; + heapFloat[(r0+18)] = f0; + f0 = heapFloat[(fp+-44)]; + heapFloat[(r0+19)] = f0; + f0 = heapFloat[(fp+-43)]; + heapFloat[(r0+20)] = f0; + f0 = heapFloat[(fp+-46)]; + heapFloat[(r0+21)] = f0; + f0 = heapFloat[(fp+-45)]; + heapFloat[(r0+22)] = f0; + f0 = heapFloat[(fp+-48)]; + heapFloat[(r0+23)] = f0; + f0 = heapFloat[(fp+-47)]; + heapFloat[(r0+24)] = f0; + f0 = heapFloat[(fp+-50)]; + heapFloat[(r0+25)] = f0; + f0 = heapFloat[(fp+-49)]; + heapFloat[(r0+26)] = f0; + f0 = heapFloat[(fp+-52)]; + heapFloat[(r0+27)] = f0; + f0 = heapFloat[(fp+-51)]; + heapFloat[(r0+28)] = f0; + f0 = heapFloat[(fp+-54)]; + heapFloat[(r0+29)] = f0; + f0 = heapFloat[(fp+-53)]; + heapFloat[(r0+30)] = f0; + f0 = heapFloat[(fp+-56)]; + heapFloat[(r0+31)] = f0; + f0 = heapFloat[(fp+-55)]; + heapFloat[(r0+32)] = f0; +} +} +} + return; +} +else{ + r0 = _2E_str7106; + r1 = _2E_str1100; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 119; + _assert(i7); +} +} +else{ + r0 = _2E_str6105; + r1 = _2E_str1100; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 117; + _assert(i7); +} +} + +function _ZN28btCompoundCollisionAlgorithm26preallocateChildAlgorithmsEP17btCollisionObjectS1_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heapU8[r0+28]; + r2 = heap32[(fp+1)]; + r3 = heap32[(fp+2)]; + r4 = r1 == 0 ? r2 : r3; + r5 = r4 >> 2; + r6 = heap32[(r5+48)]; + r6 = r6 >> 2; + r7 = heap32[(r6+1)]; + if(r7 ==31) //_LBB256_2 +{ + r7 = r0 >> 2; + r8 = heap32[(r7+3)]; + r9 = heap32[(r6+4)]; +_3: do { +if(!(r8 >r9)) //_LBB256_21 +{ +if(!(r8 >=r9)) //_LBB256_21 +{ + r10 = heap32[(r7+4)]; +if(!(r10 >=r9)) //_LBB256_20 +{ + if(r9 !=0) //_LBB256_7 +{ + r10 = gNumAlignedAllocs; + r10 = r10 >> 2; + r11 = heap32[(r10)]; + r12 = r9 << 2; + r11 = (r11 + 1)|0; + r12 = r12 | 3; + heap32[(r10)] = r11; + r10 = (r12 + 16)|0; + heap32[(g0)] = r10; + malloc(i7); + r10 = r_g0; + if(r10 !=0) //_LBB256_9 +{ + r11 = 0; + r12 = (r10 + 4)|0; + r11 = (r11 - r12)|0; + r11 = r11 & 15; + r11 = (r10 + r11)|0; + r12 = (r11 + 4)|0; + r11 = r11 >> 2; + heap32[(r11)] = r10; + r10 = r12; +} +} +else{ + r10 = 0; +} + r11 = (r0 + 20)|0; + if(r8 <1) //_LBB256_12 +{ + r12 = r11 >> 2; + r13 = heap32[(r12)]; +} +else{ + r12 = 0; +_16: while(true){ + r13 = r11 >> 2; + r13 = heap32[(r13)]; + r14 = r12 << 2; + r15 = (r13 + r14)|0; + r15 = r15 >> 2; + r14 = (r10 + r14)|0; + r15 = heap32[(r15)]; + r12 = (r12 + 1)|0; + r14 = r14 >> 2; + heap32[(r14)] = r15; +if(!(r8 !=r12)) //_LBB256_13 +{ +break _16; +} +} + r11 = (r0 + 20)|0; +} +if(!(r13 ==0)) //_LBB256_19 +{ + r12 = heapU8[r0+24]; +if(!(r12 ==0)) //_LBB256_18 +{ + r12 = gNumAlignedFree; + r12 = r12 >> 2; + r14 = heap32[(r12)]; + r14 = (r14 + 1)|0; + r13 = r13 >> 2; + heap32[(r12)] = r14; + r12 = heap32[(r13+-1)]; + heap32[(g0)] = r12; + free(i7); +} + r12 = r11 >> 2; + heap32[(r12)] = 0; +} + r12 = 1; + r11 = r11 >> 2; + heap8[r0+24] = r12; + heap32[(r11)] = r10; + heap32[(r7+4)] = r9; + if(r8 >=r9) //_LBB256_21 +{ +break _3; +} +} +_26: while(true){ + r0 = r8 << 2; + r10 = heap32[(r7+5)]; + r0 = (r10 + r0)|0; + r8 = (r8 + 1)|0; + r0 = r0 >> 2; + heap32[(r0)] = 0; +if(!(r9 !=r8)) //_LBB256_20 +{ +break _3; +} +} +} +} +} while(0); + heap32[(r7+3)] = r9; +_29: do { +if(!(r9 <1)) //_LBB256_27 +{ + r0 = r1 == 0 ? r3 : r2; + r1 = 0; +_31: while(true){ + r2 = heap32[(r6+16)]; + if(r2 ==0) //_LBB256_25 +{ + r2 = (r1 * 20)|0; + r2 = r2 << 2; + r3 = heap32[(r6+6)]; + r2 = (r3 + r2)|0; + r2 = r2 >> 2; + r3 = heap32[(r5+48)]; + r2 = heap32[(r2+16)]; + heap32[(r5+48)] = r2; + r2 = heap32[(r7+1)]; + r8 = r2 >> 2; + r8 = heap32[(r8)]; + r8 = r8 >> 2; + r8 = heap32[(r8+2)]; + r10 = heap32[(r7+8)]; + r11 = heap32[(r7+5)]; + r12 = r1 << 2; + heap32[(g0)] = r2; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r0; + heap32[(g0+3)] = r10; + r2 = (r11 + r12)|0; + r2 = r2 >> 2; + __FUNCTION_TABLE__[(r8)>>2](i7); + heap32[(r2)] = r_g0; + heap32[(r5+48)] = r3; +} +else{ + r2 = r1 << 2; + r3 = heap32[(r7+5)]; + r2 = (r3 + r2)|0; + r2 = r2 >> 2; + heap32[(r2)] = 0; +} + r1 = (r1 + 1)|0; +if(!(r9 !=r1)) //_LBB256_23 +{ +break _29; +} +} +} +} while(0); + return; +} +else{ + r0 = _2E_str99; + r1 = _2E_str1100; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 44; + _assert(i7); +} +} + +function _ZN28btCompoundCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; +var __label__ = 0; + i7 = sp + -328;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r3 = heapU8[r0+28]; + r4 = r3 == 0 ? r1 : r2; + r5 = r4 >> 2; + r6 = heap32[(r5+48)]; + r6 = r6 >> 2; + r7 = heap32[(r6+1)]; + if(r7 ==31) //_LBB257_2 +{ + r7 = r0 >> 2; + r8 = heap32[(r6+17)]; + r9 = heap32[(r7+10)]; +if(!(r8 ==r9)) //_LBB257_9 +{ + r8 = heap32[(r7+3)]; +if(!(r8 <1)) //_LBB257_8 +{ + r9 = 0; +_7: while(true){ + r10 = heap32[(r7+5)]; + r11 = r9 << 2; + r10 = (r10 + r11)|0; + r10 = r10 >> 2; + r10 = heap32[(r10)]; +if(!(r10 ==0)) //_LBB257_7 +{ + r12 = r10 >> 2; + r12 = heap32[(r12)]; + r12 = r12 >> 2; + r12 = heap32[(r12)]; + heap32[(g0)] = r10; + __FUNCTION_TABLE__[(r12)>>2](i7); + r10 = heap32[(r7+1)]; + r12 = r10 >> 2; + r13 = heap32[(r7+5)]; + r11 = (r13 + r11)|0; + r12 = heap32[(r12)]; + r12 = r12 >> 2; + r11 = r11 >> 2; + r12 = heap32[(r12+13)]; + r11 = heap32[(r11)]; + heap32[(g0)] = r10; + heap32[(g0+1)] = r11; + __FUNCTION_TABLE__[(r12)>>2](i7); +} + r9 = (r9 + 1)|0; +if(!(r8 !=r9)) //_LBB257_5 +{ +break _7; +} +} +} + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r2; + _ZN28btCompoundCollisionAlgorithm26preallocateChildAlgorithmsEP17btCollisionObjectS1_(i7); +} + r0 = heap32[(fp+3)]; + r8 = heap32[(fp+4)]; + r1 = r3 == 0 ? r2 : r1; + r2 = _ZTV22btCompoundLeafCallback; + r3 = heap32[(r6+16)]; + r9 = heap32[(r7+8)]; + r10 = heap32[(r7+5)]; + r11 = heap32[(r7+1)]; + r12 = sp + -32; + r2 = (r2 + 8)|0; + r13 = r12 >> 2; + heap32[(fp+-8)] = r2; + heap32[(r13+1)] = r4; + heap32[(r13+2)] = r1; + heap32[(r13+3)] = r11; + heap32[(r13+4)] = r0; + heap32[(r13+5)] = r8; + heap32[(r13+6)] = r10; + r0 = sp + -56; + r2 = 1; + heap32[(r13+7)] = r9; + r4 = r0 >> 2; + heap8[sp+-40] = r2; + heap32[(r4+3)] = 0; + r9 = (r8 + 72)|0; + r10 = (r8 + 8)|0; + r11 = 0; + heap32[(r4+1)] = 0; + heap32[(r4+2)] = 0; +_14: while(true){ + r13 = heap32[(r7+3)]; + if(r13 >r11) //_LBB257_10 +{ + r13 = heap32[(r7+5)]; + r14 = r11 << 2; + r13 = (r13 + r14)|0; + r13 = r13 >> 2; + r13 = heap32[(r13)]; +if(!(r13 ==0)) //_LBB257_27 +{ + r14 = r13 >> 2; + r14 = heap32[(r14)]; + r14 = r14 >> 2; + r14 = heap32[(r14+4)]; + heap32[(g0)] = r13; + heap32[(g0+1)] = r0; + r13 = 0; + __FUNCTION_TABLE__[(r14)>>2](i7); +_19: while(true){ + r14 = heap32[(r4+3)]; + r15 = heap32[(r4+1)]; + if(r15 >r13) //_LBB257_12 +{ + r15 = r13 << 2; + r14 = (r14 + r15)|0; + r14 = r14 >> 2; + r14 = heap32[(r14)]; + r15 = r14 >> 2; + r16 = heap32[(r15+279)]; +if(!(r16 ==0)) //_LBB257_20 +{ + r16 = r8 >> 2; + heap32[(r16+1)] = r14; + if(r14 !=0) //_LBB257_15 +{ + r17 = heap32[(r15+279)]; +if(!(r17 ==0)) //_LBB257_19 +{ + r15 = heap32[(r15+277)]; + r17 = heap32[(r16+34)]; + if(r15 ==r17) //_LBB257_18 +{ + heap32[(g0)] = r14; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r9; + _ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7); +} +else{ + heap32[(g0)] = r14; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r10; + _ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7); +} +} + heap32[(r16+1)] = 0; +} +else{ +__label__ = 14; +break _14; +} +} + r13 = (r13 + 1)|0; +} +else{ +break _19; +} +} +if(!(r14 ==0)) //_LBB257_26 +{ + r13 = heapU8[sp+-40]; +if(!(r13 ==0)) //_LBB257_25 +{ + r13 = gNumAlignedFree; + r13 = r13 >> 2; + r15 = heap32[(r13)]; + r15 = (r15 + 1)|0; + r14 = r14 >> 2; + heap32[(r13)] = r15; + r13 = heap32[(r14+-1)]; + heap32[(g0)] = r13; + free(i7); +} + heap32[(r4+3)] = 0; +} + r13 = 1; + heap8[sp+-40] = r13; + heap32[(r4+3)] = 0; + heap32[(r4+1)] = 0; + heap32[(r4+2)] = 0; +} + r11 = (r11 + 1)|0; +} +else{ +__label__ = 29; +break _14; +} +} +switch(__label__ ){//multiple entries +case 29: + heap8[sp+-40] = r2; + heap32[(r4+3)] = 0; + heap32[(r4+1)] = 0; + heap32[(r4+2)] = 0; +_42: do { + if(r3 ==0) //_LBB257_31 +{ + if(r13 <1) //_LBB257_50 +{ +__label__ = 49; +} +else{ + r0 = 0; +_45: while(true){ + r3 = (r0 * 20)|0; + r4 = heap32[(r6+6)]; + r3 = r3 << 2; + r3 = (r4 + r3)|0; + r3 = r3 >> 2; + r3 = heap32[(r3+16)]; + heap32[(g0)] = r12; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r0; + r0 = (r0 + 1)|0; + _ZN22btCompoundLeafCallback17ProcessChildShapeEP16btCollisionShapei(i7); +if(!(r13 !=r0)) //_LBB257_33 +{ +__label__ = 34; +break _42; +} +} +} +} +else{ + r13 = r1 >> 2; + f0 = heapFloat[(r5+1)]; + f1 = heapFloat[(r13+1)]; + f2 = heapFloat[(r5+5)]; + f3 = heapFloat[(r13+5)]; + f4 = heapFloat[(r13+2)]; + f5 = heapFloat[(r13+6)]; + f6 = f1*f0; + f7 = f3*f2; + f8 = heapFloat[(r5+9)]; + f9 = heapFloat[(r13+9)]; + f10 = heapFloat[(r5+2)]; + f11 = heapFloat[(r5+6)]; + f12 = heapFloat[(r5+3)]; + f13 = heapFloat[(r13+13)]; + f14 = heapFloat[(r13+3)]; + f15 = heapFloat[(r5+7)]; + f16 = heapFloat[(r5+14)]; + f17 = heapFloat[(r13+14)]; + f18 = heapFloat[(r13+7)]; + f19 = heapFloat[(r5+10)]; + f20 = heapFloat[(r5+15)]; + f21 = heapFloat[(r5+11)]; + f22 = heapFloat[(r13+15)]; + f23 = heapFloat[(r13+11)]; + f24 = heapFloat[(r13+10)]; + f25 = heapFloat[(r5+13)]; + f26 = f4*f0; + f27 = f5*f2; + f6 = f6+f7; + f7 = f9*f8; + r0 = sp + -152; + f28 = f14*f0; + f29 = f18*f2; + f26 = f26+f27; + f27 = f24*f8; + f6 = f6+f7; + r4 = r0 >> 2; + f7 = f28+f29; + f28 = f23*f8; + f26 = f26+f27; + heapFloat[(fp+-38)] = f6; + f6 = f1*f10; + f27 = f3*f11; + f7 = f7+f28; + heapFloat[(r4+1)] = f26; + heapFloat[(r4+2)] = f7; + f7 = f4*f10; + f26 = f5*f11; + f6 = f6+f27; + f27 = f9*f19; + f28 = f14*f10; + f29 = f18*f11; + f7 = f7+f26; + f26 = f24*f19; + f6 = f6+f27; + heap32[(r4+3)] = 0; + f27 = f28+f29; + f28 = f23*f19; + f7 = f7+f26; + heapFloat[(r4+4)] = f6; + f1 = f1*f12; + f3 = f3*f15; + f6 = f27+f28; + heapFloat[(r4+5)] = f7; + heapFloat[(r4+6)] = f6; + f4 = f4*f12; + f5 = f5*f15; + f1 = f1+f3; + f3 = f9*f21; + f6 = -f25; + f7 = f14*f12; + f9 = f18*f15; + f4 = f4+f5; + f5 = f24*f21; + f1 = f1+f3; + heap32[(r4+7)] = 0; + f3 = f0*f13; + f14 = f2*f17; + f0 = f0*f6; + f2 = f2*f16; + f7 = f7+f9; + f9 = f23*f21; + f4 = f4+f5; + heapFloat[(r4+8)] = f1; + f1 = f10*f13; + f5 = f11*f17; + f10 = f10*f6; + f11 = f11*f16; + f3 = f3+f14; + f14 = f8*f22; + f0 = f0-f2; + f2 = f8*f20; + f7 = f7+f9; + heapFloat[(r4+9)] = f4; + heapFloat[(r4+10)] = f7; + f4 = f12*f13; + f7 = f15*f17; + f6 = f12*f6; + f8 = f15*f16; + f1 = f1+f5; + f5 = f19*f22; + f9 = f10-f11; + f10 = f19*f20; + f3 = f3+f14; + f0 = f0-f2; + f2 = f4+f7; + f4 = f21*f22; + f6 = f6-f8; + f7 = f21*f20; + f1 = f1+f5; + f5 = f9-f10; + f0 = f3+f0; + heap32[(r4+11)] = 0; + f2 = f2+f4; + f3 = f6-f7; + f1 = f1+f5; + heapFloat[(r4+12)] = f0; + f0 = f2+f3; + heapFloat[(r4+13)] = f1; + heapFloat[(r4+14)] = f0; + heap32[(r4+15)] = 0; + r13 = heap32[(r13+48)]; + r4 = r13 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+2)]; + r8 = sp + -72; + r9 = sp + -88; + heap32[(g0)] = r13; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r9; + r13 = sp + -184; + __FUNCTION_TABLE__[(r4)>>2](i7); + r0 = r13 >> 2; + r4 = r8 >> 2; + heap32[(fp+-46)] = heap32[(fp+-18)]; + heap32[(r0+1)] = heap32[(r4+1)]; + heap32[(r0+2)] = heap32[(r4+2)]; + heap32[(r0+3)] = heap32[(r4+3)]; + r4 = r9 >> 2; + heap32[(r0+4)] = heap32[(fp+-22)]; + heap32[(r0+5)] = heap32[(r4+1)]; + heap32[(r0+6)] = heap32[(r4+2)]; + r3 = r3 >> 2; + heap32[(r0+7)] = heap32[(r4+3)]; + r0 = heap32[(r3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r13; + heap32[(g0+2)] = r12; + _ZN6btDbvt9collideTVEPK10btDbvtNodeRK12btDbvtAabbMmRNS_8ICollideE(i7); +__label__ = 34; +} +} while(0); +_48: do { +if (__label__ == 34){ + r0 = heap32[(r7+3)]; +if(!(r0 <1)) //_LBB257_50 +{ + r3 = 0; + r4 = (r1 + 4)|0; + r0 = (r3 - r0)|0; +_51: while(true){ + r8 = heap32[(r7+5)]; + r9 = r3 << 2; + r8 = (r8 - r9)|0; + r8 = r8 >> 2; + r8 = heap32[(r8)]; +_53: do { +if(!(r8 ==0)) //_LBB257_49 +{ + r8 = (r3 * -20)|0; + r10 = heap32[(r6+6)]; + r8 = r8 << 2; + r8 = (r10 + r8)|0; + r8 = r8 >> 2; + f0 = heapFloat[(r5+1)]; + f1 = heapFloat[(r8)]; + f2 = heapFloat[(r5+2)]; + f3 = heapFloat[(r8+4)]; + f4 = heapFloat[(r8+1)]; + f5 = heapFloat[(r8+5)]; + f6 = f1*f0; + f7 = f3*f2; + f8 = heapFloat[(r5+3)]; + f9 = heapFloat[(r8+8)]; + f10 = heapFloat[(r5+5)]; + f11 = heapFloat[(r5+6)]; + f12 = heapFloat[(r5+9)]; + f13 = heapFloat[(r8+12)]; + f14 = heapFloat[(r8+2)]; + f15 = heapFloat[(r5+10)]; + f16 = heapFloat[(r8+13)]; + f17 = heapFloat[(r8+6)]; + r10 = heap32[(r8+16)]; + f18 = heapFloat[(r5+7)]; + f19 = heapFloat[(r8+14)]; + f20 = heapFloat[(r5+11)]; + f21 = heapFloat[(r8+10)]; + f22 = heapFloat[(r8+9)]; + f23 = f4*f0; + f24 = f5*f2; + f6 = f6+f7; + f7 = f9*f8; + f25 = heapFloat[(r5+13)]; + f26 = heapFloat[(r5+14)]; + f27 = heapFloat[(r5+15)]; + r8 = sp + -248; + f28 = f14*f0; + f29 = f17*f2; + f23 = f23+f24; + f24 = f22*f8; + f6 = f6+f7; + r11 = r8 >> 2; + f7 = f28+f29; + f28 = f21*f8; + f23 = f23+f24; + heapFloat[(fp+-62)] = f6; + f6 = f1*f10; + f24 = f3*f11; + f7 = f7+f28; + heapFloat[(r11+1)] = f23; + heapFloat[(r11+2)] = f7; + f7 = f4*f10; + f23 = f5*f11; + f6 = f6+f24; + f24 = f9*f18; + f28 = f14*f10; + f29 = f17*f11; + f7 = f7+f23; + f23 = f22*f18; + f6 = f6+f24; + heap32[(r11+3)] = 0; + f24 = f28+f29; + f28 = f21*f18; + f7 = f7+f23; + heapFloat[(r11+4)] = f6; + f1 = f1*f12; + f3 = f3*f15; + f6 = f24+f28; + heapFloat[(r11+5)] = f7; + heapFloat[(r11+6)] = f6; + f4 = f4*f12; + f5 = f5*f15; + f1 = f1+f3; + f3 = f9*f20; + f6 = f14*f12; + f7 = f17*f15; + f4 = f4+f5; + f5 = f22*f20; + f1 = f1+f3; + heap32[(r11+7)] = 0; + f0 = f0*f13; + f2 = f2*f16; + f3 = f6+f7; + f6 = f21*f20; + f4 = f4+f5; + heapFloat[(r11+8)] = f1; + f1 = f10*f13; + f5 = f11*f16; + f0 = f0+f2; + f2 = f8*f19; + f3 = f3+f6; + heapFloat[(r11+9)] = f4; + f0 = f0+f2; + heapFloat[(r11+10)] = f3; + f2 = f12*f13; + f3 = f15*f16; + f1 = f1+f5; + f4 = f18*f19; + f1 = f1+f4; + f2 = f2+f3; + f3 = f20*f19; + f0 = f0+f25; + heap32[(r11+11)] = 0; + f2 = f2+f3; + f1 = f1+f26; + heapFloat[(r11+12)] = f0; + f0 = f2+f27; + heapFloat[(r11+13)] = f1; + heapFloat[(r11+14)] = f0; + r12 = r10 >> 2; + heap32[(r11+15)] = 0; + r11 = heap32[(r12)]; + r11 = r11 >> 2; + r11 = heap32[(r11+2)]; + r12 = sp + -264; + r13 = sp + -280; + heap32[(g0)] = r10; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r12; + heap32[(g0+3)] = r13; + __FUNCTION_TABLE__[(r11)>>2](i7); + r8 = r1 >> 2; + r8 = heap32[(r8+48)]; + r10 = r8 >> 2; + r10 = heap32[(r10)]; + r10 = r10 >> 2; + r10 = heap32[(r10+2)]; + r11 = sp + -296; + r14 = sp + -312; + heap32[(g0)] = r8; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r11; + heap32[(g0+3)] = r14; + __FUNCTION_TABLE__[(r10)>>2](i7); + f0 = heapFloat[(fp+-66)]; + f1 = heapFloat[(fp+-78)]; + if(f0 >f1) //_LBB257_40 +{ +__label__ = 40; +} +else{ + f0 = heapFloat[(fp+-70)]; + f1 = heapFloat[(fp+-74)]; + if(f0 > 2; + r12 = r14 >> 2; + f0 = heapFloat[(r10+2)]; + f1 = heapFloat[(r12+2)]; + if(f0 >f1) //_LBB257_44 +{ +__label__ = 43; +} +else{ + r14 = r13 >> 2; + r15 = r11 >> 2; + f0 = heapFloat[(r14+2)]; + f1 = heapFloat[(r15+2)]; + if(f0 f1)) //_LBB257_48 +{ + r10 = r13 >> 2; + r11 = r11 >> 2; + f0 = heapFloat[(r10+1)]; + f1 = heapFloat[(r11+1)]; +if(!(f0 > 2; + r8 = heap32[(r8)]; + r10 = r8 >> 2; + r10 = heap32[(r10)]; + r10 = r10 >> 2; + r10 = heap32[(r10)]; + heap32[(g0)] = r8; + __FUNCTION_TABLE__[(r10)>>2](i7); + r8 = heap32[(r7+1)]; + r10 = r8 >> 2; + r11 = heap32[(r7+5)]; + r11 = (r11 - r9)|0; + r10 = heap32[(r10)]; + r10 = r10 >> 2; + r11 = r11 >> 2; + r10 = heap32[(r10+13)]; + r11 = heap32[(r11)]; + heap32[(g0)] = r8; + heap32[(g0+1)] = r11; + __FUNCTION_TABLE__[(r10)>>2](i7); + r8 = heap32[(r7+5)]; + r8 = (r8 - r9)|0; + r8 = r8 >> 2; + heap32[(r8)] = 0; +} +} while(0); + r3 = (r3 + -1)|0; +if(!(r0 !=r3)) //_LBB257_36 +{ +break _48; +} +} +} +} +} while(0); + return; +break; +case 14: + r14 = _2E_str59; + r0 = _2E_str160; + heap32[(g0)] = r14; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = 101; + _assert(i7); +break; +} +} +else{ + r0 = _2E_str99; + r1 = _2E_str1100; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 199; + _assert(i7); +} +} + +function _ZN28btCompoundCollisionAlgorithmD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV28btCompoundCollisionAlgorithm; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+3)]; +if(!(r1 <1)) //_LBB258_5 +{ + r3 = 0; +_3: while(true){ + r4 = heap32[(r2+5)]; + r5 = r3 << 2; + r4 = (r4 + r5)|0; + r4 = r4 >> 2; + r4 = heap32[(r4)]; +if(!(r4 ==0)) //_LBB258_4 +{ + r6 = r4 >> 2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6)]; + heap32[(g0)] = r4; + __FUNCTION_TABLE__[(r6)>>2](i7); + r4 = heap32[(r2+1)]; + r6 = r4 >> 2; + r7 = heap32[(r2+5)]; + r5 = (r7 + r5)|0; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r5 = r5 >> 2; + r6 = heap32[(r6+13)]; + r5 = heap32[(r5)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r5; + __FUNCTION_TABLE__[(r6)>>2](i7); +} + r3 = (r3 + 1)|0; + if(r1 !=r3) //_LBB258_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + r1 = heap32[(r2+5)]; +if(!(r1 ==0)) //_LBB258_9 +{ + r3 = heapU8[r0+24]; +if(!(r3 ==0)) //_LBB258_8 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+5)] = 0; +} + r1 = 1; + heap8[r0+24] = r1; + heap32[(r2+5)] = 0; + r1 = _ZTV30btActivatingCollisionAlgorithm; + heap32[(r2+3)] = 0; + r1 = (r1 + 8)|0; + heap32[(r2+4)] = 0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN28btCompoundCollisionAlgorithmD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV28btCompoundCollisionAlgorithm; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+3)]; +if(!(r1 <1)) //_LBB259_5 +{ + r3 = 0; +_3: while(true){ + r4 = heap32[(r2+5)]; + r5 = r3 << 2; + r4 = (r4 + r5)|0; + r4 = r4 >> 2; + r4 = heap32[(r4)]; +if(!(r4 ==0)) //_LBB259_4 +{ + r6 = r4 >> 2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6)]; + heap32[(g0)] = r4; + __FUNCTION_TABLE__[(r6)>>2](i7); + r4 = heap32[(r2+1)]; + r6 = r4 >> 2; + r7 = heap32[(r2+5)]; + r5 = (r7 + r5)|0; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r5 = r5 >> 2; + r6 = heap32[(r6+13)]; + r5 = heap32[(r5)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r5; + __FUNCTION_TABLE__[(r6)>>2](i7); +} + r3 = (r3 + 1)|0; + if(r1 !=r3) //_LBB259_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + r1 = heap32[(r2+5)]; +if(!(r1 ==0)) //_LBB259_9 +{ + r3 = heapU8[r0+24]; +if(!(r3 ==0)) //_LBB259_8 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+5)] = 0; +} + r1 = 1; + heap8[r0+24] = r1; + heap32[(r2+5)] = 0; + r0 = _ZTV30btActivatingCollisionAlgorithm; + heap32[(r2+3)] = 0; + r0 = (r0 + 8)|0; + heap32[(r2+4)] = 0; + heap32[(r2)] = r0; + return; +} + +function _ZNK21btConvexInternalShape15getLocalScalingEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = (r0 + 12)|0; + r_g0 = r0; + return; +} + +function _ZN21btConvexInternalShape9setMarginEf(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + heap32[(r0+11)] = heap32[(fp+1)]; + return; +} + +function _ZNK21btConvexInternalShape9getMarginEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var f0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + f0 = heapFloat[(r0+11)]; + f_g0 = f0; + return; +} + +function _ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 52; + r_g0 = r0; + return; +} + +function _ZNK15btTriangleShape14getNumVerticesEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 3; + r_g0 = r0; + return; +} + +function _ZNK15btTriangleShape9getVertexEiR9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r0 = r0 << 4; + r2 = heap32[(fp+2)]; + r0 = (r1 + r0)|0; + r1 = r2 >> 2; + r0 = r0 >> 2; + heap32[(r1)] = heap32[(r0+13)]; + heap32[(r1+1)] = heap32[(r0+14)]; + heap32[(r1+2)] = heap32[(r0+15)]; + heap32[(r1+3)] = heap32[(r0+16)]; + return; +} + +function _ZNK15btTriangleShape11getNumEdgesEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 3; + r_g0 = r0; + return; +} + +function _ZNK15btTriangleShape7getEdgeEiR9btVector3S1_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+24)]; + r3 = heap32[(fp+1)]; + r4 = heap32[(fp+2)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r4; + __FUNCTION_TABLE__[(r2)>>2](i7); + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+24)]; + r2 = (r3 + 1)|0; + r2 = (r2 % 3)|0; + r3 = heap32[(fp+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r3; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} + +function _ZNK15btTriangleShape7getAabbERK11btTransformR9btVector3S4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+18)]; + r2 = heap32[(fp+1)]; + r3 = heap32[(fp+2)]; + r4 = heap32[(fp+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = r4; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} + +function _ZNK15btTriangleShape37localGetSupportingVertexWithoutMarginERK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp+2)]; + r2 = r0 >> 2; + r1 = r1 >> 2; + f0 = heapFloat[(r2+13)]; + f1 = heapFloat[(r1)]; + f2 = heapFloat[(r2+17)]; + f3 = heapFloat[(r2+21)]; + f4 = heapFloat[(r2+14)]; + f5 = heapFloat[(r1+1)]; + f6 = heapFloat[(r2+18)]; + f7 = heapFloat[(r2+22)]; + f0 = f1*f0; + f4 = f5*f4; + f8 = heapFloat[(r2+15)]; + f9 = heapFloat[(r1+2)]; + f10 = heapFloat[(r2+19)]; + f11 = heapFloat[(r2+23)]; + f2 = f1*f2; + f6 = f5*f6; + f1 = f1*f3; + f3 = f5*f7; + f0 = f0+f4; + f4 = f9*f8; + f2 = f2+f6; + f5 = f9*f10; + f1 = f1+f3; + f3 = f9*f11; + f0 = f0+f4; + f2 = f2+f5; + r1 = heap32[(fp)]; + f1 = f1+f3; + if(f0 >=f2) //_LBB269_2 +{ + r2 = 2; + r3 = 0; + r2 = f0 < f1 ? r2 : r3; +} +else{ + r2 = 2; + r3 = 1; + r2 = f2 < f1 ? r2 : r3; +} + r2 = r2 << 4; + r0 = (r0 + r2)|0; + r1 = r1 >> 2; + r0 = r0 >> 2; + heap32[(r1)] = heap32[(r0+13)]; + heap32[(r1+1)] = heap32[(r0+14)]; + heap32[(r1+2)] = heap32[(r0+15)]; + heap32[(r1+3)] = heap32[(r0+16)]; + return; +} + +function _ZNK15btTriangleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+3)]; +if(!(r0 <1)) //_LBB270_6 +{ + r1 = heap32[(fp)]; + r2 = heap32[(fp+1)]; + r3 = heap32[(fp+2)]; + r2 = (r2 + 8)|0; + r3 = (r3 + 12)|0; +_3: while(true){ + r4 = r1 >> 2; + r5 = r2 >> 2; + f0 = heapFloat[(r4+13)]; + f1 = heapFloat[(r5+-2)]; + f2 = heapFloat[(r4+17)]; + f3 = heapFloat[(r4+21)]; + f4 = heapFloat[(r4+14)]; + f5 = heapFloat[(r5+-1)]; + f6 = heapFloat[(r4+18)]; + f7 = heapFloat[(r4+22)]; + f0 = f1*f0; + f4 = f5*f4; + f8 = heapFloat[(r4+15)]; + f9 = heapFloat[(r5)]; + f10 = heapFloat[(r4+19)]; + f11 = heapFloat[(r4+23)]; + f2 = f1*f2; + f6 = f5*f6; + f1 = f1*f3; + f3 = f5*f7; + f0 = f0+f4; + f4 = f9*f8; + f2 = f2+f6; + f5 = f9*f10; + f1 = f1+f3; + f3 = f9*f11; + f0 = f0+f4; + f2 = f2+f5; + f1 = f1+f3; + if(f0 >=f2) //_LBB270_4 +{ + r4 = 2; + r5 = 0; + r4 = f0 < f1 ? r4 : r5; +} +else{ + r4 = 2; + r5 = 1; + r4 = f2 < f1 ? r4 : r5; +} + r4 = r4 << 4; + r4 = (r1 + r4)|0; + r5 = r3 >> 2; + r4 = r4 >> 2; + heap32[(r5+-3)] = heap32[(r4+13)]; + heap32[(r5+-2)] = heap32[(r4+14)]; + r0 = (r0 + -1)|0; + r2 = (r2 + 16)|0; + r3 = (r3 + 16)|0; + heap32[(r5+-1)] = heap32[(r4+15)]; + heap32[(r5)] = heap32[(r4+16)]; + if(r0 !=0) //_LBB270_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + return; +} + +function _ZNK15btTriangleShape8getPlaneER9btVector3S1_i(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+28)]; + r2 = heap32[(fp+3)]; + r3 = heap32[(fp+1)]; + r4 = heap32[(fp+2)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = r4; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} + +function _ZNK15btTriangleShape12getNumPlanesEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 1; + r_g0 = r0; + return; +} + +function _ZNK15btTriangleShape7getNameEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = _2E_str109; + r_g0 = r0; + return; +} + +function _ZNK15btTriangleShape36getNumPreferredPenetrationDirectionsEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 2; + r_g0 = r0; + return; +} + +function _ZN24btConvexTriangleCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV24btConvexTriangleCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + r1 = heap32[(r0+12)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+5)]; + r3 = heap32[(r0+16)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r3; + __FUNCTION_TABLE__[(r2)>>2](i7); + r1 = heap32[(r0+12)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + r3 = heap32[(r0+16)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r3; + r1 = _ZTV18btTriangleCallback; + r1 = (r1 + 8)|0; + __FUNCTION_TABLE__[(r2)>>2](i7); + heap32[(r0)] = r1; + return; +} + +function _ZN24btConvexTriangleCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV24btConvexTriangleCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+12)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+5)]; + r4 = heap32[(r2+16)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r4; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+12)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+4)]; + r4 = heap32[(r2+16)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r4; + r1 = _ZTV18btTriangleCallback; + r1 = (r1 + 8)|0; + __FUNCTION_TABLE__[(r3)>>2](i7); + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN24btConvexTriangleCallback15processTriangleEP9btVector3ii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; +var __label__ = 0; + i7 = sp + -240;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+13)]; + r2 = heap32[(fp+1)]; + r3 = heap32[(r0+12)]; + r4 = heap32[(r0+2)]; +if(!(r1 ==0)) //_LBB277_4 +{ + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; +if(!(r1 ==0)) //_LBB277_4 +{ + r5 = r1 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+12)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r5)>>2](i7); + r1 = r_g0 & 1; +if(!(r1 ==0)) //_LBB277_4 +{ + r1 = sp + -112; + r5 = r1 >> 2; + heap32[(fp+-28)] = 1065353216; + heap32[(r5+1)] = 1065353216; + heap32[(r5+2)] = 0; + heap32[(r5+3)] = 0; + r5 = heap32[(r0+13)]; + r5 = r5 >> 2; + r6 = r4 >> 2; + r7 = r2 >> 2; + r8 = heap32[(r5+5)]; + r8 = r8 >> 2; + f0 = heapFloat[(r7+4)]; + f1 = heapFloat[(r6+1)]; + f2 = heapFloat[(r7+5)]; + f3 = heapFloat[(r6+2)]; + r8 = heap32[(r8)]; + f4 = heapFloat[(r6+5)]; + f5 = heapFloat[(r6+6)]; + f1 = f1*f0; + f3 = f3*f2; + f6 = heapFloat[(r7+6)]; + f7 = heapFloat[(r6+3)]; + r8 = r8 >> 2; + f8 = heapFloat[(r6+9)]; + f9 = heapFloat[(r6+10)]; + f10 = heapFloat[(r6+7)]; + f4 = f4*f0; + f5 = f5*f2; + f1 = f1+f3; + f3 = f7*f6; + f7 = heapFloat[(r6+11)]; + r8 = heap32[(r8+2)]; + f0 = f8*f0; + f2 = f9*f2; + f4 = f4+f5; + f5 = f10*f6; + f1 = f1+f3; + f3 = heapFloat[(r6+13)]; + f8 = heapFloat[(r6+15)]; + f9 = heapFloat[(r6+14)]; + r9 = sp + -96; + f4 = f4+f5; + f0 = f0+f2; + f2 = f7*f6; + f1 = f1+f3; + f0 = f0+f2; + r10 = r9 >> 2; + f2 = f4+f9; + heapFloat[(fp+-24)] = f1; + f0 = f0+f8; + heapFloat[(r10+1)] = f2; + heapFloat[(r10+2)] = f0; + heap32[(r10+3)] = 0; + f0 = heapFloat[(r7)]; + f1 = heapFloat[(r6+1)]; + f2 = heapFloat[(r7+1)]; + f3 = heapFloat[(r6+2)]; + f4 = heapFloat[(r6+5)]; + f5 = heapFloat[(r6+6)]; + f1 = f1*f0; + f3 = f3*f2; + f6 = heapFloat[(r7+2)]; + f7 = heapFloat[(r6+3)]; + f8 = heapFloat[(r6+9)]; + f9 = heapFloat[(r6+10)]; + f10 = heapFloat[(r6+7)]; + f4 = f4*f0; + f5 = f5*f2; + f1 = f1+f3; + f3 = f7*f6; + f7 = heapFloat[(r6+11)]; + f0 = f8*f0; + f2 = f9*f2; + f4 = f4+f5; + f5 = f10*f6; + f1 = f1+f3; + f3 = heapFloat[(r6+13)]; + f8 = heapFloat[(r6+15)]; + f9 = heapFloat[(r6+14)]; + r10 = sp + -80; + f4 = f4+f5; + f0 = f0+f2; + f2 = f7*f6; + f1 = f1+f3; + f0 = f0+f2; + r11 = r10 >> 2; + f2 = f4+f9; + heapFloat[(fp+-20)] = f1; + f0 = f0+f8; + heapFloat[(r11+1)] = f2; + heapFloat[(r11+2)] = f0; + heap32[(r11+3)] = 0; + r5 = heap32[(r5+5)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r9; + heap32[(g0+3)] = r1; + __FUNCTION_TABLE__[(r8)>>2](i7); + r5 = heap32[(r0+13)]; + r5 = r5 >> 2; + r8 = heap32[(r5+5)]; + r8 = r8 >> 2; + f0 = heapFloat[(r7+8)]; + f1 = heapFloat[(r6+1)]; + f2 = heapFloat[(r7+9)]; + f3 = heapFloat[(r6+2)]; + r8 = heap32[(r8)]; + f4 = heapFloat[(r6+5)]; + f5 = heapFloat[(r6+6)]; + f1 = f1*f0; + f3 = f3*f2; + f6 = heapFloat[(r7+10)]; + f7 = heapFloat[(r6+3)]; + r8 = r8 >> 2; + f8 = heapFloat[(r6+9)]; + f9 = heapFloat[(r6+10)]; + f10 = heapFloat[(r6+7)]; + f4 = f4*f0; + f5 = f5*f2; + f1 = f1+f3; + f3 = f7*f6; + f7 = heapFloat[(r6+11)]; + r8 = heap32[(r8+2)]; + f0 = f8*f0; + f2 = f9*f2; + f4 = f4+f5; + f5 = f10*f6; + f1 = f1+f3; + f3 = heapFloat[(r6+13)]; + f8 = heapFloat[(r6+15)]; + f9 = heapFloat[(r6+14)]; + r9 = sp + -64; + f4 = f4+f5; + f0 = f0+f2; + f2 = f7*f6; + f1 = f1+f3; + f0 = f0+f2; + r10 = r9 >> 2; + f2 = f4+f9; + heapFloat[(fp+-16)] = f1; + f0 = f0+f8; + heapFloat[(r10+1)] = f2; + heapFloat[(r10+2)] = f0; + heap32[(r10+3)] = 0; + f0 = heapFloat[(r7+4)]; + f1 = heapFloat[(r6+1)]; + f2 = heapFloat[(r7+5)]; + f3 = heapFloat[(r6+2)]; + f4 = heapFloat[(r6+5)]; + f5 = heapFloat[(r6+6)]; + f1 = f1*f0; + f3 = f3*f2; + f6 = heapFloat[(r7+6)]; + f7 = heapFloat[(r6+3)]; + f8 = heapFloat[(r6+9)]; + f9 = heapFloat[(r6+10)]; + f10 = heapFloat[(r6+7)]; + f4 = f4*f0; + f5 = f5*f2; + f1 = f1+f3; + f3 = f7*f6; + f7 = heapFloat[(r6+11)]; + f0 = f8*f0; + f2 = f9*f2; + f4 = f4+f5; + f5 = f10*f6; + f1 = f1+f3; + f3 = heapFloat[(r6+13)]; + f8 = heapFloat[(r6+15)]; + f9 = heapFloat[(r6+14)]; + r10 = sp + -48; + f4 = f4+f5; + f0 = f0+f2; + f2 = f7*f6; + f1 = f1+f3; + f0 = f0+f2; + r11 = r10 >> 2; + f2 = f4+f9; + heapFloat[(fp+-12)] = f1; + f0 = f0+f8; + heapFloat[(r11+1)] = f2; + heapFloat[(r11+2)] = f0; + heap32[(r11+3)] = 0; + r5 = heap32[(r5+5)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r9; + heap32[(g0+3)] = r1; + __FUNCTION_TABLE__[(r8)>>2](i7); + r5 = heap32[(r0+13)]; + r5 = r5 >> 2; + r8 = heap32[(r5+5)]; + r8 = r8 >> 2; + f0 = heapFloat[(r7)]; + f1 = heapFloat[(r6+1)]; + f2 = heapFloat[(r7+1)]; + f3 = heapFloat[(r6+2)]; + r8 = heap32[(r8)]; + f4 = heapFloat[(r6+5)]; + f5 = heapFloat[(r6+6)]; + f1 = f1*f0; + f3 = f3*f2; + f6 = heapFloat[(r7+2)]; + f7 = heapFloat[(r6+3)]; + r8 = r8 >> 2; + f8 = heapFloat[(r6+9)]; + f9 = heapFloat[(r6+10)]; + f10 = heapFloat[(r6+7)]; + f4 = f4*f0; + f5 = f5*f2; + f1 = f1+f3; + f3 = f7*f6; + f7 = heapFloat[(r6+11)]; + r8 = heap32[(r8+2)]; + f0 = f8*f0; + f2 = f9*f2; + f4 = f4+f5; + f5 = f10*f6; + f1 = f1+f3; + f3 = heapFloat[(r6+13)]; + f8 = heapFloat[(r6+15)]; + f9 = heapFloat[(r6+14)]; + r9 = sp + -32; + f4 = f4+f5; + f0 = f0+f2; + f2 = f7*f6; + f1 = f1+f3; + f0 = f0+f2; + r10 = r9 >> 2; + f2 = f4+f9; + heapFloat[(fp+-8)] = f1; + f0 = f0+f8; + heapFloat[(r10+1)] = f2; + heapFloat[(r10+2)] = f0; + heap32[(r10+3)] = 0; + f0 = heapFloat[(r7+8)]; + f1 = heapFloat[(r6+1)]; + f2 = heapFloat[(r7+9)]; + f3 = heapFloat[(r6+2)]; + f4 = heapFloat[(r6+5)]; + f5 = heapFloat[(r6+6)]; + f1 = f1*f0; + f3 = f3*f2; + f6 = heapFloat[(r7+10)]; + f7 = heapFloat[(r6+3)]; + f8 = heapFloat[(r6+9)]; + f9 = heapFloat[(r6+10)]; + f10 = heapFloat[(r6+7)]; + f4 = f4*f0; + f5 = f5*f2; + f1 = f1+f3; + f3 = f7*f6; + f7 = heapFloat[(r6+11)]; + f0 = f8*f0; + f2 = f9*f2; + f4 = f4+f5; + f5 = f10*f6; + f1 = f1+f3; + f3 = heapFloat[(r6+13)]; + f8 = heapFloat[(r6+15)]; + f9 = heapFloat[(r6+14)]; + r6 = sp + -16; + f4 = f4+f5; + f0 = f0+f2; + f2 = f7*f6; + f1 = f1+f3; + f0 = f0+f2; + r7 = r6 >> 2; + f2 = f4+f9; + heapFloat[(fp+-4)] = f1; + f0 = f0+f8; + heapFloat[(r7+1)] = f2; + heapFloat[(r7+2)] = f0; + heap32[(r7+3)] = 0; + r5 = heap32[(r5+5)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r9; + heap32[(g0+3)] = r1; + __FUNCTION_TABLE__[(r8)>>2](i7); +} +} +} + r1 = heap32[(r0+1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+48)]; + r1 = r1 >> 2; + r1 = heap32[(r1+1)]; +if(!(r1 >19)) //_LBB277_9 +{ + r1 = heap32[(fp+2)]; + r5 = heap32[(fp+3)]; + r6 = sp + -216; + r7 = r6 >> 2; + heap32[(r7+2)] = 0; + heap32[(r7+3)] = 1065353216; + heap32[(r7+4)] = 1065353216; + r8 = _ZTV15btTriangleShape; + heap32[(r7+5)] = 1065353216; + r8 = (r8 + 8)|0; + heap32[(r7+6)] = 0; + heap32[(fp+-54)] = r8; + r2 = r2 >> 2; + heap32[(r7+1)] = 1; + heap32[(r7+13)] = heap32[(r2)]; + heap32[(r7+14)] = heap32[(r2+1)]; + heap32[(r7+15)] = heap32[(r2+2)]; + heap32[(r7+16)] = heap32[(r2+3)]; + heap32[(r7+17)] = heap32[(r2+4)]; + heap32[(r7+18)] = heap32[(r2+5)]; + heap32[(r7+19)] = heap32[(r2+6)]; + heap32[(r7+20)] = heap32[(r2+7)]; + heap32[(r7+21)] = heap32[(r2+8)]; + heap32[(r7+22)] = heap32[(r2+9)]; + heap32[(r7+23)] = heap32[(r2+10)]; + heap32[(r7+24)] = heap32[(r2+11)]; + r2 = r4 >> 2; + heap32[(r7+11)] = heap32[(r0+14)]; + r4 = heap32[(r2+48)]; + heap32[(r2+48)] = r6; + r6 = r3 >> 2; + r7 = heap32[(r6)]; + r7 = r7 >> 2; + r7 = heap32[(r7+2)]; + r8 = heap32[(r0+16)]; + r9 = heap32[(r0+2)]; + r10 = heap32[(r0+1)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r9; + heap32[(g0+3)] = r8; + __FUNCTION_TABLE__[(r7)>>2](i7); + r7 = r_g0; + r8 = heap32[(r0+11)]; + r9 = r8 >> 2; + r10 = heap32[(r9)]; + r9 = heap32[(r9+34)]; + r11 = heap32[(r0+2)]; + if(r9 !=r11) //_LBB277_7 +{ + r9 = r10 >> 2; + r9 = heap32[(r9+3)]; + heap32[(g0)] = r8; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r5; + __FUNCTION_TABLE__[(r9)>>2](i7); +} +else{ + r10 = r10 >> 2; + r10 = heap32[(r10+2)]; + heap32[(g0)] = r8; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r5; + __FUNCTION_TABLE__[(r10)>>2](i7); +} + r1 = r7 >> 2; + r5 = heap32[(r1)]; + r5 = r5 >> 2; + r5 = heap32[(r5+2)]; + r8 = heap32[(r0+11)]; + r9 = heap32[(r0+13)]; + r10 = heap32[(r0+2)]; + r0 = heap32[(r0+1)]; + heap32[(g0)] = r7; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r10; + heap32[(g0+3)] = r9; + heap32[(g0+4)] = r8; + __FUNCTION_TABLE__[(r5)>>2](i7); + r0 = heap32[(r1)]; + r0 = r0 >> 2; + r0 = heap32[(r0)]; + heap32[(g0)] = r7; + __FUNCTION_TABLE__[(r0)>>2](i7); + r0 = heap32[(r6)]; + r0 = r0 >> 2; + r0 = heap32[(r0+13)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r7; + __FUNCTION_TABLE__[(r0)>>2](i7); + heap32[(r2+48)] = r4; +} + return; +} + +function _ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV18btTriangleCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV18btTriangleCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallback15processTriangleEP9btVector3ii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var f0; + var f1; +var __label__ = 0; + i7 = sp + -800;var g0 = i7>>2; // save stack + r0 = sp + -64; + r1 = r0 >> 2; + heap32[(fp+-16)] = 1065353216; + heap32[(r1+1)] = 0; + heap32[(r1+2)] = 0; + heap32[(r1+3)] = 0; + heap32[(r1+4)] = 0; + heap32[(r1+5)] = 1065353216; + heap32[(r1+6)] = 0; + heap32[(r1+7)] = 0; + heap32[(r1+8)] = 0; + heap32[(r1+9)] = 0; + heap32[(r1+10)] = 1065353216; + heap32[(r1+11)] = 0; + heap32[(r1+12)] = 0; + heap32[(r1+13)] = 0; + r2 = _ZTVN12btConvexCast10CastResultE; + heap32[(r1+14)] = 0; + r3 = sp + -240; + r2 = (r2 + 8)|0; + heap32[(r1+15)] = 0; + r1 = r3 >> 2; + heap32[(fp+-60)] = r2; + r2 = heap32[(fp)]; + heap32[(r1+42)] = 0; + r4 = r2 >> 2; + heap32[(r1+43)] = 0; + r5 = sp + -296; + heap32[(r1+41)] = heap32[(r4+50)]; + r6 = r5 >> 2; + f0 = heapFloat[(r4+49)]; + heap32[(r6+2)] = 0; + heap32[(r6+3)] = 1065353216; + heap32[(r6+4)] = 1065353216; + r7 = _ZTV13btSphereShape; + heap32[(r6+5)] = 1065353216; + r7 = (r7 + 8)|0; + heap32[(r6+6)] = 0; + heap32[(fp+-74)] = r7; + heap32[(r6+1)] = 8; + r7 = sp + -400; + heapFloat[(r6+7)] = f0; + r8 = r7 >> 2; + heapFloat[(r6+11)] = f0; + heap32[(r8+2)] = 0; + heap32[(r8+3)] = 1065353216; + heap32[(r8+4)] = 1065353216; + heap32[(r8+5)] = 1065353216; + r6 = _ZTV15btTriangleShape; + heap32[(r8+6)] = 0; + r6 = (r6 + 8)|0; + heap32[(r8+11)] = 1025758986; + r9 = heap32[(fp+1)]; + heap32[(fp+-100)] = r6; + r6 = r9 >> 2; + heap32[(r8+1)] = 1; + heap32[(r8+13)] = heap32[(r6)]; + heap32[(r8+14)] = heap32[(r6+1)]; + heap32[(r8+15)] = heap32[(r6+2)]; + heap32[(r8+16)] = heap32[(r6+3)]; + heap32[(r8+17)] = heap32[(r6+4)]; + heap32[(r8+18)] = heap32[(r6+5)]; + heap32[(r8+19)] = heap32[(r6+6)]; + heap32[(r8+20)] = heap32[(r6+7)]; + heap32[(r8+21)] = heap32[(r6+8)]; + heap32[(r8+22)] = heap32[(r6+9)]; + r9 = sp + -760; + heap32[(r8+23)] = heap32[(r6+10)]; + r10 = r9 >> 2; + heap32[(r8+24)] = heap32[(r6+11)]; + r6 = _ZTV22btSubsimplexConvexCast; + r8 = 0; + heap32[(r10+77)] = 953267991; + r10 = sp + -776; + r6 = (r6 + 8)|0; + heap8[sp+-428] = r8; + r8 = r10 >> 2; + heap32[(fp+-194)] = r6; + heap32[(r8+1)] = r9; + heap32[(r8+2)] = r5; + heap32[(r8+3)] = r7; + r5 = (r2 + 4)|0; + r2 = (r2 + 68)|0; + heap32[(g0)] = r10; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r0; + heap32[(g0+4)] = r0; + heap32[(g0+5)] = r3; + _ZN22btSubsimplexConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(i7); + r0 = r_g0; +if(!(r0 ==0)) //_LBB280_3 +{ + f0 = heapFloat[(r1+41)]; + f1 = heapFloat[(r4+50)]; +if(!(f1 <=f0)) //_LBB280_3 +{ + heapFloat[(r4+50)] = f0; +} +} + return; +} + +function _ZN15btTriangleShapeD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV13btConvexShape; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN15btTriangleShapeD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV13btConvexShape; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; +if(!(r0 ==0)) //_LBB282_2 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + heap32[(r0)] = r1; + r0 = heap32[(r2+-1)]; + heap32[(g0)] = r0; + free(i7); +} + return; +} + +function _ZNK15btTriangleShape21calculateLocalInertiaEfR9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = _2E_str10; + r1 = _2E_str3112; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 125; + _assert(i7); +} + +function _ZNK21btConvexInternalShape9serializeEPvP12btSerializer(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+10)]; + r3 = heap32[(fp)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r_g0; + r4 = heap32[(r1)]; + r4 = r4 >> 2; + r4 = heap32[(r4+7)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + r5 = heap32[(fp+1)]; + __FUNCTION_TABLE__[(r4)>>2](i7); + r4 = r_g0; + r5 = r5 >> 2; + heap32[(r5)] = r4; +if(!(r4 ==0)) //_LBB284_2 +{ + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+12)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + __FUNCTION_TABLE__[(r1)>>2](i7); +} + r0 = r3 >> 2; + r1 = heap32[(r0+1)]; + heap32[(r5+1)] = r1; + heap32[(r5+7)] = heap32[(r0+7)]; + heap32[(r5+8)] = heap32[(r0+8)]; + heap32[(r5+9)] = heap32[(r0+9)]; + heap32[(r5+10)] = heap32[(r0+10)]; + heap32[(r5+3)] = heap32[(r0+3)]; + heap32[(r5+4)] = heap32[(r0+4)]; + heap32[(r5+5)] = heap32[(r0+5)]; + heap32[(r5+6)] = heap32[(r0+6)]; + heap32[(r5+11)] = heap32[(r0+11)]; + r0 = _2E_str1110; + r_g0 = r0; + return; +} + +function _ZNK15btTriangleShape32getPreferredPenetrationDirectionEiR9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + f0 = heapFloat[(r0+23)]; + f1 = heapFloat[(r0+15)]; + f2 = heapFloat[(r0+19)]; + f3 = heapFloat[(r0+22)]; + f4 = heapFloat[(r0+14)]; + f5 = heapFloat[(r0+18)]; + f5 = f5-f4; + f0 = f0-f1; + f1 = f2-f1; + f2 = f3-f4; + f3 = heapFloat[(r0+21)]; + f4 = heapFloat[(r0+13)]; + f6 = heapFloat[(r0+17)]; + f3 = f3-f4; + f4 = f6-f4; + r0 = heap32[(fp+2)]; + f6 = f5*f0; + f7 = f1*f2; + f6 = f6-f7; + f1 = f1*f3; + f0 = f4*f0; + r0 = r0 >> 2; + f0 = f1-f0; + heapFloat[(r0)] = f6; + f1 = f4*f2; + f2 = f5*f3; + f1 = f1-f2; + heapFloat[(r0+1)] = f0; + heapFloat[(r0+2)] = f1; + f2 = f6*f6; + f0 = f0*f0; + heap32[(r0+3)] = 0; + f0 = f2+f0; + f1 = f1*f1; + f0 = f0+f1; + heapFloat[(g0)] = f0; + sqrtf(i7); + f1 = 1; + f0 = f1/f_g0; + f1 = heapFloat[(r0)]; + f1 = f1*f0; + heapFloat[(r0)] = f1; + f2 = heapFloat[(r0+1)]; + f2 = f2*f0; + heapFloat[(r0+1)] = f2; + f3 = heapFloat[(r0+2)]; + f0 = f3*f0; + heapFloat[(r0+2)] = f0; + r1 = heap32[(fp+1)]; +if(!(r1 ==0)) //_LBB285_2 +{ + f1 = -f1; + f2 = -f2; + heapFloat[(r0)] = f1; + f0 = -f0; + heapFloat[(r0+1)] = f2; + heapFloat[(r0+2)] = f0; +} + return; +} + +function _ZNK15btTriangleShape8isInsideERK9btVector3f(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; +var __label__ = 0; + i7 = sp + -48;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + f0 = heapFloat[(r1+19)]; + f1 = heapFloat[(r1+15)]; + f2 = heapFloat[(r1+23)]; + f3 = heapFloat[(r1+17)]; + f4 = heapFloat[(r1+13)]; + f5 = heapFloat[(r1+21)]; + f6 = heapFloat[(r1+22)]; + f7 = heapFloat[(r1+14)]; + f8 = heapFloat[(r1+18)]; + f0 = f0-f1; + f6 = f6-f7; + f3 = f3-f4; + f1 = f2-f1; + f2 = f8-f7; + f4 = f5-f4; + f5 = f2*f1; + f7 = f0*f6; + f0 = f0*f4; + f1 = f3*f1; + f5 = f5-f7; + f0 = f0-f1; + f1 = f3*f6; + f2 = f2*f4; + f1 = f1-f2; + f2 = f5*f5; + f3 = f0*f0; + f2 = f2+f3; + f3 = f1*f1; + f2 = f2+f3; + heapFloat[(g0)] = f2; + sqrtf(i7); + r2 = heap32[(fp+1)]; + f3 = 1; + r2 = r2 >> 2; + f2 = f3/f_g0; + f4 = f5*f2; + f5 = heapFloat[(r2)]; + f6 = heapFloat[(r1+13)]; + f0 = f0*f2; + f7 = heapFloat[(r2+1)]; + f8 = heapFloat[(r1+14)]; + f1 = f1*f2; + f2 = heapFloat[(r2+2)]; + f9 = heapFloat[(r1+15)]; + f5 = f5*f4; + f7 = f7*f0; + f6 = f6*f4; + f8 = f8*f0; + f5 = f5+f7; + f2 = f2*f1; + f6 = f6+f8; + f7 = f9*f1; + f8 = heapFloat[(fp+2)]; + f2 = f5+f2; + f5 = f6+f7; + f2 = f2-f5; + f5 = -f8; +_1: do { + if(f2 > 2; + r4 = heap32[(r4+23)]; + r5 = sp + -32; + r6 = sp + -16; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r6; + heap32[(g0+3)] = r5; + __FUNCTION_TABLE__[(r4)>>2](i7); + r4 = r5 >> 2; + r5 = r6 >> 2; + f2 = heapFloat[(r4+2)]; + f6 = heapFloat[(r5+2)]; + f7 = heapFloat[(r4+1)]; + f8 = heapFloat[(r5+1)]; + f9 = heapFloat[(fp+-8)]; + f10 = heapFloat[(fp+-4)]; + f2 = f2-f6; + f6 = f9-f10; + f7 = f7-f8; + f8 = f7*f1; + f9 = f2*f0; + f2 = f2*f4; + f10 = f6*f1; + f8 = f8-f9; + f2 = f2-f10; + f6 = f6*f0; + f7 = f7*f4; + f6 = f6-f7; + f7 = f8*f8; + f9 = f2*f2; + f7 = f7+f9; + f9 = f6*f6; + f7 = f7+f9; + heapFloat[(g0)] = f7; + sqrtf(i7); + f7 = f3/f_g0; + f9 = heapFloat[(r2)]; + f8 = f8*f7; + f10 = heapFloat[(fp+-4)]; + f11 = heapFloat[(r2+1)]; + f2 = f2*f7; + f12 = heapFloat[(r5+1)]; + f9 = f9*f8; + f11 = f11*f2; + f13 = heapFloat[(r2+2)]; + f6 = f6*f7; + f7 = heapFloat[(r5+2)]; + f8 = f10*f8; + f2 = f12*f2; + f9 = f9+f11; + f10 = f13*f6; + f2 = f8+f2; + f6 = f7*f6; + f7 = f9+f10; + f2 = f2+f6; + f2 = f7-f2; + if(f2 >2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + f0 = heapFloat[(r0+23)]; + f1 = heapFloat[(r0+15)]; + f2 = heapFloat[(r0+19)]; + f3 = heapFloat[(r0+22)]; + f4 = heapFloat[(r0+14)]; + f5 = heapFloat[(r0+18)]; + f5 = f5-f4; + f0 = f0-f1; + f1 = f2-f1; + f2 = f3-f4; + f3 = heapFloat[(r0+21)]; + f4 = heapFloat[(r0+13)]; + f6 = heapFloat[(r0+17)]; + f3 = f3-f4; + f4 = f6-f4; + r1 = heap32[(fp+2)]; + f6 = f5*f0; + f7 = f1*f2; + f6 = f6-f7; + r1 = r1 >> 2; + f1 = f1*f3; + f0 = f4*f0; + f0 = f1-f0; + heapFloat[(r1)] = f6; + f1 = f4*f2; + f2 = f5*f3; + f1 = f1-f2; + heapFloat[(r1+1)] = f0; + heapFloat[(r1+2)] = f1; + f2 = f6*f6; + f0 = f0*f0; + heap32[(r1+3)] = 0; + f0 = f2+f0; + f1 = f1*f1; + f0 = f0+f1; + heapFloat[(g0)] = f0; + sqrtf(i7); + f1 = 1; + f0 = f1/f_g0; + f1 = heapFloat[(r1)]; + f1 = f1*f0; + heapFloat[(r1)] = f1; + f1 = heapFloat[(r1+1)]; + f1 = f1*f0; + heapFloat[(r1+1)] = f1; + f1 = heapFloat[(r1+2)]; + r2 = heap32[(fp+3)]; + f0 = f1*f0; + r2 = r2 >> 2; + heapFloat[(r1+2)] = f0; + heap32[(r2)] = heap32[(r0+13)]; + heap32[(r2+1)] = heap32[(r0+14)]; + heap32[(r2+2)] = heap32[(r0+15)]; + heap32[(r2+3)] = heap32[(r0+16)]; + return; +} + +function _ZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; + var f30; +var __label__ = 0; + i7 = sp + -440;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = heapU8[r0+8]; + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r3 = r0 == 0 ? r1 : r2; + r3 = r3 >> 2; + f0 = heapFloat[(r3+30)]; + f1 = heapFloat[(r3+14)]; + f2 = heapFloat[(r3+29)]; + f3 = heapFloat[(r3+13)]; + f4 = f2-f3; + f5 = f0-f1; + f6 = heapFloat[(r3+31)]; + f7 = heapFloat[(r3+15)]; + f8 = f6-f7; + f4 = f4*f4; + f5 = f5*f5; + f9 = heapFloat[(r3+62)]; + f4 = f4+f5; + f5 = f8*f8; + f8 = f9*f9; + f4 = f4+f5; +if(!(f8 >f4)) //_LBB288_23 +{ + r0 = r0 == 0 ? r2 : r1; + r0 = r0 >> 2; + r1 = heap32[(r0+48)]; + r2 = r1 >> 2; + r4 = heap32[(r2+1)]; + r4 = (r4 + -21)|0; +if(!(uint(r4) >uint(8))) //_LBB288_23 +{ + f4 = heapFloat[(r0+13)]; + f5 = heapFloat[(r0+3)]; + f8 = heapFloat[(r0+2)]; + f4 = -f4; + f9 = heapFloat[(r0+1)]; + f10 = heapFloat[(r0+7)]; + f11 = heapFloat[(r0+6)]; + f12 = heapFloat[(r0+14)]; + f13 = heapFloat[(r0+5)]; + f14 = heapFloat[(r3+3)]; + f15 = heapFloat[(r3+7)]; + f16 = heapFloat[(r3+2)]; + f17 = heapFloat[(r3+6)]; + f18 = heapFloat[(r3+1)]; + f19 = heapFloat[(r3+5)]; + f20 = heapFloat[(r3+19)]; + heapFloat[(fp+-63)] = f20; + f21 = heapFloat[(r3+23)]; + f22 = heapFloat[(r3+18)]; + f23 = heapFloat[(r3+22)]; + f24 = heapFloat[(r3+17)]; + f25 = heapFloat[(r3+21)]; + f26 = f5*f3; + heapFloat[(fp+-65)] = f26; + f27 = f10*f1; + f28 = f8*f3; + heapFloat[(fp+-66)] = f28; + f29 = f11*f1; + f3 = f9*f3; + heapFloat[(fp+-64)] = f3; + f1 = f13*f1; + f30 = heapFloat[(r0+11)]; + f3 = heapFloat[(r0+10)]; + f20 = heapFloat[(r0+15)]; + f26 = heapFloat[(r0+9)]; + f28 = f5*f2; + heapFloat[(fp+-67)] = f28; + f28 = f10*f0; + heapFloat[(fp+-69)] = f28; + f28 = f5*f4; + heapFloat[(fp+-68)] = f28; + f28 = f10*f12; + heapFloat[(fp+-71)] = f28; + f28 = f8*f2; + heapFloat[(fp+-70)] = f28; + f28 = f11*f0; + heapFloat[(fp+-73)] = f28; + f28 = f8*f4; + heapFloat[(fp+-72)] = f28; + f28 = f11*f12; + heapFloat[(fp+-78)] = f28; + f2 = f9*f2; + heapFloat[(fp+-74)] = f2; + f0 = f13*f0; + heapFloat[(fp+-76)] = f0; + f4 = f9*f4; + heapFloat[(fp+-75)] = f4; + f12 = f13*f12; + heapFloat[(fp+-77)] = f12; + f0 = heapFloat[(r3+11)]; + f2 = heapFloat[(r3+10)]; + f4 = heapFloat[(r3+9)]; + f12 = heapFloat[(r3+27)]; + f28 = heapFloat[(r3+26)]; + heapFloat[(fp+-62)] = f28; + f28 = heapFloat[(r3+25)]; + heapFloat[(fp+-61)] = f28; + f28 = heapFloat[(fp+-65)]; + f27 = f28+f27; + heapFloat[(fp+-65)] = f27; + f27 = f30*f7; + heapFloat[(fp+-99)] = f27; + f28 = heapFloat[(fp+-66)]; + f28 = f28+f29; + heapFloat[(fp+-66)] = f28; + f29 = f3*f7; + heapFloat[(fp+-98)] = f29; + f27 = heapFloat[(fp+-64)]; + f1 = f27+f1; + heapFloat[(fp+-80)] = f1; + f7 = f26*f7; + heapFloat[(fp+-97)] = f7; + f27 = f14*f5; + heapFloat[(fp+-64)] = f27; + f1 = f15*f10; + heapFloat[(fp+-82)] = f1; + f1 = f16*f5; + heapFloat[(fp+-79)] = f1; + f1 = f17*f10; + heapFloat[(fp+-84)] = f1; + f1 = f18*f5; + heapFloat[(fp+-81)] = f1; + f1 = f19*f10; + heapFloat[(fp+-86)] = f1; + f1 = f14*f8; + heapFloat[(fp+-83)] = f1; + f1 = f15*f11; + heapFloat[(fp+-88)] = f1; + f1 = f16*f8; + heapFloat[(fp+-85)] = f1; + f1 = f17*f11; + heapFloat[(fp+-92)] = f1; + f1 = f18*f8; + heapFloat[(fp+-87)] = f1; + f1 = f19*f11; + heapFloat[(fp+-93)] = f1; + f14 = f14*f9; + heapFloat[(fp+-89)] = f14; + f15 = f15*f13; + heapFloat[(fp+-94)] = f15; + f16 = f16*f9; + heapFloat[(fp+-90)] = f16; + f17 = f17*f13; + heapFloat[(fp+-95)] = f17; + f18 = f18*f9; + heapFloat[(fp+-91)] = f18; + f19 = f19*f13; + heapFloat[(fp+-96)] = f19; + f1 = heapFloat[(fp+-67)]; + f7 = heapFloat[(fp+-69)]; + f1 = f1+f7; + f7 = f30*f6; + f14 = heapFloat[(fp+-68)]; + f15 = heapFloat[(fp+-71)]; + f14 = f14-f15; + f15 = f30*f20; + f16 = heapFloat[(fp+-70)]; + f17 = heapFloat[(fp+-73)]; + f16 = f16+f17; + f17 = f3*f6; + f18 = heapFloat[(fp+-72)]; + f19 = heapFloat[(fp+-78)]; + f18 = f18-f19; + f19 = f3*f20; + f27 = heapFloat[(fp+-74)]; + f28 = heapFloat[(fp+-76)]; + f27 = f27+f28; + f6 = f26*f6; + f28 = heapFloat[(fp+-75)]; + f29 = heapFloat[(fp+-77)]; + f28 = f28-f29; + f20 = f26*f20; + f29 = heapFloat[(fp+-63)]; + f29 = f29*f5; + heapFloat[(fp+-67)] = f29; + f29 = f21*f10; + heapFloat[(fp+-69)] = f29; + f29 = f22*f5; + heapFloat[(fp+-68)] = f29; + f29 = f23*f10; + f5 = f24*f5; + heapFloat[(fp+-70)] = f5; + f5 = f25*f10; + heapFloat[(fp+-101)] = f5; + f10 = heapFloat[(fp+-63)]; + f5 = f10*f8; + heapFloat[(fp+-71)] = f5; + f5 = f21*f11; + heapFloat[(fp+-73)] = f5; + f5 = f22*f8; + heapFloat[(fp+-72)] = f5; + f5 = f23*f11; + heapFloat[(fp+-100)] = f5; + f8 = f24*f8; + heapFloat[(fp+-74)] = f8; + f5 = f25*f11; + heapFloat[(fp+-102)] = f5; + f8 = f10*f9; + heapFloat[(fp+-75)] = f8; + f5 = f21*f13; + heapFloat[(fp+-103)] = f5; + f8 = f22*f9; + heapFloat[(fp+-78)] = f8; + f5 = f23*f13; + heapFloat[(fp+-104)] = f5; + f8 = f24*f9; + heapFloat[(fp+-76)] = f8; + f5 = f25*f13; + heapFloat[(fp+-105)] = f5; + f8 = heapFloat[(fp+-65)]; + f9 = heapFloat[(fp+-99)]; + f8 = f8+f9; + heapFloat[(fp+-77)] = f8; + f9 = f14-f15; + f1 = f1+f7; + heapFloat[(fp+-63)] = f1; + f7 = heapFloat[(fp+-66)]; + f10 = heapFloat[(fp+-98)]; + f7 = f7+f10; + heapFloat[(fp+-98)] = f7; + f10 = f18-f19; + f11 = f16+f17; + heapFloat[(fp+-65)] = f11; + f13 = heapFloat[(fp+-80)]; + f14 = heapFloat[(fp+-97)]; + f1 = f13+f14; + heapFloat[(fp+-80)] = f1; + f5 = f28-f20; + f6 = f27+f6; + heapFloat[(fp+-66)] = f6; + f7 = heapFloat[(fp+-64)]; + f8 = heapFloat[(fp+-82)]; + f1 = f7+f8; + heapFloat[(fp+-64)] = f1; + f1 = f0*f30; + heapFloat[(fp+-82)] = f1; + f6 = heapFloat[(fp+-79)]; + f7 = heapFloat[(fp+-84)]; + f1 = f6+f7; + heapFloat[(fp+-79)] = f1; + f1 = f2*f30; + heapFloat[(fp+-84)] = f1; + f6 = heapFloat[(fp+-81)]; + f7 = heapFloat[(fp+-86)]; + f1 = f6+f7; + heapFloat[(fp+-81)] = f1; + f1 = f4*f30; + heapFloat[(fp+-86)] = f1; + f6 = heapFloat[(fp+-83)]; + f7 = heapFloat[(fp+-88)]; + f1 = f6+f7; + heapFloat[(fp+-83)] = f1; + f1 = f0*f3; + heapFloat[(fp+-88)] = f1; + f6 = heapFloat[(fp+-85)]; + f7 = heapFloat[(fp+-92)]; + f1 = f6+f7; + heapFloat[(fp+-85)] = f1; + f1 = f2*f3; + heapFloat[(fp+-92)] = f1; + f6 = heapFloat[(fp+-87)]; + f7 = heapFloat[(fp+-93)]; + f1 = f6+f7; + heapFloat[(fp+-87)] = f1; + f1 = f4*f3; + heapFloat[(fp+-93)] = f1; + f6 = heapFloat[(fp+-89)]; + f7 = heapFloat[(fp+-94)]; + f1 = f6+f7; + heapFloat[(fp+-89)] = f1; + f0 = f0*f26; + f6 = heapFloat[(fp+-90)]; + f7 = heapFloat[(fp+-95)]; + f6 = f6+f7; + f2 = f2*f26; + f7 = heapFloat[(fp+-91)]; + f8 = heapFloat[(fp+-96)]; + f7 = f7+f8; + f4 = f4*f26; + f8 = heapFloat[(fp+-67)]; + f11 = heapFloat[(fp+-69)]; + f8 = f8+f11; + f11 = f12*f30; + f13 = heapFloat[(fp+-68)]; + f13 = f13+f29; + f28 = heapFloat[(fp+-62)]; + f14 = f28*f30; + f15 = heapFloat[(fp+-70)]; + f16 = heapFloat[(fp+-101)]; + f15 = f15+f16; + f28 = heapFloat[(fp+-61)]; + f16 = f28*f30; + f17 = heapFloat[(fp+-71)]; + f18 = heapFloat[(fp+-73)]; + f17 = f17+f18; + f18 = f12*f3; + f19 = heapFloat[(fp+-72)]; + f20 = heapFloat[(fp+-100)]; + f19 = f19+f20; + f28 = heapFloat[(fp+-62)]; + f20 = f28*f3; + f21 = heapFloat[(fp+-74)]; + f22 = heapFloat[(fp+-102)]; + f21 = f21+f22; + f28 = heapFloat[(fp+-61)]; + f3 = f28*f3; + f22 = heapFloat[(fp+-75)]; + f23 = heapFloat[(fp+-103)]; + f22 = f22+f23; + f12 = f12*f26; + f23 = heapFloat[(fp+-78)]; + f24 = heapFloat[(fp+-104)]; + f23 = f23+f24; + f28 = heapFloat[(fp+-62)]; + f24 = f28*f26; + f25 = heapFloat[(fp+-76)]; + f27 = heapFloat[(fp+-105)]; + f25 = f25+f27; + f28 = heapFloat[(fp+-61)]; + f26 = f28*f26; + f27 = heapFloat[(fp+-77)]; + f27 = f27+f9; + f28 = heapFloat[(fp+-98)]; + f28 = f28+f10; + f29 = heapFloat[(fp+-80)]; + f29 = f29+f5; + f30 = heapFloat[(fp+-64)]; + f1 = heapFloat[(fp+-82)]; + f1 = f30+f1; + heapFloat[(fp+-61)] = f1; + f1 = heapFloat[(fp+-79)]; + f30 = heapFloat[(fp+-84)]; + f1 = f1+f30; + heapFloat[(fp+-62)] = f1; + f1 = heapFloat[(fp+-81)]; + f30 = heapFloat[(fp+-86)]; + f1 = f1+f30; + heapFloat[(fp+-64)] = f1; + f1 = heapFloat[(fp+-83)]; + f30 = heapFloat[(fp+-88)]; + f1 = f1+f30; + heapFloat[(fp+-67)] = f1; + f1 = heapFloat[(fp+-85)]; + f30 = heapFloat[(fp+-92)]; + f1 = f1+f30; + heapFloat[(fp+-68)] = f1; + f1 = heapFloat[(fp+-87)]; + f30 = heapFloat[(fp+-93)]; + f1 = f1+f30; + f30 = heapFloat[(fp+-89)]; + f0 = f30+f0; + f2 = f6+f2; + f4 = f7+f4; + f6 = heapFloat[(fp+-63)]; + f6 = f6+f9; + f7 = heapFloat[(fp+-65)]; + f7 = f7+f10; + f9 = heapFloat[(fp+-66)]; + f5 = f9+f5; + f8 = f8+f11; + f9 = f13+f14; + f10 = f15+f16; + f11 = f17+f18; + f13 = f19+f20; + f3 = f21+f3; + f12 = f22+f12; + f14 = f23+f24; + f15 = f25+f26; + r0 = sp + -16; + r4 = r0 >> 2; + heapFloat[(fp+-4)] = f29; + heapFloat[(r4+1)] = f28; + heapFloat[(r4+2)] = f27; + heap32[(r4+3)] = 0; + if(f5 > 2; + heapFloat[(fp+-8)] = f29; + heapFloat[(r6+1)] = f28; + heapFloat[(r6+2)] = f27; + heap32[(r6+3)] = 0; + if(f29 > 2; + heap32[(fp+-60)] = r4; + heapFloat[(r6+1)] = f4; + heapFloat[(r6+2)] = f2; + heapFloat[(r6+3)] = f0; + heap32[(r6+4)] = 0; + heapFloat[(r6+5)] = f1; + f0 = heapFloat[(fp+-68)]; + heapFloat[(r6+6)] = f0; + f0 = heapFloat[(fp+-67)]; + heapFloat[(r6+7)] = f0; + heap32[(r6+8)] = 0; + f0 = heapFloat[(fp+-64)]; + heapFloat[(r6+9)] = f0; + f0 = heapFloat[(fp+-62)]; + heapFloat[(r6+10)] = f0; + f0 = heapFloat[(fp+-61)]; + heapFloat[(r6+11)] = f0; + heap32[(r6+12)] = 0; + heapFloat[(r6+13)] = f29; + heapFloat[(r6+14)] = f28; + heapFloat[(r6+15)] = f27; + heap32[(r6+16)] = 0; + heapFloat[(r6+17)] = f15; + heapFloat[(r6+18)] = f14; + heapFloat[(r6+19)] = f12; + heap32[(r6+20)] = 0; + heapFloat[(r6+21)] = f3; + heapFloat[(r6+22)] = f13; + heapFloat[(r6+23)] = f11; + heap32[(r6+24)] = 0; + heapFloat[(r6+25)] = f10; + heapFloat[(r6+26)] = f9; + heapFloat[(r6+27)] = f8; + heap32[(r6+28)] = 0; + heapFloat[(r6+29)] = f5; + heapFloat[(r6+30)] = f7; + heapFloat[(r6+31)] = f6; + heap32[(r6+32)] = 0; + heapFloat[(r6+49)] = f22; + heap32[(r6+50)] = heap32[(r3+60)]; +if(!(r1 ==0)) //_LBB288_23 +{ + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+15)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r0; + heap32[(g0+3)] = r5; + __FUNCTION_TABLE__[(r2)>>2](i7); + f0 = heapFloat[(r6+50)]; + f1 = heapFloat[(r3+60)]; +if(!(f0 >=f1)) //_LBB288_23 +{ + heapFloat[(r3+60)] = f0; + f_g0 = f0; + return; +} +} +} +} + f0 = 1; + f_g0 = f0; + return; +} + +function _ZN33btConvexConcaveCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; + var f30; +var __label__ = 0; + i7 = sp + -80;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heapU8[r0+8]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+1)]; + r4 = r1 == 0 ? r2 : r3; + r5 = r4 >> 2; + r5 = heap32[(r5+48)]; + r6 = r5 >> 2; + r7 = heap32[(r6+1)]; + r7 = (r7 + -21)|0; +if(!(uint(r7) >uint(8))) //_LBB289_8 +{ + r1 = r1 == 0 ? r3 : r2; + r2 = r1 >> 2; + r2 = heap32[(r2+48)]; + r2 = r2 >> 2; + r2 = heap32[(r2+1)]; +if(!(r2 >19)) //_LBB289_8 +{ + r2 = heap32[(fp+3)]; + r3 = heap32[(fp+4)]; + r7 = heap32[(r6)]; + r7 = r7 >> 2; + r7 = heap32[(r7+11)]; + heap32[(g0)] = r5; + r8 = r0 >> 2; + __FUNCTION_TABLE__[(r7)>>2](i7); + f0 = f_g0; + r7 = r3 >> 2; + r9 = heap32[(r8+19)]; + heap32[(r7+1)] = r9; + heap32[(r8+16)] = r2; + heapFloat[(r8+17)] = f0; + heap32[(r8+14)] = r3; + r2 = heap32[(r8+4)]; + r9 = heap32[(r8+5)]; + r9 = r9 >> 2; + r2 = r2 >> 2; + f1 = heapFloat[(r9+1)]; + f2 = heapFloat[(r2+1)]; + f3 = heapFloat[(r9+5)]; + f4 = heapFloat[(r2+5)]; + f5 = heapFloat[(r2+2)]; + f6 = heapFloat[(r2+6)]; + f7 = f2*f1; + f8 = f4*f3; + f9 = heapFloat[(r9+9)]; + f10 = heapFloat[(r2+9)]; + f11 = heapFloat[(r9+2)]; + f12 = heapFloat[(r9+6)]; + f13 = heapFloat[(r9+3)]; + f14 = heapFloat[(r2+13)]; + f15 = heapFloat[(r2+3)]; + f16 = heapFloat[(r9+7)]; + f17 = heapFloat[(r9+14)]; + f18 = heapFloat[(r2+14)]; + f19 = heapFloat[(r2+7)]; + f20 = heapFloat[(r9+10)]; + f21 = heapFloat[(r9+15)]; + f22 = heapFloat[(r9+11)]; + f23 = heapFloat[(r2+15)]; + f24 = heapFloat[(r2+11)]; + f25 = heapFloat[(r2+10)]; + f26 = heapFloat[(r9+13)]; + f27 = f5*f1; + f28 = f6*f3; + f7 = f7+f8; + f8 = f10*f9; + r9 = sp + -64; + f29 = f15*f1; + f30 = f19*f3; + f27 = f27+f28; + f28 = f25*f9; + f7 = f7+f8; + r10 = r9 >> 2; + f8 = f29+f30; + f29 = f24*f9; + f27 = f27+f28; + heapFloat[(fp+-16)] = f7; + f7 = f2*f11; + f28 = f4*f12; + f8 = f8+f29; + heapFloat[(r10+1)] = f27; + heapFloat[(r10+2)] = f8; + f8 = f5*f11; + f27 = f6*f12; + f7 = f7+f28; + f28 = f10*f20; + f29 = f15*f11; + f30 = f19*f12; + f8 = f8+f27; + f27 = f25*f20; + f7 = f7+f28; + heap32[(r10+3)] = 0; + f28 = f29+f30; + f29 = f24*f20; + f8 = f8+f27; + heapFloat[(r10+4)] = f7; + f2 = f2*f13; + f4 = f4*f16; + f7 = f28+f29; + heapFloat[(r10+5)] = f8; + heapFloat[(r10+6)] = f7; + f5 = f5*f13; + f6 = f6*f16; + f2 = f2+f4; + f4 = f10*f22; + f7 = -f26; + f8 = f15*f13; + f10 = f19*f16; + f5 = f5+f6; + f6 = f25*f22; + f2 = f2+f4; + heap32[(r10+7)] = 0; + f4 = f1*f14; + f15 = f3*f18; + f1 = f1*f7; + f3 = f3*f17; + f8 = f8+f10; + f10 = f24*f22; + f5 = f5+f6; + heapFloat[(r10+8)] = f2; + f2 = f11*f14; + f6 = f12*f18; + f11 = f11*f7; + f12 = f12*f17; + f4 = f4+f15; + f15 = f9*f23; + f1 = f1-f3; + f3 = f9*f21; + f8 = f8+f10; + heapFloat[(r10+9)] = f5; + heapFloat[(r10+10)] = f8; + f5 = f13*f14; + f8 = f16*f18; + f7 = f13*f7; + f9 = f16*f17; + f2 = f2+f6; + f6 = f20*f23; + f10 = f11-f12; + f11 = f20*f21; + f4 = f4+f15; + f1 = f1-f3; + f3 = f5+f8; + f5 = f22*f23; + f7 = f7-f9; + f8 = f22*f21; + f2 = f2+f6; + f6 = f10-f11; + f1 = f4+f1; + heap32[(r10+11)] = 0; + f3 = f3+f5; + f4 = f7-f8; + f2 = f2+f6; + heapFloat[(r10+12)] = f1; + f1 = f3+f4; + heapFloat[(r10+13)] = f2; + heapFloat[(r10+14)] = f1; + heap32[(r10+15)] = 0; + r2 = heap32[(r2+48)]; + r10 = r2 >> 2; + r10 = heap32[(r10)]; + r10 = r10 >> 2; + r10 = heap32[(r10+2)]; + r11 = (r0 + 40)|0; + r12 = (r0 + 24)|0; + heap32[(g0)] = r2; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r12; + heap32[(g0+3)] = r11; + __FUNCTION_TABLE__[(r10)>>2](i7); + f1 = heapFloat[(r8+10)]; + f1 = f1+f0; + heapFloat[(r8+10)] = f1; + f1 = heapFloat[(r8+11)]; + f1 = f1+f0; + heapFloat[(r8+11)] = f1; + f1 = heapFloat[(r8+12)]; + f1 = f1+f0; + heapFloat[(r8+12)] = f1; + f1 = heapFloat[(r8+6)]; + f1 = f1-f0; + heapFloat[(r8+6)] = f1; + f1 = heapFloat[(r8+7)]; + f1 = f1-f0; + heapFloat[(r8+7)] = f1; + f1 = heapFloat[(r8+8)]; + f0 = f1-f0; + heapFloat[(r8+8)] = f0; + r2 = heap32[(r8+19)]; + r2 = r2 >> 2; + heap32[(r2+277)] = r1; + heap32[(r2+278)] = r4; + r1 = heap32[(r6)]; + r1 = r1 >> 2; + r1 = heap32[(r1+15)]; + r0 = (r0 + 12)|0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r12; + heap32[(g0+3)] = r11; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = heap32[(r7+1)]; + if(r0 !=0) //_LBB289_4 +{ + r1 = r0 >> 2; + r2 = heap32[(r1+279)]; +if(!(r2 ==0)) //_LBB289_8 +{ + r1 = heap32[(r1+277)]; + r2 = heap32[(r7+34)]; + if(r1 ==r2) //_LBB289_7 +{ + r1 = (r3 + 8)|0; + r2 = (r3 + 72)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r2; + _ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7); +} +else{ + r1 = (r3 + 72)|0; + r3 = (r3 + 8)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r3; + _ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7); + return; +} +} +} +else{ + r0 = _2E_str59; + r3 = _2E_str160; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = 101; + _assert(i7); +} +} +} + return; +} + +function _ZN33btConvexConcaveCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+19)]; +if(!(r1 ==0)) //_LBB290_22 +{ + r2 = heap32[(fp+1)]; + r3 = r2 >> 2; + r4 = heap32[(r3+2)]; + r5 = heap32[(r3+1)]; + if(r4 ==r5) //_LBB290_3 +{ + r6 = 1; + r7 = r5 << 1; + r7 = r5 == 0 ? r6 : r7; +if(!(r4 >=r7)) //_LBB290_2 +{ + if(r7 !=0) //_LBB290_6 +{ + r1 = gNumAlignedAllocs; + r1 = r1 >> 2; + r4 = heap32[(r1)]; + r8 = r7 << 2; + r4 = (r4 + 1)|0; + r8 = r8 | 3; + heap32[(r1)] = r4; + r1 = (r8 + 16)|0; + heap32[(g0)] = r1; + malloc(i7); + r1 = r_g0; + if(r1 !=0) //_LBB290_8 +{ + r4 = 0; + r8 = (r1 + 4)|0; + r4 = (r4 - r8)|0; + r4 = r4 & 15; + r4 = (r1 + r4)|0; + r8 = (r4 + 4)|0; + r4 = r4 >> 2; + heap32[(r4)] = r1; + r1 = r8; +} +} +else{ + r1 = 0; +} + r4 = (r2 + 12)|0; + if(r5 <1) //_LBB290_11 +{ + r8 = r4 >> 2; + r9 = heap32[(r8)]; +} +else{ + r8 = 0; +_14: while(true){ + r9 = r4 >> 2; + r9 = heap32[(r9)]; + r10 = r8 << 2; + r11 = (r9 + r10)|0; + r11 = r11 >> 2; + r10 = (r1 + r10)|0; + r11 = heap32[(r11)]; + r8 = (r8 + 1)|0; + r10 = r10 >> 2; + heap32[(r10)] = r11; +if(!(r5 !=r8)) //_LBB290_12 +{ +break _14; +} +} + r4 = (r2 + 12)|0; +} + if(r9 !=0) //_LBB290_16 +{ + r8 = heapU8[r2+16]; + if(r8 !=0) //_LBB290_18 +{ + r5 = gNumAlignedFree; + r5 = r5 >> 2; + r8 = heap32[(r5)]; + r8 = (r8 + 1)|0; + r9 = r9 >> 2; + heap32[(r5)] = r8; + r5 = heap32[(r9+-1)]; + heap32[(g0)] = r5; + free(i7); + r5 = heap32[(r3+1)]; +} + r8 = r4 >> 2; + heap32[(r8)] = 0; +} + r4 = r4 >> 2; + heap8[r2+16] = r6; + heap32[(r4)] = r1; + heap32[(r3+2)] = r7; + r1 = heap32[(r0+19)]; +} +} + r0 = r5 << 2; + r2 = heap32[(r3+3)]; + r0 = (r2 + r0)|0; + r0 = r0 >> 2; + heap32[(r0)] = r1; + r0 = heap32[(r3+1)]; + r0 = (r0 + 1)|0; + heap32[(r3+1)] = r0; +} + return; +} + +function _ZN33btConvexConcaveCollisionAlgorithmD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV33btConvexConcaveCollisionAlgorithm; + r2 = _ZTV24btConvexTriangleCallback; + r1 = (r1 + 8)|0; + r3 = r0 >> 2; + r2 = (r2 + 8)|0; + heap32[(r3)] = r1; + heap32[(r3+3)] = r2; + r1 = heap32[(r3+15)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+5)]; + r4 = heap32[(r3+19)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r4; + __FUNCTION_TABLE__[(r2)>>2](i7); + r1 = heap32[(r3+15)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + r4 = heap32[(r3+19)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r4; + r1 = _ZTV18btTriangleCallback; + r4 = _ZTV30btActivatingCollisionAlgorithm; + r1 = (r1 + 8)|0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = (r4 + 8)|0; + heap32[(r3+3)] = r1; + heap32[(r3)] = r2; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN33btConvexConcaveCollisionAlgorithmD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV33btConvexConcaveCollisionAlgorithm; + r2 = _ZTV24btConvexTriangleCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + r2 = (r2 + 8)|0; + heap32[(r0)] = r1; + heap32[(r0+3)] = r2; + r1 = heap32[(r0+15)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+5)]; + r3 = heap32[(r0+19)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r3; + __FUNCTION_TABLE__[(r2)>>2](i7); + r1 = heap32[(r0+15)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + r3 = heap32[(r0+19)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r3; + r1 = _ZTV18btTriangleCallback; + r3 = _ZTV30btActivatingCollisionAlgorithm; + r1 = (r1 + 8)|0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = (r3 + 8)|0; + heap32[(r0+3)] = r1; + heap32[(r0)] = r2; + return; +} + +function _ZN23btConvexConvexAlgorithm10CreateFuncD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN23btConvexConvexAlgorithm10CreateFuncE; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN23btConvexConvexAlgorithm10CreateFuncD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN23btConvexConvexAlgorithm10CreateFuncE; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN23btConvexConvexAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+12)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 36; + r1 = heap32[(fp)]; + __FUNCTION_TABLE__[(r2)>>2](i7); + r1 = r1 >> 2; + r3 = _ZTV20btCollisionAlgorithm; + r4 = heap32[(r1+5)]; + r5 = heap32[(r1+4)]; + r6 = heap32[(r0+1)]; + r7 = heap32[(r1+2)]; + r1 = heap32[(r1+3)]; + r8 = r_g0 >> 2; + r3 = (r3 + 8)|0; + heap32[(r8)] = r3; + r0 = heap32[(r0)]; + r3 = _ZTV23btConvexConvexAlgorithm; + r3 = (r3 + 8)|0; + heap32[(r8+1)] = r0; + heap32[(r8)] = r3; + heap32[(r8+2)] = r1; + r0 = 0; + heap32[(r8+3)] = r7; + heap8[r_g0+16] = r0; + heap32[(r8+5)] = r6; + heap8[r_g0+24] = r0; + heap32[(r8+7)] = r5; + heap32[(r8+8)] = r4; + return; +} + +function _ZN24btPerturbedContactResultD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV24btPerturbedContactResult; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN24btPerturbedContactResultD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV24btPerturbedContactResult; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN24btPerturbedContactResult15addContactPointERK9btVector3S2_f(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; + var f30; +var __label__ = 0; + i7 = sp + -104;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = r0 >> 2; + r2 = heap32[(fp+2)]; + r2 = r2 >> 2; + f0 = heapFloat[(r1+2)]; + heapFloat[(fp+-5)] = f0; + f1 = heapFloat[(r1+1)]; + heapFloat[(fp+-6)] = f1; + f2 = heapFloat[(fp+3)]; + f3 = heapFloat[(r1)]; + heapFloat[(fp+-7)] = f3; + f4 = heapFloat[(r2+2)]; + heapFloat[(fp+-11)] = f4; + f0 = f0*f2; + f5 = heapFloat[(r2+1)]; + heapFloat[(fp+-12)] = f5; + f1 = f1*f2; + f6 = heapFloat[(r2)]; + heapFloat[(fp+-13)] = f6; + f2 = f3*f2; + r1 = heap32[(fp)]; + f0 = f4+f0; + heapFloat[(fp+-8)] = f0; + f0 = f5+f1; + heapFloat[(fp+-9)] = f0; + f0 = f6+f2; + heapFloat[(fp+-10)] = f0; + r2 = heapU8[r1+356]; + if(r2 ==0) //_LBB298_2 +{ + r2 = r1 >> 2; + f3 = heapFloat[(r2+69)]; + f3 = -f3; + f0 = heapFloat[(r2+57)]; + f1 = heapFloat[(r2+58)]; + f2 = heapFloat[(r2+61)]; + f4 = heapFloat[(r2+70)]; + f5 = heapFloat[(r2+62)]; + f6 = heapFloat[(r2+77)]; + f7 = heapFloat[(r2+78)]; + f8 = heapFloat[(r2+73)]; + f9 = heapFloat[(r2+65)]; + f10 = heapFloat[(r2+74)]; + f11 = heapFloat[(r2+66)]; + f12 = heapFloat[(r2+71)]; + f13 = heapFloat[(r2+59)]; + f14 = heapFloat[(r2+63)]; + f15 = f0*f3; + f16 = f2*f4; + f17 = f1*f3; + f18 = f5*f4; + f19 = heapFloat[(r2+81)]; + f20 = heapFloat[(r2+82)]; + f21 = heapFloat[(r2+79)]; + f22 = heapFloat[(r2+67)]; + f23 = heapFloat[(r2+75)]; + f24 = f0*f6; + f25 = f1*f7; + f26 = f2*f6; + f27 = f5*f7; + f28 = f0*f8; + heapFloat[(fp+-14)] = f28; + f28 = f1*f10; + heapFloat[(fp+-15)] = f28; + f29 = f2*f8; + f28 = f5*f10; + f15 = f15-f16; + f16 = f9*f12; + f17 = f17-f18; + f18 = f11*f12; + f3 = f13*f3; + heapFloat[(fp+-16)] = f3; + f3 = f14*f4; + heapFloat[(fp+-20)] = f3; + f4 = f15-f16; + f15 = f17-f18; + f16 = heapFloat[(r2+83)]; + f0 = f0*f19; + f1 = f1*f20; + f2 = f2*f19; + f5 = f5*f20; + f17 = f24+f25; + heapFloat[(fp+-17)] = f17; + f3 = f13*f21; + heapFloat[(fp+-21)] = f3; + f17 = f26+f27; + heapFloat[(fp+-18)] = f17; + f18 = f14*f21; + f24 = f9*f6; + heapFloat[(fp+-19)] = f24; + f25 = f11*f7; + f26 = heapFloat[(fp+-14)]; + f27 = heapFloat[(fp+-15)]; + f26 = f26+f27; + f27 = f13*f23; + f28 = f29+f28; + f29 = f14*f23; + f30 = f9*f8; + f3 = f11*f10; + f17 = heapFloat[(fp+-16)]; + f24 = heapFloat[(fp+-20)]; + f17 = f17-f24; + f12 = f22*f12; + f12 = f17-f12; + f0 = f0+f1; + f1 = f13*f16; + f2 = f2+f5; + f5 = f14*f16; + f9 = f9*f19; + f11 = f11*f20; + f17 = heapFloat[(fp+-17)]; + f13 = heapFloat[(fp+-21)]; + f13 = f17+f13; + f14 = f26+f27; + f17 = heapFloat[(fp+-18)]; + f17 = f17+f18; + f18 = f28+f29; + f24 = heapFloat[(fp+-19)]; + f24 = f24+f25; + f25 = f22*f21; + f6 = f6*f4; + f7 = f7*f15; + f3 = f30+f3; + f26 = f22*f23; + f8 = f8*f4; + f10 = f10*f15; + f0 = f0+f1; + f1 = f2+f5; + f2 = f9+f11; + f5 = f22*f16; + f4 = f19*f4; + f9 = f20*f15; + f11 = heapFloat[(fp+-13)]; + f13 = f13*f11; + f15 = heapFloat[(fp+-12)]; + f17 = f17*f15; + f19 = f24+f25; + f3 = f3+f26; + f6 = f6+f7; + f7 = f21*f12; + f14 = f14*f11; + f18 = f18*f15; + f8 = f8+f10; + f10 = f23*f12; + f2 = f2+f5; + f0 = f0*f11; + f1 = f1*f15; + f4 = f4+f9; + f5 = f16*f12; + f9 = f13+f17; + f11 = heapFloat[(fp+-11)]; + f12 = f19*f11; + f6 = f6+f7; + f7 = heapFloat[(r2+86)]; + f13 = f14+f18; + f3 = f3*f11; + f8 = f8+f10; + f10 = heapFloat[(r2+85)]; + f14 = heapFloat[(r2+87)]; + f4 = f4+f5; + f0 = f0+f1; + f1 = f2*f11; + f2 = f9+f12; + f5 = f6+f7; + f3 = f13+f3; + f6 = f8+f10; + f3 = f3+f6; + f2 = f2+f5; + f0 = f0+f1; + f1 = f4+f14; + r2 = sp + -16; + f4 = heapFloat[(fp+-10)]; + f4 = f4-f3; + f5 = heapFloat[(fp+-9)]; + f5 = f5-f2; + f0 = f0+f1; + f1 = heapFloat[(fp+-7)]; + f1 = f4*f1; + f4 = heapFloat[(fp+-6)]; + f4 = f5*f4; + f5 = heapFloat[(fp+-8)]; + f5 = f5-f0; + r2 = r2 >> 2; + heapFloat[(fp+-4)] = f3; + heapFloat[(r2+1)] = f2; + f3 = f1+f4; + f1 = heapFloat[(fp+-5)]; + f1 = f5*f1; + f3 = f3+f1; + heapFloat[(r2+2)] = f0; + heap32[(r2+3)] = 0; +} +else{ + r2 = r1 >> 2; + f0 = heapFloat[(r2+53)]; + f0 = -f0; + f1 = heapFloat[(r2+41)]; + f2 = heapFloat[(r2+42)]; + f3 = heapFloat[(r2+45)]; + f4 = heapFloat[(r2+54)]; + f5 = heapFloat[(r2+46)]; + f6 = heapFloat[(r2+77)]; + f7 = heapFloat[(r2+78)]; + f8 = heapFloat[(r2+73)]; + f9 = heapFloat[(r2+49)]; + f10 = heapFloat[(r2+74)]; + f11 = heapFloat[(r2+50)]; + f12 = heapFloat[(r2+55)]; + f13 = heapFloat[(r2+43)]; + f14 = heapFloat[(r2+47)]; + f15 = f1*f0; + f16 = f3*f4; + f17 = f2*f0; + f18 = f5*f4; + f19 = heapFloat[(r2+81)]; + f20 = heapFloat[(r2+82)]; + f21 = heapFloat[(r2+79)]; + f22 = heapFloat[(r2+51)]; + f23 = heapFloat[(r2+75)]; + f24 = f1*f8; + f25 = f2*f10; + f26 = f3*f8; + f27 = f5*f10; + f28 = f1*f6; + heapFloat[(fp+-14)] = f28; + f29 = f2*f7; + f30 = f3*f6; + f28 = f5*f7; + f15 = f15-f16; + f16 = f9*f12; + f17 = f17-f18; + f18 = f11*f12; + f0 = f13*f0; + heapFloat[(fp+-15)] = f0; + f0 = f14*f4; + heapFloat[(fp+-16)] = f0; + f4 = f15-f16; + f15 = f17-f18; + f16 = heapFloat[(r2+83)]; + f0 = f24+f25; + heapFloat[(fp+-17)] = f0; + f17 = f13*f23; + f0 = f26+f27; + heapFloat[(fp+-18)] = f0; + f18 = f14*f23; + f24 = f9*f8; + f25 = f11*f10; + f26 = heapFloat[(fp+-14)]; + f26 = f26+f29; + f27 = f13*f21; + f28 = f30+f28; + f29 = f14*f21; + f30 = f9*f6; + f0 = f11*f7; + f1 = f1*f19; + heapFloat[(fp+-14)] = f1; + f2 = f2*f20; + f1 = f3*f19; + heapFloat[(fp+-19)] = f1; + f3 = f5*f20; + f5 = heapFloat[(fp+-15)]; + f1 = heapFloat[(fp+-16)]; + f1 = f5-f1; + f5 = f22*f12; + f1 = f1-f5; + f5 = heapFloat[(fp+-17)]; + f5 = f5+f17; + f12 = f26+f27; + f17 = heapFloat[(fp+-18)]; + f17 = f17+f18; + f18 = f28+f29; + f24 = f24+f25; + f25 = f22*f23; + f8 = f8*f4; + f10 = f10*f15; + f0 = f30+f0; + f26 = f22*f21; + f6 = f6*f4; + f7 = f7*f15; + f27 = heapFloat[(fp+-14)]; + f2 = f27+f2; + f13 = f13*f16; + f27 = heapFloat[(fp+-19)]; + f3 = f27+f3; + f14 = f14*f16; + f9 = f9*f19; + f11 = f11*f20; + f2 = f2+f13; + f3 = f3+f14; + f13 = heapFloat[(fp+-10)]; + f5 = f5*f13; + f14 = heapFloat[(fp+-9)]; + f17 = f17*f14; + f24 = f24+f25; + f0 = f0+f26; + f8 = f8+f10; + f10 = f23*f1; + f12 = f12*f13; + f18 = f18*f14; + f6 = f6+f7; + f7 = f21*f1; + f9 = f9+f11; + f11 = f22*f16; + f4 = f19*f4; + f15 = f20*f15; + f9 = f9+f11; + f5 = f5+f17; + f11 = heapFloat[(fp+-8)]; + f17 = f24*f11; + f8 = f8+f10; + f10 = heapFloat[(r2+85)]; + f12 = f12+f18; + f0 = f0*f11; + f6 = f6+f7; + f7 = heapFloat[(r2+86)]; + f2 = f2*f13; + f3 = f3*f14; + f4 = f4+f15; + f1 = f16*f1; + f13 = heapFloat[(r2+87)]; + f1 = f4+f1; + f4 = f5+f17; + f5 = f8+f10; + f0 = f12+f0; + f6 = f6+f7; + f2 = f2+f3; + f3 = f9*f11; + f4 = f4+f5; + f0 = f0+f6; + f2 = f2+f3; + f1 = f1+f13; + f3 = heapFloat[(fp+-13)]; + f3 = f4-f3; + f5 = heapFloat[(fp+-12)]; + f5 = f0-f5; + f1 = f2+f1; + f2 = heapFloat[(fp+-7)]; + f3 = f3*f2; + f6 = heapFloat[(fp+-6)]; + f5 = f5*f6; + f7 = heapFloat[(fp+-11)]; + f7 = f1-f7; + f3 = f3+f5; + f5 = heapFloat[(fp+-5)]; + f7 = f7*f5; + f3 = f3+f7; + f2 = f2*f3; + r2 = sp + -16; + f6 = f6*f3; + f2 = f4+f2; + f4 = f5*f3; + r2 = r2 >> 2; + f0 = f0+f6; + heapFloat[(fp+-4)] = f2; + f1 = f1+f4; + heapFloat[(r2+1)] = f0; + heapFloat[(r2+2)] = f1; + heap32[(r2+3)] = 0; +} + r1 = r1 >> 2; + r1 = heap32[(r1+40)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + r3 = sp + -16; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r3; + heapFloat[(g0+3)] = f3; + __FUNCTION_TABLE__[(r2)>>2](i7); + return; +} + +function _ZN23btConvexConvexAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+5)]; +if(!(r2 ==0)) //_LBB299_23 +{ + r0 = heapU8[r0+16]; +if(!(r0 ==0)) //_LBB299_23 +{ + r0 = heap32[(fp+1)]; + r3 = r0 >> 2; + r4 = heap32[(r3+2)]; + r5 = heap32[(r3+1)]; + if(r4 ==r5) //_LBB299_4 +{ + r6 = 1; + r7 = r5 << 1; + r7 = r5 == 0 ? r6 : r7; +if(!(r4 >=r7)) //_LBB299_3 +{ + if(r7 !=0) //_LBB299_7 +{ + r2 = gNumAlignedAllocs; + r2 = r2 >> 2; + r4 = heap32[(r2)]; + r8 = r7 << 2; + r4 = (r4 + 1)|0; + r8 = r8 | 3; + heap32[(r2)] = r4; + r2 = (r8 + 16)|0; + heap32[(g0)] = r2; + malloc(i7); + r2 = r_g0; + if(r2 !=0) //_LBB299_9 +{ + r4 = 0; + r8 = (r2 + 4)|0; + r4 = (r4 - r8)|0; + r4 = r4 & 15; + r4 = (r2 + r4)|0; + r8 = (r4 + 4)|0; + r4 = r4 >> 2; + heap32[(r4)] = r2; + r2 = r8; +} +} +else{ + r2 = 0; +} + r4 = (r0 + 12)|0; + if(r5 <1) //_LBB299_12 +{ + r8 = r4 >> 2; + r9 = heap32[(r8)]; +} +else{ + r8 = 0; +_15: while(true){ + r9 = r4 >> 2; + r9 = heap32[(r9)]; + r10 = r8 << 2; + r11 = (r9 + r10)|0; + r11 = r11 >> 2; + r10 = (r2 + r10)|0; + r11 = heap32[(r11)]; + r8 = (r8 + 1)|0; + r10 = r10 >> 2; + heap32[(r10)] = r11; +if(!(r5 !=r8)) //_LBB299_13 +{ +break _15; +} +} + r4 = (r0 + 12)|0; +} + if(r9 !=0) //_LBB299_17 +{ + r8 = heapU8[r0+16]; + if(r8 !=0) //_LBB299_19 +{ + r5 = gNumAlignedFree; + r5 = r5 >> 2; + r8 = heap32[(r5)]; + r8 = (r8 + 1)|0; + r9 = r9 >> 2; + heap32[(r5)] = r8; + r5 = heap32[(r9+-1)]; + heap32[(g0)] = r5; + free(i7); + r5 = heap32[(r3+1)]; +} + r8 = r4 >> 2; + heap32[(r8)] = 0; +} + r4 = r4 >> 2; + heap8[r0+16] = r6; + heap32[(r4)] = r2; + heap32[(r3+2)] = r7; + r2 = heap32[(r1+5)]; +} +} + r0 = r5 << 2; + r1 = heap32[(r3+3)]; + r0 = (r1 + r0)|0; + r0 = r0 >> 2; + heap32[(r0)] = r2; + r0 = heap32[(r3+1)]; + r0 = (r0 + 1)|0; + heap32[(r3+1)] = r0; +} +} + return; +} + +function _ZN23btConvexConvexAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + -1240;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = r0 >> 2; + r2 = heap32[(fp+2)]; + r3 = r2 >> 2; + f0 = heapFloat[(r1+29)]; + f1 = heapFloat[(r1+13)]; + f2 = heapFloat[(r1+30)]; + f3 = heapFloat[(r1+14)]; + f0 = f0-f1; + f1 = f2-f3; + f2 = heapFloat[(r1+31)]; + f3 = heapFloat[(r1+15)]; + f2 = f2-f3; + f0 = f0*f0; + f1 = f1*f1; + f3 = heapFloat[(r1+62)]; + f0 = f0+f1; + f1 = f2*f2; + f2 = f3*f3; + f0 = f0+f1; +if(!(f2 <=f0)) //_LBB300_2 +{ + f0 = heapFloat[(r3+31)]; + f1 = heapFloat[(r3+15)]; + f2 = heapFloat[(r3+30)]; + f3 = heapFloat[(r3+14)]; + f4 = heapFloat[(r3+29)]; + f5 = heapFloat[(r3+13)]; + f0 = f0-f1; + f1 = f2-f3; + f2 = f4-f5; + f2 = f2*f2; + f1 = f1*f1; + f3 = heapFloat[(r3+62)]; + f1 = f2+f1; + f0 = f0*f0; + f2 = f3*f3; + f0 = f1+f0; + if(f2 >f0) //_LBB300_16 +{ + f0 = 1; + f_g0 = f0; + return; +} +} + r4 = sp + -56; + r5 = heap32[(r1+48)]; + f0 = heapFloat[(r3+61)]; + r6 = r4 >> 2; + heap32[(r6+2)] = 0; + heap32[(r6+3)] = 1065353216; + heap32[(r6+4)] = 1065353216; + r7 = _ZTV13btSphereShape; + heap32[(r6+5)] = 1065353216; + r7 = (r7 + 8)|0; + heap32[(r6+6)] = 0; + heap32[(fp+-14)] = r7; + heap32[(r6+1)] = 8; + r8 = _ZTVN12btConvexCast10CastResultE; + heapFloat[(r6+7)] = f0; + r9 = sp + -232; + r8 = (r8 + 8)|0; + heapFloat[(r6+11)] = f0; + r6 = r9 >> 2; + heap32[(fp+-58)] = r8; + heap32[(r6+41)] = 1566444395; + r10 = sp + -592; + heap32[(r6+42)] = 0; + r11 = r10 >> 2; + heap32[(r6+43)] = 0; + r12 = _ZTV15btGjkConvexCast; + r13 = 0; + heap32[(r11+77)] = 953267991; + r11 = sp + -608; + r12 = (r12 + 8)|0; + heap8[sp+-260] = r13; + r13 = r11 >> 2; + heap32[(fp+-152)] = r12; + heap32[(r13+1)] = r10; + heap32[(r13+2)] = r5; + heap32[(r13+3)] = r4; + r4 = (r2 + 68)|0; + r2 = (r2 + 4)|0; + r5 = (r0 + 68)|0; + r0 = (r0 + 4)|0; + heap32[(g0)] = r11; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r2; + heap32[(g0+4)] = r4; + heap32[(g0+5)] = r9; + _ZN15btGjkConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(i7); + r9 = r_g0; + if(r9 !=0) //_LBB300_4 +{ + f0 = heapFloat[(r6+41)]; + f1 = heapFloat[(r1+60)]; +if(!(f1 <=f0)) //_LBB300_6 +{ + heapFloat[(r1+60)] = f0; +} + f1 = heapFloat[(r3+60)]; +if(!(f1 <=f0)) //_LBB300_8 +{ + heapFloat[(r3+60)] = f0; +} + f1 = 1; + if(f0 >=f1) //_LBB300_3 +{ +__label__ = 3; +} +else{ +__label__ = 9; +} +} +else{ +__label__ = 3; +} +if (__label__ == 3){ + f0 = 1; +} + r6 = _ZTV12btConvexCast; + r9 = _ZTV13btConvexShape; + r6 = (r6 + 8)|0; + r9 = (r9 + 8)|0; + heap32[(fp+-152)] = r6; + heap32[(fp+-14)] = r9; + r6 = sp + -664; + r9 = heap32[(r3+48)]; + f1 = heapFloat[(r1+61)]; + r10 = r6 >> 2; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 1065353216; + heap32[(r10+4)] = 1065353216; + heap32[(r10+5)] = 1065353216; + heap32[(r10+6)] = 0; + heap32[(fp+-166)] = r7; + heap32[(r10+1)] = 8; + heapFloat[(r10+7)] = f1; + r7 = sp + -840; + heapFloat[(r10+11)] = f1; + r10 = r7 >> 2; + heap32[(fp+-210)] = r8; + heap32[(r10+41)] = 1566444395; + r8 = sp + -1200; + heap32[(r10+42)] = 0; + r11 = r8 >> 2; + heap32[(r10+43)] = 0; + heap32[(r11+77)] = 953267991; + r11 = heapU8[sp+-868]; + r11 = r11 & 240; + r13 = sp + -1216; + heap8[sp+-868] = r11; + r11 = r13 >> 2; + heap32[(fp+-304)] = r12; + heap32[(r11+1)] = r8; + heap32[(r11+2)] = r6; + heap32[(r11+3)] = r9; + heap32[(g0)] = r13; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r2; + heap32[(g0+4)] = r4; + heap32[(g0+5)] = r7; + _ZN15btGjkConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(i7); + r0 = r_g0; +if(!(r0 ==0)) //_LBB300_15 +{ + f1 = heapFloat[(r10+41)]; + f2 = heapFloat[(r1+60)]; +if(!(f2 <=f1)) //_LBB300_12 +{ + heapFloat[(r1+60)] = f1; +} + f2 = heapFloat[(r3+60)]; +if(!(f2 <=f1)) //_LBB300_14 +{ + heapFloat[(r3+60)] = f1; +} + f0 = f1 < f0 ? f1 : f0; +} + f_g0 = f0; + return; +} + +function _ZN23btConvexConvexAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; + var f30; +var __label__ = 0; + i7 = sp + -816;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+5)]; + r3 = heap32[(fp+1)]; + r4 = heap32[(fp+2)]; + r5 = heap32[(fp+3)]; + r6 = heap32[(fp+4)]; + if(r2 ==0) //_LBB301_2 +{ + r2 = heap32[(r1+1)]; + r7 = r2 >> 2; + r7 = heap32[(r7)]; + r7 = r7 >> 2; + r7 = heap32[(r7+3)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r4; + __FUNCTION_TABLE__[(r7)>>2](i7); + r2 = r_g0; + r7 = 1; + heap32[(r1+5)] = r2; + heap8[r0+16] = r7; +} + r7 = r6 >> 2; + r8 = r3 >> 2; + heap32[(r7+1)] = r2; + r2 = r4 >> 2; + r9 = heap32[(r8+48)]; + r10 = heap32[(r2+48)]; + r11 = r9 >> 2; + r12 = heap32[(r11+1)]; + if(r12 !=10) //_LBB301_5 +{ +__label__ = 4; +} +else{ + r12 = r10 >> 2; + r13 = heap32[(r12+1)]; + if(r13 ==10) //_LBB301_6 +{ + r0 = heap32[(r11)]; + r0 = r0 >> 2; + r0 = heap32[(r0+7)]; + heap32[(g0)] = r9; + __FUNCTION_TABLE__[(r0)>>2](i7); + r0 = heap32[(r12)]; + r0 = r0 >> 2; + r0 = heap32[(r0+7)]; + heap32[(g0)] = r10; + __FUNCTION_TABLE__[(r0)>>2](i7); + r0 = heap32[(r11+13)]; + r5 = heap32[(r12+13)]; + r11 = r5 << 2; + r12 = r0 << 2; + r3 = (r3 + r12)|0; + r4 = (r4 + r11)|0; + r3 = r3 >> 2; + r4 = r4 >> 2; + r5 = (r5 + 2)|0; + r0 = (r0 + 2)|0; + f0 = heapFloat[(r3+1)]; + f1 = heapFloat[(r4+1)]; + f2 = heapFloat[(r3+5)]; + f3 = heapFloat[(r4+5)]; + r5 = (r5 % 3)|0; + r0 = (r0 % 3)|0; + f4 = heapFloat[(r3+9)]; + f5 = heapFloat[(r4+9)]; + f6 = f0*f1; + f7 = f2*f3; + f8 = heapFloat[(r2+13)]; + f9 = heapFloat[(r8+13)]; + f10 = heapFloat[(r2+14)]; + f11 = heapFloat[(r8+14)]; + f8 = f8-f9; + f9 = f10-f11; + r3 = (r10 + 28)|0; + r4 = r5 << 2; + r5 = (r9 + 28)|0; + r0 = r0 << 2; + f6 = f6+f7; + f7 = f4*f5; + f10 = heapFloat[(r2+15)]; + f11 = heapFloat[(r8+15)]; + f10 = f10-f11; + f6 = f6+f7; + r1 = heap32[(r1+5)]; + r4 = (r3 + r4)|0; + r3 = (r3 + r11)|0; + r0 = (r5 + r0)|0; + r5 = (r5 + r12)|0; + f7 = f0*f8; + f11 = f2*f9; + f12 = f1*f8; + f13 = f3*f9; + r1 = r1 >> 2; + r4 = r4 >> 2; + r3 = r3 >> 2; + r0 = r0 >> 2; + r5 = r5 >> 2; + f14 = 1; + f15 = f6*f6; + f7 = f7+f11; + f11 = f4*f10; + f12 = f12+f13; + f13 = f5*f10; + f15 = f14-f15; + f16 = heapFloat[(r1+280)]; + f17 = heapFloat[(r4)]; + f18 = heapFloat[(r3)]; + f19 = heapFloat[(r0)]; + f20 = heapFloat[(r5)]; + f7 = f7+f11; + f11 = f12+f13; + f12 = 0; + if(f15 !=f12) //_LBB301_8 +{ + f13 = f11*f6; + f13 = f7-f13; + f13 = f13/f15; + f15 = -f20; + if(f13 >=f15) //_LBB301_10 +{ + if(f13 >f20) //_LBB301_12 +{ + f15 = f20; +} +else{ + f15 = f13; +} +} +} +else{ + f15 = 0; +} + f13 = f15*f6; + f11 = f13-f11; + f13 = -f18; + if(f11 >=f13) //_LBB301_19 +{ + if(f11 >f18) //_LBB301_21 +{ + f13 = f6*f18; + f6 = f13+f7; + f15 = -f20; + if(f6 >=f15) //_LBB301_23 +{ + if(f6 >f20) //_LBB301_25 +{ + f13 = f18; + f15 = f20; +} +else{ + f13 = f18; + f15 = f6; +} +} +else{ + f13 = f18; +} +} +else{ + f13 = f11; +} +} +else{ + f6 = f6*f13; + f6 = f6+f7; + f15 = -f20; + if(f6 >=f15) //_LBB301_16 +{ + if(f6 >f20) //_LBB301_18 +{ + f15 = f20; +} +else{ + f15 = f6; +} +} +} + f6 = f0*f15; + f7 = f2*f15; + f1 = f1*f13; + f6 = f8-f6; + f3 = f3*f13; + f7 = f9-f7; + f8 = f4*f15; + f6 = f6+f1; + f7 = f7+f3; + f5 = f5*f13; + f8 = f10-f8; + f8 = f8+f5; + f9 = f6*f6; + f10 = f7*f7; + f9 = f9+f10; + f10 = f8*f8; + f9 = f9+f10; + heapFloat[(g0)] = f9; + sqrtf(i7); + f10 = f_g0-f19; + f10 = f10-f17; +if(!(f10 >f16)) //_LBB301_36 +{ + f11 = 1.4210854715202004e-014; + if(f9 >f11) //_LBB301_34 +{ + heapFloat[(g0)] = f9; + f0 = -1; + sqrtf(i7); + f0 = f0/f_g0; + f9 = f6*f0; + r0 = sp + -16; + f6 = f7*f0; + r0 = r0 >> 2; + heapFloat[(fp+-4)] = f9; + f12 = f8*f0; + heapFloat[(r0+1)] = f6; + heapFloat[(r0+2)] = f12; + heap32[(r0+3)] = 0; +} +else{ + if(f4 > 2; + heapFloat[(fp+-4)] = f9; + heapFloat[(r0+1)] = f6; + heap32[(r0+2)] = 0; +} +else{ + f0 = f2*f2; + f6 = f4*f4; + f0 = f0+f6; + heapFloat[(g0)] = f0; + sqrtf(i7); + r0 = sp + -16; + f0 = f14/f_g0; + f6 = -f4; + f6 = f0*f6; + r0 = r0 >> 2; + heap32[(fp+-4)] = 0; + f9 = 0; + f12 = f2*f0; + heapFloat[(r0+1)] = f6; + heapFloat[(r0+2)] = f12; +} +} + f0 = heapFloat[(r2+13)]; + f2 = heapFloat[(r2+14)]; + f4 = heapFloat[(r2+15)]; + f0 = f0+f1; + f1 = f9*f17; + r0 = sp + -32; + f2 = f2+f3; + f3 = f6*f17; + f0 = f0+f1; + r0 = r0 >> 2; + f1 = f4+f5; + f4 = f12*f17; + f2 = f2+f3; + heapFloat[(fp+-8)] = f0; + f0 = f1+f4; + heapFloat[(r0+1)] = f2; + heapFloat[(r0+2)] = f0; + heap32[(r0+3)] = 0; +} +if(!(f10 >=f16)) //_LBB301_40 +{ + r0 = sp + -16; + r1 = r0 >> 2; + f0 = heapFloat[(fp+-4)]; + f1 = heapFloat[(r1+1)]; + f2 = heapFloat[(r1+2)]; + f0 = f0*f0; + f1 = f1*f1; + f0 = f0+f1; + f1 = f2*f2; + f0 = f0+f1; + f1 = 1.4210854715202004e-014; + if(f0 >=f1) //_LBB301_39 +{ + r1 = heap32[(r7)]; + r1 = r1 >> 2; + r1 = heap32[(r1+4)]; + r2 = sp + -32; + heap32[(g0)] = r6; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r2; + heapFloat[(g0+3)] = f10; + __FUNCTION_TABLE__[(r1)>>2](i7); +} +else{ + r0 = _2E_str4119; + r1 = _2E_str5120; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 325; + _assert(i7); +} +} + r0 = heap32[(r7+1)]; + if(r0 !=0) //_LBB301_42 +{ + r1 = r0 >> 2; + r2 = heap32[(r1+279)]; + if(r2 ==0) //_LBB301_47 +{ +__label__ = 44; +} +else{ + r1 = heap32[(r1+277)]; + r2 = heap32[(r7+34)]; + if(r1 ==r2) //_LBB301_46 +{ +__label__ = 43; +} +else{ + r1 = (r6 + 72)|0; + r2 = (r6 + 8)|0; +__label__ = 42; +} +} +} +else{ + r0 = _2E_str59; + r1 = _2E_str160; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 101; + _assert(i7); +} +} +else{ +__label__ = 4; +} +} +if (__label__ == 4){ + r3 = sp + -168; + r4 = r3 >> 2; + heap32[(r4+32)] = 1566444395; + heap32[(r4+33)] = 0; + r12 = _ZTV17btGjkPairDetector; + r13 = heap32[(r1+2)]; + r14 = heap32[(r1+3)]; + r15 = sp + -248; + r12 = (r12 + 8)|0; + heap32[(fp+-62)] = r12; + r12 = r15 >> 2; + heap32[(r12+1)] = 0; + heap32[(r12+2)] = 1065353216; + heap32[(r12+3)] = 0; + heap32[(r12+4)] = 0; + heap32[(r12+5)] = r14; + heap32[(r12+6)] = r13; + heap32[(r12+7)] = r9; + heap32[(r12+8)] = r10; + r13 = heap32[(r11+1)]; + heap32[(r12+9)] = r13; + r13 = r10 >> 2; + r14 = heap32[(r13+1)]; + heap32[(r12+10)] = r14; + r14 = heap32[(r11)]; + r14 = r14 >> 2; + r14 = heap32[(r14+11)]; + heap32[(g0)] = r9; + __FUNCTION_TABLE__[(r14)>>2](i7); + heapFloat[(r12+11)] = f_g0; + r14 = heap32[(r13)]; + r14 = r14 >> 2; + r14 = heap32[(r14+11)]; + heap32[(g0)] = r10; + __FUNCTION_TABLE__[(r14)>>2](i7); + r14 = 0; + heapFloat[(r12+12)] = f_g0; + heap8[sp+-196] = r14; + heap32[(r12+15)] = -1; + heap32[(r12+18)] = 1; + heap32[(r12+7)] = r9; + heap32[(r12+8)] = r10; + r16 = heap32[(r11)]; + r16 = r16 >> 2; + r17 = heapU8[r5+40]; + r16 = heap32[(r16+11)]; + heap32[(g0)] = r9; + __FUNCTION_TABLE__[(r16)>>2](i7); + f0 = f_g0; + r16 = heap32[(r13)]; + r16 = r16 >> 2; + r16 = heap32[(r16+11)]; + heap32[(g0)] = r10; + __FUNCTION_TABLE__[(r16)>>2](i7); + f0 = f0+f_g0; + r16 = heap32[(r1+5)]; + if(r17 ==0) //_LBB301_49 +{ + r16 = (r16 + 1120)|0; +} +else{ + r16 = (r16 + 1124)|0; +} + r16 = r16 >> 2; + f1 = heapFloat[(r16)]; + f0 = f0+f1; + f0 = f0*f0; + r5 = r5 >> 2; + heapFloat[(r4+32)] = f0; + r16 = heap32[(r5+11)]; + heap32[(r4+33)] = r16; + heap32[(fp+-42)] = heap32[(r8+1)]; + heap32[(r4+1)] = heap32[(r8+2)]; + heap32[(r4+2)] = heap32[(r8+3)]; + heap32[(r4+3)] = heap32[(r8+4)]; + heap32[(r4+4)] = heap32[(r8+5)]; + heap32[(r4+5)] = heap32[(r8+6)]; + heap32[(r4+6)] = heap32[(r8+7)]; + heap32[(r4+7)] = heap32[(r8+8)]; + heap32[(r4+8)] = heap32[(r8+9)]; + heap32[(r4+9)] = heap32[(r8+10)]; + heap32[(r4+10)] = heap32[(r8+11)]; + heap32[(r4+11)] = heap32[(r8+12)]; + heap32[(r4+12)] = heap32[(r8+13)]; + heap32[(r4+13)] = heap32[(r8+14)]; + heap32[(r4+14)] = heap32[(r8+15)]; + heap32[(r4+15)] = heap32[(r8+16)]; + heap32[(r4+16)] = heap32[(r2+1)]; + heap32[(r4+17)] = heap32[(r2+2)]; + heap32[(r4+18)] = heap32[(r2+3)]; + heap32[(r4+19)] = heap32[(r2+4)]; + heap32[(r4+20)] = heap32[(r2+5)]; + heap32[(r4+21)] = heap32[(r2+6)]; + heap32[(r4+22)] = heap32[(r2+7)]; + heap32[(r4+23)] = heap32[(r2+8)]; + heap32[(r4+24)] = heap32[(r2+9)]; + heap32[(r4+25)] = heap32[(r2+10)]; + heap32[(r4+26)] = heap32[(r2+11)]; + heap32[(r4+27)] = heap32[(r2+12)]; + heap32[(r4+28)] = heap32[(r2+13)]; + heap32[(r4+29)] = heap32[(r2+14)]; + heap32[(r4+30)] = heap32[(r2+15)]; + heap32[(r4+31)] = heap32[(r2+16)]; + r16 = heap32[(r5+5)]; + heap32[(g0)] = r15; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r6; + heap32[(g0+3)] = r16; + heap32[(g0+4)] = 0; + _ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(i7); + r16 = heap32[(r1+7)]; +_63: do { +if(!(r16 ==0)) //_LBB301_73 +{ + r16 = heap32[(r7+1)]; + r16 = r16 >> 2; + r16 = heap32[(r16+279)]; + r17 = heap32[(r1+8)]; +if(!(r16 >=r17)) //_LBB301_73 +{ + f0 = heapFloat[(r12+1)]; + f1 = heapFloat[(r12+2)]; + f2 = heapFloat[(r12+3)]; + f0 = f0*f0; + f1 = f1*f1; + f0 = f0+f1; + f1 = f2*f2; + f0 = f0+f1; + heapFloat[(g0)] = f0; + sqrtf(i7); + f1 = 1; + heapFloat[(fp+-169)] = f1; + f2 = heapFloat[(r12+3)]; + f0 = f1/f_g0; + f1 = heapFloat[(r12+2)]; + f3 = heapFloat[(r12+1)]; + f2 = f2*f0; + heapFloat[(fp+-171)] = f2; + f1 = f1*f0; + heapFloat[(fp+-170)] = f1; + f0 = f3*f0; + heapFloat[(fp+-174)] = f0; + f0 = 0; + heapFloat[(fp+-175)] = f0; + if(f2 > 2; + r11 = heap32[(r11+4)]; + heap32[(g0)] = r9; + __FUNCTION_TABLE__[(r11)>>2](i7); + f0 = f_g0; + heapFloat[(fp+-194)] = f0; + r9 = heap32[(r13)]; + r9 = r9 >> 2; + r9 = heap32[(r9+4)]; + heap32[(g0)] = r10; + __FUNCTION_TABLE__[(r9)>>2](i7); + f1 = f_g0; + heapFloat[(fp+-195)] = f1; + r9 = f0 < f1; + f2 = 0.019999999552965164; + f3 = f0 < f1 ? f0 : f1; + r9 = r9 & 1; + f2 = f2/f3; + if(f0 >=f1) //_LBB301_60 +{ + f0 = heapFloat[(r4+16)]; + heapFloat[(fp+-176)] = f0; + f0 = heapFloat[(r4+17)]; + heapFloat[(fp+-177)] = f0; + f0 = heapFloat[(r4+18)]; + heapFloat[(fp+-178)] = f0; + f0 = heapFloat[(r4+19)]; + heapFloat[(fp+-179)] = f0; + f0 = heapFloat[(r4+20)]; + heapFloat[(fp+-180)] = f0; + f0 = heapFloat[(r4+21)]; + heapFloat[(fp+-181)] = f0; + f0 = heapFloat[(r4+22)]; + heapFloat[(fp+-182)] = f0; + f0 = heapFloat[(r4+23)]; + heapFloat[(fp+-183)] = f0; + f0 = heapFloat[(r4+24)]; + heapFloat[(fp+-184)] = f0; + f0 = heapFloat[(r4+25)]; + heapFloat[(fp+-185)] = f0; + f0 = heapFloat[(r4+26)]; + heapFloat[(fp+-186)] = f0; + f0 = heapFloat[(r4+27)]; + heapFloat[(fp+-187)] = f0; + f0 = heapFloat[(r4+28)]; + heapFloat[(fp+-188)] = f0; + f0 = heapFloat[(r4+29)]; + heapFloat[(fp+-189)] = f0; + f0 = heapFloat[(r4+30)]; + heapFloat[(fp+-190)] = f0; + f0 = heapFloat[(r4+31)]; + heapFloat[(fp+-191)] = f0; +} +else{ + f0 = heapFloat[(fp+-42)]; + heapFloat[(fp+-176)] = f0; + f0 = heapFloat[(r4+1)]; + heapFloat[(fp+-177)] = f0; + f0 = heapFloat[(r4+2)]; + heapFloat[(fp+-178)] = f0; + f0 = heapFloat[(r4+3)]; + heapFloat[(fp+-179)] = f0; + f0 = heapFloat[(r4+4)]; + heapFloat[(fp+-180)] = f0; + f0 = heapFloat[(r4+5)]; + heapFloat[(fp+-181)] = f0; + f0 = heapFloat[(r4+6)]; + heapFloat[(fp+-182)] = f0; + f0 = heapFloat[(r4+7)]; + heapFloat[(fp+-183)] = f0; + f0 = heapFloat[(r4+8)]; + heapFloat[(fp+-184)] = f0; + f0 = heapFloat[(r4+9)]; + heapFloat[(fp+-185)] = f0; + f0 = heapFloat[(r4+10)]; + heapFloat[(fp+-186)] = f0; + f0 = heapFloat[(r4+11)]; + heapFloat[(fp+-187)] = f0; + f0 = heapFloat[(r4+12)]; + heapFloat[(fp+-188)] = f0; + f0 = heapFloat[(r4+13)]; + heapFloat[(fp+-189)] = f0; + f0 = heapFloat[(r4+14)]; + heapFloat[(fp+-190)] = f0; + f0 = heapFloat[(r4+15)]; + heapFloat[(fp+-191)] = f0; +} + f0 = heapFloat[(fp+-173)]; + f0 = f0*f0; + f1 = heapFloat[(fp+-172)]; + f1 = f1*f1; + f3 = 0.5; + heapFloat[(fp+-193)] = f3; + f4 = heapFloat[(fp+-174)]; + f4 = f4*f4; + f5 = heapFloat[(fp+-170)]; + f5 = f5*f5; + f0 = f0+f1; + f1 = heapFloat[(fp+-175)]; + f1 = f1*f1; + f6 = 0.39269909262657166; + f7 = 0.19634954631328583; + f3 = f2*f3; + f4 = f4+f5; + f5 = heapFloat[(fp+-171)]; + f5 = f5*f5; + f0 = f0+f1; + heapFloat[(fp+-196)] = f0; + f0 = f2 > f6 ? f7 : f3; + heapFloat[(fp+-197)] = f0; + f0 = f4+f5; + heapFloat[(fp+-192)] = f0; +_78: while(true){ + r10 = heap32[(r1+7)]; + if(r10 >r14) //_LBB301_62 +{ + f0 = 1.1920928955078125e-007; + f1 = heapFloat[(fp+-196)]; +if(!(f1 <=f0)) //_LBB301_71 +{ + f0 = f1; + heapFloat[(g0)] = f0; + sqrtf(i7); + f0 = f_g0; + f1 = 0; + if(f0 !=f1) //_LBB301_65 +{ + f2 = heapFloat[(fp+-197)]; + heapFloat[(g0)] = f2; + sinf(i7); + f3 = f_g0; + heapFloat[(g0)] = f2; + cosf(i7); + f2 = f_g0; + r10 = heap32[(r1+7)]; + f4 = heapFloat[(fp+-192)]; + heapFloat[(g0)] = f4; + sqrtf(i7); + f4 = f_g0; + if(f4 !=f1) //_LBB301_67 +{ + f0 = f3/f0; + f3 = heapFloat[(fp+-175)]; + f3 = f3*f0; + f5 = heapFloat[(fp+-172)]; + f5 = f5*f0; + f6 = heapFloat[(fp+-173)]; + f0 = f6*f0; + f6 = 6.2831854820251465; + f7 = r10; //fitos r10, f7 + f8 = r14; //fitos r14, f8 + f6 = f6/f7; + f6 = f8*f6; + f7 = heapFloat[(fp+-193)]; + f6 = f6*f7; + heapFloat[(g0)] = f6; + sinf(i7); + heapFloat[(g0)] = f6; + f4 = f_g0/f4; + f6 = heapFloat[(fp+-171)]; + f6 = f6*f4; + f7 = heapFloat[(fp+-170)]; + f7 = f7*f4; + f8 = heapFloat[(fp+-174)]; + f4 = f8*f4; + cosf(i7); + f8 = f_g0; + f10 = heapFloat[(fp+-195)]; + f9 = heapFloat[(fp+-194)]; + if(f9 >=f10) //_LBB301_69 +{ + f9 = heapFloat[(r8+1)]; + heapFloat[(fp+-155)] = f9; + heapFloat[(fp+-42)] = f9; + f9 = heapFloat[(r8+2)]; + heapFloat[(fp+-156)] = f9; + heapFloat[(r4+1)] = f9; + f9 = heapFloat[(r8+3)]; + heapFloat[(fp+-157)] = f9; + heapFloat[(r4+2)] = f9; + f9 = heapFloat[(r8+4)]; + heapFloat[(fp+-163)] = f9; + heapFloat[(r4+3)] = f9; + f9 = heapFloat[(r8+5)]; + heapFloat[(fp+-158)] = f9; + heapFloat[(r4+4)] = f9; + f9 = heapFloat[(r8+6)]; + heapFloat[(fp+-159)] = f9; + heapFloat[(r4+5)] = f9; + f9 = heapFloat[(r8+7)]; + heapFloat[(fp+-160)] = f9; + heapFloat[(r4+6)] = f9; + f9 = heapFloat[(r8+8)]; + heapFloat[(fp+-162)] = f9; + heapFloat[(r4+7)] = f9; + f9 = heapFloat[(r8+9)]; + heapFloat[(fp+-161)] = f9; + f10 = f8*f2; + f11 = f0*f4; + f12 = f8*f0; + f13 = f2*f4; + f14 = f8*f5; + f15 = f2*f7; + heapFloat[(r4+8)] = f9; + f9 = f10+f11; + f10 = f5*f7; + f11 = f8*f3; + f2 = f2*f6; + f12 = f12-f13; + f13 = f3*f7; + f14 = f14-f15; + f15 = f0*f6; + f16 = heapFloat[(r8+10)]; + heapFloat[(fp+-164)] = f16; + f9 = f9+f10; + f10 = f3*f6; + f2 = f11-f2; + f11 = f5*f4; + f12 = f12-f13; + f5 = f5*f6; + f13 = f14-f15; + f3 = f3*f4; + f9 = f9+f10; + f5 = f12+f5; + f3 = f13+f3; + heapFloat[(r4+9)] = f16; + f2 = f2-f11; + f0 = f0*f7; + f0 = f2+f0; + f2 = heapFloat[(r8+11)]; + heapFloat[(fp+-166)] = f2; + f10 = f9*f7; + f11 = f3*f8; + f12 = f9*f4; + f13 = f5*f8; + heapFloat[(r4+10)] = f2; + f2 = f10+f11; + f10 = f0*f4; + f11 = f12+f13; + f12 = f3*f6; + f13 = f9*f6; + f14 = f0*f8; + f17 = heapFloat[(r8+12)]; + f8 = f9*f8; + f9 = f5*f4; + f2 = f2+f10; + f10 = f5*f6; + f11 = f11+f12; + f12 = f0*f7; + f13 = f13+f14; + f5 = f5*f7; + f10 = f2-f10; + f2 = f11-f12; + heapFloat[(r4+11)] = f17; + f8 = f8-f9; + f7 = f3*f7; + f5 = f13+f5; + f3 = f3*f4; + f4 = heapFloat[(r8+13)]; + heapFloat[(fp+-165)] = f4; + f3 = f5-f3; + f5 = f8-f7; + f0 = f0*f6; + f6 = f2*f2; + f7 = f10*f10; + f5 = f5-f0; + heapFloat[(r4+12)] = f4; + f0 = f6+f7; + f4 = f3*f3; + f6 = heapFloat[(r8+14)]; + heapFloat[(fp+-167)] = f6; + f0 = f0+f4; + f4 = f5*f5; + heapFloat[(r4+13)] = f6; + f6 = 2; + f0 = f0+f4; + f0 = f6/f0; + f4 = heapFloat[(r8+15)]; + heapFloat[(fp+-168)] = f4; + f6 = f3*f0; + f7 = f10*f0; + heapFloat[(r4+14)] = f4; + f16 = heapFloat[(r8+16)]; + f4 = f10*f7; + f3 = f3*f6; + f8 = f4+f3; + f9 = f2*f7; + f11 = f5*f6; + heapFloat[(r4+15)] = f16; + f12 = heapFloat[(fp+-169)]; + f8 = f12-f8; + f13 = heapFloat[(r2+1)]; + f14 = f9-f11; + f15 = heapFloat[(r2+5)]; + f18 = f2*f6; + f7 = f5*f7; + f19 = f2*f0; + f20 = heapFloat[(r2+2)]; + f21 = heapFloat[(r2+6)]; + f0 = f13*f8; + f22 = f15*f14; + f23 = f18+f7; + f24 = heapFloat[(r2+9)]; + f25 = f2*f19; + f26 = heapFloat[(r2+3)]; + f27 = heapFloat[(r2+7)]; + f28 = heapFloat[(r2+11)]; + f29 = heapFloat[(r2+10)]; + f2 = f20*f8; + f30 = f21*f14; + f0 = f0+f22; + f22 = f24*f23; + f3 = f25+f3; + f0 = f0+f22; + f8 = f26*f8; + f14 = f27*f14; + f2 = f2+f30; + f22 = f29*f23; + f9 = f9+f11; + f11 = f12-f3; + f2 = f2+f22; + heapFloat[(r4+16)] = f0; + f6 = f10*f6; + f10 = f5*f19; + f3 = f8+f14; + f5 = f28*f23; + f8 = f6-f10; + f3 = f3+f5; + heapFloat[(r4+17)] = f2; + f5 = f13*f9; + f14 = f15*f11; + heapFloat[(r4+18)] = f3; + f19 = f20*f9; + f22 = f21*f11; + f5 = f5+f14; + f14 = f24*f8; + f5 = f5+f14; + heap32[(r4+19)] = 0; + f9 = f26*f9; + f11 = f27*f11; + f14 = f19+f22; + f19 = f29*f8; + f18 = f18-f7; + f10 = f6+f10; + f4 = f25+f4; + f6 = f14+f19; + heapFloat[(r4+20)] = f5; + f7 = f9+f11; + f8 = f28*f8; + f4 = f12-f4; + f7 = f7+f8; + heapFloat[(r4+21)] = f6; + f8 = f13*f18; + f9 = f15*f10; + heapFloat[(r4+22)] = f7; + f11 = f20*f18; + f12 = f21*f10; + f8 = f8+f9; + f9 = f24*f4; + f9 = f8+f9; + heap32[(r4+23)] = 0; + f8 = f26*f18; + f13 = f27*f10; + f10 = f11+f12; + f11 = f29*f4; + f10 = f10+f11; + heapFloat[(r4+24)] = f9; + f8 = f8+f13; + f4 = f28*f4; + f11 = f8+f4; + heapFloat[(r4+25)] = f10; + heapFloat[(r4+26)] = f11; + heap32[(r4+27)] = 0; + f12 = heapFloat[(r4+28)]; + f13 = heapFloat[(r4+29)]; + f14 = heapFloat[(r4+30)]; + f15 = heapFloat[(r4+31)]; + f8 = f1; + f4 = f1; +} +else{ + f1 = f8*f2; + f9 = f0*f4; + f10 = f8*f0; + f11 = f2*f4; + f12 = f8*f5; + f13 = f2*f7; + f1 = f1+f9; + f9 = f5*f7; + f14 = f8*f3; + f2 = f2*f6; + f10 = f10-f11; + f11 = f3*f7; + f12 = f12-f13; + f13 = f0*f6; + f1 = f1+f9; + f9 = f3*f6; + f2 = f14-f2; + f14 = f5*f4; + f10 = f10-f11; + f5 = f5*f6; + f11 = f12-f13; + f3 = f3*f4; + f1 = f1+f9; + f5 = f10+f5; + f3 = f11+f3; + f2 = f2-f14; + f0 = f0*f7; + f0 = f2+f0; + f2 = f1*f7; + f9 = f3*f8; + f10 = f1*f4; + f11 = f5*f8; + f2 = f2+f9; + f9 = f0*f4; + f10 = f10+f11; + f11 = f3*f6; + f12 = f1*f6; + f13 = f0*f8; + f1 = f1*f8; + f8 = f5*f4; + f2 = f2+f9; + f9 = f5*f6; + f10 = f10+f11; + f11 = f0*f7; + f12 = f12+f13; + f5 = f5*f7; + f2 = f2-f9; + f9 = f10-f11; + f1 = f1-f8; + f7 = f3*f7; + f5 = f12+f5; + f3 = f3*f4; + f3 = f5-f3; + f1 = f1-f7; + f0 = f0*f6; + f4 = f9*f9; + f5 = f2*f2; + f0 = f1-f0; + f1 = f4+f5; + f4 = f3*f3; + f1 = f1+f4; + f4 = f0*f0; + f5 = 2; + f1 = f1+f4; + f1 = f5/f1; + f4 = f3*f1; + f5 = f2*f1; + f6 = f2*f5; + f3 = f3*f4; + f7 = f6+f3; + f8 = f9*f5; + f10 = f0*f4; + f11 = heapFloat[(fp+-169)]; + f7 = f11-f7; + f12 = heapFloat[(r8+1)]; + f13 = f8-f10; + f14 = heapFloat[(r8+5)]; + f15 = f9*f4; + f5 = f0*f5; + f1 = f9*f1; + f16 = heapFloat[(r8+2)]; + f17 = heapFloat[(r8+6)]; + f18 = f12*f7; + f19 = f14*f13; + f20 = f15+f5; + f21 = heapFloat[(r8+9)]; + f9 = f9*f1; + f22 = heapFloat[(r8+3)]; + f23 = heapFloat[(r8+7)]; + f24 = heapFloat[(r8+11)]; + f25 = heapFloat[(r8+10)]; + f26 = f16*f7; + f27 = f17*f13; + f18 = f18+f19; + f19 = f21*f20; + f3 = f9+f3; + f18 = f18+f19; + heapFloat[(fp+-155)] = f18; + f7 = f22*f7; + f13 = f23*f13; + f19 = f26+f27; + f26 = f25*f20; + f8 = f8+f10; + f3 = f11-f3; + f10 = f19+f26; + heapFloat[(fp+-156)] = f10; + heapFloat[(fp+-42)] = f18; + f2 = f2*f4; + f0 = f0*f1; + f1 = f7+f13; + f4 = f24*f20; + f7 = f2-f0; + f1 = f1+f4; + heapFloat[(fp+-157)] = f1; + heapFloat[(r4+1)] = f10; + f4 = f12*f8; + f10 = f14*f3; + heapFloat[(r4+2)] = f1; + f1 = f16*f8; + f13 = f17*f3; + f4 = f4+f10; + f10 = f21*f7; + f4 = f4+f10; + heapFloat[(fp+-158)] = f4; + heap32[(r4+3)] = 0; + f8 = f22*f8; + f3 = f23*f3; + f1 = f1+f13; + f10 = f25*f7; + f5 = f15-f5; + f0 = f2+f0; + f2 = f9+f6; + f1 = f1+f10; + heapFloat[(fp+-159)] = f1; + heapFloat[(r4+4)] = f4; + f3 = f8+f3; + f4 = f24*f7; + f2 = f11-f2; + f3 = f3+f4; + heapFloat[(fp+-160)] = f3; + heapFloat[(r4+5)] = f1; + f1 = f12*f5; + f4 = f14*f0; + heapFloat[(r4+6)] = f3; + f3 = f16*f5; + f6 = f17*f0; + f1 = f1+f4; + f4 = f21*f2; + f1 = f1+f4; + heapFloat[(fp+-161)] = f1; + heap32[(r4+7)] = 0; + f4 = f22*f5; + f0 = f23*f0; + f3 = f3+f6; + f5 = f25*f2; + f3 = f3+f5; + heapFloat[(fp+-164)] = f3; + heapFloat[(r4+8)] = f1; + f0 = f4+f0; + f1 = f24*f2; + f0 = f0+f1; + heapFloat[(fp+-166)] = f0; + heapFloat[(r4+9)] = f3; + heapFloat[(r4+10)] = f0; + heap32[(r4+11)] = 0; + f0 = heapFloat[(r2+1)]; + heapFloat[(r4+16)] = f0; + f2 = heapFloat[(r2+2)]; + heapFloat[(r4+17)] = f2; + f3 = heapFloat[(r2+3)]; + heapFloat[(r4+18)] = f3; + f4 = heapFloat[(r2+4)]; + heapFloat[(r4+19)] = f4; + f5 = heapFloat[(r2+5)]; + heapFloat[(r4+20)] = f5; + f6 = heapFloat[(r2+6)]; + heapFloat[(r4+21)] = f6; + f7 = heapFloat[(r2+7)]; + heapFloat[(r4+22)] = f7; + f8 = heapFloat[(r2+8)]; + heapFloat[(r4+23)] = f8; + f9 = heapFloat[(r2+9)]; + heapFloat[(r4+24)] = f9; + f10 = heapFloat[(r2+10)]; + heapFloat[(r4+25)] = f10; + f11 = heapFloat[(r2+11)]; + heapFloat[(r4+26)] = f11; + f1 = heapFloat[(r2+12)]; + heapFloat[(r4+27)] = f1; + f12 = heapFloat[(r2+13)]; + heapFloat[(r4+28)] = f12; + f13 = heapFloat[(r2+14)]; + heapFloat[(r4+29)] = f13; + f14 = heapFloat[(r2+15)]; + heapFloat[(r4+30)] = f14; + f15 = heapFloat[(r2+16)]; + heapFloat[(r4+31)] = f15; + f16 = heapFloat[(r4+12)]; + heapFloat[(fp+-165)] = f16; + f16 = heapFloat[(r4+13)]; + heapFloat[(fp+-167)] = f16; + f16 = heapFloat[(r4+14)]; + heapFloat[(fp+-168)] = f16; + f16 = heapFloat[(r4+15)]; + f17 = 0; + heapFloat[(fp+-162)] = f17; + heapFloat[(fp+-163)] = f17; +} + r10 = _ZTV24btPerturbedContactResult; + r11 = sp + -616; + r12 = heap32[(r5+5)]; + r10 = (r10 + 8)|0; + r13 = r11 >> 2; + heap32[(fp+-154)] = r10; + heap32[(r13+40)] = r6; + f18 = heapFloat[(fp+-155)]; + heapFloat[(r13+41)] = f18; + f18 = heapFloat[(fp+-156)]; + heapFloat[(r13+42)] = f18; + f18 = heapFloat[(fp+-157)]; + heapFloat[(r13+43)] = f18; + f22 = heapFloat[(fp+-163)]; + heapFloat[(r13+44)] = f22; + f18 = heapFloat[(fp+-158)]; + heapFloat[(r13+45)] = f18; + f18 = heapFloat[(fp+-159)]; + heapFloat[(r13+46)] = f18; + f18 = heapFloat[(fp+-160)]; + heapFloat[(r13+47)] = f18; + f22 = heapFloat[(fp+-162)]; + heapFloat[(r13+48)] = f22; + f18 = heapFloat[(fp+-161)]; + heapFloat[(r13+49)] = f18; + f18 = heapFloat[(fp+-164)]; + heapFloat[(r13+50)] = f18; + f18 = heapFloat[(fp+-166)]; + heapFloat[(r13+51)] = f18; + heapFloat[(r13+52)] = f17; + f17 = heapFloat[(fp+-165)]; + heapFloat[(r13+53)] = f17; + f17 = heapFloat[(fp+-167)]; + heapFloat[(r13+54)] = f17; + f17 = heapFloat[(fp+-168)]; + heapFloat[(r13+55)] = f17; + heapFloat[(r13+56)] = f16; + heapFloat[(r13+57)] = f0; + heapFloat[(r13+58)] = f2; + heapFloat[(r13+59)] = f3; + heapFloat[(r13+60)] = f4; + heapFloat[(r13+61)] = f5; + heapFloat[(r13+62)] = f6; + heapFloat[(r13+63)] = f7; + heapFloat[(r13+64)] = f8; + heapFloat[(r13+65)] = f9; + heapFloat[(r13+66)] = f10; + heapFloat[(r13+67)] = f11; + heapFloat[(r13+68)] = f1; + heapFloat[(r13+69)] = f12; + heapFloat[(r13+70)] = f13; + heapFloat[(r13+71)] = f14; + heapFloat[(r13+72)] = f15; + f0 = heapFloat[(fp+-176)]; + heapFloat[(r13+73)] = f0; + f0 = heapFloat[(fp+-177)]; + heapFloat[(r13+74)] = f0; + f0 = heapFloat[(fp+-178)]; + heapFloat[(r13+75)] = f0; + f0 = heapFloat[(fp+-179)]; + heapFloat[(r13+76)] = f0; + f0 = heapFloat[(fp+-180)]; + heapFloat[(r13+77)] = f0; + f0 = heapFloat[(fp+-181)]; + heapFloat[(r13+78)] = f0; + f0 = heapFloat[(fp+-182)]; + heapFloat[(r13+79)] = f0; + f0 = heapFloat[(fp+-183)]; + heapFloat[(r13+80)] = f0; + f0 = heapFloat[(fp+-184)]; + heapFloat[(r13+81)] = f0; + f0 = heapFloat[(fp+-185)]; + heapFloat[(r13+82)] = f0; + f0 = heapFloat[(fp+-186)]; + heapFloat[(r13+83)] = f0; + f0 = heapFloat[(fp+-187)]; + heapFloat[(r13+84)] = f0; + f0 = heapFloat[(fp+-188)]; + heapFloat[(r13+85)] = f0; + f0 = heapFloat[(fp+-189)]; + heapFloat[(r13+86)] = f0; + f0 = heapFloat[(fp+-190)]; + heapFloat[(r13+87)] = f0; + f0 = heapFloat[(fp+-191)]; + heapFloat[(r13+88)] = f0; + heap8[sp+-260] = r9; + heap32[(r13+90)] = r12; + heap32[(g0)] = r15; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r11; + heap32[(g0+3)] = r12; + heap32[(g0+4)] = 0; + _ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(i7); +} +else{ +break _78; +} +} +else{ +break _78; +} +} + r14 = (r14 + 1)|0; +} +else{ +break _63; +} +} + r0 = _2E_str115; + r1 = _2E_str685; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 61; + _assert(i7); +} +} +} while(0); + r0 = heapU8[r0+16]; + if(r0 ==0) //_LBB301_47 +{ +__label__ = 44; +} +else{ + r0 = heap32[(r7+1)]; + if(r0 !=0) //_LBB301_76 +{ + r1 = r0 >> 2; + r2 = heap32[(r1+279)]; + if(r2 ==0) //_LBB301_47 +{ +__label__ = 44; +} +else{ + r1 = heap32[(r1+277)]; + r2 = heap32[(r7+34)]; + if(r1 ==r2) //_LBB301_79 +{ +__label__ = 43; +} +else{ + r1 = (r6 + 72)|0; + r6 = (r6 + 8)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r6; + _ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7); + return; +} +} +} +else{ + r0 = _2E_str59; + r6 = _2E_str160; + heap32[(g0)] = r0; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = 101; + _assert(i7); +} +} +} +switch(__label__ ){//multiple entries +case 44: + return; +break; +case 43: + r1 = (r6 + 8)|0; + r2 = (r6 + 72)|0; +break; +} + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r2; + _ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7); + return; +} + +function _ZN23btConvexConvexAlgorithmD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV23btConvexConvexAlgorithm; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heapU8[r0+16]; +if(!(r1 ==0)) //_LBB302_3 +{ + r1 = heap32[(r2+5)]; +if(!(r1 ==0)) //_LBB302_3 +{ + r3 = heap32[(r2+1)]; + r4 = r3 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+4)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r1; + __FUNCTION_TABLE__[(r4)>>2](i7); +} +} + r1 = _ZTV30btActivatingCollisionAlgorithm; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN23btConvexConvexAlgorithmD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV23btConvexConvexAlgorithm; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r0 = heapU8[r0+16]; +if(!(r0 ==0)) //_LBB303_3 +{ + r0 = heap32[(r2+5)]; +if(!(r0 ==0)) //_LBB303_3 +{ + r1 = heap32[(r2+1)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+4)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + __FUNCTION_TABLE__[(r3)>>2](i7); +} +} + r0 = _ZTV30btActivatingCollisionAlgorithm; + r0 = (r0 + 8)|0; + heap32[(r2)] = r0; + return; +} + +function _ZN31btConvexPlaneCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp) +{ + var i7; + var fp = sp>>2; + var f0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + f0 = 1; + f_g0 = f0; + return; +} + +function _ZN31btConvexPlaneCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+3)]; +if(!(r2 ==0)) //_LBB305_23 +{ + r0 = heapU8[r0+8]; +if(!(r0 ==0)) //_LBB305_23 +{ + r0 = heap32[(fp+1)]; + r3 = r0 >> 2; + r4 = heap32[(r3+2)]; + r5 = heap32[(r3+1)]; + if(r4 ==r5) //_LBB305_4 +{ + r6 = 1; + r7 = r5 << 1; + r7 = r5 == 0 ? r6 : r7; +if(!(r4 >=r7)) //_LBB305_3 +{ + if(r7 !=0) //_LBB305_7 +{ + r2 = gNumAlignedAllocs; + r2 = r2 >> 2; + r4 = heap32[(r2)]; + r8 = r7 << 2; + r4 = (r4 + 1)|0; + r8 = r8 | 3; + heap32[(r2)] = r4; + r2 = (r8 + 16)|0; + heap32[(g0)] = r2; + malloc(i7); + r2 = r_g0; + if(r2 !=0) //_LBB305_9 +{ + r4 = 0; + r8 = (r2 + 4)|0; + r4 = (r4 - r8)|0; + r4 = r4 & 15; + r4 = (r2 + r4)|0; + r8 = (r4 + 4)|0; + r4 = r4 >> 2; + heap32[(r4)] = r2; + r2 = r8; +} +} +else{ + r2 = 0; +} + r4 = (r0 + 12)|0; + if(r5 <1) //_LBB305_12 +{ + r8 = r4 >> 2; + r9 = heap32[(r8)]; +} +else{ + r8 = 0; +_15: while(true){ + r9 = r4 >> 2; + r9 = heap32[(r9)]; + r10 = r8 << 2; + r11 = (r9 + r10)|0; + r11 = r11 >> 2; + r10 = (r2 + r10)|0; + r11 = heap32[(r11)]; + r8 = (r8 + 1)|0; + r10 = r10 >> 2; + heap32[(r10)] = r11; +if(!(r5 !=r8)) //_LBB305_13 +{ +break _15; +} +} + r4 = (r0 + 12)|0; +} + if(r9 !=0) //_LBB305_17 +{ + r8 = heapU8[r0+16]; + if(r8 !=0) //_LBB305_19 +{ + r5 = gNumAlignedFree; + r5 = r5 >> 2; + r8 = heap32[(r5)]; + r8 = (r8 + 1)|0; + r9 = r9 >> 2; + heap32[(r5)] = r8; + r5 = heap32[(r9+-1)]; + heap32[(g0)] = r5; + free(i7); + r5 = heap32[(r3+1)]; +} + r8 = r4 >> 2; + heap32[(r8)] = 0; +} + r4 = r4 >> 2; + heap8[r0+16] = r6; + heap32[(r4)] = r2; + heap32[(r3+2)] = r7; + r2 = heap32[(r1+3)]; +} +} + r0 = r5 << 2; + r1 = heap32[(r3+3)]; + r0 = (r1 + r0)|0; + r0 = r0 >> 2; + heap32[(r0)] = r2; + r0 = heap32[(r3+1)]; + r0 = (r0 + 1)|0; + heap32[(r3+1)] = r0; +} +} + return; +} + +function _ZN31btConvexPlaneCollisionAlgorithm20collideSingleContactERK12btQuaternionP17btCollisionObjectS4_RK16btDispatcherInfoP16btManifoldResult(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; + var f30; +var __label__ = 0; + i7 = sp + -136;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + f0 = heapFloat[(r0)]; + f1 = heapFloat[(r0+1)]; + f2 = heapFloat[(r0+2)]; + f3 = f0*f0; + f4 = f1*f1; + f5 = heapFloat[(r0+3)]; + f3 = f3+f4; + f4 = f2*f2; + f3 = f3+f4; + f4 = f5*f5; + f6 = 2; + f3 = f3+f4; + f3 = f6/f3; + r0 = heap32[(fp)]; + f4 = f2*f3; + f6 = f1*f3; + r1 = heapU8[r0+16]; + r2 = heap32[(fp+3)]; + r3 = heap32[(fp+2)]; + f3 = f0*f3; + r4 = r1 == 0 ? r3 : r2; + f7 = f1*f6; + f2 = f2*f4; + r4 = r4 >> 2; + f8 = f0*f3; + f9 = 1; + f10 = f7+f2; + f11 = f0*f6; + f12 = f5*f4; + f2 = f8+f2; + f10 = f9-f10; + f13 = heapFloat[(r4+1)]; + heapFloat[(fp+-17)] = f13; + f13 = heapFloat[(r4+5)]; + heapFloat[(fp+-18)] = f13; + f14 = f11+f12; + f13 = heapFloat[(r4+2)]; + heapFloat[(fp+-19)] = f13; + f13 = heapFloat[(r4+6)]; + heapFloat[(fp+-20)] = f13; + f0 = f0*f4; + f6 = f5*f6; + f11 = f11-f12; + f2 = f9-f2; + f12 = heapFloat[(r4+9)]; + heapFloat[(fp+-24)] = f12; + f15 = heapFloat[(r4+10)]; + heapFloat[(fp+-25)] = f15; + r1 = r1 == 0 ? r2 : r3; + f1 = f1*f4; + f3 = f5*f3; + f13 = heapFloat[(fp+-17)]; + f4 = f10*f13; + f13 = heapFloat[(fp+-19)]; + f5 = f14*f13; + f13 = heapFloat[(fp+-18)]; + f16 = f10*f13; + f13 = heapFloat[(fp+-20)]; + f17 = f14*f13; + f18 = f0-f6; + f19 = heapFloat[(r4+3)]; + heapFloat[(fp+-26)] = f19; + f20 = heapFloat[(r4+7)]; + heapFloat[(fp+-27)] = f20; + r1 = r1 >> 2; + f0 = f0+f6; + f6 = f1-f3; + f1 = f1+f3; + f3 = heapFloat[(r4+11)]; + heapFloat[(fp+-21)] = f3; + f7 = f8+f7; + f13 = heapFloat[(fp+-17)]; + f8 = f11*f13; + f13 = heapFloat[(fp+-19)]; + f21 = f2*f13; + f13 = heapFloat[(fp+-18)]; + f22 = f11*f13; + f13 = heapFloat[(fp+-20)]; + f23 = f2*f13; + f4 = f4+f5; + f5 = f18*f19; + f16 = f16+f17; + f17 = f18*f20; + f10 = f10*f12; + f14 = f14*f15; + f7 = f9-f7; + f9 = heapFloat[(r1+2)]; + f24 = heapFloat[(r1+6)]; + f25 = heapFloat[(r1+1)]; + f26 = heapFloat[(r1+5)]; + f4 = f4+f5; + f5 = f16+f17; + r2 = heap32[(r1+48)]; + f13 = heapFloat[(fp+-17)]; + f16 = f0*f13; + f13 = heapFloat[(fp+-19)]; + f17 = f6*f13; + f13 = heapFloat[(fp+-18)]; + f27 = f0*f13; + f13 = heapFloat[(fp+-20)]; + f28 = f6*f13; + f8 = f8+f21; + f21 = f1*f19; + f22 = f22+f23; + f23 = f1*f20; + f11 = f11*f12; + f2 = f2*f15; + f10 = f10+f14; + f14 = f18*f3; + f18 = heapFloat[(r1+3)]; + f29 = heapFloat[(r1+7)]; + f8 = f8+f21; + f21 = f22+f23; + f22 = heapFloat[(r1+10)]; + f23 = heapFloat[(r1+9)]; + r2 = r2 >> 2; + f10 = f10+f14; + r3 = heap32[(r4+48)]; + f14 = f16+f17; + f16 = f7*f19; + f17 = f27+f28; + f27 = f7*f20; + f0 = f0*f12; + f6 = f6*f15; + f2 = f11+f2; + f1 = f1*f3; + f11 = f25*f4; + f28 = f26*f5; + f30 = f9*f4; + f3 = f24*f5; + f12 = heapFloat[(r1+11)]; + f14 = f14+f16; + f16 = f17+f27; + f1 = f2+f1; + r5 = r3 >> 2; + f2 = heapFloat[(r2+12)]; + f0 = f0+f6; + f6 = heapFloat[(fp+-21)]; + f7 = f7*f6; + f17 = f25*f8; + f27 = f26*f21; + f6 = f9*f8; + f13 = f24*f21; + f11 = f11+f28; + f28 = f23*f10; + f3 = f30+f3; + f30 = f22*f10; + f4 = f18*f4; + f5 = f29*f5; + f0 = f0+f7; + r5 = heap32[(r5)]; + f7 = f25*f14; + f15 = f26*f16; + f19 = f9*f14; + f20 = f24*f16; + f17 = f17+f27; + f27 = f23*f1; + f6 = f6+f13; + f13 = f22*f1; + f8 = f18*f8; + f21 = f29*f21; + f11 = f11+f28; + f2 = -f2; + f3 = f3+f30; + f28 = heapFloat[(r2+13)]; + f4 = f4+f5; + f5 = f12*f10; + r5 = r5 >> 2; + f10 = f17+f27; + f6 = f6+f13; + f7 = f7+f15; + f13 = f23*f0; + f15 = f19+f20; + f17 = f22*f0; + f14 = f18*f14; + f16 = f29*f16; + f8 = f8+f21; + f1 = f12*f1; + f11 = f11*f2; + f3 = f3*f28; + f4 = f4+f5; + f5 = heapFloat[(r2+14)]; + f19 = heapFloat[(r4+13)]; + heapFloat[(fp+-22)] = f19; + f19 = heapFloat[(r4+14)]; + heapFloat[(fp+-23)] = f19; + f20 = heapFloat[(r4+15)]; + heapFloat[(fp+-28)] = f20; + f21 = heapFloat[(r1+14)]; + f27 = heapFloat[(r1+15)]; + heapFloat[(fp+-29)] = f27; + f7 = f7+f13; + f13 = f15+f17; + f1 = f8+f1; + f8 = heapFloat[(r1+13)]; + r4 = heap32[(r5+15)]; + f14 = f14+f16; + f0 = f12*f0; + f10 = f10*f2; + f6 = f6*f28; + f3 = f11-f3; + f4 = f4*f5; + r5 = sp + -16; + f0 = f14+f0; + f2 = f7*f2; + f7 = f13*f28; + f6 = f10-f6; + f1 = f1*f5; + f3 = f3-f4; + r6 = r5 >> 2; + f2 = f2-f7; + f0 = f0*f5; + f1 = f6-f1; + heapFloat[(fp+-4)] = f3; + f0 = f2-f0; + heapFloat[(r6+1)] = f1; + heapFloat[(r6+2)] = f0; + heap32[(r6+3)] = 0; + r6 = sp + -32; + heap32[(g0)] = r6; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r5; + f13 = heapFloat[(fp+-17)]; + f0 = f13*f9; + f13 = heapFloat[(fp+-18)]; + f1 = f13*f24; + f13 = heapFloat[(fp+-19)]; + f2 = f13*f9; + f13 = heapFloat[(fp+-20)]; + f3 = f13*f24; + f13 = heapFloat[(fp+-17)]; + f4 = f13*f25; + f13 = heapFloat[(fp+-18)]; + f5 = f13*f26; + f13 = heapFloat[(fp+-19)]; + f6 = f13*f25; + f13 = heapFloat[(fp+-20)]; + f7 = f13*f26; + __FUNCTION_TABLE__[(r4)>>2](i7); + f8 = -f8; + r3 = r6 >> 2; + f13 = heapFloat[(fp+-17)]; + f10 = f13*f18; + f13 = heapFloat[(fp+-18)]; + f11 = f13*f29; + f13 = heapFloat[(fp+-19)]; + f13 = f13*f18; + f14 = heapFloat[(fp+-20)]; + f14 = f14*f29; + f0 = f0+f1; + f1 = heapFloat[(fp+-24)]; + f15 = f1*f22; + f2 = f2+f3; + f3 = heapFloat[(fp+-25)]; + f16 = f3*f22; + f19 = heapFloat[(fp+-26)]; + f17 = f19*f9; + f20 = heapFloat[(fp+-27)]; + f28 = f20*f24; + f4 = f4+f5; + f5 = f1*f23; + f6 = f6+f7; + f7 = f3*f23; + f30 = f19*f25; + f1 = f20*f26; + f10 = f10+f11; + f11 = heapFloat[(fp+-24)]; + f11 = f11*f12; + f13 = f13+f14; + f3 = f3*f12; + f14 = f19*f18; + f19 = f20*f29; + f0 = f0+f15; + f15 = heapFloat[(fp+-8)]; + f4 = f4+f5; + f2 = f2+f16; + f5 = heapFloat[(r3+1)]; + f6 = f6+f7; + f7 = f17+f28; + f16 = heapFloat[(fp+-21)]; + f17 = f16*f22; + f20 = heapFloat[(fp+-22)]; + f28 = f9*f20; + f16 = heapFloat[(fp+-23)]; + f16 = f24*f16; + f9 = f9*f8; + f24 = f24*f21; + f1 = f30+f1; + f30 = heapFloat[(fp+-21)]; + f20 = f30*f23; + f27 = heapFloat[(fp+-22)]; + f27 = f25*f27; + f30 = heapFloat[(fp+-23)]; + f30 = f26*f30; + f25 = f25*f8; + f26 = f26*f21; + f10 = f10+f11; + f3 = f13+f3; + f11 = f14+f19; + f13 = heapFloat[(fp+-21)]; + f13 = f13*f12; + f14 = heapFloat[(fp+-22)]; + f14 = f18*f14; + f19 = heapFloat[(fp+-23)]; + f19 = f29*f19; + f8 = f18*f8; + f18 = f29*f21; + f0 = f0*f15; + f2 = f2*f5; + f7 = f7+f17; + f17 = heapFloat[(r3+2)]; + f1 = f1+f20; + f16 = f28+f16; + f20 = heapFloat[(fp+-28)]; + f21 = f22*f20; + f9 = f9-f24; + f24 = heapFloat[(fp+-29)]; + f22 = f22*f24; + f4 = f4*f15; + f6 = f6*f5; + f27 = f27+f30; + f28 = f23*f20; + f25 = f25-f26; + f23 = f23*f24; + f11 = f11+f13; + f10 = f10*f15; + f3 = f3*f5; + f5 = f14+f19; + f13 = f12*f20; + f8 = f8-f18; + f12 = f12*f24; + f0 = f0+f2; + f2 = f7*f17; + f7 = f16+f21; + f9 = f9-f22; + f4 = f4+f6; + f1 = f1*f17; + f6 = f27+f28; + f14 = f25-f23; + f3 = f10+f3; + f10 = f11*f17; + f5 = f5+f13; + f8 = f8-f12; + f0 = f0+f2; + f2 = f7+f9; + f1 = f4+f1; + f4 = f6+f14; + f3 = f3+f10; + f5 = f5+f8; + f0 = f0+f2; + f2 = heapFloat[(r2+13)]; + f1 = f1+f4; + f4 = heapFloat[(r2+12)]; + f6 = f4*f1; + f7 = f2*f0; + f3 = f3+f5; + f5 = heapFloat[(r2+14)]; + r0 = r0 >> 2; + f6 = f6+f7; + f7 = f5*f3; + r0 = heap32[(r0+3)]; + f6 = f6+f7; + f7 = heapFloat[(r2+16)]; + f6 = f6-f7; + r3 = r0 >> 2; + r4 = heap32[(fp+4)]; + f7 = heapFloat[(r1+9)]; + f8 = heapFloat[(r1+10)]; + f9 = heapFloat[(r1+11)]; + f10 = heapFloat[(r1+15)]; + f11 = heapFloat[(r1+5)]; + f12 = heapFloat[(r1+6)]; + f13 = heapFloat[(r1+7)]; + f14 = heapFloat[(r1+14)]; + f15 = heapFloat[(r1+1)]; + f16 = heapFloat[(r1+2)]; + f17 = heapFloat[(r1+3)]; + f18 = heapFloat[(r1+13)]; + f19 = heapFloat[(r3+280)]; + r3 = r4 >> 2; + heap32[(r3+1)] = r0; +if(!(f19 <=f6)) //_LBB306_2 +{ + f5 = f5*f6; + f2 = f2*f6; + f4 = f4*f6; + f3 = f3-f5; + f0 = f0-f2; + f1 = f1-f4; + f2 = heapFloat[(r2+12)]; + f4 = heapFloat[(r1+1)]; + f5 = heapFloat[(r2+13)]; + f19 = heapFloat[(r1+2)]; + f20 = heapFloat[(r1+5)]; + f21 = heapFloat[(r1+6)]; + f4 = f4*f2; + f19 = f19*f5; + f22 = heapFloat[(r2+14)]; + f23 = heapFloat[(r1+3)]; + f24 = heapFloat[(r1+9)]; + f25 = heapFloat[(r1+10)]; + f26 = heapFloat[(r1+11)]; + f27 = heapFloat[(r1+7)]; + f20 = f20*f2; + f21 = f21*f5; + f4 = f4+f19; + f19 = f23*f22; + r0 = sp + -48; + f2 = f24*f2; + f5 = f25*f5; + f20 = f20+f21; + f21 = f27*f22; + f4 = f4+f19; + f15 = f15*f1; + f16 = f16*f0; + r1 = r0 >> 2; + f2 = f2+f5; + f5 = f26*f22; + f19 = f20+f21; + heapFloat[(fp+-12)] = f4; + f4 = f11*f1; + f11 = f12*f0; + f12 = f15+f16; + f15 = f17*f3; + f2 = f2+f5; + heapFloat[(r1+1)] = f19; + heapFloat[(r1+2)] = f2; + f1 = f7*f1; + f0 = f8*f0; + f2 = f4+f11; + f4 = f13*f3; + f5 = f12+f15; + r2 = sp + -64; + f0 = f1+f0; + f1 = f9*f3; + f2 = f2+f4; + f3 = f5+f18; + heap32[(r1+3)] = 0; + r1 = r2 >> 2; + f0 = f0+f1; + f1 = f2+f14; + heapFloat[(fp+-16)] = f3; + f0 = f0+f10; + heapFloat[(r1+1)] = f1; + heapFloat[(r1+2)] = f0; + heap32[(r1+3)] = 0; + r1 = heap32[(r3)]; + r1 = r1 >> 2; + r1 = heap32[(r1+4)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r2; + heapFloat[(g0+3)] = f6; + __FUNCTION_TABLE__[(r1)>>2](i7); +} + return; +} + +function _ZN31btConvexPlaneCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; +var __label__ = 0; + i7 = sp + -56;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+3)]; +if(!(r2 ==0)) //_LBB307_23 +{ + r2 = heap32[(fp+1)]; + r3 = heap32[(fp+2)]; + r4 = heap32[(fp+4)]; + r5 = heapU8[r0+16]; + r6 = r5 == 0 ? r2 : r3; + r5 = r5 == 0 ? r3 : r2; + r6 = r6 >> 2; + r5 = r5 >> 2; + r6 = heap32[(r6+48)]; + r5 = heap32[(r5+48)]; + r7 = sp + -32; + r8 = r7 >> 2; + heap32[(fp+-8)] = 0; + heap32[(r8+1)] = 0; + heap32[(r8+2)] = 0; + heap32[(r8+3)] = 1065353216; + heap32[(g0)] = r0; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r3; + heap32[(g0+4)] = r4; + r7 = r4 >> 2; + _ZN31btConvexPlaneCollisionAlgorithm20collideSingleContactERK12btQuaternionP17btCollisionObjectS4_RK16btDispatcherInfoP16btManifoldResult(i7); + r8 = heap32[(r7+1)]; + r8 = r8 >> 2; + r8 = heap32[(r8+279)]; + r9 = heap32[(r1+6)]; +_3: do { +if(!(r8 >=r9)) //_LBB307_15 +{ + r5 = r5 >> 2; + f0 = heapFloat[(r5+14)]; + f1 = 0; + if(f0 > 2; + r8 = heap32[(r8)]; + r8 = r8 >> 2; + r8 = heap32[(r8+4)]; + heap32[(g0)] = r6; + f4 = f3*f3; + f5 = f2*f2; + __FUNCTION_TABLE__[(r8)>>2](i7); + f6 = f_g0; + f4 = f4+f5; + f5 = f0*f0; + f4 = f4+f5; + heapFloat[(g0)] = f4; + sqrtf(i7); + f4 = f_g0; + if(f4 !=f1) //_LBB307_10 +{ + f1 = 0.019999999552965164; + f1 = f1/f6; + f5 = 0.5; + f6 = 0.39269909262657166; + f7 = 0.19634954631328583; + f8 = f1*f5; + f1 = f1 > f6 ? f7 : f8; + heapFloat[(g0)] = f1; + sinf(i7); + heapFloat[(g0)] = f1; + f1 = f_g0/f4; + f0 = f0*f1; + f2 = f2*f1; + f1 = f3*f1; + r6 = 0; + cosf(i7); + f3 = f_g0; +_15: while(true){ + r8 = heap32[(r1+5)]; + if(r8 >r6) //_LBB307_11 +{ + f4 = heapFloat[(r5+12)]; + f6 = heapFloat[(r5+13)]; + f7 = heapFloat[(r5+14)]; + f4 = f4*f4; + f6 = f6*f6; + f4 = f4+f6; + f6 = f7*f7; + f4 = f4+f6; + heapFloat[(g0)] = f4; + sqrtf(i7); + f4 = f_g0; + f6 = 0; + if(f4 !=f6) //_LBB307_13 +{ + f6 = 6.2831854820251465; + f7 = r8; //fitos r8, f7 + f8 = r6; //fitos r6, f8 + f6 = f6/f7; + f6 = f8*f6; + f6 = f6*f5; + heapFloat[(g0)] = f6; + sinf(i7); + f7 = f_g0; + heapFloat[(g0)] = f6; + cosf(i7); + f4 = f7/f4; + f7 = heapFloat[(r5+12)]; + f7 = f7*f4; + f8 = heapFloat[(r5+13)]; + f8 = f8*f4; + f9 = heapFloat[(r5+14)]; + f10 = f_g0*f3; + f11 = f1*f7; + f12 = f_g0*f1; + f13 = f3*f7; + f4 = f9*f4; + f9 = f10+f11; + f10 = f2*f8; + f11 = f12-f13; + f12 = f0*f8; + f13 = f_g0*f2; + f14 = f3*f8; + f9 = f9+f10; + f10 = f0*f4; + f11 = f11-f12; + f12 = f2*f4; + f13 = f13-f14; + f14 = f1*f4; + f15 = f_g0*f0; + f16 = f3*f4; + f9 = f9+f10; + f10 = f11+f12; + f11 = f13-f14; + f12 = f0*f7; + f13 = f15-f16; + f14 = f2*f7; + f11 = f11+f12; + f12 = f9*f7; + f15 = f10*f_g0; + f13 = f13-f14; + f14 = f1*f8; + f13 = f13+f14; + f14 = f9*f8; + f16 = f11*f_g0; + f12 = f12+f15; + f15 = f11*f4; + f17 = f9*f4; + f18 = f13*f_g0; + f14 = f14+f16; + f16 = f13*f7; + f12 = f12+f15; + f15 = f13*f8; + r8 = sp + -16; + f6 = f9*f_g0; + f9 = f10*f7; + f17 = f17+f18; + f18 = f10*f8; + f14 = f14+f16; + f10 = f10*f4; + f12 = f12-f15; + r9 = r8 >> 2; + f6 = f6-f9; + f8 = f11*f8; + f9 = f17+f18; + f7 = f11*f7; + f10 = f14-f10; + heapFloat[(fp+-4)] = f12; + f6 = f6-f8; + f4 = f13*f4; + f7 = f9-f7; + heapFloat[(r9+1)] = f10; + f4 = f6-f4; + heapFloat[(r9+2)] = f7; + heapFloat[(r9+3)] = f4; + heap32[(g0)] = r0; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r3; + heap32[(g0+4)] = r4; + r6 = (r6 + 1)|0; + _ZN31btConvexPlaneCollisionAlgorithm20collideSingleContactERK12btQuaternionP17btCollisionObjectS4_RK16btDispatcherInfoP16btManifoldResult(i7); +} +else{ +break _15; +} +} +else{ +break _3; +} +} +} + r0 = _2E_str115; + r1 = _2E_str685; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 61; + _assert(i7); +} +} while(0); + r0 = heapU8[r0+8]; +if(!(r0 ==0)) //_LBB307_23 +{ + r0 = heap32[(r1+3)]; + r0 = r0 >> 2; + r0 = heap32[(r0+279)]; +if(!(r0 ==0)) //_LBB307_23 +{ + r0 = heap32[(r7+1)]; + if(r0 !=0) //_LBB307_19 +{ + r1 = r0 >> 2; + r2 = heap32[(r1+279)]; +if(!(r2 ==0)) //_LBB307_23 +{ + r1 = heap32[(r1+277)]; + r2 = heap32[(r7+34)]; + if(r1 ==r2) //_LBB307_22 +{ + r1 = (r4 + 8)|0; + r2 = (r4 + 72)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r2; + _ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7); +} +else{ + r1 = (r4 + 72)|0; + r4 = (r4 + 8)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r4; + _ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7); + return; +} +} +} +else{ + r0 = _2E_str59; + r4 = _2E_str160; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = 101; + _assert(i7); +} +} +} +} + return; +} + +function _ZN31btConvexPlaneCollisionAlgorithmD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV31btConvexPlaneCollisionAlgorithm; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heapU8[r0+8]; +if(!(r1 ==0)) //_LBB308_3 +{ + r1 = heap32[(r2+3)]; +if(!(r1 ==0)) //_LBB308_3 +{ + r2 = heap32[(r2+1)]; + r3 = r2 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+4)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); +} +} + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN31btConvexPlaneCollisionAlgorithmD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV31btConvexPlaneCollisionAlgorithm; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r0 = heapU8[r0+8]; +if(!(r0 ==0)) //_LBB309_3 +{ + r0 = heap32[(r2+3)]; +if(!(r0 ==0)) //_LBB309_3 +{ + r1 = heap32[(r2+1)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); +} +} + return; +} + +function _ZN31btDefaultCollisionConfiguration25getPersistentManifoldPoolEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+4)]; + r_g0 = r0; + return; +} + +function _ZN31btDefaultCollisionConfiguration25getCollisionAlgorithmPoolEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+6)]; + r_g0 = r0; + return; +} + +function _ZN31btDefaultCollisionConfiguration17getStackAllocatorEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+2)]; + r_g0 = r0; + return; +} + +function _ZN31btDefaultCollisionConfiguration16getSimplexSolverEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+8)]; + r_g0 = r0; + return; +} + +function _ZN31btConvexPlaneCollisionAlgorithm10CreateFuncD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN31btConvexPlaneCollisionAlgorithm10CreateFuncE; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN31btConvexPlaneCollisionAlgorithm10CreateFuncD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN31btConvexPlaneCollisionAlgorithm10CreateFuncE; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN31btConvexPlaneCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+12)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 28; + r1 = heap32[(fp)]; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r_g0; + r3 = r1 >> 2; + r4 = _ZTV20btCollisionAlgorithm; + r5 = heap32[(r3+3)]; + r3 = heap32[(r3+2)]; + r1 = heapU8[r1+4]; + r6 = r2 >> 2; + r4 = (r4 + 8)|0; + heap32[(r6)] = r4; + r0 = heap32[(r0)]; + r4 = _ZTV31btConvexPlaneCollisionAlgorithm; + r4 = (r4 + 8)|0; + heap32[(r6+1)] = r0; + r7 = 0; + heap32[(r6)] = r4; + r4 = heap32[(fp+2)]; + r8 = heap32[(fp+3)]; + heap8[r2+8] = r7; + heap32[(r6+3)] = 0; + if(r1 !=0) //_LBB316_3 +{ + r1 = 1; + r6 = r2 >> 2; + heap8[r2+16] = r1; + heap32[(r6+5)] = r3; + r3 = r0 >> 2; + heap32[(r6+6)] = r5; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+6)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r4; + __FUNCTION_TABLE__[(r3)>>2](i7); + r0 = r_g0; +if(!(r0 ==0)) //_LBB316_5 +{ + r0 = heap32[(r6+1)]; + r3 = r0 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r4; + __FUNCTION_TABLE__[(r3)>>2](i7); + heap32[(r6+3)] = r_g0; + heap8[r2+8] = r1; +} +} +else{ + r1 = r2 >> 2; + heap8[r2+16] = r7; + heap32[(r1+5)] = r3; + r3 = r0 >> 2; + heap32[(r1+6)] = r5; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+6)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r8; + __FUNCTION_TABLE__[(r3)>>2](i7); + r0 = r_g0; +if(!(r0 ==0)) //_LBB316_5 +{ + r0 = heap32[(r1+1)]; + r3 = r0 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r8; + __FUNCTION_TABLE__[(r3)>>2](i7); + r3 = 1; + heap32[(r1+3)] = r_g0; + heap8[r2+8] = r3; +} +} + r_g0 = r2; + return; +} + +function _ZN33btConvexConcaveCollisionAlgorithm10CreateFuncD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN33btConvexConcaveCollisionAlgorithm10CreateFuncE; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN33btConvexConcaveCollisionAlgorithm10CreateFuncD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN33btConvexConcaveCollisionAlgorithm10CreateFuncE; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN33btConvexConcaveCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+12)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 80; + r1 = _ZTV20btCollisionAlgorithm; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r_g0; + r1 = (r1 + 8)|0; + r3 = r2 >> 2; + heap32[(r3)] = r1; + r1 = heap32[(r0)]; + r4 = _ZTV33btConvexConcaveCollisionAlgorithm; + r4 = (r4 + 8)|0; + heap32[(r3+1)] = r1; + r1 = 0; + heap32[(r3)] = r4; + heap8[r2+8] = r1; + r1 = _ZTV24btConvexTriangleCallback; + r0 = heap32[(r0)]; + r1 = (r1 + 8)|0; + heap32[(r3+3)] = r1; + heap32[(r3+15)] = r0; + r1 = heap32[(fp+2)]; + heap32[(r3+16)] = 0; + r4 = heap32[(fp+3)]; + heap32[(r3+4)] = r1; + r5 = r0 >> 2; + heap32[(r3+5)] = r4; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r4; + __FUNCTION_TABLE__[(r5)>>2](i7); + heap32[(r3+19)] = r_g0; + r1 = heap32[(r3+15)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+5)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r_g0; + __FUNCTION_TABLE__[(r3)>>2](i7); + r_g0 = r2; + return; +} + +function _ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+12)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 80; + r1 = _ZTV20btCollisionAlgorithm; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r_g0; + r1 = (r1 + 8)|0; + r3 = r2 >> 2; + heap32[(r3)] = r1; + r1 = heap32[(r0)]; + r4 = _ZTV33btConvexConcaveCollisionAlgorithm; + r4 = (r4 + 8)|0; + heap32[(r3+1)] = r1; + r1 = 1; + heap32[(r3)] = r4; + heap8[r2+8] = r1; + r1 = _ZTV24btConvexTriangleCallback; + r0 = heap32[(r0)]; + r1 = (r1 + 8)|0; + heap32[(r3+3)] = r1; + heap32[(r3+15)] = r0; + r1 = heap32[(fp+3)]; + heap32[(r3+16)] = 0; + r4 = heap32[(fp+2)]; + heap32[(r3+4)] = r1; + r5 = r0 >> 2; + heap32[(r3+5)] = r4; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r4; + __FUNCTION_TABLE__[(r5)>>2](i7); + heap32[(r3+19)] = r_g0; + r1 = heap32[(r3+15)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+5)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r_g0; + __FUNCTION_TABLE__[(r3)>>2](i7); + r_g0 = r2; + return; +} + +function _ZN28btCompoundCollisionAlgorithm10CreateFuncD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN28btCompoundCollisionAlgorithm10CreateFuncE; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN28btCompoundCollisionAlgorithm10CreateFuncD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN28btCompoundCollisionAlgorithm10CreateFuncE; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN28btCompoundCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+12)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 44; + __FUNCTION_TABLE__[(r2)>>2](i7); + r1 = r_g0; + r2 = _ZTV20btCollisionAlgorithm; + r3 = r1 >> 2; + r2 = (r2 + 8)|0; + heap32[(r3)] = r2; + r2 = heap32[(r0)]; + r4 = _ZTV28btCompoundCollisionAlgorithm; + r4 = (r4 + 8)|0; + heap32[(r3+1)] = r2; + r2 = 1; + heap32[(r3)] = r4; + heap8[r1+24] = r2; + heap32[(r3+5)] = 0; + heap32[(r3+3)] = 0; + r2 = 0; + heap32[(r3+4)] = 0; + heap8[r1+28] = r2; + r0 = heap32[(r0+1)]; + r4 = heap32[(fp+2)]; + heap32[(r3+8)] = r0; + r0 = r4 >> 2; + heap8[r1+36] = r2; + r0 = heap32[(r0+48)]; + r0 = r0 >> 2; + r2 = heap32[(r0+1)]; + if(r2 ==31) //_LBB325_2 +{ + r2 = heap32[(fp+3)]; + r3 = r1 >> 2; + r0 = heap32[(r0+17)]; + heap32[(r3+10)] = r0; + heap32[(g0)] = r1; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r2; + _ZN28btCompoundCollisionAlgorithm26preallocateChildAlgorithmsEP17btCollisionObjectS1_(i7); + r_g0 = r1; + return; +} +else{ + r0 = _2E_str99; + r1 = _2E_str1100; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 32; + _assert(i7); +} +} + +function _ZN28btCompoundCollisionAlgorithm17SwappedCreateFuncD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN28btCompoundCollisionAlgorithm17SwappedCreateFuncE; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN28btCompoundCollisionAlgorithm17SwappedCreateFuncD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN28btCompoundCollisionAlgorithm17SwappedCreateFuncE; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN28btCompoundCollisionAlgorithm17SwappedCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+12)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 44; + __FUNCTION_TABLE__[(r2)>>2](i7); + r1 = r_g0; + r2 = _ZTV20btCollisionAlgorithm; + r3 = r1 >> 2; + r2 = (r2 + 8)|0; + heap32[(r3)] = r2; + r2 = heap32[(r0)]; + r4 = _ZTV28btCompoundCollisionAlgorithm; + r4 = (r4 + 8)|0; + heap32[(r3+1)] = r2; + r2 = 1; + heap32[(r3)] = r4; + heap8[r1+24] = r2; + heap32[(r3+5)] = 0; + heap32[(r3+3)] = 0; + heap32[(r3+4)] = 0; + heap8[r1+28] = r2; + r0 = heap32[(r0+1)]; + r2 = heap32[(fp+3)]; + r4 = 0; + heap32[(r3+8)] = r0; + r0 = r2 >> 2; + heap8[r1+36] = r4; + r0 = heap32[(r0+48)]; + r0 = r0 >> 2; + r3 = heap32[(r0+1)]; + if(r3 ==31) //_LBB328_2 +{ + r3 = heap32[(fp+2)]; + r4 = r1 >> 2; + r0 = heap32[(r0+17)]; + heap32[(r4+10)] = r0; + heap32[(g0)] = r1; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r2; + _ZN28btCompoundCollisionAlgorithm26preallocateChildAlgorithmsEP17btCollisionObjectS1_(i7); + r_g0 = r1; + return; +} +else{ + r0 = _2E_str99; + r1 = _2E_str1100; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 32; + _assert(i7); +} +} + +function _ZN16btEmptyAlgorithm10CreateFuncD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN16btEmptyAlgorithm10CreateFuncE; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN16btEmptyAlgorithm10CreateFuncD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN16btEmptyAlgorithm10CreateFuncE; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN16btEmptyAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+12)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 8; + r1 = _ZTV20btCollisionAlgorithm; + __FUNCTION_TABLE__[(r2)>>2](i7); + r3 = r_g0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r3)] = r1; + r0 = heap32[(r0)]; + r1 = _ZTV16btEmptyAlgorithm; + r1 = (r1 + 8)|0; + heap32[(r3+1)] = r0; + heap32[(r3)] = r1; + return; +} + +function _ZN32btSphereSphereCollisionAlgorithm10CreateFuncD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN32btSphereSphereCollisionAlgorithm10CreateFuncE; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN32btSphereSphereCollisionAlgorithm10CreateFuncD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN32btSphereSphereCollisionAlgorithm10CreateFuncE; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN32btSphereSphereCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+12)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 16; + r1 = _ZTV20btCollisionAlgorithm; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r_g0; + r3 = r2 >> 2; + r1 = (r1 + 8)|0; + heap32[(r3)] = r1; + r0 = heap32[(r0)]; + r1 = _ZTV32btSphereSphereCollisionAlgorithm; + r1 = (r1 + 8)|0; + heap32[(r3+1)] = r0; + r4 = 0; + heap32[(r3)] = r1; + heap8[r2+8] = r4; + r1 = r0 >> 2; + heap32[(r3+3)] = 0; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+3)]; + r4 = heap32[(fp+2)]; + r5 = heap32[(fp+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r5; + __FUNCTION_TABLE__[(r1)>>2](i7); + r1 = 1; + heap32[(r3+3)] = r_g0; + heap8[r2+8] = r1; + r_g0 = r2; + return; +} + +function _ZN34btSphereTriangleCollisionAlgorithm10CreateFuncD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN34btSphereTriangleCollisionAlgorithm10CreateFuncE; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN34btSphereTriangleCollisionAlgorithm10CreateFuncD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN34btSphereTriangleCollisionAlgorithm10CreateFuncE; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN34btSphereTriangleCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+12)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 20; + __FUNCTION_TABLE__[(r2)>>2](i7); + r1 = r_g0; + r2 = heap32[(fp)]; + r3 = _ZTV20btCollisionAlgorithm; + r4 = heap32[(r0+1)]; + r2 = heapU8[r2+4]; + r5 = r1 >> 2; + r3 = (r3 + 8)|0; + heap32[(r5)] = r3; + r0 = heap32[(r0)]; + r3 = _ZTV34btSphereTriangleCollisionAlgorithm; + r3 = (r3 + 8)|0; + heap32[(r5+1)] = r0; + r6 = 0; + heap32[(r5)] = r3; + heap8[r1+8] = r6; + heap32[(r5+3)] = r4; + heap8[r1+16] = r2; +if(!(r4 !=0)) //_LBB337_2 +{ + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+3)]; + r4 = r0 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r3; + r0 = r1 >> 2; + __FUNCTION_TABLE__[(r4)>>2](i7); + r3 = 1; + heap32[(r0+3)] = r_g0; + heap8[r1+8] = r3; +} + r_g0 = r1; + return; +} + +function _ZN26btBoxBoxCollisionAlgorithm10CreateFuncD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN26btBoxBoxCollisionAlgorithm10CreateFuncE; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN26btBoxBoxCollisionAlgorithm10CreateFuncD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN26btBoxBoxCollisionAlgorithm10CreateFuncE; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN26btBoxBoxCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+12)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 16; + __FUNCTION_TABLE__[(r2)>>2](i7); + r1 = r_g0; + r2 = _ZTV20btCollisionAlgorithm; + r3 = r1 >> 2; + r2 = (r2 + 8)|0; + heap32[(r3)] = r2; + r0 = heap32[(r0)]; + r2 = _ZTV26btBoxBoxCollisionAlgorithm; + r2 = (r2 + 8)|0; + heap32[(r3+1)] = r0; + r4 = 0; + heap32[(r3)] = r2; + heap8[r1+8] = r4; + r2 = r0 >> 2; + heap32[(r3+3)] = 0; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+6)]; + r3 = heap32[(fp+2)]; + r4 = heap32[(fp+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r4; + __FUNCTION_TABLE__[(r2)>>2](i7); + r0 = r_g0; +if(!(r0 ==0)) //_LBB340_2 +{ + r0 = r1 >> 2; + r2 = heap32[(r0+1)]; + r5 = r2 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+3)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r4; + __FUNCTION_TABLE__[(r5)>>2](i7); + r3 = 1; + heap32[(r0+3)] = r_g0; + heap8[r1+8] = r3; +} + r_g0 = r1; + return; +} + +function _ZN31btDefaultCollisionConfiguration31getCollisionAlgorithmCreateFuncEii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r2 = heap32[(fp+2)]; + if(r0 !=8) //_LBB341_3 +{ +__label__ = 3; +} +else{ + if(r2 !=8) //_LBB341_3 +{ +__label__ = 3; +} +else{ + r0 = (r1 + 64)|0; +__label__ = 30; +} +} +_4: do { +if (__label__ == 3){ +if(!(r0 !=8)) //_LBB341_6 +{ +if(!(r2 !=1)) //_LBB341_6 +{ + r0 = (r1 + 72)|0; +break _4; +} +} +if(!(r0 !=1)) //_LBB341_9 +{ +if(!(r2 !=8)) //_LBB341_9 +{ + r0 = (r1 + 76)|0; +break _4; +} +} + r3 = r2 | r0; + if(r3 !=0) //_LBB341_11 +{ +if(!(r0 >19)) //_LBB341_14 +{ +if(!(r2 !=28)) //_LBB341_14 +{ + r0 = (r1 + 84)|0; +break _4; +} +} +if(!(r2 >19)) //_LBB341_17 +{ +if(!(r0 !=28)) //_LBB341_17 +{ + r0 = (r1 + 80)|0; +break _4; +} +} +_24: do { + if(r0 >19) //_LBB341_21 +{ + if(r2 <20) //_LBB341_23 +{ + r3 = (r0 + -21)|0; + if(uint(r3) 19) //_LBB341_20 +{ + r0 = (r2 + -21)|0; + if(uint(r0) > 2; + r0 = heap32[(r0)]; + r_g0 = r0; + return; +} + +function _ZN31btDefaultCollisionConfigurationD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV31btDefaultCollisionConfiguration; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heapU8[r0+12]; +_1: do { +if(!(r1 ==0)) //_LBB342_13 +{ + r1 = heap32[(r2+2)]; + r3 = r1 >> 2; + r4 = heap32[(r3+2)]; + if(r4 ==0) //_LBB342_3 +{ + r1 = heapU8[r1+16]; +if(!(r1 !=0)) //_LBB342_6 +{ + r1 = heap32[(r3)]; +if(!(r1 ==0)) //_LBB342_6 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r1 = r1 >> 2; + heap32[(r4)] = r5; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} +} + heap32[(r3)] = 0; + heap32[(r3+2)] = 0; + r1 = heap32[(r2+2)]; + r3 = r1 >> 2; + r4 = heap32[(r3+2)]; + if(r4 ==0) //_LBB342_8 +{ + r1 = heapU8[r1+16]; +if(!(r1 !=0)) //_LBB342_11 +{ + r1 = heap32[(r3)]; +if(!(r1 ==0)) //_LBB342_11 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r1 = r1 >> 2; + heap32[(r4)] = r5; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} +} + heap32[(r3)] = 0; + heap32[(r3+2)] = 0; + r1 = heap32[(r2+2)]; + if(r1 ==0) //_LBB342_13 +{ +break _1; +} +else{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +break _1; +} +} +} + r0 = _2E_str128; + r1 = _2E_str1129; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 49; + _assert(i7); +} +} while(0); + r1 = heapU8[r0+28]; +if(!(r1 ==0)) //_LBB342_19 +{ + r1 = heap32[(r2+6)]; + r3 = r1 >> 2; + r3 = heap32[(r3+4)]; + if(r3 !=0) //_LBB342_16 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r4 = heap32[(r1)]; + r4 = (r4 + 1)|0; + r3 = r3 >> 2; + heap32[(r1)] = r4; + r1 = heap32[(r3+-1)]; + heap32[(g0)] = r1; + free(i7); + r1 = heap32[(r2+6)]; +} +if(!(r1 ==0)) //_LBB342_19 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} +} + r1 = heapU8[r0+20]; +if(!(r1 ==0)) //_LBB342_25 +{ + r1 = heap32[(r2+4)]; + r3 = r1 >> 2; + r3 = heap32[(r3+4)]; + if(r3 !=0) //_LBB342_22 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r4 = heap32[(r1)]; + r4 = (r4 + 1)|0; + r3 = r3 >> 2; + heap32[(r1)] = r4; + r1 = heap32[(r3+-1)]; + heap32[(g0)] = r1; + free(i7); + r1 = heap32[(r2+4)]; +} +if(!(r1 ==0)) //_LBB342_25 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} +} + r1 = heap32[(r2+10)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+10)]; +if(!(r1 ==0)) //_LBB342_27 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + r1 = heap32[(r2+11)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+11)]; +if(!(r1 ==0)) //_LBB342_29 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + r1 = heap32[(r2+12)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+12)]; +if(!(r1 ==0)) //_LBB342_31 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + r1 = heap32[(r2+13)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+13)]; +if(!(r1 ==0)) //_LBB342_33 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + r1 = heap32[(r2+14)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+14)]; +if(!(r1 ==0)) //_LBB342_35 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + r1 = heap32[(r2+15)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+15)]; +if(!(r1 ==0)) //_LBB342_37 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + r1 = heap32[(r2+16)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+16)]; +if(!(r1 ==0)) //_LBB342_39 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + r1 = heap32[(r2+18)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+18)]; +if(!(r1 ==0)) //_LBB342_41 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + r1 = heap32[(r2+19)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+19)]; +if(!(r1 ==0)) //_LBB342_43 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + r1 = heap32[(r2+17)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+17)]; +if(!(r1 ==0)) //_LBB342_45 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + r1 = heap32[(r2+21)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+21)]; +if(!(r1 ==0)) //_LBB342_47 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + r1 = heap32[(r2+20)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+20)]; +if(!(r1 ==0)) //_LBB342_49 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + r1 = heap32[(r2+8)]; +if(!(r1 ==0)) //_LBB342_51 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + r1 = heap32[(r2+9)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+9)]; +if(!(r1 ==0)) //_LBB342_53 +{ + r2 = gNumAlignedFree; + r2 = r2 >> 2; + r3 = heap32[(r2)]; + r3 = (r3 + 1)|0; + r1 = r1 >> 2; + heap32[(r2)] = r3; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN31btDefaultCollisionConfigurationD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + heap32[(g0)] = r0; + _ZN31btDefaultCollisionConfigurationD2Ev(i7); + return; +} + +function _ZN31btDefaultCollisionConfigurationD2Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV31btDefaultCollisionConfiguration; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heapU8[r0+12]; +_1: do { +if(!(r1 ==0)) //_LBB344_13 +{ + r1 = heap32[(r2+2)]; + r3 = r1 >> 2; + r4 = heap32[(r3+2)]; + if(r4 ==0) //_LBB344_3 +{ + r1 = heapU8[r1+16]; +if(!(r1 !=0)) //_LBB344_6 +{ + r1 = heap32[(r3)]; +if(!(r1 ==0)) //_LBB344_6 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r1 = r1 >> 2; + heap32[(r4)] = r5; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} +} + heap32[(r3)] = 0; + heap32[(r3+2)] = 0; + r1 = heap32[(r2+2)]; + r3 = r1 >> 2; + r4 = heap32[(r3+2)]; + if(r4 ==0) //_LBB344_8 +{ + r1 = heapU8[r1+16]; +if(!(r1 !=0)) //_LBB344_11 +{ + r1 = heap32[(r3)]; +if(!(r1 ==0)) //_LBB344_11 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r1 = r1 >> 2; + heap32[(r4)] = r5; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} +} + heap32[(r3)] = 0; + heap32[(r3+2)] = 0; + r1 = heap32[(r2+2)]; + if(r1 ==0) //_LBB344_13 +{ +break _1; +} +else{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +break _1; +} +} +} + r0 = _2E_str128; + r1 = _2E_str1129; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 49; + _assert(i7); +} +} while(0); + r1 = heapU8[r0+28]; +if(!(r1 ==0)) //_LBB344_19 +{ + r1 = heap32[(r2+6)]; + r3 = r1 >> 2; + r3 = heap32[(r3+4)]; + if(r3 !=0) //_LBB344_16 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r4 = heap32[(r1)]; + r4 = (r4 + 1)|0; + r3 = r3 >> 2; + heap32[(r1)] = r4; + r1 = heap32[(r3+-1)]; + heap32[(g0)] = r1; + free(i7); + r1 = heap32[(r2+6)]; +} +if(!(r1 ==0)) //_LBB344_19 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} +} + r0 = heapU8[r0+20]; +if(!(r0 ==0)) //_LBB344_25 +{ + r0 = heap32[(r2+4)]; + r1 = r0 >> 2; + r1 = heap32[(r1+4)]; + if(r1 !=0) //_LBB344_22 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r3 = heap32[(r0)]; + r3 = (r3 + 1)|0; + r1 = r1 >> 2; + heap32[(r0)] = r3; + r0 = heap32[(r1+-1)]; + heap32[(g0)] = r0; + free(i7); + r0 = heap32[(r2+4)]; +} +if(!(r0 ==0)) //_LBB344_25 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r3 = heap32[(r1)]; + r3 = (r3 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r3; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} +} + r0 = heap32[(r2+10)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = heap32[(r2+10)]; +if(!(r0 ==0)) //_LBB344_27 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r3 = heap32[(r1)]; + r3 = (r3 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r3; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} + r0 = heap32[(r2+11)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = heap32[(r2+11)]; +if(!(r0 ==0)) //_LBB344_29 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r3 = heap32[(r1)]; + r3 = (r3 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r3; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} + r0 = heap32[(r2+12)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = heap32[(r2+12)]; +if(!(r0 ==0)) //_LBB344_31 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r3 = heap32[(r1)]; + r3 = (r3 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r3; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} + r0 = heap32[(r2+13)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = heap32[(r2+13)]; +if(!(r0 ==0)) //_LBB344_33 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r3 = heap32[(r1)]; + r3 = (r3 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r3; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} + r0 = heap32[(r2+14)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = heap32[(r2+14)]; +if(!(r0 ==0)) //_LBB344_35 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r3 = heap32[(r1)]; + r3 = (r3 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r3; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} + r0 = heap32[(r2+15)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = heap32[(r2+15)]; +if(!(r0 ==0)) //_LBB344_37 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r3 = heap32[(r1)]; + r3 = (r3 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r3; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} + r0 = heap32[(r2+16)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = heap32[(r2+16)]; +if(!(r0 ==0)) //_LBB344_39 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r3 = heap32[(r1)]; + r3 = (r3 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r3; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} + r0 = heap32[(r2+18)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = heap32[(r2+18)]; +if(!(r0 ==0)) //_LBB344_41 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r3 = heap32[(r1)]; + r3 = (r3 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r3; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} + r0 = heap32[(r2+19)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = heap32[(r2+19)]; +if(!(r0 ==0)) //_LBB344_43 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r3 = heap32[(r1)]; + r3 = (r3 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r3; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} + r0 = heap32[(r2+17)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = heap32[(r2+17)]; +if(!(r0 ==0)) //_LBB344_45 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r3 = heap32[(r1)]; + r3 = (r3 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r3; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} + r0 = heap32[(r2+21)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = heap32[(r2+21)]; +if(!(r0 ==0)) //_LBB344_47 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r3 = heap32[(r1)]; + r3 = (r3 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r3; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} + r0 = heap32[(r2+20)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = heap32[(r2+20)]; +if(!(r0 ==0)) //_LBB344_49 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r3 = heap32[(r1)]; + r3 = (r3 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r3; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} + r0 = heap32[(r2+8)]; +if(!(r0 ==0)) //_LBB344_51 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r3 = heap32[(r1)]; + r3 = (r3 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r3; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} + r0 = heap32[(r2+9)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = heap32[(r2+9)]; +if(!(r0 ==0)) //_LBB344_53 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r2 = heap32[(r1)]; + r2 = (r2 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r2; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} + return; +} + +function _ZN16btEmptyAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN16btEmptyAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN16btEmptyAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp) +{ + var i7; + var fp = sp>>2; + var f0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + f0 = 1; + f_g0 = f0; + return; +} + +function _ZN16btEmptyAlgorithmD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV16btEmptyAlgorithm; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN16btEmptyAlgorithmD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV16btEmptyAlgorithm; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN16btManifoldResultD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV16btManifoldResult; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN16btManifoldResultD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV16btManifoldResult; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN16btManifoldResult15addContactPointERK9btVector3S2_f(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; + var f30; +var __label__ = 0; + i7 = sp + -304;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+1)]; + if(r1 !=0) //_LBB352_2 +{ + f0 = heapFloat[(fp+3)]; + r2 = r1 >> 2; + f1 = heapFloat[(r2+280)]; +if(!(f1 > 2; + r4 = r4 >> 2; + f1 = heapFloat[(r3+2)]; + heapFloat[(fp+-71)] = f1; + f2 = heapFloat[(r3+1)]; + f3 = heapFloat[(r3)]; + f4 = heapFloat[(r4+2)]; + f1 = f1*f0; + f5 = heapFloat[(r4+1)]; + f6 = f2*f0; + f7 = heapFloat[(r4)]; + f8 = f3*f0; + r5 = heap32[(r2+277)]; + r6 = heap32[(r0+34)]; + f1 = f4+f1; + f6 = f5+f6; + f8 = f7+f8; + if(r5 ==r6) //_LBB352_5 +{ + f9 = heapFloat[(r0+14)]; + f10 = heapFloat[(r0+15)]; + f11 = heapFloat[(r0+30)]; + f13 = heapFloat[(r0+31)]; + f14 = heapFloat[(r0+4)]; + f9 = f8-f9; + f15 = heapFloat[(r0+3)]; + f12 = heapFloat[(r0+2)]; + f16 = heapFloat[(r0+8)]; + f10 = f6-f10; + f17 = heapFloat[(r0+7)]; + f18 = heapFloat[(r0+6)]; + f19 = heapFloat[(r0+16)]; + f20 = heapFloat[(r0+20)]; + f11 = f7-f11; + f21 = heapFloat[(r0+19)]; + f22 = heapFloat[(r0+18)]; + f23 = heapFloat[(r0+24)]; + f13 = f5-f13; + f24 = heapFloat[(r0+23)]; + f25 = heapFloat[(r0+22)]; + f26 = heapFloat[(r0+32)]; + f14 = f14*f9; + f16 = f16*f10; + f27 = heapFloat[(r0+12)]; + f19 = f1-f19; + f28 = heapFloat[(r0+11)]; + f29 = heapFloat[(r0+10)]; + f15 = f15*f9; + f17 = f17*f10; + f9 = f12*f9; + f10 = f18*f10; + f12 = f20*f11; + f18 = f23*f13; + f20 = heapFloat[(r0+28)]; + f23 = f4-f26; + f26 = heapFloat[(r0+27)]; + f30 = heapFloat[(r0+26)]; + f21 = f21*f11; + f24 = f24*f13; + f11 = f22*f11; + f13 = f25*f13; + f14 = f14+f16; + f16 = f27*f19; + f15 = f15+f17; + f17 = f28*f19; + f9 = f9+f10; + f10 = f29*f19; + f12 = f12+f18; + f18 = f20*f23; + f19 = f21+f24; + f20 = f26*f23; + f11 = f11+f13; + f21 = f30*f23; + f13 = f14+f16; + f14 = f15+f17; + f9 = f9+f10; + f10 = f12+f18; + f15 = f19+f20; + f11 = f11+f21; +} +else{ + f9 = heapFloat[(r0+30)]; + f10 = heapFloat[(r0+31)]; + f11 = heapFloat[(r0+14)]; + f12 = heapFloat[(r0+15)]; + f13 = heapFloat[(r0+20)]; + f9 = f8-f9; + f14 = heapFloat[(r0+19)]; + f15 = heapFloat[(r0+18)]; + f16 = heapFloat[(r0+24)]; + f10 = f6-f10; + f17 = heapFloat[(r0+23)]; + f18 = heapFloat[(r0+22)]; + f19 = heapFloat[(r0+32)]; + f20 = heapFloat[(r0+4)]; + f11 = f7-f11; + f21 = heapFloat[(r0+3)]; + f22 = heapFloat[(r0+2)]; + f23 = heapFloat[(r0+8)]; + f12 = f5-f12; + f24 = heapFloat[(r0+7)]; + f25 = heapFloat[(r0+6)]; + f26 = heapFloat[(r0+16)]; + f13 = f13*f9; + f16 = f16*f10; + f27 = heapFloat[(r0+28)]; + f19 = f1-f19; + f28 = heapFloat[(r0+27)]; + f29 = heapFloat[(r0+26)]; + f14 = f14*f9; + f17 = f17*f10; + f9 = f15*f9; + f10 = f18*f10; + f15 = f20*f11; + f18 = f23*f12; + f20 = heapFloat[(r0+12)]; + f23 = f4-f26; + f26 = heapFloat[(r0+11)]; + f30 = heapFloat[(r0+10)]; + f21 = f21*f11; + f24 = f24*f12; + f11 = f22*f11; + f12 = f25*f12; + f13 = f13+f16; + f16 = f27*f19; + f14 = f14+f17; + f17 = f28*f19; + f9 = f9+f10; + f10 = f29*f19; + f15 = f15+f18; + f18 = f20*f23; + f19 = f21+f24; + f20 = f26*f23; + f11 = f11+f12; + f12 = f30*f23; + f13 = f13+f16; + f14 = f14+f17; + f9 = f9+f10; + f10 = f15+f18; + f15 = f19+f20; + f11 = f11+f12; +} + r7 = sp + -280; + r8 = r7 >> 2; + heapFloat[(fp+-70)] = f9; + heapFloat[(r8+1)] = f14; + heapFloat[(r8+2)] = f13; + heap32[(r8+3)] = 0; + heapFloat[(r8+4)] = f11; + heapFloat[(r8+5)] = f15; + heapFloat[(r8+6)] = f10; + heap32[(r8+7)] = 0; + heapFloat[(r8+16)] = f3; + heapFloat[(r8+17)] = f2; + f2 = heapFloat[(fp+-71)]; + heapFloat[(r8+18)] = f2; + heap32[(r8+19)] = heap32[(r3+3)]; + heapFloat[(r8+20)] = f0; + heap32[(r8+21)] = 0; + heap32[(r8+22)] = 0; + heap32[(r8+27)] = 0; + r3 = 0; + heap32[(r8+28)] = 0; + heap8[sp+-164] = r3; + heap32[(r8+30)] = 0; + heap32[(r8+31)] = 0; + heap32[(r8+32)] = 0; + heap32[(r8+33)] = 0; + heap32[(r8+34)] = 0; + heap32[(r8+35)] = 0; + heap32[(r8+36)] = 0; + heap32[(r8+52)] = 0; + heap32[(r8+60)] = 0; + heap32[(r8+68)] = 0; + heapFloat[(r8+12)] = f8; + heapFloat[(r8+13)] = f6; + heapFloat[(r8+14)] = f1; + heap32[(r8+15)] = 0; + heapFloat[(r8+8)] = f7; + heapFloat[(r8+9)] = f5; + heapFloat[(r8+10)] = f4; + heap32[(r8+11)] = heap32[(r4+3)]; + r4 = heap32[(r2+279)]; +_9: do { + if(r4 >0) //_LBB352_8 +{ + f1 = heapFloat[(r2+280)]; + f1 = f1*f1; + r10 = 0; + r9 = -1; +_11: while(true){ + r11 = (r10 * 69)|0; + r11 = r11 << 2; + r11 = (r1 + r11)|0; + r11 = r11 >> 2; + f2 = heapFloat[(r11+1)]; + f3 = heapFloat[(r11+2)]; + f2 = f2-f9; + f3 = f3-f14; + f4 = heapFloat[(r11+3)]; + f4 = f4-f13; + f2 = f2*f2; + f3 = f3*f3; + f2 = f2+f3; + f3 = f4*f4; + f2 = f2+f3; + r11 = (r10 + 1)|0; + r9 = f2 < f1 ? r10 : r9; + f1 = f2 < f1 ? f2 : f1; + r10 = r11; +if(!(r4 !=r11)) //_LBB352_9 +{ +break _9; +} +} +} +else{ + r9 = -1; +} +} while(0); + r4 = heap32[(r0+35)]; + r4 = r4 >> 2; + r10 = r6 >> 2; + f1 = heapFloat[(r10+56)]; + f2 = heapFloat[(r4+56)]; + f1 = f1*f2; + f2 = -10; + f1 = f1 < f2 ? f2 : f1; + f2 = 10; + f1 = f1 > f2 ? f2 : f1; + heapFloat[(r8+21)] = f1; + f1 = heapFloat[(r10+57)]; + f2 = heapFloat[(r4+57)]; + f1 = f1*f2; + heapFloat[(r8+22)] = f1; + if(r5 ==r6) //_LBB352_12 +{ + r4 = heap32[(r0+36)]; + heap32[(r8+23)] = r4; + r4 = heap32[(r0+37)]; + heap32[(r8+24)] = r4; + r4 = heap32[(r0+38)]; + heap32[(r8+25)] = r4; + r0 = heap32[(r0+39)]; + heap32[(r8+26)] = r0; +} +else{ + r4 = heap32[(r0+37)]; + heap32[(r8+23)] = r4; + r4 = heap32[(r0+36)]; + heap32[(r8+24)] = r4; + r4 = heap32[(r0+39)]; + heap32[(r8+25)] = r4; + r0 = heap32[(r0+38)]; + heap32[(r8+26)] = r0; +} + f1 = heapFloat[(r2+280)]; + if(r9 <0) //_LBB352_19 +{ + if(f1 >=f0) //_LBB352_21 +{ + r0 = heap32[(r2+279)]; + if(r0 !=4) //_LBB352_49 +{ + r4 = (r0 + 1)|0; + heap32[(r2+279)] = r4; +} +else{ + f1 = heapFloat[(r2+21)]; + r0 = -1; + f2 = heapFloat[(r2+90)]; + f3 = f1 < f0 ? f1 : f0; + r4 = 1; + f4 = heapFloat[(r2+159)]; + f5 = f2 < f3 ? f2 : f3; + r5 = 2; + f6 = heapFloat[(r2+228)]; + f7 = f4 < f5 ? f4 : f5; + if(f6 >=f7) //_LBB352_24 +{ + r6 = f1 >= f0 ? r0 : r3; + r6 = f2 < f3 ? r4 : r6; + r6 = f4 < f5 ? r5 : r6; + if(r6 ==0) //_LBB352_26 +{ + f0 = heapFloat[(r2+210)]; + f1 = heapFloat[(r2+141)]; + f2 = heapFloat[(r2+209)]; + f3 = heapFloat[(r2+140)]; + f4 = heapFloat[(r2+208)]; + f5 = heapFloat[(r2+139)]; + f6 = heapFloat[(r2+72)]; + f7 = heapFloat[(r2+71)]; + f8 = heapFloat[(r2+70)]; + f10 = 0; + r6 = r3; +__label__ = 28; +} +else{ +__label__ = 26; +} +} +else{ + r6 = 3; +__label__ = 26; +} +if (__label__ == 26){ + f6 = heapFloat[(r2+72)]; + f0 = heapFloat[(r2+210)]; + f1 = heapFloat[(r2+141)]; + f8 = heapFloat[(r2+70)]; + f2 = heapFloat[(r2+209)]; + f3 = heapFloat[(r2+140)]; + f7 = heapFloat[(r2+71)]; + f4 = heapFloat[(r2+208)]; + f5 = heapFloat[(r2+139)]; + f10 = f13-f6; + f11 = f2-f3; + f12 = f9-f8; + f15 = f0-f1; + f16 = f14-f7; + f17 = f4-f5; + f18 = f16*f15; + f19 = f10*f11; + f10 = f10*f17; + f15 = f12*f15; + f18 = f18-f19; + f10 = f10-f15; + f11 = f12*f11; + f12 = f16*f17; + f11 = f11-f12; + f12 = f18*f18; + f10 = f10*f10; + f10 = f12+f10; + f11 = f11*f11; + f10 = f10+f11; + if(r6 ==1) //_LBB352_29 +{ + f11 = heapFloat[(r2+3)]; + f12 = heapFloat[(r2+2)]; + f15 = heapFloat[(r2+1)]; + f16 = 0; + r6 = r4; +__label__ = 30; +} +else{ +__label__ = 28; +} +} +if (__label__ == 28){ + f11 = heapFloat[(r2+3)]; + f15 = heapFloat[(r2+1)]; + f12 = heapFloat[(r2+2)]; + f16 = f13-f11; + f17 = f2-f3; + f18 = f9-f15; + f19 = f0-f1; + f20 = f14-f12; + f21 = f4-f5; + f22 = f20*f19; + f23 = f16*f17; + f16 = f16*f21; + f19 = f18*f19; + f22 = f22-f23; + f16 = f16-f19; + f17 = f18*f17; + f18 = f20*f21; + f17 = f17-f18; + f18 = f22*f22; + f16 = f16*f16; + f16 = f18+f16; + f17 = f17*f17; + f16 = f16+f17; + if(r6 ==2) //_LBB352_32 +{ + f0 = 0; +__label__ = 32; +} +else{ +__label__ = 30; +} +} +if (__label__ == 30){ + f17 = f13-f11; + f2 = f2-f7; + f18 = f9-f15; + f0 = f0-f6; + f19 = f14-f12; + f4 = f4-f8; + f20 = f19*f0; + f21 = f17*f2; + f17 = f17*f4; + f0 = f18*f0; + f20 = f20-f21; + f0 = f17-f0; + f2 = f18*f2; + f4 = f19*f4; + f2 = f2-f4; + f4 = f20*f20; + f0 = f0*f0; + f0 = f4+f0; + f2 = f2*f2; + f0 = f0+f2; + if(r6 ==3) //_LBB352_35 +{ + f1 = 0; +__label__ = 34; +} +else{ +__label__ = 32; +} +} +if (__label__ == 32){ + f2 = f13-f11; + f3 = f3-f7; + f4 = f9-f15; + f1 = f1-f6; + f6 = f14-f12; + f5 = f5-f8; + f7 = f6*f1; + f8 = f2*f3; + f2 = f2*f5; + f1 = f4*f1; + f7 = f7-f8; + f1 = f2-f1; + f2 = f4*f3; + f3 = f6*f5; + f2 = f2-f3; + f3 = f7*f7; + f1 = f1*f1; + f1 = f3+f1; + f2 = f2*f2; + f1 = f1+f2; + f2 = 0; + if(f1 f2 ? f10 : f2; + r0 = f10 <= f2 ? r0 : r2; + f2 = f16 > f3 ? f16 : f3; + r0 = f16 > f3 ? r4 : r0; + f3 = f0 > f2 ? f0 : f2; + r2 = 3; + r0 = f0 > f2 ? r5 : r0; + r0 = f1 > f3 ? r2 : r0; +} + r0 = r0 < 0 ? r3 : r0; + r0 = (r0 * 276)|0; + r0 = (r1 + r0)|0; + r1 = r0 >> 2; + r1 = heap32[(r1+28)]; + if(r1 ==0) //_LBB352_52 +{ + r0 = (r0 + 4)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = 276; + memcpy(i7); +} +else{ + r0 = _2E_str4438; + r7 = _2E_str3437; + heap32[(g0)] = r0; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = 190; + _assert(i7); +} +} +else{ + r1 = _2E_str2149; + r2 = _2E_str3437; + heap32[(g0)] = r1; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = 168; + _assert(i7); +} +} +else{ + if(f1 >=f0) //_LBB352_16 +{ + r2 = (r9 * 276)|0; + r1 = (r1 + r2)|0; + r2 = r1 >> 2; + r3 = heap32[(r2+37)]; + if(r3 >-1) //_LBB352_18 +{ + f0 = heapFloat[(r2+53)]; + f1 = heapFloat[(r2+61)]; + f9 = heapFloat[(r2+69)]; + r0 = heap32[(r2+28)]; + r1 = (r1 + 4)|0; + heap32[(g0)] = r1; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = 276; + memcpy(i7); + heap32[(r2+28)] = r0; + heapFloat[(r2+29)] = f0; + heapFloat[(r2+31)] = f1; + heapFloat[(r2+32)] = f9; + heapFloat[(r2+53)] = f0; + heapFloat[(r2+61)] = f1; + heapFloat[(r2+69)] = f9; + heap32[(r2+37)] = r3; + return; +} +else{ + r1 = _2E_str3150; + r2 = _2E_str483; + heap32[(g0)] = r1; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = 177; + _assert(i7); +} +} +else{ + r1 = _2E_str2149; + r2 = _2E_str483; + heap32[(g0)] = r1; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = 165; + _assert(i7); +} +} +} + return; +} +else{ + r0 = _2E_str59; + r1 = _2E_str5152; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 64; + _assert(i7); +} +} + +function _ZN25btSimulationIslandManager26storeIslandActivationStateEP16btCollisionWorld(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = heap32[(r0+2)]; +if(!(r1 <1)) //_LBB353_10 +{ + r1 = heap32[(fp)]; + r2 = 0; + r3 = r2; +_3: while(true){ + r4 = heap32[(r0+4)]; + r5 = r2 << 2; + r4 = (r4 + r5)|0; + r4 = r4 >> 2; + r4 = heap32[(r4)]; + r5 = (r2 + 1)|0; + r6 = heapU8[r4+204]; + r6 = r6 & 3; + if(r6 !=0) //_LBB353_8 +{ + r2 = r4 >> 2; + heap32[(r2+52)] = -1; + heap32[(r2+53)] = -2; +} +else{ + r6 = r1 >> 2; + r7 = heap32[(r6+4)]; + r8 = r3 << 3; + r9 = (r7 + r8)|0; + r9 = r9 >> 2; + r9 = heap32[(r9)]; + if(r9 ==r3) //_LBB353_5 +{ + r10 = r3; +} +else{ + r10 = r3; +_11: while(true){ + r9 = r9 << 3; + r10 = r10 << 3; + r9 = (r7 + r9)|0; + r7 = (r7 + r10)|0; + r9 = r9 >> 2; + r7 = r7 >> 2; + r10 = heap32[(r9)]; + heap32[(r7)] = r10; + r10 = heap32[(r9)]; + r7 = heap32[(r6+4)]; + r9 = r10 << 3; + r9 = (r7 + r9)|0; + r9 = r9 >> 2; + r9 = heap32[(r9)]; +if(!(r9 !=r10)) //_LBB353_6 +{ +break _11; +} +} +} + r4 = r4 >> 2; + heap32[(r4+52)] = r10; + r6 = heap32[(r6+4)]; + r6 = (r6 + r8)|0; + r6 = r6 >> 2; + r3 = (r3 + 1)|0; + heap32[(r6+1)] = r2; + heap32[(r4+53)] = -1; +} + r4 = heap32[(r0+2)]; + r2 = r5; + if(r4 >r5) //_LBB353_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + return; +} + +function _ZN20btAlignedObjectArrayIP20btPersistentManifoldE17quickSortInternalI33btPersistentManifoldSortPredicateEEvT_ii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = heap32[(fp+1)]; + r2 = (r0 + r1)|0; + r3 = r2 >>> 31; + r4 = heap32[(fp)]; + r2 = (r2 + r3)|0; + r3 = r4 >> 2; + r2 = r2 & 2147483646; + r5 = heap32[(r3+3)]; + r2 = r2 << 1; + r2 = (r5 + r2)|0; + r2 = r2 >> 2; + r2 = heap32[(r2)]; + r5 = r1; + r6 = r0; +_1: while(true){ + r7 = r2 >> 2; + r8 = heap32[(r7+277)]; + r8 = r8 >> 2; + r9 = heap32[(r3+3)]; + r8 = heap32[(r8+52)]; +_3: while(true){ + r10 = r5 << 2; + r10 = (r9 + r10)|0; + r10 = r10 >> 2; + r11 = heap32[(r10)]; + r12 = r11 >> 2; + r13 = heap32[(r12+277)]; + r13 = r13 >> 2; + r13 = heap32[(r13+52)]; + if(r13 <0) //_LBB354_5 +{ + r13 = heap32[(r12+278)]; + r13 = r13 >> 2; + r13 = heap32[(r13+52)]; +} + if(r8 <0) //_LBB354_8 +{ + r12 = heap32[(r7+278)]; + r12 = r12 >> 2; + r12 = heap32[(r12+52)]; +} +else{ + r12 = r8; +} + if(r13 > 2; + r13 = heap32[(r13)]; + if(r8 <0) //_LBB354_13 +{ + r14 = heap32[(r7+278)]; + r14 = r14 >> 2; + r14 = heap32[(r14+52)]; +} +else{ + r14 = r8; +} + r15 = r13 >> 2; + r16 = heap32[(r15+277)]; + r16 = r16 >> 2; + r16 = heap32[(r16+52)]; + if(r16 <0) //_LBB354_16 +{ + r16 = heap32[(r15+278)]; + r16 = r16 >> 2; + r16 = heap32[(r16+52)]; +} + if(r14 > 2; + heap32[(r7)] = r11; +} + if(r5 <=r6) //_LBB354_1 +{ +continue _1; +} +else{ +break _1; +} +} +if(!(r6 <=r1)) //_LBB354_24 +{ + heap32[(g0)] = r4; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r6; + _ZN20btAlignedObjectArrayIP20btPersistentManifoldE17quickSortInternalI33btPersistentManifoldSortPredicateEEvT_ii(i7); +} +if(!(r5 >=r0)) //_LBB354_26 +{ + heap32[(g0)] = r4; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r0; + _ZN20btAlignedObjectArrayIP20btPersistentManifoldE17quickSortInternalI33btPersistentManifoldSortPredicateEEvT_ii(i7); +} + return; +} + +function _ZN25btSimulationIslandManager21updateActivationStateEP16btCollisionWorldP12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r0 = r0 >> 2; + r2 = heap32[(r0+2)]; +_1: do { + if(r2 >0) //_LBB355_2 +{ + r3 = 0; + r2 = r3; +_3: while(true){ + r4 = heap32[(r0+4)]; + r5 = r3 << 2; + r4 = (r4 + r5)|0; + r4 = r4 >> 2; + r4 = heap32[(r4)]; + r3 = (r3 + 1)|0; + r5 = heapU8[r4+204]; + r5 = r5 & 3; + if(r5 ==0) //_LBB355_5 +{ + r5 = (r2 + 1)|0; + r6 = r4 >> 2; + heap32[(r6+52)] = r2; + r2 = r5; +} + r4 = r4 >> 2; + heap32[(r4+53)] = -1; + heap32[(r4+60)] = 1065353216; + r4 = heap32[(r0+2)]; + if(r4 >r3) //_LBB355_3 +{ +continue _3; +} +else{ +break _1; +} +} +} +else{ + r2 = 0; +} +} while(0); + r3 = r1 >> 2; + r4 = heap32[(r3+2)]; +_10: do { +if(!(r4 >r2)) //_LBB355_26 +{ +if(!(r4 >=r2)) //_LBB355_26 +{ + r5 = heap32[(r3+3)]; +if(!(r5 >=r2)) //_LBB355_25 +{ + if(r2 !=0) //_LBB355_12 +{ + r5 = gNumAlignedAllocs; + r5 = r5 >> 2; + r6 = heap32[(r5)]; + r7 = r2 << 3; + r6 = (r6 + 1)|0; + r7 = r7 | 3; + heap32[(r5)] = r6; + r5 = (r7 + 16)|0; + heap32[(g0)] = r5; + malloc(i7); + r5 = r_g0; + if(r5 !=0) //_LBB355_14 +{ + r6 = 0; + r7 = (r5 + 4)|0; + r6 = (r6 - r7)|0; + r6 = r6 & 15; + r6 = (r5 + r6)|0; + r7 = (r6 + 4)|0; + r6 = r6 >> 2; + heap32[(r6)] = r5; + r5 = r7; +} +} +else{ + r5 = 0; +} + r6 = (r1 + 16)|0; + if(r4 <1) //_LBB355_17 +{ + r7 = r6 >> 2; + r8 = heap32[(r7)]; +} +else{ + r7 = 0; +_23: while(true){ + r8 = r6 >> 2; + r8 = heap32[(r8)]; + r9 = r7 << 3; + r10 = (r8 + r9)|0; + r10 = r10 >> 2; + r9 = (r5 + r9)|0; + r11 = heap32[(r10+1)]; + r10 = heap32[(r10)]; + r9 = r9 >> 2; + r7 = (r7 + 1)|0; + heap32[(r9)] = r10; + heap32[(r9+1)] = r11; +if(!(r4 !=r7)) //_LBB355_18 +{ +break _23; +} +} + r6 = (r1 + 16)|0; +} +if(!(r8 ==0)) //_LBB355_24 +{ + r7 = heapU8[r1+20]; +if(!(r7 ==0)) //_LBB355_23 +{ + r7 = gNumAlignedFree; + r7 = r7 >> 2; + r9 = heap32[(r7)]; + r9 = (r9 + 1)|0; + r8 = r8 >> 2; + heap32[(r7)] = r9; + r7 = heap32[(r8+-1)]; + heap32[(g0)] = r7; + free(i7); +} + r7 = r6 >> 2; + heap32[(r7)] = 0; +} + r7 = 1; + r6 = r6 >> 2; + heap8[r1+20] = r7; + heap32[(r6)] = r5; + heap32[(r3+3)] = r2; + if(r4 >=r2) //_LBB355_26 +{ +break _10; +} +} +_33: while(true){ + r1 = r4 << 3; + r5 = heap32[(r3+4)]; + r1 = (r5 + r1)|0; + r1 = r1 >> 2; + r4 = (r4 + 1)|0; + heap32[(r1)] = 0; + heap32[(r1+1)] = 0; + if(r2 !=r4) //_LBB355_25 +{ +continue _33; +} +else{ +break _10; +} +} +} +} +} while(0); + heap32[(r3+2)] = r2; +_36: do { +if(!(r2 <1)) //_LBB355_29 +{ + r1 = 0; +_38: while(true){ + r4 = r1 << 3; + r5 = heap32[(r3+4)]; + r5 = (r5 + r4)|0; + r5 = r5 >> 2; + heap32[(r5)] = r1; + r5 = heap32[(r3+4)]; + r4 = (r5 + r4)|0; + r1 = (r1 + 1)|0; + r4 = r4 >> 2; + heap32[(r4+1)] = 1; + if(r2 !=r1) //_LBB355_28 +{ +continue _38; +} +else{ +break _36; +} +} +} +} while(0); + r0 = heap32[(r0+20)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+9)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = r_g0; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+9)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r_g0; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = r_g0; +_41: do { +if(!(r2 <1)) //_LBB355_46 +{ + r0 = (r0 + 4)|0; +_43: while(true){ + r1 = r0 >> 2; + r4 = heap32[(r1+-1)]; + r4 = r4 >> 2; + r4 = heap32[(r4)]; +if(!(r4 ==0)) //_LBB355_45 +{ + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1)]; +if(!(r1 ==0)) //_LBB355_45 +{ + r4 = r4 >> 2; + r5 = heap32[(r4+51)]; + r5 = r5 & 7; +if(!(r5 !=0)) //_LBB355_45 +{ + r5 = heapU8[r1+204]; + r5 = r5 & 7; +if(!(r5 !=0)) //_LBB355_45 +{ + r4 = heap32[(r4+52)]; + r5 = heap32[(r3+4)]; + r6 = r4 << 3; + r6 = (r5 + r6)|0; + r6 = r6 >> 2; + r1 = r1 >> 2; + r6 = heap32[(r6)]; + r1 = heap32[(r1+52)]; +if(!(r6 ==r4)) //_LBB355_37 +{ +_51: while(true){ + r6 = r6 << 3; + r4 = r4 << 3; + r6 = (r5 + r6)|0; + r4 = (r5 + r4)|0; + r5 = r6 >> 2; + r4 = r4 >> 2; + r6 = heap32[(r5)]; + heap32[(r4)] = r6; + r4 = heap32[(r5)]; + r5 = heap32[(r3+4)]; + r6 = r4 << 3; + r6 = (r5 + r6)|0; + r6 = r6 >> 2; + r6 = heap32[(r6)]; +if(!(r6 !=r4)) //_LBB355_38 +{ +break _51; +} +} +} + r6 = r1 << 3; + r6 = (r5 + r6)|0; + r6 = r6 >> 2; + r6 = heap32[(r6)]; +_54: do { +if(!(r6 ==r1)) //_LBB355_41 +{ +_55: while(true){ + r6 = r6 << 3; + r1 = r1 << 3; + r6 = (r5 + r6)|0; + r1 = (r5 + r1)|0; + r5 = r6 >> 2; + r1 = r1 >> 2; + r6 = heap32[(r5)]; + heap32[(r1)] = r6; + r1 = heap32[(r5)]; + r5 = heap32[(r3+4)]; + r6 = r1 << 3; + r6 = (r5 + r6)|0; + r6 = r6 >> 2; + r6 = heap32[(r6)]; +if(!(r6 !=r1)) //_LBB355_42 +{ +break _54; +} +} +} +} while(0); +if(!(r4 ==r1)) //_LBB355_45 +{ + r4 = r4 << 3; + r5 = (r5 + r4)|0; + r5 = r5 >> 2; + heap32[(r5)] = r1; + r5 = heap32[(r3+4)]; + r1 = r1 << 3; + r1 = (r5 + r1)|0; + r4 = (r5 + r4)|0; + r1 = r1 >> 2; + r4 = r4 >> 2; + r5 = heap32[(r1+1)]; + r4 = heap32[(r4+1)]; + r4 = (r4 + r5)|0; + heap32[(r1+1)] = r4; +} +} +} +} +} + r2 = (r2 + -1)|0; + r0 = (r0 + 16)|0; + if(r2 !=0) //_LBB355_31 +{ +continue _43; +} +else{ +break _41; +} +} +} +} while(0); + return; +} + +function _ZN25btSimulationIslandManagerD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV25btSimulationIslandManager; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+14)]; +if(!(r1 ==0)) //_LBB356_4 +{ + r3 = heapU8[r0+60]; +if(!(r3 ==0)) //_LBB356_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+14)] = 0; +} + r1 = 1; + heap8[r0+60] = r1; + heap32[(r2+14)] = 0; + heap32[(r2+12)] = 0; + heap32[(r2+13)] = 0; + r3 = heap32[(r2+9)]; +if(!(r3 ==0)) //_LBB356_8 +{ + r4 = heapU8[r0+40]; +if(!(r4 ==0)) //_LBB356_7 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+9)] = 0; +} + heap8[r0+40] = r1; + heap32[(r2+9)] = 0; + heap32[(r2+7)] = 0; + heap32[(r2+8)] = 0; + r3 = heap32[(r2+4)]; +if(!(r3 ==0)) //_LBB356_12 +{ + r4 = heapU8[r0+20]; +if(!(r4 ==0)) //_LBB356_11 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+4)] = 0; +} + heap8[r0+20] = r1; + heap32[(r2+4)] = 0; + heap32[(r2+2)] = 0; + heap32[(r2+3)] = 0; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN25btSimulationIslandManagerD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV25btSimulationIslandManager; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+14)]; +if(!(r1 ==0)) //_LBB357_4 +{ + r3 = heapU8[r0+60]; +if(!(r3 ==0)) //_LBB357_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+14)] = 0; +} + r1 = 1; + heap8[r0+60] = r1; + heap32[(r2+14)] = 0; + heap32[(r2+12)] = 0; + heap32[(r2+13)] = 0; + r3 = heap32[(r2+9)]; +if(!(r3 ==0)) //_LBB357_8 +{ + r4 = heapU8[r0+40]; +if(!(r4 ==0)) //_LBB357_7 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+9)] = 0; +} + heap8[r0+40] = r1; + heap32[(r2+9)] = 0; + heap32[(r2+7)] = 0; + heap32[(r2+8)] = 0; + r3 = heap32[(r2+4)]; +if(!(r3 ==0)) //_LBB357_12 +{ + r4 = heapU8[r0+20]; +if(!(r4 ==0)) //_LBB357_11 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+4)] = 0; +} + heap8[r0+20] = r1; + heap32[(r2+4)] = 0; + heap32[(r2+2)] = 0; + heap32[(r2+3)] = 0; + return; +} + +function _ZN32btSphereSphereCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp) +{ + var i7; + var fp = sp>>2; + var f0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + f0 = 1; + f_g0 = f0; + return; +} + +function _ZN32btSphereSphereCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+3)]; +if(!(r2 ==0)) //_LBB359_23 +{ + r0 = heapU8[r0+8]; +if(!(r0 ==0)) //_LBB359_23 +{ + r0 = heap32[(fp+1)]; + r3 = r0 >> 2; + r4 = heap32[(r3+2)]; + r5 = heap32[(r3+1)]; + if(r4 ==r5) //_LBB359_4 +{ + r6 = 1; + r7 = r5 << 1; + r7 = r5 == 0 ? r6 : r7; +if(!(r4 >=r7)) //_LBB359_3 +{ + if(r7 !=0) //_LBB359_7 +{ + r2 = gNumAlignedAllocs; + r2 = r2 >> 2; + r4 = heap32[(r2)]; + r8 = r7 << 2; + r4 = (r4 + 1)|0; + r8 = r8 | 3; + heap32[(r2)] = r4; + r2 = (r8 + 16)|0; + heap32[(g0)] = r2; + malloc(i7); + r2 = r_g0; + if(r2 !=0) //_LBB359_9 +{ + r4 = 0; + r8 = (r2 + 4)|0; + r4 = (r4 - r8)|0; + r4 = r4 & 15; + r4 = (r2 + r4)|0; + r8 = (r4 + 4)|0; + r4 = r4 >> 2; + heap32[(r4)] = r2; + r2 = r8; +} +} +else{ + r2 = 0; +} + r4 = (r0 + 12)|0; + if(r5 <1) //_LBB359_12 +{ + r8 = r4 >> 2; + r9 = heap32[(r8)]; +} +else{ + r8 = 0; +_15: while(true){ + r9 = r4 >> 2; + r9 = heap32[(r9)]; + r10 = r8 << 2; + r11 = (r9 + r10)|0; + r11 = r11 >> 2; + r10 = (r2 + r10)|0; + r11 = heap32[(r11)]; + r8 = (r8 + 1)|0; + r10 = r10 >> 2; + heap32[(r10)] = r11; +if(!(r5 !=r8)) //_LBB359_13 +{ +break _15; +} +} + r4 = (r0 + 12)|0; +} + if(r9 !=0) //_LBB359_17 +{ + r8 = heapU8[r0+16]; + if(r8 !=0) //_LBB359_19 +{ + r5 = gNumAlignedFree; + r5 = r5 >> 2; + r8 = heap32[(r5)]; + r8 = (r8 + 1)|0; + r9 = r9 >> 2; + heap32[(r5)] = r8; + r5 = heap32[(r9+-1)]; + heap32[(g0)] = r5; + free(i7); + r5 = heap32[(r3+1)]; +} + r8 = r4 >> 2; + heap32[(r8)] = 0; +} + r4 = r4 >> 2; + heap8[r0+16] = r6; + heap32[(r4)] = r2; + heap32[(r3+2)] = r7; + r2 = heap32[(r1+3)]; +} +} + r0 = r5 << 2; + r1 = heap32[(r3+3)]; + r0 = (r1 + r0)|0; + r0 = r0 >> 2; + heap32[(r0)] = r2; + r0 = heap32[(r3+1)]; + r0 = (r0 + 1)|0; + heap32[(r3+1)] = r0; +} +} + return; +} + +function _ZN32btSphereSphereCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; +var __label__ = 0; + i7 = sp + -48;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+3)]; +_1: do { +if(!(r0 ==0)) //_LBB360_10 +{ + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+4)]; + r4 = r3 >> 2; + r1 = r1 >> 2; + heap32[(r4+1)] = r0; + r0 = r2 >> 2; + f0 = heapFloat[(r1+14)]; + f1 = heapFloat[(r0+14)]; + f2 = heapFloat[(r1+13)]; + f3 = heapFloat[(r0+13)]; + f0 = f0-f1; + f1 = f2-f3; + f2 = heapFloat[(r1+15)]; + f3 = heapFloat[(r0+15)]; + f2 = f2-f3; + r1 = heap32[(r1+48)]; + r2 = heap32[(r0+48)]; + f3 = f1*f1; + f4 = f0*f0; + f3 = f3+f4; + f4 = f2*f2; + f3 = f3+f4; + heapFloat[(g0)] = f3; + sqrtf(i7); + f3 = f_g0; + r1 = r1 >> 2; + r2 = r2 >> 2; + f4 = heapFloat[(r1+7)]; + f5 = heapFloat[(r1+3)]; + f6 = heapFloat[(r2+7)]; + f7 = heapFloat[(r2+3)]; + f6 = f6*f7; + f4 = f4*f5; + f4 = f4+f6; +_3: do { + if(f4 >=f3) //_LBB360_11 +{ + r1 = sp + -16; + r2 = r1 >> 2; + heap32[(fp+-4)] = 1065353216; + heap32[(r2+1)] = 0; + f4 = f3-f4; + heap32[(r2+2)] = 0; + heap32[(r2+3)] = 0; + f5 = 1.1920928955078125e-007; + if(f3 >f5) //_LBB360_13 +{ + f5 = 1; + f3 = f5/f3; + f1 = f1*f3; + f0 = f0*f3; + heapFloat[(fp+-4)] = f1; + f2 = f2*f3; + heapFloat[(r2+1)] = f0; + heapFloat[(r2+2)] = f2; + heap32[(r2+3)] = 0; +} +else{ + f1 = 1; + f0 = 0; + f2 = f0; +} + f1 = f1*f6; + f3 = heapFloat[(r0+13)]; + f5 = heapFloat[(r0+15)]; + f7 = heapFloat[(r0+14)]; + r0 = sp + -32; + f0 = f0*f6; + f1 = f3+f1; + f2 = f2*f6; + r2 = r0 >> 2; + f0 = f7+f0; + heapFloat[(fp+-8)] = f1; + f1 = f5+f2; + heapFloat[(r2+1)] = f0; + heapFloat[(r2+2)] = f1; + heap32[(r2+3)] = 0; + r2 = heap32[(r4)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r0; + heapFloat[(g0+3)] = f4; + __FUNCTION_TABLE__[(r2)>>2](i7); + r0 = heap32[(r4+1)]; + if(r0 !=0) //_LBB360_16 +{ + r1 = r0 >> 2; + r2 = heap32[(r1+279)]; + if(r2 ==0) //_LBB360_10 +{ +break _1; +} +else{ + r1 = heap32[(r1+277)]; + r2 = heap32[(r4+34)]; + if(r1 ==r2) //_LBB360_19 +{ + r1 = (r3 + 8)|0; + r2 = (r3 + 72)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r2; + _ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7); + return; +} +else{ + r1 = (r3 + 72)|0; + r3 = (r3 + 8)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; +__label__ = 8; +break _3; +} +} +} +else{ +__label__ = 3; +} +} +else{ + r0 = heap32[(r4+1)]; + if(r0 !=0) //_LBB360_4 +{ + r1 = r0 >> 2; + r2 = heap32[(r1+279)]; + if(r2 ==0) //_LBB360_10 +{ +break _1; +} +else{ + r1 = heap32[(r1+277)]; + r4 = heap32[(r4+34)]; + if(r1 ==r4) //_LBB360_9 +{ + r4 = (r3 + 8)|0; + r3 = (r3 + 72)|0; +} +else{ + r4 = (r3 + 72)|0; + r3 = (r3 + 8)|0; +} + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; +__label__ = 8; +} +} +else{ +__label__ = 3; +} +} +} while(0); +switch(__label__ ){//multiple entries +case 8: + heap32[(g0+2)] = r3; + _ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7); + return; +break; +case 3: + r0 = _2E_str59; + r3 = _2E_str160; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = 101; + _assert(i7); +break; +} +} +} while(0); + return; +} + +function _ZN32btSphereSphereCollisionAlgorithmD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV32btSphereSphereCollisionAlgorithm; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heapU8[r0+8]; +if(!(r1 ==0)) //_LBB361_3 +{ + r1 = heap32[(r2+3)]; +if(!(r1 ==0)) //_LBB361_3 +{ + r3 = heap32[(r2+1)]; + r4 = r3 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+4)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r1; + __FUNCTION_TABLE__[(r4)>>2](i7); +} +} + r1 = _ZTV30btActivatingCollisionAlgorithm; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN32btSphereSphereCollisionAlgorithmD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV32btSphereSphereCollisionAlgorithm; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r0 = heapU8[r0+8]; +if(!(r0 ==0)) //_LBB362_3 +{ + r0 = heap32[(r2+3)]; +if(!(r0 ==0)) //_LBB362_3 +{ + r1 = heap32[(r2+1)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+4)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + __FUNCTION_TABLE__[(r3)>>2](i7); +} +} + r0 = _ZTV30btActivatingCollisionAlgorithm; + r0 = (r0 + 8)|0; + heap32[(r2)] = r0; + return; +} + +function _ZN34btSphereTriangleCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp) +{ + var i7; + var fp = sp>>2; + var f0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + f0 = 1; + f_g0 = f0; + return; +} + +function _ZN34btSphereTriangleCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+3)]; +if(!(r2 ==0)) //_LBB364_23 +{ + r0 = heapU8[r0+8]; +if(!(r0 ==0)) //_LBB364_23 +{ + r0 = heap32[(fp+1)]; + r3 = r0 >> 2; + r4 = heap32[(r3+2)]; + r5 = heap32[(r3+1)]; + if(r4 ==r5) //_LBB364_4 +{ + r6 = 1; + r7 = r5 << 1; + r7 = r5 == 0 ? r6 : r7; +if(!(r4 >=r7)) //_LBB364_3 +{ + if(r7 !=0) //_LBB364_7 +{ + r2 = gNumAlignedAllocs; + r2 = r2 >> 2; + r4 = heap32[(r2)]; + r8 = r7 << 2; + r4 = (r4 + 1)|0; + r8 = r8 | 3; + heap32[(r2)] = r4; + r2 = (r8 + 16)|0; + heap32[(g0)] = r2; + malloc(i7); + r2 = r_g0; + if(r2 !=0) //_LBB364_9 +{ + r4 = 0; + r8 = (r2 + 4)|0; + r4 = (r4 - r8)|0; + r4 = r4 & 15; + r4 = (r2 + r4)|0; + r8 = (r4 + 4)|0; + r4 = r4 >> 2; + heap32[(r4)] = r2; + r2 = r8; +} +} +else{ + r2 = 0; +} + r4 = (r0 + 12)|0; + if(r5 <1) //_LBB364_12 +{ + r8 = r4 >> 2; + r9 = heap32[(r8)]; +} +else{ + r8 = 0; +_15: while(true){ + r9 = r4 >> 2; + r9 = heap32[(r9)]; + r10 = r8 << 2; + r11 = (r9 + r10)|0; + r11 = r11 >> 2; + r10 = (r2 + r10)|0; + r11 = heap32[(r11)]; + r8 = (r8 + 1)|0; + r10 = r10 >> 2; + heap32[(r10)] = r11; +if(!(r5 !=r8)) //_LBB364_13 +{ +break _15; +} +} + r4 = (r0 + 12)|0; +} + if(r9 !=0) //_LBB364_17 +{ + r8 = heapU8[r0+16]; + if(r8 !=0) //_LBB364_19 +{ + r5 = gNumAlignedFree; + r5 = r5 >> 2; + r8 = heap32[(r5)]; + r8 = (r8 + 1)|0; + r9 = r9 >> 2; + heap32[(r5)] = r8; + r5 = heap32[(r9+-1)]; + heap32[(g0)] = r5; + free(i7); + r5 = heap32[(r3+1)]; +} + r8 = r4 >> 2; + heap32[(r8)] = 0; +} + r4 = r4 >> 2; + heap8[r0+16] = r6; + heap32[(r4)] = r2; + heap32[(r3+2)] = r7; + r2 = heap32[(r1+3)]; +} +} + r0 = r5 << 2; + r1 = heap32[(r3+3)]; + r0 = (r1 + r0)|0; + r0 = r0 >> 2; + heap32[(r0)] = r2; + r0 = heap32[(r3+1)]; + r0 = (r0 + 1)|0; + heap32[(r3+1)] = r0; +} +} + return; +} + +function _ZN34btSphereTriangleCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var f0; +var __label__ = 0; + i7 = sp + -176;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+3)]; +if(!(r2 ==0)) //_LBB365_8 +{ + r3 = heap32[(fp+1)]; + r4 = heap32[(fp+2)]; + r5 = heap32[(fp+3)]; + r6 = heap32[(fp+4)]; + r7 = heapU8[r0+16]; + r8 = r7 == 0 ? r4 : r3; + r3 = r7 == 0 ? r3 : r4; + r4 = r8 >> 2; + r3 = r3 >> 2; + r7 = heap32[(r4+48)]; + r8 = heap32[(r3+48)]; + r9 = r6 >> 2; + heap32[(r9+1)] = r2; + r1 = heap32[(r1+3)]; + r1 = r1 >> 2; + f0 = heapFloat[(r1+280)]; + r1 = _ZTV22SphereTriangleDetector; + r2 = sp + -16; + r1 = (r1 + 8)|0; + r10 = r2 >> 2; + heap32[(fp+-4)] = r1; + heap32[(r10+1)] = r8; + r1 = sp + -152; + heap32[(r10+2)] = r7; + r7 = r1 >> 2; + heapFloat[(r10+3)] = f0; + heap32[(r7+33)] = 0; + heap32[(r7+32)] = 1566444395; + heap32[(fp+-38)] = heap32[(r3+1)]; + heap32[(r7+1)] = heap32[(r3+2)]; + heap32[(r7+2)] = heap32[(r3+3)]; + heap32[(r7+3)] = heap32[(r3+4)]; + heap32[(r7+4)] = heap32[(r3+5)]; + heap32[(r7+5)] = heap32[(r3+6)]; + heap32[(r7+6)] = heap32[(r3+7)]; + heap32[(r7+7)] = heap32[(r3+8)]; + heap32[(r7+8)] = heap32[(r3+9)]; + heap32[(r7+9)] = heap32[(r3+10)]; + heap32[(r7+10)] = heap32[(r3+11)]; + heap32[(r7+11)] = heap32[(r3+12)]; + heap32[(r7+12)] = heap32[(r3+13)]; + heap32[(r7+13)] = heap32[(r3+14)]; + heap32[(r7+14)] = heap32[(r3+15)]; + heap32[(r7+15)] = heap32[(r3+16)]; + heap32[(r7+16)] = heap32[(r4+1)]; + heap32[(r7+17)] = heap32[(r4+2)]; + heap32[(r7+18)] = heap32[(r4+3)]; + heap32[(r7+19)] = heap32[(r4+4)]; + heap32[(r7+20)] = heap32[(r4+5)]; + heap32[(r7+21)] = heap32[(r4+6)]; + heap32[(r7+22)] = heap32[(r4+7)]; + heap32[(r7+23)] = heap32[(r4+8)]; + heap32[(r7+24)] = heap32[(r4+9)]; + heap32[(r7+25)] = heap32[(r4+10)]; + heap32[(r7+26)] = heap32[(r4+11)]; + heap32[(r7+27)] = heap32[(r4+12)]; + heap32[(r7+28)] = heap32[(r4+13)]; + heap32[(r7+29)] = heap32[(r4+14)]; + heap32[(r7+30)] = heap32[(r4+15)]; + heap32[(r7+31)] = heap32[(r4+16)]; + r3 = r5 >> 2; + r4 = heapU8[r0+16]; + r3 = heap32[(r3+5)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r6; + heap32[(g0+3)] = r3; + heap32[(g0+4)] = r4; + _ZN22SphereTriangleDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(i7); + r0 = heapU8[r0+8]; +if(!(r0 ==0)) //_LBB365_8 +{ + r0 = heap32[(r9+1)]; + if(r0 !=0) //_LBB365_4 +{ + r1 = r0 >> 2; + r2 = heap32[(r1+279)]; +if(!(r2 ==0)) //_LBB365_8 +{ + r1 = heap32[(r1+277)]; + r2 = heap32[(r9+34)]; + if(r1 ==r2) //_LBB365_7 +{ + r1 = (r6 + 8)|0; + r2 = (r6 + 72)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r2; + _ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7); +} +else{ + r1 = (r6 + 72)|0; + r6 = (r6 + 8)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r6; + _ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7); + return; +} +} +} +else{ + r0 = _2E_str59; + r6 = _2E_str160; + heap32[(g0)] = r0; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = 101; + _assert(i7); +} +} +} + return; +} + +function _ZN34btSphereTriangleCollisionAlgorithmD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV34btSphereTriangleCollisionAlgorithm; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heapU8[r0+8]; +if(!(r1 ==0)) //_LBB366_3 +{ + r1 = heap32[(r2+3)]; +if(!(r1 ==0)) //_LBB366_3 +{ + r3 = heap32[(r2+1)]; + r4 = r3 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+4)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r1; + __FUNCTION_TABLE__[(r4)>>2](i7); +} +} + r1 = _ZTV30btActivatingCollisionAlgorithm; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN34btSphereTriangleCollisionAlgorithmD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV34btSphereTriangleCollisionAlgorithm; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r0 = heapU8[r0+8]; +if(!(r0 ==0)) //_LBB367_3 +{ + r0 = heap32[(r2+3)]; +if(!(r0 ==0)) //_LBB367_3 +{ + r1 = heap32[(r2+1)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+4)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + __FUNCTION_TABLE__[(r3)>>2](i7); +} +} + r0 = _ZTV30btActivatingCollisionAlgorithm; + r0 = (r0 + 8)|0; + heap32[(r2)] = r0; + return; +} + +function _ZN20btAlignedObjectArrayI9btElementE17quickSortInternalI31btUnionFindElementSortPredicateEEvT_ii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = heap32[(fp+1)]; + r2 = (r0 + r1)|0; + r3 = r2 >>> 31; + r4 = heap32[(fp)]; + r2 = (r2 + r3)|0; + r3 = r4 >> 2; + r2 = r2 & 1073741822; + r5 = heap32[(r3+3)]; + r2 = r2 << 2; + r2 = (r5 + r2)|0; + r2 = r2 >> 2; + r2 = heap32[(r2)]; + r5 = r1; + r6 = r0; +_1: while(true){ + r7 = heap32[(r3+3)]; + r8 = r5 << 3; + r8 = (r7 + r8)|0; + r8 = r8 >> 2; + r8 = heap32[(r8)]; + if(r8 > 2; + r8 = heap32[(r8+2)]; + r5 = (r5 + 1)|0; + if(r8 > 2; + r9 = heap32[(r9)]; +_7: do { + if(r2 > 2; + r9 = heap32[(r9+-2)]; + r6 = (r6 + -1)|0; + if(r2 > 2; + r7 = r7 >> 2; + r12 = heap32[(r10+1)]; + r7 = heap32[(r7+1)]; + heap32[(r10)] = r9; + heap32[(r10+1)] = r7; + r7 = heap32[(r3+3)]; + r7 = (r7 + r11)|0; + r7 = r7 >> 2; + r5 = (r5 + 1)|0; + r6 = (r6 + -1)|0; + heap32[(r7)] = r8; + heap32[(r7+1)] = r12; +} + if(r5 <=r6) //_LBB368_1 +{ +continue _1; +} +else{ +break _1; +} +} +if(!(r6 <=r1)) //_LBB368_13 +{ + heap32[(g0)] = r4; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r6; + _ZN20btAlignedObjectArrayI9btElementE17quickSortInternalI31btUnionFindElementSortPredicateEEvT_ii(i7); +} +if(!(r5 >=r0)) //_LBB368_15 +{ + heap32[(g0)] = r4; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r0; + _ZN20btAlignedObjectArrayI9btElementE17quickSortInternalI31btUnionFindElementSortPredicateEEvT_ii(i7); +} + return; +} + +function _ZN22SphereTriangleDetectorD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV22SphereTriangleDetector; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN22SphereTriangleDetectorD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV22SphereTriangleDetector; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN22SphereTriangleDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; + var f30; +var __label__ = 0; + i7 = sp + -144;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+2)]; + r1 = r1 >> 2; + f0 = heapFloat[(r1+19)]; + f1 = heapFloat[(r1+15)]; + f2 = heapFloat[(r1+23)]; + f3 = heapFloat[(r1+17)]; + f4 = heapFloat[(r1+13)]; + f5 = heapFloat[(r1+21)]; + f6 = heapFloat[(r1+22)]; + f7 = heapFloat[(r1+14)]; + f8 = heapFloat[(r1+18)]; + f0 = f0-f1; + f6 = f6-f7; + f3 = f3-f4; + f1 = f2-f1; + f2 = f8-f7; + f4 = f5-f4; + r2 = heap32[(fp+1)]; + r3 = heap32[(r0+1)]; + f5 = f2*f1; + f7 = f0*f6; + f0 = f0*f4; + f1 = f3*f1; + r2 = r2 >> 2; + r3 = r3 >> 2; + f5 = f5-f7; + f0 = f0-f1; + f1 = f3*f6; + f2 = f2*f4; + f3 = heapFloat[(r0+3)]; + f1 = f1-f2; + f2 = f5*f5; + f4 = f0*f0; + f6 = heapFloat[(r3+7)]; + f7 = heapFloat[(r3+3)]; + f8 = heapFloat[(r2+18)]; + f9 = heapFloat[(r2+22)]; + f10 = heapFloat[(r2+26)]; + f11 = heapFloat[(r2+17)]; + f12 = heapFloat[(r2+21)]; + f13 = heapFloat[(r2+25)]; + f14 = heapFloat[(r2+16)]; + f15 = heapFloat[(r2+12)]; + f16 = heapFloat[(r2+28)]; + f17 = heapFloat[(r2+20)]; + f18 = heapFloat[(r2+13)]; + f19 = heapFloat[(r2+29)]; + f20 = heapFloat[(r2+24)]; + f21 = heapFloat[(r2+14)]; + f22 = heapFloat[(r2+30)]; + f2 = f2+f4; + f4 = f1*f1; + f15 = f15-f16; + f16 = f18-f19; + f2 = f2+f4; + f4 = f21-f22; + heapFloat[(g0)] = f2; + f2 = f11*f15; + f11 = f12*f16; + f12 = f14*f15; + f14 = f17*f16; + sqrtf(i7); + f18 = 1; + heapFloat[(fp+-25)] = f18; + f8 = f8*f15; + f9 = f9*f16; + f2 = f2+f11; + f11 = f13*f4; + f12 = f12+f14; + f13 = f20*f4; + f14 = f18/f_g0; + f2 = f2+f11; + f11 = heapFloat[(r1+14)]; + f12 = f12+f13; + f13 = heapFloat[(r1+13)]; + f8 = f8+f9; + f4 = f10*f4; + f5 = f5*f14; + f9 = f12-f13; + heapFloat[(fp+-28)] = f9; + f0 = f0*f14; + f10 = f2-f11; + heapFloat[(fp+-29)] = f10; + f4 = f8+f4; + f8 = heapFloat[(r1+15)]; + f1 = f1*f14; + f14 = f4-f8; + heapFloat[(fp+-27)] = f14; + f9 = f9*f5; + f10 = f10*f0; + f9 = f9+f10; + f10 = f14*f1; + f9 = f9+f10; + r3 = heap32[(fp+2)]; + r4 = heap32[(fp+4)]; + f6 = f6*f7; + heapFloat[(fp+-26)] = f6; + f6 = 0; + if(f9 =f6) //_LBB371_31 +{ +__label__ = 29; +} +else{ +__label__ = 4; +} +} +_6: do { +if (__label__ == 4){ + f7 = heapFloat[(fp+-26)]; + f3 = f7+f3; + heapFloat[(fp+-30)] = f3; +if(!(f3 <=f9)) //_LBB371_31 +{ + f3 = heapFloat[(r1+19)]; + f7 = heapFloat[(r1+23)]; + f10 = heapFloat[(r1+17)]; + f14 = heapFloat[(r1+21)]; + f15 = heapFloat[(r1+18)]; + f16 = heapFloat[(r1+22)]; + f17 = f7-f3; + f18 = f14-f10; + f19 = f3-f8; + f8 = f8-f7; + f20 = f16-f15; + f21 = f10-f13; + f22 = f15-f11; + f13 = f13-f14; + f11 = f11-f16; + f23 = f20*f1; + f24 = f17*f0; + f17 = f17*f5; + f25 = f18*f1; + f26 = f22*f1; + f27 = f19*f0; + f19 = f19*f5; + f28 = f21*f1; + f29 = f11*f1; + f30 = f8*f0; + f8 = f8*f5; + heapFloat[(fp+-31)] = f8; + f8 = f13*f1; + f23 = f23-f24; + f10 = f12-f10; + f17 = f17-f25; + f15 = f2-f15; + f18 = f18*f0; + f20 = f20*f5; + f24 = f26-f27; + f19 = f19-f28; + f21 = f21*f0; + f22 = f22*f5; + f25 = f29-f30; + f14 = f12-f14; + f26 = heapFloat[(fp+-31)]; + f8 = f26-f8; + f16 = f2-f16; + f13 = f13*f0; + f11 = f11*f5; + f10 = f23*f10; + f15 = f17*f15; + f17 = f18-f20; + f3 = f4-f3; + f18 = heapFloat[(fp+-28)]; + f18 = f24*f18; + f20 = heapFloat[(fp+-29)]; + f19 = f19*f20; + f20 = f21-f22; + f14 = f25*f14; + f8 = f8*f16; + f11 = f13-f11; + f7 = f4-f7; + f10 = f10+f15; + f3 = f17*f3; + f13 = f18+f19; + f15 = heapFloat[(fp+-27)]; + f15 = f20*f15; + f8 = f14+f8; + f7 = f11*f7; + f3 = f10+f3; + f10 = f13+f15; + f7 = f8+f7; + if(f3 <=f6) //_LBB371_9 +{ +__label__ = 8; +} +else{ + f8 = 0; + if(f10 <=f8) //_LBB371_9 +{ +__label__ = 8; +} +else{ + if(f7 >f8) //_LBB371_12 +{ +__label__ = 11; +} +else{ +__label__ = 8; +} +} +} +_12: do { +if (__label__ == 8){ +if(!(f10 >f6)) //_LBB371_13 +{ +if(!(f3 >f6)) //_LBB371_13 +{ +if(!(f7 >f6)) //_LBB371_13 +{ +__label__ = 11; +break _12; +} +} +} + r1 = heap32[(r0+2)]; + r5 = r1 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+22)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r5)>>2](i7); + r1 = r_g0; + if(r1 <1) //_LBB371_31 +{ +break _6; +} +else{ + f0 = heapFloat[(fp+-30)]; + f5 = f0*f0; + r1 = 0; + r5 = r1; +_19: while(true){ + r6 = heap32[(r0+2)]; + r7 = r6 >> 2; + r7 = heap32[(r7)]; + r7 = r7 >> 2; + r7 = heap32[(r7+23)]; + r8 = sp + -32; + r9 = sp + -16; + heap32[(g0)] = r6; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r9; + heap32[(g0+3)] = r8; + __FUNCTION_TABLE__[(r7)>>2](i7); + r6 = r8 >> 2; + r7 = r9 >> 2; + f7 = heapFloat[(r7+1)]; + f8 = heapFloat[(r6+1)]; + f9 = heapFloat[(fp+-4)]; + f10 = heapFloat[(fp+-8)]; + f11 = f2-f7; + f8 = f8-f7; + f13 = f12-f9; + f10 = f10-f9; + f14 = heapFloat[(r7+2)]; + f15 = heapFloat[(r6+2)]; + f16 = f4-f14; + f15 = f15-f14; + f17 = f10*f13; + f18 = f8*f11; + f17 = f17+f18; + f18 = f15*f16; + f17 = f17+f18; + r1 = (r1 + 1)|0; + if(f17 >f6) //_LBB371_17 +{ + f18 = f10*f10; + f19 = f8*f8; + f18 = f18+f19; + f19 = f15*f15; + f18 = f18+f19; + if(f17 >=f18) //_LBB371_19 +{ + f13 = f13-f10; + f11 = f11-f8; + f16 = f16-f15; + f17 = heapFloat[(fp+-25)]; +} +else{ + f17 = f17/f18; + f18 = f10*f17; + f19 = f8*f17; + f20 = f15*f17; + f13 = f13-f18; + f11 = f11-f19; + f16 = f16-f20; +} +} +else{ + f17 = f6; +} + f13 = f13*f13; + f11 = f11*f11; + f11 = f13+f11; + f13 = f16*f16; + f11 = f11+f13; + if(f11 > 2; + r7 = heap32[(r7)]; + r7 = r7 >> 2; + r7 = heap32[(r7+22)]; + heap32[(g0)] = r6; + __FUNCTION_TABLE__[(r7)>>2](i7); + r6 = r_g0; +if(!(r6 >r1)) //_LBB371_15 +{ +break _19; +} +} + r0 = r5 & 255; + if(r0 ==0) //_LBB371_31 +{ +break _6; +} +else{ +__label__ = 23; +} +} +} +} while(0); +if (__label__ == 11){ + f6 = f1*f9; + f0 = f0*f9; + f1 = f5*f9; + f3 = f4-f6; + f0 = f2-f0; + f1 = f12-f1; +} + f2 = f2-f0; + f5 = f12-f1; + f4 = f4-f3; + f6 = f5*f5; + f7 = f2*f2; + f6 = f6+f7; + f7 = f4*f4; + f6 = f6+f7; + f7 = heapFloat[(fp+-26)]; + f7 = f7*f7; + if(f7 <=f6) //_LBB371_27 +{ + f6 = 0; + f5 = f5*f6; + f2 = f2*f6; + f2 = f5+f2; + f4 = f4*f6; + f2 = f2+f4; + if(f2 >=f6) //_LBB371_31 +{ +break _6; +} +} +else{ + heapFloat[(g0)] = f6; + sqrtf(i7); + f7 = f_g0; + heapFloat[(g0)] = f6; + f6 = 1; + sqrtf(i7); + f9 = heapFloat[(fp+-26)]; + f7 = f9-f7; + f6 = f6/f_g0; + f5 = f5*f6; + f2 = f2*f6; + f4 = f4*f6; + f6 = -f7; +} + if(r4 ==0) //_LBB371_30 +{ + r0 = r3 >> 2; + f7 = heapFloat[(r2+16)]; + f8 = heapFloat[(r2+17)]; + r0 = heap32[(r0)]; + f9 = heapFloat[(r2+20)]; + f10 = heapFloat[(r2+21)]; + f11 = f7*f1; + f12 = f8*f0; + f13 = heapFloat[(r2+18)]; + r0 = r0 >> 2; + f14 = heapFloat[(r2+24)]; + f15 = heapFloat[(r2+25)]; + f16 = heapFloat[(r2+22)]; + f17 = f9*f1; + f18 = f10*f0; + f11 = f11+f12; + f12 = f13*f3; + f19 = heapFloat[(r2+26)]; + r0 = heap32[(r0+4)]; + f1 = f14*f1; + f0 = f15*f0; + f17 = f17+f18; + f18 = f16*f3; + f11 = f11+f12; + f12 = heapFloat[(r2+28)]; + f20 = heapFloat[(r2+30)]; + f21 = heapFloat[(r2+29)]; + r1 = sp + -64; + f17 = f17+f18; + f0 = f1+f0; + f1 = f19*f3; + f3 = f11+f12; + f0 = f0+f1; + r2 = r1 >> 2; + f1 = f17+f21; + heapFloat[(fp+-16)] = f3; + f3 = f7*f5; + f7 = f8*f2; + f0 = f0+f20; + heapFloat[(r2+1)] = f1; + heapFloat[(r2+2)] = f0; + f0 = f9*f5; + f1 = f10*f2; + f3 = f3+f7; + f7 = f13*f4; + r4 = sp + -48; + f5 = f14*f5; + f2 = f15*f2; + f0 = f0+f1; + f1 = f16*f4; + f3 = f3+f7; + heap32[(r2+3)] = 0; + r2 = r4 >> 2; + f2 = f5+f2; + f4 = f19*f4; + f0 = f0+f1; + heapFloat[(fp+-12)] = f3; + f1 = f2+f4; + heapFloat[(r2+1)] = f0; + heapFloat[(r2+2)] = f1; + heap32[(r2+3)] = 0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r1; + heapFloat[(g0+3)] = f6; + __FUNCTION_TABLE__[(r0)>>2](i7); +} +else{ + f7 = heapFloat[(r2+16)]; + f8 = heapFloat[(r2+17)]; + f9 = heapFloat[(r2+20)]; + f10 = heapFloat[(r2+21)]; + f11 = f7*f5; + f12 = f8*f2; + f13 = heapFloat[(r2+18)]; + f14 = heapFloat[(r2+24)]; + f15 = heapFloat[(r2+25)]; + f16 = heapFloat[(r2+22)]; + f17 = f9*f5; + f18 = f10*f2; + f11 = f11+f12; + f12 = f13*f4; + f19 = heapFloat[(r2+26)]; + f11 = f11+f12; + f5 = f14*f5; + f2 = f15*f2; + f12 = f17+f18; + f17 = f16*f4; + r0 = sp + -80; + f12 = f12+f17; + f2 = f5+f2; + f4 = f19*f4; + f5 = -f11; + f2 = f2+f4; + r1 = r0 >> 2; + f4 = -f12; + heapFloat[(fp+-20)] = f5; + f5 = -f2; + heapFloat[(r1+1)] = f4; + heapFloat[(r1+2)] = f5; + f4 = f7*f1; + f5 = f8*f0; + heap32[(r1+3)] = 0; + f7 = f9*f1; + f8 = f10*f0; + f4 = f4+f5; + f5 = f13*f3; + f1 = f14*f1; + f0 = f15*f0; + f7 = f7+f8; + f8 = f16*f3; + f4 = f4+f5; + f5 = heapFloat[(r2+28)]; + f0 = f1+f0; + f1 = f19*f3; + f3 = f7+f8; + f7 = heapFloat[(r2+29)]; + f8 = heapFloat[(r2+30)]; + f4 = f4+f5; + f5 = f11*f6; + r2 = sp + -96; + f0 = f0+f1; + f1 = f3+f7; + f3 = f12*f6; + f4 = f4+f5; + r1 = r2 >> 2; + f0 = f0+f8; + f2 = f2*f6; + f1 = f1+f3; + heapFloat[(fp+-24)] = f4; + f0 = f0+f2; + heapFloat[(r1+1)] = f1; + heapFloat[(r1+2)] = f0; + r4 = r3 >> 2; + heap32[(r1+3)] = 0; + r1 = heap32[(r4)]; + r1 = r1 >> 2; + r1 = heap32[(r1+4)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r2; + heapFloat[(g0+3)] = f6; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} +} +} +} while(0); + return; +} + +function _ZNK10btBoxShape7getAabbERK11btTransformR9btVector3S4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f1; + var f2; + var f3; +var __label__ = 0; + i7 = sp + -32;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f1 = heapFloat[(r1+7)]; + f2 = heapFloat[(r1+8)]; + f3 = heapFloat[(r1+9)]; + r0 = heap32[(fp+1)]; + r1 = heap32[(fp+2)]; + r2 = heap32[(fp+3)]; + heapFloat[(g0)] = f1; + heapFloat[(g0+1)] = f2; + heapFloat[(g0+2)] = f3; + heapFloat[(g0+3)] = f_g0; + heap32[(g0+4)] = r0; + heap32[(g0+5)] = r1; + heap32[(g0+6)] = r2; + _Z15btTransformAabbRK9btVector3fRK11btTransformRS_S5_(i7); + return; +} + +function _Z15btTransformAabbRK9btVector3fRK11btTransformRS_S5_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+4)]; + r0 = r0 >> 2; + f0 = heapFloat[(fp+2)]; + f1 = heapFloat[(fp+3)]; + f2 = heapFloat[(fp+1)]; + f3 = heapFloat[(fp)]; + f4 = heapFloat[(r0+10)]; + r1 = heap32[(fp+5)]; + r2 = heap32[(fp+6)]; + f0 = f0+f1; + f2 = f2+f1; + f1 = f3+f1; + f3 = 0; + if(f4 > 2; + f1 = f1+f2; + f0 = f4*f0; + f2 = f7-f3; + f0 = f1+f0; + f1 = f8-f5; + heapFloat[(r0)] = f2; + f2 = f9-f0; + heapFloat[(r0+1)] = f1; + heapFloat[(r0+2)] = f2; + r1 = r2 >> 2; + f1 = f7+f3; + heap32[(r0+3)] = 0; + f2 = f8+f5; + heapFloat[(r1)] = f1; + f0 = f9+f0; + heapFloat[(r1+1)] = f2; + heapFloat[(r1+2)] = f0; + heap32[(r1+3)] = 0; + return; +} + +function _ZNK10btBoxShape24localGetSupportingVertexERK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + f0 = heapFloat[(r1+7)]; + f1 = heapFloat[(r1+8)]; + f2 = heapFloat[(r1+9)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f3 = f_g0; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f4 = f_g0; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+11)]; + heap32[(g0)] = r0; + r0 = heap32[(fp+2)]; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = r0 >> 2; + f0 = f0+f_g0; + r1 = heap32[(fp)]; + f1 = f1+f4; + f4 = 0; + f5 = -f0; + f6 = heapFloat[(r0)]; + f7 = heapFloat[(r0+2)]; + f8 = heapFloat[(r0+1)]; + f2 = f2+f3; + f3 = -f1; + r0 = r1 >> 2; + f0 = f6 < f4 ? f5 : f0; + f5 = -f2; + f1 = f8 < f4 ? f3 : f1; + heapFloat[(r0)] = f0; + f0 = f7 < f4 ? f5 : f2; + heapFloat[(r0+1)] = f1; + heapFloat[(r0+2)] = f0; + heap32[(r0+3)] = 0; + return; +} + +function _ZNK10btBoxShape37localGetSupportingVertexWithoutMarginERK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = heap32[(fp+2)]; + r1 = r1 >> 2; + f0 = heapFloat[(r0+7)]; + r2 = heap32[(fp)]; + f1 = heapFloat[(r0+9)]; + f2 = heapFloat[(r0+8)]; + f3 = 0; + f4 = -f0; + f5 = heapFloat[(r1)]; + f6 = heapFloat[(r1+2)]; + f7 = heapFloat[(r1+1)]; + f8 = -f2; + r0 = r2 >> 2; + f0 = f5 < f3 ? f4 : f0; + f4 = -f1; + f2 = f7 < f3 ? f8 : f2; + heapFloat[(r0)] = f0; + f0 = f6 < f3 ? f4 : f1; + heapFloat[(r0+1)] = f2; + heapFloat[(r0+2)] = f0; + heap32[(r0+3)] = 0; + return; +} + +function _ZNK10btBoxShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+3)]; +if(!(r0 <1)) //_LBB376_3 +{ + r1 = heap32[(fp)]; + r2 = heap32[(fp+1)]; + r3 = heap32[(fp+2)]; + r3 = (r3 + 8)|0; + r2 = (r2 + 8)|0; + f3 = 0; +_3: while(true){ + r4 = r1 >> 2; + r5 = r2 >> 2; + f0 = heapFloat[(r4+7)]; + f1 = heapFloat[(r4+9)]; + f2 = heapFloat[(r4+8)]; + f4 = -f0; + f5 = heapFloat[(r5+-2)]; + f6 = heapFloat[(r5)]; + f7 = heapFloat[(r5+-1)]; + f8 = -f2; + r4 = r3 >> 2; + f0 = f5 < f3 ? f4 : f0; + f4 = -f1; + f2 = f7 < f3 ? f8 : f2; + heapFloat[(r4+-2)] = f0; + f0 = f6 < f3 ? f4 : f1; + heapFloat[(r4+-1)] = f2; + r0 = (r0 + -1)|0; + r3 = (r3 + 16)|0; + r2 = (r2 + 16)|0; + heapFloat[(r4)] = f0; + heap32[(r4+1)] = 0; + if(r0 !=0) //_LBB376_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + return; +} + +function _ZN10btBoxShape9setMarginEf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f0 = f_g0; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f1 = f_g0; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f2 = f_g0; + f3 = heapFloat[(r1+9)]; + f4 = heapFloat[(r1+8)]; + f5 = heapFloat[(r1+7)]; + heap32[(r1+11)] = heap32[(fp+1)]; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f6 = f_g0; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f7 = f_g0; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + f2 = f5+f2; + __FUNCTION_TABLE__[(r2)>>2](i7); + f1 = f4+f1; + f2 = f2-f_g0; + f0 = f3+f0; + f1 = f1-f7; + heapFloat[(r1+7)] = f2; + f0 = f0-f6; + heapFloat[(r1+8)] = f1; + heapFloat[(r1+9)] = f0; + heap32[(r1+10)] = 0; + return; +} + +function _ZNK10btBoxShape8getPlaneER9btVector3S1_i(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var f0; + var f1; + var f2; +var __label__ = 0; + i7 = sp + -64;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+28)]; + r3 = sp + -32; + r4 = heap32[(fp+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r4; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r3 >> 2; + r3 = heap32[(fp+1)]; + f0 = heapFloat[(r2+2)]; + f1 = heapFloat[(r2+1)]; + f2 = heapFloat[(fp+-8)]; + r2 = r3 >> 2; + heapFloat[(r2)] = f2; + heapFloat[(r2+1)] = f1; + heapFloat[(r2+2)] = f0; + heap32[(r2+3)] = 0; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+15)]; + r2 = sp + -16; + f2 = -f2; + r3 = r2 >> 2; + f1 = -f1; + heapFloat[(fp+-4)] = f2; + f0 = -f0; + heapFloat[(r3+1)] = f1; + heapFloat[(r3+2)] = f0; + heap32[(r3+3)] = 0; + r3 = sp + -48; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r2; + r0 = heap32[(fp+2)]; + r0 = r0 >> 2; + __FUNCTION_TABLE__[(r1)>>2](i7); + r1 = r3 >> 2; + heap32[(r0)] = heap32[(fp+-12)]; + heap32[(r0+1)] = heap32[(r1+1)]; + heap32[(r0+2)] = heap32[(r1+2)]; + heap32[(r0+3)] = heap32[(r1+3)]; + return; +} + +function _ZNK10btBoxShape12getNumPlanesEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 6; + r_g0 = r0; + return; +} + +function _ZNK10btBoxShape14getNumVerticesEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 8; + r_g0 = r0; + return; +} + +function _ZNK10btBoxShape11getNumEdgesEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 12; + r_g0 = r0; + return; +} + +function _ZNK10btBoxShape9getVertexEiR9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = r0 >>> 1; + r2 = heap32[(fp)]; + r2 = r2 >> 2; + r1 = r1 & 1; + r3 = r0 >>> 2; + r0 = r0 & 1; + r4 = 0; + f0 = 1; + f1 = 0; + r3 = r3 & 1; + r5 = r1 ^ 1; + f0 = r0 == r4 ? f0 : f1; + f1 = heapFloat[(r2+7)]; + f2 = r0; //fitos r0, f2 + r0 = heap32[(fp+2)]; + r4 = r3 ^ 1; + f3 = r5; //fitos r5, f3 + f4 = heapFloat[(r2+8)]; + f5 = r1; //fitos r1, f5 + f6 = heapFloat[(r2+9)]; + f0 = f1*f0; + f1 = f1*f2; + f2 = r4; //fitos r4, f2 + f7 = r3; //fitos r3, f7 + r0 = r0 >> 2; + f3 = f4*f3; + f4 = f4*f5; + f0 = f0-f1; + f1 = f6*f2; + f2 = f6*f7; + f3 = f3-f4; + heapFloat[(r0)] = f0; + f0 = f1-f2; + heapFloat[(r0+1)] = f3; + heapFloat[(r0+2)] = f0; + heap32[(r0+3)] = 0; + return; +} + +function _ZNK10btBoxShape8isInsideERK9btVector3f(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var f0; + var f1; + var f2; + var f3; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r1 = r1 >> 2; + r0 = r0 >> 2; + f0 = heapFloat[(r0)]; + f1 = heapFloat[(fp+2)]; + f2 = heapFloat[(r1+7)]; + f3 = f2+f1; +if(!(f0 >f3)) //_LBB383_6 +{ + f2 = -f2; + f2 = f2-f1; +if(!(f0 f3)) //_LBB383_6 +{ + f0 = -f0; + f0 = f0-f1; +if(!(f2 f3)) //_LBB383_6 +{ + f0 = -f0; + f0 = f0-f1; + r0 = f2 >= f0; + r0 = r0 & 1; + r_g0 = r0; + return; +} +} +} +} +} + r0 = 0; + r_g0 = r0; + return; +} + +function _ZNK10btBoxShape7getNameEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = _2E_str173; + r_g0 = r0; + return; +} + +function _ZNK10btBoxShape36getNumPreferredPenetrationDirectionsEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 6; + r_g0 = r0; + return; +} + +function _ZNK10btBoxShape21calculateLocalInertiaEfR9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; + var f3; + var f4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + f0 = heapFloat[(r1+7)]; + f1 = heapFloat[(r1+8)]; + f2 = heapFloat[(r1+9)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f3 = f_g0; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+11)]; + heap32[(g0)] = r0; + f1 = f1+f_g0; + f2 = f2+f3; + __FUNCTION_TABLE__[(r1)>>2](i7); + f0 = f0+f_g0; + f1 = f1+f1; + f2 = f2+f2; + f0 = f0+f0; + f3 = heapFloat[(fp+1)]; + f4 = 12; + f1 = f1*f1; + f2 = f2*f2; + f0 = f0*f0; + r0 = heap32[(fp+2)]; + f3 = f3/f4; + f4 = f1+f2; + f2 = f0+f2; + r0 = r0 >> 2; + f4 = f3*f4; + f0 = f0+f1; + f1 = f3*f2; + heapFloat[(r0)] = f4; + f0 = f3*f0; + heapFloat[(r0+1)] = f1; + heapFloat[(r0+2)] = f0; + heap32[(r0+3)] = 0; + return; +} + +function _ZNK10btBoxShape16getPlaneEquationER9btVector4i(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+2)]; + r2 = heap32[(fp+1)]; + f0 = heapFloat[(r0+8)]; +_1: do { + if(r1 >2) //_LBB387_4 +{ + if(r1 ==3) //_LBB387_13 +{ + r2 = r2 >> 2; + heap32[(r2)] = 0; + heap32[(r2+1)] = -1082130432; +__label__ = 11; +break _1; +} +else{ + f0 = heapFloat[(r0+9)]; + if(r1 ==4) //_LBB387_14 +{ + r2 = r2 >> 2; + heap32[(r2)] = 0; + heap32[(r2+1)] = 0; + f0 = -f0; + heap32[(r2+2)] = 1065353216; + heapFloat[(r2+3)] = f0; + return; +} +else{ + if(r1 ==5) //_LBB387_15 +{ + r0 = r2 >> 2; + heap32[(r0)] = 0; + heap32[(r0+1)] = 0; + f0 = -f0; + heap32[(r0+2)] = -1082130432; + heapFloat[(r0+3)] = f0; + return; +} +else{ +__label__ = 16; +break _1; +} +} +} +} +else{ + f1 = heapFloat[(r0+7)]; + if(r1 ==0) //_LBB387_7 +{ + r2 = r2 >> 2; + heap32[(r2)] = 1065353216; +} +else{ + if(r1 ==1) //_LBB387_9 +{ + r2 = r2 >> 2; + heap32[(r2)] = -1082130432; +} +else{ + if(r1 ==2) //_LBB387_10 +{ + r2 = r2 >> 2; + heap32[(r2)] = 0; + heap32[(r2+1)] = 1065353216; +__label__ = 11; +break _1; +} +else{ +__label__ = 16; +break _1; +} +} +} + heap32[(r2+1)] = 0; + f0 = -f1; +__label__ = 12; +} +} while(0); +switch(__label__ ){//multiple entries +case 11: + f0 = -f0; +break; +case 16: + r0 = _2E_str10; + r1 = _2E_str2175; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 182; + _assert(i7); +break; +} + heap32[(r2+2)] = 0; + heapFloat[(r2+3)] = f0; + return; +} + +function _ZNK10btBoxShape7getEdgeEiR9btVector3S1_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+3)]; +_1: do { + if(r0 >5) //_LBB388_8 +{ + if(r0 >8) //_LBB388_12 +{ + if(r0 ==9) //_LBB388_24 +{ + r0 = 4; + r4 = 6; +__label__ = 28; +break _1; +} +else{ + if(r0 ==10) //_LBB388_25 +{ + r0 = 5; + r4 = 7; +__label__ = 28; +break _1; +} +else{ + if(r0 ==11) //_LBB388_26 +{ + r0 = 6; + r4 = 7; +__label__ = 28; +break _1; +} +else{ +__label__ = 27; +break _1; +} +} +} +} +else{ + if(r0 ==6) //_LBB388_21 +{ + r0 = 2; + r4 = 6; +__label__ = 28; +break _1; +} +else{ + if(r0 ==7) //_LBB388_22 +{ + r0 = 3; + r4 = 7; +__label__ = 28; +break _1; +} +else{ + if(r0 ==8) //_LBB388_23 +{ + r0 = 4; + r4 = 5; +__label__ = 28; +break _1; +} +else{ +__label__ = 27; +break _1; +} +} +} +} +} +else{ + if(r0 >2) //_LBB388_5 +{ + if(r0 ==3) //_LBB388_18 +{ + r0 = 2; + r4 = 3; +__label__ = 28; +break _1; +} +else{ + if(r0 ==4) //_LBB388_19 +{ + r0 = 0; + r4 = 4; +__label__ = 28; +break _1; +} +else{ + if(r0 ==5) //_LBB388_20 +{ + r0 = 1; + r4 = 5; +__label__ = 28; +break _1; +} +else{ +__label__ = 27; +break _1; +} +} +} +} +else{ + if(r0 ==0) //_LBB388_15 +{ + r0 = 0; + r4 = 1; +__label__ = 28; +break _1; +} +else{ + if(r0 ==1) //_LBB388_16 +{ + r0 = 0; + r4 = 2; +__label__ = 28; +} +else{ + if(r0 ==2) //_LBB388_17 +{ + r0 = 1; + r4 = 3; +__label__ = 28; +} +else{ +__label__ = 27; +} +} +} +} +} +} while(0); +switch(__label__ ){//multiple entries +case 28: + r5 = r1 >> 2; + r6 = heap32[(r5)]; + r6 = r6 >> 2; + r6 = heap32[(r6+24)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r2; + __FUNCTION_TABLE__[(r6)>>2](i7); + r0 = heap32[(r5)]; + r0 = r0 >> 2; + r0 = heap32[(r0+24)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r3; + __FUNCTION_TABLE__[(r0)>>2](i7); + return; +break; +case 27: + r0 = _2E_str10; + r1 = _2E_str2175; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 246; + _assert(i7); +break; +} +} + +function _ZNK10btBoxShape32getPreferredPenetrationDirectionEiR9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp+2)]; +_1: do { + if(r0 >2) //_LBB389_4 +{ + if(r0 ==3) //_LBB389_12 +{ + r1 = r1 >> 2; + heap32[(r1)] = 0; + heap32[(r1+1)] = -1082130432; +__label__ = 9; +break _1; +} +else{ + if(r0 ==4) //_LBB389_13 +{ + r1 = r1 >> 2; + heap32[(r1)] = 0; + heap32[(r1+1)] = 0; + heap32[(r1+2)] = 1065353216; + heap32[(r1+3)] = 0; + return; +} +else{ + if(r0 ==5) //_LBB389_14 +{ + r0 = r1 >> 2; + heap32[(r0)] = 0; + heap32[(r0+1)] = 0; + heap32[(r0+2)] = -1082130432; + heap32[(r0+3)] = 0; + return; +} +else{ +__label__ = 15; +break _1; +} +} +} +} +else{ + if(r0 ==0) //_LBB389_7 +{ + r1 = r1 >> 2; + heap32[(r1)] = 1065353216; +} +else{ + if(r0 ==1) //_LBB389_10 +{ + r1 = r1 >> 2; + heap32[(r1)] = -1082130432; +} +else{ + if(r0 ==2) //_LBB389_11 +{ + r1 = r1 >> 2; + heap32[(r1)] = 0; + heap32[(r1+1)] = 1065353216; +__label__ = 9; +break _1; +} +else{ +__label__ = 15; +break _1; +} +} +} + heap32[(r1+1)] = 0; +__label__ = 9; +} +} while(0); +switch(__label__ ){//multiple entries +case 9: + heap32[(r1+2)] = 0; + heap32[(r1+3)] = 0; + return; +break; +case 15: + r0 = _2E_str10; + r1 = _2E_str2175; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 309; + _assert(i7); +break; +} +} + +function _ZN10btBoxShape15setLocalScalingERK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f0 = f_g0; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f1 = f_g0; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f2 = f_g0; + r0 = heap32[(fp+1)]; + f3 = heapFloat[(r1+9)]; + f4 = heapFloat[(r1+8)]; + f5 = heapFloat[(r1+7)]; + r0 = r0 >> 2; + f3 = f3+f0; + f6 = heapFloat[(r1+5)]; + f4 = f4+f1; + f7 = heapFloat[(r1+4)]; + f5 = f5+f2; + f8 = heapFloat[(r1+3)]; + f9 = heapFloat[(r0+2)]; + f3 = f3/f6; + f4 = f4/f7; + f5 = f5/f8; + f6 = 0; + if(f9 >2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV13btConvexShape; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; +if(!(r0 ==0)) //_LBB391_2 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + heap32[(r0)] = r1; + r0 = heap32[(r2+-1)]; + heap32[(g0)] = r0; + free(i7); +} + return; +} + +function _ZN10btBoxShapeD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV13btConvexShape; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZNK14btConcaveShape9getMarginEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var f0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + f0 = heapFloat[(r0+3)]; + f_g0 = f0; + return; +} + +function _ZN14btConcaveShape9setMarginEf(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + heap32[(r0+3)] = heap32[(fp+1)]; + return; +} + +function _ZNK22btBvhTriangleMeshShape7getNameEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = _2E_str181; + r_g0 = r0; + return; +} + +function _ZNK22btBvhTriangleMeshShape28calculateSerializeBufferSizeEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 60; + r_g0 = r0; + return; +} + +function _ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallback11processNodeEii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + -120;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+1)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + r3 = heap32[(fp+1)]; + r4 = sp + -52; + r5 = sp + -56; + r6 = sp + -60; + r7 = sp + -64; + r8 = sp + -68; + r9 = sp + -72; + r10 = sp + -76; + r11 = sp + -80; + heap32[(g0)] = r1; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r6; + heap32[(g0+4)] = r7; + heap32[(g0+5)] = r8; + heap32[(g0+6)] = r9; + heap32[(g0+7)] = r10; + heap32[(g0+8)] = r11; + heap32[(g0+9)] = r3; + __FUNCTION_TABLE__[(r2)>>2](i7); + r1 = heap32[(fp+-20)]; + r2 = (r1 + -2)|0; + if(uint(r2) > 2; + r8 = heap32[(r8+-1)]; +} +else{ + r8 = (r4 - r5)|0; + r8 = heapU16[(r8+-2)>>1]; +} + r9 = heap32[(fp+-16)]; + r10 = heap32[(fp+-13)]; + r8 = (r9 * r8)|0; + r9 = heap32[(fp+-15)]; + if(r9 !=0) //_LBB399_8 +{ + r9 = (r10 + r8)|0; + r11 = r6 >> 2; + f0 = llvm_readDouble((r9+16)); + f1 = llvm_readDouble((r9+8)); + f2 = llvm_readDouble((r10+r8)); + f0 = f0; //fdtos f0, f0 + f3 = heapFloat[(r11+3)]; + f1 = f1; //fdtos f1, f1 + f4 = heapFloat[(r11+2)]; + f2 = f2; //fdtos f2, f2 + f5 = heapFloat[(r11+1)]; + f0 = f0*f3; + f1 = f1*f4; + f2 = f2*f5; +} +else{ + r8 = (r10 + r8)|0; + r8 = r8 >> 2; + r10 = r6 >> 2; + f0 = heapFloat[(r8+2)]; + f1 = heapFloat[(r10+3)]; + f2 = heapFloat[(r8+1)]; + f3 = heapFloat[(r10+2)]; + f4 = heapFloat[(r8)]; + f5 = heapFloat[(r10+1)]; + f0 = f0*f1; + f1 = f2*f3; + f2 = f4*f5; +} + r8 = sp + -48; + r9 = r7 << 2; + r10 = r7 << 2; + r9 = (r8 + r9)|0; + r11 = r7 << 2; + r10 = (r8 + r10)|0; + r9 = r9 >> 2; + r7 = r7 << 2; + r11 = (r8 + r11)|0; + r10 = r10 >> 2; + heapFloat[(r9+-4)] = f2; + r7 = (r8 + r7)|0; + r9 = r11 >> 2; + heapFloat[(r10+-3)] = f1; + r5 = (r5 + 2)|0; + r7 = r7 >> 2; + heapFloat[(r9+-2)] = f0; + heap32[(r7+-1)] = 0; +if(!(r5 !=0)) //_LBB399_3 +{ +break _3; +} +} + r1 = heap32[(r0+2)]; + r4 = r1 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+2)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = r2; + __FUNCTION_TABLE__[(r4)>>2](i7); + r0 = heap32[(r0+1)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+6)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} +else{ + r0 = _2E_str6187; + r1 = _2E_str7188; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 130; + _assert(i7); +} +} + +function _ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallback11processNodeEii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + -120;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+1)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + r3 = heap32[(fp+1)]; + r4 = sp + -52; + r5 = sp + -56; + r6 = sp + -60; + r7 = sp + -64; + r8 = sp + -68; + r9 = sp + -72; + r10 = sp + -76; + r11 = sp + -80; + heap32[(g0)] = r1; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r6; + heap32[(g0+4)] = r7; + heap32[(g0+5)] = r8; + heap32[(g0+6)] = r9; + heap32[(g0+7)] = r10; + heap32[(g0+8)] = r11; + heap32[(g0+9)] = r3; + __FUNCTION_TABLE__[(r2)>>2](i7); + r1 = heap32[(fp+-20)]; + r2 = (r1 + -2)|0; + if(uint(r2) > 2; + r8 = heap32[(r8+-1)]; +} +else{ + r8 = (r4 - r5)|0; + r8 = heapU16[(r8+-2)>>1]; +} + r9 = heap32[(fp+-16)]; + r10 = heap32[(fp+-13)]; + r8 = (r9 * r8)|0; + r9 = heap32[(fp+-15)]; + if(r9 !=0) //_LBB402_8 +{ + r9 = (r10 + r8)|0; + r11 = r6 >> 2; + f0 = llvm_readDouble((r9+16)); + f1 = llvm_readDouble((r9+8)); + f2 = llvm_readDouble((r10+r8)); + f0 = f0; //fdtos f0, f0 + f3 = heapFloat[(r11+3)]; + f1 = f1; //fdtos f1, f1 + f4 = heapFloat[(r11+2)]; + f2 = f2; //fdtos f2, f2 + f5 = heapFloat[(r11+1)]; + f0 = f0*f3; + f1 = f1*f4; + f2 = f2*f5; +} +else{ + r8 = (r10 + r8)|0; + r8 = r8 >> 2; + r10 = r6 >> 2; + f0 = heapFloat[(r8+2)]; + f1 = heapFloat[(r10+3)]; + f2 = heapFloat[(r8+1)]; + f3 = heapFloat[(r10+2)]; + f4 = heapFloat[(r8)]; + f5 = heapFloat[(r10+1)]; + f0 = f0*f1; + f1 = f2*f3; + f2 = f4*f5; +} + r8 = sp + -48; + r9 = r7 << 2; + r10 = r7 << 2; + r9 = (r8 + r9)|0; + r11 = r7 << 2; + r10 = (r8 + r10)|0; + r9 = r9 >> 2; + r7 = r7 << 2; + r11 = (r8 + r11)|0; + r10 = r10 >> 2; + heapFloat[(r9+-4)] = f2; + r7 = (r8 + r7)|0; + r9 = r11 >> 2; + heapFloat[(r10+-3)] = f1; + r5 = (r5 + 2)|0; + r7 = r7 >> 2; + heapFloat[(r9+-2)] = f0; + heap32[(r7+-1)] = 0; +if(!(r5 !=0)) //_LBB402_3 +{ +break _3; +} +} + r1 = heap32[(r0+2)]; + r4 = r1 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+2)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = r2; + __FUNCTION_TABLE__[(r4)>>2](i7); + r0 = heap32[(r0+1)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+6)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} +else{ + r0 = _2E_str6187; + r1 = _2E_str7188; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 199; + _assert(i7); +} +} + +function _ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallback11processNodeEii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + -72;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+1)]; + r3 = r2 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+4)]; + r4 = heap32[(fp+1)]; + r5 = sp + -4; + r6 = sp + -8; + r7 = sp + -12; + r8 = sp + -16; + r9 = sp + -20; + r10 = sp + -24; + r11 = sp + -28; + r12 = sp + -32; + heap32[(g0)] = r2; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r6; + heap32[(g0+3)] = r7; + heap32[(g0+4)] = r8; + heap32[(g0+5)] = r9; + heap32[(g0+6)] = r10; + heap32[(g0+7)] = r11; + heap32[(g0+8)] = r12; + heap32[(g0+9)] = r4; + __FUNCTION_TABLE__[(r3)>>2](i7); + r2 = heap32[(fp+-8)]; + r3 = (r2 + -2)|0; + if(uint(r3) > 2; + r9 = heap32[(r9)]; +} +else{ + r9 = (r5 - r8)|0; + r9 = heapU16[(r9+-4)>>1]; +} + r11 = heap32[(fp+-4)]; + r12 = heap32[(fp+-1)]; + r9 = (r11 * r9)|0; + r11 = heap32[(fp+-3)]; + if(r11 !=0) //_LBB405_8 +{ + r11 = (r12 + r9)|0; + r13 = r6 >> 2; + f0 = llvm_readDouble((r11+16)); + f1 = llvm_readDouble((r11+8)); + f2 = llvm_readDouble((r12+r9)); + f0 = f0; //fdtos f0, f0 + f3 = heapFloat[(r13+3)]; + f1 = f1; //fdtos f1, f1 + f4 = heapFloat[(r13+2)]; + f2 = f2; //fdtos f2, f2 + f5 = heapFloat[(r13+1)]; + f0 = f0*f3; + f1 = f1*f4; + f2 = f2*f5; +} +else{ + r9 = (r12 + r9)|0; + r9 = r9 >> 2; + r12 = r6 >> 2; + f0 = heapFloat[(r9+2)]; + f1 = heapFloat[(r12+3)]; + f2 = heapFloat[(r9+1)]; + f3 = heapFloat[(r12+2)]; + f4 = heapFloat[(r9)]; + f5 = heapFloat[(r12+1)]; + f0 = f0*f1; + f1 = f2*f3; + f2 = f4*f5; +} + r9 = r10 << 2; + r11 = r10 << 2; + r9 = (r0 + r9)|0; + r12 = r10 << 2; + r11 = (r0 + r11)|0; + r9 = r9 >> 2; + r10 = r10 << 2; + r12 = (r0 + r12)|0; + r11 = r11 >> 2; + heapFloat[(r9+11)] = f2; + r9 = (r0 + r10)|0; + r10 = r12 >> 2; + heapFloat[(r11+12)] = f1; + r8 = (r8 + 2)|0; + r9 = r9 >> 2; + heapFloat[(r10+13)] = f0; + heap32[(r9+14)] = 0; +if(!(r8 !=6)) //_LBB405_3 +{ +break _3; +} +} + r2 = heap32[(r1+2)]; + r5 = r2 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+2)]; + r0 = (r0 + 12)|0; + heap32[(g0)] = r2; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r3; + __FUNCTION_TABLE__[(r5)>>2](i7); + r0 = heap32[(r1+1)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+6)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} +else{ + r0 = _2E_str6187; + r1 = _2E_str7188; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 280; + _assert(i7); +} +} + +function _ZNK22btBvhTriangleMeshShape18serializeSingleBvhEP12btSerializer(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+13)]; +if(!(r1 ==0)) //_LBB406_2 +{ + r2 = heap32[(fp+1)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r3 = r2 >> 2; + r4 = heap32[(r3)]; + r4 = r4 >> 2; + r4 = heap32[(r4+4)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r_g0; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r4)>>2](i7); + r1 = r_g0; + r4 = heap32[(r0+13)]; + r5 = r4 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r6 = r1 >> 2; + r5 = heap32[(r5+4)]; + r6 = heap32[(r6+2)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r2; + __FUNCTION_TABLE__[(r5)>>2](i7); + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+5)]; + r0 = heap32[(r0+13)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r_g0; + heap32[(g0+3)] = 1213612625; + heap32[(g0+4)] = r0; + __FUNCTION_TABLE__[(r3)>>2](i7); +} + return; +} + +function _ZNK22btBvhTriangleMeshShape30serializeSingleTriangleInfoMapEP12btSerializer(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+14)]; +if(!(r1 ==0)) //_LBB407_2 +{ + r2 = heap32[(fp+1)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+2)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r3 = r2 >> 2; + r4 = heap32[(r3)]; + r4 = r4 >> 2; + r4 = heap32[(r4+4)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r_g0; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r4)>>2](i7); + r1 = r_g0; + r4 = heap32[(r0+14)]; + r5 = r4 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r6 = r1 >> 2; + r5 = heap32[(r5+3)]; + r6 = heap32[(r6+2)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r2; + __FUNCTION_TABLE__[(r5)>>2](i7); + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+5)]; + r0 = heap32[(r0+14)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r_g0; + heap32[(g0+3)] = 1346456916; + heap32[(g0+4)] = r0; + __FUNCTION_TABLE__[(r3)>>2](i7); +} + return; +} + +function _ZNK19btTriangleMeshShape37localGetSupportingVertexWithoutMarginERK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = _2E_str10; + r1 = _2E_str5186; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 43; + _assert(i7); +} + +function _ZNK22btBvhTriangleMeshShape9serializeEPvP12btSerializer(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+10)]; + r3 = heap32[(fp)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r_g0; + r4 = heap32[(r1)]; + r4 = r4 >> 2; + r4 = heap32[(r4+7)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + r5 = heap32[(fp+1)]; + __FUNCTION_TABLE__[(r4)>>2](i7); + r4 = r_g0; + r6 = r5 >> 2; + heap32[(r6)] = r4; +if(!(r4 ==0)) //_LBB409_2 +{ + r4 = heap32[(r1)]; + r4 = r4 >> 2; + r4 = heap32[(r4+12)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + __FUNCTION_TABLE__[(r4)>>2](i7); +} + r2 = r3 >> 2; + r3 = heap32[(r2+1)]; + heap32[(r6+1)] = r3; + r3 = heap32[(r2+12)]; + r4 = r3 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+14)]; + r5 = (r5 + 12)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r0; + __FUNCTION_TABLE__[(r4)>>2](i7); + heap32[(r6+13)] = heap32[(r2+3)]; + r3 = heap32[(r2+13)]; + if(r3 ==0) //_LBB409_4 +{ +__label__ = 4; +} +else{ + r3 = heap32[(r1)]; + r3 = r3 >> 2; + r3 = heap32[(r3+13)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r3)>>2](i7); + r3 = r_g0 & 1; + if(r3 ==0) //_LBB409_5 +{ + r3 = heap32[(r1)]; + r3 = r3 >> 2; + r3 = heap32[(r3+6)]; + r4 = heap32[(r2+13)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + __FUNCTION_TABLE__[(r3)>>2](i7); + r3 = r_g0; + if(r3 ==0) //_LBB409_7 +{ + r3 = heap32[(r1)]; + r3 = r3 >> 2; + r3 = heap32[(r3+7)]; + r4 = heap32[(r2+13)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + __FUNCTION_TABLE__[(r3)>>2](i7); + heap32[(r6+10)] = r_g0; + heap32[(r6+11)] = 0; + r3 = heap32[(r2+13)]; + r4 = r3 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+3)]; + heap32[(g0)] = r3; + __FUNCTION_TABLE__[(r4)>>2](i7); + r4 = heap32[(r1)]; + r4 = r4 >> 2; + r4 = heap32[(r4+4)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r_g0; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r4)>>2](i7); + r3 = r_g0; + r4 = heap32[(r2+13)]; + r5 = r4 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r7 = r3 >> 2; + r5 = heap32[(r5+4)]; + r7 = heap32[(r7+2)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r0; + __FUNCTION_TABLE__[(r5)>>2](i7); + r5 = heap32[(r1)]; + r5 = r5 >> 2; + r5 = heap32[(r5+5)]; + r7 = heap32[(r2+13)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r_g0; + heap32[(g0+3)] = 1213612625; + heap32[(g0+4)] = r7; + __FUNCTION_TABLE__[(r5)>>2](i7); +__label__ = 8; +} +else{ + heap32[(r6+10)] = r3; + heap32[(r6+11)] = 0; +__label__ = 8; +} +} +else{ +__label__ = 4; +} +} +if (__label__ == 4){ + heap32[(r6+10)] = 0; + heap32[(r6+11)] = 0; +} + r3 = heap32[(r2+14)]; + if(r3 ==0) //_LBB409_10 +{ +__label__ = 10; +} +else{ + r3 = heap32[(r1)]; + r3 = r3 >> 2; + r3 = heap32[(r3+13)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r3)>>2](i7); + r3 = r_g0 & 2; + if(r3 ==0) //_LBB409_12 +{ + r3 = heap32[(r1)]; + r3 = r3 >> 2; + r3 = heap32[(r3+6)]; + r4 = heap32[(r2+14)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + __FUNCTION_TABLE__[(r3)>>2](i7); + r3 = r_g0; + if(r3 ==0) //_LBB409_14 +{ + r3 = heap32[(r1)]; + r3 = r3 >> 2; + r3 = heap32[(r3+7)]; + r4 = heap32[(r2+14)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + __FUNCTION_TABLE__[(r3)>>2](i7); + heap32[(r6+12)] = r_g0; + r3 = heap32[(r2+14)]; + r4 = r3 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+2)]; + heap32[(g0)] = r3; + __FUNCTION_TABLE__[(r4)>>2](i7); + r4 = heap32[(r1)]; + r4 = r4 >> 2; + r4 = heap32[(r4+4)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r_g0; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r4)>>2](i7); + r3 = r_g0; + r4 = heap32[(r2+14)]; + r5 = r4 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r6 = r3 >> 2; + r5 = heap32[(r5+3)]; + r6 = heap32[(r6+2)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r0; + __FUNCTION_TABLE__[(r5)>>2](i7); + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + r2 = heap32[(r2+14)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r_g0; + heap32[(g0+3)] = 1346456916; + heap32[(g0+4)] = r2; + __FUNCTION_TABLE__[(r1)>>2](i7); +__label__ = 11; +} +else{ + heap32[(r6+12)] = r3; +__label__ = 11; +} +} +else{ +__label__ = 10; +} +} +if (__label__ == 10){ + heap32[(r6+12)] = 0; +} + r0 = _2E_str8189; + r_g0 = r0; + return; +} + +function _ZN22btBvhTriangleMeshShape17buildOptimizedBvhEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; +var __label__ = 0; + i7 = sp + -72;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heapU8[r0+61]; +if(!(r1 ==0)) //_LBB410_3 +{ + r1 = r0 >> 2; + r2 = heap32[(r1+13)]; + r3 = r2 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r1+13)]; +if(!(r1 ==0)) //_LBB410_3 +{ + r2 = gNumAlignedFree; + r2 = r2 >> 2; + r3 = heap32[(r2)]; + r3 = (r3 + 1)|0; + r1 = r1 >> 2; + heap32[(r2)] = r3; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} +} + r1 = gNumAlignedAllocs; + r1 = r1 >> 2; + r2 = heap32[(r1)]; + r2 = (r2 + 1)|0; + heap32[(r1)] = r2; + heap32[(g0)] = 191; + malloc(i7); + r2 = r_g0; + if(r2 !=0) //_LBB410_5 +{ + r3 = 0; + r4 = (r2 + 4)|0; + r3 = (r3 - r4)|0; + r3 = r3 & 15; + r3 = (r2 + r3)|0; + r4 = (r3 + 4)|0; + r3 = r3 >> 2; + heap32[(r3)] = r2; + r2 = r4; +} + r3 = r2 >> 2; + r4 = 1; + heap32[(r3+13)] = 277; + heap8[r2+80] = r4; + heap32[(r3+19)] = 0; + heap32[(r3+17)] = 0; + heap32[(r3+18)] = 0; + heap8[r2+100] = r4; + heap32[(r3+24)] = 0; + heap32[(r3+22)] = 0; + heap32[(r3+23)] = 0; + heap8[r2+120] = r4; + heap32[(r3+29)] = 0; + heap32[(r3+27)] = 0; + heap32[(r3+28)] = 0; + heap8[r2+140] = r4; + heap32[(r3+34)] = 0; + heap32[(r3+32)] = 0; + heap32[(r3+33)] = 0; + heap32[(r3+36)] = 0; + heap8[r2+164] = r4; + heap32[(r3+40)] = 0; + heap32[(r3+38)] = 0; + heap32[(r3+39)] = 0; + heap32[(r3+42)] = 0; + heap32[(r3+1)] = -8388609; + heap32[(r3+2)] = -8388609; + heap32[(r3+3)] = -8388609; + heap32[(r3+4)] = 0; + heap32[(r3+5)] = 2139095039; + heap32[(r3+6)] = 2139095039; + r5 = _ZTV14btOptimizedBvh; + heap32[(r3+7)] = 2139095039; + r5 = (r5 + 8)|0; + heap32[(r3+8)] = 0; + r6 = r0 >> 2; + heap32[(r3)] = r5; + heap32[(r6+13)] = r2; + r5 = heap32[(r6+12)]; + r7 = heapU8[r0+60]; + heap8[r2+60] = r7; + if(r7 ==0) //_LBB410_11 +{ + r6 = _ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback; + r7 = sp + -24; + r6 = (r6 + 8)|0; + r8 = r7 >> 2; + r9 = (r2 + 64)|0; + heap32[(fp+-6)] = r6; + r6 = sp + -40; + heap32[(r8+1)] = r9; + r8 = r6 >> 2; + heap32[(fp+-10)] = -581039253; + heap32[(r8+1)] = -581039253; + heap32[(r8+2)] = -581039253; + r9 = sp + -56; + heap32[(r8+3)] = 0; + r8 = r9 >> 2; + heap32[(fp+-14)] = 1566444395; + heap32[(r8+1)] = 1566444395; + heap32[(r8+2)] = 1566444395; + r10 = r5 >> 2; + heap32[(r8+3)] = 0; + r8 = heap32[(r10)]; + r8 = r8 >> 2; + r8 = heap32[(r8+2)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r6; + heap32[(g0+3)] = r9; + __FUNCTION_TABLE__[(r8)>>2](i7); + r5 = heap32[(r3+17)]; + r6 = heap32[(r3+22)]; + r7 = r5 << 1; +if(!(r6 >=r7)) //_LBB410_26 +{ + r8 = heap32[(r3+23)]; +if(!(r8 >=r7)) //_LBB410_26 +{ + if(r7 !=0) //_LBB410_15 +{ + r8 = heap32[(r1)]; + r8 = (r8 + 1)|0; + r9 = r5 << 7; + heap32[(r1)] = r8; + r8 = r9 | 19; + heap32[(g0)] = r8; + malloc(i7); + r8 = r_g0; + if(r8 !=0) //_LBB410_17 +{ + r9 = 0; + r10 = (r8 + 4)|0; + r9 = (r9 - r10)|0; + r9 = r9 & 15; + r9 = (r8 + r9)|0; + r10 = (r9 + 4)|0; + r9 = r9 >> 2; + heap32[(r9)] = r8; + r8 = r10; +} +} +else{ + r8 = 0; +} +if(!(r6 <1)) //_LBB410_21 +{ + r9 = 0; +_20: while(true){ + r10 = heap32[(r3+24)]; + r11 = (r8 + r9)|0; + r10 = (r10 + r9)|0; + heap32[(g0)] = r11; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = 64; + r6 = (r6 + -1)|0; + r9 = (r9 + 64)|0; + memcpy(i7); +if(!(r6 !=0)) //_LBB410_20 +{ +break _20; +} +} +} + r6 = heap32[(r3+24)]; +if(!(r6 ==0)) //_LBB410_25 +{ + r9 = heapU8[r2+100]; +if(!(r9 ==0)) //_LBB410_24 +{ + r9 = gNumAlignedFree; + r9 = r9 >> 2; + r10 = heap32[(r9)]; + r10 = (r10 + 1)|0; + r6 = r6 >> 2; + heap32[(r9)] = r10; + r6 = heap32[(r6+-1)]; + heap32[(g0)] = r6; + free(i7); +} + heap32[(r3+24)] = 0; +} + r6 = 1; + heap8[r2+100] = r6; + heap32[(r3+24)] = r8; + heap32[(r3+23)] = r7; +} +} + r6 = _ZTV31btInternalTriangleIndexCallback; + r6 = (r6 + 8)|0; + heap32[(r3+22)] = r7; + heap32[(fp+-6)] = r6; +} +else{ + r7 = (r2 + 4)|0; + r8 = (r2 + 20)|0; + f0 = -1; + f1 = heapFloat[(r6+6)]; + f2 = heapFloat[(r6+5)]; + f3 = heapFloat[(r6+4)]; + f3 = f3+f0; + f2 = f2+f0; + heapFloat[(r3+1)] = f3; + f0 = f1+f0; + heapFloat[(r3+2)] = f2; + heapFloat[(r3+3)] = f0; + heap32[(r3+4)] = 0; + f1 = 1; + f4 = heapFloat[(r6+10)]; + f5 = heapFloat[(r6+9)]; + f6 = heapFloat[(r6+8)]; + f6 = f6+f1; + f5 = f5+f1; + heapFloat[(r3+5)] = f6; + f1 = f4+f1; + heapFloat[(r3+6)] = f5; + heapFloat[(r3+7)] = f1; + f4 = 65533; + f3 = f6-f3; + f2 = f5-f2; + f3 = f4/f3; + heap32[(r3+8)] = 0; + f0 = f1-f0; + f1 = f4/f2; + heapFloat[(r3+9)] = f3; + f0 = f4/f0; + heapFloat[(r3+10)] = f1; + heapFloat[(r3+11)] = f0; + r6 = _ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback; + heap32[(r3+12)] = 0; + r9 = sp + -16; + r6 = (r6 + 8)|0; + heap8[r2+60] = r4; + r10 = r9 >> 2; + r11 = (r2 + 104)|0; + heap32[(fp+-4)] = r6; + heap32[(r10+1)] = r11; + r6 = r5 >> 2; + heap32[(r10+2)] = r2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+2)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r7; + heap32[(g0+3)] = r8; + __FUNCTION_TABLE__[(r6)>>2](i7); + r5 = heap32[(r3+27)]; + r6 = heap32[(r3+32)]; + r7 = r5 << 1; +_31: do { +if(!(r6 >=r7)) //_LBB410_10 +{ + r8 = (r2 + 124)|0; + heap32[(g0)] = r8; + heap32[(g0+1)] = r7; + r8 = (r7 - r6)|0; + r6 = r6 << 4; + _ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE7reserveEi(i7); +_33: while(true){ + r9 = heap32[(r3+34)]; + r9 = (r9 + r6)|0; + r9 = r9 >> 2; + r8 = (r8 + -1)|0; + r6 = (r6 + 16)|0; + heap32[(r9)] = 0; + heap32[(r9+1)] = 0; + heap32[(r9+2)] = 0; + heap32[(r9+3)] = 0; +if(!(r8 !=0)) //_LBB410_9 +{ +break _31; +} +} +} +} while(0); + r6 = _ZTV31btInternalTriangleIndexCallback; + r6 = (r6 + 8)|0; + heap32[(r3+32)] = r7; + heap32[(fp+-4)] = r6; +} + heap32[(r3+14)] = 0; + heap32[(g0)] = r2; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = r5; + _ZN14btQuantizedBvh9buildTreeEii(i7); + r5 = heapU8[r2+60]; +if(!(r5 ==0)) //_LBB410_41 +{ + r5 = heap32[(r3+38)]; +if(!(r5 !=0)) //_LBB410_41 +{ + r6 = heap32[(r3+39)]; + if(r6 !=r5) //_LBB410_31 +{ +__label__ = 29; +} +else{ + if(r6 <1) //_LBB410_32 +{ + r6 = heap32[(r1)]; + r6 = (r6 + 1)|0; + heap32[(r1)] = r6; + heap32[(g0)] = 51; + malloc(i7); + r1 = r_g0; + if(r1 !=0) //_LBB410_34 +{ + r6 = 0; + r7 = (r1 + 4)|0; + r6 = (r6 - r7)|0; + r6 = r6 & 15; + r6 = (r1 + r6)|0; + r7 = (r6 + 4)|0; + r6 = r6 >> 2; + heap32[(r6)] = r1; + r1 = r7; +} + r6 = heap32[(r3+40)]; +if(!(r6 ==0)) //_LBB410_39 +{ + r7 = heapU8[r2+164]; +if(!(r7 ==0)) //_LBB410_38 +{ + r7 = gNumAlignedFree; + r7 = r7 >> 2; + r8 = heap32[(r7)]; + r8 = (r8 + 1)|0; + r6 = r6 >> 2; + heap32[(r7)] = r8; + r6 = heap32[(r6+-1)]; + heap32[(g0)] = r6; + free(i7); +} + heap32[(r3+40)] = 0; +} + r6 = 1; + heap8[r2+164] = r6; + heap32[(r3+40)] = r1; + heap32[(r3+39)] = 1; + r6 = heap32[(r3+38)]; + r6 = (r6 + 1)|0; +__label__ = 37; +} +else{ +__label__ = 29; +} +} +if (__label__ == 29){ + r1 = heap32[(r3+40)]; + r6 = r4; +} + heap32[(r3+38)] = r6; + r6 = heap32[(r3+34)]; + r7 = heapU16[(r6)>>1]; + r5 = r5 << 5; + heap16[(r1+r5)>>1] = r7; + r1 = (r1 + r5)|0; + r5 = heapU16[(r6+2)>>1]; + heap16[(r1+2)>>1] = r5; + r5 = heapU16[(r6+4)>>1]; + heap16[(r1+4)>>1] = r5; + r5 = heapU16[(r6+6)>>1]; + heap16[(r1+6)>>1] = r5; + r5 = heapU16[(r6+8)>>1]; + heap16[(r1+8)>>1] = r5; + r5 = heapU16[(r6+10)>>1]; + r6 = r1 >> 2; + heap16[(r1+10)>>1] = r5; + heap32[(r6+3)] = 0; + r1 = heap32[(r3+34)]; + r1 = r1 >> 2; + r1 = heap32[(r1+3)]; + r5 = 0; + r5 = (r5 - r1)|0; + r1 = r1 < 0 ? r5 : r4; + heap32[(r6+4)] = r1; +} +} + r1 = heap32[(r3+38)]; + heap32[(r3+42)] = r1; + r1 = heap32[(r3+29)]; +if(!(r1 ==0)) //_LBB410_45 +{ + r4 = heapU8[r2+120]; +if(!(r4 ==0)) //_LBB410_44 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r1 = r1 >> 2; + heap32[(r4)] = r5; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r3+29)] = 0; +} + r1 = 1; + heap8[r2+120] = r1; + heap32[(r3+29)] = 0; + heap32[(r3+27)] = 0; + heap32[(r3+28)] = 0; + r4 = heap32[(r3+19)]; +if(!(r4 ==0)) //_LBB410_49 +{ + r5 = heapU8[r2+80]; +if(!(r5 ==0)) //_LBB410_48 +{ + r5 = gNumAlignedFree; + r5 = r5 >> 2; + r6 = heap32[(r5)]; + r6 = (r6 + 1)|0; + r4 = r4 >> 2; + heap32[(r5)] = r6; + r4 = heap32[(r4+-1)]; + heap32[(g0)] = r4; + free(i7); +} + heap32[(r3+19)] = 0; +} + heap8[r2+80] = r1; + heap32[(r3+19)] = 0; + heap32[(r3+17)] = 0; + heap32[(r3+18)] = 0; + heap8[r0+61] = r1; + return; +} + +function _ZN22btBvhTriangleMeshShape15setLocalScalingERK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var f0; + var f1; + var f2; + var f3; + var f4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+7)]; + heap32[(g0)] = r0; + r3 = heap32[(fp+1)]; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r_g0 >> 2; + r3 = r3 >> 2; + f0 = heapFloat[(r3)]; + f1 = heapFloat[(r2)]; + f2 = heapFloat[(r2+1)]; + f3 = heapFloat[(r3+1)]; + f1 = f1-f0; + f2 = f2-f3; + f3 = heapFloat[(r2+2)]; + f4 = heapFloat[(r3+2)]; + f3 = f3-f4; + f1 = f1*f1; + f2 = f2*f2; + f1 = f1+f2; + f2 = f3*f3; + f1 = f1+f2; + f2 = 1.1920928955078125e-007; +if(!(f1 <=f2)) //_LBB411_2 +{ + r1 = heap32[(r1+12)]; + r1 = r1 >> 2; + heapFloat[(r1+1)] = f0; + heap32[(r1+2)] = heap32[(r3+1)]; + heap32[(r1+3)] = heap32[(r3+2)]; + heap32[(r1+4)] = heap32[(r3+3)]; + heap32[(g0)] = r0; + _ZN19btTriangleMeshShape15recalcLocalAabbEv(i7); + heap32[(g0)] = r0; + _ZN22btBvhTriangleMeshShape17buildOptimizedBvhEv(i7); +} + return; +} + +function _ZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -80;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = _ZTVZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback; + r2 = sp + -64; + r3 = heap32[(r0+12)]; + r1 = (r1 + 8)|0; + r4 = r2 >> 2; + heap32[(fp+-16)] = r1; + r1 = heap32[(fp+1)]; + heap32[(r4+1)] = r3; + heap32[(r4+2)] = r1; + r0 = heap32[(r0+13)]; + r1 = heap32[(fp+2)]; + r3 = heap32[(fp+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r1; + heap32[(g0+3)] = r3; + _ZNK14btQuantizedBvh26reportAabbOverlappingNodexEP21btNodeOverlapCallbackRK9btVector3S4_(i7); + return; +} + +function _ZN22btBvhTriangleMeshShapeD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV22btBvhTriangleMeshShape; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heapU8[r0+61]; + if(r1 ==0) //_LBB413_3 +{ +__label__ = 3; +} +else{ + r1 = heap32[(r2+13)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+13)]; + if(r1 ==0) //_LBB413_3 +{ +__label__ = 3; +} +else{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r3 = heap32[(r0)]; + r3 = (r3 + 1)|0; + r1 = r1 >> 2; + heap32[(r0)] = r3; + r0 = heap32[(r1+-1)]; + r1 = _ZTV14btConcaveShape; + heap32[(g0)] = r0; + r0 = (r1 + 8)|0; + free(i7); + heap32[(r2)] = r0; +__label__ = 4; +} +} +if (__label__ == 3){ + r1 = _ZTV14btConcaveShape; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + if(r0 ==0) //_LBB413_5 +{ +__label__ = 5; +} +else{ +__label__ = 4; +} +} +if (__label__ == 4){ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + heap32[(r0)] = r1; + r0 = heap32[(r2+-1)]; + heap32[(g0)] = r0; + free(i7); +} + return; +} + +function _ZN22btBvhTriangleMeshShapeD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV22btBvhTriangleMeshShape; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r0 = heapU8[r0+61]; +if(!(r0 ==0)) //_LBB414_3 +{ + r0 = heap32[(r2+13)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = heap32[(r2+13)]; +if(!(r0 ==0)) //_LBB414_3 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r3 = heap32[(r1)]; + r3 = (r3 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r3; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} +} + r0 = _ZTV14btConcaveShape; + r0 = (r0 + 8)|0; + heap32[(r2)] = r0; + return; +} + +function _ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN14btCapsuleShape9setMarginEf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f0 = f_g0; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f1 = f_g0; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f2 = f_g0; + f3 = heapFloat[(r1+9)]; + f4 = heapFloat[(r1+8)]; + f5 = heapFloat[(r1+7)]; + heap32[(r1+11)] = heap32[(fp+1)]; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f6 = f_g0; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f7 = f_g0; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + f2 = f5+f2; + __FUNCTION_TABLE__[(r2)>>2](i7); + f1 = f4+f1; + f2 = f2-f_g0; + f0 = f3+f0; + f1 = f1-f7; + heapFloat[(r1+7)] = f2; + f0 = f0-f6; + heapFloat[(r1+8)] = f1; + heapFloat[(r1+9)] = f0; + heap32[(r1+10)] = 0; + return; +} + +function _ZNK14btCapsuleShape7getNameEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = _2E_str194; + r_g0 = r0; + return; +} + +function _ZNK14btCapsuleShape7getAabbERK11btTransformR9btVector3S4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+13)]; + r3 = (r2 + 2)|0; + r3 = (r3 % 3)|0; + r4 = (r0 + 28)|0; + r3 = r3 << 2; + r3 = (r4 + r3)|0; + r3 = r3 >> 2; + f0 = heapFloat[(r3)]; + r3 = sp + -16; + r5 = r3 >> 2; + heapFloat[(fp+-4)] = f0; + r2 = r2 << 2; + heapFloat[(r5+1)] = f0; + r4 = (r4 + r2)|0; + heapFloat[(r5+2)] = f0; + r4 = r4 >> 2; + heap32[(r5+3)] = 0; + r2 = (r3 + r2)|0; + f1 = heapFloat[(r4)]; + r2 = r2 >> 2; + f0 = f0+f1; + heapFloat[(r2)] = f0; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f0 = f_g0; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f1 = f_g0; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + f3 = heapFloat[(fp+-4)]; + f2 = f3+f_g0; + heapFloat[(fp+-4)] = f2; + f3 = heapFloat[(r5+1)]; + f1 = f3+f1; + heapFloat[(r5+1)] = f1; + f3 = heapFloat[(r5+2)]; + r0 = heap32[(fp+1)]; + f0 = f3+f0; + r0 = r0 >> 2; + heapFloat[(r5+2)] = f0; + f3 = heapFloat[(r0+10)]; + r1 = heap32[(fp+2)]; + r2 = heap32[(fp+3)]; + f4 = 0; + if(f3 > 2; + f1 = f2+f1; + f0 = f3*f0; + f2 = f7-f4; + f0 = f1+f0; + f1 = f8-f5; + heapFloat[(r0)] = f2; + f2 = f9-f0; + heapFloat[(r0+1)] = f1; + heapFloat[(r0+2)] = f2; + r1 = r2 >> 2; + f1 = f7+f4; + heap32[(r0+3)] = 0; + f2 = f8+f5; + heapFloat[(r1)] = f1; + f0 = f9+f0; + heapFloat[(r1+1)] = f2; + heapFloat[(r1+2)] = f0; + heap32[(r1+3)] = 0; + return; +} + +function _ZNK14btCapsuleShape28calculateSerializeBufferSizeEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 60; + r_g0 = r0; + return; +} + +function _ZNK14btCapsuleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; +var __label__ = 0; + i7 = sp + -40;var g0 = i7>>2; // save stack + r0 = heap32[(fp+3)]; +if(!(r0 <1)) //_LBB420_9 +{ + r1 = heap32[(fp)]; + r2 = r1 >> 2; + r3 = heap32[(r2+13)]; + r4 = (r3 + 2)|0; + r4 = (r4 % 3)|0; + r4 = r4 << 2; + r4 = (r1 + r4)|0; + r4 = r4 >> 2; + r5 = heap32[(fp+1)]; + r6 = heap32[(fp+2)]; + f0 = heapFloat[(r4+7)]; + r0 = (r0 + -1)|0; + r4 = (r5 + 8)|0; + r5 = (r6 + 8)|0; +_3: while(true){ + r6 = sp + -16; + heap32[(fp+-4)] = 0; + r7 = r6 >> 2; + r3 = r3 << 2; + heap32[(r7+1)] = 0; + r6 = (r6 + r3)|0; + r3 = (r1 + r3)|0; + heap32[(r7+2)] = 0; + r6 = r6 >> 2; + r3 = r3 >> 2; + heap32[(r7+3)] = 0; + heap32[(r6)] = heap32[(r3+7)]; + r3 = heap32[(r2)]; + r3 = r3 >> 2; + r3 = heap32[(r3+11)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r3 = r4 >> 2; + f2 = heapFloat[(r3+-1)]; + f3 = heapFloat[(r2+4)]; + f4 = heapFloat[(r3+-2)]; + f5 = heapFloat[(r2+3)]; + f6 = heapFloat[(r3)]; + f7 = heapFloat[(r2+5)]; + f3 = f2*f3; + f5 = f4*f5; + f7 = f6*f7; + f8 = heapFloat[(r7+1)]; + f3 = f3*f0; + f9 = heapFloat[(fp+-4)]; + f5 = f5*f0; + f10 = heapFloat[(r7+2)]; + f7 = f7*f0; + f3 = f8+f3; + f8 = f2*f_g0; + f5 = f9+f5; + f9 = f4*f_g0; + f3 = f3-f8; + f5 = f5-f9; + f7 = f10+f7; + f1 = f6*f_g0; + f1 = f7-f1; + f4 = f4*f5; + f2 = f2*f3; + f2 = f4+f2; + f4 = f6*f1; + f2 = f2+f4; + f4 = -999999984306749440; + if(f2 >f4) //_LBB420_4 +{ + r6 = r5 >> 2; + heapFloat[(r6+-2)] = f5; + heapFloat[(r6+-1)] = f3; + heapFloat[(r6)] = f1; + heap32[(r6+1)] = 0; + f4 = f2; +} + r6 = sp + -32; + heap32[(fp+-8)] = 0; + r7 = r6 >> 2; + heap32[(r7+1)] = 0; + heap32[(r7+2)] = 0; + heap32[(r7+3)] = 0; + r8 = heap32[(r2+13)]; + r8 = r8 << 2; + r9 = (r1 + r8)|0; + r9 = r9 >> 2; + f1 = heapFloat[(r9+7)]; + r6 = (r6 + r8)|0; + r6 = r6 >> 2; + f1 = -f1; + heapFloat[(r6)] = f1; + r6 = heap32[(r2)]; + r6 = r6 >> 2; + r6 = heap32[(r6+11)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r6)>>2](i7); + f2 = heapFloat[(r3+-1)]; + f3 = heapFloat[(r2+4)]; + f5 = heapFloat[(r3+-2)]; + f6 = heapFloat[(r2+3)]; + f7 = heapFloat[(r3)]; + f8 = heapFloat[(r2+5)]; + f3 = f2*f3; + f6 = f5*f6; + f8 = f7*f8; + f9 = heapFloat[(r7+1)]; + f3 = f3*f0; + f10 = heapFloat[(fp+-8)]; + f6 = f6*f0; + f11 = heapFloat[(r7+2)]; + f8 = f8*f0; + f3 = f9+f3; + f9 = f2*f_g0; + f6 = f10+f6; + f10 = f5*f_g0; + f3 = f3-f9; + f6 = f6-f10; + f8 = f11+f8; + f1 = f7*f_g0; + f1 = f8-f1; + f5 = f5*f6; + f2 = f2*f3; + f2 = f5+f2; + f5 = f7*f1; + f2 = f2+f5; +if(!(f2 <=f4)) //_LBB420_7 +{ + r3 = r5 >> 2; + heapFloat[(r3+-2)] = f6; + heapFloat[(r3+-1)] = f3; + heapFloat[(r3)] = f1; + heap32[(r3+1)] = 0; +} + if(r0 ==0) //_LBB420_9 +{ +break _3; +} +else{ + r3 = heap32[(r2+13)]; + r0 = (r0 + -1)|0; + r4 = (r4 + 16)|0; + r5 = (r5 + 16)|0; +continue _3; +} +} +} + return; +} + +function _ZNK14btCapsuleShape21calculateLocalInertiaEfR9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r1 = heap32[(r1+13)]; + r2 = (r1 + 2)|0; + r2 = (r2 % 3)|0; + r0 = (r0 + 28)|0; + r2 = r2 << 2; + r2 = (r0 + r2)|0; + r2 = r2 >> 2; + f0 = heapFloat[(r2)]; + r2 = sp + -16; + r3 = r2 >> 2; + heapFloat[(fp+-4)] = f0; + r1 = r1 << 2; + heapFloat[(r3+1)] = f0; + r2 = (r2 + r1)|0; + r0 = (r0 + r1)|0; + heapFloat[(r3+2)] = f0; + r1 = r2 >> 2; + heap32[(r3+3)] = 0; + r0 = r0 >> 2; + f0 = heapFloat[(r1)]; + f1 = heapFloat[(r0)]; + f0 = f0+f1; + heapFloat[(r1)] = f0; + f0 = 0.039999999105930328; + f1 = heapFloat[(r3+1)]; + f2 = heapFloat[(r3+2)]; + f3 = heapFloat[(fp+-4)]; + f1 = f1+f0; + f2 = f2+f0; + f0 = f3+f0; + f1 = f1+f1; + f2 = f2+f2; + f0 = f0+f0; + f1 = f1*f1; + f2 = f2*f2; + f3 = heapFloat[(fp+1)]; + f4 = 0.083333328366279602; + f0 = f0*f0; + r0 = heap32[(fp+2)]; + f5 = f1+f2; + f3 = f3*f4; + f2 = f0+f2; + r0 = r0 >> 2; + f4 = f5*f3; + f0 = f0+f1; + f1 = f2*f3; + heapFloat[(r0)] = f4; + f0 = f0*f3; + heapFloat[(r0+1)] = f1; + heapFloat[(r0+2)] = f0; + return; +} + +function _ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = _2E_str10; + r1 = _2E_str4198; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 110; + _assert(i7); +} + +function _ZNK14btCapsuleShape9serializeEPvP12btSerializer(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+10)]; + r3 = heap32[(fp)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r_g0; + r4 = heap32[(r1)]; + r4 = r4 >> 2; + r4 = heap32[(r4+7)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + r5 = heap32[(fp+1)]; + __FUNCTION_TABLE__[(r4)>>2](i7); + r4 = r_g0; + r5 = r5 >> 2; + heap32[(r5)] = r4; +if(!(r4 ==0)) //_LBB423_2 +{ + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+12)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + __FUNCTION_TABLE__[(r1)>>2](i7); +} + r0 = r3 >> 2; + r1 = heap32[(r0+1)]; + heap32[(r5+1)] = r1; + heap32[(r5+7)] = heap32[(r0+7)]; + heap32[(r5+8)] = heap32[(r0+8)]; + heap32[(r5+9)] = heap32[(r0+9)]; + heap32[(r5+10)] = heap32[(r0+10)]; + heap32[(r5+3)] = heap32[(r0+3)]; + heap32[(r5+4)] = heap32[(r0+4)]; + heap32[(r5+5)] = heap32[(r0+5)]; + heap32[(r5+6)] = heap32[(r0+6)]; + heap32[(r5+11)] = heap32[(r0+11)]; + r0 = heap32[(r0+13)]; + heap32[(r5+13)] = r0; + r0 = _2E_str6199; + r_g0 = r0; + return; +} + +function _ZN14btCapsuleShape15setLocalScalingERK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f0 = f_g0; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f1 = f_g0; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f2 = f_g0; + r0 = heap32[(fp+1)]; + f3 = heapFloat[(r1+9)]; + f4 = heapFloat[(r1+8)]; + f5 = heapFloat[(r1+7)]; + r0 = r0 >> 2; + f3 = f3+f0; + f6 = heapFloat[(r1+5)]; + f4 = f4+f1; + f7 = heapFloat[(r1+4)]; + f5 = f5+f2; + f8 = heapFloat[(r1+3)]; + f9 = heapFloat[(r0+2)]; + f3 = f3/f6; + f4 = f4/f7; + f5 = f5/f8; + f6 = 0; + if(f9 >2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV13btConvexShape; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; +if(!(r0 ==0)) //_LBB425_2 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + heap32[(r0)] = r1; + r0 = heap32[(r2+-1)]; + heap32[(g0)] = r0; + free(i7); +} + return; +} + +function _ZN14btCapsuleShapeD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV13btConvexShape; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZNK14btCapsuleShape37localGetSupportingVertexWithoutMarginERK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; +var __label__ = 0; + i7 = sp + -40;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + heap32[(r0)] = 0; + heap32[(r0+1)] = 0; + r1 = heap32[(fp+2)]; + heap32[(r0+2)] = 0; + r1 = r1 >> 2; + heap32[(r0+3)] = 0; + f0 = heapFloat[(r1)]; + f1 = heapFloat[(r1+1)]; + f2 = heapFloat[(r1+2)]; + f3 = f0*f0; + f4 = f1*f1; + f3 = f3+f4; + f4 = f2*f2; + f3 = f3+f4; + r1 = heap32[(fp+1)]; + f4 = 9.9999997473787516e-005; + if(f3 >=f4) //_LBB427_2 +{ + heapFloat[(g0)] = f3; + f3 = 1; + sqrtf(i7); + f3 = f3/f_g0; + f0 = f0*f3; + f1 = f1*f3; + f2 = f2*f3; +} +else{ + f0 = 1; + f1 = 0; + f2 = f1; +} + r2 = r1 >> 2; + r3 = heap32[(r2+13)]; + r4 = (r3 + 2)|0; + r4 = (r4 % 3)|0; + r5 = (r1 + 28)|0; + r4 = r4 << 2; + r4 = (r5 + r4)|0; + r4 = r4 >> 2; + f3 = heapFloat[(r4)]; + r4 = sp + -16; + heap32[(fp+-4)] = 0; + r6 = r4 >> 2; + r3 = r3 << 2; + heap32[(r6+1)] = 0; + r4 = (r4 + r3)|0; + r3 = (r5 + r3)|0; + heap32[(r6+2)] = 0; + r4 = r4 >> 2; + r3 = r3 >> 2; + heap32[(r6+3)] = 0; + heap32[(r4)] = heap32[(r3)]; + r3 = heap32[(r2)]; + r3 = r3 >> 2; + r3 = heap32[(r3+11)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + f5 = heapFloat[(r2+4)]; + f6 = heapFloat[(r2+3)]; + f7 = heapFloat[(r2+5)]; + f5 = f1*f5; + f6 = f0*f6; + f7 = f2*f7; + f8 = heapFloat[(r6+1)]; + f5 = f5*f3; + f9 = heapFloat[(fp+-4)]; + f6 = f6*f3; + f10 = heapFloat[(r6+2)]; + f7 = f7*f3; + f5 = f8+f5; + f8 = f1*f_g0; + f6 = f9+f6; + f9 = f0*f_g0; + f5 = f5-f8; + f6 = f6-f9; + f7 = f10+f7; + f4 = f2*f_g0; + f4 = f7-f4; + f7 = f0*f6; + f8 = f1*f5; + f7 = f7+f8; + f8 = f2*f4; + f7 = f7+f8; + f8 = -999999984306749440; + if(f7 >f8) //_LBB427_5 +{ + heapFloat[(r0)] = f6; + heapFloat[(r0+1)] = f5; + heapFloat[(r0+2)] = f4; + heap32[(r0+3)] = 0; + f8 = f7; +} + r3 = sp + -32; + heap32[(fp+-8)] = 0; + r4 = r3 >> 2; + heap32[(r4+1)] = 0; + heap32[(r4+2)] = 0; + heap32[(r4+3)] = 0; + r5 = heap32[(r2+13)]; + r5 = r5 << 2; + r6 = (r1 + r5)|0; + r6 = r6 >> 2; + f4 = heapFloat[(r6+7)]; + r3 = (r3 + r5)|0; + r3 = r3 >> 2; + f4 = -f4; + heapFloat[(r3)] = f4; + r3 = heap32[(r2)]; + r3 = r3 >> 2; + r3 = heap32[(r3+11)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + f5 = heapFloat[(r2+4)]; + f6 = heapFloat[(r2+3)]; + f7 = heapFloat[(r2+5)]; + f5 = f1*f5; + f6 = f0*f6; + f7 = f2*f7; + f9 = heapFloat[(r4+1)]; + f5 = f5*f3; + f10 = heapFloat[(fp+-8)]; + f6 = f6*f3; + f11 = heapFloat[(r4+2)]; + f3 = f7*f3; + f5 = f9+f5; + f7 = f1*f_g0; + f6 = f10+f6; + f9 = f0*f_g0; + f5 = f5-f7; + f6 = f6-f9; + f3 = f11+f3; + f4 = f2*f_g0; + f3 = f3-f4; + f0 = f0*f6; + f1 = f1*f5; + f0 = f0+f1; + f1 = f2*f3; + f0 = f0+f1; +if(!(f0 <=f8)) //_LBB427_8 +{ + heapFloat[(r0)] = f6; + heapFloat[(r0+1)] = f5; + heapFloat[(r0+2)] = f3; + heap32[(r0+3)] = 0; +} + return; +} + +function _ZNK16btCollisionShape28calculateSerializeBufferSizeEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 12; + r_g0 = r0; + return; +} + +function _ZNK16btCollisionShape27getContactBreakingThresholdEf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var f0; + var f1; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + f1 = heapFloat[(fp+1)]; + f0 = f_g0*f1; + f_g0 = f0; + return; +} + +function _ZNK16btCollisionShape9serializeEPvP12btSerializer(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+10)]; + r3 = heap32[(fp)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r_g0; + r4 = heap32[(r1)]; + r4 = r4 >> 2; + r4 = heap32[(r4+7)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + r5 = heap32[(fp+1)]; + __FUNCTION_TABLE__[(r4)>>2](i7); + r4 = r_g0; + r5 = r5 >> 2; + heap32[(r5)] = r4; +if(!(r4 ==0)) //_LBB430_2 +{ + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+12)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + __FUNCTION_TABLE__[(r1)>>2](i7); +} + r0 = r3 >> 2; + r0 = heap32[(r0+1)]; + heap32[(r5+1)] = r0; + r0 = _2E_str200; + r_g0 = r0; + return; +} + +function _ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+12)]; + heap32[(g0)] = r0; + r3 = heap32[(fp+1)]; + __FUNCTION_TABLE__[(r2)>>2](i7); + r4 = r3 >> 2; + r5 = heap32[(r4)]; + r5 = r5 >> 2; + r5 = heap32[(r5+4)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r_g0; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r5)>>2](i7); + r2 = r_g0; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r5 = r2 >> 2; + r1 = heap32[(r1+13)]; + r5 = heap32[(r5+2)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r3; + __FUNCTION_TABLE__[(r1)>>2](i7); + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+5)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r_g0; + heap32[(g0+3)] = 1346455635; + heap32[(g0+4)] = r0; + __FUNCTION_TABLE__[(r4)>>2](i7); + return; +} + +function _ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + -112;var g0 = i7>>2; // save stack + r0 = sp + -64; + r1 = r0 >> 2; + heap32[(fp+-16)] = 1065353216; + heap32[(r1+1)] = 0; + heap32[(r1+2)] = 0; + heap32[(r1+3)] = 0; + heap32[(r1+4)] = 0; + heap32[(r1+5)] = 1065353216; + heap32[(r1+6)] = 0; + heap32[(r1+7)] = 0; + heap32[(r1+8)] = 0; + heap32[(r1+9)] = 0; + heap32[(r1+10)] = 1065353216; + heap32[(r1+11)] = 0; + heap32[(r1+12)] = 0; + heap32[(r1+13)] = 0; + r2 = heap32[(fp)]; + heap32[(r1+14)] = 0; + r3 = r2 >> 2; + heap32[(r1+15)] = 0; + r1 = heap32[(r3)]; + r1 = r1 >> 2; + r1 = heap32[(r1+2)]; + r3 = sp + -96; + r4 = sp + -80; + heap32[(g0)] = r2; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r3; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = r3 >> 2; + r1 = r4 >> 2; + f0 = heapFloat[(r0+1)]; + f1 = heapFloat[(r1+1)]; + f2 = heapFloat[(fp+-24)]; + f3 = heapFloat[(fp+-20)]; + f2 = f2-f3; + f0 = f0-f1; + f1 = heapFloat[(r0+2)]; + f3 = heapFloat[(r1+2)]; + f1 = f1-f3; + f2 = f2*f2; + f0 = f0*f0; + f0 = f2+f0; + f1 = f1*f1; + f0 = f0+f1; + heapFloat[(g0)] = f0; + r2 = heap32[(fp+2)]; + f0 = 0.5; + sqrtf(i7); + r2 = r2 >> 2; + f1 = f_g0*f0; + heapFloat[(r2)] = f1; + f1 = heapFloat[(fp+-20)]; + f2 = heapFloat[(fp+-24)]; + r2 = heap32[(fp+1)]; + f1 = f1+f2; + f2 = heapFloat[(r1+2)]; + f3 = heapFloat[(r0+2)]; + f4 = heapFloat[(r1+1)]; + f5 = heapFloat[(r0+1)]; + f4 = f4+f5; + r0 = r2 >> 2; + f1 = f1*f0; + f2 = f2+f3; + f3 = f4*f0; + heapFloat[(r0)] = f1; + f0 = f2*f0; + heapFloat[(r0+1)] = f3; + heapFloat[(r0+2)] = f0; + heap32[(r0+3)] = 0; + return; +} + +function _ZNK16btCollisionShape20getAngularMotionDiscEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var f0; + var f1; + var f2; +var __label__ = 0; + i7 = sp + -40;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+3)]; + r2 = sp + -16; + r3 = sp + -20; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r3; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = r2 >> 2; + f0 = heapFloat[(fp+-4)]; + f1 = heapFloat[(r0+1)]; + f2 = heapFloat[(r0+2)]; + f0 = f0*f0; + f1 = f1*f1; + f0 = f0+f1; + f1 = f2*f2; + f0 = f0+f1; + heapFloat[(g0)] = f0; + sqrtf(i7); + f1 = heapFloat[(fp+-5)]; + f0 = f_g0+f1; + f_g0 = f0; + return; +} + +function _ZNK16btCollisionShape21calculateTemporalAabbERK11btTransformRK9btVector3S5_fRS3_S6_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+2)]; + r3 = heap32[(fp+5)]; + r4 = heap32[(fp+4)]; + r5 = heap32[(fp+1)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r3; + r5 = heap32[(fp+2)]; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r3 >> 2; + r3 = r4 >> 2; + r4 = r5 >> 2; + f0 = heapFloat[(r4)]; + r5 = heap32[(fp+3)]; + f1 = heapFloat[(r2)]; + f2 = heapFloat[(r2+1)]; + f3 = heapFloat[(r2+2)]; + f4 = heapFloat[(r3)]; + f5 = heapFloat[(r3+1)]; + f6 = heapFloat[(r3+2)]; + f7 = heapFloat[(r4+2)]; + f8 = heapFloat[(r4+1)]; + f9 = 0; + if(f0 <=f9) //_LBB434_2 +{ + f4 = f0+f4; +} +else{ + f1 = f0+f1; +} + if(f8 <=f9) //_LBB434_5 +{ + f5 = f8+f5; +} +else{ + f2 = f8+f2; +} + if(f7 <=f9) //_LBB434_8 +{ + f6 = f7+f6; +} +else{ + f3 = f7+f3; +} + r4 = r5 >> 2; + f0 = heapFloat[(r4)]; + f7 = heapFloat[(r4+1)]; + f8 = heapFloat[(r4+2)]; + f0 = f0*f0; + f7 = f7*f7; + f0 = f0+f7; + f7 = f8*f8; + f0 = f0+f7; + heapFloat[(g0)] = f0; + sqrtf(i7); + f0 = f_g0; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + heapFloat[(r3)] = f4; + heapFloat[(r3+1)] = f5; + heapFloat[(r3+2)] = f6; + heap32[(r3+3)] = 0; + heapFloat[(r2)] = f1; + heapFloat[(r2+1)] = f2; + heapFloat[(r2+2)] = f3; + heap32[(r2+3)] = 0; + f0 = f0*f_g0; + f1 = heapFloat[(r3)]; + f1 = f1-f0; + heapFloat[(r3)] = f1; + f1 = heapFloat[(r3+1)]; + f1 = f1-f0; + heapFloat[(r3+1)] = f1; + f1 = heapFloat[(r3+2)]; + f1 = f1-f0; + heapFloat[(r3+2)] = f1; + f1 = heapFloat[(r2)]; + f1 = f1+f0; + heapFloat[(r2)] = f1; + f1 = heapFloat[(r2+1)]; + f1 = f1+f0; + heapFloat[(r2+1)] = f1; + f1 = heapFloat[(r2+2)]; + f0 = f1+f0; + heapFloat[(r2+2)] = f0; + return; +} + +function _ZN14btConcaveShapeD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV14btConcaveShape; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN14btConcaveShapeD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV14btConcaveShape; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZNK17btConvexHullShape7getNameEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = _2E_str219; + r_g0 = r0; + return; +} + +function _ZNK17btConvexHullShape28calculateSerializeBufferSizeEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 68; + r_g0 = r0; + return; +} + +function _ZNK17btConvexHullShape12getNumPlanesEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 0; + r_g0 = r0; + return; +} + +function _ZNK17btConvexHullShape9getVertexEiR9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+1)]; + r2 = heap32[(r0+25)]; + r1 = r1 << 4; + r1 = (r2 + r1)|0; + r1 = r1 >> 2; + r2 = heap32[(fp+2)]; + f0 = heapFloat[(r1+2)]; + f1 = heapFloat[(r0+5)]; + f2 = heapFloat[(r1+1)]; + f3 = heapFloat[(r0+4)]; + f4 = heapFloat[(r1)]; + f5 = heapFloat[(r0+3)]; + r0 = r2 >> 2; + f4 = f4*f5; + f2 = f2*f3; + heapFloat[(r0)] = f4; + f0 = f0*f1; + heapFloat[(r0+1)] = f2; + heapFloat[(r0+2)] = f0; + heap32[(r0+3)] = 0; + return; +} + +function _ZNK17btConvexHullShape7getEdgeEiR9btVector3S1_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+1)]; + r2 = heap32[(r0+23)]; + r3 = (r1 % r2)|0; + r4 = heap32[(r0+25)]; + r3 = r3 << 4; + r3 = (r4 + r3)|0; + r3 = r3 >> 2; + r4 = heap32[(fp+2)]; + f0 = heapFloat[(r3+2)]; + f1 = heapFloat[(r0+5)]; + f2 = heapFloat[(r3+1)]; + f3 = heapFloat[(r0+4)]; + f4 = heapFloat[(r3)]; + f5 = heapFloat[(r0+3)]; + r3 = r4 >> 2; + f4 = f4*f5; + f2 = f2*f3; + heapFloat[(r3)] = f4; + f0 = f0*f1; + heapFloat[(r3+1)] = f2; + r1 = (r1 + 1)|0; + heapFloat[(r3+2)] = f0; + heap32[(r3+3)] = 0; + r1 = (r1 % r2)|0; + r2 = heap32[(r0+25)]; + r1 = r1 << 4; + r1 = (r2 + r1)|0; + r1 = r1 >> 2; + r2 = heap32[(fp+3)]; + f0 = heapFloat[(r1+2)]; + f1 = heapFloat[(r0+5)]; + f2 = heapFloat[(r1+1)]; + f3 = heapFloat[(r0+4)]; + f4 = heapFloat[(r1)]; + f5 = heapFloat[(r0+3)]; + r0 = r2 >> 2; + f4 = f4*f5; + f2 = f2*f3; + heapFloat[(r0)] = f4; + f0 = f0*f1; + heapFloat[(r0+1)] = f2; + heapFloat[(r0+2)] = f0; + heap32[(r0+3)] = 0; + return; +} + +function _ZNK17btConvexHullShape11getNumEdgesEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+23)]; + r_g0 = r0; + return; +} + +function _ZNK17btConvexHullShape14getNumVerticesEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+23)]; + r_g0 = r0; + return; +} + +function _ZNK17btConvexHullShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+3)]; + r1 = heap32[(fp+2)]; +if(!(r0 <1)) //_LBB444_3 +{ + r2 = (r1 + 12)|0; + r3 = r0; +_3: while(true){ + r3 = (r3 + -1)|0; + r4 = (r2 + 16)|0; + r2 = r2 >> 2; + heap32[(r2)] = -581039253; + r2 = r4; + if(r3 !=0) //_LBB444_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + r2 = heap32[(fp)]; + r2 = r2 >> 2; + r3 = heap32[(r2+23)]; +_6: do { +if(!(r3 <1)) //_LBB444_11 +{ + r3 = heap32[(fp+1)]; + r1 = (r1 + 8)|0; + r3 = (r3 + 8)|0; + r4 = 0; +_8: while(true){ +if(!(r0 <1)) //_LBB444_10 +{ + r5 = heap32[(r2+25)]; + r6 = r4 << 4; + r5 = (r5 + r6)|0; + r5 = r5 >> 2; + f0 = heapFloat[(r5+2)]; + f1 = heapFloat[(r2+5)]; + f2 = heapFloat[(r5+1)]; + f3 = heapFloat[(r2+4)]; + f4 = heapFloat[(r5)]; + f5 = heapFloat[(r2+3)]; + f0 = f0*f1; + f1 = f2*f3; + f2 = f4*f5; + r5 = r3; + r6 = r1; + r7 = r0; +_12: while(true){ + r8 = r5 >> 2; + f3 = heapFloat[(r8+-2)]; + f4 = heapFloat[(r8+-1)]; + f3 = f3*f2; + f4 = f4*f1; + f5 = heapFloat[(r8)]; + f3 = f3+f4; + f4 = f5*f0; + r8 = r6 >> 2; + f3 = f3+f4; + f4 = heapFloat[(r8+1)]; +if(!(f4 >=f3)) //_LBB444_9 +{ + heapFloat[(r8+-2)] = f2; + heapFloat[(r8+-1)] = f1; + heapFloat[(r8)] = f0; + heapFloat[(r8+1)] = f3; +} + r7 = (r7 + -1)|0; + r6 = (r6 + 16)|0; + r5 = (r5 + 16)|0; +if(!(r7 !=0)) //_LBB444_7 +{ +break _12; +} +} +} + r4 = (r4 + 1)|0; + r5 = heap32[(r2+23)]; + if(r5 >r4) //_LBB444_5 +{ +continue _8; +} +else{ +break _6; +} +} +} +} while(0); + return; +} + +function _ZNK17btConvexHullShape37localGetSupportingVertexWithoutMarginERK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + heap32[(r0)] = 0; + heap32[(r0+1)] = 0; + r1 = heap32[(fp+1)]; + heap32[(r0+2)] = 0; + r1 = r1 >> 2; + heap32[(r0+3)] = 0; + r2 = heap32[(r1+23)]; +if(!(r2 <1)) //_LBB445_6 +{ + r3 = heap32[(fp+2)]; + r3 = r3 >> 2; + r4 = heap32[(r1+25)]; + f0 = heapFloat[(r1+5)]; + f1 = heapFloat[(r1+4)]; + f2 = heapFloat[(r1+3)]; + f3 = heapFloat[(r3)]; + f4 = heapFloat[(r3+1)]; + f5 = heapFloat[(r3+2)]; + r1 = 0; + f6 = -999999984306749440; +_3: while(true){ + r3 = r1 << 4; + r3 = (r4 + r3)|0; + r3 = r3 >> 2; + f7 = heapFloat[(r3+1)]; + f8 = heapFloat[(r3)]; + f7 = f7*f1; + f8 = f8*f2; + f9 = heapFloat[(r3+2)]; + f9 = f9*f0; + f10 = f3*f8; + f11 = f4*f7; + f10 = f10+f11; + f11 = f5*f9; + f10 = f10+f11; + if(f10 >f6) //_LBB445_4 +{ + heapFloat[(r0)] = f8; + heapFloat[(r0+1)] = f7; + heapFloat[(r0+2)] = f9; + heap32[(r0+3)] = 0; + f6 = f10; +} + r1 = (r1 + 1)|0; + if(r1 >2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = _2E_str10; + r1 = _2E_str3222; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 173; + _assert(i7); +} + +function _ZNK17btConvexHullShape8getPlaneER9btVector3S1_i(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = _2E_str10; + r1 = _2E_str3222; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 167; + _assert(i7); +} + +function _ZN17btConvexHullShapeD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV17btConvexHullShape; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+25)]; +if(!(r1 ==0)) //_LBB448_4 +{ + r3 = heapU8[r0+104]; +if(!(r3 ==0)) //_LBB448_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+25)] = 0; +} + r1 = 1; + heap8[r0+104] = r1; + heap32[(r2+25)] = 0; + r1 = _ZTV13btConvexShape; + heap32[(r2+23)] = 0; + r1 = (r1 + 8)|0; + heap32[(r2+24)] = 0; + heap32[(r2)] = r1; +if(!(r0 ==0)) //_LBB448_6 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + heap32[(r0)] = r1; + r0 = heap32[(r2+-1)]; + heap32[(g0)] = r0; + free(i7); +} + return; +} + +function _ZN17btConvexHullShapeD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV17btConvexHullShape; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+25)]; +if(!(r1 ==0)) //_LBB449_4 +{ + r3 = heapU8[r0+104]; +if(!(r3 ==0)) //_LBB449_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+25)] = 0; +} + r1 = 1; + heap8[r0+104] = r1; + heap32[(r2+25)] = 0; + r0 = _ZTV13btConvexShape; + heap32[(r2+23)] = 0; + r0 = (r0 + 8)|0; + heap32[(r2+24)] = 0; + heap32[(r2)] = r0; + return; +} + +function _ZN17btConvexHullShape15setLocalScalingERK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = r0 >> 2; + r1 = r1 >> 2; + heap32[(r2+3)] = heap32[(r1)]; + heap32[(r2+4)] = heap32[(r1+1)]; + heap32[(r2+5)] = heap32[(r1+2)]; + heap32[(r2+6)] = heap32[(r1+3)]; + heap32[(g0)] = r0; + _ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(i7); + return; +} + +function _ZNK17btConvexHullShape9serializeEPvP12btSerializer(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+10)]; + r3 = heap32[(fp)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r_g0; + r4 = heap32[(r1)]; + r4 = r4 >> 2; + r4 = heap32[(r4+7)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + r5 = heap32[(fp+1)]; + __FUNCTION_TABLE__[(r4)>>2](i7); + r4 = r_g0; + r5 = r5 >> 2; + heap32[(r5)] = r4; +if(!(r4 ==0)) //_LBB451_2 +{ + r4 = heap32[(r1)]; + r4 = r4 >> 2; + r4 = heap32[(r4+12)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + __FUNCTION_TABLE__[(r4)>>2](i7); +} + r2 = r3 >> 2; + r3 = heap32[(r2+1)]; + heap32[(r5+1)] = r3; + heap32[(r5+7)] = heap32[(r2+7)]; + heap32[(r5+8)] = heap32[(r2+8)]; + heap32[(r5+9)] = heap32[(r2+9)]; + heap32[(r5+10)] = heap32[(r2+10)]; + heap32[(r5+3)] = heap32[(r2+3)]; + heap32[(r5+4)] = heap32[(r2+4)]; + heap32[(r5+5)] = heap32[(r2+5)]; + heap32[(r5+6)] = heap32[(r2+6)]; + heap32[(r5+11)] = heap32[(r2+11)]; + r3 = heap32[(r2+23)]; + heap32[(r5+15)] = r3; + if(r3 ==0) //_LBB451_7 +{ + heap32[(r5+13)] = 0; + heap32[(r5+14)] = 0; + r0 = _2E_str6224; + r_g0 = r0; + return; +} +else{ + r4 = heap32[(r1)]; + r4 = r4 >> 2; + r4 = heap32[(r4+7)]; + r6 = heap32[(r2+25)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r6; + __FUNCTION_TABLE__[(r4)>>2](i7); + heap32[(r5+13)] = r_g0; + heap32[(r5+14)] = 0; + r5 = heap32[(r1)]; + r5 = r5 >> 2; + r5 = heap32[(r5+4)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = 16; + heap32[(g0+2)] = r3; + __FUNCTION_TABLE__[(r5)>>2](i7); + r5 = r_g0; +if(!(r3 <1)) //_LBB451_6 +{ + r4 = r5 >> 2; + r4 = heap32[(r4+2)]; + r6 = 0; +_9: while(true){ + r7 = r6 << 4; + r8 = heap32[(r2+25)]; + r9 = (r4 + r7)|0; + r7 = (r8 + r7)|0; + r8 = r9 >> 2; + r7 = r7 >> 2; + heap32[(r8)] = heap32[(r7)]; + heap32[(r8+1)] = heap32[(r7+1)]; + r6 = (r6 + 1)|0; + heap32[(r8+2)] = heap32[(r7+2)]; + heap32[(r8+3)] = heap32[(r7+3)]; +if(!(r3 !=r6)) //_LBB451_5 +{ +break _9; +} +} +} + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + r2 = heap32[(r2+25)]; + r3 = _2E_str5223; + heap32[(g0)] = r0; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = 1497453121; + heap32[(g0+4)] = r2; + __FUNCTION_TABLE__[(r1)>>2](i7); + r5 = _2E_str6224; + r_g0 = r5; + return; +} +} + +function _ZNK17btConvexHullShape24localGetSupportingVertexERK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+16)]; + r3 = heap32[(fp)]; + r4 = heap32[(fp+2)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r4; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f0 = f_g0; + f1 = 0; +if(!(f0 ==f1)) //_LBB452_2 +{ + r2 = r4 >> 2; + f0 = heapFloat[(r2)]; + f1 = heapFloat[(r2+1)]; + f2 = heapFloat[(r2+2)]; + f3 = f0*f0; + f4 = f1*f1; + f3 = f3+f4; + f4 = f2*f2; + f3 = f3+f4; + f4 = 1.4210854715202004e-014; + f5 = -1; + f0 = f3 < f4 ? f5 : f0; + f1 = f3 < f4 ? f5 : f1; + f2 = f3 < f4 ? f5 : f2; + f3 = f0*f0; + f4 = f1*f1; + f3 = f3+f4; + f4 = f2*f2; + f3 = f3+f4; + heapFloat[(g0)] = f3; + sqrtf(i7); + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+11)]; + f4 = 1; + f3 = f4/f_g0; + heap32[(g0)] = r0; + r0 = r3 >> 2; + __FUNCTION_TABLE__[(r1)>>2](i7); + f0 = f0*f3; + f0 = f0*f_g0; + f5 = heapFloat[(r0)]; + f0 = f5+f0; + f1 = f1*f3; + heapFloat[(r0)] = f0; + f0 = f1*f_g0; + f1 = heapFloat[(r0+1)]; + f0 = f1+f0; + f1 = f2*f3; + heapFloat[(r0+1)] = f0; + f0 = f1*f_g0; + f1 = heapFloat[(r0+2)]; + f0 = f1+f0; + heapFloat[(r0+2)] = f0; +} + return; +} + +function _ZN17btConvexHullShape8addPointERK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+24)]; + r3 = heap32[(r1+23)]; + r4 = heap32[(fp+1)]; + if(r2 ==r3) //_LBB453_2 +{ + r5 = 1; + r6 = r3 << 1; + r6 = r3 == 0 ? r5 : r6; +if(!(r2 >=r6)) //_LBB453_1 +{ + if(r6 !=0) //_LBB453_5 +{ + r2 = gNumAlignedAllocs; + r2 = r2 >> 2; + r7 = heap32[(r2)]; + r8 = r6 << 4; + r7 = (r7 + 1)|0; + r8 = r8 | 3; + heap32[(r2)] = r7; + r2 = (r8 + 16)|0; + heap32[(g0)] = r2; + malloc(i7); + r2 = r_g0; + if(r2 !=0) //_LBB453_7 +{ + r7 = 0; + r8 = (r2 + 4)|0; + r7 = (r7 - r8)|0; + r7 = r7 & 15; + r7 = (r2 + r7)|0; + r8 = (r7 + 4)|0; + r7 = r7 >> 2; + heap32[(r7)] = r2; + r2 = r8; +} +} +else{ + r2 = 0; +} + r7 = (r0 + 100)|0; + if(r3 <1) //_LBB453_10 +{ + r8 = r7 >> 2; + r9 = heap32[(r8)]; +} +else{ + r8 = 0; +_12: while(true){ + r9 = r7 >> 2; + r9 = heap32[(r9)]; + r10 = r8 << 4; + r11 = (r2 + r10)|0; + r10 = (r9 + r10)|0; + r11 = r11 >> 2; + r10 = r10 >> 2; + heap32[(r11)] = heap32[(r10)]; + heap32[(r11+1)] = heap32[(r10+1)]; + r8 = (r8 + 1)|0; + heap32[(r11+2)] = heap32[(r10+2)]; + heap32[(r11+3)] = heap32[(r10+3)]; +if(!(r3 !=r8)) //_LBB453_11 +{ +break _12; +} +} + r7 = (r0 + 100)|0; +} + if(r9 !=0) //_LBB453_15 +{ + r8 = heapU8[r0+104]; + if(r8 !=0) //_LBB453_17 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r8 = heap32[(r3)]; + r8 = (r8 + 1)|0; + r9 = r9 >> 2; + heap32[(r3)] = r8; + r3 = heap32[(r9+-1)]; + heap32[(g0)] = r3; + free(i7); + r3 = heap32[(r1+23)]; +} + r8 = r7 >> 2; + heap32[(r8)] = 0; +} + r7 = r7 >> 2; + heap8[r0+104] = r5; + heap32[(r7)] = r2; + heap32[(r1+24)] = r6; +} +} + r2 = r3 << 4; + r3 = heap32[(r1+25)]; + r2 = (r3 + r2)|0; + r2 = r2 >> 2; + r3 = r4 >> 2; + heap32[(r2)] = heap32[(r3)]; + heap32[(r2+1)] = heap32[(r3+1)]; + heap32[(r2+2)] = heap32[(r3+2)]; + heap32[(r2+3)] = heap32[(r3+3)]; + r2 = heap32[(r1+23)]; + r2 = (r2 + 1)|0; + heap32[(r1+23)] = r2; + heap32[(g0)] = r0; + _ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(i7); + return; +} + +function _ZN20btAlignedObjectArrayI9btVector3E6resizeEiRKS0_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+1)]; + r3 = heap32[(fp+1)]; +_1: do { +if(!(r2 >r3)) //_LBB454_20 +{ +if(!(r2 >=r3)) //_LBB454_20 +{ + r4 = heap32[(r1+2)]; +if(!(r4 >=r3)) //_LBB454_18 +{ + if(r3 !=0) //_LBB454_5 +{ + r4 = gNumAlignedAllocs; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r6 = r3 << 4; + r5 = (r5 + 1)|0; + r6 = r6 | 3; + heap32[(r4)] = r5; + r4 = (r6 + 16)|0; + heap32[(g0)] = r4; + malloc(i7); + r4 = r_g0; + if(r4 !=0) //_LBB454_7 +{ + r5 = 0; + r6 = (r4 + 4)|0; + r5 = (r5 - r6)|0; + r5 = r5 & 15; + r5 = (r4 + r5)|0; + r6 = (r5 + 4)|0; + r5 = r5 >> 2; + heap32[(r5)] = r4; + r4 = r6; +} +} +else{ + r4 = 0; +} + r5 = (r0 + 12)|0; + if(r2 <1) //_LBB454_10 +{ + r6 = r5 >> 2; + r7 = heap32[(r6)]; +} +else{ + r6 = 0; +_14: while(true){ + r7 = r5 >> 2; + r7 = heap32[(r7)]; + r8 = r6 << 4; + r9 = (r4 + r8)|0; + r8 = (r7 + r8)|0; + r9 = r9 >> 2; + r8 = r8 >> 2; + heap32[(r9)] = heap32[(r8)]; + heap32[(r9+1)] = heap32[(r8+1)]; + r6 = (r6 + 1)|0; + heap32[(r9+2)] = heap32[(r8+2)]; + heap32[(r9+3)] = heap32[(r8+3)]; +if(!(r2 !=r6)) //_LBB454_11 +{ +break _14; +} +} + r5 = (r0 + 12)|0; +} +if(!(r7 ==0)) //_LBB454_17 +{ + r6 = heapU8[r0+16]; +if(!(r6 ==0)) //_LBB454_16 +{ + r6 = gNumAlignedFree; + r6 = r6 >> 2; + r8 = heap32[(r6)]; + r8 = (r8 + 1)|0; + r7 = r7 >> 2; + heap32[(r6)] = r8; + r6 = heap32[(r7+-1)]; + heap32[(g0)] = r6; + free(i7); +} + r6 = r5 >> 2; + heap32[(r6)] = 0; +} + r6 = 1; + r5 = r5 >> 2; + heap8[r0+16] = r6; + heap32[(r5)] = r4; + heap32[(r1+2)] = r3; + if(r2 >=r3) //_LBB454_20 +{ +break _1; +} +} + r0 = heap32[(fp+2)]; +_25: while(true){ + r4 = r2 << 4; + r5 = heap32[(r1+3)]; + r4 = (r5 + r4)|0; + r4 = r4 >> 2; + r5 = r0 >> 2; + heap32[(r4)] = heap32[(r5)]; + heap32[(r4+1)] = heap32[(r5+1)]; + r2 = (r2 + 1)|0; + heap32[(r4+2)] = heap32[(r5+2)]; + heap32[(r4+3)] = heap32[(r5+3)]; + if(r3 !=r2) //_LBB454_19 +{ +continue _25; +} +else{ +break _1; +} +} +} +} +} while(0); + heap32[(r1+1)] = r3; + return; +} + +function _ZN17btConvexHullShapeC1EPKfii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var f0; + var f1; +var __label__ = 0; + i7 = sp + -32;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + heap32[(r1+2)] = 0; + heap32[(r1+3)] = 1065353216; + heap32[(r1+4)] = 1065353216; + heap32[(r1+5)] = 1065353216; + heap32[(r1+6)] = 0; + heap32[(r1+11)] = 1025758986; + heap32[(r1+13)] = 1065353216; + heap32[(r1+14)] = 1065353216; + heap32[(r1+15)] = 1065353216; + heap32[(r1+16)] = 0; + heap32[(r1+17)] = -1082130432; + heap32[(r1+18)] = -1082130432; + heap32[(r1+19)] = -1082130432; + r2 = _ZTV17btConvexHullShape; + r3 = 0; + heap32[(r1+20)] = 0; + r2 = (r2 + 8)|0; + heap8[r0+84] = r3; + r4 = 1; + heap32[(r1)] = r2; + heap8[r0+104] = r4; + heap32[(r1+25)] = 0; + heap32[(r1+23)] = 0; + heap32[(r1+24)] = 0; + heap32[(r1+1)] = 4; + r2 = heap32[(fp+2)]; + r4 = (r0 + 88)|0; + r5 = sp + -16; + heap32[(g0)] = r4; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r5; + _ZN20btAlignedObjectArrayI9btVector3E6resizeEiRKS0_(i7); +if(!(r2 <1)) //_LBB455_3 +{ + r4 = heap32[(fp+1)]; +_3: while(true){ + r5 = r3 << 4; + r6 = (r4 + r5)|0; + r6 = r6 >> 2; + r7 = heap32[(r1+25)]; + r5 = (r7 + r5)|0; + f0 = heapFloat[(r6+2)]; + f1 = heapFloat[(r6+1)]; + r5 = r5 >> 2; + heap32[(r5)] = heap32[(r6)]; + heapFloat[(r5+1)] = f1; + r3 = (r3 + 1)|0; + heapFloat[(r5+2)] = f0; + heap32[(r5+3)] = 0; + if(r2 !=r3) //_LBB455_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + heap32[(g0)] = r0; + _ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(i7); + return; +} + +function _ZN21btConvexInternalShape15setLocalScalingERK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var f0; + var f1; + var f2; + var f3; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + f0 = heapFloat[(r0+2)]; + r1 = heap32[(fp)]; + f1 = 0; + if(f0 > 2; + heapFloat[(r0+3)] = f3; + heapFloat[(r0+4)] = f2; + heapFloat[(r0+5)] = f0; + heap32[(r0+6)] = 0; + return; +} + +function _ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; +var __label__ = 0; + i7 = sp + -112;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + r3 = heap32[(fp+1)]; + r4 = heap32[(fp+2)]; + r5 = heap32[(fp+3)]; + r6 = 0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f0 = f_g0; +_1: while(true){ + r2 = sp + -64; + r7 = r2 >> 2; + heap32[(fp+-16)] = 0; + heap32[(r7+1)] = 0; + r8 = r6 << 2; + r2 = (r2 - r8)|0; + heap32[(r7+2)] = 0; + r2 = r2 >> 2; + heap32[(r7+3)] = 0; + heap32[(r2)] = 1065353216; + r9 = r3 >> 2; + r10 = heap32[(r1)]; + f1 = heapFloat[(fp+-16)]; + f2 = heapFloat[(r9)]; + f3 = heapFloat[(r7+1)]; + f4 = heapFloat[(r9+4)]; + r10 = r10 >> 2; + f5 = heapFloat[(r9+1)]; + f6 = heapFloat[(r9+5)]; + f2 = f2*f1; + f4 = f4*f3; + f7 = heapFloat[(r7+2)]; + f8 = heapFloat[(r9+8)]; + f9 = heapFloat[(r9+2)]; + f10 = heapFloat[(r9+6)]; + f11 = heapFloat[(r9+10)]; + f12 = heapFloat[(r9+9)]; + r10 = heap32[(r10+15)]; + f5 = f5*f1; + f6 = f6*f3; + f2 = f2+f4; + f4 = f8*f7; + r11 = sp + -48; + f1 = f9*f1; + f3 = f10*f3; + f5 = f5+f6; + f6 = f12*f7; + f2 = f2+f4; + r12 = r11 >> 2; + f1 = f1+f3; + f3 = f11*f7; + f4 = f5+f6; + heapFloat[(fp+-12)] = f2; + f1 = f1+f3; + heapFloat[(r12+1)] = f4; + heapFloat[(r12+2)] = f1; + heap32[(r12+3)] = 0; + r12 = sp + -80; + heap32[(g0)] = r12; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r11; + __FUNCTION_TABLE__[(r10)>>2](i7); + r10 = r12 >> 2; + f1 = heapFloat[(fp+-20)]; + f2 = heapFloat[(r9)]; + f3 = heapFloat[(r10+1)]; + f4 = heapFloat[(r9+1)]; + f5 = heapFloat[(r9+4)]; + f6 = heapFloat[(r9+5)]; + f2 = f2*f1; + f4 = f4*f3; + f7 = heapFloat[(r10+2)]; + f8 = heapFloat[(r9+2)]; + f9 = heapFloat[(r9+8)]; + f10 = heapFloat[(r9+9)]; + f11 = heapFloat[(r9+6)]; + f5 = f5*f1; + f6 = f6*f3; + f2 = f2+f4; + f4 = f8*f7; + f8 = heapFloat[(r9+10)]; + f1 = f9*f1; + f3 = f10*f3; + f5 = f5+f6; + f6 = f11*f7; + f2 = f2+f4; + f4 = heapFloat[(r9+12)]; + f9 = heapFloat[(r9+14)]; + f10 = heapFloat[(r9+13)]; + r10 = sp + -96; + f5 = f5+f6; + f1 = f1+f3; + f3 = f8*f7; + f2 = f2+f4; + f1 = f1+f3; + f3 = f5+f10; + heapFloat[(fp+-24)] = f2; + r11 = r10 >> 2; + f1 = f1+f9; + heapFloat[(r11+1)] = f3; + heapFloat[(r11+2)] = f1; + r10 = (r10 - r8)|0; + heap32[(r11+3)] = 0; + r10 = r10 >> 2; + r12 = (r5 - r8)|0; + f1 = heapFloat[(r10)]; + r12 = r12 >> 2; + f1 = f1+f0; + heapFloat[(r12)] = f1; + heap32[(r2)] = -1082130432; + r2 = heap32[(r1)]; + f1 = heapFloat[(fp+-16)]; + f2 = heapFloat[(r9)]; + f3 = heapFloat[(r7+1)]; + f4 = heapFloat[(r9+4)]; + r2 = r2 >> 2; + f5 = heapFloat[(r9+1)]; + f6 = heapFloat[(r9+5)]; + f2 = f2*f1; + f4 = f4*f3; + f7 = heapFloat[(r7+2)]; + f8 = heapFloat[(r9+8)]; + f9 = heapFloat[(r9+2)]; + f10 = heapFloat[(r9+6)]; + f11 = heapFloat[(r9+10)]; + f12 = heapFloat[(r9+9)]; + r2 = heap32[(r2+15)]; + f5 = f5*f1; + f6 = f6*f3; + f2 = f2+f4; + f4 = f8*f7; + r7 = sp + -16; + f1 = f9*f1; + f3 = f10*f3; + f5 = f5+f6; + f6 = f12*f7; + f2 = f2+f4; + r12 = r7 >> 2; + f1 = f1+f3; + f3 = f11*f7; + f4 = f5+f6; + heapFloat[(fp+-4)] = f2; + f1 = f1+f3; + heapFloat[(r12+1)] = f4; + heapFloat[(r12+2)] = f1; + heap32[(r12+3)] = 0; + r12 = sp + -32; + heap32[(g0)] = r12; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r7; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r12 >> 2; + f1 = heapFloat[(fp+-8)]; + f2 = heapFloat[(r9)]; + f3 = heapFloat[(r2+1)]; + f4 = heapFloat[(r9+1)]; + f5 = heapFloat[(r9+4)]; + f6 = heapFloat[(r9+5)]; + f2 = f2*f1; + f4 = f4*f3; + f7 = heapFloat[(r2+2)]; + f8 = heapFloat[(r9+2)]; + f9 = heapFloat[(r9+8)]; + f10 = heapFloat[(r9+9)]; + f11 = heapFloat[(r9+6)]; + f5 = f5*f1; + f6 = f6*f3; + f2 = f2+f4; + f4 = f8*f7; + f8 = heapFloat[(r9+10)]; + f1 = f9*f1; + f3 = f10*f3; + f5 = f5+f6; + f6 = f11*f7; + f2 = f2+f4; + f4 = heapFloat[(r9+12)]; + f9 = heapFloat[(r9+14)]; + f10 = heapFloat[(r9+13)]; + f5 = f5+f6; + f1 = f1+f3; + f3 = f8*f7; + f2 = f2+f4; + f1 = f1+f3; + f3 = f5+f10; + heapFloat[(fp+-24)] = f2; + f1 = f1+f9; + heapFloat[(r11+1)] = f3; + heapFloat[(r11+2)] = f1; + heap32[(r11+3)] = 0; + r2 = (r4 - r8)|0; + f1 = heapFloat[(r10)]; + r6 = (r6 + -1)|0; + r2 = r2 >> 2; + f1 = f1-f0; + heapFloat[(r2)] = f1; + if(r6 !=-3) //_LBB457_1 +{ +continue _1; +} +else{ +break _1; +} +} + return; +} + +function _ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+16)]; + r3 = heap32[(fp)]; + r4 = heap32[(fp+2)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r4; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f0 = f_g0; + f1 = 0; +if(!(f0 ==f1)) //_LBB458_2 +{ + r2 = r4 >> 2; + f0 = heapFloat[(r2)]; + f1 = heapFloat[(r2+1)]; + f2 = heapFloat[(r2+2)]; + f3 = f0*f0; + f4 = f1*f1; + f3 = f3+f4; + f4 = f2*f2; + f3 = f3+f4; + f4 = 1.4210854715202004e-014; + f5 = -1; + f0 = f3 < f4 ? f5 : f0; + f1 = f3 < f4 ? f5 : f1; + f2 = f3 < f4 ? f5 : f2; + f3 = f0*f0; + f4 = f1*f1; + f3 = f3+f4; + f4 = f2*f2; + f3 = f3+f4; + heapFloat[(g0)] = f3; + sqrtf(i7); + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+11)]; + f4 = 1; + f3 = f4/f_g0; + heap32[(g0)] = r0; + r0 = r3 >> 2; + __FUNCTION_TABLE__[(r1)>>2](i7); + f0 = f0*f3; + f0 = f0*f_g0; + f5 = heapFloat[(r0)]; + f0 = f5+f0; + f1 = f1*f3; + heapFloat[(r0)] = f0; + f0 = f1*f_g0; + f1 = heapFloat[(r0+1)]; + f0 = f1+f0; + f1 = f2*f3; + heapFloat[(r0+1)] = f0; + f0 = f1*f_g0; + f1 = heapFloat[(r0+2)]; + f0 = f1+f0; + heapFloat[(r0+2)] = f0; +} + return; +} + +function _ZN13btConvexShapeD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV13btConvexShape; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN13btConvexShapeD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV13btConvexShape; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; +if(!(r0 ==0)) //_LBB460_2 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + heap32[(r0)] = r1; + r0 = heap32[(r2+-1)]; + heap32[(g0)] = r0; + free(i7); +} + return; +} + +function _ZL17convexHullSupportRK9btVector3PS0_iS1_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+5)]; +if(!(r0 <1)) //_LBB461_4 +{ + f0 = heapFloat[(fp+8)]; + f1 = heapFloat[(fp+3)]; + f2 = heapFloat[(fp+7)]; + f3 = heapFloat[(fp+2)]; + f4 = heapFloat[(fp+6)]; + f5 = heapFloat[(fp+1)]; + r1 = heap32[(fp)]; + r2 = heap32[(fp+4)]; + f1 = f1*f0; + f3 = f3*f2; + f5 = f5*f4; + r3 = 0; + r4 = -1; + f6 = -999999984306749440; +_3: while(true){ + r5 = r3 << 4; + r5 = (r2 + r5)|0; + r5 = r5 >> 2; + f7 = heapFloat[(r5)]; + f8 = heapFloat[(r5+1)]; + f7 = f5*f7; + f8 = f3*f8; + f9 = heapFloat[(r5+2)]; + f7 = f7+f8; + f8 = f1*f9; + f7 = f7+f8; + r5 = (r3 + 1)|0; + r4 = f7 > f6 ? r3 : r4; + f6 = f7 > f6 ? f7 : f6; + r3 = r5; +if(!(r0 !=r5)) //_LBB461_2 +{ +break _3; +} +} + if(r4 >-1) //_LBB461_5 +{ + r0 = r4 << 4; + r0 = (r2 + r0)|0; + r0 = r0 >> 2; + f1 = heapFloat[(r0)]; + f3 = heapFloat[(r0+2)]; + f5 = heapFloat[(r0+1)]; + r0 = r1 >> 2; + f1 = f1*f4; + f2 = f5*f2; + heapFloat[(r0)] = f1; + f0 = f3*f0; + heapFloat[(r0+1)] = f2; + heapFloat[(r0+2)] = f0; + heap32[(r0+3)] = 0; + return; +} +} + r1 = _2E_str6249; + r2 = _2E_str7250; + heap32[(g0)] = r1; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = 108; + _assert(i7); +} + +function _ZNK13btConvexShape44localGetSupportVertexWithoutMarginNonVirtualERK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; +var __label__ = 0; + i7 = sp + -120;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = r0 >> 2; + r2 = heap32[(r1+1)]; + r3 = heap32[(fp)]; + r4 = heap32[(fp+2)]; +_1: do { + if(r2 >4) //_LBB462_4 +{ + if(r2 >9) //_LBB462_7 +{ + if(r2 ==10) //_LBB462_32 +{ + r2 = heap32[(r1+13)]; + r5 = (r2 + 2)|0; + r4 = r4 >> 2; + r5 = (r5 % 3)|0; + f0 = heapFloat[(r4)]; + f1 = heapFloat[(r4+1)]; + r2 = r2 << 2; + r0 = (r0 + 28)|0; + r5 = r5 << 2; + f2 = heapFloat[(r4+2)]; + r4 = (r0 + r2)|0; + r0 = (r0 + r5)|0; + f3 = f0*f0; + f4 = f1*f1; + r4 = r4 >> 2; + r0 = r0 >> 2; + f3 = f3+f4; + f4 = f2*f2; + f3 = f3+f4; + f4 = heapFloat[(r4)]; + f5 = heapFloat[(r0)]; + f6 = 9.9999997473787516e-005; + if(f3 >=f6) //_LBB462_34 +{ + heapFloat[(g0)] = f3; + f3 = 1; + sqrtf(i7); + f3 = f3/f_g0; + f0 = f0*f3; + f1 = f1*f3; + f2 = f2*f3; +} +else{ + f0 = 1; + f1 = 0; + f2 = f1; +} + r0 = sp + -64; + r4 = r0 >> 2; + heap32[(fp+-16)] = 0; + heap32[(r4+1)] = 0; + r0 = (r0 + r2)|0; + heap32[(r4+2)] = 0; + r0 = r0 >> 2; + heap32[(r4+3)] = 0; + heapFloat[(r0)] = f4; + f3 = heapFloat[(r1+4)]; + f6 = heapFloat[(r1+3)]; + f7 = heapFloat[(r1+5)]; + f3 = f1*f3; + f6 = f0*f6; + f8 = heapFloat[(r1+11)]; + f7 = f2*f7; + f3 = f3*f5; + f9 = heapFloat[(r4+1)]; + f6 = f6*f5; + f10 = heapFloat[(fp+-16)]; + f5 = f7*f5; + f7 = heapFloat[(r4+2)]; + f11 = f1*f8; + f9 = f9+f3; + f12 = f0*f8; + f10 = f10+f6; + f9 = f9-f11; + f10 = f10-f12; + f8 = f2*f8; + f7 = f7+f5; + f7 = f7-f8; + f13 = f0*f10; + f14 = f1*f9; + f13 = f13+f14; + f14 = f2*f7; + f13 = f13+f14; + f14 = -999999984306749440; + if(f13 >f14) //_LBB462_37 +{ + f14 = f13; +} +else{ + f10 = 0; + f9 = f10; + f7 = f10; +} + r0 = sp + -80; + r1 = r0 >> 2; + heap32[(fp+-20)] = 0; + heap32[(r1+1)] = 0; + r0 = (r0 + r2)|0; + heap32[(r1+2)] = 0; + r0 = r0 >> 2; + f4 = -f4; + heap32[(r1+3)] = 0; + heapFloat[(r0)] = f4; + f4 = heapFloat[(r1+1)]; + f13 = heapFloat[(fp+-20)]; + f15 = heapFloat[(r1+2)]; + f3 = f4+f3; + f4 = f13+f6; + f4 = f4-f12; + f3 = f3-f11; + f5 = f15+f5; + f0 = f0*f4; + f1 = f1*f3; + f5 = f5-f8; + f0 = f0+f1; + f1 = f2*f5; + f0 = f0+f1; + r0 = r3 >> 2; + f1 = f0 > f14 ? f4 : f10; + f2 = f0 > f14 ? f3 : f9; + heapFloat[(r0)] = f1; + f0 = f0 > f14 ? f5 : f7; +__label__ = 11; +break _1; +} +else{ + if(r2 ==13) //_LBB462_16 +{ + r0 = sp + -16; + r2 = r0 >> 2; + heap32[(fp+-4)] = heap32[(r1+7)]; + heap32[(r2+1)] = heap32[(r1+8)]; + heap32[(r2+2)] = heap32[(r1+9)]; + r4 = r4 >> 2; + heap32[(r2+3)] = heap32[(r1+10)]; + r2 = sp + -32; + heap32[(fp+-8)] = heap32[(r4)]; + f0 = heapFloat[(r4+1)]; + r5 = r2 >> 2; + heapFloat[(r5+1)] = f0; + f1 = heapFloat[(r4+2)]; + heapFloat[(r5+2)] = f1; + heap32[(r5+3)] = 0; + r1 = heap32[(r1+13)]; + if(r1 ==2) //_LBB462_21 +{ + r4 = 0; + r5 = 2; + r6 = 1; + f1 = f0; +} +else{ + if(r1 ==1) //_LBB462_20 +{ + r4 = 0; + r5 = 1; + r6 = 2; +} +else{ + if(r1 !=0) //_LBB462_22 +{ + r0 = _2E_str10; + r1 = _2E_str7250; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 175; + _assert(i7); +} +else{ + r4 = 1; + r5 = 0; + r6 = 2; +} +} +} + r1 = r1 << 2; + r4 = r4 << 2; + r7 = (r0 + r4)|0; + r0 = (r0 + r1)|0; + r1 = (r2 + r4)|0; + r7 = r7 >> 2; + r0 = r0 >> 2; + r1 = r1 >> 2; + f0 = heapFloat[(r1)]; + f2 = heapFloat[(r7)]; + f3 = heapFloat[(r0)]; + f4 = f0*f0; + f5 = f1*f1; + f4 = f4+f5; + heapFloat[(g0)] = f4; + sqrtf(i7); + f4 = f_g0; + f5 = 0; + if(f4 ==f5) //_LBB462_28 +{ + r0 = sp + -48; + r1 = (r0 + r4)|0; + r4 = r5 << 2; + r2 = (r2 + r4)|0; + r1 = r1 >> 2; + r2 = r2 >> 2; + heapFloat[(r1)] = f2; + f0 = heapFloat[(r2)]; + if(f0 > 2; + r1 = r1 >> 2; + heapFloat[(r4)] = f3; + r3 = r3 >> 2; + heap32[(r1)] = 0; + r0 = r0 >> 2; + heap32[(r3)] = heap32[(fp+-12)]; + heap32[(r3+1)] = heap32[(r0+1)]; + heap32[(r3+2)] = heap32[(r0+2)]; + heap32[(r3+3)] = 0; + return; +} +else{ + r0 = sp + -48; + r4 = (r0 + r4)|0; + f2 = f2/f4; + r1 = r5 << 2; + r2 = (r2 + r1)|0; + r4 = r4 >> 2; + f0 = f0*f2; + r2 = r2 >> 2; + heapFloat[(r4)] = f0; + f0 = heapFloat[(r2)]; + if(f0 > 2; + r4 = r4 >> 2; + f2 = f1*f2; + heapFloat[(r1)] = f3; + r1 = r3 >> 2; + heapFloat[(r4)] = f2; + r4 = r0 >> 2; + heap32[(r1)] = heap32[(fp+-12)]; + heap32[(r1+1)] = heap32[(r4+1)]; + heap32[(r1+2)] = heap32[(r4+2)]; + heap32[(r1+3)] = 0; + return; +} +} +else{ +__label__ = 40; +break _1; +} +} +} +else{ + if(r2 ==5) //_LBB462_39 +{ + r0 = r4 >> 2; + f0 = heapFloat[(r1+5)]; + r4 = heap32[(r1+22)]; +__label__ = 38; +break _1; +} +else{ + if(r2 ==8) //_LBB462_9 +{ + r0 = r3 >> 2; + heap32[(r0)] = 0; + heap32[(r0+1)] = 0; + heap32[(r0+2)] = 0; + heap32[(r0+3)] = 0; + return; +} +else{ +__label__ = 40; +break _1; +} +} +} +} +else{ + if(r2 ==0) //_LBB462_10 +{ + r0 = r4 >> 2; + f0 = heapFloat[(r1+7)]; + f1 = heapFloat[(r1+9)]; + f2 = heapFloat[(r1+8)]; + f3 = 0; + f4 = -f0; + f5 = heapFloat[(r0)]; + f6 = heapFloat[(r0+2)]; + f7 = heapFloat[(r0+1)]; + f8 = -f2; + r0 = r3 >> 2; + f0 = f5 < f3 ? f4 : f0; + f4 = -f1; + f2 = f7 < f3 ? f8 : f2; + heapFloat[(r0)] = f0; + f0 = f6 < f3 ? f4 : f1; +__label__ = 11; +break _1; +} +else{ + if(r2 ==1) //_LBB462_12 +{ + r4 = r4 >> 2; + f0 = heapFloat[(r1+13)]; + f1 = heapFloat[(r4)]; + f2 = heapFloat[(r1+17)]; + f3 = heapFloat[(r1+21)]; + f4 = heapFloat[(r1+14)]; + f5 = heapFloat[(r4+1)]; + f6 = heapFloat[(r1+18)]; + f7 = heapFloat[(r1+22)]; + f0 = f1*f0; + f4 = f5*f4; + f8 = heapFloat[(r1+15)]; + f9 = heapFloat[(r4+2)]; + f10 = heapFloat[(r1+19)]; + f11 = heapFloat[(r1+23)]; + f2 = f1*f2; + f6 = f5*f6; + f1 = f1*f3; + f3 = f5*f7; + f0 = f0+f4; + f4 = f9*f8; + f2 = f2+f6; + f5 = f9*f10; + f1 = f1+f3; + f3 = f9*f11; + f0 = f0+f4; + f2 = f2+f5; + f1 = f1+f3; + if(f0 >=f2) //_LBB462_14 +{ + r1 = 2; + r4 = 0; + r1 = f0 < f1 ? r1 : r4; +} +else{ + r1 = 2; + r4 = 1; + r1 = f2 < f1 ? r1 : r4; +} + r1 = r1 << 4; + r0 = (r0 + r1)|0; + r0 = r0 >> 2; + f0 = heapFloat[(r0+15)]; + f1 = heapFloat[(r0+14)]; + r1 = r3 >> 2; + heap32[(r1)] = heap32[(r0+13)]; + heapFloat[(r1+1)] = f1; + heapFloat[(r1+2)] = f0; + heap32[(r1+3)] = 0; + return; +} +else{ + if(r2 ==4) //_LBB462_41 +{ + r0 = r4 >> 2; + f0 = heapFloat[(r1+5)]; + r4 = heap32[(r1+25)]; +__label__ = 38; +} +else{ +__label__ = 40; +} +} +} +} +} while(0); +switch(__label__ ){//multiple entries +case 11: + heapFloat[(r0+1)] = f2; + heapFloat[(r0+2)] = f0; + heap32[(r0+3)] = 0; + return; +break; +case 40: + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+16)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r4; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +break; +case 38: + r2 = heap32[(r1+23)]; + f1 = heapFloat[(r0)]; + f2 = heapFloat[(r0+1)]; + f3 = heapFloat[(r0+2)]; + f4 = heapFloat[(r1+3)]; + f5 = heapFloat[(r1+4)]; + heap32[(g0)] = r3; + heapFloat[(g0+1)] = f1; + heapFloat[(g0+2)] = f2; + heapFloat[(g0+3)] = f3; + heap32[(g0+4)] = r4; + heap32[(g0+5)] = r2; + heapFloat[(g0+6)] = f4; + heapFloat[(g0+7)] = f5; + heapFloat[(g0+8)] = f0; + _ZL17convexHullSupportRK9btVector3PS0_iS1_(i7); + return; +break; +} +} + +function _ZNK13btConvexShape31localGetSupportVertexNonVirtualERK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; +var __label__ = 0; + i7 = sp + -48;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r0 = r0 >> 2; + f0 = heapFloat[(r0)]; + r1 = sp + -32; + heapFloat[(fp+-8)] = f0; + f1 = heapFloat[(r0+1)]; + r2 = r1 >> 2; + heapFloat[(r2+1)] = f1; + f2 = heapFloat[(r0+2)]; + r3 = heap32[(fp)]; + r4 = heap32[(fp+1)]; + heapFloat[(r2+2)] = f2; + f3 = f0*f0; + f4 = f1*f1; + f3 = f3+f4; + f4 = f2*f2; + heap32[(r2+3)] = heap32[(r0+3)]; + f3 = f3+f4; + f4 = 1.4210854715202004e-014; + if(f3 > 2; + heapFloat[(r2+2)] = f0; + r5 = heap32[(r0+1)]; +_4: do { + if(r5 >7) //_LBB463_7 +{ + if(r5 ==13) //_LBB463_13 +{ + f3 = heapFloat[(r0+11)]; +__label__ = 16; +break _4; +} +else{ + if(r5 ==10) //_LBB463_14 +{ + f3 = heapFloat[(r0+11)]; +__label__ = 16; +break _4; +} +else{ + if(r5 !=8) //_LBB463_16 +{ +__label__ = 15; +break _4; +} +else{ + f3 = heapFloat[(r0+7)]; + f4 = heapFloat[(r0+3)]; + f3 = f3*f4; +__label__ = 16; +break _4; +} +} +} +} +else{ + if(r5 ==0) //_LBB463_11 +{ + f3 = heapFloat[(r0+11)]; +__label__ = 16; +break _4; +} +else{ + if(r5 ==1) //_LBB463_12 +{ + f3 = heapFloat[(r0+11)]; +__label__ = 16; +} +else{ + r5 = (r5 + -4)|0; + if(uint(r5) > 2; + r0 = heap32[(r0+11)]; + heap32[(g0)] = r4; + __FUNCTION_TABLE__[(r0)>>2](i7); + f3 = f_g0; + f0 = heapFloat[(r2+2)]; + f2 = heapFloat[(r2+1)]; + f1 = heapFloat[(fp+-8)]; +} + r0 = sp + -16; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r1; + _ZNK13btConvexShape44localGetSupportVertexWithoutMarginNonVirtualERK9btVector3(i7); + r0 = r0 >> 2; + f1 = f1*f3; + f4 = heapFloat[(fp+-4)]; + f5 = heapFloat[(r0+2)]; + f6 = heapFloat[(r0+1)]; + f2 = f2*f3; + r0 = r3 >> 2; + f1 = f4+f1; + f0 = f0*f3; + f2 = f6+f2; + heapFloat[(r0)] = f1; + f0 = f5+f0; + heapFloat[(r0+1)] = f2; + heapFloat[(r0+2)] = f0; + heap32[(r0+3)] = 0; + return; +} + +function _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV31btInternalTriangleIndexCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV31btInternalTriangleIndexCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallback28internalProcessTriangleIndexEPS2_ii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = heap32[(fp)]; + r1 = r1 >> 2; + f0 = 999999984306749440; + f1 = heapFloat[(r0)]; + f2 = heapFloat[(r0+1)]; + f3 = -999999984306749440; + f4 = heapFloat[(r0+2)]; + f5 = heapFloat[(r0+3)]; + f6 = 0; + r1 = heap32[(r1+1)]; + f7 = f1 < f0 ? f1 : f0; + f8 = heapFloat[(r0+4)]; + f1 = f1 > f3 ? f1 : f3; + f9 = f2 < f0 ? f2 : f0; + f10 = heapFloat[(r0+5)]; + f2 = f2 > f3 ? f2 : f3; + f0 = f4 < f0 ? f4 : f0; + f11 = heapFloat[(r0+6)]; + f3 = f4 > f3 ? f4 : f3; + f4 = f5 < f6 ? f5 : f6; + f12 = heapFloat[(r0+7)]; + f5 = f5 > f6 ? f5 : f6; + r2 = r1 >> 2; + f6 = f8 < f7 ? f8 : f7; + f7 = heapFloat[(r0+8)]; + f1 = f1 < f8 ? f8 : f1; + f8 = f10 < f9 ? f10 : f9; + f9 = heapFloat[(r0+9)]; + f2 = f2 < f10 ? f10 : f2; + f0 = f11 < f0 ? f11 : f0; + f10 = heapFloat[(r0+10)]; + f3 = f3 < f11 ? f11 : f3; + f4 = f12 < f4 ? f12 : f4; + f11 = heapFloat[(r0+11)]; + f5 = f5 < f12 ? f12 : f5; + r0 = heap32[(r2+2)]; + r3 = heap32[(r2+1)]; + r4 = heap32[(fp+2)]; + r5 = heap32[(fp+3)]; + f6 = f7 < f6 ? f7 : f6; + f8 = f9 < f8 ? f9 : f8; + f0 = f10 < f0 ? f10 : f0; + f4 = f11 < f4 ? f11 : f4; + f1 = f1 < f7 ? f7 : f1; + f2 = f2 < f9 ? f9 : f2; + f3 = f3 < f10 ? f10 : f3; + f5 = f5 < f11 ? f11 : f5; + if(r0 ==r3) //_LBB466_2 +{ + r6 = 1; + r7 = r3 << 1; + r7 = r3 == 0 ? r6 : r7; +if(!(r0 >=r7)) //_LBB466_1 +{ + if(r7 !=0) //_LBB466_5 +{ + r0 = gNumAlignedAllocs; + r0 = r0 >> 2; + r8 = heap32[(r0)]; + r8 = (r8 + 1)|0; + r9 = r7 << 6; + heap32[(r0)] = r8; + r0 = r9 | 19; + heap32[(g0)] = r0; + malloc(i7); + r0 = r_g0; + if(r0 !=0) //_LBB466_7 +{ + r3 = 0; + r8 = (r0 + 4)|0; + r3 = (r3 - r8)|0; + r3 = r3 & 15; + r3 = (r0 + r3)|0; + r8 = r3 >> 2; + heap32[(r8)] = r0; + r0 = (r3 + 4)|0; + r3 = heap32[(r2+1)]; +} +} +else{ + r0 = 0; +} +if(!(r3 <1)) //_LBB466_11 +{ + r8 = 0; +_11: while(true){ + r9 = heap32[(r2+3)]; + r10 = (r0 + r8)|0; + r9 = (r9 + r8)|0; + heap32[(g0)] = r10; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = 64; + r3 = (r3 + -1)|0; + r8 = (r8 + 64)|0; + memcpy(i7); +if(!(r3 !=0)) //_LBB466_10 +{ +break _11; +} +} +} + r3 = heap32[(r2+3)]; +if(!(r3 ==0)) //_LBB466_15 +{ + r8 = heapU8[r1+16]; +if(!(r8 ==0)) //_LBB466_14 +{ + r8 = gNumAlignedFree; + r8 = r8 >> 2; + r9 = heap32[(r8)]; + r9 = (r9 + 1)|0; + r3 = r3 >> 2; + heap32[(r8)] = r9; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+3)] = 0; +} + heap8[r1+16] = r6; + heap32[(r2+3)] = r0; + heap32[(r2+2)] = r7; + r3 = heap32[(r2+1)]; +} +} + r0 = r3 << 6; + r1 = heap32[(r2+3)]; + r0 = (r1 + r0)|0; + r0 = r0 >> 2; + heapFloat[(r0)] = f6; + heapFloat[(r0+1)] = f8; + heapFloat[(r0+2)] = f0; + heapFloat[(r0+3)] = f4; + heapFloat[(r0+4)] = f1; + heapFloat[(r0+5)] = f2; + heapFloat[(r0+6)] = f3; + heapFloat[(r0+7)] = f5; + heap32[(r0+8)] = -1; + heap32[(r0+9)] = r4; + heap32[(r0+10)] = r5; + r0 = heap32[(r2+1)]; + r0 = (r0 + 1)|0; + heap32[(r2+1)] = r0; + return; +} + +function _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV31btInternalTriangleIndexCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV31btInternalTriangleIndexCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallback28internalProcessTriangleIndexEPS2_ii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; +var __label__ = 0; + i7 = sp + -64;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + if(r0 <1024) //_LBB469_2 +{ + r1 = heap32[(fp+3)]; + if(r1 <2097152) //_LBB469_4 +{ + if(r1 >-1) //_LBB469_6 +{ + r2 = heap32[(fp)]; + r3 = heap32[(fp+1)]; + r4 = sp + -32; + r5 = r4 >> 2; + heap32[(fp+-8)] = 1566444395; + heap32[(r5+1)] = 1566444395; + heap32[(r5+2)] = 1566444395; + r6 = sp + -48; + heap32[(r5+3)] = 0; + r7 = r6 >> 2; + heap32[(fp+-12)] = -581039253; + heap32[(r7+1)] = -581039253; + heap32[(r7+2)] = -581039253; + r3 = r3 >> 2; + heap32[(r7+3)] = 0; + f0 = heapFloat[(r3)]; + f1 = 999999984306749440; + if(f0 f8) //_LBB469_20 +{ + heapFloat[(fp+-12)] = f0; +} +else{ + f0 = f8; +} + if(f3 >f8) //_LBB469_23 +{ + heapFloat[(r7+1)] = f3; +} +else{ + f3 = -999999984306749440; +} + f8 = -999999984306749440; + if(f4 >f8) //_LBB469_26 +{ + heapFloat[(r7+2)] = f4; + f8 = f4; +} + f4 = 0; + if(f6 >f4) //_LBB469_29 +{ + heapFloat[(r7+3)] = f6; + f4 = f6; +} + f6 = heapFloat[(r3+4)]; + if(f6 =f7)) //_LBB469_65 +{ + heapFloat[(r5+3)] = f11; +} + if(f0 =f11)) //_LBB469_76 +{ + heapFloat[(r7+3)] = f11; +} + f4 = f0-f2; + f6 = 0.0020000000949949026; +if(!(f4 >=f6)) //_LBB469_78 +{ + f4 = 0.0010000000474974513; + f0 = f0+f4; + f4 = -0.0010000000474974513; + f2 = f2+f4; + heapFloat[(fp+-12)] = f0; + heapFloat[(fp+-8)] = f2; +} + f0 = f3-f1; +if(!(f0 >=f6)) //_LBB469_80 +{ + f0 = 0.0010000000474974513; + f2 = -0.0010000000474974513; + f0 = f3+f0; + f1 = f1+f2; + heapFloat[(r7+1)] = f0; + heapFloat[(r5+1)] = f1; +} + f0 = f8-f5; +if(!(f0 >=f6)) //_LBB469_82 +{ + f0 = 0.0010000000474974513; + f1 = -0.0010000000474974513; + f0 = f8+f0; + f1 = f5+f1; + heapFloat[(r7+2)] = f0; + heapFloat[(r5+2)] = f1; +} + r2 = r2 >> 2; + r3 = heap32[(r2+2)]; + r5 = sp + -16; + heap32[(g0)] = r3; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = 0; + _ZNK14btQuantizedBvh8quantizeEPtRK9btVector3i(i7); + r3 = heap32[(r2+2)]; + r4 = (r5 + 6)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r6; + heap32[(g0+3)] = 1; + r0 = r0 << 21; + r0 = r0 | r1; + _ZNK14btQuantizedBvh8quantizeEPtRK9btVector3i(i7); + r1 = r5 >> 2; + heap32[(r1+3)] = r0; + r1 = heap32[(r2+1)]; + r2 = r1 >> 2; + r3 = heap32[(r2+1)]; + r4 = heap32[(r2+2)]; + if(r4 ==r3) //_LBB469_84 +{ + r4 = 1; + r5 = r3 << 1; + r3 = r3 == 0 ? r4 : r5; + heap32[(g0)] = r1; + heap32[(g0+1)] = r3; + _ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE7reserveEi(i7); + r3 = heap32[(r2+1)]; +} + r1 = heap32[(r2+3)]; + r4 = heapU16[(sp+-16)>>1]; + r3 = r3 << 4; + heap16[(r1+r3)>>1] = r4; + r1 = (r1 + r3)|0; + r3 = heapU16[(sp+-14)>>1]; + heap16[(r1+2)>>1] = r3; + r3 = heapU16[(sp+-12)>>1]; + heap16[(r1+4)>>1] = r3; + r3 = heapU16[(sp+-10)>>1]; + heap16[(r1+6)>>1] = r3; + r3 = heapU16[(sp+-8)>>1]; + heap16[(r1+8)>>1] = r3; + r3 = heapU16[(sp+-6)>>1]; + r4 = r1 >> 2; + heap16[(r1+10)>>1] = r3; + heap32[(r4+3)] = r0; + r0 = heap32[(r2+1)]; + r0 = (r0 + 1)|0; + heap32[(r2+1)] = r0; + return; +} +else{ + r0 = _2E_str20316; + r1 = _2E_str10306; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 103; + _assert(i7); +} +} +else{ + r0 = _2E_str19315; + r1 = _2E_str10306; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 101; + _assert(i7); +} +} +else{ + r0 = _2E_str18314; + r1 = _2E_str10306; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 100; + _assert(i7); +} +} + +function _ZNK14btOptimizedBvh16serializeInPlaceEPvjb(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r3; + _ZNK14btQuantizedBvh9serializeEPvjb(i7); + r0 = 1; + r_g0 = r0; + return; +} + +function _ZN14btOptimizedBvhD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV14btOptimizedBvh; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZN14btQuantizedBvhD2Ev(i7); +if(!(r0 ==0)) //_LBB471_2 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + heap32[(r0)] = r1; + r0 = heap32[(r2+-1)]; + heap32[(g0)] = r0; + free(i7); +} + return; +} + +function _ZN14btOptimizedBvhD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV14btOptimizedBvh; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZN14btQuantizedBvhD2Ev(i7); + return; +} + +function _ZNK23btPolyhedralConvexShape21calculateLocalInertiaEfR9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + -112;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + r3 = sp + -64; + __FUNCTION_TABLE__[(r2)>>2](i7); + f0 = f_g0; + r2 = r3 >> 2; + heap32[(fp+-16)] = 1065353216; + heap32[(r2+1)] = 0; + heap32[(r2+2)] = 0; + heap32[(r2+3)] = 0; + heap32[(r2+4)] = 0; + heap32[(r2+5)] = 1065353216; + heap32[(r2+6)] = 0; + heap32[(r2+7)] = 0; + heap32[(r2+8)] = 0; + heap32[(r2+9)] = 0; + heap32[(r2+10)] = 1065353216; + heap32[(r2+11)] = 0; + heap32[(r2+12)] = 0; + heap32[(r2+13)] = 0; + heap32[(r2+14)] = 0; + heap32[(r2+15)] = 0; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+2)]; + r2 = sp + -80; + r4 = sp + -96; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r4; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = r4 >> 2; + r1 = r2 >> 2; + f1 = heapFloat[(r0+2)]; + f2 = heapFloat[(r1+2)]; + f3 = heapFloat[(r0+1)]; + f4 = heapFloat[(r1+1)]; + f3 = f3-f4; + f4 = 0.5; + f1 = f1-f2; + f2 = heapFloat[(fp+-24)]; + f5 = heapFloat[(fp+-20)]; + f2 = f2-f5; + f3 = f3*f4; + f1 = f1*f4; + f2 = f2*f4; + f3 = f3+f0; + f1 = f1+f0; + f0 = f2+f0; + f2 = f3+f3; + f1 = f1+f1; + f0 = f0+f0; + f2 = f2*f2; + f1 = f1*f1; + f3 = heapFloat[(fp+1)]; + f4 = 0.083333328366279602; + f0 = f0*f0; + r0 = heap32[(fp+2)]; + f5 = f2+f1; + f3 = f3*f4; + f1 = f0+f1; + r0 = r0 >> 2; + f4 = f5*f3; + f0 = f0+f2; + f1 = f1*f3; + heapFloat[(r0)] = f4; + f0 = f0*f3; + heapFloat[(r0+1)] = f1; + heapFloat[(r0+2)] = f0; + heap32[(r0+3)] = 0; + return; +} + +function _ZNK34btPolyhedralConvexAabbCachingShape7getAabbERK11btTransformR9btVector3S4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var f0; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + f0 = f_g0; + r1 = heapU8[r0+84]; + if(r1 !=0) //_LBB474_2 +{ + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+3)]; + r4 = (r0 + 52)|0; + r0 = (r0 + 68)|0; + heap32[(g0)] = r4; + heap32[(g0+1)] = r0; + heapFloat[(g0+2)] = f0; + heap32[(g0+3)] = r1; + heap32[(g0+4)] = r2; + heap32[(g0+5)] = r3; + _Z15btTransformAabbRK9btVector3S1_fRK11btTransformRS_S5_(i7); + return; +} +else{ + r0 = _2E_str6232; + r1 = _2E_str7331; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 86; + _assert(i7); +} +} + +function _ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var f0; + var f1; +var __label__ = 0; + i7 = sp + -112;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = 1; + r2 = _ZGVZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions; + heap8[r0+84] = r1; + r3 = heapU8[r2]; +if(!(r3 !=0)) //_LBB475_2 +{ + r3 = _ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions; + r3 = r3 >> 2; + heap32[(r3)] = 1065353216; + heap32[(r3+1)] = 0; + heap32[(r3+2)] = 0; + heap32[(r3+3)] = 0; + heap32[(r3+4)] = 0; + heap32[(r3+5)] = 1065353216; + heap32[(r3+6)] = 0; + heap32[(r3+7)] = 0; + heap32[(r3+8)] = 0; + heap32[(r3+9)] = 0; + heap32[(r3+10)] = 1065353216; + heap32[(r3+11)] = 0; + heap32[(r3+12)] = -1082130432; + heap32[(r3+13)] = 0; + heap32[(r3+14)] = 0; + heap32[(r3+15)] = 0; + heap32[(r3+16)] = 0; + heap32[(r3+17)] = -1082130432; + heap32[(r3+18)] = 0; + heap32[(r3+19)] = 0; + heap32[(r3+20)] = 0; + heap32[(r3+21)] = 0; + heap32[(r3+22)] = -1082130432; + heap32[(r3+23)] = 0; + heap8[r2] = r1; +} + r1 = sp + -96; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = 96; + r2 = r0 >> 2; + memset(i7); + r3 = heap32[(r2)]; + r3 = r3 >> 2; + r3 = heap32[(r3+17)]; + r4 = _ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r1; + heap32[(g0+3)] = 6; + __FUNCTION_TABLE__[(r3)>>2](i7); + f0 = heapFloat[(fp+-24)]; + f1 = heapFloat[(r2+11)]; + f0 = f0+f1; + r0 = r1 >> 2; + heapFloat[(r2+17)] = f0; + f0 = heapFloat[(r0+12)]; + f0 = f0-f1; + heapFloat[(r2+13)] = f0; + f0 = heapFloat[(r0+5)]; + f0 = f0+f1; + heapFloat[(r2+18)] = f0; + f0 = heapFloat[(r0+17)]; + f0 = f0-f1; + heapFloat[(r2+14)] = f0; + f0 = heapFloat[(r0+10)]; + f0 = f0+f1; + heapFloat[(r2+19)] = f0; + f0 = heapFloat[(r0+22)]; + f0 = f0-f1; + heapFloat[(r2+15)] = f0; + return; +} + +function _ZNK13btSphereShape37localGetSupportingVertexWithoutMarginERK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + heap32[(r0)] = 0; + heap32[(r0+1)] = 0; + heap32[(r0+2)] = 0; + heap32[(r0+3)] = 0; + return; +} + +function _ZNK13btSphereShape7getNameEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = _2E_str342; + r_g0 = r0; + return; +} + +function _ZN13btSphereShape9setMarginEf(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + heap32[(r0+11)] = heap32[(fp+1)]; + return; +} + +function _ZNK13btSphereShape9getMarginEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var f0; + var f1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + f0 = heapFloat[(r0+7)]; + f1 = heapFloat[(r0+3)]; + f0 = f0*f1; + f_g0 = f0; + return; +} + +function _ZNK13btSphereShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+3)]; +if(!(r0 <1)) //_LBB480_3 +{ + r1 = heap32[(fp+2)]; + r1 = (r1 + 8)|0; +_3: while(true){ + r2 = r1 >> 2; + heap32[(r2+-2)] = 0; + heap32[(r2+-1)] = 0; + r0 = (r0 + -1)|0; + r1 = (r1 + 16)|0; + heap32[(r2)] = 0; + heap32[(r2+1)] = 0; + if(r0 !=0) //_LBB480_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + return; +} + +function _ZNK13btSphereShape7getAabbERK11btTransformR9btVector3S4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f0 = f_g0; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f1 = f_g0; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+11)]; + r2 = heap32[(fp+1)]; + heap32[(g0)] = r0; + r0 = r2 >> 2; + __FUNCTION_TABLE__[(r1)>>2](i7); + r1 = heap32[(fp+2)]; + f3 = heapFloat[(r0+14)]; + f4 = heapFloat[(r0+13)]; + f5 = heapFloat[(r0+12)]; + r1 = r1 >> 2; + f5 = f5-f_g0; + f4 = f4-f1; + heapFloat[(r1)] = f5; + f3 = f3-f0; + heapFloat[(r1+1)] = f4; + heapFloat[(r1+2)] = f3; + heap32[(r1+3)] = 0; + r1 = heap32[(fp+3)]; + f3 = heapFloat[(r0+14)]; + f4 = heapFloat[(r0+13)]; + f5 = heapFloat[(r0+12)]; + r0 = r1 >> 2; + f2 = f5+f_g0; + f1 = f4+f1; + heapFloat[(r0)] = f2; + f0 = f3+f0; + heapFloat[(r0+1)] = f1; + heapFloat[(r0+2)] = f0; + heap32[(r0+3)] = 0; + return; +} + +function _ZNK13btSphereShape21calculateLocalInertiaEfR9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+11)]; + f1 = heapFloat[(fp+1)]; + f2 = 0.40000000596046448; + f1 = f1*f2; + heap32[(g0)] = r0; + r0 = heap32[(fp+2)]; + f0 = f1*f_g0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = r0 >> 2; + f0 = f0*f_g0; + heapFloat[(r0)] = f0; + heapFloat[(r0+1)] = f0; + heapFloat[(r0+2)] = f0; + heap32[(r0+3)] = 0; + return; +} + +function _ZN13btSphereShapeD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV13btConvexShape; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; +if(!(r0 ==0)) //_LBB483_2 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + heap32[(r0)] = r1; + r0 = heap32[(r2+-1)]; + heap32[(g0)] = r0; + free(i7); +} + return; +} + +function _ZN13btSphereShapeD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV13btConvexShape; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZNK13btSphereShape24localGetSupportingVertexERK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; +var __label__ = 0; + i7 = sp + -32;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+16)]; + r3 = heap32[(fp+2)]; + r4 = sp + -16; + heap32[(g0)] = r4; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r3; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r4 >> 2; + r4 = heap32[(fp)]; + f0 = heapFloat[(fp+-4)]; + f1 = heapFloat[(r2+1)]; + f2 = heapFloat[(r2+2)]; + r4 = r4 >> 2; + r3 = r3 >> 2; + heap32[(r4+3)] = heap32[(r2+3)]; + f3 = heapFloat[(r3)]; + f4 = heapFloat[(r3+1)]; + f5 = heapFloat[(r3+2)]; + f6 = f3*f3; + f7 = f4*f4; + f6 = f6+f7; + f7 = f5*f5; + f6 = f6+f7; + f7 = 1.4210854715202004e-014; + f8 = -1; + f3 = f6 < f7 ? f8 : f3; + f4 = f6 < f7 ? f8 : f4; + f5 = f6 < f7 ? f8 : f5; + f6 = f3*f3; + f7 = f4*f4; + f6 = f6+f7; + f7 = f5*f5; + f6 = f6+f7; + heapFloat[(g0)] = f6; + sqrtf(i7); + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+11)]; + f7 = 1; + f6 = f7/f_g0; + heap32[(g0)] = r0; + f3 = f3*f6; + __FUNCTION_TABLE__[(r1)>>2](i7); + f4 = f4*f6; + f3 = f3*f_g0; + f5 = f5*f6; + f4 = f4*f_g0; + f0 = f0+f3; + f3 = f5*f_g0; + f1 = f1+f4; + heapFloat[(r4)] = f0; + f0 = f2+f3; + heapFloat[(r4+1)] = f1; + heapFloat[(r4+2)] = f0; + return; +} + +function _ZNK23btStridingMeshInterface14hasPremadeAabbEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 0; + r_g0 = r0; + return; +} + +function _ZNK23btStridingMeshInterface14setPremadeAabbERK9btVector3S2_(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZNK23btStridingMeshInterface14getPremadeAabbEP9btVector3S1_(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZNK23btStridingMeshInterface28calculateSerializeBufferSizeEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 28; + r_g0 = r0; + return; +} + +function _ZNK23btStridingMeshInterface9serializeEPvP12btSerializer(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; +var __label__ = 0; + i7 = sp + -72;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+7)]; + r3 = heap32[(fp+1)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r_g0; + r3 = r3 >> 2; + heap32[(r3+5)] = r2; + heap32[(r3)] = 0; +if(!(r2 ==0)) //_LBB490_32 +{ + r4 = heap32[(fp+2)]; + r5 = r4 >> 2; + r6 = heap32[(r5)]; + r6 = r6 >> 2; + r6 = heap32[(r6+4)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = 28; + heap32[(g0+2)] = r2; + __FUNCTION_TABLE__[(r6)>>2](i7); + r2 = r_g0; + r6 = heap32[(r5)]; + r6 = r6 >> 2; + r7 = r2 >> 2; + r7 = heap32[(r7+2)]; + r6 = heap32[(r6+7)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r7; + __FUNCTION_TABLE__[(r6)>>2](i7); + heap32[(r3)] = r_g0; + r6 = heap32[(r1)]; + r6 = r6 >> 2; + r6 = heap32[(r6+7)]; + heap32[(g0)] = r0; + r8 = 0; + __FUNCTION_TABLE__[(r6)>>2](i7); + r6 = r_g0; +_3: while(true){ + if(r8 > 2; + r9 = heap32[(r9+4)]; + r10 = sp + -4; + r11 = sp + -28; + r12 = sp + -16; + r13 = sp + -24; + r14 = sp + -8; + r15 = sp + -12; + r16 = sp + -32; + r17 = sp + -20; + heap32[(g0)] = r0; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r11; + heap32[(g0+3)] = r12; + heap32[(g0+4)] = r13; + heap32[(g0+5)] = r14; + heap32[(g0+6)] = r15; + heap32[(g0+7)] = r16; + heap32[(g0+8)] = r17; + heap32[(g0+9)] = r8; + __FUNCTION_TABLE__[(r9)>>2](i7); + r9 = r7 >> 2; + r10 = heap32[(fp+-8)]; + heap32[(r9+5)] = r10; + r10 = heap32[(fp+-7)]; + heap32[(r9+6)] = r10; + heap32[(r9+4)] = 0; + heap32[(r9+2)] = 0; + heap32[(r9+3)] = 0; + heap32[(r9)] = 0; + heap32[(r9+1)] = 0; + r10 = heap32[(fp+-5)]; + if(r10 ==3) //_LBB490_9 +{ + r10 = heap32[(fp+-8)]; +if(!(r10 ==0)) //_LBB490_15 +{ + r11 = heap32[(r5)]; + r11 = r11 >> 2; + r11 = heap32[(r11+4)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = 8; + heap32[(g0+2)] = r10; + __FUNCTION_TABLE__[(r11)>>2](i7); + r10 = r_g0; + r11 = heap32[(r5)]; + r11 = r11 >> 2; + r12 = r10 >> 2; + r12 = heap32[(r12+2)]; + r11 = heap32[(r11+7)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r12; + __FUNCTION_TABLE__[(r11)>>2](i7); + heap32[(r9+3)] = r_g0; + r11 = heap32[(fp+-8)]; +if(!(r11 <1)) //_LBB490_13 +{ + r11 = 0; +_11: while(true){ + r13 = heap32[(fp+-3)]; + r13 = (r13 * r11)|0; + r14 = heap32[(fp+-2)]; + r15 = heapU16[(r14+r13)>>1]; + r16 = r11 << 3; + r13 = (r14 + r13)|0; + heap16[(r12+r16)>>1] = r15; + r14 = (r12 + r16)|0; + r15 = heapU16[(r13+2)>>1]; + heap16[(r14+2)>>1] = r15; + r13 = heapU16[(r13+4)>>1]; + r11 = (r11 + 1)|0; + heap16[(r14+4)>>1] = r13; + r13 = heap32[(fp+-8)]; +if(!(r11 > 2; + r12 = r10 >> 2; + r11 = heap32[(r11+5)]; + r12 = heap32[(r12+2)]; + r13 = _2E_str1350; + heap32[(g0)] = r4; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r13; + heap32[(g0+3)] = 1497453121; + heap32[(g0+4)] = r12; + __FUNCTION_TABLE__[(r11)>>2](i7); +} +} +else{ + if(r10 !=2) //_LBB490_14 +{ +__label__ = 14; +break _3; +} +else{ + r10 = heap32[(fp+-8)]; + r10 = (r10 * 3)|0; +if(!(r10 ==0)) //_LBB490_15 +{ + r11 = heap32[(r5)]; + r11 = r11 >> 2; + r11 = heap32[(r11+4)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = 4; + heap32[(g0+2)] = r10; + __FUNCTION_TABLE__[(r11)>>2](i7); + r10 = r_g0; + r11 = heap32[(r5)]; + r11 = r11 >> 2; + r12 = r10 >> 2; + r12 = heap32[(r12+2)]; + r11 = heap32[(r11+7)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r12; + __FUNCTION_TABLE__[(r11)>>2](i7); + heap32[(r9+2)] = r_g0; + r11 = heap32[(fp+-8)]; +_17: do { +if(!(r11 <1)) //_LBB490_8 +{ + r11 = 0; +_19: while(true){ + r13 = heap32[(fp+-3)]; + r13 = (r13 * r11)|0; + r14 = heap32[(fp+-2)]; + r15 = (r11 * 3)|0; + r13 = (r14 + r13)|0; + r13 = r13 >> 2; + r14 = r15 << 2; + r14 = (r12 + r14)|0; + r15 = heap32[(r13)]; + r14 = r14 >> 2; + heap32[(r14)] = r15; + r15 = heap32[(r13+1)]; + heap32[(r14+1)] = r15; + r13 = heap32[(r13+2)]; + r11 = (r11 + 1)|0; + heap32[(r14+2)] = r13; + r13 = heap32[(fp+-8)]; +if(!(r11 > 2; + r12 = r10 >> 2; + r11 = heap32[(r11+5)]; + r12 = heap32[(r12+2)]; + r13 = _2E_str349; + heap32[(g0)] = r4; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r13; + heap32[(g0+3)] = 1497453121; + heap32[(g0+4)] = r12; + __FUNCTION_TABLE__[(r11)>>2](i7); +} +} +} + r10 = heap32[(fp+-4)]; +_23: do { + if(r10 ==1) //_LBB490_22 +{ + r10 = heap32[(fp+-7)]; + if(r10 ==0) //_LBB490_29 +{ +break _23; +} +else{ + r11 = heap32[(r5)]; + r11 = r11 >> 2; + r11 = heap32[(r11+4)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = 32; + heap32[(g0+2)] = r10; + __FUNCTION_TABLE__[(r11)>>2](i7); + r10 = r_g0; + r11 = heap32[(r5)]; + r11 = r11 >> 2; + r12 = r10 >> 2; + r12 = heap32[(r12+2)]; + r11 = heap32[(r11+7)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r12; + __FUNCTION_TABLE__[(r11)>>2](i7); + heap32[(r9+1)] = r_g0; + r9 = heap32[(fp+-7)]; +_26: do { +if(!(r9 <1)) //_LBB490_26 +{ + r11 = heap32[(fp+-1)]; + r13 = heap32[(fp+-6)]; + r11 = (r11 + 16)|0; + r14 = 0; +_28: while(true){ + r15 = r14 << 5; + r15 = (r12 + r15)|0; + llvm_move_double(r15,r11+-16); + r14 = (r14 + 1)|0; + r16 = (r11 + r13)|0; + llvm_move_double(r15+8,r11+-8); + llvm_move_double(r15+16,r11); + r11 = r16; +if(!(r14 > 2; + r11 = r10 >> 2; + r9 = heap32[(r9+5)]; + r11 = heap32[(r11+2)]; + r12 = _2E_str5354; + heap32[(g0)] = r4; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r12; + heap32[(g0+3)] = 1497453121; + heap32[(g0+4)] = r11; + __FUNCTION_TABLE__[(r9)>>2](i7); +} +} +else{ + if(r10 !=0) //_LBB490_27 +{ +if(!(uint(r10) > 2; + r11 = heap32[(r11+4)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = 16; + heap32[(g0+2)] = r10; + __FUNCTION_TABLE__[(r11)>>2](i7); + r10 = r_g0; + r11 = heap32[(r5)]; + r11 = r11 >> 2; + r12 = r10 >> 2; + r12 = heap32[(r12+2)]; + r11 = heap32[(r11+7)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r12; + __FUNCTION_TABLE__[(r11)>>2](i7); + heap32[(r9)] = r_g0; + r9 = heap32[(fp+-7)]; +_36: do { +if(!(r9 <1)) //_LBB490_21 +{ + r9 = 0; +_38: while(true){ + r11 = heap32[(fp+-6)]; + r13 = heap32[(fp+-1)]; + r11 = (r11 * r9)|0; + r14 = r9 << 4; + r14 = (r12 + r14)|0; + r11 = (r13 + r11)|0; + r13 = r14 >> 2; + r11 = r11 >> 2; + heap32[(r13)] = heap32[(r11)]; + r9 = (r9 + 1)|0; + heap32[(r13+1)] = heap32[(r11+1)]; + heap32[(r13+2)] = heap32[(r11+2)]; + r11 = heap32[(fp+-7)]; +if(!(r9 > 2; + r11 = r10 >> 2; + r9 = heap32[(r9+5)]; + r11 = heap32[(r11+2)]; + r12 = _2E_str5223; + heap32[(g0)] = r4; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r12; + heap32[(g0+3)] = 1497453121; + heap32[(g0+4)] = r11; + __FUNCTION_TABLE__[(r9)>>2](i7); +} +} +} +} while(0); + r9 = heap32[(r1)]; + r9 = r9 >> 2; + r9 = heap32[(r9+6)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r8; + r8 = (r8 + 1)|0; + r7 = (r7 + 28)|0; + __FUNCTION_TABLE__[(r9)>>2](i7); +} +else{ +__label__ = 31; +break _3; +} +} +switch(__label__ ){//multiple entries +case 31: + r0 = heap32[(r5)]; + r0 = r0 >> 2; + r5 = r2 >> 2; + r0 = heap32[(r0+5)]; + r5 = heap32[(r5+2)]; + r6 = _2E_str7356; + heap32[(g0)] = r4; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r6; + heap32[(g0+3)] = 1497453121; + heap32[(g0+4)] = r5; + __FUNCTION_TABLE__[(r0)>>2](i7); +break; +case 28: + r0 = _2E_str6355; + r1 = _2E_str3352; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 319; + _assert(i7); +break; +case 14: + r0 = _2E_str10; + r1 = _2E_str3352; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 271; + _assert(i7); +break; +} +} + heap32[(r3+1)] = heap32[(r1+1)]; + heap32[(r3+2)] = heap32[(r1+2)]; + heap32[(r3+3)] = heap32[(r1+3)]; + heap32[(r3+4)] = heap32[(r1+4)]; + r0 = _2E_str8357; + r_g0 = r0; + return; +} + +function _ZNK23btStridingMeshInterface27InternalProcessAllTrianglesEP31btInternalTriangleIndexCallbackRK9btVector3S4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + -120;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+7)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r_g0; + r3 = heap32[(fp+1)]; + f0 = heapFloat[(r1+1)]; + f1 = heapFloat[(r1+2)]; + f2 = heapFloat[(r1+3)]; + r4 = 0; +_1: while(true){ + if(r4 > 2; + r5 = heap32[(r5+4)]; + r6 = sp + -4; + r7 = sp + -28; + r8 = sp + -16; + r9 = sp + -24; + r10 = sp + -8; + r11 = sp + -12; + r12 = sp + -32; + r13 = sp + -20; + heap32[(g0)] = r0; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r7; + heap32[(g0+3)] = r8; + heap32[(g0+4)] = r9; + heap32[(g0+5)] = r10; + heap32[(g0+6)] = r11; + heap32[(g0+7)] = r12; + heap32[(g0+8)] = r13; + heap32[(g0+9)] = r4; + __FUNCTION_TABLE__[(r5)>>2](i7); + r5 = heap32[(fp+-4)]; +_4: do { + if(r5 ==1) //_LBB491_13 +{ + r5 = heap32[(fp+-5)]; + if(r5 ==3) //_LBB491_17 +{ + r5 = heap32[(fp+-8)]; + if(r5 <1) //_LBB491_25 +{ +break _4; +} +else{ + r5 = 0; +_9: while(true){ + r6 = heap32[(fp+-3)]; + r7 = heap32[(fp+-2)]; + r6 = (r6 * r5)|0; + r8 = heapU16[(r7+r6)>>1]; + r9 = heap32[(fp+-6)]; + r10 = heap32[(fp+-1)]; + r8 = (r8 * r9)|0; + r11 = (r10 + r8)|0; + f3 = llvm_readDouble((r10+r8)); + f4 = llvm_readDouble((r11+16)); + f5 = llvm_readDouble((r11+8)); + f3 = f3; //fdtos f3, f3 + r8 = sp + -80; + f5 = f5; //fdtos f5, f5 + f3 = f3*f0; + r11 = r8 >> 2; + f4 = f4; //fdtos f4, f4 + f5 = f5*f1; + heapFloat[(fp+-20)] = f3; + f3 = f4*f2; + heapFloat[(r11+1)] = f5; + heapFloat[(r11+2)] = f3; + r6 = (r7 + r6)|0; + heap32[(r11+3)] = 0; + r7 = heapU16[(r6+2)>>1]; + r7 = (r7 * r9)|0; + r12 = (r10 + r7)|0; + f3 = llvm_readDouble((r10+r7)); + f3 = f3; //fdtos f3, f3 + f4 = llvm_readDouble((r12+16)); + f5 = llvm_readDouble((r12+8)); + f5 = f5; //fdtos f5, f5 + f3 = f3*f0; + f4 = f4; //fdtos f4, f4 + f5 = f5*f1; + heapFloat[(r11+4)] = f3; + f3 = f4*f2; + heapFloat[(r11+5)] = f5; + heapFloat[(r11+6)] = f3; + heap32[(r11+7)] = 0; + r6 = heapU16[(r6+4)>>1]; + r6 = (r6 * r9)|0; + r7 = (r10 + r6)|0; + f3 = llvm_readDouble((r10+r6)); + f3 = f3; //fdtos f3, f3 + f4 = llvm_readDouble((r7+16)); + f5 = llvm_readDouble((r7+8)); + f5 = f5; //fdtos f5, f5 + f3 = f3*f0; + f4 = f4; //fdtos f4, f4 + f5 = f5*f1; + heapFloat[(r11+8)] = f3; + f3 = f4*f2; + heapFloat[(r11+9)] = f5; + heapFloat[(r11+10)] = f3; + r6 = r3 >> 2; + heap32[(r11+11)] = 0; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+2)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r5; + r5 = (r5 + 1)|0; + __FUNCTION_TABLE__[(r6)>>2](i7); + r6 = heap32[(fp+-8)]; + if(r5 > 2; + r7 = heap32[(r6)]; + r8 = heap32[(fp+-6)]; + r9 = heap32[(fp+-1)]; + r7 = (r8 * r7)|0; + r10 = (r9 + r7)|0; + f3 = llvm_readDouble((r9+r7)); + f4 = llvm_readDouble((r10+16)); + f5 = llvm_readDouble((r10+8)); + f3 = f3; //fdtos f3, f3 + r7 = sp + -80; + f5 = f5; //fdtos f5, f5 + f3 = f3*f0; + r10 = r7 >> 2; + f4 = f4; //fdtos f4, f4 + f5 = f5*f1; + heapFloat[(fp+-20)] = f3; + f3 = f4*f2; + heapFloat[(r10+1)] = f5; + heapFloat[(r10+2)] = f3; + heap32[(r10+3)] = 0; + r11 = heap32[(r6+1)]; + r11 = (r8 * r11)|0; + r12 = (r9 + r11)|0; + f3 = llvm_readDouble((r9+r11)); + f3 = f3; //fdtos f3, f3 + f4 = llvm_readDouble((r12+16)); + f5 = llvm_readDouble((r12+8)); + f5 = f5; //fdtos f5, f5 + f3 = f3*f0; + f4 = f4; //fdtos f4, f4 + f5 = f5*f1; + heapFloat[(r10+4)] = f3; + f3 = f4*f2; + heapFloat[(r10+5)] = f5; + heapFloat[(r10+6)] = f3; + heap32[(r10+7)] = 0; + r6 = heap32[(r6+2)]; + r6 = (r8 * r6)|0; + r8 = (r9 + r6)|0; + f3 = llvm_readDouble((r9+r6)); + f3 = f3; //fdtos f3, f3 + f4 = llvm_readDouble((r8+16)); + f5 = llvm_readDouble((r8+8)); + f5 = f5; //fdtos f5, f5 + f3 = f3*f0; + f4 = f4; //fdtos f4, f4 + f5 = f5*f1; + heapFloat[(r10+8)] = f3; + f3 = f4*f2; + heapFloat[(r10+9)] = f5; + heapFloat[(r10+10)] = f3; + r6 = r3 >> 2; + heap32[(r10+11)] = 0; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+2)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r5; + r5 = (r5 + 1)|0; + __FUNCTION_TABLE__[(r6)>>2](i7); + r6 = heap32[(fp+-8)]; + if(r5 >1]; + r9 = heap32[(fp+-6)]; + r10 = heap32[(fp+-1)]; + r8 = (r8 * r9)|0; + r8 = (r10 + r8)|0; + r8 = r8 >> 2; + f3 = heapFloat[(r8)]; + f4 = heapFloat[(r8+2)]; + f5 = heapFloat[(r8+1)]; + r8 = sp + -80; + f3 = f3*f0; + r11 = r8 >> 2; + f5 = f5*f1; + heapFloat[(fp+-20)] = f3; + f3 = f4*f2; + heapFloat[(r11+1)] = f5; + heapFloat[(r11+2)] = f3; + r6 = (r7 + r6)|0; + heap32[(r11+3)] = 0; + r7 = heapU16[(r6+2)>>1]; + r7 = (r7 * r9)|0; + r7 = (r10 + r7)|0; + r7 = r7 >> 2; + f3 = heapFloat[(r7+2)]; + f4 = heapFloat[(r7+1)]; + f5 = heapFloat[(r7)]; + f5 = f5*f0; + f4 = f4*f1; + heapFloat[(r11+4)] = f5; + f3 = f3*f2; + heapFloat[(r11+5)] = f4; + heapFloat[(r11+6)] = f3; + heap32[(r11+7)] = 0; + r6 = heapU16[(r6+4)>>1]; + r6 = (r6 * r9)|0; + r6 = (r10 + r6)|0; + r6 = r6 >> 2; + f3 = heapFloat[(r6+2)]; + f4 = heapFloat[(r6+1)]; + f5 = heapFloat[(r6)]; + f5 = f5*f0; + f4 = f4*f1; + heapFloat[(r11+8)] = f5; + f3 = f3*f2; + heapFloat[(r11+9)] = f4; + heapFloat[(r11+10)] = f3; + r6 = r3 >> 2; + heap32[(r11+11)] = 0; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+2)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r5; + r5 = (r5 + 1)|0; + __FUNCTION_TABLE__[(r6)>>2](i7); + r6 = heap32[(fp+-8)]; + if(r5 > 2; + r7 = heap32[(r6)]; + r8 = heap32[(fp+-6)]; + r9 = heap32[(fp+-1)]; + r7 = (r8 * r7)|0; + r7 = (r9 + r7)|0; + r7 = r7 >> 2; + f3 = heapFloat[(r7)]; + f4 = heapFloat[(r7+2)]; + f5 = heapFloat[(r7+1)]; + r7 = sp + -80; + f3 = f3*f0; + r10 = r7 >> 2; + f5 = f5*f1; + heapFloat[(fp+-20)] = f3; + f3 = f4*f2; + heapFloat[(r10+1)] = f5; + heapFloat[(r10+2)] = f3; + heap32[(r10+3)] = 0; + r11 = heap32[(r6+1)]; + r11 = (r8 * r11)|0; + r11 = (r9 + r11)|0; + r11 = r11 >> 2; + f3 = heapFloat[(r11+2)]; + f4 = heapFloat[(r11+1)]; + f5 = heapFloat[(r11)]; + f5 = f5*f0; + f4 = f4*f1; + heapFloat[(r10+4)] = f5; + f3 = f3*f2; + heapFloat[(r10+5)] = f4; + heapFloat[(r10+6)] = f3; + heap32[(r10+7)] = 0; + r6 = heap32[(r6+2)]; + r6 = (r8 * r6)|0; + r6 = (r9 + r6)|0; + r6 = r6 >> 2; + f3 = heapFloat[(r6+2)]; + f4 = heapFloat[(r6+1)]; + f5 = heapFloat[(r6)]; + f5 = f5*f0; + f4 = f4*f1; + heapFloat[(r10+8)] = f5; + f3 = f3*f2; + heapFloat[(r10+9)] = f4; + heapFloat[(r10+10)] = f3; + r6 = r3 >> 2; + heap32[(r10+11)] = 0; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+2)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r5; + r5 = (r5 + 1)|0; + __FUNCTION_TABLE__[(r6)>>2](i7); + r6 = heap32[(fp+-8)]; +if(!(r5 > 2; + r5 = heap32[(r5+6)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + r4 = (r4 + 1)|0; + __FUNCTION_TABLE__[(r5)>>2](i7); +continue _1; +} +else{ +__label__ = 27; +break _1; +} +} +switch(__label__ ){//multiple entries +case 27: + return; +break; +case 22: + r0 = _2E_str9358; + r1 = _2E_str3352; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 134; + _assert(i7); +break; +case 24: + r0 = _2E_str6355; + r1 = _2E_str3352; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 139; + _assert(i7); +break; +case 12: + r0 = _2E_str9358; + r1 = _2E_str3352; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 92; + _assert(i7); +break; +} +} + +function _ZN23btStridingMeshInterfaceD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV23btStridingMeshInterface; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN23btStridingMeshInterfaceD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV23btStridingMeshInterface; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN31btInternalTriangleIndexCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV31btInternalTriangleIndexCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN31btInternalTriangleIndexCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV31btInternalTriangleIndexCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN18btTriangleCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV18btTriangleCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN18btTriangleCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV18btTriangleCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN26btTriangleIndexVertexArray16unLockVertexBaseEi(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZNK26btTriangleIndexVertexArray24unLockReadOnlyVertexBaseEi(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN26btTriangleIndexVertexArray19preallocateVerticesEi(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN26btTriangleIndexVertexArray18preallocateIndicesEi(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZNK26btTriangleIndexVertexArray14hasPremadeAabbEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+12)]; + r1 = 1; + r0 = r0 == r1; + r0 = r0 & 1; + r_g0 = r0; + return; +} + +function _ZNK26btTriangleIndexVertexArray14setPremadeAabbERK9btVector3S2_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = r1 >> 2; + heap32[(r0+13)] = heap32[(r1)]; + heap32[(r0+14)] = heap32[(r1+1)]; + r2 = heap32[(fp+2)]; + heap32[(r0+15)] = heap32[(r1+2)]; + r2 = r2 >> 2; + heap32[(r0+16)] = heap32[(r1+3)]; + heap32[(r0+17)] = heap32[(r2)]; + heap32[(r0+18)] = heap32[(r2+1)]; + heap32[(r0+19)] = heap32[(r2+2)]; + heap32[(r0+20)] = heap32[(r2+3)]; + heap32[(r0+12)] = 1; + return; +} + +function _ZNK26btTriangleIndexVertexArray14getPremadeAabbEP9btVector3S1_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = r1 >> 2; + heap32[(r1)] = heap32[(r0+13)]; + heap32[(r1+1)] = heap32[(r0+14)]; + r2 = heap32[(fp+2)]; + heap32[(r1+2)] = heap32[(r0+15)]; + r2 = r2 >> 2; + heap32[(r1+3)] = heap32[(r0+16)]; + heap32[(r2)] = heap32[(r0+17)]; + heap32[(r2+1)] = heap32[(r0+18)]; + heap32[(r2+2)] = heap32[(r0+19)]; + heap32[(r2+3)] = heap32[(r0+20)]; + return; +} + +function _ZNK26btTriangleIndexVertexArray14getNumSubPartsEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+6)]; + r_g0 = r0; + return; +} + +function _ZNK26btTriangleIndexVertexArray32getLockedReadOnlyVertexIndexBaseEPPKhRiR14PHY_ScalarTypeS3_S2_S3_S3_S5_i(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+9)]; + r0 = r0 >> 2; + r1 = r1 << 5; + r0 = heap32[(r0+8)]; + r0 = (r0 + r1)|0; + r0 = r0 >> 2; + r1 = heap32[(fp+2)]; + r2 = heap32[(r0+3)]; + r1 = r1 >> 2; + r3 = heap32[(fp+1)]; + heap32[(r1)] = r2; + r1 = r3 >> 2; + r2 = heap32[(r0+4)]; + r3 = heap32[(fp+3)]; + heap32[(r1)] = r2; + r1 = r3 >> 2; + r2 = heap32[(r0+7)]; + r3 = heap32[(fp+4)]; + heap32[(r1)] = r2; + r1 = r3 >> 2; + r2 = heap32[(r0+5)]; + r3 = heap32[(fp+7)]; + heap32[(r1)] = r2; + r1 = r3 >> 2; + r2 = heap32[(r0)]; + r3 = heap32[(fp+5)]; + heap32[(r1)] = r2; + r1 = r3 >> 2; + r2 = heap32[(r0+1)]; + r3 = heap32[(fp+6)]; + heap32[(r1)] = r2; + r1 = r3 >> 2; + r2 = heap32[(r0+2)]; + r3 = heap32[(fp+8)]; + heap32[(r1)] = r2; + r1 = r3 >> 2; + r0 = heap32[(r0+6)]; + heap32[(r1)] = r0; + return; +} + +function _ZN26btTriangleIndexVertexArray24getLockedVertexIndexBaseEPPhRiR14PHY_ScalarTypeS2_S1_S2_S2_S4_i(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+7)]; + r3 = heap32[(fp+9)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r0 = r_g0; + if(r0 >r3) //_LBB507_2 +{ + r0 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r4 = heap32[(fp+3)]; + r5 = heap32[(fp+4)]; + r6 = heap32[(fp+5)]; + r7 = heap32[(fp+6)]; + r8 = heap32[(fp+7)]; + r9 = heap32[(fp+8)]; + r3 = r3 << 5; + r1 = heap32[(r1+8)]; + r1 = (r1 + r3)|0; + r1 = r1 >> 2; + r3 = heap32[(r1+3)]; + r2 = r2 >> 2; + heap32[(r2)] = r3; + r0 = r0 >> 2; + r2 = heap32[(r1+4)]; + heap32[(r0)] = r2; + r0 = r4 >> 2; + r2 = heap32[(r1+7)]; + heap32[(r0)] = r2; + r0 = r5 >> 2; + r2 = heap32[(r1+5)]; + heap32[(r0)] = r2; + r0 = r8 >> 2; + r2 = heap32[(r1)]; + heap32[(r0)] = r2; + r0 = r6 >> 2; + r2 = heap32[(r1+1)]; + heap32[(r0)] = r2; + r0 = r7 >> 2; + r2 = heap32[(r1+2)]; + heap32[(r0)] = r2; + r0 = r9 >> 2; + r1 = heap32[(r1+6)]; + heap32[(r0)] = r1; + return; +} +else{ + r1 = _2E_str367; + r3 = _2E_str1368; + heap32[(g0)] = r1; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = 41; + _assert(i7); +} +} + +function _ZN26btTriangleIndexVertexArrayD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV26btTriangleIndexVertexArray; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+8)]; +if(!(r1 ==0)) //_LBB508_4 +{ + r3 = heapU8[r0+36]; +if(!(r3 ==0)) //_LBB508_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+8)] = 0; +} + r1 = 1; + heap8[r0+36] = r1; + heap32[(r2+8)] = 0; + r1 = _ZTV23btStridingMeshInterface; + heap32[(r2+6)] = 0; + r1 = (r1 + 8)|0; + heap32[(r2+7)] = 0; + heap32[(r2)] = r1; +if(!(r0 ==0)) //_LBB508_6 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + heap32[(r0)] = r1; + r0 = heap32[(r2+-1)]; + heap32[(g0)] = r0; + free(i7); +} + return; +} + +function _ZN26btTriangleIndexVertexArrayD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV26btTriangleIndexVertexArray; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+8)]; +if(!(r1 ==0)) //_LBB509_4 +{ + r3 = heapU8[r0+36]; +if(!(r3 ==0)) //_LBB509_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+8)] = 0; +} + r1 = 1; + heap8[r0+36] = r1; + heap32[(r2+8)] = 0; + r0 = _ZTV23btStridingMeshInterface; + heap32[(r2+6)] = 0; + r0 = (r0 + 8)|0; + heap32[(r2+7)] = 0; + heap32[(r2)] = r0; + return; +} + +function _ZNK19btTriangleMeshShape7getNameEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = _2E_str372; + r_g0 = r0; + return; +} + +function _ZNK19btTriangleMeshShape7getAabbERK11btTransformR9btVector3S4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + f0 = heapFloat[(r1+10)]; + f1 = heapFloat[(r1+6)]; + f2 = heapFloat[(r1+9)]; + f3 = heapFloat[(r1+5)]; + f4 = heapFloat[(r1+8)]; + f5 = heapFloat[(r1+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f6 = f_g0; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + f7 = f_g0; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+11)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r0 = heap32[(fp+1)]; + f4 = f4-f5; + f5 = 0.5; + f2 = f2-f3; + f0 = f0-f1; + f1 = heapFloat[(r1+10)]; + f3 = heapFloat[(r1+6)]; + f9 = heapFloat[(r1+9)]; + f10 = heapFloat[(r1+5)]; + f11 = heapFloat[(r1+8)]; + f12 = heapFloat[(r1+4)]; + r0 = r0 >> 2; + f4 = f4*f5; + f2 = f2*f5; + f0 = f0*f5; + f1 = f1+f3; + f3 = f9+f10; + f9 = f11+f12; + f10 = heapFloat[(r0+10)]; + r1 = heap32[(fp+2)]; + r2 = heap32[(fp+3)]; + f4 = f4+f_g0; + f2 = f2+f7; + f0 = f0+f6; + f1 = f1*f5; + f3 = f3*f5; + f5 = f9*f5; + f6 = 0; + if(f10 > 2; + f2 = f4+f2; + f0 = f7*f0; + f3 = f5+f8; + f4 = f10+f11; + f5 = f12-f6; + f1 = f1+f9; + f0 = f2+f0; + f2 = f3-f4; + heapFloat[(r0)] = f5; + f5 = f1-f0; + heapFloat[(r0+1)] = f2; + heapFloat[(r0+2)] = f5; + r1 = r2 >> 2; + f2 = f12+f6; + heap32[(r0+3)] = 0; + f3 = f3+f4; + heapFloat[(r1)] = f2; + f0 = f1+f0; + heapFloat[(r1+1)] = f3; + heapFloat[(r1+2)] = f0; + heap32[(r1+3)] = 0; + return; +} + +function _ZN19btTriangleMeshShape15recalcLocalAabbEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var f0; + var f1; +var __label__ = 0; + i7 = sp + -64;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = 0; +_1: while(true){ + r2 = sp + -16; + r3 = r2 >> 2; + heap32[(fp+-4)] = 0; + heap32[(r3+1)] = 0; + heap32[(r3+2)] = 0; + r4 = (r2 + r1)|0; + heap32[(r3+3)] = 0; + r3 = r4 >> 2; + heap32[(r3)] = 1065353216; + r4 = r0 >> 2; + r5 = heap32[(r4)]; + r5 = r5 >> 2; + r5 = heap32[(r5+16)]; + r6 = sp + -32; + heap32[(g0)] = r6; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r2; + r7 = (r6 + r1)|0; + __FUNCTION_TABLE__[(r5)>>2](i7); + r5 = r7 >> 2; + r7 = (r0 + r1)|0; + f0 = heapFloat[(r5)]; + f1 = heapFloat[(r4+3)]; + f0 = f0+f1; + r7 = r7 >> 2; + heapFloat[(r7+8)] = f0; + heap32[(r3)] = -1082130432; + r3 = heap32[(r4)]; + r3 = r3 >> 2; + r3 = heap32[(r3+16)]; + r8 = sp + -48; + heap32[(g0)] = r8; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r2; + __FUNCTION_TABLE__[(r3)>>2](i7); + r2 = r6 >> 2; + r3 = r8 >> 2; + heap32[(fp+-8)] = heap32[(fp+-12)]; + heap32[(r2+1)] = heap32[(r3+1)]; + heap32[(r2+2)] = heap32[(r3+2)]; + heap32[(r2+3)] = heap32[(r3+3)]; + f0 = heapFloat[(r5)]; + f1 = heapFloat[(r4+3)]; + r1 = (r1 + 4)|0; + f0 = f0-f1; + heapFloat[(r7+4)] = f0; + if(r1 !=12) //_LBB512_1 +{ +continue _1; +} +else{ +break _1; +} +} + return; +} + +function _ZN21SupportVertexCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV18btTriangleCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN21SupportVertexCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV18btTriangleCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN21SupportVertexCallback15processTriangleEP9btVector3ii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r1 = r1 >> 2; + r0 = r0 >> 2; + f0 = heapFloat[(r1+22)]; + f1 = heapFloat[(r0)]; + f2 = heapFloat[(r1+23)]; + f3 = heapFloat[(r0+1)]; + f4 = heapFloat[(r1+24)]; + f5 = heapFloat[(r0+2)]; + f1 = f0*f1; + f3 = f2*f3; + f1 = f1+f3; + f3 = f4*f5; + f5 = heapFloat[(r1+21)]; + f1 = f1+f3; + if(f5 >2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(fp+1)]; + r1 = heap32[(r1+12)]; + r1 = r1 >> 2; + r2 = r2 >> 2; + heap32[(r1+1)] = heap32[(r2)]; + heap32[(r1+2)] = heap32[(r2+1)]; + heap32[(r1+3)] = heap32[(r2+2)]; + heap32[(r1+4)] = heap32[(r2+3)]; + heap32[(g0)] = r0; + _ZN19btTriangleMeshShape15recalcLocalAabbEv(i7); + return; +} + +function _ZNK19btTriangleMeshShape15getLocalScalingEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+12)]; + r0 = (r0 + 4)|0; + r_g0 = r0; + return; +} + +function _ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV31btInternalTriangleIndexCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV31btInternalTriangleIndexCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallback28internalProcessTriangleIndexEPS2_ii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var f0; + var f1; + var f2; + var f3; + var f4; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = r0 >> 2; + r2 = heap32[(fp)]; + f0 = heapFloat[(r1)]; + f1 = heapFloat[(r1+4)]; + f2 = heapFloat[(r1+8)]; + f3 = f0 < f1 ? f0 : f1; + r2 = r2 >> 2; + f3 = f3 < f2 ? f3 : f2; + f4 = heapFloat[(r2+6)]; +if(!(f3 >f4)) //_LBB520_7 +{ + f0 = f0 > f1 ? f0 : f1; + f0 = f0 > f2 ? f0 : f2; + f1 = heapFloat[(r2+2)]; +if(!(f0 f4)) //_LBB520_7 +{ + f0 = f0 > f1 ? f0 : f1; + f0 = f0 > f2 ? f0 : f2; + f1 = heapFloat[(r2+4)]; +if(!(f0 f4)) //_LBB520_7 +{ + f0 = f0 > f1 ? f0 : f1; + f0 = f0 > f2 ? f0 : f2; + f1 = heapFloat[(r2+3)]; +if(!(f0 > 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+2)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r1; + heap32[(g0+3)] = r3; + __FUNCTION_TABLE__[(r4)>>2](i7); +} +} +} +} +} +} + return; +} + +function _ZNK19btTriangleMeshShape21calculateLocalInertiaEfR9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = _2E_str10; + r1 = _2E_str3375; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 188; + _assert(i7); +} + +function _ZNK19btTriangleMeshShape24localGetSupportingVertexERK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + -152;var g0 = i7>>2; // save stack + r0 = _ZTV21SupportVertexCallback; + r1 = sp + -120; + r0 = (r0 + 8)|0; + r2 = r1 >> 2; + heap32[(fp+-30)] = r0; + heap32[(r2+1)] = 0; + heap32[(r2+2)] = 0; + heap32[(r2+3)] = 0; + heap32[(r2+4)] = 0; + heap32[(r2+5)] = 1065353216; + heap32[(r2+6)] = 0; + heap32[(r2+7)] = 0; + heap32[(r2+8)] = 0; + heap32[(r2+9)] = 0; + heap32[(r2+10)] = 1065353216; + heap32[(r2+11)] = 0; + heap32[(r2+12)] = 0; + heap32[(r2+13)] = 0; + heap32[(r2+14)] = 0; + heap32[(r2+15)] = 1065353216; + heap32[(r2+16)] = 0; + heap32[(r2+17)] = 0; + heap32[(r2+18)] = 0; + heap32[(r2+19)] = 0; + r0 = heap32[(fp+2)]; + heap32[(r2+20)] = 0; + r0 = r0 >> 2; + heap32[(r2+21)] = -581039253; + f0 = 0; + f1 = heapFloat[(r0+1)]; + f2 = heapFloat[(r0)]; + f3 = heapFloat[(r0+2)]; + f4 = f1*f0; + f5 = f2*f0; + f2 = f2+f4; + f0 = f3*f0; + f1 = f5+f1; + f2 = f2+f0; + f4 = f5+f4; + f0 = f1+f0; + heapFloat[(r2+22)] = f2; + f1 = f4+f3; + heapFloat[(r2+23)] = f0; + heapFloat[(r2+24)] = f1; + r0 = sp + -136; + heap32[(r2+25)] = 0; + r3 = r0 >> 2; + heap32[(fp+-34)] = 1566444395; + heap32[(r3+1)] = 1566444395; + r4 = heap32[(fp+1)]; + heap32[(r3+2)] = 1566444395; + r5 = r4 >> 2; + heap32[(r3+3)] = 0; + r3 = heap32[(r5)]; + r3 = r3 >> 2; + r3 = heap32[(r3+15)]; + r5 = sp + -16; + r6 = r5 >> 2; + heap32[(fp+-4)] = -581039253; + heap32[(r6+1)] = -581039253; + heap32[(r6+2)] = -581039253; + heap32[(r6+3)] = 0; + heap32[(g0)] = r4; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r0; + __FUNCTION_TABLE__[(r3)>>2](i7); + r0 = heap32[(fp)]; + f0 = heapFloat[(r2+4)]; + f1 = heapFloat[(r2+3)]; + f2 = heapFloat[(r2+2)]; + r0 = r0 >> 2; + heap32[(r0)] = heap32[(r2+1)]; + heapFloat[(r0+1)] = f2; + heapFloat[(r0+2)] = f1; + heapFloat[(r0+3)] = f0; + return; +} + +function _ZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -56;var g0 = i7>>2; // save stack + r0 = _ZTVZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback; + r1 = sp + -40; + r0 = (r0 + 8)|0; + r2 = heap32[(fp+2)]; + r3 = r1 >> 2; + r4 = heap32[(fp+1)]; + heap32[(fp+-10)] = r0; + r0 = r2 >> 2; + heap32[(r3+1)] = r4; + heap32[(r3+2)] = heap32[(r0)]; + heap32[(r3+3)] = heap32[(r0+1)]; + r4 = heap32[(fp+3)]; + heap32[(r3+4)] = heap32[(r0+2)]; + r5 = r4 >> 2; + heap32[(r3+5)] = heap32[(r0+3)]; + heap32[(r3+6)] = heap32[(r5)]; + heap32[(r3+7)] = heap32[(r5+1)]; + r0 = heap32[(fp)]; + heap32[(r3+8)] = heap32[(r5+2)]; + r0 = r0 >> 2; + heap32[(r3+9)] = heap32[(r5+3)]; + r0 = heap32[(r0+12)]; + r3 = r0 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+2)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r4; + __FUNCTION_TABLE__[(r3)>>2](i7); + return; +} + +function _ZN19btTriangleMeshShapeD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV14btConcaveShape; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN19btTriangleMeshShapeD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV14btConcaveShape; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _GLOBAL__D__ZN19btGenericMemoryPool24allocate_from_free_nodesEj(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN16btPointCollectorD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV16btPointCollector; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN16btPointCollectorD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV16btPointCollector; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN16btPointCollector20setShapeIdentifiersAEii(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN16btPointCollector20setShapeIdentifiersBEii(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN16btPointCollector15addContactPointERK9btVector3S2_f(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var f0; + var f1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + f0 = heapFloat[(fp+3)]; + r1 = r0 >> 2; + f1 = heapFloat[(r1+9)]; +if(!(f1 <=f0)) //_LBB531_2 +{ + r2 = heap32[(fp+1)]; + r3 = heap32[(fp+2)]; + r4 = 1; + r2 = r2 >> 2; + heap8[r0+40] = r4; + heap32[(r1+1)] = heap32[(r2)]; + heap32[(r1+2)] = heap32[(r2+1)]; + heap32[(r1+3)] = heap32[(r2+2)]; + r0 = r3 >> 2; + heap32[(r1+4)] = heap32[(r2+3)]; + heap32[(r1+5)] = heap32[(r0)]; + heap32[(r1+6)] = heap32[(r0+1)]; + heap32[(r1+7)] = heap32[(r0+2)]; + heap32[(r1+8)] = heap32[(r0+3)]; + heapFloat[(r1+9)] = f0; +} + return; +} + +function _ZN27btContinuousConvexCollisionD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV12btConvexCast; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN27btContinuousConvexCollisionD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV12btConvexCast; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN27btContinuousConvexCollision16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var r19; + var r20; + var r21; + var r22; + var r23; + var r24; + var r25; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; +var __label__ = 0; + i7 = sp + -816;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+1)]; + r2 = 0; + r3 = r1 >> 2; + heap8[r1+312] = r2; + r4 = 1; + heap32[(r3)] = 0; + heap8[r1+356] = r4; + heap32[(r3+73)] = 1566444395; + heap32[(r3+74)] = 1566444395; + heap32[(r3+75)] = 1566444395; + heap32[(r3+76)] = 0; + heap8[r1+352] = r2; + heap32[(r3+84)] = 0; + heap32[(r3+85)] = 0; + heap32[(r3+86)] = 0; + heap32[(r3+87)] = 0; + r3 = heapU8[r1+332]; + r5 = heap32[(fp+1)]; + r6 = heap32[(fp+2)]; + r3 = r3 & 240; + r7 = r6 >> 2; + heap8[r1+332] = r3; + r1 = r5 >> 2; + f0 = heapFloat[(r7+14)]; + f1 = heapFloat[(r1+14)]; + f2 = heapFloat[(r7+13)]; + f3 = heapFloat[(r1+13)]; + f4 = heapFloat[(r7+12)]; + f5 = heapFloat[(r1+12)]; + r3 = sp + -40; + r7 = sp + -44; + heap32[(g0)] = r5; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = r7; + _ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(i7); + r3 = r3 >> 2; + f6 = heapFloat[(r3+2)]; + f7 = heapFloat[(fp+-11)]; + f8 = heapFloat[(r3+1)]; + f9 = heapFloat[(fp+-10)]; + r3 = sp + -96; + f9 = f9*f7; + f8 = f8*f7; + r6 = r3 >> 2; + heapFloat[(fp+-24)] = f9; + f6 = f6*f7; + heapFloat[(r6+1)] = f8; + r7 = heap32[(fp+3)]; + r8 = heap32[(fp+4)]; + heapFloat[(r6+2)] = f6; + r9 = r8 >> 2; + heap32[(r6+3)] = 0; + r6 = r7 >> 2; + f7 = heapFloat[(r9+14)]; + f10 = heapFloat[(r6+14)]; + f11 = heapFloat[(r9+13)]; + f12 = heapFloat[(r6+13)]; + f13 = heapFloat[(r9+12)]; + f14 = heapFloat[(r6+12)]; + r9 = sp + -16; + r10 = sp + -20; + heap32[(g0)] = r7; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r9; + heap32[(g0+3)] = r10; + _ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(i7); + r8 = r9 >> 2; + f15 = heapFloat[(r8+2)]; + f16 = heapFloat[(fp+-5)]; + f17 = heapFloat[(r8+1)]; + f18 = heapFloat[(fp+-4)]; + r8 = sp + -112; + f18 = f18*f16; + f17 = f17*f16; + r9 = r8 >> 2; + heapFloat[(fp+-28)] = f18; + f15 = f15*f16; + heapFloat[(r9+1)] = f17; + heapFloat[(r9+2)] = f15; + heap32[(r9+3)] = 0; + r9 = heap32[(r0+3)]; + r10 = r9 >> 2; + r10 = heap32[(r10)]; + r10 = r10 >> 2; + r10 = heap32[(r10+4)]; + heap32[(g0)] = r9; + __FUNCTION_TABLE__[(r10)>>2](i7); + f16 = f_g0; + r9 = heap32[(r0+4)]; + r10 = r9 >> 2; + r10 = heap32[(r10)]; + r10 = r10 >> 2; + r10 = heap32[(r10+4)]; + heap32[(g0)] = r9; + f9 = f9*f9; + f8 = f8*f8; + __FUNCTION_TABLE__[(r10)>>2](i7); + f19 = f_g0; + f8 = f9+f8; + f6 = f6*f6; + f6 = f8+f6; + heapFloat[(g0)] = f6; + f6 = f18*f18; + f8 = f17*f17; + sqrtf(i7); + f9 = f_g0; + f11 = f11-f12; + f2 = f2-f3; + f3 = f13-f14; + f4 = f4-f5; + f5 = f6+f8; + f6 = f15*f15; + f8 = f11-f2; + f12 = f3-f4; + f7 = f7-f10; + f0 = f0-f1; + f1 = f5+f6; + f5 = f7-f0; + heapFloat[(g0)] = f1; + f1 = f12*f12; + f6 = f8*f8; + sqrtf(i7); + f1 = f1+f6; + f6 = f5*f5; + f1 = f1+f6; + f6 = f9*f16; + f9 = f_g0*f19; + heapFloat[(g0)] = f1; + f1 = f6+f9; + sqrtf(i7); + f6 = f_g0+f1; + f9 = 0; +_1: do { +if(!(f6 ==f9)) //_LBB534_21 +{ + r9 = _ZTV16btPointCollector; + r9 = (r9 + 8)|0; + r10 = sp + -176; + heap32[(fp+-44)] = r9; + r11 = r10 >> 2; + heap32[(r11+9)] = 1566444395; + heap8[sp+-136] = r2; + r12 = heap32[(r0+4)]; + r13 = r12 >> 2; + r13 = heap32[(r13)]; + r13 = r13 >> 2; + r13 = heap32[(r13+11)]; + r14 = heap32[(r0+2)]; + r15 = heap32[(r0+1)]; + heap32[(g0)] = r12; + __FUNCTION_TABLE__[(r13)>>2](i7); + f6 = f_g0; + r12 = heap32[(r0+3)]; + r13 = r12 >> 2; + r13 = heap32[(r13)]; + r13 = r13 >> 2; + r13 = heap32[(r13+11)]; + heap32[(g0)] = r12; + __FUNCTION_TABLE__[(r13)>>2](i7); + r12 = heap32[(r0+4)]; + r13 = heap32[(r0+3)]; + r16 = r12 >> 2; + r17 = r13 >> 2; + r18 = _ZTV17btGjkPairDetector; + r16 = heap32[(r16+1)]; + r17 = heap32[(r17+1)]; + r19 = sp + -256; + r18 = (r18 + 8)|0; + r20 = r19 >> 2; + heap32[(fp+-64)] = r18; + heap32[(r20+1)] = 0; + heap32[(r20+2)] = 1065353216; + heap32[(r20+3)] = 0; + heap32[(r20+4)] = 0; + heap32[(r20+5)] = r14; + heap32[(r20+6)] = r15; + heap32[(r20+7)] = r13; + heap32[(r20+8)] = r12; + heap32[(r20+9)] = r17; + heap32[(r20+10)] = r16; + heapFloat[(r20+11)] = f_g0; + heapFloat[(r20+12)] = f6; + heap8[sp+-204] = r2; + r12 = sp + -392; + heap32[(r20+15)] = -1; + r13 = r12 >> 2; + heap32[(r20+18)] = 1; + heap32[(r13+32)] = 1566444395; + heap32[(r13+33)] = 0; + heap32[(fp+-98)] = heap32[(r1)]; + heap32[(r13+1)] = heap32[(r1+1)]; + heap32[(r13+2)] = heap32[(r1+2)]; + heap32[(r13+3)] = heap32[(r1+3)]; + heap32[(r13+4)] = heap32[(r1+4)]; + heap32[(r13+5)] = heap32[(r1+5)]; + heap32[(r13+6)] = heap32[(r1+6)]; + heap32[(r13+7)] = heap32[(r1+7)]; + heap32[(r13+8)] = heap32[(r1+8)]; + heap32[(r13+9)] = heap32[(r1+9)]; + heap32[(r13+10)] = heap32[(r1+10)]; + heap32[(r13+11)] = heap32[(r1+11)]; + heap32[(r13+12)] = heap32[(r1+12)]; + heap32[(r13+13)] = heap32[(r1+13)]; + heap32[(r13+14)] = heap32[(r1+14)]; + heap32[(r13+15)] = heap32[(r1+15)]; + heap32[(r13+16)] = heap32[(r6)]; + heap32[(r13+17)] = heap32[(r6+1)]; + heap32[(r13+18)] = heap32[(r6+2)]; + heap32[(r13+19)] = heap32[(r6+3)]; + heap32[(r13+20)] = heap32[(r6+4)]; + heap32[(r13+21)] = heap32[(r6+5)]; + heap32[(r13+22)] = heap32[(r6+6)]; + heap32[(r13+23)] = heap32[(r6+7)]; + heap32[(r13+24)] = heap32[(r6+8)]; + heap32[(r13+25)] = heap32[(r6+9)]; + heap32[(r13+26)] = heap32[(r6+10)]; + heap32[(r13+27)] = heap32[(r6+11)]; + heap32[(r13+28)] = heap32[(r6+12)]; + heap32[(r13+29)] = heap32[(r6+13)]; + heap32[(r13+30)] = heap32[(r6+14)]; + heap32[(r13+31)] = heap32[(r6+15)]; + heap32[(g0)] = r19; + heap32[(g0+1)] = r12; + heap32[(g0+2)] = r10; + heap32[(g0+3)] = 0; + heap32[(g0+4)] = 0; + _ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(i7); + f6 = heapFloat[(r11+5)]; + r1 = heapU8[sp+-136]; + r6 = sp + -128; + heapFloat[(fp+-32)] = f6; + f10 = heapFloat[(r11+6)]; + r10 = r6 >> 2; + heapFloat[(r10+1)] = f10; + f13 = heapFloat[(r11+7)]; + heapFloat[(r10+2)] = f13; + f14 = heapFloat[(r11+8)]; + heapFloat[(r10+3)] = f14; +if(!(r1 ==0)) //_LBB534_21 +{ + r1 = heap32[(fp+5)]; + f15 = heapFloat[(r11+1)]; + f16 = heapFloat[(r11+2)]; + f17 = heapFloat[(r11+3)]; + f18 = f12*f15; + f19 = f8*f16; + r12 = sp + -456; + f18 = f18+f19; + f19 = f5*f17; + f20 = heapFloat[(r11+9)]; + f21 = heapFloat[(r11+4)]; + f18 = f18+f19; + r11 = (r12 + 48)|0; +_4: while(true){ + f19 = 0.0010000000474974513; + if(f20 >f19) //_LBB534_3 +{ + r13 = r1 >> 2; + r14 = heap32[(r13+42)]; +if(!(r14 ==0)) //_LBB534_5 +{ + r15 = r14 >> 2; + r15 = heap32[(r15)]; + r15 = r15 >> 2; + r15 = heap32[(r15+5)]; + r16 = sp + -80; + r17 = r16 >> 2; + heap32[(fp+-20)] = 1065353216; + heap32[(r17+1)] = 1065353216; + heap32[(r17+2)] = 1065353216; + heap32[(r17+3)] = 0; + heap32[(g0)] = r14; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = 1045220557; + heap32[(g0+3)] = r16; + __FUNCTION_TABLE__[(r15)>>2](i7); +} + r2 = (r2 + 1)|0; + if(r2 >64) //_LBB534_21 +{ +break _1; +} +else{ + f6 = f12*f15; + f10 = f8*f16; + f6 = f6+f10; + f10 = f5*f17; + f18 = f6+f10; + f6 = f18+f1; + f10 = 1.1920928955078125e-007; + if(f6 <=f10) //_LBB534_21 +{ +break _1; +} +else{ + f6 = f20/f6; + f19 = f9+f6; + f6 = 0; + if(f19 f10) //_LBB534_21 +{ +break _1; +} +else{ + if(f19 <=f9) //_LBB534_21 +{ +break _1; +} +else{ + heap32[(g0)] = r5; + heapFloat[(g0+1)] = f4; + heapFloat[(g0+2)] = f2; + heapFloat[(g0+3)] = f0; + heap32[(g0+4)] = r3; + heapFloat[(g0+5)] = f19; + heap32[(g0+6)] = r12; + _ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(i7); + r14 = sp + -520; + heap32[(g0)] = r7; + heapFloat[(g0+1)] = f3; + heapFloat[(g0+2)] = f11; + heapFloat[(g0+3)] = f7; + heap32[(g0+4)] = r8; + heapFloat[(g0+5)] = f19; + heap32[(g0+6)] = r14; + _ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(i7); + r15 = heap32[(r13+42)]; +if(!(r15 ==0)) //_LBB534_12 +{ + r16 = r15 >> 2; + r16 = heap32[(r16)]; + r16 = r16 >> 2; + r16 = heap32[(r16+5)]; + r17 = sp + -64; + r19 = r17 >> 2; + heap32[(fp+-16)] = 1065353216; + heap32[(r19+1)] = 0; + heap32[(r19+2)] = 0; + heap32[(r19+3)] = 0; + heap32[(g0)] = r15; + heap32[(g0+1)] = r11; + heap32[(g0+2)] = 1045220557; + heap32[(g0+3)] = r17; + __FUNCTION_TABLE__[(r16)>>2](i7); +} + r15 = heap32[(r13)]; + r15 = r15 >> 2; + r15 = heap32[(r15)]; + heap32[(g0)] = r1; + heapFloat[(g0+1)] = f19; + r16 = sp + -568; + __FUNCTION_TABLE__[(r15)>>2](i7); + r15 = r16 >> 2; + heap32[(fp+-142)] = r9; + r17 = 0; + heap32[(r15+9)] = 1566444395; + heap8[sp+-528] = r17; + r19 = heap32[(r0+4)]; + r20 = heap32[(r0+3)]; + r21 = heap32[(r0+1)]; + r22 = heap32[(r0+2)]; + r23 = sp + -648; + heap32[(fp+-162)] = r18; + r24 = r23 >> 2; + heap32[(r24+1)] = 0; + heap32[(r24+2)] = 1065353216; + heap32[(r24+3)] = 0; + heap32[(r24+4)] = 0; + heap32[(r24+5)] = r22; + heap32[(r24+6)] = r21; + heap32[(r24+7)] = r20; + r21 = r20 >> 2; + heap32[(r24+8)] = r19; + r22 = heap32[(r21+1)]; + heap32[(r24+9)] = r22; + r22 = r19 >> 2; + r25 = heap32[(r22+1)]; + heap32[(r24+10)] = r25; + r21 = heap32[(r21)]; + r21 = r21 >> 2; + r21 = heap32[(r21+11)]; + heap32[(g0)] = r20; + __FUNCTION_TABLE__[(r21)>>2](i7); + heapFloat[(r24+11)] = f_g0; + r20 = heap32[(r22)]; + r20 = r20 >> 2; + r20 = heap32[(r20+11)]; + heap32[(g0)] = r19; + __FUNCTION_TABLE__[(r20)>>2](i7); + heapFloat[(r24+12)] = f_g0; + heap8[sp+-596] = r17; + r19 = sp + -784; + heap32[(r24+15)] = -1; + r20 = r19 >> 2; + heap32[(r24+18)] = 1; + heap32[(r20+32)] = 1566444395; + heap32[(r20+33)] = 0; + r21 = r12 >> 2; + heap32[(fp+-196)] = heap32[(fp+-114)]; + heap32[(r20+1)] = heap32[(r21+1)]; + heap32[(r20+2)] = heap32[(r21+2)]; + heap32[(r20+3)] = heap32[(r21+3)]; + heap32[(r20+4)] = heap32[(r21+4)]; + heap32[(r20+5)] = heap32[(r21+5)]; + heap32[(r20+6)] = heap32[(r21+6)]; + heap32[(r20+7)] = heap32[(r21+7)]; + heap32[(r20+8)] = heap32[(r21+8)]; + heap32[(r20+9)] = heap32[(r21+9)]; + heap32[(r20+10)] = heap32[(r21+10)]; + heap32[(r20+11)] = heap32[(r21+11)]; + heap32[(r20+12)] = heap32[(r21+12)]; + heap32[(r20+13)] = heap32[(r21+13)]; + heap32[(r20+14)] = heap32[(r21+14)]; + heap32[(r20+15)] = heap32[(r21+15)]; + r14 = r14 >> 2; + heap32[(r20+16)] = heap32[(fp+-130)]; + heap32[(r20+17)] = heap32[(r14+1)]; + heap32[(r20+18)] = heap32[(r14+2)]; + heap32[(r20+19)] = heap32[(r14+3)]; + heap32[(r20+20)] = heap32[(r14+4)]; + heap32[(r20+21)] = heap32[(r14+5)]; + heap32[(r20+22)] = heap32[(r14+6)]; + heap32[(r20+23)] = heap32[(r14+7)]; + heap32[(r20+24)] = heap32[(r14+8)]; + heap32[(r20+25)] = heap32[(r14+9)]; + heap32[(r20+26)] = heap32[(r14+10)]; + heap32[(r20+27)] = heap32[(r14+11)]; + heap32[(r20+28)] = heap32[(r14+12)]; + heap32[(r20+29)] = heap32[(r14+13)]; + heap32[(r20+30)] = heap32[(r14+14)]; + heap32[(r20+31)] = heap32[(r14+15)]; + heap32[(g0)] = r23; + heap32[(g0+1)] = r19; + heap32[(g0+2)] = r16; + heap32[(g0+3)] = 0; + heap32[(g0+4)] = 0; + _ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(i7); + r14 = heapU8[sp+-528]; + if(r14 !=0) //_LBB534_14 +{ + f20 = heapFloat[(r15+9)]; + if(f20 >=f6) //_LBB534_17 +{ + f6 = heapFloat[(r15+5)]; + heapFloat[(fp+-32)] = f6; + f10 = heapFloat[(r15+6)]; + heapFloat[(r10+1)] = f10; + f13 = heapFloat[(r15+7)]; + heapFloat[(r10+2)] = f13; + f14 = heapFloat[(r15+8)]; + heapFloat[(r10+3)] = f14; + f15 = heapFloat[(r15+1)]; + f16 = heapFloat[(r15+2)]; + f17 = heapFloat[(r15+3)]; + f21 = heapFloat[(r15+4)]; + heap32[(fp+-142)] = r9; + f9 = f19; +} +else{ +__label__ = 14; +break _4; +} +} +else{ +__label__ = 15; +break _4; +} +} +} +} +} +} +} +else{ +__label__ = 18; +break _4; +} +} +switch(__label__ ){//multiple entries +case 18: + r0 = r1 >> 2; + f0 = f18+f1; + f1 = heapFloat[(r0+43)]; + if(f0 <=f1) //_LBB534_21 +{ +break _1; +} +else{ + heapFloat[(r0+41)] = f9; + heapFloat[(r0+33)] = f15; + heapFloat[(r0+34)] = f16; + heapFloat[(r0+35)] = f17; + heapFloat[(r0+36)] = f21; + heapFloat[(r0+37)] = f6; + heapFloat[(r0+38)] = f10; + heapFloat[(r0+39)] = f13; + heapFloat[(r0+40)] = f14; + r0 = 1; + r_g0 = r0; + return; +} +break; +case 14: + heapFloat[(r13+41)] = f19; + f0 = heapFloat[(r15+4)]; + f1 = heapFloat[(r15+3)]; + f2 = heapFloat[(r15+2)]; + heap32[(r13+33)] = heap32[(r15+1)]; + heapFloat[(r13+34)] = f2; + heapFloat[(r13+35)] = f1; + heapFloat[(r13+36)] = f0; + heap32[(r13+37)] = heap32[(r15+5)]; + heap32[(r13+38)] = heap32[(r15+6)]; + heap32[(r13+39)] = heap32[(r15+7)]; + heap32[(r13+40)] = heap32[(r15+8)]; + r17 = r4; +break; +} + heap32[(fp+-142)] = r9; + r0 = r17 & 255; + r_g0 = r0; + return; +} +} +} while(0); + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; +var __label__ = 0; + i7 = sp + -32;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + f0 = heapFloat[(fp+5)]; + f1 = heapFloat[(fp+1)]; + r2 = heap32[(fp+6)]; + f2 = heapFloat[(fp+2)]; + f1 = f1*f0; + f3 = heapFloat[(r1+12)]; + f4 = heapFloat[(r1+14)]; + f5 = heapFloat[(r1+13)]; + f6 = heapFloat[(fp+3)]; + f2 = f2*f0; + r1 = r2 >> 2; + f1 = f3+f1; + f3 = f6*f0; + f2 = f5+f2; + heapFloat[(r1+12)] = f1; + f1 = f4+f3; + heapFloat[(r1+13)] = f2; + r2 = heap32[(fp+4)]; + heapFloat[(r1+14)] = f1; + r2 = r2 >> 2; + heap32[(r1+15)] = 0; + f1 = heapFloat[(r2)]; + f2 = heapFloat[(r2+1)]; + f3 = heapFloat[(r2+2)]; + f1 = f1*f1; + f2 = f2*f2; + f1 = f1+f2; + f2 = f3*f3; + f1 = f1+f2; + heapFloat[(g0)] = f1; + sqrtf(i7); + f1 = f_g0; + f2 = f1*f0; + f3 = 0.78539818525314331; + if(f2 >f3) //_LBB535_2 +{ + f1 = f3/f0; +} + f2 = 0.0010000000474974513; + if(f1 >=f2) //_LBB535_5 +{ + f2 = 0.5; + f2 = f1*f2; + f2 = f2*f0; + heapFloat[(g0)] = f2; + sinf(i7); + f3 = heapFloat[(r2+2)]; + f2 = f_g0/f1; + f5 = heapFloat[(r2+1)]; + f6 = heapFloat[(r2)]; + f4 = f3*f2; + f3 = f5*f2; + f2 = f6*f2; +} +else{ + f2 = f0*f0; + f2 = f2*f0; + f3 = -0.02083333395421505; + f2 = f2*f3; + f3 = 0.5; + f2 = f2*f1; + f3 = f0*f3; + f2 = f2*f1; + f4 = heapFloat[(r2+2)]; + f2 = f3+f2; + f3 = heapFloat[(r2+1)]; + f5 = heapFloat[(r2)]; + f4 = f4*f2; + f3 = f3*f2; + f2 = f5*f2; +} + f0 = f1*f0; + f1 = 0.5; + f0 = f0*f1; + heapFloat[(g0)] = f0; + cosf(i7); + f0 = f_g0; + r2 = sp + -16; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + _ZNK11btMatrix3x311getRotationER12btQuaternion(i7); + r0 = r2 >> 2; + f1 = heapFloat[(fp+-4)]; + f5 = heapFloat[(r0+3)]; + f6 = heapFloat[(r0+1)]; + f7 = heapFloat[(r0+2)]; + f8 = f0*f6; + f9 = f3*f5; + f10 = f0*f1; + f11 = f2*f5; + f12 = f0*f7; + f13 = f4*f5; + f8 = f8+f9; + f9 = f4*f1; + f10 = f10+f11; + f11 = f3*f7; + f0 = f0*f5; + f5 = f2*f1; + f12 = f12+f13; + f13 = f2*f6; + f8 = f8+f9; + f2 = f2*f7; + f9 = f10+f11; + f10 = f4*f6; + f2 = f8-f2; + f8 = f9-f10; + f0 = f0-f5; + f5 = f3*f6; + f6 = f12+f13; + f1 = f3*f1; + f1 = f6-f1; + f3 = f8*f8; + f6 = f2*f2; + f0 = f0-f5; + f4 = f4*f7; + f0 = f0-f4; + f3 = f3+f6; + f4 = f1*f1; + f3 = f3+f4; + f4 = f0*f0; + f3 = f3+f4; + heapFloat[(g0)] = f3; + sqrtf(i7); + f3 = f_g0; + f4 = 0; + if(f3 !=f4) //_LBB535_8 +{ + f4 = 1; + f3 = f4/f3; + f5 = f8*f3; + f2 = f2*f3; + f1 = f1*f3; + f6 = f5*f5; + f7 = f2*f2; + f0 = f0*f3; + f3 = f6+f7; + f6 = f1*f1; + f3 = f3+f6; + f6 = f0*f0; + f7 = 2; + f3 = f3+f6; + f3 = f7/f3; + f6 = f1*f3; + f7 = f2*f3; + f8 = f2*f7; + f1 = f1*f6; + f9 = f8+f1; + f9 = f4-f9; + f10 = f5*f7; + f11 = f0*f6; + f12 = f5*f6; + f7 = f0*f7; + f13 = f10-f11; + heapFloat[(r1)] = f9; + f3 = f5*f3; + f9 = f12+f7; + heapFloat[(r1+1)] = f13; + f5 = f5*f3; + heapFloat[(r1+2)] = f9; + f1 = f5+f1; + f9 = f10+f11; + heap32[(r1+3)] = 0; + f2 = f2*f6; + f0 = f0*f3; + f1 = f4-f1; + heapFloat[(r1+4)] = f9; + f3 = f2-f0; + heapFloat[(r1+5)] = f1; + heapFloat[(r1+6)] = f3; + f1 = f12-f7; + heap32[(r1+7)] = 0; + f3 = f5+f8; + f0 = f2+f0; + heapFloat[(r1+8)] = f1; + f1 = f4-f3; + heapFloat[(r1+9)] = f0; + heapFloat[(r1+10)] = f1; + heap32[(r1+11)] = 0; + return; +} +else{ + r1 = _2E_str584; + r0 = _2E_str685; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = 188; + _assert(i7); +} +} + +function _ZN12btConvexCastD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV12btConvexCast; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN12btConvexCastD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV12btConvexCast; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN15btGjkConvexCastD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV12btConvexCast; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN15btGjkConvexCastD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV12btConvexCast; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN15btGjkConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; +var __label__ = 0; + i7 = sp + -288;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+1)]; + r2 = 0; + r3 = r1 >> 2; + heap8[r1+312] = r2; + r4 = 1; + heap32[(r3)] = 0; + heap8[r1+356] = r4; + heap32[(r3+73)] = 1566444395; + heap32[(r3+74)] = 1566444395; + heap32[(r3+75)] = 1566444395; + heap32[(r3+76)] = 0; + heap8[r1+352] = r2; + heap32[(r3+84)] = 0; + heap32[(r3+85)] = 0; + heap32[(r3+86)] = 0; + heap32[(r3+87)] = 0; + r3 = heapU8[r1+332]; + r4 = heap32[(fp+2)]; + r5 = heap32[(fp+1)]; + r6 = heap32[(fp+4)]; + r7 = heap32[(fp+3)]; + r3 = r3 & 240; + r4 = r4 >> 2; + heap8[r1+332] = r3; + r1 = r5 >> 2; + r3 = r6 >> 2; + r5 = r7 >> 2; + r6 = _ZTV16btPointCollector; + f0 = heapFloat[(r4+14)]; + f1 = heapFloat[(r1+14)]; + f2 = heapFloat[(r3+14)]; + f3 = heapFloat[(r5+14)]; + f4 = heapFloat[(r4+13)]; + f5 = heapFloat[(r1+13)]; + f6 = heapFloat[(r3+13)]; + f7 = heapFloat[(r5+13)]; + f8 = heapFloat[(r4+12)]; + f9 = heapFloat[(r1+12)]; + f10 = heapFloat[(r3+12)]; + f11 = heapFloat[(r5+12)]; + r7 = sp + -48; + r6 = (r6 + 8)|0; + r8 = r7 >> 2; + heap32[(fp+-12)] = r6; + heap32[(r8+9)] = 1566444395; + heap8[sp+-8] = r2; + r6 = heap32[(r0+3)]; + r9 = heap32[(r0+2)]; + r0 = heap32[(r0+1)]; + r10 = _ZTV17btGjkPairDetector; + r11 = sp + -128; + r10 = (r10 + 8)|0; + heap32[(fp+-32)] = r10; + r10 = r11 >> 2; + heap32[(r10+1)] = 0; + heap32[(r10+2)] = 1065353216; + heap32[(r10+3)] = 0; + heap32[(r10+4)] = 0; + heap32[(r10+5)] = 0; + heap32[(r10+6)] = r0; + heap32[(r10+7)] = r9; + r0 = r9 >> 2; + heap32[(r10+8)] = r6; + r12 = heap32[(r0+1)]; + heap32[(r10+9)] = r12; + r12 = r6 >> 2; + r13 = heap32[(r12+1)]; + heap32[(r10+10)] = r13; + r0 = heap32[(r0)]; + r0 = r0 >> 2; + r0 = heap32[(r0+11)]; + heap32[(g0)] = r9; + __FUNCTION_TABLE__[(r0)>>2](i7); + heapFloat[(r10+11)] = f_g0; + r0 = heap32[(r12)]; + r0 = r0 >> 2; + r0 = heap32[(r0+11)]; + heap32[(g0)] = r6; + __FUNCTION_TABLE__[(r0)>>2](i7); + heapFloat[(r10+12)] = f_g0; + heap8[sp+-76] = r2; + r0 = sp + -264; + heap32[(r10+15)] = -1; + r6 = r0 >> 2; + heap32[(r10+18)] = 1; + heap32[(r6+32)] = 1566444395; + heap32[(r6+33)] = 0; + heap32[(fp+-66)] = heap32[(r1)]; + heap32[(r6+1)] = heap32[(r1+1)]; + heap32[(r6+2)] = heap32[(r1+2)]; + heap32[(r6+3)] = heap32[(r1+3)]; + heap32[(r6+4)] = heap32[(r1+4)]; + heap32[(r6+5)] = heap32[(r1+5)]; + heap32[(r6+6)] = heap32[(r1+6)]; + heap32[(r6+7)] = heap32[(r1+7)]; + heap32[(r6+8)] = heap32[(r1+8)]; + heap32[(r6+9)] = heap32[(r1+9)]; + heap32[(r6+10)] = heap32[(r1+10)]; + heap32[(r6+11)] = heap32[(r1+11)]; + heap32[(r6+12)] = heap32[(r1+12)]; + heap32[(r6+13)] = heap32[(r1+13)]; + heap32[(r6+14)] = heap32[(r1+14)]; + heap32[(r6+15)] = heap32[(r1+15)]; + heap32[(r6+16)] = heap32[(r5)]; + heap32[(r6+17)] = heap32[(r5+1)]; + heap32[(r6+18)] = heap32[(r5+2)]; + heap32[(r6+19)] = heap32[(r5+3)]; + heap32[(r6+20)] = heap32[(r5+4)]; + heap32[(r6+21)] = heap32[(r5+5)]; + heap32[(r6+22)] = heap32[(r5+6)]; + heap32[(r6+23)] = heap32[(r5+7)]; + heap32[(r6+24)] = heap32[(r5+8)]; + heap32[(r6+25)] = heap32[(r5+9)]; + heap32[(r6+26)] = heap32[(r5+10)]; + heap32[(r6+27)] = heap32[(r5+11)]; + heap32[(r6+28)] = heap32[(r5+12)]; + heap32[(r6+29)] = heap32[(r5+13)]; + heap32[(r6+30)] = heap32[(r5+14)]; + heap32[(r6+31)] = heap32[(r5+15)]; + heap32[(g0)] = r11; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r7; + heap32[(g0+3)] = 0; + heap32[(g0+4)] = 0; + _ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(i7); + r9 = heapU8[sp+-8]; +_1: do { +if(!(r9 ==0)) //_LBB540_14 +{ + f0 = f0-f1; + f1 = f2-f3; + f2 = f4-f5; + f3 = f6-f7; + f4 = f8-f9; + f5 = f10-f11; + r9 = heap32[(fp+5)]; + f0 = f0-f1; + f1 = f2-f3; + f2 = f4-f5; + f3 = heapFloat[(r8+8)]; + f4 = heapFloat[(r8+7)]; + f5 = heapFloat[(r8+6)]; + f6 = heapFloat[(r8+5)]; + f7 = heapFloat[(r8+9)]; + f8 = heapFloat[(r8+1)]; + f9 = heapFloat[(r8+2)]; + f10 = heapFloat[(r8+3)]; + f11 = heapFloat[(r8+4)]; + f12 = 0; +_3: while(true){ + f13 = 0.0010000000474974513; + if(f7 >f13) //_LBB540_2 +{ + r2 = (r2 + 1)|0; + if(r2 >32) //_LBB540_14 +{ +break _1; +} +else{ + f3 = f2*f8; + f4 = f1*f9; + f3 = f3+f4; + f4 = f0*f10; + f3 = f3+f4; + f3 = f7/f3; + f13 = f12-f3; + f3 = 0; + if(f13 f4) //_LBB540_14 +{ +break _1; +} +else{ + if(f13 <=f12) //_LBB540_14 +{ +break _1; +} +else{ + r10 = r9 >> 2; + r12 = heap32[(r10)]; + r12 = r12 >> 2; + r12 = heap32[(r12)]; + heap32[(g0)] = r9; + heapFloat[(g0+1)] = f13; + __FUNCTION_TABLE__[(r12)>>2](i7); + f5 = heapFloat[(r4+12)]; + f6 = heapFloat[(r1+12)]; + f4 = f4-f13; + f6 = f6*f4; + f5 = f5*f13; + f5 = f6+f5; + heapFloat[(r6+12)] = f5; + f5 = heapFloat[(r1+13)]; + f6 = heapFloat[(r4+13)]; + f5 = f5*f4; + f6 = f6*f13; + f5 = f5+f6; + heapFloat[(r6+13)] = f5; + f5 = heapFloat[(r1+14)]; + f6 = heapFloat[(r4+14)]; + f5 = f5*f4; + f6 = f6*f13; + f5 = f5+f6; + heapFloat[(r6+14)] = f5; + f5 = heapFloat[(r5+12)]; + f6 = heapFloat[(r3+12)]; + f5 = f5*f4; + f6 = f6*f13; + f5 = f5+f6; + heapFloat[(r6+28)] = f5; + f5 = heapFloat[(r5+13)]; + f6 = heapFloat[(r3+13)]; + f5 = f5*f4; + f6 = f6*f13; + f5 = f5+f6; + heapFloat[(r6+29)] = f5; + f5 = heapFloat[(r5+14)]; + f6 = heapFloat[(r3+14)]; + f4 = f5*f4; + f5 = f6*f13; + f4 = f4+f5; + heapFloat[(r6+30)] = f4; + heap32[(g0)] = r11; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r7; + heap32[(g0+3)] = 0; + heap32[(g0+4)] = 0; + _ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(i7); + r12 = heapU8[sp+-8]; + if(r12 ==0) //_LBB540_14 +{ +break _1; +} +else{ + f7 = heapFloat[(r8+9)]; + if(f7 >=f3) //_LBB540_9 +{ + f6 = heapFloat[(r8+5)]; + f5 = heapFloat[(r8+6)]; + f4 = heapFloat[(r8+7)]; + f3 = heapFloat[(r8+8)]; + f8 = heapFloat[(r8+1)]; + f9 = heapFloat[(r8+2)]; + f10 = heapFloat[(r8+3)]; + f11 = heapFloat[(r8+4)]; + f12 = f13; +} +else{ +__label__ = 8; +break _3; +} +} +} +} +} +} +} +else{ +__label__ = 11; +break _3; +} +} +switch(__label__ ){//multiple entries +case 11: + r0 = r9 >> 2; + f2 = f8*f2; + f1 = f9*f1; + f7 = heapFloat[(r0+43)]; + f1 = f2+f1; + f0 = f10*f0; + f0 = f1+f0; + f1 = -f7; + if(f0 >=f1) //_LBB540_14 +{ +break _1; +} +else{ + heapFloat[(r0+41)] = f12; + heapFloat[(r0+33)] = f8; + heapFloat[(r0+34)] = f9; + heapFloat[(r0+35)] = f10; + heapFloat[(r0+36)] = f11; + heapFloat[(r0+37)] = f6; + heapFloat[(r0+38)] = f5; + heapFloat[(r0+39)] = f4; + heapFloat[(r0+40)] = f3; +} +break; +case 8: + heapFloat[(r10+41)] = f13; + f0 = heapFloat[(r8+4)]; + f1 = heapFloat[(r8+3)]; + f2 = heapFloat[(r8+2)]; + heap32[(r10+33)] = heap32[(r8+1)]; + heapFloat[(r10+34)] = f2; + heapFloat[(r10+35)] = f1; + heapFloat[(r10+36)] = f0; + heap32[(r10+37)] = heap32[(r8+5)]; + heap32[(r10+38)] = heap32[(r8+6)]; + heap32[(r10+39)] = heap32[(r8+7)]; + heap32[(r10+40)] = heap32[(r8+8)]; +break; +} + r0 = 1; + r_g0 = r0; + return; +} +} while(0); + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_PfRj(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = r1 >> 2; + f0 = heapFloat[(r1+1)]; + f1 = heapFloat[(r0+1)]; + f2 = heapFloat[(r1)]; + f3 = heapFloat[(r0)]; + f1 = f1-f0; + f3 = f3-f2; + f4 = heapFloat[(r1+2)]; + f5 = heapFloat[(r0+2)]; + f5 = f5-f4; + f6 = f3*f3; + f7 = f1*f1; + f6 = f6+f7; + f7 = f5*f5; + f6 = f6+f7; + f7 = 0; + if(f6 <=f7) //_LBB541_7 +{ + f0 = -1; + f_g0 = f0; + return; +} +else{ + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+3)]; + f2 = f2*f3; + f0 = f0*f1; + f0 = f2+f0; + f2 = f4*f5; + f0 = f0+f2; + f0 = -f0; + f0 = f0/f6; + f2 = 1; + if(f0 f7) //_LBB541_6 +{ + r0 = r2 >> 2; + f2 = f2-f0; + heapFloat[(r0+1)] = f0; + r2 = r3 >> 2; + heapFloat[(r0)] = f2; + heap32[(r2)] = 3; + f2 = heapFloat[(r1)]; + f3 = f3*f0; + f4 = heapFloat[(r1+1)]; + f1 = f1*f0; + f2 = f2+f3; + f1 = f4+f1; + f3 = heapFloat[(r1+2)]; + f0 = f5*f0; + f0 = f3+f0; + f2 = f2*f2; + f1 = f1*f1; + f1 = f2+f1; + f0 = f0*f0; + f0 = f1+f0; + f_g0 = f0; + return; +} +else{ + r2 = r2 >> 2; + heap32[(r2)] = 1065353216; + r3 = r3 >> 2; + heap32[(r2+1)] = 0; + heap32[(r3)] = 1; + f0 = heapFloat[(r1)]; + f1 = heapFloat[(r1+1)]; + f2 = heapFloat[(r1+2)]; +} +} +else{ + r1 = r2 >> 2; + heap32[(r1)] = 0; + r2 = r3 >> 2; + heap32[(r1+1)] = 1065353216; + heap32[(r2)] = 2; + f0 = heapFloat[(r0)]; + f1 = heapFloat[(r0+1)]; + f2 = heapFloat[(r0+2)]; +} + f0 = f0*f0; + f1 = f1*f1; + f0 = f0+f1; + f1 = f2*f2; + f0 = f0+f1; + f_g0 = f0; + return; +} +} + +function _ZN12gjkepa2_implL10InitializeEPK13btConvexShapeRK11btTransformS2_S5_RN15btGjkEpaSolver28sResultsERNS_13MinkowskiDiffEb(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+4)]; + r0 = r0 >> 2; + r1 = heap32[(fp+5)]; + heap32[(r0)] = 0; + heap32[(r0+1)] = 0; + heap32[(r0+2)] = 0; + heap32[(r0+3)] = 0; + heap32[(r0+4)] = 0; + heap32[(r0+5)] = 0; + heap32[(r0+6)] = 0; + heap32[(r0+7)] = 0; + heap32[(r0+8)] = 0; + r0 = r1 >> 2; + r1 = heap32[(fp)]; + r2 = heap32[(fp+3)]; + r3 = heap32[(fp+1)]; + r4 = heap32[(fp+2)]; + heap32[(r0)] = r1; + r1 = r2 >> 2; + heap32[(r0+1)] = r4; + r2 = r3 >> 2; + f0 = heapFloat[(r2)]; + f1 = heapFloat[(r1)]; + f2 = heapFloat[(r2+4)]; + f3 = heapFloat[(r1+4)]; + f4 = heapFloat[(r2+1)]; + f5 = heapFloat[(r2+5)]; + f6 = f1*f0; + f7 = f3*f2; + f8 = heapFloat[(r2+8)]; + f9 = heapFloat[(r1+8)]; + f10 = heapFloat[(r1+2)]; + f11 = heapFloat[(r2+2)]; + f12 = heapFloat[(r1+1)]; + f13 = heapFloat[(r1+6)]; + f14 = heapFloat[(r2+6)]; + f15 = heapFloat[(r1+5)]; + f16 = heapFloat[(r1+10)]; + f17 = heapFloat[(r2+10)]; + f18 = heapFloat[(r2+9)]; + f19 = heapFloat[(r1+9)]; + f20 = f1*f4; + f21 = f3*f5; + f6 = f6+f7; + f7 = f9*f8; + f1 = f1*f11; + f3 = f3*f14; + f20 = f20+f21; + f21 = f9*f18; + f6 = f6+f7; + f1 = f1+f3; + f3 = f9*f17; + f7 = f20+f21; + heapFloat[(r0+2)] = f6; + f6 = f12*f0; + f9 = f15*f2; + f1 = f1+f3; + heapFloat[(r0+3)] = f7; + heapFloat[(r0+4)] = f1; + f1 = f12*f4; + f3 = f15*f5; + f6 = f6+f9; + f7 = f19*f8; + f9 = f12*f11; + f12 = f15*f14; + f1 = f1+f3; + f3 = f19*f18; + f6 = f6+f7; + heap32[(r0+5)] = 0; + f7 = f9+f12; + f9 = f19*f17; + f1 = f1+f3; + heapFloat[(r0+6)] = f6; + f0 = f10*f0; + f2 = f13*f2; + f3 = f7+f9; + heapFloat[(r0+7)] = f1; + heapFloat[(r0+8)] = f3; + f1 = f10*f4; + f3 = f13*f5; + f0 = f0+f2; + f2 = f16*f8; + f4 = f10*f11; + f5 = f13*f14; + f1 = f1+f3; + f3 = f16*f18; + f0 = f0+f2; + heap32[(r0+9)] = 0; + f2 = f4+f5; + f4 = f16*f17; + f1 = f1+f3; + heapFloat[(r0+10)] = f0; + f0 = f2+f4; + heapFloat[(r0+11)] = f1; + heapFloat[(r0+12)] = f0; + heap32[(r0+13)] = 0; + f0 = heapFloat[(r2)]; + f1 = heapFloat[(r1)]; + f2 = heapFloat[(r2+4)]; + f3 = heapFloat[(r1+4)]; + f4 = heapFloat[(r1+1)]; + f5 = heapFloat[(r1+5)]; + f6 = f0*f1; + f7 = f2*f3; + f8 = heapFloat[(r2+8)]; + f9 = heapFloat[(r1+8)]; + f10 = heapFloat[(r2+2)]; + f11 = heapFloat[(r2+6)]; + f12 = heapFloat[(r2+1)]; + f13 = heapFloat[(r1+2)]; + f14 = heapFloat[(r2+5)]; + f15 = heapFloat[(r1+6)]; + f16 = heapFloat[(r2+10)]; + f17 = heapFloat[(r1+10)]; + f18 = heapFloat[(r2+9)]; + f19 = heapFloat[(r1+9)]; + f20 = f0*f4; + f21 = f2*f5; + f6 = f6+f7; + f7 = f8*f9; + f22 = heapFloat[(r1+14)]; + f23 = heapFloat[(r2+14)]; + f24 = heapFloat[(r1+13)]; + f25 = heapFloat[(r2+13)]; + f26 = heapFloat[(r1+12)]; + f27 = heapFloat[(r2+12)]; + f28 = f0*f13; + f29 = f2*f15; + f20 = f20+f21; + f21 = f8*f19; + f6 = f6+f7; + f7 = f28+f29; + f28 = f8*f17; + f20 = f20+f21; + heapFloat[(r0+14)] = f6; + f6 = f12*f1; + f21 = f14*f3; + f7 = f7+f28; + heapFloat[(r0+15)] = f20; + heapFloat[(r0+16)] = f7; + f7 = f12*f4; + f20 = f14*f5; + f6 = f6+f21; + f21 = f18*f9; + f28 = f12*f13; + f29 = f14*f15; + f7 = f7+f20; + f20 = f18*f19; + f6 = f6+f21; + heap32[(r0+17)] = 0; + f21 = f28+f29; + f28 = f18*f17; + f7 = f7+f20; + heapFloat[(r0+18)] = f6; + f1 = f10*f1; + f3 = f11*f3; + f6 = f21+f28; + heapFloat[(r0+19)] = f7; + heapFloat[(r0+20)] = f6; + f4 = f10*f4; + f5 = f11*f5; + f1 = f1+f3; + f3 = f16*f9; + f6 = f10*f13; + f7 = f11*f15; + f4 = f4+f5; + f5 = f16*f19; + f1 = f1+f3; + heap32[(r0+21)] = 0; + f3 = f26-f27; + f9 = f24-f25; + f6 = f6+f7; + f7 = f16*f17; + f4 = f4+f5; + heapFloat[(r0+22)] = f1; + f1 = f22-f23; + f0 = f0*f3; + f2 = f2*f9; + f5 = f6+f7; + heapFloat[(r0+23)] = f4; + heapFloat[(r0+24)] = f5; + f4 = f12*f3; + f5 = f14*f9; + f0 = f0+f2; + f2 = f8*f1; + f3 = f10*f3; + f6 = f11*f9; + f4 = f4+f5; + f5 = f18*f1; + f0 = f0+f2; + heap32[(r0+25)] = 0; + f2 = f3+f6; + f1 = f16*f1; + f3 = f4+f5; + heapFloat[(r0+26)] = f0; + f0 = f2+f1; + heapFloat[(r0+27)] = f3; + heapFloat[(r0+28)] = f0; + heap32[(r0+29)] = 0; + r1 = heap32[(fp+6)]; + if(r1 ==0) //_LBB542_3 +{ + r1 = _ZNK13btConvexShape44localGetSupportVertexWithoutMarginNonVirtualERK9btVector3__index__; +} +else{ + r1 = _ZNK13btConvexShape31localGetSupportVertexNonVirtualERK9btVector3__index__; +} + heap32[(r0+30)] = r1; + heap32[(r0+31)] = 0; + return; +} + +function _ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; +var __label__ = 0; + i7 = sp + -64;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + f0 = heapFloat[(r0)]; + f1 = heapFloat[(r0+1)]; + f2 = heapFloat[(r0+2)]; + f0 = f0*f0; + f1 = f1*f1; + f0 = f0+f1; + f1 = f2*f2; + f0 = f0+f1; + heapFloat[(g0)] = f0; + sqrtf(i7); + f1 = 1; + r1 = heap32[(fp+2)]; + f0 = f1/f_g0; + f1 = heapFloat[(r0+2)]; + f2 = heapFloat[(r0+1)]; + f3 = heapFloat[(r0)]; + f3 = f3*f0; + r0 = r1 >> 2; + f2 = f2*f0; + heapFloat[(r0)] = f3; + f0 = f1*f0; + heapFloat[(r0+1)] = f2; + r2 = heap32[(fp)]; + heapFloat[(r0+2)] = f0; + r2 = r2 >> 2; + heap32[(r0+3)] = 0; + r3 = heap32[(r2+30)]; + f0 = -f0; + f1 = -f2; + f2 = -f3; + r4 = heap32[(r2+1)]; + r5 = heap32[(r2+31)]; + r6 = r3 & 1; + if(r6 != 0) //_LBB543_2 +{ + r6 = (r4 + r5)|0; + r6 = r6 >> 2; + r6 = heap32[(r6)]; + r3 = (r6 + r3)|0; + r3 = (r3 + -1)|0; + r3 = r3 >> 2; + r3 = heap32[(r3)]; +} + f3 = heapFloat[(r2+2)]; + f4 = heapFloat[(r2+3)]; + f5 = heapFloat[(r2+6)]; + f6 = heapFloat[(r2+7)]; + f3 = f3*f2; + f4 = f4*f1; + f7 = heapFloat[(r2+4)]; + f8 = heapFloat[(r2+10)]; + f9 = heapFloat[(r2+11)]; + f10 = heapFloat[(r2+12)]; + f11 = heapFloat[(r2+8)]; + f5 = f5*f2; + f6 = f6*f1; + f3 = f3+f4; + f4 = f7*f0; + r6 = sp + -16; + f2 = f8*f2; + f1 = f9*f1; + f5 = f5+f6; + f6 = f11*f0; + f3 = f3+f4; + r7 = r6 >> 2; + f1 = f2+f1; + f0 = f10*f0; + f2 = f5+f6; + heapFloat[(fp+-4)] = f3; + f0 = f1+f0; + heapFloat[(r7+1)] = f2; + heapFloat[(r7+2)] = f0; + heap32[(r7+3)] = 0; + r7 = sp + -32; + r4 = (r4 + r5)|0; + heap32[(g0)] = r7; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r6; + __FUNCTION_TABLE__[(r3)>>2](i7); + r3 = r7 >> 2; + f0 = heapFloat[(r2+22)]; + f1 = heapFloat[(fp+-8)]; + f2 = heapFloat[(r2+18)]; + f3 = heapFloat[(r2+14)]; + f4 = heapFloat[(r2+23)]; + f5 = heapFloat[(r3+1)]; + f6 = heapFloat[(r2+19)]; + f7 = heapFloat[(r2+15)]; + f0 = f0*f1; + f4 = f4*f5; + f8 = heapFloat[(r2+24)]; + f9 = heapFloat[(r3+2)]; + f10 = heapFloat[(r2+20)]; + f11 = heapFloat[(r2+16)]; + f2 = f2*f1; + f6 = f6*f5; + f1 = f3*f1; + f3 = f7*f5; + f0 = f0+f4; + f4 = f8*f9; + f2 = f2+f6; + f5 = f10*f9; + f1 = f1+f3; + f3 = f11*f9; + f0 = f0+f4; + f4 = heapFloat[(r2+28)]; + f2 = f2+f5; + f5 = heapFloat[(r2+27)]; + f1 = f1+f3; + f3 = heapFloat[(r2+26)]; + r3 = heap32[(r2+30)]; + f0 = f0+f4; + f2 = f2+f5; + f1 = f1+f3; + r4 = heap32[(r2)]; + r2 = heap32[(r2+31)]; + r5 = r3 & 1; + if(r5 != 0) //_LBB543_5 +{ + r5 = (r4 + r2)|0; + r5 = r5 >> 2; + r5 = heap32[(r5)]; + r3 = (r3 + r5)|0; + r3 = (r3 + -1)|0; + r3 = r3 >> 2; + r3 = heap32[(r3)]; +} + r5 = sp + -48; + r2 = (r4 + r2)|0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = r5 >> 2; + f3 = heapFloat[(fp+-12)]; + f4 = heapFloat[(r1+2)]; + f5 = heapFloat[(r1+1)]; + f1 = f3-f1; + f2 = f5-f2; + heapFloat[(r0+4)] = f1; + f0 = f4-f0; + heapFloat[(r0+5)] = f2; + heapFloat[(r0+6)] = f0; + heap32[(r0+7)] = 0; + return; +} + +function _ZN12gjkepa2_impl3GJK13EncloseOriginEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; +var __label__ = 0; + i7 = sp + -128;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+93)]; + r3 = r2 >> 2; + r4 = heap32[(r3+8)]; +_1: do { + if(r4 >2) //_LBB544_3 +{ + if(r4 ==3) //_LBB544_17 +{ + r5 = heap32[(r3)]; + r6 = heap32[(r3+2)]; + r7 = heap32[(r3+1)]; + r6 = r6 >> 2; + r5 = r5 >> 2; + r7 = r7 >> 2; + f0 = heapFloat[(r6+6)]; + f1 = heapFloat[(r5+6)]; + f2 = heapFloat[(r7+6)]; + f3 = heapFloat[(r6+5)]; + f4 = heapFloat[(r5+5)]; + f5 = heapFloat[(r7+5)]; + f5 = f5-f4; + f0 = f0-f1; + f1 = f2-f1; + f2 = f3-f4; + f3 = heapFloat[(r6+4)]; + f4 = heapFloat[(r5+4)]; + f6 = heapFloat[(r7+4)]; + f3 = f3-f4; + f4 = f6-f4; + f6 = f5*f0; + f7 = f1*f2; + r5 = sp + -112; + f6 = f6-f7; + f1 = f1*f3; + f0 = f4*f0; + f0 = f1-f0; + r6 = r5 >> 2; + heapFloat[(fp+-28)] = f6; + f1 = f4*f2; + f2 = f5*f3; + f1 = f1-f2; + heapFloat[(r6+1)] = f0; + f2 = f6*f6; + f0 = f0*f0; + heapFloat[(r6+2)] = f1; + f0 = f2+f0; + f1 = f1*f1; + f0 = f0+f1; + f1 = 0; + heap32[(r6+3)] = 0; + if(f0 <=f1) //_LBB544_25 +{ +__label__ = 24; +break _1; +} +else{ + r4 = r4 << 2; + r4 = (r2 + r4)|0; + r4 = r4 >> 2; + heap32[(r4+4)] = 0; + r4 = heap32[(r1+91)]; + r4 = (r4 + -1)|0; + r7 = heap32[(r3+8)]; + r8 = r4 << 2; + r7 = r7 << 2; + r8 = (r0 + r8)|0; + r7 = (r2 + r7)|0; + r8 = r8 >> 2; + heap32[(r1+91)] = r4; + r4 = r7 >> 2; + r7 = heap32[(r8+87)]; + heap32[(r4)] = r7; + r4 = heap32[(r3+8)]; + r7 = r4 << 2; + r2 = (r2 + r7)|0; + r2 = r2 >> 2; + r2 = heap32[(r2)]; + r4 = (r4 + 1)|0; + heap32[(r3+8)] = r4; + heap32[(g0)] = r0; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r2; + _ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(i7); + heap32[(g0)] = r0; + _ZN12gjkepa2_impl3GJK13EncloseOriginEv(i7); + r3 = r_g0; + if(r3 !=0) //_LBB544_26 +{ +__label__ = 25; +break _1; +} +else{ + r3 = heap32[(r1+93)]; + r2 = r3 >> 2; + r4 = heap32[(r2+8)]; + r4 = (r4 + -1)|0; + r5 = heap32[(r1+91)]; + r7 = r4 << 2; + r3 = (r3 + r7)|0; + r7 = (r0 + 348)|0; + r8 = r5 << 2; + r8 = (r7 + r8)|0; + r3 = r3 >> 2; + heap32[(r2+8)] = r4; + r2 = r8 >> 2; + r3 = heap32[(r3)]; + r4 = (r5 + 1)|0; + heap32[(r2)] = r3; + heap32[(r1+91)] = r4; + f0 = heapFloat[(r6+2)]; + f1 = heapFloat[(r6+1)]; + f2 = heapFloat[(fp+-28)]; + r3 = sp + -16; + f2 = -f2; + r2 = r3 >> 2; + f1 = -f1; + heapFloat[(fp+-4)] = f2; + f0 = -f0; + heapFloat[(r2+1)] = f1; + heapFloat[(r2+2)] = f0; + heap32[(r2+3)] = 0; + r2 = heap32[(r1+93)]; + r4 = r2 >> 2; + r5 = heap32[(r4+8)]; + r5 = r5 << 2; + r5 = (r2 + r5)|0; + r5 = r5 >> 2; + heap32[(r5+4)] = 0; + r5 = heap32[(r1+91)]; + r5 = (r5 + -1)|0; + r6 = heap32[(r4+8)]; + r8 = r5 << 2; + r6 = r6 << 2; + r7 = (r7 + r8)|0; + r6 = (r2 + r6)|0; + r7 = r7 >> 2; + heap32[(r1+91)] = r5; + r5 = r6 >> 2; + r6 = heap32[(r7)]; + heap32[(r5)] = r6; + r5 = heap32[(r4+8)]; + r6 = r5 << 2; + r2 = (r2 + r6)|0; + r2 = r2 >> 2; + r2 = heap32[(r2)]; + r5 = (r5 + 1)|0; + heap32[(r4+8)] = r5; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r2; + _ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(i7); + heap32[(g0)] = r0; + _ZN12gjkepa2_impl3GJK13EncloseOriginEv(i7); + r3 = r_g0; + if(r3 !=0) //_LBB544_26 +{ +__label__ = 25; +break _1; +} +else{ + r3 = heap32[(r1+93)]; + r2 = r3 >> 2; + r4 = heap32[(r2+8)]; + r4 = (r4 + -1)|0; + r5 = heap32[(r1+91)]; + r6 = r4 << 2; + r7 = r5 << 2; + r3 = (r3 + r6)|0; + r0 = (r0 + r7)|0; + r3 = r3 >> 2; + heap32[(r2+8)] = r4; + r0 = r0 >> 2; + r3 = heap32[(r3)]; + r2 = (r5 + 1)|0; + heap32[(r0+87)] = r3; + heap32[(r1+91)] = r2; + r3 = 0; + r_g0 = r3; + return; +} +} +} +} +else{ + if(r4 ==4) //_LBB544_21 +{ + r0 = heap32[(r3)]; + r1 = heap32[(r3+1)]; + r2 = heap32[(r3+3)]; + r0 = r0 >> 2; + r1 = r1 >> 2; + r2 = r2 >> 2; + r3 = heap32[(r3+2)]; + r3 = r3 >> 2; + f0 = heapFloat[(r1+6)]; + f1 = heapFloat[(r2+6)]; + f2 = heapFloat[(r0+6)]; + f3 = heapFloat[(r0+5)]; + f4 = heapFloat[(r2+5)]; + f5 = heapFloat[(r1+4)]; + f6 = heapFloat[(r2+4)]; + f7 = heapFloat[(r3+5)]; + f8 = heapFloat[(r0+4)]; + f9 = heapFloat[(r3+4)]; + f0 = f0-f1; + f3 = f3-f4; + f5 = f5-f6; + f2 = f2-f1; + f8 = f8-f6; + f10 = f3*f0; + f6 = f9-f6; + f9 = f2*f5; + f7 = f7-f4; + f0 = f8*f0; + f11 = heapFloat[(r3+6)]; + f12 = heapFloat[(r1+5)]; + f10 = f10*f6; + f9 = f9*f7; + f4 = f12-f4; + f9 = f10+f9; + f0 = f0*f7; + f3 = f3*f5; + f1 = f11-f1; + f5 = f8*f4; + f0 = f9-f0; + f3 = f3*f1; + f2 = f2*f4; + f0 = f0-f3; + f1 = f5*f1; + f0 = f0+f1; + f1 = f2*f6; + f0 = f0-f1; + f1 = 0; + if(f0 f1; + r0 = r0 & 1; + r_g0 = r0; + return; +} +else{ +__label__ = 24; +break _1; +} +} +} +else{ + if(r4 ==1) //_LBB544_5 +{ + r2 = 0; +_16: while(true){ + if(uint(r2) > 2; + heap32[(fp+-16)] = 0; + r5 = r2 << 2; + heap32[(r4+1)] = 0; + r5 = (r3 + r5)|0; + heap32[(r4+2)] = 0; + r5 = r5 >> 2; + heap32[(r4+3)] = 0; + heap32[(r5)] = 1065353216; + r5 = heap32[(r1+93)]; + r6 = r5 >> 2; + r7 = heap32[(r6+8)]; + r7 = r7 << 2; + r7 = (r5 + r7)|0; + r7 = r7 >> 2; + heap32[(r7+4)] = 0; + r7 = heap32[(r1+91)]; + r7 = (r7 + -1)|0; + r8 = heap32[(r6+8)]; + r9 = r7 << 2; + r8 = r8 << 2; + r9 = (r0 + r9)|0; + r8 = (r5 + r8)|0; + r9 = r9 >> 2; + heap32[(r1+91)] = r7; + r7 = r8 >> 2; + r8 = heap32[(r9+87)]; + heap32[(r7)] = r8; + r7 = heap32[(r6+8)]; + r8 = r7 << 2; + r5 = (r5 + r8)|0; + r5 = r5 >> 2; + r5 = heap32[(r5)]; + r7 = (r7 + 1)|0; + heap32[(r6+8)] = r7; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r5; + _ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(i7); + heap32[(g0)] = r0; + _ZN12gjkepa2_impl3GJK13EncloseOriginEv(i7); + r3 = r_g0; + if(r3 !=0) //_LBB544_26 +{ +__label__ = 25; +break _1; +} +else{ + r3 = heap32[(r1+93)]; + r5 = r3 >> 2; + r6 = heap32[(r5+8)]; + r6 = (r6 + -1)|0; + r7 = heap32[(r1+91)]; + r8 = r6 << 2; + r3 = (r3 + r8)|0; + r8 = (r0 + 348)|0; + r9 = r7 << 2; + r9 = (r8 + r9)|0; + r3 = r3 >> 2; + heap32[(r5+8)] = r6; + r5 = r9 >> 2; + r3 = heap32[(r3)]; + r6 = (r7 + 1)|0; + heap32[(r5)] = r3; + heap32[(r1+91)] = r6; + f0 = heapFloat[(r4+2)]; + f1 = heapFloat[(r4+1)]; + f2 = heapFloat[(fp+-16)]; + r3 = sp + -48; + f2 = -f2; + r4 = r3 >> 2; + f1 = -f1; + heapFloat[(fp+-12)] = f2; + f0 = -f0; + heapFloat[(r4+1)] = f1; + heapFloat[(r4+2)] = f0; + heap32[(r4+3)] = 0; + r4 = heap32[(r1+93)]; + r5 = r4 >> 2; + r6 = heap32[(r5+8)]; + r6 = r6 << 2; + r6 = (r4 + r6)|0; + r6 = r6 >> 2; + heap32[(r6+4)] = 0; + r6 = heap32[(r1+91)]; + r6 = (r6 + -1)|0; + r7 = heap32[(r5+8)]; + r9 = r6 << 2; + r7 = r7 << 2; + r8 = (r8 + r9)|0; + r7 = (r4 + r7)|0; + r8 = r8 >> 2; + heap32[(r1+91)] = r6; + r6 = r7 >> 2; + r7 = heap32[(r8)]; + heap32[(r6)] = r7; + r6 = heap32[(r5+8)]; + r7 = r6 << 2; + r4 = (r4 + r7)|0; + r4 = r4 >> 2; + r4 = heap32[(r4)]; + r6 = (r6 + 1)|0; + heap32[(r5+8)] = r6; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r4; + _ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(i7); + heap32[(g0)] = r0; + _ZN12gjkepa2_impl3GJK13EncloseOriginEv(i7); + r3 = r_g0; + if(r3 !=0) //_LBB544_26 +{ +__label__ = 25; +break _1; +} +else{ + r3 = heap32[(r1+93)]; + r4 = r3 >> 2; + r5 = heap32[(r4+8)]; + r5 = (r5 + -1)|0; + r6 = heap32[(r1+91)]; + r7 = r5 << 2; + r8 = r6 << 2; + r3 = (r3 + r7)|0; + r7 = (r0 + r8)|0; + r3 = r3 >> 2; + heap32[(r4+8)] = r5; + r4 = r7 >> 2; + r3 = heap32[(r3)]; + r2 = (r2 + 1)|0; + r5 = (r6 + 1)|0; + heap32[(r4+87)] = r3; + heap32[(r1+91)] = r5; +continue _16; +} +} +} +else{ +__label__ = 24; +break _1; +} +} +} +else{ + if(r4 ==2) //_LBB544_10 +{ + r2 = heap32[(r3+1)]; + r3 = heap32[(r3)]; + r2 = r2 >> 2; + r3 = r3 >> 2; + f0 = heapFloat[(r2+6)]; + f1 = heapFloat[(r3+6)]; + f2 = heapFloat[(r2+5)]; + f3 = heapFloat[(r3+5)]; + f4 = heapFloat[(r2+4)]; + f5 = heapFloat[(r3+4)]; + f0 = f0-f1; + f1 = f2-f3; + f2 = f4-f5; + r2 = 0; +_23: while(true){ + if(uint(r2) > 2; + heap32[(fp+-20)] = 0; + r5 = r2 << 2; + heap32[(r4+1)] = 0; + r3 = (r3 + r5)|0; + heap32[(r4+2)] = 0; + r3 = r3 >> 2; + heap32[(r4+3)] = 0; + heap32[(r3)] = 1065353216; + f3 = heapFloat[(r4+2)]; + f4 = heapFloat[(r4+1)]; + f5 = heapFloat[(fp+-20)]; + f6 = f1*f3; + f7 = f0*f4; + r3 = sp + -96; + f6 = f6-f7; + f7 = f0*f5; + f3 = f2*f3; + f3 = f7-f3; + r4 = r3 >> 2; + heapFloat[(fp+-24)] = f6; + f4 = f2*f4; + f5 = f1*f5; + f4 = f4-f5; + heapFloat[(r4+1)] = f3; + f5 = f6*f6; + f3 = f3*f3; + heapFloat[(r4+2)] = f4; + f3 = f5+f3; + f4 = f4*f4; + f3 = f3+f4; + f4 = 0; + heap32[(r4+3)] = 0; +if(!(f3 <=f4)) //_LBB544_15 +{ + r5 = heap32[(r1+93)]; + r6 = r5 >> 2; + r7 = heap32[(r6+8)]; + r7 = r7 << 2; + r7 = (r5 + r7)|0; + r7 = r7 >> 2; + heap32[(r7+4)] = 0; + r7 = heap32[(r1+91)]; + r7 = (r7 + -1)|0; + r8 = heap32[(r6+8)]; + r9 = r7 << 2; + r8 = r8 << 2; + r9 = (r0 + r9)|0; + r8 = (r5 + r8)|0; + r9 = r9 >> 2; + heap32[(r1+91)] = r7; + r7 = r8 >> 2; + r8 = heap32[(r9+87)]; + heap32[(r7)] = r8; + r7 = heap32[(r6+8)]; + r8 = r7 << 2; + r5 = (r5 + r8)|0; + r5 = r5 >> 2; + r5 = heap32[(r5)]; + r7 = (r7 + 1)|0; + heap32[(r6+8)] = r7; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r5; + _ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(i7); + heap32[(g0)] = r0; + _ZN12gjkepa2_impl3GJK13EncloseOriginEv(i7); + r3 = r_g0; + if(r3 !=0) //_LBB544_26 +{ +__label__ = 25; +break _1; +} +else{ + r3 = heap32[(r1+93)]; + r5 = r3 >> 2; + r6 = heap32[(r5+8)]; + r6 = (r6 + -1)|0; + r7 = heap32[(r1+91)]; + r8 = r6 << 2; + r3 = (r3 + r8)|0; + r8 = (r0 + 348)|0; + r9 = r7 << 2; + r9 = (r8 + r9)|0; + r3 = r3 >> 2; + heap32[(r5+8)] = r6; + r5 = r9 >> 2; + r3 = heap32[(r3)]; + r6 = (r7 + 1)|0; + heap32[(r5)] = r3; + heap32[(r1+91)] = r6; + f3 = heapFloat[(r4+2)]; + f4 = heapFloat[(r4+1)]; + f5 = heapFloat[(fp+-24)]; + r3 = sp + -32; + f5 = -f5; + r4 = r3 >> 2; + f4 = -f4; + heapFloat[(fp+-8)] = f5; + f3 = -f3; + heapFloat[(r4+1)] = f4; + heapFloat[(r4+2)] = f3; + heap32[(r4+3)] = 0; + r4 = heap32[(r1+93)]; + r5 = r4 >> 2; + r6 = heap32[(r5+8)]; + r6 = r6 << 2; + r6 = (r4 + r6)|0; + r6 = r6 >> 2; + heap32[(r6+4)] = 0; + r6 = heap32[(r1+91)]; + r6 = (r6 + -1)|0; + r7 = heap32[(r5+8)]; + r9 = r6 << 2; + r7 = r7 << 2; + r8 = (r8 + r9)|0; + r7 = (r4 + r7)|0; + r8 = r8 >> 2; + heap32[(r1+91)] = r6; + r6 = r7 >> 2; + r7 = heap32[(r8)]; + heap32[(r6)] = r7; + r6 = heap32[(r5+8)]; + r7 = r6 << 2; + r4 = (r4 + r7)|0; + r4 = r4 >> 2; + r4 = heap32[(r4)]; + r6 = (r6 + 1)|0; + heap32[(r5+8)] = r6; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r4; + _ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(i7); + heap32[(g0)] = r0; + _ZN12gjkepa2_impl3GJK13EncloseOriginEv(i7); + r3 = r_g0; + if(r3 !=0) //_LBB544_26 +{ +__label__ = 25; +break _1; +} +else{ + r3 = heap32[(r1+93)]; + r4 = r3 >> 2; + r5 = heap32[(r4+8)]; + r5 = (r5 + -1)|0; + r6 = heap32[(r1+91)]; + r7 = r5 << 2; + r8 = r6 << 2; + r3 = (r3 + r7)|0; + r7 = (r0 + r8)|0; + r3 = r3 >> 2; + heap32[(r4+8)] = r5; + r4 = r7 >> 2; + r3 = heap32[(r3)]; + r5 = (r6 + 1)|0; + heap32[(r4+87)] = r3; + heap32[(r1+91)] = r5; +} +} +} + r2 = (r2 + 1)|0; +continue _23; +} +else{ +__label__ = 24; +break _1; +} +} +} +else{ +__label__ = 24; +} +} +} +} while(0); +switch(__label__ ){//multiple entries +case 24: + r0 = 0; + r_g0 = r0; + return; +break; +case 25: + r0 = 1; + r_g0 = r0; + return; +break; +} +} + +function _ZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRj(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; +var __label__ = 0; + i7 = sp + -96;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = sp + -12; + r2 = heap32[(fp+1)]; + r3 = r1 >> 2; + heap32[(fp+-3)] = r0; + r4 = heap32[(fp+2)]; + heap32[(r3+1)] = r2; + r5 = r0 >> 2; + heap32[(r3+2)] = r4; + r2 = r2 >> 2; + f0 = heapFloat[(r5+2)]; + f1 = heapFloat[(r2+2)]; + f2 = heapFloat[(r5+1)]; + f3 = heapFloat[(r2+1)]; + f4 = heapFloat[(r5)]; + f5 = heapFloat[(r2)]; + r3 = sp + -64; + f6 = f4-f5; + f7 = f2-f3; + r6 = r3 >> 2; + heapFloat[(fp+-16)] = f6; + f8 = f0-f1; + heapFloat[(r6+1)] = f7; + heapFloat[(r6+2)] = f8; + r4 = r4 >> 2; + heap32[(r6+3)] = 0; + f9 = heapFloat[(r4+2)]; + f10 = heapFloat[(r4+1)]; + f11 = heapFloat[(r4)]; + f5 = f5-f11; + f3 = f3-f10; + heapFloat[(r6+4)] = f5; + f1 = f1-f9; + heapFloat[(r6+5)] = f3; + heapFloat[(r6+6)] = f1; + f12 = f8*f5; + f13 = f6*f1; + f14 = f7*f1; + f15 = f8*f3; + f12 = f12-f13; + f13 = f14-f15; + f11 = f11-f4; + heap32[(r6+7)] = 0; + f14 = f6*f3; + f15 = f7*f5; + f14 = f14-f15; + f10 = f10-f2; + heapFloat[(r6+8)] = f11; + f15 = f13*f13; + f16 = f12*f12; + f9 = f9-f0; + heapFloat[(r6+9)] = f10; + f15 = f15+f16; + f16 = f14*f14; + f15 = f15+f16; + heapFloat[(r6+10)] = f9; + heap32[(r6+11)] = 0; + f16 = 0; + if(f15 >f16) //_LBB545_2 +{ + r6 = heap32[(fp+3)]; + r7 = heap32[(fp+4)]; + r8 = sp + -72; + r9 = r8 >> 2; + heap32[(fp+-18)] = 0; + r10 = 0; + f17 = -1; + heap32[(r9+1)] = 0; + heap32[(fp+-19)] = 0; + r18 = 0; +_3: while(true){ + f18 = f7*f14; + f19 = f8*f12; + f8 = f8*f13; + f20 = f6*f14; + f18 = f18-f19; + f8 = f8-f20; + f6 = f6*f12; + f7 = f7*f13; + f4 = f4*f18; + f2 = f2*f8; + f6 = f6-f7; + f2 = f4+f2; + f0 = f0*f6; + f0 = f2+f0; +_5: do { + if(f0 >f16) //_LBB545_5 +{ + r11 = _ZZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRjE4imd3; + r12 = r10 << 2; + r13 = (r11 + r12)|0; + r13 = r13 >> 2; + r13 = heap32[(r13)]; + r14 = r13 << 2; + r15 = (r1 + r14)|0; + r15 = r15 >> 2; + r15 = heap32[(r15)]; + r16 = sp + -76; + heap32[(g0)] = r0; + heap32[(g0+1)] = r15; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r16; + _ZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_PfRj(i7); + f0 = f_g0; +if(!(f17 =f17) //_LBB545_4 +{ +break _5; +} +} + r0 = heap32[(fp+-19)]; + r15 = 1; + r11 = (r11 + r14)|0; + r16 = r0 & 1; + r17 = r15 << r10; + r0 = r0 & 2; + r13 = r15 << r13; + r11 = r11 >> 2; + r15 = r16 == 0 ? r18 : r17; + r0 = r0 == 0 ? r18 : r13; + r11 = heap32[(r11)]; + r12 = (r6 + r12)|0; + r13 = r7 >> 2; + r0 = (r15 + r0)|0; + r11 = r11 << 2; + r14 = (r6 + r14)|0; + r12 = r12 >> 2; + heap32[(r13)] = r0; + r0 = (r6 + r11)|0; + r11 = r14 >> 2; + heap32[(r12)] = heap32[(fp+-18)]; + r0 = r0 >> 2; + heap32[(r11)] = heap32[(r9+1)]; + heap32[(r0)] = 0; + f17 = f0; +} +} while(0); + if(r10 ==2) //_LBB545_10 +{ +break _3; +} +else{ + r11 = (r10 + 1)|0; + r0 = r10 << 2; + r0 = (r1 + r0)|0; + r0 = r0 >> 2; + r10 = r10 << 4; + r0 = heap32[(r0+1)]; + r10 = (r3 + r10)|0; + r10 = r10 >> 2; + r12 = r0 >> 2; + f6 = heapFloat[(r10+4)]; + f7 = heapFloat[(r10+5)]; + f8 = heapFloat[(r10+6)]; + f4 = heapFloat[(r12)]; + f2 = heapFloat[(r12+1)]; + f0 = heapFloat[(r12+2)]; + r10 = r11; +} +} + if(f17 > 2; + sqrtf(i7); + f0 = f_g0; + f17 = f17/f15; + heap32[(r0)] = 7; + f2 = f13*f17; + f4 = heapFloat[(r2)]; + f6 = f12*f17; + f7 = heapFloat[(r2+1)]; + f8 = heapFloat[(r2+2)]; + f17 = f14*f17; + f7 = f7-f6; + f8 = f8-f17; + f4 = f4-f2; + f12 = f3*f8; + f13 = f1*f7; + f1 = f1*f4; + f8 = f5*f8; + f12 = f12-f13; + f1 = f1-f8; + f5 = f5*f7; + f3 = f3*f4; + f3 = f5-f3; + f4 = f12*f12; + f1 = f1*f1; + f1 = f4+f1; + f3 = f3*f3; + f1 = f1+f3; + heapFloat[(g0)] = f1; + sqrtf(i7); + r0 = r6 >> 2; + f1 = f_g0/f0; + heapFloat[(r0)] = f1; + f1 = heapFloat[(r4+2)]; + f3 = heapFloat[(r4+1)]; + f4 = heapFloat[(r4)]; + f3 = f3-f6; + f1 = f1-f17; + f4 = f4-f2; + f5 = f10*f1; + f7 = f9*f3; + f8 = f9*f4; + f1 = f11*f1; + f5 = f5-f7; + f1 = f8-f1; + f3 = f11*f3; + f4 = f10*f4; + f3 = f3-f4; + f4 = f5*f5; + f1 = f1*f1; + f1 = f4+f1; + f3 = f3*f3; + f1 = f1+f3; + heapFloat[(g0)] = f1; + sqrtf(i7); + f0 = f_g0/f0; + heapFloat[(r0+1)] = f0; + f1 = heapFloat[(r0)]; + f3 = 1; + f0 = f1+f0; + f1 = f2*f2; + f2 = f6*f6; + f0 = f3-f0; + f1 = f1+f2; + f17 = f17*f17; + heapFloat[(r0+2)] = f0; + f17 = f1+f17; +} +} +else{ + f17 = -1; +} + f_g0 = f17; + return; +} + +function _ZN12gjkepa2_impl3GJK8EvaluateERKNS_13MinkowskiDiffERK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var r19; + var r20; + var r21; + var r22; + var r23; + var r24; + var r25; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; +var __label__ = 0; + i7 = sp + -240;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = (r0 + 220)|0; + r3 = (r0 + 252)|0; + heap32[(r1+87)] = r2; + r2 = (r0 + 284)|0; + heap32[(r1+88)] = r3; + r3 = (r0 + 316)|0; + heap32[(r1+89)] = r2; + heap32[(r1+90)] = r3; + heap32[(r1+91)] = 4; + r2 = heap32[(fp+1)]; + heap32[(r1+92)] = 0; + r2 = r2 >> 2; + heap32[(r1+94)] = 0; + r4 = heap32[(r2+1)]; + r5 = heap32[(r2)]; + heap32[(r1)] = r5; + heap32[(r1+1)] = r4; + heap32[(r1+2)] = heap32[(r2+2)]; + heap32[(r1+3)] = heap32[(r2+3)]; + heap32[(r1+4)] = heap32[(r2+4)]; + heap32[(r1+5)] = heap32[(r2+5)]; + heap32[(r1+6)] = heap32[(r2+6)]; + heap32[(r1+7)] = heap32[(r2+7)]; + heap32[(r1+8)] = heap32[(r2+8)]; + heap32[(r1+9)] = heap32[(r2+9)]; + heap32[(r1+10)] = heap32[(r2+10)]; + heap32[(r1+11)] = heap32[(r2+11)]; + heap32[(r1+12)] = heap32[(r2+12)]; + heap32[(r1+13)] = heap32[(r2+13)]; + heap32[(r1+14)] = heap32[(r2+14)]; + heap32[(r1+15)] = heap32[(r2+15)]; + heap32[(r1+16)] = heap32[(r2+16)]; + heap32[(r1+17)] = heap32[(r2+17)]; + heap32[(r1+18)] = heap32[(r2+18)]; + heap32[(r1+19)] = heap32[(r2+19)]; + heap32[(r1+20)] = heap32[(r2+20)]; + heap32[(r1+21)] = heap32[(r2+21)]; + heap32[(r1+22)] = heap32[(r2+22)]; + heap32[(r1+23)] = heap32[(r2+23)]; + heap32[(r1+24)] = heap32[(r2+24)]; + heap32[(r1+25)] = heap32[(r2+25)]; + heap32[(r1+26)] = heap32[(r2+26)]; + heap32[(r1+27)] = heap32[(r2+27)]; + heap32[(r1+28)] = heap32[(r2+28)]; + heap32[(r1+29)] = heap32[(r2+29)]; + r4 = heap32[(r2+31)]; + r2 = heap32[(r2+30)]; + heap32[(r1+30)] = r2; + heap32[(r1+31)] = r4; + r2 = heap32[(fp+2)]; + heap32[(r1+36)] = 0; + r2 = r2 >> 2; + heap32[(r1+45)] = 0; + f0 = heapFloat[(r2)]; + heapFloat[(r1+32)] = f0; + f1 = heapFloat[(r2+1)]; + heapFloat[(r1+33)] = f1; + f2 = heapFloat[(r2+2)]; + f3 = f0*f0; + f4 = f1*f1; + f3 = f3+f4; + f4 = f2*f2; + f3 = f3+f4; + heapFloat[(r1+34)] = f2; + heap32[(r1+35)] = heap32[(r2+3)]; + f4 = 0; + if(f3 <=f4) //_LBB546_2 +{ + r2 = sp + -112; + r2 = r2 >> 2; + heap32[(fp+-28)] = 1065353216; + heap32[(r2+1)] = 0; + heap32[(r2+2)] = 0; + heap32[(r2+3)] = 0; +} +else{ + r2 = sp + -112; + f0 = -f0; + r2 = r2 >> 2; + f1 = -f1; + heapFloat[(fp+-28)] = f0; + f0 = -f2; + heapFloat[(r2+1)] = f1; + heapFloat[(r2+2)] = f0; + heap32[(r2+3)] = 0; +} + heap32[(r1+41)] = 0; + heap32[(r1+91)] = 3; + heap32[(r1+37)] = r3; + heap32[(r1+45)] = 1; + r2 = sp + -112; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r3; + _ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(i7); + heap32[(r1+41)] = 1065353216; + r2 = heap32[(r1+37)]; + r2 = r2 >> 2; + f0 = heapFloat[(r2+4)]; + heapFloat[(r1+32)] = f0; + f1 = heapFloat[(r2+5)]; + heapFloat[(r1+33)] = f1; + f2 = heapFloat[(r2+6)]; + heapFloat[(r1+34)] = f2; + f5 = heapFloat[(r2+7)]; + r2 = sp + -176; + r3 = r2 >> 2; + heapFloat[(r1+35)] = f5; + heapFloat[(r3+12)] = f0; + heapFloat[(r3+13)] = f1; + heapFloat[(r3+14)] = f2; + heapFloat[(r3+15)] = f5; + heapFloat[(r3+8)] = f0; + heapFloat[(r3+9)] = f1; + heapFloat[(r3+10)] = f2; + heapFloat[(r3+11)] = f5; + heapFloat[(r3+4)] = f0; + heapFloat[(r3+5)] = f1; + heapFloat[(r3+6)] = f2; + heapFloat[(r3+7)] = f5; + heapFloat[(fp+-44)] = f0; + heapFloat[(r3+1)] = f1; + r4 = (r0 + 148)|0; + heap32[(fp+-52)] = r4; + r4 = 0; + r5 = 1; + heap32[(fp+-53)] = r5; + heapFloat[(r3+2)] = f2; + heapFloat[(r3+3)] = f5; + heap32[(fp+-50)] = r5; + r24 = 0; +_5: while(true){ + f0 = f0*f0; + f1 = f1*f1; + r3 = heap32[(r1+92)]; + f0 = f0+f1; + f1 = f2*f2; + f0 = f0+f1; + heapFloat[(g0)] = f0; + sqrtf(i7); + f0 = f_g0; + f1 = 9.9999997473787516e-005; + if(f0 >=f1) //_LBB546_6 +{ + r5 = heap32[(fp+-53)]; + r5 = (r5 - r3)|0; + heap32[(fp+-51)] = r5; + f2 = heapFloat[(r1+34)]; + f5 = heapFloat[(r1+33)]; + f6 = heapFloat[(r1+32)]; + r5 = sp + -96; + f6 = -f6; + r6 = r5 >> 2; + f5 = -f5; + heapFloat[(fp+-24)] = f6; + r3 = (r3 * 36)|0; + f2 = -f2; + heapFloat[(r6+1)] = f5; + r7 = (r0 + r3)|0; + heapFloat[(r6+2)] = f2; + heap32[(r6+3)] = 0; + r6 = r7 >> 2; + r8 = heap32[(r6+45)]; + r8 = r8 << 2; + r8 = (r7 + r8)|0; + r8 = r8 >> 2; + heap32[(r8+41)] = 0; + r8 = heap32[(r1+91)]; + r8 = (r8 + -1)|0; + r9 = heap32[(r6+45)]; + r10 = r8 << 2; + r10 = (r0 + r10)|0; + r9 = r9 << 2; + r7 = (r7 + 148)|0; + r9 = (r7 + r9)|0; + r10 = r10 >> 2; + heap32[(r1+91)] = r8; + r8 = r9 >> 2; + r9 = heap32[(r10+87)]; + heap32[(r8)] = r9; + r8 = heap32[(r6+45)]; + r9 = r8 << 2; + r9 = (r7 + r9)|0; + r9 = r9 >> 2; + r9 = heap32[(r9)]; + r8 = (r8 + 1)|0; + heap32[(r6+45)] = r8; + heap32[(g0)] = r0; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r9; + _ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(i7); + r5 = heap32[(r6+45)]; + r8 = r5 << 2; + r7 = (r8 + r7)|0; + r7 = r7 >> 2; + r7 = heap32[(r7+-1)]; + r8 = 0; +_8: while(true){ + if(uint(r8) > 2; + r9 = r9 >> 2; + f2 = heapFloat[(r10+4)]; + f5 = heapFloat[(r9)]; + f6 = heapFloat[(r10+5)]; + f7 = heapFloat[(r9+1)]; + f2 = f2-f5; + f5 = f6-f7; + f6 = heapFloat[(r10+6)]; + f7 = heapFloat[(r9+2)]; + f6 = f6-f7; + f2 = f2*f2; + f5 = f5*f5; + f2 = f2+f5; + f5 = f6*f6; + f2 = f2+f5; + if(f2 > 2; + r7 = r7 >> 2; + heap32[(r8)] = heap32[(r7+4)]; + heap32[(r8+1)] = heap32[(r7+5)]; + heap32[(r8+2)] = heap32[(r7+6)]; + heap32[(r8+3)] = heap32[(r7+7)]; + f1 = heapFloat[(r1+32)]; + f2 = heapFloat[(r7+4)]; + f5 = heapFloat[(r1+33)]; + f6 = heapFloat[(r7+5)]; + f1 = f1*f2; + f2 = f5*f6; + f5 = heapFloat[(r1+34)]; + f6 = heapFloat[(r7+6)]; + f1 = f1+f2; + f2 = f5*f6; + f1 = f1+f2; + f1 = f1/f0; + f4 = f1 > f4 ? f1 : f4; + f1 = -9.9999997473787516e-005; + f2 = f0-f4; + f0 = f0*f1; + f0 = f2+f0; + f5 = 0; + if(f0 >f5) //_LBB546_13 +{ + heap32[(fp+-49)] = 0; +_14: do { + if(r5 ==2) //_LBB546_17 +{ + r5 = heap32[(r6+38)]; + r7 = heap32[(r6+37)]; + r7 = (r7 + 16)|0; + r5 = (r5 + 16)|0; + r8 = sp + -192; + r9 = sp + -196; + heap32[(g0)] = r7; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r9; + _ZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_PfRj(i7); + f3 = f_g0; +__label__ = 32; +break _14; +} +else{ + if(r5 ==3) //_LBB546_18 +{ + r5 = heap32[(r6+39)]; + r7 = heap32[(r6+38)]; + r8 = heap32[(r6+37)]; + r8 = (r8 + 16)|0; + r7 = (r7 + 16)|0; + r5 = (r5 + 16)|0; + r9 = sp + -192; + r10 = sp + -196; + heap32[(g0)] = r8; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r9; + heap32[(g0+4)] = r10; + _ZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRj(i7); + f3 = f_g0; +__label__ = 32; +} +else{ + if(r5 ==4) //_LBB546_19 +{ + r5 = heap32[(r6+40)]; + r7 = heap32[(r6+39)]; + r8 = heap32[(r6+38)]; + r9 = heap32[(r6+37)]; + r10 = sp + -16; + r11 = (r9 + 16)|0; + r12 = r10 >> 2; + r13 = (r8 + 16)|0; + heap32[(fp+-4)] = r11; + r11 = (r7 + 16)|0; + heap32[(r12+1)] = r13; + r13 = (r5 + 16)|0; + heap32[(r12+2)] = r11; + r9 = r9 >> 2; + heap32[(r12+3)] = r13; + r5 = r5 >> 2; + f0 = heapFloat[(r9+6)]; + f1 = heapFloat[(r5+6)]; + f2 = heapFloat[(r9+5)]; + f3 = heapFloat[(r5+5)]; + f6 = heapFloat[(r9+4)]; + f7 = heapFloat[(r5+4)]; + r11 = sp + -64; + f8 = f6-f7; + f9 = f2-f3; + r12 = r11 >> 2; + heapFloat[(fp+-16)] = f8; + f10 = f0-f1; + heapFloat[(r12+1)] = f9; + heapFloat[(r12+2)] = f10; + r8 = r8 >> 2; + heap32[(r12+3)] = 0; + f11 = heapFloat[(r8+6)]; + f12 = heapFloat[(r8+5)]; + f13 = heapFloat[(r8+4)]; + f14 = f13-f7; + f15 = f12-f3; + heapFloat[(r12+4)] = f14; + f16 = f11-f1; + heapFloat[(r12+5)] = f15; + heapFloat[(r12+6)] = f16; + r7 = r7 >> 2; + heap32[(r12+7)] = 0; + f17 = heapFloat[(r7+5)]; + f18 = heapFloat[(r7+4)]; + f19 = f9*f16; + f7 = f18-f7; + f20 = f10*f14; + f3 = f17-f3; + f21 = heapFloat[(r7+6)]; + f16 = f8*f16; + f19 = f19*f7; + f20 = f20*f3; + f22 = f11-f21; + f23 = f2-f12; + f18 = f13-f18; + f11 = f0-f11; + f12 = f12-f17; + f13 = f6-f13; + f17 = f19+f20; + f16 = f16*f3; + f14 = f9*f14; + f1 = f21-f1; + f19 = f8*f15; + f20 = f12*f11; + f21 = f22*f23; + f22 = f22*f13; + f11 = f18*f11; + f16 = f17-f16; + f14 = f14*f1; + f17 = f20-f21; + f11 = f22-f11; + f15 = f10*f15; + heapFloat[(r12+8)] = f7; + f18 = f18*f23; + f12 = f12*f13; + f13 = f16-f14; + f14 = f19*f1; + f12 = f18-f12; + heapFloat[(r12+9)] = f3; + f3 = f6*f17; + f2 = f2*f11; + f6 = f13+f14; + f7 = f15*f7; + f6 = f6-f7; + heapFloat[(r12+10)] = f1; + f1 = f3+f2; + f0 = f0*f12; + f0 = f1+f0; + heap32[(r12+11)] = 0; + f0 = f0*f6; + if(f0 >f5) //_LBB546_45 +{ +__label__ = 42; +break _5; +} +else{ + if(f6 > 2; + heap32[(fp+-19)] = 0; + heap32[(r14+1)] = 0; + r15 = 0; + f3 = -1; + heap32[(r14+2)] = 0; + heap32[(fp+-20)] = 0; +_27: while(true){ + r16 = _ZZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRjE4imd3; + r17 = r15 << 2; + r18 = (r16 + r17)|0; + r18 = r18 >> 2; + r18 = heap32[(r18)]; + r19 = r18 << 4; + r19 = (r11 + r19)|0; + r19 = r19 >> 2; + f0 = heapFloat[(r19+1)]; + f1 = heapFloat[(r19+2)]; + f2 = heapFloat[(r19)]; + f7 = f9*f1; + f11 = f10*f0; + f10 = f10*f2; + f1 = f8*f1; + f12 = heapFloat[(r5+4)]; + f7 = f7-f11; + f11 = heapFloat[(r5+5)]; + f1 = f10-f1; + f0 = f8*f0; + f2 = f9*f2; + f8 = f12*f7; + f1 = f11*f1; + f9 = heapFloat[(r5+6)]; + f0 = f0-f2; + f1 = f8+f1; + f0 = f9*f0; + f0 = f1+f0; + f0 = f0*f6; +_29: do { + if(f0 >f5) //_LBB546_27 +{ + r19 = r18 << 2; + r20 = (r10 + r19)|0; + r21 = (r10 + r17)|0; + r20 = r20 >> 2; + r21 = r21 >> 2; + r20 = heap32[(r20)]; + r21 = heap32[(r21)]; + r22 = sp + -80; + heap32[(g0)] = r21; + heap32[(g0+1)] = r20; + heap32[(g0+2)] = r13; + heap32[(g0+3)] = r12; + heap32[(g0+4)] = r22; + _ZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRj(i7); + f0 = f_g0; + f1 = 0; +if(!(f3 =f3) //_LBB546_26 +{ +break _29; +} +} + r20 = heap32[(fp+-20)]; + r21 = 1; + r22 = r20 & 1; + r23 = r21 << r15; + r25 = r20 & 2; + r18 = r21 << r18; + r16 = (r16 + r19)|0; + r21 = r22 == 0 ? r24 : r23; + r18 = r25 == 0 ? r24 : r18; + r20 = r20 & 4; + r22 = 8; + r23 = sp + -192; + r16 = r16 >> 2; + r18 = (r21 + r18)|0; + r20 = r20 == 0 ? r24 : r22; + r16 = heap32[(r16)]; + r17 = (r23 + r17)|0; + r18 = (r18 + r20)|0; + r16 = r16 << 2; + r19 = (r23 + r19)|0; + r17 = r17 >> 2; + heap32[(fp+-49)] = r18; + r16 = (r23 + r16)|0; + r18 = r19 >> 2; + heap32[(r17)] = heap32[(fp+-19)]; + r16 = r16 >> 2; + heap32[(r18)] = heap32[(r14+1)]; + r17 = r23 >> 2; + heap32[(r16)] = 0; + heap32[(r17+3)] = heap32[(r14+2)]; + f3 = f0; +} +} while(0); + if(r15 ==2) //_LBB546_32 +{ +break _27; +} +else{ + r16 = (r15 + 1)|0; + r15 = r15 << 4; + r15 = (r11 + r15)|0; + r15 = r15 >> 2; + f8 = heapFloat[(r15+4)]; + f9 = heapFloat[(r15+5)]; + f10 = heapFloat[(r15+6)]; + r15 = r16; +} +} + if(f3 > 2; + f2 = f8+f0; + f1 = f1/f6; + heapFloat[(r5+1)] = f0; + f0 = 1; + f2 = f2+f1; + r7 = 15; + f0 = f0-f2; + heapFloat[(r5+2)] = f1; + heapFloat[(r5+3)] = f0; +__label__ = 34; +} +else{ +__label__ = 32; +} +} +} +} +else{ +__label__ = 32; +} +} +} +} while(0); +if (__label__ == 32){ + f0 = 0; + if(f3 > 2; + heap32[(r9+45)] = 0; + heap32[(r1+32)] = 0; + heap32[(r1+33)] = 0; + heap32[(r1+34)] = 0; + heap32[(r1+35)] = 0; + heap32[(r1+92)] = r5; + r5 = heap32[(r6+45)]; +_42: do { +if(!(r5 ==0)) //_LBB546_43 +{ + r6 = heap32[(fp+-52)]; + r3 = (r6 + r3)|0; + r6 = 0; +_44: while(true){ + r10 = 1; + r10 = r10 << r6; + r10 = r7 & r10; + if(r10 ==0) //_LBB546_41 +{ + r10 = r6 << 2; + r11 = heap32[(r1+91)]; + r10 = (r3 + r10)|0; + r12 = r11 << 2; + r10 = r10 >> 2; + r12 = (r0 + r12)|0; + r10 = heap32[(r10)]; + r12 = r12 >> 2; + r11 = (r11 + 1)|0; + heap32[(r12+87)] = r10; + heap32[(r1+91)] = r11; +} +else{ + r10 = r6 << 2; + r11 = (r3 + r10)|0; + r12 = heap32[(r9+45)]; + r11 = r11 >> 2; + r13 = (r8 + 148)|0; + r12 = r12 << 2; + r12 = (r13 + r12)|0; + r14 = heap32[(r11)]; + r12 = r12 >> 2; + r15 = sp + -192; + heap32[(r12)] = r14; + r12 = heap32[(r9+45)]; + r10 = (r15 + r10)|0; + r14 = r12 << 2; + r10 = r10 >> 2; + r13 = (r13 + r14)|0; + f0 = heapFloat[(r10)]; + r10 = r13 >> 2; + r12 = (r12 + 1)|0; + heapFloat[(r10+4)] = f0; + heap32[(r9+45)] = r12; + r10 = heap32[(r11)]; + r10 = r10 >> 2; + f1 = heapFloat[(r10+4)]; + f2 = heapFloat[(r10+6)]; + f3 = heapFloat[(r10+5)]; + f6 = heapFloat[(r1+32)]; + f1 = f1*f0; + f1 = f6+f1; + heapFloat[(r1+32)] = f1; + f1 = f3*f0; + f3 = heapFloat[(r1+33)]; + f1 = f3+f1; + heapFloat[(r1+33)] = f1; + f0 = f2*f0; + f1 = heapFloat[(r1+34)]; + f0 = f1+f0; + heapFloat[(r1+34)] = f0; +} + r6 = (r6 + 1)|0; +if(!(r5 !=r6)) //_LBB546_39 +{ +break _42; +} +} +} +} while(0); +if(!(r7 !=15)) //_LBB546_46 +{ + heap32[(r1+94)] = 1; +} + r4 = (r4 + 1)|0; + if(uint(r4) > 2; + r4 = heap32[(r3+45)]; + r4 = (r4 + -1)|0; + r5 = r4 << 2; + r6 = heap32[(r1+91)]; + r2 = (r2 + r5)|0; + r5 = r6 << 2; + r2 = (r2 + 148)|0; + r5 = (r0 + r5)|0; + r2 = r2 >> 2; + heap32[(r3+45)] = r4; + r3 = r5 >> 2; + r2 = heap32[(r2)]; + r4 = (r6 + 1)|0; + heap32[(r3+87)] = r2; + heap32[(r1+91)] = r4; +break; +case 42: + r2 = heap32[(r1+92)]; + r2 = (r2 * 36)|0; + r2 = (r0 + r2)|0; + r4 = r2 >> 2; + r3 = heap32[(r4+45)]; + r3 = (r3 + -1)|0; + r5 = r3 << 2; + r6 = heap32[(r1+91)]; + r2 = (r2 + r5)|0; + r5 = r6 << 2; + r2 = (r2 + 148)|0; + r5 = (r0 + r5)|0; + r2 = r2 >> 2; + heap32[(r4+45)] = r3; + r4 = r5 >> 2; + r2 = heap32[(r2)]; + r3 = (r6 + 1)|0; + heap32[(r4+87)] = r2; + heap32[(r1+91)] = r3; +break; +case 5: + heap32[(r1+94)] = 1; +break; +case 44: + heap32[(r1+94)] = 2; +break; +case 12: + r2 = heap32[(r1+92)]; + r2 = (r2 * 36)|0; + r2 = (r0 + r2)|0; + r3 = r2 >> 2; + r4 = heap32[(r3+45)]; + r4 = (r4 + -1)|0; + r5 = r4 << 2; + r6 = heap32[(r1+91)]; + r2 = (r2 + r5)|0; + r5 = r6 << 2; + r2 = (r2 + 148)|0; + r5 = (r0 + r5)|0; + r2 = r2 >> 2; + heap32[(r3+45)] = r4; + r3 = r5 >> 2; + r2 = heap32[(r2)]; + r4 = (r6 + 1)|0; + heap32[(r3+87)] = r2; + heap32[(r1+91)] = r4; +break; +} + r2 = heap32[(r1+92)]; + r2 = (r2 * 36)|0; + r0 = (r0 + r2)|0; + r0 = (r0 + 148)|0; + heap32[(r1+93)] = r0; + r0 = heap32[(r1+94)]; + if(r0 ==1) //_LBB546_53 +{ + heap32[(r1+36)] = 0; + r0 = 1; +} +else{ +if(!(r0 !=0)) //_LBB546_54 +{ + f0 = heapFloat[(r1+32)]; + f1 = heapFloat[(r1+33)]; + f2 = heapFloat[(r1+34)]; + f0 = f0*f0; + f1 = f1*f1; + f0 = f0+f1; + f1 = f2*f2; + f0 = f0+f1; + heapFloat[(g0)] = f0; + sqrtf(i7); + heapFloat[(r1+36)] = f_g0; + r0 = heap32[(r1+94)]; + r_g0 = r0; + return; +} +} + r_g0 = r0; + return; +} + +function _ZN12gjkepa2_impl3EPA7newfaceEPNS_3GJK3sSVES3_S3_b(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+2450)]; +_1: do { + if(r1 ==0) //_LBB547_23 +{ + heap32[(r0)] = 5; + r1 = 0; +} +else{ + r2 = r1 >> 2; + r3 = heap32[(r2+13)]; +if(!(r3 ==0)) //_LBB547_3 +{ + r3 = r3 >> 2; + r4 = heap32[(r2+12)]; + heap32[(r3+12)] = r4; +} + r3 = heap32[(r2+12)]; +if(!(r3 ==0)) //_LBB547_5 +{ + r3 = r3 >> 2; + r4 = heap32[(r2+13)]; + heap32[(r3+13)] = r4; +} + r3 = heap32[(r0+2450)]; +if(!(r3 !=r1)) //_LBB547_7 +{ + r3 = heap32[(r2+13)]; + heap32[(r0+2450)] = r3; +} + r3 = heap32[(r0+2451)]; + r3 = (r3 + -1)|0; + heap32[(r0+2451)] = r3; + heap32[(r2+12)] = 0; + r3 = heap32[(r0+2448)]; + heap32[(r2+13)] = r3; + r3 = heap32[(r0+2448)]; +if(!(r3 ==0)) //_LBB547_9 +{ + r3 = r3 >> 2; + heap32[(r3+12)] = r1; +} + r3 = heap32[(fp+1)]; + r4 = heap32[(fp+2)]; + r5 = heap32[(fp+3)]; + heap32[(r0+2448)] = r1; + r6 = heap32[(r0+2449)]; + r6 = (r6 + 1)|0; + r7 = 0; + heap32[(r0+2449)] = r6; + heap8[r1+59] = r7; + heap32[(r2+6)] = r3; + heap32[(r2+7)] = r4; + heap32[(r2+8)] = r5; + r5 = r5 >> 2; + r3 = r3 >> 2; + r4 = r4 >> 2; + f0 = heapFloat[(r5+6)]; + f1 = heapFloat[(r3+6)]; + f2 = heapFloat[(r4+6)]; + f3 = heapFloat[(r5+5)]; + f4 = heapFloat[(r3+5)]; + f5 = heapFloat[(r4+5)]; + f5 = f5-f4; + f0 = f0-f1; + f1 = f2-f1; + f2 = f3-f4; + f3 = heapFloat[(r5+4)]; + f4 = heapFloat[(r3+4)]; + f6 = heapFloat[(r4+4)]; + f3 = f3-f4; + f4 = f6-f4; + f6 = f5*f0; + f7 = f1*f2; + f6 = f6-f7; + f1 = f1*f3; + f0 = f4*f0; + f0 = f1-f0; + heapFloat[(r2)] = f6; + f1 = f4*f2; + f2 = f5*f3; + f1 = f1-f2; + heapFloat[(r2+1)] = f0; + heapFloat[(r2+2)] = f1; + f2 = f6*f6; + f0 = f0*f0; + heap32[(r2+3)] = 0; + f0 = f2+f0; + f1 = f1*f1; + f0 = f0+f1; + heapFloat[(g0)] = f0; + sqrtf(i7); + f0 = f_g0; + f1 = heapFloat[(r5+6)]; + f2 = heapFloat[(r3+6)]; + f3 = heapFloat[(r4+6)]; + f4 = heapFloat[(r5+5)]; + f5 = heapFloat[(r3+5)]; + f6 = heapFloat[(r4+5)]; + f7 = heapFloat[(r5+4)]; + f8 = heapFloat[(r3+4)]; + f9 = heapFloat[(r4+4)]; + f10 = heapFloat[(r2)]; + f11 = f2-f3; + f12 = heapFloat[(r2+1)]; + f13 = f3-f1; + f14 = heapFloat[(r2+2)]; + f15 = f5-f6; + f16 = f8-f9; + f17 = f6-f4; + f18 = f9-f7; + f19 = f1-f2; + f20 = f4-f5; + f21 = f7-f8; + f22 = f12*f11; + f23 = f14*f15; + f24 = f14*f16; + f11 = f10*f11; + f25 = f12*f13; + f26 = f14*f17; + f27 = f14*f18; + f13 = f10*f13; + f22 = f22-f23; + f11 = f24-f11; + f23 = f25-f26; + f13 = f27-f13; + f15 = f10*f15; + f16 = f12*f16; + f17 = f10*f17; + f18 = f12*f18; + f24 = f12*f19; + f25 = f14*f20; + f26 = f14*f21; + f19 = f10*f19; + f15 = f15-f16; + f16 = f17-f18; + f17 = f24-f25; + f18 = f26-f19; + f8 = f8*f22; + f5 = f5*f11; + f9 = f9*f23; + f6 = f6*f13; + f11 = f10*f20; + f13 = f12*f21; + f11 = f11-f13; + f5 = f8+f5; + f2 = f2*f15; + f6 = f9+f6; + f3 = f3*f16; + f7 = f7*f17; + f4 = f4*f18; + f2 = f5+f2; + f3 = f6+f3; + f4 = f7+f4; + f1 = f1*f11; + f5 = 9.9999997473787516e-005; + f6 = 1; + f2 = f2 < f3 ? f2 : f3; + f1 = f4+f1; + f1 = f2 < f1 ? f2 : f1; + f2 = f0 > f5 ? f0 : f6; + f1 = f1/f2; + f2 = -0.0099999997764825821; + f3 = 0; + f1 = f1 < f2 ? f1 : f3; + heapFloat[(r2+5)] = f1; + if(f0 <=f5) //_LBB547_13 +{ + heap32[(r0)] = 2; +} +else{ + r4 = heap32[(fp+4)]; + f1 = heapFloat[(r3+4)]; + f2 = heapFloat[(r3+5)]; + f3 = heapFloat[(r3+6)]; + f1 = f1*f10; + f2 = f2*f12; + f1 = f1+f2; + f2 = f3*f14; + f1 = f1+f2; + f2 = f6/f0; + f0 = f1/f0; + f1 = f10*f2; + heapFloat[(r2+4)] = f0; + f3 = f12*f2; + heapFloat[(r2)] = f1; + f1 = f14*f2; + heapFloat[(r2+1)] = f3; + heapFloat[(r2+2)] = f1; + if(r4 !=0) //_LBB547_24 +{ +break _1; +} +else{ + f1 = -9.9999997473787516e-006; + if(f0 >=f1) //_LBB547_24 +{ +break _1; +} +else{ + heap32[(r0)] = 3; +} +} +} + r3 = heap32[(r2+13)]; +if(!(r3 ==0)) //_LBB547_16 +{ + r3 = r3 >> 2; + r4 = heap32[(r2+12)]; + heap32[(r3+12)] = r4; +} + r3 = heap32[(r2+12)]; +if(!(r3 ==0)) //_LBB547_18 +{ + r3 = r3 >> 2; + r4 = heap32[(r2+13)]; + heap32[(r3+13)] = r4; +} + r3 = heap32[(r0+2448)]; +if(!(r3 !=r1)) //_LBB547_20 +{ + r3 = heap32[(r2+13)]; + heap32[(r0+2448)] = r3; +} + r3 = heap32[(r0+2449)]; + r3 = (r3 + -1)|0; + heap32[(r0+2449)] = r3; + heap32[(r2+12)] = 0; + r3 = heap32[(r0+2450)]; + heap32[(r2+13)] = r3; + r2 = heap32[(r0+2450)]; +if(!(r2 ==0)) //_LBB547_22 +{ + r2 = r2 >> 2; + heap32[(r2+12)] = r1; +} + heap32[(r0+2450)] = r1; + r1 = heap32[(r0+2451)]; + r1 = (r1 + 1)|0; + heap32[(r0+2451)] = r1; + r0 = 0; + r_g0 = r0; + return; +} +} while(0); + r_g0 = r1; + return; +} + +function _ZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var f0; + var f1; + var f2; + var f3; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp+3)]; + r1 = heap32[(fp+1)]; + r2 = heapU8[r0+59]; +_1: do { +if(!(r2 ==r1)) //_LBB548_10 +{ + r2 = heap32[(fp)]; + r3 = heap32[(fp+2)]; + r4 = heap32[(fp+4)]; + r5 = heap32[(fp+5)]; + r6 = r0 >> 2; + r7 = r3 >> 2; + f0 = heapFloat[(r6)]; + f1 = heapFloat[(r7+4)]; + f2 = heapFloat[(r6+1)]; + f3 = heapFloat[(r7+5)]; + r8 = _ZZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRjE4imd3; + r9 = r4 << 2; + r8 = (r8 + r9)|0; + f0 = f0*f1; + f1 = f2*f3; + f2 = heapFloat[(r6+2)]; + f3 = heapFloat[(r7+6)]; + r7 = r8 >> 2; + f0 = f0+f1; + f1 = f2*f3; + r7 = heap32[(r7)]; + f0 = f0+f1; + f1 = heapFloat[(r6+4)]; + f0 = f0-f1; + f1 = -9.9999997473787516e-006; + if(f0 >=f1) //_LBB548_8 +{ + r4 = r7 << 2; + r4 = (r0 + r4)|0; + r7 = (r0 + r7)|0; + heap8[r0+59] = r1; + r4 = r4 >> 2; + r7 = heapU8[r7+56]; + r4 = heap32[(r4+9)]; + r8 = _ZZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonEE4i2m3; + r8 = (r8 + r9)|0; + r8 = r8 >> 2; + heap32[(g0)] = r2; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = r4; + heap32[(g0+4)] = r7; + heap32[(g0+5)] = r5; + r4 = heap32[(r8)]; + _ZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonE(i7); + r7 = r_g0; + if(r7 ==0) //_LBB548_10 +{ +break _1; +} +else{ + r7 = r4 << 2; + r7 = (r0 + r7)|0; + r4 = (r0 + r4)|0; + r7 = r7 >> 2; + r4 = heapU8[r4+56]; + r7 = heap32[(r7+9)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = r7; + heap32[(g0+4)] = r4; + heap32[(g0+5)] = r5; + _ZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonE(i7); + r1 = r_g0; + if(r1 !=0) //_LBB548_11 +{ + r1 = heap32[(r6+13)]; +if(!(r1 ==0)) //_LBB548_13 +{ + r1 = r1 >> 2; + r3 = heap32[(r6+12)]; + heap32[(r1+12)] = r3; +} + r1 = heap32[(r6+12)]; +if(!(r1 ==0)) //_LBB548_15 +{ + r1 = r1 >> 2; + r3 = heap32[(r6+13)]; + heap32[(r1+13)] = r3; +} + r1 = r2 >> 2; + r2 = heap32[(r1+2448)]; +if(!(r2 !=r0)) //_LBB548_17 +{ + r2 = heap32[(r6+13)]; + heap32[(r1+2448)] = r2; +} + r2 = heap32[(r1+2449)]; + r2 = (r2 + -1)|0; + heap32[(r1+2449)] = r2; + heap32[(r6+12)] = 0; + r2 = heap32[(r1+2450)]; + heap32[(r6+13)] = r2; + r2 = heap32[(r1+2450)]; +if(!(r2 ==0)) //_LBB548_19 +{ + r2 = r2 >> 2; + heap32[(r2+12)] = r0; +} + heap32[(r1+2450)] = r0; + r0 = heap32[(r1+2451)]; + r0 = (r0 + 1)|0; + heap32[(r1+2451)] = r0; +} +else{ +break _1; +} +} +} +else{ + r1 = (r0 + 24)|0; + r6 = r7 << 2; + r7 = (r1 + r9)|0; + r1 = (r1 + r6)|0; + r6 = r7 >> 2; + r1 = r1 >> 2; + r6 = heap32[(r6)]; + r1 = heap32[(r1)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r6; + heap32[(g0+3)] = r3; + heap32[(g0+4)] = 0; + _ZN12gjkepa2_impl3EPA7newfaceEPNS_3GJK3sSVES3_S3_b(i7); + r1 = r_g0; + if(r1 ==0) //_LBB548_10 +{ +break _1; +} +else{ + r2 = r1 >> 2; + heap8[r1+56] = r4; + r3 = (r0 + r9)|0; + r6 = (r0 + r4)|0; + r7 = 0; + heap32[(r2+9)] = r0; + r0 = r3 >> 2; + heap8[r6+56] = r7; + r3 = r5 >> 2; + heap32[(r0+9)] = r1; + r0 = heap32[(r3)]; + if(r0 ==0) //_LBB548_5 +{ + heap32[(r3+1)] = r1; +} +else{ + r5 = 2; + r6 = r0 >> 2; + heap8[r0+57] = r5; + r5 = 1; + heap32[(r6+10)] = r1; + heap8[r1+58] = r5; + heap32[(r2+11)] = r0; +} + heap32[(r3)] = r1; + r0 = heap32[(r3+2)]; + r0 = (r0 + 1)|0; + heap32[(r3+2)] = r0; +} +} + r0 = 1; + r_g0 = r0; + return; +} +} while(0); + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN15btGjkEpaSolver211PenetrationEPK13btConvexShapeRK11btTransformS2_S5_RK9btVector3RNS_8sResultsEb(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var r19; + var r20; + var r21; + var r22; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; +var __label__ = 0; + i7 = sp + -10400;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp+5)]; + r2 = heap32[(fp)]; + r3 = heap32[(fp+2)]; + r4 = heap32[(fp+3)]; + r5 = sp + -176; + r6 = heap32[(fp+6)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = r4; + heap32[(g0+4)] = r1; + heap32[(g0+5)] = r5; + heap32[(g0+6)] = r6; + r2 = sp + -560; + r3 = r2 >> 2; + _ZN12gjkepa2_implL10InitializeEPK13btConvexShapeRK11btTransformS2_S5_RN15btGjkEpaSolver28sResultsERNS_13MinkowskiDiffEb(i7); + heap32[(r3+32)] = 0; + heap32[(r3+33)] = 0; + heap32[(r3+34)] = 0; + heap32[(r3+35)] = 0; + heap32[(r3+91)] = 0; + heap32[(r3+94)] = 2; + r4 = heap32[(fp+4)]; + heap32[(r3+92)] = 0; + r4 = r4 >> 2; + heap32[(r3+36)] = 0; + f0 = heapFloat[(r4+2)]; + f1 = heapFloat[(r4+1)]; + f2 = heapFloat[(r4)]; + r6 = sp + -48; + f2 = -f2; + r7 = r6 >> 2; + f1 = -f1; + heapFloat[(fp+-12)] = f2; + f0 = -f0; + heapFloat[(r7+1)] = f1; + heapFloat[(r7+2)] = f0; + heap32[(r7+3)] = 0; + heap32[(g0)] = r2; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r6; + _ZN12gjkepa2_impl3GJK8EvaluateERKNS_13MinkowskiDiffERK9btVector3(i7); + r6 = r_g0; + if(r6 ==2) //_LBB549_71 +{ + r0 = r1 >> 2; + heap32[(r0)] = 2; +} +else{ +if(!(r6 !=1)) //_LBB549_72 +{ + r6 = sp + -10368; + r7 = r6 >> 2; + heap32[(r7+2448)] = 0; + heap32[(r7+2449)] = 0; + heap32[(r7+2450)] = 0; + heap32[(r7+2451)] = 0; + heap32[(fp+-2592)] = 9; + heap32[(r7+10)] = 0; + heap32[(r7+11)] = 0; + heap32[(r7+12)] = 0; + heap32[(r7+13)] = 0; + r8 = 0; + r9 = (r6 + 9780)|0; + r10 = (r6 + 9728)|0; + heap32[(r7+14)] = 0; + heap32[(r7+2447)] = 0; + r11 = r8; + r12 = r8; + r13 = r8; +_5: while(true){ + r14 = 127; + r14 = (r14 - r13)|0; + r15 = (r9 + r8)|0; + r14 = (r14 * 60)|0; + r14 = (r6 + r14)|0; + r15 = r15 >> 2; + r14 = (r14 + 2108)|0; + r16 = (r10 + r8)|0; + heap32[(r15+-1)] = 0; + heap32[(r15)] = r12; + if(r12 !=0) //_LBB549_5 +{ + r11 = r12 >> 2; + heap32[(r11+12)] = r16; + r11 = heap32[(r7+2451)]; +} + r8 = (r8 + -60)|0; + r13 = (r13 + 1)|0; + r11 = (r11 + 1)|0; + heap32[(r7+2450)] = r16; + heap32[(r7+2451)] = r11; + r12 = r14; +if(!(r8 !=-7680)) //_LBB549_3 +{ +break _5; +} +} + r3 = heap32[(r3+93)]; + f0 = heapFloat[(r4+2)]; + f1 = heapFloat[(r4+1)]; + f2 = heapFloat[(r4)]; + r3 = r3 >> 2; + r4 = heap32[(r3+8)]; + if(uint(r4) > 2; + r9 = heap32[(r8+13)]; +if(!(r9 ==0)) //_LBB549_12 +{ + r9 = r9 >> 2; + r10 = heap32[(r8+12)]; + heap32[(r9+12)] = r10; +} + r9 = heap32[(r8+12)]; +if(!(r9 ==0)) //_LBB549_14 +{ + r9 = r9 >> 2; + r10 = heap32[(r8+13)]; + heap32[(r9+13)] = r10; +} + r9 = heap32[(r7+2448)]; +if(!(r9 !=r4)) //_LBB549_16 +{ + r9 = heap32[(r8+13)]; + heap32[(r7+2448)] = r9; +} + r9 = heap32[(r7+2449)]; + r9 = (r9 + -1)|0; + heap32[(r7+2449)] = r9; + heap32[(r8+12)] = 0; + r9 = heap32[(r7+2450)]; + heap32[(r8+13)] = r9; + r8 = heap32[(r7+2450)]; +if(!(r8 ==0)) //_LBB549_18 +{ + r8 = r8 >> 2; + heap32[(r8+12)] = r4; +} + heap32[(r7+2450)] = r4; + r4 = heap32[(r7+2451)]; + r4 = (r4 + 1)|0; + heap32[(r7+2451)] = r4; + r4 = heap32[(r7+2448)]; +if(!(r4 !=0)) //_LBB549_10 +{ +break _14; +} +} +} +} while(0); + heap32[(fp+-2592)] = 0; + heap32[(r7+2447)] = 0; + r4 = heap32[(r3+1)]; + r8 = heap32[(r3)]; + r9 = heap32[(r3+3)]; + r10 = r8 >> 2; + r11 = r4 >> 2; + r9 = r9 >> 2; + r12 = heap32[(r3+2)]; + r13 = r12 >> 2; + f3 = heapFloat[(r11+6)]; + f4 = heapFloat[(r9+6)]; + f5 = heapFloat[(r10+6)]; + f6 = heapFloat[(r10+5)]; + f7 = heapFloat[(r9+5)]; + f8 = heapFloat[(r11+4)]; + f9 = heapFloat[(r9+4)]; + f10 = heapFloat[(r13+5)]; + f11 = heapFloat[(r10+4)]; + f12 = heapFloat[(r13+4)]; + f3 = f3-f4; + f6 = f6-f7; + f8 = f8-f9; + f5 = f5-f4; + f11 = f11-f9; + f13 = f6*f3; + f9 = f12-f9; + f12 = f5*f8; + f10 = f10-f7; + f3 = f11*f3; + f14 = heapFloat[(r13+6)]; + f15 = heapFloat[(r11+5)]; + f13 = f13*f9; + f12 = f12*f10; + f7 = f15-f7; + f12 = f13+f12; + f3 = f3*f10; + f6 = f6*f8; + f4 = f14-f4; + f8 = f11*f7; + f3 = f12-f3; + f6 = f6*f4; + f5 = f5*f7; + f3 = f3-f6; + f4 = f8*f4; + f3 = f3+f4; + f4 = f5*f9; + f3 = f3-f4; + f4 = 0; + if(f3 > 2; + f0 = heapFloat[(r11+4)]; + f0 = f0*f0; + f1 = heapFloat[(r11+5)]; +_35: while(true){ + f2 = f1; + r11 = r3; + f3 = f0; +_37: while(true){ + r3 = r3 >> 2; + r3 = heap32[(r3+13)]; + if(r3 !=0) //_LBB549_24 +{ + r12 = r3 >> 2; + f1 = heapFloat[(r12+5)]; +if(!(f1 =f3)) //_LBB549_27 +{ +continue _35; +} +} +} +else{ +break _35; +} +} +} + r3 = r11 >> 2; + f0 = heapFloat[(r3)]; + f1 = heapFloat[(r3+1)]; + f2 = heapFloat[(r3+2)]; + f3 = heapFloat[(r3+3)]; + f4 = heapFloat[(r3+4)]; + f5 = heapFloat[(r3+5)]; + r12 = heap32[(r3+6)]; + r13 = heap32[(r3+7)]; + r3 = heap32[(r3+8)]; + r14 = 0; + r15 = r4 >> 2; + heap8[r4+56] = r14; + heap32[(r15+9)] = r8; + r16 = r8 >> 2; + heap8[r8+56] = r14; + heap32[(r16+9)] = r4; + heap8[r4+57] = r14; + r17 = 1; + heap32[(r15+10)] = r9; + r18 = r9 >> 2; + heap8[r9+56] = r17; + heap32[(r18+9)] = r4; + heap8[r4+58] = r14; + r19 = 2; + heap32[(r15+11)] = r10; + r15 = r10 >> 2; + heap8[r10+56] = r19; + heap32[(r15+9)] = r4; + heap8[r8+57] = r19; + heap32[(r16+10)] = r10; + heap8[r10+58] = r17; + heap32[(r15+11)] = r8; + heap8[r8+58] = r17; + heap32[(r16+11)] = r9; + heap8[r9+57] = r19; + heap32[(r18+10)] = r8; + heap8[r9+58] = r17; + heap32[(r18+11)] = r10; + heap8[r10+57] = r19; + heap32[(r15+10)] = r9; + heap32[(fp+-2592)] = 0; +_42: while(true){ + r4 = (r14 + 1)|0; +_44: while(true){ + if(uint(r14) uint(63)) //_LBB549_54 +{ +__label__ = 53; +break _42; +} +else{ + r9 = sp + -16; + r10 = r9 >> 2; + heap32[(fp+-4)] = 0; + heap32[(r10+1)] = 0; + r15 = (r8 + 1)|0; + heap32[(r10+2)] = 0; + r8 = r8 << 5; + heap32[(r7+2447)] = r15; + r8 = (r6 + r8)|0; + heap8[r11+59] = r4; + r15 = (r8 + 60)|0; + heap32[(g0)] = r2; + heap32[(g0+1)] = r11; + heap32[(g0+2)] = r15; + r8 = r8 >> 2; + _ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(i7); + r16 = r11 >> 2; + f6 = heapFloat[(r16)]; + f7 = heapFloat[(r8+19)]; + f8 = heapFloat[(r16+1)]; + f9 = heapFloat[(r8+20)]; + f6 = f6*f7; + f7 = f8*f9; + f8 = heapFloat[(r16+2)]; + f9 = heapFloat[(r8+21)]; + f6 = f6+f7; + f7 = f8*f9; + f6 = f6+f7; + f7 = heapFloat[(r16+4)]; + f6 = f6-f7; + f7 = 9.9999997473787516e-005; + if(f6 <=f7) //_LBB549_53 +{ +__label__ = 52; +break _42; +} +else{ + r14 = (r14 + 1)|0; + r8 = (r11 + 1)|0; + r18 = 0; + r20 = r17; +_49: while(true){ + r21 = r18 << 2; + r21 = (r11 + r21)|0; + r22 = (r8 + r18)|0; + r21 = r21 >> 2; + r22 = heapU8[r22+55]; + r21 = heap32[(r21+9)]; + heap32[(g0)] = r6; + heap32[(g0+1)] = r14; + heap32[(g0+2)] = r15; + heap32[(g0+3)] = r21; + heap32[(g0+4)] = r22; + heap32[(g0+5)] = r9; + _ZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonE(i7); + r18 = (r18 + 1)|0; + r20 = r_g0 & r20; + if(uint(r18) >uint(2)) //_LBB549_35 +{ +break _49; +} +else{ +if(!(r20 !=0)) //_LBB549_33 +{ +break _49; +} +} +} + if(r20 !=1) //_LBB549_52 +{ +__label__ = 51; +break _42; +} +else{ + r8 = heap32[(r10+2)]; + if(uint(r8) > 2; + heap8[r8+57] = r19; + r15 = 1; + heap32[(r10+10)] = r9; + r10 = r9 >> 2; + heap8[r9+58] = r15; + heap32[(r10+11)] = r8; + r8 = heap32[(r16+13)]; +if(!(r8 ==0)) //_LBB549_39 +{ + r8 = r8 >> 2; + r9 = heap32[(r16+12)]; + heap32[(r8+12)] = r9; +} + r8 = heap32[(r16+12)]; +if(!(r8 ==0)) //_LBB549_41 +{ + r8 = r8 >> 2; + r9 = heap32[(r16+13)]; + heap32[(r8+13)] = r9; +} + r8 = heap32[(r7+2448)]; +if(!(r8 !=r11)) //_LBB549_43 +{ + r8 = heap32[(r16+13)]; + heap32[(r7+2448)] = r8; +} + r8 = heap32[(r7+2449)]; + r8 = (r8 + -1)|0; + heap32[(r7+2449)] = r8; + heap32[(r16+12)] = 0; + r8 = heap32[(r7+2450)]; + heap32[(r16+13)] = r8; + r8 = heap32[(r7+2450)]; +if(!(r8 ==0)) //_LBB549_45 +{ + r8 = r8 >> 2; + heap32[(r8+12)] = r11; +} + heap32[(r7+2450)] = r11; + r11 = heap32[(r7+2451)]; + r11 = (r11 + 1)|0; + heap32[(r7+2451)] = r11; + r8 = heap32[(r7+2448)]; + r11 = r8 >> 2; + f6 = heapFloat[(r11+4)]; + f6 = f6*f6; + f7 = heapFloat[(r11+5)]; +_67: while(true){ + f8 = f7; + r11 = r8; + f9 = f6; +_69: while(true){ + r8 = r8 >> 2; + r8 = heap32[(r8+13)]; + if(r8 !=0) //_LBB549_46 +{ + r9 = r8 >> 2; + f7 = heapFloat[(r9+5)]; +if(!(f7 =f9)) //_LBB549_49 +{ +continue _67; +} +} +} +else{ +break _67; +} +} +} + r8 = r11 >> 2; + f6 = heapFloat[(r8+5)]; + r4 = (r4 + 1)|0; +if(!(f6 > 2; + r2 = r13 >> 2; + f2 = f2*f4; + f3 = heapFloat[(r3+6)]; + f5 = heapFloat[(r2+6)]; + f1 = f1*f4; + f6 = heapFloat[(r3+5)]; + f7 = heapFloat[(r2+5)]; + f0 = f0*f4; + f4 = heapFloat[(r3+4)]; + f8 = heapFloat[(r2+4)]; + f5 = f5-f2; + f6 = f6-f1; + f8 = f8-f0; + f3 = f3-f2; + f7 = f7-f1; + f4 = f4-f0; + f9 = f7*f3; + f10 = f5*f6; + f5 = f5*f4; + f3 = f8*f3; + f9 = f9-f10; + f3 = f5-f3; + f5 = f8*f6; + f4 = f7*f4; + f4 = f5-f4; + f5 = f9*f9; + f3 = f3*f3; + f3 = f5+f3; + f4 = f4*f4; + f3 = f3+f4; + heapFloat[(g0)] = f3; + sqrtf(i7); + heapFloat[(r7+5)] = f_g0; + r4 = r12 >> 2; + f3 = heapFloat[(r4+6)]; + f4 = heapFloat[(r4+5)]; + f5 = heapFloat[(r4+4)]; + f6 = heapFloat[(r3+6)]; + f7 = heapFloat[(r3+5)]; + f8 = heapFloat[(r3+4)]; + f6 = f6-f2; + f4 = f4-f1; + f8 = f8-f0; + f3 = f3-f2; + f7 = f7-f1; + f5 = f5-f0; + f9 = f7*f3; + f10 = f6*f4; + f6 = f6*f5; + f3 = f8*f3; + f9 = f9-f10; + f3 = f6-f3; + f4 = f8*f4; + f5 = f7*f5; + f4 = f4-f5; + f5 = f9*f9; + f3 = f3*f3; + f3 = f5+f3; + f4 = f4*f4; + f3 = f3+f4; + heapFloat[(g0)] = f3; + sqrtf(i7); + heapFloat[(r7+6)] = f_g0; + f3 = heapFloat[(r2+6)]; + f4 = heapFloat[(r2+5)]; + f5 = heapFloat[(r2+4)]; + f6 = heapFloat[(r4+6)]; + f7 = heapFloat[(r4+5)]; + f8 = heapFloat[(r4+4)]; + f6 = f6-f2; + f4 = f4-f1; + f8 = f8-f0; + f2 = f3-f2; + f1 = f7-f1; + f0 = f5-f0; + f3 = f1*f2; + f5 = f6*f4; + f6 = f6*f0; + f2 = f8*f2; + f3 = f3-f5; + f2 = f6-f2; + f4 = f8*f4; + f0 = f1*f0; + f0 = f4-f0; + f1 = f3*f3; + f2 = f2*f2; + f1 = f1+f2; + f0 = f0*f0; + f0 = f1+f0; + heapFloat[(g0)] = f0; + sqrtf(i7); + f1 = heapFloat[(r7+5)]; + f2 = heapFloat[(r7+6)]; + f3 = f1+f2; + f3 = f3+f_g0; + f1 = f1/f3; + f2 = f2/f3; + heapFloat[(r7+5)] = f1; + f0 = f_g0/f3; + heapFloat[(r7+6)] = f2; + heapFloat[(r7+7)] = f0; +__label__ = 60; +} +} +} +if (__label__ == 56){ + heap32[(fp+-2592)] = 8; + heapFloat[(r7+10)] = f2; + heapFloat[(r7+11)] = f1; + heapFloat[(r7+12)] = f0; + f2 = f2*f2; + f1 = f1*f1; + heap32[(r7+13)] = 0; + f1 = f2+f1; + f0 = f0*f0; + f0 = f1+f0; + heapFloat[(g0)] = f0; + sqrtf(i7); + f0 = f_g0; + f1 = 0; + if(f0 >f1) //_LBB549_59 +{ + f1 = 1; + f2 = heapFloat[(r7+12)]; + f0 = f1/f0; + f1 = heapFloat[(r7+11)]; + f3 = heapFloat[(r7+10)]; + f2 = f2*f0; + f1 = f1*f0; + f0 = f3*f0; +} +else{ + f0 = 1; + f2 = f1; +} + heapFloat[(r7+10)] = f0; + heapFloat[(r7+11)] = f1; + heapFloat[(r7+12)] = f2; + heap32[(r7+13)] = 0; + heap32[(r7+14)] = 0; + heap32[(r7+9)] = 1; + r2 = heap32[(r3)]; + heap32[(r7+1)] = r2; + heap32[(r7+5)] = 1065353216; +} + r2 = heap32[(fp+-2592)]; + if(r2 ==9) //_LBB549_70 +{ + r1 = r1 >> 2; + heap32[(r1)] = 3; + r1 = 0; + r_g0 = r1; + return; +} +else{ + r2 = heap32[(r7+9)]; +_90: do { + if(r2 !=0) //_LBB549_64 +{ + r2 = 0; + f0 = 0; + f1 = f0; + f2 = f0; +_92: while(true){ + r3 = r2 << 2; + r3 = (r6 + r3)|0; + r4 = r5 >> 2; + r3 = r3 >> 2; + r8 = heap32[(r4+30)]; + r2 = (r2 + 1)|0; + r9 = heap32[(r3+1)]; + r10 = heap32[(fp+-44)]; + r4 = heap32[(r4+31)]; + r11 = r8 & 1; + if(r11 != 0) //_LBB549_67 +{ + r11 = (r10 + r4)|0; + r11 = r11 >> 2; + r11 = heap32[(r11)]; + r8 = (r8 + r11)|0; + r8 = (r8 + -1)|0; + r8 = r8 >> 2; + r8 = heap32[(r8)]; +} + r11 = sp + -32; + r4 = (r10 + r4)|0; + heap32[(g0)] = r11; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r9; + __FUNCTION_TABLE__[(r8)>>2](i7); + r4 = r11 >> 2; + f3 = heapFloat[(fp+-8)]; + f4 = heapFloat[(r3+5)]; + f5 = heapFloat[(r4+1)]; + f6 = heapFloat[(r4+2)]; + f3 = f3*f4; + f5 = f5*f4; + f4 = f6*f4; + f2 = f2+f3; + f1 = f1+f5; + f0 = f0+f4; + r3 = heap32[(r7+9)]; +if(!(uint(r3) >uint(r2))) //_LBB549_65 +{ +break _90; +} +} +} +else{ + f0 = 0; + f1 = f0; + f2 = f0; +} +} while(0); + r1 = r1 >> 2; + r0 = r0 >> 2; + heap32[(r1)] = 1; + f3 = heapFloat[(r0)]; + f4 = heapFloat[(r0+1)]; + f5 = heapFloat[(r0+4)]; + f6 = heapFloat[(r0+5)]; + f3 = f3*f2; + f4 = f4*f1; + f7 = heapFloat[(r0+2)]; + f8 = heapFloat[(r0+8)]; + f9 = heapFloat[(r0+9)]; + f10 = heapFloat[(r0+6)]; + f5 = f5*f2; + f6 = f6*f1; + f3 = f3+f4; + f4 = f7*f0; + f7 = heapFloat[(r0+10)]; + f8 = f8*f2; + f9 = f9*f1; + f5 = f5+f6; + f6 = f10*f0; + f3 = f3+f4; + f4 = heapFloat[(r0+12)]; + f10 = heapFloat[(r0+14)]; + f11 = heapFloat[(r0+13)]; + f5 = f5+f6; + f6 = f8+f9; + f7 = f7*f0; + f3 = f3+f4; + f4 = f6+f7; + f5 = f5+f11; + heapFloat[(r1+1)] = f3; + f3 = f4+f10; + heapFloat[(r1+2)] = f5; + heapFloat[(r1+3)] = f3; + heap32[(r1+4)] = 0; + f3 = heapFloat[(r7+14)]; + f4 = heapFloat[(r7+11)]; + f5 = heapFloat[(r7+10)]; + f6 = heapFloat[(r7+12)]; + f7 = f5*f3; + f8 = f4*f3; + f9 = f6*f3; + f2 = f2-f7; + f7 = heapFloat[(r0)]; + f1 = f1-f8; + f8 = heapFloat[(r0+1)]; + f10 = heapFloat[(r0+4)]; + f11 = heapFloat[(r0+5)]; + f7 = f7*f2; + f8 = f8*f1; + f0 = f0-f9; + f9 = heapFloat[(r0+2)]; + f12 = heapFloat[(r0+8)]; + f13 = heapFloat[(r0+9)]; + f14 = heapFloat[(r0+6)]; + f10 = f10*f2; + f11 = f11*f1; + f7 = f7+f8; + f8 = f9*f0; + f9 = heapFloat[(r0+10)]; + f2 = f12*f2; + f1 = f13*f1; + f10 = f10+f11; + f11 = f14*f0; + f7 = f7+f8; + f8 = heapFloat[(r0+12)]; + f12 = heapFloat[(r0+14)]; + f13 = heapFloat[(r0+13)]; + f10 = f10+f11; + f1 = f2+f1; + f0 = f9*f0; + f2 = f7+f8; + f0 = f1+f0; + f1 = f10+f13; + heapFloat[(r1+5)] = f2; + f0 = f0+f12; + heapFloat[(r1+6)] = f1; + heapFloat[(r1+7)] = f0; + f0 = -f5; + heap32[(r1+8)] = 0; + f1 = -f4; + heapFloat[(r1+9)] = f0; + f0 = -f6; + heapFloat[(r1+10)] = f1; + heapFloat[(r1+11)] = f0; + f0 = -f3; + heap32[(r1+12)] = 0; + heapFloat[(r1+13)] = f0; + r1 = 1; + r_g0 = r1; + return; +} +} +} + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN15btGjkEpaSolver28DistanceEPK13btConvexShapeRK11btTransformS2_S5_RK9btVector3RNS_8sResultsE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; +var __label__ = 0; + i7 = sp + -592;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp+5)]; + r2 = heap32[(fp)]; + r3 = heap32[(fp+2)]; + r4 = heap32[(fp+3)]; + r5 = sp + -176; + heap32[(g0)] = r2; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = r4; + heap32[(g0+4)] = r1; + heap32[(g0+5)] = r5; + heap32[(g0+6)] = 0; + r2 = sp + -560; + r3 = r2 >> 2; + _ZN12gjkepa2_implL10InitializeEPK13btConvexShapeRK11btTransformS2_S5_RN15btGjkEpaSolver28sResultsERNS_13MinkowskiDiffEb(i7); + heap32[(r3+32)] = 0; + heap32[(r3+33)] = 0; + heap32[(r3+34)] = 0; + heap32[(r3+35)] = 0; + heap32[(r3+91)] = 0; + heap32[(r3+94)] = 2; + heap32[(r3+92)] = 0; + heap32[(r3+36)] = 0; + r4 = heap32[(fp+4)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r4; + _ZN12gjkepa2_impl3GJK8EvaluateERKNS_13MinkowskiDiffERK9btVector3(i7); + r2 = r_g0; + if(r2 ==0) //_LBB550_3 +{ + r2 = heap32[(r3+93)]; + r4 = r2 >> 2; + r4 = heap32[(r4+8)]; +_3: do { + if(r4 !=0) //_LBB550_5 +{ + r4 = 0; + f0 = 0; + f1 = f0; + f2 = f0; + f3 = f0; + f4 = f0; + f5 = f0; +_5: while(true){ + r6 = r4 << 2; + r2 = (r2 + r6)|0; + r2 = r2 >> 2; + r7 = r5 >> 2; + r8 = heap32[(r7+30)]; + r4 = (r4 + 1)|0; + f6 = heapFloat[(r2+4)]; + r2 = heap32[(r2)]; + r9 = heap32[(fp+-44)]; + r10 = heap32[(r7+31)]; + r11 = r8 & 1; + if(r11 != 0) //_LBB550_8 +{ + r11 = (r9 + r10)|0; + r11 = r11 >> 2; + r11 = heap32[(r11)]; + r8 = (r8 + r11)|0; + r8 = (r8 + -1)|0; + r8 = r8 >> 2; + r8 = heap32[(r8)]; +} + r11 = sp + -48; + r9 = (r9 + r10)|0; + heap32[(g0)] = r11; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r2; + __FUNCTION_TABLE__[(r8)>>2](i7); + r2 = heap32[(r3+93)]; + r2 = (r2 + r6)|0; + r2 = r2 >> 2; + r6 = r11 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + f7 = heapFloat[(fp+-12)]; + f8 = heapFloat[(r6+1)]; + f9 = heapFloat[(r6+2)]; + f10 = heapFloat[(r2+2)]; + f11 = heapFloat[(r2+1)]; + f12 = heapFloat[(r2)]; + f7 = f7*f6; + f8 = f8*f6; + f9 = f9*f6; + r2 = heap32[(r7+30)]; + f5 = f5+f7; + f4 = f4+f8; + f3 = f3+f9; + f7 = -f10; + f8 = -f11; + f9 = -f12; + r6 = heap32[(r7+1)]; + r8 = heap32[(r7+31)]; + r9 = r2 & 1; + if(r9 != 0) //_LBB550_11 +{ + r9 = (r6 + r8)|0; + r9 = r9 >> 2; + r9 = heap32[(r9)]; + r2 = (r2 + r9)|0; + r2 = (r2 + -1)|0; + r2 = r2 >> 2; + r2 = heap32[(r2)]; +} + f10 = heapFloat[(r7+2)]; + f11 = heapFloat[(r7+3)]; + f12 = heapFloat[(r7+6)]; + f13 = heapFloat[(r7+7)]; + f10 = f10*f9; + f11 = f11*f8; + f14 = heapFloat[(r7+4)]; + f15 = heapFloat[(r7+10)]; + f16 = heapFloat[(r7+11)]; + f17 = heapFloat[(r7+12)]; + f18 = heapFloat[(r7+8)]; + f12 = f12*f9; + f13 = f13*f8; + f10 = f10+f11; + f11 = f14*f7; + r9 = sp + -16; + f9 = f15*f9; + f8 = f16*f8; + f12 = f12+f13; + f13 = f18*f7; + f10 = f10+f11; + r10 = r9 >> 2; + f8 = f9+f8; + f7 = f17*f7; + f9 = f12+f13; + heapFloat[(fp+-4)] = f10; + f7 = f8+f7; + heapFloat[(r10+1)] = f9; + heapFloat[(r10+2)] = f7; + heap32[(r10+3)] = 0; + r10 = sp + -32; + r6 = (r6 + r8)|0; + heap32[(g0)] = r10; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r9; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r10 >> 2; + f7 = heapFloat[(r7+14)]; + f8 = heapFloat[(fp+-8)]; + f9 = heapFloat[(r7+18)]; + f10 = heapFloat[(r7+22)]; + f11 = heapFloat[(r7+15)]; + f12 = heapFloat[(r2+1)]; + f13 = heapFloat[(r7+19)]; + f14 = heapFloat[(r7+23)]; + f7 = f7*f8; + f11 = f11*f12; + f15 = heapFloat[(r7+16)]; + f16 = heapFloat[(r2+2)]; + f17 = heapFloat[(r7+20)]; + f18 = heapFloat[(r7+24)]; + f9 = f9*f8; + f13 = f13*f12; + f8 = f10*f8; + f10 = f14*f12; + f7 = f7+f11; + f11 = f15*f16; + f9 = f9+f13; + f12 = f17*f16; + f8 = f8+f10; + f10 = f18*f16; + f7 = f7+f11; + f11 = heapFloat[(r7+26)]; + f9 = f9+f12; + f12 = heapFloat[(r7+27)]; + f8 = f8+f10; + f10 = heapFloat[(r7+28)]; + f7 = f7+f11; + f9 = f9+f12; + f8 = f8+f10; + f7 = f7*f6; + f9 = f9*f6; + f6 = f8*f6; + r2 = heap32[(r3+93)]; + f2 = f2+f7; + f1 = f1+f9; + f0 = f0+f6; + r6 = r2 >> 2; + r6 = heap32[(r6+8)]; +if(!(uint(r6) >uint(r4))) //_LBB550_6 +{ +break _3; +} +} +} +else{ + f0 = 0; + f1 = f0; + f2 = f0; + f3 = f0; + f4 = f0; + f5 = f0; +} +} while(0); + r0 = r0 >> 2; + f6 = heapFloat[(r0)]; + f7 = heapFloat[(r0+1)]; + f8 = heapFloat[(r0+4)]; + f9 = heapFloat[(r0+5)]; + f6 = f6*f5; + f7 = f7*f4; + f10 = heapFloat[(r0+2)]; + f11 = heapFloat[(r0+8)]; + f12 = heapFloat[(r0+9)]; + f13 = heapFloat[(r0+6)]; + f8 = f8*f5; + f9 = f9*f4; + f6 = f6+f7; + f7 = f10*f3; + f10 = heapFloat[(r0+10)]; + f11 = f11*f5; + f12 = f12*f4; + f8 = f8+f9; + f9 = f13*f3; + f6 = f6+f7; + f7 = heapFloat[(r0+12)]; + f13 = heapFloat[(r0+14)]; + f14 = heapFloat[(r0+13)]; + f8 = f8+f9; + r1 = r1 >> 2; + f9 = f11+f12; + f10 = f10*f3; + f6 = f6+f7; + f7 = f9+f10; + f8 = f8+f14; + heapFloat[(r1+1)] = f6; + f6 = f7+f13; + heapFloat[(r1+2)] = f8; + heapFloat[(r1+3)] = f6; + heap32[(r1+4)] = 0; + f6 = heapFloat[(r0)]; + f7 = heapFloat[(r0+1)]; + f8 = heapFloat[(r0+4)]; + f9 = heapFloat[(r0+5)]; + f10 = heapFloat[(r0+2)]; + f6 = f6*f2; + f7 = f7*f1; + f11 = heapFloat[(r0+8)]; + f12 = heapFloat[(r0+9)]; + f13 = heapFloat[(r0+6)]; + f8 = f8*f2; + f9 = f9*f1; + f6 = f6+f7; + f7 = f10*f0; + f10 = heapFloat[(r0+10)]; + f11 = f11*f2; + f12 = f12*f1; + f8 = f8+f9; + f9 = f13*f0; + f6 = f6+f7; + f7 = heapFloat[(r0+12)]; + f13 = heapFloat[(r0+14)]; + f14 = heapFloat[(r0+13)]; + f8 = f8+f9; + f9 = f11+f12; + f10 = f10*f0; + f6 = f6+f7; + f7 = f9+f10; + f8 = f8+f14; + heapFloat[(r1+5)] = f6; + f6 = f7+f13; + heapFloat[(r1+6)] = f8; + heapFloat[(r1+7)] = f6; + f2 = f5-f2; + heap32[(r1+8)] = 0; + f1 = f4-f1; + heapFloat[(r1+9)] = f2; + f0 = f3-f0; + heapFloat[(r1+10)] = f1; + heapFloat[(r1+11)] = f0; + f2 = f2*f2; + f1 = f1*f1; + heap32[(r1+12)] = 0; + f1 = f2+f1; + f0 = f0*f0; + f0 = f1+f0; + heapFloat[(g0)] = f0; + sqrtf(i7); + f1 = 1; + f2 = 9.9999997473787516e-005; + f2 = f_g0 > f2 ? f_g0 : f1; + heapFloat[(r1+13)] = f_g0; + f0 = f1/f2; + f1 = heapFloat[(r1+9)]; + f1 = f1*f0; + heapFloat[(r1+9)] = f1; + f1 = heapFloat[(r1+10)]; + f1 = f1*f0; + heapFloat[(r1+10)] = f1; + f1 = heapFloat[(r1+11)]; + f0 = f1*f0; + heapFloat[(r1+11)] = f0; + r0 = 1; + r_g0 = r0; + return; +} +else{ + if(r2 !=1) //_LBB550_14 +{ + r0 = 2; +} +else{ + r0 = 1; +} + r1 = r1 >> 2; + heap32[(r1)] = r0; + r0 = 0; + r_g0 = r0; + return; +} +} + +function _ZN30btGjkEpaPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAlloc(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + -104;var g0 = i7>>2; // save stack + r0 = heap32[(fp+4)]; + r1 = heap32[(fp+5)]; + r2 = r0 >> 2; + r3 = r1 >> 2; + f0 = heapFloat[(r2+14)]; + f1 = heapFloat[(r3+14)]; + f2 = heapFloat[(r2+13)]; + f3 = heapFloat[(r3+13)]; + f4 = heapFloat[(r2+12)]; + f5 = heapFloat[(r3+12)]; + r2 = sp + -16; + f4 = f4-f5; + r3 = r2 >> 2; + f2 = f2-f3; + heapFloat[(fp+-4)] = f4; + f0 = f0-f1; + heapFloat[(r3+1)] = f2; + heapFloat[(r3+2)] = f0; + heap32[(r3+3)] = 0; + r3 = heap32[(fp+2)]; + r4 = heap32[(fp+3)]; + r5 = sp + -72; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r1; + heap32[(g0+4)] = r2; + heap32[(g0+5)] = r5; + heap32[(g0+6)] = 1; + r6 = heap32[(fp+6)]; + r7 = heap32[(fp+7)]; + r8 = heap32[(fp+8)]; + _ZN15btGjkEpaSolver211PenetrationEPK13btConvexShapeRK11btTransformS2_S5_RK9btVector3RNS_8sResultsEb(i7); + r9 = r_g0; + if(r9 ==0) //_LBB551_2 +{ + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r1; + heap32[(g0+4)] = r2; + heap32[(g0+5)] = r5; + _ZN15btGjkEpaSolver28DistanceEPK13btConvexShapeRK11btTransformS2_S5_RK9btVector3RNS_8sResultsE(i7); + r0 = r_g0; +if(!(r0 ==0)) //_LBB551_4 +{ + r0 = r5 >> 2; + r1 = r7 >> 2; + heap32[(r1)] = heap32[(r0+1)]; + heap32[(r1+1)] = heap32[(r0+2)]; + heap32[(r1+2)] = heap32[(r0+3)]; + r2 = r8 >> 2; + heap32[(r1+3)] = heap32[(r0+4)]; + heap32[(r2)] = heap32[(r0+5)]; + heap32[(r2+1)] = heap32[(r0+6)]; + heap32[(r2+2)] = heap32[(r0+7)]; + r1 = r6 >> 2; + heap32[(r2+3)] = heap32[(r0+8)]; + heap32[(r1)] = heap32[(r0+9)]; + heap32[(r1+1)] = heap32[(r0+10)]; + heap32[(r1+2)] = heap32[(r0+11)]; + heap32[(r1+3)] = heap32[(r0+12)]; +} + r0 = 0; + r_g0 = r0; + return; +} +else{ + r0 = r5 >> 2; + r1 = r7 >> 2; + heap32[(r1)] = heap32[(r0+1)]; + heap32[(r1+1)] = heap32[(r0+2)]; + heap32[(r1+2)] = heap32[(r0+3)]; + r2 = r8 >> 2; + heap32[(r1+3)] = heap32[(r0+4)]; + heap32[(r2)] = heap32[(r0+5)]; + heap32[(r2+1)] = heap32[(r0+6)]; + heap32[(r2+2)] = heap32[(r0+7)]; + r1 = r6 >> 2; + heap32[(r2+3)] = heap32[(r0+8)]; + heap32[(r1)] = heap32[(r0+9)]; + heap32[(r1+1)] = heap32[(r0+10)]; + heap32[(r1+2)] = heap32[(r0+11)]; + heap32[(r1+3)] = heap32[(r0+12)]; + r0 = 1; + r_g0 = r0; + return; +} +} + +function _ZN30btGjkEpaPenetrationDepthSolverD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV30btGjkEpaPenetrationDepthSolver; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN30btGjkEpaPenetrationDepthSolverD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV30btGjkEpaPenetrationDepthSolver; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN17btGjkPairDetectorD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV17btGjkPairDetector; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN17btGjkPairDetectorD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV17btGjkPairDetector; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var r19; + var r20; + var r21; + var r22; + var r23; + var r24; + var r25; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; + var f30; +var __label__ = 0; + i7 = sp + -304;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = sp + -32; + heap32[(r1+14)] = 0; + r3 = r2 >> 2; + heap32[(fp+-8)] = 0; + heap32[(r3+1)] = 0; + r4 = heap32[(fp+1)]; + heap32[(r3+2)] = 0; + r5 = sp + -96; + r4 = r4 >> 2; + heap32[(r3+3)] = 0; + r6 = r5 >> 2; + heap32[(fp+-24)] = heap32[(r4)]; + heap32[(r6+1)] = heap32[(r4+1)]; + heap32[(r6+2)] = heap32[(r4+2)]; + heap32[(r6+3)] = heap32[(r4+3)]; + heap32[(r6+4)] = heap32[(r4+4)]; + heap32[(r6+5)] = heap32[(r4+5)]; + heap32[(r6+6)] = heap32[(r4+6)]; + heap32[(r6+7)] = heap32[(r4+7)]; + heap32[(r6+8)] = heap32[(r4+8)]; + heap32[(r6+9)] = heap32[(r4+9)]; + heap32[(r6+10)] = heap32[(r4+10)]; + heap32[(r6+11)] = heap32[(r4+11)]; + f0 = heapFloat[(r4+12)]; + f1 = heapFloat[(r4+13)]; + f2 = heapFloat[(r4+14)]; + r7 = sp + -160; + heap32[(r6+15)] = heap32[(r4+15)]; + r8 = r7 >> 2; + heap32[(fp+-40)] = heap32[(r4+16)]; + heap32[(r8+1)] = heap32[(r4+17)]; + heap32[(r8+2)] = heap32[(r4+18)]; + heap32[(r8+3)] = heap32[(r4+19)]; + heap32[(r8+4)] = heap32[(r4+20)]; + heap32[(r8+5)] = heap32[(r4+21)]; + heap32[(r8+6)] = heap32[(r4+22)]; + heap32[(r8+7)] = heap32[(r4+23)]; + heap32[(r8+8)] = heap32[(r4+24)]; + heap32[(r8+9)] = heap32[(r4+25)]; + heap32[(r8+10)] = heap32[(r4+26)]; + heap32[(r8+11)] = heap32[(r4+27)]; + f3 = heapFloat[(r4+28)]; + f4 = heapFloat[(r4+29)]; + f5 = heapFloat[(r4+30)]; + f6 = f0+f3; + f7 = 0.5; + f6 = f6*f7; + f8 = f1+f4; + f8 = f8*f7; + f9 = f2+f5; + f0 = f0-f6; + heap32[(r8+15)] = heap32[(r4+31)]; + f7 = f9*f7; + f1 = f1-f8; + heapFloat[(r6+12)] = f0; + f0 = f2-f7; + heapFloat[(r6+13)] = f1; + f1 = f3-f6; + heapFloat[(r6+14)] = f0; + f0 = f4-f8; + heapFloat[(r8+12)] = f1; + f1 = f5-f7; + heapFloat[(r8+13)] = f0; + heapFloat[(r8+14)] = f1; + r9 = heap32[(r1+7)]; + r9 = r9 >> 2; + r10 = heap32[(fp+2)]; + r11 = heap32[(fp+3)]; + r9 = heap32[(r9+1)]; + r9 = (r9 + -17)|0; + if(uint(r9) >uint(1)) //_LBB556_3 +{ +__label__ = 3; +} +else{ + r9 = heap32[(r1+8)]; + r9 = r9 >> 2; + r9 = heap32[(r9+1)]; + r9 = (r9 + -17)|0; + if(uint(r9) >uint(1)) //_LBB556_3 +{ +__label__ = 3; +} +else{ + r9 = (r0 + 32)|0; + r12 = 0; +__label__ = 4; +} +} +if (__label__ == 3){ + r9 = (r0 + 32)|0; + r12 = 1; +} + r13 = gNumGjkChecks; + r13 = r13 >> 2; + r14 = heap32[(r13)]; + f0 = heapFloat[(r1+11)]; + f1 = heapFloat[(r1+12)]; + r14 = (r14 + 1)|0; + heap32[(r13)] = r14; + r13 = heapU8[r0+52]; + heap32[(r1+16)] = 0; + heap32[(r1+1)] = 0; + heap32[(r1+2)] = 1065353216; + heap32[(r1+3)] = 0; + heap32[(r1+4)] = 0; + heap32[(r1+17)] = 0; + heap32[(r1+15)] = -1; + r14 = heap32[(r1+6)]; + r15 = 0; + r16 = r14 >> 2; + heap8[r14+312] = r15; + r17 = 1; + heap32[(r16)] = 0; + heap8[r14+356] = r17; + heap32[(r16+73)] = 1566444395; + heap32[(r16+74)] = 1566444395; + heap32[(r16+75)] = 1566444395; + heap32[(r16+76)] = 0; + heap8[r14+352] = r15; + heap32[(r16+84)] = 0; + heap32[(r16+85)] = 0; + heap32[(r16+86)] = 0; + heap32[(r16+87)] = 0; + r16 = heapU8[r14+332]; + f2 = 0; + r16 = r16 & 240; + heap8[r14+332] = r16; + f1 = r13 == r15 ? f1 : f2; + f0 = r13 == r15 ? f0 : f2; + f0 = f0+f1; + f3 = heapFloat[(r1+3)]; + f4 = heapFloat[(r1+2)]; + f5 = heapFloat[(r1+1)]; + f9 = 999999984306749440; +_7: while(true){ + f10 = -f5; + f11 = heapFloat[(r4)]; + f12 = heapFloat[(r4+4)]; + f13 = heapFloat[(r4+1)]; + f14 = heapFloat[(r4+5)]; + f11 = f11*f10; + f12 = f12*f4; + f15 = heapFloat[(r4+8)]; + f16 = heapFloat[(r4+2)]; + f17 = heapFloat[(r4+6)]; + f18 = heapFloat[(r4+10)]; + f19 = heapFloat[(r4+9)]; + f13 = f13*f10; + f14 = f14*f4; + f11 = f11-f12; + f12 = f15*f3; + r13 = sp + -176; + f10 = f16*f10; + f15 = f17*f4; + f13 = f13-f14; + f14 = f19*f3; + f11 = f11-f12; + r14 = r13 >> 2; + f10 = f10-f15; + f12 = f18*f3; + f13 = f13-f14; + heapFloat[(fp+-44)] = f11; + f10 = f10-f12; + heapFloat[(r14+1)] = f13; + heapFloat[(r14+2)] = f10; + heap32[(r14+3)] = 0; + f10 = heapFloat[(r4+16)]; + f11 = heapFloat[(r4+20)]; + f12 = heapFloat[(r4+17)]; + f13 = heapFloat[(r4+21)]; + f14 = heapFloat[(r4+24)]; + f10 = f10*f5; + f11 = f11*f4; + f15 = heapFloat[(r4+18)]; + f16 = heapFloat[(r4+22)]; + f17 = heapFloat[(r4+26)]; + f18 = heapFloat[(r4+25)]; + f12 = f12*f5; + f13 = f13*f4; + f10 = f10+f11; + f11 = f14*f3; + r14 = sp + -192; + f5 = f15*f5; + f4 = f16*f4; + f12 = f12+f13; + f13 = f18*f3; + f10 = f10+f11; + r16 = r14 >> 2; + f4 = f5+f4; + f3 = f17*f3; + f5 = f12+f13; + heapFloat[(fp+-48)] = f10; + f3 = f4+f3; + heapFloat[(r16+1)] = f5; + heapFloat[(r16+2)] = f3; + heap32[(r16+3)] = 0; + r16 = heap32[(r1+7)]; + r18 = sp + -208; + heap32[(g0)] = r18; + heap32[(g0+1)] = r16; + heap32[(g0+2)] = r13; + r13 = r9 >> 2; + _ZNK13btConvexShape44localGetSupportVertexWithoutMarginNonVirtualERK9btVector3(i7); + r16 = heap32[(r13)]; + r19 = sp + -224; + heap32[(g0)] = r19; + heap32[(g0+1)] = r16; + heap32[(g0+2)] = r14; + _ZNK13btConvexShape44localGetSupportVertexWithoutMarginNonVirtualERK9btVector3(i7); + r14 = r18 >> 2; + r16 = r19 >> 2; + f3 = heapFloat[(r6+8)]; + f4 = heapFloat[(fp+-52)]; + f5 = heapFloat[(r6+4)]; + f10 = heapFloat[(fp+-24)]; + f11 = heapFloat[(r6+9)]; + f12 = heapFloat[(r14+1)]; + f13 = heapFloat[(r6+5)]; + f14 = heapFloat[(r6+1)]; + f15 = heapFloat[(r8+8)]; + f16 = heapFloat[(fp+-56)]; + f17 = heapFloat[(r8+4)]; + f18 = heapFloat[(fp+-40)]; + f19 = heapFloat[(r8+9)]; + f20 = heapFloat[(r16+1)]; + f21 = heapFloat[(r8+5)]; + f22 = heapFloat[(r8+1)]; + f3 = f3*f4; + f11 = f11*f12; + f23 = heapFloat[(r6+10)]; + f24 = heapFloat[(r14+2)]; + f25 = heapFloat[(r6+6)]; + f26 = heapFloat[(r6+2)]; + f15 = f15*f16; + f19 = f19*f20; + f27 = heapFloat[(r8+10)]; + f28 = heapFloat[(r16+2)]; + f29 = heapFloat[(r8+6)]; + f30 = heapFloat[(r8+2)]; + f5 = f5*f4; + f13 = f13*f12; + f17 = f17*f16; + f21 = f21*f20; + f4 = f10*f4; + f10 = f14*f12; + f12 = f18*f16; + f14 = f22*f20; + f3 = f3+f11; + f11 = f23*f24; + f15 = f15+f19; + f16 = f27*f28; + f5 = f5+f13; + f13 = f25*f24; + f17 = f17+f21; + f18 = f29*f28; + f4 = f4+f10; + f10 = f26*f24; + f12 = f12+f14; + f14 = f30*f28; + f3 = f3+f11; + f11 = heapFloat[(r6+14)]; + f15 = f15+f16; + f16 = heapFloat[(r8+14)]; + f5 = f5+f13; + f13 = heapFloat[(r6+13)]; + f17 = f17+f18; + f18 = heapFloat[(r8+13)]; + f4 = f4+f10; + f10 = heapFloat[(r6+12)]; + f12 = f12+f14; + f14 = heapFloat[(r8+12)]; + f5 = f5+f13; + f13 = f17+f18; + f4 = f4+f10; + f10 = f12+f14; + f3 = f3+f11; + f11 = f15+f16; + f3 = r12 != r15 ? f3 : f2; + f11 = r12 != r15 ? f11 : f2; + f12 = f5-f13; + f14 = heapFloat[(r1+2)]; + f15 = f4-f10; + f16 = heapFloat[(r1+1)]; + f17 = f3-f11; + f18 = heapFloat[(r1+3)]; + f16 = f16*f15; + f14 = f14*f12; + f14 = f16+f14; + f16 = f18*f17; + f14 = f14+f16; +if(!(f14 <=f2)) //_LBB556_8 +{ + f16 = heapFloat[(r4+32)]; + f18 = f14*f14; + f16 = f16*f9; +if(!(f18 <=f16)) //_LBB556_8 +{ +__label__ = 7; +break _7; +} +} + r14 = heap32[(r1+6)]; + r16 = r14 >> 2; + r18 = heap32[(r16)]; +_12: do { + if(r18 >0) //_LBB556_10 +{ + r19 = -12; + f16 = heapFloat[(r16+77)]; + r20 = (r19 - r14)|0; + r21 = 0; + r22 = r18; + r19 = r21; +_14: while(true){ + r23 = -8; + r24 = -4; + r23 = (r23 - r20)|0; + r24 = (r24 - r20)|0; + r23 = r23 >> 2; + r24 = r24 >> 2; + r25 = (r21 - r20)|0; + r25 = r25 >> 2; + f18 = heapFloat[(r23)]; + f19 = heapFloat[(r24)]; + f18 = f15-f18; + f19 = f12-f19; + f20 = heapFloat[(r25)]; + f20 = f17-f20; + f18 = f18*f18; + f19 = f19*f19; + f18 = f18+f19; + f19 = f20*f20; + f18 = f18+f19; + r22 = (r22 + -1)|0; + r19 = f18 > f16 ? r19 : r17; + r20 = (r20 + -16)|0; + if(r22 !=0) //_LBB556_11 +{ +continue _14; +} +else{ +break _12; +} +} +} +else{ + r19 = r15; +} +} while(0); + f16 = heapFloat[(r16+76)]; + if(f16 ==f2) //_LBB556_14 +{ + f16 = heapFloat[(r16+75)]; +if(!(f17 !=f16)) //_LBB556_13 +{ + f16 = heapFloat[(r16+74)]; +if(!(f12 !=f16)) //_LBB556_13 +{ + f16 = heapFloat[(r16+73)]; + r19 = f15 != f16 ? r19 : r17; +} +} +} + r19 = r19 & 255; + if(r19 ==0) //_LBB556_19 +{ + f14 = f9-f14; + f16 = 9.9999999747524271e-007; + f18 = f9*f16; + if(f14 >f18) //_LBB556_21 +{ + heapFloat[(r16+73)] = f15; + heapFloat[(r16+74)] = f12; + r18 = r18 << 4; + heapFloat[(r16+75)] = f17; + r18 = (r14 + r18)|0; + heap32[(r16+76)] = 0; + r18 = r18 >> 2; + heap8[r14+356] = r17; + heapFloat[(r18+1)] = f15; + heapFloat[(r18+2)] = f12; + heapFloat[(r18+3)] = f17; + heap32[(r18+4)] = 0; + r18 = heap32[(r16)]; + r18 = r18 << 4; + r18 = (r14 + r18)|0; + r18 = r18 >> 2; + heapFloat[(r18+21)] = f4; + heapFloat[(r18+22)] = f5; + heapFloat[(r18+23)] = f3; + heap32[(r18+24)] = 0; + r18 = heap32[(r16)]; + r18 = r18 << 4; + r14 = (r14 + r18)|0; + r14 = r14 >> 2; + heapFloat[(r14+41)] = f10; + heapFloat[(r14+42)] = f13; + heapFloat[(r14+43)] = f11; + heap32[(r14+44)] = 0; + r14 = heap32[(r16)]; + r14 = (r14 + 1)|0; + heap32[(r16)] = r14; + r14 = heap32[(r1+6)]; + heap32[(g0)] = r14; + _ZN22btVoronoiSimplexSolver28updateClosestVectorAndPointsEv(i7); + r16 = r_g0; + if(r16 !=0) //_LBB556_23 +{ + r14 = r14 >> 2; + f5 = heapFloat[(r14+69)]; + f4 = heapFloat[(r14+70)]; + f3 = heapFloat[(r14+71)]; + f10 = heapFloat[(r14+72)]; + heapFloat[(r1+1)] = f5; + f11 = f5*f5; + f12 = f4*f4; + heapFloat[(r1+2)] = f4; + f11 = f11+f12; + f12 = f3*f3; + f11 = f11+f12; + heapFloat[(r1+3)] = f3; + heapFloat[(r1+4)] = f10; + if(f11 >=f16) //_LBB556_25 +{ + f10 = 1.1920928955078125e-007; + f12 = f9-f11; + f9 = f9*f10; + if(f12 >f9) //_LBB556_27 +{ + r14 = heap32[(r1+16)]; + r16 = (r14 + 1)|0; + heap32[(r1+16)] = r16; + if(r14 <1001) //_LBB556_29 +{ + r14 = heap32[(r1+6)]; + r14 = r14 >> 2; + r16 = heap32[(r14)]; + f9 = f11; + if(r16 !=4) //_LBB556_5 +{ +continue _7; +} +else{ +__label__ = 29; +break _7; +} +} +else{ +__label__ = 27; +break _7; +} +} +else{ +__label__ = 25; +break _7; +} +} +else{ +__label__ = 23; +break _7; +} +} +else{ +__label__ = 21; +break _7; +} +} +else{ +__label__ = 19; +break _7; +} +} +else{ +__label__ = 17; +break _7; +} +} +_29: do { +switch(__label__ ){//multiple entries +case 7: + heap32[(r1+17)] = 10; +__label__ = 30; +break _29; +break; +case 29: + heap32[(r1+1)] = heap32[(r14+69)]; + heap32[(r1+2)] = heap32[(r14+70)]; + heap32[(r1+3)] = heap32[(r14+71)]; + r17 = 0; + heap32[(r1+4)] = heap32[(r14+72)]; + heap32[(r1+17)] = 13; +__label__ = 37; +break _29; +break; +case 27: + r6 = _2E_str425; + heap32[(g0)] = r6; + heap32[(g0+1)] = r16; + printf(i7); + r6 = heap32[(r13)]; + r8 = heap32[(r1+7)]; + r6 = r6 >> 2; + r8 = r8 >> 2; + f2 = heapFloat[(r1+3)]; + f3 = heapFloat[(r1+2)]; + f4 = heapFloat[(r1+1)]; + r6 = heap32[(r6+1)]; + r8 = heap32[(r8+1)]; + r9 = _2E_str1426; + f4 = f4; //fstod f4, f4 + f3 = f3; //fstod f3, f3 + f2 = f2; //fstod f2, f2 + f5 = f11; //fstod f11, f5 + heap32[(g0)] = r9; + llvm_writeDouble((i7+8),f4); + llvm_writeDouble((i7+16),f3); + llvm_writeDouble((i7+24),f2); + llvm_writeDouble((i7+32),f5); + heap32[(g0+10)] = r8; + heap32[(g0+11)] = r6; + f2 = 0; + r17 = 0; + printf(i7); +__label__ = 37; +break _29; +break; +case 25: + r6 = heap32[(r1+6)]; + r6 = r6 >> 2; + heap32[(r1+1)] = heap32[(r6+69)]; + heap32[(r1+2)] = heap32[(r6+70)]; + heap32[(r1+3)] = heap32[(r6+71)]; + heap32[(r1+4)] = heap32[(r6+72)]; + heap32[(r1+17)] = 12; + f9 = f11; +__label__ = 30; +break _29; +break; +case 23: + heap32[(r1+17)] = 6; +__label__ = 30; +break _29; +break; +case 21: + heap32[(r1+17)] = 3; +__label__ = 30; +break _29; +break; +case 19: + r6 = 11; + r8 = 2; + r6 = f14 > f2 ? r6 : r8; + heap32[(r1+17)] = r6; +__label__ = 30; +break _29; +break; +case 17: + heap32[(r1+17)] = 1; +__label__ = 30; +break; +} +} while(0); +if (__label__ == 30){ + r6 = heap32[(r1+6)]; + heap32[(g0)] = r6; + r6 = r6 >> 2; + _ZN22btVoronoiSimplexSolver28updateClosestVectorAndPointsEv(i7); + f3 = heapFloat[(r6+65)]; + f2 = heapFloat[(r6+61)]; + f4 = heapFloat[(r6+66)]; + f5 = heapFloat[(r6+62)]; + f10 = heapFloat[(r6+67)]; + f11 = heapFloat[(r6+63)]; + f2 = f2-f3; + f5 = f5-f4; + heapFloat[(fp+-8)] = f2; + f2 = f11-f10; + heapFloat[(r3+1)] = f5; + heapFloat[(r3+2)] = f2; + heap32[(r3+3)] = 0; + f2 = heapFloat[(r1+1)]; + f5 = heapFloat[(r1+2)]; + f11 = heapFloat[(r1+3)]; + f2 = f2*f2; + f5 = f5*f5; + f2 = f2+f5; + f5 = f11*f11; + f2 = f2+f5; + f5 = f2; //fstod f2, f5 + f11 = 0.0001; +if(!(f5 >=f11)) //_LBB556_33 +{ + heap32[(r1+17)] = 5; +} + f5 = 1.4210854715202004e-014; + if(f2 <=f5) //_LBB556_37 +{ + f2 = 0; + r17 = 0; + heap32[(r1+15)] = 2; +} +else{ + heapFloat[(g0)] = f2; + sqrtf(i7); + f5 = 1; + f2 = f5/f_g0; + f11 = heapFloat[(fp+-8)]; + f11 = f11*f2; + heapFloat[(fp+-8)] = f11; + f11 = heapFloat[(r3+1)]; + f11 = f11*f2; + heapFloat[(r3+1)] = f11; + f11 = heapFloat[(r3+2)]; + f11 = f11*f2; + heapFloat[(r3+2)] = f11; + heapFloat[(g0)] = f9; + sqrtf(i7); + f9 = f_g0; + f11 = 0; + if(f9 >f11) //_LBB556_36 +{ + f9 = f1/f9; + f11 = heapFloat[(r1+3)]; + f12 = heapFloat[(r1+2)]; + f13 = heapFloat[(r1+1)]; + f13 = f13*f9; + f12 = f12*f9; + f9 = f11*f9; + f2 = f5/f2; + f3 = f3+f13; + f4 = f4+f12; + f10 = f10+f9; + f2 = f2-f0; + heap32[(r1+15)] = 1; +} +else{ + r0 = _2E_str2427; + r1 = _2E_str3428; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 320; + _assert(i7); +} +} +} + r6 = heap32[(r1+18)]; + if(r6 ==0) //_LBB556_45 +{ +__label__ = 42; +} +else{ + r6 = heap32[(r1+5)]; + if(r6 ==0) //_LBB556_45 +{ +__label__ = 42; +} +else{ + r8 = heap32[(r1+17)]; + if(r8 ==0) //_LBB556_45 +{ +__label__ = 42; +} +else{ + f5 = f2+f0; + f5 = f5; //fstod f5, f5 + f9 = 0.01; + if(f5 > 2; + r9 = heap32[(r8)]; + r9 = (r9 + 1)|0; + heap32[(r8)] = r9; + heap32[(r1+1)] = 0; + heap32[(r1+2)] = 0; + heap32[(r1+3)] = 0; + heap32[(r1+4)] = 0; + r8 = r6 >> 2; + r8 = heap32[(r8)]; + r8 = r8 >> 2; + r8 = heap32[(r8+2)]; + r9 = heap32[(r4+33)]; + r12 = heap32[(r13)]; + r13 = heap32[(r1+7)]; + r14 = heap32[(r1+6)]; + r0 = (r0 + 4)|0; + r15 = sp + -240; + r16 = sp + -256; + heap32[(g0)] = r6; + heap32[(g0+1)] = r14; + heap32[(g0+2)] = r13; + heap32[(g0+3)] = r12; + heap32[(g0+4)] = r5; + heap32[(g0+5)] = r7; + heap32[(g0+6)] = r0; + heap32[(g0+7)] = r15; + heap32[(g0+8)] = r16; + heap32[(g0+9)] = r11; + heap32[(g0+10)] = r9; + __FUNCTION_TABLE__[(r8)>>2](i7); + r0 = r_g0; + if(r0 ==0) //_LBB556_57 +{ + f5 = heapFloat[(r1+1)]; + f9 = heapFloat[(r1+2)]; + f11 = heapFloat[(r1+3)]; + f5 = f5*f5; + f9 = f9*f9; + f5 = f5+f9; + f9 = f11*f11; + f5 = f5+f9; + f9 = 0; + if(f5 <=f9) //_LBB556_62 +{ +__label__ = 59; +break _58; +} +else{ + r0 = r15 >> 2; + r5 = r16 >> 2; + f5 = heapFloat[(r0+1)]; + f9 = heapFloat[(r5+1)]; + f11 = heapFloat[(fp+-60)]; + f12 = heapFloat[(fp+-64)]; + f11 = f11-f12; + f5 = f5-f9; + f9 = heapFloat[(r0+2)]; + f12 = heapFloat[(r5+2)]; + f9 = f9-f12; + f11 = f11*f11; + f5 = f5*f5; + f5 = f11+f5; + f9 = f9*f9; + f5 = f5+f9; + heapFloat[(g0)] = f5; + sqrtf(i7); + f0 = f_g0-f0; + r0 = r17 & 255; +if(!(r0 !=1)) //_LBB556_60 +{ + if(f0 >=f2) //_LBB556_61 +{ + heap32[(r1+15)] = 5; +__label__ = 59; +break _58; +} +} + f2 = heapFloat[(r1+1)]; + f3 = heapFloat[(r1+2)]; + f4 = heapFloat[(r1+3)]; + f10 = heapFloat[(fp+-64)]; + f5 = heapFloat[(r5+1)]; + f9 = heapFloat[(r5+2)]; + heapFloat[(fp+-8)] = f2; + heapFloat[(r3+1)] = f3; + heapFloat[(r3+2)] = f4; + f11 = f2*f2; + f12 = f3*f3; + heap32[(r3+3)] = heap32[(r1+4)]; + f11 = f11+f12; + f12 = f4*f4; + f11 = f11+f12; + heapFloat[(g0)] = f11; + sqrtf(i7); + f12 = 1; + f11 = f12/f_g0; + f12 = heapFloat[(fp+-8)]; + f12 = f12*f11; + heapFloat[(fp+-8)] = f12; + f12 = heapFloat[(r3+1)]; + f12 = f12*f11; + heapFloat[(r3+1)] = f12; + f12 = heapFloat[(r3+2)]; + f2 = f2*f1; + f13 = f3*f1; + f1 = f4*f1; + f11 = f12*f11; + f3 = f10+f2; + f4 = f5+f13; + f10 = f9+f1; + heapFloat[(r3+2)] = f11; + heap32[(r1+15)] = 6; + f2 = f0; +__label__ = 60; +break _58; +} +} +else{ + r16 = r16 >> 2; + r15 = r15 >> 2; + f0 = heapFloat[(r16+1)]; + f1 = heapFloat[(r15+1)]; + f5 = heapFloat[(fp+-64)]; + f9 = heapFloat[(fp+-60)]; + f0 = f0-f1; + f1 = f5-f9; + f5 = heapFloat[(r16+2)]; + f9 = heapFloat[(r15+2)]; + f5 = f5-f9; + f9 = f1*f1; + f11 = f0*f0; + f9 = f9+f11; + f11 = f5*f5; + f9 = f9+f11; + f11 = 1.4210854715202004e-014; + if(f9 <=f11) //_LBB556_50 +{ + f1 = heapFloat[(r1+1)]; + f0 = heapFloat[(r1+2)]; + f5 = heapFloat[(r1+3)]; + f9 = f1*f1; + f12 = f0*f0; + f9 = f9+f12; + f13 = f5*f5; + f12 = heapFloat[(r1+4)]; + f9 = f9+f13; +} +else{ + f12 = 0; +} + if(f9 <=f11) //_LBB556_56 +{ + heap32[(r1+15)] = 9; +__label__ = 59; +break _58; +} +else{ + heapFloat[(g0)] = f9; + sqrtf(i7); + f9 = f_g0; + f11 = heapFloat[(r15+1)]; + f13 = heapFloat[(r16+1)]; + f14 = heapFloat[(fp+-60)]; + f15 = heapFloat[(fp+-64)]; + f14 = f14-f15; + f11 = f11-f13; + f13 = heapFloat[(r15+2)]; + f15 = heapFloat[(r16+2)]; + f13 = f13-f15; + f14 = f14*f14; + f11 = f11*f11; + f11 = f14+f11; + f13 = f13*f13; + f11 = f11+f13; + heapFloat[(g0)] = f11; + sqrtf(i7); + f11 = -f_g0; + r15 = r17 & 255; +if(!(r15 !=1)) //_LBB556_54 +{ + if(f2 <=f11) //_LBB556_55 +{ + heap32[(r1+15)] = 8; +__label__ = 59; +break _58; +} +} + f2 = 1; + f2 = f2/f9; + f3 = heapFloat[(fp+-64)]; + f4 = heapFloat[(r16+1)]; + f10 = heapFloat[(r16+2)]; + f1 = f1*f2; + f0 = f0*f2; + heapFloat[(fp+-8)] = f1; + f1 = f5*f2; + heapFloat[(r3+1)] = f0; + heapFloat[(r3+2)] = f1; + heapFloat[(r3+3)] = f12; + heap32[(r1+15)] = 3; + f2 = f11; +__label__ = 60; +} +} +} +} while(0); +if (__label__ == 59){ + r0 = r17 & 255; + if(r0 ==0) //_LBB556_66 +{ +__label__ = 63; +} +else{ +__label__ = 60; +} +} +_81: do { +if (__label__ == 60){ + f0 = 0; +if(!(f2 =f1) //_LBB556_66 +{ +break _81; +} +} + heap32[(r1+1)] = heap32[(fp+-8)]; + heap32[(r1+2)] = heap32[(r3+1)]; + heap32[(r1+3)] = heap32[(r3+2)]; + heap32[(r1+4)] = heap32[(r3+3)]; + r0 = r10 >> 2; + heapFloat[(r1+14)] = f2; + r0 = heap32[(r0)]; + r0 = r0 >> 2; + r0 = heap32[(r0+4)]; + r1 = sp + -16; + f0 = f3+f6; + r3 = r1 >> 2; + f1 = f4+f8; + heapFloat[(fp+-4)] = f0; + f0 = f10+f7; + heapFloat[(r3+1)] = f1; + heapFloat[(r3+2)] = f0; + heap32[(r3+3)] = 0; + heap32[(g0)] = r10; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r1; + heapFloat[(g0+3)] = f2; + __FUNCTION_TABLE__[(r0)>>2](i7); +} +} while(0); + return; +} + +function _ZN20btPersistentManifold18removeContactPointEi(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+279)]; + r3 = (r2 + -1)|0; + r4 = heap32[(fp+1)]; + if(r3 ==r4) //_LBB557_2 +{ + r3 = (r2 * 276)|0; + r0 = (r0 + r3)|0; + r0 = r0 >> 2; + r0 = heap32[(r0+-41)]; + if(r0 !=0) //_LBB557_4 +{ + r1 = _2E_str434; + r2 = _2E_str483; + heap32[(g0)] = r1; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = 160; + _assert(i7); +} +} +else{ + r4 = (r4 * 276)|0; + r5 = (r0 + 4)|0; + r3 = (r3 * 276)|0; + r4 = (r5 + r4)|0; + r3 = (r5 + r3)|0; + r2 = (r2 * 276)|0; + heap32[(g0)] = r4; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = 276; + r0 = (r0 + r2)|0; + memcpy(i7); + r2 = r0 >> 2; + heap32[(r2+-41)] = 0; + heap32[(r2+-16)] = 0; + heap32[(r2+-8)] = 0; + heap32[(r2)] = 0; + r3 = 0; + heap32[(r2+-40)] = 0; + heap8[r0+-156] = r3; + heap32[(r2+-38)] = 0; + heap32[(r2+-37)] = 0; + heap32[(r2+-32)] = 0; + r2 = heap32[(r1+279)]; +} + r0 = (r2 + -1)|0; + heap32[(r1+279)] = r0; + return; +} + +function _ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+279)]; + r3 = (r2 + -1)|0; + if(r3 >-1) //_LBB558_2 +{ + r3 = heap32[(fp+1)]; + r4 = heap32[(fp+2)]; +_3: while(true){ + r5 = (r2 * 69)|0; + r5 = r5 << 2; + r5 = (r0 + r5)|0; + r6 = r3 >> 2; + r5 = r5 >> 2; + f0 = heapFloat[(r5+-68)]; + f1 = heapFloat[(r6)]; + f2 = heapFloat[(r5+-67)]; + f3 = heapFloat[(r6+1)]; + f4 = heapFloat[(r6+4)]; + f5 = heapFloat[(r6+5)]; + f1 = f1*f0; + f3 = f3*f2; + f6 = heapFloat[(r5+-66)]; + f7 = heapFloat[(r6+2)]; + f8 = heapFloat[(r6+8)]; + f9 = heapFloat[(r6+9)]; + f10 = heapFloat[(r6+6)]; + f4 = f4*f0; + f5 = f5*f2; + f1 = f1+f3; + f3 = f7*f6; + f7 = heapFloat[(r6+10)]; + f0 = f8*f0; + f2 = f9*f2; + f4 = f4+f5; + f5 = f10*f6; + f1 = f1+f3; + f3 = heapFloat[(r6+12)]; + f8 = heapFloat[(r6+14)]; + f9 = heapFloat[(r6+13)]; + f4 = f4+f5; + f0 = f0+f2; + f2 = f7*f6; + f1 = f1+f3; + f0 = f0+f2; + f2 = f4+f9; + heapFloat[(r5+-56)] = f1; + f0 = f0+f8; + heapFloat[(r5+-55)] = f2; + heapFloat[(r5+-54)] = f0; + heap32[(r5+-53)] = 0; + r6 = r4 >> 2; + f0 = heapFloat[(r5+-64)]; + f1 = heapFloat[(r6)]; + f2 = heapFloat[(r5+-63)]; + f3 = heapFloat[(r6+1)]; + f4 = heapFloat[(r6+4)]; + f5 = heapFloat[(r6+5)]; + f1 = f1*f0; + f3 = f3*f2; + f6 = heapFloat[(r5+-62)]; + f7 = heapFloat[(r6+2)]; + f8 = heapFloat[(r6+8)]; + f9 = heapFloat[(r6+9)]; + f10 = heapFloat[(r6+6)]; + f4 = f4*f0; + f5 = f5*f2; + f1 = f1+f3; + f3 = f7*f6; + f7 = heapFloat[(r6+10)]; + f0 = f8*f0; + f2 = f9*f2; + f4 = f4+f5; + f5 = f10*f6; + f1 = f1+f3; + f3 = heapFloat[(r6+12)]; + f8 = heapFloat[(r6+14)]; + f9 = heapFloat[(r6+13)]; + f4 = f4+f5; + f0 = f0+f2; + f2 = f7*f6; + f1 = f1+f3; + f0 = f0+f2; + f2 = f4+f9; + heapFloat[(r5+-60)] = f1; + f0 = f0+f8; + heapFloat[(r5+-59)] = f2; + heapFloat[(r5+-58)] = f0; + heap32[(r5+-57)] = 0; + f0 = heapFloat[(r5+-55)]; + f1 = heapFloat[(r5+-59)]; + f2 = heapFloat[(r5+-56)]; + f3 = heapFloat[(r5+-60)]; + f2 = f2-f3; + f3 = heapFloat[(r5+-52)]; + f0 = f0-f1; + f1 = heapFloat[(r5+-51)]; + f4 = heapFloat[(r5+-54)]; + f5 = heapFloat[(r5+-58)]; + f6 = heapFloat[(r5+-50)]; + f4 = f4-f5; + f2 = f2*f3; + f0 = f0*f1; + f0 = f2+f0; + f1 = f4*f6; + f0 = f0+f1; + heapFloat[(r5+-48)] = f0; + r6 = heap32[(r5+-32)]; + r2 = (r2 + -1)|0; + r6 = (r6 + 1)|0; + heap32[(r5+-32)] = r6; +if(!(r2 !=0)) //_LBB558_3 +{ +break _3; +} +} + r2 = heap32[(r1+279)]; +} + r2 = (r2 + -1)|0; +_7: do { +if(!(r2 <0)) //_LBB558_11 +{ +_8: while(true){ + r3 = r2; + r2 = (r3 * 69)|0; + r2 = r2 << 2; + r2 = (r0 + r2)|0; + r2 = r2 >> 2; + f0 = heapFloat[(r2+21)]; + f1 = heapFloat[(r1+280)]; + if(f0 <=f1) //_LBB558_8 +{ + f2 = heapFloat[(r2+17)]; + f3 = heapFloat[(r2+18)]; + f4 = heapFloat[(r2+19)]; + f5 = heapFloat[(r2+13)]; + f2 = f2*f0; + f6 = heapFloat[(r2+14)]; + f3 = f3*f0; + f7 = heapFloat[(r2+9)]; + f2 = f5-f2; + f5 = heapFloat[(r2+10)]; + f3 = f6-f3; + f6 = heapFloat[(r2+15)]; + f0 = f4*f0; + f2 = f7-f2; + f3 = f5-f3; + f4 = heapFloat[(r2+11)]; + f0 = f6-f0; + f0 = f4-f0; + f2 = f2*f2; + f3 = f3*f3; + f2 = f2+f3; + f0 = f0*f0; + f1 = f1*f1; + f0 = f2+f0; +if(!(f1 >=f0)) //_LBB558_10 +{ + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + _ZN20btPersistentManifold18removeContactPointEi(i7); +} +} +else{ + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + _ZN20btPersistentManifold18removeContactPointEi(i7); +} + r2 = (r3 + -1)|0; + if(r3 !=0) //_LBB558_6 +{ +continue _8; +} +else{ +break _7; +} +} +} +} while(0); + return; +} + +function _ZN25btTriangleRaycastCallback15processTriangleEP9btVector3ii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; +var __label__ = 0; + i7 = sp + -56;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + f0 = heapFloat[(r0+6)]; + f1 = heapFloat[(r0+2)]; + f2 = heapFloat[(r0+10)]; + f3 = heapFloat[(r0+5)]; + f4 = heapFloat[(r0+1)]; + f5 = heapFloat[(r0+9)]; + f6 = heapFloat[(r0+4)]; + f7 = heapFloat[(r0)]; + f8 = heapFloat[(r0+8)]; + f9 = f3-f4; + f10 = f2-f1; + f11 = f0-f1; + f12 = f5-f4; + f13 = f8-f7; + f14 = f6-f7; + f15 = f9*f10; + f16 = f11*f12; + f15 = f15-f16; + r0 = sp + -32; + f11 = f11*f13; + f10 = f14*f10; + f10 = f11-f10; + r1 = r0 >> 2; + heapFloat[(fp+-8)] = f15; + f11 = f14*f12; + f9 = f9*f13; + f9 = f11-f9; + heapFloat[(r1+1)] = f10; + r2 = heap32[(fp)]; + heapFloat[(r1+2)] = f9; + r3 = r2 >> 2; + heap32[(r1+3)] = 0; + f11 = heapFloat[(r3+1)]; + f12 = heapFloat[(r3+2)]; + f13 = heapFloat[(r3+5)]; + f14 = heapFloat[(r3+6)]; + f16 = heapFloat[(r3+3)]; + f17 = heapFloat[(r3+7)]; + f18 = f15*f11; + f19 = f10*f12; + f20 = f15*f13; + f21 = f10*f14; + f22 = f7*f15; + f23 = f4*f10; + f18 = f18+f19; + f19 = f9*f16; + f20 = f20+f21; + f21 = f9*f17; + f22 = f22+f23; + f23 = f1*f9; + f18 = f18+f19; + f19 = f22+f23; + f20 = f20+f21; + f18 = f18-f19; + f19 = f20-f19; + f20 = f18*f19; + f21 = 0; +_1: do { +if(!(f20 >=f21)) //_LBB559_11 +{ + r4 = heap32[(r3+9)]; + r4 = r4 & 1; +if(!(r4 ==0)) //_LBB559_3 +{ + if(f18 >f21) //_LBB559_11 +{ +break _1; +} +} + f19 = f18-f19; + f19 = f18/f19; + f20 = heapFloat[(r3+10)]; +if(!(f20 <=f19)) //_LBB559_11 +{ + f20 = 1; + f22 = f20-f19; + f16 = f16*f22; + f17 = f17*f19; + f12 = f12*f22; + f14 = f14*f19; + f11 = f11*f22; + f13 = f13*f19; + f16 = f16+f17; + f12 = f12+f14; + f11 = f11+f13; + f1 = f1-f16; + f3 = f3-f12; + f7 = f7-f11; + f0 = f0-f16; + f4 = f4-f12; + f6 = f6-f11; + f13 = f15*f15; + f14 = f10*f10; + f17 = f4*f0; + f22 = f1*f3; + f23 = f1*f6; + f24 = f7*f0; + f13 = f13+f14; + f14 = f9*f9; + f17 = f17-f22; + f22 = f23-f24; + f13 = f13+f14; + f14 = -9.9999997473787516e-005; + f23 = f7*f3; + f24 = f4*f6; + f23 = f23-f24; + f14 = f13*f14; + f17 = f17*f15; + f22 = f22*f10; + f17 = f17+f22; + f22 = f23*f9; + f17 = f17+f22; +if(!(f17 > 2; + r1 = heap32[(r1+3)]; + r6 = heap32[(r3+9)]; + r6 = r6 & 2; + if(r6 !=0) //_LBB559_9 +{ +__label__ = 9; +} +else{ + if(f18 >f21) //_LBB559_10 +{ +__label__ = 10; +} +else{ +__label__ = 9; +} +} +if (__label__ == 9){ + r0 = sp + -16; + f1 = -f1; + r6 = r0 >> 2; + f2 = -f2; + heapFloat[(fp+-4)] = f1; + f0 = -f0; + heapFloat[(r6+1)] = f2; + heapFloat[(r6+2)] = f0; + heap32[(r6+3)] = 0; +} + heap32[(g0)] = r2; + heap32[(g0+1)] = r0; + heapFloat[(g0+2)] = f19; + heap32[(g0+3)] = r4; + heap32[(g0+4)] = r5; + __FUNCTION_TABLE__[(r1)>>2](i7); + heapFloat[(r3+10)] = f_g0; +} +} +} +} +} +} while(0); + return; +} + +function _ZN28btTriangleConvexcastCallbackC2EPK13btConvexShapeRK11btTransformS5_S5_f(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV28btTriangleConvexcastCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+1)]; + heap32[(r0)] = r1; + r1 = r2 >> 2; + heap32[(r0+1)] = r3; + heap32[(r0+2)] = heap32[(r1)]; + heap32[(r0+3)] = heap32[(r1+1)]; + heap32[(r0+4)] = heap32[(r1+2)]; + heap32[(r0+5)] = heap32[(r1+3)]; + heap32[(r0+6)] = heap32[(r1+4)]; + heap32[(r0+7)] = heap32[(r1+5)]; + heap32[(r0+8)] = heap32[(r1+6)]; + heap32[(r0+9)] = heap32[(r1+7)]; + heap32[(r0+10)] = heap32[(r1+8)]; + heap32[(r0+11)] = heap32[(r1+9)]; + heap32[(r0+12)] = heap32[(r1+10)]; + heap32[(r0+13)] = heap32[(r1+11)]; + heap32[(r0+14)] = heap32[(r1+12)]; + heap32[(r0+15)] = heap32[(r1+13)]; + r2 = heap32[(fp+3)]; + heap32[(r0+16)] = heap32[(r1+14)]; + r2 = r2 >> 2; + heap32[(r0+17)] = heap32[(r1+15)]; + heap32[(r0+18)] = heap32[(r2)]; + heap32[(r0+19)] = heap32[(r2+1)]; + heap32[(r0+20)] = heap32[(r2+2)]; + heap32[(r0+21)] = heap32[(r2+3)]; + heap32[(r0+22)] = heap32[(r2+4)]; + heap32[(r0+23)] = heap32[(r2+5)]; + heap32[(r0+24)] = heap32[(r2+6)]; + heap32[(r0+25)] = heap32[(r2+7)]; + heap32[(r0+26)] = heap32[(r2+8)]; + heap32[(r0+27)] = heap32[(r2+9)]; + heap32[(r0+28)] = heap32[(r2+10)]; + heap32[(r0+29)] = heap32[(r2+11)]; + heap32[(r0+30)] = heap32[(r2+12)]; + heap32[(r0+31)] = heap32[(r2+13)]; + r1 = heap32[(fp+4)]; + heap32[(r0+32)] = heap32[(r2+14)]; + r1 = r1 >> 2; + heap32[(r0+33)] = heap32[(r2+15)]; + heap32[(r0+34)] = heap32[(r1)]; + heap32[(r0+35)] = heap32[(r1+1)]; + heap32[(r0+36)] = heap32[(r1+2)]; + heap32[(r0+37)] = heap32[(r1+3)]; + heap32[(r0+38)] = heap32[(r1+4)]; + heap32[(r0+39)] = heap32[(r1+5)]; + heap32[(r0+40)] = heap32[(r1+6)]; + heap32[(r0+41)] = heap32[(r1+7)]; + heap32[(r0+42)] = heap32[(r1+8)]; + heap32[(r0+43)] = heap32[(r1+9)]; + heap32[(r0+44)] = heap32[(r1+10)]; + heap32[(r0+45)] = heap32[(r1+11)]; + heap32[(r0+46)] = heap32[(r1+12)]; + heap32[(r0+47)] = heap32[(r1+13)]; + heap32[(r0+48)] = heap32[(r1+14)]; + heap32[(r0+49)] = heap32[(r1+15)]; + heap32[(r0+50)] = 1065353216; + heap32[(r0+51)] = heap32[(fp+5)]; + return; +} + +function _ZN28btTriangleConvexcastCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV18btTriangleCallback; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN28btTriangleConvexcastCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV18btTriangleCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN28btTriangleConvexcastCallback15processTriangleEP9btVector3ii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var f0; + var f1; + var f2; +var __label__ = 0; + i7 = sp + -696;var g0 = i7>>2; // save stack + r0 = sp + -104; + r1 = r0 >> 2; + heap32[(r1+2)] = 0; + heap32[(r1+3)] = 1065353216; + heap32[(r1+4)] = 1065353216; + r2 = _ZTV15btTriangleShape; + heap32[(r1+5)] = 1065353216; + r2 = (r2 + 8)|0; + heap32[(r1+6)] = 0; + r3 = heap32[(fp+1)]; + heap32[(fp+-26)] = r2; + r2 = r3 >> 2; + heap32[(r1+1)] = 1; + heap32[(r1+13)] = heap32[(r2)]; + heap32[(r1+14)] = heap32[(r2+1)]; + heap32[(r1+15)] = heap32[(r2+2)]; + heap32[(r1+16)] = heap32[(r2+3)]; + heap32[(r1+17)] = heap32[(r2+4)]; + heap32[(r1+18)] = heap32[(r2+5)]; + heap32[(r1+19)] = heap32[(r2+6)]; + heap32[(r1+20)] = heap32[(r2+7)]; + heap32[(r1+21)] = heap32[(r2+8)]; + heap32[(r1+22)] = heap32[(r2+9)]; + r3 = heap32[(fp)]; + heap32[(r1+23)] = heap32[(r2+10)]; + r4 = sp + -464; + r5 = r3 >> 2; + heap32[(r1+24)] = heap32[(r2+11)]; + r2 = r4 >> 2; + heap32[(r1+11)] = heap32[(r5+51)]; + r1 = _ZTV30btGjkEpaPenetrationDepthSolver; + r6 = 0; + heap32[(r2+77)] = 953267991; + r1 = (r1 + 8)|0; + heap8[sp+-132] = r6; + heap32[(fp+-118)] = r1; + r1 = _ZTV27btContinuousConvexCollision; + r2 = sp + -496; + r6 = heap32[(r5+1)]; + r1 = (r1 + 8)|0; + r7 = r2 >> 2; + heap32[(fp+-124)] = r1; + r1 = sp + -472; + heap32[(r7+1)] = r4; + heap32[(r7+2)] = r1; + r1 = _ZTVN12btConvexCast10CastResultE; + heap32[(r7+3)] = r6; + r4 = sp + -672; + r1 = (r1 + 8)|0; + heap32[(r7+4)] = r0; + r0 = r4 >> 2; + heap32[(fp+-168)] = r1; + heap32[(r0+42)] = 0; + heap32[(r0+43)] = 0; + heap32[(r0+41)] = 1065353216; + r1 = (r3 + 136)|0; + r6 = (r3 + 8)|0; + r7 = (r3 + 72)|0; + heap32[(g0)] = r2; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r7; + heap32[(g0+3)] = r1; + heap32[(g0+4)] = r1; + heap32[(g0+5)] = r4; + _ZN27btContinuousConvexCollision16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(i7); + r1 = r_g0; +if(!(r1 ==0)) //_LBB563_4 +{ + f0 = heapFloat[(r0+33)]; + f1 = heapFloat[(r0+34)]; + f2 = heapFloat[(r0+35)]; + f0 = f0*f0; + f1 = f1*f1; + f0 = f0+f1; + f1 = f2*f2; + f0 = f0+f1; + f1 = 9.9999997473787516e-005; +if(!(f0 <=f1)) //_LBB563_4 +{ + f1 = heapFloat[(r0+41)]; + f2 = heapFloat[(r5+50)]; +if(!(f1 >=f2)) //_LBB563_4 +{ + r1 = heap32[(fp+2)]; + r2 = heap32[(fp+3)]; + heapFloat[(g0)] = f0; + sqrtf(i7); + f1 = 1; + f0 = f1/f_g0; + f1 = heapFloat[(r0+33)]; + f1 = f1*f0; + heapFloat[(r0+33)] = f1; + f1 = heapFloat[(r0+34)]; + f1 = f1*f0; + heapFloat[(r0+34)] = f1; + f1 = heapFloat[(r0+35)]; + f0 = f1*f0; + heapFloat[(r0+35)] = f0; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+3)]; + f0 = heapFloat[(r0+41)]; + r0 = (r4 + 132)|0; + r4 = (r4 + 148)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r4; + heapFloat[(g0+3)] = f0; + heap32[(g0+4)] = r1; + heap32[(g0+5)] = r2; + __FUNCTION_TABLE__[(r5)>>2](i7); +} +} +} + return; +} + +function _ZN22btSubsimplexConvexCastD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV12btConvexCast; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN22btSubsimplexConvexCastD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV12btConvexCast; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN22btSubsimplexConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; + var f30; +var __label__ = 0; + i7 = sp + -240;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+1)]; + r2 = 0; + r3 = r1 >> 2; + heap8[r1+312] = r2; + r4 = 1; + heap32[(r3)] = 0; + heap8[r1+356] = r4; + heap32[(r3+73)] = 1566444395; + heap32[(r3+74)] = 1566444395; + heap32[(r3+75)] = 1566444395; + heap32[(r3+76)] = 0; + heap8[r1+352] = r2; + heap32[(r3+84)] = 0; + heap32[(r3+85)] = 0; + heap32[(r3+86)] = 0; + heap32[(r3+87)] = 0; + r3 = heapU8[r1+332]; + r5 = heap32[(fp+1)]; + r6 = heap32[(fp+2)]; + r7 = heap32[(fp+4)]; + r8 = heap32[(fp+3)]; + r3 = r3 & 240; + heap8[r1+332] = r3; + r1 = r5 >> 2; + r3 = r8 >> 2; + r5 = r6 >> 2; + r6 = r7 >> 2; + f0 = heapFloat[(r1+12)]; + f1 = heapFloat[(r5+12)]; + f2 = heapFloat[(r3+12)]; + f3 = heapFloat[(r6+12)]; + f4 = heapFloat[(r1+13)]; + f5 = heapFloat[(r5+13)]; + f6 = heapFloat[(r3+13)]; + f7 = heapFloat[(r6+13)]; + r7 = heap32[(r0+2)]; + f1 = f1-f0; + f3 = f3-f2; + f1 = f1-f3; + heapFloat[(fp+-50)] = f1; + f3 = heapFloat[(r1+14)]; + f8 = heapFloat[(r5+14)]; + f9 = heapFloat[(r3+14)]; + f10 = heapFloat[(r6+14)]; + r8 = r7 >> 2; + f5 = f5-f4; + f7 = f7-f6; + f5 = f5-f7; + heapFloat[(fp+-51)] = f5; + f7 = heapFloat[(r1+4)]; + heapFloat[(fp+-42)] = f7; + f11 = heapFloat[(r1)]; + heapFloat[(fp+-43)] = f11; + f12 = -f1; + r8 = heap32[(r8)]; + f8 = f8-f3; + f10 = f10-f9; + f13 = heapFloat[(r1+1)]; + heapFloat[(fp+-44)] = f13; + f14 = heapFloat[(r1+5)]; + heapFloat[(fp+-45)] = f14; + r8 = r8 >> 2; + f8 = f8-f10; + heapFloat[(fp+-52)] = f8; + f10 = heapFloat[(r1+8)]; + heapFloat[(fp+-46)] = f10; + f11 = f11*f12; + f7 = f7*f5; + f15 = heapFloat[(r1+2)]; + heapFloat[(fp+-47)] = f15; + f16 = heapFloat[(r1+6)]; + f17 = heapFloat[(r1+9)]; + f18 = heapFloat[(r1+10)]; + f19 = heapFloat[(r3)]; + heapFloat[(fp+-33)] = f19; + f19 = heapFloat[(r3+1)]; + heapFloat[(fp+-34)] = f19; + f19 = heapFloat[(r3+2)]; + heapFloat[(fp+-35)] = f19; + f19 = heapFloat[(r3+4)]; + heapFloat[(fp+-36)] = f19; + f19 = heapFloat[(r3+5)]; + heapFloat[(fp+-37)] = f19; + f19 = heapFloat[(r3+6)]; + heapFloat[(fp+-38)] = f19; + f19 = heapFloat[(r3+8)]; + heapFloat[(fp+-39)] = f19; + f19 = heapFloat[(r3+9)]; + heapFloat[(fp+-40)] = f19; + f19 = heapFloat[(r3+10)]; + heapFloat[(fp+-41)] = f19; + r8 = heap32[(r8+15)]; + f13 = f13*f12; + f14 = f14*f5; + f7 = f11-f7; + f10 = f10*f8; + r9 = sp + -112; + f11 = f15*f12; + f12 = f16*f5; + f13 = f13-f14; + f14 = f17*f8; + f7 = f7-f10; + r10 = r9 >> 2; + f10 = f11-f12; + f11 = f18*f8; + f12 = f13-f14; + heapFloat[(fp+-28)] = f7; + f7 = f10-f11; + heapFloat[(r10+1)] = f12; + heapFloat[(r10+2)] = f7; + heap32[(r10+3)] = 0; + r10 = sp + -128; + heap32[(g0)] = r10; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r9; + __FUNCTION_TABLE__[(r8)>>2](i7); + r7 = heap32[(r0+3)]; + r8 = r7 >> 2; + r8 = heap32[(r8)]; + f7 = heapFloat[(r3)]; + f10 = heapFloat[(r3+4)]; + r9 = r10 >> 2; + r8 = r8 >> 2; + f11 = heapFloat[(r3+1)]; + f12 = heapFloat[(r3+5)]; + f13 = heapFloat[(r3+8)]; + f7 = f7*f1; + f10 = f10*f5; + f14 = heapFloat[(r3+2)]; + f15 = heapFloat[(r3+6)]; + f19 = heapFloat[(r3+10)]; + f20 = heapFloat[(r3+9)]; + r8 = heap32[(r8+15)]; + f11 = f11*f1; + f12 = f12*f5; + f7 = f7+f10; + f10 = f13*f8; + f13 = heapFloat[(r1)]; + heapFloat[(fp+-48)] = f13; + f21 = heapFloat[(fp+-32)]; + f22 = heapFloat[(r1+4)]; + f23 = heapFloat[(r1+8)]; + heapFloat[(fp+-49)] = f23; + f24 = heapFloat[(r1+1)]; + f25 = heapFloat[(r9+1)]; + f26 = heapFloat[(r1+5)]; + f27 = heapFloat[(r1+9)]; + f28 = heapFloat[(r1+2)]; + f29 = heapFloat[(r9+2)]; + f30 = heapFloat[(r1+6)]; + f13 = heapFloat[(r1+10)]; + heapFloat[(fp+-54)] = f13; + f13 = heapFloat[(r1+12)]; + heapFloat[(fp+-53)] = f13; + f13 = heapFloat[(r1+13)]; + heapFloat[(fp+-56)] = f13; + f13 = heapFloat[(r1+14)]; + heapFloat[(fp+-55)] = f13; + r9 = sp + -80; + f1 = f14*f1; + f5 = f15*f5; + f11 = f11+f12; + f12 = f20*f8; + f7 = f7+f10; + r10 = r9 >> 2; + f1 = f1+f5; + f5 = f19*f8; + f8 = f11+f12; + heapFloat[(fp+-20)] = f7; + f1 = f1+f5; + heapFloat[(r10+1)] = f8; + heapFloat[(r10+2)] = f1; + heap32[(r10+3)] = 0; + r10 = sp + -96; + heap32[(g0)] = r10; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r9; + __FUNCTION_TABLE__[(r8)>>2](i7); + r7 = r10 >> 2; + f1 = heapFloat[(r3)]; + f5 = heapFloat[(fp+-24)]; + f7 = heapFloat[(r3+4)]; + f8 = heapFloat[(r3+1)]; + f10 = heapFloat[(r7+1)]; + f11 = heapFloat[(r3+5)]; + f12 = heapFloat[(r3+8)]; + f14 = heapFloat[(r3+9)]; + f13 = heapFloat[(fp+-48)]; + f13 = f13*f21; + f15 = f24*f25; + f1 = f1*f5; + f8 = f8*f10; + f19 = heapFloat[(r3+2)]; + f20 = heapFloat[(r7+2)]; + f24 = heapFloat[(r3+6)]; + f22 = f22*f21; + f26 = f26*f25; + f7 = f7*f5; + f11 = f11*f10; + f23 = heapFloat[(r3+10)]; + f13 = f13+f15; + f15 = f28*f29; + f1 = f1+f8; + f8 = f19*f20; + f19 = f22+f26; + f22 = f30*f29; + f7 = f7+f11; + f11 = f24*f20; + f24 = heapFloat[(fp+-49)]; + f21 = f24*f21; + f24 = f27*f25; + f5 = f12*f5; + f10 = f14*f10; + f12 = f13+f15; + f13 = f19+f22; + f1 = f1+f8; + f8 = heapFloat[(r3+12)]; + f7 = f7+f11; + f11 = heapFloat[(r3+13)]; + f14 = f21+f24; + f15 = heapFloat[(fp+-54)]; + f15 = f15*f29; + f5 = f5+f10; + f10 = f23*f20; + f14 = f14+f15; + f15 = heapFloat[(fp+-53)]; + f12 = f12+f15; + f1 = f1+f8; + f8 = heapFloat[(fp+-56)]; + f8 = f13+f8; + f7 = f7+f11; + f5 = f5+f10; + f10 = heapFloat[(r3+14)]; + f1 = f12-f1; + f7 = f8-f7; + f13 = heapFloat[(fp+-55)]; + f8 = f14+f13; + f5 = f5+f10; + f5 = f8-f5; + f8 = f1*f1; + f10 = f7*f7; + f8 = f8+f10; + f10 = f5*f5; + r7 = heap32[(fp+5)]; + f8 = f8+f10; + r8 = -33; + f10 = 0; + heapFloat[(fp+-48)] = f10; + heapFloat[(fp+-49)] = f10; + f11 = f10; +_1: while(true){ + f12 = 9.9999997473787516e-005; + if(f8 <=f12) //_LBB566_22 +{ +__label__ = 19; +break _1; +} +else{ + r8 = (r8 + 1)|0; + if(r8 !=0) //_LBB566_1 +{ + r9 = heap32[(r0+2)]; + r10 = r9 >> 2; + r10 = heap32[(r10)]; + f8 = -f1; + r10 = r10 >> 2; + f12 = heapFloat[(fp+-43)]; + f12 = f12*f8; + f13 = heapFloat[(fp+-42)]; + f13 = f13*f7; + r10 = heap32[(r10+15)]; + f14 = heapFloat[(fp+-44)]; + f14 = f14*f8; + f15 = heapFloat[(fp+-45)]; + f15 = f15*f7; + f12 = f12-f13; + f13 = heapFloat[(fp+-46)]; + f13 = f13*f5; + r11 = sp + -48; + f19 = heapFloat[(fp+-47)]; + f8 = f19*f8; + f19 = f16*f7; + f14 = f14-f15; + f15 = f17*f5; + f12 = f12-f13; + r12 = r11 >> 2; + f8 = f8-f19; + f13 = f18*f5; + f14 = f14-f15; + heapFloat[(fp+-12)] = f12; + f8 = f8-f13; + heapFloat[(r12+1)] = f14; + heapFloat[(r12+2)] = f8; + heap32[(r12+3)] = 0; + r12 = sp + -64; + heap32[(g0)] = r12; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r11; + __FUNCTION_TABLE__[(r10)>>2](i7); + r9 = heap32[(r0+3)]; + r10 = r9 >> 2; + r10 = heap32[(r10)]; + r11 = r12 >> 2; + r10 = r10 >> 2; + f8 = heapFloat[(fp+-33)]; + f8 = f8*f1; + f12 = heapFloat[(fp+-36)]; + f12 = f12*f7; + f13 = heapFloat[(fp+-16)]; + f14 = heapFloat[(r11+1)]; + f15 = heapFloat[(r11+2)]; + r10 = heap32[(r10+15)]; + f19 = heapFloat[(fp+-34)]; + f19 = f19*f1; + f20 = heapFloat[(fp+-37)]; + f20 = f20*f7; + f8 = f8+f12; + f12 = heapFloat[(fp+-39)]; + f12 = f12*f5; + r11 = sp + -16; + f21 = heapFloat[(fp+-35)]; + f21 = f21*f1; + f22 = heapFloat[(fp+-38)]; + f22 = f22*f7; + f19 = f19+f20; + f20 = heapFloat[(fp+-40)]; + f20 = f20*f5; + f8 = f8+f12; + r12 = r11 >> 2; + f12 = f21+f22; + f21 = heapFloat[(fp+-41)]; + f21 = f21*f5; + f19 = f19+f20; + heapFloat[(fp+-4)] = f8; + f8 = f12+f21; + heapFloat[(r12+1)] = f19; + heapFloat[(r12+2)] = f8; + heap32[(r12+3)] = 0; + r12 = sp + -32; + heap32[(g0)] = r12; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = r11; + __FUNCTION_TABLE__[(r10)>>2](i7); + f12 = 1; + if(f11 >f12) //_LBB566_27 +{ +__label__ = 24; +break _1; +} +else{ + r9 = r12 >> 2; + f8 = heapFloat[(fp+-8)]; + f19 = heapFloat[(r9+1)]; + f20 = heapFloat[(r9+2)]; + f21 = heapFloat[(fp+-43)]; + f21 = f21*f13; + f22 = heapFloat[(fp+-44)]; + f22 = f22*f14; + f23 = heapFloat[(fp+-33)]; + f23 = f23*f8; + f24 = heapFloat[(fp+-34)]; + f24 = f24*f19; + f25 = heapFloat[(fp+-42)]; + f25 = f25*f13; + f26 = heapFloat[(fp+-45)]; + f26 = f26*f14; + f27 = heapFloat[(fp+-36)]; + f27 = f27*f8; + f28 = heapFloat[(fp+-37)]; + f28 = f28*f19; + f21 = f21+f22; + f22 = heapFloat[(fp+-47)]; + f22 = f22*f15; + f23 = f23+f24; + f24 = heapFloat[(fp+-35)]; + f24 = f24*f20; + f25 = f25+f26; + f26 = f16*f15; + f27 = f27+f28; + f28 = heapFloat[(fp+-38)]; + f28 = f28*f20; + f29 = heapFloat[(fp+-46)]; + f13 = f29*f13; + f14 = f17*f14; + f29 = heapFloat[(fp+-39)]; + f8 = f29*f8; + f29 = heapFloat[(fp+-40)]; + f19 = f29*f19; + f21 = f21+f22; + f22 = f23+f24; + f23 = f25+f26; + f24 = f27+f28; + f13 = f13+f14; + f14 = f18*f15; + f8 = f8+f19; + f15 = heapFloat[(fp+-41)]; + f15 = f15*f20; + f19 = f21+f0; + f20 = f22+f2; + f21 = f23+f4; + f22 = f24+f6; + f13 = f13+f14; + f8 = f8+f15; + f14 = f19-f20; + f15 = f21-f22; + f13 = f13+f3; + f23 = f8+f9; + f24 = f13-f23; + f8 = f1*f14; + f25 = f7*f15; + f8 = f8+f25; + f25 = f5*f24; + f25 = f8+f25; + f8 = 0; + if(f25 >f8) //_LBB566_4 +{ + f0 = heapFloat[(fp+-50)]; + f0 = f1*f0; + f2 = heapFloat[(fp+-51)]; + f2 = f7*f2; + f0 = f0+f2; + f2 = heapFloat[(fp+-52)]; + f2 = f5*f2; + f0 = f0+f2; + f2 = -1.4210854715202004e-014; + if(f0 >=f2) //_LBB566_27 +{ +__label__ = 24; +break _1; +} +else{ + f0 = f25/f0; + f11 = f11-f0; + f0 = heapFloat[(r5+12)]; + f2 = heapFloat[(r5+13)]; + f3 = heapFloat[(r5+14)]; + f4 = heapFloat[(r6+12)]; + f6 = heapFloat[(r6+13)]; + f9 = heapFloat[(r6+14)]; + f10 = heapFloat[(r1+12)]; + f12 = f12-f11; + f25 = heapFloat[(r1+13)]; + f26 = heapFloat[(r1+14)]; + f27 = heapFloat[(r3+12)]; + f28 = heapFloat[(r3+13)]; + f29 = heapFloat[(r3+14)]; + f10 = f10*f12; + f0 = f0*f11; + f25 = f25*f12; + f2 = f2*f11; + f26 = f26*f12; + f3 = f3*f11; + f27 = f27*f12; + f30 = f4*f11; + f28 = f28*f12; + f6 = f6*f11; + f12 = f29*f12; + f9 = f9*f11; + f0 = f10+f0; + f4 = f25+f2; + f3 = f26+f3; + f2 = f27+f30; + f6 = f28+f6; + f9 = f12+f9; + f10 = f1; + heapFloat[(fp+-48)] = f7; + heapFloat[(fp+-49)] = f5; +} +} + r9 = heap32[(r0+1)]; + r10 = r9 >> 2; + r11 = heap32[(r10)]; +_10: do { + if(r11 >0) //_LBB566_8 +{ + r12 = -12; + f1 = heapFloat[(r10+77)]; + r13 = (r12 - r9)|0; + r14 = 0; + r15 = r11; + r12 = r14; +_12: while(true){ + r16 = -8; + r17 = -4; + r16 = (r16 - r13)|0; + r17 = (r17 - r13)|0; + r16 = r16 >> 2; + r17 = r17 >> 2; + r18 = (r14 - r13)|0; + r18 = r18 >> 2; + f5 = heapFloat[(r16)]; + f7 = heapFloat[(r17)]; + f5 = f14-f5; + f7 = f15-f7; + f12 = heapFloat[(r18)]; + f12 = f24-f12; + f5 = f5*f5; + f7 = f7*f7; + f5 = f5+f7; + f7 = f12*f12; + f5 = f5+f7; + r15 = (r15 + -1)|0; + r12 = f5 > f1 ? r12 : r4; + r13 = (r13 + -16)|0; +if(!(r15 !=0)) //_LBB566_9 +{ +break _10; +} +} +} +else{ + r12 = r2; +} +} while(0); + f1 = heapFloat[(r10+76)]; + if(f1 ==f8) //_LBB566_12 +{ + f1 = heapFloat[(r10+75)]; +if(!(f24 !=f1)) //_LBB566_11 +{ + f1 = heapFloat[(r10+74)]; +if(!(f15 !=f1)) //_LBB566_11 +{ + f1 = heapFloat[(r10+73)]; + r12 = f14 != f1 ? r12 : r4; +} +} +} + r12 = r12 & 255; + if(r12 ==0) //_LBB566_17 +{ + heapFloat[(r10+73)] = f14; + heapFloat[(r10+74)] = f15; + r11 = r11 << 4; + heapFloat[(r10+75)] = f24; + r11 = (r9 + r11)|0; + heap32[(r10+76)] = 0; + r11 = r11 >> 2; + heap8[r9+356] = r4; + heapFloat[(r11+1)] = f14; + heapFloat[(r11+2)] = f15; + heapFloat[(r11+3)] = f24; + heap32[(r11+4)] = 0; + r11 = heap32[(r10)]; + r11 = r11 << 4; + r11 = (r9 + r11)|0; + r11 = r11 >> 2; + heapFloat[(r11+21)] = f19; + heapFloat[(r11+22)] = f21; + heapFloat[(r11+23)] = f13; + heap32[(r11+24)] = 0; + r11 = heap32[(r10)]; + r11 = r11 << 4; + r9 = (r9 + r11)|0; + r9 = r9 >> 2; + heapFloat[(r9+41)] = f20; + heapFloat[(r9+42)] = f22; + heapFloat[(r9+43)] = f23; + heap32[(r9+44)] = 0; + r9 = heap32[(r10)]; + r9 = (r9 + 1)|0; + heap32[(r10)] = r9; + r9 = heap32[(r0+1)]; +} + heap32[(g0)] = r9; + _ZN22btVoronoiSimplexSolver28updateClosestVectorAndPointsEv(i7); + r10 = r_g0; + r9 = r9 >> 2; + f1 = heapFloat[(r9+69)]; + f7 = heapFloat[(r9+70)]; + f5 = heapFloat[(r9+71)]; + if(r10 ==0) //_LBB566_20 +{ +continue _1; +} +else{ + f8 = f1*f1; + f12 = f7*f7; + f8 = f8+f12; + f12 = f5*f5; + f8 = f8+f12; +continue _1; +} +} +} +else{ +__label__ = 19; +break _1; +} +} +} +if (__label__ == 19){ + f0 = f10*f10; + f7 = heapFloat[(fp+-48)]; + f1 = f7*f7; + f0 = f0+f1; + f1 = heapFloat[(fp+-49)]; + f1 = f1*f1; + f0 = f0+f1; + r1 = r7 >> 2; + heapFloat[(r1+41)] = f11; + f1 = 1.4210854715202004e-014; + if(f0 =f1)) //_LBB566_27 +{ + r0 = heap32[(r0+1)]; + heap32[(g0)] = r0; + r0 = r0 >> 2; + _ZN22btVoronoiSimplexSolver28updateClosestVectorAndPointsEv(i7); + f0 = heapFloat[(r0+68)]; + f1 = heapFloat[(r0+67)]; + f2 = heapFloat[(r0+66)]; + heap32[(r1+37)] = heap32[(r0+65)]; + heapFloat[(r1+38)] = f2; + heapFloat[(r1+39)] = f1; + heapFloat[(r1+40)] = f0; + r0 = 1; + r_g0 = r0; + return; +} +} + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN22btVoronoiSimplexSolver12removeVertexEi(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + if(r2 >0) //_LBB567_2 +{ + r3 = heap32[(fp+1)]; + r2 = (r2 + -1)|0; + r3 = r3 << 4; + r4 = (r0 + 4)|0; + r5 = r2 << 4; + r6 = (r4 + r3)|0; + r4 = (r4 + r5)|0; + r5 = r6 >> 2; + r4 = r4 >> 2; + heap32[(r1)] = r2; + heap32[(r5)] = heap32[(r4)]; + heap32[(r5+1)] = heap32[(r4+1)]; + heap32[(r5+2)] = heap32[(r4+2)]; + heap32[(r5+3)] = heap32[(r4+3)]; + r2 = heap32[(r1)]; + r4 = (r0 + 84)|0; + r2 = r2 << 4; + r5 = (r4 + r3)|0; + r2 = (r4 + r2)|0; + r4 = r5 >> 2; + r2 = r2 >> 2; + heap32[(r4)] = heap32[(r2)]; + heap32[(r4+1)] = heap32[(r2+1)]; + heap32[(r4+2)] = heap32[(r2+2)]; + heap32[(r4+3)] = heap32[(r2+3)]; + r1 = heap32[(r1)]; + r0 = (r0 + 164)|0; + r1 = r1 << 4; + r2 = (r0 + r3)|0; + r0 = (r0 + r1)|0; + r1 = r2 >> 2; + r0 = r0 >> 2; + heap32[(r1)] = heap32[(r0)]; + heap32[(r1+1)] = heap32[(r0+1)]; + heap32[(r1+2)] = heap32[(r0+2)]; + heap32[(r1+3)] = heap32[(r0+3)]; + return; +} +else{ + r0 = _2E_str457; + r1 = _2E_str1458; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 38; + _assert(i7); +} +} + +function _ZN22btVoronoiSimplexSolver22closestPtPointTriangleERK9btVector3S2_S2_S2_R25btSubSimplexClosestResult(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+4)]; + r1 = heapU8[r0+16]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+3)]; + r4 = heap32[(fp+1)]; + r1 = r1 & -16; + r5 = heap32[(fp)]; + r2 = r2 >> 2; + heap8[r0+16] = r1; + r3 = r3 >> 2; + r5 = r5 >> 2; + r4 = r4 >> 2; + f0 = heapFloat[(r2+1)]; + f1 = heapFloat[(r4+1)]; + f2 = heapFloat[(r3+1)]; + f3 = heapFloat[(r5+1)]; + f4 = heapFloat[(r2)]; + f5 = heapFloat[(r4)]; + f6 = heapFloat[(r3)]; + f7 = heapFloat[(r5)]; + f8 = heapFloat[(r2+2)]; + f9 = heapFloat[(r4+2)]; + f10 = heapFloat[(r3+2)]; + f11 = heapFloat[(r5+2)]; + f12 = f0-f1; + f13 = f4-f5; + f14 = f6-f5; + f15 = f7-f5; + f16 = f2-f1; + f17 = f3-f1; + f18 = f8-f9; + f19 = f10-f9; + f20 = f11-f9; + f21 = f13*f15; + f22 = f12*f17; + f15 = f14*f15; + f17 = f16*f17; + f21 = f21+f22; + f22 = f18*f20; + f15 = f15+f17; + f17 = f19*f20; + f20 = f21+f22; + f15 = f15+f17; + f17 = 0; +if(!(f20 >f17)) //_LBB568_3 +{ +if(!(f15 >f17)) //_LBB568_3 +{ + r2 = r0 >> 2; + heapFloat[(r2)] = f5; + heap32[(r2+1)] = heap32[(r4+1)]; + heap32[(r2+2)] = heap32[(r4+2)]; + r1 = r1 | 1; + heap32[(r2+3)] = heap32[(r4+3)]; + heap8[r0+16] = r1; + heap32[(r2+5)] = 1065353216; + heap32[(r2+6)] = 0; + heap32[(r2+7)] = 0; + heap32[(r2+8)] = 0; + return; +} +} + f21 = f7-f4; + f22 = f3-f0; + f23 = f13*f21; + f24 = f12*f22; + f25 = f11-f8; + f21 = f14*f21; + f22 = f16*f22; + f23 = f23+f24; + f24 = f18*f25; + f21 = f21+f22; + f22 = f19*f25; + f23 = f23+f24; + f21 = f21+f22; + if(f23 f23) //_LBB568_7 +{ +__label__ = 7; +} +else{ + r3 = r0 >> 2; + heapFloat[(r3)] = f4; + heap32[(r3+1)] = heap32[(r2+1)]; + heap32[(r3+2)] = heap32[(r2+2)]; + r1 = r1 | 2; + heap32[(r3+3)] = heap32[(r2+3)]; + heap8[r0+16] = r1; + heap32[(r3+5)] = 0; + heap32[(r3+6)] = 1065353216; +__label__ = 6; +} +} +_8: do { +if (__label__ == 7){ + f22 = f20*f21; + f24 = f23*f15; + f22 = f22-f24; +if(!(f22 >f17)) //_LBB568_11 +{ +if(!(f20 f17)) //_LBB568_11 +{ + f0 = f20-f23; + f0 = f20/f0; + f2 = f13*f0; + r3 = r0 >> 2; + f2 = f5+f2; + f3 = f12*f0; + f4 = f18*f0; + f1 = f1+f3; + heapFloat[(r3)] = f2; + f2 = f9+f4; + heapFloat[(r3+1)] = f1; + heapFloat[(r3+2)] = f2; + f1 = 1; + r1 = r1 | 3; + heap32[(r3+3)] = 0; + f1 = f1-f0; + heap8[r0+16] = r1; + heapFloat[(r3+5)] = f1; + heapFloat[(r3+6)] = f0; +break _8; +} +} +} + f7 = f7-f6; + f3 = f3-f2; + f24 = f14*f7; + f25 = f16*f3; + f11 = f11-f10; + f7 = f13*f7; + f3 = f12*f3; + f24 = f24+f25; + f25 = f19*f11; + f3 = f7+f3; + f7 = f18*f11; + f11 = f24+f25; + f3 = f3+f7; +if(!(f11 f11)) //_LBB568_14 +{ + r2 = r0 >> 2; + heapFloat[(r2)] = f6; + heap32[(r2+1)] = heap32[(r3+1)]; + heap32[(r2+2)] = heap32[(r3+2)]; + r1 = r1 | 4; + heap32[(r2+3)] = heap32[(r3+3)]; + heap8[r0+16] = r1; + heap32[(r2+5)] = 0; + heap32[(r2+6)] = 0; + heap32[(r2+7)] = 1065353216; + heap32[(r2+8)] = 0; + return; +} +} + f7 = f3*f15; + f20 = f20*f11; + f7 = f7-f20; + if(f7 >f17) //_LBB568_19 +{ +__label__ = 19; +} +else{ + if(f15 f17) //_LBB568_19 +{ +__label__ = 19; +} +else{ + f0 = f15-f11; + f0 = f15/f0; + f2 = f14*f0; + r2 = r0 >> 2; + f2 = f5+f2; + f3 = f16*f0; + f4 = f19*f0; + f1 = f1+f3; + heapFloat[(r2)] = f2; + f2 = f9+f4; + heapFloat[(r2+1)] = f1; + heapFloat[(r2+2)] = f2; + f1 = 1; + r1 = r1 | 5; + heap32[(r2+3)] = 0; + f1 = f1-f0; + heap8[r0+16] = r1; + heapFloat[(r2+5)] = f1; + heap32[(r2+6)] = 0; +__label__ = 18; +} +} +} +if (__label__ == 19){ + f15 = f23*f11; + f20 = f3*f21; + f15 = f15-f20; +if(!(f15 >f17)) //_LBB568_23 +{ + f20 = f21-f23; +if(!(f20 > 2; + f5 = f4+f5; + f9 = f9*f1; + f7 = f0+f7; + heapFloat[(r2)] = f5; + f5 = f8+f9; + heapFloat[(r2+1)] = f7; + heapFloat[(r2+2)] = f5; + r1 = r1 | 6; + heap32[(r2+3)] = 0; + f5 = 1; + heap8[r0+16] = r1; + f5 = f5-f1; + heap32[(r2+5)] = 0; + heapFloat[(r2+6)] = f5; + heapFloat[(r2+7)] = f1; + heap32[(r2+8)] = 0; + return; +} +} +} + f0 = f15+f7; + f0 = f0+f22; + f2 = 1; + f0 = f2/f0; + f3 = f7*f0; + f0 = f22*f0; + f4 = f13*f3; + f6 = f12*f3; + f4 = f5+f4; + f5 = f14*f0; + r2 = r0 >> 2; + f4 = f4+f5; + f5 = f18*f3; + f1 = f1+f6; + f6 = f16*f0; + f5 = f9+f5; + f7 = f19*f0; + f1 = f1+f6; + heapFloat[(r2)] = f4; + f4 = f5+f7; + heapFloat[(r2+1)] = f1; + heapFloat[(r2+2)] = f4; + f1 = f2-f3; + r1 = r1 | 7; + heap32[(r2+3)] = 0; + f1 = f1-f0; + heap8[r0+16] = r1; + heapFloat[(r2+5)] = f1; + heapFloat[(r2+6)] = f3; +} + heapFloat[(r2+7)] = f0; + heap32[(r2+8)] = 0; + return; +} +} while(0); + heap32[(r3+7)] = 0; + heap32[(r3+8)] = 0; + return; +} + +function _ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + f0 = heapFloat[(fp+5)]; + f1 = heapFloat[(fp+8)]; + f2 = heapFloat[(fp+11)]; + f3 = heapFloat[(fp+4)]; + f4 = heapFloat[(fp+10)]; + f5 = heapFloat[(fp+7)]; + f6 = heapFloat[(fp+3)]; + f7 = heapFloat[(fp+6)]; + f8 = heapFloat[(fp+9)]; + f1 = f1-f0; + f4 = f4-f3; + f7 = f7-f6; + f2 = f2-f0; + f5 = f5-f3; + f8 = f8-f6; + f9 = heapFloat[(fp+12)]; + f10 = heapFloat[(fp+13)]; + f11 = f5*f2; + f12 = f1*f4; + f1 = f1*f8; + f2 = f7*f2; + f11 = f11-f12; + f9 = f9-f6; + f1 = f1-f2; + f2 = f10-f3; + f10 = heapFloat[(fp+14)]; + f4 = f7*f4; + f5 = f5*f8; + f4 = f4-f5; + f5 = f10-f0; + f7 = f9*f11; + f2 = f2*f1; + f2 = f7+f2; + f5 = f5*f4; + f2 = f2+f5; + f5 = f2*f2; + f7 = 9.9999990510468706e-009; + if(f5 >2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r3 = heap32[(fp+1)]; + if(r2 >3) //_LBB570_2 +{ + r2 = heapU8[r3]; + r4 = r2 & 8; + if(r4 ==0) //_LBB570_4 +{ + heap32[(g0)] = r0; + heap32[(g0+1)] = 3; + _ZN22btVoronoiSimplexSolver12removeVertexEi(i7); + r2 = heap32[(r1)]; +__label__ = 3; +} +else{ +__label__ = 5; +} +} +else{ +__label__ = 3; +} +if (__label__ == 3){ + if(r2 >2) //_LBB570_7 +{ + r2 = heapU8[r3]; +__label__ = 5; +} +else{ +__label__ = 7; +} +} +if (__label__ == 5){ + r4 = r2 & 4; + if(r4 ==0) //_LBB570_10 +{ + heap32[(g0)] = r0; + heap32[(g0+1)] = 2; + _ZN22btVoronoiSimplexSolver12removeVertexEi(i7); + r2 = heap32[(r1)]; +__label__ = 7; +} +else{ +__label__ = 9; +} +} +if (__label__ == 7){ + if(r2 >1) //_LBB570_13 +{ + r2 = heapU8[r3]; +__label__ = 9; +} +else{ +__label__ = 11; +} +} +if (__label__ == 9){ + r4 = r2 & 2; + if(r4 ==0) //_LBB570_16 +{ + heap32[(g0)] = r0; + heap32[(g0+1)] = 1; + _ZN22btVoronoiSimplexSolver12removeVertexEi(i7); + r2 = heap32[(r1)]; +__label__ = 11; +} +else{ +__label__ = 13; +} +} +if (__label__ == 11){ + if(r2 <1) //_LBB570_20 +{ +__label__ = 14; +} +else{ + r2 = heapU8[r3]; +__label__ = 13; +} +} +if (__label__ == 13){ + r1 = r2 & 1; + if(r1 ==0) //_LBB570_21 +{ + heap32[(g0)] = r0; + heap32[(g0+1)] = 0; + _ZN22btVoronoiSimplexSolver12removeVertexEi(i7); + return; +} +} + return; +} + +function _ZN22btVoronoiSimplexSolver28updateClosestVectorAndPointsEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; +var __label__ = 0; + i7 = sp + -136;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heapU8[r0+356]; + if(r1 !=0) //_LBB571_2 +{ + r1 = 0; + r2 = r0 >> 2; + heap8[r0+352] = r1; + heap32[(r2+84)] = 0; + heap32[(r2+85)] = 0; + heap32[(r2+86)] = 0; + heap32[(r2+87)] = 0; + r3 = heapU8[r0+332]; + r4 = r3 & -16; + heap8[r0+332] = r4; + heap8[r0+356] = r1; + r5 = heap32[(r2)]; +_3: do { + if(r5 >1) //_LBB571_5 +{ +_5: do { + if(r5 ==2) //_LBB571_11 +{ + f0 = 0; + f1 = heapFloat[(r2+2)]; + f2 = heapFloat[(r2+6)]; + f3 = heapFloat[(r2+1)]; + f4 = heapFloat[(r2+5)]; + f5 = heapFloat[(r2+3)]; + f6 = heapFloat[(r2+7)]; + f2 = f2-f1; + f1 = f0-f1; + f4 = f4-f3; + f3 = f0-f3; + f6 = f6-f5; + f5 = f0-f5; + f3 = f4*f3; + f1 = f2*f1; + f1 = f3+f1; + f3 = f6*f5; + f1 = f1+f3; + if(f1 <=f0) //_LBB571_15 +{ + r1 = r4 | 1; + heap8[r0+332] = r1; + f1 = f0; +} +else{ + f3 = f4*f4; + f2 = f2*f2; + f2 = f3+f2; + f3 = f6*f6; + f2 = f2+f3; + if(f1 >=f2) //_LBB571_14 +{ + f1 = 1; + r1 = r4 | 2; + heap8[r0+332] = r1; +} +else{ + f1 = f1/f2; + r1 = r4 | 3; + heap8[r0+332] = r1; +} +} + f2 = 1; + f2 = f2-f1; + heapFloat[(r2+84)] = f2; + heapFloat[(r2+85)] = f1; + heap32[(r2+86)] = 0; + heap32[(r2+87)] = 0; + f2 = heapFloat[(r2+25)]; + f3 = heapFloat[(r2+21)]; + f2 = f2-f3; + f4 = heapFloat[(r2+26)]; + f5 = heapFloat[(r2+22)]; + f4 = f4-f5; + f2 = f2*f1; + f6 = heapFloat[(r2+27)]; + f7 = heapFloat[(r2+23)]; + f6 = f6-f7; + f4 = f4*f1; + f2 = f3+f2; + f3 = f6*f1; + f4 = f5+f4; + heapFloat[(r2+61)] = f2; + f3 = f7+f3; + heapFloat[(r2+62)] = f4; + heapFloat[(r2+63)] = f3; + heap32[(r2+64)] = 0; + f5 = heapFloat[(r2+45)]; + f6 = heapFloat[(r2+41)]; + f5 = f5-f6; + f7 = heapFloat[(r2+46)]; + f8 = heapFloat[(r2+42)]; + f7 = f7-f8; + f5 = f5*f1; + f9 = heapFloat[(r2+47)]; + f10 = heapFloat[(r2+43)]; + f9 = f9-f10; + f7 = f7*f1; + f5 = f6+f5; + f1 = f9*f1; + f6 = f8+f7; + heapFloat[(r2+65)] = f5; + f1 = f10+f1; + heapFloat[(r2+66)] = f6; + heapFloat[(r2+67)] = f1; + f2 = f2-f5; + heap32[(r2+68)] = 0; + f4 = f4-f6; + heapFloat[(r2+69)] = f2; + f1 = f3-f1; + heapFloat[(r2+70)] = f4; + heapFloat[(r2+71)] = f1; + heap32[(r2+72)] = 0; + r1 = (r0 + 332)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + _ZN22btVoronoiSimplexSolver14reduceVerticesERK15btUsageBitfield(i7); + f1 = heapFloat[(r2+84)]; + if(f1 >=f0) //_LBB571_18 +{ + f0 = heapFloat[(r2+85)]; + f1 = 0; +if(!(f0 = f1; + r1 = r1 & 1; +break _5; +} +} +} + r1 = 0; +} +else{ + if(r5 ==3) //_LBB571_22 +{ + r1 = sp + -56; + r3 = r1 >> 2; + heap32[(fp+-14)] = 0; + heap32[(r3+1)] = 0; + heap32[(r3+2)] = 0; + heap32[(r3+3)] = 0; + r3 = (r0 + 4)|0; + r4 = (r0 + 20)|0; + r5 = (r0 + 36)|0; + r6 = (r0 + 316)|0; + heap32[(g0)] = r1; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r5; + heap32[(g0+4)] = r6; + _ZN22btVoronoiSimplexSolver22closestPtPointTriangleERK9btVector3S2_S2_S2_R25btSubSimplexClosestResult(i7); + f0 = heapFloat[(r2+85)]; + f1 = heapFloat[(r2+25)]; + f2 = heapFloat[(r2+84)]; + f3 = heapFloat[(r2+21)]; + f4 = heapFloat[(r2+26)]; + f5 = heapFloat[(r2+22)]; + f3 = f3*f2; + f1 = f1*f0; + f6 = heapFloat[(r2+86)]; + f7 = heapFloat[(r2+29)]; + f8 = heapFloat[(r2+31)]; + f9 = heapFloat[(r2+30)]; + f10 = heapFloat[(r2+27)]; + f11 = heapFloat[(r2+23)]; + f5 = f5*f2; + f4 = f4*f0; + f1 = f3+f1; + f3 = f7*f6; + f7 = f11*f2; + f10 = f10*f0; + f4 = f5+f4; + f5 = f9*f6; + f1 = f1+f3; + f3 = f7+f10; + f7 = f8*f6; + f4 = f4+f5; + heapFloat[(r2+61)] = f1; + f3 = f3+f7; + heapFloat[(r2+62)] = f4; + heapFloat[(r2+63)] = f3; + heap32[(r2+64)] = 0; + f5 = heapFloat[(r2+45)]; + f7 = heapFloat[(r2+41)]; + f8 = heapFloat[(r2+49)]; + f9 = heapFloat[(r2+46)]; + f10 = heapFloat[(r2+42)]; + f7 = f7*f2; + f5 = f5*f0; + f11 = heapFloat[(r2+51)]; + f12 = heapFloat[(r2+50)]; + f13 = heapFloat[(r2+47)]; + f14 = heapFloat[(r2+43)]; + f10 = f10*f2; + f9 = f9*f0; + f5 = f7+f5; + f7 = f8*f6; + f5 = f5+f7; + f2 = f14*f2; + f0 = f13*f0; + f7 = f10+f9; + f8 = f12*f6; + f7 = f7+f8; + heapFloat[(r2+65)] = f5; + f0 = f2+f0; + f2 = f11*f6; + f0 = f0+f2; + heapFloat[(r2+66)] = f7; + heapFloat[(r2+67)] = f0; + f1 = f1-f5; + heap32[(r2+68)] = 0; + f2 = f4-f7; + heapFloat[(r2+69)] = f1; + f0 = f3-f0; + heapFloat[(r2+70)] = f2; + heapFloat[(r2+71)] = f0; + heap32[(r2+72)] = 0; + r1 = (r0 + 332)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + _ZN22btVoronoiSimplexSolver14reduceVerticesERK15btUsageBitfield(i7); + f0 = heapFloat[(r2+84)]; + f1 = 0; + if(f0 >=f1) //_LBB571_24 +{ + f0 = heapFloat[(r2+85)]; +if(!(f0 = f1; + r1 = r1 & 1; +break _5; +} +} +} + r1 = 0; +} +else{ + if(r5 ==4) //_LBB571_28 +{ + r4 = sp + -72; + r5 = r4 >> 2; + heap32[(fp+-18)] = 0; + heap32[(r5+1)] = 0; + heap32[(r5+2)] = 0; + heap32[(r5+3)] = 0; + heap8[sp+-24] = r1; + heap32[(r2+79)] = 0; + heap32[(r2+80)] = 0; + heap32[(r2+81)] = 0; + r3 = r3 | 15; + heap32[(r2+82)] = 0; + heap8[r0+332] = r3; + f0 = heapFloat[(r2+11)]; + f1 = heapFloat[(r2+7)]; + f2 = heapFloat[(r2+15)]; + f3 = heapFloat[(r2+1)]; + f4 = heapFloat[(r2+2)]; + f5 = heapFloat[(r2+3)]; + f6 = heapFloat[(r2+5)]; + f7 = heapFloat[(r2+6)]; + f8 = heapFloat[(r2+9)]; + f9 = heapFloat[(r2+10)]; + f10 = heapFloat[(r2+13)]; + f11 = heapFloat[(r2+14)]; + heap32[(g0)] = 0; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = 0; + heapFloat[(g0+3)] = f3; + heapFloat[(g0+4)] = f4; + heapFloat[(g0+5)] = f5; + heapFloat[(g0+6)] = f6; + heapFloat[(g0+7)] = f7; + heapFloat[(g0+8)] = f1; + heapFloat[(g0+9)] = f8; + heapFloat[(g0+10)] = f9; + heapFloat[(g0+11)] = f0; + heapFloat[(g0+12)] = f10; + heapFloat[(g0+13)] = f11; + heapFloat[(g0+14)] = f2; + _ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_(i7); + r3 = r_g0; + heap32[(g0)] = 0; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = 0; + heapFloat[(g0+3)] = f3; + heapFloat[(g0+4)] = f4; + heapFloat[(g0+5)] = f5; + heapFloat[(g0+6)] = f8; + heapFloat[(g0+7)] = f9; + heapFloat[(g0+8)] = f0; + heapFloat[(g0+9)] = f10; + heapFloat[(g0+10)] = f11; + heapFloat[(g0+11)] = f2; + heapFloat[(g0+12)] = f6; + heapFloat[(g0+13)] = f7; + heapFloat[(g0+14)] = f1; + _ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_(i7); + r6 = r_g0; + heap32[(g0)] = 0; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = 0; + heapFloat[(g0+3)] = f3; + heapFloat[(g0+4)] = f4; + heapFloat[(g0+5)] = f5; + heapFloat[(g0+6)] = f10; + heapFloat[(g0+7)] = f11; + heapFloat[(g0+8)] = f2; + heapFloat[(g0+9)] = f6; + heapFloat[(g0+10)] = f7; + heapFloat[(g0+11)] = f1; + heapFloat[(g0+12)] = f8; + heapFloat[(g0+13)] = f9; + heapFloat[(g0+14)] = f0; + _ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_(i7); + r7 = r_g0; + heap32[(g0)] = 0; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = 0; + heapFloat[(g0+3)] = f6; + heapFloat[(g0+4)] = f7; + heapFloat[(g0+5)] = f1; + heapFloat[(g0+6)] = f10; + heapFloat[(g0+7)] = f11; + heapFloat[(g0+8)] = f2; + heapFloat[(g0+9)] = f8; + heapFloat[(g0+10)] = f9; + heapFloat[(g0+11)] = f0; + heapFloat[(g0+12)] = f3; + heapFloat[(g0+13)] = f4; + heapFloat[(g0+14)] = f5; + r8 = r6 | r3; + _ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_(i7); + r9 = r_g0; +if(!(r8 <0)) //_LBB571_52 +{ + r10 = r9 | r7; +if(!(r10 <0)) //_LBB571_52 +{ + r8 = r8 | r7; + r8 = r8 | r9; + if(r8 ==0) //_LBB571_53 +{ + r1 = 1; + heap8[r0+312] = r1; + heap32[(r2+69)] = 0; + heap32[(r2+70)] = 0; + heap32[(r2+71)] = 0; + heap32[(r2+72)] = 0; + r_g0 = r1; + return; +} +else{ + r8 = (r0 + 4)|0; + r10 = (r0 + 20)|0; + r11 = (r0 + 36)|0; + r12 = (r0 + 52)|0; + if(r3 !=0) //_LBB571_33 +{ + r3 = sp + -40; + heap32[(g0)] = r4; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r10; + heap32[(g0+3)] = r11; + heap32[(g0+4)] = r3; + _ZN22btVoronoiSimplexSolver22closestPtPointTriangleERK9btVector3S2_S2_S2_R25btSubSimplexClosestResult(i7); + r3 = r3 >> 2; + f1 = heapFloat[(fp+-10)]; + f0 = heapFloat[(fp+-18)]; + f2 = heapFloat[(r3+1)]; + f3 = heapFloat[(r5+1)]; + f0 = f1-f0; + f3 = f2-f3; + f4 = heapFloat[(r3+2)]; + f5 = heapFloat[(r5+2)]; + f5 = f4-f5; + f0 = f0*f0; + f3 = f3*f3; + f0 = f0+f3; + f3 = f5*f5; + f0 = f0+f3; + f3 = 3.4028234663852886e+038; + if(f0 >=f3) //_LBB571_32 +{ +__label__ = 31; +} +else{ + f3 = heapFloat[(r3+3)]; + heapFloat[(r2+79)] = f1; + heapFloat[(r2+80)] = f2; + heapFloat[(r2+81)] = f4; + heapFloat[(r2+82)] = f3; + r13 = heapU8[sp+-24]; + r14 = heapU8[r0+332]; + r15 = r13 & 1; + r14 = r14 & 240; + r14 = r15 | r14; + r15 = r13 & 2; + r14 = r14 | r15; + r13 = r13 & 4; + r13 = r14 | r13; + heap8[r0+332] = r13; + f1 = heapFloat[(r3+7)]; + f2 = heapFloat[(r3+6)]; + heap32[(r2+84)] = heap32[(r3+5)]; + heapFloat[(r2+85)] = f2; + heapFloat[(r2+86)] = f1; + heap32[(r2+87)] = 0; +__label__ = 34; +} +} +else{ +__label__ = 31; +} +if (__label__ == 31){ + f0 = 3.4028234663852886e+038; +} + if(r6 !=0) //_LBB571_37 +{ + r3 = sp + -40; + heap32[(g0)] = r4; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r11; + heap32[(g0+3)] = r12; + heap32[(g0+4)] = r3; + _ZN22btVoronoiSimplexSolver22closestPtPointTriangleERK9btVector3S2_S2_S2_R25btSubSimplexClosestResult(i7); + r3 = r3 >> 2; + f1 = heapFloat[(fp+-10)]; + f2 = heapFloat[(fp+-18)]; + f3 = heapFloat[(r3+1)]; + f4 = heapFloat[(r5+1)]; + f2 = f1-f2; + f4 = f3-f4; + f5 = heapFloat[(r3+2)]; + f6 = heapFloat[(r5+2)]; + f6 = f5-f6; + f2 = f2*f2; + f4 = f4*f4; + f2 = f2+f4; + f4 = f6*f6; + f2 = f2+f4; +if(!(f2 >=f0)) //_LBB571_36 +{ + f0 = heapFloat[(r3+3)]; + heapFloat[(r2+79)] = f1; + heapFloat[(r2+80)] = f3; + heapFloat[(r2+81)] = f5; + heapFloat[(r2+82)] = f0; + r6 = heapU8[sp+-24]; + r13 = heapU8[r0+332]; + r14 = r6 << 1; + r6 = r6 & 1; + r13 = r13 & 240; + r6 = r6 | r13; + r13 = r14 & 4; + r6 = r6 | r13; + r13 = r14 & 8; + r6 = r6 | r13; + heap8[r0+332] = r6; + f0 = heapFloat[(r3+7)]; + f1 = heapFloat[(r3+6)]; + heap32[(r2+84)] = heap32[(r3+5)]; + heap32[(r2+85)] = 0; + heapFloat[(r2+86)] = f1; + heapFloat[(r2+87)] = f0; + f0 = f2; +} +} + if(r7 !=0) //_LBB571_41 +{ + r3 = sp + -40; + heap32[(g0)] = r4; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r12; + heap32[(g0+3)] = r10; + heap32[(g0+4)] = r3; + _ZN22btVoronoiSimplexSolver22closestPtPointTriangleERK9btVector3S2_S2_S2_R25btSubSimplexClosestResult(i7); + r3 = r3 >> 2; + f1 = heapFloat[(fp+-10)]; + f2 = heapFloat[(fp+-18)]; + f3 = heapFloat[(r3+1)]; + f4 = heapFloat[(r5+1)]; + f2 = f1-f2; + f4 = f3-f4; + f5 = heapFloat[(r3+2)]; + f6 = heapFloat[(r5+2)]; + f6 = f5-f6; + f2 = f2*f2; + f4 = f4*f4; + f2 = f2+f4; + f4 = f6*f6; + f2 = f2+f4; +if(!(f2 >=f0)) //_LBB571_40 +{ + f0 = heapFloat[(r3+3)]; + heapFloat[(r2+79)] = f1; + heapFloat[(r2+80)] = f3; + heapFloat[(r2+81)] = f5; + heapFloat[(r2+82)] = f0; + r6 = heapU8[sp+-24]; + r7 = heapU8[r0+332]; + r8 = r6 >>> 1; + r13 = r6 & 1; + r7 = r7 & 240; + r6 = r6 << 2; + r7 = r13 | r7; + r8 = r8 & 2; + r7 = r7 | r8; + r6 = r6 & 8; + r6 = r7 | r6; + heap8[r0+332] = r6; + f0 = heapFloat[(r3+6)]; + f1 = heapFloat[(r3+7)]; + heap32[(r2+84)] = heap32[(r3+5)]; + heapFloat[(r2+85)] = f1; + heap32[(r2+86)] = 0; + heapFloat[(r2+87)] = f0; + f0 = f2; +} +} +if(!(r9 ==0)) //_LBB571_46 +{ + r3 = sp + -40; + heap32[(g0)] = r4; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r12; + heap32[(g0+3)] = r11; + heap32[(g0+4)] = r3; + _ZN22btVoronoiSimplexSolver22closestPtPointTriangleERK9btVector3S2_S2_S2_R25btSubSimplexClosestResult(i7); + r3 = r3 >> 2; + f1 = heapFloat[(fp+-10)]; + f2 = heapFloat[(fp+-18)]; + f3 = heapFloat[(r3+1)]; + f4 = heapFloat[(r5+1)]; + f2 = f1-f2; + f4 = f3-f4; + f5 = heapFloat[(r3+2)]; + f6 = heapFloat[(r5+2)]; + f6 = f5-f6; + f2 = f2*f2; + f4 = f4*f4; + f2 = f2+f4; + f4 = f6*f6; + f2 = f2+f4; +if(!(f2 >=f0)) //_LBB571_46 +{ + f0 = heapFloat[(r3+3)]; + heapFloat[(r2+79)] = f1; + heapFloat[(r2+80)] = f3; + heapFloat[(r2+81)] = f5; + heapFloat[(r2+82)] = f0; + r4 = heapU8[sp+-24]; + r5 = heapU8[r0+332]; + r6 = r4 << 1; + r6 = r6 & 2; + r5 = r5 & 240; + r7 = r4 << 2; + r5 = r6 | r5; + r4 = r4 & 4; + r4 = r5 | r4; + r5 = r7 & 8; + r4 = r4 | r5; + heap8[r0+332] = r4; + f0 = heapFloat[(r3+6)]; + f1 = heapFloat[(r3+7)]; + f2 = heapFloat[(r3+5)]; + heap32[(r2+84)] = 0; + heapFloat[(r2+85)] = f2; + heapFloat[(r2+86)] = f1; + heapFloat[(r2+87)] = f0; +} +} + f0 = heapFloat[(r2+85)]; + f1 = heapFloat[(r2+25)]; + f2 = heapFloat[(r2+84)]; + f3 = heapFloat[(r2+21)]; + f4 = heapFloat[(r2+26)]; + f5 = heapFloat[(r2+22)]; + f3 = f3*f2; + f1 = f1*f0; + f6 = heapFloat[(r2+86)]; + f7 = heapFloat[(r2+29)]; + f8 = heapFloat[(r2+30)]; + f9 = heapFloat[(r2+27)]; + f10 = heapFloat[(r2+23)]; + f5 = f5*f2; + f4 = f4*f0; + f1 = f3+f1; + f3 = f7*f6; + f7 = heapFloat[(r2+87)]; + f11 = heapFloat[(r2+33)]; + f12 = heapFloat[(r2+35)]; + f13 = heapFloat[(r2+34)]; + f14 = heapFloat[(r2+31)]; + f10 = f10*f2; + f9 = f9*f0; + f4 = f5+f4; + f5 = f8*f6; + f1 = f1+f3; + f3 = f11*f7; + f8 = f10+f9; + f9 = f14*f6; + f4 = f4+f5; + f5 = f13*f7; + f1 = f1+f3; + f3 = f8+f9; + f8 = f12*f7; + f4 = f4+f5; + heapFloat[(r2+61)] = f1; + f3 = f3+f8; + heapFloat[(r2+62)] = f4; + heapFloat[(r2+63)] = f3; + heap32[(r2+64)] = 0; + f5 = heapFloat[(r2+45)]; + f8 = heapFloat[(r2+41)]; + f9 = heapFloat[(r2+49)]; + f10 = heapFloat[(r2+46)]; + f11 = heapFloat[(r2+42)]; + f8 = f8*f2; + f5 = f5*f0; + f12 = heapFloat[(r2+53)]; + f13 = heapFloat[(r2+50)]; + f14 = heapFloat[(r2+47)]; + f15 = heapFloat[(r2+43)]; + f11 = f11*f2; + f10 = f10*f0; + f5 = f8+f5; + f8 = f9*f6; + f9 = heapFloat[(r2+55)]; + f16 = heapFloat[(r2+54)]; + f17 = heapFloat[(r2+51)]; + f2 = f15*f2; + f0 = f14*f0; + f10 = f11+f10; + f11 = f13*f6; + f5 = f5+f8; + f8 = f12*f7; + f5 = f5+f8; + f0 = f2+f0; + f2 = f17*f6; + f6 = f10+f11; + f8 = f16*f7; + f6 = f6+f8; + heapFloat[(r2+65)] = f5; + f0 = f0+f2; + f2 = f9*f7; + f0 = f0+f2; + heapFloat[(r2+66)] = f6; + heapFloat[(r2+67)] = f0; + f1 = f1-f5; + heap32[(r2+68)] = 0; + f2 = f4-f6; + heapFloat[(r2+69)] = f1; + f0 = f3-f0; + heapFloat[(r2+70)] = f2; + heapFloat[(r2+71)] = f0; + heap32[(r2+72)] = 0; + r3 = (r0 + 332)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + _ZN22btVoronoiSimplexSolver14reduceVerticesERK15btUsageBitfield(i7); + f0 = heapFloat[(r2+84)]; + f1 = 0; + if(f0 >=f1) //_LBB571_48 +{ + f0 = heapFloat[(r2+85)]; + if(f0 = f1; + r1 = r1 & 1; +break _5; +} +} +} +else{ +break _5; +} +} +} +} + r2 = 1; + heap8[r0+352] = r2; + r2 = 0; + heap8[r0+312] = r2; + r_g0 = r2; + return; +} +else{ +__label__ = 8; +break _3; +} +} +} +} while(0); + heap8[r0+312] = r1; + r0 = r1 & 255; + r_g0 = r0; + return; +} +else{ + if(r5 ==0) //_LBB571_8 +{ +__label__ = 8; +} +else{ + if(r5 ==1) //_LBB571_10 +{ + f0 = heapFloat[(r2+21)]; + heapFloat[(r2+61)] = f0; + f1 = heapFloat[(r2+22)]; + heapFloat[(r2+62)] = f1; + f2 = heapFloat[(r2+23)]; + heapFloat[(r2+63)] = f2; + heap32[(r2+64)] = heap32[(r2+24)]; + f3 = heapFloat[(r2+41)]; + heapFloat[(r2+65)] = f3; + f4 = heapFloat[(r2+42)]; + heapFloat[(r2+66)] = f4; + f5 = heapFloat[(r2+43)]; + heapFloat[(r2+67)] = f5; + f0 = f0-f3; + heap32[(r2+68)] = heap32[(r2+44)]; + f1 = f1-f4; + heapFloat[(r2+69)] = f0; + f0 = f2-f5; + heapFloat[(r2+70)] = f1; + heapFloat[(r2+71)] = f0; + r1 = 0; + heap32[(r2+72)] = 0; + heap8[r0+352] = r1; + heap8[r0+332] = r4; + heap32[(r2+84)] = 1065353216; + heap32[(r2+85)] = 0; + heap32[(r2+86)] = 0; + heap32[(r2+87)] = 0; + r1 = 1; +__label__ = 9; +} +else{ +__label__ = 8; +} +} +} +} while(0); +if (__label__ == 8){ + r1 = 0; +} + heap8[r0+312] = r1; + r_g0 = r1; + return; +} +else{ + r0 = heapU8[r0+312]; + r_g0 = r0; + return; +} +} + +function _ZN16btCollisionWorld27ClosestConvexResultCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN16btCollisionWorld27ClosestConvexResultCallbackE; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN16btCollisionWorld27ClosestConvexResultCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN16btCollisionWorld27ClosestConvexResultCallbackE; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN16btCollisionWorld27ClosestConvexResultCallback15addSingleResultERNS_17LocalConvexResultEb(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = heap32[(fp)]; + f0 = heapFloat[(r0+10)]; + r1 = r1 >> 2; + f1 = heapFloat[(r1+1)]; + if(f0 <=f1) //_LBB574_2 +{ + r2 = heap32[(fp+2)]; + heapFloat[(r1+1)] = f0; + r3 = heap32[(r0)]; + heap32[(r1+19)] = r3; + if(r2 ==0) //_LBB574_4 +{ + r2 = r3 >> 2; + f0 = heapFloat[(r0+2)]; + f1 = heapFloat[(r2+1)]; + f2 = heapFloat[(r0+3)]; + f3 = heapFloat[(r2+2)]; + f4 = heapFloat[(r2+5)]; + f5 = heapFloat[(r2+6)]; + f1 = f1*f0; + f3 = f3*f2; + f6 = heapFloat[(r0+4)]; + f7 = heapFloat[(r2+3)]; + f8 = heapFloat[(r2+9)]; + f9 = heapFloat[(r2+10)]; + f10 = heapFloat[(r2+11)]; + f11 = heapFloat[(r2+7)]; + f4 = f4*f0; + f5 = f5*f2; + f1 = f1+f3; + f3 = f7*f6; + f0 = f8*f0; + f2 = f9*f2; + f4 = f4+f5; + f5 = f11*f6; + f1 = f1+f3; + f0 = f0+f2; + f2 = f10*f6; + f3 = f4+f5; + heapFloat[(r1+11)] = f1; + f0 = f0+f2; + heapFloat[(r1+12)] = f3; + heapFloat[(r1+13)] = f0; + heap32[(r1+14)] = 0; +} +else{ + heap32[(r1+11)] = heap32[(r0+2)]; + heap32[(r1+12)] = heap32[(r0+3)]; + heap32[(r1+13)] = heap32[(r0+4)]; + heap32[(r1+14)] = heap32[(r0+5)]; +} + heap32[(r1+15)] = heap32[(r0+6)]; + heap32[(r1+16)] = heap32[(r0+7)]; + heap32[(r1+17)] = heap32[(r0+8)]; + heap32[(r1+18)] = heap32[(r0+9)]; + f0 = heapFloat[(r0+10)]; + f_g0 = f0; + return; +} +else{ + r0 = _2E_str36; + r1 = _2E_str4; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 384; + _assert(i7); +} +} + +function _ZNK21btConeTwistConstraint28calculateSerializeBufferSizeEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 204; + r_g0 = r0; + return; +} + +function _ZNK21btConeTwistConstraint9serializeEPvP12btSerializer(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r2; + r1 = r1 >> 2; + r0 = r0 >> 2; + _ZNK17btTypedConstraint9serializeEPvP12btSerializer(i7); + heap32[(r1+11)] = heap32[(r0+72)]; + heap32[(r1+12)] = heap32[(r0+73)]; + heap32[(r1+13)] = heap32[(r0+74)]; + heap32[(r1+14)] = heap32[(r0+75)]; + heap32[(r1+15)] = heap32[(r0+76)]; + heap32[(r1+16)] = heap32[(r0+77)]; + heap32[(r1+17)] = heap32[(r0+78)]; + heap32[(r1+18)] = heap32[(r0+79)]; + heap32[(r1+19)] = heap32[(r0+80)]; + heap32[(r1+20)] = heap32[(r0+81)]; + heap32[(r1+21)] = heap32[(r0+82)]; + heap32[(r1+22)] = heap32[(r0+83)]; + heap32[(r1+23)] = heap32[(r0+84)]; + heap32[(r1+24)] = heap32[(r0+85)]; + heap32[(r1+25)] = heap32[(r0+86)]; + heap32[(r1+26)] = heap32[(r0+87)]; + heap32[(r1+27)] = heap32[(r0+88)]; + heap32[(r1+28)] = heap32[(r0+89)]; + heap32[(r1+29)] = heap32[(r0+90)]; + heap32[(r1+30)] = heap32[(r0+91)]; + heap32[(r1+31)] = heap32[(r0+92)]; + heap32[(r1+32)] = heap32[(r0+93)]; + heap32[(r1+33)] = heap32[(r0+94)]; + heap32[(r1+34)] = heap32[(r0+95)]; + heap32[(r1+35)] = heap32[(r0+96)]; + heap32[(r1+36)] = heap32[(r0+97)]; + heap32[(r1+37)] = heap32[(r0+98)]; + heap32[(r1+38)] = heap32[(r0+99)]; + heap32[(r1+39)] = heap32[(r0+100)]; + heap32[(r1+40)] = heap32[(r0+101)]; + heap32[(r1+41)] = heap32[(r0+102)]; + heap32[(r1+42)] = heap32[(r0+103)]; + heap32[(r1+43)] = heap32[(r0+108)]; + heap32[(r1+44)] = heap32[(r0+109)]; + heap32[(r1+45)] = heap32[(r0+110)]; + heap32[(r1+46)] = heap32[(r0+104)]; + heap32[(r1+47)] = heap32[(r0+105)]; + heap32[(r1+48)] = heap32[(r0+106)]; + heap32[(r1+49)] = heap32[(r0+107)]; + r0 = _2E_str239; + r_g0 = r0; + return; +} + +function _ZN21btConeTwistConstraintD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV21btConeTwistConstraint; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN21btConeTwistConstraintD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV21btConeTwistConstraint; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN21btConeTwistConstraint13buildJacobianEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; +var __label__ = 0; + i7 = sp + -216;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heapU8[r0+515]; +if(!(r1 ==0)) //_LBB579_14 +{ + r1 = r0 >> 2; + heap32[(r1+7)] = 0; + heap32[(r1+127)] = 0; + heap32[(r1+126)] = 0; + heap32[(r1+141)] = 0; + heap32[(r1+142)] = 0; + heap32[(r1+143)] = 0; + heap32[(r1+144)] = 0; + r2 = heapU8[r0+512]; +if(!(r2 !=0)) //_LBB579_13 +{ + r2 = heap32[(r1+6)]; + r3 = heap32[(r1+5)]; + r2 = r2 >> 2; + r3 = r3 >> 2; + f0 = heapFloat[(r2+5)]; + f1 = heapFloat[(r1+100)]; + f2 = heapFloat[(r2+1)]; + f3 = heapFloat[(r2+6)]; + f4 = heapFloat[(r1+101)]; + f5 = heapFloat[(r2+2)]; + f6 = heapFloat[(r3+5)]; + f7 = heapFloat[(r1+84)]; + f8 = heapFloat[(r3+1)]; + f9 = heapFloat[(r3+6)]; + f10 = heapFloat[(r1+85)]; + f11 = heapFloat[(r3+2)]; + f12 = heapFloat[(r2+9)]; + f13 = heapFloat[(r2+10)]; + f14 = heapFloat[(r3+9)]; + f15 = heapFloat[(r3+10)]; + f0 = f0*f1; + f3 = f3*f4; + f16 = heapFloat[(r2+7)]; + f17 = heapFloat[(r1+102)]; + f18 = heapFloat[(r2+3)]; + f6 = f6*f7; + f9 = f9*f10; + f19 = heapFloat[(r3+7)]; + f20 = heapFloat[(r1+86)]; + f21 = heapFloat[(r3+3)]; + f2 = f2*f1; + f5 = f5*f4; + f8 = f8*f7; + f11 = f11*f10; + f22 = heapFloat[(r2+11)]; + f23 = heapFloat[(r3+11)]; + f1 = f12*f1; + f4 = f13*f4; + f7 = f14*f7; + f10 = f15*f10; + f0 = f0+f3; + f3 = f16*f17; + f6 = f6+f9; + f9 = f19*f20; + f2 = f2+f5; + f5 = f18*f17; + f8 = f8+f11; + f11 = f21*f20; + f1 = f1+f4; + f4 = f22*f17; + f7 = f7+f10; + f10 = f23*f20; + f0 = f0+f3; + f3 = heapFloat[(r2+14)]; + f6 = f6+f9; + f9 = heapFloat[(r3+14)]; + f2 = f2+f5; + f5 = heapFloat[(r2+13)]; + f8 = f8+f11; + f11 = heapFloat[(r3+13)]; + f0 = f0+f3; + f3 = f6+f9; + f2 = f2+f5; + f5 = f8+f11; + f1 = f1+f4; + f4 = heapFloat[(r2+15)]; + f6 = f7+f10; + f7 = heapFloat[(r3+15)]; + f8 = f0-f3; + f9 = f2-f5; + f1 = f1+f4; + f4 = f6+f7; + f6 = f1-f4; + f7 = f9*f9; + f10 = f8*f8; + f7 = f7+f10; + f10 = f6*f6; + f7 = f7+f10; + f10 = 1.1920928955078125e-007; + if(f7 >f10) //_LBB579_4 +{ + heapFloat[(g0)] = f7; + f10 = 1; + sqrtf(i7); + f11 = f10/f_g0; + r2 = sp + -176; + f7 = f9*f11; + f8 = f8*f11; + r3 = r2 >> 2; + heapFloat[(fp+-44)] = f7; + f6 = f6*f11; + heapFloat[(r3+1)] = f8; + r2 = (r2 + 8)|0; + heapFloat[(r3+2)] = f6; + heap32[(r3+3)] = 0; + f9 = 0; + if(f6 f11) //_LBB579_9 +{ + f7 = f8*f8; + f8 = f6*f6; + f7 = f7+f8; + heapFloat[(g0)] = f7; + sqrtf(i7); + heap32[(r3+4)] = 0; + f6 = heapFloat[(r3+2)]; + f8 = f10/f_g0; + f6 = -f6; + f6 = f8*f6; + heapFloat[(r3+5)] = f6; + f9 = heapFloat[(r3+1)]; + f9 = f9*f8; + f7 = f7*f8; + heapFloat[(r3+6)] = f9; + heapFloat[(r3+8)] = f7; + f7 = heapFloat[(fp+-44)]; + f8 = -f7; + f8 = f9*f8; + f7 = f7*f6; + heapFloat[(r3+9)] = f8; + heapFloat[(r3+10)] = f7; +__label__ = 10; +} +else{ +__label__ = 9; +} +} +else{ + r2 = sp + -176; + r3 = r2 >> 2; + heap32[(fp+-44)] = 1065353216; + heap32[(r3+1)] = 0; + r2 = (r2 + 8)|0; + f7 = 1; + f8 = 0; + heap32[(r3+2)] = 0; + heap32[(r3+3)] = 0; +__label__ = 9; +} +if (__label__ == 9){ + f6 = f7*f7; + f7 = f8*f8; + f6 = f6+f7; + r3 = sp + -176; + heapFloat[(g0)] = f6; + r3 = r3 >> 2; + sqrtf(i7); + f8 = 1; + f9 = heapFloat[(r3+1)]; + f7 = f8/f_g0; + f8 = -f9; + f8 = f7*f8; + heapFloat[(r3+4)] = f8; + f9 = heapFloat[(fp+-44)]; + f9 = f9*f7; + heapFloat[(r3+5)] = f9; + r2 = r2 >> 2; + heap32[(r3+6)] = 0; + f10 = heapFloat[(r2)]; + f11 = -f10; + f9 = f9*f11; + f8 = f10*f8; + heapFloat[(r3+8)] = f9; + f6 = f6*f7; + heapFloat[(r3+9)] = f8; + heapFloat[(r3+10)] = f6; +} + r2 = (r0 + 36)|0; + r3 = 0; +_16: while(true){ + r4 = heap32[(r1+5)]; + r5 = r4 >> 2; + r6 = sp + -128; + r7 = r6 >> 2; + heap32[(fp+-32)] = heap32[(r5+1)]; + heap32[(r7+1)] = heap32[(r5+5)]; + heap32[(r7+2)] = heap32[(r5+9)]; + heap32[(r7+3)] = 0; + heap32[(r7+4)] = heap32[(r5+2)]; + heap32[(r7+5)] = heap32[(r5+6)]; + heap32[(r7+6)] = heap32[(r5+10)]; + heap32[(r7+7)] = 0; + heap32[(r7+8)] = heap32[(r5+3)]; + heap32[(r7+9)] = heap32[(r5+7)]; + heap32[(r7+10)] = heap32[(r5+11)]; + heap32[(r7+11)] = 0; + r7 = heap32[(r1+6)]; + r8 = sp + -80; + r9 = r7 >> 2; + r10 = r8 >> 2; + heap32[(fp+-20)] = heap32[(r9+1)]; + heap32[(r10+1)] = heap32[(r9+5)]; + heap32[(r10+2)] = heap32[(r9+9)]; + heap32[(r10+3)] = 0; + heap32[(r10+4)] = heap32[(r9+2)]; + heap32[(r10+5)] = heap32[(r9+6)]; + heap32[(r10+6)] = heap32[(r9+10)]; + heap32[(r10+7)] = 0; + heap32[(r10+8)] = heap32[(r9+3)]; + heap32[(r10+9)] = heap32[(r9+7)]; + heap32[(r10+10)] = heap32[(r9+11)]; + heap32[(r10+11)] = 0; + f6 = heapFloat[(r5+13)]; + f7 = heapFloat[(r5+15)]; + f8 = heapFloat[(r5+14)]; + r10 = sp + -32; + f6 = f5-f6; + r11 = r10 >> 2; + f8 = f3-f8; + heapFloat[(fp+-8)] = f6; + f6 = f4-f7; + heapFloat[(r11+1)] = f8; + heapFloat[(r11+2)] = f6; + heap32[(r11+3)] = 0; + f6 = heapFloat[(r9+13)]; + f7 = heapFloat[(r9+15)]; + f8 = heapFloat[(r9+14)]; + r11 = sp + -16; + f6 = f2-f6; + r12 = r11 >> 2; + f8 = f0-f8; + heapFloat[(fp+-4)] = f6; + f6 = f1-f7; + heapFloat[(r12+1)] = f8; + heapFloat[(r12+2)] = f6; + heap32[(r12+3)] = 0; + f6 = heapFloat[(r9+84)]; + f7 = heapFloat[(r5+84)]; + r5 = sp + -176; + r5 = (r5 + r3)|0; + r4 = (r4 + 388)|0; + r7 = (r7 + 388)|0; + heap32[(g0)] = r2; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r10; + heap32[(g0+4)] = r11; + heap32[(g0+5)] = r5; + heap32[(g0+6)] = r4; + heapFloat[(g0+7)] = f7; + heap32[(g0+8)] = r7; + heapFloat[(g0+9)] = f6; + r3 = (r3 + 16)|0; + r2 = (r2 + 84)|0; + _ZN15btJacobianEntryC2ERK11btMatrix3x3S2_RK9btVector3S5_S5_S5_fS5_f(i7); +if(!(r3 !=48)) //_LBB579_12 +{ +break _16; +} +} +} + r2 = heap32[(r1+6)]; + r1 = heap32[(r1+5)]; + r3 = (r1 + 4)|0; + r4 = (r2 + 4)|0; + r1 = (r1 + 256)|0; + r2 = (r2 + 256)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r1; + heap32[(g0+4)] = r2; + _ZN21btConeTwistConstraint14calcAngleInfo2ERK11btTransformS2_RK11btMatrix3x3S5_(i7); +} + return; +} + +function _ZN21btConeTwistConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var f0; + var f1; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = heapU8[r0+515]; + if(r2 ==0) //_LBB580_2 +{ + r1 = r1 >> 2; + heap32[(r1)] = 3; + r2 = r0 >> 2; + heap32[(r1+1)] = 3; + r3 = heap32[(r2+6)]; + r4 = heap32[(r2+5)]; + r5 = (r4 + 4)|0; + r6 = (r3 + 4)|0; + r4 = (r4 + 256)|0; + r3 = (r3 + 256)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r6; + heap32[(g0+3)] = r4; + heap32[(g0+4)] = r3; + _ZN21btConeTwistConstraint14calcAngleInfo2ERK11btTransformS2_RK11btMatrix3x3S5_(i7); + r3 = heapU8[r0+514]; +if(!(r3 ==0)) //_LBB580_6 +{ + r3 = heap32[(r1)]; + r4 = (r3 + 1)|0; + heap32[(r1)] = r4; + r4 = heap32[(r1+1)]; + r5 = (r4 + -1)|0; + heap32[(r1+1)] = r5; + f0 = heapFloat[(r2+111)]; + f1 = heapFloat[(r2+108)]; +if(!(f1 >=f0)) //_LBB580_6 +{ + f1 = heapFloat[(r2+109)]; +if(!(f1 >=f0)) //_LBB580_6 +{ + r2 = (r3 + 2)|0; + r3 = (r4 + -2)|0; + heap32[(r1)] = r2; + heap32[(r1+1)] = r3; +} +} +} + r0 = heapU8[r0+513]; +if(!(r0 ==0)) //_LBB580_8 +{ + r0 = heap32[(r1)]; + r0 = (r0 + 1)|0; + heap32[(r1)] = r0; + r0 = heap32[(r1+1)]; + r0 = (r0 + -1)|0; + heap32[(r1+1)] = r0; +} + return; +} +else{ + r0 = r1 >> 2; + heap32[(r0)] = 0; + heap32[(r0+1)] = 0; + return; +} +} + +function _ZN21btConeTwistConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+6)]; + r3 = heap32[(r1+5)]; + r4 = (r3 + 4)|0; + r5 = (r2 + 4)|0; + r6 = (r3 + 256)|0; + r7 = (r2 + 256)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r6; + heap32[(g0+4)] = r7; + _ZN21btConeTwistConstraint14calcAngleInfo2ERK11btTransformS2_RK11btMatrix3x3S5_(i7); + r4 = heapU8[r0+515]; + if(r4 ==0) //_LBB581_2 +{ + r4 = heap32[(fp+1)]; + r5 = r4 >> 2; + r6 = heap32[(r5+2)]; + r6 = r6 >> 2; + heap32[(r6)] = 1065353216; + r6 = heap32[(r5+6)]; + r7 = heap32[(r5+2)]; + r6 = r6 << 2; + r6 = (r6 + r7)|0; + r6 = r6 >> 2; + heap32[(r6+1)] = 1065353216; + r6 = heap32[(r5+6)]; + r7 = heap32[(r5+2)]; + r6 = r6 << 3; + r6 = (r6 + r7)|0; + r6 = r6 >> 2; + heap32[(r6+2)] = 1065353216; + r3 = r3 >> 2; + f0 = heapFloat[(r3+9)]; + f1 = heapFloat[(r1+84)]; + f2 = heapFloat[(r3+5)]; + f3 = heapFloat[(r3+10)]; + f4 = heapFloat[(r1+85)]; + f5 = heapFloat[(r3+6)]; + r6 = heap32[(r5+6)]; + f6 = heapFloat[(r3+1)]; + f7 = heapFloat[(r3+2)]; + r7 = heap32[(r5+3)]; + f2 = f2*f1; + f5 = f5*f4; + f0 = f0*f1; + f3 = f3*f4; + f8 = heapFloat[(r3+11)]; + f9 = heapFloat[(r1+86)]; + f10 = heapFloat[(r3+7)]; + f11 = heapFloat[(r3+3)]; + f2 = f2+f5; + f5 = f10*f9; + r8 = r7 >> 2; + f0 = f0+f3; + f3 = f8*f9; + f2 = f2+f5; + f0 = f0+f3; + heap32[(r8)] = 0; + r9 = r6 << 2; + f3 = -f2; + heapFloat[(r8+1)] = f0; + r9 = (r7 + r9)|0; + heapFloat[(r8+2)] = f3; + r9 = r9 >> 2; + f1 = f6*f1; + f3 = f7*f4; + f4 = -f0; + heap32[(r8+3)] = 0; + heapFloat[(r9)] = f4; + f1 = f1+f3; + f3 = f11*f9; + r6 = r6 << 3; + f1 = f1+f3; + heap32[(r9+1)] = 0; + r8 = (r6 + r7)|0; + r6 = r6 | 4; + heapFloat[(r9+2)] = f1; + r6 = (r7 + r6)|0; + r7 = r8 >> 2; + heap32[(r9+3)] = 0; + r6 = r6 >> 2; + f3 = -f1; + heapFloat[(r7)] = f2; + heapFloat[(r6)] = f3; + heap32[(r7+2)] = 0; + heap32[(r7+3)] = 0; + r2 = r2 >> 2; + f3 = heapFloat[(r2+9)]; + f4 = heapFloat[(r1+100)]; + f5 = heapFloat[(r2+10)]; + f6 = heapFloat[(r1+101)]; + f3 = f3*f4; + f5 = f5*f6; + f7 = heapFloat[(r2+11)]; + f8 = heapFloat[(r1+102)]; + r6 = heap32[(r5+6)]; + f9 = heapFloat[(r2+5)]; + f10 = heapFloat[(r2+6)]; + f11 = heapFloat[(r2+7)]; + f12 = heapFloat[(r2+1)]; + f13 = heapFloat[(r2+2)]; + f14 = heapFloat[(r2+3)]; + r7 = heap32[(r5+5)]; + f3 = f3+f5; + f5 = f7*f8; + f3 = f3+f5; + r8 = r7 >> 2; + f5 = f9*f4; + f7 = f10*f6; + f5 = f5+f7; + f7 = f11*f8; + f9 = -f3; + heap32[(r8)] = 0; + f5 = f5+f7; + r9 = r6 << 2; + heapFloat[(r8+1)] = f9; + r9 = (r7 + r9)|0; + heapFloat[(r8+2)] = f5; + f4 = f12*f4; + f6 = f13*f6; + f4 = f4+f6; + f6 = f14*f8; + r9 = r9 >> 2; + heap32[(r8+3)] = 0; + f4 = f4+f6; + heapFloat[(r9)] = f3; + r6 = r6 << 3; + f6 = -f4; + heap32[(r9+1)] = 0; + r8 = (r6 + r7)|0; + r6 = r6 | 4; + heapFloat[(r9+2)] = f6; + r6 = (r7 + r6)|0; + r7 = r8 >> 2; + f6 = -f5; + heap32[(r9+3)] = 0; + r6 = r6 >> 2; + heapFloat[(r7)] = f6; + heapFloat[(r6)] = f4; + heap32[(r7+2)] = 0; + heap32[(r7+3)] = 0; + r6 = heapU8[r0+580]; + r6 = r6 & 2; + if(r6 ==0) //_LBB581_4 +{ + r4 = (r4 + 4)|0; +} +else{ + r4 = (r0 + 588)|0; +} + f6 = heapFloat[(r2+13)]; + r4 = r4 >> 2; + f4 = f4+f6; + f1 = f4-f1; + f4 = heapFloat[(r3+13)]; + f6 = heapFloat[(r4)]; + f7 = heapFloat[(r5)]; + r4 = heap32[(r5+7)]; + f6 = f7*f6; + f1 = f1-f4; + r4 = r4 >> 2; + f1 = f1*f6; + heapFloat[(r4)] = f1; + r4 = heap32[(r5+9)]; + r4 = r4 >> 2; + heap32[(r4)] = -8388609; + r4 = heap32[(r5+10)]; + r4 = r4 >> 2; + heap32[(r4)] = 2139095039; + r4 = heapU8[r0+580]; + r4 = r4 & 1; +if(!(r4 ==0)) //_LBB581_7 +{ + r4 = heap32[(r5+8)]; + r4 = r4 >> 2; + heap32[(r4)] = heap32[(r1+146)]; +} + f1 = heapFloat[(r2+14)]; + r4 = heap32[(r5+6)]; + f1 = f5+f1; + r4 = r4 << 2; + r6 = heap32[(r5+7)]; + f4 = heapFloat[(r3+14)]; + f1 = f1-f2; + r4 = (r6 + r4)|0; + f1 = f1-f4; + r4 = r4 >> 2; + f1 = f1*f6; + heapFloat[(r4)] = f1; + r4 = heap32[(r5+6)]; + r6 = heap32[(r5+9)]; + r4 = r4 << 2; + r4 = (r6 + r4)|0; + r4 = r4 >> 2; + heap32[(r4)] = -8388609; + r4 = heap32[(r5+6)]; + r6 = heap32[(r5+10)]; + r4 = r4 << 2; + r4 = (r6 + r4)|0; + r4 = r4 >> 2; + heap32[(r4)] = 2139095039; + r4 = heapU8[r0+580]; + r4 = r4 & 1; +if(!(r4 ==0)) //_LBB581_25 +{ + r4 = heap32[(r5+6)]; + r6 = heap32[(r5+8)]; + r4 = r4 << 2; + r4 = (r6 + r4)|0; + r4 = r4 >> 2; + heap32[(r4)] = heap32[(r1+146)]; +} + f1 = heapFloat[(r2+15)]; + r2 = heap32[(r5+6)]; + f3 = f3+f1; + r2 = r2 << 3; + r4 = heap32[(r5+7)]; + f1 = heapFloat[(r3+15)]; + f0 = f3-f0; + r2 = (r4 + r2)|0; + f0 = f0-f1; + r2 = r2 >> 2; + f0 = f0*f6; + heapFloat[(r2)] = f0; + r2 = heap32[(r5+6)]; + r4 = heap32[(r5+9)]; + r2 = r2 << 3; + r2 = (r4 + r2)|0; + r2 = r2 >> 2; + heap32[(r2)] = -8388609; + r2 = heap32[(r5+6)]; + r4 = heap32[(r5+10)]; + r2 = r2 << 3; + r2 = (r4 + r2)|0; + r2 = r2 >> 2; + heap32[(r2)] = 2139095039; + r2 = heapU8[r0+580]; + r2 = r2 & 1; +if(!(r2 ==0)) //_LBB581_8 +{ + r2 = heap32[(r5+6)]; + r4 = heap32[(r5+8)]; + r2 = r2 << 3; + r2 = (r4 + r2)|0; + r2 = r2 >> 2; + heap32[(r2)] = heap32[(r1+146)]; +} + r2 = heap32[(r5+6)]; + r4 = (r2 * 3)|0; + r6 = heapU8[r0+514]; +_16: do { + if(r6 !=0) //_LBB581_10 +{ + f0 = heapFloat[(r1+111)]; + r6 = heap32[(r5+3)]; + r7 = heap32[(r5+5)]; + f3 = heapFloat[(r1+108)]; +if(!(f3 >=f0)) //_LBB581_13 +{ + f3 = heapFloat[(r1+109)]; +if(!(f3 >=f0)) //_LBB581_13 +{ + f0 = heapFloat[(r3+1)]; + f3 = heapFloat[(r1+73)]; + f6 = heapFloat[(r3+2)]; + f1 = heapFloat[(r1+77)]; + r8 = (r4 + 1)|0; + f2 = heapFloat[(r3+5)]; + f4 = heapFloat[(r3+6)]; + r9 = r4 << 2; + f5 = f3*f0; + f7 = f1*f6; + f8 = heapFloat[(r3+3)]; + f9 = heapFloat[(r1+81)]; + f10 = heapFloat[(r1+74)]; + f11 = heapFloat[(r3+9)]; + f12 = heapFloat[(r1+78)]; + f13 = heapFloat[(r3+10)]; + r10 = (r4 + 2)|0; + r8 = r8 << 2; + r11 = (r6 + r9)|0; + f14 = heapFloat[(r3+11)]; + f15 = heapFloat[(r1+82)]; + f16 = heapFloat[(r3+7)]; + f17 = f3*f2; + f18 = f1*f4; + f5 = f5+f7; + f7 = f9*f8; + r2 = (r2 + r4)|0; + r3 = r10 << 2; + r4 = (r6 + r8)|0; + f5 = f5+f7; + f3 = f3*f11; + f1 = f1*f13; + f7 = f17+f18; + f17 = f9*f16; + r10 = r11 >> 2; + r11 = (r2 + 1)|0; + r12 = r2 << 2; + r13 = (r6 + r3)|0; + f7 = f7+f17; + f0 = f10*f0; + f6 = f12*f6; + f3 = f3+f1; + f1 = f9*f14; + r4 = r4 >> 2; + heapFloat[(r10)] = f5; + r10 = (r2 + 2)|0; + r11 = r11 << 2; + r14 = (r6 + r12)|0; + f3 = f3+f1; + f1 = f10*f2; + f2 = f12*f4; + f0 = f0+f6; + f6 = f15*f8; + r13 = r13 >> 2; + heapFloat[(r4)] = f7; + r4 = r10 << 2; + r10 = (r6 + r11)|0; + f0 = f0+f6; + f6 = f10*f11; + f4 = f12*f13; + f1 = f1+f2; + f2 = f15*f16; + r14 = r14 >> 2; + heapFloat[(r13)] = f3; + r6 = (r6 + r4)|0; + f1 = f1+f2; + f6 = f6+f4; + f2 = f15*f14; + r10 = r10 >> 2; + heapFloat[(r14)] = f0; + r13 = (r7 + r9)|0; + f6 = f6+f2; + r6 = r6 >> 2; + heapFloat[(r10)] = f1; + r8 = (r7 + r8)|0; + r10 = r13 >> 2; + f2 = -f5; + heapFloat[(r6)] = f6; + r3 = (r7 + r3)|0; + r6 = r8 >> 2; + f4 = -f7; + heapFloat[(r10)] = f2; + r8 = (r7 + r12)|0; + r3 = r3 >> 2; + f2 = -f3; + heapFloat[(r6)] = f4; + r6 = (r7 + r11)|0; + r8 = r8 >> 2; + f4 = -f0; + heapFloat[(r3)] = f2; + r3 = (r7 + r4)|0; + r4 = r6 >> 2; + f2 = -f1; + heapFloat[(r8)] = f4; + r3 = r3 >> 2; + f4 = -f6; + heapFloat[(r4)] = f2; + heapFloat[(r3)] = f4; + f2 = heapFloat[(r1+112)]; + f4 = heapFloat[(r1+113)]; + f8 = heapFloat[(r1+114)]; + f2 = f2*f5; + f4 = f4*f7; + r3 = heap32[(r5+7)]; + f2 = f2+f4; + f3 = f8*f3; + f4 = heapFloat[(r5)]; + f5 = heapFloat[(r1+106)]; + r3 = (r3 + r9)|0; + f3 = f2+f3; + f2 = f4*f5; + r3 = r3 >> 2; + f3 = f3*f2; + heapFloat[(r3)] = f3; + f3 = heapFloat[(r1+112)]; + f4 = heapFloat[(r1+113)]; + f5 = heapFloat[(r1+114)]; + f0 = f3*f0; + f3 = f4*f1; + r3 = heap32[(r5+7)]; + f0 = f0+f3; + f3 = f5*f6; + r3 = (r3 + r12)|0; + f0 = f0+f3; + r3 = r3 >> 2; + f0 = f0*f2; + heapFloat[(r3)] = f0; + r3 = heap32[(r5+9)]; + r3 = (r3 + r9)|0; + r3 = r3 >> 2; + heap32[(r3)] = -8388609; + r3 = heap32[(r5+10)]; + r3 = (r3 + r9)|0; + r3 = r3 >> 2; + heap32[(r3)] = 2139095039; + r3 = heap32[(r5+9)]; + r3 = (r3 + r12)|0; + r3 = r3 >> 2; + heap32[(r3)] = -8388609; + r3 = heap32[(r5+10)]; + r3 = (r3 + r12)|0; + r3 = r3 >> 2; + heap32[(r3)] = 2139095039; + r3 = heap32[(r5+6)]; + r4 = (r3 + r2)|0; +break _16; +} +} + r2 = (r4 + 1)|0; + r3 = r4 << 2; + f0 = heapFloat[(r1+106)]; + f3 = heapFloat[(r1+112)]; + r8 = (r4 + 2)|0; + r2 = r2 << 2; + r9 = (r6 + r3)|0; + f3 = f3*f0; + f6 = heapFloat[(r1+114)]; + f1 = heapFloat[(r1+113)]; + r8 = r8 << 2; + r10 = (r6 + r2)|0; + f1 = f1*f0; + f3 = f3*f0; + r9 = r9 >> 2; + r6 = (r6 + r8)|0; + f6 = f6*f0; + f1 = f1*f0; + r10 = r10 >> 2; + heapFloat[(r9)] = f3; + r9 = (r7 + r3)|0; + f0 = f6*f0; + r6 = r6 >> 2; + heapFloat[(r10)] = f1; + r2 = (r7 + r2)|0; + r9 = r9 >> 2; + f3 = -f3; + heapFloat[(r6)] = f0; + r6 = (r7 + r8)|0; + r2 = r2 >> 2; + f6 = -f1; + heapFloat[(r9)] = f3; + r6 = r6 >> 2; + f0 = -f0; + heapFloat[(r2)] = f6; + heapFloat[(r6)] = f0; + r2 = heap32[(r5+7)]; + f0 = heapFloat[(r5)]; + f3 = heapFloat[(r1+105)]; + r2 = (r2 + r3)|0; + f6 = heapFloat[(r1+123)]; + f0 = f0*f3; + r2 = r2 >> 2; + f0 = f6*f0; + heapFloat[(r2)] = f0; + r2 = heapU8[r0+580]; + r2 = r2 & 4; +if(!(r2 ==0)) //_LBB581_15 +{ + r2 = heap32[(r5+8)]; + r2 = (r2 + r3)|0; + r2 = r2 >> 2; + heap32[(r2)] = heap32[(r1+148)]; +} + r2 = heap32[(r5+9)]; + r2 = (r2 + r3)|0; + r2 = r2 >> 2; + heap32[(r2)] = 0; + r2 = heap32[(r5+10)]; + r2 = (r2 + r3)|0; + r2 = r2 >> 2; + heap32[(r2)] = 2139095039; + r2 = heap32[(r5+6)]; + r4 = (r2 + r4)|0; +} +} while(0); + r2 = heapU8[r0+513]; + if(r2 ==0) //_LBB581_28 +{ + return; +} +else{ + r2 = (r4 + 1)|0; + r3 = r4 << 2; + r6 = heap32[(r5+3)]; + f0 = heapFloat[(r1+106)]; + f3 = heapFloat[(r1+116)]; + r4 = (r4 + 2)|0; + r2 = r2 << 2; + r7 = heap32[(r5+5)]; + r8 = (r6 + r3)|0; + f3 = f3*f0; + f6 = heapFloat[(r1+118)]; + f1 = heapFloat[(r1+117)]; + r4 = r4 << 2; + r9 = (r6 + r2)|0; + f1 = f1*f0; + f3 = f3*f0; + r8 = r8 >> 2; + r6 = (r6 + r4)|0; + f6 = f6*f0; + f1 = f1*f0; + r9 = r9 >> 2; + heapFloat[(r8)] = f3; + r8 = (r7 + r3)|0; + f0 = f6*f0; + r6 = r6 >> 2; + heapFloat[(r9)] = f1; + r2 = (r7 + r2)|0; + r8 = r8 >> 2; + f3 = -f3; + heapFloat[(r6)] = f0; + r4 = (r7 + r4)|0; + r2 = r2 >> 2; + f6 = -f1; + heapFloat[(r8)] = f3; + r4 = r4 >> 2; + f0 = -f0; + heapFloat[(r2)] = f6; + heapFloat[(r4)] = f0; + r2 = heap32[(r5+7)]; + f0 = heapFloat[(r5)]; + f3 = heapFloat[(r1+105)]; + r2 = (r2 + r3)|0; + f6 = heapFloat[(r1+124)]; + f0 = f0*f3; + r2 = r2 >> 2; + f0 = f6*f0; + heapFloat[(r2)] = f0; + r0 = heapU8[r0+580]; + r0 = r0 & 4; +if(!(r0 ==0)) //_LBB581_19 +{ + r0 = heap32[(r5+8)]; + r0 = (r0 + r3)|0; + r0 = r0 >> 2; + heap32[(r0)] = heap32[(r1+148)]; +} + f0 = heapFloat[(r1+110)]; + f3 = 0; + if(f0 <=f3) //_LBB581_24 +{ + r0 = heap32[(r5+9)]; + r0 = (r0 + r3)|0; + r0 = r0 >> 2; + heap32[(r0)] = -8388609; +} +else{ + r0 = heap32[(r5+9)]; + f0 = heapFloat[(r1+124)]; + if(f0 <=f3) //_LBB581_23 +{ + r0 = (r0 + r3)|0; + r0 = r0 >> 2; + heap32[(r0)] = -8388609; + r0 = heap32[(r5+10)]; + r3 = (r0 + r3)|0; + r3 = r3 >> 2; + heap32[(r3)] = 0; + return; +} +else{ + r0 = (r0 + r3)|0; + r0 = r0 >> 2; + heap32[(r0)] = 0; +} +} + r0 = heap32[(r5+10)]; + r0 = (r0 + r3)|0; + r0 = r0 >> 2; + heap32[(r0)] = 2139095039; + return; +} +} +else{ + r0 = _2E_str1149; + r1 = _2E_str24; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 126; + _assert(i7); +} +} + +function _ZN21btConeTwistConstraint23solveConstraintObsoleteER11btRigidBodyS1_f(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; + var f30; +var __label__ = 0; + i7 = sp + -624;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heapU8[r0+515]; +if(!(r1 ==0)) //_LBB582_52 +{ + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + f0 = heapFloat[(fp+3)]; + heapFloat[(fp+-117)] = f0; + r3 = r0 >> 2; + r4 = heapU8[r0+512]; +if(!(r4 !=0)) //_LBB582_8 +{ + r4 = heap32[(r3+5)]; + r5 = heap32[(r3+6)]; + r4 = r4 >> 2; + r5 = r5 >> 2; + f0 = heapFloat[(r4+9)]; + f1 = heapFloat[(r3+84)]; + f2 = heapFloat[(r4+5)]; + f3 = heapFloat[(r4+1)]; + f4 = heapFloat[(r4+10)]; + f5 = heapFloat[(r3+85)]; + f6 = heapFloat[(r4+6)]; + f7 = heapFloat[(r4+2)]; + f8 = heapFloat[(r5+9)]; + f9 = heapFloat[(r3+100)]; + f10 = heapFloat[(r5+5)]; + f11 = heapFloat[(r5+1)]; + f12 = heapFloat[(r5+10)]; + f13 = heapFloat[(r3+101)]; + f14 = heapFloat[(r5+6)]; + f15 = heapFloat[(r5+2)]; + f0 = f0*f1; + f4 = f4*f5; + f16 = heapFloat[(r4+11)]; + f17 = heapFloat[(r3+86)]; + f18 = heapFloat[(r4+7)]; + f19 = heapFloat[(r4+3)]; + f2 = f2*f1; + f6 = f6*f5; + f1 = f3*f1; + f3 = f7*f5; + f5 = f8*f9; + f7 = f12*f13; + f8 = heapFloat[(r5+11)]; + f12 = heapFloat[(r3+102)]; + f20 = heapFloat[(r5+7)]; + f21 = heapFloat[(r5+3)]; + f10 = f10*f9; + f14 = f14*f13; + f9 = f11*f9; + f11 = f15*f13; + f0 = f0+f4; + f4 = f16*f17; + f2 = f2+f6; + f6 = f18*f17; + f1 = f1+f3; + f3 = f19*f17; + f5 = f5+f7; + f7 = f8*f12; + f8 = f10+f14; + f10 = f20*f12; + f9 = f9+f11; + f11 = f21*f12; + f12 = heapFloat[(r4+15)]; + f0 = f0+f4; + f4 = heapFloat[(r4+14)]; + f2 = f2+f6; + f6 = heapFloat[(r4+13)]; + f1 = f1+f3; + f3 = heapFloat[(r5+15)]; + f5 = f5+f7; + f7 = heapFloat[(r5+14)]; + f8 = f8+f10; + f10 = heapFloat[(r5+13)]; + f9 = f9+f11; + f0 = f0+f12; + heapFloat[(fp+-119)] = f0; + f0 = f2+f4; + heapFloat[(fp+-121)] = f0; + f1 = f1+f6; + heapFloat[(fp+-120)] = f1; + f0 = f5+f3; + heapFloat[(fp+-122)] = f0; + f0 = f8+f7; + heapFloat[(fp+-123)] = f0; + f1 = f9+f10; + r4 = r1 >> 2; + r5 = r2 >> 2; + f2 = heapFloat[(r4+80)]; + f5 = heapFloat[(r4+130)]; + f8 = heapFloat[(r5+80)]; + f9 = heapFloat[(r5+130)]; + f11 = heapFloat[(r4+81)]; + f13 = heapFloat[(r4+131)]; + f14 = heapFloat[(r4+82)]; + f15 = heapFloat[(r4+132)]; + f16 = heapFloat[(r5+81)]; + f17 = heapFloat[(r5+131)]; + f18 = heapFloat[(r5+82)]; + f19 = heapFloat[(r5+132)]; + f20 = heapFloat[(fp+-120)]; + f6 = f20-f6; + f10 = f1-f10; + f11 = f11+f13; + f0 = heapFloat[(fp+-119)]; + f12 = f0-f12; + f2 = f2+f5; + f0 = heapFloat[(fp+-121)]; + f4 = f0-f4; + f5 = f14+f15; + f13 = f16+f17; + f0 = heapFloat[(fp+-122)]; + f3 = f0-f3; + f8 = f8+f9; + f0 = heapFloat[(fp+-123)]; + f7 = f0-f7; + f9 = f18+f19; + f14 = heapFloat[(r4+78)]; + f15 = heapFloat[(r4+128)]; + f16 = f2*f4; + f17 = f11*f6; + f18 = heapFloat[(r5+78)]; + f19 = heapFloat[(r5+128)]; + f21 = f8*f7; + f22 = f13*f10; + f23 = heapFloat[(r4+77)]; + f24 = heapFloat[(r4+127)]; + f25 = f5*f6; + f2 = f2*f12; + f26 = heapFloat[(r5+77)]; + f27 = heapFloat[(r5+127)]; + f28 = f9*f10; + f8 = f8*f3; + f29 = heapFloat[(r4+76)]; + f30 = heapFloat[(r4+126)]; + f11 = f11*f12; + f5 = f5*f4; + f0 = heapFloat[(r5+76)]; + f20 = heapFloat[(r5+126)]; + f13 = f13*f3; + f9 = f9*f7; + f14 = f14+f15; + f15 = f16-f17; + f16 = f18+f19; + f17 = f21-f22; + f18 = f23+f24; + f2 = f25-f2; + f19 = f26+f27; + f8 = f28-f8; + f21 = f29+f30; + f5 = f11-f5; + f0 = f0+f20; + f9 = f13-f9; + f11 = f14+f15; + f13 = f16+f17; + f2 = f18+f2; + f8 = f19+f8; + f5 = f21+f5; + f0 = f0+f9; + f9 = f11-f13; + f2 = f2-f8; + heapFloat[(fp+-118)] = f2; + f0 = f5-f0; + f2 = heapFloat[(fp+-119)]; + f5 = heapFloat[(fp+-122)]; + f2 = f2-f5; + f5 = heapFloat[(fp+-121)]; + f8 = heapFloat[(fp+-123)]; + f5 = f5-f8; + f8 = heapFloat[(fp+-120)]; + f1 = f8-f1; + r6 = 0; +_5: while(true){ + r7 = (r6 * -21)|0; + r8 = r7 << 2; + r8 = (r0 + r8)|0; + r8 = r8 >> 2; + f8 = heapFloat[(r8+9)]; + f11 = heapFloat[(r8+10)]; + f13 = heapFloat[(r8+11)]; + f14 = f1*f8; + f15 = f5*f11; + f14 = f14+f15; + f15 = f2*f13; + f14 = f14+f15; + f15 = -0.30000001192092896; + f16 = f8*f0; + f17 = heapFloat[(fp+-118)]; + f17 = f11*f17; + f14 = f14*f15; + f15 = f16+f17; + f16 = f13*f9; + f17 = 1; + f18 = heapFloat[(r8+29)]; + f19 = heapFloat[(fp+-117)]; + f14 = f14/f19; + f17 = f17/f18; + f15 = f15+f16; + f14 = f14*f17; + f15 = f15*f17; + f14 = f14-f15; + f15 = heapFloat[(r3+7)]; + f15 = f15+f14; + heapFloat[(r3+7)] = f15; + f15 = heapFloat[(r4+84)]; + f16 = 0; +if(!(f15 ==f16)) //_LBB582_5 +{ + r9 = heap32[(r3+5)]; + r9 = r9 >> 2; + f15 = f6*f11; + f17 = f4*f8; + f18 = f12*f8; + f19 = f6*f13; + f20 = f4*f13; + f21 = f12*f11; + f15 = f15-f17; + f17 = f18-f19; + f18 = f20-f21; + f19 = heapFloat[(r9+84)]; + f20 = f8*f19; + f20 = f20*f14; + f21 = heapFloat[(r4+126)]; + f22 = heapFloat[(r9+65)]; + f23 = heapFloat[(r9+64)]; + f24 = heapFloat[(r9+69)]; + f25 = heapFloat[(r9+68)]; + f26 = heapFloat[(r9+73)]; + f27 = heapFloat[(r9+72)]; + f28 = heapFloat[(r9+66)]; + f29 = heapFloat[(r9+70)]; + f30 = heapFloat[(r9+74)]; + f20 = f21+f20; + f21 = f11*f19; + heapFloat[(r4+126)] = f20; + f20 = f21*f14; + f21 = heapFloat[(r4+127)]; + f20 = f21+f20; + f19 = f13*f19; + heapFloat[(r4+127)] = f20; + f19 = f19*f14; + f20 = heapFloat[(r4+128)]; + f19 = f20+f19; + heapFloat[(r4+128)] = f19; + f19 = f23*f18; + f20 = f22*f17; + f21 = heapFloat[(r4+134)]; + f19 = f19+f20; + f20 = f28*f15; + f19 = f19+f20; + f20 = f21*f14; + f21 = heapFloat[(r4+136)]; + f22 = heapFloat[(r4+135)]; + f23 = heapFloat[(r4+130)]; + f19 = f19*f20; + f20 = f25*f18; + f24 = f24*f17; + f20 = f20+f24; + f24 = f29*f15; + f19 = f23+f19; + heapFloat[(r4+130)] = f19; + f19 = f20+f24; + f20 = f22*f14; + f18 = f27*f18; + f17 = f26*f17; + f19 = f19*f20; + f20 = heapFloat[(r4+131)]; + f19 = f20+f19; + f17 = f18+f17; + f15 = f30*f15; + heapFloat[(r4+131)] = f19; + f15 = f17+f15; + f17 = f21*f14; + f15 = f15*f17; + f17 = heapFloat[(r4+132)]; + f15 = f17+f15; + heapFloat[(r4+132)] = f15; +} + f15 = heapFloat[(r5+84)]; +if(!(f15 ==f16)) //_LBB582_7 +{ + f15 = f10*f11; + f16 = f7*f8; + f8 = f3*f8; + f17 = f10*f13; + f13 = f7*f13; + f11 = f3*f11; + f15 = f15-f16; + f8 = f8-f17; + f11 = f13-f11; + r9 = heap32[(r3+6)]; + r9 = r9 >> 2; + f13 = -f14; + f14 = heapFloat[(r9+84)]; + r10 = r7 << 2; + r10 = (r0 + r10)|0; + r10 = r10 >> 2; + r7 = r7 << 2; + r7 = (r0 + r7)|0; + f16 = heapFloat[(r10+9)]; + r7 = r7 >> 2; + f16 = f16*f14; + f17 = heapFloat[(r7+10)]; + f18 = heapFloat[(r8+11)]; + f16 = f16*f13; + f19 = heapFloat[(r5+126)]; + f20 = heapFloat[(r9+65)]; + f21 = heapFloat[(r9+64)]; + f22 = heapFloat[(r9+69)]; + f23 = heapFloat[(r9+68)]; + f24 = heapFloat[(r9+73)]; + f25 = heapFloat[(r9+72)]; + f26 = heapFloat[(r9+66)]; + f27 = heapFloat[(r9+70)]; + f28 = heapFloat[(r9+74)]; + f16 = f19+f16; + f17 = f17*f14; + heapFloat[(r5+126)] = f16; + f16 = f17*f13; + f17 = heapFloat[(r5+127)]; + f16 = f17+f16; + f14 = f18*f14; + heapFloat[(r5+127)] = f16; + f14 = f14*f13; + f16 = heapFloat[(r5+128)]; + f14 = f16+f14; + heapFloat[(r5+128)] = f14; + f14 = f21*f11; + f16 = f20*f8; + f17 = heapFloat[(r5+134)]; + f14 = f14+f16; + f16 = f26*f15; + f14 = f14+f16; + f16 = f17*f13; + f17 = heapFloat[(r5+136)]; + f18 = heapFloat[(r5+135)]; + f19 = heapFloat[(r5+130)]; + f14 = f14*f16; + f16 = f23*f11; + f20 = f22*f8; + f16 = f16+f20; + f20 = f27*f15; + f14 = f19+f14; + heapFloat[(r5+130)] = f14; + f14 = f16+f20; + f16 = f18*f13; + f11 = f25*f11; + f8 = f24*f8; + f14 = f14*f16; + f16 = heapFloat[(r5+131)]; + f14 = f16+f14; + f8 = f11+f8; + f11 = f28*f15; + heapFloat[(r5+131)] = f14; + f8 = f8+f11; + f11 = f17*f13; + f8 = f8*f11; + f11 = heapFloat[(r5+132)]; + f8 = f11+f8; + heapFloat[(r5+132)] = f8; +} + r6 = (r6 + -1)|0; +if(!(r6 !=-3)) //_LBB582_3 +{ +break _5; +} +} +} + r4 = heapU8[r0+540]; +_14: do { + if(r4 ==0) //_LBB582_29 +{ + f0 = heapFloat[(r3+107)]; + f1 = 1.1920928955078125e-007; + if(f0 <=f1) //_LBB582_35 +{ +break _14; +} +else{ + r4 = r2 >> 2; + r5 = r1 >> 2; + f0 = heapFloat[(r4+81)]; + f2 = heapFloat[(r4+131)]; + f3 = heapFloat[(r5+81)]; + f4 = heapFloat[(r5+131)]; + f5 = heapFloat[(r4+80)]; + f6 = heapFloat[(r4+130)]; + f7 = heapFloat[(r5+80)]; + f8 = heapFloat[(r5+130)]; + f9 = heapFloat[(r4+82)]; + f10 = heapFloat[(r4+132)]; + f11 = heapFloat[(r5+82)]; + f12 = heapFloat[(r5+132)]; + f0 = f0+f2; + f2 = f3+f4; + f3 = f5+f6; + f4 = f7+f8; + f0 = f0-f2; + f2 = f3-f4; + f3 = f9+f10; + f4 = f11+f12; + f3 = f3-f4; + f4 = f2*f2; + f5 = f0*f0; + f4 = f4+f5; + f5 = f3*f3; + f4 = f4+f5; + if(f4 <=f1) //_LBB582_35 +{ +break _14; +} +else{ + heapFloat[(g0)] = f4; + sqrtf(i7); + r6 = heap32[(r3+5)]; + r7 = heap32[(r3+6)]; + f4 = 1; + r6 = r6 >> 2; + r7 = r7 >> 2; + f1 = f4/f_g0; + f5 = heapFloat[(r6+64)]; + f6 = f2*f1; + f7 = heapFloat[(r6+65)]; + f8 = heapFloat[(r7+64)]; + f9 = heapFloat[(r7+65)]; + f10 = heapFloat[(r6+68)]; + f11 = f0*f1; + f12 = heapFloat[(r6+69)]; + f13 = heapFloat[(r7+68)]; + f14 = heapFloat[(r7+69)]; + f15 = heapFloat[(r6+66)]; + f16 = heapFloat[(r6+70)]; + f17 = heapFloat[(r7+66)]; + f18 = heapFloat[(r7+70)]; + f5 = f5*f6; + f10 = f10*f11; + f19 = heapFloat[(r6+72)]; + f1 = f3*f1; + f20 = heapFloat[(r6+73)]; + f21 = heapFloat[(r7+72)]; + f22 = heapFloat[(r7+73)]; + f7 = f7*f6; + f12 = f12*f11; + f8 = f8*f6; + f13 = f13*f11; + f9 = f9*f6; + f14 = f14*f11; + f23 = heapFloat[(r6+74)]; + f24 = heapFloat[(r7+74)]; + f5 = f5+f10; + f10 = f19*f1; + f7 = f7+f12; + f12 = f20*f1; + f15 = f15*f6; + f16 = f16*f11; + f8 = f8+f13; + f13 = f21*f1; + f9 = f9+f14; + f14 = f22*f1; + f17 = f17*f6; + f18 = f18*f11; + f5 = f5+f10; + f7 = f7+f12; + f8 = f8+f13; + f9 = f9+f14; + f10 = f15+f16; + f12 = f23*f1; + f13 = f17+f18; + f14 = f24*f1; + f10 = f10+f12; + f12 = f13+f14; + f5 = f6*f5; + f7 = f11*f7; + f6 = f6*f8; + f8 = f11*f9; + f5 = f5+f7; + f7 = f1*f10; + f6 = f6+f8; + f1 = f1*f12; + f5 = f5+f7; + f1 = f6+f1; + f1 = f5+f1; + f5 = heapFloat[(r3+107)]; + f1 = f4/f1; + f1 = f5*f1; + f0 = f0*f1; + f2 = f2*f1; + f1 = f3*f1; + f3 = f2*f2; + f5 = f0*f0; + f3 = f3+f5; + f5 = f1*f1; + f3 = f3+f5; + heapFloat[(g0)] = f3; + sqrtf(i7); + f3 = f_g0; + f4 = f4/f3; + f1 = f1*f4; + f0 = f0*f4; + f2 = f2*f4; + f4 = heapFloat[(r5+84)]; + f5 = 0; +if(!(f4 ==f5)) //_LBB582_33 +{ + r6 = heap32[(r3+5)]; + r6 = r6 >> 2; + f4 = f3*f5; + f6 = heapFloat[(r5+126)]; + f7 = heapFloat[(r6+65)]; + f8 = heapFloat[(r6+64)]; + f9 = heapFloat[(r6+69)]; + f10 = heapFloat[(r6+68)]; + f11 = heapFloat[(r6+73)]; + f12 = heapFloat[(r6+72)]; + f13 = heapFloat[(r6+66)]; + f14 = heapFloat[(r6+70)]; + f15 = heapFloat[(r6+74)]; + f6 = f6+f4; + heapFloat[(r5+126)] = f6; + f6 = heapFloat[(r5+127)]; + f6 = f6+f4; + heapFloat[(r5+127)] = f6; + f6 = heapFloat[(r5+128)]; + f4 = f6+f4; + heapFloat[(r5+128)] = f4; + f4 = f8*f2; + f6 = f7*f0; + f7 = heapFloat[(r5+134)]; + f4 = f4+f6; + f6 = f13*f1; + f4 = f4+f6; + f6 = f7*f3; + f7 = heapFloat[(r5+136)]; + f8 = heapFloat[(r5+135)]; + f13 = heapFloat[(r5+130)]; + f4 = f4*f6; + f6 = f10*f2; + f9 = f9*f0; + f6 = f6+f9; + f9 = f14*f1; + f4 = f13+f4; + heapFloat[(r5+130)] = f4; + f4 = f6+f9; + f6 = f8*f3; + f8 = f12*f2; + f9 = f11*f0; + f4 = f4*f6; + f6 = heapFloat[(r5+131)]; + f4 = f6+f4; + f6 = f8+f9; + f8 = f15*f1; + heapFloat[(r5+131)] = f4; + f4 = f6+f8; + f6 = f7*f3; + f4 = f4*f6; + f6 = heapFloat[(r5+132)]; + f4 = f6+f4; + heapFloat[(r5+132)] = f4; +} + f4 = heapFloat[(r4+84)]; + if(f4 ==f5) //_LBB582_35 +{ +break _14; +} +else{ + f4 = -f3; + r5 = heap32[(r3+6)]; + r5 = r5 >> 2; + f5 = -0; + f3 = f3*f5; + f5 = heapFloat[(r4+126)]; + f6 = heapFloat[(r5+65)]; + f7 = heapFloat[(r5+64)]; + f8 = heapFloat[(r5+69)]; + f9 = heapFloat[(r5+68)]; + f10 = heapFloat[(r5+73)]; + f11 = heapFloat[(r5+72)]; + f12 = heapFloat[(r5+66)]; + f13 = heapFloat[(r5+70)]; + f14 = heapFloat[(r5+74)]; + f5 = f5+f3; + heapFloat[(r4+126)] = f5; + f5 = heapFloat[(r4+127)]; + f5 = f5+f3; + heapFloat[(r4+127)] = f5; + f5 = heapFloat[(r4+128)]; + f3 = f5+f3; + heapFloat[(r4+128)] = f3; + f3 = f7*f2; + f5 = f6*f0; + f3 = f3+f5; + f5 = f12*f1; + f6 = heapFloat[(r4+134)]; + f3 = f3+f5; + f5 = f6*f4; + f6 = heapFloat[(r4+136)]; + f7 = heapFloat[(r4+135)]; + f12 = heapFloat[(r4+130)]; + f3 = f3*f5; + f5 = f9*f2; + f8 = f8*f0; + f5 = f5+f8; + f8 = f13*f1; + f3 = f12+f3; + heapFloat[(r4+130)] = f3; + f3 = f5+f8; + f5 = f7*f4; + f2 = f11*f2; + f0 = f10*f0; + f3 = f3*f5; + f5 = heapFloat[(r4+131)]; + f3 = f5+f3; + f0 = f2+f0; + f1 = f14*f1; + heapFloat[(r4+131)] = f3; + f0 = f0+f1; + f1 = f6*f4; + f0 = f0*f1; + f1 = heapFloat[(r4+132)]; + f0 = f1+f0; + heapFloat[(r4+132)] = f0; +} +} +} +} +else{ + r4 = heap32[(r3+5)]; + r5 = sp + -112; + r4 = r4 >> 2; + r6 = r5 >> 2; + heap32[(fp+-28)] = heap32[(r4+1)]; + heap32[(r6+1)] = heap32[(r4+2)]; + heap32[(r6+2)] = heap32[(r4+3)]; + heap32[(r6+3)] = heap32[(r4+4)]; + heap32[(r6+4)] = heap32[(r4+5)]; + heap32[(r6+5)] = heap32[(r4+6)]; + heap32[(r6+6)] = heap32[(r4+7)]; + heap32[(r6+7)] = heap32[(r4+8)]; + heap32[(r6+8)] = heap32[(r4+9)]; + heap32[(r6+9)] = heap32[(r4+10)]; + heap32[(r6+10)] = heap32[(r4+11)]; + heap32[(r6+11)] = heap32[(r4+12)]; + heap32[(r6+12)] = heap32[(r4+13)]; + heap32[(r6+13)] = heap32[(r4+14)]; + heap32[(r6+14)] = heap32[(r4+15)]; + heap32[(r6+15)] = heap32[(r4+16)]; + r4 = heap32[(r3+6)]; + r6 = sp + -176; + r4 = r4 >> 2; + r7 = r6 >> 2; + heap32[(fp+-44)] = heap32[(r4+1)]; + heap32[(r7+1)] = heap32[(r4+2)]; + heap32[(r7+2)] = heap32[(r4+3)]; + heap32[(r7+3)] = heap32[(r4+4)]; + heap32[(r7+4)] = heap32[(r4+5)]; + heap32[(r7+5)] = heap32[(r4+6)]; + heap32[(r7+6)] = heap32[(r4+7)]; + heap32[(r7+7)] = heap32[(r4+8)]; + heap32[(r7+8)] = heap32[(r4+9)]; + heap32[(r7+9)] = heap32[(r4+10)]; + heap32[(r7+10)] = heap32[(r4+11)]; + heap32[(r7+11)] = heap32[(r4+12)]; + heap32[(r7+12)] = heap32[(r4+13)]; + heap32[(r7+13)] = heap32[(r4+14)]; + heap32[(r7+14)] = heap32[(r4+15)]; + r8 = r1 >> 2; + heap32[(r7+15)] = heap32[(r4+16)]; + f0 = heapFloat[(r8+82)]; + f1 = heapFloat[(r8+132)]; + f2 = heapFloat[(r8+81)]; + f3 = heapFloat[(r8+131)]; + f4 = heapFloat[(r8+80)]; + f5 = heapFloat[(r8+130)]; + r4 = sp + -192; + f4 = f4+f5; + r7 = r4 >> 2; + f2 = f2+f3; + heapFloat[(fp+-48)] = f4; + f0 = f0+f1; + heapFloat[(r7+1)] = f2; + heapFloat[(r7+2)] = f0; + r9 = r2 >> 2; + heap32[(r7+3)] = 0; + f0 = heapFloat[(r9+82)]; + f1 = heapFloat[(r9+132)]; + f2 = heapFloat[(r9+81)]; + f3 = heapFloat[(r9+131)]; + f4 = heapFloat[(r9+80)]; + f5 = heapFloat[(r9+130)]; + r10 = sp + -208; + f4 = f4+f5; + f2 = f2+f3; + heapFloat[(fp+-52)] = f4; + r11 = r10 >> 2; + f0 = f0+f1; + heapFloat[(r11+1)] = f2; + heapFloat[(r11+2)] = f0; + r12 = sp + -272; + heap32[(r11+3)] = 0; + r13 = r12 >> 2; + heap32[(fp+-68)] = 1065353216; + heap32[(r13+1)] = 0; + heap32[(r13+2)] = 0; + heap32[(r13+3)] = 0; + heap32[(r13+4)] = 0; + heap32[(r13+5)] = 1065353216; + heap32[(r13+6)] = 0; + heap32[(r13+7)] = 0; + heap32[(r13+8)] = 0; + heap32[(r13+9)] = 0; + heap32[(r13+10)] = 1065353216; + heap32[(r13+11)] = 0; + heap32[(r13+12)] = 0; + heap32[(r13+13)] = 0; + heap32[(r13+14)] = 0; + heap32[(r13+15)] = 0; + heap32[(g0)] = r5; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = 0; + heap32[(g0+3)] = 0; + heap32[(g0+4)] = r4; + f0 = heapFloat[(fp+-117)]; + heapFloat[(g0+5)] = f0; + heap32[(g0+6)] = r12; + r4 = sp + -336; + _ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(i7); + r12 = r4 >> 2; + heap32[(fp+-84)] = 1065353216; + heap32[(r12+1)] = 0; + heap32[(r12+2)] = 0; + heap32[(r12+3)] = 0; + heap32[(r12+4)] = 0; + heap32[(r12+5)] = 1065353216; + heap32[(r12+6)] = 0; + heap32[(r12+7)] = 0; + heap32[(r12+8)] = 0; + heap32[(r12+9)] = 0; + heap32[(r12+10)] = 1065353216; + heap32[(r12+11)] = 0; + heap32[(r12+12)] = 0; + heap32[(r12+13)] = 0; + heap32[(r12+14)] = 0; + heap32[(r12+15)] = 0; + heap32[(g0)] = r6; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = 0; + heap32[(g0+3)] = 0; + heap32[(g0+4)] = r10; + heapFloat[(g0+5)] = f0; + heap32[(g0+6)] = r4; + _ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(i7); + f1 = heapFloat[(r3+136)]; + f2 = heapFloat[(r3+137)]; + f3 = heapFloat[(r3+138)]; + f4 = f1*f1; + f5 = f2*f2; + f6 = heapFloat[(r3+139)]; + f4 = f4+f5; + f5 = f3*f3; + f4 = f4+f5; + f5 = f6*f6; + f7 = 2; + f4 = f4+f5; + f4 = f7/f4; + f5 = f3*f4; + f7 = f2*f4; + f4 = f1*f4; + f3 = f3*f5; + f8 = f1*f4; + f9 = f2*f7; + f0 = 1; + heapFloat[(fp+-118)] = f0; + f10 = f9+f3; + f3 = f8+f3; + f11 = f1*f7; + f12 = f6*f5; + f10 = f0-f10; + f0 = heapFloat[(r3+92)]; + heapFloat[(fp+-131)] = f0; + f13 = f11-f12; + f0 = heapFloat[(r3+88)]; + heapFloat[(fp+-120)] = f0; + f11 = f11+f12; + f12 = heapFloat[(r3+93)]; + heapFloat[(fp+-132)] = f12; + f0 = heapFloat[(fp+-118)]; + f3 = f0-f3; + f0 = heapFloat[(r3+89)]; + heapFloat[(fp+-121)] = f0; + f1 = f1*f5; + f7 = f6*f7; + f2 = f2*f5; + f4 = f6*f4; + f5 = f1+f7; + f6 = heapFloat[(r3+96)]; + heapFloat[(fp+-129)] = f6; + f12 = f2-f4; + f14 = heapFloat[(r3+97)]; + heapFloat[(fp+-136)] = f14; + f8 = f8+f9; + f0 = heapFloat[(fp+-120)]; + f9 = f10*f0; + f0 = heapFloat[(fp+-121)]; + f15 = f11*f0; + f0 = heapFloat[(fp+-120)]; + f16 = f13*f0; + f0 = heapFloat[(fp+-121)]; + f17 = f3*f0; + f0 = heapFloat[(fp+-131)]; + f18 = f10*f0; + f19 = heapFloat[(fp+-132)]; + f20 = f11*f19; + f21 = f13*f0; + f22 = f3*f19; + f1 = f1-f7; + f7 = heapFloat[(r3+94)]; + heapFloat[(fp+-137)] = f7; + f2 = f2+f4; + f0 = heapFloat[(r3+90)]; + heapFloat[(fp+-133)] = f0; + f0 = heapFloat[(fp+-118)]; + f4 = f0-f8; + f6 = heapFloat[(r3+98)]; + heapFloat[(fp+-130)] = f6; + f7 = f9+f15; + f0 = heapFloat[(fp+-133)]; + f8 = f1*f0; + f9 = f16+f17; + f14 = f2*f0; + f0 = heapFloat[(fp+-120)]; + f15 = f5*f0; + f0 = heapFloat[(fp+-121)]; + f16 = f12*f0; + f17 = f18+f20; + f18 = heapFloat[(fp+-137)]; + f19 = f1*f18; + f20 = f21+f22; + f21 = f2*f18; + f0 = heapFloat[(fp+-131)]; + f22 = f5*f0; + f23 = heapFloat[(fp+-132)]; + f24 = f12*f23; + f6 = heapFloat[(fp+-129)]; + f10 = f10*f6; + f25 = heapFloat[(fp+-136)]; + f11 = f11*f25; + f13 = f13*f6; + f3 = f3*f25; + f0 = f7+f8; + heapFloat[(fp+-124)] = f0; + f6 = heapFloat[(r3+72)]; + f7 = f17+f19; + heapFloat[(fp+-134)] = f7; + f0 = f9+f14; + heapFloat[(fp+-125)] = f0; + f7 = heapFloat[(r3+73)]; + f8 = f20+f21; + heapFloat[(fp+-139)] = f8; + f9 = f15+f16; + f0 = heapFloat[(fp+-133)]; + f14 = f4*f0; + f15 = f22+f24; + f16 = f4*f18; + f10 = f10+f11; + f11 = heapFloat[(fp+-130)]; + f1 = f1*f11; + f3 = f13+f3; + f2 = f2*f11; + f13 = heapFloat[(fp+-129)]; + f5 = f5*f13; + f12 = f12*f25; + f17 = heapFloat[(r3+76)]; + f1 = f10+f1; + heapFloat[(fp+-138)] = f1; + f10 = heapFloat[(r3+77)]; + f2 = f3+f2; + heapFloat[(fp+-123)] = f2; + f0 = heapFloat[(fp+-124)]; + f3 = f6*f0; + f0 = heapFloat[(fp+-125)]; + f19 = f7*f0; + f0 = f9+f14; + heapFloat[(fp+-126)] = f0; + f1 = heapFloat[(r3+74)]; + f0 = f15+f16; + heapFloat[(fp+-127)] = f0; + f2 = heapFloat[(fp+-134)]; + f8 = f6*f2; + f9 = heapFloat[(fp+-139)]; + f11 = f7*f9; + f5 = f5+f12; + f12 = heapFloat[(fp+-130)]; + f4 = f4*f12; + f13 = heapFloat[(r3+80)]; + f14 = heapFloat[(r3+81)]; + f15 = heapFloat[(r3+78)]; + f4 = f5+f4; + heapFloat[(fp+-122)] = f4; + f0 = heapFloat[(fp+-124)]; + f5 = f17*f0; + f0 = heapFloat[(fp+-125)]; + f16 = f10*f0; + f18 = f17*f2; + f20 = f10*f9; + f3 = f3+f19; + f0 = heapFloat[(fp+-126)]; + f19 = f1*f0; + f8 = f8+f11; + f0 = heapFloat[(fp+-127)]; + f11 = f1*f0; + f21 = heapFloat[(fp+-138)]; + f22 = f6*f21; + f2 = heapFloat[(fp+-123)]; + f23 = f7*f2; + f24 = heapFloat[(r3+82)]; + f0 = heapFloat[(fp+-124)]; + f25 = f13*f0; + f0 = heapFloat[(fp+-125)]; + f26 = f14*f0; + f2 = heapFloat[(fp+-134)]; + f27 = f13*f2; + f28 = f14*f9; + f5 = f5+f16; + f0 = heapFloat[(fp+-126)]; + f16 = f15*f0; + f18 = f18+f20; + f0 = heapFloat[(fp+-127)]; + f20 = f15*f0; + f29 = f17*f21; + f2 = heapFloat[(fp+-123)]; + f30 = f10*f2; + f3 = f3+f19; + f19 = heapFloat[(fp+-84)]; + heapFloat[(fp+-140)] = f19; + f0 = f8+f11; + heapFloat[(fp+-135)] = f0; + f2 = heapFloat[(r12+1)]; + heapFloat[(fp+-128)] = f2; + f4 = f22+f23; + f8 = heapFloat[(fp+-122)]; + f9 = f1*f8; + f5 = f5+f16; + f0 = f18+f20; + heapFloat[(fp+-119)] = f0; + f2 = f25+f26; + f0 = heapFloat[(fp+-126)]; + f8 = f24*f0; + f11 = f27+f28; + f0 = heapFloat[(fp+-127)]; + f12 = f24*f0; + f16 = f13*f21; + f18 = heapFloat[(fp+-123)]; + f19 = f14*f18; + f20 = f29+f30; + f22 = heapFloat[(fp+-122)]; + f23 = f15*f22; + f25 = heapFloat[(fp+-140)]; + f26 = f3*f25; + f0 = heapFloat[(fp+-135)]; + f27 = heapFloat[(fp+-128)]; + f28 = f0*f27; + f4 = f4+f9; + f9 = heapFloat[(r12+2)]; + f29 = heapFloat[(r3+86)]; + f30 = heapFloat[(r3+85)]; + f0 = heapFloat[(r12+8)]; + heapFloat[(fp+-141)] = f0; + f2 = f2+f8; + f8 = heapFloat[(r12+4)]; + f0 = heapFloat[(r12+9)]; + f11 = f11+f12; + f12 = heapFloat[(r12+5)]; + f20 = f20+f23; + f18 = heapFloat[(r12+10)]; + heapFloat[(fp+-148)] = f18; + f21 = heapFloat[(r12+6)]; + f22 = heapFloat[(r3+84)]; + f16 = f16+f19; + f19 = heapFloat[(fp+-122)]; + f23 = f24*f19; + f27 = f5*f25; + f19 = heapFloat[(fp+-119)]; + f18 = heapFloat[(fp+-128)]; + f18 = f19*f18; + f26 = f26+f28; + f28 = f4*f9; + f19 = heapFloat[(r3+102)]; + heapFloat[(fp+-142)] = f19; + f19 = heapFloat[(r3+101)]; + heapFloat[(fp+-143)] = f19; + f19 = heapFloat[(r3+100)]; + heapFloat[(fp+-145)] = f19; + f19 = heapFloat[(r12+14)]; + heapFloat[(fp+-144)] = f19; + f19 = heapFloat[(r12+13)]; + heapFloat[(fp+-146)] = f19; + f19 = heapFloat[(r12+12)]; + heapFloat[(fp+-147)] = f19; + f16 = f16+f23; + r4 = sp + -400; + f23 = f2*f25; + f19 = heapFloat[(fp+-128)]; + f19 = f11*f19; + f18 = f27+f18; + f27 = f20*f9; + f26 = f26+f28; + f22 = -f22; + r10 = r4 >> 2; + f19 = f23+f19; + f23 = f16*f9; + f18 = f18+f27; + heapFloat[(fp+-100)] = f26; + f6 = f6*f22; + f17 = f17*f30; + f7 = f7*f22; + f10 = f10*f30; + f26 = f3*f8; + f27 = heapFloat[(fp+-135)]; + f28 = f27*f12; + f19 = f19+f23; + heapFloat[(r10+1)] = f18; + f18 = 0; + heapFloat[(r10+2)] = f19; + f6 = f6-f17; + f13 = f13*f29; + f7 = f7-f10; + f10 = f14*f29; + f1 = f1*f22; + f14 = f15*f30; + f15 = f5*f8; + f19 = heapFloat[(fp+-119)]; + f17 = f19*f12; + f22 = f26+f28; + f23 = f4*f21; + f6 = f6-f13; + f7 = f7-f10; + f10 = heapFloat[(fp+-120)]; + f10 = f10*f18; + f13 = heapFloat[(fp+-121)]; + f13 = f13*f18; + f26 = heapFloat[(fp+-131)]; + f26 = f26*f18; + f28 = heapFloat[(fp+-132)]; + f28 = f28*f18; + f1 = f1-f14; + f14 = f24*f29; + f24 = f2*f8; + f29 = f11*f12; + f15 = f15+f17; + f17 = f20*f21; + f22 = f22+f23; + heap32[(r10+3)] = 0; + f1 = f1-f14; + f14 = heapFloat[(fp+-124)]; + f14 = f14*f6; + f23 = heapFloat[(fp+-125)]; + f23 = f23*f7; + f10 = f10+f13; + f13 = heapFloat[(fp+-133)]; + f13 = f13*f18; + f30 = heapFloat[(fp+-134)]; + f30 = f30*f6; + f19 = heapFloat[(fp+-139)]; + f19 = f19*f7; + f26 = f26+f28; + f28 = heapFloat[(fp+-137)]; + f28 = f28*f18; + f25 = heapFloat[(fp+-129)]; + f25 = f25*f18; + f27 = heapFloat[(fp+-136)]; + f27 = f27*f18; + f24 = f24+f29; + f29 = f16*f21; + f15 = f15+f17; + heapFloat[(r10+4)] = f22; + f10 = f10+f13; + f13 = f26+f28; + f14 = f14+f23; + f17 = heapFloat[(fp+-126)]; + f17 = f17*f1; + f19 = f30+f19; + f22 = heapFloat[(fp+-127)]; + f22 = f22*f1; + f23 = heapFloat[(fp+-138)]; + f6 = f23*f6; + f23 = heapFloat[(fp+-123)]; + f7 = f23*f7; + f23 = f25+f27; + f25 = heapFloat[(fp+-130)]; + f25 = f25*f18; + f26 = heapFloat[(fp+-141)]; + f27 = f3*f26; + f28 = heapFloat[(fp+-135)]; + f30 = f28*f0; + f24 = f24+f29; + heapFloat[(r10+5)] = f15; + f15 = f23+f25; + heapFloat[(r10+6)] = f24; + f14 = f14+f17; + f17 = heapFloat[(fp+-145)]; + f10 = f10+f17; + f17 = f19+f22; + f19 = heapFloat[(fp+-143)]; + f13 = f13+f19; + f6 = f6+f7; + f19 = heapFloat[(fp+-122)]; + f1 = f19*f1; + f7 = f5*f26; + f19 = heapFloat[(fp+-119)]; + f22 = f19*f0; + f23 = f27+f30; + f24 = heapFloat[(fp+-148)]; + f25 = f4*f24; + f13 = f17+f13; + f10 = f14+f10; + f1 = f6+f1; + f19 = heapFloat[(fp+-142)]; + f6 = f15+f19; + f14 = f2*f26; + f15 = f11*f0; + f7 = f7+f22; + f17 = f20*f24; + f19 = f23+f25; + heap32[(r10+7)] = 0; + f1 = f1+f6; + f25 = heapFloat[(fp+-140)]; + f6 = f25*f10; + f22 = heapFloat[(fp+-128)]; + f22 = f22*f13; + f14 = f14+f15; + f15 = f16*f24; + f7 = f7+f17; + heapFloat[(r10+8)] = f19; + f8 = f8*f10; + f12 = f12*f13; + f6 = f6+f22; + f9 = f9*f1; + f14 = f14+f15; + heapFloat[(r10+9)] = f7; + f6 = f6+f9; + heapFloat[(r10+10)] = f14; + f7 = f26*f10; + f0 = f0*f13; + f8 = f8+f12; + f9 = f21*f1; + f8 = f8+f9; + f0 = f7+f0; + f7 = f24*f1; + f19 = heapFloat[(fp+-147)]; + f6 = f6+f19; + heap32[(r10+11)] = 0; + f0 = f0+f7; + f19 = heapFloat[(fp+-146)]; + f7 = f8+f19; + heapFloat[(r10+12)] = f6; + f19 = heapFloat[(fp+-144)]; + f0 = f0+f19; + heapFloat[(r10+13)] = f7; + heapFloat[(r10+14)] = f0; + heap32[(r10+15)] = 0; + f0 = heapFloat[(fp+-68)]; + f6 = heapFloat[(r13+1)]; + f7 = heapFloat[(r13+2)]; + f8 = f3*f0; + f9 = f5*f6; + f12 = heapFloat[(r13+8)]; + f14 = heapFloat[(r13+9)]; + f15 = heapFloat[(r13+10)]; + f17 = heapFloat[(r13+4)]; + f19 = heapFloat[(r13+5)]; + f21 = heapFloat[(r13+6)]; + f22 = f28*f0; + f23 = heapFloat[(fp+-119)]; + f24 = f23*f6; + f8 = f8+f9; + f9 = f2*f7; + f25 = heapFloat[(r13+14)]; + f26 = heapFloat[(r13+13)]; + f27 = heapFloat[(r13+12)]; + r10 = sp + -464; + f29 = f4*f0; + f30 = f20*f6; + f22 = f22+f24; + f24 = f11*f7; + f8 = f8+f9; + r12 = r10 >> 2; + f9 = f29+f30; + f29 = f16*f7; + f22 = f22+f24; + heapFloat[(fp+-116)] = f8; + f8 = f3*f17; + f24 = f5*f19; + f9 = f9+f29; + heapFloat[(r12+1)] = f22; + heapFloat[(r12+2)] = f9; + f9 = f28*f17; + f22 = f23*f19; + f8 = f8+f24; + f24 = f2*f21; + f29 = f4*f17; + f30 = f20*f19; + f9 = f9+f22; + f22 = f11*f21; + f8 = f8+f24; + heap32[(r12+3)] = 0; + f10 = -f10; + f24 = f29+f30; + f29 = f16*f21; + f9 = f9+f22; + heapFloat[(r12+4)] = f8; + f8 = f3*f10; + f22 = f28*f13; + f30 = f5*f10; + f23 = f23*f13; + f3 = f3*f12; + f5 = f5*f14; + f24 = f24+f29; + heapFloat[(r12+5)] = f9; + heapFloat[(r12+6)] = f24; + f8 = f8-f22; + f9 = f4*f1; + f22 = f30-f23; + f23 = f20*f1; + f10 = f2*f10; + f13 = f11*f13; + f24 = f28*f12; + f28 = heapFloat[(fp+-119)]; + f28 = f28*f14; + f3 = f3+f5; + f2 = f2*f15; + f5 = f8-f9; + f8 = f22-f23; + f9 = f10-f13; + f1 = f16*f1; + f4 = f4*f12; + f10 = f20*f14; + f13 = f24+f28; + f11 = f11*f15; + f2 = f3+f2; + heap32[(r12+7)] = 0; + f1 = f9-f1; + f0 = f0*f5; + f3 = f6*f8; + f4 = f4+f10; + f6 = f16*f15; + f9 = f13+f11; + heapFloat[(r12+8)] = f2; + f2 = f17*f5; + f10 = f19*f8; + f0 = f0+f3; + f3 = f7*f1; + f4 = f4+f6; + heapFloat[(r12+9)] = f9; + f0 = f0+f3; + heapFloat[(r12+10)] = f4; + f3 = f12*f5; + f4 = f14*f8; + f2 = f2+f10; + f5 = f21*f1; + f2 = f2+f5; + f3 = f3+f4; + f1 = f15*f1; + f0 = f0+f27; + heap32[(r12+11)] = 0; + f1 = f3+f1; + f2 = f2+f26; + heapFloat[(r12+12)] = f0; + f0 = f1+f25; + heapFloat[(r12+13)] = f2; + heapFloat[(r12+14)] = f0; + heap32[(r12+15)] = 0; + r12 = sp + -16; + r13 = sp + -20; + heap32[(g0)] = r5; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r12; + heap32[(g0+3)] = r13; + _ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(i7); + r4 = r12 >> 2; + f0 = heapFloat[(r4+2)]; + f1 = heapFloat[(fp+-5)]; + f2 = heapFloat[(r4+1)]; + f3 = heapFloat[(fp+-4)]; + r4 = sp + -40; + r5 = sp + -44; + heap32[(g0)] = r6; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r5; + _ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(i7); + f2 = f2*f1; + f5 = heapFloat[(fp+-118)]; + f4 = heapFloat[(fp+-117)]; + f4 = f5/f4; + f3 = f3*f1; + r4 = r4 >> 2; + f0 = f0*f1; + f1 = f2*f4; + f2 = heapFloat[(r7+1)]; + f3 = f3*f4; + f5 = heapFloat[(fp+-48)]; + f1 = f1-f2; + f2 = f3-f5; + f0 = f0*f4; + f3 = heapFloat[(r7+2)]; + f5 = heapFloat[(r4+2)]; + f6 = heapFloat[(fp+-11)]; + f7 = heapFloat[(r4+1)]; + f8 = heapFloat[(fp+-10)]; + f0 = f0-f3; + f3 = f5*f6; + f5 = f7*f6; + f6 = f8*f6; + f7 = f2*f2; + f8 = f1*f1; + f7 = f7+f8; + f8 = f0*f0; + f3 = f3*f4; + f9 = heapFloat[(r11+2)]; + f5 = f5*f4; + f10 = heapFloat[(r11+1)]; + f4 = f6*f4; + f6 = heapFloat[(fp+-52)]; + f7 = f7+f8; + f3 = f3-f9; + f5 = f5-f10; + f4 = f4-f6; + f6 = 1.1920928955078125e-007; + if(f7 >f6) //_LBB582_11 +{ + heapFloat[(g0)] = f7; + sqrtf(i7); + r4 = heap32[(r3+5)]; + r4 = r4 >> 2; + f7 = heapFloat[(fp+-118)]; + f18 = f7/f_g0; + f7 = f2*f18; + f8 = heapFloat[(r4+64)]; + f9 = heapFloat[(r4+65)]; + f10 = f1*f18; + f11 = heapFloat[(r4+68)]; + f12 = heapFloat[(r4+69)]; + f13 = f0*f18; + f18 = heapFloat[(r4+72)]; + f14 = heapFloat[(r4+73)]; + f15 = heapFloat[(r4+66)]; + f16 = heapFloat[(r4+70)]; + f8 = f8*f7; + f11 = f11*f10; + f9 = f9*f7; + f12 = f12*f10; + f17 = heapFloat[(r4+74)]; + f8 = f8+f11; + f18 = f18*f13; + f9 = f9+f12; + f11 = f14*f13; + f12 = f15*f7; + f14 = f16*f10; + f18 = f8+f18; + f8 = f9+f11; + f9 = f12+f14; + f11 = f17*f13; + f9 = f9+f11; + f18 = f7*f18; + f8 = f10*f8; + f18 = f18+f8; + f8 = f13*f9; + f18 = f18+f8; +} + f8 = f4*f4; + f9 = f5*f5; + f8 = f8+f9; + f9 = f3*f3; + f8 = f8+f9; + if(f8 >f6) //_LBB582_14 +{ + heapFloat[(g0)] = f8; + sqrtf(i7); + r4 = heap32[(r3+6)]; + r4 = r4 >> 2; + f9 = heapFloat[(fp+-118)]; + f8 = f9/f_g0; + f9 = f4*f8; + f11 = heapFloat[(r4+64)]; + f12 = heapFloat[(r4+65)]; + f14 = f5*f8; + f15 = heapFloat[(r4+68)]; + f16 = heapFloat[(r4+69)]; + f17 = f3*f8; + f8 = heapFloat[(r4+72)]; + f19 = heapFloat[(r4+73)]; + f20 = heapFloat[(r4+66)]; + f21 = heapFloat[(r4+70)]; + f11 = f11*f9; + f15 = f15*f14; + f12 = f12*f9; + f16 = f16*f14; + f22 = heapFloat[(r4+74)]; + f11 = f11+f15; + f8 = f8*f17; + f12 = f12+f16; + f15 = f19*f17; + f16 = f20*f9; + f19 = f21*f14; + f8 = f11+f8; + f11 = f12+f15; + f12 = f16+f19; + f15 = f22*f17; + f12 = f12+f15; + f8 = f9*f8; + f11 = f14*f11; + f8 = f8+f11; + f11 = f17*f12; + f8 = f8+f11; +} +else{ + f8 = 0; +} + f10 = f10*f18; + f11 = f14*f8; + f7 = f7*f18; + f9 = f9*f8; + f10 = f10+f11; + f7 = f7+f9; + f9 = f13*f18; + f8 = f17*f8; + f8 = f9+f8; + f9 = f7*f7; + f11 = f10*f10; + f9 = f9+f11; + f11 = f8*f8; + f9 = f9+f11; +if(!(f9 <=f6)) //_LBB582_35 +{ + heapFloat[(g0)] = f9; + sqrtf(i7); + r4 = heap32[(r3+5)]; + r5 = heap32[(r3+6)]; + r4 = r4 >> 2; + r5 = r5 >> 2; + f9 = heapFloat[(fp+-118)]; + f6 = f9/f_g0; + f11 = heapFloat[(r4+64)]; + f7 = f7*f6; + f12 = heapFloat[(r4+65)]; + f13 = heapFloat[(r5+64)]; + f14 = heapFloat[(r5+65)]; + f15 = heapFloat[(r4+68)]; + f10 = f10*f6; + f16 = heapFloat[(r4+69)]; + f17 = heapFloat[(r5+68)]; + f18 = heapFloat[(r5+69)]; + f19 = heapFloat[(r4+66)]; + f20 = heapFloat[(r4+70)]; + f21 = heapFloat[(r5+66)]; + f22 = heapFloat[(r5+70)]; + f11 = f11*f7; + f15 = f15*f10; + f23 = heapFloat[(r4+72)]; + f6 = f8*f6; + f8 = heapFloat[(r4+73)]; + f24 = heapFloat[(r5+72)]; + f25 = heapFloat[(r5+73)]; + f12 = f12*f7; + f16 = f16*f10; + f13 = f13*f7; + f17 = f17*f10; + f14 = f14*f7; + f18 = f18*f10; + f26 = heapFloat[(r4+74)]; + f27 = heapFloat[(r5+74)]; + f11 = f11+f15; + f15 = f23*f6; + f12 = f12+f16; + f8 = f8*f6; + f16 = f19*f7; + f19 = f20*f10; + f13 = f13+f17; + f17 = f24*f6; + f14 = f14+f18; + f18 = f25*f6; + f20 = f21*f7; + f21 = f22*f10; + f11 = f11+f15; + f8 = f12+f8; + f12 = f13+f17; + f13 = f14+f18; + f14 = f16+f19; + f15 = f26*f6; + f16 = f20+f21; + f17 = f27*f6; + f14 = f14+f15; + f15 = f16+f17; + f11 = f7*f11; + f8 = f10*f8; + f7 = f7*f12; + f10 = f10*f13; + f8 = f11+f8; + f11 = f6*f14; + f7 = f7+f10; + f6 = f6*f15; + f8 = f8+f11; + f6 = f7+f6; + f7 = f8+f6; + f7 = f7*f7; + f0 = f0*f8; + f3 = f3*f6; + f1 = f1*f8; + f5 = f5*f6; + f2 = f2*f8; + f4 = f4*f6; + f0 = f0-f3; + f3 = f9/f7; + f1 = f1-f5; + f2 = f2-f4; + f4 = heapFloat[(r3+140)]; + f0 = f0*f3; + f1 = f1*f3; + f2 = f2*f3; + f3 = 0; + if(f4 >=f3) //_LBB582_18 +{ + r4 = heapU8[r0+541]; + if(r4 !=0) //_LBB582_20 +{ + f4 = f4/f8; +} + f5 = heapFloat[(r3+141)]; + f6 = heapFloat[(r3+142)]; + f5 = f5+f2; + f6 = f6+f1; + f7 = heapFloat[(r3+143)]; + f7 = f7+f0; + f8 = f5*f5; + f9 = f6*f6; + f8 = f8+f9; + f9 = f7*f7; + f8 = f8+f9; + heapFloat[(g0)] = f8; + sqrtf(i7); + f9 = f_g0; + if(f9 >f4) //_LBB582_23 +{ + heapFloat[(g0)] = f8; + sqrtf(i7); + f1 = heapFloat[(fp+-118)]; + f0 = f1/f_g0; + f1 = f7*f0; + f2 = f6*f0; + f0 = f5*f0; + f7 = heapFloat[(r3+143)]; + f1 = f1*f4; + f6 = heapFloat[(r3+142)]; + f2 = f2*f4; + f5 = heapFloat[(r3+141)]; + f4 = f0*f4; + f0 = f1-f7; + f1 = f2-f6; + f2 = f4-f5; +} +else{ + f5 = heapFloat[(r3+141)]; + f6 = heapFloat[(r3+142)]; + f7 = heapFloat[(r3+143)]; +} + f4 = f5+f2; + f5 = f6+f1; + heapFloat[(r3+141)] = f4; + f4 = f7+f0; + heapFloat[(r3+142)] = f5; + heapFloat[(r3+143)] = f4; +} + f4 = f2*f2; + f5 = f1*f1; + f4 = f4+f5; + f5 = f0*f0; + f4 = f4+f5; + heapFloat[(g0)] = f4; + sqrtf(i7); + f4 = f_g0; + f5 = heapFloat[(fp+-118)]; + f5 = f5/f4; + f0 = f0*f5; + f1 = f1*f5; + f2 = f2*f5; + f5 = heapFloat[(r8+84)]; +if(!(f5 ==f3)) //_LBB582_27 +{ + r4 = heap32[(r3+5)]; + r4 = r4 >> 2; + f5 = f4*f3; + f6 = heapFloat[(r8+126)]; + f7 = heapFloat[(r4+65)]; + f8 = heapFloat[(r4+64)]; + f9 = heapFloat[(r4+69)]; + f10 = heapFloat[(r4+68)]; + f11 = heapFloat[(r4+73)]; + f12 = heapFloat[(r4+72)]; + f13 = heapFloat[(r4+66)]; + f14 = heapFloat[(r4+70)]; + f15 = heapFloat[(r4+74)]; + f6 = f6+f5; + heapFloat[(r8+126)] = f6; + f6 = heapFloat[(r8+127)]; + f6 = f6+f5; + heapFloat[(r8+127)] = f6; + f6 = heapFloat[(r8+128)]; + f5 = f6+f5; + heapFloat[(r8+128)] = f5; + f5 = f8*f2; + f6 = f7*f1; + f7 = heapFloat[(r8+134)]; + f5 = f5+f6; + f6 = f13*f0; + f5 = f5+f6; + f6 = f7*f4; + f7 = heapFloat[(r8+136)]; + f8 = heapFloat[(r8+135)]; + f13 = heapFloat[(r8+130)]; + f5 = f5*f6; + f6 = f10*f2; + f9 = f9*f1; + f6 = f6+f9; + f9 = f14*f0; + f5 = f13+f5; + heapFloat[(r8+130)] = f5; + f5 = f6+f9; + f6 = f8*f4; + f8 = f12*f2; + f9 = f11*f1; + f5 = f5*f6; + f6 = heapFloat[(r8+131)]; + f5 = f6+f5; + f6 = f8+f9; + f8 = f15*f0; + heapFloat[(r8+131)] = f5; + f5 = f6+f8; + f6 = f7*f4; + f5 = f5*f6; + f6 = heapFloat[(r8+132)]; + f5 = f6+f5; + heapFloat[(r8+132)] = f5; +} + f5 = heapFloat[(r9+84)]; +if(!(f5 ==f3)) //_LBB582_35 +{ + f3 = -f4; + r4 = heap32[(r3+6)]; + r4 = r4 >> 2; + f5 = -0; + f4 = f4*f5; + f5 = heapFloat[(r9+126)]; + f6 = heapFloat[(r4+65)]; + f7 = heapFloat[(r4+64)]; + f8 = heapFloat[(r4+69)]; + f9 = heapFloat[(r4+68)]; + f10 = heapFloat[(r4+73)]; + f11 = heapFloat[(r4+72)]; + f12 = heapFloat[(r4+66)]; + f13 = heapFloat[(r4+70)]; + f14 = heapFloat[(r4+74)]; + f5 = f5+f4; + heapFloat[(r9+126)] = f5; + f5 = heapFloat[(r9+127)]; + f5 = f5+f4; + heapFloat[(r9+127)] = f5; + f5 = heapFloat[(r9+128)]; + f4 = f5+f4; + heapFloat[(r9+128)] = f4; + f4 = f7*f2; + f5 = f6*f1; + f4 = f4+f5; + f5 = f12*f0; + f6 = heapFloat[(r9+134)]; + f4 = f4+f5; + f5 = f6*f3; + f6 = heapFloat[(r9+136)]; + f7 = heapFloat[(r9+135)]; + f12 = heapFloat[(r9+130)]; + f4 = f4*f5; + f5 = f9*f2; + f8 = f8*f1; + f5 = f5+f8; + f8 = f13*f0; + f4 = f12+f4; + heapFloat[(r9+130)] = f4; + f4 = f5+f8; + f5 = f7*f3; + f2 = f11*f2; + f1 = f10*f1; + f4 = f4*f5; + f5 = heapFloat[(r9+131)]; + f4 = f5+f4; + f1 = f2+f1; + f0 = f14*f0; + heapFloat[(r9+131)] = f4; + f0 = f1+f0; + f1 = f6*f3; + f0 = f0*f1; + f1 = heapFloat[(r9+132)]; + f0 = f1+f0; + heapFloat[(r9+132)] = f0; +} +} +} +} while(0); + r1 = r1 >> 2; + r2 = r2 >> 2; + f0 = heapFloat[(r1+82)]; + f1 = heapFloat[(r1+132)]; + f2 = heapFloat[(r1+81)]; + f3 = heapFloat[(r1+131)]; + f4 = heapFloat[(r1+80)]; + f5 = heapFloat[(r1+130)]; + f6 = heapFloat[(r2+82)]; + f7 = heapFloat[(r2+132)]; + f8 = heapFloat[(r2+81)]; + f9 = heapFloat[(r2+131)]; + f10 = heapFloat[(r2+80)]; + f11 = heapFloat[(r2+130)]; + f0 = f0+f1; + f1 = f2+f3; + f2 = f4+f5; + f3 = f6+f7; + f4 = f8+f9; + f5 = f10+f11; + r4 = heapU8[r0+514]; +if(!(r4 ==0)) //_LBB582_43 +{ + f6 = heapFloat[(r3+129)]; + f7 = heapFloat[(r3+123)]; + f8 = heapFloat[(r3+112)]; + f9 = f5-f2; + f10 = heapFloat[(r3+113)]; + f11 = f4-f1; + f12 = heapFloat[(r3+114)]; + f13 = f3-f0; + f9 = f9*f8; + f11 = f11*f10; + f7 = f6*f7; + f14 = heapFloat[(r3+105)]; + f9 = f9+f11; + f11 = f13*f12; + f7 = f7*f14; + f9 = f9+f11; + f11 = heapFloat[(fp+-117)]; + f7 = f7/f11; + f11 = 0; + if(f9 >f11) //_LBB582_38 +{ + f6 = f6*f9; + f9 = heapFloat[(r3+106)]; + f6 = f6*f9; + f7 = f6+f7; +} + f6 = heapFloat[(r3+120)]; + f9 = heapFloat[(r3+126)]; + f6 = f6*f7; + f6 = f9+f6; + f6 = f6 > f11 ? f6 : f11; + heapFloat[(r3+126)] = f6; + f6 = f6-f9; + f7 = f8*f6; + f8 = heapFloat[(r3+131)]; + f9 = f10*f6; + f10 = heapFloat[(r3+132)]; + f13 = heapFloat[(r3+133)]; + f6 = f12*f6; + f12 = f7*f8; + f14 = f9*f10; + f12 = f12+f14; + f14 = f6*f13; + f12 = f12+f14; + f10 = f10*f12; + f8 = f8*f12; + f12 = f13*f12; + f9 = f9-f10; + f7 = f7-f8; + f6 = f6-f12; + f8 = f7*f7; + f10 = f9*f9; + f8 = f8+f10; + f10 = f6*f6; + f8 = f8+f10; + heapFloat[(g0)] = f8; + sqrtf(i7); + f8 = f_g0; + f10 = 1; + f10 = f10/f8; + f6 = f6*f10; + f9 = f9*f10; + f7 = f7*f10; + f10 = heapFloat[(r1+84)]; +if(!(f10 ==f11)) //_LBB582_41 +{ + r4 = heap32[(r3+5)]; + r4 = r4 >> 2; + f10 = f8*f11; + f12 = heapFloat[(r1+126)]; + f13 = heapFloat[(r4+65)]; + f14 = heapFloat[(r4+64)]; + f15 = heapFloat[(r4+69)]; + f16 = heapFloat[(r4+68)]; + f17 = heapFloat[(r4+73)]; + f18 = heapFloat[(r4+72)]; + f19 = heapFloat[(r4+66)]; + f20 = heapFloat[(r4+70)]; + f21 = heapFloat[(r4+74)]; + f12 = f12+f10; + heapFloat[(r1+126)] = f12; + f12 = heapFloat[(r1+127)]; + f12 = f12+f10; + heapFloat[(r1+127)] = f12; + f12 = heapFloat[(r1+128)]; + f10 = f12+f10; + heapFloat[(r1+128)] = f10; + f10 = f14*f7; + f12 = f13*f9; + f13 = heapFloat[(r1+134)]; + f10 = f10+f12; + f12 = f19*f6; + f10 = f10+f12; + f12 = f13*f8; + f13 = heapFloat[(r1+136)]; + f14 = heapFloat[(r1+135)]; + f19 = heapFloat[(r1+130)]; + f10 = f10*f12; + f12 = f16*f7; + f15 = f15*f9; + f12 = f12+f15; + f15 = f20*f6; + f10 = f19+f10; + heapFloat[(r1+130)] = f10; + f10 = f12+f15; + f12 = f14*f8; + f14 = f18*f7; + f15 = f17*f9; + f10 = f10*f12; + f12 = heapFloat[(r1+131)]; + f10 = f12+f10; + f12 = f14+f15; + f14 = f21*f6; + heapFloat[(r1+131)] = f10; + f10 = f12+f14; + f12 = f13*f8; + f10 = f10*f12; + f12 = heapFloat[(r1+132)]; + f10 = f12+f10; + heapFloat[(r1+132)] = f10; +} + f10 = heapFloat[(r2+84)]; +if(!(f10 ==f11)) //_LBB582_43 +{ + f10 = -f8; + r4 = heap32[(r3+6)]; + r4 = r4 >> 2; + f11 = -0; + f8 = f8*f11; + f11 = heapFloat[(r2+126)]; + f12 = heapFloat[(r4+65)]; + f13 = heapFloat[(r4+64)]; + f14 = heapFloat[(r4+69)]; + f15 = heapFloat[(r4+68)]; + f16 = heapFloat[(r4+73)]; + f17 = heapFloat[(r4+72)]; + f18 = heapFloat[(r4+66)]; + f19 = heapFloat[(r4+70)]; + f20 = heapFloat[(r4+74)]; + f11 = f11+f8; + heapFloat[(r2+126)] = f11; + f11 = heapFloat[(r2+127)]; + f11 = f11+f8; + heapFloat[(r2+127)] = f11; + f11 = heapFloat[(r2+128)]; + f8 = f11+f8; + heapFloat[(r2+128)] = f8; + f8 = f13*f7; + f11 = f12*f9; + f8 = f8+f11; + f11 = f18*f6; + f12 = heapFloat[(r2+134)]; + f8 = f8+f11; + f11 = f12*f10; + f12 = heapFloat[(r2+136)]; + f13 = heapFloat[(r2+135)]; + f18 = heapFloat[(r2+130)]; + f8 = f8*f11; + f11 = f15*f7; + f14 = f14*f9; + f11 = f11+f14; + f14 = f19*f6; + f8 = f18+f8; + heapFloat[(r2+130)] = f8; + f8 = f11+f14; + f11 = f13*f10; + f7 = f17*f7; + f9 = f16*f9; + f8 = f8*f11; + f11 = heapFloat[(r2+131)]; + f8 = f11+f8; + f7 = f7+f9; + f6 = f20*f6; + heapFloat[(r2+131)] = f8; + f6 = f7+f6; + f7 = f12*f10; + f6 = f6*f7; + f7 = heapFloat[(r2+132)]; + f6 = f7+f6; + heapFloat[(r2+132)] = f6; +} +} + r0 = heapU8[r0+513]; +if(!(r0 ==0)) //_LBB582_52 +{ + f6 = heapFloat[(r3+130)]; + f7 = heapFloat[(r3+124)]; + f8 = heapFloat[(r3+116)]; + f2 = f5-f2; + f5 = heapFloat[(r3+117)]; + f1 = f4-f1; + f4 = heapFloat[(r3+118)]; + f0 = f3-f0; + f2 = f2*f8; + f1 = f1*f5; + f3 = f6*f7; + f7 = heapFloat[(r3+105)]; + f1 = f2+f1; + f0 = f0*f4; + f2 = f3*f7; + f0 = f1+f0; + f1 = heapFloat[(fp+-117)]; + f1 = f2/f1; + f2 = 0; + if(f0 >f2) //_LBB582_46 +{ + f0 = f6*f0; + f3 = heapFloat[(r3+106)]; + f0 = f0*f3; + f1 = f0+f1; +} + f0 = heapFloat[(r3+121)]; + f3 = heapFloat[(r3+127)]; + f0 = f0*f1; + f0 = f3+f0; + f0 = f0 > f2 ? f0 : f2; + heapFloat[(r3+127)] = f0; + f0 = f0-f3; + f1 = heapFloat[(r1+84)]; + if(f1 !=f2) //_LBB582_49 +{ + r0 = heap32[(r3+5)]; + r0 = r0 >> 2; + f1 = f0*f2; + f3 = heapFloat[(r1+126)]; + f6 = heapFloat[(r0+65)]; + f7 = heapFloat[(r0+64)]; + f9 = heapFloat[(r0+69)]; + f10 = heapFloat[(r0+68)]; + f11 = heapFloat[(r0+73)]; + f12 = heapFloat[(r0+72)]; + f13 = heapFloat[(r0+66)]; + f14 = heapFloat[(r0+70)]; + f15 = heapFloat[(r0+74)]; + f3 = f3+f1; + heapFloat[(r1+126)] = f3; + f3 = heapFloat[(r1+127)]; + f3 = f3+f1; + heapFloat[(r1+127)] = f3; + f3 = heapFloat[(r1+128)]; + f1 = f3+f1; + heapFloat[(r1+128)] = f1; + f1 = f7*f8; + f3 = f6*f5; + f6 = heapFloat[(r1+134)]; + f1 = f1+f3; + f3 = f13*f4; + f1 = f1+f3; + f3 = f6*f0; + f6 = heapFloat[(r1+136)]; + f7 = heapFloat[(r1+135)]; + f13 = heapFloat[(r1+130)]; + f1 = f1*f3; + f3 = f10*f8; + f9 = f9*f5; + f3 = f3+f9; + f9 = f14*f4; + f1 = f13+f1; + heapFloat[(r1+130)] = f1; + f1 = f3+f9; + f3 = f7*f0; + f8 = f12*f8; + f5 = f11*f5; + f1 = f1*f3; + f3 = heapFloat[(r1+131)]; + f1 = f3+f1; + f5 = f8+f5; + f4 = f15*f4; + heapFloat[(r1+131)] = f1; + f4 = f5+f4; + f5 = f6*f0; + f4 = f4*f5; + f5 = heapFloat[(r1+132)]; + f4 = f5+f4; + heapFloat[(r1+132)] = f4; + f8 = heapFloat[(r3+116)]; + f5 = heapFloat[(r3+117)]; + f4 = heapFloat[(r3+118)]; +} + f1 = heapFloat[(r2+84)]; +if(!(f1 ==f2)) //_LBB582_52 +{ + f1 = -f0; + r0 = heap32[(r3+6)]; + r0 = r0 >> 2; + f2 = -0; + f0 = f0*f2; + f2 = heapFloat[(r2+126)]; + f3 = heapFloat[(r0+65)]; + f6 = heapFloat[(r0+64)]; + f7 = heapFloat[(r0+69)]; + f9 = heapFloat[(r0+68)]; + f10 = heapFloat[(r0+73)]; + f11 = heapFloat[(r0+72)]; + f12 = heapFloat[(r0+66)]; + f13 = heapFloat[(r0+70)]; + f14 = heapFloat[(r0+74)]; + f2 = f2+f0; + heapFloat[(r2+126)] = f2; + f2 = heapFloat[(r2+127)]; + f2 = f2+f0; + heapFloat[(r2+127)] = f2; + f2 = heapFloat[(r2+128)]; + f0 = f2+f0; + heapFloat[(r2+128)] = f0; + f0 = f6*f8; + f2 = f3*f5; + f0 = f0+f2; + f2 = f12*f4; + f3 = heapFloat[(r2+134)]; + f0 = f0+f2; + f2 = f3*f1; + f3 = heapFloat[(r2+136)]; + f6 = heapFloat[(r2+135)]; + f12 = heapFloat[(r2+130)]; + f0 = f0*f2; + f2 = f9*f8; + f7 = f7*f5; + f2 = f2+f7; + f7 = f13*f4; + f0 = f12+f0; + heapFloat[(r2+130)] = f0; + f0 = f2+f7; + f2 = f6*f1; + f6 = f11*f8; + f5 = f10*f5; + f0 = f0*f2; + f2 = heapFloat[(r2+131)]; + f0 = f2+f0; + f2 = f6+f5; + f4 = f14*f4; + heapFloat[(r2+131)] = f0; + f0 = f2+f4; + f1 = f3*f1; + f0 = f0*f1; + f1 = heapFloat[(r2+132)]; + f0 = f1+f0; + heapFloat[(r2+132)] = f0; +} +} +} + return; +} + +function _ZN21btConeTwistConstraint8setParamEifi(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var f0; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + f0 = heapFloat[(fp+2)]; + r2 = heap32[(fp+3)]; + r3 = (r0 + -3)|0; + if(uint(r3) uint(2)) //_LBB583_7 +{ + r0 = r1 >> 2; + heapFloat[(r0+148)] = f0; + r1 = heap32[(r0+145)]; + r1 = r1 | 4; + heap32[(r0+145)] = r1; + return; +} +else{ + r1 = r1 >> 2; + heapFloat[(r1+146)] = f0; + r0 = heap32[(r1+145)]; + r0 = r0 | 1; + heap32[(r1+145)] = r0; + return; +} +} +else{ + r0 = (r0 + -1)|0; + if(uint(r0) >uint(1)) //_LBB583_8 +{ + r0 = _2E_str10; + r1 = _2E_str24; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 1066; + _assert(i7); +} +else{ + if(uint(r2) >uint(2)) //_LBB583_4 +{ + r1 = r1 >> 2; + heapFloat[(r1+105)] = f0; + return; +} +else{ + r1 = r1 >> 2; + heapFloat[(r1+147)] = f0; + r2 = heap32[(r1+145)]; + r2 = r2 | 2; + heap32[(r1+145)] = r2; + return; +} +} +} +} + +function _ZNK21btConeTwistConstraint8getParamEii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var f0; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r2 = heap32[(fp+2)]; + r3 = (r0 + -3)|0; + if(uint(r3) uint(2)) //_LBB584_13 +{ + r0 = (r2 + -3)|0; + if(uint(r0) >uint(2)) //_LBB584_17 +{ + r1 = _2E_str10; + r0 = _2E_str24; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = 1107; + _assert(i7); +} +else{ + r0 = heapU8[r1+580]; + r0 = r0 & 4; + if(r0 !=0) //_LBB584_16 +{ + r1 = (r1 + 592)|0; +} +else{ + r1 = _2E_str543; + r0 = _2E_str24; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = 1102; + _assert(i7); +} +} +} +else{ + r2 = heapU8[r1+580]; + r2 = r2 & 1; + if(r2 != 0) //_LBB584_12 +{ + r1 = (r1 + 584)|0; +} +else{ + r1 = _2E_str442; + r2 = _2E_str24; + heap32[(g0)] = r1; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = 1097; + _assert(i7); +} +} +} +else{ + r0 = (r0 + -1)|0; + if(uint(r0) >uint(1)) //_LBB584_18 +{ + r1 = _2E_str10; + r0 = _2E_str24; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = 1111; + _assert(i7); +} +else{ + if(uint(r2) >uint(2)) //_LBB584_6 +{ + r2 = (r2 + -3)|0; + if(uint(r2) >uint(2)) //_LBB584_8 +{ + r1 = _2E_str10; + r2 = _2E_str24; + heap32[(g0)] = r1; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = 1090; + _assert(i7); +} +else{ + r1 = (r1 + 420)|0; +} +} +else{ + r2 = heapU8[r1+580]; + r2 = r2 & 2; + if(r2 !=0) //_LBB584_5 +{ + r1 = (r1 + 588)|0; +} +else{ + r1 = _2E_str1340; + r2 = _2E_str24; + heap32[(g0)] = r1; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = 1081; + _assert(i7); +} +} +} +} + r0 = r1 >> 2; + f0 = heapFloat[(r0)]; + f_g0 = f0; + return; +} + +function _ZN15btJacobianEntryC2ERK11btMatrix3x3S2_RK9btVector3S5_S5_S5_fS5_f(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+5)]; + r1 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = r1 >> 2; + f0 = heapFloat[(r0)]; + heapFloat[(r1)] = f0; + f1 = heapFloat[(r0+1)]; + heapFloat[(r1+1)] = f1; + f2 = heapFloat[(r0+2)]; + r2 = heap32[(fp+3)]; + heapFloat[(r1+2)] = f2; + r2 = r2 >> 2; + heap32[(r1+3)] = heap32[(r0+3)]; + f3 = heapFloat[(r2)]; + f4 = heapFloat[(r2+1)]; + f5 = heapFloat[(r2+2)]; + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + f6 = f4*f2; + f7 = f5*f1; + f5 = f5*f0; + f8 = f3*f2; + f6 = f6-f7; + f7 = heapFloat[(r0)]; + f5 = f5-f8; + f8 = heapFloat[(r0+1)]; + f3 = f3*f1; + f4 = f4*f0; + f9 = heapFloat[(r0+4)]; + f10 = heapFloat[(r0+5)]; + f7 = f7*f6; + f8 = f8*f5; + f3 = f3-f4; + f4 = heapFloat[(r0+2)]; + f11 = heapFloat[(r0+8)]; + f12 = heapFloat[(r0+9)]; + f13 = heapFloat[(r0+10)]; + f14 = heapFloat[(r0+6)]; + f9 = f9*f6; + f10 = f10*f5; + f7 = f7+f8; + f4 = f4*f3; + f6 = f11*f6; + f5 = f12*f5; + f8 = f9+f10; + f9 = f14*f3; + f4 = f7+f4; + f5 = f6+f5; + f3 = f13*f3; + f6 = f8+f9; + heapFloat[(r1+4)] = f4; + f3 = f5+f3; + heapFloat[(r1+5)] = f6; + r0 = heap32[(fp+4)]; + heapFloat[(r1+6)] = f3; + r0 = r0 >> 2; + heap32[(r1+7)] = 0; + f5 = heapFloat[(r0)]; + f7 = heapFloat[(r0+1)]; + f8 = heapFloat[(r0+2)]; + r0 = heap32[(fp+2)]; + r0 = r0 >> 2; + f9 = f8*f1; + f10 = f7*f2; + f2 = f5*f2; + f8 = f8*f0; + f9 = f9-f10; + f10 = heapFloat[(r0)]; + f2 = f2-f8; + f8 = heapFloat[(r0+1)]; + f0 = f7*f0; + f1 = f5*f1; + f5 = heapFloat[(r0+4)]; + f7 = heapFloat[(r0+5)]; + f10 = f10*f9; + f8 = f8*f2; + f0 = f0-f1; + f1 = heapFloat[(r0+2)]; + f11 = heapFloat[(r0+8)]; + f12 = heapFloat[(r0+9)]; + f13 = heapFloat[(r0+10)]; + f14 = heapFloat[(r0+6)]; + f5 = f5*f9; + f7 = f7*f2; + f8 = f10+f8; + f1 = f1*f0; + f9 = f11*f9; + f2 = f12*f2; + f5 = f5+f7; + f7 = f14*f0; + f1 = f8+f1; + f2 = f9+f2; + f0 = f13*f0; + f5 = f5+f7; + heapFloat[(r1+8)] = f1; + f0 = f2+f0; + heapFloat[(r1+9)] = f5; + r0 = heap32[(fp+6)]; + heapFloat[(r1+10)] = f0; + r0 = r0 >> 2; + heap32[(r1+11)] = 0; + f2 = heapFloat[(r0+2)]; + f7 = heapFloat[(r0+1)]; + f8 = heapFloat[(r0)]; + f8 = f8*f4; + f7 = f7*f6; + heapFloat[(r1+12)] = f8; + f2 = f2*f3; + heapFloat[(r1+13)] = f7; + r0 = heap32[(fp+8)]; + heapFloat[(r1+14)] = f2; + r0 = r0 >> 2; + heap32[(r1+15)] = 0; + f9 = heapFloat[(r0+2)]; + f10 = heapFloat[(r0+1)]; + f11 = heapFloat[(r0)]; + f4 = f8*f4; + f6 = f7*f6; + f7 = f10*f5; + f8 = f11*f1; + f4 = f4+f6; + f2 = f2*f3; + f3 = f9*f0; + heapFloat[(r1+16)] = f8; + f2 = f4+f2; + f4 = heapFloat[(fp+7)]; + f1 = f8*f1; + f5 = f7*f5; + heapFloat[(r1+17)] = f7; + f2 = f2+f4; + f4 = heapFloat[(fp+9)]; + f1 = f1+f5; + f0 = f3*f0; + heapFloat[(r1+18)] = f3; + f2 = f2+f4; + f0 = f1+f0; + f0 = f2+f0; + heap32[(r1+19)] = 0; + f1 = 0; + heapFloat[(r1+20)] = f0; + if(f0 >f1) //_LBB585_2 +{ + return; +} +else{ + r0 = _2E_str846; + r1 = _2E_str947; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 53; + _assert(i7); +} +} + +function _ZNK21btConeTwistConstraint16GetPointForAngleEff(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + f0 = heapFloat[(fp+2)]; + heapFloat[(g0)] = f0; + cosf(i7); + f1 = f_g0; + r0 = heap32[(fp+1)]; + heapFloat[(g0)] = f0; + sinf(i7); + f0 = f_g0; + r0 = r0 >> 2; + r1 = heap32[(fp)]; + f2 = heapFloat[(fp+3)]; + f3 = f1; //fstod f1, f3 + f3 = Math.abs(f3); + f4 = 1.1920928955078125e-007; + if(f3 >f4) //_LBB586_2 +{ + f3 = heapFloat[(r0+109)]; + f4 = heapFloat[(r0+108)]; + f5 = f0*f0; + f6 = f1*f1; + f5 = f5/f6; + f4 = f4*f4; + f6 = 1; + f3 = f3*f3; + f4 = f5/f4; + f3 = f6/f3; + f5 = f5+f6; + f3 = f4+f3; + f3 = f5/f3; + heapFloat[(g0)] = f3; + sqrtf(i7); + f3 = f_g0; +} +else{ + f3 = heapFloat[(r0+108)]; +} + f4 = 0; + f5 = f1*f1; + f5 = f5+f4; + f6 = f0*f0; + f5 = f5+f6; + heapFloat[(g0)] = f5; + sqrtf(i7); + f5 = f_g0; + if(f5 !=f4) //_LBB586_5 +{ + f6 = 0.5; + f3 = f3*f6; + heapFloat[(g0)] = f3; + sinf(i7); + f5 = f_g0/f5; + f6 = f5*f4; + heapFloat[(g0)] = f3; + f0 = -f0; + f1 = f1*f5; + cosf(i7); + f7 = -f6; + f0 = f5*f0; + f5 = f_g0*f2; + f8 = f1*f4; + f7 = f2*f7; + f5 = f5+f8; + f9 = f0*f4; + f7 = f7-f8; + f8 = f0*f2; + f10 = f_g0*f4; + f5 = f5-f9; + f7 = f7-f9; + f4 = f6*f4; + f8 = f10+f8; + f8 = f8-f4; + f9 = f5*f_g0; + f11 = f7*f6; + f4 = f10+f4; + f2 = f1*f2; + f2 = f4-f2; + f4 = f8*f_g0; + f10 = f7*f1; + f9 = f9-f11; + f11 = f8*f0; + f3 = f2*f_g0; + f7 = f7*f0; + f4 = f4-f10; + f10 = f2*f6; + f9 = f9-f11; + f2 = f2*f1; + r0 = r1 >> 2; + f2 = f9+f2; + f3 = f3-f7; + f1 = f5*f1; + f4 = f4-f10; + f0 = f5*f0; + f1 = f3-f1; + f3 = f8*f6; + f0 = f4+f0; + heapFloat[(r0)] = f2; + f1 = f1+f3; + heapFloat[(r0+1)] = f0; + heapFloat[(r0+2)] = f1; + heap32[(r0+3)] = 0; + return; +} +else{ + r1 = _2E_str115; + r0 = _2E_str685; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = 61; + _assert(i7); +} +} + +function _ZN21btConeTwistConstraint14calcAngleInfo2ERK11btTransformS2_RK11btMatrix3x3S5_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; + var f30; +var __label__ = 0; + i7 = sp + -384;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + heap32[(r1+123)] = 0; + r2 = 0; + heap32[(r1+122)] = 0; + r3 = heap32[(fp+1)]; + r4 = heap32[(fp+2)]; + heap8[r0+513] = r2; + heap8[r0+514] = r2; + r2 = heapU8[r0+540]; + if(r2 ==0) //_LBB587_7 +{ +__label__ = 6; +} +else{ + r2 = heapU8[r0+515]; + if(r2 !=0) //_LBB587_7 +{ +__label__ = 6; +} +else{ + f0 = heapFloat[(r1+136)]; + f1 = heapFloat[(r1+137)]; + f2 = heapFloat[(r1+138)]; + f3 = f0*f0; + f4 = f1*f1; + f5 = heapFloat[(r1+139)]; + f3 = f3+f4; + f4 = f2*f2; + f3 = f3+f4; + f4 = f5*f5; + f6 = 2; + f3 = f3+f4; + r4 = r4 >> 2; + f3 = f6/f3; + f4 = f2*f3; + f6 = f1*f3; + f3 = f0*f3; + f7 = heapFloat[(r4)]; + heapFloat[(fp+-48)] = f7; + f7 = heapFloat[(r1+89)]; + heapFloat[(fp+-64)] = f7; + f7 = heapFloat[(r1+88)]; + heapFloat[(fp+-66)] = f7; + f8 = heapFloat[(r4+1)]; + heapFloat[(fp+-49)] = f8; + f9 = heapFloat[(r1+93)]; + heapFloat[(fp+-65)] = f9; + f7 = heapFloat[(r1+92)]; + heapFloat[(fp+-67)] = f7; + f8 = heapFloat[(r1+90)]; + heapFloat[(fp+-54)] = f8; + f9 = heapFloat[(r1+94)]; + heapFloat[(fp+-55)] = f9; + f2 = f2*f4; + f10 = f0*f3; + f11 = f1*f6; + f12 = heapFloat[(fp+-66)]; + f7 = heapFloat[(fp+-48)]; + f13 = f12*f7; + f7 = heapFloat[(fp+-67)]; + f8 = heapFloat[(fp+-49)]; + f14 = f7*f8; + f15 = heapFloat[(fp+-64)]; + f7 = heapFloat[(fp+-48)]; + f16 = f15*f7; + f9 = heapFloat[(fp+-65)]; + f17 = f9*f8; + f18 = heapFloat[(r4+2)]; + heapFloat[(fp+-83)] = f18; + f19 = heapFloat[(r1+97)]; + heapFloat[(fp+-80)] = f19; + f20 = heapFloat[(r1+96)]; + heapFloat[(fp+-81)] = f20; + r3 = r3 >> 2; + f21 = heapFloat[(r1+98)]; + heapFloat[(fp+-77)] = f21; + f22 = f11+f2; + f23 = 1; + heapFloat[(fp+-76)] = f23; + f2 = f10+f2; + f24 = f0*f6; + f25 = f5*f4; + f13 = f13+f14; + f14 = f20*f18; + f16 = f16+f17; + f17 = f19*f18; + f8 = heapFloat[(fp+-54)]; + f26 = f8*f7; + f9 = heapFloat[(fp+-55)]; + f8 = heapFloat[(fp+-49)]; + f27 = f9*f8; + f22 = f23-f22; + heapFloat[(fp+-78)] = f22; + f13 = f13+f14; + heapFloat[(fp+-50)] = f13; + f14 = f24-f25; + heapFloat[(fp+-52)] = f14; + f24 = f24+f25; + heapFloat[(fp+-79)] = f24; + f16 = f16+f17; + heapFloat[(fp+-51)] = f16; + f2 = f23-f2; + heapFloat[(fp+-53)] = f2; + f0 = f0*f4; + f6 = f5*f6; + f1 = f1*f4; + f3 = f5*f3; + f4 = f26+f27; + f5 = f21*f18; + f2 = heapFloat[(r3)]; + heapFloat[(fp+-40)] = f2; + f7 = heapFloat[(r1+73)]; + f8 = heapFloat[(r1+72)]; + f2 = heapFloat[(r3+1)]; + heapFloat[(fp+-41)] = f2; + f9 = heapFloat[(r1+77)]; + f12 = heapFloat[(r1+76)]; + f13 = heapFloat[(r4+4)]; + heapFloat[(fp+-59)] = f13; + f14 = heapFloat[(r4+5)]; + heapFloat[(fp+-60)] = f14; + f15 = heapFloat[(r3+4)]; + heapFloat[(fp+-68)] = f15; + f16 = heapFloat[(r3+5)]; + heapFloat[(fp+-69)] = f16; + f17 = heapFloat[(r1+74)]; + f18 = heapFloat[(r1+78)]; + f19 = f0+f6; + heapFloat[(fp+-56)] = f19; + f20 = f1-f3; + heapFloat[(fp+-58)] = f20; + f10 = f10+f11; + f2 = heapFloat[(fp+-40)]; + f11 = f8*f2; + f2 = heapFloat[(fp+-41)]; + f21 = f12*f2; + f13 = heapFloat[(fp+-50)]; + f23 = f22*f13; + f16 = heapFloat[(fp+-51)]; + f25 = f24*f16; + f0 = f0-f6; + heapFloat[(fp+-61)] = f0; + f4 = f4+f5; + heapFloat[(fp+-57)] = f4; + f1 = f1+f3; + heapFloat[(fp+-62)] = f1; + f2 = heapFloat[(fp+-40)]; + f3 = f7*f2; + f2 = heapFloat[(fp+-41)]; + f5 = f9*f2; + f14 = heapFloat[(fp+-52)]; + f6 = f14*f13; + f2 = heapFloat[(fp+-53)]; + f26 = f2*f16; + f0 = heapFloat[(r3+2)]; + heapFloat[(fp+-71)] = f0; + f1 = heapFloat[(r1+81)]; + f2 = heapFloat[(r1+80)]; + f4 = heapFloat[(r3+8)]; + heapFloat[(fp+-38)] = f4; + f13 = heapFloat[(r3+9)]; + heapFloat[(fp+-39)] = f13; + f14 = heapFloat[(r4+6)]; + heapFloat[(fp+-37)] = f14; + f15 = heapFloat[(r3+6)]; + heapFloat[(fp+-70)] = f15; + f0 = heapFloat[(r1+82)]; + heapFloat[(fp+-82)] = f0; + f4 = heapFloat[(fp+-76)]; + f10 = f4-f10; + heapFloat[(fp+-63)] = f10; + f14 = heapFloat[(fp+-66)]; + f13 = heapFloat[(fp+-59)]; + f15 = f14*f13; + f16 = heapFloat[(fp+-67)]; + f14 = heapFloat[(fp+-60)]; + f19 = f16*f14; + f20 = heapFloat[(fp+-64)]; + f22 = f20*f13; + f24 = heapFloat[(fp+-65)]; + f27 = f24*f14; + f28 = heapFloat[(fp+-68)]; + f29 = f8*f28; + f16 = heapFloat[(fp+-69)]; + f30 = f12*f16; + f0 = f7*f28; + f4 = f9*f16; + f11 = f11+f21; + heapFloat[(fp+-42)] = f11; + f21 = heapFloat[(fp+-71)]; + f10 = f2*f21; + heapFloat[(fp+-43)] = f10; + f10 = f23+f25; + heapFloat[(fp+-44)] = f10; + f13 = heapFloat[(fp+-61)]; + f11 = heapFloat[(fp+-57)]; + f14 = f13*f11; + f3 = f3+f5; + f5 = f1*f21; + f6 = f6+f26; + f16 = heapFloat[(fp+-62)]; + f20 = f16*f11; + f23 = heapFloat[(fp+-40)]; + f24 = f17*f23; + f25 = heapFloat[(fp+-41)]; + f26 = f18*f25; + f28 = heapFloat[(fp+-56)]; + f13 = heapFloat[(fp+-50)]; + f10 = f28*f13; + f11 = heapFloat[(fp+-58)]; + f16 = heapFloat[(fp+-51)]; + f11 = f11*f16; + f13 = heapFloat[(r3+10)]; + heapFloat[(fp+-72)] = f13; + f15 = f15+f19; + f13 = heapFloat[(fp+-81)]; + f19 = heapFloat[(fp+-37)]; + f13 = f13*f19; + f22 = f22+f27; + f19 = heapFloat[(fp+-80)]; + f27 = heapFloat[(fp+-37)]; + f16 = f19*f27; + f19 = heapFloat[(fp+-54)]; + f21 = heapFloat[(fp+-59)]; + f19 = f19*f21; + f21 = heapFloat[(fp+-55)]; + f23 = heapFloat[(fp+-60)]; + f21 = f21*f23; + f23 = heapFloat[(fp+-38)]; + f8 = f8*f23; + f23 = heapFloat[(fp+-39)]; + f12 = f12*f23; + f23 = heapFloat[(fp+-38)]; + f7 = f7*f23; + f23 = heapFloat[(fp+-39)]; + f9 = f9*f23; + f29 = f29+f30; + f30 = heapFloat[(fp+-70)]; + f23 = f2*f30; + f0 = f0+f4; + f4 = f1*f30; + f28 = heapFloat[(fp+-68)]; + f25 = f17*f28; + f27 = heapFloat[(fp+-69)]; + f27 = f18*f27; + f28 = heapFloat[(fp+-42)]; + f30 = heapFloat[(fp+-43)]; + f28 = f28+f30; + f30 = heapFloat[(fp+-44)]; + f14 = f30+f14; + heapFloat[(fp+-73)] = f14; + f3 = f3+f5; + f5 = f6+f20; + heapFloat[(fp+-42)] = f5; + f6 = f24+f26; + f20 = heapFloat[(fp+-82)]; + f14 = heapFloat[(fp+-71)]; + f24 = f20*f14; + f10 = f10+f11; + f26 = heapFloat[(fp+-63)]; + f11 = heapFloat[(fp+-57)]; + f30 = f26*f11; + f5 = f15+f13; + heapFloat[(fp+-44)] = f5; + f5 = f22+f16; + heapFloat[(fp+-45)] = f5; + f11 = f29+f23; + f0 = f0+f4; + f4 = f19+f21; + f21 = heapFloat[(fp+-77)]; + f13 = heapFloat[(fp+-37)]; + f14 = f21*f13; + f8 = f8+f12; + f13 = heapFloat[(fp+-72)]; + f2 = f2*f13; + f7 = f7+f9; + f1 = f1*f13; + f23 = heapFloat[(fp+-38)]; + f9 = f17*f23; + f23 = heapFloat[(fp+-39)]; + f12 = f18*f23; + f15 = f25+f27; + f16 = heapFloat[(fp+-70)]; + f17 = f20*f16; + f18 = heapFloat[(fp+-73)]; + f19 = f28*f18; + f5 = heapFloat[(fp+-42)]; + f22 = f3*f5; + f6 = f6+f24; + f10 = f10+f30; + heapFloat[(fp+-43)] = f10; + f4 = f4+f14; + heapFloat[(fp+-74)] = f4; + f14 = heapFloat[(r1+84)]; + f24 = heapFloat[(r1+85)]; + f25 = heapFloat[(r1+86)]; + f4 = heapFloat[(r4+8)]; + heapFloat[(fp+-46)] = f4; + f5 = heapFloat[(r1+100)]; + heapFloat[(fp+-85)] = f5; + f4 = heapFloat[(r4+9)]; + heapFloat[(fp+-47)] = f4; + f5 = heapFloat[(r1+101)]; + heapFloat[(fp+-86)] = f5; + f10 = heapFloat[(r4+10)]; + heapFloat[(fp+-75)] = f10; + f13 = heapFloat[(r1+102)]; + heapFloat[(fp+-84)] = f13; + f2 = f8+f2; + f1 = f7+f1; + f7 = f15+f17; + f8 = heapFloat[(fp+-78)]; + f5 = heapFloat[(fp+-44)]; + f15 = f8*f5; + f16 = heapFloat[(fp+-79)]; + f5 = heapFloat[(fp+-45)]; + f17 = f16*f5; + f18 = heapFloat[(fp+-52)]; + f5 = heapFloat[(fp+-44)]; + f20 = f18*f5; + f21 = heapFloat[(fp+-53)]; + f5 = heapFloat[(fp+-45)]; + f23 = f21*f5; + f9 = f9+f12; + f12 = heapFloat[(fp+-82)]; + f13 = heapFloat[(fp+-72)]; + f12 = f12*f13; + f18 = heapFloat[(fp+-73)]; + f26 = f11*f18; + f5 = heapFloat[(fp+-42)]; + f27 = f0*f5; + f19 = f19+f22; + f10 = heapFloat[(fp+-43)]; + f22 = f6*f10; + f29 = heapFloat[(r3+14)]; + heapFloat[(fp+-82)] = f29; + f30 = heapFloat[(r3+13)]; + heapFloat[(fp+-87)] = f30; + f4 = heapFloat[(r3+12)]; + heapFloat[(fp+-89)] = f4; + f4 = heapFloat[(r4+14)]; + heapFloat[(fp+-88)] = f4; + f4 = heapFloat[(r4+13)]; + heapFloat[(fp+-90)] = f4; + f4 = heapFloat[(r4+12)]; + heapFloat[(fp+-91)] = f4; + r3 = sp + -128; + f9 = f9+f12; + f12 = heapFloat[(fp+-66)]; + f4 = heapFloat[(fp+-46)]; + f12 = f12*f4; + f4 = heapFloat[(fp+-67)]; + f5 = heapFloat[(fp+-47)]; + f4 = f4*f5; + f5 = heapFloat[(fp+-64)]; + f8 = heapFloat[(fp+-46)]; + f5 = f5*f8; + f8 = heapFloat[(fp+-65)]; + f10 = heapFloat[(fp+-47)]; + f8 = f8*f10; + f15 = f15+f17; + f13 = heapFloat[(fp+-61)]; + f17 = heapFloat[(fp+-74)]; + f10 = f13*f17; + f20 = f20+f23; + f16 = heapFloat[(fp+-62)]; + f23 = f16*f17; + f13 = heapFloat[(fp+-56)]; + f16 = heapFloat[(fp+-44)]; + f13 = f13*f16; + f16 = heapFloat[(fp+-58)]; + f17 = heapFloat[(fp+-45)]; + f16 = f16*f17; + f17 = f2*f18; + f18 = heapFloat[(fp+-42)]; + f18 = f1*f18; + f26 = f26+f27; + f27 = heapFloat[(fp+-43)]; + f21 = f7*f27; + f19 = f19+f22; + f10 = f15+f10; + f15 = f20+f23; + r4 = r3 >> 2; + f20 = heapFloat[(fp+-40)]; + f20 = f20*f14; + f22 = heapFloat[(fp+-41)]; + f22 = f22*f24; + f4 = f12+f4; + f12 = heapFloat[(fp+-81)]; + f23 = heapFloat[(fp+-75)]; + f12 = f12*f23; + f5 = f5+f8; + f8 = heapFloat[(fp+-80)]; + f8 = f8*f23; + f23 = heapFloat[(fp+-54)]; + f27 = heapFloat[(fp+-46)]; + f23 = f23*f27; + f27 = heapFloat[(fp+-55)]; + f29 = heapFloat[(fp+-47)]; + f27 = f27*f29; + f13 = f13+f16; + f16 = heapFloat[(fp+-63)]; + f29 = heapFloat[(fp+-74)]; + f16 = f16*f29; + f17 = f17+f18; + f18 = heapFloat[(fp+-43)]; + f18 = f9*f18; + f21 = f26+f21; + heapFloat[(fp+-32)] = f19; + f4 = f4+f12; + f5 = f5+f8; + f8 = f13+f16; + f12 = f20+f22; + f13 = heapFloat[(fp+-71)]; + f13 = f13*f25; + f16 = heapFloat[(fp+-68)]; + f16 = f16*f14; + f19 = heapFloat[(fp+-69)]; + f19 = f19*f24; + f20 = f23+f27; + f22 = heapFloat[(fp+-77)]; + f23 = heapFloat[(fp+-75)]; + f22 = f22*f23; + f26 = f28*f10; + f27 = f3*f15; + f17 = f17+f18; + heapFloat[(r4+1)] = f21; + f18 = f20+f22; + f12 = f12+f13; + heapFloat[(r4+2)] = f17; + f13 = f16+f19; + f16 = heapFloat[(fp+-70)]; + f16 = f16*f25; + f17 = heapFloat[(fp+-38)]; + f14 = f17*f14; + f17 = heapFloat[(fp+-39)]; + f17 = f17*f24; + f19 = heapFloat[(fp+-78)]; + f19 = f19*f4; + f20 = heapFloat[(fp+-79)]; + f20 = f20*f5; + f21 = heapFloat[(fp+-52)]; + f21 = f21*f4; + f22 = heapFloat[(fp+-53)]; + f22 = f22*f5; + f24 = f11*f10; + f23 = f0*f15; + f26 = f26+f27; + f27 = f6*f8; + f29 = heapFloat[(fp+-89)]; + f12 = f12+f29; + f13 = f13+f16; + f14 = f14+f17; + f16 = heapFloat[(fp+-72)]; + f16 = f16*f25; + f17 = f19+f20; + f19 = heapFloat[(fp+-61)]; + f19 = f19*f18; + f20 = f21+f22; + f21 = heapFloat[(fp+-62)]; + f21 = f21*f18; + f22 = heapFloat[(fp+-56)]; + f22 = f22*f4; + f25 = heapFloat[(fp+-58)]; + f25 = f25*f5; + f29 = f2*f10; + f30 = f1*f15; + f23 = f24+f23; + f24 = f7*f8; + f26 = f26+f27; + heap32[(r4+3)] = 0; + f12 = -f12; + f27 = heapFloat[(fp+-87)]; + f13 = f13+f27; + f17 = f17+f19; + f19 = f20+f21; + f14 = f14+f16; + f16 = f22+f25; + f20 = heapFloat[(fp+-63)]; + f20 = f20*f18; + f21 = f29+f30; + f22 = f9*f8; + f23 = f23+f24; + heapFloat[(r4+4)] = f26; + f29 = heapFloat[(fp+-82)]; + f14 = f14+f29; + f16 = f16+f20; + f20 = f28*f12; + f24 = f11*f13; + f25 = f3*f12; + f26 = f0*f13; + f27 = f28*f17; + f3 = f3*f19; + f21 = f21+f22; + heapFloat[(r4+5)] = f23; + f22 = 0; + heapFloat[(r4+6)] = f21; + f20 = f20-f24; + f21 = f2*f14; + f23 = f25-f26; + f24 = f1*f14; + f12 = f6*f12; + f13 = f7*f13; + f25 = heapFloat[(fp+-48)]; + f26 = heapFloat[(fp+-85)]; + f25 = f25*f26; + f28 = heapFloat[(fp+-49)]; + f29 = heapFloat[(fp+-86)]; + f28 = f28*f29; + f11 = f11*f17; + f0 = f0*f19; + f3 = f27+f3; + f6 = f6*f16; + f20 = f20-f21; + f21 = f23-f24; + f23 = heapFloat[(fp+-59)]; + f23 = f23*f26; + f24 = heapFloat[(fp+-60)]; + f24 = f24*f29; + f12 = f12-f13; + f13 = f9*f14; + f14 = heapFloat[(fp+-50)]; + f14 = f14*f22; + f27 = heapFloat[(fp+-51)]; + f27 = f27*f22; + f25 = f25+f28; + f28 = heapFloat[(fp+-83)]; + f30 = heapFloat[(fp+-84)]; + f28 = f28*f30; + f2 = f2*f17; + f1 = f1*f19; + f0 = f11+f0; + f7 = f7*f16; + f3 = f3+f6; + heap32[(r4+7)] = 0; + f6 = f12-f13; + f11 = f25+f28; + f12 = heapFloat[(fp+-46)]; + f12 = f12*f26; + f13 = heapFloat[(fp+-47)]; + f13 = f13*f29; + f25 = heapFloat[(fp+-44)]; + f25 = f25*f22; + f26 = heapFloat[(fp+-45)]; + f26 = f26*f22; + f23 = f23+f24; + f24 = heapFloat[(fp+-37)]; + f24 = f24*f30; + f28 = heapFloat[(fp+-73)]; + f28 = f28*f20; + f29 = heapFloat[(fp+-42)]; + f29 = f29*f21; + f14 = f14+f27; + f27 = heapFloat[(fp+-57)]; + f27 = f27*f22; + f1 = f2+f1; + f2 = f9*f16; + f0 = f0+f7; + heapFloat[(r4+8)] = f3; + f3 = f23+f24; + f4 = f4*f22; + f5 = f5*f22; + f7 = f12+f13; + f23 = heapFloat[(fp+-75)]; + f9 = f23*f30; + f10 = f10*f20; + f12 = f15*f21; + f13 = f25+f26; + f15 = heapFloat[(fp+-74)]; + f15 = f15*f22; + f23 = f28+f29; + f24 = heapFloat[(fp+-43)]; + f24 = f24*f6; + f14 = f14+f27; + f25 = heapFloat[(fp+-91)]; + f11 = f11+f25; + f1 = f1+f2; + heapFloat[(r4+9)] = f0; + f0 = f7+f9; + heapFloat[(r4+10)] = f1; + f1 = f17*f20; + f2 = f19*f21; + f4 = f4+f5; + f5 = f18*f22; + f7 = f10+f12; + f8 = f8*f6; + f9 = f13+f15; + f10 = heapFloat[(fp+-90)]; + f3 = f3+f10; + f10 = f23+f24; + f11 = f14+f11; + f1 = f1+f2; + f2 = f16*f6; + f4 = f4+f5; + f5 = heapFloat[(fp+-88)]; + f0 = f0+f5; + f5 = f7+f8; + f3 = f9+f3; + f6 = f10+f11; + heap32[(r4+11)] = 0; + f1 = f1+f2; + f0 = f4+f0; + f2 = f5+f3; + heapFloat[(r4+12)] = f6; + f0 = f1+f0; + heapFloat[(r4+13)] = f2; + heapFloat[(r4+14)] = f0; + heap32[(r4+15)] = 0; + r4 = sp + -144; + heap32[(g0)] = r3; + heap32[(g0+1)] = r4; + _ZNK11btMatrix3x311getRotationER12btQuaternion(i7); + r3 = r4 >> 2; + f0 = heapFloat[(r3+2)]; + f1 = heapFloat[(r3+1)]; + f2 = heapFloat[(fp+-36)]; + heapFloat[(r1+112)] = f2; + heapFloat[(r1+113)] = f1; + heapFloat[(r1+114)] = f0; + heap32[(r1+115)] = 0; + f2 = f2*f2; + f1 = f1*f1; + f1 = f2+f1; + f0 = f0*f0; + f0 = f1+f0; + heapFloat[(g0)] = f0; + sqrtf(i7); + f4 = heapFloat[(fp+-76)]; + f0 = f4/f_g0; + f1 = heapFloat[(r1+112)]; + f1 = f1*f0; + heapFloat[(r1+112)] = f1; + f1 = heapFloat[(r1+113)]; + f1 = f1*f0; + heapFloat[(r1+113)] = f1; + f1 = heapFloat[(r1+114)]; + f0 = f1*f0; + heapFloat[(r1+114)] = f0; + f0 = heapFloat[(r3+3)]; + f1 = -1; + f0 = f0 < f1 ? f1 : f0; + f0 = f0 > f4 ? f4 : f0; + heapFloat[(g0)] = f0; + acosf(i7); + f0 = f_g0+f_g0; + heapFloat[(r1+123)] = f0; + if(f0 > 2; + r6 = r6 >> 2; + f0 = heapFloat[(r7+3)]; + f1 = heapFloat[(r6+3)]; + f2 = heapFloat[(fp+-12)]; + f3 = heapFloat[(fp+-16)]; + f4 = heapFloat[(r7+1)]; + f5 = heapFloat[(r6+1)]; + f6 = heapFloat[(r7+2)]; + f7 = heapFloat[(r6+2)]; + r6 = sp + -32; + r7 = (r0 + 352)|0; + heap32[(g0)] = r7; + heap32[(g0+1)] = r6; + _ZNK11btMatrix3x311getRotationER12btQuaternion(i7); + r7 = sp + -16; + heap32[(g0)] = r4; + heap32[(g0+1)] = r7; + _ZNK11btMatrix3x311getRotationER12btQuaternion(i7); + r6 = r6 >> 2; + r7 = r7 >> 2; + f8 = heapFloat[(r7+3)]; + f9 = heapFloat[(r6+3)]; + f10 = heapFloat[(fp+-4)]; + f11 = heapFloat[(r6+1)]; + f12 = heapFloat[(r7+1)]; + f13 = heapFloat[(fp+-8)]; + f14 = heapFloat[(r6+2)]; + f15 = heapFloat[(r7+2)]; + f16 = f8*f9; + f17 = f10*f13; + f18 = f0*f3; + f19 = f2*f1; + f20 = f0*f1; + f21 = f2*f3; + f22 = f8*f13; + f23 = f10*f9; + f24 = f8*f11; + f25 = f12*f9; + f26 = f0*f5; + f27 = f4*f1; + f16 = f16-f17; + f17 = f12*f11; + f18 = f18+f19; + f19 = f4*f7; + f20 = f20-f21; + f21 = f4*f5; + f22 = f22+f23; + f23 = f12*f14; + f0 = f0*f7; + f1 = f6*f1; + f24 = f24+f25; + f25 = f15*f13; + f26 = f26+f27; + f27 = f6*f3; + f8 = f8*f14; + f9 = f15*f9; + f16 = f16-f17; + f17 = f15*f14; + f18 = f18+f19; + f19 = f6*f5; + f20 = f20-f21; + f6 = f6*f7; + f21 = f22+f23; + f15 = f15*f11; + f0 = f0+f1; + f1 = f2*f5; + f5 = f24+f25; + f14 = f10*f14; + f22 = f26+f27; + f2 = f2*f7; + f7 = f8+f9; + f8 = f10*f11; + f9 = f21-f15; + heapFloat[(fp+-46)] = f9; + f10 = f18-f19; + heapFloat[(fp+-49)] = f10; + f5 = f5-f14; + heapFloat[(fp+-45)] = f5; + f6 = f20-f6; + heapFloat[(fp+-52)] = f6; + f11 = f16-f17; + heapFloat[(fp+-48)] = f11; + f2 = f22-f2; + heapFloat[(fp+-50)] = f2; + f0 = f0+f1; + f1 = f4*f3; + f3 = f7+f8; + f4 = f12*f13; + f3 = f3-f4; + heapFloat[(fp+-47)] = f3; + f0 = f0-f1; + heapFloat[(fp+-51)] = f0; + f1 = f11*f2; + f4 = f6*f5; + f7 = f11*f6; + f8 = f10*f9; + f12 = f11*f10; + f13 = f6*f9; + f1 = f1-f4; + f4 = f10*f3; + f7 = f7+f8; + f8 = f2*f5; + f11 = f11*f0; + f6 = f6*f3; + f12 = f12-f13; + f13 = f0*f5; + f1 = f1-f4; + f4 = f0*f9; + f7 = f7+f8; + f0 = f0*f3; + f6 = f11-f6; + f8 = f2*f9; + f11 = f12-f13; + f2 = f2*f3; + f2 = f11+f2; + f1 = f1+f4; + f4 = 0; + f0 = f7+f0; + f6 = f6-f8; + f7 = f10*f5; + f6 = f6+f7; + f7 = f1*f4; + f8 = -f2; + f10 = f0*f4; + f11 = f2*f4; + f12 = f10+f6; + f8 = f8-f7; + f13 = f6*f4; + f7 = f0+f7; + f8 = f8-f13; + f7 = f7-f13; + f12 = f12-f11; + f10 = f10+f11; + f10 = f10-f1; + f11 = f7*f0; + f13 = f8*f2; + f14 = f12*f0; + f15 = f8*f1; + f11 = f11-f13; + f13 = f12*f6; + f14 = f14-f15; + f15 = f10*f2; + f16 = f10*f0; + f8 = f8*f6; + f11 = f11-f13; + f10 = f10*f1; + f13 = f14-f15; + f14 = f7*f6; + f8 = f16-f8; + f7 = f7*f1; + f10 = f11+f10; + f11 = f13+f14; + f7 = f8-f7; + f8 = f12*f2; + f7 = f7+f8; + f8 = f10*f10; + f12 = f11*f11; + f8 = f8+f12; + f12 = f7*f7; + f8 = f8+f12; + heapFloat[(g0)] = f8; + f8 = 1; + sqrtf(i7); + f12 = f8/f_g0; + f11 = f11*f12; + f7 = f7*f12; + f10 = f10*f12; + f12 = f11*f4; + f13 = f7*f4; + f14 = f10+f12; + f14 = f14+f13; + f3 = -f3; + heapFloat[(fp+-43)] = f3; + f3 = -f5; + heapFloat[(fp+-44)] = f3; + f3 = -f9; + heapFloat[(fp+-42)] = f3; + f3 = -0.99999988079071045; + if(f14 >=f3) //_LBB587_9 +{ + f3 = f14+f8; + f3 = f3+f3; + heapFloat[(g0)] = f3; + sqrtf(i7); + f10 = f10*f4; + f5 = 0.5; + f11 = f11-f10; + f9 = f8/f_g0; + f7 = f10-f7; + f13 = f13-f12; + f12 = f_g0*f5; + f11 = f11*f9; + f10 = f7*f9; + f7 = f13*f9; +} +else{ + f7 = -0; + f10 = 1; + f11 = 0; + f12 = f11; +} + f3 = f7*f7; + f5 = f10*f10; + f3 = f3+f5; + f5 = f11*f11; + f3 = f3+f5; + f5 = f12*f12; + f3 = f3+f5; + heapFloat[(g0)] = f3; + sqrtf(i7); + f3 = f_g0; + if(f3 !=f4) //_LBB587_12 +{ + f3 = f8/f3; + f5 = f12*f3; + f7 = f7*f3; + f9 = f10*f3; + f3 = f11*f3; + f10 = f5*f1; + f11 = f0*f9; + f12 = f5*f2; + f13 = f0*f7; + f14 = f5*f6; + f15 = f0*f3; + f10 = f10-f11; + f11 = f2*f3; + f12 = f12-f13; + f13 = f6*f9; + f0 = f5*f0; + f16 = f2*f7; + f14 = f14-f15; + f15 = f1*f7; + f10 = f10-f11; + f11 = f6*f7; + f12 = f12-f13; + f13 = f1*f3; + f10 = f10+f11; + f11 = f12+f13; + f0 = f0+f16; + f1 = f1*f9; + f12 = f14-f15; + f2 = f2*f9; + f2 = f12+f2; + f12 = f11*f11; + f13 = f10*f10; + f0 = f0+f1; + f1 = f6*f3; + f0 = f0+f1; + f1 = f12+f13; + f6 = f2*f2; + f1 = f1+f6; + f6 = f0*f0; + f1 = f1+f6; + heapFloat[(g0)] = f1; + sqrtf(i7); + f1 = f_g0; + if(f1 !=f4) //_LBB587_14 +{ + f1 = f8/f1; + f6 = heapFloat[(r1+108)]; + heapFloat[(fp+-40)] = f6; + f12 = heapFloat[(r1+111)]; + f11 = f11*f1; + heapFloat[(fp+-37)] = f11; + f10 = f10*f1; + heapFloat[(fp+-38)] = f10; + f2 = f2*f1; + heapFloat[(fp+-39)] = f2; + f0 = f0*f1; + heapFloat[(fp+-41)] = f0; + if(f6 f8 ? f8 : f12; + heapFloat[(g0)] = f12; + acosf(i7); + f12 = f_g0+f_g0; + f0 = 1.1920928955078125e-007; + if(f12 >f0) //_LBB587_18 +{ + f4 = f7*f7; + f0 = f9*f9; + f4 = f4+f0; + f0 = f3*f3; + f4 = f4+f0; + heapFloat[(g0)] = f4; + f4 = 1; + sqrtf(i7); + f0 = f4/f_g0; + f1 = f9*f0; + f2 = f7*f0; + f0 = f3*f0; + f3 = f1; //fstod f1, f3 + f3 = Math.abs(f3); + f5 = 1.1920928955078125e-007; + if(f3 >f5) //_LBB587_20 +{ + f3 = heapFloat[(r1+109)]; + f5 = heapFloat[(r1+108)]; + f6 = f0*f0; + f7 = f1*f1; + f6 = f6/f7; + f5 = f5*f5; + f3 = f3*f3; + f5 = f6/f5; + f3 = f4/f3; + f4 = f6+f4; + f3 = f5+f3; + f4 = f4/f3; + heapFloat[(g0)] = f4; + sqrtf(i7); + f4 = f_g0; +} +else{ + f4 = heapFloat[(r1+108)]; +} +} + f3 = heapFloat[(r1+104)]; + f5 = f3*f4; + if(f5 >=f12) //_LBB587_67 +{ +__label__ = 58; +} +else{ + r3 = 1; + heap8[r0+514] = r3; +if(!(f12 >=f4)) //_LBB587_24 +{ + f6 = 0.99999988079071045; + if(f3 f3) //_LBB587_28 +{ + f0 = -f0; + f12 = heapFloat[(r1+109)]; + f3 = heapFloat[(r1+108)]; + f12 = f12/f3; + f3 = f0/f1; + f12 = f12*f3; + f12 = f12*f1; + f12 = f12; //fstod f12, f12 + f12 = Math.abs(f12); + f12 = f12; //fdtos f12, f12 + f3 = 0; + if(f0 <=f3) //_LBB587_30 +{ + f12 = -f12; +} + f0 = f2*f2; + f3 = f1*f1; + f0 = f0+f3; + f3 = f12*f12; + f0 = f0+f3; + heapFloat[(g0)] = f0; + f0 = 1; + sqrtf(i7); + f0 = f0/f_g0; + f12 = -f12; + f2 = f2*f0; + f1 = f1*f0; + f0 = f0*f12; +} + f12 = -f2; + f3 = -f1; + f4 = heapFloat[(fp+-46)]; + f5 = f2*f4; + f6 = heapFloat[(fp+-45)]; + f7 = f6*f1; + f8 = heapFloat[(fp+-48)]; + f12 = f8*f12; + f9 = f6*f0; + f10 = -f0; + f5 = f5+f7; + f7 = heapFloat[(fp+-47)]; + f11 = f7*f0; + f12 = f12-f9; + f9 = f7*f1; + f3 = f8*f3; + f7 = f7*f2; + f12 = f12+f9; + f5 = f5+f11; + f3 = f3-f7; + f0 = f4*f0; + f7 = f8*f10; + f1 = f4*f1; + f0 = f3+f0; + f3 = heapFloat[(fp+-42)]; + f4 = f5*f3; + f9 = f12*f8; + f1 = f7-f1; + f2 = f6*f2; + f1 = f1+f2; + f2 = heapFloat[(fp+-44)]; + f6 = f5*f2; + f7 = f0*f8; + f4 = f4+f9; + f9 = heapFloat[(fp+-43)]; + f10 = f0*f9; + f5 = f5*f9; + f8 = f1*f8; + f6 = f6+f7; + f7 = f1*f3; + f4 = f4+f10; + f1 = f1*f2; + f1 = f4-f1; + f4 = f5+f8; + f2 = f12*f2; + f5 = f6+f7; + f12 = f12*f9; + f2 = f4+f2; + f0 = f0*f3; + f12 = f5-f12; + heapFloat[(r1+112)] = f1; + f0 = f2-f0; + heapFloat[(r1+113)] = f12; + heapFloat[(r1+114)] = f0; + heap32[(r1+115)] = 0; + heap32[(r1+131)] = 0; + heap32[(r1+132)] = 0; + heap32[(r1+133)] = 0; + r3 = r2 >> 2; + heap32[(r1+134)] = 0; + r4 = r5 >> 2; + f2 = heapFloat[(r3+1)]; + f3 = heapFloat[(r3+5)]; + f4 = heapFloat[(r3)]; + f5 = heapFloat[(r3+4)]; + f6 = heapFloat[(r4+1)]; + f7 = heapFloat[(r4+5)]; + f8 = heapFloat[(r4)]; + f9 = heapFloat[(r4+4)]; + f10 = heapFloat[(r3+2)]; + f11 = heapFloat[(r3+6)]; + f13 = heapFloat[(r3+9)]; + f14 = heapFloat[(r3+8)]; + f15 = heapFloat[(r4+2)]; + f16 = heapFloat[(r4+6)]; + f17 = heapFloat[(r4+9)]; + f18 = heapFloat[(r4+8)]; + f4 = f4*f1; + f5 = f5*f12; + f2 = f2*f1; + f3 = f3*f12; + f8 = f8*f1; + f9 = f9*f12; + f6 = f6*f1; + f7 = f7*f12; + f19 = heapFloat[(r3+10)]; + f20 = heapFloat[(r4+10)]; + f4 = f4+f5; + f5 = f14*f0; + f2 = f2+f3; + f3 = f13*f0; + f10 = f10*f1; + f11 = f11*f12; + f8 = f8+f9; + f9 = f18*f0; + f6 = f6+f7; + f7 = f17*f0; + f13 = f15*f1; + f14 = f16*f12; + f4 = f4+f5; + f2 = f2+f3; + f3 = f8+f9; + f5 = f6+f7; + f6 = f10+f11; + f7 = f19*f0; + f8 = f13+f14; + f9 = f20*f0; + f6 = f6+f7; + f7 = f8+f9; + f4 = f1*f4; + f2 = f12*f2; + f1 = f1*f3; + f12 = f12*f5; + f2 = f4+f2; + f3 = f0*f6; + f12 = f1+f12; + f0 = f0*f7; + f1 = f2+f3; + f12 = f12+f0; + f0 = 1; + f12 = f1+f12; + f12 = f0/f12; + heapFloat[(r1+120)] = f12; +__label__ = 58; +} +} +} +_37: do { +if (__label__ == 27){ + r4 = r4 >> 2; + r3 = r3 >> 2; + f0 = heapFloat[(r1+72)]; + f1 = heapFloat[(r3)]; + f2 = heapFloat[(r1+73)]; + f3 = heapFloat[(r3+4)]; + f4 = heapFloat[(r1+74)]; + f5 = heapFloat[(r1+76)]; + f6 = heapFloat[(r3+1)]; + f7 = heapFloat[(r1+77)]; + f8 = heapFloat[(r3+5)]; + f9 = heapFloat[(r1+78)]; + f10 = heapFloat[(r4)]; + f11 = heapFloat[(r1+88)]; + f13 = heapFloat[(r4+4)]; + heapFloat[(fp+-55)] = f13; + f14 = heapFloat[(r4+1)]; + f15 = heapFloat[(r1+92)]; + f13 = heapFloat[(r4+5)]; + heapFloat[(fp+-56)] = f13; + f16 = heapFloat[(r3+8)]; + f17 = heapFloat[(r3+9)]; + f18 = heapFloat[(r4+8)]; + heapFloat[(fp+-53)] = f18; + f19 = heapFloat[(r4+9)]; + heapFloat[(fp+-54)] = f19; + f13 = f1*f0; + heapFloat[(fp+-57)] = f13; + f13 = f6*f5; + heapFloat[(fp+-61)] = f13; + f18 = f3*f0; + heapFloat[(fp+-59)] = f18; + f13 = f8*f5; + heapFloat[(fp+-62)] = f13; + f18 = heapFloat[(r1+80)]; + f19 = heapFloat[(r3+2)]; + f20 = heapFloat[(r1+81)]; + f21 = heapFloat[(r3+6)]; + f22 = heapFloat[(r1+82)]; + f23 = f1*f2; + f24 = f6*f7; + f25 = f3*f2; + f26 = f8*f7; + f10 = f10*f11; + heapFloat[(fp+-60)] = f10; + f10 = f14*f15; + heapFloat[(fp+-63)] = f10; + f10 = heapFloat[(r4+2)]; + heapFloat[(fp+-64)] = f10; + f13 = heapFloat[(r1+96)]; + f14 = heapFloat[(r4+6)]; + heapFloat[(fp+-58)] = f14; + f1 = f1*f4; + f6 = f6*f9; + f27 = heapFloat[(fp+-55)]; + f27 = f27*f11; + f28 = heapFloat[(fp+-56)]; + f28 = f28*f15; + f3 = f3*f4; + f8 = f8*f9; + f29 = heapFloat[(r3+10)]; + f30 = heapFloat[(r4+10)]; + heapFloat[(fp+-55)] = f30; + f10 = heapFloat[(fp+-57)]; + f14 = heapFloat[(fp+-61)]; + f10 = f10+f14; + heapFloat[(fp+-56)] = f10; + f14 = f19*f18; + f10 = heapFloat[(fp+-59)]; + f30 = heapFloat[(fp+-62)]; + f10 = f10+f30; + f30 = f21*f18; + f0 = f16*f0; + heapFloat[(fp+-57)] = f0; + f0 = f17*f5; + heapFloat[(fp+-59)] = f0; + f5 = f23+f24; + f23 = f19*f20; + f24 = f25+f26; + f25 = f21*f20; + f2 = f16*f2; + f7 = f17*f7; + f26 = heapFloat[(fp+-60)]; + f0 = heapFloat[(fp+-63)]; + f0 = f26+f0; + f26 = heapFloat[(fp+-64)]; + f26 = f26*f13; + f1 = f1+f6; + f6 = f19*f22; + f19 = f27+f28; + f27 = heapFloat[(fp+-58)]; + f27 = f27*f13; + f3 = f3+f8; + f8 = f21*f22; + f21 = heapFloat[(fp+-53)]; + f11 = f21*f11; + f21 = heapFloat[(fp+-54)]; + f15 = f21*f15; + f4 = f16*f4; + f9 = f17*f9; + f16 = heapFloat[(fp+-56)]; + f14 = f16+f14; + f0 = f0+f26; + f5 = f5+f23; + f1 = f1+f6; + f6 = f10+f30; + f10 = f19+f27; + f16 = f24+f25; + f3 = f3+f8; + f8 = heapFloat[(fp+-57)]; + f17 = heapFloat[(fp+-59)]; + f8 = f8+f17; + f17 = f29*f18; + f2 = f2+f7; + f7 = f29*f20; + f11 = f11+f15; + f30 = heapFloat[(fp+-55)]; + f13 = f30*f13; + f4 = f4+f9; + f9 = f29*f22; + f8 = f8+f17; + f11 = f11+f13; + f2 = f2+f7; + f4 = f4+f9; + f7 = f0*f5; + f9 = f10*f16; + f13 = f0*f1; + f15 = f10*f3; + f7 = f7+f9; + f9 = f11*f2; + f13 = f13+f15; + f15 = f11*f4; + f7 = f7+f9; + f9 = f13+f15; + f13 = heapFloat[(fp+-40)]; +if(!(f13 >=f12)) //_LBB587_44 +{ + f13 = heapFloat[(r1+109)]; +if(!(f13 >=f12)) //_LBB587_44 +{ + f1 = 0; + if(f7 =f2)) //_LBB587_43 +{ + if(f9 =f12) //_LBB587_56 +{ + f15 = 0; + if(f9 =f9) //_LBB587_63 +{ + f17 = -f12; + if(f9 =f18) //_LBB587_50 +{ + r3 = 1; + heap8[r0+514] = r3; + f17 = heapFloat[(r1+109)]; +if(!(f17 =f7) //_LBB587_53 +{ + f17 = -f12; + if(f7 f2 ? f2 : f1; + heapFloat[(g0)] = f1; + acosf(i7); + f1 = f_g0+f_g0; + heapFloat[(r1+125)] = f1; + f3 = 3.1415927410125732; + if(f1 >f3) //_LBB587_70 +{ + f1 = heapFloat[(fp+-41)]; + f1 = -f1; + f1 = f1 < f0 ? f0 : f1; + f0 = 1; + f1 = f1 > f0 ? f0 : f1; + heapFloat[(g0)] = f1; + acosf(i7); + f0 = heapFloat[(fp+-39)]; + f0 = -f0; + heapFloat[(fp+-39)] = f0; + f0 = heapFloat[(fp+-38)]; + f0 = -f0; + heapFloat[(fp+-38)] = f0; + f0 = heapFloat[(fp+-37)]; + f0 = -f0; + heapFloat[(fp+-37)] = f0; + f1 = f_g0+f_g0; + heapFloat[(r1+125)] = f1; +} + f0 = 1.1920928955078125e-007; + if(f1 >f0) //_LBB587_73 +{ + f1 = heapFloat[(fp+-37)]; + f0 = f1*f1; + f3 = heapFloat[(fp+-38)]; + f4 = f3*f3; + f0 = f0+f4; + f4 = heapFloat[(fp+-39)]; + f5 = f4*f4; + f0 = f0+f5; + heapFloat[(g0)] = f0; + f0 = 1; + sqrtf(i7); + f0 = f0/f_g0; + f1 = f1*f0; + heapFloat[(fp+-37)] = f1; + f3 = f3*f0; + heapFloat[(fp+-38)] = f3; + f4 = f4*f0; + heapFloat[(fp+-39)] = f4; + f1 = heapFloat[(r1+125)]; +} + f0 = heapFloat[(r1+110)]; + f3 = heapFloat[(r1+104)]; + f4 = f0*f3; +if(!(f1 <=f4)) //_LBB587_80 +{ + r3 = 1; + heap8[r0+513] = r3; + if(f1 >=f0) //_LBB587_77 +{ +__label__ = 66; +} +else{ + f5 = 0.99999988079071045; + if(f3 > 2; + heap32[(r1+119)] = 0; + r3 = r5 >> 2; + f1 = heapFloat[(r2+1)]; + f5 = heapFloat[(r2+5)]; + f6 = heapFloat[(r2)]; + f7 = heapFloat[(r2+4)]; + f8 = heapFloat[(r3+1)]; + f9 = heapFloat[(r3+5)]; + f10 = heapFloat[(r3)]; + f11 = heapFloat[(r3+4)]; + f12 = heapFloat[(r2+2)]; + f13 = heapFloat[(r2+6)]; + f14 = heapFloat[(r2+9)]; + f15 = heapFloat[(r2+8)]; + f16 = heapFloat[(r3+2)]; + f17 = heapFloat[(r3+6)]; + f18 = heapFloat[(r3+9)]; + f19 = heapFloat[(r3+8)]; + f6 = f6*f3; + f7 = f7*f4; + f1 = f1*f3; + f5 = f5*f4; + f10 = f10*f3; + f11 = f11*f4; + f8 = f8*f3; + f9 = f9*f4; + f20 = heapFloat[(r2+10)]; + f21 = heapFloat[(r3+10)]; + f6 = f6+f7; + f7 = f15*f0; + f1 = f1+f5; + f5 = f14*f0; + f12 = f12*f3; + f13 = f13*f4; + f10 = f10+f11; + f11 = f19*f0; + f8 = f8+f9; + f9 = f18*f0; + f14 = f16*f3; + f15 = f17*f4; + f6 = f6+f7; + f1 = f1+f5; + f5 = f10+f11; + f7 = f8+f9; + f8 = f12+f13; + f9 = f20*f0; + f10 = f14+f15; + f11 = f21*f0; + f8 = f8+f9; + f9 = f10+f11; + f6 = f3*f6; + f1 = f4*f1; + f3 = f3*f5; + f4 = f4*f7; + f1 = f6+f1; + f5 = f0*f8; + f3 = f3+f4; + f0 = f0*f9; + f1 = f1+f5; + f0 = f3+f0; + f0 = f1+f0; + f0 = f2/f0; + heapFloat[(r1+121)] = f0; +} + r0 = heapU8[r0+514]; + if(r0 ==0) //_LBB587_83 +{ +break _8; +} +else{ + f0 = heapFloat[(fp+-37)]; + f1 = -f0; + f2 = heapFloat[(fp+-38)]; + f3 = -f2; + f4 = heapFloat[(fp+-52)]; + f1 = f4*f1; + f6 = heapFloat[(fp+-39)]; + f5 = heapFloat[(fp+-50)]; + f7 = f5*f6; + f8 = heapFloat[(fp+-49)]; + f9 = f0*f8; + f10 = f5*f2; + f11 = -f6; + f1 = f1-f7; + f7 = heapFloat[(fp+-51)]; + f12 = f7*f2; + f9 = f9+f10; + f10 = f7*f6; + f3 = f4*f3; + f13 = f7*f0; + f1 = f1+f12; + f9 = f9+f10; + f3 = f3-f13; + f6 = f8*f6; + f10 = f4*f11; + f2 = f8*f2; + f3 = f3+f6; + f6 = f1*f4; + f11 = f9*f8; + f2 = f10-f2; + f0 = f5*f0; + f0 = f2+f0; + f2 = f3*f4; + f10 = f9*f5; + f6 = f6-f11; + f11 = f3*f7; + f4 = f0*f4; + f9 = f9*f7; + f2 = f2-f10; + f10 = f0*f8; + f6 = f6-f11; + f0 = f0*f5; + f0 = f6+f0; + f4 = f4-f9; + f5 = f1*f5; + f2 = f2-f10; + f1 = f1*f7; + f4 = f4-f5; + f3 = f3*f8; + f1 = f2+f1; + heapFloat[(r1+131)] = f0; + f0 = f4+f3; + heapFloat[(r1+132)] = f1; + heapFloat[(r1+133)] = f0; + heap32[(r1+134)] = 0; + return; +} +} +} +} + r0 = _2E_str584; + r1 = _2E_str685; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 188; + _assert(i7); +} +} while(0); + return; +} + +function _ZN15btJacobianEntryC2ERK9btVector3RK11btMatrix3x3S5_S2_S2_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + heap32[(r0)] = 0; + heap32[(r0+1)] = 0; + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + heap32[(r0+2)] = 0; + r1 = r1 >> 2; + heap32[(r0+3)] = 0; + r2 = r2 >> 2; + f0 = heapFloat[(r1)]; + f1 = heapFloat[(r2)]; + f2 = heapFloat[(r1+1)]; + f3 = heapFloat[(r2+1)]; + f4 = heapFloat[(r2+4)]; + f5 = heapFloat[(r2+5)]; + f1 = f1*f0; + f3 = f3*f2; + f6 = heapFloat[(r1+2)]; + f7 = heapFloat[(r2+2)]; + f8 = heapFloat[(r2+8)]; + f9 = heapFloat[(r2+9)]; + f10 = heapFloat[(r2+10)]; + f11 = heapFloat[(r2+6)]; + f4 = f4*f0; + f5 = f5*f2; + f1 = f1+f3; + f3 = f7*f6; + f0 = f8*f0; + f2 = f9*f2; + f4 = f4+f5; + f5 = f11*f6; + f1 = f1+f3; + f0 = f0+f2; + f2 = f10*f6; + f3 = f4+f5; + heapFloat[(r0+4)] = f1; + f0 = f0+f2; + heapFloat[(r0+5)] = f3; + heapFloat[(r0+6)] = f0; + heap32[(r0+7)] = 0; + r2 = heap32[(fp+3)]; + r2 = r2 >> 2; + f2 = heapFloat[(r1)]; + f2 = -f2; + f4 = heapFloat[(r2)]; + f5 = heapFloat[(r1+1)]; + f6 = heapFloat[(r2+1)]; + f7 = heapFloat[(r2+4)]; + f8 = heapFloat[(r2+5)]; + f4 = f4*f2; + f6 = f6*f5; + f9 = heapFloat[(r1+2)]; + f10 = heapFloat[(r2+2)]; + f11 = heapFloat[(r2+8)]; + f12 = heapFloat[(r2+9)]; + f13 = heapFloat[(r2+10)]; + f14 = heapFloat[(r2+6)]; + f7 = f7*f2; + f8 = f8*f5; + f4 = f4-f6; + f6 = f10*f9; + f2 = f11*f2; + f5 = f12*f5; + f7 = f7-f8; + f8 = f14*f9; + f4 = f4-f6; + f2 = f2-f5; + f5 = f13*f9; + f6 = f7-f8; + heapFloat[(r0+8)] = f4; + f2 = f2-f5; + heapFloat[(r0+9)] = f6; + r1 = heap32[(fp+4)]; + heapFloat[(r0+10)] = f2; + r1 = r1 >> 2; + heap32[(r0+11)] = 0; + f5 = heapFloat[(r1+2)]; + f7 = heapFloat[(r1+1)]; + f8 = heapFloat[(r1)]; + f8 = f8*f1; + f7 = f7*f3; + heapFloat[(r0+12)] = f8; + f5 = f5*f0; + heapFloat[(r0+13)] = f7; + r1 = heap32[(fp+5)]; + heapFloat[(r0+14)] = f5; + r1 = r1 >> 2; + heap32[(r0+15)] = 0; + f9 = heapFloat[(r1+2)]; + f10 = heapFloat[(r1+1)]; + f11 = heapFloat[(r1)]; + f10 = f10*f6; + f11 = f11*f4; + f9 = f9*f2; + heapFloat[(r0+16)] = f11; + f1 = f8*f1; + f3 = f7*f3; + f4 = f11*f4; + f6 = f10*f6; + heapFloat[(r0+17)] = f10; + f1 = f1+f3; + f0 = f5*f0; + f3 = f4+f6; + f2 = f9*f2; + heapFloat[(r0+18)] = f9; + f0 = f1+f0; + f1 = f3+f2; + f0 = f0+f1; + heap32[(r0+19)] = 0; + f1 = 0; + heapFloat[(r0+20)] = f0; + if(f0 >f1) //_LBB588_2 +{ + return; +} +else{ + r0 = _2E_str846; + r1 = _2E_str947; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 70; + _assert(i7); +} +} + +function _Z21btAdjustAngleToLimitsfff(sp) +{ + var i7; + var fp = sp>>2; + var f0; + var f1; + var f2; + var f3; + var f4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + f0 = heapFloat[(fp+1)]; + f1 = heapFloat[(fp+2)]; + f2 = heapFloat[(fp)]; +_1: do { +if(!(f0 >=f1)) //_LBB589_39 +{ + if(f2 >=f0) //_LBB589_20 +{ + if(f2 <=f1) //_LBB589_39 +{ +break _1; +} +else{ + f1 = f2-f1; + heapFloat[(g0)] = f1; + heap32[(g0+1)] = 1086918619; + fmodf(i7); + f1 = f_g0; + f3 = -3.1415927410125732; + if(f1 >=f3) //_LBB589_23 +{ + f4 = 3.1415927410125732; + if(f1 >f4) //_LBB589_25 +{ + f4 = -6.2831854820251465; + f1 = f1+f4; +} +} +else{ + f4 = 6.2831854820251465; + f1 = f1+f4; +} + f4 = 0; + if(f1 =f3) //_LBB589_31 +{ + f3 = 3.1415927410125732; + if(f0 >f3) //_LBB589_33 +{ + f3 = -6.2831854820251465; + f0 = f0+f3; +} +} +else{ + f3 = 6.2831854820251465; + f0 = f0+f3; +} + if(f0 =f1) //_LBB589_39 +{ +break _1; +} +else{ + f0 = -6.2831854820251465; + f2 = f2+f0; +} +} +} +else{ + f0 = f0-f2; + heapFloat[(g0)] = f0; + heap32[(g0+1)] = 1086918619; + fmodf(i7); + f0 = f_g0; + f3 = -3.1415927410125732; + if(f0 >=f3) //_LBB589_4 +{ + f4 = 3.1415927410125732; + if(f0 >f4) //_LBB589_6 +{ + f4 = -6.2831854820251465; + f0 = f0+f4; +} +} +else{ + f4 = 6.2831854820251465; + f0 = f0+f4; +} + f4 = 0; + if(f0 =f3) //_LBB589_12 +{ + f3 = 3.1415927410125732; + if(f1 >f3) //_LBB589_14 +{ + f3 = -6.2831854820251465; + f1 = f1+f3; +} +} +else{ + f3 = 6.2831854820251465; + f1 = f1+f3; +} + if(f1 >2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 212; + r_g0 = r0; + return; +} + +function _ZNK17btHingeConstraint9serializeEPvP12btSerializer(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r2; + r1 = r1 >> 2; + r2 = r0 >> 2; + _ZNK17btTypedConstraint9serializeEPvP12btSerializer(i7); + heap32[(r1+11)] = heap32[(r2+135)]; + heap32[(r1+12)] = heap32[(r2+136)]; + heap32[(r1+13)] = heap32[(r2+137)]; + heap32[(r1+14)] = heap32[(r2+138)]; + heap32[(r1+15)] = heap32[(r2+139)]; + heap32[(r1+16)] = heap32[(r2+140)]; + heap32[(r1+17)] = heap32[(r2+141)]; + heap32[(r1+18)] = heap32[(r2+142)]; + heap32[(r1+19)] = heap32[(r2+143)]; + heap32[(r1+20)] = heap32[(r2+144)]; + heap32[(r1+21)] = heap32[(r2+145)]; + heap32[(r1+22)] = heap32[(r2+146)]; + heap32[(r1+23)] = heap32[(r2+147)]; + heap32[(r1+24)] = heap32[(r2+148)]; + heap32[(r1+25)] = heap32[(r2+149)]; + heap32[(r1+26)] = heap32[(r2+150)]; + heap32[(r1+27)] = heap32[(r2+151)]; + heap32[(r1+28)] = heap32[(r2+152)]; + heap32[(r1+29)] = heap32[(r2+153)]; + heap32[(r1+30)] = heap32[(r2+154)]; + heap32[(r1+31)] = heap32[(r2+155)]; + heap32[(r1+32)] = heap32[(r2+156)]; + heap32[(r1+33)] = heap32[(r2+157)]; + heap32[(r1+34)] = heap32[(r2+158)]; + heap32[(r1+35)] = heap32[(r2+159)]; + heap32[(r1+36)] = heap32[(r2+160)]; + heap32[(r1+37)] = heap32[(r2+161)]; + heap32[(r1+38)] = heap32[(r2+162)]; + heap32[(r1+39)] = heap32[(r2+163)]; + heap32[(r1+40)] = heap32[(r2+164)]; + heap32[(r1+41)] = heap32[(r2+165)]; + heap32[(r1+42)] = heap32[(r2+166)]; + r3 = heapU8[r0+720]; + heap32[(r1+44)] = r3; + r3 = heapU8[r0+721]; + heap32[(r1+45)] = r3; + heap32[(r1+47)] = heap32[(r2+168)]; + heap32[(r1+46)] = heap32[(r2+167)]; + r0 = heapU8[r0+725]; + heap32[(r1+43)] = r0; + heap32[(r1+48)] = heap32[(r2+172)]; + heap32[(r1+49)] = heap32[(r2+173)]; + heap32[(r1+50)] = heap32[(r2+169)]; + heap32[(r1+51)] = heap32[(r2+170)]; + heap32[(r1+52)] = heap32[(r2+171)]; + r0 = _2E_str29; + r_g0 = r0; + return; +} + +function _ZN17btHingeConstraintD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV17btHingeConstraint; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN17btHingeConstraintD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV17btHingeConstraint; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN17btHingeConstraint13buildJacobianEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; +var __label__ = 0; + i7 = sp + -552;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heapU8[r0+723]; +if(!(r1 ==0)) //_LBB594_25 +{ + r1 = r0 >> 2; + heap32[(r1+7)] = 0; + heap32[(r1+182)] = 0; + r2 = heapU8[r0+720]; +if(!(r2 !=0)) //_LBB594_13 +{ + r2 = heap32[(r1+6)]; + r3 = heap32[(r1+5)]; + r2 = r2 >> 2; + r3 = r3 >> 2; + f0 = heapFloat[(r2+5)]; + f1 = heapFloat[(r1+163)]; + f2 = heapFloat[(r2+1)]; + f3 = heapFloat[(r2+6)]; + f4 = heapFloat[(r1+164)]; + f5 = heapFloat[(r2+2)]; + f6 = heapFloat[(r3+5)]; + f7 = heapFloat[(r1+147)]; + f8 = heapFloat[(r3+1)]; + f9 = heapFloat[(r3+6)]; + f10 = heapFloat[(r1+148)]; + f11 = heapFloat[(r3+2)]; + f12 = heapFloat[(r2+9)]; + f13 = heapFloat[(r2+10)]; + f14 = heapFloat[(r3+9)]; + f15 = heapFloat[(r3+10)]; + f0 = f0*f1; + f3 = f3*f4; + f16 = heapFloat[(r2+7)]; + f17 = heapFloat[(r1+165)]; + f18 = heapFloat[(r2+3)]; + f6 = f6*f7; + f9 = f9*f10; + f19 = heapFloat[(r3+7)]; + f20 = heapFloat[(r1+149)]; + f21 = heapFloat[(r3+3)]; + f2 = f2*f1; + f5 = f5*f4; + f8 = f8*f7; + f11 = f11*f10; + f22 = heapFloat[(r2+11)]; + f23 = heapFloat[(r3+11)]; + f1 = f12*f1; + f4 = f13*f4; + f7 = f14*f7; + f10 = f15*f10; + f0 = f0+f3; + f3 = f16*f17; + f6 = f6+f9; + f9 = f19*f20; + f2 = f2+f5; + f5 = f18*f17; + f8 = f8+f11; + f11 = f21*f20; + f1 = f1+f4; + f4 = f22*f17; + f7 = f7+f10; + f10 = f23*f20; + f0 = f0+f3; + f3 = heapFloat[(r2+14)]; + f6 = f6+f9; + f9 = heapFloat[(r3+14)]; + f2 = f2+f5; + f5 = heapFloat[(r2+13)]; + f8 = f8+f11; + f11 = heapFloat[(r3+13)]; + f0 = f0+f3; + f3 = f6+f9; + f2 = f2+f5; + f5 = f8+f11; + f1 = f1+f4; + f4 = heapFloat[(r2+15)]; + f6 = f7+f10; + f7 = heapFloat[(r3+15)]; + f8 = f0-f3; + f9 = f2-f5; + f1 = f1+f4; + f4 = f6+f7; + f6 = f1-f4; + f7 = f9*f9; + f10 = f8*f8; + f7 = f7+f10; + f10 = f6*f6; + f7 = f7+f10; + f10 = 1.1920928955078125e-007; + if(f7 >f10) //_LBB594_4 +{ + heapFloat[(g0)] = f7; + f10 = 1; + sqrtf(i7); + f11 = f10/f_g0; + r2 = sp + -512; + f7 = f9*f11; + f8 = f8*f11; + r3 = r2 >> 2; + heapFloat[(fp+-128)] = f7; + f6 = f6*f11; + heapFloat[(r3+1)] = f8; + r2 = (r2 + 8)|0; + heapFloat[(r3+2)] = f6; + heap32[(r3+3)] = 0; + f9 = 0; + if(f6 f11) //_LBB594_9 +{ + f7 = f8*f8; + f8 = f6*f6; + f7 = f7+f8; + heapFloat[(g0)] = f7; + sqrtf(i7); + heap32[(r3+4)] = 0; + f6 = heapFloat[(r3+2)]; + f8 = f10/f_g0; + f6 = -f6; + f6 = f8*f6; + heapFloat[(r3+5)] = f6; + f9 = heapFloat[(r3+1)]; + f9 = f9*f8; + f7 = f7*f8; + heapFloat[(r3+6)] = f9; + heapFloat[(r3+8)] = f7; + f7 = heapFloat[(fp+-128)]; + f8 = -f7; + f8 = f9*f8; + f7 = f7*f6; + heapFloat[(r3+9)] = f8; + heapFloat[(r3+10)] = f7; +__label__ = 10; +} +else{ +__label__ = 9; +} +} +else{ + r2 = sp + -512; + r3 = r2 >> 2; + heap32[(fp+-128)] = 1065353216; + heap32[(r3+1)] = 0; + r2 = (r2 + 8)|0; + f7 = 1; + f8 = 0; + heap32[(r3+2)] = 0; + heap32[(r3+3)] = 0; +__label__ = 9; +} +if (__label__ == 9){ + f6 = f7*f7; + f7 = f8*f8; + f6 = f6+f7; + r3 = sp + -512; + heapFloat[(g0)] = f6; + r3 = r3 >> 2; + sqrtf(i7); + f8 = 1; + f9 = heapFloat[(r3+1)]; + f7 = f8/f_g0; + f8 = -f9; + f8 = f7*f8; + heapFloat[(r3+4)] = f8; + f9 = heapFloat[(fp+-128)]; + f9 = f9*f7; + heapFloat[(r3+5)] = f9; + r2 = r2 >> 2; + heap32[(r3+6)] = 0; + f10 = heapFloat[(r2)]; + f11 = -f10; + f9 = f9*f11; + f8 = f10*f8; + heapFloat[(r3+8)] = f9; + f6 = f6*f7; + heapFloat[(r3+9)] = f8; + heapFloat[(r3+10)] = f6; +} + r2 = (r0 + 36)|0; + r3 = 0; +_16: while(true){ + r4 = heap32[(r1+5)]; + r5 = r4 >> 2; + r6 = sp + -416; + r7 = r6 >> 2; + heap32[(fp+-104)] = heap32[(r5+1)]; + heap32[(r7+1)] = heap32[(r5+5)]; + heap32[(r7+2)] = heap32[(r5+9)]; + heap32[(r7+3)] = 0; + heap32[(r7+4)] = heap32[(r5+2)]; + heap32[(r7+5)] = heap32[(r5+6)]; + heap32[(r7+6)] = heap32[(r5+10)]; + heap32[(r7+7)] = 0; + heap32[(r7+8)] = heap32[(r5+3)]; + heap32[(r7+9)] = heap32[(r5+7)]; + heap32[(r7+10)] = heap32[(r5+11)]; + heap32[(r7+11)] = 0; + r7 = heap32[(r1+6)]; + r8 = sp + -368; + r9 = r7 >> 2; + r10 = r8 >> 2; + heap32[(fp+-92)] = heap32[(r9+1)]; + heap32[(r10+1)] = heap32[(r9+5)]; + heap32[(r10+2)] = heap32[(r9+9)]; + heap32[(r10+3)] = 0; + heap32[(r10+4)] = heap32[(r9+2)]; + heap32[(r10+5)] = heap32[(r9+6)]; + heap32[(r10+6)] = heap32[(r9+10)]; + heap32[(r10+7)] = 0; + heap32[(r10+8)] = heap32[(r9+3)]; + heap32[(r10+9)] = heap32[(r9+7)]; + heap32[(r10+10)] = heap32[(r9+11)]; + heap32[(r10+11)] = 0; + f6 = heapFloat[(r5+13)]; + f7 = heapFloat[(r5+15)]; + f8 = heapFloat[(r5+14)]; + r10 = sp + -320; + f6 = f5-f6; + r11 = r10 >> 2; + f8 = f3-f8; + heapFloat[(fp+-80)] = f6; + f6 = f4-f7; + heapFloat[(r11+1)] = f8; + heapFloat[(r11+2)] = f6; + heap32[(r11+3)] = 0; + f6 = heapFloat[(r9+13)]; + f7 = heapFloat[(r9+15)]; + f8 = heapFloat[(r9+14)]; + r11 = sp + -304; + f6 = f2-f6; + r12 = r11 >> 2; + f8 = f0-f8; + heapFloat[(fp+-76)] = f6; + f6 = f1-f7; + heapFloat[(r12+1)] = f8; + heapFloat[(r12+2)] = f6; + heap32[(r12+3)] = 0; + f6 = heapFloat[(r9+84)]; + f7 = heapFloat[(r5+84)]; + r5 = sp + -512; + r5 = (r5 + r3)|0; + r4 = (r4 + 388)|0; + r7 = (r7 + 388)|0; + heap32[(g0)] = r2; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r10; + heap32[(g0+4)] = r11; + heap32[(g0+5)] = r5; + heap32[(g0+6)] = r4; + heapFloat[(g0+7)] = f7; + heap32[(g0+8)] = r7; + heapFloat[(g0+9)] = f6; + r3 = (r3 + 16)|0; + r2 = (r2 + 84)|0; + _ZN15btJacobianEntryC2ERK11btMatrix3x3S2_RK9btVector3S5_S5_S5_fS5_f(i7); +if(!(r3 !=48)) //_LBB594_12 +{ +break _16; +} +} +} + f0 = heapFloat[(r1+145)]; + f1 = heapFloat[(r1+137)]; + f2 = heapFloat[(r1+141)]; + f3 = 0; + if(f0 > 2; + f5 = heapFloat[(r3+2)]; + f7 = heapFloat[(r3+1)]; + f8 = heapFloat[(r3+6)]; + f9 = heapFloat[(r3+5)]; + f10 = heapFloat[(r3+3)]; + f11 = f7*f4; + f12 = f5*f6; + f13 = heapFloat[(r3+11)]; + f14 = heapFloat[(r3+7)]; + f15 = heapFloat[(r3+10)]; + f16 = heapFloat[(r3+9)]; + f17 = f9*f4; + f18 = f8*f6; + f11 = f11+f12; + f12 = f10*f3; + r3 = sp + -432; + f4 = f16*f4; + f6 = f15*f6; + f17 = f17+f18; + f18 = f14*f3; + f11 = f11+f12; + r4 = r3 >> 2; + f4 = f4+f6; + f3 = f13*f3; + f6 = f17+f18; + heapFloat[(fp+-108)] = f11; + f11 = f7*f2; + f12 = f5*f0; + f3 = f4+f3; + heapFloat[(r4+1)] = f6; + heapFloat[(r4+2)] = f3; + f3 = f9*f2; + f4 = f8*f0; + f6 = f11+f12; + f11 = f10*f1; + r5 = sp + -448; + f2 = f16*f2; + f0 = f15*f0; + f3 = f3+f4; + f4 = f14*f1; + f6 = f6+f11; + heap32[(r4+3)] = 0; + r4 = r5 >> 2; + f0 = f2+f0; + f1 = f13*f1; + f2 = f3+f4; + heapFloat[(fp+-112)] = f6; + f0 = f0+f1; + heapFloat[(r4+1)] = f2; + heapFloat[(r4+2)] = f0; + heap32[(r4+3)] = 0; + f0 = heapFloat[(r1+137)]; + f1 = heapFloat[(r1+141)]; + f2 = heapFloat[(r1+145)]; + f3 = f7*f0; + f4 = f5*f1; + f6 = f9*f0; + f11 = f8*f1; + f3 = f3+f4; + f4 = f10*f2; + r4 = sp + -464; + f0 = f16*f0; + f1 = f15*f1; + f6 = f6+f11; + f11 = f14*f2; + f3 = f3+f4; + r6 = r4 >> 2; + f0 = f0+f1; + f1 = f13*f2; + f2 = f6+f11; + heapFloat[(fp+-116)] = f3; + f0 = f0+f1; + heapFloat[(r6+1)] = f2; + heapFloat[(r6+2)] = f0; + r7 = sp + -288; + heap32[(r6+3)] = 0; + r6 = r7 >> 2; + heapFloat[(fp+-72)] = f7; + heapFloat[(r6+1)] = f9; + heapFloat[(r6+2)] = f16; + heap32[(r6+3)] = 0; + heapFloat[(r6+4)] = f5; + heapFloat[(r6+5)] = f8; + heapFloat[(r6+6)] = f15; + heap32[(r6+7)] = 0; + heapFloat[(r6+8)] = f10; + heapFloat[(r6+9)] = f14; + heapFloat[(r6+10)] = f13; + heap32[(r6+11)] = 0; + r6 = heap32[(r1+6)]; + r8 = sp + -240; + r9 = r6 >> 2; + r10 = r8 >> 2; + heap32[(fp+-60)] = heap32[(r9+1)]; + heap32[(r10+1)] = heap32[(r9+5)]; + heap32[(r10+2)] = heap32[(r9+9)]; + heap32[(r10+3)] = 0; + heap32[(r10+4)] = heap32[(r9+2)]; + heap32[(r10+5)] = heap32[(r9+6)]; + heap32[(r10+6)] = heap32[(r9+10)]; + heap32[(r10+7)] = 0; + heap32[(r10+8)] = heap32[(r9+3)]; + heap32[(r10+9)] = heap32[(r9+7)]; + heap32[(r10+10)] = heap32[(r9+11)]; + heap32[(r10+11)] = 0; + r9 = (r0 + 288)|0; + r2 = (r2 + 388)|0; + r6 = (r6 + 388)|0; + heap32[(g0)] = r9; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r7; + heap32[(g0+3)] = r8; + heap32[(g0+4)] = r2; + heap32[(g0+5)] = r6; + _ZN15btJacobianEntryC2ERK9btVector3RK11btMatrix3x3S5_S2_S2_(i7); + r2 = heap32[(r1+5)]; + r3 = sp + -192; + r6 = r2 >> 2; + r7 = r3 >> 2; + heap32[(fp+-48)] = heap32[(r6+1)]; + heap32[(r7+1)] = heap32[(r6+5)]; + heap32[(r7+2)] = heap32[(r6+9)]; + heap32[(r7+3)] = 0; + heap32[(r7+4)] = heap32[(r6+2)]; + heap32[(r7+5)] = heap32[(r6+6)]; + heap32[(r7+6)] = heap32[(r6+10)]; + heap32[(r7+7)] = 0; + heap32[(r7+8)] = heap32[(r6+3)]; + heap32[(r7+9)] = heap32[(r6+7)]; + heap32[(r7+10)] = heap32[(r6+11)]; + heap32[(r7+11)] = 0; + r6 = heap32[(r1+6)]; + r7 = sp + -144; + r8 = r6 >> 2; + r9 = r7 >> 2; + heap32[(fp+-36)] = heap32[(r8+1)]; + heap32[(r9+1)] = heap32[(r8+5)]; + heap32[(r9+2)] = heap32[(r8+9)]; + heap32[(r9+3)] = 0; + heap32[(r9+4)] = heap32[(r8+2)]; + heap32[(r9+5)] = heap32[(r8+6)]; + heap32[(r9+6)] = heap32[(r8+10)]; + heap32[(r9+7)] = 0; + heap32[(r9+8)] = heap32[(r8+3)]; + heap32[(r9+9)] = heap32[(r8+7)]; + heap32[(r9+10)] = heap32[(r8+11)]; + heap32[(r9+11)] = 0; + r8 = (r0 + 372)|0; + r2 = (r2 + 388)|0; + r6 = (r6 + 388)|0; + heap32[(g0)] = r8; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = r7; + heap32[(g0+4)] = r2; + heap32[(g0+5)] = r6; + _ZN15btJacobianEntryC2ERK9btVector3RK11btMatrix3x3S5_S2_S2_(i7); + r2 = heap32[(r1+5)]; + r3 = sp + -96; + r5 = r2 >> 2; + r6 = r3 >> 2; + heap32[(fp+-24)] = heap32[(r5+1)]; + heap32[(r6+1)] = heap32[(r5+5)]; + heap32[(r6+2)] = heap32[(r5+9)]; + heap32[(r6+3)] = 0; + heap32[(r6+4)] = heap32[(r5+2)]; + heap32[(r6+5)] = heap32[(r5+6)]; + heap32[(r6+6)] = heap32[(r5+10)]; + heap32[(r6+7)] = 0; + heap32[(r6+8)] = heap32[(r5+3)]; + heap32[(r6+9)] = heap32[(r5+7)]; + heap32[(r6+10)] = heap32[(r5+11)]; + heap32[(r6+11)] = 0; + r5 = heap32[(r1+6)]; + r6 = sp + -48; + r7 = r5 >> 2; + r8 = r6 >> 2; + heap32[(fp+-12)] = heap32[(r7+1)]; + heap32[(r8+1)] = heap32[(r7+5)]; + heap32[(r8+2)] = heap32[(r7+9)]; + heap32[(r8+3)] = 0; + heap32[(r8+4)] = heap32[(r7+2)]; + heap32[(r8+5)] = heap32[(r7+6)]; + heap32[(r8+6)] = heap32[(r7+10)]; + heap32[(r8+7)] = 0; + heap32[(r8+8)] = heap32[(r7+3)]; + heap32[(r8+9)] = heap32[(r7+7)]; + heap32[(r8+10)] = heap32[(r7+11)]; + heap32[(r8+11)] = 0; + r7 = (r0 + 456)|0; + r2 = (r2 + 388)|0; + r5 = (r5 + 388)|0; + heap32[(g0)] = r7; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = r6; + heap32[(g0+4)] = r2; + heap32[(g0+5)] = r5; + _ZN15btJacobianEntryC2ERK9btVector3RK11btMatrix3x3S5_S2_S2_(i7); + heap32[(r1+177)] = 0; + r2 = heap32[(r1+6)]; + r3 = heap32[(r1+5)]; + r3 = (r3 + 4)|0; + r2 = (r2 + 4)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r2; + _ZN17btHingeConstraint13getHingeAngleERK11btTransformS2_(i7); + f0 = f_g0; + heapFloat[(r1+178)] = f0; + heap32[(r1+176)] = 0; + r2 = 0; + heap32[(r1+175)] = 0; + heap8[r0+722] = r2; + f1 = heapFloat[(r1+172)]; + f2 = heapFloat[(r1+173)]; +if(!(f1 >f2)) //_LBB594_24 +{ + heapFloat[(g0)] = f0; + heapFloat[(g0+1)] = f1; + heapFloat[(g0+2)] = f2; + _Z21btAdjustAngleToLimitsfff(i7); + f0 = f_g0; + heapFloat[(r1+178)] = f0; + f1 = heapFloat[(r1+172)]; + if(f0 >f1) //_LBB594_22 +{ + f1 = heapFloat[(r1+173)]; +if(!(f0 > 2; + f0 = heapFloat[(r1+137)]; + f1 = heapFloat[(r0+5)]; + f2 = heapFloat[(r0+1)]; + f3 = heapFloat[(r1+141)]; + f4 = heapFloat[(r0+6)]; + f5 = heapFloat[(r0+2)]; + f6 = heapFloat[(r0+9)]; + f7 = heapFloat[(r0+10)]; + r2 = heap32[(r1+6)]; + f2 = f2*f0; + f5 = f5*f3; + f1 = f1*f0; + f4 = f4*f3; + f8 = heapFloat[(r1+145)]; + f9 = heapFloat[(r0+7)]; + f10 = heapFloat[(r0+3)]; + r2 = r2 >> 2; + f11 = heapFloat[(r0+11)]; + f0 = f6*f0; + f3 = f7*f3; + f2 = f2+f5; + f5 = f10*f8; + f1 = f1+f4; + f4 = f9*f8; + f0 = f0+f3; + f3 = f11*f8; + f2 = f2+f5; + f5 = heapFloat[(r0+65)]; + f6 = heapFloat[(r0+64)]; + f7 = heapFloat[(r2+65)]; + f8 = heapFloat[(r2+64)]; + f1 = f1+f4; + f4 = heapFloat[(r0+69)]; + f9 = heapFloat[(r0+68)]; + f10 = heapFloat[(r2+69)]; + f11 = heapFloat[(r2+68)]; + f12 = heapFloat[(r0+66)]; + f13 = heapFloat[(r0+70)]; + f14 = heapFloat[(r2+66)]; + f15 = heapFloat[(r2+70)]; + f6 = f6*f2; + f9 = f9*f1; + f5 = f5*f2; + f4 = f4*f1; + f8 = f8*f2; + f11 = f11*f1; + f7 = f7*f2; + f10 = f10*f1; + f0 = f0+f3; + f3 = heapFloat[(r0+73)]; + f16 = heapFloat[(r0+72)]; + f17 = heapFloat[(r2+73)]; + f18 = heapFloat[(r2+72)]; + f19 = heapFloat[(r0+74)]; + f20 = heapFloat[(r2+74)]; + f6 = f6+f9; + f9 = f16*f0; + f4 = f5+f4; + f3 = f3*f0; + f5 = f12*f2; + f12 = f13*f1; + f8 = f8+f11; + f11 = f18*f0; + f7 = f7+f10; + f10 = f17*f0; + f13 = f14*f2; + f14 = f15*f1; + f6 = f6+f9; + f3 = f4+f3; + f4 = f8+f11; + f7 = f7+f10; + f5 = f5+f12; + f8 = f19*f0; + f9 = f13+f14; + f10 = f20*f0; + f5 = f5+f8; + f8 = f9+f10; + f6 = f2*f6; + f3 = f1*f3; + f2 = f2*f4; + f1 = f1*f7; + f3 = f6+f3; + f4 = f0*f5; + f1 = f2+f1; + f0 = f0*f8; + f2 = f3+f4; + f0 = f1+f0; + f1 = 1; + f0 = f2+f0; + f0 = f1/f0; + heapFloat[(r1+174)] = f0; +} + return; +} + +function _ZN17btHingeConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var f0; + var f1; + var f2; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = heapU8[r0+723]; + if(r2 ==0) //_LBB595_2 +{ + r1 = r1 >> 2; + heap32[(r1)] = 5; + heap32[(r1+1)] = 1; + r2 = r0 >> 2; + r3 = heap32[(r2+6)]; + r4 = heap32[(r2+5)]; + r4 = (r4 + 4)|0; + r3 = (r3 + 4)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r3; + _ZN17btHingeConstraint13getHingeAngleERK11btTransformS2_(i7); + f0 = f_g0; + heapFloat[(r2+178)] = f0; + heap32[(r2+176)] = 0; + r3 = 0; + heap32[(r2+175)] = 0; + heap8[r0+722] = r3; + f1 = heapFloat[(r2+172)]; + f2 = heapFloat[(r2+173)]; + if(f1 >f2) //_LBB595_8 +{ +__label__ = 8; +} +else{ + heapFloat[(g0)] = f0; + heapFloat[(g0+1)] = f1; + heapFloat[(g0+2)] = f2; + _Z21btAdjustAngleToLimitsfff(i7); + f0 = f_g0; + heapFloat[(r2+178)] = f0; + f1 = heapFloat[(r2+172)]; + if(f0 >f1) //_LBB595_5 +{ + f1 = heapFloat[(r2+173)]; + if(f0 > 2; + heap32[(r0)] = 0; + heap32[(r0+1)] = 0; + return; +} +} + +function _ZN17btHingeConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; + var f30; +var __label__ = 0; + i7 = sp + -136;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(fp+1)]; + r3 = heap32[(r1+6)]; + r4 = heap32[(r1+5)]; + r5 = heapU8[r0+723]; + r6 = heapU8[r0+724]; +_1: do { + if(r6 ==0) //_LBB596_60 +{ + r5 = r5 & 255; + if(r5 ==0) //_LBB596_62 +{ + r4 = r4 >> 2; + r3 = r3 >> 2; + f0 = heapFloat[(r1+147)]; + f1 = heapFloat[(r4+9)]; + f2 = heapFloat[(r4+5)]; + f3 = heapFloat[(r4+1)]; + f4 = heapFloat[(r1+148)]; + f5 = heapFloat[(r4+10)]; + f6 = heapFloat[(r4+6)]; + f7 = heapFloat[(r4+2)]; + f8 = heapFloat[(r1+163)]; + f9 = heapFloat[(r3+9)]; + heapFloat[(fp+-3)] = f9; + f10 = heapFloat[(r3+5)]; + heapFloat[(fp+-2)] = f10; + f11 = heapFloat[(r3+1)]; + heapFloat[(fp+-1)] = f11; + f12 = heapFloat[(r1+164)]; + f13 = heapFloat[(r3+10)]; + f14 = heapFloat[(r3+6)]; + f9 = heapFloat[(r3+2)]; + heapFloat[(fp+-7)] = f9; + f10 = heapFloat[(r1+137)]; + f11 = heapFloat[(r1+141)]; + f15 = heapFloat[(r1+136)]; + f16 = heapFloat[(r1+140)]; + f17 = heapFloat[(r1+135)]; + f18 = heapFloat[(r1+139)]; + f19 = heapFloat[(r1+153)]; + f20 = heapFloat[(r1+157)]; + f21 = f1*f0; + f22 = f5*f4; + f23 = f2*f0; + f24 = f6*f4; + f0 = f3*f0; + f4 = f7*f4; + f25 = heapFloat[(r1+149)]; + f26 = heapFloat[(r4+11)]; + f27 = heapFloat[(r4+7)]; + f28 = heapFloat[(r4+3)]; + f9 = heapFloat[(fp+-3)]; + f29 = f9*f8; + heapFloat[(fp+-8)] = f29; + f30 = f13*f12; + heapFloat[(fp+-10)] = f30; + f9 = heapFloat[(fp+-2)]; + f9 = f9*f8; + heapFloat[(fp+-9)] = f9; + f9 = f14*f12; + heapFloat[(fp+-12)] = f9; + f9 = heapFloat[(fp+-1)]; + f8 = f9*f8; + heapFloat[(fp+-11)] = f8; + f9 = heapFloat[(fp+-7)]; + f12 = f9*f12; + heapFloat[(fp+-13)] = f12; + f8 = heapFloat[(r1+165)]; + f9 = heapFloat[(r3+11)]; + heapFloat[(fp+-4)] = f9; + f9 = heapFloat[(r3+7)]; + heapFloat[(fp+-6)] = f9; + f9 = heapFloat[(r3+3)]; + heapFloat[(fp+-5)] = f9; + f9 = heapFloat[(r1+145)]; + f12 = heapFloat[(r1+144)]; + f29 = heapFloat[(r1+143)]; + f30 = heapFloat[(r1+161)]; + f21 = f21+f22; + heapFloat[(fp+-15)] = f21; + f22 = f26*f25; + f21 = f23+f24; + heapFloat[(fp+-16)] = f21; + f23 = f27*f25; + f0 = f0+f4; + heapFloat[(fp+-14)] = f0; + f0 = f28*f25; + heapFloat[(fp+-23)] = f0; + f0 = f10*f1; + heapFloat[(fp+-24)] = f0; + f4 = f11*f5; + f21 = f15*f1; + heapFloat[(fp+-18)] = f21; + f24 = f16*f5; + f1 = f17*f1; + heapFloat[(fp+-20)] = f1; + f5 = f18*f5; + f25 = f10*f2; + heapFloat[(fp+-17)] = f25; + f0 = f11*f6; + f1 = f15*f2; + heapFloat[(fp+-19)] = f1; + f1 = f16*f6; + heapFloat[(fp+-28)] = f1; + f2 = f17*f2; + heapFloat[(fp+-21)] = f2; + f1 = f18*f6; + heapFloat[(fp+-29)] = f1; + f2 = f10*f3; + heapFloat[(fp+-25)] = f2; + f6 = f11*f7; + f10 = f15*f3; + heapFloat[(fp+-26)] = f10; + f11 = f16*f7; + f3 = f17*f3; + heapFloat[(fp+-22)] = f3; + f7 = f18*f7; + f15 = heapFloat[(fp+-8)]; + f16 = heapFloat[(fp+-10)]; + f15 = f15+f16; + heapFloat[(fp+-27)] = f15; + f16 = heapFloat[(fp+-4)]; + f17 = f16*f8; + f18 = heapFloat[(fp+-9)]; + f21 = heapFloat[(fp+-12)]; + f18 = f18+f21; + heapFloat[(fp+-8)] = f18; + f21 = heapFloat[(fp+-6)]; + f25 = f21*f8; + f1 = heapFloat[(fp+-11)]; + f2 = heapFloat[(fp+-13)]; + f1 = f1+f2; + heapFloat[(fp+-9)] = f1; + f2 = heapFloat[(fp+-5)]; + f1 = f2*f8; + heapFloat[(fp+-11)] = f1; + f2 = heapFloat[(fp+-3)]; + f2 = f19*f2; + heapFloat[(fp+-3)] = f2; + f1 = f20*f13; + heapFloat[(fp+-12)] = f1; + f2 = heapFloat[(fp+-2)]; + f2 = f19*f2; + heapFloat[(fp+-10)] = f2; + f1 = f20*f14; + heapFloat[(fp+-13)] = f1; + f2 = heapFloat[(fp+-1)]; + f2 = f19*f2; + heapFloat[(fp+-2)] = f2; + f3 = heapFloat[(fp+-7)]; + f1 = f20*f3; + heapFloat[(fp+-30)] = f1; + r5 = r2 >> 2; + f2 = heapFloat[(r4+15)]; + f3 = heapFloat[(fp+-15)]; + f3 = f3+f22; + heapFloat[(fp+-7)] = f3; + f8 = heapFloat[(r4+14)]; + f10 = heapFloat[(fp+-16)]; + f1 = f10+f23; + heapFloat[(fp+-15)] = f1; + f1 = heapFloat[(r4+13)]; + heapFloat[(fp+-1)] = f1; + f3 = heapFloat[(fp+-14)]; + f10 = heapFloat[(fp+-23)]; + f3 = f3+f10; + heapFloat[(fp+-16)] = f3; + f10 = heapFloat[(fp+-24)]; + f4 = f10+f4; + heapFloat[(fp+-14)] = f4; + f1 = f9*f26; + heapFloat[(fp+-23)] = f1; + f3 = heapFloat[(fp+-18)]; + f1 = f3+f24; + heapFloat[(fp+-18)] = f1; + f3 = f12*f26; + f4 = heapFloat[(fp+-20)]; + f4 = f4+f5; + f5 = f29*f26; + f10 = heapFloat[(fp+-17)]; + f0 = f10+f0; + f10 = f9*f27; + f13 = heapFloat[(fp+-19)]; + f14 = heapFloat[(fp+-28)]; + f13 = f13+f14; + f14 = f12*f27; + f15 = heapFloat[(fp+-21)]; + f16 = heapFloat[(fp+-29)]; + f15 = f15+f16; + f16 = f29*f27; + f18 = heapFloat[(fp+-25)]; + f6 = f18+f6; + f9 = f9*f28; + f18 = heapFloat[(fp+-26)]; + f11 = f18+f11; + f12 = f12*f28; + f18 = heapFloat[(fp+-22)]; + f7 = f18+f7; + f18 = f29*f28; + f19 = heapFloat[(fp+-27)]; + f17 = f19+f17; + f19 = heapFloat[(r3+15)]; + f20 = heapFloat[(fp+-8)]; + f20 = f20+f25; + f21 = heapFloat[(r3+14)]; + f22 = heapFloat[(fp+-9)]; + f23 = heapFloat[(fp+-11)]; + f22 = f22+f23; + f23 = heapFloat[(r3+13)]; + f24 = heapFloat[(fp+-3)]; + f25 = heapFloat[(fp+-12)]; + f24 = f24+f25; + f25 = heapFloat[(fp+-4)]; + f25 = f30*f25; + f26 = heapFloat[(fp+-10)]; + f27 = heapFloat[(fp+-13)]; + f26 = f26+f27; + f27 = heapFloat[(fp+-6)]; + f27 = f30*f27; + f28 = heapFloat[(fp+-2)]; + f29 = heapFloat[(fp+-30)]; + f28 = f28+f29; + f29 = heapFloat[(fp+-5)]; + f29 = f30*f29; + r6 = heap32[(r5+6)]; + f30 = heapFloat[(fp+-7)]; + f30 = f30+f2; + heapFloat[(fp+-2)] = f30; + f30 = heapFloat[(fp+-15)]; + f30 = f30+f8; + heapFloat[(fp+-3)] = f30; + f30 = heapFloat[(fp+-16)]; + f1 = heapFloat[(fp+-1)]; + f1 = f30+f1; + heapFloat[(fp+-4)] = f1; + f1 = heapFloat[(fp+-14)]; + f30 = heapFloat[(fp+-23)]; + f1 = f1+f30; + f30 = heapFloat[(fp+-18)]; + f3 = f30+f3; + f4 = f4+f5; + f0 = f0+f10; + f5 = f13+f14; + f10 = f15+f16; + f6 = f6+f9; + f9 = f11+f12; + f7 = f7+f18; + f11 = f17+f19; + f12 = f20+f21; + f13 = f22+f23; + f14 = f24+f25; + f15 = f26+f27; + f16 = f28+f29; + r7 = heapU8[r0+720]; + if(r7 ==0) //_LBB596_64 +{ + r7 = heap32[(r5+2)]; + r7 = r7 >> 2; + heap32[(r7)] = 1065353216; + r7 = r6 << 2; + r8 = heap32[(r5+2)]; + r7 = (r7 + r8)|0; + r7 = r7 >> 2; + heap32[(r7+1)] = 1065353216; + r7 = r6 << 3; + r8 = heap32[(r5+2)]; + r7 = (r7 + r8)|0; + r7 = r7 >> 2; + heap32[(r7+2)] = 1065353216; + f2 = heapFloat[(r4+15)]; + f8 = heapFloat[(r4+14)]; + f17 = heapFloat[(r4+13)]; + heapFloat[(fp+-1)] = f17; +} + r7 = heap32[(r5+3)]; + r8 = r7 >> 2; + f17 = heapFloat[(fp+-3)]; + f8 = f17-f8; + f17 = heapFloat[(fp+-2)]; + f2 = f17-f2; + heap32[(r8)] = 0; + r9 = (r6 + 1)|0; + r10 = r6 << 2; + f17 = -f8; + heapFloat[(r8+1)] = f2; + r11 = (r6 + 2)|0; + r9 = r9 << 2; + r12 = (r7 + r10)|0; + heapFloat[(r8+2)] = f17; + r13 = (r6 + 3)|0; + r11 = r11 << 2; + r14 = (r7 + r9)|0; + r12 = r12 >> 2; + f2 = -f2; + heap32[(r8+3)] = 0; + r8 = r13 << 2; + r13 = (r7 + r11)|0; + r14 = r14 >> 2; + heapFloat[(r12)] = f2; + r12 = r6 << 3; + r15 = (r7 + r8)|0; + f17 = heapFloat[(fp+-4)]; + f2 = heapFloat[(fp+-1)]; + f2 = f17-f2; + r13 = r13 >> 2; + heap32[(r14)] = 0; + r14 = r12 | 4; + r16 = (r7 + r12)|0; + r15 = r15 >> 2; + heapFloat[(r13)] = f2; + r13 = (r12 + 8)|0; + r17 = (r7 + r14)|0; + r16 = r16 >> 2; + heap32[(r15)] = 0; + r15 = (r12 + 12)|0; + r18 = (r7 + r13)|0; + r17 = r17 >> 2; + f2 = -f2; + heapFloat[(r16)] = f8; + r7 = (r7 + r15)|0; + r16 = r18 >> 2; + heapFloat[(r17)] = f2; + r7 = r7 >> 2; + heap32[(r16)] = 0; + heap32[(r7)] = 0; + r7 = heap32[(r5+5)]; + f2 = heapFloat[(r3+15)]; + f8 = heapFloat[(r3+14)]; + f17 = heapFloat[(r3+13)]; + f2 = f11-f2; + r16 = r7 >> 2; + f18 = -f2; + heap32[(r16)] = 0; + f8 = f12-f8; + heapFloat[(r16+1)] = f18; + r17 = (r7 + r10)|0; + heapFloat[(r16+2)] = f8; + r9 = (r7 + r9)|0; + r17 = r17 >> 2; + heap32[(r16+3)] = 0; + f17 = f13-f17; + r11 = (r7 + r11)|0; + r9 = r9 >> 2; + heapFloat[(r17)] = f2; + r8 = (r7 + r8)|0; + r11 = r11 >> 2; + f2 = -f17; + heap32[(r9)] = 0; + r9 = (r7 + r12)|0; + r8 = r8 >> 2; + heapFloat[(r11)] = f2; + r11 = (r7 + r14)|0; + r9 = r9 >> 2; + f2 = -f8; + heap32[(r8)] = 0; + r8 = (r7 + r13)|0; + r11 = r11 >> 2; + heapFloat[(r9)] = f2; + r7 = (r7 + r15)|0; + r8 = r8 >> 2; + heapFloat[(r11)] = f17; + r7 = r7 >> 2; + heap32[(r8)] = 0; + heap32[(r7)] = 0; + f2 = heapFloat[(r5)]; + f8 = heapFloat[(r5+1)]; + f2 = f2*f8; + r7 = heapU8[r0+720]; +if(!(r7 !=0)) //_LBB596_67 +{ + r6 = r6 << 1; + r7 = heap32[(r5+7)]; + f8 = heapFloat[(fp+-4)]; + f8 = f13-f8; + r7 = r7 >> 2; + f8 = f8*f2; + heapFloat[(r7)] = f8; + r7 = heap32[(r5+7)]; + r7 = (r7 + r10)|0; + f8 = heapFloat[(fp+-3)]; + f8 = f12-f8; + r7 = r7 >> 2; + f8 = f8*f2; + heapFloat[(r7)] = f8; + r6 = r6 << 2; + r7 = heap32[(r5+7)]; + r6 = (r7 + r6)|0; + f8 = heapFloat[(fp+-2)]; + f8 = f11-f8; + r6 = r6 >> 2; + f8 = f8*f2; + heapFloat[(r6)] = f8; +} + r2 = (r2 + 4)|0; + r6 = heap32[(r5+6)]; + r7 = (r6 * 3)|0; + r8 = heap32[(r5+3)]; + r9 = r7 << 2; + r8 = (r8 + r9)|0; + r8 = r8 >> 2; + r10 = (r7 + 1)|0; + heapFloat[(r8)] = f7; + r8 = r10 << 2; + r10 = heap32[(r5+3)]; + r10 = (r10 + r8)|0; + r10 = r10 >> 2; + r7 = (r7 + 2)|0; + heapFloat[(r10)] = f10; + r7 = r7 << 2; + r10 = heap32[(r5+3)]; + r10 = (r10 + r7)|0; + r10 = r10 >> 2; + heapFloat[(r10)] = f4; + r6 = r6 << 4; + r10 = heap32[(r5+3)]; + r10 = (r10 + r6)|0; + r10 = r10 >> 2; + heapFloat[(r10)] = f9; + r10 = r6 | 4; + r11 = heap32[(r5+3)]; + r11 = (r11 + r10)|0; + r11 = r11 >> 2; + heapFloat[(r11)] = f5; + r11 = r6 | 8; + r12 = heap32[(r5+3)]; + r12 = (r12 + r11)|0; + r12 = r12 >> 2; + heapFloat[(r12)] = f3; + r12 = heap32[(r5+5)]; + r12 = (r12 + r9)|0; + r12 = r12 >> 2; + f8 = -f7; + heapFloat[(r12)] = f8; + r12 = heap32[(r5+5)]; + r8 = (r12 + r8)|0; + r8 = r8 >> 2; + f8 = -f10; + heapFloat[(r8)] = f8; + r8 = heap32[(r5+5)]; + r7 = (r8 + r7)|0; + r7 = r7 >> 2; + f8 = -f4; + heapFloat[(r7)] = f8; + r7 = heap32[(r5+5)]; + r7 = (r7 + r6)|0; + r7 = r7 >> 2; + f8 = -f9; + heapFloat[(r7)] = f8; + r7 = heap32[(r5+5)]; + r7 = (r7 + r10)|0; + r7 = r7 >> 2; + f8 = -f5; + heapFloat[(r7)] = f8; + r7 = heap32[(r5+5)]; + r7 = (r7 + r11)|0; + f8 = f0*f14; + f11 = f1*f15; + f12 = f1*f16; + f13 = f6*f14; + f8 = f8-f11; + f11 = f12-f13; + f12 = f6*f15; + f13 = f0*f16; + r7 = r7 >> 2; + f14 = -f3; + f12 = f12-f13; + heapFloat[(r7)] = f14; + f7 = f8*f7; + f10 = f11*f10; + r7 = heap32[(r5+7)]; + f7 = f7+f10; + f4 = f12*f4; + r7 = (r7 + r9)|0; + f4 = f7+f4; + r7 = r7 >> 2; + f4 = f4*f2; + heapFloat[(r7)] = f4; + f4 = f8*f9; + f5 = f11*f5; + r7 = heap32[(r5+7)]; + f4 = f4+f5; + f3 = f12*f3; + r6 = (r7 + r6)|0; + f3 = f4+f3; + r6 = r6 >> 2; + f2 = f3*f2; + heapFloat[(r6)] = f2; + r6 = heapU8[r0+722]; + if(r6 !=0) //_LBB596_69 +{ + f2 = heapFloat[(r1+176)]; + f3 = heapFloat[(r1+179)]; + f2 = f2*f3; + f3 = 0; + r6 = 1; + r7 = 2; + r6 = f2 > f3 ? r6 : r7; +} +else{ + f2 = 0; + r6 = 0; +} + r7 = heapU8[r0+721]; + r8 = 0; + r9 = r7 != r8; + r9 = r9 & 1; + r9 = r9 | r6; + if(r9 ==0) //_LBB596_59 +{ +__label__ = 54; +break _1; +} +else{ + r9 = heap32[(r5+6)]; + r9 = (r9 * 5)|0; + r10 = heap32[(r5+3)]; + r11 = r9 << 2; + r10 = (r10 + r11)|0; + r10 = r10 >> 2; + r12 = (r9 + 1)|0; + heapFloat[(r10)] = f6; + r10 = r12 << 2; + r12 = heap32[(r5+3)]; + r12 = (r12 + r10)|0; + r12 = r12 >> 2; + r9 = (r9 + 2)|0; + heapFloat[(r12)] = f0; + r9 = r9 << 2; + r12 = heap32[(r5+3)]; + r12 = (r12 + r9)|0; + r12 = r12 >> 2; + heapFloat[(r12)] = f1; + r12 = heap32[(r5+5)]; + r12 = (r12 + r11)|0; + r12 = r12 >> 2; + f3 = -f6; + heapFloat[(r12)] = f3; + r12 = heap32[(r5+5)]; + r10 = (r12 + r10)|0; + r10 = r10 >> 2; + f3 = -f0; + heapFloat[(r10)] = f3; + r10 = heap32[(r5+5)]; + r9 = (r10 + r9)|0; + r9 = r9 >> 2; + f3 = -f1; + heapFloat[(r9)] = f3; + r9 = heap32[(r5+7)]; + r9 = (r9 + r11)|0; + f3 = heapFloat[(r1+172)]; + f4 = heapFloat[(r1+173)]; + r9 = r9 >> 2; + heap32[(r9)] = 0; + r9 = r6 != r8; + r10 = f3 == f4; + r12 = heap32[(r1+183)]; + r9 = r9 & r10; + r10 = r12 & 2; + if(r10 !=0) //_LBB596_73 +{ + r2 = (r0 + 744)|0; +} + r2 = r2 >> 2; + f5 = heapFloat[(r2)]; + r2 = r7 == r8; + r2 = r9 | r2; +if(!(r2 != 0)) //_LBB596_91 +{ + r2 = r12 & 4; +if(!(r2 ==0)) //_LBB596_77 +{ + r2 = heap32[(r5+8)]; + r2 = (r2 + r11)|0; + r2 = r2 >> 2; + heap32[(r2)] = heap32[(r1+184)]; +} + f7 = 1; + f8 = 0; + f9 = heapFloat[(r1+167)]; +_24: do { + if(f3 =f8) //_LBB596_84 +{ + if(f11 >f8) //_LBB596_86 +{ +if(!(f10 >f4)) //_LBB596_89 +{ + f8 = f4-f11; +if(!(f8 >=f10)) //_LBB596_89 +{ + f7 = f4-f10; + f8 = f7/f11; +break _24; +} +} + f8 = 0; + f8 = f10 > f4 ? f8 : f7; +} +else{ +break _24; +} +} +else{ +if(!(f10 f4 ? f7 : f8; +} +} while(0); + r2 = heap32[(r5+7)]; + r2 = (r2 + r11)|0; + r2 = r2 >> 2; + f7 = f9*f8; + f8 = heapFloat[(r1+179)]; + f9 = heapFloat[(r2)]; + f7 = f7*f8; + f7 = f9+f7; + heapFloat[(r2)] = f7; + r2 = heap32[(r5+9)]; + f7 = heapFloat[(r1+168)]; + r2 = (r2 + r11)|0; + r2 = r2 >> 2; + f7 = -f7; + heapFloat[(r2)] = f7; + r2 = heap32[(r5+10)]; + r2 = (r2 + r11)|0; + r2 = r2 >> 2; + heap32[(r2)] = heap32[(r1+168)]; +} + if(r6 ==0) //_LBB596_59 +{ +__label__ = 54; +break _1; +} +else{ + r2 = heap32[(r5+7)]; + r2 = (r2 + r11)|0; + f7 = heapFloat[(r5)]; + r2 = r2 >> 2; + f5 = f7*f5; + f7 = heapFloat[(r2)]; + f2 = f5*f2; + f2 = f7+f2; + heapFloat[(r2)] = f2; + r0 = heapU8[r0+732]; + r0 = r0 & 1; +if(!(r0 ==0)) //_LBB596_94 +{ + r0 = heap32[(r5+8)]; + r0 = (r0 + r11)|0; + r0 = r0 >> 2; + heap32[(r0)] = heap32[(r1+185)]; +} + if(f3 !=f4) //_LBB596_96 +{ + r0 = heap32[(r5+9)]; + if(r6 !=1) //_LBB596_98 +{ + r0 = (r0 + r11)|0; + r0 = r0 >> 2; + heap32[(r0)] = -8388609; + r0 = heap32[(r5+10)]; + r0 = (r0 + r11)|0; + r0 = r0 >> 2; + heap32[(r0)] = 0; +} +else{ + r0 = (r0 + r11)|0; + r0 = r0 >> 2; + heap32[(r0)] = 0; + r0 = heap32[(r5+10)]; + r0 = (r0 + r11)|0; + r0 = r0 >> 2; + heap32[(r0)] = 2139095039; +} +} +else{ + r0 = heap32[(r5+9)]; + r0 = (r0 + r11)|0; + r0 = r0 >> 2; + heap32[(r0)] = -8388609; + r0 = heap32[(r5+10)]; + r0 = (r0 + r11)|0; + r0 = r0 >> 2; + heap32[(r0)] = 2139095039; +} + f2 = heapFloat[(r1+171)]; + f3 = 0; + if(f2 <=f3) //_LBB596_107 +{ +__label__ = 53; +break _1; +} +else{ + f4 = heapFloat[(r4+80)]; + f5 = heapFloat[(r3+80)]; + f7 = heapFloat[(r4+81)]; + f8 = heapFloat[(r3+81)]; + f4 = f4*f6; + f7 = f7*f0; + f9 = heapFloat[(r4+82)]; + f10 = heapFloat[(r3+82)]; + f5 = f5*f6; + f0 = f8*f0; + f4 = f4+f7; + f6 = f9*f1; + f0 = f5+f0; + f1 = f10*f1; + f4 = f4+f6; + f0 = f0+f1; + f0 = f4-f0; + if(r6 !=1) //_LBB596_104 +{ + if(f0 <=f3) //_LBB596_107 +{ +__label__ = 53; +break _1; +} +else{ + r0 = heap32[(r5+7)]; + f1 = -f2; + r0 = (r0 + r11)|0; + f0 = f0*f1; + r0 = r0 >> 2; + f1 = heapFloat[(r0)]; + if(f1 <=f0) //_LBB596_107 +{ +__label__ = 53; +break _1; +} +else{ + heapFloat[(r0)] = f0; +__label__ = 53; +break _1; +} +} +} +else{ + if(f0 >=f3) //_LBB596_107 +{ +__label__ = 53; +break _1; +} +else{ + r0 = heap32[(r5+7)]; + f2 = -f2; + r0 = (r0 + r11)|0; + f0 = f0*f2; + r0 = r0 >> 2; + f2 = heapFloat[(r0)]; + if(f2 >=f0) //_LBB596_107 +{ +__label__ = 53; +break _1; +} +else{ + heapFloat[(r0)] = f0; +__label__ = 53; +break _1; +} +} +} +} +} +} +} +else{ + r0 = _2E_str1149; + r1 = _2E_str231; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 331; + _assert(i7); +} +} +else{ + r5 = r5 & 255; + if(r5 ==0) //_LBB596_3 +{ + r4 = r4 >> 2; + r3 = r3 >> 2; + f0 = heapFloat[(r3+9)]; + heapFloat[(fp+-5)] = f0; + f1 = heapFloat[(r1+163)]; + f0 = heapFloat[(r3+5)]; + heapFloat[(fp+-6)] = f0; + f2 = heapFloat[(r3+1)]; + heapFloat[(fp+-4)] = f2; + f0 = heapFloat[(r3+10)]; + heapFloat[(fp+-7)] = f0; + f2 = heapFloat[(r1+164)]; + f0 = heapFloat[(r3+6)]; + heapFloat[(fp+-8)] = f0; + f3 = heapFloat[(r3+2)]; + heapFloat[(fp+-9)] = f3; + f4 = heapFloat[(r4+9)]; + f5 = heapFloat[(r1+147)]; + f6 = heapFloat[(r4+5)]; + f7 = heapFloat[(r4+1)]; + f8 = heapFloat[(r4+10)]; + f9 = heapFloat[(r1+148)]; + f10 = heapFloat[(r4+6)]; + f11 = heapFloat[(r4+2)]; + f0 = heapFloat[(fp+-5)]; + f12 = f0*f1; + f0 = heapFloat[(fp+-7)]; + f13 = f0*f2; + f14 = heapFloat[(r3+11)]; + heapFloat[(fp+-2)] = f14; + f15 = heapFloat[(r1+165)]; + f16 = heapFloat[(r3+7)]; + heapFloat[(fp+-3)] = f16; + f17 = heapFloat[(r3+3)]; + heapFloat[(fp+-1)] = f17; + f18 = f4*f5; + f19 = f8*f9; + f20 = heapFloat[(r4+11)]; + f21 = heapFloat[(r1+149)]; + f22 = heapFloat[(r4+7)]; + f23 = heapFloat[(r4+3)]; + f0 = heapFloat[(fp+-6)]; + f24 = f0*f1; + f0 = heapFloat[(fp+-8)]; + f25 = f0*f2; + f26 = f6*f5; + f27 = f10*f9; + f28 = heapFloat[(fp+-4)]; + f1 = f28*f1; + f2 = f3*f2; + f5 = f7*f5; + f9 = f11*f9; + f29 = heapFloat[(r1+137)]; + f30 = heapFloat[(r1+141)]; + f0 = heapFloat[(r1+136)]; + f3 = heapFloat[(r1+140)]; + f14 = heapFloat[(r1+153)]; + f16 = heapFloat[(r1+157)]; + f12 = f12+f13; + heapFloat[(fp+-14)] = f12; + f13 = heapFloat[(fp+-2)]; + f17 = f13*f15; + f18 = f18+f19; + f19 = f20*f21; + f24 = f24+f25; + f25 = heapFloat[(fp+-3)]; + f28 = f25*f15; + f26 = f26+f27; + f27 = f22*f21; + f1 = f1+f2; + heapFloat[(fp+-10)] = f1; + f2 = heapFloat[(fp+-1)]; + f15 = f2*f15; + f5 = f5+f9; + heapFloat[(fp+-12)] = f5; + f9 = f23*f21; + f21 = heapFloat[(r1+145)]; + f1 = heapFloat[(r1+144)]; + f2 = heapFloat[(r1+161)]; + f5 = heapFloat[(r3+84)]; + f12 = heapFloat[(r4+84)]; + f13 = 1.1920928955078125e-007; + heapFloat[(fp+-11)] = f13; + f25 = f29*f4; + heapFloat[(fp+-13)] = f25; + f25 = f30*f8; + f4 = f0*f4; + heapFloat[(fp+-16)] = f4; + f8 = f3*f8; + f4 = f29*f6; + heapFloat[(fp+-15)] = f4; + f4 = f30*f10; + f6 = f0*f6; + heapFloat[(fp+-18)] = f6; + f10 = f3*f10; + f29 = f29*f7; + f30 = f30*f11; + f0 = f0*f7; + heapFloat[(fp+-17)] = f0; + f3 = f3*f11; + f7 = heapFloat[(fp+-5)]; + f0 = f14*f7; + heapFloat[(fp+-19)] = f0; + f6 = heapFloat[(fp+-7)]; + f6 = f16*f6; + f7 = heapFloat[(fp+-6)]; + f7 = f14*f7; + heapFloat[(fp+-5)] = f7; + f11 = heapFloat[(fp+-8)]; + f11 = f16*f11; + f0 = heapFloat[(fp+-4)]; + f0 = f14*f0; + heapFloat[(fp+-4)] = f0; + f14 = heapFloat[(fp+-9)]; + f14 = f16*f14; + f16 = heapFloat[(fp+-14)]; + f16 = f16+f17; + f17 = heapFloat[(r3+15)]; + f18 = f18+f19; + f19 = heapFloat[(r4+15)]; + f24 = f24+f28; + f28 = heapFloat[(r3+14)]; + f26 = f26+f27; + f27 = heapFloat[(r4+14)]; + f0 = heapFloat[(fp+-10)]; + f0 = f0+f15; + f15 = heapFloat[(r3+13)]; + f7 = heapFloat[(fp+-12)]; + f7 = f7+f9; + f9 = heapFloat[(r4+13)]; + r5 = r2 >> 2; + f16 = f16+f17; + f17 = f18+f19; + f18 = f24+f28; + f19 = f26+f27; + f0 = f0+f15; + f7 = f7+f9; + f9 = heapFloat[(fp+-13)]; + f9 = f9+f25; + f15 = f21*f20; + f24 = heapFloat[(fp+-16)]; + f8 = f24+f8; + f20 = f1*f20; + f24 = heapFloat[(fp+-15)]; + f4 = f24+f4; + f24 = f21*f22; + f25 = heapFloat[(fp+-18)]; + f10 = f25+f10; + f22 = f1*f22; + f25 = f29+f30; + f21 = f21*f23; + f26 = heapFloat[(fp+-17)]; + f3 = f26+f3; + f1 = f1*f23; + f23 = heapFloat[(fp+-19)]; + f6 = f23+f6; + f23 = heapFloat[(fp+-2)]; + f23 = f2*f23; + f26 = heapFloat[(fp+-5)]; + f11 = f26+f11; + f26 = heapFloat[(fp+-3)]; + f26 = f2*f26; + f27 = heapFloat[(fp+-4)]; + f14 = f27+f14; + f27 = heapFloat[(fp+-1)]; + f2 = f2*f27; + r6 = f12 < f13; + r7 = f5 < f13; + f12 = f12+f5; + r8 = heap32[(r5+6)]; + f9 = f9+f15; + heapFloat[(fp+-3)] = f9; + f8 = f8+f20; + f4 = f4+f24; + heapFloat[(fp+-2)] = f4; + f4 = f10+f22; + f9 = f25+f21; + heapFloat[(fp+-4)] = f9; + f1 = f3+f1; + f3 = f6+f23; + heapFloat[(fp+-7)] = f3; + f3 = f11+f26; + heapFloat[(fp+-6)] = f3; + f2 = f14+f2; + heapFloat[(fp+-5)] = f2; + f2 = f16-f17; + heapFloat[(fp+-8)] = f2; + f2 = f18-f19; + heapFloat[(fp+-9)] = f2; + f2 = f0-f7; + heapFloat[(fp+-10)] = f2; + r6 = r6 | r7; + f2 = 0; + if(f12 >f2) //_LBB596_5 +{ + f5 = f5/f12; +} +else{ + f5 = 0.5; +} + f3 = 1; + heapFloat[(fp+-1)] = f3; + f6 = f3-f5; + f9 = heapFloat[(fp+-4)]; + f9 = f9*f5; + f10 = heapFloat[(fp+-5)]; + f10 = f10*f6; + f11 = heapFloat[(fp+-2)]; + f11 = f11*f5; + f12 = heapFloat[(fp+-6)]; + f12 = f12*f6; + f9 = f9+f10; + f10 = f11+f12; + f11 = heapFloat[(fp+-3)]; + f11 = f11*f5; + f12 = heapFloat[(fp+-7)]; + f12 = f12*f6; + f11 = f11+f12; + f12 = f9*f9; + f13 = f10*f10; + f12 = f12+f13; + f13 = f11*f11; + f12 = f12+f13; + heapFloat[(g0)] = f12; + sqrtf(i7); + f3 = f3/f_g0; + f12 = heapFloat[(r3+13)]; + f13 = heapFloat[(r3+14)]; + f14 = heapFloat[(r4+13)]; + f15 = heapFloat[(r4+14)]; + f9 = f9*f3; + f0 = f0-f12; + f7 = f7-f14; + f10 = f10*f3; + f12 = f18-f13; + f13 = f19-f15; + f14 = heapFloat[(r3+15)]; + f15 = heapFloat[(r4+15)]; + f3 = f11*f3; + f11 = f16-f14; + f14 = f17-f15; + f15 = f0*f9; + f16 = f12*f10; + f17 = f7*f9; + f18 = f13*f10; + f15 = f15+f16; + f16 = f11*f3; + f17 = f17+f18; + f18 = f14*f3; + f15 = f15+f16; + f16 = f17+f18; + f17 = f10*f15; + f18 = f10*f16; + f19 = f9*f15; + f20 = f9*f16; + f15 = f3*f15; + f16 = f3*f16; + f12 = f12-f17; + f13 = f13-f18; + f0 = f0-f19; + f7 = f7-f20; + f11 = f11-f15; + f14 = f14-f16; + f21 = f12*f5; + f22 = f13*f6; + f23 = f0*f5; + f24 = f7*f6; + f21 = f21+f22; + f22 = f23+f24; + f23 = f11*f5; + f24 = f14*f6; + f15 = f16-f15; + f16 = f18-f17; + f17 = f20-f19; + f18 = f23+f24; + f19 = f22*f22; + f20 = f21*f21; + f23 = f15*f5; + f24 = f16*f5; + f25 = f17*f5; + f15 = f15*f6; + f16 = f16*f6; + f17 = f17*f6; + f19 = f19+f20; + f20 = f18*f18; + f19 = f19+f20; + r7 = r8 << 1; + f14 = f14+f23; + f13 = f13+f24; + f7 = f7+f25; + f11 = f11-f15; + f12 = f12-f16; + f0 = f0-f17; + f15 = heapFloat[(fp+-11)]; + if(f19 >f15) //_LBB596_8 +{ + heapFloat[(g0)] = f19; + sqrtf(i7); + f4 = heapFloat[(fp+-1)]; + f8 = f4/f_g0; + f1 = f22*f8; + f4 = f21*f8; + f8 = f18*f8; +} + r9 = heap32[(r5+3)]; + f15 = f13*f8; + f16 = f14*f4; + r9 = r9 >> 2; + f15 = f15-f16; + heapFloat[(r9)] = f15; + r9 = heap32[(r5+3)]; + f15 = f14*f1; + f16 = f7*f8; + r9 = r9 >> 2; + f15 = f15-f16; + heapFloat[(r9+1)] = f15; + r9 = heap32[(r5+3)]; + f15 = f7*f4; + f16 = f13*f1; + r9 = r9 >> 2; + f15 = f15-f16; + heapFloat[(r9+2)] = f15; + f15 = f12*f8; + f16 = f11*f4; + f15 = f15-f16; + r9 = heap32[(r5+5)]; + r9 = r9 >> 2; + f15 = -f15; + heapFloat[(r9)] = f15; + f15 = f11*f1; + f16 = f0*f8; + f15 = f15-f16; + r9 = heap32[(r5+5)]; + f16 = f10*f8; + f17 = f3*f4; + f18 = f9*f4; + f19 = f10*f1; + f20 = f3*f1; + f21 = f9*f8; + r9 = r9 >> 2; + f15 = -f15; + f16 = f16-f17; + f17 = f18-f19; + f18 = f20-f21; + heapFloat[(r9+1)] = f15; + f15 = f0*f4; + f19 = f12*f1; + f15 = f15-f19; + r9 = heap32[(r5+5)]; + f19 = f7*f18; + f20 = f13*f16; + f21 = f14*f16; + f22 = f7*f17; + f23 = f13*f17; + f24 = f14*f18; + f25 = f0*f18; + f26 = f12*f16; + f27 = f11*f16; + f28 = f0*f17; + f29 = f12*f17; + f30 = f11*f18; + f19 = f19-f20; + f20 = f21-f22; + f21 = f23-f24; + f22 = f25-f26; + f23 = f27-f28; + f24 = f29-f30; + r9 = r9 >> 2; + f15 = -f15; + heapFloat[(r9+2)] = f15; + if(r6 != 0) //_LBB596_11 +{ + r9 = heapU8[r0+722]; +if(!(r9 ==0)) //_LBB596_10 +{ + f24 = f24*f6; + f23 = f23*f6; + f22 = f22*f6; + f21 = f21*f5; + f20 = f20*f5; + f19 = f19*f5; +} +} + r9 = r8 << 2; + r10 = heap32[(r5+3)]; + r10 = (r10 + r9)|0; + r10 = r10 >> 2; + r11 = (r8 + 1)|0; + heapFloat[(r10)] = f21; + r10 = r11 << 2; + r11 = heap32[(r5+3)]; + r11 = (r11 + r10)|0; + r11 = r11 >> 2; + r12 = (r8 + 2)|0; + heapFloat[(r11)] = f20; + r11 = r12 << 2; + r12 = heap32[(r5+3)]; + r12 = (r12 + r11)|0; + r12 = r12 >> 2; + heapFloat[(r12)] = f19; + r12 = heap32[(r5+5)]; + r12 = (r12 + r9)|0; + r12 = r12 >> 2; + f15 = -f24; + heapFloat[(r12)] = f15; + r12 = heap32[(r5+5)]; + r10 = (r12 + r10)|0; + r10 = r10 >> 2; + f15 = -f23; + heapFloat[(r10)] = f15; + r10 = heap32[(r5+5)]; + r10 = (r10 + r11)|0; + f15 = f7*f10; + f19 = f13*f9; + f20 = f14*f9; + f7 = f7*f3; + f13 = f13*f3; + f14 = f14*f10; + f21 = f0*f10; + f23 = f12*f9; + f24 = f11*f9; + f0 = f0*f3; + f12 = f12*f3; + f11 = f11*f10; + f15 = f15-f19; + f7 = f20-f7; + f13 = f13-f14; + f14 = f21-f23; + f0 = f24-f0; + f11 = f12-f11; + r10 = r10 >> 2; + f12 = -f22; + heapFloat[(r10)] = f12; + if(r6 != 0) //_LBB596_15 +{ + f11 = f11*f6; + f0 = f0*f6; + f14 = f14*f6; + f13 = f13*f5; + f7 = f7*f5; + f15 = f15*f5; +} + r6 = r7 << 2; + r10 = heap32[(r5+3)]; + r10 = (r10 + r6)|0; + r10 = r10 >> 2; + r11 = r7 | 1; + heapFloat[(r10)] = f13; + r10 = r11 << 2; + r11 = heap32[(r5+3)]; + r11 = (r11 + r10)|0; + r11 = r11 >> 2; + r7 = (r7 + 2)|0; + heapFloat[(r11)] = f7; + r7 = r7 << 2; + r11 = heap32[(r5+3)]; + r11 = (r11 + r7)|0; + r11 = r11 >> 2; + heapFloat[(r11)] = f15; + r11 = heap32[(r5+5)]; + r11 = (r11 + r6)|0; + r11 = r11 >> 2; + f5 = -f11; + heapFloat[(r11)] = f5; + r11 = heap32[(r5+5)]; + r11 = (r11 + r10)|0; + r11 = r11 >> 2; + f0 = -f0; + heapFloat[(r11)] = f0; + r11 = heap32[(r5+5)]; + r7 = (r11 + r7)|0; + r7 = r7 >> 2; + f0 = -f14; + heapFloat[(r7)] = f0; + r7 = heapU8[r0+720]; +if(!(r7 !=0)) //_LBB596_18 +{ + f0 = heapFloat[(r5)]; + f5 = heapFloat[(r5+1)]; + f0 = f0*f5; + r7 = heap32[(r5+2)]; + r7 = r7 >> 2; + heapFloat[(r7)] = f1; + r7 = heap32[(r5+2)]; + r7 = r7 >> 2; + heapFloat[(r7+1)] = f4; + r7 = heap32[(r5+2)]; + r7 = r7 >> 2; + heapFloat[(r7+2)] = f8; + r7 = heap32[(r5+2)]; + r7 = (r7 + r9)|0; + r7 = r7 >> 2; + heapFloat[(r7)] = f16; + r7 = heap32[(r5+2)]; + r7 = (r7 + r9)|0; + r7 = r7 >> 2; + heapFloat[(r7+1)] = f18; + r7 = heap32[(r5+2)]; + r7 = (r7 + r9)|0; + r7 = r7 >> 2; + heapFloat[(r7+2)] = f17; + r7 = heap32[(r5+2)]; + r7 = (r7 + r6)|0; + r7 = r7 >> 2; + heapFloat[(r7)] = f9; + r7 = heap32[(r5+2)]; + r7 = (r7 + r10)|0; + r7 = r7 >> 2; + heapFloat[(r7)] = f10; + r7 = heap32[(r5+2)]; + r7 = (r7 + r6)|0; + r7 = r7 >> 2; + f5 = heapFloat[(fp+-10)]; + f6 = f1*f5; + f7 = heapFloat[(fp+-9)]; + f11 = f4*f7; + heapFloat[(r7+2)] = f3; + f6 = f6+f11; + f11 = heapFloat[(fp+-8)]; + f12 = f8*f11; + r7 = heap32[(r5+7)]; + f6 = f6+f12; + r7 = r7 >> 2; + f6 = f6*f0; + heapFloat[(r7)] = f6; + f6 = f16*f5; + f12 = f18*f7; + r7 = heap32[(r5+7)]; + f6 = f6+f12; + f12 = f17*f11; + r7 = (r7 + r9)|0; + f6 = f6+f12; + r7 = r7 >> 2; + f6 = f6*f0; + heapFloat[(r7)] = f6; + f5 = f9*f5; + f6 = f10*f7; + r7 = heap32[(r5+7)]; + f5 = f5+f6; + f6 = f3*f11; + r6 = (r7 + r6)|0; + f5 = f5+f6; + r6 = r6 >> 2; + f0 = f5*f0; + heapFloat[(r6)] = f0; +} + r2 = (r2 + 4)|0; + r6 = (r8 * 3)|0; + r7 = r6 << 2; + r9 = heap32[(r5+3)]; + r9 = (r9 + r7)|0; + r9 = r9 >> 2; + r10 = (r6 + 1)|0; + heapFloat[(r9)] = f1; + r9 = r10 << 2; + r10 = heap32[(r5+3)]; + r10 = (r10 + r9)|0; + r10 = r10 >> 2; + r6 = (r6 + 2)|0; + heapFloat[(r10)] = f4; + r6 = r6 << 2; + r10 = heap32[(r5+3)]; + r10 = (r10 + r6)|0; + r10 = r10 >> 2; + heapFloat[(r10)] = f8; + r8 = r8 << 4; + r10 = heap32[(r5+3)]; + r10 = (r10 + r8)|0; + r10 = r10 >> 2; + heapFloat[(r10)] = f16; + r10 = r8 | 4; + r11 = heap32[(r5+3)]; + r11 = (r11 + r10)|0; + r11 = r11 >> 2; + heapFloat[(r11)] = f18; + r11 = r8 | 8; + r12 = heap32[(r5+3)]; + r12 = (r12 + r11)|0; + r12 = r12 >> 2; + heapFloat[(r12)] = f17; + r12 = heap32[(r5+5)]; + r12 = (r12 + r7)|0; + r12 = r12 >> 2; + f0 = -f1; + heapFloat[(r12)] = f0; + r12 = heap32[(r5+5)]; + r9 = (r12 + r9)|0; + r9 = r9 >> 2; + f0 = -f4; + heapFloat[(r9)] = f0; + r9 = heap32[(r5+5)]; + r6 = (r9 + r6)|0; + r6 = r6 >> 2; + f0 = -f8; + heapFloat[(r6)] = f0; + r6 = heap32[(r5+5)]; + r6 = (r6 + r8)|0; + r6 = r6 >> 2; + f0 = -f16; + heapFloat[(r6)] = f0; + r6 = heap32[(r5+5)]; + r6 = (r6 + r10)|0; + r6 = r6 >> 2; + f0 = -f18; + heapFloat[(r6)] = f0; + r6 = heap32[(r5+5)]; + r6 = (r6 + r11)|0; + f5 = heapFloat[(fp+-7)]; + f0 = heapFloat[(fp+-2)]; + f6 = f0*f5; + f11 = heapFloat[(fp+-6)]; + f7 = heapFloat[(fp+-3)]; + f12 = f7*f11; + f13 = heapFloat[(fp+-5)]; + f7 = f7*f13; + f14 = heapFloat[(fp+-4)]; + f5 = f14*f5; + f6 = f6-f12; + f5 = f7-f5; + f7 = f14*f11; + f0 = f0*f13; + r6 = r6 >> 2; + f11 = -f17; + heapFloat[(r6)] = f11; + f0 = f7-f0; + f1 = f6*f1; + f4 = f5*f4; + r6 = heap32[(r5+7)]; + f1 = f1+f4; + f4 = f0*f8; + f7 = heapFloat[(r5)]; + f8 = heapFloat[(r5+1)]; + r6 = (r6 + r7)|0; + f1 = f1+f4; + f4 = f7*f8; + r6 = r6 >> 2; + f1 = f1*f4; + heapFloat[(r6)] = f1; + f1 = f6*f16; + f5 = f5*f18; + r6 = heap32[(r5+7)]; + f1 = f1+f5; + f0 = f0*f17; + r6 = (r6 + r8)|0; + f0 = f1+f0; + r6 = r6 >> 2; + f0 = f0*f4; + heapFloat[(r6)] = f0; + r6 = heapU8[r0+722]; + if(r6 !=0) //_LBB596_20 +{ + f0 = heapFloat[(r1+176)]; + f1 = heapFloat[(r1+179)]; + f0 = f0*f1; + r6 = 1; + r7 = 2; + r6 = f0 > f2 ? r6 : r7; +} +else{ + f0 = 0; + r6 = 0; +} + r7 = heapU8[r0+721]; + r8 = 0; + r9 = r7 != r8; + r9 = r9 & 1; + r9 = r9 | r6; + if(r9 ==0) //_LBB596_59 +{ +__label__ = 54; +} +else{ + r9 = heap32[(r5+6)]; + r9 = (r9 * 5)|0; + r10 = heap32[(r5+3)]; + r11 = r9 << 2; + r10 = (r10 + r11)|0; + r10 = r10 >> 2; + r12 = (r9 + 1)|0; + heapFloat[(r10)] = f9; + r10 = r12 << 2; + r12 = heap32[(r5+3)]; + r12 = (r12 + r10)|0; + r12 = r12 >> 2; + r9 = (r9 + 2)|0; + heapFloat[(r12)] = f10; + r9 = r9 << 2; + r12 = heap32[(r5+3)]; + r12 = (r12 + r9)|0; + r12 = r12 >> 2; + heapFloat[(r12)] = f3; + r12 = heap32[(r5+5)]; + r12 = (r12 + r11)|0; + r12 = r12 >> 2; + f1 = -f9; + heapFloat[(r12)] = f1; + r12 = heap32[(r5+5)]; + r10 = (r12 + r10)|0; + r10 = r10 >> 2; + f1 = -f10; + heapFloat[(r10)] = f1; + r10 = heap32[(r5+5)]; + r9 = (r10 + r9)|0; + r9 = r9 >> 2; + f1 = -f3; + heapFloat[(r9)] = f1; + r9 = heap32[(r5+7)]; + r9 = (r9 + r11)|0; + f1 = heapFloat[(r1+172)]; + f4 = heapFloat[(r1+173)]; + r9 = r9 >> 2; + heap32[(r9)] = 0; + r9 = r6 != r8; + r10 = f1 == f4; + r12 = heap32[(r1+183)]; + r9 = r9 & r10; + r10 = r12 & 2; + if(r10 !=0) //_LBB596_24 +{ + r2 = (r0 + 744)|0; +} + r2 = r2 >> 2; + f5 = heapFloat[(r2)]; + r2 = r7 == r8; + r2 = r9 | r2; +if(!(r2 != 0)) //_LBB596_42 +{ + r2 = r12 & 4; +if(!(r2 ==0)) //_LBB596_28 +{ + r2 = heap32[(r5+8)]; + r2 = (r2 + r11)|0; + r2 = r2 >> 2; + heap32[(r2)] = heap32[(r1+184)]; +} + f6 = heapFloat[(r1+167)]; +_94: do { + if(f1 =f2) //_LBB596_35 +{ + if(f8 >f2) //_LBB596_37 +{ +if(!(f7 >f4)) //_LBB596_40 +{ + f2 = f4-f8; +if(!(f2 >=f7)) //_LBB596_40 +{ + f2 = f4-f7; + f2 = f2/f8; +break _94; +} +} + f2 = 0; + f8 = heapFloat[(fp+-1)]; + f2 = f7 > f4 ? f2 : f8; +} +else{ +break _94; +} +} +else{ +if(!(f7 f4 ? f7 : f2; +} +} while(0); + r2 = heap32[(r5+7)]; + r2 = (r2 + r11)|0; + r2 = r2 >> 2; + f2 = f6*f2; + f6 = heapFloat[(r1+179)]; + f7 = heapFloat[(r2)]; + f2 = f2*f6; + f2 = f7+f2; + heapFloat[(r2)] = f2; + r2 = heap32[(r5+9)]; + f2 = heapFloat[(r1+168)]; + r2 = (r2 + r11)|0; + r2 = r2 >> 2; + f2 = -f2; + heapFloat[(r2)] = f2; + r2 = heap32[(r5+10)]; + r2 = (r2 + r11)|0; + r2 = r2 >> 2; + heap32[(r2)] = heap32[(r1+168)]; +} + if(r6 ==0) //_LBB596_59 +{ +__label__ = 54; +} +else{ + r2 = heap32[(r5+7)]; + r2 = (r2 + r11)|0; + f2 = heapFloat[(r5)]; + r2 = r2 >> 2; + f2 = f2*f5; + f5 = heapFloat[(r2)]; + f0 = f2*f0; + f0 = f5+f0; + heapFloat[(r2)] = f0; + r0 = heapU8[r0+732]; + r0 = r0 & 1; +if(!(r0 ==0)) //_LBB596_45 +{ + r0 = heap32[(r5+8)]; + r0 = (r0 + r11)|0; + r0 = r0 >> 2; + heap32[(r0)] = heap32[(r1+185)]; +} + if(f1 !=f4) //_LBB596_47 +{ + r0 = heap32[(r5+9)]; + if(r6 !=1) //_LBB596_49 +{ + r0 = (r0 + r11)|0; + r0 = r0 >> 2; + heap32[(r0)] = -8388609; + r0 = heap32[(r5+10)]; + r0 = (r0 + r11)|0; + r0 = r0 >> 2; + heap32[(r0)] = 0; +} +else{ + r0 = (r0 + r11)|0; + r0 = r0 >> 2; + heap32[(r0)] = 0; + r0 = heap32[(r5+10)]; + r0 = (r0 + r11)|0; + r0 = r0 >> 2; + heap32[(r0)] = 2139095039; +} +} +else{ + r0 = heap32[(r5+9)]; + r0 = (r0 + r11)|0; + r0 = r0 >> 2; + heap32[(r0)] = -8388609; + r0 = heap32[(r5+10)]; + r0 = (r0 + r11)|0; + r0 = r0 >> 2; + heap32[(r0)] = 2139095039; +} + f0 = heapFloat[(r1+171)]; + f1 = 0; + if(f0 <=f1) //_LBB596_58 +{ +__label__ = 53; +} +else{ + f2 = heapFloat[(r4+80)]; + f4 = heapFloat[(r3+80)]; + f5 = heapFloat[(r4+81)]; + f6 = heapFloat[(r3+81)]; + f2 = f2*f9; + f5 = f5*f10; + f7 = heapFloat[(r4+82)]; + f8 = heapFloat[(r3+82)]; + f4 = f4*f9; + f6 = f6*f10; + f2 = f2+f5; + f5 = f7*f3; + f4 = f4+f6; + f3 = f8*f3; + f2 = f2+f5; + f3 = f4+f3; + f2 = f2-f3; + if(r6 !=1) //_LBB596_55 +{ + if(f2 <=f1) //_LBB596_58 +{ +__label__ = 53; +} +else{ + r0 = heap32[(r5+7)]; + f0 = -f0; + r0 = (r0 + r11)|0; + f0 = f2*f0; + r0 = r0 >> 2; + f1 = heapFloat[(r0)]; + if(f1 <=f0) //_LBB596_58 +{ +__label__ = 53; +} +else{ + heapFloat[(r0)] = f0; +__label__ = 53; +} +} +} +else{ + if(f2 >=f1) //_LBB596_58 +{ +__label__ = 53; +} +else{ + r0 = heap32[(r5+7)]; + f0 = -f0; + r0 = (r0 + r11)|0; + f0 = f2*f0; + r0 = r0 >> 2; + f1 = heapFloat[(r0)]; + if(f1 >=f0) //_LBB596_58 +{ +__label__ = 53; +} +else{ + heapFloat[(r0)] = f0; +__label__ = 53; +} +} +} +} +} +} +} +else{ + r0 = _2E_str1149; + r1 = _2E_str231; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 682; + _assert(i7); +} +} +} while(0); +if (__label__ == 53){ + r0 = heap32[(r5+7)]; + r0 = (r0 + r11)|0; + r0 = r0 >> 2; + f0 = heapFloat[(r0)]; + f1 = heapFloat[(r1+170)]; + f0 = f0*f1; + heapFloat[(r0)] = f0; +} + return; +} + +function _ZN17btHingeConstraint8setParamEifi(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var f0; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+3)]; +if(!(r0 ==-1)) //_LBB597_2 +{ + if(r0 !=5) //_LBB597_9 +{ + r0 = _2E_str10; + r1 = _2E_str231; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 969; + _assert(i7); +} +} + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + f0 = heapFloat[(fp+2)]; + if(r1 ==4) //_LBB597_6 +{ + r0 = r0 >> 2; + heapFloat[(r0+185)] = f0; + r1 = heap32[(r0+183)]; + r1 = r1 | 1; + heap32[(r0+183)] = r1; + return; +} +else{ + if(r1 ==3) //_LBB597_7 +{ + r0 = r0 >> 2; + heapFloat[(r0+184)] = f0; + r1 = heap32[(r0+183)]; + r1 = r1 | 4; + heap32[(r0+183)] = r1; + return; +} +else{ + if(r1 !=2) //_LBB597_8 +{ + r0 = _2E_str10; + r1 = _2E_str231; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 964; + _assert(i7); +} +else{ + r0 = r0 >> 2; + heapFloat[(r0+186)] = f0; + r1 = heap32[(r0+183)]; + r1 = r1 | 2; + heap32[(r0+183)] = r1; + return; +} +} +} +} + +function _ZNK17btHingeConstraint8getParamEii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var f0; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; +if(!(r0 ==-1)) //_LBB598_2 +{ + if(r0 !=5) //_LBB598_15 +{ + r0 = _2E_str10; + r1 = _2E_str231; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 999; + _assert(i7); +} +} + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + if(r1 ==4) //_LBB598_8 +{ + r1 = heapU8[r0+732]; + r1 = r1 & 1; + if(r1 != 0) //_LBB598_10 +{ + r0 = (r0 + 740)|0; +} +else{ + r0 = _2E_str332; + r1 = _2E_str231; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 986; + _assert(i7); +} +} +else{ + if(r1 ==3) //_LBB598_11 +{ + r1 = heapU8[r0+732]; + r1 = r1 & 4; + if(r1 !=0) //_LBB598_13 +{ + r0 = (r0 + 736)|0; +} +else{ + r0 = _2E_str433; + r1 = _2E_str231; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 990; + _assert(i7); +} +} +else{ + if(r1 !=2) //_LBB598_14 +{ + r0 = _2E_str10; + r1 = _2E_str231; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 994; + _assert(i7); +} +else{ + r1 = heapU8[r0+732]; + r1 = r1 & 2; + if(r1 !=0) //_LBB598_7 +{ + r0 = (r0 + 744)|0; +} +else{ + r0 = _2E_str130; + r1 = _2E_str231; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 982; + _assert(i7); +} +} +} +} + r0 = r0 >> 2; + f0 = heapFloat[(r0)]; + f_g0 = f0; + return; +} + +function _ZN17btHingeConstraint13getHingeAngleERK11btTransformS2_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; + var f30; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp+2)]; + r2 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = r1 >> 2; + r2 = r2 >> 2; + f0 = heapFloat[(r2+135)]; + f1 = heapFloat[(r0+4)]; + f2 = heapFloat[(r0)]; + f3 = heapFloat[(r2+136)]; + f4 = heapFloat[(r2+139)]; + f5 = heapFloat[(r0+5)]; + f6 = heapFloat[(r0+1)]; + f7 = heapFloat[(r2+140)]; + f8 = heapFloat[(r2+152)]; + f9 = heapFloat[(r1+4)]; + f10 = heapFloat[(r1)]; + f11 = heapFloat[(r2+156)]; + f12 = heapFloat[(r1+5)]; + f13 = heapFloat[(r1+1)]; + f14 = heapFloat[(r0+8)]; + f15 = heapFloat[(r0+9)]; + f16 = heapFloat[(r1+8)]; + f17 = heapFloat[(r1+9)]; + f18 = f2*f0; + f19 = f6*f4; + f20 = f1*f0; + f21 = f5*f4; + f10 = f10*f8; + f13 = f13*f11; + f2 = f2*f3; + f6 = f6*f7; + f9 = f9*f8; + f12 = f12*f11; + f1 = f1*f3; + f5 = f5*f7; + f22 = heapFloat[(r2+143)]; + f23 = heapFloat[(r0+6)]; + f24 = heapFloat[(r0+2)]; + f25 = heapFloat[(r2+144)]; + f26 = heapFloat[(r2+160)]; + f27 = heapFloat[(r1+6)]; + f28 = heapFloat[(r1+2)]; + f29 = heapFloat[(r0+10)]; + f30 = heapFloat[(r1+10)]; + f18 = f18+f19; + f19 = f24*f22; + f20 = f20+f21; + f21 = f23*f22; + f0 = f14*f0; + f4 = f15*f4; + f10 = f10+f13; + f13 = f28*f26; + f2 = f2+f6; + f6 = f24*f25; + f9 = f9+f12; + f12 = f27*f26; + f1 = f1+f5; + f5 = f23*f25; + f8 = f16*f8; + f11 = f17*f11; + f3 = f14*f3; + f7 = f15*f7; + f14 = f18+f19; + f10 = f10+f13; + f2 = f2+f6; + f6 = f20+f21; + f9 = f9+f12; + f1 = f1+f5; + f0 = f0+f4; + f4 = f29*f22; + f5 = f8+f11; + f8 = f30*f26; + f3 = f3+f7; + f7 = f29*f25; + f11 = f10*f14; + f6 = f9*f6; + f0 = f0+f4; + f4 = f5+f8; + f3 = f3+f7; + f2 = f10*f2; + f1 = f9*f1; + f5 = f11+f6; + f0 = f4*f0; + f1 = f2+f1; + f2 = f4*f3; + f0 = f5+f0; + f1 = f1+f2; + heapFloat[(g0)] = f0; + heapFloat[(g0+1)] = f1; + atan2f(i7); + f1 = heapFloat[(r2+179)]; + f0 = f1*f_g0; + f_g0 = f0; + return; +} + +function _ZN18btConstraintSolver12prepareSolveEii(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN18btConstraintSolver9allSolvedERK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN35btSequentialImpulseConstraintSolver33resolveSingleConstraintRowGenericER11btRigidBodyS1_RK18btSolverConstraint(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+2)]; + r1 = r1 >> 2; + r0 = r0 >> 2; + r2 = heap32[(fp+1)]; + r2 = r2 >> 2; + f0 = heapFloat[(r1+4)]; + f1 = heapFloat[(r0+126)]; + f2 = heapFloat[(r1+5)]; + f3 = heapFloat[(r0+127)]; + f4 = heapFloat[(r1)]; + f5 = heapFloat[(r0+130)]; + f6 = heapFloat[(r1+1)]; + f7 = heapFloat[(r0+131)]; + f8 = heapFloat[(r2+126)]; + f9 = heapFloat[(r2+127)]; + f10 = heapFloat[(r1+6)]; + f11 = heapFloat[(r0+128)]; + f1 = f0*f1; + f3 = f2*f3; + f4 = f4*f5; + f5 = f6*f7; + f6 = heapFloat[(r1+2)]; + f7 = heapFloat[(r0+132)]; + f12 = heapFloat[(r1+8)]; + f13 = heapFloat[(r2+130)]; + f14 = heapFloat[(r1+9)]; + f15 = heapFloat[(r2+131)]; + f16 = heapFloat[(r2+128)]; + f1 = f1+f3; + f3 = f10*f11; + f4 = f4+f5; + f5 = f6*f7; + f6 = f12*f13; + f7 = f14*f15; + f11 = heapFloat[(r1+10)]; + f12 = heapFloat[(r2+132)]; + f8 = f0*f8; + f9 = f2*f9; + f13 = heapFloat[(r1+21)]; + f14 = heapFloat[(r1+30)]; + f1 = f1+f3; + f3 = f4+f5; + f4 = f6+f7; + f5 = f11*f12; + f6 = f8+f9; + f7 = f10*f16; + f8 = heapFloat[(r1+29)]; + f9 = f13*f14; + f1 = f1+f3; + f3 = heapFloat[(r1+23)]; + f4 = f4+f5; + f5 = f6+f7; + f4 = f4-f5; + f5 = f8-f9; + f1 = f3*f1; + f1 = f5-f1; + f3 = f3*f4; + f1 = f1-f3; + f3 = heapFloat[(r1+31)]; + f4 = f13+f1; + if(f3 <=f4) //_LBB602_2 +{ + f3 = heapFloat[(r1+32)]; + if(f3 >=f4) //_LBB602_4 +{ + heapFloat[(r1+21)] = f4; +} +else{ + f1 = f3-f13; + heapFloat[(r1+21)] = f3; +} +} +else{ + f1 = f3-f13; + heapFloat[(r1+21)] = f3; +} + f3 = heapFloat[(r0+84)]; + f4 = 0; +if(!(f3 ==f4)) //_LBB602_7 +{ + f3 = heapFloat[(r0+138)]; + f0 = f0*f3; + f0 = f0*f1; + f3 = heapFloat[(r0+126)]; + f5 = heapFloat[(r0+139)]; + f6 = heapFloat[(r0+140)]; + f0 = f3+f0; + f2 = f2*f5; + heapFloat[(r0+126)] = f0; + f0 = f2*f1; + f2 = heapFloat[(r0+127)]; + f0 = f2+f0; + f2 = f10*f6; + heapFloat[(r0+127)] = f0; + f0 = f2*f1; + f2 = heapFloat[(r0+128)]; + f0 = f2+f0; + heapFloat[(r0+128)] = f0; + f0 = heapFloat[(r0+134)]; + f0 = f0*f1; + f2 = heapFloat[(r1+12)]; + f3 = heapFloat[(r0+136)]; + f5 = heapFloat[(r0+135)]; + f0 = f2*f0; + f2 = heapFloat[(r0+130)]; + f6 = heapFloat[(r1+14)]; + f7 = heapFloat[(r1+13)]; + f0 = f2+f0; + f2 = f5*f1; + heapFloat[(r0+130)] = f0; + f0 = f7*f2; + f2 = heapFloat[(r0+131)]; + f0 = f2+f0; + f2 = f3*f1; + heapFloat[(r0+131)] = f0; + f0 = f6*f2; + f2 = heapFloat[(r0+132)]; + f0 = f2+f0; + heapFloat[(r0+132)] = f0; +} + f0 = heapFloat[(r2+84)]; +if(!(f0 ==f4)) //_LBB602_9 +{ + f0 = heapFloat[(r1+4)]; + f2 = heapFloat[(r2+138)]; + f0 = f2*f0; + f0 = f0*f1; + f2 = heapFloat[(r2+126)]; + f3 = heapFloat[(r1+5)]; + f4 = heapFloat[(r2+139)]; + f5 = heapFloat[(r1+6)]; + f6 = heapFloat[(r2+140)]; + f0 = f2-f0; + f2 = f4*f3; + heapFloat[(r2+126)] = f0; + f0 = f2*f1; + f2 = heapFloat[(r2+127)]; + f0 = f2-f0; + f2 = f6*f5; + heapFloat[(r2+127)] = f0; + f0 = f2*f1; + f2 = heapFloat[(r2+128)]; + f0 = f2-f0; + heapFloat[(r2+128)] = f0; + f0 = heapFloat[(r2+134)]; + f0 = f0*f1; + f2 = heapFloat[(r1+16)]; + f3 = heapFloat[(r2+136)]; + f4 = heapFloat[(r2+135)]; + f0 = f2*f0; + f2 = heapFloat[(r2+130)]; + f5 = heapFloat[(r1+18)]; + f6 = heapFloat[(r1+17)]; + f0 = f2+f0; + f2 = f4*f1; + heapFloat[(r2+130)] = f0; + f0 = f6*f2; + f2 = heapFloat[(r2+131)]; + f0 = f2+f0; + f1 = f3*f1; + heapFloat[(r2+131)] = f0; + f0 = f5*f1; + f1 = heapFloat[(r2+132)]; + f0 = f1+f0; + heapFloat[(r2+132)] = f0; +} + return; +} + +function _ZN35btSequentialImpulseConstraintSolver36resolveSingleConstraintRowLowerLimitER11btRigidBodyS1_RK18btSolverConstraint(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+2)]; + r1 = r1 >> 2; + r0 = r0 >> 2; + r2 = heap32[(fp+1)]; + r2 = r2 >> 2; + f0 = heapFloat[(r1+4)]; + f1 = heapFloat[(r0+126)]; + f2 = heapFloat[(r1+5)]; + f3 = heapFloat[(r0+127)]; + f4 = heapFloat[(r1)]; + f5 = heapFloat[(r0+130)]; + f6 = heapFloat[(r1+1)]; + f7 = heapFloat[(r0+131)]; + f8 = heapFloat[(r2+126)]; + f9 = heapFloat[(r2+127)]; + f10 = heapFloat[(r1+6)]; + f11 = heapFloat[(r0+128)]; + f1 = f0*f1; + f3 = f2*f3; + f4 = f4*f5; + f5 = f6*f7; + f6 = heapFloat[(r1+2)]; + f7 = heapFloat[(r0+132)]; + f12 = heapFloat[(r1+8)]; + f13 = heapFloat[(r2+130)]; + f14 = heapFloat[(r1+9)]; + f15 = heapFloat[(r2+131)]; + f16 = heapFloat[(r2+128)]; + f1 = f1+f3; + f3 = f10*f11; + f4 = f4+f5; + f5 = f6*f7; + f6 = f12*f13; + f7 = f14*f15; + f11 = heapFloat[(r1+10)]; + f12 = heapFloat[(r2+132)]; + f8 = f0*f8; + f9 = f2*f9; + f13 = heapFloat[(r1+21)]; + f14 = heapFloat[(r1+30)]; + f1 = f1+f3; + f3 = f4+f5; + f4 = f6+f7; + f5 = f11*f12; + f6 = f8+f9; + f7 = f10*f16; + f8 = heapFloat[(r1+29)]; + f9 = f13*f14; + f1 = f1+f3; + f3 = heapFloat[(r1+23)]; + f4 = f4+f5; + f5 = f6+f7; + f4 = f4-f5; + f5 = f8-f9; + f1 = f3*f1; + f1 = f5-f1; + f3 = f3*f4; + f1 = f1-f3; + f3 = heapFloat[(r1+31)]; + f4 = f13+f1; + if(f3 >f4) //_LBB603_2 +{ + f1 = f3-f13; + f4 = f3; +} + heapFloat[(r1+21)] = f4; + f3 = heapFloat[(r0+84)]; + f4 = 0; +if(!(f3 ==f4)) //_LBB603_5 +{ + f3 = heapFloat[(r0+138)]; + f0 = f0*f3; + f0 = f0*f1; + f3 = heapFloat[(r0+126)]; + f5 = heapFloat[(r0+139)]; + f6 = heapFloat[(r0+140)]; + f0 = f3+f0; + f2 = f2*f5; + heapFloat[(r0+126)] = f0; + f0 = f2*f1; + f2 = heapFloat[(r0+127)]; + f0 = f2+f0; + f2 = f10*f6; + heapFloat[(r0+127)] = f0; + f0 = f2*f1; + f2 = heapFloat[(r0+128)]; + f0 = f2+f0; + heapFloat[(r0+128)] = f0; + f0 = heapFloat[(r0+134)]; + f0 = f0*f1; + f2 = heapFloat[(r1+12)]; + f3 = heapFloat[(r0+136)]; + f5 = heapFloat[(r0+135)]; + f0 = f2*f0; + f2 = heapFloat[(r0+130)]; + f6 = heapFloat[(r1+14)]; + f7 = heapFloat[(r1+13)]; + f0 = f2+f0; + f2 = f5*f1; + heapFloat[(r0+130)] = f0; + f0 = f7*f2; + f2 = heapFloat[(r0+131)]; + f0 = f2+f0; + f2 = f3*f1; + heapFloat[(r0+131)] = f0; + f0 = f6*f2; + f2 = heapFloat[(r0+132)]; + f0 = f2+f0; + heapFloat[(r0+132)] = f0; +} + f0 = heapFloat[(r2+84)]; +if(!(f0 ==f4)) //_LBB603_7 +{ + f0 = heapFloat[(r1+4)]; + f2 = heapFloat[(r2+138)]; + f0 = f2*f0; + f0 = f0*f1; + f2 = heapFloat[(r2+126)]; + f3 = heapFloat[(r1+5)]; + f4 = heapFloat[(r2+139)]; + f5 = heapFloat[(r1+6)]; + f6 = heapFloat[(r2+140)]; + f0 = f2-f0; + f2 = f4*f3; + heapFloat[(r2+126)] = f0; + f0 = f2*f1; + f2 = heapFloat[(r2+127)]; + f0 = f2-f0; + f2 = f6*f5; + heapFloat[(r2+127)] = f0; + f0 = f2*f1; + f2 = heapFloat[(r2+128)]; + f0 = f2-f0; + heapFloat[(r2+128)] = f0; + f0 = heapFloat[(r2+134)]; + f0 = f0*f1; + f2 = heapFloat[(r1+16)]; + f3 = heapFloat[(r2+136)]; + f4 = heapFloat[(r2+135)]; + f0 = f2*f0; + f2 = heapFloat[(r2+130)]; + f5 = heapFloat[(r1+18)]; + f6 = heapFloat[(r1+17)]; + f0 = f2+f0; + f2 = f4*f1; + heapFloat[(r2+130)] = f0; + f0 = f6*f2; + f2 = heapFloat[(r2+131)]; + f0 = f2+f0; + f1 = f3*f1; + heapFloat[(r2+131)] = f0; + f0 = f5*f1; + f1 = heapFloat[(r2+132)]; + f0 = f1+f0; + heapFloat[(r2+132)] = f0; +} + return; +} + +function _ZN35btSequentialImpulseConstraintSolver43resolveSplitPenetrationImpulseCacheFriendlyER11btRigidBodyS1_RK18btSolverConstraint(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r0 = r0 >> 2; + f0 = heapFloat[(r0+33)]; + f1 = 0; +if(!(f0 ==f1)) //_LBB604_8 +{ + r1 = heap32[(fp)]; + r2 = heap32[(fp+1)]; + r3 = gNumSplitImpulseRecoveries; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r2 = r2 >> 2; + f2 = heapFloat[(r0+4)]; + f3 = heapFloat[(r1+142)]; + f4 = heapFloat[(r0+5)]; + f5 = heapFloat[(r1+143)]; + f6 = heapFloat[(r0)]; + f7 = heapFloat[(r1+146)]; + f8 = heapFloat[(r0+1)]; + f9 = heapFloat[(r1+147)]; + f10 = heapFloat[(r2+142)]; + f11 = heapFloat[(r2+143)]; + f12 = heapFloat[(r0+6)]; + f13 = heapFloat[(r1+144)]; + f3 = f2*f3; + f5 = f4*f5; + f6 = f6*f7; + f7 = f8*f9; + f8 = heapFloat[(r0+2)]; + f9 = heapFloat[(r1+148)]; + f14 = heapFloat[(r0+8)]; + f15 = heapFloat[(r2+146)]; + f16 = heapFloat[(r0+9)]; + f17 = heapFloat[(r2+147)]; + f18 = heapFloat[(r2+144)]; + f3 = f3+f5; + f5 = f12*f13; + f6 = f6+f7; + f7 = f8*f9; + f8 = f14*f15; + f9 = f16*f17; + f13 = heapFloat[(r0+10)]; + f14 = heapFloat[(r2+148)]; + f10 = f2*f10; + f11 = f4*f11; + f15 = heapFloat[(r0+20)]; + f16 = heapFloat[(r0+30)]; + f3 = f3+f5; + f5 = f6+f7; + f6 = f8+f9; + f7 = f13*f14; + f8 = f10+f11; + f9 = f12*f18; + f10 = f15*f16; + f3 = f3+f5; + f5 = heapFloat[(r0+23)]; + f6 = f6+f7; + f7 = f8+f9; + f6 = f6-f7; + f0 = f0-f10; + f3 = f5*f3; + f0 = f0-f3; + f3 = f5*f6; + f0 = f0-f3; + f3 = heapFloat[(r0+31)]; + f5 = f15+f0; + if(f3 >f5) //_LBB604_3 +{ + f0 = f3-f15; + f5 = f3; +} + heapFloat[(r0+20)] = f5; + f3 = heapFloat[(r1+84)]; +if(!(f3 ==f1)) //_LBB604_6 +{ + f3 = heapFloat[(r1+138)]; + f2 = f2*f3; + f2 = f2*f0; + f3 = heapFloat[(r1+142)]; + f5 = heapFloat[(r1+139)]; + f6 = heapFloat[(r1+140)]; + f2 = f3+f2; + f3 = f4*f5; + heapFloat[(r1+142)] = f2; + f2 = f3*f0; + f3 = heapFloat[(r1+143)]; + f2 = f3+f2; + f3 = f12*f6; + heapFloat[(r1+143)] = f2; + f2 = f3*f0; + f3 = heapFloat[(r1+144)]; + f2 = f3+f2; + heapFloat[(r1+144)] = f2; + f2 = heapFloat[(r1+134)]; + f2 = f2*f0; + f3 = heapFloat[(r0+12)]; + f4 = heapFloat[(r1+136)]; + f5 = heapFloat[(r1+135)]; + f2 = f3*f2; + f3 = heapFloat[(r1+146)]; + f6 = heapFloat[(r0+14)]; + f7 = heapFloat[(r0+13)]; + f2 = f3+f2; + f3 = f5*f0; + heapFloat[(r1+146)] = f2; + f2 = f7*f3; + f3 = heapFloat[(r1+147)]; + f2 = f3+f2; + f3 = f4*f0; + heapFloat[(r1+147)] = f2; + f2 = f6*f3; + f3 = heapFloat[(r1+148)]; + f2 = f3+f2; + heapFloat[(r1+148)] = f2; +} + f2 = heapFloat[(r2+84)]; +if(!(f2 ==f1)) //_LBB604_8 +{ + f1 = heapFloat[(r0+4)]; + f2 = heapFloat[(r2+138)]; + f1 = f2*f1; + f1 = f1*f0; + f2 = heapFloat[(r2+142)]; + f3 = heapFloat[(r0+5)]; + f4 = heapFloat[(r2+139)]; + f5 = heapFloat[(r0+6)]; + f6 = heapFloat[(r2+140)]; + f1 = f2-f1; + f2 = f4*f3; + heapFloat[(r2+142)] = f1; + f1 = f2*f0; + f2 = heapFloat[(r2+143)]; + f1 = f2-f1; + f2 = f6*f5; + heapFloat[(r2+143)] = f1; + f1 = f2*f0; + f2 = heapFloat[(r2+144)]; + f1 = f2-f1; + heapFloat[(r2+144)] = f1; + f1 = heapFloat[(r2+134)]; + f1 = f1*f0; + f2 = heapFloat[(r0+16)]; + f3 = heapFloat[(r2+136)]; + f4 = heapFloat[(r2+135)]; + f1 = f2*f1; + f2 = heapFloat[(r2+146)]; + f5 = heapFloat[(r0+18)]; + f6 = heapFloat[(r0+17)]; + f1 = f2+f1; + f2 = f4*f0; + heapFloat[(r2+146)] = f1; + f1 = f6*f2; + f2 = heapFloat[(r2+147)]; + f1 = f2+f1; + f0 = f3*f0; + heapFloat[(r2+147)] = f1; + f0 = f5*f0; + f1 = heapFloat[(r2+148)]; + f0 = f1+f0; + heapFloat[(r2+148)] = f0; +} +} + return; +} + +function _Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; +if(!(r0 ==0)) //_LBB605_2 +{ + r0 = r0 >> 2; + r1 = heap32[(r0+45)]; + if(r1 !=0) //_LBB605_3 +{ + r1 = heap32[(fp+1)]; + r1 = r1 >> 2; + f0 = heapFloat[(r1)]; + f1 = heapFloat[(r0+2)]; + f2 = heapFloat[(r0+1)]; + f3 = heapFloat[(r1+1)]; + f4 = heapFloat[(r0+6)]; + f5 = heapFloat[(r0+5)]; + f6 = heapFloat[(r0+3)]; + f7 = heapFloat[(r0+7)]; + f8 = f2*f0; + f9 = f5*f3; + f10 = f1*f0; + f11 = f4*f3; + f12 = heapFloat[(r1+2)]; + f13 = heapFloat[(r0+10)]; + f14 = heapFloat[(r0+9)]; + f15 = heapFloat[(r0+11)]; + f8 = f8+f9; + f9 = f14*f12; + f10 = f10+f11; + f11 = f13*f12; + f0 = f6*f0; + f3 = f7*f3; + f8 = f8+f9; + f9 = heapFloat[(r0+41)]; + f10 = f10+f11; + f11 = heapFloat[(r0+42)]; + f0 = f0+f3; + f3 = f15*f12; + f8 = f8*f9; + f9 = f10*f11; + f10 = heapFloat[(r0+43)]; + f0 = f0+f3; + f0 = f0*f10; + f2 = f2*f8; + f1 = f1*f9; + f3 = f5*f8; + f4 = f4*f9; + f1 = f2+f1; + f2 = f6*f0; + f5 = f14*f8; + f6 = f13*f9; + f3 = f3+f4; + f4 = f7*f0; + f1 = f1+f2; + f2 = f5+f6; + f0 = f15*f0; + f3 = f3+f4; + heapFloat[(r1)] = f1; + f0 = f2+f0; + heapFloat[(r1+1)] = f3; + heapFloat[(r1+2)] = f0; + heap32[(r1+3)] = 0; + return; +} +} + return; +} + +function _ZN35btSequentialImpulseConstraintSolver5resetEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + heap32[(r0+31)] = 0; + return; +} + +function _ZN35btSequentialImpulseConstraintSolver45solveGroupCacheFriendlySplitImpulseIterationsEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+7)]; + r1 = r0 >> 2; + r2 = heap32[(r1+11)]; +_1: do { +if(!(r2 ==0)) //_LBB607_14 +{ + r2 = heap32[(fp)]; + r0 = heapU8[r0+61]; + r3 = heap32[(r1+5)]; + r0 = r0 & 1; + if(r0 != 0) //_LBB607_3 +{ +if(!(r3 <1)) //_LBB607_14 +{ + r0 = 0; +_6: while(true){ + r3 = r2 >> 2; + r4 = heap32[(r3+2)]; +if(!(r4 <1)) //_LBB607_8 +{ + r5 = 0; +_10: while(true){ + r6 = heap32[(r3+19)]; + r7 = r5 << 2; + r6 = (r6 + r7)|0; + r6 = r6 >> 2; + r6 = heap32[(r6)]; + r6 = (r6 * 136)|0; + r7 = heap32[(r3+4)]; + r6 = (r7 + r6)|0; + r7 = r6 >> 2; + r8 = heap32[(r7+27)]; + r7 = heap32[(r7+26)]; + heap32[(g0)] = r7; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r6; + r5 = (r5 + 1)|0; + _ZN35btSequentialImpulseConstraintSolver43resolveSplitPenetrationImpulseCacheFriendlyER11btRigidBodyS1_RK18btSolverConstraint(i7); +if(!(r4 !=r5)) //_LBB607_7 +{ +break _10; +} +} +} + r0 = (r0 + 1)|0; + r3 = heap32[(r1+5)]; + if(r3 >r0) //_LBB607_5 +{ +continue _6; +} +else{ +break _1; +} +} +} +} +else{ + if(r3 >0) //_LBB607_9 +{ + r0 = 0; +_15: while(true){ + r3 = r2 >> 2; + r4 = heap32[(r3+2)]; +if(!(r4 <1)) //_LBB607_13 +{ + r5 = 0; +_19: while(true){ + r6 = heap32[(r3+19)]; + r7 = r5 << 2; + r6 = (r6 + r7)|0; + r6 = r6 >> 2; + r6 = heap32[(r6)]; + r6 = (r6 * 136)|0; + r7 = heap32[(r3+4)]; + r6 = (r7 + r6)|0; + r7 = r6 >> 2; + r8 = heap32[(r7+27)]; + r7 = heap32[(r7+26)]; + heap32[(g0)] = r7; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r6; + r5 = (r5 + 1)|0; + _ZN35btSequentialImpulseConstraintSolver43resolveSplitPenetrationImpulseCacheFriendlyER11btRigidBodyS1_RK18btSolverConstraint(i7); +if(!(r4 !=r5)) //_LBB607_12 +{ +break _19; +} +} +} + r0 = (r0 + 1)|0; + r3 = heap32[(r1+5)]; + if(r3 >r0) //_LBB607_10 +{ +continue _15; +} +else{ +break _1; +} +} +} +} +} +} while(0); + return; +} + +function _ZN35btSequentialImpulseConstraintSolverD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV35btSequentialImpulseConstraintSolver; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+29)]; +if(!(r1 ==0)) //_LBB608_4 +{ + r3 = heapU8[r0+120]; +if(!(r3 ==0)) //_LBB608_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+29)] = 0; +} + r1 = 1; + heap8[r0+120] = r1; + heap32[(r2+29)] = 0; + heap32[(r2+27)] = 0; + heap32[(r2+28)] = 0; + r3 = heap32[(r2+24)]; +if(!(r3 ==0)) //_LBB608_8 +{ + r4 = heapU8[r0+100]; +if(!(r4 ==0)) //_LBB608_7 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+24)] = 0; +} + heap8[r0+100] = r1; + heap32[(r2+24)] = 0; + heap32[(r2+22)] = 0; + heap32[(r2+23)] = 0; + r3 = heap32[(r2+19)]; +if(!(r3 ==0)) //_LBB608_12 +{ + r4 = heapU8[r0+80]; +if(!(r4 ==0)) //_LBB608_11 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+19)] = 0; +} + heap8[r0+80] = r1; + heap32[(r2+19)] = 0; + heap32[(r2+17)] = 0; + heap32[(r2+18)] = 0; + r3 = heap32[(r2+14)]; +if(!(r3 ==0)) //_LBB608_16 +{ + r4 = heapU8[r0+60]; +if(!(r4 ==0)) //_LBB608_15 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+14)] = 0; +} + heap8[r0+60] = r1; + heap32[(r2+14)] = 0; + heap32[(r2+12)] = 0; + heap32[(r2+13)] = 0; + r3 = heap32[(r2+9)]; +if(!(r3 ==0)) //_LBB608_20 +{ + r4 = heapU8[r0+40]; +if(!(r4 ==0)) //_LBB608_19 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+9)] = 0; +} + heap8[r0+40] = r1; + heap32[(r2+9)] = 0; + heap32[(r2+7)] = 0; + heap32[(r2+8)] = 0; + r3 = heap32[(r2+4)]; +if(!(r3 ==0)) //_LBB608_24 +{ + r4 = heapU8[r0+20]; +if(!(r4 ==0)) //_LBB608_23 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+4)] = 0; +} + heap8[r0+20] = r1; + heap32[(r2+4)] = 0; + heap32[(r2+2)] = 0; + heap32[(r2+3)] = 0; + return; +} + +function _ZN35btSequentialImpulseConstraintSolverD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV35btSequentialImpulseConstraintSolver; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+29)]; +if(!(r1 ==0)) //_LBB609_4 +{ + r3 = heapU8[r0+120]; +if(!(r3 ==0)) //_LBB609_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+29)] = 0; +} + r1 = 1; + heap8[r0+120] = r1; + heap32[(r2+29)] = 0; + heap32[(r2+27)] = 0; + heap32[(r2+28)] = 0; + r3 = heap32[(r2+24)]; +if(!(r3 ==0)) //_LBB609_8 +{ + r4 = heapU8[r0+100]; +if(!(r4 ==0)) //_LBB609_7 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+24)] = 0; +} + heap8[r0+100] = r1; + heap32[(r2+24)] = 0; + heap32[(r2+22)] = 0; + heap32[(r2+23)] = 0; + r3 = heap32[(r2+19)]; +if(!(r3 ==0)) //_LBB609_12 +{ + r4 = heapU8[r0+80]; +if(!(r4 ==0)) //_LBB609_11 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+19)] = 0; +} + heap8[r0+80] = r1; + heap32[(r2+19)] = 0; + heap32[(r2+17)] = 0; + heap32[(r2+18)] = 0; + r3 = heap32[(r2+14)]; +if(!(r3 ==0)) //_LBB609_16 +{ + r4 = heapU8[r0+60]; +if(!(r4 ==0)) //_LBB609_15 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+14)] = 0; +} + heap8[r0+60] = r1; + heap32[(r2+14)] = 0; + heap32[(r2+12)] = 0; + heap32[(r2+13)] = 0; + r3 = heap32[(r2+9)]; +if(!(r3 ==0)) //_LBB609_20 +{ + r4 = heapU8[r0+40]; +if(!(r4 ==0)) //_LBB609_19 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+9)] = 0; +} + heap8[r0+40] = r1; + heap32[(r2+9)] = 0; + heap32[(r2+7)] = 0; + heap32[(r2+8)] = 0; + r3 = heap32[(r2+4)]; +if(!(r3 ==0)) //_LBB609_24 +{ + r4 = heapU8[r0+20]; +if(!(r4 ==0)) //_LBB609_23 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+4)] = 0; +} + heap8[r0+20] = r1; + heap32[(r2+4)] = 0; + heap32[(r2+2)] = 0; + heap32[(r2+3)] = 0; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN35btSequentialImpulseConstraintSolver10solveGroupEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAllocP12btDispatcher(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var f0; + var f1; + var f2; +var __label__ = 0; + i7 = sp + -48;var g0 = i7>>2; // save stack + r0 = _2E_str450; + r1 = heap32[(fp+1)]; + heap32[(g0)] = r0; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + if(r1 !=0) //_LBB610_2 +{ + r0 = heap32[(fp+2)]; + if(r0 !=0) //_LBB610_4 +{ + r2 = heap32[(fp)]; + r3 = heap32[(fp+3)]; + r4 = heap32[(fp+4)]; + r5 = heap32[(fp+5)]; + r6 = heap32[(fp+6)]; + r7 = heap32[(fp+7)]; + r8 = heap32[(fp+8)]; + r9 = heap32[(fp+9)]; + r10 = r2 >> 2; + r11 = heap32[(r10)]; + r11 = r11 >> 2; + r11 = heap32[(r11+8)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r0; + heap32[(g0+3)] = r3; + heap32[(g0+4)] = r4; + heap32[(g0+5)] = r5; + heap32[(g0+6)] = r6; + heap32[(g0+7)] = r7; + heap32[(g0+8)] = r8; + heap32[(g0+9)] = r9; + __FUNCTION_TABLE__[(r11)>>2](i7); + r11 = heap32[(r10)]; + r11 = r11 >> 2; + r11 = heap32[(r11+9)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r0; + heap32[(g0+3)] = r3; + heap32[(g0+4)] = r4; + heap32[(g0+5)] = r5; + heap32[(g0+6)] = r6; + heap32[(g0+7)] = r7; + heap32[(g0+8)] = r8; + heap32[(g0+9)] = r9; + __FUNCTION_TABLE__[(r11)>>2](i7); + r10 = heap32[(r10)]; + r10 = r10 >> 2; + r10 = heap32[(r10+7)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r0; + heap32[(g0+3)] = r3; + heap32[(g0+4)] = r4; + heap32[(g0+5)] = r5; + heap32[(g0+6)] = r6; + heap32[(g0+7)] = r7; + heap32[(g0+8)] = r8; + heap32[(g0+9)] = r9; + r0 = _ZN15CProfileManager11CurrentNodeE; + r0 = r0 >> 2; + __FUNCTION_TABLE__[(r10)>>2](i7); + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r3 = heap32[(r2+4)]; + r3 = (r3 + -1)|0; + heap32[(r2+4)] = r3; +_5: do { +if(!(r3 !=0)) //_LBB610_10 +{ + r3 = heap32[(r2+1)]; + if(r3 !=0) //_LBB610_7 +{ + r1 = sp + -8; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + r3 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r1 = r1 >> 2; + r4 = heap32[(fp+-2)]; + r5 = heap32[(r3)]; + r4 = (r4 - r5)|0; + r1 = heap32[(r1+1)]; + r3 = heap32[(r3+1)]; + r1 = (r1 - r3)|0; + r3 = (r4 * 1000000)|0; + r1 = (r1 + r3)|0; + r3 = heap32[(r2+3)]; + r1 = (r1 - r3)|0; + f0 = uint(r1); //fuitos r1, f0 + f1 = 1000; + f2 = heapFloat[(r2+2)]; + f0 = f0/f1; + f0 = f2+f0; + heapFloat[(r2+2)] = f0; + r1 = heap32[(r2+4)]; + if(r1 !=0) //_LBB610_10 +{ +break _5; +} +else{ + r1 = heap32[(r0)]; +} +} + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + heap32[(r0)] = r1; +} +} while(0); + f0 = 0; + f_g0 = f0; + return; +} +else{ + r0 = _2E_str753; + r1 = _2E_str652; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 1186; + _assert(i7); +} +} +else{ + r1 = _2E_str551; + r0 = _2E_str652; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = 1185; + _assert(i7); +} +} + +function _ZN35btSequentialImpulseConstraintSolver29solveGroupCacheFriendlyFinishEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; +var __label__ = 0; + i7 = sp + -504;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(fp+1)]; + r3 = heap32[(fp+2)]; + r4 = heap32[(fp+7)]; + r5 = heap32[(r1+2)]; + r6 = 0; +_1: while(true){ + if(r6 > 2; + r8 = heap32[(r7+28)]; + if(r8 !=0) //_LBB611_3 +{ + r8 = r8 >> 2; + heap32[(r8+28)] = heap32[(r7+21)]; + r9 = heapU8[r4+60]; + r9 = r9 & 8; +if(!(r9 ==0)) //_LBB611_5 +{ + r9 = heap32[(r7+25)]; + r10 = heap32[(r1+14)]; + r9 = (r9 * 136)|0; + r9 = (r10 + r9)|0; + r9 = r9 >> 2; + heap32[(r8+30)] = heap32[(r9+21)]; + r7 = heap32[(r7+25)]; + r9 = heap32[(r1+14)]; + r7 = (r7 * 136)|0; + r7 = (r7 + r9)|0; + r7 = r7 >> 2; + heap32[(r8+31)] = heap32[(r7+55)]; +} + r6 = (r6 + 1)|0; +continue _1; +} +else{ +__label__ = 2; +break _1; +} +} +else{ +__label__ = 7; +break _1; +} +} +switch(__label__ ){//multiple entries +case 7: + r5 = heap32[(r1+7)]; +_10: do { +if(!(r5 <1)) //_LBB611_10 +{ + r6 = 0; +_12: while(true){ + r7 = (r6 * 34)|0; + r8 = heap32[(r1+9)]; + r7 = r7 << 2; + r7 = (r8 + r7)|0; + r7 = r7 >> 2; + r8 = heap32[(r7+28)]; + r8 = r8 >> 2; + f0 = heapFloat[(r8+7)]; + f1 = heapFloat[(r7+21)]; + r6 = (r6 + 1)|0; + f0 = f1+f0; + heapFloat[(r8+7)] = f0; + if(r5 !=r6) //_LBB611_9 +{ +continue _12; +} +else{ +break _10; +} +} +} +} while(0); + r4 = r4 >> 2; + r5 = heap32[(r4+11)]; +_15: do { + if(r5 !=0) //_LBB611_13 +{ +if(!(r3 <1)) //_LBB611_24 +{ +__label__ = 13; //SET chanka +_17: while(true){ + r5 = r2 >> 2; + r5 = heap32[(r5)]; + r6 = heapU8[r5+232]; + r6 = r6 & 2; +if(!(r6 ==0)) //_LBB611_18 +{ +if(!(r5 ==0)) //_LBB611_18 +{ + r6 = r5 >> 2; + f0 = heapFloat[(r6+84)]; + f1 = 0; +if(!(f0 ==f1)) //_LBB611_18 +{ + f0 = heapFloat[(r4+3)]; + f1 = heapFloat[(r6+78)]; + f2 = heapFloat[(r6+128)]; + f3 = heapFloat[(r6+77)]; + f4 = heapFloat[(r6+127)]; + f5 = heapFloat[(r6+76)]; + f6 = heapFloat[(r6+126)]; + f5 = f5+f6; + f3 = f3+f4; + heapFloat[(r6+76)] = f5; + f1 = f1+f2; + heapFloat[(r6+77)] = f3; + heapFloat[(r6+78)] = f1; + heap32[(r6+79)] = 0; + f1 = heapFloat[(r6+82)]; + f2 = heapFloat[(r6+132)]; + f3 = heapFloat[(r6+81)]; + f4 = heapFloat[(r6+131)]; + f5 = heapFloat[(r6+80)]; + f6 = heapFloat[(r6+130)]; + f5 = f5+f6; + f3 = f3+f4; + heapFloat[(r6+80)] = f5; + f1 = f1+f2; + heapFloat[(r6+81)] = f3; + heapFloat[(r6+82)] = f1; + heap32[(r6+83)] = 0; + f1 = heapFloat[(r6+142)]; + f2 = heapFloat[(r6+143)]; + f3 = heapFloat[(r6+144)]; + r7 = sp + -64; + r8 = (r5 + 4)|0; + r5 = (r5 + 584)|0; + heap32[(g0)] = r8; + heapFloat[(g0+1)] = f1; + heapFloat[(g0+2)] = f2; + heapFloat[(g0+3)] = f3; + heap32[(g0+4)] = r5; + heapFloat[(g0+5)] = f0; + heap32[(g0+6)] = r7; + _ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(i7); + r5 = r7 >> 2; + heap32[(r6+1)] = heap32[(fp+-16)]; + heap32[(r6+2)] = heap32[(r5+1)]; + heap32[(r6+3)] = heap32[(r5+2)]; + heap32[(r6+4)] = heap32[(r5+3)]; + heap32[(r6+5)] = heap32[(r5+4)]; + heap32[(r6+6)] = heap32[(r5+5)]; + heap32[(r6+7)] = heap32[(r5+6)]; + heap32[(r6+8)] = heap32[(r5+7)]; + heap32[(r6+9)] = heap32[(r5+8)]; + heap32[(r6+10)] = heap32[(r5+9)]; + heap32[(r6+11)] = heap32[(r5+10)]; + heap32[(r6+12)] = heap32[(r5+11)]; + heap32[(r6+13)] = heap32[(r5+12)]; + heap32[(r6+14)] = heap32[(r5+13)]; + heap32[(r6+15)] = heap32[(r5+14)]; + heap32[(r6+16)] = heap32[(r5+15)]; +} +} +} + r3 = (r3 + -1)|0; + r2 = (r2 + 4)|0; + if(r3 ==0) //_LBB611_24 +{ +break _15; +} +else{ +continue _17; +} +} +} +} +else{ +if(!(r3 <1)) //_LBB611_24 +{ +__label__ = 18; //SET chanka +_25: while(true){ + r4 = r2 >> 2; + r4 = heap32[(r4)]; + r5 = heapU8[r4+232]; + r5 = r5 & 2; +if(!(r5 ==0)) //_LBB611_23 +{ +if(!(r4 ==0)) //_LBB611_23 +{ + r4 = r4 >> 2; + f0 = heapFloat[(r4+84)]; + f1 = 0; +if(!(f0 ==f1)) //_LBB611_23 +{ + f0 = heapFloat[(r4+78)]; + f1 = heapFloat[(r4+128)]; + f2 = heapFloat[(r4+77)]; + f3 = heapFloat[(r4+127)]; + f4 = heapFloat[(r4+76)]; + f5 = heapFloat[(r4+126)]; + f4 = f4+f5; + f2 = f2+f3; + heapFloat[(r4+76)] = f4; + f0 = f0+f1; + heapFloat[(r4+77)] = f2; + heapFloat[(r4+78)] = f0; + heap32[(r4+79)] = 0; + f0 = heapFloat[(r4+82)]; + f1 = heapFloat[(r4+132)]; + f2 = heapFloat[(r4+81)]; + f3 = heapFloat[(r4+131)]; + f4 = heapFloat[(r4+80)]; + f5 = heapFloat[(r4+130)]; + f4 = f4+f5; + f2 = f2+f3; + heapFloat[(r4+80)] = f4; + f0 = f0+f1; + heapFloat[(r4+81)] = f2; + heapFloat[(r4+82)] = f0; + heap32[(r4+83)] = 0; +} +} +} + r3 = (r3 + -1)|0; + r2 = (r2 + 4)|0; + if(r3 !=0) //_LBB611_19 +{ +continue _25; +} +else{ +break _15; +} +} +} +} +} while(0); + r2 = heap32[(r1+2)]; +_33: do { +if(!(r2 >-1)) //_LBB611_33 +{ + r3 = heap32[(r1+3)]; +if(!(r3 >-1)) //_LBB611_31 +{ + r3 = heap32[(r1+4)]; +if(!(r3 ==0)) //_LBB611_30 +{ + r4 = heapU8[r0+20]; +if(!(r4 ==0)) //_LBB611_29 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r1+4)] = 0; +} + r3 = 1; + heap8[r0+20] = r3; + heap32[(r1+4)] = 0; + heap32[(r1+3)] = 0; +} + r3 = (r2 * 136)|0; +_44: while(true){ + r4 = heap32[(r1+4)]; + r4 = (r4 + r3)|0; + r5 = sp + -472; + heap32[(g0)] = r4; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = 136; + r2 = (r2 + 1)|0; + r3 = (r3 + 136)|0; + memcpy(i7); + if(r2 !=0) //_LBB611_32 +{ +continue _44; +} +else{ +break _33; +} +} +} +} while(0); + heap32[(r1+2)] = 0; + r2 = heap32[(r1+7)]; +_47: do { +if(!(r2 >-1)) //_LBB611_42 +{ + r3 = heap32[(r1+8)]; +if(!(r3 >-1)) //_LBB611_40 +{ + r3 = heap32[(r1+9)]; +if(!(r3 ==0)) //_LBB611_39 +{ + r4 = heapU8[r0+40]; +if(!(r4 ==0)) //_LBB611_38 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r1+9)] = 0; +} + r3 = 1; + heap8[r0+40] = r3; + heap32[(r1+9)] = 0; + heap32[(r1+8)] = 0; +} + r3 = (r2 * 136)|0; +_58: while(true){ + r4 = heap32[(r1+9)]; + r4 = (r4 + r3)|0; + r5 = sp + -336; + heap32[(g0)] = r4; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = 136; + r2 = (r2 + 1)|0; + r3 = (r3 + 136)|0; + memcpy(i7); + if(r2 !=0) //_LBB611_41 +{ +continue _58; +} +else{ +break _47; +} +} +} +} while(0); + heap32[(r1+7)] = 0; + r2 = heap32[(r1+12)]; +_61: do { +if(!(r2 >-1)) //_LBB611_51 +{ + r3 = heap32[(r1+13)]; +if(!(r3 >-1)) //_LBB611_49 +{ + r3 = heap32[(r1+14)]; +if(!(r3 ==0)) //_LBB611_48 +{ + r4 = heapU8[r0+60]; +if(!(r4 ==0)) //_LBB611_47 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r1+14)] = 0; +} + r3 = 1; + heap8[r0+60] = r3; + heap32[(r1+14)] = 0; + heap32[(r1+13)] = 0; +} + r0 = (r2 * 136)|0; +_72: while(true){ + r3 = heap32[(r1+14)]; + r3 = (r3 + r0)|0; + r4 = sp + -200; + heap32[(g0)] = r3; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = 136; + r2 = (r2 + 1)|0; + r0 = (r0 + 136)|0; + memcpy(i7); + if(r2 !=0) //_LBB611_50 +{ +continue _72; +} +else{ +break _61; +} +} +} +} while(0); + heap32[(r1+12)] = 0; + f0 = 0; + f_g0 = f0; + return; +break; +case 2: + r0 = _2E_str955; + r1 = _2E_str652; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 1129; + _assert(i7); +break; +} +} + +function _ZN35btSequentialImpulseConstraintSolver28solveGroupCacheFriendlySetupEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var r19; + var r20; + var r21; + var r22; + var r23; + var r24; + var r25; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; +var __label__ = 0; + i7 = sp + -584;var g0 = i7>>2; // save stack + r0 = _2E_str1056; + r1 = heap32[(fp+6)]; + heap32[(g0)] = r0; + r0 = heap32[(fp+4)]; + heap32[(fp+-133)] = r0; + r2 = 0; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + r0 = (r2 - r0)|0; +_1: do { +if(!(r1 ==r0)) //_LBB612_269 +{ + r0 = heap32[(fp)]; + r3 = heap32[(fp+1)]; + r4 = heap32[(fp+2)]; + r5 = heap32[(fp+3)]; + heap32[(fp+-132)] = r5; + r5 = heap32[(fp+5)]; + heap32[(fp+-127)] = r5; + r5 = heap32[(fp+7)]; + r6 = r5 >> 2; + r7 = heap32[(r6+11)]; +_3: do { + if(r7 !=0) //_LBB612_4 +{ +if(!(r4 <1)) //_LBB612_14 +{ +__label__ = 4; //SET chanka +_5: while(true){ + r7 = r3 >> 2; + r7 = heap32[(r7)]; + r8 = heapU8[r7+232]; + r8 = r8 & 2; +if(!(r8 ==0)) //_LBB612_8 +{ +if(!(r7 ==0)) //_LBB612_8 +{ + r7 = r7 >> 2; + heap32[(r7+126)] = 0; + heap32[(r7+127)] = 0; + heap32[(r7+128)] = 0; + heap32[(r7+129)] = 0; + heap32[(r7+130)] = 0; + heap32[(r7+131)] = 0; + heap32[(r7+132)] = 0; + heap32[(r7+133)] = 0; + heap32[(r7+142)] = 0; + heap32[(r7+143)] = 0; + heap32[(r7+144)] = 0; + heap32[(r7+145)] = 0; + heap32[(r7+146)] = 0; + heap32[(r7+147)] = 0; + heap32[(r7+148)] = 0; + heap32[(r7+149)] = 0; +} +} + r4 = (r4 + -1)|0; + r3 = (r3 + 4)|0; + if(r4 ==0) //_LBB612_14 +{ +break _3; +} +else{ +continue _5; +} +} +} +} +else{ +if(!(r4 <1)) //_LBB612_14 +{ +__label__ = 8; //SET chanka +_12: while(true){ + r7 = r3 >> 2; + r7 = heap32[(r7)]; + r8 = heapU8[r7+232]; + r8 = r8 & 2; +if(!(r8 ==0)) //_LBB612_12 +{ +if(!(r7 ==0)) //_LBB612_12 +{ + r7 = r7 >> 2; + heap32[(r7+126)] = 0; + heap32[(r7+127)] = 0; + heap32[(r7+128)] = 0; + heap32[(r7+129)] = 0; + heap32[(r7+130)] = 0; + heap32[(r7+131)] = 0; + heap32[(r7+132)] = 0; + heap32[(r7+133)] = 0; +} +} + r4 = (r4 + -1)|0; + r3 = (r3 + 4)|0; + if(r4 ==0) //_LBB612_14 +{ +break _3; +} +} +} +} +} while(0); +_19: do { + if(r1 <1) //_LBB612_40 +{ + r4 = r0 >> 2; + r3 = heap32[(r4+27)]; +_21: do { +if(!(r3 >r1)) //_LBB612_59 +{ +if(!(r3 >=r1)) //_LBB612_59 +{ + r7 = heap32[(r4+28)]; +if(!(r7 >=r1)) //_LBB612_58 +{ + if(r1 !=0) //_LBB612_45 +{ + r7 = gNumAlignedAllocs; + r7 = r7 >> 2; + r8 = heap32[(r7)]; + r9 = r1 << 3; + r8 = (r8 + 1)|0; + r9 = r9 | 3; + heap32[(r7)] = r8; + r7 = (r9 + 16)|0; + heap32[(g0)] = r7; + malloc(i7); + r7 = r_g0; + if(r7 !=0) //_LBB612_47 +{ + r8 = (r7 + 4)|0; + r8 = (r2 - r8)|0; + r8 = r8 & 15; + r8 = (r7 + r8)|0; + r9 = (r8 + 4)|0; + r8 = r8 >> 2; + heap32[(r8)] = r7; + r7 = r9; +} +} +else{ + r7 = 0; +} + r8 = (r0 + 116)|0; + if(r3 <1) //_LBB612_50 +{ + r2 = r8 >> 2; + r9 = heap32[(r2)]; +} +else{ +_33: while(true){ + r9 = r8 >> 2; + r9 = heap32[(r9)]; + r10 = r2 << 3; + r11 = (r9 + r10)|0; + r11 = r11 >> 2; + r10 = (r7 + r10)|0; + r12 = heap32[(r11+1)]; + r11 = heap32[(r11)]; + r10 = r10 >> 2; + r2 = (r2 + 1)|0; + heap32[(r10)] = r11; + heap32[(r10+1)] = r12; +if(!(r3 !=r2)) //_LBB612_51 +{ +break _33; +} +} + r8 = (r0 + 116)|0; +} +if(!(r9 ==0)) //_LBB612_57 +{ + r2 = heapU8[r0+120]; +if(!(r2 ==0)) //_LBB612_56 +{ + r2 = gNumAlignedFree; + r2 = r2 >> 2; + r10 = heap32[(r2)]; + r10 = (r10 + 1)|0; + r9 = r9 >> 2; + heap32[(r2)] = r10; + r2 = heap32[(r9+-1)]; + heap32[(g0)] = r2; + free(i7); +} + r2 = r8 >> 2; + heap32[(r2)] = 0; +} + r2 = 1; + r8 = r8 >> 2; + heap8[r0+120] = r2; + heap32[(r8)] = r7; + heap32[(r4+28)] = r1; + if(r3 >=r1) //_LBB612_59 +{ +break _21; +} +} +_43: while(true){ + r2 = r3 << 3; + r7 = heap32[(r4+29)]; + r2 = (r7 + r2)|0; + r2 = r2 >> 2; + r3 = (r3 + 1)|0; + heap32[(r2)] = 0; + heap32[(r2+1)] = 0; +if(!(r1 !=r3)) //_LBB612_58 +{ +break _21; +} +} +} +} +} while(0); + r3 = 0; + heap32[(r4+27)] = r1; +} +else{ + r2 = 0; +_47: while(true){ + r3 = r2 << 2; + r4 = heap32[(fp+-127)]; + r3 = (r4 + r3)|0; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r4 = r3 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+2)]; + r2 = (r2 + 1)|0; + heap32[(g0)] = r3; + __FUNCTION_TABLE__[(r4)>>2](i7); + if(r1 ==r2) //_LBB612_16 +{ +break _47; +} +} + r2 = r0 >> 2; + r3 = heap32[(r2+27)]; +_50: do { +if(!(r3 >r1)) //_LBB612_35 +{ +if(!(r3 >=r1)) //_LBB612_35 +{ + r4 = heap32[(r2+28)]; +if(!(r4 >=r1)) //_LBB612_34 +{ + if(r1 !=0) //_LBB612_21 +{ + r4 = gNumAlignedAllocs; + r4 = r4 >> 2; + r7 = heap32[(r4)]; + r8 = r1 << 3; + r7 = (r7 + 1)|0; + r8 = r8 | 3; + heap32[(r4)] = r7; + r4 = (r8 + 16)|0; + heap32[(g0)] = r4; + malloc(i7); + r4 = r_g0; + if(r4 !=0) //_LBB612_23 +{ + r7 = 0; + r8 = (r4 + 4)|0; + r7 = (r7 - r8)|0; + r7 = r7 & 15; + r7 = (r4 + r7)|0; + r8 = (r7 + 4)|0; + r7 = r7 >> 2; + heap32[(r7)] = r4; + r4 = r8; +} +} +else{ + r4 = 0; +} + r7 = (r0 + 116)|0; + if(r3 <1) //_LBB612_26 +{ + r8 = r7 >> 2; + r9 = heap32[(r8)]; +} +else{ + r8 = 0; +_63: while(true){ + r9 = r7 >> 2; + r9 = heap32[(r9)]; + r10 = r8 << 3; + r11 = (r9 + r10)|0; + r11 = r11 >> 2; + r10 = (r4 + r10)|0; + r12 = heap32[(r11+1)]; + r11 = heap32[(r11)]; + r10 = r10 >> 2; + r8 = (r8 + 1)|0; + heap32[(r10)] = r11; + heap32[(r10+1)] = r12; +if(!(r3 !=r8)) //_LBB612_27 +{ +break _63; +} +} + r7 = (r0 + 116)|0; +} +if(!(r9 ==0)) //_LBB612_33 +{ + r8 = heapU8[r0+120]; +if(!(r8 ==0)) //_LBB612_32 +{ + r8 = gNumAlignedFree; + r8 = r8 >> 2; + r10 = heap32[(r8)]; + r10 = (r10 + 1)|0; + r9 = r9 >> 2; + heap32[(r8)] = r10; + r8 = heap32[(r9+-1)]; + heap32[(g0)] = r8; + free(i7); +} + r8 = r7 >> 2; + heap32[(r8)] = 0; +} + r8 = 1; + r7 = r7 >> 2; + heap8[r0+120] = r8; + heap32[(r7)] = r4; + heap32[(r2+28)] = r1; + if(r3 >=r1) //_LBB612_35 +{ +break _50; +} +} +_73: while(true){ + r4 = r3 << 3; + r7 = heap32[(r2+29)]; + r4 = (r7 + r4)|0; + r4 = r4 >> 2; + r3 = (r3 + 1)|0; + heap32[(r4)] = 0; + heap32[(r4+1)] = 0; +if(!(r1 !=r3)) //_LBB612_34 +{ +break _50; +} +} +} +} +} while(0); + heap32[(r2+27)] = r1; + if(r1 >0) //_LBB612_37 +{ + r4 = 0; + r7 = heap32[(fp+-127)]; + r8 = r1; + r3 = r4; +_78: while(true){ + r9 = r7 >> 2; + r9 = heap32[(r9)]; + r10 = r9 >> 2; + r10 = heap32[(r10)]; + r10 = r10 >> 2; + r10 = heap32[(r10+4)]; + r11 = heap32[(r2+29)]; + r11 = (r11 + r4)|0; + heap32[(g0)] = r9; + heap32[(g0+1)] = r11; + __FUNCTION_TABLE__[(r10)>>2](i7); + r9 = r11 >> 2; + r9 = heap32[(r9)]; + r8 = (r8 + -1)|0; + r3 = (r9 + r3)|0; + r4 = (r4 + 8)|0; + r7 = (r7 + 4)|0; +if(!(r8 !=0)) //_LBB612_38 +{ +break _19; +} +} +} +else{ + r3 = 0; +} +} +} while(0); + r2 = r0 >> 2; + r4 = heap32[(r2+7)]; +_82: do { +if(!(r4 >r3)) //_LBB612_80 +{ +if(!(r4 >=r3)) //_LBB612_80 +{ + r7 = heap32[(r2+8)]; +if(!(r7 >=r3)) //_LBB612_78 +{ + if(r3 !=0) //_LBB612_65 +{ + r7 = gNumAlignedAllocs; + r7 = r7 >> 2; + r8 = heap32[(r7)]; + r9 = (r3 * 136)|0; + r8 = (r8 + 1)|0; + r9 = r9 | 3; + heap32[(r7)] = r8; + r7 = (r9 + 16)|0; + heap32[(g0)] = r7; + malloc(i7); + r7 = r_g0; + if(r7 !=0) //_LBB612_67 +{ + r8 = 0; + r9 = (r7 + 4)|0; + r8 = (r8 - r9)|0; + r8 = r8 & 15; + r8 = (r7 + r8)|0; + r9 = (r8 + 4)|0; + r8 = r8 >> 2; + heap32[(r8)] = r7; + r7 = r9; +} +} +else{ + r7 = 0; +} + r8 = (r0 + 36)|0; + if(r4 <1) //_LBB612_70 +{ + r9 = r8 >> 2; + r11 = heap32[(r9)]; +} +else{ + r9 = 0; + r10 = r4; +_95: while(true){ + r11 = r8 >> 2; + r11 = heap32[(r11)]; + r12 = (r7 + r9)|0; + r13 = (r11 + r9)|0; + heap32[(g0)] = r12; + heap32[(g0+1)] = r13; + heap32[(g0+2)] = 136; + r10 = (r10 + -1)|0; + r9 = (r9 + 136)|0; + memcpy(i7); +if(!(r10 !=0)) //_LBB612_71 +{ +break _95; +} +} + r8 = (r0 + 36)|0; +} +if(!(r11 ==0)) //_LBB612_77 +{ + r9 = heapU8[r0+40]; +if(!(r9 ==0)) //_LBB612_76 +{ + r9 = gNumAlignedFree; + r9 = r9 >> 2; + r10 = heap32[(r9)]; + r10 = (r10 + 1)|0; + r11 = r11 >> 2; + heap32[(r9)] = r10; + r9 = heap32[(r11+-1)]; + heap32[(g0)] = r9; + free(i7); +} + r9 = r8 >> 2; + heap32[(r9)] = 0; +} + r9 = 1; + r8 = r8 >> 2; + heap8[r0+40] = r9; + heap32[(r8)] = r7; + heap32[(r2+8)] = r3; + if(r4 >=r3) //_LBB612_80 +{ +break _82; +} +} + r7 = (r3 - r4)|0; + r4 = (r4 * 136)|0; +_106: while(true){ + r8 = heap32[(r2+9)]; + r8 = (r8 + r4)|0; + r9 = sp + -448; + heap32[(g0)] = r8; + heap32[(g0+1)] = r9; + heap32[(g0+2)] = 136; + r7 = (r7 + -1)|0; + r4 = (r4 + 136)|0; + memcpy(i7); +if(!(r7 !=0)) //_LBB612_79 +{ +break _82; +} +} +} +} +} while(0); + r4 = 0; + heap32[(r2+7)] = r3; + r7 = r4; +_109: while(true){ + if(r4 > 2; + r10 = heap32[(r10)]; + if(r10 !=0) //_LBB612_83 +{ + if(r7 > 2; + r13 = heap32[(r12)]; + r14 = r13 >> 2; + r15 = heap32[(r2+9)]; + r16 = heap32[(r14+5)]; + r17 = heap32[(r14+6)]; +if(!(r10 <1)) //_LBB612_90 +{ + r10 = (r7 * 136)|0; + r10 = (r15 + r10)|0; + r18 = 0; + r19 = r18; +_117: while(true){ + r20 = (r19 * 34)|0; + r21 = 136; + r22 = r18; +_119: while(true){ + r21 = (r21 + -1)|0; + r23 = (r22 + 1)|0; + r22 = (r10 + r22)|0; + r24 = (r19 * 136)|0; + heap8[r22+r24] = r18; + r22 = r23; +if(!(r21 !=0)) //_LBB612_88 +{ +break _119; +} +} + r21 = r20 << 2; + r22 = r20 << 2; + r21 = (r10 + r21)|0; + r23 = r20 << 2; + r22 = (r10 + r22)|0; + r21 = r21 >> 2; + r24 = r20 << 2; + r23 = (r10 + r23)|0; + r22 = r22 >> 2; + heap32[(r21+31)] = -8388609; + r21 = r20 << 2; + r24 = (r10 + r24)|0; + r23 = r23 >> 2; + heap32[(r22+32)] = 2139095039; + r20 = r20 << 2; + r21 = (r10 + r21)|0; + r22 = r24 >> 2; + heap32[(r23+21)] = 0; + r20 = (r10 + r20)|0; + r23 = r11 << 2; + r21 = r21 >> 2; + heap32[(r22+20)] = 0; + r22 = (r8 + r23)|0; + r19 = (r19 + 1)|0; + r20 = r20 >> 2; + heap32[(r21+26)] = r16; + r21 = r22 >> 2; + heap32[(r20+27)] = r17; + r20 = heap32[(r21)]; +if(!(r20 >r19)) //_LBB612_87 +{ +break _117; +} +} +} + r10 = r16 >> 2; + heap32[(r10+126)] = 0; + heap32[(r10+127)] = 0; + heap32[(r10+128)] = 0; + heap32[(r10+129)] = 0; + heap32[(r10+130)] = 0; + heap32[(r10+131)] = 0; + heap32[(r10+132)] = 0; + heap32[(r10+133)] = 0; + r16 = r17 >> 2; + heap32[(r16+126)] = 0; + heap32[(r16+127)] = 0; + heap32[(r16+128)] = 0; + heap32[(r16+129)] = 0; + heap32[(r16+130)] = 0; + heap32[(r16+131)] = 0; + heap32[(r16+132)] = 0; + heap32[(r16+133)] = 0; + f0 = 1; + f1 = heapFloat[(r6+3)]; + r17 = sp + -504; + f1 = f0/f1; + r18 = (r7 * 136)|0; + r15 = (r15 + r18)|0; + r18 = r17 >> 2; + heapFloat[(fp+-126)] = f1; + r19 = (r15 + 16)|0; + heap32[(r18+1)] = heap32[(r6+8)]; + heap32[(r18+2)] = r19; + heap32[(r18+3)] = r15; + r19 = (r15 + 32)|0; + heap32[(r18+4)] = 0; + heap32[(r18+5)] = r19; + r19 = (r15 + 116)|0; + heap32[(r18+6)] = 34; + r20 = r15 >> 2; + heap32[(r18+7)] = r19; + heap32[(r20+30)] = heap32[(r6+10)]; + r19 = (r15 + 120)|0; + heap32[(r18+13)] = heap32[(r6+1)]; + r20 = (r15 + 124)|0; + heap32[(r18+8)] = r19; + r19 = (r15 + 128)|0; + heap32[(r18+9)] = r20; + heap32[(r18+10)] = r19; + r19 = heap32[(r6+5)]; + heap32[(r18+12)] = r19; + r12 = heap32[(r12)]; + r19 = r12 >> 2; + r19 = heap32[(r19)]; + r19 = r19 >> 2; + r19 = heap32[(r19+5)]; + r11 = r11 << 2; + heap32[(g0)] = r12; + heap32[(g0+1)] = r17; + r8 = (r8 + r11)|0; + r8 = r8 >> 2; + __FUNCTION_TABLE__[(r19)>>2](i7); + r11 = heap32[(r8)]; +_123: do { +if(!(r11 <1)) //_LBB612_93 +{ + r11 = 0; +_125: while(true){ + r12 = (r11 * 34)|0; + r12 = r12 << 2; + r12 = (r15 + r12)|0; + r12 = r12 >> 2; + heap32[(r12+28)] = r13; + r17 = heap32[(r14+5)]; + r17 = r17 >> 2; + f1 = heapFloat[(r12)]; + f2 = heapFloat[(r17+64)]; + f3 = heapFloat[(r12+1)]; + f4 = heapFloat[(r17+65)]; + f5 = heapFloat[(r17+68)]; + f6 = heapFloat[(r17+69)]; + f2 = f2*f1; + f4 = f4*f3; + f7 = heapFloat[(r12+2)]; + f8 = heapFloat[(r17+66)]; + f9 = heapFloat[(r17+72)]; + f10 = heapFloat[(r17+73)]; + f11 = heapFloat[(r17+70)]; + f5 = f5*f1; + f6 = f6*f3; + f2 = f2+f4; + f4 = f8*f7; + f8 = heapFloat[(r17+74)]; + f9 = f9*f1; + f10 = f10*f3; + f5 = f5+f6; + f6 = f11*f7; + f2 = f2+f4; + f4 = heapFloat[(r17+134)]; + f11 = heapFloat[(r17+136)]; + f12 = heapFloat[(r17+135)]; + f5 = f5+f6; + f6 = f9+f10; + f8 = f8*f7; + f2 = f2*f4; + f4 = f6+f8; + f5 = f5*f12; + heapFloat[(r12+12)] = f2; + f2 = f4*f11; + heapFloat[(r12+13)] = f5; + heapFloat[(r12+14)] = f2; + heap32[(r12+15)] = 0; + r17 = heap32[(r14+6)]; + r17 = r17 >> 2; + f2 = heapFloat[(r12+8)]; + f4 = heapFloat[(r17+64)]; + f5 = heapFloat[(r12+9)]; + f6 = heapFloat[(r17+65)]; + f8 = heapFloat[(r17+68)]; + f9 = heapFloat[(r17+69)]; + f4 = f4*f2; + f6 = f6*f5; + f10 = heapFloat[(r12+10)]; + f11 = heapFloat[(r17+66)]; + f12 = heapFloat[(r17+72)]; + f13 = heapFloat[(r17+73)]; + f14 = heapFloat[(r17+70)]; + f8 = f8*f2; + f9 = f9*f5; + f4 = f4+f6; + f6 = f11*f10; + f11 = heapFloat[(r17+74)]; + f12 = f12*f2; + f13 = f13*f5; + f8 = f8+f9; + f9 = f14*f10; + f4 = f4+f6; + f6 = heapFloat[(r17+134)]; + f14 = heapFloat[(r17+136)]; + f15 = heapFloat[(r17+135)]; + f8 = f8+f9; + f9 = f12+f13; + f11 = f11*f10; + f4 = f4*f6; + f6 = f9+f11; + f8 = f8*f15; + heapFloat[(r12+16)] = f4; + f4 = f6*f14; + heapFloat[(r12+17)] = f8; + heapFloat[(r12+18)] = f4; + heap32[(r12+19)] = 0; + f4 = heapFloat[(r10+68)]; + f6 = heapFloat[(r10+69)]; + f8 = heapFloat[(r10+64)]; + f9 = heapFloat[(r10+65)]; + f11 = heapFloat[(r10+72)]; + f12 = heapFloat[(r10+73)]; + f13 = heapFloat[(r10+70)]; + f14 = heapFloat[(r10+66)]; + f8 = f8*f1; + f9 = f9*f3; + f4 = f4*f1; + f6 = f6*f3; + f15 = heapFloat[(r10+74)]; + f16 = heapFloat[(r16+68)]; + f17 = heapFloat[(r16+69)]; + f18 = heapFloat[(r16+64)]; + f19 = heapFloat[(r16+65)]; + f8 = f8+f9; + f9 = f14*f7; + f4 = f4+f6; + f6 = f13*f7; + f11 = f11*f1; + f12 = f12*f3; + f13 = heapFloat[(r10+84)]; + f14 = heapFloat[(r12+5)]; + f20 = heapFloat[(r12+4)]; + f21 = heapFloat[(r16+84)]; + f22 = heapFloat[(r12+6)]; + f8 = f8+f9; + f4 = f4+f6; + f6 = f20*f13; + f9 = f14*f13; + f23 = heapFloat[(r16+72)]; + f24 = heapFloat[(r16+73)]; + f25 = heapFloat[(r16+70)]; + f26 = heapFloat[(r16+66)]; + f18 = f18*f2; + f19 = f19*f5; + f16 = f16*f2; + f17 = f17*f5; + f11 = f11+f12; + f12 = f15*f7; + f15 = heapFloat[(r16+74)]; + f27 = f20*f21; + f28 = f14*f21; + f11 = f11+f12; + f12 = f22*f13; + f13 = f18+f19; + f18 = f26*f10; + f16 = f16+f17; + f17 = f25*f10; + f19 = f23*f2; + f23 = f24*f5; + f8 = f8*f1; + f4 = f4*f3; + f6 = f6*f20; + f9 = f9*f14; + f13 = f13+f18; + f16 = f16+f17; + f17 = f22*f21; + f18 = f19+f23; + f15 = f15*f10; + f19 = f27*f20; + f21 = f28*f14; + f4 = f8+f4; + f8 = f11*f7; + f6 = f6+f9; + f9 = f12*f22; + f11 = f18+f15; + f12 = f13*f2; + f13 = f16*f5; + f15 = f19+f21; + f16 = f17*f22; + f4 = f4+f8; + f6 = f6+f9; + f8 = f12+f13; + f9 = f11*f10; + f11 = f15+f16; + f4 = f4+f6; + f6 = f8+f9; + f4 = f11+f4; + f4 = f6+f4; + f4 = f0/f4; + heapFloat[(r12+23)] = f4; + f6 = heapFloat[(r10+76)]; + f8 = heapFloat[(r10+77)]; + f9 = heapFloat[(r10+80)]; + f11 = heapFloat[(r10+81)]; + f12 = heapFloat[(r16+80)]; + f13 = heapFloat[(r16+81)]; + f15 = heapFloat[(r16+76)]; + f16 = heapFloat[(r16+77)]; + f17 = heapFloat[(r10+78)]; + f18 = heapFloat[(r10+82)]; + f19 = heapFloat[(r16+82)]; + f21 = heapFloat[(r16+78)]; + f6 = f20*f6; + f8 = f14*f8; + f1 = f1*f9; + f3 = f3*f11; + f2 = f2*f12; + f5 = f5*f13; + f9 = f20*f15; + f11 = f14*f16; + f6 = f6+f8; + f8 = f22*f17; + f1 = f1+f3; + f3 = f7*f18; + f2 = f2+f5; + f5 = f10*f19; + f7 = f9+f11; + f9 = f22*f21; + f6 = f6+f8; + f1 = f1+f3; + f2 = f2+f5; + f3 = f7+f9; + f1 = f6+f1; + f2 = f2-f3; + f1 = f1+f2; + f2 = heapFloat[(r18+13)]; + f3 = 0; + f1 = f2*f1; + f2 = heapFloat[(r12+29)]; + f1 = f3-f1; + f2 = f4*f2; + f1 = f4*f1; + f1 = f2+f1; + r11 = (r11 + 1)|0; + heapFloat[(r12+29)] = f1; + heap32[(r12+21)] = 0; + r12 = heap32[(r8)]; +if(!(r12 >r11)) //_LBB612_92 +{ +break _123; +} +} +} +} while(0); + r8 = heap32[(r2+29)]; + r8 = (r8 + r9)|0; + r8 = r8 >> 2; + r8 = heap32[(r8)]; +} +else{ +__label__ = 78; +break _109; +} +} +else{ + r8 = 0; +} + r7 = (r8 + r7)|0; + r4 = (r4 + 1)|0; +} +else{ +__label__ = 90; +break _109; +} +} +switch(__label__ ){//multiple entries +case 90: + r1 = heap32[(fp+-133)]; +_132: do { +if(!(r1 <1)) //_LBB612_225 +{ +_133: while(true){ + r1 = heap32[(fp+-132)]; + r1 = r1 >> 2; + r1 = heap32[(r1)]; + heap32[(fp+-128)] = r1; + r1 = r1 >> 2; + heap32[(fp+-127)] = r1; + r3 = heap32[(r1+277)]; + r1 = heap32[(r1+278)]; + r4 = heapU8[r3+232]; + r4 = r4 & 2; + if(r4 !=0) //_LBB612_99 +{ + r4 = r3; +} +else{ + r4 = 0; +} + r7 = heapU8[r1+232]; + r7 = r7 & 2; + if(r7 !=0) //_LBB612_102 +{ + r7 = r1; +} +else{ + r7 = 0; +} + if(r4 ==0) //_LBB612_105 +{ +__label__ = 99; +} +else{ + r4 = r4 >> 2; + f0 = heapFloat[(r4+84)]; + f1 = 0; + if(f0 !=f1) //_LBB612_107 +{ +__label__ = 101; +} +else{ +__label__ = 99; +} +} +if (__label__ == 99){ + if(r7 ==0) //_LBB612_224 +{ +__label__ = 216; +} +else{ + r4 = r7 >> 2; + f0 = heapFloat[(r4+84)]; + f1 = 0; + if(f0 ==f1) //_LBB612_224 +{ +__label__ = 216; +} +else{ +__label__ = 101; +} +} +} +if (__label__ == 101){ + r4 = heap32[(fp+-128)]; + r7 = (r4 + 4)|0; + heap32[(fp+-129)] = r7; + r7 = (r4 + 152)|0; + heap32[(fp+-130)] = r7; + r4 = (r4 + 168)|0; + heap32[(fp+-131)] = r4; + r4 = 0; + r7 = r4; +_150: while(true){ + r8 = heap32[(fp+-127)]; + r8 = heap32[(r8+279)]; + if(r8 >r7) //_LBB612_108 +{ + r8 = heap32[(fp+-128)]; + r8 = (r8 + r4)|0; + r9 = r8 >> 2; + f0 = heapFloat[(r9+21)]; + r10 = heap32[(fp+-127)]; + f1 = heapFloat[(r10+281)]; +_153: do { +if(!(f0 >f1)) //_LBB612_222 +{ + r10 = heap32[(fp+-129)]; + r10 = (r10 + r4)|0; + r11 = heap32[(fp+-131)]; + r11 = (r11 + r4)|0; + r12 = heap32[(fp+-130)]; + r12 = (r12 + r4)|0; + r13 = heap32[(r2+3)]; + r14 = heap32[(r2+2)]; + if(r13 ==r14) //_LBB612_111 +{ + r15 = 1; + r16 = r14 << 1; + r16 = r14 == 0 ? r15 : r16; + if(r13 >=r16) //_LBB612_110 +{ +__label__ = 104; +} +else{ + if(r16 !=0) //_LBB612_114 +{ + r13 = gNumAlignedAllocs; + r13 = r13 >> 2; + r17 = heap32[(r13)]; + r18 = (r16 * 136)|0; + r17 = (r17 + 1)|0; + r18 = r18 | 3; + heap32[(r13)] = r17; + r13 = (r18 + 16)|0; + heap32[(g0)] = r13; + malloc(i7); + r17 = r_g0; + if(r17 !=0) //_LBB612_116 +{ + r13 = 0; + r18 = (r17 + 4)|0; + r13 = (r13 - r18)|0; + r13 = r13 & 15; + r13 = (r17 + r13)|0; + r18 = (r13 + 4)|0; + r13 = r13 >> 2; + heap32[(r13)] = r17; + r17 = r18; +} +} +else{ + r17 = 0; +} + if(r14 <1) //_LBB612_119 +{ + r19 = heap32[(r2+4)]; +} +else{ + r13 = 0; + r18 = r14; +_166: while(true){ + r19 = heap32[(r2+4)]; + r20 = (r17 + r13)|0; + r21 = (r19 + r13)|0; + heap32[(g0)] = r20; + heap32[(g0+1)] = r21; + heap32[(g0+2)] = 136; + r18 = (r18 + -1)|0; + r13 = (r13 + 136)|0; + memcpy(i7); +if(!(r18 !=0)) //_LBB612_120 +{ +break _166; +} +} +} + if(r19 !=0) //_LBB612_123 +{ + r13 = heapU8[r0+20]; + if(r13 !=0) //_LBB612_125 +{ + r13 = gNumAlignedFree; + r13 = r13 >> 2; + r18 = heap32[(r13)]; + r18 = (r18 + 1)|0; + r19 = r19 >> 2; + heap32[(r13)] = r18; + r13 = heap32[(r19+-1)]; + heap32[(g0)] = r13; + free(i7); + r13 = heap32[(r2+2)]; +} +else{ + r13 = r14; +} + heap32[(r2+4)] = 0; +} +else{ + r13 = r14; +} + heap8[r0+20] = r15; + heap32[(r2+4)] = r17; + heap32[(r2+3)] = r16; +__label__ = 121; +} +} +else{ +__label__ = 104; +} +if (__label__ == 104){ + r13 = r14; +} + r13 = (r13 + 1)|0; + heap32[(r2+2)] = r13; + r13 = heapU8[r3+232]; + r15 = heapU8[r1+232]; + r13 = r13 & 2; + r16 = 0; + r15 = r15 & 2; + r13 = r13 == 0 ? r16 : r3; + r17 = heap32[(r2+4)]; + r15 = r15 == 0 ? r16 : r1; + if(r13 ==0) //_LBB612_130 +{ + r18 = _ZGVZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed; + r19 = heapU8[r18]; +if(!(r19 !=0)) //_LBB612_132 +{ + r19 = _ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed; + r20 = r19 >> 2; + heap32[(r20+41)] = 1065353216; + heap32[(r20+42)] = 1065353216; + heap32[(r20+43)] = 1065353216; + heap32[(r20+44)] = 0; + heap32[(r20+45)] = 0; + heap32[(r20+46)] = 1566444395; + heap32[(r20+47)] = 0; + heap32[(r20+48)] = 0; + heap32[(r20+49)] = 0; + heap32[(r20+50)] = 0; + heap32[(r20+51)] = 1; + heap32[(r20+52)] = -1; + heap32[(r20+53)] = -1; + heap32[(r20+54)] = 1; + heap32[(r20+55)] = 0; + heap32[(r20+56)] = 1056964608; + heap32[(r20+57)] = 0; + heap32[(r20+58)] = 1; + heap32[(r20+59)] = 0; + heap32[(r20+60)] = 1065353216; + heap32[(r20+61)] = 0; + heap32[(r20+62)] = 0; + heap32[(r20+63)] = 0; + heap32[(r20+1)] = 1065353216; + heap32[(r20+2)] = 0; + heap32[(r20+3)] = 0; + heap32[(r20+4)] = 0; + heap32[(r20+5)] = 0; + heap32[(r20+6)] = 1065353216; + heap32[(r20+7)] = 0; + heap32[(r20+8)] = 0; + heap32[(r20+9)] = 0; + heap32[(r20+10)] = 0; + heap32[(r20+11)] = 1065353216; + heap32[(r20+12)] = 0; + heap32[(r20+13)] = 0; + heap32[(r20+14)] = 0; + r21 = _ZTV11btRigidBody; + heap32[(r20+15)] = 0; + r21 = (r21 + 8)|0; + heap32[(r20+16)] = 0; + r22 = 1; + heap32[(r20)] = r21; + heap8[r19+492] = r22; + heap32[(r20+122)] = 0; + heap32[(r20+120)] = 0; + r21 = sp + -280; + heap32[(r20+121)] = 0; + r20 = r21 >> 2; + heap32[(fp+-70)] = 0; + heap32[(r20+1)] = 0; + heap32[(r20+18)] = 0; + heap32[(r20+19)] = 0; + heap32[(r20+20)] = 0; + heap32[(r20+21)] = 0; + heap32[(r20+22)] = 0; + heap32[(r20+23)] = 0; + heap32[(r20+24)] = 0; + heap32[(r20+25)] = 1056964608; + heap32[(r20+26)] = 0; + heap32[(r20+27)] = 1061997773; + heap32[(r20+28)] = 1065353216; + heap8[sp+-164] = r16; + heap32[(r20+30)] = 1000593162; + heap32[(r20+31)] = 1008981770; + heap32[(r20+32)] = 1008981770; + heap32[(r20+33)] = 1008981770; + heap32[(r20+2)] = 1065353216; + heap32[(r20+3)] = 0; + heap32[(r20+4)] = 0; + heap32[(r20+5)] = 0; + heap32[(r20+6)] = 0; + heap32[(r20+7)] = 1065353216; + heap32[(r20+8)] = 0; + heap32[(r20+9)] = 0; + heap32[(r20+10)] = 0; + heap32[(r20+11)] = 0; + heap32[(r20+12)] = 1065353216; + heap32[(r20+13)] = 0; + heap32[(r20+14)] = 0; + heap32[(r20+15)] = 0; + heap32[(r20+16)] = 0; + heap32[(r20+17)] = 0; + heap32[(g0)] = r19; + heap32[(g0+1)] = r21; + _ZN11btRigidBody14setupRigidBodyERKNS_27btRigidBodyConstructionInfoE(i7); + heap8[r18] = r22; +} + r18 = _ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed; + r19 = r18 >> 2; + r20 = heap32[(r19+51)]; + r20 = r20 | 1; + heap32[(r19+51)] = r20; + heap32[(r19+84)] = 0; + f0 = 0; + f1 = heapFloat[(r19+95)]; + f2 = heapFloat[(r19+94)]; + f3 = heapFloat[(r19+93)]; + f3 = f3*f0; + f2 = f2*f0; + heapFloat[(r19+89)] = f3; + f1 = f1*f0; + heapFloat[(r19+90)] = f2; + heapFloat[(r19+91)] = f1; + heap32[(r19+92)] = 0; + heap32[(r19+97)] = 0; + heap32[(r19+98)] = 0; + heap32[(r19+99)] = 0; + heap32[(r19+100)] = 0; + f1 = heapFloat[(r19+87)]; + f2 = heapFloat[(r19+86)]; + f3 = heapFloat[(r19+85)]; + f3 = f3*f0; + f2 = f2*f0; + heapFloat[(r19+138)] = f3; + f0 = f1*f0; + heapFloat[(r19+139)] = f2; + heapFloat[(r19+140)] = f0; + heap32[(r19+141)] = 0; +} +else{ + r18 = r13; +} + r19 = (r14 * 136)|0; + r17 = (r17 + r19)|0; + r17 = r17 >> 2; + heap32[(r17+26)] = r18; + if(r15 ==0) //_LBB612_135 +{ + r18 = _ZGVZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed; + r19 = heapU8[r18]; +if(!(r19 !=0)) //_LBB612_137 +{ + r19 = _ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed; + r20 = r19 >> 2; + heap32[(r20+41)] = 1065353216; + heap32[(r20+42)] = 1065353216; + heap32[(r20+43)] = 1065353216; + heap32[(r20+44)] = 0; + heap32[(r20+45)] = 0; + heap32[(r20+46)] = 1566444395; + heap32[(r20+47)] = 0; + heap32[(r20+48)] = 0; + heap32[(r20+49)] = 0; + heap32[(r20+50)] = 0; + heap32[(r20+51)] = 1; + heap32[(r20+52)] = -1; + heap32[(r20+53)] = -1; + heap32[(r20+54)] = 1; + heap32[(r20+55)] = 0; + heap32[(r20+56)] = 1056964608; + heap32[(r20+57)] = 0; + heap32[(r20+58)] = 1; + heap32[(r20+59)] = 0; + heap32[(r20+60)] = 1065353216; + heap32[(r20+61)] = 0; + heap32[(r20+62)] = 0; + heap32[(r20+63)] = 0; + heap32[(r20+1)] = 1065353216; + heap32[(r20+2)] = 0; + heap32[(r20+3)] = 0; + heap32[(r20+4)] = 0; + heap32[(r20+5)] = 0; + heap32[(r20+6)] = 1065353216; + heap32[(r20+7)] = 0; + heap32[(r20+8)] = 0; + heap32[(r20+9)] = 0; + heap32[(r20+10)] = 0; + heap32[(r20+11)] = 1065353216; + heap32[(r20+12)] = 0; + heap32[(r20+13)] = 0; + heap32[(r20+14)] = 0; + r21 = _ZTV11btRigidBody; + heap32[(r20+15)] = 0; + r21 = (r21 + 8)|0; + heap32[(r20+16)] = 0; + r22 = 1; + heap32[(r20)] = r21; + heap8[r19+492] = r22; + heap32[(r20+122)] = 0; + heap32[(r20+120)] = 0; + r21 = sp + -144; + heap32[(r20+121)] = 0; + r20 = r21 >> 2; + heap32[(fp+-36)] = 0; + heap32[(r20+1)] = 0; + heap32[(r20+18)] = 0; + heap32[(r20+19)] = 0; + heap32[(r20+20)] = 0; + heap32[(r20+21)] = 0; + heap32[(r20+22)] = 0; + heap32[(r20+23)] = 0; + heap32[(r20+24)] = 0; + heap32[(r20+25)] = 1056964608; + heap32[(r20+26)] = 0; + heap32[(r20+27)] = 1061997773; + heap32[(r20+28)] = 1065353216; + heap8[sp+-28] = r16; + heap32[(r20+30)] = 1000593162; + heap32[(r20+31)] = 1008981770; + heap32[(r20+32)] = 1008981770; + heap32[(r20+33)] = 1008981770; + heap32[(r20+2)] = 1065353216; + heap32[(r20+3)] = 0; + heap32[(r20+4)] = 0; + heap32[(r20+5)] = 0; + heap32[(r20+6)] = 0; + heap32[(r20+7)] = 1065353216; + heap32[(r20+8)] = 0; + heap32[(r20+9)] = 0; + heap32[(r20+10)] = 0; + heap32[(r20+11)] = 0; + heap32[(r20+12)] = 1065353216; + heap32[(r20+13)] = 0; + heap32[(r20+14)] = 0; + heap32[(r20+15)] = 0; + heap32[(r20+16)] = 0; + heap32[(r20+17)] = 0; + heap32[(g0)] = r19; + heap32[(g0+1)] = r21; + _ZN11btRigidBody14setupRigidBodyERKNS_27btRigidBodyConstructionInfoE(i7); + heap8[r18] = r22; +} + r18 = _ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed; + r19 = r18 >> 2; + r20 = heap32[(r19+51)]; + r20 = r20 | 1; + heap32[(r19+51)] = r20; + heap32[(r19+84)] = 0; + f0 = 0; + f1 = heapFloat[(r19+95)]; + f2 = heapFloat[(r19+94)]; + f3 = heapFloat[(r19+93)]; + f3 = f3*f0; + f2 = f2*f0; + heapFloat[(r19+89)] = f3; + f1 = f1*f0; + heapFloat[(r19+90)] = f2; + heapFloat[(r19+91)] = f1; + heap32[(r19+92)] = 0; + heap32[(r19+97)] = 0; + heap32[(r19+98)] = 0; + heap32[(r19+99)] = 0; + heap32[(r19+100)] = 0; + f1 = heapFloat[(r19+87)]; + f2 = heapFloat[(r19+86)]; + f3 = heapFloat[(r19+85)]; + f3 = f3*f0; + f2 = f2*f0; + heapFloat[(r19+138)] = f3; + f0 = f1*f0; + heapFloat[(r19+139)] = f2; + heapFloat[(r19+140)] = f0; + heap32[(r19+141)] = 0; +} +else{ + r18 = r15; +} + heap32[(r17+27)] = r18; + r18 = r1 >> 2; + heap32[(r17+28)] = r10; + r19 = r3 >> 2; + r20 = heap32[(r19+58)]; + r21 = heap32[(r18+58)]; + f0 = heapFloat[(r9+15)]; + f1 = heapFloat[(r19+15)]; + f2 = heapFloat[(r9+14)]; + f3 = heapFloat[(r19+14)]; + f4 = heapFloat[(r9+13)]; + f5 = heapFloat[(r19+13)]; + r19 = sp + -296; + f4 = f4-f5; + f2 = f2-f3; + r22 = r19 >> 2; + heapFloat[(fp+-74)] = f4; + f0 = f0-f1; + heapFloat[(r22+1)] = f2; + heapFloat[(r22+2)] = f0; + heap32[(r22+3)] = 0; + f1 = heapFloat[(r9+11)]; + f3 = heapFloat[(r18+15)]; + f5 = heapFloat[(r9+10)]; + f6 = heapFloat[(r18+14)]; + f7 = heapFloat[(r9+9)]; + f8 = heapFloat[(r18+13)]; + r18 = sp + -312; + f7 = f7-f8; + f5 = f5-f6; + r22 = r18 >> 2; + heapFloat[(fp+-78)] = f7; + f1 = f1-f3; + heapFloat[(r22+1)] = f5; + heapFloat[(r22+2)] = f1; + r23 = r8 >> 2; + heap32[(r22+3)] = 0; + r22 = r8 >> 2; + r24 = r8 >> 2; + r20 = r20 & 2; + r21 = r21 & 2; + r20 = r20 == 0 ? r16 : r3; + r16 = r21 == 0 ? r16 : r1; + if(r20 ==0) //_LBB612_140 +{ + heap32[(r17+12)] = 0; + heap32[(r17+13)] = 0; + f3 = 0; + heap32[(r17+14)] = 0; + heap32[(r17+15)] = 0; + f6 = f3; + f8 = f3; +} +else{ + f3 = heapFloat[(r23+17)]; + f6 = heapFloat[(r22+19)]; + f8 = heapFloat[(r24+18)]; + f9 = f4*f8; + f10 = f2*f3; + f3 = f0*f3; + f11 = f4*f6; + f6 = f2*f6; + f8 = f0*f8; + f9 = f9-f10; + f3 = f3-f11; + f6 = f6-f8; + r21 = r20 >> 2; + f8 = heapFloat[(r21+64)]; + f10 = heapFloat[(r21+65)]; + f11 = heapFloat[(r21+68)]; + f12 = heapFloat[(r21+69)]; + f8 = f8*f6; + f10 = f10*f3; + f13 = heapFloat[(r21+66)]; + f14 = heapFloat[(r21+72)]; + f15 = heapFloat[(r21+73)]; + f16 = heapFloat[(r21+70)]; + f11 = f11*f6; + f12 = f12*f3; + f8 = f8+f10; + f10 = f13*f9; + f13 = heapFloat[(r21+74)]; + f6 = f14*f6; + f3 = f15*f3; + f11 = f11+f12; + f12 = f16*f9; + f8 = f8+f10; + f10 = heapFloat[(r21+134)]; + f14 = heapFloat[(r21+136)]; + f15 = heapFloat[(r21+135)]; + f11 = f11+f12; + f8 = f8*f10; + f3 = f6+f3; + f6 = f13*f9; + f3 = f3+f6; + f6 = f11*f15; + heapFloat[(r17+12)] = f8; + f3 = f3*f14; + heapFloat[(r17+13)] = f6; + heapFloat[(r17+14)] = f3; + heap32[(r17+15)] = 0; +} + if(r16 ==0) //_LBB612_143 +{ + heap32[(r17+16)] = 0; + heap32[(r17+17)] = 0; + f10 = 0; + heap32[(r17+18)] = 0; + heap32[(r17+19)] = 0; + f11 = f10; + f9 = f10; +} +else{ + f9 = heapFloat[(r24+18)]; + f10 = heapFloat[(r23+17)]; + f11 = heapFloat[(r22+19)]; + f12 = f5*f11; + f13 = f1*f9; + r21 = r16 >> 2; + f12 = f12-f13; + f13 = f1*f10; + f11 = f7*f11; + f12 = -f12; + f14 = heapFloat[(r21+64)]; + f11 = f13-f11; + f13 = heapFloat[(r21+65)]; + f9 = f7*f9; + f10 = f5*f10; + f15 = heapFloat[(r21+68)]; + f16 = heapFloat[(r21+69)]; + f14 = f14*f12; + f13 = f13*f11; + f9 = f9-f10; + f10 = heapFloat[(r21+66)]; + f17 = heapFloat[(r21+72)]; + f18 = heapFloat[(r21+73)]; + f19 = heapFloat[(r21+70)]; + f15 = f15*f12; + f16 = f16*f11; + f13 = f14-f13; + f10 = f10*f9; + f14 = heapFloat[(r21+74)]; + f12 = f17*f12; + f11 = f18*f11; + f15 = f15-f16; + f16 = f19*f9; + f10 = f13-f10; + f13 = heapFloat[(r21+134)]; + f17 = heapFloat[(r21+136)]; + f18 = heapFloat[(r21+135)]; + f15 = f15-f16; + f10 = f10*f13; + f11 = f12-f11; + f9 = f14*f9; + f9 = f11-f9; + f11 = f15*f18; + heapFloat[(r17+16)] = f10; + f9 = f9*f17; + heapFloat[(r17+17)] = f11; + heapFloat[(r17+18)] = f9; + heap32[(r17+19)] = 0; +} + if(r20 !=0) //_LBB612_146 +{ + f12 = f6*f0; + f13 = f3*f2; + f3 = f3*f4; + f14 = f8*f0; + f15 = heapFloat[(r23+17)]; + f12 = f12-f13; + f13 = heapFloat[(r24+18)]; + f3 = f3-f14; + f8 = f8*f2; + f6 = f6*f4; + f12 = f15*f12; + f3 = f13*f3; + f13 = heapFloat[(r22+19)]; + f6 = f8-f6; + r21 = r20 >> 2; + f3 = f12+f3; + f6 = f13*f6; + f8 = heapFloat[(r21+84)]; + f3 = f3+f6; + f3 = f8+f3; +} +else{ + f3 = 0; +} + if(r16 !=0) //_LBB612_149 +{ + f6 = f5*f9; + f8 = f1*f11; + f12 = f1*f10; + f9 = f7*f9; + f13 = heapFloat[(r23+17)]; + f6 = f6-f8; + f8 = heapFloat[(r24+18)]; + f9 = f12-f9; + f11 = f7*f11; + f10 = f5*f10; + f6 = f13*f6; + f9 = f8*f9; + f8 = heapFloat[(r22+19)]; + f10 = f11-f10; + r21 = r16 >> 2; + f9 = f6+f9; + f6 = f8*f10; + f8 = heapFloat[(r21+84)]; + f9 = f9+f6; + f9 = f8+f9; +} +else{ + f9 = 0; +} + f6 = 1; + f3 = f3+f9; + f3 = f6/f3; + heapFloat[(r17+23)] = f3; + f3 = heapFloat[(r23+17)]; + heapFloat[(r17+4)] = f3; + f8 = heapFloat[(r24+18)]; + heapFloat[(r17+5)] = f8; + f9 = heapFloat[(r22+19)]; + heapFloat[(r17+6)] = f9; + heap32[(r17+7)] = heap32[(r9+20)]; + f10 = heapFloat[(r22+19)]; + f11 = heapFloat[(r24+18)]; + f12 = heapFloat[(r23+17)]; + f13 = f2*f10; + f14 = f0*f11; + f15 = f0*f12; + f10 = f4*f10; + f13 = f13-f14; + f11 = f4*f11; + f12 = f2*f12; + f10 = f15-f10; + heapFloat[(r17)] = f13; + f11 = f11-f12; + heapFloat[(r17+1)] = f10; + heapFloat[(r17+2)] = f11; + heap32[(r17+3)] = 0; + f10 = heapFloat[(r24+18)]; + f11 = heapFloat[(r22+19)]; + f12 = heapFloat[(r23+17)]; + f13 = f1*f10; + f14 = f5*f11; + f11 = f7*f11; + f15 = f1*f12; + f13 = f13-f14; + f12 = f5*f12; + f10 = f7*f10; + f11 = f11-f15; + heapFloat[(r17+8)] = f13; + f10 = f12-f10; + heapFloat[(r17+9)] = f11; + heapFloat[(r17+10)] = f10; + heap32[(r17+11)] = 0; + if(r20 !=0) //_LBB612_152 +{ + r21 = r20 >> 2; + f10 = heapFloat[(r21+81)]; + f11 = heapFloat[(r21+80)]; + f12 = heapFloat[(r21+82)]; + f13 = f11*f2; + f14 = f10*f4; + f4 = f12*f4; + f11 = f11*f0; + f0 = f10*f0; + f2 = f12*f2; + f10 = heapFloat[(r21+78)]; + f12 = f13-f14; + f13 = heapFloat[(r21+77)]; + f11 = f4-f11; + f14 = heapFloat[(r21+76)]; + f0 = f0-f2; + f4 = f10+f12; + f2 = f13+f11; + f0 = f14+f0; +} +else{ + f0 = 0; + f2 = f0; + f4 = f0; +} + if(r16 !=0) //_LBB612_155 +{ + r21 = r16 >> 2; + f10 = heapFloat[(r21+81)]; + f11 = heapFloat[(r21+80)]; + f12 = heapFloat[(r21+82)]; + f13 = f11*f5; + f14 = f10*f7; + f7 = f12*f7; + f11 = f11*f1; + f1 = f10*f1; + f5 = f12*f5; + f10 = heapFloat[(r21+78)]; + f12 = f13-f14; + f13 = heapFloat[(r21+77)]; + f11 = f7-f11; + f14 = heapFloat[(r21+76)]; + f1 = f1-f5; + f7 = f10+f12; + f5 = f13+f11; + f1 = f14+f1; +} +else{ + f1 = 0; + f5 = f1; + f7 = f1; +} + f0 = f0-f1; + f1 = f2-f5; + f2 = heapFloat[(r23+17)]; + f5 = heapFloat[(r24+18)]; + f4 = f4-f7; + f7 = heapFloat[(r22+19)]; + f2 = f2*f0; + f5 = f5*f1; + f2 = f2+f5; + f5 = f7*f4; + f7 = heapFloat[(r9+21)]; + f10 = heapFloat[(r6+13)]; + f2 = f2+f5; + f5 = f7+f10; + heap32[(r17+22)] = heap32[(r9+22)]; + r21 = heap32[(r9+37)]; + r25 = heap32[(r6+16)]; + if(r21 >r25) //_LBB612_159 +{ +__label__ = 151; +} +else{ + f7 = heapFloat[(r9+23)]; + f10 = -f2; + f7 = f7*f10; + f10 = 0; + if(f7 <=f10) //_LBB612_159 +{ +__label__ = 151; +} +else{ +__label__ = 152; +} +} +if (__label__ == 151){ + f7 = 0; +} + r21 = heapU8[r5+60]; + r21 = r21 & 4; + if(r21 ==0) //_LBB612_167 +{ + heap32[(r17+21)] = 0; +} +else{ + f10 = heapFloat[(r9+29)]; + f11 = heapFloat[(r6+14)]; + f10 = f10*f11; + heapFloat[(r17+21)] = f10; +if(!(r20 ==0)) //_LBB612_164 +{ + r21 = r20 >> 2; + f11 = heapFloat[(r21+84)]; + f12 = 0; +if(!(f11 ==f12)) //_LBB612_164 +{ + f3 = f3*f11; + f12 = heapFloat[(r21+85)]; + f3 = f3*f12; + f3 = f3*f10; + f12 = heapFloat[(r21+126)]; + f13 = heapFloat[(r21+86)]; + f14 = heapFloat[(r21+87)]; + f8 = f8*f11; + f3 = f12+f3; + f8 = f8*f13; + heapFloat[(r21+126)] = f3; + f3 = f8*f10; + f8 = heapFloat[(r21+127)]; + f9 = f9*f11; + f3 = f8+f3; + f8 = f9*f14; + heapFloat[(r21+127)] = f3; + f3 = f8*f10; + f8 = heapFloat[(r21+128)]; + f3 = f8+f3; + heapFloat[(r21+128)] = f3; + f3 = heapFloat[(r21+134)]; + f3 = f3*f10; + f8 = heapFloat[(r17+12)]; + f9 = heapFloat[(r21+136)]; + f11 = heapFloat[(r21+135)]; + f3 = f8*f3; + f8 = heapFloat[(r21+130)]; + f12 = heapFloat[(r17+14)]; + f13 = heapFloat[(r17+13)]; + f3 = f8+f3; + f8 = f11*f10; + heapFloat[(r21+130)] = f3; + f3 = f13*f8; + f8 = heapFloat[(r21+131)]; + f3 = f8+f3; + f8 = f9*f10; + heapFloat[(r21+131)] = f3; + f3 = f12*f8; + f8 = heapFloat[(r21+132)]; + f3 = f8+f3; + heapFloat[(r21+132)] = f3; +} +} +if(!(r16 ==0)) //_LBB612_168 +{ + r21 = r16 >> 2; + f3 = heapFloat[(r21+84)]; + f8 = 0; +if(!(f3 ==f8)) //_LBB612_168 +{ + f8 = heapFloat[(r17+21)]; + f8 = -f8; + f9 = heapFloat[(r17+4)]; + f9 = f9*f3; + f10 = heapFloat[(r21+85)]; + f9 = f9*f10; + f10 = heapFloat[(r17+5)]; + f11 = heapFloat[(r17+6)]; + f9 = f9*f8; + f12 = heapFloat[(r21+126)]; + f13 = heapFloat[(r21+86)]; + f14 = heapFloat[(r21+87)]; + f15 = heapFloat[(r17+16)]; + f16 = heapFloat[(r17+17)]; + f17 = heapFloat[(r17+18)]; + f10 = f10*f3; + f9 = f12+f9; + f10 = f10*f13; + heapFloat[(r21+126)] = f9; + f9 = f10*f8; + f10 = heapFloat[(r21+127)]; + f3 = f11*f3; + f9 = f10+f9; + f3 = f3*f14; + heapFloat[(r21+127)] = f9; + f3 = f3*f8; + f9 = heapFloat[(r21+128)]; + f3 = f9+f3; + heapFloat[(r21+128)] = f3; + f3 = heapFloat[(r21+134)]; + f3 = f3*f8; + f9 = heapFloat[(r21+136)]; + f10 = heapFloat[(r21+135)]; + f11 = heapFloat[(r21+130)]; + f3 = f3*f15; + f3 = f11-f3; + f10 = f10*f8; + heapFloat[(r21+130)] = f3; + f3 = f10*f16; + f10 = heapFloat[(r21+131)]; + f3 = f10-f3; + f8 = f9*f8; + heapFloat[(r21+131)] = f3; + f3 = f8*f17; + f8 = heapFloat[(r21+132)]; + f3 = f8-f3; + heapFloat[(r21+132)] = f3; +} +} +} + heap32[(r17+20)] = 0; + if(r20 !=0) //_LBB612_170 +{ + r21 = r20 >> 2; + f9 = heapFloat[(r21+76)]; + f8 = heapFloat[(r21+77)]; + f3 = heapFloat[(r21+78)]; +} +else{ + f3 = 0; + f8 = f3; + f9 = f3; +} + f10 = heapFloat[(r17+4)]; + f11 = heapFloat[(r17+5)]; + f12 = heapFloat[(r17+6)]; + f9 = f10*f9; + f8 = f11*f8; + f8 = f9+f8; + f3 = f12*f3; + f3 = f8+f3; + if(r20 !=0) //_LBB612_173 +{ + r20 = r20 >> 2; + f13 = heapFloat[(r20+80)]; + f9 = heapFloat[(r20+81)]; + f8 = heapFloat[(r20+82)]; +} +else{ + f8 = 0; + f9 = f8; + f13 = f8; +} + f14 = heapFloat[(r17)]; + f15 = heapFloat[(r17+1)]; + f13 = f14*f13; + f9 = f15*f9; + f14 = heapFloat[(r17+2)]; + f9 = f13+f9; + f8 = f14*f8; + f8 = f9+f8; + f3 = f3+f8; + if(r16 !=0) //_LBB612_176 +{ + r20 = r16 >> 2; + f13 = heapFloat[(r20+80)]; + f9 = heapFloat[(r20+81)]; + f8 = heapFloat[(r20+82)]; +} +else{ + f8 = 0; + f9 = f8; + f13 = f8; +} + f14 = heapFloat[(r17+8)]; + f15 = heapFloat[(r17+9)]; + f13 = f14*f13; + f9 = f15*f9; + f14 = heapFloat[(r17+10)]; + f9 = f13+f9; + f8 = f14*f8; + f8 = f9+f8; + if(r16 !=0) //_LBB612_179 +{ + r16 = r16 >> 2; + f14 = heapFloat[(r16+76)]; + f13 = heapFloat[(r16+77)]; + f9 = heapFloat[(r16+78)]; +} +else{ + f9 = 0; + f13 = f9; + f14 = f9; +} + f10 = f10*f14; + f11 = f11*f13; + f10 = f10+f11; + f9 = f12*f9; + f9 = f10+f9; + f10 = heapFloat[(r6+8)]; + f11 = -f5; + f8 = f8-f9; + f9 = f10*f11; + f10 = heapFloat[(r6+3)]; + f3 = f3+f8; + f8 = f9/f10; + f9 = heapFloat[(r17+23)]; + f3 = f7-f3; + f7 = f9*f8; + f3 = f9*f3; + r16 = heap32[(r6+11)]; + if(r16 ==0) //_LBB612_182 +{ +__label__ = 174; +} +else{ + f8 = heapFloat[(r6+12)]; + if(f8 >=f5) //_LBB612_183 +{ + heapFloat[(r17+29)] = f3; + heapFloat[(r17+33)] = f7; +__label__ = 176; +} +else{ +__label__ = 174; +} +} +if (__label__ == 174){ + f3 = f7+f3; + heapFloat[(r17+29)] = f3; + heap32[(r17+33)] = 0; +} + heap32[(r17+30)] = 0; + heap32[(r17+31)] = 0; + heap32[(r17+32)] = 1343554297; + r16 = heap32[(r2+12)]; + heap32[(r17+25)] = r16; + r16 = heapU8[r5+60]; + r16 = r16 & 32; + if(r16 ==0) //_LBB612_186 +{ +__label__ = 178; +} +else{ + r16 = heapU8[r8+120]; + if(r16 !=0) //_LBB612_200 +{ + r16 = r8 >> 2; + f0 = heapFloat[(r9+35)]; + f1 = heapFloat[(r16+33)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r12; + heap32[(g0+2)] = r14; + heap32[(g0+3)] = r10; + heap32[(g0+4)] = r19; + heap32[(g0+5)] = r18; + heap32[(g0+6)] = r3; + heap32[(g0+7)] = r1; + heap32[(g0+8)] = 1065353216; + heapFloat[(g0+9)] = f1; + heapFloat[(g0+10)] = f0; + _ZN35btSequentialImpulseConstraintSolver21addFrictionConstraintERK9btVector3P11btRigidBodyS4_iR15btManifoldPointS2_S2_P17btCollisionObjectS8_fff(i7); + r12 = heapU8[r5+60]; + r12 = r12 & 16; + if(r12 ==0) //_LBB612_202 +{ +__label__ = 194; +} +else{ + r12 = r8 >> 2; + r8 = r8 >> 2; + f0 = heapFloat[(r12+36)]; + f1 = heapFloat[(r8+34)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r11; + heap32[(g0+2)] = r14; + heap32[(g0+3)] = r10; + heap32[(g0+4)] = r19; + heap32[(g0+5)] = r18; + heap32[(g0+6)] = r3; + heap32[(g0+7)] = r1; + heap32[(g0+8)] = 1065353216; + heapFloat[(g0+9)] = f1; + heapFloat[(g0+10)] = f0; + _ZN35btSequentialImpulseConstraintSolver21addFrictionConstraintERK9btVector3P11btRigidBodyS4_iR15btManifoldPointS2_S2_P17btCollisionObjectS8_fff(i7); +__label__ = 194; +} +} +else{ +__label__ = 178; +} +} +_259: do { +if (__label__ == 178){ + f3 = heapFloat[(r23+17)]; + f5 = heapFloat[(r22+19)]; + f7 = heapFloat[(r24+18)]; + f8 = f3*f2; + f0 = f0-f8; + f8 = f7*f2; + r16 = r8 >> 2; + f1 = f1-f8; + f2 = f5*f2; + r20 = r8 >> 2; + heapFloat[(r16+38)] = f0; + f2 = f4-f2; + r21 = r8 >> 2; + heapFloat[(r20+39)] = f1; + r25 = r8 >> 2; + heapFloat[(r21+40)] = f2; + heap32[(r25+41)] = 0; + r25 = heapU8[r5+60]; + r25 = r25 & 64; +if(!(r25 !=0)) //_LBB612_191 +{ + f0 = f0*f0; + f1 = f1*f1; + f0 = f0+f1; + f1 = f2*f2; + f0 = f0+f1; + f1 = 1.1920928955078125e-007; +if(!(f0 <=f1)) //_LBB612_191 +{ + heapFloat[(g0)] = f0; + sqrtf(i7); + f3 = f6/f_g0; + f5 = heapFloat[(r16+38)]; + f5 = f5*f3; + heapFloat[(r16+38)] = f5; + f7 = heapFloat[(r20+39)]; + f7 = f7*f3; + heapFloat[(r20+39)] = f7; + f0 = heapFloat[(r21+40)]; + f3 = f0*f3; + heapFloat[(r21+40)] = f3; + r16 = heapU8[r5+60]; + r16 = r16 & 16; +if(!(r16 ==0)) //_LBB612_190 +{ + f0 = heapFloat[(r22+19)]; + f1 = heapFloat[(r24+18)]; + f2 = heapFloat[(r23+17)]; + f4 = f7*f0; + f8 = f3*f1; + f4 = f4-f8; + f3 = f3*f2; + f0 = f5*f0; + r16 = r8 >> 2; + f3 = f3-f0; + f5 = f5*f1; + f7 = f7*f2; + r20 = r8 >> 2; + heapFloat[(r16+42)] = f4; + f5 = f5-f7; + r21 = r8 >> 2; + heapFloat[(r20+43)] = f3; + f7 = f4*f4; + f3 = f3*f3; + r22 = r8 >> 2; + heapFloat[(r21+44)] = f5; + heap32[(r22+45)] = 0; + f3 = f7+f3; + f5 = f5*f5; + f3 = f3+f5; + heapFloat[(g0)] = f3; + sqrtf(i7); + f3 = f6/f_g0; + f5 = heapFloat[(r16+42)]; + f5 = f5*f3; + heapFloat[(r16+42)] = f5; + f5 = heapFloat[(r20+43)]; + f5 = f5*f3; + heapFloat[(r20+43)] = f5; + f5 = heapFloat[(r21+44)]; + f3 = f5*f3; + heapFloat[(r21+44)] = f3; + heap32[(g0)] = r3; + heap32[(g0+1)] = r11; + _Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(i7); + heap32[(g0)] = r1; + heap32[(g0+1)] = r11; + _Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(i7); + heap32[(g0)] = r0; + heap32[(g0+1)] = r11; + heap32[(g0+2)] = r14; + heap32[(g0+3)] = r10; + heap32[(g0+4)] = r19; + heap32[(g0+5)] = r18; + heap32[(g0+6)] = r3; + heap32[(g0+7)] = r1; + heap32[(g0+8)] = 1065353216; + heap32[(g0+9)] = 0; + heap32[(g0+10)] = 0; + _ZN35btSequentialImpulseConstraintSolver21addFrictionConstraintERK9btVector3P11btRigidBodyS4_iR15btManifoldPointS2_S2_P17btCollisionObjectS8_fff(i7); +} + heap32[(g0)] = r3; + heap32[(g0+1)] = r12; + _Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(i7); + heap32[(g0)] = r1; + heap32[(g0+1)] = r12; + _Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(i7); + heap32[(g0)] = r0; + heap32[(g0+1)] = r12; + heap32[(g0+2)] = r14; + heap32[(g0+3)] = r10; + heap32[(g0+4)] = r19; + heap32[(g0+5)] = r18; + heap32[(g0+6)] = r3; + heap32[(g0+7)] = r1; + heap32[(g0+8)] = 1065353216; + heap32[(g0+9)] = 0; + heap32[(g0+10)] = 0; + r10 = 1; + _ZN35btSequentialImpulseConstraintSolver21addFrictionConstraintERK9btVector3P11btRigidBodyS4_iR15btManifoldPointS2_S2_P17btCollisionObjectS8_fff(i7); + heap8[r8+120] = r10; +break _259; +} +} + f0 = 0; + if(f5 > 2; + f2 = f2*f5; + f3 = f3*f0; + r20 = r8 >> 2; + f0 = f4*f1; + heapFloat[(r16+42)] = f2; + heapFloat[(r20+43)] = f0; +} +else{ + f3 = f7*f7; + f7 = f5*f5; + f3 = f3+f7; + heapFloat[(g0)] = f3; + sqrtf(i7); + heap32[(r16+38)] = 0; + f0 = heapFloat[(r22+19)]; + f6 = f6/f_g0; + f7 = -f0; + f7 = f6*f7; + heapFloat[(r20+39)] = f7; + f0 = heapFloat[(r24+18)]; + f0 = f0*f6; + r16 = r8 >> 2; + f3 = f3*f6; + heapFloat[(r21+40)] = f0; + heapFloat[(r16+42)] = f3; + f3 = heapFloat[(r23+17)]; + f6 = -f3; + f3 = f3*f7; + r16 = r8 >> 2; + f6 = f0*f6; + heapFloat[(r16+43)] = f6; +} + r16 = r8 >> 2; + heapFloat[(r16+44)] = f3; + r16 = heapU8[r5+60]; + r16 = r16 & 16; +if(!(r16 ==0)) //_LBB612_199 +{ + heap32[(g0)] = r3; + heap32[(g0+1)] = r11; + _Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(i7); + heap32[(g0)] = r1; + heap32[(g0+1)] = r11; + _Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(i7); + heap32[(g0)] = r0; + heap32[(g0+1)] = r11; + heap32[(g0+2)] = r14; + heap32[(g0+3)] = r10; + heap32[(g0+4)] = r19; + heap32[(g0+5)] = r18; + heap32[(g0+6)] = r3; + heap32[(g0+7)] = r1; + heap32[(g0+8)] = 1065353216; + heap32[(g0+9)] = 0; + heap32[(g0+10)] = 0; + _ZN35btSequentialImpulseConstraintSolver21addFrictionConstraintERK9btVector3P11btRigidBodyS4_iR15btManifoldPointS2_S2_P17btCollisionObjectS8_fff(i7); +} + heap32[(g0)] = r3; + heap32[(g0+1)] = r12; + _Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(i7); + heap32[(g0)] = r1; + heap32[(g0+1)] = r12; + _Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(i7); + heap32[(g0)] = r0; + heap32[(g0+1)] = r12; + heap32[(g0+2)] = r14; + heap32[(g0+3)] = r10; + heap32[(g0+4)] = r19; + heap32[(g0+5)] = r18; + heap32[(g0+6)] = r3; + heap32[(g0+7)] = r1; + heap32[(g0+8)] = 1065353216; + heap32[(g0+9)] = 0; + heap32[(g0+10)] = 0; + r10 = 1; + _ZN35btSequentialImpulseConstraintSolver21addFrictionConstraintERK9btVector3P11btRigidBodyS4_iR15btManifoldPointS2_S2_P17btCollisionObjectS8_fff(i7); + heap8[r8+120] = r10; +} +} while(0); + r8 = heap32[(r6+15)]; + r10 = heap32[(r17+25)]; + r11 = heap32[(r2+14)]; + r12 = r8 & 8; + if(r12 ==0) //_LBB612_220 +{ + r8 = (r10 * 136)|0; + r8 = (r11 + r8)|0; + r8 = r8 >> 2; + heap32[(r8+21)] = 0; + r8 = heapU8[r5+60]; + r8 = r8 & 16; + if(r8 ==0) //_LBB612_222 +{ +break _153; +} +else{ + r8 = heap32[(r17+25)]; + r9 = heap32[(r2+14)]; + r8 = (r8 * 136)|0; + r8 = (r8 + r9)|0; + r8 = r8 >> 2; + heap32[(r8+55)] = 0; +} +} +else{ + r8 = r8 & 4; + if(r8 ==0) //_LBB612_210 +{ + r10 = (r10 * 136)|0; + r10 = (r11 + r10)|0; + r10 = r10 >> 2; + heap32[(r10+21)] = 0; +} +else{ + r10 = (r10 * 136)|0; + r10 = (r11 + r10)|0; + f0 = heapFloat[(r9+31)]; + f1 = heapFloat[(r6+14)]; + f0 = f0*f1; + r10 = r10 >> 2; + heapFloat[(r10+21)] = f0; +if(!(r13 ==0)) //_LBB612_207 +{ + r11 = r13 >> 2; + f1 = heapFloat[(r11+84)]; + f2 = 0; +if(!(f1 ==f2)) //_LBB612_207 +{ + f2 = heapFloat[(r10+4)]; + f2 = f2*f1; + f3 = heapFloat[(r11+85)]; + f2 = f2*f3; + f3 = heapFloat[(r10+5)]; + f4 = heapFloat[(r10+6)]; + f2 = f2*f0; + f5 = heapFloat[(r11+126)]; + f6 = heapFloat[(r11+86)]; + f7 = heapFloat[(r11+87)]; + f3 = f3*f1; + f2 = f5+f2; + f3 = f3*f6; + heapFloat[(r11+126)] = f2; + f2 = f3*f0; + f3 = heapFloat[(r11+127)]; + f1 = f4*f1; + f2 = f3+f2; + f1 = f1*f7; + heapFloat[(r11+127)] = f2; + f1 = f1*f0; + f2 = heapFloat[(r11+128)]; + f1 = f2+f1; + heapFloat[(r11+128)] = f1; + f1 = heapFloat[(r11+134)]; + f1 = f1*f0; + f2 = heapFloat[(r10+12)]; + f3 = heapFloat[(r11+136)]; + f4 = heapFloat[(r11+135)]; + f1 = f2*f1; + f2 = heapFloat[(r11+130)]; + f5 = heapFloat[(r10+14)]; + f6 = heapFloat[(r10+13)]; + f1 = f2+f1; + f2 = f4*f0; + heapFloat[(r11+130)] = f1; + f1 = f6*f2; + f2 = heapFloat[(r11+131)]; + f1 = f2+f1; + f0 = f3*f0; + heapFloat[(r11+131)] = f1; + f0 = f5*f0; + f1 = heapFloat[(r11+132)]; + f0 = f1+f0; + heapFloat[(r11+132)] = f0; +} +} +if(!(r15 ==0)) //_LBB612_211 +{ + r11 = r15 >> 2; + f0 = heapFloat[(r11+84)]; + f1 = 0; +if(!(f0 ==f1)) //_LBB612_211 +{ + f1 = heapFloat[(r10+21)]; + f1 = -f1; + f2 = heapFloat[(r10+4)]; + f2 = f2*f0; + f3 = heapFloat[(r11+85)]; + f2 = f2*f3; + f3 = heapFloat[(r10+5)]; + f4 = heapFloat[(r10+6)]; + f2 = f2*f1; + f5 = heapFloat[(r11+126)]; + f6 = heapFloat[(r11+86)]; + f7 = heapFloat[(r11+87)]; + f8 = heapFloat[(r10+16)]; + f9 = heapFloat[(r10+17)]; + f10 = heapFloat[(r10+18)]; + f3 = f3*f0; + f2 = f5+f2; + f3 = f3*f6; + heapFloat[(r11+126)] = f2; + f2 = f3*f1; + f3 = heapFloat[(r11+127)]; + f0 = f4*f0; + f2 = f3+f2; + f0 = f0*f7; + heapFloat[(r11+127)] = f2; + f0 = f0*f1; + f2 = heapFloat[(r11+128)]; + f0 = f2+f0; + heapFloat[(r11+128)] = f0; + f0 = heapFloat[(r11+134)]; + f0 = f0*f1; + f2 = heapFloat[(r11+136)]; + f3 = heapFloat[(r11+135)]; + f4 = heapFloat[(r11+130)]; + f0 = f0*f8; + f0 = f4-f0; + f3 = f3*f1; + heapFloat[(r11+130)] = f0; + f0 = f3*f9; + f3 = heapFloat[(r11+131)]; + f0 = f3-f0; + f1 = f2*f1; + heapFloat[(r11+131)] = f0; + f0 = f1*f10; + f1 = heapFloat[(r11+132)]; + f0 = f1-f0; + heapFloat[(r11+132)] = f0; +} +} +} + r10 = heap32[(r6+15)]; + r11 = r10 & 16; +if(!(r11 ==0)) //_LBB612_222 +{ + r11 = heap32[(r17+25)]; + r17 = heap32[(r2+14)]; + r10 = r10 & 4; + if(r10 ==0) //_LBB612_219 +{ + r10 = (r11 * 136)|0; + r10 = (r17 + r10)|0; + r10 = r10 >> 2; + heap32[(r10+55)] = 0; +} +else{ + r11 = (r11 * 136)|0; + r11 = (r17 + r11)|0; + f0 = heapFloat[(r9+32)]; + f1 = heapFloat[(r6+14)]; + f0 = f0*f1; + r11 = r11 >> 2; + heapFloat[(r11+55)] = f0; +if(!(r13 ==0)) //_LBB612_216 +{ + r17 = r13 >> 2; + f1 = heapFloat[(r17+84)]; + f2 = 0; +if(!(f1 ==f2)) //_LBB612_216 +{ + f2 = heapFloat[(r11+38)]; + f2 = f2*f1; + f3 = heapFloat[(r11+39)]; + f4 = heapFloat[(r11+40)]; + f5 = heapFloat[(r17+126)]; + f2 = f2*f0; + f2 = f5+f2; + f3 = f3*f1; + heapFloat[(r17+126)] = f2; + f2 = f3*f0; + f3 = heapFloat[(r17+127)]; + f2 = f3+f2; + f1 = f4*f1; + heapFloat[(r17+127)] = f2; + f1 = f1*f0; + f2 = heapFloat[(r17+128)]; + f1 = f2+f1; + heapFloat[(r17+128)] = f1; + f1 = heapFloat[(r17+134)]; + f1 = f1*f0; + f2 = heapFloat[(r11+46)]; + f3 = heapFloat[(r17+136)]; + f4 = heapFloat[(r17+135)]; + f1 = f2*f1; + f2 = heapFloat[(r17+130)]; + f5 = heapFloat[(r11+48)]; + f6 = heapFloat[(r11+47)]; + f1 = f2+f1; + f2 = f4*f0; + heapFloat[(r17+130)] = f1; + f1 = f6*f2; + f2 = heapFloat[(r17+131)]; + f1 = f2+f1; + f0 = f3*f0; + heapFloat[(r17+131)] = f1; + f0 = f5*f0; + f1 = heapFloat[(r17+132)]; + f0 = f1+f0; + heapFloat[(r17+132)] = f0; +} +} +if(!(r15 ==0)) //_LBB612_222 +{ + r17 = r15 >> 2; + f0 = heapFloat[(r17+84)]; + f1 = 0; +if(!(f0 ==f1)) //_LBB612_222 +{ + f1 = heapFloat[(r11+55)]; + f1 = -f1; + f2 = heapFloat[(r11+38)]; + f2 = f2*f0; + f3 = heapFloat[(r11+39)]; + f4 = heapFloat[(r11+40)]; + f2 = f2*f1; + f5 = heapFloat[(r17+126)]; + f6 = heapFloat[(r11+50)]; + f7 = heapFloat[(r11+51)]; + f8 = heapFloat[(r11+52)]; + f2 = f5+f2; + f3 = f3*f0; + heapFloat[(r17+126)] = f2; + f2 = f3*f1; + f3 = heapFloat[(r17+127)]; + f2 = f3+f2; + f0 = f4*f0; + heapFloat[(r17+127)] = f2; + f0 = f0*f1; + f2 = heapFloat[(r17+128)]; + f0 = f2+f0; + heapFloat[(r17+128)] = f0; + f0 = heapFloat[(r17+134)]; + f0 = f0*f1; + f2 = heapFloat[(r17+136)]; + f3 = heapFloat[(r17+135)]; + f4 = heapFloat[(r17+130)]; + f0 = f0*f6; + f0 = f4-f0; + f3 = f3*f1; + heapFloat[(r17+130)] = f0; + f0 = f3*f7; + f3 = heapFloat[(r17+131)]; + f0 = f3-f0; + f1 = f2*f1; + heapFloat[(r17+131)] = f0; + f0 = f1*f8; + f1 = heapFloat[(r17+132)]; + f0 = f1-f0; + heapFloat[(r17+132)] = f0; +} +} +} +} +} +} +} while(0); + r7 = (r7 + 1)|0; + r4 = (r4 + 276)|0; +} +else{ +break _150; +} +} +} + r1 = heap32[(fp+-133)]; + r1 = (r1 + -1)|0; + heap32[(fp+-133)] = r1; + r3 = heap32[(fp+-132)]; + r3 = (r3 + 4)|0; + heap32[(fp+-132)] = r3; +if(!(r1 !=0)) //_LBB612_97 +{ +break _132; +} +} +} +} while(0); + r1 = heap32[(r2+17)]; + r3 = heap32[(r2+2)]; + r4 = heap32[(r2+12)]; +_307: do { +if(!(r1 >r3)) //_LBB612_244 +{ +if(!(r1 >=r3)) //_LBB612_244 +{ + r5 = heap32[(r2+18)]; +if(!(r5 >=r3)) //_LBB612_243 +{ + if(r3 !=0) //_LBB612_230 +{ + r5 = gNumAlignedAllocs; + r5 = r5 >> 2; + r6 = heap32[(r5)]; + r7 = r3 << 2; + r6 = (r6 + 1)|0; + r7 = r7 | 3; + heap32[(r5)] = r6; + r5 = (r7 + 16)|0; + heap32[(g0)] = r5; + malloc(i7); + r5 = r_g0; + if(r5 !=0) //_LBB612_232 +{ + r6 = 0; + r7 = (r5 + 4)|0; + r6 = (r6 - r7)|0; + r6 = r6 & 15; + r6 = (r5 + r6)|0; + r7 = (r6 + 4)|0; + r6 = r6 >> 2; + heap32[(r6)] = r5; + r5 = r7; +} +} +else{ + r5 = 0; +} + r6 = (r0 + 76)|0; + if(r1 <1) //_LBB612_235 +{ + r7 = r6 >> 2; + r8 = heap32[(r7)]; +} +else{ + r7 = 0; +_320: while(true){ + r8 = r6 >> 2; + r8 = heap32[(r8)]; + r9 = r7 << 2; + r10 = (r8 + r9)|0; + r10 = r10 >> 2; + r9 = (r5 + r9)|0; + r10 = heap32[(r10)]; + r7 = (r7 + 1)|0; + r9 = r9 >> 2; + heap32[(r9)] = r10; +if(!(r1 !=r7)) //_LBB612_236 +{ +break _320; +} +} + r6 = (r0 + 76)|0; +} +if(!(r8 ==0)) //_LBB612_242 +{ + r7 = heapU8[r0+80]; +if(!(r7 ==0)) //_LBB612_241 +{ + r7 = gNumAlignedFree; + r7 = r7 >> 2; + r9 = heap32[(r7)]; + r9 = (r9 + 1)|0; + r8 = r8 >> 2; + heap32[(r7)] = r9; + r7 = heap32[(r8+-1)]; + heap32[(g0)] = r7; + free(i7); +} + r7 = r6 >> 2; + heap32[(r7)] = 0; +} + r7 = 1; + r6 = r6 >> 2; + heap8[r0+80] = r7; + heap32[(r6)] = r5; + heap32[(r2+18)] = r3; + if(r1 >=r3) //_LBB612_244 +{ +break _307; +} +} +_330: while(true){ + r5 = r1 << 2; + r6 = heap32[(r2+19)]; + r5 = (r6 + r5)|0; + r1 = (r1 + 1)|0; + r5 = r5 >> 2; + heap32[(r5)] = 0; +if(!(r3 !=r1)) //_LBB612_243 +{ +break _307; +} +} +} +} +} while(0); + heap32[(r2+17)] = r3; + r1 = heap32[(r2+22)]; +_333: do { +if(!(r1 >r4)) //_LBB612_263 +{ +if(!(r1 >=r4)) //_LBB612_263 +{ + r5 = heap32[(r2+23)]; +if(!(r5 >=r4)) //_LBB612_262 +{ + if(r4 !=0) //_LBB612_249 +{ + r5 = gNumAlignedAllocs; + r5 = r5 >> 2; + r6 = heap32[(r5)]; + r7 = r4 << 2; + r6 = (r6 + 1)|0; + r7 = r7 | 3; + heap32[(r5)] = r6; + r5 = (r7 + 16)|0; + heap32[(g0)] = r5; + malloc(i7); + r5 = r_g0; + if(r5 !=0) //_LBB612_251 +{ + r6 = 0; + r7 = (r5 + 4)|0; + r6 = (r6 - r7)|0; + r6 = r6 & 15; + r6 = (r5 + r6)|0; + r7 = (r6 + 4)|0; + r6 = r6 >> 2; + heap32[(r6)] = r5; + r5 = r7; +} +} +else{ + r5 = 0; +} + r6 = (r0 + 96)|0; + if(r1 <1) //_LBB612_254 +{ + r7 = r6 >> 2; + r8 = heap32[(r7)]; +} +else{ + r7 = 0; +_346: while(true){ + r8 = r6 >> 2; + r8 = heap32[(r8)]; + r9 = r7 << 2; + r10 = (r8 + r9)|0; + r10 = r10 >> 2; + r9 = (r5 + r9)|0; + r10 = heap32[(r10)]; + r7 = (r7 + 1)|0; + r9 = r9 >> 2; + heap32[(r9)] = r10; +if(!(r1 !=r7)) //_LBB612_255 +{ +break _346; +} +} + r6 = (r0 + 96)|0; +} +if(!(r8 ==0)) //_LBB612_261 +{ + r7 = heapU8[r0+100]; +if(!(r7 ==0)) //_LBB612_260 +{ + r7 = gNumAlignedFree; + r7 = r7 >> 2; + r9 = heap32[(r7)]; + r9 = (r9 + 1)|0; + r8 = r8 >> 2; + heap32[(r7)] = r9; + r7 = heap32[(r8+-1)]; + heap32[(g0)] = r7; + free(i7); +} + r7 = r6 >> 2; + heap32[(r7)] = 0; +} + r7 = 1; + r6 = r6 >> 2; + heap8[r0+100] = r7; + heap32[(r6)] = r5; + heap32[(r2+23)] = r4; + if(r1 >=r4) //_LBB612_263 +{ +break _333; +} +} +_356: while(true){ + r0 = r1 << 2; + r5 = heap32[(r2+24)]; + r0 = (r5 + r0)|0; + r1 = (r1 + 1)|0; + r0 = r0 >> 2; + heap32[(r0)] = 0; +if(!(r4 !=r1)) //_LBB612_262 +{ +break _333; +} +} +} +} +} while(0); + heap32[(r2+22)] = r4; +_359: do { +if(!(r3 <1)) //_LBB612_266 +{ + r0 = 0; +_361: while(true){ + r1 = r0 << 2; + r5 = heap32[(r2+19)]; + r1 = (r5 + r1)|0; + r5 = (r0 + 1)|0; + r1 = r1 >> 2; + heap32[(r1)] = r0; + r0 = r5; +if(!(r3 !=r5)) //_LBB612_265 +{ +break _359; +} +} +} +} while(0); + if(r4 <1) //_LBB612_269 +{ +break _1; +} +else{ + r0 = 0; +_365: while(true){ + r1 = r0 << 2; + r3 = heap32[(r2+24)]; + r1 = (r3 + r1)|0; + r3 = (r0 + 1)|0; + r1 = r1 >> 2; + heap32[(r1)] = r0; + r0 = r3; +if(!(r4 !=r3)) //_LBB612_268 +{ +break _1; +} +} +} +break; +case 78: + r8 = _2E_str1157; + r0 = _2E_str652; + heap32[(g0)] = r8; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = 813; + _assert(i7); +break; +} +} +} while(0); + r0 = _ZN15CProfileManager11CurrentNodeE; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r3 = heap32[(r2+4)]; + r3 = (r3 + -1)|0; + heap32[(r2+4)] = r3; +_369: do { +if(!(r3 !=0)) //_LBB612_275 +{ + r3 = heap32[(r2+1)]; + if(r3 !=0) //_LBB612_272 +{ + r1 = sp + -8; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + r3 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r1 = r1 >> 2; + r4 = heap32[(fp+-2)]; + r5 = heap32[(r3)]; + r4 = (r4 - r5)|0; + r1 = heap32[(r1+1)]; + r3 = heap32[(r3+1)]; + r1 = (r1 - r3)|0; + r3 = (r4 * 1000000)|0; + r1 = (r1 + r3)|0; + r3 = heap32[(r2+3)]; + r1 = (r1 - r3)|0; + f0 = uint(r1); //fuitos r1, f0 + f1 = 1000; + f2 = heapFloat[(r2+2)]; + f0 = f0/f1; + f0 = f2+f0; + heapFloat[(r2+2)] = f0; + r1 = heap32[(r2+4)]; + if(r1 !=0) //_LBB612_275 +{ +break _369; +} +else{ + r1 = heap32[(r0)]; +} +} + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + heap32[(r0)] = r1; +} +} while(0); + f0 = 0; + f_g0 = f0; + return; +} + +function _ZN35btSequentialImpulseConstraintSolver33solveGroupCacheFriendlyIterationsEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var f0; + var f1; + var f2; +var __label__ = 0; + i7 = sp + -48;var g0 = i7>>2; // save stack + r0 = _2E_str854; + r1 = heap32[(fp+7)]; + heap32[(g0)] = r0; + r0 = heap32[(fp)]; + r2 = heap32[(fp+5)]; + r3 = heap32[(fp+6)]; + r4 = r1 >> 2; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + r5 = heap32[(r4+5)]; +if(!(r5 <1)) //_LBB613_64 +{ + r5 = 0; +_3: while(true){ + r6 = r0 >> 2; + r7 = heap32[(r4+15)]; + r8 = r7 & 1; + if(r8 != 0) //_LBB613_4 +{ + r8 = r5 & 7; +if(!(r8 !=0)) //_LBB613_3 +{ + r7 = heap32[(r6+2)]; + r8 = heap32[(r6+12)]; +if(!(r7 <1)) //_LBB613_19 +{ + r9 = 0; + r7 = (r9 - r7)|0; + r9 = 1; +_10: while(true){ + r10 = heap32[(r6+19)]; + r11 = r9 << 2; + r11 = (r10 + r11)|0; + r11 = r11 >> 2; + r12 = heap32[(r6+31)]; + r13 = heap32[(r11+-1)]; + r12 = (r12 * 1664525)|0; + r12 = (r12 + 1013904223)|0; + heap32[(r6+31)] = r12; + if(uint(r9) >> 16; + r12 = r14 ^ r12; + if(uint(r9) >> 8; + r12 = r14 ^ r12; + if(uint(r9) >> 4; + r12 = r14 ^ r12; + if(uint(r9) >> 2; + r12 = r14 ^ r12; + if(uint(r9) >> 1; + r12 = r14 ^ r12; +} +} +} +} +} + r12 = Math.floor(uint(r12) % uint(r9)); + r12 = r12 << 2; + r10 = (r10 + r12)|0; + r10 = r10 >> 2; + r10 = heap32[(r10)]; + heap32[(r11+-1)] = r10; + r10 = heap32[(r6+19)]; + r10 = (r10 + r12)|0; + r9 = (r9 + 1)|0; + r10 = r10 >> 2; + heap32[(r10)] = r13; + r10 = (r7 + r9)|0; +if(!(r10 !=1)) //_LBB613_7 +{ +break _10; +} +} +} +_20: do { +if(!(r8 <1)) //_LBB613_33 +{ + r7 = 0; + r7 = (r7 - r8)|0; + r8 = 1; +_22: while(true){ + r9 = heap32[(r6+24)]; + r10 = r8 << 2; + r10 = (r9 + r10)|0; + r10 = r10 >> 2; + r11 = heap32[(r6+31)]; + r12 = heap32[(r10+-1)]; + r11 = (r11 * 1664525)|0; + r11 = (r11 + 1013904223)|0; + heap32[(r6+31)] = r11; + if(uint(r8) >> 16; + r11 = r13 ^ r11; + if(uint(r8) >> 8; + r11 = r13 ^ r11; + if(uint(r8) >> 4; + r11 = r13 ^ r11; + if(uint(r8) >> 2; + r11 = r13 ^ r11; + if(uint(r8) >> 1; + r11 = r13 ^ r11; +} +} +} +} +} + r11 = Math.floor(uint(r11) % uint(r8)); + r11 = r11 << 2; + r9 = (r9 + r11)|0; + r9 = r9 >> 2; + r9 = heap32[(r9)]; + heap32[(r10+-1)] = r9; + r9 = heap32[(r6+24)]; + r9 = (r9 + r11)|0; + r8 = (r8 + 1)|0; + r9 = r9 >> 2; + heap32[(r9)] = r12; + r9 = (r7 + r8)|0; +if(!(r9 !=1)) //_LBB613_21 +{ +break _20; +} +} +} +} while(0); + r7 = heap32[(r4+15)]; +} +} + r8 = heap32[(r6+7)]; + r7 = r7 & 256; +_33: do { + if(r7 !=0) //_LBB613_37 +{ +_35: do { +if(!(r8 <1)) //_LBB613_40 +{ + r7 = 0; + r8 = r7; +_37: while(true){ + r9 = (r8 * 34)|0; + r10 = heap32[(r6+9)]; + r9 = r9 << 2; + r9 = (r10 + r9)|0; + r9 = r9 >> 2; + r11 = heap32[(r9+27)]; + r9 = heap32[(r9+26)]; + r10 = (r10 + r7)|0; + heap32[(g0)] = r9; + heap32[(g0+1)] = r11; + heap32[(g0+2)] = r10; + r8 = (r8 + 1)|0; + r7 = (r7 + 136)|0; + _ZN35btSequentialImpulseConstraintSolver33resolveSingleConstraintRowGenericER11btRigidBodyS1_RK18btSolverConstraint(i7); + r9 = heap32[(r6+7)]; +if(!(r9 >r8)) //_LBB613_39 +{ +break _35; +} +} +} +} while(0); +_40: do { +if(!(r3 <1)) //_LBB613_43 +{ + r7 = r2; + r8 = r3; +_42: while(true){ + r9 = r7 >> 2; + r9 = heap32[(r9)]; + r10 = r9 >> 2; + r11 = heap32[(r10)]; + r11 = r11 >> 2; + r11 = heap32[(r11+6)]; + f0 = heapFloat[(r4+3)]; + r12 = heap32[(r10+6)]; + r10 = heap32[(r10+5)]; + heap32[(g0)] = r9; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r12; + heapFloat[(g0+3)] = f0; + r8 = (r8 + -1)|0; + r7 = (r7 + 4)|0; + __FUNCTION_TABLE__[(r11)>>2](i7); +if(!(r8 !=0)) //_LBB613_42 +{ +break _40; +} +} +} +} while(0); + r7 = heap32[(r6+2)]; +_45: do { +if(!(r7 <1)) //_LBB613_46 +{ + r8 = 0; +_47: while(true){ + r9 = heap32[(r6+19)]; + r10 = r8 << 2; + r9 = (r9 + r10)|0; + r9 = r9 >> 2; + r9 = heap32[(r9)]; + r9 = (r9 * 136)|0; + r10 = heap32[(r6+4)]; + r9 = (r10 + r9)|0; + r10 = r9 >> 2; + r11 = heap32[(r10+27)]; + r10 = heap32[(r10+26)]; + heap32[(g0)] = r10; + heap32[(g0+1)] = r11; + heap32[(g0+2)] = r9; + r8 = (r8 + 1)|0; + _ZN35btSequentialImpulseConstraintSolver36resolveSingleConstraintRowLowerLimitER11btRigidBodyS1_RK18btSolverConstraint(i7); +if(!(r7 !=r8)) //_LBB613_45 +{ +break _45; +} +} +} +} while(0); + r7 = heap32[(r6+12)]; + if(r7 <1) //_LBB613_63 +{ +break _33; +} +else{ + r8 = 0; +_51: while(true){ + r9 = heap32[(r6+24)]; + r10 = r8 << 2; + r9 = (r9 + r10)|0; + r9 = r9 >> 2; + r9 = heap32[(r9)]; + r10 = heap32[(r6+14)]; + r9 = (r9 * 136)|0; + r9 = (r10 + r9)|0; + r10 = r9 >> 2; + r11 = heap32[(r10+25)]; + r12 = heap32[(r6+4)]; + r11 = (r11 * 136)|0; + r11 = (r12 + r11)|0; + r11 = r11 >> 2; + f0 = heapFloat[(r11+21)]; + f1 = 0; +if(!(f0 <=f1)) //_LBB613_50 +{ + f1 = heapFloat[(r10+22)]; + f0 = f1*f0; + f1 = -f0; + heapFloat[(r10+31)] = f1; + heapFloat[(r10+32)] = f0; + r11 = heap32[(r10+27)]; + r10 = heap32[(r10+26)]; + heap32[(g0)] = r10; + heap32[(g0+1)] = r11; + heap32[(g0+2)] = r9; + _ZN35btSequentialImpulseConstraintSolver33resolveSingleConstraintRowGenericER11btRigidBodyS1_RK18btSolverConstraint(i7); +} + r8 = (r8 + 1)|0; + if(r7 ==r8) //_LBB613_63 +{ +break _33; +} +else{ +continue _51; +} +} +} +} +else{ +_57: do { +if(!(r8 <1)) //_LBB613_52 +{ + r8 = 0; + r7 = r8; +_59: while(true){ + r9 = (r7 * 34)|0; + r10 = heap32[(r6+9)]; + r9 = r9 << 2; + r9 = (r10 + r9)|0; + r9 = r9 >> 2; + r11 = heap32[(r9+27)]; + r9 = heap32[(r9+26)]; + r10 = (r10 + r8)|0; + heap32[(g0)] = r9; + heap32[(g0+1)] = r11; + heap32[(g0+2)] = r10; + r7 = (r7 + 1)|0; + r8 = (r8 + 136)|0; + _ZN35btSequentialImpulseConstraintSolver33resolveSingleConstraintRowGenericER11btRigidBodyS1_RK18btSolverConstraint(i7); + r9 = heap32[(r6+7)]; +if(!(r9 >r7)) //_LBB613_51 +{ +break _57; +} +} +} +} while(0); +_62: do { +if(!(r3 <1)) //_LBB613_55 +{ + r7 = r2; + r8 = r3; +_64: while(true){ + r9 = r7 >> 2; + r9 = heap32[(r9)]; + r10 = r9 >> 2; + r11 = heap32[(r10)]; + r11 = r11 >> 2; + r11 = heap32[(r11+6)]; + f0 = heapFloat[(r4+3)]; + r12 = heap32[(r10+6)]; + r10 = heap32[(r10+5)]; + heap32[(g0)] = r9; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r12; + heapFloat[(g0+3)] = f0; + r8 = (r8 + -1)|0; + r7 = (r7 + 4)|0; + __FUNCTION_TABLE__[(r11)>>2](i7); +if(!(r8 !=0)) //_LBB613_54 +{ +break _62; +} +} +} +} while(0); + r7 = heap32[(r6+2)]; +_67: do { +if(!(r7 <1)) //_LBB613_58 +{ + r8 = 0; +_69: while(true){ + r9 = heap32[(r6+19)]; + r10 = r8 << 2; + r9 = (r9 + r10)|0; + r9 = r9 >> 2; + r9 = heap32[(r9)]; + r9 = (r9 * 136)|0; + r10 = heap32[(r6+4)]; + r9 = (r10 + r9)|0; + r10 = r9 >> 2; + r11 = heap32[(r10+27)]; + r10 = heap32[(r10+26)]; + heap32[(g0)] = r10; + heap32[(g0+1)] = r11; + heap32[(g0+2)] = r9; + r8 = (r8 + 1)|0; + _ZN35btSequentialImpulseConstraintSolver36resolveSingleConstraintRowLowerLimitER11btRigidBodyS1_RK18btSolverConstraint(i7); +if(!(r7 !=r8)) //_LBB613_57 +{ +break _67; +} +} +} +} while(0); + r7 = heap32[(r6+12)]; +if(!(r7 <1)) //_LBB613_63 +{ + r8 = 0; +_73: while(true){ + r9 = heap32[(r6+24)]; + r10 = r8 << 2; + r9 = (r9 + r10)|0; + r9 = r9 >> 2; + r9 = heap32[(r9)]; + r10 = heap32[(r6+14)]; + r9 = (r9 * 136)|0; + r9 = (r10 + r9)|0; + r10 = r9 >> 2; + r11 = heap32[(r10+25)]; + r12 = heap32[(r6+4)]; + r11 = (r11 * 136)|0; + r11 = (r12 + r11)|0; + r11 = r11 >> 2; + f0 = heapFloat[(r11+21)]; + f1 = 0; +if(!(f0 <=f1)) //_LBB613_62 +{ + f1 = heapFloat[(r10+22)]; + f0 = f1*f0; + f1 = -f0; + heapFloat[(r10+31)] = f1; + heapFloat[(r10+32)] = f0; + r11 = heap32[(r10+27)]; + r10 = heap32[(r10+26)]; + heap32[(g0)] = r10; + heap32[(g0+1)] = r11; + heap32[(g0+2)] = r9; + _ZN35btSequentialImpulseConstraintSolver33resolveSingleConstraintRowGenericER11btRigidBodyS1_RK18btSolverConstraint(i7); +} + r8 = (r8 + 1)|0; +if(!(r7 !=r8)) //_LBB613_60 +{ +break _33; +} +} +} +} +} while(0); + r5 = (r5 + 1)|0; + r6 = heap32[(r4+5)]; + if(r6 >r5) //_LBB613_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + r4 = heap32[(fp+1)]; + r5 = heap32[(fp+2)]; + r6 = heap32[(fp+3)]; + r7 = heap32[(fp+4)]; + r8 = heap32[(fp+8)]; + r9 = heap32[(fp+9)]; + r10 = r0 >> 2; + r10 = heap32[(r10)]; + r10 = r10 >> 2; + r10 = heap32[(r10+6)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r6; + heap32[(g0+4)] = r7; + heap32[(g0+5)] = r2; + heap32[(g0+6)] = r3; + heap32[(g0+7)] = r1; + heap32[(g0+8)] = r8; + heap32[(g0+9)] = r9; + r0 = _ZN15CProfileManager11CurrentNodeE; + __FUNCTION_TABLE__[(r10)>>2](i7); + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r3 = heap32[(r2+4)]; + r3 = (r3 + -1)|0; + heap32[(r2+4)] = r3; +_80: do { +if(!(r3 !=0)) //_LBB613_70 +{ + r3 = heap32[(r2+1)]; + if(r3 !=0) //_LBB613_67 +{ + r1 = sp + -8; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + r3 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r1 = r1 >> 2; + r4 = heap32[(fp+-2)]; + r5 = heap32[(r3)]; + r4 = (r4 - r5)|0; + r1 = heap32[(r1+1)]; + r3 = heap32[(r3+1)]; + r1 = (r1 - r3)|0; + r3 = (r4 * 1000000)|0; + r1 = (r1 + r3)|0; + r3 = heap32[(r2+3)]; + r1 = (r1 - r3)|0; + f0 = uint(r1); //fuitos r1, f0 + f1 = 1000; + f2 = heapFloat[(r2+2)]; + f0 = f0/f1; + f0 = f2+f0; + heapFloat[(r2+2)] = f0; + r1 = heap32[(r2+4)]; + if(r1 !=0) //_LBB613_70 +{ +break _80; +} +else{ + r1 = heap32[(r0)]; +} +} + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + heap32[(r0)] = r1; +} +} while(0); + f0 = 0; + f_g0 = f0; + return; +} + +function _ZN35btSequentialImpulseConstraintSolver21addFrictionConstraintERK9btVector3P11btRigidBodyS4_iR15btManifoldPointS2_S2_P17btCollisionObjectS8_fff(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; +var __label__ = 0; + i7 = sp + -288;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+13)]; + r3 = heap32[(r1+12)]; + r4 = heap32[(fp+1)]; + r5 = heap32[(fp+2)]; + r6 = heap32[(fp+3)]; + r7 = heap32[(fp+4)]; + r8 = heap32[(fp+5)]; + r9 = heap32[(fp+6)]; + r10 = heap32[(fp+7)]; + f0 = heapFloat[(fp+8)]; + f1 = heapFloat[(fp+9)]; + f2 = heapFloat[(fp+10)]; + if(r2 ==r3) //_LBB614_2 +{ + r11 = 1; + r12 = r3 << 1; + r12 = r3 == 0 ? r11 : r12; + if(r2 >=r12) //_LBB614_1 +{ +__label__ = 1; +} +else{ + if(r12 !=0) //_LBB614_5 +{ + r2 = gNumAlignedAllocs; + r2 = r2 >> 2; + r13 = heap32[(r2)]; + r14 = (r12 * 136)|0; + r13 = (r13 + 1)|0; + r14 = r14 | 3; + heap32[(r2)] = r13; + r2 = (r14 + 16)|0; + heap32[(g0)] = r2; + malloc(i7); + r13 = r_g0; + if(r13 !=0) //_LBB614_7 +{ + r2 = 0; + r14 = (r13 + 4)|0; + r2 = (r2 - r14)|0; + r2 = r2 & 15; + r2 = (r13 + r2)|0; + r14 = (r2 + 4)|0; + r2 = r2 >> 2; + heap32[(r2)] = r13; + r13 = r14; +} +} +else{ + r13 = 0; +} + r14 = (r0 + 56)|0; + if(r3 <1) //_LBB614_10 +{ + r2 = r14 >> 2; + r16 = heap32[(r2)]; +} +else{ + r2 = 0; + r15 = r3; +_12: while(true){ + r16 = r14 >> 2; + r16 = heap32[(r16)]; + r17 = (r13 + r2)|0; + r18 = (r16 + r2)|0; + heap32[(g0)] = r17; + heap32[(g0+1)] = r18; + heap32[(g0+2)] = 136; + r15 = (r15 + -1)|0; + r2 = (r2 + 136)|0; + memcpy(i7); +if(!(r15 !=0)) //_LBB614_11 +{ +break _12; +} +} + r14 = (r0 + 56)|0; +} + if(r16 !=0) //_LBB614_15 +{ + r2 = heapU8[r0+60]; + if(r2 !=0) //_LBB614_17 +{ + r2 = gNumAlignedFree; + r2 = r2 >> 2; + r15 = heap32[(r2)]; + r15 = (r15 + 1)|0; + r16 = r16 >> 2; + heap32[(r2)] = r15; + r2 = heap32[(r16+-1)]; + heap32[(g0)] = r2; + free(i7); + r2 = heap32[(r1+12)]; +} +else{ + r2 = r3; +} + r15 = r14 >> 2; + heap32[(r15)] = 0; +} +else{ + r2 = r3; +} + r14 = r14 >> 2; + heap8[r0+60] = r11; + heap32[(r14)] = r13; + heap32[(r1+13)] = r12; +__label__ = 19; +} +} +else{ +__label__ = 1; +} +if (__label__ == 1){ + r2 = r3; +} + r0 = (r2 + 1)|0; + heap32[(r1+12)] = r0; + r0 = heap32[(r1+14)]; + r1 = (r3 * 136)|0; + r0 = (r0 + r1)|0; + r0 = r0 >> 2; + heap32[(r0+25)] = r5; + r1 = heapU8[r9+232]; + r1 = r1 & 2; +if(!(r1 !=0)) //_LBB614_22 +{ + r9 = 0; +} + r1 = heapU8[r10+232]; + r1 = r1 & 2; +if(!(r1 !=0)) //_LBB614_24 +{ + r10 = 0; +} + r1 = r4 >> 2; + heap32[(r0+4)] = heap32[(r1)]; + heap32[(r0+5)] = heap32[(r1+1)]; + heap32[(r0+6)] = heap32[(r1+2)]; + heap32[(r0+7)] = heap32[(r1+3)]; + if(r9 ==0) //_LBB614_26 +{ + r2 = _ZGVZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed; + r3 = heapU8[r2]; +if(!(r3 !=0)) //_LBB614_28 +{ + r3 = _ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed; + r4 = r3 >> 2; + heap32[(r4+41)] = 1065353216; + heap32[(r4+42)] = 1065353216; + heap32[(r4+43)] = 1065353216; + heap32[(r4+44)] = 0; + heap32[(r4+45)] = 0; + heap32[(r4+46)] = 1566444395; + heap32[(r4+47)] = 0; + heap32[(r4+48)] = 0; + heap32[(r4+49)] = 0; + heap32[(r4+50)] = 0; + heap32[(r4+51)] = 1; + heap32[(r4+52)] = -1; + heap32[(r4+53)] = -1; + heap32[(r4+54)] = 1; + heap32[(r4+55)] = 0; + heap32[(r4+56)] = 1056964608; + heap32[(r4+57)] = 0; + heap32[(r4+58)] = 1; + heap32[(r4+59)] = 0; + heap32[(r4+60)] = 1065353216; + heap32[(r4+61)] = 0; + heap32[(r4+62)] = 0; + heap32[(r4+63)] = 0; + heap32[(r4+1)] = 1065353216; + heap32[(r4+2)] = 0; + heap32[(r4+3)] = 0; + heap32[(r4+4)] = 0; + heap32[(r4+5)] = 0; + heap32[(r4+6)] = 1065353216; + heap32[(r4+7)] = 0; + heap32[(r4+8)] = 0; + heap32[(r4+9)] = 0; + heap32[(r4+10)] = 0; + heap32[(r4+11)] = 1065353216; + heap32[(r4+12)] = 0; + heap32[(r4+13)] = 0; + heap32[(r4+14)] = 0; + r5 = _ZTV11btRigidBody; + heap32[(r4+15)] = 0; + r5 = (r5 + 8)|0; + heap32[(r4+16)] = 0; + r11 = 1; + heap32[(r4)] = r5; + heap8[r3+492] = r11; + heap32[(r4+122)] = 0; + heap32[(r4+120)] = 0; + r5 = sp + -272; + heap32[(r4+121)] = 0; + r4 = r5 >> 2; + heap32[(fp+-68)] = 0; + heap32[(r4+1)] = 0; + heap32[(r4+18)] = 0; + heap32[(r4+19)] = 0; + heap32[(r4+20)] = 0; + heap32[(r4+21)] = 0; + heap32[(r4+22)] = 0; + heap32[(r4+23)] = 0; + heap32[(r4+24)] = 0; + heap32[(r4+25)] = 1056964608; + heap32[(r4+26)] = 0; + heap32[(r4+27)] = 1061997773; + r12 = 0; + heap32[(r4+28)] = 1065353216; + heap8[sp+-156] = r12; + heap32[(r4+30)] = 1000593162; + heap32[(r4+31)] = 1008981770; + heap32[(r4+32)] = 1008981770; + heap32[(r4+33)] = 1008981770; + heap32[(r4+2)] = 1065353216; + heap32[(r4+3)] = 0; + heap32[(r4+4)] = 0; + heap32[(r4+5)] = 0; + heap32[(r4+6)] = 0; + heap32[(r4+7)] = 1065353216; + heap32[(r4+8)] = 0; + heap32[(r4+9)] = 0; + heap32[(r4+10)] = 0; + heap32[(r4+11)] = 0; + heap32[(r4+12)] = 1065353216; + heap32[(r4+13)] = 0; + heap32[(r4+14)] = 0; + heap32[(r4+15)] = 0; + heap32[(r4+16)] = 0; + heap32[(r4+17)] = 0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r5; + _ZN11btRigidBody14setupRigidBodyERKNS_27btRigidBodyConstructionInfoE(i7); + heap8[r2] = r11; +} + r2 = _ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed; + r3 = r2 >> 2; + r4 = heap32[(r3+51)]; + r4 = r4 | 1; + heap32[(r3+51)] = r4; + heap32[(r3+84)] = 0; + f3 = 0; + f4 = heapFloat[(r3+95)]; + f5 = heapFloat[(r3+94)]; + f6 = heapFloat[(r3+93)]; + f6 = f6*f3; + f5 = f5*f3; + heapFloat[(r3+89)] = f6; + f4 = f4*f3; + heapFloat[(r3+90)] = f5; + heapFloat[(r3+91)] = f4; + heap32[(r3+92)] = 0; + heap32[(r3+97)] = 0; + heap32[(r3+98)] = 0; + heap32[(r3+99)] = 0; + heap32[(r3+100)] = 0; + f4 = heapFloat[(r3+87)]; + f5 = heapFloat[(r3+86)]; + f6 = heapFloat[(r3+85)]; + f6 = f6*f3; + f5 = f5*f3; + heapFloat[(r3+138)] = f6; + f3 = f4*f3; + heapFloat[(r3+139)] = f5; + heapFloat[(r3+140)] = f3; + heap32[(r3+141)] = 0; +} +else{ + r2 = r9; +} + heap32[(r0+26)] = r2; + if(r10 ==0) //_LBB614_31 +{ + r2 = _ZGVZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed; + r3 = heapU8[r2]; +if(!(r3 !=0)) //_LBB614_33 +{ + r3 = _ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed; + r4 = r3 >> 2; + heap32[(r4+41)] = 1065353216; + heap32[(r4+42)] = 1065353216; + heap32[(r4+43)] = 1065353216; + heap32[(r4+44)] = 0; + heap32[(r4+45)] = 0; + heap32[(r4+46)] = 1566444395; + heap32[(r4+47)] = 0; + heap32[(r4+48)] = 0; + heap32[(r4+49)] = 0; + heap32[(r4+50)] = 0; + heap32[(r4+51)] = 1; + heap32[(r4+52)] = -1; + heap32[(r4+53)] = -1; + heap32[(r4+54)] = 1; + heap32[(r4+55)] = 0; + heap32[(r4+56)] = 1056964608; + heap32[(r4+57)] = 0; + heap32[(r4+58)] = 1; + heap32[(r4+59)] = 0; + heap32[(r4+60)] = 1065353216; + heap32[(r4+61)] = 0; + heap32[(r4+62)] = 0; + heap32[(r4+63)] = 0; + heap32[(r4+1)] = 1065353216; + heap32[(r4+2)] = 0; + heap32[(r4+3)] = 0; + heap32[(r4+4)] = 0; + heap32[(r4+5)] = 0; + heap32[(r4+6)] = 1065353216; + heap32[(r4+7)] = 0; + heap32[(r4+8)] = 0; + heap32[(r4+9)] = 0; + heap32[(r4+10)] = 0; + heap32[(r4+11)] = 1065353216; + heap32[(r4+12)] = 0; + heap32[(r4+13)] = 0; + heap32[(r4+14)] = 0; + r5 = _ZTV11btRigidBody; + heap32[(r4+15)] = 0; + r5 = (r5 + 8)|0; + heap32[(r4+16)] = 0; + r11 = 1; + heap32[(r4)] = r5; + heap8[r3+492] = r11; + heap32[(r4+122)] = 0; + heap32[(r4+120)] = 0; + r5 = sp + -136; + heap32[(r4+121)] = 0; + r4 = r5 >> 2; + heap32[(fp+-34)] = 0; + heap32[(r4+1)] = 0; + heap32[(r4+18)] = 0; + heap32[(r4+19)] = 0; + heap32[(r4+20)] = 0; + heap32[(r4+21)] = 0; + heap32[(r4+22)] = 0; + heap32[(r4+23)] = 0; + heap32[(r4+24)] = 0; + heap32[(r4+25)] = 1056964608; + heap32[(r4+26)] = 0; + heap32[(r4+27)] = 1061997773; + r12 = 0; + heap32[(r4+28)] = 1065353216; + heap8[sp+-20] = r12; + heap32[(r4+30)] = 1000593162; + heap32[(r4+31)] = 1008981770; + heap32[(r4+32)] = 1008981770; + heap32[(r4+33)] = 1008981770; + heap32[(r4+2)] = 1065353216; + heap32[(r4+3)] = 0; + heap32[(r4+4)] = 0; + heap32[(r4+5)] = 0; + heap32[(r4+6)] = 0; + heap32[(r4+7)] = 1065353216; + heap32[(r4+8)] = 0; + heap32[(r4+9)] = 0; + heap32[(r4+10)] = 0; + heap32[(r4+11)] = 0; + heap32[(r4+12)] = 1065353216; + heap32[(r4+13)] = 0; + heap32[(r4+14)] = 0; + heap32[(r4+15)] = 0; + heap32[(r4+16)] = 0; + heap32[(r4+17)] = 0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r5; + _ZN11btRigidBody14setupRigidBodyERKNS_27btRigidBodyConstructionInfoE(i7); + heap8[r2] = r11; +} + r2 = _ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed; + r3 = r2 >> 2; + r4 = heap32[(r3+51)]; + r4 = r4 | 1; + heap32[(r3+51)] = r4; + heap32[(r3+84)] = 0; + f3 = 0; + f4 = heapFloat[(r3+95)]; + f5 = heapFloat[(r3+94)]; + f6 = heapFloat[(r3+93)]; + f6 = f6*f3; + f5 = f5*f3; + heapFloat[(r3+89)] = f6; + f4 = f4*f3; + heapFloat[(r3+90)] = f5; + heapFloat[(r3+91)] = f4; + heap32[(r3+92)] = 0; + heap32[(r3+97)] = 0; + heap32[(r3+98)] = 0; + heap32[(r3+99)] = 0; + heap32[(r3+100)] = 0; + f4 = heapFloat[(r3+87)]; + f5 = heapFloat[(r3+86)]; + f6 = heapFloat[(r3+85)]; + f6 = f6*f3; + f5 = f5*f3; + heapFloat[(r3+138)] = f6; + f3 = f4*f3; + heapFloat[(r3+139)] = f5; + heapFloat[(r3+140)] = f3; + heap32[(r3+141)] = 0; +} +else{ + r2 = r10; +} + r3 = r6 >> 2; + heap32[(r0+27)] = r2; + heap32[(r0+22)] = heap32[(r3+21)]; + heap32[(r0+28)] = 0; + heap32[(r0+21)] = 0; + heap32[(r0+20)] = 0; + r2 = r7 >> 2; + f3 = heapFloat[(r0+5)]; + f4 = heapFloat[(r2+2)]; + f5 = heapFloat[(r0+6)]; + f6 = heapFloat[(r2+1)]; + f7 = heapFloat[(r0+4)]; + f8 = heapFloat[(r2)]; + f9 = f6*f5; + f10 = f4*f3; + f9 = f9-f10; + f4 = f4*f7; + f10 = f8*f5; + f4 = f4-f10; + heapFloat[(r0)] = f9; + f8 = f8*f3; + f6 = f6*f7; + f6 = f8-f6; + heapFloat[(r0+1)] = f4; + heapFloat[(r0+2)] = f6; + heap32[(r0+3)] = 0; + if(r9 ==0) //_LBB614_36 +{ + heap32[(r0+12)] = 0; + heap32[(r0+13)] = 0; + f10 = 0; + heap32[(r0+14)] = 0; + heap32[(r0+15)] = 0; + f11 = f10; + f8 = f10; +} +else{ + r3 = r9 >> 2; + f8 = heapFloat[(r3+64)]; + f10 = heapFloat[(r3+65)]; + f11 = heapFloat[(r3+68)]; + f12 = heapFloat[(r3+69)]; + f8 = f8*f9; + f10 = f10*f4; + f13 = heapFloat[(r3+66)]; + f14 = heapFloat[(r3+72)]; + f15 = heapFloat[(r3+73)]; + f16 = heapFloat[(r3+70)]; + f11 = f11*f9; + f12 = f12*f4; + f8 = f8+f10; + f10 = f13*f6; + f13 = heapFloat[(r3+74)]; + f14 = f14*f9; + f15 = f15*f4; + f11 = f11+f12; + f12 = f16*f6; + f8 = f8+f10; + f10 = heapFloat[(r3+134)]; + f16 = heapFloat[(r3+136)]; + f17 = heapFloat[(r3+135)]; + f11 = f11+f12; + f8 = f8*f10; + f10 = f14+f15; + f12 = f13*f6; + f10 = f10+f12; + f11 = f11*f17; + heapFloat[(r0+12)] = f8; + f10 = f10*f16; + heapFloat[(r0+13)] = f11; + heapFloat[(r0+14)] = f10; + heap32[(r0+15)] = 0; +} + r3 = r8 >> 2; + f12 = heapFloat[(r3+2)]; + f13 = heapFloat[(r3+1)]; + f14 = heapFloat[(r3)]; + f15 = f12*f3; + f16 = f13*f5; + f15 = f15-f16; + f16 = f14*f5; + f12 = f12*f7; + f12 = f16-f12; + heapFloat[(r0+8)] = f15; + f13 = f13*f7; + f14 = f14*f3; + f13 = f13-f14; + heapFloat[(r0+9)] = f12; + heapFloat[(r0+10)] = f13; + heap32[(r0+11)] = 0; + if(r10 ==0) //_LBB614_39 +{ + heap32[(r0+16)] = 0; + heap32[(r0+17)] = 0; + f14 = 0; + heap32[(r0+18)] = 0; + heap32[(r0+19)] = 0; + f17 = f14; + f16 = f14; +} +else{ + r4 = r10 >> 2; + f14 = heapFloat[(r4+64)]; + f16 = heapFloat[(r4+65)]; + f17 = heapFloat[(r4+68)]; + f18 = heapFloat[(r4+69)]; + f14 = f14*f15; + f16 = f16*f12; + f19 = heapFloat[(r4+66)]; + f20 = heapFloat[(r4+72)]; + f21 = heapFloat[(r4+73)]; + f22 = heapFloat[(r4+70)]; + f17 = f17*f15; + f18 = f18*f12; + f14 = f14+f16; + f16 = f19*f13; + f19 = heapFloat[(r4+74)]; + f20 = f20*f15; + f21 = f21*f12; + f17 = f17+f18; + f18 = f22*f13; + f14 = f14+f16; + f16 = heapFloat[(r4+134)]; + f22 = heapFloat[(r4+136)]; + f23 = heapFloat[(r4+135)]; + f17 = f17+f18; + f14 = f14*f16; + f16 = f20+f21; + f18 = f19*f13; + f16 = f16+f18; + f17 = f17*f23; + heapFloat[(r0+16)] = f14; + f16 = f16*f22; + heapFloat[(r0+17)] = f17; + heapFloat[(r0+18)] = f16; + heap32[(r0+19)] = 0; +} + if(r9 !=0) //_LBB614_42 +{ + f18 = heapFloat[(r2+1)]; + f19 = heapFloat[(r2+2)]; + f20 = heapFloat[(r2)]; + f21 = f11*f19; + f22 = f10*f18; + f10 = f10*f20; + f19 = f8*f19; + f23 = heapFloat[(r1)]; + f21 = f21-f22; + f22 = heapFloat[(r1+1)]; + f10 = f10-f19; + f8 = f8*f18; + f11 = f11*f20; + f18 = f23*f21; + f10 = f22*f10; + f19 = heapFloat[(r1+2)]; + f8 = f8-f11; + r2 = r9 >> 2; + f10 = f18+f10; + f8 = f19*f8; + f11 = heapFloat[(r2+84)]; + f8 = f10+f8; + f8 = f11+f8; +} +else{ + f8 = 0; +} + if(r10 !=0) //_LBB614_45 +{ + f10 = heapFloat[(r3+2)]; + f11 = heapFloat[(r3)]; + f18 = heapFloat[(r3+1)]; + f19 = f18*f16; + f20 = f10*f17; + f10 = f10*f14; + f16 = f11*f16; + f21 = heapFloat[(r1)]; + f19 = f19-f20; + f20 = heapFloat[(r1+1)]; + f10 = f10-f16; + f11 = f11*f17; + f14 = f18*f14; + f16 = f21*f19; + f10 = f20*f10; + f17 = heapFloat[(r1+2)]; + f14 = f11-f14; + r1 = r10 >> 2; + f10 = f16+f10; + f14 = f17*f14; + f11 = heapFloat[(r1+84)]; + f14 = f10+f14; + f14 = f11+f14; +} +else{ + f14 = 0; +} + f8 = f8+f14; + f0 = f0/f8; + heapFloat[(r0+23)] = f0; + if(r9 !=0) //_LBB614_48 +{ + r1 = r9 >> 2; + f8 = heapFloat[(r1+76)]; + f10 = heapFloat[(r1+77)]; + f8 = f7*f8; + f10 = f3*f10; + f11 = heapFloat[(r1+78)]; + f8 = f8+f10; + f10 = f5*f11; + f10 = f8+f10; + f14 = heapFloat[(r1+80)]; + f11 = heapFloat[(r1+81)]; + f8 = heapFloat[(r1+82)]; +} +else{ + f8 = 0; + f10 = f7*f8; + f11 = f3*f8; + f10 = f10+f11; + f11 = f5*f8; + f10 = f10+f11; + f11 = f8; + f14 = f8; +} + f9 = f9*f14; + f4 = f4*f11; + f4 = f9+f4; + f6 = f6*f8; + f4 = f4+f6; + f4 = f10+f4; + if(r10 !=0) //_LBB614_51 +{ + r1 = r10 >> 2; + f6 = heapFloat[(r1+80)]; + f8 = heapFloat[(r1+81)]; + f6 = f15*f6; + f12 = f12*f8; + f15 = heapFloat[(r1+82)]; + f6 = f6+f12; + f12 = f13*f15; + f12 = f6+f12; + f15 = heapFloat[(r1+76)]; + f13 = heapFloat[(r1+77)]; + f6 = heapFloat[(r1+78)]; +} +else{ + f6 = 0; + f15 = f15*f6; + f12 = f12*f6; + f12 = f15+f12; + f13 = f13*f6; + f12 = f12+f13; + f13 = f6; + f15 = f6; +} + f7 = f7*f15; + f3 = f3*f13; + f3 = f7+f3; + f5 = f5*f6; + f3 = f3+f5; + f3 = f12-f3; + f3 = f4+f3; + f1 = f1-f3; + f0 = f0*f1; + heapFloat[(r0+29)] = f0; + heapFloat[(r0+30)] = f2; + heap32[(r0+31)] = 0; + heap32[(r0+32)] = 1343554297; + return; +} + +function _ZNK17btTypedConstraint9serializeEPvP12btSerializer(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = r0 >> 2; + r2 = heap32[(fp)]; + r3 = heap32[(r1)]; + r3 = r3 >> 2; + r4 = r2 >> 2; + r3 = heap32[(r3+7)]; + r5 = heap32[(r4+5)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r5; + r5 = heap32[(fp+1)]; + __FUNCTION_TABLE__[(r3)>>2](i7); + r5 = r5 >> 2; + heap32[(r5)] = r_g0; + r3 = heap32[(r1)]; + r3 = r3 >> 2; + r3 = heap32[(r3+7)]; + r6 = heap32[(r4+6)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r6; + __FUNCTION_TABLE__[(r3)>>2](i7); + heap32[(r5+1)] = r_g0; + r3 = heap32[(r1)]; + r3 = r3 >> 2; + r3 = heap32[(r3+10)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + __FUNCTION_TABLE__[(r3)>>2](i7); + r3 = r_g0; + r6 = heap32[(r1)]; + r6 = r6 >> 2; + r6 = heap32[(r6+7)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + __FUNCTION_TABLE__[(r6)>>2](i7); + r6 = r_g0; + heap32[(r5+2)] = r6; +if(!(r6 ==0)) //_LBB615_2 +{ + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+12)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + __FUNCTION_TABLE__[(r1)>>2](i7); +} + r0 = heap32[(r4+1)]; + heap32[(r5+3)] = r0; + r0 = heapU8[r2+16]; + heap32[(r5+6)] = r0; + r0 = heap32[(r4+3)]; + heap32[(r5+5)] = r0; + r0 = heap32[(r4+2)]; + heap32[(r5+4)] = r0; + heap32[(r5+7)] = heap32[(r4+7)]; + heap32[(r5+8)] = heap32[(r4+8)]; + heap32[(r5+9)] = 0; + r0 = heap32[(r4+5)]; + r1 = r0 >> 2; + r1 = heap32[(r1+120)]; +if(!(r1 <1)) //_LBB615_7 +{ + r1 = 0; +_6: while(true){ + r0 = r0 >> 2; + r0 = heap32[(r0+122)]; + r3 = r1 << 2; + r0 = (r0 + r3)|0; + r0 = r0 >> 2; + r0 = heap32[(r0)]; +if(!(r0 !=r2)) //_LBB615_6 +{ + heap32[(r5+9)] = 1; +} + r1 = (r1 + 1)|0; + r0 = heap32[(r4+5)]; + r3 = r0 >> 2; + r3 = heap32[(r3+120)]; + if(r3 >r1) //_LBB615_4 +{ +continue _6; +} +else{ +break _6; +} +} +} + r0 = heap32[(r4+6)]; + r1 = r0 >> 2; + r1 = heap32[(r1+120)]; +_12: do { +if(!(r1 <1)) //_LBB615_12 +{ + r1 = 0; +_14: while(true){ + r0 = r0 >> 2; + r0 = heap32[(r0+122)]; + r3 = r1 << 2; + r0 = (r0 + r3)|0; + r0 = r0 >> 2; + r0 = heap32[(r0)]; +if(!(r0 !=r2)) //_LBB615_11 +{ + heap32[(r5+9)] = 1; +} + r1 = (r1 + 1)|0; + r0 = heap32[(r4+6)]; + r3 = r0 >> 2; + r3 = heap32[(r3+120)]; + if(r3 >r1) //_LBB615_9 +{ +continue _14; +} +else{ +break _12; +} +} +} +} while(0); + r0 = _2E_str76; + r_g0 = r0; + return; +} + +function _ZN23btDiscreteDynamicsWorld11setNumTasksEi(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN23btDiscreteDynamicsWorld14updateVehiclesEf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var f0; + var f1; + var f2; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = _2E_str289; + r1 = heap32[(fp)]; + heap32[(g0)] = r0; + r0 = r1 >> 2; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + r2 = heap32[(r0+63)]; +if(!(r2 <1)) //_LBB617_3 +{ + f0 = heapFloat[(fp+1)]; + r2 = 0; +_3: while(true){ + r3 = heap32[(r0+65)]; + r4 = r2 << 2; + r3 = (r3 + r4)|0; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r4 = r3 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+2)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r1; + heapFloat[(g0+2)] = f0; + r2 = (r2 + 1)|0; + __FUNCTION_TABLE__[(r4)>>2](i7); + r3 = heap32[(r0+63)]; + if(r3 >r2) //_LBB617_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + r0 = _ZN15CProfileManager11CurrentNodeE; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r3 = heap32[(r2+4)]; + r3 = (r3 + -1)|0; + heap32[(r2+4)] = r3; +_6: do { +if(!(r3 !=0)) //_LBB617_9 +{ + r3 = heap32[(r2+1)]; + if(r3 !=0) //_LBB617_6 +{ + r1 = sp + -8; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + r3 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r1 = r1 >> 2; + r4 = heap32[(fp+-2)]; + r5 = heap32[(r3)]; + r4 = (r4 - r5)|0; + r1 = heap32[(r1+1)]; + r3 = heap32[(r3+1)]; + r1 = (r1 - r3)|0; + r3 = (r4 * 1000000)|0; + r1 = (r1 + r3)|0; + r3 = heap32[(r2+3)]; + r1 = (r1 - r3)|0; + f0 = uint(r1); //fuitos r1, f0 + f1 = 1000; + f2 = heapFloat[(r2+2)]; + f0 = f0/f1; + f0 = f2+f0; + heapFloat[(r2+2)] = f0; + r1 = heap32[(r2+4)]; + if(r1 !=0) //_LBB617_9 +{ +break _6; +} +else{ + r1 = heap32[(r0)]; +} +} + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + heap32[(r0)] = r1; +} +} while(0); + return; +} + +function _ZN15btDynamicsWorld13addConstraintEP17btTypedConstraintb(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN15btDynamicsWorld16removeConstraintEP17btTypedConstraint(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZNK15btDynamicsWorld17getNumConstraintsEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN15btDynamicsWorld13getConstraintEi(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 0; + r_g0 = r0; + return; +} + +function _ZNK15btDynamicsWorld13getConstraintEi(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN15btDynamicsWorld10addVehicleEP17btActionInterface(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN15btDynamicsWorld13removeVehicleEP17btActionInterface(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN15btDynamicsWorld12addCharacterEP17btActionInterface(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN15btDynamicsWorld15removeCharacterEP17btActionInterface(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZNK23btDiscreteDynamicsWorld12getWorldTypeEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 2; + r_g0 = r0; + return; +} + +function _ZNK23btDiscreteDynamicsWorld10getGravityEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = r1 >> 2; + heap32[(r0)] = heap32[(r1+56)]; + heap32[(r0+1)] = heap32[(r1+57)]; + heap32[(r0+2)] = heap32[(r1+58)]; + heap32[(r0+3)] = heap32[(r1+59)]; + return; +} + +function _ZN23btDiscreteDynamicsWorld10addVehicleEP17btActionInterface(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+15)]; + r2 = heap32[(fp+1)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} + +function _ZN23btDiscreteDynamicsWorld13removeVehicleEP17btActionInterface(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+16)]; + r2 = heap32[(fp+1)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} + +function _ZN23btDiscreteDynamicsWorld12addCharacterEP17btActionInterface(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+15)]; + r2 = heap32[(fp+1)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} + +function _ZN23btDiscreteDynamicsWorld15removeCharacterEP17btActionInterface(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+16)]; + r2 = heap32[(fp+1)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} + +function _ZN34btClosestNotMeConvexResultCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN16btCollisionWorld27ClosestConvexResultCallbackE; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN34btClosestNotMeConvexResultCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN16btCollisionWorld27ClosestConvexResultCallbackE; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZNK34btClosestNotMeConvexResultCallback14needsCollisionEP17btBroadphaseProxy(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; +var __label__ = 0; + i7 = sp + -40;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = r1 >> 2; + r3 = r0 >> 2; + r2 = heap32[(r2)]; + r4 = heap32[(r3+20)]; + if(r2 !=r4) //_LBB635_2 +{ + r5 = heapU16[(r0+10)>>1]; + r6 = heapU16[(r1+4)>>1]; + r5 = r5 & r6; + r5 = r5 & 65535; + if(r5 ==0) //_LBB635_1 +{ +__label__ = 1; +} +else{ + r5 = heapU16[(r1+6)>>1]; + r0 = heapU16[(r0+8)>>1]; + r0 = r5 & r0; + r0 = r0 & 65535; + if(r0 ==0) //_LBB635_1 +{ +__label__ = 1; +} +else{ + r0 = heap32[(r3+23)]; + r5 = r0 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+7)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r2; + __FUNCTION_TABLE__[(r5)>>2](i7); + r0 = r_g0; + if(r0 !=0) //_LBB635_6 +{ + r0 = sp + -24; + r2 = 1; + r4 = r0 >> 2; + heap8[sp+-8] = r2; + heap32[(r4+3)] = 0; + heap32[(r4+1)] = 0; + heap32[(r4+2)] = 0; + r5 = heap32[(r3+22)]; + r6 = r5 >> 2; + r6 = heap32[(r6)]; + r3 = heap32[(r3+20)]; + r6 = r6 >> 2; + r3 = r3 >> 2; + r6 = heap32[(r6+13)]; + r3 = heap32[(r3+47)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r1; + __FUNCTION_TABLE__[(r6)>>2](i7); + r1 = r_g0; +_7: do { +if(!(r1 ==0)) //_LBB635_21 +{ + r1 = r1 >> 2; + r3 = heap32[(r1+2)]; +if(!(r3 ==0)) //_LBB635_21 +{ + r3 = heap32[(r4+1)]; +if(!(r3 >-1)) //_LBB635_17 +{ + r5 = heap32[(r4+2)]; + if(r5 <0) //_LBB635_11 +{ + r5 = heap32[(r4+3)]; +if(!(r5 ==0)) //_LBB635_15 +{ + r6 = heapU8[sp+-8]; +if(!(r6 ==0)) //_LBB635_14 +{ + r6 = gNumAlignedFree; + r6 = r6 >> 2; + r7 = heap32[(r6)]; + r7 = (r7 + 1)|0; + r5 = r5 >> 2; + heap32[(r6)] = r7; + r5 = heap32[(r5+-1)]; + heap32[(g0)] = r5; + free(i7); +} + heap32[(r4+3)] = 0; +} + heap8[sp+-8] = r2; + heap32[(r4+3)] = 0; + heap32[(r4+2)] = 0; +} +_20: while(true){ + r2 = r3 << 2; + r5 = heap32[(r4+3)]; + r2 = (r5 + r2)|0; + r3 = (r3 + 1)|0; + r2 = r2 >> 2; + heap32[(r2)] = 0; +if(!(r3 !=0)) //_LBB635_16 +{ +break _20; +} +} +} + heap32[(r4+1)] = 0; + r1 = heap32[(r1+2)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r0 = heap32[(r4+1)]; + r1 = 0; +_23: while(true){ + if(r0 >r1) //_LBB635_18 +{ + r2 = heap32[(r4+3)]; + r3 = r1 << 2; + r3 = (r2 + r3)|0; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+279)]; + if(r3 >0) //_LBB635_25 +{ +break _23; +} +else{ + r1 = (r1 + 1)|0; +} +} +else{ +break _7; +} +} +if(!(r2 ==0)) //_LBB635_29 +{ + r0 = heapU8[sp+-8]; +if(!(r0 ==0)) //_LBB635_28 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + r2 = r2 >> 2; + heap32[(r0)] = r1; + r0 = heap32[(r2+-1)]; + heap32[(g0)] = r0; + free(i7); +} +} + r0 = 0; + r_g0 = r0; + return; +} +} +} while(0); + r0 = heap32[(r4+3)]; +if(!(r0 ==0)) //_LBB635_24 +{ + r2 = heapU8[sp+-8]; +if(!(r2 ==0)) //_LBB635_24 +{ + r2 = gNumAlignedFree; + r2 = r2 >> 2; + r1 = heap32[(r2)]; + r1 = (r1 + 1)|0; + r0 = r0 >> 2; + heap32[(r2)] = r1; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} +} + r0 = 1; + r_g0 = r0; + return; +} +else{ + r0 = 1; +__label__ = 28; +} +} +} +} +else{ +__label__ = 1; +} +if (__label__ == 1){ + r0 = 0; +} + r0 = r0 & 255; + r_g0 = r0; + return; +} + +function _ZN34btClosestNotMeConvexResultCallback15addSingleResultERN16btCollisionWorld17LocalConvexResultEb(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = r0 >> 2; + r2 = heap32[(fp)]; + r3 = heap32[(r1)]; + r4 = r2 >> 2; + r5 = heap32[(r4+20)]; +if(!(r3 ==r5)) //_LBB636_4 +{ + r3 = heapU8[r3+204]; + r3 = r3 & 4; +if(!(r3 !=0)) //_LBB636_4 +{ + f0 = heapFloat[(r4+7)]; + f1 = heapFloat[(r4+3)]; + f2 = heapFloat[(r4+8)]; + f3 = heapFloat[(r4+4)]; + f4 = heapFloat[(r1+2)]; + f0 = f0-f1; + f1 = heapFloat[(r1+3)]; + f2 = f2-f3; + f3 = heapFloat[(r4+9)]; + f5 = heapFloat[(r4+5)]; + f0 = f4*f0; + f1 = f1*f2; + f2 = heapFloat[(r1+4)]; + f3 = f3-f5; + f4 = heapFloat[(r4+21)]; + f0 = f0+f1; + f1 = f2*f3; + f0 = f0+f1; + f1 = -f4; +if(!(f0 >=f1)) //_LBB636_4 +{ + r1 = heap32[(fp+2)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r1; + _ZN16btCollisionWorld27ClosestConvexResultCallback15addSingleResultERNS_17LocalConvexResultEb(i7); + return; +} +} +} + f0 = 1; + f_g0 = f0; + return; +} + +function _ZN23btDiscreteDynamicsWorld19getConstraintSolverEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+44)]; + r_g0 = r0; + return; +} + +function _ZNK23btDiscreteDynamicsWorld17getNumConstraintsEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+47)]; + r_g0 = r0; + return; +} + +function _ZN23btDiscreteDynamicsWorld13getConstraintEi(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+1)]; + r0 = heap32[(r0+49)]; + r1 = r1 << 2; + r0 = (r0 + r1)|0; + r0 = r0 >> 2; + r0 = heap32[(r0)]; + r_g0 = r0; + return; +} + +function _ZN23btDiscreteDynamicsWorld11clearForcesEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+52)]; +if(!(r1 <1)) //_LBB640_3 +{ + r1 = 0; +_3: while(true){ + r2 = heap32[(r0+54)]; + r3 = r1 << 2; + r2 = (r2 + r3)|0; + r2 = r2 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r1 = (r1 + 1)|0; + heap32[(r2+101)] = 0; + heap32[(r2+102)] = 0; + heap32[(r2+103)] = 0; + heap32[(r2+104)] = 0; + heap32[(r2+105)] = 0; + heap32[(r2+106)] = 0; + heap32[(r2+107)] = 0; + heap32[(r2+108)] = 0; + r2 = heap32[(r0+52)]; + if(r2 >r1) //_LBB640_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + return; +} + +function _ZNK23btDiscreteDynamicsWorld13getConstraintEi(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+1)]; + r0 = heap32[(r0+49)]; + r1 = r1 << 2; + r0 = (r0 + r1)|0; + r0 = r0 >> 2; + r0 = heap32[(r0)]; + r_g0 = r0; + return; +} + +function _ZN23btDiscreteDynamicsWorld12removeActionEP17btActionInterface(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+1)]; + r2 = heap32[(r0+63)]; + r3 = 0; +_1: while(true){ + if(r2 >r3) //_LBB642_1 +{ + r4 = heap32[(r0+65)]; + r5 = r3 << 2; + r4 = (r4 + r5)|0; + r4 = r4 >> 2; + r4 = heap32[(r4)]; + if(r4 !=r1) //_LBB642_3 +{ + r3 = (r3 + 1)|0; +continue _1; +} +else{ +__label__ = 5; +break _1; +} +} +else{ +__label__ = 4; +break _1; +} +} +if (__label__ == 4){ + r3 = r2; +} +if(!(r2 <=r3)) //_LBB642_8 +{ + r1 = (r2 + -1)|0; + r2 = r3 << 2; + r3 = heap32[(r0+65)]; + r1 = r1 << 2; + r2 = (r3 + r2)|0; + r3 = (r3 + r1)|0; + r2 = r2 >> 2; + r3 = r3 >> 2; + r4 = heap32[(r2)]; + r3 = heap32[(r3)]; + heap32[(r2)] = r3; + r2 = heap32[(r0+65)]; + r1 = (r2 + r1)|0; + r1 = r1 >> 2; + heap32[(r1)] = r4; + r1 = heap32[(r0+63)]; + r1 = (r1 + -1)|0; + heap32[(r0+63)] = r1; +} + return; +} + +function _ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallbackD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+21)]; +if(!(r1 ==0)) //_LBB643_4 +{ + r3 = heapU8[r0+88]; +if(!(r3 ==0)) //_LBB643_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+21)] = 0; +} + r1 = 1; + heap8[r0+88] = r1; + heap32[(r2+21)] = 0; + heap32[(r2+19)] = 0; + heap32[(r2+20)] = 0; + r3 = heap32[(r2+16)]; +if(!(r3 ==0)) //_LBB643_8 +{ + r4 = heapU8[r0+68]; +if(!(r4 ==0)) //_LBB643_7 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+16)] = 0; +} + heap8[r0+68] = r1; + heap32[(r2+16)] = 0; + heap32[(r2+14)] = 0; + heap32[(r2+15)] = 0; + r3 = heap32[(r2+11)]; +if(!(r3 ==0)) //_LBB643_12 +{ + r4 = heapU8[r0+48]; +if(!(r4 ==0)) //_LBB643_11 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+11)] = 0; +} + heap8[r0+48] = r1; + heap32[(r2+11)] = 0; + heap32[(r2+9)] = 0; + heap32[(r2+10)] = 0; + return; +} + +function _ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallbackD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+21)]; +if(!(r1 ==0)) //_LBB644_4 +{ + r3 = heapU8[r0+88]; +if(!(r3 ==0)) //_LBB644_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+21)] = 0; +} + r1 = 1; + heap8[r0+88] = r1; + heap32[(r2+21)] = 0; + heap32[(r2+19)] = 0; + heap32[(r2+20)] = 0; + r3 = heap32[(r2+16)]; +if(!(r3 ==0)) //_LBB644_8 +{ + r4 = heapU8[r0+68]; +if(!(r4 ==0)) //_LBB644_7 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+16)] = 0; +} + heap8[r0+68] = r1; + heap32[(r2+16)] = 0; + heap32[(r2+14)] = 0; + heap32[(r2+15)] = 0; + r3 = heap32[(r2+11)]; +if(!(r3 ==0)) //_LBB644_12 +{ + r4 = heapU8[r0+48]; +if(!(r4 ==0)) //_LBB644_11 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+11)] = 0; +} + heap8[r0+48] = r1; + heap32[(r2+11)] = 0; + heap32[(r2+9)] = 0; + heap32[(r2+10)] = 0; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallback13ProcessIslandEPP17btCollisionObjectiPP20btPersistentManifoldii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; +var __label__ = 0; + i7 = sp + -48;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(fp+5)]; + r3 = heap32[(fp+1)]; + r4 = heap32[(fp+2)]; + r5 = heap32[(fp+3)]; + r6 = heap32[(fp+4)]; + r7 = heap32[(r1+4)]; +_1: do { + if(r2 <0) //_LBB645_2 +{ + r0 = 0; + r0 = (r0 - r6)|0; + if(r7 ==r0) //_LBB645_87 +{ +break _1; +} +else{ + r0 = heap32[(r1+2)]; + r2 = r0 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+3)]; + r8 = heap32[(r1+7)]; + r9 = heap32[(r1+6)]; + r10 = heap32[(r1+5)]; + r11 = heap32[(r1+1)]; + r1 = heap32[(r1+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r5; + heap32[(g0+4)] = r6; + heap32[(g0+5)] = r1; + heap32[(g0+6)] = r7; + heap32[(g0+7)] = r11; + heap32[(g0+8)] = r10; + heap32[(g0+9)] = r9; + heap32[(g0+10)] = r8; + __FUNCTION_TABLE__[(r2)>>2](i7); + return; +} +} +else{ + r8 = 1; + r9 = 4; + r10 = 0; +_5: while(true){ + if(r7 >r10) //_LBB645_4 +{ + r11 = heap32[(r1+3)]; + r12 = r10 << 2; + r12 = (r11 + r12)|0; + r12 = r12 >> 2; + r12 = heap32[(r12)]; + r12 = r12 >> 2; + r13 = heap32[(r12+5)]; + r13 = r13 >> 2; + r13 = heap32[(r13+52)]; + if(r13 <0) //_LBB645_6 +{ + r13 = heap32[(r12+6)]; + r13 = r13 >> 2; + r13 = heap32[(r13+52)]; +} + r10 = (r10 + 1)|0; + r9 = (r9 + -4)|0; + r8 = (r8 + -1)|0; + if(r13 ==r2) //_LBB645_10 +{ +__label__ = 9; +break _5; +} +else{ +__label__ = 7; +} +} +else{ +__label__ = 8; +break _5; +} +} +_11: do { +switch(__label__ ){//multiple entries +case 9: + r10 = r7 > r10 ? r7 : r10; + r7 = (r11 - r9)|0; + r9 = (r10 + r8)|0; + r8 = 0; + r10 = r7; +_13: while(true){ + r11 = r10 >> 2; + r11 = heap32[(r11)]; + r11 = r11 >> 2; + r12 = heap32[(r11+5)]; + r12 = r12 >> 2; + r12 = heap32[(r12+52)]; + if(r12 <0) //_LBB645_13 +{ + r12 = heap32[(r11+6)]; + r12 = r12 >> 2; + r12 = heap32[(r12+52)]; +} + r11 = r12 == r2; + r11 = r11 & 1; + r9 = (r9 + -1)|0; + r8 = (r11 + r8)|0; + r10 = (r10 + 4)|0; +if(!(r9 !=0)) //_LBB645_11 +{ +break _11; +} +} +break; +case 8: + r7 = 0; + r8 = r7; +break; +} +} while(0); + r2 = heap32[(r1+1)]; + r9 = r2 >> 2; + r9 = heap32[(r9+17)]; + if(r9 <2) //_LBB645_17 +{ + r0 = 0; + r0 = (r0 - r6)|0; + if(r8 ==r0) //_LBB645_87 +{ +break _1; +} +else{ + r0 = heap32[(r1+2)]; + r9 = r0 >> 2; + r9 = heap32[(r9)]; + r9 = r9 >> 2; + r9 = heap32[(r9+3)]; + r10 = heap32[(r1+7)]; + r11 = heap32[(r1+6)]; + r1 = heap32[(r1+5)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r5; + heap32[(g0+4)] = r6; + heap32[(g0+5)] = r7; + heap32[(g0+6)] = r8; + heap32[(g0+7)] = r2; + heap32[(g0+8)] = r1; + heap32[(g0+9)] = r11; + heap32[(g0+10)] = r10; + __FUNCTION_TABLE__[(r9)>>2](i7); + return; +} +} +else{ +_24: do { + if(r4 >0) //_LBB645_19 +{ + r2 = heap32[(r1+9)]; +_26: while(true){ + r9 = heap32[(r1+10)]; + if(r9 ==r2) //_LBB645_22 +{ + r10 = 1; + r11 = r2 << 1; + r11 = r2 == 0 ? r10 : r11; +if(!(r9 >=r11)) //_LBB645_21 +{ + if(r11 !=0) //_LBB645_25 +{ + r9 = gNumAlignedAllocs; + r9 = r9 >> 2; + r12 = heap32[(r9)]; + r13 = r11 << 2; + r12 = (r12 + 1)|0; + r13 = r13 | 3; + heap32[(r9)] = r12; + r9 = (r13 + 16)|0; + heap32[(g0)] = r9; + malloc(i7); + r9 = r_g0; + if(r9 !=0) //_LBB645_27 +{ + r12 = 0; + r13 = (r9 + 4)|0; + r12 = (r12 - r13)|0; + r12 = r12 & 15; + r12 = (r9 + r12)|0; + r13 = (r12 + 4)|0; + r12 = r12 >> 2; + heap32[(r12)] = r9; + r9 = r13; +} +} +else{ + r9 = 0; +} + if(r2 <1) //_LBB645_30 +{ + r13 = heap32[(r1+11)]; +} +else{ + r12 = 0; +_39: while(true){ + r13 = heap32[(r1+11)]; + r14 = r12 << 2; + r15 = (r13 + r14)|0; + r15 = r15 >> 2; + r14 = (r9 + r14)|0; + r15 = heap32[(r15)]; + r12 = (r12 + 1)|0; + r14 = r14 >> 2; + heap32[(r14)] = r15; +if(!(r2 !=r12)) //_LBB645_31 +{ +break _39; +} +} +} + if(r13 !=0) //_LBB645_34 +{ + r12 = heapU8[r0+48]; + if(r12 !=0) //_LBB645_36 +{ + r2 = gNumAlignedFree; + r2 = r2 >> 2; + r12 = heap32[(r2)]; + r12 = (r12 + 1)|0; + r13 = r13 >> 2; + heap32[(r2)] = r12; + r2 = heap32[(r13+-1)]; + heap32[(g0)] = r2; + free(i7); + r2 = heap32[(r1+9)]; +} + heap32[(r1+11)] = 0; +} + heap8[r0+48] = r10; + heap32[(r1+11)] = r9; + heap32[(r1+10)] = r11; +} +} + r9 = r3 >> 2; + r2 = r2 << 2; + r10 = heap32[(r1+11)]; + r2 = (r10 + r2)|0; + r9 = heap32[(r9)]; + r2 = r2 >> 2; + heap32[(r2)] = r9; + r2 = heap32[(r1+9)]; + r2 = (r2 + 1)|0; + r4 = (r4 + -1)|0; + r3 = (r3 + 4)|0; + heap32[(r1+9)] = r2; +if(!(r4 !=0)) //_LBB645_20 +{ +break _24; +} +} +} +} while(0); +_50: do { +if(!(r6 <1)) //_LBB645_62 +{ + r2 = heap32[(r1+14)]; +_52: while(true){ + r3 = heap32[(r1+15)]; + if(r3 ==r2) //_LBB645_44 +{ + r4 = 1; + r9 = r2 << 1; + r9 = r2 == 0 ? r4 : r9; +if(!(r3 >=r9)) //_LBB645_43 +{ + if(r9 !=0) //_LBB645_47 +{ + r3 = gNumAlignedAllocs; + r3 = r3 >> 2; + r10 = heap32[(r3)]; + r11 = r9 << 2; + r10 = (r10 + 1)|0; + r11 = r11 | 3; + heap32[(r3)] = r10; + r3 = (r11 + 16)|0; + heap32[(g0)] = r3; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB645_49 +{ + r10 = 0; + r11 = (r3 + 4)|0; + r10 = (r10 - r11)|0; + r10 = r10 & 15; + r10 = (r3 + r10)|0; + r11 = (r10 + 4)|0; + r10 = r10 >> 2; + heap32[(r10)] = r3; + r3 = r11; +} +} +else{ + r3 = 0; +} + if(r2 <1) //_LBB645_52 +{ + r11 = heap32[(r1+16)]; +} +else{ + r10 = 0; +_65: while(true){ + r11 = heap32[(r1+16)]; + r12 = r10 << 2; + r13 = (r11 + r12)|0; + r13 = r13 >> 2; + r12 = (r3 + r12)|0; + r13 = heap32[(r13)]; + r10 = (r10 + 1)|0; + r12 = r12 >> 2; + heap32[(r12)] = r13; +if(!(r2 !=r10)) //_LBB645_53 +{ +break _65; +} +} +} + if(r11 !=0) //_LBB645_56 +{ + r10 = heapU8[r0+68]; + if(r10 !=0) //_LBB645_58 +{ + r2 = gNumAlignedFree; + r2 = r2 >> 2; + r10 = heap32[(r2)]; + r10 = (r10 + 1)|0; + r11 = r11 >> 2; + heap32[(r2)] = r10; + r2 = heap32[(r11+-1)]; + heap32[(g0)] = r2; + free(i7); + r2 = heap32[(r1+14)]; +} + heap32[(r1+16)] = 0; +} + heap8[r0+68] = r4; + heap32[(r1+16)] = r3; + heap32[(r1+15)] = r9; +} +} + r3 = r5 >> 2; + r2 = r2 << 2; + r4 = heap32[(r1+16)]; + r2 = (r4 + r2)|0; + r3 = heap32[(r3)]; + r2 = r2 >> 2; + heap32[(r2)] = r3; + r2 = heap32[(r1+14)]; + r2 = (r2 + 1)|0; + r6 = (r6 + -1)|0; + r5 = (r5 + 4)|0; + heap32[(r1+14)] = r2; +if(!(r6 !=0)) //_LBB645_42 +{ +break _50; +} +} +} +} while(0); +_76: do { + if(r8 >0) //_LBB645_64 +{ + r2 = heap32[(r1+19)]; +_78: while(true){ + r3 = heap32[(r1+20)]; + if(r3 ==r2) //_LBB645_67 +{ + r4 = 1; + r5 = r2 << 1; + r5 = r2 == 0 ? r4 : r5; +if(!(r3 >=r5)) //_LBB645_66 +{ + if(r5 !=0) //_LBB645_70 +{ + r3 = gNumAlignedAllocs; + r3 = r3 >> 2; + r6 = heap32[(r3)]; + r9 = r5 << 2; + r6 = (r6 + 1)|0; + r9 = r9 | 3; + heap32[(r3)] = r6; + r3 = (r9 + 16)|0; + heap32[(g0)] = r3; + malloc(i7); + r3 = r_g0; + if(r3 !=0) //_LBB645_72 +{ + r6 = 0; + r9 = (r3 + 4)|0; + r6 = (r6 - r9)|0; + r6 = r6 & 15; + r6 = (r3 + r6)|0; + r9 = (r6 + 4)|0; + r6 = r6 >> 2; + heap32[(r6)] = r3; + r3 = r9; +} +} +else{ + r3 = 0; +} + if(r2 <1) //_LBB645_75 +{ + r9 = heap32[(r1+21)]; +} +else{ + r6 = 0; +_91: while(true){ + r9 = heap32[(r1+21)]; + r10 = r6 << 2; + r11 = (r9 + r10)|0; + r11 = r11 >> 2; + r10 = (r3 + r10)|0; + r11 = heap32[(r11)]; + r6 = (r6 + 1)|0; + r10 = r10 >> 2; + heap32[(r10)] = r11; +if(!(r2 !=r6)) //_LBB645_76 +{ +break _91; +} +} +} + if(r9 !=0) //_LBB645_79 +{ + r6 = heapU8[r0+88]; + if(r6 !=0) //_LBB645_81 +{ + r2 = gNumAlignedFree; + r2 = r2 >> 2; + r6 = heap32[(r2)]; + r6 = (r6 + 1)|0; + r9 = r9 >> 2; + heap32[(r2)] = r6; + r2 = heap32[(r9+-1)]; + heap32[(g0)] = r2; + free(i7); + r2 = heap32[(r1+19)]; +} + heap32[(r1+21)] = 0; +} + heap8[r0+88] = r4; + heap32[(r1+21)] = r3; + heap32[(r1+20)] = r5; +} +} + r3 = r7 >> 2; + r2 = r2 << 2; + r4 = heap32[(r1+21)]; + r2 = (r4 + r2)|0; + r3 = heap32[(r3)]; + r2 = r2 >> 2; + heap32[(r2)] = r3; + r2 = heap32[(r1+19)]; + r2 = (r2 + 1)|0; + r8 = (r8 + -1)|0; + r7 = (r7 + 4)|0; + heap32[(r1+19)] = r2; +if(!(r8 !=0)) //_LBB645_65 +{ +break _76; +} +} +} +else{ + r2 = heap32[(r1+19)]; +} +} while(0); + r3 = heap32[(r1+1)]; + r3 = r3 >> 2; + r1 = heap32[(r1+14)]; + r1 = (r1 + r2)|0; + r2 = heap32[(r3+17)]; +if(!(r1 <=r2)) //_LBB645_87 +{ + heap32[(g0)] = r0; + _ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallback18processConstraintsEv(i7); +} +} +} +} while(0); + return; +} + +function _ZN20btAlignedObjectArrayIP17btTypedConstraintE17quickSortInternalI33btSortConstraintOnIslandPredicateEEvT_ii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = heap32[(fp+1)]; + r2 = (r0 + r1)|0; + r3 = r2 >>> 31; + r4 = heap32[(fp)]; + r2 = (r2 + r3)|0; + r3 = r4 >> 2; + r2 = r2 & 2147483646; + r5 = heap32[(r3+3)]; + r2 = r2 << 1; + r2 = (r5 + r2)|0; + r2 = r2 >> 2; + r2 = heap32[(r2)]; + r5 = r1; + r6 = r0; +_1: while(true){ + r7 = r2 >> 2; + r8 = heap32[(r7+5)]; + r8 = r8 >> 2; + r9 = heap32[(r3+3)]; + r8 = heap32[(r8+52)]; +_3: while(true){ + r10 = r5 << 2; + r10 = (r9 + r10)|0; + r10 = r10 >> 2; + r11 = heap32[(r10)]; + if(r8 <0) //_LBB646_5 +{ + r12 = heap32[(r7+6)]; + r12 = r12 >> 2; + r12 = heap32[(r12+52)]; +} +else{ + r12 = r8; +} + r13 = r11 >> 2; + r14 = heap32[(r13+5)]; + r14 = r14 >> 2; + r14 = heap32[(r14+52)]; + if(r14 <0) //_LBB646_8 +{ + r14 = heap32[(r13+6)]; + r14 = r14 >> 2; + r14 = heap32[(r14+52)]; +} + if(r14 > 2; + r13 = heap32[(r13)]; + r14 = r13 >> 2; + r15 = heap32[(r14+5)]; + r15 = r15 >> 2; + r15 = heap32[(r15+52)]; + if(r15 <0) //_LBB646_13 +{ + r15 = heap32[(r14+6)]; + r15 = r15 >> 2; + r15 = heap32[(r15+52)]; +} + if(r8 <0) //_LBB646_16 +{ + r14 = heap32[(r7+6)]; + r14 = r14 >> 2; + r14 = heap32[(r14+52)]; +} +else{ + r14 = r8; +} + if(r14 > 2; + heap32[(r7)] = r11; +} + if(r5 <=r6) //_LBB646_1 +{ +continue _1; +} +else{ +break _1; +} +} +if(!(r6 <=r1)) //_LBB646_24 +{ + heap32[(g0)] = r4; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r6; + _ZN20btAlignedObjectArrayIP17btTypedConstraintE17quickSortInternalI33btSortConstraintOnIslandPredicateEEvT_ii(i7); +} +if(!(r5 >=r0)) //_LBB646_26 +{ + heap32[(g0)] = r4; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r0; + _ZN20btAlignedObjectArrayIP17btTypedConstraintE17quickSortInternalI33btSortConstraintOnIslandPredicateEEvT_ii(i7); +} + return; +} + +function _ZN23btDiscreteDynamicsWorld9serializeEP12btSerializer(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+8)]; + r3 = heap32[(fp)]; + heap32[(g0)] = r0; + r4 = r3 >> 2; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = heap32[(r4+2)]; +if(!(r2 <1)) //_LBB647_5 +{ + r2 = 0; +_3: while(true){ + r5 = heap32[(r4+4)]; + r6 = r2 << 2; + r5 = (r5 + r6)|0; + r5 = r5 >> 2; + r5 = heap32[(r5)]; + r6 = heapU8[r5+232]; + r6 = r6 & 2; +if(!(r6 ==0)) //_LBB647_4 +{ + r6 = r5 >> 2; + r7 = heap32[(r6)]; + r7 = r7 >> 2; + r7 = heap32[(r7+4)]; + heap32[(g0)] = r5; + __FUNCTION_TABLE__[(r7)>>2](i7); + r8 = heap32[(r1)]; + r8 = r8 >> 2; + r8 = heap32[(r8+4)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r_g0; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r8)>>2](i7); + r7 = r_g0; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r8 = r7 >> 2; + r6 = heap32[(r6+5)]; + r8 = heap32[(r8+2)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r0; + __FUNCTION_TABLE__[(r6)>>2](i7); + r8 = heap32[(r1)]; + r8 = r8 >> 2; + r8 = heap32[(r8+5)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r_g0; + heap32[(g0+3)] = 1497645650; + heap32[(g0+4)] = r5; + __FUNCTION_TABLE__[(r8)>>2](i7); +} + r2 = (r2 + 1)|0; + r5 = heap32[(r4+2)]; + if(r5 >r2) //_LBB647_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + r2 = heap32[(r4+47)]; +_9: do { +if(!(r2 <1)) //_LBB647_8 +{ + r2 = 0; +_11: while(true){ + r5 = r2 << 2; + r6 = heap32[(r4+49)]; + r5 = (r6 + r5)|0; + r5 = r5 >> 2; + r5 = heap32[(r5)]; + r6 = r5 >> 2; + r7 = heap32[(r6)]; + r7 = r7 >> 2; + r7 = heap32[(r7+9)]; + heap32[(g0)] = r5; + __FUNCTION_TABLE__[(r7)>>2](i7); + r8 = heap32[(r1)]; + r8 = r8 >> 2; + r8 = heap32[(r8+4)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r_g0; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r8)>>2](i7); + r7 = r_g0; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r8 = r7 >> 2; + r6 = heap32[(r6+10)]; + r8 = heap32[(r8+2)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r0; + __FUNCTION_TABLE__[(r6)>>2](i7); + r8 = heap32[(r1)]; + r8 = r8 >> 2; + r8 = heap32[(r8+5)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r_g0; + heap32[(g0+3)] = 1397641027; + heap32[(g0+4)] = r5; + r2 = (r2 + 1)|0; + __FUNCTION_TABLE__[(r8)>>2](i7); + r5 = heap32[(r4+47)]; + if(r5 >r2) //_LBB647_7 +{ +continue _11; +} +else{ +break _9; +} +} +} +} while(0); + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + _ZN16btCollisionWorld25serializeCollisionObjectsEP12btSerializer(i7); + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+9)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} + +function _ZN23btDiscreteDynamicsWorld19setConstraintSolverEP18btConstraintSolver(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heapU8[r0+245]; +if(!(r1 ==0)) //_LBB648_3 +{ + r1 = r0 >> 2; + r1 = heap32[(r1+44)]; +if(!(r1 ==0)) //_LBB648_3 +{ + r2 = gNumAlignedFree; + r2 = r2 >> 2; + r3 = heap32[(r2)]; + r3 = (r3 + 1)|0; + r1 = r1 >> 2; + heap32[(r2)] = r3; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} +} + r1 = heap32[(fp+1)]; + r2 = 0; + r3 = r0 >> 2; + heap8[r0+245] = r2; + heap32[(r3+44)] = r1; + return; +} + +function _ZN23btDiscreteDynamicsWorld25predictUnconstraintMotionEf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var f0; + var f1; + var f2; + var f3; +var __label__ = 0; + i7 = sp + -40;var g0 = i7>>2; // save stack + r0 = _2E_str87; + r1 = heap32[(fp)]; + heap32[(g0)] = r0; + r0 = r1 >> 2; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + r1 = heap32[(r0+52)]; +if(!(r1 <1)) //_LBB649_5 +{ + f0 = heapFloat[(fp+1)]; + r1 = 0; +_3: while(true){ + r2 = heap32[(r0+54)]; + r3 = r1 << 2; + r2 = (r2 + r3)|0; + r2 = r2 >> 2; + r2 = heap32[(r2)]; + r3 = heapU8[r2+204]; + r3 = r3 & 3; +if(!(r3 !=0)) //_LBB649_4 +{ + heap32[(g0)] = r2; + heapFloat[(g0+1)] = f0; + _ZN11btRigidBody19integrateVelocitiesEf(i7); + heap32[(g0)] = r2; + heapFloat[(g0+1)] = f0; + _ZN11btRigidBody12applyDampingEf(i7); + r3 = r2 >> 2; + f1 = heapFloat[(r3+76)]; + f2 = heapFloat[(r3+77)]; + f3 = heapFloat[(r3+78)]; + r3 = (r2 + 4)|0; + r4 = (r2 + 320)|0; + r2 = (r2 + 68)|0; + heap32[(g0)] = r3; + heapFloat[(g0+1)] = f1; + heapFloat[(g0+2)] = f2; + heapFloat[(g0+3)] = f3; + heap32[(g0+4)] = r4; + heapFloat[(g0+5)] = f0; + heap32[(g0+6)] = r2; + _ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(i7); +} + r1 = (r1 + 1)|0; + r2 = heap32[(r0+52)]; + if(r2 >r1) //_LBB649_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + r0 = _ZN15CProfileManager11CurrentNodeE; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r3 = heap32[(r2+4)]; + r3 = (r3 + -1)|0; + heap32[(r2+4)] = r3; +_9: do { +if(!(r3 !=0)) //_LBB649_11 +{ + r3 = heap32[(r2+1)]; + if(r3 !=0) //_LBB649_8 +{ + r1 = sp + -8; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + r3 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r1 = r1 >> 2; + r4 = heap32[(fp+-2)]; + r5 = heap32[(r3)]; + r4 = (r4 - r5)|0; + r1 = heap32[(r1+1)]; + r3 = heap32[(r3+1)]; + r1 = (r1 - r3)|0; + r3 = (r4 * 1000000)|0; + r1 = (r1 + r3)|0; + r3 = heap32[(r2+3)]; + r1 = (r1 - r3)|0; + f0 = uint(r1); //fuitos r1, f0 + f1 = 1000; + f2 = heapFloat[(r2+2)]; + f0 = f0/f1; + f0 = f2+f0; + heapFloat[(r2+2)] = f0; + r1 = heap32[(r2+4)]; + if(r1 !=0) //_LBB649_11 +{ +break _9; +} +else{ + r1 = heap32[(r0)]; +} +} + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + heap32[(r0)] = r1; +} +} while(0); + return; +} + +function _ZN23btDiscreteDynamicsWorld26calculateSimulationIslandsEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var f0; + var f1; + var f2; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = _2E_str188; + r1 = heap32[(fp)]; + heap32[(g0)] = r0; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + r0 = r1 >> 2; + r2 = heap32[(r0+45)]; + r3 = r2 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+2)]; + r4 = heap32[(r0+6)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r4; + __FUNCTION_TABLE__[(r3)>>2](i7); + r2 = heap32[(r0+47)]; +if(!(r2 <1)) //_LBB650_21 +{ + r3 = 0; +_3: while(true){ + r4 = heap32[(r0+49)]; + r5 = r3 << 2; + r4 = (r4 + r5)|0; + r4 = r4 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r5 = heap32[(r4+5)]; +_5: do { +if(!(r5 ==0)) //_LBB650_20 +{ + r6 = heapU8[r5+204]; + r6 = r6 & 3; +if(!(r6 !=0)) //_LBB650_20 +{ + r4 = heap32[(r4+6)]; +if(!(r4 ==0)) //_LBB650_20 +{ + r6 = heapU8[r4+204]; + r6 = r6 & 3; +if(!(r6 !=0)) //_LBB650_20 +{ + r5 = r5 >> 2; + r6 = heap32[(r5+54)]; + if(r6 ==2) //_LBB650_8 +{ +__label__ = 8; +} +else{ + if(r6 !=5) //_LBB650_10 +{ +__label__ = 10; +} +else{ +__label__ = 8; +} +} +if (__label__ == 8){ + r6 = r4 >> 2; + r6 = heap32[(r6+54)]; + if(r6 ==2) //_LBB650_20 +{ +break _5; +} +else{ + if(r6 ==5) //_LBB650_20 +{ +break _5; +} +} +} + r6 = heap32[(r0+45)]; + r5 = heap32[(r5+52)]; + r6 = r6 >> 2; + r7 = heap32[(r6+4)]; + r8 = r5 << 3; + r8 = (r7 + r8)|0; + r8 = r8 >> 2; + r4 = r4 >> 2; + r8 = heap32[(r8)]; + r4 = heap32[(r4+52)]; +if(!(r8 ==r5)) //_LBB650_12 +{ +_17: while(true){ + r8 = r8 << 3; + r5 = r5 << 3; + r8 = (r7 + r8)|0; + r5 = (r7 + r5)|0; + r7 = r8 >> 2; + r5 = r5 >> 2; + r8 = heap32[(r7)]; + heap32[(r5)] = r8; + r5 = heap32[(r7)]; + r7 = heap32[(r6+4)]; + r8 = r5 << 3; + r8 = (r7 + r8)|0; + r8 = r8 >> 2; + r8 = heap32[(r8)]; +if(!(r8 !=r5)) //_LBB650_13 +{ +break _17; +} +} +} + r8 = r4 << 3; + r8 = (r7 + r8)|0; + r8 = r8 >> 2; + r8 = heap32[(r8)]; +_20: do { +if(!(r8 ==r4)) //_LBB650_16 +{ +_21: while(true){ + r8 = r8 << 3; + r4 = r4 << 3; + r8 = (r7 + r8)|0; + r4 = (r7 + r4)|0; + r7 = r8 >> 2; + r4 = r4 >> 2; + r8 = heap32[(r7)]; + heap32[(r4)] = r8; + r4 = heap32[(r7)]; + r7 = heap32[(r6+4)]; + r8 = r4 << 3; + r8 = (r7 + r8)|0; + r8 = r8 >> 2; + r8 = heap32[(r8)]; +if(!(r8 !=r4)) //_LBB650_17 +{ +break _20; +} +} +} +} while(0); +if(!(r5 ==r4)) //_LBB650_20 +{ + r5 = r5 << 3; + r7 = (r7 + r5)|0; + r7 = r7 >> 2; + heap32[(r7)] = r4; + r6 = heap32[(r6+4)]; + r4 = r4 << 3; + r4 = (r6 + r4)|0; + r5 = (r6 + r5)|0; + r4 = r4 >> 2; + r5 = r5 >> 2; + r6 = heap32[(r4+1)]; + r5 = heap32[(r5+1)]; + r5 = (r5 + r6)|0; + heap32[(r4+1)] = r5; +} +} +} +} +} +} while(0); + r3 = (r3 + 1)|0; + if(r2 !=r3) //_LBB650_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + r0 = heap32[(r0+45)]; + r2 = r0 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + r0 = _ZN15CProfileManager11CurrentNodeE; + __FUNCTION_TABLE__[(r2)>>2](i7); + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r3 = heap32[(r2+4)]; + r3 = (r3 + -1)|0; + heap32[(r2+4)] = r3; +_27: do { +if(!(r3 !=0)) //_LBB650_27 +{ + r3 = heap32[(r2+1)]; + if(r3 !=0) //_LBB650_24 +{ + r1 = sp + -8; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + r3 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r1 = r1 >> 2; + r4 = heap32[(fp+-2)]; + r5 = heap32[(r3)]; + r4 = (r4 - r5)|0; + r1 = heap32[(r1+1)]; + r3 = heap32[(r3+1)]; + r1 = (r1 - r3)|0; + r3 = (r4 * 1000000)|0; + r1 = (r1 + r3)|0; + r3 = heap32[(r2+3)]; + r1 = (r1 - r3)|0; + f0 = uint(r1); //fuitos r1, f0 + f1 = 1000; + f2 = heapFloat[(r2+2)]; + f0 = f0/f1; + f0 = f2+f0; + heapFloat[(r2+2)] = f0; + r1 = heap32[(r2+4)]; + if(r1 !=0) //_LBB650_27 +{ +break _27; +} +else{ + r1 = heap32[(r0)]; +} +} + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + heap32[(r0)] = r1; +} +} while(0); + return; +} + +function _ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallback18processConstraintsEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; +var __label__ = 0; + i7 = sp + -48;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+14)]; + r3 = heap32[(r1+19)]; + r4 = (r3 + r2)|0; +if(!(r4 <1)) //_LBB651_2 +{ + r4 = heap32[(r1+2)]; + r5 = r4 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+3)]; + r6 = heap32[(r1+7)]; + r7 = heap32[(r1+6)]; + r8 = heap32[(r1+5)]; + r9 = heap32[(r1+1)]; + r10 = heap32[(r1+21)]; + r11 = heap32[(r1+16)]; + r12 = heap32[(r1+9)]; + r13 = heap32[(r1+11)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r13; + heap32[(g0+2)] = r12; + heap32[(g0+3)] = r11; + heap32[(g0+4)] = r2; + heap32[(g0+5)] = r10; + heap32[(g0+6)] = r3; + heap32[(g0+7)] = r9; + heap32[(g0+8)] = r8; + heap32[(g0+9)] = r7; + heap32[(g0+10)] = r6; + __FUNCTION_TABLE__[(r5)>>2](i7); +} + r2 = heap32[(r1+9)]; +if(!(r2 >-1)) //_LBB651_10 +{ + r3 = heap32[(r1+10)]; +if(!(r3 >-1)) //_LBB651_9 +{ + r3 = heap32[(r1+11)]; +if(!(r3 ==0)) //_LBB651_8 +{ + r4 = heapU8[r0+48]; +if(!(r4 ==0)) //_LBB651_7 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r1+11)] = 0; +} + r3 = 1; + heap8[r0+48] = r3; + heap32[(r1+11)] = 0; + heap32[(r1+10)] = 0; +} +_14: while(true){ + r3 = r2 << 2; + r4 = heap32[(r1+11)]; + r3 = (r4 + r3)|0; + r2 = (r2 + 1)|0; + r3 = r3 >> 2; + heap32[(r3)] = 0; + if(r2 !=0) //_LBB651_9 +{ +continue _14; +} +else{ +break _14; +} +} +} + heap32[(r1+9)] = 0; + r2 = heap32[(r1+14)]; +_17: do { +if(!(r2 >-1)) //_LBB651_18 +{ + r3 = heap32[(r1+15)]; +if(!(r3 >-1)) //_LBB651_17 +{ + r3 = heap32[(r1+16)]; +if(!(r3 ==0)) //_LBB651_16 +{ + r4 = heapU8[r0+68]; +if(!(r4 ==0)) //_LBB651_15 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r1+16)] = 0; +} + r3 = 1; + heap8[r0+68] = r3; + heap32[(r1+16)] = 0; + heap32[(r1+15)] = 0; +} +_27: while(true){ + r3 = r2 << 2; + r4 = heap32[(r1+16)]; + r3 = (r4 + r3)|0; + r2 = (r2 + 1)|0; + r3 = r3 >> 2; + heap32[(r3)] = 0; + if(r2 !=0) //_LBB651_17 +{ +continue _27; +} +else{ +break _17; +} +} +} +} while(0); + heap32[(r1+14)] = 0; + r2 = heap32[(r1+19)]; +_30: do { +if(!(r2 >-1)) //_LBB651_26 +{ + r3 = heap32[(r1+20)]; +if(!(r3 >-1)) //_LBB651_25 +{ + r3 = heap32[(r1+21)]; +if(!(r3 ==0)) //_LBB651_24 +{ + r4 = heapU8[r0+88]; +if(!(r4 ==0)) //_LBB651_23 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r1+21)] = 0; +} + r3 = 1; + heap8[r0+88] = r3; + heap32[(r1+21)] = 0; + heap32[(r1+20)] = 0; +} +_40: while(true){ + r0 = r2 << 2; + r3 = heap32[(r1+21)]; + r0 = (r3 + r0)|0; + r2 = (r2 + 1)|0; + r0 = r0 >> 2; + heap32[(r0)] = 0; + if(r2 !=0) //_LBB651_25 +{ +continue _40; +} +else{ +break _30; +} +} +} +} while(0); + heap32[(r1+19)] = 0; + return; +} + +function _ZN23btDiscreteDynamicsWorld9addActionEP17btActionInterface(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+64)]; + r3 = heap32[(r1+63)]; + r4 = heap32[(fp+1)]; + if(r2 ==r3) //_LBB652_2 +{ + r5 = 1; + r6 = r3 << 1; + r6 = r3 == 0 ? r5 : r6; +if(!(r2 >=r6)) //_LBB652_1 +{ + if(r6 !=0) //_LBB652_5 +{ + r2 = gNumAlignedAllocs; + r2 = r2 >> 2; + r7 = heap32[(r2)]; + r8 = r6 << 2; + r7 = (r7 + 1)|0; + r8 = r8 | 3; + heap32[(r2)] = r7; + r2 = (r8 + 16)|0; + heap32[(g0)] = r2; + malloc(i7); + r2 = r_g0; + if(r2 !=0) //_LBB652_7 +{ + r7 = 0; + r8 = (r2 + 4)|0; + r7 = (r7 - r8)|0; + r7 = r7 & 15; + r7 = (r2 + r7)|0; + r8 = (r7 + 4)|0; + r7 = r7 >> 2; + heap32[(r7)] = r2; + r2 = r8; +} +} +else{ + r2 = 0; +} + r7 = (r0 + 260)|0; + if(r3 <1) //_LBB652_10 +{ + r8 = r7 >> 2; + r9 = heap32[(r8)]; +} +else{ + r8 = 0; +_12: while(true){ + r9 = r7 >> 2; + r9 = heap32[(r9)]; + r10 = r8 << 2; + r11 = (r9 + r10)|0; + r11 = r11 >> 2; + r10 = (r2 + r10)|0; + r11 = heap32[(r11)]; + r8 = (r8 + 1)|0; + r10 = r10 >> 2; + heap32[(r10)] = r11; +if(!(r3 !=r8)) //_LBB652_11 +{ +break _12; +} +} + r7 = (r0 + 260)|0; +} + if(r9 !=0) //_LBB652_15 +{ + r8 = heapU8[r0+264]; + if(r8 !=0) //_LBB652_17 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r8 = heap32[(r3)]; + r8 = (r8 + 1)|0; + r9 = r9 >> 2; + heap32[(r3)] = r8; + r3 = heap32[(r9+-1)]; + heap32[(g0)] = r3; + free(i7); + r3 = heap32[(r1+63)]; +} + r8 = r7 >> 2; + heap32[(r8)] = 0; +} + r7 = r7 >> 2; + heap8[r0+264] = r5; + heap32[(r7)] = r2; + heap32[(r1+64)] = r6; +} +} + r0 = r3 << 2; + r2 = heap32[(r1+65)]; + r0 = (r2 + r0)|0; + r0 = r0 >> 2; + heap32[(r0)] = r4; + r0 = heap32[(r1+63)]; + r0 = (r0 + 1)|0; + heap32[(r1+63)] = r0; + return; +} + +function _ZN23btDiscreteDynamicsWorld19integrateTransformsEf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; +var __label__ = 0; + i7 = sp + -264;var g0 = i7>>2; // save stack + r0 = _2E_str794; + r1 = heap32[(fp)]; + heap32[(g0)] = r0; + r0 = r1 >> 2; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + r2 = heap32[(r0+52)]; +if(!(r2 <1)) //_LBB653_19 +{ + f0 = heapFloat[(fp+1)]; + r2 = 0; + r15 = -1; +_3: while(true){ + r3 = heap32[(r0+54)]; + r4 = r2 << 2; + r3 = (r3 + r4)|0; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r4 = r3 >> 2; + heap32[(r4+60)] = 1065353216; + r5 = heap32[(r4+54)]; +if(!(r5 ==2)) //_LBB653_18 +{ +if(!(r5 ==5)) //_LBB653_18 +{ + r5 = heapU8[r3+204]; + r5 = r5 & 3; +if(!(r5 !=0)) //_LBB653_18 +{ + f1 = heapFloat[(r4+76)]; + f2 = heapFloat[(r4+77)]; + f3 = heapFloat[(r4+78)]; + r5 = (r3 + 320)|0; + r6 = (r3 + 4)|0; + r7 = sp + -80; + heap32[(g0)] = r6; + heapFloat[(g0+1)] = f1; + heapFloat[(g0+2)] = f2; + heapFloat[(g0+3)] = f3; + heap32[(g0+4)] = r5; + heapFloat[(g0+5)] = f0; + heap32[(g0+6)] = r7; + _ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(i7); + f1 = heapFloat[(r4+62)]; + f1 = f1*f1; + f2 = 0; +_9: do { +if(!(f1 ==f2)) //_LBB653_17 +{ + r8 = r7 >> 2; + f2 = heapFloat[(r8+14)]; + f3 = heapFloat[(r4+15)]; + f4 = heapFloat[(r8+13)]; + f5 = heapFloat[(r4+14)]; + f6 = heapFloat[(r8+12)]; + f7 = heapFloat[(r4+13)]; + f2 = f2-f3; + f3 = f4-f5; + f4 = f6-f7; + f4 = f4*f4; + f3 = f3*f3; + f3 = f4+f3; + f2 = f2*f2; + f2 = f3+f2; +if(!(f1 >=f2)) //_LBB653_17 +{ + r9 = _2E_str895; + heap32[(g0)] = r9; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + r9 = heap32[(r4+48)]; + r9 = r9 >> 2; + r9 = heap32[(r9+1)]; +if(!(r9 >19)) //_LBB653_11 +{ + r9 = gNumClampedCcdMotions; + r9 = r9 >> 2; + r10 = heap32[(r9)]; + r10 = (r10 + 1)|0; + heap32[(r9)] = r10; + r9 = heap32[(r0+20)]; + r10 = r9 >> 2; + r10 = heap32[(r10)]; + r10 = r10 >> 2; + r10 = heap32[(r10+9)]; + r11 = heap32[(r0+6)]; + r12 = sp + -176; + heap32[(g0)] = r9; + r9 = r12 >> 2; + __FUNCTION_TABLE__[(r10)>>2](i7); + r13 = 1; + heap32[(r9+1)] = 1065353216; + r14 = _ZTVN16btCollisionWorld27ClosestConvexResultCallbackE; + heap16[(sp+-168)>>1] = r13; + r13 = (r14 + 8)|0; + heap16[(sp+-166)>>1] = r15; + heap32[(fp+-44)] = r13; + heap32[(r9+3)] = heap32[(r4+13)]; + heap32[(r9+4)] = heap32[(r4+14)]; + heap32[(r9+5)] = heap32[(r4+15)]; + heap32[(r9+6)] = heap32[(r4+16)]; + heap32[(r9+7)] = heap32[(r8+12)]; + heap32[(r9+8)] = heap32[(r8+13)]; + heap32[(r9+9)] = heap32[(r8+14)]; + r14 = _ZTV34btClosestNotMeConvexResultCallback; + heap32[(r9+10)] = heap32[(r8+15)]; + r8 = (r14 + 8)|0; + heap32[(r9+19)] = 0; + heap32[(fp+-44)] = r8; + heap32[(r9+20)] = r3; + heap32[(r9+21)] = 0; + heap32[(r9+22)] = r_g0; + r8 = sp + -232; + heap32[(r9+23)] = r11; + r10 = r8 >> 2; + f1 = heapFloat[(r4+61)]; + heap32[(r10+2)] = 0; + heap32[(r10+3)] = 1065353216; + heap32[(r10+4)] = 1065353216; + r11 = _ZTV13btSphereShape; + heap32[(r10+5)] = 1065353216; + r11 = (r11 + 8)|0; + heap32[(r10+6)] = 0; + heap32[(fp+-58)] = r11; + heap32[(r10+1)] = 8; + heapFloat[(r10+7)] = f1; + heapFloat[(r10+11)] = f1; + r10 = heap32[(r4+47)]; + r10 = heapU16[(r10+4)>>1]; + heap16[(sp+-168)>>1] = r10; + r10 = heap32[(r4+47)]; + r10 = heapU16[(r10+6)>>1]; + heap16[(sp+-166)>>1] = r10; + heap32[(g0)] = r1; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r6; + heap32[(g0+3)] = r7; + heap32[(g0+4)] = r12; + heap32[(g0+5)] = 0; + _ZNK16btCollisionWorld15convexSweepTestEPK13btConvexShapeRK11btTransformS5_RNS_20ConvexResultCallbackEf(i7); + f1 = heapFloat[(r9+1)]; + f2 = 1; +if(!(f1 >=f2)) //_LBB653_10 +{ + heapFloat[(r4+60)] = f1; + f2 = heapFloat[(r4+76)]; + f3 = heapFloat[(r4+77)]; + f4 = heapFloat[(r4+78)]; + f1 = f1*f0; + heap32[(g0)] = r6; + heapFloat[(g0+1)] = f2; + heapFloat[(g0+2)] = f3; + heapFloat[(g0+3)] = f4; + heap32[(g0+4)] = r5; + heapFloat[(g0+5)] = f1; + heap32[(g0+6)] = r7; + _ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(i7); + heap32[(r4+60)] = 0; +} + r4 = _ZTV13btConvexShape; + r4 = (r4 + 8)|0; + heap32[(fp+-58)] = r4; + heap32[(fp+-44)] = r13; +} + r4 = _ZN15CProfileManager11CurrentNodeE; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r6 = r5 >> 2; + r8 = heap32[(r6+4)]; + r8 = (r8 + -1)|0; + heap32[(r6+4)] = r8; +if(!(r8 !=0)) //_LBB653_17 +{ + r8 = heap32[(r6+1)]; + if(r8 !=0) //_LBB653_14 +{ + r5 = sp + -8; + heap32[(g0)] = r5; + heap32[(g0+1)] = 0; + r8 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r8 = r8 >> 2; + r8 = heap32[(r8)]; + r8 = r8 >> 2; + r5 = r5 >> 2; + r9 = heap32[(fp+-2)]; + r10 = heap32[(r8)]; + r9 = (r9 - r10)|0; + r5 = heap32[(r5+1)]; + r8 = heap32[(r8+1)]; + r5 = (r5 - r8)|0; + r8 = (r9 * 1000000)|0; + r5 = (r5 + r8)|0; + r8 = heap32[(r6+3)]; + r5 = (r5 - r8)|0; + f1 = uint(r5); //fuitos r5, f1 + f2 = 1000; + f3 = heapFloat[(r6+2)]; + f1 = f1/f2; + f1 = f3+f1; + heapFloat[(r6+2)] = f1; + r5 = heap32[(r6+4)]; + if(r5 !=0) //_LBB653_17 +{ +break _9; +} +else{ + r5 = heap32[(r4)]; +} +} + r5 = r5 >> 2; + r5 = heap32[(r5+5)]; + heap32[(r4)] = r5; +} +} +} +} while(0); + heap32[(g0)] = r3; + heap32[(g0+1)] = r7; + _ZN11btRigidBody18proceedToTransformERK11btTransform(i7); +} +} +} + r2 = (r2 + 1)|0; + r3 = heap32[(r0+52)]; + if(r3 >r2) //_LBB653_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + r0 = _ZN15CProfileManager11CurrentNodeE; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r3 = heap32[(r2+4)]; + r3 = (r3 + -1)|0; + heap32[(r2+4)] = r3; +_26: do { +if(!(r3 !=0)) //_LBB653_25 +{ + r3 = heap32[(r2+1)]; + if(r3 !=0) //_LBB653_22 +{ + r1 = sp + -16; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + r3 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r1 = r1 >> 2; + r4 = heap32[(fp+-4)]; + r5 = heap32[(r3)]; + r4 = (r4 - r5)|0; + r1 = heap32[(r1+1)]; + r3 = heap32[(r3+1)]; + r1 = (r1 - r3)|0; + r3 = (r4 * 1000000)|0; + r1 = (r1 + r3)|0; + r3 = heap32[(r2+3)]; + r1 = (r1 - r3)|0; + f0 = uint(r1); //fuitos r1, f0 + f1 = 1000; + f2 = heapFloat[(r2+2)]; + f0 = f0/f1; + f0 = f2+f0; + heapFloat[(r2+2)] = f0; + r1 = heap32[(r2+4)]; + if(r1 !=0) //_LBB653_25 +{ +break _26; +} +else{ + r1 = heap32[(r0)]; +} +} + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + heap32[(r0)] = r1; +} +} while(0); + return; +} + +function _ZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfo(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var r19; + var r20; + var r21; + var r22; + var r23; + var r24; + var f0; + var f1; + var f2; +var __label__ = 0; + i7 = sp + -168;var g0 = i7>>2; // save stack + r0 = _2E_str996; + heap32[(g0)] = r0; + r0 = sp + -48; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + r1 = 1; + r2 = r0 >> 2; + heap8[sp+-32] = r1; + heap32[(r2+3)] = 0; + r3 = heap32[(fp)]; + heap32[(r2+1)] = 0; + r4 = r3 >> 2; + heap32[(r2+2)] = 0; + r5 = heap32[(r4+47)]; +if(!(r5 <1)) //_LBB654_7 +{ + r6 = gNumAlignedAllocs; + r6 = r6 >> 2; + r7 = heap32[(r6)]; + r8 = r5 << 2; + r7 = (r7 + 1)|0; + r8 = r8 | 3; + heap32[(r6)] = r7; + r6 = (r8 + 16)|0; + heap32[(g0)] = r6; + malloc(i7); + r6 = r_g0; + if(r6 !=0) //_LBB654_3 +{ + r7 = 0; + r8 = (r6 + 4)|0; + r7 = (r7 - r8)|0; + r7 = r7 & 15; + r7 = (r6 + r7)|0; + r8 = (r7 + 4)|0; + r7 = r7 >> 2; + heap32[(r7)] = r6; + r6 = r8; +} + r7 = 1; + heap8[sp+-32] = r7; + r7 = (r7 - r5)|0; + r8 = 0; + heap32[(r2+3)] = r6; + heap32[(r2+2)] = r5; +_6: while(true){ + r9 = r8 << 2; + r6 = (r6 - r9)|0; + r6 = r6 >> 2; + heap32[(r6)] = 0; + if(r7 ==r8) //_LBB654_7 +{ +break _6; +} +else{ + r6 = heap32[(r2+3)]; + r8 = (r8 + -1)|0; +continue _6; +} +} +} + heap32[(r2+1)] = r5; + r5 = heap32[(r4)]; + r5 = r5 >> 2; + r5 = heap32[(r5+24)]; + heap32[(g0)] = r3; + __FUNCTION_TABLE__[(r5)>>2](i7); + r5 = r_g0; +_10: do { +if(!(r5 <1)) //_LBB654_10 +{ + r5 = 0; +_12: while(true){ + r6 = r5 << 2; + r7 = heap32[(r4+49)]; + r7 = (r7 + r6)|0; + r7 = r7 >> 2; + r8 = heap32[(r2+3)]; + r6 = (r8 + r6)|0; + r7 = heap32[(r7)]; + r6 = r6 >> 2; + heap32[(r6)] = r7; + r6 = heap32[(r4)]; + r6 = r6 >> 2; + r6 = heap32[(r6+24)]; + r5 = (r5 + 1)|0; + heap32[(g0)] = r3; + __FUNCTION_TABLE__[(r6)>>2](i7); + r6 = r_g0; + if(r6 >r5) //_LBB654_9 +{ +continue _12; +} +else{ +break _10; +} +} +} +} while(0); + r5 = heap32[(r2+1)]; +if(!(r5 <2)) //_LBB654_12 +{ + r5 = (r5 + -1)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = r5; + _ZN20btAlignedObjectArrayIP17btTypedConstraintE17quickSortInternalI33btSortConstraintOnIslandPredicateEEvT_ii(i7); +} + r0 = heap32[(fp+1)]; + r5 = heap32[(r4)]; + r5 = r5 >> 2; + r5 = heap32[(r5+24)]; + heap32[(g0)] = r3; + __FUNCTION_TABLE__[(r5)>>2](i7); + r3 = r_g0; + if(r3 !=0) //_LBB654_14 +{ + r3 = heap32[(r2+3)]; +} +else{ + r3 = 0; +} + r5 = heap32[(r4+6)]; + r6 = heap32[(r4+44)]; + r7 = _ZTVZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback; + r8 = heap32[(r4+19)]; + r9 = heap32[(r4+21)]; + r10 = heap32[(r2+1)]; + r11 = sp + -144; + r7 = (r7 + 8)|0; + r12 = r11 >> 2; + heap32[(fp+-36)] = r7; + heap32[(r12+1)] = r0; + heap32[(r12+2)] = r6; + heap32[(r12+3)] = r3; + heap32[(r12+4)] = r10; + heap32[(r12+5)] = r9; + heap32[(r12+6)] = r8; + heap32[(r12+7)] = r5; + heap8[sp+-96] = r1; + heap32[(r12+11)] = 0; + heap32[(r12+9)] = 0; + heap32[(r12+10)] = 0; + heap8[sp+-76] = r1; + heap32[(r12+16)] = 0; + heap32[(r12+14)] = 0; + heap32[(r12+15)] = 0; + heap8[sp+-56] = r1; + heap32[(r12+21)] = 0; + heap32[(r12+19)] = 0; + r3 = r6 >> 2; + heap32[(r12+20)] = 0; + r6 = r5 >> 2; + r3 = heap32[(r3)]; + r6 = heap32[(r6)]; + r3 = r3 >> 2; + r6 = r6 >> 2; + r3 = heap32[(r3+2)]; + r6 = heap32[(r6+9)]; + heap32[(g0)] = r5; + __FUNCTION_TABLE__[(r6)>>2](i7); + r6 = heap32[(r4+2)]; + r8 = heap32[(r4+44)]; + heap32[(g0)] = r8; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r_g0; + __FUNCTION_TABLE__[(r3)>>2](i7); + r3 = heap32[(r4+45)]; + r5 = heap32[(r4+6)]; + r6 = _2E_str155; + heap32[(g0)] = r6; + r6 = r3 >> 2; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + r8 = heap32[(r6+7)]; +_22: do { +if(!(r8 >-1)) //_LBB654_23 +{ + r9 = heap32[(r6+8)]; +if(!(r9 >-1)) //_LBB654_22 +{ + r9 = heap32[(r6+9)]; +if(!(r9 ==0)) //_LBB654_21 +{ + r10 = heapU8[r3+40]; +if(!(r10 ==0)) //_LBB654_20 +{ + r10 = gNumAlignedFree; + r10 = r10 >> 2; + r13 = heap32[(r10)]; + r13 = (r13 + 1)|0; + r9 = r9 >> 2; + heap32[(r10)] = r13; + r9 = heap32[(r9+-1)]; + heap32[(g0)] = r9; + free(i7); +} + heap32[(r6+9)] = 0; +} + r9 = 1; + heap8[r3+40] = r9; + heap32[(r6+9)] = 0; + heap32[(r6+8)] = 0; +} +_32: while(true){ + r9 = r8 << 2; + r10 = heap32[(r6+9)]; + r9 = (r10 + r9)|0; + r8 = (r8 + 1)|0; + r9 = r9 >> 2; + heap32[(r9)] = 0; + if(r8 !=0) //_LBB654_22 +{ +continue _32; +} +else{ +break _22; +} +} +} +} while(0); + heap32[(r6+7)] = 0; + r8 = heap32[(r6+2)]; + if(r8 >0) //_LBB654_25 +{ + r9 = 0; +_37: while(true){ + r10 = heap32[(r6+4)]; + r13 = r9 << 3; + r13 = (r10 + r13)|0; + r13 = r13 >> 2; + r13 = heap32[(r13)]; + r14 = r9 << 1; + if(r9 ==r13) //_LBB654_28 +{ + r16 = r9; +} +else{ + r15 = r10; + r16 = r9; +_42: while(true){ + r13 = r13 << 3; + r16 = r16 << 3; + r13 = (r15 + r13)|0; + r15 = (r15 + r16)|0; + r13 = r13 >> 2; + r15 = r15 >> 2; + r16 = heap32[(r13)]; + heap32[(r15)] = r16; + r16 = heap32[(r13)]; + r15 = heap32[(r6+4)]; + r13 = r16 << 3; + r13 = (r15 + r13)|0; + r13 = r13 >> 2; + r13 = heap32[(r13)]; +if(!(r13 !=r16)) //_LBB654_29 +{ +break _42; +} +} +} + r13 = r14 << 2; + r10 = (r10 + r13)|0; + r9 = (r9 + 1)|0; + r10 = r10 >> 2; + heap32[(r10)] = r16; +if(!(r8 !=r9)) //_LBB654_26 +{ +break _37; +} +} + r8 = heap32[(r6+2)]; + if(r8 >1) //_LBB654_33 +{ + r9 = (r3 + 4)|0; + r8 = (r8 + -1)|0; + heap32[(g0)] = r9; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = r8; + _ZN20btAlignedObjectArrayI9btElementE17quickSortInternalI31btUnionFindElementSortPredicateEEvT_ii(i7); + r8 = heap32[(r6+2)]; +} +} + r9 = 0; +_48: while(true){ + r10 = r9; + if(r10 > 2; + r14 = heap32[(r9)]; + r15 = (r10 + 1)|0; +_51: while(true){ + r9 = r15; + if(r9 >=r8) //_LBB654_46 +{ +break _51; +} +else{ + r15 = r9 << 3; + r15 = (r13 + r15)|0; + r16 = r15 >> 2; + r15 = (r9 + 1)|0; + r16 = heap32[(r16)]; +if(!(r16 ==r14)) //_LBB654_36 +{ +break _51; +} +} +} + r16 = 1; + r15 = r10; +_55: while(true){ + if(r15 > 2; + r17 = heap32[(r17+1)]; + r18 = heap32[(r4+4)]; + r17 = r17 << 2; + r17 = (r18 + r17)|0; + r17 = r17 >> 2; + r17 = heap32[(r17)]; + r17 = r17 >> 2; + r18 = heap32[(r17+52)]; + if(r18 ==r14) //_LBB654_42 +{ + r17 = heap32[(r17+54)]; + r18 = 0; + if(r17 ==4) //_LBB654_44 +{ + r16 = r18; +} +else{ + r16 = r17 == 1 ? r18 : r16; +} +} +else{ + if(r18 !=-1) //_LBB654_41 +{ +__label__ = 37; +break _48; +} +} + r15 = (r15 + 1)|0; +} +else{ +break _55; +} +} + r13 = r16 & 255; + if(r13 ==0) //_LBB654_50 +{ +_67: while(true){ + if(r10 > 2; + r13 = heap32[(r13+1)]; + r15 = heap32[(r4+4)]; + r13 = r13 << 2; + r13 = (r15 + r13)|0; + r13 = r13 >> 2; + r13 = heap32[(r13)]; + r13 = r13 >> 2; + r15 = heap32[(r13+52)]; + if(r15 ==r14) //_LBB654_61 +{ + r15 = heap32[(r13+54)]; +if(!(r15 !=2)) //_LBB654_63 +{ + heap32[(r13+54)] = 3; + heap32[(r13+55)] = 0; +} +} +else{ +if(!(r15 ==-1)) //_LBB654_63 +{ +__label__ = 54; +break _48; +} +} + r10 = (r10 + 1)|0; +continue _67; +} +else{ +continue _48; +} +} +} +else{ +_75: while(true){ + if(r10 > 2; + r13 = heap32[(r13+1)]; + r15 = heap32[(r4+4)]; + r13 = r13 << 2; + r13 = (r15 + r13)|0; + r13 = r13 >> 2; + r13 = heap32[(r13)]; + r13 = r13 >> 2; + r15 = heap32[(r13+52)]; + if(r15 ==r14) //_LBB654_54 +{ + r15 = heap32[(r13+54)]; + r15 = (r15 + -4)|0; +if(!(uint(r15) > 2; + r9 = heap32[(r8)]; + r9 = r9 >> 2; + r9 = heap32[(r9+9)]; + heap32[(g0)] = r5; + __FUNCTION_TABLE__[(r9)>>2](i7); + r9 = r_g0; +_87: do { +if(!(r9 <1)) //_LBB654_104 +{ + r10 = 0; +_89: while(true){ + r13 = heap32[(r8)]; + r13 = r13 >> 2; + r13 = heap32[(r13+10)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = r10; + __FUNCTION_TABLE__[(r13)>>2](i7); + r13 = r_g0; + r14 = r13 >> 2; + r15 = heap32[(r14+277)]; + r14 = heap32[(r14+278)]; + if(r15 ==0) //_LBB654_70 +{ +__label__ = 64; +} +else{ + r16 = r15 >> 2; + r16 = heap32[(r16+54)]; + if(r16 !=2) //_LBB654_72 +{ +__label__ = 66; +} +else{ +__label__ = 64; +} +} +if (__label__ == 64){ + if(r14 ==0) //_LBB654_103 +{ +__label__ = 95; +} +else{ + r16 = r14 >> 2; + r16 = heap32[(r16+54)]; + if(r16 ==2) //_LBB654_103 +{ +__label__ = 95; +} +else{ +__label__ = 66; +} +} +} +if (__label__ == 66){ + r16 = heapU8[r15+204]; + r16 = r16 & 2; +if(!(r16 ==0)) //_LBB654_78 +{ + r16 = r15 >> 2; + r16 = heap32[(r16+54)]; +if(!(r16 ==2)) //_LBB654_78 +{ + r16 = heapU8[r14+204]; + r16 = r16 & 3; +if(!(r16 !=0)) //_LBB654_78 +{ + r16 = r14 >> 2; + r17 = heap32[(r16+54)]; + r17 = (r17 + -4)|0; +if(!(uint(r17) > 2; + r16 = heap32[(r16+54)]; +if(!(r16 ==2)) //_LBB654_84 +{ + r16 = heapU8[r15+204]; + r16 = r16 & 3; +if(!(r16 !=0)) //_LBB654_84 +{ + r16 = r15 >> 2; + r17 = heap32[(r16+54)]; + r17 = (r17 + -4)|0; +if(!(uint(r17) > 2; + r16 = heap32[(r16+7)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = r15; + heap32[(g0+2)] = r14; + __FUNCTION_TABLE__[(r16)>>2](i7); + r14 = r_g0; +if(!(r14 ==0)) //_LBB654_103 +{ + r14 = heap32[(r6+8)]; + r15 = heap32[(r6+7)]; + if(r14 ==r15) //_LBB654_88 +{ + r16 = 1; + r17 = r15 << 1; + r17 = r15 == 0 ? r16 : r17; +if(!(r14 >=r17)) //_LBB654_87 +{ + if(r17 !=0) //_LBB654_91 +{ + r14 = gNumAlignedAllocs; + r14 = r14 >> 2; + r18 = heap32[(r14)]; + r19 = r17 << 2; + r18 = (r18 + 1)|0; + r19 = r19 | 3; + heap32[(r14)] = r18; + r14 = (r19 + 16)|0; + heap32[(g0)] = r14; + malloc(i7); + r14 = r_g0; + if(r14 !=0) //_LBB654_93 +{ + r15 = 0; + r18 = (r14 + 4)|0; + r15 = (r15 - r18)|0; + r15 = r15 & 15; + r15 = (r14 + r15)|0; + r18 = r15 >> 2; + heap32[(r18)] = r14; + r14 = (r15 + 4)|0; + r15 = heap32[(r6+7)]; +} +} +else{ + r14 = 0; +} +if(!(r15 <1)) //_LBB654_97 +{ + r18 = 0; +_126: while(true){ + r19 = r18 << 2; + r20 = heap32[(r6+9)]; + r20 = (r20 + r19)|0; + r20 = r20 >> 2; + r19 = (r14 + r19)|0; + r20 = heap32[(r20)]; + r18 = (r18 + 1)|0; + r19 = r19 >> 2; + heap32[(r19)] = r20; +if(!(r15 !=r18)) //_LBB654_96 +{ +break _126; +} +} +} + r15 = heap32[(r6+9)]; +if(!(r15 ==0)) //_LBB654_101 +{ + r18 = heapU8[r3+40]; +if(!(r18 ==0)) //_LBB654_100 +{ + r18 = gNumAlignedFree; + r18 = r18 >> 2; + r19 = heap32[(r18)]; + r19 = (r19 + 1)|0; + r15 = r15 >> 2; + heap32[(r18)] = r19; + r15 = heap32[(r15+-1)]; + heap32[(g0)] = r15; + free(i7); +} + heap32[(r6+9)] = 0; +} + heap8[r3+40] = r16; + heap32[(r6+9)] = r14; + heap32[(r6+8)] = r17; + r15 = heap32[(r6+7)]; +} +} + r14 = r15 << 2; + r15 = heap32[(r6+9)]; + r14 = (r15 + r14)|0; + r14 = r14 >> 2; + heap32[(r14)] = r13; + r13 = heap32[(r6+7)]; + r13 = (r13 + 1)|0; + heap32[(r6+7)] = r13; +} +} +} + r10 = (r10 + 1)|0; + if(r9 !=r10) //_LBB654_68 +{ +continue _89; +} +else{ +break _87; +} +} +} +} while(0); + r9 = _ZN15CProfileManager11CurrentNodeE; + r9 = r9 >> 2; + r10 = heap32[(r9)]; + r13 = r10 >> 2; + r14 = heap32[(r13+4)]; + r14 = (r14 + -1)|0; + heap32[(r13+4)] = r14; +_138: do { +if(!(r14 !=0)) //_LBB654_110 +{ + r14 = heap32[(r13+1)]; + if(r14 !=0) //_LBB654_107 +{ + r10 = sp + -24; + heap32[(g0)] = r10; + heap32[(g0+1)] = 0; + r14 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r14 = r14 >> 2; + r14 = heap32[(r14)]; + r14 = r14 >> 2; + r10 = r10 >> 2; + r15 = heap32[(fp+-6)]; + r16 = heap32[(r14)]; + r15 = (r15 - r16)|0; + r10 = heap32[(r10+1)]; + r14 = heap32[(r14+1)]; + r10 = (r10 - r14)|0; + r14 = (r15 * 1000000)|0; + r10 = (r10 + r14)|0; + r14 = heap32[(r13+3)]; + r10 = (r10 - r14)|0; + f0 = uint(r10); //fuitos r10, f0 + f1 = 1000; + f2 = heapFloat[(r13+2)]; + f0 = f0/f1; + f0 = f2+f0; + heapFloat[(r13+2)] = f0; + r10 = heap32[(r13+4)]; + if(r10 !=0) //_LBB654_110 +{ +break _138; +} +else{ + r10 = heap32[(r9)]; +} +} + r10 = r10 >> 2; + r10 = heap32[(r10+5)]; + heap32[(r9)] = r10; +} +} while(0); + r10 = heap32[(r6+2)]; + r13 = _2E_str3158; + heap32[(g0)] = r13; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + r13 = heapU8[r3+64]; +_145: do { + if(r13 !=0) //_LBB654_112 +{ + r5 = heap32[(r6+7)]; +if(!(r5 <2)) //_LBB654_114 +{ + r8 = (r3 + 24)|0; + r13 = (r5 + -1)|0; + heap32[(g0)] = r8; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = r13; + _ZN20btAlignedObjectArrayIP20btPersistentManifoldE17quickSortInternalI33btPersistentManifoldSortPredicateEEvT_ii(i7); +} +if(!(r10 <1)) //_LBB654_163 +{ + r8 = 0; + r13 = r8; + r14 = r8; +_151: while(true){ + r15 = heap32[(r6+4)]; + r16 = r14 << 3; + r15 = (r15 + r16)|0; + r15 = r15 >> 2; + r15 = heap32[(r15)]; + r16 = r8; +_153: while(true){ + if(r14 >=r10) //_LBB654_139 +{ +break _153; +} +else{ + r17 = heap32[(r6+4)]; + r18 = r14 << 3; + r17 = (r17 + r18)|0; + r17 = r17 >> 2; + r18 = heap32[(r17)]; + if(r18 ==r15) //_LBB654_117 +{ + r17 = heap32[(r17+1)]; + r18 = heap32[(r4+4)]; + r17 = r17 << 2; + r17 = (r18 + r17)|0; + r17 = r17 >> 2; + r18 = heap32[(r6+13)]; + r19 = heap32[(r6+12)]; + r17 = heap32[(r17)]; + if(r18 ==r19) //_LBB654_119 +{ + r20 = 1; + r21 = r19 << 1; + r21 = r19 == 0 ? r20 : r21; +if(!(r18 >=r21)) //_LBB654_118 +{ + if(r21 !=0) //_LBB654_122 +{ + r18 = gNumAlignedAllocs; + r18 = r18 >> 2; + r22 = heap32[(r18)]; + r23 = r21 << 2; + r22 = (r22 + 1)|0; + r23 = r23 | 3; + heap32[(r18)] = r22; + r18 = (r23 + 16)|0; + heap32[(g0)] = r18; + malloc(i7); + r18 = r_g0; + if(r18 !=0) //_LBB654_124 +{ + r19 = 0; + r22 = (r18 + 4)|0; + r19 = (r19 - r22)|0; + r19 = r19 & 15; + r19 = (r18 + r19)|0; + r22 = r19 >> 2; + heap32[(r22)] = r18; + r18 = (r19 + 4)|0; + r19 = heap32[(r6+12)]; +} +} +else{ + r18 = 0; +} +if(!(r19 <1)) //_LBB654_128 +{ + r22 = 0; +_167: while(true){ + r23 = r22 << 2; + r24 = heap32[(r6+14)]; + r24 = (r24 + r23)|0; + r24 = r24 >> 2; + r23 = (r18 + r23)|0; + r24 = heap32[(r24)]; + r22 = (r22 + 1)|0; + r23 = r23 >> 2; + heap32[(r23)] = r24; +if(!(r19 !=r22)) //_LBB654_127 +{ +break _167; +} +} +} + r19 = heap32[(r6+14)]; +if(!(r19 ==0)) //_LBB654_132 +{ + r22 = heapU8[r3+60]; +if(!(r22 ==0)) //_LBB654_131 +{ + r22 = gNumAlignedFree; + r22 = r22 >> 2; + r23 = heap32[(r22)]; + r23 = (r23 + 1)|0; + r19 = r19 >> 2; + heap32[(r22)] = r23; + r19 = heap32[(r19+-1)]; + heap32[(g0)] = r19; + free(i7); +} + heap32[(r6+14)] = 0; +} + heap8[r3+60] = r20; + heap32[(r6+14)] = r18; + heap32[(r6+13)] = r21; + r19 = heap32[(r6+12)]; +} +} + r18 = r19 << 2; + r19 = heap32[(r6+14)]; + r18 = (r19 + r18)|0; + r18 = r18 >> 2; + heap32[(r18)] = r17; + r18 = heap32[(r6+12)]; + r18 = (r18 + 1)|0; + r17 = r17 >> 2; + heap32[(r6+12)] = r18; + r17 = heap32[(r17+54)]; + if(r17 !=2) //_LBB654_135 +{ + r18 = 1; + r16 = r17 == 5 ? r18 : r16; +} +else{ + r16 = 1; +} + r14 = (r14 + 1)|0; +} +else{ +break _153; +} +} +} +_182: do { + if(r13 > 2; + r20 = heap32[(r20)]; + r20 = r20 >> 2; + r21 = heap32[(r20+277)]; + r21 = r21 >> 2; + r21 = heap32[(r21+52)]; + if(r21 <0) //_LBB654_143 +{ + r21 = heap32[(r20+278)]; + r21 = r21 >> 2; + r21 = heap32[(r21+52)]; +} + if(r21 !=r15) //_LBB654_140 +{ +__label__ = 129; +} +else{ + r19 = (r17 + r19)|0; + r20 = 1; +_188: while(true){ + r17 = r20; + r1 = (r13 + r17)|0; + if(r1 >=r5) //_LBB654_151 +{ +__label__ = 138; +break _182; +} +else{ + r20 = r17 << 2; + r20 = (r19 + r20)|0; + r20 = r20 >> 2; + r20 = heap32[(r20)]; + r20 = r20 >> 2; + r21 = heap32[(r20+277)]; + r21 = r21 >> 2; + r21 = heap32[(r21+52)]; + if(r21 <0) //_LBB654_149 +{ + r20 = heap32[(r20+278)]; + r20 = r20 >> 2; + r21 = heap32[(r20+52)]; +} + r20 = (r17 + 1)|0; +if(!(r21 ==r15)) //_LBB654_146 +{ +__label__ = 138; +break _182; +} +} +} +} +} +else{ +__label__ = 129; +} +} while(0); +if (__label__ == 129){ + r17 = 0; + r18 = r17; +} + r16 = r16 & 255; +if(!(r16 !=0)) //_LBB654_153 +{ + r16 = heap32[(fp+-36)]; + r16 = r16 >> 2; + r16 = heap32[(r16+2)]; + r19 = heap32[(r6+12)]; + r20 = heap32[(r6+14)]; + heap32[(g0)] = r11; + heap32[(g0+1)] = r20; + heap32[(g0+2)] = r19; + heap32[(g0+3)] = r18; + heap32[(g0+4)] = r17; + heap32[(g0+5)] = r15; + __FUNCTION_TABLE__[(r16)>>2](i7); +} + r15 = heap32[(r6+12)]; +_200: do { +if(!(r15 >-1)) //_LBB654_162 +{ + r16 = heap32[(r6+13)]; + if(r16 <0) //_LBB654_156 +{ + r16 = heap32[(r6+14)]; +if(!(r16 ==0)) //_LBB654_160 +{ + r18 = heapU8[r3+60]; +if(!(r18 ==0)) //_LBB654_159 +{ + r18 = gNumAlignedFree; + r18 = r18 >> 2; + r19 = heap32[(r18)]; + r19 = (r19 + 1)|0; + r16 = r16 >> 2; + heap32[(r18)] = r19; + r16 = heap32[(r16+-1)]; + heap32[(g0)] = r16; + free(i7); +} + heap32[(r6+14)] = 0; +} + r16 = 1; + heap8[r3+60] = r16; + heap32[(r6+14)] = 0; + heap32[(r6+13)] = 0; +} +_210: while(true){ + r16 = r15 << 2; + r18 = heap32[(r6+14)]; + r16 = (r18 + r16)|0; + r15 = (r15 + 1)|0; + r16 = r16 >> 2; + heap32[(r16)] = 0; +if(!(r15 !=0)) //_LBB654_161 +{ +break _200; +} +} +} +} while(0); + r13 = r17 == 0 ? r13 : r1; + heap32[(r6+12)] = 0; + if(r14 > 2; + r1 = heap32[(r1+11)]; + heap32[(g0)] = r5; + __FUNCTION_TABLE__[(r1)>>2](i7); + r1 = r_g0; + r3 = heap32[(r8)]; + r3 = r3 >> 2; + r3 = heap32[(r3+9)]; + heap32[(g0)] = r5; + __FUNCTION_TABLE__[(r3)>>2](i7); + r6 = heap32[(fp+-36)]; + r6 = r6 >> 2; + r6 = heap32[(r6+2)]; + r10 = heap32[(r4+2)]; + r5 = heap32[(r4+4)]; + heap32[(g0)] = r11; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r10; + heap32[(g0+3)] = r1; + heap32[(g0+4)] = r_g0; + heap32[(g0+5)] = -1; + __FUNCTION_TABLE__[(r6)>>2](i7); +} +} while(0); + r1 = heap32[(r9)]; + r3 = r1 >> 2; + r5 = heap32[(r3+4)]; + r5 = (r5 + -1)|0; + heap32[(r3+4)] = r5; +_215: do { +if(!(r5 !=0)) //_LBB654_169 +{ + r5 = heap32[(r3+1)]; + if(r5 !=0) //_LBB654_166 +{ + r1 = sp + -16; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + r5 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r5 = r5 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r1 = r1 >> 2; + r6 = heap32[(fp+-4)]; + r8 = heap32[(r5)]; + r6 = (r6 - r8)|0; + r1 = heap32[(r1+1)]; + r5 = heap32[(r5+1)]; + r1 = (r1 - r5)|0; + r5 = (r6 * 1000000)|0; + r1 = (r1 + r5)|0; + r5 = heap32[(r3+3)]; + r1 = (r1 - r5)|0; + f0 = uint(r1); //fuitos r1, f0 + f1 = 1000; + f2 = heapFloat[(r3+2)]; + f0 = f0/f1; + f0 = f2+f0; + heapFloat[(r3+2)] = f0; + r1 = heap32[(r3+4)]; + if(r1 !=0) //_LBB654_169 +{ +break _215; +} +else{ + r1 = heap32[(r9)]; +} +} + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + heap32[(r9)] = r1; +} +} while(0); + heap32[(g0)] = r11; + _ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallback18processConstraintsEv(i7); + r1 = heap32[(r4+44)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+4)]; + r5 = heap32[(r4+19)]; + r4 = heap32[(r4+21)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r5; + __FUNCTION_TABLE__[(r3)>>2](i7); + heap32[(fp+-36)] = r7; + r0 = heap32[(r12+21)]; +if(!(r0 ==0)) //_LBB654_173 +{ + r1 = heapU8[sp+-56]; +if(!(r1 ==0)) //_LBB654_172 +{ + r1 = gNumAlignedFree; + r1 = r1 >> 2; + r3 = heap32[(r1)]; + r3 = (r3 + 1)|0; + r0 = r0 >> 2; + heap32[(r1)] = r3; + r0 = heap32[(r0+-1)]; + heap32[(g0)] = r0; + free(i7); +} + heap32[(r12+21)] = 0; +} + r0 = 1; + heap8[sp+-56] = r0; + heap32[(r12+21)] = 0; + heap32[(r12+19)] = 0; + heap32[(r12+20)] = 0; + r1 = heap32[(r12+16)]; +if(!(r1 ==0)) //_LBB654_177 +{ + r3 = heapU8[sp+-76]; +if(!(r3 ==0)) //_LBB654_176 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r12+16)] = 0; +} + heap8[sp+-76] = r0; + heap32[(r12+16)] = 0; + heap32[(r12+14)] = 0; + heap32[(r12+15)] = 0; + r1 = heap32[(r12+11)]; +if(!(r1 ==0)) //_LBB654_181 +{ + r3 = heapU8[sp+-96]; +if(!(r3 ==0)) //_LBB654_180 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r12+11)] = 0; +} + heap8[sp+-96] = r0; + heap32[(r12+11)] = 0; + heap32[(r12+9)] = 0; + heap32[(r12+10)] = 0; + r1 = heap32[(r2+3)]; +if(!(r1 ==0)) //_LBB654_185 +{ + r3 = heapU8[sp+-32]; +if(!(r3 ==0)) //_LBB654_184 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+3)] = 0; +} + heap8[sp+-32] = r0; + heap32[(r2+3)] = 0; + heap32[(r2+1)] = 0; + heap32[(r2+2)] = 0; + r0 = heap32[(r9)]; + r1 = r0 >> 2; + r2 = heap32[(r1+4)]; + r2 = (r2 + -1)|0; + heap32[(r1+4)] = r2; +_246: do { +if(!(r2 !=0)) //_LBB654_191 +{ + r2 = heap32[(r1+1)]; + if(r2 !=0) //_LBB654_188 +{ + r0 = sp + -8; + heap32[(g0)] = r0; + heap32[(g0+1)] = 0; + r2 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r2 = r2 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r0 = r0 >> 2; + r3 = heap32[(fp+-2)]; + r4 = heap32[(r2)]; + r3 = (r3 - r4)|0; + r0 = heap32[(r0+1)]; + r2 = heap32[(r2+1)]; + r0 = (r0 - r2)|0; + r2 = (r3 * 1000000)|0; + r0 = (r0 + r2)|0; + r2 = heap32[(r1+3)]; + r0 = (r0 - r2)|0; + f0 = uint(r0); //fuitos r0, f0 + f1 = 1000; + f2 = heapFloat[(r1+2)]; + f0 = f0/f1; + f0 = f2+f0; + heapFloat[(r1+2)] = f0; + r0 = heap32[(r1+4)]; + if(r0 !=0) //_LBB654_191 +{ +break _246; +} +else{ + r0 = heap32[(r9)]; +} +} + r0 = r0 >> 2; + r0 = heap32[(r0+5)]; + heap32[(r9)] = r0; +} +} while(0); + return; +break; +case 47: + r0 = _2E_str1156; + r1 = _2E_str2157; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 269; + _assert(i7); +break; +} +} + +function _ZN23btDiscreteDynamicsWorld16removeConstraintEP17btTypedConstraint(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+1)]; + r2 = heap32[(r0+47)]; + r3 = 0; +_1: while(true){ + if(r2 >r3) //_LBB655_1 +{ + r4 = heap32[(r0+49)]; + r5 = r3 << 2; + r4 = (r4 + r5)|0; + r4 = r4 >> 2; + r4 = heap32[(r4)]; + if(r4 !=r1) //_LBB655_3 +{ + r3 = (r3 + 1)|0; +continue _1; +} +else{ +__label__ = 5; +break _1; +} +} +else{ +__label__ = 4; +break _1; +} +} +if (__label__ == 4){ + r3 = r2; +} +if(!(r2 <=r3)) //_LBB655_8 +{ + r2 = (r2 + -1)|0; + r3 = r3 << 2; + r4 = heap32[(r0+49)]; + r2 = r2 << 2; + r3 = (r4 + r3)|0; + r4 = (r4 + r2)|0; + r3 = r3 >> 2; + r4 = r4 >> 2; + r5 = heap32[(r3)]; + r4 = heap32[(r4)]; + heap32[(r3)] = r4; + r3 = heap32[(r0+49)]; + r2 = (r3 + r2)|0; + r2 = r2 >> 2; + heap32[(r2)] = r5; + r2 = heap32[(r0+47)]; + r2 = (r2 + -1)|0; + heap32[(r0+47)] = r2; +} + r0 = r1 >> 2; + r2 = heap32[(r0+5)]; + r2 = r2 >> 2; + r3 = heap32[(r2+120)]; + r4 = 0; +_11: while(true){ + if(r3 >r4) //_LBB655_9 +{ + r5 = heap32[(r2+122)]; + r6 = r4 << 2; + r5 = (r5 + r6)|0; + r5 = r5 >> 2; + r5 = heap32[(r5)]; + if(r5 !=r1) //_LBB655_11 +{ + r4 = (r4 + 1)|0; +continue _11; +} +else{ +__label__ = 12; +break _11; +} +} +else{ +__label__ = 11; +break _11; +} +} +if (__label__ == 11){ + r4 = r3; +} + if(r3 >r4) //_LBB655_16 +{ + r3 = (r3 + -1)|0; + r4 = r4 << 2; + r5 = heap32[(r2+122)]; + r3 = r3 << 2; + r4 = (r5 + r4)|0; + r5 = (r5 + r3)|0; + r4 = r4 >> 2; + r5 = r5 >> 2; + r6 = heap32[(r4)]; + r5 = heap32[(r5)]; + heap32[(r4)] = r5; + r4 = heap32[(r2+122)]; + r3 = (r4 + r3)|0; + r3 = r3 >> 2; + heap32[(r3)] = r6; + r3 = heap32[(r2+120)]; + r3 = (r3 + -1)|0; + heap32[(r2+120)] = r3; +} + r4 = 0; + r3 = r3 > r4; + r3 = r3 & 1; + heap32[(r2+63)] = r3; + r0 = heap32[(r0+6)]; + r0 = r0 >> 2; + r2 = heap32[(r0+120)]; +_21: while(true){ + if(r2 >r4) //_LBB655_18 +{ + r3 = heap32[(r0+122)]; + r5 = r4 << 2; + r3 = (r3 + r5)|0; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + if(r3 !=r1) //_LBB655_20 +{ + r4 = (r4 + 1)|0; +continue _21; +} +else{ +__label__ = 19; +break _21; +} +} +else{ +__label__ = 18; +break _21; +} +} +if (__label__ == 18){ + r4 = r2; +} + if(r2 >r4) //_LBB655_25 +{ + r2 = (r2 + -1)|0; + r1 = r4 << 2; + r3 = heap32[(r0+122)]; + r2 = r2 << 2; + r1 = (r3 + r1)|0; + r3 = (r3 + r2)|0; + r1 = r1 >> 2; + r3 = r3 >> 2; + r4 = heap32[(r1)]; + r3 = heap32[(r3)]; + heap32[(r1)] = r3; + r1 = heap32[(r0+122)]; + r2 = (r1 + r2)|0; + r2 = r2 >> 2; + heap32[(r2)] = r4; + r2 = heap32[(r0+120)]; + r2 = (r2 + -1)|0; + heap32[(r0+120)] = r2; +} + r1 = 0; + r1 = r2 > r1; + r1 = r1 & 1; + heap32[(r0+63)] = r1; + return; +} + +function _ZN23btDiscreteDynamicsWorld13addConstraintEP17btTypedConstraintb(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+48)]; + r3 = heap32[(r1+47)]; + r4 = heap32[(fp+1)]; + r5 = heap32[(fp+2)]; + if(r2 ==r3) //_LBB656_2 +{ + r6 = 1; + r7 = r3 << 1; + r7 = r3 == 0 ? r6 : r7; +if(!(r2 >=r7)) //_LBB656_1 +{ + if(r7 !=0) //_LBB656_5 +{ + r2 = gNumAlignedAllocs; + r2 = r2 >> 2; + r8 = heap32[(r2)]; + r9 = r7 << 2; + r8 = (r8 + 1)|0; + r9 = r9 | 3; + heap32[(r2)] = r8; + r2 = (r9 + 16)|0; + heap32[(g0)] = r2; + malloc(i7); + r2 = r_g0; + if(r2 !=0) //_LBB656_7 +{ + r8 = 0; + r9 = (r2 + 4)|0; + r8 = (r8 - r9)|0; + r8 = r8 & 15; + r8 = (r2 + r8)|0; + r9 = (r8 + 4)|0; + r8 = r8 >> 2; + heap32[(r8)] = r2; + r2 = r9; +} +} +else{ + r2 = 0; +} + r8 = (r0 + 196)|0; + if(r3 <1) //_LBB656_10 +{ + r9 = r8 >> 2; + r10 = heap32[(r9)]; +} +else{ + r9 = 0; +_12: while(true){ + r10 = r8 >> 2; + r10 = heap32[(r10)]; + r11 = r9 << 2; + r12 = (r10 + r11)|0; + r12 = r12 >> 2; + r11 = (r2 + r11)|0; + r12 = heap32[(r12)]; + r9 = (r9 + 1)|0; + r11 = r11 >> 2; + heap32[(r11)] = r12; +if(!(r3 !=r9)) //_LBB656_11 +{ +break _12; +} +} + r8 = (r0 + 196)|0; +} + if(r10 !=0) //_LBB656_15 +{ + r9 = heapU8[r0+200]; + if(r9 !=0) //_LBB656_17 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r9 = heap32[(r3)]; + r9 = (r9 + 1)|0; + r10 = r10 >> 2; + heap32[(r3)] = r9; + r3 = heap32[(r10+-1)]; + heap32[(g0)] = r3; + free(i7); + r3 = heap32[(r1+47)]; +} + r9 = r8 >> 2; + heap32[(r9)] = 0; +} + r8 = r8 >> 2; + heap8[r0+200] = r6; + heap32[(r8)] = r2; + heap32[(r1+48)] = r7; +} +} + r0 = r3 << 2; + r2 = heap32[(r1+49)]; + r0 = (r2 + r0)|0; + r0 = r0 >> 2; + heap32[(r0)] = r4; + r0 = heap32[(r1+47)]; + r0 = (r0 + 1)|0; + heap32[(r1+47)] = r0; +if(!(r5 ==0)) //_LBB656_22 +{ + r0 = r4 >> 2; + r1 = heap32[(r0+5)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r4; + _ZN11btRigidBody16addConstraintRefEP17btTypedConstraint(i7); + r0 = heap32[(r0+6)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + _ZN11btRigidBody16addConstraintRefEP17btTypedConstraint(i7); +} + return; +} + +function _ZN23btDiscreteDynamicsWorld21updateActivationStateEf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var f0; + var f1; + var f2; + var f3; + var f4; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = _2E_str1097; + r1 = heap32[(fp)]; + heap32[(g0)] = r0; + r0 = r1 >> 2; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + r1 = heap32[(r0+52)]; +if(!(r1 <1)) //_LBB657_25 +{ + f0 = heapFloat[(fp+1)]; + r1 = gDisableDeactivation; + r1 = heapU8[r1]; + r2 = 0; +_3: while(true){ + r3 = heap32[(r0+54)]; + r4 = r2 << 2; + r3 = (r3 + r4)|0; + r3 = r3 >> 2; + r3 = heap32[(r3)]; +_5: do { +if(!(r3 ==0)) //_LBB657_24 +{ + r4 = r3 >> 2; + r5 = heap32[(r4+54)]; +if(!(r5 ==4)) //_LBB657_24 +{ +_8: do { + if(r5 !=2) //_LBB657_6 +{ + f1 = heapFloat[(r4+76)]; + f2 = heapFloat[(r4+77)]; + f3 = heapFloat[(r4+78)]; + f1 = f1*f1; + f2 = f2*f2; + f4 = heapFloat[(r4+116)]; + f1 = f1+f2; + f2 = f3*f3; + f1 = f1+f2; + f2 = f4*f4; + if(f1 >=f2) //_LBB657_9 +{ +__label__ = 8; +} +else{ + f1 = heapFloat[(r4+80)]; + f2 = heapFloat[(r4+81)]; + f3 = heapFloat[(r4+82)]; + f1 = f1*f1; + f2 = f2*f2; + f4 = heapFloat[(r4+117)]; + f1 = f1+f2; + f2 = f3*f3; + f1 = f1+f2; + f2 = f4*f4; + if(f1 >=f2) //_LBB657_9 +{ +__label__ = 8; +} +else{ + f1 = heapFloat[(r4+55)]; + f1 = f1+f0; + heapFloat[(r4+55)] = f1; +__label__ = 10; +} +} +if (__label__ == 8){ + r6 = (r5 + -4)|0; + heap32[(r4+55)] = 0; +if(!(uint(r6) r2) //_LBB657_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + r0 = _ZN15CProfileManager11CurrentNodeE; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r3 = heap32[(r2+4)]; + r3 = (r3 + -1)|0; + heap32[(r2+4)] = r3; +_35: do { +if(!(r3 !=0)) //_LBB657_31 +{ + r3 = heap32[(r2+1)]; + if(r3 !=0) //_LBB657_28 +{ + r1 = sp + -8; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + r3 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r1 = r1 >> 2; + r4 = heap32[(fp+-2)]; + r5 = heap32[(r3)]; + r4 = (r4 - r5)|0; + r1 = heap32[(r1+1)]; + r3 = heap32[(r3+1)]; + r1 = (r1 - r3)|0; + r3 = (r4 * 1000000)|0; + r1 = (r1 + r3)|0; + r3 = heap32[(r2+3)]; + r1 = (r1 - r3)|0; + f0 = uint(r1); //fuitos r1, f0 + f1 = 1000; + f2 = heapFloat[(r2+2)]; + f0 = f0/f1; + f0 = f2+f0; + heapFloat[(r2+2)] = f0; + r1 = heap32[(r2+4)]; + if(r1 !=0) //_LBB657_31 +{ +break _35; +} +else{ + r1 = heap32[(r0)]; +} +} + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + heap32[(r0)] = r1; +} +} while(0); + return; +} + +function _ZN23btDiscreteDynamicsWorld28internalSingleStepSimulationEf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var f0; + var f1; + var f2; + var f3; +var __label__ = 0; + i7 = sp + -32;var g0 = i7>>2; // save stack + r0 = _2E_str1198; + r1 = heap32[(fp)]; + heap32[(g0)] = r0; + r0 = r1 >> 2; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + r2 = heap32[(r0+24)]; + f0 = heapFloat[(fp+1)]; +if(!(r2 ==0)) //_LBB658_2 +{ + heap32[(g0)] = r1; + heapFloat[(g0+1)] = f0; + __FUNCTION_TABLE__[(r2)>>2](i7); +} + r2 = heap32[(r0)]; + r2 = r2 >> 2; + r2 = heap32[(r2+33)]; + heap32[(g0)] = r1; + heapFloat[(g0+1)] = f0; + __FUNCTION_TABLE__[(r2)>>2](i7); + heapFloat[(r0+7)] = f0; + heap32[(r0+8)] = 0; + r2 = heap32[(r0)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r2)>>2](i7); + heap32[(r0+12)] = r_g0; + r2 = heap32[(r0)]; + r2 = r2 >> 2; + r2 = heap32[(r2+10)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = heap32[(r0)]; + r2 = r2 >> 2; + r2 = heap32[(r2+35)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r2)>>2](i7); + heapFloat[(r0+29)] = f0; + r2 = heap32[(r0)]; + r2 = r2 >> 2; + r2 = heap32[(r2+36)]; + r3 = (r1 + 104)|0; + heap32[(g0)] = r1; + heap32[(g0+1)] = r3; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = heap32[(r0)]; + r2 = r2 >> 2; + r2 = heap32[(r2+34)]; + heap32[(g0)] = r1; + heapFloat[(g0+1)] = f0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = _2E_str289; + heap32[(g0)] = r2; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + r2 = heap32[(r0+63)]; +if(!(r2 <1)) //_LBB658_5 +{ + r2 = 0; +_6: while(true){ + r3 = heap32[(r0+65)]; + r4 = r2 << 2; + r3 = (r3 + r4)|0; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r4 = r3 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+2)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r1; + heapFloat[(g0+2)] = f0; + r2 = (r2 + 1)|0; + __FUNCTION_TABLE__[(r4)>>2](i7); + r3 = heap32[(r0+63)]; + if(r3 >r2) //_LBB658_4 +{ +continue _6; +} +else{ +break _6; +} +} +} + r2 = _ZN15CProfileManager11CurrentNodeE; + r2 = r2 >> 2; + r3 = heap32[(r2)]; + r4 = r3 >> 2; + r5 = heap32[(r4+4)]; + r5 = (r5 + -1)|0; + heap32[(r4+4)] = r5; +_9: do { +if(!(r5 !=0)) //_LBB658_11 +{ + r5 = heap32[(r4+1)]; + if(r5 !=0) //_LBB658_8 +{ + r3 = sp + -16; + heap32[(g0)] = r3; + heap32[(g0+1)] = 0; + r5 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r5 = r5 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r3 = r3 >> 2; + r6 = heap32[(fp+-4)]; + r7 = heap32[(r5)]; + r6 = (r6 - r7)|0; + r3 = heap32[(r3+1)]; + r5 = heap32[(r5+1)]; + r3 = (r3 - r5)|0; + r5 = (r6 * 1000000)|0; + r3 = (r3 + r5)|0; + r5 = heap32[(r4+3)]; + r3 = (r3 - r5)|0; + f1 = uint(r3); //fuitos r3, f1 + f2 = 1000; + f3 = heapFloat[(r4+2)]; + f1 = f1/f2; + f1 = f3+f1; + heapFloat[(r4+2)] = f1; + r3 = heap32[(r4+4)]; + if(r3 !=0) //_LBB658_11 +{ +break _9; +} +else{ + r3 = heap32[(r2)]; +} +} + r3 = r3 >> 2; + r3 = heap32[(r3+5)]; + heap32[(r2)] = r3; +} +} while(0); + heap32[(g0)] = r1; + heapFloat[(g0+1)] = f0; + _ZN23btDiscreteDynamicsWorld21updateActivationStateEf(i7); + r0 = heap32[(r0+23)]; +if(!(r0 ==0)) //_LBB658_13 +{ + heap32[(g0)] = r1; + heapFloat[(g0+1)] = f0; + __FUNCTION_TABLE__[(r0)>>2](i7); +} + r0 = heap32[(r2)]; + r1 = r0 >> 2; + r3 = heap32[(r1+4)]; + r3 = (r3 + -1)|0; + heap32[(r1+4)] = r3; +_19: do { +if(!(r3 !=0)) //_LBB658_19 +{ + r3 = heap32[(r1+1)]; + if(r3 !=0) //_LBB658_16 +{ + r0 = sp + -8; + heap32[(g0)] = r0; + heap32[(g0+1)] = 0; + r3 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r0 = r0 >> 2; + r4 = heap32[(fp+-2)]; + r5 = heap32[(r3)]; + r4 = (r4 - r5)|0; + r0 = heap32[(r0+1)]; + r3 = heap32[(r3+1)]; + r0 = (r0 - r3)|0; + r3 = (r4 * 1000000)|0; + r0 = (r0 + r3)|0; + r3 = heap32[(r1+3)]; + r0 = (r0 - r3)|0; + f0 = uint(r0); //fuitos r0, f0 + f1 = 1000; + f2 = heapFloat[(r1+2)]; + f0 = f0/f1; + f0 = f2+f0; + heapFloat[(r1+2)] = f0; + r0 = heap32[(r1+4)]; + if(r0 !=0) //_LBB658_19 +{ +break _19; +} +else{ + r0 = heap32[(r2)]; +} +} + r0 = r0 >> 2; + r0 = heap32[(r0+5)]; + heap32[(r2)] = r0; +} +} while(0); + return; +} + +function _ZN23btDiscreteDynamicsWorld12addRigidBodyEP11btRigidBodyss(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var f0; + var f1; + var f2; + var f3; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = r0 >> 2; + r2 = heap32[(r1+51)]; + r3 = heap32[(fp)]; + r4 = r2 & 3; +if(!(r4 !=0)) //_LBB659_5 +{ + r4 = heapU8[r0+496]; + r4 = r4 & 1; +if(!(r4 != 0)) //_LBB659_5 +{ + f0 = heapFloat[(r1+84)]; + f1 = 0; +if(!(f0 ==f1)) //_LBB659_4 +{ + r4 = r3 >> 2; + f1 = 1; + f0 = f1/f0; + f1 = heapFloat[(r4+58)]; + f2 = heapFloat[(r4+57)]; + f3 = heapFloat[(r4+56)]; + f3 = f3*f0; + f2 = f2*f0; + heapFloat[(r1+89)] = f3; + f0 = f1*f0; + heapFloat[(r1+90)] = f2; + heapFloat[(r1+91)] = f0; + heap32[(r1+92)] = 0; +} + r4 = r3 >> 2; + heap32[(r1+93)] = heap32[(r4+56)]; + heap32[(r1+94)] = heap32[(r4+57)]; + heap32[(r1+95)] = heap32[(r4+58)]; + heap32[(r1+96)] = heap32[(r4+59)]; +} +} + r4 = heap32[(r1+48)]; +if(!(r4 ==0)) //_LBB659_31 +{ + r4 = heap32[(fp+2)]; + r5 = heap32[(fp+3)]; + r2 = r2 & 1; +_10: do { + if(r2 != 0) //_LBB659_28 +{ + r2 = heap32[(r1+54)]; + r2 = (r2 + -4)|0; + if(uint(r2) > 2; + r2 = heap32[(r1+53)]; + r6 = heap32[(r1+52)]; + if(r2 ==r6) //_LBB659_9 +{ + r7 = 1; + r8 = r6 << 1; + r8 = r6 == 0 ? r7 : r8; +if(!(r2 >=r8)) //_LBB659_8 +{ + if(r8 !=0) //_LBB659_12 +{ + r2 = gNumAlignedAllocs; + r2 = r2 >> 2; + r9 = heap32[(r2)]; + r10 = r8 << 2; + r9 = (r9 + 1)|0; + r10 = r10 | 3; + heap32[(r2)] = r9; + r2 = (r10 + 16)|0; + heap32[(g0)] = r2; + malloc(i7); + r2 = r_g0; + if(r2 !=0) //_LBB659_14 +{ + r9 = 0; + r10 = (r2 + 4)|0; + r9 = (r9 - r10)|0; + r9 = r9 & 15; + r9 = (r2 + r9)|0; + r10 = (r9 + 4)|0; + r9 = r9 >> 2; + heap32[(r9)] = r2; + r2 = r10; +} +} +else{ + r2 = 0; +} + r9 = (r3 + 216)|0; + if(r6 <1) //_LBB659_17 +{ + r10 = r9 >> 2; + r11 = heap32[(r10)]; +} +else{ + r10 = 0; +_25: while(true){ + r11 = r9 >> 2; + r11 = heap32[(r11)]; + r12 = r10 << 2; + r13 = (r11 + r12)|0; + r13 = r13 >> 2; + r12 = (r2 + r12)|0; + r13 = heap32[(r13)]; + r10 = (r10 + 1)|0; + r12 = r12 >> 2; + heap32[(r12)] = r13; +if(!(r6 !=r10)) //_LBB659_18 +{ +break _25; +} +} + r9 = (r3 + 216)|0; +} + if(r11 !=0) //_LBB659_22 +{ + r10 = heapU8[r3+220]; + if(r10 !=0) //_LBB659_24 +{ + r6 = gNumAlignedFree; + r6 = r6 >> 2; + r10 = heap32[(r6)]; + r10 = (r10 + 1)|0; + r11 = r11 >> 2; + heap32[(r6)] = r10; + r6 = heap32[(r11+-1)]; + heap32[(g0)] = r6; + free(i7); + r6 = heap32[(r1+52)]; +} + r10 = r9 >> 2; + heap32[(r10)] = 0; +} + r9 = r9 >> 2; + heap8[r3+220] = r7; + heap32[(r9)] = r2; + heap32[(r1+53)] = r8; +} +} + r2 = r6 << 2; + r6 = heap32[(r1+54)]; + r2 = (r6 + r2)|0; + r2 = r2 >> 2; + heap32[(r2)] = r0; + r2 = heap32[(r1+52)]; + r2 = (r2 + 1)|0; + heap32[(r1+52)] = r2; +} +} while(0); + r1 = r3 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+8)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r5; + __FUNCTION_TABLE__[(r1)>>2](i7); +} + return; +} + +function _ZN23btDiscreteDynamicsWorld12addRigidBodyEP11btRigidBody(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var f0; + var f1; + var f2; + var f3; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = r0 >> 2; + r2 = heap32[(r1+51)]; + r3 = heap32[(fp)]; + r4 = r2 & 3; +if(!(r4 !=0)) //_LBB660_5 +{ + r4 = heapU8[r0+496]; + r4 = r4 & 1; +if(!(r4 != 0)) //_LBB660_5 +{ + f0 = heapFloat[(r1+84)]; + f1 = 0; +if(!(f0 ==f1)) //_LBB660_4 +{ + r4 = r3 >> 2; + f1 = 1; + f0 = f1/f0; + f1 = heapFloat[(r4+58)]; + f2 = heapFloat[(r4+57)]; + f3 = heapFloat[(r4+56)]; + f3 = f3*f0; + f2 = f2*f0; + heapFloat[(r1+89)] = f3; + f0 = f1*f0; + heapFloat[(r1+90)] = f2; + heapFloat[(r1+91)] = f0; + heap32[(r1+92)] = 0; +} + r4 = r3 >> 2; + heap32[(r1+93)] = heap32[(r4+56)]; + heap32[(r1+94)] = heap32[(r4+57)]; + heap32[(r1+95)] = heap32[(r4+58)]; + heap32[(r1+96)] = heap32[(r4+59)]; +} +} + r4 = heap32[(r1+48)]; +if(!(r4 ==0)) //_LBB660_32 +{ + r4 = r2 & 1; +_10: do { + if(r4 != 0) //_LBB660_28 +{ + r4 = heap32[(r1+54)]; + r4 = (r4 + -4)|0; + if(uint(r4) >uint(1)) //_LBB660_30 +{ + heap32[(r1+54)] = 2; +} +else{ +break _10; +} +} +else{ + r2 = r3 >> 2; + r4 = heap32[(r2+53)]; + r5 = heap32[(r2+52)]; + if(r4 ==r5) //_LBB660_9 +{ + r6 = 1; + r7 = r5 << 1; + r7 = r5 == 0 ? r6 : r7; +if(!(r4 >=r7)) //_LBB660_8 +{ + if(r7 !=0) //_LBB660_12 +{ + r4 = gNumAlignedAllocs; + r4 = r4 >> 2; + r8 = heap32[(r4)]; + r9 = r7 << 2; + r8 = (r8 + 1)|0; + r9 = r9 | 3; + heap32[(r4)] = r8; + r4 = (r9 + 16)|0; + heap32[(g0)] = r4; + malloc(i7); + r4 = r_g0; + if(r4 !=0) //_LBB660_14 +{ + r8 = 0; + r9 = (r4 + 4)|0; + r8 = (r8 - r9)|0; + r8 = r8 & 15; + r8 = (r4 + r8)|0; + r9 = (r8 + 4)|0; + r8 = r8 >> 2; + heap32[(r8)] = r4; + r4 = r9; +} +} +else{ + r4 = 0; +} + r8 = (r3 + 216)|0; + if(r5 <1) //_LBB660_17 +{ + r9 = r8 >> 2; + r10 = heap32[(r9)]; +} +else{ + r9 = 0; +_25: while(true){ + r10 = r8 >> 2; + r10 = heap32[(r10)]; + r11 = r9 << 2; + r12 = (r10 + r11)|0; + r12 = r12 >> 2; + r11 = (r4 + r11)|0; + r12 = heap32[(r12)]; + r9 = (r9 + 1)|0; + r11 = r11 >> 2; + heap32[(r11)] = r12; +if(!(r5 !=r9)) //_LBB660_18 +{ +break _25; +} +} + r8 = (r3 + 216)|0; +} + if(r10 !=0) //_LBB660_22 +{ + r9 = heapU8[r3+220]; + if(r9 !=0) //_LBB660_24 +{ + r5 = gNumAlignedFree; + r5 = r5 >> 2; + r9 = heap32[(r5)]; + r9 = (r9 + 1)|0; + r10 = r10 >> 2; + heap32[(r5)] = r9; + r5 = heap32[(r10+-1)]; + heap32[(g0)] = r5; + free(i7); + r5 = heap32[(r2+52)]; +} + r9 = r8 >> 2; + heap32[(r9)] = 0; +} + r8 = r8 >> 2; + heap8[r3+220] = r6; + heap32[(r8)] = r4; + heap32[(r2+53)] = r7; +} +} + r4 = r5 << 2; + r5 = heap32[(r2+54)]; + r4 = (r5 + r4)|0; + r4 = r4 >> 2; + heap32[(r4)] = r0; + r4 = heap32[(r2+52)]; + r4 = (r4 + 1)|0; + heap32[(r2+52)] = r4; + r2 = heap32[(r1+51)]; +} +} while(0); + r1 = r3 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+8)]; + r4 = 2; + r5 = 1; + r2 = r2 & 3; + r6 = -3; + r7 = -1; + r4 = r2 != 0 ? r4 : r5; + r2 = r2 != 0 ? r6 : r7; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r2; + __FUNCTION_TABLE__[(r1)>>2](i7); +} + return; +} + +function _ZN23btDiscreteDynamicsWorld10setGravityERK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var f0; + var f1; + var f2; + var f3; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = r1 >> 2; + heap32[(r0+56)] = heap32[(r1)]; + heap32[(r0+57)] = heap32[(r1+1)]; + heap32[(r0+58)] = heap32[(r1+2)]; + heap32[(r0+59)] = heap32[(r1+3)]; + r2 = heap32[(r0+52)]; +if(!(r2 <1)) //_LBB661_9 +{ + r2 = 0; +_3: while(true){ + r3 = heap32[(r0+54)]; + r4 = r2 << 2; + r3 = (r3 + r4)|0; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r4 = r3 >> 2; + r5 = heap32[(r4+54)]; +if(!(r5 ==2)) //_LBB661_8 +{ +if(!(r5 ==5)) //_LBB661_8 +{ + r3 = heapU8[r3+496]; + r3 = r3 & 1; +if(!(r3 != 0)) //_LBB661_8 +{ + f0 = heapFloat[(r4+84)]; + f1 = 0; +if(!(f0 ==f1)) //_LBB661_7 +{ + f1 = 1; + f0 = f1/f0; + f1 = heapFloat[(r1+2)]; + f2 = heapFloat[(r1+1)]; + f3 = heapFloat[(r1)]; + f3 = f3*f0; + f2 = f2*f0; + heapFloat[(r4+89)] = f3; + f0 = f1*f0; + heapFloat[(r4+90)] = f2; + heapFloat[(r4+91)] = f0; + heap32[(r4+92)] = 0; +} + heap32[(r4+93)] = heap32[(r1)]; + heap32[(r4+94)] = heap32[(r1+1)]; + heap32[(r4+95)] = heap32[(r1+2)]; + heap32[(r4+96)] = heap32[(r1+3)]; +} +} +} + r2 = (r2 + 1)|0; + r3 = heap32[(r0+52)]; + if(r3 >r2) //_LBB661_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + return; +} + +function _ZN23btDiscreteDynamicsWorld15removeRigidBodyEP11btRigidBody(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(fp+1)]; + r3 = heap32[(r1+52)]; + r4 = 0; +_1: while(true){ + if(r3 >r4) //_LBB662_1 +{ + r5 = heap32[(r1+54)]; + r6 = r4 << 2; + r5 = (r5 + r6)|0; + r5 = r5 >> 2; + r5 = heap32[(r5)]; + if(r5 !=r2) //_LBB662_3 +{ + r4 = (r4 + 1)|0; +continue _1; +} +else{ +__label__ = 5; +break _1; +} +} +else{ +__label__ = 4; +break _1; +} +} +if (__label__ == 4){ + r4 = r3; +} +if(!(r3 <=r4)) //_LBB662_8 +{ + r3 = (r3 + -1)|0; + r4 = r4 << 2; + r5 = heap32[(r1+54)]; + r3 = r3 << 2; + r4 = (r5 + r4)|0; + r5 = (r5 + r3)|0; + r4 = r4 >> 2; + r5 = r5 >> 2; + r6 = heap32[(r4)]; + r5 = heap32[(r5)]; + heap32[(r4)] = r5; + r4 = heap32[(r1+54)]; + r3 = (r4 + r3)|0; + r3 = r3 >> 2; + heap32[(r3)] = r6; + r3 = heap32[(r1+52)]; + r3 = (r3 + -1)|0; + heap32[(r1+52)] = r3; +} + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + _ZN16btCollisionWorld21removeCollisionObjectEP17btCollisionObject(i7); + return; +} + +function _ZN23btDiscreteDynamicsWorld21removeCollisionObjectEP17btCollisionObject(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r2 = heapU8[r0+232]; + r2 = r2 & 2; +if(!(r2 ==0)) //_LBB663_3 +{ +if(!(r0 ==0)) //_LBB663_3 +{ + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+21)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + return; +} +} + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + _ZN16btCollisionWorld21removeCollisionObjectEP17btCollisionObject(i7); + return; +} + +function _ZN23btDiscreteDynamicsWorld18addCollisionObjectEP17btCollisionObjectss(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r3; + _ZN16btCollisionWorld18addCollisionObjectEP17btCollisionObjectss(i7); + return; +} + +function _ZN23btDiscreteDynamicsWorld14stepSimulationEfif(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var f0; + var f1; + var f2; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + _ZN15CProfileManager5ResetEv(i7); + r0 = _2E_str1299; + r1 = heap32[(fp+2)]; + heap32[(g0)] = r0; + r0 = heap32[(fp)]; + f0 = heapFloat[(fp+1)]; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + if(r1 ==0) //_LBB665_4 +{ + r1 = r0 >> 2; + f1 = 0; + heapFloat[(r1+60)] = f0; + if(f0 =f2) //_LBB665_9 +{ + r1 = 1; + f1 = f0; + r3 = r1; +} +else{ + r1 = 0; + f1 = f0; + r3 = r1; +} +} +else{ + f1 = heapFloat[(fp+3)]; + r2 = r0 >> 2; + f2 = heapFloat[(r2+60)]; + f0 = f2+f0; + heapFloat[(r2+60)] = f0; + if(f0 >=f1) //_LBB665_3 +{ + f2 = f0/f1; + r3 = f2|0; + f2 = r3; //fitos r3, f2 + f2 = f2*f1; + f0 = f0-f2; + heapFloat[(r2+60)] = f0; +} +else{ + r3 = 0; +} +} + r2 = r0 >> 2; + r4 = heap32[(r2)]; + r4 = r4 >> 2; + r4 = heap32[(r4+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r4)>>2](i7); + r4 = r_g0; +if(!(r4 ==0)) //_LBB665_12 +{ + r4 = heap32[(r2)]; + r4 = r4 >> 2; + r4 = heap32[(r4+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r4)>>2](i7); + r5 = r_g0 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+12)]; + heap32[(g0)] = r_g0; + __FUNCTION_TABLE__[(r5)>>2](i7); + r4 = r_g0 >>> 4; + r5 = gDisableDeactivation; + r4 = r4 & 1; + heap8[r5] = r4; +} + if(r3 ==0) //_LBB665_16 +{ + r1 = heap32[(r2)]; + r1 = r1 >> 2; + r1 = heap32[(r1+19)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r1)>>2](i7); +} +else{ + r4 = heap32[(r2)]; + r4 = r4 >> 2; + r5 = r3 > r1 ? r1 : r3; + r4 = heap32[(r4+38)]; + f0 = r5; //fitos r5, f0 + f0 = f0*f1; + heap32[(g0)] = r0; + heapFloat[(g0+1)] = f0; + __FUNCTION_TABLE__[(r4)>>2](i7); + r4 = heap32[(r2)]; + r4 = r4 >> 2; + r4 = heap32[(r4+40)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r4)>>2](i7); +if(!(r5 <1)) //_LBB665_17 +{ + r4 = r3 ^ -1; + r1 = r1 ^ -1; + r1 = r4 > r1 ? r4 : r1; + r1 = r1 ^ -1; +_22: while(true){ + r4 = heap32[(r2)]; + r4 = r4 >> 2; + r4 = heap32[(r4+37)]; + heap32[(g0)] = r0; + heapFloat[(g0+1)] = f1; + __FUNCTION_TABLE__[(r4)>>2](i7); + r4 = heap32[(r2)]; + r4 = r4 >> 2; + r4 = heap32[(r4+19)]; + r1 = (r1 + -1)|0; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r4)>>2](i7); + if(r1 ==0) //_LBB665_17 +{ +break _22; +} +else{ +continue _22; +} +} +} +} + r1 = heap32[(r2)]; + r1 = r1 >> 2; + r1 = heap32[(r1+28)]; + heap32[(g0)] = r0; + r0 = _ZN15CProfileManager12FrameCounterE; + __FUNCTION_TABLE__[(r1)>>2](i7); + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = _ZN15CProfileManager11CurrentNodeE; + r1 = (r1 + 1)|0; + r2 = r2 >> 2; + heap32[(r0)] = r1; + r0 = heap32[(r2)]; + r1 = r0 >> 2; + r4 = heap32[(r1+4)]; + r4 = (r4 + -1)|0; + heap32[(r1+4)] = r4; +_25: do { +if(!(r4 !=0)) //_LBB665_23 +{ + r4 = heap32[(r1+1)]; + if(r4 !=0) //_LBB665_20 +{ + r0 = sp + -8; + heap32[(g0)] = r0; + heap32[(g0+1)] = 0; + r4 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r4 = r4 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r0 = r0 >> 2; + r5 = heap32[(fp+-2)]; + r6 = heap32[(r4)]; + r5 = (r5 - r6)|0; + r0 = heap32[(r0+1)]; + r4 = heap32[(r4+1)]; + r0 = (r0 - r4)|0; + r4 = (r5 * 1000000)|0; + r0 = (r0 + r4)|0; + r4 = heap32[(r1+3)]; + r0 = (r0 - r4)|0; + f0 = uint(r0); //fuitos r0, f0 + f1 = 1000; + f2 = heapFloat[(r1+2)]; + f0 = f0/f1; + f0 = f2+f0; + heapFloat[(r1+2)] = f0; + r0 = heap32[(r1+4)]; + if(r0 !=0) //_LBB665_23 +{ +break _25; +} +else{ + r0 = heap32[(r2)]; +} +} + r0 = r0 >> 2; + r0 = heap32[(r0+5)]; + heap32[(r2)] = r0; +} +} while(0); + r_g0 = r3; + return; +} + +function _ZN23btDiscreteDynamicsWorld28synchronizeSingleMotionStateEP11btRigidBody(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var f0; + var f1; + var f2; + var f3; + var f4; +var __label__ = 0; + i7 = sp + -96;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + if(r0 !=0) //_LBB666_2 +{ + r1 = r0 >> 2; + r2 = heap32[(r1+118)]; +if(!(r2 ==0)) //_LBB666_4 +{ + r2 = heapU8[r0+204]; + r2 = r2 & 3; + if(r2 ==0) //_LBB666_5 +{ + r2 = heap32[(fp)]; + r2 = r2 >> 2; + f0 = heapFloat[(r2+60)]; + f1 = heapFloat[(r1+60)]; + f2 = heapFloat[(r1+33)]; + f3 = heapFloat[(r1+34)]; + f4 = heapFloat[(r1+35)]; + r2 = sp + -64; + r3 = (r0 + 68)|0; + r0 = (r0 + 148)|0; + f0 = f0*f1; + heap32[(g0)] = r3; + heapFloat[(g0+1)] = f2; + heapFloat[(g0+2)] = f3; + heapFloat[(g0+3)] = f4; + heap32[(g0+4)] = r0; + heapFloat[(g0+5)] = f0; + heap32[(g0+6)] = r2; + _ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(i7); + r0 = heap32[(r1+118)]; + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + __FUNCTION_TABLE__[(r1)>>2](i7); + return; +} +} + return; +} +else{ + r0 = _2E_str13100; + r1 = _2E_str1461; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 184; + _assert(i7); +} +} + +function _ZN23btDiscreteDynamicsWorld23synchronizeMotionStatesEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var f0; + var f1; + var f2; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = _2E_str1562; + heap32[(g0)] = r0; + r0 = heap32[(fp)]; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + r1 = heapU8[r0+246]; +_1: do { + if(r1 !=0) //_LBB667_2 +{ + r1 = r0 >> 2; + r2 = heap32[(r1+2)]; +if(!(r2 <1)) //_LBB667_13 +{ + r2 = 0; +_4: while(true){ + r3 = heap32[(r1+4)]; + r4 = r2 << 2; + r3 = (r3 + r4)|0; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r4 = heapU8[r3+232]; + r4 = r4 & 2; +if(!(r4 ==0)) //_LBB667_7 +{ +if(!(r3 ==0)) //_LBB667_7 +{ + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + _ZN23btDiscreteDynamicsWorld28synchronizeSingleMotionStateEP11btRigidBody(i7); +} +} + r2 = (r2 + 1)|0; + r3 = heap32[(r1+2)]; + if(r3 >r2) //_LBB667_4 +{ +continue _4; +} +else{ +break _1; +} +} +} +} +else{ + r1 = r0 >> 2; + r2 = heap32[(r1+52)]; + if(r2 >0) //_LBB667_8 +{ + r2 = 0; +_12: while(true){ + r3 = heap32[(r1+54)]; + r4 = r2 << 2; + r3 = (r3 + r4)|0; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r4 = r3 >> 2; + r4 = heap32[(r4+54)]; +if(!(r4 ==2)) //_LBB667_12 +{ +if(!(r4 ==5)) //_LBB667_12 +{ + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + _ZN23btDiscreteDynamicsWorld28synchronizeSingleMotionStateEP11btRigidBody(i7); +} +} + r2 = (r2 + 1)|0; + r3 = heap32[(r1+52)]; + if(r3 >r2) //_LBB667_9 +{ +continue _12; +} +else{ +break _1; +} +} +} +} +} while(0); + r0 = _ZN15CProfileManager11CurrentNodeE; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r3 = heap32[(r2+4)]; + r3 = (r3 + -1)|0; + heap32[(r2+4)] = r3; +_19: do { +if(!(r3 !=0)) //_LBB667_19 +{ + r3 = heap32[(r2+1)]; + if(r3 !=0) //_LBB667_16 +{ + r1 = sp + -8; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + r3 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r1 = r1 >> 2; + r4 = heap32[(fp+-2)]; + r5 = heap32[(r3)]; + r4 = (r4 - r5)|0; + r1 = heap32[(r1+1)]; + r3 = heap32[(r3+1)]; + r1 = (r1 - r3)|0; + r3 = (r4 * 1000000)|0; + r1 = (r1 + r3)|0; + r3 = heap32[(r2+3)]; + r1 = (r1 - r3)|0; + f0 = uint(r1); //fuitos r1, f0 + f1 = 1000; + f2 = heapFloat[(r2+2)]; + f0 = f0/f1; + f0 = f2+f0; + heapFloat[(r2+2)] = f0; + r1 = heap32[(r2+4)]; + if(r1 !=0) //_LBB667_19 +{ +break _19; +} +else{ + r1 = heap32[(r0)]; +} +} + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + heap32[(r0)] = r1; +} +} while(0); + return; +} + +function _ZN23btDiscreteDynamicsWorld12applyGravityEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+52)]; +if(!(r1 <1)) //_LBB668_7 +{ + r1 = 0; +_3: while(true){ + r2 = heap32[(r0+54)]; + r3 = r1 << 2; + r2 = (r2 + r3)|0; + r2 = r2 >> 2; + r2 = heap32[(r2)]; + r3 = r2 >> 2; + r4 = heap32[(r3+54)]; +if(!(r4 ==2)) //_LBB668_6 +{ +if(!(r4 ==5)) //_LBB668_6 +{ + r2 = heapU8[r2+204]; + r2 = r2 & 3; +if(!(r2 !=0)) //_LBB668_6 +{ + f0 = heapFloat[(r3+89)]; + f1 = heapFloat[(r3+85)]; + f0 = f0*f1; + f1 = heapFloat[(r3+101)]; + f2 = heapFloat[(r3+91)]; + f3 = heapFloat[(r3+87)]; + f4 = heapFloat[(r3+90)]; + f5 = heapFloat[(r3+86)]; + f0 = f1+f0; + heapFloat[(r3+101)] = f0; + f0 = f4*f5; + f1 = heapFloat[(r3+102)]; + f0 = f1+f0; + heapFloat[(r3+102)] = f0; + f0 = f2*f3; + f1 = heapFloat[(r3+103)]; + f0 = f1+f0; + heapFloat[(r3+103)] = f0; +} +} +} + r1 = (r1 + 1)|0; + r2 = heap32[(r0+52)]; + if(r2 >r1) //_LBB668_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + return; +} + +function _ZN23btDiscreteDynamicsWorld14debugDrawWorldEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; + var f20; + var f21; + var f22; + var f23; + var f24; + var f25; + var f26; + var f27; + var f28; + var f29; + var f30; +var __label__ = 0; + i7 = sp + -824;var g0 = i7>>2; // save stack + r0 = _2E_str16101; + heap32[(g0)] = r0; + _ZN15CProfileManager13Start_ProfileEPKc(i7); + r0 = heap32[(fp)]; + heap32[(g0)] = r0; + _ZN16btCollisionWorld14debugDrawWorldEv(i7); + r1 = r0 >> 2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r_g0; +if(!(r2 ==0)) //_LBB669_53 +{ + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r3 = r_g0 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+12)]; + heap32[(g0)] = r_g0; + __FUNCTION_TABLE__[(r3)>>2](i7); + r2 = r_g0 & 6144; +if(!(r2 ==0)) //_LBB669_53 +{ + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+24)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r_g0; + r3 = (r2 + -1)|0; +if(!(r3 <0)) //_LBB669_53 +{ + r3 = sp + -296; + r4 = sp + -392; + r5 = (r3 + 48)|0; + r6 = (r4 + 48)|0; + r2 = (r2 + -1)|0; +_5: while(true){ + r7 = r2; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+25)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r7; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r_g0; + r8 = heap32[(r1)]; + r8 = r8 >> 2; + r8 = heap32[(r8+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r8)>>2](i7); + r9 = r_g0 >> 2; + r9 = heap32[(r9)]; + r9 = r9 >> 2; + r9 = heap32[(r9+12)]; + heap32[(g0)] = r_g0; + __FUNCTION_TABLE__[(r9)>>2](i7); + r8 = r_g0; + r9 = heap32[(r1)]; + r9 = r9 >> 2; + r9 = heap32[(r9+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r9)>>2](i7); + r10 = r_g0 >> 2; + r10 = heap32[(r10)]; + r10 = r10 >> 2; + r10 = heap32[(r10+12)]; + heap32[(g0)] = r_g0; + __FUNCTION_TABLE__[(r10)>>2](i7); + r9 = r_g0; + r10 = r2 >> 2; + f0 = heapFloat[(r10+8)]; + heapFloat[(fp+-191)] = f0; + f1 = 0; + heapFloat[(fp+-192)] = f1; +_7: do { +if(!(f0 <=f1)) //_LBB669_52 +{ + r8 = r8 >>> 11; + r9 = r9 >>> 12; + r8 = r8 & 1; + r9 = r9 & 1; + r10 = r2 >> 2; + r11 = heap32[(r10+1)]; + if(r11 >4) //_LBB669_8 +{ + if(r11 ==5) //_LBB669_20 +{ + r11 = heap32[(r10+5)]; + r11 = r11 >> 2; + f0 = heapFloat[(r11+1)]; + f1 = heapFloat[(r10+72)]; + f2 = heapFloat[(r11+2)]; + f3 = heapFloat[(r10+76)]; + f4 = heapFloat[(r10+73)]; + f5 = heapFloat[(r10+77)]; + f6 = f1*f0; + f7 = f3*f2; + f8 = heapFloat[(r11+3)]; + f9 = heapFloat[(r10+80)]; + f10 = heapFloat[(r11+9)]; + f11 = heapFloat[(r10+84)]; + f12 = heapFloat[(r11+5)]; + f13 = heapFloat[(r10+74)]; + f14 = heapFloat[(r11+10)]; + f15 = heapFloat[(r10+85)]; + f16 = heapFloat[(r11+6)]; + f17 = heapFloat[(r10+78)]; + f18 = heapFloat[(r11+11)]; + f19 = heapFloat[(r10+86)]; + f20 = heapFloat[(r11+7)]; + f21 = heapFloat[(r10+82)]; + f22 = heapFloat[(r10+81)]; + f23 = f4*f0; + f24 = f5*f2; + f6 = f6+f7; + f7 = f9*f8; + f25 = heapFloat[(r11+15)]; + f26 = heapFloat[(r11+14)]; + f27 = heapFloat[(r11+13)]; + f28 = f13*f0; + f29 = f17*f2; + f23 = f23+f24; + f24 = f22*f8; + f6 = f6+f7; + r11 = r4 >> 2; + f7 = f28+f29; + f28 = f21*f8; + f23 = f23+f24; + heapFloat[(fp+-98)] = f6; + f6 = f1*f12; + f24 = f3*f16; + f7 = f7+f28; + heapFloat[(r11+1)] = f23; + heapFloat[(r11+2)] = f7; + f7 = f4*f12; + f23 = f5*f16; + f6 = f6+f24; + f24 = f9*f20; + f28 = f13*f12; + f29 = f17*f16; + f7 = f7+f23; + f23 = f22*f20; + f6 = f6+f24; + heap32[(r11+3)] = 0; + f24 = f28+f29; + f28 = f21*f20; + f7 = f7+f23; + heapFloat[(r11+4)] = f6; + f1 = f1*f10; + f3 = f3*f14; + f6 = f24+f28; + heapFloat[(r11+5)] = f7; + heapFloat[(r11+6)] = f6; + f4 = f4*f10; + f5 = f5*f14; + f1 = f1+f3; + f3 = f9*f18; + f6 = f13*f10; + f7 = f17*f14; + f4 = f4+f5; + f5 = f22*f18; + f1 = f1+f3; + heap32[(r11+7)] = 0; + f0 = f0*f11; + f2 = f2*f15; + f3 = f6+f7; + f6 = f21*f18; + f4 = f4+f5; + heapFloat[(r11+8)] = f1; + f1 = f12*f11; + f5 = f16*f15; + f0 = f0+f2; + f2 = f8*f19; + f3 = f3+f6; + heapFloat[(r11+9)] = f4; + f0 = f0+f2; + heapFloat[(r11+10)] = f3; + f2 = f10*f11; + f3 = f14*f15; + f1 = f1+f5; + f4 = f20*f19; + f1 = f1+f4; + f2 = f2+f3; + f3 = f18*f19; + f0 = f0+f27; + heap32[(r11+11)] = 0; + f2 = f2+f3; + f1 = f1+f26; + heapFloat[(r11+12)] = f0; + f0 = f2+f25; + heapFloat[(r11+13)] = f1; + heapFloat[(r11+14)] = f0; + heap32[(r11+15)] = 0; +if(!(r8 ==0)) //_LBB669_22 +{ + r12 = heap32[(r1)]; + r12 = r12 >> 2; + r12 = heap32[(r12+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r12)>>2](i7); + r13 = r_g0 >> 2; + r13 = heap32[(r13)]; + r13 = r13 >> 2; + r13 = heap32[(r13+14)]; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r4; + f0 = heapFloat[(fp+-191)]; + heapFloat[(g0+2)] = f0; + __FUNCTION_TABLE__[(r13)>>2](i7); +} + r12 = heap32[(r10+6)]; + r12 = r12 >> 2; + f0 = heapFloat[(r12+1)]; + f1 = heapFloat[(r10+88)]; + f2 = heapFloat[(r12+2)]; + f3 = heapFloat[(r10+92)]; + f4 = heapFloat[(r10+89)]; + f5 = heapFloat[(r10+93)]; + f6 = f1*f0; + f7 = f3*f2; + f8 = heapFloat[(r12+3)]; + f9 = heapFloat[(r10+96)]; + f10 = heapFloat[(r12+9)]; + f11 = heapFloat[(r10+100)]; + f12 = heapFloat[(r12+5)]; + f13 = heapFloat[(r10+90)]; + f14 = heapFloat[(r12+10)]; + f15 = heapFloat[(r10+101)]; + f16 = heapFloat[(r12+6)]; + f17 = heapFloat[(r10+94)]; + f18 = heapFloat[(r12+11)]; + f19 = heapFloat[(r10+102)]; + f20 = heapFloat[(r12+7)]; + f21 = heapFloat[(r10+98)]; + f22 = heapFloat[(r10+97)]; + f23 = f4*f0; + f24 = f5*f2; + f6 = f6+f7; + f7 = f9*f8; + f25 = heapFloat[(r12+15)]; + f26 = heapFloat[(r12+14)]; + f27 = heapFloat[(r12+13)]; + f28 = f13*f0; + f29 = f17*f2; + f23 = f23+f24; + f24 = f22*f8; + f6 = f6+f7; + f7 = f28+f29; + f28 = f21*f8; + f23 = f23+f24; + heapFloat[(fp+-98)] = f6; + f6 = f1*f12; + f24 = f3*f16; + f7 = f7+f28; + heapFloat[(r11+1)] = f23; + heapFloat[(r11+2)] = f7; + f7 = f4*f12; + f23 = f5*f16; + f6 = f6+f24; + f24 = f9*f20; + f28 = f13*f12; + f29 = f17*f16; + f7 = f7+f23; + f23 = f22*f20; + f6 = f6+f24; + heap32[(r11+3)] = 0; + f24 = f28+f29; + f28 = f21*f20; + f7 = f7+f23; + heapFloat[(r11+4)] = f6; + f1 = f1*f10; + f3 = f3*f14; + f6 = f24+f28; + heapFloat[(r11+5)] = f7; + heapFloat[(r11+6)] = f6; + f4 = f4*f10; + f5 = f5*f14; + f1 = f1+f3; + f3 = f9*f18; + f6 = f13*f10; + f7 = f17*f14; + f4 = f4+f5; + f5 = f22*f18; + f1 = f1+f3; + heap32[(r11+7)] = 0; + f0 = f0*f11; + f2 = f2*f15; + f3 = f6+f7; + f6 = f21*f18; + f4 = f4+f5; + heapFloat[(r11+8)] = f1; + f1 = f12*f11; + f5 = f16*f15; + f0 = f0+f2; + f2 = f8*f19; + f3 = f3+f6; + heapFloat[(r11+9)] = f4; + f0 = f0+f2; + heapFloat[(r11+10)] = f3; + f2 = f10*f11; + f3 = f14*f15; + f1 = f1+f5; + f4 = f20*f19; + f1 = f1+f4; + f2 = f2+f3; + f3 = f18*f19; + f0 = f0+f27; + heap32[(r11+11)] = 0; + f2 = f2+f3; + f1 = f1+f26; + heapFloat[(r11+12)] = f0; + f0 = f2+f25; + heapFloat[(r11+13)] = f1; + heapFloat[(r11+14)] = f0; + heap32[(r11+15)] = 0; +if(!(r8 ==0)) //_LBB669_24 +{ + r8 = heap32[(r1)]; + r8 = r8 >> 2; + r8 = heap32[(r8+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r8)>>2](i7); + r12 = r_g0 >> 2; + r12 = heap32[(r12)]; + r12 = r12 >> 2; + r12 = heap32[(r12+14)]; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r4; + f0 = heapFloat[(fp+-191)]; + heapFloat[(g0+2)] = f0; + __FUNCTION_TABLE__[(r12)>>2](i7); +} + if(r9 ==0) //_LBB669_52 +{ +break _7; +} +else{ + r8 = sp + -408; + heap32[(g0)] = r8; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = 1086506843; + f0 = heapFloat[(fp+-191)]; + heapFloat[(g0+3)] = f0; + _ZNK21btConeTwistConstraint16GetPointForAngleEff(i7); + r9 = r8 >> 2; + f0 = heapFloat[(fp+-102)]; + f1 = heapFloat[(fp+-98)]; + f2 = heapFloat[(r9+1)]; + f3 = heapFloat[(r11+1)]; + f4 = heapFloat[(r11+4)]; + f5 = heapFloat[(r11+5)]; + f1 = f1*f0; + f3 = f3*f2; + f6 = heapFloat[(r9+2)]; + f7 = heapFloat[(r11+2)]; + f8 = heapFloat[(r11+8)]; + f9 = heapFloat[(r11+9)]; + f10 = heapFloat[(r11+6)]; + f4 = f4*f0; + f5 = f5*f2; + f1 = f1+f3; + f3 = f7*f6; + f7 = heapFloat[(r11+10)]; + f0 = f8*f0; + f2 = f9*f2; + f4 = f4+f5; + f5 = f10*f6; + f1 = f1+f3; + f3 = heapFloat[(r11+12)]; + f8 = heapFloat[(r11+14)]; + f9 = heapFloat[(r11+13)]; + f4 = f4+f5; + f0 = f0+f2; + f2 = f7*f6; + f1 = f1+f3; + f0 = f0+f2; + f2 = f4+f9; + heapFloat[(fp+-102)] = f1; + f0 = f0+f8; + heapFloat[(r9+1)] = f2; + r12 = 0; + heapFloat[(r9+2)] = f0; + heap32[(r9+3)] = 0; +_20: while(true){ + f0 = r12; //fitos r12, f0 + f1 = 6.2831850051879883; + f0 = f0*f1; + f1 = 32; + r13 = sp + -472; + f0 = f0/f1; + heap32[(g0)] = r13; + heap32[(g0+1)] = r2; + heapFloat[(g0+2)] = f0; + f0 = heapFloat[(fp+-191)]; + heapFloat[(g0+3)] = f0; + _ZNK21btConeTwistConstraint16GetPointForAngleEff(i7); + r14 = r13 >> 2; + f0 = heapFloat[(fp+-118)]; + f1 = heapFloat[(fp+-98)]; + f2 = heapFloat[(r14+1)]; + f3 = heapFloat[(r11+1)]; + f4 = heapFloat[(r11+4)]; + f5 = heapFloat[(r11+5)]; + f1 = f1*f0; + f3 = f3*f2; + f6 = heapFloat[(r14+2)]; + f7 = heapFloat[(r11+2)]; + f8 = heapFloat[(r11+8)]; + f9 = heapFloat[(r11+9)]; + f10 = heapFloat[(r11+6)]; + f4 = f4*f0; + f5 = f5*f2; + f1 = f1+f3; + f3 = f7*f6; + f7 = heapFloat[(r11+10)]; + f0 = f8*f0; + f2 = f9*f2; + f4 = f4+f5; + f5 = f10*f6; + f1 = f1+f3; + f3 = heapFloat[(r11+12)]; + f8 = heapFloat[(r11+14)]; + f9 = heapFloat[(r11+13)]; + f4 = f4+f5; + f0 = f0+f2; + f2 = f7*f6; + f1 = f1+f3; + f0 = f0+f2; + f2 = f4+f9; + heapFloat[(fp+-118)] = f1; + f0 = f0+f8; + heapFloat[(r14+1)] = f2; + heapFloat[(r14+2)] = f0; + heap32[(r14+3)] = 0; + r15 = heap32[(r1)]; + r15 = r15 >> 2; + r15 = heap32[(r15+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r15)>>2](i7); + r16 = r_g0 >> 2; + r16 = heap32[(r16)]; + r16 = r16 >> 2; + r16 = heap32[(r16+2)]; + r17 = sp + -152; + r18 = r17 >> 2; + heap32[(fp+-38)] = 0; + heap32[(r18+1)] = 0; + heap32[(r18+2)] = 0; + heap32[(r18+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r13; + heap32[(g0+3)] = r17; + r15 = r12 & 3; + __FUNCTION_TABLE__[(r16)>>2](i7); +if(!(r15 !=0)) //_LBB669_28 +{ + r15 = heap32[(r1)]; + r15 = r15 >> 2; + r15 = heap32[(r15+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r15)>>2](i7); + r16 = r_g0 >> 2; + r16 = heap32[(r16)]; + r16 = r16 >> 2; + r16 = heap32[(r16+2)]; + r17 = sp + -136; + r18 = r17 >> 2; + heap32[(fp+-34)] = 0; + heap32[(r18+1)] = 0; + heap32[(r18+2)] = 0; + heap32[(r18+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r13; + heap32[(g0+3)] = r17; + __FUNCTION_TABLE__[(r16)>>2](i7); +} + heap32[(fp+-102)] = heap32[(fp+-118)]; + heap32[(r9+1)] = heap32[(r14+1)]; + r12 = (r12 + 1)|0; + heap32[(r9+2)] = heap32[(r14+2)]; + heap32[(r9+3)] = heap32[(r14+3)]; +if(!(r12 !=32)) //_LBB669_26 +{ +break _20; +} +} + r2 = heap32[(r10+6)]; + f0 = heapFloat[(r10+110)]; + heapFloat[(fp+-193)] = f0; + f0 = heapFloat[(r10+125)]; + heapFloat[(fp+-194)] = f0; + r2 = r2 >> 2; + f0 = heapFloat[(r2+84)]; + f1 = heapFloat[(fp+-192)]; + if(f0 <=f1) //_LBB669_31 +{ + r2 = heap32[(r10+5)]; + r2 = r2 >> 2; + f0 = heapFloat[(r10+84)]; + f1 = heapFloat[(r2+9)]; + f2 = heapFloat[(r2+5)]; + f3 = heapFloat[(r2+1)]; + f4 = heapFloat[(r10+85)]; + f5 = heapFloat[(r2+10)]; + f6 = heapFloat[(r2+6)]; + f8 = heapFloat[(r2+2)]; + f12 = heapFloat[(r10+74)]; + f13 = heapFloat[(r10+78)]; + f14 = heapFloat[(r10+73)]; + f15 = heapFloat[(r10+77)]; + f7 = heapFloat[(r10+72)]; + f9 = heapFloat[(r10+76)]; + f10 = f1*f0; + f11 = f5*f4; + f16 = f2*f0; + f17 = f6*f4; + f0 = f3*f0; + f4 = f8*f4; + f18 = heapFloat[(r10+86)]; + f19 = heapFloat[(r2+11)]; + f20 = heapFloat[(r2+7)]; + f21 = heapFloat[(r2+3)]; + f22 = heapFloat[(r10+82)]; + f23 = heapFloat[(r10+81)]; + f24 = heapFloat[(r10+80)]; + f10 = f10+f11; + f11 = f19*f18; + f16 = f16+f17; + f17 = f20*f18; + f0 = f0+f4; + heapFloat[(fp+-192)] = f0; + f4 = f21*f18; + f18 = f12*f1; + f25 = f13*f5; + f26 = f14*f1; + f27 = f15*f5; + f1 = f7*f1; + f5 = f9*f5; + f28 = f12*f2; + f29 = f13*f6; + f30 = f14*f2; + f0 = f15*f6; + f2 = f7*f2; + f6 = f9*f6; + f12 = f12*f3; + f13 = f13*f8; + f14 = f14*f3; + f15 = f15*f8; + f3 = f7*f3; + f8 = f9*f8; + f7 = f10+f11; + f9 = heapFloat[(r2+15)]; + f10 = f16+f17; + f11 = heapFloat[(r2+14)]; + f16 = heapFloat[(fp+-192)]; + f4 = f16+f4; + f16 = heapFloat[(r2+13)]; + f17 = f18+f25; + f18 = f22*f19; + f25 = f26+f27; + f26 = f23*f19; + f1 = f1+f5; + f5 = f24*f19; + f19 = f28+f29; + f27 = f22*f20; + f0 = f30+f0; + f28 = f23*f20; + f2 = f2+f6; + f6 = f24*f20; + f20 = f12+f13; + f22 = f22*f21; + f29 = f14+f15; + f23 = f23*f21; + f3 = f3+f8; + f21 = f24*f21; + f12 = f7+f9; + f13 = f10+f11; + f4 = f4+f16; + f14 = f17+f18; + f15 = f25+f26; + f1 = f1+f5; + f5 = f19+f27; + f0 = f0+f28; + f2 = f2+f6; + f6 = f20+f22; + f8 = f29+f23; + f3 = f3+f21; +} +else{ + f0 = heapFloat[(r10+100)]; + f1 = heapFloat[(r2+9)]; + f2 = heapFloat[(r2+5)]; + f3 = heapFloat[(r2+1)]; + f4 = heapFloat[(r10+101)]; + f5 = heapFloat[(r2+10)]; + f6 = heapFloat[(r2+6)]; + f7 = heapFloat[(r2+2)]; + f8 = heapFloat[(r10+90)]; + f9 = heapFloat[(r10+94)]; + f10 = heapFloat[(r10+89)]; + f11 = heapFloat[(r10+93)]; + f12 = heapFloat[(r10+88)]; + f13 = heapFloat[(r10+92)]; + f14 = f1*f0; + f15 = f5*f4; + f16 = f2*f0; + f17 = f6*f4; + f0 = f3*f0; + f4 = f7*f4; + f18 = heapFloat[(r10+102)]; + f19 = heapFloat[(r2+11)]; + f20 = heapFloat[(r2+7)]; + f21 = heapFloat[(r2+3)]; + f22 = heapFloat[(r10+98)]; + f23 = heapFloat[(r10+97)]; + f24 = heapFloat[(r10+96)]; + f14 = f14+f15; + f15 = f19*f18; + f16 = f16+f17; + f17 = f20*f18; + f0 = f0+f4; + heapFloat[(fp+-192)] = f0; + f4 = f21*f18; + f18 = f8*f1; + f25 = f9*f5; + f26 = f10*f1; + f27 = f11*f5; + f1 = f12*f1; + f5 = f13*f5; + f28 = f8*f2; + f29 = f9*f6; + f30 = f10*f2; + f0 = f11*f6; + f2 = f12*f2; + f6 = f13*f6; + f8 = f8*f3; + f9 = f9*f7; + f10 = f10*f3; + f11 = f11*f7; + f3 = f12*f3; + f7 = f13*f7; + f12 = f14+f15; + f13 = heapFloat[(r2+15)]; + f14 = f16+f17; + f15 = heapFloat[(r2+14)]; + f16 = heapFloat[(fp+-192)]; + f4 = f16+f4; + f16 = heapFloat[(r2+13)]; + f17 = f18+f25; + f18 = f22*f19; + f25 = f26+f27; + f26 = f23*f19; + f1 = f1+f5; + f5 = f24*f19; + f19 = f28+f29; + f27 = f22*f20; + f0 = f30+f0; + f28 = f23*f20; + f2 = f2+f6; + f6 = f24*f20; + f8 = f8+f9; + f9 = f22*f21; + f10 = f10+f11; + f11 = f23*f21; + f3 = f3+f7; + f7 = f24*f21; + f12 = f12+f13; + f13 = f14+f15; + f4 = f4+f16; + f14 = f17+f18; + f15 = f25+f26; + f1 = f1+f5; + f5 = f19+f27; + f0 = f0+f28; + f2 = f2+f6; + f6 = f8+f9; + f8 = f10+f11; + f3 = f3+f7; +} + heapFloat[(fp+-98)] = f3; + heapFloat[(r11+1)] = f8; + heapFloat[(r11+2)] = f6; + heap32[(r11+3)] = 0; + heapFloat[(r11+4)] = f2; + heapFloat[(r11+5)] = f0; + heapFloat[(r11+6)] = f5; + heap32[(r11+7)] = 0; + heapFloat[(r11+8)] = f1; + heapFloat[(r11+9)] = f15; + heapFloat[(r11+10)] = f14; + heap32[(r11+11)] = 0; + heapFloat[(r11+12)] = f4; + heapFloat[(r11+13)] = f13; + heapFloat[(r11+14)] = f12; + r2 = sp + -424; + heap32[(r11+15)] = 0; + r8 = r2 >> 2; + heapFloat[(fp+-106)] = f4; + heapFloat[(r8+1)] = f13; + heapFloat[(r8+2)] = f12; + r9 = sp + -440; + heap32[(r8+3)] = 0; + r8 = r9 >> 2; + heapFloat[(fp+-110)] = f3; + heapFloat[(r8+1)] = f2; + heapFloat[(r8+2)] = f1; + r10 = sp + -456; + heap32[(r8+3)] = 0; + r8 = r10 >> 2; + heapFloat[(fp+-114)] = f8; + heapFloat[(r8+1)] = f0; + heapFloat[(r8+2)] = f15; + heap32[(r8+3)] = 0; + r8 = heap32[(r1)]; + r8 = r8 >> 2; + r8 = heap32[(r8+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r8)>>2](i7); + r11 = r_g0 >> 2; + r11 = heap32[(r11)]; + r11 = r11 >> 2; + r11 = heap32[(r11+15)]; + r12 = sp + -120; + r13 = r12 >> 2; + heap32[(fp+-30)] = 0; + heap32[(r13+1)] = 0; + heap32[(r13+2)] = 0; + heap32[(r13+3)] = 0; + f0 = heapFloat[(fp+-194)]; + f1 = -f0; + f2 = heapFloat[(fp+-193)]; + f1 = f1-f2; + f0 = f2-f0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r9; + heap32[(g0+3)] = r10; + f2 = heapFloat[(fp+-191)]; + heapFloat[(g0+4)] = f2; + heapFloat[(g0+5)] = f2; + heapFloat[(g0+6)] = f1; + heapFloat[(g0+7)] = f0; + heap32[(g0+8)] = r12; + heap32[(g0+9)] = 1; + heap32[(g0+10)] = 1092616192; + __FUNCTION_TABLE__[(r11)>>2](i7); +} +} +else{ + if(r11 ==6) //_LBB669_33 +{ + r11 = sp + -536; + r12 = r11 >> 2; + heap32[(fp+-134)] = heap32[(r10+263)]; + heap32[(r12+1)] = heap32[(r10+264)]; + heap32[(r12+2)] = heap32[(r10+265)]; + heap32[(r12+3)] = heap32[(r10+266)]; + heap32[(r12+4)] = heap32[(r10+267)]; + heap32[(r12+5)] = heap32[(r10+268)]; + heap32[(r12+6)] = heap32[(r10+269)]; + heap32[(r12+7)] = heap32[(r10+270)]; + heap32[(r12+8)] = heap32[(r10+271)]; + heap32[(r12+9)] = heap32[(r10+272)]; + heap32[(r12+10)] = heap32[(r10+273)]; + heap32[(r12+11)] = heap32[(r10+274)]; + heap32[(r12+12)] = heap32[(r10+275)]; + heap32[(r12+13)] = heap32[(r10+276)]; + heap32[(r12+14)] = heap32[(r10+277)]; + heap32[(r12+15)] = heap32[(r10+278)]; +if(!(r8 ==0)) //_LBB669_35 +{ + r13 = heap32[(r1)]; + r13 = r13 >> 2; + r13 = heap32[(r13+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r13)>>2](i7); + r14 = r_g0 >> 2; + r14 = heap32[(r14)]; + r14 = r14 >> 2; + r14 = heap32[(r14+14)]; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r11; + f0 = heapFloat[(fp+-191)]; + heapFloat[(g0+2)] = f0; + __FUNCTION_TABLE__[(r14)>>2](i7); +} + heap32[(fp+-134)] = heap32[(r10+279)]; + heap32[(r12+1)] = heap32[(r10+280)]; + heap32[(r12+2)] = heap32[(r10+281)]; + heap32[(r12+3)] = heap32[(r10+282)]; + heap32[(r12+4)] = heap32[(r10+283)]; + heap32[(r12+5)] = heap32[(r10+284)]; + heap32[(r12+6)] = heap32[(r10+285)]; + heap32[(r12+7)] = heap32[(r10+286)]; + heap32[(r12+8)] = heap32[(r10+287)]; + heap32[(r12+9)] = heap32[(r10+288)]; + heap32[(r12+10)] = heap32[(r10+289)]; + heap32[(r12+11)] = heap32[(r10+290)]; + heap32[(r12+12)] = heap32[(r10+291)]; + heap32[(r12+13)] = heap32[(r10+292)]; + heap32[(r12+14)] = heap32[(r10+293)]; + heap32[(r12+15)] = heap32[(r10+294)]; +if(!(r8 ==0)) //_LBB669_37 +{ + r8 = heap32[(r1)]; + r8 = r8 >> 2; + r8 = heap32[(r8+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r8)>>2](i7); + r13 = r_g0 >> 2; + r13 = heap32[(r13)]; + r13 = r13 >> 2; + r13 = heap32[(r13+14)]; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r11; + f0 = heapFloat[(fp+-191)]; + heapFloat[(g0+2)] = f0; + __FUNCTION_TABLE__[(r13)>>2](i7); +} + if(r9 ==0) //_LBB669_52 +{ +break _7; +} +else{ + r2 = (r2 + 1164)|0; + f0 = heapFloat[(r10+263)]; + heapFloat[(fp+-134)] = f0; + heap32[(r12+1)] = heap32[(r10+264)]; + f1 = heapFloat[(r10+265)]; + heapFloat[(r12+2)] = f1; + heap32[(r12+3)] = heap32[(r10+266)]; + f2 = heapFloat[(r10+267)]; + heapFloat[(r12+4)] = f2; + heap32[(r12+5)] = heap32[(r10+268)]; + f3 = heapFloat[(r10+269)]; + heapFloat[(r12+6)] = f3; + heap32[(r12+7)] = heap32[(r10+270)]; + f4 = heapFloat[(r10+271)]; + heapFloat[(r12+8)] = f4; + heap32[(r12+9)] = heap32[(r10+272)]; + f5 = heapFloat[(r10+273)]; + heapFloat[(r12+10)] = f5; + heap32[(r12+11)] = heap32[(r10+274)]; + heap32[(r12+12)] = heap32[(r10+275)]; + heap32[(r12+13)] = heap32[(r10+276)]; + heap32[(r12+14)] = heap32[(r10+277)]; + r8 = sp + -552; + heap32[(r12+15)] = heap32[(r10+278)]; + r9 = r8 >> 2; + heapFloat[(fp+-138)] = f1; + heapFloat[(r9+1)] = f3; + heapFloat[(r9+2)] = f5; + heap32[(r9+3)] = 0; + r9 = sp + -568; + heapFloat[(fp+-142)] = f0; + r13 = r9 >> 2; + heapFloat[(r13+1)] = f2; + heapFloat[(r13+2)] = f4; + heap32[(r13+3)] = 0; + r14 = heap32[(r1)]; + r14 = r14 >> 2; + r14 = heap32[(r14+4)]; + f0 = heapFloat[(r10+230)]; + f1 = heapFloat[(r10+231)]; + f2 = heapFloat[(r10+246)]; + f3 = heapFloat[(r10+247)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r14)>>2](i7); + r15 = r_g0 >> 2; + r15 = heap32[(r15)]; + r15 = r15 >> 2; + r15 = heap32[(r15+16)]; + r16 = sp + -104; + r17 = r16 >> 2; + heap32[(fp+-26)] = 0; + heap32[(r17+1)] = 0; + heap32[(r17+2)] = 0; + heap32[(r17+3)] = 0; + f4 = 0.89999997615814209; + f5 = heapFloat[(fp+-191)]; + f4 = f5*f4; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r9; + heapFloat[(g0+4)] = f4; + heapFloat[(g0+5)] = f0; + heapFloat[(g0+6)] = f1; + heapFloat[(g0+7)] = f2; + heapFloat[(g0+8)] = f3; + heap32[(g0+9)] = r16; + heap32[(g0+10)] = 1092616192; + __FUNCTION_TABLE__[(r15)>>2](i7); + f0 = heapFloat[(r12+9)]; + f1 = heapFloat[(r12+5)]; + heap32[(fp+-142)] = heap32[(r12+1)]; + heapFloat[(r13+1)] = f1; + heapFloat[(r13+2)] = f0; + heap32[(r13+3)] = 0; + f0 = heapFloat[(r10+296)]; + f1 = heapFloat[(r10+297)]; + heapFloat[(g0)] = f0; + cosf(i7); + f2 = f_g0; + heapFloat[(g0)] = f0; + sinf(i7); + f0 = f_g0; + heapFloat[(g0)] = f1; + cosf(i7); + f3 = f_g0; + heapFloat[(g0)] = f1; + sinf(i7); + f4 = heapFloat[(fp+-142)]; + f5 = f2*f3; + f6 = heapFloat[(r13+1)]; + f7 = f2*f_g0; + f8 = heapFloat[(r13+2)]; + f5 = f5*f4; + f7 = f7*f6; + f9 = f3*f0; + f10 = f_g0*f0; + f5 = f5+f7; + f0 = f8*f0; + r8 = sp + -584; + f7 = f9*f4; + f9 = f10*f6; + f3 = f6*f3; + f1 = f4*f_g0; + f0 = f5-f0; + r9 = r8 >> 2; + f4 = f7+f9; + f2 = f8*f2; + f1 = f3-f1; + heapFloat[(fp+-146)] = f0; + f0 = f4+f2; + heapFloat[(r9+1)] = f1; + heapFloat[(r9+2)] = f0; + f0 = heapFloat[(r10+279)]; + heapFloat[(fp+-134)] = f0; + heap32[(r12+1)] = heap32[(r10+280)]; + heap32[(r12+2)] = heap32[(r10+281)]; + heap32[(r12+3)] = heap32[(r10+282)]; + f1 = heapFloat[(r10+283)]; + heapFloat[(r12+4)] = f1; + heap32[(r12+5)] = heap32[(r10+284)]; + heap32[(r12+6)] = heap32[(r10+285)]; + heap32[(r12+7)] = heap32[(r10+286)]; + f2 = heapFloat[(r10+287)]; + heapFloat[(r12+8)] = f2; + heap32[(r12+9)] = heap32[(r10+288)]; + heap32[(r12+10)] = heap32[(r10+289)]; + heap32[(r12+11)] = heap32[(r10+290)]; + heap32[(r12+12)] = heap32[(r10+291)]; + heap32[(r12+13)] = heap32[(r10+292)]; + heap32[(r12+14)] = heap32[(r10+293)]; + r9 = sp + -600; + f0 = -f0; + heap32[(r12+15)] = heap32[(r10+294)]; + r13 = r9 >> 2; + f1 = -f1; + heapFloat[(fp+-150)] = f0; + f0 = -f2; + heapFloat[(r13+1)] = f1; + heapFloat[(r13+2)] = f0; + heap32[(r13+3)] = 0; + f0 = heapFloat[(r10+214)]; + f1 = heapFloat[(r10+215)]; + if(f0 <=f1) //_LBB669_40 +{ +if(!(f0 >=f1)) //_LBB669_42 +{ + r13 = heap32[(r1)]; + r13 = r13 >> 2; + r13 = heap32[(r13+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r13)>>2](i7); + r14 = r_g0 >> 2; + r14 = heap32[(r14)]; + r14 = r14 >> 2; + r14 = heap32[(r14+15)]; + r15 = sp + -72; + r16 = r15 >> 2; + heap32[(fp+-18)] = 0; + heap32[(r16+1)] = 0; + heap32[(r16+2)] = 0; + heap32[(r16+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r9; + heap32[(g0+3)] = r8; + f2 = heapFloat[(fp+-191)]; + heapFloat[(g0+4)] = f2; + heapFloat[(g0+5)] = f2; + heapFloat[(g0+6)] = f0; + heapFloat[(g0+7)] = f1; + heap32[(g0+8)] = r15; + heap32[(g0+9)] = 1; + heap32[(g0+10)] = 1092616192; + __FUNCTION_TABLE__[(r14)>>2](i7); +} +} +else{ + r13 = heap32[(r1)]; + r13 = r13 >> 2; + r13 = heap32[(r13+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r13)>>2](i7); + r14 = r_g0 >> 2; + r14 = heap32[(r14)]; + r14 = r14 >> 2; + r14 = heap32[(r14+15)]; + r15 = sp + -88; + r16 = r15 >> 2; + heap32[(fp+-22)] = 0; + heap32[(r16+1)] = 0; + heap32[(r16+2)] = 0; + heap32[(r16+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r9; + heap32[(g0+3)] = r8; + f0 = heapFloat[(fp+-191)]; + heapFloat[(g0+4)] = f0; + heapFloat[(g0+5)] = f0; + heap32[(g0+6)] = -1068953637; + heap32[(g0+7)] = 1078530011; + heap32[(g0+8)] = r15; + heap32[(g0+9)] = 0; + heap32[(g0+10)] = 1092616192; + __FUNCTION_TABLE__[(r14)>>2](i7); +} + heap32[(fp+-134)] = heap32[(r10+263)]; + heap32[(r12+1)] = heap32[(r10+264)]; + heap32[(r12+2)] = heap32[(r10+265)]; + heap32[(r12+3)] = heap32[(r10+266)]; + heap32[(r12+4)] = heap32[(r10+267)]; + heap32[(r12+5)] = heap32[(r10+268)]; + heap32[(r12+6)] = heap32[(r10+269)]; + heap32[(r12+7)] = heap32[(r10+270)]; + heap32[(r12+8)] = heap32[(r10+271)]; + heap32[(r12+9)] = heap32[(r10+272)]; + heap32[(r12+10)] = heap32[(r10+273)]; + heap32[(r12+11)] = heap32[(r10+274)]; + heap32[(r12+12)] = heap32[(r10+275)]; + heap32[(r12+13)] = heap32[(r10+276)]; + heap32[(r12+14)] = heap32[(r10+277)]; + r2 = sp + -616; + heap32[(r12+15)] = heap32[(r10+278)]; + r8 = r2 >> 2; + heap32[(fp+-154)] = heap32[(r10+167)]; + heap32[(r8+1)] = heap32[(r10+168)]; + heap32[(r8+2)] = heap32[(r10+169)]; + r9 = sp + -632; + heap32[(r8+3)] = heap32[(r10+170)]; + r8 = r9 >> 2; + heap32[(fp+-158)] = heap32[(r10+171)]; + heap32[(r8+1)] = heap32[(r10+172)]; + heap32[(r8+2)] = heap32[(r10+173)]; + heap32[(r8+3)] = heap32[(r10+174)]; + r8 = heap32[(r1)]; + r8 = r8 >> 2; + r8 = heap32[(r8+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r8)>>2](i7); + r10 = r_g0 >> 2; + r10 = heap32[(r10)]; + r10 = r10 >> 2; + r10 = heap32[(r10+18)]; + r12 = sp + -56; + r13 = r12 >> 2; + heap32[(fp+-14)] = 0; + heap32[(r13+1)] = 0; + heap32[(r13+2)] = 0; + heap32[(r13+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r9; + heap32[(g0+3)] = r11; + heap32[(g0+4)] = r12; + __FUNCTION_TABLE__[(r10)>>2](i7); +} +} +else{ + if(r11 ==7) //_LBB669_43 +{ + r11 = sp + -696; + r12 = r11 >> 2; + heap32[(fp+-174)] = heap32[(r10+203)]; + heap32[(r12+1)] = heap32[(r10+204)]; + heap32[(r12+2)] = heap32[(r10+205)]; + heap32[(r12+3)] = heap32[(r10+206)]; + heap32[(r12+4)] = heap32[(r10+207)]; + heap32[(r12+5)] = heap32[(r10+208)]; + heap32[(r12+6)] = heap32[(r10+209)]; + heap32[(r12+7)] = heap32[(r10+210)]; + heap32[(r12+8)] = heap32[(r10+211)]; + heap32[(r12+9)] = heap32[(r10+212)]; + heap32[(r12+10)] = heap32[(r10+213)]; + heap32[(r12+11)] = heap32[(r10+214)]; + heap32[(r12+12)] = heap32[(r10+215)]; + heap32[(r12+13)] = heap32[(r10+216)]; + heap32[(r12+14)] = heap32[(r10+217)]; + heap32[(r12+15)] = heap32[(r10+218)]; +if(!(r8 ==0)) //_LBB669_45 +{ + r13 = heap32[(r1)]; + r13 = r13 >> 2; + r13 = heap32[(r13+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r13)>>2](i7); + r14 = r_g0 >> 2; + r14 = heap32[(r14)]; + r14 = r14 >> 2; + r14 = heap32[(r14+14)]; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r11; + f0 = heapFloat[(fp+-191)]; + heapFloat[(g0+2)] = f0; + __FUNCTION_TABLE__[(r14)>>2](i7); +} + heap32[(fp+-174)] = heap32[(r10+219)]; + heap32[(r12+1)] = heap32[(r10+220)]; + heap32[(r12+2)] = heap32[(r10+221)]; + heap32[(r12+3)] = heap32[(r10+222)]; + heap32[(r12+4)] = heap32[(r10+223)]; + heap32[(r12+5)] = heap32[(r10+224)]; + heap32[(r12+6)] = heap32[(r10+225)]; + heap32[(r12+7)] = heap32[(r10+226)]; + heap32[(r12+8)] = heap32[(r10+227)]; + heap32[(r12+9)] = heap32[(r10+228)]; + heap32[(r12+10)] = heap32[(r10+229)]; + heap32[(r12+11)] = heap32[(r10+230)]; + heap32[(r12+12)] = heap32[(r10+231)]; + heap32[(r12+13)] = heap32[(r10+232)]; + heap32[(r12+14)] = heap32[(r10+233)]; + heap32[(r12+15)] = heap32[(r10+234)]; +if(!(r8 ==0)) //_LBB669_47 +{ + r8 = heap32[(r1)]; + r8 = r8 >> 2; + r8 = heap32[(r8+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r8)>>2](i7); + r12 = r_g0 >> 2; + r12 = heap32[(r12)]; + r12 = r12 >> 2; + r12 = heap32[(r12+14)]; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r11; + f0 = heapFloat[(fp+-191)]; + heapFloat[(g0+2)] = f0; + __FUNCTION_TABLE__[(r12)>>2](i7); +} + if(r9 ==0) //_LBB669_52 +{ +break _7; +} +else{ + r8 = (r2 + 924)|0; + r9 = heapU8[r2+168]; + if(r9 ==0) //_LBB669_50 +{ + r2 = (r2 + 876)|0; +} +else{ + r2 = (r2 + 812)|0; +} + r2 = r2 >> 2; + f0 = heapFloat[(r2+1)]; + f1 = heapFloat[(r10+43)]; + f2 = heapFloat[(r2)]; + f3 = heapFloat[(r2+2)]; + f4 = heapFloat[(r2+5)]; + f5 = heapFloat[(r2+4)]; + f6 = f2*f1; + f7 = heapFloat[(fp+-192)]; + f8 = f0*f7; + f9 = heapFloat[(r2+6)]; + f10 = heapFloat[(r2+9)]; + f11 = heapFloat[(r2+8)]; + f12 = f5*f1; + f13 = f4*f7; + f6 = f6+f8; + f3 = f3*f7; + f14 = heapFloat[(r2+10)]; + f1 = f11*f1; + f15 = f10*f7; + f12 = f12+f13; + f9 = f9*f7; + f6 = f6+f3; + f16 = heapFloat[(r2+12)]; + f17 = heapFloat[(r2+13)]; + f18 = heapFloat[(r2+14)]; + r2 = sp + -712; + f12 = f12+f9; + f1 = f1+f15; + f7 = f14*f7; + f6 = f6+f16; + f1 = f1+f7; + r9 = r2 >> 2; + f12 = f12+f17; + heapFloat[(fp+-178)] = f6; + f1 = f1+f18; + heapFloat[(r9+1)] = f12; + heapFloat[(r9+2)] = f1; + heap32[(r9+3)] = 0; + f1 = heapFloat[(r10+44)]; + f6 = f2*f1; + f12 = f5*f1; + f6 = f6+f8; + f1 = f11*f1; + f8 = f12+f13; + f3 = f6+f3; + r9 = sp + -728; + f1 = f1+f15; + f6 = f8+f9; + f3 = f3+f16; + f1 = f1+f7; + r11 = r9 >> 2; + f6 = f6+f17; + heapFloat[(fp+-182)] = f3; + f1 = f1+f18; + heapFloat[(r11+1)] = f6; + heapFloat[(r11+2)] = f1; + heap32[(r11+3)] = 0; + r11 = heap32[(r1)]; + r11 = r11 >> 2; + r11 = heap32[(r11+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r11)>>2](i7); + r12 = r_g0 >> 2; + r12 = heap32[(r12)]; + r12 = r12 >> 2; + r12 = heap32[(r12+2)]; + r13 = sp + -40; + r14 = r13 >> 2; + heap32[(fp+-10)] = 0; + heap32[(r14+1)] = 0; + heap32[(r14+2)] = 0; + heap32[(r14+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r9; + heap32[(g0+3)] = r13; + __FUNCTION_TABLE__[(r12)>>2](i7); + r2 = sp + -744; + r9 = r2 >> 2; + heapFloat[(fp+-186)] = f2; + heapFloat[(r9+1)] = f5; + heapFloat[(r9+2)] = f11; + r11 = sp + -760; + heap32[(r9+3)] = 0; + r9 = r11 >> 2; + heapFloat[(fp+-190)] = f0; + heapFloat[(r9+1)] = f4; + heapFloat[(r9+2)] = f10; + heap32[(r9+3)] = 0; + r9 = heap32[(r1)]; + r9 = r9 >> 2; + r9 = heap32[(r9+4)]; + f0 = heapFloat[(r10+45)]; + f1 = heapFloat[(r10+46)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r9)>>2](i7); + r10 = r_g0 >> 2; + r10 = heap32[(r10)]; + r10 = r10 >> 2; + r10 = heap32[(r10+15)]; + r12 = sp + -24; + r13 = r12 >> 2; + heap32[(fp+-6)] = 0; + heap32[(r13+1)] = 0; + heap32[(r13+2)] = 0; + heap32[(r13+3)] = 0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r11; + f2 = heapFloat[(fp+-191)]; + heapFloat[(g0+4)] = f2; + heapFloat[(g0+5)] = f2; + heapFloat[(g0+6)] = f0; + heapFloat[(g0+7)] = f1; + heap32[(g0+8)] = r12; + heap32[(g0+9)] = 1; + heap32[(g0+10)] = 1092616192; + __FUNCTION_TABLE__[(r10)>>2](i7); +} +} +else{ +break _7; +} +} +} +} +else{ + if(r11 ==3) //_LBB669_11 +{ + r2 = sp + -232; + r9 = r2 >> 2; + heap32[(fp+-58)] = 1065353216; + heap32[(r9+1)] = 0; + heap32[(r9+2)] = 0; + heap32[(r9+3)] = 0; + heap32[(r9+4)] = 0; + heap32[(r9+5)] = 1065353216; + heap32[(r9+6)] = 0; + heap32[(r9+7)] = 0; + heap32[(r9+8)] = 0; + heap32[(r9+9)] = 0; + heap32[(r9+10)] = 1065353216; + heap32[(r9+11)] = 0; + heap32[(r9+12)] = 0; + heap32[(r9+13)] = 0; + heap32[(r9+14)] = 0; + heap32[(r9+15)] = 0; + r11 = heap32[(r10+5)]; + r11 = r11 >> 2; + f0 = heapFloat[(r10+72)]; + f1 = heapFloat[(r11+1)]; + f2 = heapFloat[(r10+73)]; + f3 = heapFloat[(r11+2)]; + f4 = heapFloat[(r11+5)]; + f5 = heapFloat[(r11+6)]; + f1 = f1*f0; + f3 = f3*f2; + f6 = heapFloat[(r10+74)]; + f7 = heapFloat[(r11+3)]; + f8 = heapFloat[(r11+9)]; + f9 = heapFloat[(r11+10)]; + f10 = heapFloat[(r11+7)]; + f4 = f4*f0; + f5 = f5*f2; + f1 = f1+f3; + f3 = f7*f6; + f7 = heapFloat[(r11+11)]; + f0 = f8*f0; + f2 = f9*f2; + f4 = f4+f5; + f5 = f10*f6; + f1 = f1+f3; + f3 = heapFloat[(r11+13)]; + f8 = heapFloat[(r11+15)]; + f9 = heapFloat[(r11+14)]; + f4 = f4+f5; + f0 = f0+f2; + f2 = f7*f6; + f1 = f1+f3; + f0 = f0+f2; + f2 = f4+f9; + heapFloat[(r9+12)] = f1; + f0 = f0+f8; + heapFloat[(r9+13)] = f2; + heapFloat[(r9+14)] = f0; + heap32[(r9+15)] = 0; + r11 = heap32[(r1)]; + r11 = r11 >> 2; + r11 = heap32[(r11+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r11)>>2](i7); + r12 = r_g0 >> 2; + r12 = heap32[(r12)]; + r12 = r12 >> 2; + r12 = heap32[(r12+14)]; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r2; + f0 = heapFloat[(fp+-191)]; + heapFloat[(g0+2)] = f0; + __FUNCTION_TABLE__[(r12)>>2](i7); + r11 = heap32[(r10+6)]; + r11 = r11 >> 2; + f0 = heapFloat[(r10+76)]; + f1 = heapFloat[(r11+1)]; + f2 = heapFloat[(r10+77)]; + f3 = heapFloat[(r11+2)]; + f4 = heapFloat[(r11+5)]; + f5 = heapFloat[(r11+6)]; + f1 = f1*f0; + f3 = f3*f2; + f6 = heapFloat[(r10+78)]; + f7 = heapFloat[(r11+3)]; + f8 = heapFloat[(r11+9)]; + f9 = heapFloat[(r11+10)]; + f10 = heapFloat[(r11+7)]; + f4 = f4*f0; + f5 = f5*f2; + f1 = f1+f3; + f3 = f7*f6; + f7 = heapFloat[(r11+11)]; + f0 = f8*f0; + f2 = f9*f2; + f4 = f4+f5; + f5 = f10*f6; + f1 = f1+f3; + f3 = heapFloat[(r11+13)]; + f8 = heapFloat[(r11+15)]; + f9 = heapFloat[(r11+14)]; + f4 = f4+f5; + f0 = f0+f2; + f2 = f7*f6; + f1 = f1+f3; + f0 = f0+f2; + f2 = f4+f9; + heapFloat[(r9+12)] = f1; + f0 = f0+f8; + heapFloat[(r9+13)] = f2; + heapFloat[(r9+14)] = f0; + heap32[(r9+15)] = 0; +if(!(r8 ==0)) //_LBB669_52 +{ + r8 = heap32[(r1)]; + r8 = r8 >> 2; + r8 = heap32[(r8+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r8)>>2](i7); + r9 = r_g0 >> 2; + r9 = heap32[(r9)]; + r9 = r9 >> 2; + r9 = heap32[(r9+14)]; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r2; + f0 = heapFloat[(fp+-191)]; + heapFloat[(g0+2)] = f0; + __FUNCTION_TABLE__[(r9)>>2](i7); +} +} +else{ + if(r11 ==4) //_LBB669_13 +{ + r2 = heap32[(r10+5)]; + r2 = r2 >> 2; + f0 = heapFloat[(r2+1)]; + f1 = heapFloat[(r10+135)]; + f2 = heapFloat[(r2+2)]; + f3 = heapFloat[(r10+139)]; + f4 = heapFloat[(r10+136)]; + f5 = heapFloat[(r10+140)]; + f6 = f1*f0; + f7 = f3*f2; + f8 = heapFloat[(r2+3)]; + f9 = heapFloat[(r10+143)]; + f10 = heapFloat[(r2+9)]; + f11 = heapFloat[(r10+147)]; + f12 = heapFloat[(r2+5)]; + f13 = heapFloat[(r10+137)]; + f14 = heapFloat[(r2+10)]; + f15 = heapFloat[(r10+148)]; + f16 = heapFloat[(r2+6)]; + f17 = heapFloat[(r10+141)]; + f18 = heapFloat[(r2+11)]; + f19 = heapFloat[(r10+149)]; + f20 = heapFloat[(r2+7)]; + f21 = heapFloat[(r10+145)]; + f22 = heapFloat[(r10+144)]; + f23 = f4*f0; + f24 = f5*f2; + f6 = f6+f7; + f7 = f9*f8; + f25 = heapFloat[(r2+15)]; + f26 = heapFloat[(r2+14)]; + f27 = heapFloat[(r2+13)]; + f28 = f13*f0; + f29 = f17*f2; + f23 = f23+f24; + f24 = f22*f8; + f6 = f6+f7; + r2 = r3 >> 2; + f7 = f28+f29; + f28 = f21*f8; + f23 = f23+f24; + heapFloat[(fp+-74)] = f6; + f6 = f1*f12; + f24 = f3*f16; + f7 = f7+f28; + heapFloat[(r2+1)] = f23; + heapFloat[(r2+2)] = f7; + f7 = f4*f12; + f23 = f5*f16; + f6 = f6+f24; + f24 = f9*f20; + f28 = f13*f12; + f29 = f17*f16; + f7 = f7+f23; + f23 = f22*f20; + f6 = f6+f24; + heap32[(r2+3)] = 0; + f24 = f28+f29; + f28 = f21*f20; + f7 = f7+f23; + heapFloat[(r2+4)] = f6; + f1 = f1*f10; + f3 = f3*f14; + f6 = f24+f28; + heapFloat[(r2+5)] = f7; + heapFloat[(r2+6)] = f6; + f4 = f4*f10; + f5 = f5*f14; + f1 = f1+f3; + f3 = f9*f18; + f6 = f13*f10; + f7 = f17*f14; + f4 = f4+f5; + f5 = f22*f18; + f1 = f1+f3; + heap32[(r2+7)] = 0; + f0 = f0*f11; + f2 = f2*f15; + f3 = f6+f7; + f6 = f21*f18; + f4 = f4+f5; + heapFloat[(r2+8)] = f1; + f1 = f12*f11; + f5 = f16*f15; + f0 = f0+f2; + f2 = f8*f19; + f3 = f3+f6; + heapFloat[(r2+9)] = f4; + f0 = f0+f2; + heapFloat[(r2+10)] = f3; + f2 = f10*f11; + f3 = f14*f15; + f1 = f1+f5; + f4 = f20*f19; + f1 = f1+f4; + f2 = f2+f3; + f3 = f18*f19; + f0 = f0+f27; + heap32[(r2+11)] = 0; + f2 = f2+f3; + f1 = f1+f26; + heapFloat[(r2+12)] = f0; + f0 = f2+f25; + heapFloat[(r2+13)] = f1; + heapFloat[(r2+14)] = f0; + heap32[(r2+15)] = 0; +if(!(r8 ==0)) //_LBB669_15 +{ + r11 = heap32[(r1)]; + r11 = r11 >> 2; + r11 = heap32[(r11+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r11)>>2](i7); + r12 = r_g0 >> 2; + r12 = heap32[(r12)]; + r12 = r12 >> 2; + r12 = heap32[(r12+14)]; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r3; + f0 = heapFloat[(fp+-191)]; + heapFloat[(g0+2)] = f0; + __FUNCTION_TABLE__[(r12)>>2](i7); +} + r11 = heap32[(r10+6)]; + r11 = r11 >> 2; + f0 = heapFloat[(r11+1)]; + f1 = heapFloat[(r10+151)]; + f2 = heapFloat[(r11+2)]; + f3 = heapFloat[(r10+155)]; + f4 = heapFloat[(r10+152)]; + f5 = heapFloat[(r10+156)]; + f6 = f1*f0; + f7 = f3*f2; + f8 = heapFloat[(r11+3)]; + f9 = heapFloat[(r10+159)]; + f10 = heapFloat[(r11+9)]; + f11 = heapFloat[(r10+163)]; + f12 = heapFloat[(r11+5)]; + f13 = heapFloat[(r10+153)]; + f14 = heapFloat[(r11+10)]; + f15 = heapFloat[(r10+164)]; + f16 = heapFloat[(r11+6)]; + f17 = heapFloat[(r10+157)]; + f18 = heapFloat[(r11+11)]; + f19 = heapFloat[(r10+165)]; + f20 = heapFloat[(r11+7)]; + f21 = heapFloat[(r10+161)]; + f22 = heapFloat[(r10+160)]; + f23 = f4*f0; + f24 = f5*f2; + f6 = f6+f7; + f7 = f9*f8; + f25 = heapFloat[(r11+15)]; + f26 = heapFloat[(r11+14)]; + f27 = heapFloat[(r11+13)]; + f28 = f13*f0; + f29 = f17*f2; + f23 = f23+f24; + f24 = f22*f8; + f6 = f6+f7; + f7 = f28+f29; + f28 = f21*f8; + f23 = f23+f24; + heapFloat[(fp+-74)] = f6; + f6 = f1*f12; + f24 = f3*f16; + f7 = f7+f28; + heapFloat[(r2+1)] = f23; + heapFloat[(r2+2)] = f7; + f7 = f4*f12; + f23 = f5*f16; + f6 = f6+f24; + f24 = f9*f20; + f28 = f13*f12; + f29 = f17*f16; + f7 = f7+f23; + f23 = f22*f20; + f6 = f6+f24; + heap32[(r2+3)] = 0; + f24 = f28+f29; + f28 = f21*f20; + f7 = f7+f23; + heapFloat[(r2+4)] = f6; + f1 = f1*f10; + f3 = f3*f14; + f6 = f24+f28; + heapFloat[(r2+5)] = f7; + heapFloat[(r2+6)] = f6; + f4 = f4*f10; + f5 = f5*f14; + f1 = f1+f3; + f3 = f9*f18; + f6 = f13*f10; + f7 = f17*f14; + f4 = f4+f5; + f5 = f22*f18; + f1 = f1+f3; + heap32[(r2+7)] = 0; + f0 = f0*f11; + f2 = f2*f15; + f3 = f6+f7; + f6 = f21*f18; + f4 = f4+f5; + heapFloat[(r2+8)] = f1; + f1 = f12*f11; + f5 = f16*f15; + f0 = f0+f2; + f2 = f8*f19; + f3 = f3+f6; + heapFloat[(r2+9)] = f4; + f0 = f0+f2; + heapFloat[(r2+10)] = f3; + f2 = f10*f11; + f3 = f14*f15; + f1 = f1+f5; + f4 = f20*f19; + f1 = f1+f4; + f2 = f2+f3; + f3 = f18*f19; + f0 = f0+f27; + heap32[(r2+11)] = 0; + f2 = f2+f3; + f1 = f1+f26; + heapFloat[(r2+12)] = f0; + f0 = f2+f25; + heapFloat[(r2+13)] = f1; + heapFloat[(r2+14)] = f0; + heap32[(r2+15)] = 0; +if(!(r8 ==0)) //_LBB669_17 +{ + r8 = heap32[(r1)]; + r8 = r8 >> 2; + r8 = heap32[(r8+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r8)>>2](i7); + r11 = r_g0 >> 2; + r11 = heap32[(r11)]; + r11 = r11 >> 2; + r11 = heap32[(r11+14)]; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r3; + f0 = heapFloat[(fp+-191)]; + heapFloat[(g0+2)] = f0; + __FUNCTION_TABLE__[(r11)>>2](i7); +} + f0 = heapFloat[(r10+172)]; + f1 = heapFloat[(r10+173)]; +if(!(f0 ==f1)) //_LBB669_52 +{ +if(!(r9 ==0)) //_LBB669_52 +{ + r8 = sp + -312; + r9 = r8 >> 2; + heap32[(fp+-78)] = heap32[(r2+2)]; + heap32[(r9+1)] = heap32[(r2+6)]; + heap32[(r9+2)] = heap32[(r2+10)]; + r10 = sp + -328; + heap32[(r9+3)] = 0; + r9 = r10 >> 2; + heap32[(fp+-82)] = heap32[(fp+-74)]; + heap32[(r9+1)] = heap32[(r2+4)]; + heap32[(r9+2)] = heap32[(r2+8)]; + heap32[(r9+3)] = 0; + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r9 = r_g0 >> 2; + r9 = heap32[(r9)]; + r9 = r9 >> 2; + r9 = heap32[(r9+15)]; + r11 = sp + -168; + r12 = r11 >> 2; + heap32[(fp+-42)] = 0; + heap32[(r12+1)] = 0; + heap32[(r12+2)] = 0; + heap32[(r12+3)] = 0; + f2 = 6.2831854820251465; + r12 = f0 <= f1; + f3 = heapFloat[(fp+-192)]; + f3 = f0 > f1 ? f3 : f0; + f0 = f0 > f1 ? f2 : f1; + r12 = r12 & 1; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r8; + heap32[(g0+3)] = r10; + f1 = heapFloat[(fp+-191)]; + heapFloat[(g0+4)] = f1; + heapFloat[(g0+5)] = f1; + heapFloat[(g0+6)] = f3; + heapFloat[(g0+7)] = f0; + heap32[(g0+8)] = r11; + heap32[(g0+9)] = r12; + heap32[(g0+10)] = 1092616192; + __FUNCTION_TABLE__[(r9)>>2](i7); +} +} +} +} +} +} +} while(0); + r2 = (r7 + -1)|0; + if(r7 !=0) //_LBB669_4 +{ +continue _5; +} +else{ +break _5; +} +} +} +} +} + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r_g0; +_74: do { +if(!(r2 ==0)) //_LBB669_60 +{ + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r3 = r_g0 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+12)]; + heap32[(g0)] = r_g0; + __FUNCTION_TABLE__[(r3)>>2](i7); + r2 = r_g0 & 3; +if(!(r2 ==0)) //_LBB669_60 +{ + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r_g0; +if(!(r2 ==0)) //_LBB669_60 +{ + r2 = heap32[(r1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = r_g0 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+12)]; + heap32[(g0)] = r_g0; + __FUNCTION_TABLE__[(r2)>>2](i7); + r0 = r_g0; +if(!(r0 ==0)) //_LBB669_60 +{ + r0 = heap32[(r1+63)]; +if(!(r0 <1)) //_LBB669_60 +{ + r0 = 0; +_80: while(true){ + r2 = heap32[(r1+65)]; + r3 = r0 << 2; + r2 = (r2 + r3)|0; + r2 = r2 >> 2; + r2 = heap32[(r2)]; + r3 = r2 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+3)]; + r4 = heap32[(r1+21)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r4; + r0 = (r0 + 1)|0; + __FUNCTION_TABLE__[(r3)>>2](i7); + r2 = heap32[(r1+63)]; + if(r2 >r0) //_LBB669_59 +{ +continue _80; +} +else{ +break _74; +} +} +} +} +} +} +} +} while(0); + r0 = _ZN15CProfileManager11CurrentNodeE; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r3 = heap32[(r2+4)]; + r3 = (r3 + -1)|0; + heap32[(r2+4)] = r3; +_83: do { +if(!(r3 !=0)) //_LBB669_66 +{ + r3 = heap32[(r2+1)]; + if(r3 !=0) //_LBB669_63 +{ + r1 = sp + -8; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + r3 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r3 = r3 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r1 = r1 >> 2; + r4 = heap32[(fp+-2)]; + r5 = heap32[(r3)]; + r4 = (r4 - r5)|0; + r1 = heap32[(r1+1)]; + r3 = heap32[(r3+1)]; + r1 = (r1 - r3)|0; + r3 = (r4 * 1000000)|0; + r1 = (r1 + r3)|0; + r3 = heap32[(r2+3)]; + r1 = (r1 - r3)|0; + f0 = uint(r1); //fuitos r1, f0 + f1 = 1000; + f2 = heapFloat[(r2+2)]; + f0 = f0/f1; + f0 = f2+f0; + heapFloat[(r2+2)] = f0; + r1 = heap32[(r2+4)]; + if(r1 !=0) //_LBB669_66 +{ +break _83; +} +else{ + r1 = heap32[(r0)]; +} +} + r1 = r1 >> 2; + r1 = heap32[(r1+5)]; + heap32[(r0)] = r1; +} +} while(0); + return; +} + +function _ZN23btDiscreteDynamicsWorld18saveKinematicStateEf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; +var __label__ = 0; + i7 = sp + -40;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+2)]; +if(!(r1 <1)) //_LBB670_11 +{ + f0 = heapFloat[(fp+1)]; + f1 = 1; + f1 = f1/f0; + r1 = 0; +_3: while(true){ + r2 = heap32[(r0+4)]; + r3 = r1 << 2; + r2 = (r2 + r3)|0; + r2 = r2 >> 2; + r2 = heap32[(r2)]; + r3 = heapU8[r2+232]; + r3 = r3 & 2; +if(!(r3 ==0)) //_LBB670_10 +{ +if(!(r2 ==0)) //_LBB670_10 +{ + r3 = r2 >> 2; + r4 = heap32[(r3+54)]; +if(!(r4 ==2)) //_LBB670_10 +{ + r4 = heapU8[r2+204]; + r4 = r4 & 2; +if(!(r4 ==0)) //_LBB670_10 +{ + f2 = 0; +if(!(f0 ==f2)) //_LBB670_10 +{ + r4 = heap32[(r3+118)]; +if(!(r4 ==0)) //_LBB670_9 +{ + r5 = r4 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+2)]; + r6 = (r2 + 4)|0; + heap32[(g0)] = r4; + heap32[(g0+1)] = r6; + __FUNCTION_TABLE__[(r5)>>2](i7); +} + f2 = heapFloat[(r3+13)]; + f3 = heapFloat[(r3+29)]; + f2 = f2-f3; + f3 = heapFloat[(r3+15)]; + f4 = heapFloat[(r3+31)]; + f5 = heapFloat[(r3+14)]; + f6 = heapFloat[(r3+30)]; + f5 = f5-f6; + f2 = f2*f1; + f3 = f3-f4; + f4 = f5*f1; + heapFloat[(r3+76)] = f2; + f2 = f3*f1; + heapFloat[(r3+77)] = f4; + heapFloat[(r3+78)] = f2; + heap32[(r3+79)] = 0; + r4 = sp + -16; + r5 = (r2 + 68)|0; + r2 = (r2 + 4)|0; + r6 = sp + -20; + heap32[(g0)] = r5; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r6; + _ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(i7); + r2 = r4 >> 2; + f2 = heapFloat[(fp+-5)]; + f3 = heapFloat[(fp+-4)]; + f3 = f3*f2; + f4 = heapFloat[(r2+2)]; + f5 = heapFloat[(r2+1)]; + f5 = f5*f2; + f3 = f3*f1; + f2 = f4*f2; + f4 = f5*f1; + heapFloat[(r3+80)] = f3; + f2 = f2*f1; + heapFloat[(r3+81)] = f4; + heapFloat[(r3+82)] = f2; + heap32[(r3+83)] = 0; + heap32[(r3+33)] = heap32[(r3+76)]; + heap32[(r3+34)] = heap32[(r3+77)]; + heap32[(r3+35)] = heap32[(r3+78)]; + heap32[(r3+36)] = heap32[(r3+79)]; + heapFloat[(r3+37)] = f3; + heapFloat[(r3+38)] = f4; + heapFloat[(r3+39)] = f2; + heap32[(r3+40)] = 0; + heap32[(r3+17)] = heap32[(r3+1)]; + heap32[(r3+18)] = heap32[(r3+2)]; + heap32[(r3+19)] = heap32[(r3+3)]; + heap32[(r3+20)] = heap32[(r3+4)]; + heap32[(r3+21)] = heap32[(r3+5)]; + heap32[(r3+22)] = heap32[(r3+6)]; + heap32[(r3+23)] = heap32[(r3+7)]; + heap32[(r3+24)] = heap32[(r3+8)]; + heap32[(r3+25)] = heap32[(r3+9)]; + heap32[(r3+26)] = heap32[(r3+10)]; + heap32[(r3+27)] = heap32[(r3+11)]; + heap32[(r3+28)] = heap32[(r3+12)]; + heap32[(r3+29)] = heap32[(r3+13)]; + heap32[(r3+30)] = heap32[(r3+14)]; + heap32[(r3+31)] = heap32[(r3+15)]; + heap32[(r3+32)] = heap32[(r3+16)]; +} +} +} +} +} + r1 = (r1 + 1)|0; + r2 = heap32[(r0+2)]; + if(r2 >r1) //_LBB670_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + return; +} + +function _ZN15btDynamicsWorldD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV15btDynamicsWorld; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZN16btCollisionWorldD2Ev(i7); + return; +} + +function _ZN15btDynamicsWorldD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV15btDynamicsWorld; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZN16btCollisionWorldD2Ev(i7); + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN23btDiscreteDynamicsWorldD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV23btDiscreteDynamicsWorld; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heapU8[r0+244]; +if(!(r1 ==0)) //_LBB673_3 +{ + r1 = heap32[(r2+45)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+45)]; +if(!(r1 ==0)) //_LBB673_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} +} + r1 = heapU8[r0+245]; +if(!(r1 ==0)) //_LBB673_6 +{ + r1 = heap32[(r2+44)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+44)]; +if(!(r1 ==0)) //_LBB673_6 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} +} + r1 = heap32[(r2+65)]; +if(!(r1 ==0)) //_LBB673_10 +{ + r3 = heapU8[r0+264]; +if(!(r3 ==0)) //_LBB673_9 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+65)] = 0; +} + r1 = 1; + heap8[r0+264] = r1; + heap32[(r2+65)] = 0; + heap32[(r2+63)] = 0; + heap32[(r2+64)] = 0; + r3 = heap32[(r2+54)]; +if(!(r3 ==0)) //_LBB673_14 +{ + r4 = heapU8[r0+220]; +if(!(r4 ==0)) //_LBB673_13 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+54)] = 0; +} + heap8[r0+220] = r1; + heap32[(r2+54)] = 0; + heap32[(r2+52)] = 0; + heap32[(r2+53)] = 0; + r3 = heap32[(r2+49)]; +if(!(r3 ==0)) //_LBB673_18 +{ + r4 = heapU8[r0+200]; +if(!(r4 ==0)) //_LBB673_17 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+49)] = 0; +} + heap8[r0+200] = r1; + heap32[(r2+49)] = 0; + r1 = _ZTV15btDynamicsWorld; + heap32[(r2+47)] = 0; + r1 = (r1 + 8)|0; + heap32[(r2+48)] = 0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZN16btCollisionWorldD2Ev(i7); + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN23btDiscreteDynamicsWorldD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + heap32[(g0)] = r0; + _ZN23btDiscreteDynamicsWorldD2Ev(i7); + return; +} + +function _ZN23btDiscreteDynamicsWorldD2Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV23btDiscreteDynamicsWorld; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heapU8[r0+244]; +if(!(r1 ==0)) //_LBB675_3 +{ + r1 = heap32[(r2+45)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+45)]; +if(!(r1 ==0)) //_LBB675_3 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} +} + r1 = heapU8[r0+245]; +if(!(r1 ==0)) //_LBB675_6 +{ + r1 = heap32[(r2+44)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r3)>>2](i7); + r1 = heap32[(r2+44)]; +if(!(r1 ==0)) //_LBB675_6 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} +} + r1 = heap32[(r2+65)]; +if(!(r1 ==0)) //_LBB675_10 +{ + r3 = heapU8[r0+264]; +if(!(r3 ==0)) //_LBB675_9 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+65)] = 0; +} + r1 = 1; + heap8[r0+264] = r1; + heap32[(r2+65)] = 0; + heap32[(r2+63)] = 0; + heap32[(r2+64)] = 0; + r3 = heap32[(r2+54)]; +if(!(r3 ==0)) //_LBB675_14 +{ + r4 = heapU8[r0+220]; +if(!(r4 ==0)) //_LBB675_13 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+54)] = 0; +} + heap8[r0+220] = r1; + heap32[(r2+54)] = 0; + heap32[(r2+52)] = 0; + heap32[(r2+53)] = 0; + r3 = heap32[(r2+49)]; +if(!(r3 ==0)) //_LBB675_18 +{ + r4 = heapU8[r0+200]; +if(!(r4 ==0)) //_LBB675_17 +{ + r4 = gNumAlignedFree; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r5 = (r5 + 1)|0; + r3 = r3 >> 2; + heap32[(r4)] = r5; + r3 = heap32[(r3+-1)]; + heap32[(g0)] = r3; + free(i7); +} + heap32[(r2+49)] = 0; +} + heap8[r0+200] = r1; + heap32[(r2+49)] = 0; + r1 = _ZTV15btDynamicsWorld; + heap32[(r2+47)] = 0; + r1 = (r1 + 8)|0; + heap32[(r2+48)] = 0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZN16btCollisionWorldD2Ev(i7); + return; +} + +function _ZN11btRigidBody12setMassPropsEfRK9btVector3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + f0 = heapFloat[(fp+1)]; + r1 = heap32[(fp+2)]; + r2 = heap32[(r0+51)]; + f1 = 0; + if(f0 !=f1) //_LBB676_2 +{ + r2 = r2 & -2; + f2 = 1; + f2 = f2/f0; + heap32[(r0+51)] = r2; + heapFloat[(r0+84)] = f2; +} +else{ + r2 = r2 | 1; + f2 = 0; + heap32[(r0+51)] = r2; + heap32[(r0+84)] = 0; +} + f3 = heapFloat[(r0+95)]; + f4 = heapFloat[(r0+94)]; + f5 = heapFloat[(r0+93)]; + f5 = f5*f0; + f4 = f4*f0; + heapFloat[(r0+89)] = f5; + f0 = f3*f0; + heapFloat[(r0+90)] = f4; + heapFloat[(r0+91)] = f0; + r1 = r1 >> 2; + heap32[(r0+92)] = 0; + f0 = heapFloat[(r1+2)]; + if(f0 !=f1) //_LBB676_5 +{ + f3 = 1; + f0 = f3/f0; +} +else{ + f0 = f1; +} + f3 = heapFloat[(r1+1)]; + if(f3 !=f1) //_LBB676_8 +{ + f1 = 1; + f3 = f1/f3; +} +else{ + f3 = 0; +} + f1 = heapFloat[(r1)]; + f4 = 0; + if(f1 !=f4) //_LBB676_11 +{ + f4 = 1; + f4 = f4/f1; +} + heapFloat[(r0+97)] = f4; + heapFloat[(r0+98)] = f3; + heapFloat[(r0+99)] = f0; + heap32[(r0+100)] = 0; + f0 = heapFloat[(r0+87)]; + f1 = heapFloat[(r0+86)]; + f3 = heapFloat[(r0+85)]; + f3 = f3*f2; + f1 = f1*f2; + heapFloat[(r0+138)] = f3; + f0 = f0*f2; + heapFloat[(r0+139)] = f1; + heapFloat[(r0+140)] = f0; + heap32[(r0+141)] = 0; + return; +} + +function _ZN11btRigidBody19updateInertiaTensorEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; + var f16; + var f17; + var f18; + var f19; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + f0 = heapFloat[(r0+1)]; + f1 = heapFloat[(r0+97)]; + f2 = heapFloat[(r0+2)]; + f3 = heapFloat[(r0+98)]; + f4 = f0*f1; + f5 = f2*f3; + f6 = heapFloat[(r0+3)]; + f7 = heapFloat[(r0+99)]; + f8 = heapFloat[(r0+5)]; + f9 = heapFloat[(r0+6)]; + f10 = f6*f7; + f11 = f0*f4; + f12 = f2*f5; + f13 = heapFloat[(r0+9)]; + f14 = heapFloat[(r0+10)]; + f15 = heapFloat[(r0+7)]; + f16 = heapFloat[(r0+11)]; + f17 = f8*f4; + f18 = f9*f5; + f11 = f11+f12; + f12 = f6*f10; + f4 = f13*f4; + f5 = f14*f5; + f17 = f17+f18; + f18 = f15*f10; + f11 = f11+f12; + f12 = f8*f1; + f19 = f9*f3; + f4 = f4+f5; + f5 = f16*f10; + f10 = f17+f18; + heapFloat[(r0+64)] = f11; + f11 = f15*f7; + f17 = f0*f12; + f18 = f2*f19; + f4 = f4+f5; + heapFloat[(r0+65)] = f10; + heapFloat[(r0+66)] = f4; + f4 = f8*f12; + f5 = f9*f19; + f10 = f17+f18; + f17 = f6*f11; + f12 = f13*f12; + f18 = f14*f19; + f4 = f4+f5; + f5 = f15*f11; + f10 = f10+f17; + heap32[(r0+67)] = 0; + f1 = f13*f1; + f3 = f14*f3; + f12 = f12+f18; + f11 = f16*f11; + f4 = f4+f5; + heapFloat[(r0+68)] = f10; + f5 = f16*f7; + f0 = f0*f1; + f2 = f2*f3; + f7 = f12+f11; + heapFloat[(r0+69)] = f4; + heapFloat[(r0+70)] = f7; + f4 = f8*f1; + f7 = f9*f3; + f0 = f0+f2; + f2 = f6*f5; + f1 = f13*f1; + f3 = f14*f3; + f4 = f4+f7; + f6 = f15*f5; + f0 = f0+f2; + heap32[(r0+71)] = 0; + f1 = f1+f3; + f2 = f16*f5; + f3 = f4+f6; + heapFloat[(r0+72)] = f0; + f0 = f1+f2; + heapFloat[(r0+73)] = f3; + heapFloat[(r0+74)] = f0; + heap32[(r0+75)] = 0; + return; +} + +function _ZN11btRigidBody18proceedToTransformERK11btTransform(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var r19; + var r20; + var r21; + var r22; + var r23; + var r24; + var r25; +var __label__ = 0; + i7 = sp + -48;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = heapU8[r0+204]; + r2 = r2 & 3; + if(r2 ==0) //_LBB678_2 +{ + r2 = r0 >> 2; + r24 = r1 >> 2; + heap32[(r2+17)] = heap32[(r24)]; + heap32[(r2+18)] = heap32[(r24+1)]; + heap32[(r2+19)] = heap32[(r24+2)]; + heap32[(r2+20)] = heap32[(r24+3)]; + heap32[(r2+21)] = heap32[(r24+4)]; + heap32[(r2+22)] = heap32[(r24+5)]; + heap32[(r2+23)] = heap32[(r24+6)]; + heap32[(r2+24)] = heap32[(r24+7)]; + heap32[(r2+25)] = heap32[(r24+8)]; + heap32[(r2+26)] = heap32[(r24+9)]; + heap32[(r2+27)] = heap32[(r24+10)]; + heap32[(r2+28)] = heap32[(r24+11)]; + heap32[(r2+29)] = heap32[(r24+12)]; + heap32[(r2+30)] = heap32[(r24+13)]; + r15 = (r1 + 4)|0; + r16 = (r1 + 8)|0; + r17 = (r1 + 12)|0; + r18 = (r1 + 16)|0; + r19 = (r1 + 20)|0; + r20 = (r1 + 24)|0; + r21 = (r1 + 28)|0; + r22 = (r1 + 32)|0; + r23 = (r1 + 36)|0; + r3 = (r1 + 40)|0; + heap32[(fp+-10)] = r3; + r3 = (r1 + 44)|0; + heap32[(fp+-4)] = r3; + r3 = (r1 + 48)|0; + heap32[(fp+-7)] = r3; + r3 = (r1 + 52)|0; + heap32[(fp+-6)] = r3; + r3 = (r1 + 56)|0; + heap32[(fp+-9)] = r3; + r3 = (r1 + 60)|0; + heap32[(fp+-8)] = r3; + r3 = (r0 + 4)|0; + r4 = (r0 + 8)|0; + r5 = (r0 + 12)|0; + r6 = (r0 + 16)|0; + r7 = (r0 + 20)|0; + r8 = (r0 + 24)|0; + r9 = (r0 + 28)|0; + r10 = (r0 + 32)|0; + r11 = (r0 + 36)|0; + r12 = (r0 + 40)|0; + r13 = (r0 + 44)|0; + r14 = (r0 + 48)|0; + r25 = (r0 + 52)|0; + heap32[(fp+-5)] = r25; + r25 = (r0 + 56)|0; + heap32[(fp+-3)] = r25; + r25 = (r0 + 60)|0; + heap32[(fp+-2)] = r25; + r25 = (r0 + 64)|0; + heap32[(fp+-1)] = r25; + heap32[(r2+31)] = heap32[(r24+14)]; + heap32[(r2+32)] = heap32[(r24+15)]; +} +else{ + r2 = r0 >> 2; + heap32[(r2+17)] = heap32[(r2+1)]; + heap32[(r2+18)] = heap32[(r2+2)]; + heap32[(r2+19)] = heap32[(r2+3)]; + heap32[(r2+20)] = heap32[(r2+4)]; + heap32[(r2+21)] = heap32[(r2+5)]; + heap32[(r2+22)] = heap32[(r2+6)]; + heap32[(r2+23)] = heap32[(r2+7)]; + heap32[(r2+24)] = heap32[(r2+8)]; + heap32[(r2+25)] = heap32[(r2+9)]; + heap32[(r2+26)] = heap32[(r2+10)]; + heap32[(r2+27)] = heap32[(r2+11)]; + heap32[(r2+28)] = heap32[(r2+12)]; + heap32[(r2+29)] = heap32[(r2+13)]; + heap32[(r2+30)] = heap32[(r2+14)]; + r3 = (r0 + 4)|0; + r4 = (r0 + 8)|0; + r5 = (r0 + 12)|0; + r6 = (r0 + 16)|0; + r7 = (r0 + 20)|0; + r8 = (r0 + 24)|0; + r9 = (r0 + 28)|0; + r10 = (r0 + 32)|0; + r11 = (r0 + 36)|0; + r12 = (r0 + 40)|0; + r13 = (r0 + 44)|0; + r14 = (r0 + 48)|0; + r15 = (r0 + 52)|0; + heap32[(fp+-5)] = r15; + r15 = (r0 + 56)|0; + heap32[(fp+-3)] = r15; + r15 = (r0 + 60)|0; + heap32[(fp+-2)] = r15; + r15 = (r0 + 64)|0; + heap32[(fp+-1)] = r15; + r15 = (r1 + 4)|0; + r16 = (r1 + 8)|0; + r17 = (r1 + 12)|0; + r18 = (r1 + 16)|0; + r19 = (r1 + 20)|0; + r20 = (r1 + 24)|0; + r21 = (r1 + 28)|0; + r22 = (r1 + 32)|0; + r23 = (r1 + 36)|0; + r24 = (r1 + 40)|0; + heap32[(fp+-10)] = r24; + r24 = (r1 + 44)|0; + heap32[(fp+-4)] = r24; + r24 = (r1 + 48)|0; + heap32[(fp+-7)] = r24; + r24 = (r1 + 52)|0; + heap32[(fp+-6)] = r24; + r24 = (r1 + 56)|0; + heap32[(fp+-9)] = r24; + r24 = (r1 + 60)|0; + heap32[(fp+-8)] = r24; + heap32[(r2+31)] = heap32[(r2+15)]; + heap32[(r2+32)] = heap32[(r2+16)]; +} + r2 = r0 >> 2; + heap32[(r2+33)] = heap32[(r2+76)]; + heap32[(r2+34)] = heap32[(r2+77)]; + heap32[(r2+35)] = heap32[(r2+78)]; + heap32[(r2+36)] = heap32[(r2+79)]; + heap32[(r2+37)] = heap32[(r2+80)]; + heap32[(r2+38)] = heap32[(r2+81)]; + heap32[(r2+39)] = heap32[(r2+82)]; + r3 = r3 >> 2; + r1 = r1 >> 2; + heap32[(r2+40)] = heap32[(r2+83)]; + r2 = r4 >> 2; + r4 = r15 >> 2; + heap32[(r3)] = heap32[(r1)]; + r1 = r5 >> 2; + r3 = r16 >> 2; + heap32[(r2)] = heap32[(r4)]; + r2 = r6 >> 2; + r4 = r17 >> 2; + heap32[(r1)] = heap32[(r3)]; + r1 = r7 >> 2; + r3 = r18 >> 2; + heap32[(r2)] = heap32[(r4)]; + r2 = r8 >> 2; + r4 = r19 >> 2; + heap32[(r1)] = heap32[(r3)]; + r1 = r9 >> 2; + r3 = r20 >> 2; + heap32[(r2)] = heap32[(r4)]; + r2 = r10 >> 2; + r4 = r21 >> 2; + heap32[(r1)] = heap32[(r3)]; + r1 = r11 >> 2; + r3 = r22 >> 2; + heap32[(r2)] = heap32[(r4)]; + r2 = r12 >> 2; + r4 = r23 >> 2; + heap32[(r1)] = heap32[(r3)]; + r1 = r13 >> 2; + r3 = heap32[(fp+-10)]; + r3 = r3 >> 2; + heap32[(r2)] = heap32[(r4)]; + r2 = r14 >> 2; + r4 = heap32[(fp+-4)]; + r4 = r4 >> 2; + heap32[(r1)] = heap32[(r3)]; + r1 = heap32[(fp+-5)]; + r1 = r1 >> 2; + r3 = heap32[(fp+-7)]; + r3 = r3 >> 2; + heap32[(r2)] = heap32[(r4)]; + r2 = heap32[(fp+-3)]; + r2 = r2 >> 2; + r4 = heap32[(fp+-6)]; + r4 = r4 >> 2; + heap32[(r1)] = heap32[(r3)]; + r1 = heap32[(fp+-2)]; + r1 = r1 >> 2; + r3 = heap32[(fp+-9)]; + r3 = r3 >> 2; + heap32[(r2)] = heap32[(r4)]; + r2 = heap32[(fp+-1)]; + r2 = r2 >> 2; + r4 = heap32[(fp+-8)]; + r4 = r4 >> 2; + heap32[(r1)] = heap32[(r3)]; + heap32[(r2)] = heap32[(r4)]; + heap32[(g0)] = r0; + _ZN11btRigidBody19updateInertiaTensorEv(i7); + return; +} + +function _ZNK11btRigidBody28calculateSerializeBufferSizeEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 480; + r_g0 = r0; + return; +} + +function _ZNK11btRigidBody21serializeSingleObjectEP12btSerializer(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = r0 >> 2; + r3 = r1 >> 2; + r4 = heap32[(r3)]; + r5 = heap32[(r2)]; + r4 = r4 >> 2; + r5 = r5 >> 2; + r4 = heap32[(r4+4)]; + r5 = heap32[(r5+4)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r5)>>2](i7); + heap32[(g0)] = r1; + heap32[(g0+1)] = r_g0; + heap32[(g0+2)] = 1; + __FUNCTION_TABLE__[(r4)>>2](i7); + r4 = r_g0; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r5 = r4 >> 2; + r2 = heap32[(r2+5)]; + r5 = heap32[(r5+2)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r1; + __FUNCTION_TABLE__[(r2)>>2](i7); + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+5)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r_g0; + heap32[(g0+3)] = 1497645650; + heap32[(g0+4)] = r0; + __FUNCTION_TABLE__[(r3)>>2](i7); + return; +} + +function _ZN11btRigidBody24checkCollideWithOverrideEP17btCollisionObject(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heapU8[r0+232]; + r1 = r1 & 2; +_1: do { + if(r1 !=0) //_LBB681_2 +{ + if(r0 ==0) //_LBB681_1 +{ +__label__ = 1; +} +else{ + r1 = heap32[(fp)]; + r1 = r1 >> 2; + r2 = heap32[(r1+120)]; + r3 = 0; +_4: while(true){ + if(r2 >r3) //_LBB681_4 +{ + r4 = heap32[(r1+122)]; + r5 = r3 << 2; + r4 = (r4 + r5)|0; + r4 = r4 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r5 = heap32[(r4+5)]; + if(r5 !=r0) //_LBB681_6 +{ + r4 = heap32[(r4+6)]; + if(r4 ==r0) //_LBB681_5 +{ +break _4; +} +else{ + r3 = (r3 + 1)|0; +} +} +else{ +break _4; +} +} +else{ +__label__ = 1; +break _1; +} +} + r0 = 0; +__label__ = 9; +} +} +else{ +__label__ = 1; +} +} while(0); +if (__label__ == 1){ + r0 = 1; +} + r0 = r0 & 255; + r_g0 = r0; + return; +} + +function _ZN11btRigidBody14setupRigidBodyERKNS_27btRigidBodyConstructionInfoE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; + var f12; + var f13; + var f14; + var f15; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + heap32[(r1+58)] = 2; + heap32[(r1+76)] = 0; + heap32[(r1+77)] = 0; + heap32[(r1+78)] = 0; + heap32[(r1+79)] = 0; + heap32[(r1+80)] = 0; + heap32[(r1+81)] = 0; + heap32[(r1+82)] = 0; + heap32[(r1+83)] = 0; + heap32[(r1+134)] = 1065353216; + heap32[(r1+135)] = 1065353216; + heap32[(r1+136)] = 1065353216; + heap32[(r1+137)] = 0; + heap32[(r1+85)] = 1065353216; + heap32[(r1+86)] = 1065353216; + heap32[(r1+87)] = 1065353216; + heap32[(r1+88)] = 0; + heap32[(r1+89)] = 0; + heap32[(r1+90)] = 0; + heap32[(r1+91)] = 0; + heap32[(r1+92)] = 0; + heap32[(r1+93)] = 0; + heap32[(r1+94)] = 0; + heap32[(r1+95)] = 0; + heap32[(r1+96)] = 0; + heap32[(r1+101)] = 0; + heap32[(r1+102)] = 0; + heap32[(r1+103)] = 0; + heap32[(r1+104)] = 0; + heap32[(r1+105)] = 0; + heap32[(r1+106)] = 0; + heap32[(r1+107)] = 0; + heap32[(r1+108)] = 0; + heap32[(r1+109)] = 0; + r2 = heap32[(fp+1)]; + heap32[(r1+110)] = 1056964608; + r3 = r2 >> 2; + heap32[(r1+116)] = heap32[(r3+27)]; + heap32[(r1+117)] = heap32[(r3+28)]; + r4 = heap32[(r3+1)]; + heap32[(r1+118)] = r4; + heap32[(r1+150)] = 0; + heap32[(r1+151)] = 0; + r5 = heapU8[r2+116]; + heap8[r0+444] = r5; + heap32[(r1+112)] = heap32[(r3+30)]; + heap32[(r1+113)] = heap32[(r3+31)]; + heap32[(r1+114)] = heap32[(r3+32)]; + heap32[(r1+115)] = heap32[(r3+33)]; + if(r4 ==0) //_LBB682_2 +{ + f0 = heapFloat[(r3+2)]; + heapFloat[(r1+1)] = f0; + f1 = heapFloat[(r3+3)]; + heapFloat[(r1+2)] = f1; + f2 = heapFloat[(r3+4)]; + heapFloat[(r1+3)] = f2; + f3 = heapFloat[(r3+5)]; + heapFloat[(r1+4)] = f3; + f4 = heapFloat[(r3+6)]; + heapFloat[(r1+5)] = f4; + f5 = heapFloat[(r3+7)]; + heapFloat[(r1+6)] = f5; + f6 = heapFloat[(r3+8)]; + heapFloat[(r1+7)] = f6; + f7 = heapFloat[(r3+9)]; + heapFloat[(r1+8)] = f7; + f8 = heapFloat[(r3+10)]; + heapFloat[(r1+9)] = f8; + f9 = heapFloat[(r3+11)]; + heapFloat[(r1+10)] = f9; + f10 = heapFloat[(r3+12)]; + heapFloat[(r1+11)] = f10; + f11 = heapFloat[(r3+13)]; + heapFloat[(r1+12)] = f11; + f12 = heapFloat[(r3+14)]; + heapFloat[(r1+13)] = f12; + f13 = heapFloat[(r3+15)]; + heapFloat[(r1+14)] = f13; + f14 = heapFloat[(r3+16)]; + heapFloat[(r1+15)] = f14; + f15 = heapFloat[(r3+17)]; + heapFloat[(r1+16)] = f15; +} +else{ + r5 = r4 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+2)]; + r6 = (r0 + 4)|0; + heap32[(g0)] = r4; + heap32[(g0+1)] = r6; + __FUNCTION_TABLE__[(r5)>>2](i7); + f0 = heapFloat[(r1+1)]; + f1 = heapFloat[(r1+2)]; + f2 = heapFloat[(r1+3)]; + f3 = heapFloat[(r1+4)]; + f4 = heapFloat[(r1+5)]; + f5 = heapFloat[(r1+6)]; + f6 = heapFloat[(r1+7)]; + f7 = heapFloat[(r1+8)]; + f8 = heapFloat[(r1+9)]; + f9 = heapFloat[(r1+10)]; + f10 = heapFloat[(r1+11)]; + f11 = heapFloat[(r1+12)]; + f12 = heapFloat[(r1+13)]; + f13 = heapFloat[(r1+14)]; + f14 = heapFloat[(r1+15)]; + f15 = heapFloat[(r1+16)]; +} + heapFloat[(r1+17)] = f0; + heapFloat[(r1+18)] = f1; + heapFloat[(r1+19)] = f2; + heapFloat[(r1+20)] = f3; + heapFloat[(r1+21)] = f4; + heapFloat[(r1+22)] = f5; + heapFloat[(r1+23)] = f6; + heapFloat[(r1+24)] = f7; + heapFloat[(r1+25)] = f8; + heapFloat[(r1+26)] = f9; + heapFloat[(r1+27)] = f10; + heapFloat[(r1+28)] = f11; + heapFloat[(r1+29)] = f12; + heapFloat[(r1+30)] = f13; + heapFloat[(r1+31)] = f14; + heapFloat[(r1+32)] = f15; + heap32[(r1+33)] = 0; + heap32[(r1+34)] = 0; + heap32[(r1+35)] = 0; + heap32[(r1+36)] = 0; + heap32[(r1+37)] = 0; + heap32[(r1+38)] = 0; + heap32[(r1+39)] = 0; + heap32[(r1+40)] = 0; + heap32[(r1+56)] = heap32[(r3+25)]; + heap32[(r1+57)] = heap32[(r3+26)]; + r4 = heap32[(r1)]; + r4 = r4 >> 2; + r4 = heap32[(r4+3)]; + r5 = heap32[(r3+18)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r5; + r5 = _ZL8uniqueId; + r5 = r5 >> 2; + __FUNCTION_TABLE__[(r4)>>2](i7); + r4 = heap32[(r5)]; + r6 = (r4 + 1)|0; + heap32[(r1+125)] = r4; + heap32[(r5)] = r6; + f0 = heapFloat[(r3)]; + r2 = (r2 + 76)|0; + heap32[(g0)] = r0; + heapFloat[(g0+1)] = f0; + heap32[(g0+2)] = r2; + _ZN11btRigidBody12setMassPropsEfRK9btVector3(i7); + f0 = heapFloat[(r3+23)]; + f1 = heapFloat[(r3+24)]; + f2 = 0; + if(f0 >=f2) //_LBB682_5 +{ + f3 = 1; + f0 = f0 > f3 ? f3 : f0; +} +else{ + f0 = f2; +} + heapFloat[(r1+109)] = f0; + if(f1 >=f2) //_LBB682_8 +{ + f0 = 1; + f1 = f1 > f0 ? f0 : f1; +} +else{ + f1 = 0; +} + heapFloat[(r1+110)] = f1; + heap32[(g0)] = r0; + _ZN11btRigidBody19updateInertiaTensorEv(i7); + heap32[(r1+124)] = 0; + heap32[(r1+126)] = 0; + heap32[(r1+127)] = 0; + heap32[(r1+128)] = 0; + heap32[(r1+129)] = 0; + heap32[(r1+130)] = 0; + heap32[(r1+131)] = 0; + heap32[(r1+132)] = 0; + heap32[(r1+133)] = 0; + f0 = heapFloat[(r1+87)]; + f1 = heapFloat[(r1+84)]; + f2 = heapFloat[(r1+86)]; + f3 = heapFloat[(r1+85)]; + f3 = f3*f1; + f2 = f2*f1; + heapFloat[(r1+138)] = f3; + f0 = f0*f1; + heapFloat[(r1+139)] = f2; + heapFloat[(r1+140)] = f0; + heap32[(r1+141)] = 0; + heap32[(r1+142)] = 0; + heap32[(r1+143)] = 0; + heap32[(r1+144)] = 0; + heap32[(r1+145)] = 0; + heap32[(r1+146)] = 0; + heap32[(r1+147)] = 0; + heap32[(r1+148)] = 0; + heap32[(r1+149)] = 0; + return; +} + +function _ZN11btRigidBodyD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV11btRigidBody; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+120)]; + if(r1 ==0) //_LBB683_2 +{ + r1 = heap32[(r2+122)]; +if(!(r1 ==0)) //_LBB683_6 +{ + r3 = heapU8[r0+492]; +if(!(r3 ==0)) //_LBB683_5 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+122)] = 0; +} + r1 = 1; + heap8[r0+492] = r1; + heap32[(r2+122)] = 0; + r1 = _ZTV17btCollisionObject; + heap32[(r2+120)] = 0; + r1 = (r1 + 8)|0; + heap32[(r2+121)] = 0; + heap32[(r2)] = r1; +if(!(r0 ==0)) //_LBB683_8 +{ + r0 = gNumAlignedFree; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + 1)|0; + heap32[(r0)] = r1; + r0 = heap32[(r2+-1)]; + heap32[(g0)] = r0; + free(i7); +} + return; +} +else{ + r0 = _2E_str248; + r2 = _2E_str34955; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = 175; + _assert(i7); +} +} + +function _ZN11btRigidBodyD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTV11btRigidBody; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + r1 = heap32[(r2+120)]; + if(r1 ==0) //_LBB684_2 +{ + r1 = heap32[(r2+122)]; +if(!(r1 ==0)) //_LBB684_6 +{ + r3 = heapU8[r0+492]; +if(!(r3 ==0)) //_LBB684_5 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r4 = (r4 + 1)|0; + r1 = r1 >> 2; + heap32[(r3)] = r4; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + free(i7); +} + heap32[(r2+122)] = 0; +} + r1 = 1; + heap8[r0+492] = r1; + heap32[(r2+122)] = 0; + r0 = _ZTV17btCollisionObject; + heap32[(r2+120)] = 0; + r0 = (r0 + 8)|0; + heap32[(r2+121)] = 0; + heap32[(r2)] = r0; + return; +} +else{ + r0 = _2E_str248; + r2 = _2E_str34955; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = 175; + _assert(i7); +} +} + +function _ZNK11btRigidBody9serializeEPvP12btSerializer(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r2; + r1 = r1 >> 2; + r2 = r0 >> 2; + _ZNK17btCollisionObject9serializeEPvP12btSerializer(i7); + heap32[(r1+62)] = heap32[(r2+64)]; + heap32[(r1+63)] = heap32[(r2+65)]; + heap32[(r1+64)] = heap32[(r2+66)]; + heap32[(r1+65)] = heap32[(r2+67)]; + heap32[(r1+66)] = heap32[(r2+68)]; + heap32[(r1+67)] = heap32[(r2+69)]; + heap32[(r1+68)] = heap32[(r2+70)]; + heap32[(r1+69)] = heap32[(r2+71)]; + heap32[(r1+70)] = heap32[(r2+72)]; + heap32[(r1+71)] = heap32[(r2+73)]; + heap32[(r1+72)] = heap32[(r2+74)]; + heap32[(r1+73)] = heap32[(r2+75)]; + heap32[(r1+74)] = heap32[(r2+76)]; + heap32[(r1+75)] = heap32[(r2+77)]; + heap32[(r1+76)] = heap32[(r2+78)]; + heap32[(r1+77)] = heap32[(r2+79)]; + heap32[(r1+78)] = heap32[(r2+80)]; + heap32[(r1+79)] = heap32[(r2+81)]; + heap32[(r1+80)] = heap32[(r2+82)]; + heap32[(r1+81)] = heap32[(r2+83)]; + heap32[(r1+110)] = heap32[(r2+84)]; + heap32[(r1+82)] = heap32[(r2+134)]; + heap32[(r1+83)] = heap32[(r2+135)]; + heap32[(r1+84)] = heap32[(r2+136)]; + heap32[(r1+85)] = heap32[(r2+137)]; + heap32[(r1+86)] = heap32[(r2+85)]; + heap32[(r1+87)] = heap32[(r2+86)]; + heap32[(r1+88)] = heap32[(r2+87)]; + heap32[(r1+89)] = heap32[(r2+88)]; + heap32[(r1+90)] = heap32[(r2+89)]; + heap32[(r1+91)] = heap32[(r2+90)]; + heap32[(r1+92)] = heap32[(r2+91)]; + heap32[(r1+93)] = heap32[(r2+92)]; + heap32[(r1+94)] = heap32[(r2+93)]; + heap32[(r1+95)] = heap32[(r2+94)]; + heap32[(r1+96)] = heap32[(r2+95)]; + heap32[(r1+97)] = heap32[(r2+96)]; + heap32[(r1+98)] = heap32[(r2+97)]; + heap32[(r1+99)] = heap32[(r2+98)]; + heap32[(r1+100)] = heap32[(r2+99)]; + heap32[(r1+101)] = heap32[(r2+100)]; + heap32[(r1+102)] = heap32[(r2+101)]; + heap32[(r1+103)] = heap32[(r2+102)]; + heap32[(r1+104)] = heap32[(r2+103)]; + heap32[(r1+105)] = heap32[(r2+104)]; + heap32[(r1+106)] = heap32[(r2+105)]; + heap32[(r1+107)] = heap32[(r2+106)]; + heap32[(r1+108)] = heap32[(r2+107)]; + heap32[(r1+109)] = heap32[(r2+108)]; + heap32[(r1+111)] = heap32[(r2+109)]; + heap32[(r1+112)] = heap32[(r2+110)]; + r0 = heapU8[r0+444]; + heap32[(r1+119)] = r0; + heap32[(r1+113)] = heap32[(r2+112)]; + heap32[(r1+114)] = heap32[(r2+113)]; + heap32[(r1+115)] = heap32[(r2+114)]; + heap32[(r1+116)] = heap32[(r2+115)]; + heap32[(r1+117)] = heap32[(r2+116)]; + heap32[(r1+118)] = heap32[(r2+117)]; + r0 = _2E_str4144; + r_g0 = r0; + return; +} + +function _ZN11btRigidBody16addConstraintRefEP17btTypedConstraint(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(fp+1)]; + r3 = heap32[(r1+120)]; + r4 = 0; +_1: while(true){ + if(r3 >r4) //_LBB686_1 +{ + r5 = heap32[(r1+122)]; + r6 = r4 << 2; + r5 = (r5 + r6)|0; + r5 = r5 >> 2; + r5 = heap32[(r5)]; + if(r5 !=r2) //_LBB686_3 +{ + r4 = (r4 + 1)|0; +continue _1; +} +else{ +__label__ = 5; +break _1; +} +} +else{ +__label__ = 4; +break _1; +} +} +if (__label__ == 4){ + r4 = r3; +} +if(!(r3 !=r4)) //_LBB686_27 +{ + r4 = heap32[(r1+121)]; + if(r4 ==r3) //_LBB686_9 +{ + r5 = 1; + r6 = r3 << 1; + r6 = r3 == 0 ? r5 : r6; +if(!(r4 >=r6)) //_LBB686_8 +{ + if(r6 !=0) //_LBB686_12 +{ + r4 = gNumAlignedAllocs; + r4 = r4 >> 2; + r7 = heap32[(r4)]; + r8 = r6 << 2; + r7 = (r7 + 1)|0; + r8 = r8 | 3; + heap32[(r4)] = r7; + r4 = (r8 + 16)|0; + heap32[(g0)] = r4; + malloc(i7); + r4 = r_g0; + if(r4 !=0) //_LBB686_14 +{ + r7 = 0; + r8 = (r4 + 4)|0; + r7 = (r7 - r8)|0; + r7 = r7 & 15; + r7 = (r4 + r7)|0; + r8 = (r7 + 4)|0; + r7 = r7 >> 2; + heap32[(r7)] = r4; + r4 = r8; +} +} +else{ + r4 = 0; +} +_18: do { + if(r3 <1) //_LBB686_17 +{ + r8 = heap32[(r1+122)]; +} +else{ + r7 = 0; +_21: while(true){ + r8 = heap32[(r1+122)]; + r9 = r7 << 2; + r10 = (r8 + r9)|0; + r10 = r10 >> 2; + r9 = (r4 + r9)|0; + r10 = heap32[(r10)]; + r7 = (r7 + 1)|0; + r9 = r9 >> 2; + heap32[(r9)] = r10; +if(!(r3 !=r7)) //_LBB686_18 +{ +break _18; +} +} +} +} while(0); + if(r8 !=0) //_LBB686_21 +{ + r7 = heapU8[r0+492]; + if(r7 !=0) //_LBB686_23 +{ + r3 = gNumAlignedFree; + r3 = r3 >> 2; + r7 = heap32[(r3)]; + r7 = (r7 + 1)|0; + r8 = r8 >> 2; + heap32[(r3)] = r7; + r3 = heap32[(r8+-1)]; + heap32[(g0)] = r3; + free(i7); + r3 = heap32[(r1+120)]; +} + heap32[(r1+122)] = 0; +} + heap8[r0+492] = r5; + heap32[(r1+122)] = r4; + heap32[(r1+121)] = r6; +} +} + r0 = r3 << 2; + r3 = heap32[(r1+122)]; + r0 = (r3 + r0)|0; + r0 = r0 >> 2; + heap32[(r0)] = r2; + r0 = heap32[(r1+120)]; + r0 = (r0 + 1)|0; + heap32[(r1+120)] = r0; +} + heap32[(r1+63)] = 1; + return; +} + +function _ZN11btRigidBody19integrateVelocitiesEf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; + var f9; + var f10; + var f11; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heapU8[r0+204]; + r1 = r1 & 3; +if(!(r1 !=0)) //_LBB687_3 +{ + f0 = heapFloat[(fp+1)]; + r0 = r0 >> 2; + f1 = heapFloat[(r0+84)]; + f1 = f1*f0; + f2 = heapFloat[(r0+101)]; + f3 = heapFloat[(r0+103)]; + f4 = heapFloat[(r0+102)]; + f5 = heapFloat[(r0+76)]; + f2 = f2*f1; + f2 = f5+f2; + heapFloat[(r0+76)] = f2; + f2 = f4*f1; + f4 = heapFloat[(r0+77)]; + f2 = f4+f2; + heapFloat[(r0+77)] = f2; + f1 = f3*f1; + f2 = heapFloat[(r0+78)]; + f1 = f2+f1; + heapFloat[(r0+78)] = f1; + f1 = heapFloat[(r0+105)]; + f2 = heapFloat[(r0+64)]; + f3 = heapFloat[(r0+106)]; + f4 = heapFloat[(r0+65)]; + f2 = f2*f1; + f4 = f4*f3; + f5 = heapFloat[(r0+107)]; + f6 = heapFloat[(r0+66)]; + f2 = f2+f4; + f4 = f6*f5; + f2 = f2+f4; + f4 = heapFloat[(r0+68)]; + f6 = heapFloat[(r0+69)]; + f7 = heapFloat[(r0+72)]; + f8 = heapFloat[(r0+73)]; + f9 = heapFloat[(r0+74)]; + f10 = heapFloat[(r0+70)]; + f11 = heapFloat[(r0+80)]; + f2 = f2*f0; + f4 = f4*f1; + f6 = f6*f3; + f2 = f11+f2; + f4 = f4+f6; + f6 = f10*f5; + f4 = f4+f6; + heapFloat[(r0+80)] = f2; + f1 = f7*f1; + f3 = f8*f3; + f4 = f4*f0; + f6 = heapFloat[(r0+81)]; + f4 = f6+f4; + f1 = f1+f3; + f3 = f9*f5; + f1 = f1+f3; + heapFloat[(r0+81)] = f4; + f1 = f1*f0; + f3 = heapFloat[(r0+82)]; + f1 = f3+f1; + f2 = f2*f2; + f3 = f4*f4; + heapFloat[(r0+82)] = f1; + f2 = f2+f3; + f1 = f1*f1; + f1 = f2+f1; + heapFloat[(g0)] = f1; + sqrtf(i7); + f1 = f_g0; + f2 = f1*f0; + f3 = 1.5707963705062866; +if(!(f2 <=f3)) //_LBB687_3 +{ + f0 = f3/f0; + f0 = f0/f1; + f1 = heapFloat[(r0+80)]; + f1 = f1*f0; + heapFloat[(r0+80)] = f1; + f1 = heapFloat[(r0+81)]; + f1 = f1*f0; + heapFloat[(r0+81)] = f1; + f1 = heapFloat[(r0+82)]; + f0 = f1*f0; + heapFloat[(r0+82)] = f0; +} +} + return; +} + +function _ZN11btRigidBody12applyDampingEf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var f0; + var f1; + var f2; + var f3; + var f4; + var f5; + var f6; + var f7; + var f8; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + f0 = heapFloat[(r1+109)]; + f1 = 1; + f2 = heapFloat[(fp+1)]; + f0 = f1-f0; + heapFloat[(g0)] = f0; + heapFloat[(g0+1)] = f2; + powf(i7); + f3 = heapFloat[(r1+76)]; + f3 = f3*f_g0; + heapFloat[(r1+76)] = f3; + f3 = heapFloat[(r1+77)]; + f3 = f3*f_g0; + heapFloat[(r1+77)] = f3; + f3 = heapFloat[(r1+78)]; + f0 = f3*f_g0; + heapFloat[(r1+78)] = f0; + f0 = heapFloat[(r1+110)]; + f0 = f1-f0; + heapFloat[(g0)] = f0; + heapFloat[(g0+1)] = f2; + powf(i7); + f2 = heapFloat[(r1+80)]; + f2 = f2*f_g0; + heapFloat[(r1+80)] = f2; + f3 = heapFloat[(r1+81)]; + f3 = f3*f_g0; + heapFloat[(r1+81)] = f3; + f4 = heapFloat[(r1+82)]; + f0 = f4*f_g0; + heapFloat[(r1+82)] = f0; + r0 = heapU8[r0+444]; +if(!(r0 ==0)) //_LBB688_14 +{ + f4 = f2*f2; + f5 = f3*f3; + f6 = heapFloat[(r1+76)]; + f4 = f4+f5; + f5 = f0*f0; + f4 = f4+f5; + f5 = heapFloat[(r1+114)]; + if(f4 >2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = _ZL13gProfileClock_2E_0; + heap32[(g0)] = 8; + r0 = r0 >> 2; + _Znwj(i7); + heap32[(r0)] = r_g0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = 0; + r0 = _ZN15CProfileManager4RootE; + r1 = r0 >> 2; + r2 = _2E_str729; + gettimeofday(i7); + heap32[(r1)] = r2; + heap32[(r1+1)] = 0; + heap32[(r1+2)] = 0; + heap32[(r1+3)] = 0; + heap32[(r1+4)] = 0; + heap32[(r1+5)] = 0; + heap32[(r1+6)] = 0; + heap32[(r1+7)] = 0; + heap32[(g0)] = r0; + _ZN12CProfileNode5ResetEv(i7); + return; +} + +function _GLOBAL__D__ZN7btClockC2Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = _ZN15CProfileManager4RootE; + r1 = _ZL13gProfileClock_2E_0; + heap32[(g0)] = r0; + r0 = r1 >> 2; + _ZN12CProfileNodeD1Ev(i7); + r0 = heap32[(r0)]; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN12CProfileNode5ResetEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; +_1: while(true){ + r0 = r0 >> 2; + heap32[(r0+1)] = 0; + heap32[(r0+2)] = 0; + r1 = heap32[(r0+6)]; +if(!(r1 ==0)) //_LBB691_3 +{ + heap32[(g0)] = r1; + _ZN12CProfileNode5ResetEv(i7); +} + r0 = heap32[(r0+7)]; + if(r0 !=0) //_LBB691_1 +{ +continue _1; +} +else{ +break _1; +} +} + return; +} + +function _ZN12CProfileNodeD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+6)]; +if(!(r1 ==0)) //_LBB692_2 +{ + heap32[(g0)] = r1; + _ZN12CProfileNodeD1Ev(i7); + heap32[(g0)] = r1; + _ZdlPv(i7); +} + r0 = heap32[(r0+7)]; +if(!(r0 ==0)) //_LBB692_4 +{ + heap32[(g0)] = r0; + _ZN12CProfileNodeD1Ev(i7); + heap32[(g0)] = r0; + _ZdlPv(i7); +} + return; +} + +function _ZN15CProfileManager13Start_ProfileEPKc(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = _ZN15CProfileManager11CurrentNodeE; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = heap32[(fp)]; + r3 = r1 >> 2; + r4 = heap32[(r3)]; + if(r4 !=r2) //_LBB693_2 +{ + r4 = (r1 + 24)|0; +_3: while(true){ + r4 = r4 >> 2; + r4 = heap32[(r4)]; + if(r4 !=0) //_LBB693_3 +{ + r5 = r4 >> 2; + r5 = heap32[(r5)]; + if(r5 !=r2) //_LBB693_5 +{ + r4 = (r4 + 28)|0; +} +else{ +__label__ = 3; +break _3; +} +} +else{ +__label__ = 6; +break _3; +} +} +switch(__label__ ){//multiple entries +case 6: + heap32[(g0)] = 32; + _Znwj(i7); + r4 = r_g0; + r5 = r4 >> 2; + heap32[(r5)] = r2; + heap32[(r5+1)] = 0; + heap32[(r5+2)] = 0; + heap32[(r5+3)] = 0; + heap32[(r5+4)] = 0; + heap32[(r5+5)] = r1; + heap32[(r5+6)] = 0; + heap32[(r5+7)] = 0; + heap32[(g0)] = r4; + _ZN12CProfileNode5ResetEv(i7); + r1 = heap32[(r3+6)]; + heap32[(r5+7)] = r1; + heap32[(r3+6)] = r4; + r1 = r4; +break; +case 3: + r1 = r4; +break; +} + heap32[(r0)] = r1; +} + r0 = r1 >> 2; + r1 = heap32[(r0+1)]; + r1 = (r1 + 1)|0; + heap32[(r0+1)] = r1; + r1 = heap32[(r0+4)]; + r2 = (r1 + 1)|0; + heap32[(r0+4)] = r2; +if(!(r1 !=0)) //_LBB693_11 +{ + r1 = sp + -8; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + r2 = _ZL13gProfileClock_2E_0; + gettimeofday(i7); + r2 = r2 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r1 = r1 >> 2; + r3 = heap32[(fp+-2)]; + r4 = heap32[(r2)]; + r3 = (r3 - r4)|0; + r1 = heap32[(r1+1)]; + r2 = heap32[(r2+1)]; + r1 = (r1 - r2)|0; + r2 = (r3 * 1000000)|0; + r1 = (r1 + r2)|0; + heap32[(r0+3)] = r1; +} + return; +} + +function _ZN15CProfileManager5ResetEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = _ZL13gProfileClock_2E_0; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + gettimeofday(i7); + r1 = _ZN15CProfileManager4RootE; + heap32[(g0)] = r1; + r1 = r1 >> 2; + _ZN12CProfileNode5ResetEv(i7); + r2 = heap32[(r1+1)]; + r2 = (r2 + 1)|0; + heap32[(r1+1)] = r2; + r2 = heap32[(r1+4)]; + r3 = (r2 + 1)|0; + heap32[(r1+4)] = r3; +if(!(r2 !=0)) //_LBB694_2 +{ + r2 = sp + -16; + heap32[(g0)] = r2; + heap32[(g0+1)] = 0; + gettimeofday(i7); + r0 = heap32[(r0)]; + r0 = r0 >> 2; + r2 = r2 >> 2; + r3 = heap32[(fp+-4)]; + r4 = heap32[(r0)]; + r3 = (r3 - r4)|0; + r2 = heap32[(r2+1)]; + r0 = heap32[(r0+1)]; + r0 = (r2 - r0)|0; + r2 = (r3 * 1000000)|0; + r0 = (r0 + r2)|0; + heap32[(r1+3)] = r0; +} + r0 = _ZN15CProfileManager12FrameCounterE; + r0 = r0 >> 2; + heap32[(r0)] = 0; + r0 = sp + -8; + heap32[(g0)] = r0; + heap32[(g0+1)] = 0; + gettimeofday(i7); + return; +} + +function _GLOBAL__I__ZN4__rw9__catfindEPNS_8__rw_catE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = _ZN4__rwL12__rw_catlistE_2E_0; + r1 = _ZN4__rwL12__rw_catlistE_2E_1; + r0 = r0 >> 2; + r2 = _ZN4__rwL12__rw_catlistE_2E_2; + r1 = r1 >> 2; + heap32[(r0)] = 0; + r2 = r2 >> 2; + heap32[(r1)] = 0; + heap32[(r2)] = 0; + heap32[(g0)] = 136; + _Znwj(i7); + r3 = r_g0; +if(!(r3 !=0)) //_LBB695_3 +{ + heap32[(g0)] = 3; + _ZN4__rw10__rw_throwEiz(i7); +} + r4 = (r3 + 136)|0; + heap32[(g0)] = 0; + _ZdlPv(i7); + r5 = heap32[(r0)]; + if(r5 ==0) //_LBB695_6 +{ + r8 = r3; +} +else{ + r6 = r5; + r7 = r3; +_9: while(true){ + r9 = r6 >> 2; + r6 = (r6 + 4)|0; + r8 = (r7 + 4)|0; + r7 = r7 >> 2; + r9 = heap32[(r9)]; + heap32[(r7)] = r9; + r7 = r8; + if(r6 !=0) //_LBB695_7 +{ +continue _9; +} +else{ +break _9; +} +} +} + r6 = 0; +_12: while(true){ + r7 = r6 << 2; + r7 = (r8 + r7)|0; + r6 = (r6 + 1)|0; + r7 = r7 >> 2; + heap32[(r7)] = 0; + if(r6 !=2) //_LBB695_9 +{ +continue _12; +} +else{ +break _12; +} +} + r6 = heap32[(r1)]; + if(r6 ==0) //_LBB695_12 +{ + r6 = (r8 + 8)|0; + heap32[(r0)] = r3; + heap32[(r1)] = r6; + heap32[(r2)] = r4; + heap32[(g0)] = r5; + _ZdlPv(i7); + return; +} +else{ + abort(i7); +} +} + +function _GLOBAL__D__ZN4__rw9__catfindEPNS_8__rw_catE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = _ZN4__rwL12__rw_catlistE_2E_0; + r1 = _ZN4__rwL12__rw_catlistE_2E_1; + r0 = r0 >> 2; + r1 = r1 >> 2; + r0 = heap32[(r0)]; + r2 = heap32[(r1)]; + r3 = (r2 - r0)|0; + r3 = r3 >> 2; +if(!(r3 ==0)) //_LBB696_2 +{ + r3 = r3 << 2; + r2 = (r2 - r3)|0; + heap32[(r1)] = r2; +} + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN4__rwL13__rw_vfmtwhatEPcjPKcS0_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; +var __label__ = 0; + i7 = sp + -48;var g0 = i7>>2; // save stack + r0 = _ZN4__rwL16__rw_what_refcntE; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = heap32[(fp)]; + r3 = heap32[(fp+1)]; + r4 = (r1 + 1)|0; + heap32[(r0)] = r4; + if(r1 !=0) //_LBB697_2 +{ + heap32[(g0)] = 256; + _Znaj(i7); + r1 = r_g0; + r4 = heap32[(r0)]; + r4 = (r4 + -1)|0; + heap32[(r0)] = r4; +} +else{ + r1 = _ZN4__rwL13__rw_what_bufE; +} + r4 = 256; + r12 = swrite__index__; +_5: while(true){ + r5 = sp + -16; + heap32[(fp+-8)] = r3; + r6 = r5 >> 2; + heap32[(fp+-7)] = r3; + r7 = (r4 + -1)|0; + r8 = 0; + heap32[(r6+1)] = 0; + r9 = sp + -24; + r10 = r4 == 0 ? r8 : r7; + heap32[(fp+-4)] = r1; + r11 = r9 >> 2; + heap32[(r6+2)] = r10; + heap32[(r11+1)] = r12; + heap32[(fp+-6)] = r5; + heap32[(g0)] = r9; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r3; + __v_printf(i7); + r5 = r_g0; +_7: do { +if(!(r1 ==0)) //_LBB697_11 +{ +if(!(r4 ==0)) //_LBB697_11 +{ +if(!(r5 <0)) //_LBB697_11 +{ +if(!(r4 ==-1)) //_LBB697_10 +{ +if(!(uint(r5) r5 ? r5 : r8; + if(r5 !=0) //_LBB697_13 +{ + if(r4 >r5) //_LBB697_20 +{ +break _5; +} +else{ + r4 = (r5 + 1)|0; +} +} +else{ + r4 = r4 << 1; +} + r5 = _ZN4__rwL13__rw_what_bufE; + if(r1 !=r5) //_LBB697_17 +{ +if(!(r1 ==0)) //_LBB697_19 +{ + heap32[(g0)] = r1; + _ZdaPv(i7); +} +} +else{ + r1 = heap32[(r0)]; + r1 = (r1 + -1)|0; + heap32[(r0)] = r1; +} + heap32[(g0)] = r4; + _Znaj(i7); + r1 = r_g0; +continue _5; +} + r_g0 = r1; + return; +} + +function _ZN4__rw10__rw_throwEiz(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; +var __label__ = 0; + i7 = sp + -64;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + if(r0 >4) //_LBB698_9 +{ + r1 = (sp + 4)|0; + heap32[(fp+-7)] = r1; + r2 = _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E7__fname; + heap32[(fp+-9)] = r1; + r2 = r2 >> 2; + heap32[(fp+-8)] = r1; + r3 = heap32[(r2)]; +if(!(r3 !=0)) //_LBB698_41 +{ + r3 = _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E6buffer; + r4 = 0; +_5: while(true){ + r5 = heapU8[r3]; + r4 = r5 == 58 ? r3 : r4; + if(r5 !=0) //_LBB698_13 +{ + r5 = (r3 + 1)|0; + r6 = heapU8[r3+1]; + r4 = r6 == 58 ? r5 : r4; + if(r6 !=0) //_LBB698_15 +{ + r5 = (r3 + 2)|0; + r6 = heapU8[r3+2]; + r4 = r6 == 58 ? r5 : r4; + if(r6 !=0) //_LBB698_17 +{ + r5 = (r3 + 3)|0; + r6 = heapU8[r3+3]; + r4 = r6 == 58 ? r5 : r4; + if(r6 !=0) //_LBB698_19 +{ + r3 = (r3 + 4)|0; +} +else{ +break _5; +} +} +else{ +break _5; +} +} +else{ +break _5; +} +} +else{ +break _5; +} +} +_12: do { +if(!(r4 ==0)) //_LBB698_24 +{ + r3 = 0; + heap8[r4] = r3; + r3 = _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E8__catset; + r4 = (r4 + 1)|0; + heap32[(g0)] = r4; + heap32[(g0+1)] = r3; + sscanf(i7); + r4 = r_g0; + r3 = r3 >> 2; +if(!(r4 !=1)) //_LBB698_23 +{ + r4 = heap32[(r3)]; + if(r4 >0) //_LBB698_24 +{ +break _12; +} +} + heap32[(r3)] = 1; +} +} while(0); + r3 = _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E4msgs; + r4 = r3 >> 2; + heap32[(r4+1)] = 0; + heap32[(r4+2)] = 0; + heap32[(r4+3)] = 0; + heap32[(r4+4)] = 0; + heap32[(r4+5)] = 0; + r5 = _ZTVSt8messagesIcE; + heap32[(r4+6)] = 0; + r5 = (r5 + 8)|0; + heap32[(r4+7)] = 0; + r6 = _ZN4__rwL22__rw_classic_once_initE_2E_0_2E_b; + heap32[(r4)] = r5; + r5 = heapU8[r6]; +if(!(r5 != 0)) //_LBB698_29 +{ + _ZN4__rw11__rw_locale11_C_get_bodyEPS0_S1_PKciPKNS_10__rw_facetE(i7); + r5 = r_g0; + r7 = _ZN4__rwL12__rw_classicE; + r7 = r7 >> 2; + heap32[(r7)] = r5; +if(!(r5 !=0)) //_LBB698_28 +{ + r5 = _2E_str12102177; + r7 = _2E_str10100175; + r8 = _2E_str538; + heap32[(g0)] = 19; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r7; + heap32[(g0+3)] = r8; + _ZN4__rw10__rw_throwEiz(i7); +} + r5 = 1; + heap8[r6] = r5; +} + r5 = _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E6buffer; + r6 = heapU8[r5]; + if(r6 ==0) //_LBB698_31 +{ + r6 = _ZNSs11_C_null_refE; + r7 = 0; + r6 = (r6 + 12)|0; +} +else{ + r6 = 0; +_28: while(true){ + r7 = (r5 - r6)|0; + r6 = (r6 + -1)|0; + r7 = heapU8[r7+1]; +if(!(r7 !=0)) //_LBB698_32 +{ +break _28; +} +} + r7 = 0; + r7 = (r7 - r6)|0; + if(r6 !=0) //_LBB698_35 +{ + r6 = 32; + r6 = uint(r7) > uint(r6) ? r7 : r6; + heap32[(g0)] = r6; + heap32[(g0+1)] = r7; + _ZNSs10_C_get_repEjj(i7); + r6 = (r_g0 + 12)|0; +} +else{ + r6 = _ZNSs11_C_null_refE; + r6 = (r6 + 12)|0; +} +} + heap32[(fp+-4)] = r6; + heap32[(g0)] = r6; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r7; + memcpy(i7); + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+2)]; + r6 = sp + -16; + r7 = _ZN4__rwL12__rw_classicE; + heap32[(g0)] = r3; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r7; + __FUNCTION_TABLE__[(r4)>>2](i7); + r3 = r_g0; + r4 = _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E5__cat; + r4 = r4 >> 2; + heap32[(r4)] = r3; + r3 = heap32[(fp+-4)]; + r3 = (r3 + -12)|0; + r4 = _ZNSs11_C_null_refE; +if(!(r3 ==r4)) //_LBB698_40 +{ + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r6 = (r4 + -1)|0; + heap32[(r3)] = r6; +if(!(r4 >0)) //_LBB698_40 +{ + r3 = heap32[(fp+-4)]; + r3 = (r3 + -12)|0; + heap32[(g0)] = r3; + _ZdlPv(i7); +} +} + heap32[(fp+-4)] = 0; + heap32[(r2)] = r5; +} + r2 = _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E5__cat; + r2 = r2 >> 2; + r2 = heap32[(r2)]; + if(r2 !=-1) //_LBB698_43 +{ + r3 = _ZNSs11_C_null_refE; + r4 = _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E4msgs; + r5 = (r3 + 12)|0; + r6 = r4 >> 2; + heap32[(fp+-2)] = r5; + r5 = _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E8__catset; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r5 = r5 >> 2; + r6 = heap32[(r6+3)]; + r5 = heap32[(r5)]; + r7 = sp + -24; + r8 = sp + -8; + heap32[(g0)] = r7; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r5; + heap32[(g0+4)] = r0; + heap32[(g0+5)] = r8; + __FUNCTION_TABLE__[(r6)>>2](i7); + r2 = heap32[(fp+-2)]; + r2 = (r2 + -12)|0; +if(!(r2 ==r3)) //_LBB698_47 +{ + r2 = r2 >> 2; + r4 = heap32[(r2)]; + r5 = (r4 + -1)|0; + heap32[(r2)] = r5; +if(!(r4 >0)) //_LBB698_47 +{ + r2 = heap32[(fp+-2)]; + r2 = (r2 + -12)|0; + heap32[(g0)] = r2; + _ZdlPv(i7); +} +} + heap32[(fp+-2)] = 0; + r2 = heap32[(fp+-6)]; + r4 = r2 >> 2; + r4 = heap32[(r4+-1)]; + if(r4 !=0) //_LBB698_49 +{ + heap32[(g0)] = r2; + heap32[(g0+1)] = r1; + _ZN4__rwL13__rw_vfmtwhatEPcjPKcS0_(i7); + r1 = r_g0; + r2 = heap32[(fp+-6)]; +} +else{ + r1 = 0; +} + r2 = (r2 + -12)|0; +if(!(r2 ==r3)) //_LBB698_54 +{ + r2 = r2 >> 2; + r3 = heap32[(r2)]; + r4 = (r3 + -1)|0; + heap32[(r2)] = r4; +if(!(r3 >0)) //_LBB698_54 +{ + r2 = heap32[(fp+-6)]; + r2 = (r2 + -12)|0; + heap32[(g0)] = r2; + _ZdlPv(i7); +} +} + heap32[(fp+-6)] = 0; + if(r1 ==0) //_LBB698_56 +{ +__label__ = 50; +} +else{ +__label__ = 51; +} +} +else{ +__label__ = 50; +} +if (__label__ == 50){ + r1 = 24; + r2 = 0; + r0 = uint(r0) > uint(r1) ? r2 : r0; + r1 = _ZZN4__rw10__rw_throwEizE6errors; + r2 = r0 << 2; + r1 = (r1 + r2)|0; + r1 = r1 >> 2; + r2 = heap32[(fp+-7)]; + r1 = heap32[(r1)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r2; + _ZN4__rwL13__rw_vfmtwhatEPcjPKcS0_(i7); + r1 = r_g0; + if(r1 ==0) //_LBB698_60 +{ + if(r0 ==2) //_LBB698_65 +{ + r0 = _2E_str47; +} +else{ + if(r0 ==1) //_LBB698_64 +{ + r0 = _2E_str15132; +} +else{ + if(r0 !=0) //_LBB698_66 +{ + r0 = _2E_str5134; +} +else{ + r0 = _2E_str4131; +} +} +} + heap32[(g0)] = r0; + fprintf(i7); +__label__ = 62; +} +else{ +__label__ = 51; +} +} +if (__label__ == 51){ + heap32[(g0)] = r1; + r0 = _ZN4__rwL13__rw_what_bufE; + fprintf(i7); + if(r1 !=r0) //_LBB698_59 +{ + heap32[(g0)] = r1; + _ZdaPv(i7); +} +else{ + r0 = _ZN4__rwL16__rw_what_refcntE; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r1 = (r1 + -1)|0; + heap32[(r0)] = r1; +} +} + abort(i7); +} +else{ + if(r0 ==2) //_LBB698_6 +{ + r0 = _2E_str47; +} +else{ + if(r0 ==1) //_LBB698_5 +{ + r0 = _2E_str15132; +} +else{ + if(r0 !=0) //_LBB698_7 +{ + r0 = _2E_str5134; +} +else{ + r0 = _2E_str4131; +} +} +} + heap32[(g0)] = r0; + fprintf(i7); + abort(i7); +} +} + +function _ZN4__rw10__rw_facetD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN4__rw10__rw_facetE; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + heap32[(r0+5)] = -1; + r1 = heap32[(r0+1)]; + r2 = heap32[(r0+2)]; +if(!(r1 ==r2)) //_LBB699_3 +{ +if(!(r1 ==0)) //_LBB699_3 +{ + heap32[(g0)] = r1; + _ZdaPv(i7); +} +} + r1 = _ZZN4__rw10__rw_facetD4EvE9destroyed; + heap32[(r0+1)] = r1; + r1 = heap32[(r0+4)]; +if(!(r1 !=-1)) //_LBB699_5 +{ + r0 = heap32[(r0+3)]; + heap32[(g0)] = r0; + _ZdlPv(i7); +} + return; +} + +function _ZN4__rw10__rw_facetD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN4__rw10__rw_facetE; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(r2+5)] = -1; + r1 = heap32[(r2+1)]; + r3 = heap32[(r2+2)]; +if(!(r1 ==r3)) //_LBB700_3 +{ +if(!(r1 ==0)) //_LBB700_3 +{ + heap32[(g0)] = r1; + _ZdaPv(i7); +} +} + r1 = _ZZN4__rw10__rw_facetD4EvE9destroyed; + heap32[(r2+1)] = r1; + r1 = heap32[(r2+4)]; +if(!(r1 !=-1)) //_LBB700_5 +{ + r1 = heap32[(r2+3)]; + heap32[(g0)] = r1; + _ZdlPv(i7); +} + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_E(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = _ZZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_EE12n_std_facets; + r1 = _ZZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_EE10std_facets; + r0 = r0 >> 2; + r1 = r1 >> 2; + r2 = heap32[(fp)]; + r3 = heap32[(r0)]; + r4 = heap32[(r1)]; +_1: do { + if(r2 ==0) //_LBB701_24 +{ + r5 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r6 = heap32[(fp+3)]; + r7 = _2E_str538; + r8 = r2 == 0 ? r7 : r2; + r9 = r3; +_3: while(true){ + r10 = r9; + if(r10 ==0) //_LBB701_34 +{ +__label__ = 34; +break _3; +} +else{ + r9 = r10 << 1; + r11 = r9 & -4; + r12 = (r4 + r11)|0; + r9 = r12 >> 2; + r13 = heap32[(r9)]; + r14 = r13 >> 2; + r15 = heap32[(r14+5)]; + r9 = r10 >>> 1; + if(r15 !=r5) //_LBB701_27 +{ + r15 = (r15 - r5)|0; +} +else{ + r15 = heap32[(r14+1)]; + r15 = r15 == 0 ? r7 : r15; + heap32[(g0)] = r8; + heap32[(g0+1)] = r15; + strcmp(i7); + r15 = r_g0; +} + if(r15 <0) //_LBB701_31 +{ +__label__ = 31; +} +else{ + if(r15 <1) //_LBB701_32 +{ +__label__ = 32; +break _3; +} +else{ + r4 = (r11 + r4)|0; + r10 = (r10 + -1)|0; + r4 = (r4 + 4)|0; + r9 = (r10 - r9)|0; +} +} +} +} +if (__label__ == 32){ +if(!(r12 ==0)) //_LBB701_34 +{ + r2 = heap32[(r14+6)]; + r2 = (r2 + 1)|0; + heap32[(r14+6)] = r2; + r_g0 = r13; + return; +} +} + r4 = _ZZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_EE17std_facet_bufsize; + r4 = r4 >> 2; + r7 = heap32[(r4)]; +if(!(r3 !=r7)) //_LBB701_39 +{ + r3 = r3 << 3; + heap32[(g0)] = r3; + _Znaj(i7); + r3 = r_g0; + r7 = heap32[(r1)]; + r8 = heap32[(r0)]; + r8 = r8 << 2; + heap32[(g0)] = r3; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r8; + memcpy(i7); + r8 = _ZZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_EE13std_facet_buf; +if(!(r7 ==r8)) //_LBB701_38 +{ +if(!(r7 ==0)) //_LBB701_38 +{ + heap32[(g0)] = r7; + _ZdaPv(i7); +} +} + heap32[(r1)] = r3; + r3 = heap32[(r4)]; + r3 = r3 << 1; + heap32[(r4)] = r3; +} + r3 = r5 & 1; + r4 = 0; + r2 = r3 == 0 ? r2 : r4; + heap32[(g0)] = 1; + heap32[(g0+1)] = r2; + __FUNCTION_TABLE__[(r6)>>2](i7); + r2 = r_g0; + r3 = (r5 + 1)|0; + r4 = r3 >>> 31; + r6 = r2 >> 2; + r3 = (r3 + r4)|0; + r4 = heap32[(r6+7)]; + r4 = r4 >> 2; + r3 = r3 >> 1; + heap32[(r4)] = r3; + r3 = heap32[(r6+5)]; +if(!(r3 ==r5)) //_LBB701_41 +{ + r3 = r2 >> 2; + heap32[(r3+5)] = r5; +} + r3 = r2 >> 2; + r4 = heap32[(r3+6)]; +if(!(r4 ==1)) //_LBB701_43 +{ + heap32[(r3+6)] = 1; +} + r3 = heap32[(r0)]; + r1 = heap32[(r1)]; + r4 = r3 << 2; + r4 = (r1 + r4)|0; + r4 = r4 >> 2; + r5 = (r3 + 1)|0; + heap32[(r4)] = r2; + heap32[(r0)] = r5; + r0 = (r3 + -1)|0; + if(uint(r0) > 2; + r5 = heap32[(r5)]; + r10 = r2 >> 2; + r11 = r5 >> 2; + r12 = heap32[(r10+5)]; + r13 = heap32[(r11+5)]; + r5 = r7 >>> 1; + if(r12 !=r13) //_LBB701_4 +{ + r12 = (r13 - r12)|0; +} +else{ + r12 = heap32[(r11+1)]; + r13 = heap32[(r10+1)]; + r10 = _2E_str538; + r13 = r13 == 0 ? r10 : r13; + r12 = r12 == 0 ? r10 : r12; + heap32[(g0)] = r13; + heap32[(g0+1)] = r12; + strcmp(i7); + r12 = r_g0; +} + if(r12 <0) //_LBB701_8 +{ +__label__ = 8; +} +else{ + if(r12 <1) //_LBB701_9 +{ +__label__ = 9; +break _31; +} +else{ + r6 = (r8 + r6)|0; + r7 = (r7 + -1)|0; + r6 = (r6 + 4)|0; + r5 = (r7 - r5)|0; +} +} +} +} +if (__label__ == 9){ +if(!(r9 ==0)) //_LBB701_23 +{ + r2 = (r9 - r4)|0; + r5 = r2 & -4; + r6 = (r4 + r5)|0; + r6 = r6 >> 2; + r6 = heap32[(r6)]; + r7 = r6 >> 2; + r8 = heap32[(r7+6)]; + r8 = (r8 + -1)|0; + heap32[(r7+6)] = r8; + if(r8 ==0) //_LBB701_12 +{ + r2 = r2 >> 2; + r8 = (r3 + -1)|0; + heap32[(r0)] = r8; + if(uint(r8) >uint(207)) //_LBB701_17 +{ +__label__ = 17; +} +else{ + r0 = _ZZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_EE13std_facet_buf; + if(r4 ==r0) //_LBB701_17 +{ +__label__ = 17; +} +else{ + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r5; + r3 = r2 << 2; + r5 = (r3 + r4)|0; + r2 = (r8 - r2)|0; + memcpy(i7); + r3 = (r0 + r3)|0; + r8 = (r5 + 4)|0; + r2 = r2 << 2; + heap32[(g0)] = r3; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r2; + memcpy(i7); +if(!(r4 ==0)) //_LBB701_16 +{ + heap32[(g0)] = r4; + _ZdaPv(i7); +} + heap32[(r1)] = r0; +__label__ = 20; +} +} +_51: do { +if (__label__ == 17){ + r0 = (r8 - r2)|0; + r0 = r0 << 2; +if(!(r0 ==0)) //_LBB701_20 +{ + r0 = r3 << 2; + r2 = r2 << 2; + r0 = (r0 + -4)|0; + r1 = (r2 + r4)|0; + r2 = (r0 - r2)|0; + r0 = (r1 + 4)|0; +_54: while(true){ + r1 = heapU8[r0]; + r2 = (r2 + -1)|0; + r3 = (r0 + 1)|0; + heap8[r0+-4] = r1; + r0 = r3; +if(!(r2 !=0)) //_LBB701_19 +{ +break _51; +} +} +} +} +} while(0); + r2 = heap32[(r7+1)]; +if(!(r2 ==0)) //_LBB701_11 +{ +if(!(r6 ==0)) //_LBB701_11 +{ + r2 = heap32[(r7)]; + r2 = r2 >> 2; + r2 = heap32[(r2+1)]; + heap32[(g0)] = r6; + __FUNCTION_TABLE__[(r2)>>2](i7); + r2 = 0; + r_g0 = r2; + return; +} +} +} + r2 = 0; +break _1; +} +} + r0 = r2 >> 2; + r1 = heap32[(r0+6)]; + r1 = (r1 + -1)|0; + heap32[(r0+6)] = r1; + r0 = 0; + r_g0 = r0; + return; +} +} while(0); + r_g0 = r2; + return; +} + +function cmpfacets(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = r1 >> 2; + r0 = heap32[(r0)]; + r1 = heap32[(r1)]; + r0 = r0 >> 2; + r1 = r1 >> 2; + r2 = heap32[(r0+5)]; + r3 = heap32[(r1+5)]; + if(r2 !=r3) //_LBB702_2 +{ + r0 = (r3 - r2)|0; + r_g0 = r0; + return; +} +else{ + r2 = heap32[(r1+1)]; + r3 = heap32[(r0+1)]; + r0 = _2E_str538; + r3 = r3 == 0 ? r0 : r3; + r2 = r2 == 0 ? r0 : r2; + heap32[(g0)] = r3; + heap32[(g0+1)] = r2; + strcmp(i7); + return; +} +} + +function _ZN4__rwL16__rw_expand_nameERNS_14__rw_pod_arrayIcLj256EEEPKc(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var r19; +var __label__ = 0; + i7 = sp + -640;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = 0; + r3 = r1; +_1: while(true){ + r4 = r2 << 2; + r5 = heapU8[r3]; + if(r5 !=59) //_LBB703_3 +{ + if(r5 !=0) //_LBB703_5 +{ + r5 = heapU8[r3+1]; + if(r5 ==59) //_LBB703_14 +{ +__label__ = 14; +break _1; +} +else{ + if(r5 ==0) //_LBB703_4 +{ +__label__ = 4; +break _1; +} +else{ + r5 = heapU8[r3+2]; + if(r5 !=59) //_LBB703_9 +{ + if(r5 ==0) //_LBB703_4 +{ +__label__ = 4; +break _1; +} +else{ + r5 = heapU8[r3+3]; + if(r5 !=59) //_LBB703_12 +{ + if(r5 ==0) //_LBB703_4 +{ +__label__ = 4; +break _1; +} +else{ + r2 = (r2 + 1)|0; + r3 = (r3 + 4)|0; +continue _1; +} +} +else{ +__label__ = 11; +break _1; +} +} +} +else{ +__label__ = 8; +break _1; +} +} +} +} +else{ +__label__ = 4; +break _1; +} +} +else{ +__label__ = 2; +break _1; +} +} +switch(__label__ ){//multiple entries +case 14: + r2 = (r3 + 1)|0; +break; +case 4: + r2 = 0; +break; +case 2: + r2 = (r1 + r4)|0; +break; +case 11: + r2 = r4 | 3; + r2 = (r1 + r2)|0; +break; +case 8: + r2 = r4 | 2; + r2 = (r1 + r2)|0; +break; +} +_18: do { + if(r2 ==r1) //_LBB703_17 +{ + r3 = (r1 + 1)|0; + r4 = (r1 + 3)|0; + r5 = 0; + r2 = r3; +_20: while(true){ + r6 = heapU8[r4+-2]; + if(r6 ==59) //_LBB703_21 +{ +__label__ = 19; +break _20; +} +else{ + if(r6 !=0) //_LBB703_22 +{ + r6 = heapU8[r4+-1]; + if(r6 ==0) //_LBB703_20 +{ +__label__ = 90; +break _18; +} +else{ + r7 = r5 << 2; + if(r6 !=59) //_LBB703_25 +{ + r6 = heapU8[r4]; + if(r6 ==0) //_LBB703_20 +{ +__label__ = 90; +break _18; +} +else{ + if(r6 !=59) //_LBB703_28 +{ + r6 = heapU8[r4+1]; + if(r6 ==0) //_LBB703_20 +{ +__label__ = 90; +break _18; +} +else{ + if(r6 !=59) //_LBB703_31 +{ + r5 = (r5 + 1)|0; + r4 = (r4 + 4)|0; + r2 = (r2 + 4)|0; +} +else{ +__label__ = 27; +break _20; +} +} +} +else{ +__label__ = 32; +break _18; +} +} +} +else{ +__label__ = 22; +break _20; +} +} +} +else{ +__label__ = 90; +break _18; +} +} +} +switch(__label__ ){//multiple entries +case 19: + r1 = r3; +__label__ = 29; +break _18; +break; +case 27: + r2 = r7 | 3; + r1 = (r2 + r1)|0; + r4 = (r1 + 1)|0; +__label__ = 32; +break _18; +break; +case 22: + r2 = r7 | 1; + r1 = (r2 + r1)|0; + r4 = (r1 + 1)|0; +__label__ = 32; +break; +} +} +else{ +__label__ = 29; +} +} while(0); +if (__label__ == 29){ + if(r2 ==0) //_LBB703_34 +{ + r3 = r1; +__label__ = 90; +} +else{ + r4 = r2; + r3 = r1; +__label__ = 32; +} +} +_39: do { +switch(__label__ ){//multiple entries +case 90: + r7 = heapU8[r3]; + if(r7 ==0) //_LBB703_98 +{ + r0 = sp + -624; + r0 = r0 >> 2; + heap32[(r0+20)] = 0; + heap32[(r0+22)] = 0; + heap32[(r0+21)] = 0; +__label__ = 73; +break _39; +} +else{ + r7 = 1; +__label__ = 93; +break _39; +} +break; +case 32: + r1 = sp + -264; + r2 = sp + -528; + r5 = (r1 + 8)|0; + r6 = (r2 + 8)|0; + r7 = 1; + r8 = 0; +_45: while(true){ + if(r4 ==0) //_LBB703_39 +{ + r4 = heapU8[r3]; +_49: do { + if(r4 !=0) //_LBB703_41 +{ + r9 = (r3 + 1)|0; + r10 = 0; +_51: while(true){ + r4 = (r10 + 1)|0; + r11 = heapU8[r9+r10]; + r10 = r4; +if(!(r11 !=0)) //_LBB703_42 +{ +break _49; +} +} +} +else{ + r4 = 0; +} +} while(0); + r4 = (r3 + r4)|0; +} + r9 = (r4 - r3)|0; + heap32[(fp+-66)] = r9; + if(uint(r9) >uint(255)) //_LBB703_46 +{ + r10 = (r9 + 1)|0; + heap32[(g0)] = r10; + _Znaj(i7); + r10 = r_g0; +} +else{ + r10 = r5; +} + r11 = r1 >> 2; + heap32[(r11+1)] = r10; + heap32[(g0)] = r10; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r9; + memcpy(i7); + r9 = heap32[(r11+1)]; + r10 = heap32[(fp+-66)]; + r12 = 0; + heap8[r9+r10] = r12; + r9 = r2 >> 2; + heap32[(fp+-132)] = 0; + heap32[(r9+1)] = r6; + heap8[sp+-520] = r12; + r10 = _ZN4__rw9__rw_catsE; + r13 = (r8 * 12)|0; + r10 = (r10 + r13)|0; + r13 = heap32[(r11+1)]; + r10 = r10 >> 2; + r10 = heap32[(r10)]; + heap32[(g0)] = r10; + heap32[(g0+1)] = r13; + heap32[(g0+2)] = r2; + _ZN4__rw16__rw_locale_nameEiPKcRNS_14__rw_pod_arrayIcLj256EEE(i7); + r10 = r_g0; + if(r10 !=0) //_LBB703_50 +{ + r13 = heapU8[r10]; +_63: do { + if(r13 !=0) //_LBB703_52 +{ + r14 = (r10 + 1)|0; +_65: while(true){ + r13 = (r12 + 1)|0; + r15 = heapU8[r14+r12]; + r12 = r13; +if(!(r15 !=0)) //_LBB703_53 +{ +break _63; +} +} +} +else{ + r13 = 0; +} +} while(0); + r12 = r7 & 255; +_69: do { +if(!(r12 ==0)) //_LBB703_56 +{ + if(r8 !=0) //_LBB703_57 +{ + r7 = r0 >> 2; + r7 = heap32[(r7+1)]; + r12 = r7; + r14 = r10; + r15 = r13; +_72: while(true){ + if(r15 !=0) //_LBB703_58 +{ + r15 = (r15 + -1)|0; + r16 = (r14 + 1)|0; + r17 = (r12 + 1)|0; + r18 = heapU8[r12]; + r19 = heapU8[r14]; + r12 = r17; + r14 = r16; + if(r18 !=r19) //_LBB703_62 +{ +__label__ = 57; +break _72; +} +else{ +__label__ = 54; +} +} +else{ +__label__ = 55; +break _72; +} +} +if (__label__ == 55){ + r7 = heapU8[r7+r13]; +if(!(r7 !=59)) //_LBB703_62 +{ + r7 = 1; +break _69; +} +} + r7 = 0; +} +} +} while(0); + heap32[(g0)] = r0; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r13; + _ZN4__rw14__rw_pod_arrayIcLj256EE6appendEPKcj(i7); + r8 = (r8 + 1)|0; + if(r8 !=6) //_LBB703_66 +{ + r10 = heapU8[r4]; + if(r10 !=0) //_LBB703_68 +{ + r3 = _2E_str785; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = 1; + _ZN4__rw14__rw_pod_arrayIcLj256EE6appendEPKcj(i7); + r3 = (r4 + 1)|0; + r4 = 2; +} +else{ + r4 = 1; +} +} +else{ + r4 = 1; + r8 = 6; +} +} +else{ + r4 = 0; +} + r9 = heap32[(r9+1)]; +if(!(r9 ==r6)) //_LBB703_73 +{ +if(!(r9 ==0)) //_LBB703_73 +{ + heap32[(g0)] = r9; + _ZdaPv(i7); +} +} + if(r4 ==1) //_LBB703_79 +{ +__label__ = 74; +break _45; +} +else{ + if(r4 !=0) //_LBB703_83 +{ + r4 = heap32[(r11+1)]; + if(r4 ==r5) //_LBB703_85 +{ +__label__ = 79; +} +else{ + if(r4 !=0) //_LBB703_86 +{ + r10 = 0; + heap32[(g0)] = r4; + _ZdaPv(i7); + r9 = r3; +__label__ = 81; +} +else{ +__label__ = 79; +} +} +if (__label__ == 79){ + r10 = 0; + r9 = r3; +} +_101: while(true){ + r4 = r10 << 2; + r11 = r4 | 3; + r12 = r4 | 2; + r13 = heapU8[r9]; + r4 = (r3 + r4)|0; + r11 = (r3 + r11)|0; + r12 = (r3 + r12)|0; + if(r13 ==59) //_LBB703_37 +{ +continue _45; +} +else{ + r4 = 0; + if(r13 ==0) //_LBB703_37 +{ +continue _45; +} +else{ + r13 = heapU8[r9+1]; + if(r13 ==59) //_LBB703_36 +{ +break _101; +} +else{ + r4 = 0; + if(r13 ==0) //_LBB703_37 +{ +continue _45; +} +else{ + r13 = heapU8[r9+2]; + r4 = r12; + if(r13 ==59) //_LBB703_37 +{ +continue _45; +} +else{ + r4 = 0; + if(r13 ==0) //_LBB703_37 +{ +continue _45; +} +else{ + r12 = heapU8[r9+3]; + r4 = r11; + if(r12 ==59) //_LBB703_37 +{ +continue _45; +} +else{ + r4 = 0; + if(r12 ==0) //_LBB703_37 +{ +continue _45; +} +else{ + r10 = (r10 + 1)|0; + r9 = (r9 + 4)|0; +} +} +} +} +} +} +} +} +} + r4 = (r9 + 1)|0; +continue _45; +} +else{ +__label__ = 70; +break _45; +} +} +} +switch(__label__ ){//multiple entries +case 74: + r1 = heap32[(r11+1)]; + if(r1 ==r5) //_LBB703_81 +{ +__label__ = 93; +break _39; +} +else{ + if(r1 !=0) //_LBB703_82 +{ + heap32[(g0)] = r1; + _ZdaPv(i7); +__label__ = 93; +break _39; +} +else{ +__label__ = 93; +break _39; +} +} +break; +case 70: + r0 = heap32[(r11+1)]; + if(r0 ==r5) //_LBB703_78 +{ +__label__ = 73; +} +else{ + if(r0 ==0) //_LBB703_78 +{ +__label__ = 73; +} +else{ + heap32[(g0)] = r0; + _ZdaPv(i7); +__label__ = 73; +} +} +break; +} +break; +} +} while(0); +_119: do { +if (__label__ == 93){ + r1 = r0 >> 2; + r2 = heap32[(r1+1)]; + r4 = heapU8[r2]; + if(r4 ==0) //_LBB703_117 +{ + heap32[(g0)] = 0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r0; + _ZN4__rw16__rw_locale_nameEiPKcRNS_14__rw_pod_arrayIcLj256EEE(i7); + r0 = r_g0; + if(r0 ==0) //_LBB703_78 +{ +break _119; +} +} +else{ + r3 = r7 & 255; +if(!(r3 ==0)) //_LBB703_118 +{ + r3 = 0; + r4 = r2; +_125: while(true){ + r5 = r3 << 2; + r6 = heapU8[r4]; + if(r6 !=59) //_LBB703_104 +{ + if(r6 !=0) //_LBB703_106 +{ + r6 = heapU8[r4+1]; + if(r6 ==59) //_LBB703_115 +{ +__label__ = 109; +break _125; +} +else{ + if(r6 ==0) //_LBB703_105 +{ +__label__ = 99; +break _125; +} +else{ + r6 = heapU8[r4+2]; + if(r6 !=59) //_LBB703_110 +{ + if(r6 ==0) //_LBB703_105 +{ +__label__ = 99; +break _125; +} +else{ + r6 = heapU8[r4+3]; + if(r6 !=59) //_LBB703_113 +{ + if(r6 ==0) //_LBB703_105 +{ +__label__ = 99; +break _125; +} +else{ + r3 = (r3 + 1)|0; + r4 = (r4 + 4)|0; +} +} +else{ +__label__ = 106; +break _125; +} +} +} +else{ +__label__ = 103; +break _125; +} +} +} +} +else{ +__label__ = 99; +break _125; +} +} +else{ +__label__ = 97; +break _125; +} +} +switch(__label__ ){//multiple entries +case 109: + r3 = (r4 + 1)|0; +break; +case 99: + r3 = 0; +break; +case 97: + r3 = (r2 + r5)|0; +break; +case 106: + r3 = r5 | 3; + r3 = (r2 + r3)|0; +break; +case 103: + r3 = r5 | 2; + r3 = (r2 + r3)|0; +break; +} + r3 = (r3 - r2)|0; + heap32[(r1+1)] = r2; + heap32[(r1)] = r3; + r3 = _2E_str26; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = 1; + _ZN4__rw14__rw_pod_arrayIcLj256EE6appendEPKcj(i7); +} +} + r0 = heap32[(r1+1)]; + r_g0 = r0; + return; +} +} while(0); + r0 = 0; + r_g0 = r0; + return; +} + +function cmplocales(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = r1 >> 2; + r0 = heap32[(r0)]; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r0 = r0 >> 2; + r1 = heap32[(r1+38)]; + r0 = heap32[(r0+38)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + strcmp(i7); + return; +} + +function _ZN4__rw11__rw_localeD2Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+38)]; + r3 = (r0 + 112)|0; + if(r2 ==r3) //_LBB705_2 +{ +__label__ = 2; +} +else{ + if(r2 !=0) //_LBB705_3 +{ + r3 = 0; + heap32[(g0)] = r2; + _ZdaPv(i7); +__label__ = 4; +} +else{ +__label__ = 2; +} +} +if (__label__ == 2){ + r3 = 0; +} +_6: while(true){ + r2 = r3 << 2; + r2 = (r0 - r2)|0; + r2 = r2 >> 2; + r4 = 0; + r2 = heap32[(r2)]; +if(!(r2 ==0)) //_LBB705_10 +{ + r5 = r2 >> 2; + r6 = heap32[(r5+5)]; + if(r6 ==0) //_LBB705_7 +{ + r2 = heap32[(r5+6)]; + r2 = (r2 + -1)|0; + heap32[(r5+6)] = r2; +if(!(r2 !=0)) //_LBB705_10 +{ + r2 = (r4 - r3)|0; + r2 = r2 << 2; + r2 = (r0 + r2)|0; + r2 = r2 >> 2; + r2 = heap32[(r2)]; +if(!(r2 ==0)) //_LBB705_10 +{ + r5 = r2 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+1)]; + heap32[(g0)] = r2; + __FUNCTION_TABLE__[(r5)>>2](i7); +} +} +} +else{ + r5 = heap32[(r5+1)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = 0; + _ZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_E(i7); +} +} + r3 = (r3 + -1)|0; + if(r3 !=-26) //_LBB705_4 +{ +continue _6; +} +else{ +break _6; +} +} + r0 = heap32[(r1+26)]; + r2 = heap32[(r1+27)]; +_17: do { +if(!(r2 ==0)) //_LBB705_13 +{ +_18: while(true){ + r2 = r4 << 2; + r0 = (r0 + r2)|0; + r0 = r0 >> 2; + r0 = heap32[(r0)]; + r0 = r0 >> 2; + r3 = heap32[(r0+6)]; + r3 = (r3 + -1)|0; + heap32[(r0+6)] = r3; +if(!(r3 !=0)) //_LBB705_17 +{ + r0 = heap32[(r1+26)]; + r0 = (r0 + r2)|0; + r0 = r0 >> 2; + r0 = heap32[(r0)]; +if(!(r0 ==0)) //_LBB705_17 +{ + r2 = r0 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+1)]; + heap32[(g0)] = r0; + __FUNCTION_TABLE__[(r2)>>2](i7); +} +} + r4 = (r4 + 1)|0; + r0 = heap32[(r1+26)]; + r2 = heap32[(r1+27)]; + if(r4 !=r2) //_LBB705_14 +{ +continue _18; +} +else{ +break _17; +} +} +} +} while(0); +if(!(r0 ==0)) //_LBB705_20 +{ + heap32[(g0)] = r0; + _ZdaPv(i7); +} + return; +} + +function _ZN4__rw11__rw_localeC2EPKc(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; +var __label__ = 0; + i7 = sp + -280;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + heap32[(r1+26)] = 0; + heap32[(r1+27)] = 0; + heap32[(r1+39)] = 1; + r2 = heap32[(fp+1)]; + heap32[(r1+40)] = 0; + heap32[(r1+41)] = 0; + r3 = heapU8[r2]; + if(r3 ==0) //_LBB706_2 +{ + r3 = sp + -264; + r4 = 0; + r5 = r3 >> 2; + r6 = (r0 + 112)|0; + heap8[sp+-256] = r4; + heap32[(r5+1)] = r6; + heap32[(fp+-66)] = 0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r2; + r2 = (r3 + 8)|0; + _ZN4__rwL16__rw_expand_nameERNS_14__rw_pod_arrayIcLj256EEEPKc(i7); + r3 = r_g0; + heap32[(r1+38)] = r3; + heap32[(r5+1)] = r2; +} +else{ + r3 = 1; +_5: while(true){ + r4 = (r3 + 1)|0; + r5 = heapU8[r2+r3]; + r3 = r4; +if(!(r5 !=0)) //_LBB706_4 +{ +break _5; +} +} + if(uint(r4) >uint(39)) //_LBB706_7 +{ + heap32[(g0)] = r4; + _Znaj(i7); + r3 = r_g0; +} +else{ + r3 = (r0 + 112)|0; +} + heap32[(g0)] = r3; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r4; + memcpy(i7); + heap32[(r1+38)] = r3; +} + r2 = 0; + heap32[(r1+40)] = 67108863; + heap32[(r1+41)] = 0; +_13: while(true){ + r4 = (r3 - r2)|0; + r5 = heapU8[r4]; + if(r5 ==0) //_LBB706_43 +{ +__label__ = 41; +break _13; +} +else{ + if(r5 ==59) //_LBB706_20 +{ +__label__ = 20; +break _13; +} +else{ + r5 = heapU8[r4+1]; + if(r5 ==0) //_LBB706_43 +{ +__label__ = 41; +break _13; +} +else{ + if(r5 !=59) //_LBB706_15 +{ + r5 = heapU8[r4+2]; + if(r5 ==0) //_LBB706_43 +{ +__label__ = 41; +break _13; +} +else{ + if(r5 ==59) //_LBB706_14 +{ +__label__ = 14; +break _13; +} +else{ + r4 = heapU8[r4+3]; + if(r4 ==0) //_LBB706_43 +{ +__label__ = 41; +break _13; +} +else{ + if(r4 ==59) //_LBB706_14 +{ +__label__ = 14; +break _13; +} +else{ + r2 = (r2 + -4)|0; +continue _13; +} +} +} +} +} +else{ +__label__ = 14; +break _13; +} +} +} +} +} +if (__label__ == 20){ + if(r3 ==r2) //_LBB706_43 +{ +__label__ = 41; +} +else{ +__label__ = 14; +} +} +_25: do { +switch(__label__ ){//multiple entries +case 41: + r2 = heapU8[r3]; +if(!(r2 !=67)) //_LBB706_45 +{ + r2 = heapU8[r3+1]; + if(r2 ==0) //_LBB706_46 +{ +break _25; +} +} + heap32[(r1+41)] = 67108863; +break; +case 14: + r2 = 0; + r4 = r2; +_31: while(true){ + r5 = heapU8[r3]; + if(r5 ==0) //_LBB706_46 +{ +break _25; +} +else{ + if(r2 !=-6) //_LBB706_21 +{ + r5 = r5 & 255; + if(r5 !=67) //_LBB706_24 +{ +__label__ = 23; +} +else{ + r5 = heapU8[r3+1]; + if(r5 !=59) //_LBB706_24 +{ +__label__ = 23; +} +else{ +__label__ = 24; +} +} +if (__label__ == 23){ + r5 = (r2 * -3)|0; + r6 = _ZN4__rw9__rw_catsE; + r5 = r5 << 2; + r5 = (r6 + r5)|0; + r5 = r5 >> 2; + r5 = heap32[(r5+2)]; + r4 = r5 | r4; + heap32[(r1+41)] = r4; +} + r5 = 0; + r6 = r3; +_40: while(true){ + r7 = heapU8[r6]; + if(r7 ==0) //_LBB706_46 +{ +break _25; +} +else{ + if(r7 ==59) //_LBB706_37 +{ +__label__ = 36; +break _40; +} +else{ + r7 = heapU8[r6+1]; + if(r7 ==0) //_LBB706_46 +{ +break _25; +} +else{ + if(r7 ==59) //_LBB706_39 +{ +__label__ = 37; +break _40; +} +else{ + r7 = heapU8[r6+2]; + if(r7 ==0) //_LBB706_46 +{ +break _25; +} +else{ + r8 = r5 << 2; + if(r7 !=59) //_LBB706_33 +{ + r7 = heapU8[r6+3]; + if(r7 ==0) //_LBB706_46 +{ +break _25; +} +else{ + if(r7 !=59) //_LBB706_36 +{ + r5 = (r5 + 1)|0; + r6 = (r6 + 4)|0; +} +else{ +__label__ = 34; +break _40; +} +} +} +else{ +__label__ = 31; +break _40; +} +} +} +} +} +} +} +switch(__label__ ){//multiple entries +case 36: + if(r6 ==0) //_LBB706_46 +{ +break _25; +} +break; +case 37: + r6 = (r6 + 1)|0; +break; +case 34: + r5 = r8 | 3; + r6 = (r3 + r5)|0; +break; +case 31: + r5 = r8 | 2; + r6 = (r3 + r5)|0; +break; +} + r3 = (r6 + 1)|0; + r2 = (r2 + -1)|0; +continue _31; +} +else{ +break _25; +} +} +} +break; +} +} while(0); + r1 = 104; + r3 = 0; +_57: while(true){ + r2 = (r1 + -1)|0; + r1 = (r0 - r1)|0; + heap8[r1+104] = r3; + r1 = r2; + if(r2 !=0) //_LBB706_47 +{ +continue _57; +} +else{ +break _57; +} +} + return; +} + +function _ZN4__rw11__rw_locale9_C_manageEPS0_PKc(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; +var __label__ = 0; + i7 = sp + -280;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + if(r0 !=0) //_LBB707_9 +{ + r2 = heapU8[r0]; + if(r2 ==67) //_LBB707_11 +{ + r2 = heapU8[r0+1]; + r3 = 0; + r2 = r2 != r3; +} +else{ + r2 = 1; +} + r3 = sp + -264; + r4 = (r3 + 8)|0; + r5 = _2E_str538; + r6 = r3 >> 2; + heap32[(fp+-66)] = 0; + r0 = r2 != 0 ? r0 : r5; + r7 = 0; + heap32[(r6+1)] = r4; + heap8[sp+-256] = r7; + if(r1 !=0) //_LBB707_14 +{ +__label__ = 19; +} +else{ + if(r2 != 0) //_LBB707_15 +{ + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + _ZN4__rwL16__rw_expand_nameERNS_14__rw_pod_arrayIcLj256EEEPKc(i7); + r0 = r_g0; + if(r0 !=0) //_LBB707_18 +{ + r2 = heapU8[r0]; + if(r2 ==67) //_LBB707_20 +{ + r2 = heapU8[r0+1]; + if(r2 !=0) //_LBB707_19 +{ +__label__ = 19; +} +else{ + r0 = r5; +__label__ = 19; +} +} +else{ +__label__ = 19; +} +} +else{ +__label__ = 15; +} +} +else{ +__label__ = 19; +} +} +_14: do { +if (__label__ == 19){ + r2 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE9n_locales; + r3 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE7locales; + r2 = r2 >> 2; + r3 = r3 >> 2; + r5 = heap32[(r2)]; + r8 = heap32[(r3)]; + if(r1 ==0) //_LBB707_24 +{ + r7 = r5; +_18: while(true){ + r9 = r7; + if(r9 ==0) //_LBB707_53 +{ +__label__ = 49; +break _18; +} +else{ + r1 = r9 << 1; + r10 = r1 & -4; + r11 = (r8 + r10)|0; + r1 = r11 >> 2; + r1 = heap32[(r1)]; + r12 = r1 >> 2; + r7 = heap32[(r12+38)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r7; + strcmp(i7); + r13 = r_g0; + r7 = r9 >>> 1; + if(r13 <0) //_LBB707_50 +{ +__label__ = 46; +} +else{ + if(r13 <1) //_LBB707_51 +{ +__label__ = 47; +break _18; +} +else{ + r1 = (r10 + r8)|0; + r9 = (r9 + -1)|0; + r8 = (r1 + 4)|0; + r7 = (r9 - r7)|0; +} +} +} +} +if (__label__ == 47){ +if(!(r11 ==0)) //_LBB707_53 +{ + r0 = heap32[(r12+39)]; + r0 = (r0 + 1)|0; + heap32[(r12+39)] = r0; +__label__ = 65; +break _14; +} +} + r1 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE14locale_bufsize; + r1 = r1 >> 2; + r7 = heap32[(r1)]; +if(!(r5 !=r7)) //_LBB707_59 +{ + r5 = r5 << 3; + heap32[(g0)] = r5; + _Znaj(i7); + r5 = r_g0; + r7 = heap32[(r3)]; + r8 = heap32[(r2)]; + r8 = r8 << 2; + heap32[(g0)] = r5; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r8; + memcpy(i7); + r8 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE10locale_buf; +if(!(r7 ==r8)) //_LBB707_58 +{ +if(!(r7 ==0)) //_LBB707_58 +{ + heap32[(g0)] = r7; + _ZdaPv(i7); +} +} + heap32[(r3)] = r5; + r5 = heap32[(r1)]; + r5 = r5 << 1; + heap32[(r1)] = r5; +} + r1 = heapU8[r0]; + if(r1 !=67) //_LBB707_65 +{ +__label__ = 61; +} +else{ + r1 = heapU8[r0+1]; + if(r1 !=0) //_LBB707_65 +{ +__label__ = 61; +} +else{ + r1 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE7classic; + r5 = r1 >> 2; + r1 = heap32[(r5)]; + if(r1 !=0) //_LBB707_64 +{ + r0 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE12classic_body; + r0 = r0 >> 2; + r5 = heap32[(r0+39)]; + r5 = (r5 + 1)|0; + heap32[(r0+39)] = r5; +__label__ = 63; +} +else{ + r1 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE12classic_body; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + _ZN4__rw11__rw_localeC2EPKc(i7); + heap32[(r5)] = r1; +__label__ = 63; +} +} +} +if (__label__ == 61){ + heap32[(g0)] = 172; + _Znwj(i7); + r1 = r_g0; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + _ZN4__rw11__rw_localeC2EPKc(i7); +} + r0 = heap32[(r2)]; + r3 = heap32[(r3)]; + r5 = r0 << 2; + r5 = (r3 + r5)|0; + r5 = r5 >> 2; + r7 = (r0 + 1)|0; + heap32[(r5)] = r1; + heap32[(r2)] = r7; + r2 = (r0 + -1)|0; + if(uint(r2) > 2; + r9 = heap32[(r9)]; + r9 = r9 >> 2; + r9 = heap32[(r9+38)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r9; + strcmp(i7); + r14 = r_g0; + r9 = r11 >>> 1; + if(r14 <0) //_LBB707_28 +{ +__label__ = 25; +} +else{ + if(r14 <1) //_LBB707_29 +{ +__label__ = 26; +break _48; +} +else{ + r10 = (r12 + r10)|0; + r11 = (r11 + -1)|0; + r10 = (r10 + 4)|0; + r9 = (r11 - r9)|0; +} +} +} +} +if (__label__ == 26){ +if(!(r13 ==0)) //_LBB707_46 +{ + r1 = (r13 - r8)|0; + r0 = r1 & -4; + r9 = (r8 + r0)|0; + r9 = r9 >> 2; + r9 = heap32[(r9)]; + r10 = r9 >> 2; + r11 = heap32[(r10+39)]; + r11 = (r11 + -1)|0; + heap32[(r10+39)] = r11; + if(r11 !=0) //_LBB707_17 +{ +__label__ = 15; +break _14; +} +else{ + r1 = r1 >> 2; + r11 = (r5 + -1)|0; + heap32[(r2)] = r11; + if(uint(r11) >uint(3)) //_LBB707_36 +{ +__label__ = 33; +} +else{ + r2 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE10locale_buf; + if(r8 ==r2) //_LBB707_36 +{ +__label__ = 33; +} +else{ + heap32[(g0)] = r2; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r0; + r0 = r1 << 2; + r5 = (r0 + r8)|0; + r1 = (r11 - r1)|0; + memcpy(i7); + r0 = (r2 + r0)|0; + r5 = (r5 + 4)|0; + r1 = r1 << 2; + heap32[(g0)] = r0; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r1; + memcpy(i7); +if(!(r8 ==0)) //_LBB707_35 +{ + heap32[(g0)] = r8; + _ZdaPv(i7); +} + r1 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE14locale_bufsize; + r1 = r1 >> 2; + heap32[(r3)] = r2; + heap32[(r1)] = 8; +__label__ = 36; +} +} +_63: do { +if (__label__ == 33){ + r0 = (r11 - r1)|0; + r0 = r0 << 2; +if(!(r0 ==0)) //_LBB707_39 +{ + r0 = r5 << 2; + r1 = r1 << 2; + r0 = (r0 + -4)|0; + r2 = (r1 + r8)|0; + r1 = (r0 - r1)|0; + r0 = (r2 + 4)|0; +_66: while(true){ + r2 = heapU8[r0]; + r1 = (r1 + -1)|0; + r3 = (r0 + 1)|0; + heap8[r0+-4] = r2; + r0 = r3; +if(!(r1 !=0)) //_LBB707_38 +{ +break _63; +} +} +} +} +} while(0); + r1 = heap32[(r10+38)]; + r0 = heapU8[r1]; + if(r0 ==67) //_LBB707_41 +{ + r1 = heapU8[r1+1]; + r7 = 0; + r7 = r1 == r7; +} + if(r7 != 0) //_LBB707_17 +{ +__label__ = 15; +break _14; +} +else{ + if(r9 ==0) //_LBB707_17 +{ +__label__ = 15; +break _14; +} +else{ + heap32[(g0)] = r9; + _ZN4__rw11__rw_localeD2Ev(i7); + heap32[(g0)] = r9; + r1 = 0; + _ZdlPv(i7); +__label__ = 65; +break _14; +} +} +} +} +} + r0 = r1 >> 2; + r2 = heap32[(r0+39)]; + r1 = 0; + r2 = (r2 + -1)|0; + heap32[(r0+39)] = r2; +__label__ = 65; +} +} +} while(0); +if (__label__ == 15){ + r1 = 0; +} + r0 = heap32[(r6+1)]; +if(!(r0 ==r4)) //_LBB707_73 +{ +if(!(r0 ==0)) //_LBB707_73 +{ + heap32[(g0)] = r0; + _ZdaPv(i7); +} +} + r_g0 = r1; + return; +} +else{ + r0 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE6global; + r0 = r0 >> 2; + r2 = heap32[(r0)]; +_84: do { + if(r2 ==0) //_LBB707_3 +{ + r3 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE5ginit; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + if(r4 !=0) //_LBB707_5 +{ +_87: while(true){ + r4 = heap32[(r3)]; +if(!(r4 <1000)) //_LBB707_5 +{ +break _84; +} +} +} +else{ + r2 = (r4 + 1)|0; + heap32[(r3)] = r2; + r2 = _2E_str538; + heap32[(g0)] = 0; + heap32[(g0+1)] = r2; + _ZN4__rw11__rw_locale9_C_manageEPS0_PKc(i7); + r2 = r_g0; + heap32[(r0)] = r2; + r4 = heap32[(r3)]; + r4 = (r4 + 1000)|0; + heap32[(r3)] = r4; +} +} +} while(0); + if(r1 ==0) //_LBB707_8 +{ + r0 = r2 >> 2; + r1 = heap32[(r0+39)]; + r1 = (r1 + 1)|0; + heap32[(r0+39)] = r1; + r_g0 = r2; + return; +} +else{ + r3 = r1 >> 2; + r4 = heap32[(r3+39)]; + r4 = (r4 + 1)|0; + heap32[(r3+39)] = r4; + heap32[(r0)] = r1; + r_g0 = r2; + return; +} +} +} + +function _ZN4__rw11__rw_locale11_C_get_bodyEPS0_S1_PKciPKNS_10__rw_facetE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; +var __label__ = 0; + i7 = sp + -304;var g0 = i7>>2; // save stack + r0 = sp + -264; + r1 = (r0 + 8)|0; + r2 = r0 >> 2; + heap32[(fp+-66)] = 0; + r3 = 0; + heap32[(r2+1)] = r1; + heap8[sp+-256] = r3; + r4 = _2E_str538; + r5 = _2E_str292167; + heap32[(g0)] = r4; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = 3; + strncmp(i7); + r5 = r_g0; +_1: do { + if(r5 ==0) //_LBB708_2 +{ + r4 = sp + -288; + r5 = r4 >> 2; + heap32[(fp+-72)] = 0; + heap32[(r5+1)] = 0; + heap32[(r5+2)] = 0; + heap32[(r5+3)] = 0; + r6 = 4; + heap32[(r5+4)] = 0; + heap32[(r5+5)] = 0; +_3: while(true){ + r6 = (r6 + -4)|0; +if(!(r6 !=0)) //_LBB708_3 +{ +break _3; +} +} + r5 = _2E_str538; +_6: while(true){ + r6 = heapU8[r5]; + if(r6 ==0) //_LBB708_48 +{ +__label__ = 44; +break _6; +} +else{ + r6 = r3; + r7 = r3; +_9: while(true){ + r8 = (r5 + r6)|0; + r9 = heapU8[r5+r6]; + if(r9 ==59) //_LBB708_17 +{ +__label__ = 16; +break _9; +} +else{ + if(r9 !=0) //_LBB708_8 +{ + r9 = heapU8[r8+1]; + if(r9 ==0) //_LBB708_7 +{ +__label__ = 6; +break _9; +} +else{ + if(r9 ==59) //_LBB708_21 +{ +__label__ = 18; +break _9; +} +else{ + r9 = heapU8[r8+2]; + if(r9 ==0) //_LBB708_7 +{ +__label__ = 6; +break _9; +} +else{ + r10 = r7 << 2; + if(r9 !=59) //_LBB708_13 +{ + r8 = heapU8[r8+3]; + if(r8 ==0) //_LBB708_7 +{ +__label__ = 6; +break _9; +} +else{ + if(r8 !=59) //_LBB708_16 +{ + r7 = (r7 + 1)|0; + r6 = (r6 + 4)|0; +} +else{ +__label__ = 14; +break _9; +} +} +} +else{ +__label__ = 11; +break _9; +} +} +} +} +} +else{ +__label__ = 6; +break _9; +} +} +} +_19: do { +switch(__label__ ){//multiple entries +case 16: + if(r8 ==0) //_LBB708_7 +{ +__label__ = 6; +break _19; +} +else{ +__label__ = 19; +break _19; +} +break; +case 18: + r8 = (r8 + 1)|0; +__label__ = 19; +break _19; +break; +case 14: + r6 = r10 | 3; + r8 = (r5 + r6)|0; +__label__ = 19; +break _19; +break; +case 11: + r6 = r10 | 2; + r8 = (r5 + r6)|0; +__label__ = 19; +break; +} +} while(0); +_24: do { +if (__label__ == 6){ + r6 = r5; +_26: while(true){ + r8 = (r6 + 1)|0; + r7 = heapU8[r6+1]; + r6 = r8; +if(!(r7 !=0)) //_LBB708_19 +{ +break _24; +} +} +} +} while(0); + r6 = 0; + r7 = r6; +_29: while(true){ + r9 = (r5 + r6)|0; + r10 = heapU8[r5+r6]; + if(r10 ==61) //_LBB708_35 +{ +__label__ = 32; +break _29; +} +else{ + if(r10 !=0) //_LBB708_26 +{ + r10 = heapU8[r9+1]; + if(r10 ==0) //_LBB708_25 +{ +__label__ = 22; +break _6; +} +else{ + if(r10 ==61) //_LBB708_37 +{ +__label__ = 33; +break _29; +} +else{ + r10 = heapU8[r9+2]; + if(r10 ==0) //_LBB708_25 +{ +__label__ = 22; +break _6; +} +else{ + r11 = r7 << 2; + if(r10 !=61) //_LBB708_31 +{ + r9 = heapU8[r9+3]; + if(r9 ==0) //_LBB708_25 +{ +__label__ = 22; +break _6; +} +else{ + if(r9 !=61) //_LBB708_34 +{ + r7 = (r7 + 1)|0; + r6 = (r6 + 4)|0; +} +else{ +__label__ = 30; +break _29; +} +} +} +else{ +__label__ = 27; +break _29; +} +} +} +} +} +else{ +__label__ = 22; +break _6; +} +} +} +switch(__label__ ){//multiple entries +case 32: + if(r9 ==0) //_LBB708_25 +{ +__label__ = 22; +break _6; +} +break; +case 33: + r9 = (r9 + 1)|0; +break; +case 30: + r6 = r11 | 3; + r9 = (r5 + r6)|0; +break; +case 27: + r6 = r11 | 2; + r9 = (r5 + r6)|0; +break; +} + r6 = (r9 - r5)|0; + r7 = 0; +_45: while(true){ + if(r7 !=-6) //_LBB708_39 +{ + r10 = (r7 * -3)|0; + r11 = _ZN4__rw9__rw_catsE; + r10 = r10 << 2; + r10 = (r11 + r10)|0; + r10 = r10 >> 2; + r10 = heap32[(r10+1)]; + heap32[(g0)] = r10; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r6; + strncmp(i7); + r10 = r_g0; + if(r10 !=0) //_LBB708_42 +{ + r7 = (r7 + -1)|0; +} +else{ +__label__ = 36; +break _45; +} +} +else{ +__label__ = 40; +break _45; +} +} +if (__label__ == 36){ + r6 = r7 << 2; + r6 = (r4 - r6)|0; + r6 = r6 >> 2; + r6 = heap32[(r6)]; + if(r6 !=0) //_LBB708_25 +{ +__label__ = 22; +break _6; +} +else{ + r6 = 0; + r6 = (r6 - r7)|0; + r6 = r6 << 2; + r6 = (r4 + r6)|0; + r6 = r6 >> 2; + r7 = (r9 + 1)|0; + heap32[(r6)] = r7; +} +} + r6 = heapU8[r8]; + r5 = r8; + if(r6 ==0) //_LBB708_46 +{ +__label__ = 42; +} +else{ + r5 = (r8 + 1)|0; +} +} +} +switch(__label__ ){//multiple entries +case 44: + r3 = 0; + r5 = r3; +_56: while(true){ + if(r5 !=-6) //_LBB708_49 +{ + r6 = (r3 - r5)|0; + r6 = r6 << 2; + r6 = (r4 + r6)|0; + r6 = r6 >> 2; + r7 = heap32[(r6)]; + if(r7 ==0) //_LBB708_51 +{ + r7 = _2E_str538; + heap32[(r6)] = r7; +} + r6 = 0; + r8 = r6; +_62: while(true){ + r9 = heapU8[r7+r6]; + if(r9 ==0) //_LBB708_66 +{ +__label__ = 60; +break _62; +} +else{ + r10 = (r7 + r6)|0; + if(r9 ==59) //_LBB708_64 +{ +__label__ = 59; +break _62; +} +else{ + r9 = heapU8[r10+1]; + if(r9 ==0) //_LBB708_66 +{ +__label__ = 60; +break _62; +} +else{ + if(r9 ==59) //_LBB708_71 +{ +__label__ = 65; +break _62; +} +else{ + r9 = heapU8[r10+2]; + if(r9 ==0) //_LBB708_66 +{ +__label__ = 60; +break _62; +} +else{ + r11 = r8 << 2; + if(r9 !=59) //_LBB708_60 +{ + r10 = heapU8[r10+3]; + if(r10 ==0) //_LBB708_66 +{ +__label__ = 60; +break _62; +} +else{ + if(r10 !=59) //_LBB708_63 +{ + r8 = (r8 + 1)|0; + r6 = (r6 + 4)|0; +} +else{ +__label__ = 57; +break _62; +} +} +} +else{ +__label__ = 54; +break _62; +} +} +} +} +} +} +} +_72: do { +switch(__label__ ){//multiple entries +case 59: + if(r10 ==0) //_LBB708_66 +{ +__label__ = 60; +break _72; +} +else{ +__label__ = 66; +break _72; +} +break; +case 65: + r10 = (r10 + 1)|0; +__label__ = 66; +break _72; +break; +case 57: + r6 = r11 | 3; + r10 = (r7 + r6)|0; +__label__ = 66; +break _72; +break; +case 54: + r6 = r11 | 2; + r10 = (r7 + r6)|0; +__label__ = 66; +break; +} +} while(0); +if (__label__ == 60){ + r10 = heapU8[r7]; +_79: do { + if(r10 !=0) //_LBB708_68 +{ + r6 = (r7 + 1)|0; + r8 = 0; +_81: while(true){ + r10 = (r8 + 1)|0; + r9 = heapU8[r6+r8]; + r8 = r10; +if(!(r9 !=0)) //_LBB708_69 +{ +break _79; +} +} +} +else{ + r10 = 0; +} +} while(0); + r10 = (r7 + r10)|0; +} + r6 = (r10 - r7)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r6; + _ZN4__rw14__rw_pod_arrayIcLj256EE6appendEPKcj(i7); + r6 = _2E_str785; + heap32[(g0)] = r0; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = 1; + _ZN4__rw14__rw_pod_arrayIcLj256EE6appendEPKcj(i7); + r5 = (r5 + -1)|0; +} +else{ +break _56; +} +} + r4 = heap32[(r2+1)]; + if(r4 ==0) //_LBB708_78 +{ + heap32[(g0)] = 0; + heap32[(g0+1)] = 0; + _ZN4__rw11__rw_locale9_C_manageEPS0_PKc(i7); + r4 = r_g0; +__label__ = 73; +break _1; +} +else{ +__label__ = 72; +break _1; +} +break; +case 22: + r4 = 0; +__label__ = 73; +break; +} +} +else{ +__label__ = 72; +} +} while(0); +if (__label__ == 72){ + heap32[(g0)] = 0; + heap32[(g0+1)] = r4; + _ZN4__rw11__rw_locale9_C_manageEPS0_PKc(i7); + r4 = r_g0; +} + r0 = heap32[(r2+1)]; +if(!(r0 ==r1)) //_LBB708_83 +{ +if(!(r0 ==0)) //_LBB708_83 +{ + heap32[(g0)] = r0; + _ZdaPv(i7); +} +} + r_g0 = r4; + return; +} + +function _ZNSt6localeD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = r1 >> 2; + r3 = heap32[(r2+27)]; +_1: do { +if(!(r3 !=0)) //_LBB709_86 +{ + r3 = heap32[(r2+40)]; + r3 = r3 & 67108863; +if(!(r3 !=67108863)) //_LBB709_86 +{ + r3 = heap32[(r2+41)]; + r4 = r3 & 8193; +if(!(r4 ==0)) //_LBB709_4 +{ + if(r4 !=8193) //_LBB709_86 +{ +break _1; +} +} + r4 = r3 & 49158; +if(!(r4 ==0)) //_LBB709_6 +{ + if(r4 !=49158) //_LBB709_86 +{ +break _1; +} +} + r4 = r3 & 983160; +if(!(r4 ==0)) //_LBB709_8 +{ + if(r4 !=983160) //_LBB709_86 +{ +break _1; +} +} + r4 = r3 & 7340928; +if(!(r4 ==0)) //_LBB709_10 +{ + if(r4 !=7340928) //_LBB709_86 +{ +break _1; +} +} + r4 = r3 & 25168896; +if(!(r4 ==0)) //_LBB709_12 +{ + if(r4 !=25168896) //_LBB709_86 +{ +break _1; +} +} + r3 = r3 & 33558528; +if(!(r3 ==0)) //_LBB709_14 +{ + if(r3 !=33558528) //_LBB709_86 +{ +break _1; +} +} + r3 = heap32[(r2+38)]; + r4 = _2E_str538; + r5 = r3 == 0 ? r4 : r3; + r6 = heapU8[r5]; + if(r6 ==59) //_LBB709_16 +{ + r5 = (r5 + 1)|0; +} + r6 = 0; + r7 = r6; +_25: while(true){ + r8 = heapU8[r5+r6]; + if(r8 ==0) //_LBB709_33 +{ +__label__ = 31; +break _25; +} +else{ + r9 = (r5 + r6)|0; + if(r8 ==59) //_LBB709_29 +{ +__label__ = 28; +break _25; +} +else{ + r8 = heapU8[r9+1]; + if(r8 ==0) //_LBB709_33 +{ +__label__ = 31; +break _25; +} +else{ + if(r8 ==59) //_LBB709_31 +{ +__label__ = 29; +break _25; +} +else{ + r8 = heapU8[r9+2]; + if(r8 ==0) //_LBB709_33 +{ +__label__ = 31; +break _25; +} +else{ + r10 = r7 << 2; + if(r8 !=59) //_LBB709_25 +{ + r9 = heapU8[r9+3]; + if(r9 ==0) //_LBB709_33 +{ +__label__ = 31; +break _25; +} +else{ + if(r9 !=59) //_LBB709_28 +{ + r7 = (r7 + 1)|0; + r6 = (r6 + 4)|0; +} +else{ +__label__ = 26; +break _25; +} +} +} +else{ +__label__ = 23; +break _25; +} +} +} +} +} +} +} +_35: do { +switch(__label__ ){//multiple entries +case 28: + if(r9 ==0) //_LBB709_33 +{ +__label__ = 31; +break _35; +} +else{ +__label__ = 30; +break _35; +} +break; +case 29: + r9 = (r9 + 1)|0; +__label__ = 30; +break _35; +break; +case 26: + r6 = r10 | 3; + r9 = (r5 + r6)|0; +__label__ = 30; +break _35; +break; +case 23: + r6 = r10 | 2; + r9 = (r5 + r6)|0; +__label__ = 30; +break; +} +} while(0); +switch(__label__ ){//multiple entries +case 31: + r6 = heapU8[r5]; + if(r6 !=0) //_LBB709_35 +{ + r7 = (r5 + 1)|0; + r8 = 0; +_44: while(true){ + r6 = (r8 + 1)|0; + r9 = heapU8[r7+r8]; + r8 = r6; +if(!(r9 !=0)) //_LBB709_36 +{ +break _44; +} +} + r9 = 0; + r7 = r9; + r8 = r9; +} +else{ + r9 = 0; + r6 = r9; + r7 = r9; + r8 = r9; +} +break; +case 30: + r6 = (r9 - r5)|0; + r7 = 0; + r8 = r7; +break; +} +_49: while(true){ + if(r7 !=26) //_LBB709_38 +{ + r10 = r7 << 2; + r10 = (r1 + r10)|0; + r10 = r10 >> 2; + r10 = heap32[(r10)]; +_52: do { + if(r10 !=0) //_LBB709_40 +{ + r10 = r10 >> 2; + r11 = heap32[(r10+7)]; + r11 = r11 >> 2; + r10 = heap32[(r10+1)]; + r12 = 0; + r13 = r10 != r12; + r11 = heap32[(r11)]; + r13 = r13 & 1; + r11 = r11 << 1; + r11 = r13 | r11; + r11 = (r11 + -1)|0; + r13 = 53; + r11 = uint(r11) < uint(r13) ? r11 : r12; + if(r11 >36) //_LBB709_43 +{ + r11 = (r11 + -37)|0; +if(!(uint(r11) >uint(8))) //_LBB709_45 +{ + r13 = 1; + r11 = r13 << r11; + r11 = r11 & 325; + if(r11 !=0) //_LBB709_39 +{ +break _52; +} +} +} +else{ +if(!(uint(r11) >uint(19))) //_LBB709_45 +{ + r13 = 1; + r11 = r13 << r11; + r11 = r11 & 665600; + if(r11 !=0) //_LBB709_39 +{ +break _52; +} +} +} + r11 = 1; + r11 = r11 << r7; +_60: while(true){ + if(r9 ==0) //_LBB709_75 +{ +break _60; +} +else{ + r13 = _ZN4__rw9__rw_catsE; + r14 = (r8 * 12)|0; + r13 = (r13 + r14)|0; + r13 = r13 >> 2; + r13 = heap32[(r13+2)]; + r13 = r13 & r11; + if(r13 ==0) //_LBB709_46 +{ + r5 = heapU8[r9]; + if(r5 ==0) //_LBB709_48 +{ + if(r3 !=0) //_LBB709_50 +{ + r8 = 0; + r5 = r3; +} +else{ + r8 = 0; + r5 = r4; +} +} +else{ + r5 = (r9 + 1)|0; + r8 = (r8 + 1)|0; +} + r6 = heapU8[r5]; + if(r6 ==59) //_LBB709_53 +{ + r5 = (r5 + 1)|0; +} + r6 = r12; + r13 = r12; +_74: while(true){ + r14 = heapU8[r5+r6]; + if(r14 ==0) //_LBB709_70 +{ +__label__ = 65; +break _74; +} +else{ + r9 = (r5 + r6)|0; + if(r14 ==59) //_LBB709_66 +{ +__label__ = 62; +break _74; +} +else{ + r14 = heapU8[r9+1]; + if(r14 ==0) //_LBB709_70 +{ +__label__ = 65; +break _74; +} +else{ + if(r14 ==59) //_LBB709_68 +{ +__label__ = 63; +break _74; +} +else{ + r14 = heapU8[r9+2]; + if(r14 ==0) //_LBB709_70 +{ +__label__ = 65; +break _74; +} +else{ + r15 = r13 << 2; + if(r14 !=59) //_LBB709_62 +{ + r9 = heapU8[r9+3]; + if(r9 ==0) //_LBB709_70 +{ +__label__ = 65; +break _74; +} +else{ + if(r9 !=59) //_LBB709_65 +{ + r13 = (r13 + 1)|0; + r6 = (r6 + 4)|0; +} +else{ +__label__ = 60; +break _74; +} +} +} +else{ +__label__ = 57; +break _74; +} +} +} +} +} +} +} +_84: do { +switch(__label__ ){//multiple entries +case 62: + if(r9 ==0) //_LBB709_70 +{ +__label__ = 65; +break _84; +} +else{ +__label__ = 64; +break _84; +} +break; +case 63: + r9 = (r9 + 1)|0; +__label__ = 64; +break _84; +break; +case 60: + r6 = r15 | 3; + r9 = (r5 + r6)|0; +__label__ = 64; +break _84; +break; +case 57: + r6 = r15 | 2; + r9 = (r5 + r6)|0; +__label__ = 64; +break; +} +} while(0); +switch(__label__ ){//multiple entries +case 65: + r9 = _2E_str26; + r6 = 0; + r13 = heapU8[r5]; + if(r13 ==0) //_LBB709_73 +{ +continue _60; +} +else{ + r13 = (r5 + 1)|0; + r14 = 0; +_92: while(true){ + r6 = (r14 + 1)|0; + r9 = _2E_str26; + r15 = heapU8[r13+r14]; + r14 = r6; +if(!(r15 !=0)) //_LBB709_72 +{ +continue _60; +} +} +} +break; +case 64: + r6 = (r9 - r5)|0; +break; +} +} +else{ +break _60; +} +} +} + r11 = _2E_str538; + r10 = r10 == 0 ? r11 : r10; + r11 = heapU8[r10]; +_96: do { + if(r11 !=0) //_LBB709_77 +{ + r12 = (r10 + 1)|0; + r13 = 0; +_98: while(true){ + r11 = (r13 + 1)|0; + r14 = heapU8[r12+r13]; + r13 = r11; +if(!(r14 !=0)) //_LBB709_78 +{ +break _96; +} +} +} +else{ + r11 = 0; +} +} while(0); + if(r11 !=r6) //_LBB709_86 +{ +break _1; +} +else{ + r11 = 0; +_103: while(true){ + r12 = (r6 + r11)|0; + if(r12 !=0) //_LBB709_81 +{ + r12 = (r5 - r11)|0; + r13 = (r10 - r11)|0; + r11 = (r11 + -1)|0; + r12 = heapU8[r12]; + r13 = heapU8[r13]; + if(r12 !=r13) //_LBB709_86 +{ +break _1; +} +} +else{ +break _52; +} +} +} +} +} while(0); + r7 = (r7 + 1)|0; +} +else{ +break _49; +} +} + heap32[(g0)] = r1; + heap32[(g0+1)] = r3; + _ZN4__rw11__rw_locale9_C_manageEPS0_PKc(i7); + return; +} +} +} while(0); + r1 = heap32[(r2+39)]; + r1 = (r1 + -1)|0; + heap32[(r2+39)] = r1; +if(!(r1 !=0)) //_LBB709_89 +{ + r0 = heap32[(r0)]; +if(!(r0 ==0)) //_LBB709_89 +{ + heap32[(g0)] = r0; + _ZN4__rw11__rw_localeD2Ev(i7); + heap32[(g0)] = r0; + _ZdlPv(i7); +} +} + return; +} + +function _ZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE4init_2E_b; + r1 = heapU8[r0]; +if(!(r1 != 0)) //_LBB710_5 +{ + r1 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE15catalog_bufsize; + r1 = r1 >> 2; + r1 = heap32[(r1)]; +if(!(r1 ==0)) //_LBB710_4 +{ + r2 = 0; +_5: while(true){ + r3 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE8catalogs; + r3 = r3 >> 2; + r4 = r2 << 3; + r3 = heap32[(r3)]; + r3 = (r3 + r4)|0; + r2 = (r2 + 1)|0; + r3 = r3 >> 2; + heap32[(r3)] = -1; +if(!(uint(r2) > 2; + r2 = heap32[(r0)]; +_9: do { + if(r2 !=-1) //_LBB710_27 +{ + if(r1 !=0) //_LBB710_30 +{ + r3 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE10n_catalogs; + r3 = r3 >> 2; + r4 = heap32[(r3)]; + r5 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE8catalogs; + r4 = (r4 + -1)|0; + r5 = r5 >> 2; + heap32[(r3)] = r4; + r3 = heap32[(r5)]; + r2 = r2 << 3; + r2 = (r3 + r2)|0; + r4 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE11largest_cat; + r2 = r2 >> 2; + heap32[(r2)] = -1; + r2 = r4 >> 2; + r0 = heap32[(r0)]; + r4 = heap32[(r2)]; + if(r0 ==r4) //_LBB710_32 +{ +__label__ = 33; //SET chanka +_13: while(true){ + if(r0 >-1) //_LBB710_33 +{ + r6 = r0 << 3; + r6 = (r3 + r6)|0; + r6 = r6 >> 2; + r6 = heap32[(r6)]; + if(r6 ==-1) //_LBB710_35 +{ + r0 = (r0 + -1)|0; +} +else{ +__label__ = 31; +break _13; +} +} +else{ +__label__ = 34; +break _13; +} +} +switch(__label__ ){//multiple entries +case 34: + r0 = r4; +break; +case 31: + heap32[(r2)] = r0; +break; +} + if(uint(r0) >uint(3)) //_LBB710_31 +{ +__label__ = 40; +break _9; +} +else{ + r0 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE11catalog_buf; + if(r3 ==r0) //_LBB710_31 +{ +__label__ = 40; +break _9; +} +else{ + r2 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE15catalog_bufsize; + r2 = r2 >> 2; + heap32[(r2)] = 8; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = 64; + memcpy(i7); +if(!(r3 ==0)) //_LBB710_42 +{ + heap32[(g0)] = r3; + _ZdaPv(i7); +} + heap32[(r5)] = r0; +__label__ = 40; +break _9; +} +} +} +else{ +__label__ = 40; +break _9; +} +} +else{ + r0 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE15catalog_bufsize; + r0 = r0 >> 2; + r0 = heap32[(r0)]; + if(uint(r2) >=uint(r0)) //_LBB710_7 +{ +__label__ = 7; +break _9; +} +else{ + r0 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE8catalogs; + r0 = r0 >> 2; + r0 = heap32[(r0)]; + r1 = r2 << 3; + r0 = (r0 + r1)|0; + r_g0 = r0; + return; +} +} +} +else{ + if(r1 !=0) //_LBB710_8 +{ + r2 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE10n_catalogs; + r2 = r2 >> 2; + r3 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE15catalog_bufsize; + r4 = heap32[(r2)]; + r3 = r3 >> 2; + r5 = heap32[(r3)]; + if(r4 ==r5) //_LBB710_12 +{ + r4 = r4 << 4; + r5 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE8catalogs; + heap32[(g0)] = r4; + _Znaj(i7); + r4 = r_g0; + r5 = r5 >> 2; + r6 = heap32[(r2)]; + r7 = heap32[(r5)]; + r8 = r6 << 3; + heap32[(g0)] = r4; + heap32[(g0+1)] = r7; + heap32[(g0+2)] = r8; + memcpy(i7); + r8 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE11catalog_buf; +if(!(r7 ==r8)) //_LBB710_14 +{ + if(r7 !=0) //_LBB710_15 +{ + heap32[(g0)] = r7; + _ZdaPv(i7); + r6 = heap32[(r2)]; +} +} + heap32[(r5)] = r4; + r5 = heap32[(r3)]; + r5 = r5 << 1; + heap32[(r3)] = r5; +_36: do { +if(!(uint(r6) >=uint(r5))) //_LBB710_20 +{ + r3 = (r6 + 1)|0; +_38: while(true){ + r7 = r3 << 3; + r7 = (r4 + r7)|0; + r7 = r7 >> 2; + heap32[(r7+-2)] = -1; + if(uint(r3) >=uint(r5)) //_LBB710_20 +{ +break _36; +} +else{ + r3 = (r3 + 1)|0; +} +} +} +} while(0); + r3 = r6 << 3; + r3 = (r4 + r3)|0; + heap32[(r0)] = r6; + r3 = (r3 + 4)|0; + r5 = (r1 + 4)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = 4; + memcpy(i7); + r3 = heap32[(r0)]; + r3 = r3 << 3; + r5 = r1 >> 2; + r3 = (r4 + r3)|0; + r4 = heap32[(r5)]; + r3 = r3 >> 2; + heap32[(r3)] = r4; + r0 = heap32[(r0)]; + r3 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE11largest_cat; + r3 = r3 >> 2; + r4 = heap32[(r3)]; +if(!(uint(r0) <=uint(r4))) //_LBB710_22 +{ + heap32[(r3)] = r0; +} + r0 = (r6 + 1)|0; + heap32[(r2)] = r0; + r_g0 = r1; + return; +} +else{ + r3 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE8catalogs; + r3 = r3 >> 2; + heap32[(r0)] = 0; + r3 = heap32[(r3)]; + r5 = r3 >> 2; + r5 = heap32[(r5)]; +_46: do { + if(r5 !=-1) //_LBB710_11 +{ + r5 = 0; +_48: while(true){ + r6 = r5 << 3; + r6 = (r3 + r6)|0; + r5 = (r5 + 1)|0; + r6 = r6 >> 2; + heap32[(r0)] = r5; + r6 = heap32[(r6+2)]; +if(!(r6 !=-1)) //_LBB710_23 +{ +break _46; +} +} +} +else{ + r5 = 0; +} +} while(0); + r6 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE11largest_cat; + r6 = r6 >> 2; + r7 = heap32[(r6)]; +if(!(uint(r5) <=uint(r7))) //_LBB710_26 +{ + heap32[(r6)] = r5; +} + r5 = r5 << 3; + r5 = (r3 + r5)|0; + r5 = (r5 + 4)|0; + r6 = (r1 + 4)|0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = 4; + memcpy(i7); + r0 = heap32[(r0)]; + r0 = r0 << 3; + r5 = r1 >> 2; + r0 = (r3 + r0)|0; + r3 = heap32[(r5)]; + r0 = r0 >> 2; + r4 = (r4 + 1)|0; + heap32[(r0)] = r3; + heap32[(r2)] = r4; + r_g0 = r1; + return; +} +} +else{ +__label__ = 7; +} +} +} while(0); +if (__label__ == 7){ + r1 = 0; +} + r_g0 = r1; + return; +} + +function _ZN4__rw14__rw_cat_closeEi(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + heap32[(fp+-1)] = r0; +if(!(r0 <0)) //_LBB711_20 +{ + r0 = sp + -4; + heap32[(g0)] = r0; + heap32[(g0+1)] = 0; + _ZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataE(i7); + r1 = r_g0; +if(!(r1 ==0)) //_LBB711_20 +{ + r2 = r1 >> 2; + r2 = heap32[(r2)]; +if(!(r2 ==-1)) //_LBB711_20 +{ + r3 = _ZN4__rwL12__rw_catlistE_2E_1; + r4 = _ZN4__rwL12__rw_catlistE_2E_0; + r3 = r3 >> 2; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r6 = heap32[(r3)]; + r6 = (r6 - r5)|0; + r6 = r6 >> 2; + r7 = 0; +_5: while(true){ + if(uint(r6) >uint(r7)) //_LBB711_9 +{ + r8 = r7 << 2; + r8 = (r5 + r8)|0; + r8 = r8 >> 2; + r8 = heap32[(r8)]; + if(r8 ==0) //_LBB711_8 +{ +__label__ = 7; +break _5; +} +else{ + if(r8 !=r2) //_LBB711_6 +{ + r7 = (r7 + 1)|0; +} +else{ +__label__ = 9; +break _5; +} +} +} +else{ +__label__ = 7; +break _5; +} +} +if (__label__ == 7){ + r7 = r6; +} +_13: do { +if(!(uint(r6) <=uint(r7))) //_LBB711_19 +{ + r2 = r7 << 2; + r6 = (r5 + r2)|0; + r6 = r6 >> 2; + r6 = heap32[(r6)]; + if(r6 !=0) //_LBB711_13 +{ + heap32[(g0)] = r6; + _ZdlPv(i7); + r5 = heap32[(r4)]; +} + r2 = (r5 + r2)|0; + r4 = (r7 + 1)|0; + r2 = r2 >> 2; + heap32[(r2)] = 0; +_18: while(true){ + r2 = heap32[(r3)]; + r2 = (r2 - r5)|0; + r2 = r2 >> 2; + if(uint(r2) <=uint(r4)) //_LBB711_19 +{ +break _13; +} +else{ + r2 = r4 << 2; + r2 = (r5 + r2)|0; + r6 = r2 >> 2; + r2 = heap32[(r6)]; + if(r2 !=0) //_LBB711_15 +{ + r4 = (r4 + 1)|0; + heap32[(r6+-1)] = r2; +} +else{ +break _18; +} +} +} + heap32[(r6)] = 0; +} +} while(0); + r2 = (r1 + 4)|0; + heap32[(g0)] = r2; + _ZNSt6localeD1Ev(i7); + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + _ZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataE(i7); + return; +} +} +} + r0 = _2E_str115180; + r1 = _2E_str1116181; + heap32[(g0)] = 7; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r1; + _ZN4__rw10__rw_throwEiz(i7); + return; +} + +function _ZN4__rw16__rw_locale_nameEiPKcRNS_14__rw_pod_arrayIcLj256EEE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; +var __label__ = 0; + i7 = sp + -368;var g0 = i7>>2; // save stack + r0 = _ZZN4__rw16__rw_locale_nameEiPKcRNS_14__rw_pod_arrayIcLj256EEEE11locale_root; + r1 = heap32[(fp)]; + r2 = heap32[(fp+1)]; + r3 = heap32[(fp+2)]; + r4 = heapU8[r0]; + r5 = 0; + heap8[sp+-259] = r5; + r6 = heapU8[r2]; +_1: do { + if(r6 !=0) //_LBB712_2 +{ + r7 = (r2 + 1)|0; +_3: while(true){ + r6 = (r5 + 1)|0; + r8 = heapU8[r7+r5]; + r5 = r6; + if(r8 !=0) //_LBB712_3 +{ +continue _3; +} +else{ +break _1; +} +} +} +else{ + r6 = 0; +} +} while(0); + r4 = r4 & 255; +_7: do { + if(r4 !=0) //_LBB712_6 +{ + r4 = (r6 + 1)|0; + r5 = (r0 + 1)|0; +_9: while(true){ + r4 = (r4 + 1)|0; + r7 = (r5 + 1)|0; + r8 = heapU8[r5]; + r5 = r7; +if(!(r8 !=0)) //_LBB712_7 +{ +break _9; +} +} + if(uint(r4) >uint(258)) //_LBB712_5 +{ +__label__ = 5; +} +else{ + r4 = sp + -259; + heap32[(g0)] = r4; + heap32[(g0+1)] = r0; + strcpy(i7); + r0 = heapU8[sp+-259]; +_13: do { + if(r0 !=0) //_LBB712_11 +{ + r0 = (r4 + 1)|0; + r7 = 0; +_15: while(true){ + r5 = (r7 + 1)|0; + r8 = heapU8[r0+r7]; + r7 = r5; +if(!(r8 !=0)) //_LBB712_12 +{ +break _13; +} +} +} +else{ + r5 = 0; +} +} while(0); + r7 = 47; + r0 = (r5 + 1)|0; + r8 = 0; + heap8[r4+r5] = r7; + heap8[r4+r0] = r8; + r5 = heapU8[sp+-259]; + if(r5 !=0) //_LBB712_15 +{ + r5 = (r4 + 1)|0; +_21: while(true){ + r4 = (r8 + 1)|0; + r7 = heapU8[r5+r8]; + r8 = r4; + if(r7 !=0) //_LBB712_16 +{ +continue _21; +} +else{ +__label__ = 17; +break _7; +} +} +} +else{ + r4 = 0; +__label__ = 17; +} +} +} +else{ +__label__ = 5; +} +} while(0); +if (__label__ == 5){ + r0 = 0; + r4 = r0; +} + r4 = (r4 + r6)|0; +if(!(uint(r4) >uint(258))) //_LBB712_33 +{ + r4 = sp + -259; + r0 = (r4 + r0)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + strcpy(i7); + r0 = _2E_str37683; + heap32[(g0)] = r4; + heap32[(g0+1)] = r0; + strcmp(i7); + r0 = r_g0; + if(r0 ==0) //_LBB712_28 +{ + r1 = heapU8[r2]; +_31: do { + if(r1 !=0) //_LBB712_30 +{ + r0 = (r2 + 1)|0; + r4 = 0; +_33: while(true){ + r1 = (r4 + 1)|0; + r5 = heapU8[r0+r4]; + r4 = r1; +if(!(r5 !=0)) //_LBB712_31 +{ +break _31; +} +} +} +else{ + r1 = 0; +} +} while(0); + r0 = r3 >> 2; + heap32[(r0)] = 0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r1; + _ZN4__rw14__rw_pod_arrayIcLj256EE6appendEPKcj(i7); + r1 = heap32[(r0+1)]; + r_g0 = r1; + return; +} +else{ + r2 = _2E_str1648; + heap32[(g0)] = r4; + heap32[(g0+1)] = r2; + fopen(i7); + r2 = r_g0; +if(!(r2 ==0)) //_LBB712_33 +{ + if(uint(r2) > 2; + r0 = heap32[(r0)]; + r0 = r0 >> 2; + r0 = heap32[(r0+7)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = 2; + __FUNCTION_TABLE__[(r0)>>2](i7); +} +else{ + r3 = r2 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+7)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = 2; + __FUNCTION_TABLE__[(r3)>>2](i7); + r3 = r2; +} + r0 = r3 >> 2; + r0 = heap32[(r0)]; + r0 = r0 >> 2; + r0 = heap32[(r0+5)]; + heap32[(g0)] = r3; + __FUNCTION_TABLE__[(r0)>>2](i7); + if(uint(r2) >uint(9)) //_LBB712_25 +{ + r3 = r2; +} +else{ + r3 = _ZL13s_file_stdout; +} + r0 = r3 >> 2; + r0 = heap32[(r0)]; + r0 = r0 >> 2; + r0 = heap32[(r0+4)]; + heap32[(g0)] = r3; + __FUNCTION_TABLE__[(r0)>>2](i7); +if(!(uint(r2) > 2; + heap32[(r0+20)] = 0; + heap32[(r0+22)] = r1; + heap32[(r0+21)] = 0; + r0 = 0; + r_g0 = r0; + return; +} + +function _ZNKSt8messagesIcE8do_closeEi(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + heap32[(g0)] = r0; + _ZN4__rw14__rw_cat_closeEi(i7); + return; +} + +function _ZNKSt8messagesIcE6do_getEiiiRKSs(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + heap32[(fp+-1)] = r0; +if(!(r0 <0)) //_LBB714_8 +{ + r0 = sp + -4; + heap32[(g0)] = r0; + heap32[(g0+1)] = 0; + _ZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataE(i7); + r0 = r_g0; +if(!(r0 ==0)) //_LBB714_8 +{ + r0 = r0 >> 2; + r0 = heap32[(r0)]; +if(!(r0 ==-1)) //_LBB714_8 +{ + r1 = _ZN4__rwL12__rw_catlistE_2E_1; + r2 = _ZN4__rwL12__rw_catlistE_2E_0; + r1 = r1 >> 2; + r2 = r2 >> 2; + r2 = heap32[(r2)]; + r1 = heap32[(r1)]; + r1 = (r1 - r2)|0; + r1 = r1 >> 2; + r3 = 0; +_5: while(true){ + if(uint(r1) <=uint(r3)) //_LBB714_8 +{ +break _5; +} +else{ + r4 = r3 << 2; + r4 = (r2 + r4)|0; + r4 = r4 >> 2; + r4 = heap32[(r4)]; + if(r4 ==0) //_LBB714_8 +{ +break _5; +} +else{ + if(r4 !=r0) //_LBB714_4 +{ + r3 = (r3 + 1)|0; +continue _5; +} +else{ +break _5; +} +} +} +} +} +} +} + r0 = heap32[(fp)]; + r1 = heap32[(fp+5)]; + r1 = r1 >> 2; + r2 = heap32[(r1)]; + r3 = r2 >> 2; + r4 = heap32[(r3+-3)]; + if(r4 ==-1) //_LBB714_11 +{ + r2 = heap32[(r3+-1)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r2; + _ZNSs10_C_get_repEjj(i7); + r0 = r0 >> 2; + r3 = (r_g0 + 12)|0; + heap32[(r0)] = r3; + r0 = heap32[(r1)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r2; + memcpy(i7); +} +else{ + r1 = (r2 + -12)|0; + r0 = r0 >> 2; + r3 = _ZNSs11_C_null_refE; + heap32[(r0)] = r2; +if(!(r1 ==r3)) //_LBB714_12 +{ + r0 = r1 >> 2; + r1 = (r4 + 1)|0; + heap32[(r0)] = r1; + return; +} +} + return; +} + +function _ZNKSt8messagesIcE7do_openERKSsRKSt6locale(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + heap32[(g0)] = 1; + _Znwj(i7); + r0 = r_g0; +if(!(r0 ==0)) //_LBB715_2 +{ + heap32[(g0)] = r0; + _ZdlPv(i7); +} + r0 = -1; + r_g0 = r0; + return; +} + +function _ZNSt8messagesIcED0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN4__rw10__rw_facetE; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(r2+5)] = -1; + r1 = heap32[(r2+1)]; + r3 = heap32[(r2+2)]; +if(!(r1 ==r3)) //_LBB716_3 +{ +if(!(r1 ==0)) //_LBB716_3 +{ + heap32[(g0)] = r1; + _ZdaPv(i7); +} +} + r1 = _ZZN4__rw10__rw_facetD4EvE9destroyed; + heap32[(r2+1)] = r1; + r1 = heap32[(r2+4)]; +if(!(r1 !=-1)) //_LBB716_5 +{ + r1 = heap32[(r2+3)]; + heap32[(g0)] = r1; + _ZdlPv(i7); +} + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZNSt8messagesIcED1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVN4__rw10__rw_facetE; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + heap32[(r0+5)] = -1; + r1 = heap32[(r0+1)]; + r2 = heap32[(r0+2)]; +if(!(r1 ==r2)) //_LBB717_3 +{ +if(!(r1 ==0)) //_LBB717_3 +{ + heap32[(g0)] = r1; + _ZdaPv(i7); +} +} + r1 = _ZZN4__rw10__rw_facetD4EvE9destroyed; + heap32[(r0+1)] = r1; + r1 = heap32[(r0+4)]; +if(!(r1 !=-1)) //_LBB717_5 +{ + r0 = heap32[(r0+3)]; + heap32[(g0)] = r0; + _ZdlPv(i7); +} + return; +} + +function _ZN4__rw14__rw_pod_arrayIcLj256EE6appendEPKcj(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(fp+2)]; + r3 = heap32[(r1)]; + r4 = (r3 + r2)|0; + r5 = heap32[(fp+1)]; + if(uint(r4) >uint(255)) //_LBB718_2 +{ + r3 = (r4 + 1)|0; + heap32[(g0)] = r3; + _Znaj(i7); + r7 = r_g0; + r3 = heap32[(r1)]; + r6 = heap32[(r1+1)]; + heap32[(g0)] = r7; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r3; + memcpy(i7); + r3 = heap32[(r1+1)]; + r6 = (r0 + 8)|0; +if(!(r3 ==r6)) //_LBB718_5 +{ +if(!(r3 ==0)) //_LBB718_5 +{ + heap32[(g0)] = r3; + _ZdaPv(i7); +} +} + r6 = (r0 + 4)|0; + heap32[(r1+1)] = r7; + r3 = heap32[(r1)]; +} +else{ + r6 = (r0 + 4)|0; + r7 = heap32[(r1+1)]; +} + r3 = (r7 + r3)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r2; + memcpy(i7); + r2 = r6 >> 2; + heap32[(r1)] = r4; + r1 = heap32[(r2)]; + r2 = 0; + heap8[r1+r4] = r2; + r_g0 = r0; + return; +} + +function _ZNSs10_C_get_repEjj(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; +_1: do { + if(uint(r0) uint(-14)) //_LBB719_3 +{ + r0 = _2E_str2360; + r2 = _2E_str3361; + heap32[(g0)] = 8; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r1; + heap32[(g0+4)] = -14; + _ZN4__rw10__rw_throwEiz(i7); + r0 = r1; +__label__ = 8; +} +else{ + r0 = r1; +__label__ = 6; +} +} +} while(0); +if (__label__ == 6){ + if(r0 ==0) //_LBB719_9 +{ + r0 = _ZNSs11_C_null_refE; + r_g0 = r0; + return; +} +} + r2 = (r0 + 14)|0; + heap32[(g0)] = r2; + _Znwj(i7); + r2 = r_g0; +if(!(r2 !=0)) //_LBB719_12 +{ + heap32[(g0)] = 3; + _ZN4__rw10__rw_throwEiz(i7); +} + r3 = r2 >> 2; + heap32[(r3)] = 0; + heap32[(r3+1)] = r0; + r0 = (r1 + r2)|0; + r4 = 0; + heap32[(r3+2)] = r1; + heap8[r0+12] = r4; + r_g0 = r2; + return; +} + +function _ZNKSt9type_info15__is_function_pEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 0; + r_g0 = r0; + return; +} + +function _ZNSt9type_infoD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVSt9type_info; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZNSt9type_infoD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVSt9type_info; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function block_merge_next(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = r0 >> 2; + r2 = heap32[(r1+1)]; + r2 = (r2 + -4)|0; + r2 = r2 & -4; + r3 = (r0 + 8)|0; + r4 = (r2 + 4)|0; + r4 = (r3 + r4)|0; + r4 = r4 >> 2; + r5 = heap32[(r4)]; + r6 = r5 & 1; +if(!(r6 ==0)) //_LBB723_9 +{ + r6 = heap32[(fp)]; + r7 = (r3 + r2)|0; + r8 = r5 & -4; + if(uint(r8) >uint(255)) //_LBB723_3 +{ + r5 = r8 >>> 1; + r5 = r8 | r5; + r9 = r5 >>> 2; + r5 = r5 | r9; + r9 = r5 >>> 4; + r5 = r5 | r9; + r9 = r5 >>> 8; + r5 = r5 | r9; + r9 = r5 >>> 16; + r5 = r5 | r9; + r9 = r5 ^ -1; + r10 = 1431655765; + r9 = r9 >>> 1; + r5 = r10 & (~r5); + r9 = r9 & 1431655765; + r5 = (r5 + r9)|0; + r9 = r5 >>> 2; + r5 = r5 & 858993459; + r9 = r9 & 858993459; + r5 = (r5 + r9)|0; + r9 = r5 >>> 4; + r5 = r5 & 252645135; + r9 = r9 & 252645135; + r5 = (r5 + r9)|0; + r9 = r5 >>> 8; + r5 = r5 & 16711935; + r9 = r9 & 16711935; + r5 = (r5 + r9)|0; + r9 = r5 & 65535; + r5 = r5 >>> 16; + r10 = 26; + r5 = (r9 + r5)|0; + r9 = (r10 - r5)|0; + r8 = r8 >>> r9; + r9 = 24; + r8 = r8 ^ 32; + r5 = (r9 - r5)|0; +} +else{ + r8 = r5 >>> 3; + r5 = 0; +} + r2 = (r2 + r3)|0; + r2 = r2 >> 2; + r9 = r5 << 7; + r10 = heap32[(r2+2)]; + r2 = heap32[(r2+3)]; + r9 = (r6 + r9)|0; + r11 = r8 << 2; + r9 = (r9 + r11)|0; + r11 = r10 >> 2; + r12 = r2 >> 2; + heap32[(r11+3)] = r2; + r2 = r9 >> 2; + heap32[(r12+2)] = r10; + r2 = heap32[(r2+24)]; +if(!(r2 !=r7)) //_LBB723_8 +{ + r2 = (r9 + 96)|0; + r2 = r2 >> 2; + r7 = block_null; + heap32[(r2)] = r10; +if(!(r10 !=r7)) //_LBB723_8 +{ + r2 = r5 << 2; + r2 = (r6 + r2)|0; + r2 = r2 >> 2; + r7 = 1; + r8 = r7 << r8; + r9 = heap32[(r2+1)]; + r8 = r9 & (~r8); + heap32[(r2+1)] = r8; +if(!(r8 !=0)) //_LBB723_8 +{ + r2 = r6 >> 2; + r5 = r7 << r5; + r6 = heap32[(r2)]; + r5 = r6 & (~r5); + heap32[(r2)] = r5; +} +} +} + r2 = heap32[(r4)]; + r4 = heap32[(r1+1)]; + r2 = r2 & -4; + r2 = (r2 + r4)|0; + r4 = r2 & -4; + r3 = (r3 + r4)|0; + r2 = (r2 + 4)|0; + r3 = r3 >> 2; + heap32[(r1+1)] = r2; + heap32[(r3)] = r0; +} + r_g0 = r0; + return; +} + +function tlsf_free(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; +if(!(r0 ==0)) //_LBB724_15 +{ + r1 = heap32[(fp)]; + r2 = r0 >> 2; + r3 = heap32[(r2+-1)]; + r4 = s_current_memory; + r5 = (r3 + -4)|0; + r4 = r4 >> 2; + r5 = r5 & -4; + r6 = heap32[(r4)]; + r3 = r3 & -4; + r5 = (r0 + r5)|0; + r3 = (r6 - r3)|0; + r0 = (r0 + -8)|0; + r5 = r5 >> 2; + heap32[(r4)] = r3; + heap32[(r5)] = r0; + r3 = heap32[(r5+1)]; + r3 = r3 | 2; + heap32[(r5+1)] = r3; + r3 = heap32[(r2+-1)]; + r4 = r3 | 1; + heap32[(r2+-1)] = r4; + r3 = r3 & 2; + if(r3 !=0) //_LBB724_3 +{ + r0 = r0 >> 2; + r0 = heap32[(r0)]; + r3 = r0 >> 2; + r4 = heap32[(r3+1)]; + r5 = r4 & -4; + if(uint(r5) >uint(255)) //_LBB724_5 +{ + r4 = r5 >>> 1; + r4 = r5 | r4; + r6 = r4 >>> 2; + r4 = r4 | r6; + r6 = r4 >>> 4; + r4 = r4 | r6; + r6 = r4 >>> 8; + r4 = r4 | r6; + r6 = r4 >>> 16; + r4 = r4 | r6; + r6 = r4 ^ -1; + r7 = 1431655765; + r6 = r6 >>> 1; + r4 = r7 & (~r4); + r6 = r6 & 1431655765; + r4 = (r4 + r6)|0; + r6 = r4 >>> 2; + r4 = r4 & 858993459; + r6 = r6 & 858993459; + r4 = (r4 + r6)|0; + r6 = r4 >>> 4; + r4 = r4 & 252645135; + r6 = r6 & 252645135; + r4 = (r4 + r6)|0; + r6 = r4 >>> 8; + r4 = r4 & 16711935; + r6 = r6 & 16711935; + r4 = (r4 + r6)|0; + r6 = r4 & 65535; + r4 = r4 >>> 16; + r7 = 26; + r4 = (r6 + r4)|0; + r6 = (r7 - r4)|0; + r5 = r5 >>> r6; + r6 = 24; + r5 = r5 ^ 32; + r4 = (r6 - r4)|0; +} +else{ + r5 = r4 >>> 3; + r4 = 0; +} + r6 = r4 << 7; + r7 = heap32[(r3+2)]; + r8 = heap32[(r3+3)]; + r6 = (r1 + r6)|0; + r9 = r5 << 2; + r6 = (r6 + r9)|0; + r9 = r7 >> 2; + r10 = r8 >> 2; + heap32[(r9+3)] = r8; + r8 = r6 >> 2; + heap32[(r10+2)] = r7; + r8 = heap32[(r8+24)]; +if(!(r8 !=r0)) //_LBB724_10 +{ + r6 = (r6 + 96)|0; + r6 = r6 >> 2; + r8 = block_null; + heap32[(r6)] = r7; +if(!(r7 !=r8)) //_LBB724_10 +{ + r6 = r4 << 2; + r6 = (r1 + r6)|0; + r6 = r6 >> 2; + r7 = 1; + r5 = r7 << r5; + r8 = heap32[(r6+1)]; + r5 = r8 & (~r5); + heap32[(r6+1)] = r5; +if(!(r5 !=0)) //_LBB724_10 +{ + r5 = r1 >> 2; + r4 = r7 << r4; + r6 = heap32[(r5)]; + r4 = r6 & (~r4); + heap32[(r5)] = r4; +} +} +} + r4 = (r0 + 8)|0; + r2 = heap32[(r2+-1)]; + r5 = heap32[(r3+1)]; + r2 = r2 & -4; + r2 = (r2 + r5)|0; + r5 = r2 & -4; + r4 = (r4 + r5)|0; + r2 = (r2 + 4)|0; + r4 = r4 >> 2; + heap32[(r3+1)] = r2; + heap32[(r4)] = r0; +} + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + block_merge_next(i7); + r0 = r_g0; + r2 = r0 >> 2; + r2 = heap32[(r2+1)]; + r3 = r2 & -4; + if(uint(r3) >uint(255)) //_LBB724_13 +{ + r2 = r3 >>> 1; + r2 = r3 | r2; + r4 = r2 >>> 2; + r2 = r2 | r4; + r4 = r2 >>> 4; + r2 = r2 | r4; + r4 = r2 >>> 8; + r2 = r2 | r4; + r4 = r2 >>> 16; + r2 = r2 | r4; + r4 = r2 ^ -1; + r5 = 1431655765; + r4 = r4 >>> 1; + r2 = r5 & (~r2); + r4 = r4 & 1431655765; + r2 = (r2 + r4)|0; + r4 = r2 >>> 2; + r2 = r2 & 858993459; + r4 = r4 & 858993459; + r2 = (r2 + r4)|0; + r4 = r2 >>> 4; + r2 = r2 & 252645135; + r4 = r4 & 252645135; + r2 = (r2 + r4)|0; + r4 = r2 >>> 8; + r2 = r2 & 16711935; + r4 = r4 & 16711935; + r2 = (r2 + r4)|0; + r4 = r2 & 65535; + r2 = r2 >>> 16; + r5 = 26; + r2 = (r4 + r2)|0; + r4 = (r5 - r2)|0; + r3 = r3 >>> r4; + r4 = 24; + r3 = r3 ^ 32; + r2 = (r4 - r2)|0; +} +else{ + r3 = r2 >>> 3; + r2 = 0; +} + r4 = r2 << 7; + r4 = (r1 + r4)|0; + r5 = r3 << 2; + r4 = (r4 + r5)|0; + r4 = r4 >> 2; + r5 = heap32[(r4+24)]; + r6 = r0 >> 2; + r7 = block_null; + heap32[(r6+2)] = r5; + r5 = r5 >> 2; + heap32[(r6+3)] = r7; + heap32[(r5+3)] = r0; + r5 = 1; + r6 = r1 >> 2; + heap32[(r4+24)] = r0; + r0 = r2 << 2; + r2 = r5 << r2; + r4 = heap32[(r6)]; + r0 = (r1 + r0)|0; + r1 = r4 | r2; + r0 = r0 >> 2; + heap32[(r6)] = r1; + r1 = r5 << r3; + r2 = heap32[(r0+1)]; + r1 = r2 | r1; + heap32[(r0+1)] = r1; +} + return; +} + +function block_prepare_used(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + if(r0 ==0) //_LBB725_8 +{ + r0 = 0; + r_g0 = r0; + return; +} +else{ + r1 = heap32[(fp+2)]; + r2 = r0 >> 2; + r3 = heap32[(r2+1)]; + r4 = r3 & -4; + r5 = (r1 + 16)|0; + if(uint(r4) >=uint(r5)) //_LBB725_3 +{ + r3 = heap32[(fp)]; + r5 = (r0 + 8)|0; + r6 = (r5 + r1)|0; + r7 = r6 >> 2; + r8 = -4; + r9 = heap32[(r7)]; + r8 = (r8 - r1)|0; + r9 = r9 & 3; + r4 = (r8 + r4)|0; + r4 = r9 | r4; + heap32[(r7)] = r4; + r4 = heap32[(r2+1)]; + r4 = r4 & 3; + r4 = r4 | r1; + heap32[(r2+1)] = r4; + r4 = heap32[(r7)]; + r4 = (r4 + -4)|0; + r8 = (r1 + 4)|0; + r4 = r4 & -4; + r1 = (r1 + 8)|0; + r9 = (r4 + r8)|0; + r4 = (r4 + r1)|0; + r9 = (r5 + r9)|0; + r4 = (r5 + r4)|0; + r6 = (r6 + -4)|0; + r9 = r9 >> 2; + r4 = r4 >> 2; + heap32[(r9)] = r6; + r9 = heap32[(r4)]; + r9 = r9 | 2; + heap32[(r4)] = r9; + r4 = heap32[(r7)]; + r4 = r4 | 1; + heap32[(r7)] = r4; + r4 = heap32[(r2+1)]; + r4 = (r4 + -4)|0; + r4 = r4 & -4; + r4 = (r5 + r4)|0; + r4 = r4 >> 2; + heap32[(r4)] = r0; + r4 = heap32[(r7)]; + r9 = r4 & -4; + r10 = r4 | 2; + heap32[(r7)] = r10; + if(uint(r9) >uint(255)) //_LBB725_5 +{ + r4 = r9 >>> 1; + r4 = r9 | r4; + r7 = r4 >>> 2; + r4 = r4 | r7; + r7 = r4 >>> 4; + r4 = r4 | r7; + r7 = r4 >>> 8; + r4 = r4 | r7; + r7 = r4 >>> 16; + r4 = r4 | r7; + r7 = r4 ^ -1; + r10 = 1431655765; + r7 = r7 >>> 1; + r4 = r10 & (~r4); + r7 = r7 & 1431655765; + r4 = (r4 + r7)|0; + r7 = r4 >>> 2; + r4 = r4 & 858993459; + r7 = r7 & 858993459; + r4 = (r4 + r7)|0; + r7 = r4 >>> 4; + r4 = r4 & 252645135; + r7 = r7 & 252645135; + r4 = (r4 + r7)|0; + r7 = r4 >>> 8; + r4 = r4 & 16711935; + r7 = r7 & 16711935; + r4 = (r4 + r7)|0; + r7 = r4 & 65535; + r4 = r4 >>> 16; + r10 = 26; + r4 = (r7 + r4)|0; + r7 = (r10 - r4)|0; + r9 = r9 >>> r7; + r7 = 24; + r9 = r9 ^ 32; + r4 = (r7 - r4)|0; +} +else{ + r9 = r4 >>> 3; + r4 = 0; +} + r7 = r4 << 7; + r7 = (r3 + r7)|0; + r10 = r9 << 2; + r7 = (r7 + r10)|0; + r7 = r7 >> 2; + r8 = (r5 + r8)|0; + r1 = (r5 + r1)|0; + r5 = heap32[(r7+24)]; + r8 = r8 >> 2; + r1 = r1 >> 2; + r10 = block_null; + heap32[(r8)] = r5; + r5 = r5 >> 2; + heap32[(r1)] = r10; + heap32[(r5+3)] = r6; + r1 = 1; + r5 = r3 >> 2; + heap32[(r7+24)] = r6; + r6 = r4 << 2; + r4 = r1 << r4; + r7 = heap32[(r5)]; + r3 = (r3 + r6)|0; + r4 = r7 | r4; + r3 = r3 >> 2; + heap32[(r5)] = r4; + r1 = r1 << r9; + r4 = heap32[(r3+1)]; + r1 = r4 | r1; + heap32[(r3+1)] = r1; + r3 = heap32[(r2+1)]; +} + r1 = r3 & -4; + r0 = (r0 + 8)|0; + r1 = (r0 + r1)|0; + r1 = r1 >> 2; + r3 = heap32[(r1)]; + r3 = r3 & -3; + heap32[(r1)] = r3; + r1 = heap32[(r2+1)]; + r1 = r1 & -2; + heap32[(r2+1)] = r1; + r_g0 = r0; + return; +} +} + +function block_locate_free(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; +_1: do { +if(!(r0 ==0)) //_LBB726_16 +{ + r1 = heap32[(fp)]; + if(uint(r0) >uint(31)) //_LBB726_3 +{ + r2 = r0 >>> 1; + r2 = r0 | r2; + r3 = r2 >>> 2; + r2 = r2 | r3; + r3 = r2 >>> 4; + r2 = r2 | r3; + r3 = r2 >>> 8; + r2 = r2 | r3; + r3 = r2 >>> 16; + r2 = r2 | r3; + r3 = r2 ^ -1; + r4 = 1431655765; + r3 = r3 >>> 1; + r2 = r4 & (~r2); + r3 = r3 & 1431655765; + r2 = (r2 + r3)|0; + r3 = r2 >>> 2; + r2 = r2 & 858993459; + r3 = r3 & 858993459; + r2 = (r2 + r3)|0; + r3 = r2 >>> 4; + r2 = r2 & 252645135; + r3 = r3 & 252645135; + r2 = (r2 + r3)|0; + r3 = r2 >>> 8; + r2 = r2 & 16711935; + r3 = r3 & 16711935; + r2 = (r2 + r3)|0; + r3 = r2 & 65535; + r2 = r2 >>> 16; + r5 = 26; + r2 = (r3 + r2)|0; + r3 = 1; + r2 = (r5 - r2)|0; + r2 = r3 << r2; + r0 = (r0 + r2)|0; + r0 = (r0 + -1)|0; + if(uint(r0) >uint(255)) //_LBB726_5 +{ + r2 = r0 >>> 1; + r2 = r0 | r2; + r3 = r2 >>> 2; + r2 = r2 | r3; + r3 = r2 >>> 4; + r2 = r2 | r3; + r3 = r2 >>> 8; + r2 = r2 | r3; + r3 = r2 >>> 16; + r2 = r2 | r3; + r3 = r2 ^ -1; + r3 = r3 >>> 1; + r4 = r4 & (~r2); + r2 = r3 & 1431655765; + r4 = (r4 + r2)|0; + r2 = r4 >>> 2; + r4 = r4 & 858993459; + r2 = r2 & 858993459; + r4 = (r4 + r2)|0; + r2 = r4 >>> 4; + r4 = r4 & 252645135; + r2 = r2 & 252645135; + r4 = (r4 + r2)|0; + r2 = r4 >>> 8; + r4 = r4 & 16711935; + r2 = r2 & 16711935; + r4 = (r4 + r2)|0; + r2 = r4 & 65535; + r4 = r4 >>> 16; + r4 = (r2 + r4)|0; + r2 = (r5 - r4)|0; + r0 = r0 >>> r2; + r2 = 24; + r0 = r0 ^ 32; + r4 = (r2 - r4)|0; +__label__ = 5; +} +else{ +__label__ = 3; +} +} +else{ +__label__ = 3; +} +if (__label__ == 3){ + r0 = r0 >>> 3; + r4 = 0; +} + r2 = r4 << 2; + r2 = (r1 + r2)|0; + r2 = r2 >> 2; + r3 = -1; + r2 = heap32[(r2+1)]; + r0 = r3 << r0; + r0 = r2 & r0; + if(r0 ==0) //_LBB726_8 +{ + r0 = r1 >> 2; + r4 = (r4 + 1)|0; + r0 = heap32[(r0)]; + r4 = r3 << r4; + r0 = r0 & r4; + if(r0 ==0) //_LBB726_16 +{ +break _1; +} +else{ + r4 = (r0 + -1)|0; + r0 = r4 & (~r0); + r4 = r0 >>> 1; + r0 = r0 & 1431655765; + r4 = r4 & 1431655765; + r0 = (r0 + r4)|0; + r4 = r0 >>> 2; + r0 = r0 & 858993459; + r4 = r4 & 858993459; + r0 = (r0 + r4)|0; + r4 = r0 >>> 4; + r0 = r0 & 252645135; + r4 = r4 & 252645135; + r0 = (r0 + r4)|0; + r4 = r0 >>> 8; + r0 = r0 & 16711935; + r4 = r4 & 16711935; + r0 = (r0 + r4)|0; + r4 = r0 & 65535; + r0 = r0 >>> 16; + r4 = (r4 + r0)|0; + r0 = r4 << 2; + r0 = (r1 + r0)|0; + r0 = r0 >> 2; + r0 = heap32[(r0+1)]; +} +} + r2 = (r0 + -1)|0; + r2 = r2 & (~r0); + r5 = r2 >>> 1; + r2 = r2 & 1431655765; + r5 = r5 & 1431655765; + r2 = (r2 + r5)|0; + r5 = r2 >>> 2; + r2 = r2 & 858993459; + r5 = r5 & 858993459; + r2 = (r2 + r5)|0; + r5 = r2 >>> 4; + r2 = r2 & 252645135; + r5 = r5 & 252645135; + r2 = (r2 + r5)|0; + r5 = r2 >>> 8; + r2 = r2 & 16711935; + r5 = r5 & 16711935; + r2 = (r2 + r5)|0; + r5 = r2 & 65535; + r2 = r2 >>> 16; + r2 = (r5 + r2)|0; + r0 = r0 == 0 ? r3 : r2; + r2 = r4 << 7; + r2 = (r1 + r2)|0; + r3 = r0 << 2; + r2 = (r2 + r3)|0; + r3 = r2 >> 2; + r3 = heap32[(r3+24)]; +if(!(r3 ==0)) //_LBB726_16 +{ + r2 = (r2 + 96)|0; + r5 = r3 >> 2; + r6 = heap32[(r5+2)]; + r5 = heap32[(r5+3)]; + r7 = r6 >> 2; + r8 = r5 >> 2; + heap32[(r7+3)] = r5; + r2 = r2 >> 2; + heap32[(r8+2)] = r6; + r5 = heap32[(r2)]; +if(!(r5 !=r3)) //_LBB726_15 +{ + r5 = block_null; + heap32[(r2)] = r6; +if(!(r6 !=r5)) //_LBB726_15 +{ + r2 = r4 << 2; + r2 = (r1 + r2)|0; + r2 = r2 >> 2; + r5 = 1; + r0 = r5 << r0; + r6 = heap32[(r2+1)]; + r0 = r6 & (~r0); + heap32[(r2+1)] = r0; +if(!(r0 !=0)) //_LBB726_15 +{ + r0 = r1 >> 2; + r1 = r5 << r4; + r2 = heap32[(r0)]; + r1 = r2 & (~r1); + heap32[(r0)] = r1; +} +} +} + r_g0 = r3; + return; +} +} +} while(0); + r0 = 0; + r_g0 = r0; + return; +} + +function tlsf_malloc(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r2 = (r0 + -1)|0; + if(uint(r2) > 2; + r0 = r0 >> 2; + r2 = heap32[(r2+1)]; + r3 = heap32[(r0)]; + r2 = r2 & -4; + r2 = (r3 + r2)|0; + r3 = s_max_memory; + r3 = r3 >> 2; + heap32[(r0)] = r2; + r0 = heap32[(r3)]; +if(!(uint(r2) <=uint(r0))) //_LBB727_5 +{ + heap32[(r3)] = r2; +} + r_g0 = r1; + return; +} + +function tlsf_realloc(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r2 = heap32[(fp+2)]; +if(!(r0 ==0)) //_LBB728_3 +{ +if(!(r2 !=0)) //_LBB728_3 +{ + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + tlsf_free(i7); + r0 = 0; + r_g0 = r0; + return; +} +} + if(r0 !=0) //_LBB728_10 +{ + r3 = r0 >> 2; + r4 = heap32[(r3+-1)]; + r5 = r4 & -4; + r6 = (r0 + r5)|0; + r6 = r6 >> 2; + r6 = heap32[(r6)]; + r7 = r6 & -4; + r7 = (r5 + r7)|0; + r8 = (r2 + -1)|0; + r9 = (r0 + -8)|0; + r7 = (r7 + 4)|0; + if(uint(r8) uint(r5)) //_LBB728_15 +{ + r4 = r6 & 1; +if(!(r4 ==0)) //_LBB728_17 +{ + if(uint(r10) <=uint(r7)) //_LBB728_24 +{ + heap32[(g0)] = r1; + heap32[(g0+1)] = r9; + block_merge_next(i7); + r4 = heap32[(r3+-1)]; + r4 = r4 & -4; + r4 = (r0 + r4)|0; + r4 = r4 >> 2; + r9 = heap32[(r4)]; + r9 = r9 & -3; + heap32[(r4)] = r9; + r4 = heap32[(r3+-1)]; + r4 = r4 & -2; + heap32[(r3+-1)] = r4; +break _11; +} +} + if(uint(r8) > 2; + r3 = r3 >> 2; + r4 = heap32[(r4+1)]; + r10 = heap32[(r3)]; + r4 = r4 & -4; + r4 = (r10 + r4)|0; + r10 = s_max_memory; + r10 = r10 >> 2; + heap32[(r3)] = r4; + r3 = heap32[(r10)]; +if(!(uint(r4) <=uint(r3))) //_LBB728_22 +{ + heap32[(r10)] = r4; +} + if(r9 ==0) //_LBB728_34 +{ + r_g0 = r9; + return; +} +else{ + r3 = uint(r5) >= uint(r2) ? r2 : r5; + heap32[(g0)] = r9; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r3; + memcpy(i7); + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + tlsf_free(i7); + r_g0 = r9; + return; +} +} +} while(0); + r9 = s_current_memory; + r9 = r9 >> 2; + r2 = heap32[(r9)]; + r2 = (r2 - r5)|0; + r5 = r4 & -4; + heap32[(r9)] = r2; + r6 = (r10 + 16)|0; + if(uint(r5) >=uint(r6)) //_LBB728_27 +{ + r4 = (r0 + r10)|0; + r6 = r4 >> 2; + r7 = -4; + r8 = heap32[(r6)]; + r7 = (r7 - r10)|0; + r8 = r8 & 3; + r5 = (r7 + r5)|0; + r5 = r8 | r5; + heap32[(r6)] = r5; + r5 = heap32[(r3+-1)]; + r5 = r5 & 3; + r5 = r5 | r10; + heap32[(r3+-1)] = r5; + r5 = heap32[(r6)]; + r5 = (r5 + -4)|0; + r5 = r5 & -4; + r5 = (r10 + r5)|0; + r5 = (r5 + r0)|0; + r4 = (r4 + -4)|0; + r5 = r5 >> 2; + heap32[(r5+1)] = r4; + r7 = heap32[(r5+2)]; + r7 = r7 | 2; + heap32[(r5+2)] = r7; + r5 = heap32[(r6)]; + r5 = r5 | 1; + r5 = r5 & -3; + heap32[(r6)] = r5; + heap32[(g0)] = r1; + heap32[(g0+1)] = r4; + block_merge_next(i7); + r4 = r_g0; + r5 = r4 >> 2; + r5 = heap32[(r5+1)]; + r6 = r5 & -4; + if(uint(r6) >uint(255)) //_LBB728_29 +{ + r5 = r6 >>> 1; + r5 = r6 | r5; + r7 = r5 >>> 2; + r5 = r5 | r7; + r7 = r5 >>> 4; + r5 = r5 | r7; + r7 = r5 >>> 8; + r5 = r5 | r7; + r7 = r5 >>> 16; + r5 = r5 | r7; + r7 = r5 ^ -1; + r8 = 1431655765; + r7 = r7 >>> 1; + r5 = r8 & (~r5); + r7 = r7 & 1431655765; + r5 = (r5 + r7)|0; + r7 = r5 >>> 2; + r5 = r5 & 858993459; + r7 = r7 & 858993459; + r5 = (r5 + r7)|0; + r7 = r5 >>> 4; + r5 = r5 & 252645135; + r7 = r7 & 252645135; + r5 = (r5 + r7)|0; + r7 = r5 >>> 8; + r5 = r5 & 16711935; + r7 = r7 & 16711935; + r5 = (r5 + r7)|0; + r7 = r5 & 65535; + r5 = r5 >>> 16; + r8 = 26; + r5 = (r7 + r5)|0; + r7 = (r8 - r5)|0; + r6 = r6 >>> r7; + r7 = 24; + r6 = r6 ^ 32; + r5 = (r7 - r5)|0; +} +else{ + r6 = r5 >>> 3; + r5 = 0; +} + r7 = r5 << 7; + r7 = (r1 + r7)|0; + r8 = r6 << 2; + r7 = (r7 + r8)|0; + r7 = r7 >> 2; + r8 = heap32[(r7+24)]; + r10 = r4 >> 2; + r11 = block_null; + heap32[(r10+2)] = r8; + r8 = r8 >> 2; + heap32[(r10+3)] = r11; + heap32[(r8+3)] = r4; + r8 = 1; + r10 = r1 >> 2; + heap32[(r7+24)] = r4; + r4 = r5 << 2; + r5 = r8 << r5; + r7 = heap32[(r10)]; + r4 = (r1 + r4)|0; + r1 = r7 | r5; + r4 = r4 >> 2; + heap32[(r10)] = r1; + r1 = r8 << r6; + r5 = heap32[(r4+1)]; + r1 = r5 | r1; + heap32[(r4+1)] = r1; + r4 = heap32[(r3+-1)]; +} + r1 = r4 & -4; + r1 = (r2 + r1)|0; + r2 = s_max_memory; + r2 = r2 >> 2; + heap32[(r9)] = r1; + r9 = heap32[(r2)]; +if(!(uint(r1) <=uint(r9))) //_LBB728_33 +{ + heap32[(r2)] = r1; +} + r_g0 = r0; + return; +} +else{ + r0 = (r2 + -1)|0; + if(uint(r0) > 2; + r0 = r0 >> 2; + r2 = heap32[(r2+1)]; + r3 = heap32[(r0)]; + r2 = r2 & -4; + r2 = (r3 + r2)|0; + r3 = s_max_memory; + r3 = r3 >> 2; + heap32[(r0)] = r2; + r0 = heap32[(r3)]; +if(!(uint(r2) <=uint(r0))) //_LBB728_9 +{ + heap32[(r3)] = r2; +} + r_g0 = r1; + return; +} +} + +function tlsf_create(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = (r0 + -3048)|0; + r1 = r0 & -8; + r2 = (r1 + -12)|0; + if(uint(r2) > 2; + heap32[(r4+2)] = r3; + r5 = -1; + r6 = r2 >> 2; + heap32[(r4+3)] = r3; + heap32[(r6)] = 0; +_3: while(true){ + r4 = r5 << 2; + r7 = r5 << 7; + r4 = (r2 - r4)|0; + r7 = (r2 - r7)|0; + r4 = r4 >> 2; + r7 = r7 >> 2; + heap32[(r4)] = 0; + heap32[(r7+-8)] = r3; + heap32[(r7+-7)] = r3; + heap32[(r7+-6)] = r3; + heap32[(r7+-5)] = r3; + heap32[(r7+-4)] = r3; + heap32[(r7+-3)] = r3; + heap32[(r7+-2)] = r3; + heap32[(r7+-1)] = r3; + heap32[(r7)] = r3; + heap32[(r7+1)] = r3; + heap32[(r7+2)] = r3; + heap32[(r7+3)] = r3; + heap32[(r7+4)] = r3; + heap32[(r7+5)] = r3; + heap32[(r7+6)] = r3; + heap32[(r7+7)] = r3; + heap32[(r7+8)] = r3; + heap32[(r7+9)] = r3; + heap32[(r7+10)] = r3; + heap32[(r7+11)] = r3; + heap32[(r7+12)] = r3; + heap32[(r7+13)] = r3; + heap32[(r7+14)] = r3; + heap32[(r7+15)] = r3; + heap32[(r7+16)] = r3; + heap32[(r7+17)] = r3; + heap32[(r7+18)] = r3; + heap32[(r7+19)] = r3; + heap32[(r7+20)] = r3; + heap32[(r7+21)] = r3; + r5 = (r5 + -1)|0; + heap32[(r7+22)] = r3; + heap32[(r7+23)] = r3; +if(!(r5 !=-24)) //_LBB729_3 +{ +break _3; +} +} + r4 = r0 | 1; + r5 = (r2 + 3036)|0; + r4 = r4 & -7; + heap32[(r6+760)] = r4; + if(uint(r1) >uint(255)) //_LBB729_6 +{ + r0 = r1 >>> 1; + r0 = r1 | r0; + r4 = r0 >>> 2; + r0 = r0 | r4; + r4 = r0 >>> 4; + r0 = r0 | r4; + r4 = r0 >>> 8; + r0 = r0 | r4; + r4 = r0 >>> 16; + r0 = r0 | r4; + r4 = r0 ^ -1; + r7 = 1431655765; + r4 = r4 >>> 1; + r0 = r7 & (~r0); + r4 = r4 & 1431655765; + r0 = (r0 + r4)|0; + r4 = r0 >>> 2; + r0 = r0 & 858993459; + r4 = r4 & 858993459; + r0 = (r0 + r4)|0; + r4 = r0 >>> 4; + r0 = r0 & 252645135; + r4 = r4 & 252645135; + r0 = (r0 + r4)|0; + r4 = r0 >>> 8; + r0 = r0 & 16711935; + r4 = r4 & 16711935; + r0 = (r0 + r4)|0; + r4 = r0 & 65535; + r0 = r0 >>> 16; + r7 = 26; + r0 = (r4 + r0)|0; + r4 = (r7 - r0)|0; + r1 = r1 >>> r4; + r4 = 24; + r1 = r1 ^ 32; + r0 = (r4 - r0)|0; +} +else{ + r1 = r0 >>> 3; + r0 = 0; +} + r4 = r0 << 7; + r4 = (r2 + r4)|0; + r7 = r1 << 2; + r4 = (r4 + r7)|0; + r4 = r4 >> 2; + r7 = heap32[(r4+24)]; + heap32[(r6+761)] = r7; + r7 = r7 >> 2; + heap32[(r6+762)] = r3; + heap32[(r7+3)] = r5; + r3 = 1; + heap32[(r4+24)] = r5; + r4 = r0 << 2; + r0 = r3 << r0; + r7 = heap32[(r6)]; + r4 = (r2 + r4)|0; + r0 = r7 | r0; + r4 = r4 >> 2; + heap32[(r6)] = r0; + r0 = r3 << r1; + r1 = heap32[(r4+1)]; + r0 = r1 | r0; + heap32[(r4+1)] = r0; + r0 = heap32[(r6+760)]; + r0 = (r0 + 3040)|0; + r0 = r0 & -4; + r0 = (r2 + r0)|0; + r0 = r0 >> 2; + heap32[(r0)] = r5; + heap32[(r0+1)] = 2; + r_g0 = r2; + return; +} +else{ + r0 = _2E_str643; + heap32[(g0)] = r0; + heap32[(g0+1)] = 3060; + heap32[(g0+2)] = 1073744872; + printf(i7); + r0 = 0; + r_g0 = r0; + return; +} +} + +function _stricmp(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r5 = 26; +_1: while(true){ + r2 = heap8[r1]; + r3 = heap8[r0]; + r4 = (r2 + -65)|0; + r2 = (r2 + -33)|0; + r6 = (r3 + -65)|0; + r3 = (r3 + -33)|0; + r2 = uint(r4) < uint(r5) ? r2 : r4; + r3 = uint(r6) < uint(r5) ? r3 : r6; + if(r2 !=r3) //_LBB730_3 +{ +break _1; +} +else{ + r0 = (r0 + 1)|0; + r1 = (r1 + 1)|0; + if(r3 !=-65) //_LBB730_1 +{ +continue _1; +} +else{ +break _1; +} +} +} + r0 = (r3 - r2)|0; + r_g0 = r0; + return; +} + +function strcasecmp(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r5 = 26; +_1: while(true){ + r2 = heap8[r1]; + r3 = heap8[r0]; + r4 = (r2 + -65)|0; + r2 = (r2 + -33)|0; + r6 = (r3 + -65)|0; + r3 = (r3 + -33)|0; + r2 = uint(r4) < uint(r5) ? r2 : r4; + r3 = uint(r6) < uint(r5) ? r3 : r6; + if(r2 !=r3) //_LBB731_3 +{ +break _1; +} +else{ + r1 = (r1 + 1)|0; + r0 = (r0 + 1)|0; + if(r3 !=-65) //_LBB731_1 +{ +continue _1; +} +else{ +break _1; +} +} +} + r0 = (r3 - r2)|0; + r_g0 = r0; + return; +} + +function strcpy(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = r1 ^ r0; + r2 = r2 & 3; +_1: do { + if(r2 ==0) //_LBB732_2 +{ + r2 = r0 & 3; + if(r2 !=0) //_LBB732_4 +{ + r2 = r0 | -4; +_5: while(true){ + if(r2 !=0) //_LBB732_7 +{ + r3 = heapU8[r1]; + r4 = (r0 + 1)|0; + r1 = (r1 + 1)|0; + r2 = (r2 + 1)|0; + heap8[r0] = r3; + r0 = r4; +if(!(r3 !=0)) //_LBB732_5 +{ +break _1; +} +} +else{ +break _5; +} +} +} + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r3 = r2 & -2139062144; + r3 = r3 ^ -2139062144; + r4 = (r2 + -16843009)|0; + r3 = r3 & r4; +_9: do { + if(r3 ==0) //_LBB732_11 +{ + r1 = (r1 + 4)|0; +_11: while(true){ + r3 = r0 >> 2; + r4 = r1 >> 2; + heap32[(r3)] = r2; + r2 = heap32[(r4)]; + r3 = r2 & -2139062144; + r0 = (r0 + 4)|0; + r1 = (r1 + 4)|0; + r3 = r3 ^ -2139062144; + r4 = (r2 + -16843009)|0; + r3 = r3 & r4; +if(!(r3 ==0)) //_LBB732_15 +{ +break _9; +} +} +} +} while(0); + r1 = r2 & 255; + heap8[r0] = r2; +if(!(r1 ==0)) //_LBB732_8 +{ + r0 = (r0 + 1)|0; +_15: while(true){ + r2 = r2 >>> 8; + r1 = (r0 + 1)|0; + heap8[r0] = r2; + r3 = r2 & 255; + r0 = r1; + if(r3 ==0) //_LBB732_8 +{ +break _1; +} +else{ +continue _15; +} +} +} +} +else{ +_17: while(true){ + r2 = heapU8[r1]; + r3 = (r0 + 1)|0; + r1 = (r1 + 1)|0; + heap8[r0] = r2; + r0 = r3; + if(r2 ==0) //_LBB732_8 +{ +break _1; +} +else{ +continue _17; +} +} +} +} while(0); + return; +} + +function strcmp(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = r1 ^ r0; + r2 = r2 & 3; +_1: do { + if(r2 ==0) //_LBB733_7 +{ + r2 = r0 & 3; +_3: do { + if(r2 !=0) //_LBB733_9 +{ + r2 = r0 | -4; +_5: while(true){ + if(r2 !=0) //_LBB733_10 +{ + r3 = heapU8[r0]; + r4 = heapU8[r1]; + if(r3 ==0) //_LBB733_12 +{ +break _5; +} +else{ + r5 = r4 & 255; + if(r3 ==r5) //_LBB733_13 +{ + r0 = (r0 + 1)|0; + r1 = (r1 + 1)|0; + r2 = (r2 + 1)|0; +} +else{ +break _5; +} +} +} +else{ +break _3; +} +} + r0 = r3 << 24; + r1 = r4 << 24; +break _1; +} +} while(0); +_11: while(true){ + r2 = r0 >> 2; + r2 = heap32[(r2)]; + r3 = r1 >> 2; + r4 = r2 & -2139062144; + r3 = heap32[(r3)]; + r4 = r4 ^ -2139062144; + r5 = (r2 + -16843009)|0; + r4 = r4 & r5; + if(r4 !=0) //_LBB733_18 +{ +break _11; +} +else{ + r4 = r3 & -2139062144; + r4 = r4 ^ -2139062144; + r5 = (r3 + -16843009)|0; + r4 = r4 & r5; + if(r4 !=0) //_LBB733_18 +{ +break _11; +} +else{ + r0 = (r0 + 4)|0; + r1 = (r1 + 4)|0; +if(!(r2 ==r3)) //_LBB733_15 +{ +break _11; +} +} +} +} + r0 = r2 & 255; +_16: do { +if(!(r0 ==0)) //_LBB733_21 +{ + r0 = r2 & 255; + r1 = r3 & 255; +if(!(r0 !=r1)) //_LBB733_21 +{ +__label__ = 19; //SET chanka +_18: while(true){ + r2 = r2 >>> 8; + r3 = r3 >>> 8; + r0 = r2 & 255; + if(r0 ==0) //_LBB733_24 +{ +break _16; +} +else{ + r1 = r3 & 255; +if(!(r0 ==r1)) //_LBB733_22 +{ +break _16; +} +} +} +} +} +} while(0); + r2 = r2 & 255; + r3 = r3 & 255; + r2 = (r2 - r3)|0; + r_g0 = r2; + return; +} +else{ +_22: while(true){ + r2 = heapU8[r0]; + r3 = heapU8[r1]; + if(r2 ==0) //_LBB733_5 +{ +break _22; +} +else{ + r4 = r3 & 255; + if(r2 ==r4) //_LBB733_2 +{ + r0 = (r0 + 1)|0; + r1 = (r1 + 1)|0; +} +else{ +break _22; +} +} +} + r0 = r2 << 24; + r1 = r3 << 24; +} +} while(0); + r0 = r0 >> 24; + r1 = r1 >> 24; + r0 = (r0 - r1)|0; + r_g0 = r0; + return; +} + +function memmove(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; +_1: do { +if(!(r0 ==r1)) //_LBB734_8 +{ + r2 = heap32[(fp+2)]; + if(uint(r0) <=uint(r1)) //_LBB734_5 +{ +if(!(r2 ==0)) //_LBB734_8 +{ + r3 = 0; + r2 = (r3 - r2)|0; +_6: while(true){ + r3 = (r0 - r2)|0; + r4 = (r2 + 1)|0; + r2 = (r1 - r2)|0; + r3 = heapU8[r3+-1]; + heap8[r2+-1] = r3; + r2 = r4; + if(r4 !=0) //_LBB734_7 +{ +continue _6; +} +else{ +break _1; +} +} +} +} +else{ +if(!(r2 ==0)) //_LBB734_8 +{ + r3 = r1; +_10: while(true){ + r4 = heapU8[r0]; + r2 = (r2 + -1)|0; + r5 = (r3 + 1)|0; + r0 = (r0 + 1)|0; + heap8[r3] = r4; + r3 = r5; + if(r2 ==0) //_LBB734_8 +{ +break _1; +} +else{ +continue _10; +} +} +} +} +} +} while(0); + r_g0 = r1; + return; +} + +function strncasecmp(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r3 = 0; + r7 = 26; +_1: while(true){ + if(r3 >=r2) //_LBB735_5 +{ +__label__ = 5; +break _1; +} +else{ + r4 = heap8[r1+r3]; + r5 = heap8[r0+r3]; + r6 = (r4 + -65)|0; + r4 = (r4 + -33)|0; + r8 = (r5 + -65)|0; + r5 = (r5 + -33)|0; + r4 = uint(r6) < uint(r7) ? r4 : r6; + r5 = uint(r8) < uint(r7) ? r5 : r8; + if(r4 !=r5) //_LBB735_4 +{ +__label__ = 4; +break _1; +} +else{ + r3 = (r3 + 1)|0; + if(r5 !=-65) //_LBB735_1 +{ +continue _1; +} +else{ +__label__ = 4; +break _1; +} +} +} +} +switch(__label__ ){//multiple entries +case 5: + r0 = 0; + r_g0 = r0; + return; +break; +case 4: + r0 = (r5 - r4)|0; + r_g0 = r0; + return; +break; +} +} + +function strncmp(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = heap32[(fp)]; + r2 = heap32[(fp+1)]; + if(uint(r0) >uint(3)) //_LBB736_2 +{ + r5 = r0 >>> 2; + r1 = (r1 + 2)|0; +_3: while(true){ + r3 = heapU8[r1+-2]; + r4 = heapU8[r2]; + if(r3 ==0) //_LBB736_5 +{ +__label__ = 5; +break _3; +} +else{ + r6 = r4 & 255; + if(r3 ==r6) //_LBB736_6 +{ + r3 = heapU8[r1+-1]; + r4 = heapU8[r2+1]; + if(r3 ==0) //_LBB736_8 +{ +__label__ = 5; +break _3; +} +else{ + r6 = r4 & 255; + if(r3 ==r6) //_LBB736_9 +{ + r3 = heapU8[r1]; + r4 = heapU8[r2+2]; + if(r3 ==0) //_LBB736_11 +{ +__label__ = 5; +break _3; +} +else{ + r6 = r4 & 255; + if(r3 ==r6) //_LBB736_12 +{ + r3 = heapU8[r1+1]; + r4 = heapU8[r2+3]; + if(r3 ==0) //_LBB736_14 +{ +__label__ = 5; +break _3; +} +else{ + r6 = r4 & 255; + if(r3 ==r6) //_LBB736_15 +{ + r5 = (r5 + -1)|0; + r1 = (r1 + 4)|0; + r2 = (r2 + 4)|0; + if(r5 !=0) //_LBB736_3 +{ +__label__ = 3; +} +else{ +__label__ = 13; +break _3; +} +} +else{ +__label__ = 5; +break _3; +} +} +} +else{ +__label__ = 5; +break _3; +} +} +} +else{ +__label__ = 5; +break _3; +} +} +} +else{ +__label__ = 5; +break _3; +} +} +} +switch(__label__ ){//multiple entries +case 5: + r1 = r4 & 255; + r1 = (r3 - r1)|0; + r_g0 = r1; + return; +break; +case 13: + r0 = r0 & 3; + r1 = (r1 + -2)|0; +break; +} +} +else{ + r3 = 0; + r4 = r3; +} +_17: while(true){ + if(r0 !=0) //_LBB736_17 +{ + r3 = heapU8[r1]; + r4 = heapU8[r2]; + if(r3 ==0) //_LBB736_19 +{ +__label__ = 16; +break _17; +} +else{ + r5 = r4 & 255; + if(r3 ==r5) //_LBB736_20 +{ + r0 = (r0 + -1)|0; + r1 = (r1 + 1)|0; + r2 = (r2 + 1)|0; +continue _17; +} +else{ +__label__ = 16; +break _17; +} +} +} +else{ +__label__ = 19; +break _17; +} +} +switch(__label__ ){//multiple entries +case 16: + r0 = r4 & 255; + r0 = (r3 - r0)|0; + r_g0 = r0; + return; +break; +case 19: + r0 = r3 & 255; + r1 = r4 & 255; + r0 = (r0 - r1)|0; + r_g0 = r0; + return; +break; +} +} + +function quicksort(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var r19; + var r20; + var r21; + var r22; + var r23; + var r24; + var r25; +var __label__ = 0; + i7 = sp + -40;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + heap32[(fp+-4)] = r0; + r1 = heap32[(fp+1)]; + heap32[(fp+-3)] = r1; +if(!(r0 <=r1)) //_LBB737_37 +{ + r0 = heap32[(fp)]; + r1 = heap32[(fp+3)]; + r2 = 4; + r3 = heap32[(fp+-4)]; + r4 = r3 << 2; + r5 = (r0 + r4)|0; + r6 = -4; + r7 = -8; + r2 = (r2 - r0)|0; + r3 = (r3 + -1)|0; + r8 = (r0 + 4)|0; + r6 = (r6 - r0)|0; + heap32[(fp+-1)] = r6; + r6 = (r5 + -4)|0; + heap32[(fp+-2)] = r6; + r6 = (r7 - r0)|0; + r2 = (r2 - r4)|0; + heap32[(fp+-6)] = r2; +_3: while(true){ + r2 = heap32[(fp+-3)]; + r4 = (r2 + -1)|0; + r7 = (r2 + 1)|0; + r9 = -1; + r10 = -2; + heap32[(fp+-5)] = r2; + r2 = heap32[(fp+-4)]; + r11 = r4; +_5: while(true){ + r12 = r4 << 2; + r13 = (r0 + r12)|0; + r14 = (r12 + 4)|0; + r15 = heap32[(fp+-1)]; + r15 = (r15 - r12)|0; + r16 = (r8 + r12)|0; + r12 = (r6 - r12)|0; +_7: while(true){ + r17 = r12; + r18 = r16; + r19 = r15; + r20 = r14; + r21 = r4; + r22 = r13; + if(r3 ==r21) //_LBB737_6 +{ +break _7; +} +else{ + r4 = (r0 + r20)|0; + heap32[(g0)] = r4; + heap32[(g0+1)] = r5; + r13 = (r22 + 4)|0; + r4 = (r21 + 1)|0; + r14 = (r20 + 4)|0; + r15 = (r19 + -4)|0; + r16 = (r18 + 4)|0; + r12 = (r17 + -4)|0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r23 = r_g0; +if(!(r23 <0)) //_LBB737_4 +{ +break _7; +} +} +} + r4 = r2 << 2; + r12 = (r0 + r4)|0; + r13 = 0; + r14 = (r13 - r12)|0; + r4 = (r21 + 1)|0; + r15 = (r12 + -4)|0; + r16 = r14; +_11: while(true){ + r23 = r14; + r24 = r16; + r25 = r2; + r2 = (r15 + r13)|0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r2; + r13 = (r13 + -4)|0; + r2 = (r25 + -1)|0; + __FUNCTION_TABLE__[(r1)>>2](i7); + r14 = r_g0; + if(r14 >-1) //_LBB737_9 +{ +break _11; +} +else{ + r16 = (r24 + 4)|0; + r14 = (r23 + 4)|0; +if(!(r7 !=r25)) //_LBB737_7 +{ +break _11; +} +} +} + if(r4 >=r2) //_LBB737_20 +{ +break _5; +} +else{ + r17 = 0; +_16: while(true){ + r22 = (r17 - r19)|0; + r14 = (r17 - r24)|0; + r15 = heapU8[r22]; + r14 = heapU8[r14+-4]; + r16 = (r17 + 1)|0; + r17 = (r17 - r23)|0; + heap8[r22] = r14; + heap8[r17+-4] = r15; + r17 = r16; +if(!(r16 !=4)) //_LBB737_11 +{ +break _16; +} +} + r17 = (r0 + r20)|0; + heap32[(g0)] = r17; + heap32[(g0+1)] = r5; + __FUNCTION_TABLE__[(r1)>>2](i7); + r17 = r_g0; +_19: do { + if(r17 ==0) //_LBB737_14 +{ + r17 = r11 << 2; + r11 = (r11 + 1)|0; + r17 = (r8 + r17)|0; + r22 = 0; +_21: while(true){ + r14 = (r18 - r22)|0; + r15 = (r17 - r22)|0; + r16 = heapU8[r15]; + r19 = heapU8[r14]; + r22 = (r22 + -1)|0; + heap8[r15] = r19; + heap8[r14] = r16; +if(!(r22 !=-4)) //_LBB737_15 +{ +break _19; +} +} +} +} while(0); + r17 = (r12 + r13)|0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r17; + __FUNCTION_TABLE__[(r1)>>2](i7); + r17 = r_g0; +if(!(r17 !=0)) //_LBB737_3 +{ + r4 = (r21 + 1)|0; + r17 = 0; +_25: while(true){ + r18 = heap32[(fp+-2)]; + r18 = (r17 + r18)|0; + r21 = r10 << 2; + r18 = (r18 - r21)|0; + r21 = (r17 + r12)|0; + r21 = heapU8[r21+r13]; + r22 = heapU8[r18+-8]; + r14 = (r17 + r12)|0; + r17 = (r17 + 1)|0; + heap8[r14+r13] = r22; + heap8[r18+-8] = r21; + if(r17 ==4) //_LBB737_18 +{ +break _25; +} +} + r10 = (r10 + 1)|0; + r9 = (r9 + 1)|0; +} +} +} + r2 = heap32[(fp+-4)]; + r2 = (r2 - r10)|0; + r4 = 0; + r2 = (r2 + -2)|0; + r7 = (r4 - r22)|0; +_29: while(true){ + r12 = (r5 - r4)|0; + r13 = (r18 - r4)|0; + r14 = heapU8[r13]; + r15 = heapU8[r12]; + r4 = (r4 + -1)|0; + heap8[r13] = r15; + heap8[r12] = r14; +if(!(r4 !=-4)) //_LBB737_21 +{ +break _29; +} +} + r4 = (r21 + 2)|0; + r12 = heap32[(fp+-3)]; + if(r12 r2) //_LBB737_35 +{ + r2 = heap32[(fp+-6)]; +_44: while(true){ + r4 = 0; +_46: while(true){ + r11 = (r4 - r2)|0; + r12 = (r4 - r17)|0; + r13 = heapU8[r12]; + r14 = heapU8[r11]; + r4 = (r4 + 1)|0; + heap8[r12] = r14; + heap8[r11] = r13; +if(!(r4 !=4)) //_LBB737_30 +{ +break _46; +} +} + r9 = (r9 + -1)|0; + r17 = (r17 + -4)|0; + r2 = (r2 + 4)|0; +if(!(r9 !=0)) //_LBB737_29 +{ +break _44; +} +} + r2 = (r10 + r21)|0; + r2 = (r2 + 3)|0; + heap32[(fp+-3)] = r2; +} +else{ + heap32[(fp+-3)] = r4; +} + heap32[(g0)] = r0; + r2 = heap32[(fp+-5)]; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r7; + heap32[(g0+3)] = r1; + quicksort(i7); + r4 = heap32[(fp+-3)]; + r2 = heap32[(fp+-4)]; + if(r4 >2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var f0; + var f1; + var f2; + var f3; +var __label__ = 0; + i7 = sp + -40;var g0 = i7>>2; // save stack + f0 = llvm_readDouble((sp)); + r0 = sp + -8; + llvm_writeDouble((sp+-8),f0); + r0 = r0 >> 2; + r0 = heap32[(r0+1)]; + r1 = heap32[(fp+2)]; + r2 = heap32[(fp+3)]; + r3 = heap32[(fp+4)]; + r4 = heap32[(fp+5)]; + r5 = heap32[(fp+6)]; + r6 = heap32[(fp+-2)]; + if(r0 >2146435071) //_LBB738_3 +{ + r7 = r0 ^ 2146959360; + r7 = r6 | r7; + if(r7 ==0) //_LBB738_13 +{ +__label__ = 13; +} +else{ + r7 = r0 ^ 2146435072; + r6 = r6 | r7; + if(r6 !=0) //_LBB738_21 +{ +__label__ = 20; +} +else{ +__label__ = 5; +} +} +} +else{ + r7 = r0 ^ -1048576; + r7 = r6 | r7; + if(r7 ==0) //_LBB738_5 +{ +__label__ = 5; +} +else{ + r7 = r0 ^ -524288; + r6 = r6 | r7; + if(r6 ==0) //_LBB738_13 +{ +__label__ = 13; +} +else{ +__label__ = 20; +} +} +} +_6: do { +switch(__label__ ){//multiple entries +case 13: + if(r2 >0) //_LBB738_15 +{ + r0 = (r2 + -1)|0; + r3 = 2; + r4 = 0; + r5 = (r2 + 2)|0; + r0 = uint(r0) > uint(r3) ? r0 : r3; + r3 = (r4 - r2)|0; + r0 = (r5 - r0)|0; + r4 = _2E_str9655; + r5 = r1; +_10: while(true){ + r6 = heapU8[r4]; + r0 = (r0 + -1)|0; + r7 = (r5 + 1)|0; + r4 = (r4 + 1)|0; + heap8[r5] = r6; + r5 = r7; +if(!(r0 !=0)) //_LBB738_16 +{ +break _10; +} +} + r0 = -3; + r4 = 3; + r0 = uint(r3) > uint(r0) ? r2 : r4; +} +else{ + r0 = 0; +} + if(r0 >=r2) //_LBB738_20 +{ + r_g0 = r0; + return; +} +else{ +__label__ = 11; +break _6; +} +break; +case 20: + f1 = 0; + if(f0 !=f1) //_LBB738_32 +{ + r0 = r0 >>> 20; + r0 = r0 & 2047; + r0 = (r0 + -1023)|0; + f2 = r0; //fitod r0, f2 + f3 = 0.3010299956639812; + f2 = f2*f3; + r0 = f2|0; + r6 = (r0 + 1)|0; + if(f0 0) //_LBB738_44 +{ +_34: do { + if(uint(r6) >uint(10)) //_LBB738_46 +{ + r0 = (r0 + 1)|0; + f2 = 10; + f3 = 10000000000; +_36: while(true){ + r0 = (r0 + -10)|0; + f2 = f2*f3; +if(!(uint(r0) >uint(10))) //_LBB738_47 +{ +break _34; +} +} +} +else{ + f2 = 10; + r0 = r6; +} +} while(0); + if(uint(r0) >uint(1)) //_LBB738_50 +{ + r0 = (r0 + -1)|0; + f3 = 10; +_42: while(true){ + r0 = (r0 + -1)|0; + f2 = f2*f3; +if(!(r0 !=0)) //_LBB738_51 +{ +break _42; +} +} + r0 = 1; +} +else{ + r0 = 1; +} +_46: while(true){ + f3 = 0.90000000000000002; + if(f2 >f3) //_LBB738_53 +{ + f3 = f1/f2; + r8 = f3|0; + if(r0 ==0) //_LBB738_56 +{ +__label__ = 52; +} +else{ + r9 = r8 & 255; + if(r9 !=0) //_LBB738_56 +{ +__label__ = 52; +} +else{ +__label__ = 64; +} +} +if (__label__ == 52){ + r0 = (r8 + 48)|0; + heap8[r7] = r0; + if(r2 !=0) //_LBB738_70 +{ + r0 = r8 << 24; + r0 = r0 >> 24; + f3 = r0; //fitod r0, f3 + f3 = f3*f2; + r7 = (r7 + 1)|0; + f1 = f1-f3; + r2 = (r2 + -1)|0; + r0 = 0; +} +else{ +break _46; +} +} + f3 = 10; + f2 = f2/f3; +} +else{ +__label__ = 66; +break _32; +} +} + f0 = f0/f2; + llvm_writeDouble((i7),f0); + heap32[(g0+2)] = r1; + heap32[(g0+3)] = r2; + heap32[(g0+4)] = r3; + heap32[(g0+5)] = r4; + heap32[(g0+6)] = 0; + __dtostr(i7); + r0 = r_g0; + if(r0 ==0) //_LBB738_92 +{ +__label__ = 83; +} +else{ + r3 = (r0 + r7)|0; + r7 = (r3 + 1)|0; + if(r2 !=r0) //_LBB738_60 +{ + r3 = (r3 + 2)|0; + r4 = 101; + heap8[r7] = r4; + r7 = r3; +} + r2 = (r2 + -1)|0; + r3 = (r2 - r0)|0; +_60: do { + if(r6 <1000) //_LBB738_66 +{ + if(r6 <100) //_LBB738_93 +{ + if(r6 >9) //_LBB738_95 +{ +__label__ = 90; +break _60; +} +else{ +__label__ = 91; +break _60; +} +} +else{ +__label__ = 87; +break _60; +} +} +else{ + if(r2 !=r0) //_LBB738_64 +{ + r0 = (r6 / 1000)|0; + r2 = (r7 + 1)|0; + r0 = (r0 + 48)|0; + heap8[r7] = r0; + r7 = r2; +} + r3 = (r3 + -1)|0; + r6 = (r6 % 1000)|0; +__label__ = 87; +} +} while(0); +if (__label__ == 87){ + if(r3 !=0) //_LBB738_97 +{ + r0 = (r6 / 100)|0; + r2 = (r7 + 1)|0; + r0 = (r0 + 48)|0; + heap8[r7] = r0; + r7 = r2; +} + r3 = (r3 + -1)|0; + r6 = (r6 % 100)|0; +__label__ = 90; +} +if (__label__ == 90){ + if(r3 !=0) //_LBB738_101 +{ + r0 = (r6 / 10)|0; + r2 = (r7 + 1)|0; + r0 = (r0 + 48)|0; + heap8[r7] = r0; + r7 = r2; +} + r3 = (r3 + -1)|0; + r6 = (r6 % 10)|0; +} + if(r3 !=0) //_LBB738_68 +{ + r0 = (r6 + 48)|0; + heap8[r7] = r0; + if(r3 ==1) //_LBB738_92 +{ +__label__ = 83; +} +else{ + r7 = (r7 + 1)|0; +__label__ = 82; +} +} +else{ +__label__ = 82; +} +} +} +else{ + f2 = 0.10000000000000001; +__label__ = 66; +} +} while(0); +_81: do { +if (__label__ == 66){ + if(r7 ==r1) //_LBB738_75 +{ + if(r2 ==0) //_LBB738_92 +{ +__label__ = 83; +break _81; +} +else{ + r2 = (r2 + -1)|0; + r6 = (r7 + 1)|0; + r0 = 48; + heap8[r7] = r0; + r7 = r6; +} +} +if(!(r4 !=0)) //_LBB738_80 +{ + r6 = 1; + r6 = (r6 - r1)|0; + r6 = (r6 + r7)|0; +if(!(uint(r6) uint(r6)) //_LBB738_92 +{ +__label__ = 83; +} +else{ + if(r4 !=0) //_LBB738_88 +{ + r3 = (r4 + 1)|0; + r6 = (r7 + 1)|0; + f3 = 10; +_99: while(true){ + f0 = f1/f2; + r0 = f0|0; + r2 = r0 << 24; + r2 = r2 >> 24; + f0 = r2; //fitod r2, f0 + f0 = f0*f2; + r4 = (r4 + -1)|0; + f2 = f2/f3; + f1 = f1-f0; + r2 = (r6 + 1)|0; + r0 = (r0 + 48)|0; + heap8[r6] = r0; + r6 = r2; +if(!(r4 !=0)) //_LBB738_89 +{ +break _99; +} +} + r7 = (r7 + r3)|0; +__label__ = 82; +} +else{ + r7 = r0; +__label__ = 82; +} +} +} +} +} while(0); +switch(__label__ ){//multiple entries +case 83: + r1 = 0; + r_g0 = r1; + return; +break; +case 82: + r3 = 0; + heap8[r7] = r3; + r1 = (r7 - r1)|0; + r_g0 = r1; + return; +break; +} +} +else{ + r3 = 1; + r5 = (r4 + 2)|0; + r4 = r4 == 0 ? r3 : r5; + r5 = 8; + r2 = uint(r4) > uint(r2) ? r5 : r4; + if(r2 ==0) //_LBB738_24 +{ +__label__ = 23; +} +else{ + if(r0 <0) //_LBB738_25 +{ + r0 = 45; + heap8[r1] = r0; + r0 = r3; +__label__ = 25; +} +else{ +__label__ = 23; +} +} +if (__label__ == 23){ + r0 = 0; +} + if(uint(r0) 0) //_LBB738_7 +{ + r0 = (r2 + -1)|0; + r3 = 2; + r4 = 0; + r5 = (r2 + 2)|0; + r0 = uint(r0) > uint(r3) ? r0 : r3; + r3 = (r4 - r2)|0; + r0 = (r5 - r0)|0; + r4 = _2E_str7654; + r5 = r1; +_122: while(true){ + r6 = heapU8[r4]; + r0 = (r0 + -1)|0; + r7 = (r5 + 1)|0; + r4 = (r4 + 1)|0; + heap8[r5] = r6; + r5 = r7; +if(!(r0 !=0)) //_LBB738_8 +{ +break _122; +} +} + r0 = -3; + r4 = 3; + r0 = uint(r3) > uint(r0) ? r2 : r4; +} +else{ + r0 = 0; +} + if(r0 >=r2) //_LBB738_12 +{ +__label__ = 12; +} +else{ +__label__ = 11; +} +break; +} +} while(0); +if (__label__ == 11){ + r2 = 0; + heap8[r1+r0] = r2; + r0 = (r0 + 1)|0; +} + r_g0 = r0; + return; +} + +function write_pad(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + if(r0 >0) //_LBB739_2 +{ + r1 = heap32[(fp)]; + r1 = r1 >> 2; + r2 = heap32[(r1)]; + r2 = (r2 + r0)|0; + if(uint(r2) >=uint(r0)) //_LBB739_4 +{ + r2 = heap32[(fp+1)]; + r3 = heap32[(fp+3)]; + if(uint(r0) >uint(15)) //_LBB739_6 +{ + r4 = 48; + r4 = r3 == r4; + r4 = r4 & 1; + r5 = _ZL8pad_line; + r4 = r4 << 5; + r4 = (r5 + r4)|0; + r5 = 0; +_7: while(true){ + r6 = r2 >> 2; + r7 = heap32[(r6+1)]; + r6 = heap32[(r6)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = 16; + heap32[(g0+2)] = r6; + r5 = (r5 + -16)|0; + __FUNCTION_TABLE__[(r7)>>2](i7); + r6 = (r0 + r5)|0; +if(!(uint(r6) >uint(15))) //_LBB739_7 +{ +break _7; +} +} + r0 = 0; + r4 = (r0 - r5)|0; + if(r6 ==0) //_LBB739_10 +{ +__label__ = 11; +} +else{ + r0 = r6; +__label__ = 10; +} +} +else{ + r4 = 0; +__label__ = 10; +} +if (__label__ == 10){ + r5 = 48; + r2 = r2 >> 2; + r3 = r3 == r5; + r3 = r3 & 1; + r5 = heap32[(r2+1)]; + r2 = heap32[(r2)]; + r6 = _ZL8pad_line; + r3 = r3 << 5; + r3 = (r6 + r3)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r2; + r4 = (r4 + r0)|0; + __FUNCTION_TABLE__[(r5)>>2](i7); +} + r0 = heap32[(r1)]; + r0 = (r0 + r4)|0; + heap32[(r1)] = r0; + r0 = 0; +} +else{ + r0 = -1; +} +} +else{ + r0 = 0; +} + r_g0 = r0; + return; +} + +function sgetc(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = heapU8[r1]; + r1 = (r1 + 1)|0; + heap32[(r0)] = r1; + if(r2 ==0) //_LBB740_2 +{ + r0 = -1; + r_g0 = r0; + return; +} +else{ + r_g0 = r2; + return; +} +} + +function sputc(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = (r1 + -1)|0; + heap32[(r0)] = r2; + r0 = heapU8[r1+-1]; + r1 = heap32[(fp)]; + r2 = -1; + r0 = r0 == r1 ? r1 : r2; + r_g0 = r0; + return; +} + +function memset(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = heap32[(fp)]; +if(!(r0 ==0)) //_LBB742_3 +{ + r2 = heap32[(fp+1)]; + r3 = r1; +_3: while(true){ + r0 = (r0 + -1)|0; + r4 = (r3 + 1)|0; + heap8[r3] = r2; + r3 = r4; + if(r0 !=0) //_LBB742_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + r_g0 = r1; + return; +} + +function memcpy(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r3 = r1 ^ r0; + r3 = r3 & 3; +_1: do { + if(r3 !=0) //_LBB743_2 +{ +__label__ = 2; +} +else{ + if(uint(r2) >uint(4)) //_LBB743_3 +{ + r3 = r0 & 3; + if(r3 !=0) //_LBB743_5 +{ + r3 = (r3 + -5)|0; + r4 = r2 ^ -1; + r3 = uint(r3) < uint(r4) ? r4 : r3; + r4 = (r3 + r2)|0; + r3 = r3 ^ -1; + r4 = (r4 + 1)|0; + r6 = (r1 + r3)|0; + r5 = (r0 + r3)|0; + r3 = r0 | -4; + r7 = r0; +_6: while(true){ + if(r3 ==0) //_LBB743_9 +{ +break _6; +} +else{ + if(r2 ==0) //_LBB743_20 +{ +__label__ = 19; +break _1; +} +else{ + r8 = heapU8[r1]; + r2 = (r2 + -1)|0; + r3 = (r3 + 1)|0; + r1 = (r1 + 1)|0; + r9 = (r7 + 1)|0; + heap8[r7] = r8; + r7 = r9; +} +} +} + if(r4 ==-1) //_LBB743_20 +{ +__label__ = 19; +break _1; +} +else{ + r2 = r4; + r1 = r6; +} +} +else{ + r5 = r0; +} + if(uint(r2) >uint(3)) //_LBB743_13 +{ + r6 = r5; + r4 = r1; +_16: while(true){ + r7 = r4 >> 2; + r2 = (r2 + -4)|0; + r4 = (r4 + 4)|0; + r3 = (r6 + 4)|0; + r6 = r6 >> 2; + r7 = heap32[(r7)]; + heap32[(r6)] = r7; + r6 = r3; + if(uint(r2) >uint(3)) //_LBB743_14 +{ +continue _16; +} +else{ +__label__ = 15; +break _1; +} +} +} +else{ + r4 = r1; + r3 = r5; +__label__ = 15; +} +} +else{ +__label__ = 2; +} +} +} while(0); +if (__label__ == 2){ + r3 = 0; + r4 = r3; + r5 = r0; +__label__ = 15; +} +_21: do { +if (__label__ == 15){ +if(!(r2 ==0)) //_LBB743_20 +{ + if(r3 !=0) //_LBB743_18 +{ + r1 = r4; + r5 = r3; +} +_26: while(true){ + r3 = heapU8[r1]; + r2 = (r2 + -1)|0; + r4 = (r5 + 1)|0; + r1 = (r1 + 1)|0; + heap8[r5] = r3; + r5 = r4; + if(r2 !=0) //_LBB743_19 +{ +continue _26; +} +else{ +break _21; +} +} +} +} +} while(0); + r_g0 = r0; + return; +} + +function swrite(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r0 = r0 >> 2; + r1 = heap32[(r0+1)]; + r2 = heap32[(r0+2)]; + r3 = heap32[(fp+1)]; +if(!(r2 ==r1)) //_LBB744_5 +{ + r2 = (r2 - r1)|0; + r4 = heap32[(r0)]; + r2 = uint(r2) < uint(r3) ? r2 : r3; + if(r4 !=0) //_LBB744_3 +{ + r5 = heap32[(fp)]; + r1 = (r4 + r1)|0; + heap32[(g0)] = r1; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r2; + memcpy(i7); + r1 = heap32[(r0+1)]; + r4 = heap32[(r0)]; + r1 = (r1 + r2)|0; + r5 = 0; + heap8[r4+r1] = r5; + r1 = heap32[(r0+1)]; +} + r1 = (r1 + r2)|0; + heap32[(r0+1)] = r1; +} + r_g0 = r3; + return; +} + +function __sync_fetch_and_add_4(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+1)]; + r2 = heap32[(r0)]; + r1 = (r2 + r1)|0; + heap32[(r0)] = r1; + r_g0 = r2; + return; +} + +function __muldi3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+3)]; + if(r0 <0) //_LBB746_2 +{ + r5 = 0; + r4 = 1; + r0 = (r5 - r0)|0; + r6 = r1 != 0 ? r4 : r5; + r1 = (r5 - r1)|0; + r0 = (r0 - r6)|0; +} +else{ + r4 = 0; +} + if(r3 <0) //_LBB746_5 +{ + r5 = 0; + r6 = 1; + r3 = (r5 - r3)|0; + r6 = r2 != 0 ? r6 : r5; + r4 = r4 ^ 1; + r2 = (r5 - r2)|0; + r3 = (r3 - r6)|0; +} + r5 = r2 & 65535; + r6 = r1 & 65535; + r7 = r3 | r0; + r8 = (r5 * r6)|0; + r9 = r2 | r1; + r9 = r9 >>> 16; + if(r9 !=0) //_LBB746_8 +{ + r9 = r1 >>> 16; + r10 = r2 >>> 16; + r11 = (r10 - r5)|0; + r12 = (r5 - r10)|0; + r13 = (r6 - r9)|0; + r14 = (r9 - r6)|0; + r15 = (r10 * r9)|0; + r11 = uint(r5) < uint(r10) ? r11 : r12; + r12 = uint(r9) < uint(r6) ? r13 : r14; + r11 = (r11 * r12)|0; + r12 = r15 >>> 16; + r12 = (r12 + r15)|0; + r13 = r15 << 16; + r14 = r11 << 16; + r6 = uint(r9) < uint(r6); + r5 = uint(r5) < uint(r10); + r5 = r6 ^ r5; + r5 = r5 & 1; + if(r5 ==0) //_LBB746_10 +{ + r5 = (r14 + r13)|0; + r6 = uint(r5) < uint(r13); + r11 = r11 >>> 16; + r11 = (r11 + r12)|0; + r6 = r6 & 1; + r11 = (r11 + r6)|0; +} +else{ + r5 = (r13 - r14)|0; + r11 = r11 >>> 16; + r14 = -1; + r6 = 0; + r11 = (r12 - r11)|0; + r12 = uint(r5) > uint(r13) ? r14 : r6; + r11 = (r11 + r12)|0; +} + r6 = r8 << 16; + r6 = (r5 + r6)|0; + r9 = (r6 + r8)|0; + r5 = uint(r6) < uint(r5); + r6 = r8 >>> 16; + r8 = uint(r9) < uint(r8); + r6 = (r11 + r6)|0; + r5 = r5 & 1; + r5 = (r6 + r5)|0; + r8 = r8 & 1; + r5 = (r5 + r8)|0; + r8 = r9; +} +else{ + r5 = 0; +} + if(r7 !=0) //_LBB746_14 +{ + r6 = (r3 - r2)|0; + r7 = (r2 - r3)|0; + r9 = (r1 - r0)|0; + r10 = (r0 - r1)|0; + r6 = uint(r2) < uint(r3) ? r6 : r7; + r7 = uint(r0) < uint(r1) ? r9 : r10; + r1 = uint(r0) < uint(r1); + r2 = uint(r2) < uint(r3); + r9 = 0; + r6 = (r6 * r7)|0; + r1 = r1 ^ r2; + r2 = (r9 - r6)|0; + r1 = r1 != 0 ? r2 : r6; + r0 = (r3 * r0)|0; + r0 = (r1 + r0)|0; + r0 = (r0 + r8)|0; + r5 = (r0 + r5)|0; +} + r0 = 0; + r1 = 1; + r2 = (r0 - r5)|0; + r1 = r8 != 0 ? r1 : r0; + r0 = (r0 - r8)|0; + r1 = (r2 - r1)|0; + r0 = r4 == 0 ? r8 : r0; + r1 = r4 == 0 ? r5 : r1; + r_g0 = r0; + r_g1 = r1; + return; +} + +function __fixdfdi(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = sp + 0; + r0 = r0 >> 2; + r0 = heap32[(r0+1)]; + r1 = r0 >>> 20; + r1 = r1 & 2047; + r2 = (r1 + -1023)|0; + if(r2 <0) //_LBB747_5 +{ + r0 = 0; + r_g0 = r0; + r_g1 = r0; + return; +} +else{ + r3 = heap32[(fp)]; + r4 = r0 & 1048575; + r0 = r0 >> 31; + r4 = r4 | 1048576; + if(r2 <53) //_LBB747_3 +{ + r2 = 1075; + r1 = (r2 - r1)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r1; + __lshrdi3(i7); + r1 = r_g0; + r3 = r_g1; +} +else{ + r1 = (r1 + -1075)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r1; + __ashldi3(i7); + r1 = r_g0; + r3 = r_g1; +} + r2 = r3 ^ r0; + r1 = r1 ^ r0; + r3 = 1; + r4 = 0; + r2 = (r2 - r0)|0; + r3 = uint(r1) < uint(r0) ? r3 : r4; + r0 = (r1 - r0)|0; + r1 = (r2 - r3)|0; + r_g0 = r0; + r_g1 = r1; + return; +} +} + +function __floatdidf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var f0; + var f1; + var f2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + f0 = r0; //fitod r0, f0 + f1 = 4294967296; + f2 = uint(r1); //fuitod r1, f2 + f0 = f0*f1; + f0 = f2+f0; + f_g0 = f0; + return; +} + +function __lshrdi3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = heap32[(fp+1)]; + r2 = r0 & 32; + if(r2 ==0) //_LBB749_2 +{ + r2 = heap32[(fp)]; +if(!(r0 ==0)) //_LBB749_4 +{ + r3 = 32; + r3 = (r3 - r0)|0; + r3 = r1 << r3; + r2 = r2 >>> r0; + r2 = r3 | r2; + r1 = r1 >>> r0; +} + r_g0 = r2; + r_g1 = r1; + return; +} +else{ + r0 = (r0 + -32)|0; + r0 = r1 >>> r0; + r1 = 0; + r_g0 = r0; + r_g1 = r1; + return; +} +} + +function __fixsfdi(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >>> 23; + r1 = r1 & 255; + r2 = (r1 + -127)|0; + if(r2 <0) //_LBB750_5 +{ + r0 = 0; + r_g0 = r0; + r_g1 = r0; + return; +} +else{ + r3 = r0 & 8388607; + r0 = r0 >> 31; + r3 = r3 | 8388608; + r4 = 0; + if(r2 <24) //_LBB750_3 +{ + r2 = 150; + r1 = (r2 - r1)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r1; + __lshrdi3(i7); + r1 = r_g0; + r3 = r_g1; +} +else{ + r1 = (r1 + -150)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r1; + __ashldi3(i7); + r1 = r_g0; + r3 = r_g1; +} + r2 = r3 ^ r0; + r1 = r1 ^ r0; + r3 = 1; + r2 = (r2 - r0)|0; + r3 = uint(r1) < uint(r0) ? r3 : r4; + r0 = (r1 - r0)|0; + r1 = (r2 - r3)|0; + r_g0 = r0; + r_g1 = r1; + return; +} +} + +function __ashldi3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = heap32[(fp)]; + r2 = r0 & 32; + if(r2 ==0) //_LBB751_2 +{ + r2 = heap32[(fp+1)]; +if(!(r0 ==0)) //_LBB751_4 +{ + r3 = 32; + r3 = (r3 - r0)|0; + r2 = r2 << r0; + r3 = r1 >>> r3; + r1 = r1 << r0; + r2 = r2 | r3; +} + r_g0 = r1; + r_g1 = r2; + return; +} +else{ + r0 = (r0 + -32)|0; + r2 = 0; + r0 = r1 << r0; + r_g0 = r2; + r_g1 = r0; + return; +} +} + +function __ashrdi3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = heap32[(fp+1)]; + r2 = r0 & 32; + if(r2 ==0) //_LBB752_2 +{ + r2 = heap32[(fp)]; +if(!(r0 ==0)) //_LBB752_4 +{ + r3 = 32; + r3 = (r3 - r0)|0; + r3 = r1 << r3; + r2 = r2 >>> r0; + r2 = r3 | r2; + r1 = r1 >> r0; +} + r_g0 = r2; + r_g1 = r1; + return; +} +else{ + r0 = (r0 + -32)|0; + r0 = r1 >> r0; + r1 = r1 >> 31; + r_g0 = r0; + r_g1 = r1; + return; +} +} + +function __fixunsdfdi(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = sp + 0; + r0 = r0 >> 2; + r0 = heap32[(r0+1)]; + r1 = r0 >>> 20; + r1 = r1 & 2047; + r2 = (r1 + -1023)|0; +if(!(r2 <0)) //_LBB753_5 +{ +if(!(r0 <0)) //_LBB753_5 +{ + r3 = heap32[(fp)]; + r0 = r0 & 1048575; + r0 = r0 | 1048576; + if(r2 <53) //_LBB753_4 +{ + r2 = 1075; + r1 = (r2 - r1)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r1; + __lshrdi3(i7); + return; +} +else{ + r1 = (r1 + -1075)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r1; + __ashldi3(i7); + return; +} +} +} + r0 = 0; + r_g0 = r0; + r_g1 = r0; + return; +} + +function __fixunssfdi(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >>> 23; + r1 = r1 & 255; + r2 = (r1 + -127)|0; +if(!(r2 <0)) //_LBB754_5 +{ +if(!(r0 <0)) //_LBB754_5 +{ + r0 = r0 & 8388607; + r0 = r0 | 8388608; + r3 = 0; + if(r2 <24) //_LBB754_4 +{ + r2 = 150; + r1 = (r2 - r1)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r1; + __lshrdi3(i7); + return; +} +else{ + r1 = (r1 + -150)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r1; + __ashldi3(i7); + return; +} +} +} + r0 = 0; + r_g0 = r0; + r_g1 = r0; + return; +} + +function _ZNK14CFileInterface12IsFileSystemEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN11CFileStdout5freadEPvjj(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = -1; + r_g0 = r0; + return; +} + +function _ZN11CFileStdout5ftellEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN11CFileStdout4feofEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN11CFileStdout5fseekEli(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN11CFileStdout6ungetcEi(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN11CFileStdout6fflushEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN11CFileStdout6fcloseEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 0; + r_g0 = r0; + return; +} + +function _ZNK11CFileSystem12IsFileSystemEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 1; + r_g0 = r0; + return; +} + +function _ZN11CFileSystem5freadEPvjj(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+1)]; + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+3)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = r0; + mandreel_fread(i7); + return; +} + +function _ZN11CFileSystem6fwriteEPKvjj(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = -1; + r_g0 = r0; + return; +} + +function _ZN11CFileSystem6fflushEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN11CFileSystem6fcloseEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+1)]; + heap32[(g0)] = r0; + mandreel_fclose(i7); + return; +} + +function _ZN11CFileSystem5ftellEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+1)]; + heap32[(g0)] = r0; + mandreel_ftell(i7); + return; +} + +function _ZN11CFileSystem4feofEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+1)]; + heap32[(g0)] = r0; + mandreel_feof(i7); + return; +} + +function _ZN11CFileSystem5fseekEli(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+1)]; + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r2; + mandreel_fseek(i7); + return; +} + +function _ZN11CFileSystem6ungetcEi(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+1)]; + r1 = heap32[(fp+1)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + mandreel_ungetc(i7); + return; +} + +function _ZN7CFileLS5freadEPvjj(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+2)]; + r2 = heap32[(fp+3)]; + r3 = heap32[(r0+4)]; + r4 = heap32[(r0+2)]; + r2 = (r2 * r1)|0; + r5 = (r3 + r2)|0; + r6 = (r4 - r3)|0; + r2 = r5 > r4 ? r6 : r2; + if(r2 <0) //_LBB772_2 +{ + r0 = -1; + r_g0 = r0; + return; +} +else{ + r4 = heap32[(fp+1)]; + r5 = heap32[(r0+6)]; + r3 = (r5 + r3)|0; + heap32[(g0)] = r4; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r2; + memcpy(i7); + r3 = heap32[(r0+4)]; + r3 = (r3 + r2)|0; + heap32[(r0+4)] = r3; + r0 = Math.floor(uint(r2) /uint(r1)); + r_g0 = r0; + return; +} +} + +function _ZN7CFileLS5ftellEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+4)]; + r_g0 = r0; + return; +} + +function _ZN7CFileLS4feofEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+4)]; + r0 = heap32[(r0+2)]; + r0 = r1 >= r0; + r0 = r0 & 1; + r_g0 = r0; + return; +} + +function _ZN7CFileLS5fseekEli(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = heap32[(fp)]; + r2 = heap32[(fp+1)]; +_1: do { + if(r0 ==0) //_LBB775_4 +{ + r1 = r1 >> 2; +} +else{ + if(r0 ==1) //_LBB775_6 +{ + r0 = r1 >> 2; + r1 = heap32[(r0+4)]; + r1 = (r1 + r2)|0; + heap32[(r0+4)] = r1; +} +else{ +if(!(r0 !=2)) //_LBB775_7 +{ + r1 = r1 >> 2; + r0 = heap32[(r1+2)]; + r2 = (r0 + r2)|0; +break _1; +} +} + r0 = 0; + r_g0 = r0; + return; +} +} while(0); + heap32[(r1+4)] = r2; + r1 = 0; + r_g0 = r1; + return; +} + +function _ZN7CFileLS6ungetcEi(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = -1; + r_g0 = r0; + return; +} + +function _ZN10CFileCloud5freadEPvjj(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+2)]; + r2 = heap32[(fp+3)]; + r3 = heap32[(r0+4)]; + r4 = heap32[(r0+2)]; + r2 = (r2 * r1)|0; + r5 = (r3 + r2)|0; + r6 = (r4 - r3)|0; + r2 = r5 > r4 ? r6 : r2; + if(r2 <0) //_LBB777_2 +{ + r0 = -1; + r_g0 = r0; + return; +} +else{ + r4 = heap32[(fp+1)]; + r5 = heap32[(r0+6)]; + r3 = (r5 + r3)|0; + heap32[(g0)] = r4; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r2; + memcpy(i7); + r3 = heap32[(r0+4)]; + r3 = (r3 + r2)|0; + heap32[(r0+4)] = r3; + r0 = Math.floor(uint(r2) /uint(r1)); + r_g0 = r0; + return; +} +} + +function _ZN10CFileCloud5ftellEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r0 = heap32[(r0+4)]; + r_g0 = r0; + return; +} + +function _ZN10CFileCloud4feofEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0+4)]; + r0 = heap32[(r0+2)]; + r0 = r1 >= r0; + r0 = r0 & 1; + r_g0 = r0; + return; +} + +function _ZN10CFileCloud5fseekEli(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = heap32[(fp)]; + r2 = heap32[(fp+1)]; +_1: do { + if(r0 ==0) //_LBB780_4 +{ + r1 = r1 >> 2; +} +else{ + if(r0 ==1) //_LBB780_6 +{ + r0 = r1 >> 2; + r1 = heap32[(r0+4)]; + r1 = (r1 + r2)|0; + heap32[(r0+4)] = r1; +} +else{ +if(!(r0 !=2)) //_LBB780_7 +{ + r1 = r1 >> 2; + r0 = heap32[(r1+2)]; + r2 = (r0 + r2)|0; +break _1; +} +} + r0 = 0; + r_g0 = r0; + return; +} +} while(0); + heap32[(r1+4)] = r2; + r1 = 0; + r_g0 = r1; + return; +} + +function _ZN10CFileCloud6ungetcEi(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = -1; + r_g0 = r0; + return; +} + +function __fwrite(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = heap32[(fp)]; + r2 = heap32[(fp+1)]; +if(!(uint(r0) >uint(9))) //_LBB782_2 +{ + r0 = _ZL13s_file_stdout; +} + r3 = r0 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+2)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 1; + heap32[(g0+3)] = r2; + __FUNCTION_TABLE__[(r3)>>2](i7); + return; +} + +function _ZN7CFileLS6fwriteEPKvjj(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+3)]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+1)]; + r2 = (r1 * r2)|0; + r4 = heap32[(r0+4)]; + r5 = (r4 + r2)|0; + r6 = heap32[(r0+3)]; + if(r5 >r6) //_LBB783_2 +{ + r4 = (r2 + r4)|0; + r4 = (r4 + 131072)|0; + heap32[(r0+3)] = r4; + r5 = heap32[(r0+6)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = r4; + realloc(i7); + r5 = r_g0; + heap32[(r0+6)] = r5; + r4 = heap32[(r0+4)]; +} +else{ + r5 = heap32[(r0+6)]; +} + r4 = (r5 + r4)|0; + heap32[(g0)] = r4; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r2; + memcpy(i7); + r3 = heap32[(r0+4)]; + r2 = (r3 + r2)|0; + heap32[(r0+4)] = r2; + r3 = heap32[(r0+5)]; +if(!(r2 <=r3)) //_LBB783_5 +{ + heap32[(r0+5)] = r2; +} + r_g0 = r1; + return; +} + +function _ZN7CFileLS6fflushEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heapU8[r0+5]; +if(!(r1 ==0)) //_LBB784_2 +{ + r1 = r0 >> 2; + r2 = heap32[(r1+5)]; + r1 = heap32[(r1+6)]; + r0 = (r0 + 28)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r2; + mandreel_writels(i7); +} + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN7CFileLS6fcloseEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heapU8[r0+5]; +if(!(r1 ==0)) //_LBB785_2 +{ + r1 = r0 >> 2; + r2 = heap32[(r1+5)]; + r1 = heap32[(r1+6)]; + r3 = (r0 + 28)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r2; + mandreel_writels(i7); +} + r1 = 0; + r2 = r0 >> 2; + heap8[r0+4] = r1; + r0 = heap32[(r2+6)]; + heap32[(g0)] = r0; + free(i7); + r_g0 = r1; + return; +} + +function _ZN10CFileCloud6fwriteEPKvjj(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+3)]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+1)]; + r2 = (r1 * r2)|0; + r4 = heap32[(r0+4)]; + r5 = (r4 + r2)|0; + r6 = heap32[(r0+3)]; + if(r5 >r6) //_LBB786_2 +{ + r4 = (r2 + r4)|0; + r4 = (r4 + 131072)|0; + heap32[(r0+3)] = r4; + r5 = heap32[(r0+6)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = r4; + realloc(i7); + r5 = r_g0; + heap32[(r0+6)] = r5; + r4 = heap32[(r0+4)]; +} +else{ + r5 = heap32[(r0+6)]; +} + r4 = (r5 + r4)|0; + heap32[(g0)] = r4; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r2; + memcpy(i7); + r3 = heap32[(r0+4)]; + r2 = (r3 + r2)|0; + heap32[(r0+4)] = r2; + r3 = heap32[(r0+5)]; +if(!(r2 <=r3)) //_LBB786_5 +{ + heap32[(r0+5)] = r2; +} + r_g0 = r1; + return; +} + +function _ZN10CFileCloud6fflushEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -32;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heapU8[r0+5]; +if(!(r1 ==0)) //_LBB787_2 +{ + r1 = r0 >> 2; + r2 = heap32[(r1+5)]; + r3 = r2 << 1; + heap32[(g0)] = r3; + malloc(i7); + r4 = r_g0; + r1 = heap32[(r1+6)]; + r5 = sp + -4; + heap32[(g0)] = r1; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r3; + heap32[(g0+4)] = r5; + _ZN12mandreel_b64L11b64_encode_EPKhjPcjjPNS_6B64_RCE(i7); + r0 = (r0 + 28)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r_g0; + mandreel_writecloud(i7); + heap32[(g0)] = r4; + free(i7); +} + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN10CFileCloud6fcloseEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -32;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heapU8[r0+5]; +if(!(r1 ==0)) //_LBB788_2 +{ + r1 = r0 >> 2; + r2 = heap32[(r1+5)]; + r3 = r2 << 1; + heap32[(g0)] = r3; + malloc(i7); + r4 = r_g0; + r1 = heap32[(r1+6)]; + r5 = sp + -4; + heap32[(g0)] = r1; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r3; + heap32[(g0+4)] = r5; + _ZN12mandreel_b64L11b64_encode_EPKhjPcjjPNS_6B64_RCE(i7); + r2 = (r0 + 28)|0; + heap32[(g0)] = r2; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r_g0; + mandreel_writecloud(i7); + heap32[(g0)] = r4; + free(i7); +} + r1 = 0; + r2 = r0 >> 2; + heap8[r0+4] = r1; + r0 = heap32[(r2+6)]; + heap32[(g0)] = r0; + free(i7); + r_g0 = r1; + return; +} + +function __sync_val_compare_and_swap_4(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(r0)]; + r2 = heap32[(fp+1)]; +if(!(r1 !=r2)) //_LBB789_2 +{ + r2 = heap32[(fp+2)]; + heap32[(r0)] = r2; +} + r_g0 = r1; + return; +} + +function _ZN11CFileStdout6fwriteEPKvjj(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -16392;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = heap32[(fp+3)]; + r0 = (r1 * r0)|0; + if(r0 !=0) //_LBB790_2 +{ + r2 = heap32[(fp+1)]; + r3 = sp + -16384; + r4 = r0; +_3: while(true){ + r5 = heapU8[r2]; + r4 = (r4 + -1)|0; + r2 = (r2 + 1)|0; + r6 = (r3 + 1)|0; + heap8[r3] = r5; + r3 = r6; +if(!(r4 !=0)) //_LBB790_3 +{ +break _3; +} +} + r2 = sp + -16384; + r0 = (r2 + r0)|0; +} +else{ + r0 = sp + -16384; +} + r2 = 0; + heap8[r0] = r2; + r0 = sp + -16384; + heap32[(g0)] = r0; + puts(i7); + r_g0 = r1; + return; +} + +function fopen(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; +var __label__ = 0; + i7 = sp + -2064;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heapU8[r0]; + r2 = 46; + r3 = 92; + r4 = heapU8[r0+1]; + r5 = 47; + r1 = r1 == r2; + r2 = r4 == r3; + r1 = r1 & r2; + r2 = r4 == r5; + r1 = r1 | r2; + r2 = (r0 + 1)|0; + r1 = r1 != 0 ? r2 : r0; + r2 = heapU8[r1]; + r3 = heap32[(fp+1)]; +_1: do { + if(r2 !=0) //_LBB791_2 +{ + r4 = sp + -2048; + r1 = (r1 + 1)|0; + r6 = 0; + r8 = 26; +_3: while(true){ + r7 = r2 & 255; + if(r7 ==47) //_LBB791_5 +{ +__label__ = 5; +} +else{ + if(r7 !=92) //_LBB791_8 +{ + r6 = r2 << 24; + r6 = r6 >> 24; + r7 = (r6 + -65)|0; + r9 = (r2 + 32)|0; + r10 = (r4 + 1)|0; + r6 = 0; + r2 = uint(r7) < uint(r8) ? r9 : r2; + heap8[r4] = r2; + r4 = r10; +__label__ = 9; +} +else{ +__label__ = 5; +} +} +if (__label__ == 5){ + r2 = r6 & 255; + heap8[r4] = r5; + if(r2 ==0) //_LBB791_7 +{ + r4 = (r4 + 1)|0; + r6 = 1; +} +else{ + r6 = 1; +} +} + r2 = heapU8[r1]; + if(r2 !=0) //_LBB791_11 +{ + r1 = (r1 + 1)|0; +continue _3; +} +else{ +break _1; +} +} +} +else{ + r4 = sp + -2048; +} +} while(0); + r1 = 0; + heap8[r4] = r1; + r2 = sp + -2048; + r4 = _2E_str33679; + heap32[(g0)] = r2; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = 4; + strncmp(i7); + r4 = r_g0; +_17: do { + if(r4 !=0) //_LBB791_29 +{ + r4 = _2E_str34680; + heap32[(g0)] = r2; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = 4; + strncmp(i7); + r4 = r_g0; + if(r4 ==0) //_LBB791_31 +{ + heap32[(g0)] = 0; + _Z30mandreel_fopen_enable_checkfatb(i7); + r0 = _2E_str31677; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + strcmp(i7); + r0 = r_g0; +_21: do { + if(r0 !=0) //_LBB791_33 +{ + r0 = _2E_str4651; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + strcmp(i7); + r0 = r_g0; + if(r0 ==0) //_LBB791_32 +{ +__label__ = 30; +} +else{ + r0 = _2E_str5652; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + strcmp(i7); + r0 = r_g0; + if(r0 !=0) //_LBB791_36 +{ + r0 = _2E_str32678; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + strcmp(i7); + r0 = r_g0; +if(!(r0 ==0)) //_LBB791_35 +{ + r4 = heapU8[r3]; + r0 = 119; + r3 = 114; + r0 = r4 == r0; + r5 = r4 == r3; + r3 = r0 & 1; + r0 = r5 & 1; + if(r4 ==114) //_LBB791_39 +{ +__label__ = 36; +break _21; +} +else{ +__label__ = 38; +break _21; +} +} +} + r0 = 1; + r1 = 0; + r3 = r0; +__label__ = 38; +} +} +else{ +__label__ = 30; +} +} while(0); +if (__label__ == 30){ + r0 = 1; + r3 = r0; +__label__ = 36; +} +if (__label__ == 36){ + heap32[(g0)] = r2; + mandreel_opencloud(i7); + r1 = r_g0; + if(r1 ==-1) //_LBB791_41 +{ + r4 = 0; +break _17; +} +} + heap32[(g0)] = 284; + _Znwj(i7); + r4 = r_g0; + r5 = _ZTV10CFileCloud; + r6 = r4 >> 2; + r5 = (r5 + 8)|0; + r7 = 1; + heap32[(r6)] = r5; + heap8[r4+4] = r7; + heap32[(r6+4)] = 0; + heap32[(r6+6)] = 0; + heap32[(r6+2)] = r1; + heap8[r4+5] = r3; + heap8[r4+6] = r0; + heap32[(r6+5)] = 0; + r0 = (r4 + 28)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + strcpy(i7); + if(r1 ==0) //_LBB791_44 +{ + r0 = r3 & 255; + if(r0 ==0) //_LBB791_46 +{ +break _17; +} +else{ + r0 = r4 >> 2; + heap32[(r0+3)] = 131072; + heap32[(g0)] = 131072; + malloc(i7); + heap32[(r0+6)] = r_g0; +} +} +else{ + r3 = (r1 + 131072)|0; + r2 = r4 >> 2; + heap32[(r2+3)] = r3; + heap32[(g0)] = r3; + malloc(i7); + heap32[(r2+6)] = r_g0; + r3 = (r1 + 4)|0; + heap32[(g0)] = r3; + malloc(i7); + r3 = r_g0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r1; + mandreel_readcloud(i7); + r0 = heap32[(r2+3)]; + r5 = heap32[(r2+6)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r0; + _ZN12mandreel_b6410b64_decodeEPKcjPvj(i7); + r0 = r_g0; + heap32[(g0)] = r3; + free(i7); + heap32[(r2+2)] = r0; + heap32[(r2+5)] = r0; +} +} +else{ + r1 = r3; +_39: while(true){ + r4 = heapU8[r1]; + if(r4 ==0) //_LBB791_51 +{ +__label__ = 46; +break _39; +} +else{ + if(r4 ==87) //_LBB791_50 +{ +__label__ = 45; +break _39; +} +else{ + r1 = (r1 + 1)|0; + if(r4 !=119) //_LBB791_47 +{ +__label__ = 42; +} +else{ +__label__ = 45; +break _39; +} +} +} +} +switch(__label__ ){//multiple entries +case 46: + r0 = heapU8[sp+-2048]; + if(r0 !=47) //_LBB791_53 +{ + heap32[(g0)] = r2; + heap32[(g0+1)] = r3; + mandreel_fopen(i7); + r2 = r_g0; +} +else{ + r2 = (r2 + 1)|0; + heap32[(g0)] = r2; + heap32[(g0+1)] = r3; + mandreel_fopen(i7); + r2 = r_g0; +} + if(r2 ==0) //_LBB791_56 +{ + r0 = 0; + r_g0 = r0; + return; +} +else{ + heap32[(g0)] = 8; + r0 = _ZTV11CFileSystem; + _Znwj(i7); + r3 = r_g0 >> 2; + r0 = (r0 + 8)|0; + heap32[(r3)] = r0; + heap32[(r3+1)] = r2; + return; +} +break; +case 45: + r2 = _2E_str35681; + heap32[(g0)] = r2; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r3; + printf(i7); + r2 = 0; + r_g0 = r2; + return; +break; +} +} +} +else{ + heap32[(g0)] = 0; + _Z30mandreel_fopen_enable_checkfatb(i7); + r0 = _2E_str31677; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + strcmp(i7); + r0 = r_g0; +_54: do { + if(r0 !=0) //_LBB791_15 +{ + r0 = _2E_str4651; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + strcmp(i7); + r0 = r_g0; + if(r0 ==0) //_LBB791_14 +{ +__label__ = 13; +} +else{ + r0 = _2E_str5652; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + strcmp(i7); + r0 = r_g0; + if(r0 !=0) //_LBB791_18 +{ + r0 = _2E_str32678; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + strcmp(i7); + r0 = r_g0; +if(!(r0 ==0)) //_LBB791_17 +{ + r3 = heapU8[r3]; + r0 = 119; + r1 = 114; + r0 = r3 == r0; + r4 = r3 == r1; + r1 = r0 & 1; + r0 = r4 & 1; + if(r3 ==114) //_LBB791_21 +{ +__label__ = 20; +break _54; +} +else{ + r3 = 0; +__label__ = 22; +break _54; +} +} +} + r0 = 1; + r3 = 0; + r1 = r0; +__label__ = 22; +} +} +else{ +__label__ = 13; +} +} while(0); +if (__label__ == 13){ + r0 = 1; + r1 = r0; +__label__ = 20; +} +if (__label__ == 20){ + heap32[(g0)] = r2; + mandreel_openls(i7); + r3 = r_g0; + if(r3 ==-1) //_LBB791_23 +{ + r4 = 0; +break _17; +} +} + heap32[(g0)] = 284; + _Znwj(i7); + r4 = r_g0; + r5 = _ZTV7CFileLS; + r6 = r4 >> 2; + r5 = (r5 + 8)|0; + r7 = 1; + heap32[(r6)] = r5; + heap8[r4+4] = r7; + heap32[(r6+4)] = 0; + heap32[(r6+6)] = 0; + heap32[(r6+2)] = r3; + heap8[r4+5] = r1; + heap8[r4+6] = r0; + heap32[(r6+5)] = 0; + r0 = (r4 + 28)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + strcpy(i7); + if(r3 ==0) //_LBB791_26 +{ + r0 = r1 & 255; +if(!(r0 ==0)) //_LBB791_28 +{ + r0 = r4 >> 2; + heap32[(r0+3)] = 131072; + heap32[(g0)] = 131072; + malloc(i7); + heap32[(r0+6)] = r_g0; +} +} +else{ + r1 = (r3 + 131072)|0; + r2 = r4 >> 2; + heap32[(r2+3)] = r1; + heap32[(g0)] = r1; + malloc(i7); + heap32[(r2+6)] = r_g0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r_g0; + heap32[(g0+2)] = r3; + mandreel_readls(i7); + heap32[(r2+5)] = r3; +} +} +} while(0); + heap32[(g0)] = 1; + _Z30mandreel_fopen_enable_checkfatb(i7); + r_g0 = r4; + return; +} + +function strtoul(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap8[r0]; + r2 = r1 << 2; + r3 = my_ctype; + r2 = (r2 + r3)|0; + r4 = heap32[(fp+1)]; + r2 = heapU8[r2+4]; + r2 = r2 & 8; + if(r2 ==0) //_LBB792_2 +{ + r2 = r0; +} +else{ + r2 = r0; +_4: while(true){ + r1 = heap8[r2+1]; + r5 = r1 << 2; + r5 = (r5 + r3)|0; + r2 = (r2 + 1)|0; + r5 = heapU8[r5+4]; + r5 = r5 & 8; + if(r5 !=0) //_LBB792_3 +{ +continue _4; +} +else{ +break _4; +} +} +} + r1 = r1 & 255; + if(r1 ==43) //_LBB792_8 +{ + r2 = (r2 + 1)|0; + r1 = 0; +} +else{ + if(r1 ==45) //_LBB792_7 +{ + r2 = (r2 + 1)|0; + r1 = 1; +} +else{ + r1 = 0; +} +} + r3 = 0; + r5 = r3; + r6 = r3; + r11 = -1; +_14: while(true){ + r8 = (r2 - r3)|0; + r7 = heapU8[r8]; + if(r7 ==0) //_LBB792_14 +{ +break _14; +} +else{ + if(uint(r7) uint(9)) //_LBB792_14 +{ +break _14; +} +else{ + r8 = r6 & 255; + r8 = (r8 * 10)|0; + r7 = (r7 + r8)|0; + r6 = r6 >>> 8; + r8 = r7 >>> 8; + r6 = (r6 * 10)|0; + r6 = (r8 + r6)|0; + r8 = 16777215; + r9 = 1; + r10 = r6 << 8; + r7 = r7 & 255; + r5 = uint(r6) > uint(r8) ? r9 : r5; + r6 = r10 | r7; + r3 = (r3 + -1)|0; +continue _14; +} +} +else{ +break _14; +} +} +} + if(r3 ==0) //_LBB792_16 +{ + _errno(i7); + r6 = 0; + r8 = r_g0 >> 2; + heap32[(r8)] = 22; + r8 = r0; +} +if(!(r4 ==0)) //_LBB792_19 +{ + r0 = r4 >> 2; + heap32[(r0)] = r8; +} + if(r5 ==0) //_LBB792_21 +{ + r0 = 0; + r0 = (r0 - r6)|0; + r0 = r1 == 0 ? r6 : r0; + r_g0 = r0; + return; +} +else{ + _errno(i7); + r1 = r_g0 >> 2; + heap32[(r1)] = 34; + r1 = -1; + r_g0 = r1; + return; +} +} + +function strtol(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap8[r0]; + r2 = r1 << 2; + r3 = my_ctype; + r2 = (r2 + r3)|0; + r4 = heap32[(fp+1)]; + r2 = heapU8[r2+4]; + r2 = r2 & 8; + if(r2 ==0) //_LBB793_2 +{ + r2 = r0; +} +else{ + r2 = r0; +_4: while(true){ + r1 = heap8[r2+1]; + r5 = r1 << 2; + r5 = (r5 + r3)|0; + r2 = (r2 + 1)|0; + r5 = heapU8[r5+4]; + r5 = r5 & 8; + if(r5 !=0) //_LBB793_3 +{ +continue _4; +} +else{ +break _4; +} +} +} + r1 = r1 & 255; + if(r1 ==45) //_LBB793_6 +{ + r1 = heap8[r2+1]; + r1 = r1 << 2; + r3 = (r1 + r3)|0; + r3 = heapU16[(r3+4)>>1]; + r3 = r3 & 263; + if(r3 ==0) //_LBB793_5 +{ +__label__ = 5; +} +else{ + r2 = (r2 + 1)|0; + r3 = -1; +__label__ = 8; +} +} +else{ +__label__ = 5; +} +if (__label__ == 5){ + r3 = 0; +} + heap32[(g0)] = r2; + heap32[(g0+1)] = r4; + strtoul(i7); + r1 = r_g0; +if(!(r4 ==0)) //_LBB793_11 +{ + r4 = r4 >> 2; + r5 = heap32[(r4)]; +if(!(r5 !=r2)) //_LBB793_11 +{ + heap32[(r4)] = r0; +} +} + if(r1 >-1) //_LBB793_16 +{ + r0 = 0; + r0 = (r0 - r1)|0; + r0 = r3 == 0 ? r1 : r0; + r_g0 = r0; + return; +} +else{ + _errno(i7); + r0 = r_g0; +if(!(r1 !=-2147483648)) //_LBB793_15 +{ +if(!(r3 ==0)) //_LBB793_15 +{ + r0 = r0 >> 2; + heap32[(r0)] = 0; + r_g0 = r1; + return; +} +} + r1 = r0 >> 2; + r0 = 2147483647; + r2 = -2147483648; + heap32[(r1)] = 34; + r1 = r3 == 0 ? r0 : r2; + r_g0 = r1; + return; +} +} + +function __floatundidf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var f0; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = r0 | r1; + if(r2 ==0) //_LBB794_12 +{ + f0 = 0; + f_g0 = f0; + return; +} +else{ + r2 = r0 >>> 1; + r3 = r1 >>> 1; + r2 = r0 | r2; + r3 = r1 | r3; + r4 = r2 >>> 2; + r5 = r3 >>> 2; + r2 = r2 | r4; + r3 = r3 | r5; + r4 = r2 >>> 4; + r5 = r3 >>> 4; + r2 = r2 | r4; + r3 = r3 | r5; + r4 = r2 >>> 8; + r5 = r3 >>> 8; + r2 = r2 | r4; + r3 = r3 | r5; + r4 = r2 >>> 16; + r5 = r3 >>> 16; + r2 = r2 | r4; + r3 = r3 | r5; + r4 = r2 ^ -1; + r5 = 1431655765; + r6 = r3 ^ -1; + r4 = r4 >>> 1; + r6 = r6 >>> 1; + r2 = r5 & (~r2); + r4 = r4 & 1431655765; + r2 = (r2 + r4)|0; + r3 = r5 & (~r3); + r4 = r6 & 1431655765; + r3 = (r3 + r4)|0; + r4 = r2 >>> 2; + r5 = r3 >>> 2; + r2 = r2 & 858993459; + r4 = r4 & 858993459; + r2 = (r2 + r4)|0; + r3 = r3 & 858993459; + r4 = r5 & 858993459; + r3 = (r3 + r4)|0; + r4 = r2 >>> 4; + r5 = r3 >>> 4; + r2 = r2 & 252645135; + r4 = r4 & 252645135; + r2 = (r2 + r4)|0; + r3 = r3 & 252645135; + r4 = r5 & 252645135; + r3 = (r3 + r4)|0; + r4 = r2 >>> 8; + r5 = r3 >>> 8; + r2 = r2 & 16711935; + r4 = r4 & 16711935; + r2 = (r2 + r4)|0; + r3 = r3 & 16711935; + r4 = r5 & 16711935; + r3 = (r3 + r4)|0; + r4 = r2 & 65535; + r2 = r2 >>> 16; + r2 = (r4 + r2)|0; + r4 = r3 & 65535; + r3 = r3 >>> 16; + r3 = (r4 + r3)|0; + r2 = (r2 + 32)|0; + r4 = 64; + r2 = r1 != 0 ? r3 : r2; + r3 = 63; + r4 = (r4 - r2)|0; + r2 = (r3 - r2)|0; + if(r4 <54) //_LBB794_10 +{ + r3 = 53; + r3 = (r3 - r4)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r3; + __ashldi3(i7); + r3 = r_g0; + r1 = r_g1; +} +else{ + if(r4 ==54) //_LBB794_5 +{ + r1 = r1 << 1; + r3 = r0 >>> 31; + r0 = r0 << 1; + r1 = r1 | r3; +} +else{ + if(r4 !=55) //_LBB794_6 +{ + r3 = (r4 + -55)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r3; + __lshrdi3(i7); + r3 = r_g0; + r5 = r_g1; + r6 = 119; + r6 = (r6 - r4)|0; + heap32[(g0)] = -1; + heap32[(g0+1)] = -1; + heap32[(g0+2)] = r6; + __lshrdi3(i7); + r0 = r_g0 & r0; + r1 = r_g1 & r1; + r0 = r0 | r1; + r1 = 0; + r0 = r0 != r1; + r0 = r0 & 1; + r0 = r0 | r3; + r1 = r5; +} +} + r3 = r0 >>> 2; + r3 = r3 & 1; + r0 = r3 | r0; + r3 = (r0 + 1)|0; + r5 = 1; + r6 = 0; + r0 = uint(r3) < uint(r0) ? r5 : r6; + r0 = r3 == 0 ? r5 : r0; + r0 = (r1 + r0)|0; + r1 = r0 >>> 2; + r5 = r1 & 2097152; + if(r5 !=0) //_LBB794_9 +{ + r1 = r3 >>> 3; + r2 = r0 << 29; + r3 = r1 | r2; + r1 = r0 >>> 3; + r2 = r4; +} +else{ + r3 = r3 >>> 2; + r0 = r0 << 30; + r3 = r3 | r0; +} +} + r0 = r2 << 20; + r2 = sp + -8; + r1 = r1 & 1048575; + r0 = (r0 + 1072693248)|0; + r2 = r2 >> 2; + r0 = r1 | r0; + heap32[(fp+-2)] = r3; + heap32[(r2+1)] = r0; + f0 = llvm_readDouble((sp+-8)); + f_g0 = f0; + return; +} +} + +function __udivmoddi4(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp+4)]; + r2 = heap32[(fp)]; + r3 = heap32[(fp+2)]; + r4 = heap32[(fp+3)]; +_1: do { + if(r0 !=0) //_LBB795_10 +{ +_3: do { + if(r3 !=0) //_LBB795_27 +{ + if(r4 !=0) //_LBB795_34 +{ + r5 = r4 >>> 1; + r6 = r0 >>> 1; + r5 = r4 | r5; + r6 = r0 | r6; + r7 = r5 >>> 2; + r9 = r6 >>> 2; + r5 = r5 | r7; + r6 = r6 | r9; + r7 = r5 >>> 4; + r9 = r6 >>> 4; + r5 = r5 | r7; + r6 = r6 | r9; + r7 = r5 >>> 8; + r9 = r6 >>> 8; + r5 = r5 | r7; + r6 = r6 | r9; + r7 = r5 >>> 16; + r9 = r6 >>> 16; + r5 = r5 | r7; + r6 = r6 | r9; + r7 = r5 ^ -1; + r9 = r6 ^ -1; + r8 = 1431655765; + r7 = r7 >>> 1; + r9 = r9 >>> 1; + r5 = r8 & (~r5); + r7 = r7 & 1431655765; + r6 = r8 & (~r6); + r9 = r9 & 1431655765; + r5 = (r5 + r7)|0; + r6 = (r6 + r9)|0; + r7 = r5 >>> 2; + r9 = r6 >>> 2; + r5 = r5 & 858993459; + r7 = r7 & 858993459; + r6 = r6 & 858993459; + r9 = r9 & 858993459; + r5 = (r5 + r7)|0; + r6 = (r6 + r9)|0; + r7 = r5 >>> 4; + r9 = r6 >>> 4; + r5 = r5 & 252645135; + r7 = r7 & 252645135; + r6 = r6 & 252645135; + r9 = r9 & 252645135; + r5 = (r5 + r7)|0; + r6 = (r6 + r9)|0; + r7 = r5 >>> 8; + r9 = r6 >>> 8; + r5 = r5 & 16711935; + r7 = r7 & 16711935; + r6 = r6 & 16711935; + r9 = r9 & 16711935; + r5 = (r5 + r7)|0; + r6 = (r6 + r9)|0; + r7 = r5 & 65535; + r5 = r5 >>> 16; + r9 = r6 & 65535; + r6 = r6 >>> 16; + r5 = (r7 + r5)|0; + r6 = (r9 + r6)|0; + r5 = (r5 - r6)|0; + if(uint(r5) >> r7; + r8 = r9 >> 31; + r10 = r0 >>> r7; + r6 = r6 & r8; + r0 = r0 << r5; + r9 = 0; + r2 = r2 << r5; + r5 = r6 | r0; + r6 = r10 & r8; +__label__ = 39; +break _3; +} +else{ + if(r1 ==0) //_LBB795_7 +{ +__label__ = 7; +break _1; +} +else{ + r5 = r1 >> 2; + heap32[(r5)] = r2; + heap32[(r5+1)] = r0; + r2 = 0; + r_g0 = r2; + r_g1 = r2; + return; +} +} +} +else{ + r5 = (r3 + -1)|0; + r6 = r5 & r3; + if(r6 !=0) //_LBB795_38 +{ + r5 = r3 >>> 1; + r6 = r0 >>> 1; + r5 = r3 | r5; + r6 = r0 | r6; + r7 = r5 >>> 2; + r9 = r6 >>> 2; + r5 = r5 | r7; + r6 = r6 | r9; + r7 = r5 >>> 4; + r9 = r6 >>> 4; + r5 = r5 | r7; + r6 = r6 | r9; + r7 = r5 >>> 8; + r9 = r6 >>> 8; + r5 = r5 | r7; + r6 = r6 | r9; + r7 = r5 >>> 16; + r9 = r6 >>> 16; + r5 = r5 | r7; + r6 = r6 | r9; + r7 = r5 ^ -1; + r9 = r6 ^ -1; + r8 = 1431655765; + r7 = r7 >>> 1; + r9 = r9 >>> 1; + r5 = r8 & (~r5); + r7 = r7 & 1431655765; + r6 = r8 & (~r6); + r9 = r9 & 1431655765; + r5 = (r5 + r7)|0; + r6 = (r6 + r9)|0; + r7 = r5 >>> 2; + r9 = r6 >>> 2; + r5 = r5 & 858993459; + r7 = r7 & 858993459; + r6 = r6 & 858993459; + r9 = r9 & 858993459; + r5 = (r5 + r7)|0; + r6 = (r6 + r9)|0; + r7 = r5 >>> 4; + r9 = r6 >>> 4; + r5 = r5 & 252645135; + r7 = r7 & 252645135; + r6 = r6 & 252645135; + r9 = r9 & 252645135; + r5 = (r5 + r7)|0; + r6 = (r6 + r9)|0; + r7 = r5 >>> 8; + r9 = r6 >>> 8; + r5 = r5 & 16711935; + r7 = r7 & 16711935; + r6 = r6 & 16711935; + r9 = r9 & 16711935; + r5 = (r5 + r7)|0; + r6 = (r6 + r9)|0; + r7 = r5 & 65535; + r5 = r5 >>> 16; + r9 = r6 & 65535; + r6 = r6 >>> 16; + r5 = (r7 + r5)|0; + r6 = (r9 + r6)|0; + r5 = (r5 - r6)|0; + r6 = 31; + r7 = (r5 + 33)|0; + r9 = r5 ^ -1; + r8 = (r5 + 1)|0; + r6 = (r6 - r5)|0; + r10 = -2; + r10 = (r10 - r5)|0; + r11 = r0 << r6; + r12 = r2 >>> r8; + r13 = r2 >>> r7; + r14 = r0 << r9; + r11 = r11 | r12; + r12 = r9 >> 31; + r9 = r2 << r9; + r5 = r5 >> 31; + r13 = r13 | r14; + r14 = r8 >> 31; + r8 = r0 >>> r8; + r10 = r10 >> 31; + r2 = r2 << r6; + r0 = r0 >>> r7; + r6 = r11 & r12; + r5 = r9 & r5; + r11 = r13 & r14; + r8 = r8 & r10; + r9 = r2 & r12; + r2 = r6 | r5; + r5 = r11 | r8; + r6 = r0 & r14; + if(r7 ==0) //_LBB795_40 +{ + r0 = 0; + r3 = r0; +__label__ = 42; +break _3; +} +else{ +__label__ = 39; +break _3; +} +} +else{ +if(!(r1 ==0)) //_LBB795_31 +{ + r1 = r1 >> 2; + r4 = r5 & r2; + heap32[(r1)] = r4; + heap32[(r1+1)] = 0; +} + if(r3 !=1) //_LBB795_33 +{ + r1 = r5 & (~r3); + r3 = r1 >>> 1; + r1 = r1 & 1431655765; + r3 = r3 & 1431655765; + r1 = (r1 + r3)|0; + r3 = r1 >>> 2; + r1 = r1 & 858993459; + r3 = r3 & 858993459; + r1 = (r1 + r3)|0; + r3 = r1 >>> 4; + r1 = r1 & 252645135; + r3 = r3 & 252645135; + r1 = (r1 + r3)|0; + r3 = r1 >>> 8; + r1 = r1 & 16711935; + r3 = r3 & 16711935; + r1 = (r1 + r3)|0; + r3 = r1 & 65535; + r1 = r1 >>> 16; + r1 = (r3 + r1)|0; + r3 = 32; + r3 = (r3 - r1)|0; + r3 = r0 << r3; + r2 = r2 >>> r1; + r2 = r3 | r2; + r0 = r0 >>> r1; +__label__ = 44; +break _1; +} +else{ +__label__ = 44; +break _1; +} +} +} +} +else{ + if(r4 !=0) //_LBB795_15 +{ + if(r2 !=0) //_LBB795_19 +{ + r5 = (r4 + -1)|0; + r6 = r5 & r4; + if(r6 !=0) //_LBB795_23 +{ + r5 = r4 >>> 1; + r6 = r0 >>> 1; + r5 = r4 | r5; + r6 = r0 | r6; + r7 = r5 >>> 2; + r8 = r6 >>> 2; + r5 = r5 | r7; + r6 = r6 | r8; + r7 = r5 >>> 4; + r8 = r6 >>> 4; + r5 = r5 | r7; + r6 = r6 | r8; + r7 = r5 >>> 8; + r8 = r6 >>> 8; + r5 = r5 | r7; + r6 = r6 | r8; + r7 = r5 >>> 16; + r8 = r6 >>> 16; + r5 = r5 | r7; + r6 = r6 | r8; + r7 = r5 ^ -1; + r8 = r6 ^ -1; + r9 = 1431655765; + r7 = r7 >>> 1; + r8 = r8 >>> 1; + r5 = r9 & (~r5); + r7 = r7 & 1431655765; + r6 = r9 & (~r6); + r8 = r8 & 1431655765; + r5 = (r5 + r7)|0; + r6 = (r6 + r8)|0; + r7 = r5 >>> 2; + r8 = r6 >>> 2; + r5 = r5 & 858993459; + r7 = r7 & 858993459; + r6 = r6 & 858993459; + r8 = r8 & 858993459; + r5 = (r5 + r7)|0; + r6 = (r6 + r8)|0; + r7 = r5 >>> 4; + r8 = r6 >>> 4; + r5 = r5 & 252645135; + r7 = r7 & 252645135; + r6 = r6 & 252645135; + r8 = r8 & 252645135; + r5 = (r5 + r7)|0; + r6 = (r6 + r8)|0; + r7 = r5 >>> 8; + r8 = r6 >>> 8; + r5 = r5 & 16711935; + r7 = r7 & 16711935; + r6 = r6 & 16711935; + r8 = r8 & 16711935; + r5 = (r5 + r7)|0; + r6 = (r6 + r8)|0; + r7 = r5 & 65535; + r5 = r5 >>> 16; + r8 = r6 & 65535; + r6 = r6 >>> 16; + r5 = (r7 + r5)|0; + r6 = (r8 + r6)|0; + r5 = (r5 - r6)|0; + if(uint(r5) >> r7; + r9 = 0; + r2 = r2 << r5; + r5 = r6 | r8; + r6 = r0 >>> r7; +__label__ = 39; +break _3; +} +else{ + if(r1 ==0) //_LBB795_7 +{ +__label__ = 7; +break _1; +} +else{ + r1 = r1 >> 2; + heap32[(r1)] = r2; + heap32[(r1+1)] = r0; +__label__ = 9; +break _1; +} +} +} +else{ +if(!(r1 ==0)) //_LBB795_22 +{ + r1 = r1 >> 2; + r3 = r5 & r0; + heap32[(r1)] = r2; + heap32[(r1+1)] = r3; +} + r1 = (r4 + -1)|0; + r1 = r1 & (~r4); + r2 = r1 >>> 1; + r1 = r1 & 1431655765; + r2 = r2 & 1431655765; + r1 = (r1 + r2)|0; + r2 = r1 >>> 2; + r1 = r1 & 858993459; + r2 = r2 & 858993459; + r1 = (r1 + r2)|0; + r2 = r1 >>> 4; + r1 = r1 & 252645135; + r2 = r2 & 252645135; + r1 = (r1 + r2)|0; + r2 = r1 >>> 8; + r1 = r1 & 16711935; + r2 = r2 & 16711935; + r1 = (r1 + r2)|0; + r2 = r1 & 65535; + r1 = r1 >>> 16; + r1 = (r2 + r1)|0; + r0 = r0 >>> r1; +__label__ = 5; +break _1; +} +} +else{ +if(!(r1 ==0)) //_LBB795_18 +{ + r1 = r1 >> 2; + r2 = Math.floor(uint(r0) % uint(r4)); + heap32[(r1)] = 0; + heap32[(r1+1)] = r2; +} + r0 = Math.floor(uint(r0) /uint(r4)); +__label__ = 5; +break _1; +} +} +else{ +if(!(r1 ==0)) //_LBB795_14 +{ + r1 = r1 >> 2; + r2 = Math.floor(uint(r0) % uint(r3)); + heap32[(r1)] = r2; + heap32[(r1+1)] = 0; +} + r0 = Math.floor(uint(r0) /uint(r3)); +__label__ = 5; +break _1; +} +} +} while(0); +if (__label__ == 39){ + r8 = (r3 + -1)|0; + r10 = 0; + r11 = 1; + r0 = uint(r8) < uint(r3) ? r11 : r10; + r0 = r3 != 0 ? r11 : r0; + r0 = (r4 + r0)|0; + r12 = (r0 + -1)|0; + r13 = r10; +_45: while(true){ + r0 = r5 << 1; + r14 = r2 >>> 31; + r6 = r6 << 1; + r5 = r5 >>> 31; + r14 = r0 | r14; + r0 = r6 | r5; + r5 = (r12 - r0)|0; + r6 = uint(r8) < uint(r14) ? r11 : r10; + r5 = (r5 - r6)|0; + r5 = r5 >> 31; + r6 = r5 & r3; + r15 = r5 & r4; + r16 = r9 << 1; + r2 = r2 << 1; + r17 = r9 >>> 31; + r15 = (r0 - r15)|0; + r18 = uint(r14) < uint(r6) ? r11 : r10; + r7 = (r7 + -1)|0; + r0 = r5 & 1; + r9 = r13 | r16; + r2 = r2 | r17; + r5 = (r14 - r6)|0; + r6 = (r15 - r18)|0; + r13 = r0; +if(!(r7 !=0)) //_LBB795_42 +{ +break _45; +} +} + r3 = 0; +} + r2 = r2 << 1; + r4 = r9 >>> 31; + r7 = r9 << 1; + r4 = r2 | r4; + r2 = r0 | r7; + r0 = r3 | r4; + if(r1 !=0) //_LBB795_46 +{ + r1 = r1 >> 2; + heap32[(r1)] = r5; + heap32[(r1+1)] = r6; +__label__ = 44; +break _1; +} +else{ +__label__ = 44; +break _1; +} +} +else{ + if(r4 !=0) //_LBB795_6 +{ + if(r1 !=0) //_LBB795_8 +{ + r0 = r1 >> 2; + heap32[(r0)] = r2; + heap32[(r0+1)] = 0; +__label__ = 9; +break _1; +} +else{ +__label__ = 7; +break _1; +} +} +else{ +if(!(r1 ==0)) //_LBB795_4 +{ + r0 = r1 >> 2; + r1 = Math.floor(uint(r2) % uint(r3)); + heap32[(r0)] = r1; + heap32[(r0+1)] = 0; +} + r0 = Math.floor(uint(r2) /uint(r3)); +__label__ = 5; +} +} +} while(0); +switch(__label__ ){//multiple entries +case 7: + r2 = 0; + r0 = r2; +break; +case 9: + r0 = 0; + r_g0 = r0; + r_g1 = r0; + return; +break; +case 5: + r1 = 0; + r_g0 = r0; + r_g1 = r1; + return; +break; +} + r_g0 = r2; + r_g1 = r0; + return; +} + +function __umoddi3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -32;var g0 = i7>>2; // save stack + r0 = sp + -8; + r1 = heap32[(fp)]; + r2 = heap32[(fp+1)]; + r3 = heap32[(fp+2)]; + r4 = heap32[(fp+3)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = r4; + heap32[(g0+4)] = r0; + __udivmoddi4(i7); + r0 = r0 >> 2; + r1 = heap32[(fp+-2)]; + r0 = heap32[(r0+1)]; + r_g0 = r1; + r_g1 = r0; + return; +} + +function __moddi3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; +var __label__ = 0; + i7 = sp + -32;var g0 = i7>>2; // save stack + r0 = heap32[(fp+3)]; + r1 = heap32[(fp+1)]; + r2 = r0 >> 31; + r3 = heap32[(fp+2)]; + r4 = r1 >> 31; + r5 = heap32[(fp)]; + r1 = r4 ^ r1; + r5 = r4 ^ r5; + r0 = r2 ^ r0; + r3 = r2 ^ r3; + r6 = 1; + r7 = 0; + r1 = (r1 - r4)|0; + r8 = uint(r5) < uint(r4) ? r6 : r7; + r0 = (r0 - r2)|0; + r9 = uint(r3) < uint(r2) ? r6 : r7; + r10 = sp + -8; + r5 = (r5 - r4)|0; + r1 = (r1 - r8)|0; + r2 = (r3 - r2)|0; + r0 = (r0 - r9)|0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r0; + heap32[(g0+4)] = r10; + __udivmoddi4(i7); + r0 = r10 >> 2; + r0 = heap32[(r0+1)]; + r1 = heap32[(fp+-2)]; + r1 = r1 ^ r4; + r0 = r0 ^ r4; + r0 = (r0 - r4)|0; + r2 = uint(r1) < uint(r4) ? r6 : r7; + r1 = (r1 - r4)|0; + r0 = (r0 - r2)|0; + r_g0 = r1; + r_g1 = r0; + return; +} + +function __divdi3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp+3)]; + r1 = heap32[(fp+1)]; + r2 = r1 >> 31; + r3 = heap32[(fp)]; + r4 = r0 >> 31; + r5 = heap32[(fp+2)]; + r6 = r2 ^ r1; + r3 = r2 ^ r3; + r7 = r4 ^ r0; + r5 = r4 ^ r5; + r8 = 1; + r9 = 0; + r6 = (r6 - r2)|0; + r10 = uint(r3) < uint(r2) ? r8 : r9; + r7 = (r7 - r4)|0; + r11 = uint(r5) < uint(r4) ? r8 : r9; + r2 = (r3 - r2)|0; + r3 = (r6 - r10)|0; + r4 = (r5 - r4)|0; + r5 = (r7 - r11)|0; + heap32[(g0)] = r2; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r5; + heap32[(g0+4)] = 0; + r0 = r0 ^ r1; + __udivmoddi4(i7); + r0 = r0 >> 31; + r1 = r_g0 ^ r0; + r2 = r_g1 ^ r0; + r2 = (r2 - r0)|0; + r3 = uint(r1) < uint(r0) ? r8 : r9; + r0 = (r1 - r0)|0; + r1 = (r2 - r3)|0; + r_g0 = r0; + r_g1 = r1; + return; +} + +function __udivdi3(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+3)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r3; + heap32[(g0+4)] = 0; + __udivmoddi4(i7); + return; +} + +function sscanf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var r19; + var r20; + var f0; + var f1; + var f2; + var f3; +var __label__ = 0; + i7 = sp + -40;var g0 = i7>>2; // save stack + r0 = (sp + 4)|0; + r1 = heap32[(fp)]; + heap32[(fp+-5)] = r0; + heap32[(fp+-4)] = r1; + heap32[(fp+-1)] = r0; + r0 = sp + -16; + heap32[(g0)] = r0; + r1 = 1; + r2 = 0; + r3 = _2E_str7136; + sgetc(i7); + r4 = r_g0; + f3 = 10; + r20 = 255; +_1: while(true){ + r5 = heapU8[r3]; + if(r5 !=0) //_LBB800_1 +{ + r5 = r5 << 24; + r5 = r5 >> 24; + r6 = (r3 + 1)|0; + if(r5 >31) //_LBB800_4 +{ + if(r5 ==32) //_LBB800_7 +{ +__label__ = 7; +} +else{ + if(r5 ==37) //_LBB800_8 +{ + r5 = -1; + r7 = 0; + r8 = r7; + r9 = r7; + r10 = r7; + r11 = r7; +_8: while(true){ + r12 = heap8[r6]; +if(!(r12 ==110)) //_LBB800_17 +{ + if(r4 ==-1) //_LBB800_187 +{ +__label__ = 168; +break _1; +} +} + if(r12 >103) //_LBB800_31 +{ + if(r12 >111) //_LBB800_38 +{ + if(r12 >114) //_LBB800_41 +{ +__label__ = 40; +break _8; +} +else{ + if(r12 ==112) //_LBB800_59 +{ +__label__ = 52; +break _8; +} +else{ +if(!(r12 ==113)) //_LBB800_45 +{ +__label__ = 168; +break _1; +} +} +} +} +else{ + if(r12 >107) //_LBB800_35 +{ + if(r12 ==108) //_LBB800_55 +{ + r3 = 1; + r10 = r10 & 255; + r11 = r10 == 0 ? r11 : r3; + r6 = (r6 + 1)|0; + r10 = r3; +continue _8; +} +else{ +__label__ = 35; +break _8; +} +} +else{ + if(r12 ==104) //_LBB800_53 +{ + r6 = (r6 + 1)|0; + r9 = 1; +continue _8; +} +else{ +__label__ = 33; +break _8; +} +} +} +} +else{ + if(r12 >75) //_LBB800_25 +{ + if(r12 >98) //_LBB800_28 +{ +__label__ = 27; +break _8; +} +else{ +if(!(r12 ==76)) //_LBB800_45 +{ +__label__ = 26; +break _8; +} +} +} +else{ + if(r12 >41) //_LBB800_22 +{ + if(r12 ==42) //_LBB800_46 +{ + r6 = (r6 + 1)|0; + r8 = 1; +continue _8; +} +else{ + r5 = (r12 + -48)|0; + if(uint(r5) > 2; + r3 = heap32[(r3)]; + heap32[(fp+-2)] = r3; +} + r3 = (r6 + 1)|0; + r6 = r4 << 2; + r7 = my_ctype; + r6 = (r6 + r7)|0; + r6 = heapU8[r6+4]; + r6 = r6 & 8; +_43: do { + if(r6 ==0) //_LBB800_169 +{ + r6 = r4; +} +else{ +_45: while(true){ + heap32[(g0)] = r0; + sgetc(i7); + r6 = r_g0; + r4 = r6 << 2; + r4 = (r4 + r7)|0; + r1 = (r1 + 1)|0; + r4 = heapU8[r4+4]; + r4 = r4 & 8; +if(!(r4 !=0)) //_LBB800_170 +{ +break _43; +} +} +} +} while(0); + r4 = -1; + if(r6 ==-1) //_LBB800_186 +{ +continue _1; +} +else{ + r4 = r6; +_49: while(true){ + if(r4 ==-1) //_LBB800_180 +{ +break _49; +} +else{ + if(r5 ==0) //_LBB800_180 +{ +break _49; +} +else{ + r6 = r4 << 2; + r6 = (r6 + r7)|0; + r6 = heapU8[r6+4]; + r6 = r6 & 8; + if(r6 ==0) //_LBB800_173 +{ +if(!(r8 !=0)) //_LBB800_175 +{ + r6 = heap32[(fp+-2)]; + heap8[r6] = r4; +} + if(r4 ==0) //_LBB800_180 +{ +break _49; +} +else{ + r4 = heap32[(fp+-2)]; + r4 = (r4 + 1)|0; + heap32[(fp+-2)] = r4; + heap32[(g0)] = r0; + r1 = (r1 + 1)|0; + r5 = (r5 + -1)|0; + sgetc(i7); + r4 = r_g0; +} +} +else{ +break _49; +} +} +} +} + if(r8 !=0) //_LBB800_186 +{ +continue _1; +} +else{ + r2 = (r2 + 1)|0; + r5 = heap32[(fp+-2)]; + r6 = 0; + heap8[r5] = r6; +continue _1; +} +} +} +else{ + if(r12 ==117) //_LBB800_60 +{ +__label__ = 53; +break _36; +} +else{ + if(r12 ==120) //_LBB800_59 +{ +__label__ = 52; +break _36; +} +else{ +__label__ = 168; +break _1; +} +} +} +break; +case 35: + if(r12 ==110) //_LBB800_182 +{ + r3 = (r6 + 1)|0; + r5 = r8 & 255; + if(r5 !=0) //_LBB800_186 +{ +continue _1; +} +else{ + r5 = sp + -4; + heap32[(g0)] = r5; + heap32[(g0+1)] = 4; + my_arg_test(i7); + r5 = r_g0 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r6 = (r1 + -1)|0; + heap32[(r5)] = r6; +continue _1; +} +} +else{ + if(r12 ==111) //_LBB800_44 +{ + r13 = 8; +__label__ = 55; +break _36; +} +else{ +__label__ = 168; +break _1; +} +} +break; +case 33: + if(r12 ==105) //_LBB800_60 +{ +__label__ = 53; +break _36; +} +else{ +__label__ = 168; +break _1; +} +break; +case 27: + if(r12 ==99) //_LBB800_155 +{ + r3 = (r6 + 1)|0; + r6 = r8 & 255; + if(r6 ==0) //_LBB800_157 +{ + r8 = sp + -4; + heap32[(g0)] = r8; + heap32[(g0+1)] = 4; + my_arg_test(i7); + r8 = r_g0 >> 2; + r8 = heap32[(r8)]; + r2 = (r2 + 1)|0; + heap32[(fp+-2)] = r8; +} + r8 = r7 & 255; + r7 = 1; + r5 = r8 == 0 ? r7 : r5; + if(r5 ==0) //_LBB800_186 +{ +continue _1; +} +else{ + if(r4 ==-1) //_LBB800_186 +{ +continue _1; +} +else{ + r5 = (r5 + -1)|0; +_77: while(true){ +if(!(r6 !=0)) //_LBB800_163 +{ + r8 = heap32[(fp+-2)]; + r7 = (r8 + 1)|0; + heap8[r8] = r4; + heap32[(fp+-2)] = r7; +} + heap32[(g0)] = r0; + r1 = (r1 + 1)|0; + sgetc(i7); + r4 = r_g0; + if(r5 ==0) //_LBB800_186 +{ +continue _1; +} +else{ + r5 = (r5 + -1)|0; + if(r4 !=-1) //_LBB800_161 +{ +continue _77; +} +else{ +continue _1; +} +} +} +} +} +} +else{ + if(r12 ==100) //_LBB800_61 +{ + r13 = 10; +__label__ = 55; +break _36; +} +else{ + r5 = (r12 + -101)|0; + if(uint(r5) uint(9)) //_LBB800_120 +{ + f0 = 0; + r6 = r1; +} +else{ + f0 = 0; + r6 = r1; +_111: while(true){ + r4 = (r4 + -48)|0; + f1 = 10; + heap32[(g0)] = r0; + f0 = f0*f1; + f1 = r4; //fitod r4, f1 + sgetc(i7); + r4 = r_g0; + f0 = f0+f1; + r6 = (r6 + 1)|0; + r7 = (r4 + -48)|0; +if(!(uint(r7) > 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + f0 = f0; //fdtos f0, f0 + heapFloat[(r5)] = f0; +} +else{ + r5 = r5 >> 2; + r5 = heap32[(r5)]; + llvm_writeDouble((r5),f0); +} + r2 = (r2 + 1)|0; +continue _1; +} +} +break; +} + r3 = r4 << 2; + r14 = my_ctype; + r3 = (r3 + r14)|0; + r15 = heapU8[r3+4]; + r3 = (r6 + 1)|0; + r6 = r15 & 8; +_155: do { +if(!(r6 ==0)) //_LBB800_64 +{ +_156: while(true){ + heap32[(g0)] = r0; + sgetc(i7); + r4 = r_g0; + r6 = r4 << 2; + r6 = (r6 + r14)|0; + r1 = (r1 + 1)|0; + r6 = heapU8[r6+4]; + r6 = r6 & 8; +if(!(r6 !=0)) //_LBB800_65 +{ +break _155; +} +} +} +} while(0); + if(r4 ==45) //_LBB800_68 +{ + heap32[(g0)] = r0; + r1 = (r1 + 1)|0; + r6 = 1; + sgetc(i7); + r4 = r_g0; +} +else{ + r6 = 0; +} + if(r4 ==43) //_LBB800_71 +{ + heap32[(g0)] = r0; + r14 = (r1 + 1)|0; + sgetc(i7); + r4 = r_g0; +} +else{ + r14 = r1; +} + if(r4 !=-1) //_LBB800_74 +{ + r7 = r7 & 255; +_168: do { + if(r7 ==0) //_LBB800_76 +{ + if(r13 !=16) //_LBB800_79 +{ +__label__ = 68; +} +else{ + if(r4 !=48) //_LBB800_79 +{ +__label__ = 68; +} +else{ +__label__ = 72; +} +} +_172: do { +if (__label__ == 68){ +if(!(r13 !=0)) //_LBB800_82 +{ + r7 = 48; + r7 = r4 != r7; +if(!(r7 != 0)) //_LBB800_82 +{ + r13 = 8; +break _172; +} +} + r7 = 10; + r13 = r13 != 0 ? r13 : r7; + r1 = r14; +break _168; +} +} while(0); + heap32[(g0)] = r0; + sgetc(i7); + r4 = r_g0; + r7 = r4 | 32; + if(r7 ==120) //_LBB800_85 +{ + heap32[(g0)] = r0; + r1 = (r14 + 2)|0; + r13 = 16; + sgetc(i7); + r4 = r_g0; +} +else{ + r1 = (r14 + 1)|0; +} +} +else{ + r1 = r14; +} +} while(0); + r7 = 0; + r15 = r7; + r16 = r7; +_184: while(true){ + if(r5 ==0) //_LBB800_97 +{ +break _184; +} +else{ + if(r4 !=-1) //_LBB800_87 +{ + r17 = r4 & 255; + r18 = r17 | 32; + if(uint(r18) =uint(r13)) //_LBB800_97 +{ +break _184; +} +else{ + heap32[(g0)] = r15; + heap32[(g0+1)] = r16; + heap32[(g0+2)] = r13; + heap32[(g0+3)] = r7; + __muldi3(i7); + r4 = r_g0; + r18 = r_g1; + r15 = uint(r4) >= uint(r15); + r19 = uint(r18) >= uint(r16); + r15 = r18 == r16 ? r15 : r19; + if(r15 != 0) //_LBB800_93 +{ + r15 = (r17 + r4)|0; + r16 = 1; + r17 = uint(r15) < uint(r17) ? r16 : r7; + r4 = uint(r15) < uint(r4) ? r16 : r17; + r16 = (r18 + r4)|0; +} +else{ + r15 = -1; + r16 = r15; +} + heap32[(g0)] = r0; + r1 = (r1 + 1)|0; + r5 = (r5 + -1)|0; + sgetc(i7); + r4 = r_g0; +} +} +else{ +break _184; +} +} +} + if(r14 ==r1) //_LBB800_73 +{ +__label__ = 172; +break _1; +} +else{ + r5 = r12 | 32; +if(!(uint(r5) >uint(111))) //_LBB800_100 +{ + if(r16 >-1) //_LBB800_101 +{ + r5 = 1; + r12 = (r7 - r16)|0; + r5 = r15 != 0 ? r5 : r7; + r7 = (r7 - r15)|0; + r5 = (r12 - r5)|0; + r15 = r6 != 0 ? r7 : r15; + r16 = r6 != 0 ? r5 : r16; +} +} + r5 = r8 & 255; + if(r5 !=0) //_LBB800_186 +{ +continue _1; +} +else{ + r5 = r11 & 255; + if(r5 ==0) //_LBB800_105 +{ + r5 = r10 & 255; + if(r5 ==0) //_LBB800_107 +{ + r5 = sp + -4; + heap32[(g0)] = r5; + heap32[(g0+1)] = 4; + my_arg_test(i7); + r5 = r_g0; + r7 = r9 & 255; + if(r7 ==0) //_LBB800_109 +{ + r5 = r5 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + heap32[(r5)] = r15; +} +else{ + r5 = r5 >> 2; + r5 = heap32[(r5)]; + heap16[(r5)>>1] = r15; +} +} +else{ + r5 = sp + -4; + heap32[(g0)] = r5; + heap32[(g0+1)] = 4; + my_arg_test(i7); + r5 = r_g0 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + heap32[(r5)] = r15; +} +} +else{ + r5 = sp + -4; + heap32[(g0)] = r5; + heap32[(g0+1)] = 4; + my_arg_test(i7); + r5 = r_g0 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + heap32[(r5)] = r15; + heap32[(r5+1)] = r16; +} + r5 = uint(r14) < uint(r1); + r5 = r5 & 1; + r2 = (r5 + r2)|0; +continue _1; +} +} +} +else{ +__label__ = 172; +break _1; +} +} +else{ +__label__ = 165; +} +} +} +else{ + if(r5 ==0) //_LBB800_6 +{ +__label__ = 6; +break _1; +} +else{ + r7 = (r5 + -9)|0; + if(uint(r7) > 24; + r5 = r5 << 2; + r6 = my_ctype; + r5 = (r5 + r6)|0; + r5 = heapU8[r5+4]; + r5 = r5 & 8; + if(r5 ==0) //_LBB800_13 +{ +break _218; +} +else{ + r3 = (r3 + 1)|0; +} +} +} + r6 = r4 << 2; + r5 = my_ctype; + r6 = (r6 + r5)|0; + r6 = heapU8[r6+4]; + r6 = r6 & 8; + if(r6 ==0) //_LBB800_186 +{ +continue _1; +} +else{ +__label__ = 12; //SET chanka +_223: while(true){ + heap32[(g0)] = r0; + sgetc(i7); + r4 = r_g0; + r6 = r4 << 2; + r6 = (r6 + r5)|0; + r1 = (r1 + 1)|0; + r6 = heapU8[r6+4]; + r6 = r6 & 8; + if(r6 ==0) //_LBB800_186 +{ +continue _1; +} +} +} +break; +case 165: + r3 = r4 & 255; + if(r3 !=r5) //_LBB800_187 +{ +__label__ = 168; +break _1; +} +else{ + heap32[(g0)] = r0; + r1 = (r1 + 1)|0; + sgetc(i7); + r4 = r_g0; + r3 = r6; +continue _1; +} +break; +} +} +else{ +__label__ = 168; +break _1; +} +} +_227: do { +switch(__label__ ){//multiple entries +case 168: +if(!(r4 >-1)) //_LBB800_190 +{ +if(!(r2 !=0)) //_LBB800_190 +{ + r2 = -1; +break _227; +} +} + heap32[(g0)] = r4; + heap32[(g0+1)] = r0; + sputc(i7); +break; +case 6: + r2 = 0; +break; +} +} while(0); + r_g0 = r2; + return; +} + +function __v_printf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var r19; + var r20; + var r21; + var r22; + var r23; + var f0; + var f1; +var __label__ = 0; + i7 = sp + -184;var g0 = i7>>2; // save stack + r0 = sp + -136; + r1 = heap32[(fp+2)]; + r2 = heap32[(fp)]; + r3 = heap32[(fp+1)]; + r0 = (r0 + 1)|0; + heap32[(fp+-1)] = r1; + heap32[(fp+-2)] = 0; +_1: while(true){ + r4 = heapU8[r3]; + if(r4 ==0) //_LBB801_209 +{ +__label__ = 197; +break _1; +} +else{ + r1 = 0; + r5 = r4; +_4: while(true){ + r5 = r5 & 255; + if(r5 ==0) //_LBB801_4 +{ +break _4; +} +else{ + if(r5 !=37) //_LBB801_1 +{ + r5 = (r3 - r1)|0; + r5 = heapU8[r5+1]; + r1 = (r1 + -1)|0; +} +else{ +break _4; +} +} +} + r5 = 0; + if(r1 !=0) //_LBB801_6 +{ + r4 = (r5 - r1)|0; + if(r4 <0) //_LBB801_210 +{ +__label__ = 198; +break _1; +} +else{ + r6 = heap32[(fp+-2)]; + r7 = (r6 - r1)|0; + if(uint(r7) > 2; + r8 = heap32[(r7+1)]; + r7 = heap32[(r7)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r7; + __FUNCTION_TABLE__[(r8)>>2](i7); + r4 = heap32[(fp+-2)]; + r4 = (r4 - r1)|0; + r1 = (r3 - r1)|0; + heap32[(fp+-2)] = r4; + r4 = heapU8[r1]; + r3 = r6; +} +} +} + r1 = r4 & 255; + if(r1 !=37) //_LBB801_207 +{ +continue _1; +} +else{ + r3 = (r3 + 1)|0; + r1 = 32; + r4 = r5; + r6 = r5; + r7 = r5; + r8 = r5; + r9 = r5; + r10 = r5; + r11 = r5; +_15: while(true){ + r12 = r4; + r13 = r3; + r14 = heapU8[r13]; + r3 = (r13 + 1)|0; + heap8[sp+-145] = r14; +_17: do { + if(r14 >99) //_LBB801_29 +{ + if(r14 >110) //_LBB801_37 +{ + if(r14 >114) //_LBB801_41 +{ + if(r14 >119) //_LBB801_44 +{ + if(r14 ==122) //_LBB801_47 +{ +__label__ = 50; +break _17; +} +else{ +__label__ = 44; +break _15; +} +} +else{ +__label__ = 41; +break _15; +} +} +else{ + if(r14 ==111) //_LBB801_105 +{ +__label__ = 99; +break _15; +} +else{ + if(r14 ==112) //_LBB801_97 +{ +__label__ = 91; +break _15; +} +else{ + if(r14 ==113) //_LBB801_53 +{ +__label__ = 49; +break _17; +} +else{ +continue _1; +} +} +} +} +} +else{ + if(r14 >104) //_LBB801_34 +{ + if(r14 ==105) //_LBB801_108 +{ +__label__ = 102; +break _15; +} +else{ + if(r14 ==106) //_LBB801_53 +{ +__label__ = 49; +break _17; +} +else{ + if(r14 ==108) //_LBB801_47 +{ +__label__ = 50; +break _17; +} +else{ +continue _1; +} +} +} +} +else{ + if(r14 ==100) //_LBB801_108 +{ +__label__ = 102; +break _15; +} +else{ + r4 = (r14 + -102)|0; + if(uint(r4) 44) //_LBB801_20 +{ + if(r14 >75) //_LBB801_24 +{ + if(r14 >97) //_LBB801_27 +{ +__label__ = 26; +break _15; +} +else{ + if(r14 ==76) //_LBB801_53 +{ +__label__ = 49; +break _17; +} +else{ +__label__ = 25; +break _15; +} +} +} +else{ + r4 = 1; + if(r14 ==45) //_LBB801_11 +{ +continue _15; +} +else{ + if(r14 ==46) //_LBB801_61 +{ + r4 = heapU8[r3]; + if(r4 !=42) //_LBB801_63 +{ + r4 = sp + -144; + heap32[(g0)] = r3; + heap32[(g0+1)] = r4; + strtol(i7); + r14 = 0; + r11 = r_g0 < 0 ? r14 : r_g0; + r3 = heap32[(fp+-36)]; +} +else{ + r4 = sp + -4; + heap32[(g0)] = r4; + heap32[(g0+1)] = 4; + my_arg_test(i7); + r4 = r_g0 >> 2; + r4 = heap32[(r4)]; + r14 = 0; + r11 = r4 < 0 ? r14 : r4; + r3 = (r13 + 2)|0; +} + r8 = 1; + r4 = r12; + if(uint(r11) >uint(10240)) //_LBB801_210 +{ +__label__ = 198; +break _1; +} +else{ +continue _15; +} +} +else{ + r4 = (r14 + -48)|0; + if(uint(r4) uint(10240)) //_LBB801_210 +{ +__label__ = 198; +break _1; +} +else{ + r8 = 0; + r4 = r12 & 255; + r13 = heapU8[sp+-145]; + r14 = 48; + r13 = r13 == r14; + r4 = r4 == r8; + r4 = r13 & r4; + r1 = r4 != 0 ? r14 : r1; + r3 = heap32[(fp+-36)]; + r4 = r12; +continue _15; +} +} +} +else{ +continue _1; +} +} +} +} +} +else{ + if(r14 >36) //_LBB801_17 +{ + if(r14 ==37) //_LBB801_66 +{ +__label__ = 62; +break _15; +} +else{ + if(r14 ==42) //_LBB801_60 +{ + r4 = sp + -4; + heap32[(g0)] = r4; + heap32[(g0+1)] = 4; + my_arg_test(i7); + r4 = r_g0 >> 2; + r4 = heap32[(r4)]; + r13 = r4 >> 31; + r14 = (r4 + r13)|0; + r15 = 1; + r10 = r14 ^ r13; + r4 = r4 < 0 ? r15 : r12; + if(uint(r10) >uint(10240)) //_LBB801_210 +{ +__label__ = 198; +break _1; +} +else{ +continue _15; +} +} +else{ + if(r14 ==43) //_LBB801_56 +{ + r7 = 1; + r4 = r12; +continue _15; +} +else{ +continue _1; +} +} +} +} +else{ + if(r14 ==0) //_LBB801_210 +{ +__label__ = 198; +break _1; +} +else{ + if(r14 ==32) //_LBB801_55 +{ + r6 = 1; + r4 = r12; +continue _15; +} +else{ + if(r14 ==35) //_LBB801_51 +{ + r5 = 255; +__label__ = 48; +} +else{ +continue _1; +} +} +} +} +} +} +} while(0); +switch(__label__ ){//multiple entries +case 49: + r9 = (r9 + 1)|0; +break; +case 48: + r9 = (r9 + -1)|0; + r4 = r12; +continue _15; +break; +} + r9 = (r9 + 1)|0; + r4 = r12; +} +_71: do { +switch(__label__ ){//multiple entries +case 26: + if(r14 ==98) //_LBB801_49 +{ + r4 = 0; + r13 = 2; + r14 = r4; + r15 = r4; +__label__ = 104; +break _71; +} +else{ + if(r14 ==99) //_LBB801_65 +{ + r1 = sp + -4; + heap32[(g0)] = r1; + heap32[(g0+1)] = 4; + my_arg_test(i7); + r1 = r_g0 >> 2; + r1 = heap32[(r1)]; + heap8[sp+-145] = r1; +__label__ = 62; +break _71; +} +else{ +continue _1; +} +} +break; +case 25: + if(r14 ==88) //_LBB801_50 +{ +__label__ = 92; +break _71; +} +else{ +continue _1; +} +break; +case 44: + if(r14 !=120) //_LBB801_207 +{ +continue _1; +} +else{ + r4 = 0; +__label__ = 93; +break _71; +} +break; +case 41: + if(r14 ==115) //_LBB801_68 +{ + r1 = sp + -4; + heap32[(g0)] = r1; + heap32[(g0+1)] = 4; + my_arg_test(i7); + r1 = r_g0 >> 2; + r4 = _2E_str38684; + r1 = heap32[(r1)]; + r1 = r1 == 0 ? r4 : r1; + heap32[(fp+-36)] = r1; + r4 = heapU8[r1]; +_83: do { + if(r4 !=0) //_LBB801_70 +{ + r4 = (r1 + 1)|0; + r14 = 0; +_85: while(true){ + r1 = (r14 + 1)|0; + r6 = heapU8[r4+r14]; + r14 = r1; +if(!(r6 !=0)) //_LBB801_71 +{ +break _83; +} +} +} +else{ + r1 = 0; +} +} while(0); + r16 = 0; + r4 = r8 & 255; + r4 = r4 != r16; + r14 = uint(r1) > uint(r11); + r4 = r4 & r14; + r14 = 32; + r4 = r4 != 0 ? r11 : r1; + r1 = r14; + r8 = r16; + r11 = r16; +__label__ = 69; +break _71; +} +else{ + if(r14 ==117) //_LBB801_109 +{ + r4 = 0; + r13 = 10; + r14 = r4; + r15 = r4; +__label__ = 104; +break _71; +} +else{ +continue _1; +} +} +break; +case 99: + r4 = r5 & 255; + if(r4 !=0) //_LBB801_107 +{ + r5 = 1; + r4 = 0; + r13 = 8; + r14 = 48; + heap8[sp+-135] = r14; + r14 = r4; + r15 = r5; +__label__ = 104; +break _71; +} +else{ + r4 = 0; + r13 = 8; + r14 = r4; + r5 = r4; + r15 = r4; +__label__ = 104; +break _71; +} +break; +case 91: + r14 = 120; + r5 = 2; + r9 = 1; + heap8[sp+-145] = r14; +__label__ = 92; +break _71; +break; +case 102: + r4 = 0; + r14 = 1; + r13 = 10; + r15 = r4; +__label__ = 104; +break _71; +break; +case 129: + r4 = sp + -4; + heap32[(g0)] = r4; + heap32[(g0+1)] = 8; + my_arg_test(i7); + f0 = llvm_readDouble((r_g0)); + heap32[(fp+-36)] = r0; + r4 = 103; + r4 = r14 == r4; + r8 = r8 & 255; + r16 = 1; + r9 = 6; + r10 = r10 == 0 ? r16 : r10; + r11 = r8 == 0 ? r9 : r11; + r4 = r4 & 1; + f1 = 0; + r9 = r7 & 255; + r13 = 0; + llvm_writeDouble((i7),f0); + heap32[(g0+2)] = r0; + heap32[(g0+3)] = 127; + heap32[(g0+4)] = r10; + heap32[(g0+5)] = r11; + heap32[(g0+6)] = r4; + r4 = r9 != r13; + r16 = f0 < f1; + r4 = r4 | r16; + r16 = r4 & 1; + __dtostr(i7); + r4 = r_g0; +_98: do { + if(r8 !=0) //_LBB801_137 +{ + r8 = heap32[(fp+-36)]; + r15 = r13; +_100: while(true){ + r17 = heapU8[r8+r13]; + if(r17 ==0) //_LBB801_161 +{ +__label__ = 151; +break _100; +} +else{ + r18 = (r8 + r13)|0; + if(r17 ==46) //_LBB801_149 +{ +__label__ = 142; +break _100; +} +else{ + r17 = heapU8[r18+1]; + if(r17 ==0) //_LBB801_161 +{ +__label__ = 151; +break _100; +} +else{ + r19 = r15 << 2; + if(r17 !=46) //_LBB801_143 +{ + r17 = heapU8[r18+2]; + if(r17 ==0) //_LBB801_161 +{ +__label__ = 151; +break _100; +} +else{ + if(r17 !=46) //_LBB801_146 +{ + r17 = heapU8[r18+3]; + if(r17 ==0) //_LBB801_161 +{ +__label__ = 151; +break _100; +} +else{ + if(r17 ==46) //_LBB801_151 +{ +__label__ = 143; +break _100; +} +else{ + r15 = (r15 + 1)|0; + r13 = (r13 + 4)|0; +} +} +} +else{ +__label__ = 138; +break _100; +} +} +} +else{ +__label__ = 135; +break _100; +} +} +} +} +} +_110: do { +switch(__label__ ){//multiple entries +case 142: + if(r18 ==0) //_LBB801_161 +{ +__label__ = 151; +break _110; +} +else{ +__label__ = 144; +break _110; +} +break; +case 143: + r18 = (r18 + 3)|0; +__label__ = 144; +break _110; +break; +case 138: + r4 = r19 | 2; + r18 = (r8 + r4)|0; +__label__ = 144; +break _110; +break; +case 135: + r4 = r19 | 1; + r18 = (r8 + r4)|0; +__label__ = 144; +break; +} +} while(0); +switch(__label__ ){//multiple entries +case 151: + r5 = r5 & 255; + if(r5 ==0) //_LBB801_136 +{ +break _98; +} +else{ + r5 = 46; + heap8[r8+r4] = r5; + r5 = heap32[(fp+-36)]; + r4 = (r4 + r5)|0; + r5 = 0; + heap8[r4+1] = r5; +} +break; +case 144: + if(r11 !=0) //_LBB801_155 +{ +__label__ = 146; +} +else{ + r4 = r5 & 255; + if(r4 !=0) //_LBB801_155 +{ +__label__ = 146; +} +else{ +__label__ = 147; +} +} +if (__label__ == 146){ + r18 = (r18 + 1)|0; +} +_123: while(true){ + r4 = r11; + if(r4 !=0) //_LBB801_158 +{ + r11 = (r4 + -1)|0; + r5 = (r18 + 1)|0; + r8 = heapU8[r18+1]; + r18 = r5; + if(r8 !=0) //_LBB801_156 +{ +__label__ = 147; +} +else{ +__label__ = 149; +break _123; +} +} +else{ +__label__ = 150; +break _123; +} +} +if (__label__ == 149){ + r18 = r5; +} + r5 = 0; + heap8[r18] = r5; + r11 = r4; +break; +} +} +} while(0); +_130: do { +if(!(r14 !=103)) //_LBB801_199 +{ + r4 = heap32[(fp+-36)]; + r5 = 0; + r8 = r5; +_132: while(true){ + r14 = heapU8[r4+r5]; + if(r14 ==0) //_LBB801_199 +{ +break _130; +} +else{ + r13 = (r4 + r5)|0; + if(r14 ==46) //_LBB801_176 +{ +__label__ = 166; +break _132; +} +else{ + r14 = heapU8[r13+1]; + if(r14 ==0) //_LBB801_199 +{ +break _130; +} +else{ + r15 = r8 << 2; + if(r14 !=46) //_LBB801_170 +{ + r14 = heapU8[r13+2]; + if(r14 ==0) //_LBB801_199 +{ +break _130; +} +else{ + if(r14 !=46) //_LBB801_173 +{ + r14 = heapU8[r13+3]; + if(r14 ==0) //_LBB801_199 +{ +break _130; +} +else{ + if(r14 ==46) //_LBB801_178 +{ +__label__ = 167; +break _132; +} +else{ + r8 = (r8 + 1)|0; + r5 = (r5 + 4)|0; +} +} +} +else{ +__label__ = 162; +break _132; +} +} +} +else{ +__label__ = 159; +break _132; +} +} +} +} +} +switch(__label__ ){//multiple entries +case 166: + if(r13 ==0) //_LBB801_199 +{ +break _130; +} +break; +case 167: + r13 = (r13 + 3)|0; +break; +case 162: + r5 = r15 | 2; + r13 = (r4 + r5)|0; +break; +case 159: + r5 = r15 | 1; + r13 = (r4 + r5)|0; +break; +} + r4 = 0; + r5 = r13; +_148: while(true){ + r8 = heapU8[r5]; + if(r8 !=101) //_LBB801_182 +{ + if(r8 !=0) //_LBB801_184 +{ + r8 = r4 << 2; + r14 = heapU8[r5+1]; + if(r14 !=101) //_LBB801_186 +{ + if(r14 ==0) //_LBB801_183 +{ +__label__ = 171; +break _148; +} +else{ + r14 = heapU8[r5+2]; + if(r14 !=101) //_LBB801_189 +{ + if(r14 ==0) //_LBB801_183 +{ +__label__ = 171; +break _148; +} +else{ + r14 = heapU8[r5+3]; + if(r14 !=101) //_LBB801_192 +{ + if(r14 ==0) //_LBB801_183 +{ +__label__ = 171; +break _148; +} +else{ + r4 = (r4 + 1)|0; + r5 = (r5 + 4)|0; +} +} +else{ +__label__ = 179; +break _148; +} +} +} +else{ +__label__ = 176; +break _148; +} +} +} +else{ +__label__ = 173; +break _148; +} +} +else{ +__label__ = 171; +break _148; +} +} +else{ +__label__ = 182; +break _148; +} +} +switch(__label__ ){//multiple entries +case 171: + r5 = 0; +break; +case 179: + r4 = r8 | 3; + r5 = (r13 + r4)|0; +break; +case 176: + r4 = r8 | 2; + r5 = (r13 + r4)|0; +break; +case 173: + r4 = r8 | 1; + r5 = (r13 + r4)|0; +break; +} +_163: while(true){ + r4 = (r13 + 1)|0; + r8 = heapU8[r13+1]; + r13 = r4; +if(!(r8 !=0)) //_LBB801_194 +{ +break _163; +} +} + r4 = r5 == 0 ? r4 : r5; +_166: while(true){ + r8 = heapU8[r4+-1]; + r4 = (r4 + -1)|0; +if(!(r8 ==48)) //_LBB801_196 +{ +break _166; +} +} + r14 = (r4 + 1)|0; + r4 = r8 == 46 ? r4 : r14; + r8 = 0; + heap8[r4] = r8; +if(!(r5 ==0)) //_LBB801_199 +{ + heap32[(g0)] = r4; + heap32[(g0+1)] = r5; + strcpy(i7); +} +} +} while(0); + r4 = r7 | r6; + r4 = r4 & 255; +if(!(r4 ==0)) //_LBB801_202 +{ +if(!(f0 > 2; + r4 = heap32[(r1+1)]; + r1 = heap32[(r1)]; + r5 = sp + -145; + heap32[(g0)] = r5; + heap32[(g0+1)] = 1; + heap32[(g0+2)] = r1; + __FUNCTION_TABLE__[(r4)>>2](i7); + r1 = heap32[(fp+-2)]; + r1 = (r1 + 1)|0; + heap32[(fp+-2)] = r1; +continue _1; +} +break; +case 92: + r4 = r14 & 255; + r13 = 88; + r4 = r4 == r13; + r4 = r4 & 1; +__label__ = 93; +break; +} +if (__label__ == 93){ + r5 = r5 & 255; + if(r5 !=0) //_LBB801_101 +{ + r13 = 48; + r5 = 2; + heap8[sp+-135] = r13; + heap8[sp+-134] = r14; + r15 = r5; +} +else{ + r5 = 0; + r15 = r5; +} + if(uint(r11) >uint(r10)) //_LBB801_104 +{ + r14 = 0; + r13 = 16; + r10 = r11; +__label__ = 104; +} +else{ + r14 = 0; + r13 = 16; +__label__ = 104; +} +} +_194: do { +if (__label__ == 104){ + heap32[(fp+-36)] = r0; + r16 = sp + -4; + heap32[(g0)] = r16; + heap32[(g0+1)] = 4; + my_arg_test(i7); + r17 = r_g0 >> 2; + r18 = r14 & 255; + r16 = 0; + r17 = heap32[(r17)]; + r18 = r18 != r16; + r19 = r17 < r16; + r20 = (r16 - r17)|0; + r18 = r18 & r19; + r9 = r9 << 24; + r17 = r18 != 0 ? r20 : r17; + r9 = r9 >> 24; + r19 = r17 & 65535; + r17 = r9 < 0 ? r19 : r17; + r19 = heap32[(fp+-36)]; + r20 = r17 & 255; + r21 = 2; + r9 = r9 < -1 ? r20 : r17; + r17 = r18 != 0 ? r21 : r14; + r14 = (r19 + r15)|0; + heap8[r14+122] = r16; + if(r9 !=0) //_LBB801_112 +{ + r18 = (r13 + -1)|0; + r19 = 35; + r20 = 10; + r18 = uint(r18) > uint(r19) ? r20 : r13; + r4 = r4 & 255; + r13 = 39; + r19 = 7; + r4 = r4 == 0 ? r13 : r19; + r19 = (r15 + 121)|0; + r20 = -122; +_198: while(true){ + r13 = Math.floor(uint(r9) % uint(r18)); + r13 = (r13 + 48)|0; + r22 = r13 & 255; + r23 = 57; + r22 = uint(r22) > uint(r23) ? r4 : r16; + r23 = (r20 + 1)|0; + r13 = (r13 + r22)|0; + r20 = (r14 - r20)|0; + heap8[r20+-1] = r13; + if(r19 <=r15) //_LBB801_115 +{ +break _198; +} +else{ + r9 = Math.floor(uint(r9) /uint(r18)); + r19 = (r19 + -1)|0; + r20 = r23; +if(!(r9 !=0)) //_LBB801_113 +{ +break _198; +} +} +} + r18 = (r23 + 122)|0; + r9 = (r14 - r23)|0; +} +else{ + r4 = (r15 + r19)|0; + r13 = 48; + r9 = (r4 + 121)|0; + r18 = 1; + heap8[r4+121] = r13; +} +_204: do { +if(!(r9 ==r14)) //_LBB801_125 +{ + if(uint(r9) <=uint(r14)) //_LBB801_122 +{ +if(!(r18 ==-1)) //_LBB801_125 +{ + r4 = (r16 - r18)|0; +_209: while(true){ + r13 = r4; + r19 = (r9 - r13)|0; + r4 = (r13 + 1)|0; + r20 = (r14 - r13)|0; + r19 = heapU8[r19]; + heap8[r20] = r19; +if(!(r13 !=0)) //_LBB801_124 +{ +break _204; +} +} +} +} +else{ +if(!(r18 ==-1)) //_LBB801_125 +{ + r4 = (r9 + 1)|0; + r9 = r18; +_213: while(true){ + heap8[r14] = r13; + if(r9 ==0) //_LBB801_125 +{ +break _204; +} +else{ + r13 = heapU8[r4]; + r4 = (r4 + 1)|0; + r9 = (r9 + -1)|0; + r14 = (r14 + 1)|0; +} +} +} +} +} +} while(0); + r4 = 1; + r4 = r18 != r4; + r4 = r4 & 1; + r14 = r8 ^ 1; + r4 = r4 | r14; + r4 = r4 & 255; + if(r4 !=0) //_LBB801_128 +{ +__label__ = 122; +} +else{ + r4 = heap32[(fp+-36)]; + r4 = heapU8[r4+r15]; + if(r4 !=48) //_LBB801_128 +{ +__label__ = 122; +} +else{ + r4 = r5 << 24; + r5 = 0; + r4 = r4 >> 24; + r14 = r11 == r5; + r4 = r4 > r5; + r4 = r14 | r4; + r4 = r4 != 0 ? r5 : r15; +__label__ = 123; +} +} +if (__label__ == 122){ + r4 = (r18 + r15)|0; +} + r14 = r17 & 255; + if(r14 ==2) //_LBB801_132 +{ + r6 = heap32[(fp+-36)]; + r7 = (r6 + -1)|0; + r4 = (r4 + 1)|0; + r14 = 48; + r16 = 45; + heap32[(fp+-36)] = r7; + heap8[r6+-1] = r16; + r16 = r21; +} +else{ + if(r14 !=0) //_LBB801_133 +{ + r14 = r7 | r6; + r14 = r14 & 255; +if(!(r14 ==0)) //_LBB801_131 +{ + r6 = heap32[(fp+-36)]; + r16 = (r6 + -1)|0; + r7 = r7 & 255; + r9 = 32; + r13 = 43; + r4 = (r4 + 1)|0; + r14 = 48; + r7 = r7 == 0 ? r9 : r13; + heap32[(fp+-36)] = r16; + heap8[r6+-1] = r7; + r16 = r17; +break _194; +} +} + r14 = 48; +} +} +} while(0); + r6 = heap32[(fp+-36)]; + r7 = r11 | r10; + if(r7 !=0) //_LBB801_77 +{ + r7 = 0; + r5 = r5 << 24; + r5 = r5 >> 24; + if(r5 <1) //_LBB801_79 +{ + r9 = r16 & 255; + r5 = r9 != r7; + r5 = r5 & 1; + if(r9 !=0) //_LBB801_81 +{ +__label__ = 75; +} +else{ +__label__ = 76; +} +} +else{ +__label__ = 75; +} +if (__label__ == 75){ + r4 = (r4 - r5)|0; + r10 = (r10 - r5)|0; + r9 = (r6 + r5)|0; + heap32[(fp+-36)] = r9; +} + r8 = r8 & 255; + r9 = r8 != r7; + r7 = r10 == r7; + r7 = r9 & r7; + r7 = r7 != 0 ? r11 : r10; + r8 = r8 == 0 ? r4 : r11; + r9 = r12 & 255; +if(!(r9 !=0)) //_LBB801_85 +{ + r10 = r1 & 255; +if(!(r10 !=32)) //_LBB801_85 +{ + r11 = sp + -8; + r12 = (r7 - r8)|0; + heap32[(g0)] = r11; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r12; + heap32[(g0+3)] = r10; + write_pad(i7); + r10 = r_g0; + if(r10 !=0) //_LBB801_210 +{ +__label__ = 198; +break _1; +} +} +} +if(!(r5 ==0)) //_LBB801_89 +{ + if(r5 <0) //_LBB801_210 +{ +__label__ = 198; +break _1; +} +else{ + r10 = heap32[(fp+-2)]; + r11 = (r10 + r5)|0; + if(uint(r11) > 2; + r11 = heap32[(r10+1)]; + r10 = heap32[(r10)]; + heap32[(g0)] = r6; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r10; + __FUNCTION_TABLE__[(r11)>>2](i7); + r6 = heap32[(fp+-2)]; + r5 = (r6 + r5)|0; + heap32[(fp+-2)] = r5; +} +} +} +if(!(r9 !=0)) //_LBB801_92 +{ + r5 = r1 & 255; +if(!(r5 ==32)) //_LBB801_92 +{ + r6 = sp + -8; + r10 = (r7 - r8)|0; + heap32[(g0)] = r6; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r10; + heap32[(g0+3)] = r5; + write_pad(i7); + r5 = r_g0; + if(r5 !=0) //_LBB801_210 +{ +__label__ = 198; +break _1; +} +} +} + r5 = sp + -8; + r6 = (r8 - r4)|0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r6; + heap32[(g0+3)] = r14; + write_pad(i7); + r14 = r_g0; + if(r14 !=0) //_LBB801_210 +{ +__label__ = 198; +break _1; +} +else{ + if(r4 <0) //_LBB801_210 +{ +__label__ = 198; +break _1; +} +else{ + r14 = heap32[(fp+-2)]; + r6 = (r14 + r4)|0; + if(uint(r6) > 2; + r6 = heap32[(r14+1)]; + r14 = heap32[(r14)]; + r10 = heap32[(fp+-36)]; + heap32[(g0)] = r10; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r14; + __FUNCTION_TABLE__[(r6)>>2](i7); + r14 = heap32[(fp+-2)]; + r4 = (r14 + r4)|0; + heap32[(fp+-2)] = r4; + if(r9 ==0) //_LBB801_207 +{ +continue _1; +} +else{ + r4 = (r7 - r8)|0; + r14 = r1 & 255; + heap32[(g0)] = r5; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r14; + write_pad(i7); + r4 = r_g0; + if(r4 ==0) //_LBB801_207 +{ +continue _1; +} +else{ +__label__ = 198; +break _1; +} +} +} +} +} +} +else{ + if(r4 <0) //_LBB801_210 +{ +__label__ = 198; +break _1; +} +else{ + r14 = heap32[(fp+-2)]; + r1 = (r14 + r4)|0; + if(uint(r1) > 2; + r1 = heap32[(r14+1)]; + r14 = heap32[(r14)]; + heap32[(g0)] = r6; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r14; + __FUNCTION_TABLE__[(r1)>>2](i7); + r14 = heap32[(fp+-2)]; + r4 = (r14 + r4)|0; + heap32[(fp+-2)] = r4; +continue _1; +} +} +} +} +} +} +switch(__label__ ){//multiple entries +case 197: + r0 = heap32[(fp+-2)]; + r_g0 = r0; + return; +break; +case 198: + r0 = -1; + r_g0 = r0; + return; +break; +} +} + +function fprintf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -32;var g0 = i7>>2; // save stack + r0 = sp + -8; + r1 = r0 >> 2; + r2 = __fwrite__index__; + heap32[(fp+-3)] = sp; + heap32[(r1+1)] = r2; + heap32[(fp+-2)] = 3; + r1 = _2E_str3133; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = sp; + __v_printf(i7); + return; +} + +function vsnprintf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; +var __label__ = 0; + i7 = sp + -40;var g0 = i7>>2; // save stack + r0 = sp + -16; + r1 = heap32[(fp+1)]; + r2 = r0 >> 2; + r3 = heap32[(fp)]; + heap32[(r2+1)] = 0; + r4 = (r1 + -1)|0; + r5 = 0; + r6 = sp + -24; + r7 = r1 == 0 ? r5 : r4; + heap32[(fp+-4)] = r3; + r8 = r6 >> 2; + r9 = swrite__index__; + heap32[(r2+2)] = r7; + heap32[(r8+1)] = r9; + heap32[(fp+-6)] = r0; + r0 = heap32[(fp+2)]; + r2 = heap32[(fp+3)]; + heap32[(g0)] = r6; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r2; + __v_printf(i7); + r0 = r_g0; +if(!(r3 ==0)) //_LBB803_7 +{ +if(!(r1 ==0)) //_LBB803_7 +{ +if(!(r0 <0)) //_LBB803_7 +{ +if(!(r1 ==-1)) //_LBB803_6 +{ +if(!(uint(r0) >2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -48;var g0 = i7>>2; // save stack + r0 = (sp + 8)|0; + r1 = sp + -16; + r2 = r1 >> 2; + heap32[(fp+-7)] = r0; + r3 = heap32[(fp)]; + heap32[(r2+1)] = 0; + r4 = sp + -24; + heap32[(fp+-4)] = r3; + r5 = r4 >> 2; + r6 = swrite__index__; + heap32[(r2+2)] = -2; + heap32[(r5+1)] = r6; + heap32[(fp+-6)] = r1; + r1 = heap32[(fp+1)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r0; + __v_printf(i7); + r0 = r_g0; +if(!(r3 ==0)) //_LBB804_3 +{ +if(!(r0 <0)) //_LBB804_3 +{ + r1 = 0; + heap8[r3+r0] = r1; +} +} + r_g0 = r0; + return; +} + +function _ZN12mandreel_b64L11b64_encode_EPKhjPcjjPNS_6B64_RCE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; +var __label__ = 0; + i7 = sp + -32;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = (r0 + 2)|0; + r2 = heap32[(fp+4)]; + r1 = Math.floor(uint(r1) / uint(3)); + r3 = heap32[(fp+2)]; + r1 = r1 << 2; + r4 = r2 >> 2; + heap32[(r4)] = 0; +_1: do { +if(!(r3 ==0)) //_LBB805_20 +{ + r5 = heap32[(fp+3)]; + if(uint(r1) <=uint(r5)) //_LBB805_3 +{ + r4 = heap32[(fp)]; + if(uint(r0) >uint(2)) //_LBB805_5 +{ + r5 = (r3 + r5)|0; + r6 = 0; + r12 = _ZN12mandreel_b64L9b64_charsE; +_7: while(true){ + r7 = heapU8[r4]; + r8 = heapU8[r4+1]; + r9 = r7 << 4; + r10 = heapU8[r4+2]; + r11 = r8 << 2; + r9 = r9 & 48; + r8 = r8 >>> 4; + r7 = r7 >>> 2; + r8 = r9 | r8; + r9 = r11 & 60; + r11 = r10 >>> 6; + r7 = heapU8[r12+r7]; + r9 = r9 | r11; + r8 = heapU8[r12+r8]; + heap8[r3] = r7; + r7 = r10 & 63; + r9 = heapU8[r12+r9]; + heap8[r3+1] = r8; + r8 = (r3 + 4)|0; + r6 = (r6 + 4)|0; + r7 = heapU8[r12+r7]; + heap8[r3+2] = r9; + heap8[r3+3] = r7; + if(r8 ==r5) //_LBB805_8 +{ +__label__ = 7; +} +else{ + if(r6 ==0) //_LBB805_9 +{ + r7 = 13; + r8 = (r3 + 6)|0; + r6 = 0; + r9 = 10; + heap8[r3+4] = r7; + heap8[r3+5] = r9; + r3 = r8; +__label__ = 9; +} +else{ +__label__ = 7; +} +} +if (__label__ == 7){ + r3 = r8; +} + r0 = (r0 + -3)|0; + r4 = (r4 + 3)|0; +if(!(uint(r0) >uint(2))) //_LBB805_6 +{ +break _7; +} +} +} +if(!(r0 ==0)) //_LBB805_20 +{ + r5 = 0; +_17: while(true){ + r6 = sp + -3; + r7 = (r4 - r5)|0; + r8 = (r5 + -1)|0; + r5 = (r6 - r5)|0; + r7 = heapU8[r7]; + heap8[r5] = r7; + r7 = (r0 + r8)|0; + r5 = r8; +if(!(r7 !=0)) //_LBB805_13 +{ +break _17; +} +} + if(r0 !=3) //_LBB805_16 +{ + r4 = 3; + r5 = (r4 - r0)|0; + r8 = 0; +_22: while(true){ + r7 = (r5 + -1)|0; + r5 = (r6 - r5)|0; + heap8[r5+3] = r8; + r5 = r7; +if(!(r7 !=0)) //_LBB805_17 +{ +break _22; +} +} + heap32[(g0)] = r6; + heap32[(g0+1)] = 3; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = 12; + heap32[(g0+4)] = r2; + r0 = (r4 - r0)|0; + _ZN12mandreel_b64L11b64_encode_EPKhjPcjjPNS_6B64_RCE(i7); + r4 = 61; +_25: while(true){ + r2 = (r0 + -1)|0; + r0 = (r3 - r0)|0; + heap8[r0+4] = r4; + r0 = r2; + if(r2 !=0) //_LBB805_19 +{ +continue _25; +} +else{ +break _1; +} +} +} +else{ + heap32[(g0)] = r6; + heap32[(g0+1)] = 3; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = 12; + heap32[(g0+4)] = r2; + _ZN12mandreel_b64L11b64_encode_EPKhjPcjjPNS_6B64_RCE(i7); + r_g0 = r1; + return; +} +} +} +else{ + heap32[(r4)] = 1; + r0 = 0; + r_g0 = r0; + return; +} +} +} while(0); + r_g0 = r1; + return; +} + +function _ZN12mandreel_b6410b64_decodeEPKcjPvj(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = r0 & 3; + r2 = 0; + r1 = r1 != r2; + r1 = r1 & 1; + r3 = r0 >>> 2; + r1 = (r1 + r3)|0; + r3 = heap32[(fp+2)]; + r1 = (r1 * 3)|0; + if(r3 !=0) //_LBB806_2 +{ + r4 = heap32[(fp+3)]; + if(uint(r1) <=uint(r4)) //_LBB806_4 +{ + r1 = heap32[(fp)]; + r4 = r3; + r5 = r2; +_5: while(true){ + if(r0 !=0) //_LBB806_5 +{ + r6 = heapU8[r1]; + if(r6 !=61) //_LBB806_7 +{ + r7 = _ZN12mandreel_b64L11b64_indexesE; + r6 = heapU8[r7+r6]; + if(r6 !=255) //_LBB806_9 +{ + r5 = 0; + r7 = sp + -4; + heap8[r7+r2] = r6; +__label__ = 8; +} +else{ +__label__ = 15; +} +} +else{ + r5 = (r5 + 1)|0; + r6 = sp + -4; + r7 = 0; + heap8[r6+r2] = r7; +__label__ = 8; +} +if (__label__ == 8){ + r2 = (r2 + 1)|0; + if(r2 ==4) //_LBB806_12 +{ + r2 = heapU8[sp+-3]; + r6 = heapU8[sp+-4]; + r2 = r2 >>> 4; + r2 = r2 & 3; + r6 = r6 << 2; + r2 = r2 | r6; + heap8[r4] = r2; + if(r5 !=2) //_LBB806_14 +{ + r2 = heapU8[sp+-2]; + r6 = heapU8[sp+-3]; + r2 = r2 >>> 2; + r2 = r2 & 15; + r6 = r6 << 4; + r2 = r2 | r6; + heap8[r4+1] = r2; + if(r5 !=1) //_LBB806_16 +{ + r2 = heapU8[sp+-2]; + r7 = heapU8[sp+-1]; + r2 = r2 << 6; + r6 = (r4 + 3)|0; + r2 = (r2 + r7)|0; + heap8[r4+2] = r2; + if(r5 ==0) //_LBB806_18 +{ + r2 = 0; + r4 = r6; + r5 = r2; +} +else{ +__label__ = 18; +break _5; +} +} +else{ +__label__ = 12; +break _5; +} +} +else{ +__label__ = 10; +break _5; +} +} +} + r0 = (r0 + -1)|0; + r1 = (r1 + 1)|0; +} +else{ +__label__ = 17; +break _5; +} +} +switch(__label__ ){//multiple entries +case 17: + r6 = r4; +break; +case 12: + r6 = (r4 + 2)|0; +break; +case 10: + r6 = (r4 + 1)|0; +break; +} + r1 = (r6 - r3)|0; +} +else{ + r1 = 0; +} +} + r_g0 = r1; + return; +} + +function __mandreel_internal_SetResolution(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = _ZL25s_mandreel_internal_width; + r1 = _ZL26s_mandreel_internal_height; + r0 = r0 >> 2; + r2 = heap32[(fp)]; + r1 = r1 >> 2; + r3 = heap32[(fp+1)]; + heap32[(r0)] = r2; + heap32[(r1)] = r3; + return; +} + +function __keyEvent(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function __mouseDoubleClick(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function __mouseMove(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function __resize(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function __mouseButton(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function __mouseWheelDelta(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function iMandreel_TextureAsync_IsCompressed(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; +var __label__ = 0; + i7 = sp + -1032;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r3 = sp + -1024; + r4 = 0; +_1: while(true){ + r5 = heapU8[r0]; + if(r5 ==0) //_LBB814_5 +{ +break _1; +} +else{ + r6 = r5 << 24; + r6 = r6 >> 24; + r6 = (r6 + -65)|0; + r7 = 26; + r8 = (r5 + 32)|0; + r5 = uint(r6) < uint(r7) ? r8 : r5; + r6 = r5 & 255; + r7 = 47; + r5 = r6 == 92 ? r7 : r5; + r0 = (r0 + 1)|0; + r6 = r5 & 255; +if(!(r6 !=47)) //_LBB814_4 +{ + r6 = r4 & 255; + r4 = r5; + if(r6 ==47) //_LBB814_1 +{ +continue _1; +} +} + r4 = (r3 + 1)|0; + heap8[r3] = r5; + r3 = r4; + r4 = r5; +continue _1; +} +} + r0 = _ZL24g_pFirstTextureAsyncInfo; + r4 = 0; + heap8[r3] = r4; +_8: while(true){ + r0 = r0 >> 2; + r0 = heap32[(r0)]; + if(r0 !=0) //_LBB814_6 +{ + r3 = sp + -1024; + heap32[(g0)] = r0; + heap32[(g0+1)] = r3; + strcmp(i7); + r3 = r_g0; + if(r3 !=0) //_LBB814_8 +{ + r0 = (r0 + 280)|0; +continue _8; +} +else{ +__label__ = 7; +break _8; +} +} +else{ +__label__ = 10; +break _8; +} +} +switch(__label__ ){//multiple entries +case 10: + r0 = -1; + r_g0 = r0; + return; +break; +case 7: + r0 = r0 >> 2; + r1 = r1 >> 2; + r3 = heap32[(r0+65)]; + heap32[(r1)] = r3; + r1 = r2 >> 2; + r2 = heap32[(r0+66)]; + heap32[(r1)] = r2; + r0 = heap32[(r0+67)]; + r_g0 = r0; + return; +break; +} +} + +function iMandreel_TextureAsync_GetPackOffset(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; +var __label__ = 0; + i7 = sp + -1032;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+3)]; + r4 = sp + -1024; + r5 = 0; +_1: while(true){ + r6 = heapU8[r0]; + if(r6 ==0) //_LBB815_5 +{ +break _1; +} +else{ + r7 = r6 << 24; + r7 = r7 >> 24; + r7 = (r7 + -65)|0; + r8 = 26; + r9 = (r6 + 32)|0; + r6 = uint(r7) < uint(r8) ? r9 : r6; + r7 = r6 & 255; + r8 = 47; + r6 = r7 == 92 ? r8 : r6; + r0 = (r0 + 1)|0; + r7 = r6 & 255; +if(!(r7 !=47)) //_LBB815_4 +{ + r7 = r5 & 255; + r5 = r6; + if(r7 ==47) //_LBB815_1 +{ +continue _1; +} +} + r5 = (r4 + 1)|0; + heap8[r4] = r6; + r4 = r5; + r5 = r6; +continue _1; +} +} + r0 = _ZL24g_pFirstTextureAsyncInfo; + r5 = 0; + heap8[r4] = r5; +_8: while(true){ + r0 = r0 >> 2; + r0 = heap32[(r0)]; + if(r0 !=0) //_LBB815_6 +{ + r4 = sp + -1024; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + strcmp(i7); + r4 = r_g0; +if(!(r4 !=0)) //_LBB815_9 +{ + r4 = r0 >> 2; + r5 = heap32[(r4+64)]; +if(!(r5 ==-1)) //_LBB815_9 +{ +__label__ = 8; +break _8; +} +} + r0 = (r0 + 280)|0; +continue _8; +} +else{ +__label__ = 11; +break _8; +} +} +switch(__label__ ){//multiple entries +case 11: + r0 = 0; + r_g0 = r0; + return; +break; +case 8: + r0 = r1 >> 2; + r1 = heap32[(r4+68)]; + heap32[(r0)] = r1; + r0 = r2 >> 2; + r1 = heap32[(r4+69)]; + heap32[(r0)] = r1; + r0 = heap32[(r4+64)]; + r1 = _ZL17g_apPackFileNames; + r0 = r0 << 2; + r0 = (r1 + r0)|0; + r0 = r0 >> 2; + r0 = heap32[(r0)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + strcpy(i7); + r0 = 1; + r_g0 = r0; + return; +break; +} +} + +function _Z31MandreelDefaultDebugMsgCallbackiPKc(sp) +{ + var i7; + var fp = sp>>2; + var r0; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + heap32[(g0)] = r0; + __sandbox_OutputDebugString(i7); + return; +} + +function printf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -16408;var g0 = i7>>2; // save stack + r0 = (sp + 4)|0; + heap32[(fp+-4097)] = r0; + r1 = sp + -16384; + r2 = heap32[(fp)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 16384; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r0; + r0 = g_msgcallback; + r0 = r0 >> 2; + vsnprintf(i7); + r0 = heap32[(r0)]; +if(!(r0 ==0)) //_LBB817_2 +{ + heap32[(g0)] = r1; + __sandbox_OutputDebugString(i7); +} + return; +} + +function _printf_error(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -16408;var g0 = i7>>2; // save stack + r0 = (sp + 4)|0; + heap32[(fp+-4097)] = r0; + r1 = sp + -16384; + r2 = heap32[(fp)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 16384; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r0; + r0 = g_msgcallback; + r0 = r0 >> 2; + vsnprintf(i7); + r0 = heap32[(r0)]; +if(!(r0 ==0)) //_LBB818_2 +{ + heap32[(g0)] = r1; + __sandbox_OutputDebugString(i7); +} + return; +} + +function _printf_warning(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -16408;var g0 = i7>>2; // save stack + r0 = (sp + 4)|0; + heap32[(fp+-4097)] = r0; + r1 = sp + -16384; + r2 = heap32[(fp)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 16384; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r0; + r0 = g_msgcallback; + r0 = r0 >> 2; + vsnprintf(i7); + r0 = heap32[(r0)]; +if(!(r0 ==0)) //_LBB819_2 +{ + heap32[(g0)] = r1; + __sandbox_OutputDebugString(i7); +} + return; +} + +function __mandreel_internal_preupdate(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = sp + -8; + heap32[(g0)] = r0; + heap32[(g0+1)] = 0; + r1 = _ZGVZ21Mandreel_GetTickCountE7s_first; + gettimeofday(i7); + r2 = heapU8[r1]; +if(!(r2 !=0)) //_LBB820_2 +{ + r2 = heap32[(fp+-2)]; + r3 = r2 >> 31; + heap32[(g0)] = r2; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = 1000000; + heap32[(g0+3)] = 0; + r0 = r0 >> 2; + r0 = heap32[(r0+1)]; + __muldi3(i7); + r4 = 1; + r5 = (r_g0 + r0)|0; + r6 = 0; + r7 = r0 >> 31; + r2 = uint(r5) < uint(r_g0) ? r4 : r6; + r6 = _ZZ21Mandreel_GetTickCountE7s_first; + r3 = (r_g1 + r7)|0; + r0 = uint(r5) < uint(r0) ? r4 : r2; + r2 = r6 >> 2; + r0 = (r3 + r0)|0; + heap32[(r2)] = r5; + heap32[(r2+1)] = r0; + heap8[r1] = r4; +} + r0 = _ZZ29__mandreel_internal_preupdateE8s_bfirst_2E_b; + r1 = heapU8[r0]; +if(!(r1 != 0)) //_LBB820_4 +{ + r1 = 1; + heap8[r0] = r1; +} + return; +} + +function __mandreel_internal_update(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = -32788; +_1: while(true){ + r1 = _ZL10s_aSockets; + r1 = (r1 - r0)|0; + r2 = heapU8[r1]; +if(!(r2 ==0)) //_LBB821_3 +{ + r1 = r1 >> 2; + r1 = heap32[(r1+-1)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 2048; + js_mandreel_flash_tcp_update(i7); +} + r0 = (r0 + -32792)|0; + if(r0 !=-295124) //_LBB821_1 +{ +continue _1; +} +else{ +break _1; +} +} + r0 = _ZL7g_bInit_2E_b; + r1 = heapU8[r0]; + if(r1 != 0) //_LBB821_6 +{ + mandreel_audio_update(i7); + r1 = sp + -8; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + gettimeofday(i7); + r2 = heap32[(fp+-2)]; + r3 = r2 >> 31; + heap32[(g0)] = r2; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = 1000000; + heap32[(g0+3)] = 0; + r1 = r1 >> 2; + r1 = heap32[(r1+1)]; + __muldi3(i7); + r4 = (r_g0 + r1)|0; + r5 = 1; + r6 = 0; + r7 = r1 >> 31; + r2 = uint(r4) < uint(r_g0) ? r5 : r6; + r3 = (r_g1 + r7)|0; + r1 = uint(r4) < uint(r1) ? r5 : r2; + r1 = (r3 + r1)|0; + r2 = _ZGVZ21Mandreel_GetTickCountE7s_first; + r3 = heapU8[r2]; +if(!(r3 !=0)) //_LBB821_8 +{ + r3 = _ZZ21Mandreel_GetTickCountE7s_first; + r3 = r3 >> 2; + heap32[(r3)] = r4; + heap32[(r3+1)] = r1; + heap8[r2] = r5; +} + r2 = _ZZ21Mandreel_GetTickCountE7s_first; + r2 = r2 >> 2; + r3 = heap32[(r2)]; + r2 = heap32[(r2+1)]; + r1 = (r1 - r2)|0; + r2 = uint(r4) < uint(r3) ? r5 : r6; + r3 = (r4 - r3)|0; + r1 = (r1 - r2)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 1000; + heap32[(g0+3)] = 0; + __udivdi3(i7); + r1 = r_g0; + r2 = _ZL11g_aChannels; +_12: while(true){ + if(r6 <32) //_LBB821_9 +{ + r3 = r2 >> 2; + r4 = heap32[(r3+72)]; +if(!(r4 !=1)) //_LBB821_33 +{ + r4 = _ZL11g_aChannels; + r7 = (r6 * 292)|0; + r4 = (r4 + r7)|0; + r7 = heapU8[r4+268]; +if(!(r7 !=0)) //_LBB821_33 +{ + r7 = heap32[(r3+71)]; + if(r7 ==-1) //_LBB821_13 +{ + r7 = heapU8[r0]; + if(r7 !=1) //_LBB821_15 +{ +__label__ = 14; +break _12; +} +else{ + r7 = _ZL21g_pFirstSoundDuration; +_21: while(true){ + r7 = r7 >> 2; + r7 = heap32[(r7)]; + if(r7 !=0) //_LBB821_16 +{ + heap32[(g0)] = r7; + heap32[(g0+1)] = r2; + strcmp(i7); + r8 = r_g0; + if(r8 !=0) //_LBB821_18 +{ + r7 = (r7 + 260)|0; +} +else{ +__label__ = 16; +break _21; +} +} +else{ +__label__ = 19; +break _21; +} +} +switch(__label__ ){//multiple entries +case 19: + r7 = _2E_str3224; + heap32[(g0)] = r7; + heap32[(g0+1)] = r2; + r7 = 0; + _printf_warning(i7); +break; +case 16: + r7 = r7 >> 2; + r7 = heap32[(r7+64)]; +break; +} + heap32[(r3+71)] = r7; +} +} + r8 = heap32[(r3+70)]; + r7 = (r8 + r7)|0; +if(!(uint(r7) >uint(r1))) //_LBB821_33 +{ + r7 = heapU8[r0]; + if(r7 != 0) //_LBB821_25 +{ + r7 = (r6 + -1)|0; +if(!(uint(r7) >uint(30))) //_LBB821_33 +{ + r7 = heapU8[r4+269]; +if(!(r7 !=0)) //_LBB821_33 +{ +if(!(uint(r6) >uint(31))) //_LBB821_29 +{ + r7 = heap32[(r3+68)]; + r8 = heap32[(r3+69)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r8; + heap32[(g0+2)] = r7; + mandreel_audio_stopChannel(i7); + heap32[(r3+72)] = 0; + heap32[(r3+68)] = -1; +} + r3 = _ZL15g_iFreeChannels; + r3 = r3 >> 2; + heap8[r4+269] = r5; + r4 = heap32[(r3)]; + r7 = (r4 + -1)|0; +_37: do { +if(!(r7 <0)) //_LBB821_32 +{ + r7 = r4; +_39: while(true){ + r8 = _ZL15g_aFreeChannels; + r9 = r7 << 2; + r8 = (r8 + r9)|0; + r8 = r8 >> 2; + r9 = heap32[(r8+-1)]; + r7 = (r7 + -1)|0; + heap32[(r8)] = r9; +if(!(r7 !=0)) //_LBB821_31 +{ +break _37; +} +} +} +} while(0); + r7 = _ZL15g_aFreeChannels; + r7 = r7 >> 2; + r4 = (r4 + 1)|0; + heap32[(r7)] = r6; + heap32[(r3)] = r4; +} +} +} +else{ +__label__ = 23; +break _12; +} +} +} +} + r6 = (r6 + 1)|0; + r2 = (r2 + 292)|0; +} +else{ +__label__ = 34; +break _12; +} +} +switch(__label__ ){//multiple entries +case 34: + return; +break; +case 14: + r7 = _2E_str221; + r0 = _2E_str1222; + heap32[(g0)] = r7; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = 341; + _assert(i7); +break; +case 23: + r0 = _2E_str221; + r1 = _2E_str1222; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 621; + _assert(i7); +break; +} +} +else{ + r0 = _2E_str221; + r1 = _2E_str1222; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = 361; + _assert(i7); +} +} + +function __mandreel_internal_init(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var r19; + var r20; + var r21; +var __label__ = 0; + i7 = sp + -2456;var g0 = i7>>2; // save stack + r0 = __mandreel_internal_SetResolution__index__; + r1 = _ZZ24__mandreel_internal_initE54s_723478567_mandreel___mandreel_internal_SetResolution; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + iMandreelRegisterExternalCallback(i7); + r0 = iMandreel_TextureAsync_IsCompressed__index__; + r1 = _ZZ24__mandreel_internal_initE56s_723478567_mandreel_iMandreel_TextureAsync_IsCompressed; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + iMandreelRegisterExternalCallback(i7); + r0 = iMandreel_TextureAsync_GetPackOffset__index__; + r1 = _ZZ24__mandreel_internal_initE57s_723478567_mandreel_iMandreel_TextureAsync_GetPackOffset; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + iMandreelRegisterExternalCallback(i7); + r0 = __resize__index__; + r1 = _ZZ24__mandreel_internal_initE29s_723478567_mandreel___resize; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + iMandreelRegisterExternalCallback(i7); + r0 = imandreel_restore_glcontext__index__; + r1 = _ZZ24__mandreel_internal_initE48s_723478567_mandreel_imandreel_restore_glcontext; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + iMandreelRegisterExternalCallback(i7); + r0 = imandreel_viewport_resize__index__; + r1 = _ZZ24__mandreel_internal_initE46s_723478567_mandreel_imandreel_viewport_resize; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + r0 = g_msgcallback; + r0 = r0 >> 2; + r1 = _Z31MandreelDefaultDebugMsgCallbackiPKc__index__; + iMandreelRegisterExternalCallback(i7); + r2 = _ZL7g_bInit_2E_b; + heap32[(r0)] = r1; + r0 = heapU8[r2]; + if(r0 !=1) //_LBB822_2 +{ + r0 = 1; + heap8[r2] = r0; + r1 = 0; + mandreel_audio_isLogEnabled(i7); + r2 = r_g0 != r1; + r3 = _ZL6g_bLog; + r2 = r2 & 1; + heap8[r3] = r2; + mandreel_audio_useMusicFunctions(i7); + r2 = heapU8[r3]; + if(r2 !=0) //_LBB822_4 +{ + r2 = _2E_str35256; + heap32[(g0)] = r2; + printf(i7); +} +else{ + r1 = 0; +} +_6: while(true){ + r2 = (r1 * 73)|0; + r3 = _ZL11g_aChannels; + r2 = r2 << 2; + r2 = (r3 + r2)|0; + r4 = (r1 * 292)|0; + r2 = r2 >> 2; + r5 = _ZL15g_aFreeChannels; + r6 = r1 << 2; + r5 = (r5 + r6)|0; + r3 = (r3 + r4)|0; + heap32[(r2+69)] = r1; + r2 = (r1 + 1)|0; + r4 = r5 >> 2; + heap8[r3+269] = r0; + heap32[(r4)] = r1; + r1 = r2; +if(!(r2 !=32)) //_LBB822_5 +{ +break _6; +} +} + r1 = _ZL15g_iFreeChannels; + r1 = r1 >> 2; + heap32[(r1)] = 32; + mandreel_audio_init(i7); + r1 = _2E_str22243; + heap32[(g0)] = r1; + printf(i7); + heap32[(g0)] = 0; + _Z30mandreel_fopen_enable_checkfatb(i7); + r1 = _2E_str779; + r2 = _2E_str1648; + heap32[(g0)] = r1; + heap32[(g0+1)] = r2; + fopen(i7); + r3 = r_g0; + heap32[(g0)] = 1; + _Z30mandreel_fopen_enable_checkfatb(i7); + if(r3 ==0) //_LBB822_19 +{ + r4 = _2E_str24245; + r5 = 0; + heap32[(g0)] = r4; + _printf_error(i7); + r4 = r5; +} +else{ + if(uint(r3) > 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+7)]; + heap32[(g0)] = r4; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = 2; + __FUNCTION_TABLE__[(r5)>>2](i7); +} +else{ + r4 = r3 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+7)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = 2; + __FUNCTION_TABLE__[(r4)>>2](i7); + r4 = r3; +} + r5 = r4 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+5)]; + heap32[(g0)] = r4; + __FUNCTION_TABLE__[(r5)>>2](i7); + r4 = r_g0; + if(uint(r3) >uint(9)) //_LBB822_12 +{ + r5 = r3; +} +else{ + r5 = _ZL13s_file_stdout; +} + r6 = r5 >> 2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+7)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = 0; + __FUNCTION_TABLE__[(r6)>>2](i7); + r5 = (r4 + 1)|0; + heap32[(g0)] = r5; + malloc(i7); + r5 = r_g0; + if(uint(r3) > 2; + r7 = heap32[(r7)]; + r7 = r7 >> 2; + r7 = heap32[(r7+1)]; + heap32[(g0)] = r6; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = 1; + heap32[(g0+3)] = r4; + r8 = 0; + __FUNCTION_TABLE__[(r7)>>2](i7); + heap8[r5+r4] = r8; +} +else{ + r6 = r3 >> 2; + r6 = heap32[(r6)]; + r6 = r6 >> 2; + r6 = heap32[(r6+1)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = 1; + heap32[(g0+3)] = r4; + r7 = 0; + __FUNCTION_TABLE__[(r6)>>2](i7); + heap8[r5+r4] = r7; + r6 = r3; +} + r7 = r6 >> 2; + r7 = heap32[(r7)]; + r7 = r7 >> 2; + r7 = heap32[(r7+4)]; + heap32[(g0)] = r6; + __FUNCTION_TABLE__[(r7)>>2](i7); + if(uint(r3) >uint(9)) //_LBB822_18 +{ + heap32[(g0)] = r6; + _ZdlPv(i7); +} +} + r3 = sp + -128; + heap32[(g0)] = r3; + mandreel_audio_getAudioDriverName(i7); + r6 = _2E_str4225; + heap32[(g0)] = r3; + heap32[(g0+1)] = r6; + strcmp(i7); + r3 = r_g0; +if(!(r5 ==0)) //_LBB822_198 +{ +_28: do { +if(!(r4 <1)) //_LBB822_197 +{ + r6 = sp + -1408; + r7 = (r6 + 1)|0; + r8 = (r5 + 1)|0; + r9 = 0; +_30: while(true){ + r10 = (r5 + r9)|0; + r11 = heapU8[r5+r9]; +if(!(r11 ==13)) //_LBB822_25 +{ + if(r9 > 2; + heap8[r5+r9] = r12; + r13 = heap32[(r11)]; + r9 = (r9 + 2)|0; + r10 = r10 == 0 ? r13 : r10; +_39: while(true){ + r13 = heapU8[r10]; + if(r13 ==0) //_LBB822_47 +{ +__label__ = 44; +break _39; +} +else{ + r14 = r12; +_42: while(true){ + if(r14 ==-1) //_LBB822_36 +{ +__label__ = 34; +break _39; +} +else{ + r15 = _2E_str4133; + r15 = (r15 - r14)|0; + r16 = r13 & 255; + r15 = heapU8[r15]; + if(r16 !=r15) //_LBB822_30 +{ + r14 = (r14 + -1)|0; +} +else{ +break _42; +} +} +} + r10 = (r10 + 1)|0; +} +} +_47: do { +if (__label__ == 34){ + if(r13 ==0) //_LBB822_47 +{ +__label__ = 44; +} +else{ + r12 = r10; +_50: while(true){ + r13 = heapU8[r12]; + if(r13 ==0) //_LBB822_44 +{ +break _50; +} +else{ + r14 = r0; +_53: while(true){ + if(r14 !=0) //_LBB822_38 +{ + r15 = _2E_str4133; + r15 = (r15 - r14)|0; + r16 = r13 & 255; + r15 = heapU8[r15+1]; + if(r16 ==r15) //_LBB822_44 +{ +break _50; +} +else{ + r14 = (r14 + -1)|0; +} +} +else{ +break _53; +} +} + r12 = (r12 + 1)|0; +} +} + r13 = heapU8[r12]; + if(r13 !=0) //_LBB822_46 +{ + r13 = (r12 + 1)|0; + r14 = 0; + heap8[r12] = r14; + r12 = r13; +} + heap32[(r11)] = r12; + r13 = _2E_str26247; + heap32[(g0)] = r13; + heap32[(g0+1)] = r10; + strcmp(i7); + r13 = r_g0; + if(r13 !=0) //_LBB822_71 +{ + r13 = _2E_str29250; + heap32[(g0)] = r13; + heap32[(g0+1)] = r10; + strcmp(i7); + r13 = r_g0; + if(r13 !=0) //_LBB822_154 +{ + if(r3 !=0) //_LBB822_70 +{ +__label__ = 66; +break _47; +} +else{ + r13 = _2E_str32253; + heap32[(g0)] = r13; + heap32[(g0+1)] = r10; + strcmp(i7); + r13 = r_g0; + if(r13 !=0) //_LBB822_176 +{ + r13 = _2E_str33254; + heap32[(g0)] = r13; + heap32[(g0+1)] = r10; + strcmp(i7); + r10 = r_g0; + if(r10 !=0) //_LBB822_70 +{ +__label__ = 66; +break _47; +} +else{ +__label__ = 173; //SET chanka +_69: while(true){ + r10 = heapU8[r12]; + if(r10 ==0) //_LBB822_184 +{ +__label__ = 175; +break _69; +} +else{ + r13 = 0; +_72: while(true){ + if(r13 ==-1) //_LBB822_185 +{ +__label__ = 176; +break _69; +} +else{ + r14 = _2E_str4133; + r14 = (r14 - r13)|0; + r15 = r10 & 255; + r14 = heapU8[r14]; + if(r15 !=r14) //_LBB822_178 +{ + r13 = (r13 + -1)|0; +} +else{ +break _72; +} +} +} + r12 = (r12 + 1)|0; +} +} +if (__label__ == 176){ + if(r10 ==0) //_LBB822_184 +{ +__label__ = 175; +} +else{ + r13 = r12; +_80: while(true){ + r10 = heapU8[r13]; + if(r10 ==0) //_LBB822_193 +{ +break _80; +} +else{ + r14 = 1; +_83: while(true){ + if(r14 !=0) //_LBB822_187 +{ + r15 = _2E_str4133; + r15 = (r15 - r14)|0; + r16 = r10 & 255; + r15 = heapU8[r15+1]; + if(r16 ==r15) //_LBB822_193 +{ +break _80; +} +else{ + r14 = (r14 + -1)|0; +} +} +else{ +break _83; +} +} + r13 = (r13 + 1)|0; +} +} + r10 = heapU8[r13]; + if(r10 !=0) //_LBB822_195 +{ + r14 = (r13 + 1)|0; + r10 = 0; + heap8[r13] = r10; + r10 = r12; + r12 = r14; +__label__ = 187; +} +else{ + r10 = r12; + r12 = r13; +__label__ = 187; +} +} +} +if (__label__ == 175){ + r10 = 0; +} + heap32[(r11)] = r12; + r11 = sp + -384; + heap32[(g0)] = r11; + heap32[(g0+1)] = r10; + strcpy(i7); +__label__ = 66; +break _47; +} +} +else{ +_95: while(true){ + r10 = heapU8[r12]; + if(r10 ==0) //_LBB822_163 +{ +__label__ = 155; +break _95; +} +else{ + r13 = 0; +_98: while(true){ + if(r13 ==-1) //_LBB822_164 +{ +__label__ = 156; +break _95; +} +else{ + r14 = _2E_str4133; + r14 = (r14 - r13)|0; + r15 = r10 & 255; + r14 = heapU8[r14]; + if(r15 !=r14) //_LBB822_157 +{ + r13 = (r13 + -1)|0; +} +else{ +break _98; +} +} +} + r12 = (r12 + 1)|0; +} +} +if (__label__ == 156){ + if(r10 ==0) //_LBB822_163 +{ +__label__ = 155; +} +else{ + r13 = r12; +_106: while(true){ + r10 = heapU8[r13]; + if(r10 ==0) //_LBB822_172 +{ +break _106; +} +else{ + r14 = 1; +_109: while(true){ + if(r14 !=0) //_LBB822_166 +{ + r15 = _2E_str4133; + r15 = (r15 - r14)|0; + r16 = r10 & 255; + r15 = heapU8[r15+1]; + if(r16 ==r15) //_LBB822_172 +{ +break _106; +} +else{ + r14 = (r14 + -1)|0; +} +} +else{ +break _109; +} +} + r13 = (r13 + 1)|0; +} +} + r10 = heapU8[r13]; + if(r10 !=0) //_LBB822_174 +{ + r14 = (r13 + 1)|0; + r10 = 0; + heap8[r13] = r10; + r10 = r12; + r12 = r14; +__label__ = 167; +} +else{ + r10 = r12; + r12 = r13; +__label__ = 167; +} +} +} +if (__label__ == 155){ + r10 = 0; +} + heap32[(r11)] = r12; + r11 = sp + -2432; + r12 = _2E_str12233; + r13 = sp + -384; + heap32[(g0)] = r11; + heap32[(g0+1)] = r12; + heap32[(g0+2)] = r13; + heap32[(g0+3)] = r10; + sprintf(i7); + heap32[(g0)] = r11; + mandreel_add_valid_fopenfile(i7); +__label__ = 66; +break _47; +} +} +} +else{ + r10 = (r12 + 1)|0; + r13 = 0; + r14 = r12; +_122: while(true){ + r15 = heapU8[r12+r13]; + if(r15 ==0) //_LBB822_90 +{ +__label__ = 85; +break _122; +} +else{ + r16 = 0; +_125: while(true){ + if(r16 ==-1) //_LBB822_79 +{ +__label__ = 75; +break _122; +} +else{ + r17 = _2E_str4133; + r17 = (r17 - r16)|0; + r18 = r15 & 255; + r17 = heapU8[r17]; + if(r18 !=r17) //_LBB822_73 +{ + r16 = (r16 + -1)|0; +} +else{ +break _125; +} +} +} + r13 = (r13 + 1)|0; + r14 = (r14 + 1)|0; + r10 = (r10 + 1)|0; +} +} +_130: do { +if (__label__ == 75){ + if(r15 ==0) //_LBB822_90 +{ +__label__ = 85; +} +else{ + r15 = (r12 + r13)|0; +_133: while(true){ + r16 = heapU8[r14]; + if(r16 ==0) //_LBB822_87 +{ +break _133; +} +else{ + r17 = 1; +_136: while(true){ + if(r17 !=0) //_LBB822_81 +{ + r18 = _2E_str4133; + r18 = (r18 - r17)|0; + r19 = r16 & 255; + r18 = heapU8[r18+1]; + if(r19 ==r18) //_LBB822_87 +{ +break _133; +} +else{ + r17 = (r17 + -1)|0; +} +} +else{ +break _136; +} +} + r14 = (r14 + 1)|0; +} +} + r16 = heapU8[r14]; + if(r16 !=0) //_LBB822_89 +{ + r16 = (r14 + 1)|0; + r17 = 0; + heap8[r14] = r17; + r14 = r16; +} + r17 = 0; + r16 = r15 == r17; + heap32[(r11)] = r14; +_145: while(true){ + r18 = heapU8[r14]; + if(r18 ==0) //_LBB822_109 +{ +__label__ = 103; +break _145; +} +else{ + r19 = r17; +_148: while(true){ + if(r19 ==-1) //_LBB822_98 +{ +__label__ = 93; +break _145; +} +else{ + r20 = _2E_str4133; + r20 = (r20 - r19)|0; + r21 = r18 & 255; + r20 = heapU8[r20]; + if(r21 !=r20) //_LBB822_92 +{ + r19 = (r19 + -1)|0; +} +else{ +break _148; +} +} +} + r14 = (r14 + 1)|0; +} +} +if (__label__ == 93){ +if(!(r18 ==0)) //_LBB822_109 +{ + r17 = r14; +_156: while(true){ + r18 = heapU8[r17]; + if(r18 ==0) //_LBB822_106 +{ +break _156; +} +else{ + r19 = 1; +_159: while(true){ + if(r19 !=0) //_LBB822_100 +{ + r20 = _2E_str4133; + r20 = (r20 - r19)|0; + r21 = r18 & 255; + r20 = heapU8[r20+1]; + if(r21 ==r20) //_LBB822_106 +{ +break _156; +} +else{ + r19 = (r19 + -1)|0; +} +} +else{ +break _159; +} +} + r17 = (r17 + 1)|0; +} +} + r18 = heapU8[r17]; + if(r18 !=0) //_LBB822_108 +{ + r18 = (r17 + 1)|0; + r19 = 0; + heap8[r17] = r19; + r17 = r18; +} + heap32[(r11)] = r17; +_168: while(true){ + r18 = heapU8[r17]; + if(r18 ==0) //_LBB822_128 +{ +__label__ = 121; +break _168; +} +else{ + r19 = 0; +_171: while(true){ + if(r19 ==-1) //_LBB822_117 +{ +__label__ = 111; +break _168; +} +else{ + r20 = _2E_str4133; + r20 = (r20 - r19)|0; + r21 = r18 & 255; + r20 = heapU8[r20]; + if(r21 !=r20) //_LBB822_111 +{ + r19 = (r19 + -1)|0; +} +else{ +break _171; +} +} +} + r17 = (r17 + 1)|0; +} +} +if (__label__ == 111){ +if(!(r18 ==0)) //_LBB822_128 +{ + r15 = r17; +_179: while(true){ + r16 = heapU8[r15]; + if(r16 ==0) //_LBB822_125 +{ +break _179; +} +else{ + r18 = 1; +_182: while(true){ + if(r18 !=0) //_LBB822_119 +{ + r19 = _2E_str4133; + r19 = (r19 - r18)|0; + r20 = r16 & 255; + r19 = heapU8[r19+1]; + if(r20 ==r19) //_LBB822_125 +{ +break _179; +} +else{ + r18 = (r18 + -1)|0; +} +} +else{ +break _182; +} +} + r15 = (r15 + 1)|0; +} +} + r16 = heapU8[r15]; + if(r16 !=0) //_LBB822_127 +{ + r16 = (r15 + 1)|0; + r18 = 0; + heap8[r15] = r18; + r15 = r16; +} + heap32[(r11)] = r15; + heap32[(g0)] = 264; + _Znwj(i7); + r11 = r_g0; + heap32[(g0)] = r17; + heap32[(g0+1)] = 0; + r15 = 0; + r16 = -1; + r17 = r11 >> 2; + strtol(i7); + heap32[(r17+64)] = r_g0; +_191: while(true){ + r17 = r15; + r18 = heapU8[r10+r17]; + if(r18 !=46) //_LBB822_133 +{ + if(r18 ==0) //_LBB822_137 +{ +break _191; +} +else{ +if(!(r18 ==47)) //_LBB822_136 +{ + r15 = (r17 + 1)|0; + if(r18 !=92) //_LBB822_131 +{ +continue _191; +} +} + r16 = -1; +} +} +else{ + r16 = r17; +} + r15 = (r17 + 1)|0; +} + if(r16 ==-1) //_LBB822_143 +{ + r10 = (r12 + r13)|0; + r12 = _2E_str12233; + r10 = (r10 + 1)|0; + r15 = _2E_str2131; + heap32[(g0)] = r6; + heap32[(g0+1)] = r12; + heap32[(g0+2)] = r10; + heap32[(g0+3)] = r15; + sprintf(i7); +} +else{ +_205: do { + if(r16 >0) //_LBB822_140 +{ + r10 = (r12 + 1)|0; + r12 = 0; +_207: while(true){ + r15 = (r12 + r10)|0; + r17 = (r12 + 1)|0; + r15 = heapU8[r15+r13]; + heap8[r6+r12] = r15; + r12 = r17; +if(!(r16 !=r17)) //_LBB822_141 +{ +break _205; +} +} +} +else{ + r16 = 0; +} +} while(0); + r10 = (r6 + r16)|0; + r12 = _2E_str2131; + heap32[(g0)] = r10; + heap32[(g0+1)] = r12; + strcpy(i7); +} + r10 = heapU8[sp+-1408]; +_212: do { + if(r10 ==0) //_LBB822_146 +{ + r15 = r11; +} +else{ + r12 = r7; + r15 = r11; +_215: while(true){ + r16 = r10 & 255; + if(r16 !=92) //_LBB822_149 +{ + r16 = r10 << 24; + r16 = r16 >> 24; + r16 = (r16 + -65)|0; + r13 = 26; + r17 = (r10 + 32)|0; + r10 = uint(r16) < uint(r13) ? r17 : r10; +} +else{ + r10 = 47; +} + heap8[r15] = r10; + r10 = heapU8[r12]; + r15 = (r15 + 1)|0; + r12 = (r12 + 1)|0; +if(!(r10 !=0)) //_LBB822_147 +{ +break _212; +} +} +} +} while(0); + r10 = _ZL21g_pFirstSoundDuration; + r12 = 0; + r10 = r10 >> 2; + heap8[r15] = r12; + r12 = r11 >> 2; + r15 = heap32[(r10)]; + heap32[(r12+65)] = r15; + heap32[(r10)] = r11; + r10 = heapU8[r14]; + if(r10 ==48) //_LBB822_70 +{ +__label__ = 66; +break _47; +} +else{ + heap32[(g0)] = r11; + heap32[(g0+1)] = 0; + mandreel_audio_createBuffer(i7); +__label__ = 66; +break _47; +} +} +} + heap32[(r11)] = r17; +__label__ = 146; +break _130; +} +} + heap32[(r11)] = r14; +__label__ = 146; +} +} +} while(0); +if (__label__ == 85){ + r16 = 1; + r15 = 0; + r10 = (r12 + r13)|0; + heap32[(r11)] = r10; +} + r10 = _2E_str30251; + r11 = _2E_str31252; + r10 = r16 != 0 ? r10 : r15; + heap32[(g0)] = r11; + heap32[(g0+1)] = r10; + _printf_warning(i7); +__label__ = 66; +break _47; +} +} +else{ +_228: while(true){ + r10 = heapU8[r12]; + if(r10 ==0) //_LBB822_56 +{ +__label__ = 52; +break _228; +} +else{ + r13 = 0; +_231: while(true){ + if(r13 ==-1) //_LBB822_57 +{ +__label__ = 53; +break _228; +} +else{ + r14 = _2E_str4133; + r14 = (r14 - r13)|0; + r15 = r10 & 255; + r14 = heapU8[r14]; + if(r15 !=r14) //_LBB822_50 +{ + r13 = (r13 + -1)|0; +} +else{ +break _231; +} +} +} + r12 = (r12 + 1)|0; +} +} +if (__label__ == 53){ + if(r10 ==0) //_LBB822_56 +{ +__label__ = 52; +} +else{ + r13 = r12; +_239: while(true){ + r10 = heapU8[r13]; + if(r10 ==0) //_LBB822_65 +{ +break _239; +} +else{ + r14 = 1; +_242: while(true){ + if(r14 !=0) //_LBB822_59 +{ + r15 = _2E_str4133; + r15 = (r15 - r14)|0; + r16 = r10 & 255; + r15 = heapU8[r15+1]; + if(r16 ==r15) //_LBB822_65 +{ +break _239; +} +else{ + r14 = (r14 + -1)|0; +} +} +else{ +break _242; +} +} + r13 = (r13 + 1)|0; +} +} + r10 = heapU8[r13]; + if(r10 !=0) //_LBB822_67 +{ + r14 = (r13 + 1)|0; + r10 = 0; + heap8[r13] = r10; + r10 = r12; + r12 = r14; +__label__ = 64; +} +else{ + r10 = r12; + r12 = r13; +__label__ = 64; +} +} +} +if (__label__ == 52){ + r10 = 0; +} + heap32[(r11)] = r12; + r11 = _2E_str27248; + heap32[(g0)] = r10; + heap32[(g0+1)] = r11; + strcmp(i7); + r12 = r_g0; + if(r12 ==0) //_LBB822_70 +{ +__label__ = 66; +} +else{ + r12 = _2E_str28249; + heap32[(g0)] = r12; + heap32[(g0+1)] = r10; + heap32[(g0+2)] = r11; + _printf_error(i7); +__label__ = 66; +} +} +} +} +} while(0); +if (__label__ == 44){ + heap32[(r11)] = r10; +} +if(!(r9 > 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+7)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = 2; + __FUNCTION_TABLE__[(r2)>>2](i7); +} +else{ + r1 = r0 >> 2; + r1 = heap32[(r1)]; + r1 = r1 >> 2; + r1 = heap32[(r1+7)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = 2; + __FUNCTION_TABLE__[(r1)>>2](i7); + r1 = r0; +} + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+5)]; + heap32[(g0)] = r1; + __FUNCTION_TABLE__[(r2)>>2](i7); + r1 = r_g0; + if(uint(r0) >uint(9)) //_LBB822_204 +{ + r2 = r0; +} +else{ + r2 = _ZL13s_file_stdout; +} + r3 = r2 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+7)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = 0; + __FUNCTION_TABLE__[(r3)>>2](i7); + r2 = (r1 + 1)|0; + heap32[(g0)] = r2; + malloc(i7); + r2 = r_g0; + if(uint(r0) > 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+1)]; + heap32[(g0)] = r3; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = 1; + heap32[(g0+3)] = r1; + r5 = 0; + __FUNCTION_TABLE__[(r4)>>2](i7); + heap8[r2+r1] = r5; +} +else{ + r3 = r0 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+1)]; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = 1; + heap32[(g0+3)] = r1; + r4 = 0; + __FUNCTION_TABLE__[(r3)>>2](i7); + heap8[r2+r1] = r4; + r3 = r0; +} + r4 = r3 >> 2; + r4 = heap32[(r4)]; + r4 = r4 >> 2; + r4 = heap32[(r4+4)]; + heap32[(g0)] = r3; + __FUNCTION_TABLE__[(r4)>>2](i7); +if(!(uint(r0) > 2; + heap8[r2+r7] = r8; + r10 = heap32[(r9)]; + r5 = (r7 + 2)|0; + r3 = r3 == 0 ? r10 : r3; +_289: while(true){ + r7 = heapU8[r3]; + if(r7 ==0) //_LBB822_235 +{ +__label__ = 224; +break _289; +} +else{ + r10 = r8; +_292: while(true){ + if(r10 ==-1) //_LBB822_224 +{ +__label__ = 214; +break _289; +} +else{ + r11 = _2E_str4133; + r11 = (r11 - r10)|0; + r12 = r7 & 255; + r11 = heapU8[r11]; + if(r12 !=r11) //_LBB822_218 +{ + r10 = (r10 + -1)|0; +} +else{ +break _292; +} +} +} + r3 = (r3 + 1)|0; +} +} +if (__label__ == 214){ +if(!(r7 ==0)) //_LBB822_235 +{ + r7 = r3; +_300: while(true){ + r8 = heapU8[r7]; + if(r8 ==0) //_LBB822_232 +{ +break _300; +} +else{ + r10 = 1; +_303: while(true){ + if(r10 !=0) //_LBB822_226 +{ + r11 = _2E_str4133; + r11 = (r11 - r10)|0; + r12 = r8 & 255; + r11 = heapU8[r11+1]; + if(r12 ==r11) //_LBB822_232 +{ +break _300; +} +else{ + r10 = (r10 + -1)|0; +} +} +else{ +break _303; +} +} + r7 = (r7 + 1)|0; +} +} + r8 = heapU8[r7]; + if(r8 !=0) //_LBB822_234 +{ + r8 = (r7 + 1)|0; + r10 = 0; + heap8[r7] = r10; + r7 = r8; +} + heap32[(r9)] = r7; + r8 = _2E_str3782; + heap32[(g0)] = r8; + heap32[(g0+1)] = r3; + strcmp(i7); + r8 = r_g0; + if(r8 !=0) //_LBB822_341 +{ + r8 = _2E_str5784; + heap32[(g0)] = r8; + heap32[(g0+1)] = r3; + strcmp(i7); + r8 = r_g0; + if(r8 !=0) //_LBB822_385 +{ + r7 = _2E_str6785; + heap32[(g0)] = r7; + heap32[(g0+1)] = r3; + r3 = -1; + strcmp(i7); + r7 = r_g0; + if(r7 !=0) //_LBB822_387 +{ +continue _280; +} +else{ +continue _278; +} +} +else{ +break _280; +} +} +else{ +_315: while(true){ + r3 = heapU8[r7]; + if(r3 ==0) //_LBB822_255 +{ +__label__ = 242; +break _315; +} +else{ + r8 = 0; +_318: while(true){ + if(r8 ==-1) //_LBB822_244 +{ +__label__ = 232; +break _315; +} +else{ + r10 = _2E_str4133; + r10 = (r10 - r8)|0; + r11 = r3 & 255; + r10 = heapU8[r10]; + if(r11 !=r10) //_LBB822_238 +{ + r8 = (r8 + -1)|0; +} +else{ +break _318; +} +} +} + r7 = (r7 + 1)|0; +} +} +_323: do { +if (__label__ == 232){ + if(r3 ==0) //_LBB822_255 +{ +__label__ = 242; +} +else{ + r3 = r7; +_326: while(true){ + r8 = heapU8[r3]; + if(r8 ==0) //_LBB822_252 +{ +break _326; +} +else{ + r10 = 1; +_329: while(true){ + if(r10 !=0) //_LBB822_246 +{ + r11 = _2E_str4133; + r11 = (r11 - r10)|0; + r12 = r8 & 255; + r11 = heapU8[r11+1]; + if(r12 ==r11) //_LBB822_252 +{ +break _326; +} +else{ + r10 = (r10 + -1)|0; +} +} +else{ +break _329; +} +} + r3 = (r3 + 1)|0; +} +} + r8 = heapU8[r3]; + if(r8 !=0) //_LBB822_254 +{ + r8 = (r3 + 1)|0; + r10 = 0; + heap8[r3] = r10; + r3 = r8; +} + heap32[(r9)] = r3; +_338: while(true){ + r8 = heapU8[r3]; + if(r8 ==0) //_LBB822_274 +{ +__label__ = 260; +break _338; +} +else{ + r10 = 0; +_341: while(true){ + if(r10 ==-1) //_LBB822_263 +{ +__label__ = 250; +break _338; +} +else{ + r11 = _2E_str4133; + r11 = (r11 - r10)|0; + r12 = r8 & 255; + r11 = heapU8[r11]; + if(r12 !=r11) //_LBB822_257 +{ + r10 = (r10 + -1)|0; +} +else{ +break _341; +} +} +} + r3 = (r3 + 1)|0; +} +} +if (__label__ == 250){ +if(!(r8 ==0)) //_LBB822_274 +{ + r8 = r3; +_349: while(true){ + r10 = heapU8[r8]; + if(r10 ==0) //_LBB822_271 +{ +break _349; +} +else{ + r11 = 1; +_352: while(true){ + if(r11 !=0) //_LBB822_265 +{ + r12 = _2E_str4133; + r12 = (r12 - r11)|0; + r13 = r10 & 255; + r12 = heapU8[r12+1]; + if(r13 ==r12) //_LBB822_271 +{ +break _349; +} +else{ + r11 = (r11 + -1)|0; +} +} +else{ +break _352; +} +} + r8 = (r8 + 1)|0; +} +} + r10 = heapU8[r8]; + if(r10 !=0) //_LBB822_273 +{ + r10 = (r8 + 1)|0; + r11 = 0; + heap8[r8] = r11; + r8 = r10; +} + heap32[(r9)] = r8; +_361: while(true){ + r10 = heapU8[r8]; + if(r10 ==0) //_LBB822_293 +{ +__label__ = 278; +break _361; +} +else{ + r11 = 0; +_364: while(true){ + if(r11 ==-1) //_LBB822_282 +{ +__label__ = 268; +break _361; +} +else{ + r12 = _2E_str4133; + r12 = (r12 - r11)|0; + r13 = r10 & 255; + r12 = heapU8[r12]; + if(r13 !=r12) //_LBB822_276 +{ + r11 = (r11 + -1)|0; +} +else{ +break _364; +} +} +} + r8 = (r8 + 1)|0; +} +} +if (__label__ == 268){ +if(!(r10 ==0)) //_LBB822_293 +{ + r10 = r8; +_372: while(true){ + r11 = heapU8[r10]; + if(r11 ==0) //_LBB822_290 +{ +break _372; +} +else{ + r12 = 1; +_375: while(true){ + if(r12 !=0) //_LBB822_284 +{ + r13 = _2E_str4133; + r13 = (r13 - r12)|0; + r14 = r11 & 255; + r13 = heapU8[r13+1]; + if(r14 ==r13) //_LBB822_290 +{ +break _372; +} +else{ + r12 = (r12 + -1)|0; +} +} +else{ +break _375; +} +} + r10 = (r10 + 1)|0; +} +} + r11 = heapU8[r10]; + if(r11 !=0) //_LBB822_292 +{ + r11 = (r10 + 1)|0; + r12 = 0; + heap8[r10] = r12; + r10 = r11; +} + heap32[(r9)] = r10; +_384: while(true){ + r11 = heapU8[r10]; + if(r11 ==0) //_LBB822_312 +{ +__label__ = 296; +break _384; +} +else{ + r12 = 0; +_387: while(true){ + if(r12 ==-1) //_LBB822_301 +{ +__label__ = 286; +break _384; +} +else{ + r13 = _2E_str4133; + r13 = (r13 - r12)|0; + r14 = r11 & 255; + r13 = heapU8[r13]; + if(r14 !=r13) //_LBB822_295 +{ + r12 = (r12 + -1)|0; +} +else{ +break _387; +} +} +} + r10 = (r10 + 1)|0; +} +} +if (__label__ == 286){ +if(!(r11 ==0)) //_LBB822_312 +{ + r11 = r10; +_395: while(true){ + r12 = heapU8[r11]; + if(r12 ==0) //_LBB822_309 +{ +break _395; +} +else{ + r13 = 1; +_398: while(true){ + if(r13 !=0) //_LBB822_303 +{ + r14 = _2E_str4133; + r14 = (r14 - r13)|0; + r15 = r12 & 255; + r14 = heapU8[r14+1]; + if(r15 ==r14) //_LBB822_309 +{ +break _395; +} +else{ + r13 = (r13 + -1)|0; +} +} +else{ +break _398; +} +} + r11 = (r11 + 1)|0; +} +} + r12 = heapU8[r11]; + if(r12 !=0) //_LBB822_311 +{ + r12 = (r11 + 1)|0; + r13 = 0; + heap8[r11] = r13; + r11 = r12; +} + heap32[(r9)] = r11; +_407: while(true){ + r12 = heapU8[r11]; + if(r12 ==0) //_LBB822_331 +{ +__label__ = 314; +break _407; +} +else{ + r13 = 0; +_410: while(true){ + if(r13 ==-1) //_LBB822_320 +{ +__label__ = 304; +break _407; +} +else{ + r14 = _2E_str4133; + r14 = (r14 - r13)|0; + r15 = r12 & 255; + r14 = heapU8[r14]; + if(r15 !=r14) //_LBB822_314 +{ + r13 = (r13 + -1)|0; +} +else{ +break _410; +} +} +} + r11 = (r11 + 1)|0; +} +} +if (__label__ == 304){ +if(!(r12 ==0)) //_LBB822_331 +{ + r12 = r11; +_418: while(true){ + r13 = heapU8[r12]; + if(r13 ==0) //_LBB822_328 +{ +break _418; +} +else{ + r14 = 1; +_421: while(true){ + if(r14 !=0) //_LBB822_322 +{ + r15 = _2E_str4133; + r15 = (r15 - r14)|0; + r16 = r13 & 255; + r15 = heapU8[r15+1]; + if(r16 ==r15) //_LBB822_328 +{ +break _418; +} +else{ + r14 = (r14 + -1)|0; +} +} +else{ +break _421; +} +} + r12 = (r12 + 1)|0; +} +} + r13 = heapU8[r12]; + if(r13 !=0) //_LBB822_330 +{ + r13 = (r12 + 1)|0; + r14 = 0; + heap8[r12] = r14; + r12 = r13; +} + heap32[(r9)] = r12; + if(r8 ==0) //_LBB822_340 +{ +__label__ = 323; +break _323; +} +else{ + if(r11 ==0) //_LBB822_340 +{ +__label__ = 323; +break _323; +} +else{ + heap32[(g0)] = 284; + _Znwj(i7); + r9 = r_g0; + heap32[(g0)] = r3; + heap32[(g0+1)] = 0; + r3 = r9 >> 2; + strtol(i7); + heap32[(r3+65)] = r_g0; + heap32[(g0)] = r8; + heap32[(g0+1)] = 0; + strtol(i7); + heap32[(r3+66)] = r_g0; + heap32[(g0)] = r10; + heap32[(g0+1)] = 0; + strtol(i7); + heap32[(r3+67)] = r_g0; + heap32[(g0)] = r11; + heap32[(g0+1)] = 0; + strtol(i7); + heap32[(r3+69)] = r_g0; + r7 = (r7 + 1)|0; + r8 = 0; + heap32[(r3+68)] = r4; + heap32[(r3+64)] = r6; + r3 = r9; +_432: while(true){ + r10 = heapU8[r7]; + if(r10 ==0) //_LBB822_339 +{ +break _432; +} +else{ + r11 = r10 << 24; + r11 = r11 >> 24; + r11 = (r11 + -65)|0; + r12 = 26; + r13 = (r10 + 32)|0; + r10 = uint(r11) < uint(r12) ? r13 : r10; + r11 = r10 & 255; + r12 = 47; + r10 = r11 == 92 ? r12 : r10; + r7 = (r7 + 1)|0; + r11 = r10 & 255; +if(!(r11 !=47)) //_LBB822_338 +{ + r11 = r8 & 255; + r8 = r10; + if(r11 ==47) //_LBB822_335 +{ +continue _432; +} +} + r8 = (r3 + 1)|0; + heap8[r3] = r10; + r3 = r8; + r8 = r10; +} +} + r7 = _ZL24g_pFirstTextureAsyncInfo; + r8 = 0; + r7 = r7 >> 2; + heap8[r3] = r8; + r3 = r9 >> 2; + r8 = heap32[(r7)]; + heap32[(r3+70)] = r8; + heap32[(r7)] = r9; + r3 = heap32[(r3+69)]; + r4 = (r3 + r4)|0; +continue _280; +} +} +} +} + heap32[(r9)] = r11; +__label__ = 323; +break _323; +} +} + heap32[(r9)] = r10; +__label__ = 323; +break _323; +} +} + heap32[(r9)] = r8; +__label__ = 323; +break _323; +} +} + heap32[(r9)] = r3; +__label__ = 323; +} +} +} while(0); +if (__label__ == 242){ + heap32[(r9)] = r7; +} + r3 = _2E_str4783; + heap32[(g0)] = r3; + _printf_warning(i7); +continue _280; +} +} +} + heap32[(r9)] = r3; +} +else{ +break _278; +} +} +_447: while(true){ + r3 = heapU8[r7]; + if(r3 ==0) //_LBB822_349 +{ +__label__ = 331; +break _447; +} +else{ + r4 = 0; +_450: while(true){ + if(r4 ==-1) //_LBB822_350 +{ +__label__ = 332; +break _447; +} +else{ + r8 = _2E_str4133; + r8 = (r8 - r4)|0; + r10 = r3 & 255; + r8 = heapU8[r8]; + if(r10 !=r8) //_LBB822_343 +{ + r4 = (r4 + -1)|0; +} +else{ +break _450; +} +} +} + r7 = (r7 + 1)|0; +} +} +if (__label__ == 332){ + if(r3 ==0) //_LBB822_349 +{ +__label__ = 331; +} +else{ + r3 = r7; +_458: while(true){ + r4 = heapU8[r3]; + if(r4 ==0) //_LBB822_358 +{ +break _458; +} +else{ + r8 = 1; +_461: while(true){ + if(r8 !=0) //_LBB822_352 +{ + r10 = _2E_str4133; + r10 = (r10 - r8)|0; + r11 = r4 & 255; + r10 = heapU8[r10+1]; + if(r11 ==r10) //_LBB822_358 +{ +break _458; +} +else{ + r8 = (r8 + -1)|0; +} +} +else{ +break _461; +} +} + r3 = (r3 + 1)|0; +} +} + r4 = heapU8[r3]; + if(r4 !=0) //_LBB822_360 +{ + r8 = (r3 + 1)|0; + r4 = 0; + heap8[r3] = r4; + r4 = r7; + r7 = r8; +__label__ = 343; +} +else{ + r4 = r7; + r7 = r3; +__label__ = 343; +} +} +} +if (__label__ == 331){ + r4 = 0; +} + heap32[(r9)] = r7; +_473: while(true){ + r3 = heapU8[r7]; + if(r3 ==0) //_LBB822_368 +{ +__label__ = 359; +break _473; +} +else{ + r8 = 0; +_476: while(true){ + if(r8 ==-1) //_LBB822_369 +{ +__label__ = 350; +break _473; +} +else{ + r10 = _2E_str4133; + r10 = (r10 - r8)|0; + r11 = r3 & 255; + r10 = heapU8[r10]; + if(r11 !=r10) //_LBB822_362 +{ + r8 = (r8 + -1)|0; +} +else{ +break _476; +} +} +} + r7 = (r7 + 1)|0; +} +} +if (__label__ == 350){ +if(!(r3 ==0)) //_LBB822_368 +{ +_483: while(true){ + r3 = heapU8[r7]; + if(r3 ==0) //_LBB822_377 +{ +break _483; +} +else{ + r8 = 1; +_486: while(true){ + if(r8 !=0) //_LBB822_371 +{ + r10 = _2E_str4133; + r10 = (r10 - r8)|0; + r11 = r3 & 255; + r10 = heapU8[r10+1]; + if(r11 ==r10) //_LBB822_377 +{ +break _483; +} +else{ + r8 = (r8 + -1)|0; +} +} +else{ +break _486; +} +} + r7 = (r7 + 1)|0; +} +} + r3 = heapU8[r7]; + if(r3 !=0) //_LBB822_379 +{ + r3 = (r7 + 1)|0; + r8 = 0; + heap8[r7] = r8; + r7 = r3; +} +} +} + r3 = (r6 + 1)|0; + heap32[(r9)] = r7; + r7 = heapU8[r4]; +_494: do { + if(r7 ==0) //_LBB822_382 +{ + r8 = 1; +} +else{ + r7 = 1; +_497: while(true){ + r8 = (r7 + 1)|0; + r9 = heapU8[r4+r7]; + r7 = r8; +if(!(r9 !=0)) //_LBB822_383 +{ +break _494; +} +} +} +} while(0); + r7 = _ZL17g_apPackFileNames; + r6 = r6 << 2; + r6 = (r7 + r6)|0; + heap32[(g0)] = r8; + r6 = r6 >> 2; + _Znaj(i7); + heap32[(r6+1)] = r_g0; + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r4; + r4 = 0; + strcpy(i7); +} + heap32[(g0)] = r2; + free(i7); +} +} + r0 = sp + -2440; + heap32[(g0)] = r0; + heap32[(g0+1)] = 0; + r1 = _ZGVZ21Mandreel_GetTickCountE7s_first; + gettimeofday(i7); + r2 = heapU8[r1]; +if(!(r2 !=0)) //_LBB822_391 +{ + r2 = heap32[(fp+-610)]; + r3 = r2 >> 31; + heap32[(g0)] = r2; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = 1000000; + heap32[(g0+3)] = 0; + r0 = r0 >> 2; + r0 = heap32[(r0+1)]; + __muldi3(i7); + r4 = 1; + r5 = (r_g0 + r0)|0; + r6 = 0; + r7 = r0 >> 31; + r2 = uint(r5) < uint(r_g0) ? r4 : r6; + r6 = _ZZ21Mandreel_GetTickCountE7s_first; + r3 = (r_g1 + r7)|0; + r0 = uint(r5) < uint(r0) ? r4 : r2; + r2 = r6 >> 2; + r0 = (r3 + r0)|0; + heap32[(r2)] = r5; + heap32[(r2+1)] = r0; + heap8[r1] = r4; +} + return; +} +else{ + r2 = _2E_str34255; + r0 = _2E_str1222; + heap32[(g0)] = r2; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = 307; + _assert(i7); +} +} + +function __forceSuperLink(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + __mandreel_internal_init(i7); + r0 = sp + -8; + heap32[(g0)] = r0; + heap32[(g0+1)] = 0; + r1 = _ZGVZ21Mandreel_GetTickCountE7s_first; + gettimeofday(i7); + r2 = heapU8[r1]; +if(!(r2 !=0)) //_LBB823_2 +{ + r2 = heap32[(fp+-2)]; + r3 = r2 >> 31; + heap32[(g0)] = r2; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = 1000000; + heap32[(g0+3)] = 0; + r0 = r0 >> 2; + r0 = heap32[(r0+1)]; + __muldi3(i7); + r4 = 1; + r5 = (r_g0 + r0)|0; + r6 = 0; + r7 = r0 >> 31; + r2 = uint(r5) < uint(r_g0) ? r4 : r6; + r6 = _ZZ21Mandreel_GetTickCountE7s_first; + r3 = (r_g1 + r7)|0; + r0 = uint(r5) < uint(r0) ? r4 : r2; + r2 = r6 >> 2; + r0 = (r3 + r0)|0; + heap32[(r2)] = r5; + heap32[(r2+1)] = r0; + heap8[r1] = r4; +} + r0 = _ZZ29__mandreel_internal_preupdateE8s_bfirst_2E_b; + r1 = heapU8[r0]; +if(!(r1 != 0)) //_LBB823_4 +{ + r1 = 1; + heap8[r0] = r1; +} + return; +} + +function _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -32;var g0 = i7>>2; // save stack + r0 = sp + -16; + r1 = r0 >> 2; + heap32[(fp+-4)] = 0; + heap32[(r1+1)] = 0; + r2 = heap32[(fp)]; + heap32[(r1+2)] = 16; + r3 = r2 >> 2; + heap32[(r1+3)] = 0; + r4 = heap32[(fp+2)]; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r4 = r4 >> 2; + r3 = heap32[(r3+5)]; + r5 = heap32[(r4)]; + r6 = heap32[(fp+1)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r6; + heap32[(g0+2)] = r5; + heap32[(g0+3)] = r0; + __FUNCTION_TABLE__[(r3)>>2](i7); + r0 = heap32[(r1+1)]; + r0 = r0 & 6; + if(r0 !=6) //_LBB824_2 +{ + r0 = 0; + r_g0 = r0; + return; +} +else{ + r0 = heap32[(fp+-4)]; + heap32[(r4)] = r0; + r0 = 1; + r_g0 = r0; + return; +} +} + +function _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp+4)]; + r1 = heap32[(fp+2)]; + r2 = 6; + r3 = 1; + r0 = r0 == r1 ? r2 : r3; + r_g0 = r0; + return; +} + +function _ZNKSt9type_info10__do_catchEPKS_PPvj(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = r1 >> 2; + r0 = heap32[(r0+1)]; + r1 = heap32[(r1+1)]; + r2 = _2E_str26; + r0 = r0 == 0 ? r2 : r0; + r1 = r1 == 0 ? r2 : r1; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + strcmp(i7); + r2 = r_g0; + if(r2 <0) //_LBB826_2 +{ + r0 = 0; + r_g0 = r0; + return; +} +else{ + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + strcmp(i7); + r0 = r_g0 >>> 31; + r0 = r0 ^ 1; + r_g0 = r0; + return; +} +} + +function _ZN10__cxxabiv117__class_type_infoD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVSt9type_info; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN10__cxxabiv117__class_type_infoD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVSt9type_info; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = r1 >> 2; + r0 = heap32[(r0+1)]; + r1 = heap32[(r1+1)]; + r2 = _2E_str26; + r0 = r0 == 0 ? r2 : r0; + r1 = r1 == 0 ? r2 : r1; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + strcmp(i7); + r2 = r_g0; + if(r2 >-1) //_LBB829_2 +{ + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + r0 = -1; + strcmp(i7); + r0 = r_g0 > r0; +} +else{ + r0 = 0; +} + r0 = r0 & 1; + r_g0 = r0; + return; +} + +function _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = r1 >> 2; + r0 = heap32[(r0+1)]; + r1 = heap32[(r1+1)]; + r2 = _2E_str26; + r0 = r0 == 0 ? r2 : r0; + r1 = r1 == 0 ? r2 : r1; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + strcmp(i7); + r2 = r_g0; +if(!(r2 <0)) //_LBB830_3 +{ + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + strcmp(i7); + r0 = r_g0; +if(!(r0 <0)) //_LBB830_3 +{ + r0 = heap32[(fp+2)]; + r1 = heap32[(fp+3)]; + r1 = r1 >> 2; + heap32[(r1)] = r0; + heap32[(r1+3)] = 8; + heap32[(r1+1)] = 6; + r0 = 1; + r_g0 = r0; + return; +} +} + r0 = 0; + r_g0 = r0; + return; +} + +function _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r0 = r0 >> 2; + r1 = heap32[(fp+4)]; + r2 = heap32[(fp+2)]; + r3 = heap32[(fp+7)]; + r0 = heap32[(r0+1)]; + r4 = heap32[(fp+6)]; +if(!(r1 !=r4)) //_LBB831_3 +{ + r4 = heap32[(fp+5)]; + r4 = r4 >> 2; + r4 = heap32[(r4+1)]; + r5 = _2E_str26; + r4 = r4 == 0 ? r5 : r4; + r5 = r0 == 0 ? r5 : r0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r4; + strcmp(i7); + r6 = r_g0; +if(!(r6 <0)) //_LBB831_3 +{ + heap32[(g0)] = r4; + heap32[(g0+1)] = r5; + strcmp(i7); + r4 = r_g0; + if(r4 >-1) //_LBB831_5 +{ + r1 = r3 >> 2; + heap32[(r1+2)] = r2; + r1 = 0; + r_g0 = r1; + return; +} +} +} + r4 = heap32[(fp+3)]; + r4 = r4 >> 2; + r4 = heap32[(r4+1)]; + r5 = _2E_str26; + r4 = r4 == 0 ? r5 : r4; + r0 = r0 == 0 ? r5 : r0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r4; + strcmp(i7); + r5 = r_g0; +if(!(r5 <0)) //_LBB831_7 +{ + heap32[(g0)] = r4; + heap32[(g0+1)] = r0; + strcmp(i7); + r0 = r_g0; +if(!(r0 <0)) //_LBB831_7 +{ + r0 = r3 >> 2; + heap32[(r0)] = r1; + heap32[(r0+1)] = r2; + heap32[(r0+3)] = 1; +} +} + r0 = 0; + r_g0 = r0; + return; +} + +function _ZN10__cxxabiv120__si_class_type_infoD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVSt9type_info; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function _ZN10__cxxabiv120__si_class_type_infoD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVSt9type_info; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r2 = r0 >> 2; + r1 = r1 >> 2; + r2 = heap32[(r2+1)]; + r3 = heap32[(r1+1)]; + r4 = _2E_str26; + r2 = r2 == 0 ? r4 : r2; + r3 = r3 == 0 ? r4 : r3; + heap32[(g0)] = r3; + heap32[(g0+1)] = r2; + r4 = heap32[(fp+2)]; + r5 = heap32[(fp+3)]; + strcmp(i7); + r6 = r_g0; +if(!(r6 <0)) //_LBB834_2 +{ + heap32[(g0)] = r2; + heap32[(g0+1)] = r3; + strcmp(i7); + r2 = r_g0; + if(r2 >-1) //_LBB834_3 +{ + r0 = r5 >> 2; + heap32[(r0)] = r4; + heap32[(r0+3)] = 8; + heap32[(r0+1)] = 6; + r0 = 1; + r_g0 = r0; + return; +} +} + r1 = heap32[(r1+2)]; + r2 = r1 >> 2; + r2 = heap32[(r2)]; + r2 = r2 >> 2; + r2 = heap32[(r2+5)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r5; + __FUNCTION_TABLE__[(r2)>>2](i7); + return; +} + +function _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; +var __label__ = 0; + i7 = sp + -32;var g0 = i7>>2; // save stack + r0 = heap32[(fp+3)]; + r1 = heap32[(fp)]; + r2 = r0 >> 2; + r1 = r1 >> 2; + r2 = heap32[(r2+1)]; + r3 = heap32[(r1+1)]; + r4 = _2E_str26; + r2 = r2 == 0 ? r4 : r2; + r3 = r3 == 0 ? r4 : r3; + heap32[(g0)] = r3; + heap32[(g0+1)] = r2; + r5 = heap32[(fp+1)]; + r6 = heap32[(fp+2)]; + r7 = heap32[(fp+4)]; + r8 = heap32[(fp+6)]; + r9 = heap32[(fp+7)]; + strcmp(i7); + r10 = r_g0; + if(r10 <0) //_LBB835_6 +{ +__label__ = 6; +} +else{ + heap32[(g0)] = r2; + heap32[(g0+1)] = r3; + strcmp(i7); + r2 = r_g0; + if(r2 <0) //_LBB835_6 +{ +__label__ = 6; +} +else{ + r0 = r9 >> 2; + heap32[(r0)] = r7; + heap32[(r0+1)] = r6; + if(r5 <0) //_LBB835_4 +{ + if(r5 !=-2) //_LBB835_11 +{ +__label__ = 11; +} +else{ + heap32[(r0+3)] = 1; +__label__ = 11; +} +} +else{ + r1 = (r7 + r5)|0; + r3 = 6; + r4 = 1; + r1 = r1 == r8 ? r3 : r4; + heap32[(r0+3)] = r1; +__label__ = 11; +} +} +} +_8: do { +if (__label__ == 6){ + r2 = heap32[(fp+5)]; +if(!(r7 !=r8)) //_LBB835_9 +{ + r10 = r2 >> 2; + r10 = heap32[(r10+1)]; + r4 = r10 == 0 ? r4 : r10; + heap32[(g0)] = r3; + heap32[(g0+1)] = r4; + strcmp(i7); + r10 = r_g0; +if(!(r10 <0)) //_LBB835_9 +{ + heap32[(g0)] = r4; + heap32[(g0+1)] = r3; + strcmp(i7); + r3 = r_g0; + if(r3 >-1) //_LBB835_10 +{ + r0 = r9 >> 2; + heap32[(r0+2)] = r6; +break _8; +} +} +} + r1 = heap32[(r1+2)]; + r3 = r1 >> 2; + r3 = heap32[(r3)]; + r3 = r3 >> 2; + r3 = heap32[(r3+6)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r5; + heap32[(g0+2)] = r6; + heap32[(g0+3)] = r0; + heap32[(g0+4)] = r7; + heap32[(g0+5)] = r2; + heap32[(g0+6)] = r8; + heap32[(g0+7)] = r9; + __FUNCTION_TABLE__[(r3)>>2](i7); + return; +} +} while(0); + r0 = 0; + r_g0 = r0; + return; +} + +function _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp+4)]; + r1 = heap32[(fp+2)]; + r2 = heap32[(fp)]; + r3 = heap32[(fp+3)]; +if(!(r0 !=r1)) //_LBB836_3 +{ + r4 = r3 >> 2; + r5 = r2 >> 2; + r4 = heap32[(r4+1)]; + r5 = heap32[(r5+1)]; + r6 = _2E_str26; + r4 = r4 == 0 ? r6 : r4; + r5 = r5 == 0 ? r6 : r5; + heap32[(g0)] = r5; + heap32[(g0+1)] = r4; + strcmp(i7); + r6 = r_g0; +if(!(r6 <0)) //_LBB836_3 +{ + heap32[(g0)] = r4; + heap32[(g0+1)] = r5; + strcmp(i7); + r4 = r_g0; + if(r4 >-1) //_LBB836_4 +{ + r0 = 6; + r_g0 = r0; + return; +} +} +} + r4 = heap32[(fp+1)]; + r2 = r2 >> 2; + r2 = heap32[(r2+2)]; + r5 = r2 >> 2; + r5 = heap32[(r5)]; + r5 = r5 >> 2; + r5 = heap32[(r5+7)]; + heap32[(g0)] = r2; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r1; + heap32[(g0+3)] = r3; + heap32[(g0+4)] = r0; + __FUNCTION_TABLE__[(r5)>>2](i7); + return; +} + +function _ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; +var __label__ = 0; + i7 = sp + -32;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r2 = r0 >> 2; + r3 = r1 >> 2; + r2 = heap32[(r2+1)]; + r4 = heap32[(r3+1)]; + r5 = _2E_str26; + r2 = r2 == 0 ? r5 : r2; + r4 = r4 == 0 ? r5 : r4; + heap32[(g0)] = r4; + heap32[(g0+1)] = r2; + r6 = heap32[(fp+2)]; + r7 = heap32[(fp+3)]; + strcmp(i7); + r8 = r_g0; + if(r8 <0) //_LBB837_3 +{ +__label__ = 3; +} +else{ + heap32[(g0)] = r2; + heap32[(g0+1)] = r4; + strcmp(i7); + r2 = r_g0; + if(r2 <0) //_LBB837_3 +{ +__label__ = 3; +} +else{ + r0 = r7 >> 2; + heap32[(r0)] = r6; + heap32[(r0+3)] = 8; + heap32[(r0+1)] = 6; +__label__ = 39; +} +} +_4: do { +if (__label__ == 3){ + r2 = r7 >> 2; + r4 = heap32[(r2+2)]; + r7 = r4 & 16; + if(r7 !=0) //_LBB837_5 +{ + r4 = heap32[(r3+2)]; +} + r3 = heap32[(r3+3)]; + r7 = r4 & 1; + r3 = (r3 + 1)|0; +_9: while(true){ + if(r3 !=1) //_LBB837_7 +{ + r8 = sp + -16; + r9 = r8 >> 2; + heap32[(fp+-4)] = 0; + r10 = r3 << 3; + heap32[(r9+1)] = 0; + r10 = (r1 + r10)|0; + heap32[(r9+2)] = r4; + r10 = r10 >> 2; + heap32[(r9+3)] = 0; + r10 = heap32[(r10+1)]; + r11 = r10 & 2; + if(r7 !=0) //_LBB837_10 +{ +__label__ = 9; +} +else{ + r12 = r11 >>> 1; + if(r12 != 0) //_LBB837_10 +{ +__label__ = 9; +} +else{ +__label__ = 8; +} +} +if (__label__ == 9){ + r12 = r3 << 1; + r13 = r10 & 1; + if(r6 !=0) //_LBB837_12 +{ + r10 = r10 >> 8; + if(r13 != 0) //_LBB837_14 +{ + r14 = r6 >> 2; + r14 = heap32[(r14)]; + r10 = (r14 + r10)|0; + r10 = r10 >> 2; + r10 = heap32[(r10)]; +} + r10 = (r6 + r10)|0; +} +else{ + r10 = 0; +} + r12 = r12 << 2; + r12 = (r1 + r12)|0; + r12 = r12 >> 2; + r14 = heap32[(r12)]; + r15 = r14 >> 2; + r15 = heap32[(r15)]; + r15 = r15 >> 2; + r15 = heap32[(r15+5)]; + heap32[(g0)] = r14; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r10; + heap32[(g0+3)] = r8; + __FUNCTION_TABLE__[(r15)>>2](i7); + r8 = r_g0; +if(!(r8 ==0)) //_LBB837_9 +{ + r8 = heap32[(r9+3)]; +if(!(r8 !=8)) //_LBB837_19 +{ + if(r13 != 0) //_LBB837_20 +{ + r8 = heap32[(r12)]; + heap32[(r9+3)] = r8; +} +} + r10 = heap32[(r9+1)]; +if(!(r10 <4)) //_LBB837_23 +{ + if(r11 ==0) //_LBB837_24 +{ + r10 = r10 & -3; + heap32[(r9+1)] = r10; +} +} + r11 = heap32[(r2+3)]; + if(r11 !=0) //_LBB837_31 +{ + r9 = heap32[(r2)]; + r12 = heap32[(fp+-4)]; + if(r9 ==r12) //_LBB837_33 +{ + if(r9 ==0) //_LBB837_35 +{ + if(r8 ==8) //_LBB837_39 +{ +__label__ = 35; +break _9; +} +else{ + if(r11 ==8) //_LBB837_39 +{ +__label__ = 35; +break _9; +} +else{ + r9 = r11 >> 2; + r8 = r8 >> 2; + r9 = heap32[(r9+1)]; + r8 = heap32[(r8+1)]; + r9 = r9 == 0 ? r5 : r9; + r8 = r8 == 0 ? r5 : r8; + heap32[(g0)] = r8; + heap32[(g0+1)] = r9; + strcmp(i7); + r11 = r_g0; + if(r11 <0) //_LBB837_39 +{ +__label__ = 35; +break _9; +} +else{ + heap32[(g0)] = r9; + heap32[(g0+1)] = r8; + strcmp(i7); + r8 = r_g0; + if(r8 >-1) //_LBB837_40 +{ + r8 = heap32[(r2+1)]; + r8 = r10 | r8; + heap32[(r2+1)] = r8; +} +else{ +__label__ = 35; +break _9; +} +} +} +} +} +else{ + r8 = heap32[(r2+1)]; + r8 = r10 | r8; + heap32[(r2+1)] = r8; +} +} +else{ +__label__ = 28; +break _9; +} +} +else{ + r11 = heap32[(fp+-4)]; + heap32[(r2)] = r11; + heap32[(r2+1)] = r10; + r11 = heap32[(r9+2)]; + heap32[(r2+2)] = r11; + heap32[(r2+3)] = r8; + if(r10 <4) //_LBB837_43 +{ +break _4; +} +else{ + r8 = r10 & 2; + if(r8 ==0) //_LBB837_29 +{ + r8 = r10 & 1; + if(r8 ==0) //_LBB837_43 +{ +break _4; +} +else{ + r8 = heapU8[r1+8]; + r8 = r8 & 2; + if(r8 ==0) //_LBB837_43 +{ +break _4; +} +} +} +else{ + r8 = heapU8[r1+8]; + r8 = r8 & 1; + if(r8 ==0) //_LBB837_43 +{ +break _4; +} +} +} +} +} +} + r3 = (r3 + -1)|0; +continue _9; +} +else{ +__label__ = 38; +break _9; +} +} +switch(__label__ ){//multiple entries +case 38: + r0 = heap32[(r2+1)]; + r1 = 0; + r0 = r0 != r1; + r0 = r0 & 1; + r_g0 = r0; + return; +break; +case 28: + heap32[(r2)] = 0; +break; +} + heap32[(r2+1)] = 2; +} +} while(0); + r0 = 1; + r_g0 = r0; + return; +} + +function _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; + var r17; + var r18; + var r19; + var r20; + var r21; + var r22; + var r23; +var __label__ = 0; + i7 = sp + -56;var g0 = i7>>2; // save stack + r0 = heap32[(fp+7)]; + r0 = r0 >> 2; + r1 = heap32[(r0+4)]; + r2 = heap32[(fp)]; + r3 = heap32[(fp+1)]; + r4 = heap32[(fp+2)]; + r5 = heap32[(fp+3)]; + r6 = heap32[(fp+4)]; + r7 = heap32[(fp+5)]; + r8 = heap32[(fp+6)]; + r9 = r1 & 16; + if(r9 !=0) //_LBB838_2 +{ + r1 = r2 >> 2; + r1 = heap32[(r1+2)]; + heap32[(r0+4)] = r1; +} + r9 = r2 >> 2; + r10 = heap32[(r9+1)]; + if(r6 !=r8) //_LBB838_6 +{ +__label__ = 5; +} +else{ + r11 = r7 >> 2; + r11 = heap32[(r11+1)]; + r12 = _2E_str26; + r11 = r11 == 0 ? r12 : r11; + r12 = r10 == 0 ? r12 : r10; + heap32[(g0)] = r12; + heap32[(g0+1)] = r11; + strcmp(i7); + r13 = r_g0; + if(r13 <0) //_LBB838_6 +{ +__label__ = 5; +} +else{ + heap32[(g0)] = r11; + heap32[(g0+1)] = r12; + strcmp(i7); + r11 = r_g0; + if(r11 >-1) //_LBB838_8 +{ + heap32[(r0+2)] = r4; +__label__ = 8; +} +else{ +__label__ = 5; +} +} +} +_8: do { +if (__label__ == 5){ + r11 = r5 >> 2; + r12 = heap32[(r11+1)]; + r13 = _2E_str26; + r12 = r12 == 0 ? r13 : r12; + r10 = r10 == 0 ? r13 : r10; + heap32[(g0)] = r10; + heap32[(g0+1)] = r12; + strcmp(i7); + r13 = r_g0; + if(r13 <0) //_LBB838_15 +{ +__label__ = 14; +} +else{ + heap32[(g0)] = r12; + heap32[(g0+1)] = r10; + strcmp(i7); + r10 = r_g0; + if(r10 <0) //_LBB838_15 +{ +__label__ = 14; +} +else{ + heap32[(r0)] = r6; + heap32[(r0+1)] = r4; + if(r3 <0) //_LBB838_12 +{ + if(r3 ==-2) //_LBB838_14 +{ + heap32[(r0+3)] = 1; + r9 = 0; + r_g0 = r9; + return; +} +else{ +__label__ = 12; +} +} +else{ + r1 = (r6 + r3)|0; + r2 = 6; + r3 = 1; + r1 = r1 == r8 ? r2 : r3; + heap32[(r0+3)] = r1; +break _8; +} +} +} +_17: do { +if (__label__ == 14){ + r10 = heap32[(r9+3)]; + r12 = r1 & 2; + r9 = 0; + r13 = r1; +_19: while(true){ + r14 = r13 & 3; +_21: while(true){ + r15 = r9; + r9 = r10 << 3; + r9 = (r2 + r9)|0; + r20 = 0; +_23: while(true){ + r16 = r20; + if(r10 !=r16) //_LBB838_16 +{ + r17 = sp + -24; + r18 = r17 >> 2; + heap32[(fp+-6)] = 0; + heap32[(r18+1)] = 0; + heap32[(r18+2)] = 0; + r19 = r16 << 3; + r19 = (r9 - r19)|0; + heap32[(r18+3)] = 0; + r19 = r19 >> 2; + heap32[(r18+4)] = r13; + r20 = heap32[(r19+3)]; + r21 = r20 & 1; + r22 = r20 >> 8; + if(r21 != 0) //_LBB838_18 +{ + r23 = r6 >> 2; + r23 = heap32[(r23)]; + r22 = (r23 + r22)|0; + r22 = r22 >> 2; + r22 = heap32[(r22)]; +} + r20 = r20 & 2; + if(r20 ==0) //_LBB838_21 +{ + if(r3 !=-2) //_LBB838_23 +{ +__label__ = 21; +break _23; +} +else{ + r20 = (r16 + 1)|0; + if(r14 ==0) //_LBB838_88 +{ +continue _23; +} +else{ +__label__ = 21; +break _23; +} +} +} +else{ +__label__ = 18; +break _23; +} +} +else{ +__label__ = 77; +break _19; +} +} +switch(__label__ ){//multiple entries +case 21: + r9 = r4 & -3; +break; +case 18: + r9 = r4; +break; +} + r20 = heap32[(r19+2)]; + r19 = r20 >> 2; + r19 = heap32[(r19)]; + r19 = r19 >> 2; + r19 = heap32[(r19+6)]; + r9 = r21 | r9; + r21 = (r6 + r22)|0; + heap32[(g0)] = r20; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r9; + heap32[(g0+3)] = r5; + heap32[(g0+4)] = r21; + heap32[(g0+5)] = r7; + heap32[(g0+6)] = r8; + heap32[(g0+7)] = r17; + __FUNCTION_TABLE__[(r19)>>2](i7); + r9 = r_g0; + r20 = heap32[(r0+2)]; + r17 = heap32[(r18+2)]; + r20 = r17 | r20; + heap32[(r0+2)] = r20; + r17 = heap32[(r18+3)]; + if(r17 ==2) //_LBB838_26 +{ +__label__ = 24; +break _19; +} +else{ + if(r17 !=6) //_LBB838_27 +{ + r19 = (r10 + -1)|0; + r10 = heap32[(r0)]; + r21 = r15 & 255; + if(r21 !=0) //_LBB838_34 +{ +__label__ = 30; +break _21; +} +else{ + if(r10 !=0) //_LBB838_35 +{ +__label__ = 31; +break _21; +} +else{ + r10 = heap32[(fp+-6)]; + heap32[(r0)] = r10; + r15 = heap32[(r18+1)]; + heap32[(r0+1)] = r15; + if(r10 !=0) //_LBB838_31 +{ + r10 = (r19 - r16)|0; + if(r20 ==0) //_LBB838_87 +{ +continue _21; +} +else{ +__label__ = 29; +break _21; +} +} +else{ +__label__ = 73; +break _21; +} +} +} +} +else{ +__label__ = 24; +break _19; +} +} +} +_40: do { +switch(__label__ ){//multiple entries +case 30: + if(r10 ==0) //_LBB838_37 +{ + r14 = heap32[(fp+-6)]; + r10 = 0; +__label__ = 36; +break _40; +} +else{ +__label__ = 31; +break _40; +} +break; +case 29: + r10 = heapU8[r2+8]; + r10 = r10 & 1; + if(r10 != 0) //_LBB838_30 +{ +__label__ = 73; +} +else{ +__label__ = 78; +break _17; +} +break; +} +} while(0); +if (__label__ == 31){ + r14 = heap32[(fp+-6)]; + if(r10 !=r14) //_LBB838_38 +{ + if(r14 !=0) //_LBB838_40 +{ +__label__ = 39; +} +else{ + if(r9 ==0) //_LBB838_41 +{ +__label__ = 36; +} +else{ +__label__ = 39; +} +} +} +else{ + r9 = heap32[(r0+1)]; + r10 = heap32[(r18+1)]; + r9 = r10 | r9; + heap32[(r0+1)] = r9; + r9 = r15; +__label__ = 73; +} +} +_50: do { +if (__label__ == 36){ +if(!(r14 ==0)) //_LBB838_44 +{ +if(!(r21 ==0)) //_LBB838_44 +{ +__label__ = 39; +break _50; +} +} + r9 = r15; +__label__ = 73; +} +} while(0); +if (__label__ == 39){ + r9 = heap32[(r0+3)]; +_57: do { + if(r20 >3) //_LBB838_47 +{ + r14 = r20 & 1; +if(!(r14 ==0)) //_LBB838_52 +{ +if(!(r12 ==0)) //_LBB838_52 +{ + r13 = r1; +__label__ = 43; +break _57; +} +} + r13 = r14 == 0 ? r13 : r1; + r10 = 1; + r9 = r9 == 0 ? r10 : r9; + if(r17 ==0) //_LBB838_54 +{ + r17 = r10; +__label__ = 64; +} +else{ +__label__ = 64; +} +} +else{ +__label__ = 43; +} +} while(0); +_64: do { +if (__label__ == 43){ + if(r9 <1) //_LBB838_55 +{ +_68: do { +if(!(r17 <4)) //_LBB838_59 +{ + r9 = r17 & 1; + if(r9 != 0) //_LBB838_58 +{ + r9 = heapU8[r2+8]; + r9 = r9 & 2; +if(!(r9 ==0)) //_LBB838_57 +{ +break _68; +} +} + r9 = 1; +break _64; +} +} while(0); + if(r3 <0) //_LBB838_61 +{ + if(r3 !=-2) //_LBB838_63 +{ + r9 = heap32[(r11)]; + r9 = r9 >> 2; + r9 = heap32[(r9+7)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r10; + heap32[(g0+3)] = r7; + heap32[(g0+4)] = r8; + __FUNCTION_TABLE__[(r9)>>2](i7); + r9 = r_g0; +} +else{ + r9 = 1; +} +} +else{ + r9 = (r10 + r3)|0; + r10 = 6; + r14 = 1; + r9 = r9 == r8 ? r10 : r14; +} +} + if(r17 <1) //_LBB838_66 +{ + if(r9 <4) //_LBB838_70 +{ +__label__ = 60; +} +else{ + r10 = r9 & 1; + if(r10 != 0) //_LBB838_69 +{ + r10 = heapU8[r2+8]; + r10 = r10 & 2; + if(r10 ==0) //_LBB838_68 +{ +__label__ = 58; +} +else{ +__label__ = 60; +} +} +else{ +__label__ = 58; +} +} +if (__label__ == 60){ + r10 = heap32[(fp+-6)]; + if(r3 <0) //_LBB838_72 +{ +if(!(r3 ==-2)) //_LBB838_68 +{ + r14 = heap32[(r11)]; + r14 = r14 >> 2; + r14 = heap32[(r14+7)]; + heap32[(g0)] = r5; + heap32[(g0+1)] = r3; + heap32[(g0+2)] = r10; + heap32[(g0+3)] = r7; + heap32[(g0+4)] = r8; + __FUNCTION_TABLE__[(r14)>>2](i7); + r17 = r_g0; +break _64; +} +} +else{ + r10 = (r10 + r3)|0; + r14 = 6; + r17 = 1; + r17 = r10 == r8 ? r14 : r17; +break _64; +} +} + r17 = 1; +} +} +} while(0); + r10 = r9 ^ r17; + if(r10 <4) //_LBB838_81 +{ + r9 = r9 & r17; + heap32[(r0)] = 0; + if(r9 <4) //_LBB838_83 +{ + r9 = 1; + heap32[(r0+3)] = 1; +} +else{ +__label__ = 71; +break _19; +} +} +else{ + if(r17 >3) //_LBB838_77 +{ + r9 = heap32[(fp+-6)]; + heap32[(r0)] = r9; + r9 = heap32[(r18+1)]; + r15 = 0; + heap32[(r0+1)] = r9; + r9 = r17; +} + heap32[(r0+3)] = r9; + r10 = r9 & 2; + if(r10 !=0) //_LBB838_13 +{ +__label__ = 12; +break _17; +} +else{ + r9 = r9 & 1; + if(r9 ==0) //_LBB838_13 +{ +__label__ = 12; +break _17; +} +else{ + r9 = r15; +} +} +} +} + r10 = (r19 - r16)|0; + if(r20 !=4) //_LBB838_86 +{ +continue _19; +} +else{ +__label__ = 78; +break _17; +} +} +switch(__label__ ){//multiple entries +case 24: + r20 = heap32[(fp+-6)]; + heap32[(r0)] = r20; + r20 = heap32[(r18+1)]; + heap32[(r0+1)] = r20; + heap32[(r0+3)] = r17; + r_g0 = r9; + return; +break; +case 71: + heap32[(r0+3)] = 2; + r9 = 1; + r_g0 = r9; + return; +break; +case 77: + r9 = r15; +__label__ = 78; +break; +} +} +} while(0); +if (__label__ == 12){ + r9 = 0; +} + r0 = r9 & 255; + r_g0 = r0; + return; +} +} while(0); + r0 = 0; + r_g0 = r0; + return; +} + +function _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = heap32[(fp+4)]; + r2 = heap32[(fp)]; + r3 = heap32[(fp+3)]; + if(r0 !=r1) //_LBB839_4 +{ +__label__ = 4; +} +else{ + r4 = r3 >> 2; + r5 = r2 >> 2; + r4 = heap32[(r4+1)]; + r5 = heap32[(r5+1)]; + r6 = _2E_str26; + r4 = r4 == 0 ? r6 : r4; + r5 = r5 == 0 ? r6 : r5; + heap32[(g0)] = r5; + heap32[(g0+1)] = r4; + strcmp(i7); + r6 = r_g0; + if(r6 <0) //_LBB839_4 +{ +__label__ = 4; +} +else{ + heap32[(g0)] = r4; + heap32[(g0+1)] = r5; + strcmp(i7); + r4 = r_g0; + if(r4 <0) //_LBB839_4 +{ +__label__ = 4; +} +else{ + r0 = 6; +__label__ = 15; +} +} +} +if (__label__ == 4){ + r4 = heap32[(fp+1)]; + r5 = r2 >> 2; + r5 = heap32[(r5+3)]; + r5 = (r5 + 1)|0; +_7: while(true){ + if(r5 !=1) //_LBB839_5 +{ + r6 = r5 << 3; + r6 = (r2 + r6)|0; + r6 = r6 >> 2; + r6 = heap32[(r6+1)]; + r7 = r6 & 2; +_10: do { + if(r7 !=0) //_LBB839_7 +{ + r7 = r6 & 1; +if(!(r7 ==0)) //_LBB839_9 +{ + if(r4 ==-3) //_LBB839_6 +{ +break _10; +} +} + r8 = r5 << 1; + r6 = r6 >> 8; + if(r7 != 0) //_LBB839_11 +{ + r9 = r0 >> 2; + r9 = heap32[(r9)]; + r6 = (r9 + r6)|0; + r6 = r6 >> 2; + r6 = heap32[(r6)]; +} + r8 = r8 << 2; + r8 = (r2 + r8)|0; + r8 = r8 >> 2; + r8 = heap32[(r8)]; + r9 = r8 >> 2; + r9 = heap32[(r9)]; + r9 = r9 >> 2; + r9 = heap32[(r9+7)]; + r6 = (r0 + r6)|0; + heap32[(g0)] = r8; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r6; + heap32[(g0+3)] = r3; + heap32[(g0+4)] = r1; + __FUNCTION_TABLE__[(r9)>>2](i7); + r6 = r_g0; +if(!(r6 <4)) //_LBB839_6 +{ +__label__ = 12; +break _7; +} +} +} while(0); + r5 = (r5 + -1)|0; +continue _7; +} +else{ +__label__ = 14; +break _7; +} +} +switch(__label__ ){//multiple entries +case 14: + r0 = 1; +break; +case 12: + r0 = r6 | r7; + r_g0 = r0; + return; +break; +} +} + r_g0 = r0; + return; +} + +function _ZN10__cxxabiv121__vmi_class_type_infoD0Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVSt9type_info; + r2 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r2)] = r1; + heap32[(g0)] = r0; + _ZdlPv(i7); + return; +} + +function _ZN10__cxxabiv121__vmi_class_type_infoD1Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = _ZTVSt9type_info; + r0 = r0 >> 2; + r1 = (r1 + 8)|0; + heap32[(r0)] = r1; + return; +} + +function __extendsfdf2(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var f0; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 & 2147483647; + r2 = r0 & -2147483648; + r3 = (r1 + -8388608)|0; + if(uint(r3) >uint(2130706431)) //_LBB842_2 +{ + if(uint(r1) >> 1; + r0 = r1 | r0; + r3 = r0 >>> 2; + r0 = r0 | r3; + r3 = r0 >>> 4; + r0 = r0 | r3; + r3 = r0 >>> 8; + r0 = r0 | r3; + r3 = r0 >>> 16; + r0 = r0 | r3; + r3 = r0 ^ -1; + r4 = 1431655765; + r3 = r3 >>> 1; + r0 = r4 & (~r0); + r3 = r3 & 1431655765; + r0 = (r0 + r3)|0; + r3 = r0 >>> 2; + r0 = r0 & 858993459; + r3 = r3 & 858993459; + r0 = (r0 + r3)|0; + r3 = r0 >>> 4; + r0 = r0 & 252645135; + r3 = r3 & 252645135; + r0 = (r0 + r3)|0; + r3 = r0 >>> 8; + r0 = r0 & 16711935; + r3 = r3 & 16711935; + r0 = (r0 + r3)|0; + r3 = r0 & 65535; + r0 = r0 >>> 16; + r0 = (r3 + r0)|0; + r3 = (r0 + 21)|0; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = r3; + r3 = 905; + __ashldi3(i7); + r1 = r_g0; + r0 = (r3 - r0)|0; + r3 = r_g1 ^ 1048576; + r0 = r0 << 20; + r0 = r3 | r0; +} +else{ + r1 = 0; + r0 = r1; +} +} +else{ + r1 = r0 >>> 3; + r3 = r1 & 524288; + r1 = r0 & 4194303; + r0 = r3 | 2146435072; +} +} +else{ + r0 = r1 >>> 3; + r1 = r1 << 29; + r0 = (r0 + 939524096)|0; +} + r3 = sp + -8; + r3 = r3 >> 2; + r0 = r0 | r2; + heap32[(fp+-2)] = r1; + heap32[(r3+1)] = r0; + f0 = llvm_readDouble((sp+-8)); + f_g0 = f0; + return; +} + +function __fixdfsi(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = sp + 0; + r0 = r0 >> 2; + r0 = heap32[(r0+1)]; + r1 = r0 >>> 20; + r1 = r1 & 2047; + r2 = r0 & 1048575; + r3 = -1; + r4 = 1; + r5 = (r1 + -1023)|0; + r0 = r0 < 0 ? r3 : r4; + r3 = heap32[(fp)]; + r2 = r2 | 1048576; + if(uint(r5) >uint(51)) //_LBB843_2 +{ + if(r5 <0) //_LBB843_5 +{ + r0 = 0; + r_g0 = r0; + return; +} +else{ + r1 = (r1 + -1075)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r1; + __ashldi3(i7); +} +} +else{ + r5 = 1075; + r1 = (r5 - r1)|0; + heap32[(g0)] = r3; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r1; + __lshrdi3(i7); +} + heap32[(g0)] = r_g0; + heap32[(g0+1)] = r_g1; + heap32[(g0+2)] = r0; + heap32[(g0+3)] = r0; + __muldi3(i7); + return; +} + +function __floatsidf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var f0; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + if(r0 !=0) //_LBB844_2 +{ + r1 = r0 >> 31; + r2 = (r0 + r1)|0; + r1 = r2 ^ r1; + r2 = r1 >>> 1; + r2 = r1 | r2; + r3 = r2 >>> 2; + r2 = r2 | r3; + r3 = r2 >>> 4; + r2 = r2 | r3; + r3 = r2 >>> 8; + r2 = r2 | r3; + r3 = r2 >>> 16; + r2 = r2 | r3; + r3 = r2 ^ -1; + r4 = 1431655765; + r3 = r3 >>> 1; + r2 = r4 & (~r2); + r3 = r3 & 1431655765; + r2 = (r2 + r3)|0; + r3 = r2 >>> 2; + r2 = r2 & 858993459; + r3 = r3 & 858993459; + r2 = (r2 + r3)|0; + r3 = r2 >>> 4; + r2 = r2 & 252645135; + r3 = r3 & 252645135; + r2 = (r2 + r3)|0; + r3 = r2 >>> 8; + r2 = r2 & 16711935; + r3 = r3 & 16711935; + r2 = (r2 + r3)|0; + r3 = r2 & 65535; + r2 = r2 >>> 16; + r4 = 31; + r2 = (r3 + r2)|0; + r3 = 52; + r4 = (r4 - r2)|0; + r3 = (r3 - r4)|0; + heap32[(g0)] = r1; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = r3; + r1 = 1054; + __ashldi3(i7); + r1 = (r1 - r2)|0; + r2 = r_g1 ^ 1048576; + r1 = r1 << 20; + r4 = sp + -8; + r1 = (r2 + r1)|0; + r0 = r0 & -2147483648; + r2 = r4 >> 2; + r0 = r1 | r0; + heap32[(fp+-2)] = r_g0; + heap32[(r2+1)] = r0; + f0 = llvm_readDouble((sp+-8)); + f_g0 = f0; + return; +} +else{ + f0 = 0; + f_g0 = f0; + return; +} +} + +function __floatunsidf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var f0; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + if(r0 !=0) //_LBB845_2 +{ + r1 = r0 >>> 1; + r1 = r0 | r1; + r2 = r1 >>> 2; + r1 = r1 | r2; + r2 = r1 >>> 4; + r1 = r1 | r2; + r2 = r1 >>> 8; + r1 = r1 | r2; + r2 = r1 >>> 16; + r1 = r1 | r2; + r2 = r1 ^ -1; + r3 = 1431655765; + r2 = r2 >>> 1; + r1 = r3 & (~r1); + r2 = r2 & 1431655765; + r1 = (r1 + r2)|0; + r2 = r1 >>> 2; + r1 = r1 & 858993459; + r2 = r2 & 858993459; + r1 = (r1 + r2)|0; + r2 = r1 >>> 4; + r1 = r1 & 252645135; + r2 = r2 & 252645135; + r1 = (r1 + r2)|0; + r2 = r1 >>> 8; + r1 = r1 & 16711935; + r2 = r2 & 16711935; + r1 = (r1 + r2)|0; + r2 = r1 & 65535; + r1 = r1 >>> 16; + r3 = 31; + r1 = (r2 + r1)|0; + r2 = 52; + r3 = (r3 - r1)|0; + r2 = (r2 - r3)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = 0; + heap32[(g0+2)] = r2; + r0 = 1054; + __ashldi3(i7); + r0 = (r0 - r1)|0; + r1 = sp + -8; + r3 = r_g1 ^ 1048576; + r0 = r0 << 20; + r1 = r1 >> 2; + r0 = (r3 + r0)|0; + heap32[(fp+-2)] = r_g0; + heap32[(r1+1)] = r0; + f0 = llvm_readDouble((sp+-8)); + f_g0 = f0; + return; +} +else{ + f0 = 0; + f_g0 = f0; + return; +} +} + +function __truncdfsf2(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var f0; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = sp + 0; + r0 = r0 >> 2; + r0 = heap32[(r0+1)]; + r1 = r0 & 2147483647; + r2 = heap32[(fp)]; + r3 = (r1 + -940572672)|0; + r4 = (r1 + -1206910976)|0; +_1: do { + if(uint(r3) >=uint(r4)) //_LBB846_6 +{ + r3 = 0; + r4 = 2146435072; + r5 = r2 == r3; + r4 = uint(r1) < uint(r4); + r4 = r1 == 2146435072 ? r5 : r4; + if(r4 != 0) //_LBB846_8 +{ + r4 = 1206910976; + r4 = uint(r1) < uint(r4); + r4 = r1 == 1206910976 ? r5 : r4; + if(r4 != 0) //_LBB846_10 +{ + r4 = 897; + r1 = r1 >>> 20; + r1 = (r4 - r1)|0; + if(r1 <53) //_LBB846_12 +{ + r4 = r0 & 1048575; + r4 = r4 | 1048576; + heap32[(g0)] = r2; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r1; + __lshrdi3(i7); + r5 = r_g0; + r6 = r_g1; + r7 = 64; + r1 = (r7 - r1)|0; + heap32[(g0)] = r2; + heap32[(g0+1)] = r4; + heap32[(g0+2)] = r1; + __ashldi3(i7); + r1 = r_g0 | r_g1; + r1 = r1 != r3; + r1 = r1 & 1; + r2 = r5 & 536870911; + r4 = r5 >>> 29; + r5 = r6 << 3; + r1 = r1 | r2; + r2 = r4 | r5; + if(uint(r1) >> 29; + r3 = r0 << 3; + r1 = r1 | r3; + r2 = r2 & 536870911; + if(uint(r2) >2; + var r0; + var r1; + var r2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = sp + 0; + r0 = r0 >> 2; + r0 = heap32[(r0+1)]; + r1 = r0 >>> 20; + r1 = r1 & 2047; + r2 = (r1 + -1023)|0; +if(!(r2 <0)) //_LBB847_3 +{ +if(!(r0 <0)) //_LBB847_3 +{ + r2 = heap32[(fp)]; + r2 = r2 >>> 21; + r0 = r0 << 11; + r0 = r2 | r0; + r2 = 1054; + r0 = r0 | -2147483648; + r1 = (r2 - r1)|0; + r0 = r0 >>> r1; + r_g0 = r0; + return; +} +} + r0 = 0; + r_g0 = r0; + return; +} + +function __floatundisf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var f0; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = r0 | r1; + if(r2 ==0) //_LBB848_12 +{ + f0 = 0; + f_g0 = f0; + return; +} +else{ + r2 = r0 >>> 1; + r3 = r1 >>> 1; + r2 = r0 | r2; + r3 = r1 | r3; + r4 = r2 >>> 2; + r5 = r3 >>> 2; + r2 = r2 | r4; + r3 = r3 | r5; + r4 = r2 >>> 4; + r5 = r3 >>> 4; + r2 = r2 | r4; + r3 = r3 | r5; + r4 = r2 >>> 8; + r5 = r3 >>> 8; + r2 = r2 | r4; + r3 = r3 | r5; + r4 = r2 >>> 16; + r5 = r3 >>> 16; + r2 = r2 | r4; + r3 = r3 | r5; + r4 = r2 ^ -1; + r5 = 1431655765; + r6 = r3 ^ -1; + r4 = r4 >>> 1; + r6 = r6 >>> 1; + r2 = r5 & (~r2); + r4 = r4 & 1431655765; + r2 = (r2 + r4)|0; + r3 = r5 & (~r3); + r4 = r6 & 1431655765; + r3 = (r3 + r4)|0; + r4 = r2 >>> 2; + r5 = r3 >>> 2; + r2 = r2 & 858993459; + r4 = r4 & 858993459; + r2 = (r2 + r4)|0; + r3 = r3 & 858993459; + r4 = r5 & 858993459; + r3 = (r3 + r4)|0; + r4 = r2 >>> 4; + r5 = r3 >>> 4; + r2 = r2 & 252645135; + r4 = r4 & 252645135; + r2 = (r2 + r4)|0; + r3 = r3 & 252645135; + r4 = r5 & 252645135; + r3 = (r3 + r4)|0; + r4 = r2 >>> 8; + r5 = r3 >>> 8; + r2 = r2 & 16711935; + r4 = r4 & 16711935; + r2 = (r2 + r4)|0; + r3 = r3 & 16711935; + r4 = r5 & 16711935; + r3 = (r3 + r4)|0; + r4 = r2 & 65535; + r2 = r2 >>> 16; + r2 = (r4 + r2)|0; + r4 = r3 & 65535; + r3 = r3 >>> 16; + r3 = (r4 + r3)|0; + r2 = (r2 + 32)|0; + r4 = 64; + r2 = r1 != 0 ? r3 : r2; + r3 = 63; + r4 = (r4 - r2)|0; + r2 = (r3 - r2)|0; + if(r4 <25) //_LBB848_10 +{ + r3 = 24; + r3 = (r3 - r4)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r3; + __ashldi3(i7); + r1 = r_g0; +} +else{ + if(r4 ==25) //_LBB848_5 +{ + r1 = r1 << 1; + r3 = r0 >>> 31; + r0 = r0 << 1; + r1 = r1 | r3; +} +else{ + if(r4 !=26) //_LBB848_6 +{ + r3 = (r4 + -26)|0; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + heap32[(g0+2)] = r3; + __lshrdi3(i7); + r3 = r_g0; + r5 = r_g1; + r6 = 90; + r6 = (r6 - r4)|0; + heap32[(g0)] = -1; + heap32[(g0+1)] = -1; + heap32[(g0+2)] = r6; + __lshrdi3(i7); + r0 = r_g0 & r0; + r1 = r_g1 & r1; + r0 = r0 | r1; + r1 = 0; + r0 = r0 != r1; + r0 = r0 & 1; + r0 = r0 | r3; + r1 = r5; +} +} + r3 = r0 >>> 2; + r3 = r3 & 1; + r0 = r3 | r0; + r3 = (r0 + 1)|0; + r5 = 1; + r6 = 0; + r0 = uint(r3) < uint(r0) ? r5 : r6; + r0 = r3 == 0 ? r5 : r0; + r0 = (r1 + r0)|0; + r1 = r3 >>> 2; + r5 = r0 << 30; + r1 = r1 | r5; + r5 = r1 & 16777216; + if(r5 !=0) //_LBB848_9 +{ + r1 = r3 >>> 3; + r0 = r0 << 29; + r1 = r1 | r0; + r2 = r4; +} +} + r0 = r2 << 23; + r0 = (r0 + 1065353216)|0; + r1 = r1 & 8388607; + r0 = r0 | r1; + heap32[(fp+-1)] = r0; + f0 = heapFloat[(fp+-1)]; + f_g0 = f0; + return; +} +} + +function __floatdisf(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var f0; +var __label__ = 0; + i7 = sp + -24;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = heap32[(fp+1)]; + r2 = r0 | r1; + if(r2 ==0) //_LBB849_12 +{ + f0 = 0; + f_g0 = f0; + return; +} +else{ + r2 = r1 >> 31; + r1 = r2 ^ r1; + r0 = r2 ^ r0; + r3 = 1; + r4 = 0; + r5 = (r0 - r2)|0; + r1 = (r1 - r2)|0; + r0 = uint(r0) < uint(r2) ? r3 : r4; + r0 = (r1 - r0)|0; + r1 = r5 >>> 1; + r6 = r0 >>> 1; + r1 = r5 | r1; + r6 = r0 | r6; + r7 = r1 >>> 2; + r8 = r6 >>> 2; + r1 = r1 | r7; + r6 = r6 | r8; + r7 = r1 >>> 4; + r8 = r6 >>> 4; + r1 = r1 | r7; + r6 = r6 | r8; + r7 = r1 >>> 8; + r8 = r6 >>> 8; + r1 = r1 | r7; + r6 = r6 | r8; + r7 = r1 >>> 16; + r8 = r6 >>> 16; + r1 = r1 | r7; + r6 = r6 | r8; + r7 = r1 ^ -1; + r8 = 1431655765; + r9 = r6 ^ -1; + r7 = r7 >>> 1; + r9 = r9 >>> 1; + r1 = r8 & (~r1); + r7 = r7 & 1431655765; + r1 = (r1 + r7)|0; + r6 = r8 & (~r6); + r7 = r9 & 1431655765; + r6 = (r6 + r7)|0; + r7 = r1 >>> 2; + r8 = r6 >>> 2; + r1 = r1 & 858993459; + r7 = r7 & 858993459; + r1 = (r1 + r7)|0; + r6 = r6 & 858993459; + r7 = r8 & 858993459; + r6 = (r6 + r7)|0; + r7 = r1 >>> 4; + r8 = r6 >>> 4; + r1 = r1 & 252645135; + r7 = r7 & 252645135; + r1 = (r1 + r7)|0; + r6 = r6 & 252645135; + r7 = r8 & 252645135; + r6 = (r6 + r7)|0; + r7 = r1 >>> 8; + r8 = r6 >>> 8; + r1 = r1 & 16711935; + r7 = r7 & 16711935; + r1 = (r1 + r7)|0; + r6 = r6 & 16711935; + r7 = r8 & 16711935; + r6 = (r6 + r7)|0; + r7 = r1 & 65535; + r1 = r1 >>> 16; + r1 = (r7 + r1)|0; + r7 = r6 & 65535; + r6 = r6 >>> 16; + r6 = (r7 + r6)|0; + r1 = (r1 + 32)|0; + r7 = 64; + r1 = r0 != 0 ? r6 : r1; + r6 = 63; + r7 = (r7 - r1)|0; + r1 = (r6 - r1)|0; + if(r7 <25) //_LBB849_10 +{ + r3 = 24; + r3 = (r3 - r7)|0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r3; + __ashldi3(i7); + r5 = r_g0; +} +else{ + if(r7 ==25) //_LBB849_5 +{ + r0 = r0 << 1; + r6 = r5 >>> 31; + r5 = r5 << 1; + r0 = r0 | r6; +} +else{ + if(r7 !=26) //_LBB849_6 +{ + r6 = (r7 + -26)|0; + heap32[(g0)] = r5; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r6; + __lshrdi3(i7); + r6 = r_g0; + r8 = r_g1; + r9 = 90; + r9 = (r9 - r7)|0; + heap32[(g0)] = -1; + heap32[(g0+1)] = -1; + heap32[(g0+2)] = r9; + __lshrdi3(i7); + r5 = r_g0 & r5; + r0 = r_g1 & r0; + r0 = r5 | r0; + r0 = r0 != r4; + r0 = r0 & 1; + r5 = r0 | r6; + r0 = r8; +} +} + r6 = r5 >>> 2; + r6 = r6 & 1; + r5 = r6 | r5; + r6 = (r5 + 1)|0; + r5 = uint(r6) < uint(r5) ? r3 : r4; + r5 = r6 == 0 ? r3 : r5; + r0 = (r0 + r5)|0; + r5 = r6 >>> 2; + r3 = r0 << 30; + r5 = r5 | r3; + r3 = r5 & 16777216; + if(r3 !=0) //_LBB849_9 +{ + r0 = r0 >> 2; + r5 = r5 >>> 1; + r0 = r0 << 31; + r5 = r5 | r0; + r1 = r7; +} +} + r0 = r1 << 23; + r1 = r5 & 8388607; + r2 = r2 & -2147483648; + r1 = r1 | r2; + r0 = (r0 + 1065353216)|0; + r0 = r1 | r0; + heap32[(fp+-1)] = r0; + f0 = heapFloat[(fp+-1)]; + f_g0 = f0; + return; +} +} + +function _GLOBAL__I__mandreel_create_tcp_socket(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = mandreel_flash_tcp_onError__index__; + r1 = _ZZL32_mandreel_init_tcp_socket_librayvE47s_723478567_mandreel_mandreel_flash_tcp_onError; + heap32[(g0)] = r0; + heap32[(g0+1)] = r1; + iMandreelRegisterExternalCallback(i7); + return; +} + +function mandreel_flash_tcp_onConnect(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function mandreel_flash_tcp_onError(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function mandreel_flash_tcp_receive_callbak(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; +var __label__ = 0; + i7 = sp + -32784;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; + r1 = heap32[(fp)]; + r2 = heapU8[r0]; +_1: do { + if(r2 !=0) //_LBB853_2 +{ + r3 = (r0 + 1)|0; + r4 = 0; +_3: while(true){ + r2 = (r4 + 1)|0; + r5 = heapU8[r3+r4]; + r4 = r2; + if(r5 !=0) //_LBB853_3 +{ +continue _3; +} +else{ +break _1; +} +} +} +else{ + r2 = 0; +} +} while(0); + r3 = sp + -32768; + heap32[(g0)] = r0; + heap32[(g0+1)] = r2; + heap32[(g0+2)] = r3; + heap32[(g0+3)] = 32768; + r0 = _ZL10s_aSockets; + r2 = 0; + _ZN12mandreel_b6410b64_decodeEPKcjPvj(i7); + r4 = r_g0; + r6 = _ZL10s_aSockets; +_7: while(true){ + if(uint(r2) > 2; + r5 = heap32[(r5+8196)]; + if(r5 !=r1) //_LBB853_7 +{ + r2 = (r2 + 1)|0; + r0 = (r0 + 32792)|0; +continue _7; +} +else{ +__label__ = 9; +break _7; +} +} +else{ +__label__ = 8; +break _7; +} +} +if (__label__ == 8){ + r0 = 0; +} + r1 = r0 >> 2; + r2 = heap32[(r1+8194)]; + if(r4 >0) //_LBB853_12 +{ + r5 = r4; +_16: while(true){ + r6 = (r2 + 1)|0; + r5 = (r5 + -1)|0; + r6 = r6 & 32767; + r7 = (r3 + 1)|0; + r3 = heapU8[r3]; + heap8[r0+r2] = r3; + r3 = r7; + r2 = r6; +if(!(r5 !=0)) //_LBB853_13 +{ +break _16; +} +} + r2 = r6; +} + heap32[(r1+8194)] = r2; + r0 = heap32[(r1+8192)]; + r0 = (r0 + r4)|0; + heap32[(r1+8192)] = r0; + return; +} + +function _GLOBAL__D__ZN8OpenGLES12OpenGLESUtil15getCurrentErrorEv(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + heap32[(g0)] = 0; + _Z41__static_initialization_and_destruction_0ii(i7); + return; +} + +function _ZNSt5dequeIjSaIjEE5eraseESt15__rw_deque_iterIjiPjRjS0_ES5_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+4)]; + r0 = r0 >> 2; + r1 = heap32[(fp)]; + r2 = heap32[(fp+1)]; + r3 = heap32[(fp+2)]; + r4 = heap32[(r0)]; + r5 = heap32[(fp+3)]; + r6 = heap32[(r0+1)]; + r7 = r4 | r3; + if(r7 !=0) //_LBB855_2 +{ + r7 = r6 >> 2; + r8 = (r6 - r5)|0; + r9 = r5 >> 2; + r8 = r8 << 3; + r9 = heap32[(r9)]; + r7 = heap32[(r7)]; + r7 = (r4 - r7)|0; + r8 = (r8 + -32)|0; + r9 = (r9 + 128)|0; + r9 = (r9 - r3)|0; + r7 = r7 >> 2; + r8 = r8 & -32; + r7 = (r7 + r8)|0; + r8 = r9 >> 2; + r7 = (r7 + r8)|0; +} +else{ + r7 = (r4 - r3)|0; + r7 = r7 >> 2; +} + r8 = r2 >> 2; + r9 = heap32[(r8)]; + r10 = heap32[(r8+1)]; + r11 = r3 | r9; + if(r11 !=0) //_LBB855_5 +{ + r11 = (r5 - r10)|0; + r12 = r5 >> 2; + r13 = r10 >> 2; + r11 = r11 << 3; + r13 = heap32[(r13)]; + r12 = heap32[(r12)]; + r11 = (r11 + -32)|0; + r12 = (r3 - r12)|0; + r13 = (r13 + 128)|0; + r13 = (r13 - r9)|0; + r11 = r11 & -32; + r12 = r12 >> 2; + r11 = (r11 + r12)|0; + r12 = r13 >> 2; + r11 = (r11 + r12)|0; +} +else{ + r11 = (r3 - r9)|0; + r11 = r11 >> 2; +} + r2 = (r2 + 8)|0; + r12 = heap32[(r8+2)]; + r13 = heap32[(r8+3)]; + r14 = r12 | r4; + if(r14 !=0) //_LBB855_8 +{ + r14 = (r13 - r6)|0; + r15 = r13 >> 2; + r16 = r6 >> 2; + r14 = r14 << 3; + r16 = heap32[(r16)]; + r15 = heap32[(r15)]; + r14 = (r14 + -32)|0; + r15 = (r12 - r15)|0; + r16 = (r16 + 128)|0; + r16 = (r16 - r4)|0; + r14 = r14 & -32; + r15 = r15 >> 2; + r14 = (r14 + r15)|0; + r15 = r16 >> 2; + r14 = (r14 + r15)|0; +} +else{ + r14 = (r12 - r4)|0; + r14 = r14 >> 2; +} + if(r11 >=r14) //_LBB855_36 +{ + r0 = (r5 + 4)|0; + r9 = r3; +_15: while(true){ + r10 = r4 | r12; + if(r10 !=0) //_LBB855_44 +{ + r10 = r6 >> 2; + r11 = (r6 - r13)|0; + r14 = r13 >> 2; + r11 = r11 << 3; + r14 = heap32[(r14)]; + r10 = heap32[(r10)]; + r10 = (r4 - r10)|0; + r11 = (r11 + -32)|0; + r14 = (r14 + 128)|0; + r14 = (r14 - r12)|0; + r10 = r10 >> 2; + r11 = r11 & -32; + r10 = (r10 + r11)|0; + r11 = r14 >> 2; + r10 = (r10 + r11)|0; +} +else{ + r10 = (r4 - r12)|0; + r10 = r10 >> 2; +} + if(r10 !=0) //_LBB855_37 +{ + r10 = r4 >> 2; + r11 = r9 >> 2; + r10 = heap32[(r10)]; + r4 = (r4 + 4)|0; + r14 = r6 >> 2; + heap32[(r11)] = r10; + r10 = heap32[(r14)]; + r10 = (r10 + 128)|0; + if(r4 ==r10) //_LBB855_39 +{ + r6 = (r6 + 4)|0; + r4 = heap32[(r14+1)]; +} + r10 = r0 >> 2; + r9 = (r9 + 4)|0; + r11 = heap32[(r10+-1)]; + r11 = (r11 + 128)|0; +if(!(r9 !=r11)) //_LBB855_42 +{ + r9 = heap32[(r10)]; + r0 = (r0 + 4)|0; +} +} +else{ +break _15; +} +} +_27: do { +if(!(r7 ==0)) //_LBB855_59 +{ + r0 = heap32[(r8+2)]; +_29: while(true){ + r0 = (r0 + -4)|0; + heap32[(r8+2)] = r0; + r4 = heap32[(r8+3)]; + r6 = heap32[(r8+1)]; + if(r6 !=r4) //_LBB855_51 +{ +__label__ = 45; +} +else{ + r6 = heap32[(r8)]; + if(r6 !=r0) //_LBB855_51 +{ +__label__ = 45; +} +else{ + r0 = r4 >> 2; + r4 = heap32[(r0)]; +__label__ = 47; +} +} +if (__label__ == 45){ + r4 = r4 >> 2; + r4 = heap32[(r4)]; + if(r0 ==r4) //_LBB855_53 +{ +__label__ = 47; +} +else{ +__label__ = 46; +} +} +_36: do { +if (__label__ == 47){ + heap32[(g0)] = r4; + _ZdlPv(i7); + r0 = heap32[(r8+3)]; + r4 = heap32[(r8+1)]; +if(!(r4 !=r0)) //_LBB855_58 +{ + r4 = heap32[(r8)]; + r6 = heap32[(r8+2)]; +if(!(r4 !=r6)) //_LBB855_58 +{ + r0 = heap32[(r8+4)]; + r0 = (r0 + -4)|0; + heap32[(g0)] = r0; + _ZdlPv(i7); + heap32[(r8+2)] = 0; + heap32[(r8+3)] = r2; + heap32[(r8)] = 0; + heap32[(r8+1)] = r2; + r0 = 0; + heap32[(r8+4)] = 0; + heap32[(r8+5)] = 0; +break _36; +} +} + r4 = r0 >> 2; + r6 = (r0 + -4)|0; + heap32[(r4)] = 0; + heap32[(r8+3)] = r6; + r0 = heap32[(r4+-1)]; + r0 = (r0 + 128)|0; + heap32[(r8+2)] = r0; + heap32[(r8+3)] = r6; +} +} while(0); + r7 = (r7 + -1)|0; + if(r7 ==0) //_LBB855_59 +{ +break _27; +} +} +} +} while(0); + r0 = r1 >> 2; + heap32[(r0)] = r3; + heap32[(r0+1)] = r5; + return; +} +else{ +_44: while(true){ + r12 = r9 | r3; + if(r12 !=0) //_LBB855_20 +{ + r12 = r10 >> 2; + r13 = (r10 - r5)|0; + r11 = r5 >> 2; + r13 = r13 << 3; + r11 = heap32[(r11)]; + r12 = heap32[(r12)]; + r12 = (r9 - r12)|0; + r13 = (r13 + -32)|0; + r11 = (r11 + 128)|0; + r11 = (r11 - r3)|0; + r12 = r12 >> 2; + r13 = r13 & -32; + r12 = (r12 + r13)|0; + r13 = r11 >> 2; + r12 = (r12 + r13)|0; +} +else{ + r12 = (r9 - r3)|0; + r12 = r12 >> 2; +} + if(r12 !=0) //_LBB855_11 +{ + r12 = r6 >> 2; + r13 = heap32[(r12)]; + if(r4 ==r13) //_LBB855_13 +{ + r4 = heap32[(r12+-1)]; + r6 = (r6 + -4)|0; + r4 = (r4 + 128)|0; +} + r12 = r5 >> 2; + r4 = (r4 + -4)|0; + r13 = heap32[(r12)]; + if(r3 ==r13) //_LBB855_16 +{ + r3 = heap32[(r12+-1)]; + r5 = (r5 + -4)|0; + r3 = (r3 + 128)|0; +} + r12 = r3 >> 2; + r3 = (r3 + -4)|0; + r13 = r4 >> 2; + r12 = heap32[(r12+-1)]; + heap32[(r13)] = r12; +} +else{ +break _44; +} +} +_58: do { +if(!(r7 ==0)) //_LBB855_35 +{ + r3 = heap32[(r8)]; +_60: while(true){ + r3 = (r3 + 4)|0; + heap32[(r8)] = r3; + r4 = heap32[(r8+1)]; + r5 = heap32[(r8+3)]; + if(r4 !=r5) //_LBB855_27 +{ +__label__ = 24; +} +else{ + r5 = r2 >> 2; + r5 = heap32[(r5)]; + if(r3 !=r5) //_LBB855_27 +{ +__label__ = 24; +} +else{ + r3 = r4 >> 2; + r4 = heap32[(r3)]; +__label__ = 26; +} +} +if (__label__ == 24){ + r4 = r4 >> 2; + r4 = heap32[(r4)]; + r5 = (r4 + 128)|0; + if(r3 ==r5) //_LBB855_29 +{ +__label__ = 26; +} +else{ +__label__ = 25; +} +} +_67: do { +if (__label__ == 26){ + heap32[(g0)] = r4; + _ZdlPv(i7); + r3 = heap32[(r8+1)]; + r4 = heap32[(r8+3)]; +if(!(r3 !=r4)) //_LBB855_34 +{ + r4 = heap32[(r8)]; + r5 = heap32[(r8+2)]; +if(!(r4 !=r5)) //_LBB855_34 +{ + r3 = heap32[(r8+4)]; + r3 = (r3 + -4)|0; + heap32[(g0)] = r3; + _ZdlPv(i7); + heap32[(r8+2)] = 0; + heap32[(r8+3)] = r2; + heap32[(r8)] = 0; + heap32[(r8+1)] = r2; + r3 = 0; + heap32[(r8+4)] = 0; + heap32[(r8+5)] = 0; +break _67; +} +} + r4 = r3 >> 2; + r5 = (r3 + 4)|0; + heap32[(r4)] = 0; + heap32[(r8+1)] = r5; + r3 = heap32[(r4+1)]; + heap32[(r8)] = r3; + heap32[(r8+1)] = r5; +} +} while(0); + r7 = (r7 + -1)|0; + if(r7 ==0) //_LBB855_35 +{ +break _58; +} +} +} +} while(0); + r1 = r1 >> 2; + r2 = heap32[(r0)]; + heap32[(r1)] = r2; + r2 = heap32[(r0+1)]; + heap32[(r1+1)] = r2; + return; +} +} + +function _Z41__static_initialization_and_destruction_0ii(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; +var __label__ = 0; + i7 = sp + -80;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + if(r0 ==0) //_LBB856_16 +{ + r0 = _ZL13s_fifo_errors; + r1 = r0 >> 2; + r2 = heap32[(r1+2)]; + r3 = sp + -24; + heap32[(fp+-6)] = r2; + r2 = r3 >> 2; + r4 = heap32[(r1+3)]; + heap32[(r2+1)] = r4; + r2 = heap32[(r1)]; + r1 = heap32[(r1+1)]; + r4 = sp + -32; +} +else{ + if(r0 !=1) //_LBB856_17 +{ + return; +} +else{ + r0 = sp + -56; + r1 = r0 >> 2; + r2 = (r0 + 8)|0; + heap32[(r1+2)] = 0; + heap32[(r1+3)] = r2; + heap32[(fp+-14)] = 0; + heap32[(r1+1)] = r2; + r2 = _ZL13s_fifo_errors; + heap32[(r1+4)] = 0; + r3 = r2 >> 2; + heap32[(r1+5)] = 0; + r4 = (r2 + 8)|0; + heap32[(r3+2)] = 0; + heap32[(r3+3)] = r4; + heap32[(r3)] = 0; + heap32[(r3+1)] = r4; + r5 = 0; + heap32[(r3+4)] = 0; + heap32[(r3+5)] = 0; + r6 = r4; + r7 = r5; +_7: while(true){ + if(r7 !=0) //_LBB856_12 +{ + r8 = (r2 + 8)|0; + r8 = (r8 - r6)|0; + r9 = r6 >> 2; + r8 = r8 << 3; + r9 = heap32[(r9)]; + r10 = 0; + r11 = heap32[(r3+2)]; + r10 = (r10 - r11)|0; + r8 = (r8 + -32)|0; + r9 = (r9 + 128)|0; + r9 = (r9 - r7)|0; + r10 = r10 >> 2; + r8 = r8 & -32; + r8 = (r10 + r8)|0; + r9 = r9 >> 2; + r8 = (r8 + r9)|0; +} +else{ + r8 = 0; + r8 = (r8 - r7)|0; + r8 = r8 >> 2; +} + if(r8 !=0) //_LBB856_3 +{ + r8 = r4 >> 2; + r9 = heap32[(r8)]; + if(r5 ==r9) //_LBB856_5 +{ + r5 = heap32[(r8+-1)]; + r4 = (r4 + -4)|0; + r5 = (r5 + 128)|0; +} + r8 = r6 >> 2; + r5 = (r5 + -4)|0; + r9 = heap32[(r8)]; + if(r7 ==r9) //_LBB856_8 +{ + r7 = heap32[(r8+-1)]; + r6 = (r6 + -4)|0; + r7 = (r7 + 128)|0; +} + r8 = r7 >> 2; + r7 = (r7 + -4)|0; + r9 = r5 >> 2; + r8 = heap32[(r8+-1)]; + heap32[(r9)] = r8; +} +else{ +break _7; +} +} + r2 = heap32[(r1+2)]; + r3 = sp + -8; + heap32[(fp+-2)] = r2; + r2 = r3 >> 2; + r4 = heap32[(r1+3)]; + heap32[(r2+1)] = r4; + r2 = heap32[(fp+-14)]; + r1 = heap32[(r1+1)]; + r4 = sp + -16; +} +} + heap32[(g0)] = r4; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r2; + heap32[(g0+3)] = r1; + heap32[(g0+4)] = r3; + _ZNSt5dequeIjSaIjEE5eraseESt15__rw_deque_iterIjiPjRjS0_ES5_(i7); + return; +} + +function _GLOBAL__I__ZN5my_gl14glAttachShaderEjj(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = _ZN5my_glL9m_contextE; + r1 = r0 >> 2; + heap32[(r1+62)] = 0; + heap32[(r1+63)] = 0; + heap32[(r1+64)] = 0; + heap32[(r1+65)] = 0; + heap32[(r1+66)] = 0; + heap32[(r1+67)] = 0; + heap32[(r1+78)] = 0; + heap32[(r1+79)] = 0; + heap32[(r1+74)] = 0; + heap32[(r1+77)] = 0; + heap32[(r1+76)] = 0; + heap32[(r1+75)] = 0; + _ZN4__rw9__rb_treeIjSt4pairIKjPN5my_gl12TIndexBufferEENS_11__select1stIS6_jEESt4lessIjESaIS6_EE11_C_get_linkEv(i7); + r2 = r_g0; + r3 = r2 >> 2; + heap32[(r1+78)] = r2; + heap32[(r3+1)] = 0; + heap32[(r3+3)] = r2; + heap32[(r3+2)] = r2; + heap32[(r1)] = 0; + heap32[(r1+3)] = 0; + heap32[(r1+61)] = 0; + heap32[(r1+4)] = 0; + heap32[(r1+68)] = 0; + heap32[(r1+69)] = 0; + r2 = _ZL26s_mandreel_internal_height; + r3 = _ZL25s_mandreel_internal_width; + heap32[(r1+1)] = 0; + r2 = r2 >> 2; + heap32[(r1+2)] = 1; + r3 = r3 >> 2; + r2 = heap32[(r2)]; + r3 = heap32[(r3)]; + heap32[(r1+70)] = 0; + heap32[(r1+71)] = 0; + r4 = 224; + heap32[(r1+72)] = r3; + heap32[(r1+73)] = r2; + r2 = 0; +_2: while(true){ + r1 = (r4 + -1)|0; + r4 = (r0 - r4)|0; + heap8[r4+244] = r2; + r4 = r1; + if(r1 !=0) //_LBB857_2 +{ +continue _2; +} +else{ +break _2; +} +} + return; +} + +function _GLOBAL__D__ZN5my_gl14glAttachShaderEjj(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -16;var g0 = i7>>2; // save stack + r0 = _ZN5my_glL9m_contextE; + r0 = r0 >> 2; + r1 = heap32[(r0+78)]; +_1: do { +if(!(r1 ==0)) //_LBB858_26 +{ + r2 = r1 >> 2; + r3 = heap32[(r0+79)]; + if(r3 !=0) //_LBB858_5 +{ + r1 = heap32[(r2+1)]; + heap32[(g0)] = r1; + _ZN4__rw9__rb_treeIjSt4pairIKjPN5my_gl12TIndexBufferEENS_11__select1stIS6_jEESt4lessIjESaIS6_EE8_C_eraseEPNS_17__rw_rb_tree_nodeISB_S6_jS8_EE(i7); + r1 = heap32[(r0+78)]; + r2 = r1 >> 2; + heap32[(r2+1)] = 0; + heap32[(r2+3)] = r1; + heap32[(r2+2)] = r1; + heap32[(r0+79)] = 0; +} +else{ + r2 = heap32[(r2+2)]; +if(!(r2 ==r1)) //_LBB858_4 +{ +_6: while(true){ + r3 = r2; + r4 = r3 >> 2; + r2 = heap32[(r4+3)]; +_8: do { + if(r2 !=0) //_LBB858_10 +{ + r4 = r2 >> 2; + r4 = heap32[(r4+2)]; + if(r4 ==0) //_LBB858_12 +{ +break _8; +} +else{ +__label__ = 8; //SET chanka +_10: while(true){ + r2 = r4; + r4 = r2 >> 2; + r4 = heap32[(r4+2)]; + if(r4 !=0) //_LBB858_13 +{ +continue _10; +} +else{ +break _8; +} +} +} +} +else{ + r4 = heap32[(r4+1)]; + r2 = r4 >> 2; + r2 = heap32[(r2+3)]; + if(r3 ==r2) //_LBB858_9 +{ +_14: while(true){ + r2 = r4; + r5 = r2 >> 2; + r4 = heap32[(r5+1)]; + r6 = r4 >> 2; + r6 = heap32[(r6+3)]; +if(!(r2 ==r6)) //_LBB858_15 +{ +break _14; +} +} + r5 = heap32[(r5+3)]; +} +else{ + r5 = 0; + r2 = r3; +} + if(r5 !=r4) //_LBB858_19 +{ + r2 = r4; +} +} +} while(0); + r4 = sp + -8; + heap32[(g0)] = r4; + heap32[(g0+1)] = r3; + _ZN4__rw9__rb_treeIjSt4pairIKjPN5my_gl12TIndexBufferEENS_11__select1stIS6_jEESt4lessIjESaIS6_EE5eraseENS_14__rw_tree_iterIS6_iPS6_RS6_NS_17__rw_rb_tree_nodeISB_S6_jS8_EEEE(i7); +if(!(r2 !=r1)) //_LBB858_6 +{ +break _6; +} +} + r1 = heap32[(r0+78)]; +} +} + r2 = r1 >> 2; + r3 = heap32[(r0+75)]; + heap32[(r2+3)] = r3; + heap32[(r0+75)] = r1; + r1 = heap32[(r0+74)]; +if(!(r1 ==0)) //_LBB858_26 +{ +__label__ = 16; //SET chanka +_23: while(true){ + r2 = r1 >> 2; + r3 = heap32[(r2)]; + heap32[(r0+74)] = r3; + r2 = heap32[(r2+2)]; + heap32[(g0)] = r2; + _ZdlPv(i7); + heap32[(g0)] = r1; + _ZdlPv(i7); + r1 = heap32[(r0+74)]; + if(r1 !=0) //_LBB858_23 +{ +continue _23; +} +else{ +break _1; +} +} +} +} +} while(0); + r1 = heap32[(r0+65)]; + r2 = heap32[(r0+66)]; + r3 = (r2 - r1)|0; + r3 = r3 >> 5; + if(r3 !=0) //_LBB858_28 +{ + r1 = (r2 + -32)|0; + heap32[(r0+66)] = r1; + r1 = (r2 + -28)|0; + heap32[(g0)] = r1; + _ZN4__rw9__rb_treeISsSt4pairIKSsiENS_11__select1stIS3_SsEESt4lessISsESaIS3_EED2Ev(i7); +_31: do { +if(!(r3 ==1)) //_LBB858_33 +{ + r1 = (r3 + -1)|0; +_33: while(true){ + r2 = heap32[(r0+66)]; + r3 = (r2 + -32)|0; + heap32[(r0+66)] = r3; + r2 = (r2 + -28)|0; + heap32[(g0)] = r2; + _ZN4__rw9__rb_treeISsSt4pairIKSsiENS_11__select1stIS3_SsEESt4lessISsESaIS3_EED2Ev(i7); + r1 = (r1 + -1)|0; +if(!(r1 !=0)) //_LBB858_31 +{ +break _31; +} +} +} +} while(0); + r1 = heap32[(r0+65)]; +} + heap32[(g0)] = r1; + _ZdlPv(i7); + r1 = heap32[(r0+63)]; + r2 = heap32[(r0+62)]; + r3 = (r1 - r2)|0; + r4 = (r3 + 11)|0; +if(!(uint(r4) >2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function imandreel_viewport_resize(sp) +{ + var i7; + var fp = sp>>2; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + return; +} + +function _ZN4__rw9__rb_treeIjSt4pairIKjPN5my_gl12TIndexBufferEENS_11__select1stIS6_jEESt4lessIjESaIS6_EE8_C_eraseEPNS_17__rw_rb_tree_nodeISB_S6_jS8_EE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; +if(!(r0 ==0)) //_LBB861_2 +{ +_2: while(true){ + r1 = r0 >> 2; + r2 = heap32[(r1+3)]; + heap32[(g0)] = r2; + r2 = _ZN5my_glL9m_contextE; + _ZN4__rw9__rb_treeIjSt4pairIKjPN5my_gl12TIndexBufferEENS_11__select1stIS6_jEESt4lessIjESaIS6_EE8_C_eraseEPNS_17__rw_rb_tree_nodeISB_S6_jS8_EE(i7); + r2 = r2 >> 2; + r3 = heap32[(r1+2)]; + r4 = heap32[(r2+75)]; + heap32[(r1+3)] = r4; + heap32[(r2+75)] = r0; + r0 = r3; + if(r3 !=0) //_LBB861_1 +{ +continue _2; +} +else{ +break _2; +} +} +} + return; +} + +function _ZN4__rw9__rb_treeISsSt4pairIKSsiENS_11__select1stIS3_SsEESt4lessISsESaIS3_EE8_C_eraseEPNS_17__rw_rb_tree_nodeIS8_S3_SsS5_EE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+1)]; +if(!(r0 ==0)) //_LBB862_6 +{ + r1 = heap32[(fp)]; +_3: while(true){ + r2 = r0; + r3 = r2 >> 2; + r0 = heap32[(r3+3)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + _ZN4__rw9__rb_treeISsSt4pairIKSsiENS_11__select1stIS3_SsEESt4lessISsESaIS3_EE8_C_eraseEPNS_17__rw_rb_tree_nodeIS8_S3_SsS5_EE(i7); + r4 = r1 >> 2; + r0 = heap32[(r3+2)]; + r5 = heap32[(r4+1)]; + heap32[(r3+3)] = r5; + r5 = heap32[(r3+4)]; + r5 = (r5 + -12)|0; + r6 = _ZNSs11_C_null_refE; +if(!(r5 ==r6)) //_LBB862_5 +{ + r5 = r5 >> 2; + r6 = heap32[(r5)]; + r7 = (r6 + -1)|0; + heap32[(r5)] = r7; +if(!(r6 >0)) //_LBB862_5 +{ + r5 = heap32[(r3+4)]; + r5 = (r5 + -12)|0; + heap32[(g0)] = r5; + _ZdlPv(i7); +} +} + heap32[(r3+4)] = 0; + heap32[(r4+1)] = r2; + if(r0 !=0) //_LBB862_2 +{ +continue _3; +} +else{ +break _3; +} +} +} + return; +} + +function _ZN4__rw9__rb_treeISsSt4pairIKSsiENS_11__select1stIS3_SsEESt4lessISsESaIS3_EE5eraseENS_14__rw_tree_iterIS3_iPS3_RS3_NS_17__rw_rb_tree_nodeIS8_S3_SsS5_EEEESF_(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; + var r15; + var r16; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = heap32[(fp+2)]; + r1 = heap32[(fp+1)]; + r0 = r0 >> 2; + r2 = r1 >> 2; + r3 = heap32[(r2+4)]; + r4 = heap32[(r0)]; + r5 = heap32[(fp)]; + r6 = heap32[(fp+3)]; + r7 = r3 >> 2; + r8 = heap32[(r7+2)]; +if(!(r4 !=r8)) //_LBB863_3 +{ +if(!(r3 !=r6)) //_LBB863_3 +{ + r8 = heap32[(r2+5)]; + if(r8 !=0) //_LBB863_4 +{ + r0 = heap32[(r7+1)]; + heap32[(g0)] = r1; + heap32[(g0+1)] = r0; + _ZN4__rw9__rb_treeISsSt4pairIKSsiENS_11__select1stIS3_SsEESt4lessISsESaIS3_EE8_C_eraseEPNS_17__rw_rb_tree_nodeIS8_S3_SsS5_EE(i7); + r0 = heap32[(r2+4)]; + r0 = r0 >> 2; + heap32[(r0+1)] = 0; + r0 = heap32[(r2+4)]; + r1 = r0 >> 2; + heap32[(r1+3)] = r0; + heap32[(r1+2)] = r0; + heap32[(r2+5)] = 0; + r0 = r5 >> 2; + r1 = heap32[(r2+4)]; + heap32[(r0)] = r1; + return; +} +} +} + r1 = r5 >> 2; + heap32[(r1)] = r3; +if(!(r4 ==r6)) //_LBB863_165 +{ +_7: while(true){ + r3 = r4 >> 2; + r5 = heap32[(r3+3)]; + if(r5 !=0) //_LBB863_9 +{ + r7 = r5 >> 2; + r7 = heap32[(r7+2)]; +if(!(r7 ==0)) //_LBB863_11 +{ +_12: while(true){ + r5 = r7; + r7 = r5 >> 2; + r7 = heap32[(r7+2)]; +if(!(r7 !=0)) //_LBB863_12 +{ +break _12; +} +} +} + heap32[(r0)] = r5; +} +else{ + r7 = heap32[(r3+1)]; + r5 = r7 >> 2; + r5 = heap32[(r5+3)]; + if(r4 ==r5) //_LBB863_8 +{ +_17: while(true){ + r5 = r7; + r8 = r5 >> 2; + r7 = heap32[(r8+1)]; + r9 = r7 >> 2; + r9 = heap32[(r9+3)]; +if(!(r5 ==r9)) //_LBB863_14 +{ +break _17; +} +} + heap32[(r0)] = r5; + r8 = heap32[(r8+3)]; +} +else{ + r8 = 0; + r5 = r4; +} + if(r8 !=r7) //_LBB863_18 +{ + heap32[(r0)] = r7; + r5 = r7; +} +} + r7 = heap32[(r2+4)]; + if(r4 !=r7) //_LBB863_21 +{ + r9 = heap32[(r3+3)]; +_26: do { + if(r9 !=0) //_LBB863_25 +{ + r8 = r9 >> 2; + r10 = heap32[(r8+2)]; + if(r10 ==0) //_LBB863_27 +{ + r8 = r9; +} +else{ +_30: while(true){ + r8 = r10; + r10 = r8 >> 2; + r10 = heap32[(r10+2)]; + if(r10 !=0) //_LBB863_28 +{ +continue _30; +} +else{ +break _26; +} +} +} +} +else{ + r8 = heap32[(r3+1)]; + r10 = r8 >> 2; + r10 = heap32[(r10+3)]; + if(r4 ==r10) //_LBB863_24 +{ +_34: while(true){ + r11 = r8; + r10 = r11 >> 2; + r8 = heap32[(r10+1)]; + r12 = r8 >> 2; + r12 = heap32[(r12+3)]; +if(!(r11 ==r12)) //_LBB863_30 +{ +break _34; +} +} + r10 = heap32[(r10+3)]; +} +else{ + r10 = 0; + r11 = r4; +} + if(r10 ==r8) //_LBB863_34 +{ + r8 = r11; +} +} +} while(0); + r10 = heap32[(r3+2)]; + if(r10 !=0) //_LBB863_37 +{ + if(r9 !=0) //_LBB863_39 +{ + r11 = r9 >> 2; + r12 = heap32[(r11+2)]; +_45: do { + if(r12 ==0) //_LBB863_41 +{ + r11 = r9; +} +else{ +_47: while(true){ + r11 = r12; + r12 = r11 >> 2; + r12 = heap32[(r12+2)]; +if(!(r12 !=0)) //_LBB863_42 +{ +break _45; +} +} +} +} while(0); + r13 = r11 >> 2; + r9 = heap32[(r13+3)]; + if(r11 !=r4) //_LBB863_45 +{ + r7 = r10 >> 2; + heap32[(r7+1)] = r11; + r7 = heap32[(r3+2)]; + heap32[(r13+2)] = r7; + r7 = heap32[(r3+3)]; + if(r7 !=r11) //_LBB863_47 +{ + r12 = heap32[(r13+1)]; + if(r9 !=0) //_LBB863_49 +{ + r7 = r9 >> 2; + heap32[(r7+1)] = r12; + r7 = heap32[(r13+1)]; +} +else{ + r7 = r12; +} + r7 = r7 >> 2; + heap32[(r7+2)] = r9; + r7 = heap32[(r3+3)]; + heap32[(r13+3)] = r7; + r7 = heap32[(r3+3)]; + r7 = r7 >> 2; + heap32[(r7+1)] = r11; +} +else{ + r12 = r11; +} + r7 = heap32[(r2+4)]; + r7 = r7 >> 2; + r10 = heap32[(r7+1)]; + if(r10 !=r4) //_LBB863_53 +{ + r7 = heap32[(r3+1)]; + r10 = r7 >> 2; + r10 = heap32[(r10+2)]; + r10 = r10 != r4; + r10 = r10 & 1; + r10 = r10 << 2; + r7 = (r7 + r10)|0; + r7 = (r7 + 8)|0; + r10 = (r4 + 4)|0; + r7 = r7 >> 2; + heap32[(r7)] = r11; +} +else{ + r10 = (r4 + 4)|0; + heap32[(r7+1)] = r11; +} + r7 = r10 >> 2; + r7 = heap32[(r7)]; + heap32[(r13+1)] = r7; + r7 = heap32[(r13)]; + r11 = heap32[(r3)]; + heap32[(r13)] = r11; + heap32[(r3)] = r7; +__label__ = 66; +} +else{ +__label__ = 45; +} +} +else{ + r12 = heap32[(r3+1)]; + r11 = r4; + r9 = r10; +__label__ = 47; +} +} +else{ + r11 = r4; +__label__ = 45; +} +if (__label__ == 45){ + r12 = r11 >> 2; + r12 = heap32[(r12+1)]; + if(r9 ==0) //_LBB863_57 +{ + r9 = 0; +__label__ = 48; +} +else{ +__label__ = 47; +} +} +if (__label__ == 47){ + r7 = r9 >> 2; + heap32[(r7+1)] = r12; + r7 = heap32[(r2+4)]; +__label__ = 48; +} +if (__label__ == 48){ + r7 = r7 >> 2; + r10 = heap32[(r7+1)]; + if(r10 !=r4) //_LBB863_61 +{ + r7 = heap32[(r3+1)]; + r10 = r7 >> 2; + r10 = heap32[(r10+2)]; + r10 = r10 != r4; + r10 = r10 & 1; + r10 = r10 << 2; + r7 = (r7 + r10)|0; + r7 = (r7 + 8)|0; + r7 = r7 >> 2; + heap32[(r7)] = r9; +} +else{ + heap32[(r7+1)] = r9; +} + r7 = heap32[(r2+4)]; + r7 = r7 >> 2; + r10 = heap32[(r7+2)]; +if(!(r10 !=r4)) //_LBB863_70 +{ + r10 = heap32[(r3+3)]; + if(r10 !=0) //_LBB863_65 +{ + r10 = r9 >> 2; + r10 = heap32[(r10+2)]; +_80: do { + if(r10 ==0) //_LBB863_67 +{ + r13 = r9; +} +else{ +_82: while(true){ + r13 = r10; + r10 = r13 >> 2; + r10 = heap32[(r10+2)]; +if(!(r10 !=0)) //_LBB863_68 +{ +break _80; +} +} +} +} while(0); + heap32[(r7+2)] = r13; +} +else{ + r10 = heap32[(r3+1)]; + heap32[(r7+2)] = r10; +} +} + r7 = heap32[(r2+4)]; + r7 = r7 >> 2; + r10 = heap32[(r7+3)]; + if(r10 ==r4) //_LBB863_72 +{ + r4 = heap32[(r3+2)]; + if(r4 !=0) //_LBB863_74 +{ + r4 = r9 >> 2; + r4 = heap32[(r4+3)]; +_91: do { + if(r4 ==0) //_LBB863_76 +{ + r3 = r9; +} +else{ +_93: while(true){ + r3 = r4; + r4 = r3 >> 2; + r4 = heap32[(r4+3)]; +if(!(r4 !=0)) //_LBB863_77 +{ +break _91; +} +} +} +} while(0); + heap32[(r7+3)] = r3; + r4 = r11; +} +else{ + r4 = heap32[(r3+1)]; + heap32[(r7+3)] = r4; + r4 = r11; +} +} +else{ + r4 = r11; +} +} + r3 = r4 >> 2; + r7 = heap32[(r3)]; +_99: do { +if(!(r7 ==0)) //_LBB863_160 +{ +_100: while(true){ + r7 = heap32[(r2+4)]; + r7 = r7 >> 2; + r7 = heap32[(r7+1)]; + if(r7 ==r9) //_LBB863_158 +{ +__label__ = 140; +break _100; +} +else{ +if(!(r9 ==0)) //_LBB863_81 +{ + r7 = r9 >> 2; + r7 = heap32[(r7)]; +if(!(r7 ==1)) //_LBB863_81 +{ +__label__ = 141; +break _100; +} +} + r7 = r12 >> 2; + r10 = heap32[(r7+2)]; + if(r10 !=r9) //_LBB863_119 +{ + r11 = r10 >> 2; + r13 = heap32[(r11)]; + if(r13 ==0) //_LBB863_121 +{ + heap32[(r11)] = 1; + heap32[(r7)] = 0; + r10 = heap32[(r7+2)]; + r11 = r10 >> 2; + r13 = heap32[(r11+3)]; + heap32[(r7+2)] = r13; + r13 = heap32[(r11+3)]; +if(!(r13 ==0)) //_LBB863_123 +{ + r13 = r13 >> 2; + heap32[(r13+1)] = r12; +} + r13 = heap32[(r7+1)]; + heap32[(r11+1)] = r13; + r13 = heap32[(r2+4)]; + r13 = r13 >> 2; + r14 = heap32[(r13+1)]; + if(r14 !=r12) //_LBB863_125 +{ + r13 = heap32[(r7+1)]; + r13 = r13 >> 2; + r14 = heap32[(r13+3)]; + if(r14 !=r12) //_LBB863_127 +{ + heap32[(r13+2)] = r10; +} +else{ + heap32[(r13+3)] = r10; +} +} +else{ + heap32[(r13+1)] = r10; +} + heap32[(r11+3)] = r12; + heap32[(r7+1)] = r10; + r10 = heap32[(r7+2)]; +} + r11 = r10 >> 2; + r13 = heap32[(r11+3)]; +if(!(r13 ==0)) //_LBB863_131 +{ + r13 = r13 >> 2; + r14 = heap32[(r13)]; + if(r14 !=1) //_LBB863_135 +{ +__label__ = 117; +break _100; +} +} + r13 = heap32[(r11+2)]; +if(!(r13 ==0)) //_LBB863_134 +{ + r13 = r13 >> 2; + r13 = heap32[(r13)]; +if(!(r13 ==1)) //_LBB863_134 +{ +__label__ = 127; +break _100; +} +} + heap32[(r11)] = 0; +} +else{ + r10 = heap32[(r7+3)]; + r11 = r10 >> 2; + r13 = heap32[(r11)]; + if(r13 ==0) //_LBB863_84 +{ + heap32[(r11)] = 1; + heap32[(r7)] = 0; + r10 = heap32[(r7+3)]; + r11 = r10 >> 2; + r13 = heap32[(r11+2)]; + heap32[(r7+3)] = r13; + r13 = heap32[(r11+2)]; +if(!(r13 ==0)) //_LBB863_86 +{ + r13 = r13 >> 2; + heap32[(r13+1)] = r12; +} + r13 = heap32[(r7+1)]; + heap32[(r11+1)] = r13; + r13 = heap32[(r2+4)]; + r13 = r13 >> 2; + r14 = heap32[(r13+1)]; + if(r14 !=r12) //_LBB863_88 +{ + r13 = heap32[(r7+1)]; + r13 = r13 >> 2; + r14 = heap32[(r13+2)]; + if(r14 !=r12) //_LBB863_90 +{ + heap32[(r13+3)] = r10; +} +else{ + heap32[(r13+2)] = r10; +} +} +else{ + heap32[(r13+1)] = r10; +} + heap32[(r11+2)] = r12; + heap32[(r7+1)] = r10; + r10 = heap32[(r7+3)]; +} + r11 = r10 >> 2; + r13 = heap32[(r11+2)]; +if(!(r13 ==0)) //_LBB863_94 +{ + r13 = r13 >> 2; + r14 = heap32[(r13)]; + if(r14 !=1) //_LBB863_99 +{ +__label__ = 83; +break _100; +} +} + r13 = heap32[(r11+3)]; +if(!(r13 ==0)) //_LBB863_97 +{ + r13 = r13 >> 2; + r13 = heap32[(r13)]; +if(!(r13 ==1)) //_LBB863_97 +{ +__label__ = 93; +break _100; +} +} + heap32[(r11)] = 0; +} + r10 = heap32[(r7+1)]; + r9 = r12; + r12 = r10; +} +} +_148: do { +switch(__label__ ){//multiple entries +case 117: + r14 = heap32[(r11+2)]; +if(!(r14 ==0)) //_LBB863_137 +{ + r14 = r14 >> 2; + r14 = heap32[(r14)]; + if(r14 !=1) //_LBB863_133 +{ +__label__ = 127; +break _148; +} +} + heap32[(r13)] = 1; + r13 = heap32[(r11+3)]; + r14 = r13 >> 2; + heap32[(r11)] = 0; + r15 = heap32[(r14+2)]; + heap32[(r11+3)] = r15; + r15 = heap32[(r14+2)]; +if(!(r15 ==0)) //_LBB863_139 +{ + r15 = r15 >> 2; + heap32[(r15+1)] = r10; +} + r15 = heap32[(r11+1)]; + heap32[(r14+1)] = r15; + r15 = heap32[(r2+4)]; + r15 = r15 >> 2; + r16 = heap32[(r15+1)]; + if(r16 !=r10) //_LBB863_141 +{ + r15 = heap32[(r11+1)]; + r15 = r15 >> 2; + r16 = heap32[(r15+2)]; + if(r16 !=r10) //_LBB863_143 +{ + heap32[(r15+3)] = r13; +} +else{ + heap32[(r15+2)] = r13; +} +} +else{ + heap32[(r15+1)] = r13; +} + heap32[(r14+2)] = r10; + heap32[(r11+1)] = r13; + r10 = heap32[(r7+2)]; +__label__ = 127; +break _148; +break; +case 83: + r14 = heap32[(r11+3)]; +if(!(r14 ==0)) //_LBB863_101 +{ + r14 = r14 >> 2; + r14 = heap32[(r14)]; + if(r14 !=1) //_LBB863_96 +{ +__label__ = 93; +break _148; +} +} + heap32[(r13)] = 1; + r13 = heap32[(r11+2)]; + r14 = r13 >> 2; + heap32[(r11)] = 0; + r15 = heap32[(r14+3)]; + heap32[(r11+2)] = r15; + r15 = heap32[(r14+3)]; +if(!(r15 ==0)) //_LBB863_103 +{ + r15 = r15 >> 2; + heap32[(r15+1)] = r10; +} + r15 = heap32[(r11+1)]; + heap32[(r14+1)] = r15; + r15 = heap32[(r2+4)]; + r15 = r15 >> 2; + r16 = heap32[(r15+1)]; + if(r16 !=r10) //_LBB863_105 +{ + r15 = heap32[(r11+1)]; + r15 = r15 >> 2; + r16 = heap32[(r15+3)]; + if(r16 !=r10) //_LBB863_107 +{ + heap32[(r15+2)] = r13; +} +else{ + heap32[(r15+3)] = r13; +} +} +else{ + heap32[(r15+1)] = r13; +} + heap32[(r14+3)] = r10; + heap32[(r11+1)] = r13; + r10 = heap32[(r7+3)]; +__label__ = 93; +break; +} +} while(0); +_177: do { +switch(__label__ ){//multiple entries +case 127: + r10 = r10 >> 2; + r11 = heap32[(r7)]; + heap32[(r10)] = r11; + heap32[(r7)] = 1; + r10 = heap32[(r10+2)]; +if(!(r10 ==0)) //_LBB863_147 +{ + r10 = r10 >> 2; + heap32[(r10)] = 1; +} + r10 = heap32[(r7+2)]; + r11 = r10 >> 2; + r13 = heap32[(r11+3)]; + heap32[(r7+2)] = r13; + r13 = heap32[(r11+3)]; +if(!(r13 ==0)) //_LBB863_149 +{ + r13 = r13 >> 2; + heap32[(r13+1)] = r12; +} + r13 = heap32[(r7+1)]; + heap32[(r11+1)] = r13; + r13 = heap32[(r2+4)]; + r13 = r13 >> 2; + r14 = heap32[(r13+1)]; + if(r14 !=r12) //_LBB863_151 +{ + r13 = heap32[(r7+1)]; + r13 = r13 >> 2; + r14 = heap32[(r13+3)]; + if(r14 !=r12) //_LBB863_153 +{ + heap32[(r13+2)] = r10; +} +else{ + heap32[(r13+3)] = r10; +} +} +else{ + heap32[(r13+1)] = r10; +} + heap32[(r11+3)] = r12; + heap32[(r7+1)] = r10; +__label__ = 140; +break _177; +break; +case 93: + r10 = r10 >> 2; + r11 = heap32[(r7)]; + heap32[(r10)] = r11; + heap32[(r7)] = 1; + r10 = heap32[(r10+3)]; +if(!(r10 ==0)) //_LBB863_111 +{ + r10 = r10 >> 2; + heap32[(r10)] = 1; +} + r10 = heap32[(r7+3)]; + r11 = r10 >> 2; + r13 = heap32[(r11+2)]; + heap32[(r7+3)] = r13; + r13 = heap32[(r11+2)]; +if(!(r13 ==0)) //_LBB863_113 +{ + r13 = r13 >> 2; + heap32[(r13+1)] = r12; +} + r13 = heap32[(r7+1)]; + heap32[(r11+1)] = r13; + r13 = heap32[(r2+4)]; + r13 = r13 >> 2; + r14 = heap32[(r13+1)]; + if(r14 !=r12) //_LBB863_115 +{ + r13 = heap32[(r7+1)]; + r13 = r13 >> 2; + r14 = heap32[(r13+2)]; + if(r14 !=r12) //_LBB863_117 +{ + heap32[(r13+3)] = r10; +} +else{ + heap32[(r13+2)] = r10; +} +} +else{ + heap32[(r13+1)] = r10; +} + heap32[(r11+2)] = r12; + heap32[(r7+1)] = r10; +__label__ = 140; +break; +} +} while(0); +if (__label__ == 140){ + if(r9 ==0) //_LBB863_160 +{ +break _99; +} +} + r7 = r9 >> 2; + heap32[(r7)] = 1; +} +} while(0); + r7 = heap32[(r2+1)]; + heap32[(r3+3)] = r7; + r7 = heap32[(r3+4)]; + r7 = (r7 + -12)|0; + r9 = _ZNSs11_C_null_refE; +if(!(r7 ==r9)) //_LBB863_163 +{ + r7 = r7 >> 2; + r9 = heap32[(r7)]; + r10 = (r9 + -1)|0; + heap32[(r7)] = r10; +if(!(r9 >0)) //_LBB863_163 +{ + r7 = heap32[(r3+4)]; + r7 = (r7 + -12)|0; + heap32[(g0)] = r7; + _ZdlPv(i7); +} +} + heap32[(r3+4)] = 0; + heap32[(r2+1)] = r4; + r4 = heap32[(r2+5)]; + r4 = (r4 + -1)|0; + heap32[(r2+5)] = r4; +} +else{ + r8 = r7; +} + heap32[(r1)] = r8; + r4 = r5; + if(r5 !=r6) //_LBB863_5 +{ +continue _7; +} +else{ +break _7; +} +} +} + return; +} + +function _ZN4__rw9__rb_treeIjSt4pairIKjPN5my_gl12TIndexBufferEENS_11__select1stIS6_jEESt4lessIjESaIS6_EE5eraseENS_14__rw_tree_iterIS6_iPS6_RS6_NS_17__rw_rb_tree_nodeISB_S6_jS8_EEEE(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; + var r7; + var r8; + var r9; + var r10; + var r11; + var r12; + var r13; + var r14; +var __label__ = 0; + i7 = sp + 0;var g0 = i7>>2; // save stack + r0 = _ZN5my_glL9m_contextE; + r0 = r0 >> 2; + r1 = heap32[(r0+78)]; + r2 = heap32[(fp+1)]; + r3 = heap32[(fp)]; + if(r1 !=r2) //_LBB864_2 +{ + r4 = r2 >> 2; + r5 = heap32[(r4+3)]; +_3: do { + if(r5 !=0) //_LBB864_6 +{ + r6 = r5 >> 2; + r7 = heap32[(r6+2)]; + if(r7 ==0) //_LBB864_8 +{ + r6 = r5; +} +else{ +_7: while(true){ + r6 = r7; + r7 = r6 >> 2; + r7 = heap32[(r7+2)]; + if(r7 !=0) //_LBB864_9 +{ +continue _7; +} +else{ +break _3; +} +} +} +} +else{ + r6 = heap32[(r4+1)]; + r7 = r6 >> 2; + r7 = heap32[(r7+3)]; + if(r7 ==r2) //_LBB864_5 +{ +_11: while(true){ + r8 = r6; + r7 = r8 >> 2; + r6 = heap32[(r7+1)]; + r9 = r6 >> 2; + r9 = heap32[(r9+3)]; +if(!(r8 ==r9)) //_LBB864_11 +{ +break _11; +} +} + r7 = heap32[(r7+3)]; +} +else{ + r7 = 0; + r8 = r2; +} + if(r7 ==r6) //_LBB864_15 +{ + r6 = r8; +} +} +} while(0); + r7 = heap32[(r4+2)]; + if(r7 !=0) //_LBB864_18 +{ + if(r5 !=0) //_LBB864_20 +{ + r8 = r5 >> 2; + r9 = heap32[(r8+2)]; +_22: do { + if(r9 ==0) //_LBB864_22 +{ + r8 = r5; +} +else{ +_24: while(true){ + r8 = r9; + r9 = r8 >> 2; + r9 = heap32[(r9+2)]; +if(!(r9 !=0)) //_LBB864_23 +{ +break _22; +} +} +} +} while(0); + r10 = r8 >> 2; + r5 = heap32[(r10+3)]; + if(r8 !=r2) //_LBB864_26 +{ + r9 = r7 >> 2; + heap32[(r9+1)] = r8; + r9 = heap32[(r4+2)]; + heap32[(r10+2)] = r9; + r9 = heap32[(r4+3)]; + if(r9 !=r8) //_LBB864_28 +{ + r9 = heap32[(r10+1)]; + if(r5 !=0) //_LBB864_30 +{ + r7 = r5 >> 2; + heap32[(r7+1)] = r9; + r7 = heap32[(r10+1)]; +} +else{ + r7 = r9; +} + r7 = r7 >> 2; + heap32[(r7+2)] = r5; + r7 = heap32[(r4+3)]; + heap32[(r10+3)] = r7; + r7 = heap32[(r4+3)]; + r7 = r7 >> 2; + heap32[(r7+1)] = r8; +} +else{ + r9 = r8; +} + r7 = r1 >> 2; + r11 = heap32[(r7+1)]; + if(r11 !=r2) //_LBB864_34 +{ + r11 = heap32[(r4+1)]; + r7 = r11 >> 2; + r7 = heap32[(r7+2)]; + r7 = r7 != r2; + r7 = r7 & 1; + r7 = r7 << 2; + r11 = (r11 + r7)|0; + r7 = (r11 + 8)|0; + r11 = (r2 + 4)|0; + r7 = r7 >> 2; + heap32[(r7)] = r8; +} +else{ + r11 = (r2 + 4)|0; + heap32[(r7+1)] = r8; +} + r8 = r11 >> 2; + r8 = heap32[(r8)]; + heap32[(r10+1)] = r8; + r8 = heap32[(r10)]; + r7 = heap32[(r4)]; + heap32[(r10)] = r7; + heap32[(r4)] = r8; +__label__ = 51; +} +else{ +__label__ = 30; +} +} +else{ + r9 = heap32[(r4+1)]; + r8 = r2; + r5 = r7; +__label__ = 32; +} +} +else{ + r8 = r2; +__label__ = 30; +} +if (__label__ == 30){ + r9 = r8 >> 2; + r9 = heap32[(r9+1)]; + if(r5 ==0) //_LBB864_38 +{ + r5 = 0; +__label__ = 33; +} +else{ +__label__ = 32; +} +} +if (__label__ == 32){ + r7 = r5 >> 2; + heap32[(r7+1)] = r9; +__label__ = 33; +} +if (__label__ == 33){ + r7 = r1 >> 2; + r10 = heap32[(r7+1)]; + if(r10 !=r2) //_LBB864_42 +{ + r10 = heap32[(r4+1)]; + r11 = r10 >> 2; + r11 = heap32[(r11+2)]; + r11 = r11 != r2; + r11 = r11 & 1; + r11 = r11 << 2; + r10 = (r10 + r11)|0; + r10 = (r10 + 8)|0; + r10 = r10 >> 2; + heap32[(r10)] = r5; +} +else{ + heap32[(r7+1)] = r5; +} + r10 = heap32[(r7+2)]; +if(!(r10 !=r2)) //_LBB864_51 +{ + r10 = heap32[(r4+3)]; + if(r10 !=0) //_LBB864_46 +{ + r10 = r5 >> 2; + r10 = heap32[(r10+2)]; +_57: do { + if(r10 ==0) //_LBB864_48 +{ + r11 = r5; +} +else{ +_59: while(true){ + r11 = r10; + r10 = r11 >> 2; + r10 = heap32[(r10+2)]; +if(!(r10 !=0)) //_LBB864_49 +{ +break _57; +} +} +} +} while(0); + heap32[(r7+2)] = r11; +} +else{ + r10 = heap32[(r4+1)]; + heap32[(r7+2)] = r10; +} +} + r10 = heap32[(r7+3)]; + if(r10 ==r2) //_LBB864_53 +{ + r2 = heap32[(r4+2)]; + if(r2 !=0) //_LBB864_55 +{ + r2 = r5 >> 2; + r2 = heap32[(r2+3)]; +_68: do { + if(r2 ==0) //_LBB864_57 +{ + r4 = r5; +} +else{ +_70: while(true){ + r4 = r2; + r2 = r4 >> 2; + r2 = heap32[(r2+3)]; +if(!(r2 !=0)) //_LBB864_58 +{ +break _68; +} +} +} +} while(0); + heap32[(r7+3)] = r4; + r2 = r8; +} +else{ + r2 = heap32[(r4+1)]; + heap32[(r7+3)] = r2; + r2 = r8; +} +} +else{ + r2 = r8; +} +} + r4 = r2 >> 2; + r7 = heap32[(r4)]; +_76: do { +if(!(r7 ==0)) //_LBB864_141 +{ +_77: while(true){ + r7 = r1 >> 2; + r8 = heap32[(r7+1)]; + if(r8 ==r5) //_LBB864_139 +{ +__label__ = 125; +break _77; +} +else{ +if(!(r5 ==0)) //_LBB864_62 +{ + r8 = r5 >> 2; + r8 = heap32[(r8)]; +if(!(r8 ==1)) //_LBB864_62 +{ +__label__ = 126; +break _77; +} +} + r8 = r9 >> 2; + r10 = heap32[(r8+2)]; + if(r10 !=r5) //_LBB864_100 +{ + r11 = r10 >> 2; + r12 = heap32[(r11)]; + if(r12 ==0) //_LBB864_102 +{ + heap32[(r11)] = 1; + heap32[(r8)] = 0; + r10 = heap32[(r8+2)]; + r11 = r10 >> 2; + r12 = heap32[(r11+3)]; + heap32[(r8+2)] = r12; + r12 = heap32[(r11+3)]; +if(!(r12 ==0)) //_LBB864_104 +{ + r12 = r12 >> 2; + heap32[(r12+1)] = r9; +} + r12 = heap32[(r8+1)]; + heap32[(r11+1)] = r12; + r12 = heap32[(r7+1)]; + if(r12 !=r9) //_LBB864_106 +{ + r12 = heap32[(r8+1)]; + r12 = r12 >> 2; + r13 = heap32[(r12+3)]; + if(r13 !=r9) //_LBB864_108 +{ + heap32[(r12+2)] = r10; +} +else{ + heap32[(r12+3)] = r10; +} +} +else{ + heap32[(r7+1)] = r10; +} + heap32[(r11+3)] = r9; + heap32[(r8+1)] = r10; + r10 = heap32[(r8+2)]; +} + r11 = r10 >> 2; + r12 = heap32[(r11+3)]; +if(!(r12 ==0)) //_LBB864_112 +{ + r12 = r12 >> 2; + r13 = heap32[(r12)]; + if(r13 !=1) //_LBB864_116 +{ +__label__ = 102; +break _77; +} +} + r12 = heap32[(r11+2)]; +if(!(r12 ==0)) //_LBB864_115 +{ + r12 = r12 >> 2; + r12 = heap32[(r12)]; +if(!(r12 ==1)) //_LBB864_115 +{ +__label__ = 112; +break _77; +} +} + heap32[(r11)] = 0; +} +else{ + r10 = heap32[(r8+3)]; + r11 = r10 >> 2; + r12 = heap32[(r11)]; + if(r12 ==0) //_LBB864_65 +{ + heap32[(r11)] = 1; + heap32[(r8)] = 0; + r10 = heap32[(r8+3)]; + r11 = r10 >> 2; + r12 = heap32[(r11+2)]; + heap32[(r8+3)] = r12; + r12 = heap32[(r11+2)]; +if(!(r12 ==0)) //_LBB864_67 +{ + r12 = r12 >> 2; + heap32[(r12+1)] = r9; +} + r12 = heap32[(r8+1)]; + heap32[(r11+1)] = r12; + r12 = heap32[(r7+1)]; + if(r12 !=r9) //_LBB864_69 +{ + r12 = heap32[(r8+1)]; + r12 = r12 >> 2; + r13 = heap32[(r12+2)]; + if(r13 !=r9) //_LBB864_71 +{ + heap32[(r12+3)] = r10; +} +else{ + heap32[(r12+2)] = r10; +} +} +else{ + heap32[(r7+1)] = r10; +} + heap32[(r11+2)] = r9; + heap32[(r8+1)] = r10; + r10 = heap32[(r8+3)]; +} + r11 = r10 >> 2; + r12 = heap32[(r11+2)]; +if(!(r12 ==0)) //_LBB864_75 +{ + r12 = r12 >> 2; + r13 = heap32[(r12)]; + if(r13 !=1) //_LBB864_80 +{ +__label__ = 68; +break _77; +} +} + r12 = heap32[(r11+3)]; +if(!(r12 ==0)) //_LBB864_78 +{ + r12 = r12 >> 2; + r12 = heap32[(r12)]; +if(!(r12 ==1)) //_LBB864_78 +{ +__label__ = 78; +break _77; +} +} + heap32[(r11)] = 0; +} + r10 = heap32[(r8+1)]; + r5 = r9; + r9 = r10; +} +} +_125: do { +switch(__label__ ){//multiple entries +case 102: + r1 = heap32[(r11+2)]; +if(!(r1 ==0)) //_LBB864_118 +{ + r1 = r1 >> 2; + r1 = heap32[(r1)]; + if(r1 !=1) //_LBB864_114 +{ +__label__ = 112; +break _125; +} +} + heap32[(r12)] = 1; + r1 = heap32[(r11+3)]; + r12 = r1 >> 2; + heap32[(r11)] = 0; + r13 = heap32[(r12+2)]; + heap32[(r11+3)] = r13; + r13 = heap32[(r12+2)]; +if(!(r13 ==0)) //_LBB864_120 +{ + r13 = r13 >> 2; + heap32[(r13+1)] = r10; +} + r13 = heap32[(r11+1)]; + heap32[(r12+1)] = r13; + r13 = heap32[(r7+1)]; + if(r13 !=r10) //_LBB864_122 +{ + r13 = heap32[(r11+1)]; + r13 = r13 >> 2; + r14 = heap32[(r13+2)]; + if(r14 !=r10) //_LBB864_124 +{ + heap32[(r13+3)] = r1; +} +else{ + heap32[(r13+2)] = r1; +} +} +else{ + heap32[(r7+1)] = r1; +} + heap32[(r12+2)] = r10; + heap32[(r11+1)] = r1; + r10 = heap32[(r8+2)]; +__label__ = 112; +break _125; +break; +case 68: + r1 = heap32[(r11+3)]; +if(!(r1 ==0)) //_LBB864_82 +{ + r1 = r1 >> 2; + r1 = heap32[(r1)]; + if(r1 !=1) //_LBB864_77 +{ +__label__ = 78; +break _125; +} +} + heap32[(r12)] = 1; + r1 = heap32[(r11+2)]; + r12 = r1 >> 2; + heap32[(r11)] = 0; + r13 = heap32[(r12+3)]; + heap32[(r11+2)] = r13; + r13 = heap32[(r12+3)]; +if(!(r13 ==0)) //_LBB864_84 +{ + r13 = r13 >> 2; + heap32[(r13+1)] = r10; +} + r13 = heap32[(r11+1)]; + heap32[(r12+1)] = r13; + r13 = heap32[(r7+1)]; + if(r13 !=r10) //_LBB864_86 +{ + r13 = heap32[(r11+1)]; + r13 = r13 >> 2; + r14 = heap32[(r13+3)]; + if(r14 !=r10) //_LBB864_88 +{ + heap32[(r13+2)] = r1; +} +else{ + heap32[(r13+3)] = r1; +} +} +else{ + heap32[(r7+1)] = r1; +} + heap32[(r12+3)] = r10; + heap32[(r11+1)] = r1; + r10 = heap32[(r8+3)]; +__label__ = 78; +break; +} +} while(0); +_154: do { +switch(__label__ ){//multiple entries +case 112: + r1 = r10 >> 2; + r10 = heap32[(r8)]; + heap32[(r1)] = r10; + heap32[(r8)] = 1; + r1 = heap32[(r1+2)]; +if(!(r1 ==0)) //_LBB864_128 +{ + r1 = r1 >> 2; + heap32[(r1)] = 1; +} + r1 = heap32[(r8+2)]; + r10 = r1 >> 2; + r11 = heap32[(r10+3)]; + heap32[(r8+2)] = r11; + r11 = heap32[(r10+3)]; +if(!(r11 ==0)) //_LBB864_130 +{ + r11 = r11 >> 2; + heap32[(r11+1)] = r9; +} + r11 = heap32[(r8+1)]; + heap32[(r10+1)] = r11; + r11 = heap32[(r7+1)]; + if(r11 !=r9) //_LBB864_132 +{ + r7 = heap32[(r8+1)]; + r7 = r7 >> 2; + r11 = heap32[(r7+3)]; + if(r11 !=r9) //_LBB864_134 +{ + heap32[(r7+2)] = r1; +} +else{ + heap32[(r7+3)] = r1; +} +} +else{ + heap32[(r7+1)] = r1; +} + heap32[(r10+3)] = r9; + heap32[(r8+1)] = r1; +__label__ = 125; +break _154; +break; +case 78: + r1 = r10 >> 2; + r10 = heap32[(r8)]; + heap32[(r1)] = r10; + heap32[(r8)] = 1; + r1 = heap32[(r1+3)]; +if(!(r1 ==0)) //_LBB864_92 +{ + r1 = r1 >> 2; + heap32[(r1)] = 1; +} + r1 = heap32[(r8+3)]; + r10 = r1 >> 2; + r11 = heap32[(r10+2)]; + heap32[(r8+3)] = r11; + r11 = heap32[(r10+2)]; +if(!(r11 ==0)) //_LBB864_94 +{ + r11 = r11 >> 2; + heap32[(r11+1)] = r9; +} + r11 = heap32[(r8+1)]; + heap32[(r10+1)] = r11; + r11 = heap32[(r7+1)]; + if(r11 !=r9) //_LBB864_96 +{ + r7 = heap32[(r8+1)]; + r7 = r7 >> 2; + r11 = heap32[(r7+2)]; + if(r11 !=r9) //_LBB864_98 +{ + heap32[(r7+3)] = r1; +} +else{ + heap32[(r7+2)] = r1; +} +} +else{ + heap32[(r7+1)] = r1; +} + heap32[(r10+2)] = r9; + heap32[(r8+1)] = r1; +__label__ = 125; +break; +} +} while(0); +if (__label__ == 125){ + if(r5 ==0) //_LBB864_141 +{ +break _76; +} +} + r1 = r5 >> 2; + heap32[(r1)] = 1; +} +} while(0); + r1 = heap32[(r0+75)]; + heap32[(r4+3)] = r1; + heap32[(r0+75)] = r2; + r1 = heap32[(r0+79)]; + r1 = (r1 + -1)|0; + r2 = r3 >> 2; + heap32[(r0+79)] = r1; + heap32[(r2)] = r6; + return; +} +else{ + r0 = r3 >> 2; + heap32[(r0)] = r1; + return; +} +} + +function _ZN4__rw9__rb_treeIjSt4pairIKjPN5my_gl12TIndexBufferEENS_11__select1stIS6_jEESt4lessIjESaIS6_EE11_C_get_linkEv(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; + var r5; + var r6; +var __label__ = 0; + i7 = sp + -8;var g0 = i7>>2; // save stack + r0 = _ZN5my_glL9m_contextE; + r0 = r0 >> 2; + r1 = heap32[(r0+75)]; + if(r1 ==0) //_LBB865_2 +{ + r1 = heap32[(r0+76)]; + r2 = heap32[(r0+77)]; + if(r1 !=r2) //_LBB865_11 +{ + r2 = (r1 + 24)|0; + heap32[(r0+76)] = r2; +} +else{ + r1 = heap32[(r0+74)]; + if(r1 !=0) //_LBB865_5 +{ + r1 = r1 >> 2; + r1 = heap32[(r1+1)]; +} +else{ + r1 = 0; +} + heap32[(g0)] = 12; + _Znwj(i7); + r2 = r_g0; +if(!(r2 !=0)) //_LBB865_8 +{ + heap32[(g0)] = 3; + _ZN4__rw10__rw_throwEiz(i7); +} + r3 = r1 & 1023; + r3 = (r3 * 1656)|0; + r4 = r1 >>> 10; + r3 = r3 >>> 10; + r4 = (r4 * 1656)|0; + r5 = (r1 + 32)|0; + r3 = (r3 + r4)|0; + r3 = uint(r5) > uint(r3) ? r5 : r3; + r4 = (r1 + 1)|0; + r3 = uint(r3) > uint(r1) ? r3 : r4; + r4 = (r3 * 24)|0; + heap32[(g0)] = r4; + _Znwj(i7); + r1 = r_g0; +if(!(r1 !=0)) //_LBB865_10 +{ + heap32[(g0)] = 3; + _ZN4__rw10__rw_throwEiz(i7); +} + r5 = r2 >> 2; + heap32[(r5+2)] = r1; + r6 = heap32[(r0+74)]; + heap32[(r5)] = r6; + heap32[(r5+1)] = r3; + r3 = (r1 + r4)|0; + heap32[(r0+74)] = r2; + r2 = (r1 + 24)|0; + heap32[(r0+77)] = r3; + heap32[(r0+76)] = r2; +} +} +else{ + r2 = r1 >> 2; + r2 = heap32[(r2+3)]; + heap32[(r0+75)] = r2; +} + r0 = r1 >> 2; + heap32[(r0+1)] = 0; + heap32[(r0+2)] = 0; + heap32[(r0+3)] = 0; + heap32[(r0)] = 0; + r_g0 = r1; + return; +} + +function _ZN4__rw9__rb_treeISsSt4pairIKSsiENS_11__select1stIS3_SsEESt4lessISsESaIS3_EED2Ev(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; + var r4; +var __label__ = 0; + i7 = sp + -32;var g0 = i7>>2; // save stack + r0 = heap32[(fp)]; + r1 = r0 >> 2; + r2 = heap32[(r1+4)]; +if(!(r2 ==0)) //_LBB866_3 +{ + r3 = r2 >> 2; + r3 = heap32[(r3+2)]; + heap32[(fp+-2)] = r3; + r3 = sp + -16; + r4 = sp + -8; + heap32[(g0)] = r3; + heap32[(g0+1)] = r0; + heap32[(g0+2)] = r4; + heap32[(g0+3)] = r2; + _ZN4__rw9__rb_treeISsSt4pairIKSsiENS_11__select1stIS3_SsEESt4lessISsESaIS3_EE5eraseENS_14__rw_tree_iterIS3_iPS3_RS3_NS_17__rw_rb_tree_nodeIS8_S3_SsS5_EEEESF_(i7); + r0 = heap32[(r1+4)]; + r2 = heap32[(r1+1)]; + r3 = r0 >> 2; + heap32[(r3+3)] = r2; + heap32[(r1+1)] = r0; + r0 = heap32[(r1)]; +if(!(r0 ==0)) //_LBB866_3 +{ +__label__ = 2; //SET chanka +_3: while(true){ + r2 = r0 >> 2; + r3 = heap32[(r2)]; + heap32[(r1)] = r3; + r2 = heap32[(r2+2)]; + heap32[(g0)] = r2; + _ZdlPv(i7); + heap32[(g0)] = r0; + _ZdlPv(i7); + r0 = heap32[(r1)]; + if(r0 !=0) //_LBB866_2 +{ +continue _3; +} +else{ +break _3; +} +} +} +} + return; +} + +function Mandreel_TextureAsync_Loaded(sp) +{ + var i7; + var fp = sp>>2; + var r0; + var r1; + var r2; + var r3; +var __label__ = 0; + i7 = sp + -40;var g0 = i7>>2; // save stack + r0 = 5; + r0 = heap32[(r0)]; + r1 = heap32[(fp)]; + heap32[(g0)] = 0; + heap32[(g0+1)] = 3553; + heap32[(g0+2)] = r1; + r2 = 100; + __FUNCTION_TABLE__[(r0)>>2](i7); + r0 = heap32[(r2)]; + r2 = heap32[(fp+1)]; + r3 = heap32[(fp+2)]; + heap32[(g0)] = 0; + heap32[(g0+1)] = 3553; + heap32[(g0+2)] = 0; + heap32[(g0+3)] = 6408; + heap32[(g0+4)] = r2; + heap32[(g0+5)] = r3; + heap32[(g0+6)] = 0; + heap32[(g0+7)] = 6408; + heap32[(g0+8)] = 5121; + heap32[(g0+9)] = 0; + __FUNCTION_TABLE__[(r0)>>2](i7); + heap32[(g0)] = r1; + Mandreel_TextureAsync_SetData(i7); + return; +} + +var _ZGVZN11btMatrix3x311getIdentityEvE14identityMatrix = Malloc(8); +var _ZGVZN11btTransform11getIdentityEvE17identityTransform = Malloc(8); +var Landscape02Vtx = Malloc(23760); +var _ZTIN16btCollisionWorld17RayResultCallbackE = Malloc(8); +var _ZTSN16btCollisionWorld17RayResultCallbackE = Malloc(40); +var _ZTVN16btCollisionWorld24ClosestRayResultCallbackE = Malloc(24); +var _ZTIN16btCollisionWorld24ClosestRayResultCallbackE = Malloc(12); +var _ZTSN16btCollisionWorld24ClosestRayResultCallbackE = Malloc(47); +var _ZTI13btMotionState = Malloc(8); +var _ZTS13btMotionState = Malloc(16); +var _ZTV20btDefaultMotionState = Malloc(24); +var _ZTI20btDefaultMotionState = Malloc(12); +var _ZTS20btDefaultMotionState = Malloc(23); +var _ZTI17btTypedConstraint = Malloc(24); +var _ZTS17btTypedConstraint = Malloc(20); +var _ZTI13btTypedObject = Malloc(8); +var _ZTS13btTypedObject = Malloc(16); +var _ZTV7RagDoll = Malloc(16); +var _ZTI7RagDoll = Malloc(8); +var _ZTS7RagDoll = Malloc(9); +var _ZTV13BenchmarkDemo = Malloc(36); +var _ZTI13BenchmarkDemo = Malloc(12); +var _ZTS13BenchmarkDemo = Malloc(16); +var _ZTI15DemoApplication = Malloc(8); +var _ZTS15DemoApplication = Malloc(18); +var _ZL10raycastBar = Malloc(40048); +var _2E_str3 = Malloc(48); +var _2E_str4 = Malloc(69); +var _2E_str5 = Malloc(61); +var _2E_str6 = Malloc(50); +var _2E_str7 = Malloc(27); +var _ZL7TaruVtx = Malloc(516); +var LandscapeVtx = Malloc(32); +var Landscape01Vtx = Malloc(24576); +var Landscape03Vtx = Malloc(24576); +var Landscape04Vtx = Malloc(25344); +var Landscape05Vtx = Malloc(26928); +var Landscape06Vtx = Malloc(27720); +var Landscape07Vtx = Malloc(26880); +var Landscape08Vtx = Malloc(26136); +var LandscapeVtxCount = Malloc(32); +var LandscapeIdx = Malloc(32); +var Landscape01Idx = Malloc(23436); +var Landscape02Idx = Malloc(22620); +var Landscape03Idx = Malloc(23436); +var Landscape04Idx = Malloc(24192); +var Landscape05Idx = Malloc(25740); +var Landscape06Idx = Malloc(26520); +var Landscape07Idx = Malloc(25704); +var Landscape08Idx = Malloc(24960); +var LandscapeIdxCount = Malloc(32); +var _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_0_2E_0_2E_0 = Malloc(4); +var _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_1_2E_0_2E_1 = Malloc(4); +var _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_2_2E_0_2E_2 = Malloc(4); +var _ZZN11btTransform11getIdentityEvE17identityTransform = Malloc(64); +var _ZTV14BenchmarkDemo4 = Malloc(36); +var _ZTI14BenchmarkDemo4 = Malloc(12); +var _ZTS14BenchmarkDemo4 = Malloc(17); +var _ZL14benchmarkDemo4 = Malloc(80); +var _ZTI21btBroadphaseInterface = Malloc(8); +var _ZTS21btBroadphaseInterface = Malloc(24); +var _ZTI25btOverlappingPairCallback = Malloc(8); +var _ZTS25btOverlappingPairCallback = Malloc(28); +var _ZTI22btOverlappingPairCache = Malloc(12); +var _ZTS22btOverlappingPairCache = Malloc(25); +var _ZTV15btNullPairCache = Malloc(76); +var _ZTI15btNullPairCache = Malloc(12); +var _ZTS15btNullPairCache = Malloc(18); +var _2E_str11 = Malloc(36); +var _2E_str112 = Malloc(67); +var _2E_str213 = Malloc(18); +var _2E_str314 = Malloc(18); +var _ZTV20btAxisSweep3InternalItE = Malloc(64); +var _ZTI20btAxisSweep3InternalItE = Malloc(12); +var _ZTS20btAxisSweep3InternalItE = Malloc(26); +var _ZTV12btAxisSweep3 = Malloc(64); +var _ZTI12btAxisSweep3 = Malloc(12); +var _ZTS12btAxisSweep3 = Malloc(15); +var _ZTV20btCollisionAlgorithm = Malloc(28); +var _ZTI20btCollisionAlgorithm = Malloc(8); +var _ZTS20btCollisionAlgorithm = Malloc(23); +var _ZTIN6btDbvt8ICollideE = Malloc(8); +var _ZTSN6btDbvt8ICollideE = Malloc(19); +var _2E_str1118 = Malloc(63); +var _2E_str22 = Malloc(16); +var _ZTV18btDbvtTreeCollider = Malloc(36); +var _ZTI18btDbvtTreeCollider = Malloc(12); +var _ZTS18btDbvtTreeCollider = Malloc(21); +var _ZTV19BroadphaseRayTester = Malloc(36); +var _ZTI19BroadphaseRayTester = Malloc(12); +var _ZTS19BroadphaseRayTester = Malloc(22); +var _ZTV20BroadphaseAabbTester = Malloc(36); +var _ZTI20BroadphaseAabbTester = Malloc(12); +var _ZTS20BroadphaseAabbTester = Malloc(23); +var _2E_str18 = Malloc(73); +var _ZTV16btDbvtBroadphase = Malloc(64); +var _ZTI16btDbvtBroadphase = Malloc(12); +var _ZTS16btDbvtBroadphase = Malloc(19); +var _ZTV12btDispatcher = Malloc(64); +var _ZTI12btDispatcher = Malloc(8); +var _ZTS12btDispatcher = Malloc(15); +var _ZTI21btNodeOverlapCallback = Malloc(8); +var _ZTS21btNodeOverlapCallback = Malloc(24); +var _2E_str10 = Malloc(2); +var _2E_str212 = Malloc(18); +var _2E_str313 = Malloc(69); +var _2E_str414 = Malloc(36); +var _2E_str515 = Malloc(36); +var _2E_str616 = Malloc(36); +var _2E_str717 = Malloc(36); +var _2E_str820 = Malloc(36); +var _2E_str9 = Malloc(36); +var gOverlappingPairs = Malloc(4); +var _ZTI17btOverlapCallback = Malloc(8); +var _ZTS17btOverlapCallback = Malloc(20); +var _ZTVZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback = Malloc(20); +var _ZTIZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback = Malloc(12); +var _ZTSZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback = Malloc(110); +var _ZTVZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback = Malloc(20); +var _ZTIZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback = Malloc(12); +var _ZTSZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback = Malloc(129); +var gRemovePairs = Malloc(4); +var _ZTV28btHashedOverlappingPairCache = Malloc(76); +var _ZTI28btHashedOverlappingPairCache = Malloc(12); +var _ZTS28btHashedOverlappingPairCache = Malloc(31); +var _2E_str121 = Malloc(79); +var gAddedPairs = Malloc(4); +var _2E_str222 = Malloc(38); +var _2E_str323 = Malloc(77); +var _2E_str424 = Malloc(38); +var _2E_str525 = Malloc(38); +var _2E_str626 = Malloc(42); +var _2E_str727 = Malloc(22); +var gFindPairs = Malloc(4); +var _2E_str32 = Malloc(23); +var _2E_str133 = Malloc(23); +var _2E_str234 = Malloc(21); +var _2E_str335 = Malloc(24); +var _ZTV14btQuantizedBvh = Malloc(36); +var _ZTI14btQuantizedBvh = Malloc(8); +var _ZTS14btQuantizedBvh = Malloc(17); +var _2E_str537 = Malloc(71); +var _2E_str638 = Malloc(48); +var _2E_str739 = Malloc(13); +var _2E_str941 = Malloc(14); +var _2E_str1143 = Malloc(29); +var maxIterations = Malloc(4); +var _2E_str1844 = Malloc(19); +var _2E_str1921 = Malloc(32); +var _2E_str21 = Malloc(7); +var _2E_str2246 = Malloc(13); +var _ZTV30btActivatingCollisionAlgorithm = Malloc(28); +var _ZTI30btActivatingCollisionAlgorithm = Malloc(12); +var _ZTS30btActivatingCollisionAlgorithm = Malloc(33); +var _2E_str59 = Malloc(14); +var _2E_str160 = Malloc(69); +var _ZTV26btBoxBoxCollisionAlgorithm = Malloc(28); +var _ZTI26btBoxBoxCollisionAlgorithm = Malloc(12); +var _ZTS26btBoxBoxCollisionAlgorithm = Malloc(29); +var _ZTI36btDiscreteCollisionDetectorInterface = Malloc(8); +var _ZTS36btDiscreteCollisionDetectorInterface = Malloc(39); +var _ZTV16btBoxBoxDetector = Malloc(20); +var _ZTI16btBoxBoxDetector = Malloc(12); +var _ZTS16btBoxBoxDetector = Malloc(19); +var _2E_str65 = Malloc(12); +var _2E_str166 = Malloc(71); +var gNumManifold = Malloc(4); +var _ZTIN36btDiscreteCollisionDetectorInterface6ResultE = Malloc(8); +var _ZTSN36btDiscreteCollisionDetectorInterface6ResultE = Malloc(48); +var _ZTV23btCollisionPairCallback = Malloc(20); +var _ZTI23btCollisionPairCallback = Malloc(12); +var _ZTS23btCollisionPairCallback = Malloc(26); +var _2E_str169 = Malloc(45); +var _2E_str270 = Malloc(26); +var _2E_str371 = Malloc(14); +var _2E_str472 = Malloc(34); +var _2E_str573 = Malloc(76); +var _ZTV21btCollisionDispatcher = Malloc(64); +var _ZTI21btCollisionDispatcher = Malloc(12); +var _ZTS21btCollisionDispatcher = Malloc(24); +var _2E_str674 = Malloc(23); +var _2E_str775 = Malloc(6); +var _2E_str876 = Malloc(6); +var _2E_str977 = Malloc(73); +var _ZTV17btCollisionObject = Malloc(36); +var _ZTI17btCollisionObject = Malloc(8); +var _ZTS17btCollisionObject = Malloc(20); +var _2E_str78 = Malloc(27); +var _ZTIN16btCollisionWorld20ConvexResultCallbackE = Malloc(8); +var _ZTSN16btCollisionWorld20ConvexResultCallbackE = Malloc(43); +var _ZTI30btConvexPenetrationDepthSolver = Malloc(8); +var _ZTS30btConvexPenetrationDepthSolver = Malloc(33); +var _ZTVN12btConvexCast10CastResultE = Malloc(24); +var _ZTIN12btConvexCast10CastResultE = Malloc(8); +var _ZTSN12btConvexCast10CastResultE = Malloc(29); +var _ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2 = Malloc(24); +var _ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2 = Malloc(12); +var _ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2 = Malloc(140); +var _ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder = Malloc(24); +var _ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder = Malloc(12); +var _ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder = Malloc(164); +var _ZTI24btBroadphaseAabbCallback = Malloc(8); +var _ZTS24btBroadphaseAabbCallback = Malloc(27); +var _ZTI23btBroadphaseRayCallback = Malloc(12); +var _ZTS23btBroadphaseRayCallback = Malloc(26); +var _ZTV17DebugDrawcallback = Malloc(44); +var _ZTI17DebugDrawcallback = Malloc(32); +var _ZTS17DebugDrawcallback = Malloc(20); +var _ZTI18btTriangleCallback = Malloc(8); +var _ZTS18btTriangleCallback = Malloc(21); +var _ZTI31btInternalTriangleIndexCallback = Malloc(8); +var _ZTS31btInternalTriangleIndexCallback = Malloc(34); +var _ZTV16btCollisionWorld = Malloc(56); +var _ZTI16btCollisionWorld = Malloc(8); +var _ZTS16btCollisionWorld = Malloc(19); +var _ZTI16btManifoldResult = Malloc(12); +var _ZTS16btManifoldResult = Malloc(19); +var _ZTV21btSingleSweepCallback = Malloc(20); +var _ZTI21btSingleSweepCallback = Malloc(12); +var _ZTS21btSingleSweepCallback = Malloc(24); +var _ZTV19btSingleRayCallback = Malloc(20); +var _ZTI19btSingleRayCallback = Malloc(12); +var _ZTS19btSingleRayCallback = Malloc(22); +var _2E_str382 = Malloc(23); +var _2E_str483 = Malloc(76); +var _2E_str584 = Malloc(19); +var _2E_str685 = Malloc(42); +var _2E_str786 = Malloc(16); +var _2E_str887 = Malloc(71); +var _2E_str988 = Malloc(82); +var _ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0 = Malloc(24); +var _ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0 = Malloc(12); +var _ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0 = Malloc(184); +var _ZTI28btTriangleConvexcastCallback = Malloc(12); +var _ZTS28btTriangleConvexcastCallback = Malloc(31); +var _ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback = Malloc(24); +var _ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback = Malloc(12); +var _ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback = Malloc(182); +var _ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0 = Malloc(24); +var _ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0 = Malloc(12); +var _ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0 = Malloc(156); +var _ZTI25btTriangleRaycastCallback = Malloc(12); +var _ZTS25btTriangleRaycastCallback = Malloc(28); +var _ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback = Malloc(24); +var _ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback = Malloc(12); +var _ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback = Malloc(154); +var _2E_str1089 = Malloc(16); +var _2E_str1190 = Malloc(34); +var _2E_str1291 = Malloc(26); +var _2E_str1392 = Malloc(26); +var _2E_str1493 = Malloc(20); +var _ZZN16btCollisionWorld16updateSingleAabbEP17btCollisionObjectE8reportMe_2E_b = Malloc(1); +var _2E_str1594 = Malloc(49); +var _2E_str1695 = Malloc(68); +var _2E_str1796 = Malloc(65); +var _2E_str1897 = Malloc(9); +var _2E_str1998 = Malloc(12); +var _ZTV22btCompoundLeafCallback = Malloc(36); +var _ZTI22btCompoundLeafCallback = Malloc(12); +var _ZTS22btCompoundLeafCallback = Malloc(25); +var _2E_str99 = Malloc(42); +var _2E_str1100 = Malloc(83); +var _2E_str2101 = Malloc(43); +var _2E_str3102 = Malloc(41); +var _2E_str4103 = Malloc(43); +var _2E_str5104 = Malloc(43); +var _2E_str6105 = Malloc(9); +var _2E_str7106 = Malloc(41); +var _ZTV28btCompoundCollisionAlgorithm = Malloc(28); +var _ZTI28btCompoundCollisionAlgorithm = Malloc(12); +var _ZTS28btCompoundCollisionAlgorithm = Malloc(31); +var _2E_str109 = Malloc(9); +var _ZTV24btConvexTriangleCallback = Malloc(20); +var _ZTI24btConvexTriangleCallback = Malloc(12); +var _ZTS24btConvexTriangleCallback = Malloc(27); +var _ZTVZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback = Malloc(20); +var _ZTIZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback = Malloc(12); +var _ZTSZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback = Malloc(158); +var _ZTV15btTriangleShape = Malloc(124); +var _ZTI15btTriangleShape = Malloc(12); +var _ZTS15btTriangleShape = Malloc(18); +var _ZTI23btPolyhedralConvexShape = Malloc(12); +var _ZTS23btPolyhedralConvexShape = Malloc(26); +var _ZTI21btConvexInternalShape = Malloc(12); +var _ZTS21btConvexInternalShape = Malloc(24); +var _ZTI13btConvexShape = Malloc(12); +var _ZTS13btConvexShape = Malloc(16); +var _ZTI16btCollisionShape = Malloc(8); +var _ZTS16btCollisionShape = Malloc(19); +var _2E_str1110 = Malloc(26); +var _2E_str3112 = Malloc(66); +var _ZTV33btConvexConcaveCollisionAlgorithm = Malloc(28); +var _ZTI33btConvexConcaveCollisionAlgorithm = Malloc(12); +var _ZTS33btConvexConcaveCollisionAlgorithm = Malloc(36); +var _ZTI30btCollisionAlgorithmCreateFunc = Malloc(8); +var _ZTS30btCollisionAlgorithmCreateFunc = Malloc(33); +var _ZTVN23btConvexConvexAlgorithm10CreateFuncE = Malloc(20); +var _ZTIN23btConvexConvexAlgorithm10CreateFuncE = Malloc(12); +var _ZTSN23btConvexConvexAlgorithm10CreateFuncE = Malloc(40); +var _ZTV24btPerturbedContactResult = Malloc(28); +var _ZTI24btPerturbedContactResult = Malloc(12); +var _ZTS24btPerturbedContactResult = Malloc(27); +var _2E_str115 = Malloc(19); +var _2E_str4119 = Malloc(49); +var _2E_str5120 = Malloc(78); +var _ZTV23btConvexConvexAlgorithm = Malloc(28); +var _ZTI23btConvexConvexAlgorithm = Malloc(12); +var _ZTS23btConvexConvexAlgorithm = Malloc(26); +var _ZTV31btConvexPlaneCollisionAlgorithm = Malloc(28); +var _ZTI31btConvexPlaneCollisionAlgorithm = Malloc(12); +var _ZTS31btConvexPlaneCollisionAlgorithm = Malloc(34); +var _ZTVN31btConvexPlaneCollisionAlgorithm10CreateFuncE = Malloc(20); +var _ZTIN31btConvexPlaneCollisionAlgorithm10CreateFuncE = Malloc(12); +var _ZTSN31btConvexPlaneCollisionAlgorithm10CreateFuncE = Malloc(48); +var _ZTI24btCollisionConfiguration = Malloc(8); +var _ZTS24btCollisionConfiguration = Malloc(27); +var _ZTVN33btConvexConcaveCollisionAlgorithm10CreateFuncE = Malloc(20); +var _ZTIN33btConvexConcaveCollisionAlgorithm10CreateFuncE = Malloc(12); +var _ZTSN33btConvexConcaveCollisionAlgorithm10CreateFuncE = Malloc(50); +var _ZTVN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE = Malloc(20); +var _ZTIN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE = Malloc(12); +var _ZTSN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE = Malloc(57); +var _ZTVN28btCompoundCollisionAlgorithm10CreateFuncE = Malloc(20); +var _ZTIN28btCompoundCollisionAlgorithm10CreateFuncE = Malloc(12); +var _ZTSN28btCompoundCollisionAlgorithm10CreateFuncE = Malloc(45); +var _ZTVN28btCompoundCollisionAlgorithm17SwappedCreateFuncE = Malloc(20); +var _ZTIN28btCompoundCollisionAlgorithm17SwappedCreateFuncE = Malloc(12); +var _ZTSN28btCompoundCollisionAlgorithm17SwappedCreateFuncE = Malloc(52); +var _ZTVN16btEmptyAlgorithm10CreateFuncE = Malloc(20); +var _ZTIN16btEmptyAlgorithm10CreateFuncE = Malloc(12); +var _ZTSN16btEmptyAlgorithm10CreateFuncE = Malloc(33); +var _ZTVN32btSphereSphereCollisionAlgorithm10CreateFuncE = Malloc(20); +var _ZTIN32btSphereSphereCollisionAlgorithm10CreateFuncE = Malloc(12); +var _ZTSN32btSphereSphereCollisionAlgorithm10CreateFuncE = Malloc(49); +var _ZTVN34btSphereTriangleCollisionAlgorithm10CreateFuncE = Malloc(20); +var _ZTIN34btSphereTriangleCollisionAlgorithm10CreateFuncE = Malloc(12); +var _ZTSN34btSphereTriangleCollisionAlgorithm10CreateFuncE = Malloc(51); +var _ZTVN26btBoxBoxCollisionAlgorithm10CreateFuncE = Malloc(20); +var _ZTIN26btBoxBoxCollisionAlgorithm10CreateFuncE = Malloc(12); +var _ZTSN26btBoxBoxCollisionAlgorithm10CreateFuncE = Malloc(43); +var _2E_str128 = Malloc(12); +var _2E_str1129 = Malloc(42); +var _ZTV31btDefaultCollisionConfiguration = Malloc(36); +var _ZTI31btDefaultCollisionConfiguration = Malloc(12); +var _ZTS31btDefaultCollisionConfiguration = Malloc(34); +var _ZTV16btEmptyAlgorithm = Malloc(28); +var _ZTI16btEmptyAlgorithm = Malloc(12); +var _ZTS16btEmptyAlgorithm = Malloc(19); +var _ZTV16btManifoldResult = Malloc(28); +var _2E_str2149 = Malloc(31); +var _2E_str3150 = Malloc(12); +var _2E_str5152 = Malloc(71); +var _2E_str155 = Malloc(28); +var _2E_str1156 = Malloc(73); +var _2E_str2157 = Malloc(80); +var _2E_str3158 = Malloc(15); +var _ZTV25btSimulationIslandManager = Malloc(24); +var _ZTI25btSimulationIslandManager = Malloc(8); +var _ZTS25btSimulationIslandManager = Malloc(28); +var _ZTV32btSphereSphereCollisionAlgorithm = Malloc(28); +var _ZTI32btSphereSphereCollisionAlgorithm = Malloc(12); +var _ZTS32btSphereSphereCollisionAlgorithm = Malloc(35); +var _ZTV34btSphereTriangleCollisionAlgorithm = Malloc(28); +var _ZTI34btSphereTriangleCollisionAlgorithm = Malloc(12); +var _ZTS34btSphereTriangleCollisionAlgorithm = Malloc(37); +var _ZTV22SphereTriangleDetector = Malloc(20); +var _ZTI22SphereTriangleDetector = Malloc(12); +var _ZTS22SphereTriangleDetector = Malloc(25); +var _2E_str173 = Malloc(4); +var _2E_str2175 = Malloc(61); +var _ZTV10btBoxShape = Malloc(124); +var _ZTI10btBoxShape = Malloc(12); +var _ZTS10btBoxShape = Malloc(13); +var _2E_str181 = Malloc(16); +var _ZTVZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback = Malloc(20); +var _ZTIZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback = Malloc(12); +var _ZTSZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback = Malloc(104); +var _ZTVZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback = Malloc(20); +var _ZTIZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback = Malloc(12); +var _ZTSZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback = Malloc(113); +var _ZTVZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback = Malloc(20); +var _ZTIZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback = Malloc(12); +var _ZTSZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback = Malloc(110); +var _2E_str5186 = Malloc(70); +var _2E_str6187 = Malloc(49); +var _2E_str7188 = Malloc(75); +var _2E_str8189 = Malloc(24); +var _ZTV22btBvhTriangleMeshShape = Malloc(88); +var _ZTI22btBvhTriangleMeshShape = Malloc(12); +var _ZTS22btBvhTriangleMeshShape = Malloc(25); +var _ZTI19btTriangleMeshShape = Malloc(12); +var _ZTS19btTriangleMeshShape = Malloc(22); +var _ZTI14btConcaveShape = Malloc(12); +var _ZTS14btConcaveShape = Malloc(17); +var _2E_str194 = Malloc(13); +var _2E_str4198 = Malloc(72); +var _2E_str6199 = Malloc(19); +var _ZTV14btCapsuleShape = Malloc(92); +var _ZTI14btCapsuleShape = Malloc(12); +var _ZTS14btCapsuleShape = Malloc(17); +var _2E_str200 = Malloc(21); +var _ZTV14btConcaveShape = Malloc(72); +var _2E_str219 = Malloc(7); +var _2E_str3222 = Malloc(70); +var _ZTV17btConvexHullShape = Malloc(120); +var _ZTI17btConvexHullShape = Malloc(12); +var _ZTS17btConvexHullShape = Malloc(20); +var _ZTI34btPolyhedralConvexAabbCachingShape = Malloc(12); +var _ZTS34btPolyhedralConvexAabbCachingShape = Malloc(37); +var _2E_str5223 = Malloc(19); +var _2E_str6224 = Malloc(22); +var _2E_str6232 = Malloc(19); +var _ZTV13btConvexShape = Malloc(92); +var _2E_str6249 = Malloc(13); +var _2E_str7250 = Malloc(66); +var _ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback = Malloc(20); +var _ZTIZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback = Malloc(12); +var _ZTSZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback = Malloc(91); +var _ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback = Malloc(20); +var _ZTIZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback = Malloc(12); +var _ZTSZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback = Malloc(100); +var _2E_str10306 = Malloc(67); +var _2E_str18314 = Malloc(36); +var _2E_str19315 = Malloc(48); +var _2E_str20316 = Malloc(17); +var _ZTV14btOptimizedBvh = Malloc(40); +var _ZTI14btOptimizedBvh = Malloc(12); +var _ZTS14btOptimizedBvh = Malloc(17); +var _2E_str7331 = Malloc(74); +var _ZGVZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions = Malloc(8); +var _ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions = Malloc(96); +var _2E_str342 = Malloc(7); +var _ZTV13btSphereShape = Malloc(92); +var _ZTI13btSphereShape = Malloc(12); +var _ZTS13btSphereShape = Malloc(16); +var _2E_str349 = Malloc(15); +var _2E_str1350 = Malloc(27); +var _2E_str3352 = Malloc(76); +var _2E_str5354 = Malloc(20); +var _2E_str6355 = Malloc(44); +var _2E_str7356 = Malloc(15); +var _2E_str8357 = Malloc(28); +var _2E_str9358 = Malloc(61); +var _ZTV23btStridingMeshInterface = Malloc(68); +var _ZTI23btStridingMeshInterface = Malloc(8); +var _ZTS23btStridingMeshInterface = Malloc(26); +var _ZTV31btInternalTriangleIndexCallback = Malloc(20); +var _ZTV18btTriangleCallback = Malloc(20); +var _2E_str367 = Malloc(26); +var _2E_str1368 = Malloc(79); +var _ZTV26btTriangleIndexVertexArray = Malloc(68); +var _ZTI26btTriangleIndexVertexArray = Malloc(12); +var _ZTS26btTriangleIndexVertexArray = Malloc(29); +var _2E_str372 = Malloc(13); +var _ZTV21SupportVertexCallback = Malloc(20); +var _ZTI21SupportVertexCallback = Malloc(12); +var _ZTS21SupportVertexCallback = Malloc(24); +var _ZTVZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback = Malloc(20); +var _ZTIZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback = Malloc(12); +var _ZTSZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback = Malloc(102); +var _2E_str3375 = Malloc(72); +var _ZTV19btTriangleMeshShape = Malloc(80); +var _ZTV16btPointCollector = Malloc(28); +var _ZTI16btPointCollector = Malloc(12); +var _ZTS16btPointCollector = Malloc(19); +var _ZTV27btContinuousConvexCollision = Malloc(20); +var _ZTI27btContinuousConvexCollision = Malloc(12); +var _ZTS27btContinuousConvexCollision = Malloc(30); +var _ZTI12btConvexCast = Malloc(8); +var _ZTS12btConvexCast = Malloc(15); +var _ZTV12btConvexCast = Malloc(20); +var _ZTV15btGjkConvexCast = Malloc(20); +var _ZTI15btGjkConvexCast = Malloc(12); +var _ZTS15btGjkConvexCast = Malloc(18); +var _ZZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRjE4imd3 = Malloc(12); +var _ZZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonEE4i2m3 = Malloc(12); +var _ZTV30btGjkEpaPenetrationDepthSolver = Malloc(20); +var _ZTI30btGjkEpaPenetrationDepthSolver = Malloc(12); +var _ZTS30btGjkEpaPenetrationDepthSolver = Malloc(33); +var gNumDeepPenetrationChecks = Malloc(4); +var _ZTV17btGjkPairDetector = Malloc(20); +var _ZTI17btGjkPairDetector = Malloc(12); +var _ZTS17btGjkPairDetector = Malloc(20); +var gNumGjkChecks = Malloc(4); +var _2E_str425 = Malloc(39); +var _2E_str1426 = Malloc(71); +var _2E_str2427 = Malloc(18); +var _2E_str3428 = Malloc(75); +var gContactBreakingThreshold = Malloc(4); +var _2E_str434 = Malloc(52); +var _2E_str3437 = Malloc(78); +var _2E_str4438 = Malloc(50); +var _ZTV28btTriangleConvexcastCallback = Malloc(24); +var _ZTV22btSubsimplexConvexCast = Malloc(20); +var _ZTI22btSubsimplexConvexCast = Malloc(12); +var _ZTS22btSubsimplexConvexCast = Malloc(25); +var _2E_str457 = Malloc(16); +var _2E_str1458 = Malloc(80); +var _ZTVN16btCollisionWorld27ClosestConvexResultCallbackE = Malloc(24); +var _ZTIN16btCollisionWorld27ClosestConvexResultCallbackE = Malloc(12); +var _ZTSN16btCollisionWorld27ClosestConvexResultCallbackE = Malloc(50); +var _2E_str36 = Malloc(51); +var _2E_str239 = Malloc(26); +var _ZTV21btConeTwistConstraint = Malloc(52); +var _ZTI21btConeTwistConstraint = Malloc(12); +var _ZTS21btConeTwistConstraint = Malloc(24); +var _2E_str1340 = Malloc(37); +var _2E_str24 = Malloc(74); +var _2E_str442 = Malloc(37); +var _2E_str543 = Malloc(37); +var _2E_str846 = Malloc(24); +var _2E_str947 = Malloc(66); +var _2E_str1149 = Malloc(30); +var _2E_str29 = Malloc(27); +var _ZTV17btHingeConstraint = Malloc(52); +var _ZTI17btHingeConstraint = Malloc(12); +var _ZTS17btHingeConstraint = Malloc(20); +var _2E_str130 = Malloc(34); +var _2E_str231 = Malloc(70); +var _2E_str332 = Malloc(34); +var _2E_str433 = Malloc(34); +var gNumSplitImpulseRecoveries = Malloc(4); +var _ZTI18btConstraintSolver = Malloc(8); +var _ZTS18btConstraintSolver = Malloc(21); +var _ZTV35btSequentialImpulseConstraintSolver = Malloc(48); +var _ZTI35btSequentialImpulseConstraintSolver = Malloc(12); +var _ZTS35btSequentialImpulseConstraintSolver = Malloc(38); +var _ZGVZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed = Malloc(8); +var _ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed = Malloc(608); +var _2E_str248 = Malloc(27); +var _2E_str34955 = Malloc(54); +var _2E_str450 = Malloc(11); +var _2E_str551 = Malloc(7); +var _2E_str652 = Malloc(88); +var _2E_str753 = Malloc(10); +var _2E_str854 = Malloc(34); +var _2E_str955 = Malloc(3); +var _2E_str1056 = Malloc(29); +var _2E_str1157 = Malloc(24); +var _2E_str76 = Malloc(22); +var _ZTI23btDiscreteDynamicsWorld = Malloc(12); +var _ZTS23btDiscreteDynamicsWorld = Malloc(26); +var _ZTI15btDynamicsWorld = Malloc(12); +var _ZTS15btDynamicsWorld = Malloc(18); +var _ZTIN25btSimulationIslandManager14IslandCallbackE = Malloc(8); +var _ZTSN25btSimulationIslandManager14IslandCallbackE = Malloc(46); +var _ZTV34btClosestNotMeConvexResultCallback = Malloc(24); +var _ZTI34btClosestNotMeConvexResultCallback = Malloc(12); +var _ZTS34btClosestNotMeConvexResultCallback = Malloc(37); +var _ZTVZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback = Malloc(20); +var _ZTIZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback = Malloc(12); +var _ZTSZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback = Malloc(99); +var _2E_str87 = Malloc(26); +var _2E_str188 = Malloc(27); +var _2E_str289 = Malloc(14); +var _2E_str794 = Malloc(20); +var _2E_str895 = Malloc(20); +var gNumClampedCcdMotions = Malloc(4); +var _2E_str996 = Malloc(17); +var _2E_str1097 = Malloc(22); +var _2E_str1198 = Malloc(29); +var _2E_str1299 = Malloc(15); +var _2E_str13100 = Malloc(5); +var _2E_str1461 = Malloc(68); +var _2E_str1562 = Malloc(24); +var _2E_str16101 = Malloc(15); +var _ZTV15btDynamicsWorld = Malloc(140); +var _ZTV23btDiscreteDynamicsWorld = Malloc(180); +var _ZL8uniqueId = Malloc(4); +var _ZTV11btRigidBody = Malloc(36); +var _ZTI11btRigidBody = Malloc(12); +var _ZTS11btRigidBody = Malloc(14); +var _2E_str4144 = Malloc(21); +var gDisableDeactivation = Malloc(1); +var gNumAlignedAllocs = Malloc(4); +var gNumAlignedFree = Malloc(4); +var _ZN15CProfileManager12FrameCounterE = Malloc(4); +var _ZN15CProfileManager4RootE = Malloc(32); +var _ZL13gProfileClock_2E_0 = Malloc(4); +var _ZN15CProfileManager11CurrentNodeE = Malloc(4); +var _2E_str729 = Malloc(5); +var _ZN4__rwL12__rw_catlistE_2E_0 = Malloc(4); +var _ZN4__rwL12__rw_catlistE_2E_1 = Malloc(4); +var _ZN4__rwL12__rw_catlistE_2E_2 = Malloc(4); +var llvm_2E_eh_2E_catch_2E_all_2E_value = Malloc(4); +var _ZTIN4__rw10__rw_facetE = Malloc(12); +var _ZTSN4__rw10__rw_facetE = Malloc(20); +var _ZTIN4__rw17__rw_synchronizedE = Malloc(8); +var _ZTSN4__rw17__rw_synchronizedE = Malloc(27); +var _2E_str4131 = Malloc(10); +var _2E_str15132 = Malloc(21); +var _2E_str26 = Malloc(1); +var _ZN4__rwL13__rw_what_bufE = Malloc(256); +var _ZN4__rwL16__rw_what_refcntE = Malloc(4); +var _2E_str3133 = Malloc(16); +var _2E_str47 = Malloc(25); +var _2E_str5134 = Malloc(18); +var _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E7__fname = Malloc(4); +var _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E6buffer = Malloc(11); +var _2E_str7136 = Malloc(3); +var _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E8__catset = Malloc(4); +var _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E4msgs = Malloc(32); +var _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E5__cat = Malloc(4); +var _ZZN4__rw10__rw_throwEizE6errors = Malloc(100); +var _2E_str8137 = Malloc(26); +var _2E_str9138 = Malloc(18); +var _2E_str10139 = Malloc(29); +var _2E_str11140 = Malloc(33); +var _2E_str12141 = Malloc(17); +var _2E_str138142 = Malloc(20); +var _2E_str14143 = Malloc(21); +var _2E_str159144 = Malloc(25); +var _2E_str16145 = Malloc(51); +var _2E_str17146 = Malloc(47); +var _2E_str18147 = Malloc(22); +var _2E_str19148 = Malloc(44); +var _2E_str20149 = Malloc(23); +var _2E_str21150 = Malloc(24); +var _2E_str22151 = Malloc(39); +var _2E_str23152 = Malloc(38); +var _2E_str24153 = Malloc(38); +var _2E_str25154 = Malloc(29); +var _2E_str2610 = Malloc(44); +var _2E_str27 = Malloc(30); +var _2E_str28155 = Malloc(40); +var _2E_str29156 = Malloc(26); +var _2E_str30 = Malloc(27); +var _2E_str31 = Malloc(30); +var _2E_str32157 = Malloc(32); +var _2E_str33 = Malloc(11); +var _2E_str134 = Malloc(9); +var _2E_str235 = Malloc(12); +var _2E_str336 = Malloc(11); +var _2E_str437 = Malloc(8); +var _ZTVN4__rw10__rw_facetE = Malloc(16); +var _2E_str538 = Malloc(2); +var _ZZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_EE12n_std_facets = Malloc(4); +var _ZZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_EE10std_facets = Malloc(4); +var _ZZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_EE13std_facet_buf = Malloc(1664); +var _ZZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_EE17std_facet_bufsize = Malloc(4); +var _ZZN4__rw10__rw_facetD4EvE9destroyed = Malloc(24); +var _ZN4__rw9__rw_catsE = Malloc(72); +var _2E_str785 = Malloc(2); +var _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE6global = Malloc(4); +var _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE5ginit = Malloc(4); +var _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE9n_locales = Malloc(4); +var _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE7locales = Malloc(4); +var _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE10locale_buf = Malloc(32); +var _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE14locale_bufsize = Malloc(4); +var _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE7classic = Malloc(4); +var _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE12classic_body = Malloc(172); +var _ZN4__rwL22__rw_classic_once_initE_2E_0_2E_b = Malloc(1); +var _ZN4__rwL12__rw_classicE = Malloc(4); +var _2E_str292167 = Malloc(4); +var _2E_str10100175 = Malloc(29); +var _2E_str12102177 = Malloc(33); +var _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE4init_2E_b = Malloc(1); +var _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE8catalogs = Malloc(4); +var _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE11catalog_buf = Malloc(64); +var _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE15catalog_bufsize = Malloc(4); +var _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE10n_catalogs = Malloc(4); +var _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE11largest_cat = Malloc(4); +var _2E_str115180 = Malloc(27); +var _2E_str1116181 = Malloc(25); +var _2E_str2131 = Malloc(2); +var _2E_str4133 = Malloc(2); +var _ZZN4__rw16__rw_locale_nameEiPKcRNS_14__rw_pod_arrayIcLj256EEEE11locale_root = Malloc(259); +var _ZNSs11_C_null_refE = Malloc(16); +var _ZTVSt8messagesIcE = Malloc(28); +var _ZTISt8messagesIcE = Malloc(32); +var _ZTSSt8messagesIcE = Malloc(15); +var _ZTISt13messages_base = Malloc(8); +var _ZTSSt13messages_base = Malloc(18); +var _2E_str2360 = Malloc(31); +var _2E_str3361 = Malloc(48); +var _2E_str4362 = Malloc(31); +var _ZTVSt9type_info = Malloc(24); +var _ZTISt9type_info = Malloc(8); +var _ZTSSt9type_info = Malloc(13); +var s_max_memory = Malloc(4); +var s_current_memory = Malloc(4); +var block_null = Malloc(16); +var _2E_str643 = Malloc(57); +var _2E_str1648 = Malloc(3); +var _2E_str4651 = Malloc(4); +var _2E_str5652 = Malloc(4); +var my_ctype = Malloc(1028); +var _ZL8nextRand = Malloc(4); +var _2E_str7654 = Malloc(4); +var _2E_str9655 = Malloc(4); +var _ZL8pad_line = Malloc(64); +var _ZL10strtok_pos = Malloc(4); +var _ZTI14CFileInterface = Malloc(8); +var _ZTS14CFileInterface = Malloc(17); +var _ZTV11CFileSystem = Malloc(44); +var _ZTI11CFileSystem = Malloc(12); +var _ZTS11CFileSystem = Malloc(14); +var _ZL13s_file_stdout = Malloc(4); +var _ZTV7CFileLS = Malloc(44); +var _ZTI7CFileLS = Malloc(12); +var _ZTS7CFileLS = Malloc(9); +var _ZTV10CFileCloud = Malloc(44); +var _ZTI10CFileCloud = Malloc(12); +var _ZTS10CFileCloud = Malloc(13); +var _ZL10s_aSockets = Malloc(262336); +var _ZTV11CFileStdout = Malloc(44); +var _ZTI11CFileStdout = Malloc(12); +var _ZTS11CFileStdout = Malloc(14); +var _2E_str31677 = Malloc(4); +var _2E_str32678 = Malloc(4); +var _2E_str33679 = Malloc(5); +var _2E_str34680 = Malloc(8); +var _2E_str35681 = Malloc(53); +var _2E_str37683 = Malloc(4); +var _2E_str38684 = Malloc(7); +var _ZN12mandreel_b64L9b64_charsE = Malloc(65); +var _ZN12mandreel_b64L11b64_indexesE = Malloc(256); +var _ZL25s_mandreel_internal_width = Malloc(4); +var _ZL26s_mandreel_internal_height = Malloc(4); +var g_msgcallback = Malloc(4); +var _ZL24g_pFirstTextureAsyncInfo = Malloc(4); +var _ZL17g_apPackFileNames = Malloc(1024); +var _ZGVZ21Mandreel_GetTickCountE7s_first = Malloc(8); +var _ZZ21Mandreel_GetTickCountE7s_first = Malloc(8); +var _ZZ29__mandreel_internal_preupdateE8s_bfirst_2E_b = Malloc(1); +var _2E_str779 = Malloc(13); +var _2E_str3782 = Malloc(13); +var _2E_str4783 = Malloc(37); +var _2E_str5784 = Malloc(12); +var _2E_str6785 = Malloc(17); +var _ZZ24__mandreel_internal_initE54s_723478567_mandreel___mandreel_internal_SetResolution = Malloc(4); +var _ZZ24__mandreel_internal_initE56s_723478567_mandreel_iMandreel_TextureAsync_IsCompressed = Malloc(4); +var _ZZ24__mandreel_internal_initE57s_723478567_mandreel_iMandreel_TextureAsync_GetPackOffset = Malloc(4); +var _ZZ24__mandreel_internal_initE29s_723478567_mandreel___resize = Malloc(4); +var _ZZ24__mandreel_internal_initE48s_723478567_mandreel_imandreel_restore_glcontext = Malloc(4); +var _ZZ24__mandreel_internal_initE46s_723478567_mandreel_imandreel_viewport_resize = Malloc(4); +var _ZTVN10__cxxabiv120__si_class_type_infoE = Malloc(40); +var _ZTIN10__cxxabiv120__si_class_type_infoE = Malloc(12); +var _ZTSN10__cxxabiv120__si_class_type_infoE = Malloc(37); +var _ZTIN10__cxxabiv117__class_type_infoE = Malloc(12); +var _ZTSN10__cxxabiv117__class_type_infoE = Malloc(34); +var _ZTVN10__cxxabiv117__class_type_infoE = Malloc(40); +var _ZTVN10__cxxabiv121__vmi_class_type_infoE = Malloc(40); +var _ZTIN10__cxxabiv121__vmi_class_type_infoE = Malloc(12); +var _ZTSN10__cxxabiv121__vmi_class_type_infoE = Malloc(38); +var _ZL11g_aChannels = Malloc(9344); +var _ZL7g_bInit_2E_b = Malloc(1); +var _2E_str221 = Malloc(8); +var _2E_str1222 = Malloc(21); +var _ZL21g_pFirstSoundDuration = Malloc(4); +var _2E_str3224 = Malloc(71); +var _2E_str4225 = Malloc(8); +var _ZL15g_iFreeChannels = Malloc(4); +var _ZL15g_aFreeChannels = Malloc(128); +var _ZL6g_bLog = Malloc(1); +var _2E_str12233 = Malloc(5); +var _2E_str22243 = Malloc(21); +var _2E_str24245 = Malloc(86); +var _2E_str26247 = Malloc(8); +var _2E_str27248 = Malloc(4); +var _2E_str28249 = Malloc(60); +var _2E_str29250 = Malloc(10); +var _2E_str30251 = Malloc(3); +var _2E_str31252 = Malloc(75); +var _2E_str32253 = Malloc(5); +var _2E_str33254 = Malloc(4); +var _2E_str34255 = Malloc(9); +var _2E_str35256 = Malloc(22); +var _ZZL32_mandreel_init_tcp_socket_librayvE47s_723478567_mandreel_mandreel_flash_tcp_onError = Malloc(4); +var _ZL13s_fifo_errors = Malloc(24); +var _ZN5my_glL9m_contextE = Malloc(324); +var llvm_2E_global_ctors = Malloc(40); +var llvm_2E_global_dtors = Malloc(56); +var llvm_2E_used = Malloc(300); +function global_init(stackPos) +{ +initHeap(); +emit_start(Landscape02Vtx) +emit_32(3279552512); +emit_32(1077902238); +emit_32(1122144223); +emit_32(3279552512); +emit_32(1074513450); +emit_32(1122656322); +emit_32(3279296528); +emit_32(1070576131); +emit_32(1122144223); +emit_32(3279296528); +emit_32(1069684087); +emit_32(1122656322); +emit_32(3279040545); +emit_32(1062793197); +emit_32(1122144223); +emit_32(3279040545); +emit_32(1059117578); +emit_32(1122656322); +emit_32(3278784496); +emit_32(3207760682); +emit_32(1122144223); +emit_32(3278784496); +emit_32(3205587983); +emit_32(1122656322); +emit_32(3278528512); +emit_32(3223956593); +emit_32(1122144223); +emit_32(3278528512); +emit_32(3221291239); +emit_32(1122656322); +emit_32(3278272528); +emit_32(3228867536); +emit_32(1122144223); +emit_32(3278272528); +emit_32(3227143174); +emit_32(1122656322); +emit_32(3278016545); +emit_32(3229577925); +emit_32(1122144223); +emit_32(3278016545); +emit_32(3228890898); +emit_32(1122656322); +emit_32(3277760496); +emit_32(3232782164); +emit_32(1122144223); +emit_32(3277760496); +emit_32(3231744493); +emit_32(1122656322); +emit_32(3277504512); +emit_32(3233030424); +emit_32(1122144223); +emit_32(3277504512); +emit_32(3231183211); +emit_32(1122656322); +emit_32(3277248528); +emit_32(3231512296); +emit_32(1122144223); +emit_32(3277248528); +emit_32(3226713845); +emit_32(1122656322); +emit_32(3276992545); +emit_32(3225240260); +emit_32(1122144223); +emit_32(3276992545); +emit_32(3222588579); +emit_32(1122656322); +emit_32(3276736496); +emit_32(3223081116); +emit_32(1122144223); +emit_32(3276736496); +emit_32(3218835474); +emit_32(1122656322); +emit_32(3276480512); +emit_32(3217103310); +emit_32(1122144223); +emit_32(3276480512); +emit_32(3214447728); +emit_32(1122656322); +emit_32(3276224528); +emit_32(3188062822); +emit_32(1122144223); +emit_32(3276224528); +emit_32(1046529045); +emit_32(1122656322); +emit_32(3275968545); +emit_32(1065108554); +emit_32(1122144223); +emit_32(3275968545); +emit_32(1070915199); +emit_32(1122656322); +emit_32(3275712496); +emit_32(1078777673); +emit_32(1122144223); +emit_32(3275712496); +emit_32(1082866637); +emit_32(1122656322); +emit_32(3275456512); +emit_32(1083552091); +emit_32(1122144223); +emit_32(3275456512); +emit_32(1087021578); +emit_32(1122656322); +emit_32(3275200528); +emit_32(1086679197); +emit_32(1122144223); +emit_32(3275200528); +emit_32(1090529232); +emit_32(1122656322); +emit_32(3274944545); +emit_32(1090716539); +emit_32(1122144223); +emit_32(3274944545); +emit_32(1092317201); +emit_32(1122656322); +emit_32(3274688496); +emit_32(1091935477); +emit_32(1122144223); +emit_32(3274688496); +emit_32(1093426427); +emit_32(1122656322); +emit_32(3274432512); +emit_32(1092098877); +emit_32(1122144223); +emit_32(3274432512); +emit_32(1094040158); +emit_32(1122656322); +emit_32(3274176528); +emit_32(1094849764); +emit_32(1122144223); +emit_32(3274176528); +emit_32(1095262693); +emit_32(1122656322); +emit_32(3273920545); +emit_32(1097725693); +emit_32(1122144223); +emit_32(3273920545); +emit_32(1097468792); +emit_32(1122656322); +emit_32(3273664496); +emit_32(1099104833); +emit_32(1122144223); +emit_32(3273664496); +emit_32(1099540411); +emit_32(1122656322); +emit_32(3273408512); +emit_32(1100237609); +emit_32(1122144223); +emit_32(3273408512); +emit_32(1100993213); +emit_32(1122656322); +emit_32(3273152528); +emit_32(1102296436); +emit_32(1122144223); +emit_32(3273152528); +emit_32(1102819203); +emit_32(1122656322); +emit_32(3272896545); +emit_32(1104227022); +emit_32(1122144223); +emit_32(3272896545); +emit_32(1104470763); +emit_32(1122656322); +emit_32(3272640496); +emit_32(1105517399); +emit_32(1122144223); +emit_32(3272640496); +emit_32(1105442111); +emit_32(1122656322); +emit_32(3272384512); +emit_32(1106394218); +emit_32(1122144223); +emit_32(3272384512); +emit_32(1106127356); +emit_32(1122656322); +emit_32(3272128528); +emit_32(1107354688); +emit_32(1122144223); +emit_32(3272128528); +emit_32(1106807829); +emit_32(1122656322); +emit_32(3271872545); +emit_32(1107530062); +emit_32(1122144223); +emit_32(3271872545); +emit_32(1107212108); +emit_32(1122656322); +emit_32(3271616496); +emit_32(1107693221); +emit_32(1122144223); +emit_32(3271616496); +emit_32(1107339719); +emit_32(1122656322); +emit_32(3271163904); +emit_32(1108003075); +emit_32(1122144223); +emit_32(3271163904); +emit_32(1108016575); +emit_32(1122656322); +emit_32(3270651937); +emit_32(1108711703); +emit_32(1122144223); +emit_32(3270651937); +emit_32(1108361190); +emit_32(1122656322); +emit_32(3270139970); +emit_32(1108881283); +emit_32(1122144223); +emit_32(3270139970); +emit_32(1108677807); +emit_32(1122656322); +emit_32(3269627871); +emit_32(1108829956); +emit_32(1122144223); +emit_32(3269627871); +emit_32(1108698045); +emit_32(1122656322); +emit_32(3269115904); +emit_32(1108842486); +emit_32(1122144223); +emit_32(3269115904); +emit_32(1108670415); +emit_32(1122656322); +emit_32(3268603937); +emit_32(1108356995); +emit_32(1122144223); +emit_32(3268603937); +emit_32(1108385307); +emit_32(1122656322); +emit_32(3268091970); +emit_32(1107850324); +emit_32(1122144223); +emit_32(3268091970); +emit_32(1107664044); +emit_32(1122656322); +emit_32(3267579911); +emit_32(1107320504); +emit_32(1122144223); +emit_32(3267579911); +emit_32(1106926109); +emit_32(1122656322); +emit_32(3267067904); +emit_32(1106158866); +emit_32(1122144223); +emit_32(3267067904); +emit_32(1105983491); +emit_32(1122656322); +emit_32(3266555911); +emit_32(1106326271); +emit_32(1122144223); +emit_32(3266555911); +emit_32(1105752542); +emit_32(1122656322); +emit_32(3266043904); +emit_32(1105638300); +emit_32(1122144223); +emit_32(3266043904); +emit_32(1105343650); +emit_32(1122656322); +emit_32(3265531911); +emit_32(1104660451); +emit_32(1122144223); +emit_32(3265531911); +emit_32(1104481983); +emit_32(1122656322); +emit_32(3265019904); +emit_32(1103867255); +emit_32(1122144223); +emit_32(3265019904); +emit_32(1103536377); +emit_32(1122656322); +emit_32(3264507911); +emit_32(1102764940); +emit_32(1122144223); +emit_32(3264507911); +emit_32(1102421374); +emit_32(1122656322); +emit_32(3263995904); +emit_32(1101613761); +emit_32(1122144223); +emit_32(3263995904); +emit_32(1101252526); +emit_32(1122656322); +emit_32(3263483911); +emit_32(1100019768); +emit_32(1122144223); +emit_32(3263483911); +emit_32(1099947835); +emit_32(1122656322); +emit_32(3262775296); +emit_32(1099086483); +emit_32(1122144223); +emit_32(3262775296); +emit_32(1099066665); +emit_32(1122656322); +emit_32(3261751309); +emit_32(1097937715); +emit_32(1122144223); +emit_32(3261751309); +emit_32(1097029334); +emit_32(1122656322); +emit_32(3260727296); +emit_32(1097070753); +emit_32(1122144223); +emit_32(3260727296); +emit_32(1095561223); +emit_32(1122656322); +emit_32(3259703309); +emit_32(1096595014); +emit_32(1122144223); +emit_32(3259703309); +emit_32(1095286181); +emit_32(1122656322); +emit_32(3258679296); +emit_32(1095456365); +emit_32(1122144223); +emit_32(3258679296); +emit_32(1094900095); +emit_32(1122656322); +emit_32(3257655309); +emit_32(1093219752); +emit_32(1122144223); +emit_32(3257655309); +emit_32(1093810625); +emit_32(1122656322); +emit_32(3256631296); +emit_32(1092609303); +emit_32(1122144223); +emit_32(3256631296); +emit_32(1093100949); +emit_32(1122656322); +emit_32(3255607309); +emit_32(1093762915); +emit_32(1122144223); +emit_32(3255607309); +emit_32(1093720133); +emit_32(1122656322); +emit_32(3254386688); +emit_32(1094666473); +emit_32(1122144223); +emit_32(3254386688); +emit_32(1094140822); +emit_32(1122656322); +emit_32(3252338714); +emit_32(1094266021); +emit_32(1122144223); +emit_32(3252338714); +emit_32(1093200983); +emit_32(1122656322); +emit_32(3250290688); +emit_32(1093706396); +emit_32(1122144223); +emit_32(3250290688); +emit_32(1093279731); +emit_32(1122656322); +emit_32(3248242714); +emit_32(1095255038); +emit_32(1122144223); +emit_32(3248242714); +emit_32(1095297296); +emit_32(1122656322); +emit_32(3245998080); +emit_32(1096659501); +emit_32(1122144223); +emit_32(3245998080); +emit_32(1096326998); +emit_32(1122656322); +emit_32(3241902132); +emit_32(1097360998); +emit_32(1122144223); +emit_32(3241902132); +emit_32(1097208116); +emit_32(1122656322); +emit_32(3237609472); +emit_32(1097602590); +emit_32(1122144223); +emit_32(3237609472); +emit_32(1098363332); +emit_32(1122656322); +emit_32(3229220864); +emit_32(1098820406); +emit_32(1122144223); +emit_32(3229220864); +emit_32(1098960496); +emit_32(1122656322); +emit_32(0); +emit_32(1099470104); +emit_32(1122144223); +emit_32(0); +emit_32(1099624612); +emit_32(1122656322); +emit_32(1081737216); +emit_32(1100139620); +emit_32(1122144223); +emit_32(1081737216); +emit_32(1100438045); +emit_32(1122656322); +emit_32(3279552512); +emit_32(1083519019); +emit_32(1121632256); +emit_32(3279296528); +emit_32(1074813133); +emit_32(1121632256); +emit_32(3279040545); +emit_32(1064894426); +emit_32(1121632256); +emit_32(3278784496); +emit_32(3220842029); +emit_32(1121632256); +emit_32(3278528512); +emit_32(3224334626); +emit_32(1121632256); +emit_32(3278272528); +emit_32(3228042265); +emit_32(1121632256); +emit_32(3278016545); +emit_32(3230773910); +emit_32(1121632256); +emit_32(3277760496); +emit_32(3234673249); +emit_32(1121632256); +emit_32(3277504512); +emit_32(3235346205); +emit_32(1121632256); +emit_32(3277248528); +emit_32(3233634383); +emit_32(1121632256); +emit_32(3276992545); +emit_32(3231165889); +emit_32(1121632256); +emit_32(3276736496); +emit_32(3226724414); +emit_32(1121632256); +emit_32(3276480512); +emit_32(3221509175); +emit_32(1121632256); +emit_32(3276224528); +emit_32(3212320830); +emit_32(1121632256); +emit_32(3275968545); +emit_32(1049206085); +emit_32(1121632256); +emit_32(3275712496); +emit_32(1073305532); +emit_32(1121632256); +emit_32(3275456512); +emit_32(1077128892); +emit_32(1121632256); +emit_32(3275200528); +emit_32(1082594553); +emit_32(1121632256); +emit_32(3274944545); +emit_32(1084662177); +emit_32(1121632256); +emit_32(3274688496); +emit_32(1089411681); +emit_32(1121632256); +emit_32(3274432512); +emit_32(1092042275); +emit_32(1121632256); +emit_32(3274176528); +emit_32(1095387054); +emit_32(1121632256); +emit_32(3273920545); +emit_32(1097794270); +emit_32(1121632256); +emit_32(3273664496); +emit_32(1099325348); +emit_32(1121632256); +emit_32(3273408512); +emit_32(1100750678); +emit_32(1121632256); +emit_32(3273152528); +emit_32(1101739065); +emit_32(1121632256); +emit_32(3272896545); +emit_32(1103692248); +emit_32(1121632256); +emit_32(3272640496); +emit_32(1105414167); +emit_32(1121632256); +emit_32(3272384512); +emit_32(1106644671); +emit_32(1121632256); +emit_32(3272128528); +emit_32(1107563486); +emit_32(1121632256); +emit_32(3271872545); +emit_32(1107577274); +emit_32(1121632256); +emit_32(3271616496); +emit_32(1107593999); +emit_32(1121632256); +emit_32(3271163904); +emit_32(1108097080); +emit_32(1121632256); +emit_32(3270651937); +emit_32(1108460883); +emit_32(1121632256); +emit_32(3270139970); +emit_32(1108954710); +emit_32(1121632256); +emit_32(3269627871); +emit_32(1109009079); +emit_32(1121632256); +emit_32(3269115904); +emit_32(1108610279); +emit_32(1121632256); +emit_32(3268603937); +emit_32(1108058125); +emit_32(1121632256); +emit_32(3268091970); +emit_32(1107555412); +emit_32(1121632256); +emit_32(3267579911); +emit_32(1106717652); +emit_32(1121632256); +emit_32(3267067904); +emit_32(1106512341); +emit_32(1121632256); +emit_32(3266555911); +emit_32(1106506836); +emit_32(1121632256); +emit_32(3266043904); +emit_32(1105659534); +emit_32(1121632256); +emit_32(3265531911); +emit_32(1105302179); +emit_32(1121632256); +emit_32(3265019904); +emit_32(1104106698); +emit_32(1121632256); +emit_32(3264507911); +emit_32(1102757390); +emit_32(1121632256); +emit_32(3263995904); +emit_32(1101520647); +emit_32(1121632256); +emit_32(3263483911); +emit_32(1100159910); +emit_32(1121632256); +emit_32(3262775296); +emit_32(1099381290); +emit_32(1121632256); +emit_32(3261751309); +emit_32(1098131911); +emit_32(1121632256); +emit_32(3260727296); +emit_32(1097148452); +emit_32(1121632256); +emit_32(3259703309); +emit_32(1096156919); +emit_32(1121632256); +emit_32(3258679296); +emit_32(1095321308); +emit_32(1121632256); +emit_32(3257655309); +emit_32(1094008281); +emit_32(1121632256); +emit_32(3256631296); +emit_32(1093682489); +emit_32(1121632256); +emit_32(3255607309); +emit_32(1094449313); +emit_32(1121632256); +emit_32(3254386688); +emit_32(1095241512); +emit_32(1121632256); +emit_32(3252338714); +emit_32(1095115158); +emit_32(1121632256); +emit_32(3250290688); +emit_32(1095038088); +emit_32(1121632256); +emit_32(3248242714); +emit_32(1095359791); +emit_32(1121632256); +emit_32(3245998080); +emit_32(1096573937); +emit_32(1121632256); +emit_32(3241902132); +emit_32(1097191129); +emit_32(1121632256); +emit_32(3237609472); +emit_32(1097678717); +emit_32(1121632256); +emit_32(3229220864); +emit_32(1098487169); +emit_32(1121632256); +emit_32(0); +emit_32(1099111334); +emit_32(1121632256); +emit_32(1081737216); +emit_32(1099957115); +emit_32(1121632256); +emit_32(3279552512); +emit_32(1084728636); +emit_32(1121120289); +emit_32(3279296528); +emit_32(1077536872); +emit_32(1121120289); +emit_32(3279040545); +emit_32(1049067472); +emit_32(1121120289); +emit_32(3278784496); +emit_32(3197365821); +emit_32(1121120289); +emit_32(3278528512); +emit_32(3211331864); +emit_32(1121120289); +emit_32(3278272528); +emit_32(3222095455); +emit_32(1121120289); +emit_32(3278016545); +emit_32(3228342367); +emit_32(1121120289); +emit_32(3277760496); +emit_32(3232161071); +emit_32(1121120289); +emit_32(3277504512); +emit_32(3233959337); +emit_32(1121120289); +emit_32(3277248528); +emit_32(3232603256); +emit_32(1121120289); +emit_32(3276992545); +emit_32(3231337561); +emit_32(1121120289); +emit_32(3276736496); +emit_32(3226343236); +emit_32(1121120289); +emit_32(3276480512); +emit_32(3222401429); +emit_32(1121120289); +emit_32(3276224528); +emit_32(3217196088); +emit_32(1121120289); +emit_32(3275968545); +emit_32(3174963708); +emit_32(1121120289); +emit_32(3275712496); +emit_32(1071520772); +emit_32(1121120289); +emit_32(3275456512); +emit_32(1076782233); +emit_32(1121120289); +emit_32(3275200528); +emit_32(1082969209); +emit_32(1121120289); +emit_32(3274944545); +emit_32(1085234364); +emit_32(1121120289); +emit_32(3274688496); +emit_32(1089004246); +emit_32(1121120289); +emit_32(3274432512); +emit_32(1092733108); +emit_32(1121120289); +emit_32(3274176528); +emit_32(1095820326); +emit_32(1121120289); +emit_32(3273920545); +emit_32(1098604085); +emit_32(1121120289); +emit_32(3273664496); +emit_32(1099874855); +emit_32(1121120289); +emit_32(3273408512); +emit_32(1100920809); +emit_32(1121120289); +emit_32(3273152528); +emit_32(1101878893); +emit_32(1121120289); +emit_32(3272896545); +emit_32(1103179284); +emit_32(1121120289); +emit_32(3272640496); +emit_32(1105420196); +emit_32(1121120289); +emit_32(3272384512); +emit_32(1107134828); +emit_32(1121120289); +emit_32(3272128528); +emit_32(1107920526); +emit_32(1121120289); +emit_32(3271872545); +emit_32(1108056762); +emit_32(1121120289); +emit_32(3271616496); +emit_32(1107769583); +emit_32(1121120289); +emit_32(3271163904); +emit_32(1107905112); +emit_32(1121120289); +emit_32(3270651937); +emit_32(1108241573); +emit_32(1121120289); +emit_32(3270139970); +emit_32(1108859578); +emit_32(1121120289); +emit_32(3269627871); +emit_32(1109044049); +emit_32(1121120289); +emit_32(3269115904); +emit_32(1108576331); +emit_32(1121120289); +emit_32(3268603937); +emit_32(1107973793); +emit_32(1121120289); +emit_32(3268091970); +emit_32(1107354478); +emit_32(1121120289); +emit_32(3267579911); +emit_32(1106448273); +emit_32(1121120289); +emit_32(3267067904); +emit_32(1106470135); +emit_32(1121120289); +emit_32(3266555911); +emit_32(1106654580); +emit_32(1121120289); +emit_32(3266043904); +emit_32(1106160386); +emit_32(1121120289); +emit_32(3265531911); +emit_32(1105210009); +emit_32(1121120289); +emit_32(3265019904); +emit_32(1104004514); +emit_32(1121120289); +emit_32(3264507911); +emit_32(1102526231); +emit_32(1121120289); +emit_32(3263995904); +emit_32(1101481692); +emit_32(1121120289); +emit_32(3263483911); +emit_32(1100090337); +emit_32(1121120289); +emit_32(3262775296); +emit_32(1099268882); +emit_32(1121120289); +emit_32(3261751309); +emit_32(1098701288); +emit_32(1121120289); +emit_32(3260727296); +emit_32(1097681968); +emit_32(1121120289); +emit_32(3259703309); +emit_32(1096561774); +emit_32(1121120289); +emit_32(3258679296); +emit_32(1095766953); +emit_32(1121120289); +emit_32(3257655309); +emit_32(1094631765); +emit_32(1121120289); +emit_32(3256631296); +emit_32(1094735364); +emit_32(1121120289); +emit_32(3255607309); +emit_32(1094999291); +emit_32(1121120289); +emit_32(3254386688); +emit_32(1095377722); +emit_32(1121120289); +emit_32(3252338714); +emit_32(1095433191); +emit_32(1121120289); +emit_32(3250290688); +emit_32(1095107399); +emit_32(1121120289); +emit_32(3248242714); +emit_32(1095777544); +emit_32(1121120289); +emit_32(3245998080); +emit_32(1096857472); +emit_32(1121120289); +emit_32(3241902132); +emit_32(1097446352); +emit_32(1121120289); +emit_32(3237609472); +emit_32(1097974940); +emit_32(1121120289); +emit_32(3229220864); +emit_32(1098736416); +emit_32(1121120289); +emit_32(0); +emit_32(1099338613); +emit_32(1121120289); +emit_32(1081737216); +emit_32(1099935672); +emit_32(1121120289); +emit_32(3279552512); +emit_32(1082712497); +emit_32(1120608322); +emit_32(3279296528); +emit_32(1077291841); +emit_32(1120608322); +emit_32(3279040545); +emit_32(1073741866); +emit_32(1120608322); +emit_32(3278784496); +emit_32(1070338230); +emit_32(1120608322); +emit_32(3278528512); +emit_32(1056781669); +emit_32(1120608322); +emit_32(3278272528); +emit_32(3219431904); +emit_32(1120608322); +emit_32(3278016545); +emit_32(3224861095); +emit_32(1120608322); +emit_32(3277760496); +emit_32(3231719746); +emit_32(1120608322); +emit_32(3277504512); +emit_32(3233844476); +emit_32(1120608322); +emit_32(3277248528); +emit_32(3232334736); +emit_32(1120608322); +emit_32(3276992545); +emit_32(3229801544); +emit_32(1120608322); +emit_32(3276736496); +emit_32(3228638233); +emit_32(1120608322); +emit_32(3276480512); +emit_32(3223489306); +emit_32(1120608322); +emit_32(3276224528); +emit_32(3213418446); +emit_32(1120608322); +emit_32(3275968545); +emit_32(3202678964); +emit_32(1120608322); +emit_32(3275712496); +emit_32(1069745659); +emit_32(1120608322); +emit_32(3275456512); +emit_32(1079646691); +emit_32(1120608322); +emit_32(3275200528); +emit_32(1083145831); +emit_32(1120608322); +emit_32(3274944545); +emit_32(1087983583); +emit_32(1120608322); +emit_32(3274688496); +emit_32(1091238804); +emit_32(1120608322); +emit_32(3274432512); +emit_32(1093823208); +emit_32(1120608322); +emit_32(3274176528); +emit_32(1097286130); +emit_32(1120608322); +emit_32(3273920545); +emit_32(1099742472); +emit_32(1120608322); +emit_32(3273664496); +emit_32(1100695890); +emit_32(1120608322); +emit_32(3273408512); +emit_32(1101406876); +emit_32(1120608322); +emit_32(3273152528); +emit_32(1102194042); +emit_32(1120608322); +emit_32(3272896545); +emit_32(1103115112); +emit_32(1120608322); +emit_32(3272640496); +emit_32(1105064414); +emit_32(1120608322); +emit_32(3272384512); +emit_32(1107025042); +emit_32(1120608322); +emit_32(3272128528); +emit_32(1107923960); +emit_32(1120608322); +emit_32(3271872545); +emit_32(1108173154); +emit_32(1120608322); +emit_32(3271616496); +emit_32(1108080381); +emit_32(1120608322); +emit_32(3271163904); +emit_32(1107879605); +emit_32(1120608322); +emit_32(3270651937); +emit_32(1108128956); +emit_32(1120608322); +emit_32(3270139970); +emit_32(1108688110); +emit_32(1120608322); +emit_32(3269627871); +emit_32(1108797188); +emit_32(1120608322); +emit_32(3269115904); +emit_32(1108405938); +emit_32(1120608322); +emit_32(3268603937); +emit_32(1107934577); +emit_32(1120608322); +emit_32(3268091970); +emit_32(1107323021); +emit_32(1120608322); +emit_32(3267579911); +emit_32(1106810136); +emit_32(1120608322); +emit_32(3267067904); +emit_32(1106638904); +emit_32(1120608322); +emit_32(3266555911); +emit_32(1106673664); +emit_32(1120608322); +emit_32(3266043904); +emit_32(1106080013); +emit_32(1120608322); +emit_32(3265531911); +emit_32(1104833308); +emit_32(1120608322); +emit_32(3265019904); +emit_32(1103684593); +emit_32(1120608322); +emit_32(3264507911); +emit_32(1102392852); +emit_32(1120608322); +emit_32(3263995904); +emit_32(1101073744); +emit_32(1120608322); +emit_32(3263483911); +emit_32(1099963145); +emit_32(1120608322); +emit_32(3262775296); +emit_32(1099506070); +emit_32(1120608322); +emit_32(3261751309); +emit_32(1099320997); +emit_32(1120608322); +emit_32(3260727296); +emit_32(1098604295); +emit_32(1120608322); +emit_32(3259703309); +emit_32(1097529295); +emit_32(1120608322); +emit_32(3258679296); +emit_32(1096142134); +emit_32(1120608322); +emit_32(3257655309); +emit_32(1094301568); +emit_32(1120608322); +emit_32(3256631296); +emit_32(1094016985); +emit_32(1120608322); +emit_32(3255607309); +emit_32(1095156577); +emit_32(1120608322); +emit_32(3254386688); +emit_32(1095833223); +emit_32(1120608322); +emit_32(3252338714); +emit_32(1095183630); +emit_32(1120608322); +emit_32(3250290688); +emit_32(1094555114); +emit_32(1120608322); +emit_32(3248242714); +emit_32(1096488059); +emit_32(1120608322); +emit_32(3245998080); +emit_32(1097556453); +emit_32(1120608322); +emit_32(3241902132); +emit_32(1097820275); +emit_32(1120608322); +emit_32(3237609472); +emit_32(1097925237); +emit_32(1120608322); +emit_32(3229220864); +emit_32(1098971297); +emit_32(1120608322); +emit_32(0); +emit_32(1099474823); +emit_32(1120608322); +emit_32(1081737216); +emit_32(1099802817); +emit_32(1120608322); +emit_32(3279552512); +emit_32(1082649645); +emit_32(1120096263); +emit_32(3279296528); +emit_32(1081824919); +emit_32(1120096263); +emit_32(3279040545); +emit_32(1078459284); +emit_32(1120096263); +emit_32(3278784496); +emit_32(1074050399); +emit_32(1120096263); +emit_32(3278528512); +emit_32(1053874077); +emit_32(1120096263); +emit_32(3278272528); +emit_32(3211237089); +emit_32(1120096263); +emit_32(3278016545); +emit_32(3223833574); +emit_32(1120096263); +emit_32(3277760496); +emit_32(3229161263); +emit_32(1120096263); +emit_32(3277504512); +emit_32(3233010292); +emit_32(1120096263); +emit_32(3277248528); +emit_32(3229615695); +emit_32(1120096263); +emit_32(3276992545); +emit_32(3222904913); +emit_32(1120096263); +emit_32(3276736496); +emit_32(3222905752); +emit_32(1120096263); +emit_32(3276480512); +emit_32(3220913919); +emit_32(1120096263); +emit_32(3276224528); +emit_32(3216868597); +emit_32(1120096263); +emit_32(3275968545); +emit_32(3184537459); +emit_32(1120096263); +emit_32(3275712496); +emit_32(1071525805); +emit_32(1120096263); +emit_32(3275456512); +emit_32(1080770303); +emit_32(1120096263); +emit_32(3275200528); +emit_32(1084483709); +emit_32(1120096263); +emit_32(3274944545); +emit_32(1089756453); +emit_32(1120096263); +emit_32(3274688496); +emit_32(1092796967); +emit_32(1120096263); +emit_32(3274432512); +emit_32(1095008204); +emit_32(1120096263); +emit_32(3274176528); +emit_32(1098158021); +emit_32(1120096263); +emit_32(3273920545); +emit_32(1100073298); +emit_32(1120096263); +emit_32(3273664496); +emit_32(1101265424); +emit_32(1120096263); +emit_32(3273408512); +emit_32(1101989413); +emit_32(1120096263); +emit_32(3273152528); +emit_32(1102698565); +emit_32(1120096263); +emit_32(3272896545); +emit_32(1103242776); +emit_32(1120096263); +emit_32(3272640496); +emit_32(1105297356); +emit_32(1120096263); +emit_32(3272384512); +emit_32(1106908126); +emit_32(1120096263); +emit_32(3272128528); +emit_32(1107640530); +emit_32(1120096263); +emit_32(3271872545); +emit_32(1108166312); +emit_32(1120096263); +emit_32(3271616496); +emit_32(1108109138); +emit_32(1120096263); +emit_32(3271163904); +emit_32(1108037206); +emit_32(1120096263); +emit_32(3270651937); +emit_32(1107897483); +emit_32(1120096263); +emit_32(3270139970); +emit_32(1108473492); +emit_32(1120096263); +emit_32(3269627871); +emit_32(1108658461); +emit_32(1120096263); +emit_32(3269115904); +emit_32(1108380326); +emit_32(1120096263); +emit_32(3268603937); +emit_32(1107921522); +emit_32(1120096263); +emit_32(3268091970); +emit_32(1106710574); +emit_32(1120096263); +emit_32(3267579911); +emit_32(1106304880); +emit_32(1120096263); +emit_32(3267067904); +emit_32(1106736788); +emit_32(1120096263); +emit_32(3266555911); +emit_32(1106706484); +emit_32(1120096263); +emit_32(3266043904); +emit_32(1105732829); +emit_32(1120096263); +emit_32(3265531911); +emit_32(1104837607); +emit_32(1120096263); +emit_32(3265019904); +emit_32(1103630801); +emit_32(1120096263); +emit_32(3264507911); +emit_32(1101868093); +emit_32(1120096263); +emit_32(3263995904); +emit_32(1100220622); +emit_32(1120096263); +emit_32(3263483911); +emit_32(1100302254); +emit_32(1120096263); +emit_32(3262775296); +emit_32(1100039691); +emit_32(1120096263); +emit_32(3261751309); +emit_32(1099705090); +emit_32(1120096263); +emit_32(3260727296); +emit_32(1099085329); +emit_32(1120096263); +emit_32(3259703309); +emit_32(1097718982); +emit_32(1120096263); +emit_32(3258679296); +emit_32(1096390122); +emit_32(1120096263); +emit_32(3257655309); +emit_32(1094580175); +emit_32(1120096263); +emit_32(3256631296); +emit_32(1094186959); +emit_32(1120096263); +emit_32(3255607309); +emit_32(1094206987); +emit_32(1120096263); +emit_32(3254386688); +emit_32(1095299288); +emit_32(1120096263); +emit_32(3252338714); +emit_32(1094941095); +emit_32(1120096263); +emit_32(3250290688); +emit_32(1093925968); +emit_32(1120096263); +emit_32(3248242714); +emit_32(1096010747); +emit_32(1120096263); +emit_32(3245998080); +emit_32(1096357826); +emit_32(1120096263); +emit_32(3241902132); +emit_32(1096902246); +emit_32(1120096263); +emit_32(3237609472); +emit_32(1097501612); +emit_32(1120096263); +emit_32(3229220864); +emit_32(1097992765); +emit_32(1120096263); +emit_32(0); +emit_32(1098723413); +emit_32(1120096263); +emit_32(1081737216); +emit_32(1099965451); +emit_32(1120096263); +emit_32(3279552512); +emit_32(1084093765); +emit_32(1119584256); +emit_32(3279296528); +emit_32(1080036510); +emit_32(1119584256); +emit_32(3279040545); +emit_32(1077455125); +emit_32(1119584256); +emit_32(3278784496); +emit_32(1074567724); +emit_32(1119584256); +emit_32(3278528512); +emit_32(1069156863); +emit_32(1119584256); +emit_32(3278272528); +emit_32(3189431842); +emit_32(1119584256); +emit_32(3278016545); +emit_32(3213554929); +emit_32(1119584256); +emit_32(3277760496); +emit_32(3222450418); +emit_32(1119584256); +emit_32(3277504512); +emit_32(3228929486); +emit_32(1119584256); +emit_32(3277248528); +emit_32(3224323217); +emit_32(1119584256); +emit_32(3276992545); +emit_32(3222046465); +emit_32(1119584256); +emit_32(3276736496); +emit_32(3194181137); +emit_32(1119584256); +emit_32(3276480512); +emit_32(3186726281); +emit_32(1119584256); +emit_32(3276224528); +emit_32(3191098290); +emit_32(1119584256); +emit_32(3275968545); +emit_32(1068055354); +emit_32(1119584256); +emit_32(3275712496); +emit_32(1076438426); +emit_32(1119584256); +emit_32(3275456512); +emit_32(1080984464); +emit_32(1119584256); +emit_32(3275200528); +emit_32(1085878651); +emit_32(1119584256); +emit_32(3274944545); +emit_32(1091668447); +emit_32(1119584256); +emit_32(3274688496); +emit_32(1094171545); +emit_32(1119584256); +emit_32(3274432512); +emit_32(1095963561); +emit_32(1119584256); +emit_32(3274176528); +emit_32(1098572104); +emit_32(1119584256); +emit_32(3273920545); +emit_32(1099948045); +emit_32(1119584256); +emit_32(3273664496); +emit_32(1101407873); +emit_32(1119584256); +emit_32(3273408512); +emit_32(1102835876); +emit_32(1119584256); +emit_32(3273152528); +emit_32(1103744310); +emit_32(1119584256); +emit_32(3272896545); +emit_32(1104117655); +emit_32(1119584256); +emit_32(3272640496); +emit_32(1105300868); +emit_32(1119584256); +emit_32(3272384512); +emit_32(1107290803); +emit_32(1119584256); +emit_32(3272128528); +emit_32(1107707508); +emit_32(1119584256); +emit_32(3271872545); +emit_32(1108008685); +emit_32(1119584256); +emit_32(3271616496); +emit_32(1108120935); +emit_32(1119584256); +emit_32(3271163904); +emit_32(1108077052); +emit_32(1119584256); +emit_32(3270651937); +emit_32(1107924641); +emit_32(1119584256); +emit_32(3270139970); +emit_32(1108147044); +emit_32(1119584256); +emit_32(3269627871); +emit_32(1108350311); +emit_32(1119584256); +emit_32(3269115904); +emit_32(1108146651); +emit_32(1119584256); +emit_32(3268603937); +emit_32(1107677466); +emit_32(1119584256); +emit_32(3268091970); +emit_32(1106442034); +emit_32(1119584256); +emit_32(3267579911); +emit_32(1106619400); +emit_32(1119584256); +emit_32(3267067904); +emit_32(1106902463); +emit_32(1119584256); +emit_32(3266555911); +emit_32(1106534780); +emit_32(1119584256); +emit_32(3266043904); +emit_32(1105512733); +emit_32(1119584256); +emit_32(3265531911); +emit_32(1104509036); +emit_32(1119584256); +emit_32(3265019904); +emit_32(1103188250); +emit_32(1119584256); +emit_32(3264507911); +emit_32(1101665927); +emit_32(1119584256); +emit_32(3263995904); +emit_32(1100910743); +emit_32(1119584256); +emit_32(3263483911); +emit_32(1100740139); +emit_32(1119584256); +emit_32(3262775296); +emit_32(1100127981); +emit_32(1119584256); +emit_32(3261751309); +emit_32(1100010121); +emit_32(1119584256); +emit_32(3260727296); +emit_32(1099477968); +emit_32(1119584256); +emit_32(3259703309); +emit_32(1097874171); +emit_32(1119584256); +emit_32(3258679296); +emit_32(1096345453); +emit_32(1119584256); +emit_32(3257655309); +emit_32(1093686893); +emit_32(1119584256); +emit_32(3256631296); +emit_32(1093873015); +emit_32(1119584256); +emit_32(3255607309); +emit_32(1093045794); +emit_32(1119584256); +emit_32(3254386688); +emit_32(1093896189); +emit_32(1119584256); +emit_32(3252338714); +emit_32(1094140717); +emit_32(1119584256); +emit_32(3250290688); +emit_32(1094085666); +emit_32(1119584256); +emit_32(3248242714); +emit_32(1094959130); +emit_32(1119584256); +emit_32(3245998080); +emit_32(1096322698); +emit_32(1119584256); +emit_32(3241902132); +emit_32(1097101161); +emit_32(1119584256); +emit_32(3237609472); +emit_32(1096857367); +emit_32(1119584256); +emit_32(3229220864); +emit_32(1096976905); +emit_32(1119584256); +emit_32(0); +emit_32(1098201537); +emit_32(1119584256); +emit_32(1081737216); +emit_32(1099519545); +emit_32(1119584256); +emit_32(3279552512); +emit_32(1085076910); +emit_32(1119072263); +emit_32(3279296528); +emit_32(1081809987); +emit_32(1119072263); +emit_32(3279040545); +emit_32(1077014597); +emit_32(1119072263); +emit_32(3278784496); +emit_32(1075155304); +emit_32(1119072263); +emit_32(3278528512); +emit_32(1069179596); +emit_32(1119072263); +emit_32(3278272528); +emit_32(1056541889); +emit_32(1119072263); +emit_32(3278016545); +emit_32(1062243693); +emit_32(1119072263); +emit_32(3277760496); +emit_32(3195663773); +emit_32(1119072263); +emit_32(3277504512); +emit_32(3221620659); +emit_32(1119072263); +emit_32(3277248528); +emit_32(3216900390); +emit_32(1119072263); +emit_32(3276992545); +emit_32(3207733134); +emit_32(1119072263); +emit_32(3276736496); +emit_32(1061029962); +emit_32(1119072263); +emit_32(3276480512); +emit_32(1067919627); +emit_32(1119072263); +emit_32(3276224528); +emit_32(1069464557); +emit_32(1119072263); +emit_32(3275968545); +emit_32(1076127125); +emit_32(1119072263); +emit_32(3275712496); +emit_32(1080969365); +emit_32(1119072263); +emit_32(3275456512); +emit_32(1083510358); +emit_32(1119072263); +emit_32(3275200528); +emit_32(1088854216); +emit_32(1119072263); +emit_32(3274944545); +emit_32(1092461118); +emit_32(1119072263); +emit_32(3274688496); +emit_32(1095602746); +emit_32(1119072263); +emit_32(3274432512); +emit_32(1097477495); +emit_32(1119072263); +emit_32(3274176528); +emit_32(1099224108); +emit_32(1119072263); +emit_32(3273920545); +emit_32(1100863662); +emit_32(1119072263); +emit_32(3273664496); +emit_32(1102423943); +emit_32(1119072263); +emit_32(3273408512); +emit_32(1103322677); +emit_32(1119072263); +emit_32(3273152528); +emit_32(1104096054); +emit_32(1119072263); +emit_32(3272896545); +emit_32(1104740300); +emit_32(1119072263); +emit_32(3272640496); +emit_32(1105730627); +emit_32(1119072263); +emit_32(3272384512); +emit_32(1107106673); +emit_32(1119072263); +emit_32(3272128528); +emit_32(1107798052); +emit_32(1119072263); +emit_32(3271872545); +emit_32(1107907497); +emit_32(1119072263); +emit_32(3271616496); +emit_32(1108367272); +emit_32(1119072263); +emit_32(3271163904); +emit_32(1108217273); +emit_32(1119072263); +emit_32(3270651937); +emit_32(1108004962); +emit_32(1119072263); +emit_32(3270139970); +emit_32(1107737890); +emit_32(1119072263); +emit_32(3269627871); +emit_32(1107889331); +emit_32(1119072263); +emit_32(3269115904); +emit_32(1107876826); +emit_32(1119072263); +emit_32(3268603937); +emit_32(1107372933); +emit_32(1119072263); +emit_32(3268091970); +emit_32(1106504004); +emit_32(1119072263); +emit_32(3267579911); +emit_32(1106696575); +emit_32(1119072263); +emit_32(3267067904); +emit_32(1107019275); +emit_32(1119072263); +emit_32(3266555911); +emit_32(1106385201); +emit_32(1119072263); +emit_32(3266043904); +emit_32(1105441482); +emit_32(1119072263); +emit_32(3265531911); +emit_32(1104471235); +emit_32(1119072263); +emit_32(3265019904); +emit_32(1103193965); +emit_32(1119072263); +emit_32(3264507911); +emit_32(1102302518); +emit_32(1119072263); +emit_32(3263995904); +emit_32(1101174984); +emit_32(1119072263); +emit_32(3263483911); +emit_32(1100736365); +emit_32(1119072263); +emit_32(3262775296); +emit_32(1100294232); +emit_32(1119072263); +emit_32(3261751309); +emit_32(1099900282); +emit_32(1119072263); +emit_32(3260727296); +emit_32(1099000447); +emit_32(1119072263); +emit_32(3259703309); +emit_32(1098125096); +emit_32(1119072263); +emit_32(3258679296); +emit_32(1096310535); +emit_32(1119072263); +emit_32(3257655309); +emit_32(1094547669); +emit_32(1119072263); +emit_32(3256631296); +emit_32(1092850024); +emit_32(1119072263); +emit_32(3255607309); +emit_32(1092138471); +emit_32(1119072263); +emit_32(3254386688); +emit_32(1092338194); +emit_32(1119072263); +emit_32(3252338714); +emit_32(1093356172); +emit_32(1119072263); +emit_32(3250290688); +emit_32(1094627885); +emit_32(1119072263); +emit_32(3248242714); +emit_32(1095982750); +emit_32(1119072263); +emit_32(3245998080); +emit_32(1095846540); +emit_32(1119072263); +emit_32(3241902132); +emit_32(1095563949); +emit_32(1119072263); +emit_32(3237609472); +emit_32(1095549269); +emit_32(1119072263); +emit_32(3229220864); +emit_32(1096920492); +emit_32(1119072263); +emit_32(0); +emit_32(1097824888); +emit_32(1119072263); +emit_32(1081737216); +emit_32(1098532992); +emit_32(1119072263); +emit_32(3279552512); +emit_32(1086774827); +emit_32(1118560256); +emit_32(3279296528); +emit_32(1083515077); +emit_32(1118560256); +emit_32(3279040545); +emit_32(1079457780); +emit_32(1118560256); +emit_32(3278784496); +emit_32(1073525901); +emit_32(1118560256); +emit_32(3278528512); +emit_32(1058489607); +emit_32(1118560256); +emit_32(3278272528); +emit_32(1073793078); +emit_32(1118560256); +emit_32(3278016545); +emit_32(1074379023); +emit_32(1118560256); +emit_32(3277760496); +emit_32(1061663235); +emit_32(1118560256); +emit_32(3277504512); +emit_32(3201930600); +emit_32(1118560256); +emit_32(3277248528); +emit_32(3204664162); +emit_32(1118560256); +emit_32(3276992545); +emit_32(995186421); +emit_32(1118560256); +emit_32(3276736496); +emit_32(1065832625); +emit_32(1118560256); +emit_32(3276480512); +emit_32(1074242037); +emit_32(1118560256); +emit_32(3276224528); +emit_32(1075791245); +emit_32(1118560256); +emit_32(3275968545); +emit_32(1081708653); +emit_32(1118560256); +emit_32(3275712496); +emit_32(1085735415); +emit_32(1118560256); +emit_32(3275456512); +emit_32(1087198703); +emit_32(1118560256); +emit_32(3275200528); +emit_32(1090399397); +emit_32(1118560256); +emit_32(3274944545); +emit_32(1093618840); +emit_32(1118560256); +emit_32(3274688496); +emit_32(1095966497); +emit_32(1118560256); +emit_32(3274432512); +emit_32(1098679792); +emit_32(1118560256); +emit_32(3274176528); +emit_32(1099796369); +emit_32(1118560256); +emit_32(3273920545); +emit_32(1101123342); +emit_32(1118560256); +emit_32(3273664496); +emit_32(1102326582); +emit_32(1118560256); +emit_32(3273408512); +emit_32(1103526783); +emit_32(1118560256); +emit_32(3273152528); +emit_32(1104500018); +emit_32(1118560256); +emit_32(3272896545); +emit_32(1105044544); +emit_32(1118560256); +emit_32(3272640496); +emit_32(1105840518); +emit_32(1118560256); +emit_32(3272384512); +emit_32(1107014661); +emit_32(1118560256); +emit_32(3272128528); +emit_32(1107845579); +emit_32(1118560256); +emit_32(3271872545); +emit_32(1108007295); +emit_32(1118560256); +emit_32(3271616496); +emit_32(1108389711); +emit_32(1118560256); +emit_32(3271163904); +emit_32(1108469167); +emit_32(1118560256); +emit_32(3270651937); +emit_32(1108186681); +emit_32(1118560256); +emit_32(3270139970); +emit_32(1107912425); +emit_32(1118560256); +emit_32(3269627871); +emit_32(1107694060); +emit_32(1118560256); +emit_32(3269115904); +emit_32(1107557771); +emit_32(1118560256); +emit_32(3268603937); +emit_32(1107185212); +emit_32(1118560256); +emit_32(3268091970); +emit_32(1106863509); +emit_32(1118560256); +emit_32(3267579911); +emit_32(1106786176); +emit_32(1118560256); +emit_32(3267067904); +emit_32(1107049998); +emit_32(1118560256); +emit_32(3266555911); +emit_32(1106706117); +emit_32(1118560256); +emit_32(3266043904); +emit_32(1105274287); +emit_32(1118560256); +emit_32(3265531911); +emit_32(1104108375); +emit_32(1118560256); +emit_32(3265019904); +emit_32(1103313974); +emit_32(1118560256); +emit_32(3264507911); +emit_32(1102052537); +emit_32(1118560256); +emit_32(3263995904); +emit_32(1101026348); +emit_32(1118560256); +emit_32(3263483911); +emit_32(1100975912); +emit_32(1118560256); +emit_32(3262775296); +emit_32(1100160329); +emit_32(1118560256); +emit_32(3261751309); +emit_32(1099423862); +emit_32(1118560256); +emit_32(3260727296); +emit_32(1098504471); +emit_32(1118560256); +emit_32(3259703309); +emit_32(1097455580); +emit_32(1118560256); +emit_32(3258679296); +emit_32(1095484886); +emit_32(1118560256); +emit_32(3257655309); +emit_32(1094881011); +emit_32(1118560256); +emit_32(3256631296); +emit_32(1092725768); +emit_32(1118560256); +emit_32(3255607309); +emit_32(1092211609); +emit_32(1118560256); +emit_32(3254386688); +emit_32(1092698400); +emit_32(1118560256); +emit_32(3252338714); +emit_32(1092845620); +emit_32(1118560256); +emit_32(3250290688); +emit_32(1094266651); +emit_32(1118560256); +emit_32(3248242714); +emit_32(1094578287); +emit_32(1118560256); +emit_32(3245998080); +emit_32(1094619916); +emit_32(1118560256); +emit_32(3241902132); +emit_32(1094198493); +emit_32(1118560256); +emit_32(3237609472); +emit_32(1096808294); +emit_32(1118560256); +emit_32(3229220864); +emit_32(1097696857); +emit_32(1118560256); +emit_32(0); +emit_32(1097643170); +emit_32(1118560256); +emit_32(1081737216); +emit_32(1098479410); +emit_32(1118560256); +emit_32(3279552512); +emit_32(1088302854); +emit_32(1118048263); +emit_32(3279296528); +emit_32(1083747986); +emit_32(1118048263); +emit_32(3279040545); +emit_32(1080542594); +emit_32(1118048263); +emit_32(3278784496); +emit_32(1075852566); +emit_32(1118048263); +emit_32(3278528512); +emit_32(1068737600); +emit_32(1118048263); +emit_32(3278272528); +emit_32(1073988491); +emit_32(1118048263); +emit_32(3278016545); +emit_32(1075493743); +emit_32(1118048263); +emit_32(3277760496); +emit_32(1067344336); +emit_32(1118048263); +emit_32(3277504512); +emit_32(1070348213); +emit_32(1118048263); +emit_32(3277248528); +emit_32(1067476624); +emit_32(1118048263); +emit_32(3276992545); +emit_32(1069849007); +emit_32(1118048263); +emit_32(3276736496); +emit_32(1075129006); +emit_32(1118048263); +emit_32(3276480512); +emit_32(1076245656); +emit_32(1118048263); +emit_32(3276224528); +emit_32(1082664933); +emit_32(1118048263); +emit_32(3275968545); +emit_32(1086033987); +emit_32(1118048263); +emit_32(3275712496); +emit_32(1089567583); +emit_32(1118048263); +emit_32(3275456512); +emit_32(1091286073); +emit_32(1118048263); +emit_32(3275200528); +emit_32(1092256918); +emit_32(1118048263); +emit_32(3274944545); +emit_32(1094223449); +emit_32(1118048263); +emit_32(3274688496); +emit_32(1097132304); +emit_32(1118048263); +emit_32(3274432512); +emit_32(1099059115); +emit_32(1118048263); +emit_32(3274176528); +emit_32(1099766379); +emit_32(1118048263); +emit_32(3273920545); +emit_32(1101236640); +emit_32(1118048263); +emit_32(3273664496); +emit_32(1102554438); +emit_32(1118048263); +emit_32(3273408512); +emit_32(1103664565); +emit_32(1118048263); +emit_32(3273152528); +emit_32(1104878292); +emit_32(1118048263); +emit_32(3272896545); +emit_32(1105616175); +emit_32(1118048263); +emit_32(3272640496); +emit_32(1106382684); +emit_32(1118048263); +emit_32(3272384512); +emit_32(1107450606); +emit_32(1118048263); +emit_32(3272128528); +emit_32(1107817503); +emit_32(1118048263); +emit_32(3271872545); +emit_32(1107947369); +emit_32(1118048263); +emit_32(3271616496); +emit_32(1108283805); +emit_32(1118048263); +emit_32(3271163904); +emit_32(1108371099); +emit_32(1118048263); +emit_32(3270651937); +emit_32(1108326954); +emit_32(1118048263); +emit_32(3270139970); +emit_32(1108075217); +emit_32(1118048263); +emit_32(3269627871); +emit_32(1107641945); +emit_32(1118048263); +emit_32(3269115904); +emit_32(1107268836); +emit_32(1118048263); +emit_32(3268603937); +emit_32(1107004595); +emit_32(1118048263); +emit_32(3268091970); +emit_32(1106919660); +emit_32(1118048263); +emit_32(3267579911); +emit_32(1107317228); +emit_32(1118048263); +emit_32(3267067904); +emit_32(1106983623); +emit_32(1118048263); +emit_32(3266555911); +emit_32(1106392855); +emit_32(1118048263); +emit_32(3266043904); +emit_32(1105271141); +emit_32(1118048263); +emit_32(3265531911); +emit_32(1103878632); +emit_32(1118048263); +emit_32(3265019904); +emit_32(1103197949); +emit_32(1118048263); +emit_32(3264507911); +emit_32(1102375708); +emit_32(1118048263); +emit_32(3263995904); +emit_32(1100616040); +emit_32(1118048263); +emit_32(3263483911); +emit_32(1100311953); +emit_32(1118048263); +emit_32(3262775296); +emit_32(1099845547); +emit_32(1118048263); +emit_32(3261751309); +emit_32(1099214619); +emit_32(1118048263); +emit_32(3260727296); +emit_32(1097535901); +emit_32(1118048263); +emit_32(3259703309); +emit_32(1095712847); +emit_32(1118048263); +emit_32(3258679296); +emit_32(1094870840); +emit_32(1118048263); +emit_32(3257655309); +emit_32(1094035230); +emit_32(1118048263); +emit_32(3256631296); +emit_32(1092438144); +emit_32(1118048263); +emit_32(3255607309); +emit_32(1092567024); +emit_32(1118048263); +emit_32(3254386688); +emit_32(1093416360); +emit_32(1118048263); +emit_32(3252338714); +emit_32(1092845516); +emit_32(1118048263); +emit_32(3250290688); +emit_32(1092728599); +emit_32(1118048263); +emit_32(3248242714); +emit_32(1093978292); +emit_32(1118048263); +emit_32(3245998080); +emit_32(1094248091); +emit_32(1118048263); +emit_32(3241902132); +emit_32(1096725352); +emit_32(1118048263); +emit_32(3237609472); +emit_32(1098118070); +emit_32(1118048263); +emit_32(3229220864); +emit_32(1098579024); +emit_32(1118048263); +emit_32(0); +emit_32(1098875562); +emit_32(1118048263); +emit_32(1081737216); +emit_32(1099413271); +emit_32(1118048263); +emit_32(3279552512); +emit_32(1087158039); +emit_32(1117536256); +emit_32(3279296528); +emit_32(1084423731); +emit_32(1117536256); +emit_32(3279040545); +emit_32(1083252471); +emit_32(1117536256); +emit_32(3278784496); +emit_32(1080977921); +emit_32(1117536256); +emit_32(3278528512); +emit_32(1078047193); +emit_32(1117536256); +emit_32(3278272528); +emit_32(1078022405); +emit_32(1117536256); +emit_32(3278016545); +emit_32(1081630052); +emit_32(1117536256); +emit_32(3277760496); +emit_32(1083124105); +emit_32(1117536256); +emit_32(3277504512); +emit_32(1081459553); +emit_32(1117536256); +emit_32(3277248528); +emit_32(1076823379); +emit_32(1117536256); +emit_32(3276992545); +emit_32(1083284243); +emit_32(1117536256); +emit_32(3276736496); +emit_32(1084323613); +emit_32(1117536256); +emit_32(3276480512); +emit_32(1083093801); +emit_32(1117536256); +emit_32(3276224528); +emit_32(1084912430); +emit_32(1117536256); +emit_32(3275968545); +emit_32(1088711106); +emit_32(1117536256); +emit_32(3275712496); +emit_32(1091460892); +emit_32(1117536256); +emit_32(3275456512); +emit_32(1093026290); +emit_32(1117536256); +emit_32(3275200528); +emit_32(1094050539); +emit_32(1117536256); +emit_32(3274944545); +emit_32(1096188481); +emit_32(1117536256); +emit_32(3274688496); +emit_32(1099085539); +emit_32(1117536256); +emit_32(3274432512); +emit_32(1099851891); +emit_32(1117536256); +emit_32(3274176528); +emit_32(1100504367); +emit_32(1117536256); +emit_32(3273920545); +emit_32(1101748136); +emit_32(1117536256); +emit_32(3273664496); +emit_32(1102868644); +emit_32(1117536256); +emit_32(3273408512); +emit_32(1103833491); +emit_32(1117536256); +emit_32(3273152528); +emit_32(1104656833); +emit_32(1117536256); +emit_32(3272896545); +emit_32(1105628706); +emit_32(1117536256); +emit_32(3272640496); +emit_32(1107011043); +emit_32(1117536256); +emit_32(3272384512); +emit_32(1107650124); +emit_32(1117536256); +emit_32(3272128528); +emit_32(1107880732); +emit_32(1117536256); +emit_32(3271872545); +emit_32(1107976887); +emit_32(1117536256); +emit_32(3271616496); +emit_32(1108276648); +emit_32(1117536256); +emit_32(3271163904); +emit_32(1108202645); +emit_32(1117536256); +emit_32(3270651937); +emit_32(1108292036); +emit_32(1117536256); +emit_32(3270139970); +emit_32(1107942205); +emit_32(1117536256); +emit_32(3269627871); +emit_32(1107800883); +emit_32(1117536256); +emit_32(3269115904); +emit_32(1107311303); +emit_32(1117536256); +emit_32(3268603937); +emit_32(1107125495); +emit_32(1117536256); +emit_32(3268091970); +emit_32(1107112755); +emit_32(1117536256); +emit_32(3267579911); +emit_32(1107267997); +emit_32(1117536256); +emit_32(3267067904); +emit_32(1106890510); +emit_32(1117536256); +emit_32(3266555911); +emit_32(1106494148); +emit_32(1117536256); +emit_32(3266043904); +emit_32(1105071650); +emit_32(1117536256); +emit_32(3265531911); +emit_32(1103864948); +emit_32(1117536256); +emit_32(3265019904); +emit_32(1102783028); +emit_32(1117536256); +emit_32(3264507911); +emit_32(1101893154); +emit_32(1117536256); +emit_32(3263995904); +emit_32(1100313684); +emit_32(1117536256); +emit_32(3263483911); +emit_32(1099645112); +emit_32(1117536256); +emit_32(3262775296); +emit_32(1099500985); +emit_32(1117536256); +emit_32(3261751309); +emit_32(1099174668); +emit_32(1117536256); +emit_32(3260727296); +emit_32(1097807901); +emit_32(1117536256); +emit_32(3259703309); +emit_32(1096000995); +emit_32(1117536256); +emit_32(3258679296); +emit_32(1094151098); +emit_32(1117536256); +emit_32(3257655309); +emit_32(1093022725); +emit_32(1117536256); +emit_32(3256631296); +emit_32(1092315356); +emit_32(1117536256); +emit_32(3255607309); +emit_32(1092666209); +emit_32(1117536256); +emit_32(3254386688); +emit_32(1092956979); +emit_32(1117536256); +emit_32(3252338714); +emit_32(1092948591); +emit_32(1117536256); +emit_32(3250290688); +emit_32(1093567880); +emit_32(1117536256); +emit_32(3248242714); +emit_32(1094483496); +emit_32(1117536256); +emit_32(3245998080); +emit_32(1097010250); +emit_32(1117536256); +emit_32(3241902132); +emit_32(1098491888); +emit_32(1117536256); +emit_32(3237609472); +emit_32(1098958976); +emit_32(1117536256); +emit_32(3229220864); +emit_32(1099244503); +emit_32(1117536256); +emit_32(0); +emit_32(1099580677); +emit_32(1117536256); +emit_32(1081737216); +emit_32(1100388447); +emit_32(1117536256); +emit_32(3279552512); +emit_32(1086400066); +emit_32(1117024263); +emit_32(3279296528); +emit_32(1084596809); +emit_32(1117024263); +emit_32(3279040545); +emit_32(1080887240); +emit_32(1117024263); +emit_32(3278784496); +emit_32(1080830198); +emit_32(1117024263); +emit_32(3278528512); +emit_32(1083401537); +emit_32(1117024263); +emit_32(3278272528); +emit_32(1083235254); +emit_32(1117024263); +emit_32(3278016545); +emit_32(1085484554); +emit_32(1117024263); +emit_32(3277760496); +emit_32(1086866577); +emit_32(1117024263); +emit_32(3277504512); +emit_32(1084469113); +emit_32(1117024263); +emit_32(3277248528); +emit_32(1083540599); +emit_32(1117024263); +emit_32(3276992545); +emit_32(1085825048); +emit_32(1117024263); +emit_32(3276736496); +emit_32(1088012125); +emit_32(1117024263); +emit_32(3276480512); +emit_32(1088318771); +emit_32(1117024263); +emit_32(3276224528); +emit_32(1089174619); +emit_32(1117024263); +emit_32(3275968545); +emit_32(1091189594); +emit_32(1117024263); +emit_32(3275712496); +emit_32(1093050722); +emit_32(1117024263); +emit_32(3275456512); +emit_32(1094514639); +emit_32(1117024263); +emit_32(3275200528); +emit_32(1096242482); +emit_32(1117024263); +emit_32(3274944545); +emit_32(1098453090); +emit_32(1117024263); +emit_32(3274688496); +emit_32(1100090861); +emit_32(1117024263); +emit_32(3274432512); +emit_32(1100571319); +emit_32(1117024263); +emit_32(3274176528); +emit_32(1101691512); +emit_32(1117024263); +emit_32(3273920545); +emit_32(1102911059); +emit_32(1117024263); +emit_32(3273664496); +emit_32(1103791600); +emit_32(1117024263); +emit_32(3273408512); +emit_32(1105004541); +emit_32(1117024263); +emit_32(3273152528); +emit_32(1105668499); +emit_32(1117024263); +emit_32(3272896545); +emit_32(1106514962); +emit_32(1117024263); +emit_32(3272640496); +emit_32(1107399593); +emit_32(1117024263); +emit_32(3272384512); +emit_32(1107645563); +emit_32(1117024263); +emit_32(3272128528); +emit_32(1107768351); +emit_32(1117024263); +emit_32(3271872545); +emit_32(1108103738); +emit_32(1117024263); +emit_32(3271616496); +emit_32(1108013744); +emit_32(1117024263); +emit_32(3271163904); +emit_32(1107916384); +emit_32(1117024263); +emit_32(3270651937); +emit_32(1107875778); +emit_32(1117024263); +emit_32(3270139970); +emit_32(1107601523); +emit_32(1117024263); +emit_32(3269627871); +emit_32(1107312378); +emit_32(1117024263); +emit_32(3269115904); +emit_32(1107317935); +emit_32(1117024263); +emit_32(3268603937); +emit_32(1107418363); +emit_32(1117024263); +emit_32(3268091970); +emit_32(1107103056); +emit_32(1117024263); +emit_32(3267579911); +emit_32(1106756135); +emit_32(1117024263); +emit_32(3267067904); +emit_32(1106586580); +emit_32(1117024263); +emit_32(3266555911); +emit_32(1106229068); +emit_32(1117024263); +emit_32(3266043904); +emit_32(1104905136); +emit_32(1117024263); +emit_32(3265531911); +emit_32(1103773408); +emit_32(1117024263); +emit_32(3265019904); +emit_32(1102876508); +emit_32(1117024263); +emit_32(3264507911); +emit_32(1101347160); +emit_32(1117024263); +emit_32(3263995904); +emit_32(1100029362); +emit_32(1117024263); +emit_32(3263483911); +emit_32(1099777180); +emit_32(1117024263); +emit_32(3262775296); +emit_32(1099578632); +emit_32(1117024263); +emit_32(3261751309); +emit_32(1099224370); +emit_32(1117024263); +emit_32(3260727296); +emit_32(1097535377); +emit_32(1117024263); +emit_32(3259703309); +emit_32(1095910398); +emit_32(1117024263); +emit_32(3258679296); +emit_32(1093599127); +emit_32(1117024263); +emit_32(3257655309); +emit_32(1091981646); +emit_32(1117024263); +emit_32(3256631296); +emit_32(1091797841); +emit_32(1117024263); +emit_32(3255607309); +emit_32(1092352737); +emit_32(1117024263); +emit_32(3254386688); +emit_32(1093028492); +emit_32(1117024263); +emit_32(3252338714); +emit_32(1093454633); +emit_32(1117024263); +emit_32(3250290688); +emit_32(1094245469); +emit_32(1117024263); +emit_32(3248242714); +emit_32(1096330038); +emit_32(1117024263); +emit_32(3245998080); +emit_32(1098523450); +emit_32(1117024263); +emit_32(3241902132); +emit_32(1099109289); +emit_32(1117024263); +emit_32(3237609472); +emit_32(1099818861); +emit_32(1117024263); +emit_32(3229220864); +emit_32(1099945738); +emit_32(1117024263); +emit_32(0); +emit_32(1100568016); +emit_32(1117024263); +emit_32(1081737216); +emit_32(1101362836); +emit_32(1117024263); +emit_32(3279552512); +emit_32(1085174427); +emit_32(1116512256); +emit_32(3279296528); +emit_32(1083887405); +emit_32(1116512256); +emit_32(3279040545); +emit_32(1080456611); +emit_32(1116512256); +emit_32(3278784496); +emit_32(1079046318); +emit_32(1116512256); +emit_32(3278528512); +emit_32(1082259302); +emit_32(1116512256); +emit_32(3278272528); +emit_32(1084889550); +emit_32(1116512256); +emit_32(3278016545); +emit_32(1087704851); +emit_32(1116512256); +emit_32(3277760496); +emit_32(1087804025); +emit_32(1116512256); +emit_32(3277504512); +emit_32(1088280498); +emit_32(1116512256); +emit_32(3277248528); +emit_32(1088103981); +emit_32(1116512256); +emit_32(3276992545); +emit_32(1088351004); +emit_32(1116512256); +emit_32(3276736496); +emit_32(1089973843); +emit_32(1116512256); +emit_32(3276480512); +emit_32(1091239926); +emit_32(1116512256); +emit_32(3276224528); +emit_32(1091632890); +emit_32(1116512256); +emit_32(3275968545); +emit_32(1092700393); +emit_32(1116512256); +emit_32(3275712496); +emit_32(1094925156); +emit_32(1116512256); +emit_32(3275456512); +emit_32(1096876556); +emit_32(1116512256); +emit_32(3275200528); +emit_32(1098626630); +emit_32(1116512256); +emit_32(3274944545); +emit_32(1100164471); +emit_32(1116512256); +emit_32(3274688496); +emit_32(1100745487); +emit_32(1116512256); +emit_32(3274432512); +emit_32(1101472832); +emit_32(1116512256); +emit_32(3274176528); +emit_32(1102779148); +emit_32(1116512256); +emit_32(3273920545); +emit_32(1103935255); +emit_32(1116512256); +emit_32(3273664496); +emit_32(1104701345); +emit_32(1116512256); +emit_32(3273408512); +emit_32(1105539000); +emit_32(1116512256); +emit_32(3273152528); +emit_32(1106980949); +emit_32(1116512256); +emit_32(3272896545); +emit_32(1107434013); +emit_32(1116512256); +emit_32(3272640496); +emit_32(1107566658); +emit_32(1116512256); +emit_32(3272384512); +emit_32(1107582701); +emit_32(1116512256); +emit_32(3272128528); +emit_32(1107757498); +emit_32(1116512256); +emit_32(3271872545); +emit_32(1107869617); +emit_32(1116512256); +emit_32(3271616496); +emit_32(1107687480); +emit_32(1116512256); +emit_32(3271163904); +emit_32(1107868176); +emit_32(1116512256); +emit_32(3270651937); +emit_32(1107680087); +emit_32(1116512256); +emit_32(3270139970); +emit_32(1107380955); +emit_32(1116512256); +emit_32(3269627871); +emit_32(1107328631); +emit_32(1116512256); +emit_32(3269115904); +emit_32(1107472941); +emit_32(1116512256); +emit_32(3268603937); +emit_32(1107494384); +emit_32(1116512256); +emit_32(3268091970); +emit_32(1107424602); +emit_32(1116512256); +emit_32(3267579911); +emit_32(1106664227); +emit_32(1116512256); +emit_32(3267067904); +emit_32(1106309651); +emit_32(1116512256); +emit_32(3266555911); +emit_32(1105564480); +emit_32(1116512256); +emit_32(3266043904); +emit_32(1104468247); +emit_32(1116512256); +emit_32(3265531911); +emit_32(1103524161); +emit_32(1116512256); +emit_32(3265019904); +emit_32(1102766355); +emit_32(1116512256); +emit_32(3264507911); +emit_32(1101285976); +emit_32(1116512256); +emit_32(3263995904); +emit_32(1100106066); +emit_32(1116512256); +emit_32(3263483911); +emit_32(1099771150); +emit_32(1116512256); +emit_32(3262775296); +emit_32(1099629121); +emit_32(1116512256); +emit_32(3261751309); +emit_32(1099071436); +emit_32(1116512256); +emit_32(3260727296); +emit_32(1096827273); +emit_32(1116512256); +emit_32(3259703309); +emit_32(1094327153); +emit_32(1116512256); +emit_32(3258679296); +emit_32(1092289372); +emit_32(1116512256); +emit_32(3257655309); +emit_32(1091186899); +emit_32(1116512256); +emit_32(3256631296); +emit_32(1091068620); +emit_32(1116512256); +emit_32(3255607309); +emit_32(1092988332); +emit_32(1116512256); +emit_32(3254386688); +emit_32(1093789024); +emit_32(1116512256); +emit_32(3252338714); +emit_32(1095575588); +emit_32(1116512256); +emit_32(3250290688); +emit_32(1097077673); +emit_32(1116512256); +emit_32(3248242714); +emit_32(1098285423); +emit_32(1116512256); +emit_32(3245998080); +emit_32(1099366400); +emit_32(1116512256); +emit_32(3241902132); +emit_32(1099809528); +emit_32(1116512256); +emit_32(3237609472); +emit_32(1100308336); +emit_32(1116512256); +emit_32(3229220864); +emit_32(1100857999); +emit_32(1116512256); +emit_32(0); +emit_32(1101690883); +emit_32(1116512256); +emit_32(1081737216); +emit_32(1102550401); +emit_32(1116512256); +emit_32(3279552512); +emit_32(1083244397); +emit_32(1116000263); +emit_32(3279296528); +emit_32(1081021794); +emit_32(1116000263); +emit_32(3279040545); +emit_32(1081320051); +emit_32(1116000263); +emit_32(3278784496); +emit_32(1083021910); +emit_32(1116000263); +emit_32(3278528512); +emit_32(1084294064); +emit_32(1116000263); +emit_32(3278272528); +emit_32(1087656092); +emit_32(1116000263); +emit_32(3278016545); +emit_32(1089797599); +emit_32(1116000263); +emit_32(3277760496); +emit_32(1091098955); +emit_32(1116000263); +emit_32(3277504512); +emit_32(1091272610); +emit_32(1116000263); +emit_32(3277248528); +emit_32(1089866763); +emit_32(1116000263); +emit_32(3276992545); +emit_32(1091139178); +emit_32(1116000263); +emit_32(3276736496); +emit_32(1092341580); +emit_32(1116000263); +emit_32(3276480512); +emit_32(1092757540); +emit_32(1116000263); +emit_32(3276224528); +emit_32(1092728914); +emit_32(1116000263); +emit_32(3275968545); +emit_32(1093810939); +emit_32(1116000263); +emit_32(3275712496); +emit_32(1096373135); +emit_32(1116000263); +emit_32(3275456512); +emit_32(1098378222); +emit_32(1116000263); +emit_32(3275200528); +emit_32(1099724174); +emit_32(1116000263); +emit_32(3274944545); +emit_32(1100967628); +emit_32(1116000263); +emit_32(3274688496); +emit_32(1101558815); +emit_32(1116000263); +emit_32(3274432512); +emit_32(1102315677); +emit_32(1116000263); +emit_32(3274176528); +emit_32(1103940446); +emit_32(1116000263); +emit_32(3273920545); +emit_32(1104679902); +emit_32(1116000263); +emit_32(3273664496); +emit_32(1105155378); +emit_32(1116000263); +emit_32(3273408512); +emit_32(1106194674); +emit_32(1116000263); +emit_32(3273152528); +emit_32(1107343049); +emit_32(1116000263); +emit_32(3272896545); +emit_32(1107838081); +emit_32(1116000263); +emit_32(3272640496); +emit_32(1107954998); +emit_32(1116000263); +emit_32(3272384512); +emit_32(1107867599); +emit_32(1116000263); +emit_32(3272128528); +emit_32(1107645196); +emit_32(1116000263); +emit_32(3271872545); +emit_32(1107550274); +emit_32(1116000263); +emit_32(3271616496); +emit_32(1107544690); +emit_32(1116000263); +emit_32(3271163904); +emit_32(1107694348); +emit_32(1116000263); +emit_32(3270651937); +emit_32(1107550929); +emit_32(1116000263); +emit_32(3270139970); +emit_32(1107424654); +emit_32(1116000263); +emit_32(3269627871); +emit_32(1107580892); +emit_32(1116000263); +emit_32(3269115904); +emit_32(1107466676); +emit_32(1116000263); +emit_32(3268603937); +emit_32(1107518292); +emit_32(1116000263); +emit_32(3268091970); +emit_32(1107507911); +emit_32(1116000263); +emit_32(3267579911); +emit_32(1107068767); +emit_32(1116000263); +emit_32(3267067904); +emit_32(1105975417); +emit_32(1116000263); +emit_32(3266555911); +emit_32(1105550692); +emit_32(1116000263); +emit_32(3266043904); +emit_32(1104364438); +emit_32(1116000263); +emit_32(3265531911); +emit_32(1103311090); +emit_32(1116000263); +emit_32(3265019904); +emit_32(1102266709); +emit_32(1116000263); +emit_32(3264507911); +emit_32(1101111021); +emit_32(1116000263); +emit_32(3263995904); +emit_32(1100245264); +emit_32(1116000263); +emit_32(3263483911); +emit_32(1099460667); +emit_32(1116000263); +emit_32(3262775296); +emit_32(1099464599); +emit_32(1116000263); +emit_32(3261751309); +emit_32(1098898106); +emit_32(1116000263); +emit_32(3260727296); +emit_32(1096169292); +emit_32(1116000263); +emit_32(3259703309); +emit_32(1094572520); +emit_32(1116000263); +emit_32(3258679296); +emit_32(1091595424); +emit_32(1116000263); +emit_32(3257655309); +emit_32(1091557613); +emit_32(1116000263); +emit_32(3256631296); +emit_32(1092673130); +emit_32(1116000263); +emit_32(3255607309); +emit_32(1094406950); +emit_32(1116000263); +emit_32(3254386688); +emit_32(1095233018); +emit_32(1116000263); +emit_32(3252338714); +emit_32(1096870789); +emit_32(1116000263); +emit_32(3250290688); +emit_32(1098084201); +emit_32(1116000263); +emit_32(3248242714); +emit_32(1099279316); +emit_32(1116000263); +emit_32(3245998080); +emit_32(1099851838); +emit_32(1116000263); +emit_32(3241902132); +emit_32(1100485021); +emit_32(1116000263); +emit_32(3237609472); +emit_32(1101521958); +emit_32(1116000263); +emit_32(3229220864); +emit_32(1102417389); +emit_32(1116000263); +emit_32(0); +emit_32(1103083130); +emit_32(1116000263); +emit_32(1081737216); +emit_32(1103917954); +emit_32(1116000263); +emit_32(3279552512); +emit_32(1083552091); +emit_32(1115291648); +emit_32(3279296528); +emit_32(1083005678); +emit_32(1115291648); +emit_32(3279040545); +emit_32(1081863968); +emit_32(1115291648); +emit_32(3278784496); +emit_32(1083192598); +emit_32(1115291648); +emit_32(3278528512); +emit_32(1085321521); +emit_32(1115291648); +emit_32(3278272528); +emit_32(1088639887); +emit_32(1115291648); +emit_32(3278016545); +emit_32(1090626592); +emit_32(1115291648); +emit_32(3277760496); +emit_32(1090904140); +emit_32(1115291648); +emit_32(3277504512); +emit_32(1091130580); +emit_32(1115291648); +emit_32(3277248528); +emit_32(1091114726); +emit_32(1115291648); +emit_32(3276992545); +emit_32(1092567129); +emit_32(1115291648); +emit_32(3276736496); +emit_32(1093130414); +emit_32(1115291648); +emit_32(3276480512); +emit_32(1093467636); +emit_32(1115291648); +emit_32(3276224528); +emit_32(1094287832); +emit_32(1115291648); +emit_32(3275968545); +emit_32(1095800822); +emit_32(1115291648); +emit_32(3275712496); +emit_32(1097484940); +emit_32(1115291648); +emit_32(3275456512); +emit_32(1099294310); +emit_32(1115291648); +emit_32(3275200528); +emit_32(1100172703); +emit_32(1115291648); +emit_32(3274944545); +emit_32(1101504656); +emit_32(1115291648); +emit_32(3274688496); +emit_32(1102638534); +emit_32(1115291648); +emit_32(3274432512); +emit_32(1103640238); +emit_32(1115291648); +emit_32(3274176528); +emit_32(1104536142); +emit_32(1115291648); +emit_32(3273920545); +emit_32(1105040926); +emit_32(1115291648); +emit_32(3273664496); +emit_32(1105781640); +emit_32(1115291648); +emit_32(3273408512); +emit_32(1106871845); +emit_32(1115291648); +emit_32(3273152528); +emit_32(1107552266); +emit_32(1115291648); +emit_32(3272896545); +emit_32(1107681686); +emit_32(1115291648); +emit_32(3272640496); +emit_32(1107745571); +emit_32(1115291648); +emit_32(3272384512); +emit_32(1107728531); +emit_32(1115291648); +emit_32(3272128528); +emit_32(1107564849); +emit_32(1115291648); +emit_32(3271872545); +emit_32(1107489876); +emit_32(1115291648); +emit_32(3271616496); +emit_32(1107455351); +emit_32(1115291648); +emit_32(3271163904); +emit_32(1107468721); +emit_32(1115291648); +emit_32(3270651937); +emit_32(1107084182); +emit_32(1115291648); +emit_32(3270139970); +emit_32(1107222279); +emit_32(1115291648); +emit_32(3269627871); +emit_32(1107484685); +emit_32(1115291648); +emit_32(3269115904); +emit_32(1107529302); +emit_32(1115291648); +emit_32(3268603937); +emit_32(1107488067); +emit_32(1115291648); +emit_32(3268091970); +emit_32(1107407117); +emit_32(1115291648); +emit_32(3267579911); +emit_32(1106883012); +emit_32(1115291648); +emit_32(3267067904); +emit_32(1106605454); +emit_32(1115291648); +emit_32(3266555911); +emit_32(1105505288); +emit_32(1115291648); +emit_32(3266043904); +emit_32(1104212551); +emit_32(1115291648); +emit_32(3265531911); +emit_32(1103004854); +emit_32(1115291648); +emit_32(3265019904); +emit_32(1102070835); +emit_32(1115291648); +emit_32(3264507911); +emit_32(1101098123); +emit_32(1115291648); +emit_32(3263995904); +emit_32(1100325323); +emit_32(1115291648); +emit_32(3263483911); +emit_32(1099328966); +emit_32(1115291648); +emit_32(3262775296); +emit_32(1098611216); +emit_32(1115291648); +emit_32(3261751309); +emit_32(1096735418); +emit_32(1115291648); +emit_32(3260727296); +emit_32(1095838571); +emit_32(1115291648); +emit_32(3259703309); +emit_32(1094605760); +emit_32(1115291648); +emit_32(3258679296); +emit_32(1092525459); +emit_32(1115291648); +emit_32(3257655309); +emit_32(1092767082); +emit_32(1115291648); +emit_32(3256631296); +emit_32(1093983535); +emit_32(1115291648); +emit_32(3255607309); +emit_32(1095249271); +emit_32(1115291648); +emit_32(3254386688); +emit_32(1096927937); +emit_32(1115291648); +emit_32(3252338714); +emit_32(1098207724); +emit_32(1115291648); +emit_32(3250290688); +emit_32(1099233441); +emit_32(1115291648); +emit_32(3248242714); +emit_32(1099875956); +emit_32(1115291648); +emit_32(3245998080); +emit_32(1100637117); +emit_32(1115291648); +emit_32(3241902132); +emit_32(1101503817); +emit_32(1115291648); +emit_32(3237609472); +emit_32(1102802531); +emit_32(1115291648); +emit_32(3229220864); +emit_32(1103593682); +emit_32(1115291648); +emit_32(0); +emit_32(1104232317); +emit_32(1115291648); +emit_32(1081737216); +emit_32(1104775951); +emit_32(1115291648); +emit_32(3279552512); +emit_32(1082632448); +emit_32(1114267661); +emit_32(3279296528); +emit_32(1083847999); +emit_32(1114267661); +emit_32(3279040545); +emit_32(1083453043); +emit_32(1114267661); +emit_32(3278784496); +emit_32(1084836240); +emit_32(1114267661); +emit_32(3278528512); +emit_32(1087335416); +emit_32(1114267661); +emit_32(3278272528); +emit_32(1088125267); +emit_32(1114267661); +emit_32(3278016545); +emit_32(1091016904); +emit_32(1114267661); +emit_32(3277760496); +emit_32(1091320320); +emit_32(1114267661); +emit_32(3277504512); +emit_32(1091823731); +emit_32(1114267661); +emit_32(3277248528); +emit_32(1092277020); +emit_32(1114267661); +emit_32(3276992545); +emit_32(1093461659); +emit_32(1114267661); +emit_32(3276736496); +emit_32(1095052768); +emit_32(1114267661); +emit_32(3276480512); +emit_32(1095490234); +emit_32(1114267661); +emit_32(3276224528); +emit_32(1095508899); +emit_32(1114267661); +emit_32(3275968545); +emit_32(1097193541); +emit_32(1114267661); +emit_32(3275712496); +emit_32(1098984561); +emit_32(1114267661); +emit_32(3275456512); +emit_32(1099457574); +emit_32(1114267661); +emit_32(3275200528); +emit_32(1100590141); +emit_32(1114267661); +emit_32(3274944545); +emit_32(1101940969); +emit_32(1114267661); +emit_32(3274688496); +emit_32(1103512417); +emit_32(1114267661); +emit_32(3274432512); +emit_32(1104276147); +emit_32(1114267661); +emit_32(3274176528); +emit_32(1104819310); +emit_32(1114267661); +emit_32(3273920545); +emit_32(1105352144); +emit_32(1114267661); +emit_32(3273664496); +emit_32(1106559369); +emit_32(1114267661); +emit_32(3273408512); +emit_32(1107364859); +emit_32(1114267661); +emit_32(3273152528); +emit_32(1107533470); +emit_32(1114267661); +emit_32(3272896545); +emit_32(1107506024); +emit_32(1114267661); +emit_32(3272640496); +emit_32(1107420801); +emit_32(1114267661); +emit_32(3272384512); +emit_32(1107402398); +emit_32(1114267661); +emit_32(3272128528); +emit_32(1107706013); +emit_32(1114267661); +emit_32(3271872545); +emit_32(1107658749); +emit_32(1114267661); +emit_32(3271616496); +emit_32(1107586292); +emit_32(1114267661); +emit_32(3271163904); +emit_32(1107376315); +emit_32(1114267661); +emit_32(3270651937); +emit_32(1107428560); +emit_32(1114267661); +emit_32(3270139970); +emit_32(1107381348); +emit_32(1114267661); +emit_32(3269627871); +emit_32(1107411416); +emit_32(1114267661); +emit_32(3269115904); +emit_32(1107441222); +emit_32(1114267661); +emit_32(3268603937); +emit_32(1107539552); +emit_32(1114267661); +emit_32(3268091970); +emit_32(1107219658); +emit_32(1114267661); +emit_32(3267579911); +emit_32(1106732804); +emit_32(1114267661); +emit_32(3267067904); +emit_32(1106474592); +emit_32(1114267661); +emit_32(3266555911); +emit_32(1105371857); +emit_32(1114267661); +emit_32(3266043904); +emit_32(1103908989); +emit_32(1114267661); +emit_32(3265531911); +emit_32(1102613892); +emit_32(1114267661); +emit_32(3265019904); +emit_32(1101793853); +emit_32(1114267661); +emit_32(3264507911); +emit_32(1101568305); +emit_32(1114267661); +emit_32(3263995904); +emit_32(1100542693); +emit_32(1114267661); +emit_32(3263483911); +emit_32(1099317327); +emit_32(1114267661); +emit_32(3262775296); +emit_32(1098087557); +emit_32(1114267661); +emit_32(3261751309); +emit_32(1096945867); +emit_32(1114267661); +emit_32(3260727296); +emit_32(1096008440); +emit_32(1114267661); +emit_32(3259703309); +emit_32(1094604292); +emit_32(1114267661); +emit_32(3258679296); +emit_32(1093760293); +emit_32(1114267661); +emit_32(3257655309); +emit_32(1095498203); +emit_32(1114267661); +emit_32(3256631296); +emit_32(1096500642); +emit_32(1114267661); +emit_32(3255607309); +emit_32(1097453063); +emit_32(1114267661); +emit_32(3254386688); +emit_32(1098431594); +emit_32(1114267661); +emit_32(3252338714); +emit_32(1099318061); +emit_32(1114267661); +emit_32(3250290688); +emit_32(1100353529); +emit_32(1114267661); +emit_32(3248242714); +emit_32(1100897373); +emit_32(1114267661); +emit_32(3245998080); +emit_32(1101979661); +emit_32(1114267661); +emit_32(3241902132); +emit_32(1102434481); +emit_32(1114267661); +emit_32(3237609472); +emit_32(1103617327); +emit_32(1114267661); +emit_32(3229220864); +emit_32(1104375972); +emit_32(1114267661); +emit_32(0); +emit_32(1104908963); +emit_32(1114267661); +emit_32(1081737216); +emit_32(1105382343); +emit_32(1114267661); +emit_32(3279552512); +emit_32(1080567970); +emit_32(1113243648); +emit_32(3279296528); +emit_32(1081431200); +emit_32(1113243648); +emit_32(3279040545); +emit_32(1083053640); +emit_32(1113243648); +emit_32(3278784496); +emit_32(1084804594); +emit_32(1113243648); +emit_32(3278528512); +emit_32(1089344530); +emit_32(1113243648); +emit_32(3278272528); +emit_32(1089662899); +emit_32(1113243648); +emit_32(3278016545); +emit_32(1090822970); +emit_32(1113243648); +emit_32(3277760496); +emit_32(1092219662); +emit_32(1113243648); +emit_32(3277504512); +emit_32(1093309615); +emit_32(1113243648); +emit_32(3277248528); +emit_32(1093760608); +emit_32(1113243648); +emit_32(3276992545); +emit_32(1094942563); +emit_32(1113243648); +emit_32(3276736496); +emit_32(1095970062); +emit_32(1113243648); +emit_32(3276480512); +emit_32(1096808609); +emit_32(1113243648); +emit_32(3276224528); +emit_32(1097144677); +emit_32(1113243648); +emit_32(3275968545); +emit_32(1097732299); +emit_32(1113243648); +emit_32(3275712496); +emit_32(1099213255); +emit_32(1113243648); +emit_32(3275456512); +emit_32(1100077335); +emit_32(1113243648); +emit_32(3275200528); +emit_32(1101037358); +emit_32(1113243648); +emit_32(3274944545); +emit_32(1102522142); +emit_32(1113243648); +emit_32(3274688496); +emit_32(1103670333); +emit_32(1113243648); +emit_32(3274432512); +emit_32(1104447013); +emit_32(1113243648); +emit_32(3274176528); +emit_32(1104860519); +emit_32(1113243648); +emit_32(3273920545); +emit_32(1105841200); +emit_32(1113243648); +emit_32(3273664496); +emit_32(1106724782); +emit_32(1113243648); +emit_32(3273408512); +emit_32(1107646900); +emit_32(1113243648); +emit_32(3273152528); +emit_32(1107527152); +emit_32(1113243648); +emit_32(3272896545); +emit_32(1107447854); +emit_32(1113243648); +emit_32(3272640496); +emit_32(1107457160); +emit_32(1113243648); +emit_32(3272384512); +emit_32(1107532238); +emit_32(1113243648); +emit_32(3272128528); +emit_32(1107881152); +emit_32(1113243648); +emit_32(3271872545); +emit_32(1107776897); +emit_32(1113243648); +emit_32(3271616496); +emit_32(1107520258); +emit_32(1113243648); +emit_32(3271163904); +emit_32(1107733591); +emit_32(1113243648); +emit_32(3270651937); +emit_32(1107557168); +emit_32(1113243648); +emit_32(3270139970); +emit_32(1107429845); +emit_32(1113243648); +emit_32(3269627871); +emit_32(1107409161); +emit_32(1113243648); +emit_32(3269115904); +emit_32(1107202618); +emit_32(1113243648); +emit_32(3268603937); +emit_32(1107218137); +emit_32(1113243648); +emit_32(3268091970); +emit_32(1107106621); +emit_32(1113243648); +emit_32(3267579911); +emit_32(1106476217); +emit_32(1113243648); +emit_32(3267067904); +emit_32(1105687006); +emit_32(1113243648); +emit_32(3266555911); +emit_32(1104462742); +emit_32(1113243648); +emit_32(3266043904); +emit_32(1103481222); +emit_32(1113243648); +emit_32(3265531911); +emit_32(1102608859); +emit_32(1113243648); +emit_32(3265019904); +emit_32(1101715630); +emit_32(1113243648); +emit_32(3264507911); +emit_32(1101203400); +emit_32(1113243648); +emit_32(3263995904); +emit_32(1100648337); +emit_32(1113243648); +emit_32(3263483911); +emit_32(1099410807); +emit_32(1113243648); +emit_32(3262775296); +emit_32(1097508009); +emit_32(1113243648); +emit_32(3261751309); +emit_32(1097324193); +emit_32(1113243648); +emit_32(3260727296); +emit_32(1096121791); +emit_32(1113243648); +emit_32(3259703309); +emit_32(1095057906); +emit_32(1113243648); +emit_32(3258679296); +emit_32(1095394709); +emit_32(1113243648); +emit_32(3257655309); +emit_32(1097088473); +emit_32(1113243648); +emit_32(3256631296); +emit_32(1098581226); +emit_32(1113243648); +emit_32(3255607309); +emit_32(1099014498); +emit_32(1113243648); +emit_32(3254386688); +emit_32(1099554462); +emit_32(1113243648); +emit_32(3252338714); +emit_32(1100356151); +emit_32(1113243648); +emit_32(3250290688); +emit_32(1101134404); +emit_32(1113243648); +emit_32(3248242714); +emit_32(1101886076); +emit_32(1113243648); +emit_32(3245998080); +emit_32(1103145992); +emit_32(1113243648); +emit_32(3241902132); +emit_32(1103709182); +emit_32(1113243648); +emit_32(3237609472); +emit_32(1104517530); +emit_32(1113243648); +emit_32(3229220864); +emit_32(1104959033); +emit_32(1113243648); +emit_32(0); +emit_32(1105369183); +emit_32(1113243648); +emit_32(1081737216); +emit_32(1105831238); +emit_32(1113243648); +emit_32(3279552512); +emit_32(1081067470); +emit_32(1112219661); +emit_32(3279296528); +emit_32(1081676273); +emit_32(1112219661); +emit_32(3279040545); +emit_32(1082388277); +emit_32(1112219661); +emit_32(3278784496); +emit_32(1084582317); +emit_32(1112219661); +emit_32(3278528512); +emit_32(1086962144); +emit_32(1112219661); +emit_32(3278272528); +emit_32(1088882737); +emit_32(1112219661); +emit_32(3278016545); +emit_32(1091161282); +emit_32(1112219661); +emit_32(3277760496); +emit_32(1092751983); +emit_32(1112219661); +emit_32(3277504512); +emit_32(1095008308); +emit_32(1112219661); +emit_32(3277248528); +emit_32(1095060318); +emit_32(1112219661); +emit_32(3276992545); +emit_32(1096171599); +emit_32(1112219661); +emit_32(3276736496); +emit_32(1096970718); +emit_32(1112219661); +emit_32(3276480512); +emit_32(1096845518); +emit_32(1112219661); +emit_32(3276224528); +emit_32(1097664037); +emit_32(1112219661); +emit_32(3275968545); +emit_32(1099269407); +emit_32(1112219661); +emit_32(3275712496); +emit_32(1099766956); +emit_32(1112219661); +emit_32(3275456512); +emit_32(1100617351); +emit_32(1112219661); +emit_32(3275200528); +emit_32(1101396967); +emit_32(1112219661); +emit_32(3274944545); +emit_32(1102752933); +emit_32(1112219661); +emit_32(3274688496); +emit_32(1103879838); +emit_32(1112219661); +emit_32(3274432512); +emit_32(1104593866); +emit_32(1112219661); +emit_32(3274176528); +emit_32(1105083131); +emit_32(1112219661); +emit_32(3273920545); +emit_32(1106256803); +emit_32(1112219661); +emit_32(3273664496); +emit_32(1106808091); +emit_32(1112219661); +emit_32(3273408512); +emit_32(1107450869); +emit_32(1112219661); +emit_32(3273152528); +emit_32(1107444944); +emit_32(1112219661); +emit_32(3272896545); +emit_32(1107418258); +emit_32(1112219661); +emit_32(3272640496); +emit_32(1107742425); +emit_32(1112219661); +emit_32(3272384512); +emit_32(1108019590); +emit_32(1112219661); +emit_32(3272128528); +emit_32(1107796584); +emit_32(1112219661); +emit_32(3271872545); +emit_32(1107736920); +emit_32(1112219661); +emit_32(3271616496); +emit_32(1107725360); +emit_32(1112219661); +emit_32(3271163904); +emit_32(1107830270); +emit_32(1112219661); +emit_32(3270651937); +emit_32(1107833101); +emit_32(1112219661); +emit_32(3270139970); +emit_32(1107955024); +emit_32(1112219661); +emit_32(3269627871); +emit_32(1107743788); +emit_32(1112219661); +emit_32(3269115904); +emit_32(1107368686); +emit_32(1112219661); +emit_32(3268603937); +emit_32(1107312194); +emit_32(1112219661); +emit_32(3268091970); +emit_32(1106815641); +emit_32(1112219661); +emit_32(3267579911); +emit_32(1106204059); +emit_32(1112219661); +emit_32(3267067904); +emit_32(1105597773); +emit_32(1112219661); +emit_32(3266555911); +emit_32(1104651905); +emit_32(1112219661); +emit_32(3266043904); +emit_32(1103516559); +emit_32(1112219661); +emit_32(3265531911); +emit_32(1102993162); +emit_32(1112219661); +emit_32(3265019904); +emit_32(1101898029); +emit_32(1112219661); +emit_32(3264507911); +emit_32(1100758804); +emit_32(1112219661); +emit_32(3263995904); +emit_32(1100657040); +emit_32(1112219661); +emit_32(3263483911); +emit_32(1099876637); +emit_32(1112219661); +emit_32(3262775296); +emit_32(1097071696); +emit_32(1112219661); +emit_32(3261751309); +emit_32(1097587910); +emit_32(1112219661); +emit_32(3260727296); +emit_32(1096851915); +emit_32(1112219661); +emit_32(3259703309); +emit_32(1095734447); +emit_32(1112219661); +emit_32(3258679296); +emit_32(1096755026); +emit_32(1112219661); +emit_32(3257655309); +emit_32(1098731382); +emit_32(1112219661); +emit_32(3256631296); +emit_32(1099251896); +emit_32(1112219661); +emit_32(3255607309); +emit_32(1099497577); +emit_32(1112219661); +emit_32(3254386688); +emit_32(1100323121); +emit_32(1112219661); +emit_32(3252338714); +emit_32(1101464601); +emit_32(1112219661); +emit_32(3250290688); +emit_32(1102066431); +emit_32(1112219661); +emit_32(3248242714); +emit_32(1102544581); +emit_32(1112219661); +emit_32(3245998080); +emit_32(1103985902); +emit_32(1112219661); +emit_32(3241902132); +emit_32(1104242698); +emit_32(1112219661); +emit_32(3237609472); +emit_32(1105399801); +emit_32(1112219661); +emit_32(3229220864); +emit_32(1105617119); +emit_32(1112219661); +emit_32(0); +emit_32(1106104864); +emit_32(1112219661); +emit_32(1081737216); +emit_32(1106473438); +emit_32(1112219661); +emit_32(3279552512); +emit_32(1080840432); +emit_32(1111195648); +emit_32(3279296528); +emit_32(1081651568); +emit_32(1111195648); +emit_32(3279040545); +emit_32(1082066175); +emit_32(1111195648); +emit_32(3278784496); +emit_32(1084264746); +emit_32(1111195648); +emit_32(3278528512); +emit_32(1088920821); +emit_32(1111195648); +emit_32(3278272528); +emit_32(1090060120); +emit_32(1111195648); +emit_32(3278016545); +emit_32(1091098882); +emit_32(1111195648); +emit_32(3277760496); +emit_32(1092897630); +emit_32(1111195648); +emit_32(3277504512); +emit_32(1093865780); +emit_32(1111195648); +emit_32(3277248528); +emit_32(1095144309); +emit_32(1111195648); +emit_32(3276992545); +emit_32(1096518363); +emit_32(1111195648); +emit_32(3276736496); +emit_32(1097299342); +emit_32(1111195648); +emit_32(3276480512); +emit_32(1098421109); +emit_32(1111195648); +emit_32(3276224528); +emit_32(1098491888); +emit_32(1111195648); +emit_32(3275968545); +emit_32(1099350986); +emit_32(1111195648); +emit_32(3275712496); +emit_32(1100200332); +emit_32(1111195648); +emit_32(3275456512); +emit_32(1100698092); +emit_32(1111195648); +emit_32(3275200528); +emit_32(1101450655); +emit_32(1111195648); +emit_32(3274944545); +emit_32(1103069866); +emit_32(1111195648); +emit_32(3274688496); +emit_32(1104305508); +emit_32(1111195648); +emit_32(3274432512); +emit_32(1105027557); +emit_32(1111195648); +emit_32(3274176528); +emit_32(1105330019); +emit_32(1111195648); +emit_32(3273920545); +emit_32(1106064336); +emit_32(1111195648); +emit_32(3273664496); +emit_32(1107261863); +emit_32(1111195648); +emit_32(3273408512); +emit_32(1107667531); +emit_32(1111195648); +emit_32(3273152528); +emit_32(1107670598); +emit_32(1111195648); +emit_32(3272896545); +emit_32(1107641159); +emit_32(1111195648); +emit_32(3272640496); +emit_32(1107722528); +emit_32(1111195648); +emit_32(3272384512); +emit_32(1108132181); +emit_32(1111195648); +emit_32(3272128528); +emit_32(1108041636); +emit_32(1111195648); +emit_32(3271872545); +emit_32(1107852499); +emit_32(1111195648); +emit_32(3271616496); +emit_32(1107940187); +emit_32(1111195648); +emit_32(3271163904); +emit_32(1108075584); +emit_32(1111195648); +emit_32(3270651937); +emit_32(1108051519); +emit_32(1111195648); +emit_32(3270139970); +emit_32(1108131185); +emit_32(1111195648); +emit_32(3269627871); +emit_32(1107856720); +emit_32(1111195648); +emit_32(3269115904); +emit_32(1107481775); +emit_32(1111195648); +emit_32(3268603937); +emit_32(1107354426); +emit_32(1111195648); +emit_32(3268091970); +emit_32(1106901729); +emit_32(1111195648); +emit_32(3267579911); +emit_32(1106228648); +emit_32(1111195648); +emit_32(3267067904); +emit_32(1105262753); +emit_32(1111195648); +emit_32(3266555911); +emit_32(1104721425); +emit_32(1111195648); +emit_32(3266043904); +emit_32(1103674474); +emit_32(1111195648); +emit_32(3265531911); +emit_32(1102786488); +emit_32(1111195648); +emit_32(3265019904); +emit_32(1102197555); +emit_32(1111195648); +emit_32(3264507911); +emit_32(1100931295); +emit_32(1111195648); +emit_32(3263995904); +emit_32(1100417440); +emit_32(1111195648); +emit_32(3263483911); +emit_32(1099561330); +emit_32(1111195648); +emit_32(3262775296); +emit_32(1098381787); +emit_32(1111195648); +emit_32(3261751309); +emit_32(1097372218); +emit_32(1111195648); +emit_32(3260727296); +emit_32(1097540724); +emit_32(1111195648); +emit_32(3259703309); +emit_32(1096128502); +emit_32(1111195648); +emit_32(3258679296); +emit_32(1098525337); +emit_32(1111195648); +emit_32(3257655309); +emit_32(1099283929); +emit_32(1111195648); +emit_32(3256631296); +emit_32(1099669281); +emit_32(1111195648); +emit_32(3255607309); +emit_32(1100104388); +emit_32(1111195648); +emit_32(3254386688); +emit_32(1101177448); +emit_32(1111195648); +emit_32(3252338714); +emit_32(1102411989); +emit_32(1111195648); +emit_32(3250290688); +emit_32(1102859731); +emit_32(1111195648); +emit_32(3248242714); +emit_32(1103261650); +emit_32(1111195648); +emit_32(3245998080); +emit_32(1104208881); +emit_32(1111195648); +emit_32(3241902132); +emit_32(1104930721); +emit_32(1111195648); +emit_32(3237609472); +emit_32(1105910668); +emit_32(1111195648); +emit_32(3229220864); +emit_32(1106135482); +emit_32(1111195648); +emit_32(0); +emit_32(1106438364); +emit_32(1111195648); +emit_32(1081737216); +emit_32(1106707585); +emit_32(1111195648); +emit_32(3279552512); +emit_32(1082299945); +emit_32(1110171661); +emit_32(3279296528); +emit_32(1082335492); +emit_32(1110171661); +emit_32(3279040545); +emit_32(1081611639); +emit_32(1110171661); +emit_32(3278784496); +emit_32(1084483730); +emit_32(1110171661); +emit_32(3278528512); +emit_32(1087813567); +emit_32(1110171661); +emit_32(3278272528); +emit_32(1090011655); +emit_32(1110171661); +emit_32(3278016545); +emit_32(1090662443); +emit_32(1110171661); +emit_32(3277760496); +emit_32(1091411913); +emit_32(1110171661); +emit_32(3277504512); +emit_32(1093599547); +emit_32(1110171661); +emit_32(3277248528); +emit_32(1095137283); +emit_32(1110171661); +emit_32(3276992545); +emit_32(1096248040); +emit_32(1110171661); +emit_32(3276736496); +emit_32(1097581409); +emit_32(1110171661); +emit_32(3276480512); +emit_32(1098493460); +emit_32(1110171661); +emit_32(3276224528); +emit_32(1098645189); +emit_32(1110171661); +emit_32(3275968545); +emit_32(1099528405); +emit_32(1110171661); +emit_32(3275712496); +emit_32(1100673398); +emit_32(1110171661); +emit_32(3275456512); +emit_32(1101618269); +emit_32(1110171661); +emit_32(3275200528); +emit_32(1102431073); +emit_32(1110171661); +emit_32(3274944545); +emit_32(1103528093); +emit_32(1110171661); +emit_32(3274688496); +emit_32(1104554597); +emit_32(1110171661); +emit_32(3274432512); +emit_32(1105069133); +emit_32(1110171661); +emit_32(3274176528); +emit_32(1105654658); +emit_32(1110171661); +emit_32(3273920545); +emit_32(1106835145); +emit_32(1110171661); +emit_32(3273664496); +emit_32(1107634160); +emit_32(1110171661); +emit_32(3273408512); +emit_32(1107894338); +emit_32(1110171661); +emit_32(3273152528); +emit_32(1107815222); +emit_32(1110171661); +emit_32(3272896545); +emit_32(1107886788); +emit_32(1110171661); +emit_32(3272640496); +emit_32(1107869984); +emit_32(1110171661); +emit_32(3272384512); +emit_32(1108048085); +emit_32(1110171661); +emit_32(3272128528); +emit_32(1108254890); +emit_32(1110171661); +emit_32(3271872545); +emit_32(1108213734); +emit_32(1110171661); +emit_32(3271616496); +emit_32(1108197324); +emit_32(1110171661); +emit_32(3271163904); +emit_32(1108442612); +emit_32(1110171661); +emit_32(3270651937); +emit_32(1108195515); +emit_32(1110171661); +emit_32(3270139970); +emit_32(1107913422); +emit_32(1110171661); +emit_32(3269627871); +emit_32(1108099754); +emit_32(1110171661); +emit_32(3269115904); +emit_32(1107690809); +emit_32(1110171661); +emit_32(3268603937); +emit_32(1107419726); +emit_32(1110171661); +emit_32(3268091970); +emit_32(1106916881); +emit_32(1110171661); +emit_32(3267579911); +emit_32(1106123581); +emit_32(1110171661); +emit_32(3267067904); +emit_32(1105152285); +emit_32(1110171661); +emit_32(3266555911); +emit_32(1104426985); +emit_32(1110171661); +emit_32(3266043904); +emit_32(1103754376); +emit_32(1110171661); +emit_32(3265531911); +emit_32(1102897113); +emit_32(1110171661); +emit_32(3265019904); +emit_32(1102036808); +emit_32(1110171661); +emit_32(3264507911); +emit_32(1100742237); +emit_32(1110171661); +emit_32(3263995904); +emit_32(1099863477); +emit_32(1110171661); +emit_32(3263483911); +emit_32(1099645950); +emit_32(1110171661); +emit_32(3262775296); +emit_32(1099481114); +emit_32(1110171661); +emit_32(3261751309); +emit_32(1098210135); +emit_32(1110171661); +emit_32(3260727296); +emit_32(1097645582); +emit_32(1110171661); +emit_32(3259703309); +emit_32(1097853619); +emit_32(1110171661); +emit_32(3258679296); +emit_32(1099526675); +emit_32(1110171661); +emit_32(3257655309); +emit_32(1100018090); +emit_32(1110171661); +emit_32(3256631296); +emit_32(1100522927); +emit_32(1110171661); +emit_32(3255607309); +emit_32(1100845993); +emit_32(1110171661); +emit_32(3254386688); +emit_32(1101870924); +emit_32(1110171661); +emit_32(3252338714); +emit_32(1102805362); +emit_32(1110171661); +emit_32(3250290688); +emit_32(1103401216); +emit_32(1110171661); +emit_32(3248242714); +emit_32(1103731255); +emit_32(1110171661); +emit_32(3245998080); +emit_32(1104590458); +emit_32(1110171661); +emit_32(3241902132); +emit_32(1105688946); +emit_32(1110171661); +emit_32(3237609472); +emit_32(1106199393); +emit_32(1110171661); +emit_32(3229220864); +emit_32(1106912477); +emit_32(1110171661); +emit_32(0); +emit_32(1106977279); +emit_32(1110171661); +emit_32(1081737216); +emit_32(1107240944); +emit_32(1110171661); +emit_32(3279552512); +emit_32(1082717131); +emit_32(1109147648); +emit_32(3279296528); +emit_32(1082557014); +emit_32(1109147648); +emit_32(3279040545); +emit_32(1081304070); +emit_32(1109147648); +emit_32(3278784496); +emit_32(1083792278); +emit_32(1109147648); +emit_32(3278528512); +emit_32(1085314873); +emit_32(1109147648); +emit_32(3278272528); +emit_32(1088245664); +emit_32(1109147648); +emit_32(3278016545); +emit_32(1090788797); +emit_32(1109147648); +emit_32(3277760496); +emit_32(1091410718); +emit_32(1109147648); +emit_32(3277504512); +emit_32(1092169803); +emit_32(1109147648); +emit_32(3277248528); +emit_32(1094073608); +emit_32(1109147648); +emit_32(3276992545); +emit_32(1095322147); +emit_32(1109147648); +emit_32(3276736496); +emit_32(1097073584); +emit_32(1109147648); +emit_32(3276480512); +emit_32(1097631321); +emit_32(1109147648); +emit_32(3276224528); +emit_32(1098886781); +emit_32(1109147648); +emit_32(3275968545); +emit_32(1099653448); +emit_32(1109147648); +emit_32(3275712496); +emit_32(1100796029); +emit_32(1109147648); +emit_32(3275456512); +emit_32(1102110786); +emit_32(1109147648); +emit_32(3275200528); +emit_32(1103014553); +emit_32(1109147648); +emit_32(3274944545); +emit_32(1103661420); +emit_32(1109147648); +emit_32(3274688496); +emit_32(1104730758); +emit_32(1109147648); +emit_32(3274432512); +emit_32(1105461248); +emit_32(1109147648); +emit_32(3274176528); +emit_32(1106228019); +emit_32(1109147648); +emit_32(3273920545); +emit_32(1107398361); +emit_32(1109147648); +emit_32(3273664496); +emit_32(1107773987); +emit_32(1109147648); +emit_32(3273408512); +emit_32(1107908336); +emit_32(1109147648); +emit_32(3273152528); +emit_32(1107942729); +emit_32(1109147648); +emit_32(3272896545); +emit_32(1108010231); +emit_32(1109147648); +emit_32(3272640496); +emit_32(1107850140); +emit_32(1109147648); +emit_32(3272384512); +emit_32(1108057339); +emit_32(1109147648); +emit_32(3272128528); +emit_32(1108245977); +emit_32(1109147648); +emit_32(3271872545); +emit_32(1108269937); +emit_32(1109147648); +emit_32(3271616496); +emit_32(1108532291); +emit_32(1109147648); +emit_32(3271163904); +emit_32(1108595809); +emit_32(1109147648); +emit_32(3270651937); +emit_32(1108363942); +emit_32(1109147648); +emit_32(3270139970); +emit_32(1108139599); +emit_32(1109147648); +emit_32(3269627871); +emit_32(1108065465); +emit_32(1109147648); +emit_32(3269115904); +emit_32(1107970150); +emit_32(1109147648); +emit_32(3268603937); +emit_32(1107690678); +emit_32(1109147648); +emit_32(3268091970); +emit_32(1106957042); +emit_32(1109147648); +emit_32(3267579911); +emit_32(1106262517); +emit_32(1109147648); +emit_32(3267067904); +emit_32(1105527937); +emit_32(1109147648); +emit_32(3266555911); +emit_32(1104380638); +emit_32(1109147648); +emit_32(3266043904); +emit_32(1103529719); +emit_32(1109147648); +emit_32(3265531911); +emit_32(1102593130); +emit_32(1109147648); +emit_32(3265019904); +emit_32(1101585816); +emit_32(1109147648); +emit_32(3264507911); +emit_32(1100545471); +emit_32(1109147648); +emit_32(3263995904); +emit_32(1100004144); +emit_32(1109147648); +emit_32(3263483911); +emit_32(1099601124); +emit_32(1109147648); +emit_32(3262775296); +emit_32(1099485518); +emit_32(1109147648); +emit_32(3261751309); +emit_32(1099132987); +emit_32(1109147648); +emit_32(3260727296); +emit_32(1098562037); +emit_32(1109147648); +emit_32(3259703309); +emit_32(1099204605); +emit_32(1109147648); +emit_32(3258679296); +emit_32(1100206834); +emit_32(1109147648); +emit_32(3257655309); +emit_32(1100697777); +emit_32(1109147648); +emit_32(3256631296); +emit_32(1100970774); +emit_32(1109147648); +emit_32(3255607309); +emit_32(1101185522); +emit_32(1109147648); +emit_32(3254386688); +emit_32(1102281336); +emit_32(1109147648); +emit_32(3252338714); +emit_32(1103401478); +emit_32(1109147648); +emit_32(3250290688); +emit_32(1103912763); +emit_32(1109147648); +emit_32(3248242714); +emit_32(1104404808); +emit_32(1109147648); +emit_32(3245998080); +emit_32(1105352196); +emit_32(1109147648); +emit_32(3241902132); +emit_32(1106248519); +emit_32(1109147648); +emit_32(3237609472); +emit_32(1107362631); +emit_32(1109147648); +emit_32(3229220864); +emit_32(1107724259); +emit_32(1109147648); +emit_32(0); +emit_32(1107777290); +emit_32(1109147648); +emit_32(1081737216); +emit_32(1108060956); +emit_32(1109147648); +emit_32(3279552512); +emit_32(1081790232); +emit_32(1108123661); +emit_32(3279296528); +emit_32(1079535290); +emit_32(1108123661); +emit_32(3279040545); +emit_32(1079065864); +emit_32(1108123661); +emit_32(3278784496); +emit_32(1082272577); +emit_32(1108123661); +emit_32(3278528512); +emit_32(1083963574); +emit_32(1108123661); +emit_32(3278272528); +emit_32(1087349677); +emit_32(1108123661); +emit_32(3278016545); +emit_32(1088785241); +emit_32(1108123661); +emit_32(3277760496); +emit_32(1090741705); +emit_32(1108123661); +emit_32(3277504512); +emit_32(1090749360); +emit_32(1108123661); +emit_32(3277248528); +emit_32(1093053448); +emit_32(1108123661); +emit_32(3276992545); +emit_32(1094660601); +emit_32(1108123661); +emit_32(3276736496); +emit_32(1096196555); +emit_32(1108123661); +emit_32(3276480512); +emit_32(1096902351); +emit_32(1108123661); +emit_32(3276224528); +emit_32(1098391434); +emit_32(1108123661); +emit_32(3275968545); +emit_32(1099380084); +emit_32(1108123661); +emit_32(3275712496); +emit_32(1101235225); +emit_32(1108123661); +emit_32(3275456512); +emit_32(1102578188); +emit_32(1108123661); +emit_32(3275200528); +emit_32(1103112385); +emit_32(1108123661); +emit_32(3274944545); +emit_32(1103997541); +emit_32(1108123661); +emit_32(3274688496); +emit_32(1104833046); +emit_32(1108123661); +emit_32(3274432512); +emit_32(1105701582); +emit_32(1108123661); +emit_32(3274176528); +emit_32(1106849458); +emit_32(1108123661); +emit_32(3273920545); +emit_32(1107522617); +emit_32(1108123661); +emit_32(3273664496); +emit_32(1107703025); +emit_32(1108123661); +emit_32(3273408512); +emit_32(1107971565); +emit_32(1108123661); +emit_32(3273152528); +emit_32(1107971565); +emit_32(1108123661); +emit_32(3272896545); +emit_32(1107873025); +emit_32(1108123661); +emit_32(3272640496); +emit_32(1108008685); +emit_32(1108123661); +emit_32(3272384512); +emit_32(1108230878); +emit_32(1108123661); +emit_32(3272128528); +emit_32(1108292220); +emit_32(1108123661); +emit_32(3271872545); +emit_32(1108636520); +emit_32(1108123661); +emit_32(3271616496); +emit_32(1108671909); +emit_32(1108123661); +emit_32(3271163904); +emit_32(1108573789); +emit_32(1108123661); +emit_32(3270651937); +emit_32(1108191583); +emit_32(1108123661); +emit_32(3270139970); +emit_32(1108044546); +emit_32(1108123661); +emit_32(3269627871); +emit_32(1108195856); +emit_32(1108123661); +emit_32(3269115904); +emit_32(1108061848); +emit_32(1108123661); +emit_32(3268603937); +emit_32(1107692487); +emit_32(1108123661); +emit_32(3268091970); +emit_32(1107358332); +emit_32(1108123661); +emit_32(3267579911); +emit_32(1106436476); +emit_32(1108123661); +emit_32(3267067904); +emit_32(1105876117); +emit_32(1108123661); +emit_32(3266555911); +emit_32(1104926002); +emit_32(1108123661); +emit_32(3266043904); +emit_32(1103527150); +emit_32(1108123661); +emit_32(3265531911); +emit_32(1102838969); +emit_32(1108123661); +emit_32(3265019904); +emit_32(1101768163); +emit_32(1108123661); +emit_32(3264507911); +emit_32(1100951952); +emit_32(1108123661); +emit_32(3263995904); +emit_32(1099817497); +emit_32(1108123661); +emit_32(3263483911); +emit_32(1099592683); +emit_32(1108123661); +emit_32(3262775296); +emit_32(1099523424); +emit_32(1108123661); +emit_32(3261751309); +emit_32(1099184734); +emit_32(1108123661); +emit_32(3260727296); +emit_32(1099580100); +emit_32(1108123661); +emit_32(3259703309); +emit_32(1100319870); +emit_32(1108123661); +emit_32(3258679296); +emit_32(1100702181); +emit_32(1108123661); +emit_32(3257655309); +emit_32(1101110811); +emit_32(1108123661); +emit_32(3256631296); +emit_32(1101752487); +emit_32(1108123661); +emit_32(3255607309); +emit_32(1101832074); +emit_32(1108123661); +emit_32(3254386688); +emit_32(1103107038); +emit_32(1108123661); +emit_32(3252338714); +emit_32(1103861173); +emit_32(1108123661); +emit_32(3250290688); +emit_32(1104152415); +emit_32(1108123661); +emit_32(3248242714); +emit_32(1104902672); +emit_32(1108123661); +emit_32(3245998080); +emit_32(1106376602); +emit_32(1108123661); +emit_32(3241902132); +emit_32(1107508593); +emit_32(1108123661); +emit_32(3237609472); +emit_32(1108028267); +emit_32(1108123661); +emit_32(3229220864); +emit_32(1108316180); +emit_32(1108123661); +emit_32(0); +emit_32(1108600553); +emit_32(1108123661); +emit_32(1081737216); +emit_32(1109011386); +emit_32(1108123661); +emit_32(3279552512); +emit_32(1074938711); +emit_32(1106903040); +emit_32(3279296528); +emit_32(1070708671); +emit_32(1106903040); +emit_32(3279040545); +emit_32(1075430996); +emit_32(1106903040); +emit_32(3278784496); +emit_32(1078754772); +emit_32(1106903040); +emit_32(3278528512); +emit_32(1082105015); +emit_32(1106903040); +emit_32(3278272528); +emit_32(1084220747); +emit_32(1106903040); +emit_32(3278016545); +emit_32(1085553718); +emit_32(1106903040); +emit_32(3277760496); +emit_32(1088135228); +emit_32(1106903040); +emit_32(3277504512); +emit_32(1089208635); +emit_32(1106903040); +emit_32(3277248528); +emit_32(1091931860); +emit_32(1106903040); +emit_32(3276992545); +emit_32(1094402336); +emit_32(1106903040); +emit_32(3276736496); +emit_32(1096213751); +emit_32(1106903040); +emit_32(3276480512); +emit_32(1097279629); +emit_32(1106903040); +emit_32(3276224528); +emit_32(1098783601); +emit_32(1106903040); +emit_32(3275968545); +emit_32(1099888067); +emit_32(1106903040); +emit_32(3275712496); +emit_32(1101525837); +emit_32(1106903040); +emit_32(3275456512); +emit_32(1102857267); +emit_32(1106903040); +emit_32(3275200528); +emit_32(1103317277); +emit_32(1106903040); +emit_32(3274944545); +emit_32(1104193048); +emit_32(1106903040); +emit_32(3274688496); +emit_32(1105188461); +emit_32(1106903040); +emit_32(3274432512); +emit_32(1105975732); +emit_32(1106903040); +emit_32(3274176528); +emit_32(1107142692); +emit_32(1106903040); +emit_32(3273920545); +emit_32(1107580315); +emit_32(1106903040); +emit_32(3273664496); +emit_32(1107715634); +emit_32(1106903040); +emit_32(3273408512); +emit_32(1107697441); +emit_32(1106903040); +emit_32(3273152528); +emit_32(1107818683); +emit_32(1106903040); +emit_32(3272896545); +emit_32(1108195331); +emit_32(1106903040); +emit_32(3272640496); +emit_32(1108463609); +emit_32(1106903040); +emit_32(3272384512); +emit_32(1108323782); +emit_32(1106903040); +emit_32(3272128528); +emit_32(1108524374); +emit_32(1106903040); +emit_32(3271872545); +emit_32(1108820912); +emit_32(1106903040); +emit_32(3271616496); +emit_32(1108768614); +emit_32(1106903040); +emit_32(3271163904); +emit_32(1108591929); +emit_32(1106903040); +emit_32(3270651937); +emit_32(1108250146); +emit_32(1106903040); +emit_32(3270139970); +emit_32(1108083370); +emit_32(1106903040); +emit_32(3269627871); +emit_32(1108183876); +emit_32(1106903040); +emit_32(3269115904); +emit_32(1107985354); +emit_32(1106903040); +emit_32(3268603937); +emit_32(1107793333); +emit_32(1106903040); +emit_32(3268091970); +emit_32(1107344595); +emit_32(1106903040); +emit_32(3267579911); +emit_32(1106660190); +emit_32(1106903040); +emit_32(3267067904); +emit_32(1105863377); +emit_32(1106903040); +emit_32(3266555911); +emit_32(1104810344); +emit_32(1106903040); +emit_32(3266043904); +emit_32(1103848328); +emit_32(1106903040); +emit_32(3265531911); +emit_32(1102592396); +emit_32(1106903040); +emit_32(3265019904); +emit_32(1101769893); +emit_32(1106903040); +emit_32(3264507911); +emit_32(1100719378); +emit_32(1106903040); +emit_32(3263995904); +emit_32(1100007709); +emit_32(1106903040); +emit_32(3263483911); +emit_32(1099495585); +emit_32(1106903040); +emit_32(3262775296); +emit_32(1099523739); +emit_32(1106903040); +emit_32(3261751309); +emit_32(1099506857); +emit_32(1106903040); +emit_32(3260727296); +emit_32(1100188693); +emit_32(1106903040); +emit_32(3259703309); +emit_32(1100974496); +emit_32(1106903040); +emit_32(3258679296); +emit_32(1101640447); +emit_32(1106903040); +emit_32(3257655309); +emit_32(1101639503); +emit_32(1106903040); +emit_32(3256631296); +emit_32(1102123945); +emit_32(1106903040); +emit_32(3255607309); +emit_32(1102739250); +emit_32(1106903040); +emit_32(3254386688); +emit_32(1103471260); +emit_32(1106903040); +emit_32(3252338714); +emit_32(1104291457); +emit_32(1106903040); +emit_32(3250290688); +emit_32(1104973241); +emit_32(1106903040); +emit_32(3248242714); +emit_32(1106462586); +emit_32(1106903040); +emit_32(3245998080); +emit_32(1107570275); +emit_32(1106903040); +emit_32(3241902132); +emit_32(1108078939); +emit_32(1106903040); +emit_32(3237609472); +emit_32(1108626034); +emit_32(1106903040); +emit_32(3229220864); +emit_32(1109189434); +emit_32(1106903040); +emit_32(0); +emit_32(1109489300); +emit_32(1106903040); +emit_32(1081737216); +emit_32(1109770397); +emit_32(1106903040); +emit_32(3279552512); +emit_32(1056202922); +emit_32(1104855066); +emit_32(3279296528); +emit_32(1059176634); +emit_32(1104855066); +emit_32(3279040545); +emit_32(1067152489); +emit_32(1104855066); +emit_32(3278784496); +emit_32(1069776361); +emit_32(1104855066); +emit_32(3278528512); +emit_32(1076809790); +emit_32(1104855066); +emit_32(3278272528); +emit_32(1080678154); +emit_32(1104855066); +emit_32(3278016545); +emit_32(1084300292); +emit_32(1104855066); +emit_32(3277760496); +emit_32(1086892330); +emit_32(1104855066); +emit_32(3277504512); +emit_32(1089616510); +emit_32(1104855066); +emit_32(3277248528); +emit_32(1092235758); +emit_32(1104855066); +emit_32(3276992545); +emit_32(1094086505); +emit_32(1104855066); +emit_32(3276736496); +emit_32(1095456260); +emit_32(1104855066); +emit_32(3276480512); +emit_32(1097209794); +emit_32(1104855066); +emit_32(3276224528); +emit_32(1098815478); +emit_32(1104855066); +emit_32(3275968545); +emit_32(1099901331); +emit_32(1104855066); +emit_32(3275712496); +emit_32(1101448138); +emit_32(1104855066); +emit_32(3275456512); +emit_32(1102457340); +emit_32(1104855066); +emit_32(3275200528); +emit_32(1103405724); +emit_32(1104855014); +emit_32(3274944545); +emit_32(1104703652); +emit_32(1104855066); +emit_32(3274688496); +emit_32(1105909409); +emit_32(1104855014); +emit_32(3274432512); +emit_32(1106485392); +emit_32(1104855066); +emit_32(3274176528); +emit_32(1107410708); +emit_32(1104855014); +emit_32(3273920545); +emit_32(1107950751); +emit_32(1104855066); +emit_32(3273664496); +emit_32(1108072569); +emit_32(1104855014); +emit_32(3273408512); +emit_32(1108067090); +emit_32(1104855066); +emit_32(3273152528); +emit_32(1108270514); +emit_32(1104855014); +emit_32(3272896545); +emit_32(1108617121); +emit_32(1104855066); +emit_32(3272640496); +emit_32(1108893604); +emit_32(1104855014); +emit_32(3272384512); +emit_32(1108708478); +emit_32(1104855066); +emit_32(3272128528); +emit_32(1108458498); +emit_32(1104855014); +emit_32(3271872545); +emit_32(1108616544); +emit_32(1104855066); +emit_32(3271616496); +emit_32(1108674898); +emit_32(1104855014); +emit_32(3271163904); +emit_32(1108489064); +emit_32(1104855066); +emit_32(3270651937); +emit_32(1108208884); +emit_32(1104855014); +emit_32(3270139970); +emit_32(1108168330); +emit_32(1104855066); +emit_32(3269627871); +emit_32(1107919032); +emit_32(1104855014); +emit_32(3269115904); +emit_32(1107884900); +emit_32(1104855066); +emit_32(3268603937); +emit_32(1107737995); +emit_32(1104855014); +emit_32(3268091970); +emit_32(1107388714); +emit_32(1104855066); +emit_32(3267579911); +emit_32(1106305876); +emit_32(1104855014); +emit_32(3267067904); +emit_32(1105456634); +emit_32(1104855066); +emit_32(3266555911); +emit_32(1104695683); +emit_32(1104855014); +emit_32(3266043904); +emit_32(1103610459); +emit_32(1104855066); +emit_32(3265531911); +emit_32(1102562093); +emit_32(1104855014); +emit_32(3265019904); +emit_32(1101922409); +emit_32(1104855066); +emit_32(3264507911); +emit_32(1100403809); +emit_32(1104855066); +emit_32(3263995904); +emit_32(1100079589); +emit_32(1104855066); +emit_32(3263483911); +emit_32(1100150630); +emit_32(1104855066); +emit_32(3262775296); +emit_32(1100309489); +emit_32(1104855066); +emit_32(3261751309); +emit_32(1100247676); +emit_32(1104855066); +emit_32(3260727296); +emit_32(1100564555); +emit_32(1104855066); +emit_32(3259703309); +emit_32(1101442528); +emit_32(1104855066); +emit_32(3258679296); +emit_32(1101848484); +emit_32(1104855066); +emit_32(3257655309); +emit_32(1102017567); +emit_32(1104855014); +emit_32(3256631296); +emit_32(1102603144); +emit_32(1104855066); +emit_32(3255607309); +emit_32(1103556772); +emit_32(1104855014); +emit_32(3254386688); +emit_32(1103988313); +emit_32(1104855066); +emit_32(3252338714); +emit_32(1105183113); +emit_32(1104855014); +emit_32(3250290688); +emit_32(1106410471); +emit_32(1104855066); +emit_32(3248242714); +emit_32(1107817844); +emit_32(1104855014); +emit_32(3245998080); +emit_32(1108265874); +emit_32(1104855066); +emit_32(3241902132); +emit_32(1108848489); +emit_32(1104855014); +emit_32(3237609472); +emit_32(1109428929); +emit_32(1104855066); +emit_32(3229220864); +emit_32(1109814464); +emit_32(1104855014); +emit_32(0); +emit_32(1109989261); +emit_32(1104855066); +emit_32(1081737216); +emit_32(1110109952); +emit_32(1104855014); +emit_32(3279552512); +emit_32(1043753825); +emit_32(1102807040); +emit_32(3279296528); +emit_32(1066019523); +emit_32(1102807040); +emit_32(3279040545); +emit_32(1069754970); +emit_32(1102807040); +emit_32(3278784496); +emit_32(1076201867); +emit_32(1102807040); +emit_32(3278528512); +emit_32(1080094139); +emit_32(1102807040); +emit_32(3278272528); +emit_32(1082614937); +emit_32(1102807040); +emit_32(3278016545); +emit_32(1085915917); +emit_32(1102807040); +emit_32(3277760496); +emit_32(1088968951); +emit_32(1102807040); +emit_32(3277504512); +emit_32(1091412437); +emit_32(1102807040); +emit_32(3277248528); +emit_32(1093562951); +emit_32(1102807040); +emit_32(3276992545); +emit_32(1095461818); +emit_32(1102807040); +emit_32(3276736496); +emit_32(1097780324); +emit_32(1102807040); +emit_32(3276480512); +emit_32(1098541276); +emit_32(1102807040); +emit_32(3276224528); +emit_32(1099184996); +emit_32(1102807040); +emit_32(3275968545); +emit_32(1099512414); +emit_32(1102807040); +emit_32(3275712496); +emit_32(1101300079); +emit_32(1102807040); +emit_32(3275456512); +emit_32(1102630565); +emit_32(1102807040); +emit_32(3275200528); +emit_32(1103513990); +emit_32(1102807040); +emit_32(3274944545); +emit_32(1104603251); +emit_32(1102807040); +emit_32(3274688496); +emit_32(1105499154); +emit_32(1102807040); +emit_32(3274432512); +emit_32(1106400667); +emit_32(1102807040); +emit_32(3274176528); +emit_32(1107499889); +emit_32(1102807040); +emit_32(3273920545); +emit_32(1107983047); +emit_32(1102807040); +emit_32(3273664496); +emit_32(1108263620); +emit_32(1102807040); +emit_32(3273408512); +emit_32(1108637542); +emit_32(1102807040); +emit_32(3273152528); +emit_32(1108628367); +emit_32(1102807040); +emit_32(3272896545); +emit_32(1108868989); +emit_32(1102807040); +emit_32(3272640496); +emit_32(1109049213); +emit_32(1102807040); +emit_32(3272384512); +emit_32(1108849748); +emit_32(1102807040); +emit_32(3272128528); +emit_32(1108540811); +emit_32(1102807040); +emit_32(3271872545); +emit_32(1108655184); +emit_32(1102807040); +emit_32(3271616496); +emit_32(1108572425); +emit_32(1102807040); +emit_32(3271163904); +emit_32(1108411810); +emit_32(1102807040); +emit_32(3270651937); +emit_32(1108042344); +emit_32(1102807040); +emit_32(3270139970); +emit_32(1107971460); +emit_32(1102807040); +emit_32(3269627871); +emit_32(1107793412); +emit_32(1102807040); +emit_32(3269115904); +emit_32(1107689131); +emit_32(1102807040); +emit_32(3268603937); +emit_32(1107563643); +emit_32(1102807040); +emit_32(3268091970); +emit_32(1107010152); +emit_32(1102807040); +emit_32(3267579911); +emit_32(1106032669); +emit_32(1102807040); +emit_32(3267067904); +emit_32(1105136609); +emit_32(1102807040); +emit_32(3266555911); +emit_32(1104406695); +emit_32(1102807040); +emit_32(3266043904); +emit_32(1103385749); +emit_32(1102807040); +emit_32(3265531911); +emit_32(1102373034); +emit_32(1102807040); +emit_32(3265019904); +emit_32(1101728317); +emit_32(1102807040); +emit_32(3264507911); +emit_32(1100615464); +emit_32(1102807040); +emit_32(3263995904); +emit_32(1100840278); +emit_32(1102807040); +emit_32(3263483911); +emit_32(1100652636); +emit_32(1102807040); +emit_32(3262775296); +emit_32(1101193963); +emit_32(1102807040); +emit_32(3261751309); +emit_32(1101527463); +emit_32(1102807040); +emit_32(3260727296); +emit_32(1101300761); +emit_32(1102807040); +emit_32(3259703309); +emit_32(1101861382); +emit_32(1102807040); +emit_32(3258679296); +emit_32(1102090338); +emit_32(1102807040); +emit_32(3257655309); +emit_32(1102730966); +emit_32(1102807040); +emit_32(3256631296); +emit_32(1103554255); +emit_32(1102807040); +emit_32(3255607309); +emit_32(1104113408); +emit_32(1102807040); +emit_32(3254386688); +emit_32(1104786647); +emit_32(1102807040); +emit_32(3252338714); +emit_32(1106105913); +emit_32(1102807040); +emit_32(3250290688); +emit_32(1107509877); +emit_32(1102807040); +emit_32(3248242714); +emit_32(1108222175); +emit_32(1102807040); +emit_32(3245998080); +emit_32(1108925324); +emit_32(1102807040); +emit_32(3241902132); +emit_32(1109456873); +emit_32(1102807040); +emit_32(3237609472); +emit_32(1109851609); +emit_32(1102807040); +emit_32(3229220864); +emit_32(1110277358); +emit_32(1102807040); +emit_32(0); +emit_32(1110377130); +emit_32(1102807040); +emit_32(1081737216); +emit_32(1110619796); +emit_32(1102807040); +emit_32(3279552512); +emit_32(1041074638); +emit_32(1100759066); +emit_32(3279296528); +emit_32(1068712015); +emit_32(1100759066); +emit_32(3279040545); +emit_32(1079048248); +emit_32(1100759066); +emit_32(3278784496); +emit_32(1080674002); +emit_32(1100759066); +emit_32(3278528512); +emit_32(1084030494); +emit_32(1100759066); +emit_32(3278272528); +emit_32(1086394970); +emit_32(1100759066); +emit_32(3278016545); +emit_32(1090514279); +emit_32(1100759066); +emit_32(3277760496); +emit_32(1092005166); +emit_32(1100759066); +emit_32(3277504512); +emit_32(1092661805); +emit_32(1100759066); +emit_32(3277248528); +emit_32(1094882479); +emit_32(1100759066); +emit_32(3276992545); +emit_32(1096495818); +emit_32(1100759066); +emit_32(3276736496); +emit_32(1098656304); +emit_32(1100759066); +emit_32(3276480512); +emit_32(1098988860); +emit_32(1100759066); +emit_32(3276224528); +emit_32(1099485466); +emit_32(1100759066); +emit_32(3275968545); +emit_32(1100054109); +emit_32(1100759066); +emit_32(3275712496); +emit_32(1101363203); +emit_32(1100759066); +emit_32(3275456512); +emit_32(1102623015); +emit_32(1100759014); +emit_32(3275200528); +emit_32(1103260025); +emit_32(1100759066); +emit_32(3274944545); +emit_32(1104497764); +emit_32(1100759014); +emit_32(3274688496); +emit_32(1105320739); +emit_32(1100759066); +emit_32(3274432512); +emit_32(1106586055); +emit_32(1100759014); +emit_32(3274176528); +emit_32(1107523640); +emit_32(1100759066); +emit_32(3273920545); +emit_32(1108105783); +emit_32(1100759014); +emit_32(3273664496); +emit_32(1108678148); +emit_32(1100759066); +emit_32(3273408512); +emit_32(1109027062); +emit_32(1100759014); +emit_32(3273152528); +emit_32(1108942022); +emit_32(1100759066); +emit_32(3272896545); +emit_32(1108995290); +emit_32(1100759014); +emit_32(3272640496); +emit_32(1108955129); +emit_32(1100759066); +emit_32(3272384512); +emit_32(1108906895); +emit_32(1100759014); +emit_32(3272128528); +emit_32(1108765993); +emit_32(1100759014); +emit_32(3271872545); +emit_32(1108661948); +emit_32(1100759014); +emit_32(3271616496); +emit_32(1108494097); +emit_32(1100759014); +emit_32(3271163904); +emit_32(1108408166); +emit_32(1100759014); +emit_32(3270651937); +emit_32(1107959611); +emit_32(1100759014); +emit_32(3270139970); +emit_32(1107654974); +emit_32(1100759014); +emit_32(3269627871); +emit_32(1107500859); +emit_32(1100759014); +emit_32(3269115904); +emit_32(1107220916); +emit_32(1100759014); +emit_32(3268603937); +emit_32(1106950121); +emit_32(1100759014); +emit_32(3268091970); +emit_32(1106110684); +emit_32(1100759014); +emit_32(3267579911); +emit_32(1105572449); +emit_32(1100759014); +emit_32(3267067904); +emit_32(1105141642); +emit_32(1100759014); +emit_32(3266555911); +emit_32(1104163950); +emit_32(1100759014); +emit_32(3266043904); +emit_32(1103388685); +emit_32(1100759014); +emit_32(3265531911); +emit_32(1102762790); +emit_32(1100759014); +emit_32(3265019904); +emit_32(1101771361); +emit_32(1100759066); +emit_32(3264507911); +emit_32(1101188668); +emit_32(1100759066); +emit_32(3263995904); +emit_32(1101103314); +emit_32(1100759066); +emit_32(3263483911); +emit_32(1101520595); +emit_32(1100759066); +emit_32(3262775296); +emit_32(1102173438); +emit_32(1100759014); +emit_32(3261751309); +emit_32(1102239498); +emit_32(1100759014); +emit_32(3260727296); +emit_32(1102454928); +emit_32(1100759014); +emit_32(3259703309); +emit_32(1102538762); +emit_32(1100759014); +emit_32(3258679296); +emit_32(1102868120); +emit_32(1100759014); +emit_32(3257655309); +emit_32(1103304380); +emit_32(1100759014); +emit_32(3256631296); +emit_32(1103894256); +emit_32(1100759014); +emit_32(3255607309); +emit_32(1104606187); +emit_32(1100759014); +emit_32(3254386688); +emit_32(1105706615); +emit_32(1100759014); +emit_32(3252338714); +emit_32(1106778469); +emit_32(1100759014); +emit_32(3250290688); +emit_32(1108039618); +emit_32(1100759014); +emit_32(3248242714); +emit_32(1108668894); +emit_32(1100759014); +emit_32(3245998080); +emit_32(1109286558); +emit_32(1100759014); +emit_32(3241902132); +emit_32(1109804738); +emit_32(1100759014); +emit_32(3237609472); +emit_32(1110243829); +emit_32(1100759014); +emit_32(3229220864); +emit_32(1110734746); +emit_32(1100759014); +emit_32(0); +emit_32(1110902178); +emit_32(1100759014); +emit_32(1081737216); +emit_32(1111203643); +emit_32(1100759014); +emit_32(3279552512); +emit_32(1055720947); +emit_32(1098514432); +emit_32(3279296528); +emit_32(1074391480); +emit_32(1098514432); +emit_32(3279040545); +emit_32(1080839929); +emit_32(1098514432); +emit_32(3278784496); +emit_32(1084004468); +emit_32(1098514432); +emit_32(3278528512); +emit_32(1088331836); +emit_32(1098514432); +emit_32(3278272528); +emit_32(1090916618); +emit_32(1098514432); +emit_32(3278016545); +emit_32(1091793217); +emit_32(1098514432); +emit_32(3277760496); +emit_32(1092681623); +emit_32(1098514432); +emit_32(3277504512); +emit_32(1094343931); +emit_32(1098514432); +emit_32(3277248528); +emit_32(1096031404); +emit_32(1098514432); +emit_32(3276992545); +emit_32(1097722652); +emit_32(1098514432); +emit_32(3276736496); +emit_32(1098892129); +emit_32(1098514432); +emit_32(3276480512); +emit_32(1099445043); +emit_32(1098514432); +emit_32(3276224528); +emit_32(1099878158); +emit_32(1098514432); +emit_32(3275968545); +emit_32(1101192548); +emit_32(1098514432); +emit_32(3275712496); +emit_32(1102096839); +emit_32(1098514432); +emit_32(3275456512); +emit_32(1103322992); +emit_32(1098514432); +emit_32(3275200528); +emit_32(1103921152); +emit_32(1098514432); +emit_32(3274944545); +emit_32(1104725200); +emit_32(1098514432); +emit_32(3274688496); +emit_32(1106297907); +emit_32(1098514432); +emit_32(3274432512); +emit_32(1107190193); +emit_32(1098514432); +emit_32(3274176528); +emit_32(1108005172); +emit_32(1098514432); +emit_32(3273920545); +emit_32(1108650361); +emit_32(1098514432); +emit_32(3273664496); +emit_32(1108785837); +emit_32(1098514432); +emit_32(3273408512); +emit_32(1108769610); +emit_32(1098514432); +emit_32(3273152528); +emit_32(1108817661); +emit_32(1098514432); +emit_32(3272896545); +emit_32(1108831240); +emit_32(1098514432); +emit_32(3272640496); +emit_32(1108859630); +emit_32(1098514432); +emit_32(3272384512); +emit_32(1108733356); +emit_32(1098514432); +emit_32(3272128528); +emit_32(1108612271); +emit_32(1098514432); +emit_32(3271872545); +emit_32(1108465523); +emit_32(1098514432); +emit_32(3271616496); +emit_32(1108386120); +emit_32(1098514432); +emit_32(3271163904); +emit_32(1108193260); +emit_32(1098514432); +emit_32(3270651937); +emit_32(1107694767); +emit_32(1098514432); +emit_32(3270139970); +emit_32(1107326665); +emit_32(1098514432); +emit_32(3269627871); +emit_32(1106737994); +emit_32(1098514432); +emit_32(3269115904); +emit_32(1106158394); +emit_32(1098514432); +emit_32(3268603937); +emit_32(1106202906); +emit_32(1098514432); +emit_32(3268091970); +emit_32(1105578951); +emit_32(1098514432); +emit_32(3267579911); +emit_32(1105052566); +emit_32(1098514432); +emit_32(3267067904); +emit_32(1104895908); +emit_32(1098514432); +emit_32(3266555911); +emit_32(1104074873); +emit_32(1098514432); +emit_32(3266043904); +emit_32(1103133881); +emit_32(1098514432); +emit_32(3265531911); +emit_32(1102465938); +emit_32(1098514432); +emit_32(3265019904); +emit_32(1101262907); +emit_32(1098514432); +emit_32(3264507911); +emit_32(1101530399); +emit_32(1098514432); +emit_32(3263995904); +emit_32(1101685588); +emit_32(1098514432); +emit_32(3263483911); +emit_32(1102353111); +emit_32(1098514432); +emit_32(3262775296); +emit_32(1102607496); +emit_32(1098514432); +emit_32(3261751309); +emit_32(1102688970); +emit_32(1098514432); +emit_32(3260727296); +emit_32(1103199522); +emit_32(1098514432); +emit_32(3259703309); +emit_32(1103396916); +emit_32(1098514432); +emit_32(3258679296); +emit_32(1103692248); +emit_32(1098514432); +emit_32(3257655309); +emit_32(1104150266); +emit_32(1098514432); +emit_32(3256631296); +emit_32(1104605715); +emit_32(1098514432); +emit_32(3255607309); +emit_32(1105125337); +emit_32(1098514432); +emit_32(3254386688); +emit_32(1106191267); +emit_32(1098514432); +emit_32(3252338714); +emit_32(1107529407); +emit_32(1098514432); +emit_32(3250290688); +emit_32(1108420880); +emit_32(1098514432); +emit_32(3248242714); +emit_32(1108934001); +emit_32(1098514432); +emit_32(3245998080); +emit_32(1109548859); +emit_32(1098514432); +emit_32(3241902132); +emit_32(1109995631); +emit_32(1098514432); +emit_32(3237609472); +emit_32(1110790845); +emit_32(1098514432); +emit_32(3229220864); +emit_32(1111318856); +emit_32(1098514432); +emit_32(0); +emit_32(1111747671); +emit_32(1098514432); +emit_32(1081737216); +emit_32(1111812866); +emit_32(1098514432); +emit_32(3279552512); +emit_32(1066749584); +emit_32(1094418484); +emit_32(3279296528); +emit_32(1077908068); +emit_32(1094418484); +emit_32(3279040545); +emit_32(1082923764); +emit_32(1094418484); +emit_32(3278784496); +emit_32(1084680422); +emit_32(1094418484); +emit_32(3278528512); +emit_32(1088094187); +emit_32(1094418484); +emit_32(3278272528); +emit_32(1090882015); +emit_32(1094418484); +emit_32(3278016545); +emit_32(1091863944); +emit_32(1094418484); +emit_32(3277760496); +emit_32(1092512425); +emit_32(1094418484); +emit_32(3277504512); +emit_32(1093582035); +emit_32(1094418380); +emit_32(3277248528); +emit_32(1096483445); +emit_32(1094418380); +emit_32(3276992545); +emit_32(1098671194); +emit_32(1094418380); +emit_32(3276736496); +emit_32(1099029545); +emit_32(1094418380); +emit_32(3276480512); +emit_32(1099564319); +emit_32(1094418380); +emit_32(3276224528); +emit_32(1100538603); +emit_32(1094418380); +emit_32(3275968545); +emit_32(1101777758); +emit_32(1094418380); +emit_32(3275712496); +emit_32(1103112962); +emit_32(1094418380); +emit_32(3275456512); +emit_32(1104081112); +emit_32(1094418380); +emit_32(3275200528); +emit_32(1104685826); +emit_32(1094418380); +emit_32(3274944545); +emit_32(1105332273); +emit_32(1094418380); +emit_32(3274688496); +emit_32(1107088428); +emit_32(1094418380); +emit_32(3274432512); +emit_32(1107461145); +emit_32(1094418380); +emit_32(3274176528); +emit_32(1108070262); +emit_32(1094418380); +emit_32(3273920545); +emit_32(1108560734); +emit_32(1094418380); +emit_32(3273664496); +emit_32(1108646822); +emit_32(1094418380); +emit_32(3273408512); +emit_32(1108781538); +emit_32(1094418380); +emit_32(3273152528); +emit_32(1108714507); +emit_32(1094418380); +emit_32(3272896545); +emit_32(1108628105); +emit_32(1094418380); +emit_32(3272640496); +emit_32(1108772101); +emit_32(1094418380); +emit_32(3272384512); +emit_32(1108535384); +emit_32(1094418380); +emit_32(3272128528); +emit_32(1108471736); +emit_32(1094418380); +emit_32(3271872545); +emit_32(1108149718); +emit_32(1094418380); +emit_32(3271616496); +emit_32(1108005775); +emit_32(1094418380); +emit_32(3271163904); +emit_32(1107845369); +emit_32(1094418380); +emit_32(3270651937); +emit_32(1107488748); +emit_32(1094418380); +emit_32(3270139970); +emit_32(1107065831); +emit_32(1094418380); +emit_32(3269627871); +emit_32(1106640477); +emit_32(1094418380); +emit_32(3269115904); +emit_32(1106331986); +emit_32(1094418380); +emit_32(3268603937); +emit_32(1106202801); +emit_32(1094418380); +emit_32(3268091970); +emit_32(1105489140); +emit_32(1094418380); +emit_32(3267579911); +emit_32(1104258059); +emit_32(1094418380); +emit_32(3267067904); +emit_32(1104173177); +emit_32(1094418380); +emit_32(3266555911); +emit_32(1103722237); +emit_32(1094418380); +emit_32(3266043904); +emit_32(1102993687); +emit_32(1094418380); +emit_32(3265531911); +emit_32(1102417861); +emit_32(1094418380); +emit_32(3265019904); +emit_32(1102043519); +emit_32(1094418380); +emit_32(3264507911); +emit_32(1102232840); +emit_32(1094418380); +emit_32(3263995904); +emit_32(1102313370); +emit_32(1094418380); +emit_32(3263483911); +emit_32(1102548199); +emit_32(1094418380); +emit_32(3262775296); +emit_32(1102923222); +emit_32(1094418380); +emit_32(3261751309); +emit_32(1103187621); +emit_32(1094418380); +emit_32(3260727296); +emit_32(1103562329); +emit_32(1094418380); +emit_32(3259703309); +emit_32(1103808220); +emit_32(1094418380); +emit_32(3258679296); +emit_32(1104024646); +emit_32(1094418380); +emit_32(3257655309); +emit_32(1104470344); +emit_32(1094418380); +emit_32(3256631296); +emit_32(1104938690); +emit_32(1094418380); +emit_32(3255607309); +emit_32(1105867624); +emit_32(1094418380); +emit_32(3254386688); +emit_32(1107251534); +emit_32(1094418380); +emit_32(3252338714); +emit_32(1107872029); +emit_32(1094418380); +emit_32(3250290688); +emit_32(1108547574); +emit_32(1094418380); +emit_32(3248242714); +emit_32(1109195253); +emit_32(1094418380); +emit_32(3245998080); +emit_32(1109741247); +emit_32(1094418380); +emit_32(3241902132); +emit_32(1110512291); +emit_32(1094418380); +emit_32(3237609472); +emit_32(1111292851); +emit_32(1094418380); +emit_32(3229220864); +emit_32(1111810349); +emit_32(1094418380); +emit_32(0); +emit_32(1112081590); +emit_32(1094418380); +emit_32(1081737216); +emit_32(1112309314); +emit_32(1094418380); +emit_32(3279552512); +emit_32(1069773845); +emit_32(1090125824); +emit_32(3279296528); +emit_32(1077819820); +emit_32(1090125824); +emit_32(3279040545); +emit_32(1081179122); +emit_32(1090125824); +emit_32(3278784496); +emit_32(1083831117); +emit_32(1090125824); +emit_32(3278528512); +emit_32(1086208512); +emit_32(1090125824); +emit_32(3278272528); +emit_32(1089372988); +emit_32(1090125824); +emit_32(3278016545); +emit_32(1091534376); +emit_32(1090125824); +emit_32(3277760496); +emit_32(1091959238); +emit_32(1090125824); +emit_32(3277504512); +emit_32(1093016538); +emit_32(1090125824); +emit_32(3277248528); +emit_32(1095828190); +emit_32(1090125824); +emit_32(3276992545); +emit_32(1098471021); +emit_32(1090125824); +emit_32(3276736496); +emit_32(1099512257); +emit_32(1090125824); +emit_32(3276480512); +emit_32(1100641206); +emit_32(1090125824); +emit_32(3276224528); +emit_32(1101920207); +emit_32(1090125824); +emit_32(3275968545); +emit_32(1102579027); +emit_32(1090125824); +emit_32(3275712496); +emit_32(1103724596); +emit_32(1090125824); +emit_32(3275456512); +emit_32(1104932294); +emit_32(1090125824); +emit_32(3275200528); +emit_32(1105540415); +emit_32(1090125824); +emit_32(3274944545); +emit_32(1105706877); +emit_32(1090125824); +emit_32(3274688496); +emit_32(1106838815); +emit_32(1090125824); +emit_32(3274432512); +emit_32(1107416056); +emit_32(1090125824); +emit_32(3274176528); +emit_32(1107934210); +emit_32(1090125824); +emit_32(3273920545); +emit_32(1108321868); +emit_32(1090125824); +emit_32(3273664496); +emit_32(1108477949); +emit_32(1090125824); +emit_32(3273408512); +emit_32(1108606950); +emit_32(1090125824); +emit_32(3273152528); +emit_32(1108594314); +emit_32(1090125824); +emit_32(3272896545); +emit_32(1108861596); +emit_32(1090125824); +emit_32(3272640496); +emit_32(1108850508); +emit_32(1090125824); +emit_32(3272384512); +emit_32(1108746804); +emit_32(1090125824); +emit_32(3272128528); +emit_32(1108418180); +emit_32(1090125824); +emit_32(3271872545); +emit_32(1108132600); +emit_32(1090125824); +emit_32(3271616496); +emit_32(1107751233); +emit_32(1090125824); +emit_32(3271163904); +emit_32(1107845920); +emit_32(1090125824); +emit_32(3270651937); +emit_32(1107711440); +emit_32(1090125824); +emit_32(3270139970); +emit_32(1107541911); +emit_32(1090125824); +emit_32(3269627871); +emit_32(1107305510); +emit_32(1090125824); +emit_32(3269115904); +emit_32(1107014346); +emit_32(1090125824); +emit_32(3268603937); +emit_32(1106519471); +emit_32(1090125824); +emit_32(3268091970); +emit_32(1105586867); +emit_32(1090125824); +emit_32(3267579911); +emit_32(1104817160); +emit_32(1090125824); +emit_32(3267067904); +emit_32(1104215645); +emit_32(1090125824); +emit_32(3266555911); +emit_32(1103400324); +emit_32(1090125824); +emit_32(3266043904); +emit_32(1103065776); +emit_32(1090125824); +emit_32(3265531911); +emit_32(1102978377); +emit_32(1090125824); +emit_32(3265019904); +emit_32(1102293919); +emit_32(1090125824); +emit_32(3264507911); +emit_32(1102336229); +emit_32(1090125824); +emit_32(3263995904); +emit_32(1102542117); +emit_32(1090125824); +emit_32(3263483911); +emit_32(1102806306); +emit_32(1090125824); +emit_32(3262775296); +emit_32(1103245240); +emit_32(1090125824); +emit_32(3261751309); +emit_32(1103200151); +emit_32(1090125824); +emit_32(3260727296); +emit_32(1103241727); +emit_32(1090125824); +emit_32(3259703309); +emit_32(1103758465); +emit_32(1090125824); +emit_32(3258679296); +emit_32(1104333714); +emit_32(1090125824); +emit_32(3257655309); +emit_32(1104589095); +emit_32(1090125824); +emit_32(3256631296); +emit_32(1104963961); +emit_32(1090125824); +emit_32(3255607309); +emit_32(1106480516); +emit_32(1090125824); +emit_32(3254386688); +emit_32(1107703811); +emit_32(1090125824); +emit_32(3252338714); +emit_32(1108381768); +emit_32(1090125824); +emit_32(3250290688); +emit_32(1108898034); +emit_32(1090125824); +emit_32(3248242714); +emit_32(1109345462); +emit_32(1090125824); +emit_32(3245998080); +emit_32(1109947738); +emit_32(1090125824); +emit_32(3241902132); +emit_32(1110798578); +emit_32(1090125824); +emit_32(3237609472); +emit_32(1111401483); +emit_32(1090125824); +emit_32(3229220864); +emit_32(1112005149); +emit_32(1090125824); +emit_32(0); +emit_32(1112489827); +emit_32(1090125824); +emit_32(1081737216); +emit_32(1112605380); +emit_32(1090125824); +emit_32(3279552512); +emit_32(1041185636); +emit_32(1081737216); +emit_32(3279296528); +emit_32(1071476480); +emit_32(1081737216); +emit_32(3279040545); +emit_32(1076263523); +emit_32(1081737216); +emit_32(3278784496); +emit_32(1082158660); +emit_32(1081737216); +emit_32(3278528512); +emit_32(1084513929); +emit_32(1081737216); +emit_32(3278272528); +emit_32(1087785717); +emit_32(1081737216); +emit_32(3278016545); +emit_32(1090972056); +emit_32(1081737216); +emit_32(3277760496); +emit_32(1092442569); +emit_32(1081737216); +emit_32(3277504512); +emit_32(1094046974); +emit_32(1081737216); +emit_32(3277248528); +emit_32(1097043280); +emit_32(1081737216); +emit_32(3276992545); +emit_32(1098999818); +emit_32(1081737216); +emit_32(3276736496); +emit_32(1100434742); +emit_32(1081737216); +emit_32(3276480512); +emit_32(1101659007); +emit_32(1081737216); +emit_32(3276224528); +emit_32(1102608545); +emit_32(1081737216); +emit_32(3275968545); +emit_32(1103417836); +emit_32(1081737216); +emit_32(3275712496); +emit_32(1104053168); +emit_32(1081737216); +emit_32(3275456512); +emit_32(1104973450); +emit_32(1081737216); +emit_32(3275200528); +emit_32(1105837477); +emit_32(1081737216); +emit_32(3274944545); +emit_32(1106081743); +emit_32(1081737216); +emit_32(3274688496); +emit_32(1106636492); +emit_32(1081737216); +emit_32(3274432512); +emit_32(1107002917); +emit_32(1081737216); +emit_32(3274176528); +emit_32(1107580184); +emit_32(1081737216); +emit_32(3273920545); +emit_32(1107983729); +emit_32(1081737216); +emit_32(3273664496); +emit_32(1108213550); +emit_32(1081737216); +emit_32(3273408512); +emit_32(1108715137); +emit_32(1081737216); +emit_32(3273152528); +emit_32(1108987871); +emit_32(1081737216); +emit_32(3272896545); +emit_32(1109130582); +emit_32(1081737216); +emit_32(3272640496); +emit_32(1109075454); +emit_32(1081737216); +emit_32(3272384512); +emit_32(1108764813); +emit_32(1081737216); +emit_32(3272128528); +emit_32(1108391939); +emit_32(1081737216); +emit_32(3271872545); +emit_32(1108080224); +emit_32(1081737216); +emit_32(3271616496); +emit_32(1107854728); +emit_32(1081737216); +emit_32(3271163904); +emit_32(1107912740); +emit_32(1081737216); +emit_32(3270651937); +emit_32(1107731730); +emit_32(1081737216); +emit_32(3270139970); +emit_32(1107480989); +emit_32(1081737216); +emit_32(3269627871); +emit_32(1107400013); +emit_32(1081737216); +emit_32(3269115904); +emit_32(1106814855); +emit_32(1081737216); +emit_32(3268603937); +emit_32(1106747641); +emit_32(1081737216); +emit_32(3268091970); +emit_32(1106153570); +emit_32(1081737216); +emit_32(3267579911); +emit_32(1105450553); +emit_32(1081737216); +emit_32(3267067904); +emit_32(1105015289); +emit_32(1081737216); +emit_32(3266555911); +emit_32(1103926185); +emit_32(1081737216); +emit_32(3266043904); +emit_32(1103220965); +emit_32(1081737216); +emit_32(3265531911); +emit_32(1102714556); +emit_32(1081737216); +emit_32(3265019904); +emit_32(1102293972); +emit_32(1081737216); +emit_32(3264507911); +emit_32(1102696206); +emit_32(1081737216); +emit_32(3263995904); +emit_32(1102841119); +emit_32(1081737216); +emit_32(3263483911); +emit_32(1102940104); +emit_32(1081737216); +emit_32(3262775296); +emit_32(1103457681); +emit_32(1081737216); +emit_32(3261751309); +emit_32(1103885553); +emit_32(1081737216); +emit_32(3260727296); +emit_32(1104135953); +emit_32(1081737216); +emit_32(3259703309); +emit_32(1104254180); +emit_32(1081737216); +emit_32(3258679296); +emit_32(1104598218); +emit_32(1081737216); +emit_32(3257655309); +emit_32(1105055869); +emit_32(1081737216); +emit_32(3256631296); +emit_32(1105830661); +emit_32(1081737216); +emit_32(3255607309); +emit_32(1107186156); +emit_32(1081737216); +emit_32(3254386688); +emit_32(1107890222); +emit_32(1081737216); +emit_32(3252338714); +emit_32(1108342578); +emit_32(1081737216); +emit_32(3250290688); +emit_32(1108968106); +emit_32(1081737216); +emit_32(3248242714); +emit_32(1109363314); +emit_32(1081737216); +emit_32(3245998080); +emit_32(1110217982); +emit_32(1081737216); +emit_32(3241902132); +emit_32(1110836747); +emit_32(1081737216); +emit_32(3237609472); +emit_32(1111340011); +emit_32(1081737216); +emit_32(3229220864); +emit_32(1111989472); +emit_32(1081737216); +emit_32(0); +emit_32(1112547577); +emit_32(1081737216); +emit_32(1081737216); +emit_32(1112701298); +emit_32(1081737216); +emit_start(_ZTIN16btCollisionWorld17RayResultCallbackE) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTSN16btCollisionWorld17RayResultCallbackE); +emit_start(_ZTSN16btCollisionWorld17RayResultCallbackE) +emit_string('N16btCollisionWorld17RayResultCallbackE\x00'); +emit_start(_ZTVN16btCollisionWorld24ClosestRayResultCallbackE) +emit_32(0); +emit_32(_ZTIN16btCollisionWorld24ClosestRayResultCallbackE); +emit_32(_ZN16btCollisionWorld24ClosestRayResultCallbackD1Ev__index__); +emit_32(_ZN16btCollisionWorld24ClosestRayResultCallbackD0Ev__index__); +emit_32(_ZNK16btCollisionWorld17RayResultCallback14needsCollisionEP17btBroadphaseProxy__index__); +emit_32(_ZN16btCollisionWorld24ClosestRayResultCallback15addSingleResultERNS_14LocalRayResultEb__index__); +emit_start(_ZTIN16btCollisionWorld24ClosestRayResultCallbackE) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSN16btCollisionWorld24ClosestRayResultCallbackE); +emit_32(_ZTIN16btCollisionWorld17RayResultCallbackE); +emit_start(_ZTSN16btCollisionWorld24ClosestRayResultCallbackE) +emit_string('N16btCollisionWorld24ClosestRayResultCallbackE\x00'); +emit_start(_ZTI13btMotionState) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS13btMotionState); +emit_start(_ZTS13btMotionState) +emit_string('13btMotionState\x00'); +emit_start(_ZTV20btDefaultMotionState) +emit_32(0); +emit_32(_ZTI20btDefaultMotionState); +emit_32(_ZN20btDefaultMotionStateD1Ev__index__); +emit_32(_ZN20btDefaultMotionStateD0Ev__index__); +emit_32(_ZNK20btDefaultMotionState17getWorldTransformER11btTransform__index__); +emit_32(_ZN20btDefaultMotionState17setWorldTransformERK11btTransform__index__); +emit_start(_ZTI20btDefaultMotionState) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS20btDefaultMotionState); +emit_32(_ZTI13btMotionState); +emit_start(_ZTS20btDefaultMotionState) +emit_string('20btDefaultMotionState\x00'); +emit_start(_ZTI17btTypedConstraint) +emit_32(_ZTVN10__cxxabiv121__vmi_class_type_infoE+8); +emit_32(_ZTS17btTypedConstraint); +emit_32(0); +emit_32(1); +emit_32(_ZTI13btTypedObject); +emit_32(1026); +emit_start(_ZTS17btTypedConstraint) +emit_string('17btTypedConstraint\x00'); +emit_start(_ZTI13btTypedObject) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS13btTypedObject); +emit_start(_ZTS13btTypedObject) +emit_string('13btTypedObject\x00'); +emit_start(_ZTV7RagDoll) +emit_32(0); +emit_32(_ZTI7RagDoll); +emit_32(_ZN7RagDollD1Ev__index__); +emit_32(_ZN7RagDollD0Ev__index__); +emit_start(_ZTI7RagDoll) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS7RagDoll); +emit_start(_ZTS7RagDoll) +emit_string('7RagDoll\x00'); +emit_start(_ZTV13BenchmarkDemo) +emit_32(0); +emit_32(_ZTI13BenchmarkDemo); +emit_32(_ZN15DemoApplication6myinitEv__index__); +emit_32(_ZN15DemoApplication16getDynamicsWorldEv__index__); +emit_32(_ZN15DemoApplication20localCreateRigidBodyEfRK11btTransformP16btCollisionShape__index__); +emit_32(_ZN13BenchmarkDemoD1Ev__index__); +emit_32(_ZN13BenchmarkDemoD0Ev__index__); +emit_32(_ZN13BenchmarkDemo20clientMoveAndDisplayEv__index__); +emit_32(_ZN13BenchmarkDemo15displayCallbackEv__index__); +emit_start(_ZTI13BenchmarkDemo) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS13BenchmarkDemo); +emit_32(_ZTI15DemoApplication); +emit_start(_ZTS13BenchmarkDemo) +emit_string('13BenchmarkDemo\x00'); +emit_start(_ZTI15DemoApplication) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS15DemoApplication); +emit_start(_ZTS15DemoApplication) +emit_string('15DemoApplication\x00'); +emit_start(_2E_str3) +emit_string('rayResult.m_hitFraction <= m_closestHitFraction\x00'); +emit_start(_2E_str4) +emit_string('../../../../src/BulletCollision/CollisionDispatch/btCollisionWorld.h\x00'); +emit_start(_2E_str5) +emit_string('(!shape || shape->getShapeType() != INVALID_SHAPE_PROXYTYPE)\x00'); +emit_start(_2E_str6) +emit_string('../../../../Demos/BenchmarkDemo/BenchmarkDemo.cpp\x00'); +emit_start(_2E_str7) +emit_string('%d rays in %d ms %d %d %f\x0a\x00'); +emit_start(_ZL7TaruVtx) +emit_32(1066080005); +emit_32(3221161467); +emit_32(0); +emit_32(1061467093); +emit_32(3221161467); +emit_32(3208950741); +emit_32(1067773497); +emit_32(873485028); +emit_32(3215257145); +emit_32(1072250665); +emit_32(877448406); +emit_32(0); +emit_32(0); +emit_32(3221161467); +emit_32(3213563653); +emit_32(0); +emit_32(0); +emit_32(3219734313); +emit_32(0); +emit_32(3221161467); +emit_32(3213563653); +emit_32(3208950741); +emit_32(3221161467); +emit_32(3208950741); +emit_32(3215257145); +emit_32(873485028); +emit_32(3215257145); +emit_32(0); +emit_32(0); +emit_32(3219734313); +emit_32(3213563653); +emit_32(3221161467); +emit_32(876839787); +emit_32(3219734313); +emit_32(877448406); +emit_32(875236717); +emit_32(3208950741); +emit_32(3221161467); +emit_32(1061467109); +emit_32(3215257145); +emit_32(881107813); +emit_32(1067773497); +emit_32(874053818); +emit_32(3221161467); +emit_32(1066080005); +emit_32(880822819); +emit_32(881928664); +emit_32(1072250665); +emit_32(1061467093); +emit_32(3221161467); +emit_32(1061467093); +emit_32(1067773497); +emit_32(881107813); +emit_32(1067773497); +emit_32(1061467093); +emit_32(1073677819); +emit_32(3208950741); +emit_32(1066080005); +emit_32(1073677819); +emit_32(0); +emit_32(0); +emit_32(1073677819); +emit_32(3213563653); +emit_32(3208950741); +emit_32(1073677819); +emit_32(3208950741); +emit_32(0); +emit_32(1073677819); +emit_32(3213563653); +emit_32(3213563653); +emit_32(1073677819); +emit_32(0); +emit_32(3208950741); +emit_32(1073677819); +emit_32(1061467093); +emit_32(874053818); +emit_32(1073677819); +emit_32(1066080005); +emit_32(1061467093); +emit_32(1073677819); +emit_32(1061467093); +emit_32(874053818); +emit_32(3221161467); +emit_32(1066080005); +emit_32(3208950741); +emit_32(3221161467); +emit_32(1061467109); +emit_32(3213563653); +emit_32(3221161467); +emit_32(876839787); +emit_32(3208950741); +emit_32(3221161467); +emit_32(3208950741); +emit_32(0); +emit_32(3221161467); +emit_32(3213563653); +emit_32(1061467093); +emit_32(3221161467); +emit_32(3208950741); +emit_32(1066080005); +emit_32(3221161467); +emit_32(0); +emit_32(1061467093); +emit_32(3221161467); +emit_32(1061467093); +emit_32(1061467093); +emit_32(1073677819); +emit_32(3208950741); +emit_32(0); +emit_32(1073677819); +emit_32(3213563653); +emit_32(3208950741); +emit_32(1073677819); +emit_32(3208950741); +emit_32(3213563653); +emit_32(1073677819); +emit_32(0); +emit_32(3208950741); +emit_32(1073677819); +emit_32(1061467093); +emit_32(874053818); +emit_32(1073677819); +emit_32(1066080005); +emit_32(1061467093); +emit_32(1073677819); +emit_32(1061467093); +emit_32(1066080005); +emit_32(1073677819); +emit_32(0); +emit_start(LandscapeVtx) +emit_32(Landscape01Vtx); +emit_32(Landscape02Vtx); +emit_32(Landscape03Vtx); +emit_32(Landscape04Vtx); +emit_32(Landscape05Vtx); +emit_32(Landscape06Vtx); +emit_32(Landscape07Vtx); +emit_32(Landscape08Vtx); +emit_start(Landscape01Vtx) +emit_32(1081737258); +emit_32(1055384563); +emit_32(1131812880); +emit_32(1081737258); +emit_32(1069740626); +emit_32(1132068864); +emit_32(1090125824); +emit_32(1066883130); +emit_32(1131812880); +emit_32(1090125845); +emit_32(1071685776); +emit_32(1132068864); +emit_32(1094418484); +emit_32(1074283351); +emit_32(1131812880); +emit_32(1094418484); +emit_32(1076361335); +emit_32(1132068864); +emit_32(1098514432); +emit_32(1077997197); +emit_32(1131812880); +emit_32(1098514432); +emit_32(1078893017); +emit_32(1132068864); +emit_32(1100759066); +emit_32(1082022680); +emit_32(1131812880); +emit_32(1100759066); +emit_32(1080588228); +emit_32(1132068864); +emit_32(1102807040); +emit_32(1082313744); +emit_32(1131812880); +emit_32(1102807040); +emit_32(1082635783); +emit_32(1132068864); +emit_32(1104855066); +emit_32(1085939489); +emit_32(1131812880); +emit_32(1104855066); +emit_32(1086186513); +emit_32(1132068864); +emit_32(1106903040); +emit_32(1088145253); +emit_32(1131812880); +emit_32(1106903040); +emit_32(1089137122); +emit_32(1132068864); +emit_32(1108123661); +emit_32(1090785431); +emit_32(1131812880); +emit_32(1108123661); +emit_32(1091174473); +emit_32(1132068864); +emit_32(1109147648); +emit_32(1090923801); +emit_32(1131812880); +emit_32(1109147648); +emit_32(1091237136); +emit_32(1132068864); +emit_32(1110171661); +emit_32(1088312773); +emit_32(1131812880); +emit_32(1110171661); +emit_32(1089928629); +emit_32(1132068864); +emit_32(1111195648); +emit_32(1083403361); +emit_32(1131812880); +emit_32(1111195648); +emit_32(1086579729); +emit_32(1132068864); +emit_32(1112219661); +emit_32(1080632646); +emit_32(1131812880); +emit_32(1112219661); +emit_32(1084500256); +emit_32(1132068864); +emit_32(1113243648); +emit_32(1082171222); +emit_32(1131812880); +emit_32(1113243648); +emit_32(1085286142); +emit_32(1132068864); +emit_32(1114267661); +emit_32(1082256177); +emit_32(1131812880); +emit_32(1114267661); +emit_32(1084896932); +emit_32(1132068864); +emit_32(1115291648); +emit_32(1082088279); +emit_32(1131812880); +emit_32(1115291648); +emit_32(1085314391); +emit_32(1132068864); +emit_32(1116000263); +emit_32(1085158761); +emit_32(1131812880); +emit_32(1116000263); +emit_32(1088003066); +emit_32(1132068864); +emit_32(1116512256); +emit_32(1086405959); +emit_32(1131812880); +emit_32(1116512256); +emit_32(1089298141); +emit_32(1132068864); +emit_32(1117024263); +emit_32(1087104604); +emit_32(1131812880); +emit_32(1117024263); +emit_32(1090687347); +emit_32(1132068864); +emit_32(1117536256); +emit_32(1087885311); +emit_32(1131812880); +emit_32(1117536256); +emit_32(1091275053); +emit_32(1132068864); +emit_32(1118048263); +emit_32(1089217925); +emit_32(1131812880); +emit_32(1118048263); +emit_32(1092734157); +emit_32(1132068864); +emit_32(1118560256); +emit_32(1091544359); +emit_32(1131812880); +emit_32(1118560256); +emit_32(1093101054); +emit_32(1132068864); +emit_32(1119072263); +emit_32(1093751695); +emit_32(1131812880); +emit_32(1119072263); +emit_32(1094336171); +emit_32(1132068864); +emit_32(1119584256); +emit_32(1095057906); +emit_32(1131812880); +emit_32(1119584256); +emit_32(1095906414); +emit_32(1132068864); +emit_32(1120096263); +emit_32(1096387500); +emit_32(1131812880); +emit_32(1120096263); +emit_32(1097119721); +emit_32(1132068864); +emit_32(1120608322); +emit_32(1098446484); +emit_32(1131812880); +emit_32(1120608322); +emit_32(1099405040); +emit_32(1132068864); +emit_32(1121120289); +emit_32(1099429000); +emit_32(1131812880); +emit_32(1121120289); +emit_32(1100058250); +emit_32(1132068864); +emit_32(1121632256); +emit_32(1099896455); +emit_32(1131812880); +emit_32(1121632256); +emit_32(1100747951); +emit_32(1132068864); +emit_32(1122144223); +emit_32(1100443235); +emit_32(1131812880); +emit_32(1122144223); +emit_32(1101491654); +emit_32(1132068864); +emit_32(1122656322); +emit_32(1100473854); +emit_32(1131812880); +emit_32(1122656322); +emit_32(1101038145); +emit_32(1132068864); +emit_32(1123168289); +emit_32(1100215956); +emit_32(1131812880); +emit_32(1123168289); +emit_32(1101301390); +emit_32(1132068864); +emit_32(1123680256); +emit_32(1101082604); +emit_32(1131812880); +emit_32(1123680256); +emit_32(1101605949); +emit_32(1132068864); +emit_32(1124132848); +emit_32(1101268622); +emit_32(1131812880); +emit_32(1124132848); +emit_32(1102212026); +emit_32(1132068864); +emit_32(1124388897); +emit_32(1101640237); +emit_32(1131812880); +emit_32(1124388897); +emit_32(1102532523); +emit_32(1132068864); +emit_32(1124644880); +emit_32(1102204895); +emit_32(1131812880); +emit_32(1124644880); +emit_32(1103346847); +emit_32(1132068864); +emit_32(1124900864); +emit_32(1102705643); +emit_32(1131812880); +emit_32(1124900864); +emit_32(1103273709); +emit_32(1132068864); +emit_32(1125156848); +emit_32(1102314000); +emit_32(1131812880); +emit_32(1125156848); +emit_32(1103265949); +emit_32(1132068864); +emit_32(1125412897); +emit_32(1102386142); +emit_32(1131812880); +emit_32(1125412897); +emit_32(1103012351); +emit_32(1132068864); +emit_32(1125668880); +emit_32(1102880021); +emit_32(1131812880); +emit_32(1125668880); +emit_32(1103173727); +emit_32(1132068864); +emit_32(1125924864); +emit_32(1103727428); +emit_32(1131812880); +emit_32(1125924864); +emit_32(1103580732); +emit_32(1132068864); +emit_32(1126180848); +emit_32(1103758413); +emit_32(1131812880); +emit_32(1126180848); +emit_32(1103482113); +emit_32(1132068864); +emit_32(1126436897); +emit_32(1104015471); +emit_32(1131812880); +emit_32(1126436897); +emit_32(1103163241); +emit_32(1132068864); +emit_32(1126692880); +emit_32(1103273342); +emit_32(1131812880); +emit_32(1126692880); +emit_32(1103421348); +emit_32(1132068864); +emit_32(1126948864); +emit_32(1103651353); +emit_32(1131812880); +emit_32(1126948864); +emit_32(1103608938); +emit_32(1132068864); +emit_32(1127204848); +emit_32(1103631850); +emit_32(1131812880); +emit_32(1127204848); +emit_32(1103515039); +emit_32(1132068864); +emit_32(1127460897); +emit_32(1102883324); +emit_32(1131812880); +emit_32(1127460897); +emit_32(1102412041); +emit_32(1132068864); +emit_32(1127716880); +emit_32(1101507068); +emit_32(1131812880); +emit_32(1127716880); +emit_32(1101349991); +emit_32(1132068864); +emit_32(1127972864); +emit_32(1100875563); +emit_32(1131812880); +emit_32(1127972864); +emit_32(1101021210); +emit_32(1132068864); +emit_32(1128228848); +emit_32(1101251582); +emit_32(1131812880); +emit_32(1128228848); +emit_32(1101209063); +emit_32(1132068864); +emit_32(1128484897); +emit_32(1100876402); +emit_32(1131812880); +emit_32(1128484897); +emit_32(1101824944); +emit_32(1132068864); +emit_32(1128740880); +emit_32(1100846465); +emit_32(1131812880); +emit_32(1128740880); +emit_32(1101829662); +emit_32(1132068864); +emit_32(1128996864); +emit_32(1101043178); +emit_32(1131812880); +emit_32(1128996864); +emit_32(1101204029); +emit_32(1132068864); +emit_32(1129252848); +emit_32(1100934912); +emit_32(1131812880); +emit_32(1129252848); +emit_32(1100678640); +emit_32(1132068864); +emit_32(1129508897); +emit_32(1100716494); +emit_32(1131812880); +emit_32(1129508897); +emit_32(1100794770); +emit_32(1132068864); +emit_32(1129764880); +emit_32(1100633499); +emit_32(1131812880); +emit_32(1129764880); +emit_32(1100531158); +emit_32(1132068864); +emit_32(1130020864); +emit_32(1100357409); +emit_32(1131812880); +emit_32(1130020864); +emit_32(1100965793); +emit_32(1132068864); +emit_32(1130276848); +emit_32(1100382418); +emit_32(1131812880); +emit_32(1130276848); +emit_32(1100936852); +emit_32(1132068864); +emit_32(1130532897); +emit_32(1100142189); +emit_32(1131812880); +emit_32(1130532897); +emit_32(1100410834); +emit_32(1132068864); +emit_32(1130788880); +emit_32(1099421503); +emit_32(1131812880); +emit_32(1130788880); +emit_32(1099690462); +emit_32(1132068864); +emit_32(1131044864); +emit_32(1098506358); +emit_32(1131812880); +emit_32(1131044864); +emit_32(1098996725); +emit_32(1132068864); +emit_32(1131300848); +emit_32(1098434740); +emit_32(1131812880); +emit_32(1131300848); +emit_32(1098247465); +emit_32(1132068864); +emit_32(1131556897); +emit_32(1098117861); +emit_32(1131812880); +emit_32(1131556897); +emit_32(1097891158); +emit_32(1132068864); +emit_32(1131812880); +emit_32(1096949432); +emit_32(1131812880); +emit_32(1131812880); +emit_32(1097085433); +emit_32(1132068864); +emit_32(1132068864); +emit_32(1097236532); +emit_32(1131812880); +emit_32(1132068864); +emit_32(1097193960); +emit_32(1132068864); +emit_32(1081737258); +emit_32(1074643096); +emit_32(1131556897); +emit_32(1090125866); +emit_32(1074941647); +emit_32(1131556897); +emit_32(1094418484); +emit_32(1081645067); +emit_32(1131556897); +emit_32(1098514432); +emit_32(1079576814); +emit_32(1131556897); +emit_32(1100759066); +emit_32(1080655044); +emit_32(1131556897); +emit_32(1102807040); +emit_32(1082425543); +emit_32(1131556897); +emit_32(1104855066); +emit_32(1085781658); +emit_32(1131556897); +emit_32(1106903040); +emit_32(1087711834); +emit_32(1131556897); +emit_32(1108123661); +emit_32(1089079786); +emit_32(1131556897); +emit_32(1109147648); +emit_32(1089855732); +emit_32(1131556897); +emit_32(1110171661); +emit_32(1088401776); +emit_32(1131556897); +emit_32(1111195648); +emit_32(1084013213); +emit_32(1131556897); +emit_32(1112219661); +emit_32(1076464473); +emit_32(1131556897); +emit_32(1113243648); +emit_32(1076936835); +emit_32(1131556897); +emit_32(1114267661); +emit_32(1078376488); +emit_32(1131556897); +emit_32(1115291648); +emit_32(1083428884); +emit_32(1131556897); +emit_32(1116000263); +emit_32(1084998686); +emit_32(1131556897); +emit_32(1116512256); +emit_32(1085103334); +emit_32(1131556897); +emit_32(1117024263); +emit_32(1085114239); +emit_32(1131556897); +emit_32(1117536256); +emit_32(1085358662); +emit_32(1131556897); +emit_32(1118048263); +emit_32(1085033331); +emit_32(1131556897); +emit_32(1118560256); +emit_32(1090041456); +emit_32(1131556897); +emit_32(1119072263); +emit_32(1091993569); +emit_32(1131556897); +emit_32(1119584256); +emit_32(1093969274); +emit_32(1131556897); +emit_32(1120096263); +emit_32(1094791777); +emit_32(1131556897); +emit_32(1120608322); +emit_32(1096921435); +emit_32(1131556897); +emit_32(1121120289); +emit_32(1098017722); +emit_32(1131556897); +emit_32(1121632256); +emit_32(1098852807); +emit_32(1131556897); +emit_32(1122144223); +emit_32(1099349623); +emit_32(1131556897); +emit_32(1122656322); +emit_32(1099542928); +emit_32(1131556897); +emit_32(1123168289); +emit_32(1100094688); +emit_32(1131556897); +emit_32(1123680256); +emit_32(1100410887); +emit_32(1131556897); +emit_32(1124132848); +emit_32(1100650329); +emit_32(1131556897); +emit_32(1124388897); +emit_32(1101060742); +emit_32(1131556897); +emit_32(1124644880); +emit_32(1101440326); +emit_32(1131556897); +emit_32(1124900864); +emit_32(1101720243); +emit_32(1131556897); +emit_32(1125156848); +emit_32(1101846125); +emit_32(1131556897); +emit_32(1125412897); +emit_32(1102182141); +emit_32(1131556897); +emit_32(1125668880); +emit_32(1102845208); +emit_32(1131556897); +emit_32(1125924864); +emit_32(1103549327); +emit_32(1131556897); +emit_32(1126180848); +emit_32(1103862379); +emit_32(1131556897); +emit_32(1126436897); +emit_32(1104116816); +emit_32(1131556897); +emit_32(1126692880); +emit_32(1103549432); +emit_32(1131556897); +emit_32(1126948864); +emit_32(1103788717); +emit_32(1131556897); +emit_32(1127204848); +emit_32(1103809426); +emit_32(1131556897); +emit_32(1127460897); +emit_32(1103218816); +emit_32(1131556897); +emit_32(1127716880); +emit_32(1101572551); +emit_32(1131556897); +emit_32(1127972864); +emit_32(1100781453); +emit_32(1131556897); +emit_32(1128228848); +emit_32(1100996149); +emit_32(1131556897); +emit_32(1128484897); +emit_32(1100798283); +emit_32(1131556897); +emit_32(1128740880); +emit_32(1100454769); +emit_32(1131556897); +emit_32(1128996864); +emit_32(1101100116); +emit_32(1131556897); +emit_32(1129252848); +emit_32(1100635806); +emit_32(1131556897); +emit_32(1129508897); +emit_32(1100423260); +emit_32(1131556897); +emit_32(1129764880); +emit_32(1100375445); +emit_32(1131556897); +emit_32(1130020864); +emit_32(1100374711); +emit_32(1131556897); +emit_32(1130276848); +emit_32(1100128348); +emit_32(1131556897); +emit_32(1130532897); +emit_32(1099813985); +emit_32(1131556897); +emit_32(1130788880); +emit_32(1098580702); +emit_32(1131556897); +emit_32(1131044864); +emit_32(1098117861); +emit_32(1131556897); +emit_32(1131300848); +emit_32(1098142502); +emit_32(1131556897); +emit_32(1131556897); +emit_32(1097315071); +emit_32(1131556897); +emit_32(1131812880); +emit_32(1097397384); +emit_32(1131556897); +emit_32(1132068864); +emit_32(1096997143); +emit_32(1131556897); +emit_32(1081737258); +emit_32(1078120510); +emit_32(1131300848); +emit_32(1090125866); +emit_32(1081645067); +emit_32(1131300848); +emit_32(1094418484); +emit_32(1083207676); +emit_32(1131300848); +emit_32(1098514432); +emit_32(1082548394); +emit_32(1131300848); +emit_32(1100759066); +emit_32(1083149333); +emit_32(1131300848); +emit_32(1102807040); +emit_32(1084467750); +emit_32(1131300848); +emit_32(1104855066); +emit_32(1084194889); +emit_32(1131300848); +emit_32(1106903040); +emit_32(1085853632); +emit_32(1131300848); +emit_32(1108123661); +emit_32(1085123970); +emit_32(1131300848); +emit_32(1109147648); +emit_32(1087285441); +emit_32(1131300848); +emit_32(1110171661); +emit_32(1085386722); +emit_32(1131300848); +emit_32(1111195648); +emit_32(1080853476); +emit_32(1131300848); +emit_32(1112219661); +emit_32(1078285136); +emit_32(1131300848); +emit_32(1113243648); +emit_32(1077796206); +emit_32(1131300848); +emit_32(1114267661); +emit_32(1081903730); +emit_32(1131300848); +emit_32(1115291648); +emit_32(1083632098); +emit_32(1131300848); +emit_32(1116000263); +emit_32(1084393385); +emit_32(1131300848); +emit_32(1116512256); +emit_32(1085051576); +emit_32(1131300848); +emit_32(1117024263); +emit_32(1082744667); +emit_32(1131300848); +emit_32(1117536256); +emit_32(1082567793); +emit_32(1131300848); +emit_32(1118048263); +emit_32(1084454685); +emit_32(1131300848); +emit_32(1118560256); +emit_32(1085247932); +emit_32(1131300848); +emit_32(1119072263); +emit_32(1088549437); +emit_32(1131300848); +emit_32(1119584256); +emit_32(1091234903); +emit_32(1131300848); +emit_32(1120096263); +emit_32(1092613875); +emit_32(1131300848); +emit_32(1120608322); +emit_32(1094687864); +emit_32(1131300848); +emit_32(1121120289); +emit_32(1095660313); +emit_32(1131300848); +emit_32(1121632256); +emit_32(1096595223); +emit_32(1131300848); +emit_32(1122144223); +emit_32(1096407214); +emit_32(1131300848); +emit_32(1122656322); +emit_32(1098896848); +emit_32(1131300848); +emit_32(1123168289); +emit_32(1100002571); +emit_32(1131300848); +emit_32(1123680256); +emit_32(1100330566); +emit_32(1131300848); +emit_32(1124132848); +emit_32(1100556901); +emit_32(1131300848); +emit_32(1124388897); +emit_32(1101046271); +emit_32(1131300848); +emit_32(1124644880); +emit_32(1101210793); +emit_32(1131300848); +emit_32(1124900864); +emit_32(1101438753); +emit_32(1131300848); +emit_32(1125156848); +emit_32(1101639765); +emit_32(1131300848); +emit_32(1125412897); +emit_32(1102320291); +emit_32(1131300848); +emit_32(1125668880); +emit_32(1103059380); +emit_32(1131300848); +emit_32(1125924864); +emit_32(1103640815); +emit_32(1131300848); +emit_32(1126180848); +emit_32(1104063234); +emit_32(1131300848); +emit_32(1126436897); +emit_32(1103970068); +emit_32(1131300848); +emit_32(1126692880); +emit_32(1103293999); +emit_32(1131300848); +emit_32(1126948864); +emit_32(1106602885); +emit_32(1131300848); +emit_32(1127204848); +emit_32(1106714296); +emit_32(1131300848); +emit_32(1127460897); +emit_32(1105856718); +emit_32(1131300848); +emit_32(1127716880); +emit_32(1104477736); +emit_32(1131300848); +emit_32(1127972864); +emit_32(1103475455); +emit_32(1131300848); +emit_32(1128228848); +emit_32(1102947182); +emit_32(1131300848); +emit_32(1128484897); +emit_32(1102778938); +emit_32(1131300848); +emit_32(1128740880); +emit_32(1102741242); +emit_32(1131300848); +emit_32(1128996864); +emit_32(1099705667); +emit_32(1131300848); +emit_32(1129252848); +emit_32(1099651088); +emit_32(1131300848); +emit_32(1129508897); +emit_32(1099707659); +emit_32(1131300848); +emit_32(1129764880); +emit_32(1100081634); +emit_32(1131300848); +emit_32(1130020864); +emit_32(1100312373); +emit_32(1131300848); +emit_32(1130276848); +emit_32(1100150263); +emit_32(1131300848); +emit_32(1130532897); +emit_32(1099562326); +emit_32(1131300848); +emit_32(1130788880); +emit_32(1099117363); +emit_32(1131300848); +emit_32(1131044864); +emit_32(1098383150); +emit_32(1131300848); +emit_32(1131300848); +emit_32(1097461347); +emit_32(1131300848); +emit_32(1131556897); +emit_32(1097130836); +emit_32(1131300848); +emit_32(1131812880); +emit_32(1097046950); +emit_32(1131300848); +emit_32(1132068864); +emit_32(1096949537); +emit_32(1131300848); +emit_32(1081737258); +emit_32(1084629524); +emit_32(1131044864); +emit_32(1090125866); +emit_32(1084086907); +emit_32(1131044864); +emit_32(1094418484); +emit_32(1082202008); +emit_32(1131044864); +emit_32(1098514432); +emit_32(1080912280); +emit_32(1131044864); +emit_32(1100759066); +emit_32(1083063329); +emit_32(1131044864); +emit_32(1102807040); +emit_32(1084485051); +emit_32(1131044864); +emit_32(1104855066); +emit_32(1083389331); +emit_32(1131044864); +emit_32(1106903040); +emit_32(1083284872); +emit_32(1131044864); +emit_32(1108123661); +emit_32(1083776948); +emit_32(1131044864); +emit_32(1109147648); +emit_32(1084114904); +emit_32(1131044864); +emit_32(1110171661); +emit_32(1084297860); +emit_32(1131044864); +emit_32(1111195648); +emit_32(1078278635); +emit_32(1131044864); +emit_32(1112219661); +emit_32(1076164118); +emit_32(1131044864); +emit_32(1113243648); +emit_32(1078294028); +emit_32(1131044864); +emit_32(1114267661); +emit_32(1082183700); +emit_32(1131044864); +emit_32(1115291648); +emit_32(1083337867); +emit_32(1131044864); +emit_32(1116000263); +emit_32(1083538145); +emit_32(1131044864); +emit_32(1116512256); +emit_32(1083307354); +emit_32(1131044864); +emit_32(1117024263); +emit_32(1082616971); +emit_32(1131044864); +emit_32(1117536256); +emit_32(1082459895); +emit_32(1131044864); +emit_32(1118048263); +emit_32(1082553155); +emit_32(1131044864); +emit_32(1118560256); +emit_32(1082740745); +emit_32(1131044864); +emit_32(1119072263); +emit_32(1085377369); +emit_32(1131044864); +emit_32(1119584256); +emit_32(1088549688); +emit_32(1131044864); +emit_32(1120096263); +emit_32(1090805993); +emit_32(1131044864); +emit_32(1120608322); +emit_32(1092446868); +emit_32(1131044864); +emit_32(1121120289); +emit_32(1093587383); +emit_32(1131044864); +emit_32(1121632256); +emit_32(1094483916); +emit_32(1131044864); +emit_32(1122144223); +emit_32(1096648281); +emit_32(1131044864); +emit_32(1122656322); +emit_32(1098439773); +emit_32(1131044864); +emit_32(1123168289); +emit_32(1099378301); +emit_32(1131044864); +emit_32(1123680256); +emit_32(1100113301); +emit_32(1131044864); +emit_32(1124132848); +emit_32(1100821928); +emit_32(1131044864); +emit_32(1124388897); +emit_32(1100695994); +emit_32(1131044864); +emit_32(1124644880); +emit_32(1100654418); +emit_32(1131044864); +emit_32(1124900864); +emit_32(1101348733); +emit_32(1131044864); +emit_32(1125156848); +emit_32(1101846177); +emit_32(1131044864); +emit_32(1125412897); +emit_32(1102171131); +emit_32(1131044864); +emit_32(1125668880); +emit_32(1102926263); +emit_32(1131044864); +emit_32(1125924864); +emit_32(1103561857); +emit_32(1131044864); +emit_32(1126180848); +emit_32(1105011566); +emit_32(1131044864); +emit_32(1126436897); +emit_32(1105956281); +emit_32(1131044864); +emit_32(1126692880); +emit_32(1106074193); +emit_32(1131044864); +emit_32(1126948864); +emit_32(1106288155); +emit_32(1131044864); +emit_32(1127204848); +emit_32(1106414875); +emit_32(1131044864); +emit_32(1127460897); +emit_32(1105582830); +emit_32(1131044864); +emit_32(1127716880); +emit_32(1104515013); +emit_32(1131044864); +emit_32(1127972864); +emit_32(1103803187); +emit_32(1131044864); +emit_32(1128228848); +emit_32(1103189298); +emit_32(1131044864); +emit_32(1128484897); +emit_32(1102339532); +emit_32(1131044864); +emit_32(1128740880); +emit_32(1102167776); +emit_32(1131044864); +emit_32(1128996864); +emit_32(1102179887); +emit_32(1131044864); +emit_32(1129252848); +emit_32(1101976463); +emit_32(1131044864); +emit_32(1129508897); +emit_32(1099672899); +emit_32(1131044864); +emit_32(1129764880); +emit_32(1099572288); +emit_32(1131044864); +emit_32(1130020864); +emit_32(1099410126); +emit_32(1131044864); +emit_32(1130276848); +emit_32(1099232077); +emit_32(1131044864); +emit_32(1130532897); +emit_32(1099661994); +emit_32(1131044864); +emit_32(1130788880); +emit_32(1099398382); +emit_32(1131044864); +emit_32(1131044864); +emit_32(1098507197); +emit_32(1131044864); +emit_32(1131300848); +emit_32(1098737045); +emit_32(1131044864); +emit_32(1131556897); +emit_32(1097951452); +emit_32(1131044864); +emit_32(1131812880); +emit_32(1097046111); +emit_32(1131044864); +emit_32(1132068864); +emit_32(1096926888); +emit_32(1131044864); +emit_32(1081737258); +emit_32(1086083564); +emit_32(1130788880); +emit_32(1090125845); +emit_32(1085231281); +emit_32(1130788880); +emit_32(1094418484); +emit_32(1084350058); +emit_32(1130788880); +emit_32(1098514432); +emit_32(1082346082); +emit_32(1130788880); +emit_32(1100759066); +emit_32(1082352080); +emit_32(1130788880); +emit_32(1102807040); +emit_32(1083015472); +emit_32(1130788880); +emit_32(1104855066); +emit_32(1082714468); +emit_32(1130788880); +emit_32(1106903040); +emit_32(1082667555); +emit_32(1130788880); +emit_32(1108123661); +emit_32(1081440133); +emit_32(1130788880); +emit_32(1109147648); +emit_32(1079509621); +emit_32(1130788880); +emit_32(1110171661); +emit_32(1082472016); +emit_32(1130788880); +emit_32(1111195648); +emit_32(1077273302); +emit_32(1130788880); +emit_32(1112219661); +emit_32(1077242684); +emit_32(1130788880); +emit_32(1113243648); +emit_32(1078266387); +emit_32(1130788880); +emit_32(1114267661); +emit_32(1079519268); +emit_32(1130788880); +emit_32(1115291648); +emit_32(1082332010); +emit_32(1130788880); +emit_32(1116000263); +emit_32(1083509876); +emit_32(1130788880); +emit_32(1116512256); +emit_32(1083089082); +emit_32(1130788880); +emit_32(1117024263); +emit_32(1081681474); +emit_32(1130788880); +emit_32(1117536256); +emit_32(1081604928); +emit_32(1130788880); +emit_32(1118048263); +emit_32(1083484521); +emit_32(1130788880); +emit_32(1118560256); +emit_32(1085967948); +emit_32(1130788880); +emit_32(1119072263); +emit_32(1087165358); +emit_32(1130788880); +emit_32(1119584256); +emit_32(1089804205); +emit_32(1130788880); +emit_32(1120096263); +emit_32(1090592986); +emit_32(1130788880); +emit_32(1120608322); +emit_32(1092476018); +emit_32(1130788880); +emit_32(1121120289); +emit_32(1094570318); +emit_32(1130788880); +emit_32(1121632256); +emit_32(1095714420); +emit_32(1130788880); +emit_32(1122144223); +emit_32(1097098330); +emit_32(1130788880); +emit_32(1122656322); +emit_32(1098580073); +emit_32(1130788880); +emit_32(1123168289); +emit_32(1099541460); +emit_32(1130788880); +emit_32(1123680256); +emit_32(1100022651); +emit_32(1130788880); +emit_32(1124132848); +emit_32(1100679217); +emit_32(1130788880); +emit_32(1124388897); +emit_32(1100590455); +emit_32(1130788880); +emit_32(1124644880); +emit_32(1100445647); +emit_32(1130788880); +emit_32(1124900864); +emit_32(1100992374); +emit_32(1130788880); +emit_32(1125156848); +emit_32(1101812256); +emit_32(1130788880); +emit_32(1125412897); +emit_32(1101911923); +emit_32(1130788880); +emit_32(1125668880); +emit_32(1102583326); +emit_32(1130788880); +emit_32(1125924864); +emit_32(1105586396); +emit_32(1130788880); +emit_32(1126180848); +emit_32(1105418204); +emit_32(1130788880); +emit_32(1126436897); +emit_32(1105539000); +emit_32(1130788880); +emit_32(1126692880); +emit_32(1106015263); +emit_32(1130788880); +emit_32(1126948864); +emit_32(1106032198); +emit_32(1130788880); +emit_32(1127204848); +emit_32(1106139834); +emit_32(1130788880); +emit_32(1127460897); +emit_32(1105229880); +emit_32(1130788880); +emit_32(1127716880); +emit_32(1105009679); +emit_32(1130788880); +emit_32(1127972864); +emit_32(1104632873); +emit_32(1130788880); +emit_32(1128228848); +emit_32(1104045408); +emit_32(1130788880); +emit_32(1128484897); +emit_32(1103027136); +emit_32(1130788880); +emit_32(1128740880); +emit_32(1102134274); +emit_32(1130788880); +emit_32(1128996864); +emit_32(1101980290); +emit_32(1130788880); +emit_32(1129252848); +emit_32(1101929854); +emit_32(1130788880); +emit_32(1129508897); +emit_32(1102202274); +emit_32(1130788880); +emit_32(1129764880); +emit_32(1102297170); +emit_32(1130788880); +emit_32(1130020864); +emit_32(1099118307); +emit_32(1130788880); +emit_32(1130276848); +emit_32(1098962856); +emit_32(1130788880); +emit_32(1130532897); +emit_32(1099408500); +emit_32(1130788880); +emit_32(1130788880); +emit_32(1099424124); +emit_32(1130788880); +emit_32(1131044864); +emit_32(1098958347); +emit_32(1130788880); +emit_32(1131300848); +emit_32(1098882272); +emit_32(1130788880); +emit_32(1131556897); +emit_32(1098200698); +emit_32(1130788880); +emit_32(1131812880); +emit_32(1098164103); +emit_32(1130788880); +emit_32(1132068864); +emit_32(1097566310); +emit_32(1130788880); +emit_32(1081737258); +emit_32(1088205504); +emit_32(1130532897); +emit_32(1090125845); +emit_32(1087556645); +emit_32(1130532897); +emit_32(1094418484); +emit_32(1086398472); +emit_32(1130532897); +emit_32(1098514432); +emit_32(1083645478); +emit_32(1130532897); +emit_32(1100759066); +emit_32(1080639357); +emit_32(1130532897); +emit_32(1102807040); +emit_32(1082880395); +emit_32(1130532897); +emit_32(1104855066); +emit_32(1082376092); +emit_32(1130532897); +emit_32(1106903040); +emit_32(1082783171); +emit_32(1130532897); +emit_32(1108123661); +emit_32(1079715142); +emit_32(1130532897); +emit_32(1109147648); +emit_32(1074967232); +emit_32(1130532897); +emit_32(1110171661); +emit_32(1075751525); +emit_32(1130532897); +emit_32(1111195648); +emit_32(1074864513); +emit_32(1130532897); +emit_32(1112219661); +emit_32(1066352635); +emit_32(1130532897); +emit_32(1113243648); +emit_32(1075556532); +emit_32(1130532897); +emit_32(1114267661); +emit_32(1081657231); +emit_32(1130532897); +emit_32(1115291648); +emit_32(1082114913); +emit_32(1130532897); +emit_32(1116000263); +emit_32(1082771049); +emit_32(1130532897); +emit_32(1116512256); +emit_32(1083047705); +emit_32(1130532897); +emit_32(1117024263); +emit_32(1081671953); +emit_32(1130532897); +emit_32(1117536256); +emit_32(1082383810); +emit_32(1130532897); +emit_32(1118048263); +emit_32(1085344359); +emit_32(1130532897); +emit_32(1118560256); +emit_32(1087131993); +emit_32(1130532897); +emit_32(1119072263); +emit_32(1088001598); +emit_32(1130532897); +emit_32(1119584256); +emit_32(1090829398); +emit_32(1130532897); +emit_32(1120096263); +emit_32(1091029938); +emit_32(1130532897); +emit_32(1120608322); +emit_32(1092548601); +emit_32(1130532897); +emit_32(1121120289); +emit_32(1094257947); +emit_32(1130532897); +emit_32(1121632256); +emit_32(1095812881); +emit_32(1130532897); +emit_32(1122144223); +emit_32(1096665897); +emit_32(1130532897); +emit_32(1122656322); +emit_32(1097826356); +emit_32(1130532897); +emit_32(1123168289); +emit_32(1099106825); +emit_32(1130532897); +emit_32(1123680256); +emit_32(1099535378); +emit_32(1130532897); +emit_32(1124132848); +emit_32(1099629068); +emit_32(1130532897); +emit_32(1124388897); +emit_32(1100012480); +emit_32(1130532897); +emit_32(1124644880); +emit_32(1100315047); +emit_32(1130532897); +emit_32(1124900864); +emit_32(1100226809); +emit_32(1130532897); +emit_32(1125156848); +emit_32(1101404150); +emit_32(1130532897); +emit_32(1125412897); +emit_32(1101559392); +emit_32(1130532897); +emit_32(1125668880); +emit_32(1104381215); +emit_32(1130532897); +emit_32(1125924864); +emit_32(1104769555); +emit_32(1130532897); +emit_32(1126180848); +emit_32(1104830110); +emit_32(1130532897); +emit_32(1126436897); +emit_32(1105225685); +emit_32(1130532897); +emit_32(1126692880); +emit_32(1105543666); +emit_32(1130532897); +emit_32(1126948864); +emit_32(1105381923); +emit_32(1130532897); +emit_32(1127204848); +emit_32(1102960080); +emit_32(1130532897); +emit_32(1127460897); +emit_32(1102636017); +emit_32(1130532897); +emit_32(1127716880); +emit_32(1102352640); +emit_32(1130532897); +emit_32(1127972864); +emit_32(1102376600); +emit_32(1130532897); +emit_32(1128228848); +emit_32(1101985061); +emit_32(1130532897); +emit_32(1128484897); +emit_32(1100996464); +emit_32(1130532897); +emit_32(1128740880); +emit_32(1102569013); +emit_32(1130532897); +emit_32(1128996864); +emit_32(1102092331); +emit_32(1130532897); +emit_32(1129252848); +emit_32(1102309543); +emit_32(1130532897); +emit_32(1129508897); +emit_32(1102185287); +emit_32(1130532897); +emit_32(1129764880); +emit_32(1102249407); +emit_32(1130532897); +emit_32(1130020864); +emit_32(1102463107); +emit_32(1130532897); +emit_32(1130276848); +emit_32(1099451125); +emit_32(1130532897); +emit_32(1130532897); +emit_32(1098977588); +emit_32(1130532897); +emit_32(1130788880); +emit_32(1099393401); +emit_32(1130532897); +emit_32(1131044864); +emit_32(1099525941); +emit_32(1130532897); +emit_32(1131300848); +emit_32(1099608359); +emit_32(1130532897); +emit_32(1131556897); +emit_32(1099010985); +emit_32(1130532897); +emit_32(1131812880); +emit_32(1098150052); +emit_32(1130532897); +emit_32(1132068864); +emit_32(1097996750); +emit_32(1130532897); +emit_32(1081737258); +emit_32(1088030748); +emit_32(1130276848); +emit_32(1090125845); +emit_32(1088922017); +emit_32(1130276848); +emit_32(1094418484); +emit_32(1086531599); +emit_32(1130276848); +emit_32(1098514432); +emit_32(1084132164); +emit_32(1130276848); +emit_32(1100759066); +emit_32(1081632694); +emit_32(1130276848); +emit_32(1102807040); +emit_32(1082276478); +emit_32(1130276848); +emit_32(1104855066); +emit_32(1081735706); +emit_32(1130276848); +emit_32(1106903040); +emit_32(1082304580); +emit_32(1130276848); +emit_32(1108123661); +emit_32(1079035203); +emit_32(1130276848); +emit_32(1109147648); +emit_32(1069837514); +emit_32(1130276848); +emit_32(1110171661); +emit_32(1072973008); +emit_32(1130276848); +emit_32(1111195648); +emit_32(1073616750); +emit_32(1130276848); +emit_32(1112219661); +emit_32(1074356373); +emit_32(1130276848); +emit_32(1113243648); +emit_32(1076853159); +emit_32(1130276848); +emit_32(1114267661); +emit_32(1081069063); +emit_32(1130276848); +emit_32(1115291648); +emit_32(1082137856); +emit_32(1130276848); +emit_32(1116000263); +emit_32(1082943959); +emit_32(1130276848); +emit_32(1116512256); +emit_32(1081841906); +emit_32(1130276848); +emit_32(1117024263); +emit_32(1079724873); +emit_32(1130276848); +emit_32(1117536256); +emit_32(1084345444); +emit_32(1130276848); +emit_32(1118048263); +emit_32(1086294789); +emit_32(1130276848); +emit_32(1118560256); +emit_32(1087434528); +emit_32(1130276848); +emit_32(1119072263); +emit_32(1088073635); +emit_32(1130276848); +emit_32(1119584256); +emit_32(1089448947); +emit_32(1130276848); +emit_32(1120096263); +emit_32(1090721069); +emit_32(1130276848); +emit_32(1120608322); +emit_32(1091918239); +emit_32(1130276848); +emit_32(1121120289); +emit_32(1094547984); +emit_32(1130276848); +emit_32(1121632256); +emit_32(1095883345); +emit_32(1130276848); +emit_32(1122144223); +emit_32(1096699766); +emit_32(1130276848); +emit_32(1122656322); +emit_32(1097650825); +emit_32(1130276848); +emit_32(1123168289); +emit_32(1098292029); +emit_32(1130276848); +emit_32(1123680256); +emit_32(1098586993); +emit_32(1130276848); +emit_32(1124132848); +emit_32(1099015075); +emit_32(1130276848); +emit_32(1124388897); +emit_32(1099448608); +emit_32(1130276848); +emit_32(1124644880); +emit_32(1100240545); +emit_32(1130276848); +emit_32(1124900864); +emit_32(1100411568); +emit_32(1130276848); +emit_32(1125156848); +emit_32(1100717962); +emit_32(1130276848); +emit_32(1125412897); +emit_32(1104106121); +emit_32(1130276848); +emit_32(1125668880); +emit_32(1103981340); +emit_32(1130276848); +emit_32(1125924864); +emit_32(1104173177); +emit_32(1130276848); +emit_32(1126180848); +emit_32(1104308653); +emit_32(1130276848); +emit_32(1126436897); +emit_32(1104718856); +emit_32(1130276848); +emit_32(1126692880); +emit_32(1104731072); +emit_32(1130276848); +emit_32(1126948864); +emit_32(1102448479); +emit_32(1130276848); +emit_32(1127204848); +emit_32(1102776107); +emit_32(1130276848); +emit_32(1127460897); +emit_32(1102622858); +emit_32(1130276848); +emit_32(1127716880); +emit_32(1102367582); +emit_32(1130276848); +emit_32(1127972864); +emit_32(1102063704); +emit_32(1130276848); +emit_32(1128228848); +emit_32(1101966973); +emit_32(1130276848); +emit_32(1128484897); +emit_32(1101031067); +emit_32(1130276848); +emit_32(1128740880); +emit_32(1100260154); +emit_32(1130276848); +emit_32(1128996864); +emit_32(1100108530); +emit_32(1130276848); +emit_32(1129252848); +emit_32(1102466305); +emit_32(1130276848); +emit_32(1129508897); +emit_32(1102042209); +emit_32(1130276848); +emit_32(1129764880); +emit_32(1101779803); +emit_32(1130276848); +emit_32(1130020864); +emit_32(1101832441); +emit_32(1130276848); +emit_32(1130276848); +emit_32(1101855772); +emit_32(1130276848); +emit_32(1130532897); +emit_32(1099854407); +emit_32(1130276848); +emit_32(1130788880); +emit_32(1099755369); +emit_32(1130276848); +emit_32(1131044864); +emit_32(1100126198); +emit_32(1130276848); +emit_32(1131300848); +emit_32(1100210346); +emit_32(1130276848); +emit_32(1131556897); +emit_32(1099599131); +emit_32(1130276848); +emit_32(1131812880); +emit_32(1099312713); +emit_32(1130276848); +emit_32(1132068864); +emit_32(1099215405); +emit_32(1130276848); +emit_32(1081737300); +emit_32(1090545737); +emit_32(1130020864); +emit_32(1090125845); +emit_32(1090779118); +emit_32(1130020864); +emit_32(1094418484); +emit_32(1088257765); +emit_32(1130020864); +emit_32(1098514432); +emit_32(1086032917); +emit_32(1130020864); +emit_32(1100759066); +emit_32(1083317483); +emit_32(1130020864); +emit_32(1102807040); +emit_32(1080833973); +emit_32(1130020864); +emit_32(1104855066); +emit_32(1082686639); +emit_32(1130020864); +emit_32(1106903040); +emit_32(1079520862); +emit_32(1130020864); +emit_32(1108123661); +emit_32(1071421451); +emit_32(1130020864); +emit_32(1109147648); +emit_32(1074673169); +emit_32(1130020864); +emit_32(1110171661); +emit_32(1076755348); +emit_32(1130020864); +emit_32(1111195648); +emit_32(1078551432); +emit_32(1130020864); +emit_32(1112219661); +emit_32(1078159559); +emit_32(1130020864); +emit_32(1113243648); +emit_32(1078755569); +emit_32(1130020864); +emit_32(1114267661); +emit_32(1080798447); +emit_32(1130020864); +emit_32(1115291648); +emit_32(1079415837); +emit_32(1130020864); +emit_32(1116000263); +emit_32(1082138863); +emit_32(1130020864); +emit_32(1116512256); +emit_32(1077619039); +emit_32(1130020864); +emit_32(1117024263); +emit_32(1082948888); +emit_32(1130020864); +emit_32(1117536256); +emit_32(1085399431); +emit_32(1130020864); +emit_32(1118048263); +emit_32(1087137844); +emit_32(1130020864); +emit_32(1118560256); +emit_32(1087057984); +emit_32(1130020864); +emit_32(1119072263); +emit_32(1088011706); +emit_32(1130020864); +emit_32(1119584256); +emit_32(1087547166); +emit_32(1130020864); +emit_32(1120096263); +emit_32(1089001897); +emit_32(1130020864); +emit_32(1120608322); +emit_32(1092274230); +emit_32(1130020864); +emit_32(1121120289); +emit_32(1093489656); +emit_32(1130020864); +emit_32(1121632256); +emit_32(1094888037); +emit_32(1130020864); +emit_32(1122144223); +emit_32(1095981597); +emit_32(1130020864); +emit_32(1122656322); +emit_32(1097071696); +emit_32(1130020864); +emit_32(1123168289); +emit_32(1097539571); +emit_32(1130020864); +emit_32(1123680256); +emit_32(1097094346); +emit_32(1130020864); +emit_32(1124132848); +emit_32(1098861091); +emit_32(1130020864); +emit_32(1124388897); +emit_32(1099278215); +emit_32(1130020864); +emit_32(1124644880); +emit_32(1099782108); +emit_32(1130020864); +emit_32(1124900864); +emit_32(1100389129); +emit_32(1130020864); +emit_32(1125156848); +emit_32(1103220179); +emit_32(1130020864); +emit_32(1125412897); +emit_32(1103665509); +emit_32(1130020864); +emit_32(1125668880); +emit_32(1104112307); +emit_32(1130020864); +emit_32(1125924864); +emit_32(1104257063); +emit_32(1130020864); +emit_32(1126180848); +emit_32(1103372904); +emit_32(1130020864); +emit_32(1126436897); +emit_32(1104276514); +emit_32(1130020864); +emit_32(1126692880); +emit_32(1104476792); +emit_32(1130020864); +emit_32(1126948864); +emit_32(1102277299); +emit_32(1130020864); +emit_32(1127204848); +emit_32(1102993162); +emit_32(1130020864); +emit_32(1127460897); +emit_32(1102760011); +emit_32(1130020864); +emit_32(1127716880); +emit_32(1102172861); +emit_32(1130020864); +emit_32(1127972864); +emit_32(1102165993); +emit_32(1130020864); +emit_32(1128228848); +emit_32(1101400008); +emit_32(1130020864); +emit_32(1128484897); +emit_32(1100749524); +emit_32(1130020864); +emit_32(1128740880); +emit_32(1100733953); +emit_32(1130020864); +emit_32(1128996864); +emit_32(1100153147); +emit_32(1130020864); +emit_32(1129252848); +emit_32(1100010435); +emit_32(1130020864); +emit_32(1129508897); +emit_32(1101004957); +emit_32(1130020864); +emit_32(1129764880); +emit_32(1102164053); +emit_32(1130020864); +emit_32(1130020864); +emit_32(1101850110); +emit_32(1130020864); +emit_32(1130276848); +emit_32(1102364960); +emit_32(1130020864); +emit_32(1130532897); +emit_32(1103265268); +emit_32(1130020864); +emit_32(1130788880); +emit_32(1100508614); +emit_32(1130020864); +emit_32(1131044864); +emit_32(1100302936); +emit_32(1130020864); +emit_32(1131300848); +emit_32(1100358615); +emit_32(1130020864); +emit_32(1131556897); +emit_32(1100122056); +emit_32(1130020864); +emit_32(1131812880); +emit_32(1099275331); +emit_32(1130020864); +emit_32(1132068864); +emit_32(1099473145); +emit_32(1130020864); +emit_32(1081737300); +emit_32(1091835139); +emit_32(1129764880); +emit_32(1090125845); +emit_32(1092274629); +emit_32(1129764880); +emit_32(1094418484); +emit_32(1091485187); +emit_32(1129764880); +emit_32(1098514432); +emit_32(1088227650); +emit_32(1129764880); +emit_32(1100759066); +emit_32(1086589313); +emit_32(1129764880); +emit_32(1102807040); +emit_32(1084191974); +emit_32(1129764880); +emit_32(1104855066); +emit_32(1080611507); +emit_32(1129764880); +emit_32(1106903040); +emit_32(1075926931); +emit_32(1129764880); +emit_32(1108123661); +emit_32(1079228645); +emit_32(1129764880); +emit_32(1109147648); +emit_32(1082222833); +emit_32(1129764880); +emit_32(1110171661); +emit_32(1083146418); +emit_32(1129764880); +emit_32(1111195648); +emit_32(1082983868); +emit_32(1129764880); +emit_32(1112219661); +emit_32(1081162806); +emit_32(1129764880); +emit_32(1113243648); +emit_32(1077328919); +emit_32(1129764880); +emit_32(1114267661); +emit_32(1076126244); +emit_32(1129764880); +emit_32(1115291648); +emit_32(1076114164); +emit_32(1129764880); +emit_32(1116000263); +emit_32(1077220454); +emit_32(1129764880); +emit_32(1116512256); +emit_32(1076896821); +emit_32(1129764880); +emit_32(1117024263); +emit_32(1084289953); +emit_32(1129764880); +emit_32(1117536256); +emit_32(1085902789); +emit_32(1129764880); +emit_32(1118048263); +emit_32(1086392243); +emit_32(1129764880); +emit_32(1118560256); +emit_32(1086899838); +emit_32(1129764880); +emit_32(1119072263); +emit_32(1086675170); +emit_32(1129764880); +emit_32(1119584256); +emit_32(1088147014); +emit_32(1129764880); +emit_32(1120096263); +emit_32(1090408877); +emit_32(1129764880); +emit_32(1120608322); +emit_32(1091709677); +emit_32(1129764880); +emit_32(1121120289); +emit_32(1092234888); +emit_32(1129764880); +emit_32(1121632256); +emit_32(1092967570); +emit_32(1129764880); +emit_32(1122144223); +emit_32(1095135710); +emit_32(1129764880); +emit_32(1122656322); +emit_32(1095795579); +emit_32(1129764880); +emit_32(1123168289); +emit_32(1096420845); +emit_32(1129764880); +emit_32(1123680256); +emit_32(1097142580); +emit_32(1129764880); +emit_32(1124132848); +emit_32(1097919155); +emit_32(1129764880); +emit_32(1124388897); +emit_32(1099013659); +emit_32(1129764880); +emit_32(1124644880); +emit_32(1099826515); +emit_32(1129764880); +emit_32(1124900864); +emit_32(1102949541); +emit_32(1129764880); +emit_32(1125156848); +emit_32(1103290853); +emit_32(1129764880); +emit_32(1125412897); +emit_32(1103584035); +emit_32(1129764880); +emit_32(1125668880); +emit_32(1103730049); +emit_32(1129764880); +emit_32(1125924864); +emit_32(1101436027); +emit_32(1129764880); +emit_32(1126180848); +emit_32(1103412226); +emit_32(1129764880); +emit_32(1126436897); +emit_32(1103699850); +emit_32(1129764880); +emit_32(1126692880); +emit_32(1104185079); +emit_32(1129764880); +emit_32(1126948864); +emit_32(1102131233); +emit_32(1129764880); +emit_32(1127204848); +emit_32(1105054191); +emit_32(1129764880); +emit_32(1127460897); +emit_32(1104932451); +emit_32(1129764880); +emit_32(1127716880); +emit_32(1104496873); +emit_32(1129764880); +emit_32(1127972864); +emit_32(1104477159); +emit_32(1129764880); +emit_32(1128228848); +emit_32(1104320607); +emit_32(1129764880); +emit_32(1128484897); +emit_32(1103549432); +emit_32(1129764880); +emit_32(1128740880); +emit_32(1102911793); +emit_32(1129764880); +emit_32(1128996864); +emit_32(1101627707); +emit_32(1129764880); +emit_32(1129252848); +emit_32(1100874200); +emit_32(1129764880); +emit_32(1129508897); +emit_32(1102213074); +emit_32(1129764880); +emit_32(1129764880); +emit_32(1102331091); +emit_32(1129764880); +emit_32(1130020864); +emit_32(1102551345); +emit_32(1129764880); +emit_32(1130276848); +emit_32(1102696730); +emit_32(1129764880); +emit_32(1130532897); +emit_32(1103568568); +emit_32(1129764880); +emit_32(1130788880); +emit_32(1102851657); +emit_32(1129764880); +emit_32(1131044864); +emit_32(1100504787); +emit_32(1129764880); +emit_32(1131300848); +emit_32(1099935252); +emit_32(1129764880); +emit_32(1131556897); +emit_32(1100381212); +emit_32(1129764880); +emit_32(1131812880); +emit_32(1099598030); +emit_32(1129764880); +emit_32(1132068864); +emit_32(1099324719); +emit_32(1129764880); +emit_32(1081737300); +emit_32(1093216816); +emit_32(1129508897); +emit_32(1090125845); +emit_32(1092417151); +emit_32(1129508897); +emit_32(1094418484); +emit_32(1092298631); +emit_32(1129508897); +emit_32(1098514432); +emit_32(1090960878); +emit_32(1129508897); +emit_32(1100759066); +emit_32(1088614281); +emit_32(1129508897); +emit_32(1102807040); +emit_32(1087275941); +emit_32(1129508897); +emit_32(1104855066); +emit_32(1083352170); +emit_32(1129508897); +emit_32(1106903040); +emit_32(1082781472); +emit_32(1129508897); +emit_32(1108123661); +emit_32(1082625024); +emit_32(1129508897); +emit_32(1109147648); +emit_32(1083756291); +emit_32(1129508897); +emit_32(1110171661); +emit_32(1085301682); +emit_32(1129508897); +emit_32(1111195648); +emit_32(1085254392); +emit_32(1129508897); +emit_32(1112219661); +emit_32(1083183433); +emit_32(1129508897); +emit_32(1113243648); +emit_32(1082262280); +emit_32(1129508897); +emit_32(1114267661); +emit_32(1079746432); +emit_32(1129508897); +emit_32(1115291648); +emit_32(1079747858); +emit_32(1129508897); +emit_32(1116000263); +emit_32(1080629039); +emit_32(1129508897); +emit_32(1116512256); +emit_32(1084566295); +emit_32(1129508897); +emit_32(1117024263); +emit_32(1087852574); +emit_32(1129508897); +emit_32(1117536256); +emit_32(1089342076); +emit_32(1129508897); +emit_32(1118048263); +emit_32(1089066049); +emit_32(1129508897); +emit_32(1118560256); +emit_32(1087464056); +emit_32(1129508897); +emit_32(1119072263); +emit_32(1086240913); +emit_32(1129508897); +emit_32(1119584256); +emit_32(1087270531); +emit_32(1129508897); +emit_32(1120096263); +emit_32(1090862428); +emit_32(1129508897); +emit_32(1120608322); +emit_32(1091412280); +emit_32(1129508897); +emit_32(1121120289); +emit_32(1092239313); +emit_32(1129508897); +emit_32(1121632256); +emit_32(1093054602); +emit_32(1129508897); +emit_32(1122144223); +emit_32(1094389439); +emit_32(1129508897); +emit_32(1122656322); +emit_32(1094766612); +emit_32(1129508897); +emit_32(1123168289); +emit_32(1095867197); +emit_32(1129508897); +emit_32(1123680256); +emit_32(1097324193); +emit_32(1129508897); +emit_32(1124132848); +emit_32(1097994863); +emit_32(1129508897); +emit_32(1124388897); +emit_32(1098508665); +emit_32(1129508897); +emit_32(1124644880); +emit_32(1099390989); +emit_32(1129508897); +emit_32(1124900864); +emit_32(1102819570); +emit_32(1129508897); +emit_32(1125156848); +emit_32(1103456528); +emit_32(1129508897); +emit_32(1125412897); +emit_32(1104213443); +emit_32(1129508897); +emit_32(1125668880); +emit_32(1101924034); +emit_32(1129508897); +emit_32(1125924864); +emit_32(1101395290); +emit_32(1129508897); +emit_32(1126180848); +emit_32(1103179599); +emit_32(1129508897); +emit_32(1126436897); +emit_32(1104174855); +emit_32(1129508897); +emit_32(1126692880); +emit_32(1103711856); +emit_32(1129508897); +emit_32(1126948864); +emit_32(1101427166); +emit_32(1129508897); +emit_32(1127204848); +emit_32(1104341946); +emit_32(1129508897); +emit_32(1127460897); +emit_32(1103905266); +emit_32(1129508897); +emit_32(1127716880); +emit_32(1104351225); +emit_32(1129508897); +emit_32(1127972864); +emit_32(1104338538); +emit_32(1129508897); +emit_32(1128228848); +emit_32(1104240391); +emit_32(1129508897); +emit_32(1128484897); +emit_32(1104134537); +emit_32(1129508897); +emit_32(1128740880); +emit_32(1103285715); +emit_32(1129508897); +emit_32(1128996864); +emit_32(1103034843); +emit_32(1129508897); +emit_32(1129252848); +emit_32(1102598688); +emit_32(1129508897); +emit_32(1129508897); +emit_32(1102258058); +emit_32(1129508897); +emit_32(1129764880); +emit_32(1102454299); +emit_32(1129508897); +emit_32(1130020864); +emit_32(1102717125); +emit_32(1129508897); +emit_32(1130276848); +emit_32(1103026612); +emit_32(1129508897); +emit_32(1130532897); +emit_32(1103449817); +emit_32(1129508897); +emit_32(1130788880); +emit_32(1103303593); +emit_32(1129508897); +emit_32(1131044864); +emit_32(1100124678); +emit_32(1129508897); +emit_32(1131300848); +emit_32(1099774348); +emit_32(1129508897); +emit_32(1131556897); +emit_32(1099896141); +emit_32(1129508897); +emit_32(1131812880); +emit_32(1099520646); +emit_32(1129508897); +emit_32(1132068864); +emit_32(1098974233); +emit_32(1129508897); +emit_32(1081737258); +emit_32(1093092141); +emit_32(1129252848); +emit_32(1090125845); +emit_32(1092641463); +emit_32(1129252848); +emit_32(1094418484); +emit_32(1093021047); +emit_32(1129252848); +emit_32(1098514432); +emit_32(1091404216); +emit_32(1129252848); +emit_32(1100759066); +emit_32(1090891043); +emit_32(1129252848); +emit_32(1102807040); +emit_32(1087333718); +emit_32(1129252848); +emit_32(1104855066); +emit_32(1086550243); +emit_32(1129252848); +emit_32(1106903040); +emit_32(1086614059); +emit_32(1129252848); +emit_32(1108123661); +emit_32(1087395227); +emit_32(1129252848); +emit_32(1109147648); +emit_32(1087693715); +emit_32(1129252848); +emit_32(1110171661); +emit_32(1086905605); +emit_32(1129252848); +emit_32(1111195648); +emit_32(1085917406); +emit_32(1129252848); +emit_32(1112219661); +emit_32(1086122445); +emit_32(1129252848); +emit_32(1113243648); +emit_32(1085614577); +emit_32(1129252848); +emit_32(1114267661); +emit_32(1083545422); +emit_32(1129252848); +emit_32(1115291648); +emit_32(1083831285); +emit_32(1129252848); +emit_32(1116000263); +emit_32(1086466587); +emit_32(1129252848); +emit_32(1116512256); +emit_32(1089709267); +emit_32(1129252848); +emit_32(1117024263); +emit_32(1091281166); +emit_32(1129252848); +emit_32(1117536256); +emit_32(1091916068); +emit_32(1129252848); +emit_32(1118048263); +emit_32(1091040717); +emit_32(1129252848); +emit_32(1118560256); +emit_32(1090210612); +emit_32(1129252848); +emit_32(1119072263); +emit_32(1089209851); +emit_32(1129252848); +emit_32(1119584256); +emit_32(1089378399); +emit_32(1129252848); +emit_32(1120096263); +emit_32(1090028789); +emit_32(1129252848); +emit_32(1120608322); +emit_32(1091234840); +emit_32(1129252848); +emit_32(1121120289); +emit_32(1093074734); +emit_32(1129252848); +emit_32(1121632256); +emit_32(1093111330); +emit_32(1129252848); +emit_32(1122144223); +emit_32(1094128029); +emit_32(1129252848); +emit_32(1122656322); +emit_32(1095036410); +emit_32(1129252848); +emit_32(1123168289); +emit_32(1095680551); +emit_32(1129252848); +emit_32(1123680256); +emit_32(1097146460); +emit_32(1129252848); +emit_32(1124132848); +emit_32(1098042153); +emit_32(1129252848); +emit_32(1124388897); +emit_32(1097318741); +emit_32(1129252848); +emit_32(1124644880); +emit_32(1101515457); +emit_32(1129252848); +emit_32(1124900864); +emit_32(1102822454); +emit_32(1129252848); +emit_32(1125156848); +emit_32(1103621941); +emit_32(1129252848); +emit_32(1125412897); +emit_32(1104011330); +emit_32(1129252848); +emit_32(1125668880); +emit_32(1101788244); +emit_32(1129252848); +emit_32(1125924864); +emit_32(1102141981); +emit_32(1129252848); +emit_32(1126180848); +emit_32(1103612556); +emit_32(1129252848); +emit_32(1126436897); +emit_32(1104382421); +emit_32(1129252848); +emit_32(1126692880); +emit_32(1104094324); +emit_32(1129252848); +emit_32(1126948864); +emit_32(1101288335); +emit_32(1129252848); +emit_32(1127204848); +emit_32(1103222224); +emit_32(1129252848); +emit_32(1127460897); +emit_32(1103312087); +emit_32(1129252848); +emit_32(1127716880); +emit_32(1103773512); +emit_32(1129252848); +emit_32(1127972864); +emit_32(1104076551); +emit_32(1129252848); +emit_32(1128228848); +emit_32(1104345353); +emit_32(1129252848); +emit_32(1128484897); +emit_32(1104178053); +emit_32(1129252848); +emit_32(1128740880); +emit_32(1103422240); +emit_32(1129252848); +emit_32(1128996864); +emit_32(1103161092); +emit_32(1129252848); +emit_32(1129252848); +emit_32(1102825705); +emit_32(1129252848); +emit_32(1129508897); +emit_32(1102393482); +emit_32(1129252848); +emit_32(1129764880); +emit_32(1102471601); +emit_32(1129252848); +emit_32(1130020864); +emit_32(1100205471); +emit_32(1129252848); +emit_32(1130276848); +emit_32(1102674552); +emit_32(1129252848); +emit_32(1130532897); +emit_32(1102672980); +emit_32(1129252848); +emit_32(1130788880); +emit_32(1102535406); +emit_32(1129252848); +emit_32(1131044864); +emit_32(1100902669); +emit_32(1129252848); +emit_32(1131300848); +emit_32(1099358641); +emit_32(1129252848); +emit_32(1131556897); +emit_32(1099486829); +emit_32(1129252848); +emit_32(1131812880); +emit_32(1098967679); +emit_32(1129252848); +emit_32(1132068864); +emit_32(1097864210); +emit_32(1129252848); +emit_32(1081737258); +emit_32(1094158228); +emit_32(1128996864); +emit_32(1090125845); +emit_32(1093761447); +emit_32(1128996864); +emit_32(1094418484); +emit_32(1094140822); +emit_32(1128996864); +emit_32(1098514432); +emit_32(1093034574); +emit_32(1128996864); +emit_32(1100759066); +emit_32(1091456100); +emit_32(1128996864); +emit_32(1102807040); +emit_32(1089525095); +emit_32(1128996864); +emit_32(1104855066); +emit_32(1088585025); +emit_32(1128996864); +emit_32(1106903040); +emit_32(1090478817); +emit_32(1128996864); +emit_32(1108123661); +emit_32(1091340515); +emit_32(1128996864); +emit_32(1109147648); +emit_32(1091433031); +emit_32(1128996864); +emit_32(1110171661); +emit_32(1090929264); +emit_32(1128996864); +emit_32(1111195648); +emit_32(1089429192); +emit_32(1128996864); +emit_32(1112219661); +emit_32(1087959340); +emit_32(1128996864); +emit_32(1113243648); +emit_32(1088733567); +emit_32(1128996864); +emit_32(1114267661); +emit_32(1087293054); +emit_32(1128996864); +emit_32(1115291648); +emit_32(1087872937); +emit_32(1128996864); +emit_32(1116000263); +emit_32(1089774656); +emit_32(1128996864); +emit_32(1116512256); +emit_32(1091806303); +emit_32(1128996864); +emit_32(1117024263); +emit_32(1092488066); +emit_32(1128996864); +emit_32(1117536256); +emit_32(1092781238); +emit_32(1128996864); +emit_32(1118048263); +emit_32(1092423317); +emit_32(1128996864); +emit_32(1118560256); +emit_32(1092476627); +emit_32(1128996864); +emit_32(1119072263); +emit_32(1092619547); +emit_32(1128996864); +emit_32(1119584256); +emit_32(1092370794); +emit_32(1128996864); +emit_32(1120096263); +emit_32(1091790858); +emit_32(1128996864); +emit_32(1120608322); +emit_32(1091461888); +emit_32(1128996864); +emit_32(1121120289); +emit_32(1092460080); +emit_32(1128996864); +emit_32(1121632256); +emit_32(1094170916); +emit_32(1128996864); +emit_32(1122144223); +emit_32(1094599154); +emit_32(1128996864); +emit_32(1122656322); +emit_32(1095059898); +emit_32(1128996864); +emit_32(1123168289); +emit_32(1096401342); +emit_32(1128996864); +emit_32(1123680256); +emit_32(1096965371); +emit_32(1128996864); +emit_32(1124132848); +emit_32(1097641807); +emit_32(1128996864); +emit_32(1124388897); +emit_32(1099087059); +emit_32(1128996864); +emit_32(1124644880); +emit_32(1102450944); +emit_32(1128996864); +emit_32(1124900864); +emit_32(1103410286); +emit_32(1128996864); +emit_32(1125156848); +emit_32(1103813149); +emit_32(1128996864); +emit_32(1125412897); +emit_32(1101937980); +emit_32(1128996864); +emit_32(1125668880); +emit_32(1103166020); +emit_32(1128996864); +emit_32(1125924864); +emit_32(1104505681); +emit_32(1128996864); +emit_32(1126180848); +emit_32(1103994867); +emit_32(1128996864); +emit_32(1126436897); +emit_32(1104662548); +emit_32(1128996864); +emit_32(1126692880); +emit_32(1104116974); +emit_32(1128996864); +emit_32(1126948864); +emit_32(1100885629); +emit_32(1128996864); +emit_32(1127204848); +emit_32(1100638585); +emit_32(1128996864); +emit_32(1127460897); +emit_32(1100607442); +emit_32(1128996864); +emit_32(1127716880); +emit_32(1103522116); +emit_32(1128996864); +emit_32(1127972864); +emit_32(1103785676); +emit_32(1128996864); +emit_32(1128228848); +emit_32(1103795375); +emit_32(1128996864); +emit_32(1128484897); +emit_32(1101024146); +emit_32(1128996864); +emit_32(1128740880); +emit_32(1100738829); +emit_32(1128996864); +emit_32(1128996864); +emit_32(1102805677); +emit_32(1128996864); +emit_32(1129252848); +emit_32(1102445543); +emit_32(1128996864); +emit_32(1129508897); +emit_32(1102293657); +emit_32(1128996864); +emit_32(1129764880); +emit_32(1100424728); +emit_32(1128996864); +emit_32(1130020864); +emit_32(1099671273); +emit_32(1128996864); +emit_32(1130276848); +emit_32(1100387975); +emit_32(1128996864); +emit_32(1130532897); +emit_32(1101778072); +emit_32(1128996864); +emit_32(1130788880); +emit_32(1101932318); +emit_32(1128996864); +emit_32(1131044864); +emit_32(1101602383); +emit_32(1128996864); +emit_32(1131300848); +emit_32(1098804049); +emit_32(1128996864); +emit_32(1131556897); +emit_32(1098879861); +emit_32(1128996864); +emit_32(1131812880); +emit_32(1098098881); +emit_32(1128996864); +emit_32(1132068864); +emit_32(1096354890); +emit_32(1128996864); +emit_32(1081737258); +emit_32(1094837495); +emit_32(1128740880); +emit_32(1090125845); +emit_32(1095096284); +emit_32(1128740880); +emit_32(1094418484); +emit_32(1094836761); +emit_32(1128740880); +emit_32(1098514432); +emit_32(1093776966); +emit_32(1128740880); +emit_32(1100759066); +emit_32(1092523739); +emit_32(1128740880); +emit_32(1102807040); +emit_32(1091209108); +emit_32(1128740880); +emit_32(1104855066); +emit_32(1090481543); +emit_32(1128740880); +emit_32(1106903040); +emit_32(1091724850); +emit_32(1128740880); +emit_32(1108123661); +emit_32(1092918077); +emit_32(1128740880); +emit_32(1109147648); +emit_32(1092885571); +emit_32(1128740880); +emit_32(1110171661); +emit_32(1092185311); +emit_32(1128740880); +emit_32(1111195648); +emit_32(1090654935); +emit_32(1128740880); +emit_32(1112219661); +emit_32(1090140378); +emit_32(1128740880); +emit_32(1113243648); +emit_32(1091090734); +emit_32(1128740880); +emit_32(1114267661); +emit_32(1090672415); +emit_32(1128740880); +emit_32(1115291648); +emit_32(1091158399); +emit_32(1128740880); +emit_32(1116000263); +emit_32(1092233651); +emit_32(1128740880); +emit_32(1116512256); +emit_32(1093174139); +emit_32(1128740880); +emit_32(1117024263); +emit_32(1092967255); +emit_32(1128740880); +emit_32(1117536256); +emit_32(1093958998); +emit_32(1128740880); +emit_32(1118048263); +emit_32(1094070986); +emit_32(1128740880); +emit_32(1118560256); +emit_32(1094393423); +emit_32(1128740880); +emit_32(1119072263); +emit_32(1095115263); +emit_32(1128740880); +emit_32(1119584256); +emit_32(1095201351); +emit_32(1128740880); +emit_32(1120096263); +emit_32(1094051693); +emit_32(1128740880); +emit_32(1120608322); +emit_32(1092903187); +emit_32(1128740880); +emit_32(1121120289); +emit_32(1093066136); +emit_32(1128740880); +emit_32(1121632256); +emit_32(1093765641); +emit_32(1128740880); +emit_32(1122144223); +emit_32(1094858886); +emit_32(1128740880); +emit_32(1122656322); +emit_32(1095293731); +emit_32(1128740880); +emit_32(1123168289); +emit_32(1096058248); +emit_32(1128740880); +emit_32(1123680256); +emit_32(1098058197); +emit_32(1128740880); +emit_32(1124132848); +emit_32(1099090415); +emit_32(1128740880); +emit_32(1124388897); +emit_32(1099754216); +emit_32(1128740880); +emit_32(1124644880); +emit_32(1103037989); +emit_32(1128740880); +emit_32(1124900864); +emit_32(1103411334); +emit_32(1128740880); +emit_32(1125156848); +emit_32(1104264875); +emit_32(1128740880); +emit_32(1125412897); +emit_32(1101973160); +emit_32(1128740880); +emit_32(1125668880); +emit_32(1104413616); +emit_32(1128740880); +emit_32(1125924864); +emit_32(1104295861); +emit_32(1128740880); +emit_32(1126180848); +emit_32(1104392801); +emit_32(1128740880); +emit_32(1126436897); +emit_32(1104250248); +emit_32(1128740880); +emit_32(1126692880); +emit_32(1104207466); +emit_32(1128740880); +emit_32(1126948864); +emit_32(1101393507); +emit_32(1128740880); +emit_32(1127204848); +emit_32(1101210845); +emit_32(1128740880); +emit_32(1127460897); +emit_32(1100893913); +emit_32(1128740880); +emit_32(1127716880); +emit_32(1101512678); +emit_32(1128740880); +emit_32(1127972864); +emit_32(1103029862); +emit_32(1128740880); +emit_32(1128228848); +emit_32(1103145206); +emit_32(1128740880); +emit_32(1128484897); +emit_32(1100738514); +emit_32(1128740880); +emit_32(1128740880); +emit_32(1101464234); +emit_32(1128740880); +emit_32(1128996864); +emit_32(1102046560); +emit_32(1128740880); +emit_32(1129252848); +emit_32(1102012062); +emit_32(1128740880); +emit_32(1129508897); +emit_32(1101022678); +emit_32(1128740880); +emit_32(1129764880); +emit_32(1098697723); +emit_32(1128740880); +emit_32(1130020864); +emit_32(1098672662); +emit_32(1128740880); +emit_32(1130276848); +emit_32(1098798911); +emit_32(1128740880); +emit_32(1130532897); +emit_32(1100908750); +emit_32(1128740880); +emit_32(1130788880); +emit_32(1100999243); +emit_32(1128740880); +emit_32(1131044864); +emit_32(1100710255); +emit_32(1128740880); +emit_32(1131300848); +emit_32(1097055338); +emit_32(1128740880); +emit_32(1131556897); +emit_32(1097777807); +emit_32(1128740880); +emit_32(1131812880); +emit_32(1096376071); +emit_32(1128740880); +emit_32(1132068864); +emit_32(1094422364); +emit_32(1128740880); +emit_32(1081737258); +emit_32(1096602144); +emit_32(1128484897); +emit_32(1090125845); +emit_32(1096605604); +emit_32(1128484897); +emit_32(1094418484); +emit_32(1095915222); +emit_32(1128484897); +emit_32(1098514432); +emit_32(1094988700); +emit_32(1128484897); +emit_32(1100759066); +emit_32(1093318738); +emit_32(1128484897); +emit_32(1102807040); +emit_32(1092655199); +emit_32(1128484897); +emit_32(1104855066); +emit_32(1091908927); +emit_32(1128484897); +emit_32(1106903040); +emit_32(1093146457); +emit_32(1128484897); +emit_32(1108123661); +emit_32(1093729255); +emit_32(1128484897); +emit_32(1109147648); +emit_32(1093918628); +emit_32(1128484897); +emit_32(1110171661); +emit_32(1093116048); +emit_32(1128484897); +emit_32(1111195648); +emit_32(1091599514); +emit_32(1128484897); +emit_32(1112219661); +emit_32(1092064610); +emit_32(1128484897); +emit_32(1113243648); +emit_32(1092256562); +emit_32(1128484897); +emit_32(1114267661); +emit_32(1092232937); +emit_32(1128484897); +emit_32(1115291648); +emit_32(1092569216); +emit_32(1128484897); +emit_32(1116000263); +emit_32(1093499827); +emit_32(1128484897); +emit_32(1116512256); +emit_32(1094494401); +emit_32(1128484897); +emit_32(1117024263); +emit_32(1094275249); +emit_32(1128484897); +emit_32(1117536256); +emit_32(1095835320); +emit_32(1128484897); +emit_32(1118048263); +emit_32(1096603927); +emit_32(1128484897); +emit_32(1118560256); +emit_32(1095737174); +emit_32(1128484897); +emit_32(1119072263); +emit_32(1097480536); +emit_32(1128484897); +emit_32(1119584256); +emit_32(1097454217); +emit_32(1128484897); +emit_32(1120096263); +emit_32(1096093480); +emit_32(1128484897); +emit_32(1120608322); +emit_32(1095489500); +emit_32(1128484897); +emit_32(1121120289); +emit_32(1095558601); +emit_32(1128484897); +emit_32(1121632256); +emit_32(1094835713); +emit_32(1128484897); +emit_32(1122144223); +emit_32(1095452590); +emit_32(1128484897); +emit_32(1122656322); +emit_32(1095192334); +emit_32(1128484897); +emit_32(1123168289); +emit_32(1096359399); +emit_32(1128484897); +emit_32(1123680256); +emit_32(1098052325); +emit_32(1128484897); +emit_32(1124132848); +emit_32(1099302384); +emit_32(1128484897); +emit_32(1124388897); +emit_32(1100571948); +emit_32(1128484897); +emit_32(1124644880); +emit_32(1103063207); +emit_32(1128484897); +emit_32(1124900864); +emit_32(1104141301); +emit_32(1128484897); +emit_32(1125156848); +emit_32(1104236039); +emit_32(1128484897); +emit_32(1125412897); +emit_32(1101777338); +emit_32(1128484897); +emit_32(1125668880); +emit_32(1103904794); +emit_32(1128484897); +emit_32(1125924864); +emit_32(1104679954); +emit_32(1128484897); +emit_32(1126180848); +emit_32(1104977645); +emit_32(1128484897); +emit_32(1126436897); +emit_32(1104719800); +emit_32(1128484897); +emit_32(1126692880); +emit_32(1104308181); +emit_32(1128484897); +emit_32(1126948864); +emit_32(1102818784); +emit_32(1128484897); +emit_32(1127204848); +emit_32(1104373455); +emit_32(1128484897); +emit_32(1127460897); +emit_32(1101605267); +emit_32(1128484897); +emit_32(1127716880); +emit_32(1101582618); +emit_32(1128484897); +emit_32(1127972864); +emit_32(1103712433); +emit_32(1128484897); +emit_32(1128228848); +emit_32(1103557086); +emit_32(1128484897); +emit_32(1128484897); +emit_32(1103194069); +emit_32(1128484897); +emit_32(1128740880); +emit_32(1101005482); +emit_32(1128484897); +emit_32(1128996864); +emit_32(1102896693); +emit_32(1128484897); +emit_32(1129252848); +emit_32(1102422632); +emit_32(1128484897); +emit_32(1129508897); +emit_32(1099646737); +emit_32(1128484897); +emit_32(1129764880); +emit_32(1099338403); +emit_32(1128484897); +emit_32(1130020864); +emit_32(1099043701); +emit_32(1128484897); +emit_32(1130276848); +emit_32(1098432643); +emit_32(1128484897); +emit_32(1130532897); +emit_32(1101270824); +emit_32(1128484897); +emit_32(1130788880); +emit_32(1101020319); +emit_32(1128484897); +emit_32(1131044864); +emit_32(1100721370); +emit_32(1128484897); +emit_32(1131300848); +emit_32(1097164495); +emit_32(1128484897); +emit_32(1131556897); +emit_32(1096670721); +emit_32(1128484897); +emit_32(1131812880); +emit_32(1095529765); +emit_32(1128484897); +emit_32(1132068864); +emit_32(1095414841); +emit_32(1128484897); +emit_32(1081737258); +emit_32(1097223216); +emit_32(1128228848); +emit_32(1090125845); +emit_32(1097159043); +emit_32(1128228848); +emit_32(1094418484); +emit_32(1096303510); +emit_32(1128228848); +emit_32(1098514432); +emit_32(1095078878); +emit_32(1128228848); +emit_32(1100759066); +emit_32(1093559491); +emit_32(1128228848); +emit_32(1102807040); +emit_32(1093420450); +emit_32(1128228848); +emit_32(1104855066); +emit_32(1094782865); +emit_32(1128228848); +emit_32(1106903040); +emit_32(1094716699); +emit_32(1128228848); +emit_32(1108123661); +emit_32(1095422496); +emit_32(1128228848); +emit_32(1109147648); +emit_32(1095210998); +emit_32(1128228848); +emit_32(1110171661); +emit_32(1093591892); +emit_32(1128228848); +emit_32(1111195648); +emit_32(1093748025); +emit_32(1128228848); +emit_32(1112219661); +emit_32(1093936139); +emit_32(1128228848); +emit_32(1113243648); +emit_32(1093754421); +emit_32(1128228848); +emit_32(1114267661); +emit_32(1092768026); +emit_32(1128228848); +emit_32(1115291648); +emit_32(1093788919); +emit_32(1128228848); +emit_32(1116000263); +emit_32(1094950951); +emit_32(1128228848); +emit_32(1116512256); +emit_32(1095041758); +emit_32(1128228848); +emit_32(1117024263); +emit_32(1096487325); +emit_32(1128228848); +emit_32(1117536256); +emit_32(1097262852); +emit_32(1128228848); +emit_32(1118048263); +emit_32(1097536530); +emit_32(1128228848); +emit_32(1118560256); +emit_32(1098558367); +emit_32(1128228848); +emit_32(1119072263); +emit_32(1098952212); +emit_32(1128228848); +emit_32(1119584256); +emit_32(1099049048); +emit_32(1128228848); +emit_32(1120096263); +emit_32(1099095553); +emit_32(1128228848); +emit_32(1120608322); +emit_32(1098511915); +emit_32(1128228848); +emit_32(1121120289); +emit_32(1097554566); +emit_32(1128228848); +emit_32(1121632256); +emit_32(1096990851); +emit_32(1128228848); +emit_32(1122144223); +emit_32(1096447479); +emit_32(1128228848); +emit_32(1122656322); +emit_32(1097522584); +emit_32(1128228848); +emit_32(1123168289); +emit_32(1098051486); +emit_32(1128228848); +emit_32(1123680256); +emit_32(1099167013); +emit_32(1128228848); +emit_32(1124132848); +emit_32(1099703150); +emit_32(1128228848); +emit_32(1124388897); +emit_32(1102297537); +emit_32(1128228848); +emit_32(1124644880); +emit_32(1103741898); +emit_32(1128228848); +emit_32(1124900864); +emit_32(1104507778); +emit_32(1128228848); +emit_32(1125156848); +emit_32(1104918977); +emit_32(1128228848); +emit_32(1125412897); +emit_32(1102477630); +emit_32(1128228848); +emit_32(1125668880); +emit_32(1102229537); +emit_32(1128228848); +emit_32(1125924864); +emit_32(1105767065); +emit_32(1128228848); +emit_32(1126180848); +emit_32(1105996231); +emit_32(1128228848); +emit_32(1126436897); +emit_32(1105933527); +emit_32(1128228848); +emit_32(1126692880); +emit_32(1105463240); +emit_32(1128228848); +emit_32(1126948864); +emit_32(1105052985); +emit_32(1128228848); +emit_32(1127204848); +emit_32(1105035736); +emit_32(1128228848); +emit_32(1127460897); +emit_32(1104068424); +emit_32(1128228848); +emit_32(1127716880); +emit_32(1102737467); +emit_32(1128228848); +emit_32(1127972864); +emit_32(1105007739); +emit_32(1128228848); +emit_32(1128228848); +emit_32(1104220835); +emit_32(1128228848); +emit_32(1128484897); +emit_32(1104506624); +emit_32(1128228848); +emit_32(1128740880); +emit_32(1102445019); +emit_32(1128228848); +emit_32(1128996864); +emit_32(1102497553); +emit_32(1128228848); +emit_32(1129252848); +emit_32(1101981444); +emit_32(1128228848); +emit_32(1129508897); +emit_32(1101313920); +emit_32(1128228848); +emit_32(1129764880); +emit_32(1101362889); +emit_32(1128228848); +emit_32(1130020864); +emit_32(1098897582); +emit_32(1128228848); +emit_32(1130276848); +emit_32(1099105095); +emit_32(1128228848); +emit_32(1130532897); +emit_32(1101849428); +emit_32(1128228848); +emit_32(1130788880); +emit_32(1101462346); +emit_32(1128228848); +emit_32(1131044864); +emit_32(1101111964); +emit_32(1128228848); +emit_32(1131300848); +emit_32(1098211184); +emit_32(1128228848); +emit_32(1131556897); +emit_32(1097551315); +emit_32(1128228848); +emit_32(1131812880); +emit_32(1097268933); +emit_32(1128228848); +emit_32(1132068864); +emit_32(1096928356); +emit_32(1128228848); +emit_32(1081737258); +emit_32(1096992739); +emit_32(1127972864); +emit_32(1090125866); +emit_32(1097387423); +emit_32(1127972864); +emit_32(1094418484); +emit_32(1096399769); +emit_32(1127972864); +emit_32(1098514432); +emit_32(1094991636); +emit_32(1127972864); +emit_32(1100759066); +emit_32(1094441239); +emit_32(1127972864); +emit_32(1102807040); +emit_32(1095107189); +emit_32(1127972864); +emit_32(1104855066); +emit_32(1096891761); +emit_32(1127972864); +emit_32(1106903040); +emit_32(1096776417); +emit_32(1127972864); +emit_32(1108123661); +emit_32(1097155058); +emit_32(1127972864); +emit_32(1109147648); +emit_32(1095872545); +emit_32(1127972864); +emit_32(1110171661); +emit_32(1095805226); +emit_32(1127972864); +emit_32(1111195648); +emit_32(1096095367); +emit_32(1127972864); +emit_32(1112219661); +emit_32(1095697223); +emit_32(1127972864); +emit_32(1113243648); +emit_32(1095695440); +emit_32(1127972864); +emit_32(1114267661); +emit_32(1094850498); +emit_32(1127972864); +emit_32(1115291648); +emit_32(1095604738); +emit_32(1127972864); +emit_32(1116000263); +emit_32(1095794636); +emit_32(1127972864); +emit_32(1116512256); +emit_32(1095935669); +emit_32(1127972864); +emit_32(1117024263); +emit_32(1097458201); +emit_32(1127972864); +emit_32(1117536256); +emit_32(1099005428); +emit_32(1127972864); +emit_32(1118048263); +emit_32(1099075106); +emit_32(1127972864); +emit_32(1118560256); +emit_32(1099380713); +emit_32(1127972864); +emit_32(1119072263); +emit_32(1099718669); +emit_32(1127972864); +emit_32(1119584256); +emit_32(1100017356); +emit_32(1127972864); +emit_32(1120096263); +emit_32(1100344092); +emit_32(1127972864); +emit_32(1120608322); +emit_32(1100094793); +emit_32(1127972864); +emit_32(1121120289); +emit_32(1099700109); +emit_32(1127972864); +emit_32(1121632256); +emit_32(1099356386); +emit_32(1127972864); +emit_32(1122144223); +emit_32(1098732746); +emit_32(1127972864); +emit_32(1122656322); +emit_32(1099139855); +emit_32(1127972864); +emit_32(1123168289); +emit_32(1099468531); +emit_32(1127972864); +emit_32(1123680256); +emit_32(1099976619); +emit_32(1127972864); +emit_32(1124132848); +emit_32(1100936485); +emit_32(1127972864); +emit_32(1124388897); +emit_32(1103548174); +emit_32(1127972864); +emit_32(1124644880); +emit_32(1104509036); +emit_32(1127972864); +emit_32(1124900864); +emit_32(1105478183); +emit_32(1127972864); +emit_32(1125156848); +emit_32(1105595466); +emit_32(1127972864); +emit_32(1125412897); +emit_32(1103928335); +emit_32(1127972864); +emit_32(1125668880); +emit_32(1104097732); +emit_32(1127972864); +emit_32(1125924864); +emit_32(1105747981); +emit_32(1127972864); +emit_32(1126180848); +emit_32(1107329129); +emit_32(1127972864); +emit_32(1126436897); +emit_32(1107330807); +emit_32(1127972864); +emit_32(1126692880); +emit_32(1107185474); +emit_32(1127972864); +emit_32(1126948864); +emit_32(1106443082); +emit_32(1127972864); +emit_32(1127204848); +emit_32(1106311748); +emit_32(1127972864); +emit_32(1127460897); +emit_32(1106434117); +emit_32(1127972864); +emit_32(1127716880); +emit_32(1106504581); +emit_32(1127972864); +emit_32(1127972864); +emit_32(1105930800); +emit_32(1127972864); +emit_32(1128228848); +emit_32(1106592085); +emit_32(1127972864); +emit_32(1128484897); +emit_32(1106700245); +emit_32(1127972864); +emit_32(1128740880); +emit_32(1104209143); +emit_32(1127972864); +emit_32(1128996864); +emit_32(1103888803); +emit_32(1127972864); +emit_32(1129252848); +emit_32(1103514986); +emit_32(1127972864); +emit_32(1129508897); +emit_32(1104960710); +emit_32(1127972864); +emit_32(1129764880); +emit_32(1103902592); +emit_32(1127972864); +emit_32(1130020864); +emit_32(1101125124); +emit_32(1127972864); +emit_32(1130276848); +emit_32(1099577950); +emit_32(1127972864); +emit_32(1130532897); +emit_32(1102071045); +emit_32(1127972864); +emit_32(1130788880); +emit_32(1102154983); +emit_32(1127972864); +emit_32(1131044864); +emit_32(1101877530); +emit_32(1127972864); +emit_32(1131300848); +emit_32(1099361367); +emit_32(1127972864); +emit_32(1131556897); +emit_32(1098597270); +emit_32(1127972864); +emit_32(1131812880); +emit_32(1098904817); +emit_32(1127972864); +emit_32(1132068864); +emit_32(1098078224); +emit_32(1127972864); +emit_32(1081737258); +emit_32(1096797703); +emit_32(1127716880); +emit_32(1090125866); +emit_32(1097168375); +emit_32(1127716880); +emit_32(1094418484); +emit_32(1095948462); +emit_32(1127716880); +emit_32(1098514432); +emit_32(1095608618); +emit_32(1127716880); +emit_32(1100759066); +emit_32(1096751356); +emit_32(1127716880); +emit_32(1102807040); +emit_32(1097561276); +emit_32(1127716880); +emit_32(1104855066); +emit_32(1097849635); +emit_32(1127716880); +emit_32(1106903040); +emit_32(1098303144); +emit_32(1127716880); +emit_32(1108123661); +emit_32(1098264347); +emit_32(1127716880); +emit_32(1109147648); +emit_32(1097068341); +emit_32(1127716880); +emit_32(1110171661); +emit_32(1098172806); +emit_32(1127716880); +emit_32(1111195648); +emit_32(1098939053); +emit_32(1127716880); +emit_32(1112219661); +emit_32(1097712586); +emit_32(1127716880); +emit_32(1113243648); +emit_32(1097830341); +emit_32(1127716880); +emit_32(1114267661); +emit_32(1096396623); +emit_32(1127716880); +emit_32(1115291648); +emit_32(1095821689); +emit_32(1127716880); +emit_32(1116000263); +emit_32(1096202427); +emit_32(1127716880); +emit_32(1116512256); +emit_32(1096892495); +emit_32(1127716880); +emit_32(1117024263); +emit_32(1098192309); +emit_32(1127716880); +emit_32(1117536256); +emit_32(1099117101); +emit_32(1127716880); +emit_32(1118048263); +emit_32(1099661522); +emit_32(1127716880); +emit_32(1118560256); +emit_32(1099930114); +emit_32(1127716880); +emit_32(1119072263); +emit_32(1100208459); +emit_32(1127716880); +emit_32(1119584256); +emit_32(1100702129); +emit_32(1127716880); +emit_32(1120096263); +emit_32(1101093614); +emit_32(1127716880); +emit_32(1120608322); +emit_32(1101089158); +emit_32(1127716880); +emit_32(1121120289); +emit_32(1100770810); +emit_32(1127716880); +emit_32(1121632256); +emit_32(1100500959); +emit_32(1127716880); +emit_32(1122144223); +emit_32(1100074032); +emit_32(1127716880); +emit_32(1122656322); +emit_32(1100304509); +emit_32(1127716880); +emit_32(1123168289); +emit_32(1100602881); +emit_32(1127716880); +emit_32(1123680256); +emit_32(1101222799); +emit_32(1127716880); +emit_32(1124132848); +emit_32(1101588647); +emit_32(1127716880); +emit_32(1124388897); +emit_32(1103974262); +emit_32(1127716880); +emit_32(1124644880); +emit_32(1104918190); +emit_32(1127716880); +emit_32(1124900864); +emit_32(1105762661); +emit_32(1127716880); +emit_32(1125156848); +emit_32(1106612899); +emit_32(1127716880); +emit_32(1125412897); +emit_32(1104639689); +emit_32(1127716880); +emit_32(1125668880); +emit_32(1105198265); +emit_32(1127716880); +emit_32(1125924864); +emit_32(1105413748); +emit_32(1127716880); +emit_32(1126180848); +emit_32(1107783057); +emit_32(1127716880); +emit_32(1126436897); +emit_32(1107991672); +emit_32(1127716880); +emit_32(1126692880); +emit_32(1107664568); +emit_32(1127716880); +emit_32(1126948864); +emit_32(1107212999); +emit_32(1127716880); +emit_32(1127204848); +emit_32(1107232712); +emit_32(1127716880); +emit_32(1127460897); +emit_32(1107399803); +emit_32(1127716880); +emit_32(1127716880); +emit_32(1107519026); +emit_32(1127716880); +emit_32(1127972864); +emit_32(1105586291); +emit_32(1127716880); +emit_32(1128228848); +emit_32(1107722319); +emit_32(1127716880); +emit_32(1128484897); +emit_32(1107549828); +emit_32(1127716880); +emit_32(1128740880); +emit_32(1107213051); +emit_32(1127716880); +emit_32(1128996864); +emit_32(1104407953); +emit_32(1127716880); +emit_32(1129252848); +emit_32(1105963988); +emit_32(1127716880); +emit_32(1129508897); +emit_32(1105610303); +emit_32(1127716880); +emit_32(1129764880); +emit_32(1104453042); +emit_32(1127716880); +emit_32(1130020864); +emit_32(1103642178); +emit_32(1127716880); +emit_32(1130276848); +emit_32(1100372928); +emit_32(1127716880); +emit_32(1130532897); +emit_32(1102654577); +emit_32(1127716880); +emit_32(1130788880); +emit_32(1102227911); +emit_32(1127716880); +emit_32(1131044864); +emit_32(1101889641); +emit_32(1127716880); +emit_32(1131300848); +emit_32(1099123340); +emit_32(1127716880); +emit_32(1131556897); +emit_32(1099152595); +emit_32(1127716880); +emit_32(1131812880); +emit_32(1099081921); +emit_32(1127716880); +emit_32(1132068864); +emit_32(1098933705); +emit_32(1127716880); +emit_32(1081737258); +emit_32(1097521955); +emit_32(1127460897); +emit_32(1090125866); +emit_32(1097290954); +emit_32(1127460897); +emit_32(1094418484); +emit_32(1096535664); +emit_32(1127460897); +emit_32(1098514432); +emit_32(1096791202); +emit_32(1127460897); +emit_32(1100759066); +emit_32(1097822057); +emit_32(1127460897); +emit_32(1102807040); +emit_32(1098240020); +emit_32(1127460897); +emit_32(1104855066); +emit_32(1098978217); +emit_32(1127460897); +emit_32(1106903040); +emit_32(1099121977); +emit_32(1127460897); +emit_32(1108123661); +emit_32(1099009884); +emit_32(1127460897); +emit_32(1109147648); +emit_32(1099001233); +emit_32(1127460897); +emit_32(1110171661); +emit_32(1099564791); +emit_32(1127460897); +emit_32(1111195648); +emit_32(1099604427); +emit_32(1127460897); +emit_32(1112219661); +emit_32(1098912681); +emit_32(1127460897); +emit_32(1113243648); +emit_32(1098358823); +emit_32(1127460897); +emit_32(1114267661); +emit_32(1096897318); +emit_32(1127460897); +emit_32(1115291648); +emit_32(1095649408); +emit_32(1127460897); +emit_32(1116000263); +emit_32(1096935801); +emit_32(1127460897); +emit_32(1116512256); +emit_32(1097798359); +emit_32(1127460897); +emit_32(1117024263); +emit_32(1098804363); +emit_32(1127460897); +emit_32(1117536256); +emit_32(1099628859); +emit_32(1127460897); +emit_32(1118048263); +emit_32(1100288570); +emit_32(1127460897); +emit_32(1118560256); +emit_32(1100879076); +emit_32(1127460897); +emit_32(1119072263); +emit_32(1100927310); +emit_32(1127460897); +emit_32(1119584256); +emit_32(1101310879); +emit_32(1127460897); +emit_32(1120096263); +emit_32(1101683124); +emit_32(1127460897); +emit_32(1120608322); +emit_32(1101623879); +emit_32(1127460897); +emit_32(1121120289); +emit_32(1101768950); +emit_32(1127460897); +emit_32(1121632256); +emit_32(1101614495); +emit_32(1127460897); +emit_32(1122144223); +emit_32(1101255882); +emit_32(1127460897); +emit_32(1122656322); +emit_32(1101305165); +emit_32(1127460897); +emit_32(1123168289); +emit_32(1101210164); +emit_32(1127460897); +emit_32(1123680256); +emit_32(1101974785); +emit_32(1127460897); +emit_32(1124132848); +emit_32(1102412304); +emit_32(1127460897); +emit_32(1124388897); +emit_32(1102794981); +emit_32(1127460897); +emit_32(1124644880); +emit_32(1105358121); +emit_32(1127460897); +emit_32(1124900864); +emit_32(1106543274); +emit_32(1127460897); +emit_32(1125156848); +emit_32(1107495748); +emit_32(1127460897); +emit_32(1125412897); +emit_32(1105955861); +emit_32(1127460897); +emit_32(1125668880); +emit_32(1106429084); +emit_32(1127460897); +emit_32(1125924864); +emit_32(1107140909); +emit_32(1127460897); +emit_32(1126180848); +emit_32(1108420067); +emit_32(1127460897); +emit_32(1126436897); +emit_32(1108539421); +emit_32(1127460897); +emit_32(1126692880); +emit_32(1108278824); +emit_32(1127460897); +emit_32(1126948864); +emit_32(1106248099); +emit_32(1127460897); +emit_32(1127204848); +emit_32(1106077182); +emit_32(1127460897); +emit_32(1127460897); +emit_32(1107959900); +emit_32(1127460897); +emit_32(1127716880); +emit_32(1107937880); +emit_32(1127460897); +emit_32(1127972864); +emit_32(1107912006); +emit_32(1127460897); +emit_32(1128228848); +emit_32(1107668710); +emit_32(1127460897); +emit_32(1128484897); +emit_32(1106012327); +emit_32(1127460897); +emit_32(1128740880); +emit_32(1105705199); +emit_32(1127460897); +emit_32(1128996864); +emit_32(1105290802); +emit_32(1127460897); +emit_32(1129252848); +emit_32(1106539918); +emit_32(1127460897); +emit_32(1129508897); +emit_32(1105540573); +emit_32(1127460897); +emit_32(1129764880); +emit_32(1104772701); +emit_32(1127460897); +emit_32(1130020864); +emit_32(1101448086); +emit_32(1127460897); +emit_32(1130276848); +emit_32(1101175508); +emit_32(1127460897); +emit_32(1130532897); +emit_32(1103296830); +emit_32(1127460897); +emit_32(1130788880); +emit_32(1102692850); +emit_32(1127460897); +emit_32(1131044864); +emit_32(1101873336); +emit_32(1127460897); +emit_32(1131300848); +emit_32(1099038038); +emit_32(1127460897); +emit_32(1131556897); +emit_32(1099314443); +emit_32(1127460897); +emit_32(1131812880); +emit_32(1099183371); +emit_32(1127460897); +emit_32(1132068864); +emit_32(1098779931); +emit_32(1127460897); +emit_32(1081737258); +emit_32(1098169765); +emit_32(1127204848); +emit_32(1090125866); +emit_32(1097937715); +emit_32(1127204848); +emit_32(1094418484); +emit_32(1097656592); +emit_32(1127204848); +emit_32(1098514432); +emit_32(1097279105); +emit_32(1127204848); +emit_32(1100759066); +emit_32(1098705587); +emit_32(1127204848); +emit_32(1102807040); +emit_32(1099191760); +emit_32(1127204848); +emit_32(1104855066); +emit_32(1099316121); +emit_32(1127204848); +emit_32(1106903040); +emit_32(1099533910); +emit_32(1127204848); +emit_32(1108123661); +emit_32(1099430573); +emit_32(1127204848); +emit_32(1109147648); +emit_32(1099413848); +emit_32(1127204848); +emit_32(1110171661); +emit_32(1099829504); +emit_32(1127204848); +emit_32(1111195648); +emit_32(1100016517); +emit_32(1127204848); +emit_32(1112219661); +emit_32(1099249693); +emit_32(1127204848); +emit_32(1113243648); +emit_32(1098799645); +emit_32(1127204848); +emit_32(1114267661); +emit_32(1098342780); +emit_32(1127204848); +emit_32(1115291648); +emit_32(1097196791); +emit_32(1127204848); +emit_32(1116000263); +emit_32(1097901330); +emit_32(1127204848); +emit_32(1116512256); +emit_32(1098866124); +emit_32(1127204848); +emit_32(1117024263); +emit_32(1099404516); +emit_32(1127204848); +emit_32(1117536256); +emit_32(1099985741); +emit_32(1127204848); +emit_32(1118048263); +emit_32(1100426563); +emit_32(1127204848); +emit_32(1118560256); +emit_32(1101059169); +emit_32(1127204848); +emit_32(1119072263); +emit_32(1101194959); +emit_32(1127204848); +emit_32(1119584256); +emit_32(1101016072); +emit_32(1127204848); +emit_32(1120096263); +emit_32(1101472308); +emit_32(1127204848); +emit_32(1120608322); +emit_32(1101985323); +emit_32(1127204848); +emit_32(1121120289); +emit_32(1102436316); +emit_32(1127204848); +emit_32(1121632256); +emit_32(1102413719); +emit_32(1127204848); +emit_32(1122144223); +emit_32(1101785779); +emit_32(1127204848); +emit_32(1122656322); +emit_32(1101731673); +emit_32(1127204848); +emit_32(1123168289); +emit_32(1102273262); +emit_32(1127204848); +emit_32(1123680256); +emit_32(1102879182); +emit_32(1127204848); +emit_32(1124132848); +emit_32(1103081819); +emit_32(1127204848); +emit_32(1124388897); +emit_32(1103419985); +emit_32(1127204848); +emit_32(1124644880); +emit_32(1106708634); +emit_32(1127204848); +emit_32(1124900864); +emit_32(1107116530); +emit_32(1127204848); +emit_32(1125156848); +emit_32(1107879893); +emit_32(1127204848); +emit_32(1125412897); +emit_32(1106751573); +emit_32(1127204848); +emit_32(1125668880); +emit_32(1108314712); +emit_32(1127204848); +emit_32(1125924864); +emit_32(1109036342); +emit_32(1127204848); +emit_32(1126180848); +emit_32(1109160047); +emit_32(1127204848); +emit_32(1126436897); +emit_32(1109143323); +emit_32(1127204848); +emit_32(1126692880); +emit_32(1108877692); +emit_32(1127204848); +emit_32(1126948864); +emit_32(1108518135); +emit_32(1127204848); +emit_32(1127204848); +emit_32(1108362238); +emit_32(1127204848); +emit_32(1127460897); +emit_32(1108376997); +emit_32(1127204848); +emit_32(1127716880); +emit_32(1108363313); +emit_32(1127204848); +emit_32(1127972864); +emit_32(1108321213); +emit_32(1127204848); +emit_32(1128228848); +emit_32(1106462953); +emit_32(1127204848); +emit_32(1128484897); +emit_32(1106272584); +emit_32(1127204848); +emit_32(1128740880); +emit_32(1105682131); +emit_32(1127204848); +emit_32(1128996864); +emit_32(1107532055); +emit_32(1127204848); +emit_32(1129252848); +emit_32(1106896539); +emit_32(1127204848); +emit_32(1129508897); +emit_32(1106257851); +emit_32(1127204848); +emit_32(1129764880); +emit_32(1102788428); +emit_32(1127204848); +emit_32(1130020864); +emit_32(1101910298); +emit_32(1127204848); +emit_32(1130276848); +emit_32(1101035943); +emit_32(1127204848); +emit_32(1130532897); +emit_32(1103745044); +emit_32(1127204848); +emit_32(1130788880); +emit_32(1103183164); +emit_32(1127204848); +emit_32(1131044864); +emit_32(1102075291); +emit_32(1127204848); +emit_32(1131300848); +emit_32(1098519780); +emit_32(1127204848); +emit_32(1131556897); +emit_32(1098358928); +emit_32(1127204848); +emit_32(1131812880); +emit_32(1098789788); +emit_32(1127204848); +emit_32(1132068864); +emit_32(1097999476); +emit_32(1127204848); +emit_32(1081737258); +emit_32(1098949119); +emit_32(1126948864); +emit_32(1090125845); +emit_32(1098913939); +emit_32(1126948864); +emit_32(1094418484); +emit_32(1097887384); +emit_32(1126948864); +emit_32(1098514432); +emit_32(1098001888); +emit_32(1126948864); +emit_32(1100759066); +emit_32(1099097545); +emit_32(1126948864); +emit_32(1102807040); +emit_32(1099290588); +emit_32(1126948864); +emit_32(1104855066); +emit_32(1099551474); +emit_32(1126948864); +emit_32(1106903040); +emit_32(1099163605); +emit_32(1126948864); +emit_32(1108123661); +emit_32(1099190711); +emit_32(1126948864); +emit_32(1109147648); +emit_32(1099720557); +emit_32(1126948864); +emit_32(1110171661); +emit_32(1099796002); +emit_32(1126948864); +emit_32(1111195648); +emit_32(1099824156); +emit_32(1126948864); +emit_32(1112219661); +emit_32(1099671431); +emit_32(1126948864); +emit_32(1113243648); +emit_32(1099204133); +emit_32(1126948864); +emit_32(1114267661); +emit_32(1098311323); +emit_32(1126948864); +emit_32(1115291648); +emit_32(1097819226); +emit_32(1126948864); +emit_32(1116000263); +emit_32(1098122894); +emit_32(1126948864); +emit_32(1116512256); +emit_32(1099069548); +emit_32(1126948864); +emit_32(1117024263); +emit_32(1099712640); +emit_32(1126948864); +emit_32(1117536256); +emit_32(1100258161); +emit_32(1126948864); +emit_32(1118048263); +emit_32(1100567858); +emit_32(1126948864); +emit_32(1118560256); +emit_32(1100912735); +emit_32(1126948864); +emit_32(1119072263); +emit_32(1101335259); +emit_32(1126948864); +emit_32(1119584256); +emit_32(1101300236); +emit_32(1126948864); +emit_32(1120096263); +emit_32(1101307209); +emit_32(1126948864); +emit_32(1120608322); +emit_32(1101813252); +emit_32(1126948864); +emit_32(1121120289); +emit_32(1102347239); +emit_32(1126948864); +emit_32(1121632256); +emit_32(1102583851); +emit_32(1126948864); +emit_32(1122144223); +emit_32(1102372458); +emit_32(1126948864); +emit_32(1122656322); +emit_32(1102499126); +emit_32(1126948864); +emit_32(1123168289); +emit_32(1102697097); +emit_32(1126948864); +emit_32(1123680256); +emit_32(1103294890); +emit_32(1126948864); +emit_32(1124132848); +emit_32(1103928177); +emit_32(1126948864); +emit_32(1124388897); +emit_32(1105053195); +emit_32(1126948864); +emit_32(1124644880); +emit_32(1107678488); +emit_32(1126948864); +emit_32(1124900864); +emit_32(1107666613); +emit_32(1126948864); +emit_32(1125156848); +emit_32(1108068663); +emit_32(1126948864); +emit_32(1125412897); +emit_32(1107030075); +emit_32(1126948864); +emit_32(1125668880); +emit_32(1109044940); +emit_32(1126948864); +emit_32(1125924864); +emit_32(1109464528); +emit_32(1126948864); +emit_32(1126180848); +emit_32(1109502329); +emit_32(1126948864); +emit_32(1126436897); +emit_32(1109661634); +emit_32(1126948864); +emit_32(1126692880); +emit_32(1109335998); +emit_32(1126948864); +emit_32(1126948864); +emit_32(1108826548); +emit_32(1126948864); +emit_32(1127204848); +emit_32(1108883774); +emit_32(1126948864); +emit_32(1127460897); +emit_32(1107300110); +emit_32(1126948864); +emit_32(1127716880); +emit_32(1108142929); +emit_32(1126948864); +emit_32(1127972864); +emit_32(1108009838); +emit_32(1126948864); +emit_32(1128228848); +emit_32(1107061165); +emit_32(1126948864); +emit_32(1128484897); +emit_32(1105722553); +emit_32(1126948864); +emit_32(1128740880); +emit_32(1106183035); +emit_32(1126948864); +emit_32(1128996864); +emit_32(1107464133); +emit_32(1126948864); +emit_32(1129252848); +emit_32(1106950907); +emit_32(1126948864); +emit_32(1129508897); +emit_32(1105415740); +emit_32(1126948864); +emit_32(1129764880); +emit_32(1102572893); +emit_32(1126948864); +emit_32(1130020864); +emit_32(1101736444); +emit_32(1126948864); +emit_32(1130276848); +emit_32(1103790604); +emit_32(1126948864); +emit_32(1130532897); +emit_32(1103702943); +emit_32(1126948864); +emit_32(1130788880); +emit_32(1102824918); +emit_32(1126948864); +emit_32(1131044864); +emit_32(1102312374); +emit_32(1126948864); +emit_32(1131300848); +emit_32(1098839595); +emit_32(1126948864); +emit_32(1131556897); +emit_32(1098161272); +emit_32(1126948864); +emit_32(1131812880); +emit_32(1097697906); +emit_32(1126948864); +emit_32(1132068864); +emit_32(1097362991); +emit_32(1126948864); +emit_32(1081737258); +emit_32(1099508220); +emit_32(1126692880); +emit_32(1090125845); +emit_32(1099273653); +emit_32(1126692880); +emit_32(1094418484); +emit_32(1099205496); +emit_32(1126692880); +emit_32(1098514432); +emit_32(1098995047); +emit_32(1126692880); +emit_32(1100759066); +emit_32(1099092355); +emit_32(1126692880); +emit_32(1102807040); +emit_32(1099190187); +emit_32(1126692880); +emit_32(1104855066); +emit_32(1099331011); +emit_32(1126692880); +emit_32(1106903040); +emit_32(1099536112); +emit_32(1126692880); +emit_32(1108123661); +emit_32(1099882824); +emit_32(1126692880); +emit_32(1109147648); +emit_32(1100241332); +emit_32(1126692880); +emit_32(1110171661); +emit_32(1100308441); +emit_32(1126692880); +emit_32(1111195648); +emit_32(1099924085); +emit_32(1126692880); +emit_32(1112219661); +emit_32(1099715209); +emit_32(1126692880); +emit_32(1113243648); +emit_32(1099688575); +emit_32(1126692880); +emit_32(1114267661); +emit_32(1099415106); +emit_32(1126692880); +emit_32(1115291648); +emit_32(1099022572); +emit_32(1126692880); +emit_32(1116000263); +emit_32(1098456655); +emit_32(1126692880); +emit_32(1116512256); +emit_32(1099432827); +emit_32(1126692880); +emit_32(1117024263); +emit_32(1099963931); +emit_32(1126692880); +emit_32(1117536256); +emit_32(1100471914); +emit_32(1126692880); +emit_32(1118048263); +emit_32(1100910271); +emit_32(1126692880); +emit_32(1118560256); +emit_32(1100950746); +emit_32(1126692880); +emit_32(1119072263); +emit_32(1101340921); +emit_32(1126692880); +emit_32(1119584256); +emit_32(1101516925); +emit_32(1126692880); +emit_32(1120096263); +emit_32(1101607626); +emit_32(1126692880); +emit_32(1120608322); +emit_32(1101700478); +emit_32(1126692880); +emit_32(1121120289); +emit_32(1102113826); +emit_32(1126692880); +emit_32(1121632256); +emit_32(1102162428); +emit_32(1126692880); +emit_32(1122144223); +emit_32(1102697097); +emit_32(1126692880); +emit_32(1122656322); +emit_32(1103401950); +emit_32(1126692880); +emit_32(1123168289); +emit_32(1103831813); +emit_32(1126692880); +emit_32(1123680256); +emit_32(1104291194); +emit_32(1126692880); +emit_32(1124132848); +emit_32(1105271456); +emit_32(1126692880); +emit_32(1124388897); +emit_32(1106220574); +emit_32(1126692880); +emit_32(1124644880); +emit_32(1108019957); +emit_32(1126692880); +emit_32(1124900864); +emit_32(1108180861); +emit_32(1126692880); +emit_32(1125156848); +emit_32(1108381558); +emit_32(1126692880); +emit_32(1125412897); +emit_32(1108884508); +emit_32(1126692880); +emit_32(1125668880); +emit_32(1109395820); +emit_32(1126692880); +emit_32(1125924864); +emit_32(1109634712); +emit_32(1126692880); +emit_32(1126180848); +emit_32(1109777816); +emit_32(1126692880); +emit_32(1126436897); +emit_32(1109887130); +emit_32(1126692880); +emit_32(1126692880); +emit_32(1109468460); +emit_32(1126692880); +emit_32(1126948864); +emit_32(1108976887); +emit_32(1126692880); +emit_32(1127204848); +emit_32(1108737288); +emit_32(1126692880); +emit_32(1127460897); +emit_32(1107322339); +emit_32(1126692880); +emit_32(1127716880); +emit_32(1108472024); +emit_32(1126692880); +emit_32(1127972864); +emit_32(1107965326); +emit_32(1126692880); +emit_32(1128228848); +emit_32(1107928049); +emit_32(1126692880); +emit_32(1128484897); +emit_32(1106025906); +emit_32(1126692880); +emit_32(1128740880); +emit_32(1107754012); +emit_32(1126692880); +emit_32(1128996864); +emit_32(1107563407); +emit_32(1126692880); +emit_32(1129252848); +emit_32(1107120672); +emit_32(1126692880); +emit_32(1129508897); +emit_32(1103449188); +emit_32(1126692880); +emit_32(1129764880); +emit_32(1102395841); +emit_32(1126692880); +emit_32(1130020864); +emit_32(1101999899); +emit_32(1126692880); +emit_32(1130276848); +emit_32(1104243012); +emit_32(1126692880); +emit_32(1130532897); +emit_32(1103501407); +emit_32(1126692880); +emit_32(1130788880); +emit_32(1102408424); +emit_32(1126692880); +emit_32(1131044864); +emit_32(1099757099); +emit_32(1126692880); +emit_32(1131300848); +emit_32(1098990538); +emit_32(1126692880); +emit_32(1131556897); +emit_32(1097576795); +emit_32(1126692880); +emit_32(1131812880); +emit_32(1097118777); +emit_32(1126692880); +emit_32(1132068864); +emit_32(1095884499); +emit_32(1126692880); +emit_32(1081737300); +emit_32(1099149921); +emit_32(1126436897); +emit_32(1090125845); +emit_32(1099736547); +emit_32(1126436897); +emit_32(1094418484); +emit_32(1099814457); +emit_32(1126436897); +emit_32(1098514432); +emit_32(1099497996); +emit_32(1126436897); +emit_32(1100759066); +emit_32(1099614598); +emit_32(1126436897); +emit_32(1102807040); +emit_32(1099949041); +emit_32(1126436897); +emit_32(1104855066); +emit_32(1100303460); +emit_32(1126436897); +emit_32(1106903040); +emit_32(1100372194); +emit_32(1126436897); +emit_32(1108123661); +emit_32(1100388499); +emit_32(1126436897); +emit_32(1109147648); +emit_32(1100457129); +emit_32(1126436897); +emit_32(1110171661); +emit_32(1100645768); +emit_32(1126436897); +emit_32(1111195648); +emit_32(1100270587); +emit_32(1126436897); +emit_32(1112219661); +emit_32(1099961152); +emit_32(1126436897); +emit_32(1113243648); +emit_32(1099730885); +emit_32(1126436897); +emit_32(1114267661); +emit_32(1099738435); +emit_32(1126436897); +emit_32(1115291648); +emit_32(1099626866); +emit_32(1126436897); +emit_32(1116000263); +emit_32(1099808847); +emit_32(1126436897); +emit_32(1116512256); +emit_32(1099946000); +emit_32(1126436897); +emit_32(1117024263); +emit_32(1100112776); +emit_32(1126436897); +emit_32(1117536256); +emit_32(1100457758); +emit_32(1126436897); +emit_32(1118048263); +emit_32(1101221960); +emit_32(1126436897); +emit_32(1118560256); +emit_32(1101270404); +emit_32(1126436897); +emit_32(1119072263); +emit_32(1101406090); +emit_32(1126436897); +emit_32(1119584256); +emit_32(1101500619); +emit_32(1126436897); +emit_32(1120096263); +emit_32(1101585606); +emit_32(1126436897); +emit_32(1120608322); +emit_32(1101398278); +emit_32(1126436897); +emit_32(1121120289); +emit_32(1101771047); +emit_32(1126436897); +emit_32(1121632256); +emit_32(1102476005); +emit_32(1126436897); +emit_32(1122144223); +emit_32(1103241150); +emit_32(1126436897); +emit_32(1122656322); +emit_32(1103529247); +emit_32(1126436897); +emit_32(1123168289); +emit_32(1104315207); +emit_32(1126436897); +emit_32(1123680256); +emit_32(1105405149); +emit_32(1126436897); +emit_32(1124132848); +emit_32(1106277302); +emit_32(1126436897); +emit_32(1124388897); +emit_32(1107026667); +emit_32(1126436897); +emit_32(1124644880); +emit_32(1107115324); +emit_32(1126436897); +emit_32(1124900864); +emit_32(1108622626); +emit_32(1126436897); +emit_32(1125156848); +emit_32(1108806546); +emit_32(1126436897); +emit_32(1125412897); +emit_32(1109128328); +emit_32(1126436897); +emit_32(1125668880); +emit_32(1109170114); +emit_32(1126436897); +emit_32(1125924864); +emit_32(1108511739); +emit_32(1126436897); +emit_32(1126180848); +emit_32(1109723867); +emit_32(1126436897); +emit_32(1126436897); +emit_32(1109979719); +emit_32(1126436897); +emit_32(1126692880); +emit_32(1109649182); +emit_32(1126436897); +emit_32(1126948864); +emit_32(1107794749); +emit_32(1126436897); +emit_32(1127204848); +emit_32(1107867677); +emit_32(1126436897); +emit_32(1127460897); +emit_32(1107576278); +emit_32(1126436897); +emit_32(1127716880); +emit_32(1108142168); +emit_32(1126436897); +emit_32(1127972864); +emit_32(1108112284); +emit_32(1126436897); +emit_32(1128228848); +emit_32(1108004202); +emit_32(1126436897); +emit_32(1128484897); +emit_32(1106311696); +emit_32(1126436897); +emit_32(1128740880); +emit_32(1107993349); +emit_32(1126436897); +emit_32(1128996864); +emit_32(1107720798); +emit_32(1126436897); +emit_32(1129252848); +emit_32(1106276306); +emit_32(1126436897); +emit_32(1129508897); +emit_32(1103536849); +emit_32(1126436897); +emit_32(1129764880); +emit_32(1102593288); +emit_32(1126436897); +emit_32(1130020864); +emit_32(1104446017); +emit_32(1126436897); +emit_32(1130276848); +emit_32(1104044255); +emit_32(1126436897); +emit_32(1130532897); +emit_32(1102976752); +emit_32(1126436897); +emit_32(1130788880); +emit_32(1102244531); +emit_32(1126436897); +emit_32(1131044864); +emit_32(1099010199); +emit_32(1126436897); +emit_32(1131300848); +emit_32(1097715417); +emit_32(1126436897); +emit_32(1131556897); +emit_32(1096758067); +emit_32(1126436897); +emit_32(1131812880); +emit_32(1097016856); +emit_32(1126436897); +emit_32(1132068864); +emit_32(1096071355); +emit_32(1126436897); +emit_32(1081737300); +emit_32(1099236901); +emit_32(1126180848); +emit_32(1090125845); +emit_32(1099655702); +emit_32(1126180848); +emit_32(1094418484); +emit_32(1099975256); +emit_32(1126180848); +emit_32(1098514432); +emit_32(1100023700); +emit_32(1126180848); +emit_32(1100759066); +emit_32(1100282436); +emit_32(1126180848); +emit_32(1102807040); +emit_32(1100103077); +emit_32(1126180848); +emit_32(1104855066); +emit_32(1100266183); +emit_32(1126180848); +emit_32(1106903040); +emit_32(1100408947); +emit_32(1126180848); +emit_32(1108123661); +emit_32(1100595488); +emit_32(1126180848); +emit_32(1109147648); +emit_32(1100418698); +emit_32(1126180848); +emit_32(1110171661); +emit_32(1100484601); +emit_32(1126180848); +emit_32(1111195648); +emit_32(1100664327); +emit_32(1126180848); +emit_32(1112219661); +emit_32(1099877791); +emit_32(1126180848); +emit_32(1113243648); +emit_32(1100235250); +emit_32(1126180848); +emit_32(1114267661); +emit_32(1100072773); +emit_32(1126180848); +emit_32(1115291648); +emit_32(1099973001); +emit_32(1126180848); +emit_32(1116000263); +emit_32(1100257165); +emit_32(1126180848); +emit_32(1116512256); +emit_32(1100157288); +emit_32(1126180848); +emit_32(1117024263); +emit_32(1100000369); +emit_32(1126180848); +emit_32(1117536256); +emit_32(1100933077); +emit_32(1126180848); +emit_32(1118048263); +emit_32(1101502192); +emit_32(1126180848); +emit_32(1118560256); +emit_32(1101329701); +emit_32(1126180848); +emit_32(1119072263); +emit_32(1101273078); +emit_32(1126180848); +emit_32(1119584256); +emit_32(1101224057); +emit_32(1126180848); +emit_32(1120096263); +emit_32(1100934231); +emit_32(1126180848); +emit_32(1120608322); +emit_32(1101108137); +emit_32(1126180848); +emit_32(1121120289); +emit_32(1102075344); +emit_32(1126180848); +emit_32(1121632256); +emit_32(1102823975); +emit_32(1126180848); +emit_32(1122144223); +emit_32(1103440694); +emit_32(1126180848); +emit_32(1122656322); +emit_32(1104266238); +emit_32(1126180848); +emit_32(1123168289); +emit_32(1105264588); +emit_32(1126180848); +emit_32(1123680256); +emit_32(1106148170); +emit_32(1126180848); +emit_32(1124132848); +emit_32(1107157267); +emit_32(1126180848); +emit_32(1124388897); +emit_32(1107410970); +emit_32(1126180848); +emit_32(1124644880); +emit_32(1107631669); +emit_32(1126180848); +emit_32(1124900864); +emit_32(1108727248); +emit_32(1126180848); +emit_32(1125156848); +emit_32(1109083947); +emit_32(1126180848); +emit_32(1125412897); +emit_32(1109383499); +emit_32(1126180848); +emit_32(1125668880); +emit_32(1109832552); +emit_32(1126180848); +emit_32(1125924864); +emit_32(1108779362); +emit_32(1126180848); +emit_32(1126180848); +emit_32(1109779336); +emit_32(1126180848); +emit_32(1126436897); +emit_32(1109875019); +emit_32(1126180848); +emit_32(1126692880); +emit_32(1109584485); +emit_32(1126180848); +emit_32(1126948864); +emit_32(1108220130); +emit_32(1126180848); +emit_32(1127204848); +emit_32(1107865790); +emit_32(1126180848); +emit_32(1127460897); +emit_32(1107810792); +emit_32(1126180848); +emit_32(1127716880); +emit_32(1107637358); +emit_32(1126180848); +emit_32(1127972864); +emit_32(1108765940); +emit_32(1126180848); +emit_32(1128228848); +emit_32(1108423134); +emit_32(1126180848); +emit_32(1128484897); +emit_32(1107554101); +emit_32(1126180848); +emit_32(1128740880); +emit_32(1107893184); +emit_32(1126180848); +emit_32(1128996864); +emit_32(1107705384); +emit_32(1126180848); +emit_32(1129252848); +emit_32(1104640790); +emit_32(1126180848); +emit_32(1129508897); +emit_32(1103289857); +emit_32(1126180848); +emit_32(1129764880); +emit_32(1103910824); +emit_32(1126180848); +emit_32(1130020864); +emit_32(1104153359); +emit_32(1126180848); +emit_32(1130276848); +emit_32(1103150186); +emit_32(1126180848); +emit_32(1130532897); +emit_32(1102522509); +emit_32(1126180848); +emit_32(1130788880); +emit_32(1099531498); +emit_32(1126180848); +emit_32(1131044864); +emit_32(1097916953); +emit_32(1126180848); +emit_32(1131300848); +emit_32(1097069285); +emit_32(1126180848); +emit_32(1131556897); +emit_32(1096586310); +emit_32(1126180848); +emit_32(1131812880); +emit_32(1097348625); +emit_32(1126180848); +emit_32(1132068864); +emit_32(1097196791); +emit_32(1126180848); +emit_32(1081737300); +emit_32(1099397648); +emit_32(1125924864); +emit_32(1090125845); +emit_32(1100083993); +emit_32(1125924864); +emit_32(1094418484); +emit_32(1100159071); +emit_32(1125924864); +emit_32(1098514432); +emit_32(1100011536); +emit_32(1125924864); +emit_32(1100759066); +emit_32(1100346556); +emit_32(1125924864); +emit_32(1102807040); +emit_32(1100440404); +emit_32(1125924864); +emit_32(1104855066); +emit_32(1100194775); +emit_32(1125924864); +emit_32(1106903040); +emit_32(1100304561); +emit_32(1125924864); +emit_32(1108123661); +emit_32(1100451571); +emit_32(1125924864); +emit_32(1109147648); +emit_32(1100478992); +emit_32(1125924864); +emit_32(1110171661); +emit_32(1100408580); +emit_32(1125924864); +emit_32(1111195648); +emit_32(1100317249); +emit_32(1125924864); +emit_32(1112219661); +emit_32(1100401554); +emit_32(1125924864); +emit_32(1113243648); +emit_32(1100711618); +emit_32(1125924864); +emit_32(1114267661); +emit_32(1100343358); +emit_32(1125924864); +emit_32(1115291648); +emit_32(1099679924); +emit_32(1125924864); +emit_32(1116000263); +emit_32(1100265868); +emit_32(1125924864); +emit_32(1116512256); +emit_32(1100336438); +emit_32(1125924864); +emit_32(1117024263); +emit_32(1100743338); +emit_32(1125924864); +emit_32(1117536256); +emit_32(1100911529); +emit_32(1125924864); +emit_32(1118048263); +emit_32(1100933916); +emit_32(1125924864); +emit_32(1118560256); +emit_32(1100950012); +emit_32(1125924864); +emit_32(1119072263); +emit_32(1100711251); +emit_32(1125924864); +emit_32(1119584256); +emit_32(1100374239); +emit_32(1125924864); +emit_32(1120096263); +emit_32(1100424046); +emit_32(1125924864); +emit_32(1120608322); +emit_32(1101327290); +emit_32(1125924864); +emit_32(1121120289); +emit_32(1102568437); +emit_32(1125924864); +emit_32(1121632256); +emit_32(1103744257); +emit_32(1125924864); +emit_32(1122144223); +emit_32(1104560993); +emit_32(1125924864); +emit_32(1122656322); +emit_32(1105101115); +emit_32(1125924864); +emit_32(1123168289); +emit_32(1106075032); +emit_32(1125924864); +emit_32(1123680256); +emit_32(1107013874); +emit_32(1125924864); +emit_32(1124132848); +emit_32(1107516116); +emit_32(1125924864); +emit_32(1124388897); +emit_32(1107763764); +emit_32(1125924864); +emit_32(1124644880); +emit_32(1107925035); +emit_32(1125924864); +emit_32(1124900864); +emit_32(1108124867); +emit_32(1125924864); +emit_32(1125156848); +emit_32(1109418652); +emit_32(1125924864); +emit_32(1125412897); +emit_32(1109666352); +emit_32(1125924864); +emit_32(1125668880); +emit_32(1109926216); +emit_32(1125924864); +emit_32(1125924864); +emit_32(1109962156); +emit_32(1125924864); +emit_32(1126180848); +emit_32(1109898428); +emit_32(1125924864); +emit_32(1126436897); +emit_32(1110252978); +emit_32(1125924864); +emit_32(1126692880); +emit_32(1110074851); +emit_32(1125924864); +emit_32(1126948864); +emit_32(1108526681); +emit_32(1125924864); +emit_32(1127204848); +emit_32(1108040561); +emit_32(1125924864); +emit_32(1127460897); +emit_32(1108008160); +emit_32(1125924864); +emit_32(1127716880); +emit_32(1107835722); +emit_32(1125924864); +emit_32(1127972864); +emit_32(1107758862); +emit_32(1125924864); +emit_32(1128228848); +emit_32(1107617173); +emit_32(1125924864); +emit_32(1128484897); +emit_32(1107323860); +emit_32(1125924864); +emit_32(1128740880); +emit_32(1106591770); +emit_32(1125924864); +emit_32(1128996864); +emit_32(1107721716); +emit_32(1125924864); +emit_32(1129252848); +emit_32(1105209537); +emit_32(1125924864); +emit_32(1129508897); +emit_32(1106514647); +emit_32(1125924864); +emit_32(1129764880); +emit_32(1105924089); +emit_32(1125924864); +emit_32(1130020864); +emit_32(1104857583); +emit_32(1125924864); +emit_32(1130276848); +emit_32(1104080850); +emit_32(1125924864); +emit_32(1130532897); +emit_32(1103165338); +emit_32(1125924864); +emit_32(1130788880); +emit_32(1099955123); +emit_32(1125924864); +emit_32(1131044864); +emit_32(1098976015); +emit_32(1125924864); +emit_32(1131300848); +emit_32(1097678822); +emit_32(1125924864); +emit_32(1131556897); +emit_32(1095863632); +emit_32(1125924864); +emit_32(1131812880); +emit_32(1096143811); +emit_32(1125924864); +emit_32(1132068864); +emit_32(1096399978); +emit_32(1125924864); +emit_32(1081737300); +emit_32(1099796421); +emit_32(1125668880); +emit_32(1090125845); +emit_32(1100536244); +emit_32(1125668880); +emit_32(1094418484); +emit_32(1100815951); +emit_32(1125668880); +emit_32(1098514432); +emit_32(1100932763); +emit_32(1125668880); +emit_32(1100759066); +emit_32(1100556691); +emit_32(1125668880); +emit_32(1102807040); +emit_32(1100739091); +emit_32(1125668880); +emit_32(1104855066); +emit_32(1100685404); +emit_32(1125668880); +emit_32(1106903040); +emit_32(1100296592); +emit_32(1125668880); +emit_32(1108123661); +emit_32(1100158652); +emit_32(1125668880); +emit_32(1109147648); +emit_32(1100060033); +emit_32(1125668880); +emit_32(1110171661); +emit_32(1100191996); +emit_32(1125668880); +emit_32(1111195648); +emit_32(1099855718); +emit_32(1125668880); +emit_32(1112219661); +emit_32(1100233887); +emit_32(1125668880); +emit_32(1113243648); +emit_32(1100904976); +emit_32(1125668880); +emit_32(1114267661); +emit_32(1100654785); +emit_32(1125668880); +emit_32(1115291648); +emit_32(1100035234); +emit_32(1125668880); +emit_32(1116000263); +emit_32(1099851262); +emit_32(1125668880); +emit_32(1116512256); +emit_32(1099917741); +emit_32(1125668880); +emit_32(1117024263); +emit_32(1100254544); +emit_32(1125668880); +emit_32(1117536256); +emit_32(1100744910); +emit_32(1125668880); +emit_32(1118048263); +emit_32(1101045065); +emit_32(1125668880); +emit_32(1118560256); +emit_32(1100752460); +emit_32(1125668880); +emit_32(1119072263); +emit_32(1101140695); +emit_32(1125668880); +emit_32(1119584256); +emit_32(1100593706); +emit_32(1125668880); +emit_32(1120096263); +emit_32(1101066351); +emit_32(1125668880); +emit_32(1120608322); +emit_32(1102014421); +emit_32(1125668880); +emit_32(1121120289); +emit_32(1103061005); +emit_32(1125668880); +emit_32(1121632256); +emit_32(1104070627); +emit_32(1125668880); +emit_32(1122144223); +emit_32(1105156270); +emit_32(1125668880); +emit_32(1122656322); +emit_32(1105870088); +emit_32(1125668880); +emit_32(1123168289); +emit_32(1106367690); +emit_32(1125668880); +emit_32(1123680256); +emit_32(1107164922); +emit_32(1125668880); +emit_32(1124132848); +emit_32(1107602545); +emit_32(1125668880); +emit_32(1124388897); +emit_32(1107941812); +emit_32(1125668880); +emit_32(1124644880); +emit_32(1108344334); +emit_32(1125668880); +emit_32(1124900864); +emit_32(1108480308); +emit_32(1125668880); +emit_32(1125156848); +emit_32(1108327137); +emit_32(1125668880); +emit_32(1125412897); +emit_32(1109716107); +emit_32(1125668880); +emit_32(1125668880); +emit_32(1110107934); +emit_32(1125668880); +emit_32(1125924864); +emit_32(1110315159); +emit_32(1125668880); +emit_32(1126180848); +emit_32(1110535569); +emit_32(1125668880); +emit_32(1126436897); +emit_32(1110503509); +emit_32(1125668880); +emit_32(1126692880); +emit_32(1109463636); +emit_32(1125668880); +emit_32(1126948864); +emit_32(1108400118); +emit_32(1125668880); +emit_32(1127204848); +emit_32(1108447225); +emit_32(1125668880); +emit_32(1127460897); +emit_32(1108142195); +emit_32(1125668880); +emit_32(1127716880); +emit_32(1108004202); +emit_32(1125668880); +emit_32(1127972864); +emit_32(1108024046); +emit_32(1125668880); +emit_32(1128228848); +emit_32(1107844452); +emit_32(1125668880); +emit_32(1128484897); +emit_32(1107348947); +emit_32(1125668880); +emit_32(1128740880); +emit_32(1106593763); +emit_32(1125668880); +emit_32(1128996864); +emit_32(1105593683); +emit_32(1125668880); +emit_32(1129252848); +emit_32(1107573788); +emit_32(1125668880); +emit_32(1129508897); +emit_32(1107189039); +emit_32(1125668880); +emit_32(1129764880); +emit_32(1106191581); +emit_32(1125668880); +emit_32(1130020864); +emit_32(1104988812); +emit_32(1125668880); +emit_32(1130276848); +emit_32(1104221150); +emit_32(1125668880); +emit_32(1130532897); +emit_32(1100814903); +emit_32(1125668880); +emit_32(1130788880); +emit_32(1100302044); +emit_32(1125668880); +emit_32(1131044864); +emit_32(1099639816); +emit_32(1125668880); +emit_32(1131300848); +emit_32(1098467980); +emit_32(1125668880); +emit_32(1131556897); +emit_32(1096188795); +emit_32(1125668880); +emit_32(1131812880); +emit_32(1095551051); +emit_32(1125668880); +emit_32(1132068864); +emit_32(1095331689); +emit_32(1125668880); +emit_32(1081737258); +emit_32(1100171654); +emit_32(1125412897); +emit_32(1090125845); +emit_32(1100384200); +emit_32(1125412897); +emit_32(1094418484); +emit_32(1101392563); +emit_32(1125412897); +emit_32(1098514432); +emit_32(1101939763); +emit_32(1125412897); +emit_32(1100759066); +emit_32(1101350096); +emit_32(1125412897); +emit_32(1102807040); +emit_32(1100931242); +emit_32(1125412897); +emit_32(1104855066); +emit_32(1101054660); +emit_32(1125412897); +emit_32(1106903040); +emit_32(1100365745); +emit_32(1125412897); +emit_32(1108123661); +emit_32(1100020711); +emit_32(1125412897); +emit_32(1109147648); +emit_32(1099837211); +emit_32(1125412897); +emit_32(1110171661); +emit_32(1099961205); +emit_32(1125412897); +emit_32(1111195648); +emit_32(1099795792); +emit_32(1125412897); +emit_32(1112219661); +emit_32(1099519282); +emit_32(1125412897); +emit_32(1113243648); +emit_32(1100138886); +emit_32(1125412897); +emit_32(1114267661); +emit_32(1100250454); +emit_32(1125412897); +emit_32(1115291648); +emit_32(1100025640); +emit_32(1125412897); +emit_32(1116000263); +emit_32(1099647890); +emit_32(1125412897); +emit_32(1116512256); +emit_32(1099582564); +emit_32(1125412897); +emit_32(1117024263); +emit_32(1099791335); +emit_32(1125412897); +emit_32(1117536256); +emit_32(1100303198); +emit_32(1125412897); +emit_32(1118048263); +emit_32(1100818520); +emit_32(1125412897); +emit_32(1118560256); +emit_32(1100729182); +emit_32(1125412897); +emit_32(1119072263); +emit_32(1101156162); +emit_32(1125412897); +emit_32(1119584256); +emit_32(1101134247); +emit_32(1125412897); +emit_32(1120096263); +emit_32(1101623565); +emit_32(1125412897); +emit_32(1120608322); +emit_32(1102682626); +emit_32(1125412897); +emit_32(1121120289); +emit_32(1103567205); +emit_32(1125412897); +emit_32(1121632256); +emit_32(1104435374); +emit_32(1125412897); +emit_32(1122144223); +emit_32(1105541464); +emit_32(1125412897); +emit_32(1122656322); +emit_32(1106370730); +emit_32(1125412897); +emit_32(1123168289); +emit_32(1107136296); +emit_32(1125412897); +emit_32(1123680256); +emit_32(1107622678); +emit_32(1125412897); +emit_32(1124132848); +emit_32(1107924458); +emit_32(1125412897); +emit_32(1124388897); +emit_32(1108157006); +emit_32(1125412897); +emit_32(1124644880); +emit_32(1108530928); +emit_32(1125412897); +emit_32(1124900864); +emit_32(1108656600); +emit_32(1125412897); +emit_32(1125156848); +emit_32(1108481461); +emit_32(1125412897); +emit_32(1125412897); +emit_32(1108539159); +emit_32(1125412897); +emit_32(1125668880); +emit_32(1110441066); +emit_32(1125412897); +emit_32(1125924864); +emit_32(1110692148); +emit_32(1125412897); +emit_32(1126180848); +emit_32(1110653744); +emit_32(1125412897); +emit_32(1126436897); +emit_32(1110727721); +emit_32(1125412897); +emit_32(1126692880); +emit_32(1110202673); +emit_32(1125412897); +emit_32(1126948864); +emit_32(1109971881); +emit_32(1125412897); +emit_32(1127204848); +emit_32(1109534940); +emit_32(1125412897); +emit_32(1127460897); +emit_32(1108342263); +emit_32(1125412897); +emit_32(1127716880); +emit_32(1107927840); +emit_32(1125412897); +emit_32(1127972864); +emit_32(1108111183); +emit_32(1125412897); +emit_32(1128228848); +emit_32(1107908939); +emit_32(1125412897); +emit_32(1128484897); +emit_32(1108258954); +emit_32(1125412897); +emit_32(1128740880); +emit_32(1108072464); +emit_32(1125412897); +emit_32(1128996864); +emit_32(1107928180); +emit_32(1125412897); +emit_32(1129252848); +emit_32(1107296990); +emit_32(1125412897); +emit_32(1129508897); +emit_32(1106977751); +emit_32(1125412897); +emit_32(1129764880); +emit_32(1105908938); +emit_32(1125412897); +emit_32(1130020864); +emit_32(1105000556); +emit_32(1125412897); +emit_32(1130276848); +emit_32(1101880046); +emit_32(1125412897); +emit_32(1130532897); +emit_32(1101191447); +emit_32(1125412897); +emit_32(1130788880); +emit_32(1100805675); +emit_32(1125412897); +emit_32(1131044864); +emit_32(1099759459); +emit_32(1125412897); +emit_32(1131300848); +emit_32(1099177761); +emit_32(1125412897); +emit_32(1131556897); +emit_32(1097755263); +emit_32(1125412897); +emit_32(1131812880); +emit_32(1095551576); +emit_32(1125412897); +emit_32(1132068864); +emit_32(1095000968); +emit_32(1125412897); +emit_32(1081737258); +emit_32(1099891107); +emit_32(1125156848); +emit_32(1090125845); +emit_32(1100647078); +emit_32(1125156848); +emit_32(1094418484); +emit_32(1101487879); +emit_32(1125156848); +emit_32(1098514432); +emit_32(1101979399); +emit_32(1125156848); +emit_32(1100759066); +emit_32(1101681341); +emit_32(1125156848); +emit_32(1102807040); +emit_32(1100993475); +emit_32(1125156848); +emit_32(1104855066); +emit_32(1100813907); +emit_32(1125156848); +emit_32(1106903040); +emit_32(1100711094); +emit_32(1125156848); +emit_32(1108123661); +emit_32(1100302044); +emit_32(1125156848); +emit_32(1109147648); +emit_32(1099535063); +emit_32(1125156848); +emit_32(1110171661); +emit_32(1099325506); +emit_32(1125156848); +emit_32(1111195648); +emit_32(1099122554); +emit_32(1125156848); +emit_32(1112219661); +emit_32(1099190764); +emit_32(1125156848); +emit_32(1113243648); +emit_32(1099332846); +emit_32(1125156848); +emit_32(1114267661); +emit_32(1099594465); +emit_32(1125156848); +emit_32(1115291648); +emit_32(1099712850); +emit_32(1125156848); +emit_32(1116000263); +emit_32(1099353031); +emit_32(1125156848); +emit_32(1116512256); +emit_32(1099544553); +emit_32(1125156848); +emit_32(1117024263); +emit_32(1099237163); +emit_32(1125156848); +emit_32(1117536256); +emit_32(1099846700); +emit_32(1125156848); +emit_32(1118048263); +emit_32(1100273628); +emit_32(1125156848); +emit_32(1118560256); +emit_32(1100368839); +emit_32(1125156848); +emit_32(1119072263); +emit_32(1101256668); +emit_32(1125156848); +emit_32(1119584256); +emit_32(1101557609); +emit_32(1125156848); +emit_32(1120096263); +emit_32(1101502192); +emit_32(1125156848); +emit_32(1120608322); +emit_32(1102635231); +emit_32(1125156848); +emit_32(1121120289); +emit_32(1103741374); +emit_32(1125156848); +emit_32(1121632256); +emit_32(1104695211); +emit_32(1125156848); +emit_32(1122144223); +emit_32(1105984016); +emit_32(1125156848); +emit_32(1122656322); +emit_32(1106774537); +emit_32(1125156848); +emit_32(1123168289); +emit_32(1107580944); +emit_32(1125156848); +emit_32(1123680256); +emit_32(1107993847); +emit_32(1125156848); +emit_32(1124132848); +emit_32(1108308813); +emit_32(1125156848); +emit_32(1124388897); +emit_32(1108572163); +emit_32(1125156848); +emit_32(1124644880); +emit_32(1108751548); +emit_32(1125156848); +emit_32(1124900864); +emit_32(1108775613); +emit_32(1125156848); +emit_32(1125156848); +emit_32(1108840887); +emit_32(1125156848); +emit_32(1125412897); +emit_32(1108640452); +emit_32(1125156848); +emit_32(1125668880); +emit_32(1109400932); +emit_32(1125156848); +emit_32(1125924864); +emit_32(1110700537); +emit_32(1125156848); +emit_32(1126180848); +emit_32(1110726279); +emit_32(1125156848); +emit_32(1126436897); +emit_32(1110647059); +emit_32(1125156848); +emit_32(1126692880); +emit_32(1110057628); +emit_32(1125156848); +emit_32(1126948864); +emit_32(1109862960); +emit_32(1125156848); +emit_32(1127204848); +emit_32(1109806599); +emit_32(1125156848); +emit_32(1127460897); +emit_32(1109740539); +emit_32(1125156848); +emit_32(1127716880); +emit_32(1109309417); +emit_32(1125156848); +emit_32(1127972864); +emit_32(1109254577); +emit_32(1125156848); +emit_32(1128228848); +emit_32(1109010704); +emit_32(1125156848); +emit_32(1128484897); +emit_32(1108707980); +emit_32(1125156848); +emit_32(1128740880); +emit_32(1108196590); +emit_32(1125156848); +emit_32(1128996864); +emit_32(1107884428); +emit_32(1125156848); +emit_32(1129252848); +emit_32(1107202828); +emit_32(1125156848); +emit_32(1129508897); +emit_32(1106564402); +emit_32(1125156848); +emit_32(1129764880); +emit_32(1104622440); +emit_32(1125156848); +emit_32(1130020864); +emit_32(1102215591); +emit_32(1125156848); +emit_32(1130276848); +emit_32(1101762186); +emit_32(1125156848); +emit_32(1130532897); +emit_32(1101353085); +emit_32(1125156848); +emit_32(1130788880); +emit_32(1101174984); +emit_32(1125156848); +emit_32(1131044864); +emit_32(1099976252); +emit_32(1125156848); +emit_32(1131300848); +emit_32(1098682624); +emit_32(1125156848); +emit_32(1131556897); +emit_32(1097157994); +emit_32(1125156848); +emit_32(1131812880); +emit_32(1095208586); +emit_32(1125156848); +emit_32(1132068864); +emit_32(1095289117); +emit_32(1125156848); +emit_32(1081737258); +emit_32(1100260206); +emit_32(1124900864); +emit_32(1090125845); +emit_32(1100861722); +emit_32(1124900864); +emit_32(1094418484); +emit_32(1101453905); +emit_32(1124900864); +emit_32(1098514432); +emit_32(1101891581); +emit_32(1124900864); +emit_32(1100759066); +emit_32(1101491759); +emit_32(1124900864); +emit_32(1102807040); +emit_32(1101032640); +emit_32(1124900864); +emit_32(1104855066); +emit_32(1100567282); +emit_32(1124900864); +emit_32(1106903040); +emit_32(1100372876); +emit_32(1124900864); +emit_32(1108123661); +emit_32(1100112672); +emit_32(1124900864); +emit_32(1109147648); +emit_32(1099604689); +emit_32(1124900864); +emit_32(1110171661); +emit_32(1099198995); +emit_32(1124900864); +emit_32(1111195648); +emit_32(1098995676); +emit_32(1124900864); +emit_32(1112219661); +emit_32(1098921384); +emit_32(1124900864); +emit_32(1113243648); +emit_32(1098994627); +emit_32(1124900864); +emit_32(1114267661); +emit_32(1099148296); +emit_32(1124900864); +emit_32(1115291648); +emit_32(1099448032); +emit_32(1124900864); +emit_32(1116000263); +emit_32(1099762395); +emit_32(1124900864); +emit_32(1116512256); +emit_32(1099304849); +emit_32(1124900864); +emit_32(1117024263); +emit_32(1099411698); +emit_32(1124900864); +emit_32(1117536256); +emit_32(1099612239); +emit_32(1124900864); +emit_32(1118048263); +emit_32(1099837840); +emit_32(1124900864); +emit_32(1118560256); +emit_32(1100521092); +emit_32(1124900864); +emit_32(1119072263); +emit_32(1101042758); +emit_32(1124900864); +emit_32(1119584256); +emit_32(1101829715); +emit_32(1124900864); +emit_32(1120096263); +emit_32(1101787195); +emit_32(1124900864); +emit_32(1120608322); +emit_32(1103231661); +emit_32(1124900864); +emit_32(1121120289); +emit_32(1104133017); +emit_32(1124900864); +emit_32(1121632256); +emit_32(1105136347); +emit_32(1124900864); +emit_32(1122144223); +emit_32(1106058779); +emit_32(1124900864); +emit_32(1122656322); +emit_32(1107306060); +emit_32(1124900864); +emit_32(1123168289); +emit_32(1107824214); +emit_32(1124900864); +emit_32(1123680256); +emit_32(1108124343); +emit_32(1124900864); +emit_32(1124132848); +emit_32(1108411050); +emit_32(1124900864); +emit_32(1124388897); +emit_32(1108748167); +emit_32(1124900864); +emit_32(1124644880); +emit_32(1108912295); +emit_32(1124900864); +emit_32(1124900864); +emit_32(1108843273); +emit_32(1124900864); +emit_32(1125156848); +emit_32(1109145892); +emit_32(1124900864); +emit_32(1125412897); +emit_32(1108908258); +emit_32(1124900864); +emit_32(1125668880); +emit_32(1109287685); +emit_32(1124900864); +emit_32(1125924864); +emit_32(1109482773); +emit_32(1124900864); +emit_32(1126180848); +emit_32(1109256516); +emit_32(1124900864); +emit_32(1126436897); +emit_32(1110387222); +emit_32(1124900864); +emit_32(1126692880); +emit_32(1110113439); +emit_32(1124900864); +emit_32(1126948864); +emit_32(1109770738); +emit_32(1124900864); +emit_32(1127204848); +emit_32(1109713748); +emit_32(1124900864); +emit_32(1127460897); +emit_32(1109642471); +emit_32(1124900864); +emit_32(1127716880); +emit_32(1109465262); +emit_32(1124900864); +emit_32(1127972864); +emit_32(1109524768); +emit_32(1124900864); +emit_32(1128228848); +emit_32(1109357599); +emit_32(1124900864); +emit_32(1128484897); +emit_32(1108841438); +emit_32(1124900864); +emit_32(1128740880); +emit_32(1108264013); +emit_32(1124900864); +emit_32(1128996864); +emit_32(1107582543); +emit_32(1124900864); +emit_32(1129252848); +emit_32(1106640739); +emit_32(1124900864); +emit_32(1129508897); +emit_32(1103288074); +emit_32(1124900864); +emit_32(1129764880); +emit_32(1102897585); +emit_32(1124900864); +emit_32(1130020864); +emit_32(1102698145); +emit_32(1124900864); +emit_32(1130276848); +emit_32(1101950353); +emit_32(1124900864); +emit_32(1130532897); +emit_32(1101571713); +emit_32(1124900864); +emit_32(1130788880); +emit_32(1101236693); +emit_32(1124900864); +emit_32(1131044864); +emit_32(1100675547); +emit_32(1124900864); +emit_32(1131300848); +emit_32(1099383387); +emit_32(1124900864); +emit_32(1131556897); +emit_32(1098585840); +emit_32(1124900864); +emit_32(1131812880); +emit_32(1096815319); +emit_32(1124900864); +emit_32(1132068864); +emit_32(1095522740); +emit_32(1124900864); +emit_32(1081737258); +emit_32(1100859258); +emit_32(1124644880); +emit_32(1090125845); +emit_32(1101195903); +emit_32(1124644880); +emit_32(1094418484); +emit_32(1101106407); +emit_32(1124644880); +emit_32(1098514432); +emit_32(1101011196); +emit_32(1124644880); +emit_32(1100759066); +emit_32(1101487355); +emit_32(1124644880); +emit_32(1102807040); +emit_32(1101120563); +emit_32(1124644880); +emit_32(1104855066); +emit_32(1100659766); +emit_32(1124644880); +emit_32(1106903040); +emit_32(1100064175); +emit_32(1124644880); +emit_32(1108123661); +emit_32(1099751175); +emit_32(1124644880); +emit_32(1109147648); +emit_32(1099500618); +emit_32(1124644880); +emit_32(1110171661); +emit_32(1099345376); +emit_32(1124644880); +emit_32(1111195648); +emit_32(1099089157); +emit_32(1124644880); +emit_32(1112219661); +emit_32(1098329673); +emit_32(1124644880); +emit_32(1113243648); +emit_32(1098686084); +emit_32(1124644880); +emit_32(1114267661); +emit_32(1099133616); +emit_32(1124644880); +emit_32(1115291648); +emit_32(1099084752); +emit_32(1124644880); +emit_32(1116000263); +emit_32(1099672322); +emit_32(1124644880); +emit_32(1116512256); +emit_32(1099700004); +emit_32(1124644880); +emit_32(1117024263); +emit_32(1099767847); +emit_32(1124644880); +emit_32(1117536256); +emit_32(1099478440); +emit_32(1124644880); +emit_32(1118048263); +emit_32(1099565892); +emit_32(1124644880); +emit_32(1118560256); +emit_32(1100285634); +emit_32(1124644880); +emit_32(1119072263); +emit_32(1100840908); +emit_32(1124644880); +emit_32(1119584256); +emit_32(1101579577); +emit_32(1124644880); +emit_32(1120096263); +emit_32(1101821746); +emit_32(1124644880); +emit_32(1120608322); +emit_32(1103580575); +emit_32(1124644880); +emit_32(1121120289); +emit_32(1104976858); +emit_32(1124644880); +emit_32(1121632256); +emit_32(1105588440); +emit_32(1124644880); +emit_32(1122144223); +emit_32(1106822195); +emit_32(1124644880); +emit_32(1122656322); +emit_32(1107756686); +emit_32(1124644880); +emit_32(1123168289); +emit_32(1108002131); +emit_32(1124644880); +emit_32(1123680256); +emit_32(1108095874); +emit_32(1124644880); +emit_32(1124132848); +emit_32(1108362055); +emit_32(1124644880); +emit_32(1124388897); +emit_32(1108659431); +emit_32(1124644880); +emit_32(1124644880); +emit_32(1109016576); +emit_32(1124644880); +emit_32(1124900864); +emit_32(1109100043); +emit_32(1124644880); +emit_32(1125156848); +emit_32(1109226842); +emit_32(1124644880); +emit_32(1125412897); +emit_32(1109110030); +emit_32(1124644880); +emit_32(1125668880); +emit_32(1109268916); +emit_32(1124644880); +emit_32(1125924864); +emit_32(1109272612); +emit_32(1124644880); +emit_32(1126180848); +emit_32(1109315053); +emit_32(1124644880); +emit_32(1126436897); +emit_32(1108975105); +emit_32(1124644880); +emit_32(1126692880); +emit_32(1108796559); +emit_32(1124644880); +emit_32(1126948864); +emit_32(1108827649); +emit_32(1124644880); +emit_32(1127204848); +emit_32(1109670651); +emit_32(1124644880); +emit_32(1127460897); +emit_32(1109571771); +emit_32(1124644880); +emit_32(1127716880); +emit_32(1109561993); +emit_32(1124644880); +emit_32(1127972864); +emit_32(1109715478); +emit_32(1124644880); +emit_32(1128228848); +emit_32(1109451342); +emit_32(1124644880); +emit_32(1128484897); +emit_32(1108848070); +emit_32(1124644880); +emit_32(1128740880); +emit_32(1106750525); +emit_32(1124644880); +emit_32(1128996864); +emit_32(1105305377); +emit_32(1124644880); +emit_32(1129252848); +emit_32(1103748819); +emit_32(1124644880); +emit_32(1129508897); +emit_32(1103181906); +emit_32(1124644880); +emit_32(1129764880); +emit_32(1102910272); +emit_32(1124644880); +emit_32(1130020864); +emit_32(1102380846); +emit_32(1124644880); +emit_32(1130276848); +emit_32(1101721764); +emit_32(1124644880); +emit_32(1130532897); +emit_32(1101539941); +emit_32(1124644880); +emit_32(1130788880); +emit_32(1101138913); +emit_32(1124644880); +emit_32(1131044864); +emit_32(1100148166); +emit_32(1124644880); +emit_32(1131300848); +emit_32(1099305268); +emit_32(1124644880); +emit_32(1131556897); +emit_32(1099050412); +emit_32(1124644880); +emit_32(1131812880); +emit_32(1097572601); +emit_32(1124644880); +emit_32(1132068864); +emit_32(1096388234); +emit_32(1124644880); +emit_32(1081737258); +emit_32(1100982465); +emit_32(1124388897); +emit_32(1090125824); +emit_32(1101595148); +emit_32(1124388897); +emit_32(1094418484); +emit_32(1101527882); +emit_32(1124388897); +emit_32(1098514432); +emit_32(1101659007); +emit_32(1124388897); +emit_32(1100759066); +emit_32(1101842665); +emit_32(1124388897); +emit_32(1102807040); +emit_32(1101032902); +emit_32(1124388897); +emit_32(1104855066); +emit_32(1100272108); +emit_32(1124388897); +emit_32(1106903040); +emit_32(1100043256); +emit_32(1124388897); +emit_32(1108123661); +emit_32(1099540464); +emit_32(1124388897); +emit_32(1109147648); +emit_32(1099626080); +emit_32(1124388897); +emit_32(1110171661); +emit_32(1099081554); +emit_32(1124388897); +emit_32(1111195648); +emit_32(1098359138); +emit_32(1124388897); +emit_32(1112219661); +emit_32(1097625344); +emit_32(1124388897); +emit_32(1113243648); +emit_32(1097653341); +emit_32(1124388897); +emit_32(1114267661); +emit_32(1098623589); +emit_32(1124388897); +emit_32(1115291648); +emit_32(1099027815); +emit_32(1124388897); +emit_32(1116000263); +emit_32(1099509950); +emit_32(1124388897); +emit_32(1116512256); +emit_32(1099695496); +emit_32(1124388897); +emit_32(1117024263); +emit_32(1099418095); +emit_32(1124388897); +emit_32(1117536256); +emit_32(1099118097); +emit_32(1124388897); +emit_32(1118048263); +emit_32(1099305111); +emit_32(1124388897); +emit_32(1118560256); +emit_32(1100055524); +emit_32(1124388897); +emit_32(1119072263); +emit_32(1101014132); +emit_32(1124388897); +emit_32(1119584256); +emit_32(1101309569); +emit_32(1124388897); +emit_32(1120096263); +emit_32(1102362339); +emit_32(1124388897); +emit_32(1120608322); +emit_32(1103979663); +emit_32(1124388897); +emit_32(1121120289); +emit_32(1105246709); +emit_32(1124388897); +emit_32(1121632256); +emit_32(1105782322); +emit_32(1124388897); +emit_32(1122144223); +emit_32(1107021110); +emit_32(1124388897); +emit_32(1122656322); +emit_32(1107619427); +emit_32(1124388897); +emit_32(1123168289); +emit_32(1107918769); +emit_32(1124388897); +emit_32(1123680256); +emit_32(1108052515); +emit_32(1124388897); +emit_32(1124132848); +emit_32(1108443687); +emit_32(1124388897); +emit_32(1124388897); +emit_32(1108689656); +emit_32(1124388897); +emit_32(1124644880); +emit_32(1109031544); +emit_32(1124388897); +emit_32(1124900864); +emit_32(1109169904); +emit_32(1124388897); +emit_32(1125156848); +emit_32(1109272691); +emit_32(1124388897); +emit_32(1125412897); +emit_32(1109111367); +emit_32(1124388897); +emit_32(1125668880); +emit_32(1109309548); +emit_32(1124388897); +emit_32(1125924864); +emit_32(1109332460); +emit_32(1124388897); +emit_32(1126180848); +emit_32(1109248285); +emit_32(1124388897); +emit_32(1126436897); +emit_32(1108946898); +emit_32(1124388897); +emit_32(1126692880); +emit_32(1108703419); +emit_32(1124388897); +emit_32(1126948864); +emit_32(1108479758); +emit_32(1124388897); +emit_32(1127204848); +emit_32(1108324306); +emit_32(1124388897); +emit_32(1127460897); +emit_32(1108262886); +emit_32(1124388897); +emit_32(1127716880); +emit_32(1108353955); +emit_32(1124388897); +emit_32(1127972864); +emit_32(1108388610); +emit_32(1124388897); +emit_32(1128228848); +emit_32(1108016156); +emit_32(1124388897); +emit_32(1128484897); +emit_32(1107451209); +emit_32(1124388897); +emit_32(1128740880); +emit_32(1106693797); +emit_32(1124388897); +emit_32(1128996864); +emit_32(1105140908); +emit_32(1124388897); +emit_32(1129252848); +emit_32(1103671801); +emit_32(1124388897); +emit_32(1129508897); +emit_32(1102951481); +emit_32(1124388897); +emit_32(1129764880); +emit_32(1102824813); +emit_32(1124388897); +emit_32(1130020864); +emit_32(1102191421); +emit_32(1124388897); +emit_32(1130276848); +emit_32(1101602960); +emit_32(1124388897); +emit_32(1130532897); +emit_32(1101147668); +emit_32(1124388897); +emit_32(1130788880); +emit_32(1100725774); +emit_32(1124388897); +emit_32(1131044864); +emit_32(1100192730); +emit_32(1124388897); +emit_32(1131300848); +emit_32(1099972267); +emit_32(1124388897); +emit_32(1131556897); +emit_32(1099729574); +emit_32(1124388897); +emit_32(1131812880); +emit_32(1099118936); +emit_32(1124388897); +emit_32(1132068864); +emit_32(1097577634); +emit_32(1124388897); +emit_32(1081737258); +emit_32(1101050728); +emit_32(1124132848); +emit_32(1090125866); +emit_32(1101569144); +emit_32(1124132848); +emit_32(1094418484); +emit_32(1101742788); +emit_32(1124132848); +emit_32(1098514432); +emit_32(1102383625); +emit_32(1124132848); +emit_32(1100759066); +emit_32(1102114927); +emit_32(1124132848); +emit_32(1102807040); +emit_32(1101213309); +emit_32(1124132848); +emit_32(1104855066); +emit_32(1100341209); +emit_32(1124132848); +emit_32(1106903040); +emit_32(1099911345); +emit_32(1124132848); +emit_32(1108123661); +emit_32(1099586129); +emit_32(1124132848); +emit_32(1109147648); +emit_32(1099190030); +emit_32(1124132848); +emit_32(1110171661); +emit_32(1098581751); +emit_32(1124132848); +emit_32(1111195648); +emit_32(1097483053); +emit_32(1124132848); +emit_32(1112219661); +emit_32(1097178022); +emit_32(1124132848); +emit_32(1113243648); +emit_32(1096978688); +emit_32(1124132848); +emit_32(1114267661); +emit_32(1097352610); +emit_32(1124132848); +emit_32(1115291648); +emit_32(1097969906); +emit_32(1124132848); +emit_32(1116000263); +emit_32(1098943509); +emit_32(1124132848); +emit_32(1116512256); +emit_32(1099235380); +emit_32(1124132848); +emit_32(1117024263); +emit_32(1098875037); +emit_32(1124132848); +emit_32(1117536256); +emit_32(1098919916); +emit_32(1124132848); +emit_32(1118048263); +emit_32(1099015127); +emit_32(1124132848); +emit_32(1118560256); +emit_32(1100384410); +emit_32(1124132848); +emit_32(1119072263); +emit_32(1100817786); +emit_32(1124132848); +emit_32(1119584256); +emit_32(1101157682); +emit_32(1124132848); +emit_32(1120096263); +emit_32(1102698670); +emit_32(1124132848); +emit_32(1120608322); +emit_32(1104088662); +emit_32(1124132848); +emit_32(1121120289); +emit_32(1104975548); +emit_32(1124132848); +emit_32(1121632256); +emit_32(1105705671); +emit_32(1124132848); +emit_32(1122144223); +emit_32(1106546629); +emit_32(1124132848); +emit_32(1122656322); +emit_32(1107224271); +emit_32(1124132848); +emit_32(1123168289); +emit_32(1107432990); +emit_32(1124132848); +emit_32(1123680256); +emit_32(1107870823); +emit_32(1124132848); +emit_32(1124132848); +emit_32(1108611197); +emit_32(1124132848); +emit_32(1124388897); +emit_32(1109002394); +emit_32(1124132848); +emit_32(1124644880); +emit_32(1109174020); +emit_32(1124132848); +emit_32(1124900864); +emit_32(1109145131); +emit_32(1124132848); +emit_32(1125156848); +emit_32(1109111053); +emit_32(1124132848); +emit_32(1125412897); +emit_32(1108982156); +emit_32(1124132848); +emit_32(1125668880); +emit_32(1109159733); +emit_32(1124132848); +emit_32(1125924864); +emit_32(1109315342); +emit_32(1124132848); +emit_32(1126180848); +emit_32(1109210091); +emit_32(1124132848); +emit_32(1126436897); +emit_32(1108929885); +emit_32(1124132848); +emit_32(1126692880); +emit_32(1108541256); +emit_32(1124132848); +emit_32(1126948864); +emit_32(1108339091); +emit_32(1124132848); +emit_32(1127204848); +emit_32(1108284853); +emit_32(1124132848); +emit_32(1127460897); +emit_32(1108246449); +emit_32(1124132848); +emit_32(1127716880); +emit_32(1108208727); +emit_32(1124132848); +emit_32(1127972864); +emit_32(1108242648); +emit_32(1124132848); +emit_32(1128228848); +emit_32(1107828539); +emit_32(1124132848); +emit_32(1128484897); +emit_32(1107302207); +emit_32(1124132848); +emit_32(1128740880); +emit_32(1106125311); +emit_32(1124132848); +emit_32(1128996864); +emit_32(1104882853); +emit_32(1124132848); +emit_32(1129252848); +emit_32(1103712328); +emit_32(1124132848); +emit_32(1129508897); +emit_32(1103248228); +emit_32(1124132848); +emit_32(1129764880); +emit_32(1102281808); +emit_32(1124132848); +emit_32(1130020864); +emit_32(1101935621); +emit_32(1124132848); +emit_32(1130276848); +emit_32(1100815060); +emit_32(1124132848); +emit_32(1130532897); +emit_32(1100889457); +emit_32(1124132848); +emit_32(1130788880); +emit_32(1101023098); +emit_32(1124132848); +emit_32(1131044864); +emit_32(1100560938); +emit_32(1124132848); +emit_32(1131300848); +emit_32(1099884397); +emit_32(1124132848); +emit_32(1131556897); +emit_32(1099776918); +emit_32(1124132848); +emit_32(1131812880); +emit_32(1099406246); +emit_32(1124132848); +emit_32(1132068864); +emit_32(1099062890); +emit_32(1124132848); +emit_start(Landscape03Vtx) +emit_32(1081737216); +emit_32(1112116167); +emit_32(3054751226); +emit_32(1081737216); +emit_32(1112701298); +emit_32(1081737216); +emit_32(1090125824); +emit_32(1112117215); +emit_32(3054752017); +emit_32(1090125824); +emit_32(1112503694); +emit_32(1081737216); +emit_32(1094418484); +emit_32(1111966902); +emit_32(3054641802); +emit_32(1094418484); +emit_32(1112328084); +emit_32(1081737216); +emit_32(1098514432); +emit_32(1112170824); +emit_32(3054791336); +emit_32(1098514432); +emit_32(1112069951); +emit_32(1081737216); +emit_32(1100759066); +emit_32(1112121016); +emit_32(3054754788); +emit_32(1100759066); +emit_32(1112173655); +emit_32(1081737216); +emit_32(1102807040); +emit_32(1112268577); +emit_32(3054863024); +emit_32(1102807040); +emit_32(1112198559); +emit_32(1081737216); +emit_32(1104855066); +emit_32(1112660640); +emit_32(3055150524); +emit_32(1104855066); +emit_32(1112333694); +emit_32(1081737216); +emit_32(1106903040); +emit_32(1112840733); +emit_32(3055282597); +emit_32(1106903040); +emit_32(1112388744); +emit_32(1081737216); +emit_32(1108123661); +emit_32(1112817271); +emit_32(3055265401); +emit_32(1108123661); +emit_32(1112590726); +emit_32(1081737216); +emit_32(1109147648); +emit_32(1112978804); +emit_32(3055383885); +emit_32(1109147648); +emit_32(1113057735); +emit_32(1081737216); +emit_32(1110171661); +emit_32(1113143692); +emit_32(3055504787); +emit_32(1110171661); +emit_32(1113035296); +emit_32(1081737216); +emit_32(1111195648); +emit_32(1113241551); +emit_32(3055576563); +emit_32(1111195648); +emit_32(1112886896); +emit_32(1081737216); +emit_32(1112219661); +emit_32(1113409140); +emit_32(3055699444); +emit_32(1112219661); +emit_32(1112955971); +emit_32(1081737216); +emit_32(1113243648); +emit_32(1113827049); +emit_32(3056005944); +emit_32(1113243648); +emit_32(1113474440); +emit_32(1081737216); +emit_32(1114267661); +emit_32(1113969787); +emit_32(3056110618); +emit_32(1114267661); +emit_32(1113373252); +emit_32(1081737216); +emit_32(1115291648); +emit_32(1113729217); +emit_32(3055934168); +emit_32(1115291648); +emit_32(1112981923); +emit_32(1081737216); +emit_32(1116000263); +emit_32(1113555888); +emit_32(3055807065); +emit_32(1116000263); +emit_32(1112815462); +emit_32(1081737216); +emit_32(1116512256); +emit_32(1112971595); +emit_32(3055378563); +emit_32(1116512256); +emit_32(1112451711); +emit_32(1081737216); +emit_32(1117024263); +emit_32(1112445996); +emit_32(3054993118); +emit_32(1117024263); +emit_32(1112394144); +emit_32(1081737216); +emit_32(1117536256); +emit_32(1112490508); +emit_32(3055025752); +emit_32(1117536256); +emit_32(1112528414); +emit_32(1081737216); +emit_32(1118048263); +emit_32(1112364810); +emit_32(3054933569); +emit_32(1118048263); +emit_32(1112287950); +emit_32(1081737216); +emit_32(1118560256); +emit_32(1112062978); +emit_32(3054712259); +emit_32(1118560256); +emit_32(1111949653); +emit_32(1081737216); +emit_32(1119072263); +emit_32(1111766755); +emit_32(3054494995); +emit_32(1119072263); +emit_32(1111682685); +emit_32(1081737216); +emit_32(1119584256); +emit_32(1111332435); +emit_32(3054176489); +emit_32(1119584256); +emit_32(1111194678); +emit_32(1081737216); +emit_32(1120096263); +emit_32(1110914210); +emit_32(3053869769); +emit_32(1120096263); +emit_32(1111068639); +emit_32(1081737216); +emit_32(1120608322); +emit_32(1110765653); +emit_32(3053760829); +emit_32(1120608322); +emit_32(1110815303); +emit_32(1081737216); +emit_32(1121120289); +emit_32(1110612404); +emit_32(3053648459); +emit_32(1121120289); +emit_32(1110882674); +emit_32(1081737216); +emit_32(1121632256); +emit_32(1110535543); +emit_32(3053592076); +emit_32(1121632256); +emit_32(1110789010); +emit_32(1081737216); +emit_32(1122144223); +emit_32(1110472052); +emit_32(3053545501); +emit_32(1122144223); +emit_32(1110340062); +emit_32(1081737216); +emit_32(1122656322); +emit_32(1110285668); +emit_32(3053364308); +emit_32(1122656322); +emit_32(1109951539); +emit_32(1081737216); +emit_32(1123168289); +emit_32(1109697652); +emit_32(3052501939); +emit_32(1123168289); +emit_32(1109517848); +emit_32(1081737216); +emit_32(1123680256); +emit_32(1109444526); +emit_32(3052130656); +emit_32(1123680256); +emit_32(1109219108); +emit_32(1081737216); +emit_32(1124132848); +emit_32(1109279611); +emit_32(3051888763); +emit_32(1124132848); +emit_32(1108888571); +emit_32(1081737216); +emit_32(1124388897); +emit_32(1108937068); +emit_32(3051386330); +emit_32(1124388897); +emit_32(1108548203); +emit_32(1081737216); +emit_32(1124644880); +emit_32(1108458524); +emit_32(3050684490); +emit_32(1124644880); +emit_32(1108062057); +emit_32(1081737216); +emit_32(1124900864); +emit_32(1107860049); +emit_32(3049806640); +emit_32(1124900864); +emit_32(1107391755); +emit_32(1081737216); +emit_32(1125156848); +emit_32(1107061952); +emit_32(3048807931); +emit_32(1125156848); +emit_32(1107147201); +emit_32(1081737216); +emit_32(1125412897); +emit_32(1106198187); +emit_32(3048174525); +emit_32(1125412897); +emit_32(1106562515); +emit_32(1081737216); +emit_32(1125668880); +emit_32(1106521306); +emit_32(3048411491); +emit_32(1125668880); +emit_32(1107088323); +emit_32(1081737216); +emit_32(1125924864); +emit_32(1106837714); +emit_32(3048643444); +emit_32(1125924864); +emit_32(1107466728); +emit_32(1081737216); +emit_32(1126180848); +emit_32(1107242569); +emit_32(3048940401); +emit_32(1126180848); +emit_32(1107640477); +emit_32(1081737216); +emit_32(1126436897); +emit_32(1107053196); +emit_32(3048801510); +emit_32(1126436897); +emit_32(1107446858); +emit_32(1081737216); +emit_32(1126692880); +emit_32(1106540495); +emit_32(3048425477); +emit_32(1126692880); +emit_32(1107035003); +emit_32(1081737216); +emit_32(1126948864); +emit_32(1106275362); +emit_32(3048231084); +emit_32(1126948864); +emit_32(1106606398); +emit_32(1081737216); +emit_32(1127204848); +emit_32(1105871923); +emit_32(3047935271); +emit_32(1127204848); +emit_32(1106181305); +emit_32(1081737216); +emit_32(1127460897); +emit_32(1105372958); +emit_32(3047569266); +emit_32(1127460897); +emit_32(1105541831); +emit_32(1081737216); +emit_32(1127716880); +emit_32(1104684096); +emit_32(3047064106); +emit_32(1127716880); +emit_32(1104783501); +emit_32(1081737216); +emit_32(1127972864); +emit_32(1103501774); +emit_32(3046197075); +emit_32(1127972864); +emit_32(1103855197); +emit_32(1081737216); +emit_32(1128228848); +emit_32(1102439829); +emit_32(3045418269); +emit_32(1128228848); +emit_32(1103186310); +emit_32(1081737216); +emit_32(1128484897); +emit_32(1101869718); +emit_32(3044935642); +emit_32(1128484897); +emit_32(1103087482); +emit_32(1081737216); +emit_32(1128740880); +emit_32(1101702785); +emit_32(3044690829); +emit_32(1128740880); +emit_32(1102981471); +emit_32(1081737216); +emit_32(1128996864); +emit_32(1101484419); +emit_32(3044370528); +emit_32(1128996864); +emit_32(1102264716); +emit_32(1081737216); +emit_32(1129252848); +emit_32(1100736102); +emit_32(3043272969); +emit_32(1129252848); +emit_32(1102136581); +emit_32(1081737216); +emit_32(1129508897); +emit_32(1100482452); +emit_32(3042900948); +emit_32(1129508897); +emit_32(1101851735); +emit_32(1081737216); +emit_32(1129764880); +emit_32(1100170134); +emit_32(3042442865); +emit_32(1129764880); +emit_32(1101959109); +emit_32(1081737216); +emit_32(1130020864); +emit_32(1100368052); +emit_32(3042733136); +emit_32(1130020864); +emit_32(1101538001); +emit_32(1081737216); +emit_32(1130276848); +emit_32(1100034710); +emit_32(3042244249); +emit_32(1130276848); +emit_32(1100676386); +emit_32(1081737216); +emit_32(1130532897); +emit_32(1099793118); +emit_32(3041889854); +emit_32(1130532897); +emit_32(1100067740); +emit_32(1081737216); +emit_32(1130788880); +emit_32(1099349570); +emit_32(3041239348); +emit_32(1130788880); +emit_32(1099550582); +emit_32(1081737216); +emit_32(1131044864); +emit_32(1099102264); +emit_32(3040876615); +emit_32(1131044864); +emit_32(1099061684); +emit_32(1081737216); +emit_32(1131300848); +emit_32(1097152227); +emit_32(3039303785); +emit_32(1131300848); +emit_32(1097284243); +emit_32(1081737216); +emit_32(1131556897); +emit_32(1095174088); +emit_32(3037853098); +emit_32(1131556897); +emit_32(1096432799); +emit_32(1081737216); +emit_32(1131812880); +emit_32(1095119772); +emit_32(3037813287); +emit_32(1131812880); +emit_32(1096013998); +emit_32(1081737216); +emit_32(1132068864); +emit_32(1094633233); +emit_32(3037456465); +emit_32(1132068864); +emit_32(1095458043); +emit_32(1081737216); +emit_32(1081737216); +emit_32(1111714929); +emit_32(3229220864); +emit_32(1090125824); +emit_32(1111846420); +emit_32(3229220864); +emit_32(1094418484); +emit_32(1112005149); +emit_32(3229220864); +emit_32(1098514432); +emit_32(1112044365); +emit_32(3229220864); +emit_32(1100759066); +emit_32(1112440753); +emit_32(3229220864); +emit_32(1102807040); +emit_32(1112584120); +emit_32(3229220864); +emit_32(1104855066); +emit_32(1112766651); +emit_32(3229220864); +emit_32(1106903040); +emit_32(1113057657); +emit_32(3229220864); +emit_32(1108123661); +emit_32(1113035846); +emit_32(3229220864); +emit_32(1109147648); +emit_32(1113286037); +emit_32(3229220864); +emit_32(1110171661); +emit_32(1113632643); +emit_32(3229220864); +emit_32(1111195648); +emit_32(1113716556); +emit_32(3229220864); +emit_32(1112219661); +emit_32(1113737894); +emit_32(3229220864); +emit_32(1113243648); +emit_32(1114105892); +emit_32(3229220864); +emit_32(1114267661); +emit_32(1114272563); +emit_32(3229220864); +emit_32(1115291648); +emit_32(1114112603); +emit_32(3229220864); +emit_32(1116000263); +emit_32(1114000379); +emit_32(3229220864); +emit_32(1116512256); +emit_32(1113455303); +emit_32(3229220864); +emit_32(1117024263); +emit_32(1112990522); +emit_32(3229220864); +emit_32(1117536256); +emit_32(1112862360); +emit_32(3229220864); +emit_32(1118048263); +emit_32(1112683289); +emit_32(3229220864); +emit_32(1118560256); +emit_32(1112325279); +emit_32(3229220864); +emit_32(1119072263); +emit_32(1111923989); +emit_32(3229220864); +emit_32(1119584256); +emit_32(1111407434); +emit_32(3229220864); +emit_32(1120096263); +emit_32(1110917251); +emit_32(3229220864); +emit_32(1120608322); +emit_32(1110628080); +emit_32(3229220864); +emit_32(1121120289); +emit_32(1110728560); +emit_32(3229220864); +emit_32(1121632256); +emit_32(1110660245); +emit_32(3229220864); +emit_32(1122144223); +emit_32(1110578220); +emit_32(3229220864); +emit_32(1122656322); +emit_32(1110373800); +emit_32(3229220864); +emit_32(1123168289); +emit_32(1109998646); +emit_32(3229220864); +emit_32(1123680256); +emit_32(1109504138); +emit_32(3229220864); +emit_32(1124132848); +emit_32(1109245821); +emit_32(3229220864); +emit_32(1124388897); +emit_32(1109347533); +emit_32(3229220864); +emit_32(1124644880); +emit_32(1108947213); +emit_32(3229220864); +emit_32(1124900864); +emit_32(1108137607); +emit_32(3229220864); +emit_32(1125156848); +emit_32(1107314396); +emit_32(3229220864); +emit_32(1125412897); +emit_32(1106864505); +emit_32(3229220864); +emit_32(1125668880); +emit_32(1107350389); +emit_32(3229220864); +emit_32(1125924864); +emit_32(1107022263); +emit_32(3229220864); +emit_32(1126180848); +emit_32(1107147673); +emit_32(3229220864); +emit_32(1126436897); +emit_32(1107173940); +emit_32(3229220864); +emit_32(1126692880); +emit_32(1106863299); +emit_32(3229220864); +emit_32(1126948864); +emit_32(1106064966); +emit_32(3229220864); +emit_32(1127204848); +emit_32(1105610408); +emit_32(3229220864); +emit_32(1127460897); +emit_32(1105364464); +emit_32(3229220864); +emit_32(1127716880); +emit_32(1104474905); +emit_32(3229220864); +emit_32(1127972864); +emit_32(1103487985); +emit_32(3229220864); +emit_32(1128228848); +emit_32(1102533729); +emit_32(3229220864); +emit_32(1128484897); +emit_32(1101802294); +emit_32(3229220864); +emit_32(1128740880); +emit_32(1100883847); +emit_32(3229220864); +emit_32(1128996864); +emit_32(1100469607); +emit_32(3229220864); +emit_32(1129252848); +emit_32(1100396573); +emit_32(3229220864); +emit_32(1129508897); +emit_32(1100417440); +emit_32(3229220864); +emit_32(1129764880); +emit_32(1100382103); +emit_32(3229220864); +emit_32(1130020864); +emit_32(1100225498); +emit_32(3229220864); +emit_32(1130276848); +emit_32(1100250192); +emit_32(3229220864); +emit_32(1130532897); +emit_32(1099696859); +emit_32(3229220864); +emit_32(1130788880); +emit_32(1099685587); +emit_32(3229220864); +emit_32(1131044864); +emit_32(1099260389); +emit_32(3229220864); +emit_32(1131300848); +emit_32(1097711642); +emit_32(3229220864); +emit_32(1131556897); +emit_32(1095721340); +emit_32(3229220864); +emit_32(1131812880); +emit_32(1095617636); +emit_32(3229220864); +emit_32(1132068864); +emit_32(1094282799); +emit_32(3229220864); +emit_32(1081737216); +emit_32(1111679959); +emit_32(3237609472); +emit_32(1090125824); +emit_32(1111786285); +emit_32(3237609472); +emit_32(1094418484); +emit_32(1112014979); +emit_32(3237609472); +emit_32(1098514432); +emit_32(1112169408); +emit_32(3237609472); +emit_32(1100759066); +emit_32(1112421145); +emit_32(3237609472); +emit_32(1102807040); +emit_32(1112788461); +emit_32(3237609472); +emit_32(1104855066); +emit_32(1112831951); +emit_32(3237609472); +emit_32(1106903040); +emit_32(1113081302); +emit_32(3237609472); +emit_32(1108123661); +emit_32(1113387250); +emit_32(3237609472); +emit_32(1109147648); +emit_32(1113921710); +emit_32(3237609472); +emit_32(1110171661); +emit_32(1113963574); +emit_32(3237609472); +emit_32(1111195648); +emit_32(1114050658); +emit_32(3237609472); +emit_32(1112219661); +emit_32(1113921264); +emit_32(3237609472); +emit_32(1113243648); +emit_32(1114115854); +emit_32(3237609472); +emit_32(1114267661); +emit_32(1114312278); +emit_32(3237609472); +emit_32(1115291648); +emit_32(1114279117); +emit_32(3237609472); +emit_32(1116000263); +emit_32(1113920609); +emit_32(3237609472); +emit_32(1116512256); +emit_32(1113584645); +emit_32(3237609472); +emit_32(1117024263); +emit_32(1113293246); +emit_32(3237609472); +emit_32(1117536256); +emit_32(1113201469); +emit_32(3237609472); +emit_32(1118048263); +emit_32(1112988661); +emit_32(3237609472); +emit_32(1118560256); +emit_32(1112637047); +emit_32(3237609472); +emit_32(1119072263); +emit_32(1112267476); +emit_32(3237609472); +emit_32(1119584256); +emit_32(1111621186); +emit_32(3237609472); +emit_32(1120096263); +emit_32(1110940949); +emit_32(3237609472); +emit_32(1120608322); +emit_32(1110726751); +emit_32(3237609472); +emit_32(1121120289); +emit_32(1110505737); +emit_32(3237609472); +emit_32(1121632256); +emit_32(1110430476); +emit_32(3237609472); +emit_32(1122144223); +emit_32(1110258876); +emit_32(3237609472); +emit_32(1122656322); +emit_32(1110246425); +emit_32(3237609472); +emit_32(1123168289); +emit_32(1110111368); +emit_32(3237609472); +emit_32(1123680256); +emit_32(1109704075); +emit_32(3237609472); +emit_32(1124132848); +emit_32(1109328449); +emit_32(3237609472); +emit_32(1124388897); +emit_32(1109344020); +emit_32(3237609472); +emit_32(1124644880); +emit_32(1109056501); +emit_32(3237609472); +emit_32(1124900864); +emit_32(1108366983); +emit_32(3237609472); +emit_32(1125156848); +emit_32(1107828618); +emit_32(3237609472); +emit_32(1125412897); +emit_32(1107568047); +emit_32(3237609472); +emit_32(1125668880); +emit_32(1107450056); +emit_32(3237609472); +emit_32(1125924864); +emit_32(1107525842); +emit_32(3237609472); +emit_32(1126180848); +emit_32(1107466650); +emit_32(3237609472); +emit_32(1126436897); +emit_32(1107475195); +emit_32(3237609472); +emit_32(1126692880); +emit_32(1107046852); +emit_32(3237609472); +emit_32(1126948864); +emit_32(1106460593); +emit_32(3237609472); +emit_32(1127204848); +emit_32(1105866051); +emit_32(3237609472); +emit_32(1127460897); +emit_32(1105220967); +emit_32(3237609472); +emit_32(1127716880); +emit_32(1104257535); +emit_32(3237609472); +emit_32(1127972864); +emit_32(1103215618); +emit_32(3237609472); +emit_32(1128228848); +emit_32(1102464785); +emit_32(3237609472); +emit_32(1128484897); +emit_32(1101270562); +emit_32(3237609472); +emit_32(1128740880); +emit_32(1100280706); +emit_32(3237609472); +emit_32(1128996864); +emit_32(1099709599); +emit_32(3237609472); +emit_32(1129252848); +emit_32(1100000579); +emit_32(3237609472); +emit_32(1129508897); +emit_32(1100207987); +emit_32(3237609472); +emit_32(1129764880); +emit_32(1100241227); +emit_32(3237609472); +emit_32(1130020864); +emit_32(1100129029); +emit_32(3237609472); +emit_32(1130276848); +emit_32(1099912079); +emit_32(3237609472); +emit_32(1130532897); +emit_32(1099448608); +emit_32(3237609472); +emit_32(1130788880); +emit_32(1099055392); +emit_32(3237609472); +emit_32(1131044864); +emit_32(1098378012); +emit_32(3237609472); +emit_32(1131300848); +emit_32(1096274779); +emit_32(3237609472); +emit_32(1131556897); +emit_32(1096113088); +emit_32(3237609472); +emit_32(1131812880); +emit_32(1094998137); +emit_32(3237609472); +emit_32(1132068864); +emit_32(1093654387); +emit_32(3237609472); +emit_32(1081737216); +emit_32(1111917802); +emit_32(3241902132); +emit_32(1090125824); +emit_32(1112032752); +emit_32(3241902132); +emit_32(1094418484); +emit_32(1112179868); +emit_32(3241902132); +emit_32(1098514432); +emit_32(1112289968); +emit_32(3241902132); +emit_32(1100759066); +emit_32(1112667167); +emit_32(3241902132); +emit_32(1102807040); +emit_32(1112883777); +emit_32(3241902132); +emit_32(1104855066); +emit_32(1113176434); +emit_32(3241902132); +emit_32(1106903040); +emit_32(1113400908); +emit_32(3241902132); +emit_32(1108123661); +emit_32(1113733176); +emit_32(3241902132); +emit_32(1109147648); +emit_32(1114095642); +emit_32(3241902132); +emit_32(1110171661); +emit_32(1114172346); +emit_32(3241902132); +emit_32(1111195648); +emit_32(1114411342); +emit_32(3241902132); +emit_32(1112219661); +emit_32(1114340694); +emit_32(3241902132); +emit_32(1113243648); +emit_32(1114253374); +emit_32(3241902132); +emit_32(1114267661); +emit_32(1114280192); +emit_32(3241902132); +emit_32(1115291648); +emit_32(1114163721); +emit_32(3241902132); +emit_32(1116000263); +emit_32(1114090190); +emit_32(3241902132); +emit_32(1116512256); +emit_32(1113701666); +emit_32(3241902132); +emit_32(1117024263); +emit_32(1113532950); +emit_32(3241902132); +emit_32(1117536256); +emit_32(1113573556); +emit_32(3241902132); +emit_32(1118048263); +emit_32(1113300219); +emit_32(3241902132); +emit_32(1118560256); +emit_32(1112826289); +emit_32(3241902132); +emit_32(1119072263); +emit_32(1112471713); +emit_32(3241902132); +emit_32(1119584256); +emit_32(1111810323); +emit_32(3241902132); +emit_32(1120096263); +emit_32(1110995816); +emit_32(3241902132); +emit_32(1120608322); +emit_32(1110440752); +emit_32(3241902132); +emit_32(1121120289); +emit_32(1110331281); +emit_32(3241902132); +emit_32(1121632256); +emit_32(1110265928); +emit_32(3241902132); +emit_32(1122144223); +emit_32(1110314897); +emit_32(3241902132); +emit_32(1122656322); +emit_32(1110355136); +emit_32(3241902132); +emit_32(1123168289); +emit_32(1110061272); +emit_32(3241902132); +emit_32(1123680256); +emit_32(1109762481); +emit_32(3241902132); +emit_32(1124132848); +emit_32(1109249543); +emit_32(3241902132); +emit_32(1124388897); +emit_32(1109267133); +emit_32(3241902132); +emit_32(1124644880); +emit_32(1108818474); +emit_32(3241902132); +emit_32(1124900864); +emit_32(1108492996); +emit_32(3241902132); +emit_32(1125156848); +emit_32(1108035555); +emit_32(3241902132); +emit_32(1125412897); +emit_32(1107824896); +emit_32(3241902132); +emit_32(1125668880); +emit_32(1107697625); +emit_32(3241902132); +emit_32(1125924864); +emit_32(1107864374); +emit_32(3241902132); +emit_32(1126180848); +emit_32(1107783896); +emit_32(3241902132); +emit_32(1126436897); +emit_32(1107786911); +emit_32(3241902132); +emit_32(1126692880); +emit_32(1107603043); +emit_32(3241902132); +emit_32(1126948864); +emit_32(1106784603); +emit_32(3241902132); +emit_32(1127204848); +emit_32(1106394376); +emit_32(3241902132); +emit_32(1127460897); +emit_32(1105369026); +emit_32(3241902132); +emit_32(1127716880); +emit_32(1104382892); +emit_32(3241902132); +emit_32(1127972864); +emit_32(1103613552); +emit_32(3241902132); +emit_32(1128228848); +emit_32(1102201959); +emit_32(3241902132); +emit_32(1128484897); +emit_32(1100683674); +emit_32(3241902132); +emit_32(1128740880); +emit_32(1100170081); +emit_32(3241902132); +emit_32(1128996864); +emit_32(1099248330); +emit_32(3241902132); +emit_32(1129252848); +emit_32(1098972398); +emit_32(3241902132); +emit_32(1129508897); +emit_32(1099403729); +emit_32(3241902132); +emit_32(1129764880); +emit_32(1099570243); +emit_32(3241902132); +emit_32(1130020864); +emit_32(1099452174); +emit_32(3241902132); +emit_32(1130276848); +emit_32(1099309567); +emit_32(3241902132); +emit_32(1130532897); +emit_32(1098235616); +emit_32(3241902132); +emit_32(1130788880); +emit_32(1097234960); +emit_32(3241902132); +emit_32(1131044864); +emit_32(1096084777); +emit_32(3241902132); +emit_32(1131300848); +emit_32(1095855768); +emit_32(3241902132); +emit_32(1131556897); +emit_32(1095600649); +emit_32(3241902132); +emit_32(1131812880); +emit_32(1095372584); +emit_32(3241902132); +emit_32(1132068864); +emit_32(1094155711); +emit_32(3241902132); +emit_32(1081737216); +emit_32(1112196121); +emit_32(3245998080); +emit_32(1090125824); +emit_32(1112339435); +emit_32(3245998080); +emit_32(1094418484); +emit_32(1112635054); +emit_32(3245998080); +emit_32(1098514432); +emit_32(1112640664); +emit_32(3245998080); +emit_32(1100759066); +emit_32(1112829670); +emit_32(3245998080); +emit_32(1102807040); +emit_32(1113234342); +emit_32(3245998080); +emit_32(1104855066); +emit_32(1113597123); +emit_32(3245998080); +emit_32(1106903040); +emit_32(1113703003); +emit_32(3245998080); +emit_32(1108123661); +emit_32(1113932589); +emit_32(3245998080); +emit_32(1109147648); +emit_32(1114173735); +emit_32(3245998080); +emit_32(1110171661); +emit_32(1114493341); +emit_32(3245998080); +emit_32(1111195648); +emit_32(1114614687); +emit_32(3245998080); +emit_32(1112219661); +emit_32(1114656971); +emit_32(3245998080); +emit_32(1113243648); +emit_32(1114375193); +emit_32(3245998080); +emit_32(1114267661); +emit_32(1114462251); +emit_32(3245998080); +emit_32(1115291648); +emit_32(1114444425); +emit_32(3245998080); +emit_32(1116000263); +emit_32(1114258040); +emit_32(3245998080); +emit_32(1116512256); +emit_32(1113897068); +emit_32(3245998080); +emit_32(1117024263); +emit_32(1113641399); +emit_32(3245998080); +emit_32(1117536256); +emit_32(1113834835); +emit_32(3245998080); +emit_32(1118048263); +emit_32(1113430688); +emit_32(3245998080); +emit_32(1118560256); +emit_32(1112813260); +emit_32(3245998080); +emit_32(1119072263); +emit_32(1112444187); +emit_32(3245998080); +emit_32(1119584256); +emit_32(1111786704); +emit_32(3245998080); +emit_32(1120096263); +emit_32(1111130558); +emit_32(3245998080); +emit_32(1120608322); +emit_32(1110632169); +emit_32(3245998080); +emit_32(1121120289); +emit_32(1110279953); +emit_32(3245998080); +emit_32(1121632256); +emit_32(1110145840); +emit_32(3245998080); +emit_32(1122144223); +emit_32(1110117869); +emit_32(3245998080); +emit_32(1122656322); +emit_32(1109967425); +emit_32(3245998080); +emit_32(1123168289); +emit_32(1109898533); +emit_32(3245998080); +emit_32(1123680256); +emit_32(1109796192); +emit_32(3245998080); +emit_32(1124132848); +emit_32(1109273031); +emit_32(3245998080); +emit_32(1124388897); +emit_32(1109109716); +emit_32(3245998080); +emit_32(1124644880); +emit_32(1108907052); +emit_32(3245998080); +emit_32(1124900864); +emit_32(1108479705); +emit_32(3245998080); +emit_32(1125156848); +emit_32(1108048504); +emit_32(3245998080); +emit_32(1125412897); +emit_32(1108035581); +emit_32(3245998080); +emit_32(1125668880); +emit_32(1107927761); +emit_32(3245998080); +emit_32(1125924864); +emit_32(1108119231); +emit_32(3245998080); +emit_32(1126180848); +emit_32(1108244955); +emit_32(3245998080); +emit_32(1126436897); +emit_32(1108024597); +emit_32(3245998080); +emit_32(1126692880); +emit_32(1107730052); +emit_32(3245998080); +emit_32(1126948864); +emit_32(1107344019); +emit_32(3245998080); +emit_32(1127204848); +emit_32(1106859314); +emit_32(3245998080); +emit_32(1127460897); +emit_32(1105701057); +emit_32(3245998080); +emit_32(1127716880); +emit_32(1104883954); +emit_32(3245998080); +emit_32(1127972864); +emit_32(1103479492); +emit_32(3245998080); +emit_32(1128228848); +emit_32(1101941126); +emit_32(3245998080); +emit_32(1128484897); +emit_32(1100612003); +emit_32(3245998080); +emit_32(1128740880); +emit_32(1099967182); +emit_32(3245998080); +emit_32(1128996864); +emit_32(1099350200); +emit_32(3245998080); +emit_32(1129252848); +emit_32(1098786642); +emit_32(3245998080); +emit_32(1129508897); +emit_32(1098582799); +emit_32(3245998080); +emit_32(1129764880); +emit_32(1098188639); +emit_32(3245998080); +emit_32(1130020864); +emit_32(1098264032); +emit_32(3245998080); +emit_32(1130276848); +emit_32(1097098120); +emit_32(3245998080); +emit_32(1130532897); +emit_32(1096369150); +emit_32(3245998080); +emit_32(1130788880); +emit_32(1096281280); +emit_32(3245998080); +emit_32(1131044864); +emit_32(1096127244); +emit_32(3245998080); +emit_32(1131300848); +emit_32(1096047342); +emit_32(3245998080); +emit_32(1131556897); +emit_32(1096229061); +emit_32(3245998080); +emit_32(1131812880); +emit_32(1095837942); +emit_32(3245998080); +emit_32(1132068864); +emit_32(1094247567); +emit_32(3245998080); +emit_32(1081737216); +emit_32(1112566084); +emit_32(3248242714); +emit_32(1090125824); +emit_32(1112769036); +emit_32(3248242714); +emit_32(1094418484); +emit_32(1113204903); +emit_32(3248242714); +emit_32(1098514432); +emit_32(1113297807); +emit_32(3248242714); +emit_32(1100759066); +emit_32(1113299590); +emit_32(3248242714); +emit_32(1102807040); +emit_32(1113631778); +emit_32(3248242714); +emit_32(1104855066); +emit_32(1113733962); +emit_32(3248242714); +emit_32(1106903040); +emit_32(1114058575); +emit_32(3248242714); +emit_32(1108123661); +emit_32(1114302841); +emit_32(3248242714); +emit_32(1109147648); +emit_32(1114499816); +emit_32(3248242714); +emit_32(1110171661); +emit_32(1114705389); +emit_32(3248242714); +emit_32(1111195648); +emit_32(1114954505); +emit_32(3248242714); +emit_32(1112219661); +emit_32(1114757818); +emit_32(3248242714); +emit_32(1113243648); +emit_32(1114552664); +emit_32(3248242714); +emit_32(1114267661); +emit_32(1114690499); +emit_32(3248242714); +emit_32(1115291648); +emit_32(1114401800); +emit_32(3248242714); +emit_32(1116000263); +emit_32(1114010445); +emit_32(3248242714); +emit_32(1116512256); +emit_32(1113755904); +emit_32(3248242714); +emit_32(1117024263); +emit_32(1113715219); +emit_32(3248242714); +emit_32(1117536256); +emit_32(1113634478); +emit_32(3248242714); +emit_32(1118048263); +emit_32(1113284962); +emit_32(3248242714); +emit_32(1118560256); +emit_32(1112908602); +emit_32(3248242714); +emit_32(1119072263); +emit_32(1112464713); +emit_32(3248242714); +emit_32(1119584256); +emit_32(1111750948); +emit_32(3248242714); +emit_32(1120096263); +emit_32(1111362529); +emit_32(3248242714); +emit_32(1120608322); +emit_32(1110906005); +emit_32(3248242714); +emit_32(1121120289); +emit_32(1110451867); +emit_32(3248242714); +emit_32(1121632256); +emit_32(1110203905); +emit_32(3248242714); +emit_32(1122144223); +emit_32(1110022344); +emit_32(3248242714); +emit_32(1122656322); +emit_32(1109942023); +emit_32(3248242714); +emit_32(1123168289); +emit_32(1109931930); +emit_32(3248242714); +emit_32(1123680256); +emit_32(1109863432); +emit_32(3248242714); +emit_32(1124132848); +emit_32(1109215989); +emit_32(3248242714); +emit_32(1124388897); +emit_32(1109161384); +emit_32(3248242714); +emit_32(1124644880); +emit_32(1108931536); +emit_32(3248242714); +emit_32(1124900864); +emit_32(1108371544); +emit_32(3248242714); +emit_32(1125156848); +emit_32(1108462875); +emit_32(3248242714); +emit_32(1125412897); +emit_32(1108261182); +emit_32(3248242714); +emit_32(1125668880); +emit_32(1108292980); +emit_32(3248242714); +emit_32(1125924864); +emit_32(1108474724); +emit_32(3248242714); +emit_32(1126180848); +emit_32(1108428377); +emit_32(3248242714); +emit_32(1126436897); +emit_32(1108089713); +emit_32(3248242714); +emit_32(1126692880); +emit_32(1107824057); +emit_32(3248242714); +emit_32(1126948864); +emit_32(1107727614); +emit_32(3248242714); +emit_32(1127204848); +emit_32(1107082976); +emit_32(3248242714); +emit_32(1127460897); +emit_32(1106264772); +emit_32(3248242714); +emit_32(1127716880); +emit_32(1105380141); +emit_32(3248242714); +emit_32(1127972864); +emit_32(1103821223); +emit_32(3248242714); +emit_32(1128228848); +emit_32(1102097049); +emit_32(3248242714); +emit_32(1128484897); +emit_32(1100348129); +emit_32(3248242714); +emit_32(1128740880); +emit_32(1099721186); +emit_32(3248242714); +emit_32(1128996864); +emit_32(1098987759); +emit_32(3248242714); +emit_32(1129252848); +emit_32(1098503317); +emit_32(3248242714); +emit_32(1129508897); +emit_32(1097783679); +emit_32(3248242714); +emit_32(1129764880); +emit_32(1097409338); +emit_32(3248242714); +emit_32(1130020864); +emit_32(1096647547); +emit_32(3248242714); +emit_32(1130276848); +emit_32(1096484599); +emit_32(3248242714); +emit_32(1130532897); +emit_32(1095929168); +emit_32(3248242714); +emit_32(1130788880); +emit_32(1096063071); +emit_32(3248242714); +emit_32(1131044864); +emit_32(1096407109); +emit_32(3248242714); +emit_32(1131300848); +emit_32(1095628227); +emit_32(3248242714); +emit_32(1131556897); +emit_32(1095460769); +emit_32(3248242714); +emit_32(1131812880); +emit_32(1095830916); +emit_32(3248242714); +emit_32(1132068864); +emit_32(1094232467); +emit_32(3248242714); +emit_32(1081737216); +emit_32(1113150456); +emit_32(3250290688); +emit_32(1090125824); +emit_32(1113492292); +emit_32(3250290688); +emit_32(1094418484); +emit_32(1113689922); +emit_32(3250290688); +emit_32(1098514432); +emit_32(1113686357); +emit_32(3250290688); +emit_32(1100759066); +emit_32(1113837352); +emit_32(3250290688); +emit_32(1102807040); +emit_32(1113996473); +emit_32(3250290688); +emit_32(1104855066); +emit_32(1114061039); +emit_32(3250290688); +emit_32(1106903040); +emit_32(1114255891); +emit_32(3250290688); +emit_32(1108123661); +emit_32(1114434988); +emit_32(3250290688); +emit_32(1109147648); +emit_32(1114792814); +emit_32(3250290688); +emit_32(1110171661); +emit_32(1114681586); +emit_32(3250290688); +emit_32(1111195648); +emit_32(1114881157); +emit_32(3250290688); +emit_32(1112219661); +emit_32(1114508309); +emit_32(3250290688); +emit_32(1113243648); +emit_32(1114572115); +emit_32(3250290688); +emit_32(1114267661); +emit_32(1114613377); +emit_32(3250290688); +emit_32(1115291648); +emit_32(1114243334); +emit_32(3250290688); +emit_32(1116000263); +emit_32(1114073701); +emit_32(3250290688); +emit_32(1116512256); +emit_32(1113815594); +emit_32(3250290688); +emit_32(1117024263); +emit_32(1113605721); +emit_32(3250290688); +emit_32(1117536256); +emit_32(1113440702); +emit_32(3250290688); +emit_32(1118048263); +emit_32(1112989159); +emit_32(3250290688); +emit_32(1118560256); +emit_32(1112567395); +emit_32(3250290688); +emit_32(1119072263); +emit_32(1112247344); +emit_32(3250290688); +emit_32(1119584256); +emit_32(1112009920); +emit_32(3250290688); +emit_32(1120096263); +emit_32(1111470454); +emit_32(3250290688); +emit_32(1120608322); +emit_32(1110996838); +emit_32(3250290688); +emit_32(1121120289); +emit_32(1110568495); +emit_32(3250290688); +emit_32(1121632256); +emit_32(1110151633); +emit_32(3250290688); +emit_32(1122144223); +emit_32(1109917460); +emit_32(3250290688); +emit_32(1122656322); +emit_32(1109701663); +emit_32(3250290688); +emit_32(1123168289); +emit_32(1109686721); +emit_32(3250290688); +emit_32(1123680256); +emit_32(1109370549); +emit_32(3250290688); +emit_32(1124132848); +emit_32(1109357783); +emit_32(3250290688); +emit_32(1124388897); +emit_32(1109361348); +emit_32(3250290688); +emit_32(1124644880); +emit_32(1108962627); +emit_32(3250290688); +emit_32(1124900864); +emit_32(1108736108); +emit_32(3250290688); +emit_32(1125156848); +emit_32(1108614185); +emit_32(3250290688); +emit_32(1125412897); +emit_32(1108533864); +emit_32(3250290688); +emit_32(1125668880); +emit_32(1108590068); +emit_32(3250290688); +emit_32(1125924864); +emit_32(1108802404); +emit_32(3250290688); +emit_32(1126180848); +emit_32(1108700955); +emit_32(3250290688); +emit_32(1126436897); +emit_32(1108392988); +emit_32(3250290688); +emit_32(1126692880); +emit_32(1108021871); +emit_32(3250290688); +emit_32(1126948864); +emit_32(1107615521); +emit_32(3250290688); +emit_32(1127204848); +emit_32(1107132835); +emit_32(3250290688); +emit_32(1127460897); +emit_32(1106307239); +emit_32(3250290688); +emit_32(1127716880); +emit_32(1105259659); +emit_32(3250290688); +emit_32(1127972864); +emit_32(1103882145); +emit_32(3250290688); +emit_32(1128228848); +emit_32(1102498916); +emit_32(3250290688); +emit_32(1128484897); +emit_32(1100712509); +emit_32(3250290688); +emit_32(1128740880); +emit_32(1099497629); +emit_32(3250290688); +emit_32(1128996864); +emit_32(1097686476); +emit_32(3250290688); +emit_32(1129252848); +emit_32(1096996199); +emit_32(3250290688); +emit_32(1129508897); +emit_32(1096729441); +emit_32(3250290688); +emit_32(1129764880); +emit_32(1096118855); +emit_32(3250290688); +emit_32(1130020864); +emit_32(1095816970); +emit_32(3250290688); +emit_32(1130276848); +emit_32(1095839934); +emit_32(3250290688); +emit_32(1130532897); +emit_32(1095807218); +emit_32(3250290688); +emit_32(1130788880); +emit_32(1096112249); +emit_32(3250290688); +emit_32(1131044864); +emit_32(1096393372); +emit_32(3250290688); +emit_32(1131300848); +emit_32(1096168558); +emit_32(3250290688); +emit_32(1131556897); +emit_32(1095322776); +emit_32(3250290688); +emit_32(1131812880); +emit_32(1094576924); +emit_32(3250290688); +emit_32(1132068864); +emit_32(1094020760); +emit_32(3250290688); +emit_32(1081737216); +emit_32(1113988085); +emit_32(3252338714); +emit_32(1090125824); +emit_32(1114065260); +emit_32(3252338714); +emit_32(1094418484); +emit_32(1113997338); +emit_32(3252338714); +emit_32(1098514432); +emit_32(1114054171); +emit_32(3252338714); +emit_32(1100759066); +emit_32(1114320378); +emit_32(3252338714); +emit_32(1102807040); +emit_32(1114467126); +emit_32(3252338714); +emit_32(1104855066); +emit_32(1114435984); +emit_32(3252338714); +emit_32(1106903040); +emit_32(1114341953); +emit_32(3252338714); +emit_32(1108123661); +emit_32(1114299407); +emit_32(3252338714); +emit_32(1109147648); +emit_32(1114563438); +emit_32(3252338714); +emit_32(1110171661); +emit_32(1114648268); +emit_32(3252338714); +emit_32(1111195648); +emit_32(1114546084); +emit_32(3252338714); +emit_32(1112219661); +emit_32(1114619144); +emit_32(3252338714); +emit_32(1113243648); +emit_32(1114743636); +emit_32(3252338714); +emit_32(1114267661); +emit_32(1114455592); +emit_32(3252338714); +emit_32(1115291648); +emit_32(1114088040); +emit_32(3252338714); +emit_32(1116000263); +emit_32(1113929390); +emit_32(3252338714); +emit_32(1116512256); +emit_32(1113476511); +emit_32(3252338714); +emit_32(1117024263); +emit_32(1113251303); +emit_32(3252338714); +emit_32(1117536256); +emit_32(1113169592); +emit_32(3252338714); +emit_32(1118048263); +emit_32(1112818162); +emit_32(3252338714); +emit_32(1118560256); +emit_32(1112268839); +emit_32(3252338714); +emit_32(1119072263); +emit_32(1111908916); +emit_32(3252338714); +emit_32(1119584256); +emit_32(1111826550); +emit_32(3252338714); +emit_32(1120096263); +emit_32(1111731418); +emit_32(3252338714); +emit_32(1120608322); +emit_32(1111230146); +emit_32(3252338714); +emit_32(1121120289); +emit_32(1110553815); +emit_32(3252338714); +emit_32(1121632256); +emit_32(1110036683); +emit_32(3252338714); +emit_32(1122144223); +emit_32(1109799364); +emit_32(3252338714); +emit_32(1122656322); +emit_32(1109771393); +emit_32(3252338714); +emit_32(1123168289); +emit_32(1109709003); +emit_32(3252338714); +emit_32(1123680256); +emit_32(1109442691); +emit_32(3252338714); +emit_32(1124132848); +emit_32(1109517769); +emit_32(3252338714); +emit_32(1124388897); +emit_32(1109424524); +emit_32(3252338714); +emit_32(1124644880); +emit_32(1109080277); +emit_32(3252338714); +emit_32(1124900864); +emit_32(1108875411); +emit_32(3252338714); +emit_32(1125156848); +emit_32(1108744733); +emit_32(3252338714); +emit_32(1125412897); +emit_32(1108572268); +emit_32(3252338714); +emit_32(1125668880); +emit_32(1108842041); +emit_32(3252338714); +emit_32(1125924864); +emit_32(1108992537); +emit_32(3252338714); +emit_32(1126180848); +emit_32(1108824136); +emit_32(3252338714); +emit_32(1126436897); +emit_32(1108504583); +emit_32(3252338714); +emit_32(1126692880); +emit_32(1107939112); +emit_32(3252338714); +emit_32(1126948864); +emit_32(1107373221); +emit_32(3252338714); +emit_32(1127204848); +emit_32(1107163454); +emit_32(3252338714); +emit_32(1127460897); +emit_32(1106219106); +emit_32(3252338714); +emit_32(1127716880); +emit_32(1105070444); +emit_32(3252338714); +emit_32(1127972864); +emit_32(1103725960); +emit_32(3252338714); +emit_32(1128228848); +emit_32(1102334919); +emit_32(3252338714); +emit_32(1128484897); +emit_32(1100777102); +emit_32(3252338714); +emit_32(1128740880); +emit_32(1099662937); +emit_32(3252338714); +emit_32(1128996864); +emit_32(1098431490); +emit_32(3252338714); +emit_32(1129252848); +emit_32(1097775186); +emit_32(3252338714); +emit_32(1129508897); +emit_32(1096256848); +emit_32(3252338714); +emit_32(1129764880); +emit_32(1095754895); +emit_32(3252338714); +emit_32(1130020864); +emit_32(1096060659); +emit_32(3252338714); +emit_32(1130276848); +emit_32(1095067238); +emit_32(3252338714); +emit_32(1130532897); +emit_32(1094771330); +emit_32(3252338714); +emit_32(1130788880); +emit_32(1095212047); +emit_32(3252338714); +emit_32(1131044864); +emit_32(1094803207); +emit_32(3252338714); +emit_32(1131300848); +emit_32(1094921801); +emit_32(3252338714); +emit_32(1131556897); +emit_32(1094618028); +emit_32(3252338714); +emit_32(1131812880); +emit_32(1093381757); +emit_32(3252338714); +emit_32(1132068864); +emit_32(1092728180); +emit_32(3252338714); +emit_32(1081737216); +emit_32(1114484349); +emit_32(3254386688); +emit_32(1090125824); +emit_32(1114516331); +emit_32(3254386688); +emit_32(1094418484); +emit_32(1114316079); +emit_32(3254386688); +emit_32(1098514432); +emit_32(1114579953); +emit_32(3254386688); +emit_32(1100759066); +emit_32(1114764660); +emit_32(3254386688); +emit_32(1102807040); +emit_32(1114796065); +emit_32(3254386688); +emit_32(1104855066); +emit_32(1114724998); +emit_32(3254386688); +emit_32(1106903040); +emit_32(1114516881); +emit_32(3254386688); +emit_32(1108123661); +emit_32(1114291254); +emit_32(3254386688); +emit_32(1109147648); +emit_32(1114334036); +emit_32(3254386688); +emit_32(1110171661); +emit_32(1114475987); +emit_32(3254386688); +emit_32(1111195648); +emit_32(1114491322); +emit_32(3254386688); +emit_32(1112219661); +emit_32(1114531378); +emit_32(3254386688); +emit_32(1113243648); +emit_32(1114372755); +emit_32(3254386688); +emit_32(1114267661); +emit_32(1114308136); +emit_32(3254386688); +emit_32(1115291648); +emit_32(1113743609); +emit_32(3254386688); +emit_32(1116000263); +emit_32(1113664809); +emit_32(3254386688); +emit_32(1116512256); +emit_32(1113231799); +emit_32(3254386688); +emit_32(1117024263); +emit_32(1112995057); +emit_32(3254386688); +emit_32(1117536256); +emit_32(1112878744); +emit_32(3254386688); +emit_32(1118048263); +emit_32(1112754959); +emit_32(3254386688); +emit_32(1118560256); +emit_32(1112570436); +emit_32(3254386688); +emit_32(1119072263); +emit_32(1112364417); +emit_32(3254386688); +emit_32(1119584256); +emit_32(1111993903); +emit_32(3254386688); +emit_32(1120096263); +emit_32(1111795748); +emit_32(3254386688); +emit_32(1120608322); +emit_32(1111345490); +emit_32(3254386688); +emit_32(1121120289); +emit_32(1110601525); +emit_32(3254386688); +emit_32(1121632256); +emit_32(1110149693); +emit_32(3254386688); +emit_32(1122144223); +emit_32(1110165946); +emit_32(3254386688); +emit_32(1122656322); +emit_32(1109981554); +emit_32(3254386688); +emit_32(1123168289); +emit_32(1109825395); +emit_32(3254386688); +emit_32(1123680256); +emit_32(1109816797); +emit_32(3254386688); +emit_32(1124132848); +emit_32(1109710052); +emit_32(3254386688); +emit_32(1124388897); +emit_32(1109602468); +emit_32(3254386688); +emit_32(1124644880); +emit_32(1109349918); +emit_32(3254386688); +emit_32(1124900864); +emit_32(1109069634); +emit_32(3254386688); +emit_32(1125156848); +emit_32(1108800622); +emit_32(3254386688); +emit_32(1125412897); +emit_32(1108662341); +emit_32(3254386688); +emit_32(1125668880); +emit_32(1108955051); +emit_32(3254386688); +emit_32(1125924864); +emit_32(1109069896); +emit_32(3254386688); +emit_32(1126180848); +emit_32(1108753986); +emit_32(3254386688); +emit_32(1126436897); +emit_32(1108343941); +emit_32(3254386688); +emit_32(1126692880); +emit_32(1107751600); +emit_32(3254386688); +emit_32(1126948864); +emit_32(1107299113); +emit_32(3254386688); +emit_32(1127204848); +emit_32(1106833257); +emit_32(3254386688); +emit_32(1127460897); +emit_32(1106258742); +emit_32(3254386688); +emit_32(1127716880); +emit_32(1104970147); +emit_32(3254386688); +emit_32(1127972864); +emit_32(1103641549); +emit_32(3254386688); +emit_32(1128228848); +emit_32(1102486700); +emit_32(3254386688); +emit_32(1128484897); +emit_32(1100950903); +emit_32(3254386688); +emit_32(1128740880); +emit_32(1099783943); +emit_32(3254386688); +emit_32(1128996864); +emit_32(1099048105); +emit_32(3254386688); +emit_32(1129252848); +emit_32(1097916324); +emit_32(3254386688); +emit_32(1129508897); +emit_32(1096849293); +emit_32(3254386688); +emit_32(1129764880); +emit_32(1095290166); +emit_32(3254386688); +emit_32(1130020864); +emit_32(1094873566); +emit_32(3254386688); +emit_32(1130276848); +emit_32(1094773742); +emit_32(3254386688); +emit_32(1130532897); +emit_32(1093963298); +emit_32(3254386688); +emit_32(1130788880); +emit_32(1094288251); +emit_32(3254386688); +emit_32(1131044864); +emit_32(1093582560); +emit_32(3254386688); +emit_32(1131300848); +emit_32(1093578994); +emit_32(3254386688); +emit_32(1131556897); +emit_32(1093961096); +emit_32(3254386688); +emit_32(1131812880); +emit_32(1094270950); +emit_32(3254386688); +emit_32(1132068864); +emit_32(1094226805); +emit_32(3254386688); +emit_32(1081737216); +emit_32(1114694274); +emit_32(3255607309); +emit_32(1090125824); +emit_32(1114471950); +emit_32(3255607309); +emit_32(1094418484); +emit_32(1114251644); +emit_32(3255607309); +emit_32(1098514432); +emit_32(1114525794); +emit_32(3255607309); +emit_32(1100759066); +emit_32(1114675374); +emit_32(3255607309); +emit_32(1102807040); +emit_32(1114775146); +emit_32(3255607309); +emit_32(1104855066); +emit_32(1114776168); +emit_32(3255607309); +emit_32(1106903040); +emit_32(1114678755); +emit_32(3255607309); +emit_32(1108123661); +emit_32(1114267373); +emit_32(3255607309); +emit_32(1109147648); +emit_32(1114095459); +emit_32(3255607309); +emit_32(1110171661); +emit_32(1114227474); +emit_32(3255607309); +emit_32(1111195648); +emit_32(1114305305); +emit_32(3255607309); +emit_32(1112219661); +emit_32(1114012333); +emit_32(3255607309); +emit_32(1113243648); +emit_32(1113935761); +emit_32(3255607309); +emit_32(1114267661); +emit_32(1113756087); +emit_32(3255607309); +emit_32(1115291648); +emit_32(1113651780); +emit_32(3255607309); +emit_32(1116000263); +emit_32(1113622315); +emit_32(3255607309); +emit_32(1116512256); +emit_32(1113238353); +emit_32(3255607309); +emit_32(1117024263); +emit_32(1112877931); +emit_32(3255607309); +emit_32(1117536256); +emit_32(1112868625); +emit_32(3255607309); +emit_32(1118048263); +emit_32(1112560842); +emit_32(3255607309); +emit_32(1118560256); +emit_32(1112530249); +emit_32(3255607309); +emit_32(1119072263); +emit_32(1112251957); +emit_32(3255607309); +emit_32(1119584256); +emit_32(1111883697); +emit_32(3255607309); +emit_32(1120096263); +emit_32(1111510168); +emit_32(3255607309); +emit_32(1120608322); +emit_32(1111049686); +emit_32(3255607309); +emit_32(1121120289); +emit_32(1110465000); +emit_32(3255607309); +emit_32(1121632256); +emit_32(1110143926); +emit_32(3255607309); +emit_32(1122144223); +emit_32(1110128565); +emit_32(3255607309); +emit_32(1122656322); +emit_32(1110170613); +emit_32(3255607309); +emit_32(1123168289); +emit_32(1110002133); +emit_32(3255607309); +emit_32(1123680256); +emit_32(1109827938); +emit_32(3255607309); +emit_32(1124132848); +emit_32(1109697652); +emit_32(3255607309); +emit_32(1124388897); +emit_32(1109285929); +emit_32(3255607309); +emit_32(1124644880); +emit_32(1109015973); +emit_32(3255607309); +emit_32(1124900864); +emit_32(1108853103); +emit_32(3255607309); +emit_32(1125156848); +emit_32(1108675186); +emit_32(3255607309); +emit_32(1125412897); +emit_32(1108706171); +emit_32(3255607309); +emit_32(1125668880); +emit_32(1108840441); +emit_32(3255607309); +emit_32(1125924864); +emit_32(1108822485); +emit_32(3255607309); +emit_32(1126180848); +emit_32(1108425782); +emit_32(3255607309); +emit_32(1126436897); +emit_32(1108131997); +emit_32(3255607309); +emit_32(1126692880); +emit_32(1107626584); +emit_32(3255607309); +emit_32(1126948864); +emit_32(1107199630); +emit_32(3255607309); +emit_32(1127204848); +emit_32(1106951065); +emit_32(3255607309); +emit_32(1127460897); +emit_32(1106261574); +emit_32(3255607309); +emit_32(1127716880); +emit_32(1104881543); +emit_32(3255607309); +emit_32(1127972864); +emit_32(1103438021); +emit_32(3255607309); +emit_32(1128228848); +emit_32(1102185759); +emit_32(3255607309); +emit_32(1128484897); +emit_32(1101110234); +emit_32(3255607309); +emit_32(1128740880); +emit_32(1100328678); +emit_32(3255607309); +emit_32(1128996864); +emit_32(1099613287); +emit_32(3255607309); +emit_32(1129252848); +emit_32(1098156658); +emit_32(3255607309); +emit_32(1129508897); +emit_32(1096407528); +emit_32(3255607309); +emit_32(1129764880); +emit_32(1096170131); +emit_32(3255607309); +emit_32(1130020864); +emit_32(1095690512); +emit_32(3255607309); +emit_32(1130276848); +emit_32(1094209084); +emit_32(3255607309); +emit_32(1130532897); +emit_32(1093127687); +emit_32(3255607309); +emit_32(1130788880); +emit_32(1092438259); +emit_32(3255607309); +emit_32(1131044864); +emit_32(1092531729); +emit_32(3255607309); +emit_32(1131300848); +emit_32(1093627753); +emit_32(3255607309); +emit_32(1131556897); +emit_32(1094279863); +emit_32(3255607309); +emit_32(1131812880); +emit_32(1094536449); +emit_32(3255607309); +emit_32(1132068864); +emit_32(1094652422); +emit_32(3255607309); +emit_32(1081737216); +emit_32(1114612538); +emit_32(3256631296); +emit_32(1090125824); +emit_32(1114274713); +emit_32(3256631296); +emit_32(1094418484); +emit_32(1114042532); +emit_32(3256631296); +emit_32(1098514432); +emit_32(1114371758); +emit_32(3256631296); +emit_32(1100759066); +emit_32(1114654061); +emit_32(3256631296); +emit_32(1102807040); +emit_32(1114778344); +emit_32(3256631296); +emit_32(1104855066); +emit_32(1114758762); +emit_32(3256631296); +emit_32(1106903040); +emit_32(1114526817); +emit_32(3256631296); +emit_32(1108123661); +emit_32(1114218640); +emit_32(3256631296); +emit_32(1109147648); +emit_32(1113983497); +emit_32(3256631296); +emit_32(1110171661); +emit_32(1114023684); +emit_32(3256631296); +emit_32(1111195648); +emit_32(1114065102); +emit_32(3256631296); +emit_32(1112219661); +emit_32(1113899585); +emit_32(3256631296); +emit_32(1113243648); +emit_32(1113503538); +emit_32(3256631296); +emit_32(1114267661); +emit_32(1113409769); +emit_32(3256631296); +emit_32(1115291648); +emit_32(1113402665); +emit_32(3256631296); +emit_32(1116000263); +emit_32(1113537931); +emit_32(3256631296); +emit_32(1116512256); +emit_32(1113144426); +emit_32(3256631296); +emit_32(1117024263); +emit_32(1112966772); +emit_32(3256631296); +emit_32(1117536256); +emit_32(1112729086); +emit_32(3256631296); +emit_32(1118048263); +emit_32(1112420463); +emit_32(3256631296); +emit_32(1118560256); +emit_32(1112416322); +emit_32(3256631296); +emit_32(1119072263); +emit_32(1112175306); +emit_32(3256631296); +emit_32(1119584256); +emit_32(1112112733); +emit_32(3256631296); +emit_32(1120096263); +emit_32(1111723265); +emit_32(3256631296); +emit_32(1120608322); +emit_32(1111230539); +emit_32(3256631296); +emit_32(1121120289); +emit_32(1110568521); +emit_32(3256631296); +emit_32(1121632256); +emit_32(1110333220); +emit_32(3256631296); +emit_32(1122144223); +emit_32(1110249780); +emit_32(3256631296); +emit_32(1122656322); +emit_32(1110285117); +emit_32(3256631296); +emit_32(1123168289); +emit_32(1109907735); +emit_32(3256631296); +emit_32(1123680256); +emit_32(1109777213); +emit_32(3256631296); +emit_32(1124132848); +emit_32(1109451630); +emit_32(3256631296); +emit_32(1124388897); +emit_32(1109111184); +emit_32(3256631296); +emit_32(1124644880); +emit_32(1108792102); +emit_32(3256631296); +emit_32(1124900864); +emit_32(1108776190); +emit_32(3256631296); +emit_32(1125156848); +emit_32(1108834805); +emit_32(3256631296); +emit_32(1125412897); +emit_32(1108715477); +emit_32(3256631296); +emit_32(1125668880); +emit_32(1108660453); +emit_32(3256631296); +emit_32(1125924864); +emit_32(1108548623); +emit_32(3256631296); +emit_32(1126180848); +emit_32(1108317621); +emit_32(3256631296); +emit_32(1126436897); +emit_32(1107958091); +emit_32(3256631296); +emit_32(1126692880); +emit_32(1107488198); +emit_32(3256631296); +emit_32(1126948864); +emit_32(1107323624); +emit_32(3256631296); +emit_32(1127204848); +emit_32(1106940264); +emit_32(3256631296); +emit_32(1127460897); +emit_32(1106131026); +emit_32(3256631296); +emit_32(1127716880); +emit_32(1104537505); +emit_32(3256631296); +emit_32(1127972864); +emit_32(1103113277); +emit_32(3256631296); +emit_32(1128228848); +emit_32(1102198604); +emit_32(3256631296); +emit_32(1128484897); +emit_32(1101660003); +emit_32(3256631296); +emit_32(1128740880); +emit_32(1100980106); +emit_32(3256631296); +emit_32(1128996864); +emit_32(1100131808); +emit_32(3256631296); +emit_32(1129252848); +emit_32(1099325034); +emit_32(3256631296); +emit_32(1129508897); +emit_32(1097933521); +emit_32(3256631296); +emit_32(1129764880); +emit_32(1096350800); +emit_32(3256631296); +emit_32(1130020864); +emit_32(1095937976); +emit_32(3256631296); +emit_32(1130276848); +emit_32(1093950924); +emit_32(3256631296); +emit_32(1130532897); +emit_32(1093143101); +emit_32(3256631296); +emit_32(1130788880); +emit_32(1092323492); +emit_32(3256631296); +emit_32(1131044864); +emit_32(1092516462); +emit_32(3256631296); +emit_32(1131300848); +emit_32(1093374417); +emit_32(3256631296); +emit_32(1131556897); +emit_32(1093934567); +emit_32(3256631296); +emit_32(1131812880); +emit_32(1094793141); +emit_32(3256631296); +emit_32(1132068864); +emit_32(1094610584); +emit_32(3256631296); +emit_32(1081737216); +emit_32(1114510642); +emit_32(3257655309); +emit_32(1090125824); +emit_32(1114177090); +emit_32(3257655309); +emit_32(1094418484); +emit_32(1114130088); +emit_32(3257655309); +emit_32(1098514432); +emit_32(1114485503); +emit_32(3257655309); +emit_32(1100759066); +emit_32(1114774202); +emit_32(3257655309); +emit_32(1102807040); +emit_32(1114811400); +emit_32(3257655309); +emit_32(1104855066); +emit_32(1114642894); +emit_32(3257655309); +emit_32(1106903040); +emit_32(1114125710); +emit_32(3257655309); +emit_32(1108123661); +emit_32(1113782380); +emit_32(3257655309); +emit_32(1109147648); +emit_32(1113903464); +emit_32(3257655309); +emit_32(1110171661); +emit_32(1113893372); +emit_32(3257655309); +emit_32(1111195648); +emit_32(1113835831); +emit_32(3257655309); +emit_32(1112219661); +emit_32(1113519056); +emit_32(3257655309); +emit_32(1113243648); +emit_32(1113402219); +emit_32(3257655309); +emit_32(1114267661); +emit_32(1113222650); +emit_32(3257655309); +emit_32(1115291648); +emit_32(1113112760); +emit_32(3257655309); +emit_32(1116000263); +emit_32(1112977441); +emit_32(3257655309); +emit_32(1116512256); +emit_32(1112883121); +emit_32(3257655309); +emit_32(1117024263); +emit_32(1112823615); +emit_32(3257655309); +emit_32(1117536256); +emit_32(1112700957); +emit_32(3257655309); +emit_32(1118048263); +emit_32(1112438473); +emit_32(3257655309); +emit_32(1118560256); +emit_32(1112053645); +emit_32(3257655309); +emit_32(1119072263); +emit_32(1111879136); +emit_32(3257655309); +emit_32(1119584256); +emit_32(1112020641); +emit_32(3257655309); +emit_32(1120096263); +emit_32(1111750895); +emit_32(3257655309); +emit_32(1120608322); +emit_32(1111255810); +emit_32(3257655309); +emit_32(1121120289); +emit_32(1110557852); +emit_32(3257655309); +emit_32(1121632256); +emit_32(1110574917); +emit_32(3257655309); +emit_32(1122144223); +emit_32(1110468329); +emit_32(3257655309); +emit_32(1122656322); +emit_32(1110138264); +emit_32(3257655309); +emit_32(1123168289); +emit_32(1110059752); +emit_32(3257655309); +emit_32(1123680256); +emit_32(1109798447); +emit_32(3257655309); +emit_32(1124132848); +emit_32(1109243252); +emit_32(3257655309); +emit_32(1124388897); +emit_32(1109362344); +emit_32(3257655309); +emit_32(1124644880); +emit_32(1109167073); +emit_32(3257655309); +emit_32(1124900864); +emit_32(1109064601); +emit_32(3257655309); +emit_32(1125156848); +emit_32(1108980715); +emit_32(3257655309); +emit_32(1125412897); +emit_32(1108866472); +emit_32(3257655309); +emit_32(1125668880); +emit_32(1108651960); +emit_32(3257655309); +emit_32(1125924864); +emit_32(1108356130); +emit_32(3257655309); +emit_32(1126180848); +emit_32(1108103240); +emit_32(3257655309); +emit_32(1126436897); +emit_32(1107651828); +emit_32(3257655309); +emit_32(1126692880); +emit_32(1107336154); +emit_32(3257655309); +emit_32(1126948864); +emit_32(1106756135); +emit_32(3257655309); +emit_32(1127204848); +emit_32(1106100145); +emit_32(3257655309); +emit_32(1127460897); +emit_32(1105225790); +emit_32(3257655309); +emit_32(1127716880); +emit_32(1104058987); +emit_32(3257655309); +emit_32(1127972864); +emit_32(1103547702); +emit_32(3257655309); +emit_32(1128228848); +emit_32(1102526860); +emit_32(3257655309); +emit_32(1128484897); +emit_32(1101431308); +emit_32(3257655309); +emit_32(1128740880); +emit_32(1100829216); +emit_32(3257655309); +emit_32(1128996864); +emit_32(1100205418); +emit_32(3257655309); +emit_32(1129252848); +emit_32(1099550373); +emit_32(3257655309); +emit_32(1129508897); +emit_32(1098506148); +emit_32(3257655309); +emit_32(1129764880); +emit_32(1096071564); +emit_32(3257655309); +emit_32(1130020864); +emit_32(1095937976); +emit_32(3257655309); +emit_32(1130276848); +emit_32(1093431145); +emit_32(3257655309); +emit_32(1130532897); +emit_32(1092220816); +emit_32(3257655309); +emit_32(1130788880); +emit_32(1091857117); +emit_32(3257655309); +emit_32(1131044864); +emit_32(1092062974); +emit_32(3257655309); +emit_32(1131300848); +emit_32(1092869004); +emit_32(3257655309); +emit_32(1131556897); +emit_32(1094057460); +emit_32(3257655309); +emit_32(1131812880); +emit_32(1093644845); +emit_32(3257655309); +emit_32(1132068864); +emit_32(1092544669); +emit_32(3257655309); +emit_32(1081737216); +emit_32(1114350184); +emit_32(3258679296); +emit_32(1090125824); +emit_32(1114346619); +emit_32(3258679296); +emit_32(1094418484); +emit_32(1114421513); +emit_32(3258679296); +emit_32(1098514432); +emit_32(1114700304); +emit_32(3258679296); +emit_32(1100759066); +emit_32(1114796563); +emit_32(3258679296); +emit_32(1102807040); +emit_32(1114621582); +emit_32(3258679296); +emit_32(1104855066); +emit_32(1114296549); +emit_32(3258679296); +emit_32(1106903040); +emit_32(1114209753); +emit_32(3258679296); +emit_32(1108123661); +emit_32(1113856567); +emit_32(3258679296); +emit_32(1109147648); +emit_32(1113867944); +emit_32(3258679296); +emit_32(1110171661); +emit_32(1113863907); +emit_32(3258679296); +emit_32(1111195648); +emit_32(1113532976); +emit_32(3258679296); +emit_32(1112219661); +emit_32(1113290808); +emit_32(3258679296); +emit_32(1113243648); +emit_32(1113017942); +emit_32(3258679296); +emit_32(1114267661); +emit_32(1112948867); +emit_32(3258679296); +emit_32(1115291648); +emit_32(1112695872); +emit_32(3258679296); +emit_32(1116000263); +emit_32(1112643627); +emit_32(3258679296); +emit_32(1116512256); +emit_32(1112588707); +emit_32(3258679296); +emit_32(1117024263); +emit_32(1112603833); +emit_32(3258679296); +emit_32(1117536256); +emit_32(1112628213); +emit_32(3258679296); +emit_32(1118048263); +emit_32(1112273715); +emit_32(3258679296); +emit_32(1118560256); +emit_32(1111859449); +emit_32(3258679296); +emit_32(1119072263); +emit_32(1111576936); +emit_32(3258679296); +emit_32(1119584256); +emit_32(1111726726); +emit_32(3258679296); +emit_32(1120096263); +emit_32(1111402296); +emit_32(3258679296); +emit_32(1120608322); +emit_32(1110549489); +emit_32(3258679296); +emit_32(1121120289); +emit_32(1110448511); +emit_32(3258679296); +emit_32(1121632256); +emit_32(1110373695); +emit_32(3258679296); +emit_32(1122144223); +emit_32(1110467333); +emit_32(3258679296); +emit_32(1122656322); +emit_32(1110274028); +emit_32(3258679296); +emit_32(1123168289); +emit_32(1109946532); +emit_32(3258679296); +emit_32(1123680256); +emit_32(1109626795); +emit_32(3258679296); +emit_32(1124132848); +emit_32(1109494622); +emit_32(3258679296); +emit_32(1124388897); +emit_32(1109413069); +emit_32(3258679296); +emit_32(1124644880); +emit_32(1109297647); +emit_32(3258679296); +emit_32(1124900864); +emit_32(1109062294); +emit_32(3258679296); +emit_32(1125156848); +emit_32(1108844007); +emit_32(3258679296); +emit_32(1125412897); +emit_32(1108568860); +emit_32(3258679296); +emit_32(1125668880); +emit_32(1108450004); +emit_32(3258679296); +emit_32(1125924864); +emit_32(1108186943); +emit_32(3258679296); +emit_32(1126180848); +emit_32(1107845369); +emit_32(3258679296); +emit_32(1126436897); +emit_32(1107362972); +emit_32(3258679296); +emit_32(1126692880); +emit_32(1106252189); +emit_32(3258679296); +emit_32(1126948864); +emit_32(1105829298); +emit_32(3258679296); +emit_32(1127204848); +emit_32(1105218083); +emit_32(3258679296); +emit_32(1127460897); +emit_32(1104523506); +emit_32(3258679296); +emit_32(1127716880); +emit_32(1104128351); +emit_32(3258679296); +emit_32(1127972864); +emit_32(1103796214); +emit_32(3258679296); +emit_32(1128228848); +emit_32(1103027818); +emit_32(3258679296); +emit_32(1128484897); +emit_32(1101322309); +emit_32(3258679296); +emit_32(1128740880); +emit_32(1100681576); +emit_32(3258679296); +emit_32(1128996864); +emit_32(1099668023); +emit_32(3258679296); +emit_32(1129252848); +emit_32(1099208380); +emit_32(3258679296); +emit_32(1129508897); +emit_32(1097801400); +emit_32(3258679296); +emit_32(1129764880); +emit_32(1095333472); +emit_32(3258679296); +emit_32(1130020864); +emit_32(1094540329); +emit_32(3258679296); +emit_32(1130276848); +emit_32(1092787739); +emit_32(3258679296); +emit_32(1130532897); +emit_32(1092315051); +emit_32(3258679296); +emit_32(1130788880); +emit_32(1091861091); +emit_32(3258679296); +emit_32(1131044864); +emit_32(1091047459); +emit_32(3258679296); +emit_32(1131300848); +emit_32(1091787586); +emit_32(3258679296); +emit_32(1131556897); +emit_32(1091795230); +emit_32(3258679296); +emit_32(1131812880); +emit_32(1091987980); +emit_32(3258679296); +emit_32(1132068864); +emit_32(1091100066); +emit_32(3258679296); +emit_32(1081737216); +emit_32(1114597202); +emit_32(3259703309); +emit_32(1090125824); +emit_32(1114535127); +emit_32(3259703309); +emit_32(1094418484); +emit_32(1114569520); +emit_32(3259703309); +emit_32(1098514432); +emit_32(1114747935); +emit_32(3259703309); +emit_32(1100759066); +emit_32(1114487233); +emit_32(3259703309); +emit_32(1102807040); +emit_32(1114382795); +emit_32(3259703309); +emit_32(1104855066); +emit_32(1113996919); +emit_32(3259703309); +emit_32(1106903040); +emit_32(1114099181); +emit_32(3259703309); +emit_32(1108123661); +emit_32(1113852163); +emit_32(3259703309); +emit_32(1109147648); +emit_32(1113652435); +emit_32(3259703309); +emit_32(1110171661); +emit_32(1113551117); +emit_32(3259703309); +emit_32(1111195648); +emit_32(1113386543); +emit_32(3259703309); +emit_32(1112219661); +emit_32(1113298436); +emit_32(3259703309); +emit_32(1113243648); +emit_32(1112846185); +emit_32(3259703309); +emit_32(1114267661); +emit_32(1112699621); +emit_32(3259703309); +emit_32(1115291648); +emit_32(1112253320); +emit_32(3259703309); +emit_32(1116000263); +emit_32(1112228338); +emit_32(3259703309); +emit_32(1116512256); +emit_32(1112085679); +emit_32(3259703309); +emit_32(1117024263); +emit_32(1112407068); +emit_32(3259703309); +emit_32(1117536256); +emit_32(1112221391); +emit_32(3259703309); +emit_32(1118048263); +emit_32(1111896936); +emit_32(3259703309); +emit_32(1118560256); +emit_32(1111579322); +emit_32(3259703309); +emit_32(1119072263); +emit_32(1111494309); +emit_32(3259703309); +emit_32(1119584256); +emit_32(1111163588); +emit_32(3259703309); +emit_32(1120096263); +emit_32(1110845004); +emit_32(3259703309); +emit_32(1120608322); +emit_32(1110534835); +emit_32(3259703309); +emit_32(1121120289); +emit_32(1110661294); +emit_32(3259703309); +emit_32(1121632256); +emit_32(1110709161); +emit_32(3259703309); +emit_32(1122144223); +emit_32(1110566843); +emit_32(3259703309); +emit_32(1122656322); +emit_32(1110304385); +emit_32(3259703309); +emit_32(1123168289); +emit_32(1109925298); +emit_32(3259703309); +emit_32(1123680256); +emit_32(1109647897); +emit_32(3259703309); +emit_32(1124132848); +emit_32(1109489300); +emit_32(3259703309); +emit_32(1124388897); +emit_32(1109413541); +emit_32(3259703309); +emit_32(1124644880); +emit_32(1109402137); +emit_32(3259703309); +emit_32(1124900864); +emit_32(1108939034); +emit_32(3259703309); +emit_32(1125156848); +emit_32(1108484450); +emit_32(3259703309); +emit_32(1125412897); +emit_32(1108297200); +emit_32(3259703309); +emit_32(1125668880); +emit_32(1108185815); +emit_32(3259703309); +emit_32(1125924864); +emit_32(1108077104); +emit_32(3259703309); +emit_32(1126180848); +emit_32(1107688659); +emit_32(3259703309); +emit_32(1126436897); +emit_32(1107166075); +emit_32(3259703309); +emit_32(1126692880); +emit_32(1105985012); +emit_32(3259703309); +emit_32(1126948864); +emit_32(1104765465); +emit_32(3259703309); +emit_32(1127204848); +emit_32(1103884766); +emit_32(3259703309); +emit_32(1127460897); +emit_32(1103770157); +emit_32(3259703309); +emit_32(1127716880); +emit_32(1103747613); +emit_32(3259703309); +emit_32(1127972864); +emit_32(1103380349); +emit_32(3259703309); +emit_32(1128228848); +emit_32(1102807669); +emit_32(3259703309); +emit_32(1128484897); +emit_32(1101721240); +emit_32(3259703309); +emit_32(1128740880); +emit_32(1100629095); +emit_32(3259703309); +emit_32(1128996864); +emit_32(1099835323); +emit_32(3259703309); +emit_32(1129252848); +emit_32(1098920598); +emit_32(3259703309); +emit_32(1129508897); +emit_32(1096752929); +emit_32(3259703309); +emit_32(1129764880); +emit_32(1095066609); +emit_32(3259703309); +emit_32(1130020864); +emit_32(1093563371); +emit_32(3259703309); +emit_32(1130276848); +emit_32(1092693157); +emit_32(3259703309); +emit_32(1130532897); +emit_32(1091653725); +emit_32(3259703309); +emit_32(1130788880); +emit_32(1091615085); +emit_32(3259703309); +emit_32(1131044864); +emit_32(1091394161); +emit_32(3259703309); +emit_32(1131300848); +emit_32(1091605134); +emit_32(3259703309); +emit_32(1131556897); +emit_32(1091638730); +emit_32(3259703309); +emit_32(1131812880); +emit_32(1091599786); +emit_32(3259703309); +emit_32(1132068864); +emit_32(1092266859); +emit_32(3259703309); +emit_32(1081737216); +emit_32(1114739258); +emit_32(3260727296); +emit_32(1090125824); +emit_32(1114878378); +emit_32(3260727296); +emit_32(1094418484); +emit_32(1114870802); +emit_32(3260727296); +emit_32(1098514432); +emit_32(1114770794); +emit_32(3260727296); +emit_32(1100759066); +emit_32(1114231276); +emit_32(3260727296); +emit_32(1102807040); +emit_32(1114104450); +emit_32(3260727296); +emit_32(1104855066); +emit_32(1113868626); +emit_32(3260727296); +emit_32(1106903040); +emit_32(1113833393); +emit_32(3260727296); +emit_32(1108123661); +emit_32(1113996840); +emit_32(3260727296); +emit_32(1109147648); +emit_32(1113765393); +emit_32(3260727296); +emit_32(1110171661); +emit_32(1113650627); +emit_32(3260727296); +emit_32(1111195648); +emit_32(1113342896); +emit_32(3260727296); +emit_32(1112219661); +emit_32(1113156380); +emit_32(3260727296); +emit_32(1113243648); +emit_32(1112582154); +emit_32(3260727296); +emit_32(1114267661); +emit_32(1112346277); +emit_32(3260727296); +emit_32(1115291648); +emit_32(1111870249); +emit_32(3260727296); +emit_32(1116000263); +emit_32(1111605930); +emit_32(3260727296); +emit_32(1116512256); +emit_32(1111495305); +emit_32(3260727296); +emit_32(1117024263); +emit_32(1111701219); +emit_32(3260727296); +emit_32(1117536256); +emit_32(1111545768); +emit_32(3260727296); +emit_32(1118048263); +emit_32(1111442876); +emit_32(3260727296); +emit_32(1118560256); +emit_32(1111332802); +emit_32(3260727296); +emit_32(1119072263); +emit_32(1111091472); +emit_32(3260727296); +emit_32(1119584256); +emit_32(1110805001); +emit_32(3260727296); +emit_32(1120096263); +emit_32(1110581864); +emit_32(3260727296); +emit_32(1120608322); +emit_32(1110742008); +emit_32(3260727296); +emit_32(1121120289); +emit_32(1110855516); +emit_32(3260727296); +emit_32(1121632256); +emit_32(1110816168); +emit_32(3260727296); +emit_32(1122144223); +emit_32(1110551665); +emit_32(3260727296); +emit_32(1122656322); +emit_32(1110342579); +emit_32(3260727296); +emit_32(1123168289); +emit_32(1110183327); +emit_32(3260727296); +emit_32(1123680256); +emit_32(1109713040); +emit_32(3260727296); +emit_32(1124132848); +emit_32(1109405598); +emit_32(3260727296); +emit_32(1124388897); +emit_32(1109483874); +emit_32(3260727296); +emit_32(1124644880); +emit_32(1109243252); +emit_32(3260727296); +emit_32(1124900864); +emit_32(1108683915); +emit_32(3260727296); +emit_32(1125156848); +emit_32(1108334268); +emit_32(3260727296); +emit_32(1125412897); +emit_32(1108021346); +emit_32(3260727296); +emit_32(1125668880); +emit_32(1107650229); +emit_32(3260727296); +emit_32(1125924864); +emit_32(1107734875); +emit_32(3260727296); +emit_32(1126180848); +emit_32(1107447356); +emit_32(3260727296); +emit_32(1126436897); +emit_32(1106611641); +emit_32(3260727296); +emit_32(1126692880); +emit_32(1105656650); +emit_32(3260727296); +emit_32(1126948864); +emit_32(1104580601); +emit_32(3260727296); +emit_32(1127204848); +emit_32(1103477447); +emit_32(3260727296); +emit_32(1127460897); +emit_32(1102867753); +emit_32(3260727296); +emit_32(1127716880); +emit_32(1102847882); +emit_32(3260727296); +emit_32(1127972864); +emit_32(1102763996); +emit_32(3260727296); +emit_32(1128228848); +emit_32(1102458913); +emit_32(3260727296); +emit_32(1128484897); +emit_32(1102197083); +emit_32(3260727296); +emit_32(1128740880); +emit_32(1101514251); +emit_32(3260727296); +emit_32(1128996864); +emit_32(1100242957); +emit_32(3260727296); +emit_32(1129252848); +emit_32(1098935488); +emit_32(3260727296); +emit_32(1129508897); +emit_32(1096397147); +emit_32(3260727296); +emit_32(1129764880); +emit_32(1093735442); +emit_32(3260727296); +emit_32(1130020864); +emit_32(1092509887); +emit_32(3260727296); +emit_32(1130276848); +emit_32(1092214797); +emit_32(3260727296); +emit_32(1130532897); +emit_32(1091179916); +emit_32(3260727296); +emit_32(1130788880); +emit_32(1091523565); +emit_32(3260727296); +emit_32(1131044864); +emit_32(1091405317); +emit_32(3260727296); +emit_32(1131300848); +emit_32(1091481213); +emit_32(3260727296); +emit_32(1131556897); +emit_32(1091769446); +emit_32(3260727296); +emit_32(1131812880); +emit_32(1091742634); +emit_32(3260727296); +emit_32(1132068864); +emit_32(1092008249); +emit_32(3260727296); +emit_32(1081737216); +emit_32(1115049086); +emit_32(3261751309); +emit_32(1090125824); +emit_32(1114962395); +emit_32(3261751309); +emit_32(1094418484); +emit_32(1114740674); +emit_32(3261751309); +emit_32(1098514432); +emit_32(1114486001); +emit_32(3261751309); +emit_32(1100759066); +emit_32(1114250779); +emit_32(3261751309); +emit_32(1102807040); +emit_32(1113755799); +emit_32(3261751309); +emit_32(1104855066); +emit_32(1113604699); +emit_32(3261751309); +emit_32(1106903040); +emit_32(1113715717); +emit_32(3261751309); +emit_32(1108123661); +emit_32(1113733516); +emit_32(3261751309); +emit_32(1109147648); +emit_32(1113783009); +emit_32(3261751309); +emit_32(1110171661); +emit_32(1113496093); +emit_32(3261751309); +emit_32(1111195648); +emit_32(1113237016); +emit_32(3261751309); +emit_32(1112219661); +emit_32(1112990181); +emit_32(3261751309); +emit_32(1113243648); +emit_32(1112521022); +emit_32(3261751309); +emit_32(1114267661); +emit_32(1112125315); +emit_32(3261751309); +emit_32(1115291648); +emit_32(1111604671); +emit_32(3261751309); +emit_32(1116000263); +emit_32(1111264408); +emit_32(3261751309); +emit_32(1116512256); +emit_32(1110967242); +emit_32(3261751309); +emit_32(1117024263); +emit_32(1110960898); +emit_32(3261751309); +emit_32(1117536256); +emit_32(1110766938); +emit_32(3261751309); +emit_32(1118048263); +emit_32(1110773334); +emit_32(3261751309); +emit_32(1118560256); +emit_32(1110772364); +emit_32(3261751309); +emit_32(1119072263); +emit_32(1110784763); +emit_32(3261751309); +emit_32(1119584256); +emit_32(1110671203); +emit_32(3261751309); +emit_32(1120096263); +emit_32(1110537562); +emit_32(3261751309); +emit_32(1120608322); +emit_32(1110731470); +emit_32(3261751309); +emit_32(1121120289); +emit_32(1110870222); +emit_32(3261751309); +emit_32(1121632256); +emit_32(1110602652); +emit_32(3261751309); +emit_32(1122144223); +emit_32(1110529357); +emit_32(3261751309); +emit_32(1122656322); +emit_32(1110527626); +emit_32(3261751309); +emit_32(1123168289); +emit_32(1110155303); +emit_32(3261751309); +emit_32(1123680256); +emit_32(1109558559); +emit_32(3261751309); +emit_32(1124132848); +emit_32(1109729686); +emit_32(3261751309); +emit_32(1124388897); +emit_32(1109466835); +emit_32(3261751309); +emit_32(1124644880); +emit_32(1109238455); +emit_32(3261751309); +emit_32(1124900864); +emit_32(1108631067); +emit_32(3261751309); +emit_32(1125156848); +emit_32(1108053590); +emit_32(3261751309); +emit_32(1125412897); +emit_32(1107431549); +emit_32(3261751309); +emit_32(1125668880); +emit_32(1107275127); +emit_32(3261751309); +emit_32(1125924864); +emit_32(1107085807); +emit_32(3261751309); +emit_32(1126180848); +emit_32(1106875043); +emit_32(3261751309); +emit_32(1126436897); +emit_32(1106465207); +emit_32(3261751309); +emit_32(1126692880); +emit_32(1105739330); +emit_32(3261751309); +emit_32(1126948864); +emit_32(1104828380); +emit_32(3261751309); +emit_32(1127204848); +emit_32(1104194306); +emit_32(3261751309); +emit_32(1127460897); +emit_32(1103488510); +emit_32(3261751309); +emit_32(1127716880); +emit_32(1102913680); +emit_32(3261751309); +emit_32(1127972864); +emit_32(1102738044); +emit_32(3261751309); +emit_32(1128228848); +emit_32(1102513753); +emit_32(3261751309); +emit_32(1128484897); +emit_32(1102220624); +emit_32(3261751309); +emit_32(1128740880); +emit_32(1101685640); +emit_32(3261751309); +emit_32(1128996864); +emit_32(1100932081); +emit_32(3261751309); +emit_32(1129252848); +emit_32(1099376414); +emit_32(3261751309); +emit_32(1129508897); +emit_32(1096550344); +emit_32(3261751309); +emit_32(1129764880); +emit_32(1094603244); +emit_32(3261751309); +emit_32(1130020864); +emit_32(1092245762); +emit_32(3261751309); +emit_32(1130276848); +emit_32(1091851801); +emit_32(3261751309); +emit_32(1130532897); +emit_32(1091990360); +emit_32(3261751309); +emit_32(1130788880); +emit_32(1091469343); +emit_32(3261751309); +emit_32(1131044864); +emit_32(1091186889); +emit_32(3261751309); +emit_32(1131300848); +emit_32(1091680191); +emit_32(3261751309); +emit_32(1131556897); +emit_32(1092249820); +emit_32(3261751309); +emit_32(1131812880); +emit_32(1091787240); +emit_32(3261751309); +emit_32(1132068864); +emit_32(1092823076); +emit_32(3261751309); +emit_32(1081737216); +emit_32(1115189700); +emit_32(3262775296); +emit_32(1090125824); +emit_32(1114804086); +emit_32(3262775296); +emit_32(1094418484); +emit_32(1114524457); +emit_32(3262775296); +emit_32(1098514432); +emit_32(1114431554); +emit_32(3262775296); +emit_32(1100759066); +emit_32(1113978044); +emit_32(3262775296); +emit_32(1102807040); +emit_32(1113530381); +emit_32(3262775296); +emit_32(1104855066); +emit_32(1113581814); +emit_32(3262775296); +emit_32(1106903040); +emit_32(1113583963); +emit_32(3262775296); +emit_32(1108123661); +emit_32(1113510458); +emit_32(3262775296); +emit_32(1109147648); +emit_32(1113580162); +emit_32(3262775296); +emit_32(1110171661); +emit_32(1113244408); +emit_32(3262775296); +emit_32(1111195648); +emit_32(1113012699); +emit_32(3262775296); +emit_32(1112219661); +emit_32(1112648765); +emit_32(3262775296); +emit_32(1113243648); +emit_32(1112238483); +emit_32(3262775296); +emit_32(1114267661); +emit_32(1111804976); +emit_32(3262775296); +emit_32(1115291648); +emit_32(1111412362); +emit_32(3262775296); +emit_32(1116000263); +emit_32(1110827074); +emit_32(3262775296); +emit_32(1116512256); +emit_32(1110530694); +emit_32(3262775296); +emit_32(1117024263); +emit_32(1110239399); +emit_32(3262775296); +emit_32(1117536256); +emit_32(1110405048); +emit_32(3262775296); +emit_32(1118048263); +emit_32(1110532476); +emit_32(3262775296); +emit_32(1118560256); +emit_32(1110521885); +emit_32(3262775296); +emit_32(1119072263); +emit_32(1110500757); +emit_32(3262775296); +emit_32(1119584256); +emit_32(1110457372); +emit_32(3262775296); +emit_32(1120096263); +emit_32(1110371651); +emit_32(3262775296); +emit_32(1120608322); +emit_32(1110583332); +emit_32(3262775296); +emit_32(1121120289); +emit_32(1110579793); +emit_32(3262775296); +emit_32(1121632256); +emit_32(1110326510); +emit_32(3262775296); +emit_32(1122144223); +emit_32(1110576044); +emit_32(3262775296); +emit_32(1122656322); +emit_32(1110255731); +emit_32(3262775296); +emit_32(1123168289); +emit_32(1109817767); +emit_32(3262775296); +emit_32(1123680256); +emit_32(1109393120); +emit_32(3262775296); +emit_32(1124132848); +emit_32(1109645407); +emit_32(3262775296); +emit_32(1124388897); +emit_32(1109352881); +emit_32(3262775296); +emit_32(1124644880); +emit_32(1109118131); +emit_32(3262775296); +emit_32(1124900864); +emit_32(1108538950); +emit_32(3262775296); +emit_32(1125156848); +emit_32(1108056028); +emit_32(3262775296); +emit_32(1125412897); +emit_32(1107693981); +emit_32(3262775296); +emit_32(1125668880); +emit_32(1107060169); +emit_32(3262775296); +emit_32(1125924864); +emit_32(1106929307); +emit_32(3262775296); +emit_32(1126180848); +emit_32(1106668945); +emit_32(3262775296); +emit_32(1126436897); +emit_32(1106423893); +emit_32(3262775296); +emit_32(1126692880); +emit_32(1106097157); +emit_32(3262775296); +emit_32(1126948864); +emit_32(1105689628); +emit_32(3262775296); +emit_32(1127204848); +emit_32(1104863822); +emit_32(3262775296); +emit_32(1127460897); +emit_32(1104431232); +emit_32(3262775296); +emit_32(1127716880); +emit_32(1103727061); +emit_32(3262775296); +emit_32(1127972864); +emit_32(1103036154); +emit_32(3262775296); +emit_32(1128228848); +emit_32(1102391227); +emit_32(3262775296); +emit_32(1128484897); +emit_32(1102074977); +emit_32(3262775296); +emit_32(1128740880); +emit_32(1101512049); +emit_32(3262775296); +emit_32(1128996864); +emit_32(1100231108); +emit_32(3262775296); +emit_32(1129252848); +emit_32(1098399508); +emit_32(3262775296); +emit_32(1129508897); +emit_32(1096015571); +emit_32(3262775296); +emit_32(1129764880); +emit_32(1093673366); +emit_32(3262775296); +emit_32(1130020864); +emit_32(1092539069); +emit_32(3262775296); +emit_32(1130276848); +emit_32(1092267928); +emit_32(3262775296); +emit_32(1130532897); +emit_32(1092764041); +emit_32(3262775296); +emit_32(1130788880); +emit_32(1092150519); +emit_32(3262775296); +emit_32(1131044864); +emit_32(1091502594); +emit_32(3262775296); +emit_32(1131300848); +emit_32(1091946980); +emit_32(3262775296); +emit_32(1131556897); +emit_32(1091906568); +emit_32(3262775296); +emit_32(1131812880); +emit_32(1092505546); +emit_32(3262775296); +emit_32(1132068864); +emit_32(1093985842); +emit_32(3262775296); +emit_32(1081737216); +emit_32(1114860919); +emit_32(3263483911); +emit_32(1090125824); +emit_32(1114455068); +emit_32(3263483911); +emit_32(1094418484); +emit_32(1114274320); +emit_32(3263483911); +emit_32(1098514432); +emit_32(1113998492); +emit_32(3263483911); +emit_32(1100759066); +emit_32(1113229912); +emit_32(3263483911); +emit_32(1102807040); +emit_32(1112963364); +emit_32(3263483911); +emit_32(1104855066); +emit_32(1113085549); +emit_32(3263483911); +emit_32(1106903040); +emit_32(1113193500); +emit_32(3263483911); +emit_32(1108123661); +emit_32(1113051339); +emit_32(3263483911); +emit_32(1109147648); +emit_32(1112914631); +emit_32(3263483911); +emit_32(1110171661); +emit_32(1112713593); +emit_32(3263483911); +emit_32(1111195648); +emit_32(1112530774); +emit_32(3263483911); +emit_32(1112219661); +emit_32(1112319538); +emit_32(3263483911); +emit_32(1113243648); +emit_32(1112017836); +emit_32(3263483911); +emit_32(1114267661); +emit_32(1111480022); +emit_32(3263483911); +emit_32(1115291648); +emit_32(1111044889); +emit_32(3263483911); +emit_32(1116000263); +emit_32(1110559058); +emit_32(3263483911); +emit_32(1116512256); +emit_32(1109970151); +emit_32(3263483911); +emit_32(1117024263); +emit_32(1109713014); +emit_32(3263483911); +emit_32(1117536256); +emit_32(1109844532); +emit_32(3263483911); +emit_32(1118048263); +emit_32(1110110713); +emit_32(3263483911); +emit_32(1118560256); +emit_32(1110168096); +emit_32(3263483911); +emit_32(1119072263); +emit_32(1110188910); +emit_32(3263483911); +emit_32(1119584256); +emit_32(1110300531); +emit_32(3263483911); +emit_32(1120096263); +emit_32(1110086438); +emit_32(3263483911); +emit_32(1120608322); +emit_32(1110098418); +emit_32(3263483911); +emit_32(1121120289); +emit_32(1110207470); +emit_32(3263483911); +emit_32(1121632256); +emit_32(1110104814); +emit_32(3263483911); +emit_32(1122144223); +emit_32(1110042057); +emit_32(3263483911); +emit_32(1122656322); +emit_32(1109977963); +emit_32(3263483911); +emit_32(1123168289); +emit_32(1109719017); +emit_32(3263483911); +emit_32(1123680256); +emit_32(1109491371); +emit_32(3263483911); +emit_32(1124132848); +emit_32(1109439493); +emit_32(3263483911); +emit_32(1124388897); +emit_32(1109273372); +emit_32(3263483911); +emit_32(1124644880); +emit_32(1109142720); +emit_32(3263483911); +emit_32(1124900864); +emit_32(1108647110); +emit_32(3263483911); +emit_32(1125156848); +emit_32(1108078520); +emit_32(3263483911); +emit_32(1125412897); +emit_32(1107629520); +emit_32(3263483911); +emit_32(1125668880); +emit_32(1107405963); +emit_32(3263483911); +emit_32(1125924864); +emit_32(1107180388); +emit_32(3263483911); +emit_32(1126180848); +emit_32(1106634447); +emit_32(3263483911); +emit_32(1126436897); +emit_32(1106537297); +emit_32(3263483911); +emit_32(1126692880); +emit_32(1106021869); +emit_32(3263483911); +emit_32(1126948864); +emit_32(1105710599); +emit_32(3263483911); +emit_32(1127204848); +emit_32(1104910693); +emit_32(3263483911); +emit_32(1127460897); +emit_32(1104565083); +emit_32(3263483911); +emit_32(1127716880); +emit_32(1103934836); +emit_32(3263483911); +emit_32(1127972864); +emit_32(1103249120); +emit_32(3263483911); +emit_32(1128228848); +emit_32(1102145336); +emit_32(3263483911); +emit_32(1128484897); +emit_32(1101411962); +emit_32(3263483911); +emit_32(1128740880); +emit_32(1100959711); +emit_32(3263483911); +emit_32(1128996864); +emit_32(1099510055); +emit_32(3263483911); +emit_32(1129252848); +emit_32(1096815005); +emit_32(3263483911); +emit_32(1129508897); +emit_32(1094088393); +emit_32(3263483911); +emit_32(1129764880); +emit_32(1092617450); +emit_32(3263483911); +emit_32(1130020864); +emit_32(1091201757); +emit_32(3263483911); +emit_32(1130276848); +emit_32(1091975481); +emit_32(3263483911); +emit_32(1130532897); +emit_32(1092051219); +emit_32(3263483911); +emit_32(1130788880); +emit_32(1091427243); +emit_32(3263483911); +emit_32(1131044864); +emit_32(1091236570); +emit_32(3263483911); +emit_32(1131300848); +emit_32(1092364376); +emit_32(3263483911); +emit_32(1131556897); +emit_32(1093015385); +emit_32(3263483911); +emit_32(1131812880); +emit_32(1093629116); +emit_32(3263483911); +emit_32(1132068864); +emit_32(1094121318); +emit_32(3263483911); +emit_32(1081737216); +emit_32(1114412994); +emit_32(3263995904); +emit_32(1090125824); +emit_32(1114056740); +emit_32(3263995904); +emit_32(1094418484); +emit_32(1113478634); +emit_32(3263995904); +emit_32(1098514432); +emit_32(1113153890); +emit_32(3263995904); +emit_32(1100759066); +emit_32(1112554235); +emit_32(3263995904); +emit_32(1102807040); +emit_32(1112170430); +emit_32(3263995904); +emit_32(1104855066); +emit_32(1112241550); +emit_32(3263995904); +emit_32(1106903040); +emit_32(1112360406); +emit_32(3263995904); +emit_32(1108123661); +emit_32(1112453310); +emit_32(3263995904); +emit_32(1109147648); +emit_32(1112310127); +emit_32(3263995904); +emit_32(1110171661); +emit_32(1112440544); +emit_32(3263995904); +emit_32(1111195648); +emit_32(1111943545); +emit_32(3263995904); +emit_32(1112219661); +emit_32(1111698283); +emit_32(3263995904); +emit_32(1113243648); +emit_32(1111330233); +emit_32(3263995904); +emit_32(1114267661); +emit_32(1111083634); +emit_32(3263995904); +emit_32(1115291648); +emit_32(1110768275); +emit_32(3263995904); +emit_32(1116000263); +emit_32(1110145158); +emit_32(3263995904); +emit_32(1116512256); +emit_32(1109629941); +emit_32(3263995904); +emit_32(1117024263); +emit_32(1109269781); +emit_32(3263995904); +emit_32(1117536256); +emit_32(1109302287); +emit_32(3263995904); +emit_32(1118048263); +emit_32(1109529015); +emit_32(3263995904); +emit_32(1118560256); +emit_32(1109660900); +emit_32(3263995904); +emit_32(1119072263); +emit_32(1109901076); +emit_32(3263995904); +emit_32(1119584256); +emit_32(1109952850); +emit_32(3263995904); +emit_32(1120096263); +emit_32(1109778733); +emit_32(3263995904); +emit_32(1120608322); +emit_32(1109570460); +emit_32(3263995904); +emit_32(1121120289); +emit_32(1109713381); +emit_32(3263995904); +emit_32(1121632256); +emit_32(1109646849); +emit_32(3263995904); +emit_32(1122144223); +emit_32(1109683837); +emit_32(3263995904); +emit_32(1122656322); +emit_32(1109578377); +emit_32(3263995904); +emit_32(1123168289); +emit_32(1109348975); +emit_32(3263995904); +emit_32(1123680256); +emit_32(1109644804); +emit_32(3263995904); +emit_32(1124132848); +emit_32(1109851662); +emit_32(3263995904); +emit_32(1124388897); +emit_32(1109688451); +emit_32(3263995904); +emit_32(1124644880); +emit_32(1109357599); +emit_32(3263995904); +emit_32(1124900864); +emit_32(1108828593); +emit_32(3263995904); +emit_32(1125156848); +emit_32(1108185291); +emit_32(3263995904); +emit_32(1125412897); +emit_32(1107780226); +emit_32(3263995904); +emit_32(1125668880); +emit_32(1107584457); +emit_32(3263995904); +emit_32(1125924864); +emit_32(1107420958); +emit_32(3263995904); +emit_32(1126180848); +emit_32(1107022525); +emit_32(3263995904); +emit_32(1126436897); +emit_32(1105944170); +emit_32(3263995904); +emit_32(1126692880); +emit_32(1105239946); +emit_32(3263995904); +emit_32(1126948864); +emit_32(1105095295); +emit_32(3263995904); +emit_32(1127204848); +emit_32(1104538816); +emit_32(3263995904); +emit_32(1127460897); +emit_32(1103876692); +emit_32(3263995904); +emit_32(1127716880); +emit_32(1103498786); +emit_32(3263995904); +emit_32(1127972864); +emit_32(1102542589); +emit_32(3263995904); +emit_32(1128228848); +emit_32(1101655913); +emit_32(3263995904); +emit_32(1128484897); +emit_32(1100746955); +emit_32(3263995904); +emit_32(1128740880); +emit_32(1099747662); +emit_32(3263995904); +emit_32(1128996864); +emit_32(1098190422); +emit_32(3263995904); +emit_32(1129252848); +emit_32(1095504599); +emit_32(3263995904); +emit_32(1129508897); +emit_32(1092998503); +emit_32(3263995904); +emit_32(1129764880); +emit_32(1090781394); +emit_32(3263995904); +emit_32(1130020864); +emit_32(1090669165); +emit_32(3263995904); +emit_32(1130276848); +emit_32(1091201548); +emit_32(3263995904); +emit_32(1130532897); +emit_32(1091148238); +emit_32(3263995904); +emit_32(1130788880); +emit_32(1091128944); +emit_32(3263995904); +emit_32(1131044864); +emit_32(1091988745); +emit_32(3263995904); +emit_32(1131300848); +emit_32(1092577195); +emit_32(3263995904); +emit_32(1131556897); +emit_32(1092426756); +emit_32(3263995904); +emit_32(1131812880); +emit_32(1092938944); +emit_32(3263995904); +emit_32(1132068864); +emit_32(1093077985); +emit_32(3263995904); +emit_32(1081737216); +emit_32(1113723162); +emit_32(3264507911); +emit_32(1090125824); +emit_32(1113515282); +emit_32(3264507911); +emit_32(1094418484); +emit_32(1112907160); +emit_32(3264507911); +emit_32(1098514432); +emit_32(1112285197); +emit_32(3264507911); +emit_32(1100759066); +emit_32(1111782615); +emit_32(3264507911); +emit_32(1102807040); +emit_32(1111448565); +emit_32(3264507911); +emit_32(1104855066); +emit_32(1111432364); +emit_32(3264507911); +emit_32(1106903040); +emit_32(1111593242); +emit_32(3264507911); +emit_32(1108123661); +emit_32(1111556175); +emit_32(3264507911); +emit_32(1109147648); +emit_32(1111791947); +emit_32(3264507911); +emit_32(1110171661); +emit_32(1111706147); +emit_32(3264507911); +emit_32(1111195648); +emit_32(1111342658); +emit_32(3264507911); +emit_32(1112219661); +emit_32(1111241785); +emit_32(3264507911); +emit_32(1113243648); +emit_32(1110814700); +emit_32(3264507911); +emit_32(1114267661); +emit_32(1110530720); +emit_32(3264507911); +emit_32(1115291648); +emit_32(1110173496); +emit_32(3264507911); +emit_32(1116000263); +emit_32(1109779887); +emit_32(3264507911); +emit_32(1116512256); +emit_32(1109242701); +emit_32(3264507911); +emit_32(1117024263); +emit_32(1108763528); +emit_32(3264507911); +emit_32(1117536256); +emit_32(1108823140); +emit_32(3264507911); +emit_32(1118048263); +emit_32(1109120202); +emit_32(3264507911); +emit_32(1118560256); +emit_32(1109432205); +emit_32(3264507911); +emit_32(1119072263); +emit_32(1109682684); +emit_32(3264507911); +emit_32(1119584256); +emit_32(1109558821); +emit_32(3264507911); +emit_32(1120096263); +emit_32(1109416031); +emit_32(3264507911); +emit_32(1120608322); +emit_32(1109479208); +emit_32(3264507911); +emit_32(1121120289); +emit_32(1109404235); +emit_32(3264507911); +emit_32(1121632256); +emit_32(1109406882); +emit_32(3264507911); +emit_32(1122144223); +emit_32(1109258378); +emit_32(3264507911); +emit_32(1122656322); +emit_32(1109286008); +emit_32(3264507911); +emit_32(1123168289); +emit_32(1109433857); +emit_32(3264507911); +emit_32(1123680256); +emit_32(1109483166); +emit_32(3264507911); +emit_32(1124132848); +emit_32(1109859762); +emit_32(3264507911); +emit_32(1124388897); +emit_32(1109785995); +emit_32(3264507911); +emit_32(1124644880); +emit_32(1109694218); +emit_32(3264507911); +emit_32(1124900864); +emit_32(1109081588); +emit_32(3264507911); +emit_32(1125156848); +emit_32(1108301316); +emit_32(3264507911); +emit_32(1125412897); +emit_32(1107987923); +emit_32(3264507911); +emit_32(1125668880); +emit_32(1107744208); +emit_32(3264507911); +emit_32(1125924864); +emit_32(1107483348); +emit_32(3264507911); +emit_32(1126180848); +emit_32(1106653741); +emit_32(3264507911); +emit_32(1126436897); +emit_32(1105289282); +emit_32(3264507911); +emit_32(1126692880); +emit_32(1104749946); +emit_32(3264507911); +emit_32(1126948864); +emit_32(1104530532); +emit_32(3264507911); +emit_32(1127204848); +emit_32(1104035552); +emit_32(3264507911); +emit_32(1127460897); +emit_32(1103561123); +emit_32(3264507911); +emit_32(1127716880); +emit_32(1102839493); +emit_32(3264507911); +emit_32(1127972864); +emit_32(1102745908); +emit_32(3264507911); +emit_32(1128228848); +emit_32(1102238083); +emit_32(3264507911); +emit_32(1128484897); +emit_32(1101176504); +emit_32(3264507911); +emit_32(1128740880); +emit_32(1099585395); +emit_32(3264507911); +emit_32(1128996864); +emit_32(1097910033); +emit_32(3264507911); +emit_32(1129252848); +emit_32(1094998662); +emit_32(3264507911); +emit_32(1129508897); +emit_32(1092197905); +emit_32(3264507911); +emit_32(1129764880); +emit_32(1089185482); +emit_32(3264507911); +emit_32(1130020864); +emit_32(1088998898); +emit_32(3264507911); +emit_32(1130276848); +emit_32(1090896014); +emit_32(3264507911); +emit_32(1130532897); +emit_32(1090711286); +emit_32(3264507911); +emit_32(1130788880); +emit_32(1091554068); +emit_32(3264507911); +emit_32(1131044864); +emit_32(1091546760); +emit_32(3264507911); +emit_32(1131300848); +emit_32(1091602523); +emit_32(3264507911); +emit_32(1131556897); +emit_32(1091448749); +emit_32(3264507911); +emit_32(1131812880); +emit_32(1091178993); +emit_32(3264507911); +emit_32(1132068864); +emit_32(1092283059); +emit_32(3264507911); +emit_32(1081737216); +emit_32(1113178820); +emit_32(3265019904); +emit_32(1090125824); +emit_32(1112815043); +emit_32(3265019904); +emit_32(1094418484); +emit_32(1112334769); +emit_32(3265019904); +emit_32(1098514432); +emit_32(1111680641); +emit_32(3265019904); +emit_32(1100759066); +emit_32(1110962104); +emit_32(3265019904); +emit_32(1102807040); +emit_32(1110710079); +emit_32(3265019904); +emit_32(1104855066); +emit_32(1110785366); +emit_32(3265019904); +emit_32(1106903040); +emit_32(1110945956); +emit_32(3265019904); +emit_32(1108123661); +emit_32(1111176643); +emit_32(3265019904); +emit_32(1109147648); +emit_32(1111187364); +emit_32(3265019904); +emit_32(1110171661); +emit_32(1110966901); +emit_32(3265019904); +emit_32(1111195648); +emit_32(1110878952); +emit_32(3265019904); +emit_32(1112219661); +emit_32(1110825343); +emit_32(3265019904); +emit_32(1113243648); +emit_32(1110299718); +emit_32(3265019904); +emit_32(1114267661); +emit_32(1109951067); +emit_32(3265019904); +emit_32(1115291648); +emit_32(1109657859); +emit_32(3265019904); +emit_32(1116000263); +emit_32(1109104185); +emit_32(3265019904); +emit_32(1116512256); +emit_32(1108869644); +emit_32(3265019904); +emit_32(1117024263); +emit_32(1108483296); +emit_32(3265019904); +emit_32(1117536256); +emit_32(1108620057); +emit_32(3265019904); +emit_32(1118048263); +emit_32(1108696603); +emit_32(3265019904); +emit_32(1118560256); +emit_32(1109027874); +emit_32(3265019904); +emit_32(1119072263); +emit_32(1109328580); +emit_32(3265019904); +emit_32(1119584256); +emit_32(1109485499); +emit_32(3265019904); +emit_32(1120096263); +emit_32(1109574785); +emit_32(3265019904); +emit_32(1120608322); +emit_32(1109596203); +emit_32(3265019904); +emit_32(1121120289); +emit_32(1109472235); +emit_32(3265019904); +emit_32(1121632256); +emit_32(1109210510); +emit_32(3265019904); +emit_32(1122144223); +emit_32(1109167152); +emit_32(3265019904); +emit_32(1122656322); +emit_32(1109362999); +emit_32(3265019904); +emit_32(1123168289); +emit_32(1109542149); +emit_32(3265019904); +emit_32(1123680256); +emit_32(1109608156); +emit_32(3265019904); +emit_32(1124132848); +emit_32(1109889647); +emit_32(3265019904); +emit_32(1124388897); +emit_32(1110013300); +emit_32(3265019904); +emit_32(1124644880); +emit_32(1109719908); +emit_32(3265019904); +emit_32(1124900864); +emit_32(1109054299); +emit_32(3265019904); +emit_32(1125156848); +emit_32(1108598561); +emit_32(3265019904); +emit_32(1125412897); +emit_32(1108352696); +emit_32(3265019904); +emit_32(1125668880); +emit_32(1107819128); +emit_32(3265019904); +emit_32(1125924864); +emit_32(1107355868); +emit_32(3265019904); +emit_32(1126180848); +emit_32(1106496193); +emit_32(3265019904); +emit_32(1126436897); +emit_32(1105447564); +emit_32(3265019904); +emit_32(1126692880); +emit_32(1104791208); +emit_32(3265019904); +emit_32(1126948864); +emit_32(1104514122); +emit_32(3265019904); +emit_32(1127204848); +emit_32(1103658956); +emit_32(3265019904); +emit_32(1127460897); +emit_32(1103186887); +emit_32(3265019904); +emit_32(1127716880); +emit_32(1103111179); +emit_32(3265019904); +emit_32(1127972864); +emit_32(1103121823); +emit_32(3265019904); +emit_32(1128228848); +emit_32(1102278872); +emit_32(3265019904); +emit_32(1128484897); +emit_32(1100851603); +emit_32(3265019904); +emit_32(1128740880); +emit_32(1099479699); +emit_32(3265019904); +emit_32(1128996864); +emit_32(1097632580); +emit_32(3265019904); +emit_32(1129252848); +emit_32(1094591185); +emit_32(3265019904); +emit_32(1129508897); +emit_32(1091931629); +emit_32(3265019904); +emit_32(1129764880); +emit_32(1088905806); +emit_32(3265019904); +emit_32(1130020864); +emit_32(1090343655); +emit_32(3265019904); +emit_32(1130276848); +emit_32(1091249918); +emit_32(3265019904); +emit_32(1130532897); +emit_32(1091107417); +emit_32(3265019904); +emit_32(1130788880); +emit_32(1092474068); +emit_32(3265019904); +emit_32(1131044864); +emit_32(1091844765); +emit_32(3265019904); +emit_32(1131300848); +emit_32(1091016830); +emit_32(3265019904); +emit_32(1131556897); +emit_32(1090180560); +emit_32(3265019904); +emit_32(1131812880); +emit_32(1090146502); +emit_32(3265019904); +emit_32(1132068864); +emit_32(1091238625); +emit_32(3265019904); +emit_32(1081737216); +emit_32(1112525767); +emit_32(3265531911); +emit_32(1090125824); +emit_32(1112045230); +emit_32(3265531911); +emit_32(1094418484); +emit_32(1111728246); +emit_32(3265531911); +emit_32(1098514432); +emit_32(1111134490); +emit_32(3265531911); +emit_32(1100759066); +emit_32(1110592061); +emit_32(3265531911); +emit_32(1102807040); +emit_32(1110293873); +emit_32(3265531911); +emit_32(1104855066); +emit_32(1110356761); +emit_32(3265531911); +emit_32(1106903040); +emit_32(1110662159); +emit_32(3265531911); +emit_32(1108123661); +emit_32(1110710760); +emit_32(3265531911); +emit_32(1109147648); +emit_32(1110634267); +emit_32(3265531911); +emit_32(1110171661); +emit_32(1110559556); +emit_32(3265531911); +emit_32(1111195648); +emit_32(1110659144); +emit_32(3265531911); +emit_32(1112219661); +emit_32(1110325251); +emit_32(3265531911); +emit_32(1113243648); +emit_32(1109714954); +emit_32(3265531911); +emit_32(1114267661); +emit_32(1109517035); +emit_32(3265531911); +emit_32(1115291648); +emit_32(1108983441); +emit_32(3265531911); +emit_32(1116000263); +emit_32(1108437998); +emit_32(3265531911); +emit_32(1116512256); +emit_32(1108232687); +emit_32(3265531911); +emit_32(1117024263); +emit_32(1108084497); +emit_32(3265531911); +emit_32(1117536256); +emit_32(1108299979); +emit_32(3265531911); +emit_32(1118048263); +emit_32(1108631434); +emit_32(3265531911); +emit_32(1118560256); +emit_32(1108895544); +emit_32(3265531911); +emit_32(1119072263); +emit_32(1109120306); +emit_32(3265531911); +emit_32(1119584256); +emit_32(1109413095); +emit_32(3265531911); +emit_32(1120096263); +emit_32(1109497977); +emit_32(3265531911); +emit_32(1120608322); +emit_32(1109458603); +emit_32(3265531911); +emit_32(1121120289); +emit_32(1109373328); +emit_32(3265531911); +emit_32(1121632256); +emit_32(1109400669); +emit_32(3265531911); +emit_32(1122144223); +emit_32(1109567655); +emit_32(3265531911); +emit_32(1122656322); +emit_32(1109574287); +emit_32(3265531911); +emit_32(1123168289); +emit_32(1109599375); +emit_32(3265531911); +emit_32(1123680256); +emit_32(1109804660); +emit_32(3265531911); +emit_32(1124132848); +emit_32(1109874704); +emit_32(3265531911); +emit_32(1124388897); +emit_32(1109814254); +emit_32(3265531911); +emit_32(1124644880); +emit_32(1109294763); +emit_32(3265531911); +emit_32(1124900864); +emit_32(1109046460); +emit_32(3265531911); +emit_32(1125156848); +emit_32(1108605901); +emit_32(3265531911); +emit_32(1125412897); +emit_32(1108298039); +emit_32(3265531911); +emit_32(1125668880); +emit_32(1108029997); +emit_32(3265531911); +emit_32(1125924864); +emit_32(1107621262); +emit_32(3265531911); +emit_32(1126180848); +emit_32(1106659980); +emit_32(3265531911); +emit_32(1126436897); +emit_32(1105554362); +emit_32(3265531911); +emit_32(1126692880); +emit_32(1104494356); +emit_32(3265531911); +emit_32(1126948864); +emit_32(1104060455); +emit_32(3265531911); +emit_32(1127204848); +emit_32(1103517817); +emit_32(3265531911); +emit_32(1127460897); +emit_32(1102225500); +emit_32(3265531911); +emit_32(1127716880); +emit_32(1102665010); +emit_32(3265531911); +emit_32(1127972864); +emit_32(1102667894); +emit_32(3265531911); +emit_32(1128228848); +emit_32(1101705144); +emit_32(3265531911); +emit_32(1128484897); +emit_32(1100387503); +emit_32(3265531911); +emit_32(1128740880); +emit_32(1099194486); +emit_32(3265531911); +emit_32(1128996864); +emit_32(1097299866); +emit_32(3265531911); +emit_32(1129252848); +emit_32(1093825515); +emit_32(3265531911); +emit_32(1129508897); +emit_32(1090816720); +emit_32(3265531911); +emit_32(1129764880); +emit_32(1090544321); +emit_32(3265531911); +emit_32(1130020864); +emit_32(1090558718); +emit_32(3265531911); +emit_32(1130276848); +emit_32(1090808845); +emit_32(3265531911); +emit_32(1130532897); +emit_32(1090674481); +emit_32(3265531911); +emit_32(1130788880); +emit_32(1090993898); +emit_32(3265531911); +emit_32(1131044864); +emit_32(1090749297); +emit_32(3265531911); +emit_32(1131300848); +emit_32(1090783533); +emit_32(3265531911); +emit_32(1131556897); +emit_32(1089829685); +emit_32(3265531911); +emit_32(1131812880); +emit_32(1090562483); +emit_32(3265531911); +emit_32(1132068864); +emit_32(1091169052); +emit_32(3265531911); +emit_32(1081737216); +emit_32(1112016683); +emit_32(3266043904); +emit_32(1090125824); +emit_32(1111610963); +emit_32(3266043904); +emit_32(1094418484); +emit_32(1110972380); +emit_32(3266043904); +emit_32(1098514432); +emit_32(1110456559); +emit_32(3266043904); +emit_32(1100759066); +emit_32(1110004833); +emit_32(3266043904); +emit_32(1102807040); +emit_32(1109891010); +emit_32(3266043904); +emit_32(1104855066); +emit_32(1110020745); +emit_32(3266043904); +emit_32(1106903040); +emit_32(1110210065); +emit_32(3266043904); +emit_32(1108123661); +emit_32(1110213526); +emit_32(3266043904); +emit_32(1109147648); +emit_32(1110290465); +emit_32(3266043904); +emit_32(1110171661); +emit_32(1110321843); +emit_32(3266043904); +emit_32(1111195648); +emit_32(1109977832); +emit_32(3266043904); +emit_32(1112219661); +emit_32(1109631120); +emit_32(3266043904); +emit_32(1113243648); +emit_32(1109240762); +emit_32(3266043904); +emit_32(1114267661); +emit_32(1108674478); +emit_32(3266043904); +emit_32(1115291648); +emit_32(1108141775); +emit_32(3266043904); +emit_32(1116000263); +emit_32(1107789637); +emit_32(3266043904); +emit_32(1116512256); +emit_32(1107598534); +emit_32(3266043904); +emit_32(1117024263); +emit_32(1107892555); +emit_32(3266043904); +emit_32(1117536256); +emit_32(1108239712); +emit_32(3266043904); +emit_32(1118048263); +emit_32(1108608811); +emit_32(3266043904); +emit_32(1118560256); +emit_32(1108738520); +emit_32(3266043904); +emit_32(1119072263); +emit_32(1108905191); +emit_32(3266043904); +emit_32(1119584256); +emit_32(1109116820); +emit_32(3266043904); +emit_32(1120096263); +emit_32(1109110843); +emit_32(3266043904); +emit_32(1120608322); +emit_32(1109093384); +emit_32(3266043904); +emit_32(1121120289); +emit_32(1109277331); +emit_32(3266043904); +emit_32(1121632256); +emit_32(1109425678); +emit_32(3266043904); +emit_32(1122144223); +emit_32(1109587814); +emit_32(3266043904); +emit_32(1122656322); +emit_32(1109495330); +emit_32(3266043904); +emit_32(1123168289); +emit_32(1109569438); +emit_32(3266043904); +emit_32(1123680256); +emit_32(1109583358); +emit_32(3266043904); +emit_32(1124132848); +emit_32(1109553945); +emit_32(3266043904); +emit_32(1124388897); +emit_32(1109310833); +emit_32(3266043904); +emit_32(1124644880); +emit_32(1109184820); +emit_32(3266043904); +emit_32(1124900864); +emit_32(1108916725); +emit_32(3266043904); +emit_32(1125156848); +emit_32(1108501594); +emit_32(3266043904); +emit_32(1125412897); +emit_32(1108421037); +emit_32(3266043904); +emit_32(1125668880); +emit_32(1108052070); +emit_32(3266043904); +emit_32(1125924864); +emit_32(1107663887); +emit_32(3266043904); +emit_32(1126180848); +emit_32(1106901100); +emit_32(3266043904); +emit_32(1126436897); +emit_32(1105810896); +emit_32(3266043904); +emit_32(1126692880); +emit_32(1104533153); +emit_32(3266043904); +emit_32(1126948864); +emit_32(1103280577); +emit_32(3266043904); +emit_32(1127204848); +emit_32(1102832153); +emit_32(3266043904); +emit_32(1127460897); +emit_32(1101711226); +emit_32(3266043904); +emit_32(1127716880); +emit_32(1101683910); +emit_32(3266043904); +emit_32(1127972864); +emit_32(1101916956); +emit_32(3266043904); +emit_32(1128228848); +emit_32(1101225945); +emit_32(3266043904); +emit_32(1128484897); +emit_32(1099926497); +emit_32(3266043904); +emit_32(1128740880); +emit_32(1098187591); +emit_32(3266043904); +emit_32(1128996864); +emit_32(1095823367); +emit_32(3266043904); +emit_32(1129252848); +emit_32(1091829718); +emit_32(3266043904); +emit_32(1129508897); +emit_32(1088807932); +emit_32(3266043904); +emit_32(1129764880); +emit_32(1089675104); +emit_32(3266043904); +emit_32(1130020864); +emit_32(1090567704); +emit_32(3266043904); +emit_32(1130276848); +emit_32(1090536174); +emit_32(3266043904); +emit_32(1130532897); +emit_32(1090414497); +emit_32(3266043904); +emit_32(1130788880); +emit_32(1090232632); +emit_32(3266043904); +emit_32(1131044864); +emit_32(1086780888); +emit_32(3266043904); +emit_32(1131300848); +emit_32(1089263098); +emit_32(3266043904); +emit_32(1131556897); +emit_32(1089690267); +emit_32(3266043904); +emit_32(1131812880); +emit_32(1087942248); +emit_32(3266043904); +emit_32(1132068864); +emit_32(1090262202); +emit_32(3266043904); +emit_32(1081737216); +emit_32(1111401326); +emit_32(3266555911); +emit_32(1090125824); +emit_32(1110943623); +emit_32(3266555911); +emit_32(1094418484); +emit_32(1110454960); +emit_32(3266555911); +emit_32(1098514432); +emit_32(1110052097); +emit_32(3266555911); +emit_32(1100759066); +emit_32(1109812734); +emit_32(3266555911); +emit_32(1102807040); +emit_32(1109724706); +emit_32(3266555911); +emit_32(1104855066); +emit_32(1109725597); +emit_32(3266555911); +emit_32(1106903040); +emit_32(1109797162); +emit_32(3266555911); +emit_32(1108123661); +emit_32(1110063972); +emit_32(3266555911); +emit_32(1109147648); +emit_32(1110046147); +emit_32(3266555911); +emit_32(1110171661); +emit_32(1109992119); +emit_32(3266555911); +emit_32(1111195648); +emit_32(1109639850); +emit_32(3266555911); +emit_32(1112219661); +emit_32(1109061691); +emit_32(3266555911); +emit_32(1113243648); +emit_32(1108508410); +emit_32(3266555911); +emit_32(1114267661); +emit_32(1108134540); +emit_32(3266555911); +emit_32(1115291648); +emit_32(1108063604); +emit_32(3266555911); +emit_32(1116000263); +emit_32(1107530351); +emit_32(3266555911); +emit_32(1116512256); +emit_32(1107403761); +emit_32(3266555911); +emit_32(1117024263); +emit_32(1107815668); +emit_32(3266555911); +emit_32(1117536256); +emit_32(1108314030); +emit_32(3266555911); +emit_32(1118048263); +emit_32(1108639613); +emit_32(3266555911); +emit_32(1118560256); +emit_32(1108710628); +emit_32(3266555911); +emit_32(1119072263); +emit_32(1108872213); +emit_32(3266555911); +emit_32(1119584256); +emit_32(1108749215); +emit_32(3266555911); +emit_32(1120096263); +emit_32(1108889462); +emit_32(3266555911); +emit_32(1120608322); +emit_32(1108863484); +emit_32(3266555911); +emit_32(1121120289); +emit_32(1109036604); +emit_32(3266555911); +emit_32(1121632256); +emit_32(1109205713); +emit_32(3266555911); +emit_32(1122144223); +emit_32(1109394116); +emit_32(3266555911); +emit_32(1122656322); +emit_32(1109718781); +emit_32(3266555911); +emit_32(1123168289); +emit_32(1109715871); +emit_32(3266555911); +emit_32(1123680256); +emit_32(1109592926); +emit_32(3266555911); +emit_32(1124132848); +emit_32(1109325932); +emit_32(3266555911); +emit_32(1124388897); +emit_32(1109167623); +emit_32(3266555911); +emit_32(1124644880); +emit_32(1108999930); +emit_32(3266555911); +emit_32(1124900864); +emit_32(1108794147); +emit_32(3266555911); +emit_32(1125156848); +emit_32(1108512054); +emit_32(3266555911); +emit_32(1125412897); +emit_32(1108376184); +emit_32(3266555911); +emit_32(1125668880); +emit_32(1108266215); +emit_32(3266555911); +emit_32(1125924864); +emit_32(1107795326); +emit_32(3266555911); +emit_32(1126180848); +emit_32(1107314763); +emit_32(3266555911); +emit_32(1126436897); +emit_32(1106114511); +emit_32(3266555911); +emit_32(1126692880); +emit_32(1104385514); +emit_32(3266555911); +emit_32(1126948864); +emit_32(1102999506); +emit_32(3266555911); +emit_32(1127204848); +emit_32(1102036337); +emit_32(3266555911); +emit_32(1127460897); +emit_32(1101372378); +emit_32(3266555911); +emit_32(1127716880); +emit_32(1101356021); +emit_32(3266555911); +emit_32(1127972864); +emit_32(1101083863); +emit_32(3266555911); +emit_32(1128228848); +emit_32(1099864211); +emit_32(3266555911); +emit_32(1128484897); +emit_32(1099053662); +emit_32(3266555911); +emit_32(1128740880); +emit_32(1096243846); +emit_32(3266555911); +emit_32(1128996864); +emit_32(1092140631); +emit_32(3266555911); +emit_32(1129252848); +emit_32(1086381925); +emit_32(3266555911); +emit_32(1129508897); +emit_32(1086092015); +emit_32(3266555911); +emit_32(1129764880); +emit_32(1087322309); +emit_32(3266555911); +emit_32(1130020864); +emit_32(1086744250); +emit_32(3266555911); +emit_32(1130276848); +emit_32(1086502784); +emit_32(3266555911); +emit_32(1130532897); +emit_32(1088099933); +emit_32(3266555911); +emit_32(1130788880); +emit_32(1087042801); +emit_32(3266555911); +emit_32(1131044864); +emit_32(1085944166); +emit_32(3266555911); +emit_32(1131300848); +emit_32(1086098348); +emit_32(3266555911); +emit_32(1131556897); +emit_32(1088087979); +emit_32(3266555911); +emit_32(1131812880); +emit_32(1087004759); +emit_32(3266555911); +emit_32(1132068864); +emit_32(1086940628); +emit_32(3266555911); +emit_32(1081737216); +emit_32(1110813757); +emit_32(3267067904); +emit_32(1090125824); +emit_32(1110590462); +emit_32(3267067904); +emit_32(1094418484); +emit_32(1110447410); +emit_32(3267067904); +emit_32(1098514432); +emit_32(1109984621); +emit_32(3267067904); +emit_32(1100759066); +emit_32(1109628053); +emit_32(3267067904); +emit_32(1102807040); +emit_32(1109594341); +emit_32(3267067904); +emit_32(1104855066); +emit_32(1109544298); +emit_32(3267067904); +emit_32(1106903040); +emit_32(1109733881); +emit_32(3267067904); +emit_32(1108123661); +emit_32(1109573291); +emit_32(3267067904); +emit_32(1109147648); +emit_32(1109550878); +emit_32(3267067904); +emit_32(1110171661); +emit_32(1109270961); +emit_32(3267067904); +emit_32(1111195648); +emit_32(1108931091); +emit_32(3267067904); +emit_32(1112219661); +emit_32(1108382633); +emit_32(3267067904); +emit_32(1113243648); +emit_32(1108013298); +emit_32(3267067904); +emit_32(1114267661); +emit_32(1107931011); +emit_32(3267067904); +emit_32(1115291648); +emit_32(1107808171); +emit_32(3267067904); +emit_32(1116000263); +emit_32(1107425519); +emit_32(3267067904); +emit_32(1116512256); +emit_32(1107431129); +emit_32(3267067904); +emit_32(1117024263); +emit_32(1107661423); +emit_32(3267067904); +emit_32(1117536256); +emit_32(1108073723); +emit_32(3267067904); +emit_32(1118048263); +emit_32(1108439492); +emit_32(3267067904); +emit_32(1118560256); +emit_32(1108755874); +emit_32(3267067904); +emit_32(1119072263); +emit_32(1108610122); +emit_32(3267067904); +emit_32(1119584256); +emit_32(1108774538); +emit_32(3267067904); +emit_32(1120096263); +emit_32(1108983703); +emit_32(3267067904); +emit_32(1120608322); +emit_32(1108966611); +emit_32(3267067904); +emit_32(1121120289); +emit_32(1109162171); +emit_32(3267067904); +emit_32(1121632256); +emit_32(1109004596); +emit_32(3267067904); +emit_32(1122144223); +emit_32(1109403972); +emit_32(3267067904); +emit_32(1122656322); +emit_32(1109453098); +emit_32(3267067904); +emit_32(1123168289); +emit_32(1109628944); +emit_32(3267067904); +emit_32(1123680256); +emit_32(1109442953); +emit_32(3267067904); +emit_32(1124132848); +emit_32(1109378597); +emit_32(3267067904); +emit_32(1124388897); +emit_32(1109310151); +emit_32(3267067904); +emit_32(1124644880); +emit_32(1109090370); +emit_32(3267067904); +emit_32(1124900864); +emit_32(1108727012); +emit_32(3267067904); +emit_32(1125156848); +emit_32(1108564378); +emit_32(3267067904); +emit_32(1125412897); +emit_32(1108413016); +emit_32(3267067904); +emit_32(1125668880); +emit_32(1108252662); +emit_32(3267067904); +emit_32(1125924864); +emit_32(1107867468); +emit_32(3267067904); +emit_32(1126180848); +emit_32(1107313322); +emit_32(3267067904); +emit_32(1126436897); +emit_32(1105536274); +emit_32(3267067904); +emit_32(1126692880); +emit_32(1103691199); +emit_32(3267067904); +emit_32(1126948864); +emit_32(1102287156); +emit_32(3267067904); +emit_32(1127204848); +emit_32(1100758437); +emit_32(3267067904); +emit_32(1127460897); +emit_32(1100185390); +emit_32(3267067904); +emit_32(1127716880); +emit_32(1100274781); +emit_32(3267067904); +emit_32(1127972864); +emit_32(1099687789); +emit_32(3267067904); +emit_32(1128228848); +emit_32(1098027264); +emit_32(3267067904); +emit_32(1128484897); +emit_32(1095782577); +emit_32(3267067904); +emit_32(1128740880); +emit_32(1092060656); +emit_32(3267067904); +emit_32(1128996864); +emit_32(1085479584); +emit_32(3267067904); +emit_32(1129252848); +emit_32(1080427922); +emit_32(3267067904); +emit_32(1129508897); +emit_32(1082737893); +emit_32(3267067904); +emit_32(1129764880); +emit_32(1082587842); +emit_32(3267067904); +emit_32(1130020864); +emit_32(1082372569); +emit_32(3267067904); +emit_32(1130276848); +emit_32(1085083537); +emit_32(3267067904); +emit_32(1130532897); +emit_32(1085407211); +emit_32(3267067904); +emit_32(1130788880); +emit_32(1084963160); +emit_32(3267067904); +emit_32(1131044864); +emit_32(1084737318); +emit_32(3267067904); +emit_32(1131300848); +emit_32(1083924504); +emit_32(3267067904); +emit_32(1131556897); +emit_32(1084286829); +emit_32(3267067904); +emit_32(1131812880); +emit_32(1084905342); +emit_32(3267067904); +emit_32(1132068864); +emit_32(1085475641); +emit_32(3267067904); +emit_32(1081737216); +emit_32(1110694612); +emit_32(3267579911); +emit_32(1090125824); +emit_32(1110646797); +emit_32(3267579911); +emit_32(1094418484); +emit_32(1110299640); +emit_32(3267579911); +emit_32(1098514432); +emit_32(1110057393); +emit_32(3267579911); +emit_32(1100759066); +emit_32(1109526053); +emit_32(3267579911); +emit_32(1102807040); +emit_32(1109344807); +emit_32(3267579911); +emit_32(1104855066); +emit_32(1109452259); +emit_32(3267579911); +emit_32(1106903040); +emit_32(1109261550); +emit_32(3267579911); +emit_32(1108123661); +emit_32(1109082820); +emit_32(3267579911); +emit_32(1109147648); +emit_32(1108958406); +emit_32(3267579911); +emit_32(1110171661); +emit_32(1108756398); +emit_32(3267579911); +emit_32(1111195648); +emit_32(1108426831); +emit_32(3267579911); +emit_32(1112219661); +emit_32(1107880234); +emit_32(3267579911); +emit_32(1113243648); +emit_32(1107647398); +emit_32(3267579911); +emit_32(1114267661); +emit_32(1107551060); +emit_32(3267579911); +emit_32(1115291648); +emit_32(1107461800); +emit_32(3267579911); +emit_32(1116000263); +emit_32(1107421980); +emit_32(3267579911); +emit_32(1116512256); +emit_32(1107111287); +emit_32(3267579911); +emit_32(1117024263); +emit_32(1107355396); +emit_32(3267579911); +emit_32(1117536256); +emit_32(1107770029); +emit_32(3267579911); +emit_32(1118048263); +emit_32(1108281682); +emit_32(3267579911); +emit_32(1118560256); +emit_32(1108475930); +emit_32(3267579911); +emit_32(1119072263); +emit_32(1108583724); +emit_32(3267579911); +emit_32(1119584256); +emit_32(1108787908); +emit_32(3267579911); +emit_32(1120096263); +emit_32(1108859761); +emit_32(3267579911); +emit_32(1120608322); +emit_32(1109119625); +emit_32(3267579911); +emit_32(1121120289); +emit_32(1109310125); +emit_32(3267579911); +emit_32(1121632256); +emit_32(1109129088); +emit_32(3267579911); +emit_32(1122144223); +emit_32(1109416267); +emit_32(3267579911); +emit_32(1122656322); +emit_32(1109508751); +emit_32(3267579911); +emit_32(1123168289); +emit_32(1109311540); +emit_32(3267579911); +emit_32(1123680256); +emit_32(1109131552); +emit_32(3267579911); +emit_32(1124132848); +emit_32(1109360247); +emit_32(3267579911); +emit_32(1124388897); +emit_32(1109275522); +emit_32(3267579911); +emit_32(1124644880); +emit_32(1108801749); +emit_32(3267579911); +emit_32(1124900864); +emit_32(1108467804); +emit_32(3267579911); +emit_32(1125156848); +emit_32(1108391100); +emit_32(3267579911); +emit_32(1125412897); +emit_32(1108331096); +emit_32(3267579911); +emit_32(1125668880); +emit_32(1108112599); +emit_32(3267579911); +emit_32(1125924864); +emit_32(1107624355); +emit_32(3267579911); +emit_32(1126180848); +emit_32(1106590564); +emit_32(3267579911); +emit_32(1126436897); +emit_32(1104796346); +emit_32(3267579911); +emit_32(1126692880); +emit_32(1102786068); +emit_32(3267579911); +emit_32(1126948864); +emit_32(1101357226); +emit_32(3267579911); +emit_32(1127204848); +emit_32(1100162793); +emit_32(3267579911); +emit_32(1127460897); +emit_32(1099771412); +emit_32(3267579911); +emit_32(1127716880); +emit_32(1098962017); +emit_32(3267579911); +emit_32(1127972864); +emit_32(1097608462); +emit_32(3267579911); +emit_32(1128228848); +emit_32(1094970874); +emit_32(3267579911); +emit_32(1128484897); +emit_32(1092021933); +emit_32(3267579911); +emit_32(1128740880); +emit_32(1088236919); +emit_32(3267579911); +emit_32(1128996864); +emit_32(1082682696); +emit_32(3267579911); +emit_32(1129252848); +emit_32(1079924773); +emit_32(3267579911); +emit_32(1129508897); +emit_32(1081076487); +emit_32(3267579911); +emit_32(1129764880); +emit_32(1081136801); +emit_32(3267579911); +emit_32(1130020864); +emit_32(1081313088); +emit_32(3267579911); +emit_32(1130276848); +emit_32(1082622067); +emit_32(3267579911); +emit_32(1130532897); +emit_32(1080914755); +emit_32(3267579911); +emit_32(1130788880); +emit_32(1081174131); +emit_32(3267579911); +emit_32(1131044864); +emit_32(1081307258); +emit_32(3267579911); +emit_32(1131300848); +emit_32(1080904101); +emit_32(3267579911); +emit_32(1131556897); +emit_32(1082632301); +emit_32(3267579911); +emit_32(1131812880); +emit_32(1082980177); +emit_32(3267579911); +emit_32(1132068864); +emit_32(1083203964); +emit_32(3267579911); +emit_32(1081737216); +emit_32(1110581209); +emit_32(3268091970); +emit_32(1090125824); +emit_32(1110551586); +emit_32(3268091970); +emit_32(1094418484); +emit_32(1110307347); +emit_32(3268091970); +emit_32(1098514432); +emit_32(1109985591); +emit_32(3268091970); +emit_32(1100759066); +emit_32(1109670180); +emit_32(3268091970); +emit_32(1102807040); +emit_32(1109393303); +emit_32(3268091970); +emit_32(1104855066); +emit_32(1109233946); +emit_32(3268091970); +emit_32(1106903040); +emit_32(1109280450); +emit_32(3268091970); +emit_32(1108123661); +emit_32(1108630281); +emit_32(3268091970); +emit_32(1109147648); +emit_32(1108457449); +emit_32(3268091970); +emit_32(1110171661); +emit_32(1108487176); +emit_32(3268091970); +emit_32(1111195648); +emit_32(1108197114); +emit_32(3268091970); +emit_32(1112219661); +emit_32(1107653847); +emit_32(3268091970); +emit_32(1113243648); +emit_32(1107312745); +emit_32(3268091970); +emit_32(1114267661); +emit_32(1107342131); +emit_32(3268091970); +emit_32(1115291648); +emit_32(1107499418); +emit_32(3268091970); +emit_32(1116000263); +emit_32(1107104104); +emit_32(3268091970); +emit_32(1116512256); +emit_32(1107322497); +emit_32(3268091970); +emit_32(1117024263); +emit_32(1107451078); +emit_32(3268091970); +emit_32(1117536256); +emit_32(1107597774); +emit_32(3268091970); +emit_32(1118048263); +emit_32(1108134383); +emit_32(3268091970); +emit_32(1118560256); +emit_32(1108348292); +emit_32(3268091970); +emit_32(1119072263); +emit_32(1108697206); +emit_32(3268091970); +emit_32(1119584256); +emit_32(1108767120); +emit_32(3268091970); +emit_32(1120096263); +emit_32(1108911089); +emit_32(3268091970); +emit_32(1120608322); +emit_32(1109333115); +emit_32(3268091970); +emit_32(1121120289); +emit_32(1109311147); +emit_32(3268091970); +emit_32(1121632256); +emit_32(1109257853); +emit_32(3268091970); +emit_32(1122144223); +emit_32(1109429663); +emit_32(3268091970); +emit_32(1122656322); +emit_32(1109626926); +emit_32(3268091970); +emit_32(1123168289); +emit_32(1109223460); +emit_32(3268091970); +emit_32(1123680256); +emit_32(1109113464); +emit_32(3268091970); +emit_32(1124132848); +emit_32(1109197770); +emit_32(3268091970); +emit_32(1124388897); +emit_32(1108996941); +emit_32(3268091970); +emit_32(1124644880); +emit_32(1108521910); +emit_32(3268091970); +emit_32(1124900864); +emit_32(1108156167); +emit_32(3268091970); +emit_32(1125156848); +emit_32(1108312169); +emit_32(3268091970); +emit_32(1125412897); +emit_32(1108417210); +emit_32(3268091970); +emit_32(1125668880); +emit_32(1108025410); +emit_32(3268091970); +emit_32(1125924864); +emit_32(1107366039); +emit_32(3268091970); +emit_32(1126180848); +emit_32(1106152836); +emit_32(3268091970); +emit_32(1126436897); +emit_32(1104094377); +emit_32(3268091970); +emit_32(1126692880); +emit_32(1102342783); +emit_32(3268091970); +emit_32(1126948864); +emit_32(1101171838); +emit_32(3268091970); +emit_32(1127204848); +emit_32(1099584871); +emit_32(3268091970); +emit_32(1127460897); +emit_32(1099343069); +emit_32(3268091970); +emit_32(1127716880); +emit_32(1097562115); +emit_32(3268091970); +emit_32(1127972864); +emit_32(1094777202); +emit_32(3268091970); +emit_32(1128228848); +emit_32(1092522051); +emit_32(3268091970); +emit_32(1128484897); +emit_32(1088883870); +emit_32(3268091970); +emit_32(1128740880); +emit_32(1085242165); +emit_32(3268091970); +emit_32(1128996864); +emit_32(1078093792); +emit_32(3268091970); +emit_32(1129252848); +emit_32(1078026222); +emit_32(3268091970); +emit_32(1129508897); +emit_32(1077460788); +emit_32(3268091970); +emit_32(1129764880); +emit_32(1078305017); +emit_32(3268091970); +emit_32(1130020864); +emit_32(1079773820); +emit_32(3268091970); +emit_32(1130276848); +emit_32(1080393613); +emit_32(3268091970); +emit_32(1130532897); +emit_32(1078685021); +emit_32(3268091970); +emit_32(1130788880); +emit_32(1075784911); +emit_32(3268091970); +emit_32(1131044864); +emit_32(1076529820); +emit_32(3268091970); +emit_32(1131300848); +emit_32(1074011602); +emit_32(3268091970); +emit_32(1131556897); +emit_32(1075826561); +emit_32(3268091970); +emit_32(1131812880); +emit_32(1078155029); +emit_32(3268091970); +emit_32(1132068864); +emit_32(1080836699); +emit_32(3268091970); +emit_32(1081737216); +emit_32(1110663915); +emit_32(3268603937); +emit_32(1090125824); +emit_32(1110523301); +emit_32(3268603937); +emit_32(1094418484); +emit_32(1110414092); +emit_32(3268603937); +emit_32(1098514432); +emit_32(1110239740); +emit_32(3268603937); +emit_32(1100759066); +emit_32(1110111263); +emit_32(3268603937); +emit_32(1102807040); +emit_32(1109732989); +emit_32(3268603937); +emit_32(1104855066); +emit_32(1109257434); +emit_32(3268603937); +emit_32(1106903040); +emit_32(1108986639); +emit_32(3268603937); +emit_32(1108123661); +emit_32(1108299324); +emit_32(3268603937); +emit_32(1109147648); +emit_32(1108108666); +emit_32(3268603937); +emit_32(1110171661); +emit_32(1108133256); +emit_32(3268603937); +emit_32(1111195648); +emit_32(1107900341); +emit_32(3268603937); +emit_32(1112219661); +emit_32(1106990544); +emit_32(3268603937); +emit_32(1113243648); +emit_32(1106677911); +emit_32(3268603937); +emit_32(1114267661); +emit_32(1106924116); +emit_32(3268603937); +emit_32(1115291648); +emit_32(1107371465); +emit_32(3268603937); +emit_32(1116000263); +emit_32(1107430500); +emit_32(3268603937); +emit_32(1116512256); +emit_32(1107498631); +emit_32(3268603937); +emit_32(1117024263); +emit_32(1107438390); +emit_32(3268603937); +emit_32(1117536256); +emit_32(1107833808); +emit_32(3268603937); +emit_32(1118048263); +emit_32(1108210981); +emit_32(3268603937); +emit_32(1118560256); +emit_32(1108542226); +emit_32(3268603937); +emit_32(1119072263); +emit_32(1108787882); +emit_32(3268603937); +emit_32(1119584256); +emit_32(1108829274); +emit_32(3268603937); +emit_32(1120096263); +emit_32(1109124029); +emit_32(3268603937); +emit_32(1120608322); +emit_32(1109412387); +emit_32(3268603937); +emit_32(1121120289); +emit_32(1109324752); +emit_32(3268603937); +emit_32(1121632256); +emit_32(1109233631); +emit_32(3268603937); +emit_32(1122144223); +emit_32(1109356105); +emit_32(3268603937); +emit_32(1122656322); +emit_32(1109523353); +emit_32(3268603937); +emit_32(1123168289); +emit_32(1109276492); +emit_32(3268603937); +emit_32(1123680256); +emit_32(1109141330); +emit_32(3268603937); +emit_32(1124132848); +emit_32(1108924485); +emit_32(3268603937); +emit_32(1124388897); +emit_32(1108532029); +emit_32(3268603937); +emit_32(1124644880); +emit_32(1108013482); +emit_32(3268603937); +emit_32(1124900864); +emit_32(1107879159); +emit_32(3268603937); +emit_32(1125156848); +emit_32(1108192290); +emit_32(3268603937); +emit_32(1125412897); +emit_32(1108199499); +emit_32(3268603937); +emit_32(1125668880); +emit_32(1107673455); +emit_32(3268603937); +emit_32(1125924864); +emit_32(1106232371); +emit_32(3268603937); +emit_32(1126180848); +emit_32(1104800226); +emit_32(3268603937); +emit_32(1126436897); +emit_32(1103280682); +emit_32(3268603937); +emit_32(1126692880); +emit_32(1102286055); +emit_32(3268603937); +emit_32(1126948864); +emit_32(1100759748); +emit_32(3268603937); +emit_32(1127204848); +emit_32(1099429367); +emit_32(3268603937); +emit_32(1127460897); +emit_32(1097617900); +emit_32(3268603937); +emit_32(1127716880); +emit_32(1095952341); +emit_32(3268603937); +emit_32(1127972864); +emit_32(1093005319); +emit_32(3268603937); +emit_32(1128228848); +emit_32(1088642320); +emit_32(3268603937); +emit_32(1128484897); +emit_32(1085144270); +emit_32(3268603937); +emit_32(1128740880); +emit_32(1079423554); +emit_32(3268603937); +emit_32(1128996864); +emit_32(1075473065); +emit_32(3268603937); +emit_32(1129252848); +emit_32(1075224804); +emit_32(3268603937); +emit_32(1129508897); +emit_32(1074942527); +emit_32(3268603937); +emit_32(1129764880); +emit_32(1070517327); +emit_32(3268603937); +emit_32(1130020864); +emit_32(1076303998); +emit_32(3268603937); +emit_32(1130276848); +emit_32(1075194647); +emit_32(3268603937); +emit_32(1130532897); +emit_32(1069302069); +emit_32(3268603937); +emit_32(1130788880); +emit_32(1059149840); +emit_32(3268603937); +emit_32(1131044864); +emit_32(1062802928); +emit_32(3268603937); +emit_32(1131300848); +emit_32(1068305922); +emit_32(3268603937); +emit_32(1131556897); +emit_32(1074623970); +emit_32(3268603937); +emit_32(1131812880); +emit_32(1077991619); +emit_32(3268603937); +emit_32(1132068864); +emit_32(1078469350); +emit_32(3268603937); +emit_32(1081737216); +emit_32(1110808645); +emit_32(3269115904); +emit_32(1090125824); +emit_32(1110606427); +emit_32(3269115904); +emit_32(1094418484); +emit_32(1110590725); +emit_32(3269115904); +emit_32(1098514432); +emit_32(1110520575); +emit_32(3269115904); +emit_32(1100759066); +emit_32(1110320952); +emit_32(3269115904); +emit_32(1102807040); +emit_32(1109925718); +emit_32(3269115904); +emit_32(1104855066); +emit_32(1109578691); +emit_32(3269115904); +emit_32(1106903040); +emit_32(1109301579); +emit_32(3269115904); +emit_32(1108123661); +emit_32(1108401481); +emit_32(3269115904); +emit_32(1109147648); +emit_32(1108050418); +emit_32(3269115904); +emit_32(1110171661); +emit_32(1108134828); +emit_32(3269115904); +emit_32(1111195648); +emit_32(1107813047); +emit_32(3269115904); +emit_32(1112219661); +emit_32(1106770867); +emit_32(3269115904); +emit_32(1113243648); +emit_32(1107263016); +emit_32(3269115904); +emit_32(1114267661); +emit_32(1107073696); +emit_32(3269115904); +emit_32(1115291648); +emit_32(1107071861); +emit_32(3269115904); +emit_32(1116000263); +emit_32(1107575911); +emit_32(3269115904); +emit_32(1116512256); +emit_32(1107727326); +emit_32(3269115904); +emit_32(1117024263); +emit_32(1107439570); +emit_32(3269115904); +emit_32(1117536256); +emit_32(1107890956); +emit_32(3269115904); +emit_32(1118048263); +emit_32(1108361426); +emit_32(3269115904); +emit_32(1118560256); +emit_32(1108752964); +emit_32(3269115904); +emit_32(1119072263); +emit_32(1109015894); +emit_32(3269115904); +emit_32(1119584256); +emit_32(1109044966); +emit_32(3269115904); +emit_32(1120096263); +emit_32(1109198320); +emit_32(3269115904); +emit_32(1120608322); +emit_32(1109370103); +emit_32(3269115904); +emit_32(1121120289); +emit_32(1109373380); +emit_32(3269115904); +emit_32(1121632256); +emit_32(1109279795); +emit_32(3269115904); +emit_32(1122144223); +emit_32(1109433568); +emit_32(3269115904); +emit_32(1122656322); +emit_32(1109623387); +emit_32(3269115904); +emit_32(1123168289); +emit_32(1109428273); +emit_32(3269115904); +emit_32(1123680256); +emit_32(1108960346); +emit_32(3269115904); +emit_32(1124132848); +emit_32(1108585323); +emit_32(3269115904); +emit_32(1124388897); +emit_32(1108055818); +emit_32(3269115904); +emit_32(1124644880); +emit_32(1107534728); +emit_32(3269115904); +emit_32(1124900864); +emit_32(1107471001); +emit_32(3269115904); +emit_32(1125156848); +emit_32(1107590041); +emit_32(3269115904); +emit_32(1125412897); +emit_32(1107454172); +emit_32(3269115904); +emit_32(1125668880); +emit_32(1106832209); +emit_32(3269115904); +emit_32(1125924864); +emit_32(1105088217); +emit_32(3269115904); +emit_32(1126180848); +emit_32(1103608676); +emit_32(3269115904); +emit_32(1126436897); +emit_32(1102467039); +emit_32(3269115904); +emit_32(1126692880); +emit_32(1101262068); +emit_32(3269115904); +emit_32(1126948864); +emit_32(1100082158); +emit_32(3269115904); +emit_32(1127204848); +emit_32(1098845677); +emit_32(3269115904); +emit_32(1127460897); +emit_32(1095460140); +emit_32(3269115904); +emit_32(1127716880); +emit_32(1093620938); +emit_32(3269115904); +emit_32(1127972864); +emit_32(1089412289); +emit_32(3269115904); +emit_32(1128228848); +emit_32(1083970620); +emit_32(3269115904); +emit_32(1128484897); +emit_32(1077038086); +emit_32(3269115904); +emit_32(1128740880); +emit_32(1069835165); +emit_32(3269115904); +emit_32(1128996864); +emit_32(1070535279); +emit_32(3269115904); +emit_32(1129252848); +emit_32(1071829221); +emit_32(3269115904); +emit_32(1129508897); +emit_32(1066648753); +emit_32(3269115904); +emit_32(1129764880); +emit_32(1051679953); +emit_32(3269115904); +emit_32(1130020864); +emit_32(1057135450); +emit_32(3269115904); +emit_32(1130276848); +emit_32(1048743000); +emit_32(3269115904); +emit_32(1130532897); +emit_32(3194534264); +emit_32(3269115904); +emit_32(1130788880); +emit_32(3210162995); +emit_32(3269115904); +emit_32(1131044864); +emit_32(3197138557); +emit_32(3269115904); +emit_32(1131300848); +emit_32(1054446180); +emit_32(3269115904); +emit_32(1131556897); +emit_32(1071525302); +emit_32(3269115904); +emit_32(1131812880); +emit_32(1072082306); +emit_32(3269115904); +emit_32(1132068864); +emit_32(1070395189); +emit_32(3269115904); +emit_32(1081737216); +emit_32(1111356054); +emit_32(3269627871); +emit_32(1090125824); +emit_32(1111049765); +emit_32(3269627871); +emit_32(1094418484); +emit_32(1111095011); +emit_32(3269627871); +emit_32(1098514432); +emit_32(1110769821); +emit_32(3269627871); +emit_32(1100759066); +emit_32(1110387956); +emit_32(3269627871); +emit_32(1102807040); +emit_32(1110076608); +emit_32(3269627871); +emit_32(1104855066); +emit_32(1109830507); +emit_32(3269627871); +emit_32(1106903040); +emit_32(1109267474); +emit_32(3269627871); +emit_32(1108123661); +emit_32(1108522670); +emit_32(3269627871); +emit_32(1109147648); +emit_32(1108306716); +emit_32(3269627871); +emit_32(1110171661); +emit_32(1108152078); +emit_32(3269627871); +emit_32(1111195648); +emit_32(1107581521); +emit_32(3269627871); +emit_32(1112219661); +emit_32(1106841751); +emit_32(3269627871); +emit_32(1113243648); +emit_32(1107248808); +emit_32(3269627871); +emit_32(1114267661); +emit_32(1107071599); +emit_32(3269627871); +emit_32(1115291648); +emit_32(1107391729); +emit_32(3269627871); +emit_32(1116000263); +emit_32(1107625981); +emit_32(3269627871); +emit_32(1116512256); +emit_32(1107606818); +emit_32(3269627871); +emit_32(1117024263); +emit_32(1107732044); +emit_32(3269627871); +emit_32(1117536256); +emit_32(1108255231); +emit_32(3269627871); +emit_32(1118048263); +emit_32(1108554259); +emit_32(3269627871); +emit_32(1118560256); +emit_32(1108867835); +emit_32(3269627871); +emit_32(1119072263); +emit_32(1109054272); +emit_32(3269627871); +emit_32(1119584256); +emit_32(1109386251); +emit_32(3269627871); +emit_32(1120096263); +emit_32(1109299298); +emit_32(3269627871); +emit_32(1120608322); +emit_32(1109427959); +emit_32(3269627871); +emit_32(1121120289); +emit_32(1109424079); +emit_32(3269627871); +emit_32(1121632256); +emit_32(1109411181); +emit_32(3269627871); +emit_32(1122144223); +emit_32(1109433621); +emit_32(3269627871); +emit_32(1122656322); +emit_32(1109598955); +emit_32(3269627871); +emit_32(1123168289); +emit_32(1109218086); +emit_32(3269627871); +emit_32(1123680256); +emit_32(1108916909); +emit_32(3269627871); +emit_32(1124132848); +emit_32(1108631119); +emit_32(3269627871); +emit_32(1124388897); +emit_32(1108074483); +emit_32(3269627871); +emit_32(1124644880); +emit_32(1107470084); +emit_32(3269627871); +emit_32(1124900864); +emit_32(1106751049); +emit_32(3269627871); +emit_32(1125156848); +emit_32(1106805732); +emit_32(3269627871); +emit_32(1125412897); +emit_32(1106063917); +emit_32(3269627871); +emit_32(1125668880); +emit_32(1104941941); +emit_32(3269627871); +emit_32(1125924864); +emit_32(1103592738); +emit_32(3269627871); +emit_32(1126180848); +emit_32(1102378749); +emit_32(3269627871); +emit_32(1126436897); +emit_32(1101064359); +emit_32(3269627871); +emit_32(1126692880); +emit_32(1099948989); +emit_32(3269627871); +emit_32(1126948864); +emit_32(1098973289); +emit_32(3269627871); +emit_32(1127204848); +emit_32(1097124125); +emit_32(3269627871); +emit_32(1127460897); +emit_32(1094111671); +emit_32(3269627871); +emit_32(1127716880); +emit_32(1091103611); +emit_32(3269627871); +emit_32(1127972864); +emit_32(1086368084); +emit_32(3269627871); +emit_32(1128228848); +emit_32(1078725915); +emit_32(3269627871); +emit_32(1128484897); +emit_32(1069950844); +emit_32(3269627871); +emit_32(1128740880); +emit_32(1018630897); +emit_32(3269627871); +emit_32(1128996864); +emit_32(3181731986); +emit_32(3269627871); +emit_32(1129252848); +emit_32(3201792590); +emit_32(3269627871); +emit_32(1129508897); +emit_32(3204973752); +emit_32(3269627871); +emit_32(1129764880); +emit_32(3215721958); +emit_32(3269627871); +emit_32(1130020864); +emit_32(3222414389); +emit_32(3269627871); +emit_32(1130276848); +emit_32(3222253076); +emit_32(3269627871); +emit_32(1130532897); +emit_32(3222187310); +emit_32(3269627871); +emit_32(1130788880); +emit_32(3216801991); +emit_32(3269627871); +emit_32(1131044864); +emit_32(3205181336); +emit_32(3269627871); +emit_32(1131300848); +emit_32(3200822633); +emit_32(3269627871); +emit_32(1131556897); +emit_32(3196733320); +emit_32(3269627871); +emit_32(1131812880); +emit_32(3206975391); +emit_32(3269627871); +emit_32(1132068864); +emit_32(1038377734); +emit_32(3269627871); +emit_32(1081737216); +emit_32(1111592455); +emit_32(3270139970); +emit_32(1090125824); +emit_32(1111491609); +emit_32(3270139970); +emit_32(1094418484); +emit_32(1111194940); +emit_32(3270139970); +emit_32(1098514432); +emit_32(1110835331); +emit_32(3270139970); +emit_32(1100759066); +emit_32(1110275365); +emit_32(3270139970); +emit_32(1102807040); +emit_32(1110005567); +emit_32(3270139970); +emit_32(1104855066); +emit_32(1109696499); +emit_32(3270139970); +emit_32(1106903040); +emit_32(1109176772); +emit_32(3270139970); +emit_32(1108123661); +emit_32(1108885556); +emit_32(3270139970); +emit_32(1109147648); +emit_32(1108468774); +emit_32(3270139970); +emit_32(1110171661); +emit_32(1108030285); +emit_32(3270139970); +emit_32(1111195648); +emit_32(1107430028); +emit_32(3270139970); +emit_32(1112219661); +emit_32(1107103737); +emit_32(3270139970); +emit_32(1113243648); +emit_32(1107092098); +emit_32(3270139970); +emit_32(1114267661); +emit_32(1107375004); +emit_32(3270139970); +emit_32(1115291648); +emit_32(1107478708); +emit_32(3270139970); +emit_32(1116000263); +emit_32(1107657884); +emit_32(3270139970); +emit_32(1116512256); +emit_32(1107812575); +emit_32(3270139970); +emit_32(1117024263); +emit_32(1108062005); +emit_32(3270139970); +emit_32(1117536256); +emit_32(1108546316); +emit_32(3270139970); +emit_32(1118048263); +emit_32(1108808198); +emit_32(3270139970); +emit_32(1118560256); +emit_32(1108821253); +emit_32(3270139970); +emit_32(1119072263); +emit_32(1108944565); +emit_32(3270139970); +emit_32(1119584256); +emit_32(1109292509); +emit_32(3270139970); +emit_32(1120096263); +emit_32(1109325827); +emit_32(3270139970); +emit_32(1120608322); +emit_32(1109645355); +emit_32(3270139970); +emit_32(1121120289); +emit_32(1109627555); +emit_32(3270139970); +emit_32(1121632256); +emit_32(1109566502); +emit_32(3270139970); +emit_32(1122144223); +emit_32(1109470347); +emit_32(3270139970); +emit_32(1122656322); +emit_32(1109358831); +emit_32(3270139970); +emit_32(1123168289); +emit_32(1109156561); +emit_32(3270139970); +emit_32(1123680256); +emit_32(1108641920); +emit_32(3270139970); +emit_32(1124132848); +emit_32(1108219580); +emit_32(3270139970); +emit_32(1124388897); +emit_32(1107796112); +emit_32(3270139970); +emit_32(1124644880); +emit_32(1107364885); +emit_32(3270139970); +emit_32(1124900864); +emit_32(1106177268); +emit_32(3270139970); +emit_32(1125156848); +emit_32(1105288443); +emit_32(3270139970); +emit_32(1125412897); +emit_32(1104753197); +emit_32(3270139970); +emit_32(1125668880); +emit_32(1103375473); +emit_32(3270139970); +emit_32(1125924864); +emit_32(1102075344); +emit_32(3270139970); +emit_32(1126180848); +emit_32(1100964849); +emit_32(3270139970); +emit_32(1126436897); +emit_32(1099792384); +emit_32(3270139970); +emit_32(1126692880); +emit_32(1098450049); +emit_32(3270139970); +emit_32(1126948864); +emit_32(1096338322); +emit_32(3270139970); +emit_32(1127204848); +emit_32(1093954280); +emit_32(3270139970); +emit_32(1127460897); +emit_32(1091524247); +emit_32(3270139970); +emit_32(1127716880); +emit_32(1088518839); +emit_32(3270139970); +emit_32(1127972864); +emit_32(1083884385); +emit_32(3270139970); +emit_32(1128228848); +emit_32(1076931424); +emit_32(3270139970); +emit_32(1128484897); +emit_32(1044557454); +emit_32(3270139970); +emit_32(1128740880); +emit_32(3205427693); +emit_32(3270139970); +emit_32(1128996864); +emit_32(3213113940); +emit_32(3270139970); +emit_32(1129252848); +emit_32(3221962118); +emit_32(3270139970); +emit_32(1129508897); +emit_32(3220483500); +emit_32(3270139970); +emit_32(1129764880); +emit_32(3225420531); +emit_32(3270139970); +emit_32(1130020864); +emit_32(3230173831); +emit_32(3270139970); +emit_32(1130276848); +emit_32(3232043735); +emit_32(3270139970); +emit_32(1130532897); +emit_32(3227363752); +emit_32(3270139970); +emit_32(1130788880); +emit_32(3221899790); +emit_32(3270139970); +emit_32(1131044864); +emit_32(3216845360); +emit_32(3270139970); +emit_32(1131300848); +emit_32(3219415546); +emit_32(3270139970); +emit_32(1131556897); +emit_32(3212863456); +emit_32(3270139970); +emit_32(1131812880); +emit_32(3221056106); +emit_32(3270139970); +emit_32(1132068864); +emit_32(3222457423); +emit_32(3270139970); +emit_start(Landscape04Vtx) +emit_32(1081737216); +emit_32(1100462372); +emit_32(1123680256); +emit_32(1081737216); +emit_32(1101050728); +emit_32(1124132848); +emit_32(1090125824); +emit_32(1101307000); +emit_32(1123680256); +emit_32(1090125824); +emit_32(1101569144); +emit_32(1124132848); +emit_32(1094418484); +emit_32(1101816870); +emit_32(1123680256); +emit_32(1094418484); +emit_32(1101742788); +emit_32(1124132848); +emit_32(1098514432); +emit_32(1102313580); +emit_32(1123680256); +emit_32(1098514432); +emit_32(1102383625); +emit_32(1124132848); +emit_32(1100759066); +emit_32(1102224504); +emit_32(1123680256); +emit_32(1100759066); +emit_32(1102114927); +emit_32(1124132848); +emit_32(1102807040); +emit_32(1101213834); +emit_32(1123680256); +emit_32(1102807040); +emit_32(1101213309); +emit_32(1124132848); +emit_32(1104855066); +emit_32(1100303408); +emit_32(1123680256); +emit_32(1104855066); +emit_32(1100341209); +emit_32(1124132848); +emit_32(1106903040); +emit_32(1099679610); +emit_32(1123680256); +emit_32(1106903040); +emit_32(1099911345); +emit_32(1124132848); +emit_32(1108123661); +emit_32(1099160984); +emit_32(1123680256); +emit_32(1108123661); +emit_32(1099586129); +emit_32(1124132848); +emit_32(1109147648); +emit_32(1098137259); +emit_32(1123680256); +emit_32(1109147648); +emit_32(1099190030); +emit_32(1124132848); +emit_32(1110171661); +emit_32(1097207906); +emit_32(1123680256); +emit_32(1110171661); +emit_32(1098581751); +emit_32(1124132848); +emit_32(1111195648); +emit_32(1096797074); +emit_32(1123680256); +emit_32(1111195648); +emit_32(1097483053); +emit_32(1124132848); +emit_32(1112219661); +emit_32(1097544709); +emit_32(1123680256); +emit_32(1112219661); +emit_32(1097178022); +emit_32(1124132848); +emit_32(1113243648); +emit_32(1097976408); +emit_32(1123680256); +emit_32(1113243648); +emit_32(1096978688); +emit_32(1124132848); +emit_32(1114267661); +emit_32(1097506541); +emit_32(1123680256); +emit_32(1114267661); +emit_32(1097352610); +emit_32(1124132848); +emit_32(1115291648); +emit_32(1097510945); +emit_32(1123680256); +emit_32(1115291648); +emit_32(1097969906); +emit_32(1124132848); +emit_32(1116000263); +emit_32(1097837262); +emit_32(1123680256); +emit_32(1116000263); +emit_32(1098943509); +emit_32(1124132848); +emit_32(1116512256); +emit_32(1098359872); +emit_32(1123680256); +emit_32(1116512256); +emit_32(1099235380); +emit_32(1124132848); +emit_32(1117024263); +emit_32(1097957533); +emit_32(1123680256); +emit_32(1117024263); +emit_32(1098875037); +emit_32(1124132848); +emit_32(1117536256); +emit_32(1098416705); +emit_32(1123680256); +emit_32(1117536256); +emit_32(1098919916); +emit_32(1124132848); +emit_32(1118048263); +emit_32(1098948385); +emit_32(1123680256); +emit_32(1118048263); +emit_32(1099015127); +emit_32(1124132848); +emit_32(1118560256); +emit_32(1099890845); +emit_32(1123680256); +emit_32(1118560256); +emit_32(1100384410); +emit_32(1124132848); +emit_32(1119072263); +emit_32(1100416863); +emit_32(1123680256); +emit_32(1119072263); +emit_32(1100817786); +emit_32(1124132848); +emit_32(1119584256); +emit_32(1100910848); +emit_32(1123680256); +emit_32(1119584256); +emit_32(1101157682); +emit_32(1124132848); +emit_32(1120096263); +emit_32(1102712825); +emit_32(1123680256); +emit_32(1120096263); +emit_32(1102698670); +emit_32(1124132848); +emit_32(1120608322); +emit_32(1103789661); +emit_32(1123680256); +emit_32(1120608322); +emit_32(1104088662); +emit_32(1124132848); +emit_32(1121120289); +emit_32(1104607602); +emit_32(1123680256); +emit_32(1121120289); +emit_32(1104975548); +emit_32(1124132848); +emit_32(1121632256); +emit_32(1105587811); +emit_32(1123680256); +emit_32(1121632256); +emit_32(1105705671); +emit_32(1124132848); +emit_32(1122144223); +emit_32(1106213025); +emit_32(1123680256); +emit_32(1122144223); +emit_32(1106546629); +emit_32(1124132848); +emit_32(1122656322); +emit_32(1106606765); +emit_32(1123680256); +emit_32(1122656322); +emit_32(1107224271); +emit_32(1124132848); +emit_32(1123168289); +emit_32(1107406409); +emit_32(1123680256); +emit_32(1123168289); +emit_32(1107432990); +emit_32(1124132848); +emit_32(1123680256); +emit_32(1108017021); +emit_32(1123680256); +emit_32(1123680256); +emit_32(1107870823); +emit_32(1124132848); +emit_32(1124132848); +emit_32(1108642890); +emit_32(1123680256); +emit_32(1124132848); +emit_32(1108611197); +emit_32(1124132848); +emit_32(1124388897); +emit_32(1108976940); +emit_32(1123680256); +emit_32(1124388897); +emit_32(1109002394); +emit_32(1124132848); +emit_32(1124644880); +emit_32(1108915991); +emit_32(1123680256); +emit_32(1124644880); +emit_32(1109174020); +emit_32(1124132848); +emit_32(1124900864); +emit_32(1109069713); +emit_32(1123680256); +emit_32(1124900864); +emit_32(1109145131); +emit_32(1124132848); +emit_32(1125156848); +emit_32(1108852159); +emit_32(1123680256); +emit_32(1125156848); +emit_32(1109111053); +emit_32(1124132848); +emit_32(1125412897); +emit_32(1109018044); +emit_32(1123680256); +emit_32(1125412897); +emit_32(1108982156); +emit_32(1124132848); +emit_32(1125668880); +emit_32(1109032776); +emit_32(1123680256); +emit_32(1125668880); +emit_32(1109159733); +emit_32(1124132848); +emit_32(1125924864); +emit_32(1109297490); +emit_32(1123680256); +emit_32(1125924864); +emit_32(1109315342); +emit_32(1124132848); +emit_32(1126180848); +emit_32(1109331018); +emit_32(1123680256); +emit_32(1126180848); +emit_32(1109210091); +emit_32(1124132848); +emit_32(1126436897); +emit_32(1109010285); +emit_32(1123680256); +emit_32(1126436897); +emit_32(1108929885); +emit_32(1124132848); +emit_32(1126692880); +emit_32(1108437919); +emit_32(1123680256); +emit_32(1126692880); +emit_32(1108541256); +emit_32(1124132848); +emit_32(1126948864); +emit_32(1108395583); +emit_32(1123680256); +emit_32(1126948864); +emit_32(1108339091); +emit_32(1124132848); +emit_32(1127204848); +emit_32(1108230432); +emit_32(1123680256); +emit_32(1127204848); +emit_32(1108284853); +emit_32(1124132848); +emit_32(1127460897); +emit_32(1107992091); +emit_32(1123680256); +emit_32(1127460897); +emit_32(1108246449); +emit_32(1124132848); +emit_32(1127716880); +emit_32(1107862408); +emit_32(1123680256); +emit_32(1127716880); +emit_32(1108208727); +emit_32(1124132848); +emit_32(1127972864); +emit_32(1107704336); +emit_32(1123680256); +emit_32(1127972864); +emit_32(1108242648); +emit_32(1124132848); +emit_32(1128228848); +emit_32(1107562018); +emit_32(1123680256); +emit_32(1128228848); +emit_32(1107828539); +emit_32(1124132848); +emit_32(1128484897); +emit_32(1106914679); +emit_32(1123680256); +emit_32(1128484897); +emit_32(1107302207); +emit_32(1124132848); +emit_32(1128740880); +emit_32(1105855984); +emit_32(1123680256); +emit_32(1128740880); +emit_32(1106125311); +emit_32(1124132848); +emit_32(1128996864); +emit_32(1104645194); +emit_32(1123680256); +emit_32(1128996864); +emit_32(1104882853); +emit_32(1124132848); +emit_32(1129252848); +emit_32(1103670490); +emit_32(1123680256); +emit_32(1129252848); +emit_32(1103712328); +emit_32(1124132848); +emit_32(1129508897); +emit_32(1102923956); +emit_32(1123680256); +emit_32(1129508897); +emit_32(1103248228); +emit_32(1124132848); +emit_32(1129764880); +emit_32(1102092435); +emit_32(1123680256); +emit_32(1129764880); +emit_32(1102281808); +emit_32(1124132848); +emit_32(1130020864); +emit_32(1101172887); +emit_32(1123680256); +emit_32(1130020864); +emit_32(1101935621); +emit_32(1124132848); +emit_32(1130276848); +emit_32(1101025876); +emit_32(1123680256); +emit_32(1130276848); +emit_32(1100815060); +emit_32(1124132848); +emit_32(1130532897); +emit_32(1101065722); +emit_32(1123680256); +emit_32(1130532897); +emit_32(1100889457); +emit_32(1124132848); +emit_32(1130788880); +emit_32(1101130577); +emit_32(1123680256); +emit_32(1130788880); +emit_32(1101023098); +emit_32(1124132848); +emit_32(1131044864); +emit_32(1100802530); +emit_32(1123680256); +emit_32(1131044864); +emit_32(1100560938); +emit_32(1124132848); +emit_32(1131300848); +emit_32(1100276983); +emit_32(1123680256); +emit_32(1131300848); +emit_32(1099884397); +emit_32(1124132848); +emit_32(1131556897); +emit_32(1099626499); +emit_32(1123680256); +emit_32(1131556897); +emit_32(1099776918); +emit_32(1124132848); +emit_32(1131812880); +emit_32(1099785830); +emit_32(1123680256); +emit_32(1131812880); +emit_32(1099406246); +emit_32(1124132848); +emit_32(1132068864); +emit_32(1099641599); +emit_32(1123680256); +emit_32(1132068864); +emit_32(1099062890); +emit_32(1124132848); +emit_32(1081737216); +emit_32(1100235512); +emit_32(1123168289); +emit_32(1090125824); +emit_32(1100861512); +emit_32(1123168289); +emit_32(1094418484); +emit_32(1101523373); +emit_32(1123168289); +emit_32(1098514432); +emit_32(1102177632); +emit_32(1123168289); +emit_32(1100759066); +emit_32(1102223140); +emit_32(1123168289); +emit_32(1102807040); +emit_32(1101084754); +emit_32(1123168289); +emit_32(1104855066); +emit_32(1099931897); +emit_32(1123168289); +emit_32(1106903040); +emit_32(1099771150); +emit_32(1123168289); +emit_32(1108123661); +emit_32(1099034001); +emit_32(1123168289); +emit_32(1109147648); +emit_32(1097525730); +emit_32(1123168289); +emit_32(1110171661); +emit_32(1097329331); +emit_32(1123168289); +emit_32(1111195648); +emit_32(1097895877); +emit_32(1123168289); +emit_32(1112219661); +emit_32(1098267283); +emit_32(1123168289); +emit_32(1113243648); +emit_32(1098019609); +emit_32(1123168289); +emit_32(1114267661); +emit_32(1097783994); +emit_32(1123168289); +emit_32(1115291648); +emit_32(1097984587); +emit_32(1123168289); +emit_32(1116000263); +emit_32(1098022755); +emit_32(1123168289); +emit_32(1116512256); +emit_32(1098026110); +emit_32(1123168289); +emit_32(1117024263); +emit_32(1097933206); +emit_32(1123168289); +emit_32(1117536256); +emit_32(1098931503); +emit_32(1123168289); +emit_32(1118048263); +emit_32(1099231973); +emit_32(1123168289); +emit_32(1118560256); +emit_32(1099649463); +emit_32(1123168289); +emit_32(1119072263); +emit_32(1100347343); +emit_32(1123168289); +emit_32(1119584256); +emit_32(1100400558); +emit_32(1123168289); +emit_32(1120096263); +emit_32(1101890794); +emit_32(1123168289); +emit_32(1120608322); +emit_32(1103399223); +emit_32(1123168289); +emit_32(1121120289); +emit_32(1104023703); +emit_32(1123168289); +emit_32(1121632256); +emit_32(1104903930); +emit_32(1123168289); +emit_32(1122144223); +emit_32(1105787670); +emit_32(1123168289); +emit_32(1122656322); +emit_32(1106319507); +emit_32(1123168289); +emit_32(1123168289); +emit_32(1107324096); +emit_32(1123168289); +emit_32(1123680256); +emit_32(1107997229); +emit_32(1123168289); +emit_32(1124132848); +emit_32(1108634344); +emit_32(1123168289); +emit_32(1124388897); +emit_32(1108819601); +emit_32(1123168289); +emit_32(1124644880); +emit_32(1108814096); +emit_32(1123168289); +emit_32(1124900864); +emit_32(1108757106); +emit_32(1123168289); +emit_32(1125156848); +emit_32(1108647897); +emit_32(1123168289); +emit_32(1125412897); +emit_32(1108920920); +emit_32(1123168289); +emit_32(1125668880); +emit_32(1109111000); +emit_32(1123168289); +emit_32(1125924864); +emit_32(1109475302); +emit_32(1123168289); +emit_32(1126180848); +emit_32(1109573422); +emit_32(1123168289); +emit_32(1126436897); +emit_32(1109272140); +emit_32(1123168289); +emit_32(1126692880); +emit_32(1108874101); +emit_32(1123168289); +emit_32(1126948864); +emit_32(1108464710); +emit_32(1123168289); +emit_32(1127204848); +emit_32(1108148460); +emit_32(1123168289); +emit_32(1127460897); +emit_32(1107996416); +emit_32(1123168289); +emit_32(1127716880); +emit_32(1107704781); +emit_32(1123168289); +emit_32(1127972864); +emit_32(1107621603); +emit_32(1123168289); +emit_32(1128228848); +emit_32(1107169798); +emit_32(1123168289); +emit_32(1128484897); +emit_32(1106434222); +emit_32(1123168289); +emit_32(1128740880); +emit_32(1105659953); +emit_32(1123168289); +emit_32(1128996864); +emit_32(1104548410); +emit_32(1123168289); +emit_32(1129252848); +emit_32(1103654289); +emit_32(1123168289); +emit_32(1129508897); +emit_32(1102602673); +emit_32(1123168289); +emit_32(1129764880); +emit_32(1101366401); +emit_32(1123168289); +emit_32(1130020864); +emit_32(1100673240); +emit_32(1123168289); +emit_32(1130276848); +emit_32(1100637012); +emit_32(1123168289); +emit_32(1130532897); +emit_32(1101126015); +emit_32(1123168289); +emit_32(1130788880); +emit_32(1101170999); +emit_32(1123168289); +emit_32(1131044864); +emit_32(1101134194); +emit_32(1123168289); +emit_32(1131300848); +emit_32(1101200569); +emit_32(1123168289); +emit_32(1131556897); +emit_32(1100148952); +emit_32(1123168289); +emit_32(1131812880); +emit_32(1099244241); +emit_32(1123168289); +emit_32(1132068864); +emit_32(1099746247); +emit_32(1123168289); +emit_32(1081737216); +emit_32(1100438045); +emit_32(1122656322); +emit_32(1090125824); +emit_32(1100591871); +emit_32(1122656322); +emit_32(1094418484); +emit_32(1101406352); +emit_32(1122656322); +emit_32(1098514432); +emit_32(1101309359); +emit_32(1122656322); +emit_32(1100759066); +emit_32(1101169112); +emit_32(1122656322); +emit_32(1102807040); +emit_32(1100305872); +emit_32(1122656322); +emit_32(1104855066); +emit_32(1099701682); +emit_32(1122656322); +emit_32(1106903040); +emit_32(1099474561); +emit_32(1122656322); +emit_32(1108123661); +emit_32(1098570950); +emit_32(1122656322); +emit_32(1109147648); +emit_32(1097605421); +emit_32(1122656322); +emit_32(1110171661); +emit_32(1097274386); +emit_32(1122656322); +emit_32(1111195648); +emit_32(1097648413); +emit_32(1122656322); +emit_32(1112219661); +emit_32(1097935199); +emit_32(1122656322); +emit_32(1113243648); +emit_32(1097655229); +emit_32(1122656322); +emit_32(1114267661); +emit_32(1098651795); +emit_32(1122656322); +emit_32(1115291648); +emit_32(1099066193); +emit_32(1122656322); +emit_32(1116000263); +emit_32(1098931189); +emit_32(1122656322); +emit_32(1116512256); +emit_32(1098814849); +emit_32(1122656322); +emit_32(1117024263); +emit_32(1098993264); +emit_32(1122656322); +emit_32(1117536256); +emit_32(1099606157); +emit_32(1122656322); +emit_32(1118048263); +emit_32(1099571344); +emit_32(1122656322); +emit_32(1118560256); +emit_32(1099949408); +emit_32(1122656322); +emit_32(1119072263); +emit_32(1100115817); +emit_32(1122656322); +emit_32(1119584256); +emit_32(1100095947); +emit_32(1122656322); +emit_32(1120096263); +emit_32(1100761740); +emit_32(1122656322); +emit_32(1120608322); +emit_32(1101924191); +emit_32(1122656322); +emit_32(1121120289); +emit_32(1102920810); +emit_32(1122656322); +emit_32(1121632256); +emit_32(1103899499); +emit_32(1122656322); +emit_32(1122144223); +emit_32(1105260918); +emit_32(1122656322); +emit_32(1122656322); +emit_32(1106034347); +emit_32(1122656322); +emit_32(1123168289); +emit_32(1107198004); +emit_32(1122656322); +emit_32(1123680256); +emit_32(1107826495); +emit_32(1122656322); +emit_32(1124132848); +emit_32(1108446937); +emit_32(1122656322); +emit_32(1124388897); +emit_32(1108618065); +emit_32(1122656322); +emit_32(1124644880); +emit_32(1108561835); +emit_32(1122656322); +emit_32(1124900864); +emit_32(1108406410); +emit_32(1122656322); +emit_32(1125156848); +emit_32(1108576174); +emit_32(1122656322); +emit_32(1125412897); +emit_32(1109301448); +emit_32(1122656322); +emit_32(1125668880); +emit_32(1109829249); +emit_32(1122656322); +emit_32(1125924864); +emit_32(1110051154); +emit_32(1122656322); +emit_32(1126180848); +emit_32(1110198478); +emit_32(1122656322); +emit_32(1126436897); +emit_32(1109858268); +emit_32(1122656322); +emit_32(1126692880); +emit_32(1109550301); +emit_32(1122656322); +emit_32(1126948864); +emit_32(1108917669); +emit_32(1122656322); +emit_32(1127204848); +emit_32(1108613005); +emit_32(1122656322); +emit_32(1127460897); +emit_32(1108306375); +emit_32(1122656322); +emit_32(1127716880); +emit_32(1107971382); +emit_32(1122656322); +emit_32(1127972864); +emit_32(1107731022); +emit_32(1122656322); +emit_32(1128228848); +emit_32(1107436241); +emit_32(1122656322); +emit_32(1128484897); +emit_32(1106805103); +emit_32(1122656322); +emit_32(1128740880); +emit_32(1105736132); +emit_32(1122656322); +emit_32(1128996864); +emit_32(1104687818); +emit_32(1122656322); +emit_32(1129252848); +emit_32(1103709969); +emit_32(1122656322); +emit_32(1129508897); +emit_32(1102382734); +emit_32(1122656322); +emit_32(1129764880); +emit_32(1101330121); +emit_32(1122656322); +emit_32(1130020864); +emit_32(1100614520); +emit_32(1122656322); +emit_32(1130276848); +emit_32(1100389233); +emit_32(1122656322); +emit_32(1130532897); +emit_32(1100597690); +emit_32(1122656322); +emit_32(1130788880); +emit_32(1101237636); +emit_32(1122656322); +emit_32(1131044864); +emit_32(1101286500); +emit_32(1122656322); +emit_32(1131300848); +emit_32(1101166386); +emit_32(1122656322); +emit_32(1131556897); +emit_32(1100711041); +emit_32(1122656322); +emit_32(1131812880); +emit_32(1099946053); +emit_32(1122656322); +emit_32(1132068864); +emit_32(1099609932); +emit_32(1122656322); +emit_32(1081737216); +emit_32(1100139620); +emit_32(1122144223); +emit_32(1090125824); +emit_32(1100323697); +emit_32(1122144223); +emit_32(1094418484); +emit_32(1100674708); +emit_32(1122144223); +emit_32(1098514432); +emit_32(1100753299); +emit_32(1122144223); +emit_32(1100759066); +emit_32(1100255278); +emit_32(1122144223); +emit_32(1102807040); +emit_32(1099783052); +emit_32(1122144223); +emit_32(1104855066); +emit_32(1099327131); +emit_32(1122144223); +emit_32(1106903040); +emit_32(1099190764); +emit_32(1122144223); +emit_32(1108123661); +emit_32(1098756443); +emit_32(1122144223); +emit_32(1109147648); +emit_32(1097994967); +emit_32(1122144223); +emit_32(1110171661); +emit_32(1098760743); +emit_32(1122144223); +emit_32(1111195648); +emit_32(1099136762); +emit_32(1122144223); +emit_32(1112219661); +emit_32(1099063729); +emit_32(1122144223); +emit_32(1113243648); +emit_32(1099278634); +emit_32(1122144223); +emit_32(1114267661); +emit_32(1099336883); +emit_32(1122144223); +emit_32(1115291648); +emit_32(1099511261); +emit_32(1122144223); +emit_32(1116000263); +emit_32(1099185311); +emit_32(1122144223); +emit_32(1116512256); +emit_32(1098779931); +emit_32(1122144223); +emit_32(1117024263); +emit_32(1099229561); +emit_32(1122144223); +emit_32(1117536256); +emit_32(1099456787); +emit_32(1122144223); +emit_32(1118048263); +emit_32(1099608673); +emit_32(1122144223); +emit_32(1118560256); +emit_32(1099933417); +emit_32(1122144223); +emit_32(1119072263); +emit_32(1100161640); +emit_32(1122144223); +emit_32(1119584256); +emit_32(1100494039); +emit_32(1122144223); +emit_32(1120096263); +emit_32(1100626841); +emit_32(1122144223); +emit_32(1120608322); +emit_32(1101085173); +emit_32(1122144223); +emit_32(1121120289); +emit_32(1102206573); +emit_32(1122144223); +emit_32(1121632256); +emit_32(1103460303); +emit_32(1122144223); +emit_32(1122144223); +emit_32(1104032825); +emit_32(1122144223); +emit_32(1122656322); +emit_32(1105660740); +emit_32(1122144223); +emit_32(1123168289); +emit_32(1106883065); +emit_32(1122144223); +emit_32(1123680256); +emit_32(1107680480); +emit_32(1122144223); +emit_32(1124132848); +emit_32(1108110344); +emit_32(1122144223); +emit_32(1124388897); +emit_32(1108454854); +emit_32(1122144223); +emit_32(1124644880); +emit_32(1108686065); +emit_32(1122144223); +emit_32(1124900864); +emit_32(1108654057); +emit_32(1122144223); +emit_32(1125156848); +emit_32(1108922519); +emit_32(1122144223); +emit_32(1125412897); +emit_32(1109770450); +emit_32(1122144223); +emit_32(1125668880); +emit_32(1110434487); +emit_32(1122144223); +emit_32(1125924864); +emit_32(1110705884); +emit_32(1122144223); +emit_32(1126180848); +emit_32(1110743214); +emit_32(1122144223); +emit_32(1126436897); +emit_32(1110390656); +emit_32(1122144223); +emit_32(1126692880); +emit_32(1110053093); +emit_32(1122144223); +emit_32(1126948864); +emit_32(1109488042); +emit_32(1122144223); +emit_32(1127204848); +emit_32(1108960713); +emit_32(1122144223); +emit_32(1127460897); +emit_32(1108725701); +emit_32(1122144223); +emit_32(1127716880); +emit_32(1108233840); +emit_32(1122144223); +emit_32(1127972864); +emit_32(1107884455); +emit_32(1122144223); +emit_32(1128228848); +emit_32(1107301971); +emit_32(1122144223); +emit_32(1128484897); +emit_32(1106353639); +emit_32(1122144223); +emit_32(1128740880); +emit_32(1105631956); +emit_32(1122144223); +emit_32(1128996864); +emit_32(1104783920); +emit_32(1122144223); +emit_32(1129252848); +emit_32(1103622046); +emit_32(1122144223); +emit_32(1129508897); +emit_32(1102332926); +emit_32(1122144223); +emit_32(1129764880); +emit_32(1100887622); +emit_32(1122144223); +emit_32(1130020864); +emit_32(1100248410); +emit_32(1122144223); +emit_32(1130276848); +emit_32(1100033242); +emit_32(1122144223); +emit_32(1130532897); +emit_32(1099938346); +emit_32(1122144223); +emit_32(1130788880); +emit_32(1100585370); +emit_32(1122144223); +emit_32(1131044864); +emit_32(1101043650); +emit_32(1122144223); +emit_32(1131300848); +emit_32(1101065565); +emit_32(1122144223); +emit_32(1131556897); +emit_32(1100500540); +emit_32(1122144223); +emit_32(1131812880); +emit_32(1100135373); +emit_32(1122144223); +emit_32(1132068864); +emit_32(1100354840); +emit_32(1122144223); +emit_32(1081737216); +emit_32(1099957115); +emit_32(1121632256); +emit_32(1090125824); +emit_32(1100037593); +emit_32(1121632256); +emit_32(1094418484); +emit_32(1100062445); +emit_32(1121632256); +emit_32(1098514432); +emit_32(1100063284); +emit_32(1121632256); +emit_32(1100759066); +emit_32(1099841195); +emit_32(1121632256); +emit_32(1102807040); +emit_32(1099713898); +emit_32(1121632256); +emit_32(1104855066); +emit_32(1099359951); +emit_32(1121632256); +emit_32(1106903040); +emit_32(1098837289); +emit_32(1121632256); +emit_32(1108123661); +emit_32(1098060399); +emit_32(1121632256); +emit_32(1109147648); +emit_32(1098949381); +emit_32(1121632256); +emit_32(1110171661); +emit_32(1099007001); +emit_32(1121632256); +emit_32(1111195648); +emit_32(1098883950); +emit_32(1121632256); +emit_32(1112219661); +emit_32(1099407242); +emit_32(1121632256); +emit_32(1113243648); +emit_32(1099479174); +emit_32(1121632256); +emit_32(1114267661); +emit_32(1099627076); +emit_32(1121632256); +emit_32(1115291648); +emit_32(1099212207); +emit_32(1121632256); +emit_32(1116000263); +emit_32(1099332898); +emit_32(1121632256); +emit_32(1116512256); +emit_32(1099391985); +emit_32(1121632256); +emit_32(1117024263); +emit_32(1099349203); +emit_32(1121632256); +emit_32(1117536256); +emit_32(1099452960); +emit_32(1121632256); +emit_32(1118048263); +emit_32(1099360476); +emit_32(1121632256); +emit_32(1118560256); +emit_32(1099645374); +emit_32(1121632256); +emit_32(1119072263); +emit_32(1099926864); +emit_32(1121632256); +emit_32(1119584256); +emit_32(1100231737); +emit_32(1121632256); +emit_32(1120096263); +emit_32(1100104545); +emit_32(1121632256); +emit_32(1120608322); +emit_32(1100531630); +emit_32(1121632256); +emit_32(1121120289); +emit_32(1101229824); +emit_32(1121632256); +emit_32(1121632256); +emit_32(1102138835); +emit_32(1121632256); +emit_32(1122144223); +emit_32(1103981340); +emit_32(1121632256); +emit_32(1122656322); +emit_32(1105126595); +emit_32(1121632256); +emit_32(1123168289); +emit_32(1106590722); +emit_32(1121632256); +emit_32(1123680256); +emit_32(1107669182); +emit_32(1121632256); +emit_32(1124132848); +emit_32(1107932296); +emit_32(1121632256); +emit_32(1124388897); +emit_32(1108574129); +emit_32(1121632256); +emit_32(1124644880); +emit_32(1108726278); +emit_32(1121632256); +emit_32(1124900864); +emit_32(1108737393); +emit_32(1121632256); +emit_32(1125156848); +emit_32(1109413095); +emit_32(1121632256); +emit_32(1125412897); +emit_32(1110114933); +emit_32(1121632256); +emit_32(1125668880); +emit_32(1110645303); +emit_32(1121632256); +emit_32(1125924864); +emit_32(1111013117); +emit_32(1121632256); +emit_32(1126180848); +emit_32(1111064655); +emit_32(1121632256); +emit_32(1126436897); +emit_32(1110758890); +emit_32(1121632256); +emit_32(1126692880); +emit_32(1110376107); +emit_32(1121632256); +emit_32(1126948864); +emit_32(1109822407); +emit_32(1121632256); +emit_32(1127204848); +emit_32(1109326797); +emit_32(1121632256); +emit_32(1127460897); +emit_32(1108601838); +emit_32(1121632256); +emit_32(1127716880); +emit_32(1108258010); +emit_32(1121632256); +emit_32(1127972864); +emit_32(1108088245); +emit_32(1121632256); +emit_32(1128228848); +emit_32(1107411154); +emit_32(1121632256); +emit_32(1128484897); +emit_32(1106040377); +emit_32(1121632256); +emit_32(1128740880); +emit_32(1105294629); +emit_32(1121632256); +emit_32(1128996864); +emit_32(1104278664); +emit_32(1121632256); +emit_32(1129252848); +emit_32(1103177554); +emit_32(1121632256); +emit_32(1129508897); +emit_32(1102109580); +emit_32(1121632256); +emit_32(1129764880); +emit_32(1101025824); +emit_32(1121632256); +emit_32(1130020864); +emit_32(1099990984); +emit_32(1121632256); +emit_32(1130276848); +emit_32(1099361681); +emit_32(1121632256); +emit_32(1130532897); +emit_32(1099399011); +emit_32(1121632256); +emit_32(1130788880); +emit_32(1099424229); +emit_32(1121632256); +emit_32(1131044864); +emit_32(1099786407); +emit_32(1121632256); +emit_32(1131300848); +emit_32(1100148585); +emit_32(1121632256); +emit_32(1131556897); +emit_32(1100174118); +emit_32(1121632256); +emit_32(1131812880); +emit_32(1100070047); +emit_32(1121632256); +emit_32(1132068864); +emit_32(1100267704); +emit_32(1121632256); +emit_32(1081737216); +emit_32(1099935672); +emit_32(1121120289); +emit_32(1090125824); +emit_32(1100185285); +emit_32(1121120289); +emit_32(1094418484); +emit_32(1100187225); +emit_32(1121120289); +emit_32(1098514432); +emit_32(1099887280); +emit_32(1121120289); +emit_32(1100759066); +emit_32(1099826148); +emit_32(1121120289); +emit_32(1102807040); +emit_32(1099732563); +emit_32(1121120289); +emit_32(1104855066); +emit_32(1099085749); +emit_32(1121120289); +emit_32(1106903040); +emit_32(1098762735); +emit_32(1121120289); +emit_32(1108123661); +emit_32(1098970248); +emit_32(1121120289); +emit_32(1109147648); +emit_32(1099373740); +emit_32(1121120289); +emit_32(1110171661); +emit_32(1099054658); +emit_32(1121120289); +emit_32(1111195648); +emit_32(1098747635); +emit_32(1121120289); +emit_32(1112219661); +emit_32(1099059272); +emit_32(1121120289); +emit_32(1113243648); +emit_32(1099057280); +emit_32(1121120289); +emit_32(1114267661); +emit_32(1099293943); +emit_32(1121120289); +emit_32(1115291648); +emit_32(1099644535); +emit_32(1121120289); +emit_32(1116000263); +emit_32(1099369441); +emit_32(1121120289); +emit_32(1116512256); +emit_32(1099598817); +emit_32(1121120289); +emit_32(1117024263); +emit_32(1099807641); +emit_32(1121120289); +emit_32(1117536256); +emit_32(1099466382); +emit_32(1121120289); +emit_32(1118048263); +emit_32(1099290640); +emit_32(1121120289); +emit_32(1118560256); +emit_32(1099113641); +emit_32(1121120289); +emit_32(1119072263); +emit_32(1099247124); +emit_32(1121120289); +emit_32(1119584256); +emit_32(1099832754); +emit_32(1121120289); +emit_32(1120096263); +emit_32(1100177054); +emit_32(1121120289); +emit_32(1120608322); +emit_32(1100171549); +emit_32(1121120289); +emit_32(1121120289); +emit_32(1100677172); +emit_32(1121120289); +emit_32(1121632256); +emit_32(1101971063); +emit_32(1121120289); +emit_32(1122144223); +emit_32(1103633737); +emit_32(1121120289); +emit_32(1122656322); +emit_32(1104631195); +emit_32(1121120289); +emit_32(1123168289); +emit_32(1106163951); +emit_32(1121120289); +emit_32(1123680256); +emit_32(1107425676); +emit_32(1121120289); +emit_32(1124132848); +emit_32(1107927394); +emit_32(1121120289); +emit_32(1124388897); +emit_32(1108148145); +emit_32(1121120289); +emit_32(1124644880); +emit_32(1108470268); +emit_32(1121120289); +emit_32(1124900864); +emit_32(1108816246); +emit_32(1121120289); +emit_32(1125156848); +emit_32(1109543145); +emit_32(1121120289); +emit_32(1125412897); +emit_32(1110276781); +emit_32(1121120289); +emit_32(1125668880); +emit_32(1110909649); +emit_32(1121120289); +emit_32(1125924864); +emit_32(1111224091); +emit_32(1121120289); +emit_32(1126180848); +emit_32(1111301135); +emit_32(1121120289); +emit_32(1126436897); +emit_32(1111167992); +emit_32(1121120289); +emit_32(1126692880); +emit_32(1110709345); +emit_32(1121120289); +emit_32(1126948864); +emit_32(1110071837); +emit_32(1121120289); +emit_32(1127204848); +emit_32(1109390262); +emit_32(1121120289); +emit_32(1127460897); +emit_32(1108886238); +emit_32(1121120289); +emit_32(1127716880); +emit_32(1108757814); +emit_32(1121120289); +emit_32(1127972864); +emit_32(1108248258); +emit_32(1121120289); +emit_32(1128228848); +emit_32(1107404862); +emit_32(1121120289); +emit_32(1128484897); +emit_32(1106003467); +emit_32(1121120289); +emit_32(1128740880); +emit_32(1104821354); +emit_32(1121120289); +emit_32(1128996864); +emit_32(1104184607); +emit_32(1121120289); +emit_32(1129252848); +emit_32(1103554570); +emit_32(1121120289); +emit_32(1129508897); +emit_32(1102588989); +emit_32(1121120289); +emit_32(1129764880); +emit_32(1101617378); +emit_32(1121120289); +emit_32(1130020864); +emit_32(1100444598); +emit_32(1121120289); +emit_32(1130276848); +emit_32(1099799619); +emit_32(1121120289); +emit_32(1130532897); +emit_32(1099403939); +emit_32(1121120289); +emit_32(1130788880); +emit_32(1099507276); +emit_32(1121120289); +emit_32(1131044864); +emit_32(1099782737); +emit_32(1121120289); +emit_32(1131300848); +emit_32(1099916535); +emit_32(1121120289); +emit_32(1131556897); +emit_32(1099956486); +emit_32(1121120289); +emit_32(1131812880); +emit_32(1100280182); +emit_32(1121120289); +emit_32(1132068864); +emit_32(1100594020); +emit_32(1121120289); +emit_32(1081737216); +emit_32(1099802817); +emit_32(1120608322); +emit_32(1090125824); +emit_32(1100171706); +emit_32(1120608322); +emit_32(1094418484); +emit_32(1099951820); +emit_32(1120608322); +emit_32(1098514432); +emit_32(1100236666); +emit_32(1120608322); +emit_32(1100759066); +emit_32(1100302621); +emit_32(1120608322); +emit_32(1102807040); +emit_32(1099644797); +emit_32(1120608322); +emit_32(1104855066); +emit_32(1099555458); +emit_32(1120608322); +emit_32(1106903040); +emit_32(1099452645); +emit_32(1120608322); +emit_32(1108123661); +emit_32(1099951138); +emit_32(1120608322); +emit_32(1109147648); +emit_32(1100092696); +emit_32(1120608322); +emit_32(1110171661); +emit_32(1099905735); +emit_32(1120608322); +emit_32(1111195648); +emit_32(1099555563); +emit_32(1120608322); +emit_32(1112219661); +emit_32(1098964743); +emit_32(1120608322); +emit_32(1113243648); +emit_32(1099224475); +emit_32(1120608322); +emit_32(1114267661); +emit_32(1099204185); +emit_32(1120608322); +emit_32(1115291648); +emit_32(1099361419); +emit_32(1120608322); +emit_32(1116000263); +emit_32(1099438385); +emit_32(1120608322); +emit_32(1116512256); +emit_32(1099693294); +emit_32(1120608322); +emit_32(1117024263); +emit_32(1099966448); +emit_32(1120608322); +emit_32(1117536256); +emit_32(1099611085); +emit_32(1120608322); +emit_32(1118048263); +emit_32(1099352087); +emit_32(1120608322); +emit_32(1118560256); +emit_32(1098341627); +emit_32(1120608322); +emit_32(1119072263); +emit_32(1098488322); +emit_32(1120608322); +emit_32(1119584256); +emit_32(1099373688); +emit_32(1120608322); +emit_32(1120096263); +emit_32(1099586286); +emit_32(1120608322); +emit_32(1120608322); +emit_32(1099611819); +emit_32(1120608322); +emit_32(1121120289); +emit_32(1100077125); +emit_32(1120608322); +emit_32(1121632256); +emit_32(1101296094); +emit_32(1120608322); +emit_32(1122144223); +emit_32(1102346872); +emit_32(1120608322); +emit_32(1122656322); +emit_32(1103678512); +emit_32(1120608322); +emit_32(1123168289); +emit_32(1105306478); +emit_32(1120608322); +emit_32(1123680256); +emit_32(1106488852); +emit_32(1120608322); +emit_32(1124132848); +emit_32(1107446438); +emit_32(1120608322); +emit_32(1124388897); +emit_32(1107966506); +emit_32(1120608322); +emit_32(1124644880); +emit_32(1108466205); +emit_32(1120608322); +emit_32(1124900864); +emit_32(1108823481); +emit_32(1120608322); +emit_32(1125156848); +emit_32(1109507624); +emit_32(1120608322); +emit_32(1125412897); +emit_32(1110351387); +emit_32(1120608322); +emit_32(1125668880); +emit_32(1111019749); +emit_32(1120608322); +emit_32(1125924864); +emit_32(1111329971); +emit_32(1120608322); +emit_32(1126180848); +emit_32(1111365308); +emit_32(1120608322); +emit_32(1126436897); +emit_32(1111184166); +emit_32(1120608322); +emit_32(1126692880); +emit_32(1110574760); +emit_32(1120608322); +emit_32(1126948864); +emit_32(1110380328); +emit_32(1120608322); +emit_32(1127204848); +emit_32(1109912165); +emit_32(1120608322); +emit_32(1127460897); +emit_32(1109599191); +emit_32(1120608322); +emit_32(1127716880); +emit_32(1109069372); +emit_32(1120608322); +emit_32(1127972864); +emit_32(1108386487); +emit_32(1120608322); +emit_32(1128228848); +emit_32(1107668422); +emit_32(1120608322); +emit_32(1128484897); +emit_32(1106120173); +emit_32(1120608322); +emit_32(1128740880); +emit_32(1104797657); +emit_32(1120608322); +emit_32(1128996864); +emit_32(1104352117); +emit_32(1120608322); +emit_32(1129252848); +emit_32(1103791338); +emit_32(1120608322); +emit_32(1129508897); +emit_32(1102834355); +emit_32(1120608322); +emit_32(1129764880); +emit_32(1102173438); +emit_32(1120608322); +emit_32(1130020864); +emit_32(1101005534); +emit_32(1120608322); +emit_32(1130276848); +emit_32(1100530582); +emit_32(1120608322); +emit_32(1130532897); +emit_32(1099941020); +emit_32(1120608322); +emit_32(1130788880); +emit_32(1099395393); +emit_32(1120608322); +emit_32(1131044864); +emit_32(1099621676); +emit_32(1120608322); +emit_32(1131300848); +emit_32(1099449605); +emit_32(1120608322); +emit_32(1131556897); +emit_32(1099506595); +emit_32(1120608322); +emit_32(1131812880); +emit_32(1100131336); +emit_32(1120608322); +emit_32(1132068864); +emit_32(1100624377); +emit_32(1120608322); +emit_32(1081737216); +emit_32(1099965451); +emit_32(1120096263); +emit_32(1090125824); +emit_32(1100056678); +emit_32(1120096263); +emit_32(1094418484); +emit_32(1099809423); +emit_32(1120096263); +emit_32(1098514432); +emit_32(1100136789); +emit_32(1120096263); +emit_32(1100759066); +emit_32(1100328573); +emit_32(1120096263); +emit_32(1102807040); +emit_32(1099649149); +emit_32(1120096263); +emit_32(1104855066); +emit_32(1099960680); +emit_32(1120096263); +emit_32(1106903040); +emit_32(1100214383); +emit_32(1120096263); +emit_32(1108123661); +emit_32(1100707214); +emit_32(1120096263); +emit_32(1109147648); +emit_32(1100899838); +emit_32(1120096263); +emit_32(1110171661); +emit_32(1100765934); +emit_32(1120096263); +emit_32(1111195648); +emit_32(1100769552); +emit_32(1120096263); +emit_32(1112219661); +emit_32(1099924609); +emit_32(1120096263); +emit_32(1113243648); +emit_32(1099242301); +emit_32(1120096263); +emit_32(1114267661); +emit_32(1098940101); +emit_32(1120096263); +emit_32(1115291648); +emit_32(1099295726); +emit_32(1120096263); +emit_32(1116000263); +emit_32(1099408343); +emit_32(1120096263); +emit_32(1116512256); +emit_32(1099741895); +emit_32(1120096263); +emit_32(1117024263); +emit_32(1099493854); +emit_32(1120096263); +emit_32(1117536256); +emit_32(1099382810); +emit_32(1120096263); +emit_32(1118048263); +emit_32(1099116734); +emit_32(1120096263); +emit_32(1118560256); +emit_32(1098839491); +emit_32(1120096263); +emit_32(1119072263); +emit_32(1098942461); +emit_32(1120096263); +emit_32(1119584256); +emit_32(1099008626); +emit_32(1120096263); +emit_32(1120096263); +emit_32(1099170002); +emit_32(1120096263); +emit_32(1120608322); +emit_32(1099494064); +emit_32(1120096263); +emit_32(1121120289); +emit_32(1099581830); +emit_32(1120096263); +emit_32(1121632256); +emit_32(1100481875); +emit_32(1120096263); +emit_32(1122144223); +emit_32(1101530032); +emit_32(1120096263); +emit_32(1122656322); +emit_32(1102909853); +emit_32(1120096263); +emit_32(1123168289); +emit_32(1104403812); +emit_32(1120096263); +emit_32(1123680256); +emit_32(1105884611); +emit_32(1120096263); +emit_32(1124132848); +emit_32(1107445731); +emit_32(1120096263); +emit_32(1124388897); +emit_32(1107970254); +emit_32(1120096263); +emit_32(1124644880); +emit_32(1108388505); +emit_32(1120096263); +emit_32(1124900864); +emit_32(1108761877); +emit_32(1120096263); +emit_32(1125156848); +emit_32(1109478133); +emit_32(1120096263); +emit_32(1125412897); +emit_32(1110090973); +emit_32(1120096263); +emit_32(1125668880); +emit_32(1110851033); +emit_32(1120096263); +emit_32(1125924864); +emit_32(1111411497); +emit_32(1120096263); +emit_32(1126180848); +emit_32(1111336655); +emit_32(1120096263); +emit_32(1126436897); +emit_32(1111269415); +emit_32(1120096263); +emit_32(1126692880); +emit_32(1110784292); +emit_32(1120096263); +emit_32(1126948864); +emit_32(1110653508); +emit_32(1120096263); +emit_32(1127204848); +emit_32(1110359330); +emit_32(1120096263); +emit_32(1127460897); +emit_32(1109834623); +emit_32(1120096263); +emit_32(1127716880); +emit_32(1109238009); +emit_32(1120096263); +emit_32(1127972864); +emit_32(1108505212); +emit_32(1120096263); +emit_32(1128228848); +emit_32(1107662209); +emit_32(1120096263); +emit_32(1128484897); +emit_32(1106214755); +emit_32(1120096263); +emit_32(1128740880); +emit_32(1105231400); +emit_32(1120096263); +emit_32(1128996864); +emit_32(1104882277); +emit_32(1120096263); +emit_32(1129252848); +emit_32(1103989781); +emit_32(1120096263); +emit_32(1129508897); +emit_32(1103333268); +emit_32(1120096263); +emit_32(1129764880); +emit_32(1102701186); +emit_32(1120096263); +emit_32(1130020864); +emit_32(1101762396); +emit_32(1120096263); +emit_32(1130276848); +emit_32(1100764257); +emit_32(1120096263); +emit_32(1130532897); +emit_32(1100213020); +emit_32(1120096263); +emit_32(1130788880); +emit_32(1099813093); +emit_32(1120096263); +emit_32(1131044864); +emit_32(1099177080); +emit_32(1120096263); +emit_32(1131300848); +emit_32(1099042862); +emit_32(1120096263); +emit_32(1131556897); +emit_32(1098988336); +emit_32(1120096263); +emit_32(1131812880); +emit_32(1099476815); +emit_32(1120096263); +emit_32(1132068864); +emit_32(1100226285); +emit_32(1120096263); +emit_32(1081737216); +emit_32(1099519545); +emit_32(1119584256); +emit_32(1090125824); +emit_32(1099335991); +emit_32(1119584256); +emit_32(1094418484); +emit_32(1099709442); +emit_32(1119584256); +emit_32(1098514432); +emit_32(1100359978); +emit_32(1119584256); +emit_32(1100759066); +emit_32(1100132490); +emit_32(1119584256); +emit_32(1102807040); +emit_32(1100526073); +emit_32(1119584256); +emit_32(1104855066); +emit_32(1100876716); +emit_32(1119584256); +emit_32(1106903040); +emit_32(1101010724); +emit_32(1119584256); +emit_32(1108123661); +emit_32(1101185208); +emit_32(1119584256); +emit_32(1109147648); +emit_32(1101761557); +emit_32(1119584256); +emit_32(1110171661); +emit_32(1101844080); +emit_32(1119584256); +emit_32(1111195648); +emit_32(1101813409); +emit_32(1119584256); +emit_32(1112219661); +emit_32(1101402839); +emit_32(1119584256); +emit_32(1113243648); +emit_32(1100438936); +emit_32(1119584256); +emit_32(1114267661); +emit_32(1099786984); +emit_32(1119584256); +emit_32(1115291648); +emit_32(1099715523); +emit_32(1119584256); +emit_32(1116000263); +emit_32(1099745985); +emit_32(1119584256); +emit_32(1116512256); +emit_32(1100093902); +emit_32(1119584256); +emit_32(1117024263); +emit_32(1100168351); +emit_32(1119584256); +emit_32(1117536256); +emit_32(1100068946); +emit_32(1119584256); +emit_32(1118048263); +emit_32(1100204894); +emit_32(1119584256); +emit_32(1118560256); +emit_32(1099776865); +emit_32(1119584256); +emit_32(1119072263); +emit_32(1099815715); +emit_32(1119584256); +emit_32(1119584256); +emit_32(1100174957); +emit_32(1119584256); +emit_32(1120096263); +emit_32(1100503528); +emit_32(1119584256); +emit_32(1120608322); +emit_32(1100870425); +emit_32(1119584256); +emit_32(1121120289); +emit_32(1100930771); +emit_32(1119584256); +emit_32(1121632256); +emit_32(1100869219); +emit_32(1119584256); +emit_32(1122144223); +emit_32(1101778439); +emit_32(1119584256); +emit_32(1122656322); +emit_32(1103199574); +emit_32(1119584256); +emit_32(1123168289); +emit_32(1104588361); +emit_32(1119584256); +emit_32(1123680256); +emit_32(1106227809); +emit_32(1119584256); +emit_32(1124132848); +emit_32(1107512970); +emit_32(1119584256); +emit_32(1124388897); +emit_32(1107998251); +emit_32(1119584256); +emit_32(1124644880); +emit_32(1108347008); +emit_32(1119584256); +emit_32(1124900864); +emit_32(1108602048); +emit_32(1119584256); +emit_32(1125156848); +emit_32(1109290831); +emit_32(1119584256); +emit_32(1125412897); +emit_32(1109977176); +emit_32(1119584256); +emit_32(1125668880); +emit_32(1110570959); +emit_32(1119584256); +emit_32(1125924864); +emit_32(1111274737); +emit_32(1119584256); +emit_32(1126180848); +emit_32(1111376973); +emit_32(1119584256); +emit_32(1126436897); +emit_32(1111218586); +emit_32(1119584256); +emit_32(1126692880); +emit_32(1110884090); +emit_32(1119584256); +emit_32(1126948864); +emit_32(1110905140); +emit_32(1119584256); +emit_32(1127204848); +emit_32(1110659642); +emit_32(1119584256); +emit_32(1127460897); +emit_32(1110072466); +emit_32(1119584256); +emit_32(1127716880); +emit_32(1109486102); +emit_32(1119584256); +emit_32(1127972864); +emit_32(1108855960); +emit_32(1119584256); +emit_32(1128228848); +emit_32(1108119781); +emit_32(1119584256); +emit_32(1128484897); +emit_32(1107034689); +emit_32(1119584256); +emit_32(1128740880); +emit_32(1106087772); +emit_32(1119584256); +emit_32(1128996864); +emit_32(1105093617); +emit_32(1119584256); +emit_32(1129252848); +emit_32(1104335182); +emit_32(1119584256); +emit_32(1129508897); +emit_32(1104074192); +emit_32(1119584256); +emit_32(1129764880); +emit_32(1103483057); +emit_32(1119584256); +emit_32(1130020864); +emit_32(1102981208); +emit_32(1119584256); +emit_32(1130276848); +emit_32(1101489714); +emit_32(1119584256); +emit_32(1130532897); +emit_32(1100552235); +emit_32(1119584256); +emit_32(1130788880); +emit_32(1100255278); +emit_32(1119584256); +emit_32(1131044864); +emit_32(1099722392); +emit_32(1119584256); +emit_32(1131300848); +emit_32(1097754634); +emit_32(1119584256); +emit_32(1131556897); +emit_32(1099078199); +emit_32(1119584256); +emit_32(1131812880); +emit_32(1098909588); +emit_32(1119584256); +emit_32(1132068864); +emit_32(1098899364); +emit_32(1119584256); +emit_32(1081737216); +emit_32(1098532992); +emit_32(1119072263); +emit_32(1090125824); +emit_32(1099050359); +emit_32(1119072263); +emit_32(1094418484); +emit_32(1099771203); +emit_32(1119072263); +emit_32(1098514432); +emit_32(1100405277); +emit_32(1119072263); +emit_32(1100759066); +emit_32(1100821823); +emit_32(1119072263); +emit_32(1102807040); +emit_32(1101489399); +emit_32(1119072263); +emit_32(1104855066); +emit_32(1101426590); +emit_32(1119072263); +emit_32(1106903040); +emit_32(1101124023); +emit_32(1119072263); +emit_32(1108123661); +emit_32(1101831497); +emit_32(1119072263); +emit_32(1109147648); +emit_32(1102350123); +emit_32(1119072263); +emit_32(1110171661); +emit_32(1102793199); +emit_32(1119072263); +emit_32(1111195648); +emit_32(1102843111); +emit_32(1119072263); +emit_32(1112219661); +emit_32(1102558318); +emit_32(1119072263); +emit_32(1113243648); +emit_32(1101824891); +emit_32(1119072263); +emit_32(1114267661); +emit_32(1101196113); +emit_32(1119072263); +emit_32(1115291648); +emit_32(1100804365); +emit_32(1119072263); +emit_32(1116000263); +emit_32(1100310538); +emit_32(1119072263); +emit_32(1116512256); +emit_32(1100314680); +emit_32(1119072263); +emit_32(1117024263); +emit_32(1100878604); +emit_32(1119072263); +emit_32(1117536256); +emit_32(1101233180); +emit_32(1119072263); +emit_32(1118048263); +emit_32(1101099486); +emit_32(1119072263); +emit_32(1118560256); +emit_32(1100717123); +emit_32(1119072263); +emit_32(1119072263); +emit_32(1100634758); +emit_32(1119072263); +emit_32(1119584256); +emit_32(1100997670); +emit_32(1119072263); +emit_32(1120096263); +emit_32(1101349205); +emit_32(1119072263); +emit_32(1120608322); +emit_32(1101475873); +emit_32(1119072263); +emit_32(1121120289); +emit_32(1101425646); +emit_32(1119072263); +emit_32(1121632256); +emit_32(1101796422); +emit_32(1119072263); +emit_32(1122144223); +emit_32(1102446120); +emit_32(1119072263); +emit_32(1122656322); +emit_32(1103203559); +emit_32(1119072263); +emit_32(1123168289); +emit_32(1104856849); +emit_32(1119072263); +emit_32(1123680256); +emit_32(1106223877); +emit_32(1119072263); +emit_32(1124132848); +emit_32(1107396421); +emit_32(1119072263); +emit_32(1124388897); +emit_32(1107875018); +emit_32(1119072263); +emit_32(1124644880); +emit_32(1108277173); +emit_32(1119072263); +emit_32(1124900864); +emit_32(1108512814); +emit_32(1119072263); +emit_32(1125156848); +emit_32(1109177296); +emit_32(1119072263); +emit_32(1125412897); +emit_32(1109962811); +emit_32(1119072263); +emit_32(1125668880); +emit_32(1110386698); +emit_32(1119072263); +emit_32(1125924864); +emit_32(1110954895); +emit_32(1119072263); +emit_32(1126180848); +emit_32(1111373146); +emit_32(1119072263); +emit_32(1126436897); +emit_32(1111232741); +emit_32(1119072263); +emit_32(1126692880); +emit_32(1110968474); +emit_32(1119072263); +emit_32(1126948864); +emit_32(1110976076); +emit_32(1119072263); +emit_32(1127204848); +emit_32(1110947948); +emit_32(1119072263); +emit_32(1127460897); +emit_32(1110319458); +emit_32(1119072263); +emit_32(1127716880); +emit_32(1109529802); +emit_32(1119072263); +emit_32(1127972864); +emit_32(1108903985); +emit_32(1119072263); +emit_32(1128228848); +emit_32(1108310439); +emit_32(1119072263); +emit_32(1128484897); +emit_32(1107575387); +emit_32(1119072263); +emit_32(1128740880); +emit_32(1106795613); +emit_32(1119072263); +emit_32(1128996864); +emit_32(1105037099); +emit_32(1119072263); +emit_32(1129252848); +emit_32(1104566131); +emit_32(1119072263); +emit_32(1129508897); +emit_32(1104325640); +emit_32(1119072263); +emit_32(1129764880); +emit_32(1103661315); +emit_32(1119072263); +emit_32(1130020864); +emit_32(1102795191); +emit_32(1119072263); +emit_32(1130276848); +emit_32(1101517868); +emit_32(1119072263); +emit_32(1130532897); +emit_32(1100461113); +emit_32(1119072263); +emit_32(1130788880); +emit_32(1100370097); +emit_32(1119072263); +emit_32(1131044864); +emit_32(1099572602); +emit_32(1119072263); +emit_32(1131300848); +emit_32(1097838100); +emit_32(1119072263); +emit_32(1131556897); +emit_32(1098295594); +emit_32(1119072263); +emit_32(1131812880); +emit_32(1098303459); +emit_32(1119072263); +emit_32(1132068864); +emit_32(1098824601); +emit_32(1119072263); +emit_32(1081737216); +emit_32(1098479410); +emit_32(1118560256); +emit_32(1090125824); +emit_32(1099112959); +emit_32(1118560256); +emit_32(1094418484); +emit_32(1100063546); +emit_32(1118560256); +emit_32(1098514432); +emit_32(1100578082); +emit_32(1118560256); +emit_32(1100759066); +emit_32(1101399327); +emit_32(1118560256); +emit_32(1102807040); +emit_32(1101862745); +emit_32(1118560256); +emit_32(1104855066); +emit_32(1102014684); +emit_32(1118560256); +emit_32(1106903040); +emit_32(1101855457); +emit_32(1118560256); +emit_32(1108123661); +emit_32(1102305349); +emit_32(1118560256); +emit_32(1109147648); +emit_32(1102995679); +emit_32(1118560256); +emit_32(1110171661); +emit_32(1103423603); +emit_32(1118560256); +emit_32(1111195648); +emit_32(1103543455); +emit_32(1118560256); +emit_32(1112219661); +emit_32(1103387741); +emit_32(1118560256); +emit_32(1113243648); +emit_32(1102938374); +emit_32(1118560256); +emit_32(1114267661); +emit_32(1102169244); +emit_32(1118560256); +emit_32(1115291648); +emit_32(1101791704); +emit_32(1118560256); +emit_32(1116000263); +emit_32(1101646581); +emit_32(1118560256); +emit_32(1116512256); +emit_32(1101112698); +emit_32(1118560256); +emit_32(1117024263); +emit_32(1101184998); +emit_32(1118560256); +emit_32(1117536256); +emit_32(1101989727); +emit_32(1118560256); +emit_32(1118048263); +emit_32(1102023229); +emit_32(1118560256); +emit_32(1118560256); +emit_32(1101345377); +emit_32(1118560256); +emit_32(1119072263); +emit_32(1101364199); +emit_32(1118560256); +emit_32(1119584256); +emit_32(1101345325); +emit_32(1118560256); +emit_32(1120096263); +emit_32(1101567780); +emit_32(1118560256); +emit_32(1120608322); +emit_32(1101948047); +emit_32(1118560256); +emit_32(1121120289); +emit_32(1102252343); +emit_32(1118560256); +emit_32(1121632256); +emit_32(1102278400); +emit_32(1118560256); +emit_32(1122144223); +emit_32(1102915882); +emit_32(1118560256); +emit_32(1122656322); +emit_32(1103545342); +emit_32(1118560256); +emit_32(1123168289); +emit_32(1104523873); +emit_32(1118560256); +emit_32(1123680256); +emit_32(1105840623); +emit_32(1118560256); +emit_32(1124132848); +emit_32(1107083500); +emit_32(1118560256); +emit_32(1124388897); +emit_32(1107781668); +emit_32(1118560256); +emit_32(1124644880); +emit_32(1108269990); +emit_32(1118560256); +emit_32(1124900864); +emit_32(1108523300); +emit_32(1118560256); +emit_32(1125156848); +emit_32(1109103110); +emit_32(1118560256); +emit_32(1125412897); +emit_32(1109825526); +emit_32(1118560256); +emit_32(1125668880); +emit_32(1110495330); +emit_32(1118560256); +emit_32(1125924864); +emit_32(1110756478); +emit_32(1118560256); +emit_32(1126180848); +emit_32(1111016630); +emit_32(1118560256); +emit_32(1126436897); +emit_32(1111283388); +emit_32(1118560256); +emit_32(1126692880); +emit_32(1111246530); +emit_32(1118560256); +emit_32(1126948864); +emit_32(1110841937); +emit_32(1118560256); +emit_32(1127204848); +emit_32(1110618826); +emit_32(1118560256); +emit_32(1127460897); +emit_32(1110342972); +emit_32(1118560256); +emit_32(1127716880); +emit_32(1109456191); +emit_32(1118560256); +emit_32(1127972864); +emit_32(1108985774); +emit_32(1118560256); +emit_32(1128228848); +emit_32(1108475956); +emit_32(1118560256); +emit_32(1128484897); +emit_32(1107767512); +emit_32(1118560256); +emit_32(1128740880); +emit_32(1107083552); +emit_32(1118560256); +emit_32(1128996864); +emit_32(1105634525); +emit_32(1118560256); +emit_32(1129252848); +emit_32(1104932871); +emit_32(1118560256); +emit_32(1129508897); +emit_32(1104170766); +emit_32(1118560256); +emit_32(1129764880); +emit_32(1103195904); +emit_32(1118560256); +emit_32(1130020864); +emit_32(1102135532); +emit_32(1118560256); +emit_32(1130276848); +emit_32(1101066089); +emit_32(1118560256); +emit_32(1130532897); +emit_32(1100669413); +emit_32(1118560256); +emit_32(1130788880); +emit_32(1099835795); +emit_32(1118560256); +emit_32(1131044864); +emit_32(1099072641); +emit_32(1118560256); +emit_32(1131300848); +emit_32(1097951976); +emit_32(1118560256); +emit_32(1131556897); +emit_32(1097998742); +emit_32(1118560256); +emit_32(1131812880); +emit_32(1097628595); +emit_32(1118560256); +emit_32(1132068864); +emit_32(1098095945); +emit_32(1118560256); +emit_32(1081737216); +emit_32(1099413271); +emit_32(1118048263); +emit_32(1090125824); +emit_32(1099851366); +emit_32(1118048263); +emit_32(1094418484); +emit_32(1100634810); +emit_32(1118048263); +emit_32(1098514432); +emit_32(1101543191); +emit_32(1118048263); +emit_32(1100759066); +emit_32(1102227020); +emit_32(1118048263); +emit_32(1102807040); +emit_32(1102623329); +emit_32(1118048263); +emit_32(1104855066); +emit_32(1102636122); +emit_32(1118048263); +emit_32(1106903040); +emit_32(1102855746); +emit_32(1118048263); +emit_32(1108123661); +emit_32(1103180228); +emit_32(1118048263); +emit_32(1109147648); +emit_32(1103670700); +emit_32(1118048263); +emit_32(1110171661); +emit_32(1104191894); +emit_32(1118048263); +emit_32(1111195648); +emit_32(1104328733); +emit_32(1118048263); +emit_32(1112219661); +emit_32(1103856769); +emit_32(1118048263); +emit_32(1113243648); +emit_32(1103570665); +emit_32(1118048263); +emit_32(1114267661); +emit_32(1103155744); +emit_32(1118048263); +emit_32(1115291648); +emit_32(1103141221); +emit_32(1118048263); +emit_32(1116000263); +emit_32(1102853230); +emit_32(1118048263); +emit_32(1116512256); +emit_32(1102033034); +emit_32(1118048263); +emit_32(1117024263); +emit_32(1102017724); +emit_32(1118048263); +emit_32(1117536256); +emit_32(1102380584); +emit_32(1118048263); +emit_32(1118048263); +emit_32(1102405698); +emit_32(1118048263); +emit_32(1118560256); +emit_32(1101754689); +emit_32(1118048263); +emit_32(1119072263); +emit_32(1101894202); +emit_32(1118048263); +emit_32(1119584256); +emit_32(1101906471); +emit_32(1118048263); +emit_32(1120096263); +emit_32(1102313056); +emit_32(1118048263); +emit_32(1120608322); +emit_32(1102601309); +emit_32(1118048263); +emit_32(1121120289); +emit_32(1102592606); +emit_32(1118048263); +emit_32(1121632256); +emit_32(1102703493); +emit_32(1118048263); +emit_32(1122144223); +emit_32(1102937378); +emit_32(1118048263); +emit_32(1122656322); +emit_32(1103504867); +emit_32(1118048263); +emit_32(1123168289); +emit_32(1104384675); +emit_32(1118048263); +emit_32(1123680256); +emit_32(1105635049); +emit_32(1118048263); +emit_32(1124132848); +emit_32(1106752255); +emit_32(1118048263); +emit_32(1124388897); +emit_32(1107767879); +emit_32(1118048263); +emit_32(1124644880); +emit_32(1108294474); +emit_32(1118048263); +emit_32(1124900864); +emit_32(1108613634); +emit_32(1118048263); +emit_32(1125156848); +emit_32(1109065177); +emit_32(1118048263); +emit_32(1125412897); +emit_32(1109930095); +emit_32(1118048263); +emit_32(1125668880); +emit_32(1110386383); +emit_32(1118048263); +emit_32(1125924864); +emit_32(1110751995); +emit_32(1118048263); +emit_32(1126180848); +emit_32(1111030602); +emit_32(1118048263); +emit_32(1126436897); +emit_32(1111233554); +emit_32(1118048263); +emit_32(1126692880); +emit_32(1111303704); +emit_32(1118048263); +emit_32(1126948864); +emit_32(1111031703); +emit_32(1118048263); +emit_32(1127204848); +emit_32(1110529488); +emit_32(1118048263); +emit_32(1127460897); +emit_32(1110208545); +emit_32(1118048263); +emit_32(1127716880); +emit_32(1109599375); +emit_32(1118048263); +emit_32(1127972864); +emit_32(1109300609); +emit_32(1118048263); +emit_32(1128228848); +emit_32(1108749189); +emit_32(1118048263); +emit_32(1128484897); +emit_32(1108160047); +emit_32(1118048263); +emit_32(1128740880); +emit_32(1107724180); +emit_32(1118048263); +emit_32(1128996864); +emit_32(1106714873); +emit_32(1118048263); +emit_32(1129252848); +emit_32(1104821512); +emit_32(1118048263); +emit_32(1129508897); +emit_32(1103852103); +emit_32(1118048263); +emit_32(1129764880); +emit_32(1103039771); +emit_32(1118048263); +emit_32(1130020864); +emit_32(1102286212); +emit_32(1118048263); +emit_32(1130276848); +emit_32(1101202509); +emit_32(1118048263); +emit_32(1130532897); +emit_32(1100589197); +emit_32(1118048263); +emit_32(1130788880); +emit_32(1100484811); +emit_32(1118048263); +emit_32(1131044864); +emit_32(1099835113); +emit_32(1118048263); +emit_32(1131300848); +emit_32(1098729600); +emit_32(1118048263); +emit_32(1131556897); +emit_32(1097121608); +emit_32(1118048263); +emit_32(1131812880); +emit_32(1098002203); +emit_32(1118048263); +emit_32(1132068864); +emit_32(1097770887); +emit_32(1118048263); +emit_32(1081737216); +emit_32(1100388447); +emit_32(1117536256); +emit_32(1090125824); +emit_32(1100757493); +emit_32(1117536256); +emit_32(1094418484); +emit_32(1101501091); +emit_32(1117536256); +emit_32(1098514432); +emit_32(1102103236); +emit_32(1117536256); +emit_32(1100759066); +emit_32(1102707845); +emit_32(1117536256); +emit_32(1102807040); +emit_32(1103009572); +emit_32(1117536256); +emit_32(1104855066); +emit_32(1103428898); +emit_32(1117536256); +emit_32(1106903040); +emit_32(1103146831); +emit_32(1117536256); +emit_32(1108123661); +emit_32(1103947576); +emit_32(1117536256); +emit_32(1109147648); +emit_32(1104597484); +emit_32(1117536256); +emit_32(1110171661); +emit_32(1104667424); +emit_32(1117536256); +emit_32(1111195648); +emit_32(1104486230); +emit_32(1117536256); +emit_32(1112219661); +emit_32(1104487068); +emit_32(1117536256); +emit_32(1113243648); +emit_32(1104896904); +emit_32(1117536256); +emit_32(1114267661); +emit_32(1104464524); +emit_32(1117536256); +emit_32(1115291648); +emit_32(1104222355); +emit_32(1117536256); +emit_32(1116000263); +emit_32(1103558974); +emit_32(1117536256); +emit_32(1116512256); +emit_32(1103033480); +emit_32(1117536256); +emit_32(1117024263); +emit_32(1102717544); +emit_32(1117536256); +emit_32(1117536256); +emit_32(1102634340); +emit_32(1117536256); +emit_32(1118048263); +emit_32(1102741976); +emit_32(1117536256); +emit_32(1118560256); +emit_32(1102625007); +emit_32(1117536256); +emit_32(1119072263); +emit_32(1102725618); +emit_32(1117536256); +emit_32(1119584256); +emit_32(1103254520); +emit_32(1117536256); +emit_32(1120096263); +emit_32(1103392722); +emit_32(1117536256); +emit_32(1120608322); +emit_32(1103322992); +emit_32(1117536256); +emit_32(1121120289); +emit_32(1103436395); +emit_32(1117536256); +emit_32(1121632256); +emit_32(1103376417); +emit_32(1117536256); +emit_32(1122144223); +emit_32(1103563325); +emit_32(1117536256); +emit_32(1122656322); +emit_32(1103992612); +emit_32(1117536256); +emit_32(1123168289); +emit_32(1104630514); +emit_32(1117536256); +emit_32(1123680256); +emit_32(1106116556); +emit_32(1117536256); +emit_32(1124132848); +emit_32(1106961236); +emit_32(1117536256); +emit_32(1124388897); +emit_32(1107803950); +emit_32(1117536256); +emit_32(1124644880); +emit_32(1108189276); +emit_32(1117536256); +emit_32(1124900864); +emit_32(1108506129); +emit_32(1117536256); +emit_32(1125156848); +emit_32(1109028792); +emit_32(1117536256); +emit_32(1125412897); +emit_32(1109715216); +emit_32(1117536256); +emit_32(1125668880); +emit_32(1110237171); +emit_32(1117536256); +emit_32(1125924864); +emit_32(1110769507); +emit_32(1117536256); +emit_32(1126180848); +emit_32(1111106100); +emit_32(1117536256); +emit_32(1126436897); +emit_32(1111271906); +emit_32(1117536256); +emit_32(1126692880); +emit_32(1111370210); +emit_32(1117536256); +emit_32(1126948864); +emit_32(1111065310); +emit_32(1117536256); +emit_32(1127204848); +emit_32(1110676210); +emit_32(1117536256); +emit_32(1127460897); +emit_32(1110374587); +emit_32(1117536256); +emit_32(1127716880); +emit_32(1110042162); +emit_32(1117536256); +emit_32(1127972864); +emit_32(1109530614); +emit_32(1117536256); +emit_32(1128228848); +emit_32(1108942678); +emit_32(1117536256); +emit_32(1128484897); +emit_32(1108422689); +emit_32(1117536256); +emit_32(1128740880); +emit_32(1108099491); +emit_32(1117536256); +emit_32(1128996864); +emit_32(1107404915); +emit_32(1117536256); +emit_32(1129252848); +emit_32(1105961366); +emit_32(1117536256); +emit_32(1129508897); +emit_32(1104014161); +emit_32(1117536256); +emit_32(1129764880); +emit_32(1102659977); +emit_32(1117536256); +emit_32(1130020864); +emit_32(1101498941); +emit_32(1117536256); +emit_32(1130276848); +emit_32(1100603667); +emit_32(1117536256); +emit_32(1130532897); +emit_32(1100248567); +emit_32(1117536256); +emit_32(1130788880); +emit_32(1100396993); +emit_32(1117536256); +emit_32(1131044864); +emit_32(1099775974); +emit_32(1117536256); +emit_32(1131300848); +emit_32(1098614781); +emit_32(1117536256); +emit_32(1131556897); +emit_32(1097165439); +emit_32(1117536256); +emit_32(1131812880); +emit_32(1096806092); +emit_32(1117536256); +emit_32(1132068864); +emit_32(1097532755); +emit_32(1117536256); +emit_32(1081737216); +emit_32(1101362836); +emit_32(1117024263); +emit_32(1090125824); +emit_32(1102440982); +emit_32(1117024263); +emit_32(1094418484); +emit_32(1102525602); +emit_32(1117024263); +emit_32(1098514432); +emit_32(1102772542); +emit_32(1117024263); +emit_32(1100759066); +emit_32(1102996623); +emit_32(1117024263); +emit_32(1102807040); +emit_32(1103394295); +emit_32(1117024263); +emit_32(1104855066); +emit_32(1103807853); +emit_32(1117024263); +emit_32(1106903040); +emit_32(1104063968); +emit_32(1117024263); +emit_32(1108123661); +emit_32(1104272477); +emit_32(1117024263); +emit_32(1109147648); +emit_32(1105094404); +emit_32(1117024263); +emit_32(1110171661); +emit_32(1105462297); +emit_32(1117024263); +emit_32(1111195648); +emit_32(1105615756); +emit_32(1117024263); +emit_32(1112219661); +emit_32(1105780539); +emit_32(1117024263); +emit_32(1113243648); +emit_32(1105949622); +emit_32(1117024263); +emit_32(1114267661); +emit_32(1105825523); +emit_32(1117024263); +emit_32(1115291648); +emit_32(1105325457); +emit_32(1117024263); +emit_32(1116000263); +emit_32(1104503217); +emit_32(1117024263); +emit_32(1116512256); +emit_32(1103914389); +emit_32(1117024263); +emit_32(1117024263); +emit_32(1103220703); +emit_32(1117024263); +emit_32(1117536256); +emit_32(1103554989); +emit_32(1117024263); +emit_32(1118048263); +emit_32(1103557663); +emit_32(1117024263); +emit_32(1118560256); +emit_32(1103000555); +emit_32(1117024263); +emit_32(1119072263); +emit_32(1103407455); +emit_32(1117024263); +emit_32(1119584256); +emit_32(1103934783); +emit_32(1117024263); +emit_32(1120096263); +emit_32(1103628861); +emit_32(1117024263); +emit_32(1120608322); +emit_32(1103876221); +emit_32(1117024263); +emit_32(1121120289); +emit_32(1104062762); +emit_32(1117024263); +emit_32(1121632256); +emit_32(1104076446); +emit_32(1117024263); +emit_32(1122144223); +emit_32(1104571479); +emit_32(1117024263); +emit_32(1122656322); +emit_32(1105134302); +emit_32(1117024263); +emit_32(1123168289); +emit_32(1105662312); +emit_32(1117024263); +emit_32(1123680256); +emit_32(1106251717); +emit_32(1117024263); +emit_32(1124132848); +emit_32(1107284512); +emit_32(1117024263); +emit_32(1124388897); +emit_32(1107873183); +emit_32(1117024263); +emit_32(1124644880); +emit_32(1108188149); +emit_32(1117024263); +emit_32(1124900864); +emit_32(1108443241); +emit_32(1117024263); +emit_32(1125156848); +emit_32(1109131028); +emit_32(1117024263); +emit_32(1125412897); +emit_32(1109732884); +emit_32(1117024263); +emit_32(1125668880); +emit_32(1110471632); +emit_32(1117024263); +emit_32(1125924864); +emit_32(1111024494); +emit_32(1117024263); +emit_32(1126180848); +emit_32(1111170666); +emit_32(1117024263); +emit_32(1126436897); +emit_32(1111345332); +emit_32(1117024263); +emit_32(1126692880); +emit_32(1111265011); +emit_32(1117024263); +emit_32(1126948864); +emit_32(1110964620); +emit_32(1117024263); +emit_32(1127204848); +emit_32(1110816430); +emit_32(1117024263); +emit_32(1127460897); +emit_32(1110708847); +emit_32(1117024263); +emit_32(1127716880); +emit_32(1110212162); +emit_32(1117024263); +emit_32(1127972864); +emit_32(1109715111); +emit_32(1117024263); +emit_32(1128228848); +emit_32(1108818579); +emit_32(1117024263); +emit_32(1128484897); +emit_32(1108483873); +emit_32(1117024263); +emit_32(1128740880); +emit_32(1108125627); +emit_32(1117024263); +emit_32(1128996864); +emit_32(1107598718); +emit_32(1117024263); +emit_32(1129252848); +emit_32(1106363390); +emit_32(1117024263); +emit_32(1129508897); +emit_32(1104237822); +emit_32(1117024263); +emit_32(1129764880); +emit_32(1102138258); +emit_32(1117024263); +emit_32(1130020864); +emit_32(1100193202); +emit_32(1117024263); +emit_32(1130276848); +emit_32(1099480433); +emit_32(1117024263); +emit_32(1130532897); +emit_32(1099613759); +emit_32(1117024263); +emit_32(1130788880); +emit_32(1099142005); +emit_32(1117024263); +emit_32(1131044864); +emit_32(1098613732); +emit_32(1117024263); +emit_32(1131300848); +emit_32(1097637718); +emit_32(1117024263); +emit_32(1131556897); +emit_32(1096434057); +emit_32(1117024263); +emit_32(1131812880); +emit_32(1095523684); +emit_32(1117024263); +emit_32(1132068864); +emit_32(1096168243); +emit_32(1117024263); +emit_32(1081737216); +emit_32(1102550401); +emit_32(1116512256); +emit_32(1090125824); +emit_32(1103281835); +emit_32(1116512256); +emit_32(1094418484); +emit_32(1103432620); +emit_32(1116512256); +emit_32(1098514432); +emit_32(1103624300); +emit_32(1116512256); +emit_32(1100759066); +emit_32(1103732880); +emit_32(1116512256); +emit_32(1102807040); +emit_32(1103772569); +emit_32(1116512256); +emit_32(1104855066); +emit_32(1104059145); +emit_32(1116512256); +emit_32(1106903040); +emit_32(1104733694); +emit_32(1116512256); +emit_32(1108123661); +emit_32(1105135927); +emit_32(1116512256); +emit_32(1109147648); +emit_32(1105641446); +emit_32(1116512256); +emit_32(1110171661); +emit_32(1106189117); +emit_32(1116512256); +emit_32(1111195648); +emit_32(1106590984); +emit_32(1116512256); +emit_32(1112219661); +emit_32(1106792730); +emit_32(1116512256); +emit_32(1113243648); +emit_32(1107103528); +emit_32(1116512256); +emit_32(1114267661); +emit_32(1107045751); +emit_32(1116512256); +emit_32(1115291648); +emit_32(1106493886); +emit_32(1116512256); +emit_32(1116000263); +emit_32(1105577011); +emit_32(1116512256); +emit_32(1116512256); +emit_32(1104601992); +emit_32(1116512256); +emit_32(1117024263); +emit_32(1103981498); +emit_32(1116512256); +emit_32(1117536256); +emit_32(1104213076); +emit_32(1116512256); +emit_32(1118048263); +emit_32(1103729577); +emit_32(1116512256); +emit_32(1118560256); +emit_32(1103354344); +emit_32(1116512256); +emit_32(1119072263); +emit_32(1103689836); +emit_32(1116512256); +emit_32(1119584256); +emit_32(1104224505); +emit_32(1116512256); +emit_32(1120096263); +emit_32(1104374714); +emit_32(1116512256); +emit_32(1120608322); +emit_32(1104188696); +emit_32(1116512256); +emit_32(1121120289); +emit_32(1104209773); +emit_32(1116512256); +emit_32(1121632256); +emit_32(1104973765); +emit_32(1116512256); +emit_32(1122144223); +emit_32(1105524110); +emit_32(1116512256); +emit_32(1122656322); +emit_32(1106275992); +emit_32(1116512256); +emit_32(1123168289); +emit_32(1106381373); +emit_32(1116512256); +emit_32(1123680256); +emit_32(1106763527); +emit_32(1116512256); +emit_32(1124132848); +emit_32(1107402293); +emit_32(1116512256); +emit_32(1124388897); +emit_32(1107816822); +emit_32(1116512256); +emit_32(1124644880); +emit_32(1108307293); +emit_32(1116512256); +emit_32(1124900864); +emit_32(1108759098); +emit_32(1116512256); +emit_32(1125156848); +emit_32(1109471632); +emit_32(1116512256); +emit_32(1125412897); +emit_32(1109900027); +emit_32(1116512256); +emit_32(1125668880); +emit_32(1110484111); +emit_32(1116512256); +emit_32(1125924864); +emit_32(1110873316); +emit_32(1116512256); +emit_32(1126180848); +emit_32(1111321923); +emit_32(1116512256); +emit_32(1126436897); +emit_32(1111520628); +emit_32(1116512256); +emit_32(1126692880); +emit_32(1111429507); +emit_32(1116512256); +emit_32(1126948864); +emit_32(1110992722); +emit_32(1116512256); +emit_32(1127204848); +emit_32(1110804503); +emit_32(1116512256); +emit_32(1127460897); +emit_32(1110532633); +emit_32(1116512256); +emit_32(1127716880); +emit_32(1110132130); +emit_32(1116512256); +emit_32(1127972864); +emit_32(1109531112); +emit_32(1116512256); +emit_32(1128228848); +emit_32(1108783425); +emit_32(1116512256); +emit_32(1128484897); +emit_32(1108534467); +emit_32(1116512256); +emit_32(1128740880); +emit_32(1108104918); +emit_32(1116512256); +emit_32(1128996864); +emit_32(1107580866); +emit_32(1116512256); +emit_32(1129252848); +emit_32(1106274314); +emit_32(1116512256); +emit_32(1129508897); +emit_32(1104539025); +emit_32(1116512256); +emit_32(1129764880); +emit_32(1102452516); +emit_32(1116512256); +emit_32(1130020864); +emit_32(1100238029); +emit_32(1116512256); +emit_32(1130276848); +emit_32(1098493670); +emit_32(1116512256); +emit_32(1130532897); +emit_32(1097538732); +emit_32(1116512256); +emit_32(1130788880); +emit_32(1097860435); +emit_32(1116512256); +emit_32(1131044864); +emit_32(1096806826); +emit_32(1116512256); +emit_32(1131300848); +emit_32(1095175137); +emit_32(1116512256); +emit_32(1131556897); +emit_32(1095179751); +emit_32(1116512256); +emit_32(1131812880); +emit_32(1094445538); +emit_32(1116512256); +emit_32(1132068864); +emit_32(1094491675); +emit_32(1116512256); +emit_32(1081737216); +emit_32(1103917954); +emit_32(1116000263); +emit_32(1090125824); +emit_32(1104214281); +emit_32(1116000263); +emit_32(1094418484); +emit_32(1104273211); +emit_32(1116000263); +emit_32(1098514432); +emit_32(1104389236); +emit_32(1116000263); +emit_32(1100759066); +emit_32(1104665746); +emit_32(1116000263); +emit_32(1102807040); +emit_32(1104683886); +emit_32(1116000263); +emit_32(1104855066); +emit_32(1104862354); +emit_32(1116000263); +emit_32(1106903040); +emit_32(1105668342); +emit_32(1116000263); +emit_32(1108123661); +emit_32(1106303097); +emit_32(1116000263); +emit_32(1109147648); +emit_32(1106378228); +emit_32(1116000263); +emit_32(1110171661); +emit_32(1106845054); +emit_32(1116000263); +emit_32(1111195648); +emit_32(1107149298); +emit_32(1116000263); +emit_32(1112219661); +emit_32(1107634553); +emit_32(1116000263); +emit_32(1113243648); +emit_32(1107721139); +emit_32(1116000263); +emit_32(1114267661); +emit_32(1107693457); +emit_32(1116000263); +emit_32(1115291648); +emit_32(1107040823); +emit_32(1116000263); +emit_32(1116000263); +emit_32(1106302678); +emit_32(1116000263); +emit_32(1116512256); +emit_32(1105678251); +emit_32(1116000263); +emit_32(1117024263); +emit_32(1104723575); +emit_32(1116000263); +emit_32(1117536256); +emit_32(1104584219); +emit_32(1116000263); +emit_32(1118048263); +emit_32(1104086408); +emit_32(1116000263); +emit_32(1118560256); +emit_32(1103762398); +emit_32(1116000263); +emit_32(1119072263); +emit_32(1104084573); +emit_32(1116000263); +emit_32(1119584256); +emit_32(1104925583); +emit_32(1116000263); +emit_32(1120096263); +emit_32(1104774273); +emit_32(1116000263); +emit_32(1120608322); +emit_32(1104591244); +emit_32(1116000263); +emit_32(1121120289); +emit_32(1104826283); +emit_32(1116000263); +emit_32(1121632256); +emit_32(1105545973); +emit_32(1116000263); +emit_32(1122144223); +emit_32(1105872919); +emit_32(1116000263); +emit_32(1122656322); +emit_32(1106423946); +emit_32(1116000263); +emit_32(1123168289); +emit_32(1107313243); +emit_32(1116000263); +emit_32(1123680256); +emit_32(1107471709); +emit_32(1116000263); +emit_32(1124132848); +emit_32(1107748166); +emit_32(1116000263); +emit_32(1124388897); +emit_32(1108035319); +emit_32(1116000263); +emit_32(1124644880); +emit_32(1108525135); +emit_32(1116000263); +emit_32(1124900864); +emit_32(1109011254); +emit_32(1116000263); +emit_32(1125156848); +emit_32(1109529539); +emit_32(1116000263); +emit_32(1125412897); +emit_32(1109929073); +emit_32(1116000263); +emit_32(1125668880); +emit_32(1110361244); +emit_32(1116000263); +emit_32(1125924864); +emit_32(1111018701); +emit_32(1116000263); +emit_32(1126180848); +emit_32(1111418392); +emit_32(1116000263); +emit_32(1126436897); +emit_32(1111581943); +emit_32(1116000263); +emit_32(1126692880); +emit_32(1111596912); +emit_32(1116000263); +emit_32(1126948864); +emit_32(1111336970); +emit_32(1116000263); +emit_32(1127204848); +emit_32(1110946611); +emit_32(1116000263); +emit_32(1127460897); +emit_32(1110462222); +emit_32(1116000263); +emit_32(1127716880); +emit_32(1109940398); +emit_32(1116000263); +emit_32(1127972864); +emit_32(1109463846); +emit_32(1116000263); +emit_32(1128228848); +emit_32(1108875307); +emit_32(1116000263); +emit_32(1128484897); +emit_32(1108586607); +emit_32(1116000263); +emit_32(1128740880); +emit_32(1108248442); +emit_32(1116000263); +emit_32(1128996864); +emit_32(1107558426); +emit_32(1116000263); +emit_32(1129252848); +emit_32(1106322391); +emit_32(1116000263); +emit_32(1129508897); +emit_32(1104389131); +emit_32(1116000263); +emit_32(1129764880); +emit_32(1102274835); +emit_32(1116000263); +emit_32(1130020864); +emit_32(1100247571); +emit_32(1116000263); +emit_32(1130276848); +emit_32(1098982516); +emit_32(1116000263); +emit_32(1130532897); +emit_32(1097852990); +emit_32(1116000263); +emit_32(1130788880); +emit_32(1097777388); +emit_32(1116000263); +emit_32(1131044864); +emit_32(1096162057); +emit_32(1116000263); +emit_32(1131300848); +emit_32(1093655750); +emit_32(1116000263); +emit_32(1131556897); +emit_32(1093255194); +emit_32(1116000263); +emit_32(1131812880); +emit_32(1092384509); +emit_32(1116000263); +emit_32(1132068864); +emit_32(1092614651); +emit_32(1116000263); +emit_32(1081737216); +emit_32(1104775951); +emit_32(1115291648); +emit_32(1090125824); +emit_32(1105273081); +emit_32(1115291648); +emit_32(1094418484); +emit_32(1105163033); +emit_32(1115291648); +emit_32(1098514432); +emit_32(1105037623); +emit_32(1115291648); +emit_32(1100759066); +emit_32(1105121038); +emit_32(1115291648); +emit_32(1102807040); +emit_32(1105312455); +emit_32(1115291648); +emit_32(1104855066); +emit_32(1106012694); +emit_32(1115291648); +emit_32(1106903040); +emit_32(1106371779); +emit_32(1115291648); +emit_32(1108123661); +emit_32(1106828329); +emit_32(1115291648); +emit_32(1109147648); +emit_32(1107099071); +emit_32(1115291648); +emit_32(1110171661); +emit_32(1107519026); +emit_32(1115291648); +emit_32(1111195648); +emit_32(1107598272); +emit_32(1115291648); +emit_32(1112219661); +emit_32(1107988605); +emit_32(1115291648); +emit_32(1113243648); +emit_32(1108084340); +emit_32(1115291648); +emit_32(1114267661); +emit_32(1107768272); +emit_32(1115291648); +emit_32(1115291648); +emit_32(1107585375); +emit_32(1115291648); +emit_32(1116000263); +emit_32(1107334686); +emit_32(1115291648); +emit_32(1116512256); +emit_32(1106384729); +emit_32(1115291648); +emit_32(1117024263); +emit_32(1105355237); +emit_32(1115291648); +emit_32(1117536256); +emit_32(1105239160); +emit_32(1115291648); +emit_32(1118048263); +emit_32(1104804472); +emit_32(1115291648); +emit_32(1118560256); +emit_32(1104295703); +emit_32(1115291648); +emit_32(1119072263); +emit_32(1104303725); +emit_32(1115291648); +emit_32(1119584256); +emit_32(1104739566); +emit_32(1115291648); +emit_32(1120096263); +emit_32(1104935911); +emit_32(1115291648); +emit_32(1120608322); +emit_32(1104793148); +emit_32(1115291648); +emit_32(1121120289); +emit_32(1105350990); +emit_32(1115291648); +emit_32(1121632256); +emit_32(1105666821); +emit_32(1115291648); +emit_32(1122144223); +emit_32(1106542854); +emit_32(1115291648); +emit_32(1122656322); +emit_32(1107330282); +emit_32(1115291648); +emit_32(1123168289); +emit_32(1107522722); +emit_32(1115291648); +emit_32(1123680256); +emit_32(1107991908); +emit_32(1115291648); +emit_32(1124132848); +emit_32(1108210273); +emit_32(1115291648); +emit_32(1124388897); +emit_32(1108506863); +emit_32(1115291648); +emit_32(1124644880); +emit_32(1108775220); +emit_32(1115291648); +emit_32(1124900864); +emit_32(1109189670); +emit_32(1115291648); +emit_32(1125156848); +emit_32(1109527233); +emit_32(1115291648); +emit_32(1125412897); +emit_32(1109974057); +emit_32(1115291648); +emit_32(1125668880); +emit_32(1110321240); +emit_32(1115291648); +emit_32(1125924864); +emit_32(1110734825); +emit_32(1115291648); +emit_32(1126180848); +emit_32(1111142197); +emit_32(1115291648); +emit_32(1126436897); +emit_32(1111340456); +emit_32(1115291648); +emit_32(1126692880); +emit_32(1111407224); +emit_32(1115291648); +emit_32(1126948864); +emit_32(1111510535); +emit_32(1115291648); +emit_32(1127204848); +emit_32(1111087042); +emit_32(1115291648); +emit_32(1127460897); +emit_32(1110641816); +emit_32(1115291648); +emit_32(1127716880); +emit_32(1110084734); +emit_32(1115291648); +emit_32(1127972864); +emit_32(1109478107); +emit_32(1115291648); +emit_32(1128228848); +emit_32(1108983703); +emit_32(1115291648); +emit_32(1128484897); +emit_32(1108396684); +emit_32(1115291648); +emit_32(1128740880); +emit_32(1108182303); +emit_32(1115291648); +emit_32(1128996864); +emit_32(1107304776); +emit_32(1115291648); +emit_32(1129252848); +emit_32(1105830714); +emit_32(1115291648); +emit_32(1129508897); +emit_32(1104926999); +emit_32(1115291648); +emit_32(1129764880); +emit_32(1103134825); +emit_32(1115291648); +emit_32(1130020864); +emit_32(1101331694); +emit_32(1115291648); +emit_32(1130276848); +emit_32(1100242905); +emit_32(1115291648); +emit_32(1130532897); +emit_32(1099575381); +emit_32(1115291648); +emit_32(1130788880); +emit_32(1098291610); +emit_32(1115291648); +emit_32(1131044864); +emit_32(1096472330); +emit_32(1115291648); +emit_32(1131300848); +emit_32(1094126875); +emit_32(1115291648); +emit_32(1131556897); +emit_32(1092334691); +emit_32(1115291648); +emit_32(1131812880); +emit_32(1091097822); +emit_32(1115291648); +emit_32(1132068864); +emit_32(1090977194); +emit_32(1115291648); +emit_32(1081737216); +emit_32(1105382343); +emit_32(1114267661); +emit_32(1090125824); +emit_32(1105662155); +emit_32(1114267661); +emit_32(1094418484); +emit_32(1105488092); +emit_32(1114267661); +emit_32(1098514432); +emit_32(1105646479); +emit_32(1114267661); +emit_32(1100759066); +emit_32(1105753591); +emit_32(1114267661); +emit_32(1102807040); +emit_32(1106409108); +emit_32(1114267661); +emit_32(1104855066); +emit_32(1106974396); +emit_32(1114267661); +emit_32(1106903040); +emit_32(1107565006); +emit_32(1114267661); +emit_32(1108123661); +emit_32(1107665538); +emit_32(1114267661); +emit_32(1109147648); +emit_32(1107918481); +emit_32(1114267661); +emit_32(1110171661); +emit_32(1108002577); +emit_32(1114267661); +emit_32(1111195648); +emit_32(1107850848); +emit_32(1114267661); +emit_32(1112219661); +emit_32(1108010494); +emit_32(1114267661); +emit_32(1113243648); +emit_32(1108185815); +emit_32(1114267661); +emit_32(1114267661); +emit_32(1108069791); +emit_32(1114267661); +emit_32(1115291648); +emit_32(1107943490); +emit_32(1114267661); +emit_32(1116000263); +emit_32(1107599924); +emit_32(1114267661); +emit_32(1116512256); +emit_32(1106557691); +emit_32(1114267661); +emit_32(1117024263); +emit_32(1106465102); +emit_32(1114267661); +emit_32(1117536256); +emit_32(1106678120); +emit_32(1114267661); +emit_32(1118048263); +emit_32(1106208044); +emit_32(1114267661); +emit_32(1118560256); +emit_32(1105390469); +emit_32(1114267661); +emit_32(1119072263); +emit_32(1105130632); +emit_32(1114267661); +emit_32(1119584256); +emit_32(1105068923); +emit_32(1114267661); +emit_32(1120096263); +emit_32(1105156532); +emit_32(1114267661); +emit_32(1120608322); +emit_32(1105073537); +emit_32(1114267661); +emit_32(1121120289); +emit_32(1105331225); +emit_32(1114267661); +emit_32(1121632256); +emit_32(1105964145); +emit_32(1114267661); +emit_32(1122144223); +emit_32(1106908702); +emit_32(1114267661); +emit_32(1122656322); +emit_32(1107699250); +emit_32(1114267661); +emit_32(1123168289); +emit_32(1107951485); +emit_32(1114267661); +emit_32(1123680256); +emit_32(1108124448); +emit_32(1114267661); +emit_32(1124132848); +emit_32(1108505998); +emit_32(1114267661); +emit_32(1124388897); +emit_32(1108644332); +emit_32(1114267661); +emit_32(1124644880); +emit_32(1108925429); +emit_32(1114267661); +emit_32(1124900864); +emit_32(1109130320); +emit_32(1114267661); +emit_32(1125156848); +emit_32(1109477189); +emit_32(1114267661); +emit_32(1125412897); +emit_32(1110047693); +emit_32(1114267661); +emit_32(1125668880); +emit_32(1110276833); +emit_32(1114267661); +emit_32(1125924864); +emit_32(1110533420); +emit_32(1114267661); +emit_32(1126180848); +emit_32(1110872975); +emit_32(1114267635); +emit_32(1126436897); +emit_32(1110877064); +emit_32(1114267635); +emit_32(1126692880); +emit_32(1111218743); +emit_32(1114267661); +emit_32(1126948864); +emit_32(1111252874); +emit_32(1114267661); +emit_32(1127204848); +emit_32(1110924067); +emit_32(1114267635); +emit_32(1127460897); +emit_32(1110454855); +emit_32(1114267635); +emit_32(1127716880); +emit_32(1109824949); +emit_32(1114267661); +emit_32(1127972864); +emit_32(1109367508); +emit_32(1114267661); +emit_32(1128228848); +emit_32(1108826469); +emit_32(1114267661); +emit_32(1128484897); +emit_32(1108105521); +emit_32(1114267661); +emit_32(1128740880); +emit_32(1107979010); +emit_32(1114267661); +emit_32(1128996864); +emit_32(1107413408); +emit_32(1114267661); +emit_32(1129252848); +emit_32(1106515224); +emit_32(1114267661); +emit_32(1129508897); +emit_32(1105576277); +emit_32(1114267661); +emit_32(1129764880); +emit_32(1104326584); +emit_32(1114267661); +emit_32(1130020864); +emit_32(1103294261); +emit_32(1114267661); +emit_32(1130276848); +emit_32(1102143501); +emit_32(1114267661); +emit_32(1130532897); +emit_32(1101094348); +emit_32(1114267661); +emit_32(1130788880); +emit_32(1100028785); +emit_32(1114267661); +emit_32(1131044864); +emit_32(1098592446); +emit_32(1114267661); +emit_32(1131300848); +emit_32(1095355492); +emit_32(1114267661); +emit_32(1131556897); +emit_32(1093903738); +emit_32(1114267661); +emit_32(1131812880); +emit_32(1093133979); +emit_32(1114267661); +emit_32(1132068864); +emit_32(1092040083); +emit_32(1114267661); +emit_32(1081737216); +emit_32(1105831238); +emit_32(1113243648); +emit_32(1090125824); +emit_32(1105941548); +emit_32(1113243648); +emit_32(1094418484); +emit_32(1106052330); +emit_32(1113243648); +emit_32(1098514432); +emit_32(1106181987); +emit_32(1113243648); +emit_32(1100759066); +emit_32(1106947762); +emit_32(1113243648); +emit_32(1102807040); +emit_32(1107434170); +emit_32(1113243648); +emit_32(1104855066); +emit_32(1107922597); +emit_32(1113243648); +emit_32(1106903040); +emit_32(1108070236); +emit_32(1113243648); +emit_32(1108123661); +emit_32(1108318408); +emit_32(1113243648); +emit_32(1109147648); +emit_32(1108398991); +emit_32(1113243648); +emit_32(1110171661); +emit_32(1108455247); +emit_32(1113243648); +emit_32(1111195648); +emit_32(1108380929); +emit_32(1113243648); +emit_32(1112219661); +emit_32(1108193129); +emit_32(1113243648); +emit_32(1113243648); +emit_32(1108214940); +emit_32(1113243648); +emit_32(1114267661); +emit_32(1108368189); +emit_32(1113243648); +emit_32(1115291648); +emit_32(1108351228); +emit_32(1113243648); +emit_32(1116000263); +emit_32(1108058728); +emit_32(1113243648); +emit_32(1116512256); +emit_32(1107523561); +emit_32(1113243648); +emit_32(1117024263); +emit_32(1107704624); +emit_32(1113243648); +emit_32(1117536256); +emit_32(1107780384); +emit_32(1113243648); +emit_32(1118048263); +emit_32(1107523797); +emit_32(1113243648); +emit_32(1118560256); +emit_32(1106889671); +emit_32(1113243648); +emit_32(1119072263); +emit_32(1105955127); +emit_32(1113243648); +emit_32(1119584256); +emit_32(1105678513); +emit_32(1113243648); +emit_32(1120096263); +emit_32(1105031175); +emit_32(1113243648); +emit_32(1120608322); +emit_32(1105177346); +emit_32(1113243648); +emit_32(1121120289); +emit_32(1105487043); +emit_32(1113243648); +emit_32(1121632256); +emit_32(1105785782); +emit_32(1113243648); +emit_32(1122144223); +emit_32(1106626950); +emit_32(1113243648); +emit_32(1122656322); +emit_32(1107401638); +emit_32(1113243648); +emit_32(1123168289); +emit_32(1107915047); +emit_32(1113243648); +emit_32(1123680256); +emit_32(1108256070); +emit_32(1113243648); +emit_32(1124132848); +emit_32(1108654529); +emit_32(1113243648); +emit_32(1124388897); +emit_32(1108830034); +emit_32(1113243648); +emit_32(1124644880); +emit_32(1108955156); +emit_32(1113243648); +emit_32(1124900864); +emit_32(1109136769); +emit_32(1113243648); +emit_32(1125156848); +emit_32(1109352907); +emit_32(1113243648); +emit_32(1125412897); +emit_32(1109748534); +emit_32(1113243648); +emit_32(1125668880); +emit_32(1109939926); +emit_32(1113243648); +emit_32(1125924864); +emit_32(1110036867); +emit_32(1113243648); +emit_32(1126180848); +emit_32(1110259401); +emit_32(1113243648); +emit_32(1126436897); +emit_32(1110514257); +emit_32(1113243648); +emit_32(1126692880); +emit_32(1110728167); +emit_32(1113243648); +emit_32(1126948864); +emit_32(1110690470); +emit_32(1113243648); +emit_32(1127204848); +emit_32(1110543172); +emit_32(1113243648); +emit_32(1127460897); +emit_32(1110206867); +emit_32(1113243648); +emit_32(1127716880); +emit_32(1109792994); +emit_32(1113243648); +emit_32(1127972864); +emit_32(1109392779); +emit_32(1113243648); +emit_32(1128228848); +emit_32(1108657596); +emit_32(1113243648); +emit_32(1128484897); +emit_32(1108142902); +emit_32(1113243648); +emit_32(1128740880); +emit_32(1107935625); +emit_32(1113243648); +emit_32(1128996864); +emit_32(1107490216); +emit_32(1113243648); +emit_32(1129252848); +emit_32(1107021844); +emit_32(1113243648); +emit_32(1129508897); +emit_32(1106216328); +emit_32(1113243648); +emit_32(1129764880); +emit_32(1105553103); +emit_32(1113243648); +emit_32(1130020864); +emit_32(1104695106); +emit_32(1113243648); +emit_32(1130276848); +emit_32(1103352404); +emit_32(1113243648); +emit_32(1130532897); +emit_32(1101904950); +emit_32(1113243648); +emit_32(1130788880); +emit_32(1101020476); +emit_32(1113243648); +emit_32(1131044864); +emit_32(1099594623); +emit_32(1113243648); +emit_32(1131300848); +emit_32(1097008782); +emit_32(1113243648); +emit_32(1131556897); +emit_32(1094881640); +emit_32(1113243648); +emit_32(1131812880); +emit_32(1093566726); +emit_32(1113243648); +emit_32(1132068864); +emit_32(1093310244); +emit_32(1113243648); +emit_32(1081737216); +emit_32(1106473438); +emit_32(1112219661); +emit_32(1090125824); +emit_32(1106755138); +emit_32(1112219661); +emit_32(1094418484); +emit_32(1106932662); +emit_32(1112219661); +emit_32(1098514432); +emit_32(1107310071); +emit_32(1112219661); +emit_32(1100759066); +emit_32(1107799179); +emit_32(1112219661); +emit_32(1102807040); +emit_32(1107999693); +emit_32(1112219661); +emit_32(1104855066); +emit_32(1108293059); +emit_32(1112219661); +emit_32(1106903040); +emit_32(1108560839); +emit_32(1112219661); +emit_32(1108123661); +emit_32(1108867783); +emit_32(1112219661); +emit_32(1109147648); +emit_32(1108932769); +emit_32(1112219661); +emit_32(1110171661); +emit_32(1108709527); +emit_32(1112219661); +emit_32(1111195648); +emit_32(1108681661); +emit_32(1112219661); +emit_32(1112219661); +emit_32(1108461250); +emit_32(1112219661); +emit_32(1113243648); +emit_32(1108501751); +emit_32(1112219661); +emit_32(1114267661); +emit_32(1108538058); +emit_32(1112219661); +emit_32(1115291648); +emit_32(1108506155); +emit_32(1112219661); +emit_32(1116000263); +emit_32(1108331069); +emit_32(1112219661); +emit_32(1116512256); +emit_32(1108130713); +emit_32(1112219661); +emit_32(1117024263); +emit_32(1108289153); +emit_32(1112219661); +emit_32(1117536256); +emit_32(1108320872); +emit_32(1112219661); +emit_32(1118048263); +emit_32(1108083946); +emit_32(1112219661); +emit_32(1118560256); +emit_32(1107747196); +emit_32(1112219661); +emit_32(1119072263); +emit_32(1107465942); +emit_32(1112219661); +emit_32(1119584256); +emit_32(1106748480); +emit_32(1112219661); +emit_32(1120096263); +emit_32(1105589856); +emit_32(1112219661); +emit_32(1120608322); +emit_32(1105803398); +emit_32(1112219661); +emit_32(1121120289); +emit_32(1106245426); +emit_32(1112219661); +emit_32(1121632256); +emit_32(1106538345); +emit_32(1112219661); +emit_32(1122144223); +emit_32(1107136191); +emit_32(1112219661); +emit_32(1122656322); +emit_32(1107495066); +emit_32(1112219661); +emit_32(1123168289); +emit_32(1107886552); +emit_32(1112219661); +emit_32(1123680256); +emit_32(1108441668); +emit_32(1112219661); +emit_32(1124132848); +emit_32(1108593266); +emit_32(1112219661); +emit_32(1124388897); +emit_32(1108683470); +emit_32(1112219661); +emit_32(1124644880); +emit_32(1108825211); +emit_32(1112219661); +emit_32(1124900864); +emit_32(1108891271); +emit_32(1112219661); +emit_32(1125156848); +emit_32(1109395715); +emit_32(1112219661); +emit_32(1125412897); +emit_32(1109608864); +emit_32(1112219661); +emit_32(1125668880); +emit_32(1110023576); +emit_32(1112219661); +emit_32(1125924864); +emit_32(1110077237); +emit_32(1112219661); +emit_32(1126180848); +emit_32(1110323678); +emit_32(1112219661); +emit_32(1126436897); +emit_32(1110319510); +emit_32(1112219661); +emit_32(1126692880); +emit_32(1110497559); +emit_32(1112219635); +emit_32(1126948864); +emit_32(1110356630); +emit_32(1112219661); +emit_32(1127204848); +emit_32(1110231745); +emit_32(1112219661); +emit_32(1127460897); +emit_32(1110168568); +emit_32(1112219661); +emit_32(1127716880); +emit_32(1109786440); +emit_32(1112219661); +emit_32(1127972864); +emit_32(1109264984); +emit_32(1112219661); +emit_32(1128228848); +emit_32(1108914445); +emit_32(1112219661); +emit_32(1128484897); +emit_32(1108210640); +emit_32(1112219661); +emit_32(1128740880); +emit_32(1107987897); +emit_32(1112219661); +emit_32(1128996864); +emit_32(1107869644); +emit_32(1112219661); +emit_32(1129252848); +emit_32(1107326534); +emit_32(1112219661); +emit_32(1129508897); +emit_32(1106725831); +emit_32(1112219661); +emit_32(1129764880); +emit_32(1106425466); +emit_32(1112219661); +emit_32(1130020864); +emit_32(1105264955); +emit_32(1112219661); +emit_32(1130276848); +emit_32(1103574860); +emit_32(1112219661); +emit_32(1130532897); +emit_32(1102181460); +emit_32(1112219661); +emit_32(1130788880); +emit_32(1101485677); +emit_32(1112219661); +emit_32(1131044864); +emit_32(1100402288); +emit_32(1112219661); +emit_32(1131300848); +emit_32(1098898421); +emit_32(1112219661); +emit_32(1131556897); +emit_32(1095522425); +emit_32(1112219661); +emit_32(1131812880); +emit_32(1094313732); +emit_32(1112219661); +emit_32(1132068864); +emit_32(1094995201); +emit_32(1112219661); +emit_32(1081737216); +emit_32(1106707585); +emit_32(1111195648); +emit_32(1090125824); +emit_32(1107420879); +emit_32(1111195648); +emit_32(1094418484); +emit_32(1107741455); +emit_32(1111195648); +emit_32(1098514432); +emit_32(1108119388); +emit_32(1111195648); +emit_32(1100759066); +emit_32(1108616649); +emit_32(1111195648); +emit_32(1102807040); +emit_32(1108965851); +emit_32(1111195648); +emit_32(1104855066); +emit_32(1109029919); +emit_32(1111195648); +emit_32(1106903040); +emit_32(1109125602); +emit_32(1111195648); +emit_32(1108123661); +emit_32(1109390551); +emit_32(1111195648); +emit_32(1109147648); +emit_32(1109477215); +emit_32(1111195648); +emit_32(1110171661); +emit_32(1109385334); +emit_32(1111195648); +emit_32(1111195648); +emit_32(1109314608); +emit_32(1111195648); +emit_32(1112219661); +emit_32(1109240919); +emit_32(1111195648); +emit_32(1113243648); +emit_32(1108946400); +emit_32(1111195648); +emit_32(1114267661); +emit_32(1108953006); +emit_32(1111195648); +emit_32(1115291648); +emit_32(1109031911); +emit_32(1111195648); +emit_32(1116000263); +emit_32(1108925062); +emit_32(1111195648); +emit_32(1116512256); +emit_32(1108595887); +emit_32(1111195648); +emit_32(1117024263); +emit_32(1108683941); +emit_32(1111195648); +emit_32(1117536256); +emit_32(1108833809); +emit_32(1111195648); +emit_32(1118048263); +emit_32(1108582282); +emit_32(1111195648); +emit_32(1118560256); +emit_32(1108393093); +emit_32(1111195648); +emit_32(1119072263); +emit_32(1108034008); +emit_32(1111195648); +emit_32(1119584256); +emit_32(1107578926); +emit_32(1111195648); +emit_32(1120096263); +emit_32(1106764313); +emit_32(1111195648); +emit_32(1120608322); +emit_32(1106737365); +emit_32(1111195648); +emit_32(1121120289); +emit_32(1107324568); +emit_32(1111195648); +emit_32(1121632256); +emit_32(1107570511); +emit_32(1111195648); +emit_32(1122144223); +emit_32(1107538818); +emit_32(1111195648); +emit_32(1122656322); +emit_32(1107646926); +emit_32(1111195648); +emit_32(1123168289); +emit_32(1107876984); +emit_32(1111195648); +emit_32(1123680256); +emit_32(1108102060); +emit_32(1111195648); +emit_32(1124132848); +emit_32(1108560812); +emit_32(1111195648); +emit_32(1124388897); +emit_32(1108645328); +emit_32(1111195648); +emit_32(1124644880); +emit_32(1108748770); +emit_32(1111195648); +emit_32(1124900864); +emit_32(1109085782); +emit_32(1111195648); +emit_32(1125156848); +emit_32(1109583226); +emit_32(1111195648); +emit_32(1125412897); +emit_32(1109638486); +emit_32(1111195648); +emit_32(1125668880); +emit_32(1110035425); +emit_32(1111195648); +emit_32(1125924864); +emit_32(1110433989); +emit_32(1111195648); +emit_32(1126180848); +emit_32(1110499420); +emit_32(1111195648); +emit_32(1126436897); +emit_32(1110684860); +emit_32(1111195648); +emit_32(1126692880); +emit_32(1110426858); +emit_32(1111195648); +emit_32(1126948864); +emit_32(1110251405); +emit_32(1111195648); +emit_32(1127204848); +emit_32(1110246503); +emit_32(1111195648); +emit_32(1127460897); +emit_32(1110057366); +emit_32(1111195648); +emit_32(1127716880); +emit_32(1109702135); +emit_32(1111195648); +emit_32(1127972864); +emit_32(1109224404); +emit_32(1111195648); +emit_32(1128228848); +emit_32(1108823035); +emit_32(1111195648); +emit_32(1128484897); +emit_32(1108466703); +emit_32(1111195648); +emit_32(1128740880); +emit_32(1108265009); +emit_32(1111195648); +emit_32(1128996864); +emit_32(1108131919); +emit_32(1111195648); +emit_32(1129252848); +emit_32(1107543668); +emit_32(1111195648); +emit_32(1129508897); +emit_32(1106964749); +emit_32(1111195648); +emit_32(1129764880); +emit_32(1106629467); +emit_32(1111195648); +emit_32(1130020864); +emit_32(1105373587); +emit_32(1111195648); +emit_32(1130276848); +emit_32(1103657645); +emit_32(1111195648); +emit_32(1130532897); +emit_32(1103203244); +emit_32(1111195648); +emit_32(1130788880); +emit_32(1102255384); +emit_32(1111195648); +emit_32(1131044864); +emit_32(1100737203); +emit_32(1111195648); +emit_32(1131300848); +emit_32(1099366557); +emit_32(1111195648); +emit_32(1131556897); +emit_32(1096754817); +emit_32(1111195648); +emit_32(1131812880); +emit_32(1096073871); +emit_32(1111195648); +emit_32(1132068864); +emit_32(1096026581); +emit_32(1111195648); +emit_32(1081737216); +emit_32(1107240944); +emit_32(1110171661); +emit_32(1090125824); +emit_32(1107823611); +emit_32(1110171661); +emit_32(1094418484); +emit_32(1108408821); +emit_32(1110171661); +emit_32(1098514432); +emit_32(1108701925); +emit_32(1110171661); +emit_32(1100759066); +emit_32(1109285326); +emit_32(1110171661); +emit_32(1102807040); +emit_32(1109681609); +emit_32(1110171661); +emit_32(1104855066); +emit_32(1109940345); +emit_32(1110171661); +emit_32(1106903040); +emit_32(1109939952); +emit_32(1110171661); +emit_32(1108123661); +emit_32(1109971121); +emit_32(1110171661); +emit_32(1109147648); +emit_32(1110303834); +emit_32(1110171661); +emit_32(1110171661); +emit_32(1110120962); +emit_32(1110171661); +emit_32(1111195648); +emit_32(1110000979); +emit_32(1110171661); +emit_32(1112219661); +emit_32(1109972484); +emit_32(1110171661); +emit_32(1113243648); +emit_32(1109736686); +emit_32(1110171661); +emit_32(1114267661); +emit_32(1109619612); +emit_32(1110171661); +emit_32(1115291648); +emit_32(1109518608); +emit_32(1110171661); +emit_32(1116000263); +emit_32(1109430003); +emit_32(1110171661); +emit_32(1116512256); +emit_32(1109161909); +emit_32(1110171661); +emit_32(1117024263); +emit_32(1109167492); +emit_32(1110171661); +emit_32(1117536256); +emit_32(1109168515); +emit_32(1110171661); +emit_32(1118048263); +emit_32(1109105626); +emit_32(1110171661); +emit_32(1118560256); +emit_32(1108756686); +emit_32(1110171661); +emit_32(1119072263); +emit_32(1108552555); +emit_32(1110171661); +emit_32(1119584256); +emit_32(1108023286); +emit_32(1110171661); +emit_32(1120096263); +emit_32(1107602178); +emit_32(1110171661); +emit_32(1120608322); +emit_32(1107405649); +emit_32(1110171661); +emit_32(1121120289); +emit_32(1107570616); +emit_32(1110171661); +emit_32(1121632256); +emit_32(1107660164); +emit_32(1110171661); +emit_32(1122144223); +emit_32(1107756004); +emit_32(1110171661); +emit_32(1122656322); +emit_32(1107706800); +emit_32(1110171661); +emit_32(1123168289); +emit_32(1107795667); +emit_32(1110171661); +emit_32(1123680256); +emit_32(1108061218); +emit_32(1110171661); +emit_32(1124132848); +emit_32(1108159365); +emit_32(1110171661); +emit_32(1124388897); +emit_32(1108652615); +emit_32(1110171661); +emit_32(1124644880); +emit_32(1108895151); +emit_32(1110171661); +emit_32(1124900864); +emit_32(1109068900); +emit_32(1110171661); +emit_32(1125156848); +emit_32(1109317911); +emit_32(1110171661); +emit_32(1125412897); +emit_32(1109583646); +emit_32(1110171661); +emit_32(1125668880); +emit_32(1109982314); +emit_32(1110171661); +emit_32(1125924864); +emit_32(1110319589); +emit_32(1110171661); +emit_32(1126180848); +emit_32(1110618800); +emit_32(1110171635); +emit_32(1126436897); +emit_32(1110589833); +emit_32(1110171661); +emit_32(1126692880); +emit_32(1110601236); +emit_32(1110171661); +emit_32(1126948864); +emit_32(1110238219); +emit_32(1110171661); +emit_32(1127204848); +emit_32(1110066804); +emit_32(1110171661); +emit_32(1127460897); +emit_32(1109910933); +emit_32(1110171661); +emit_32(1127716880); +emit_32(1109484739); +emit_32(1110171661); +emit_32(1127972864); +emit_32(1109107907); +emit_32(1110171661); +emit_32(1128228848); +emit_32(1108797633); +emit_32(1110171661); +emit_32(1128484897); +emit_32(1108483428); +emit_32(1110171661); +emit_32(1128740880); +emit_32(1108328081); +emit_32(1110171661); +emit_32(1128996864); +emit_32(1108125627); +emit_32(1110171661); +emit_32(1129252848); +emit_32(1107731808); +emit_32(1110171661); +emit_32(1129508897); +emit_32(1106917982); +emit_32(1110171661); +emit_32(1129764880); +emit_32(1106313688); +emit_32(1110171661); +emit_32(1130020864); +emit_32(1105521174); +emit_32(1110171661); +emit_32(1130276848); +emit_32(1104211450); +emit_32(1110171661); +emit_32(1130532897); +emit_32(1103253052); +emit_32(1110171661); +emit_32(1130788880); +emit_32(1102325744); +emit_32(1110171661); +emit_32(1131044864); +emit_32(1101081451); +emit_32(1110171661); +emit_32(1131300848); +emit_32(1099684171); +emit_32(1110171661); +emit_32(1131556897); +emit_32(1098145962); +emit_32(1110171661); +emit_32(1131812880); +emit_32(1096588198); +emit_32(1110171661); +emit_32(1132068864); +emit_32(1095942590); +emit_32(1110171661); +emit_32(1081737216); +emit_32(1108060956); +emit_32(1109147648); +emit_32(1090125824); +emit_32(1108546971); +emit_32(1109147648); +emit_32(1094418484); +emit_32(1109017939); +emit_32(1109147648); +emit_32(1098514432); +emit_32(1109407144); +emit_32(1109147648); +emit_32(1100759066); +emit_32(1109980401); +emit_32(1109147648); +emit_32(1102807040); +emit_32(1110240972); +emit_32(1109147648); +emit_32(1104855066); +emit_32(1110658358); +emit_32(1109147648); +emit_32(1106903040); +emit_32(1110751524); +emit_32(1109147648); +emit_32(1108123661); +emit_32(1110695844); +emit_32(1109147648); +emit_32(1109147648); +emit_32(1110721089); +emit_32(1109147648); +emit_32(1110171661); +emit_32(1110727406); +emit_32(1109147648); +emit_32(1111195648); +emit_32(1110842173); +emit_32(1109147648); +emit_32(1112219661); +emit_32(1110770765); +emit_32(1109147648); +emit_32(1113243648); +emit_32(1110489091); +emit_32(1109147648); +emit_32(1114267661); +emit_32(1110249518); +emit_32(1109147648); +emit_32(1115291648); +emit_32(1110116087); +emit_32(1109147648); +emit_32(1116000263); +emit_32(1110026722); +emit_32(1109147648); +emit_32(1116512256); +emit_32(1109757343); +emit_32(1109147648); +emit_32(1117024263); +emit_32(1109707325); +emit_32(1109147648); +emit_32(1117536256); +emit_32(1109736109); +emit_32(1109147648); +emit_32(1118048263); +emit_32(1109670940); +emit_32(1109147648); +emit_32(1118560256); +emit_32(1109409425); +emit_32(1109147648); +emit_32(1119072263); +emit_32(1109060459); +emit_32(1109147648); +emit_32(1119584256); +emit_32(1108683601); +emit_32(1109147648); +emit_32(1120096263); +emit_32(1108291643); +emit_32(1109147648); +emit_32(1120608322); +emit_32(1108134645); +emit_32(1109147648); +emit_32(1121120289); +emit_32(1107726382); +emit_32(1109147648); +emit_32(1121632256); +emit_32(1107627056); +emit_32(1109147648); +emit_32(1122144223); +emit_32(1107778260); +emit_32(1109147648); +emit_32(1122656322); +emit_32(1108018568); +emit_32(1109147648); +emit_32(1123168289); +emit_32(1107783031); +emit_32(1109147648); +emit_32(1123680256); +emit_32(1108023470); +emit_32(1109147648); +emit_32(1124132848); +emit_32(1108274551); +emit_32(1109147648); +emit_32(1124388897); +emit_32(1108502721); +emit_32(1109147648); +emit_32(1124644880); +emit_32(1108792679); +emit_32(1109147648); +emit_32(1124900864); +emit_32(1108934997); +emit_32(1109147648); +emit_32(1125156848); +emit_32(1109183483); +emit_32(1109147648); +emit_32(1125412897); +emit_32(1109454645); +emit_32(1109147648); +emit_32(1125668880); +emit_32(1109678699); +emit_32(1109147648); +emit_32(1125924864); +emit_32(1110022658); +emit_32(1109147648); +emit_32(1126180848); +emit_32(1110147151); +emit_32(1109147648); +emit_32(1126436897); +emit_32(1110222596); +emit_32(1109147648); +emit_32(1126692880); +emit_32(1110347035); +emit_32(1109147648); +emit_32(1126948864); +emit_32(1110235231); +emit_32(1109147648); +emit_32(1127204848); +emit_32(1110061194); +emit_32(1109147648); +emit_32(1127460897); +emit_32(1109745022); +emit_32(1109147648); +emit_32(1127716880); +emit_32(1109246162); +emit_32(1109147648); +emit_32(1127972864); +emit_32(1109124003); +emit_32(1109147648); +emit_32(1128228848); +emit_32(1108700011); +emit_32(1109147648); +emit_32(1128484897); +emit_32(1108308525); +emit_32(1109147648); +emit_32(1128740880); +emit_32(1108062844); +emit_32(1109147648); +emit_32(1128996864); +emit_32(1107977306); +emit_32(1109147648); +emit_32(1129252848); +emit_32(1107731205); +emit_32(1109147648); +emit_32(1129508897); +emit_32(1107357781); +emit_32(1109147648); +emit_32(1129764880); +emit_32(1106463529); +emit_32(1109147648); +emit_32(1130020864); +emit_32(1105450081); +emit_32(1109147648); +emit_32(1130276848); +emit_32(1104493307); +emit_32(1109147648); +emit_32(1130532897); +emit_32(1103358434); +emit_32(1109147648); +emit_32(1130788880); +emit_32(1102558632); +emit_32(1109147648); +emit_32(1131044864); +emit_32(1101338404); +emit_32(1109147648); +emit_32(1131300848); +emit_32(1100196558); +emit_32(1109147648); +emit_32(1131556897); +emit_32(1099061264); +emit_32(1109147648); +emit_32(1131812880); +emit_32(1096545521); +emit_32(1109147648); +emit_32(1132068864); +emit_32(1096018716); +emit_32(1109147648); +emit_32(1081737216); +emit_32(1109011386); +emit_32(1108123661); +emit_32(1090125824); +emit_32(1109203904); +emit_32(1108123661); +emit_32(1094418484); +emit_32(1109519263); +emit_32(1108123661); +emit_32(1098514432); +emit_32(1109988842); +emit_32(1108123661); +emit_32(1100759066); +emit_32(1110461461); +emit_32(1108123635); +emit_32(1102807040); +emit_32(1110941919); +emit_32(1108123635); +emit_32(1104855066); +emit_32(1111344415); +emit_32(1108123661); +emit_32(1106903040); +emit_32(1111428956); +emit_32(1108123661); +emit_32(1108123661); +emit_32(1111187862); +emit_32(1108123635); +emit_32(1109147648); +emit_32(1111258851); +emit_32(1108123635); +emit_32(1110171661); +emit_32(1111121199); +emit_32(1108123661); +emit_32(1111195648); +emit_32(1111334951); +emit_32(1108123661); +emit_32(1112219661); +emit_32(1111280871); +emit_32(1108123635); +emit_32(1113243648); +emit_32(1111290597); +emit_32(1108123635); +emit_32(1114267661); +emit_32(1111219660); +emit_32(1108123661); +emit_32(1115291648); +emit_32(1110791212); +emit_32(1108123661); +emit_32(1116000263); +emit_32(1110556043); +emit_32(1108123635); +emit_32(1116512256); +emit_32(1110407643); +emit_32(1108123635); +emit_32(1117024263); +emit_32(1110379174); +emit_32(1108123661); +emit_32(1117536256); +emit_32(1110347979); +emit_32(1108123661); +emit_32(1118048263); +emit_32(1110338280); +emit_32(1108123661); +emit_32(1118560256); +emit_32(1109911536); +emit_32(1108123661); +emit_32(1119072263); +emit_32(1109549908); +emit_32(1108123661); +emit_32(1119584256); +emit_32(1109081142); +emit_32(1108123661); +emit_32(1120096263); +emit_32(1108718492); +emit_32(1108123661); +emit_32(1120608322); +emit_32(1108472470); +emit_32(1108123661); +emit_32(1121120289); +emit_32(1108029604); +emit_32(1108123661); +emit_32(1121632256); +emit_32(1107454879); +emit_32(1108123661); +emit_32(1122144223); +emit_32(1107399252); +emit_32(1108123661); +emit_32(1122656322); +emit_32(1107660793); +emit_32(1108123661); +emit_32(1123168289); +emit_32(1107749241); +emit_32(1108123661); +emit_32(1123680256); +emit_32(1107770448); +emit_32(1108123661); +emit_32(1124132848); +emit_32(1108146730); +emit_32(1108123661); +emit_32(1124388897); +emit_32(1108341608); +emit_32(1108123661); +emit_32(1124644880); +emit_32(1108443057); +emit_32(1108123661); +emit_32(1124900864); +emit_32(1108765442); +emit_32(1108123661); +emit_32(1125156848); +emit_32(1108966061); +emit_32(1108123661); +emit_32(1125412897); +emit_32(1109234287); +emit_32(1108123661); +emit_32(1125668880); +emit_32(1109396423); +emit_32(1108123661); +emit_32(1125924864); +emit_32(1109622050); +emit_32(1108123661); +emit_32(1126180848); +emit_32(1109584826); +emit_32(1108123661); +emit_32(1126436897); +emit_32(1109832945); +emit_32(1108123661); +emit_32(1126692880); +emit_32(1109962759); +emit_32(1108123661); +emit_32(1126948864); +emit_32(1109897773); +emit_32(1108123661); +emit_32(1127204848); +emit_32(1109645800); +emit_32(1108123661); +emit_32(1127460897); +emit_32(1109215386); +emit_32(1108123661); +emit_32(1127716880); +emit_32(1108859027); +emit_32(1108123661); +emit_32(1127972864); +emit_32(1108683050); +emit_32(1108123661); +emit_32(1128228848); +emit_32(1108384704); +emit_32(1108123661); +emit_32(1128484897); +emit_32(1108232031); +emit_32(1108123661); +emit_32(1128740880); +emit_32(1108097027); +emit_32(1108123661); +emit_32(1128996864); +emit_32(1107779178); +emit_32(1108123661); +emit_32(1129252848); +emit_32(1107602938); +emit_32(1108123661); +emit_32(1129508897); +emit_32(1107406278); +emit_32(1108123661); +emit_32(1129764880); +emit_32(1106809874); +emit_32(1108123661); +emit_32(1130020864); +emit_32(1105779438); +emit_32(1108123661); +emit_32(1130276848); +emit_32(1104361030); +emit_32(1108123661); +emit_32(1130532897); +emit_32(1102937430); +emit_32(1108123661); +emit_32(1130788880); +emit_32(1102218107); +emit_32(1108123661); +emit_32(1131044864); +emit_32(1101488456); +emit_32(1108123661); +emit_32(1131300848); +emit_32(1100298741); +emit_32(1108123661); +emit_32(1131556897); +emit_32(1099192756); +emit_32(1108123661); +emit_32(1131812880); +emit_32(1097382704); +emit_32(1108123661); +emit_32(1132068864); +emit_32(1096297952); +emit_32(1108123661); +emit_32(1081737216); +emit_32(1109770397); +emit_32(1106903040); +emit_32(1090125824); +emit_32(1109777737); +emit_32(1106903040); +emit_32(1094418484); +emit_32(1110054299); +emit_32(1106903040); +emit_32(1098514432); +emit_32(1110481751); +emit_32(1106903040); +emit_32(1100759066); +emit_32(1110921734); +emit_32(1106903040); +emit_32(1102807040); +emit_32(1111312643); +emit_32(1106903040); +emit_32(1104855066); +emit_32(1111792130); +emit_32(1106903040); +emit_32(1106903040); +emit_32(1111787124); +emit_32(1106903040); +emit_32(1108123661); +emit_32(1111611697); +emit_32(1106903040); +emit_32(1109147648); +emit_32(1111513262); +emit_32(1106903040); +emit_32(1110171661); +emit_32(1111366278); +emit_32(1106903040); +emit_32(1111195648); +emit_32(1111544090); +emit_32(1106903040); +emit_32(1112219661); +emit_32(1111560762); +emit_32(1106903040); +emit_32(1113243648); +emit_32(1111668713); +emit_32(1106903040); +emit_32(1114267661); +emit_32(1111792235); +emit_32(1106903040); +emit_32(1115291648); +emit_32(1111628474); +emit_32(1106903040); +emit_32(1116000263); +emit_32(1111299169); +emit_32(1106903040); +emit_32(1116512256); +emit_32(1111051180); +emit_32(1106903040); +emit_32(1117024263); +emit_32(1110941447); +emit_32(1106903040); +emit_32(1117536256); +emit_32(1110781408); +emit_32(1106903040); +emit_32(1118048263); +emit_32(1110736162); +emit_32(1106903040); +emit_32(1118560256); +emit_32(1110488462); +emit_32(1106903040); +emit_32(1119072263); +emit_32(1109937383); +emit_32(1106903040); +emit_32(1119584256); +emit_32(1109345724); +emit_32(1106903040); +emit_32(1120096263); +emit_32(1108919032); +emit_32(1106903040); +emit_32(1120608322); +emit_32(1108581522); +emit_32(1106903040); +emit_32(1121120289); +emit_32(1108342132); +emit_32(1106903040); +emit_32(1121632256); +emit_32(1107848908); +emit_32(1106903040); +emit_32(1122144223); +emit_32(1107817451); +emit_32(1106903040); +emit_32(1122656322); +emit_32(1107677518); +emit_32(1106903040); +emit_32(1123168289); +emit_32(1107491160); +emit_32(1106903040); +emit_32(1123680256); +emit_32(1107374427); +emit_32(1106903040); +emit_32(1124132848); +emit_32(1107634238); +emit_32(1106903040); +emit_32(1124388897); +emit_32(1107933318); +emit_32(1106903040); +emit_32(1124644880); +emit_32(1108214022); +emit_32(1106903040); +emit_32(1124900864); +emit_32(1108453936); +emit_32(1106903040); +emit_32(1125156848); +emit_32(1108889960); +emit_32(1106903040); +emit_32(1125412897); +emit_32(1108978801); +emit_32(1106903040); +emit_32(1125668880); +emit_32(1108913553); +emit_32(1106903040); +emit_32(1125924864); +emit_32(1109166234); +emit_32(1106903040); +emit_32(1126180848); +emit_32(1109341451); +emit_32(1106903040); +emit_32(1126436897); +emit_32(1109498502); +emit_32(1106903040); +emit_32(1126692880); +emit_32(1109568048); +emit_32(1106903040); +emit_32(1126948864); +emit_32(1109560892); +emit_32(1106903040); +emit_32(1127204848); +emit_32(1109393539); +emit_32(1106903040); +emit_32(1127460897); +emit_32(1108906790); +emit_32(1106903040); +emit_32(1127716880); +emit_32(1108388794); +emit_32(1106903040); +emit_32(1127972864); +emit_32(1108280685); +emit_32(1106903040); +emit_32(1128228848); +emit_32(1108149246); +emit_32(1106903040); +emit_32(1128484897); +emit_32(1107958379); +emit_32(1106903040); +emit_32(1128740880); +emit_32(1107807725); +emit_32(1106903040); +emit_32(1128996864); +emit_32(1107773594); +emit_32(1106903040); +emit_32(1129252848); +emit_32(1107432414); +emit_32(1106903040); +emit_32(1129508897); +emit_32(1107128327); +emit_32(1106903040); +emit_32(1129764880); +emit_32(1106506678); +emit_32(1106903040); +emit_32(1130020864); +emit_32(1105675629); +emit_32(1106903040); +emit_32(1130276848); +emit_32(1104725148); +emit_32(1106903040); +emit_32(1130532897); +emit_32(1102879234); +emit_32(1106903040); +emit_32(1130788880); +emit_32(1102337697); +emit_32(1106903040); +emit_32(1131044864); +emit_32(1101447194); +emit_32(1106903040); +emit_32(1131300848); +emit_32(1100372404); +emit_32(1106903040); +emit_32(1131556897); +emit_32(1099275803); +emit_32(1106903040); +emit_32(1131812880); +emit_32(1097451700); +emit_32(1106903040); +emit_32(1132068864); +emit_32(1095526829); +emit_32(1106903040); +emit_32(1081737216); +emit_32(1110109952); +emit_32(1104855014); +emit_32(1090125824); +emit_32(1110275732); +emit_32(1104855066); +emit_32(1094418484); +emit_32(1110685778); +emit_32(1104855014); +emit_32(1098514432); +emit_32(1111152735); +emit_32(1104855066); +emit_32(1100759066); +emit_32(1111517587); +emit_32(1104855014); +emit_32(1102807040); +emit_32(1111678596); +emit_32(1104855066); +emit_32(1104855066); +emit_32(1111775642); +emit_32(1104855014); +emit_32(1106903040); +emit_32(1112048193); +emit_32(1104855066); +emit_32(1108123661); +emit_32(1111799470); +emit_32(1104855014); +emit_32(1109147648); +emit_32(1112134622); +emit_32(1104855066); +emit_32(1110171661); +emit_32(1111941867); +emit_32(1104855014); +emit_32(1111195648); +emit_32(1111767463); +emit_32(1104855066); +emit_32(1112219661); +emit_32(1111687011); +emit_32(1104855014); +emit_32(1113243648); +emit_32(1111766309); +emit_32(1104855066); +emit_32(1114267661); +emit_32(1111969340); +emit_32(1104855014); +emit_32(1115291648); +emit_32(1111967505); +emit_32(1104855066); +emit_32(1116000263); +emit_32(1111727355); +emit_32(1104855014); +emit_32(1116512256); +emit_32(1111359540); +emit_32(1104855066); +emit_32(1117024263); +emit_32(1111157847); +emit_32(1104855014); +emit_32(1117536256); +emit_32(1110917304); +emit_32(1104855066); +emit_32(1118048263); +emit_32(1110816929); +emit_32(1104855014); +emit_32(1118560256); +emit_32(1110568783); +emit_32(1104855066); +emit_32(1119072263); +emit_32(1110093490); +emit_32(1104855014); +emit_32(1119584256); +emit_32(1109527311); +emit_32(1104855066); +emit_32(1120096263); +emit_32(1108993586); +emit_32(1104855014); +emit_32(1120608322); +emit_32(1108933555); +emit_32(1104855066); +emit_32(1121120289); +emit_32(1108821698); +emit_32(1104855014); +emit_32(1121632256); +emit_32(1108751234); +emit_32(1104855066); +emit_32(1122144223); +emit_32(1108472837); +emit_32(1104855014); +emit_32(1122656322); +emit_32(1108266844); +emit_32(1104855066); +emit_32(1123168289); +emit_32(1107914103); +emit_32(1104855014); +emit_32(1123680256); +emit_32(1107834175); +emit_32(1104855066); +emit_32(1124132848); +emit_32(1107903539); +emit_32(1104855014); +emit_32(1124388897); +emit_32(1107817215); +emit_32(1104855066); +emit_32(1124644880); +emit_32(1107776661); +emit_32(1104855014); +emit_32(1124900864); +emit_32(1108217378); +emit_32(1104855066); +emit_32(1125156848); +emit_32(1108340821); +emit_32(1104855014); +emit_32(1125412897); +emit_32(1108427643); +emit_32(1104855066); +emit_32(1125668880); +emit_32(1108896016); +emit_32(1104855014); +emit_32(1125924864); +emit_32(1109136271); +emit_32(1104855066); +emit_32(1126180848); +emit_32(1109149745); +emit_32(1104855014); +emit_32(1126436897); +emit_32(1109121932); +emit_32(1104855066); +emit_32(1126692880); +emit_32(1108894600); +emit_32(1104855014); +emit_32(1126948864); +emit_32(1108941734); +emit_32(1104855066); +emit_32(1127204848); +emit_32(1108756031); +emit_32(1104855014); +emit_32(1127460897); +emit_32(1108342132); +emit_32(1104855066); +emit_32(1127716880); +emit_32(1107861281); +emit_32(1104855014); +emit_32(1127972864); +emit_32(1107811264); +emit_32(1104855066); +emit_32(1128228848); +emit_32(1107808905); +emit_32(1104855014); +emit_32(1128484897); +emit_32(1107751705); +emit_32(1104855066); +emit_32(1128740880); +emit_32(1107656337); +emit_32(1104855014); +emit_32(1128996864); +emit_32(1107347820); +emit_32(1104855066); +emit_32(1129252848); +emit_32(1107352119); +emit_32(1104855014); +emit_32(1129508897); +emit_32(1106497084); +emit_32(1104855066); +emit_32(1129764880); +emit_32(1105749344); +emit_32(1104855014); +emit_32(1130020864); +emit_32(1104957407); +emit_32(1104855066); +emit_32(1130276848); +emit_32(1104016048); +emit_32(1104855014); +emit_32(1130532897); +emit_32(1102858578); +emit_32(1104855066); +emit_32(1130788880); +emit_32(1102331511); +emit_32(1104855014); +emit_32(1131044864); +emit_32(1101186518); +emit_32(1104855066); +emit_32(1131300848); +emit_32(1100268490); +emit_32(1104855066); +emit_32(1131556897); +emit_32(1099251266); +emit_32(1104855066); +emit_32(1131812880); +emit_32(1097610874); +emit_32(1104855066); +emit_32(1132068864); +emit_32(1095739900); +emit_32(1104855066); +emit_32(1081737216); +emit_32(1110619796); +emit_32(1102807040); +emit_32(1090125824); +emit_32(1110999800); +emit_32(1102807040); +emit_32(1094418484); +emit_32(1111488489); +emit_32(1102807040); +emit_32(1098514432); +emit_32(1111646011); +emit_32(1102807040); +emit_32(1100759066); +emit_32(1111969235); +emit_32(1102807040); +emit_32(1102807040); +emit_32(1112017758); +emit_32(1102807040); +emit_32(1104855066); +emit_32(1111955341); +emit_32(1102807040); +emit_32(1106903040); +emit_32(1112183747); +emit_32(1102807040); +emit_32(1108123661); +emit_32(1112078287); +emit_32(1102807040); +emit_32(1109147648); +emit_32(1112415640); +emit_32(1102807040); +emit_32(1110171661); +emit_32(1112379359); +emit_32(1102807040); +emit_32(1111195648); +emit_32(1112160154); +emit_32(1102807040); +emit_32(1112219661); +emit_32(1112004362); +emit_32(1102807040); +emit_32(1113243648); +emit_32(1112284594); +emit_32(1102807040); +emit_32(1114267661); +emit_32(1112145815); +emit_32(1102807040); +emit_32(1115291648); +emit_32(1112028165); +emit_32(1102807040); +emit_32(1116000263); +emit_32(1111869699); +emit_32(1102807040); +emit_32(1116512256); +emit_32(1111690130); +emit_32(1102807040); +emit_32(1117024263); +emit_32(1111495488); +emit_32(1102807040); +emit_32(1117536256); +emit_32(1111516565); +emit_32(1102807040); +emit_32(1118048263); +emit_32(1111279455); +emit_32(1102807040); +emit_32(1118560256); +emit_32(1110753647); +emit_32(1102807040); +emit_32(1119072263); +emit_32(1110422245); +emit_32(1102807040); +emit_32(1119584256); +emit_32(1109864350); +emit_32(1102807040); +emit_32(1120096263); +emit_32(1109488566); +emit_32(1102807040); +emit_32(1120608322); +emit_32(1109477320); +emit_32(1102807040); +emit_32(1121120289); +emit_32(1109194755); +emit_32(1102807040); +emit_32(1121632256); +emit_32(1109034743); +emit_32(1102807040); +emit_32(1122144223); +emit_32(1108849800); +emit_32(1102807040); +emit_32(1122656322); +emit_32(1108636598); +emit_32(1102807040); +emit_32(1123168289); +emit_32(1108210719); +emit_32(1102807040); +emit_32(1123680256); +emit_32(1108302496); +emit_32(1102807040); +emit_32(1124132848); +emit_32(1108212213); +emit_32(1102807040); +emit_32(1124388897); +emit_32(1107870640); +emit_32(1102807040); +emit_32(1124644880); +emit_32(1107736422); +emit_32(1102807040); +emit_32(1124900864); +emit_32(1107676522); +emit_32(1102807040); +emit_32(1125156848); +emit_32(1108209094); +emit_32(1102807040); +emit_32(1125412897); +emit_32(1108349734); +emit_32(1102807040); +emit_32(1125668880); +emit_32(1108929675); +emit_32(1102807040); +emit_32(1125924864); +emit_32(1109162643); +emit_32(1102807040); +emit_32(1126180848); +emit_32(1109107540); +emit_32(1102807040); +emit_32(1126436897); +emit_32(1108914654); +emit_32(1102807040); +emit_32(1126692880); +emit_32(1108541388); +emit_32(1102807040); +emit_32(1126948864); +emit_32(1108505081); +emit_32(1102807040); +emit_32(1127204848); +emit_32(1108237222); +emit_32(1102807040); +emit_32(1127460897); +emit_32(1108014924); +emit_32(1102807040); +emit_32(1127716880); +emit_32(1107468589); +emit_32(1102807040); +emit_32(1127972864); +emit_32(1107449269); +emit_32(1102807040); +emit_32(1128228848); +emit_32(1107434458); +emit_32(1102807040); +emit_32(1128484897); +emit_32(1107390916); +emit_32(1102807040); +emit_32(1128740880); +emit_32(1107022787); +emit_32(1102807040); +emit_32(1128996864); +emit_32(1106671200); +emit_32(1102807040); +emit_32(1129252848); +emit_32(1106222724); +emit_32(1102807040); +emit_32(1129508897); +emit_32(1106247575); +emit_32(1102807040); +emit_32(1129764880); +emit_32(1105452230); +emit_32(1102807040); +emit_32(1130020864); +emit_32(1104502273); +emit_32(1102807040); +emit_32(1130276848); +emit_32(1103619634); +emit_32(1102807040); +emit_32(1130532897); +emit_32(1102588831); +emit_32(1102807040); +emit_32(1130788880); +emit_32(1101717150); +emit_32(1102807040); +emit_32(1131044864); +emit_32(1100508142); +emit_32(1102807040); +emit_32(1131300848); +emit_32(1100011589); +emit_32(1102807040); +emit_32(1131556897); +emit_32(1099322674); +emit_32(1102807040); +emit_32(1131812880); +emit_32(1097813040); +emit_32(1102807040); +emit_32(1132068864); +emit_32(1095768526); +emit_32(1102807040); +emit_32(1081737216); +emit_32(1111203643); +emit_32(1100759014); +emit_32(1090125824); +emit_32(1111589362); +emit_32(1100759014); +emit_32(1094418484); +emit_32(1112030917); +emit_32(1100759014); +emit_32(1098514432); +emit_32(1112275996); +emit_32(1100759014); +emit_32(1100759066); +emit_32(1112319197); +emit_32(1100759014); +emit_32(1102807040); +emit_32(1112479393); +emit_32(1100759014); +emit_32(1104855066); +emit_32(1112429638); +emit_32(1100759014); +emit_32(1106903040); +emit_32(1112415247); +emit_32(1100759014); +emit_32(1108123661); +emit_32(1112431998); +emit_32(1100759014); +emit_32(1109147648); +emit_32(1112654453); +emit_32(1100759014); +emit_32(1110171661); +emit_32(1112696396); +emit_32(1100759014); +emit_32(1111195648); +emit_32(1112521022); +emit_32(1100759014); +emit_32(1112219661); +emit_32(1112435904); +emit_32(1100759014); +emit_32(1113243648); +emit_32(1112240292); +emit_32(1100759014); +emit_32(1114267661); +emit_32(1112316209); +emit_32(1100759014); +emit_32(1115291648); +emit_32(1112066150); +emit_32(1100759014); +emit_32(1116000263); +emit_32(1111963651); +emit_32(1100759014); +emit_32(1116512256); +emit_32(1111800886); +emit_32(1100759014); +emit_32(1117024263); +emit_32(1111681296); +emit_32(1100759014); +emit_32(1117536256); +emit_32(1111620767); +emit_32(1100759014); +emit_32(1118048263); +emit_32(1111346774); +emit_32(1100759014); +emit_32(1118560256); +emit_32(1111034272); +emit_32(1100759014); +emit_32(1119072263); +emit_32(1110619088); +emit_32(1100759014); +emit_32(1119584256); +emit_32(1110189723); +emit_32(1100759014); +emit_32(1120096263); +emit_32(1109747512); +emit_32(1100759014); +emit_32(1120608322); +emit_32(1109609965); +emit_32(1100759014); +emit_32(1121120289); +emit_32(1109538216); +emit_32(1100759014); +emit_32(1121632256); +emit_32(1109322341); +emit_32(1100759014); +emit_32(1122144223); +emit_32(1109116505); +emit_32(1100759014); +emit_32(1122656322); +emit_32(1108968237); +emit_32(1100759014); +emit_32(1123168289); +emit_32(1108596962); +emit_32(1100759014); +emit_32(1123680256); +emit_32(1108337885); +emit_32(1100759014); +emit_32(1124132848); +emit_32(1108184583); +emit_32(1100759014); +emit_32(1124388897); +emit_32(1107955103); +emit_32(1100759014); +emit_32(1124644880); +emit_32(1108010677); +emit_32(1100759014); +emit_32(1124900864); +emit_32(1107800306); +emit_32(1100759014); +emit_32(1125156848); +emit_32(1107894626); +emit_32(1100759014); +emit_32(1125412897); +emit_32(1108230616); +emit_32(1100759014); +emit_32(1125668880); +emit_32(1108803374); +emit_32(1100759014); +emit_32(1125924864); +emit_32(1109075454); +emit_32(1100759014); +emit_32(1126180848); +emit_32(1109027350); +emit_32(1100759014); +emit_32(1126436897); +emit_32(1108939951); +emit_32(1100759014); +emit_32(1126692880); +emit_32(1108326744); +emit_32(1100759014); +emit_32(1126948864); +emit_32(1108036865); +emit_32(1100759014); +emit_32(1127204848); +emit_32(1107817923); +emit_32(1100759014); +emit_32(1127460897); +emit_32(1107732464); +emit_32(1100759014); +emit_32(1127716880); +emit_32(1107137554); +emit_32(1100759014); +emit_32(1127972864); +emit_32(1106958562); +emit_32(1100759014); +emit_32(1128228848); +emit_32(1106960135); +emit_32(1100759014); +emit_32(1128484897); +emit_32(1106646873); +emit_32(1100759014); +emit_32(1128740880); +emit_32(1105859497); +emit_32(1100759014); +emit_32(1128996864); +emit_32(1105603382); +emit_32(1100759014); +emit_32(1129252848); +emit_32(1105170530); +emit_32(1100759014); +emit_32(1129508897); +emit_32(1105374164); +emit_32(1100759014); +emit_32(1129764880); +emit_32(1105401636); +emit_32(1100759014); +emit_32(1130020864); +emit_32(1104911427); +emit_32(1100759014); +emit_32(1130276848); +emit_32(1103660424); +emit_32(1100759014); +emit_32(1130532897); +emit_32(1102697778); +emit_32(1100759014); +emit_32(1130788880); +emit_32(1101449239); +emit_32(1100759066); +emit_32(1131044864); +emit_32(1100702810); +emit_32(1100759066); +emit_32(1131300848); +emit_32(1099801611); +emit_32(1100759066); +emit_32(1131556897); +emit_32(1099221015); +emit_32(1100759066); +emit_32(1131812880); +emit_32(1097633733); +emit_32(1100759066); +emit_32(1132068864); +emit_32(1095588276); +emit_32(1100759066); +emit_32(1081737216); +emit_32(1111812866); +emit_32(1098514432); +emit_32(1090125824); +emit_32(1112034614); +emit_32(1098514432); +emit_32(1094418484); +emit_32(1112430949); +emit_32(1098514432); +emit_32(1098514432); +emit_32(1112552899); +emit_32(1098514432); +emit_32(1100759066); +emit_32(1112388901); +emit_32(1098514432); +emit_32(1102807040); +emit_32(1112497324); +emit_32(1098514432); +emit_32(1104855066); +emit_32(1112626351); +emit_32(1098514432); +emit_32(1106903040); +emit_32(1112804164); +emit_32(1098514432); +emit_32(1108123661); +emit_32(1112732048); +emit_32(1098514432); +emit_32(1109147648); +emit_32(1112876043); +emit_32(1098514432); +emit_32(1110171661); +emit_32(1112974741); +emit_32(1098514432); +emit_32(1111195648); +emit_32(1112667141); +emit_32(1098514432); +emit_32(1112219661); +emit_32(1112522411); +emit_32(1098514432); +emit_32(1113243648); +emit_32(1112234315); +emit_32(1098514432); +emit_32(1114267661); +emit_32(1112061562); +emit_32(1098514432); +emit_32(1115291648); +emit_32(1111763216); +emit_32(1098514432); +emit_32(1116000263); +emit_32(1111779207); +emit_32(1098514432); +emit_32(1116512256); +emit_32(1111697732); +emit_32(1098514432); +emit_32(1117024263); +emit_32(1111651097); +emit_32(1098514432); +emit_32(1117536256); +emit_32(1111523564); +emit_32(1098514432); +emit_32(1118048263); +emit_32(1111418916); +emit_32(1098514432); +emit_32(1118560256); +emit_32(1111207811); +emit_32(1098514432); +emit_32(1119072263); +emit_32(1110728743); +emit_32(1098514432); +emit_32(1119584256); +emit_32(1110351885); +emit_32(1098514432); +emit_32(1120096263); +emit_32(1110067354); +emit_32(1098514432); +emit_32(1120608322); +emit_32(1109906476); +emit_32(1098514432); +emit_32(1121120289); +emit_32(1109648474); +emit_32(1098514432); +emit_32(1121632256); +emit_32(1109594787); +emit_32(1098514432); +emit_32(1122144223); +emit_32(1109226711); +emit_32(1098514432); +emit_32(1122656322); +emit_32(1109203825); +emit_32(1098514432); +emit_32(1123168289); +emit_32(1108763659); +emit_32(1098514432); +emit_32(1123680256); +emit_32(1108360770); +emit_32(1098514432); +emit_32(1124132848); +emit_32(1108356628); +emit_32(1098514432); +emit_32(1124388897); +emit_32(1108118838); +emit_32(1098514432); +emit_32(1124644880); +emit_32(1108079411); +emit_32(1098514432); +emit_32(1124900864); +emit_32(1107833179); +emit_32(1098514432); +emit_32(1125156848); +emit_32(1107770841); +emit_32(1098514432); +emit_32(1125412897); +emit_32(1108082531); +emit_32(1098514432); +emit_32(1125668880); +emit_32(1108414667); +emit_32(1098514432); +emit_32(1125924864); +emit_32(1108808670); +emit_32(1098514432); +emit_32(1126180848); +emit_32(1108779572); +emit_32(1098514432); +emit_32(1126436897); +emit_32(1108586686); +emit_32(1098514432); +emit_32(1126692880); +emit_32(1108017650); +emit_32(1098514432); +emit_32(1126948864); +emit_32(1107632508); +emit_32(1098514432); +emit_32(1127204848); +emit_32(1107530849); +emit_32(1098514432); +emit_32(1127460897); +emit_32(1107331357); +emit_32(1098514432); +emit_32(1127716880); +emit_32(1106461065); +emit_32(1098514432); +emit_32(1127972864); +emit_32(1105721295); +emit_32(1098514432); +emit_32(1128228848); +emit_32(1105899395); +emit_32(1098514432); +emit_32(1128484897); +emit_32(1105780959); +emit_32(1098514432); +emit_32(1128740880); +emit_32(1105112806); +emit_32(1098514432); +emit_32(1128996864); +emit_32(1104398988); +emit_32(1098514432); +emit_32(1129252848); +emit_32(1104246420); +emit_32(1098514432); +emit_32(1129508897); +emit_32(1104877715); +emit_32(1098514432); +emit_32(1129764880); +emit_32(1104934024); +emit_32(1098514432); +emit_32(1130020864); +emit_32(1104407062); +emit_32(1098514432); +emit_32(1130276848); +emit_32(1103509009); +emit_32(1098514432); +emit_32(1130532897); +emit_32(1102561359); +emit_32(1098514432); +emit_32(1130788880); +emit_32(1101226941); +emit_32(1098514432); +emit_32(1131044864); +emit_32(1100378223); +emit_32(1098514432); +emit_32(1131300848); +emit_32(1099670330); +emit_32(1098514432); +emit_32(1131556897); +emit_32(1099052247); +emit_32(1098514432); +emit_32(1131812880); +emit_32(1097040344); +emit_32(1098514432); +emit_32(1132068864); +emit_32(1094514429); +emit_32(1098514432); +emit_32(1081737216); +emit_32(1112309314); +emit_32(1094418380); +emit_32(1090125824); +emit_32(1112490036); +emit_32(1094418380); +emit_32(1094418484); +emit_32(1112564590); +emit_32(1094418380); +emit_32(1098514432); +emit_32(1112495017); +emit_32(1094418380); +emit_32(1100759066); +emit_32(1112570934); +emit_32(1094418380); +emit_32(1102807040); +emit_32(1112483797); +emit_32(1094418380); +emit_32(1104855066); +emit_32(1112593269); +emit_32(1094418380); +emit_32(1106903040); +emit_32(1112653955); +emit_32(1094418380); +emit_32(1108123661); +emit_32(1112696973); +emit_32(1094418380); +emit_32(1109147648); +emit_32(1112876358); +emit_32(1094418380); +emit_32(1110171661); +emit_32(1112771972); +emit_32(1094418380); +emit_32(1111195648); +emit_32(1112696658); +emit_32(1094418380); +emit_32(1112219661); +emit_32(1112760438); +emit_32(1094418380); +emit_32(1113243648); +emit_32(1112709844); +emit_32(1094418380); +emit_32(1114267661); +emit_32(1112445708); +emit_32(1094418380); +emit_32(1115291648); +emit_32(1112126810); +emit_32(1094418380); +emit_32(1116000263); +emit_32(1111838268); +emit_32(1094418380); +emit_32(1116512256); +emit_32(1111661530); +emit_32(1094418380); +emit_32(1117024263); +emit_32(1111906163); +emit_32(1094418380); +emit_32(1117536256); +emit_32(1112106389); +emit_32(1094418380); +emit_32(1118048263); +emit_32(1111761879); +emit_32(1094418380); +emit_32(1118560256); +emit_32(1111398128); +emit_32(1094418380); +emit_32(1119072263); +emit_32(1110978645); +emit_32(1094418380); +emit_32(1119584256); +emit_32(1110634319); +emit_32(1094418380); +emit_32(1120096263); +emit_32(1110529776); +emit_32(1094418380); +emit_32(1120608322); +emit_32(1110304358); +emit_32(1094418380); +emit_32(1121120289); +emit_32(1110165710); +emit_32(1094418380); +emit_32(1121632256); +emit_32(1109858216); +emit_32(1094418380); +emit_32(1122144223); +emit_32(1109581365); +emit_32(1094418380); +emit_32(1122656322); +emit_32(1109235859); +emit_32(1094418380); +emit_32(1123168289); +emit_32(1108903907); +emit_32(1094418380); +emit_32(1123680256); +emit_32(1108430973); +emit_32(1094418380); +emit_32(1124132848); +emit_32(1108410683); +emit_32(1094418380); +emit_32(1124388897); +emit_32(1108135038); +emit_32(1094418380); +emit_32(1124644880); +emit_32(1107804973); +emit_32(1094418380); +emit_32(1124900864); +emit_32(1107639901); +emit_32(1094418380); +emit_32(1125156848); +emit_32(1107772126); +emit_32(1094418380); +emit_32(1125412897); +emit_32(1107737261); +emit_32(1094418380); +emit_32(1125668880); +emit_32(1108006063); +emit_32(1094418380); +emit_32(1125924864); +emit_32(1108199919); +emit_32(1094418380); +emit_32(1126180848); +emit_32(1108248678); +emit_32(1094418380); +emit_32(1126436897); +emit_32(1107916253); +emit_32(1094418380); +emit_32(1126692880); +emit_32(1107555149); +emit_32(1094418380); +emit_32(1126948864); +emit_32(1107371177); +emit_32(1094418380); +emit_32(1127204848); +emit_32(1107332275); +emit_32(1094418380); +emit_32(1127460897); +emit_32(1106749686); +emit_32(1094418380); +emit_32(1127716880); +emit_32(1105781640); +emit_32(1094418380); +emit_32(1127972864); +emit_32(1105277223); +emit_32(1094418380); +emit_32(1128228848); +emit_32(1104907757); +emit_32(1094418380); +emit_32(1128484897); +emit_32(1104873049); +emit_32(1094418380); +emit_32(1128740880); +emit_32(1104381896); +emit_32(1094418380); +emit_32(1128996864); +emit_32(1103612294); +emit_32(1094418380); +emit_32(1129252848); +emit_32(1103676519); +emit_32(1094418380); +emit_32(1129508897); +emit_32(1104280132); +emit_32(1094418380); +emit_32(1129764880); +emit_32(1104232789); +emit_32(1094418380); +emit_32(1130020864); +emit_32(1103550533); +emit_32(1094418380); +emit_32(1130276848); +emit_32(1102514592); +emit_32(1094418380); +emit_32(1130532897); +emit_32(1101953866); +emit_32(1094418380); +emit_32(1130788880); +emit_32(1100634653); +emit_32(1094418380); +emit_32(1131044864); +emit_32(1099709337); +emit_32(1094418380); +emit_32(1131300848); +emit_32(1099034526); +emit_32(1094418380); +emit_32(1131556897); +emit_32(1098146172); +emit_32(1094418380); +emit_32(1131812880); +emit_32(1096675754); +emit_32(1094418380); +emit_32(1132068864); +emit_32(1095032426); +emit_32(1094418380); +emit_32(1081737216); +emit_32(1112605380); +emit_32(1090125824); +emit_32(1090125824); +emit_32(1112742534); +emit_32(1090125824); +emit_32(1094418484); +emit_32(1112581997); +emit_32(1090125824); +emit_32(1098514432); +emit_32(1112591984); +emit_32(1090125824); +emit_32(1100759066); +emit_32(1112534732); +emit_32(1090125824); +emit_32(1102807040); +emit_32(1112399387); +emit_32(1090125824); +emit_32(1104855066); +emit_32(1112277857); +emit_32(1090125824); +emit_32(1106903040); +emit_32(1112201599); +emit_32(1090125824); +emit_32(1108123661); +emit_32(1112445472); +emit_32(1090125824); +emit_32(1109147648); +emit_32(1112670418); +emit_32(1090125824); +emit_32(1110171661); +emit_32(1112875572); +emit_32(1090125824); +emit_32(1111195648); +emit_32(1112679095); +emit_32(1090125824); +emit_32(1112219661); +emit_32(1112703500); +emit_32(1090125824); +emit_32(1113243648); +emit_32(1112775511); +emit_32(1090125824); +emit_32(1114267661); +emit_32(1112764999); +emit_32(1090125824); +emit_32(1115291648); +emit_32(1112475330); +emit_32(1090125824); +emit_32(1116000263); +emit_32(1112362661); +emit_32(1090125824); +emit_32(1116512256); +emit_32(1112174966); +emit_32(1090125824); +emit_32(1117024263); +emit_32(1112258039); +emit_32(1090125824); +emit_32(1117536256); +emit_32(1112460755); +emit_32(1090125824); +emit_32(1118048263); +emit_32(1112160312); +emit_32(1090125824); +emit_32(1118560256); +emit_32(1111604462); +emit_32(1090125824); +emit_32(1119072263); +emit_32(1111322578); +emit_32(1090125824); +emit_32(1119584256); +emit_32(1110893291); +emit_32(1090125824); +emit_32(1120096263); +emit_32(1110900736); +emit_32(1090125824); +emit_32(1120608322); +emit_32(1110553369); +emit_32(1090125824); +emit_32(1121120289); +emit_32(1110630518); +emit_32(1090125824); +emit_32(1121632256); +emit_32(1110571431); +emit_32(1090125824); +emit_32(1122144223); +emit_32(1110245900); +emit_32(1090125824); +emit_32(1122656322); +emit_32(1109753463); +emit_32(1090125824); +emit_32(1123168289); +emit_32(1109358386); +emit_32(1090125824); +emit_32(1123680256); +emit_32(1108613530); +emit_32(1090125824); +emit_32(1124132848); +emit_32(1108478368); +emit_32(1090125824); +emit_32(1124388897); +emit_32(1108175854); +emit_32(1090125824); +emit_32(1124644880); +emit_32(1107804527); +emit_32(1090125824); +emit_32(1124900864); +emit_32(1107498500); +emit_32(1090125824); +emit_32(1125156848); +emit_32(1107513704); +emit_32(1090125824); +emit_32(1125412897); +emit_32(1107414562); +emit_32(1090125824); +emit_32(1125668880); +emit_32(1107678934); +emit_32(1090125824); +emit_32(1125924864); +emit_32(1107910564); +emit_32(1090125824); +emit_32(1126180848); +emit_32(1108046853); +emit_32(1090125824); +emit_32(1126436897); +emit_32(1107743028); +emit_32(1090125824); +emit_32(1126692880); +emit_32(1107443817); +emit_32(1090125824); +emit_32(1126948864); +emit_32(1107040246); +emit_32(1090125824); +emit_32(1127204848); +emit_32(1106762321); +emit_32(1090125824); +emit_32(1127460897); +emit_32(1106354582); +emit_32(1090125824); +emit_32(1127716880); +emit_32(1105464079); +emit_32(1090125824); +emit_32(1127972864); +emit_32(1104597169); +emit_32(1090125824); +emit_32(1128228848); +emit_32(1103944902); +emit_32(1090125824); +emit_32(1128484897); +emit_32(1104198028); +emit_32(1090125824); +emit_32(1128740880); +emit_32(1103790342); +emit_32(1090125824); +emit_32(1128996864); +emit_32(1103102686); +emit_32(1090125824); +emit_32(1129252848); +emit_32(1103136555); +emit_32(1090125824); +emit_32(1129508897); +emit_32(1103360688); +emit_32(1090125824); +emit_32(1129764880); +emit_32(1103301339); +emit_32(1090125824); +emit_32(1130020864); +emit_32(1102581596); +emit_32(1090125824); +emit_32(1130276848); +emit_32(1101582723); +emit_32(1090125824); +emit_32(1130532897); +emit_32(1100502427); +emit_32(1090125824); +emit_32(1130788880); +emit_32(1099934623); +emit_32(1090125824); +emit_32(1131044864); +emit_32(1099180854); +emit_32(1090125824); +emit_32(1131300848); +emit_32(1098378012); +emit_32(1090125824); +emit_32(1131556897); +emit_32(1096908852); +emit_32(1090125824); +emit_32(1131812880); +emit_32(1096091278); +emit_32(1090125824); +emit_32(1132068864); +emit_32(1095719453); +emit_32(1090125824); +emit_32(1081737216); +emit_32(1112701298); +emit_32(1081737216); +emit_32(1090125824); +emit_32(1112503694); +emit_32(1081737216); +emit_32(1094418484); +emit_32(1112328084); +emit_32(1081737216); +emit_32(1098514432); +emit_32(1112069951); +emit_32(1081737216); +emit_32(1100759066); +emit_32(1112173655); +emit_32(1081737216); +emit_32(1102807040); +emit_32(1112198559); +emit_32(1081737216); +emit_32(1104855066); +emit_32(1112333694); +emit_32(1081737216); +emit_32(1106903040); +emit_32(1112388744); +emit_32(1081737216); +emit_32(1108123661); +emit_32(1112590726); +emit_32(1081737216); +emit_32(1109147648); +emit_32(1113057735); +emit_32(1081737216); +emit_32(1110171661); +emit_32(1113035296); +emit_32(1081737216); +emit_32(1111195648); +emit_32(1112886896); +emit_32(1081737216); +emit_32(1112219661); +emit_32(1112955971); +emit_32(1081737216); +emit_32(1113243648); +emit_32(1113474440); +emit_32(1081737216); +emit_32(1114267661); +emit_32(1113373252); +emit_32(1081737216); +emit_32(1115291648); +emit_32(1112981923); +emit_32(1081737216); +emit_32(1116000263); +emit_32(1112815462); +emit_32(1081737216); +emit_32(1116512256); +emit_32(1112451711); +emit_32(1081737216); +emit_32(1117024263); +emit_32(1112394144); +emit_32(1081737216); +emit_32(1117536256); +emit_32(1112528414); +emit_32(1081737216); +emit_32(1118048263); +emit_32(1112287950); +emit_32(1081737216); +emit_32(1118560256); +emit_32(1111949653); +emit_32(1081737216); +emit_32(1119072263); +emit_32(1111682685); +emit_32(1081737216); +emit_32(1119584256); +emit_32(1111194678); +emit_32(1081737216); +emit_32(1120096263); +emit_32(1111068639); +emit_32(1081737216); +emit_32(1120608322); +emit_32(1110815303); +emit_32(1081737216); +emit_32(1121120289); +emit_32(1110882674); +emit_32(1081737216); +emit_32(1121632256); +emit_32(1110789010); +emit_32(1081737216); +emit_32(1122144223); +emit_32(1110340062); +emit_32(1081737216); +emit_32(1122656322); +emit_32(1109951539); +emit_32(1081737216); +emit_32(1123168289); +emit_32(1109517848); +emit_32(1081737216); +emit_32(1123680256); +emit_32(1109219108); +emit_32(1081737216); +emit_32(1124132848); +emit_32(1108888571); +emit_32(1081737216); +emit_32(1124388897); +emit_32(1108548203); +emit_32(1081737216); +emit_32(1124644880); +emit_32(1108062057); +emit_32(1081737216); +emit_32(1124900864); +emit_32(1107391755); +emit_32(1081737216); +emit_32(1125156848); +emit_32(1107147201); +emit_32(1081737216); +emit_32(1125412897); +emit_32(1106562515); +emit_32(1081737216); +emit_32(1125668880); +emit_32(1107088323); +emit_32(1081737216); +emit_32(1125924864); +emit_32(1107466728); +emit_32(1081737216); +emit_32(1126180848); +emit_32(1107640477); +emit_32(1081737216); +emit_32(1126436897); +emit_32(1107446858); +emit_32(1081737216); +emit_32(1126692880); +emit_32(1107035003); +emit_32(1081737216); +emit_32(1126948864); +emit_32(1106606398); +emit_32(1081737216); +emit_32(1127204848); +emit_32(1106181305); +emit_32(1081737216); +emit_32(1127460897); +emit_32(1105541831); +emit_32(1081737216); +emit_32(1127716880); +emit_32(1104783501); +emit_32(1081737216); +emit_32(1127972864); +emit_32(1103855197); +emit_32(1081737216); +emit_32(1128228848); +emit_32(1103186310); +emit_32(1081737216); +emit_32(1128484897); +emit_32(1103087482); +emit_32(1081737216); +emit_32(1128740880); +emit_32(1102981471); +emit_32(1081737216); +emit_32(1128996864); +emit_32(1102264716); +emit_32(1081737216); +emit_32(1129252848); +emit_32(1102136581); +emit_32(1081737216); +emit_32(1129508897); +emit_32(1101851735); +emit_32(1081737216); +emit_32(1129764880); +emit_32(1101959109); +emit_32(1081737216); +emit_32(1130020864); +emit_32(1101538001); +emit_32(1081737216); +emit_32(1130276848); +emit_32(1100676386); +emit_32(1081737216); +emit_32(1130532897); +emit_32(1100067740); +emit_32(1081737216); +emit_32(1130788880); +emit_32(1099550582); +emit_32(1081737216); +emit_32(1131044864); +emit_32(1099061684); +emit_32(1081737216); +emit_32(1131300848); +emit_32(1097284243); +emit_32(1081737216); +emit_32(1131556897); +emit_32(1096432799); +emit_32(1081737216); +emit_32(1131812880); +emit_32(1096013998); +emit_32(1081737216); +emit_32(1132068864); +emit_32(1095458043); +emit_32(1081737216); +emit_start(Landscape05Vtx) +emit_32(3279552512); +emit_32(3212673672); +emit_32(0); +emit_32(3279552512); +emit_32(1041185636); +emit_32(1081737216); +emit_32(3279296528); +emit_32(1059833579); +emit_32(0); +emit_32(3279296528); +emit_32(1071476480); +emit_32(1081737216); +emit_32(3279040545); +emit_32(1072407784); +emit_32(0); +emit_32(3279040545); +emit_32(1076263523); +emit_32(1081737216); +emit_32(3278784496); +emit_32(1080759692); +emit_32(3022808678); +emit_32(3278784496); +emit_32(1082158660); +emit_32(1081737216); +emit_32(3278528512); +emit_32(1084161503); +emit_32(3026792956); +emit_32(3278528512); +emit_32(1084513929); +emit_32(1081737216); +emit_32(3278272528); +emit_32(1087503650); +emit_32(3029991200); +emit_32(3278272528); +emit_32(1087785717); +emit_32(1081737216); +emit_32(3278016545); +emit_32(1090834682); +emit_32(3032665494); +emit_32(3278016545); +emit_32(1090972056); +emit_32(1081737216); +emit_32(3277760496); +emit_32(1092557314); +emit_32(3035192119); +emit_32(3277760496); +emit_32(1092442569); +emit_32(1081737216); +emit_32(3277504512); +emit_32(1094292446); +emit_32(3037206586); +emit_32(3277504512); +emit_32(1094046974); +emit_32(1081737216); +emit_32(3277248528); +emit_32(1097139854); +emit_32(3039294743); +emit_32(3277248528); +emit_32(1097043280); +emit_32(1081737216); +emit_32(3276992545); +emit_32(1099197999); +emit_32(3041017018); +emit_32(3276992545); +emit_32(1098999818); +emit_32(1081737216); +emit_32(3276736496); +emit_32(1100402917); +emit_32(3042784259); +emit_32(3276736496); +emit_32(1100434742); +emit_32(1081737216); +emit_32(3276480512); +emit_32(1101809268); +emit_32(3044847030); +emit_32(3276480512); +emit_32(1101659007); +emit_32(1081737216); +emit_32(3276224528); +emit_32(1102438046); +emit_32(3045416976); +emit_32(3276224528); +emit_32(1102608545); +emit_32(1081737216); +emit_32(3275968545); +emit_32(1103348997); +emit_32(3046085013); +emit_32(3275968545); +emit_32(1103417836); +emit_32(1081737216); +emit_32(3275712496); +emit_32(1104211817); +emit_32(3046717804); +emit_32(3275712496); +emit_32(1104053168); +emit_32(1081737216); +emit_32(3275456512); +emit_32(1104674187); +emit_32(3047056805); +emit_32(3275456512); +emit_32(1104973450); +emit_32(1081737216); +emit_32(3275200528); +emit_32(1105401165); +emit_32(3047590024); +emit_32(3275200528); +emit_32(1105837477); +emit_32(1081737216); +emit_32(3274944545); +emit_32(1105747352); +emit_32(3047843880); +emit_32(3274944545); +emit_32(1106081743); +emit_32(1081737216); +emit_32(3274688496); +emit_32(1106143871); +emit_32(3048134678); +emit_32(3274688496); +emit_32(1106636492); +emit_32(1081737216); +emit_32(3274432512); +emit_32(1106329416); +emit_32(3048270754); +emit_32(3274432512); +emit_32(1107002917); +emit_32(1081737216); +emit_32(3274176528); +emit_32(1107393459); +emit_32(3049122304); +emit_32(3274176528); +emit_32(1107580184); +emit_32(1081737216); +emit_32(3273920545); +emit_32(1108074955); +emit_32(3050121892); +emit_32(3273920545); +emit_32(1107983729); +emit_32(1081737216); +emit_32(3273664496); +emit_32(1108448641); +emit_32(3050669976); +emit_32(3273664496); +emit_32(1108213550); +emit_32(1081737216); +emit_32(3273408512); +emit_32(1108684230); +emit_32(3051015487); +emit_32(3273408512); +emit_32(1108715137); +emit_32(1081737216); +emit_32(3273152528); +emit_32(1108934132); +emit_32(3051382020); +emit_32(3273152528); +emit_32(1108987871); +emit_32(1081737216); +emit_32(3272896545); +emit_32(1108952377); +emit_32(3051408760); +emit_32(3272896545); +emit_32(1109130582); +emit_32(1081737216); +emit_32(3272640496); +emit_32(1108910775); +emit_32(3051347803); +emit_32(3272640496); +emit_32(1109075454); +emit_32(1081737216); +emit_32(3272384512); +emit_32(1108499366); +emit_32(3050744391); +emit_32(3272384512); +emit_32(1108764813); +emit_32(1081737216); +emit_32(3272128528); +emit_32(1108270907); +emit_32(3050409260); +emit_32(3272128528); +emit_32(1108391939); +emit_32(1081737216); +emit_32(3271872545); +emit_32(1107755506); +emit_32(3049653324); +emit_32(3271872545); +emit_32(1108080224); +emit_32(1081737216); +emit_32(3271616496); +emit_32(1107633190); +emit_32(3049473972); +emit_32(3271616496); +emit_32(1107854728); +emit_32(1081737216); +emit_32(3271163904); +emit_32(1107663336); +emit_32(3049518128); +emit_32(3271163904); +emit_32(1107912740); +emit_32(1081737216); +emit_32(3270651937); +emit_32(1107588075); +emit_32(3049407737); +emit_32(3270651937); +emit_32(1107731730); +emit_32(1081737216); +emit_32(3270139970); +emit_32(1107502327); +emit_32(3049282041); +emit_32(3270139970); +emit_32(1107480989); +emit_32(1081737216); +emit_32(3269627871); +emit_32(1107559370); +emit_32(3049365692); +emit_32(3269627871); +emit_32(1107400013); +emit_32(1081737216); +emit_32(3269115904); +emit_32(1107429425); +emit_32(3049175080); +emit_32(3269115904); +emit_32(1106814855); +emit_32(1081737216); +emit_32(3268603937); +emit_32(1107211531); +emit_32(3048917619); +emit_32(3268603937); +emit_32(1106747641); +emit_32(1081737216); +emit_32(3268091970); +emit_32(1106869381); +emit_32(3048666666); +emit_32(3268091970); +emit_32(1106153570); +emit_32(1081737216); +emit_32(3267579911); +emit_32(1106076710); +emit_32(3048085420); +emit_32(3267579911); +emit_32(1105450553); +emit_32(1081737216); +emit_32(3267067904); +emit_32(1105107773); +emit_32(3047374784); +emit_32(3267067904); +emit_32(1105015289); +emit_32(1081737216); +emit_32(3266555911); +emit_32(1104100511); +emit_32(3046636088); +emit_32(3266555911); +emit_32(1103926185); +emit_32(1081737216); +emit_32(3266043904); +emit_32(1102799385); +emit_32(3045681976); +emit_32(3266043904); +emit_32(1103220965); +emit_32(1081737216); +emit_32(3265531911); +emit_32(1102770130); +emit_32(3045660513); +emit_32(3265531911); +emit_32(1102714556); +emit_32(1081737216); +emit_32(3265019904); +emit_32(1102608335); +emit_32(3045541854); +emit_32(3265019904); +emit_32(1102293972); +emit_32(1081737216); +emit_32(3264507911); +emit_32(1103061372); +emit_32(3045874083); +emit_32(3264507911); +emit_32(1102696206); +emit_32(1081737216); +emit_32(3263995904); +emit_32(1102915777); +emit_32(3045767298); +emit_32(3263995904); +emit_32(1102841119); +emit_32(1081737216); +emit_32(3263483911); +emit_32(1102723888); +emit_32(3045626560); +emit_32(3263483911); +emit_32(1102940104); +emit_32(1081737216); +emit_32(3262775296); +emit_32(1103408189); +emit_32(3046128466); +emit_32(3262775296); +emit_32(1103457681); +emit_32(1081737216); +emit_32(3261751309); +emit_32(1103998484); +emit_32(3046561321); +emit_32(3261751309); +emit_32(1103885553); +emit_32(1081737216); +emit_32(3260727296); +emit_32(1104668105); +emit_32(3047052407); +emit_32(3260727296); +emit_32(1104135953); +emit_32(1081737216); +emit_32(3259703309); +emit_32(1105127381); +emit_32(3047389210); +emit_32(3259703309); +emit_32(1104254180); +emit_32(1081737216); +emit_32(3258679296); +emit_32(1105216196); +emit_32(3047454301); +emit_32(3258679296); +emit_32(1104598218); +emit_32(1081737216); +emit_32(3257655309); +emit_32(1105244507); +emit_32(3047475059); +emit_32(3257655309); +emit_32(1105055869); +emit_32(1081737216); +emit_32(3256631296); +emit_32(1106325379); +emit_32(3048267763); +emit_32(3256631296); +emit_32(1105830661); +emit_32(1081737216); +emit_32(3255607309); +emit_32(1107402398); +emit_32(3049135410); +emit_32(3255607309); +emit_32(1107186156); +emit_32(1081737216); +emit_32(3254386688); +emit_32(1107944119); +emit_32(3049929961); +emit_32(3254386688); +emit_32(1107890222); +emit_32(1081737216); +emit_32(3252338714); +emit_32(1108676916); +emit_32(3051004756); +emit_32(3252338714); +emit_32(1108342578); +emit_32(1081737216); +emit_32(3250290688); +emit_32(1109077105); +emit_32(3051591719); +emit_32(3250290688); +emit_32(1108968106); +emit_32(1081737216); +emit_32(3248242714); +emit_32(1109498895); +emit_32(3052210436); +emit_32(3248242714); +emit_32(1109363314); +emit_32(1081737216); +emit_32(3245998080); +emit_32(1110132051); +emit_32(3053139040); +emit_32(3245998080); +emit_32(1110217982); +emit_32(1081737216); +emit_32(3241902132); +emit_32(1110709318); +emit_32(3053719532); +emit_32(3241902132); +emit_32(1110836747); +emit_32(1081737216); +emit_32(3237609472); +emit_32(1111158922); +emit_32(3054049253); +emit_32(3237609472); +emit_32(1111340011); +emit_32(1081737216); +emit_32(3229220864); +emit_32(1111589126); +emit_32(3054364725); +emit_32(3229220864); +emit_32(1111989472); +emit_32(1081737216); +emit_32(0); +emit_32(1111989053); +emit_32(3054658031); +emit_32(0); +emit_32(1112547577); +emit_32(1081737216); +emit_32(1081737216); +emit_32(1112116167); +emit_32(3054751226); +emit_32(1081737216); +emit_32(1112701298); +emit_32(1081737216); +emit_32(3279552512); +emit_32(3209799987); +emit_32(3229220864); +emit_32(3279296528); +emit_32(1059840776); +emit_32(3229220864); +emit_32(3279040545); +emit_32(1077240503); +emit_32(3229220864); +emit_32(3278784496); +emit_32(1082549401); +emit_32(3229220864); +emit_32(3278528512); +emit_32(1085468217); +emit_32(3229220864); +emit_32(3278272528); +emit_32(1088296919); +emit_32(3229220864); +emit_32(3278016545); +emit_32(1090881837); +emit_32(3229220864); +emit_32(3277760496); +emit_32(1092463268); +emit_32(3229220864); +emit_32(3277504512); +emit_32(1093558757); +emit_32(3229220864); +emit_32(3277248528); +emit_32(1096426612); +emit_32(3229220864); +emit_32(3276992545); +emit_32(1099175874); +emit_32(3229220864); +emit_32(3276736496); +emit_32(1099804757); +emit_32(3229220864); +emit_32(3276480512); +emit_32(1101394975); +emit_32(3229220864); +emit_32(3276224528); +emit_32(1102334185); +emit_32(3229220864); +emit_32(3275968545); +emit_32(1103311038); +emit_32(3229220864); +emit_32(3275712496); +emit_32(1104048921); +emit_32(3229220864); +emit_32(3275456512); +emit_32(1104659821); +emit_32(3229220864); +emit_32(3275200528); +emit_32(1105062632); +emit_32(3229220864); +emit_32(3274944545); +emit_32(1105651669); +emit_32(3229220864); +emit_32(3274688496); +emit_32(1106231322); +emit_32(3229220864); +emit_32(3274432512); +emit_32(1107336626); +emit_32(3229220864); +emit_32(3274176528); +emit_32(1107657989); +emit_32(3229220864); +emit_32(3273920545); +emit_32(1108184452); +emit_32(3229220864); +emit_32(3273664496); +emit_32(1108338672); +emit_32(3229220864); +emit_32(3273408512); +emit_32(1108483926); +emit_32(3229220864); +emit_32(3273152528); +emit_32(1108691229); +emit_32(3229220864); +emit_32(3272896545); +emit_32(1108557850); +emit_32(3229220864); +emit_32(3272640496); +emit_32(1108486573); +emit_32(3229220864); +emit_32(3272384512); +emit_32(1108265140); +emit_32(3229220864); +emit_32(3272128528); +emit_32(1108112887); +emit_32(3229220864); +emit_32(3271872545); +emit_32(1107872003); +emit_32(3229220864); +emit_32(3271616496); +emit_32(1107841411); +emit_32(3229220864); +emit_32(3271163904); +emit_32(1107883406); +emit_32(3229220864); +emit_32(3270651937); +emit_32(1107859944); +emit_32(3229220864); +emit_32(3270139970); +emit_32(1107767014); +emit_32(3229220864); +emit_32(3269627871); +emit_32(1107782795); +emit_32(3229220864); +emit_32(3269115904); +emit_32(1107629310); +emit_32(3229220864); +emit_32(3268603937); +emit_32(1107448404); +emit_32(3229220864); +emit_32(3268091970); +emit_32(1107249594); +emit_32(3229220864); +emit_32(3267579911); +emit_32(1106441929); +emit_32(3229220864); +emit_32(3267067904); +emit_32(1105756265); +emit_32(3229220864); +emit_32(3266555911); +emit_32(1104508197); +emit_32(3229220864); +emit_32(3266043904); +emit_32(1103537583); +emit_32(3229220864); +emit_32(3265531911); +emit_32(1103027556); +emit_32(3229220864); +emit_32(3265019904); +emit_32(1102775006); +emit_32(3229220864); +emit_32(3264507911); +emit_32(1103080037); +emit_32(3229220864); +emit_32(3263995904); +emit_32(1103170109); +emit_32(3229220864); +emit_32(3263483911); +emit_32(1103334002); +emit_32(3229220864); +emit_32(3262775296); +emit_32(1103932372); +emit_32(3229220864); +emit_32(3261751309); +emit_32(1104512234); +emit_32(3229220864); +emit_32(3260727296); +emit_32(1105151184); +emit_32(3229220864); +emit_32(3259703309); +emit_32(1105468116); +emit_32(3229220864); +emit_32(3258679296); +emit_32(1105860336); +emit_32(3229220864); +emit_32(3257655309); +emit_32(1105963568); +emit_32(3229220864); +emit_32(3256631296); +emit_32(1106718071); +emit_32(3229220864); +emit_32(3255607309); +emit_32(1107534414); +emit_32(3229220864); +emit_32(3254386688); +emit_32(1108061821); +emit_32(3229220864); +emit_32(3252338714); +emit_32(1108796323); +emit_32(3229220864); +emit_32(3250290688); +emit_32(1109110555); +emit_32(3229220864); +emit_32(3248242714); +emit_32(1109471606); +emit_32(3229220864); +emit_32(3245998080); +emit_32(1109857115); +emit_32(3229220864); +emit_32(3241902132); +emit_32(1110399726); +emit_32(3229220864); +emit_32(3237609472); +emit_32(1110641187); +emit_32(3229220864); +emit_32(3229220864); +emit_32(1111105208); +emit_32(3229220864); +emit_32(0); +emit_32(1111556044); +emit_32(3229220864); +emit_32(1081737216); +emit_32(1111714929); +emit_32(3229220864); +emit_32(3279552512); +emit_32(1054711998); +emit_32(3237609472); +emit_32(3279296528); +emit_32(1073162675); +emit_32(3237609472); +emit_32(3279040545); +emit_32(1079142997); +emit_32(3237609472); +emit_32(3278784496); +emit_32(1083244271); +emit_32(3237609472); +emit_32(3278528512); +emit_32(1085647335); +emit_32(3237609472); +emit_32(3278272528); +emit_32(1089136346); +emit_32(3237609472); +emit_32(3278016545); +emit_32(1091028155); +emit_32(3237609472); +emit_32(3277760496); +emit_32(1092749361); +emit_32(3237609472); +emit_32(3277504512); +emit_32(1094007338); +emit_32(3237609472); +emit_32(3277248528); +emit_32(1096172333); +emit_32(3237609472); +emit_32(3276992545); +emit_32(1098404017); +emit_32(3237609472); +emit_32(3276736496); +emit_32(1099924924); +emit_32(3237609472); +emit_32(3276480512); +emit_32(1101300708); +emit_32(3237609472); +emit_32(3276224528); +emit_32(1102514540); +emit_32(3237609472); +emit_32(3275968545); +emit_32(1102952530); +emit_32(3237609472); +emit_32(3275712496); +emit_32(1104219315); +emit_32(3237609472); +emit_32(3275456512); +emit_32(1105238635); +emit_32(3237609472); +emit_32(3275200528); +emit_32(1105786254); +emit_32(3237609472); +emit_32(3274944545); +emit_32(1106026116); +emit_32(3237609472); +emit_32(3274688496); +emit_32(1106387979); +emit_32(3237609472); +emit_32(3274432512); +emit_32(1107205816); +emit_32(3237609472); +emit_32(3274176528); +emit_32(1107688659); +emit_32(3237609472); +emit_32(3273920545); +emit_32(1107937067); +emit_32(3237609472); +emit_32(3273664496); +emit_32(1108184426); +emit_32(3237609472); +emit_32(3273408512); +emit_32(1108351831); +emit_32(3237609472); +emit_32(3273152528); +emit_32(1108376840); +emit_32(3237609472); +emit_32(3272896545); +emit_32(1108546866); +emit_32(3237609472); +emit_32(3272640496); +emit_32(1108425232); +emit_32(3237609472); +emit_32(3272384512); +emit_32(1108404994); +emit_32(3237609472); +emit_32(3272128528); +emit_32(1108262466); +emit_32(3237609472); +emit_32(3271872545); +emit_32(1107983912); +emit_32(3237609472); +emit_32(3271616496); +emit_32(1107864453); +emit_32(3237609472); +emit_32(3271163904); +emit_32(1107866576); +emit_32(3237609472); +emit_32(3270651937); +emit_32(1107727562); +emit_32(3237609472); +emit_32(3270139970); +emit_32(1107886499); +emit_32(3237609472); +emit_32(3269627871); +emit_32(1107880313); +emit_32(3237609472); +emit_32(3269115904); +emit_32(1107886866); +emit_32(3237609472); +emit_32(3268603937); +emit_32(1107605533); +emit_32(3237609472); +emit_32(3268091970); +emit_32(1107358646); +emit_32(3237609472); +emit_32(3267579911); +emit_32(1106791734); +emit_32(3237609472); +emit_32(3267067904); +emit_32(1106079646); +emit_32(3237609472); +emit_32(3266555911); +emit_32(1104985928); +emit_32(3237609472); +emit_32(3266043904); +emit_32(1104015576); +emit_32(3237609472); +emit_32(3265531911); +emit_32(1103311720); +emit_32(3237609472); +emit_32(3265019904); +emit_32(1103316648); +emit_32(3237609472); +emit_32(3264507911); +emit_32(1103704569); +emit_32(3237609472); +emit_32(3263995904); +emit_32(1103636359); +emit_32(3237609472); +emit_32(3263483911); +emit_32(1103830817); +emit_32(3237609472); +emit_32(3262775296); +emit_32(1104077757); +emit_32(3237609472); +emit_32(3261751309); +emit_32(1104578819); +emit_32(3237609472); +emit_32(3260727296); +emit_32(1105235699); +emit_32(3237609472); +emit_32(3259703309); +emit_32(1105711858); +emit_32(3237609472); +emit_32(3258679296); +emit_32(1105779124); +emit_32(3237609472); +emit_32(3257655309); +emit_32(1106565975); +emit_32(3237609472); +emit_32(3256631296); +emit_32(1107139756); +emit_32(3237609472); +emit_32(3255607309); +emit_32(1107456478); +emit_32(3237609472); +emit_32(3254386688); +emit_32(1107977988); +emit_32(3237609472); +emit_32(3252338714); +emit_32(1108423606); +emit_32(3237609472); +emit_32(3250290688); +emit_32(1108993822); +emit_32(3237609472); +emit_32(3248242714); +emit_32(1109315132); +emit_32(3237609472); +emit_32(3245998080); +emit_32(1109596884); +emit_32(3237609472); +emit_32(3241902132); +emit_32(1110086989); +emit_32(3237609472); +emit_32(3237609472); +emit_32(1110712176); +emit_32(3237609472); +emit_32(3229220864); +emit_32(1111303415); +emit_32(3237609472); +emit_32(0); +emit_32(1111637125); +emit_32(3237609472); +emit_32(1081737216); +emit_32(1111679959); +emit_32(3237609472); +emit_32(3279552512); +emit_32(1058110391); +emit_32(3241902132); +emit_32(3279296528); +emit_32(1072323898); +emit_32(3241902132); +emit_32(3279040545); +emit_32(1079279857); +emit_32(3241902132); +emit_32(3278784496); +emit_32(1082742465); +emit_32(3241902132); +emit_32(3278528512); +emit_32(1086410992); +emit_32(3241902132); +emit_32(3278272528); +emit_32(1088461147); +emit_32(3241902132); +emit_32(3278016545); +emit_32(1091533338); +emit_32(3241902132); +emit_32(3277760496); +emit_32(1093009303); +emit_32(3241902132); +emit_32(3277504512); +emit_32(1094260359); +emit_32(3241902132); +emit_32(3277248528); +emit_32(1096715285); +emit_32(3241902132); +emit_32(3276992545); +emit_32(1098545575); +emit_32(3241902132); +emit_32(3276736496); +emit_32(1100069260); +emit_32(3241902132); +emit_32(3276480512); +emit_32(1101010882); +emit_32(3241902132); +emit_32(3276224528); +emit_32(1101814458); +emit_32(3241902132); +emit_32(3275968545); +emit_32(1102816372); +emit_32(3241902132); +emit_32(3275712496); +emit_32(1104296175); +emit_32(3241902132); +emit_32(3275456512); +emit_32(1105227573); +emit_32(3241902132); +emit_32(3275200528); +emit_32(1105862695); +emit_32(3241902132); +emit_32(3274944545); +emit_32(1106061767); +emit_32(3241902132); +emit_32(3274688496); +emit_32(1106614157); +emit_32(3241902132); +emit_32(3274432512); +emit_32(1106679117); +emit_32(3241902132); +emit_32(3274176528); +emit_32(1107555097); +emit_32(3241902132); +emit_32(3273920545); +emit_32(1107710706); +emit_32(3241902132); +emit_32(3273664496); +emit_32(1107987399); +emit_32(3241902132); +emit_32(3273408512); +emit_32(1108243985); +emit_32(3241902132); +emit_32(3273152528); +emit_32(1108410132); +emit_32(3241902132); +emit_32(3272896545); +emit_32(1108423370); +emit_32(3241902132); +emit_32(3272640496); +emit_32(1108487858); +emit_32(3241902132); +emit_32(3272384512); +emit_32(1108444525); +emit_32(3241902132); +emit_32(3272128528); +emit_32(1108145681); +emit_32(3241902132); +emit_32(3271872545); +emit_32(1107836142); +emit_32(3241902132); +emit_32(3271616496); +emit_32(1107856825); +emit_32(3241902132); +emit_32(3271163904); +emit_32(1107713065); +emit_32(3241902132); +emit_32(3270651937); +emit_32(1107761431); +emit_32(3241902132); +emit_32(3270139970); +emit_32(1107749346); +emit_32(3241902132); +emit_32(3269627871); +emit_32(1107742242); +emit_32(3241902132); +emit_32(3269115904); +emit_32(1107724468); +emit_32(3241902132); +emit_32(3268603937); +emit_32(1107622651); +emit_32(3241902132); +emit_32(3268091970); +emit_32(1107524085); +emit_32(3241902132); +emit_32(3267579911); +emit_32(1106842380); +emit_32(3241902132); +emit_32(3267067904); +emit_32(1106029733); +emit_32(3241902132); +emit_32(3266555911); +emit_32(1104983674); +emit_32(3241902132); +emit_32(3266043904); +emit_32(1104019456); +emit_32(3241902132); +emit_32(3265531911); +emit_32(1103853571); +emit_32(3241902132); +emit_32(3265019904); +emit_32(1103951666); +emit_32(3241902132); +emit_32(3264507911); +emit_32(1103711542); +emit_32(3241902132); +emit_32(3263995904); +emit_32(1103910404); +emit_32(3241902132); +emit_32(3263483911); +emit_32(1103908517); +emit_32(3241902132); +emit_32(3262775296); +emit_32(1104110577); +emit_32(3241902132); +emit_32(3261751309); +emit_32(1104188172); +emit_32(3241902132); +emit_32(3260727296); +emit_32(1104905241); +emit_32(3241902132); +emit_32(3259703309); +emit_32(1105620212); +emit_32(3241902132); +emit_32(3258679296); +emit_32(1106230221); +emit_32(3241902132); +emit_32(3257655309); +emit_32(1107170322); +emit_32(3241902132); +emit_32(3256631296); +emit_32(1107365357); +emit_32(3241902132); +emit_32(3255607309); +emit_32(1107446569); +emit_32(3241902132); +emit_32(3254386688); +emit_32(1107700744); +emit_32(3241902132); +emit_32(3252338714); +emit_32(1108112651); +emit_32(3241902132); +emit_32(3250290688); +emit_32(1108689473); +emit_32(3241902132); +emit_32(3248242714); +emit_32(1109194519); +emit_32(3241902132); +emit_32(3245998080); +emit_32(1109874285); +emit_32(3241902132); +emit_32(3241902132); +emit_32(1110441774); +emit_32(3241902132); +emit_32(3237609472); +emit_32(1111191218); +emit_32(3241902132); +emit_32(3229220864); +emit_32(1111647243); +emit_32(3241902132); +emit_32(0); +emit_32(1111674821); +emit_32(3241902132); +emit_32(1081737216); +emit_32(1111917802); +emit_32(3241902132); +emit_32(3279552512); +emit_32(1069567233); +emit_32(3245998080); +emit_32(3279296528); +emit_32(1071989863); +emit_32(3245998080); +emit_32(3279040545); +emit_32(1075944798); +emit_32(3245998080); +emit_32(3278784496); +emit_32(1082325006); +emit_32(3245998080); +emit_32(3278528512); +emit_32(1086766564); +emit_32(3245998080); +emit_32(3278272528); +emit_32(1089466668); +emit_32(3245998080); +emit_32(3278016545); +emit_32(1091111989); +emit_32(3245998080); +emit_32(3277760496); +emit_32(1092605224); +emit_32(3245998080); +emit_32(3277504512); +emit_32(1095055494); +emit_32(3245998080); +emit_32(3277248528); +emit_32(1097329541); +emit_32(3245998080); +emit_32(3276992545); +emit_32(1098231421); +emit_32(3245998080); +emit_32(3276736496); +emit_32(1099798361); +emit_32(3245998080); +emit_32(3276480512); +emit_32(1100629777); +emit_32(3245998080); +emit_32(3276224528); +emit_32(1101582932); +emit_32(3245998080); +emit_32(3275968545); +emit_32(1102756341); +emit_32(3245998080); +emit_32(3275712496); +emit_32(1103822271); +emit_32(3245998080); +emit_32(3275456512); +emit_32(1104867754); +emit_32(3245998080); +emit_32(3275200528); +emit_32(1105394716); +emit_32(3245998080); +emit_32(3274944545); +emit_32(1106013428); +emit_32(3245998080); +emit_32(3274688496); +emit_32(1106248257); +emit_32(3245998080); +emit_32(3274432512); +emit_32(1106783293); +emit_32(3245998080); +emit_32(3274176528); +emit_32(1107441641); +emit_32(3245998080); +emit_32(3273920545); +emit_32(1107472338); +emit_32(3245998080); +emit_32(3273664496); +emit_32(1107780305); +emit_32(3245998080); +emit_32(3273408512); +emit_32(1108116033); +emit_32(3245998080); +emit_32(3273152528); +emit_32(1108228755); +emit_32(3245998080); +emit_32(3272896545); +emit_32(1108513391); +emit_32(3245998080); +emit_32(3272640496); +emit_32(1108457108); +emit_32(3245998080); +emit_32(3272384512); +emit_32(1108243173); +emit_32(3245998080); +emit_32(3272128528); +emit_32(1108176536); +emit_32(3245998080); +emit_32(3271872545); +emit_32(1107871348); +emit_32(3245998080); +emit_32(3271616496); +emit_32(1107923121); +emit_32(3245998080); +emit_32(3271163904); +emit_32(1107614682); +emit_32(3245998080); +emit_32(3270651937); +emit_32(1107505709); +emit_32(3245998080); +emit_32(3270139970); +emit_32(1107594707); +emit_32(3245998080); +emit_32(3269627871); +emit_32(1107597381); +emit_32(3245998080); +emit_32(3269115904); +emit_32(1107730471); +emit_32(3245998080); +emit_32(3268603937); +emit_32(1107619086); +emit_32(3245998080); +emit_32(3268091970); +emit_32(1107455273); +emit_32(3245998080); +emit_32(3267579911); +emit_32(1106610802); +emit_32(3245998080); +emit_32(3267067904); +emit_32(1105479074); +emit_32(3245998080); +emit_32(3266555911); +emit_32(1105028081); +emit_32(3245998080); +emit_32(3266043904); +emit_32(1104895856); +emit_32(3245998080); +emit_32(3265531911); +emit_32(1104167515); +emit_32(3245998080); +emit_32(3265019904); +emit_32(1104032563); +emit_32(3245998080); +emit_32(3264507911); +emit_32(1104102818); +emit_32(3245998080); +emit_32(3263995904); +emit_32(1103636621); +emit_32(3245998080); +emit_32(3263483911); +emit_32(1104117812); +emit_32(3245998080); +emit_32(3262775296); +emit_32(1104170556); +emit_32(3245998080); +emit_32(3261751309); +emit_32(1104075031); +emit_32(3245998080); +emit_32(3260727296); +emit_32(1104866076); +emit_32(3245998080); +emit_32(3259703309); +emit_32(1105674056); +emit_32(3245998080); +emit_32(3258679296); +emit_32(1106593763); +emit_32(3245998080); +emit_32(3257655309); +emit_32(1107479652); +emit_32(3245998080); +emit_32(3256631296); +emit_32(1107477371); +emit_32(3245998080); +emit_32(3255607309); +emit_32(1107602886); +emit_32(3245998080); +emit_32(3254386688); +emit_32(1108002655); +emit_32(3245998080); +emit_32(3252338714); +emit_32(1108265717); +emit_32(3245998080); +emit_32(3250290688); +emit_32(1108946348); +emit_32(3245998080); +emit_32(3248242714); +emit_32(1109570748); +emit_32(3245998080); +emit_32(3245998080); +emit_32(1110334348); +emit_32(3245998080); +emit_32(3241902132); +emit_32(1111046776); +emit_32(3245998080); +emit_32(3237609472); +emit_32(1111662998); +emit_32(3245998080); +emit_32(3229220864); +emit_32(1111752783); +emit_32(3245998080); +emit_32(0); +emit_32(1112149144); +emit_32(3245998080); +emit_32(1081737216); +emit_32(1112196121); +emit_32(3245998080); +emit_32(3279552512); +emit_32(1069069537); +emit_32(3248242714); +emit_32(3279296528); +emit_32(1070813613); +emit_32(3248242714); +emit_32(3279040545); +emit_32(1077694242); +emit_32(3248242714); +emit_32(3278784496); +emit_32(1083641745); +emit_32(3248242714); +emit_32(3278528512); +emit_32(1087538169); +emit_32(3248242714); +emit_32(3278272528); +emit_32(1089089810); +emit_32(3248242714); +emit_32(3278016545); +emit_32(1090321216); +emit_32(3248242714); +emit_32(3277760496); +emit_32(1092452761); +emit_32(3248242714); +emit_32(3277504512); +emit_32(1094878390); +emit_32(3248242714); +emit_32(3277248528); +emit_32(1096058143); +emit_32(3248242714); +emit_32(3276992545); +emit_32(1098098567); +emit_32(3248242714); +emit_32(3276736496); +emit_32(1099576902); +emit_32(3248242714); +emit_32(3276480512); +emit_32(1100562563); +emit_32(3248242714); +emit_32(3276224528); +emit_32(1101167224); +emit_32(3248242714); +emit_32(3275968545); +emit_32(1102019088); +emit_32(3248242714); +emit_32(3275712496); +emit_32(1103025878); +emit_32(3248242714); +emit_32(3275456512); +emit_32(1104220258); +emit_32(3248242714); +emit_32(3275200528); +emit_32(1104981944); +emit_32(3248242714); +emit_32(3274944545); +emit_32(1105491132); +emit_32(3248242714); +emit_32(3274688496); +emit_32(1105710495); +emit_32(3248242714); +emit_32(3274432512); +emit_32(1106232423); +emit_32(3248242714); +emit_32(3274176528); +emit_32(1106909961); +emit_32(3248242714); +emit_32(3273920545); +emit_32(1107031858); +emit_32(3248242714); +emit_32(3273664496); +emit_32(1107735426); +emit_32(3248242714); +emit_32(3273408512); +emit_32(1108117868); +emit_32(3248242714); +emit_32(3273152528); +emit_32(1108098862); +emit_32(3248242714); +emit_32(3272896545); +emit_32(1108068716); +emit_32(3248242714); +emit_32(3272640496); +emit_32(1108110003); +emit_32(3248242714); +emit_32(3272384512); +emit_32(1108104761); +emit_32(3248242714); +emit_32(3272128528); +emit_32(1108024125); +emit_32(3248242714); +emit_32(3271872545); +emit_32(1107776111); +emit_32(3248242714); +emit_32(3271616496); +emit_32(1107637384); +emit_32(3248242714); +emit_32(3271163904); +emit_32(1107446360); +emit_32(3248242714); +emit_32(3270651937); +emit_32(1107041400); +emit_32(3248242714); +emit_32(3270139970); +emit_32(1107011882); +emit_32(3248242714); +emit_32(3269627871); +emit_32(1107115167); +emit_32(3248242714); +emit_32(3269115904); +emit_32(1107418494); +emit_32(3248242714); +emit_32(3268603937); +emit_32(1107457422); +emit_32(3248242714); +emit_32(3268091970); +emit_32(1106904613); +emit_32(3248242714); +emit_32(3267579911); +emit_32(1106031411); +emit_32(3248242714); +emit_32(3267067904); +emit_32(1105454223); +emit_32(3248242714); +emit_32(3266555911); +emit_32(1105778967); +emit_32(3248242714); +emit_32(3266043904); +emit_32(1105570929); +emit_32(3248242714); +emit_32(3265531911); +emit_32(1104914258); +emit_32(3248242714); +emit_32(3265019904); +emit_32(1104424468); +emit_32(3248242714); +emit_32(3264507911); +emit_32(1104545527); +emit_32(3248242714); +emit_32(3263995904); +emit_32(1104296280); +emit_32(3248242714); +emit_32(3263483911); +emit_32(1103990568); +emit_32(3248242714); +emit_32(3262775296); +emit_32(1104013427); +emit_32(3248242714); +emit_32(3261751309); +emit_32(1104087142); +emit_32(3248242714); +emit_32(3260727296); +emit_32(1104895017); +emit_32(3248242714); +emit_32(3259703309); +emit_32(1105764129); +emit_32(3248242714); +emit_32(3258679296); +emit_32(1106780357); +emit_32(3248242714); +emit_32(3257655309); +emit_32(1107436005); +emit_32(3248242714); +emit_32(3256631296); +emit_32(1107614237); +emit_32(3248242714); +emit_32(3255607309); +emit_32(1107805785); +emit_32(3248242714); +emit_32(3254386688); +emit_32(1108259294); +emit_32(3248242714); +emit_32(3252338714); +emit_32(1108838738); +emit_32(3248242714); +emit_32(3250290688); +emit_32(1109532056); +emit_32(3248242714); +emit_32(3248242714); +emit_32(1110357731); +emit_32(3248242714); +emit_32(3245998080); +emit_32(1111305617); +emit_32(3248242714); +emit_32(3241902132); +emit_32(1111938354); +emit_32(3248242714); +emit_32(3237609472); +emit_32(1112310678); +emit_32(3248242714); +emit_32(3229220864); +emit_32(1112422010); +emit_32(3248242714); +emit_32(0); +emit_32(1112626745); +emit_32(3248242714); +emit_32(1081737216); +emit_32(1112566084); +emit_32(3248242714); +emit_32(3279552512); +emit_32(1065800916); +emit_32(3250290688); +emit_32(3279296528); +emit_32(1067728450); +emit_32(3250290688); +emit_32(3279040545); +emit_32(1079534242); +emit_32(3250290688); +emit_32(3278784496); +emit_32(1083207466); +emit_32(3250290688); +emit_32(3278528512); +emit_32(1085554830); +emit_32(3250290688); +emit_32(3278272528); +emit_32(1087362784); +emit_32(3250290688); +emit_32(3278016545); +emit_32(1089916067); +emit_32(3250290688); +emit_32(3277760496); +emit_32(1091396866); +emit_32(3250290688); +emit_32(3277504512); +emit_32(1093035832); +emit_32(3250290688); +emit_32(3277248528); +emit_32(1094508767); +emit_32(3250290688); +emit_32(3276992545); +emit_32(1096595328); +emit_32(3250290688); +emit_32(3276736496); +emit_32(1099173252); +emit_32(3250290688); +emit_32(3276480512); +emit_32(1100269748); +emit_32(3250290688); +emit_32(3276224528); +emit_32(1101165704); +emit_32(3250290688); +emit_32(3275968545); +emit_32(1101889169); +emit_32(3250290688); +emit_32(3275712496); +emit_32(1102356467); +emit_32(3250290688); +emit_32(3275456512); +emit_32(1103641549); +emit_32(3250290688); +emit_32(3275200528); +emit_32(1104432910); +emit_32(3250290688); +emit_32(3274944545); +emit_32(1104777157); +emit_32(3250290688); +emit_32(3274688496); +emit_32(1105410025); +emit_32(3250290688); +emit_32(3274432512); +emit_32(1105737233); +emit_32(3250290688); +emit_32(3274176528); +emit_32(1106211085); +emit_32(3250290688); +emit_32(3273920545); +emit_32(1107190979); +emit_32(3250290688); +emit_32(3273664496); +emit_32(1107686903); +emit_32(3250290688); +emit_32(3273408512); +emit_32(1107933449); +emit_32(3250290688); +emit_32(3273152528); +emit_32(1107858896); +emit_32(3250290688); +emit_32(3272896545); +emit_32(1107712567); +emit_32(3250290688); +emit_32(3272640496); +emit_32(1107834044); +emit_32(3250290688); +emit_32(3272384512); +emit_32(1107745256); +emit_32(3250290688); +emit_32(3272128528); +emit_32(1107612821); +emit_32(3250290688); +emit_32(3271872545); +emit_32(1107307240); +emit_32(3250290688); +emit_32(3271616496); +emit_32(1106953581); +emit_32(3250290688); +emit_32(3271163904); +emit_32(1106958195); +emit_32(3250290688); +emit_32(3270651937); +emit_32(1106599635); +emit_32(3250290688); +emit_32(3270139970); +emit_32(1106321238); +emit_32(3250290688); +emit_32(3269627871); +emit_32(1106339588); +emit_32(3250290688); +emit_32(3269115904); +emit_32(1106571795); +emit_32(3250290688); +emit_32(3268603937); +emit_32(1106917982); +emit_32(3250290688); +emit_32(3268091970); +emit_32(1106501383); +emit_32(3250290688); +emit_32(3267579911); +emit_32(1105718516); +emit_32(3250290688); +emit_32(3267067904); +emit_32(1105903065); +emit_32(3250290688); +emit_32(3266555911); +emit_32(1106013795); +emit_32(3250290688); +emit_32(3266043904); +emit_32(1105949517); +emit_32(3250290688); +emit_32(3265531911); +emit_32(1105206863); +emit_32(3250290688); +emit_32(3265019904); +emit_32(1104861934); +emit_32(3250290688); +emit_32(3264507911); +emit_32(1104599790); +emit_32(3250290688); +emit_32(3263995904); +emit_32(1103950932); +emit_32(3250290688); +emit_32(3263483911); +emit_32(1104055527); +emit_32(3250290688); +emit_32(3262775296); +emit_32(1103866364); +emit_32(3250290688); +emit_32(3261751309); +emit_32(1104419383); +emit_32(3250290688); +emit_32(3260727296); +emit_32(1104811026); +emit_32(3250290688); +emit_32(3259703309); +emit_32(1105456634); +emit_32(3250290688); +emit_32(3258679296); +emit_32(1106791681); +emit_32(3250290688); +emit_32(3257655309); +emit_32(1107583068); +emit_32(3250290688); +emit_32(3256631296); +emit_32(1107949860); +emit_32(3250290688); +emit_32(3255607309); +emit_32(1108658278); +emit_32(3250290688); +emit_32(3254386688); +emit_32(1109252165); +emit_32(3250290688); +emit_32(3252338714); +emit_32(1109776086); +emit_32(3250290688); +emit_32(3250290688); +emit_32(1110334321); +emit_32(3250290688); +emit_32(3248242714); +emit_32(1111177403); +emit_32(3250290688); +emit_32(3245998080); +emit_32(1111862202); +emit_32(3250290688); +emit_32(3241902132); +emit_32(1112485580); +emit_32(3250290688); +emit_32(3237609472); +emit_32(1112835516); +emit_32(3250290688); +emit_32(3229220864); +emit_32(1112928997); +emit_32(3250290688); +emit_32(0); +emit_32(1112967689); +emit_32(3250290688); +emit_32(1081737216); +emit_32(1113150456); +emit_32(3250290688); +emit_32(3279552512); +emit_32(1065811150); +emit_32(3252338714); +emit_32(3279296528); +emit_32(1074401378); +emit_32(3252338714); +emit_32(3279040545); +emit_32(1078638548); +emit_32(3252338714); +emit_32(3278784496); +emit_32(1082498734); +emit_32(3252338714); +emit_32(3278528512); +emit_32(1084586134); +emit_32(3252338714); +emit_32(3278272528); +emit_32(1087624907); +emit_32(3252338714); +emit_32(3278016545); +emit_32(1088961422); +emit_32(3252338714); +emit_32(3277760496); +emit_32(1091843412); +emit_32(3252338714); +emit_32(3277504512); +emit_32(1093413739); +emit_32(3252338714); +emit_32(3277248528); +emit_32(1094395206); +emit_32(3252338714); +emit_32(3276992545); +emit_32(1095806484); +emit_32(3252338714); +emit_32(3276736496); +emit_32(1097929536); +emit_32(3252338714); +emit_32(3276480512); +emit_32(1099744988); +emit_32(3252338714); +emit_32(3276224528); +emit_32(1100647340); +emit_32(3252338714); +emit_32(3275968545); +emit_32(1101240992); +emit_32(3252338714); +emit_32(3275712496); +emit_32(1101372693); +emit_32(3252338714); +emit_32(3275456512); +emit_32(1102475638); +emit_32(3252338714); +emit_32(3275200528); +emit_32(1103490240); +emit_32(3252338714); +emit_32(3274944545); +emit_32(1104043416); +emit_32(3252338714); +emit_32(3274688496); +emit_32(1105440696); +emit_32(3252338714); +emit_32(3274432512); +emit_32(1105987161); +emit_32(3252338714); +emit_32(3274176528); +emit_32(1106185395); +emit_32(3252338714); +emit_32(3273920545); +emit_32(1107031700); +emit_32(3252338714); +emit_32(3273664496); +emit_32(1107454932); +emit_32(3252338714); +emit_32(3273408512); +emit_32(1107539368); +emit_32(3252338714); +emit_32(3273152528); +emit_32(1107466152); +emit_32(3252338714); +emit_32(3272896545); +emit_32(1107413067); +emit_32(3252338714); +emit_32(3272640496); +emit_32(1107297960); +emit_32(3252338714); +emit_32(3272384512); +emit_32(1107173310); +emit_32(3252338714); +emit_32(3272128528); +emit_32(1107130371); +emit_32(3252338714); +emit_32(3271872545); +emit_32(1106771653); +emit_32(3252338714); +emit_32(3271616496); +emit_32(1106460803); +emit_32(3252338714); +emit_32(3271163904); +emit_32(1106115455); +emit_32(3252338714); +emit_32(3270651937); +emit_32(1105926344); +emit_32(3252338714); +emit_32(3270139970); +emit_32(1105546602); +emit_32(3252338714); +emit_32(3269627871); +emit_32(1105660477); +emit_32(3252338714); +emit_32(3269115904); +emit_32(1105920367); +emit_32(3252338714); +emit_32(3268603937); +emit_32(1106109897); +emit_32(3252338714); +emit_32(3268091970); +emit_32(1105672798); +emit_32(3252338714); +emit_32(3267579911); +emit_32(1105767537); +emit_32(3252338714); +emit_32(3267067904); +emit_32(1105707139); +emit_32(3252338714); +emit_32(3266555911); +emit_32(1105871241); +emit_32(3252338714); +emit_32(3266043904); +emit_32(1105955599); +emit_32(3252338714); +emit_32(3265531911); +emit_32(1105848435); +emit_32(3252338714); +emit_32(3265019904); +emit_32(1105348264); +emit_32(3252338714); +emit_32(3264507911); +emit_32(1104644040); +emit_32(3252338714); +emit_32(3263995904); +emit_32(1104354371); +emit_32(3252338714); +emit_32(3263483911); +emit_32(1104366902); +emit_32(3252338714); +emit_32(3262775296); +emit_32(1104900103); +emit_32(3252338714); +emit_32(3261751309); +emit_32(1105214885); +emit_32(3252338714); +emit_32(3260727296); +emit_32(1105392147); +emit_32(3252338714); +emit_32(3259703309); +emit_32(1106490111); +emit_32(3252338714); +emit_32(3258679296); +emit_32(1107465837); +emit_32(3252338714); +emit_32(3257655309); +emit_32(1108021897); +emit_32(3252338714); +emit_32(3256631296); +emit_32(1108703366); +emit_32(3252338714); +emit_32(3255607309); +emit_32(1109418128); +emit_32(3252338714); +emit_32(3254386688); +emit_32(1110033669); +emit_32(3252338714); +emit_32(3252338714); +emit_32(1110598065); +emit_32(3252338714); +emit_32(3250290688); +emit_32(1111530878); +emit_32(3252338714); +emit_32(3248242714); +emit_32(1112167127); +emit_32(3252338714); +emit_32(3245998080); +emit_32(1112747776); +emit_32(3252338714); +emit_32(3241902132); +emit_32(1113057631); +emit_32(3252338714); +emit_32(3237609472); +emit_32(1113395220); +emit_32(3252338714); +emit_32(3229220864); +emit_32(1113520262); +emit_32(3252338714); +emit_32(0); +emit_32(1113746230); +emit_32(3252338714); +emit_32(1081737216); +emit_32(1113988085); +emit_32(3252338714); +emit_32(3279552512); +emit_32(1073007234); +emit_32(3254386688); +emit_32(3279296528); +emit_32(1071855058); +emit_32(3254386688); +emit_32(3279040545); +emit_32(1077504995); +emit_32(3254386688); +emit_32(3278784496); +emit_32(1083853809); +emit_32(3254386688); +emit_32(3278528512); +emit_32(1085433090); +emit_32(3254386688); +emit_32(3278272528); +emit_32(1086653926); +emit_32(3254386688); +emit_32(3278016545); +emit_32(1089328256); +emit_32(3254386688); +emit_32(3277760496); +emit_32(1091680359); +emit_32(3254386688); +emit_32(3277504512); +emit_32(1093386371); +emit_32(3254386688); +emit_32(3277248528); +emit_32(1094430019); +emit_32(3254386688); +emit_32(3276992545); +emit_32(1095762759); +emit_32(3254386688); +emit_32(3276736496); +emit_32(1097278685); +emit_32(3254386688); +emit_32(3276480512); +emit_32(1099307942); +emit_32(3254386688); +emit_32(3276224528); +emit_32(1100328206); +emit_32(3254386688); +emit_32(3275968545); +emit_32(1100510396); +emit_32(3254386688); +emit_32(3275712496); +emit_32(1100754190); +emit_32(3254386688); +emit_32(3275456512); +emit_32(1101542300); +emit_32(3254386688); +emit_32(3275200528); +emit_32(1102303461); +emit_32(3254386688); +emit_32(3274944545); +emit_32(1103597719); +emit_32(3254386688); +emit_32(3274688496); +emit_32(1104967316); +emit_32(3254386688); +emit_32(3274432512); +emit_32(1105690205); +emit_32(3254386688); +emit_32(3274176528); +emit_32(1106034714); +emit_32(3254386688); +emit_32(3273920545); +emit_32(1106220994); +emit_32(3254386688); +emit_32(3273664496); +emit_32(1106826651); +emit_32(3254386688); +emit_32(3273408512); +emit_32(1107242779); +emit_32(3254386688); +emit_32(3273152528); +emit_32(1107302810); +emit_32(3254386688); +emit_32(3272896545); +emit_32(1107370915); +emit_32(3254386688); +emit_32(3272640496); +emit_32(1107004385); +emit_32(3254386688); +emit_32(3272384512); +emit_32(1106217429); +emit_32(3254386688); +emit_32(3272128528); +emit_32(1106380587); +emit_32(3254386688); +emit_32(3271872545); +emit_32(1106492418); +emit_32(3254386688); +emit_32(3271616496); +emit_32(1106313793); +emit_32(3254386688); +emit_32(3271163904); +emit_32(1105860336); +emit_32(3254386688); +emit_32(3270651937); +emit_32(1104962965); +emit_32(3254386688); +emit_32(3270139970); +emit_32(1104709367); +emit_32(3254386688); +emit_32(3269627871); +emit_32(1104850924); +emit_32(3254386688); +emit_32(3269115904); +emit_32(1105116162); +emit_32(3254386688); +emit_32(3268603937); +emit_32(1105713640); +emit_32(3254386688); +emit_32(3268091970); +emit_32(1105431311); +emit_32(3254386688); +emit_32(3267579911); +emit_32(1105504921); +emit_32(3254386688); +emit_32(3267067904); +emit_32(1105722658); +emit_32(3254386688); +emit_32(3266555911); +emit_32(1106419279); +emit_32(3254386688); +emit_32(3266043904); +emit_32(1106556905); +emit_32(3254386688); +emit_32(3265531911); +emit_32(1106183088); +emit_32(3254386688); +emit_32(3265019904); +emit_32(1105580681); +emit_32(3254386688); +emit_32(3264507911); +emit_32(1105335366); +emit_32(3254386688); +emit_32(3263995904); +emit_32(1104986348); +emit_32(3254386688); +emit_32(3263483911); +emit_32(1105341763); +emit_32(3254386688); +emit_32(3262775296); +emit_32(1105698541); +emit_32(3254386688); +emit_32(3261751309); +emit_32(1105960737); +emit_32(3254386688); +emit_32(3260727296); +emit_32(1106331828); +emit_32(3254386688); +emit_32(3259703309); +emit_32(1107459886); +emit_32(3254386688); +emit_32(3258679296); +emit_32(1108153677); +emit_32(3254386688); +emit_32(3257655309); +emit_32(1108782508); +emit_32(3254386688); +emit_32(3256631296); +emit_32(1109432127); +emit_32(3254386688); +emit_32(3255607309); +emit_32(1110052097); +emit_32(3254386688); +emit_32(3254386688); +emit_32(1110875832); +emit_32(3254386688); +emit_32(3252338714); +emit_32(1111641214); +emit_32(3254386688); +emit_32(3250290688); +emit_32(1112331230); +emit_32(3254386688); +emit_32(3248242714); +emit_32(1112948054); +emit_32(3254386688); +emit_32(3245998080); +emit_32(1113423243); +emit_32(3254386688); +emit_32(3241902132); +emit_32(1113710579); +emit_32(3254386688); +emit_32(3237609472); +emit_32(1113669763); +emit_32(3254386688); +emit_32(3229220864); +emit_32(1114121516); +emit_32(3254386688); +emit_32(0); +emit_32(1114484769); +emit_32(3254386688); +emit_32(1081737216); +emit_32(1114484349); +emit_32(3254386688); +emit_32(3279552512); +emit_32(1072117538); +emit_32(3255607309); +emit_32(3279296528); +emit_32(1066548005); +emit_32(3255607309); +emit_32(3279040545); +emit_32(1074090329); +emit_32(3255607309); +emit_32(3278784496); +emit_32(1080727353); +emit_32(3255607309); +emit_32(3278528512); +emit_32(1083163300); +emit_32(3255607309); +emit_32(3278272528); +emit_32(1085569447); +emit_32(3255607309); +emit_32(3278016545); +emit_32(1089130264); +emit_32(3255607309); +emit_32(3277760496); +emit_32(1091726821); +emit_32(3255607309); +emit_32(3277504512); +emit_32(1092664741); +emit_32(3255607309); +emit_32(3277248528); +emit_32(1094453402); +emit_32(3255607309); +emit_32(3276992545); +emit_32(1095438854); +emit_32(3255607309); +emit_32(3276736496); +emit_32(1096833145); +emit_32(3255607309); +emit_32(3276480512); +emit_32(1097840722); +emit_32(3255607309); +emit_32(3276224528); +emit_32(1099027500); +emit_32(3255607309); +emit_32(3275968545); +emit_32(1099544815); +emit_32(3255607309); +emit_32(3275712496); +emit_32(1099992505); +emit_32(3255607309); +emit_32(3275456512); +emit_32(1100930351); +emit_32(3255607309); +emit_32(3275200528); +emit_32(1102195720); +emit_32(3255607309); +emit_32(3274944545); +emit_32(1103964773); +emit_32(3255607309); +emit_32(3274688496); +emit_32(1105022262); +emit_32(3255607309); +emit_32(3274432512); +emit_32(1105539419); +emit_32(3255607309); +emit_32(3274176528); +emit_32(1106031097); +emit_32(3255607309); +emit_32(3273920545); +emit_32(1106016050); +emit_32(3255607309); +emit_32(3273664496); +emit_32(1106647135); +emit_32(3255607309); +emit_32(3273408512); +emit_32(1106967003); +emit_32(3255607309); +emit_32(3273152528); +emit_32(1107003861); +emit_32(3255607309); +emit_32(3272896545); +emit_32(1107169273); +emit_32(3255607309); +emit_32(3272640496); +emit_32(1106842170); +emit_32(3255607309); +emit_32(3272384512); +emit_32(1105904481); +emit_32(3255607309); +emit_32(3272128528); +emit_32(1105234493); +emit_32(3255607309); +emit_32(3271872545); +emit_32(1105294944); +emit_32(3255607309); +emit_32(3271616496); +emit_32(1105337988); +emit_32(3255607309); +emit_32(3271163904); +emit_32(1104796765); +emit_32(3255607309); +emit_32(3270651937); +emit_32(1104285113); +emit_32(3255607309); +emit_32(3270139970); +emit_32(1103883875); +emit_32(3255607309); +emit_32(3269627871); +emit_32(1103911662); +emit_32(3255607309); +emit_32(3269115904); +emit_32(1104082528); +emit_32(3255607309); +emit_32(3268603937); +emit_32(1105166231); +emit_32(3255607309); +emit_32(3268091970); +emit_32(1105162718); +emit_32(3255607309); +emit_32(3267579911); +emit_32(1105161460); +emit_32(3255607309); +emit_32(3267067904); +emit_32(1105681397); +emit_32(3255607309); +emit_32(3266555911); +emit_32(1106322129); +emit_32(3255607309); +emit_32(3266043904); +emit_32(1106430080); +emit_32(3255607309); +emit_32(3265531911); +emit_32(1106116084); +emit_32(3255607309); +emit_32(3265019904); +emit_32(1105862643); +emit_32(3255607309); +emit_32(3264507911); +emit_32(1105647947); +emit_32(3255607309); +emit_32(3263995904); +emit_32(1105573655); +emit_32(3255607309); +emit_32(3263483911); +emit_32(1105891374); +emit_32(3255607309); +emit_32(3262775296); +emit_32(1106077339); +emit_32(3255607309); +emit_32(3261751309); +emit_32(1106805889); +emit_32(3255607309); +emit_32(3260727296); +emit_32(1107381269); +emit_32(3255607309); +emit_32(3259703309); +emit_32(1107945325); +emit_32(3255607309); +emit_32(3258679296); +emit_32(1108632771); +emit_32(3255607309); +emit_32(3257655309); +emit_32(1109426989); +emit_32(3255607309); +emit_32(3256631296); +emit_32(1110034927); +emit_32(3255607309); +emit_32(3255607309); +emit_32(1110881652); +emit_32(3255607309); +emit_32(3254386688); +emit_32(1111900946); +emit_32(3255607309); +emit_32(3252338714); +emit_32(1112428590); +emit_32(3255607309); +emit_32(3250290688); +emit_32(1112879923); +emit_32(3255607309); +emit_32(3248242714); +emit_32(1113433755); +emit_32(3255607309); +emit_32(3245998080); +emit_32(1113801412); +emit_32(3255607309); +emit_32(3241902132); +emit_32(1113823248); +emit_32(3255607309); +emit_32(3237609472); +emit_32(1114004154); +emit_32(3255607309); +emit_32(3229220864); +emit_32(1114356344); +emit_32(3255607309); +emit_32(0); +emit_32(1114696502); +emit_32(3255607309); +emit_32(1081737216); +emit_32(1114694274); +emit_32(3255607309); +emit_32(3279552512); +emit_32(1076255680); +emit_32(3256631296); +emit_32(3279296528); +emit_32(1069990271); +emit_32(3256631296); +emit_32(3279040545); +emit_32(1068896816); +emit_32(3256631296); +emit_32(3278784496); +emit_32(1077023364); +emit_32(3256631296); +emit_32(3278528512); +emit_32(1081539790); +emit_32(3256631296); +emit_32(3278272528); +emit_32(1084255287); +emit_32(3256631296); +emit_32(3278016545); +emit_32(1087513968); +emit_32(3256631296); +emit_32(3277760496); +emit_32(1090514049); +emit_32(3256631296); +emit_32(3277504512); +emit_32(1092329323); +emit_32(3256631296); +emit_32(3277248528); +emit_32(1094687130); +emit_32(3256631296); +emit_32(3276992545); +emit_32(1095553044); +emit_32(3256631296); +emit_32(3276736496); +emit_32(1096485647); +emit_32(3256631296); +emit_32(3276480512); +emit_32(1097021994); +emit_32(3256631296); +emit_32(3276224528); +emit_32(1097731565); +emit_32(3256631296); +emit_32(3275968545); +emit_32(1099236114); +emit_32(3256631296); +emit_32(3275712496); +emit_32(1099466539); +emit_32(3256631296); +emit_32(3275456512); +emit_32(1100645820); +emit_32(3256631296); +emit_32(3275200528); +emit_32(1102788270); +emit_32(3256631296); +emit_32(3274944545); +emit_32(1104259213); +emit_32(3256631296); +emit_32(3274688496); +emit_32(1105157161); +emit_32(3256631296); +emit_32(3274432512); +emit_32(1105746199); +emit_32(3256631296); +emit_32(3274176528); +emit_32(1105646689); +emit_32(3256631296); +emit_32(3273920545); +emit_32(1106061296); +emit_32(3256631296); +emit_32(3273664496); +emit_32(1106358777); +emit_32(3256631296); +emit_32(3273408512); +emit_32(1106493728); +emit_32(3256631296); +emit_32(3273152528); +emit_32(1106565556); +emit_32(3256631296); +emit_32(3272896545); +emit_32(1106704649); +emit_32(3256631296); +emit_32(3272640496); +emit_32(1106418231); +emit_32(3256631296); +emit_32(3272384512); +emit_32(1105930014); +emit_32(3256631296); +emit_32(3272128528); +emit_32(1105073589); +emit_32(3256631296); +emit_32(3271872545); +emit_32(1104573104); +emit_32(3256631296); +emit_32(3271616496); +emit_32(1104491368); +emit_32(3256631296); +emit_32(3271163904); +emit_32(1103992822); +emit_32(3256631296); +emit_32(3270651937); +emit_32(1103347004); +emit_32(3256631296); +emit_32(3270139970); +emit_32(1103160882); +emit_32(3256631296); +emit_32(3269627871); +emit_32(1103581256); +emit_32(3256631296); +emit_32(3269115904); +emit_32(1103924874); +emit_32(3256631296); +emit_32(3268603937); +emit_32(1103872184); +emit_32(3256631296); +emit_32(3268091970); +emit_32(1104525237); +emit_32(3256631296); +emit_32(3267579911); +emit_32(1104546785); +emit_32(3256631296); +emit_32(3267067904); +emit_32(1105161250); +emit_32(3256631296); +emit_32(3266555911); +emit_32(1105731204); +emit_32(3256631296); +emit_32(3266043904); +emit_32(1105909881); +emit_32(3256631296); +emit_32(3265531911); +emit_32(1106044990); +emit_32(3256631296); +emit_32(3265019904); +emit_32(1105972009); +emit_32(3256631296); +emit_32(3264507911); +emit_32(1105900444); +emit_32(3256631296); +emit_32(3263995904); +emit_32(1106042264); +emit_32(3256631296); +emit_32(3263483911); +emit_32(1105966347); +emit_32(3256631296); +emit_32(3262775296); +emit_32(1106865029); +emit_32(3256631296); +emit_32(3261751309); +emit_32(1107485707); +emit_32(3256631296); +emit_32(3260727296); +emit_32(1107879081); +emit_32(3256631296); +emit_32(3259703309); +emit_32(1108393643); +emit_32(3256631296); +emit_32(3258679296); +emit_32(1109055845); +emit_32(3256631296); +emit_32(3257655309); +emit_32(1109718362); +emit_32(3256631296); +emit_32(3256631296); +emit_32(1110595522); +emit_32(3256631296); +emit_32(3255607309); +emit_32(1111233213); +emit_32(3256631296); +emit_32(3254386688); +emit_32(1112275236); +emit_32(3256631296); +emit_32(3252338714); +emit_32(1112879058); +emit_32(3256631296); +emit_32(3250290688); +emit_32(1113378678); +emit_32(3256631296); +emit_32(3248242714); +emit_32(1113688847); +emit_32(3256631296); +emit_32(3245998080); +emit_32(1114075693); +emit_32(3256631296); +emit_32(3241902132); +emit_32(1114046857); +emit_32(3256631296); +emit_32(3237609472); +emit_32(1114323576); +emit_32(3256631296); +emit_32(3229220864); +emit_32(1114565509); +emit_32(3256631296); +emit_32(0); +emit_32(1114610047); +emit_32(3256631296); +emit_32(1081737216); +emit_32(1114612538); +emit_32(3256631296); +emit_32(3279552512); +emit_32(1076804295); +emit_32(3257655309); +emit_32(3279296528); +emit_32(1073151266); +emit_32(3257655309); +emit_32(3279040545); +emit_32(1073776846); +emit_32(3257655309); +emit_32(3278784496); +emit_32(1078617493); +emit_32(3257655309); +emit_32(3278528512); +emit_32(1079412439); +emit_32(3257655309); +emit_32(3278272528); +emit_32(1083194359); +emit_32(3257655309); +emit_32(3278016545); +emit_32(1086932302); +emit_32(3257655309); +emit_32(3277760496); +emit_32(1090303516); +emit_32(3257655309); +emit_32(3277504512); +emit_32(1091865904); +emit_32(3257655309); +emit_32(3277248528); +emit_32(1094115865); +emit_32(3257655309); +emit_32(3276992545); +emit_32(1095463705); +emit_32(3257655309); +emit_32(3276736496); +emit_32(1096420531); +emit_32(3257655309); +emit_32(3276480512); +emit_32(1097432511); +emit_32(3257655309); +emit_32(3276224528); +emit_32(1097662883); +emit_32(3257655309); +emit_32(3275968545); +emit_32(1098694263); +emit_32(3257655309); +emit_32(3275712496); +emit_32(1099094871); +emit_32(3257655309); +emit_32(3275456512); +emit_32(1101139542); +emit_32(3257655309); +emit_32(3275200528); +emit_32(1102734583); +emit_32(3257655309); +emit_32(3274944545); +emit_32(1103866521); +emit_32(3257655309); +emit_32(3274688496); +emit_32(1104826178); +emit_32(3257655309); +emit_32(3274432512); +emit_32(1105191869); +emit_32(3257655309); +emit_32(3274176528); +emit_32(1105342759); +emit_32(3257655309); +emit_32(3273920545); +emit_32(1105684804); +emit_32(3257655309); +emit_32(3273664496); +emit_32(1105820647); +emit_32(3257655309); +emit_32(3273408512); +emit_32(1106189903); +emit_32(3257655309); +emit_32(3273152528); +emit_32(1105981447); +emit_32(3257655309); +emit_32(3272896545); +emit_32(1105858134); +emit_32(3257655309); +emit_32(3272640496); +emit_32(1105678146); +emit_32(3257655309); +emit_32(3272384512); +emit_32(1104998826); +emit_32(3257655309); +emit_32(3272128528); +emit_32(1104598218); +emit_32(3257655309); +emit_32(3271872545); +emit_32(1104297643); +emit_32(3257655309); +emit_32(3271616496); +emit_32(1103698487); +emit_32(3257655309); +emit_32(3271163904); +emit_32(1103368290); +emit_32(3257655309); +emit_32(3270651937); +emit_32(1103021107); +emit_32(3257655309); +emit_32(3270139970); +emit_32(1102840332); +emit_32(3257655309); +emit_32(3269627871); +emit_32(1103133042); +emit_32(3257655309); +emit_32(3269115904); +emit_32(1103173570); +emit_32(3257655309); +emit_32(3268603937); +emit_32(1103141274); +emit_32(3257655309); +emit_32(3268091970); +emit_32(1103365407); +emit_32(3257655309); +emit_32(3267579911); +emit_32(1103545342); +emit_32(3257655309); +emit_32(3267067904); +emit_32(1104414140); +emit_32(3257655309); +emit_32(3266555911); +emit_32(1104666532); +emit_32(3257655309); +emit_32(3266043904); +emit_32(1105496480); +emit_32(3257655309); +emit_32(3265531911); +emit_32(1105715423); +emit_32(3257655309); +emit_32(3265019904); +emit_32(1105801196); +emit_32(3257655309); +emit_32(3264507911); +emit_32(1105657070); +emit_32(3257655309); +emit_32(3263995904); +emit_32(1106199708); +emit_32(3257655309); +emit_32(3263483911); +emit_32(1107111182); +emit_32(3257655309); +emit_32(3262775296); +emit_32(1107520468); +emit_32(3257655309); +emit_32(3261751309); +emit_32(1107938194); +emit_32(3257655309); +emit_32(3260727296); +emit_32(1108285168); +emit_32(3257655309); +emit_32(3259703309); +emit_32(1109004937); +emit_32(3257655309); +emit_32(3258679296); +emit_32(1109555675); +emit_32(3257655309); +emit_32(3257655309); +emit_32(1110079124); +emit_32(3257655309); +emit_32(3256631296); +emit_32(1110954659); +emit_32(3257655309); +emit_32(3255607309); +emit_32(1111702136); +emit_32(3257655309); +emit_32(3254386688); +emit_32(1112419205); +emit_32(3257655309); +emit_32(3252338714); +emit_32(1113101723); +emit_32(3257655309); +emit_32(3250290688); +emit_32(1113769509); +emit_32(3257655309); +emit_32(3248242714); +emit_32(1113942393); +emit_32(3257655309); +emit_32(3245998080); +emit_32(1114187760); +emit_32(3257655309); +emit_32(3241902132); +emit_32(1114233451); +emit_32(3257655309); +emit_32(3237609472); +emit_32(1114375009); +emit_32(3257655309); +emit_32(3229220864); +emit_32(1114534052); +emit_32(3257655309); +emit_32(0); +emit_32(1114534445); +emit_32(3257655309); +emit_32(1081737216); +emit_32(1114510642); +emit_32(3257655309); +emit_32(3279552512); +emit_32(1073972469); +emit_32(3258679296); +emit_32(3279296528); +emit_32(1069063330); +emit_32(3258679296); +emit_32(3279040545); +emit_32(1073401750); +emit_32(3258679296); +emit_32(3278784496); +emit_32(1075865903); +emit_32(3258679296); +emit_32(3278528512); +emit_32(1078931520); +emit_32(3258679296); +emit_32(3278272528); +emit_32(1083096191); +emit_32(3258679296); +emit_32(3278016545); +emit_32(1086698344); +emit_32(3258679296); +emit_32(3277760496); +emit_32(1089640354); +emit_32(3258679296); +emit_32(3277504512); +emit_32(1091993652); +emit_32(3258679296); +emit_32(3277248528); +emit_32(1094077907); +emit_32(3258679296); +emit_32(3276992545); +emit_32(1095184469); +emit_32(3258679296); +emit_32(3276736496); +emit_32(1095896243); +emit_32(3258679296); +emit_32(3276480512); +emit_32(1096633916); +emit_32(3258679296); +emit_32(3276224528); +emit_32(1096975542); +emit_32(3258679296); +emit_32(3275968545); +emit_32(1097889376); +emit_32(3258679296); +emit_32(3275712496); +emit_32(1099541774); +emit_32(3258679296); +emit_32(3275456512); +emit_32(1101179178); +emit_32(3258679296); +emit_32(3275200528); +emit_32(1102317932); +emit_32(3258679296); +emit_32(3274944545); +emit_32(1103521278); +emit_32(3258679296); +emit_32(3274688496); +emit_32(1104345983); +emit_32(3258679296); +emit_32(3274432512); +emit_32(1104852759); +emit_32(3258679296); +emit_32(3274176528); +emit_32(1104831526); +emit_32(3258679296); +emit_32(3273920545); +emit_32(1104946974); +emit_32(3258679296); +emit_32(3273664496); +emit_32(1105281994); +emit_32(3258679296); +emit_32(3273408512); +emit_32(1105386275); +emit_32(3258679296); +emit_32(3273152528); +emit_32(1104804053); +emit_32(3258679296); +emit_32(3272896545); +emit_32(1105020374); +emit_32(3258679296); +emit_32(3272640496); +emit_32(1104527806); +emit_32(3258679296); +emit_32(3272384512); +emit_32(1103824211); +emit_32(3258679296); +emit_32(3272128528); +emit_32(1103687791); +emit_32(3258679296); +emit_32(3271872545); +emit_32(1103464392); +emit_32(3258679296); +emit_32(3271616496); +emit_32(1103011774); +emit_32(3258679296); +emit_32(3271163904); +emit_32(1102466777); +emit_32(3258679296); +emit_32(3270651937); +emit_32(1102908804); +emit_32(3258679296); +emit_32(3270139970); +emit_32(1102728659); +emit_32(3258679296); +emit_32(3269627871); +emit_32(1102517318); +emit_32(3258679296); +emit_32(3269115904); +emit_32(1102387190); +emit_32(3258679296); +emit_32(3268603937); +emit_32(1102173019); +emit_32(3258679296); +emit_32(3268091970); +emit_32(1102448637); +emit_32(3258679296); +emit_32(3267579911); +emit_32(1102804104); +emit_32(3258679296); +emit_32(3267067904); +emit_32(1103652140); +emit_32(3258679296); +emit_32(3266555911); +emit_32(1104033035); +emit_32(3258679296); +emit_32(3266043904); +emit_32(1104794721); +emit_32(3258679296); +emit_32(3265531911); +emit_32(1105280578); +emit_32(3258679296); +emit_32(3265019904); +emit_32(1105555305); +emit_32(3258679296); +emit_32(3264507911); +emit_32(1106497398); +emit_32(3258679296); +emit_32(3263995904); +emit_32(1107356549); +emit_32(3258679296); +emit_32(3263483911); +emit_32(1107738440); +emit_32(3258679296); +emit_32(3262775296); +emit_32(1108026091); +emit_32(3258679296); +emit_32(3261751309); +emit_32(1108412596); +emit_32(3258679296); +emit_32(3260727296); +emit_32(1108935547); +emit_32(3258679296); +emit_32(3259703309); +emit_32(1109269178); +emit_32(3258679296); +emit_32(3258679296); +emit_32(1109856774); +emit_32(3258679296); +emit_32(3257655309); +emit_32(1110673955); +emit_32(3258679296); +emit_32(3256631296); +emit_32(1111396031); +emit_32(3258679296); +emit_32(3255607309); +emit_32(1111904302); +emit_32(3258679296); +emit_32(3254386688); +emit_32(1112640612); +emit_32(3258679296); +emit_32(3252338714); +emit_32(1113308083); +emit_32(3258679296); +emit_32(3250290688); +emit_32(1113763480); +emit_32(3258679296); +emit_32(3248242714); +emit_32(1113823117); +emit_32(3258679296); +emit_32(3245998080); +emit_32(1114289734); +emit_32(3258679296); +emit_32(3241902132); +emit_32(1114547028); +emit_32(3258679296); +emit_32(3237609472); +emit_32(1114378417); +emit_32(3258679296); +emit_32(3229220864); +emit_32(1114468175); +emit_32(3258679296); +emit_32(0); +emit_32(1114253689); +emit_32(3258679296); +emit_32(1081737216); +emit_32(1114350184); +emit_32(3258679296); +emit_32(3279552512); +emit_32(1076163699); +emit_32(3259703309); +emit_32(3279296528); +emit_32(1074005017); +emit_32(3259703309); +emit_32(3279040545); +emit_32(1074851343); +emit_32(3259703309); +emit_32(3278784496); +emit_32(1075567479); +emit_32(3259703309); +emit_32(3278528512); +emit_32(1076420223); +emit_32(3259703309); +emit_32(3278272528); +emit_32(1083073395); +emit_32(3259703309); +emit_32(3278016545); +emit_32(1087377339); +emit_32(3259703309); +emit_32(3277760496); +emit_32(1090634446); +emit_32(3259703309); +emit_32(3277504512); +emit_32(1092723461); +emit_32(3259703309); +emit_32(3277248528); +emit_32(1094053580); +emit_32(3259703309); +emit_32(3276992545); +emit_32(1095488766); +emit_32(3259703309); +emit_32(3276736496); +emit_32(1096447794); +emit_32(3259703309); +emit_32(3276480512); +emit_32(1096424305); +emit_32(3259703309); +emit_32(3276224528); +emit_32(1096267648); +emit_32(3259703309); +emit_32(3275968545); +emit_32(1098177000); +emit_32(3259703309); +emit_32(3275712496); +emit_32(1099698536); +emit_32(3259703309); +emit_32(3275456512); +emit_32(1100780981); +emit_32(3259703309); +emit_32(3275200528); +emit_32(1102100247); +emit_32(3259703309); +emit_32(3274944545); +emit_32(1103045696); +emit_32(3259703309); +emit_32(3274688496); +emit_32(1103591375); +emit_32(3259703309); +emit_32(3274432512); +emit_32(1104209510); +emit_32(3259703309); +emit_32(3274176528); +emit_32(1104099882); +emit_32(3259703309); +emit_32(3273920545); +emit_32(1104651171); +emit_32(3259703309); +emit_32(3273664496); +emit_32(1104566760); +emit_32(3259703309); +emit_32(3273408512); +emit_32(1104331250); +emit_32(3259703309); +emit_32(3273152528); +emit_32(1103945269); +emit_32(3259703309); +emit_32(3272896545); +emit_32(1103774247); +emit_32(3259703309); +emit_32(3272640496); +emit_32(1103880729); +emit_32(3259703309); +emit_32(3272384512); +emit_32(1103052669); +emit_32(3259703309); +emit_32(3272128528); +emit_32(1102949594); +emit_32(3259703309); +emit_32(3271872545); +emit_32(1102556640); +emit_32(3259703309); +emit_32(3271616496); +emit_32(1102215329); +emit_32(3259703309); +emit_32(3271163904); +emit_32(1102211711); +emit_32(3259703309); +emit_32(3270651937); +emit_32(1102750102); +emit_32(3259703309); +emit_32(3270139970); +emit_32(1102672246); +emit_32(3259703309); +emit_32(3269627871); +emit_32(1102404282); +emit_32(3259703309); +emit_32(3269115904); +emit_32(1101664721); +emit_32(3259703309); +emit_32(3268603937); +emit_32(1101247965); +emit_32(3259703309); +emit_32(3268091970); +emit_32(1101781742); +emit_32(3259703309); +emit_32(3267579911); +emit_32(1102060559); +emit_32(3259703309); +emit_32(3267067904); +emit_32(1102827382); +emit_32(3259703309); +emit_32(3266555911); +emit_32(1103737651); +emit_32(3259703309); +emit_32(3266043904); +emit_32(1104384360); +emit_32(3259703309); +emit_32(3265531911); +emit_32(1104969151); +emit_32(3259703309); +emit_32(3265019904); +emit_32(1106019143); +emit_32(3259703309); +emit_32(3264507911); +emit_32(1106853337); +emit_32(3259703309); +emit_32(3263995904); +emit_32(1107698306); +emit_32(3259703309); +emit_32(3263483911); +emit_32(1108253868); +emit_32(3259703309); +emit_32(3262775296); +emit_32(1108408245); +emit_32(3259703309); +emit_32(3261751309); +emit_32(1108719619); +emit_32(3259703309); +emit_32(3260727296); +emit_32(1109327662); +emit_32(3259703309); +emit_32(3259703309); +emit_32(1109785051); +emit_32(3259703309); +emit_32(3258679296); +emit_32(1110584826); +emit_32(3259703309); +emit_32(3257655309); +emit_32(1111298907); +emit_32(3259703309); +emit_32(3256631296); +emit_32(1111928472); +emit_32(3259703309); +emit_32(3255607309); +emit_32(1112511401); +emit_32(3259703309); +emit_32(3254386688); +emit_32(1113049871); +emit_32(3259703309); +emit_32(3252338714); +emit_32(1113389636); +emit_32(3259703309); +emit_32(3250290688); +emit_32(1113731419); +emit_32(3259703309); +emit_32(3248242714); +emit_32(1114257359); +emit_32(3259703309); +emit_32(3245998080); +emit_32(1114519870); +emit_32(3259703309); +emit_32(3241902132); +emit_32(1114340039); +emit_32(3259703309); +emit_32(3237609472); +emit_32(1114383922); +emit_32(3259703309); +emit_32(3229220864); +emit_32(1114528390); +emit_32(3259703309); +emit_32(0); +emit_32(1114544302); +emit_32(3259703309); +emit_32(1081737216); +emit_32(1114597202); +emit_32(3259703309); +emit_32(3279552512); +emit_32(1073915300); +emit_32(3260727296); +emit_32(3279296528); +emit_32(1076045336); +emit_32(3260727296); +emit_32(3279040545); +emit_32(1076717767); +emit_32(3260727296); +emit_32(3278784496); +emit_32(1077967921); +emit_32(3260727296); +emit_32(3278528512); +emit_32(1080230706); +emit_32(3260727296); +emit_32(3278272528); +emit_32(1084434174); +emit_32(3260727296); +emit_32(3278016545); +emit_32(1088619209); +emit_32(3260727296); +emit_32(3277760496); +emit_32(1090948694); +emit_32(3260727296); +emit_32(3277504512); +emit_32(1092674388); +emit_32(3260727296); +emit_32(3277248528); +emit_32(1094185071); +emit_32(3260727296); +emit_32(3276992545); +emit_32(1094902717); +emit_32(3260727296); +emit_32(3276736496); +emit_32(1095470101); +emit_32(3260727296); +emit_32(3276480512); +emit_32(1095440531); +emit_32(3260727296); +emit_32(3276224528); +emit_32(1096837654); +emit_32(3260727296); +emit_32(3275968545); +emit_32(1098967784); +emit_32(3260727296); +emit_32(3275712496); +emit_32(1100160067); +emit_32(3260727296); +emit_32(3275456512); +emit_32(1100666582); +emit_32(3260727296); +emit_32(3275200528); +emit_32(1101873178); +emit_32(3260727296); +emit_32(3274944545); +emit_32(1102572736); +emit_32(3260727296); +emit_32(3274688496); +emit_32(1102982834); +emit_32(3260727296); +emit_32(3274432512); +emit_32(1103746092); +emit_32(3260727296); +emit_32(3274176528); +emit_32(1104190584); +emit_32(3260727296); +emit_32(3273920545); +emit_32(1104541647); +emit_32(3260727296); +emit_32(3273664496); +emit_32(1104309335); +emit_32(3260727296); +emit_32(3273408512); +emit_32(1103949831); +emit_32(3260727296); +emit_32(3273152528); +emit_32(1103383495); +emit_32(3260727296); +emit_32(3272896545); +emit_32(1103021107); +emit_32(3260727296); +emit_32(3272640496); +emit_32(1102773014); +emit_32(3260727296); +emit_32(3272384512); +emit_32(1102509192); +emit_32(3260727296); +emit_32(3272128528); +emit_32(1102328470); +emit_32(3260727296); +emit_32(3271872545); +emit_32(1101757678); +emit_32(3260727296); +emit_32(3271616496); +emit_32(1101776133); +emit_32(3260727296); +emit_32(3271163904); +emit_32(1102138363); +emit_32(3260727296); +emit_32(3270651937); +emit_32(1102294496); +emit_32(3260727296); +emit_32(3270139970); +emit_32(1101746563); +emit_32(3260727296); +emit_32(3269627871); +emit_32(1101436656); +emit_32(3260727296); +emit_32(3269115904); +emit_32(1100808559); +emit_32(3260727296); +emit_32(3268603937); +emit_32(1101081451); +emit_32(3260727296); +emit_32(3268091970); +emit_32(1101838156); +emit_32(3260727296); +emit_32(3267579911); +emit_32(1102177947); +emit_32(3260727296); +emit_32(3267067904); +emit_32(1102933656); +emit_32(3260727296); +emit_32(3266555911); +emit_32(1103594940); +emit_32(3260727296); +emit_32(3266043904); +emit_32(1104370991); +emit_32(3260727296); +emit_32(3265531911); +emit_32(1105153229); +emit_32(3260727296); +emit_32(3265019904); +emit_32(1106283803); +emit_32(3260727296); +emit_32(3264507911); +emit_32(1107489928); +emit_32(3260727296); +emit_32(3263995904); +emit_32(1107912347); +emit_32(3260727296); +emit_32(3263483911); +emit_32(1108259976); +emit_32(3260727296); +emit_32(3262775296); +emit_32(1108728218); +emit_32(3260727296); +emit_32(3261751309); +emit_32(1108959507); +emit_32(3260727296); +emit_32(3260727296); +emit_32(1109551402); +emit_32(3260727296); +emit_32(3259703309); +emit_32(1110560788); +emit_32(3260727296); +emit_32(3258679296); +emit_32(1111390473); +emit_32(3260727296); +emit_32(3257655309); +emit_32(1111954109); +emit_32(3260727296); +emit_32(3256631296); +emit_32(1112588288); +emit_32(3260727296); +emit_32(3255607309); +emit_32(1113193211); +emit_32(3260727296); +emit_32(3254386688); +emit_32(1113572953); +emit_32(3260727296); +emit_32(3252338714); +emit_32(1113885324); +emit_32(3260727296); +emit_32(3250290688); +emit_32(1114116194); +emit_32(3260727296); +emit_32(3248242714); +emit_32(1114531771); +emit_32(3260727296); +emit_32(3245998080); +emit_32(1114632933); +emit_32(3260727296); +emit_32(3241902132); +emit_32(1114591697); +emit_32(3260727296); +emit_32(3237609472); +emit_32(1114663420); +emit_32(3260727296); +emit_32(3229220864); +emit_32(1114860631); +emit_32(3260727296); +emit_32(0); +emit_32(1114783587); +emit_32(3260727296); +emit_32(1081737216); +emit_32(1114739258); +emit_32(3260727296); +emit_32(3279552512); +emit_32(1082154906); +emit_32(3261751309); +emit_32(3279296528); +emit_32(1078227213); +emit_32(3261751309); +emit_32(3279040545); +emit_32(1079515745); +emit_32(3261751309); +emit_32(3278784496); +emit_32(1080953133); +emit_32(3261751309); +emit_32(3278528512); +emit_32(1082315317); +emit_32(3261751309); +emit_32(3278272528); +emit_32(1085410084); +emit_32(3261751309); +emit_32(3278016545); +emit_32(1089116884); +emit_32(3261751309); +emit_32(3277760496); +emit_32(1091162058); +emit_32(3261751309); +emit_32(3277504512); +emit_32(1092383922); +emit_32(3261751309); +emit_32(3277248528); +emit_32(1094686500); +emit_32(3261751309); +emit_32(3276992545); +emit_32(1095695440); +emit_32(3261751309); +emit_32(3276736496); +emit_32(1096304558); +emit_32(3261751309); +emit_32(3276480512); +emit_32(1096755970); +emit_32(3261751309); +emit_32(3276224528); +emit_32(1097235484); +emit_32(3261751309); +emit_32(3275968545); +emit_32(1098986081); +emit_32(3261751309); +emit_32(3275712496); +emit_32(1099885602); +emit_32(3261751309); +emit_32(3275456512); +emit_32(1100472805); +emit_32(3261751309); +emit_32(3275200528); +emit_32(1101685588); +emit_32(3261751309); +emit_32(3274944545); +emit_32(1102836243); +emit_32(3261751309); +emit_32(3274688496); +emit_32(1103812048); +emit_32(3261751309); +emit_32(3274432512); +emit_32(1104207518); +emit_32(3261751309); +emit_32(3274176528); +emit_32(1104457970); +emit_32(3261751309); +emit_32(3273920545); +emit_32(1104083891); +emit_32(3261751309); +emit_32(3273664496); +emit_32(1103629805); +emit_32(3261751309); +emit_32(3273408512); +emit_32(1103776553); +emit_32(3261751309); +emit_32(3273152528); +emit_32(1103074794); +emit_32(3261751309); +emit_32(3272896545); +emit_32(1102698250); +emit_32(3261751309); +emit_32(3272640496); +emit_32(1102376914); +emit_32(3261751309); +emit_32(3272384512); +emit_32(1101790760); +emit_32(3261751309); +emit_32(3272128528); +emit_32(1101572184); +emit_32(3261751309); +emit_32(3271872545); +emit_32(1101531028); +emit_32(3261751309); +emit_32(3271616496); +emit_32(1101967498); +emit_32(3261751309); +emit_32(3271163904); +emit_32(1101842874); +emit_32(3261751309); +emit_32(3270651937); +emit_32(1101503398); +emit_32(3261751309); +emit_32(3270139970); +emit_32(1101637406); +emit_32(3261751309); +emit_32(3269627871); +emit_32(1100872627); +emit_32(3261751309); +emit_32(3269115904); +emit_32(1100259629); +emit_32(3261751309); +emit_32(3268603937); +emit_32(1101213676); +emit_32(3261751309); +emit_32(3268091970); +emit_32(1102188118); +emit_32(3261751309); +emit_32(3267579911); +emit_32(1102756499); +emit_32(3261751309); +emit_32(3267067904); +emit_32(1103291744); +emit_32(3261751309); +emit_32(3266555911); +emit_32(1104021763); +emit_32(3261751309); +emit_32(3266043904); +emit_32(1105069185); +emit_32(3261751309); +emit_32(3265531911); +emit_32(1105681659); +emit_32(3261751309); +emit_32(3265019904); +emit_32(1106673612); +emit_32(3261751309); +emit_32(3264507911); +emit_32(1107534728); +emit_32(3261751309); +emit_32(3263995904); +emit_32(1108049579); +emit_32(3261751309); +emit_32(3263483911); +emit_32(1108358411); +emit_32(3261751309); +emit_32(3262775296); +emit_32(1109001765); +emit_32(3261751309); +emit_32(3261751309); +emit_32(1109732911); +emit_32(3261751309); +emit_32(3260727296); +emit_32(1110268628); +emit_32(3261751309); +emit_32(3259703309); +emit_32(1111109324); +emit_32(3261751309); +emit_32(3258679296); +emit_32(1111815854); +emit_32(3261751309); +emit_32(3257655309); +emit_32(1112380434); +emit_32(3261751309); +emit_32(3256631296); +emit_32(1113088511); +emit_32(3261751309); +emit_32(3255607309); +emit_32(1113540657); +emit_32(3261751309); +emit_32(3254386688); +emit_32(1113874498); +emit_32(3261751309); +emit_32(3252338714); +emit_32(1114128672); +emit_32(3261751309); +emit_32(3250290688); +emit_32(1114325883); +emit_32(3261751309); +emit_32(3248242714); +emit_32(1114630023); +emit_32(3261751309); +emit_32(3245998080); +emit_32(1114691181); +emit_32(3261751309); +emit_32(3241902132); +emit_32(1114643497); +emit_32(3261751309); +emit_32(3237609472); +emit_32(1114924410); +emit_32(3261751309); +emit_32(3229220864); +emit_32(1115023894); +emit_32(3261751309); +emit_32(0); +emit_32(1115026751); +emit_32(3261751309); +emit_32(1081737216); +emit_32(1115049086); +emit_32(3261751309); +emit_32(3279552512); +emit_32(1085379717); +emit_32(3262775296); +emit_32(3279296528); +emit_32(1082515763); +emit_32(3262775296); +emit_32(3279040545); +emit_32(1081713392); +emit_32(3262775296); +emit_32(3278784496); +emit_32(1082674664); +emit_32(3262775296); +emit_32(3278528512); +emit_32(1083857751); +emit_32(3262775296); +emit_32(3278272528); +emit_32(1086391782); +emit_32(3262775296); +emit_32(3278016545); +emit_32(1089887986); +emit_32(3262775296); +emit_32(3277760496); +emit_32(1091366562); +emit_32(3262775296); +emit_32(3277504512); +emit_32(1093480323); +emit_32(3262775296); +emit_32(3277248528); +emit_32(1096367053); +emit_32(3262775296); +emit_32(3276992545); +emit_32(1097288647); +emit_32(3262775296); +emit_32(3276736496); +emit_32(1097900491); +emit_32(3262775296); +emit_32(3276480512); +emit_32(1097387737); +emit_32(3262775296); +emit_32(3276224528); +emit_32(1098997092); +emit_32(3262775296); +emit_32(3275968545); +emit_32(1099406141); +emit_32(3262775296); +emit_32(3275712496); +emit_32(1100061920); +emit_32(3262775296); +emit_32(3275456512); +emit_32(1100936328); +emit_32(3262775296); +emit_32(3275200528); +emit_32(1102376704); +emit_32(3262775296); +emit_32(3274944545); +emit_32(1103402212); +emit_32(3262775296); +emit_32(3274688496); +emit_32(1104153831); +emit_32(3262775296); +emit_32(3274432512); +emit_32(1104171447); +emit_32(3262775296); +emit_32(3274176528); +emit_32(1104486911); +emit_32(3262775296); +emit_32(3273920545); +emit_32(1103965769); +emit_32(3262775296); +emit_32(3273664496); +emit_32(1103343911); +emit_32(3262775296); +emit_32(3273408512); +emit_32(1102855274); +emit_32(3262775296); +emit_32(3273152528); +emit_32(1102990751); +emit_32(3262775296); +emit_32(3272896545); +emit_32(1102516113); +emit_32(3262775296); +emit_32(3272640496); +emit_32(1101872916); +emit_32(3262775296); +emit_32(3272384512); +emit_32(1101340606); +emit_32(3262775296); +emit_32(3272128528); +emit_32(1101093667); +emit_32(3262775296); +emit_32(3271872545); +emit_32(1101409288); +emit_32(3262775296); +emit_32(3271616496); +emit_32(1101315074); +emit_32(3262775296); +emit_32(3271163904); +emit_32(1101239471); +emit_32(3262775296); +emit_32(3270651937); +emit_32(1100955936); +emit_32(3262775296); +emit_32(3270139970); +emit_32(1100734163); +emit_32(3262775296); +emit_32(3269627871); +emit_32(1099873911); +emit_32(3262775296); +emit_32(3269115904); +emit_32(1100253023); +emit_32(3262775296); +emit_32(3268603937); +emit_32(1101062786); +emit_32(3262775296); +emit_32(3268091970); +emit_32(1101695916); +emit_32(3262775296); +emit_32(3267579911); +emit_32(1102727139); +emit_32(3262775296); +emit_32(3267067904); +emit_32(1103290748); +emit_32(3262775296); +emit_32(3266555911); +emit_32(1104346717); +emit_32(3262775296); +emit_32(3266043904); +emit_32(1105063261); +emit_32(3262775296); +emit_32(3265531911); +emit_32(1106002838); +emit_32(3262775296); +emit_32(3265019904); +emit_32(1107066723); +emit_32(3262775296); +emit_32(3264507911); +emit_32(1107631093); +emit_32(3262775296); +emit_32(3263995904); +emit_32(1108240630); +emit_32(3262775296); +emit_32(3263483911); +emit_32(1108980662); +emit_32(3262775296); +emit_32(3262775296); +emit_32(1109633532); +emit_32(3262775296); +emit_32(3261751309); +emit_32(1110425679); +emit_32(3262775296); +emit_32(3260727296); +emit_32(1110943098); +emit_32(3262775296); +emit_32(3259703309); +emit_32(1111573843); +emit_32(3262775296); +emit_32(3258679296); +emit_32(1112066674); +emit_32(3262775296); +emit_32(3257655309); +emit_32(1112658464); +emit_32(3262775296); +emit_32(3256631296); +emit_32(1113241131); +emit_32(3262775296); +emit_32(3255607309); +emit_32(1113628711); +emit_32(3262775296); +emit_32(3254386688); +emit_32(1113998361); +emit_32(3262775296); +emit_32(3252338714); +emit_32(1114315476); +emit_32(3262775296); +emit_32(3250290688); +emit_32(1114404291); +emit_32(3262775296); +emit_32(3248242714); +emit_32(1114257097); +emit_32(3262775296); +emit_32(3245998080); +emit_32(1114167496); +emit_32(3262775296); +emit_32(3241902132); +emit_32(1114396767); +emit_32(3262775296); +emit_32(3237609472); +emit_32(1114735247); +emit_32(3262775296); +emit_32(3229220864); +emit_32(1114903465); +emit_32(3262775296); +emit_32(0); +emit_32(1115124924); +emit_32(3262775296); +emit_32(1081737216); +emit_32(1115189700); +emit_32(3262775296); +emit_32(3279552512); +emit_32(1086492571); +emit_32(3263483911); +emit_32(3279296528); +emit_32(1084509819); +emit_32(3263483911); +emit_32(3279040545); +emit_32(1084430379); +emit_32(3263483911); +emit_32(3278784496); +emit_32(1085001978); +emit_32(3263483911); +emit_32(3278528512); +emit_32(1084687406); +emit_32(3263483911); +emit_32(3278272528); +emit_32(1087121591); +emit_32(3263483911); +emit_32(3278016545); +emit_32(1090205138); +emit_32(3263483911); +emit_32(3277760496); +emit_32(1091946330); +emit_32(3263483911); +emit_32(3277504512); +emit_32(1094604292); +emit_32(3263483911); +emit_32(3277248528); +emit_32(1096763205); +emit_32(3263483911); +emit_32(3276992545); +emit_32(1098349072); +emit_32(3263483911); +emit_32(3276736496); +emit_32(1098895589); +emit_32(3263483911); +emit_32(3276480512); +emit_32(1099139645); +emit_32(3263483911); +emit_32(3276224528); +emit_32(1099654916); +emit_32(3263483911); +emit_32(3275968545); +emit_32(1100028838); +emit_32(3263483911); +emit_32(3275712496); +emit_32(1100411096); +emit_32(3263483911); +emit_32(3275456512); +emit_32(1101073796); +emit_32(3263483911); +emit_32(3275200528); +emit_32(1102500803); +emit_32(3263483911); +emit_32(3274944545); +emit_32(1103383180); +emit_32(3263483911); +emit_32(3274688496); +emit_32(1103953081); +emit_32(3263483911); +emit_32(3274432512); +emit_32(1104117078); +emit_32(3263483911); +emit_32(3274176528); +emit_32(1104031777); +emit_32(3263483911); +emit_32(3273920545); +emit_32(1103706141); +emit_32(3263483911); +emit_32(3273664496); +emit_32(1103324512); +emit_32(3263483911); +emit_32(3273408512); +emit_32(1102513124); +emit_32(3263483911); +emit_32(3273152528); +emit_32(1102512757); +emit_32(3263483911); +emit_32(3272896545); +emit_32(1102001367); +emit_32(3263483911); +emit_32(3272640496); +emit_32(1101489347); +emit_32(3263483911); +emit_32(3272384512); +emit_32(1101058382); +emit_32(3263483911); +emit_32(3272128528); +emit_32(1100785805); +emit_32(3263483911); +emit_32(3271872545); +emit_32(1100711985); +emit_32(3263483911); +emit_32(3271616496); +emit_32(1100454979); +emit_32(3263483911); +emit_32(3271163904); +emit_32(1100441924); +emit_32(3263483911); +emit_32(3270651937); +emit_32(1100316829); +emit_32(3263483911); +emit_32(3270139970); +emit_32(1099903690); +emit_32(3263483911); +emit_32(3269627871); +emit_32(1099946525); +emit_32(3263483911); +emit_32(3269115904); +emit_32(1100095265); +emit_32(3263483911); +emit_32(3268603937); +emit_32(1100759958); +emit_32(3263483911); +emit_32(3268091970); +emit_32(1101531447); +emit_32(3263483911); +emit_32(3267579911); +emit_32(1102182403); +emit_32(3263483911); +emit_32(3267067904); +emit_32(1102954575); +emit_32(3263483911); +emit_32(3266555911); +emit_32(1103927181); +emit_32(3263483911); +emit_32(3266043904); +emit_32(1104963174); +emit_32(3263483911); +emit_32(3265531911); +emit_32(1106107695); +emit_32(3263483911); +emit_32(3265019904); +emit_32(1106811971); +emit_32(3263483911); +emit_32(3264507911); +emit_32(1107810242); +emit_32(3263483911); +emit_32(3263995904); +emit_32(1108701217); +emit_32(3263483911); +emit_32(3263483911); +emit_32(1109660533); +emit_32(3263483911); +emit_32(3262775296); +emit_32(1110370838); +emit_32(3263483911); +emit_32(3261751309); +emit_32(1111099363); +emit_32(3263483911); +emit_32(3260727296); +emit_32(1111486628); +emit_32(3263483911); +emit_32(3259703309); +emit_32(1111821464); +emit_32(3263483911); +emit_32(3258679296); +emit_32(1112262967); +emit_32(3263483911); +emit_32(3257655309); +emit_32(1112778211); +emit_32(3263483911); +emit_32(3256631296); +emit_32(1113334717); +emit_32(3263483911); +emit_32(3255607309); +emit_32(1113699910); +emit_32(3263483911); +emit_32(3254386688); +emit_32(1113953429); +emit_32(3263483911); +emit_32(3252338714); +emit_32(1114251775); +emit_32(3263483911); +emit_32(3250290688); +emit_32(1114199242); +emit_32(3263483911); +emit_32(3248242714); +emit_32(1113838033); +emit_32(3263483911); +emit_32(3245998080); +emit_32(1113833787); +emit_32(3263483911); +emit_32(3241902132); +emit_32(1114207840); +emit_32(3263483911); +emit_32(3237609472); +emit_32(1114546556); +emit_32(3263483911); +emit_32(3229220864); +emit_32(1114598697); +emit_32(3263483911); +emit_32(0); +emit_32(1114817954); +emit_32(3263483911); +emit_32(1081737216); +emit_32(1114860919); +emit_32(3263483911); +emit_32(3279552512); +emit_32(1087139710); +emit_32(3263995904); +emit_32(3279296528); +emit_32(1087121150); +emit_32(3263995904); +emit_32(3279040545); +emit_32(1087424797); +emit_32(3263995904); +emit_32(3278784496); +emit_32(1088288866); +emit_32(3263995904); +emit_32(3278528512); +emit_32(1087946275); +emit_32(3263995904); +emit_32(3278272528); +emit_32(1088967861); +emit_32(3263995904); +emit_32(3278016545); +emit_32(1091560444); +emit_32(3263995904); +emit_32(3277760496); +emit_32(1093142053); +emit_32(3263995904); +emit_32(3277504512); +emit_32(1094326419); +emit_32(3263995904); +emit_32(3277248528); +emit_32(1096867958); +emit_32(3263995904); +emit_32(3276992545); +emit_32(1098819882); +emit_32(3263995904); +emit_32(3276736496); +emit_32(1099265422); +emit_32(3263995904); +emit_32(3276480512); +emit_32(1099487668); +emit_32(3263995904); +emit_32(3276224528); +emit_32(1099990827); +emit_32(3263995904); +emit_32(3275968545); +emit_32(1100246627); +emit_32(3263995904); +emit_32(3275712496); +emit_32(1100397937); +emit_32(3263995904); +emit_32(3275456512); +emit_32(1101410127); +emit_32(3263995904); +emit_32(3275200528); +emit_32(1102521513); +emit_32(3263995904); +emit_32(3274944545); +emit_32(1103207386); +emit_32(3263995904); +emit_32(3274688496); +emit_32(1103390940); +emit_32(3263995904); +emit_32(3274432512); +emit_32(1103443263); +emit_32(3263995904); +emit_32(3274176528); +emit_32(1103097024); +emit_32(3263995904); +emit_32(3273920545); +emit_32(1102906864); +emit_32(3263995904); +emit_32(3273664496); +emit_32(1102900730); +emit_32(3263995904); +emit_32(3273408512); +emit_32(1102220938); +emit_32(3263995904); +emit_32(3273152528); +emit_32(1102144078); +emit_32(3263995904); +emit_32(3272896545); +emit_32(1101363046); +emit_32(3263995904); +emit_32(3272640496); +emit_32(1100839544); +emit_32(3263995904); +emit_32(3272384512); +emit_32(1100199127); +emit_32(3263995904); +emit_32(3272128528); +emit_32(1100097362); +emit_32(3263995904); +emit_32(3271872545); +emit_32(1099987419); +emit_32(3263995904); +emit_32(3271616496); +emit_32(1099540044); +emit_32(3263995904); +emit_32(3271163904); +emit_32(1099437336); +emit_32(3263995904); +emit_32(3270651937); +emit_32(1099514983); +emit_32(3263995904); +emit_32(3270139970); +emit_32(1099717201); +emit_32(3263995904); +emit_32(3269627871); +emit_32(1099729155); +emit_32(3263995904); +emit_32(3269115904); +emit_32(1099827039); +emit_32(3263995904); +emit_32(3268603937); +emit_32(1100161378); +emit_32(3263995904); +emit_32(3268091970); +emit_32(1100861355); +emit_32(3263995904); +emit_32(3267579911); +emit_32(1101473671); +emit_32(3263995904); +emit_32(3267067904); +emit_32(1102447483); +emit_32(3263995904); +emit_32(3266555911); +emit_32(1103703782); +emit_32(3263995904); +emit_32(3266043904); +emit_32(1104882067); +emit_32(3263995904); +emit_32(3265531911); +emit_32(1105992194); +emit_32(3263995904); +emit_32(3265019904); +emit_32(1106919608); +emit_32(3263995904); +emit_32(3264507911); +emit_32(1107993271); +emit_32(3263995904); +emit_32(3263995904); +emit_32(1108925769); +emit_32(3263995904); +emit_32(3263483911); +emit_32(1110019198); +emit_32(3263995904); +emit_32(3262775296); +emit_32(1110818501); +emit_32(3263995904); +emit_32(3261751309); +emit_32(1111233161); +emit_32(3263995904); +emit_32(3260727296); +emit_32(1111683183); +emit_32(3263995904); +emit_32(3259703309); +emit_32(1111981792); +emit_32(3263995904); +emit_32(3258679296); +emit_32(1112340798); +emit_32(3263995904); +emit_32(3257655309); +emit_32(1112786705); +emit_32(3263995904); +emit_32(3256631296); +emit_32(1113283966); +emit_32(3263995904); +emit_32(3255607309); +emit_32(1113555626); +emit_32(3263995904); +emit_32(3254386688); +emit_32(1113825948); +emit_32(3263995904); +emit_32(3252338714); +emit_32(1113819107); +emit_32(3263995904); +emit_32(3250290688); +emit_32(1113630940); +emit_32(3263995904); +emit_32(3248242714); +emit_32(1113321059); +emit_32(3263995904); +emit_32(3245998080); +emit_32(1113733018); +emit_32(3263995904); +emit_32(3241902132); +emit_32(1114113861); +emit_32(3263995904); +emit_32(3237609472); +emit_32(1114143562); +emit_32(3263995904); +emit_32(3229220864); +emit_32(1114322213); +emit_32(3263995904); +emit_32(0); +emit_32(1114472841); +emit_32(3263995904); +emit_32(1081737216); +emit_32(1114412994); +emit_32(3263995904); +emit_32(3279552512); +emit_32(1089045854); +emit_32(3264507911); +emit_32(3279296528); +emit_32(1088278862); +emit_32(3264507911); +emit_32(3279040545); +emit_32(1090412714); +emit_32(3264507911); +emit_32(3278784496); +emit_32(1089711259); +emit_32(3264507911); +emit_32(3278528512); +emit_32(1090927439); +emit_32(3264507911); +emit_32(3278272528); +emit_32(1091410686); +emit_32(3264507911); +emit_32(3278016545); +emit_32(1093437227); +emit_32(3264507911); +emit_32(3277760496); +emit_32(1094926205); +emit_32(3264507911); +emit_32(3277504512); +emit_32(1095460140); +emit_32(3264507911); +emit_32(3277248528); +emit_32(1097105460); +emit_32(3264507911); +emit_32(3276992545); +emit_32(1098968413); +emit_32(3264507911); +emit_32(3276736496); +emit_32(1099353345); +emit_32(3264507911); +emit_32(3276480512); +emit_32(1099813618); +emit_32(3264507911); +emit_32(3276224528); +emit_32(1100320499); +emit_32(3264507911); +emit_32(3275968545); +emit_32(1100493829); +emit_32(3264507911); +emit_32(3275712496); +emit_32(1100473906); +emit_32(3264507911); +emit_32(3275456512); +emit_32(1101401948); +emit_32(3264507911); +emit_32(3275200528); +emit_32(1102298848); +emit_32(3264507911); +emit_32(3274944545); +emit_32(1102989230); +emit_32(3264507911); +emit_32(3274688496); +emit_32(1102648967); +emit_32(3264507911); +emit_32(3274432512); +emit_32(1102203952); +emit_32(3264507911); +emit_32(3274176528); +emit_32(1102020923); +emit_32(3264507911); +emit_32(3273920545); +emit_32(1102482244); +emit_32(3264507911); +emit_32(3273664496); +emit_32(1101949515); +emit_32(3264507911); +emit_32(3273408512); +emit_32(1101712379); +emit_32(3264507911); +emit_32(3273152528); +emit_32(1100957195); +emit_32(3264507911); +emit_32(3272896545); +emit_32(1100760377); +emit_32(3264507911); +emit_32(3272640496); +emit_32(1100597271); +emit_32(3264507911); +emit_32(3272384512); +emit_32(1099567360); +emit_32(3264507911); +emit_32(3272128528); +emit_32(1098669307); +emit_32(3264507911); +emit_32(3271872545); +emit_32(1098076022); +emit_32(3264507911); +emit_32(3271616496); +emit_32(1097956485); +emit_32(3264507911); +emit_32(3271163904); +emit_32(1098180565); +emit_32(3264507911); +emit_32(3270651937); +emit_32(1097980812); +emit_32(3264507911); +emit_32(3270139970); +emit_32(1098969042); +emit_32(3264507911); +emit_32(3269627871); +emit_32(1099581411); +emit_32(3264507911); +emit_32(3269115904); +emit_32(1099345900); +emit_32(3264507911); +emit_32(3268603937); +emit_32(1099778595); +emit_32(3264507911); +emit_32(3268091970); +emit_32(1100042784); +emit_32(3264507911); +emit_32(3267579911); +emit_32(1100446643); +emit_32(3264507911); +emit_32(3267067904); +emit_32(1101589486); +emit_32(3264507911); +emit_32(3266555911); +emit_32(1103063522); +emit_32(3264507911); +emit_32(3266043904); +emit_32(1104431599); +emit_32(3264507911); +emit_32(3265531911); +emit_32(1106038332); +emit_32(3264507911); +emit_32(3265019904); +emit_32(1107210011); +emit_32(3264507911); +emit_32(3264507911); +emit_32(1107970254); +emit_32(3264507911); +emit_32(3263995904); +emit_32(1108769794); +emit_32(3264507911); +emit_32(3263483911); +emit_32(1109911929); +emit_32(3264507911); +emit_32(3262775296); +emit_32(1110640427); +emit_32(3264507911); +emit_32(3261751309); +emit_32(1111295551); +emit_32(3264507911); +emit_32(3260727296); +emit_32(1111699227); +emit_32(3264507911); +emit_32(3259703309); +emit_32(1112037130); +emit_32(3264507911); +emit_32(3258679296); +emit_32(1112388927); +emit_32(3264507911); +emit_32(3257655309); +emit_32(1112777766); +emit_32(3264507911); +emit_32(3256631296); +emit_32(1112967610); +emit_32(3264507911); +emit_32(3255607309); +emit_32(1113472080); +emit_32(3264507911); +emit_32(3254386688); +emit_32(1113707171); +emit_32(3264507911); +emit_32(3252338714); +emit_32(1113542073); +emit_32(3264507911); +emit_32(3250290688); +emit_32(1113390370); +emit_32(3264507911); +emit_32(3248242714); +emit_32(1113303574); +emit_32(3264507911); +emit_32(3245998080); +emit_32(1113650705); +emit_32(3264507911); +emit_32(3241902132); +emit_32(1114040330); +emit_32(3264507911); +emit_32(3237609472); +emit_32(1114029556); +emit_32(3264507911); +emit_32(3229220864); +emit_32(1113975580); +emit_32(3264507911); +emit_32(0); +emit_32(1113691390); +emit_32(3264507911); +emit_32(1081737216); +emit_32(1113723162); +emit_32(3264507911); +emit_32(3279552512); +emit_32(1091448267); +emit_32(3265019904); +emit_32(3279296528); +emit_32(1090852236); +emit_32(3265019904); +emit_32(3279040545); +emit_32(1091224616); +emit_32(3265019904); +emit_32(3278784496); +emit_32(1092115172); +emit_32(3265019904); +emit_32(3278528512); +emit_32(1092387560); +emit_32(3265019904); +emit_32(3278272528); +emit_32(1093982696); +emit_32(3265019904); +emit_32(3278016545); +emit_32(1095925288); +emit_32(3265019904); +emit_32(3277760496); +emit_32(1097267780); +emit_32(3265019904); +emit_32(3277504512); +emit_32(1098458962); +emit_32(3265019904); +emit_32(3277248528); +emit_32(1097176554); +emit_32(3265019904); +emit_32(3276992545); +emit_32(1098529427); +emit_32(3265019904); +emit_32(3276736496); +emit_32(1099386480); +emit_32(3265019904); +emit_32(3276480512); +emit_32(1100029729); +emit_32(3265019904); +emit_32(3276224528); +emit_32(1100574360); +emit_32(3265019904); +emit_32(3275968545); +emit_32(1100451571); +emit_32(3265019904); +emit_32(3275712496); +emit_32(1100757808); +emit_32(3265019904); +emit_32(3275456512); +emit_32(1101452909); +emit_32(3265019904); +emit_32(3275200528); +emit_32(1102452412); +emit_32(3265019904); +emit_32(3274944545); +emit_32(1102489269); +emit_32(3265019904); +emit_32(3274688496); +emit_32(1101956383); +emit_32(3265019904); +emit_32(3274432512); +emit_32(1102164106); +emit_32(3265019904); +emit_32(3274176528); +emit_32(1102017829); +emit_32(3265019904); +emit_32(3273920545); +emit_32(1101687633); +emit_32(3265019904); +emit_32(3273664496); +emit_32(1101190398); +emit_32(3265019904); +emit_32(3273408512); +emit_32(1100930771); +emit_32(3265019904); +emit_32(3273152528); +emit_32(1099875379); +emit_32(3265019904); +emit_32(3272896545); +emit_32(1099988363); +emit_32(3265019904); +emit_32(3272640496); +emit_32(1099466749); +emit_32(3265019904); +emit_32(3272384512); +emit_32(1099025927); +emit_32(3265019904); +emit_32(3272128528); +emit_32(1097133667); +emit_32(3265019904); +emit_32(3271872545); +emit_32(1096125042); +emit_32(3265019904); +emit_32(3271616496); +emit_32(1097217448); +emit_32(3265019904); +emit_32(3271163904); +emit_32(1097530343); +emit_32(3265019904); +emit_32(3270651937); +emit_32(1097021365); +emit_32(3265019904); +emit_32(3270139970); +emit_32(1098337432); +emit_32(3265019904); +emit_32(3269627871); +emit_32(1099231186); +emit_32(3265019904); +emit_32(3269115904); +emit_32(1099058066); +emit_32(3265019904); +emit_32(3268603937); +emit_32(1098845363); +emit_32(3265019904); +emit_32(3268091970); +emit_32(1099724436); +emit_32(3265019904); +emit_32(3267579911); +emit_32(1100562825); +emit_32(3265019904); +emit_32(3267067904); +emit_32(1101564635); +emit_32(3265019904); +emit_32(3266555911); +emit_32(1102663280); +emit_32(3265019904); +emit_32(3266043904); +emit_32(1103783055); +emit_32(3265019904); +emit_32(3265531911); +emit_32(1105695185); +emit_32(3265019904); +emit_32(3265019904); +emit_32(1107222541); +emit_32(3265019904); +emit_32(3264507911); +emit_32(1108142824); +emit_32(3265019904); +emit_32(3263995904); +emit_32(1108595363); +emit_32(3265019904); +emit_32(3263483911); +emit_32(1109574812); +emit_32(3265019904); +emit_32(3262775296); +emit_32(1110596754); +emit_32(3265019904); +emit_32(3261751309); +emit_32(1111223304); +emit_32(3265019904); +emit_32(3260727296); +emit_32(1111571117); +emit_32(3265019904); +emit_32(3259703309); +emit_32(1111962445); +emit_32(3265019904); +emit_32(3258679296); +emit_32(1112404944); +emit_32(3265019904); +emit_32(3257655309); +emit_32(1112735429); +emit_32(3265019904); +emit_32(3256631296); +emit_32(1112827337); +emit_32(3265019904); +emit_32(3255607309); +emit_32(1113233949); +emit_32(3265019904); +emit_32(3254386688); +emit_32(1113414513); +emit_32(3265019904); +emit_32(3252338714); +emit_32(1113420150); +emit_32(3265019904); +emit_32(3250290688); +emit_32(1113163904); +emit_32(3265019904); +emit_32(3248242714); +emit_32(1113052807); +emit_32(3265019904); +emit_32(3245998080); +emit_32(1113343787); +emit_32(3265019904); +emit_32(3241902132); +emit_32(1113698599); +emit_32(3265019904); +emit_32(3237609472); +emit_32(1113628816); +emit_32(3265019904); +emit_32(3229220864); +emit_32(1113662187); +emit_32(3265019904); +emit_32(0); +emit_32(1113260242); +emit_32(3265019904); +emit_32(1081737216); +emit_32(1113178820); +emit_32(3265019904); +emit_32(3279552512); +emit_32(1093438171); +emit_32(3265531911); +emit_32(3279296528); +emit_32(1092747788); +emit_32(3265531911); +emit_32(3279040545); +emit_32(1093310454); +emit_32(3265531911); +emit_32(3278784496); +emit_32(1094102234); +emit_32(3265531911); +emit_32(3278528512); +emit_32(1095034523); +emit_32(3265531911); +emit_32(3278272528); +emit_32(1096277295); +emit_32(3265531911); +emit_32(3278016545); +emit_32(1097766063); +emit_32(3265531911); +emit_32(3277760496); +emit_32(1099194067); +emit_32(3265531911); +emit_32(3277504512); +emit_32(1099628649); +emit_32(3265531911); +emit_32(3277248528); +emit_32(1099258973); +emit_32(3265531911); +emit_32(3276992545); +emit_32(1098472174); +emit_32(3265531911); +emit_32(3276736496); +emit_32(1099274020); +emit_32(3265531911); +emit_32(3276480512); +emit_32(1099770049); +emit_32(3265531911); +emit_32(3276224528); +emit_32(1100217110); +emit_32(3265531911); +emit_32(3275968545); +emit_32(1099973526); +emit_32(3265531911); +emit_32(3275712496); +emit_32(1100572682); +emit_32(3265531911); +emit_32(3275456512); +emit_32(1101377883); +emit_32(3265531911); +emit_32(3275200528); +emit_32(1101817027); +emit_32(3265531911); +emit_32(3274944545); +emit_32(1101419407); +emit_32(3265531911); +emit_32(3274688496); +emit_32(1101366087); +emit_32(3265531911); +emit_32(3274432512); +emit_32(1101862955); +emit_32(3265531911); +emit_32(3274176528); +emit_32(1101888854); +emit_32(3265531911); +emit_32(3273920545); +emit_32(1101226888); +emit_32(3265531911); +emit_32(3273664496); +emit_32(1100713768); +emit_32(3265531911); +emit_32(3273408512); +emit_32(1099889010); +emit_32(3265531911); +emit_32(3273152528); +emit_32(1098959238); +emit_32(3265531911); +emit_32(3272896545); +emit_32(1098971873); +emit_32(3265531911); +emit_32(3272640496); +emit_32(1098173750); +emit_32(3265531911); +emit_32(3272384512); +emit_32(1096822345); +emit_32(3265531911); +emit_32(3272128528); +emit_32(1095460769); +emit_32(3265531911); +emit_32(3271872545); +emit_32(1095939654); +emit_32(3265531911); +emit_32(3271616496); +emit_32(1096979107); +emit_32(3265531911); +emit_32(3271163904); +emit_32(1096816787); +emit_32(3265531911); +emit_32(3270651937); +emit_32(1096356567); +emit_32(3265531911); +emit_32(3270139970); +emit_32(1097648308); +emit_32(3265531911); +emit_32(3269627871); +emit_32(1098574096); +emit_32(3265531911); +emit_32(3269115904); +emit_32(1097968858); +emit_32(3265531911); +emit_32(3268603937); +emit_32(1098365115); +emit_32(3265531911); +emit_32(3268091970); +emit_32(1099546126); +emit_32(3265531911); +emit_32(3267579911); +emit_32(1100574569); +emit_32(3265531911); +emit_32(3267067904); +emit_32(1101687475); +emit_32(3265531911); +emit_32(3266555911); +emit_32(1102052380); +emit_32(3265531911); +emit_32(3266043904); +emit_32(1103313292); +emit_32(3265531911); +emit_32(3265531911); +emit_32(1105621785); +emit_32(3265531911); +emit_32(3265019904); +emit_32(1107169169); +emit_32(3265531911); +emit_32(3264507911); +emit_32(1107983021); +emit_32(3265531911); +emit_32(3263995904); +emit_32(1108610777); +emit_32(3265531911); +emit_32(3263483911); +emit_32(1109287292); +emit_32(3265531911); +emit_32(3262775296); +emit_32(1110292405); +emit_32(3265531911); +emit_32(3261751309); +emit_32(1110956075); +emit_32(3265531911); +emit_32(3260727296); +emit_32(1111332749); +emit_32(3265531911); +emit_32(3259703309); +emit_32(1111901392); +emit_32(3265531911); +emit_32(3258679296); +emit_32(1112404473); +emit_32(3265531911); +emit_32(3257655309); +emit_32(1112625041); +emit_32(3265531911); +emit_32(3256631296); +emit_32(1112715716); +emit_32(3265531911); +emit_32(3255607309); +emit_32(1112946875); +emit_32(3265531911); +emit_32(3254386688); +emit_32(1113184299); +emit_32(3265531911); +emit_32(3252338714); +emit_32(1112883882); +emit_32(3265531911); +emit_32(3250290688); +emit_32(1112791607); +emit_32(3265531911); +emit_32(3248242714); +emit_32(1112621633); +emit_32(3265531911); +emit_32(3245998080); +emit_32(1113008138); +emit_32(3265531911); +emit_32(3241902132); +emit_32(1113167285); +emit_32(3265531911); +emit_32(3237609472); +emit_32(1113124399); +emit_32(3265531911); +emit_32(3229220864); +emit_32(1112977362); +emit_32(3265531911); +emit_32(0); +emit_32(1112766703); +emit_32(3265531911); +emit_32(1081737216); +emit_32(1112525767); +emit_32(3265531911); +emit_32(3279552512); +emit_32(1095002332); +emit_32(3266043904); +emit_32(3279296528); +emit_32(1094609640); +emit_32(3266043904); +emit_32(3279040545); +emit_32(1096233255); +emit_32(3266043904); +emit_32(3278784496); +emit_32(1097215037); +emit_32(3266043904); +emit_32(3278528512); +emit_32(1097707028); +emit_32(3266043904); +emit_32(3278272528); +emit_32(1098213910); +emit_32(3266043904); +emit_32(3278016545); +emit_32(1099607939); +emit_32(3266043904); +emit_32(3277760496); +emit_32(1100328888); +emit_32(3266043904); +emit_32(3277504512); +emit_32(1099961205); +emit_32(3266043904); +emit_32(3277248528); +emit_32(1099657799); +emit_32(3266043904); +emit_32(3276992545); +emit_32(1099461558); +emit_32(3266043904); +emit_32(3276736496); +emit_32(1099119408); +emit_32(3266043904); +emit_32(3276480512); +emit_32(1099612763); +emit_32(3266043904); +emit_32(3276224528); +emit_32(1099736862); +emit_32(3266043904); +emit_32(3275968545); +emit_32(1099825729); +emit_32(3266043904); +emit_32(3275712496); +emit_32(1100371460); +emit_32(3266043904); +emit_32(3275456512); +emit_32(1100899051); +emit_32(3266043904); +emit_32(3275200528); +emit_32(1100798702); +emit_32(3266043904); +emit_32(3274944545); +emit_32(1100553703); +emit_32(3266043904); +emit_32(3274688496); +emit_32(1100490159); +emit_32(3266043904); +emit_32(3274432512); +emit_32(1100873309); +emit_32(3266043904); +emit_32(3274176528); +emit_32(1100817524); +emit_32(3266043904); +emit_32(3273920545); +emit_32(1100275568); +emit_32(3266043904); +emit_32(3273664496); +emit_32(1100060977); +emit_32(3266043904); +emit_32(3273408512); +emit_32(1099264636); +emit_32(3266043904); +emit_32(3273152528); +emit_32(1097887279); +emit_32(3266043904); +emit_32(3272896545); +emit_32(1096157548); +emit_32(3266043904); +emit_32(3272640496); +emit_32(1095486249); +emit_32(3266043904); +emit_32(3272384512); +emit_32(1094979368); +emit_32(3266043904); +emit_32(3272128528); +emit_32(1095398693); +emit_32(3266043904); +emit_32(3271872545); +emit_32(1095531024); +emit_32(3266043904); +emit_32(3271616496); +emit_32(1095980968); +emit_32(3266043904); +emit_32(3271163904); +emit_32(1095589534); +emit_32(3266043904); +emit_32(3270651937); +emit_32(1095288383); +emit_32(3266043904); +emit_32(3270139970); +emit_32(1096315044); +emit_32(3266043904); +emit_32(3269627871); +emit_32(1096326788); +emit_32(3266043904); +emit_32(3269115904); +emit_32(1096402705); +emit_32(3266043904); +emit_32(3268603937); +emit_32(1097546911); +emit_32(3266043904); +emit_32(3268091970); +emit_32(1099249798); +emit_32(3266043904); +emit_32(3267579911); +emit_32(1099942016); +emit_32(3266043904); +emit_32(3267067904); +emit_32(1100913469); +emit_32(3266043904); +emit_32(3266555911); +emit_32(1101943433); +emit_32(3266043904); +emit_32(3266043904); +emit_32(1102787536); +emit_32(3266043904); +emit_32(3265531911); +emit_32(1104904507); +emit_32(3266043904); +emit_32(3265019904); +emit_32(1106333873); +emit_32(3266043904); +emit_32(3264507911); +emit_32(1107759779); +emit_32(3266043904); +emit_32(3263995904); +emit_32(1108391467); +emit_32(3266043904); +emit_32(3263483911); +emit_32(1108904981); +emit_32(3266043904); +emit_32(3262775296); +emit_32(1109806757); +emit_32(3266043904); +emit_32(3261751309); +emit_32(1110385151); +emit_32(3266043904); +emit_32(3260727296); +emit_32(1110931145); +emit_32(3266043904); +emit_32(3259703309); +emit_32(1111641319); +emit_32(3266043904); +emit_32(3258679296); +emit_32(1112124634); +emit_32(3266043904); +emit_32(3257655309); +emit_32(1112283257); +emit_32(3266043904); +emit_32(3256631296); +emit_32(1112339618); +emit_32(3266043904); +emit_32(3255607309); +emit_32(1112509383); +emit_32(3266043904); +emit_32(3254386688); +emit_32(1112776009); +emit_32(3266043904); +emit_32(3252338714); +emit_32(1112680825); +emit_32(3266043904); +emit_32(3250290688); +emit_32(1112625539); +emit_32(3266043904); +emit_32(3248242714); +emit_32(1112693513); +emit_32(3266043904); +emit_32(3245998080); +emit_32(1112618644); +emit_32(3266043904); +emit_32(3241902132); +emit_32(1112571616); +emit_32(3266043904); +emit_32(3237609472); +emit_32(1112555074); +emit_32(3266043904); +emit_32(3229220864); +emit_32(1112282576); +emit_32(3266043904); +emit_32(0); +emit_32(1112161675); +emit_32(3266043904); +emit_32(1081737216); +emit_32(1112016683); +emit_32(3266043904); +emit_32(3279552512); +emit_32(1096435525); +emit_32(3266555911); +emit_32(3279296528); +emit_32(1097116575); +emit_32(3266555911); +emit_32(3279040545); +emit_32(1098870633); +emit_32(3266555911); +emit_32(3278784496); +emit_32(1099498730); +emit_32(3266555911); +emit_32(3278528512); +emit_32(1099914596); +emit_32(3266555911); +emit_32(3278272528); +emit_32(1099951872); +emit_32(3266555911); +emit_32(3278016545); +emit_32(1100659976); +emit_32(3266555911); +emit_32(3277760496); +emit_32(1101078253); +emit_32(3266555911); +emit_32(3277504512); +emit_32(1100635177); +emit_32(3266555911); +emit_32(3277248528); +emit_32(1100013948); +emit_32(3266555911); +emit_32(3276992545); +emit_32(1099614650); +emit_32(3266555911); +emit_32(3276736496); +emit_32(1099488402); +emit_32(3266555911); +emit_32(3276480512); +emit_32(1099820591); +emit_32(3266555911); +emit_32(3276224528); +emit_32(1099553833); +emit_32(3266555911); +emit_32(3275968545); +emit_32(1099782999); +emit_32(3266555911); +emit_32(3275712496); +emit_32(1100398566); +emit_32(3266555911); +emit_32(3275456512); +emit_32(1100575303); +emit_32(3266555911); +emit_32(3275200528); +emit_32(1100289986); +emit_32(3266555911); +emit_32(3274944545); +emit_32(1099602382); +emit_32(3266555911); +emit_32(3274688496); +emit_32(1099733506); +emit_32(3266555911); +emit_32(3274432512); +emit_32(1100008915); +emit_32(3266555911); +emit_32(3274176528); +emit_32(1100003777); +emit_32(3266555911); +emit_32(3273920545); +emit_32(1099179753); +emit_32(3266555911); +emit_32(3273664496); +emit_32(1098406953); +emit_32(3266555911); +emit_32(3273408512); +emit_32(1097223320); +emit_32(3266555911); +emit_32(3273152528); +emit_32(1096202217); +emit_32(3266555911); +emit_32(3272896545); +emit_32(1095613442); +emit_32(3266555911); +emit_32(3272640496); +emit_32(1095615539); +emit_32(3266555911); +emit_32(3272384512); +emit_32(1095008728); +emit_32(3266555911); +emit_32(3272128528); +emit_32(1095144623); +emit_32(3266555911); +emit_32(3271872545); +emit_32(1095756572); +emit_32(3266555911); +emit_32(3271616496); +emit_32(1094683564); +emit_32(3266555911); +emit_32(3271163904); +emit_32(1094540119); +emit_32(3266555911); +emit_32(3270651937); +emit_32(1094978843); +emit_32(3266555911); +emit_32(3270139970); +emit_32(1095340707); +emit_32(3266555911); +emit_32(3269627871); +emit_32(1095981597); +emit_32(3266555911); +emit_32(3269115904); +emit_32(1096517838); +emit_32(3266555911); +emit_32(3268603937); +emit_32(1096669463); +emit_32(3266555911); +emit_32(3268091970); +emit_32(1097720555); +emit_32(3266555911); +emit_32(3267579911); +emit_32(1098962122); +emit_32(3266555911); +emit_32(3267067904); +emit_32(1099956067); +emit_32(3266555911); +emit_32(3266555911); +emit_32(1101017750); +emit_32(3266555911); +emit_32(3266043904); +emit_32(1102473436); +emit_32(3266555911); +emit_32(3265531911); +emit_32(1104059040); +emit_32(3266555911); +emit_32(3265019904); +emit_32(1105738491); +emit_32(3266555911); +emit_32(3264507911); +emit_32(1107208438); +emit_32(3266555911); +emit_32(3263995904); +emit_32(1107891008); +emit_32(3266555911); +emit_32(3263483911); +emit_32(1108674504); +emit_32(3266555911); +emit_32(3262775296); +emit_32(1109604067); +emit_32(3266555911); +emit_32(3261751309); +emit_32(1110189120); +emit_32(3266555911); +emit_32(3260727296); +emit_32(1110577670); +emit_32(3266555911); +emit_32(3259703309); +emit_32(1111354953); +emit_32(3266555911); +emit_32(3258679296); +emit_32(1111734537); +emit_32(3266555911); +emit_32(3257655309); +emit_32(1111705518); +emit_32(3266555911); +emit_32(3256631296); +emit_32(1111723527); +emit_32(3266555911); +emit_32(3255607309); +emit_32(1112027955); +emit_32(3266555911); +emit_32(3254386688); +emit_32(1112257410); +emit_32(3266555911); +emit_32(3252338714); +emit_32(1112640297); +emit_32(3266555911); +emit_32(3250290688); +emit_32(1112609967); +emit_32(3266555911); +emit_32(3248242714); +emit_32(1112557696); +emit_32(3266555911); +emit_32(3245998080); +emit_32(1112351231); +emit_32(3266555911); +emit_32(3241902132); +emit_32(1112040774); +emit_32(3266555911); +emit_32(3237609472); +emit_32(1111912900); +emit_32(3266555911); +emit_32(3229220864); +emit_32(1111694639); +emit_32(3266555911); +emit_32(0); +emit_32(1111678858); +emit_32(3266555911); +emit_32(1081737216); +emit_32(1111401326); +emit_32(3266555911); +emit_32(3279552512); +emit_32(1098118070); +emit_32(3267067904); +emit_32(3279296528); +emit_32(1099747453); +emit_32(3267067904); +emit_32(3279040545); +emit_32(1100611269); +emit_32(3267067904); +emit_32(3278784496); +emit_32(1101443210); +emit_32(3267067904); +emit_32(3278528512); +emit_32(1101232603); +emit_32(3267067904); +emit_32(3278272528); +emit_32(1101611506); +emit_32(3267067904); +emit_32(3278016545); +emit_32(1101693243); +emit_32(3267067904); +emit_32(3277760496); +emit_32(1101466016); +emit_32(3267067904); +emit_32(3277504512); +emit_32(1101285137); +emit_32(3267067904); +emit_32(3277248528); +emit_32(1100667106); +emit_32(3267067904); +emit_32(3276992545); +emit_32(1100084308); +emit_32(3267067904); +emit_32(3276736496); +emit_32(1099746194); +emit_32(3267067904); +emit_32(3276480512); +emit_32(1099973840); +emit_32(3267067904); +emit_32(3276224528); +emit_32(1099985637); +emit_32(3267067904); +emit_32(3275968545); +emit_32(1099784782); +emit_32(3267067904); +emit_32(3275712496); +emit_32(1100330146); +emit_32(3267067904); +emit_32(3275456512); +emit_32(1100180200); +emit_32(3267067904); +emit_32(3275200528); +emit_32(1099997118); +emit_32(3267067904); +emit_32(3274944545); +emit_32(1099326240); +emit_32(3267067904); +emit_32(3274688496); +emit_32(1099003435); +emit_32(3267067904); +emit_32(3274432512); +emit_32(1099218918); +emit_32(3267067904); +emit_32(3274176528); +emit_32(1098944243); +emit_32(3267067904); +emit_32(3273920545); +emit_32(1097839464); +emit_32(3267067904); +emit_32(3273664496); +emit_32(1095942065); +emit_32(3267067904); +emit_32(3273408512); +emit_32(1094895587); +emit_32(3267067904); +emit_32(3273152528); +emit_32(1094953468); +emit_32(3267067904); +emit_32(3272896545); +emit_32(1095007260); +emit_32(3267067904); +emit_32(3272640496); +emit_32(1095264895); +emit_32(3267067904); +emit_32(3272384512); +emit_32(1094611422); +emit_32(3267067904); +emit_32(3272128528); +emit_32(1095079402); +emit_32(3267067904); +emit_32(3271872545); +emit_32(1094441973); +emit_32(3267067904); +emit_32(3271616496); +emit_32(1094236766); +emit_32(3267067904); +emit_32(3271163904); +emit_32(1094323798); +emit_32(3267067904); +emit_32(3270651937); +emit_32(1094165987); +emit_32(3267067904); +emit_32(3270139970); +emit_32(1094226805); +emit_32(3267067904); +emit_32(3269627871); +emit_32(1094579336); +emit_32(3267067904); +emit_32(3269115904); +emit_32(1095352975); +emit_32(3267067904); +emit_32(3268603937); +emit_32(1095436757); +emit_32(3267067904); +emit_32(3268091970); +emit_32(1095935879); +emit_32(3267067904); +emit_32(3267579911); +emit_32(1097439012); +emit_32(3267067904); +emit_32(3267067904); +emit_32(1099223007); +emit_32(3267067904); +emit_32(3266555911); +emit_32(1100974863); +emit_32(3267067904); +emit_32(3266043904); +emit_32(1102518734); +emit_32(3267067904); +emit_32(3265531911); +emit_32(1104318772); +emit_32(3267067904); +emit_32(3265019904); +emit_32(1105646112); +emit_32(3267067904); +emit_32(3264507911); +emit_32(1106403341); +emit_32(3267067904); +emit_32(3263995904); +emit_32(1107600264); +emit_32(3267067904); +emit_32(3263483911); +emit_32(1108414248); +emit_32(3267067904); +emit_32(3262775296); +emit_32(1109181543); +emit_32(3267067904); +emit_32(3261751309); +emit_32(1109764892); +emit_32(3267067904); +emit_32(3260727296); +emit_32(1110292536); +emit_32(3267067904); +emit_32(3259703309); +emit_32(1110846682); +emit_32(3267067904); +emit_32(3258679296); +emit_32(1111130925); +emit_32(3267067904); +emit_32(3257655309); +emit_32(1111171793); +emit_32(3267067904); +emit_32(3256631296); +emit_32(1111317938); +emit_32(3267067904); +emit_32(3255607309); +emit_32(1111635762); +emit_32(3267067904); +emit_32(3254386688); +emit_32(1112164637); +emit_32(3267067904); +emit_32(3252338714); +emit_32(1112290938); +emit_32(3267067904); +emit_32(3250290688); +emit_32(1112478450); +emit_32(3267067904); +emit_32(3248242714); +emit_32(1112372360); +emit_32(3267067904); +emit_32(3245998080); +emit_32(1111917566); +emit_32(3267067904); +emit_32(3241902132); +emit_32(1112023289); +emit_32(3267067904); +emit_32(3237609472); +emit_32(1111655422); +emit_32(3267067904); +emit_32(3229220864); +emit_32(1111168988); +emit_32(3267067904); +emit_32(0); +emit_32(1110861231); +emit_32(3267067904); +emit_32(1081737216); +emit_32(1110813757); +emit_32(3267067904); +emit_32(3279552512); +emit_32(1100220360); +emit_32(3267579911); +emit_32(3279296528); +emit_32(1101067662); +emit_32(3267579911); +emit_32(3279040545); +emit_32(1102439514); +emit_32(3267579911); +emit_32(3278784496); +emit_32(1103265006); +emit_32(3267579911); +emit_32(3278528512); +emit_32(1103236799); +emit_32(3267579911); +emit_32(3278272528); +emit_32(1103276120); +emit_32(3267579911); +emit_32(3278016545); +emit_32(1103285505); +emit_32(3267579911); +emit_32(3277760496); +emit_32(1102760850); +emit_32(3267579911); +emit_32(3277504512); +emit_32(1101931584); +emit_32(3267579911); +emit_32(3277248528); +emit_32(1101349415); +emit_32(3267579911); +emit_32(3276992545); +emit_32(1100402341); +emit_32(3267579911); +emit_32(3276736496); +emit_32(1100027265); +emit_32(3267579911); +emit_32(3276480512); +emit_32(1100259525); +emit_32(3267579911); +emit_32(3276224528); +emit_32(1100063651); +emit_32(3267579911); +emit_32(3275968545); +emit_32(1099648782); +emit_32(3267579911); +emit_32(3275712496); +emit_32(1100276302); +emit_32(3267579911); +emit_32(3275456512); +emit_32(1100001260); +emit_32(3267579911); +emit_32(3275200528); +emit_32(1099604217); +emit_32(3267579911); +emit_32(3274944545); +emit_32(1099253678); +emit_32(3267579911); +emit_32(3274688496); +emit_32(1098028836); +emit_32(3267579911); +emit_32(3274432512); +emit_32(1097094660); +emit_32(3267579911); +emit_32(3274176528); +emit_32(1096265341); +emit_32(3267579911); +emit_32(3273920545); +emit_32(1095381601); +emit_32(3267579911); +emit_32(3273664496); +emit_32(1094132852); +emit_32(3267579911); +emit_32(3273408512); +emit_32(1094233411); +emit_32(3267579911); +emit_32(3273152528); +emit_32(1094498386); +emit_32(3267579911); +emit_32(3272896545); +emit_32(1093571235); +emit_32(3267579911); +emit_32(3272640496); +emit_32(1093897237); +emit_32(3267579911); +emit_32(3272384512); +emit_32(1093720657); +emit_32(3267579911); +emit_32(3272128528); +emit_32(1094242743); +emit_32(3267579911); +emit_32(3271872545); +emit_32(1094359764); +emit_32(3267579911); +emit_32(3271616496); +emit_32(1093621672); +emit_32(3267579911); +emit_32(3271163904); +emit_32(1093012449); +emit_32(3267579911); +emit_32(3270651937); +emit_32(1092577332); +emit_32(3267579911); +emit_32(3270139970); +emit_32(1093321674); +emit_32(3267579911); +emit_32(3269627871); +emit_32(1093936035); +emit_32(3267579911); +emit_32(3269115904); +emit_32(1093928170); +emit_32(3267579911); +emit_32(3268603937); +emit_32(1094840746); +emit_32(3267579911); +emit_32(3268091970); +emit_32(1094808555); +emit_32(3267579911); +emit_32(3267579911); +emit_32(1096373764); +emit_32(3267579911); +emit_32(3267067904); +emit_32(1099250323); +emit_32(3267579911); +emit_32(3266555911); +emit_32(1100852966); +emit_32(3267579911); +emit_32(3266043904); +emit_32(1102489846); +emit_32(3267579911); +emit_32(3265531911); +emit_32(1104539655); +emit_32(3267579911); +emit_32(3265019904); +emit_32(1105973058); +emit_32(3267579911); +emit_32(3264507911); +emit_32(1106325275); +emit_32(3267579911); +emit_32(3263995904); +emit_32(1107714664); +emit_32(3267579911); +emit_32(3263483911); +emit_32(1108389003); +emit_32(3267579911); +emit_32(3262775296); +emit_32(1108702606); +emit_32(3267579911); +emit_32(3261751309); +emit_32(1109247787); +emit_32(3267579911); +emit_32(3260727296); +emit_32(1109490349); +emit_32(3267579911); +emit_32(3259703309); +emit_32(1110247866); +emit_32(3267579911); +emit_32(3258679296); +emit_32(1110389712); +emit_32(3267579911); +emit_32(3257655309); +emit_32(1110661425); +emit_32(3267579911); +emit_32(3256631296); +emit_32(1111202018); +emit_32(3267579911); +emit_32(3255607309); +emit_32(1111704260); +emit_32(3267579911); +emit_32(3254386688); +emit_32(1112088275); +emit_32(3267579911); +emit_32(3252338714); +emit_32(1111942549); +emit_32(3267579911); +emit_32(3250290688); +emit_32(1111975579); +emit_32(3267579911); +emit_32(3248242714); +emit_32(1111977309); +emit_32(3267579911); +emit_32(3245998080); +emit_32(1111576202); +emit_32(3267579911); +emit_32(3241902132); +emit_32(1111451789); +emit_32(3267579911); +emit_32(3237609472); +emit_32(1111316601); +emit_32(3267579911); +emit_32(3229220864); +emit_32(1111007166); +emit_32(3267579911); +emit_32(0); +emit_32(1110677022); +emit_32(3267579911); +emit_32(1081737216); +emit_32(1110694612); +emit_32(3267579911); +emit_32(3279552512); +emit_32(1101546599); +emit_32(3268091970); +emit_32(3279296528); +emit_32(1102626423); +emit_32(3268091970); +emit_32(3279040545); +emit_32(1103845864); +emit_32(3268091970); +emit_32(3278784496); +emit_32(1104837345); +emit_32(3268091970); +emit_32(3278528512); +emit_32(1104581650); +emit_32(3268091970); +emit_32(3278272528); +emit_32(1104347136); +emit_32(3268091970); +emit_32(3278016545); +emit_32(1104555173); +emit_32(3268091970); +emit_32(3277760496); +emit_32(1103817186); +emit_32(3268091970); +emit_32(3277504512); +emit_32(1102977119); +emit_32(3268091970); +emit_32(3277248528); +emit_32(1101762816); +emit_32(3268091970); +emit_32(3276992545); +emit_32(1100889928); +emit_32(3268091970); +emit_32(3276736496); +emit_32(1100508824); +emit_32(3268091970); +emit_32(3276480512); +emit_32(1100799646); +emit_32(3268091970); +emit_32(3276224528); +emit_32(1100611741); +emit_32(3268091970); +emit_32(3275968545); +emit_32(1099998639); +emit_32(3268091970); +emit_32(3275712496); +emit_32(1099825152); +emit_32(3268091970); +emit_32(3275456512); +emit_32(1099499674); +emit_32(3268091970); +emit_32(3275200528); +emit_32(1099020422); +emit_32(3268091970); +emit_32(3274944545); +emit_32(1098795241); +emit_32(3268091970); +emit_32(3274688496); +emit_32(1097320733); +emit_32(3268091970); +emit_32(3274432512); +emit_32(1096709728); +emit_32(3268091970); +emit_32(3274176528); +emit_32(1095004848); +emit_32(3268091970); +emit_32(3273920545); +emit_32(1094273362); +emit_32(3268091970); +emit_32(3273664496); +emit_32(1094729282); +emit_32(3268091970); +emit_32(3273408512); +emit_32(1094410620); +emit_32(3268091970); +emit_32(3273152528); +emit_32(1093402205); +emit_32(3268091970); +emit_32(3272896545); +emit_32(1092271431); +emit_32(3268091970); +emit_32(3272640496); +emit_32(1092329176); +emit_32(3268091970); +emit_32(3272384512); +emit_32(1092614609); +emit_32(3268091970); +emit_32(3272128528); +emit_32(1093144674); +emit_32(3268091970); +emit_32(3271872545); +emit_32(1093760922); +emit_32(3268091970); +emit_32(3271616496); +emit_32(1093140165); +emit_32(3268091970); +emit_32(3271163904); +emit_32(1091696654); +emit_32(3268091970); +emit_32(3270651937); +emit_32(1090884374); +emit_32(3268091970); +emit_32(3270139970); +emit_32(1091484506); +emit_32(3268091970); +emit_32(3269627871); +emit_32(1092037976); +emit_32(3268091970); +emit_32(3269115904); +emit_32(1093188295); +emit_32(3268091970); +emit_32(3268603937); +emit_32(1093395808); +emit_32(3268091970); +emit_32(3268091970); +emit_32(1094337220); +emit_32(3268091970); +emit_32(3267579911); +emit_32(1097044643); +emit_32(3268091970); +emit_32(3267067904); +emit_32(1099465543); +emit_32(3268091970); +emit_32(3266555911); +emit_32(1101317433); +emit_32(3268091970); +emit_32(3266043904); +emit_32(1102556745); +emit_32(3268091970); +emit_32(3265531911); +emit_32(1104196718); +emit_32(3268091970); +emit_32(3265019904); +emit_32(1105380036); +emit_32(3268091970); +emit_32(3264507911); +emit_32(1106482194); +emit_32(3268091970); +emit_32(3263995904); +emit_32(1107758783); +emit_32(3268091970); +emit_32(3263483911); +emit_32(1108425415); +emit_32(3268091970); +emit_32(3262775296); +emit_32(1108887024); +emit_32(3268091970); +emit_32(3261751309); +emit_32(1109173128); +emit_32(3268091970); +emit_32(3260727296); +emit_32(1109482432); +emit_32(3268091970); +emit_32(3259703309); +emit_32(1109785208); +emit_32(3268091970); +emit_32(3258679296); +emit_32(1110180600); +emit_32(3268091970); +emit_32(3257655309); +emit_32(1110663076); +emit_32(3268091970); +emit_32(3256631296); +emit_32(1111283309); +emit_32(3268091970); +emit_32(3255607309); +emit_32(1111318829); +emit_32(3268091970); +emit_32(3254386688); +emit_32(1111804844); +emit_32(3268091970); +emit_32(3252338714); +emit_32(1111712072); +emit_32(3268091970); +emit_32(3250290688); +emit_32(1111394877); +emit_32(3268091970); +emit_32(3248242714); +emit_32(1111473652); +emit_32(3268091970); +emit_32(3245998080); +emit_32(1111266139); +emit_32(3268091970); +emit_32(3241902132); +emit_32(1110947660); +emit_32(3268091970); +emit_32(3237609472); +emit_32(1111203722); +emit_32(3268091970); +emit_32(3229220864); +emit_32(1110998647); +emit_32(3268091970); +emit_32(0); +emit_32(1110773727); +emit_32(3268091970); +emit_32(1081737216); +emit_32(1110581209); +emit_32(3268091970); +emit_32(3279552512); +emit_32(1103102267); +emit_32(3268603937); +emit_32(3279296528); +emit_32(1104534831); +emit_32(3268603937); +emit_32(3279040545); +emit_32(1105424810); +emit_32(3268603937); +emit_32(3278784496); +emit_32(1105745989); +emit_32(3268603937); +emit_32(3278528512); +emit_32(1105282046); +emit_32(3268603937); +emit_32(3278272528); +emit_32(1105208436); +emit_32(3268603937); +emit_32(3278016545); +emit_32(1104906394); +emit_32(3268603937); +emit_32(3277760496); +emit_32(1104679063); +emit_32(3268603937); +emit_32(3277504512); +emit_32(1103607680); +emit_32(3268603937); +emit_32(3277248528); +emit_32(1102510188); +emit_32(3268603937); +emit_32(3276992545); +emit_32(1101765385); +emit_32(3268603937); +emit_32(3276736496); +emit_32(1101636986); +emit_32(3268603937); +emit_32(3276480512); +emit_32(1101430207); +emit_32(3268603937); +emit_32(3276224528); +emit_32(1101386534); +emit_32(3268603937); +emit_32(3275968545); +emit_32(1100866283); +emit_32(3268603937); +emit_32(3275712496); +emit_32(1100204370); +emit_32(3268603937); +emit_32(3275456512); +emit_32(1099530240); +emit_32(3268603937); +emit_32(3275200528); +emit_32(1098318663); +emit_32(3268603937); +emit_32(3274944545); +emit_32(1096968831); +emit_32(3268603937); +emit_32(3274688496); +emit_32(1096686764); +emit_32(3268603937); +emit_32(3274432512); +emit_32(1095657901); +emit_32(3268603937); +emit_32(3274176528); +emit_32(1093922718); +emit_32(3268603937); +emit_32(3273920545); +emit_32(1093799720); +emit_32(3268603937); +emit_32(3273664496); +emit_32(1093400527); +emit_32(3268603937); +emit_32(3273408512); +emit_32(1094189371); +emit_32(3268603937); +emit_32(3273152528); +emit_32(1093002383); +emit_32(3268603937); +emit_32(3272896545); +emit_32(1092483505); +emit_32(3268603937); +emit_32(3272640496); +emit_32(1092251707); +emit_32(3268603937); +emit_32(3272384512); +emit_32(1090906562); +emit_32(3268603937); +emit_32(3272128528); +emit_32(1091695983); +emit_32(3268603937); +emit_32(3271872545); +emit_32(1092003666); +emit_32(3268603937); +emit_32(3271616496); +emit_32(1091543866); +emit_32(3268603937); +emit_32(3271163904); +emit_32(1090300789); +emit_32(3268603937); +emit_32(3270651937); +emit_32(1088844569); +emit_32(3268603937); +emit_32(3270139970); +emit_32(1087660223); +emit_32(3268603937); +emit_32(3269627871); +emit_32(1090808153); +emit_32(3268603937); +emit_32(3269115904); +emit_32(1090929306); +emit_32(3268603937); +emit_32(3268603937); +emit_32(1092294940); +emit_32(3268603937); +emit_32(3268091970); +emit_32(1094951266); +emit_32(3268603937); +emit_32(3267579911); +emit_32(1098255958); +emit_32(3268603937); +emit_32(3267067904); +emit_32(1100042365); +emit_32(3268603937); +emit_32(3266555911); +emit_32(1101461717); +emit_32(3268603937); +emit_32(3266043904); +emit_32(1102844841); +emit_32(3268603937); +emit_32(3265531911); +emit_32(1103734872); +emit_32(3268603937); +emit_32(3265019904); +emit_32(1105122348); +emit_32(3268603937); +emit_32(3264507911); +emit_32(1106689969); +emit_32(3268603937); +emit_32(3263995904); +emit_32(1107793438); +emit_32(3268603937); +emit_32(3263483911); +emit_32(1108426280); +emit_32(3268603937); +emit_32(3262775296); +emit_32(1108850534); +emit_32(3268603937); +emit_32(3261751309); +emit_32(1109340009); +emit_32(3268603937); +emit_32(3260727296); +emit_32(1109539003); +emit_32(3268603937); +emit_32(3259703309); +emit_32(1109953715); +emit_32(3268603937); +emit_32(3258679296); +emit_32(1110117502); +emit_32(3268603937); +emit_32(3257655309); +emit_32(1110591485); +emit_32(3268603937); +emit_32(3256631296); +emit_32(1111088562); +emit_32(3268603937); +emit_32(3255607309); +emit_32(1111126206); +emit_32(3268603937); +emit_32(3254386688); +emit_32(1111259559); +emit_32(3268603937); +emit_32(3252338714); +emit_32(1111504191); +emit_32(3268603937); +emit_32(3250290688); +emit_32(1111434068); +emit_32(3268603937); +emit_32(3248242714); +emit_32(1111442299); +emit_32(3268603937); +emit_32(3245998080); +emit_32(1111170010); +emit_32(3268603937); +emit_32(3241902132); +emit_32(1110967137); +emit_32(3268603937); +emit_32(3237609472); +emit_32(1111303415); +emit_32(3268603937); +emit_32(3229220864); +emit_32(1111224012); +emit_32(3268603937); +emit_32(0); +emit_32(1110873788); +emit_32(3268603937); +emit_32(1081737216); +emit_32(1110663915); +emit_32(3268603937); +emit_32(3279552512); +emit_32(1104677595); +emit_32(3269115904); +emit_32(3279296528); +emit_32(1105454590); +emit_32(3269115904); +emit_32(3279040545); +emit_32(1106154304); +emit_32(3269115904); +emit_32(3278784496); +emit_32(1106277093); +emit_32(3269115904); +emit_32(3278528512); +emit_32(1105875016); +emit_32(3269115904); +emit_32(3278272528); +emit_32(1106034452); +emit_32(3269115904); +emit_32(3278016545); +emit_32(1105655077); +emit_32(3269115904); +emit_32(3277760496); +emit_32(1104930721); +emit_32(3269115904); +emit_32(3277504512); +emit_32(1104001892); +emit_32(3269115904); +emit_32(3277248528); +emit_32(1103101166); +emit_32(3269115904); +emit_32(3276992545); +emit_32(1102785177); +emit_32(3269115904); +emit_32(3276736496); +emit_32(1102764678); +emit_32(3269115904); +emit_32(3276480512); +emit_32(1102751256); +emit_32(3269115904); +emit_32(3276224528); +emit_32(1102164210); +emit_32(3269115904); +emit_32(3275968545); +emit_32(1101552786); +emit_32(3269115904); +emit_32(3275712496); +emit_32(1101117679); +emit_32(3269115904); +emit_32(3275456512); +emit_32(1100386245); +emit_32(3269115904); +emit_32(3275200528); +emit_32(1099326974); +emit_32(3269115904); +emit_32(3274944545); +emit_32(1098796709); +emit_32(3269115904); +emit_32(3274688496); +emit_32(1097716256); +emit_32(3269115904); +emit_32(3274432512); +emit_32(1095916585); +emit_32(3269115904); +emit_32(3274176528); +emit_32(1095486669); +emit_32(3269115904); +emit_32(3273920545); +emit_32(1093398010); +emit_32(3269115904); +emit_32(3273664496); +emit_32(1092921118); +emit_32(3269115904); +emit_32(3273408512); +emit_32(1092252829); +emit_32(3269115904); +emit_32(3273152528); +emit_32(1092749676); +emit_32(3269115904); +emit_32(3272896545); +emit_32(1092530481); +emit_32(3269115904); +emit_32(3272640496); +emit_32(1091486131); +emit_32(3269115904); +emit_32(3272384512); +emit_32(1090876730); +emit_32(3269115904); +emit_32(3272128528); +emit_32(1090142454); +emit_32(3269115904); +emit_32(3271872545); +emit_32(1088793147); +emit_32(3269115904); +emit_32(3271616496); +emit_32(1089015130); +emit_32(3269115904); +emit_32(3271163904); +emit_32(1088303693); +emit_32(3269115904); +emit_32(3270651937); +emit_32(1087535674); +emit_32(3269115904); +emit_32(3270139970); +emit_32(1085670299); +emit_32(3269115904); +emit_32(3269627871); +emit_32(1085625420); +emit_32(3269115904); +emit_32(3269115904); +emit_32(1088308013); +emit_32(3269115904); +emit_32(3268603937); +emit_32(1092417340); +emit_32(3269115904); +emit_32(3268091970); +emit_32(1095410752); +emit_32(3269115904); +emit_32(3267579911); +emit_32(1098094582); +emit_32(3269115904); +emit_32(3267067904); +emit_32(1100161430); +emit_32(3269115904); +emit_32(3266555911); +emit_32(1101552891); +emit_32(3269115904); +emit_32(3266043904); +emit_32(1102765307); +emit_32(3269115904); +emit_32(3265531911); +emit_32(1103641549); +emit_32(3269115904); +emit_32(3265019904); +emit_32(1105704360); +emit_32(3269115904); +emit_32(3264507911); +emit_32(1107288811); +emit_32(3269115904); +emit_32(3263995904); +emit_32(1107972981); +emit_32(3269115904); +emit_32(3263483911); +emit_32(1108646167); +emit_32(3269115904); +emit_32(3262775296); +emit_32(1109009918); +emit_32(3269115904); +emit_32(3261751309); +emit_32(1109314581); +emit_32(3269115904); +emit_32(3260727296); +emit_32(1109742427); +emit_32(3269115904); +emit_32(3259703309); +emit_32(1110003653); +emit_32(3269115904); +emit_32(3258679296); +emit_32(1110284435); +emit_32(3269115904); +emit_32(3257655309); +emit_32(1110677153); +emit_32(3269115904); +emit_32(3256631296); +emit_32(1111084630); +emit_32(3269115904); +emit_32(3255607309); +emit_32(1111141489); +emit_32(3269115904); +emit_32(3254386688); +emit_32(1111299090); +emit_32(3269115904); +emit_32(3252338714); +emit_32(1111545138); +emit_32(3269115904); +emit_32(3250290688); +emit_32(1111299378); +emit_32(3269115904); +emit_32(3248242714); +emit_32(1111477977); +emit_32(3269115904); +emit_32(3245998080); +emit_32(1111335580); +emit_32(3269115904); +emit_32(3241902132); +emit_32(1111332776); +emit_32(3269115904); +emit_32(3237609472); +emit_32(1111510640); +emit_32(3269115904); +emit_32(3229220864); +emit_32(1111358806); +emit_32(3269115904); +emit_32(0); +emit_32(1111013904); +emit_32(3269115904); +emit_32(1081737216); +emit_32(1110808645); +emit_32(3269115904); +emit_32(3279552512); +emit_32(1105473988); +emit_32(3269627871); +emit_32(3279296528); +emit_32(1106406644); +emit_32(3269627871); +emit_32(3279040545); +emit_32(1106900052); +emit_32(3269627871); +emit_32(3278784496); +emit_32(1106631983); +emit_32(3269627871); +emit_32(3278528512); +emit_32(1106899527); +emit_32(3269627871); +emit_32(3278272528); +emit_32(1107077575); +emit_32(3269627871); +emit_32(3278016545); +emit_32(1106405386); +emit_32(3269627871); +emit_32(3277760496); +emit_32(1105322207); +emit_32(3269627871); +emit_32(3277504512); +emit_32(1104051752); +emit_32(3269627871); +emit_32(3277248528); +emit_32(1103820331); +emit_32(3269627871); +emit_32(3276992545); +emit_32(1103544189); +emit_32(3269627871); +emit_32(3276736496); +emit_32(1104020714); +emit_32(3269627871); +emit_32(3276480512); +emit_32(1104151629); +emit_32(3269627871); +emit_32(3276224528); +emit_32(1103575069); +emit_32(3269627871); +emit_32(3275968545); +emit_32(1102962911); +emit_32(3269627871); +emit_32(3275712496); +emit_32(1102032824); +emit_32(3269627871); +emit_32(3275456512); +emit_32(1101115320); +emit_32(3269627871); +emit_32(3275200528); +emit_32(1100461113); +emit_32(3269627871); +emit_32(3274944545); +emit_32(1099847644); +emit_32(3269627871); +emit_32(3274688496); +emit_32(1099097702); +emit_32(3269627871); +emit_32(3274432512); +emit_32(1097494692); +emit_32(3269627871); +emit_32(3274176528); +emit_32(1096228851); +emit_32(3269627871); +emit_32(3273920545); +emit_32(1094225966); +emit_32(3269627871); +emit_32(3273664496); +emit_32(1093095391); +emit_32(3269627871); +emit_32(3273408512); +emit_32(1092478294); +emit_32(3269627871); +emit_32(3273152528); +emit_32(1092368508); +emit_32(3269627871); +emit_32(3272896545); +emit_32(1091995425); +emit_32(3269627871); +emit_32(3272640496); +emit_32(1090918526); +emit_32(3269627871); +emit_32(3272384512); +emit_32(1090551315); +emit_32(3269627871); +emit_32(3272128528); +emit_32(1089373156); +emit_32(3269627871); +emit_32(3271872545); +emit_32(1087003689); +emit_32(3269627871); +emit_32(3271616496); +emit_32(1086132763); +emit_32(3269627871); +emit_32(3271163904); +emit_32(1085152973); +emit_32(3269627871); +emit_32(3270651937); +emit_32(1085347149); +emit_32(3269627871); +emit_32(3270139970); +emit_32(1084963286); +emit_32(3269627871); +emit_32(3269627871); +emit_32(1086623454); +emit_32(3269627871); +emit_32(3269115904); +emit_32(1089942512); +emit_32(3269627871); +emit_32(3268603937); +emit_32(1092605381); +emit_32(3269627871); +emit_32(3268091970); +emit_32(1095649093); +emit_32(3269627871); +emit_32(3267579911); +emit_32(1098551656); +emit_32(3269627871); +emit_32(3267067904); +emit_32(1100188326); +emit_32(3269627871); +emit_32(3266555911); +emit_32(1101247703); +emit_32(3269627871); +emit_32(3266043904); +emit_32(1102236038); +emit_32(3269627871); +emit_32(3265531911); +emit_32(1104015996); +emit_32(3269627871); +emit_32(3265019904); +emit_32(1106019562); +emit_32(3269627871); +emit_32(3264507911); +emit_32(1107489640); +emit_32(3269627871); +emit_32(3263995904); +emit_32(1107939269); +emit_32(3269627871); +emit_32(3263483911); +emit_32(1108609493); +emit_32(3269627871); +emit_32(3262775296); +emit_32(1108936360); +emit_32(3269627871); +emit_32(3261751309); +emit_32(1109365909); +emit_32(3269627871); +emit_32(3260727296); +emit_32(1109731836); +emit_32(3269627871); +emit_32(3259703309); +emit_32(1110075454); +emit_32(3269627871); +emit_32(3258679296); +emit_32(1110274841); +emit_32(3269627871); +emit_32(3257655309); +emit_32(1110532397); +emit_32(3269627871); +emit_32(3256631296); +emit_32(1110820677); +emit_32(3269627871); +emit_32(3255607309); +emit_32(1110970388); +emit_32(3269627871); +emit_32(3254386688); +emit_32(1111402270); +emit_32(3269627871); +emit_32(3252338714); +emit_32(1111410187); +emit_32(3269627871); +emit_32(3250290688); +emit_32(1111092730); +emit_32(3269627871); +emit_32(3248242714); +emit_32(1111561549); +emit_32(3269627871); +emit_32(3245998080); +emit_32(1111622576); +emit_32(3269627871); +emit_32(3241902132); +emit_32(1111406543); +emit_32(3269627871); +emit_32(3237609472); +emit_32(1111614869); +emit_32(3269627871); +emit_32(3229220864); +emit_32(1111623991); +emit_32(3269627871); +emit_32(0); +emit_32(1111334244); +emit_32(3269627871); +emit_32(1081737216); +emit_32(1111356054); +emit_32(3269627871); +emit_32(3279552512); +emit_32(1106615049); +emit_32(3270139970); +emit_32(3279296528); +emit_32(1107119309); +emit_32(3270139970); +emit_32(3279040545); +emit_32(1107204296); +emit_32(3270139970); +emit_32(3278784496); +emit_32(1107426043); +emit_32(3270139970); +emit_32(3278528512); +emit_32(1107651514); +emit_32(3270139970); +emit_32(3278272528); +emit_32(1107492104); +emit_32(3270139970); +emit_32(3278016545); +emit_32(1106671934); +emit_32(3270139970); +emit_32(3277760496); +emit_32(1105363468); +emit_32(3270139970); +emit_32(3277504512); +emit_32(1104722631); +emit_32(3270139970); +emit_32(3277248528); +emit_32(1104684463); +emit_32(3270139970); +emit_32(3276992545); +emit_32(1104973765); +emit_32(3270139970); +emit_32(3276736496); +emit_32(1105162981); +emit_32(3270139970); +emit_32(3276480512); +emit_32(1105246762); +emit_32(3270139970); +emit_32(3276224528); +emit_32(1104513126); +emit_32(3270139970); +emit_32(3275968545); +emit_32(1103992350); +emit_32(3270139970); +emit_32(3275712496); +emit_32(1103134301); +emit_32(3270139970); +emit_32(3275456512); +emit_32(1102130761); +emit_32(3270139970); +emit_32(3275200528); +emit_32(1101510214); +emit_32(3270139970); +emit_32(3274944545); +emit_32(1100554804); +emit_32(3270139970); +emit_32(3274688496); +emit_32(1100005560); +emit_32(3270139970); +emit_32(3274432512); +emit_32(1099090258); +emit_32(3270139970); +emit_32(3274176528); +emit_32(1096702388); +emit_32(3270139970); +emit_32(3273920545); +emit_32(1094929875); +emit_32(3270139970); +emit_32(3273664496); +emit_32(1093071903); +emit_32(3270139970); +emit_32(3273408512); +emit_32(1091864185); +emit_32(3270139970); +emit_32(3273152528); +emit_32(1090738538); +emit_32(3270139970); +emit_32(3272896545); +emit_32(1089872215); +emit_32(3270139970); +emit_32(3272640496); +emit_32(1088532009); +emit_32(3270139970); +emit_32(3272384512); +emit_32(1087136019); +emit_32(3270139970); +emit_32(3272128528); +emit_32(1086091155); +emit_32(3270139970); +emit_32(3271872545); +emit_32(1083137212); +emit_32(3270139970); +emit_32(3271616496); +emit_32(1082194374); +emit_32(3270139970); +emit_32(3271163904); +emit_32(1084156344); +emit_32(3270139970); +emit_32(3270651937); +emit_32(1086494710); +emit_32(3270139970); +emit_32(3270139970); +emit_32(1087925178); +emit_32(3270139970); +emit_32(3269627871); +emit_32(1089283545); +emit_32(3270139970); +emit_32(3269115904); +emit_32(1089544493); +emit_32(3270139970); +emit_32(3268603937); +emit_32(1092490552); +emit_32(3270139970); +emit_32(3268091970); +emit_32(1094596637); +emit_32(3270139970); +emit_32(3267579911); +emit_32(1097303536); +emit_32(3270139970); +emit_32(3267067904); +emit_32(1099546598); +emit_32(3270139970); +emit_32(3266555911); +emit_32(1101122293); +emit_32(3270139970); +emit_32(3266043904); +emit_32(1102198394); +emit_32(3270139970); +emit_32(3265531911); +emit_32(1104133751); +emit_32(3270139970); +emit_32(3265019904); +emit_32(1105876641); +emit_32(3270139970); +emit_32(3264507911); +emit_32(1107287081); +emit_32(3270139970); +emit_32(3263995904); +emit_32(1107840362); +emit_32(3270139970); +emit_32(3263483911); +emit_32(1108323913); +emit_32(3270139970); +emit_32(3262775296); +emit_32(1108846340); +emit_32(3270139970); +emit_32(3261751309); +emit_32(1109191243); +emit_32(3270139970); +emit_32(3260727296); +emit_32(1109548335); +emit_32(3270139970); +emit_32(3259703309); +emit_32(1110053775); +emit_32(3270139970); +emit_32(3258679296); +emit_32(1110107410); +emit_32(3270139970); +emit_32(3257655309); +emit_32(1110399726); +emit_32(3270139970); +emit_32(3256631296); +emit_32(1110760515); +emit_32(3270139970); +emit_32(3255607309); +emit_32(1110729294); +emit_32(3270139970); +emit_32(3254386688); +emit_32(1110963755); +emit_32(3270139970); +emit_32(3252338714); +emit_32(1110772128); +emit_32(3270139970); +emit_32(3250290688); +emit_32(1110896358); +emit_32(3270139970); +emit_32(3248242714); +emit_32(1111339775); +emit_32(3270139970); +emit_32(3245998080); +emit_32(1111522542); +emit_32(3270139970); +emit_32(3241902132); +emit_32(1111498739); +emit_32(3270139970); +emit_32(3237609472); +emit_32(1111764002); +emit_32(3270139970); +emit_32(3229220864); +emit_32(1111826209); +emit_32(3270139970); +emit_32(0); +emit_32(1111701062); +emit_32(3270139970); +emit_32(1081737216); +emit_32(1111592455); +emit_32(3270139970); +emit_32(3279552512); +emit_32(1107165027); +emit_32(3270651937); +emit_32(3279296528); +emit_32(1106980268); +emit_32(3270651937); +emit_32(3279040545); +emit_32(1107315707); +emit_32(3270651937); +emit_32(3278784496); +emit_32(1107598272); +emit_32(3270651937); +emit_32(3278528512); +emit_32(1107717469); +emit_32(3270651937); +emit_32(3278272528); +emit_32(1107286557); +emit_32(3270651937); +emit_32(3278016545); +emit_32(1106402712); +emit_32(3270651937); +emit_32(3277760496); +emit_32(1105497896); +emit_32(3270651937); +emit_32(3277504512); +emit_32(1105374898); +emit_32(3270651937); +emit_32(3277248528); +emit_32(1105640659); +emit_32(3270651937); +emit_32(3276992545); +emit_32(1105948416); +emit_32(3270651937); +emit_32(3276736496); +emit_32(1105871923); +emit_32(3270651937); +emit_32(3276480512); +emit_32(1105415268); +emit_32(3270651937); +emit_32(3276224528); +emit_32(1104908386); +emit_32(3270651937); +emit_32(3275968545); +emit_32(1104625166); +emit_32(3270651937); +emit_32(3275712496); +emit_32(1103529981); +emit_32(3270651937); +emit_32(3275456512); +emit_32(1102284535); +emit_32(3270651937); +emit_32(3275200528); +emit_32(1101814668); +emit_32(3270651937); +emit_32(3274944545); +emit_32(1101354395); +emit_32(3270651937); +emit_32(3274688496); +emit_32(1100467772); +emit_32(3270651937); +emit_32(3274432512); +emit_32(1099331902); +emit_32(3270651937); +emit_32(3274176528); +emit_32(1097334469); +emit_32(3270651937); +emit_32(3273920545); +emit_32(1095774713); +emit_32(3270651937); +emit_32(3273664496); +emit_32(1093969274); +emit_32(3270651937); +emit_32(3273408512); +emit_32(1092236870); +emit_32(3270651937); +emit_32(3273152528); +emit_32(1091177242); +emit_32(3270651937); +emit_32(3272896545); +emit_32(1089194521); +emit_32(3270651937); +emit_32(3272640496); +emit_32(1087253250); +emit_32(3270651937); +emit_32(3272384512); +emit_32(1085293042); +emit_32(3270651937); +emit_32(3272128528); +emit_32(1086332055); +emit_32(3270651937); +emit_32(3271872545); +emit_32(1083552217); +emit_32(3270651937); +emit_32(3271616496); +emit_32(1081840228); +emit_32(3270651937); +emit_32(3271163904); +emit_32(1085052373); +emit_32(3270651937); +emit_32(3270651937); +emit_32(1088324601); +emit_32(3270651937); +emit_32(3270139970); +emit_32(1090526128); +emit_32(3270651937); +emit_32(3269627871); +emit_32(1090035353); +emit_32(3270651937); +emit_32(3269115904); +emit_32(1091146088); +emit_32(3270651937); +emit_32(3268603937); +emit_32(1092321972); +emit_32(3270651937); +emit_32(3268091970); +emit_32(1094166931); +emit_32(3270651937); +emit_32(3267579911); +emit_32(1096361705); +emit_32(3270651937); +emit_32(3267067904); +emit_32(1098923167); +emit_32(3270651937); +emit_32(3266555911); +emit_32(1100222510); +emit_32(3270651937); +emit_32(3266043904); +emit_32(1102327683); +emit_32(3270651937); +emit_32(3265531911); +emit_32(1104008865); +emit_32(3270651937); +emit_32(3265019904); +emit_32(1105745465); +emit_32(3270651937); +emit_32(3264507911); +emit_32(1107240472); +emit_32(3270651937); +emit_32(3263995904); +emit_32(1107738152); +emit_32(3270651937); +emit_32(3263483911); +emit_32(1108317333); +emit_32(3270651937); +emit_32(3262775296); +emit_32(1108718230); +emit_32(3270651937); +emit_32(3261751309); +emit_32(1109166313); +emit_32(3270651937); +emit_32(3260727296); +emit_32(1109572767); +emit_32(3270651937); +emit_32(3259703309); +emit_32(1109886999); +emit_32(3270651937); +emit_32(3258679296); +emit_32(1110175934); +emit_32(3270651937); +emit_32(3257655309); +emit_32(1110012409); +emit_32(3270651937); +emit_32(3256631296); +emit_32(1110458420); +emit_32(3270651937); +emit_32(3255607309); +emit_32(1110277908); +emit_32(3270651937); +emit_32(3254386688); +emit_32(1110242571); +emit_32(3270651937); +emit_32(3252338714); +emit_32(1110493941); +emit_32(3270651937); +emit_32(3250290688); +emit_32(1110776139); +emit_32(3270651937); +emit_32(3248242714); +emit_32(1111135643); +emit_32(3270651937); +emit_32(3245998080); +emit_32(1111317021); +emit_32(3270651937); +emit_32(3241902132); +emit_32(1111525111); +emit_32(3270651937); +emit_32(3237609472); +emit_32(1111847102); +emit_32(3270651937); +emit_32(3229220864); +emit_32(1111929704); +emit_32(3270651937); +emit_32(0); +emit_32(1111847364); +emit_32(3270651937); +emit_32(1081737216); +emit_32(1111930149); +emit_32(3270651937); +emit_32(3279552512); +emit_32(1106982994); +emit_32(3271163904); +emit_32(3279296528); +emit_32(1106990334); +emit_32(3271163904); +emit_32(3279040545); +emit_32(1107378569); +emit_32(3271163904); +emit_32(3278784496); +emit_32(1107553734); +emit_32(3271163904); +emit_32(3278528512); +emit_32(1107478761); +emit_32(3271163904); +emit_32(3278272528); +emit_32(1106962389); +emit_32(3271163904); +emit_32(3278016545); +emit_32(1105953607); +emit_32(3271163904); +emit_32(3277760496); +emit_32(1105995497); +emit_32(3271163904); +emit_32(3277504512); +emit_32(1105958325); +emit_32(3271163904); +emit_32(3277248528); +emit_32(1106168041); +emit_32(3271163904); +emit_32(3276992545); +emit_32(1106461590); +emit_32(3271163904); +emit_32(3276736496); +emit_32(1106400248); +emit_32(3271163904); +emit_32(3276480512); +emit_32(1105590904); +emit_32(3271163904); +emit_32(3276224528); +emit_32(1105294315); +emit_32(3271163904); +emit_32(3275968545); +emit_32(1104823661); +emit_32(3271163904); +emit_32(3275712496); +emit_32(1103994185); +emit_32(3271163904); +emit_32(3275456512); +emit_32(1102728764); +emit_32(3271163904); +emit_32(3275200528); +emit_32(1102137996); +emit_32(3271163904); +emit_32(3274944545); +emit_32(1101349782); +emit_32(3271163904); +emit_32(3274688496); +emit_32(1100398356); +emit_32(3271163904); +emit_32(3274432512); +emit_32(1099098489); +emit_32(3271163904); +emit_32(3274176528); +emit_32(1097575747); +emit_32(3271163904); +emit_32(3273920545); +emit_32(1095747135); +emit_32(3271163904); +emit_32(3273664496); +emit_32(1094011427); +emit_32(3271163904); +emit_32(3273408512); +emit_32(1092817099); +emit_32(3271163904); +emit_32(3273152528); +emit_32(1090935010); +emit_32(3271163904); +emit_32(3272896545); +emit_32(1086813205); +emit_32(3271163904); +emit_32(3272640496); +emit_32(1085254874); +emit_32(3271163904); +emit_32(3272384512); +emit_32(1084610859); +emit_32(3271163904); +emit_32(3272128528); +emit_32(1085403226); +emit_32(3271163904); +emit_32(3271872545); +emit_32(1085803741); +emit_32(3271163904); +emit_32(3271616496); +emit_32(1084901902); +emit_32(3271163904); +emit_32(3271163904); +emit_32(1086653402); +emit_32(3271163904); +emit_32(3270651937); +emit_32(1089541201); +emit_32(3271163904); +emit_32(3270139970); +emit_32(1090924587); +emit_32(3271163904); +emit_32(3269627871); +emit_32(1091193002); +emit_32(3271163904); +emit_32(3269115904); +emit_32(1091042709); +emit_32(3271163904); +emit_32(3268603937); +emit_32(1091824318); +emit_32(3271163904); +emit_32(3268091970); +emit_32(1094207721); +emit_32(3271163904); +emit_32(3267579911); +emit_32(1096193199); +emit_32(3271163904); +emit_32(3267067904); +emit_32(1098383045); +emit_32(3271163904); +emit_32(3266555911); +emit_32(1099615542); +emit_32(3271163904); +emit_32(3266043904); +emit_32(1101433038); +emit_32(3271163904); +emit_32(3265531911); +emit_32(1103595045); +emit_32(3271163904); +emit_32(3265019904); +emit_32(1105129950); +emit_32(3271163904); +emit_32(3264507911); +emit_32(1106326061); +emit_32(3271163904); +emit_32(3263995904); +emit_32(1107411652); +emit_32(3271163904); +emit_32(3263483911); +emit_32(1107887050); +emit_32(3271163904); +emit_32(3262775296); +emit_32(1108492236); +emit_32(3271163904); +emit_32(3261751309); +emit_32(1109105757); +emit_32(3271163904); +emit_32(3260727296); +emit_32(1109424656); +emit_32(3271163904); +emit_32(3259703309); +emit_32(1109901784); +emit_32(3271163904); +emit_32(3258679296); +emit_32(1109885321); +emit_32(3271163904); +emit_32(3257655309); +emit_32(1109822564); +emit_32(3271163904); +emit_32(3256631296); +emit_32(1109824163); +emit_32(3271163904); +emit_32(3255607309); +emit_32(1109730315); +emit_32(3271163904); +emit_32(3254386688); +emit_32(1109803113); +emit_32(3271163904); +emit_32(3252338714); +emit_32(1109995186); +emit_32(3271163904); +emit_32(3250290688); +emit_32(1110434618); +emit_32(3271163904); +emit_32(3248242714); +emit_32(1111024783); +emit_32(3271163904); +emit_32(3245998080); +emit_32(1111309785); +emit_32(3271163904); +emit_32(3241902132); +emit_32(1111384208); +emit_32(3271163904); +emit_32(3237609472); +emit_32(1111783952); +emit_32(3271163904); +emit_32(3229220864); +emit_32(1111918930); +emit_32(3271163904); +emit_32(0); +emit_32(1112106100); +emit_32(3271163904); +emit_32(1081737216); +emit_32(1112094042); +emit_32(3271163904); +emit_start(Landscape06Vtx) +emit_32(3279552512); +emit_32(1085562023); +emit_32(1131812880); +emit_32(3279552512); +emit_32(1090639836); +emit_32(1132068864); +emit_32(3279296528); +emit_32(1088557385); +emit_32(1131812880); +emit_32(3279296528); +emit_32(1092330749); +emit_32(1132068864); +emit_32(3279040545); +emit_32(1092455865); +emit_32(1131812880); +emit_32(3279040545); +emit_32(1094355780); +emit_32(1132068864); +emit_32(3278784496); +emit_32(1095594567); +emit_32(1131812880); +emit_32(3278784496); +emit_32(1095302539); +emit_32(1132068864); +emit_32(3278528512); +emit_32(1096797808); +emit_32(1131812880); +emit_32(3278528512); +emit_32(1095711379); +emit_32(1132068864); +emit_32(3278272528); +emit_32(1098618136); +emit_32(1131812880); +emit_32(3278272528); +emit_32(1098003041); +emit_32(1132068864); +emit_32(3278016545); +emit_32(1099699061); +emit_32(1131812880); +emit_32(3278016545); +emit_32(1099454009); +emit_32(1132068864); +emit_32(3277760496); +emit_32(1100182821); +emit_32(1131812880); +emit_32(3277760496); +emit_32(1099951977); +emit_32(1132068864); +emit_32(3277504512); +emit_32(1100520096); +emit_32(1131812880); +emit_32(3277504512); +emit_32(1100371355); +emit_32(1132068864); +emit_32(3277248528); +emit_32(1100966579); +emit_32(1131812880); +emit_32(3277248528); +emit_32(1100780352); +emit_32(1132068864); +emit_32(3276992545); +emit_32(1100860306); +emit_32(1131812880); +emit_32(3276992545); +emit_32(1101050203); +emit_32(1132068864); +emit_32(3276736496); +emit_32(1100465622); +emit_32(1131812880); +emit_32(3276736496); +emit_32(1100893074); +emit_32(1132068864); +emit_32(3276480512); +emit_32(1100581280); +emit_32(1131812880); +emit_32(3276480512); +emit_32(1101018641); +emit_32(1132068864); +emit_32(3276224528); +emit_32(1099877895); +emit_32(1131812880); +emit_32(3276224528); +emit_32(1100648651); +emit_32(1132068864); +emit_32(3275968545); +emit_32(1098108633); +emit_32(1131812880); +emit_32(3275968545); +emit_32(1099969017); +emit_32(1132068864); +emit_32(3275712496); +emit_32(1097534433); +emit_32(1131812880); +emit_32(3275712496); +emit_32(1099061736); +emit_32(1132068864); +emit_32(3275456512); +emit_32(1095741263); +emit_32(1131812880); +emit_32(3275456512); +emit_32(1097819121); +emit_32(1132068864); +emit_32(3275200528); +emit_32(1094351061); +emit_32(1131812880); +emit_32(3275200528); +emit_32(1095413373); +emit_32(1132068864); +emit_32(3274944545); +emit_32(1095198940); +emit_32(1131812880); +emit_32(3274944545); +emit_32(1096465724); +emit_32(1132068864); +emit_32(3274688496); +emit_32(1095888378); +emit_32(1131812880); +emit_32(3274688496); +emit_32(1097378510); +emit_32(1132068864); +emit_32(3274432512); +emit_32(1096087503); +emit_32(1131812880); +emit_32(3274432512); +emit_32(1098800064); +emit_32(1132068864); +emit_32(3274176528); +emit_32(1096238288); +emit_32(1131812880); +emit_32(3274176528); +emit_32(1098870004); +emit_32(1132068864); +emit_32(3273920545); +emit_32(1096234303); +emit_32(1131812880); +emit_32(3273920545); +emit_32(1098365115); +emit_32(1132068864); +emit_32(3273664496); +emit_32(1097531182); +emit_32(1131812880); +emit_32(3273664496); +emit_32(1097973681); +emit_32(1132068864); +emit_32(3273408512); +emit_32(1096980680); +emit_32(1131812880); +emit_32(3273408512); +emit_32(1097661835); +emit_32(1132068864); +emit_32(3273152528); +emit_32(1096822135); +emit_32(1131812880); +emit_32(3273152528); +emit_32(1097231709); +emit_32(1132068864); +emit_32(3272896545); +emit_32(1095973103); +emit_32(1131812880); +emit_32(3272896545); +emit_32(1097116261); +emit_32(1132068864); +emit_32(3272640496); +emit_32(1095621621); +emit_32(1131812880); +emit_32(3272640496); +emit_32(1096358035); +emit_32(1132068864); +emit_32(3272384512); +emit_32(1095942380); +emit_32(1131812880); +emit_32(3272384512); +emit_32(1097122133); +emit_32(1132068864); +emit_32(3272128528); +emit_32(1095707289); +emit_32(1131812880); +emit_32(3272128528); +emit_32(1097935303); +emit_32(1132068864); +emit_32(3271872545); +emit_32(1096204524); +emit_32(1131812880); +emit_32(3271872545); +emit_32(1097370855); +emit_32(1132068864); +emit_32(3271616496); +emit_32(1096900883); +emit_32(1131812880); +emit_32(3271616496); +emit_32(1098608280); +emit_32(1132068864); +emit_32(3271163904); +emit_32(1096266285); +emit_32(1131812880); +emit_32(3271163904); +emit_32(1098342256); +emit_32(1132068864); +emit_32(3270651937); +emit_32(1095366397); +emit_32(1131812880); +emit_32(3270651937); +emit_32(1098053793); +emit_32(1132068864); +emit_32(3270139970); +emit_32(1094774581); +emit_32(1131812880); +emit_32(3270139970); +emit_32(1098324640); +emit_32(1132068864); +emit_32(3269627871); +emit_32(1095465488); +emit_32(1131812880); +emit_32(3269627871); +emit_32(1098790417); +emit_32(1132068864); +emit_32(3269115904); +emit_32(1095080136); +emit_32(1131812880); +emit_32(3269115904); +emit_32(1098071199); +emit_32(1132068864); +emit_32(3268603937); +emit_32(1095775027); +emit_32(1131812880); +emit_32(3268603937); +emit_32(1098042258); +emit_32(1132068864); +emit_32(3268091970); +emit_32(1096498335); +emit_32(1131812880); +emit_32(3268091970); +emit_32(1097596823); +emit_32(1132068864); +emit_32(3267579911); +emit_32(1096881170); +emit_32(1131812880); +emit_32(3267579911); +emit_32(1097962986); +emit_32(1132068864); +emit_32(3267067904); +emit_32(1096646604); +emit_32(1131812880); +emit_32(3267067904); +emit_32(1097510525); +emit_32(1132068864); +emit_32(3266555911); +emit_32(1097473930); +emit_32(1131812880); +emit_32(3266555911); +emit_32(1096970614); +emit_32(1132068864); +emit_32(3266043904); +emit_32(1096072928); +emit_32(1131812880); +emit_32(3266043904); +emit_32(1096851181); +emit_32(1132068864); +emit_32(3265531911); +emit_32(1095562061); +emit_32(1131812880); +emit_32(3265531911); +emit_32(1096578341); +emit_32(1132068864); +emit_32(3265019904); +emit_32(1094504258); +emit_32(1131812880); +emit_32(3265019904); +emit_32(1095833747); +emit_32(1132068864); +emit_32(3264507911); +emit_32(1094381679); +emit_32(1131812880); +emit_32(3264507911); +emit_32(1095590058); +emit_32(1132068864); +emit_32(3263995904); +emit_32(1093698952); +emit_32(1131812880); +emit_32(3263995904); +emit_32(1095093872); +emit_32(1132068864); +emit_32(3263483911); +emit_32(1094601146); +emit_32(1131812880); +emit_32(3263483911); +emit_32(1093864941); +emit_32(1132068864); +emit_32(3262775296); +emit_32(1093294516); +emit_32(1131812880); +emit_32(3262775296); +emit_32(1092542435); +emit_32(1132068864); +emit_32(3261751309); +emit_32(1091098766); +emit_32(1131812880); +emit_32(3261751309); +emit_32(1091449232); +emit_32(1132068864); +emit_32(3260727296); +emit_32(1088637685); +emit_32(1131812880); +emit_32(3260727296); +emit_32(1089462705); +emit_32(1132068864); +emit_32(3259703309); +emit_32(1088371137); +emit_32(1131812880); +emit_32(3259703309); +emit_32(1086825892); +emit_32(1132068864); +emit_32(3258679296); +emit_32(1090482591); +emit_32(1131812880); +emit_32(3258679296); +emit_32(1088189482); +emit_32(1132068864); +emit_32(3257655309); +emit_32(1091688768); +emit_32(1131812880); +emit_32(3257655309); +emit_32(1089036752); +emit_32(1132068864); +emit_32(3256631296); +emit_32(1091298897); +emit_32(1131812880); +emit_32(3256631296); +emit_32(1088194704); +emit_32(1132068864); +emit_32(3255607309); +emit_32(1089392345); +emit_32(1131812880); +emit_32(3255607309); +emit_32(1087706759); +emit_32(1132068864); +emit_32(3254386688); +emit_32(1089840108); +emit_32(1131812880); +emit_32(3254386688); +emit_32(1087906072); +emit_32(1132068864); +emit_32(3252338714); +emit_32(1088432604); +emit_32(1131812880); +emit_32(3252338714); +emit_32(1086651325); +emit_32(1132068864); +emit_32(3250290688); +emit_32(1085565840); +emit_32(1131812880); +emit_32(3250290688); +emit_32(1085752989); +emit_32(1132068864); +emit_32(3248242714); +emit_32(1084476831); +emit_32(1131812880); +emit_32(3248242714); +emit_32(1082147671); +emit_32(1132068864); +emit_32(3245998080); +emit_32(1080454304); +emit_32(1131812880); +emit_32(3245998080); +emit_32(1080053035); +emit_32(1132068864); +emit_32(3241902132); +emit_32(1078160817); +emit_32(1131812880); +emit_32(3241902132); +emit_32(1078352203); +emit_32(1132068864); +emit_32(3237609472); +emit_32(1075763269); +emit_32(1131812880); +emit_32(3237609472); +emit_32(1075673385); +emit_32(1132068864); +emit_32(3229220864); +emit_32(1071152764); +emit_32(1131812880); +emit_32(3229220864); +emit_32(1076050788); +emit_32(1132068864); +emit_32(0); +emit_32(1066573591); +emit_32(1131812880); +emit_32(0); +emit_32(1074500112); +emit_32(1132068864); +emit_32(1081737216); +emit_32(1055384530); +emit_32(1131812880); +emit_32(1081737216); +emit_32(1069740626); +emit_32(1132068864); +emit_32(3279552512); +emit_32(1084680359); +emit_32(1131556897); +emit_32(3279296528); +emit_32(1089160463); +emit_32(1131556897); +emit_32(3279040545); +emit_32(1092855687); +emit_32(1131556897); +emit_32(3278784496); +emit_32(1095505229); +emit_32(1131556897); +emit_32(3278528512); +emit_32(1097158309); +emit_32(1131556897); +emit_32(3278272528); +emit_32(1099096077); +emit_32(1131556897); +emit_32(3278016545); +emit_32(1099862691); +emit_32(1131556897); +emit_32(3277760496); +emit_32(1100235198); +emit_32(1131556897); +emit_32(3277504512); +emit_32(1100353529); +emit_32(1131556897); +emit_32(3277248528); +emit_32(1100744753); +emit_32(1131556897); +emit_32(3276992545); +emit_32(1100450208); +emit_32(1131556897); +emit_32(3276736496); +emit_32(1099944218); +emit_32(1131556897); +emit_32(3276480512); +emit_32(1099578632); +emit_32(1131556897); +emit_32(3276224528); +emit_32(1098095211); +emit_32(1131556897); +emit_32(3275968545); +emit_32(1096681416); +emit_32(1131556897); +emit_32(3275712496); +emit_32(1095628436); +emit_32(1131556897); +emit_32(3275456512); +emit_32(1094488739); +emit_32(1131556897); +emit_32(3275200528); +emit_32(1095225678); +emit_32(1131556897); +emit_32(3274944545); +emit_32(1095742416); +emit_32(1131556897); +emit_32(3274688496); +emit_32(1096313995); +emit_32(1131556897); +emit_32(3274432512); +emit_32(1096609379); +emit_32(1131556897); +emit_32(3274176528); +emit_32(1096643458); +emit_32(1131556897); +emit_32(3273920545); +emit_32(1096377644); +emit_32(1131556897); +emit_32(3273664496); +emit_32(1096630875); +emit_32(1131556897); +emit_32(3273408512); +emit_32(1096367787); +emit_32(1131556897); +emit_32(3273152528); +emit_32(1095764646); +emit_32(1131556897); +emit_32(3272896545); +emit_32(1095369648); +emit_32(1131556897); +emit_32(3272640496); +emit_32(1095202610); +emit_32(1131556897); +emit_32(3272384512); +emit_32(1095378141); +emit_32(1131556897); +emit_32(3272128528); +emit_32(1094896425); +emit_32(1131556897); +emit_32(3271872545); +emit_32(1094491570); +emit_32(1131556897); +emit_32(3271616496); +emit_32(1094140717); +emit_32(1131556897); +emit_32(3271163904); +emit_32(1093673576); +emit_32(1131556897); +emit_32(3270651937); +emit_32(1092775680); +emit_32(1131556897); +emit_32(3270139970); +emit_32(1093246176); +emit_32(1131556897); +emit_32(3269627871); +emit_32(1092835135); +emit_32(1131556897); +emit_32(3269115904); +emit_32(1093700839); +emit_32(1131556897); +emit_32(3268603937); +emit_32(1093815868); +emit_32(1131556897); +emit_32(3268091970); +emit_32(1095128475); +emit_32(1131556897); +emit_32(3267579911); +emit_32(1096138044); +emit_32(1131556897); +emit_32(3267067904); +emit_32(1097063727); +emit_32(1131556897); +emit_32(3266555911); +emit_32(1096790468); +emit_32(1131556897); +emit_32(3266043904); +emit_32(1096105433); +emit_32(1131556897); +emit_32(3265531911); +emit_32(1094675490); +emit_32(1131556897); +emit_32(3265019904); +emit_32(1094279548); +emit_32(1131556897); +emit_32(3264507911); +emit_32(1094433060); +emit_32(1131556897); +emit_32(3263995904); +emit_32(1094244316); +emit_32(1131556897); +emit_32(3263483911); +emit_32(1095101212); +emit_32(1131556897); +emit_32(3262775296); +emit_32(1093870184); +emit_32(1131556897); +emit_32(3261751309); +emit_32(1092196416); +emit_32(1131556897); +emit_32(3260727296); +emit_32(1090926800); +emit_32(1131556897); +emit_32(3259703309); +emit_32(1089315547); +emit_32(1131556897); +emit_32(3258679296); +emit_32(1090882864); +emit_32(1131556897); +emit_32(3257655309); +emit_32(1092302982); +emit_32(1131556897); +emit_32(3256631296); +emit_32(1091679478); +emit_32(1131556897); +emit_32(3255607309); +emit_32(1090777587); +emit_32(1131556897); +emit_32(3254386688); +emit_32(1090588833); +emit_32(1131556897); +emit_32(3252338714); +emit_32(1088391584); +emit_32(1131556897); +emit_32(3250290688); +emit_32(1088187762); +emit_32(1131556897); +emit_32(3248242714); +emit_32(1086074735); +emit_32(1131556897); +emit_32(3245998080); +emit_32(1083035311); +emit_32(1131556897); +emit_32(3241902132); +emit_32(1080697784); +emit_32(1131556897); +emit_32(3237609472); +emit_32(1077335797); +emit_32(1131556897); +emit_32(3229220864); +emit_32(1072342604); +emit_32(1131556897); +emit_32(0); +emit_32(1073908380); +emit_32(1131556897); +emit_32(1081737216); +emit_32(1074643096); +emit_32(1131556897); +emit_32(3279552512); +emit_32(1085160041); +emit_32(1131300848); +emit_32(3279296528); +emit_32(1090327885); +emit_32(1131300848); +emit_32(3279040545); +emit_32(1093025976); +emit_32(1131300848); +emit_32(3278784496); +emit_32(1095630848); +emit_32(1131300848); +emit_32(3278528512); +emit_32(1097676095); +emit_32(1131300848); +emit_32(3278272528); +emit_32(1099190973); +emit_32(1131300848); +emit_32(3278016545); +emit_32(1099857081); +emit_32(1131300848); +emit_32(3277760496); +emit_32(1100491260); +emit_32(1131300848); +emit_32(3277504512); +emit_32(1100352848); +emit_32(1131300848); +emit_32(3277248528); +emit_32(1100472753); +emit_32(1131300848); +emit_32(3276992545); +emit_32(1100152989); +emit_32(1131300848); +emit_32(3276736496); +emit_32(1099265684); +emit_32(1131300848); +emit_32(3276480512); +emit_32(1098708314); +emit_32(1131300848); +emit_32(3276224528); +emit_32(1096067580); +emit_32(1131300848); +emit_32(3275968545); +emit_32(1096230633); +emit_32(1131300848); +emit_32(3275712496); +emit_32(1096388025); +emit_32(1131300848); +emit_32(3275456512); +emit_32(1094867799); +emit_32(1131300848); +emit_32(3275200528); +emit_32(1096132172); +emit_32(1131300848); +emit_32(3274944545); +emit_32(1097306682); +emit_32(1131300848); +emit_32(3274688496); +emit_32(1097887069); +emit_32(1131300848); +emit_32(3274432512); +emit_32(1097633838); +emit_32(1131300848); +emit_32(3274176528); +emit_32(1098457389); +emit_32(1131300848); +emit_32(3273920545); +emit_32(1097090466); +emit_32(1131300848); +emit_32(3273664496); +emit_32(1096891446); +emit_32(1131300848); +emit_32(3273408512); +emit_32(1095233962); +emit_32(1131300848); +emit_32(3273152528); +emit_32(1094867799); +emit_32(1131300848); +emit_32(3272896545); +emit_32(1094576295); +emit_32(1131300848); +emit_32(3272640496); +emit_32(1093957845); +emit_32(1131300848); +emit_32(3272384512); +emit_32(1093473193); +emit_32(1131300848); +emit_32(3272128528); +emit_32(1093446664); +emit_32(1131300848); +emit_32(3271872545); +emit_32(1093505489); +emit_32(1131300848); +emit_32(3271616496); +emit_32(1092573494); +emit_32(1131300848); +emit_32(3271163904); +emit_32(1092718533); +emit_32(1131300848); +emit_32(3270651937); +emit_32(1091299642); +emit_32(1131300848); +emit_32(3270139970); +emit_32(1091752270); +emit_32(1131300848); +emit_32(3269627871); +emit_32(1092863027); +emit_32(1131300848); +emit_32(3269115904); +emit_32(1093352607); +emit_32(1131300848); +emit_32(3268603937); +emit_32(1094334389); +emit_32(1131300848); +emit_32(3268091970); +emit_32(1095530080); +emit_32(1131300848); +emit_32(3267579911); +emit_32(1096764359); +emit_32(1131300848); +emit_32(3267067904); +emit_32(1096925944); +emit_32(1131300848); +emit_32(3266555911); +emit_32(1096040107); +emit_32(1131300848); +emit_32(3266043904); +emit_32(1094881536); +emit_32(1131300848); +emit_32(3265531911); +emit_32(1094389753); +emit_32(1131300848); +emit_32(3265019904); +emit_32(1094053370); +emit_32(1131300848); +emit_32(3264507911); +emit_32(1094865283); +emit_32(1131300848); +emit_32(3263995904); +emit_32(1095186461); +emit_32(1131300848); +emit_32(3263483911); +emit_32(1095388208); +emit_32(1131300848); +emit_32(3262775296); +emit_32(1094366475); +emit_32(1131300848); +emit_32(3261751309); +emit_32(1093486930); +emit_32(1131300848); +emit_32(3260727296); +emit_32(1091443444); +emit_32(1131300848); +emit_32(3259703309); +emit_32(1090412169); +emit_32(1131300848); +emit_32(3258679296); +emit_32(1091017376); +emit_32(1131300848); +emit_32(3257655309); +emit_32(1091659503); +emit_32(1131300848); +emit_32(3256631296); +emit_32(1091788813); +emit_32(1131300848); +emit_32(3255607309); +emit_32(1091703155); +emit_32(1131300848); +emit_32(3254386688); +emit_32(1091097539); +emit_32(1131300848); +emit_32(3252338714); +emit_32(1090228501); +emit_32(1131300848); +emit_32(3250290688); +emit_32(1089127831); +emit_32(1131300848); +emit_32(3248242714); +emit_32(1087112238); +emit_32(1131300848); +emit_32(3245998080); +emit_32(1085471698); +emit_32(1131300848); +emit_32(3241902132); +emit_32(1083846552); +emit_32(1131300848); +emit_32(3237609472); +emit_32(1082879010); +emit_32(1131300848); +emit_32(3229220864); +emit_32(1080627152); +emit_32(1131300848); +emit_32(0); +emit_32(1080885311); +emit_32(1131300848); +emit_32(1081737216); +emit_32(1078120510); +emit_32(1131300848); +emit_32(3279552512); +emit_32(1086174748); +emit_32(1131044864); +emit_32(3279296528); +emit_32(1090628574); +emit_32(1131044864); +emit_32(3279040545); +emit_32(1092984871); +emit_32(1131044864); +emit_32(3278784496); +emit_32(1095235954); +emit_32(1131044864); +emit_32(3278528512); +emit_32(1097962986); +emit_32(1131044864); +emit_32(3278272528); +emit_32(1098907753); +emit_32(1131044864); +emit_32(3278016545); +emit_32(1099567464); +emit_32(1131044864); +emit_32(3277760496); +emit_32(1100053322); +emit_32(1131044864); +emit_32(3277504512); +emit_32(1100365745); +emit_32(1131044864); +emit_32(3277248528); +emit_32(1100199389); +emit_32(1131044864); +emit_32(3276992545); +emit_32(1100122476); +emit_32(1131044864); +emit_32(3276736496); +emit_32(1098964533); +emit_32(1131044864); +emit_32(3276480512); +emit_32(1098061028); +emit_32(1131044864); +emit_32(3276224528); +emit_32(1096998401); +emit_32(1131044864); +emit_32(3275968545); +emit_32(1096347969); +emit_32(1131044864); +emit_32(3275712496); +emit_32(1096743597); +emit_32(1131044864); +emit_32(3275456512); +emit_32(1096079639); +emit_32(1131044864); +emit_32(3275200528); +emit_32(1096454190); +emit_32(1131044864); +emit_32(3274944545); +emit_32(1097972947); +emit_32(1131044864); +emit_32(3274688496); +emit_32(1098482241); +emit_32(1131044864); +emit_32(3274432512); +emit_32(1098243165); +emit_32(1131044864); +emit_32(3274176528); +emit_32(1097818073); +emit_32(1131044864); +emit_32(3273920545); +emit_32(1097259811); +emit_32(1131044864); +emit_32(3273664496); +emit_32(1096971138); +emit_32(1131044864); +emit_32(3273408512); +emit_32(1095776495); +emit_32(1131044864); +emit_32(3273152528); +emit_32(1094346657); +emit_32(1131044864); +emit_32(3272896545); +emit_32(1094305658); +emit_32(1131044864); +emit_32(3272640496); +emit_32(1093779797); +emit_32(1131044864); +emit_32(3272384512); +emit_32(1093535059); +emit_32(1131044864); +emit_32(3272128528); +emit_32(1092859566); +emit_32(1131044864); +emit_32(3271872545); +emit_32(1092315471); +emit_32(1131044864); +emit_32(3271616496); +emit_32(1091613628); +emit_32(1131044864); +emit_32(3271163904); +emit_32(1092129045); +emit_32(1131044864); +emit_32(3270651937); +emit_32(1090623961); +emit_32(1131044864); +emit_32(3270139970); +emit_32(1091745329); +emit_32(1131044864); +emit_32(3269627871); +emit_32(1092278802); +emit_32(1131044864); +emit_32(3269115904); +emit_32(1092897106); +emit_32(1131044864); +emit_32(3268603937); +emit_32(1093630060); +emit_32(1131044864); +emit_32(3268091970); +emit_32(1095021835); +emit_32(1131044864); +emit_32(3267579911); +emit_32(1096071460); +emit_32(1131044864); +emit_32(3267067904); +emit_32(1095859647); +emit_32(1131044864); +emit_32(3266555911); +emit_32(1095186671); +emit_32(1131044864); +emit_32(3266043904); +emit_32(1094964478); +emit_32(1131044864); +emit_32(3265531911); +emit_32(1094463993); +emit_32(1131044864); +emit_32(3265019904); +emit_32(1094678322); +emit_32(1131044864); +emit_32(3264507911); +emit_32(1094959340); +emit_32(1131044864); +emit_32(3263995904); +emit_32(1095934725); +emit_32(1131044864); +emit_32(3263483911); +emit_32(1096292499); +emit_32(1131044864); +emit_32(3262775296); +emit_32(1095947833); +emit_32(1131044864); +emit_32(3261751309); +emit_32(1094626102); +emit_32(1131044864); +emit_32(3260727296); +emit_32(1092638002); +emit_32(1131044864); +emit_32(3259703309); +emit_32(1091654302); +emit_32(1131044864); +emit_32(3258679296); +emit_32(1090981043); +emit_32(1131044864); +emit_32(3257655309); +emit_32(1091856132); +emit_32(1131044864); +emit_32(3256631296); +emit_32(1092849815); +emit_32(1131044864); +emit_32(3255607309); +emit_32(1092381563); +emit_32(1131044864); +emit_32(3254386688); +emit_32(1091755762); +emit_32(1131044864); +emit_32(3252338714); +emit_32(1091392210); +emit_32(1131044864); +emit_32(3250290688); +emit_32(1090522762); +emit_32(1131044864); +emit_32(3248242714); +emit_32(1089201336); +emit_32(1131044864); +emit_32(3245998080); +emit_32(1088158150); +emit_32(1131044864); +emit_32(3241902132); +emit_32(1086827927); +emit_32(1131044864); +emit_32(3237609472); +emit_32(1085289603); +emit_32(1131044864); +emit_32(3229220864); +emit_32(1084371008); +emit_32(1131044864); +emit_32(0); +emit_32(1084371155); +emit_32(1131044864); +emit_32(1081737216); +emit_32(1084629524); +emit_32(1131044864); +emit_32(3279552512); +emit_32(1084191198); +emit_32(1130788880); +emit_32(3279296528); +emit_32(1090263187); +emit_32(1130788880); +emit_32(3279040545); +emit_32(1093579624); +emit_32(1130788880); +emit_32(3278784496); +emit_32(1095609772); +emit_32(1130788880); +emit_32(3278528512); +emit_32(1097395392); +emit_32(1130788880); +emit_32(3278272528); +emit_32(1098942775); +emit_32(1130788880); +emit_32(3278016545); +emit_32(1099952973); +emit_32(1130788880); +emit_32(3277760496); +emit_32(1100137051); +emit_32(1130788880); +emit_32(3277504512); +emit_32(1100188117); +emit_32(1130788880); +emit_32(3277248528); +emit_32(1100449631); +emit_32(1130788880); +emit_32(3276992545); +emit_32(1099596091); +emit_32(1130788880); +emit_32(3276736496); +emit_32(1098204263); +emit_32(1130788880); +emit_32(3276480512); +emit_32(1098412510); +emit_32(1130788880); +emit_32(3276224528); +emit_32(1097801505); +emit_32(1130788880); +emit_32(3275968545); +emit_32(1096603507); +emit_32(1130788880); +emit_32(3275712496); +emit_32(1095928224); +emit_32(1130788880); +emit_32(3275456512); +emit_32(1096222035); +emit_32(1130788880); +emit_32(3275200528); +emit_32(1097042546); +emit_32(1130788880); +emit_32(3274944545); +emit_32(1097761554); +emit_32(1130788880); +emit_32(3274688496); +emit_32(1098099720); +emit_32(1130788880); +emit_32(3274432512); +emit_32(1097722862); +emit_32(1130788880); +emit_32(3274176528); +emit_32(1096956563); +emit_32(1130788880); +emit_32(3273920545); +emit_32(1096582850); +emit_32(1130788880); +emit_32(3273664496); +emit_32(1095826303); +emit_32(1130788880); +emit_32(3273408512); +emit_32(1095071538); +emit_32(1130788880); +emit_32(3273152528); +emit_32(1094227434); +emit_32(1130788880); +emit_32(3272896545); +emit_32(1094210132); +emit_32(1130788880); +emit_32(3272640496); +emit_32(1093761027); +emit_32(1130788880); +emit_32(3272384512); +emit_32(1093810520); +emit_32(1130788880); +emit_32(3272128528); +emit_32(1092656772); +emit_32(1130788880); +emit_32(3271872545); +emit_32(1091138738); +emit_32(1130788880); +emit_32(3271616496); +emit_32(1089927035); +emit_32(1130788880); +emit_32(3271163904); +emit_32(1089350360); +emit_32(1130788880); +emit_32(3270651937); +emit_32(1090698210); +emit_32(1130788880); +emit_32(3270139970); +emit_32(1090875577); +emit_32(1130788880); +emit_32(3269627871); +emit_32(1091800075); +emit_32(1130788880); +emit_32(3269115904); +emit_32(1092846354); +emit_32(1130788880); +emit_32(3268603937); +emit_32(1094213173); +emit_32(1130788880); +emit_32(3268091970); +emit_32(1095490444); +emit_32(1130788880); +emit_32(3267579911); +emit_32(1095492331); +emit_32(1130788880); +emit_32(3267067904); +emit_32(1095128475); +emit_32(1130788880); +emit_32(3266555911); +emit_32(1094457387); +emit_32(1130788880); +emit_32(3266043904); +emit_32(1093000915); +emit_32(1130788880); +emit_32(3265531911); +emit_32(1092702700); +emit_32(1130788880); +emit_32(3265019904); +emit_32(1094131489); +emit_32(1130788880); +emit_32(3264507911); +emit_32(1094959759); +emit_32(1130788880); +emit_32(3263995904); +emit_32(1096392743); +emit_32(1130788880); +emit_32(3263483911); +emit_32(1097205809); +emit_32(1130788880); +emit_32(3262775296); +emit_32(1096775893); +emit_32(1130788880); +emit_32(3261751309); +emit_32(1095617217); +emit_32(1130788880); +emit_32(3260727296); +emit_32(1094159591); +emit_32(1130788880); +emit_32(3259703309); +emit_32(1092609701); +emit_32(1130788880); +emit_32(3258679296); +emit_32(1091241058); +emit_32(1130788880); +emit_32(3257655309); +emit_32(1092023201); +emit_32(1130788880); +emit_32(3256631296); +emit_32(1093109862); +emit_32(1130788880); +emit_32(3255607309); +emit_32(1093719399); +emit_32(1130788880); +emit_32(3254386688); +emit_32(1093231077); +emit_32(1130788880); +emit_32(3252338714); +emit_32(1093489761); +emit_32(1130788880); +emit_32(3250290688); +emit_32(1092575423); +emit_32(1130788880); +emit_32(3248242714); +emit_32(1091158975); +emit_32(1130788880); +emit_32(3245998080); +emit_32(1089311227); +emit_32(1130788880); +emit_32(3241902132); +emit_32(1087230748); +emit_32(1130788880); +emit_32(3237609472); +emit_32(1087094936); +emit_32(1130788880); +emit_32(3229220864); +emit_32(1087427439); +emit_32(1130788880); +emit_32(0); +emit_32(1086716610); +emit_32(1130788880); +emit_32(1081737216); +emit_32(1086083564); +emit_32(1130788880); +emit_32(3279552512); +emit_32(1084064572); +emit_32(1130532897); +emit_32(3279296528); +emit_32(1091219604); +emit_32(1130532897); +emit_32(3279040545); +emit_32(1094461581); +emit_32(1130532897); +emit_32(3278784496); +emit_32(1096451988); +emit_32(1130532897); +emit_32(3278528512); +emit_32(1098531104); +emit_32(1130532897); +emit_32(3278272528); +emit_32(1099322203); +emit_32(1130532897); +emit_32(3278016545); +emit_32(1099673423); +emit_32(1130532897); +emit_32(3277760496); +emit_32(1100210032); +emit_32(1130532897); +emit_32(3277504512); +emit_32(1100192468); +emit_32(1130532897); +emit_32(3277248528); +emit_32(1099743153); +emit_32(1130532897); +emit_32(3276992545); +emit_32(1099219128); +emit_32(1130532897); +emit_32(3276736496); +emit_32(1097733767); +emit_32(1130532897); +emit_32(3276480512); +emit_32(1098251554); +emit_32(1130532897); +emit_32(3276224528); +emit_32(1098330197); +emit_32(1130532897); +emit_32(3275968545); +emit_32(1097354078); +emit_32(1130532897); +emit_32(3275712496); +emit_32(1095686947); +emit_32(1130532897); +emit_32(3275456512); +emit_32(1096170655); +emit_32(1130532897); +emit_32(3275200528); +emit_32(1096848035); +emit_32(1130532897); +emit_32(3274944545); +emit_32(1098161481); +emit_32(1130532897); +emit_32(3274688496); +emit_32(1097829712); +emit_32(1130532897); +emit_32(3274432512); +emit_32(1097057436); +emit_32(1130532897); +emit_32(3274176528); +emit_32(1096473484); +emit_32(1130532897); +emit_32(3273920545); +emit_32(1095842765); +emit_32(1130532897); +emit_32(3273664496); +emit_32(1095539517); +emit_32(1130532897); +emit_32(3273408512); +emit_32(1095213200); +emit_32(1130532897); +emit_32(3273152528); +emit_32(1094205414); +emit_32(1130532897); +emit_32(3272896545); +emit_32(1093845647); +emit_32(1130532897); +emit_32(3272640496); +emit_32(1093546174); +emit_32(1130532897); +emit_32(3272384512); +emit_32(1092377452); +emit_32(1130532897); +emit_32(3272128528); +emit_32(1091313106); +emit_32(1130532897); +emit_32(3271872545); +emit_32(1087954328); +emit_32(1130532897); +emit_32(3271616496); +emit_32(1087060480); +emit_32(1130532897); +emit_32(3271163904); +emit_32(1087580678); +emit_32(1130532897); +emit_32(3270651937); +emit_32(1090126768); +emit_32(1130532897); +emit_32(3270139970); +emit_32(1090624715); +emit_32(1130532897); +emit_32(3269627871); +emit_32(1091647664); +emit_32(1130532897); +emit_32(3269115904); +emit_32(1092856211); +emit_32(1130532897); +emit_32(3268603937); +emit_32(1094224917); +emit_32(1130532897); +emit_32(3268091970); +emit_32(1095671952); +emit_32(1130532897); +emit_32(3267579911); +emit_32(1095628646); +emit_32(1130532897); +emit_32(3267067904); +emit_32(1095567829); +emit_32(1130532897); +emit_32(3266555911); +emit_32(1093630270); +emit_32(1130532897); +emit_32(3266043904); +emit_32(1092684245); +emit_32(1130532897); +emit_32(3265531911); +emit_32(1091861343); +emit_32(1130532897); +emit_32(3265019904); +emit_32(1092755023); +emit_32(1130532897); +emit_32(3264507911); +emit_32(1094570528); +emit_32(1130532897); +emit_32(3263995904); +emit_32(1095357275); +emit_32(1130532897); +emit_32(3263483911); +emit_32(1096480299); +emit_32(1130532897); +emit_32(3262775296); +emit_32(1096746428); +emit_32(1130532897); +emit_32(3261751309); +emit_32(1096329514); +emit_32(1130532897); +emit_32(3260727296); +emit_32(1095223896); +emit_32(1130532897); +emit_32(3259703309); +emit_32(1093955643); +emit_32(1130532897); +emit_32(3258679296); +emit_32(1093246281); +emit_32(1130532897); +emit_32(3257655309); +emit_32(1094172174); +emit_32(1130532897); +emit_32(3256631296); +emit_32(1095280414); +emit_32(1130532897); +emit_32(3255607309); +emit_32(1095624976); +emit_32(1130532897); +emit_32(3254386688); +emit_32(1095264161); +emit_32(1130532897); +emit_32(3252338714); +emit_32(1094911210); +emit_32(1130532897); +emit_32(3250290688); +emit_32(1094226385); +emit_32(1130532897); +emit_32(3248242714); +emit_32(1092124945); +emit_32(1130532897); +emit_32(3245998080); +emit_32(1090831631); +emit_32(1130532897); +emit_32(3241902132); +emit_32(1089226670); +emit_32(1130532897); +emit_32(3237609472); +emit_32(1089629994); +emit_32(1130532897); +emit_32(3229220864); +emit_32(1089284992); +emit_32(1130532897); +emit_32(0); +emit_32(1088387495); +emit_32(1130532897); +emit_32(1081737216); +emit_32(1088205504); +emit_32(1130532897); +emit_32(3279552512); +emit_32(1083530931); +emit_32(1130276848); +emit_32(3279296528); +emit_32(1090306850); +emit_32(1130276848); +emit_32(3279040545); +emit_32(1093521008); +emit_32(1130276848); +emit_32(3278784496); +emit_32(1096939995); +emit_32(1130276848); +emit_32(3278528512); +emit_32(1098488322); +emit_32(1130276848); +emit_32(3278272528); +emit_32(1099450129); +emit_32(1130276848); +emit_32(3278016545); +emit_32(1099687369); +emit_32(1130276848); +emit_32(3277760496); +emit_32(1099754740); +emit_32(1130276848); +emit_32(3277504512); +emit_32(1099338246); +emit_32(1130276848); +emit_32(3277248528); +emit_32(1099121348); +emit_32(1130276848); +emit_32(3276992545); +emit_32(1097937191); +emit_32(1130276848); +emit_32(3276736496); +emit_32(1097116051); +emit_32(1130276848); +emit_32(3276480512); +emit_32(1097449498); +emit_32(1130276848); +emit_32(3276224528); +emit_32(1097296721); +emit_32(1130276848); +emit_32(3275968545); +emit_32(1096895116); +emit_32(1130276848); +emit_32(3275712496); +emit_32(1095191390); +emit_32(1130276848); +emit_32(3275456512); +emit_32(1095800403); +emit_32(1130276848); +emit_32(3275200528); +emit_32(1096784282); +emit_32(1130276848); +emit_32(3274944545); +emit_32(1097651454); +emit_32(1130276848); +emit_32(3274688496); +emit_32(1097454846); +emit_32(1130276848); +emit_32(3274432512); +emit_32(1096258211); +emit_32(1130276848); +emit_32(3274176528); +emit_32(1096116863); +emit_32(1130276848); +emit_32(3273920545); +emit_32(1096517943); +emit_32(1130276848); +emit_32(3273664496); +emit_32(1095318897); +emit_32(1130276848); +emit_32(3273408512); +emit_32(1094673498); +emit_32(1130276848); +emit_32(3273152528); +emit_32(1093918733); +emit_32(1130276848); +emit_32(3272896545); +emit_32(1093483364); +emit_32(1130276848); +emit_32(3272640496); +emit_32(1092914826); +emit_32(1130276848); +emit_32(3272384512); +emit_32(1091000567); +emit_32(1130276848); +emit_32(3272128528); +emit_32(1089935654); +emit_32(1130276848); +emit_32(3271872545); +emit_32(1086818510); +emit_32(1130276848); +emit_32(3271616496); +emit_32(1085690389); +emit_32(1130276848); +emit_32(3271163904); +emit_32(1086952309); +emit_32(1130276848); +emit_32(3270651937); +emit_32(1088839431); +emit_32(1130276848); +emit_32(3270139970); +emit_32(1089612819); +emit_32(1130276848); +emit_32(3269627871); +emit_32(1091440686); +emit_32(1130276848); +emit_32(3269115904); +emit_32(1092535473); +emit_32(1130276848); +emit_32(3268603937); +emit_32(1092891758); +emit_32(1130276848); +emit_32(3268091970); +emit_32(1094112510); +emit_32(1130276848); +emit_32(3267579911); +emit_32(1095020472); +emit_32(1130276848); +emit_32(3267067904); +emit_32(1094302617); +emit_32(1130276848); +emit_32(3266555911); +emit_32(1094287622); +emit_32(1130276848); +emit_32(3266043904); +emit_32(1092792667); +emit_32(1130276848); +emit_32(3265531911); +emit_32(1093051561); +emit_32(1130276848); +emit_32(3265019904); +emit_32(1093418353); +emit_32(1130276848); +emit_32(3264507911); +emit_32(1094221667); +emit_32(1130276848); +emit_32(3263995904); +emit_32(1095632001); +emit_32(1130276848); +emit_32(3263483911); +emit_32(1097732614); +emit_32(1130276848); +emit_32(3262775296); +emit_32(1098628832); +emit_32(1130276848); +emit_32(3261751309); +emit_32(1097948306); +emit_32(1130276848); +emit_32(3260727296); +emit_32(1097305319); +emit_32(1130276848); +emit_32(3259703309); +emit_32(1096485333); +emit_32(1130276848); +emit_32(3258679296); +emit_32(1095850210); +emit_32(1130276848); +emit_32(3257655309); +emit_32(1095872964); +emit_32(1130276848); +emit_32(3256631296); +emit_32(1096804414); +emit_32(1130276848); +emit_32(3255607309); +emit_32(1096692741); +emit_32(1130276848); +emit_32(3254386688); +emit_32(1096946077); +emit_32(1130276848); +emit_32(3252338714); +emit_32(1096420006); +emit_32(1130276848); +emit_32(3250290688); +emit_32(1094944660); +emit_32(1130276848); +emit_32(3248242714); +emit_32(1093505489); +emit_32(1130276848); +emit_32(3245998080); +emit_32(1092313867); +emit_32(1130276848); +emit_32(3241902132); +emit_32(1091062559); +emit_32(1130276848); +emit_32(3237609472); +emit_32(1091612432); +emit_32(1130276848); +emit_32(3229220864); +emit_32(1091011671); +emit_32(1130276848); +emit_32(0); +emit_32(1090792142); +emit_32(1130276848); +emit_32(1081737216); +emit_32(1088030748); +emit_32(1130276848); +emit_32(3279552512); +emit_32(1084583764); +emit_32(1130020864); +emit_32(3279296528); +emit_32(1087682243); +emit_32(1130020864); +emit_32(3279040545); +emit_32(1092094075); +emit_32(1130020864); +emit_32(3278784496); +emit_32(1095249691); +emit_32(1130020864); +emit_32(3278528512); +emit_32(1098698877); +emit_32(1130020864); +emit_32(3278272528); +emit_32(1099753796); +emit_32(1130020864); +emit_32(3278016545); +emit_32(1100023333); +emit_32(1130020864); +emit_32(3277760496); +emit_32(1099595042); +emit_32(1130020864); +emit_32(3277504512); +emit_32(1099115371); +emit_32(1130020864); +emit_32(3277248528); +emit_32(1098920493); +emit_32(1130020864); +emit_32(3276992545); +emit_32(1097370855); +emit_32(1130020864); +emit_32(3276736496); +emit_32(1096229480); +emit_32(1130020864); +emit_32(3276480512); +emit_32(1096179987); +emit_32(1130020864); +emit_32(3276224528); +emit_32(1096332765); +emit_32(1130020864); +emit_32(3275968545); +emit_32(1094920228); +emit_32(1130020864); +emit_32(3275712496); +emit_32(1094538966); +emit_32(1130020864); +emit_32(3275456512); +emit_32(1096079324); +emit_32(1130020864); +emit_32(3275200528); +emit_32(1096062022); +emit_32(1130020864); +emit_32(3274944545); +emit_32(1097415524); +emit_32(1130020864); +emit_32(3274688496); +emit_32(1097262642); +emit_32(1130020864); +emit_32(3274432512); +emit_32(1096083309); +emit_32(1130020864); +emit_32(3274176528); +emit_32(1097096338); +emit_32(1130020864); +emit_32(3273920545); +emit_32(1097389520); +emit_32(1130020864); +emit_32(3273664496); +emit_32(1096628987); +emit_32(1130020864); +emit_32(3273408512); +emit_32(1095157311); +emit_32(1130020864); +emit_32(3273152528); +emit_32(1093144150); +emit_32(1130020864); +emit_32(3272896545); +emit_32(1092252305); +emit_32(1130020864); +emit_32(3272640496); +emit_32(1090906174); +emit_32(1130020864); +emit_32(3272384512); +emit_32(1089256785); +emit_32(1130020864); +emit_32(3272128528); +emit_32(1086933413); +emit_32(1130020864); +emit_32(3271872545); +emit_32(1085005690); +emit_32(1130020864); +emit_32(3271616496); +emit_32(1084837205); +emit_32(1130020864); +emit_32(3271163904); +emit_32(1085479500); +emit_32(1130020864); +emit_32(3270651937); +emit_32(1086647781); +emit_32(1130020864); +emit_32(3270139970); +emit_32(1088754391); +emit_32(1130020864); +emit_32(3269627871); +emit_32(1090605474); +emit_32(1130020864); +emit_32(3269115904); +emit_32(1091545984); +emit_32(1130020864); +emit_32(3268603937); +emit_32(1092272018); +emit_32(1130020864); +emit_32(3268091970); +emit_32(1093427580); +emit_32(1130020864); +emit_32(3267579911); +emit_32(1094111042); +emit_32(1130020864); +emit_32(3267067904); +emit_32(1094388915); +emit_32(1130020864); +emit_32(3266555911); +emit_32(1094139458); +emit_32(1130020864); +emit_32(3266043904); +emit_32(1094235718); +emit_32(1130020864); +emit_32(3265531911); +emit_32(1094648752); +emit_32(1130020864); +emit_32(3265019904); +emit_32(1095187300); +emit_32(1130020864); +emit_32(3264507911); +emit_32(1096097674); +emit_32(1130020864); +emit_32(3263995904); +emit_32(1097057016); +emit_32(1130020864); +emit_32(3263483911); +emit_32(1097881092); +emit_32(1130020864); +emit_32(3262775296); +emit_32(1098962856); +emit_32(1130020864); +emit_32(3261751309); +emit_32(1098940835); +emit_32(1130020864); +emit_32(3260727296); +emit_32(1098504366); +emit_32(1130020864); +emit_32(3259703309); +emit_32(1098210030); +emit_32(1130020864); +emit_32(3258679296); +emit_32(1097752537); +emit_32(1130020864); +emit_32(3257655309); +emit_32(1096972082); +emit_32(1130020864); +emit_32(3256631296); +emit_32(1097685323); +emit_32(1130020864); +emit_32(3255607309); +emit_32(1097690566); +emit_32(1130020864); +emit_32(3254386688); +emit_32(1097717514); +emit_32(1130020864); +emit_32(3252338714); +emit_32(1096801373); +emit_32(1130020864); +emit_32(3250290688); +emit_32(1096574462); +emit_32(1130020864); +emit_32(3248242714); +emit_32(1095368389); +emit_32(1130020864); +emit_32(3245998080); +emit_32(1094028204); +emit_32(1130020864); +emit_32(3241902132); +emit_32(1093145513); +emit_32(1130020864); +emit_32(3237609472); +emit_32(1092561058); +emit_32(1130020864); +emit_32(3229220864); +emit_32(1091353465); +emit_32(1130020864); +emit_32(0); +emit_32(1090850872); +emit_32(1130020864); +emit_32(1081737216); +emit_32(1090545737); +emit_32(1130020864); +emit_32(3279552512); +emit_32(1083020778); +emit_32(1129764880); +emit_32(3279296528); +emit_32(1086653695); +emit_32(1129764880); +emit_32(3279040545); +emit_32(1091034835); +emit_32(1129764880); +emit_32(3278784496); +emit_32(1094988805); +emit_32(1129764880); +emit_32(3278528512); +emit_32(1098825335); +emit_32(1129764880); +emit_32(3278272528); +emit_32(1099793485); +emit_32(1129764880); +emit_32(3278016545); +emit_32(1100052431); +emit_32(1129764880); +emit_32(3277760496); +emit_32(1099921673); +emit_32(1129764880); +emit_32(3277504512); +emit_32(1099421608); +emit_32(1129764880); +emit_32(3277248528); +emit_32(1098552915); +emit_32(1129764880); +emit_32(3276992545); +emit_32(1097228773); +emit_32(1129764880); +emit_32(3276736496); +emit_32(1095528822); +emit_32(1129764880); +emit_32(3276480512); +emit_32(1095513932); +emit_32(1129764880); +emit_32(3276224528); +emit_32(1095608094); +emit_32(1129764880); +emit_32(3275968545); +emit_32(1094888666); +emit_32(1129764880); +emit_32(3275712496); +emit_32(1094960493); +emit_32(1129764880); +emit_32(3275456512); +emit_32(1095322147); +emit_32(1129764880); +emit_32(3275200528); +emit_32(1095300232); +emit_32(1129764880); +emit_32(3274944545); +emit_32(1096422103); +emit_32(1129764880); +emit_32(3274688496); +emit_32(1096640836); +emit_32(1129764880); +emit_32(3274432512); +emit_32(1097230031); +emit_32(1129764880); +emit_32(3274176528); +emit_32(1097125279); +emit_32(1129764880); +emit_32(3273920545); +emit_32(1097162084); +emit_32(1129764880); +emit_32(3273664496); +emit_32(1096846777); +emit_32(1129764880); +emit_32(3273408512); +emit_32(1095743360); +emit_32(1129764880); +emit_32(3273152528); +emit_32(1093469838); +emit_32(1129764880); +emit_32(3272896545); +emit_32(1092165598); +emit_32(1129764880); +emit_32(3272640496); +emit_32(1090712261); +emit_32(1129764880); +emit_32(3272384512); +emit_32(1088210873); +emit_32(1129764880); +emit_32(3272128528); +emit_32(1085889095); +emit_32(1129764880); +emit_32(3271872545); +emit_32(1083392330); +emit_32(1129764880); +emit_32(3271616496); +emit_32(1083388073); +emit_32(1129764880); +emit_32(3271163904); +emit_32(1084653180); +emit_32(1129764880); +emit_32(3270651937); +emit_32(1086692618); +emit_32(1129764880); +emit_32(3270139970); +emit_32(1088701795); +emit_32(1129764880); +emit_32(3269627871); +emit_32(1090628616); +emit_32(1129764880); +emit_32(3269115904); +emit_32(1091284553); +emit_32(1129764880); +emit_32(3268603937); +emit_32(1092579376); +emit_32(1129764880); +emit_32(3268091970); +emit_32(1093773715); +emit_32(1129764880); +emit_32(3267579911); +emit_32(1094376856); +emit_32(1129764880); +emit_32(3267067904); +emit_32(1094634281); +emit_32(1129764880); +emit_32(3266555911); +emit_32(1094720789); +emit_32(1129764880); +emit_32(3266043904); +emit_32(1095562586); +emit_32(1129764880); +emit_32(3265531911); +emit_32(1096146957); +emit_32(1129764880); +emit_32(3265019904); +emit_32(1096371248); +emit_32(1129764880); +emit_32(3264507911); +emit_32(1097603115); +emit_32(1129764880); +emit_32(3263995904); +emit_32(1098307233); +emit_32(1129764880); +emit_32(3263483911); +emit_32(1098369729); +emit_32(1129764880); +emit_32(3262775296); +emit_32(1099083075); +emit_32(1129764880); +emit_32(3261751309); +emit_32(1099129946); +emit_32(1129764880); +emit_32(3260727296); +emit_32(1099485099); +emit_32(1129764880); +emit_32(3259703309); +emit_32(1099764335); +emit_32(1129764880); +emit_32(3258679296); +emit_32(1099176713); +emit_32(1129764880); +emit_32(3257655309); +emit_32(1098040266); +emit_32(1129764880); +emit_32(3256631296); +emit_32(1098351798); +emit_32(1129764880); +emit_32(3255607309); +emit_32(1098988388); +emit_32(1129764880); +emit_32(3254386688); +emit_32(1098753193); +emit_32(1129764880); +emit_32(3252338714); +emit_32(1098284479); +emit_32(1129764880); +emit_32(3250290688); +emit_32(1097489554); +emit_32(1129764880); +emit_32(3248242714); +emit_32(1095940702); +emit_32(1129764880); +emit_32(3245998080); +emit_32(1094687549); +emit_32(1129764880); +emit_32(3241902132); +emit_32(1094446272); +emit_32(1129764880); +emit_32(3237609472); +emit_32(1093495318); +emit_32(1129764880); +emit_32(3229220864); +emit_32(1092748208); +emit_32(1129764880); +emit_32(0); +emit_32(1092091118); +emit_32(1129764880); +emit_32(1081737216); +emit_32(1091835139); +emit_32(1129764880); +emit_32(3279552512); +emit_32(1080463993); +emit_32(1129508897); +emit_32(3279296528); +emit_32(1085016910); +emit_32(1129508897); +emit_32(3279040545); +emit_32(1089825176); +emit_32(1129508897); +emit_32(3278784496); +emit_32(1094698979); +emit_32(1129508897); +emit_32(3278528512); +emit_32(1097809265); +emit_32(1129508897); +emit_32(3278272528); +emit_32(1099171575); +emit_32(1129508897); +emit_32(3278016545); +emit_32(1099886127); +emit_32(1129508897); +emit_32(3277760496); +emit_32(1099484470); +emit_32(1129508897); +emit_32(3277504512); +emit_32(1098929301); +emit_32(1129508897); +emit_32(3277248528); +emit_32(1097703463); +emit_32(1129508897); +emit_32(3276992545); +emit_32(1096695572); +emit_32(1129508897); +emit_32(3276736496); +emit_32(1094705899); +emit_32(1129508897); +emit_32(3276480512); +emit_32(1094521559); +emit_32(1129508897); +emit_32(3276224528); +emit_32(1094382938); +emit_32(1129508897); +emit_32(3275968545); +emit_32(1093723488); +emit_32(1129508897); +emit_32(3275712496); +emit_32(1094327258); +emit_32(1129508897); +emit_32(3275456512); +emit_32(1094643404); +emit_32(1129508897); +emit_32(3275200528); +emit_32(1095341441); +emit_32(1129508897); +emit_32(3274944545); +emit_32(1096856319); +emit_32(1129508897); +emit_32(3274688496); +emit_32(1097642751); +emit_32(1129508897); +emit_32(3274432512); +emit_32(1097737857); +emit_32(1129508897); +emit_32(3274176528); +emit_32(1097157784); +emit_32(1129508897); +emit_32(3273920545); +emit_32(1096063805); +emit_32(1129508897); +emit_32(3273664496); +emit_32(1095072272); +emit_32(1129508897); +emit_32(3273408512); +emit_32(1094164729); +emit_32(1129508897); +emit_32(3273152528); +emit_32(1092558321); +emit_32(1129508897); +emit_32(3272896545); +emit_32(1090029460); +emit_32(1129508897); +emit_32(3272640496); +emit_32(1087566627); +emit_32(1129508897); +emit_32(3272384512); +emit_32(1087370124); +emit_32(1129508897); +emit_32(3272128528); +emit_32(1084743064); +emit_32(1129508897); +emit_32(3271872545); +emit_32(1082700102); +emit_32(1129508897); +emit_32(3271616496); +emit_32(1083566646); +emit_32(1129508897); +emit_32(3271163904); +emit_32(1084803462); +emit_32(1129508897); +emit_32(3270651937); +emit_32(1086593633); +emit_32(1129508897); +emit_32(3270139970); +emit_32(1090542266); +emit_32(1129508897); +emit_32(3269627871); +emit_32(1091515565); +emit_32(1129508897); +emit_32(3269115904); +emit_32(1092537947); +emit_32(1129508897); +emit_32(3268603937); +emit_32(1093041704); +emit_32(1129508897); +emit_32(3268091970); +emit_32(1093964870); +emit_32(1129508897); +emit_32(3267579911); +emit_32(1094427502); +emit_32(1129508897); +emit_32(3267067904); +emit_32(1095046267); +emit_32(1129508897); +emit_32(3266555911); +emit_32(1095386844); +emit_32(1129508897); +emit_32(3266043904); +emit_32(1095993865); +emit_32(1129508897); +emit_32(3265531911); +emit_32(1096745379); +emit_32(1129508897); +emit_32(3265019904); +emit_32(1098208458); +emit_32(1129508897); +emit_32(3264507911); +emit_32(1099059325); +emit_32(1129508897); +emit_32(3263995904); +emit_32(1098961755); +emit_32(1129508897); +emit_32(3263483911); +emit_32(1099315859); +emit_32(1129508897); +emit_32(3262775296); +emit_32(1099329071); +emit_32(1129508897); +emit_32(3261751309); +emit_32(1098988231); +emit_32(1129508897); +emit_32(3260727296); +emit_32(1099657694); +emit_32(1129508897); +emit_32(3259703309); +emit_32(1099596038); +emit_32(1129508897); +emit_32(3258679296); +emit_32(1099042285); +emit_32(1129508897); +emit_32(3257655309); +emit_32(1098921594); +emit_32(1129508897); +emit_32(3256631296); +emit_32(1099409339); +emit_32(1129508897); +emit_32(3255607309); +emit_32(1099994654); +emit_32(1129508897); +emit_32(3254386688); +emit_32(1099682493); +emit_32(1129508897); +emit_32(3252338714); +emit_32(1099586024); +emit_32(1129508897); +emit_32(3250290688); +emit_32(1098985085); +emit_32(1129508897); +emit_32(3248242714); +emit_32(1098287940); +emit_32(1129508897); +emit_32(3245998080); +emit_32(1096812488); +emit_32(1129508897); +emit_32(3241902132); +emit_32(1096132172); +emit_32(1129508897); +emit_32(3237609472); +emit_32(1095219072); +emit_32(1129508897); +emit_32(3229220864); +emit_32(1094487061); +emit_32(1129508897); +emit_32(0); +emit_32(1093746137); +emit_32(1129508897); +emit_32(1081737216); +emit_32(1093216816); +emit_32(1129508897); +emit_32(3279552512); +emit_32(1080029128); +emit_32(1129252848); +emit_32(3279296528); +emit_32(1082132361); +emit_32(1129252848); +emit_32(3279040545); +emit_32(1088551786); +emit_32(1129252848); +emit_32(3278784496); +emit_32(1092773688); +emit_32(1129252848); +emit_32(3278528512); +emit_32(1095789393); +emit_32(1129252848); +emit_32(3278272528); +emit_32(1098426352); +emit_32(1129252848); +emit_32(3278016545); +emit_32(1099118884); +emit_32(1129252848); +emit_32(3277760496); +emit_32(1098946498); +emit_32(1129252848); +emit_32(3277504512); +emit_32(1098247674); +emit_32(1129252848); +emit_32(3277248528); +emit_32(1097180538); +emit_32(1129252848); +emit_32(3276992545); +emit_32(1095903583); +emit_32(1129252848); +emit_32(3276736496); +emit_32(1093972944); +emit_32(1129252848); +emit_32(3276480512); +emit_32(1094119535); +emit_32(1129252848); +emit_32(3276224528); +emit_32(1094115656); +emit_32(1129252848); +emit_32(3275968545); +emit_32(1093250371); +emit_32(1129252848); +emit_32(3275712496); +emit_32(1093516919); +emit_32(1129252848); +emit_32(3275456512); +emit_32(1094550500); +emit_32(1129252848); +emit_32(3275200528); +emit_32(1095584186); +emit_32(1129252848); +emit_32(3274944545); +emit_32(1097766378); +emit_32(1129252848); +emit_32(3274688496); +emit_32(1097882665); +emit_32(1129252848); +emit_32(3274432512); +emit_32(1097698640); +emit_32(1129252848); +emit_32(3274176528); +emit_32(1096544577); +emit_32(1129252848); +emit_32(3273920545); +emit_32(1095417568); +emit_32(1129252848); +emit_32(3273664496); +emit_32(1093038558); +emit_32(1129252848); +emit_32(3273408512); +emit_32(1092208883); +emit_32(1129252848); +emit_32(3273152528); +emit_32(1091657217); +emit_32(1129252848); +emit_32(3272896545); +emit_32(1088339847); +emit_32(1129252848); +emit_32(3272640496); +emit_32(1087749541); +emit_32(1129252848); +emit_32(3272384512); +emit_32(1086492760); +emit_32(1129252848); +emit_32(3272128528); +emit_32(1084289744); +emit_32(1129252848); +emit_32(3271872545); +emit_32(1084101671); +emit_32(1129252848); +emit_32(3271616496); +emit_32(1084133212); +emit_32(1129252848); +emit_32(3271163904); +emit_32(1084719282); +emit_32(1129252848); +emit_32(3270651937); +emit_32(1088718929); +emit_32(1129252848); +emit_32(3270139970); +emit_32(1091794685); +emit_32(1129252848); +emit_32(3269627871); +emit_32(1093539149); +emit_32(1129252848); +emit_32(3269115904); +emit_32(1093719084); +emit_32(1129252848); +emit_32(3268603937); +emit_32(1094263190); +emit_32(1129252848); +emit_32(3268091970); +emit_32(1095010510); +emit_32(1129252848); +emit_32(3267579911); +emit_32(1095499566); +emit_32(1129252848); +emit_32(3267067904); +emit_32(1095406243); +emit_32(1129252848); +emit_32(3266555911); +emit_32(1095095969); +emit_32(1129252848); +emit_32(3266043904); +emit_32(1095937871); +emit_32(1129252848); +emit_32(3265531911); +emit_32(1096329200); +emit_32(1129252848); +emit_32(3265019904); +emit_32(1097172045); +emit_32(1129252848); +emit_32(3264507911); +emit_32(1098488847); +emit_32(1129252848); +emit_32(3263995904); +emit_32(1099439328); +emit_32(1129252848); +emit_32(3263483911); +emit_32(1099647261); +emit_32(1129252848); +emit_32(3262775296); +emit_32(1099958583); +emit_32(1129252848); +emit_32(3261751309); +emit_32(1099777022); +emit_32(1129252848); +emit_32(3260727296); +emit_32(1099447507); +emit_32(1129252848); +emit_32(3259703309); +emit_32(1099254674); +emit_32(1129252848); +emit_32(3258679296); +emit_32(1099498363); +emit_32(1129252848); +emit_32(3257655309); +emit_32(1099988625); +emit_32(1129252848); +emit_32(3256631296); +emit_32(1100359821); +emit_32(1129252848); +emit_32(3255607309); +emit_32(1100639581); +emit_32(1129252848); +emit_32(3254386688); +emit_32(1100562616); +emit_32(1129252848); +emit_32(3252338714); +emit_32(1100538551); +emit_32(1129252848); +emit_32(3250290688); +emit_32(1099604846); +emit_32(1129252848); +emit_32(3248242714); +emit_32(1098614466); +emit_32(1129252848); +emit_32(3245998080); +emit_32(1097631216); +emit_32(1129252848); +emit_32(3241902132); +emit_32(1097023042); +emit_32(1129252848); +emit_32(3237609472); +emit_32(1096365690); +emit_32(1129252848); +emit_32(3229220864); +emit_32(1095964819); +emit_32(1129252848); +emit_32(0); +emit_32(1094558784); +emit_32(1129252848); +emit_32(1081737216); +emit_32(1093092141); +emit_32(1129252848); +emit_32(3279552512); +emit_32(1081540755); +emit_32(1128996864); +emit_32(3279296528); +emit_32(1081307971); +emit_32(1128996864); +emit_32(3279040545); +emit_32(1088074180); +emit_32(1128996864); +emit_32(3278784496); +emit_32(1092649012); +emit_32(1128996864); +emit_32(3278528512); +emit_32(1095750805); +emit_32(1128996864); +emit_32(3278272528); +emit_32(1098025586); +emit_32(1128996864); +emit_32(3278016545); +emit_32(1098512754); +emit_32(1128996864); +emit_32(3277760496); +emit_32(1097976513); +emit_32(1128996864); +emit_32(3277504512); +emit_32(1097395287); +emit_32(1128996864); +emit_32(3277248528); +emit_32(1096884211); +emit_32(1128996864); +emit_32(3276992545); +emit_32(1096131333); +emit_32(1128996864); +emit_32(3276736496); +emit_32(1094845884); +emit_32(1128996864); +emit_32(3276480512); +emit_32(1093703565); +emit_32(1128996864); +emit_32(3276224528); +emit_32(1092970506); +emit_32(1128996864); +emit_32(3275968545); +emit_32(1093979341); +emit_32(1128996864); +emit_32(3275712496); +emit_32(1093333942); +emit_32(1128996864); +emit_32(3275456512); +emit_32(1094401183); +emit_32(1128996864); +emit_32(3275200528); +emit_32(1095977612); +emit_32(1128996864); +emit_32(3274944545); +emit_32(1096785330); +emit_32(1128996864); +emit_32(3274688496); +emit_32(1097852781); +emit_32(1128996864); +emit_32(3274432512); +emit_32(1097488400); +emit_32(1128996864); +emit_32(3274176528); +emit_32(1096273520); +emit_32(1128996864); +emit_32(3273920545); +emit_32(1094778041); +emit_32(1128996864); +emit_32(3273664496); +emit_32(1093292943); +emit_32(1128996864); +emit_32(3273408512); +emit_32(1092898574); +emit_32(1128996864); +emit_32(3273152528); +emit_32(1090867996); +emit_32(1128996864); +emit_32(3272896545); +emit_32(1089691860); +emit_32(1128996864); +emit_32(3272640496); +emit_32(1086739427); +emit_32(1128996864); +emit_32(3272384512); +emit_32(1085853087); +emit_32(1128996864); +emit_32(3272128528); +emit_32(1084833724); +emit_32(1128996864); +emit_32(3271872545); +emit_32(1084451895); +emit_32(1128996864); +emit_32(3271616496); +emit_32(1085526644); +emit_32(1128996864); +emit_32(3271163904); +emit_32(1089112459); +emit_32(1128996864); +emit_32(3270651937); +emit_32(1091663645); +emit_32(1128996864); +emit_32(3270139970); +emit_32(1093345162); +emit_32(1128996864); +emit_32(3269627871); +emit_32(1094246728); +emit_32(1128996864); +emit_32(3269115904); +emit_32(1095325398); +emit_32(1128996864); +emit_32(3268603937); +emit_32(1096227907); +emit_32(1128996864); +emit_32(3268091970); +emit_32(1097145097); +emit_32(1128996864); +emit_32(3267579911); +emit_32(1097392036); +emit_32(1128996864); +emit_32(3267067904); +emit_32(1096728288); +emit_32(1128996864); +emit_32(3266555911); +emit_32(1095835320); +emit_32(1128996864); +emit_32(3266043904); +emit_32(1095814034); +emit_32(1128996864); +emit_32(3265531911); +emit_32(1096693475); +emit_32(1128996864); +emit_32(3265019904); +emit_32(1097025244); +emit_32(1128996864); +emit_32(3264507911); +emit_32(1099054920); +emit_32(1128996864); +emit_32(3263995904); +emit_32(1099511523); +emit_32(1128996864); +emit_32(3263483911); +emit_32(1100212234); +emit_32(1128996864); +emit_32(3262775296); +emit_32(1100597481); +emit_32(1128996864); +emit_32(3261751309); +emit_32(1100490945); +emit_32(1128996864); +emit_32(3260727296); +emit_32(1100197711); +emit_32(1128996864); +emit_32(3259703309); +emit_32(1099593207); +emit_32(1128996864); +emit_32(3258679296); +emit_32(1099432565); +emit_32(1128996864); +emit_32(3257655309); +emit_32(1100182245); +emit_32(1128996864); +emit_32(3256631296); +emit_32(1100992112); +emit_32(1128996864); +emit_32(3255607309); +emit_32(1101070441); +emit_32(1128996864); +emit_32(3254386688); +emit_32(1101070860); +emit_32(1128996864); +emit_32(3252338714); +emit_32(1100442554); +emit_32(1128996864); +emit_32(3250290688); +emit_32(1100162689); +emit_32(1128996864); +emit_32(3248242714); +emit_32(1099264741); +emit_32(1128996864); +emit_32(3245998080); +emit_32(1098634809); +emit_32(1128996864); +emit_32(3241902132); +emit_32(1097542192); +emit_32(1128996864); +emit_32(3237609472); +emit_32(1097603953); +emit_32(1128996864); +emit_32(3229220864); +emit_32(1097205809); +emit_32(1128996864); +emit_32(0); +emit_32(1095764961); +emit_32(1128996864); +emit_32(1081737216); +emit_32(1094158228); +emit_32(1128996864); +emit_32(3279552512); +emit_32(1083563940); +emit_32(1128740880); +emit_32(3279296528); +emit_32(1083505514); +emit_32(1128740880); +emit_32(3279040545); +emit_32(1087057166); +emit_32(1128740880); +emit_32(3278784496); +emit_32(1091606046); +emit_32(1128740880); +emit_32(3278528512); +emit_32(1094145750); +emit_32(1128740880); +emit_32(3278272528); +emit_32(1096803366); +emit_32(1128740880); +emit_32(3278016545); +emit_32(1097677459); +emit_32(1128740880); +emit_32(3277760496); +emit_32(1096868377); +emit_32(1128740880); +emit_32(3277504512); +emit_32(1097277637); +emit_32(1128740880); +emit_32(3277248528); +emit_32(1097130626); +emit_32(1128740880); +emit_32(3276992545); +emit_32(1095319526); +emit_32(1128740880); +emit_32(3276736496); +emit_32(1094270635); +emit_32(1128740880); +emit_32(3276480512); +emit_32(1092528657); +emit_32(1128740880); +emit_32(3276224528); +emit_32(1091786055); +emit_32(1128740880); +emit_32(3275968545); +emit_32(1092729228); +emit_32(1128740880); +emit_32(3275712496); +emit_32(1093207379); +emit_32(1128740880); +emit_32(3275456512); +emit_32(1094361966); +emit_32(1128740880); +emit_32(3275200528); +emit_32(1096155975); +emit_32(1128740880); +emit_32(3274944545); +emit_32(1098072457); +emit_32(1128740880); +emit_32(3274688496); +emit_32(1097534957); +emit_32(1128740880); +emit_32(3274432512); +emit_32(1096843212); +emit_32(1128740880); +emit_32(3274176528); +emit_32(1095427215); +emit_32(1128740880); +emit_32(3273920545); +emit_32(1095393870); +emit_32(1128740880); +emit_32(3273664496); +emit_32(1094328831); +emit_32(1128740880); +emit_32(3273408512); +emit_32(1093549005); +emit_32(1128740880); +emit_32(3273152528); +emit_32(1091282907); +emit_32(1128740880); +emit_32(3272896545); +emit_32(1089591113); +emit_32(1128740880); +emit_32(3272640496); +emit_32(1087793476); +emit_32(1128740880); +emit_32(3272384512); +emit_32(1084819170); +emit_32(1128740880); +emit_32(3272128528); +emit_32(1085220523); +emit_32(1128740880); +emit_32(3271872545); +emit_32(1088960395); +emit_32(1128740880); +emit_32(3271616496); +emit_32(1091632869); +emit_32(1128740880); +emit_32(3271163904); +emit_32(1092528154); +emit_32(1128740880); +emit_32(3270651937); +emit_32(1093541036); +emit_32(1128740880); +emit_32(3270139970); +emit_32(1094536554); +emit_32(1128740880); +emit_32(3269627871); +emit_32(1095733504); +emit_32(1128740880); +emit_32(3269115904); +emit_32(1096930453); +emit_32(1128740880); +emit_32(3268603937); +emit_32(1097898289); +emit_32(1128740880); +emit_32(3268091970); +emit_32(1098312162); +emit_32(1128740880); +emit_32(3267579911); +emit_32(1098889088); +emit_32(1128740880); +emit_32(3267067904); +emit_32(1098348023); +emit_32(1128740880); +emit_32(3266555911); +emit_32(1097239783); +emit_32(1128740880); +emit_32(3266043904); +emit_32(1096978163); +emit_32(1128740880); +emit_32(3265531911); +emit_32(1097254987); +emit_32(1128740880); +emit_32(3265019904); +emit_32(1097619682); +emit_32(1128740880); +emit_32(3264507911); +emit_32(1098276300); +emit_32(1128740880); +emit_32(3263995904); +emit_32(1099118097); +emit_32(1128740880); +emit_32(3263483911); +emit_32(1099929276); +emit_32(1128740880); +emit_32(3262775296); +emit_32(1100678011); +emit_32(1128740880); +emit_32(3261751309); +emit_32(1100864396); +emit_32(1128740880); +emit_32(3260727296); +emit_32(1100514486); +emit_32(1128740880); +emit_32(3259703309); +emit_32(1100086300); +emit_32(1128740880); +emit_32(3258679296); +emit_32(1099510946); +emit_32(1128740880); +emit_32(3257655309); +emit_32(1100286840); +emit_32(1128740880); +emit_32(3256631296); +emit_32(1100610850); +emit_32(1128740880); +emit_32(3255607309); +emit_32(1101170370); +emit_32(1128740880); +emit_32(3254386688); +emit_32(1100818206); +emit_32(1128740880); +emit_32(3252338714); +emit_32(1100338640); +emit_32(1128740880); +emit_32(3250290688); +emit_32(1099906469); +emit_32(1128740880); +emit_32(3248242714); +emit_32(1099577688); +emit_32(1128740880); +emit_32(3245998080); +emit_32(1099007892); +emit_32(1128740880); +emit_32(3241902132); +emit_32(1098245472); +emit_32(1128740880); +emit_32(3237609472); +emit_32(1097688783); +emit_32(1128740880); +emit_32(3229220864); +emit_32(1096704380); +emit_32(1128740880); +emit_32(0); +emit_32(1095305265); +emit_32(1128740880); +emit_32(1081737216); +emit_32(1094837495); +emit_32(1128740880); +emit_32(3279552512); +emit_32(1085717569); +emit_32(1128484897); +emit_32(3279296528); +emit_32(1083562745); +emit_32(1128484897); +emit_32(3279040545); +emit_32(1084856981); +emit_32(1128484897); +emit_32(3278784496); +emit_32(1089938108); +emit_32(1128484897); +emit_32(3278528512); +emit_32(1093643482); +emit_32(1128484897); +emit_32(3278272528); +emit_32(1095378456); +emit_32(1128484897); +emit_32(3278016545); +emit_32(1096701654); +emit_32(1128484897); +emit_32(3277760496); +emit_32(1095991453); +emit_32(1128484897); +emit_32(3277504512); +emit_32(1096837130); +emit_32(1128484897); +emit_32(3277248528); +emit_32(1097429470); +emit_32(1128484897); +emit_32(3276992545); +emit_32(1095425747); +emit_32(1128484897); +emit_32(3276736496); +emit_32(1092456704); +emit_32(1128484897); +emit_32(3276480512); +emit_32(1090579469); +emit_32(1128484897); +emit_32(3276224528); +emit_32(1089853278); +emit_32(1128484897); +emit_32(3275968545); +emit_32(1091601590); +emit_32(1128484897); +emit_32(3275712496); +emit_32(1093452222); +emit_32(1128484897); +emit_32(3275456512); +emit_32(1094872308); +emit_32(1128484897); +emit_32(3275200528); +emit_32(1095959891); +emit_32(1128484897); +emit_32(3274944545); +emit_32(1097078827); +emit_32(1128484897); +emit_32(3274688496); +emit_32(1096858206); +emit_32(1128484897); +emit_32(3274432512); +emit_32(1096053948); +emit_32(1128484897); +emit_32(3274176528); +emit_32(1095523264); +emit_32(1128484897); +emit_32(3273920545); +emit_32(1095300547); +emit_32(1128484897); +emit_32(3273664496); +emit_32(1094152041); +emit_32(1128484897); +emit_32(3273408512); +emit_32(1093293887); +emit_32(1128484897); +emit_32(3273152528); +emit_32(1091954824); +emit_32(1128484897); +emit_32(3272896545); +emit_32(1090264488); +emit_32(1128484897); +emit_32(3272640496); +emit_32(1087964038); +emit_32(1128484897); +emit_32(3272384512); +emit_32(1084913101); +emit_32(1128484897); +emit_32(3272128528); +emit_32(1087644432); +emit_32(1128484897); +emit_32(3271872545); +emit_32(1091545292); +emit_32(1128484897); +emit_32(3271616496); +emit_32(1092949010); +emit_32(1128484897); +emit_32(3271163904); +emit_32(1093888744); +emit_32(1128484897); +emit_32(3270651937); +emit_32(1095009252); +emit_32(1128484897); +emit_32(3270139970); +emit_32(1096532728); +emit_32(1128484897); +emit_32(3269627871); +emit_32(1096831048); +emit_32(1128484897); +emit_32(3269115904); +emit_32(1098431280); +emit_32(1128484897); +emit_32(3268603937); +emit_32(1098981153); +emit_32(1128484897); +emit_32(3268091970); +emit_32(1099259917); +emit_32(1128484897); +emit_32(3267579911); +emit_32(1099047004); +emit_32(1128484897); +emit_32(3267067904); +emit_32(1099189663); +emit_32(1128484897); +emit_32(3266555911); +emit_32(1097994233); +emit_32(1128484897); +emit_32(3266043904); +emit_32(1097616536); +emit_32(1128484897); +emit_32(3265531911); +emit_32(1098345402); +emit_32(1128484897); +emit_32(3265019904); +emit_32(1098214644); +emit_32(1128484897); +emit_32(3264507911); +emit_32(1097712481); +emit_32(1128484897); +emit_32(3263995904); +emit_32(1099049258); +emit_32(1128484897); +emit_32(3263483911); +emit_32(1099930586); +emit_32(1128484897); +emit_32(3262775296); +emit_32(1100537135); +emit_32(1128484897); +emit_32(3261751309); +emit_32(1100755920); +emit_32(1128484897); +emit_32(3260727296); +emit_32(1100566915); +emit_32(1128484897); +emit_32(3259703309); +emit_32(1099988940); +emit_32(1128484897); +emit_32(3258679296); +emit_32(1099547332); +emit_32(1128484897); +emit_32(3257655309); +emit_32(1100698878); +emit_32(1128484897); +emit_32(3256631296); +emit_32(1101203033); +emit_32(1128484897); +emit_32(3255607309); +emit_32(1100897845); +emit_32(1128484897); +emit_32(3254386688); +emit_32(1100472176); +emit_32(1128484897); +emit_32(3252338714); +emit_32(1100121008); +emit_32(1128484897); +emit_32(3250290688); +emit_32(1100059666); +emit_32(1128484897); +emit_32(3248242714); +emit_32(1099700424); +emit_32(1128484897); +emit_32(3245998080); +emit_32(1099220596); +emit_32(1128484897); +emit_32(3241902132); +emit_32(1098230163); +emit_32(1128484897); +emit_32(3237609472); +emit_32(1097298503); +emit_32(1128484897); +emit_32(3229220864); +emit_32(1096617663); +emit_32(1128484897); +emit_32(0); +emit_32(1095209006); +emit_32(1128484897); +emit_32(1081737216); +emit_32(1096602144); +emit_32(1128484897); +emit_32(3279552512); +emit_32(1086488964); +emit_32(1128228848); +emit_32(3279296528); +emit_32(1085207394); +emit_32(1128228848); +emit_32(3279040545); +emit_32(1083144426); +emit_32(1128228848); +emit_32(3278784496); +emit_32(1087877279); +emit_32(1128228848); +emit_32(3278528512); +emit_32(1092360979); +emit_32(1128228848); +emit_32(3278272528); +emit_32(1094229112); +emit_32(1128228848); +emit_32(3278016545); +emit_32(1095715678); +emit_32(1128228848); +emit_32(3277760496); +emit_32(1095363042); +emit_32(1128228848); +emit_32(3277504512); +emit_32(1095186881); +emit_32(1128228848); +emit_32(3277248528); +emit_32(1096363593); +emit_32(1128228848); +emit_32(3276992545); +emit_32(1094958082); +emit_32(1128228848); +emit_32(3276736496); +emit_32(1091948081); +emit_32(1128228848); +emit_32(3276480512); +emit_32(1089598789); +emit_32(1128228848); +emit_32(3276224528); +emit_32(1090830991); +emit_32(1128228848); +emit_32(3275968545); +emit_32(1092661490); +emit_32(1128228848); +emit_32(3275712496); +emit_32(1094218416); +emit_32(1128228848); +emit_32(3275456512); +emit_32(1095692504); +emit_32(1128228848); +emit_32(3275200528); +emit_32(1096747267); +emit_32(1128228848); +emit_32(3274944545); +emit_32(1096959708); +emit_32(1128228848); +emit_32(3274688496); +emit_32(1096562717); +emit_32(1128228848); +emit_32(3274432512); +emit_32(1095550422); +emit_32(1128228848); +emit_32(3274176528); +emit_32(1095356331); +emit_32(1128228848); +emit_32(3273920545); +emit_32(1094786744); +emit_32(1128228848); +emit_32(3273664496); +emit_32(1094402651); +emit_32(1128228848); +emit_32(3273408512); +emit_32(1093003326); +emit_32(1128228848); +emit_32(3273152528); +emit_32(1091879924); +emit_32(1128228848); +emit_32(3272896545); +emit_32(1090340950); +emit_32(1128228848); +emit_32(3272640496); +emit_32(1088120653); +emit_32(1128228848); +emit_32(3272384512); +emit_32(1090582175); +emit_32(1128228848); +emit_32(3272128528); +emit_32(1091421633); +emit_32(1128228848); +emit_32(3271872545); +emit_32(1093724013); +emit_32(1128228848); +emit_32(3271616496); +emit_32(1095136025); +emit_32(1128228848); +emit_32(3271163904); +emit_32(1096213647); +emit_32(1128228848); +emit_32(3270651937); +emit_32(1096677537); +emit_32(1128228848); +emit_32(3270139970); +emit_32(1097917268); +emit_32(1128228848); +emit_32(3269627871); +emit_32(1098919130); +emit_32(1128228848); +emit_32(3269115904); +emit_32(1099360947); +emit_32(1128228848); +emit_32(3268603937); +emit_32(1099387686); +emit_32(1128228848); +emit_32(3268091970); +emit_32(1099422027); +emit_32(1128228848); +emit_32(3267579911); +emit_32(1099524892); +emit_32(1128228848); +emit_32(3267067904); +emit_32(1099391723); +emit_32(1128228848); +emit_32(3266555911); +emit_32(1098232680); +emit_32(1128228848); +emit_32(3266043904); +emit_32(1097328073); +emit_32(1128228848); +emit_32(3265531911); +emit_32(1098499542); +emit_32(1128228848); +emit_32(3265019904); +emit_32(1098867278); +emit_32(1128228848); +emit_32(3264507911); +emit_32(1097477915); +emit_32(1128228848); +emit_32(3263995904); +emit_32(1098419431); +emit_32(1128228848); +emit_32(3263483911); +emit_32(1099657118); +emit_32(1128228848); +emit_32(3262775296); +emit_32(1100094951); +emit_32(1128228848); +emit_32(3261751309); +emit_32(1100491260); +emit_32(1128228848); +emit_32(3260727296); +emit_32(1100506884); +emit_32(1128228848); +emit_32(3259703309); +emit_32(1099794324); +emit_32(1128228848); +emit_32(3258679296); +emit_32(1099789291); +emit_32(1128228848); +emit_32(3257655309); +emit_32(1100379115); +emit_32(1128228848); +emit_32(3256631296); +emit_32(1100923221); +emit_32(1128228848); +emit_32(3255607309); +emit_32(1100371932); +emit_32(1128228848); +emit_32(3254386688); +emit_32(1100316148); +emit_32(1128228848); +emit_32(3252338714); +emit_32(1100515692); +emit_32(1128228848); +emit_32(3250290688); +emit_32(1100307916); +emit_32(1128228848); +emit_32(3248242714); +emit_32(1099810210); +emit_32(1128228848); +emit_32(3245998080); +emit_32(1099154640); +emit_32(1128228848); +emit_32(3241902132); +emit_32(1098355573); +emit_32(1128228848); +emit_32(3237609472); +emit_32(1097472777); +emit_32(1128228848); +emit_32(3229220864); +emit_32(1096682465); +emit_32(1128228848); +emit_32(0); +emit_32(1096577398); +emit_32(1128228848); +emit_32(1081737216); +emit_32(1097223216); +emit_32(1128228848); +emit_32(3279552512); +emit_32(1086853617); +emit_32(1127972864); +emit_32(3279296528); +emit_32(1086298564); +emit_32(1127972864); +emit_32(3279040545); +emit_32(1085278425); +emit_32(1127972864); +emit_32(3278784496); +emit_32(1085319131); +emit_32(1127972864); +emit_32(3278528512); +emit_32(1090251360); +emit_32(1127972864); +emit_32(3278272528); +emit_32(1092641777); +emit_32(1127972864); +emit_32(3278016545); +emit_32(1093620623); +emit_32(1127972864); +emit_32(3277760496); +emit_32(1094102653); +emit_32(1127972864); +emit_32(3277504512); +emit_32(1093830758); +emit_32(1127972864); +emit_32(3277248528); +emit_32(1094796916); +emit_32(1127972864); +emit_32(3276992545); +emit_32(1093478751); +emit_32(1127972864); +emit_32(3276736496); +emit_32(1091477050); +emit_32(1127972864); +emit_32(3276480512); +emit_32(1089930831); +emit_32(1127972864); +emit_32(3276224528); +emit_32(1091537375); +emit_32(1127972864); +emit_32(3275968545); +emit_32(1093540302); +emit_32(1127972864); +emit_32(3275712496); +emit_32(1095329278); +emit_32(1127972864); +emit_32(3275456512); +emit_32(1096120323); +emit_32(1127972864); +emit_32(3275200528); +emit_32(1096433743); +emit_32(1127972864); +emit_32(3274944545); +emit_32(1096683304); +emit_32(1127972864); +emit_32(3274688496); +emit_32(1096592182); +emit_32(1127972864); +emit_32(3274432512); +emit_32(1095725220); +emit_32(1127972864); +emit_32(3274176528); +emit_32(1094999815); +emit_32(1127972864); +emit_32(3273920545); +emit_32(1094300520); +emit_32(1127972864); +emit_32(3273664496); +emit_32(1093576583); +emit_32(1127972864); +emit_32(3273408512); +emit_32(1092872779); +emit_32(1127972864); +emit_32(3273152528); +emit_32(1091911098); +emit_32(1127972864); +emit_32(3272896545); +emit_32(1091753434); +emit_32(1127972864); +emit_32(3272640496); +emit_32(1092133438); +emit_32(1127972864); +emit_32(3272384512); +emit_32(1093071169); +emit_32(1127972864); +emit_32(3272128528); +emit_32(1094518728); +emit_32(1127972864); +emit_32(3271872545); +emit_32(1096084986); +emit_32(1127972864); +emit_32(3271616496); +emit_32(1096360657); +emit_32(1127972864); +emit_32(3271163904); +emit_32(1096731014); +emit_32(1127972864); +emit_32(3270651937); +emit_32(1098285738); +emit_32(1127972864); +emit_32(3270139970); +emit_32(1099415631); +emit_32(1127972864); +emit_32(3269627871); +emit_32(1099949408); +emit_32(1127972864); +emit_32(3269115904); +emit_32(1100367161); +emit_32(1127972864); +emit_32(3268603937); +emit_32(1100361866); +emit_32(1127972864); +emit_32(3268091970); +emit_32(1100305714); +emit_32(1127972864); +emit_32(3267579911); +emit_32(1100208354); +emit_32(1127972864); +emit_32(3267067904); +emit_32(1100142975); +emit_32(1127972864); +emit_32(3266555911); +emit_32(1099102421); +emit_32(1127972864); +emit_32(3266043904); +emit_32(1097385430); +emit_32(1127972864); +emit_32(3265531911); +emit_32(1097822162); +emit_32(1127972864); +emit_32(3265019904); +emit_32(1098963275); +emit_32(1127972864); +emit_32(3264507911); +emit_32(1097304900); +emit_32(1127972864); +emit_32(3263995904); +emit_32(1097683121); +emit_32(1127972864); +emit_32(3263483911); +emit_32(1099069810); +emit_32(1127972864); +emit_32(3262775296); +emit_32(1099605213); +emit_32(1127972864); +emit_32(3261751309); +emit_32(1100129868); +emit_32(1127972864); +emit_32(3260727296); +emit_32(1100106433); +emit_32(1127972864); +emit_32(3259703309); +emit_32(1099661207); +emit_32(1127972864); +emit_32(3258679296); +emit_32(1099945896); +emit_32(1127972864); +emit_32(3257655309); +emit_32(1100312216); +emit_32(1127972864); +emit_32(3256631296); +emit_32(1100604401); +emit_32(1127972864); +emit_32(3255607309); +emit_32(1101000920); +emit_32(1127972864); +emit_32(3254386688); +emit_32(1100943301); +emit_32(1127972864); +emit_32(3252338714); +emit_32(1100628886); +emit_32(1127972864); +emit_32(3250290688); +emit_32(1100484759); +emit_32(1127972864); +emit_32(3248242714); +emit_32(1099700843); +emit_32(1127972864); +emit_32(3245998080); +emit_32(1099261752); +emit_32(1127972864); +emit_32(3241902132); +emit_32(1098560045); +emit_32(1127972864); +emit_32(3237609472); +emit_32(1097453588); +emit_32(1127972864); +emit_32(3229220864); +emit_32(1096754712); +emit_32(1127972864); +emit_32(0); +emit_32(1097041812); +emit_32(1127972864); +emit_32(1081737216); +emit_32(1096992739); +emit_32(1127972864); +emit_32(3279552512); +emit_32(1088632086); +emit_32(1127716880); +emit_32(3279296528); +emit_32(1087150511); +emit_32(1127716880); +emit_32(3279040545); +emit_32(1085863719); +emit_32(1127716880); +emit_32(3278784496); +emit_32(1084379313); +emit_32(1127716880); +emit_32(3278528512); +emit_32(1086294621); +emit_32(1127716880); +emit_32(3278272528); +emit_32(1089793845); +emit_32(1127716880); +emit_32(3278016545); +emit_32(1091311124); +emit_32(1127716880); +emit_32(3277760496); +emit_32(1092520195); +emit_32(1127716880); +emit_32(3277504512); +emit_32(1092832933); +emit_32(1127716880); +emit_32(3277248528); +emit_32(1092827899); +emit_32(1127716880); +emit_32(3276992545); +emit_32(1091811620); +emit_32(1127716880); +emit_32(3276736496); +emit_32(1089828825); +emit_32(1127716880); +emit_32(3276480512); +emit_32(1090682052); +emit_32(1127716880); +emit_32(3276224528); +emit_32(1092010839); +emit_32(1127716880); +emit_32(3275968545); +emit_32(1093459876); +emit_32(1127716880); +emit_32(3275712496); +emit_32(1096080897); +emit_32(1127716880); +emit_32(3275456512); +emit_32(1096807455); +emit_32(1127716880); +emit_32(3275200528); +emit_32(1096413086); +emit_32(1127716880); +emit_32(3274944545); +emit_32(1096350381); +emit_32(1127716880); +emit_32(3274688496); +emit_32(1096323642); +emit_32(1127716880); +emit_32(3274432512); +emit_32(1095633784); +emit_32(1127716880); +emit_32(3274176528); +emit_32(1094753714); +emit_32(1127716880); +emit_32(3273920545); +emit_32(1094125198); +emit_32(1127716880); +emit_32(3273664496); +emit_32(1093062361); +emit_32(1127716880); +emit_32(3273408512); +emit_32(1093213041); +emit_32(1127716880); +emit_32(3273152528); +emit_32(1093187876); +emit_32(1127716880); +emit_32(3272896545); +emit_32(1094195347); +emit_32(1127716880); +emit_32(3272640496); +emit_32(1094880172); +emit_32(1127716880); +emit_32(3272384512); +emit_32(1095364719); +emit_32(1127716880); +emit_32(3272128528); +emit_32(1096288829); +emit_32(1127716880); +emit_32(3271872545); +emit_32(1097163132); +emit_32(1127716880); +emit_32(3271616496); +emit_32(1097356385); +emit_32(1127716880); +emit_32(3271163904); +emit_32(1098373084); +emit_32(1127716880); +emit_32(3270651937); +emit_32(1099643172); +emit_32(1127716880); +emit_32(3270139970); +emit_32(1099931949); +emit_32(1127716880); +emit_32(3269627871); +emit_32(1100246260); +emit_32(1127716880); +emit_32(3269115904); +emit_32(1100634600); +emit_32(1127716880); +emit_32(3268603937); +emit_32(1100611741); +emit_32(1127716880); +emit_32(3268091970); +emit_32(1100940417); +emit_32(1127716880); +emit_32(3267579911); +emit_32(1100834564); +emit_32(1127716880); +emit_32(3267067904); +emit_32(1100309804); +emit_32(1127716880); +emit_32(3266555911); +emit_32(1099846386); +emit_32(1127716880); +emit_32(3266043904); +emit_32(1098992216); +emit_32(1127716880); +emit_32(3265531911); +emit_32(1098681051); +emit_32(1127716880); +emit_32(3265019904); +emit_32(1098547986); +emit_32(1127716880); +emit_32(3264507911); +emit_32(1097247857); +emit_32(1127716880); +emit_32(3263995904); +emit_32(1097448345); +emit_32(1127716880); +emit_32(3263483911); +emit_32(1098445645); +emit_32(1127716880); +emit_32(3262775296); +emit_32(1098977798); +emit_32(1127716880); +emit_32(3261751309); +emit_32(1099491390); +emit_32(1127716880); +emit_32(3260727296); +emit_32(1099337145); +emit_32(1127716880); +emit_32(3259703309); +emit_32(1099792908); +emit_32(1127716880); +emit_32(3258679296); +emit_32(1100235722); +emit_32(1127716880); +emit_32(3257655309); +emit_32(1100866336); +emit_32(1127716880); +emit_32(3256631296); +emit_32(1101422448); +emit_32(1127716880); +emit_32(3255607309); +emit_32(1101221855); +emit_32(1127716880); +emit_32(3254386688); +emit_32(1101088005); +emit_32(1127716880); +emit_32(3252338714); +emit_32(1100972556); +emit_32(1127716880); +emit_32(3250290688); +emit_32(1100202325); +emit_32(1127716880); +emit_32(3248242714); +emit_32(1099418409); +emit_32(1127716880); +emit_32(3245998080); +emit_32(1098944243); +emit_32(1127716880); +emit_32(3241902132); +emit_32(1098327366); +emit_32(1127716880); +emit_32(3237609472); +emit_32(1097923455); +emit_32(1127716880); +emit_32(3229220864); +emit_32(1098086089); +emit_32(1127716880); +emit_32(0); +emit_32(1097086481); +emit_32(1127716880); +emit_32(1081737216); +emit_32(1096797703); +emit_32(1127716880); +emit_32(3279552512); +emit_32(1090697067); +emit_32(1127460897); +emit_32(3279296528); +emit_32(1088464754); +emit_32(1127460897); +emit_32(3279040545); +emit_32(1087359387); +emit_32(1127460897); +emit_32(3278784496); +emit_32(1086695387); +emit_32(1127460897); +emit_32(3278528512); +emit_32(1083514070); +emit_32(1127460897); +emit_32(3278272528); +emit_32(1084835276); +emit_32(1127460897); +emit_32(3278016545); +emit_32(1088646514); +emit_32(1127460897); +emit_32(3277760496); +emit_32(1090551147); +emit_32(1127460897); +emit_32(3277504512); +emit_32(1091910700); +emit_32(1127460897); +emit_32(3277248528); +emit_32(1091808013); +emit_32(1127460897); +emit_32(3276992545); +emit_32(1091196294); +emit_32(1127460897); +emit_32(3276736496); +emit_32(1090026922); +emit_32(1127460897); +emit_32(3276480512); +emit_32(1090912801); +emit_32(1127460897); +emit_32(3276224528); +emit_32(1091162887); +emit_32(1127460897); +emit_32(3275968545); +emit_32(1093409649); +emit_32(1127460897); +emit_32(3275712496); +emit_32(1094918970); +emit_32(1127460897); +emit_32(3275456512); +emit_32(1096294177); +emit_32(1127460897); +emit_32(3275200528); +emit_32(1096363698); +emit_32(1127460897); +emit_32(3274944545); +emit_32(1096394421); +emit_32(1127460897); +emit_32(3274688496); +emit_32(1096326893); +emit_32(1127460897); +emit_32(3274432512); +emit_32(1095806484); +emit_32(1127460897); +emit_32(3274176528); +emit_32(1096379007); +emit_32(1127460897); +emit_32(3273920545); +emit_32(1096041470); +emit_32(1127460897); +emit_32(3273664496); +emit_32(1094485488); +emit_32(1127460897); +emit_32(3273408512); +emit_32(1095082128); +emit_32(1127460897); +emit_32(3273152528); +emit_32(1095898969); +emit_32(1127460897); +emit_32(3272896545); +emit_32(1096463208); +emit_32(1127460897); +emit_32(3272640496); +emit_32(1096556741); +emit_32(1127460897); +emit_32(3272384512); +emit_32(1096834613); +emit_32(1127460897); +emit_32(3272128528); +emit_32(1098017826); +emit_32(1127460897); +emit_32(3271872545); +emit_32(1098909745); +emit_32(1127460897); +emit_32(3271616496); +emit_32(1099379035); +emit_32(1127460897); +emit_32(3271163904); +emit_32(1099621519); +emit_32(1127460897); +emit_32(3270651937); +emit_32(1100273890); +emit_32(1127460897); +emit_32(3270139970); +emit_32(1100651587); +emit_32(1127460897); +emit_32(3269627871); +emit_32(1100583063); +emit_32(1127460897); +emit_32(3269115904); +emit_32(1100899471); +emit_32(1127460897); +emit_32(3268603937); +emit_32(1101366926); +emit_32(1127460897); +emit_32(3268091970); +emit_32(1101899183); +emit_32(1127460897); +emit_32(3267579911); +emit_32(1101822427); +emit_32(1127460897); +emit_32(3267067904); +emit_32(1101218290); +emit_32(1127460897); +emit_32(3266555911); +emit_32(1100574150); +emit_32(1127460897); +emit_32(3266043904); +emit_32(1100108005); +emit_32(1127460897); +emit_32(3265531911); +emit_32(1099514144); +emit_32(1127460897); +emit_32(3265019904); +emit_32(1098172701); +emit_32(1127460897); +emit_32(3264507911); +emit_32(1096910216); +emit_32(1127460897); +emit_32(3263995904); +emit_32(1097118253); +emit_32(1127460897); +emit_32(3263483911); +emit_32(1097919785); +emit_32(1127460897); +emit_32(3262775296); +emit_32(1098225759); +emit_32(1127460897); +emit_32(3261751309); +emit_32(1098294021); +emit_32(1127460897); +emit_32(3260727296); +emit_32(1099564476); +emit_32(1127460897); +emit_32(3259703309); +emit_32(1100155453); +emit_32(1127460897); +emit_32(3258679296); +emit_32(1100660343); +emit_32(1127460897); +emit_32(3257655309); +emit_32(1101117574); +emit_32(1127460897); +emit_32(3256631296); +emit_32(1101606787); +emit_32(1127460897); +emit_32(3255607309); +emit_32(1101430155); +emit_32(1127460897); +emit_32(3254386688); +emit_32(1100673712); +emit_32(1127460897); +emit_32(3252338714); +emit_32(1100216585); +emit_32(1127460897); +emit_32(3250290688); +emit_32(1099492858); +emit_32(1127460897); +emit_32(3248242714); +emit_32(1098998822); +emit_32(1127460897); +emit_32(3245998080); +emit_32(1097972423); +emit_32(1127460897); +emit_32(3241902132); +emit_32(1098463681); +emit_32(1127460897); +emit_32(3237609472); +emit_32(1099098961); +emit_32(1127460897); +emit_32(3229220864); +emit_32(1099075315); +emit_32(1127460897); +emit_32(0); +emit_32(1098576717); +emit_32(1127460897); +emit_32(1081737216); +emit_32(1097521955); +emit_32(1127460897); +emit_32(3279552512); +emit_32(1091907942); +emit_32(1127204848); +emit_32(3279296528); +emit_32(1090913000); +emit_32(1127204848); +emit_32(3279040545); +emit_32(1089627792); +emit_32(1127204848); +emit_32(3278784496); +emit_32(1088453282); +emit_32(1127204848); +emit_32(3278528512); +emit_32(1085638149); +emit_32(1127204848); +emit_32(3278272528); +emit_32(1082820290); +emit_32(1127204848); +emit_32(3278016545); +emit_32(1084647581); +emit_32(1127204848); +emit_32(3277760496); +emit_32(1086976132); +emit_32(1127204848); +emit_32(3277504512); +emit_32(1089606024); +emit_32(1127204848); +emit_32(3277248528); +emit_32(1090895206); +emit_32(1127204848); +emit_32(3276992545); +emit_32(1090776528); +emit_32(1127204848); +emit_32(3276736496); +emit_32(1089657215); +emit_32(1127204848); +emit_32(3276480512); +emit_32(1090767154); +emit_32(1127204848); +emit_32(3276224528); +emit_32(1091192603); +emit_32(1127204848); +emit_32(3275968545); +emit_32(1093123912); +emit_32(1127204848); +emit_32(3275712496); +emit_32(1094534667); +emit_32(1127204848); +emit_32(3275456512); +emit_32(1096318399); +emit_32(1127204848); +emit_32(3275200528); +emit_32(1097169319); +emit_32(1127204848); +emit_32(3274944545); +emit_32(1096886518); +emit_32(1127204848); +emit_32(3274688496); +emit_32(1097439642); +emit_32(1127204848); +emit_32(3274432512); +emit_32(1096797599); +emit_32(1127204848); +emit_32(3274176528); +emit_32(1096554224); +emit_32(1127204848); +emit_32(3273920545); +emit_32(1096240490); +emit_32(1127204848); +emit_32(3273664496); +emit_32(1096477363); +emit_32(1127204848); +emit_32(3273408512); +emit_32(1097087635); +emit_32(1127204848); +emit_32(3273152528); +emit_32(1097338349); +emit_32(1127204848); +emit_32(3272896545); +emit_32(1097759457); +emit_32(1127204848); +emit_32(3272640496); +emit_32(1097880778); +emit_32(1127204848); +emit_32(3272384512); +emit_32(1098146906); +emit_32(1127204848); +emit_32(3272128528); +emit_32(1099303643); +emit_32(1127204848); +emit_32(3271872545); +emit_32(1099944532); +emit_32(1127204848); +emit_32(3271616496); +emit_32(1100242905); +emit_32(1127204848); +emit_32(3271163904); +emit_32(1100588882); +emit_32(1127204848); +emit_32(3270651937); +emit_32(1100605502); +emit_32(1127204848); +emit_32(3270139970); +emit_32(1100742289); +emit_32(1127204848); +emit_32(3269627871); +emit_32(1101124128); +emit_32(1127204848); +emit_32(3269115904); +emit_32(1101735972); +emit_32(1127204848); +emit_32(3268603937); +emit_32(1102084728); +emit_32(1127204848); +emit_32(3268091970); +emit_32(1102719903); +emit_32(1127204848); +emit_32(3267579911); +emit_32(1102404177); +emit_32(1127204848); +emit_32(3267067904); +emit_32(1101692613); +emit_32(1127204848); +emit_32(3266555911); +emit_32(1101323724); +emit_32(1127204848); +emit_32(3266043904); +emit_32(1100739353); +emit_32(1127204848); +emit_32(3265531911); +emit_32(1100060977); +emit_32(1127204848); +emit_32(3265019904); +emit_32(1098668153); +emit_32(1127204848); +emit_32(3264507911); +emit_32(1097066139); +emit_32(1127204848); +emit_32(3263995904); +emit_32(1097240936); +emit_32(1127204848); +emit_32(3263483911); +emit_32(1098056099); +emit_32(1127204848); +emit_32(3262775296); +emit_32(1098692270); +emit_32(1127204848); +emit_32(3261751309); +emit_32(1099028339); +emit_32(1127204848); +emit_32(3260727296); +emit_32(1099487406); +emit_32(1127204848); +emit_32(3259703309); +emit_32(1100464154); +emit_32(1127204848); +emit_32(3258679296); +emit_32(1100643146); +emit_32(1127204848); +emit_32(3257655309); +emit_32(1100685089); +emit_32(1127204848); +emit_32(3256631296); +emit_32(1100823658); +emit_32(1127204848); +emit_32(3255607309); +emit_32(1100633027); +emit_32(1127204848); +emit_32(3254386688); +emit_32(1100238553); +emit_32(1127204848); +emit_32(3252338714); +emit_32(1099137706); +emit_32(1127204848); +emit_32(3250290688); +emit_32(1098443758); +emit_32(1127204848); +emit_32(3248242714); +emit_32(1098669202); +emit_32(1127204848); +emit_32(3245998080); +emit_32(1099104571); +emit_32(1127204848); +emit_32(3241902132); +emit_32(1099412328); +emit_32(1127204848); +emit_32(3237609472); +emit_32(1099546755); +emit_32(1127204848); +emit_32(3229220864); +emit_32(1099464966); +emit_32(1127204848); +emit_32(0); +emit_32(1099096864); +emit_32(1127204848); +emit_32(1081737216); +emit_32(1098169765); +emit_32(1127204848); +emit_32(3279552512); +emit_32(1092650690); +emit_32(1126948864); +emit_32(3279296528); +emit_32(1091119434); +emit_32(1126948864); +emit_32(3279040545); +emit_32(1090136415); +emit_32(1126948864); +emit_32(3278784496); +emit_32(1088411612); +emit_32(1126948864); +emit_32(3278528512); +emit_32(1085469077); +emit_32(1126948864); +emit_32(3278272528); +emit_32(1083833424); +emit_32(1126948864); +emit_32(3278016545); +emit_32(1083689035); +emit_32(1126948864); +emit_32(3277760496); +emit_32(1085122711); +emit_32(1126948864); +emit_32(3277504512); +emit_32(1086667243); +emit_32(1126948864); +emit_32(3277248528); +emit_32(1087657958); +emit_32(1126948864); +emit_32(3276992545); +emit_32(1088371095); +emit_32(1126948864); +emit_32(3276736496); +emit_32(1089466354); +emit_32(1126948864); +emit_32(3276480512); +emit_32(1091055439); +emit_32(1126948864); +emit_32(3276224528); +emit_32(1090400677); +emit_32(1126948864); +emit_32(3275968545); +emit_32(1092101142); +emit_32(1126948864); +emit_32(3275712496); +emit_32(1093636037); +emit_32(1126948864); +emit_32(3275456512); +emit_32(1095931999); +emit_32(1126948864); +emit_32(3275200528); +emit_32(1096626890); +emit_32(1126948864); +emit_32(3274944545); +emit_32(1098060923); +emit_32(1126948864); +emit_32(3274688496); +emit_32(1097783994); +emit_32(1126948864); +emit_32(3274432512); +emit_32(1096721367); +emit_32(1126948864); +emit_32(3274176528); +emit_32(1097047264); +emit_32(1126948864); +emit_32(3273920545); +emit_32(1096218051); +emit_32(1126948864); +emit_32(3273664496); +emit_32(1096743282); +emit_32(1126948864); +emit_32(3273408512); +emit_32(1097750335); +emit_32(1126948864); +emit_32(3273152528); +emit_32(1098166619); +emit_32(1126948864); +emit_32(3272896545); +emit_32(1097872074); +emit_32(1126948864); +emit_32(3272640496); +emit_32(1097941595); +emit_32(1126948864); +emit_32(3272384512); +emit_32(1098064383); +emit_32(1126948864); +emit_32(3272128528); +emit_32(1099511103); +emit_32(1126948864); +emit_32(3271872545); +emit_32(1100417545); +emit_32(1126948864); +emit_32(3271616496); +emit_32(1100756969); +emit_32(1126948864); +emit_32(3271163904); +emit_32(1100841956); +emit_32(1126948864); +emit_32(3270651937); +emit_32(1100819517); +emit_32(1126948864); +emit_32(3270139970); +emit_32(1101316280); +emit_32(1126948864); +emit_32(3269627871); +emit_32(1101803658); +emit_32(1126948864); +emit_32(3269115904); +emit_32(1102338327); +emit_32(1126948864); +emit_32(3268603937); +emit_32(1102614679); +emit_32(1126948864); +emit_32(3268091970); +emit_32(1102899577); +emit_32(1126948864); +emit_32(3267579911); +emit_32(1102273472); +emit_32(1126948864); +emit_32(3267067904); +emit_32(1102032300); +emit_32(1126948864); +emit_32(3266555911); +emit_32(1102213336); +emit_32(1126948864); +emit_32(3266043904); +emit_32(1101920154); +emit_32(1126948864); +emit_32(3265531911); +emit_32(1101073377); +emit_32(1126948864); +emit_32(3265019904); +emit_32(1099747453); +emit_32(1126948864); +emit_32(3264507911); +emit_32(1097970221); +emit_32(1126948864); +emit_32(3263995904); +emit_32(1098951583); +emit_32(1126948864); +emit_32(3263483911); +emit_32(1099125385); +emit_32(1126948864); +emit_32(3262775296); +emit_32(1099384383); +emit_32(1126948864); +emit_32(3261751309); +emit_32(1099297666); +emit_32(1126948864); +emit_32(3260727296); +emit_32(1099151914); +emit_32(1126948864); +emit_32(3259703309); +emit_32(1100003043); +emit_32(1126948864); +emit_32(3258679296); +emit_32(1100391278); +emit_32(1126948864); +emit_32(3257655309); +emit_32(1100196872); +emit_32(1126948864); +emit_32(3256631296); +emit_32(1100006189); +emit_32(1126948864); +emit_32(3255607309); +emit_32(1100085251); +emit_32(1126948864); +emit_32(3254386688); +emit_32(1099464704); +emit_32(1126948864); +emit_32(3252338714); +emit_32(1098192624); +emit_32(1126948864); +emit_32(3250290688); +emit_32(1098051695); +emit_32(1126948864); +emit_32(3248242714); +emit_32(1099538104); +emit_32(1126948864); +emit_32(3245998080); +emit_32(1100121060); +emit_32(1126948864); +emit_32(3241902132); +emit_32(1100174380); +emit_32(1126948864); +emit_32(3237609472); +emit_32(1100128138); +emit_32(1126948864); +emit_32(3229220864); +emit_32(1099728526); +emit_32(1126948864); +emit_32(0); +emit_32(1099015494); +emit_32(1126948864); +emit_32(1081737216); +emit_32(1098949119); +emit_32(1126948864); +emit_32(3279552512); +emit_32(1092053820); +emit_32(1126692880); +emit_32(3279296528); +emit_32(1091482168); +emit_32(1126692880); +emit_32(3279040545); +emit_32(1090170556); +emit_32(1126692880); +emit_32(3278784496); +emit_32(1089291577); +emit_32(1126692880); +emit_32(3278528512); +emit_32(1087031308); +emit_32(1126692880); +emit_32(3278272528); +emit_32(1085157335); +emit_32(1126692880); +emit_32(3278016545); +emit_32(1082956060); +emit_32(1126692880); +emit_32(3277760496); +emit_32(1079787745); +emit_32(1126692880); +emit_32(3277504512); +emit_32(1083066831); +emit_32(1126692880); +emit_32(3277248528); +emit_32(1084997260); +emit_32(1126692880); +emit_32(3276992545); +emit_32(1086936056); +emit_32(1126692880); +emit_32(3276736496); +emit_32(1087077194); +emit_32(1126692880); +emit_32(3276480512); +emit_32(1089181120); +emit_32(1126692880); +emit_32(3276224528); +emit_32(1090090592); +emit_32(1126692880); +emit_32(3275968545); +emit_32(1091979287); +emit_32(1126692880); +emit_32(3275712496); +emit_32(1093947779); +emit_32(1126692880); +emit_32(3275456512); +emit_32(1095104148); +emit_32(1126692880); +emit_32(3275200528); +emit_32(1097546806); +emit_32(1126692880); +emit_32(3274944545); +emit_32(1098312476); +emit_32(1126692880); +emit_32(3274688496); +emit_32(1098096050); +emit_32(1126692880); +emit_32(3274432512); +emit_32(1096460062); +emit_32(1126692880); +emit_32(3274176528); +emit_32(1096848350); +emit_32(1126692880); +emit_32(3273920545); +emit_32(1096377539); +emit_32(1126692880); +emit_32(3273664496); +emit_32(1097570714); +emit_32(1126692880); +emit_32(3273408512); +emit_32(1098430756); +emit_32(1126692880); +emit_32(3273152528); +emit_32(1099100848); +emit_32(1126692880); +emit_32(3272896545); +emit_32(1099443103); +emit_32(1126692880); +emit_32(3272640496); +emit_32(1099024459); +emit_32(1126692880); +emit_32(3272384512); +emit_32(1097976827); +emit_32(1126692880); +emit_32(3272128528); +emit_32(1099397281); +emit_32(1126692880); +emit_32(3271872545); +emit_32(1100167250); +emit_32(1126692880); +emit_32(3271616496); +emit_32(1101001916); +emit_32(1126692880); +emit_32(3271163904); +emit_32(1101218133); +emit_32(1126692880); +emit_32(3270651937); +emit_32(1101763445); +emit_32(1126692880); +emit_32(3270139970); +emit_32(1102254703); +emit_32(1126692880); +emit_32(3269627871); +emit_32(1102306188); +emit_32(1126692880); +emit_32(3269115904); +emit_32(1102526179); +emit_32(1126692880); +emit_32(3268603937); +emit_32(1102836453); +emit_32(1126692880); +emit_32(3268091970); +emit_32(1102582120); +emit_32(1126692880); +emit_32(3267579911); +emit_32(1102493673); +emit_32(1126692880); +emit_32(3267067904); +emit_32(1102731752); +emit_32(1126692880); +emit_32(3266555911); +emit_32(1102752566); +emit_32(1126692880); +emit_32(3266043904); +emit_32(1102414243); +emit_32(1126692880); +emit_32(3265531911); +emit_32(1101987945); +emit_32(1126692880); +emit_32(3265019904); +emit_32(1100347133); +emit_32(1126692880); +emit_32(3264507911); +emit_32(1099205706); +emit_32(1126692880); +emit_32(3263995904); +emit_32(1099525784); +emit_32(1126692880); +emit_32(3263483911); +emit_32(1100012533); +emit_32(1126692880); +emit_32(3262775296); +emit_32(1100473434); +emit_32(1126692880); +emit_32(3261751309); +emit_32(1099686268); +emit_32(1126692880); +emit_32(3260727296); +emit_32(1099578474); +emit_32(1126692880); +emit_32(3259703309); +emit_32(1099386952); +emit_32(1126692880); +emit_32(3258679296); +emit_32(1099512257); +emit_32(1126692880); +emit_32(3257655309); +emit_32(1099849269); +emit_32(1126692880); +emit_32(3256631296); +emit_32(1099792017); +emit_32(1126692880); +emit_32(3255607309); +emit_32(1099326974); +emit_32(1126692880); +emit_32(3254386688); +emit_32(1098936798); +emit_32(1126692880); +emit_32(3252338714); +emit_32(1097635096); +emit_32(1126692880); +emit_32(3250290688); +emit_32(1099347316); +emit_32(1126692880); +emit_32(3248242714); +emit_32(1099939237); +emit_32(1126692880); +emit_32(3245998080); +emit_32(1100173489); +emit_32(1126692880); +emit_32(3241902132); +emit_32(1100441086); +emit_32(1126692880); +emit_32(3237609472); +emit_32(1100198130); +emit_32(1126692880); +emit_32(3229220864); +emit_32(1099547122); +emit_32(1126692880); +emit_32(0); +emit_32(1099279735); +emit_32(1126692880); +emit_32(1081737216); +emit_32(1099508220); +emit_32(1126692880); +emit_32(3279552512); +emit_32(1091859760); +emit_32(1126436897); +emit_32(3279296528); +emit_32(1091230761); +emit_32(1126436897); +emit_32(3279040545); +emit_32(1090930805); +emit_32(1126436897); +emit_32(3278784496); +emit_32(1089555210); +emit_32(1126436897); +emit_32(3278528512); +emit_32(1087108253); +emit_32(1126436897); +emit_32(3278272528); +emit_32(1084241425); +emit_32(1126436897); +emit_32(3278016545); +emit_32(1080584495); +emit_32(1126436897); +emit_32(3277760496); +emit_32(1077009103); +emit_32(1126436897); +emit_32(3277504512); +emit_32(1077476097); +emit_32(1126436897); +emit_32(3277248528); +emit_32(1082163798); +emit_32(1126436897); +emit_32(3276992545); +emit_32(1083224118); +emit_32(1126436897); +emit_32(3276736496); +emit_32(1083925510); +emit_32(1126436897); +emit_32(3276480512); +emit_32(1086781055); +emit_32(1126436897); +emit_32(3276224528); +emit_32(1090787203); +emit_32(1126436897); +emit_32(3275968545); +emit_32(1093020523); +emit_32(1126436897); +emit_32(3275712496); +emit_32(1094356094); +emit_32(1126436897); +emit_32(3275456512); +emit_32(1095272654); +emit_32(1126436897); +emit_32(3275200528); +emit_32(1096919967); +emit_32(1126436897); +emit_32(3274944545); +emit_32(1097664981); +emit_32(1126436897); +emit_32(3274688496); +emit_32(1097850264); +emit_32(1126436897); +emit_32(3274432512); +emit_32(1097462501); +emit_32(1126436897); +emit_32(3274176528); +emit_32(1097374001); +emit_32(1126436897); +emit_32(3273920545); +emit_32(1096574357); +emit_32(1126436897); +emit_32(3273664496); +emit_32(1097971165); +emit_32(1126436897); +emit_32(3273408512); +emit_32(1099181588); +emit_32(1126436897); +emit_32(3273152528); +emit_32(1099865208); +emit_32(1126436897); +emit_32(3272896545); +emit_32(1100222353); +emit_32(1126436897); +emit_32(3272640496); +emit_32(1099751699); +emit_32(1126436897); +emit_32(3272384512); +emit_32(1099151756); +emit_32(1126436897); +emit_32(3272128528); +emit_32(1099314548); +emit_32(1126436897); +emit_32(3271872545); +emit_32(1100567124); +emit_32(1126436897); +emit_32(3271616496); +emit_32(1101301023); +emit_32(1126436897); +emit_32(3271163904); +emit_32(1101937036); +emit_32(1126436897); +emit_32(3270651937); +emit_32(1102452516); +emit_32(1126436897); +emit_32(3270139970); +emit_32(1102878763); +emit_32(1126436897); +emit_32(3269627871); +emit_32(1102764678); +emit_32(1126436897); +emit_32(3269115904); +emit_32(1103315599); +emit_32(1126436897); +emit_32(3268603937); +emit_32(1103337986); +emit_32(1126436897); +emit_32(3268091970); +emit_32(1103125021); +emit_32(1126436897); +emit_32(3267579911); +emit_32(1103452701); +emit_32(1126436897); +emit_32(3267067904); +emit_32(1103518551); +emit_32(1126436897); +emit_32(3266555911); +emit_32(1103087377); +emit_32(1126436897); +emit_32(3266043904); +emit_32(1102707740); +emit_32(1126436897); +emit_32(3265531911); +emit_32(1102273682); +emit_32(1126436897); +emit_32(3265019904); +emit_32(1100733009); +emit_32(1126436897); +emit_32(3264507911); +emit_32(1100143447); +emit_32(1126436897); +emit_32(3263995904); +emit_32(1100648022); +emit_32(1126436897); +emit_32(3263483911); +emit_32(1100809555); +emit_32(1126436897); +emit_32(3262775296); +emit_32(1100886835); +emit_32(1126436897); +emit_32(3261751309); +emit_32(1100168508); +emit_32(1126436897); +emit_32(3260727296); +emit_32(1099798833); +emit_32(1126436897); +emit_32(3259703309); +emit_32(1099326502); +emit_32(1126436897); +emit_32(3258679296); +emit_32(1099188195); +emit_32(1126436897); +emit_32(3257655309); +emit_32(1098951478); +emit_32(1126436897); +emit_32(3256631296); +emit_32(1099140746); +emit_32(1126436897); +emit_32(3255607309); +emit_32(1097892836); +emit_32(1126436897); +emit_32(3254386688); +emit_32(1096986552); +emit_32(1126436897); +emit_32(3252338714); +emit_32(1098931818); +emit_32(1126436897); +emit_32(3250290688); +emit_32(1099424072); +emit_32(1126436897); +emit_32(3248242714); +emit_32(1099604217); +emit_32(1126436897); +emit_32(3245998080); +emit_32(1100206309); +emit_32(1126436897); +emit_32(3241902132); +emit_32(1099889954); +emit_32(1126436897); +emit_32(3237609472); +emit_32(1099854460); +emit_32(1126436897); +emit_32(3229220864); +emit_32(1099540935); +emit_32(1126436897); +emit_32(0); +emit_32(1099312713); +emit_32(1126436897); +emit_32(1081737216); +emit_32(1099149921); +emit_32(1126436897); +emit_32(3279552512); +emit_32(1091110007); +emit_32(1126180848); +emit_32(3279296528); +emit_32(1090566603); +emit_32(1126180848); +emit_32(3279040545); +emit_32(1089927538); +emit_32(1126180848); +emit_32(3278784496); +emit_32(1088849057); +emit_32(1126180848); +emit_32(3278528512); +emit_32(1085306191); +emit_32(1126180848); +emit_32(3278272528); +emit_32(1084238930); +emit_32(1126180848); +emit_32(3278016545); +emit_32(1082904260); +emit_32(1126180848); +emit_32(3277760496); +emit_32(1078098238); +emit_32(1126180848); +emit_32(3277504512); +emit_32(1077638962); +emit_32(1126180848); +emit_32(3277248528); +emit_32(1076413302); +emit_32(1126180848); +emit_32(3276992545); +emit_32(1076646547); +emit_32(1126180848); +emit_32(3276736496); +emit_32(1080275711); +emit_32(1126180848); +emit_32(3276480512); +emit_32(1085520143); +emit_32(1126180848); +emit_32(3276224528); +emit_32(1089702514); +emit_32(1126180848); +emit_32(3275968545); +emit_32(1092246705); +emit_32(1126180848); +emit_32(3275712496); +emit_32(1093963402); +emit_32(1126180848); +emit_32(3275456512); +emit_32(1095512778); +emit_32(1126180848); +emit_32(3275200528); +emit_32(1096063386); +emit_32(1126180848); +emit_32(3274944545); +emit_32(1098150157); +emit_32(1126180848); +emit_32(3274688496); +emit_32(1098201747); +emit_32(1126180848); +emit_32(3274432512); +emit_32(1098080322); +emit_32(1126180848); +emit_32(3274176528); +emit_32(1097170158); +emit_32(1126180848); +emit_32(3273920545); +emit_32(1097720975); +emit_32(1126180848); +emit_32(3273664496); +emit_32(1098994627); +emit_32(1126180848); +emit_32(3273408512); +emit_32(1099145570); +emit_32(1126180848); +emit_32(3273152528); +emit_32(1100249878); +emit_32(1126180848); +emit_32(3272896545); +emit_32(1100617613); +emit_32(1126180848); +emit_32(3272640496); +emit_32(1100383781); +emit_32(1126180848); +emit_32(3272384512); +emit_32(1099661417); +emit_32(1126180848); +emit_32(3272128528); +emit_32(1099771570); +emit_32(1126180848); +emit_32(3271872545); +emit_32(1100856322); +emit_32(1126180848); +emit_32(3271616496); +emit_32(1101777863); +emit_32(1126180848); +emit_32(3271163904); +emit_32(1102608912); +emit_32(1126180848); +emit_32(3270651937); +emit_32(1103420142); +emit_32(1126180848); +emit_32(3270139970); +emit_32(1104133541); +emit_32(1126180848); +emit_32(3269627871); +emit_32(1104300737); +emit_32(1126180848); +emit_32(3269115904); +emit_32(1104750366); +emit_32(1126180848); +emit_32(3268603937); +emit_32(1104692327); +emit_32(1126180848); +emit_32(3268091970); +emit_32(1104180255); +emit_32(1126180848); +emit_32(3267579911); +emit_32(1104286004); +emit_32(1126180848); +emit_32(3267067904); +emit_32(1104294760); +emit_32(1126180848); +emit_32(3266555911); +emit_32(1103989519); +emit_32(1126180848); +emit_32(3266043904); +emit_32(1103116370); +emit_32(1126180848); +emit_32(3265531911); +emit_32(1102176374); +emit_32(1126180848); +emit_32(3265019904); +emit_32(1101252683); +emit_32(1126180848); +emit_32(3264507911); +emit_32(1100807091); +emit_32(1126180848); +emit_32(3263995904); +emit_32(1101057072); +emit_32(1126180848); +emit_32(3263483911); +emit_32(1101590954); +emit_32(1126180848); +emit_32(3262775296); +emit_32(1101241516); +emit_32(1126180848); +emit_32(3261751309); +emit_32(1100721632); +emit_32(1126180848); +emit_32(3260727296); +emit_32(1100065328); +emit_32(1126180848); +emit_32(3259703309); +emit_32(1099340867); +emit_32(1126180848); +emit_32(3258679296); +emit_32(1099102631); +emit_32(1126180848); +emit_32(3257655309); +emit_32(1098007550); +emit_32(1126180848); +emit_32(3256631296); +emit_32(1097436391); +emit_32(1126180848); +emit_32(3255607309); +emit_32(1097548589); +emit_32(1126180848); +emit_32(3254386688); +emit_32(1097682282); +emit_32(1126180848); +emit_32(3252338714); +emit_32(1099124127); +emit_32(1126180848); +emit_32(3250290688); +emit_32(1098983145); +emit_32(1126180848); +emit_32(3248242714); +emit_32(1099734136); +emit_32(1126180848); +emit_32(3245998080); +emit_32(1099916745); +emit_32(1126180848); +emit_32(3241902132); +emit_32(1099462450); +emit_32(1126180848); +emit_32(3237609472); +emit_32(1099513410); +emit_32(1126180848); +emit_32(3229220864); +emit_32(1099346425); +emit_32(1126180848); +emit_32(0); +emit_32(1099133931); +emit_32(1126180848); +emit_32(1081737216); +emit_32(1099236901); +emit_32(1126180848); +emit_32(3279552512); +emit_32(1089511002); +emit_32(1125924864); +emit_32(3279296528); +emit_32(1089751084); +emit_32(1125924864); +emit_32(3279040545); +emit_32(1089625192); +emit_32(1125924864); +emit_32(3278784496); +emit_32(1088308768); +emit_32(1125924864); +emit_32(3278528512); +emit_32(1083791334); +emit_32(1125924864); +emit_32(3278272528); +emit_32(1083037702); +emit_32(1125924864); +emit_32(3278016545); +emit_32(1082409647); +emit_32(1125924864); +emit_32(3277760496); +emit_32(1076909237); +emit_32(1125924864); +emit_32(3277504512); +emit_32(1076578474); +emit_32(1125924864); +emit_32(3277248528); +emit_32(1079282500); +emit_32(1125924864); +emit_32(3276992545); +emit_32(1079322891); +emit_32(1125924864); +emit_32(3276736496); +emit_32(1080482867); +emit_32(1125924864); +emit_32(3276480512); +emit_32(1083066517); +emit_32(1125924864); +emit_32(3276224528); +emit_32(1086368944); +emit_32(1125924864); +emit_32(3275968545); +emit_32(1090788545); +emit_32(1125924864); +emit_32(3275712496); +emit_32(1093220381); +emit_32(1125924864); +emit_32(3275456512); +emit_32(1094138095); +emit_32(1125924864); +emit_32(3275200528); +emit_32(1095485201); +emit_32(1125924864); +emit_32(3274944545); +emit_32(1098300103); +emit_32(1125924864); +emit_32(3274688496); +emit_32(1099012348); +emit_32(1125924864); +emit_32(3274432512); +emit_32(1097753795); +emit_32(1125924864); +emit_32(3274176528); +emit_32(1096927727); +emit_32(1125924864); +emit_32(3273920545); +emit_32(1098937847); +emit_32(1125924864); +emit_32(3273664496); +emit_32(1099750598); +emit_32(1125924864); +emit_32(3273408512); +emit_32(1099826096); +emit_32(1125924864); +emit_32(3273152528); +emit_32(1100180514); +emit_32(1125924864); +emit_32(3272896545); +emit_32(1100786015); +emit_32(1125924864); +emit_32(3272640496); +emit_32(1100625006); +emit_32(1125924864); +emit_32(3272384512); +emit_32(1100107638); +emit_32(1125924864); +emit_32(3272128528); +emit_32(1100331457); +emit_32(1125924864); +emit_32(3271872545); +emit_32(1101249590); +emit_32(1125924864); +emit_32(3271616496); +emit_32(1102354737); +emit_32(1125924864); +emit_32(3271163904); +emit_32(1103441691); +emit_32(1125924864); +emit_32(3270651937); +emit_32(1104738936); +emit_32(1125924864); +emit_32(3270139970); +emit_32(1105236276); +emit_32(1125924864); +emit_32(3269627871); +emit_32(1105460304); +emit_32(1125924864); +emit_32(3269115904); +emit_32(1105771993); +emit_32(1125924864); +emit_32(3268603937); +emit_32(1105867833); +emit_32(1125924864); +emit_32(3268091970); +emit_32(1105681868); +emit_32(1125924864); +emit_32(3267579911); +emit_32(1105399854); +emit_32(1125924864); +emit_32(3267067904); +emit_32(1104596592); +emit_32(1125924864); +emit_32(3266555911); +emit_32(1104130657); +emit_32(1125924864); +emit_32(3266043904); +emit_32(1103243877); +emit_32(1125924864); +emit_32(3265531911); +emit_32(1102380270); +emit_32(1125924864); +emit_32(3265019904); +emit_32(1102020241); +emit_32(1125924864); +emit_32(3264507911); +emit_32(1101572656); +emit_32(1125924864); +emit_32(3263995904); +emit_32(1101722026); +emit_32(1125924864); +emit_32(3263483911); +emit_32(1101703833); +emit_32(1125924864); +emit_32(3262775296); +emit_32(1101282463); +emit_32(1125924864); +emit_32(3261751309); +emit_32(1100994314); +emit_32(1125924864); +emit_32(3260727296); +emit_32(1100261255); +emit_32(1125924864); +emit_32(3259703309); +emit_32(1099538104); +emit_32(1125924864); +emit_32(3258679296); +emit_32(1099005113); +emit_32(1125924864); +emit_32(3257655309); +emit_32(1097288542); +emit_32(1125924864); +emit_32(3256631296); +emit_32(1096558523); +emit_32(1125924864); +emit_32(3255607309); +emit_32(1097476761); +emit_32(1125924864); +emit_32(3254386688); +emit_32(1098510552); +emit_32(1125924864); +emit_32(3252338714); +emit_32(1098575249); +emit_32(1125924864); +emit_32(3250290688); +emit_32(1099187146); +emit_32(1125924864); +emit_32(3248242714); +emit_32(1099341339); +emit_32(1125924864); +emit_32(3245998080); +emit_32(1099196531); +emit_32(1125924864); +emit_32(3241902132); +emit_32(1099085906); +emit_32(1125924864); +emit_32(3237609472); +emit_32(1099120876); +emit_32(1125924864); +emit_32(3229220864); +emit_32(1098773955); +emit_32(1125924864); +emit_32(0); +emit_32(1099088580); +emit_32(1125924864); +emit_32(1081737216); +emit_32(1099397648); +emit_32(1125924864); +emit_32(3279552512); +emit_32(1087350222); +emit_32(1125668880); +emit_32(3279296528); +emit_32(1087173453); +emit_32(1125668880); +emit_32(3279040545); +emit_32(1087524370); +emit_32(1125668880); +emit_32(3278784496); +emit_32(1085198146); +emit_32(1125668880); +emit_32(3278528512); +emit_32(1082565654); +emit_32(1125668880); +emit_32(3278272528); +emit_32(1077145753); +emit_32(1125668880); +emit_32(3278016545); +emit_32(1072746264); +emit_32(1125668880); +emit_32(3277760496); +emit_32(1070147557); +emit_32(1125668880); +emit_32(3277504512); +emit_32(1075759536); +emit_32(1125668880); +emit_32(3277248528); +emit_32(1077469889); +emit_32(1125668880); +emit_32(3276992545); +emit_32(1076408479); +emit_32(1125668880); +emit_32(3276736496); +emit_32(1077817429); +emit_32(1125668880); +emit_32(3276480512); +emit_32(1080487943); +emit_32(1125668880); +emit_32(3276224528); +emit_32(1082089831); +emit_32(1125668880); +emit_32(3275968545); +emit_32(1089194856); +emit_32(1125668880); +emit_32(3275712496); +emit_32(1092143819); +emit_32(1125668880); +emit_32(3275456512); +emit_32(1093271971); +emit_32(1125668880); +emit_32(3275200528); +emit_32(1095061157); +emit_32(1125668880); +emit_32(3274944545); +emit_32(1096826225); +emit_32(1125668880); +emit_32(3274688496); +emit_32(1097739220); +emit_32(1125668880); +emit_32(3274432512); +emit_32(1097853200); +emit_32(1125668880); +emit_32(3274176528); +emit_32(1097601856); +emit_32(1125668880); +emit_32(3273920545); +emit_32(1099313866); +emit_32(1125668880); +emit_32(3273664496); +emit_32(1100242538); +emit_32(1125668880); +emit_32(3273408512); +emit_32(1100791520); +emit_32(1125668880); +emit_32(3273152528); +emit_32(1100534671); +emit_32(1125668880); +emit_32(3272896545); +emit_32(1100486803); +emit_32(1125668880); +emit_32(3272640496); +emit_32(1100712667); +emit_32(1125668880); +emit_32(3272384512); +emit_32(1100661549); +emit_32(1125668880); +emit_32(3272128528); +emit_32(1101351407); +emit_32(1125668880); +emit_32(3271872545); +emit_32(1102206154); +emit_32(1125668880); +emit_32(3271616496); +emit_32(1103301286); +emit_32(1125668880); +emit_32(3271163904); +emit_32(1104362760); +emit_32(1125668880); +emit_32(3270651937); +emit_32(1105383916); +emit_32(1125668880); +emit_32(3270139970); +emit_32(1106277093); +emit_32(1125668880); +emit_32(3269627871); +emit_32(1106308235); +emit_32(1125668880); +emit_32(3269115904); +emit_32(1106719801); +emit_32(1125668880); +emit_32(3268603937); +emit_32(1106707323); +emit_32(1125668880); +emit_32(3268091970); +emit_32(1106722475); +emit_32(1125668880); +emit_32(3267579911); +emit_32(1106438259); +emit_32(1125668880); +emit_32(3267067904); +emit_32(1105408609); +emit_32(1125668880); +emit_32(3266555911); +emit_32(1104049917); +emit_32(1125668880); +emit_32(3266043904); +emit_32(1103297564); +emit_32(1125668880); +emit_32(3265531911); +emit_32(1102461429); +emit_32(1125668880); +emit_32(3265019904); +emit_32(1102366533); +emit_32(1125668880); +emit_32(3264507911); +emit_32(1101967340); +emit_32(1125668880); +emit_32(3263995904); +emit_32(1101786146); +emit_32(1125668880); +emit_32(3263483911); +emit_32(1101553258); +emit_32(1125668880); +emit_32(3262775296); +emit_32(1101001340); +emit_32(1125668880); +emit_32(3261751309); +emit_32(1100728448); +emit_32(1125668880); +emit_32(3260727296); +emit_32(1100022546); +emit_32(1125668880); +emit_32(3259703309); +emit_32(1099153224); +emit_32(1125668880); +emit_32(3258679296); +emit_32(1097869977); +emit_32(1125668880); +emit_32(3257655309); +emit_32(1096668099); +emit_32(1125668880); +emit_32(3256631296); +emit_32(1097741107); +emit_32(1125668880); +emit_32(3255607309); +emit_32(1097981755); +emit_32(1125668880); +emit_32(3254386688); +emit_32(1097933206); +emit_32(1125668880); +emit_32(3252338714); +emit_32(1098260572); +emit_32(1125668880); +emit_32(3250290688); +emit_32(1098406219); +emit_32(1125668880); +emit_32(3248242714); +emit_32(1098084516); +emit_32(1125668880); +emit_32(3245998080); +emit_32(1098079168); +emit_32(1125668880); +emit_32(3241902132); +emit_32(1098423520); +emit_32(1125668880); +emit_32(3237609472); +emit_32(1098536662); +emit_32(1125668880); +emit_32(3229220864); +emit_32(1098183711); +emit_32(1125668880); +emit_32(0); +emit_32(1099109709); +emit_32(1125668880); +emit_32(1081737216); +emit_32(1099796421); +emit_32(1125668880); +emit_32(3279552512); +emit_32(1084599032); +emit_32(1125412897); +emit_32(3279296528); +emit_32(1083540012); +emit_32(1125412897); +emit_32(3279040545); +emit_32(1082794369); +emit_32(1125412897); +emit_32(3278784496); +emit_32(1078855100); +emit_32(1125412897); +emit_32(3278528512); +emit_32(1074302393); +emit_32(1125412897); +emit_32(3278272528); +emit_32(1066993608); +emit_32(1125412897); +emit_32(3278016545); +emit_32(1038259757); +emit_32(1125412897); +emit_32(3277760496); +emit_32(1064430889); +emit_32(1125412897); +emit_32(3277504512); +emit_32(1068992026); +emit_32(1125412897); +emit_32(3277248528); +emit_32(1074031860); +emit_32(1125412897); +emit_32(3276992545); +emit_32(1074904275); +emit_32(1125412897); +emit_32(3276736496); +emit_32(1074708653); +emit_32(1125412897); +emit_32(3276480512); +emit_32(1076428066); +emit_32(1125412897); +emit_32(3276224528); +emit_32(1077918302); +emit_32(1125412897); +emit_32(3275968545); +emit_32(1085074875); +emit_32(1125412897); +emit_32(3275712496); +emit_32(1090557240); +emit_32(1125412897); +emit_32(3275456512); +emit_32(1092638422); +emit_32(1125412897); +emit_32(3275200528); +emit_32(1094944555); +emit_32(1125412897); +emit_32(3274944545); +emit_32(1097008048); +emit_32(1125412897); +emit_32(3274688496); +emit_32(1097387737); +emit_32(1125412897); +emit_32(3274432512); +emit_32(1098056204); +emit_32(1125412897); +emit_32(3274176528); +emit_32(1098092066); +emit_32(1125412897); +emit_32(3273920545); +emit_32(1099683122); +emit_32(1125412897); +emit_32(3273664496); +emit_32(1100803369); +emit_32(1125412897); +emit_32(3273408512); +emit_32(1101115267); +emit_32(1125412897); +emit_32(3273152528); +emit_32(1101294207); +emit_32(1125412897); +emit_32(3272896545); +emit_32(1101133932); +emit_32(1125412897); +emit_32(3272640496); +emit_32(1101242093); +emit_32(1125412897); +emit_32(3272384512); +emit_32(1101498994); +emit_32(1125412897); +emit_32(3272128528); +emit_32(1102385303); +emit_32(1125412897); +emit_32(3271872545); +emit_32(1103696757); +emit_32(1125412897); +emit_32(3271616496); +emit_32(1104690492); +emit_32(1125412897); +emit_32(3271163904); +emit_32(1105923146); +emit_32(1125412897); +emit_32(3270651937); +emit_32(1106797868); +emit_32(1125412897); +emit_32(3270139970); +emit_32(1107151867); +emit_32(1125412897); +emit_32(3269627871); +emit_32(1107261181); +emit_32(1125412897); +emit_32(3269115904); +emit_32(1107270933); +emit_32(1125412897); +emit_32(3268603937); +emit_32(1107353141); +emit_32(1125412897); +emit_32(3268091970); +emit_32(1107243880); +emit_32(1125412897); +emit_32(3267579911); +emit_32(1106494620); +emit_32(1125412897); +emit_32(3267067904); +emit_32(1105521174); +emit_32(1125412897); +emit_32(3266555911); +emit_32(1104449162); +emit_32(1125412897); +emit_32(3266043904); +emit_32(1103510110); +emit_32(1125412897); +emit_32(3265531911); +emit_32(1102747953); +emit_32(1125412897); +emit_32(3265019904); +emit_32(1102196874); +emit_32(1125412897); +emit_32(3264507911); +emit_32(1102074085); +emit_32(1125412897); +emit_32(3263995904); +emit_32(1101784888); +emit_32(1125412897); +emit_32(3263483911); +emit_32(1101295203); +emit_32(1125412897); +emit_32(3262775296); +emit_32(1100689231); +emit_32(1125412897); +emit_32(3261751309); +emit_32(1100003515); +emit_32(1125412897); +emit_32(3260727296); +emit_32(1099230295); +emit_32(1125412897); +emit_32(3259703309); +emit_32(1098733375); +emit_32(1125412897); +emit_32(3258679296); +emit_32(1096895326); +emit_32(1125412897); +emit_32(3257655309); +emit_32(1095571918); +emit_32(1125412897); +emit_32(3256631296); +emit_32(1096896374); +emit_32(1125412897); +emit_32(3255607309); +emit_32(1097195638); +emit_32(1125412897); +emit_32(3254386688); +emit_32(1097122238); +emit_32(1125412897); +emit_32(3252338714); +emit_32(1098028522); +emit_32(1125412897); +emit_32(3250290688); +emit_32(1096753663); +emit_32(1125412897); +emit_32(3248242714); +emit_32(1097797416); +emit_32(1125412897); +emit_32(3245998080); +emit_32(1098329673); +emit_32(1125412897); +emit_32(3241902132); +emit_32(1098215273); +emit_32(1125412897); +emit_32(3237609472); +emit_32(1097896401); +emit_32(1125412897); +emit_32(3229220864); +emit_32(1098533411); +emit_32(1125412897); +emit_32(0); +emit_32(1099233650); +emit_32(1125412897); +emit_32(1081737216); +emit_32(1100171654); +emit_32(1125412897); +emit_32(3279552512); +emit_32(1085043754); +emit_32(1125156848); +emit_32(3279296528); +emit_32(1082745359); +emit_32(1125156848); +emit_32(3279040545); +emit_32(1077929543); +emit_32(1125156848); +emit_32(3278784496); +emit_32(1077120797); +emit_32(1125156848); +emit_32(3278528512); +emit_32(1070829467); +emit_32(1125156848); +emit_32(3278272528); +emit_32(3196693122); +emit_32(1125156848); +emit_32(3278016545); +emit_32(3203591578); +emit_32(1125156848); +emit_32(3277760496); +emit_32(3178809932); +emit_32(1125156848); +emit_32(3277504512); +emit_32(1062996554); +emit_32(1125156848); +emit_32(3277248528); +emit_32(1067740194); +emit_32(1125156848); +emit_32(3276992545); +emit_32(1071204690); +emit_32(1125156848); +emit_32(3276736496); +emit_32(1074277437); +emit_32(1125156848); +emit_32(3276480512); +emit_32(1077601171); +emit_32(1125156848); +emit_32(3276224528); +emit_32(1081521125); +emit_32(1125156848); +emit_32(3275968545); +emit_32(1082948300); +emit_32(1125156848); +emit_32(3275712496); +emit_32(1087836804); +emit_32(1125156848); +emit_32(3275456512); +emit_32(1091823815); +emit_32(1125156848); +emit_32(3275200528); +emit_32(1094296745); +emit_32(1125156848); +emit_32(3274944545); +emit_32(1095976039); +emit_32(1125156848); +emit_32(3274688496); +emit_32(1097507484); +emit_32(1125156848); +emit_32(3274432512); +emit_32(1097570923); +emit_32(1125156848); +emit_32(3274176528); +emit_32(1098982359); +emit_32(1125156848); +emit_32(3273920545); +emit_32(1100051802); +emit_32(1125156848); +emit_32(3273664496); +emit_32(1100994419); +emit_32(1125156848); +emit_32(3273408512); +emit_32(1102158705); +emit_32(1125156848); +emit_32(3273152528); +emit_32(1102017357); +emit_32(1125156848); +emit_32(3272896545); +emit_32(1102232735); +emit_32(1125156848); +emit_32(3272640496); +emit_32(1101864265); +emit_32(1125156848); +emit_32(3272384512); +emit_32(1102610222); +emit_32(1125156848); +emit_32(3272128528); +emit_32(1103466332); +emit_32(1125156848); +emit_32(3271872545); +emit_32(1104473437); +emit_32(1125156848); +emit_32(3271616496); +emit_32(1106243066); +emit_32(1125156848); +emit_32(3271163904); +emit_32(1107111235); +emit_32(1125156848); +emit_32(3270651937); +emit_32(1107425205); +emit_32(1125156848); +emit_32(3270139970); +emit_32(1107552502); +emit_32(1125156848); +emit_32(3269627871); +emit_32(1107600002); +emit_32(1125156848); +emit_32(3269115904); +emit_32(1107564875); +emit_32(1125156848); +emit_32(3268603937); +emit_32(1107418258); +emit_32(1125156848); +emit_32(3268091970); +emit_32(1107034584); +emit_32(1125156848); +emit_32(3267579911); +emit_32(1106363600); +emit_32(1125156848); +emit_32(3267067904); +emit_32(1105390731); +emit_32(1125156848); +emit_32(3266555911); +emit_32(1104501591); +emit_32(1125156848); +emit_32(3266043904); +emit_32(1103946108); +emit_32(1125156848); +emit_32(3265531911); +emit_32(1102869325); +emit_32(1125156848); +emit_32(3265019904); +emit_32(1101989360); +emit_32(1125156848); +emit_32(3264507911); +emit_32(1101780170); +emit_32(1125156848); +emit_32(3263995904); +emit_32(1101640971); +emit_32(1125156848); +emit_32(3263483911); +emit_32(1101030700); +emit_32(1125156848); +emit_32(3262775296); +emit_32(1100725564); +emit_32(1125156848); +emit_32(3261751309); +emit_32(1099604322); +emit_32(1125156848); +emit_32(3260727296); +emit_32(1099292318); +emit_32(1125156848); +emit_32(3259703309); +emit_32(1098829949); +emit_32(1125156848); +emit_32(3258679296); +emit_32(1097125803); +emit_32(1125156848); +emit_32(3257655309); +emit_32(1096142658); +emit_32(1125156848); +emit_32(3256631296); +emit_32(1095542138); +emit_32(1125156848); +emit_32(3255607309); +emit_32(1096456811); +emit_32(1125156848); +emit_32(3254386688); +emit_32(1096482501); +emit_32(1125156848); +emit_32(3252338714); +emit_32(1096896270); +emit_32(1125156848); +emit_32(3250290688); +emit_32(1096761213); +emit_32(1125156848); +emit_32(3248242714); +emit_32(1096850971); +emit_32(1125156848); +emit_32(3245998080); +emit_32(1096941463); +emit_32(1125156848); +emit_32(3241902132); +emit_32(1096922589); +emit_32(1125156848); +emit_32(3237609472); +emit_32(1097331429); +emit_32(1125156848); +emit_32(3229220864); +emit_32(1098308177); +emit_32(1125156848); +emit_32(0); +emit_32(1099200882); +emit_32(1125156848); +emit_32(1081737216); +emit_32(1099891107); +emit_32(1125156848); +emit_32(3279552512); +emit_32(1084907963); +emit_32(1124900864); +emit_32(3279296528); +emit_32(1083246159); +emit_32(1124900864); +emit_32(3279040545); +emit_32(1077321704); +emit_32(1124900864); +emit_32(3278784496); +emit_32(1069416909); +emit_32(1124900864); +emit_32(3278528512); +emit_32(1044789651); +emit_32(1124900864); +emit_32(3278272528); +emit_32(3167012033); +emit_32(1124900864); +emit_32(3278016545); +emit_32(3192403624); +emit_32(1124900864); +emit_32(3277760496); +emit_32(3204872485); +emit_32(1124900864); +emit_32(3277504512); +emit_32(1048751859); +emit_32(1124900864); +emit_32(3277248528); +emit_32(1057065154); +emit_32(1124900864); +emit_32(3276992545); +emit_32(1067451207); +emit_32(1124900864); +emit_32(3276736496); +emit_32(1076983266); +emit_32(1124900864); +emit_32(3276480512); +emit_32(1078929255); +emit_32(1124900864); +emit_32(3276224528); +emit_32(1081361406); +emit_32(1124900864); +emit_32(3275968545); +emit_32(1083089858); +emit_32(1124900864); +emit_32(3275712496); +emit_32(1087525083); +emit_32(1124900864); +emit_32(3275456512); +emit_32(1091337443); +emit_32(1124900864); +emit_32(3275200528); +emit_32(1093300912); +emit_32(1124900864); +emit_32(3274944545); +emit_32(1094898103); +emit_32(1124900864); +emit_32(3274688496); +emit_32(1096638530); +emit_32(1124900864); +emit_32(3274432512); +emit_32(1097274071); +emit_32(1124900864); +emit_32(3274176528); +emit_32(1099026766); +emit_32(1124900864); +emit_32(3273920545); +emit_32(1099861538); +emit_32(1124900864); +emit_32(3273664496); +emit_32(1101176137); +emit_32(1124900864); +emit_32(3273408512); +emit_32(1101893049); +emit_32(1124900864); +emit_32(3273152528); +emit_32(1101975047); +emit_32(1124900864); +emit_32(3272896545); +emit_32(1102502691); +emit_32(1124900864); +emit_32(3272640496); +emit_32(1102587573); +emit_32(1124900864); +emit_32(3272384512); +emit_32(1103471103); +emit_32(1124900864); +emit_32(3272128528); +emit_32(1104395895); +emit_32(1124900864); +emit_32(3271872545); +emit_32(1105537742); +emit_32(1124900864); +emit_32(3271616496); +emit_32(1106756659); +emit_32(1124900864); +emit_32(3271163904); +emit_32(1107634867); +emit_32(1124900864); +emit_32(3270651937); +emit_32(1108079516); +emit_32(1124900864); +emit_32(3270139970); +emit_32(1107976153); +emit_32(1124900864); +emit_32(3269627871); +emit_32(1107884271); +emit_32(1124900864); +emit_32(3269115904); +emit_32(1107747642); +emit_32(1124900864); +emit_32(3268603937); +emit_32(1107549985); +emit_32(1124900864); +emit_32(3268091970); +emit_32(1106944773); +emit_32(1124900864); +emit_32(3267579911); +emit_32(1106247732); +emit_32(1124900864); +emit_32(3267067904); +emit_32(1105208646); +emit_32(1124900864); +emit_32(3266555911); +emit_32(1104283802); +emit_32(1124900864); +emit_32(3266043904); +emit_32(1103606946); +emit_32(1124900864); +emit_32(3265531911); +emit_32(1102871160); +emit_32(1124900864); +emit_32(3265019904); +emit_32(1101718513); +emit_32(1124900864); +emit_32(3264507911); +emit_32(1101446513); +emit_32(1124900864); +emit_32(3263995904); +emit_32(1101370543); +emit_32(1124900864); +emit_32(3263483911); +emit_32(1100714292); +emit_32(1124900864); +emit_32(3262775296); +emit_32(1099954599); +emit_32(1124900864); +emit_32(3261751309); +emit_32(1099576325); +emit_32(1124900864); +emit_32(3260727296); +emit_32(1099307680); +emit_32(1124900864); +emit_32(3259703309); +emit_32(1098767978); +emit_32(1124900864); +emit_32(3258679296); +emit_32(1098097938); +emit_32(1124900864); +emit_32(3257655309); +emit_32(1096914095); +emit_32(1124900864); +emit_32(3256631296); +emit_32(1096195192); +emit_32(1124900864); +emit_32(3255607309); +emit_32(1095657482); +emit_32(1124900864); +emit_32(3254386688); +emit_32(1095370487); +emit_32(1124900864); +emit_32(3252338714); +emit_32(1095450703); +emit_32(1124900864); +emit_32(3250290688); +emit_32(1094766612); +emit_32(1124900864); +emit_32(3248242714); +emit_32(1095587018); +emit_32(1124900864); +emit_32(3245998080); +emit_32(1094951266); +emit_32(1124900864); +emit_32(3241902132); +emit_32(1094949903); +emit_32(1124900864); +emit_32(3237609472); +emit_32(1096714656); +emit_32(1124900864); +emit_32(3229220864); +emit_32(1098445226); +emit_32(1124900864); +emit_32(0); +emit_32(1099331587); +emit_32(1124900864); +emit_32(1081737216); +emit_32(1100260206); +emit_32(1124900864); +emit_32(3279552512); +emit_32(1083591665); +emit_32(1124644880); +emit_32(3279296528); +emit_32(1079852212); +emit_32(1124644880); +emit_32(3279040545); +emit_32(1072228855); +emit_32(1124644880); +emit_32(3278784496); +emit_32(1066448684); +emit_32(1124644880); +emit_32(3278528512); +emit_32(1057555518); +emit_32(1124644880); +emit_32(3278272528); +emit_32(1063153790); +emit_32(1124644880); +emit_32(3278016545); +emit_32(1058210333); +emit_32(1124644880); +emit_32(3277760496); +emit_32(1049561427); +emit_32(1124644880); +emit_32(3277504512); +emit_32(3214410567); +emit_32(1124644880); +emit_32(3277248528); +emit_32(3207614251); +emit_32(1124644880); +emit_32(3276992545); +emit_32(1055980993); +emit_32(1124644880); +emit_32(3276736496); +emit_32(1073762292); +emit_32(1124644880); +emit_32(3276480512); +emit_32(1079724747); +emit_32(1124644880); +emit_32(3276224528); +emit_32(1082560411); +emit_32(1124644880); +emit_32(3275968545); +emit_32(1084722260); +emit_32(1124644880); +emit_32(3275712496); +emit_32(1086375571); +emit_32(1124644880); +emit_32(3275456512); +emit_32(1090446500); +emit_32(1124644880); +emit_32(3275200528); +emit_32(1093171832); +emit_32(1124644880); +emit_32(3274944545); +emit_32(1094812015); +emit_32(1124644880); +emit_32(3274688496); +emit_32(1096292290); +emit_32(1124644880); +emit_32(3274432512); +emit_32(1097734921); +emit_32(1124644880); +emit_32(3274176528); +emit_32(1099196531); +emit_32(1124644880); +emit_32(3273920545); +emit_32(1099805229); +emit_32(1124644880); +emit_32(3273664496); +emit_32(1100823187); +emit_32(1124644880); +emit_32(3273408512); +emit_32(1101755685); +emit_32(1124644880); +emit_32(3273152528); +emit_32(1102405698); +emit_32(1124644880); +emit_32(3272896545); +emit_32(1102759225); +emit_32(1124644880); +emit_32(3272640496); +emit_32(1103381607); +emit_32(1124644880); +emit_32(3272384512); +emit_32(1104182510); +emit_32(1124644880); +emit_32(3272128528); +emit_32(1105063995); +emit_32(1124644880); +emit_32(3271872545); +emit_32(1106336390); +emit_32(1124644880); +emit_32(3271616496); +emit_32(1107656416); +emit_32(1124644880); +emit_32(3271163904); +emit_32(1108075925); +emit_32(1124644880); +emit_32(3270651937); +emit_32(1108328763); +emit_32(1124644880); +emit_32(3270139970); +emit_32(1108369080); +emit_32(1124644880); +emit_32(3269627871); +emit_32(1108254366); +emit_32(1124644880); +emit_32(3269115904); +emit_32(1107968551); +emit_32(1124644880); +emit_32(3268603937); +emit_32(1107979456); +emit_32(1124644880); +emit_32(3268091970); +emit_32(1107515802); +emit_32(1124644880); +emit_32(3267579911); +emit_32(1106388084); +emit_32(1124644880); +emit_32(3267067904); +emit_32(1104790841); +emit_32(1124644880); +emit_32(3266555911); +emit_32(1104209563); +emit_32(1124644880); +emit_32(3266043904); +emit_32(1103624405); +emit_32(1124644880); +emit_32(3265531911); +emit_32(1102359613); +emit_32(1124644880); +emit_32(3265019904); +emit_32(1101907257); +emit_32(1124644880); +emit_32(3264507911); +emit_32(1101809058); +emit_32(1124644880); +emit_32(3263995904); +emit_32(1101301128); +emit_32(1124644880); +emit_32(3263483911); +emit_32(1100497289); +emit_32(1124644880); +emit_32(3262775296); +emit_32(1099654863); +emit_32(1124644880); +emit_32(3261751309); +emit_32(1099315701); +emit_32(1124644880); +emit_32(3260727296); +emit_32(1098867697); +emit_32(1124644880); +emit_32(3259703309); +emit_32(1097723491); +emit_32(1124644880); +emit_32(3258679296); +emit_32(1097140063); +emit_32(1124644880); +emit_32(3257655309); +emit_32(1096683933); +emit_32(1124644880); +emit_32(3256631296); +emit_32(1095379399); +emit_32(1124644880); +emit_32(3255607309); +emit_32(1094758747); +emit_32(1124644880); +emit_32(3254386688); +emit_32(1094561405); +emit_32(1124644880); +emit_32(3252338714); +emit_32(1094733582); +emit_32(1124644880); +emit_32(3250290688); +emit_32(1093957845); +emit_32(1124644880); +emit_32(3248242714); +emit_32(1094294123); +emit_32(1124644880); +emit_32(3245998080); +emit_32(1093574905); +emit_32(1124644880); +emit_32(3241902132); +emit_32(1094867799); +emit_32(1124644880); +emit_32(3237609472); +emit_32(1097134821); +emit_32(1124644880); +emit_32(3229220864); +emit_32(1099036099); +emit_32(1124644880); +emit_32(0); +emit_32(1099596615); +emit_32(1124644880); +emit_32(1081737216); +emit_32(1100859258); +emit_32(1124644880); +emit_32(3279552512); +emit_32(1081904485); +emit_32(1124388897); +emit_32(3279296528); +emit_32(1075136304); +emit_32(1124388897); +emit_32(3279040545); +emit_32(1073454011); +emit_32(1124388897); +emit_32(3278784496); +emit_32(1066813673); +emit_32(1124388897); +emit_32(3278528512); +emit_32(1058745375); +emit_32(1124388897); +emit_32(3278272528); +emit_32(1007923565); +emit_32(1124388897); +emit_32(3278016545); +emit_32(1041418101); +emit_32(1124388897); +emit_32(3277760496); +emit_32(3199617458); +emit_32(1124388897); +emit_32(3277504512); +emit_32(3217487424); +emit_32(1124388897); +emit_32(3277248528); +emit_32(3214749551); +emit_32(1124388897); +emit_32(3276992545); +emit_32(3200772133); +emit_32(1124388897); +emit_32(3276736496); +emit_32(1066640783); +emit_32(1124388897); +emit_32(3276480512); +emit_32(1076373750); +emit_32(1124388897); +emit_32(3276224528); +emit_32(1080280534); +emit_32(1124388897); +emit_32(3275968545); +emit_32(1084212505); +emit_32(1124388897); +emit_32(3275712496); +emit_32(1084220726); +emit_32(1124388897); +emit_32(3275456512); +emit_32(1088347817); +emit_32(1124388897); +emit_32(3275200528); +emit_32(1092688649); +emit_32(1124388897); +emit_32(3274944545); +emit_32(1095110020); +emit_32(1124388897); +emit_32(3274688496); +emit_32(1096019765); +emit_32(1124388897); +emit_32(3274432512); +emit_32(1097191863); +emit_32(1124388897); +emit_32(3274176528); +emit_32(1099076574); +emit_32(1124388897); +emit_32(3273920545); +emit_32(1099798099); +emit_32(1124388897); +emit_32(3273664496); +emit_32(1100653265); +emit_32(1124388897); +emit_32(3273408512); +emit_32(1101516925); +emit_32(1124388897); +emit_32(3273152528); +emit_32(1102653791); +emit_32(1124388897); +emit_32(3272896545); +emit_32(1103041659); +emit_32(1124388897); +emit_32(3272640496); +emit_32(1103477814); +emit_32(1124388897); +emit_32(3272384512); +emit_32(1104761586); +emit_32(1124388897); +emit_32(3272128528); +emit_32(1105735555); +emit_32(1124388897); +emit_32(3271872545); +emit_32(1106382579); +emit_32(1124388897); +emit_32(3271616496); +emit_32(1107704231); +emit_32(1124388897); +emit_32(3271163904); +emit_32(1108131394); +emit_32(1124388897); +emit_32(3270651937); +emit_32(1108458393); +emit_32(1124388897); +emit_32(3270139970); +emit_32(1108511529); +emit_32(1124388897); +emit_32(3269627871); +emit_32(1108351464); +emit_32(1124388897); +emit_32(3269115904); +emit_32(1108007374); +emit_32(1124388897); +emit_32(3268603937); +emit_32(1107999667); +emit_32(1124388897); +emit_32(3268091970); +emit_32(1107747353); +emit_32(1124388897); +emit_32(3267579911); +emit_32(1106761954); +emit_32(1124388897); +emit_32(3267067904); +emit_32(1105151446); +emit_32(1124388897); +emit_32(3266555911); +emit_32(1103997960); +emit_32(1124388897); +emit_32(3266043904); +emit_32(1103338930); +emit_32(1124388897); +emit_32(3265531911); +emit_32(1102310120); +emit_32(1124388897); +emit_32(3265019904); +emit_32(1102078804); +emit_32(1124388897); +emit_32(3264507911); +emit_32(1102132910); +emit_32(1124388897); +emit_32(3263995904); +emit_32(1101260338); +emit_32(1124388897); +emit_32(3263483911); +emit_32(1100505783); +emit_32(1124388897); +emit_32(3262775296); +emit_32(1099485361); +emit_32(1124388897); +emit_32(3261751309); +emit_32(1099317379); +emit_32(1124388897); +emit_32(3260727296); +emit_32(1097990459); +emit_32(1124388897); +emit_32(3259703309); +emit_32(1097342543); +emit_32(1124388897); +emit_32(3258679296); +emit_32(1095513512); +emit_32(1124388897); +emit_32(3257655309); +emit_32(1095404880); +emit_32(1124388897); +emit_32(3256631296); +emit_32(1094651059); +emit_32(1124388897); +emit_32(3255607309); +emit_32(1094446901); +emit_32(1124388897); +emit_32(3254386688); +emit_32(1093497625); +emit_32(1124388897); +emit_32(3252338714); +emit_32(1093705977); +emit_32(1124388897); +emit_32(3250290688); +emit_32(1093119299); +emit_32(1124388897); +emit_32(3248242714); +emit_32(1093472354); +emit_32(1124388897); +emit_32(3245998080); +emit_32(1095171362); +emit_32(1124388897); +emit_32(3241902132); +emit_32(1096014103); +emit_32(1124388897); +emit_32(3237609472); +emit_32(1097783784); +emit_32(1124388897); +emit_32(3229220864); +emit_32(1099140904); +emit_32(1124388897); +emit_32(0); +emit_32(1099863844); +emit_32(1124388897); +emit_32(1081737216); +emit_32(1100982465); +emit_32(1124388897); +emit_32(3279552512); +emit_32(1076151032); +emit_32(1124132848); +emit_32(3279296528); +emit_32(1074265021); +emit_32(1124132848); +emit_32(3279040545); +emit_32(1059897651); +emit_32(1124132848); +emit_32(3278784496); +emit_32(3197909672); +emit_32(1124132848); +emit_32(3278528512); +emit_32(3211975304); +emit_32(1124132848); +emit_32(3278272528); +emit_32(3212548900); +emit_32(1124132848); +emit_32(3278016545); +emit_32(3214293881); +emit_32(1124132848); +emit_32(3277760496); +emit_32(3216921864); +emit_32(1124132848); +emit_32(3277504512); +emit_32(3222195908); +emit_32(1124132848); +emit_32(3277248528); +emit_32(3221805335); +emit_32(1124132848); +emit_32(3276992545); +emit_32(3213409470); +emit_32(1124132848); +emit_32(3276736496); +emit_32(1032354486); +emit_32(1124132848); +emit_32(3276480512); +emit_32(1066671654); +emit_32(1124132848); +emit_32(3276224528); +emit_32(1078555291); +emit_32(1124132848); +emit_32(3275968545); +emit_32(1082316198); +emit_32(1124132848); +emit_32(3275712496); +emit_32(1084389652); +emit_32(1124132848); +emit_32(3275456512); +emit_32(1090589284); +emit_32(1124132848); +emit_32(3275200528); +emit_32(1093399793); +emit_32(1124132848); +emit_32(3274944545); +emit_32(1094797335); +emit_32(1124132848); +emit_32(3274688496); +emit_32(1095931475); +emit_32(1124132848); +emit_32(3274432512); +emit_32(1097364459); +emit_32(1124132848); +emit_32(3274176528); +emit_32(1098713452); +emit_32(1124132848); +emit_32(3273920545); +emit_32(1099383020); +emit_32(1124132848); +emit_32(3273664496); +emit_32(1100286158); +emit_32(1124132848); +emit_32(3273408512); +emit_32(1101469791); +emit_32(1124132848); +emit_32(3273152528); +emit_32(1102376757); +emit_32(1124132848); +emit_32(3272896545); +emit_32(1103068345); +emit_32(1124132848); +emit_32(3272640496); +emit_32(1104423682); +emit_32(1124132848); +emit_32(3272384512); +emit_32(1104904507); +emit_32(1124132848); +emit_32(3272128528); +emit_32(1106022131); +emit_32(1124132848); +emit_32(3271872545); +emit_32(1106604720); +emit_32(1124132848); +emit_32(3271616496); +emit_32(1107631800); +emit_32(1124132848); +emit_32(3271163904); +emit_32(1108172682); +emit_32(1124132848); +emit_32(3270651937); +emit_32(1108436818); +emit_32(1124132848); +emit_32(3270139970); +emit_32(1108399830); +emit_32(1124132848); +emit_32(3269627871); +emit_32(1108123845); +emit_32(1124132848); +emit_32(3269115904); +emit_32(1108184505); +emit_32(1124132848); +emit_32(3268603937); +emit_32(1108270331); +emit_32(1124132848); +emit_32(3268091970); +emit_32(1107910957); +emit_32(1124132848); +emit_32(3267579911); +emit_32(1107432518); +emit_32(1124132848); +emit_32(3267067904); +emit_32(1105755426); +emit_32(1124132848); +emit_32(3266555911); +emit_32(1104147644); +emit_32(1124132848); +emit_32(3266043904); +emit_32(1103239525); +emit_32(1124132848); +emit_32(3265531911); +emit_32(1102590666); +emit_32(1124132848); +emit_32(3265019904); +emit_32(1101844290); +emit_32(1124132848); +emit_32(3264507911); +emit_32(1101550007); +emit_32(1124132848); +emit_32(3263995904); +emit_32(1101094925); +emit_32(1124132848); +emit_32(3263483911); +emit_32(1100315990); +emit_32(1124132848); +emit_32(3262775296); +emit_32(1099604269); +emit_32(1124132848); +emit_32(3261751309); +emit_32(1098955673); +emit_32(1124132848); +emit_32(3260727296); +emit_32(1096931397); +emit_32(1124132848); +emit_32(3259703309); +emit_32(1095373108); +emit_32(1124132848); +emit_32(3258679296); +emit_32(1094758538); +emit_32(1124132848); +emit_32(3257655309); +emit_32(1094166512); +emit_32(1124132848); +emit_32(3256631296); +emit_32(1094620021); +emit_32(1124132848); +emit_32(3255607309); +emit_32(1094357772); +emit_32(1124132848); +emit_32(3254386688); +emit_32(1093070435); +emit_32(1124132848); +emit_32(3252338714); +emit_32(1092280920); +emit_32(1124132848); +emit_32(3250290688); +emit_32(1092453726); +emit_32(1124132848); +emit_32(3248242714); +emit_32(1094304085); +emit_32(1124132848); +emit_32(3245998080); +emit_32(1096070621); +emit_32(1124132848); +emit_32(3241902132); +emit_32(1096864812); +emit_32(1124132848); +emit_32(3237609472); +emit_32(1098173435); +emit_32(1124132848); +emit_32(3229220864); +emit_32(1099365404); +emit_32(1124132848); +emit_32(0); +emit_32(1099987367); +emit_32(1124132848); +emit_32(1081737216); +emit_32(1101050728); +emit_32(1124132848); +emit_32(3279552512); +emit_32(1075745946); +emit_32(1123680256); +emit_32(3279296528); +emit_32(1067640202); +emit_32(1123680256); +emit_32(3279040545); +emit_32(3205049803); +emit_32(1123680256); +emit_32(3278784496); +emit_32(3215612571); +emit_32(1123680256); +emit_32(3278528512); +emit_32(3218144588); +emit_32(1123680256); +emit_32(3278272528); +emit_32(3222509223); +emit_32(1123680256); +emit_32(3278016545); +emit_32(3221797869); +emit_32(1123680256); +emit_32(3277760496); +emit_32(3225243909); +emit_32(1123680256); +emit_32(3277504512); +emit_32(3225089810); +emit_32(1123680256); +emit_32(3277248528); +emit_32(3226837912); +emit_32(1123680256); +emit_32(3276992545); +emit_32(3222475668); +emit_32(1123680256); +emit_32(3276736496); +emit_32(3210500905); +emit_32(1123680256); +emit_32(3276480512); +emit_32(1057082501); +emit_32(1123680256); +emit_32(3276224528); +emit_32(1069886755); +emit_32(1123680256); +emit_32(3275968545); +emit_32(1079284135); +emit_32(1123680256); +emit_32(3275712496); +emit_32(1085833856); +emit_32(1123680256); +emit_32(3275456512); +emit_32(1090703044); +emit_32(1123680256); +emit_32(3275200528); +emit_32(1093163863); +emit_32(1123680256); +emit_32(3274944545); +emit_32(1094161898); +emit_32(1123680256); +emit_32(3274688496); +emit_32(1095085064); +emit_32(1123680256); +emit_32(3274432512); +emit_32(1096343041); +emit_32(1123680256); +emit_32(3274176528); +emit_32(1097267465); +emit_32(1123680256); +emit_32(3273920545); +emit_32(1099232549); +emit_32(1123680256); +emit_32(3273664496); +emit_32(1100352638); +emit_32(1123680256); +emit_32(3273408512); +emit_32(1101666347); +emit_32(1123680256); +emit_32(3273152528); +emit_32(1102553599); +emit_32(1123680256); +emit_32(3272896545); +emit_32(1103499048); +emit_32(1123680256); +emit_32(3272640496); +emit_32(1104589619); +emit_32(1123680256); +emit_32(3272384512); +emit_32(1105372486); +emit_32(1123680256); +emit_32(3272128528); +emit_32(1105859602); +emit_32(1123680256); +emit_32(3271872545); +emit_32(1106894337); +emit_32(1123680256); +emit_32(3271616496); +emit_32(1107538372); +emit_32(1123680256); +emit_32(3271163904); +emit_32(1107947762); +emit_32(1123680256); +emit_32(3270651937); +emit_32(1108124343); +emit_32(1123680256); +emit_32(3270139970); +emit_32(1107942572); +emit_32(1123680256); +emit_32(3269627871); +emit_32(1108284329); +emit_32(1123680256); +emit_32(3269115904); +emit_32(1108344439); +emit_32(1123680256); +emit_32(3268603937); +emit_32(1108291722); +emit_32(1123680256); +emit_32(3268091970); +emit_32(1107980426); +emit_32(1123680256); +emit_32(3267579911); +emit_32(1107402844); +emit_32(1123680256); +emit_32(3267067904); +emit_32(1105639401); +emit_32(1123680256); +emit_32(3266555911); +emit_32(1104157868); +emit_32(1123680256); +emit_32(3266043904); +emit_32(1103642965); +emit_32(1123680256); +emit_32(3265531911); +emit_32(1102980579); +emit_32(1123680256); +emit_32(3265019904); +emit_32(1102268282); +emit_32(1123680256); +emit_32(3264507911); +emit_32(1101485362); +emit_32(1123680256); +emit_32(3263995904); +emit_32(1100559260); +emit_32(1123680256); +emit_32(3263483911); +emit_32(1099869979); +emit_32(1123680256); +emit_32(3262775296); +emit_32(1099177447); +emit_32(1123680256); +emit_32(3261751309); +emit_32(1097774032); +emit_32(1123680256); +emit_32(3260727296); +emit_32(1096015990); +emit_32(1123680256); +emit_32(3259703309); +emit_32(1094982618); +emit_32(1123680256); +emit_32(3258679296); +emit_32(1094173642); +emit_32(1123680256); +emit_32(3257655309); +emit_32(1093433557); +emit_32(1123680256); +emit_32(3256631296); +emit_32(1092957084); +emit_32(1123680256); +emit_32(3255607309); +emit_32(1093043696); +emit_32(1123680256); +emit_32(3254386688); +emit_32(1092576367); +emit_32(1123680256); +emit_32(3252338714); +emit_32(1092381919); +emit_32(1123680256); +emit_32(3250290688); +emit_32(1093319052); +emit_32(1123680256); +emit_32(3248242714); +emit_32(1094929141); +emit_32(1123680256); +emit_32(3245998080); +emit_32(1096641151); +emit_32(1123680256); +emit_32(3241902132); +emit_32(1098022230); +emit_32(1123680256); +emit_32(3237609472); +emit_32(1098658716); +emit_32(1123680256); +emit_32(3229220864); +emit_32(1099385274); +emit_32(1123680256); +emit_32(0); +emit_32(1099998324); +emit_32(1123680256); +emit_32(1081737216); +emit_32(1100462372); +emit_32(1123680256); +emit_32(3279552512); +emit_32(1073527831); +emit_32(1123168289); +emit_32(3279296528); +emit_32(1067716203); +emit_32(1123168289); +emit_32(3279040545); +emit_32(1032802545); +emit_32(1123168289); +emit_32(3278784496); +emit_32(3215483554); +emit_32(1123168289); +emit_32(3278528512); +emit_32(3222614416); +emit_32(1123168289); +emit_32(3278272528); +emit_32(3226235358); +emit_32(1123168289); +emit_32(3278016545); +emit_32(3229265659); +emit_32(1123168289); +emit_32(3277760496); +emit_32(3229676575); +emit_32(1123168289); +emit_32(3277504512); +emit_32(3230314529); +emit_32(1123168289); +emit_32(3277248528); +emit_32(3227686797); +emit_32(1123168289); +emit_32(3276992545); +emit_32(3224163288); +emit_32(1123168289); +emit_32(3276736496); +emit_32(3224837816); +emit_32(1123168289); +emit_32(3276480512); +emit_32(3214911115); +emit_32(1123168289); +emit_32(3276224528); +emit_32(1045755414); +emit_32(1123168289); +emit_32(3275968545); +emit_32(1075946895); +emit_32(1123168289); +emit_32(3275712496); +emit_32(1083922239); +emit_32(1123168289); +emit_32(3275456512); +emit_32(1089208404); +emit_32(1123168289); +emit_32(3275200528); +emit_32(1091995729); +emit_32(1123168289); +emit_32(3274944545); +emit_32(1093743097); +emit_32(1123168289); +emit_32(3274688496); +emit_32(1094702019); +emit_32(1123168289); +emit_32(3274432512); +emit_32(1095065456); +emit_32(1123168289); +emit_32(3274176528); +emit_32(1095980443); +emit_32(1123168289); +emit_32(3273920545); +emit_32(1098763574); +emit_32(1123168289); +emit_32(3273664496); +emit_32(1100013791); +emit_32(1123168289); +emit_32(3273408512); +emit_32(1101157106); +emit_32(1123168289); +emit_32(3273152528); +emit_32(1102482401); +emit_32(1123168289); +emit_32(3272896545); +emit_32(1103806543); +emit_32(1123168289); +emit_32(3272640496); +emit_32(1104565135); +emit_32(1123168289); +emit_32(3272384512); +emit_32(1105773671); +emit_32(1123168289); +emit_32(3272128528); +emit_32(1106220312); +emit_32(1123168289); +emit_32(3271872545); +emit_32(1106669942); +emit_32(1123168289); +emit_32(3271616496); +emit_32(1107272401); +emit_32(1123168289); +emit_32(3271163904); +emit_32(1107768771); +emit_32(1123168289); +emit_32(3270651937); +emit_32(1108156770); +emit_32(1123168289); +emit_32(3270139970); +emit_32(1108407039); +emit_32(1123168289); +emit_32(3269627871); +emit_32(1108550903); +emit_32(1123168289); +emit_32(3269115904); +emit_32(1108478263); +emit_32(1123168289); +emit_32(3268603937); +emit_32(1108278274); +emit_32(1123168289); +emit_32(3268091970); +emit_32(1107762925); +emit_32(1123168289); +emit_32(3267579911); +emit_32(1106660819); +emit_32(1123168289); +emit_32(3267067904); +emit_32(1105273658); +emit_32(1123168289); +emit_32(3266555911); +emit_32(1104481668); +emit_32(1123168289); +emit_32(3266043904); +emit_32(1104168826); +emit_32(1123168289); +emit_32(3265531911); +emit_32(1103522536); +emit_32(1123168289); +emit_32(3265019904); +emit_32(1102851185); +emit_32(1123168289); +emit_32(3264507911); +emit_32(1101917061); +emit_32(1123168289); +emit_32(3263995904); +emit_32(1101010095); +emit_32(1123168289); +emit_32(3263483911); +emit_32(1099888329); +emit_32(1123168289); +emit_32(3262775296); +emit_32(1098570531); +emit_32(1123168289); +emit_32(3261751309); +emit_32(1096537866); +emit_32(1123168289); +emit_32(3260727296); +emit_32(1095068497); +emit_32(1123168289); +emit_32(3259703309); +emit_32(1094656406); +emit_32(1123168289); +emit_32(3258679296); +emit_32(1094724039); +emit_32(1123168289); +emit_32(3257655309); +emit_32(1093671584); +emit_32(1123168289); +emit_32(3256631296); +emit_32(1092454407); +emit_32(1123168289); +emit_32(3255607309); +emit_32(1092709935); +emit_32(1123168289); +emit_32(3254386688); +emit_32(1093178858); +emit_32(1123168289); +emit_32(3252338714); +emit_32(1092563312); +emit_32(1123168289); +emit_32(3250290688); +emit_32(1093668753); +emit_32(1123168289); +emit_32(3248242714); +emit_32(1095561013); +emit_32(1123168289); +emit_32(3245998080); +emit_32(1096702388); +emit_32(1123168289); +emit_32(3241902132); +emit_32(1097769524); +emit_32(1123168289); +emit_32(3237609472); +emit_32(1098298111); +emit_32(1123168289); +emit_32(3229220864); +emit_32(1098956931); +emit_32(1123168289); +emit_32(0); +emit_32(1099464022); +emit_32(1123168289); +emit_32(1081737216); +emit_32(1100235512); +emit_32(1123168289); +emit_32(3279552512); +emit_32(1074513450); +emit_32(1122656322); +emit_32(3279296528); +emit_32(1069684087); +emit_32(1122656322); +emit_32(3279040545); +emit_32(1059117578); +emit_32(1122656322); +emit_32(3278784496); +emit_32(3205587983); +emit_32(1122656322); +emit_32(3278528512); +emit_32(3221291239); +emit_32(1122656322); +emit_32(3278272528); +emit_32(3227143174); +emit_32(1122656322); +emit_32(3278016545); +emit_32(3228890898); +emit_32(1122656322); +emit_32(3277760496); +emit_32(3231744493); +emit_32(1122656322); +emit_32(3277504512); +emit_32(3231183211); +emit_32(1122656322); +emit_32(3277248528); +emit_32(3226713845); +emit_32(1122656322); +emit_32(3276992545); +emit_32(3222588579); +emit_32(1122656322); +emit_32(3276736496); +emit_32(3218835474); +emit_32(1122656322); +emit_32(3276480512); +emit_32(3214447728); +emit_32(1122656322); +emit_32(3276224528); +emit_32(1046529045); +emit_32(1122656322); +emit_32(3275968545); +emit_32(1070915199); +emit_32(1122656322); +emit_32(3275712496); +emit_32(1082866637); +emit_32(1122656322); +emit_32(3275456512); +emit_32(1087021578); +emit_32(1122656322); +emit_32(3275200528); +emit_32(1090529232); +emit_32(1122656322); +emit_32(3274944545); +emit_32(1092317201); +emit_32(1122656322); +emit_32(3274688496); +emit_32(1093426427); +emit_32(1122656322); +emit_32(3274432512); +emit_32(1094040158); +emit_32(1122656322); +emit_32(3274176528); +emit_32(1095262693); +emit_32(1122656322); +emit_32(3273920545); +emit_32(1097468792); +emit_32(1122656322); +emit_32(3273664496); +emit_32(1099540411); +emit_32(1122656322); +emit_32(3273408512); +emit_32(1100993213); +emit_32(1122656322); +emit_32(3273152528); +emit_32(1102819203); +emit_32(1122656322); +emit_32(3272896545); +emit_32(1104470763); +emit_32(1122656322); +emit_32(3272640496); +emit_32(1105442111); +emit_32(1122656322); +emit_32(3272384512); +emit_32(1106127356); +emit_32(1122656322); +emit_32(3272128528); +emit_32(1106807829); +emit_32(1122656322); +emit_32(3271872545); +emit_32(1107212108); +emit_32(1122656322); +emit_32(3271616496); +emit_32(1107339719); +emit_32(1122656322); +emit_32(3271163904); +emit_32(1108016575); +emit_32(1122656322); +emit_32(3270651937); +emit_32(1108361190); +emit_32(1122656322); +emit_32(3270139970); +emit_32(1108677807); +emit_32(1122656322); +emit_32(3269627871); +emit_32(1108698045); +emit_32(1122656322); +emit_32(3269115904); +emit_32(1108670415); +emit_32(1122656322); +emit_32(3268603937); +emit_32(1108385307); +emit_32(1122656322); +emit_32(3268091970); +emit_32(1107664044); +emit_32(1122656322); +emit_32(3267579911); +emit_32(1106926109); +emit_32(1122656322); +emit_32(3267067904); +emit_32(1105983491); +emit_32(1122656322); +emit_32(3266555911); +emit_32(1105752542); +emit_32(1122656322); +emit_32(3266043904); +emit_32(1105343650); +emit_32(1122656322); +emit_32(3265531911); +emit_32(1104481983); +emit_32(1122656322); +emit_32(3265019904); +emit_32(1103536377); +emit_32(1122656322); +emit_32(3264507911); +emit_32(1102421374); +emit_32(1122656322); +emit_32(3263995904); +emit_32(1101252526); +emit_32(1122656322); +emit_32(3263483911); +emit_32(1099947835); +emit_32(1122656322); +emit_32(3262775296); +emit_32(1099066665); +emit_32(1122656322); +emit_32(3261751309); +emit_32(1097029334); +emit_32(1122656322); +emit_32(3260727296); +emit_32(1095561223); +emit_32(1122656322); +emit_32(3259703309); +emit_32(1095286181); +emit_32(1122656322); +emit_32(3258679296); +emit_32(1094900095); +emit_32(1122656322); +emit_32(3257655309); +emit_32(1093810625); +emit_32(1122656322); +emit_32(3256631296); +emit_32(1093100949); +emit_32(1122656322); +emit_32(3255607309); +emit_32(1093720133); +emit_32(1122656322); +emit_32(3254386688); +emit_32(1094140822); +emit_32(1122656322); +emit_32(3252338714); +emit_32(1093200983); +emit_32(1122656322); +emit_32(3250290688); +emit_32(1093279731); +emit_32(1122656322); +emit_32(3248242714); +emit_32(1095297296); +emit_32(1122656322); +emit_32(3245998080); +emit_32(1096326998); +emit_32(1122656322); +emit_32(3241902132); +emit_32(1097208116); +emit_32(1122656322); +emit_32(3237609472); +emit_32(1098363332); +emit_32(1122656322); +emit_32(3229220864); +emit_32(1098960496); +emit_32(1122656322); +emit_32(0); +emit_32(1099624612); +emit_32(1122656322); +emit_32(1081737216); +emit_32(1100438045); +emit_32(1122656322); +emit_start(Landscape07Vtx) +emit_32(1081737216); +emit_32(1111930149); +emit_32(3270651937); +emit_32(1081737216); +emit_32(1111592455); +emit_32(3270139970); +emit_32(1090125824); +emit_32(1111718284); +emit_32(3270651937); +emit_32(1090125824); +emit_32(1111491609); +emit_32(3270139970); +emit_32(1094418484); +emit_32(1111318934); +emit_32(3270651937); +emit_32(1094418484); +emit_32(1111194940); +emit_32(3270139970); +emit_32(1098514432); +emit_32(1110681374); +emit_32(3270651937); +emit_32(1098514432); +emit_32(1110835331); +emit_32(3270139970); +emit_32(1100759066); +emit_32(1110219843); +emit_32(3270651937); +emit_32(1100759066); +emit_32(1110275365); +emit_32(3270139970); +emit_32(1102807040); +emit_32(1109758994); +emit_32(3270651937); +emit_32(1102807040); +emit_32(1110005567); +emit_32(3270139970); +emit_32(1104855066); +emit_32(1109428771); +emit_32(3270651937); +emit_32(1104855066); +emit_32(1109696499); +emit_32(3270139970); +emit_32(1106903040); +emit_32(1109202908); +emit_32(3270651937); +emit_32(1106903040); +emit_32(1109176772); +emit_32(3270139970); +emit_32(1108123661); +emit_32(1108966585); +emit_32(3270651937); +emit_32(1108123661); +emit_32(1108885556); +emit_32(3270139970); +emit_32(1109147648); +emit_32(1108648919); +emit_32(3270651937); +emit_32(1109147648); +emit_32(1108468774); +emit_32(3270139970); +emit_32(1110171661); +emit_32(1108152890); +emit_32(3270651937); +emit_32(1110171661); +emit_32(1108030285); +emit_32(3270139970); +emit_32(1111195648); +emit_32(1107519839); +emit_32(3270651937); +emit_32(1111195648); +emit_32(1107430028); +emit_32(3270139970); +emit_32(1112219661); +emit_32(1107320478); +emit_32(3270651937); +emit_32(1112219661); +emit_32(1107103737); +emit_32(3270139970); +emit_32(1113243648); +emit_32(1107611170); +emit_32(3270651937); +emit_32(1113243648); +emit_32(1107092098); +emit_32(3270139970); +emit_32(1114267661); +emit_32(1107859839); +emit_32(3270651937); +emit_32(1114267661); +emit_32(1107375004); +emit_32(3270139970); +emit_32(1115291648); +emit_32(1107759596); +emit_32(3270651937); +emit_32(1115291648); +emit_32(1107478708); +emit_32(3270139970); +emit_32(1116000263); +emit_32(1107948785); +emit_32(3270651937); +emit_32(1116000263); +emit_32(1107657884); +emit_32(3270139970); +emit_32(1116512256); +emit_32(1108015605); +emit_32(3270651937); +emit_32(1116512256); +emit_32(1107812575); +emit_32(3270139970); +emit_32(1117024263); +emit_32(1108198949); +emit_32(3270651937); +emit_32(1117024263); +emit_32(1108062005); +emit_32(3270139970); +emit_32(1117536256); +emit_32(1108525082); +emit_32(3270651937); +emit_32(1117536256); +emit_32(1108546316); +emit_32(3270139970); +emit_32(1118048263); +emit_32(1108838475); +emit_32(3270651937); +emit_32(1118048263); +emit_32(1108808198); +emit_32(3270139970); +emit_32(1118560256); +emit_32(1108830663); +emit_32(3270651937); +emit_32(1118560256); +emit_32(1108821253); +emit_32(3270139970); +emit_32(1119072263); +emit_32(1108933791); +emit_32(3270651937); +emit_32(1119072263); +emit_32(1108944565); +emit_32(3270139970); +emit_32(1119584256); +emit_32(1109285510); +emit_32(3270651937); +emit_32(1119584256); +emit_32(1109292509); +emit_32(3270139970); +emit_32(1120096263); +emit_32(1109319064); +emit_32(3270651937); +emit_32(1120096263); +emit_32(1109325827); +emit_32(3270139970); +emit_32(1120608322); +emit_32(1109471003); +emit_32(3270651937); +emit_32(1120608322); +emit_32(1109645355); +emit_32(3270139970); +emit_32(1121120289); +emit_32(1109582728); +emit_32(3270651937); +emit_32(1121120289); +emit_32(1109627555); +emit_32(3270139970); +emit_32(1121632256); +emit_32(1109427592); +emit_32(3270651937); +emit_32(1121632256); +emit_32(1109566502); +emit_32(3270139970); +emit_32(1122144223); +emit_32(1109250959); +emit_32(3270651937); +emit_32(1122144223); +emit_32(1109470347); +emit_32(3270139970); +emit_32(1122656322); +emit_32(1109132050); +emit_32(3270651937); +emit_32(1122656322); +emit_32(1109358831); +emit_32(3270139970); +emit_32(1123168289); +emit_32(1108892975); +emit_32(3270651937); +emit_32(1123168289); +emit_32(1109156561); +emit_32(3270139970); +emit_32(1123680256); +emit_32(1108663599); +emit_32(3270651937); +emit_32(1123680256); +emit_32(1108641920); +emit_32(3270139970); +emit_32(1124132848); +emit_32(1108204087); +emit_32(3270651937); +emit_32(1124132848); +emit_32(1108219580); +emit_32(3270139970); +emit_32(1124388897); +emit_32(1107681555); +emit_32(3270651937); +emit_32(1124388897); +emit_32(1107796112); +emit_32(3270139970); +emit_32(1124644880); +emit_32(1107061165); +emit_32(3270651937); +emit_32(1124644880); +emit_32(1107364885); +emit_32(3270139970); +emit_32(1124900864); +emit_32(1105549119); +emit_32(3270651937); +emit_32(1124900864); +emit_32(1106177268); +emit_32(3270139970); +emit_32(1125156848); +emit_32(1104447065); +emit_32(3270651937); +emit_32(1125156848); +emit_32(1105288443); +emit_32(3270139970); +emit_32(1125412897); +emit_32(1103204817); +emit_32(3270651937); +emit_32(1125412897); +emit_32(1104753197); +emit_32(3270139970); +emit_32(1125668880); +emit_32(1102168352); +emit_32(3270651937); +emit_32(1125668880); +emit_32(1103375473); +emit_32(3270139970); +emit_32(1125924864); +emit_32(1101100116); +emit_32(3270651937); +emit_32(1125924864); +emit_32(1102075344); +emit_32(3270139970); +emit_32(1126180848); +emit_32(1099752591); +emit_32(3270651937); +emit_32(1126180848); +emit_32(1100964849); +emit_32(3270139970); +emit_32(1126436897); +emit_32(1098425093); +emit_32(3270651937); +emit_32(1126436897); +emit_32(1099792384); +emit_32(3270139970); +emit_32(1126692880); +emit_32(1096597845); +emit_32(3270651937); +emit_32(1126692880); +emit_32(1098450049); +emit_32(3270139970); +emit_32(1126948864); +emit_32(1094429285); +emit_32(3270651937); +emit_32(1126948864); +emit_32(1096338322); +emit_32(3270139970); +emit_32(1127204848); +emit_32(1091900413); +emit_32(3270651937); +emit_32(1127204848); +emit_32(1093954280); +emit_32(3270139970); +emit_32(1127460897); +emit_32(1087591940); +emit_32(3270651937); +emit_32(1127460897); +emit_32(1091524247); +emit_32(3270139970); +emit_32(1127716880); +emit_32(1083181671); +emit_32(3270651937); +emit_32(1127716880); +emit_32(1088518839); +emit_32(3270139970); +emit_32(1127972864); +emit_32(1076995723); +emit_32(3270651937); +emit_32(1127972864); +emit_32(1083884385); +emit_32(3270139970); +emit_32(1128228848); +emit_32(1068649268); +emit_32(3270651937); +emit_32(1128228848); +emit_32(1076931424); +emit_32(3270139970); +emit_32(1128484897); +emit_32(3216283995); +emit_32(3270651937); +emit_32(1128484897); +emit_32(1044557454); +emit_32(3270139970); +emit_32(1128740880); +emit_32(3221805544); +emit_32(3270651937); +emit_32(1128740880); +emit_32(3205427693); +emit_32(3270139970); +emit_32(1128996864); +emit_32(3223037537); +emit_32(3270651937); +emit_32(1128996864); +emit_32(3213113940); +emit_32(3270139970); +emit_32(1129252848); +emit_32(3228540254); +emit_32(3270651937); +emit_32(1129252848); +emit_32(3221962118); +emit_32(3270139970); +emit_32(1129508897); +emit_32(3230275333); +emit_32(3270651937); +emit_32(1129508897); +emit_32(3220483500); +emit_32(3270139970); +emit_32(1129764880); +emit_32(3232612273); +emit_32(3270651937); +emit_32(1129764880); +emit_32(3225420531); +emit_32(3270139970); +emit_32(1130020864); +emit_32(3235277565); +emit_32(3270651937); +emit_32(1130020864); +emit_32(3230173831); +emit_32(3270139970); +emit_32(1130276848); +emit_32(3234218671); +emit_32(3270651937); +emit_32(1130276848); +emit_32(3232043735); +emit_32(3270139970); +emit_32(1130532897); +emit_32(3231045470); +emit_32(3270651937); +emit_32(1130532897); +emit_32(3227363752); +emit_32(3270139970); +emit_32(1130788880); +emit_32(3226755997); +emit_32(3270651937); +emit_32(1130788880); +emit_32(3221899790); +emit_32(3270139970); +emit_32(1131044864); +emit_32(3229128715); +emit_32(3270651937); +emit_32(1131044864); +emit_32(3216845360); +emit_32(3270139970); +emit_32(1131300848); +emit_32(3228788683); +emit_32(3270651937); +emit_32(1131300848); +emit_32(3219415546); +emit_32(3270139970); +emit_32(1131556897); +emit_32(3227247276); +emit_32(3270651937); +emit_32(1131556897); +emit_32(3212863456); +emit_32(3270139970); +emit_32(1131812880); +emit_32(3228672710); +emit_32(3270651937); +emit_32(1131812880); +emit_32(3221056106); +emit_32(3270139970); +emit_32(1132068864); +emit_32(3228908137); +emit_32(3270651937); +emit_32(1132068864); +emit_32(3222457423); +emit_32(3270139970); +emit_32(1081737216); +emit_32(1112094042); +emit_32(3271163904); +emit_32(1090125824); +emit_32(1112019724); +emit_32(3271163904); +emit_32(1094418484); +emit_32(1111438813); +emit_32(3271163904); +emit_32(1098514432); +emit_32(1110812184); +emit_32(3271163904); +emit_32(1100759066); +emit_32(1110106545); +emit_32(3271163904); +emit_32(1102807040); +emit_32(1109946348); +emit_32(3271163904); +emit_32(1104855066); +emit_32(1109673168); +emit_32(3271163904); +emit_32(1106903040); +emit_32(1109472471); +emit_32(3271163904); +emit_32(1108123661); +emit_32(1108974240); +emit_32(3271163904); +emit_32(1109147648); +emit_32(1108497164); +emit_32(3271163904); +emit_32(1110171661); +emit_32(1108102899); +emit_32(3271163904); +emit_32(1111195648); +emit_32(1107538870); +emit_32(3271163904); +emit_32(1112219661); +emit_32(1106915413); +emit_32(3271163904); +emit_32(1113243648); +emit_32(1107679563); +emit_32(3271163904); +emit_32(1114267661); +emit_32(1107902857); +emit_32(3271163904); +emit_32(1115291648); +emit_32(1107930251); +emit_32(3271163904); +emit_32(1116000263); +emit_32(1107983335); +emit_32(3271163904); +emit_32(1116512256); +emit_32(1108070420); +emit_32(3271163904); +emit_32(1117024263); +emit_32(1108274184); +emit_32(3271163904); +emit_32(1117536256); +emit_32(1108723525); +emit_32(3271163904); +emit_32(1118048263); +emit_32(1108785863); +emit_32(3271163904); +emit_32(1118560256); +emit_32(1108864795); +emit_32(3271163904); +emit_32(1119072263); +emit_32(1109018883); +emit_32(3271163904); +emit_32(1119584256); +emit_32(1109278065); +emit_32(3271163904); +emit_32(1120096263); +emit_32(1109410316); +emit_32(3271163904); +emit_32(1120608322); +emit_32(1109373406); +emit_32(3271163904); +emit_32(1121120289); +emit_32(1109364887); +emit_32(3271163904); +emit_32(1121632256); +emit_32(1109384967); +emit_32(3271163904); +emit_32(1122144223); +emit_32(1109332197); +emit_32(3271163904); +emit_32(1122656322); +emit_32(1109067825); +emit_32(3271163904); +emit_32(1123168289); +emit_32(1108783609); +emit_32(3271163904); +emit_32(1123680256); +emit_32(1108563460); +emit_32(3271163904); +emit_32(1124132848); +emit_32(1108020743); +emit_32(3271163904); +emit_32(1124388897); +emit_32(1107280056); +emit_32(3271163904); +emit_32(1124644880); +emit_32(1106630987); +emit_32(3271163904); +emit_32(1124900864); +emit_32(1105186941); +emit_32(3271163904); +emit_32(1125156848); +emit_32(1103741583); +emit_32(3271163904); +emit_32(1125412897); +emit_32(1102190530); +emit_32(3271163904); +emit_32(1125668880); +emit_32(1101340292); +emit_32(3271163904); +emit_32(1125924864); +emit_32(1100447115); +emit_32(3271163904); +emit_32(1126180848); +emit_32(1099367868); +emit_32(3271163904); +emit_32(1126436897); +emit_32(1097589064); +emit_32(3271163904); +emit_32(1126692880); +emit_32(1095164127); +emit_32(3271163904); +emit_32(1126948864); +emit_32(1092722832); +emit_32(3271163904); +emit_32(1127204848); +emit_32(1090145097); +emit_32(3271163904); +emit_32(1127460897); +emit_32(1085202802); +emit_32(3271163904); +emit_32(1127716880); +emit_32(1076722968); +emit_32(3271163904); +emit_32(1127972864); +emit_32(1066002159); +emit_32(3271163904); +emit_32(1128228848); +emit_32(3206002464); +emit_32(3271163904); +emit_32(1128484897); +emit_32(3225385089); +emit_32(3271163904); +emit_32(1128740880); +emit_32(3230254068); +emit_32(3271163904); +emit_32(1128996864); +emit_32(3231283224); +emit_32(3271163904); +emit_32(1129252848); +emit_32(3234493545); +emit_32(3271163904); +emit_32(1129508897); +emit_32(3235258355); +emit_32(3271163904); +emit_32(1129764880); +emit_32(3238361175); +emit_32(3271163904); +emit_32(1130020864); +emit_32(3238992240); +emit_32(3271163904); +emit_32(1130276848); +emit_32(3236249825); +emit_32(3271163904); +emit_32(1130532897); +emit_32(3232841681); +emit_32(3271163904); +emit_32(1130788880); +emit_32(3231925288); +emit_32(3271163904); +emit_32(1131044864); +emit_32(3233336672); +emit_32(3271163904); +emit_32(1131300848); +emit_32(3232958618); +emit_32(3271163904); +emit_32(1131556897); +emit_32(3233414623); +emit_32(3271163904); +emit_32(1131812880); +emit_32(3232723968); +emit_32(3271163904); +emit_32(1132068864); +emit_32(3232386725); +emit_32(3271163904); +emit_32(1081737216); +emit_32(1112138475); +emit_32(3271616496); +emit_32(1090125824); +emit_32(1112117661); +emit_32(3271616496); +emit_32(1094418484); +emit_32(1111516696); +emit_32(3271616496); +emit_32(1098514432); +emit_32(1110701375); +emit_32(3271616496); +emit_32(1100759066); +emit_32(1110259479); +emit_32(3271616496); +emit_32(1102807040); +emit_32(1110148252); +emit_32(3271616496); +emit_32(1104855066); +emit_32(1109941420); +emit_32(3271616496); +emit_32(1106903040); +emit_32(1109408245); +emit_32(3271616496); +emit_32(1108123661); +emit_32(1108791106); +emit_32(3271616496); +emit_32(1109147648); +emit_32(1108280161); +emit_32(3271616496); +emit_32(1110171661); +emit_32(1107557063); +emit_32(3271616496); +emit_32(1111195648); +emit_32(1107163926); +emit_32(3271616496); +emit_32(1112219661); +emit_32(1106741192); +emit_32(3271616496); +emit_32(1113243648); +emit_32(1107262911); +emit_32(3271616496); +emit_32(1114267661); +emit_32(1107611563); +emit_32(3271616496); +emit_32(1115291648); +emit_32(1107823244); +emit_32(3271616496); +emit_32(1116000263); +emit_32(1107902490); +emit_32(3271616496); +emit_32(1116512256); +emit_32(1107980347); +emit_32(3271616496); +emit_32(1117024263); +emit_32(1108314974); +emit_32(3271616496); +emit_32(1117536256); +emit_32(1108495670); +emit_32(3271616496); +emit_32(1118048263); +emit_32(1108580998); +emit_32(3271616496); +emit_32(1118560256); +emit_32(1108703707); +emit_32(3271616496); +emit_32(1119072263); +emit_32(1108940790); +emit_32(3271616496); +emit_32(1119584256); +emit_32(1109066200); +emit_32(3271616496); +emit_32(1120096263); +emit_32(1109329864); +emit_32(3271616496); +emit_32(1120608322); +emit_32(1109220734); +emit_32(3271616496); +emit_32(1121120289); +emit_32(1109504138); +emit_32(3271616496); +emit_32(1121632256); +emit_32(1109526053); +emit_32(3271616496); +emit_32(1122144223); +emit_32(1109328108); +emit_32(3271616496); +emit_32(1122656322); +emit_32(1109031859); +emit_32(3271616496); +emit_32(1123168289); +emit_32(1108646638); +emit_32(3271616496); +emit_32(1123680256); +emit_32(1108345618); +emit_32(3271616496); +emit_32(1124132848); +emit_32(1107854806); +emit_32(3271616496); +emit_32(1124388897); +emit_32(1107061532); +emit_32(3271616496); +emit_32(1124644880); +emit_32(1105828407); +emit_32(3271616496); +emit_32(1124900864); +emit_32(1104345458); +emit_32(3271616496); +emit_32(1125156848); +emit_32(1103146569); +emit_32(3271616496); +emit_32(1125412897); +emit_32(1101554883); +emit_32(3271616496); +emit_32(1125668880); +emit_32(1100465255); +emit_32(3271616496); +emit_32(1125924864); +emit_32(1099197894); +emit_32(3271616496); +emit_32(1126180848); +emit_32(1097396440); +emit_32(3271616496); +emit_32(1126436897); +emit_32(1095592680); +emit_32(3271616496); +emit_32(1126692880); +emit_32(1093988988); +emit_32(3271616496); +emit_32(1126948864); +emit_32(1091770998); +emit_32(3271616496); +emit_32(1127204848); +emit_32(1088099283); +emit_32(3271616496); +emit_32(1127460897); +emit_32(1081294172); +emit_32(3271616496); +emit_32(1127716880); +emit_32(1060903076); +emit_32(3271616496); +emit_32(1127972864); +emit_32(1039720717); +emit_32(3271616496); +emit_32(1128228848); +emit_32(3220556900); +emit_32(3271616496); +emit_32(1128484897); +emit_32(3232451338); +emit_32(3271616496); +emit_32(1128740880); +emit_32(3236043424); +emit_32(3271616496); +emit_32(1128996864); +emit_32(3238289211); +emit_32(3271616496); +emit_32(1129252848); +emit_32(3238868193); +emit_32(3271616496); +emit_32(1129508897); +emit_32(3239430691); +emit_32(3271616496); +emit_32(1129764880); +emit_32(3241001301); +emit_32(3271616496); +emit_32(1130020864); +emit_32(3240828600); +emit_32(3271616496); +emit_32(1130276848); +emit_32(3238957018); +emit_32(3271616496); +emit_32(1130532897); +emit_32(3238262997); +emit_32(3271616496); +emit_32(1130788880); +emit_32(3237575372); +emit_32(3271616496); +emit_32(1131044864); +emit_32(3235372398); +emit_32(3271616496); +emit_32(1131300848); +emit_32(3236771345); +emit_32(3271616496); +emit_32(1131556897); +emit_32(3235935337); +emit_32(3271616496); +emit_32(1131812880); +emit_32(3235730822); +emit_32(3271616496); +emit_32(1132068864); +emit_32(3234015499); +emit_32(3271616496); +emit_32(1081737216); +emit_32(1111780334); +emit_32(3271872545); +emit_32(1090125824); +emit_32(1111692673); +emit_32(3271872545); +emit_32(1094418484); +emit_32(1111222256); +emit_32(3271872545); +emit_32(1098514432); +emit_32(1110566135); +emit_32(3271872545); +emit_32(1100759066); +emit_32(1110232950); +emit_32(3271872545); +emit_32(1102807040); +emit_32(1109993665); +emit_32(3271872545); +emit_32(1104855066); +emit_32(1109851950); +emit_32(3271872545); +emit_32(1106903040); +emit_32(1109283098); +emit_32(3271872545); +emit_32(1108123661); +emit_32(1108493022); +emit_32(3271872545); +emit_32(1109147648); +emit_32(1107705515); +emit_32(3271872545); +emit_32(1110171661); +emit_32(1107275494); +emit_32(3271872545); +emit_32(1111195648); +emit_32(1106747326); +emit_32(3271872545); +emit_32(1112219661); +emit_32(1106557639); +emit_32(3271872545); +emit_32(1113243648); +emit_32(1107170427); +emit_32(3271872545); +emit_32(1114267661); +emit_32(1107580499); +emit_32(3271872545); +emit_32(1115291648); +emit_32(1107671725); +emit_32(3271872545); +emit_32(1116000263); +emit_32(1107801250); +emit_32(3271872545); +emit_32(1116512256); +emit_32(1107801355); +emit_32(3271872545); +emit_32(1117024263); +emit_32(1107771313); +emit_32(3271872545); +emit_32(1117536256); +emit_32(1108068427); +emit_32(3271872545); +emit_32(1118048263); +emit_32(1108248048); +emit_32(3271872545); +emit_32(1118560256); +emit_32(1108300713); +emit_32(3271872545); +emit_32(1119072263); +emit_32(1108561232); +emit_32(3271872545); +emit_32(1119584256); +emit_32(1108758521); +emit_32(3271872545); +emit_32(1120096263); +emit_32(1109143559); +emit_32(3271872545); +emit_32(1120608322); +emit_32(1109106360); +emit_32(3271872545); +emit_32(1121120289); +emit_32(1109227104); +emit_32(3271872545); +emit_32(1121632256); +emit_32(1109385701); +emit_32(3271872545); +emit_32(1122144223); +emit_32(1109080854); +emit_32(3271872545); +emit_32(1122656322); +emit_32(1108826600); +emit_32(3271872545); +emit_32(1123168289); +emit_32(1108564194); +emit_32(3271872545); +emit_32(1123680256); +emit_32(1108304829); +emit_32(3271872545); +emit_32(1124132848); +emit_32(1107781275); +emit_32(3271872545); +emit_32(1124388897); +emit_32(1107099700); +emit_32(3271872545); +emit_32(1124644880); +emit_32(1105344908); +emit_32(3271872545); +emit_32(1124900864); +emit_32(1103617904); +emit_32(3271872545); +emit_32(1125156848); +emit_32(1102172966); +emit_32(3271872545); +emit_32(1125412897); +emit_32(1100636435); +emit_32(3271872545); +emit_32(1125668880); +emit_32(1099511418); +emit_32(3271872545); +emit_32(1125924864); +emit_32(1097613076); +emit_32(3271872545); +emit_32(1126180848); +emit_32(1095954124); +emit_32(3271872545); +emit_32(1126436897); +emit_32(1093684062); +emit_32(3271872545); +emit_32(1126692880); +emit_32(1091734235); +emit_32(3271872545); +emit_32(1126948864); +emit_32(1088057634); +emit_32(3271872545); +emit_32(1127204848); +emit_32(1082772853); +emit_32(3271872545); +emit_32(1127460897); +emit_32(1073941095); +emit_32(3271872545); +emit_32(1127716880); +emit_32(3208567734); +emit_32(3271872545); +emit_32(1127972864); +emit_32(3214907844); +emit_32(3271872545); +emit_32(1128228848); +emit_32(3228392866); +emit_32(3271872545); +emit_32(1128484897); +emit_32(3236333837); +emit_32(3271872545); +emit_32(1128740880); +emit_32(3239712465); +emit_32(3271872545); +emit_32(1128996864); +emit_32(3240772082); +emit_32(3271872545); +emit_32(1129252848); +emit_32(3241312099); +emit_32(3271872545); +emit_32(1129508897); +emit_32(3242196782); +emit_32(3271872545); +emit_32(1129764880); +emit_32(3243389118); +emit_32(3271872545); +emit_32(1130020864); +emit_32(3242673360); +emit_32(3271872545); +emit_32(1130276848); +emit_32(3241675955); +emit_32(3271872545); +emit_32(1130532897); +emit_32(3241634116); +emit_32(3271872545); +emit_32(1130788880); +emit_32(3240687986); +emit_32(3271872545); +emit_32(1131044864); +emit_32(3240058075); +emit_32(3271872545); +emit_32(1131300848); +emit_32(3239722845); +emit_32(3271872545); +emit_32(1131556897); +emit_32(3238832237); +emit_32(3271872545); +emit_32(1131812880); +emit_32(3238354108); +emit_32(3271872545); +emit_32(1132068864); +emit_32(3234493083); +emit_32(3271872545); +emit_32(1081737216); +emit_32(1111464346); +emit_32(3272128528); +emit_32(1090125824); +emit_32(1111239505); +emit_32(3272128528); +emit_32(1094418484); +emit_32(1110994767); +emit_32(3272128528); +emit_32(1098514432); +emit_32(1110132890); +emit_32(3272128528); +emit_32(1100759066); +emit_32(1109887445); +emit_32(3272128528); +emit_32(1102807040); +emit_32(1109762271); +emit_32(3272128528); +emit_32(1104855066); +emit_32(1109309469); +emit_32(3272128528); +emit_32(1106903040); +emit_32(1108918429); +emit_32(3272128528); +emit_32(1108123661); +emit_32(1108186287); +emit_32(3272128528); +emit_32(1109147648); +emit_32(1107206970); +emit_32(3272128528); +emit_32(1110171661); +emit_32(1106779308); +emit_32(3272128528); +emit_32(1111195648); +emit_32(1105875436); +emit_32(3272128528); +emit_32(1112219661); +emit_32(1105956962); +emit_32(3272128528); +emit_32(1113243648); +emit_32(1106440618); +emit_32(3272128528); +emit_32(1114267661); +emit_32(1107100225); +emit_32(3272128528); +emit_32(1115291648); +emit_32(1107233499); +emit_32(3272128528); +emit_32(1116000263); +emit_32(1107508645); +emit_32(3272128528); +emit_32(1116512256); +emit_32(1107671935); +emit_32(3272128528); +emit_32(1117024263); +emit_32(1107608207); +emit_32(3272128528); +emit_32(1117536256); +emit_32(1107752387); +emit_32(3272128528); +emit_32(1118048263); +emit_32(1108110134); +emit_32(3272128528); +emit_32(1118560256); +emit_32(1108408690); +emit_32(3272128528); +emit_32(1119072263); +emit_32(1108474017); +emit_32(3272128528); +emit_32(1119584256); +emit_32(1108395164); +emit_32(3272128528); +emit_32(1120096263); +emit_32(1108750369); +emit_32(3272128528); +emit_32(1120608322); +emit_32(1108885688); +emit_32(3272128528); +emit_32(1121120289); +emit_32(1109040851); +emit_32(3272128528); +emit_32(1121632256); +emit_32(1108986665); +emit_32(3272128528); +emit_32(1122144223); +emit_32(1108827727); +emit_32(3272128528); +emit_32(1122656322); +emit_32(1108753462); +emit_32(3272128528); +emit_32(1123168289); +emit_32(1108679852); +emit_32(3272128528); +emit_32(1123680256); +emit_32(1108175513); +emit_32(3272128528); +emit_32(1124132848); +emit_32(1107583015); +emit_32(3272128528); +emit_32(1124388897); +emit_32(1106521358); +emit_32(3272128528); +emit_32(1124644880); +emit_32(1104987134); +emit_32(3272128528); +emit_32(1124900864); +emit_32(1103342862); +emit_32(3272128528); +emit_32(1125156848); +emit_32(1101546652); +emit_32(3272128528); +emit_32(1125412897); +emit_32(1099964770); +emit_32(3272128528); +emit_32(1125668880); +emit_32(1098242746); +emit_32(3272128528); +emit_32(1125924864); +emit_32(1096185125); +emit_32(3272128528); +emit_32(1126180848); +emit_32(1094379792); +emit_32(3272128528); +emit_32(1126436897); +emit_32(1092287841); +emit_32(3272128528); +emit_32(1126692880); +emit_32(1089612693); +emit_32(3272128528); +emit_32(1126948864); +emit_32(1083167159); +emit_32(3272128528); +emit_32(1127204848); +emit_32(1069990774); +emit_32(3272128528); +emit_32(1127460897); +emit_32(1049416773); +emit_32(3272128528); +emit_32(1127716880); +emit_32(3222071379); +emit_32(3272128528); +emit_32(1127972864); +emit_32(3226126181); +emit_32(3272128528); +emit_32(1128228848); +emit_32(3233267570); +emit_32(3272128528); +emit_32(1128484897); +emit_32(3238358344); +emit_32(3272128528); +emit_32(1128740880); +emit_32(3242189233); +emit_32(3272128528); +emit_32(1128996864); +emit_32(3244019627); +emit_32(3272128528); +emit_32(1129252848); +emit_32(3244520951); +emit_32(3272128528); +emit_32(1129508897); +emit_32(3245091062); +emit_32(3272128528); +emit_32(1129764880); +emit_32(3245124302); +emit_32(3272128528); +emit_32(1130020864); +emit_32(3245824436); +emit_32(3272128528); +emit_32(1130276848); +emit_32(3245103854); +emit_32(3272128528); +emit_32(1130532897); +emit_32(3245100184); +emit_32(3272128528); +emit_32(1130788880); +emit_32(3243298207); +emit_32(3272128528); +emit_32(1131044864); +emit_32(3242985731); +emit_32(3272128528); +emit_32(1131300848); +emit_32(3242330895); +emit_32(3272128528); +emit_32(1131556897); +emit_32(3242176545); +emit_32(3272128528); +emit_32(1131812880); +emit_32(3239330856); +emit_32(3272128528); +emit_32(1132068864); +emit_32(3234703260); +emit_32(3272128528); +emit_32(1081737216); +emit_32(1111298697); +emit_32(3272384512); +emit_32(1090125824); +emit_32(1111058363); +emit_32(3272384512); +emit_32(1094418484); +emit_32(1110735087); +emit_32(3272384512); +emit_32(1098514432); +emit_32(1110169171); +emit_32(3272384512); +emit_32(1100759066); +emit_32(1109403894); +emit_32(3272384512); +emit_32(1102807040); +emit_32(1108912557); +emit_32(3272384512); +emit_32(1104855066); +emit_32(1108673482); +emit_32(3272384512); +emit_32(1106903040); +emit_32(1108260081); +emit_32(3272384512); +emit_32(1108123661); +emit_32(1107647870); +emit_32(3272384512); +emit_32(1109147648); +emit_32(1106643832); +emit_32(3272384512); +emit_32(1110171661); +emit_32(1105736919); +emit_32(3272384512); +emit_32(1111195648); +emit_32(1105100643); +emit_32(3272384512); +emit_32(1112219661); +emit_32(1104911375); +emit_32(3272384512); +emit_32(1113243648); +emit_32(1105299348); +emit_32(3272384512); +emit_32(1114267661); +emit_32(1106150267); +emit_32(3272384512); +emit_32(1115291648); +emit_32(1106320766); +emit_32(3272384512); +emit_32(1116000263); +emit_32(1106620187); +emit_32(3272384512); +emit_32(1116512256); +emit_32(1107259294); +emit_32(3272384512); +emit_32(1117024263); +emit_32(1107471604); +emit_32(3272384512); +emit_32(1117536256); +emit_32(1107538267); +emit_32(3272384512); +emit_32(1118048263); +emit_32(1108219553); +emit_32(3272384512); +emit_32(1118560256); +emit_32(1108391625); +emit_32(3272384512); +emit_32(1119072263); +emit_32(1108309180); +emit_32(3272384512); +emit_32(1119584256); +emit_32(1108147516); +emit_32(3272384512); +emit_32(1120096263); +emit_32(1108248730); +emit_32(3272384512); +emit_32(1120608322); +emit_32(1108495801); +emit_32(3272384512); +emit_32(1121120289); +emit_32(1108672669); +emit_32(3272384512); +emit_32(1121632256); +emit_32(1108534860); +emit_32(3272384512); +emit_32(1122144223); +emit_32(1108457213); +emit_32(3272384512); +emit_32(1122656322); +emit_32(1108523588); +emit_32(3272384512); +emit_32(1123168289); +emit_32(1108457397); +emit_32(3272384512); +emit_32(1123680256); +emit_32(1108144502); +emit_32(3272384512); +emit_32(1124132848); +emit_32(1107554966); +emit_32(3272384512); +emit_32(1124388897); +emit_32(1106329469); +emit_32(3272384512); +emit_32(1124644880); +emit_32(1104699510); +emit_32(3272384512); +emit_32(1124900864); +emit_32(1103026140); +emit_32(3272384512); +emit_32(1125156848); +emit_32(1101214148); +emit_32(3272384512); +emit_32(1125412897); +emit_32(1099233965); +emit_32(3272384512); +emit_32(1125668880); +emit_32(1095822737); +emit_32(3272384512); +emit_32(1125924864); +emit_32(1093805801); +emit_32(3272384512); +emit_32(1126180848); +emit_32(1091936012); +emit_32(3272384512); +emit_32(1126436897); +emit_32(1089180931); +emit_32(3272384512); +emit_32(1126692880); +emit_32(1084894877); +emit_32(3272384512); +emit_32(1126948864); +emit_32(1077040728); +emit_32(3272384512); +emit_32(1127204848); +emit_32(1063155099); +emit_32(3272384512); +emit_32(1127460897); +emit_32(3215476340); +emit_32(3272384512); +emit_32(1127716880); +emit_32(3228112477); +emit_32(3272384512); +emit_32(1127972864); +emit_32(3232515133); +emit_32(3272384512); +emit_32(1128228848); +emit_32(3238089206); +emit_32(3272384512); +emit_32(1128484897); +emit_32(3241062852); +emit_32(3272384512); +emit_32(1128740880); +emit_32(3244581139); +emit_32(3272384512); +emit_32(1128996864); +emit_32(3246469677); +emit_32(3272384512); +emit_32(1129252848); +emit_32(3246870181); +emit_32(3272384512); +emit_32(1129508897); +emit_32(3246893302); +emit_32(3272384512); +emit_32(1129764880); +emit_32(3247231363); +emit_32(3272384512); +emit_32(1130020864); +emit_32(3247263344); +emit_32(3272384512); +emit_32(1130276848); +emit_32(3246998946); +emit_32(3272384512); +emit_32(1130532897); +emit_32(3246499404); +emit_32(3272384512); +emit_32(1130788880); +emit_32(3246148551); +emit_32(3272384512); +emit_32(1131044864); +emit_32(3245400077); +emit_32(3272384512); +emit_32(1131300848); +emit_32(3245118115); +emit_32(3272384512); +emit_32(1131556897); +emit_32(3243091847); +emit_32(3272384512); +emit_32(1131812880); +emit_32(3239267260); +emit_32(3272384512); +emit_32(1132068864); +emit_32(3232983029); +emit_32(3272384512); +emit_32(1081737216); +emit_32(1110766990); +emit_32(3272640496); +emit_32(1090125824); +emit_32(1110715348); +emit_32(3272640496); +emit_32(1094418484); +emit_32(1110472891); +emit_32(3272640496); +emit_32(1098514432); +emit_32(1110034088); +emit_32(3272640496); +emit_32(1100759066); +emit_32(1109323153); +emit_32(3272640496); +emit_32(1102807040); +emit_32(1108619533); +emit_32(3272640496); +emit_32(1104855066); +emit_32(1107915545); +emit_32(3272640496); +emit_32(1106903040); +emit_32(1107624277); +emit_32(3272640496); +emit_32(1108123661); +emit_32(1106832051); +emit_32(3272640496); +emit_32(1109147648); +emit_32(1105866313); +emit_32(3272640496); +emit_32(1110171661); +emit_32(1104840439); +emit_32(3272640496); +emit_32(1111195648); +emit_32(1104739880); +emit_32(3272640496); +emit_32(1112219661); +emit_32(1104492573); +emit_32(3272640496); +emit_32(1113243648); +emit_32(1104325483); +emit_32(3272640496); +emit_32(1114267661); +emit_32(1105104785); +emit_32(3272640496); +emit_32(1115291648); +emit_32(1105118154); +emit_32(3272640496); +emit_32(1116000263); +emit_32(1105110290); +emit_32(3272640496); +emit_32(1116512256); +emit_32(1106190585); +emit_32(3272640496); +emit_32(1117024263); +emit_32(1106806938); +emit_32(3272640496); +emit_32(1117536256); +emit_32(1107447723); +emit_32(3272640496); +emit_32(1118048263); +emit_32(1107960450); +emit_32(3272640496); +emit_32(1118560256); +emit_32(1108120882); +emit_32(3272640496); +emit_32(1119072263); +emit_32(1108021058); +emit_32(3272640496); +emit_32(1119584256); +emit_32(1107844897); +emit_32(3272640496); +emit_32(1120096263); +emit_32(1107897457); +emit_32(3272640496); +emit_32(1120608322); +emit_32(1108031465); +emit_32(3272640496); +emit_32(1121120289); +emit_32(1108410263); +emit_32(3272640496); +emit_32(1121632256); +emit_32(1108301604); +emit_32(3272640496); +emit_32(1122144223); +emit_32(1108298380); +emit_32(3272640496); +emit_32(1122656322); +emit_32(1108279165); +emit_32(3272640496); +emit_32(1123168289); +emit_32(1108038648); +emit_32(3272640496); +emit_32(1123680256); +emit_32(1107908388); +emit_32(3272640496); +emit_32(1124132848); +emit_32(1107420617); +emit_32(3272640496); +emit_32(1124388897); +emit_32(1106088663); +emit_32(3272640496); +emit_32(1124644880); +emit_32(1104288416); +emit_32(3272640496); +emit_32(1124900864); +emit_32(1102764101); +emit_32(3272640496); +emit_32(1125156848); +emit_32(1100664904); +emit_32(3272640496); +emit_32(1125412897); +emit_32(1097290744); +emit_32(3272640496); +emit_32(1125668880); +emit_32(1093918838); +emit_32(3272640496); +emit_32(1125924864); +emit_32(1092359438); +emit_32(3272640496); +emit_32(1126180848); +emit_32(1090438216); +emit_32(3272640496); +emit_32(1126436897); +emit_32(1085633179); +emit_32(3272640496); +emit_32(1126692880); +emit_32(1082298330); +emit_32(3272640496); +emit_32(1126948864); +emit_32(1071317684); +emit_32(3272640496); +emit_32(1127204848); +emit_32(3211416991); +emit_32(3272640496); +emit_32(1127460897); +emit_32(3224008099); +emit_32(3272640496); +emit_32(1127716880); +emit_32(3232930936); +emit_32(3272640496); +emit_32(1127972864); +emit_32(3237569689); +emit_32(3272640496); +emit_32(1128228848); +emit_32(3240285648); +emit_32(3272640496); +emit_32(1128484897); +emit_32(3243818405); +emit_32(3272640496); +emit_32(1128740880); +emit_32(3246427577); +emit_32(3272640496); +emit_32(1128996864); +emit_32(3247046918); +emit_32(3272640496); +emit_32(1129252848); +emit_32(3247819509); +emit_32(3272640496); +emit_32(1129508897); +emit_32(3247822340); +emit_32(3272640496); +emit_32(1129764880); +emit_32(3248121446); +emit_32(3272640496); +emit_32(1130020864); +emit_32(3248655224); +emit_32(3272640496); +emit_32(1130276848); +emit_32(3248219541); +emit_32(3272640496); +emit_32(1130532897); +emit_32(3247726395); +emit_32(3272640496); +emit_32(1130788880); +emit_32(3247190835); +emit_32(3272640496); +emit_32(1131044864); +emit_32(3246657425); +emit_32(3272640496); +emit_32(1131300848); +emit_32(3245446844); +emit_32(3272640496); +emit_32(1131556897); +emit_32(3243320646); +emit_32(3272640496); +emit_32(1131812880); +emit_32(3240090015); +emit_32(3272640496); +emit_32(1132068864); +emit_32(3233059449); +emit_32(3272640496); +emit_32(1081737216); +emit_32(1110289075); +emit_32(3272896545); +emit_32(1090125824); +emit_32(1110184899); +emit_32(3272896545); +emit_32(1094418484); +emit_32(1110081326); +emit_32(3272896545); +emit_32(1098514432); +emit_32(1109624907); +emit_32(3272896545); +emit_32(1100759066); +emit_32(1109048007); +emit_32(3272896545); +emit_32(1102807040); +emit_32(1108349472); +emit_32(3272896545); +emit_32(1104855066); +emit_32(1107549330); +emit_32(3272896545); +emit_32(1106903040); +emit_32(1106981421); +emit_32(3272896545); +emit_32(1108123661); +emit_32(1105990831); +emit_32(3272896545); +emit_32(1109147648); +emit_32(1104915359); +emit_32(3272896545); +emit_32(1110171661); +emit_32(1103693873); +emit_32(3272896545); +emit_32(1111195648); +emit_32(1103863900); +emit_32(3272896545); +emit_32(1112219661); +emit_32(1103998799); +emit_32(3272896545); +emit_32(1113243648); +emit_32(1104012640); +emit_32(3272896545); +emit_32(1114267661); +emit_32(1104234834); +emit_32(3272896545); +emit_32(1115291648); +emit_32(1104799230); +emit_32(3272896545); +emit_32(1116000263); +emit_32(1104865395); +emit_32(3272896545); +emit_32(1116512256); +emit_32(1105083079); +emit_32(3272896545); +emit_32(1117024263); +emit_32(1105770892); +emit_32(3272896545); +emit_32(1117536256); +emit_32(1106981264); +emit_32(3272896545); +emit_32(1118048263); +emit_32(1107541964); +emit_32(3272896545); +emit_32(1118560256); +emit_32(1107753173); +emit_32(3272896545); +emit_32(1119072263); +emit_32(1107932348); +emit_32(3272896545); +emit_32(1119584256); +emit_32(1107696026); +emit_32(3272896545); +emit_32(1120096263); +emit_32(1107774171); +emit_32(3272896545); +emit_32(1120608322); +emit_32(1107999483); +emit_32(3272896545); +emit_32(1121120289); +emit_32(1108089897); +emit_32(3272896545); +emit_32(1121632256); +emit_32(1107942887); +emit_32(3272896545); +emit_32(1122144223); +emit_32(1108011018); +emit_32(3272896545); +emit_32(1122656322); +emit_32(1107841201); +emit_32(3272896545); +emit_32(1123168289); +emit_32(1107624487); +emit_32(3272896545); +emit_32(1123680256); +emit_32(1107346430); +emit_32(3272896545); +emit_32(1124132848); +emit_32(1106655681); +emit_32(3272896545); +emit_32(1124388897); +emit_32(1105650778); +emit_32(3272896545); +emit_32(1124644880); +emit_32(1103819755); +emit_32(3272896545); +emit_32(1124900864); +emit_32(1101832441); +emit_32(3272896545); +emit_32(1125156848); +emit_32(1099587597); +emit_32(3272896545); +emit_32(1125412897); +emit_32(1095963771); +emit_32(3272896545); +emit_32(1125668880); +emit_32(1092682462); +emit_32(3272896545); +emit_32(1125924864); +emit_32(1090858999); +emit_32(3272896545); +emit_32(1126180848); +emit_32(1087538064); +emit_32(3272896545); +emit_32(1126436897); +emit_32(1082518866); +emit_32(3272896545); +emit_32(1126692880); +emit_32(1074794217); +emit_32(3272896545); +emit_32(1126948864); +emit_32(1055151058); +emit_32(3272896545); +emit_32(1127204848); +emit_32(3219019520); +emit_32(3272896545); +emit_32(1127460897); +emit_32(3227302431); +emit_32(3272896545); +emit_32(1127716880); +emit_32(3235425456); +emit_32(3272896545); +emit_32(1127972864); +emit_32(3239324219); +emit_32(3272896545); +emit_32(1128228848); +emit_32(3242595451); +emit_32(3272896545); +emit_32(1128484897); +emit_32(3244970790); +emit_32(3272896545); +emit_32(1128740880); +emit_32(3246227194); +emit_32(3272896545); +emit_32(1128996864); +emit_32(3247085558); +emit_32(3272896545); +emit_32(1129252848); +emit_32(3248170310); +emit_32(3272896545); +emit_32(1129508897); +emit_32(3248369697); +emit_32(3272896545); +emit_32(1129764880); +emit_32(3248556238); +emit_32(3272896545); +emit_32(1130020864); +emit_32(3248791329); +emit_32(3272896545); +emit_32(1130276848); +emit_32(3248863052); +emit_32(3272896545); +emit_32(1130532897); +emit_32(3248823992); +emit_32(3272896545); +emit_32(1130788880); +emit_32(3248329641); +emit_32(3272896545); +emit_32(1131044864); +emit_32(3247178567); +emit_32(3272896545); +emit_32(1131300848); +emit_32(3244969427); +emit_32(3272896545); +emit_32(1131556897); +emit_32(3242521421); +emit_32(3272896545); +emit_32(1131812880); +emit_32(3240271177); +emit_32(3272896545); +emit_32(1132068864); +emit_32(3235475683); +emit_32(3272896545); +emit_32(1081737216); +emit_32(1110106754); +emit_32(3273152528); +emit_32(1090125824); +emit_32(1109851190); +emit_32(3273152528); +emit_32(1094418484); +emit_32(1109531007); +emit_32(3273152528); +emit_32(1098514432); +emit_32(1109268234); +emit_32(3273152528); +emit_32(1100759066); +emit_32(1108527468); +emit_32(3273152528); +emit_32(1102807040); +emit_32(1107822510); +emit_32(3273152528); +emit_32(1104855066); +emit_32(1106879657); +emit_32(3273152528); +emit_32(1106903040); +emit_32(1105644854); +emit_32(3273152528); +emit_32(1108123661); +emit_32(1104812442); +emit_32(3273152528); +emit_32(1109147648); +emit_32(1103599816); +emit_32(3273152528); +emit_32(1110171661); +emit_32(1102886837); +emit_32(3273152528); +emit_32(1111195648); +emit_32(1102824551); +emit_32(3273152528); +emit_32(1112219661); +emit_32(1103195800); +emit_32(3273152528); +emit_32(1113243648); +emit_32(1103637250); +emit_32(3273152528); +emit_32(1114267661); +emit_32(1103975626); +emit_32(3273152528); +emit_32(1115291648); +emit_32(1103996545); +emit_32(3273152528); +emit_32(1116000263); +emit_32(1104513755); +emit_32(3273152528); +emit_32(1116512256); +emit_32(1104583642); +emit_32(3273152528); +emit_32(1117024263); +emit_32(1105332745); +emit_32(3273152528); +emit_32(1117536256); +emit_32(1106424522); +emit_32(3273152528); +emit_32(1118048263); +emit_32(1107096712); +emit_32(3273152528); +emit_32(1118560256); +emit_32(1107537140); +emit_32(3273152528); +emit_32(1119072263); +emit_32(1107484004); +emit_32(3273152528); +emit_32(1119584256); +emit_32(1107558426); +emit_32(3273152528); +emit_32(1120096263); +emit_32(1107936071); +emit_32(3273152528); +emit_32(1120608322); +emit_32(1108104000); +emit_32(3273152528); +emit_32(1121120289); +emit_32(1107929150); +emit_32(3273152528); +emit_32(1121632256); +emit_32(1107694584); +emit_32(3273152528); +emit_32(1122144223); +emit_32(1107539263); +emit_32(3273152528); +emit_32(1122656322); +emit_32(1107466886); +emit_32(3273152528); +emit_32(1123168289); +emit_32(1107473859); +emit_32(3273152528); +emit_32(1123680256); +emit_32(1106712723); +emit_32(3273152528); +emit_32(1124132848); +emit_32(1105424338); +emit_32(3273152528); +emit_32(1124388897); +emit_32(1104440931); +emit_32(3273152528); +emit_32(1124644880); +emit_32(1103144052); +emit_32(3273152528); +emit_32(1124900864); +emit_32(1101107560); +emit_32(3273152528); +emit_32(1125156848); +emit_32(1099132725); +emit_32(3273152528); +emit_32(1125412897); +emit_32(1095577685); +emit_32(3273152528); +emit_32(1125668880); +emit_32(1092369556); +emit_32(3273152528); +emit_32(1125924864); +emit_32(1088719809); +emit_32(3273152528); +emit_32(1126180848); +emit_32(1083696669); +emit_32(3273152528); +emit_32(1126436897); +emit_32(1075000451); +emit_32(3273152528); +emit_32(1126692880); +emit_32(1069530827); +emit_32(3273152528); +emit_32(1126948864); +emit_32(3206582150); +emit_32(3273152528); +emit_32(1127204848); +emit_32(3221141921); +emit_32(3273152528); +emit_32(1127460897); +emit_32(3231308055); +emit_32(3273152528); +emit_32(1127716880); +emit_32(3238013027); +emit_32(3273152528); +emit_32(1127972864); +emit_32(3241648692); +emit_32(3273152528); +emit_32(1128228848); +emit_32(3243113762); +emit_32(3273152528); +emit_32(1128484897); +emit_32(3244161289); +emit_32(3273152528); +emit_32(1128740880); +emit_32(3245421258); +emit_32(3273152528); +emit_32(1128996864); +emit_32(3246875424); +emit_32(3273152528); +emit_32(1129252848); +emit_32(3247610685); +emit_32(3273152528); +emit_32(1129508897); +emit_32(3248309299); +emit_32(3273152528); +emit_32(1129764880); +emit_32(3248981069); +emit_32(3273152528); +emit_32(1130020864); +emit_32(3249435889); +emit_32(3273152528); +emit_32(1130276848); +emit_32(3249270057); +emit_32(3273152528); +emit_32(1130532897); +emit_32(3249259047); +emit_32(3273152528); +emit_32(1130788880); +emit_32(3248161974); +emit_32(3273152528); +emit_32(1131044864); +emit_32(3246939072); +emit_32(3273152528); +emit_32(1131300848); +emit_32(3244307041); +emit_32(3273152528); +emit_32(1131556897); +emit_32(3241397138); +emit_32(3273152528); +emit_32(1131812880); +emit_32(3239169606); +emit_32(3273152528); +emit_32(1132068864); +emit_32(3235418829); +emit_32(3273152528); +emit_32(1081737216); +emit_32(1109848700); +emit_32(3273408512); +emit_32(1090125824); +emit_32(1109616073); +emit_32(3273408512); +emit_32(1094418484); +emit_32(1109191190); +emit_32(3273408512); +emit_32(1098514432); +emit_32(1108732386); +emit_32(3273408512); +emit_32(1100759066); +emit_32(1108353876); +emit_32(3273408512); +emit_32(1102807040); +emit_32(1107813099); +emit_32(3273408512); +emit_32(1104855066); +emit_32(1106931404); +emit_32(3273408512); +emit_32(1106903040); +emit_32(1105711700); +emit_32(3273408512); +emit_32(1108123661); +emit_32(1104199496); +emit_32(3273408512); +emit_32(1109147648); +emit_32(1102966738); +emit_32(3273408512); +emit_32(1110171661); +emit_32(1102284115); +emit_32(3273408512); +emit_32(1111195648); +emit_32(1102118283); +emit_32(3273408512); +emit_32(1112219661); +emit_32(1102403024); +emit_32(3273408512); +emit_32(1113243648); +emit_32(1102981471); +emit_32(3273408512); +emit_32(1114267661); +emit_32(1103432253); +emit_32(3273408512); +emit_32(1115291648); +emit_32(1103738700); +emit_32(3273408512); +emit_32(1116000263); +emit_32(1104470396); +emit_32(3273408512); +emit_32(1116512256); +emit_32(1104866915); +emit_32(3273408512); +emit_32(1117024263); +emit_32(1105262543); +emit_32(3273408512); +emit_32(1117536256); +emit_32(1106001527); +emit_32(3273408512); +emit_32(1118048263); +emit_32(1106476637); +emit_32(3273408512); +emit_32(1118560256); +emit_32(1106576409); +emit_32(3273408512); +emit_32(1119072263); +emit_32(1106461537); +emit_32(3273408512); +emit_32(1119584256); +emit_32(1107353561); +emit_32(3273408512); +emit_32(1120096263); +emit_32(1107634841); +emit_32(3273408512); +emit_32(1120608322); +emit_32(1107769845); +emit_32(3273408512); +emit_32(1121120289); +emit_32(1107434380); +emit_32(3273408512); +emit_32(1121632256); +emit_32(1107315943); +emit_32(3273408512); +emit_32(1122144223); +emit_32(1106787592); +emit_32(3273408512); +emit_32(1122656322); +emit_32(1106765100); +emit_32(3273408512); +emit_32(1123168289); +emit_32(1106762845); +emit_32(3273408512); +emit_32(1123680256); +emit_32(1105758834); +emit_32(3273408512); +emit_32(1124132848); +emit_32(1104621758); +emit_32(3273408512); +emit_32(1124388897); +emit_32(1103142375); +emit_32(3273408512); +emit_32(1124644880); +emit_32(1101953080); +emit_32(3273408512); +emit_32(1124900864); +emit_32(1100385039); +emit_32(3273408512); +emit_32(1125156848); +emit_32(1097070857); +emit_32(3273408512); +emit_32(1125412897); +emit_32(1093584657); +emit_32(3273408512); +emit_32(1125668880); +emit_32(1091629985); +emit_32(3273408512); +emit_32(1125924864); +emit_32(1088130111); +emit_32(3273408512); +emit_32(1126180848); +emit_32(1080062598); +emit_32(3273408512); +emit_32(1126436897); +emit_32(1066603370); +emit_32(3273408512); +emit_32(1126692880); +emit_32(3206794499); +emit_32(3273408512); +emit_32(1126948864); +emit_32(3224322043); +emit_32(3273408512); +emit_32(1127204848); +emit_32(3229663824); +emit_32(3273408512); +emit_32(1127460897); +emit_32(3234125914); +emit_32(3273408512); +emit_32(1127716880); +emit_32(3238854457); +emit_32(3273408512); +emit_32(1127972864); +emit_32(3240458138); +emit_32(3273408512); +emit_32(1128228848); +emit_32(3241347121); +emit_32(3273408512); +emit_32(1128484897); +emit_32(3243399080); +emit_32(3273408512); +emit_32(1128740880); +emit_32(3244860480); +emit_32(3273408512); +emit_32(1128996864); +emit_32(3246331213); +emit_32(3273408512); +emit_32(1129252848); +emit_32(3247173534); +emit_32(3273408512); +emit_32(1129508897); +emit_32(3247995565); +emit_32(3273408512); +emit_32(1129764880); +emit_32(3249070460); +emit_32(3273408512); +emit_32(1130020864); +emit_32(3249215740); +emit_32(3273408512); +emit_32(1130276848); +emit_32(3249090383); +emit_32(3273408512); +emit_32(1130532897); +emit_32(3248637136); +emit_32(3273408512); +emit_32(1130788880); +emit_32(3247527900); +emit_32(3273408512); +emit_32(1131044864); +emit_32(3246097695); +emit_32(3273408512); +emit_32(1131300848); +emit_32(3243725711); +emit_32(3273408512); +emit_32(1131556897); +emit_32(3240252198); +emit_32(3273408512); +emit_32(1131812880); +emit_32(3238101369); +emit_32(3273408512); +emit_32(1132068864); +emit_32(3232685716); +emit_32(3273408512); +emit_32(1081737216); +emit_32(1109518057); +emit_32(3273664496); +emit_32(1090125824); +emit_32(1109209645); +emit_32(3273664496); +emit_32(1094418484); +emit_32(1108711100); +emit_32(3273664496); +emit_32(1098514432); +emit_32(1108394482); +emit_32(3273664496); +emit_32(1100759066); +emit_32(1107902805); +emit_32(3273664496); +emit_32(1102807040); +emit_32(1107530351); +emit_32(3273664496); +emit_32(1104855066); +emit_32(1106484396); +emit_32(3273664496); +emit_32(1106903040); +emit_32(1105503610); +emit_32(3273664496); +emit_32(1108123661); +emit_32(1104089658); +emit_32(3273664496); +emit_32(1109147648); +emit_32(1103023571); +emit_32(3273664496); +emit_32(1110171661); +emit_32(1102213651); +emit_32(3273664496); +emit_32(1111195648); +emit_32(1101760718); +emit_32(3273664496); +emit_32(1112219661); +emit_32(1102038119); +emit_32(3273664496); +emit_32(1113243648); +emit_32(1102582016); +emit_32(3273664496); +emit_32(1114267661); +emit_32(1103573287); +emit_32(3273664496); +emit_32(1115291648); +emit_32(1103737913); +emit_32(3273664496); +emit_32(1116000263); +emit_32(1104225396); +emit_32(3273664496); +emit_32(1116512256); +emit_32(1104815063); +emit_32(3273664496); +emit_32(1117024263); +emit_32(1105243301); +emit_32(3273664496); +emit_32(1117536256); +emit_32(1105695814); +emit_32(3273664496); +emit_32(1118048263); +emit_32(1105989625); +emit_32(3273664496); +emit_32(1118560256); +emit_32(1106114930); +emit_32(3273664496); +emit_32(1119072263); +emit_32(1106699669); +emit_32(3273664496); +emit_32(1119584256); +emit_32(1107034164); +emit_32(3273664496); +emit_32(1120096263); +emit_32(1107327294); +emit_32(3273664496); +emit_32(1120608322); +emit_32(1106913106); +emit_32(3273664496); +emit_32(1121120289); +emit_32(1106509038); +emit_32(3273664496); +emit_32(1121632256); +emit_32(1105952401); +emit_32(3273664496); +emit_32(1122144223); +emit_32(1106608862); +emit_32(3273664496); +emit_32(1122656322); +emit_32(1106050443); +emit_32(3273664496); +emit_32(1123168289); +emit_32(1105539210); +emit_32(3273664496); +emit_32(1123680256); +emit_32(1104316937); +emit_32(3273664496); +emit_32(1124132848); +emit_32(1103423078); +emit_32(3273664496); +emit_32(1124388897); +emit_32(1102157867); +emit_32(3273664496); +emit_32(1124644880); +emit_32(1100686767); +emit_32(3273664496); +emit_32(1124900864); +emit_32(1099193752); +emit_32(3273664496); +emit_32(1125156848); +emit_32(1096183867); +emit_32(3273664496); +emit_32(1125412897); +emit_32(1092300434); +emit_32(3273664496); +emit_32(1125668880); +emit_32(1090658553); +emit_32(3273664496); +emit_32(1125924864); +emit_32(1087350684); +emit_32(3273664496); +emit_32(1126180848); +emit_32(1076097052); +emit_32(3273664496); +emit_32(1126436897); +emit_32(1033250201); +emit_32(3273664496); +emit_32(1126692880); +emit_32(3213794340); +emit_32(3273664496); +emit_32(1126948864); +emit_32(3225617244); +emit_32(3273664496); +emit_32(1127204848); +emit_32(3234199587); +emit_32(3273664496); +emit_32(1127460897); +emit_32(3236783823); +emit_32(3273664496); +emit_32(1127716880); +emit_32(3239231409); +emit_32(3273664496); +emit_32(1127972864); +emit_32(3239869436); +emit_32(3273664496); +emit_32(1128228848); +emit_32(3240676137); +emit_32(3273664496); +emit_32(1128484897); +emit_32(3242958153); +emit_32(3273664496); +emit_32(1128740880); +emit_32(3244196417); +emit_32(3273664496); +emit_32(1128996864); +emit_32(3245843100); +emit_32(3273664496); +emit_32(1129252848); +emit_32(3247245204); +emit_32(3273664496); +emit_32(1129508897); +emit_32(3248095337); +emit_32(3273664496); +emit_32(1129764880); +emit_32(3248269505); +emit_32(3273664496); +emit_32(1130020864); +emit_32(3248127423); +emit_32(3273664496); +emit_32(1130276848); +emit_32(3248240250); +emit_32(3273664496); +emit_32(1130532897); +emit_32(3247358398); +emit_32(3273664496); +emit_32(1130788880); +emit_32(3246549998); +emit_32(3273664496); +emit_32(1131044864); +emit_32(3244820005); +emit_32(3273664496); +emit_32(1131300848); +emit_32(3242185563); +emit_32(3273664496); +emit_32(1131556897); +emit_32(3239470873); +emit_32(3273664496); +emit_32(1131812880); +emit_32(3235146241); +emit_32(3273664496); +emit_32(1132068864); +emit_32(3228421765); +emit_32(3273664496); +emit_32(1081737216); +emit_32(1109095429); +emit_32(3273920545); +emit_32(1090125824); +emit_32(1108721848); +emit_32(3273920545); +emit_32(1094418484); +emit_32(1108271799); +emit_32(3273920545); +emit_32(1098514432); +emit_32(1107836640); +emit_32(3273920545); +emit_32(1100759066); +emit_32(1107583487); +emit_32(3273920545); +emit_32(1102807040); +emit_32(1107305929); +emit_32(3273920545); +emit_32(1104855066); +emit_32(1106095427); +emit_32(3273920545); +emit_32(1106903040); +emit_32(1104843427); +emit_32(3273920545); +emit_32(1108123661); +emit_32(1103754481); +emit_32(3273920545); +emit_32(1109147648); +emit_32(1102895959); +emit_32(3273920545); +emit_32(1110171661); +emit_32(1102181460); +emit_32(3273920545); +emit_32(1111195648); +emit_32(1101676256); +emit_32(3273920545); +emit_32(1112219661); +emit_32(1101547858); +emit_32(3273920545); +emit_32(1113243648); +emit_32(1102482086); +emit_32(3273920545); +emit_32(1114267661); +emit_32(1103334421); +emit_32(3273920545); +emit_32(1115291648); +emit_32(1103698330); +emit_32(3273920545); +emit_32(1116000263); +emit_32(1103797472); +emit_32(3273920545); +emit_32(1116512256); +emit_32(1104470449); +emit_32(3273920545); +emit_32(1117024263); +emit_32(1105019221); +emit_32(3273920545); +emit_32(1117536256); +emit_32(1105107249); +emit_32(3273920545); +emit_32(1118048263); +emit_32(1105221177); +emit_32(3273920545); +emit_32(1118560256); +emit_32(1105813517); +emit_32(3273920545); +emit_32(1119072263); +emit_32(1106222986); +emit_32(3273920545); +emit_32(1119584256); +emit_32(1106744181); +emit_32(3273920545); +emit_32(1120096263); +emit_32(1106572162); +emit_32(3273920545); +emit_32(1120608322); +emit_32(1106138261); +emit_32(3273920545); +emit_32(1121120289); +emit_32(1105034373); +emit_32(3273920545); +emit_32(1121632256); +emit_32(1104844371); +emit_32(3273920545); +emit_32(1122144223); +emit_32(1105102006); +emit_32(3273920545); +emit_32(1122656322); +emit_32(1104862039); +emit_32(3273920545); +emit_32(1123168289); +emit_32(1104232946); +emit_32(3273920545); +emit_32(1123680256); +emit_32(1103026297); +emit_32(3273920545); +emit_32(1124132848); +emit_32(1101863741); +emit_32(3273920545); +emit_32(1124388897); +emit_32(1100516216); +emit_32(3273920545); +emit_32(1124644880); +emit_32(1099293105); +emit_32(3273920545); +emit_32(1124900864); +emit_32(1097230346); +emit_32(3273920545); +emit_32(1125156848); +emit_32(1093750751); +emit_32(3273920545); +emit_32(1125412897); +emit_32(1090925405); +emit_32(3273920545); +emit_32(1125668880); +emit_32(1088433213); +emit_32(3273920545); +emit_32(1125924864); +emit_32(1084125285); +emit_32(3273920545); +emit_32(1126180848); +emit_32(1075725646); +emit_32(3273920545); +emit_32(1126436897); +emit_32(1061623490); +emit_32(3273920545); +emit_32(1126692880); +emit_32(3216532465); +emit_32(3273920545); +emit_32(1126948864); +emit_32(3227819673); +emit_32(3273920545); +emit_32(1127204848); +emit_32(3234520577); +emit_32(3273920545); +emit_32(1127460897); +emit_32(3236952791); +emit_32(3273920545); +emit_32(1127716880); +emit_32(3239234608); +emit_32(3273920545); +emit_32(1127972864); +emit_32(3240023346); +emit_32(3273920545); +emit_32(1128228848); +emit_32(3241225696); +emit_32(3273920545); +emit_32(1128484897); +emit_32(3243063535); +emit_32(3273920545); +emit_32(1128740880); +emit_32(3245269949); +emit_32(3273920545); +emit_32(1128996864); +emit_32(3246344425); +emit_32(3273920545); +emit_32(1129252848); +emit_32(3246962665); +emit_32(3273920545); +emit_32(1129508897); +emit_32(3247716853); +emit_32(3273920545); +emit_32(1129764880); +emit_32(3247725609); +emit_32(3273920545); +emit_32(1130020864); +emit_32(3247729803); +emit_32(3273920545); +emit_32(1130276848); +emit_32(3247215739); +emit_32(3273920545); +emit_32(1130532897); +emit_32(3246018422); +emit_32(3273920545); +emit_32(1130788880); +emit_32(3244886589); +emit_32(3273920545); +emit_32(1131044864); +emit_32(3242781888); +emit_32(3273920545); +emit_32(1131300848); +emit_32(3240781205); +emit_32(3273920545); +emit_32(1131556897); +emit_32(3238299267); +emit_32(3273920545); +emit_32(1131812880); +emit_32(3233550057); +emit_32(3273920545); +emit_32(1132068864); +emit_32(3223464811); +emit_32(3273920545); +emit_32(1081737216); +emit_32(1108664621); +emit_32(3274176528); +emit_32(1090125824); +emit_32(1108522618); +emit_32(3274176528); +emit_32(1094418484); +emit_32(1108407563); +emit_32(3274176528); +emit_32(1098514432); +emit_32(1107682787); +emit_32(3274176528); +emit_32(1100759066); +emit_32(1107320583); +emit_32(3274176528); +emit_32(1102807040); +emit_32(1106544532); +emit_32(3274176528); +emit_32(1104855066); +emit_32(1105511999); +emit_32(3274176528); +emit_32(1106903040); +emit_32(1104375867); +emit_32(3274176528); +emit_32(1108123661); +emit_32(1103074112); +emit_32(3274176528); +emit_32(1109147648); +emit_32(1102337278); +emit_32(3274176528); +emit_32(1110171661); +emit_32(1101962517); +emit_32(3274176528); +emit_32(1111195648); +emit_32(1101639031); +emit_32(3274176528); +emit_32(1112219661); +emit_32(1101573181); +emit_32(3274176528); +emit_32(1113243648); +emit_32(1101942070); +emit_32(3274176528); +emit_32(1114267661); +emit_32(1102543638); +emit_32(3274176528); +emit_32(1115291648); +emit_32(1103135559); +emit_32(3274176528); +emit_32(1116000263); +emit_32(1103322153); +emit_32(3274176528); +emit_32(1116512256); +emit_32(1103539995); +emit_32(3274176528); +emit_32(1117024263); +emit_32(1103767850); +emit_32(3274176528); +emit_32(1117536256); +emit_32(1104163740); +emit_32(3274176528); +emit_32(1118048263); +emit_32(1104602045); +emit_32(3274176528); +emit_32(1118560256); +emit_32(1104897953); +emit_32(3274176528); +emit_32(1119072263); +emit_32(1105720246); +emit_32(3274176528); +emit_32(1119584256); +emit_32(1105815981); +emit_32(3274176528); +emit_32(1120096263); +emit_32(1105144788); +emit_32(3274176528); +emit_32(1120608322); +emit_32(1104485233); +emit_32(3274176528); +emit_32(1121120289); +emit_32(1103618061); +emit_32(3274176528); +emit_32(1121632256); +emit_32(1103661315); +emit_32(3274176528); +emit_32(1122144223); +emit_32(1103401845); +emit_32(3274176528); +emit_32(1122656322); +emit_32(1102987500); +emit_32(3274176528); +emit_32(1123168289); +emit_32(1102162900); +emit_32(3274176528); +emit_32(1123680256); +emit_32(1100880701); +emit_32(3274176528); +emit_32(1124132848); +emit_32(1099831339); +emit_32(3274176528); +emit_32(1124388897); +emit_32(1098628622); +emit_32(3274176528); +emit_32(1124644880); +emit_32(1096283587); +emit_32(3274176528); +emit_32(1124900864); +emit_32(1094436939); +emit_32(3274176528); +emit_32(1125156848); +emit_32(1092462586); +emit_32(3274176528); +emit_32(1125412897); +emit_32(1090574426); +emit_32(3274176528); +emit_32(1125668880); +emit_32(1088368683); +emit_32(3274176528); +emit_32(1125924864); +emit_32(1084468987); +emit_32(3274176528); +emit_32(1126180848); +emit_32(1078479458); +emit_32(3274176528); +emit_32(1126436897); +emit_32(1070097393); +emit_32(3274176528); +emit_32(1126692880); +emit_32(3219330905); +emit_32(3274176528); +emit_32(1126948864); +emit_32(3229956377); +emit_32(3274176528); +emit_32(1127204848); +emit_32(3233498299); +emit_32(3274176528); +emit_32(1127460897); +emit_32(3237958480); +emit_32(3274176528); +emit_32(1127716880); +emit_32(3239973518); +emit_32(3274176528); +emit_32(1127972864); +emit_32(3240389457); +emit_32(3274176528); +emit_32(1128228848); +emit_32(3241706154); +emit_32(3274176528); +emit_32(1128484897); +emit_32(3243624314); +emit_32(3274176528); +emit_32(1128740880); +emit_32(3245731637); +emit_32(3274176528); +emit_32(1128996864); +emit_32(3246688777); +emit_32(3274176528); +emit_32(1129252848); +emit_32(3247277500); +emit_32(3274176528); +emit_32(1129508897); +emit_32(3247268744); +emit_32(3274176528); +emit_32(1129764880); +emit_32(3246821579); +emit_32(3274176528); +emit_32(1130020864); +emit_32(3246928901); +emit_32(3274176528); +emit_32(1130276848); +emit_32(3246584024); +emit_32(3274176528); +emit_32(1130532897); +emit_32(3244589423); +emit_32(3274176528); +emit_32(1130788880); +emit_32(3243611311); +emit_32(3274176528); +emit_32(1131044864); +emit_32(3242211253); +emit_32(3274176528); +emit_32(1131300848); +emit_32(3239996199); +emit_32(3274176528); +emit_32(1131556897); +emit_32(3237841102); +emit_32(3274176528); +emit_32(1131812880); +emit_32(3232583521); +emit_32(3274176528); +emit_32(1132068864); +emit_32(3220160035); +emit_32(3274176528); +emit_32(1081737216); +emit_32(1108184872); +emit_32(3274432512); +emit_32(1090125824); +emit_32(1108148932); +emit_32(3274432512); +emit_32(1094418484); +emit_32(1107903853); +emit_32(3274432512); +emit_32(1098514432); +emit_32(1107577694); +emit_32(3274432512); +emit_32(1100759066); +emit_32(1106982365); +emit_32(3274432512); +emit_32(1102807040); +emit_32(1105680086); +emit_32(3274432512); +emit_32(1104855066); +emit_32(1104468771); +emit_32(3274432512); +emit_32(1106903040); +emit_32(1103509114); +emit_32(3274432512); +emit_32(1108123661); +emit_32(1102687764); +emit_32(3274432512); +emit_32(1109147648); +emit_32(1102002520); +emit_32(3274432512); +emit_32(1110171661); +emit_32(1101411123); +emit_32(3274432512); +emit_32(1111195648); +emit_32(1101064569); +emit_32(3274432512); +emit_32(1112219661); +emit_32(1100846150); +emit_32(3274432512); +emit_32(1113243648); +emit_32(1101357436); +emit_32(3274432512); +emit_32(1114267661); +emit_32(1102179729); +emit_32(3274432512); +emit_32(1115291648); +emit_32(1102092698); +emit_32(3274432512); +emit_32(1116000263); +emit_32(1102408371); +emit_32(3274432512); +emit_32(1116512256); +emit_32(1102286999); +emit_32(3274432512); +emit_32(1117024263); +emit_32(1102506518); +emit_32(3274432512); +emit_32(1117536256); +emit_32(1103483005); +emit_32(3274432512); +emit_32(1118048263); +emit_32(1103994238); +emit_32(3274432512); +emit_32(1118560256); +emit_32(1104213233); +emit_32(3274432512); +emit_32(1119072263); +emit_32(1103948992); +emit_32(3274432512); +emit_32(1119584256); +emit_32(1103515143); +emit_32(3274432512); +emit_32(1120096263); +emit_32(1103105832); +emit_32(3274432512); +emit_32(1120608322); +emit_32(1102826124); +emit_32(3274432512); +emit_32(1121120289); +emit_32(1102767456); +emit_32(3274432512); +emit_32(1121632256); +emit_32(1102189901); +emit_32(3274432512); +emit_32(1122144223); +emit_32(1101674421); +emit_32(3274432512); +emit_32(1122656322); +emit_32(1100890243); +emit_32(3274432512); +emit_32(1123168289); +emit_32(1099939761); +emit_32(3274432512); +emit_32(1123680256); +emit_32(1099075997); +emit_32(3274432512); +emit_32(1124132848); +emit_32(1097086376); +emit_32(3274432512); +emit_32(1124388897); +emit_32(1095228614); +emit_32(3274432512); +emit_32(1124644880); +emit_32(1093029436); +emit_32(3274432512); +emit_32(1124900864); +emit_32(1091479672); +emit_32(3274432512); +emit_32(1125156848); +emit_32(1091750163); +emit_32(3274432512); +emit_32(1125412897); +emit_32(1089138149); +emit_32(3274432512); +emit_32(1125668880); +emit_32(1086598540); +emit_32(3274432512); +emit_32(1125924864); +emit_32(1083352484); +emit_32(3274432512); +emit_32(1126180848); +emit_32(1076974919); +emit_32(3274432512); +emit_32(1126436897); +emit_32(1066291146); +emit_32(3274432512); +emit_32(1126692880); +emit_32(3221226898); +emit_32(3274432512); +emit_32(1126948864); +emit_32(3228126151); +emit_32(3274432512); +emit_32(1127204848); +emit_32(3231975515); +emit_32(3274432512); +emit_32(1127460897); +emit_32(3238351340); +emit_32(3274432512); +emit_32(1127716880); +emit_32(3240184460); +emit_32(3274432512); +emit_32(1127972864); +emit_32(3241040832); +emit_32(3274432512); +emit_32(1128228848); +emit_32(3242157461); +emit_32(3274432512); +emit_32(1128484897); +emit_32(3244822731); +emit_32(3274432512); +emit_32(1128740880); +emit_32(3246247536); +emit_32(3274432512); +emit_32(1128996864); +emit_32(3247038372); +emit_32(3274432512); +emit_32(1129252848); +emit_32(3247585939); +emit_32(3274432512); +emit_32(1129508897); +emit_32(3246884389); +emit_32(3274432512); +emit_32(1129764880); +emit_32(3246474763); +emit_32(3274432512); +emit_32(1130020864); +emit_32(3246383746); +emit_32(3274432512); +emit_32(1130276848); +emit_32(3245256632); +emit_32(3274432512); +emit_32(1130532897); +emit_32(3243907010); +emit_32(3274432512); +emit_32(1130788880); +emit_32(3243058921); +emit_32(3274432512); +emit_32(1131044864); +emit_32(3241166032); +emit_32(3274432512); +emit_32(1131300848); +emit_32(3238570922); +emit_32(3274432512); +emit_32(1131556897); +emit_32(3234153659); +emit_32(3274432512); +emit_32(1131812880); +emit_32(3230360226); +emit_32(3274432512); +emit_32(1132068864); +emit_32(3219833634); +emit_32(3274432512); +emit_32(1081737216); +emit_32(1108036289); +emit_32(3274688496); +emit_32(1090125824); +emit_32(1107810609); +emit_32(3274688496); +emit_32(1094418484); +emit_32(1107747825); +emit_32(3274688496); +emit_32(1098514432); +emit_32(1107286871); +emit_32(3274688496); +emit_32(1100759066); +emit_32(1106086881); +emit_32(3274688496); +emit_32(1102807040); +emit_32(1104804315); +emit_32(3274688496); +emit_32(1104855066); +emit_32(1103699326); +emit_32(3274688496); +emit_32(1106903040); +emit_32(1102741504); +emit_32(3274688496); +emit_32(1108123661); +emit_32(1101680083); +emit_32(3274688496); +emit_32(1109147648); +emit_32(1101656595); +emit_32(3274688496); +emit_32(1110171661); +emit_32(1100849663); +emit_32(3274688496); +emit_32(1111195648); +emit_32(1100640053); +emit_32(3274688496); +emit_32(1112219661); +emit_32(1100253443); +emit_32(3274688496); +emit_32(1113243648); +emit_32(1100764047); +emit_32(3274688496); +emit_32(1114267661); +emit_32(1101163554); +emit_32(3274688496); +emit_32(1115291648); +emit_32(1101305217); +emit_32(3274688496); +emit_32(1116000263); +emit_32(1101417624); +emit_32(3274688496); +emit_32(1116512256); +emit_32(1101765385); +emit_32(3274688496); +emit_32(1117024263); +emit_32(1102533938); +emit_32(3274688496); +emit_32(1117536256); +emit_32(1102938689); +emit_32(3274688496); +emit_32(1118048263); +emit_32(1103318955); +emit_32(3274688496); +emit_32(1118560256); +emit_32(1103683754); +emit_32(3274688496); +emit_32(1119072263); +emit_32(1103175090); +emit_32(3274688496); +emit_32(1119584256); +emit_32(1102854593); +emit_32(3274688496); +emit_32(1120096263); +emit_32(1102466567); +emit_32(3274688496); +emit_32(1120608322); +emit_32(1101638507); +emit_32(3274688496); +emit_32(1121120289); +emit_32(1101343542); +emit_32(3274688496); +emit_32(1121632256); +emit_32(1100858629); +emit_32(3274688496); +emit_32(1122144223); +emit_32(1099916326); +emit_32(3274688496); +emit_32(1122656322); +emit_32(1099386952); +emit_32(3274688496); +emit_32(1123168289); +emit_32(1098990538); +emit_32(3274688496); +emit_32(1123680256); +emit_32(1097981860); +emit_32(3274688496); +emit_32(1124132848); +emit_32(1095898759); +emit_32(3274688496); +emit_32(1124388897); +emit_32(1092934435); +emit_32(3274688496); +emit_32(1124644880); +emit_32(1090423368); +emit_32(3274688496); +emit_32(1124900864); +emit_32(1089465599); +emit_32(3274688496); +emit_32(1125156848); +emit_32(1090025916); +emit_32(3274688496); +emit_32(1125412897); +emit_32(1088093013); +emit_32(3274688496); +emit_32(1125668880); +emit_32(1086367518); +emit_32(3274688496); +emit_32(1125924864); +emit_32(1083889418); +emit_32(3274688496); +emit_32(1126180848); +emit_32(1076254464); +emit_32(3274688496); +emit_32(1126436897); +emit_32(1068370850); +emit_32(3274688496); +emit_32(1126692880); +emit_32(3216221248); +emit_32(3274688496); +emit_32(1126948864); +emit_32(3228349497); +emit_32(3274688496); +emit_32(1127204848); +emit_32(3232983910); +emit_32(3274688496); +emit_32(1127460897); +emit_32(3238169558); +emit_32(3274688496); +emit_32(1127716880); +emit_32(3239092054); +emit_32(3274688496); +emit_32(1127972864); +emit_32(3241438976); +emit_32(3274688496); +emit_32(1128228848); +emit_32(3243388489); +emit_32(3274688496); +emit_32(1128484897); +emit_32(3245180191); +emit_32(3274688496); +emit_32(1128740880); +emit_32(3246270710); +emit_32(3274688496); +emit_32(1128996864); +emit_32(3247252229); +emit_32(3274688496); +emit_32(1129252848); +emit_32(3247543262); +emit_32(3274688496); +emit_32(1129508897); +emit_32(3246603737); +emit_32(3274688496); +emit_32(1129764880); +emit_32(3246628379); +emit_32(3274688496); +emit_32(1130020864); +emit_32(3246208949); +emit_32(3274688496); +emit_32(1130276848); +emit_32(3243960277); +emit_32(3274688496); +emit_32(1130532897); +emit_32(3243077167); +emit_32(3274688496); +emit_32(1130788880); +emit_32(3241817407); +emit_32(3274688496); +emit_32(1131044864); +emit_32(3238920664); +emit_32(3274688496); +emit_32(1131300848); +emit_32(3235529538); +emit_32(3274688496); +emit_32(1131556897); +emit_32(3228900545); +emit_32(3274688496); +emit_32(1131812880); +emit_32(3222674310); +emit_32(3274688496); +emit_32(1132068864); +emit_32(3208271280); +emit_32(3274688496); +emit_32(1081737216); +emit_32(1107544270); +emit_32(3274944545); +emit_32(1090125824); +emit_32(1107321186); +emit_32(3274944545); +emit_32(1094418484); +emit_32(1106832838); +emit_32(3274944545); +emit_32(1098514432); +emit_32(1105933107); +emit_32(3274944545); +emit_32(1100759066); +emit_32(1104947236); +emit_32(3274944545); +emit_32(1102807040); +emit_32(1104326217); +emit_32(3274944545); +emit_32(1104855066); +emit_32(1103138967); +emit_32(3274944545); +emit_32(1106903040); +emit_32(1102036441); +emit_32(3274944545); +emit_32(1108123661); +emit_32(1101087742); +emit_32(3274944545); +emit_32(1109147648); +emit_32(1100669465); +emit_32(3274944545); +emit_32(1110171661); +emit_32(1100266183); +emit_32(3274944545); +emit_32(1111195648); +emit_32(1100000526); +emit_32(3274944545); +emit_32(1112219661); +emit_32(1099972529); +emit_32(3274944545); +emit_32(1113243648); +emit_32(1099715681); +emit_32(3274944545); +emit_32(1114267661); +emit_32(1099811521); +emit_32(3274944545); +emit_32(1115291648); +emit_32(1100048079); +emit_32(3274944545); +emit_32(1116000263); +emit_32(1100398461); +emit_32(3274944545); +emit_32(1116512256); +emit_32(1101470735); +emit_32(3274944545); +emit_32(1117024263); +emit_32(1102010332); +emit_32(3274944545); +emit_32(1117536256); +emit_32(1102212969); +emit_32(3274944545); +emit_32(1118048263); +emit_32(1102131547); +emit_32(3274944545); +emit_32(1118560256); +emit_32(1102714503); +emit_32(3274944545); +emit_32(1119072263); +emit_32(1102278033); +emit_32(3274944545); +emit_32(1119584256); +emit_32(1101809792); +emit_32(3274944545); +emit_32(1120096263); +emit_32(1100816004); +emit_32(3274944545); +emit_32(1120608322); +emit_32(1100025011); +emit_32(3274944545); +emit_32(1121120289); +emit_32(1099466277); +emit_32(3274944545); +emit_32(1121632256); +emit_32(1098984771); +emit_32(3274944545); +emit_32(1122144223); +emit_32(1098724776); +emit_32(3274944545); +emit_32(1122656322); +emit_32(1097818073); +emit_32(3274944545); +emit_32(1123168289); +emit_32(1098331770); +emit_32(3274944545); +emit_32(1123680256); +emit_32(1097767007); +emit_32(3274944545); +emit_32(1124132848); +emit_32(1095061891); +emit_32(3274944545); +emit_32(1124388897); +emit_32(1092565693); +emit_32(3274944545); +emit_32(1124644880); +emit_32(1089087839); +emit_32(3274944545); +emit_32(1124900864); +emit_32(1088235430); +emit_32(3274944545); +emit_32(1125156848); +emit_32(1089040317); +emit_32(3274944545); +emit_32(1125412897); +emit_32(1087875957); +emit_32(3274944545); +emit_32(1125668880); +emit_32(1086441128); +emit_32(3274944545); +emit_32(1125924864); +emit_32(1085113966); +emit_32(3274944545); +emit_32(1126180848); +emit_32(1081486648); +emit_32(3274944545); +emit_32(1126436897); +emit_32(1075610470); +emit_32(3274944545); +emit_32(1126692880); +emit_32(3191896348); +emit_32(3274944545); +emit_32(1126948864); +emit_32(3225446032); +emit_32(3274944545); +emit_32(1127204848); +emit_32(3232519202); +emit_32(3274944545); +emit_32(1127460897); +emit_32(3234831920); +emit_32(3274944545); +emit_32(1127716880); +emit_32(3239305806); +emit_32(3274944545); +emit_32(1127972864); +emit_32(3241685497); +emit_32(3274944545); +emit_32(1128228848); +emit_32(3242903208); +emit_32(3274944545); +emit_32(1128484897); +emit_32(3244487397); +emit_32(3274944545); +emit_32(1128740880); +emit_32(3245844673); +emit_32(3274944545); +emit_32(1128996864); +emit_32(3246709067); +emit_32(3274944545); +emit_32(1129252848); +emit_32(3246977188); +emit_32(3274944545); +emit_32(1129508897); +emit_32(3246402830); +emit_32(3274944545); +emit_32(1129764880); +emit_32(3246323034); +emit_32(3274944545); +emit_32(1130020864); +emit_32(3244941011); +emit_32(3274944545); +emit_32(1130276848); +emit_32(3243260877); +emit_32(3274944545); +emit_32(1130532897); +emit_32(3242406707); +emit_32(3274944545); +emit_32(1130788880); +emit_32(3239902383); +emit_32(3274944545); +emit_32(1131044864); +emit_32(3235323031); +emit_32(3274944545); +emit_32(1131300848); +emit_32(3229858692); +emit_32(3274944545); +emit_32(1131556897); +emit_32(3221983215); +emit_32(3274944545); +emit_32(1131812880); +emit_32(3204619249); +emit_32(3274944545); +emit_32(1132068864); +emit_32(1069430331); +emit_32(3274944545); +emit_32(1081737216); +emit_32(1106249096); +emit_32(3275200528); +emit_32(1090125824); +emit_32(1106043942); +emit_32(3275200528); +emit_32(1094418484); +emit_32(1105378410); +emit_32(3275200528); +emit_32(1098514432); +emit_32(1104642467); +emit_32(3275200528); +emit_32(1100759066); +emit_32(1104162010); +emit_32(3275200528); +emit_32(1102807040); +emit_32(1103635153); +emit_32(3275200528); +emit_32(1104855066); +emit_32(1102464995); +emit_32(3275200528); +emit_32(1106903040); +emit_32(1101344958); +emit_32(3275200528); +emit_32(1108123661); +emit_32(1100328835); +emit_32(3275200528); +emit_32(1109147648); +emit_32(1099478755); +emit_32(3275200528); +emit_32(1110171661); +emit_32(1099658219); +emit_32(3275200528); +emit_32(1111195648); +emit_32(1099600285); +emit_32(3275200528); +emit_32(1112219661); +emit_32(1099186464); +emit_32(3275200528); +emit_32(1113243648); +emit_32(1099013135); +emit_32(3275200528); +emit_32(1114267661); +emit_32(1099476763); +emit_32(3275200528); +emit_32(1115291648); +emit_32(1099561540); +emit_32(3275200528); +emit_32(1116000263); +emit_32(1099962673); +emit_32(3275200528); +emit_32(1116512256); +emit_32(1100314837); +emit_32(3275200528); +emit_32(1117024263); +emit_32(1100808192); +emit_32(3275200528); +emit_32(1117536256); +emit_32(1100975545); +emit_32(3275200528); +emit_32(1118048263); +emit_32(1100964744); +emit_32(3275200528); +emit_32(1118560256); +emit_32(1100600364); +emit_32(3275200528); +emit_32(1119072263); +emit_32(1100761426); +emit_32(3275200528); +emit_32(1119584256); +emit_32(1100181144); +emit_32(3275200528); +emit_32(1120096263); +emit_32(1098976749); +emit_32(3275200528); +emit_32(1120608322); +emit_32(1097199518); +emit_32(3275200528); +emit_32(1121120289); +emit_32(1096699347); +emit_32(3275200528); +emit_32(1121632256); +emit_32(1096334128); +emit_32(3275200528); +emit_32(1122144223); +emit_32(1096532414); +emit_32(3275200528); +emit_32(1122656322); +emit_32(1096818675); +emit_32(3275200528); +emit_32(1123168289); +emit_32(1097088578); +emit_32(3275200528); +emit_32(1123680256); +emit_32(1096387291); +emit_32(3275200528); +emit_32(1124132848); +emit_32(1094034810); +emit_32(3275200528); +emit_32(1124388897); +emit_32(1090976691); +emit_32(3275200528); +emit_32(1124644880); +emit_32(1088321497); +emit_32(3275200528); +emit_32(1124900864); +emit_32(1088758712); +emit_32(3275200528); +emit_32(1125156848); +emit_32(1087833868); +emit_32(3275200528); +emit_32(1125412897); +emit_32(1084974107); +emit_32(3275200528); +emit_32(1125668880); +emit_32(1084703805); +emit_32(3275200528); +emit_32(1125924864); +emit_32(1084375328); +emit_32(3275200528); +emit_32(1126180848); +emit_32(1079810898); +emit_32(3275200528); +emit_32(1126436897); +emit_32(1075134836); +emit_32(3275200528); +emit_32(1126692880); +emit_32(1055694338); +emit_32(3275200528); +emit_32(1126948864); +emit_32(3222544916); +emit_32(3275200528); +emit_32(1127204848); +emit_32(3231495477); +emit_32(3275200528); +emit_32(1127460897); +emit_32(3235209219); +emit_32(3275200528); +emit_32(1127716880); +emit_32(3239322940); +emit_32(3275200528); +emit_32(1127972864); +emit_32(3240031389); +emit_32(3275200528); +emit_32(1128228848); +emit_32(3242234426); +emit_32(3275200528); +emit_32(1128484897); +emit_32(3243694988); +emit_32(3275200528); +emit_32(1128740880); +emit_32(3244783934); +emit_32(3275200528); +emit_32(1128996864); +emit_32(3245353415); +emit_32(3275200528); +emit_32(1129252848); +emit_32(3245143910); +emit_32(3275200528); +emit_32(1129508897); +emit_32(3243741859); +emit_32(3275200528); +emit_32(1129764880); +emit_32(3244369117); +emit_32(3275200528); +emit_32(1130020864); +emit_32(3244547480); +emit_32(3275200528); +emit_32(1130276848); +emit_32(3242487867); +emit_32(3275200528); +emit_32(1130532897); +emit_32(3241258307); +emit_32(3275200528); +emit_32(1130788880); +emit_32(3238763409); +emit_32(3275200528); +emit_32(1131044864); +emit_32(3232771615); +emit_32(3275200528); +emit_32(1131300848); +emit_32(3224658636); +emit_32(3275200528); +emit_32(1131556897); +emit_32(3205375013); +emit_32(3275200528); +emit_32(1131812880); +emit_32(1065955266); +emit_32(3275200528); +emit_32(1132068864); +emit_32(1078364786); +emit_32(3275200528); +emit_32(1081737216); +emit_32(1105010622); +emit_32(3275456512); +emit_32(1090125824); +emit_32(1104741191); +emit_32(3275456512); +emit_32(1094418484); +emit_32(1104199864); +emit_32(3275456512); +emit_32(1098514432); +emit_32(1103701895); +emit_32(3275456512); +emit_32(1100759066); +emit_32(1103428898); +emit_32(3275456512); +emit_32(1102807040); +emit_32(1102959031); +emit_32(3275456512); +emit_32(1104855066); +emit_32(1102357044); +emit_32(3275456512); +emit_32(1106903040); +emit_32(1100872784); +emit_32(3275456512); +emit_32(1108123661); +emit_32(1099789972); +emit_32(3275456512); +emit_32(1109147648); +emit_32(1099200043); +emit_32(3275456512); +emit_32(1110171661); +emit_32(1098764622); +emit_32(3275456512); +emit_32(1111195648); +emit_32(1098958399); +emit_32(3275456512); +emit_32(1112219661); +emit_32(1098447743); +emit_32(3275456512); +emit_32(1113243648); +emit_32(1098347184); +emit_32(3275456512); +emit_32(1114267661); +emit_32(1099067032); +emit_32(3275456512); +emit_32(1115291648); +emit_32(1099311664); +emit_32(3275456512); +emit_32(1116000263); +emit_32(1099114584); +emit_32(3275456512); +emit_32(1116512256); +emit_32(1099262119); +emit_32(3275456512); +emit_32(1117024263); +emit_32(1099307522); +emit_32(3275456512); +emit_32(1117536256); +emit_32(1099567150); +emit_32(3275456512); +emit_32(1118048263); +emit_32(1099285555); +emit_32(3275456512); +emit_32(1118560256); +emit_32(1099184367); +emit_32(3275456512); +emit_32(1119072263); +emit_32(1099025665); +emit_32(3275456512); +emit_32(1119584256); +emit_32(1097936771); +emit_32(3275456512); +emit_32(1120096263); +emit_32(1097086062); +emit_32(3275456512); +emit_32(1120608322); +emit_32(1095166329); +emit_32(3275456512); +emit_32(1121120289); +emit_32(1093547013); +emit_32(3275456512); +emit_32(1121632256); +emit_32(1094611632); +emit_32(3275456512); +emit_32(1122144223); +emit_32(1095301176); +emit_32(3275456512); +emit_32(1122656322); +emit_32(1096040002); +emit_32(3275456512); +emit_32(1123168289); +emit_32(1096486905); +emit_32(3275456512); +emit_32(1123680256); +emit_32(1095536371); +emit_32(3275456512); +emit_32(1124132848); +emit_32(1093119718); +emit_32(3275456512); +emit_32(1124388897); +emit_32(1091308366); +emit_32(3275456512); +emit_32(1124644880); +emit_32(1088220394); +emit_32(3275456512); +emit_32(1124900864); +emit_32(1088246482); +emit_32(3275456512); +emit_32(1125156848); +emit_32(1087966198); +emit_32(3275456512); +emit_32(1125412897); +emit_32(1084761016); +emit_32(3275456512); +emit_32(1125668880); +emit_32(1082433638); +emit_32(3275456512); +emit_32(1125924864); +emit_32(1080387489); +emit_32(3275456512); +emit_32(1126180848); +emit_32(1080768877); +emit_32(3275456512); +emit_32(1126436897); +emit_32(1072749536); +emit_32(3275456512); +emit_32(1126692880); +emit_32(1066725424); +emit_32(3275456512); +emit_32(1126948864); +emit_32(3211315758); +emit_32(3275456512); +emit_32(1127204848); +emit_32(3229615254); +emit_32(3275456512); +emit_32(1127460897); +emit_32(3234924069); +emit_32(3275456512); +emit_32(1127716880); +emit_32(3238308600); +emit_32(3275456512); +emit_32(1127972864); +emit_32(3239071816); +emit_32(3275456512); +emit_32(1128228848); +emit_32(3240224516); +emit_32(3275456512); +emit_32(1128484897); +emit_32(3241289869); +emit_32(3275456512); +emit_32(1128740880); +emit_32(3242705866); +emit_32(3275456512); +emit_32(1128996864); +emit_32(3242964969); +emit_32(3275456512); +emit_32(1129252848); +emit_32(3243192091); +emit_32(3275456512); +emit_32(1129508897); +emit_32(3242061516); +emit_32(3275456512); +emit_32(1129764880); +emit_32(3242460709); +emit_32(3275456512); +emit_32(1130020864); +emit_32(3243083563); +emit_32(3275456512); +emit_32(1130276848); +emit_32(3240930627); +emit_32(3275456512); +emit_32(1130532897); +emit_32(3238871108); +emit_32(3275456512); +emit_32(1130788880); +emit_32(3236675631); +emit_32(3275456512); +emit_32(1131044864); +emit_32(3232208551); +emit_32(3275456512); +emit_32(1131300848); +emit_32(3223881892); +emit_32(3275456512); +emit_32(1131556897); +emit_32(1056471794); +emit_32(3275456512); +emit_32(1131812880); +emit_32(1077025041); +emit_32(3275456512); +emit_32(1132068864); +emit_32(1081975788); +emit_32(3275456512); +emit_32(1081737216); +emit_32(1103817710); +emit_32(3275712496); +emit_32(1090125824); +emit_32(1103479177); +emit_32(3275712496); +emit_32(1094418484); +emit_32(1103628337); +emit_32(3275712496); +emit_32(1098514432); +emit_32(1103194908); +emit_32(3275712496); +emit_32(1100759066); +emit_32(1102441087); +emit_32(3275712496); +emit_32(1102807040); +emit_32(1101777548); +emit_32(3275712496); +emit_32(1104855066); +emit_32(1101550322); +emit_32(3275712496); +emit_32(1106903040); +emit_32(1100130340); +emit_32(3275712496); +emit_32(1108123661); +emit_32(1099405250); +emit_32(3275712496); +emit_32(1109147648); +emit_32(1098058092); +emit_32(3275712496); +emit_32(1110171661); +emit_32(1097423074); +emit_32(3275712496); +emit_32(1111195648); +emit_32(1097055863); +emit_32(3275712496); +emit_32(1112219661); +emit_32(1096882743); +emit_32(3275712496); +emit_32(1113243648); +emit_32(1098289303); +emit_32(3275712496); +emit_32(1114267661); +emit_32(1097937610); +emit_32(3275712496); +emit_32(1115291648); +emit_32(1097533279); +emit_32(3275712496); +emit_32(1116000263); +emit_32(1097752851); +emit_32(3275712496); +emit_32(1116512256); +emit_32(1097273547); +emit_32(3275712496); +emit_32(1117024263); +emit_32(1097170787); +emit_32(3275712496); +emit_32(1117536256); +emit_32(1096374708); +emit_32(3275712496); +emit_32(1118048263); +emit_32(1096180197); +emit_32(3275712496); +emit_32(1118560256); +emit_32(1097218602); +emit_32(3275712496); +emit_32(1119072263); +emit_32(1096138883); +emit_32(3275712496); +emit_32(1119584256); +emit_32(1096076912); +emit_32(3275712496); +emit_32(1120096263); +emit_32(1094562034); +emit_32(3275712496); +emit_32(1120608322); +emit_32(1092095962); +emit_32(3275712496); +emit_32(1121120289); +emit_32(1091662502); +emit_32(3275712496); +emit_32(1121632256); +emit_32(1092889556); +emit_32(3275712496); +emit_32(1122144223); +emit_32(1094008177); +emit_32(3275712496); +emit_32(1122656322); +emit_32(1094597791); +emit_32(3275712496); +emit_32(1123168289); +emit_32(1094669828); +emit_32(3275712496); +emit_32(1123680256); +emit_32(1093668333); +emit_32(3275712496); +emit_32(1124132848); +emit_32(1092690012); +emit_32(3275712496); +emit_32(1124388897); +emit_32(1091404793); +emit_32(3275712496); +emit_32(1124644880); +emit_32(1089616677); +emit_32(3275712496); +emit_32(1124900864); +emit_32(1087718650); +emit_32(3275712496); +emit_32(1125156848); +emit_32(1085433635); +emit_32(3275712496); +emit_32(1125412897); +emit_32(1083051984); +emit_32(3275712496); +emit_32(1125668880); +emit_32(1080094894); +emit_32(3275712496); +emit_32(1125924864); +emit_32(1077582632); +emit_32(3275712496); +emit_32(1126180848); +emit_32(1079746432); +emit_32(3275712496); +emit_32(1126436897); +emit_32(1073545866); +emit_32(3275712496); +emit_32(1126692880); +emit_32(1068480405); +emit_32(3275712496); +emit_32(1126948864); +emit_32(3205219354); +emit_32(3275712496); +emit_32(1127204848); +emit_32(3228713018); +emit_32(3275712496); +emit_32(1127460897); +emit_32(3234007257); +emit_32(3275712496); +emit_32(1127716880); +emit_32(3234765252); +emit_32(3275712496); +emit_32(1127972864); +emit_32(3236479652); +emit_32(3275712496); +emit_32(1128228848); +emit_32(3239043033); +emit_32(3275712496); +emit_32(1128484897); +emit_32(3239994091); +emit_32(3275712496); +emit_32(1128740880); +emit_32(3241107312); +emit_32(3275712496); +emit_32(1128996864); +emit_32(3240979281); +emit_32(3275712496); +emit_32(1129252848); +emit_32(3240651496); +emit_32(3275712496); +emit_32(1129508897); +emit_32(3240242971); +emit_32(3275712496); +emit_32(1129764880); +emit_32(3240761491); +emit_32(3275712496); +emit_32(1130020864); +emit_32(3240982007); +emit_32(3275712496); +emit_32(1130276848); +emit_32(3239091351); +emit_32(3275712496); +emit_32(1130532897); +emit_32(3236735400); +emit_32(3275712496); +emit_32(1130788880); +emit_32(3231377575); +emit_32(3275712496); +emit_32(1131044864); +emit_32(3227422808); +emit_32(3275712496); +emit_32(1131300848); +emit_32(3218146098); +emit_32(3275712496); +emit_32(1131556897); +emit_32(1069112487); +emit_32(3275712496); +emit_32(1131812880); +emit_32(1077648441); +emit_32(3275712496); +emit_32(1132068864); +emit_32(1082214129); +emit_32(3275712496); +emit_32(1081737216); +emit_32(1102629726); +emit_32(3275968545); +emit_32(1090125824); +emit_32(1102698722); +emit_32(3275968545); +emit_32(1094418484); +emit_32(1102802741); +emit_32(3275968545); +emit_32(1098514432); +emit_32(1102285373); +emit_32(3275968545); +emit_32(1100759066); +emit_32(1101786251); +emit_32(3275968545); +emit_32(1102807040); +emit_32(1100824812); +emit_32(3275968545); +emit_32(1104855066); +emit_32(1100025640); +emit_32(3275968545); +emit_32(1106903040); +emit_32(1099634940); +emit_32(3275968545); +emit_32(1108123661); +emit_32(1099046584); +emit_32(3275968545); +emit_32(1109147648); +emit_32(1096636223); +emit_32(3275968545); +emit_32(1110171661); +emit_32(1095513303); +emit_32(3275968545); +emit_32(1111195648); +emit_32(1095867407); +emit_32(3275968545); +emit_32(1112219661); +emit_32(1096126929); +emit_32(3275968545); +emit_32(1113243648); +emit_32(1096604870); +emit_32(3275968545); +emit_32(1114267661); +emit_32(1095827037); +emit_32(3275968545); +emit_32(1115291648); +emit_32(1095170838); +emit_32(3275968545); +emit_32(1116000263); +emit_32(1095497679); +emit_32(3275968545); +emit_32(1116512256); +emit_32(1095025715); +emit_32(3275968545); +emit_32(1117024263); +emit_32(1094083884); +emit_32(3275968545); +emit_32(1117536256); +emit_32(1094884996); +emit_32(3275968545); +emit_32(1118048263); +emit_32(1094938054); +emit_32(3275968545); +emit_32(1118560256); +emit_32(1094814322); +emit_32(3275968545); +emit_32(1119072263); +emit_32(1094028414); +emit_32(3275968545); +emit_32(1119584256); +emit_32(1093868087); +emit_32(3275968545); +emit_32(1120096263); +emit_32(1091898725); +emit_32(3275968545); +emit_32(1120608322); +emit_32(1091588902); +emit_32(3275968545); +emit_32(1121120289); +emit_32(1090929599); +emit_32(3275968545); +emit_32(1121632256); +emit_32(1091279268); +emit_32(3275968545); +emit_32(1122144223); +emit_32(1091962195); +emit_32(3275968545); +emit_32(1122656322); +emit_32(1092164916); +emit_32(3275968545); +emit_32(1123168289); +emit_32(1092135976); +emit_32(3275968545); +emit_32(1123680256); +emit_32(1091891196); +emit_32(3275968545); +emit_32(1124132848); +emit_32(1091591995); +emit_32(3275968545); +emit_32(1124388897); +emit_32(1091090063); +emit_32(3275968545); +emit_32(1124644880); +emit_32(1090340509); +emit_32(3275968545); +emit_32(1124900864); +emit_32(1086101389); +emit_32(3275968545); +emit_32(1125156848); +emit_32(1083757927); +emit_32(3275968545); +emit_32(1125412897); +emit_32(1078075547); +emit_32(3275968545); +emit_32(1125668880); +emit_32(1076426137); +emit_32(3275968545); +emit_32(1125924864); +emit_32(1072504840); +emit_32(3275968545); +emit_32(1126180848); +emit_32(1076195660); +emit_32(3275968545); +emit_32(1126436897); +emit_32(1072621609); +emit_32(3275968545); +emit_32(1126692880); +emit_32(1056034915); +emit_32(3275968545); +emit_32(1126948864); +emit_32(3209808342); +emit_32(3275968545); +emit_32(1127204848); +emit_32(3226594391); +emit_32(3275968545); +emit_32(1127460897); +emit_32(3229765557); +emit_32(3275968545); +emit_32(1127716880); +emit_32(3232195653); +emit_32(3275968545); +emit_32(1127972864); +emit_32(3233670937); +emit_32(3275968545); +emit_32(1128228848); +emit_32(3236746137); +emit_32(3275968545); +emit_32(1128484897); +emit_32(3239602763); +emit_32(3275968545); +emit_32(1128740880); +emit_32(3239120397); +emit_32(3275968545); +emit_32(1128996864); +emit_32(3238680404); +emit_32(3275968545); +emit_32(1129252848); +emit_32(3238748498); +emit_32(3275968545); +emit_32(1129508897); +emit_32(3237309495); +emit_32(3275968545); +emit_32(1129764880); +emit_32(3238233637); +emit_32(3275968545); +emit_32(1130020864); +emit_32(3238814642); +emit_32(3275968545); +emit_32(1130276848); +emit_32(3237583887); +emit_32(3275968545); +emit_32(1130532897); +emit_32(3232326054); +emit_32(3275968545); +emit_32(1130788880); +emit_32(3225982694); +emit_32(3275968545); +emit_32(1131044864); +emit_32(3216861550); +emit_32(3275968545); +emit_32(1131300848); +emit_32(1026734803); +emit_32(3275968545); +emit_32(1131556897); +emit_32(1070114842); +emit_32(3275968545); +emit_32(1131812880); +emit_32(1079071526); +emit_32(3275968545); +emit_32(1132068864); +emit_32(1085031464); +emit_32(3275968545); +emit_32(1081737216); +emit_32(1101834591); +emit_32(3276224528); +emit_32(1090125824); +emit_32(1101837579); +emit_32(3276224528); +emit_32(1094418484); +emit_32(1102082264); +emit_32(3276224528); +emit_32(1098514432); +emit_32(1101628441); +emit_32(3276224528); +emit_32(1100759066); +emit_32(1100985349); +emit_32(3276224528); +emit_32(1102807040); +emit_32(1100055367); +emit_32(3276224528); +emit_32(1104855066); +emit_32(1099637142); +emit_32(3276224528); +emit_32(1106903040); +emit_32(1098680317); +emit_32(3276224528); +emit_32(1108123661); +emit_32(1096761947); +emit_32(3276224528); +emit_32(1109147648); +emit_32(1094480980); +emit_32(3276224528); +emit_32(1110171661); +emit_32(1095392087); +emit_32(3276224528); +emit_32(1111195648); +emit_32(1094890029); +emit_32(3276224528); +emit_32(1112219661); +emit_32(1094984506); +emit_32(3276224528); +emit_32(1113243648); +emit_32(1094746898); +emit_32(3276224528); +emit_32(1114267661); +emit_32(1095240253); +emit_32(3276224528); +emit_32(1115291648); +emit_32(1094944765); +emit_32(3276224528); +emit_32(1116000263); +emit_32(1093070435); +emit_32(3276224528); +emit_32(1116512256); +emit_32(1092835659); +emit_32(3276224528); +emit_32(1117024263); +emit_32(1092160439); +emit_32(3276224528); +emit_32(1117536256); +emit_32(1093144779); +emit_32(3276224528); +emit_32(1118048263); +emit_32(1093574171); +emit_32(3276224528); +emit_32(1118560256); +emit_32(1093277109); +emit_32(3276224528); +emit_32(1119072263); +emit_32(1093819957); +emit_32(3276224528); +emit_32(1119584256); +emit_32(1092843628); +emit_32(3276224528); +emit_32(1120096263); +emit_32(1091116372); +emit_32(3276224528); +emit_32(1120608322); +emit_32(1091376859); +emit_32(3276224528); +emit_32(1121120289); +emit_32(1090364648); +emit_32(3276224528); +emit_32(1121632256); +emit_32(1090493874); +emit_32(3276224528); +emit_32(1122144223); +emit_32(1090596026); +emit_32(3276224528); +emit_32(1122656322); +emit_32(1090953811); +emit_32(3276224528); +emit_32(1123168289); +emit_32(1090983737); +emit_32(3276224528); +emit_32(1123680256); +emit_32(1091497519); +emit_32(3276224528); +emit_32(1124132848); +emit_32(1090542549); +emit_32(3276224528); +emit_32(1124388897); +emit_32(1090078156); +emit_32(3276224528); +emit_32(1124644880); +emit_32(1088934054); +emit_32(3276224528); +emit_32(1124900864); +emit_32(1087697720); +emit_32(3276224528); +emit_32(1125156848); +emit_32(1085563428); +emit_32(3276224528); +emit_32(1125412897); +emit_32(1080952084); +emit_32(3276224528); +emit_32(1125668880); +emit_32(1073321471); +emit_32(3276224528); +emit_32(1125924864); +emit_32(1070202670); +emit_32(3276224528); +emit_32(1126180848); +emit_32(1076022141); +emit_32(3276224528); +emit_32(1126436897); +emit_32(1074767541); +emit_32(3276224528); +emit_32(1126692880); +emit_32(1043406403); +emit_32(3276224528); +emit_32(1126948864); +emit_32(3214856505); +emit_32(3276224528); +emit_32(1127204848); +emit_32(3221624644); +emit_32(3276224528); +emit_32(1127460897); +emit_32(3223744907); +emit_32(3276224528); +emit_32(1127716880); +emit_32(3226922931); +emit_32(3276224528); +emit_32(1127972864); +emit_32(3231769868); +emit_32(3276224528); +emit_32(1128228848); +emit_32(3235400940); +emit_32(3276224528); +emit_32(1128484897); +emit_32(3237712778); +emit_32(3276224528); +emit_32(1128740880); +emit_32(3237178570); +emit_32(3276224528); +emit_32(1128996864); +emit_32(3236152161); +emit_32(3276224528); +emit_32(1129252848); +emit_32(3236365358); +emit_32(3276224528); +emit_32(1129508897); +emit_32(3234550776); +emit_32(3276224528); +emit_32(1129764880); +emit_32(3234356705); +emit_32(3276224528); +emit_32(1130020864); +emit_32(3236727662); +emit_32(3276224528); +emit_32(1130276848); +emit_32(3234020867); +emit_32(3276224528); +emit_32(1130532897); +emit_32(3229942851); +emit_32(3276224528); +emit_32(1130788880); +emit_32(3218905099); +emit_32(3276224528); +emit_32(1131044864); +emit_32(1046590114); +emit_32(3276224528); +emit_32(1131300848); +emit_32(1071351155); +emit_32(3276224528); +emit_32(1131556897); +emit_32(1075089706); +emit_32(3276224528); +emit_32(1131812880); +emit_32(1081837670); +emit_32(3276224528); +emit_32(1132068864); +emit_32(1088418344); +emit_32(3276224528); +emit_32(1081737216); +emit_32(1101171471); +emit_32(3276480512); +emit_32(1090125824); +emit_32(1100482504); +emit_32(3276480512); +emit_32(1094418484); +emit_32(1100941623); +emit_32(3276480512); +emit_32(1098514432); +emit_32(1100408685); +emit_32(3276480512); +emit_32(1100759066); +emit_32(1099563690); +emit_32(3276480512); +emit_32(1102807040); +emit_32(1099315859); +emit_32(3276480512); +emit_32(1104855066); +emit_32(1099149083); +emit_32(3276480512); +emit_32(1106903040); +emit_32(1096909482); +emit_32(3276480512); +emit_32(1108123661); +emit_32(1095417463); +emit_32(3276480512); +emit_32(1109147648); +emit_32(1095014180); +emit_32(3276480512); +emit_32(1110171661); +emit_32(1094740188); +emit_32(3276480512); +emit_32(1111195648); +emit_32(1094116495); +emit_32(3276480512); +emit_32(1112219661); +emit_32(1094245994); +emit_32(3276480512); +emit_32(1113243648); +emit_32(1093480953); +emit_32(3276480512); +emit_32(1114267661); +emit_32(1095278002); +emit_32(3276480512); +emit_32(1115291648); +emit_32(1094897264); +emit_32(3276480512); +emit_32(1116000263); +emit_32(1092706055); +emit_32(3276480512); +emit_32(1116512256); +emit_32(1091291358); +emit_32(3276480512); +emit_32(1117024263); +emit_32(1090889429); +emit_32(3276480512); +emit_32(1117536256); +emit_32(1091305986); +emit_32(3276480512); +emit_32(1118048263); +emit_32(1092298620); +emit_32(3276480512); +emit_32(1118560256); +emit_32(1092551684); +emit_32(3276480512); +emit_32(1119072263); +emit_32(1092611295); +emit_32(3276480512); +emit_32(1119584256); +emit_32(1091871042); +emit_32(3276480512); +emit_32(1120096263); +emit_32(1090718773); +emit_32(3276480512); +emit_32(1120608322); +emit_32(1090155373); +emit_32(3276480512); +emit_32(1121120289); +emit_32(1087795930); +emit_32(3276480512); +emit_32(1121632256); +emit_32(1087063877); +emit_32(3276480512); +emit_32(1122144223); +emit_32(1088019466); +emit_32(3276480512); +emit_32(1122656322); +emit_32(1090277322); +emit_32(3276480512); +emit_32(1123168289); +emit_32(1091326066); +emit_32(3276480512); +emit_32(1123680256); +emit_32(1091923220); +emit_32(3276480512); +emit_32(1124132848); +emit_32(1091702285); +emit_32(3276480512); +emit_32(1124388897); +emit_32(1089725142); +emit_32(3276480512); +emit_32(1124644880); +emit_32(1087013462); +emit_32(3276480512); +emit_32(1124900864); +emit_32(1086960152); +emit_32(3276480512); +emit_32(1125156848); +emit_32(1085873156); +emit_32(3276480512); +emit_32(1125412897); +emit_32(1082634587); +emit_32(3276480512); +emit_32(1125668880); +emit_32(1076934109); +emit_32(3276480512); +emit_32(1125924864); +emit_32(1073398227); +emit_32(3276480512); +emit_32(1126180848); +emit_32(1074881249); +emit_32(3276480512); +emit_32(1126436897); +emit_32(1074681558); +emit_32(3276480512); +emit_32(1126692880); +emit_32(1066383253); +emit_32(3276480512); +emit_32(1126948864); +emit_32(3190627924); +emit_32(3276480512); +emit_32(1127204848); +emit_32(3210951893); +emit_32(3276480512); +emit_32(1127460897); +emit_32(3211101009); +emit_32(3276480512); +emit_32(1127716880); +emit_32(3222970470); +emit_32(3276480512); +emit_32(1127972864); +emit_32(3228079929); +emit_32(3276480512); +emit_32(1128228848); +emit_32(3233825706); +emit_32(3276480512); +emit_32(1128484897); +emit_32(3233542381); +emit_32(3276480512); +emit_32(1128740880); +emit_32(3232104805); +emit_32(3276480512); +emit_32(1128996864); +emit_32(3230112405); +emit_32(3276480512); +emit_32(1129252848); +emit_32(3231152970); +emit_32(3276480512); +emit_32(1129508897); +emit_32(3231464292); +emit_32(3276480512); +emit_32(1129764880); +emit_32(3231339491); +emit_32(3276480512); +emit_32(1130020864); +emit_32(3231844149); +emit_32(3276480512); +emit_32(1130276848); +emit_32(3231999318); +emit_32(3276480512); +emit_32(1130532897); +emit_32(3224338359); +emit_32(3276480512); +emit_32(1130788880); +emit_32(1034571239); +emit_32(3276480512); +emit_32(1131044864); +emit_32(1073783180); +emit_32(3276480512); +emit_32(1131300848); +emit_32(1077514055); +emit_32(3276480512); +emit_32(1131556897); +emit_32(1081268167); +emit_32(3276480512); +emit_32(1131812880); +emit_32(1085146577); +emit_32(3276480512); +emit_32(1132068864); +emit_32(1091014199); +emit_32(3276480512); +emit_32(1081737216); +emit_32(1100121322); +emit_32(3276736496); +emit_32(1090125824); +emit_32(1099396180); +emit_32(3276736496); +emit_32(1094418484); +emit_32(1099281098); +emit_32(3276736496); +emit_32(1098514432); +emit_32(1098942251); +emit_32(3276736496); +emit_32(1100759066); +emit_32(1098739981); +emit_32(3276736496); +emit_32(1102807040); +emit_32(1097837366); +emit_32(3276736496); +emit_32(1104855066); +emit_32(1096300469); +emit_32(3276736496); +emit_32(1106903040); +emit_32(1095044694); +emit_32(3276736496); +emit_32(1108123661); +emit_32(1095162764); +emit_32(3276736496); +emit_32(1109147648); +emit_32(1095334730); +emit_32(3276736496); +emit_32(1110171661); +emit_32(1095152697); +emit_32(3276736496); +emit_32(1111195648); +emit_32(1094407894); +emit_32(3276736496); +emit_32(1112219661); +emit_32(1093563371); +emit_32(3276736496); +emit_32(1113243648); +emit_32(1092844257); +emit_32(3276736496); +emit_32(1114267661); +emit_32(1093382386); +emit_32(3276736496); +emit_32(1115291648); +emit_32(1092541009); +emit_32(3276736496); +emit_32(1116000263); +emit_32(1091687762); +emit_32(3276736496); +emit_32(1116512256); +emit_32(1088040290); +emit_32(3276736496); +emit_32(1117024263); +emit_32(1088119038); +emit_32(3276736496); +emit_32(1117536256); +emit_32(1088383007); +emit_32(3276736496); +emit_32(1118048263); +emit_32(1090949575); +emit_32(3276736496); +emit_32(1118560256); +emit_32(1091368575); +emit_32(3276736496); +emit_32(1119072263); +emit_32(1091839008); +emit_32(3276736496); +emit_32(1119584256); +emit_32(1091040497); +emit_32(3276736496); +emit_32(1120096263); +emit_32(1088659118); +emit_32(3276736496); +emit_32(1120608322); +emit_32(1086563119); +emit_32(3276736496); +emit_32(1121120289); +emit_32(1083266480); +emit_32(3276736496); +emit_32(1121632256); +emit_32(1082063323); +emit_32(3276736496); +emit_32(1122144223); +emit_32(1086818322); +emit_32(3276736496); +emit_32(1122656322); +emit_32(1089302105); +emit_32(3276736496); +emit_32(1123168289); +emit_32(1090938523); +emit_32(3276736496); +emit_32(1123680256); +emit_32(1091787911); +emit_32(3276736496); +emit_32(1124132848); +emit_32(1091673658); +emit_32(3276736496); +emit_32(1124388897); +emit_32(1091250789); +emit_32(3276736496); +emit_32(1124644880); +emit_32(1088596245); +emit_32(3276736496); +emit_32(1124900864); +emit_32(1086620707); +emit_32(3276736496); +emit_32(1125156848); +emit_32(1083915591); +emit_32(3276736496); +emit_32(1125412897); +emit_32(1083242195); +emit_32(3276736496); +emit_32(1125668880); +emit_32(1083662443); +emit_32(3276736496); +emit_32(1125924864); +emit_32(1080051525); +emit_32(3276736496); +emit_32(1126180848); +emit_32(1078023915); +emit_32(3276736496); +emit_32(1126436897); +emit_32(1076481418); +emit_32(3276736496); +emit_32(1126692880); +emit_32(1073065367); +emit_32(3276736496); +emit_32(1126948864); +emit_32(1068007204); +emit_32(3276736496); +emit_32(1127204848); +emit_32(1059175291); +emit_32(3276736496); +emit_32(1127460897); +emit_32(3191698780); +emit_32(3276736496); +emit_32(1127716880); +emit_32(3213224166); +emit_32(3276736496); +emit_32(1127972864); +emit_32(3223725026); +emit_32(3276736496); +emit_32(1128228848); +emit_32(3228029430); +emit_32(3276736496); +emit_32(1128484897); +emit_32(3226148159); +emit_32(3276736496); +emit_32(1128740880); +emit_32(3225760353); +emit_32(3276736496); +emit_32(1128996864); +emit_32(3222121585); +emit_32(3276736496); +emit_32(1129252848); +emit_32(3225539356); +emit_32(3276736496); +emit_32(1129508897); +emit_32(3229882998); +emit_32(3276736496); +emit_32(1129764880); +emit_32(3227190108); +emit_32(3276736496); +emit_32(1130020864); +emit_32(3228912960); +emit_32(3276736496); +emit_32(1130276848); +emit_32(3228921307); +emit_32(3276736496); +emit_32(1130532897); +emit_32(3219664184); +emit_32(3276736496); +emit_32(1130788880); +emit_32(1065871800); +emit_32(3276736496); +emit_32(1131044864); +emit_32(1077962552); +emit_32(3276736496); +emit_32(1131300848); +emit_32(1082028972); +emit_32(3276736496); +emit_32(1131556897); +emit_32(1084764119); +emit_32(3276736496); +emit_32(1131812880); +emit_32(1086553745); +emit_32(3276736496); +emit_32(1132068864); +emit_32(1092505651); +emit_32(3276736496); +emit_32(1081737216); +emit_32(1099020213); +emit_32(3276992545); +emit_32(1090125824); +emit_32(1098714186); +emit_32(3276992545); +emit_32(1094418484); +emit_32(1097828034); +emit_32(3276992545); +emit_32(1098514432); +emit_32(1097529085); +emit_32(3276992545); +emit_32(1100759066); +emit_32(1097159252); +emit_32(3276992545); +emit_32(1102807040); +emit_32(1096861667); +emit_32(3276992545); +emit_32(1104855066); +emit_32(1094929036); +emit_32(3276992545); +emit_32(1106903040); +emit_32(1095502502); +emit_32(3276992545); +emit_32(1108123661); +emit_32(1095915851); +emit_32(3276992545); +emit_32(1109147648); +emit_32(1095718928); +emit_32(3276992545); +emit_32(1110171661); +emit_32(1095125539); +emit_32(3276992545); +emit_32(1111195648); +emit_32(1094669094); +emit_32(3276992545); +emit_32(1112219661); +emit_32(1093180431); +emit_32(3276992545); +emit_32(1113243648); +emit_32(1091863545); +emit_32(3276992545); +emit_32(1114267661); +emit_32(1091778558); +emit_32(3276992545); +emit_32(1115291648); +emit_32(1091298751); +emit_32(3276992545); +emit_32(1116000263); +emit_32(1089644695); +emit_32(3276992545); +emit_32(1116512256); +emit_32(1086301730); +emit_32(3276992545); +emit_32(1117024263); +emit_32(1086163570); +emit_32(3276992545); +emit_32(1117536256); +emit_32(1086958244); +emit_32(3276992545); +emit_32(1118048263); +emit_32(1089172396); +emit_32(3276992545); +emit_32(1118560256); +emit_32(1089779354); +emit_32(3276992545); +emit_32(1119072263); +emit_32(1090296616); +emit_32(3276992545); +emit_32(1119584256); +emit_32(1089775033); +emit_32(3276992545); +emit_32(1120096263); +emit_32(1085622735); +emit_32(3276992545); +emit_32(1120608322); +emit_32(1082413128); +emit_32(3276992545); +emit_32(1121120289); +emit_32(1076491106); +emit_32(3276992545); +emit_32(1121632256); +emit_32(1082562760); +emit_32(3276992545); +emit_32(1122144223); +emit_32(1085964047); +emit_32(3276992545); +emit_32(1122656322); +emit_32(1088268397); +emit_32(3276992545); +emit_32(1123168289); +emit_32(1091065421); +emit_32(3276992545); +emit_32(1123680256); +emit_32(1091881444); +emit_32(3276992545); +emit_32(1124132848); +emit_32(1092768655); +emit_32(3276992545); +emit_32(1124388897); +emit_32(1091984761); +emit_32(3276992545); +emit_32(1124644880); +emit_32(1091281397); +emit_32(3276992545); +emit_32(1124900864); +emit_32(1090331513); +emit_32(3276992545); +emit_32(1125156848); +emit_32(1084916184); +emit_32(3276992545); +emit_32(1125412897); +emit_32(1084859729); +emit_32(3276992545); +emit_32(1125668880); +emit_32(1084191807); +emit_32(3276992545); +emit_32(1125924864); +emit_32(1084800757); +emit_32(3276992545); +emit_32(1126180848); +emit_32(1082243678); +emit_32(3276992545); +emit_32(1126436897); +emit_32(1082662102); +emit_32(3276992545); +emit_32(1126692880); +emit_32(1080485887); +emit_32(3276992545); +emit_32(1126948864); +emit_32(1077722135); +emit_32(3276992545); +emit_32(1127204848); +emit_32(1073495534); +emit_32(3276992545); +emit_32(1127460897); +emit_32(1067137892); +emit_32(3276992545); +emit_32(1127716880); +emit_32(3201755546); +emit_32(3276992545); +emit_32(1127972864); +emit_32(3219314631); +emit_32(3276992545); +emit_32(1128228848); +emit_32(3220786161); +emit_32(3276992545); +emit_32(1128484897); +emit_32(3215535647); +emit_32(3276992545); +emit_32(1128740880); +emit_32(3219082434); +emit_32(3276992545); +emit_32(1128996864); +emit_32(3207719209); +emit_32(3276992545); +emit_32(1129252848); +emit_32(3219319329); +emit_32(3276992545); +emit_32(1129508897); +emit_32(3222885200); +emit_32(3276992545); +emit_32(1129764880); +emit_32(3223784878); +emit_32(3276992545); +emit_32(1130020864); +emit_32(3226090865); +emit_32(3276992545); +emit_32(1130276848); +emit_32(3223180269); +emit_32(3276992545); +emit_32(1130532897); +emit_32(3210523051); +emit_32(3276992545); +emit_32(1130788880); +emit_32(1069117184); +emit_32(3276992545); +emit_32(1131044864); +emit_32(1079791646); +emit_32(3276992545); +emit_32(1131300848); +emit_32(1085107318); +emit_32(3276992545); +emit_32(1131556897); +emit_32(1086920663); +emit_32(3276992545); +emit_32(1131812880); +emit_32(1088946029); +emit_32(3276992545); +emit_32(1132068864); +emit_32(1093373998); +emit_32(3276992545); +emit_32(1081737216); +emit_32(1097108292); +emit_32(3277248528); +emit_32(1090125824); +emit_32(1096843002); +emit_32(3277248528); +emit_32(1094418484); +emit_32(1095568248); +emit_32(3277248528); +emit_32(1098514432); +emit_32(1095018899); +emit_32(3277248528); +emit_32(1100759066); +emit_32(1094782235); +emit_32(3277248528); +emit_32(1102807040); +emit_32(1095180170); +emit_32(3277248528); +emit_32(1104855066); +emit_32(1095450493); +emit_32(3277248528); +emit_32(1106903040); +emit_32(1095069965); +emit_32(3277248528); +emit_32(1108123661); +emit_32(1095994599); +emit_32(3277248528); +emit_32(1109147648); +emit_32(1095664822); +emit_32(3277248528); +emit_32(1110171661); +emit_32(1095335569); +emit_32(3277248528); +emit_32(1111195648); +emit_32(1094159381); +emit_32(3277248528); +emit_32(1112219661); +emit_32(1093190812); +emit_32(3277248528); +emit_32(1113243648); +emit_32(1092024942); +emit_32(3277248528); +emit_32(1114267661); +emit_32(1092719162); +emit_32(3277248528); +emit_32(1115291648); +emit_32(1091950724); +emit_32(3277248528); +emit_32(1116000263); +emit_32(1090594496); +emit_32(3277248528); +emit_32(1116512256); +emit_32(1087264889); +emit_32(3277248528); +emit_32(1117024263); +emit_32(1085915770); +emit_32(3277248528); +emit_32(1117536256); +emit_32(1085498563); +emit_32(3277248528); +emit_32(1118048263); +emit_32(1087685913); +emit_32(3277248528); +emit_32(1118560256); +emit_32(1089772496); +emit_32(3277248528); +emit_32(1119072263); +emit_32(1090845682); +emit_32(3277248528); +emit_32(1119584256); +emit_32(1090463340); +emit_32(3277248528); +emit_32(1120096263); +emit_32(1085056987); +emit_32(3277248528); +emit_32(1120608322); +emit_32(1080738301); +emit_32(3277248528); +emit_32(1121120289); +emit_32(1078775408); +emit_32(3277248528); +emit_32(1121632256); +emit_32(1086143815); +emit_32(3277248528); +emit_32(1122144223); +emit_32(1089267858); +emit_32(3277248528); +emit_32(1122656322); +emit_32(1090842075); +emit_32(3277248528); +emit_32(1123168289); +emit_32(1092362164); +emit_32(3277248528); +emit_32(1123680256); +emit_32(1092866068); +emit_32(3277248528); +emit_32(1124132848); +emit_32(1092973547); +emit_32(3277248528); +emit_32(1124388897); +emit_32(1093272810); +emit_32(3277248528); +emit_32(1124644880); +emit_32(1093540826); +emit_32(3277248528); +emit_32(1124900864); +emit_32(1091662900); +emit_32(3277248528); +emit_32(1125156848); +emit_32(1087337472); +emit_32(3277248528); +emit_32(1125412897); +emit_32(1084271960); +emit_32(3277248528); +emit_32(1125668880); +emit_32(1086273209); +emit_32(3277248528); +emit_32(1125924864); +emit_32(1087017908); +emit_32(3277248528); +emit_32(1126180848); +emit_32(1086137020); +emit_32(3277248528); +emit_32(1126436897); +emit_32(1084291023); +emit_32(3277248528); +emit_32(1126692880); +emit_32(1084252771); +emit_32(3277248528); +emit_32(1126948864); +emit_32(1082890062); +emit_32(3277248528); +emit_32(1127204848); +emit_32(1080838922); +emit_32(3277248528); +emit_32(1127460897); +emit_32(1077790963); +emit_32(3277248528); +emit_32(1127716880); +emit_32(1069026504); +emit_32(3277248528); +emit_32(1127972864); +emit_32(3200230497); +emit_32(3277248528); +emit_32(1128228848); +emit_32(3212093549); +emit_32(3277248528); +emit_32(1128484897); +emit_32(3187505818); +emit_32(3277248528); +emit_32(1128740880); +emit_32(3186118946); +emit_32(3277248528); +emit_32(1128996864); +emit_32(3163350412); +emit_32(3277248528); +emit_32(1129252848); +emit_32(3213662303); +emit_32(3277248528); +emit_32(1129508897); +emit_32(3213755333); +emit_32(3277248528); +emit_32(1129764880); +emit_32(3220593894); +emit_32(3277248528); +emit_32(1130020864); +emit_32(3222323667); +emit_32(3277248528); +emit_32(1130276848); +emit_32(3215526587); +emit_32(3277248528); +emit_32(1130532897); +emit_32(1045835140); +emit_32(3277248528); +emit_32(1130788880); +emit_32(1075469835); +emit_32(3277248528); +emit_32(1131044864); +emit_32(1083532819); +emit_32(3277248528); +emit_32(1131300848); +emit_32(1086949121); +emit_32(3277248528); +emit_32(1131556897); +emit_32(1088845177); +emit_32(3277248528); +emit_32(1131812880); +emit_32(1090603115); +emit_32(3277248528); +emit_32(1132068864); +emit_32(1092936742); +emit_32(3277248528); +emit_32(1081737216); +emit_32(1096047133); +emit_32(3277504512); +emit_32(1090125824); +emit_32(1095575064); +emit_32(3277504512); +emit_32(1094418484); +emit_32(1094514324); +emit_32(3277504512); +emit_32(1098514432); +emit_32(1094409781); +emit_32(3277504512); +emit_32(1100759066); +emit_32(1094209084); +emit_32(3277504512); +emit_32(1102807040); +emit_32(1094844731); +emit_32(3277504512); +emit_32(1104855066); +emit_32(1094741236); +emit_32(3277504512); +emit_32(1106903040); +emit_32(1095085484); +emit_32(3277504512); +emit_32(1108123661); +emit_32(1095114110); +emit_32(3277504512); +emit_32(1109147648); +emit_32(1094994362); +emit_32(3277504512); +emit_32(1110171661); +emit_32(1095239939); +emit_32(3277504512); +emit_32(1111195648); +emit_32(1093966548); +emit_32(3277504512); +emit_32(1112219661); +emit_32(1092807347); +emit_32(3277504512); +emit_32(1113243648); +emit_32(1093061208); +emit_32(3277504512); +emit_32(1114267661); +emit_32(1092621120); +emit_32(3277504512); +emit_32(1115291648); +emit_32(1092574889); +emit_32(3277504512); +emit_32(1116000263); +emit_32(1091199283); +emit_32(3277504512); +emit_32(1116512256); +emit_32(1087281792); +emit_32(3277504512); +emit_32(1117024263); +emit_32(1084862056); +emit_32(3277504512); +emit_32(1117536256); +emit_32(1084838904); +emit_32(3277504512); +emit_32(1118048263); +emit_32(1088961905); +emit_32(3277504512); +emit_32(1118560256); +emit_32(1090683457); +emit_32(3277504512); +emit_32(1119072263); +emit_32(1091541548); +emit_32(3277504512); +emit_32(1119584256); +emit_32(1089950880); +emit_32(3277504512); +emit_32(1120096263); +emit_32(1085097923); +emit_32(3277504512); +emit_32(1120608322); +emit_32(1082634273); +emit_32(3277504512); +emit_32(1121120289); +emit_32(1085048283); +emit_32(3277504512); +emit_32(1121632256); +emit_32(1089879786); +emit_32(3277504512); +emit_32(1122144223); +emit_32(1091437760); +emit_32(3277504512); +emit_32(1122656322); +emit_32(1092036938); +emit_32(3277504512); +emit_32(1123168289); +emit_32(1091792777); +emit_32(3277504512); +emit_32(1123680256); +emit_32(1092759427); +emit_32(3277504512); +emit_32(1124132848); +emit_32(1094303141); +emit_32(3277504512); +emit_32(1124388897); +emit_32(1094722047); +emit_32(3277504512); +emit_32(1124644880); +emit_32(1095047211); +emit_32(3277504512); +emit_32(1124900864); +emit_32(1093500980); +emit_32(3277504512); +emit_32(1125156848); +emit_32(1089802590); +emit_32(3277504512); +emit_32(1125412897); +emit_32(1086478164); +emit_32(3277504512); +emit_32(1125668880); +emit_32(1087292152); +emit_32(3277504512); +emit_32(1125924864); +emit_32(1088463244); +emit_32(3277504512); +emit_32(1126180848); +emit_32(1088955697); +emit_32(3277504512); +emit_32(1126436897); +emit_32(1086983577); +emit_32(3277504512); +emit_32(1126692880); +emit_32(1087333382); +emit_32(3277504512); +emit_32(1126948864); +emit_32(1086099795); +emit_32(3277504512); +emit_32(1127204848); +emit_32(1085722623); +emit_32(3277504512); +emit_32(1127460897); +emit_32(1082769224); +emit_32(3277504512); +emit_32(1127716880); +emit_32(1075827190); +emit_32(3277504512); +emit_32(1127972864); +emit_32(1066775588); +emit_32(3277504512); +emit_32(1128228848); +emit_32(1067171279); +emit_32(3277504512); +emit_32(1128484897); +emit_32(1067001745); +emit_32(3277504512); +emit_32(1128740880); +emit_32(1067686843); +emit_32(3277504512); +emit_32(1128996864); +emit_32(1065883795); +emit_32(3277504512); +emit_32(1129252848); +emit_32(1040732182); +emit_32(3277504512); +emit_32(1129508897); +emit_32(3197189593); +emit_32(3277504512); +emit_32(1129764880); +emit_32(3203486016); +emit_32(3277504512); +emit_32(1130020864); +emit_32(3211855951); +emit_32(3277504512); +emit_32(1130276848); +emit_32(3212062612); +emit_32(3277504512); +emit_32(1130532897); +emit_32(1061179313); +emit_32(3277504512); +emit_32(1130788880); +emit_32(1076017024); +emit_32(3277504512); +emit_32(1131044864); +emit_32(1084602198); +emit_32(3277504512); +emit_32(1131300848); +emit_32(1088897291); +emit_32(3277504512); +emit_32(1131556897); +emit_32(1090987995); +emit_32(3277504512); +emit_32(1131812880); +emit_32(1091140101); +emit_32(3277504512); +emit_32(1132068864); +emit_32(1093070540); +emit_32(3277504512); +emit_32(1081737216); +emit_32(1095782787); +emit_32(3277760496); +emit_32(1090125824); +emit_32(1095949510); +emit_32(3277760496); +emit_32(1094418484); +emit_32(1095197157); +emit_32(3277760496); +emit_32(1098514432); +emit_32(1093509684); +emit_32(3277760496); +emit_32(1100759066); +emit_32(1093932365); +emit_32(3277760496); +emit_32(1102807040); +emit_32(1094883004); +emit_32(3277760496); +emit_32(1104855066); +emit_32(1095364195); +emit_32(3277760496); +emit_32(1106903040); +emit_32(1095467794); +emit_32(3277760496); +emit_32(1108123661); +emit_32(1095382231); +emit_32(3277760496); +emit_32(1109147648); +emit_32(1095263532); +emit_32(3277760496); +emit_32(1110171661); +emit_32(1094240751); +emit_32(3277760496); +emit_32(1111195648); +emit_32(1093792485); +emit_32(3277760496); +emit_32(1112219661); +emit_32(1093773400); +emit_32(3277760496); +emit_32(1113243648); +emit_32(1093969799); +emit_32(3277760496); +emit_32(1114267661); +emit_32(1092613235); +emit_32(3277760496); +emit_32(1115291648); +emit_32(1091641803); +emit_32(3277760496); +emit_32(1116000263); +emit_32(1090223425); +emit_32(3277760496); +emit_32(1116512256); +emit_32(1086325449); +emit_32(3277760496); +emit_32(1117024263); +emit_32(1086748822); +emit_32(3277760496); +emit_32(1117536256); +emit_32(1088214081); +emit_32(3277760496); +emit_32(1118048263); +emit_32(1090683918); +emit_32(3277760496); +emit_32(1118560256); +emit_32(1091490273); +emit_32(3277760496); +emit_32(1119072263); +emit_32(1092135263); +emit_32(3277760496); +emit_32(1119584256); +emit_32(1090576429); +emit_32(3277760496); +emit_32(1120096263); +emit_32(1085919021); +emit_32(3277760496); +emit_32(1120608322); +emit_32(1084273260); +emit_32(3277760496); +emit_32(1121120289); +emit_32(1088748708); +emit_32(3277760496); +emit_32(1121632256); +emit_32(1091512618); +emit_32(3277760496); +emit_32(1122144223); +emit_32(1092476008); +emit_32(3277760496); +emit_32(1122656322); +emit_32(1093289483); +emit_32(3277760496); +emit_32(1123168289); +emit_32(1093443623); +emit_32(3277760496); +emit_32(1123680256); +emit_32(1093739846); +emit_32(3277760496); +emit_32(1124132848); +emit_32(1095381916); +emit_32(3277760496); +emit_32(1124388897); +emit_32(1095171886); +emit_32(3277760496); +emit_32(1124644880); +emit_32(1094833196); +emit_32(3277760496); +emit_32(1124900864); +emit_32(1094087134); +emit_32(3277760496); +emit_32(1125156848); +emit_32(1091517725); +emit_32(3277760496); +emit_32(1125412897); +emit_32(1088065624); +emit_32(3277760496); +emit_32(1125668880); +emit_32(1089789588); +emit_32(3277760496); +emit_32(1125924864); +emit_32(1090797741); +emit_32(3277760496); +emit_32(1126180848); +emit_32(1090448785); +emit_32(3277760496); +emit_32(1126436897); +emit_32(1089515972); +emit_32(3277760496); +emit_32(1126692880); +emit_32(1088794300); +emit_32(3277760496); +emit_32(1126948864); +emit_32(1086317606); +emit_32(3277760496); +emit_32(1127204848); +emit_32(1085853170); +emit_32(3277760496); +emit_32(1127460897); +emit_32(1083759395); +emit_32(3277760496); +emit_32(1127716880); +emit_32(1079594766); +emit_32(3277760496); +emit_32(1127972864); +emit_32(1077764623); +emit_32(3277760496); +emit_32(1128228848); +emit_32(1072514403); +emit_32(3277760496); +emit_32(1128484897); +emit_32(1067984303); +emit_32(3277760496); +emit_32(1128740880); +emit_32(1066412026); +emit_32(3277760496); +emit_32(1128996864); +emit_32(1069352569); +emit_32(3277760496); +emit_32(1129252848); +emit_32(1072856490); +emit_32(3277760496); +emit_32(1129508897); +emit_32(1059155041); +emit_32(3277760496); +emit_32(1129764880); +emit_32(1050172017); +emit_32(3277760496); +emit_32(1130020864); +emit_32(3157538945); +emit_32(3277760496); +emit_32(1130276848); +emit_32(3194387429); +emit_32(3277760496); +emit_32(1130532897); +emit_32(1059188931); +emit_32(3277760496); +emit_32(1130788880); +emit_32(1077509609); +emit_32(3277760496); +emit_32(1131044864); +emit_32(1085587356); +emit_32(3277760496); +emit_32(1131300848); +emit_32(1088891944); +emit_32(3277760496); +emit_32(1131556897); +emit_32(1090308297); +emit_32(3277760496); +emit_32(1131812880); +emit_32(1091359484); +emit_32(3277760496); +emit_32(1132068864); +emit_32(1093623035); +emit_32(3277760496); +emit_32(1081737216); +emit_32(1094685347); +emit_32(3278016545); +emit_32(1090125824); +emit_32(1095642592); +emit_32(3278016545); +emit_32(1094418484); +emit_32(1094847876); +emit_32(3278016545); +emit_32(1098514432); +emit_32(1093374732); +emit_32(3278016545); +emit_32(1100759066); +emit_32(1094384720); +emit_32(3278016545); +emit_32(1102807040); +emit_32(1095400371); +emit_32(3278016545); +emit_32(1104855066); +emit_32(1095484362); +emit_32(3278016545); +emit_32(1106903040); +emit_32(1094502790); +emit_32(3278016545); +emit_32(1108123661); +emit_32(1093875112); +emit_32(3278016545); +emit_32(1109147648); +emit_32(1093633206); +emit_32(3278016545); +emit_32(1110171661); +emit_32(1093418667); +emit_32(3278016545); +emit_32(1111195648); +emit_32(1093659211); +emit_32(3278016545); +emit_32(1112219661); +emit_32(1093957426); +emit_32(3278016545); +emit_32(1113243648); +emit_32(1093739846); +emit_32(3278016545); +emit_32(1114267661); +emit_32(1093359842); +emit_32(3278016545); +emit_32(1115291648); +emit_32(1091739111); +emit_32(3278016545); +emit_32(1116000263); +emit_32(1089668246); +emit_32(3278016545); +emit_32(1116512256); +emit_32(1087761327); +emit_32(3278016545); +emit_32(1117024263); +emit_32(1088382734); +emit_32(3278016545); +emit_32(1117536256); +emit_32(1089936850); +emit_32(3278016545); +emit_32(1118048263); +emit_32(1091570688); +emit_32(3278016545); +emit_32(1118560256); +emit_32(1092069527); +emit_32(3278016545); +emit_32(1119072263); +emit_32(1091509504); +emit_32(3278016545); +emit_32(1119584256); +emit_32(1090092228); +emit_32(3278016545); +emit_32(1120096263); +emit_32(1086488041); +emit_32(3278016545); +emit_32(1120608322); +emit_32(1087594478); +emit_32(3278016545); +emit_32(1121120289); +emit_32(1091111695); +emit_32(3278016545); +emit_32(1121632256); +emit_32(1092917028); +emit_32(3278016545); +emit_32(1122144223); +emit_32(1094162946); +emit_32(3278016545); +emit_32(1122656322); +emit_32(1094317402); +emit_32(3278016545); +emit_32(1123168289); +emit_32(1094797545); +emit_32(3278016545); +emit_32(1123680256); +emit_32(1095272759); +emit_32(3278016545); +emit_32(1124132848); +emit_32(1096382467); +emit_32(3278016545); +emit_32(1124388897); +emit_32(1095677824); +emit_32(3278016545); +emit_32(1124644880); +emit_32(1094211076); +emit_32(3278016545); +emit_32(1124900864); +emit_32(1093289168); +emit_32(3278016545); +emit_32(1125156848); +emit_32(1091399110); +emit_32(3278016545); +emit_32(1125412897); +emit_32(1091357282); +emit_32(3278016545); +emit_32(1125668880); +emit_32(1092084459); +emit_32(3278016545); +emit_32(1125924864); +emit_32(1092576409); +emit_32(3278016545); +emit_32(1126180848); +emit_32(1091310967); +emit_32(3278016545); +emit_32(1126436897); +emit_32(1089767358); +emit_32(3278016545); +emit_32(1126692880); +emit_32(1088833559); +emit_32(3278016545); +emit_32(1126948864); +emit_32(1088084855); +emit_32(3278016545); +emit_32(1127204848); +emit_32(1086548397); +emit_32(3278016545); +emit_32(1127460897); +emit_32(1083608358); +emit_32(3278016545); +emit_32(1127716880); +emit_32(1083278790); +emit_32(3278016545); +emit_32(1127972864); +emit_32(1080394661); +emit_32(3278016545); +emit_32(1128228848); +emit_32(1077852158); +emit_32(3278016545); +emit_32(1128484897); +emit_32(1069478650); +emit_32(3278016545); +emit_32(1128740880); +emit_32(1072553494); +emit_32(3278016545); +emit_32(1128996864); +emit_32(1069471100); +emit_32(3278016545); +emit_32(1129252848); +emit_32(1068704381); +emit_32(3278016545); +emit_32(1129508897); +emit_32(1063054771); +emit_32(3278016545); +emit_32(1129764880); +emit_32(1066657309); +emit_32(3278016545); +emit_32(1130020864); +emit_32(1058799582); +emit_32(3278016545); +emit_32(1130276848); +emit_32(1065716610); +emit_32(3278016545); +emit_32(1130532897); +emit_32(1070221796); +emit_32(3278016545); +emit_32(1130788880); +emit_32(1082372632); +emit_32(3278016545); +emit_32(1131044864); +emit_32(1085584357); +emit_32(3278016545); +emit_32(1131300848); +emit_32(1087618406); +emit_32(3278016545); +emit_32(1131556897); +emit_32(1089074731); +emit_32(3278016545); +emit_32(1131812880); +emit_32(1091116256); +emit_32(3278016545); +emit_32(1132068864); +emit_32(1093443623); +emit_32(3278016545); +emit_32(1081737216); +emit_32(1093100529); +emit_32(3278272528); +emit_32(1090125824); +emit_32(1094102968); +emit_32(3278272528); +emit_32(1094418484); +emit_32(1093438380); +emit_32(3278272528); +emit_32(1098514432); +emit_32(1093242192); +emit_32(3278272528); +emit_32(1100759066); +emit_32(1093664663); +emit_32(3278272528); +emit_32(1102807040); +emit_32(1094290978); +emit_32(3278272528); +emit_32(1104855066); +emit_32(1094142185); +emit_32(3278272528); +emit_32(1106903040); +emit_32(1092722622); +emit_32(3278272528); +emit_32(1108123661); +emit_32(1093048205); +emit_32(3278272528); +emit_32(1109147648); +emit_32(1092329868); +emit_32(3278272528); +emit_32(1110171661); +emit_32(1092322308); +emit_32(3278272528); +emit_32(1111195648); +emit_32(1093430621); +emit_32(3278272528); +emit_32(1112219661); +emit_32(1093536317); +emit_32(3278272528); +emit_32(1113243648); +emit_32(1092950268); +emit_32(3278272528); +emit_32(1114267661); +emit_32(1093055336); +emit_32(3278272528); +emit_32(1115291648); +emit_32(1091513918); +emit_32(3278272528); +emit_32(1116000263); +emit_32(1090353428); +emit_32(3278272528); +emit_32(1116512256); +emit_32(1091025450); +emit_32(3278272528); +emit_32(1117024263); +emit_32(1091303186); +emit_32(3278272528); +emit_32(1117536256); +emit_32(1091441535); +emit_32(3278272528); +emit_32(1118048263); +emit_32(1092287275); +emit_32(3278272528); +emit_32(1118560256); +emit_32(1092144259); +emit_32(3278272528); +emit_32(1119072263); +emit_32(1091616102); +emit_32(3278272528); +emit_32(1119584256); +emit_32(1091037110); +emit_32(3278272528); +emit_32(1120096263); +emit_32(1090309493); +emit_32(3278272528); +emit_32(1120608322); +emit_32(1091784220); +emit_32(3278272528); +emit_32(1121120289); +emit_32(1093152434); +emit_32(3278272528); +emit_32(1121632256); +emit_32(1094218836); +emit_32(3278272528); +emit_32(1122144223); +emit_32(1094752980); +emit_32(3278272528); +emit_32(1122656322); +emit_32(1095698796); +emit_32(3278272528); +emit_32(1123168289); +emit_32(1095918053); +emit_32(3278272528); +emit_32(1123680256); +emit_32(1096702912); +emit_32(3278272528); +emit_32(1124132848); +emit_32(1097339817); +emit_32(3278272528); +emit_32(1124388897); +emit_32(1095953075); +emit_32(3278272528); +emit_32(1124644880); +emit_32(1094317611); +emit_32(3278272528); +emit_32(1124900864); +emit_32(1093780950); +emit_32(3278272528); +emit_32(1125156848); +emit_32(1092660022); +emit_32(3278272528); +emit_32(1125412897); +emit_32(1092828633); +emit_32(3278272528); +emit_32(1125668880); +emit_32(1093621252); +emit_32(3278272528); +emit_32(1125924864); +emit_32(1093691821); +emit_32(3278272528); +emit_32(1126180848); +emit_32(1092496151); +emit_32(3278272528); +emit_32(1126436897); +emit_32(1091489371); +emit_32(3278272528); +emit_32(1126692880); +emit_32(1090315742); +emit_32(3278272528); +emit_32(1126948864); +emit_32(1088919605); +emit_32(3278272528); +emit_32(1127204848); +emit_32(1086524028); +emit_32(3278272528); +emit_32(1127460897); +emit_32(1084543520); +emit_32(3278272528); +emit_32(1127716880); +emit_32(1083661479); +emit_32(3278272528); +emit_32(1127972864); +emit_32(1082237198); +emit_32(3278272528); +emit_32(1128228848); +emit_32(1078013052); +emit_32(3278272528); +emit_32(1128484897); +emit_32(1072342353); +emit_32(3278272528); +emit_32(1128740880); +emit_32(1077011074); +emit_32(3278272528); +emit_32(1128996864); +emit_32(1078172393); +emit_32(3278272528); +emit_32(1129252848); +emit_32(1074035719); +emit_32(3278272528); +emit_32(1129508897); +emit_32(1073825416); +emit_32(3278272528); +emit_32(1129764880); +emit_32(1074307678); +emit_32(3278272528); +emit_32(1130020864); +emit_32(1070873927); +emit_32(3278272528); +emit_32(1130276848); +emit_32(1072403002); +emit_32(3278272528); +emit_32(1130532897); +emit_32(1077025838); +emit_32(3278272528); +emit_32(1130788880); +emit_32(1081902304); +emit_32(3278272528); +emit_32(1131044864); +emit_32(1085968619); +emit_32(3278272528); +emit_32(1131300848); +emit_32(1088231676); +emit_32(3278272528); +emit_32(1131556897); +emit_32(1090439956); +emit_32(3278272528); +emit_32(1131812880); +emit_32(1089744184); +emit_32(3278272528); +emit_32(1132068864); +emit_32(1092872988); +emit_32(3278272528); +emit_32(1081737216); +emit_32(1091412678); +emit_32(3278528512); +emit_32(1090125824); +emit_32(1091988504); +emit_32(3278528512); +emit_32(1094418484); +emit_32(1092226269); +emit_32(3278528512); +emit_32(1098514432); +emit_32(1092585521); +emit_32(3278528512); +emit_32(1100759066); +emit_32(1092575014); +emit_32(3278528512); +emit_32(1102807040); +emit_32(1092307292); +emit_32(3278528512); +emit_32(1104855066); +emit_32(1092661805); +emit_32(3278528512); +emit_32(1106903040); +emit_32(1092468123); +emit_32(3278528512); +emit_32(1108123661); +emit_32(1092120016); +emit_32(3278528512); +emit_32(1109147648); +emit_32(1091309048); +emit_32(3278528512); +emit_32(1110171661); +emit_32(1091564323); +emit_32(3278528512); +emit_32(1111195648); +emit_32(1092158059); +emit_32(3278528512); +emit_32(1112219661); +emit_32(1092138943); +emit_32(3278528512); +emit_32(1113243648); +emit_32(1092639785); +emit_32(3278528512); +emit_32(1114267661); +emit_32(1092158950); +emit_32(3278528512); +emit_32(1115291648); +emit_32(1091761330); +emit_32(3278528512); +emit_32(1116000263); +emit_32(1091873884); +emit_32(3278528512); +emit_32(1116512256); +emit_32(1093128002); +emit_32(3278528512); +emit_32(1117024263); +emit_32(1093545755); +emit_32(3278528512); +emit_32(1117536256); +emit_32(1093685844); +emit_32(3278528512); +emit_32(1118048263); +emit_32(1094474478); +emit_32(3278528512); +emit_32(1118560256); +emit_32(1093835057); +emit_32(3278528512); +emit_32(1119072263); +emit_32(1093247435); +emit_32(3278528512); +emit_32(1119584256); +emit_32(1092545770); +emit_32(3278528512); +emit_32(1120096263); +emit_32(1092881691); +emit_32(3278528512); +emit_32(1120608322); +emit_32(1093753687); +emit_32(3278528512); +emit_32(1121120289); +emit_32(1095402888); +emit_32(3278528512); +emit_32(1121632256); +emit_32(1096263454); +emit_32(3278528512); +emit_32(1122144223); +emit_32(1097648518); +emit_32(3278528512); +emit_32(1122656322); +emit_32(1098257845); +emit_32(3278528512); +emit_32(1123168289); +emit_32(1098906075); +emit_32(3278528512); +emit_32(1123680256); +emit_32(1097757884); +emit_32(3278528512); +emit_32(1124132848); +emit_32(1097095184); +emit_32(3278528512); +emit_32(1124388897); +emit_32(1096820772); +emit_32(3278528512); +emit_32(1124644880); +emit_32(1095881563); +emit_32(3278528512); +emit_32(1124900864); +emit_32(1095322462); +emit_32(3278528512); +emit_32(1125156848); +emit_32(1094560881); +emit_32(3278528512); +emit_32(1125412897); +emit_32(1094212020); +emit_32(3278528512); +emit_32(1125668880); +emit_32(1094591919); +emit_32(3278528512); +emit_32(1125924864); +emit_32(1094354836); +emit_32(3278528512); +emit_32(1126180848); +emit_32(1093487244); +emit_32(3278528512); +emit_32(1126436897); +emit_32(1092900566); +emit_32(3278528512); +emit_32(1126692880); +emit_32(1091131859); +emit_32(3278528512); +emit_32(1126948864); +emit_32(1088434303); +emit_32(3278528512); +emit_32(1127204848); +emit_32(1085602330); +emit_32(3278528512); +emit_32(1127460897); +emit_32(1084383381); +emit_32(3278528512); +emit_32(1127716880); +emit_32(1082990348); +emit_32(3278528512); +emit_32(1127972864); +emit_32(1081942359); +emit_32(3278528512); +emit_32(1128228848); +emit_32(1079707928); +emit_32(3278528512); +emit_32(1128484897); +emit_32(1076020757); +emit_32(3278528512); +emit_32(1128740880); +emit_32(1081959766); +emit_32(3278528512); +emit_32(1128996864); +emit_32(1081769302); +emit_32(3278528512); +emit_32(1129252848); +emit_32(1077543709); +emit_32(3278528512); +emit_32(1129508897); +emit_32(1078419522); +emit_32(3278528512); +emit_32(1129764880); +emit_32(1079325911); +emit_32(3278528512); +emit_32(1130020864); +emit_32(1076435784); +emit_32(3278528512); +emit_32(1130276848); +emit_32(1076442830); +emit_32(3278528512); +emit_32(1130532897); +emit_32(1078716269); +emit_32(3278528512); +emit_32(1130788880); +emit_32(1083099337); +emit_32(3278528512); +emit_32(1131044864); +emit_32(1086173385); +emit_32(3278528512); +emit_32(1131300848); +emit_32(1088001787); +emit_32(3278528512); +emit_32(1131556897); +emit_32(1091260069); +emit_32(3278528512); +emit_32(1131812880); +emit_32(1091015247); +emit_32(3278528512); +emit_32(1132068864); +emit_32(1093018740); +emit_32(3278528512); +emit_32(1081737216); +emit_32(1090509120); +emit_32(3278784496); +emit_32(1090125824); +emit_32(1091171244); +emit_32(3278784496); +emit_32(1094418484); +emit_32(1091637818); +emit_32(3278784496); +emit_32(1098514432); +emit_32(1091699621); +emit_32(3278784496); +emit_32(1100759066); +emit_32(1091545869); +emit_32(3278784496); +emit_32(1102807040); +emit_32(1092355642); +emit_32(3278784496); +emit_32(1104855066); +emit_32(1092176189); +emit_32(3278784496); +emit_32(1106903040); +emit_32(1091883961); +emit_32(3278784496); +emit_32(1108123661); +emit_32(1091185924); +emit_32(3278784496); +emit_32(1109147648); +emit_32(1091284217); +emit_32(3278784496); +emit_32(1110171661); +emit_32(1091038221); +emit_32(3278784496); +emit_32(1111195648); +emit_32(1091340725); +emit_32(3278784496); +emit_32(1112219661); +emit_32(1091305944); +emit_32(3278784496); +emit_32(1113243648); +emit_32(1091527623); +emit_32(3278784496); +emit_32(1114267661); +emit_32(1092680260); +emit_32(3278784496); +emit_32(1115291648); +emit_32(1093798461); +emit_32(3278784496); +emit_32(1116000263); +emit_32(1093476968); +emit_32(3278784496); +emit_32(1116512256); +emit_32(1094724669); +emit_32(3278784496); +emit_32(1117024263); +emit_32(1095984847); +emit_32(3278784496); +emit_32(1117536256); +emit_32(1096949223); +emit_32(3278784496); +emit_32(1118048263); +emit_32(1097185362); +emit_32(3278784496); +emit_32(1118560256); +emit_32(1096053529); +emit_32(3278784496); +emit_32(1119072263); +emit_32(1095554721); +emit_32(3278784496); +emit_32(1119584256); +emit_32(1094764095); +emit_32(3278784496); +emit_32(1120096263); +emit_32(1095516239); +emit_32(3278784496); +emit_32(1120608322); +emit_32(1096842687); +emit_32(3278784496); +emit_32(1121120289); +emit_32(1098862245); +emit_32(3278784496); +emit_32(1121632256); +emit_32(1099841038); +emit_32(3278784496); +emit_32(1122144223); +emit_32(1100521249); +emit_32(3278784496); +emit_32(1122656322); +emit_32(1100352324); +emit_32(3278784496); +emit_32(1123168289); +emit_32(1100382418); +emit_32(3278784496); +emit_32(1123680256); +emit_32(1099683961); +emit_32(3278784496); +emit_32(1124132848); +emit_32(1099118517); +emit_32(3278784496); +emit_32(1124388897); +emit_32(1098912891); +emit_32(3278784496); +emit_32(1124644880); +emit_32(1098053268); +emit_32(3278784496); +emit_32(1124900864); +emit_32(1096737201); +emit_32(3278784496); +emit_32(1125156848); +emit_32(1095640390); +emit_32(3278784496); +emit_32(1125412897); +emit_32(1094410096); +emit_32(3278784496); +emit_32(1125668880); +emit_32(1094098878); +emit_32(3278784496); +emit_32(1125924864); +emit_32(1093723488); +emit_32(3278784496); +emit_32(1126180848); +emit_32(1093527195); +emit_32(3278784496); +emit_32(1126436897); +emit_32(1093210944); +emit_32(3278784496); +emit_32(1126692880); +emit_32(1092714548); +emit_32(3278784496); +emit_32(1126948864); +emit_32(1089965455); +emit_32(3278784496); +emit_32(1127204848); +emit_32(1086218431); +emit_32(3278784496); +emit_32(1127460897); +emit_32(1085307869); +emit_32(3278784496); +emit_32(1127716880); +emit_32(1084803231); +emit_32(3278784496); +emit_32(1127972864); +emit_32(1084117756); +emit_32(3278784496); +emit_32(1128228848); +emit_32(1082406438); +emit_32(3278784496); +emit_32(1128484897); +emit_32(1080428635); +emit_32(3278784496); +emit_32(1128740880); +emit_32(1082196765); +emit_32(3278784496); +emit_32(1128996864); +emit_32(1082931292); +emit_32(3278784496); +emit_32(1129252848); +emit_32(1078353839); +emit_32(3278784496); +emit_32(1129508897); +emit_32(1078676842); +emit_32(3278784496); +emit_32(1129764880); +emit_32(1078175832); +emit_32(3278784496); +emit_32(1130020864); +emit_32(1078788788); +emit_32(3278784496); +emit_32(1130276848); +emit_32(1075988503); +emit_32(3278784496); +emit_32(1130532897); +emit_32(1078470902); +emit_32(3278784496); +emit_32(1130788880); +emit_32(1083278329); +emit_32(3278784496); +emit_32(1131044864); +emit_32(1086190728); +emit_32(3278784496); +emit_32(1131300848); +emit_32(1088421406); +emit_32(3278784496); +emit_32(1131556897); +emit_32(1090737280); +emit_32(3278784496); +emit_32(1131812880); +emit_32(1092161257); +emit_32(3278784496); +emit_32(1132068864); +emit_32(1094162946); +emit_32(3278784496); +emit_32(1081737216); +emit_32(1087170664); +emit_32(3279040545); +emit_32(1090125824); +emit_32(1090282922); +emit_32(3279040545); +emit_32(1094418484); +emit_32(1091155117); +emit_32(3279040545); +emit_32(1098514432); +emit_32(1091115921); +emit_32(3279040545); +emit_32(1100759066); +emit_32(1091154351); +emit_32(3279040545); +emit_32(1102807040); +emit_32(1091182076); +emit_32(3279040545); +emit_32(1104855066); +emit_32(1090880379); +emit_32(3279040545); +emit_32(1106903040); +emit_32(1089488437); +emit_32(3279040545); +emit_32(1108123661); +emit_32(1089764611); +emit_32(3279040545); +emit_32(1109147648); +emit_32(1090012599); +emit_32(3279040545); +emit_32(1110171661); +emit_32(1089610386); +emit_32(3279040545); +emit_32(1111195648); +emit_32(1090497943); +emit_32(3279040545); +emit_32(1112219661); +emit_32(1092221833); +emit_32(3279040545); +emit_32(1113243648); +emit_32(1091868673); +emit_32(3279040545); +emit_32(1114267661); +emit_32(1093013812); +emit_32(3279040545); +emit_32(1115291648); +emit_32(1093957635); +emit_32(3279040545); +emit_32(1116000263); +emit_32(1095032950); +emit_32(3279040545); +emit_32(1116512256); +emit_32(1096314729); +emit_32(3279040545); +emit_32(1117024263); +emit_32(1097345375); +emit_32(3279040545); +emit_32(1117536256); +emit_32(1098078329); +emit_32(3279040545); +emit_32(1118048263); +emit_32(1098803524); +emit_32(3279040545); +emit_32(1118560256); +emit_32(1098341522); +emit_32(3279040545); +emit_32(1119072263); +emit_32(1097352715); +emit_32(3279040545); +emit_32(1119584256); +emit_32(1097048103); +emit_32(3279040545); +emit_32(1120096263); +emit_32(1096764149); +emit_32(3279040545); +emit_32(1120608322); +emit_32(1098722469); +emit_32(3279040545); +emit_32(1121120289); +emit_32(1100309647); +emit_32(3279040545); +emit_32(1121632256); +emit_32(1101387321); +emit_32(3279040545); +emit_32(1122144223); +emit_32(1101809739); +emit_32(3279040545); +emit_32(1122656322); +emit_32(1101519703); +emit_32(3279040545); +emit_32(1123168289); +emit_32(1101121821); +emit_32(3279040545); +emit_32(1123680256); +emit_32(1100240545); +emit_32(3279040545); +emit_32(1124132848); +emit_32(1099882352); +emit_32(3279040545); +emit_32(1124388897); +emit_32(1099784048); +emit_32(3279040545); +emit_32(1124644880); +emit_32(1099378563); +emit_32(3279040545); +emit_32(1124900864); +emit_32(1097709545); +emit_32(3279040545); +emit_32(1125156848); +emit_32(1095839095); +emit_32(3279040545); +emit_32(1125412897); +emit_32(1095221589); +emit_32(3279040545); +emit_32(1125668880); +emit_32(1094514219); +emit_32(3279040545); +emit_32(1125924864); +emit_32(1094489263); +emit_32(3279040545); +emit_32(1126180848); +emit_32(1094114397); +emit_32(3279040545); +emit_32(1126436897); +emit_32(1093523525); +emit_32(3279040545); +emit_32(1126692880); +emit_32(1092364020); +emit_32(3279040545); +emit_32(1126948864); +emit_32(1090657578); +emit_32(3279040545); +emit_32(1127204848); +emit_32(1088250991); +emit_32(3279040545); +emit_32(1127460897); +emit_32(1086186701); +emit_32(3279040545); +emit_32(1127716880); +emit_32(1085899685); +emit_32(3279040545); +emit_32(1127972864); +emit_32(1085922502); +emit_32(3279040545); +emit_32(1128228848); +emit_32(1083915444); +emit_32(3279040545); +emit_32(1128484897); +emit_32(1082705891); +emit_32(3279040545); +emit_32(1128740880); +emit_32(1082612966); +emit_32(3279040545); +emit_32(1128996864); +emit_32(1082123763); +emit_32(3279040545); +emit_32(1129252848); +emit_32(1079957992); +emit_32(3279040545); +emit_32(1129508897); +emit_32(1080918362); +emit_32(3279040545); +emit_32(1129764880); +emit_32(1080150846); +emit_32(3279040545); +emit_32(1130020864); +emit_32(1079666824); +emit_32(3279040545); +emit_32(1130276848); +emit_32(1075451758); +emit_32(3279040545); +emit_32(1130532897); +emit_32(1079618505); +emit_32(3279040545); +emit_32(1130788880); +emit_32(1083212437); +emit_32(3279040545); +emit_32(1131044864); +emit_32(1086243597); +emit_32(3279040545); +emit_32(1131300848); +emit_32(1089861499); +emit_32(3279040545); +emit_32(1131556897); +emit_32(1091090891); +emit_32(3279040545); +emit_32(1131812880); +emit_32(1092085392); +emit_32(3279040545); +emit_32(1132068864); +emit_32(1094769128); +emit_32(3279040545); +emit_32(1081737216); +emit_32(1086522393); +emit_32(3279296528); +emit_32(1090125824); +emit_32(1089733279); +emit_32(3279296528); +emit_32(1094418484); +emit_32(1090866549); +emit_32(3279296528); +emit_32(1098514432); +emit_32(1091166221); +emit_32(3279296528); +emit_32(1100759066); +emit_32(1091316692); +emit_32(3279296528); +emit_32(1102807040); +emit_32(1090303012); +emit_32(3279296528); +emit_32(1104855066); +emit_32(1090054898); +emit_32(3279296528); +emit_32(1106903040); +emit_32(1089282496); +emit_32(3279296528); +emit_32(1108123661); +emit_32(1087524370); +emit_32(3279296528); +emit_32(1109147648); +emit_32(1086986471); +emit_32(3279296528); +emit_32(1110171661); +emit_32(1089941925); +emit_32(3279296528); +emit_32(1111195648); +emit_32(1091445195); +emit_32(3279296528); +emit_32(1112219661); +emit_32(1092661595); +emit_32(3279296528); +emit_32(1113243648); +emit_32(1093449286); +emit_32(3279296528); +emit_32(1114267661); +emit_32(1094451829); +emit_32(3279296528); +emit_32(1115291648); +emit_32(1095908406); +emit_32(3279296528); +emit_32(1116000263); +emit_32(1095897606); +emit_32(3279296528); +emit_32(1116512256); +emit_32(1097742156); +emit_32(3279296528); +emit_32(1117024263); +emit_32(1098429917); +emit_32(3279296528); +emit_32(1117536256); +emit_32(1099162819); +emit_32(3279296528); +emit_32(1118048263); +emit_32(1099463446); +emit_32(3279296528); +emit_32(1118560256); +emit_32(1099555196); +emit_32(3279296528); +emit_32(1119072263); +emit_32(1099132672); +emit_32(3279296528); +emit_32(1119584256); +emit_32(1099075420); +emit_32(3279296528); +emit_32(1120096263); +emit_32(1099448871); +emit_32(3279296528); +emit_32(1120608322); +emit_32(1099721553); +emit_32(3279296528); +emit_32(1121120289); +emit_32(1101033321); +emit_32(3279296528); +emit_32(1121632256); +emit_32(1101927337); +emit_32(3279296528); +emit_32(1122144223); +emit_32(1102231686); +emit_32(3279296528); +emit_32(1122656322); +emit_32(1102467092); +emit_32(3279296528); +emit_32(1123168289); +emit_32(1101898711); +emit_32(3279296528); +emit_32(1123680256); +emit_32(1101260390); +emit_32(3279296528); +emit_32(1124132848); +emit_32(1100638480); +emit_32(3279296528); +emit_32(1124388897); +emit_32(1100231685); +emit_32(3279296528); +emit_32(1124644880); +emit_32(1099651036); +emit_32(3279296528); +emit_32(1124900864); +emit_32(1097614020); +emit_32(3279296528); +emit_32(1125156848); +emit_32(1096696726); +emit_32(3279296528); +emit_32(1125412897); +emit_32(1094775629); +emit_32(3279296528); +emit_32(1125668880); +emit_32(1094539595); +emit_32(3279296528); +emit_32(1125924864); +emit_32(1095046372); +emit_32(3279296528); +emit_32(1126180848); +emit_32(1095477441); +emit_32(3279296528); +emit_32(1126436897); +emit_32(1093641594); +emit_32(3279296528); +emit_32(1126692880); +emit_32(1092818357); +emit_32(3279296528); +emit_32(1126948864); +emit_32(1090737490); +emit_32(3279296528); +emit_32(1127204848); +emit_32(1089918898); +emit_32(3279296528); +emit_32(1127460897); +emit_32(1089673426); +emit_32(3279296528); +emit_32(1127716880); +emit_32(1088381686); +emit_32(3279296528); +emit_32(1127972864); +emit_32(1088024583); +emit_32(3279296528); +emit_32(1128228848); +emit_32(1086615842); +emit_32(3279296528); +emit_32(1128484897); +emit_32(1083021134); +emit_32(3279296528); +emit_32(1128740880); +emit_32(1082006448); +emit_32(3279296528); +emit_32(1128996864); +emit_32(1082259554); +emit_32(3279296528); +emit_32(1129252848); +emit_32(1081019948); +emit_32(3279296528); +emit_32(1129508897); +emit_32(1083076688); +emit_32(3279296528); +emit_32(1129764880); +emit_32(1079712290); +emit_32(3279296528); +emit_32(1130020864); +emit_32(1076696460); +emit_32(3279296528); +emit_32(1130276848); +emit_32(1081628248); +emit_32(3279296528); +emit_32(1130532897); +emit_32(1083251486); +emit_32(3279296528); +emit_32(1130788880); +emit_32(1085680051); +emit_32(3279296528); +emit_32(1131044864); +emit_32(1086814757); +emit_32(3279296528); +emit_32(1131300848); +emit_32(1089239043); +emit_32(3279296528); +emit_32(1131556897); +emit_32(1091530717); +emit_32(3279296528); +emit_32(1131812880); +emit_32(1093644321); +emit_32(3279296528); +emit_32(1132068864); +emit_32(1095779536); +emit_32(3279296528); +emit_32(1081737216); +emit_32(1086994839); +emit_32(3279552512); +emit_32(1090125824); +emit_32(1088197052); +emit_32(3279552512); +emit_32(1094418484); +emit_32(1091183439); +emit_32(3279552512); +emit_32(1098514432); +emit_32(1091864132); +emit_32(3279552512); +emit_32(1100759066); +emit_32(1091623966); +emit_32(3279552512); +emit_32(1102807040); +emit_32(1091056907); +emit_32(3279552512); +emit_32(1104855066); +emit_32(1090799639); +emit_32(3279552512); +emit_32(1106903040); +emit_32(1090240475); +emit_32(3279552512); +emit_32(1108123661); +emit_32(1087500672); +emit_32(3279552512); +emit_32(1109147648); +emit_32(1087952231); +emit_32(3279552512); +emit_32(1110171661); +emit_32(1091227636); +emit_32(3279552512); +emit_32(1111195648); +emit_32(1092866173); +emit_32(3279552512); +emit_32(1112219661); +emit_32(1094198074); +emit_32(3279552512); +emit_32(1113243648); +emit_32(1095474505); +emit_32(3279552512); +emit_32(1114267661); +emit_32(1097295462); +emit_32(3279552512); +emit_32(1115291648); +emit_32(1098629985); +emit_32(3279552512); +emit_32(1116000263); +emit_32(1098063859); +emit_32(3279552512); +emit_32(1116512256); +emit_32(1098990748); +emit_32(3279552512); +emit_32(1117024263); +emit_32(1099487406); +emit_32(3279552512); +emit_32(1117536256); +emit_32(1099589956); +emit_32(3279552512); +emit_32(1118048263); +emit_32(1100319660); +emit_32(3279552512); +emit_32(1118560256); +emit_32(1100278032); +emit_32(3279552512); +emit_32(1119072263); +emit_32(1099978821); +emit_32(3279552512); +emit_32(1119584256); +emit_32(1100109840); +emit_32(3279552512); +emit_32(1120096263); +emit_32(1100236089); +emit_32(3279552512); +emit_32(1120608322); +emit_32(1100377385); +emit_32(3279552512); +emit_32(1121120289); +emit_32(1102160173); +emit_32(3279552512); +emit_32(1121632256); +emit_32(1103122924); +emit_32(3279552512); +emit_32(1122144223); +emit_32(1103474721); +emit_32(3279552512); +emit_32(1122656322); +emit_32(1103248805); +emit_32(3279552512); +emit_32(1123168289); +emit_32(1102632819); +emit_32(3279552512); +emit_32(1123680256); +emit_32(1102047399); +emit_32(3279552512); +emit_32(1124132848); +emit_32(1101668391); +emit_32(3279552512); +emit_32(1124388897); +emit_32(1100761740); +emit_32(3279552512); +emit_32(1124644880); +emit_32(1100232943); +emit_32(3279552512); +emit_32(1124900864); +emit_32(1098887306); +emit_32(3279552512); +emit_32(1125156848); +emit_32(1097709860); +emit_32(3279552512); +emit_32(1125412897); +emit_32(1096144126); +emit_32(3279552512); +emit_32(1125668880); +emit_32(1095560803); +emit_32(3279552512); +emit_32(1125924864); +emit_32(1096148740); +emit_32(3279552512); +emit_32(1126180848); +emit_32(1095494428); +emit_32(3279552512); +emit_32(1126436897); +emit_32(1093780950); +emit_32(3279552512); +emit_32(1126692880); +emit_32(1092196667); +emit_32(3279552512); +emit_32(1126948864); +emit_32(1091446736); +emit_32(3279552512); +emit_32(1127204848); +emit_32(1090928352); +emit_32(3279552512); +emit_32(1127460897); +emit_32(1090343508); +emit_32(3279552512); +emit_32(1127716880); +emit_32(1089285495); +emit_32(3279552512); +emit_32(1127972864); +emit_32(1088381665); +emit_32(3279552512); +emit_32(1128228848); +emit_32(1088857949); +emit_32(3279552512); +emit_32(1128484897); +emit_32(1086741545); +emit_32(3279552512); +emit_32(1128740880); +emit_32(1082250913); +emit_32(3279552512); +emit_32(1128996864); +emit_32(1083512120); +emit_32(3279552512); +emit_32(1129252848); +emit_32(1081116417); +emit_32(3279552512); +emit_32(1129508897); +emit_32(1082497517); +emit_32(3279552512); +emit_32(1129764880); +emit_32(1082917200); +emit_32(3279552512); +emit_32(1130020864); +emit_32(1083584702); +emit_32(3279552512); +emit_32(1130276848); +emit_32(1086066325); +emit_32(3279552512); +emit_32(1130532897); +emit_32(1086918125); +emit_32(3279552512); +emit_32(1130788880); +emit_32(1088867533); +emit_32(3279552512); +emit_32(1131044864); +emit_32(1089594720); +emit_32(3279552512); +emit_32(1131300848); +emit_32(1090391575); +emit_32(3279552512); +emit_32(1131556897); +emit_32(1092483358); +emit_32(3279552512); +emit_32(1131812880); +emit_32(1094289405); +emit_32(3279552512); +emit_32(1132068864); +emit_32(1096120323); +emit_32(3279552512); +emit_start(Landscape08Vtx) +emit_32(3279552512); +emit_32(1106761482); +emit_32(3271616496); +emit_32(3279552512); +emit_32(1106982994); +emit_32(3271163904); +emit_32(3279296528); +emit_32(1107171947); +emit_32(3271616496); +emit_32(3279296528); +emit_32(1106990334); +emit_32(3271163904); +emit_32(3279040545); +emit_32(1107445390); +emit_32(3271616496); +emit_32(3279040545); +emit_32(1107378569); +emit_32(3271163904); +emit_32(3278784496); +emit_32(1107535462); +emit_32(3271616496); +emit_32(3278784496); +emit_32(1107553734); +emit_32(3271163904); +emit_32(3278528512); +emit_32(1107451314); +emit_32(3271616496); +emit_32(3278528512); +emit_32(1107478761); +emit_32(3271163904); +emit_32(3278272528); +emit_32(1106913945); +emit_32(3271616496); +emit_32(3278272528); +emit_32(1106962389); +emit_32(3271163904); +emit_32(3278016545); +emit_32(1106520939); +emit_32(3271616496); +emit_32(3278016545); +emit_32(1105953607); +emit_32(3271163904); +emit_32(3277760496); +emit_32(1106354163); +emit_32(3271616496); +emit_32(3277760496); +emit_32(1105995497); +emit_32(3271163904); +emit_32(3277504512); +emit_32(1106487909); +emit_32(3271616496); +emit_32(3277504512); +emit_32(1105958325); +emit_32(3271163904); +emit_32(3277248528); +emit_32(1106611588); +emit_32(3271616496); +emit_32(3277248528); +emit_32(1106168041); +emit_32(3271163904); +emit_32(3276992545); +emit_32(1106511659); +emit_32(3271616496); +emit_32(3276992545); +emit_32(1106461590); +emit_32(3271163904); +emit_32(3276736496); +emit_32(1106390601); +emit_32(3271616496); +emit_32(3276736496); +emit_32(1106400248); +emit_32(3271163904); +emit_32(3276480512); +emit_32(1105922621); +emit_32(3271616496); +emit_32(3276480512); +emit_32(1105590904); +emit_32(3271163904); +emit_32(3276224528); +emit_32(1105564690); +emit_32(3271616496); +emit_32(3276224528); +emit_32(1105294315); +emit_32(3271163904); +emit_32(3275968545); +emit_32(1105186941); +emit_32(3271616496); +emit_32(3275968545); +emit_32(1104823661); +emit_32(3271163904); +emit_32(3275712496); +emit_32(1104211817); +emit_32(3271616496); +emit_32(3275712496); +emit_32(1103994185); +emit_32(3271163904); +emit_32(3275456512); +emit_32(1103031068); +emit_32(3271616496); +emit_32(3275456512); +emit_32(1102728764); +emit_32(3271163904); +emit_32(3275200528); +emit_32(1102027162); +emit_32(3271616496); +emit_32(3275200528); +emit_32(1102137996); +emit_32(3271163904); +emit_32(3274944545); +emit_32(1100836923); +emit_32(3271616496); +emit_32(3274944545); +emit_32(1101349782); +emit_32(3271163904); +emit_32(3274688496); +emit_32(1099615804); +emit_32(3271616496); +emit_32(3274688496); +emit_32(1100398356); +emit_32(3271163904); +emit_32(3274432512); +emit_32(1098688915); +emit_32(3271616496); +emit_32(3274432512); +emit_32(1099098489); +emit_32(3271163904); +emit_32(3274176528); +emit_32(1097203188); +emit_32(3271616496); +emit_32(3274176528); +emit_32(1097575747); +emit_32(3271163904); +emit_32(3273920545); +emit_32(1095228300); +emit_32(3271616496); +emit_32(3273920545); +emit_32(1095747135); +emit_32(3271163904); +emit_32(3273664496); +emit_32(1093720657); +emit_32(3271616496); +emit_32(3273664496); +emit_32(1094011427); +emit_32(3271163904); +emit_32(3273408512); +emit_32(1091725553); +emit_32(3271616496); +emit_32(3273408512); +emit_32(1092817099); +emit_32(3271163904); +emit_32(3273152528); +emit_32(1087752037); +emit_32(3271616496); +emit_32(3273152528); +emit_32(1090935010); +emit_32(3271163904); +emit_32(3272896545); +emit_32(1085425309); +emit_32(3271616496); +emit_32(3272896545); +emit_32(1086813205); +emit_32(3271163904); +emit_32(3272640496); +emit_32(1084703847); +emit_32(3271616496); +emit_32(3272640496); +emit_32(1085254874); +emit_32(3271163904); +emit_32(3272384512); +emit_32(1086064186); +emit_32(3271616496); +emit_32(3272384512); +emit_32(1084610859); +emit_32(3271163904); +emit_32(3272128528); +emit_32(1088120192); +emit_32(3271616496); +emit_32(3272128528); +emit_32(1085403226); +emit_32(3271163904); +emit_32(3271872545); +emit_32(1088130111); +emit_32(3271616496); +emit_32(3271872545); +emit_32(1085803741); +emit_32(3271163904); +emit_32(3271616496); +emit_32(1088638754); +emit_32(3271616496); +emit_32(3271616496); +emit_32(1084901902); +emit_32(3271163904); +emit_32(3271163904); +emit_32(1089569596); +emit_32(3271616496); +emit_32(3271163904); +emit_32(1086653402); +emit_32(3271163904); +emit_32(3270651937); +emit_32(1090542371); +emit_32(3271616496); +emit_32(3270651937); +emit_32(1089541201); +emit_32(3271163904); +emit_32(3270139970); +emit_32(1091253725); +emit_32(3271616496); +emit_32(3270139970); +emit_32(1090924587); +emit_32(3271163904); +emit_32(3269627871); +emit_32(1091983785); +emit_32(3271616496); +emit_32(3269627871); +emit_32(1091193002); +emit_32(3271163904); +emit_32(3269115904); +emit_32(1091362609); +emit_32(3271616496); +emit_32(3269115904); +emit_32(1091042709); +emit_32(3271163904); +emit_32(3268603937); +emit_32(1092022341); +emit_32(3271616496); +emit_32(3268603937); +emit_32(1091824318); +emit_32(3271163904); +emit_32(3268091970); +emit_32(1093526356); +emit_32(3271616496); +emit_32(3268091970); +emit_32(1094207721); +emit_32(3271163904); +emit_32(3267579911); +emit_32(1095594567); +emit_32(3271616496); +emit_32(3267579911); +emit_32(1096193199); +emit_32(3271163904); +emit_32(3267067904); +emit_32(1097671796); +emit_32(3271616496); +emit_32(3267067904); +emit_32(1098383045); +emit_32(3271163904); +emit_32(3266555911); +emit_32(1099231658); +emit_32(3271616496); +emit_32(3266555911); +emit_32(1099615542); +emit_32(3271163904); +emit_32(3266043904); +emit_32(1101135662); +emit_32(3271616496); +emit_32(3266043904); +emit_32(1101433038); +emit_32(3271163904); +emit_32(3265531911); +emit_32(1102943093); +emit_32(3271616496); +emit_32(3265531911); +emit_32(1103595045); +emit_32(3271163904); +emit_32(3265019904); +emit_32(1104383889); +emit_32(3271616496); +emit_32(3265019904); +emit_32(1105129950); +emit_32(3271163904); +emit_32(3264507911); +emit_32(1105613344); +emit_32(3271616496); +emit_32(3264507911); +emit_32(1106326061); +emit_32(3271163904); +emit_32(3263995904); +emit_32(1106984409); +emit_32(3271616496); +emit_32(3263995904); +emit_32(1107411652); +emit_32(3271163904); +emit_32(3263483911); +emit_32(1107639822); +emit_32(3271616496); +emit_32(3263483911); +emit_32(1107887050); +emit_32(3271163904); +emit_32(3262775296); +emit_32(1108306507); +emit_32(3271616496); +emit_32(3262775296); +emit_32(1108492236); +emit_32(3271163904); +emit_32(3261751309); +emit_32(1108863825); +emit_32(3271616496); +emit_32(3261751309); +emit_32(1109105757); +emit_32(3271163904); +emit_32(3260727296); +emit_32(1109236279); +emit_32(3271616496); +emit_32(3260727296); +emit_32(1109424656); +emit_32(3271163904); +emit_32(3259703309); +emit_32(1109566004); +emit_32(3271616496); +emit_32(3259703309); +emit_32(1109901784); +emit_32(3271163904); +emit_32(3258679296); +emit_32(1109626611); +emit_32(3271616496); +emit_32(3258679296); +emit_32(1109885321); +emit_32(3271163904); +emit_32(3257655309); +emit_32(1109381454); +emit_32(3271616496); +emit_32(3257655309); +emit_32(1109822564); +emit_32(3271163904); +emit_32(3256631296); +emit_32(1109416817); +emit_32(3271616496); +emit_32(3256631296); +emit_32(1109824163); +emit_32(3271163904); +emit_32(3255607309); +emit_32(1109214704); +emit_32(3271616496); +emit_32(3255607309); +emit_32(1109730315); +emit_32(3271163904); +emit_32(3254386688); +emit_32(1109356052); +emit_32(3271616496); +emit_32(3254386688); +emit_32(1109803113); +emit_32(3271163904); +emit_32(3252338714); +emit_32(1109796533); +emit_32(3271616496); +emit_32(3252338714); +emit_32(1109995186); +emit_32(3271163904); +emit_32(3250290688); +emit_32(1110456690); +emit_32(3271616496); +emit_32(3250290688); +emit_32(1110434618); +emit_32(3271163904); +emit_32(3248242714); +emit_32(1110816797); +emit_32(3271616496); +emit_32(3248242714); +emit_32(1111024783); +emit_32(3271163904); +emit_32(3245998080); +emit_32(1111345699); +emit_32(3271616496); +emit_32(3245998080); +emit_32(1111309785); +emit_32(3271163904); +emit_32(3241902132); +emit_32(1111491032); +emit_32(3271616496); +emit_32(3241902132); +emit_32(1111384208); +emit_32(3271163904); +emit_32(3237609472); +emit_32(1111509356); +emit_32(3271616496); +emit_32(3237609472); +emit_32(1111783952); +emit_32(3271163904); +emit_32(3229220864); +emit_32(1111680693); +emit_32(3271616496); +emit_32(3229220864); +emit_32(1111918930); +emit_32(3271163904); +emit_32(0); +emit_32(1111962419); +emit_32(3271616496); +emit_32(0); +emit_32(1112106100); +emit_32(3271163904); +emit_32(1081737216); +emit_32(1112138475); +emit_32(3271616496); +emit_32(1081737216); +emit_32(1112094042); +emit_32(3271163904); +emit_32(3279552512); +emit_32(1106831999); +emit_32(3271872545); +emit_32(3279296528); +emit_32(1107221283); +emit_32(3271872545); +emit_32(3279040545); +emit_32(1107491448); +emit_32(3271872545); +emit_32(3278784496); +emit_32(1107603856); +emit_32(3271872545); +emit_32(3278528512); +emit_32(1107347427); +emit_32(3271872545); +emit_32(3278272528); +emit_32(1107241678); +emit_32(3271872545); +emit_32(3278016545); +emit_32(1107331016); +emit_32(3271872545); +emit_32(3277760496); +emit_32(1107339012); +emit_32(3271872545); +emit_32(3277504512); +emit_32(1106970935); +emit_32(3271872545); +emit_32(3277248528); +emit_32(1106766096); +emit_32(3271872545); +emit_32(3276992545); +emit_32(1106540075); +emit_32(3271872545); +emit_32(3276736496); +emit_32(1106320661); +emit_32(3271872545); +emit_32(3276480512); +emit_32(1106168093); +emit_32(3271872545); +emit_32(3276224528); +emit_32(1105508591); +emit_32(3271872545); +emit_32(3275968545); +emit_32(1104919711); +emit_32(3271872545); +emit_32(3275712496); +emit_32(1103890062); +emit_32(3271872545); +emit_32(3275456512); +emit_32(1102724412); +emit_32(3271872545); +emit_32(3275200528); +emit_32(1101678300); +emit_32(3271872545); +emit_32(3274944545); +emit_32(1100687815); +emit_32(3271872545); +emit_32(3274688496); +emit_32(1100014525); +emit_32(3271872545); +emit_32(3274432512); +emit_32(1099108503); +emit_32(3271872545); +emit_32(3274176528); +emit_32(1097338769); +emit_32(3271872545); +emit_32(3273920545); +emit_32(1095563634); +emit_32(3271872545); +emit_32(3273664496); +emit_32(1093020942); +emit_32(3271872545); +emit_32(3273408512); +emit_32(1090382432); +emit_32(3271872545); +emit_32(3273152528); +emit_32(1088955592); +emit_32(3271872545); +emit_32(3272896545); +emit_32(1086743621); +emit_32(3271872545); +emit_32(3272640496); +emit_32(1086106171); +emit_32(3271872545); +emit_32(3272384512); +emit_32(1087622538); +emit_32(3271872545); +emit_32(3272128528); +emit_32(1089541390); +emit_32(3271872545); +emit_32(3271872545); +emit_32(1090739493); +emit_32(3271872545); +emit_32(3271616496); +emit_32(1091296192); +emit_32(3271872545); +emit_32(3271163904); +emit_32(1091536652); +emit_32(3271872545); +emit_32(3270651937); +emit_32(1092000751); +emit_32(3271872545); +emit_32(3270139970); +emit_32(1092665265); +emit_32(3271872545); +emit_32(3269627871); +emit_32(1092064683); +emit_32(3271872545); +emit_32(3269115904); +emit_32(1092005921); +emit_32(3271872545); +emit_32(3268603937); +emit_32(1092949220); +emit_32(3271872545); +emit_32(3268091970); +emit_32(1093979446); +emit_32(3271872545); +emit_32(3267579911); +emit_32(1095270977); +emit_32(3271872545); +emit_32(3267067904); +emit_32(1097543031); +emit_32(3271872545); +emit_32(3266555911); +emit_32(1099248173); +emit_32(3271872545); +emit_32(3266043904); +emit_32(1100580441); +emit_32(3271872545); +emit_32(3265531911); +emit_32(1102805677); +emit_32(3271872545); +emit_32(3265019904); +emit_32(1104235935); +emit_32(3271872545); +emit_32(3264507911); +emit_32(1105586553); +emit_32(3271872545); +emit_32(3263995904); +emit_32(1106838605); +emit_32(3271872545); +emit_32(3263483911); +emit_32(1107360534); +emit_32(3271872545); +emit_32(3262775296); +emit_32(1107828487); +emit_32(3271872545); +emit_32(3261751309); +emit_32(1108377181); +emit_32(3271872545); +emit_32(3260727296); +emit_32(1108949179); +emit_32(3271872545); +emit_32(3259703309); +emit_32(1109077157); +emit_32(3271872545); +emit_32(3258679296); +emit_32(1109165841); +emit_32(3271872545); +emit_32(3257655309); +emit_32(1109169589); +emit_32(3271872545); +emit_32(3256631296); +emit_32(1108993167); +emit_32(3271872545); +emit_32(3255607309); +emit_32(1108949362); +emit_32(3271872545); +emit_32(3254386688); +emit_32(1109262310); +emit_32(3271872545); +emit_32(3252338714); +emit_32(1109890250); +emit_32(3271872545); +emit_32(3250290688); +emit_32(1110249177); +emit_32(3271872545); +emit_32(3248242714); +emit_32(1110644779); +emit_32(3271872545); +emit_32(3245998080); +emit_32(1111031572); +emit_32(3271872545); +emit_32(3241902132); +emit_32(1111347089); +emit_32(3271872545); +emit_32(3237609472); +emit_32(1111265300); +emit_32(3271872545); +emit_32(3229220864); +emit_32(1111507023); +emit_32(3271872545); +emit_32(0); +emit_32(1111638698); +emit_32(3271872545); +emit_32(1081737216); +emit_32(1111780334); +emit_32(3271872545); +emit_32(3279552512); +emit_32(1106638851); +emit_32(3272128528); +emit_32(3279296528); +emit_32(1106692434); +emit_32(3272128528); +emit_32(3279040545); +emit_32(1107345539); +emit_32(3272128528); +emit_32(3278784496); +emit_32(1107597459); +emit_32(3272128528); +emit_32(3278528512); +emit_32(1107379225); +emit_32(3272128528); +emit_32(3278272528); +emit_32(1107456950); +emit_32(3272128528); +emit_32(3278016545); +emit_32(1107643492); +emit_32(3272128528); +emit_32(3277760496); +emit_32(1107464788); +emit_32(3272128528); +emit_32(3277504512); +emit_32(1107237641); +emit_32(3272128528); +emit_32(3277248528); +emit_32(1107040666); +emit_32(3272128528); +emit_32(3276992545); +emit_32(1106355945); +emit_32(3272128528); +emit_32(3276736496); +emit_32(1106248938); +emit_32(3272128528); +emit_32(3276480512); +emit_32(1106022184); +emit_32(3272128528); +emit_32(3276224528); +emit_32(1105264378); +emit_32(3272128528); +emit_32(3275968545); +emit_32(1104551084); +emit_32(3272128528); +emit_32(3275712496); +emit_32(1103522693); +emit_32(3272128528); +emit_32(3275456512); +emit_32(1102465624); +emit_32(3272128528); +emit_32(3275200528); +emit_32(1101580416); +emit_32(3272128528); +emit_32(3274944545); +emit_32(1100781558); +emit_32(3272128528); +emit_32(3274688496); +emit_32(1099917584); +emit_32(3272128528); +emit_32(3274432512); +emit_32(1098955253); +emit_32(3272128528); +emit_32(3274176528); +emit_32(1097496474); +emit_32(3272128528); +emit_32(3273920545); +emit_32(1095188768); +emit_32(3272128528); +emit_32(3273664496); +emit_32(1092550792); +emit_32(3272128528); +emit_32(3273408512); +emit_32(1090256602); +emit_32(3272128528); +emit_32(3273152528); +emit_32(1088560866); +emit_32(3272128528); +emit_32(3272896545); +emit_32(1086795610); +emit_32(3272128528); +emit_32(3272640496); +emit_32(1087160745); +emit_32(3272128528); +emit_32(3272384512); +emit_32(1088465991); +emit_32(3272128528); +emit_32(3272128528); +emit_32(1090214701); +emit_32(3272128528); +emit_32(3271872545); +emit_32(1091916110); +emit_32(3272128528); +emit_32(3271616496); +emit_32(1093188714); +emit_32(3272128528); +emit_32(3271163904); +emit_32(1092821503); +emit_32(3272128528); +emit_32(3270651937); +emit_32(1092462943); +emit_32(3272128528); +emit_32(3270139970); +emit_32(1092871730); +emit_32(3272128528); +emit_32(3269627871); +emit_32(1092567339); +emit_32(3272128528); +emit_32(3269115904); +emit_32(1091624103); +emit_32(3272128528); +emit_32(3268603937); +emit_32(1092971030); +emit_32(3272128528); +emit_32(3268091970); +emit_32(1093964556); +emit_32(3272128528); +emit_32(3267579911); +emit_32(1095084959); +emit_32(3272128528); +emit_32(3267067904); +emit_32(1096871523); +emit_32(3272128528); +emit_32(3266555911); +emit_32(1098883740); +emit_32(3272128528); +emit_32(3266043904); +emit_32(1100410939); +emit_32(3272128528); +emit_32(3265531911); +emit_32(1102172809); +emit_32(3272128528); +emit_32(3265019904); +emit_32(1103650777); +emit_32(3272128528); +emit_32(3264507911); +emit_32(1105013087); +emit_32(3272128528); +emit_32(3263995904); +emit_32(1105804657); +emit_32(3272128528); +emit_32(3263483911); +emit_32(1106638642); +emit_32(3272128528); +emit_32(3262775296); +emit_32(1107472469); +emit_32(3272128528); +emit_32(3261751309); +emit_32(1107957436); +emit_32(3272128528); +emit_32(3260727296); +emit_32(1108447173); +emit_32(3272128528); +emit_32(3259703309); +emit_32(1108395845); +emit_32(3272128528); +emit_32(3258679296); +emit_32(1108480990); +emit_32(3272128528); +emit_32(3257655309); +emit_32(1108416004); +emit_32(3272128528); +emit_32(3256631296); +emit_32(1108454539); +emit_32(3272128528); +emit_32(3255607309); +emit_32(1108650702); +emit_32(3272128528); +emit_32(3254386688); +emit_32(1108972221); +emit_32(3272128528); +emit_32(3252338714); +emit_32(1109614028); +emit_32(3272128528); +emit_32(3250290688); +emit_32(1110107567); +emit_32(3272128528); +emit_32(3248242714); +emit_32(1110378204); +emit_32(3272128528); +emit_32(3245998080); +emit_32(1110643966); +emit_32(3272128528); +emit_32(3241902132); +emit_32(1110789770); +emit_32(3272128528); +emit_32(3237609472); +emit_32(1111079780); +emit_32(3272128528); +emit_32(3229220864); +emit_32(1111310572); +emit_32(3272128528); +emit_32(0); +emit_32(1111599245); +emit_32(3272128528); +emit_32(1081737216); +emit_32(1111464346); +emit_32(3272128528); +emit_32(3279552512); +emit_32(1105805967); +emit_32(3272384512); +emit_32(3279296528); +emit_32(1106518894); +emit_32(3272384512); +emit_32(3279040545); +emit_32(1107073958); +emit_32(3272384512); +emit_32(3278784496); +emit_32(1107138550); +emit_32(3272384512); +emit_32(3278528512); +emit_32(1107533837); +emit_32(3272384512); +emit_32(3278272528); +emit_32(1107630542); +emit_32(3272384512); +emit_32(3278016545); +emit_32(1107506050); +emit_32(3272384512); +emit_32(3277760496); +emit_32(1107593265); +emit_32(3272384512); +emit_32(3277504512); +emit_32(1107310490); +emit_32(3272384512); +emit_32(3277248528); +emit_32(1106912058); +emit_32(3272384512); +emit_32(3276992545); +emit_32(1106372356); +emit_32(3272384512); +emit_32(3276736496); +emit_32(1106038489); +emit_32(3272384512); +emit_32(3276480512); +emit_32(1105442531); +emit_32(3272384512); +emit_32(3276224528); +emit_32(1104607235); +emit_32(3272384512); +emit_32(3275968545); +emit_32(1103592686); +emit_32(3272384512); +emit_32(3275712496); +emit_32(1102531265); +emit_32(3272384512); +emit_32(3275456512); +emit_32(1101975100); +emit_32(3272384512); +emit_32(3275200528); +emit_32(1101237322); +emit_32(3272384512); +emit_32(3274944545); +emit_32(1100189794); +emit_32(3272384512); +emit_32(3274688496); +emit_32(1099519335); +emit_32(3272384512); +emit_32(3274432512); +emit_32(1098076861); +emit_32(3272384512); +emit_32(3274176528); +emit_32(1096265132); +emit_32(3272384512); +emit_32(3273920545); +emit_32(1094474583); +emit_32(3272384512); +emit_32(3273664496); +emit_32(1091850260); +emit_32(3272384512); +emit_32(3273408512); +emit_32(1089607366); +emit_32(3272384512); +emit_32(3273152528); +emit_32(1087214767); +emit_32(3272384512); +emit_32(3272896545); +emit_32(1087594331); +emit_32(3272384512); +emit_32(3272640496); +emit_32(1087250901); +emit_32(3272384512); +emit_32(3272384512); +emit_32(1087478526); +emit_32(3272384512); +emit_32(3272128528); +emit_32(1089739004); +emit_32(3272384512); +emit_32(3271872545); +emit_32(1091784944); +emit_32(3272384512); +emit_32(3271616496); +emit_32(1093147086); +emit_32(3272384512); +emit_32(3271163904); +emit_32(1093336249); +emit_32(3272384512); +emit_32(3270651937); +emit_32(1091955799); +emit_32(3272384512); +emit_32(3270139970); +emit_32(1092128436); +emit_32(3272384512); +emit_32(3269627871); +emit_32(1091415572); +emit_32(3272384512); +emit_32(3269115904); +emit_32(1091890787); +emit_32(3272384512); +emit_32(3268603937); +emit_32(1092277691); +emit_32(3272384512); +emit_32(3268091970); +emit_32(1093164912); +emit_32(3272384512); +emit_32(3267579911); +emit_32(1094506355); +emit_32(3272384512); +emit_32(3267067904); +emit_32(1095937556); +emit_32(3272384512); +emit_32(3266555911); +emit_32(1098124362); +emit_32(3272384512); +emit_32(3266043904); +emit_32(1100012533); +emit_32(3272384512); +emit_32(3265531911); +emit_32(1101424440); +emit_32(3272384512); +emit_32(3265019904); +emit_32(1102978797); +emit_32(3272384512); +emit_32(3264507911); +emit_32(1103996754); +emit_32(3272384512); +emit_32(3263995904); +emit_32(1104943566); +emit_32(3272384512); +emit_32(3263483911); +emit_32(1106152836); +emit_32(3272384512); +emit_32(3262775296); +emit_32(1107158211); +emit_32(3272384512); +emit_32(3261751309); +emit_32(1107529328); +emit_32(3272384512); +emit_32(3260727296); +emit_32(1107846470); +emit_32(3272384512); +emit_32(3259703309); +emit_32(1107994739); +emit_32(3272384512); +emit_32(3258679296); +emit_32(1107829064); +emit_32(3272384512); +emit_32(3257655309); +emit_32(1107762165); +emit_32(3272384512); +emit_32(3256631296); +emit_32(1107865711); +emit_32(3272384512); +emit_32(3255607309); +emit_32(1108367403); +emit_32(3272384512); +emit_32(3254386688); +emit_32(1109093568); +emit_32(3272384512); +emit_32(3252338714); +emit_32(1109542411); +emit_32(3272384512); +emit_32(3250290688); +emit_32(1110096793); +emit_32(3272384512); +emit_32(3248242714); +emit_32(1110312223); +emit_32(3272384512); +emit_32(3245998080); +emit_32(1110368505); +emit_32(3272384512); +emit_32(3241902132); +emit_32(1110406752); +emit_32(3272384512); +emit_32(3237609472); +emit_32(1110868545); +emit_32(3272384512); +emit_32(3229220864); +emit_32(1111168464); +emit_32(3272384512); +emit_32(0); +emit_32(1111261315); +emit_32(3272384512); +emit_32(1081737216); +emit_32(1111298697); +emit_32(3272384512); +emit_32(3279552512); +emit_32(1105376733); +emit_32(3272640496); +emit_32(3279296528); +emit_32(1106021659); +emit_32(3272640496); +emit_32(3279040545); +emit_32(1106269805); +emit_32(3272640496); +emit_32(3278784496); +emit_32(1106578978); +emit_32(3272640496); +emit_32(3278528512); +emit_32(1107451288); +emit_32(3272640496); +emit_32(3278272528); +emit_32(1107638616); +emit_32(3272640496); +emit_32(3278016545); +emit_32(1107539132); +emit_32(3272640496); +emit_32(3277760496); +emit_32(1107436844); +emit_32(3272640496); +emit_32(3277504512); +emit_32(1107235701); +emit_32(3272640496); +emit_32(3277248528); +emit_32(1107161462); +emit_32(3272640496); +emit_32(3276992545); +emit_32(1106065280); +emit_32(3272640496); +emit_32(3276736496); +emit_32(1105372171); +emit_32(3272640496); +emit_32(3276480512); +emit_32(1104578662); +emit_32(3272640496); +emit_32(3276224528); +emit_32(1103665876); +emit_32(3272640496); +emit_32(3275968545); +emit_32(1102629464); +emit_32(3272640496); +emit_32(3275712496); +emit_32(1101635885); +emit_32(3272640496); +emit_32(3275456512); +emit_32(1101146882); +emit_32(3272640496); +emit_32(3275200528); +emit_32(1100175848); +emit_32(3272640496); +emit_32(3274944545); +emit_32(1099030961); +emit_32(3272640496); +emit_32(3274688496); +emit_32(1097580151); +emit_32(3272640496); +emit_32(3274432512); +emit_32(1096760374); +emit_32(3272640496); +emit_32(3274176528); +emit_32(1095282721); +emit_32(3272640496); +emit_32(3273920545); +emit_32(1093280465); +emit_32(3272640496); +emit_32(3273664496); +emit_32(1091084065); +emit_32(3272640496); +emit_32(3273408512); +emit_32(1089099247); +emit_32(3272640496); +emit_32(3273152528); +emit_32(1087789576); +emit_32(3272640496); +emit_32(3272896545); +emit_32(1085020140); +emit_32(3272640496); +emit_32(3272640496); +emit_32(1085329784); +emit_32(3272640496); +emit_32(3272384512); +emit_32(1086214027); +emit_32(3272640496); +emit_32(3272128528); +emit_32(1088756363); +emit_32(3272640496); +emit_32(3271872545); +emit_32(1091099217); +emit_32(3272640496); +emit_32(3271616496); +emit_32(1092281151); +emit_32(3272640496); +emit_32(3271163904); +emit_32(1092410891); +emit_32(3272640496); +emit_32(3270651937); +emit_32(1092270707); +emit_32(3272640496); +emit_32(3270139970); +emit_32(1092436770); +emit_32(3272640496); +emit_32(3269627871); +emit_32(1091996431); +emit_32(3272640496); +emit_32(3269115904); +emit_32(1092130995); +emit_32(3272640496); +emit_32(3268603937); +emit_32(1092506794); +emit_32(3272640496); +emit_32(3268091970); +emit_32(1093085115); +emit_32(3272640496); +emit_32(3267579911); +emit_32(1094064590); +emit_32(3272640496); +emit_32(3267067904); +emit_32(1096463103); +emit_32(3272640496); +emit_32(3266555911); +emit_32(1098582275); +emit_32(3272640496); +emit_32(3266043904); +emit_32(1099782894); +emit_32(3272640496); +emit_32(3265531911); +emit_32(1101033216); +emit_32(3272640496); +emit_32(3265019904); +emit_32(1102204423); +emit_32(3272640496); +emit_32(3264507911); +emit_32(1103112962); +emit_32(3272640496); +emit_32(3263995904); +emit_32(1104476688); +emit_32(3272640496); +emit_32(3263483911); +emit_32(1105600027); +emit_32(3272640496); +emit_32(3262775296); +emit_32(1106773279); +emit_32(3272640496); +emit_32(3261751309); +emit_32(1107254942); +emit_32(3272640496); +emit_32(3260727296); +emit_32(1107325721); +emit_32(3272640496); +emit_32(3259703309); +emit_32(1107680454); +emit_32(3272640496); +emit_32(3258679296); +emit_32(1107700272); +emit_32(3272640496); +emit_32(3257655309); +emit_32(1107704204); +emit_32(3272640496); +emit_32(3256631296); +emit_32(1107913946); +emit_32(3272640496); +emit_32(3255607309); +emit_32(1108409896); +emit_32(3272640496); +emit_32(3254386688); +emit_32(1108866499); +emit_32(3272640496); +emit_32(3252338714); +emit_32(1109485866); +emit_32(3272640496); +emit_32(3250290688); +emit_32(1110027901); +emit_32(3272640496); +emit_32(3248242714); +emit_32(1110441984); +emit_32(3272640496); +emit_32(3245998080); +emit_32(1110489956); +emit_32(3272640496); +emit_32(3241902132); +emit_32(1110446834); +emit_32(3272640496); +emit_32(3237609472); +emit_32(1110725100); +emit_32(3272640496); +emit_32(3229220864); +emit_32(1110855752); +emit_32(3272640496); +emit_32(0); +emit_32(1110654897); +emit_32(3272640496); +emit_32(1081737216); +emit_32(1110766990); +emit_32(3272640496); +emit_32(3279552512); +emit_32(1104945611); +emit_32(3272896545); +emit_32(3279296528); +emit_32(1105445886); +emit_32(3272896545); +emit_32(3279040545); +emit_32(1105654868); +emit_32(3272896545); +emit_32(3278784496); +emit_32(1106191896); +emit_32(3272896545); +emit_32(3278528512); +emit_32(1106771024); +emit_32(3272896545); +emit_32(3278272528); +emit_32(1107252111); +emit_32(3272896545); +emit_32(3278016545); +emit_32(1107581652); +emit_32(3272896545); +emit_32(3277760496); +emit_32(1107333218); +emit_32(3272896545); +emit_32(3277504512); +emit_32(1106792310); +emit_32(3272896545); +emit_32(3277248528); +emit_32(1106541229); +emit_32(3272896545); +emit_32(3276992545); +emit_32(1105789924); +emit_32(3272896545); +emit_32(3276736496); +emit_32(1104474486); +emit_32(3272896545); +emit_32(3276480512); +emit_32(1103776134); +emit_32(3272896545); +emit_32(3276224528); +emit_32(1102639635); +emit_32(3272896545); +emit_32(3275968545); +emit_32(1101601964); +emit_32(3272896545); +emit_32(3275712496); +emit_32(1100849820); +emit_32(3272896545); +emit_32(3275456512); +emit_32(1100186229); +emit_32(3272896545); +emit_32(3275200528); +emit_32(1099765540); +emit_32(3272896545); +emit_32(3274944545); +emit_32(1098773850); +emit_32(3272896545); +emit_32(3274688496); +emit_32(1097286550); +emit_32(3272896545); +emit_32(3274432512); +emit_32(1095977088); +emit_32(3272896545); +emit_32(3274176528); +emit_32(1094472381); +emit_32(3272896545); +emit_32(3273920545); +emit_32(1093136810); +emit_32(3272896545); +emit_32(3273664496); +emit_32(1090824857); +emit_32(3272896545); +emit_32(3273408512); +emit_32(1088942045); +emit_32(3272896545); +emit_32(3273152528); +emit_32(1087994509); +emit_32(3272896545); +emit_32(3272896545); +emit_32(1085242018); +emit_32(3272896545); +emit_32(3272640496); +emit_32(1082368710); +emit_32(3272896545); +emit_32(3272384512); +emit_32(1083511616); +emit_32(3272896545); +emit_32(3272128528); +emit_32(1086745865); +emit_32(3272896545); +emit_32(3271872545); +emit_32(1089841387); +emit_32(3272896545); +emit_32(3271616496); +emit_32(1091645420); +emit_32(3272896545); +emit_32(3271163904); +emit_32(1091360837); +emit_32(3272896545); +emit_32(3270651937); +emit_32(1091891626); +emit_32(3272896545); +emit_32(3270139970); +emit_32(1091846705); +emit_32(3272896545); +emit_32(3269627871); +emit_32(1092497818); +emit_32(3272896545); +emit_32(3269115904); +emit_32(1091767087); +emit_32(3272896545); +emit_32(3268603937); +emit_32(1092058643); +emit_32(3272896545); +emit_32(3268091970); +emit_32(1092782286); +emit_32(3272896545); +emit_32(3267579911); +emit_32(1093942536); +emit_32(3272896545); +emit_32(3267067904); +emit_32(1096261042); +emit_32(3272896545); +emit_32(3266555911); +emit_32(1098731278); +emit_32(3272896545); +emit_32(3266043904); +emit_32(1099753639); +emit_32(3272896545); +emit_32(3265531911); +emit_32(1100349178); +emit_32(3272896545); +emit_32(3265019904); +emit_32(1101287129); +emit_32(3272896545); +emit_32(3264507911); +emit_32(1102874726); +emit_32(3272896545); +emit_32(3263995904); +emit_32(1104299216); +emit_32(3272896545); +emit_32(3263483911); +emit_32(1105581310); +emit_32(3272896545); +emit_32(3262775296); +emit_32(1106449741); +emit_32(3272896545); +emit_32(3261751309); +emit_32(1106767197); +emit_32(3272896545); +emit_32(3260727296); +emit_32(1106996783); +emit_32(3272896545); +emit_32(3259703309); +emit_32(1107252216); +emit_32(3272896545); +emit_32(3258679296); +emit_32(1107420643); +emit_32(3272896545); +emit_32(3257655309); +emit_32(1107319351); +emit_32(3272896545); +emit_32(3256631296); +emit_32(1107826600); +emit_32(3272896545); +emit_32(3255607309); +emit_32(1108251299); +emit_32(3272896545); +emit_32(3254386688); +emit_32(1108771550); +emit_32(3272896545); +emit_32(3252338714); +emit_32(1109302182); +emit_32(3272896545); +emit_32(3250290688); +emit_32(1110005147); +emit_32(3272896545); +emit_32(3248242714); +emit_32(1110267291); +emit_32(3272896545); +emit_32(3245998080); +emit_32(1110424394); +emit_32(3272896545); +emit_32(3241902132); +emit_32(1110409006); +emit_32(3272896545); +emit_32(3237609472); +emit_32(1110530064); +emit_32(3272896545); +emit_32(3229220864); +emit_32(1110513759); +emit_32(3272896545); +emit_32(0); +emit_32(1110086228); +emit_32(3272896545); +emit_32(1081737216); +emit_32(1110289075); +emit_32(3272896545); +emit_32(3279552512); +emit_32(1105076106); +emit_32(3273152528); +emit_32(3279296528); +emit_32(1105334790); +emit_32(3273152528); +emit_32(3279040545); +emit_32(1105218241); +emit_32(3273152528); +emit_32(3278784496); +emit_32(1105960947); +emit_32(3273152528); +emit_32(3278528512); +emit_32(1107217980); +emit_32(3273152528); +emit_32(3278272528); +emit_32(1107295574); +emit_32(3273152528); +emit_32(3278016545); +emit_32(1107365331); +emit_32(3273152528); +emit_32(3277760496); +emit_32(1107416134); +emit_32(3273152528); +emit_32(3277504512); +emit_32(1106446438); +emit_32(3273152528); +emit_32(3277248528); +emit_32(1105782794); +emit_32(3273152528); +emit_32(3276992545); +emit_32(1105013821); +emit_32(3273152528); +emit_32(3276736496); +emit_32(1103915857); +emit_32(3273152528); +emit_32(3276480512); +emit_32(1103026979); +emit_32(3273152528); +emit_32(3276224528); +emit_32(1101908673); +emit_32(3273152528); +emit_32(3275968545); +emit_32(1100983409); +emit_32(3273152528); +emit_32(3275712496); +emit_32(1100304771); +emit_32(3273152528); +emit_32(3275456512); +emit_32(1099637090); +emit_32(3273152528); +emit_32(3275200528); +emit_32(1099595147); +emit_32(3273152528); +emit_32(3274944545); +emit_32(1098779302); +emit_32(3273152528); +emit_32(3274688496); +emit_32(1096597425); +emit_32(3273152528); +emit_32(3274432512); +emit_32(1094709255); +emit_32(3273152528); +emit_32(3274176528); +emit_32(1093592941); +emit_32(3273152528); +emit_32(3273920545); +emit_32(1091822808); +emit_32(3273152528); +emit_32(3273664496); +emit_32(1090429890); +emit_32(3273152528); +emit_32(3273408512); +emit_32(1088328040); +emit_32(3273152528); +emit_32(3273152528); +emit_32(1087421546); +emit_32(3273152528); +emit_32(3272896545); +emit_32(1085534382); +emit_32(3273152528); +emit_32(3272640496); +emit_32(1082800241); +emit_32(3273152528); +emit_32(3272384512); +emit_32(1078440703); +emit_32(3273152528); +emit_32(3272128528); +emit_32(1084200594); +emit_32(3273152528); +emit_32(3271872545); +emit_32(1087678322); +emit_32(3273152528); +emit_32(3271616496); +emit_32(1089442320); +emit_32(3273152528); +emit_32(3271163904); +emit_32(1090607372); +emit_32(3273152528); +emit_32(3270651937); +emit_32(1091531566); +emit_32(3273152528); +emit_32(3270139970); +emit_32(1091674141); +emit_32(3273152528); +emit_32(3269627871); +emit_32(1091966117); +emit_32(3273152528); +emit_32(3269115904); +emit_32(1091542251); +emit_32(3273152528); +emit_32(3268603937); +emit_32(1091342288); +emit_32(3273152528); +emit_32(3268091970); +emit_32(1092373405); +emit_32(3273152528); +emit_32(3267579911); +emit_32(1093066975); +emit_32(3273152528); +emit_32(3267067904); +emit_32(1096397252); +emit_32(3273152528); +emit_32(3266555911); +emit_32(1099075053); +emit_32(3273152528); +emit_32(3266043904); +emit_32(1099796788); +emit_32(3273152528); +emit_32(3265531911); +emit_32(1100246942); +emit_32(3273152528); +emit_32(3265019904); +emit_32(1101066614); +emit_32(3273152528); +emit_32(3264507911); +emit_32(1102540440); +emit_32(3273152528); +emit_32(3263995904); +emit_32(1104067323); +emit_32(3273152528); +emit_32(3263483911); +emit_32(1105420039); +emit_32(3273152528); +emit_32(3262775296); +emit_32(1106257484); +emit_32(3273152528); +emit_32(3261751309); +emit_32(1106472337); +emit_32(3273152528); +emit_32(3260727296); +emit_32(1106731912); +emit_32(3273152528); +emit_32(3259703309); +emit_32(1106956465); +emit_32(3273152528); +emit_32(3258679296); +emit_32(1106821199); +emit_32(3273152528); +emit_32(3257655309); +emit_32(1106379643); +emit_32(3273152528); +emit_32(3256631296); +emit_32(1107530954); +emit_32(3273152528); +emit_32(3255607309); +emit_32(1108003992); +emit_32(3273152528); +emit_32(3254386688); +emit_32(1108557352); +emit_32(3273152528); +emit_32(3252338714); +emit_32(1109091706); +emit_32(3273152528); +emit_32(3250290688); +emit_32(1109753830); +emit_32(3273152528); +emit_32(3248242714); +emit_32(1109939664); +emit_32(3273152528); +emit_32(3245998080); +emit_32(1109999118); +emit_32(3273152528); +emit_32(3241902132); +emit_32(1110432914); +emit_32(3273152528); +emit_32(3237609472); +emit_32(1110537457); +emit_32(3273152528); +emit_32(3229220864); +emit_32(1110226685); +emit_32(3273152528); +emit_32(0); +emit_32(1109884928); +emit_32(3273152528); +emit_32(1081737216); +emit_32(1110106754); +emit_32(3273152528); +emit_32(3279552512); +emit_32(1104836087); +emit_32(3273408512); +emit_32(3279296528); +emit_32(1105132991); +emit_32(3273408512); +emit_32(3279040545); +emit_32(1105059486); +emit_32(3273408512); +emit_32(3278784496); +emit_32(1105434981); +emit_32(3273408512); +emit_32(3278528512); +emit_32(1106513389); +emit_32(3273408512); +emit_32(3278272528); +emit_32(1106841489); +emit_32(3273408512); +emit_32(3278016545); +emit_32(1107378805); +emit_32(3273408512); +emit_32(3277760496); +emit_32(1106914784); +emit_32(3273408512); +emit_32(3277504512); +emit_32(1106011069); +emit_32(3273408512); +emit_32(3277248528); +emit_32(1104591349); +emit_32(3273408512); +emit_32(3276992545); +emit_32(1103757469); +emit_32(3273408512); +emit_32(3276736496); +emit_32(1103249329); +emit_32(3273408512); +emit_32(3276480512); +emit_32(1103030387); +emit_32(3273408512); +emit_32(3276224528); +emit_32(1102188275); +emit_32(3273408512); +emit_32(3275968545); +emit_32(1101338667); +emit_32(3273408512); +emit_32(3275712496); +emit_32(1100738567); +emit_32(3273408512); +emit_32(3275456512); +emit_32(1099970956); +emit_32(3273408512); +emit_32(3275200528); +emit_32(1098288778); +emit_32(3273408512); +emit_32(3274944545); +emit_32(1096724093); +emit_32(3273408512); +emit_32(3274688496); +emit_32(1094523761); +emit_32(3273408512); +emit_32(3274432512); +emit_32(1091893849); +emit_32(3273408512); +emit_32(3274176528); +emit_32(1091370138); +emit_32(3273408512); +emit_32(3273920545); +emit_32(1090570504); +emit_32(3273408512); +emit_32(3273664496); +emit_32(1087323819); +emit_32(3273408512); +emit_32(3273408512); +emit_32(1085981977); +emit_32(3273408512); +emit_32(3273152528); +emit_32(1085699218); +emit_32(3273408512); +emit_32(3272896545); +emit_32(1086443980); +emit_32(3273408512); +emit_32(3272640496); +emit_32(1082061813); +emit_32(3273408512); +emit_32(3272384512); +emit_32(1077123943); +emit_32(3273408512); +emit_32(3272128528); +emit_32(1080172783); +emit_32(3273408512); +emit_32(3271872545); +emit_32(1084168381); +emit_32(3273408512); +emit_32(3271616496); +emit_32(1087820404); +emit_32(3273408512); +emit_32(3271163904); +emit_32(1090796682); +emit_32(3273408512); +emit_32(3270651937); +emit_32(1091577148); +emit_32(3273408512); +emit_32(3270139970); +emit_32(1091446925); +emit_32(3273408512); +emit_32(3269627871); +emit_32(1092098762); +emit_32(3273408512); +emit_32(3269115904); +emit_32(1091744595); +emit_32(3273408512); +emit_32(3268603937); +emit_32(1091408191); +emit_32(3273408512); +emit_32(3268091970); +emit_32(1092385663); +emit_32(3273408512); +emit_32(3267579911); +emit_32(1093825829); +emit_32(3273408512); +emit_32(3267067904); +emit_32(1096198128); +emit_32(3273408512); +emit_32(3266555911); +emit_32(1098768607); +emit_32(3273408512); +emit_32(3266043904); +emit_32(1099579471); +emit_32(3273408512); +emit_32(3265531911); +emit_32(1100058880); +emit_32(3273408512); +emit_32(3265019904); +emit_32(1100744596); +emit_32(3273408512); +emit_32(3264507911); +emit_32(1102061083); +emit_32(3273408512); +emit_32(3263995904); +emit_32(1103274338); +emit_32(3273408512); +emit_32(3263483911); +emit_32(1104422791); +emit_32(3273408512); +emit_32(3262775296); +emit_32(1105176612); +emit_32(3273408512); +emit_32(3261751309); +emit_32(1105646007); +emit_32(3273408512); +emit_32(3260727296); +emit_32(1106575308); +emit_32(3273408512); +emit_32(3259703309); +emit_32(1106762741); +emit_32(3273408512); +emit_32(3258679296); +emit_32(1106791472); +emit_32(3273408512); +emit_32(3257655309); +emit_32(1106362447); +emit_32(3273408512); +emit_32(3256631296); +emit_32(1107312824); +emit_32(3273408512); +emit_32(3255607309); +emit_32(1107822143); +emit_32(3273408512); +emit_32(3254386688); +emit_32(1108186890); +emit_32(3273408512); +emit_32(3252338714); +emit_32(1108816848); +emit_32(3273408512); +emit_32(3250290688); +emit_32(1109429689); +emit_32(3273408512); +emit_32(3248242714); +emit_32(1109536408); +emit_32(3273408512); +emit_32(3245998080); +emit_32(1109813992); +emit_32(3273408512); +emit_32(3241902132); +emit_32(1110208099); +emit_32(3273408512); +emit_32(3237609472); +emit_32(1110335213); +emit_32(3273408512); +emit_32(3229220864); +emit_32(1110186263); +emit_32(3273408512); +emit_32(0); +emit_32(1109755796); +emit_32(3273408512); +emit_32(1081737216); +emit_32(1109848700); +emit_32(3273408512); +emit_32(3279552512); +emit_32(1104733956); +emit_32(3273664496); +emit_32(3279296528); +emit_32(1104666690); +emit_32(3273664496); +emit_32(3279040545); +emit_32(1104540231); +emit_32(3273664496); +emit_32(3278784496); +emit_32(1104872840); +emit_32(3273664496); +emit_32(3278528512); +emit_32(1105814775); +emit_32(3273664496); +emit_32(3278272528); +emit_32(1106809297); +emit_32(3273664496); +emit_32(3278016545); +emit_32(1106966322); +emit_32(3273664496); +emit_32(3277760496); +emit_32(1106369682); +emit_32(3273664496); +emit_32(3277504512); +emit_32(1105145102); +emit_32(3273664496); +emit_32(3277248528); +emit_32(1104371673); +emit_32(3273664496); +emit_32(3276992545); +emit_32(1103102319); +emit_32(3273664496); +emit_32(3276736496); +emit_32(1102915568); +emit_32(3273664496); +emit_32(3276480512); +emit_32(1102916721); +emit_32(3273664496); +emit_32(3276224528); +emit_32(1102503005); +emit_32(3273664496); +emit_32(3275968545); +emit_32(1101360162); +emit_32(3273664496); +emit_32(3275712496); +emit_32(1100655152); +emit_32(3273664496); +emit_32(3275456512); +emit_32(1099898185); +emit_32(3273664496); +emit_32(3275200528); +emit_32(1097164495); +emit_32(3273664496); +emit_32(3274944545); +emit_32(1094617294); +emit_32(3273664496); +emit_32(3274688496); +emit_32(1092199750); +emit_32(3273664496); +emit_32(3274432512); +emit_32(1090062511); +emit_32(3273664496); +emit_32(3274176528); +emit_32(1090680196); +emit_32(3273664496); +emit_32(3273920545); +emit_32(1089407214); +emit_32(3273664496); +emit_32(3273664496); +emit_32(1087342316); +emit_32(3273664496); +emit_32(3273408512); +emit_32(1084811578); +emit_32(3273664496); +emit_32(3273152528); +emit_32(1083587386); +emit_32(3273664496); +emit_32(3272896545); +emit_32(1084521563); +emit_32(3273664496); +emit_32(3272640496); +emit_32(1079059237); +emit_32(3273664496); +emit_32(3272384512); +emit_32(1079341513); +emit_32(3273664496); +emit_32(3272128528); +emit_32(1075719690); +emit_32(3273664496); +emit_32(3271872545); +emit_32(1082462285); +emit_32(3273664496); +emit_32(3271616496); +emit_32(1087277514); +emit_32(3273664496); +emit_32(3271163904); +emit_32(1090505891); +emit_32(3273664496); +emit_32(3270651937); +emit_32(1090927198); +emit_32(3273664496); +emit_32(3270139970); +emit_32(1091146109); +emit_32(3273664496); +emit_32(3269627871); +emit_32(1092080475); +emit_32(3273664496); +emit_32(3269115904); +emit_32(1091780718); +emit_32(3273664496); +emit_32(3268603937); +emit_32(1090802554); +emit_32(3273664496); +emit_32(3268091970); +emit_32(1092320997); +emit_32(3273664496); +emit_32(3267579911); +emit_32(1094564132); +emit_32(3273664496); +emit_32(3267067904); +emit_32(1097435447); +emit_32(3273664496); +emit_32(3266555911); +emit_32(1098963118); +emit_32(3273664496); +emit_32(3266043904); +emit_32(1099774348); +emit_32(3273664496); +emit_32(3265531911); +emit_32(1100067530); +emit_32(3273664496); +emit_32(3265019904); +emit_32(1100332401); +emit_32(3273664496); +emit_32(3264507911); +emit_32(1101386639); +emit_32(3273664496); +emit_32(3263995904); +emit_32(1102851185); +emit_32(3273664496); +emit_32(3263483911); +emit_32(1104372774); +emit_32(3273664496); +emit_32(3262775296); +emit_32(1105071702); +emit_32(3273664496); +emit_32(3261751309); +emit_32(1105296726); +emit_32(3273664496); +emit_32(3260727296); +emit_32(1105674895); +emit_32(3273664496); +emit_32(3259703309); +emit_32(1106000583); +emit_32(3273664496); +emit_32(3258679296); +emit_32(1105931639); +emit_32(3273664496); +emit_32(3257655309); +emit_32(1106021188); +emit_32(3273664496); +emit_32(3256631296); +emit_32(1106564874); +emit_32(3273664496); +emit_32(3255607309); +emit_32(1107568073); +emit_32(3273664496); +emit_32(3254386688); +emit_32(1108016890); +emit_32(3273664496); +emit_32(3252338714); +emit_32(1108734483); +emit_32(3273664496); +emit_32(3250290688); +emit_32(1109191321); +emit_32(3273664496); +emit_32(3248242714); +emit_32(1109295759); +emit_32(3273664496); +emit_32(3245998080); +emit_32(1109358019); +emit_32(3273664496); +emit_32(3241902132); +emit_32(1109703603); +emit_32(3273664496); +emit_32(3237609472); +emit_32(1109859736); +emit_32(3273664496); +emit_32(3229220864); +emit_32(1109838319); +emit_32(3273664496); +emit_32(0); +emit_32(1109492761); +emit_32(3273664496); +emit_32(1081737216); +emit_32(1109518057); +emit_32(3273664496); +emit_32(3279552512); +emit_32(1104359299); +emit_32(3273920545); +emit_32(3279296528); +emit_32(1104339586); +emit_32(3273920545); +emit_32(3279040545); +emit_32(1104491735); +emit_32(3273920545); +emit_32(3278784496); +emit_32(1104791627); +emit_32(3273920545); +emit_32(3278528512); +emit_32(1105811577); +emit_32(3273920545); +emit_32(3278272528); +emit_32(1106308497); +emit_32(3273920545); +emit_32(3278016545); +emit_32(1106435952); +emit_32(3273920545); +emit_32(3277760496); +emit_32(1105655916); +emit_32(3273920545); +emit_32(3277504512); +emit_32(1104594023); +emit_32(3273920545); +emit_32(3277248528); +emit_32(1103614234); +emit_32(3273920545); +emit_32(3276992545); +emit_32(1103342128); +emit_32(3273920545); +emit_32(3276736496); +emit_32(1102922855); +emit_32(3273920545); +emit_32(3276480512); +emit_32(1102436945); +emit_32(3273920545); +emit_32(3276224528); +emit_32(1101625347); +emit_32(3273920545); +emit_32(3275968545); +emit_32(1100801953); +emit_32(3273920545); +emit_32(3275712496); +emit_32(1100227910); +emit_32(3273920545); +emit_32(3275456512); +emit_32(1099339661); +emit_32(3273920545); +emit_32(3275200528); +emit_32(1096681731); +emit_32(3273920545); +emit_32(3274944545); +emit_32(1093027548); +emit_32(3273920545); +emit_32(3274688496); +emit_32(1089483949); +emit_32(3273920545); +emit_32(3274432512); +emit_32(1087550857); +emit_32(3273920545); +emit_32(3274176528); +emit_32(1088032090); +emit_32(3273920545); +emit_32(3273920545); +emit_32(1088175452); +emit_32(3273920545); +emit_32(3273664496); +emit_32(1087974251); +emit_32(3273920545); +emit_32(3273408512); +emit_32(1084612369); +emit_32(3273920545); +emit_32(3273152528); +emit_32(1083056807); +emit_32(3273920545); +emit_32(3272896545); +emit_32(1083313058); +emit_32(3273920545); +emit_32(3272640496); +emit_32(1077966411); +emit_32(3273920545); +emit_32(3272384512); +emit_32(1077466701); +emit_32(3273920545); +emit_32(3272128528); +emit_32(1076194527); +emit_32(3273920545); +emit_32(3271872545); +emit_32(1078813199); +emit_32(3273920545); +emit_32(3271616496); +emit_32(1084920546); +emit_32(3273920545); +emit_32(3271163904); +emit_32(1087870295); +emit_32(3273920545); +emit_32(3270651937); +emit_32(1089931229); +emit_32(3273920545); +emit_32(3270139970); +emit_32(1090987638); +emit_32(3273920545); +emit_32(3269627871); +emit_32(1091623883); +emit_32(3273920545); +emit_32(3269115904); +emit_32(1091369550); +emit_32(3273920545); +emit_32(3268603937); +emit_32(1090009558); +emit_32(3273920545); +emit_32(3268091970); +emit_32(1093783362); +emit_32(3273920545); +emit_32(3267579911); +emit_32(1095581880); +emit_32(3273920545); +emit_32(3267067904); +emit_32(1097625344); +emit_32(3273920545); +emit_32(3266555911); +emit_32(1099002544); +emit_32(3273920545); +emit_32(3266043904); +emit_32(1099653605); +emit_32(3273920545); +emit_32(3265531911); +emit_32(1100228067); +emit_32(3273920545); +emit_32(3265019904); +emit_32(1100644195); +emit_32(3273920545); +emit_32(3264507911); +emit_32(1101087218); +emit_32(3273920545); +emit_32(3263995904); +emit_32(1102441873); +emit_32(3273920545); +emit_32(3263483911); +emit_32(1103411859); +emit_32(3273920545); +emit_32(3262775296); +emit_32(1104352169); +emit_32(3273920545); +emit_32(3261751309); +emit_32(1104534045); +emit_32(3273920545); +emit_32(3260727296); +emit_32(1104718961); +emit_32(3273920545); +emit_32(3259703309); +emit_32(1105600394); +emit_32(3273920545); +emit_32(3258679296); +emit_32(1105578322); +emit_32(3273920545); +emit_32(3257655309); +emit_32(1105873968); +emit_32(3273920545); +emit_32(3256631296); +emit_32(1105977043); +emit_32(3273920545); +emit_32(3255607309); +emit_32(1107501987); +emit_32(3273920545); +emit_32(3254386688); +emit_32(1108022657); +emit_32(3273920545); +emit_32(3252338714); +emit_32(1108493730); +emit_32(3273920545); +emit_32(3250290688); +emit_32(1108751627); +emit_32(3273920545); +emit_32(3248242714); +emit_32(1108976756); +emit_32(3273920545); +emit_32(3245998080); +emit_32(1109209357); +emit_32(3273920545); +emit_32(3241902132); +emit_32(1109224928); +emit_32(3273920545); +emit_32(3237609472); +emit_32(1109394299); +emit_32(3273920545); +emit_32(3229220864); +emit_32(1109287790); +emit_32(3273920545); +emit_32(0); +emit_32(1109096556); +emit_32(3273920545); +emit_32(1081737216); +emit_32(1109095429); +emit_32(3273920545); +emit_32(3279552512); +emit_32(1103777917); +emit_32(3274176528); +emit_32(3279296528); +emit_32(1103682863); +emit_32(3274176528); +emit_32(3279040545); +emit_32(1103889852); +emit_32(3274176528); +emit_32(3278784496); +emit_32(1104470082); +emit_32(3274176528); +emit_32(3278528512); +emit_32(1105367977); +emit_32(3274176528); +emit_32(3278272528); +emit_32(1105484998); +emit_32(3274176528); +emit_32(3278016545); +emit_32(1105335157); +emit_32(3274176528); +emit_32(3277760496); +emit_32(1104592136); +emit_32(3274176528); +emit_32(3277504512); +emit_32(1103631063); +emit_32(3274176528); +emit_32(3277248528); +emit_32(1103255306); +emit_32(3274176528); +emit_32(3276992545); +emit_32(1103018276); +emit_32(3274176528); +emit_32(3276736496); +emit_32(1102447378); +emit_32(3274176528); +emit_32(3276480512); +emit_32(1102332926); +emit_32(3274176528); +emit_32(3276224528); +emit_32(1101176976); +emit_32(3274176528); +emit_32(3275968545); +emit_32(1100388132); +emit_32(3274176528); +emit_32(3275712496); +emit_32(1099436969); +emit_32(3274176528); +emit_32(3275456512); +emit_32(1097622199); +emit_32(3274176528); +emit_32(3275200528); +emit_32(1095157206); +emit_32(3274176528); +emit_32(3274944545); +emit_32(1091943761); +emit_32(3274176528); +emit_32(3274688496); +emit_32(1087145897); +emit_32(3274176528); +emit_32(3274432512); +emit_32(1084175847); +emit_32(3274176528); +emit_32(3274176528); +emit_32(1083923161); +emit_32(3274176528); +emit_32(3273920545); +emit_32(1085375292); +emit_32(3274176528); +emit_32(3273664496); +emit_32(1084407834); +emit_32(3274176528); +emit_32(3273408512); +emit_32(1081391354); +emit_32(3274176528); +emit_32(3273152528); +emit_32(1081952216); +emit_32(3274176528); +emit_32(3272896545); +emit_32(1083406885); +emit_32(3274176528); +emit_32(3272640496); +emit_32(1079981732); +emit_32(3274176528); +emit_32(3272384512); +emit_32(1079058020); +emit_32(3274176528); +emit_32(3272128528); +emit_32(1072707676); +emit_32(3274176528); +emit_32(3271872545); +emit_32(1076687568); +emit_32(3274176528); +emit_32(3271616496); +emit_32(1083207089); +emit_32(3274176528); +emit_32(3271163904); +emit_32(1086389538); +emit_32(3274176528); +emit_32(3270651937); +emit_32(1089283314); +emit_32(3274176528); +emit_32(3270139970); +emit_32(1089347172); +emit_32(3274176528); +emit_32(3269627871); +emit_32(1089486696); +emit_32(3274176528); +emit_32(3269115904); +emit_32(1088193739); +emit_32(3274176528); +emit_32(3268603937); +emit_32(1090655722); +emit_32(3274176528); +emit_32(3268091970); +emit_32(1094451515); +emit_32(3274176528); +emit_32(3267579911); +emit_32(1096952893); +emit_32(3274176528); +emit_32(3267067904); +emit_32(1098336489); +emit_32(3274176528); +emit_32(3266555911); +emit_32(1099234437); +emit_32(3274176528); +emit_32(3266043904); +emit_32(1099379612); +emit_32(3274176528); +emit_32(3265531911); +emit_32(1100215799); +emit_32(3274176528); +emit_32(3265019904); +emit_32(1100530162); +emit_32(3274176528); +emit_32(3264507911); +emit_32(1101031329); +emit_32(3274176528); +emit_32(3263995904); +emit_32(1101498994); +emit_32(3274176528); +emit_32(3263483911); +emit_32(1102563928); +emit_32(3274176528); +emit_32(3262775296); +emit_32(1103428531); +emit_32(3274176528); +emit_32(3261751309); +emit_32(1104384360); +emit_32(3274176528); +emit_32(3260727296); +emit_32(1104488589); +emit_32(3274176528); +emit_32(3259703309); +emit_32(1104535827); +emit_32(3274176528); +emit_32(3258679296); +emit_32(1105265479); +emit_32(3274176528); +emit_32(3257655309); +emit_32(1106039747); +emit_32(3274176528); +emit_32(3256631296); +emit_32(1106434956); +emit_32(3274176528); +emit_32(3255607309); +emit_32(1107058596); +emit_32(3274176528); +emit_32(3254386688); +emit_32(1107738703); +emit_32(3274176528); +emit_32(3252338714); +emit_32(1108236567); +emit_32(3274176528); +emit_32(3250290688); +emit_32(1108369447); +emit_32(3274176528); +emit_32(3248242714); +emit_32(1108738258); +emit_32(3274176528); +emit_32(3245998080); +emit_32(1108925140); +emit_32(3274176528); +emit_32(3241902132); +emit_32(1108891219); +emit_32(3274176528); +emit_32(3237609472); +emit_32(1109019224); +emit_32(3274176528); +emit_32(3229220864); +emit_32(1108962574); +emit_32(3274176528); +emit_32(0); +emit_32(1108838921); +emit_32(3274176528); +emit_32(1081737216); +emit_32(1108664621); +emit_32(3274176528); +emit_32(3279552512); +emit_32(1103175247); +emit_32(3274432512); +emit_32(3279296528); +emit_32(1103008996); +emit_32(3274432512); +emit_32(3279040545); +emit_32(1103511840); +emit_32(3274432512); +emit_32(3278784496); +emit_32(1104205736); +emit_32(3274432512); +emit_32(3278528512); +emit_32(1104650804); +emit_32(3274432512); +emit_32(3278272528); +emit_32(1104410365); +emit_32(3274432512); +emit_32(3278016545); +emit_32(1103881359); +emit_32(3274432512); +emit_32(3277760496); +emit_32(1103489768); +emit_32(3274432512); +emit_32(3277504512); +emit_32(1102805048); +emit_32(3274432512); +emit_32(3277248528); +emit_32(1102700452); +emit_32(3274432512); +emit_32(3276992545); +emit_32(1102108688); +emit_32(3274432512); +emit_32(3276736496); +emit_32(1101386429); +emit_32(3274432512); +emit_32(3276480512); +emit_32(1101386115); +emit_32(3274432512); +emit_32(3276224528); +emit_32(1100548774); +emit_32(3274432512); +emit_32(3275968545); +emit_32(1099100534); +emit_32(3274432512); +emit_32(3275712496); +emit_32(1097287388); +emit_32(3274432512); +emit_32(3275456512); +emit_32(1095246545); +emit_32(3274432512); +emit_32(3275200528); +emit_32(1092624685); +emit_32(3274432512); +emit_32(3274944545); +emit_32(1090219567); +emit_32(3274432512); +emit_32(3274688496); +emit_32(1082930516); +emit_32(3274432512); +emit_32(3274432512); +emit_32(1078918434); +emit_32(3274432512); +emit_32(3274176528); +emit_32(1079511215); +emit_32(3274432512); +emit_32(3273920545); +emit_32(1081732351); +emit_32(3274432512); +emit_32(3273664496); +emit_32(1079040698); +emit_32(3274432512); +emit_32(3273408512); +emit_32(1077451183); +emit_32(3274432512); +emit_32(3273152528); +emit_32(1082592749); +emit_32(3274432512); +emit_32(3272896545); +emit_32(1081429857); +emit_32(3274432512); +emit_32(3272640496); +emit_32(1077879421); +emit_32(3274432512); +emit_32(3272384512); +emit_32(1077261516); +emit_32(3274432512); +emit_32(3272128528); +emit_32(1073521036); +emit_32(3274432512); +emit_32(3271872545); +emit_32(1072559785); +emit_32(3274432512); +emit_32(3271616496); +emit_32(1078796380); +emit_32(3274432512); +emit_32(3271163904); +emit_32(1084493587); +emit_32(3274432512); +emit_32(3270651937); +emit_32(1086050198); +emit_32(3274432512); +emit_32(3270139970); +emit_32(1087277451); +emit_32(3274432512); +emit_32(3269627871); +emit_32(1086930582); +emit_32(3274432512); +emit_32(3269115904); +emit_32(1089544619); +emit_32(3274432512); +emit_32(3268603937); +emit_32(1092037839); +emit_32(3274432512); +emit_32(3268091970); +emit_32(1094101185); +emit_32(3274432512); +emit_32(3267579911); +emit_32(1096539125); +emit_32(3274432512); +emit_32(3267067904); +emit_32(1097682387); +emit_32(3274432512); +emit_32(3266555911); +emit_32(1098380005); +emit_32(3274432512); +emit_32(3266043904); +emit_32(1099089471); +emit_32(3274432512); +emit_32(3265531911); +emit_32(1100092801); +emit_32(3274432512); +emit_32(3265019904); +emit_32(1099999687); +emit_32(3274432512); +emit_32(3264507911); +emit_32(1100034290); +emit_32(3274432512); +emit_32(3263995904); +emit_32(1101354920); +emit_32(3274432512); +emit_32(3263483911); +emit_32(1102642361); +emit_32(3274432512); +emit_32(3262775296); +emit_32(1103324617); +emit_32(3274432512); +emit_32(3261751309); +emit_32(1104424364); +emit_32(3274432512); +emit_32(3260727296); +emit_32(1104375238); +emit_32(3274432512); +emit_32(3259703309); +emit_32(1104526075); +emit_32(3274432512); +emit_32(3258679296); +emit_32(1105221963); +emit_32(3274432512); +emit_32(3257655309); +emit_32(1106081009); +emit_32(3274432512); +emit_32(3256631296); +emit_32(1106625692); +emit_32(3274432512); +emit_32(3255607309); +emit_32(1106869957); +emit_32(3274432512); +emit_32(3254386688); +emit_32(1107361976); +emit_32(3274432512); +emit_32(3252338714); +emit_32(1107660584); +emit_32(3274432512); +emit_32(3250290688); +emit_32(1107794539); +emit_32(3274432512); +emit_32(3248242714); +emit_32(1108030993); +emit_32(3274432512); +emit_32(3245998080); +emit_32(1108270855); +emit_32(3274432512); +emit_32(3241902132); +emit_32(1108287055); +emit_32(3274432512); +emit_32(3237609472); +emit_32(1108250041); +emit_32(3274432512); +emit_32(3229220864); +emit_32(1108216958); +emit_32(3274432512); +emit_32(0); +emit_32(1108239267); +emit_32(3274432512); +emit_32(1081737216); +emit_32(1108184872); +emit_32(3274432512); +emit_32(3279552512); +emit_32(1102812126); +emit_32(3274688496); +emit_32(3279296528); +emit_32(1103117418); +emit_32(3274688496); +emit_32(3279040545); +emit_32(1103649885); +emit_32(3274688496); +emit_32(3278784496); +emit_32(1104097313); +emit_32(3274688496); +emit_32(3278528512); +emit_32(1104444654); +emit_32(3274688496); +emit_32(3278272528); +emit_32(1104063601); +emit_32(3274688496); +emit_32(3278016545); +emit_32(1103545814); +emit_32(3274688496); +emit_32(3277760496); +emit_32(1103584507); +emit_32(3274688496); +emit_32(3277504512); +emit_32(1102679009); +emit_32(3274688496); +emit_32(3277248528); +emit_32(1102258687); +emit_32(3274688496); +emit_32(3276992545); +emit_32(1101507854); +emit_32(3274688496); +emit_32(3276736496); +emit_32(1100690909); +emit_32(3274688496); +emit_32(3276480512); +emit_32(1100132332); +emit_32(3274688496); +emit_32(3276224528); +emit_32(1099019583); +emit_32(3274688496); +emit_32(3275968545); +emit_32(1097127376); +emit_32(3274688496); +emit_32(3275712496); +emit_32(1095215822); +emit_32(3274688496); +emit_32(3275456512); +emit_32(1092786166); +emit_32(3274688496); +emit_32(3275200528); +emit_32(1090176785); +emit_32(3274688496); +emit_32(3274944545); +emit_32(1085473439); +emit_32(3274688496); +emit_32(3274688496); +emit_32(1079921376); +emit_32(3274688496); +emit_32(3274432512); +emit_32(1075489590); +emit_32(3274688496); +emit_32(3274176528); +emit_32(1074320386); +emit_32(3274688496); +emit_32(3273920545); +emit_32(1075278281); +emit_32(3274688496); +emit_32(3273664496); +emit_32(1075627373); +emit_32(3274688496); +emit_32(3273408512); +emit_32(1075421307); +emit_32(3274688496); +emit_32(3273152528); +emit_32(1077995687); +emit_32(3274688496); +emit_32(3272896545); +emit_32(1076187271); +emit_32(3274688496); +emit_32(3272640496); +emit_32(1078197056); +emit_32(3274688496); +emit_32(3272384512); +emit_32(1077490273); +emit_32(3274688496); +emit_32(3272128528); +emit_32(1076221287); +emit_32(3274688496); +emit_32(3271872545); +emit_32(1074908092); +emit_32(3274688496); +emit_32(3271616496); +emit_32(1080775462); +emit_32(3274688496); +emit_32(3271163904); +emit_32(1084715256); +emit_32(3274688496); +emit_32(3270651937); +emit_32(1086583504); +emit_32(3274688496); +emit_32(3270139970); +emit_32(1086842502); +emit_32(3274688496); +emit_32(3269627871); +emit_32(1087987400); +emit_32(3274688496); +emit_32(3269115904); +emit_32(1090173891); +emit_32(3274688496); +emit_32(3268603937); +emit_32(1091923838); +emit_32(3274688496); +emit_32(3268091970); +emit_32(1093947988); +emit_32(3274688496); +emit_32(3267579911); +emit_32(1095834167); +emit_32(3274688496); +emit_32(3267067904); +emit_32(1096733950); +emit_32(3274688496); +emit_32(3266555911); +emit_32(1097836842); +emit_32(3274688496); +emit_32(3266043904); +emit_32(1098556060); +emit_32(3274688496); +emit_32(3265531911); +emit_32(1099108608); +emit_32(3274688496); +emit_32(3265019904); +emit_32(1098963275); +emit_32(3274688496); +emit_32(3264507911); +emit_32(1099819542); +emit_32(3274688496); +emit_32(3263995904); +emit_32(1100942305); +emit_32(3274688496); +emit_32(3263483911); +emit_32(1102197608); +emit_32(3274688496); +emit_32(3262775296); +emit_32(1103022837); +emit_32(3274688496); +emit_32(3261751309); +emit_32(1103801562); +emit_32(3274688496); +emit_32(3260727296); +emit_32(1104507988); +emit_32(3274688496); +emit_32(3259703309); +emit_32(1105154592); +emit_32(3274688496); +emit_32(3258679296); +emit_32(1105464079); +emit_32(3274688496); +emit_32(3257655309); +emit_32(1106093382); +emit_32(3274688496); +emit_32(3256631296); +emit_32(1106574311); +emit_32(3274688496); +emit_32(3255607309); +emit_32(1107051990); +emit_32(3274688496); +emit_32(3254386688); +emit_32(1107119571); +emit_32(3274688496); +emit_32(3252338714); +emit_32(1106870849); +emit_32(3274688496); +emit_32(3250290688); +emit_32(1107053878); +emit_32(3274688496); +emit_32(3248242714); +emit_32(1107270461); +emit_32(3274688496); +emit_32(3245998080); +emit_32(1107546577); +emit_32(3274688496); +emit_32(3241902132); +emit_32(1107761064); +emit_32(3274688496); +emit_32(3237609472); +emit_32(1107768718); +emit_32(3274688496); +emit_32(3229220864); +emit_32(1107959035); +emit_32(3274688496); +emit_32(0); +emit_32(1108028398); +emit_32(3274688496); +emit_32(1081737216); +emit_32(1108036289); +emit_32(3274688496); +emit_32(3279552512); +emit_32(1102194829); +emit_32(3274944545); +emit_32(3279296528); +emit_32(1102979740); +emit_32(3274944545); +emit_32(3279040545); +emit_32(1103411282); +emit_32(3274944545); +emit_32(3278784496); +emit_32(1104236354); +emit_32(3274944545); +emit_32(3278528512); +emit_32(1103902330); +emit_32(3274944545); +emit_32(3278272528); +emit_32(1103359430); +emit_32(3274944545); +emit_32(3278016545); +emit_32(1103570665); +emit_32(3274944545); +emit_32(3277760496); +emit_32(1102969255); +emit_32(3274944545); +emit_32(3277504512); +emit_32(1102559995); +emit_32(3274944545); +emit_32(3277248528); +emit_32(1101349467); +emit_32(3274944545); +emit_32(3276992545); +emit_32(1100611689); +emit_32(3274944545); +emit_32(3276736496); +emit_32(1099639921); +emit_32(3274944545); +emit_32(3276480512); +emit_32(1098874513); +emit_32(3274944545); +emit_32(3276224528); +emit_32(1096071040); +emit_32(3274944545); +emit_32(3275968545); +emit_32(1094641831); +emit_32(3274944545); +emit_32(3275712496); +emit_32(1092240938); +emit_32(3274944545); +emit_32(3275456512); +emit_32(1090400551); +emit_32(3274944545); +emit_32(3275200528); +emit_32(1086726760); +emit_32(3274944545); +emit_32(3274944545); +emit_32(1082213060); +emit_32(3274944545); +emit_32(3274688496); +emit_32(1073126939); +emit_32(3274944545); +emit_32(3274432512); +emit_32(1071516914); +emit_32(3274944545); +emit_32(3274176528); +emit_32(1065259968); +emit_32(3274944545); +emit_32(3273920545); +emit_32(1065288959); +emit_32(3274944545); +emit_32(3273664496); +emit_32(1065357243); +emit_32(3274944545); +emit_32(3273408512); +emit_32(1069920478); +emit_32(3274944545); +emit_32(3273152528); +emit_32(1062828597); +emit_32(3274944545); +emit_32(3272896545); +emit_32(1067908386); +emit_32(3274944545); +emit_32(3272640496); +emit_32(1068584424); +emit_32(3274944545); +emit_32(3272384512); +emit_32(1063954466); +emit_32(3274944545); +emit_32(3272128528); +emit_32(1068682235); +emit_32(3274944545); +emit_32(3271872545); +emit_32(1074494492); +emit_32(3274944545); +emit_32(3271616496); +emit_32(1082171809); +emit_32(3274944545); +emit_32(3271163904); +emit_32(1085758274); +emit_32(3274944545); +emit_32(3270651937); +emit_32(1088930825); +emit_32(3274944545); +emit_32(3270139970); +emit_32(1088551890); +emit_32(3274944545); +emit_32(3269627871); +emit_32(1090336420); +emit_32(3274944545); +emit_32(3269115904); +emit_32(1090128550); +emit_32(3274944545); +emit_32(3268603937); +emit_32(1092723147); +emit_32(3274944545); +emit_32(3268091970); +emit_32(1094514744); +emit_32(3274944545); +emit_32(3267579911); +emit_32(1095724381); +emit_32(3274944545); +emit_32(3267067904); +emit_32(1096378378); +emit_32(3274944545); +emit_32(3266555911); +emit_32(1096239232); +emit_32(3274944545); +emit_32(3266043904); +emit_32(1097003853); +emit_32(3274944545); +emit_32(3265531911); +emit_32(1097209165); +emit_32(3274944545); +emit_32(3265019904); +emit_32(1098262459); +emit_32(3274944545); +emit_32(3264507911); +emit_32(1099551893); +emit_32(3274944545); +emit_32(3263995904); +emit_32(1100443025); +emit_32(3274944545); +emit_32(3263483911); +emit_32(1101006635); +emit_32(3274944545); +emit_32(3262775296); +emit_32(1102193466); +emit_32(3274944545); +emit_32(3261751309); +emit_32(1103692405); +emit_32(3274944545); +emit_32(3260727296); +emit_32(1104818733); +emit_32(3274944545); +emit_32(3259703309); +emit_32(1105337935); +emit_32(3274944545); +emit_32(3258679296); +emit_32(1105923932); +emit_32(3274944545); +emit_32(3257655309); +emit_32(1106359720); +emit_32(3274944545); +emit_32(3256631296); +emit_32(1106972561); +emit_32(3274944545); +emit_32(3255607309); +emit_32(1106903040); +emit_32(3274944545); +emit_32(3254386688); +emit_32(1106792520); +emit_32(3274944545); +emit_32(3252338714); +emit_32(1106424313); +emit_32(3274944545); +emit_32(3250290688); +emit_32(1106536196); +emit_32(3274944545); +emit_32(3248242714); +emit_32(1106757026); +emit_32(3274944545); +emit_32(3245998080); +emit_32(1107206445); +emit_32(3274944545); +emit_32(3241902132); +emit_32(1107332773); +emit_32(3274944545); +emit_32(3237609472); +emit_32(1107315261); +emit_32(3274944545); +emit_32(3229220864); +emit_32(1107468589); +emit_32(3274944545); +emit_32(0); +emit_32(1107529276); +emit_32(3274944545); +emit_32(1081737216); +emit_32(1107544270); +emit_32(3274944545); +emit_32(3279552512); +emit_32(1102256485); +emit_32(3275200528); +emit_32(3279296528); +emit_32(1102476581); +emit_32(3275200528); +emit_32(3279040545); +emit_32(1102648600); +emit_32(3275200528); +emit_32(3278784496); +emit_32(1103151707); +emit_32(3275200528); +emit_32(3278528512); +emit_32(1103103315); +emit_32(3275200528); +emit_32(3278272528); +emit_32(1102817788); +emit_32(3275200528); +emit_32(3278016545); +emit_32(1103034843); +emit_32(3275200528); +emit_32(3277760496); +emit_32(1102561411); +emit_32(3275200528); +emit_32(3277504512); +emit_32(1101968179); +emit_32(3275200528); +emit_32(3277248528); +emit_32(1100968939); +emit_32(3275200528); +emit_32(3276992545); +emit_32(1099333370); +emit_32(3275200528); +emit_32(3276736496); +emit_32(1098046662); +emit_32(3275200528); +emit_32(3276480512); +emit_32(1096587778); +emit_32(3275200528); +emit_32(3276224528); +emit_32(1094379687); +emit_32(3275200528); +emit_32(3275968545); +emit_32(1092357099); +emit_32(3275200528); +emit_32(3275712496); +emit_32(1088608073); +emit_32(3275200528); +emit_32(3275456512); +emit_32(1087226532); +emit_32(3275200528); +emit_32(3275200528); +emit_32(1084547148); +emit_32(3275200528); +emit_32(3274944545); +emit_32(1081193131); +emit_32(3275200528); +emit_32(3274688496); +emit_32(1078008983); +emit_32(3275200528); +emit_32(3274432512); +emit_32(1069241755); +emit_32(3275200528); +emit_32(3274176528); +emit_32(1061457513); +emit_32(3275200528); +emit_32(3273920545); +emit_32(1073613814); +emit_32(3275200528); +emit_32(3273664496); +emit_32(1066147869); +emit_32(3275200528); +emit_32(3273408512); +emit_32(1067857803); +emit_32(3275200528); +emit_32(3273152528); +emit_32(3192938482); +emit_32(3275200528); +emit_32(3272896545); +emit_32(3204552258); +emit_32(3275200528); +emit_32(3272640496); +emit_32(3207444717); +emit_32(3275200528); +emit_32(3272384512); +emit_32(1042926373); +emit_32(3275200528); +emit_32(3272128528); +emit_32(1069107873); +emit_32(3275200528); +emit_32(3271872545); +emit_32(1068988587); +emit_32(3275200528); +emit_32(3271616496); +emit_32(1078926571); +emit_32(3275200528); +emit_32(3271163904); +emit_32(1083921610); +emit_32(3275200528); +emit_32(3270651937); +emit_32(1087667710); +emit_32(3275200528); +emit_32(3270139970); +emit_32(1090444214); +emit_32(3275200528); +emit_32(3269627871); +emit_32(1091070528); +emit_32(3275200528); +emit_32(3269115904); +emit_32(1090066034); +emit_32(3275200528); +emit_32(3268603937); +emit_32(1092043900); +emit_32(3275200528); +emit_32(3268091970); +emit_32(1094000103); +emit_32(3275200528); +emit_32(3267579911); +emit_32(1094961752); +emit_32(3275200528); +emit_32(3267067904); +emit_32(1095524208); +emit_32(3275200528); +emit_32(3266555911); +emit_32(1095676356); +emit_32(3275200528); +emit_32(3266043904); +emit_32(1095717880); +emit_32(3275200528); +emit_32(3265531911); +emit_32(1096110676); +emit_32(3275200528); +emit_32(3265019904); +emit_32(1097228249); +emit_32(3275200528); +emit_32(3264507911); +emit_32(1099051146); +emit_32(3275200528); +emit_32(3263995904); +emit_32(1099955228); +emit_32(3275200528); +emit_32(3263483911); +emit_32(1100759119); +emit_32(3275200528); +emit_32(3262775296); +emit_32(1101740848); +emit_32(3275200528); +emit_32(3261751309); +emit_32(1103570928); +emit_32(3275200528); +emit_32(3260727296); +emit_32(1104669783); +emit_32(3275200528); +emit_32(3259703309); +emit_32(1105525316); +emit_32(3275200528); +emit_32(3258679296); +emit_32(1106359248); +emit_32(3275200528); +emit_32(3257655309); +emit_32(1106517269); +emit_32(3275200528); +emit_32(3256631296); +emit_32(1106616045); +emit_32(3275200528); +emit_32(3255607309); +emit_32(1106583906); +emit_32(3275200528); +emit_32(3254386688); +emit_32(1106124944); +emit_32(3275200528); +emit_32(3252338714); +emit_32(1106384676); +emit_32(3275200528); +emit_32(3250290688); +emit_32(1106808354); +emit_32(3275200528); +emit_32(3248242714); +emit_32(1106794879); +emit_32(3275200528); +emit_32(3245998080); +emit_32(1106762741); +emit_32(3275200528); +emit_32(3241902132); +emit_32(1106491369); +emit_32(3275200528); +emit_32(3237609472); +emit_32(1106295705); +emit_32(3275200528); +emit_32(3229220864); +emit_32(1106289675); +emit_32(3275200528); +emit_32(0); +emit_32(1106247261); +emit_32(3275200528); +emit_32(1081737216); +emit_32(1106249096); +emit_32(3275200528); +emit_32(3279552512); +emit_32(1102201697); +emit_32(3275456512); +emit_32(3279296528); +emit_32(1102659820); +emit_32(3275456512); +emit_32(3279040545); +emit_32(1102694528); +emit_32(3275456512); +emit_32(3278784496); +emit_32(1102926001); +emit_32(3275456512); +emit_32(3278528512); +emit_32(1102847567); +emit_32(3275456512); +emit_32(3278272528); +emit_32(1102512443); +emit_32(3275456512); +emit_32(3278016545); +emit_32(1102182928); +emit_32(3275456512); +emit_32(3277760496); +emit_32(1101754112); +emit_32(3275456512); +emit_32(3277504512); +emit_32(1101220178); +emit_32(3275456512); +emit_32(3277248528); +emit_32(1100092591); +emit_32(3275456512); +emit_32(3276992545); +emit_32(1099095081); +emit_32(3275456512); +emit_32(3276736496); +emit_32(1095841821); +emit_32(3275456512); +emit_32(3276480512); +emit_32(1094285106); +emit_32(3275456512); +emit_32(3276224528); +emit_32(1092426242); +emit_32(3275456512); +emit_32(3275968545); +emit_32(1091118752); +emit_32(3275456512); +emit_32(3275712496); +emit_32(1086196076); +emit_32(3275456512); +emit_32(3275456512); +emit_32(1084558955); +emit_32(3275456512); +emit_32(3275200528); +emit_32(1081694099); +emit_32(3275456512); +emit_32(3274944545); +emit_32(1083225900); +emit_32(3275456512); +emit_32(3274688496); +emit_32(1082574231); +emit_32(3275456512); +emit_32(3274432512); +emit_32(1076364145); +emit_32(3275456512); +emit_32(3274176528); +emit_32(1072545021); +emit_32(3275456512); +emit_32(3273920545); +emit_32(1074334018); +emit_32(3275456512); +emit_32(3273664496); +emit_32(1076300014); +emit_32(3275456512); +emit_32(3273408512); +emit_32(1073720181); +emit_32(3275456512); +emit_32(3273152528); +emit_32(1062607037); +emit_32(3275456512); +emit_32(3272896545); +emit_32(3187287312); +emit_32(3275456512); +emit_32(3272640496); +emit_32(3214601911); +emit_32(3275456512); +emit_32(3272384512); +emit_32(1058984736); +emit_32(3275456512); +emit_32(3272128528); +emit_32(1074596288); +emit_32(3275456512); +emit_32(3271872545); +emit_32(1076067859); +emit_32(3275456512); +emit_32(3271616496); +emit_32(1078353210); +emit_32(3275456512); +emit_32(3271163904); +emit_32(1083728860); +emit_32(3275456512); +emit_32(3270651937); +emit_32(1087570235); +emit_32(3275456512); +emit_32(3270139970); +emit_32(1089274527); +emit_32(3275456512); +emit_32(3269627871); +emit_32(1090698305); +emit_32(3275456512); +emit_32(3269115904); +emit_32(1091459088); +emit_32(3275456512); +emit_32(3268603937); +emit_32(1092135063); +emit_32(3275456512); +emit_32(3268091970); +emit_32(1093474242); +emit_32(3275456512); +emit_32(3267579911); +emit_32(1094959235); +emit_32(3275456512); +emit_32(3267067904); +emit_32(1094655672); +emit_32(3275456512); +emit_32(3266555911); +emit_32(1095034523); +emit_32(3275456512); +emit_32(3266043904); +emit_32(1095524522); +emit_32(3275456512); +emit_32(3265531911); +emit_32(1096032557); +emit_32(3275456512); +emit_32(3265019904); +emit_32(1097045482); +emit_32(3275456512); +emit_32(3264507911); +emit_32(1098064278); +emit_32(3275456512); +emit_32(3263995904); +emit_32(1099811573); +emit_32(3275456512); +emit_32(3263483911); +emit_32(1101577899); +emit_32(3275456512); +emit_32(3262775296); +emit_32(1102983515); +emit_32(3275456512); +emit_32(3261751309); +emit_32(1103562015); +emit_32(3275456512); +emit_32(3260727296); +emit_32(1104461116); +emit_32(3275456512); +emit_32(3259703309); +emit_32(1105235752); +emit_32(3275456512); +emit_32(3258679296); +emit_32(1106329049); +emit_32(3275456512); +emit_32(3257655309); +emit_32(1106693744); +emit_32(3275456512); +emit_32(3256631296); +emit_32(1106663703); +emit_32(3275456512); +emit_32(3255607309); +emit_32(1106416710); +emit_32(3275456512); +emit_32(3254386688); +emit_32(1105642390); +emit_32(3275456512); +emit_32(3252338714); +emit_32(1106355631); +emit_32(3275456512); +emit_32(3250290688); +emit_32(1107058020); +emit_32(3275456512); +emit_32(3248242714); +emit_32(1106806414); +emit_32(3275456512); +emit_32(3245998080); +emit_32(1106545790); +emit_32(3275456512); +emit_32(3241902132); +emit_32(1106234783); +emit_32(3275456512); +emit_32(3237609472); +emit_32(1105605637); +emit_32(3275456512); +emit_32(3229220864); +emit_32(1105327922); +emit_32(3275456512); +emit_32(0); +emit_32(1104886890); +emit_32(3275456512); +emit_32(1081737216); +emit_32(1105010622); +emit_32(3275456512); +emit_32(3279552512); +emit_32(1101796265); +emit_32(3275712496); +emit_32(3279296528); +emit_32(1102154616); +emit_32(3275712496); +emit_32(3279040545); +emit_32(1102271480); +emit_32(3275712496); +emit_32(3278784496); +emit_32(1102377910); +emit_32(3275712496); +emit_32(3278528512); +emit_32(1102537923); +emit_32(3275712496); +emit_32(3278272528); +emit_32(1102370151); +emit_32(3275712496); +emit_32(3278016545); +emit_32(1101809268); +emit_32(3275712496); +emit_32(3277760496); +emit_32(1101123289); +emit_32(3275712496); +emit_32(3277504512); +emit_32(1100805466); +emit_32(3275712496); +emit_32(3277248528); +emit_32(1100000736); +emit_32(3275712496); +emit_32(3276992545); +emit_32(1098896743); +emit_32(3275712496); +emit_32(3276736496); +emit_32(1095489500); +emit_32(3275712496); +emit_32(3276480512); +emit_32(1092604647); +emit_32(3275712496); +emit_32(3276224528); +emit_32(1089231431); +emit_32(3275712496); +emit_32(3275968545); +emit_32(1086808717); +emit_32(3275712496); +emit_32(3275712496); +emit_32(1083957890); +emit_32(3275712496); +emit_32(3275456512); +emit_32(1083971564); +emit_32(3275712496); +emit_32(3275200528); +emit_32(1083249913); +emit_32(3275712496); +emit_32(3274944545); +emit_32(1084720771); +emit_32(3275712496); +emit_32(3274688496); +emit_32(1082599125); +emit_32(3275712496); +emit_32(3274432512); +emit_32(1079874484); +emit_32(3275712496); +emit_32(3274176528); +emit_32(1080545069); +emit_32(3275712496); +emit_32(3273920545); +emit_32(1078235685); +emit_32(3275712496); +emit_32(3273664496); +emit_32(1080867653); +emit_32(3275712496); +emit_32(3273408512); +emit_32(1082567206); +emit_32(3275712496); +emit_32(3273152528); +emit_32(1074733945); +emit_32(3275712496); +emit_32(3272896545); +emit_32(1058342370); +emit_32(3275712496); +emit_32(3272640496); +emit_32(1055267089); +emit_32(3275712496); +emit_32(3272384512); +emit_32(1075522138); +emit_32(3275712496); +emit_32(3272128528); +emit_32(1080234900); +emit_32(3275712496); +emit_32(3271872545); +emit_32(1080374822); +emit_32(3275712496); +emit_32(3271616496); +emit_32(1083014633); +emit_32(3275712496); +emit_32(3271163904); +emit_32(1084734109); +emit_32(3275712496); +emit_32(3270651937); +emit_32(1087494779); +emit_32(3275712496); +emit_32(3270139970); +emit_32(1088284965); +emit_32(3275712496); +emit_32(3269627871); +emit_32(1089959289); +emit_32(3275712496); +emit_32(3269115904); +emit_32(1090565890); +emit_32(3275712496); +emit_32(3268603937); +emit_32(1091730439); +emit_32(3275712496); +emit_32(3268091970); +emit_32(1093621042); +emit_32(3275712496); +emit_32(3267579911); +emit_32(1094912259); +emit_32(3275712496); +emit_32(3267067904); +emit_32(1094344350); +emit_32(3275712496); +emit_32(3266555911); +emit_32(1094347810); +emit_32(3275712496); +emit_32(3266043904); +emit_32(1095166958); +emit_32(3275712496); +emit_32(3265531911); +emit_32(1096161218); +emit_32(3275712496); +emit_32(3265019904); +emit_32(1097215246); +emit_32(3275712496); +emit_32(3264507911); +emit_32(1099003068); +emit_32(3275712496); +emit_32(3263995904); +emit_32(1100476894); +emit_32(3275712496); +emit_32(3263483911); +emit_32(1102488954); +emit_32(3275712496); +emit_32(3262775296); +emit_32(1103829035); +emit_32(3275712496); +emit_32(3261751309); +emit_32(1104228332); +emit_32(3275712496); +emit_32(3260727296); +emit_32(1103954339); +emit_32(3275712496); +emit_32(3259703309); +emit_32(1104646714); +emit_32(3275712496); +emit_32(3258679296); +emit_32(1105727324); +emit_32(3275712496); +emit_32(3257655309); +emit_32(1106170243); +emit_32(3275712496); +emit_32(3256631296); +emit_32(1106312482); +emit_32(3275712496); +emit_32(3255607309); +emit_32(1106119596); +emit_32(3275712496); +emit_32(3254386688); +emit_32(1105456687); +emit_32(3275712496); +emit_32(3252338714); +emit_32(1106005931); +emit_32(3275712496); +emit_32(3250290688); +emit_32(1106493309); +emit_32(3275712496); +emit_32(3248242714); +emit_32(1106443921); +emit_32(3275712496); +emit_32(3245998080); +emit_32(1106444917); +emit_32(3275712496); +emit_32(3241902132); +emit_32(1105728582); +emit_32(3275712496); +emit_32(3237609472); +emit_32(1105301445); +emit_32(3275712496); +emit_32(3229220864); +emit_32(1104221307); +emit_32(3275712496); +emit_32(0); +emit_32(1103753013); +emit_32(3275712496); +emit_32(1081737216); +emit_32(1103817710); +emit_32(3275712496); +emit_32(3279552512); +emit_32(1101413745); +emit_32(3275968545); +emit_32(3279296528); +emit_32(1101438858); +emit_32(3275968545); +emit_32(3279040545); +emit_32(1101644379); +emit_32(3275968545); +emit_32(3278784496); +emit_32(1102087560); +emit_32(3275968545); +emit_32(3278528512); +emit_32(1102163214); +emit_32(3275968545); +emit_32(3278272528); +emit_32(1102125308); +emit_32(3275968545); +emit_32(3278016545); +emit_32(1101537739); +emit_32(3275968545); +emit_32(3277760496); +emit_32(1100699350); +emit_32(3275968545); +emit_32(3277504512); +emit_32(1099847539); +emit_32(3275968545); +emit_32(3277248528); +emit_32(1099231239); +emit_32(3275968545); +emit_32(3276992545); +emit_32(1097551315); +emit_32(3275968545); +emit_32(3276736496); +emit_32(1094513590); +emit_32(3275968545); +emit_32(3276480512); +emit_32(1092236859); +emit_32(3275968545); +emit_32(3276224528); +emit_32(1087371425); +emit_32(3275968545); +emit_32(3275968545); +emit_32(1086821908); +emit_32(3275968545); +emit_32(3275712496); +emit_32(1087590871); +emit_32(3275968545); +emit_32(3275456512); +emit_32(1086797791); +emit_32(3275968545); +emit_32(3275200528); +emit_32(1085233189); +emit_32(3275968545); +emit_32(3274944545); +emit_32(1084580975); +emit_32(3275968545); +emit_32(3274688496); +emit_32(1083882351); +emit_32(3275968545); +emit_32(3274432512); +emit_32(1082486780); +emit_32(3275968545); +emit_32(3274176528); +emit_32(1085077623); +emit_32(3275968545); +emit_32(3273920545); +emit_32(1084260342); +emit_32(3275968545); +emit_32(3273664496); +emit_32(1083367290); +emit_32(3275968545); +emit_32(3273408512); +emit_32(1083666638); +emit_32(3275968545); +emit_32(3273152528); +emit_32(1078547909); +emit_32(3275968545); +emit_32(3272896545); +emit_32(1066770387); +emit_32(3275968545); +emit_32(3272640496); +emit_32(1075803744); +emit_32(3275968545); +emit_32(3272384512); +emit_32(1082085679); +emit_32(3275968545); +emit_32(3272128528); +emit_32(1084581185); +emit_32(3275968545); +emit_32(3271872545); +emit_32(1085673172); +emit_32(3275968545); +emit_32(3271616496); +emit_32(1085188394); +emit_32(3275968545); +emit_32(3271163904); +emit_32(1084552768); +emit_32(3275968545); +emit_32(3270651937); +emit_32(1087292635); +emit_32(3275968545); +emit_32(3270139970); +emit_32(1089188963); +emit_32(3275968545); +emit_32(3269627871); +emit_32(1090660503); +emit_32(3275968545); +emit_32(3269115904); +emit_32(1089489254); +emit_32(3275968545); +emit_32(3268603937); +emit_32(1091501157); +emit_32(3275968545); +emit_32(3268091970); +emit_32(1093299130); +emit_32(3275968545); +emit_32(3267579911); +emit_32(1093272076); +emit_32(3275968545); +emit_32(3267067904); +emit_32(1093175293); +emit_32(3275968545); +emit_32(3266555911); +emit_32(1094268538); +emit_32(3275968545); +emit_32(3266043904); +emit_32(1094260359); +emit_32(3275968545); +emit_32(3265531911); +emit_32(1097064147); +emit_32(3275968545); +emit_32(3265019904); +emit_32(1098974337); +emit_32(3275968545); +emit_32(3264507911); +emit_32(1099484050); +emit_32(3275968545); +emit_32(3263995904); +emit_32(1101248646); +emit_32(3275968545); +emit_32(3263483911); +emit_32(1102857634); +emit_32(3275968545); +emit_32(3262775296); +emit_32(1103688158); +emit_32(3275968545); +emit_32(3261751309); +emit_32(1104120486); +emit_32(3275968545); +emit_32(3260727296); +emit_32(1103897087); +emit_32(3275968545); +emit_32(3259703309); +emit_32(1103680084); +emit_32(3275968545); +emit_32(3258679296); +emit_32(1104794406); +emit_32(3275968545); +emit_32(3257655309); +emit_32(1105582830); +emit_32(3275968545); +emit_32(3256631296); +emit_32(1105670124); +emit_32(3275968545); +emit_32(3255607309); +emit_32(1105372486); +emit_32(3275968545); +emit_32(3254386688); +emit_32(1104924063); +emit_32(3275968545); +emit_32(3252338714); +emit_32(1105134250); +emit_32(3275968545); +emit_32(3250290688); +emit_32(1105252739); +emit_32(3275968545); +emit_32(3248242714); +emit_32(1105713693); +emit_32(3275968545); +emit_32(3245998080); +emit_32(1105505760); +emit_32(3275968545); +emit_32(3241902132); +emit_32(1104815692); +emit_32(3275968545); +emit_32(3237609472); +emit_32(1104575830); +emit_32(3275968545); +emit_32(3229220864); +emit_32(1103816871); +emit_32(3275968545); +emit_32(0); +emit_32(1102689547); +emit_32(3275968545); +emit_32(1081737216); +emit_32(1102629726); +emit_32(3275968545); +emit_32(3279552512); +emit_32(1101111021); +emit_32(3276224528); +emit_32(3279296528); +emit_32(1100789580); +emit_32(3276224528); +emit_32(3279040545); +emit_32(1101187724); +emit_32(3276224528); +emit_32(3278784496); +emit_32(1101544450); +emit_32(3276224528); +emit_32(3278528512); +emit_32(1101809215); +emit_32(3276224528); +emit_32(3278272528); +emit_32(1101364409); +emit_32(3276224528); +emit_32(3278016545); +emit_32(1100966999); +emit_32(3276224528); +emit_32(3277760496); +emit_32(1100334603); +emit_32(3276224528); +emit_32(3277504512); +emit_32(1099684538); +emit_32(3276224528); +emit_32(3277248528); +emit_32(1097905000); +emit_32(3276224528); +emit_32(3276992545); +emit_32(1096189949); +emit_32(3276224528); +emit_32(3276736496); +emit_32(1093369908); +emit_32(3276224528); +emit_32(3276480512); +emit_32(1090856430); +emit_32(3276224528); +emit_32(3276224528); +emit_32(1089059569); +emit_32(3276224528); +emit_32(3275968545); +emit_32(1088475764); +emit_32(3276224528); +emit_32(3275712496); +emit_32(1089236128); +emit_32(3276224528); +emit_32(3275456512); +emit_32(1088316066); +emit_32(3276224528); +emit_32(3275200528); +emit_32(1087626375); +emit_32(3276224528); +emit_32(3274944545); +emit_32(1087484629); +emit_32(3276224528); +emit_32(3274688496); +emit_32(1087038397); +emit_32(3276224528); +emit_32(3274432512); +emit_32(1084227794); +emit_32(3276224528); +emit_32(3274176528); +emit_32(1087406111); +emit_32(3276224528); +emit_32(3273920545); +emit_32(1087788003); +emit_32(3276224528); +emit_32(3273664496); +emit_32(1085636639); +emit_32(3276224528); +emit_32(3273408512); +emit_32(1084012206); +emit_32(3276224528); +emit_32(3273152528); +emit_32(1079773149); +emit_32(3276224528); +emit_32(3272896545); +emit_32(1074099640); +emit_32(3276224528); +emit_32(3272640496); +emit_32(1081570199); +emit_32(3276224528); +emit_32(3272384512); +emit_32(1086505511); +emit_32(3276224528); +emit_32(3272128528); +emit_32(1088421783); +emit_32(3276224528); +emit_32(3271872545); +emit_32(1090863057); +emit_32(3276224528); +emit_32(3271616496); +emit_32(1091104240); +emit_32(3276224528); +emit_32(3271163904); +emit_32(1090801149); +emit_32(3276224528); +emit_32(3270651937); +emit_32(1091187329); +emit_32(3276224528); +emit_32(3270139970); +emit_32(1091684071); +emit_32(3276224528); +emit_32(3269627871); +emit_32(1092334691); +emit_32(3276224528); +emit_32(3269115904); +emit_32(1091715549); +emit_32(3276224528); +emit_32(3268603937); +emit_32(1091937239); +emit_32(3276224528); +emit_32(3268091970); +emit_32(1092157765); +emit_32(3276224528); +emit_32(3267579911); +emit_32(1092352643); +emit_32(3276224528); +emit_32(3267067904); +emit_32(1093649249); +emit_32(3276224528); +emit_32(3266555911); +emit_32(1095125015); +emit_32(3276224528); +emit_32(3266043904); +emit_32(1096433743); +emit_32(3276224528); +emit_32(3265531911); +emit_32(1098895694); +emit_32(3276224528); +emit_32(3265019904); +emit_32(1099846805); +emit_32(3276224528); +emit_32(3264507911); +emit_32(1100394109); +emit_32(3276224528); +emit_32(3263995904); +emit_32(1101147301); +emit_32(3276224528); +emit_32(3263483911); +emit_32(1102840332); +emit_32(3276224528); +emit_32(3262775296); +emit_32(1103420352); +emit_32(3276224528); +emit_32(3261751309); +emit_32(1103784994); +emit_32(3276224528); +emit_32(3260727296); +emit_32(1103743890); +emit_32(3276224528); +emit_32(3259703309); +emit_32(1103097863); +emit_32(3276224528); +emit_32(3258679296); +emit_32(1103438807); +emit_32(3276224528); +emit_32(3257655309); +emit_32(1104475534); +emit_32(3276224528); +emit_32(3256631296); +emit_32(1104961811); +emit_32(3276224528); +emit_32(3255607309); +emit_32(1104919763); +emit_32(3276224528); +emit_32(3254386688); +emit_32(1104827174); +emit_32(3276224528); +emit_32(3252338714); +emit_32(1104406905); +emit_32(3276224528); +emit_32(3250290688); +emit_32(1104336860); +emit_32(3276224528); +emit_32(3248242714); +emit_32(1104244218); +emit_32(3276224528); +emit_32(3245998080); +emit_32(1104283592); +emit_32(3276224528); +emit_32(3241902132); +emit_32(1104029627); +emit_32(3276224528); +emit_32(3237609472); +emit_32(1103767326); +emit_32(3276224528); +emit_32(3229220864); +emit_32(1102780406); +emit_32(3276224528); +emit_32(0); +emit_32(1102353111); +emit_32(3276224528); +emit_32(1081737216); +emit_32(1101834591); +emit_32(3276224528); +emit_32(3279552512); +emit_32(1100665376); +emit_32(3276480512); +emit_32(3279296528); +emit_32(1100635911); +emit_32(3276480512); +emit_32(3279040545); +emit_32(1100599001); +emit_32(3276480512); +emit_32(3278784496); +emit_32(1100704593); +emit_32(3276480512); +emit_32(3278528512); +emit_32(1100706847); +emit_32(3276480512); +emit_32(3278272528); +emit_32(1100641940); +emit_32(3276480512); +emit_32(3278016545); +emit_32(1100067373); +emit_32(3276480512); +emit_32(3277760496); +emit_32(1099870817); +emit_32(3276480512); +emit_32(3277504512); +emit_32(1099360738); +emit_32(3276480512); +emit_32(3277248528); +emit_32(1097705875); +emit_32(3276480512); +emit_32(3276992545); +emit_32(1095158989); +emit_32(3276480512); +emit_32(3276736496); +emit_32(1092654884); +emit_32(3276480512); +emit_32(3276480512); +emit_32(1091569199); +emit_32(3276480512); +emit_32(3276224528); +emit_32(1091162174); +emit_32(3276480512); +emit_32(3275968545); +emit_32(1090619556); +emit_32(3276480512); +emit_32(3275712496); +emit_32(1090709283); +emit_32(3276480512); +emit_32(3275456512); +emit_32(1090001987); +emit_32(3276480512); +emit_32(3275200528); +emit_32(1089948027); +emit_32(3276480512); +emit_32(3274944545); +emit_32(1089924476); +emit_32(3276480512); +emit_32(3274688496); +emit_32(1089951446); +emit_32(3276480512); +emit_32(3274432512); +emit_32(1087795175); +emit_32(3276480512); +emit_32(3274176528); +emit_32(1087558449); +emit_32(3276480512); +emit_32(3273920545); +emit_32(1087330845); +emit_32(3276480512); +emit_32(3273664496); +emit_32(1086250308); +emit_32(3276480512); +emit_32(3273408512); +emit_32(1086015469); +emit_32(3276480512); +emit_32(3273152528); +emit_32(1084541779); +emit_32(3276480512); +emit_32(3272896545); +emit_32(1083402271); +emit_32(3276480512); +emit_32(3272640496); +emit_32(1087092084); +emit_32(3276480512); +emit_32(3272384512); +emit_32(1089818319); +emit_32(3276480512); +emit_32(3272128528); +emit_32(1091233068); +emit_32(3276480512); +emit_32(3271872545); +emit_32(1092479059); +emit_32(3276480512); +emit_32(3271616496); +emit_32(1092547835); +emit_32(3276480512); +emit_32(3271163904); +emit_32(1093621252); +emit_32(3276480512); +emit_32(3270651937); +emit_32(1093588327); +emit_32(3276480512); +emit_32(3270139970); +emit_32(1094120689); +emit_32(3276480512); +emit_32(3269627871); +emit_32(1093722230); +emit_32(3276480512); +emit_32(3269115904); +emit_32(1093927017); +emit_32(3276480512); +emit_32(3268603937); +emit_32(1094469340); +emit_32(3276480512); +emit_32(3268091970); +emit_32(1093549320); +emit_32(3276480512); +emit_32(3267579911); +emit_32(1094062283); +emit_32(3276480512); +emit_32(3267067904); +emit_32(1094889505); +emit_32(3276480512); +emit_32(3266555911); +emit_32(1095517287); +emit_32(3276480512); +emit_32(3266043904); +emit_32(1098112303); +emit_32(3276480512); +emit_32(3265531911); +emit_32(1099944847); +emit_32(3276480512); +emit_32(3265019904); +emit_32(1100805204); +emit_32(3276480512); +emit_32(3264507911); +emit_32(1100813068); +emit_32(3276480512); +emit_32(3263995904); +emit_32(1100890191); +emit_32(3276480512); +emit_32(3263483911); +emit_32(1101765018); +emit_32(3276480512); +emit_32(3262775296); +emit_32(1103166125); +emit_32(3276480512); +emit_32(3261751309); +emit_32(1103581413); +emit_32(3276480512); +emit_32(3260727296); +emit_32(1103239001); +emit_32(3276480512); +emit_32(3259703309); +emit_32(1103115059); +emit_32(3276480512); +emit_32(3258679296); +emit_32(1102634916); +emit_32(3276480512); +emit_32(3257655309); +emit_32(1103117366); +emit_32(3276480512); +emit_32(3256631296); +emit_32(1103874962); +emit_32(3276480512); +emit_32(3255607309); +emit_32(1104123108); +emit_32(3276480512); +emit_32(3254386688); +emit_32(1103935308); +emit_32(3276480512); +emit_32(3252338714); +emit_32(1103665666); +emit_32(3276480512); +emit_32(3250290688); +emit_32(1103444679); +emit_32(3276480512); +emit_32(3248242714); +emit_32(1103627551); +emit_32(3276480512); +emit_32(3245998080); +emit_32(1103736865); +emit_32(3276480512); +emit_32(3241902132); +emit_32(1103212210); +emit_32(3276480512); +emit_32(3237609472); +emit_32(1102649124); +emit_32(3276480512); +emit_32(3229220864); +emit_32(1101755266); +emit_32(3276480512); +emit_32(0); +emit_32(1101465335); +emit_32(3276480512); +emit_32(1081737216); +emit_32(1101171471); +emit_32(3276480512); +emit_32(3279552512); +emit_32(1100210871); +emit_32(3276736496); +emit_32(3279296528); +emit_32(1100433483); +emit_32(3276736496); +emit_32(3279040545); +emit_32(1099833855); +emit_32(3276736496); +emit_32(3278784496); +emit_32(1100155611); +emit_32(3276736496); +emit_32(3278528512); +emit_32(1099838049); +emit_32(3276736496); +emit_32(3278272528); +emit_32(1100058775); +emit_32(3276736496); +emit_32(3278016545); +emit_32(1099672899); +emit_32(3276736496); +emit_32(3277760496); +emit_32(1099187932); +emit_32(3276736496); +emit_32(3277504512); +emit_32(1098271477); +emit_32(3276736496); +emit_32(3277248528); +emit_32(1096846357); +emit_32(3276736496); +emit_32(3276992545); +emit_32(1094240646); +emit_32(3276736496); +emit_32(3276736496); +emit_32(1093510208); +emit_32(3276736496); +emit_32(3276480512); +emit_32(1093157677); +emit_32(3276736496); +emit_32(3276224528); +emit_32(1093135971); +emit_32(3276736496); +emit_32(3275968545); +emit_32(1092174626); +emit_32(3276736496); +emit_32(3275712496); +emit_32(1092008343); +emit_32(3276736496); +emit_32(3275456512); +emit_32(1091657206); +emit_32(3276736496); +emit_32(3275200528); +emit_32(1090624757); +emit_32(3276736496); +emit_32(3274944545); +emit_32(1091109598); +emit_32(3276736496); +emit_32(3274688496); +emit_32(1091299097); +emit_32(3276736496); +emit_32(3274432512); +emit_32(1091108078); +emit_32(3276736496); +emit_32(3274176528); +emit_32(1088708464); +emit_32(3276736496); +emit_32(3273920545); +emit_32(1088400979); +emit_32(3276736496); +emit_32(3273664496); +emit_32(1088671869); +emit_32(3276736496); +emit_32(3273408512); +emit_32(1086687543); +emit_32(3276736496); +emit_32(3273152528); +emit_32(1087251530); +emit_32(3276736496); +emit_32(3272896545); +emit_32(1088748687); +emit_32(3276736496); +emit_32(3272640496); +emit_32(1089984811); +emit_32(3276736496); +emit_32(3272384512); +emit_32(1091974946); +emit_32(3276736496); +emit_32(3272128528); +emit_32(1092819930); +emit_32(3276736496); +emit_32(3271872545); +emit_32(1093160927); +emit_32(3276736496); +emit_32(3271616496); +emit_32(1094132118); +emit_32(3276736496); +emit_32(3271163904); +emit_32(1095157206); +emit_32(3276736496); +emit_32(3270651937); +emit_32(1095618580); +emit_32(3276736496); +emit_32(3270139970); +emit_32(1096186069); +emit_32(3276736496); +emit_32(3269627871); +emit_32(1095671113); +emit_32(3276736496); +emit_32(3269115904); +emit_32(1095678348); +emit_32(3276736496); +emit_32(3268603937); +emit_32(1095989776); +emit_32(3276736496); +emit_32(3268091970); +emit_32(1095663878); +emit_32(3276736496); +emit_32(3267579911); +emit_32(1095691351); +emit_32(3276736496); +emit_32(3267067904); +emit_32(1096383306); +emit_32(3276736496); +emit_32(3266555911); +emit_32(1097384277); +emit_32(3276736496); +emit_32(3266043904); +emit_32(1099122606); +emit_32(3276736496); +emit_32(3265531911); +emit_32(1100558316); +emit_32(3276736496); +emit_32(3265019904); +emit_32(1101303015); +emit_32(3276736496); +emit_32(3264507911); +emit_32(1101081556); +emit_32(3276736496); +emit_32(3263995904); +emit_32(1100970826); +emit_32(3276736496); +emit_32(3263483911); +emit_32(1101242984); +emit_32(3276736496); +emit_32(3262775296); +emit_32(1102057728); +emit_32(3276736496); +emit_32(3261751309); +emit_32(1102727925); +emit_32(3276736496); +emit_32(3260727296); +emit_32(1102747638); +emit_32(3276736496); +emit_32(3259703309); +emit_32(1102584322); +emit_32(3276736496); +emit_32(3258679296); +emit_32(1102811234); +emit_32(3276736496); +emit_32(3257655309); +emit_32(1102829742); +emit_32(3276736496); +emit_32(3256631296); +emit_32(1103344278); +emit_32(3276736496); +emit_32(3255607309); +emit_32(1103685065); +emit_32(3276736496); +emit_32(3254386688); +emit_32(1103826413); +emit_32(3276736496); +emit_32(3252338714); +emit_32(1103104626); +emit_32(3276736496); +emit_32(3250290688); +emit_32(1102261571); +emit_32(3276736496); +emit_32(3248242714); +emit_32(1102829899); +emit_32(3276736496); +emit_32(3245998080); +emit_32(1103020530); +emit_32(3276736496); +emit_32(3241902132); +emit_32(1102258477); +emit_32(3276736496); +emit_32(3237609472); +emit_32(1101911084); +emit_32(3276736496); +emit_32(3229220864); +emit_32(1101090364); +emit_32(3276736496); +emit_32(0); +emit_32(1100301573); +emit_32(3276736496); +emit_32(1081737216); +emit_32(1100121322); +emit_32(3276736496); +emit_32(3279552512); +emit_32(1099773614); +emit_32(3276992545); +emit_32(3279296528); +emit_32(1099858287); +emit_32(3276992545); +emit_32(3279040545); +emit_32(1099688523); +emit_32(3276992545); +emit_32(3278784496); +emit_32(1099279211); +emit_32(3276992545); +emit_32(3278528512); +emit_32(1098814430); +emit_32(3276992545); +emit_32(3278272528); +emit_32(1099260651); +emit_32(3276992545); +emit_32(3278016545); +emit_32(1099269983); +emit_32(3276992545); +emit_32(3277760496); +emit_32(1097458201); +emit_32(3276992545); +emit_32(3277504512); +emit_32(1096491624); +emit_32(3276992545); +emit_32(3277248528); +emit_32(1094951371); +emit_32(3276992545); +emit_32(3276992545); +emit_32(1094228482); +emit_32(3276992545); +emit_32(3276736496); +emit_32(1094425929); +emit_32(3276992545); +emit_32(3276480512); +emit_32(1094168504); +emit_32(3276992545); +emit_32(3276224528); +emit_32(1094579965); +emit_32(3276992545); +emit_32(3275968545); +emit_32(1094436205); +emit_32(3276992545); +emit_32(3275712496); +emit_32(1093278787); +emit_32(3276992545); +emit_32(3275456512); +emit_32(1093351873); +emit_32(3276992545); +emit_32(3275200528); +emit_32(1092131865); +emit_32(3276992545); +emit_32(3274944545); +emit_32(1092250753); +emit_32(3276992545); +emit_32(3274688496); +emit_32(1092049888); +emit_32(3276992545); +emit_32(3274432512); +emit_32(1092031821); +emit_32(3276992545); +emit_32(3274176528); +emit_32(1090545517); +emit_32(3276992545); +emit_32(3273920545); +emit_32(1087815580); +emit_32(3276992545); +emit_32(3273664496); +emit_32(1088895152); +emit_32(3276992545); +emit_32(3273408512); +emit_32(1089520607); +emit_32(3276992545); +emit_32(3273152528); +emit_32(1091009407); +emit_32(3276992545); +emit_32(3272896545); +emit_32(1091156585); +emit_32(3276992545); +emit_32(3272640496); +emit_32(1092501331); +emit_32(3276992545); +emit_32(3272384512); +emit_32(1093577002); +emit_32(3276992545); +emit_32(3272128528); +emit_32(1094131384); +emit_32(3276992545); +emit_32(3271872545); +emit_32(1095441999); +emit_32(3276992545); +emit_32(3271616496); +emit_32(1096144126); +emit_32(3276992545); +emit_32(3271163904); +emit_32(1097375574); +emit_32(3276992545); +emit_32(3270651937); +emit_32(1097616746); +emit_32(3276992545); +emit_32(3270139970); +emit_32(1098727817); +emit_32(3276992545); +emit_32(3269627871); +emit_32(1098389442); +emit_32(3276992545); +emit_32(3269115904); +emit_32(1097181902); +emit_32(3276992545); +emit_32(3268603937); +emit_32(1097851522); +emit_32(3276992545); +emit_32(3268091970); +emit_32(1097817234); +emit_32(3276992545); +emit_32(3267579911); +emit_32(1098027054); +emit_32(3276992545); +emit_32(3267067904); +emit_32(1098025691); +emit_32(3276992545); +emit_32(3266555911); +emit_32(1099190816); +emit_32(3276992545); +emit_32(3266043904); +emit_32(1100082420); +emit_32(3276992545); +emit_32(3265531911); +emit_32(1100900257); +emit_32(3276992545); +emit_32(3265019904); +emit_32(1101488351); +emit_32(3276992545); +emit_32(3264507911); +emit_32(1101299188); +emit_32(3276992545); +emit_32(3263995904); +emit_32(1101555565); +emit_32(3276992545); +emit_32(3263483911); +emit_32(1101541671); +emit_32(3276992545); +emit_32(3262775296); +emit_32(1101907414); +emit_32(3276992545); +emit_32(3261751309); +emit_32(1102511446); +emit_32(3276992545); +emit_32(3260727296); +emit_32(1102908490); +emit_32(3276992545); +emit_32(3259703309); +emit_32(1102906130); +emit_32(3276992545); +emit_32(3258679296); +emit_32(1102873153); +emit_32(3276992545); +emit_32(3257655309); +emit_32(1103170057); +emit_32(3276992545); +emit_32(3256631296); +emit_32(1103437234); +emit_32(3276992545); +emit_32(3255607309); +emit_32(1103795952); +emit_32(3276992545); +emit_32(3254386688); +emit_32(1103493018); +emit_32(3276992545); +emit_32(3252338714); +emit_32(1102175378); +emit_32(3276992545); +emit_32(3250290688); +emit_32(1101859861); +emit_32(3276992545); +emit_32(3248242714); +emit_32(1102213756); +emit_32(3276992545); +emit_32(3245998080); +emit_32(1102152676); +emit_32(3276992545); +emit_32(3241902132); +emit_32(1101638559); +emit_32(3276992545); +emit_32(3237609472); +emit_32(1101182167); +emit_32(3276992545); +emit_32(3229220864); +emit_32(1100207830); +emit_32(3276992545); +emit_32(0); +emit_32(1099526308); +emit_32(3276992545); +emit_32(1081737216); +emit_32(1099020213); +emit_32(3276992545); +emit_32(3279552512); +emit_32(1099775187); +emit_32(3277248528); +emit_32(3279296528); +emit_32(1099528667); +emit_32(3277248528); +emit_32(3279040545); +emit_32(1099794376); +emit_32(3277248528); +emit_32(3278784496); +emit_32(1099371223); +emit_32(3277248528); +emit_32(3278528512); +emit_32(1097562220); +emit_32(3277248528); +emit_32(3278272528); +emit_32(1098308597); +emit_32(3277248528); +emit_32(3278016545); +emit_32(1097403885); +emit_32(3277248528); +emit_32(3277760496); +emit_32(1095946050); +emit_32(3277248528); +emit_32(3277504512); +emit_32(1094735364); +emit_32(3277248528); +emit_32(3277248528); +emit_32(1094678007); +emit_32(3277248528); +emit_32(3276992545); +emit_32(1095274332); +emit_32(3277248528); +emit_32(3276736496); +emit_32(1095321728); +emit_32(3277248528); +emit_32(3276480512); +emit_32(1095493170); +emit_32(3277248528); +emit_32(3276224528); +emit_32(1095747135); +emit_32(3277248528); +emit_32(3275968545); +emit_32(1095522216); +emit_32(3277248528); +emit_32(3275712496); +emit_32(1094690590); +emit_32(3277248528); +emit_32(3275456512); +emit_32(1094638056); +emit_32(3277248528); +emit_32(3275200528); +emit_32(1093416570); +emit_32(3277248528); +emit_32(3274944545); +emit_32(1092979314); +emit_32(3277248528); +emit_32(3274688496); +emit_32(1092811961); +emit_32(3277248528); +emit_32(3274432512); +emit_32(1093012554); +emit_32(3277248528); +emit_32(3274176528); +emit_32(1091374384); +emit_32(3277248528); +emit_32(3273920545); +emit_32(1089032851); +emit_32(3277248528); +emit_32(3273664496); +emit_32(1090993437); +emit_32(3277248528); +emit_32(3273408512); +emit_32(1092377368); +emit_32(3277248528); +emit_32(3273152528); +emit_32(1093095077); +emit_32(3277248528); +emit_32(3272896545); +emit_32(1093715519); +emit_32(3277248528); +emit_32(3272640496); +emit_32(1094921486); +emit_32(3277248528); +emit_32(3272384512); +emit_32(1096565129); +emit_32(3277248528); +emit_32(3272128528); +emit_32(1097767112); +emit_32(3277248528); +emit_32(3271872545); +emit_32(1098339005); +emit_32(3277248528); +emit_32(3271616496); +emit_32(1099085958); +emit_32(3277248528); +emit_32(3271163904); +emit_32(1099220281); +emit_32(3277248528); +emit_32(3270651937); +emit_32(1099411227); +emit_32(3277248528); +emit_32(3270139970); +emit_32(1099194958); +emit_32(3277248528); +emit_32(3269627871); +emit_32(1099275174); +emit_32(3277248528); +emit_32(3269115904); +emit_32(1099273968); +emit_32(3277248528); +emit_32(3268603937); +emit_32(1098980681); +emit_32(3277248528); +emit_32(3268091970); +emit_32(1098318243); +emit_32(3277248528); +emit_32(3267579911); +emit_32(1098900413); +emit_32(3277248528); +emit_32(3267067904); +emit_32(1099325086); +emit_32(3277248528); +emit_32(3266555911); +emit_32(1100242695); +emit_32(3277248528); +emit_32(3266043904); +emit_32(1101153383); +emit_32(3277248528); +emit_32(3265531911); +emit_32(1101448505); +emit_32(3277248528); +emit_32(3265019904); +emit_32(1101666976); +emit_32(3277248528); +emit_32(3264507911); +emit_32(1102125203); +emit_32(3277248528); +emit_32(3263995904); +emit_32(1102137996); +emit_32(3277248528); +emit_32(3263483911); +emit_32(1101933104); +emit_32(3277248528); +emit_32(3262775296); +emit_32(1102603669); +emit_32(3277248528); +emit_32(3261751309); +emit_32(1102617615); +emit_32(3277248528); +emit_32(3260727296); +emit_32(1103215355); +emit_32(3277248528); +emit_32(3259703309); +emit_32(1103071281); +emit_32(3277248528); +emit_32(3258679296); +emit_32(1102637957); +emit_32(3277248528); +emit_32(3257655309); +emit_32(1103331118); +emit_32(3277248528); +emit_32(3256631296); +emit_32(1104015943); +emit_32(3277248528); +emit_32(3255607309); +emit_32(1103436710); +emit_32(3277248528); +emit_32(3254386688); +emit_32(1102725618); +emit_32(3277248528); +emit_32(3252338714); +emit_32(1101979084); +emit_32(3277248528); +emit_32(3250290688); +emit_32(1101652401); +emit_32(3277248528); +emit_32(3248242714); +emit_32(1101690778); +emit_32(3277248528); +emit_32(3245998080); +emit_32(1101385643); +emit_32(3277248528); +emit_32(3241902132); +emit_32(1100831785); +emit_32(3277248528); +emit_32(3237609472); +emit_32(1100385721); +emit_32(3277248528); +emit_32(3229220864); +emit_32(1099248645); +emit_32(3277248528); +emit_32(0); +emit_32(1097731041); +emit_32(3277248528); +emit_32(1081737216); +emit_32(1097108292); +emit_32(3277248528); +emit_32(3279552512); +emit_32(1099513148); +emit_32(3277504512); +emit_32(3279296528); +emit_32(1099237687); +emit_32(3277504512); +emit_32(3279040545); +emit_32(1099823002); +emit_32(3277504512); +emit_32(3278784496); +emit_32(1099636094); +emit_32(3277504512); +emit_32(3278528512); +emit_32(1098146172); +emit_32(3277504512); +emit_32(3278272528); +emit_32(1096179673); +emit_32(3277504512); +emit_32(3278016545); +emit_32(1095619209); +emit_32(3277504512); +emit_32(3277760496); +emit_32(1095051510); +emit_32(3277504512); +emit_32(3277504512); +emit_32(1094914041); +emit_32(3277504512); +emit_32(3277248528); +emit_32(1095143680); +emit_32(3277504512); +emit_32(3276992545); +emit_32(1095686213); +emit_32(3277504512); +emit_32(3276736496); +emit_32(1096167719); +emit_32(3277504512); +emit_32(3276480512); +emit_32(1096217212); +emit_32(3277504512); +emit_32(3276224528); +emit_32(1095494009); +emit_32(3277504512); +emit_32(3275968545); +emit_32(1095282721); +emit_32(3277504512); +emit_32(3275712496); +emit_32(1094864024); +emit_32(3277504512); +emit_32(3275456512); +emit_32(1095079402); +emit_32(3277504512); +emit_32(3275200528); +emit_32(1093909506); +emit_32(3277504512); +emit_32(3274944545); +emit_32(1094085876); +emit_32(3277504512); +emit_32(3274688496); +emit_32(1093922193); +emit_32(3277504512); +emit_32(3274432512); +emit_32(1093002173); +emit_32(3277504512); +emit_32(3274176528); +emit_32(1091809376); +emit_32(3277504512); +emit_32(3273920545); +emit_32(1090895154); +emit_32(3277504512); +emit_32(3273664496); +emit_32(1092994938); +emit_32(3277504512); +emit_32(3273408512); +emit_32(1094548613); +emit_32(3277504512); +emit_32(3273152528); +emit_32(1095987783); +emit_32(3277504512); +emit_32(3272896545); +emit_32(1096416022); +emit_32(3277504512); +emit_32(3272640496); +emit_32(1097685323); +emit_32(3277504512); +emit_32(3272384512); +emit_32(1098440927); +emit_32(3277504512); +emit_32(3272128528); +emit_32(1099405512); +emit_32(3277504512); +emit_32(3271872545); +emit_32(1099913599); +emit_32(3277504512); +emit_32(3271616496); +emit_32(1099823422); +emit_32(3277504512); +emit_32(3271163904); +emit_32(1099863373); +emit_32(3277504512); +emit_32(3270651937); +emit_32(1099663042); +emit_32(3277504512); +emit_32(3270139970); +emit_32(1099637929); +emit_32(3277504512); +emit_32(3269627871); +emit_32(1099948936); +emit_32(3277504512); +emit_32(3269115904); +emit_32(1099967024); +emit_32(3277504512); +emit_32(3268603937); +emit_32(1099787770); +emit_32(3277504512); +emit_32(3268091970); +emit_32(1099629540); +emit_32(3277504512); +emit_32(3267579911); +emit_32(1099729889); +emit_32(3277504512); +emit_32(3267067904); +emit_32(1099959737); +emit_32(3277504512); +emit_32(3266555911); +emit_32(1100461585); +emit_32(3277504512); +emit_32(3266043904); +emit_32(1101443996); +emit_32(3277504512); +emit_32(3265531911); +emit_32(1102161904); +emit_32(3277504512); +emit_32(3265019904); +emit_32(1102642623); +emit_32(3277504512); +emit_32(3264507911); +emit_32(1102254703); +emit_32(3277504512); +emit_32(3263995904); +emit_32(1102207464); +emit_32(3277504512); +emit_32(3263483911); +emit_32(1101959424); +emit_32(3277504512); +emit_32(3262775296); +emit_32(1102549248); +emit_32(3277504512); +emit_32(3261751309); +emit_32(1103235488); +emit_32(3277504512); +emit_32(3260727296); +emit_32(1103408923); +emit_32(3277504512); +emit_32(3259703309); +emit_32(1103077258); +emit_32(3277504512); +emit_32(3258679296); +emit_32(1102537084); +emit_32(3277504512); +emit_32(3257655309); +emit_32(1103679455); +emit_32(3277504512); +emit_32(3256631296); +emit_32(1103709654); +emit_32(3277504512); +emit_32(3255607309); +emit_32(1102899891); +emit_32(3277504512); +emit_32(3254386688); +emit_32(1101944534); +emit_32(3277504512); +emit_32(3252338714); +emit_32(1101169793); +emit_32(3277504512); +emit_32(3250290688); +emit_32(1100964273); +emit_32(3277504512); +emit_32(3248242714); +emit_32(1101176085); +emit_32(3277504512); +emit_32(3245998080); +emit_32(1100580284); +emit_32(3277504512); +emit_32(3241902132); +emit_32(1099596143); +emit_32(3277504512); +emit_32(3237609472); +emit_32(1099177394); +emit_32(3277504512); +emit_32(3229220864); +emit_32(1098487274); +emit_32(3277504512); +emit_32(0); +emit_32(1096586625); +emit_32(3277504512); +emit_32(1081737216); +emit_32(1096047133); +emit_32(3277504512); +emit_32(3279552512); +emit_32(1099302751); +emit_32(3277760496); +emit_32(3279296528); +emit_32(1099310930); +emit_32(3277760496); +emit_32(3279040545); +emit_32(1099757833); +emit_32(3277760496); +emit_32(3278784496); +emit_32(1099826410); +emit_32(3277760496); +emit_32(3278528512); +emit_32(1098603771); +emit_32(3277760496); +emit_32(3278272528); +emit_32(1096803575); +emit_32(3277760496); +emit_32(3278016545); +emit_32(1095899388); +emit_32(3277760496); +emit_32(3277760496); +emit_32(1096413925); +emit_32(3277760496); +emit_32(3277504512); +emit_32(1096685925); +emit_32(3277760496); +emit_32(3277248528); +emit_32(1096488373); +emit_32(3277760496); +emit_32(3276992545); +emit_32(1096023854); +emit_32(3277760496); +emit_32(3276736496); +emit_32(1096726505); +emit_32(3277760496); +emit_32(3276480512); +emit_32(1097672845); +emit_32(3277760496); +emit_32(3276224528); +emit_32(1097630587); +emit_32(3277760496); +emit_32(3275968545); +emit_32(1097242300); +emit_32(3277760496); +emit_32(3275712496); +emit_32(1096015780); +emit_32(3277760496); +emit_32(3275456512); +emit_32(1095966707); +emit_32(3277760496); +emit_32(3275200528); +emit_32(1094654729); +emit_32(3277760496); +emit_32(3274944545); +emit_32(1094504258); +emit_32(3277760496); +emit_32(3274688496); +emit_32(1093927856); +emit_32(3277760496); +emit_32(3274432512); +emit_32(1092392111); +emit_32(3277760496); +emit_32(3274176528); +emit_32(1091411231); +emit_32(3277760496); +emit_32(3273920545); +emit_32(1093339290); +emit_32(3277760496); +emit_32(3273664496); +emit_32(1095670904); +emit_32(3277760496); +emit_32(3273408512); +emit_32(1096393163); +emit_32(3277760496); +emit_32(3273152528); +emit_32(1098248199); +emit_32(3277760496); +emit_32(3272896545); +emit_32(1099000342); +emit_32(3277760496); +emit_32(3272640496); +emit_32(1099390150); +emit_32(3277760496); +emit_32(3272384512); +emit_32(1099453117); +emit_32(3277760496); +emit_32(3272128528); +emit_32(1100216690); +emit_32(3277760496); +emit_32(3271872545); +emit_32(1100387294); +emit_32(3277760496); +emit_32(3271616496); +emit_32(1100623957); +emit_32(3277760496); +emit_32(3271163904); +emit_32(1100583063); +emit_32(3277760496); +emit_32(3270651937); +emit_32(1100270692); +emit_32(3277760496); +emit_32(3270139970); +emit_32(1100221199); +emit_32(3277760496); +emit_32(3269627871); +emit_32(1100837028); +emit_32(3277760496); +emit_32(3269115904); +emit_32(1100744648); +emit_32(3277760496); +emit_32(3268603937); +emit_32(1100729496); +emit_32(3277760496); +emit_32(3268091970); +emit_32(1100349650); +emit_32(3277760496); +emit_32(3267579911); +emit_32(1100277141); +emit_32(3277760496); +emit_32(3267067904); +emit_32(1100539180); +emit_32(3277760496); +emit_32(3266555911); +emit_32(1101285137); +emit_32(3277760496); +emit_32(3266043904); +emit_32(1101760404); +emit_32(3277760496); +emit_32(3265531911); +emit_32(1102151418); +emit_32(3277760496); +emit_32(3265019904); +emit_32(1102545368); +emit_32(3277760496); +emit_32(3264507911); +emit_32(1102327369); +emit_32(3277760496); +emit_32(3263995904); +emit_32(1102437312); +emit_32(3277760496); +emit_32(3263483911); +emit_32(1102836190); +emit_32(3277760496); +emit_32(3262775296); +emit_32(1103463449); +emit_32(3277760496); +emit_32(3261751309); +emit_32(1103612871); +emit_32(3277760496); +emit_32(3260727296); +emit_32(1103521907); +emit_32(3277760496); +emit_32(3259703309); +emit_32(1102694842); +emit_32(3277760496); +emit_32(3258679296); +emit_32(1102314104); +emit_32(3277760496); +emit_32(3257655309); +emit_32(1103092829); +emit_32(3277760496); +emit_32(3256631296); +emit_32(1102811392); +emit_32(3277760496); +emit_32(3255607309); +emit_32(1102399406); +emit_32(3277760496); +emit_32(3254386688); +emit_32(1101424807); +emit_32(3277760496); +emit_32(3252338714); +emit_32(1100416025); +emit_32(3277760496); +emit_32(3250290688); +emit_32(1099956172); +emit_32(3277760496); +emit_32(3248242714); +emit_32(1100071882); +emit_32(3277760496); +emit_32(3245998080); +emit_32(1099877633); +emit_32(3277760496); +emit_32(3241902132); +emit_32(1099019059); +emit_32(3277760496); +emit_32(3237609472); +emit_32(1098372560); +emit_32(3277760496); +emit_32(3229220864); +emit_32(1097025244); +emit_32(3277760496); +emit_32(0); +emit_32(1095913230); +emit_32(3277760496); +emit_32(1081737216); +emit_32(1095782787); +emit_32(3277760496); +emit_32(3279552512); +emit_32(1098903349); +emit_32(3278016545); +emit_32(3279296528); +emit_32(1099112225); +emit_32(3278016545); +emit_32(3279040545); +emit_32(1099559495); +emit_32(3278016545); +emit_32(3278784496); +emit_32(1099374422); +emit_32(3278016545); +emit_32(3278528512); +emit_32(1099044802); +emit_32(3278016545); +emit_32(3278272528); +emit_32(1099082498); +emit_32(3278016545); +emit_32(3278016545); +emit_32(1098243061); +emit_32(3278016545); +emit_32(3277760496); +emit_32(1097484626); +emit_32(3278016545); +emit_32(3277504512); +emit_32(1098172282); +emit_32(3278016545); +emit_32(3277248528); +emit_32(1097990039); +emit_32(3278016545); +emit_32(3276992545); +emit_32(1097473301); +emit_32(3278016545); +emit_32(3276736496); +emit_32(1098280600); +emit_32(3278016545); +emit_32(3276480512); +emit_32(1098467561); +emit_32(3278016545); +emit_32(3276224528); +emit_32(1098700449); +emit_32(3278016545); +emit_32(3275968545); +emit_32(1097813354); +emit_32(3278016545); +emit_32(3275712496); +emit_32(1097573020); +emit_32(3278016545); +emit_32(3275456512); +emit_32(1096889034); +emit_32(3278016545); +emit_32(3275200528); +emit_32(1095010930); +emit_32(3278016545); +emit_32(3274944545); +emit_32(1094741446); +emit_32(3278016545); +emit_32(3274688496); +emit_32(1093564105); +emit_32(3278016545); +emit_32(3274432512); +emit_32(1092621330); +emit_32(3278016545); +emit_32(3274176528); +emit_32(1092464757); +emit_32(3278016545); +emit_32(3273920545); +emit_32(1094580175); +emit_32(3278016545); +emit_32(3273664496); +emit_32(1096882219); +emit_32(3278016545); +emit_32(3273408512); +emit_32(1098358718); +emit_32(3278016545); +emit_32(3273152528); +emit_32(1099298662); +emit_32(3278016545); +emit_32(3272896545); +emit_32(1099922617); +emit_32(3278016545); +emit_32(3272640496); +emit_32(1100192521); +emit_32(3278016545); +emit_32(3272384512); +emit_32(1100137470); +emit_32(3278016545); +emit_32(3272128528); +emit_32(1101007893); +emit_32(3278016545); +emit_32(3271872545); +emit_32(1101168640); +emit_32(3278016545); +emit_32(3271616496); +emit_32(1100874252); +emit_32(3278016545); +emit_32(3271163904); +emit_32(1100904346); +emit_32(3278016545); +emit_32(3270651937); +emit_32(1100957142); +emit_32(3278016545); +emit_32(3270139970); +emit_32(1101183110); +emit_32(3278016545); +emit_32(3269627871); +emit_32(1101430574); +emit_32(3278016545); +emit_32(3269115904); +emit_32(1101303906); +emit_32(3278016545); +emit_32(3268603937); +emit_32(1101524317); +emit_32(3278016545); +emit_32(3268091970); +emit_32(1101223481); +emit_32(3278016545); +emit_32(3267579911); +emit_32(1100917768); +emit_32(3278016545); +emit_32(3267067904); +emit_32(1100967523); +emit_32(3278016545); +emit_32(3266555911); +emit_32(1101230506); +emit_32(3278016545); +emit_32(3266043904); +emit_32(1101743889); +emit_32(3278016545); +emit_32(3265531911); +emit_32(1102035865); +emit_32(3278016545); +emit_32(3265019904); +emit_32(1102327683); +emit_32(3278016545); +emit_32(3264507911); +emit_32(1102160803); +emit_32(3278016545); +emit_32(3263995904); +emit_32(1102422737); +emit_32(3278016545); +emit_32(3263483911); +emit_32(1102993582); +emit_32(3278016545); +emit_32(3262775296); +emit_32(1103413274); +emit_32(3278016545); +emit_32(3261751309); +emit_32(1103424966); +emit_32(3278016545); +emit_32(3260727296); +emit_32(1102892656); +emit_32(3278016545); +emit_32(3259703309); +emit_32(1102022495); +emit_32(3278016545); +emit_32(3258679296); +emit_32(1101852259); +emit_32(3278016545); +emit_32(3257655309); +emit_32(1102344408); +emit_32(3278016545); +emit_32(3256631296); +emit_32(1102317198); +emit_32(3278016545); +emit_32(3255607309); +emit_32(1101799883); +emit_32(3278016545); +emit_32(3254386688); +emit_32(1100918922); +emit_32(3278016545); +emit_32(3252338714); +emit_32(1099744779); +emit_32(3278016545); +emit_32(3250290688); +emit_32(1098585945); +emit_32(3278016545); +emit_32(3248242714); +emit_32(1098674235); +emit_32(3278016545); +emit_32(3245998080); +emit_32(1098530685); +emit_32(3278016545); +emit_32(3241902132); +emit_32(1097602066); +emit_32(3278016545); +emit_32(3237609472); +emit_32(1097146565); +emit_32(3278016545); +emit_32(3229220864); +emit_32(1096070935); +emit_32(3278016545); +emit_32(0); +emit_32(1094636379); +emit_32(3278016545); +emit_32(1081737216); +emit_32(1094685347); +emit_32(3278016545); +emit_32(3279552512); +emit_32(1098113142); +emit_32(3278272528); +emit_32(3279296528); +emit_32(1099020003); +emit_32(3278272528); +emit_32(3279040545); +emit_32(1099561016); +emit_32(3278272528); +emit_32(3278784496); +emit_32(1099848273); +emit_32(3278272528); +emit_32(3278528512); +emit_32(1100167460); +emit_32(3278272528); +emit_32(3278272528); +emit_32(1100256431); +emit_32(3278272528); +emit_32(3278016545); +emit_32(1099679872); +emit_32(3278272528); +emit_32(3277760496); +emit_32(1098851759); +emit_32(3278272528); +emit_32(3277504512); +emit_32(1098385562); +emit_32(3278272528); +emit_32(3277248528); +emit_32(1098603142); +emit_32(3278272528); +emit_32(3276992545); +emit_32(1098517158); +emit_32(3278272528); +emit_32(3276736496); +emit_32(1098595697); +emit_32(3278272528); +emit_32(3276480512); +emit_32(1097738591); +emit_32(3278272528); +emit_32(3276224528); +emit_32(1097722757); +emit_32(3278272528); +emit_32(3275968545); +emit_32(1097226886); +emit_32(3278272528); +emit_32(3275712496); +emit_32(1097415629); +emit_32(3278272528); +emit_32(3275456512); +emit_32(1096617873); +emit_32(3278272528); +emit_32(3275200528); +emit_32(1095510786); +emit_32(3278272528); +emit_32(3274944545); +emit_32(1095328858); +emit_32(3278272528); +emit_32(3274688496); +emit_32(1093740999); +emit_32(3278272528); +emit_32(3274432512); +emit_32(1092633598); +emit_32(3278272528); +emit_32(3274176528); +emit_32(1095320155); +emit_32(3278272528); +emit_32(3273920545); +emit_32(1096140771); +emit_32(3278272528); +emit_32(3273664496); +emit_32(1097600808); +emit_32(3278272528); +emit_32(3273408512); +emit_32(1098894960); +emit_32(3278272528); +emit_32(3273152528); +emit_32(1099788032); +emit_32(3278272528); +emit_32(3272896545); +emit_32(1100230112); +emit_32(3278272528); +emit_32(3272640496); +emit_32(1100219731); +emit_32(3278272528); +emit_32(3272384512); +emit_32(1100734897); +emit_32(3278272528); +emit_32(3272128528); +emit_32(1101173726); +emit_32(3278272528); +emit_32(3271872545); +emit_32(1101152072); +emit_32(3278272528); +emit_32(3271616496); +emit_32(1101550479); +emit_32(3278272528); +emit_32(3271163904); +emit_32(1101252736); +emit_32(3278272528); +emit_32(3270651937); +emit_32(1101467694); +emit_32(3278272528); +emit_32(3270139970); +emit_32(1101808009); +emit_32(3278272528); +emit_32(3269627871); +emit_32(1101705930); +emit_32(3278272528); +emit_32(3269115904); +emit_32(1102054110); +emit_32(3278272528); +emit_32(3268603937); +emit_32(1102131180); +emit_32(3278272528); +emit_32(3268091970); +emit_32(1101898868); +emit_32(3278272528); +emit_32(3267579911); +emit_32(1101280313); +emit_32(3278272528); +emit_32(3267067904); +emit_32(1100809188); +emit_32(3278272528); +emit_32(3266555911); +emit_32(1101005429); +emit_32(3278272528); +emit_32(3266043904); +emit_32(1101565631); +emit_32(3278272528); +emit_32(3265531911); +emit_32(1101958585); +emit_32(3278272528); +emit_32(3265019904); +emit_32(1102447903); +emit_32(3278272528); +emit_32(3264507911); +emit_32(1102259526); +emit_32(3278272528); +emit_32(3263995904); +emit_32(1102073456); +emit_32(3278272528); +emit_32(3263483911); +emit_32(1102367372); +emit_32(3278272528); +emit_32(3262775296); +emit_32(1102600104); +emit_32(3278272528); +emit_32(3261751309); +emit_32(1102289935); +emit_32(3278272528); +emit_32(3260727296); +emit_32(1101835692); +emit_32(3278272528); +emit_32(3259703309); +emit_32(1101049364); +emit_32(3278272528); +emit_32(3258679296); +emit_32(1100957929); +emit_32(3278272528); +emit_32(3257655309); +emit_32(1101280366); +emit_32(3278272528); +emit_32(3256631296); +emit_32(1101113432); +emit_32(3278272528); +emit_32(3255607309); +emit_32(1100449789); +emit_32(3278272528); +emit_32(3254386688); +emit_32(1099921726); +emit_32(3278272528); +emit_32(3252338714); +emit_32(1098223138); +emit_32(3278272528); +emit_32(3250290688); +emit_32(1095989776); +emit_32(3278272528); +emit_32(3248242714); +emit_32(1095913754); +emit_32(3278272528); +emit_32(3245998080); +emit_32(1096548981); +emit_32(3278272528); +emit_32(3241902132); +emit_32(1095493380); +emit_32(3278272528); +emit_32(3237609472); +emit_32(1095273074); +emit_32(3278272528); +emit_32(3229220864); +emit_32(1094758957); +emit_32(3278272528); +emit_32(0); +emit_32(1093715414); +emit_32(3278272528); +emit_32(1081737216); +emit_32(1093100529); +emit_32(3278272528); +emit_32(3279552512); +emit_32(1098580387); +emit_32(3278528512); +emit_32(3279296528); +emit_32(1099781479); +emit_32(3278528512); +emit_32(3279040545); +emit_32(1100398041); +emit_32(3278528512); +emit_32(3278784496); +emit_32(1100822715); +emit_32(3278528512); +emit_32(3278528512); +emit_32(1100898841); +emit_32(3278528512); +emit_32(3278272528); +emit_32(1100936538); +emit_32(3278528512); +emit_32(3278016545); +emit_32(1100571528); +emit_32(3278528512); +emit_32(3277760496); +emit_32(1099431674); +emit_32(3278528512); +emit_32(3277504512); +emit_32(1098338586); +emit_32(3278528512); +emit_32(3277248528); +emit_32(1098519046); +emit_32(3278528512); +emit_32(3276992545); +emit_32(1098311533); +emit_32(3278528512); +emit_32(3276736496); +emit_32(1097988991); +emit_32(3278528512); +emit_32(3276480512); +emit_32(1097511993); +emit_32(3278528512); +emit_32(3276224528); +emit_32(1097291373); +emit_32(3278528512); +emit_32(3275968545); +emit_32(1096949852); +emit_32(3278528512); +emit_32(3275712496); +emit_32(1096869007); +emit_32(3278528512); +emit_32(3275456512); +emit_32(1096154717); +emit_32(3278528512); +emit_32(3275200528); +emit_32(1096008126); +emit_32(3278528512); +emit_32(3274944545); +emit_32(1096113612); +emit_32(3278528512); +emit_32(3274688496); +emit_32(1094873986); +emit_32(3278528512); +emit_32(3274432512); +emit_32(1094166512); +emit_32(3278528512); +emit_32(3274176528); +emit_32(1095465592); +emit_32(3278528512); +emit_32(3273920545); +emit_32(1096875193); +emit_32(3278528512); +emit_32(3273664496); +emit_32(1098212128); +emit_32(3278528512); +emit_32(3273408512); +emit_32(1099232497); +emit_32(3278528512); +emit_32(3273152528); +emit_32(1099782003); +emit_32(3278528512); +emit_32(3272896545); +emit_32(1100205261); +emit_32(3278528512); +emit_32(3272640496); +emit_32(1100910690); +emit_32(3278528512); +emit_32(3272384512); +emit_32(1100846098); +emit_32(3278528512); +emit_32(3272128528); +emit_32(1101316856); +emit_32(3278528512); +emit_32(3271872545); +emit_32(1101188668); +emit_32(3278528512); +emit_32(3271616496); +emit_32(1101462451); +emit_32(3278528512); +emit_32(3271163904); +emit_32(1102020713); +emit_32(3278528512); +emit_32(3270651937); +emit_32(1101996543); +emit_32(3278528512); +emit_32(3270139970); +emit_32(1102033138); +emit_32(3278528512); +emit_32(3269627871); +emit_32(1102145231); +emit_32(3278528512); +emit_32(3269115904); +emit_32(1102204423); +emit_32(3278528512); +emit_32(3268603937); +emit_32(1102633396); +emit_32(3278528512); +emit_32(3268091970); +emit_32(1102830685); +emit_32(3278528512); +emit_32(3267579911); +emit_32(1102366271); +emit_32(3278528512); +emit_32(3267067904); +emit_32(1101693819); +emit_32(3278528512); +emit_32(3266555911); +emit_32(1100984300); +emit_32(3278528512); +emit_32(3266043904); +emit_32(1101757311); +emit_32(3278528512); +emit_32(3265531911); +emit_32(1102038486); +emit_32(3278528512); +emit_32(3265019904); +emit_32(1102416078); +emit_32(3278528512); +emit_32(3264507911); +emit_32(1102030360); +emit_32(3278528512); +emit_32(3263995904); +emit_32(1101690831); +emit_32(3278528512); +emit_32(3263483911); +emit_32(1101744256); +emit_32(3278528512); +emit_32(3262775296); +emit_32(1101786199); +emit_32(3278528512); +emit_32(3261751309); +emit_32(1101134142); +emit_32(3278528512); +emit_32(3260727296); +emit_32(1100560990); +emit_32(3278528512); +emit_32(3259703309); +emit_32(1099935148); +emit_32(3278528512); +emit_32(3258679296); +emit_32(1099979765); +emit_32(3278528512); +emit_32(3257655309); +emit_32(1100145597); +emit_32(3278528512); +emit_32(3256631296); +emit_32(1099694499); +emit_32(3278528512); +emit_32(3255607309); +emit_32(1099317589); +emit_32(3278528512); +emit_32(3254386688); +emit_32(1098312896); +emit_32(3278528512); +emit_32(3252338714); +emit_32(1096783967); +emit_32(3278528512); +emit_32(3250290688); +emit_32(1094909218); +emit_32(3278528512); +emit_32(3248242714); +emit_32(1094802158); +emit_32(3278528512); +emit_32(3245998080); +emit_32(1094635749); +emit_32(3278528512); +emit_32(3241902132); +emit_32(1093985423); +emit_32(3278528512); +emit_32(3237609472); +emit_32(1093684376); +emit_32(3278528512); +emit_32(3229220864); +emit_32(1092749885); +emit_32(3278528512); +emit_32(0); +emit_32(1092334471); +emit_32(3278528512); +emit_32(1081737216); +emit_32(1091412678); +emit_32(3278528512); +emit_32(3279552512); +emit_32(1099246495); +emit_32(3278784496); +emit_32(3279296528); +emit_32(1100406168); +emit_32(3278784496); +emit_32(3279040545); +emit_32(1100809188); +emit_32(3278784496); +emit_32(3278784496); +emit_32(1101173726); +emit_32(3278784496); +emit_32(3278528512); +emit_32(1101440798); +emit_32(3278784496); +emit_32(3278272528); +emit_32(1101323148); +emit_32(3278784496); +emit_32(3278016545); +emit_32(1100602724); +emit_32(3278784496); +emit_32(3277760496); +emit_32(1099957325); +emit_32(3278784496); +emit_32(3277504512); +emit_32(1099164077); +emit_32(3278784496); +emit_32(3277248528); +emit_32(1098681680); +emit_32(3278784496); +emit_32(3276992545); +emit_32(1098343724); +emit_32(3278784496); +emit_32(3276736496); +emit_32(1097173198); +emit_32(3278784496); +emit_32(3276480512); +emit_32(1097496684); +emit_32(3278784496); +emit_32(3276224528); +emit_32(1096577607); +emit_32(3278784496); +emit_32(3275968545); +emit_32(1096202217); +emit_32(3278784496); +emit_32(3275712496); +emit_32(1095980968); +emit_32(3278784496); +emit_32(3275456512); +emit_32(1095241407); +emit_32(3278784496); +emit_32(3275200528); +emit_32(1095384223); +emit_32(3278784496); +emit_32(3274944545); +emit_32(1095777649); +emit_32(3278784496); +emit_32(3274688496); +emit_32(1095404356); +emit_32(3278784496); +emit_32(3274432512); +emit_32(1096055626); +emit_32(3278784496); +emit_32(3274176528); +emit_32(1096762996); +emit_32(3278784496); +emit_32(3273920545); +emit_32(1097732404); +emit_32(3278784496); +emit_32(3273664496); +emit_32(1099124913); +emit_32(3278784496); +emit_32(3273408512); +emit_32(1099487615); +emit_32(3278784496); +emit_32(3273152528); +emit_32(1099905263); +emit_32(3278784496); +emit_32(3272896545); +emit_32(1100576090); +emit_32(3278784496); +emit_32(3272640496); +emit_32(1101366716); +emit_32(3278784496); +emit_32(3272384512); +emit_32(1100955150); +emit_32(3278784496); +emit_32(3272128528); +emit_32(1101465911); +emit_32(3278784496); +emit_32(3271872545); +emit_32(1101897872); +emit_32(3278784496); +emit_32(3271616496); +emit_32(1101968074); +emit_32(3278784496); +emit_32(3271163904); +emit_32(1102322545); +emit_32(3278784496); +emit_32(3270651937); +emit_32(1102468507); +emit_32(3278784496); +emit_32(3270139970); +emit_32(1102636699); +emit_32(3278784496); +emit_32(3269627871); +emit_32(1102593812); +emit_32(3278784496); +emit_32(3269115904); +emit_32(1102955781); +emit_32(3278784496); +emit_32(3268603937); +emit_32(1103423183); +emit_32(3278784496); +emit_32(3268091970); +emit_32(1103413484); +emit_32(3278784496); +emit_32(3267579911); +emit_32(1103118467); +emit_32(3278784496); +emit_32(3267067904); +emit_32(1102692536); +emit_32(3278784496); +emit_32(3266555911); +emit_32(1101705878); +emit_32(3278784496); +emit_32(3266043904); +emit_32(1101340082); +emit_32(3278784496); +emit_32(3265531911); +emit_32(1102200596); +emit_32(3278784496); +emit_32(3265019904); +emit_32(1102209457); +emit_32(3278784496); +emit_32(3264507911); +emit_32(1101833280); +emit_32(3278784496); +emit_32(3263995904); +emit_32(1101273812); +emit_32(3278784496); +emit_32(3263483911); +emit_32(1101051042); +emit_32(3278784496); +emit_32(3262775296); +emit_32(1100997722); +emit_32(3278784496); +emit_32(3261751309); +emit_32(1100555118); +emit_32(3278784496); +emit_32(3260727296); +emit_32(1099388420); +emit_32(3278784496); +emit_32(3259703309); +emit_32(1098921070); +emit_32(3278784496); +emit_32(3258679296); +emit_32(1098291295); +emit_32(3278784496); +emit_32(3257655309); +emit_32(1097914751); +emit_32(3278784496); +emit_32(3256631296); +emit_32(1098783811); +emit_32(3278784496); +emit_32(3255607309); +emit_32(1097200986); +emit_32(3278784496); +emit_32(3254386688); +emit_32(1095754580); +emit_32(3278784496); +emit_32(3252338714); +emit_32(1094603034); +emit_32(3278784496); +emit_32(3250290688); +emit_32(1092756596); +emit_32(3278784496); +emit_32(3248242714); +emit_32(1093057118); +emit_32(3278784496); +emit_32(3245998080); +emit_32(1093385742); +emit_32(3278784496); +emit_32(3241902132); +emit_32(1092478325); +emit_32(3278784496); +emit_32(3237609472); +emit_32(1091460850); +emit_32(3278784496); +emit_32(3229220864); +emit_32(1090737647); +emit_32(3278784496); +emit_32(0); +emit_32(1090290346); +emit_32(3278784496); +emit_32(1081737216); +emit_32(1090509120); +emit_32(3278784496); +emit_32(3279552512); +emit_32(1099149345); +emit_32(3279040545); +emit_32(3279296528); +emit_32(1100408318); +emit_32(3279040545); +emit_32(3279040545); +emit_32(1100800170); +emit_32(3279040545); +emit_32(3278784496); +emit_32(1101432986); +emit_32(3279040545); +emit_32(3278528512); +emit_32(1101564058); +emit_32(3279040545); +emit_32(3278272528); +emit_32(1101179755); +emit_32(3279040545); +emit_32(3278016545); +emit_32(1100480145); +emit_32(3279040545); +emit_32(3277760496); +emit_32(1099858759); +emit_32(3279040545); +emit_32(3277504512); +emit_32(1099623354); +emit_32(3279040545); +emit_32(3277248528); +emit_32(1098996934); +emit_32(3279040545); +emit_32(3276992545); +emit_32(1098237818); +emit_32(3279040545); +emit_32(3276736496); +emit_32(1097341285); +emit_32(3279040545); +emit_32(3276480512); +emit_32(1096845414); +emit_32(3279040545); +emit_32(3276224528); +emit_32(1095838571); +emit_32(3279040545); +emit_32(3275968545); +emit_32(1095836998); +emit_32(3279040545); +emit_32(3275712496); +emit_32(1095004114); +emit_32(3279040545); +emit_32(3275456512); +emit_32(1094881011); +emit_32(3279040545); +emit_32(3275200528); +emit_32(1094801529); +emit_32(3279040545); +emit_32(3274944545); +emit_32(1093872281); +emit_32(3279040545); +emit_32(3274688496); +emit_32(1094479197); +emit_32(3279040545); +emit_32(3274432512); +emit_32(1096306341); +emit_32(3279040545); +emit_32(3274176528); +emit_32(1096403334); +emit_32(3279040545); +emit_32(3273920545); +emit_32(1097374315); +emit_32(3279040545); +emit_32(3273664496); +emit_32(1098966788); +emit_32(3279040545); +emit_32(3273408512); +emit_32(1099462921); +emit_32(3279040545); +emit_32(3273152528); +emit_32(1099984903); +emit_32(3279040545); +emit_32(3272896545); +emit_32(1101000973); +emit_32(3279040545); +emit_32(3272640496); +emit_32(1101297982); +emit_32(3279040545); +emit_32(3272384512); +emit_32(1101298506); +emit_32(3279040545); +emit_32(3272128528); +emit_32(1101350044); +emit_32(3279040545); +emit_32(3271872545); +emit_32(1102416393); +emit_32(3279040545); +emit_32(3271616496); +emit_32(1102828588); +emit_32(3279040545); +emit_32(3271163904); +emit_32(1103097810); +emit_32(3279040545); +emit_32(3270651937); +emit_32(1103270825); +emit_32(3279040545); +emit_32(3270139970); +emit_32(1103513256); +emit_32(3279040545); +emit_32(3269627871); +emit_32(1103154119); +emit_32(3279040545); +emit_32(3269115904); +emit_32(1103932214); +emit_32(3279040545); +emit_32(3268603937); +emit_32(1103727532); +emit_32(3279040545); +emit_32(3268091970); +emit_32(1103627393); +emit_32(3279040545); +emit_32(3267579911); +emit_32(1103400272); +emit_32(3279040545); +emit_32(3267067904); +emit_32(1103403365); +emit_32(3279040545); +emit_32(3266555911); +emit_32(1102403496); +emit_32(3279040545); +emit_32(3266043904); +emit_32(1101353556); +emit_32(3279040545); +emit_32(3265531911); +emit_32(1101619213); +emit_32(3279040545); +emit_32(3265019904); +emit_32(1102006295); +emit_32(3279040545); +emit_32(3264507911); +emit_32(1101503503); +emit_32(3279040545); +emit_32(3263995904); +emit_32(1100538131); +emit_32(3279040545); +emit_32(3263483911); +emit_32(1100080271); +emit_32(3279040545); +emit_32(3262775296); +emit_32(1099418881); +emit_32(3279040545); +emit_32(3261751309); +emit_32(1099399430); +emit_32(3279040545); +emit_32(3260727296); +emit_32(1099101215); +emit_32(3279040545); +emit_32(3259703309); +emit_32(1097408394); +emit_32(3279040545); +emit_32(3258679296); +emit_32(1096341468); +emit_32(3279040545); +emit_32(3257655309); +emit_32(1095779641); +emit_32(3279040545); +emit_32(3256631296); +emit_32(1094671296); +emit_32(3279040545); +emit_32(3255607309); +emit_32(1094154977); +emit_32(3279040545); +emit_32(3254386688); +emit_32(1092748732); +emit_32(3279040545); +emit_32(3252338714); +emit_32(1091621345); +emit_32(3279040545); +emit_32(3250290688); +emit_32(1090704869); +emit_32(3279040545); +emit_32(3248242714); +emit_32(1090960134); +emit_32(3279040545); +emit_32(3245998080); +emit_32(1090657442); +emit_32(3279040545); +emit_32(3241902132); +emit_32(1089905497); +emit_32(3279040545); +emit_32(3237609472); +emit_32(1088557112); +emit_32(3279040545); +emit_32(3229220864); +emit_32(1086833925); +emit_32(3279040545); +emit_32(0); +emit_32(1087077467); +emit_32(3279040545); +emit_32(1081737216); +emit_32(1087170664); +emit_32(3279040545); +emit_32(3279552512); +emit_32(1099250847); +emit_32(3279296528); +emit_32(3279296528); +emit_32(1099782632); +emit_32(3279296528); +emit_32(3279040545); +emit_32(1100353372); +emit_32(3279296528); +emit_32(3278784496); +emit_32(1101212785); +emit_32(3279296528); +emit_32(3278528512); +emit_32(1101165494); +emit_32(3279296528); +emit_32(3278272528); +emit_32(1101113957); +emit_32(3279296528); +emit_32(3278016545); +emit_32(1100762736); +emit_32(3279296528); +emit_32(3277760496); +emit_32(1099820381); +emit_32(3279296528); +emit_32(3277504512); +emit_32(1099259340); +emit_32(3279296528); +emit_32(3277248528); +emit_32(1098864027); +emit_32(3279296528); +emit_32(3276992545); +emit_32(1097692558); +emit_32(3279296528); +emit_32(3276736496); +emit_32(1097396755); +emit_32(3279296528); +emit_32(3276480512); +emit_32(1096710776); +emit_32(3279296528); +emit_32(3276224528); +emit_32(1095208586); +emit_32(3279296528); +emit_32(3275968545); +emit_32(1094436625); +emit_32(3279296528); +emit_32(3275712496); +emit_32(1094237605); +emit_32(3279296528); +emit_32(3275456512); +emit_32(1093631948); +emit_32(3279296528); +emit_32(3275200528); +emit_32(1093328699); +emit_32(3279296528); +emit_32(3274944545); +emit_32(1093335096); +emit_32(3279296528); +emit_32(3274688496); +emit_32(1093281199); +emit_32(3279296528); +emit_32(3274432512); +emit_32(1094777307); +emit_32(3279296528); +emit_32(3274176528); +emit_32(1095041653); +emit_32(3279296528); +emit_32(3273920545); +emit_32(1096648281); +emit_32(3279296528); +emit_32(3273664496); +emit_32(1098228380); +emit_32(3279296528); +emit_32(3273408512); +emit_32(1099209114); +emit_32(3279296528); +emit_32(3273152528); +emit_32(1099931582); +emit_32(3279296528); +emit_32(3272896545); +emit_32(1100442291); +emit_32(3279296528); +emit_32(3272640496); +emit_32(1100819359); +emit_32(3279296528); +emit_32(3272384512); +emit_32(1101023045); +emit_32(3279296528); +emit_32(3272128528); +emit_32(1101474877); +emit_32(3279296528); +emit_32(3271872545); +emit_32(1102424624); +emit_32(3279296528); +emit_32(3271616496); +emit_32(1103221962); +emit_32(3279296528); +emit_32(3271163904); +emit_32(1103274757); +emit_32(3279296528); +emit_32(3270651937); +emit_32(1103895200); +emit_32(3279296528); +emit_32(3270139970); +emit_32(1104182824); +emit_32(3279296528); +emit_32(3269627871); +emit_32(1104099462); +emit_32(3279296528); +emit_32(3269115904); +emit_32(1103825102); +emit_32(3279296528); +emit_32(3268603937); +emit_32(1104155037); +emit_32(3279296528); +emit_32(3268091970); +emit_32(1104133122); +emit_32(3279296528); +emit_32(3267579911); +emit_32(1103855721); +emit_32(3279296528); +emit_32(3267067904); +emit_32(1103437391); +emit_32(3279296528); +emit_32(3266555911); +emit_32(1102382472); +emit_32(3279296528); +emit_32(3266043904); +emit_32(1101496425); +emit_32(3279296528); +emit_32(3265531911); +emit_32(1101309673); +emit_32(3279296528); +emit_32(3265019904); +emit_32(1101136973); +emit_32(3279296528); +emit_32(3264507911); +emit_32(1100555957); +emit_32(3279296528); +emit_32(3263995904); +emit_32(1099877161); +emit_32(3279296528); +emit_32(3263483911); +emit_32(1099240414); +emit_32(3279296528); +emit_32(3262775296); +emit_32(1098818938); +emit_32(3279296528); +emit_32(3261751309); +emit_32(1097030487); +emit_32(3279296528); +emit_32(3260727296); +emit_32(1096386557); +emit_32(3279296528); +emit_32(3259703309); +emit_32(1095308516); +emit_32(3279296528); +emit_32(3258679296); +emit_32(1093918733); +emit_32(3279296528); +emit_32(3257655309); +emit_32(1093062885); +emit_32(3279296528); +emit_32(3256631296); +emit_32(1092790780); +emit_32(3279296528); +emit_32(3255607309); +emit_32(1091773189); +emit_32(3279296528); +emit_32(3254386688); +emit_32(1089177744); +emit_32(3279296528); +emit_32(3252338714); +emit_32(1085799588); +emit_32(3279296528); +emit_32(3250290688); +emit_32(1085098154); +emit_32(3279296528); +emit_32(3248242714); +emit_32(1086394194); +emit_32(3279296528); +emit_32(3245998080); +emit_32(1086183912); +emit_32(3279296528); +emit_32(3241902132); +emit_32(1084926145); +emit_32(3279296528); +emit_32(3237609472); +emit_32(1085235454); +emit_32(3279296528); +emit_32(3229220864); +emit_32(1084071682); +emit_32(3279296528); +emit_32(0); +emit_32(1084345968); +emit_32(3279296528); +emit_32(1081737216); +emit_32(1086522393); +emit_32(3279296528); +emit_32(3279552512); +emit_32(1099558709); +emit_32(3279552512); +emit_32(3279296528); +emit_32(1099939394); +emit_32(3279552512); +emit_32(3279040545); +emit_32(1100668731); +emit_32(3279552512); +emit_32(3278784496); +emit_32(1100652321); +emit_32(3279552512); +emit_32(3278528512); +emit_32(1101087375); +emit_32(3279552512); +emit_32(3278272528); +emit_32(1100952319); +emit_32(3279552512); +emit_32(3278016545); +emit_32(1100463787); +emit_32(3279552512); +emit_32(3277760496); +emit_32(1099835428); +emit_32(3279552512); +emit_32(3277504512); +emit_32(1098509084); +emit_32(3279552512); +emit_32(3277248528); +emit_32(1097497838); +emit_32(3279552512); +emit_32(3276992545); +emit_32(1095815817); +emit_32(3279552512); +emit_32(3276736496); +emit_32(1096394106); +emit_32(3279552512); +emit_32(3276480512); +emit_32(1095914488); +emit_32(3279552512); +emit_32(3276224528); +emit_32(1094719216); +emit_32(3279552512); +emit_32(3275968545); +emit_32(1093850681); +emit_32(3279552512); +emit_32(3275712496); +emit_32(1093377773); +emit_32(3279552512); +emit_32(3275456512); +emit_32(1092882845); +emit_32(3279552512); +emit_32(3275200528); +emit_32(1092368613); +emit_32(3279552512); +emit_32(3274944545); +emit_32(1091574149); +emit_32(3279552512); +emit_32(3274688496); +emit_32(1092064893); +emit_32(3279552512); +emit_32(3274432512); +emit_32(1093456206); +emit_32(3279552512); +emit_32(3274176528); +emit_32(1095174193); +emit_32(3279552512); +emit_32(3273920545); +emit_32(1096573098); +emit_32(3279552512); +emit_32(3273664496); +emit_32(1096908852); +emit_32(3279552512); +emit_32(3273408512); +emit_32(1098744804); +emit_32(3279552512); +emit_32(3273152528); +emit_32(1099535483); +emit_32(3279552512); +emit_32(3272896545); +emit_32(1099936825); +emit_32(3279552512); +emit_32(3272640496); +emit_32(1100672506); +emit_32(3279552512); +emit_32(3272384512); +emit_32(1101166805); +emit_32(3279552512); +emit_32(3272128528); +emit_32(1102004250); +emit_32(3279552512); +emit_32(3271872545); +emit_32(1102491838); +emit_32(3279552512); +emit_32(3271616496); +emit_32(1103105779); +emit_32(3279552512); +emit_32(3271163904); +emit_32(1103782950); +emit_32(3279552512); +emit_32(3270651937); +emit_32(1104304878); +emit_32(3279552512); +emit_32(3270139970); +emit_32(1104909802); +emit_32(3279552512); +emit_32(3269627871); +emit_32(1104927680); +emit_32(3279552512); +emit_32(3269115904); +emit_32(1104823452); +emit_32(3279552512); +emit_32(3268603937); +emit_32(1104924063); +emit_32(3279552512); +emit_32(3268091970); +emit_32(1105080143); +emit_32(3279552512); +emit_32(3267579911); +emit_32(1104516533); +emit_32(3279552512); +emit_32(3267067904); +emit_32(1103348315); +emit_32(3279552512); +emit_32(3266555911); +emit_32(1102478049); +emit_32(3279552512); +emit_32(3266043904); +emit_32(1101882406); +emit_32(3279552512); +emit_32(3265531911); +emit_32(1100937324); +emit_32(3279552512); +emit_32(3265019904); +emit_32(1100262828); +emit_32(3279552512); +emit_32(3264507911); +emit_32(1099805963); +emit_32(3279552512); +emit_32(3263995904); +emit_32(1098412301); +emit_32(3279552512); +emit_32(3263483911); +emit_32(1097524052); +emit_32(3279552512); +emit_32(3262775296); +emit_32(1096845309); +emit_32(3279552512); +emit_32(3261751309); +emit_32(1094863186); +emit_32(3279552512); +emit_32(3260727296); +emit_32(1092933596); +emit_32(3279552512); +emit_32(3259703309); +emit_32(1092280658); +emit_32(3279552512); +emit_32(3258679296); +emit_32(1090650752); +emit_32(3279552512); +emit_32(3257655309); +emit_32(1090797762); +emit_32(3279552512); +emit_32(3256631296); +emit_32(1090478271); +emit_32(3279552512); +emit_32(3255607309); +emit_32(1089328172); +emit_32(3279552512); +emit_32(3254386688); +emit_32(1087017593); +emit_32(3279552512); +emit_32(3252338714); +emit_32(1083442180); +emit_32(3279552512); +emit_32(3250290688); +emit_32(1081443237); +emit_32(3279552512); +emit_32(3248242714); +emit_32(1082646268); +emit_32(3279552512); +emit_32(3245998080); +emit_32(1081291445); +emit_32(3279552512); +emit_32(3241902132); +emit_32(1081059249); +emit_32(3279552512); +emit_32(3237609472); +emit_32(1081285406); +emit_32(3279552512); +emit_32(3229220864); +emit_32(1081938249); +emit_32(3279552512); +emit_32(0); +emit_32(1085708656); +emit_32(3279552512); +emit_32(1081737216); +emit_32(1086994839); +emit_32(3279552512); +emit_start(LandscapeVtxCount) +emit_32(2048); +emit_32(1980); +emit_32(2048); +emit_32(2112); +emit_32(2244); +emit_32(2310); +emit_32(2240); +emit_32(2178); +emit_start(LandscapeIdx) +emit_32(Landscape01Idx); +emit_32(Landscape02Idx); +emit_32(Landscape03Idx); +emit_32(Landscape04Idx); +emit_32(Landscape05Idx); +emit_32(Landscape06Idx); +emit_32(Landscape07Idx); +emit_32(Landscape08Idx); +emit_start(Landscape01Idx) +emit_16(0); +emit_16(1); +emit_16(2); +emit_16(3); +emit_16(2); +emit_16(1); +emit_16(2); +emit_16(3); +emit_16(4); +emit_16(5); +emit_16(4); +emit_16(3); +emit_16(4); +emit_16(5); +emit_16(6); +emit_16(7); +emit_16(6); +emit_16(5); +emit_16(6); +emit_16(7); +emit_16(8); +emit_16(9); +emit_16(8); +emit_16(7); +emit_16(8); +emit_16(9); +emit_16(10); +emit_16(11); +emit_16(10); +emit_16(9); +emit_16(10); +emit_16(11); +emit_16(12); +emit_16(13); +emit_16(12); +emit_16(11); +emit_16(12); +emit_16(13); +emit_16(14); +emit_16(15); +emit_16(14); +emit_16(13); +emit_16(14); +emit_16(15); +emit_16(16); +emit_16(17); +emit_16(16); +emit_16(15); +emit_16(16); +emit_16(17); +emit_16(18); +emit_16(19); +emit_16(18); +emit_16(17); +emit_16(18); +emit_16(19); +emit_16(20); +emit_16(21); +emit_16(20); +emit_16(19); +emit_16(20); +emit_16(21); +emit_16(22); +emit_16(23); +emit_16(22); +emit_16(21); +emit_16(22); +emit_16(23); +emit_16(24); +emit_16(25); +emit_16(24); +emit_16(23); +emit_16(24); +emit_16(25); +emit_16(26); +emit_16(27); +emit_16(26); +emit_16(25); +emit_16(26); +emit_16(27); +emit_16(28); +emit_16(29); +emit_16(28); +emit_16(27); +emit_16(28); +emit_16(29); +emit_16(30); +emit_16(31); +emit_16(30); +emit_16(29); +emit_16(30); +emit_16(31); +emit_16(32); +emit_16(33); +emit_16(32); +emit_16(31); +emit_16(32); +emit_16(33); +emit_16(34); +emit_16(35); +emit_16(34); +emit_16(33); +emit_16(34); +emit_16(35); +emit_16(36); +emit_16(37); +emit_16(36); +emit_16(35); +emit_16(36); +emit_16(37); +emit_16(38); +emit_16(39); +emit_16(38); +emit_16(37); +emit_16(38); +emit_16(39); +emit_16(40); +emit_16(41); +emit_16(40); +emit_16(39); +emit_16(40); +emit_16(41); +emit_16(42); +emit_16(43); +emit_16(42); +emit_16(41); +emit_16(42); +emit_16(43); +emit_16(44); +emit_16(45); +emit_16(44); +emit_16(43); +emit_16(44); +emit_16(45); +emit_16(46); +emit_16(47); +emit_16(46); +emit_16(45); +emit_16(46); +emit_16(47); +emit_16(48); +emit_16(49); +emit_16(48); +emit_16(47); +emit_16(48); +emit_16(49); +emit_16(50); +emit_16(51); +emit_16(50); +emit_16(49); +emit_16(50); +emit_16(51); +emit_16(52); +emit_16(53); +emit_16(52); +emit_16(51); +emit_16(52); +emit_16(53); +emit_16(54); +emit_16(55); +emit_16(54); +emit_16(53); +emit_16(54); +emit_16(55); +emit_16(56); +emit_16(57); +emit_16(56); +emit_16(55); +emit_16(56); +emit_16(57); +emit_16(58); +emit_16(59); +emit_16(58); +emit_16(57); +emit_16(58); +emit_16(59); +emit_16(60); +emit_16(61); +emit_16(60); +emit_16(59); +emit_16(60); +emit_16(61); +emit_16(62); +emit_16(63); +emit_16(62); +emit_16(61); +emit_16(62); +emit_16(63); +emit_16(64); +emit_16(65); +emit_16(64); +emit_16(63); +emit_16(64); +emit_16(65); +emit_16(66); +emit_16(67); +emit_16(66); +emit_16(65); +emit_16(66); +emit_16(67); +emit_16(68); +emit_16(69); +emit_16(68); +emit_16(67); +emit_16(68); +emit_16(69); +emit_16(70); +emit_16(71); +emit_16(70); +emit_16(69); +emit_16(70); +emit_16(71); +emit_16(72); +emit_16(73); +emit_16(72); +emit_16(71); +emit_16(72); +emit_16(73); +emit_16(74); +emit_16(75); +emit_16(74); +emit_16(73); +emit_16(74); +emit_16(75); +emit_16(76); +emit_16(77); +emit_16(76); +emit_16(75); +emit_16(76); +emit_16(77); +emit_16(78); +emit_16(79); +emit_16(78); +emit_16(77); +emit_16(78); +emit_16(79); +emit_16(80); +emit_16(81); +emit_16(80); +emit_16(79); +emit_16(80); +emit_16(81); +emit_16(82); +emit_16(83); +emit_16(82); +emit_16(81); +emit_16(82); +emit_16(83); +emit_16(84); +emit_16(85); +emit_16(84); +emit_16(83); +emit_16(84); +emit_16(85); +emit_16(86); +emit_16(87); +emit_16(86); +emit_16(85); +emit_16(86); +emit_16(87); +emit_16(88); +emit_16(89); +emit_16(88); +emit_16(87); +emit_16(88); +emit_16(89); +emit_16(90); +emit_16(91); +emit_16(90); +emit_16(89); +emit_16(90); +emit_16(91); +emit_16(92); +emit_16(93); +emit_16(92); +emit_16(91); +emit_16(92); +emit_16(93); +emit_16(94); +emit_16(95); +emit_16(94); +emit_16(93); +emit_16(94); +emit_16(95); +emit_16(96); +emit_16(97); +emit_16(96); +emit_16(95); +emit_16(96); +emit_16(97); +emit_16(98); +emit_16(99); +emit_16(98); +emit_16(97); +emit_16(98); +emit_16(99); +emit_16(100); +emit_16(101); +emit_16(100); +emit_16(99); +emit_16(100); +emit_16(101); +emit_16(102); +emit_16(103); +emit_16(102); +emit_16(101); +emit_16(102); +emit_16(103); +emit_16(104); +emit_16(105); +emit_16(104); +emit_16(103); +emit_16(104); +emit_16(105); +emit_16(106); +emit_16(107); +emit_16(106); +emit_16(105); +emit_16(106); +emit_16(107); +emit_16(108); +emit_16(109); +emit_16(108); +emit_16(107); +emit_16(108); +emit_16(109); +emit_16(110); +emit_16(111); +emit_16(110); +emit_16(109); +emit_16(110); +emit_16(111); +emit_16(112); +emit_16(113); +emit_16(112); +emit_16(111); +emit_16(112); +emit_16(113); +emit_16(114); +emit_16(115); +emit_16(114); +emit_16(113); +emit_16(114); +emit_16(115); +emit_16(116); +emit_16(117); +emit_16(116); +emit_16(115); +emit_16(116); +emit_16(117); +emit_16(118); +emit_16(119); +emit_16(118); +emit_16(117); +emit_16(118); +emit_16(119); +emit_16(120); +emit_16(121); +emit_16(120); +emit_16(119); +emit_16(120); +emit_16(121); +emit_16(122); +emit_16(123); +emit_16(122); +emit_16(121); +emit_16(122); +emit_16(123); +emit_16(124); +emit_16(125); +emit_16(124); +emit_16(123); +emit_16(124); +emit_16(125); +emit_16(126); +emit_16(127); +emit_16(126); +emit_16(125); +emit_16(128); +emit_16(0); +emit_16(129); +emit_16(2); +emit_16(129); +emit_16(0); +emit_16(129); +emit_16(2); +emit_16(130); +emit_16(4); +emit_16(130); +emit_16(2); +emit_16(130); +emit_16(4); +emit_16(131); +emit_16(6); +emit_16(131); +emit_16(4); +emit_16(131); +emit_16(6); +emit_16(132); +emit_16(8); +emit_16(132); +emit_16(6); +emit_16(132); +emit_16(8); +emit_16(133); +emit_16(10); +emit_16(133); +emit_16(8); +emit_16(133); +emit_16(10); +emit_16(134); +emit_16(12); +emit_16(134); +emit_16(10); +emit_16(134); +emit_16(12); +emit_16(135); +emit_16(14); +emit_16(135); +emit_16(12); +emit_16(135); +emit_16(14); +emit_16(136); +emit_16(16); +emit_16(136); +emit_16(14); +emit_16(136); +emit_16(16); +emit_16(137); +emit_16(18); +emit_16(137); +emit_16(16); +emit_16(137); +emit_16(18); +emit_16(138); +emit_16(20); +emit_16(138); +emit_16(18); +emit_16(138); +emit_16(20); +emit_16(139); +emit_16(22); +emit_16(139); +emit_16(20); +emit_16(139); +emit_16(22); +emit_16(140); +emit_16(24); +emit_16(140); +emit_16(22); +emit_16(140); +emit_16(24); +emit_16(141); +emit_16(26); +emit_16(141); +emit_16(24); +emit_16(141); +emit_16(26); +emit_16(142); +emit_16(28); +emit_16(142); +emit_16(26); +emit_16(142); +emit_16(28); +emit_16(143); +emit_16(30); +emit_16(143); +emit_16(28); +emit_16(143); +emit_16(30); +emit_16(144); +emit_16(32); +emit_16(144); +emit_16(30); +emit_16(144); +emit_16(32); +emit_16(145); +emit_16(34); +emit_16(145); +emit_16(32); +emit_16(145); +emit_16(34); +emit_16(146); +emit_16(36); +emit_16(146); +emit_16(34); +emit_16(146); +emit_16(36); +emit_16(147); +emit_16(38); +emit_16(147); +emit_16(36); +emit_16(147); +emit_16(38); +emit_16(148); +emit_16(40); +emit_16(148); +emit_16(38); +emit_16(148); +emit_16(40); +emit_16(149); +emit_16(42); +emit_16(149); +emit_16(40); +emit_16(149); +emit_16(42); +emit_16(150); +emit_16(44); +emit_16(150); +emit_16(42); +emit_16(150); +emit_16(44); +emit_16(151); +emit_16(46); +emit_16(151); +emit_16(44); +emit_16(151); +emit_16(46); +emit_16(152); +emit_16(48); +emit_16(152); +emit_16(46); +emit_16(152); +emit_16(48); +emit_16(153); +emit_16(50); +emit_16(153); +emit_16(48); +emit_16(153); +emit_16(50); +emit_16(154); +emit_16(52); +emit_16(154); +emit_16(50); +emit_16(154); +emit_16(52); +emit_16(155); +emit_16(54); +emit_16(155); +emit_16(52); +emit_16(155); +emit_16(54); +emit_16(156); +emit_16(56); +emit_16(156); +emit_16(54); +emit_16(156); +emit_16(56); +emit_16(157); +emit_16(58); +emit_16(157); +emit_16(56); +emit_16(157); +emit_16(58); +emit_16(158); +emit_16(60); +emit_16(158); +emit_16(58); +emit_16(158); +emit_16(60); +emit_16(159); +emit_16(62); +emit_16(159); +emit_16(60); +emit_16(159); +emit_16(62); +emit_16(160); +emit_16(64); +emit_16(160); +emit_16(62); +emit_16(160); +emit_16(64); +emit_16(161); +emit_16(66); +emit_16(161); +emit_16(64); +emit_16(161); +emit_16(66); +emit_16(162); +emit_16(68); +emit_16(162); +emit_16(66); +emit_16(162); +emit_16(68); +emit_16(163); +emit_16(70); +emit_16(163); +emit_16(68); +emit_16(163); +emit_16(70); +emit_16(164); +emit_16(72); +emit_16(164); +emit_16(70); +emit_16(164); +emit_16(72); +emit_16(165); +emit_16(74); +emit_16(165); +emit_16(72); +emit_16(165); +emit_16(74); +emit_16(166); +emit_16(76); +emit_16(166); +emit_16(74); +emit_16(166); +emit_16(76); +emit_16(167); +emit_16(78); +emit_16(167); +emit_16(76); +emit_16(167); +emit_16(78); +emit_16(168); +emit_16(80); +emit_16(168); +emit_16(78); +emit_16(168); +emit_16(80); +emit_16(169); +emit_16(82); +emit_16(169); +emit_16(80); +emit_16(169); +emit_16(82); +emit_16(170); +emit_16(84); +emit_16(170); +emit_16(82); +emit_16(170); +emit_16(84); +emit_16(171); +emit_16(86); +emit_16(171); +emit_16(84); +emit_16(171); +emit_16(86); +emit_16(172); +emit_16(88); +emit_16(172); +emit_16(86); +emit_16(172); +emit_16(88); +emit_16(173); +emit_16(90); +emit_16(173); +emit_16(88); +emit_16(173); +emit_16(90); +emit_16(174); +emit_16(92); +emit_16(174); +emit_16(90); +emit_16(174); +emit_16(92); +emit_16(175); +emit_16(94); +emit_16(175); +emit_16(92); +emit_16(175); +emit_16(94); +emit_16(176); +emit_16(96); +emit_16(176); +emit_16(94); +emit_16(176); +emit_16(96); +emit_16(177); +emit_16(98); +emit_16(177); +emit_16(96); +emit_16(177); +emit_16(98); +emit_16(178); +emit_16(100); +emit_16(178); +emit_16(98); +emit_16(178); +emit_16(100); +emit_16(179); +emit_16(102); +emit_16(179); +emit_16(100); +emit_16(179); +emit_16(102); +emit_16(180); +emit_16(104); +emit_16(180); +emit_16(102); +emit_16(180); +emit_16(104); +emit_16(181); +emit_16(106); +emit_16(181); +emit_16(104); +emit_16(181); +emit_16(106); +emit_16(182); +emit_16(108); +emit_16(182); +emit_16(106); +emit_16(182); +emit_16(108); +emit_16(183); +emit_16(110); +emit_16(183); +emit_16(108); +emit_16(183); +emit_16(110); +emit_16(184); +emit_16(112); +emit_16(184); +emit_16(110); +emit_16(184); +emit_16(112); +emit_16(185); +emit_16(114); +emit_16(185); +emit_16(112); +emit_16(185); +emit_16(114); +emit_16(186); +emit_16(116); +emit_16(186); +emit_16(114); +emit_16(186); +emit_16(116); +emit_16(187); +emit_16(118); +emit_16(187); +emit_16(116); +emit_16(187); +emit_16(118); +emit_16(188); +emit_16(120); +emit_16(188); +emit_16(118); +emit_16(188); +emit_16(120); +emit_16(189); +emit_16(122); +emit_16(189); +emit_16(120); +emit_16(189); +emit_16(122); +emit_16(190); +emit_16(124); +emit_16(190); +emit_16(122); +emit_16(190); +emit_16(124); +emit_16(191); +emit_16(126); +emit_16(191); +emit_16(124); +emit_16(192); +emit_16(128); +emit_16(193); +emit_16(129); +emit_16(193); +emit_16(128); +emit_16(193); +emit_16(129); +emit_16(194); +emit_16(130); +emit_16(194); +emit_16(129); +emit_16(194); +emit_16(130); +emit_16(195); +emit_16(131); +emit_16(195); +emit_16(130); +emit_16(195); +emit_16(131); +emit_16(196); +emit_16(132); +emit_16(196); +emit_16(131); +emit_16(196); +emit_16(132); +emit_16(197); +emit_16(133); +emit_16(197); +emit_16(132); +emit_16(197); +emit_16(133); +emit_16(198); +emit_16(134); +emit_16(198); +emit_16(133); +emit_16(198); +emit_16(134); +emit_16(199); +emit_16(135); +emit_16(199); +emit_16(134); +emit_16(199); +emit_16(135); +emit_16(200); +emit_16(136); +emit_16(200); +emit_16(135); +emit_16(200); +emit_16(136); +emit_16(201); +emit_16(137); +emit_16(201); +emit_16(136); +emit_16(201); +emit_16(137); +emit_16(202); +emit_16(138); +emit_16(202); +emit_16(137); +emit_16(202); +emit_16(138); +emit_16(203); +emit_16(139); +emit_16(203); +emit_16(138); +emit_16(203); +emit_16(139); +emit_16(204); +emit_16(140); +emit_16(204); +emit_16(139); +emit_16(204); +emit_16(140); +emit_16(205); +emit_16(141); +emit_16(205); +emit_16(140); +emit_16(205); +emit_16(141); +emit_16(206); +emit_16(142); +emit_16(206); +emit_16(141); +emit_16(206); +emit_16(142); +emit_16(207); +emit_16(143); +emit_16(207); +emit_16(142); +emit_16(207); +emit_16(143); +emit_16(208); +emit_16(144); +emit_16(208); +emit_16(143); +emit_16(208); +emit_16(144); +emit_16(209); +emit_16(145); +emit_16(209); +emit_16(144); +emit_16(209); +emit_16(145); +emit_16(210); +emit_16(146); +emit_16(210); +emit_16(145); +emit_16(210); +emit_16(146); +emit_16(211); +emit_16(147); +emit_16(211); +emit_16(146); +emit_16(211); +emit_16(147); +emit_16(212); +emit_16(148); +emit_16(212); +emit_16(147); +emit_16(212); +emit_16(148); +emit_16(213); +emit_16(149); +emit_16(213); +emit_16(148); +emit_16(213); +emit_16(149); +emit_16(214); +emit_16(150); +emit_16(214); +emit_16(149); +emit_16(214); +emit_16(150); +emit_16(215); +emit_16(151); +emit_16(215); +emit_16(150); +emit_16(215); +emit_16(151); +emit_16(216); +emit_16(152); +emit_16(216); +emit_16(151); +emit_16(216); +emit_16(152); +emit_16(217); +emit_16(153); +emit_16(217); +emit_16(152); +emit_16(217); +emit_16(153); +emit_16(218); +emit_16(154); +emit_16(218); +emit_16(153); +emit_16(218); +emit_16(154); +emit_16(219); +emit_16(155); +emit_16(219); +emit_16(154); +emit_16(219); +emit_16(155); +emit_16(220); +emit_16(156); +emit_16(220); +emit_16(155); +emit_16(220); +emit_16(156); +emit_16(221); +emit_16(157); +emit_16(221); +emit_16(156); +emit_16(221); +emit_16(157); +emit_16(222); +emit_16(158); +emit_16(222); +emit_16(157); +emit_16(222); +emit_16(158); +emit_16(223); +emit_16(159); +emit_16(223); +emit_16(158); +emit_16(223); +emit_16(159); +emit_16(224); +emit_16(160); +emit_16(224); +emit_16(159); +emit_16(224); +emit_16(160); +emit_16(225); +emit_16(161); +emit_16(225); +emit_16(160); +emit_16(225); +emit_16(161); +emit_16(226); +emit_16(162); +emit_16(226); +emit_16(161); +emit_16(226); +emit_16(162); +emit_16(227); +emit_16(163); +emit_16(227); +emit_16(162); +emit_16(227); +emit_16(163); +emit_16(228); +emit_16(164); +emit_16(228); +emit_16(163); +emit_16(228); +emit_16(164); +emit_16(229); +emit_16(165); +emit_16(229); +emit_16(164); +emit_16(229); +emit_16(165); +emit_16(230); +emit_16(166); +emit_16(230); +emit_16(165); +emit_16(230); +emit_16(166); +emit_16(231); +emit_16(167); +emit_16(231); +emit_16(166); +emit_16(231); +emit_16(167); +emit_16(232); +emit_16(168); +emit_16(232); +emit_16(167); +emit_16(232); +emit_16(168); +emit_16(233); +emit_16(169); +emit_16(233); +emit_16(168); +emit_16(233); +emit_16(169); +emit_16(234); +emit_16(170); +emit_16(234); +emit_16(169); +emit_16(234); +emit_16(170); +emit_16(235); +emit_16(171); +emit_16(235); +emit_16(170); +emit_16(235); +emit_16(171); +emit_16(236); +emit_16(172); +emit_16(236); +emit_16(171); +emit_16(236); +emit_16(172); +emit_16(237); +emit_16(173); +emit_16(237); +emit_16(172); +emit_16(237); +emit_16(173); +emit_16(238); +emit_16(174); +emit_16(238); +emit_16(173); +emit_16(238); +emit_16(174); +emit_16(239); +emit_16(175); +emit_16(239); +emit_16(174); +emit_16(239); +emit_16(175); +emit_16(240); +emit_16(176); +emit_16(240); +emit_16(175); +emit_16(240); +emit_16(176); +emit_16(241); +emit_16(177); +emit_16(241); +emit_16(176); +emit_16(241); +emit_16(177); +emit_16(242); +emit_16(178); +emit_16(242); +emit_16(177); +emit_16(242); +emit_16(178); +emit_16(243); +emit_16(179); +emit_16(243); +emit_16(178); +emit_16(243); +emit_16(179); +emit_16(244); +emit_16(180); +emit_16(244); +emit_16(179); +emit_16(244); +emit_16(180); +emit_16(245); +emit_16(181); +emit_16(245); +emit_16(180); +emit_16(245); +emit_16(181); +emit_16(246); +emit_16(182); +emit_16(246); +emit_16(181); +emit_16(246); +emit_16(182); +emit_16(247); +emit_16(183); +emit_16(247); +emit_16(182); +emit_16(247); +emit_16(183); +emit_16(248); +emit_16(184); +emit_16(248); +emit_16(183); +emit_16(248); +emit_16(184); +emit_16(249); +emit_16(185); +emit_16(249); +emit_16(184); +emit_16(249); +emit_16(185); +emit_16(250); +emit_16(186); +emit_16(250); +emit_16(185); +emit_16(250); +emit_16(186); +emit_16(251); +emit_16(187); +emit_16(251); +emit_16(186); +emit_16(251); +emit_16(187); +emit_16(252); +emit_16(188); +emit_16(252); +emit_16(187); +emit_16(252); +emit_16(188); +emit_16(253); +emit_16(189); +emit_16(253); +emit_16(188); +emit_16(253); +emit_16(189); +emit_16(254); +emit_16(190); +emit_16(254); +emit_16(189); +emit_16(254); +emit_16(190); +emit_16(255); +emit_16(191); +emit_16(255); +emit_16(190); +emit_16(256); +emit_16(192); +emit_16(257); +emit_16(193); +emit_16(257); +emit_16(192); +emit_16(257); +emit_16(193); +emit_16(258); +emit_16(194); +emit_16(258); +emit_16(193); +emit_16(258); +emit_16(194); +emit_16(259); +emit_16(195); +emit_16(259); +emit_16(194); +emit_16(259); +emit_16(195); +emit_16(260); +emit_16(196); +emit_16(260); +emit_16(195); +emit_16(260); +emit_16(196); +emit_16(261); +emit_16(197); +emit_16(261); +emit_16(196); +emit_16(261); +emit_16(197); +emit_16(262); +emit_16(198); +emit_16(262); +emit_16(197); +emit_16(262); +emit_16(198); +emit_16(263); +emit_16(199); +emit_16(263); +emit_16(198); +emit_16(263); +emit_16(199); +emit_16(264); +emit_16(200); +emit_16(264); +emit_16(199); +emit_16(264); +emit_16(200); +emit_16(265); +emit_16(201); +emit_16(265); +emit_16(200); +emit_16(265); +emit_16(201); +emit_16(266); +emit_16(202); +emit_16(266); +emit_16(201); +emit_16(266); +emit_16(202); +emit_16(267); +emit_16(203); +emit_16(267); +emit_16(202); +emit_16(267); +emit_16(203); +emit_16(268); +emit_16(204); +emit_16(268); +emit_16(203); +emit_16(268); +emit_16(204); +emit_16(269); +emit_16(205); +emit_16(269); +emit_16(204); +emit_16(269); +emit_16(205); +emit_16(270); +emit_16(206); +emit_16(270); +emit_16(205); +emit_16(270); +emit_16(206); +emit_16(271); +emit_16(207); +emit_16(271); +emit_16(206); +emit_16(271); +emit_16(207); +emit_16(272); +emit_16(208); +emit_16(272); +emit_16(207); +emit_16(272); +emit_16(208); +emit_16(273); +emit_16(209); +emit_16(273); +emit_16(208); +emit_16(273); +emit_16(209); +emit_16(274); +emit_16(210); +emit_16(274); +emit_16(209); +emit_16(274); +emit_16(210); +emit_16(275); +emit_16(211); +emit_16(275); +emit_16(210); +emit_16(275); +emit_16(211); +emit_16(276); +emit_16(212); +emit_16(276); +emit_16(211); +emit_16(276); +emit_16(212); +emit_16(277); +emit_16(213); +emit_16(277); +emit_16(212); +emit_16(277); +emit_16(213); +emit_16(278); +emit_16(214); +emit_16(278); +emit_16(213); +emit_16(278); +emit_16(214); +emit_16(279); +emit_16(215); +emit_16(279); +emit_16(214); +emit_16(279); +emit_16(215); +emit_16(280); +emit_16(216); +emit_16(280); +emit_16(215); +emit_16(280); +emit_16(216); +emit_16(281); +emit_16(217); +emit_16(281); +emit_16(216); +emit_16(281); +emit_16(217); +emit_16(282); +emit_16(218); +emit_16(282); +emit_16(217); +emit_16(282); +emit_16(218); +emit_16(283); +emit_16(219); +emit_16(283); +emit_16(218); +emit_16(283); +emit_16(219); +emit_16(284); +emit_16(220); +emit_16(284); +emit_16(219); +emit_16(284); +emit_16(220); +emit_16(285); +emit_16(221); +emit_16(285); +emit_16(220); +emit_16(285); +emit_16(221); +emit_16(286); +emit_16(222); +emit_16(286); +emit_16(221); +emit_16(286); +emit_16(222); +emit_16(287); +emit_16(223); +emit_16(287); +emit_16(222); +emit_16(287); +emit_16(223); +emit_16(288); +emit_16(224); +emit_16(288); +emit_16(223); +emit_16(288); +emit_16(224); +emit_16(289); +emit_16(225); +emit_16(289); +emit_16(224); +emit_16(289); +emit_16(225); +emit_16(290); +emit_16(226); +emit_16(290); +emit_16(225); +emit_16(290); +emit_16(226); +emit_16(291); +emit_16(227); +emit_16(291); +emit_16(226); +emit_16(291); +emit_16(227); +emit_16(292); +emit_16(228); +emit_16(292); +emit_16(227); +emit_16(292); +emit_16(228); +emit_16(293); +emit_16(229); +emit_16(293); +emit_16(228); +emit_16(293); +emit_16(229); +emit_16(294); +emit_16(230); +emit_16(294); +emit_16(229); +emit_16(294); +emit_16(230); +emit_16(295); +emit_16(231); +emit_16(295); +emit_16(230); +emit_16(295); +emit_16(231); +emit_16(296); +emit_16(232); +emit_16(296); +emit_16(231); +emit_16(296); +emit_16(232); +emit_16(297); +emit_16(233); +emit_16(297); +emit_16(232); +emit_16(297); +emit_16(233); +emit_16(298); +emit_16(234); +emit_16(298); +emit_16(233); +emit_16(298); +emit_16(234); +emit_16(299); +emit_16(235); +emit_16(299); +emit_16(234); +emit_16(299); +emit_16(235); +emit_16(300); +emit_16(236); +emit_16(300); +emit_16(235); +emit_16(300); +emit_16(236); +emit_16(301); +emit_16(237); +emit_16(301); +emit_16(236); +emit_16(301); +emit_16(237); +emit_16(302); +emit_16(238); +emit_16(302); +emit_16(237); +emit_16(302); +emit_16(238); +emit_16(303); +emit_16(239); +emit_16(303); +emit_16(238); +emit_16(303); +emit_16(239); +emit_16(304); +emit_16(240); +emit_16(304); +emit_16(239); +emit_16(304); +emit_16(240); +emit_16(305); +emit_16(241); +emit_16(305); +emit_16(240); +emit_16(305); +emit_16(241); +emit_16(306); +emit_16(242); +emit_16(306); +emit_16(241); +emit_16(306); +emit_16(242); +emit_16(307); +emit_16(243); +emit_16(307); +emit_16(242); +emit_16(307); +emit_16(243); +emit_16(308); +emit_16(244); +emit_16(308); +emit_16(243); +emit_16(308); +emit_16(244); +emit_16(309); +emit_16(245); +emit_16(309); +emit_16(244); +emit_16(309); +emit_16(245); +emit_16(310); +emit_16(246); +emit_16(310); +emit_16(245); +emit_16(310); +emit_16(246); +emit_16(311); +emit_16(247); +emit_16(311); +emit_16(246); +emit_16(311); +emit_16(247); +emit_16(312); +emit_16(248); +emit_16(312); +emit_16(247); +emit_16(312); +emit_16(248); +emit_16(313); +emit_16(249); +emit_16(313); +emit_16(248); +emit_16(313); +emit_16(249); +emit_16(314); +emit_16(250); +emit_16(314); +emit_16(249); +emit_16(314); +emit_16(250); +emit_16(315); +emit_16(251); +emit_16(315); +emit_16(250); +emit_16(315); +emit_16(251); +emit_16(316); +emit_16(252); +emit_16(316); +emit_16(251); +emit_16(316); +emit_16(252); +emit_16(317); +emit_16(253); +emit_16(317); +emit_16(252); +emit_16(317); +emit_16(253); +emit_16(318); +emit_16(254); +emit_16(318); +emit_16(253); +emit_16(318); +emit_16(254); +emit_16(319); +emit_16(255); +emit_16(319); +emit_16(254); +emit_16(320); +emit_16(256); +emit_16(321); +emit_16(257); +emit_16(321); +emit_16(256); +emit_16(321); +emit_16(257); +emit_16(322); +emit_16(258); +emit_16(322); +emit_16(257); +emit_16(322); +emit_16(258); +emit_16(323); +emit_16(259); +emit_16(323); +emit_16(258); +emit_16(323); +emit_16(259); +emit_16(324); +emit_16(260); +emit_16(324); +emit_16(259); +emit_16(324); +emit_16(260); +emit_16(325); +emit_16(261); +emit_16(325); +emit_16(260); +emit_16(325); +emit_16(261); +emit_16(326); +emit_16(262); +emit_16(326); +emit_16(261); +emit_16(326); +emit_16(262); +emit_16(327); +emit_16(263); +emit_16(327); +emit_16(262); +emit_16(327); +emit_16(263); +emit_16(328); +emit_16(264); +emit_16(328); +emit_16(263); +emit_16(328); +emit_16(264); +emit_16(329); +emit_16(265); +emit_16(329); +emit_16(264); +emit_16(329); +emit_16(265); +emit_16(330); +emit_16(266); +emit_16(330); +emit_16(265); +emit_16(330); +emit_16(266); +emit_16(331); +emit_16(267); +emit_16(331); +emit_16(266); +emit_16(331); +emit_16(267); +emit_16(332); +emit_16(268); +emit_16(332); +emit_16(267); +emit_16(332); +emit_16(268); +emit_16(333); +emit_16(269); +emit_16(333); +emit_16(268); +emit_16(333); +emit_16(269); +emit_16(334); +emit_16(270); +emit_16(334); +emit_16(269); +emit_16(334); +emit_16(270); +emit_16(335); +emit_16(271); +emit_16(335); +emit_16(270); +emit_16(335); +emit_16(271); +emit_16(336); +emit_16(272); +emit_16(336); +emit_16(271); +emit_16(336); +emit_16(272); +emit_16(337); +emit_16(273); +emit_16(337); +emit_16(272); +emit_16(337); +emit_16(273); +emit_16(338); +emit_16(274); +emit_16(338); +emit_16(273); +emit_16(338); +emit_16(274); +emit_16(339); +emit_16(275); +emit_16(339); +emit_16(274); +emit_16(339); +emit_16(275); +emit_16(340); +emit_16(276); +emit_16(340); +emit_16(275); +emit_16(340); +emit_16(276); +emit_16(341); +emit_16(277); +emit_16(341); +emit_16(276); +emit_16(341); +emit_16(277); +emit_16(342); +emit_16(278); +emit_16(342); +emit_16(277); +emit_16(342); +emit_16(278); +emit_16(343); +emit_16(279); +emit_16(343); +emit_16(278); +emit_16(343); +emit_16(279); +emit_16(344); +emit_16(280); +emit_16(344); +emit_16(279); +emit_16(344); +emit_16(280); +emit_16(345); +emit_16(281); +emit_16(345); +emit_16(280); +emit_16(345); +emit_16(281); +emit_16(346); +emit_16(282); +emit_16(346); +emit_16(281); +emit_16(346); +emit_16(282); +emit_16(347); +emit_16(283); +emit_16(347); +emit_16(282); +emit_16(347); +emit_16(283); +emit_16(348); +emit_16(284); +emit_16(348); +emit_16(283); +emit_16(348); +emit_16(284); +emit_16(349); +emit_16(285); +emit_16(349); +emit_16(284); +emit_16(349); +emit_16(285); +emit_16(350); +emit_16(286); +emit_16(350); +emit_16(285); +emit_16(350); +emit_16(286); +emit_16(351); +emit_16(287); +emit_16(351); +emit_16(286); +emit_16(351); +emit_16(287); +emit_16(352); +emit_16(288); +emit_16(352); +emit_16(287); +emit_16(352); +emit_16(288); +emit_16(353); +emit_16(289); +emit_16(353); +emit_16(288); +emit_16(353); +emit_16(289); +emit_16(354); +emit_16(290); +emit_16(354); +emit_16(289); +emit_16(354); +emit_16(290); +emit_16(355); +emit_16(291); +emit_16(355); +emit_16(290); +emit_16(355); +emit_16(291); +emit_16(356); +emit_16(292); +emit_16(356); +emit_16(291); +emit_16(356); +emit_16(292); +emit_16(357); +emit_16(293); +emit_16(357); +emit_16(292); +emit_16(357); +emit_16(293); +emit_16(358); +emit_16(294); +emit_16(358); +emit_16(293); +emit_16(358); +emit_16(294); +emit_16(359); +emit_16(295); +emit_16(359); +emit_16(294); +emit_16(359); +emit_16(295); +emit_16(360); +emit_16(296); +emit_16(360); +emit_16(295); +emit_16(360); +emit_16(296); +emit_16(361); +emit_16(297); +emit_16(361); +emit_16(296); +emit_16(361); +emit_16(297); +emit_16(362); +emit_16(298); +emit_16(362); +emit_16(297); +emit_16(362); +emit_16(298); +emit_16(363); +emit_16(299); +emit_16(363); +emit_16(298); +emit_16(363); +emit_16(299); +emit_16(364); +emit_16(300); +emit_16(364); +emit_16(299); +emit_16(364); +emit_16(300); +emit_16(365); +emit_16(301); +emit_16(365); +emit_16(300); +emit_16(365); +emit_16(301); +emit_16(366); +emit_16(302); +emit_16(366); +emit_16(301); +emit_16(366); +emit_16(302); +emit_16(367); +emit_16(303); +emit_16(367); +emit_16(302); +emit_16(367); +emit_16(303); +emit_16(368); +emit_16(304); +emit_16(368); +emit_16(303); +emit_16(368); +emit_16(304); +emit_16(369); +emit_16(305); +emit_16(369); +emit_16(304); +emit_16(369); +emit_16(305); +emit_16(370); +emit_16(306); +emit_16(370); +emit_16(305); +emit_16(370); +emit_16(306); +emit_16(371); +emit_16(307); +emit_16(371); +emit_16(306); +emit_16(371); +emit_16(307); +emit_16(372); +emit_16(308); +emit_16(372); +emit_16(307); +emit_16(372); +emit_16(308); +emit_16(373); +emit_16(309); +emit_16(373); +emit_16(308); +emit_16(373); +emit_16(309); +emit_16(374); +emit_16(310); +emit_16(374); +emit_16(309); +emit_16(374); +emit_16(310); +emit_16(375); +emit_16(311); +emit_16(375); +emit_16(310); +emit_16(375); +emit_16(311); +emit_16(376); +emit_16(312); +emit_16(376); +emit_16(311); +emit_16(376); +emit_16(312); +emit_16(377); +emit_16(313); +emit_16(377); +emit_16(312); +emit_16(377); +emit_16(313); +emit_16(378); +emit_16(314); +emit_16(378); +emit_16(313); +emit_16(378); +emit_16(314); +emit_16(379); +emit_16(315); +emit_16(379); +emit_16(314); +emit_16(379); +emit_16(315); +emit_16(380); +emit_16(316); +emit_16(380); +emit_16(315); +emit_16(380); +emit_16(316); +emit_16(381); +emit_16(317); +emit_16(381); +emit_16(316); +emit_16(381); +emit_16(317); +emit_16(382); +emit_16(318); +emit_16(382); +emit_16(317); +emit_16(382); +emit_16(318); +emit_16(383); +emit_16(319); +emit_16(383); +emit_16(318); +emit_16(384); +emit_16(320); +emit_16(385); +emit_16(321); +emit_16(385); +emit_16(320); +emit_16(385); +emit_16(321); +emit_16(386); +emit_16(322); +emit_16(386); +emit_16(321); +emit_16(386); +emit_16(322); +emit_16(387); +emit_16(323); +emit_16(387); +emit_16(322); +emit_16(387); +emit_16(323); +emit_16(388); +emit_16(324); +emit_16(388); +emit_16(323); +emit_16(388); +emit_16(324); +emit_16(389); +emit_16(325); +emit_16(389); +emit_16(324); +emit_16(389); +emit_16(325); +emit_16(390); +emit_16(326); +emit_16(390); +emit_16(325); +emit_16(390); +emit_16(326); +emit_16(391); +emit_16(327); +emit_16(391); +emit_16(326); +emit_16(391); +emit_16(327); +emit_16(392); +emit_16(328); +emit_16(392); +emit_16(327); +emit_16(392); +emit_16(328); +emit_16(393); +emit_16(329); +emit_16(393); +emit_16(328); +emit_16(393); +emit_16(329); +emit_16(394); +emit_16(330); +emit_16(394); +emit_16(329); +emit_16(394); +emit_16(330); +emit_16(395); +emit_16(331); +emit_16(395); +emit_16(330); +emit_16(395); +emit_16(331); +emit_16(396); +emit_16(332); +emit_16(396); +emit_16(331); +emit_16(396); +emit_16(332); +emit_16(397); +emit_16(333); +emit_16(397); +emit_16(332); +emit_16(397); +emit_16(333); +emit_16(398); +emit_16(334); +emit_16(398); +emit_16(333); +emit_16(398); +emit_16(334); +emit_16(399); +emit_16(335); +emit_16(399); +emit_16(334); +emit_16(399); +emit_16(335); +emit_16(400); +emit_16(336); +emit_16(400); +emit_16(335); +emit_16(400); +emit_16(336); +emit_16(401); +emit_16(337); +emit_16(401); +emit_16(336); +emit_16(401); +emit_16(337); +emit_16(402); +emit_16(338); +emit_16(402); +emit_16(337); +emit_16(402); +emit_16(338); +emit_16(403); +emit_16(339); +emit_16(403); +emit_16(338); +emit_16(403); +emit_16(339); +emit_16(404); +emit_16(340); +emit_16(404); +emit_16(339); +emit_16(404); +emit_16(340); +emit_16(405); +emit_16(341); +emit_16(405); +emit_16(340); +emit_16(405); +emit_16(341); +emit_16(406); +emit_16(342); +emit_16(406); +emit_16(341); +emit_16(406); +emit_16(342); +emit_16(407); +emit_16(343); +emit_16(407); +emit_16(342); +emit_16(407); +emit_16(343); +emit_16(408); +emit_16(344); +emit_16(408); +emit_16(343); +emit_16(408); +emit_16(344); +emit_16(409); +emit_16(345); +emit_16(409); +emit_16(344); +emit_16(409); +emit_16(345); +emit_16(410); +emit_16(346); +emit_16(410); +emit_16(345); +emit_16(410); +emit_16(346); +emit_16(411); +emit_16(347); +emit_16(411); +emit_16(346); +emit_16(411); +emit_16(347); +emit_16(412); +emit_16(348); +emit_16(412); +emit_16(347); +emit_16(412); +emit_16(348); +emit_16(413); +emit_16(349); +emit_16(413); +emit_16(348); +emit_16(413); +emit_16(349); +emit_16(414); +emit_16(350); +emit_16(414); +emit_16(349); +emit_16(414); +emit_16(350); +emit_16(415); +emit_16(351); +emit_16(415); +emit_16(350); +emit_16(415); +emit_16(351); +emit_16(416); +emit_16(352); +emit_16(416); +emit_16(351); +emit_16(416); +emit_16(352); +emit_16(417); +emit_16(353); +emit_16(417); +emit_16(352); +emit_16(417); +emit_16(353); +emit_16(418); +emit_16(354); +emit_16(418); +emit_16(353); +emit_16(418); +emit_16(354); +emit_16(419); +emit_16(355); +emit_16(419); +emit_16(354); +emit_16(419); +emit_16(355); +emit_16(420); +emit_16(356); +emit_16(420); +emit_16(355); +emit_16(420); +emit_16(356); +emit_16(421); +emit_16(357); +emit_16(421); +emit_16(356); +emit_16(421); +emit_16(357); +emit_16(422); +emit_16(358); +emit_16(422); +emit_16(357); +emit_16(422); +emit_16(358); +emit_16(423); +emit_16(359); +emit_16(423); +emit_16(358); +emit_16(423); +emit_16(359); +emit_16(424); +emit_16(360); +emit_16(424); +emit_16(359); +emit_16(424); +emit_16(360); +emit_16(425); +emit_16(361); +emit_16(425); +emit_16(360); +emit_16(425); +emit_16(361); +emit_16(426); +emit_16(362); +emit_16(426); +emit_16(361); +emit_16(426); +emit_16(362); +emit_16(427); +emit_16(363); +emit_16(427); +emit_16(362); +emit_16(427); +emit_16(363); +emit_16(428); +emit_16(364); +emit_16(428); +emit_16(363); +emit_16(428); +emit_16(364); +emit_16(429); +emit_16(365); +emit_16(429); +emit_16(364); +emit_16(429); +emit_16(365); +emit_16(430); +emit_16(366); +emit_16(430); +emit_16(365); +emit_16(430); +emit_16(366); +emit_16(431); +emit_16(367); +emit_16(431); +emit_16(366); +emit_16(431); +emit_16(367); +emit_16(432); +emit_16(368); +emit_16(432); +emit_16(367); +emit_16(432); +emit_16(368); +emit_16(433); +emit_16(369); +emit_16(433); +emit_16(368); +emit_16(433); +emit_16(369); +emit_16(434); +emit_16(370); +emit_16(434); +emit_16(369); +emit_16(434); +emit_16(370); +emit_16(435); +emit_16(371); +emit_16(435); +emit_16(370); +emit_16(435); +emit_16(371); +emit_16(436); +emit_16(372); +emit_16(436); +emit_16(371); +emit_16(436); +emit_16(372); +emit_16(437); +emit_16(373); +emit_16(437); +emit_16(372); +emit_16(437); +emit_16(373); +emit_16(438); +emit_16(374); +emit_16(438); +emit_16(373); +emit_16(438); +emit_16(374); +emit_16(439); +emit_16(375); +emit_16(439); +emit_16(374); +emit_16(439); +emit_16(375); +emit_16(440); +emit_16(376); +emit_16(440); +emit_16(375); +emit_16(440); +emit_16(376); +emit_16(441); +emit_16(377); +emit_16(441); +emit_16(376); +emit_16(441); +emit_16(377); +emit_16(442); +emit_16(378); +emit_16(442); +emit_16(377); +emit_16(442); +emit_16(378); +emit_16(443); +emit_16(379); +emit_16(443); +emit_16(378); +emit_16(443); +emit_16(379); +emit_16(444); +emit_16(380); +emit_16(444); +emit_16(379); +emit_16(444); +emit_16(380); +emit_16(445); +emit_16(381); +emit_16(445); +emit_16(380); +emit_16(445); +emit_16(381); +emit_16(446); +emit_16(382); +emit_16(446); +emit_16(381); +emit_16(446); +emit_16(382); +emit_16(447); +emit_16(383); +emit_16(447); +emit_16(382); +emit_16(448); +emit_16(384); +emit_16(449); +emit_16(385); +emit_16(449); +emit_16(384); +emit_16(449); +emit_16(385); +emit_16(450); +emit_16(386); +emit_16(450); +emit_16(385); +emit_16(450); +emit_16(386); +emit_16(451); +emit_16(387); +emit_16(451); +emit_16(386); +emit_16(451); +emit_16(387); +emit_16(452); +emit_16(388); +emit_16(452); +emit_16(387); +emit_16(452); +emit_16(388); +emit_16(453); +emit_16(389); +emit_16(453); +emit_16(388); +emit_16(453); +emit_16(389); +emit_16(454); +emit_16(390); +emit_16(454); +emit_16(389); +emit_16(454); +emit_16(390); +emit_16(455); +emit_16(391); +emit_16(455); +emit_16(390); +emit_16(455); +emit_16(391); +emit_16(456); +emit_16(392); +emit_16(456); +emit_16(391); +emit_16(456); +emit_16(392); +emit_16(457); +emit_16(393); +emit_16(457); +emit_16(392); +emit_16(457); +emit_16(393); +emit_16(458); +emit_16(394); +emit_16(458); +emit_16(393); +emit_16(458); +emit_16(394); +emit_16(459); +emit_16(395); +emit_16(459); +emit_16(394); +emit_16(459); +emit_16(395); +emit_16(460); +emit_16(396); +emit_16(460); +emit_16(395); +emit_16(460); +emit_16(396); +emit_16(461); +emit_16(397); +emit_16(461); +emit_16(396); +emit_16(461); +emit_16(397); +emit_16(462); +emit_16(398); +emit_16(462); +emit_16(397); +emit_16(462); +emit_16(398); +emit_16(463); +emit_16(399); +emit_16(463); +emit_16(398); +emit_16(463); +emit_16(399); +emit_16(464); +emit_16(400); +emit_16(464); +emit_16(399); +emit_16(464); +emit_16(400); +emit_16(465); +emit_16(401); +emit_16(465); +emit_16(400); +emit_16(465); +emit_16(401); +emit_16(466); +emit_16(402); +emit_16(466); +emit_16(401); +emit_16(466); +emit_16(402); +emit_16(467); +emit_16(403); +emit_16(467); +emit_16(402); +emit_16(467); +emit_16(403); +emit_16(468); +emit_16(404); +emit_16(468); +emit_16(403); +emit_16(468); +emit_16(404); +emit_16(469); +emit_16(405); +emit_16(469); +emit_16(404); +emit_16(469); +emit_16(405); +emit_16(470); +emit_16(406); +emit_16(470); +emit_16(405); +emit_16(470); +emit_16(406); +emit_16(471); +emit_16(407); +emit_16(471); +emit_16(406); +emit_16(471); +emit_16(407); +emit_16(472); +emit_16(408); +emit_16(472); +emit_16(407); +emit_16(472); +emit_16(408); +emit_16(473); +emit_16(409); +emit_16(473); +emit_16(408); +emit_16(473); +emit_16(409); +emit_16(474); +emit_16(410); +emit_16(474); +emit_16(409); +emit_16(474); +emit_16(410); +emit_16(475); +emit_16(411); +emit_16(475); +emit_16(410); +emit_16(475); +emit_16(411); +emit_16(476); +emit_16(412); +emit_16(476); +emit_16(411); +emit_16(476); +emit_16(412); +emit_16(477); +emit_16(413); +emit_16(477); +emit_16(412); +emit_16(477); +emit_16(413); +emit_16(478); +emit_16(414); +emit_16(478); +emit_16(413); +emit_16(478); +emit_16(414); +emit_16(479); +emit_16(415); +emit_16(479); +emit_16(414); +emit_16(479); +emit_16(415); +emit_16(480); +emit_16(416); +emit_16(480); +emit_16(415); +emit_16(480); +emit_16(416); +emit_16(481); +emit_16(417); +emit_16(481); +emit_16(416); +emit_16(481); +emit_16(417); +emit_16(482); +emit_16(418); +emit_16(482); +emit_16(417); +emit_16(482); +emit_16(418); +emit_16(483); +emit_16(419); +emit_16(483); +emit_16(418); +emit_16(483); +emit_16(419); +emit_16(484); +emit_16(420); +emit_16(484); +emit_16(419); +emit_16(484); +emit_16(420); +emit_16(485); +emit_16(421); +emit_16(485); +emit_16(420); +emit_16(485); +emit_16(421); +emit_16(486); +emit_16(422); +emit_16(486); +emit_16(421); +emit_16(486); +emit_16(422); +emit_16(487); +emit_16(423); +emit_16(487); +emit_16(422); +emit_16(487); +emit_16(423); +emit_16(488); +emit_16(424); +emit_16(488); +emit_16(423); +emit_16(488); +emit_16(424); +emit_16(489); +emit_16(425); +emit_16(489); +emit_16(424); +emit_16(489); +emit_16(425); +emit_16(490); +emit_16(426); +emit_16(490); +emit_16(425); +emit_16(490); +emit_16(426); +emit_16(491); +emit_16(427); +emit_16(491); +emit_16(426); +emit_16(491); +emit_16(427); +emit_16(492); +emit_16(428); +emit_16(492); +emit_16(427); +emit_16(492); +emit_16(428); +emit_16(493); +emit_16(429); +emit_16(493); +emit_16(428); +emit_16(493); +emit_16(429); +emit_16(494); +emit_16(430); +emit_16(494); +emit_16(429); +emit_16(494); +emit_16(430); +emit_16(495); +emit_16(431); +emit_16(495); +emit_16(430); +emit_16(495); +emit_16(431); +emit_16(496); +emit_16(432); +emit_16(496); +emit_16(431); +emit_16(496); +emit_16(432); +emit_16(497); +emit_16(433); +emit_16(497); +emit_16(432); +emit_16(497); +emit_16(433); +emit_16(498); +emit_16(434); +emit_16(498); +emit_16(433); +emit_16(498); +emit_16(434); +emit_16(499); +emit_16(435); +emit_16(499); +emit_16(434); +emit_16(499); +emit_16(435); +emit_16(500); +emit_16(436); +emit_16(500); +emit_16(435); +emit_16(500); +emit_16(436); +emit_16(501); +emit_16(437); +emit_16(501); +emit_16(436); +emit_16(501); +emit_16(437); +emit_16(502); +emit_16(438); +emit_16(502); +emit_16(437); +emit_16(502); +emit_16(438); +emit_16(503); +emit_16(439); +emit_16(503); +emit_16(438); +emit_16(503); +emit_16(439); +emit_16(504); +emit_16(440); +emit_16(504); +emit_16(439); +emit_16(504); +emit_16(440); +emit_16(505); +emit_16(441); +emit_16(505); +emit_16(440); +emit_16(505); +emit_16(441); +emit_16(506); +emit_16(442); +emit_16(506); +emit_16(441); +emit_16(506); +emit_16(442); +emit_16(507); +emit_16(443); +emit_16(507); +emit_16(442); +emit_16(507); +emit_16(443); +emit_16(508); +emit_16(444); +emit_16(508); +emit_16(443); +emit_16(508); +emit_16(444); +emit_16(509); +emit_16(445); +emit_16(509); +emit_16(444); +emit_16(509); +emit_16(445); +emit_16(510); +emit_16(446); +emit_16(510); +emit_16(445); +emit_16(510); +emit_16(446); +emit_16(511); +emit_16(447); +emit_16(511); +emit_16(446); +emit_16(512); +emit_16(448); +emit_16(513); +emit_16(449); +emit_16(513); +emit_16(448); +emit_16(513); +emit_16(449); +emit_16(514); +emit_16(450); +emit_16(514); +emit_16(449); +emit_16(514); +emit_16(450); +emit_16(515); +emit_16(451); +emit_16(515); +emit_16(450); +emit_16(515); +emit_16(451); +emit_16(516); +emit_16(452); +emit_16(516); +emit_16(451); +emit_16(516); +emit_16(452); +emit_16(517); +emit_16(453); +emit_16(517); +emit_16(452); +emit_16(517); +emit_16(453); +emit_16(518); +emit_16(454); +emit_16(518); +emit_16(453); +emit_16(518); +emit_16(454); +emit_16(519); +emit_16(455); +emit_16(519); +emit_16(454); +emit_16(519); +emit_16(455); +emit_16(520); +emit_16(456); +emit_16(520); +emit_16(455); +emit_16(520); +emit_16(456); +emit_16(521); +emit_16(457); +emit_16(521); +emit_16(456); +emit_16(521); +emit_16(457); +emit_16(522); +emit_16(458); +emit_16(522); +emit_16(457); +emit_16(522); +emit_16(458); +emit_16(523); +emit_16(459); +emit_16(523); +emit_16(458); +emit_16(523); +emit_16(459); +emit_16(524); +emit_16(460); +emit_16(524); +emit_16(459); +emit_16(524); +emit_16(460); +emit_16(525); +emit_16(461); +emit_16(525); +emit_16(460); +emit_16(525); +emit_16(461); +emit_16(526); +emit_16(462); +emit_16(526); +emit_16(461); +emit_16(526); +emit_16(462); +emit_16(527); +emit_16(463); +emit_16(527); +emit_16(462); +emit_16(527); +emit_16(463); +emit_16(528); +emit_16(464); +emit_16(528); +emit_16(463); +emit_16(528); +emit_16(464); +emit_16(529); +emit_16(465); +emit_16(529); +emit_16(464); +emit_16(529); +emit_16(465); +emit_16(530); +emit_16(466); +emit_16(530); +emit_16(465); +emit_16(530); +emit_16(466); +emit_16(531); +emit_16(467); +emit_16(531); +emit_16(466); +emit_16(531); +emit_16(467); +emit_16(532); +emit_16(468); +emit_16(532); +emit_16(467); +emit_16(532); +emit_16(468); +emit_16(533); +emit_16(469); +emit_16(533); +emit_16(468); +emit_16(533); +emit_16(469); +emit_16(534); +emit_16(470); +emit_16(534); +emit_16(469); +emit_16(534); +emit_16(470); +emit_16(535); +emit_16(471); +emit_16(535); +emit_16(470); +emit_16(535); +emit_16(471); +emit_16(536); +emit_16(472); +emit_16(536); +emit_16(471); +emit_16(536); +emit_16(472); +emit_16(537); +emit_16(473); +emit_16(537); +emit_16(472); +emit_16(537); +emit_16(473); +emit_16(538); +emit_16(474); +emit_16(538); +emit_16(473); +emit_16(538); +emit_16(474); +emit_16(539); +emit_16(475); +emit_16(539); +emit_16(474); +emit_16(539); +emit_16(475); +emit_16(540); +emit_16(476); +emit_16(540); +emit_16(475); +emit_16(540); +emit_16(476); +emit_16(541); +emit_16(477); +emit_16(541); +emit_16(476); +emit_16(541); +emit_16(477); +emit_16(542); +emit_16(478); +emit_16(542); +emit_16(477); +emit_16(542); +emit_16(478); +emit_16(543); +emit_16(479); +emit_16(543); +emit_16(478); +emit_16(543); +emit_16(479); +emit_16(544); +emit_16(480); +emit_16(544); +emit_16(479); +emit_16(544); +emit_16(480); +emit_16(545); +emit_16(481); +emit_16(545); +emit_16(480); +emit_16(545); +emit_16(481); +emit_16(546); +emit_16(482); +emit_16(546); +emit_16(481); +emit_16(546); +emit_16(482); +emit_16(547); +emit_16(483); +emit_16(547); +emit_16(482); +emit_16(547); +emit_16(483); +emit_16(548); +emit_16(484); +emit_16(548); +emit_16(483); +emit_16(548); +emit_16(484); +emit_16(549); +emit_16(485); +emit_16(549); +emit_16(484); +emit_16(549); +emit_16(485); +emit_16(550); +emit_16(486); +emit_16(550); +emit_16(485); +emit_16(550); +emit_16(486); +emit_16(551); +emit_16(487); +emit_16(551); +emit_16(486); +emit_16(551); +emit_16(487); +emit_16(552); +emit_16(488); +emit_16(552); +emit_16(487); +emit_16(552); +emit_16(488); +emit_16(553); +emit_16(489); +emit_16(553); +emit_16(488); +emit_16(553); +emit_16(489); +emit_16(554); +emit_16(490); +emit_16(554); +emit_16(489); +emit_16(554); +emit_16(490); +emit_16(555); +emit_16(491); +emit_16(555); +emit_16(490); +emit_16(555); +emit_16(491); +emit_16(556); +emit_16(492); +emit_16(556); +emit_16(491); +emit_16(556); +emit_16(492); +emit_16(557); +emit_16(493); +emit_16(557); +emit_16(492); +emit_16(557); +emit_16(493); +emit_16(558); +emit_16(494); +emit_16(558); +emit_16(493); +emit_16(558); +emit_16(494); +emit_16(559); +emit_16(495); +emit_16(559); +emit_16(494); +emit_16(559); +emit_16(495); +emit_16(560); +emit_16(496); +emit_16(560); +emit_16(495); +emit_16(560); +emit_16(496); +emit_16(561); +emit_16(497); +emit_16(561); +emit_16(496); +emit_16(561); +emit_16(497); +emit_16(562); +emit_16(498); +emit_16(562); +emit_16(497); +emit_16(562); +emit_16(498); +emit_16(563); +emit_16(499); +emit_16(563); +emit_16(498); +emit_16(563); +emit_16(499); +emit_16(564); +emit_16(500); +emit_16(564); +emit_16(499); +emit_16(564); +emit_16(500); +emit_16(565); +emit_16(501); +emit_16(565); +emit_16(500); +emit_16(565); +emit_16(501); +emit_16(566); +emit_16(502); +emit_16(566); +emit_16(501); +emit_16(566); +emit_16(502); +emit_16(567); +emit_16(503); +emit_16(567); +emit_16(502); +emit_16(567); +emit_16(503); +emit_16(568); +emit_16(504); +emit_16(568); +emit_16(503); +emit_16(568); +emit_16(504); +emit_16(569); +emit_16(505); +emit_16(569); +emit_16(504); +emit_16(569); +emit_16(505); +emit_16(570); +emit_16(506); +emit_16(570); +emit_16(505); +emit_16(570); +emit_16(506); +emit_16(571); +emit_16(507); +emit_16(571); +emit_16(506); +emit_16(571); +emit_16(507); +emit_16(572); +emit_16(508); +emit_16(572); +emit_16(507); +emit_16(572); +emit_16(508); +emit_16(573); +emit_16(509); +emit_16(573); +emit_16(508); +emit_16(573); +emit_16(509); +emit_16(574); +emit_16(510); +emit_16(574); +emit_16(509); +emit_16(574); +emit_16(510); +emit_16(575); +emit_16(511); +emit_16(575); +emit_16(510); +emit_16(576); +emit_16(512); +emit_16(577); +emit_16(513); +emit_16(577); +emit_16(512); +emit_16(577); +emit_16(513); +emit_16(578); +emit_16(514); +emit_16(578); +emit_16(513); +emit_16(578); +emit_16(514); +emit_16(579); +emit_16(515); +emit_16(579); +emit_16(514); +emit_16(579); +emit_16(515); +emit_16(580); +emit_16(516); +emit_16(580); +emit_16(515); +emit_16(580); +emit_16(516); +emit_16(581); +emit_16(517); +emit_16(581); +emit_16(516); +emit_16(581); +emit_16(517); +emit_16(582); +emit_16(518); +emit_16(582); +emit_16(517); +emit_16(582); +emit_16(518); +emit_16(583); +emit_16(519); +emit_16(583); +emit_16(518); +emit_16(583); +emit_16(519); +emit_16(584); +emit_16(520); +emit_16(584); +emit_16(519); +emit_16(584); +emit_16(520); +emit_16(585); +emit_16(521); +emit_16(585); +emit_16(520); +emit_16(585); +emit_16(521); +emit_16(586); +emit_16(522); +emit_16(586); +emit_16(521); +emit_16(586); +emit_16(522); +emit_16(587); +emit_16(523); +emit_16(587); +emit_16(522); +emit_16(587); +emit_16(523); +emit_16(588); +emit_16(524); +emit_16(588); +emit_16(523); +emit_16(588); +emit_16(524); +emit_16(589); +emit_16(525); +emit_16(589); +emit_16(524); +emit_16(589); +emit_16(525); +emit_16(590); +emit_16(526); +emit_16(590); +emit_16(525); +emit_16(590); +emit_16(526); +emit_16(591); +emit_16(527); +emit_16(591); +emit_16(526); +emit_16(591); +emit_16(527); +emit_16(592); +emit_16(528); +emit_16(592); +emit_16(527); +emit_16(592); +emit_16(528); +emit_16(593); +emit_16(529); +emit_16(593); +emit_16(528); +emit_16(593); +emit_16(529); +emit_16(594); +emit_16(530); +emit_16(594); +emit_16(529); +emit_16(594); +emit_16(530); +emit_16(595); +emit_16(531); +emit_16(595); +emit_16(530); +emit_16(595); +emit_16(531); +emit_16(596); +emit_16(532); +emit_16(596); +emit_16(531); +emit_16(596); +emit_16(532); +emit_16(597); +emit_16(533); +emit_16(597); +emit_16(532); +emit_16(597); +emit_16(533); +emit_16(598); +emit_16(534); +emit_16(598); +emit_16(533); +emit_16(598); +emit_16(534); +emit_16(599); +emit_16(535); +emit_16(599); +emit_16(534); +emit_16(599); +emit_16(535); +emit_16(600); +emit_16(536); +emit_16(600); +emit_16(535); +emit_16(600); +emit_16(536); +emit_16(601); +emit_16(537); +emit_16(601); +emit_16(536); +emit_16(601); +emit_16(537); +emit_16(602); +emit_16(538); +emit_16(602); +emit_16(537); +emit_16(602); +emit_16(538); +emit_16(603); +emit_16(539); +emit_16(603); +emit_16(538); +emit_16(603); +emit_16(539); +emit_16(604); +emit_16(540); +emit_16(604); +emit_16(539); +emit_16(604); +emit_16(540); +emit_16(605); +emit_16(541); +emit_16(605); +emit_16(540); +emit_16(605); +emit_16(541); +emit_16(606); +emit_16(542); +emit_16(606); +emit_16(541); +emit_16(606); +emit_16(542); +emit_16(607); +emit_16(543); +emit_16(607); +emit_16(542); +emit_16(607); +emit_16(543); +emit_16(608); +emit_16(544); +emit_16(608); +emit_16(543); +emit_16(608); +emit_16(544); +emit_16(609); +emit_16(545); +emit_16(609); +emit_16(544); +emit_16(609); +emit_16(545); +emit_16(610); +emit_16(546); +emit_16(610); +emit_16(545); +emit_16(610); +emit_16(546); +emit_16(611); +emit_16(547); +emit_16(611); +emit_16(546); +emit_16(611); +emit_16(547); +emit_16(612); +emit_16(548); +emit_16(612); +emit_16(547); +emit_16(612); +emit_16(548); +emit_16(613); +emit_16(549); +emit_16(613); +emit_16(548); +emit_16(613); +emit_16(549); +emit_16(614); +emit_16(550); +emit_16(614); +emit_16(549); +emit_16(614); +emit_16(550); +emit_16(615); +emit_16(551); +emit_16(615); +emit_16(550); +emit_16(615); +emit_16(551); +emit_16(616); +emit_16(552); +emit_16(616); +emit_16(551); +emit_16(616); +emit_16(552); +emit_16(617); +emit_16(553); +emit_16(617); +emit_16(552); +emit_16(617); +emit_16(553); +emit_16(618); +emit_16(554); +emit_16(618); +emit_16(553); +emit_16(618); +emit_16(554); +emit_16(619); +emit_16(555); +emit_16(619); +emit_16(554); +emit_16(619); +emit_16(555); +emit_16(620); +emit_16(556); +emit_16(620); +emit_16(555); +emit_16(620); +emit_16(556); +emit_16(621); +emit_16(557); +emit_16(621); +emit_16(556); +emit_16(621); +emit_16(557); +emit_16(622); +emit_16(558); +emit_16(622); +emit_16(557); +emit_16(622); +emit_16(558); +emit_16(623); +emit_16(559); +emit_16(623); +emit_16(558); +emit_16(623); +emit_16(559); +emit_16(624); +emit_16(560); +emit_16(624); +emit_16(559); +emit_16(624); +emit_16(560); +emit_16(625); +emit_16(561); +emit_16(625); +emit_16(560); +emit_16(625); +emit_16(561); +emit_16(626); +emit_16(562); +emit_16(626); +emit_16(561); +emit_16(626); +emit_16(562); +emit_16(627); +emit_16(563); +emit_16(627); +emit_16(562); +emit_16(627); +emit_16(563); +emit_16(628); +emit_16(564); +emit_16(628); +emit_16(563); +emit_16(628); +emit_16(564); +emit_16(629); +emit_16(565); +emit_16(629); +emit_16(564); +emit_16(629); +emit_16(565); +emit_16(630); +emit_16(566); +emit_16(630); +emit_16(565); +emit_16(630); +emit_16(566); +emit_16(631); +emit_16(567); +emit_16(631); +emit_16(566); +emit_16(631); +emit_16(567); +emit_16(632); +emit_16(568); +emit_16(632); +emit_16(567); +emit_16(632); +emit_16(568); +emit_16(633); +emit_16(569); +emit_16(633); +emit_16(568); +emit_16(633); +emit_16(569); +emit_16(634); +emit_16(570); +emit_16(634); +emit_16(569); +emit_16(634); +emit_16(570); +emit_16(635); +emit_16(571); +emit_16(635); +emit_16(570); +emit_16(635); +emit_16(571); +emit_16(636); +emit_16(572); +emit_16(636); +emit_16(571); +emit_16(636); +emit_16(572); +emit_16(637); +emit_16(573); +emit_16(637); +emit_16(572); +emit_16(637); +emit_16(573); +emit_16(638); +emit_16(574); +emit_16(638); +emit_16(573); +emit_16(638); +emit_16(574); +emit_16(639); +emit_16(575); +emit_16(639); +emit_16(574); +emit_16(640); +emit_16(576); +emit_16(641); +emit_16(577); +emit_16(641); +emit_16(576); +emit_16(641); +emit_16(577); +emit_16(642); +emit_16(578); +emit_16(642); +emit_16(577); +emit_16(642); +emit_16(578); +emit_16(643); +emit_16(579); +emit_16(643); +emit_16(578); +emit_16(643); +emit_16(579); +emit_16(644); +emit_16(580); +emit_16(644); +emit_16(579); +emit_16(644); +emit_16(580); +emit_16(645); +emit_16(581); +emit_16(645); +emit_16(580); +emit_16(645); +emit_16(581); +emit_16(646); +emit_16(582); +emit_16(646); +emit_16(581); +emit_16(646); +emit_16(582); +emit_16(647); +emit_16(583); +emit_16(647); +emit_16(582); +emit_16(647); +emit_16(583); +emit_16(648); +emit_16(584); +emit_16(648); +emit_16(583); +emit_16(648); +emit_16(584); +emit_16(649); +emit_16(585); +emit_16(649); +emit_16(584); +emit_16(649); +emit_16(585); +emit_16(650); +emit_16(586); +emit_16(650); +emit_16(585); +emit_16(650); +emit_16(586); +emit_16(651); +emit_16(587); +emit_16(651); +emit_16(586); +emit_16(651); +emit_16(587); +emit_16(652); +emit_16(588); +emit_16(652); +emit_16(587); +emit_16(652); +emit_16(588); +emit_16(653); +emit_16(589); +emit_16(653); +emit_16(588); +emit_16(653); +emit_16(589); +emit_16(654); +emit_16(590); +emit_16(654); +emit_16(589); +emit_16(654); +emit_16(590); +emit_16(655); +emit_16(591); +emit_16(655); +emit_16(590); +emit_16(655); +emit_16(591); +emit_16(656); +emit_16(592); +emit_16(656); +emit_16(591); +emit_16(656); +emit_16(592); +emit_16(657); +emit_16(593); +emit_16(657); +emit_16(592); +emit_16(657); +emit_16(593); +emit_16(658); +emit_16(594); +emit_16(658); +emit_16(593); +emit_16(658); +emit_16(594); +emit_16(659); +emit_16(595); +emit_16(659); +emit_16(594); +emit_16(659); +emit_16(595); +emit_16(660); +emit_16(596); +emit_16(660); +emit_16(595); +emit_16(660); +emit_16(596); +emit_16(661); +emit_16(597); +emit_16(661); +emit_16(596); +emit_16(661); +emit_16(597); +emit_16(662); +emit_16(598); +emit_16(662); +emit_16(597); +emit_16(662); +emit_16(598); +emit_16(663); +emit_16(599); +emit_16(663); +emit_16(598); +emit_16(663); +emit_16(599); +emit_16(664); +emit_16(600); +emit_16(664); +emit_16(599); +emit_16(664); +emit_16(600); +emit_16(665); +emit_16(601); +emit_16(665); +emit_16(600); +emit_16(665); +emit_16(601); +emit_16(666); +emit_16(602); +emit_16(666); +emit_16(601); +emit_16(666); +emit_16(602); +emit_16(667); +emit_16(603); +emit_16(667); +emit_16(602); +emit_16(667); +emit_16(603); +emit_16(668); +emit_16(604); +emit_16(668); +emit_16(603); +emit_16(668); +emit_16(604); +emit_16(669); +emit_16(605); +emit_16(669); +emit_16(604); +emit_16(669); +emit_16(605); +emit_16(670); +emit_16(606); +emit_16(670); +emit_16(605); +emit_16(670); +emit_16(606); +emit_16(671); +emit_16(607); +emit_16(671); +emit_16(606); +emit_16(671); +emit_16(607); +emit_16(672); +emit_16(608); +emit_16(672); +emit_16(607); +emit_16(672); +emit_16(608); +emit_16(673); +emit_16(609); +emit_16(673); +emit_16(608); +emit_16(673); +emit_16(609); +emit_16(674); +emit_16(610); +emit_16(674); +emit_16(609); +emit_16(674); +emit_16(610); +emit_16(675); +emit_16(611); +emit_16(675); +emit_16(610); +emit_16(675); +emit_16(611); +emit_16(676); +emit_16(612); +emit_16(676); +emit_16(611); +emit_16(676); +emit_16(612); +emit_16(677); +emit_16(613); +emit_16(677); +emit_16(612); +emit_16(677); +emit_16(613); +emit_16(678); +emit_16(614); +emit_16(678); +emit_16(613); +emit_16(678); +emit_16(614); +emit_16(679); +emit_16(615); +emit_16(679); +emit_16(614); +emit_16(679); +emit_16(615); +emit_16(680); +emit_16(616); +emit_16(680); +emit_16(615); +emit_16(680); +emit_16(616); +emit_16(681); +emit_16(617); +emit_16(681); +emit_16(616); +emit_16(681); +emit_16(617); +emit_16(682); +emit_16(618); +emit_16(682); +emit_16(617); +emit_16(682); +emit_16(618); +emit_16(683); +emit_16(619); +emit_16(683); +emit_16(618); +emit_16(683); +emit_16(619); +emit_16(684); +emit_16(620); +emit_16(684); +emit_16(619); +emit_16(684); +emit_16(620); +emit_16(685); +emit_16(621); +emit_16(685); +emit_16(620); +emit_16(685); +emit_16(621); +emit_16(686); +emit_16(622); +emit_16(686); +emit_16(621); +emit_16(686); +emit_16(622); +emit_16(687); +emit_16(623); +emit_16(687); +emit_16(622); +emit_16(687); +emit_16(623); +emit_16(688); +emit_16(624); +emit_16(688); +emit_16(623); +emit_16(688); +emit_16(624); +emit_16(689); +emit_16(625); +emit_16(689); +emit_16(624); +emit_16(689); +emit_16(625); +emit_16(690); +emit_16(626); +emit_16(690); +emit_16(625); +emit_16(690); +emit_16(626); +emit_16(691); +emit_16(627); +emit_16(691); +emit_16(626); +emit_16(691); +emit_16(627); +emit_16(692); +emit_16(628); +emit_16(692); +emit_16(627); +emit_16(692); +emit_16(628); +emit_16(693); +emit_16(629); +emit_16(693); +emit_16(628); +emit_16(693); +emit_16(629); +emit_16(694); +emit_16(630); +emit_16(694); +emit_16(629); +emit_16(694); +emit_16(630); +emit_16(695); +emit_16(631); +emit_16(695); +emit_16(630); +emit_16(695); +emit_16(631); +emit_16(696); +emit_16(632); +emit_16(696); +emit_16(631); +emit_16(696); +emit_16(632); +emit_16(697); +emit_16(633); +emit_16(697); +emit_16(632); +emit_16(697); +emit_16(633); +emit_16(698); +emit_16(634); +emit_16(698); +emit_16(633); +emit_16(698); +emit_16(634); +emit_16(699); +emit_16(635); +emit_16(699); +emit_16(634); +emit_16(699); +emit_16(635); +emit_16(700); +emit_16(636); +emit_16(700); +emit_16(635); +emit_16(700); +emit_16(636); +emit_16(701); +emit_16(637); +emit_16(701); +emit_16(636); +emit_16(701); +emit_16(637); +emit_16(702); +emit_16(638); +emit_16(702); +emit_16(637); +emit_16(702); +emit_16(638); +emit_16(703); +emit_16(639); +emit_16(703); +emit_16(638); +emit_16(704); +emit_16(640); +emit_16(705); +emit_16(641); +emit_16(705); +emit_16(640); +emit_16(705); +emit_16(641); +emit_16(706); +emit_16(642); +emit_16(706); +emit_16(641); +emit_16(706); +emit_16(642); +emit_16(707); +emit_16(643); +emit_16(707); +emit_16(642); +emit_16(707); +emit_16(643); +emit_16(708); +emit_16(644); +emit_16(708); +emit_16(643); +emit_16(708); +emit_16(644); +emit_16(709); +emit_16(645); +emit_16(709); +emit_16(644); +emit_16(709); +emit_16(645); +emit_16(710); +emit_16(646); +emit_16(710); +emit_16(645); +emit_16(710); +emit_16(646); +emit_16(711); +emit_16(647); +emit_16(711); +emit_16(646); +emit_16(711); +emit_16(647); +emit_16(712); +emit_16(648); +emit_16(712); +emit_16(647); +emit_16(712); +emit_16(648); +emit_16(713); +emit_16(649); +emit_16(713); +emit_16(648); +emit_16(713); +emit_16(649); +emit_16(714); +emit_16(650); +emit_16(714); +emit_16(649); +emit_16(714); +emit_16(650); +emit_16(715); +emit_16(651); +emit_16(715); +emit_16(650); +emit_16(715); +emit_16(651); +emit_16(716); +emit_16(652); +emit_16(716); +emit_16(651); +emit_16(716); +emit_16(652); +emit_16(717); +emit_16(653); +emit_16(717); +emit_16(652); +emit_16(717); +emit_16(653); +emit_16(718); +emit_16(654); +emit_16(718); +emit_16(653); +emit_16(718); +emit_16(654); +emit_16(719); +emit_16(655); +emit_16(719); +emit_16(654); +emit_16(719); +emit_16(655); +emit_16(720); +emit_16(656); +emit_16(720); +emit_16(655); +emit_16(720); +emit_16(656); +emit_16(721); +emit_16(657); +emit_16(721); +emit_16(656); +emit_16(721); +emit_16(657); +emit_16(722); +emit_16(658); +emit_16(722); +emit_16(657); +emit_16(722); +emit_16(658); +emit_16(723); +emit_16(659); +emit_16(723); +emit_16(658); +emit_16(723); +emit_16(659); +emit_16(724); +emit_16(660); +emit_16(724); +emit_16(659); +emit_16(724); +emit_16(660); +emit_16(725); +emit_16(661); +emit_16(725); +emit_16(660); +emit_16(725); +emit_16(661); +emit_16(726); +emit_16(662); +emit_16(726); +emit_16(661); +emit_16(726); +emit_16(662); +emit_16(727); +emit_16(663); +emit_16(727); +emit_16(662); +emit_16(727); +emit_16(663); +emit_16(728); +emit_16(664); +emit_16(728); +emit_16(663); +emit_16(728); +emit_16(664); +emit_16(729); +emit_16(665); +emit_16(729); +emit_16(664); +emit_16(729); +emit_16(665); +emit_16(730); +emit_16(666); +emit_16(730); +emit_16(665); +emit_16(730); +emit_16(666); +emit_16(731); +emit_16(667); +emit_16(731); +emit_16(666); +emit_16(731); +emit_16(667); +emit_16(732); +emit_16(668); +emit_16(732); +emit_16(667); +emit_16(732); +emit_16(668); +emit_16(733); +emit_16(669); +emit_16(733); +emit_16(668); +emit_16(733); +emit_16(669); +emit_16(734); +emit_16(670); +emit_16(734); +emit_16(669); +emit_16(734); +emit_16(670); +emit_16(735); +emit_16(671); +emit_16(735); +emit_16(670); +emit_16(735); +emit_16(671); +emit_16(736); +emit_16(672); +emit_16(736); +emit_16(671); +emit_16(736); +emit_16(672); +emit_16(737); +emit_16(673); +emit_16(737); +emit_16(672); +emit_16(737); +emit_16(673); +emit_16(738); +emit_16(674); +emit_16(738); +emit_16(673); +emit_16(738); +emit_16(674); +emit_16(739); +emit_16(675); +emit_16(739); +emit_16(674); +emit_16(739); +emit_16(675); +emit_16(740); +emit_16(676); +emit_16(740); +emit_16(675); +emit_16(740); +emit_16(676); +emit_16(741); +emit_16(677); +emit_16(741); +emit_16(676); +emit_16(741); +emit_16(677); +emit_16(742); +emit_16(678); +emit_16(742); +emit_16(677); +emit_16(742); +emit_16(678); +emit_16(743); +emit_16(679); +emit_16(743); +emit_16(678); +emit_16(743); +emit_16(679); +emit_16(744); +emit_16(680); +emit_16(744); +emit_16(679); +emit_16(744); +emit_16(680); +emit_16(745); +emit_16(681); +emit_16(745); +emit_16(680); +emit_16(745); +emit_16(681); +emit_16(746); +emit_16(682); +emit_16(746); +emit_16(681); +emit_16(746); +emit_16(682); +emit_16(747); +emit_16(683); +emit_16(747); +emit_16(682); +emit_16(747); +emit_16(683); +emit_16(748); +emit_16(684); +emit_16(748); +emit_16(683); +emit_16(748); +emit_16(684); +emit_16(749); +emit_16(685); +emit_16(749); +emit_16(684); +emit_16(749); +emit_16(685); +emit_16(750); +emit_16(686); +emit_16(750); +emit_16(685); +emit_16(750); +emit_16(686); +emit_16(751); +emit_16(687); +emit_16(751); +emit_16(686); +emit_16(751); +emit_16(687); +emit_16(752); +emit_16(688); +emit_16(752); +emit_16(687); +emit_16(752); +emit_16(688); +emit_16(753); +emit_16(689); +emit_16(753); +emit_16(688); +emit_16(753); +emit_16(689); +emit_16(754); +emit_16(690); +emit_16(754); +emit_16(689); +emit_16(754); +emit_16(690); +emit_16(755); +emit_16(691); +emit_16(755); +emit_16(690); +emit_16(755); +emit_16(691); +emit_16(756); +emit_16(692); +emit_16(756); +emit_16(691); +emit_16(756); +emit_16(692); +emit_16(757); +emit_16(693); +emit_16(757); +emit_16(692); +emit_16(757); +emit_16(693); +emit_16(758); +emit_16(694); +emit_16(758); +emit_16(693); +emit_16(758); +emit_16(694); +emit_16(759); +emit_16(695); +emit_16(759); +emit_16(694); +emit_16(759); +emit_16(695); +emit_16(760); +emit_16(696); +emit_16(760); +emit_16(695); +emit_16(760); +emit_16(696); +emit_16(761); +emit_16(697); +emit_16(761); +emit_16(696); +emit_16(761); +emit_16(697); +emit_16(762); +emit_16(698); +emit_16(762); +emit_16(697); +emit_16(762); +emit_16(698); +emit_16(763); +emit_16(699); +emit_16(763); +emit_16(698); +emit_16(763); +emit_16(699); +emit_16(764); +emit_16(700); +emit_16(764); +emit_16(699); +emit_16(764); +emit_16(700); +emit_16(765); +emit_16(701); +emit_16(765); +emit_16(700); +emit_16(765); +emit_16(701); +emit_16(766); +emit_16(702); +emit_16(766); +emit_16(701); +emit_16(766); +emit_16(702); +emit_16(767); +emit_16(703); +emit_16(767); +emit_16(702); +emit_16(768); +emit_16(704); +emit_16(769); +emit_16(705); +emit_16(769); +emit_16(704); +emit_16(769); +emit_16(705); +emit_16(770); +emit_16(706); +emit_16(770); +emit_16(705); +emit_16(770); +emit_16(706); +emit_16(771); +emit_16(707); +emit_16(771); +emit_16(706); +emit_16(771); +emit_16(707); +emit_16(772); +emit_16(708); +emit_16(772); +emit_16(707); +emit_16(772); +emit_16(708); +emit_16(773); +emit_16(709); +emit_16(773); +emit_16(708); +emit_16(773); +emit_16(709); +emit_16(774); +emit_16(710); +emit_16(774); +emit_16(709); +emit_16(774); +emit_16(710); +emit_16(775); +emit_16(711); +emit_16(775); +emit_16(710); +emit_16(775); +emit_16(711); +emit_16(776); +emit_16(712); +emit_16(776); +emit_16(711); +emit_16(776); +emit_16(712); +emit_16(777); +emit_16(713); +emit_16(777); +emit_16(712); +emit_16(777); +emit_16(713); +emit_16(778); +emit_16(714); +emit_16(778); +emit_16(713); +emit_16(778); +emit_16(714); +emit_16(779); +emit_16(715); +emit_16(779); +emit_16(714); +emit_16(779); +emit_16(715); +emit_16(780); +emit_16(716); +emit_16(780); +emit_16(715); +emit_16(780); +emit_16(716); +emit_16(781); +emit_16(717); +emit_16(781); +emit_16(716); +emit_16(781); +emit_16(717); +emit_16(782); +emit_16(718); +emit_16(782); +emit_16(717); +emit_16(782); +emit_16(718); +emit_16(783); +emit_16(719); +emit_16(783); +emit_16(718); +emit_16(783); +emit_16(719); +emit_16(784); +emit_16(720); +emit_16(784); +emit_16(719); +emit_16(784); +emit_16(720); +emit_16(785); +emit_16(721); +emit_16(785); +emit_16(720); +emit_16(785); +emit_16(721); +emit_16(786); +emit_16(722); +emit_16(786); +emit_16(721); +emit_16(786); +emit_16(722); +emit_16(787); +emit_16(723); +emit_16(787); +emit_16(722); +emit_16(787); +emit_16(723); +emit_16(788); +emit_16(724); +emit_16(788); +emit_16(723); +emit_16(788); +emit_16(724); +emit_16(789); +emit_16(725); +emit_16(789); +emit_16(724); +emit_16(789); +emit_16(725); +emit_16(790); +emit_16(726); +emit_16(790); +emit_16(725); +emit_16(790); +emit_16(726); +emit_16(791); +emit_16(727); +emit_16(791); +emit_16(726); +emit_16(791); +emit_16(727); +emit_16(792); +emit_16(728); +emit_16(792); +emit_16(727); +emit_16(792); +emit_16(728); +emit_16(793); +emit_16(729); +emit_16(793); +emit_16(728); +emit_16(793); +emit_16(729); +emit_16(794); +emit_16(730); +emit_16(794); +emit_16(729); +emit_16(794); +emit_16(730); +emit_16(795); +emit_16(731); +emit_16(795); +emit_16(730); +emit_16(795); +emit_16(731); +emit_16(796); +emit_16(732); +emit_16(796); +emit_16(731); +emit_16(796); +emit_16(732); +emit_16(797); +emit_16(733); +emit_16(797); +emit_16(732); +emit_16(797); +emit_16(733); +emit_16(798); +emit_16(734); +emit_16(798); +emit_16(733); +emit_16(798); +emit_16(734); +emit_16(799); +emit_16(735); +emit_16(799); +emit_16(734); +emit_16(799); +emit_16(735); +emit_16(800); +emit_16(736); +emit_16(800); +emit_16(735); +emit_16(800); +emit_16(736); +emit_16(801); +emit_16(737); +emit_16(801); +emit_16(736); +emit_16(801); +emit_16(737); +emit_16(802); +emit_16(738); +emit_16(802); +emit_16(737); +emit_16(802); +emit_16(738); +emit_16(803); +emit_16(739); +emit_16(803); +emit_16(738); +emit_16(803); +emit_16(739); +emit_16(804); +emit_16(740); +emit_16(804); +emit_16(739); +emit_16(804); +emit_16(740); +emit_16(805); +emit_16(741); +emit_16(805); +emit_16(740); +emit_16(805); +emit_16(741); +emit_16(806); +emit_16(742); +emit_16(806); +emit_16(741); +emit_16(806); +emit_16(742); +emit_16(807); +emit_16(743); +emit_16(807); +emit_16(742); +emit_16(807); +emit_16(743); +emit_16(808); +emit_16(744); +emit_16(808); +emit_16(743); +emit_16(808); +emit_16(744); +emit_16(809); +emit_16(745); +emit_16(809); +emit_16(744); +emit_16(809); +emit_16(745); +emit_16(810); +emit_16(746); +emit_16(810); +emit_16(745); +emit_16(810); +emit_16(746); +emit_16(811); +emit_16(747); +emit_16(811); +emit_16(746); +emit_16(811); +emit_16(747); +emit_16(812); +emit_16(748); +emit_16(812); +emit_16(747); +emit_16(812); +emit_16(748); +emit_16(813); +emit_16(749); +emit_16(813); +emit_16(748); +emit_16(813); +emit_16(749); +emit_16(814); +emit_16(750); +emit_16(814); +emit_16(749); +emit_16(814); +emit_16(750); +emit_16(815); +emit_16(751); +emit_16(815); +emit_16(750); +emit_16(815); +emit_16(751); +emit_16(816); +emit_16(752); +emit_16(816); +emit_16(751); +emit_16(816); +emit_16(752); +emit_16(817); +emit_16(753); +emit_16(817); +emit_16(752); +emit_16(817); +emit_16(753); +emit_16(818); +emit_16(754); +emit_16(818); +emit_16(753); +emit_16(818); +emit_16(754); +emit_16(819); +emit_16(755); +emit_16(819); +emit_16(754); +emit_16(819); +emit_16(755); +emit_16(820); +emit_16(756); +emit_16(820); +emit_16(755); +emit_16(820); +emit_16(756); +emit_16(821); +emit_16(757); +emit_16(821); +emit_16(756); +emit_16(821); +emit_16(757); +emit_16(822); +emit_16(758); +emit_16(822); +emit_16(757); +emit_16(822); +emit_16(758); +emit_16(823); +emit_16(759); +emit_16(823); +emit_16(758); +emit_16(823); +emit_16(759); +emit_16(824); +emit_16(760); +emit_16(824); +emit_16(759); +emit_16(824); +emit_16(760); +emit_16(825); +emit_16(761); +emit_16(825); +emit_16(760); +emit_16(825); +emit_16(761); +emit_16(826); +emit_16(762); +emit_16(826); +emit_16(761); +emit_16(826); +emit_16(762); +emit_16(827); +emit_16(763); +emit_16(827); +emit_16(762); +emit_16(827); +emit_16(763); +emit_16(828); +emit_16(764); +emit_16(828); +emit_16(763); +emit_16(828); +emit_16(764); +emit_16(829); +emit_16(765); +emit_16(829); +emit_16(764); +emit_16(829); +emit_16(765); +emit_16(830); +emit_16(766); +emit_16(830); +emit_16(765); +emit_16(830); +emit_16(766); +emit_16(831); +emit_16(767); +emit_16(831); +emit_16(766); +emit_16(832); +emit_16(768); +emit_16(833); +emit_16(769); +emit_16(833); +emit_16(768); +emit_16(833); +emit_16(769); +emit_16(834); +emit_16(770); +emit_16(834); +emit_16(769); +emit_16(834); +emit_16(770); +emit_16(835); +emit_16(771); +emit_16(835); +emit_16(770); +emit_16(835); +emit_16(771); +emit_16(836); +emit_16(772); +emit_16(836); +emit_16(771); +emit_16(836); +emit_16(772); +emit_16(837); +emit_16(773); +emit_16(837); +emit_16(772); +emit_16(837); +emit_16(773); +emit_16(838); +emit_16(774); +emit_16(838); +emit_16(773); +emit_16(838); +emit_16(774); +emit_16(839); +emit_16(775); +emit_16(839); +emit_16(774); +emit_16(839); +emit_16(775); +emit_16(840); +emit_16(776); +emit_16(840); +emit_16(775); +emit_16(840); +emit_16(776); +emit_16(841); +emit_16(777); +emit_16(841); +emit_16(776); +emit_16(841); +emit_16(777); +emit_16(842); +emit_16(778); +emit_16(842); +emit_16(777); +emit_16(842); +emit_16(778); +emit_16(843); +emit_16(779); +emit_16(843); +emit_16(778); +emit_16(843); +emit_16(779); +emit_16(844); +emit_16(780); +emit_16(844); +emit_16(779); +emit_16(844); +emit_16(780); +emit_16(845); +emit_16(781); +emit_16(845); +emit_16(780); +emit_16(845); +emit_16(781); +emit_16(846); +emit_16(782); +emit_16(846); +emit_16(781); +emit_16(846); +emit_16(782); +emit_16(847); +emit_16(783); +emit_16(847); +emit_16(782); +emit_16(847); +emit_16(783); +emit_16(848); +emit_16(784); +emit_16(848); +emit_16(783); +emit_16(848); +emit_16(784); +emit_16(849); +emit_16(785); +emit_16(849); +emit_16(784); +emit_16(849); +emit_16(785); +emit_16(850); +emit_16(786); +emit_16(850); +emit_16(785); +emit_16(850); +emit_16(786); +emit_16(851); +emit_16(787); +emit_16(851); +emit_16(786); +emit_16(851); +emit_16(787); +emit_16(852); +emit_16(788); +emit_16(852); +emit_16(787); +emit_16(852); +emit_16(788); +emit_16(853); +emit_16(789); +emit_16(853); +emit_16(788); +emit_16(853); +emit_16(789); +emit_16(854); +emit_16(790); +emit_16(854); +emit_16(789); +emit_16(854); +emit_16(790); +emit_16(855); +emit_16(791); +emit_16(855); +emit_16(790); +emit_16(855); +emit_16(791); +emit_16(856); +emit_16(792); +emit_16(856); +emit_16(791); +emit_16(856); +emit_16(792); +emit_16(857); +emit_16(793); +emit_16(857); +emit_16(792); +emit_16(857); +emit_16(793); +emit_16(858); +emit_16(794); +emit_16(858); +emit_16(793); +emit_16(858); +emit_16(794); +emit_16(859); +emit_16(795); +emit_16(859); +emit_16(794); +emit_16(859); +emit_16(795); +emit_16(860); +emit_16(796); +emit_16(860); +emit_16(795); +emit_16(860); +emit_16(796); +emit_16(861); +emit_16(797); +emit_16(861); +emit_16(796); +emit_16(861); +emit_16(797); +emit_16(862); +emit_16(798); +emit_16(862); +emit_16(797); +emit_16(862); +emit_16(798); +emit_16(863); +emit_16(799); +emit_16(863); +emit_16(798); +emit_16(863); +emit_16(799); +emit_16(864); +emit_16(800); +emit_16(864); +emit_16(799); +emit_16(864); +emit_16(800); +emit_16(865); +emit_16(801); +emit_16(865); +emit_16(800); +emit_16(865); +emit_16(801); +emit_16(866); +emit_16(802); +emit_16(866); +emit_16(801); +emit_16(866); +emit_16(802); +emit_16(867); +emit_16(803); +emit_16(867); +emit_16(802); +emit_16(867); +emit_16(803); +emit_16(868); +emit_16(804); +emit_16(868); +emit_16(803); +emit_16(868); +emit_16(804); +emit_16(869); +emit_16(805); +emit_16(869); +emit_16(804); +emit_16(869); +emit_16(805); +emit_16(870); +emit_16(806); +emit_16(870); +emit_16(805); +emit_16(870); +emit_16(806); +emit_16(871); +emit_16(807); +emit_16(871); +emit_16(806); +emit_16(871); +emit_16(807); +emit_16(872); +emit_16(808); +emit_16(872); +emit_16(807); +emit_16(872); +emit_16(808); +emit_16(873); +emit_16(809); +emit_16(873); +emit_16(808); +emit_16(873); +emit_16(809); +emit_16(874); +emit_16(810); +emit_16(874); +emit_16(809); +emit_16(874); +emit_16(810); +emit_16(875); +emit_16(811); +emit_16(875); +emit_16(810); +emit_16(875); +emit_16(811); +emit_16(876); +emit_16(812); +emit_16(876); +emit_16(811); +emit_16(876); +emit_16(812); +emit_16(877); +emit_16(813); +emit_16(877); +emit_16(812); +emit_16(877); +emit_16(813); +emit_16(878); +emit_16(814); +emit_16(878); +emit_16(813); +emit_16(878); +emit_16(814); +emit_16(879); +emit_16(815); +emit_16(879); +emit_16(814); +emit_16(879); +emit_16(815); +emit_16(880); +emit_16(816); +emit_16(880); +emit_16(815); +emit_16(880); +emit_16(816); +emit_16(881); +emit_16(817); +emit_16(881); +emit_16(816); +emit_16(881); +emit_16(817); +emit_16(882); +emit_16(818); +emit_16(882); +emit_16(817); +emit_16(882); +emit_16(818); +emit_16(883); +emit_16(819); +emit_16(883); +emit_16(818); +emit_16(883); +emit_16(819); +emit_16(884); +emit_16(820); +emit_16(884); +emit_16(819); +emit_16(884); +emit_16(820); +emit_16(885); +emit_16(821); +emit_16(885); +emit_16(820); +emit_16(885); +emit_16(821); +emit_16(886); +emit_16(822); +emit_16(886); +emit_16(821); +emit_16(886); +emit_16(822); +emit_16(887); +emit_16(823); +emit_16(887); +emit_16(822); +emit_16(887); +emit_16(823); +emit_16(888); +emit_16(824); +emit_16(888); +emit_16(823); +emit_16(888); +emit_16(824); +emit_16(889); +emit_16(825); +emit_16(889); +emit_16(824); +emit_16(889); +emit_16(825); +emit_16(890); +emit_16(826); +emit_16(890); +emit_16(825); +emit_16(890); +emit_16(826); +emit_16(891); +emit_16(827); +emit_16(891); +emit_16(826); +emit_16(891); +emit_16(827); +emit_16(892); +emit_16(828); +emit_16(892); +emit_16(827); +emit_16(892); +emit_16(828); +emit_16(893); +emit_16(829); +emit_16(893); +emit_16(828); +emit_16(893); +emit_16(829); +emit_16(894); +emit_16(830); +emit_16(894); +emit_16(829); +emit_16(894); +emit_16(830); +emit_16(895); +emit_16(831); +emit_16(895); +emit_16(830); +emit_16(896); +emit_16(832); +emit_16(897); +emit_16(833); +emit_16(897); +emit_16(832); +emit_16(897); +emit_16(833); +emit_16(898); +emit_16(834); +emit_16(898); +emit_16(833); +emit_16(898); +emit_16(834); +emit_16(899); +emit_16(835); +emit_16(899); +emit_16(834); +emit_16(899); +emit_16(835); +emit_16(900); +emit_16(836); +emit_16(900); +emit_16(835); +emit_16(900); +emit_16(836); +emit_16(901); +emit_16(837); +emit_16(901); +emit_16(836); +emit_16(901); +emit_16(837); +emit_16(902); +emit_16(838); +emit_16(902); +emit_16(837); +emit_16(902); +emit_16(838); +emit_16(903); +emit_16(839); +emit_16(903); +emit_16(838); +emit_16(903); +emit_16(839); +emit_16(904); +emit_16(840); +emit_16(904); +emit_16(839); +emit_16(904); +emit_16(840); +emit_16(905); +emit_16(841); +emit_16(905); +emit_16(840); +emit_16(905); +emit_16(841); +emit_16(906); +emit_16(842); +emit_16(906); +emit_16(841); +emit_16(906); +emit_16(842); +emit_16(907); +emit_16(843); +emit_16(907); +emit_16(842); +emit_16(907); +emit_16(843); +emit_16(908); +emit_16(844); +emit_16(908); +emit_16(843); +emit_16(908); +emit_16(844); +emit_16(909); +emit_16(845); +emit_16(909); +emit_16(844); +emit_16(909); +emit_16(845); +emit_16(910); +emit_16(846); +emit_16(910); +emit_16(845); +emit_16(910); +emit_16(846); +emit_16(911); +emit_16(847); +emit_16(911); +emit_16(846); +emit_16(911); +emit_16(847); +emit_16(912); +emit_16(848); +emit_16(912); +emit_16(847); +emit_16(912); +emit_16(848); +emit_16(913); +emit_16(849); +emit_16(913); +emit_16(848); +emit_16(913); +emit_16(849); +emit_16(914); +emit_16(850); +emit_16(914); +emit_16(849); +emit_16(914); +emit_16(850); +emit_16(915); +emit_16(851); +emit_16(915); +emit_16(850); +emit_16(915); +emit_16(851); +emit_16(916); +emit_16(852); +emit_16(916); +emit_16(851); +emit_16(916); +emit_16(852); +emit_16(917); +emit_16(853); +emit_16(917); +emit_16(852); +emit_16(917); +emit_16(853); +emit_16(918); +emit_16(854); +emit_16(918); +emit_16(853); +emit_16(918); +emit_16(854); +emit_16(919); +emit_16(855); +emit_16(919); +emit_16(854); +emit_16(919); +emit_16(855); +emit_16(920); +emit_16(856); +emit_16(920); +emit_16(855); +emit_16(920); +emit_16(856); +emit_16(921); +emit_16(857); +emit_16(921); +emit_16(856); +emit_16(921); +emit_16(857); +emit_16(922); +emit_16(858); +emit_16(922); +emit_16(857); +emit_16(922); +emit_16(858); +emit_16(923); +emit_16(859); +emit_16(923); +emit_16(858); +emit_16(923); +emit_16(859); +emit_16(924); +emit_16(860); +emit_16(924); +emit_16(859); +emit_16(924); +emit_16(860); +emit_16(925); +emit_16(861); +emit_16(925); +emit_16(860); +emit_16(925); +emit_16(861); +emit_16(926); +emit_16(862); +emit_16(926); +emit_16(861); +emit_16(926); +emit_16(862); +emit_16(927); +emit_16(863); +emit_16(927); +emit_16(862); +emit_16(927); +emit_16(863); +emit_16(928); +emit_16(864); +emit_16(928); +emit_16(863); +emit_16(928); +emit_16(864); +emit_16(929); +emit_16(865); +emit_16(929); +emit_16(864); +emit_16(929); +emit_16(865); +emit_16(930); +emit_16(866); +emit_16(930); +emit_16(865); +emit_16(930); +emit_16(866); +emit_16(931); +emit_16(867); +emit_16(931); +emit_16(866); +emit_16(931); +emit_16(867); +emit_16(932); +emit_16(868); +emit_16(932); +emit_16(867); +emit_16(932); +emit_16(868); +emit_16(933); +emit_16(869); +emit_16(933); +emit_16(868); +emit_16(933); +emit_16(869); +emit_16(934); +emit_16(870); +emit_16(934); +emit_16(869); +emit_16(934); +emit_16(870); +emit_16(935); +emit_16(871); +emit_16(935); +emit_16(870); +emit_16(935); +emit_16(871); +emit_16(936); +emit_16(872); +emit_16(936); +emit_16(871); +emit_16(936); +emit_16(872); +emit_16(937); +emit_16(873); +emit_16(937); +emit_16(872); +emit_16(937); +emit_16(873); +emit_16(938); +emit_16(874); +emit_16(938); +emit_16(873); +emit_16(938); +emit_16(874); +emit_16(939); +emit_16(875); +emit_16(939); +emit_16(874); +emit_16(939); +emit_16(875); +emit_16(940); +emit_16(876); +emit_16(940); +emit_16(875); +emit_16(940); +emit_16(876); +emit_16(941); +emit_16(877); +emit_16(941); +emit_16(876); +emit_16(941); +emit_16(877); +emit_16(942); +emit_16(878); +emit_16(942); +emit_16(877); +emit_16(942); +emit_16(878); +emit_16(943); +emit_16(879); +emit_16(943); +emit_16(878); +emit_16(943); +emit_16(879); +emit_16(944); +emit_16(880); +emit_16(944); +emit_16(879); +emit_16(944); +emit_16(880); +emit_16(945); +emit_16(881); +emit_16(945); +emit_16(880); +emit_16(945); +emit_16(881); +emit_16(946); +emit_16(882); +emit_16(946); +emit_16(881); +emit_16(946); +emit_16(882); +emit_16(947); +emit_16(883); +emit_16(947); +emit_16(882); +emit_16(947); +emit_16(883); +emit_16(948); +emit_16(884); +emit_16(948); +emit_16(883); +emit_16(948); +emit_16(884); +emit_16(949); +emit_16(885); +emit_16(949); +emit_16(884); +emit_16(949); +emit_16(885); +emit_16(950); +emit_16(886); +emit_16(950); +emit_16(885); +emit_16(950); +emit_16(886); +emit_16(951); +emit_16(887); +emit_16(951); +emit_16(886); +emit_16(951); +emit_16(887); +emit_16(952); +emit_16(888); +emit_16(952); +emit_16(887); +emit_16(952); +emit_16(888); +emit_16(953); +emit_16(889); +emit_16(953); +emit_16(888); +emit_16(953); +emit_16(889); +emit_16(954); +emit_16(890); +emit_16(954); +emit_16(889); +emit_16(954); +emit_16(890); +emit_16(955); +emit_16(891); +emit_16(955); +emit_16(890); +emit_16(955); +emit_16(891); +emit_16(956); +emit_16(892); +emit_16(956); +emit_16(891); +emit_16(956); +emit_16(892); +emit_16(957); +emit_16(893); +emit_16(957); +emit_16(892); +emit_16(957); +emit_16(893); +emit_16(958); +emit_16(894); +emit_16(958); +emit_16(893); +emit_16(958); +emit_16(894); +emit_16(959); +emit_16(895); +emit_16(959); +emit_16(894); +emit_16(960); +emit_16(896); +emit_16(961); +emit_16(897); +emit_16(961); +emit_16(896); +emit_16(961); +emit_16(897); +emit_16(962); +emit_16(898); +emit_16(962); +emit_16(897); +emit_16(962); +emit_16(898); +emit_16(963); +emit_16(899); +emit_16(963); +emit_16(898); +emit_16(963); +emit_16(899); +emit_16(964); +emit_16(900); +emit_16(964); +emit_16(899); +emit_16(964); +emit_16(900); +emit_16(965); +emit_16(901); +emit_16(965); +emit_16(900); +emit_16(965); +emit_16(901); +emit_16(966); +emit_16(902); +emit_16(966); +emit_16(901); +emit_16(966); +emit_16(902); +emit_16(967); +emit_16(903); +emit_16(967); +emit_16(902); +emit_16(967); +emit_16(903); +emit_16(968); +emit_16(904); +emit_16(968); +emit_16(903); +emit_16(968); +emit_16(904); +emit_16(969); +emit_16(905); +emit_16(969); +emit_16(904); +emit_16(969); +emit_16(905); +emit_16(970); +emit_16(906); +emit_16(970); +emit_16(905); +emit_16(970); +emit_16(906); +emit_16(971); +emit_16(907); +emit_16(971); +emit_16(906); +emit_16(971); +emit_16(907); +emit_16(972); +emit_16(908); +emit_16(972); +emit_16(907); +emit_16(972); +emit_16(908); +emit_16(973); +emit_16(909); +emit_16(973); +emit_16(908); +emit_16(973); +emit_16(909); +emit_16(974); +emit_16(910); +emit_16(974); +emit_16(909); +emit_16(974); +emit_16(910); +emit_16(975); +emit_16(911); +emit_16(975); +emit_16(910); +emit_16(975); +emit_16(911); +emit_16(976); +emit_16(912); +emit_16(976); +emit_16(911); +emit_16(976); +emit_16(912); +emit_16(977); +emit_16(913); +emit_16(977); +emit_16(912); +emit_16(977); +emit_16(913); +emit_16(978); +emit_16(914); +emit_16(978); +emit_16(913); +emit_16(978); +emit_16(914); +emit_16(979); +emit_16(915); +emit_16(979); +emit_16(914); +emit_16(979); +emit_16(915); +emit_16(980); +emit_16(916); +emit_16(980); +emit_16(915); +emit_16(980); +emit_16(916); +emit_16(981); +emit_16(917); +emit_16(981); +emit_16(916); +emit_16(981); +emit_16(917); +emit_16(982); +emit_16(918); +emit_16(982); +emit_16(917); +emit_16(982); +emit_16(918); +emit_16(983); +emit_16(919); +emit_16(983); +emit_16(918); +emit_16(983); +emit_16(919); +emit_16(984); +emit_16(920); +emit_16(984); +emit_16(919); +emit_16(984); +emit_16(920); +emit_16(985); +emit_16(921); +emit_16(985); +emit_16(920); +emit_16(985); +emit_16(921); +emit_16(986); +emit_16(922); +emit_16(986); +emit_16(921); +emit_16(986); +emit_16(922); +emit_16(987); +emit_16(923); +emit_16(987); +emit_16(922); +emit_16(987); +emit_16(923); +emit_16(988); +emit_16(924); +emit_16(988); +emit_16(923); +emit_16(988); +emit_16(924); +emit_16(989); +emit_16(925); +emit_16(989); +emit_16(924); +emit_16(989); +emit_16(925); +emit_16(990); +emit_16(926); +emit_16(990); +emit_16(925); +emit_16(990); +emit_16(926); +emit_16(991); +emit_16(927); +emit_16(991); +emit_16(926); +emit_16(991); +emit_16(927); +emit_16(992); +emit_16(928); +emit_16(992); +emit_16(927); +emit_16(992); +emit_16(928); +emit_16(993); +emit_16(929); +emit_16(993); +emit_16(928); +emit_16(993); +emit_16(929); +emit_16(994); +emit_16(930); +emit_16(994); +emit_16(929); +emit_16(994); +emit_16(930); +emit_16(995); +emit_16(931); +emit_16(995); +emit_16(930); +emit_16(995); +emit_16(931); +emit_16(996); +emit_16(932); +emit_16(996); +emit_16(931); +emit_16(996); +emit_16(932); +emit_16(997); +emit_16(933); +emit_16(997); +emit_16(932); +emit_16(997); +emit_16(933); +emit_16(998); +emit_16(934); +emit_16(998); +emit_16(933); +emit_16(998); +emit_16(934); +emit_16(999); +emit_16(935); +emit_16(999); +emit_16(934); +emit_16(999); +emit_16(935); +emit_16(1000); +emit_16(936); +emit_16(1000); +emit_16(935); +emit_16(1000); +emit_16(936); +emit_16(1001); +emit_16(937); +emit_16(1001); +emit_16(936); +emit_16(1001); +emit_16(937); +emit_16(1002); +emit_16(938); +emit_16(1002); +emit_16(937); +emit_16(1002); +emit_16(938); +emit_16(1003); +emit_16(939); +emit_16(1003); +emit_16(938); +emit_16(1003); +emit_16(939); +emit_16(1004); +emit_16(940); +emit_16(1004); +emit_16(939); +emit_16(1004); +emit_16(940); +emit_16(1005); +emit_16(941); +emit_16(1005); +emit_16(940); +emit_16(1005); +emit_16(941); +emit_16(1006); +emit_16(942); +emit_16(1006); +emit_16(941); +emit_16(1006); +emit_16(942); +emit_16(1007); +emit_16(943); +emit_16(1007); +emit_16(942); +emit_16(1007); +emit_16(943); +emit_16(1008); +emit_16(944); +emit_16(1008); +emit_16(943); +emit_16(1008); +emit_16(944); +emit_16(1009); +emit_16(945); +emit_16(1009); +emit_16(944); +emit_16(1009); +emit_16(945); +emit_16(1010); +emit_16(946); +emit_16(1010); +emit_16(945); +emit_16(1010); +emit_16(946); +emit_16(1011); +emit_16(947); +emit_16(1011); +emit_16(946); +emit_16(1011); +emit_16(947); +emit_16(1012); +emit_16(948); +emit_16(1012); +emit_16(947); +emit_16(1012); +emit_16(948); +emit_16(1013); +emit_16(949); +emit_16(1013); +emit_16(948); +emit_16(1013); +emit_16(949); +emit_16(1014); +emit_16(950); +emit_16(1014); +emit_16(949); +emit_16(1014); +emit_16(950); +emit_16(1015); +emit_16(951); +emit_16(1015); +emit_16(950); +emit_16(1015); +emit_16(951); +emit_16(1016); +emit_16(952); +emit_16(1016); +emit_16(951); +emit_16(1016); +emit_16(952); +emit_16(1017); +emit_16(953); +emit_16(1017); +emit_16(952); +emit_16(1017); +emit_16(953); +emit_16(1018); +emit_16(954); +emit_16(1018); +emit_16(953); +emit_16(1018); +emit_16(954); +emit_16(1019); +emit_16(955); +emit_16(1019); +emit_16(954); +emit_16(1019); +emit_16(955); +emit_16(1020); +emit_16(956); +emit_16(1020); +emit_16(955); +emit_16(1020); +emit_16(956); +emit_16(1021); +emit_16(957); +emit_16(1021); +emit_16(956); +emit_16(1021); +emit_16(957); +emit_16(1022); +emit_16(958); +emit_16(1022); +emit_16(957); +emit_16(1022); +emit_16(958); +emit_16(1023); +emit_16(959); +emit_16(1023); +emit_16(958); +emit_16(1024); +emit_16(960); +emit_16(1025); +emit_16(961); +emit_16(1025); +emit_16(960); +emit_16(1025); +emit_16(961); +emit_16(1026); +emit_16(962); +emit_16(1026); +emit_16(961); +emit_16(1026); +emit_16(962); +emit_16(1027); +emit_16(963); +emit_16(1027); +emit_16(962); +emit_16(1027); +emit_16(963); +emit_16(1028); +emit_16(964); +emit_16(1028); +emit_16(963); +emit_16(1028); +emit_16(964); +emit_16(1029); +emit_16(965); +emit_16(1029); +emit_16(964); +emit_16(1029); +emit_16(965); +emit_16(1030); +emit_16(966); +emit_16(1030); +emit_16(965); +emit_16(1030); +emit_16(966); +emit_16(1031); +emit_16(967); +emit_16(1031); +emit_16(966); +emit_16(1031); +emit_16(967); +emit_16(1032); +emit_16(968); +emit_16(1032); +emit_16(967); +emit_16(1032); +emit_16(968); +emit_16(1033); +emit_16(969); +emit_16(1033); +emit_16(968); +emit_16(1033); +emit_16(969); +emit_16(1034); +emit_16(970); +emit_16(1034); +emit_16(969); +emit_16(1034); +emit_16(970); +emit_16(1035); +emit_16(971); +emit_16(1035); +emit_16(970); +emit_16(1035); +emit_16(971); +emit_16(1036); +emit_16(972); +emit_16(1036); +emit_16(971); +emit_16(1036); +emit_16(972); +emit_16(1037); +emit_16(973); +emit_16(1037); +emit_16(972); +emit_16(1037); +emit_16(973); +emit_16(1038); +emit_16(974); +emit_16(1038); +emit_16(973); +emit_16(1038); +emit_16(974); +emit_16(1039); +emit_16(975); +emit_16(1039); +emit_16(974); +emit_16(1039); +emit_16(975); +emit_16(1040); +emit_16(976); +emit_16(1040); +emit_16(975); +emit_16(1040); +emit_16(976); +emit_16(1041); +emit_16(977); +emit_16(1041); +emit_16(976); +emit_16(1041); +emit_16(977); +emit_16(1042); +emit_16(978); +emit_16(1042); +emit_16(977); +emit_16(1042); +emit_16(978); +emit_16(1043); +emit_16(979); +emit_16(1043); +emit_16(978); +emit_16(1043); +emit_16(979); +emit_16(1044); +emit_16(980); +emit_16(1044); +emit_16(979); +emit_16(1044); +emit_16(980); +emit_16(1045); +emit_16(981); +emit_16(1045); +emit_16(980); +emit_16(1045); +emit_16(981); +emit_16(1046); +emit_16(982); +emit_16(1046); +emit_16(981); +emit_16(1046); +emit_16(982); +emit_16(1047); +emit_16(983); +emit_16(1047); +emit_16(982); +emit_16(1047); +emit_16(983); +emit_16(1048); +emit_16(984); +emit_16(1048); +emit_16(983); +emit_16(1048); +emit_16(984); +emit_16(1049); +emit_16(985); +emit_16(1049); +emit_16(984); +emit_16(1049); +emit_16(985); +emit_16(1050); +emit_16(986); +emit_16(1050); +emit_16(985); +emit_16(1050); +emit_16(986); +emit_16(1051); +emit_16(987); +emit_16(1051); +emit_16(986); +emit_16(1051); +emit_16(987); +emit_16(1052); +emit_16(988); +emit_16(1052); +emit_16(987); +emit_16(1052); +emit_16(988); +emit_16(1053); +emit_16(989); +emit_16(1053); +emit_16(988); +emit_16(1053); +emit_16(989); +emit_16(1054); +emit_16(990); +emit_16(1054); +emit_16(989); +emit_16(1054); +emit_16(990); +emit_16(1055); +emit_16(991); +emit_16(1055); +emit_16(990); +emit_16(1055); +emit_16(991); +emit_16(1056); +emit_16(992); +emit_16(1056); +emit_16(991); +emit_16(1056); +emit_16(992); +emit_16(1057); +emit_16(993); +emit_16(1057); +emit_16(992); +emit_16(1057); +emit_16(993); +emit_16(1058); +emit_16(994); +emit_16(1058); +emit_16(993); +emit_16(1058); +emit_16(994); +emit_16(1059); +emit_16(995); +emit_16(1059); +emit_16(994); +emit_16(1059); +emit_16(995); +emit_16(1060); +emit_16(996); +emit_16(1060); +emit_16(995); +emit_16(1060); +emit_16(996); +emit_16(1061); +emit_16(997); +emit_16(1061); +emit_16(996); +emit_16(1061); +emit_16(997); +emit_16(1062); +emit_16(998); +emit_16(1062); +emit_16(997); +emit_16(1062); +emit_16(998); +emit_16(1063); +emit_16(999); +emit_16(1063); +emit_16(998); +emit_16(1063); +emit_16(999); +emit_16(1064); +emit_16(1000); +emit_16(1064); +emit_16(999); +emit_16(1064); +emit_16(1000); +emit_16(1065); +emit_16(1001); +emit_16(1065); +emit_16(1000); +emit_16(1065); +emit_16(1001); +emit_16(1066); +emit_16(1002); +emit_16(1066); +emit_16(1001); +emit_16(1066); +emit_16(1002); +emit_16(1067); +emit_16(1003); +emit_16(1067); +emit_16(1002); +emit_16(1067); +emit_16(1003); +emit_16(1068); +emit_16(1004); +emit_16(1068); +emit_16(1003); +emit_16(1068); +emit_16(1004); +emit_16(1069); +emit_16(1005); +emit_16(1069); +emit_16(1004); +emit_16(1069); +emit_16(1005); +emit_16(1070); +emit_16(1006); +emit_16(1070); +emit_16(1005); +emit_16(1070); +emit_16(1006); +emit_16(1071); +emit_16(1007); +emit_16(1071); +emit_16(1006); +emit_16(1071); +emit_16(1007); +emit_16(1072); +emit_16(1008); +emit_16(1072); +emit_16(1007); +emit_16(1072); +emit_16(1008); +emit_16(1073); +emit_16(1009); +emit_16(1073); +emit_16(1008); +emit_16(1073); +emit_16(1009); +emit_16(1074); +emit_16(1010); +emit_16(1074); +emit_16(1009); +emit_16(1074); +emit_16(1010); +emit_16(1075); +emit_16(1011); +emit_16(1075); +emit_16(1010); +emit_16(1075); +emit_16(1011); +emit_16(1076); +emit_16(1012); +emit_16(1076); +emit_16(1011); +emit_16(1076); +emit_16(1012); +emit_16(1077); +emit_16(1013); +emit_16(1077); +emit_16(1012); +emit_16(1077); +emit_16(1013); +emit_16(1078); +emit_16(1014); +emit_16(1078); +emit_16(1013); +emit_16(1078); +emit_16(1014); +emit_16(1079); +emit_16(1015); +emit_16(1079); +emit_16(1014); +emit_16(1079); +emit_16(1015); +emit_16(1080); +emit_16(1016); +emit_16(1080); +emit_16(1015); +emit_16(1080); +emit_16(1016); +emit_16(1081); +emit_16(1017); +emit_16(1081); +emit_16(1016); +emit_16(1081); +emit_16(1017); +emit_16(1082); +emit_16(1018); +emit_16(1082); +emit_16(1017); +emit_16(1082); +emit_16(1018); +emit_16(1083); +emit_16(1019); +emit_16(1083); +emit_16(1018); +emit_16(1083); +emit_16(1019); +emit_16(1084); +emit_16(1020); +emit_16(1084); +emit_16(1019); +emit_16(1084); +emit_16(1020); +emit_16(1085); +emit_16(1021); +emit_16(1085); +emit_16(1020); +emit_16(1085); +emit_16(1021); +emit_16(1086); +emit_16(1022); +emit_16(1086); +emit_16(1021); +emit_16(1086); +emit_16(1022); +emit_16(1087); +emit_16(1023); +emit_16(1087); +emit_16(1022); +emit_16(1088); +emit_16(1024); +emit_16(1089); +emit_16(1025); +emit_16(1089); +emit_16(1024); +emit_16(1089); +emit_16(1025); +emit_16(1090); +emit_16(1026); +emit_16(1090); +emit_16(1025); +emit_16(1090); +emit_16(1026); +emit_16(1091); +emit_16(1027); +emit_16(1091); +emit_16(1026); +emit_16(1091); +emit_16(1027); +emit_16(1092); +emit_16(1028); +emit_16(1092); +emit_16(1027); +emit_16(1092); +emit_16(1028); +emit_16(1093); +emit_16(1029); +emit_16(1093); +emit_16(1028); +emit_16(1093); +emit_16(1029); +emit_16(1094); +emit_16(1030); +emit_16(1094); +emit_16(1029); +emit_16(1094); +emit_16(1030); +emit_16(1095); +emit_16(1031); +emit_16(1095); +emit_16(1030); +emit_16(1095); +emit_16(1031); +emit_16(1096); +emit_16(1032); +emit_16(1096); +emit_16(1031); +emit_16(1096); +emit_16(1032); +emit_16(1097); +emit_16(1033); +emit_16(1097); +emit_16(1032); +emit_16(1097); +emit_16(1033); +emit_16(1098); +emit_16(1034); +emit_16(1098); +emit_16(1033); +emit_16(1098); +emit_16(1034); +emit_16(1099); +emit_16(1035); +emit_16(1099); +emit_16(1034); +emit_16(1099); +emit_16(1035); +emit_16(1100); +emit_16(1036); +emit_16(1100); +emit_16(1035); +emit_16(1100); +emit_16(1036); +emit_16(1101); +emit_16(1037); +emit_16(1101); +emit_16(1036); +emit_16(1101); +emit_16(1037); +emit_16(1102); +emit_16(1038); +emit_16(1102); +emit_16(1037); +emit_16(1102); +emit_16(1038); +emit_16(1103); +emit_16(1039); +emit_16(1103); +emit_16(1038); +emit_16(1103); +emit_16(1039); +emit_16(1104); +emit_16(1040); +emit_16(1104); +emit_16(1039); +emit_16(1104); +emit_16(1040); +emit_16(1105); +emit_16(1041); +emit_16(1105); +emit_16(1040); +emit_16(1105); +emit_16(1041); +emit_16(1106); +emit_16(1042); +emit_16(1106); +emit_16(1041); +emit_16(1106); +emit_16(1042); +emit_16(1107); +emit_16(1043); +emit_16(1107); +emit_16(1042); +emit_16(1107); +emit_16(1043); +emit_16(1108); +emit_16(1044); +emit_16(1108); +emit_16(1043); +emit_16(1108); +emit_16(1044); +emit_16(1109); +emit_16(1045); +emit_16(1109); +emit_16(1044); +emit_16(1109); +emit_16(1045); +emit_16(1110); +emit_16(1046); +emit_16(1110); +emit_16(1045); +emit_16(1110); +emit_16(1046); +emit_16(1111); +emit_16(1047); +emit_16(1111); +emit_16(1046); +emit_16(1111); +emit_16(1047); +emit_16(1112); +emit_16(1048); +emit_16(1112); +emit_16(1047); +emit_16(1112); +emit_16(1048); +emit_16(1113); +emit_16(1049); +emit_16(1113); +emit_16(1048); +emit_16(1113); +emit_16(1049); +emit_16(1114); +emit_16(1050); +emit_16(1114); +emit_16(1049); +emit_16(1114); +emit_16(1050); +emit_16(1115); +emit_16(1051); +emit_16(1115); +emit_16(1050); +emit_16(1115); +emit_16(1051); +emit_16(1116); +emit_16(1052); +emit_16(1116); +emit_16(1051); +emit_16(1116); +emit_16(1052); +emit_16(1117); +emit_16(1053); +emit_16(1117); +emit_16(1052); +emit_16(1117); +emit_16(1053); +emit_16(1118); +emit_16(1054); +emit_16(1118); +emit_16(1053); +emit_16(1118); +emit_16(1054); +emit_16(1119); +emit_16(1055); +emit_16(1119); +emit_16(1054); +emit_16(1119); +emit_16(1055); +emit_16(1120); +emit_16(1056); +emit_16(1120); +emit_16(1055); +emit_16(1120); +emit_16(1056); +emit_16(1121); +emit_16(1057); +emit_16(1121); +emit_16(1056); +emit_16(1121); +emit_16(1057); +emit_16(1122); +emit_16(1058); +emit_16(1122); +emit_16(1057); +emit_16(1122); +emit_16(1058); +emit_16(1123); +emit_16(1059); +emit_16(1123); +emit_16(1058); +emit_16(1123); +emit_16(1059); +emit_16(1124); +emit_16(1060); +emit_16(1124); +emit_16(1059); +emit_16(1124); +emit_16(1060); +emit_16(1125); +emit_16(1061); +emit_16(1125); +emit_16(1060); +emit_16(1125); +emit_16(1061); +emit_16(1126); +emit_16(1062); +emit_16(1126); +emit_16(1061); +emit_16(1126); +emit_16(1062); +emit_16(1127); +emit_16(1063); +emit_16(1127); +emit_16(1062); +emit_16(1127); +emit_16(1063); +emit_16(1128); +emit_16(1064); +emit_16(1128); +emit_16(1063); +emit_16(1128); +emit_16(1064); +emit_16(1129); +emit_16(1065); +emit_16(1129); +emit_16(1064); +emit_16(1129); +emit_16(1065); +emit_16(1130); +emit_16(1066); +emit_16(1130); +emit_16(1065); +emit_16(1130); +emit_16(1066); +emit_16(1131); +emit_16(1067); +emit_16(1131); +emit_16(1066); +emit_16(1131); +emit_16(1067); +emit_16(1132); +emit_16(1068); +emit_16(1132); +emit_16(1067); +emit_16(1132); +emit_16(1068); +emit_16(1133); +emit_16(1069); +emit_16(1133); +emit_16(1068); +emit_16(1133); +emit_16(1069); +emit_16(1134); +emit_16(1070); +emit_16(1134); +emit_16(1069); +emit_16(1134); +emit_16(1070); +emit_16(1135); +emit_16(1071); +emit_16(1135); +emit_16(1070); +emit_16(1135); +emit_16(1071); +emit_16(1136); +emit_16(1072); +emit_16(1136); +emit_16(1071); +emit_16(1136); +emit_16(1072); +emit_16(1137); +emit_16(1073); +emit_16(1137); +emit_16(1072); +emit_16(1137); +emit_16(1073); +emit_16(1138); +emit_16(1074); +emit_16(1138); +emit_16(1073); +emit_16(1138); +emit_16(1074); +emit_16(1139); +emit_16(1075); +emit_16(1139); +emit_16(1074); +emit_16(1139); +emit_16(1075); +emit_16(1140); +emit_16(1076); +emit_16(1140); +emit_16(1075); +emit_16(1140); +emit_16(1076); +emit_16(1141); +emit_16(1077); +emit_16(1141); +emit_16(1076); +emit_16(1141); +emit_16(1077); +emit_16(1142); +emit_16(1078); +emit_16(1142); +emit_16(1077); +emit_16(1142); +emit_16(1078); +emit_16(1143); +emit_16(1079); +emit_16(1143); +emit_16(1078); +emit_16(1143); +emit_16(1079); +emit_16(1144); +emit_16(1080); +emit_16(1144); +emit_16(1079); +emit_16(1144); +emit_16(1080); +emit_16(1145); +emit_16(1081); +emit_16(1145); +emit_16(1080); +emit_16(1145); +emit_16(1081); +emit_16(1146); +emit_16(1082); +emit_16(1146); +emit_16(1081); +emit_16(1146); +emit_16(1082); +emit_16(1147); +emit_16(1083); +emit_16(1147); +emit_16(1082); +emit_16(1147); +emit_16(1083); +emit_16(1148); +emit_16(1084); +emit_16(1148); +emit_16(1083); +emit_16(1148); +emit_16(1084); +emit_16(1149); +emit_16(1085); +emit_16(1149); +emit_16(1084); +emit_16(1149); +emit_16(1085); +emit_16(1150); +emit_16(1086); +emit_16(1150); +emit_16(1085); +emit_16(1150); +emit_16(1086); +emit_16(1151); +emit_16(1087); +emit_16(1151); +emit_16(1086); +emit_16(1152); +emit_16(1088); +emit_16(1153); +emit_16(1089); +emit_16(1153); +emit_16(1088); +emit_16(1153); +emit_16(1089); +emit_16(1154); +emit_16(1090); +emit_16(1154); +emit_16(1089); +emit_16(1154); +emit_16(1090); +emit_16(1155); +emit_16(1091); +emit_16(1155); +emit_16(1090); +emit_16(1155); +emit_16(1091); +emit_16(1156); +emit_16(1092); +emit_16(1156); +emit_16(1091); +emit_16(1156); +emit_16(1092); +emit_16(1157); +emit_16(1093); +emit_16(1157); +emit_16(1092); +emit_16(1157); +emit_16(1093); +emit_16(1158); +emit_16(1094); +emit_16(1158); +emit_16(1093); +emit_16(1158); +emit_16(1094); +emit_16(1159); +emit_16(1095); +emit_16(1159); +emit_16(1094); +emit_16(1159); +emit_16(1095); +emit_16(1160); +emit_16(1096); +emit_16(1160); +emit_16(1095); +emit_16(1160); +emit_16(1096); +emit_16(1161); +emit_16(1097); +emit_16(1161); +emit_16(1096); +emit_16(1161); +emit_16(1097); +emit_16(1162); +emit_16(1098); +emit_16(1162); +emit_16(1097); +emit_16(1162); +emit_16(1098); +emit_16(1163); +emit_16(1099); +emit_16(1163); +emit_16(1098); +emit_16(1163); +emit_16(1099); +emit_16(1164); +emit_16(1100); +emit_16(1164); +emit_16(1099); +emit_16(1164); +emit_16(1100); +emit_16(1165); +emit_16(1101); +emit_16(1165); +emit_16(1100); +emit_16(1165); +emit_16(1101); +emit_16(1166); +emit_16(1102); +emit_16(1166); +emit_16(1101); +emit_16(1166); +emit_16(1102); +emit_16(1167); +emit_16(1103); +emit_16(1167); +emit_16(1102); +emit_16(1167); +emit_16(1103); +emit_16(1168); +emit_16(1104); +emit_16(1168); +emit_16(1103); +emit_16(1168); +emit_16(1104); +emit_16(1169); +emit_16(1105); +emit_16(1169); +emit_16(1104); +emit_16(1169); +emit_16(1105); +emit_16(1170); +emit_16(1106); +emit_16(1170); +emit_16(1105); +emit_16(1170); +emit_16(1106); +emit_16(1171); +emit_16(1107); +emit_16(1171); +emit_16(1106); +emit_16(1171); +emit_16(1107); +emit_16(1172); +emit_16(1108); +emit_16(1172); +emit_16(1107); +emit_16(1172); +emit_16(1108); +emit_16(1173); +emit_16(1109); +emit_16(1173); +emit_16(1108); +emit_16(1173); +emit_16(1109); +emit_16(1174); +emit_16(1110); +emit_16(1174); +emit_16(1109); +emit_16(1174); +emit_16(1110); +emit_16(1175); +emit_16(1111); +emit_16(1175); +emit_16(1110); +emit_16(1175); +emit_16(1111); +emit_16(1176); +emit_16(1112); +emit_16(1176); +emit_16(1111); +emit_16(1176); +emit_16(1112); +emit_16(1177); +emit_16(1113); +emit_16(1177); +emit_16(1112); +emit_16(1177); +emit_16(1113); +emit_16(1178); +emit_16(1114); +emit_16(1178); +emit_16(1113); +emit_16(1178); +emit_16(1114); +emit_16(1179); +emit_16(1115); +emit_16(1179); +emit_16(1114); +emit_16(1179); +emit_16(1115); +emit_16(1180); +emit_16(1116); +emit_16(1180); +emit_16(1115); +emit_16(1180); +emit_16(1116); +emit_16(1181); +emit_16(1117); +emit_16(1181); +emit_16(1116); +emit_16(1181); +emit_16(1117); +emit_16(1182); +emit_16(1118); +emit_16(1182); +emit_16(1117); +emit_16(1182); +emit_16(1118); +emit_16(1183); +emit_16(1119); +emit_16(1183); +emit_16(1118); +emit_16(1183); +emit_16(1119); +emit_16(1184); +emit_16(1120); +emit_16(1184); +emit_16(1119); +emit_16(1184); +emit_16(1120); +emit_16(1185); +emit_16(1121); +emit_16(1185); +emit_16(1120); +emit_16(1185); +emit_16(1121); +emit_16(1186); +emit_16(1122); +emit_16(1186); +emit_16(1121); +emit_16(1186); +emit_16(1122); +emit_16(1187); +emit_16(1123); +emit_16(1187); +emit_16(1122); +emit_16(1187); +emit_16(1123); +emit_16(1188); +emit_16(1124); +emit_16(1188); +emit_16(1123); +emit_16(1188); +emit_16(1124); +emit_16(1189); +emit_16(1125); +emit_16(1189); +emit_16(1124); +emit_16(1189); +emit_16(1125); +emit_16(1190); +emit_16(1126); +emit_16(1190); +emit_16(1125); +emit_16(1190); +emit_16(1126); +emit_16(1191); +emit_16(1127); +emit_16(1191); +emit_16(1126); +emit_16(1191); +emit_16(1127); +emit_16(1192); +emit_16(1128); +emit_16(1192); +emit_16(1127); +emit_16(1192); +emit_16(1128); +emit_16(1193); +emit_16(1129); +emit_16(1193); +emit_16(1128); +emit_16(1193); +emit_16(1129); +emit_16(1194); +emit_16(1130); +emit_16(1194); +emit_16(1129); +emit_16(1194); +emit_16(1130); +emit_16(1195); +emit_16(1131); +emit_16(1195); +emit_16(1130); +emit_16(1195); +emit_16(1131); +emit_16(1196); +emit_16(1132); +emit_16(1196); +emit_16(1131); +emit_16(1196); +emit_16(1132); +emit_16(1197); +emit_16(1133); +emit_16(1197); +emit_16(1132); +emit_16(1197); +emit_16(1133); +emit_16(1198); +emit_16(1134); +emit_16(1198); +emit_16(1133); +emit_16(1198); +emit_16(1134); +emit_16(1199); +emit_16(1135); +emit_16(1199); +emit_16(1134); +emit_16(1199); +emit_16(1135); +emit_16(1200); +emit_16(1136); +emit_16(1200); +emit_16(1135); +emit_16(1200); +emit_16(1136); +emit_16(1201); +emit_16(1137); +emit_16(1201); +emit_16(1136); +emit_16(1201); +emit_16(1137); +emit_16(1202); +emit_16(1138); +emit_16(1202); +emit_16(1137); +emit_16(1202); +emit_16(1138); +emit_16(1203); +emit_16(1139); +emit_16(1203); +emit_16(1138); +emit_16(1203); +emit_16(1139); +emit_16(1204); +emit_16(1140); +emit_16(1204); +emit_16(1139); +emit_16(1204); +emit_16(1140); +emit_16(1205); +emit_16(1141); +emit_16(1205); +emit_16(1140); +emit_16(1205); +emit_16(1141); +emit_16(1206); +emit_16(1142); +emit_16(1206); +emit_16(1141); +emit_16(1206); +emit_16(1142); +emit_16(1207); +emit_16(1143); +emit_16(1207); +emit_16(1142); +emit_16(1207); +emit_16(1143); +emit_16(1208); +emit_16(1144); +emit_16(1208); +emit_16(1143); +emit_16(1208); +emit_16(1144); +emit_16(1209); +emit_16(1145); +emit_16(1209); +emit_16(1144); +emit_16(1209); +emit_16(1145); +emit_16(1210); +emit_16(1146); +emit_16(1210); +emit_16(1145); +emit_16(1210); +emit_16(1146); +emit_16(1211); +emit_16(1147); +emit_16(1211); +emit_16(1146); +emit_16(1211); +emit_16(1147); +emit_16(1212); +emit_16(1148); +emit_16(1212); +emit_16(1147); +emit_16(1212); +emit_16(1148); +emit_16(1213); +emit_16(1149); +emit_16(1213); +emit_16(1148); +emit_16(1213); +emit_16(1149); +emit_16(1214); +emit_16(1150); +emit_16(1214); +emit_16(1149); +emit_16(1214); +emit_16(1150); +emit_16(1215); +emit_16(1151); +emit_16(1215); +emit_16(1150); +emit_16(1216); +emit_16(1152); +emit_16(1217); +emit_16(1153); +emit_16(1217); +emit_16(1152); +emit_16(1217); +emit_16(1153); +emit_16(1218); +emit_16(1154); +emit_16(1218); +emit_16(1153); +emit_16(1218); +emit_16(1154); +emit_16(1219); +emit_16(1155); +emit_16(1219); +emit_16(1154); +emit_16(1219); +emit_16(1155); +emit_16(1220); +emit_16(1156); +emit_16(1220); +emit_16(1155); +emit_16(1220); +emit_16(1156); +emit_16(1221); +emit_16(1157); +emit_16(1221); +emit_16(1156); +emit_16(1221); +emit_16(1157); +emit_16(1222); +emit_16(1158); +emit_16(1222); +emit_16(1157); +emit_16(1222); +emit_16(1158); +emit_16(1223); +emit_16(1159); +emit_16(1223); +emit_16(1158); +emit_16(1223); +emit_16(1159); +emit_16(1224); +emit_16(1160); +emit_16(1224); +emit_16(1159); +emit_16(1224); +emit_16(1160); +emit_16(1225); +emit_16(1161); +emit_16(1225); +emit_16(1160); +emit_16(1225); +emit_16(1161); +emit_16(1226); +emit_16(1162); +emit_16(1226); +emit_16(1161); +emit_16(1226); +emit_16(1162); +emit_16(1227); +emit_16(1163); +emit_16(1227); +emit_16(1162); +emit_16(1227); +emit_16(1163); +emit_16(1228); +emit_16(1164); +emit_16(1228); +emit_16(1163); +emit_16(1228); +emit_16(1164); +emit_16(1229); +emit_16(1165); +emit_16(1229); +emit_16(1164); +emit_16(1229); +emit_16(1165); +emit_16(1230); +emit_16(1166); +emit_16(1230); +emit_16(1165); +emit_16(1230); +emit_16(1166); +emit_16(1231); +emit_16(1167); +emit_16(1231); +emit_16(1166); +emit_16(1231); +emit_16(1167); +emit_16(1232); +emit_16(1168); +emit_16(1232); +emit_16(1167); +emit_16(1232); +emit_16(1168); +emit_16(1233); +emit_16(1169); +emit_16(1233); +emit_16(1168); +emit_16(1233); +emit_16(1169); +emit_16(1234); +emit_16(1170); +emit_16(1234); +emit_16(1169); +emit_16(1234); +emit_16(1170); +emit_16(1235); +emit_16(1171); +emit_16(1235); +emit_16(1170); +emit_16(1235); +emit_16(1171); +emit_16(1236); +emit_16(1172); +emit_16(1236); +emit_16(1171); +emit_16(1236); +emit_16(1172); +emit_16(1237); +emit_16(1173); +emit_16(1237); +emit_16(1172); +emit_16(1237); +emit_16(1173); +emit_16(1238); +emit_16(1174); +emit_16(1238); +emit_16(1173); +emit_16(1238); +emit_16(1174); +emit_16(1239); +emit_16(1175); +emit_16(1239); +emit_16(1174); +emit_16(1239); +emit_16(1175); +emit_16(1240); +emit_16(1176); +emit_16(1240); +emit_16(1175); +emit_16(1240); +emit_16(1176); +emit_16(1241); +emit_16(1177); +emit_16(1241); +emit_16(1176); +emit_16(1241); +emit_16(1177); +emit_16(1242); +emit_16(1178); +emit_16(1242); +emit_16(1177); +emit_16(1242); +emit_16(1178); +emit_16(1243); +emit_16(1179); +emit_16(1243); +emit_16(1178); +emit_16(1243); +emit_16(1179); +emit_16(1244); +emit_16(1180); +emit_16(1244); +emit_16(1179); +emit_16(1244); +emit_16(1180); +emit_16(1245); +emit_16(1181); +emit_16(1245); +emit_16(1180); +emit_16(1245); +emit_16(1181); +emit_16(1246); +emit_16(1182); +emit_16(1246); +emit_16(1181); +emit_16(1246); +emit_16(1182); +emit_16(1247); +emit_16(1183); +emit_16(1247); +emit_16(1182); +emit_16(1247); +emit_16(1183); +emit_16(1248); +emit_16(1184); +emit_16(1248); +emit_16(1183); +emit_16(1248); +emit_16(1184); +emit_16(1249); +emit_16(1185); +emit_16(1249); +emit_16(1184); +emit_16(1249); +emit_16(1185); +emit_16(1250); +emit_16(1186); +emit_16(1250); +emit_16(1185); +emit_16(1250); +emit_16(1186); +emit_16(1251); +emit_16(1187); +emit_16(1251); +emit_16(1186); +emit_16(1251); +emit_16(1187); +emit_16(1252); +emit_16(1188); +emit_16(1252); +emit_16(1187); +emit_16(1252); +emit_16(1188); +emit_16(1253); +emit_16(1189); +emit_16(1253); +emit_16(1188); +emit_16(1253); +emit_16(1189); +emit_16(1254); +emit_16(1190); +emit_16(1254); +emit_16(1189); +emit_16(1254); +emit_16(1190); +emit_16(1255); +emit_16(1191); +emit_16(1255); +emit_16(1190); +emit_16(1255); +emit_16(1191); +emit_16(1256); +emit_16(1192); +emit_16(1256); +emit_16(1191); +emit_16(1256); +emit_16(1192); +emit_16(1257); +emit_16(1193); +emit_16(1257); +emit_16(1192); +emit_16(1257); +emit_16(1193); +emit_16(1258); +emit_16(1194); +emit_16(1258); +emit_16(1193); +emit_16(1258); +emit_16(1194); +emit_16(1259); +emit_16(1195); +emit_16(1259); +emit_16(1194); +emit_16(1259); +emit_16(1195); +emit_16(1260); +emit_16(1196); +emit_16(1260); +emit_16(1195); +emit_16(1260); +emit_16(1196); +emit_16(1261); +emit_16(1197); +emit_16(1261); +emit_16(1196); +emit_16(1261); +emit_16(1197); +emit_16(1262); +emit_16(1198); +emit_16(1262); +emit_16(1197); +emit_16(1262); +emit_16(1198); +emit_16(1263); +emit_16(1199); +emit_16(1263); +emit_16(1198); +emit_16(1263); +emit_16(1199); +emit_16(1264); +emit_16(1200); +emit_16(1264); +emit_16(1199); +emit_16(1264); +emit_16(1200); +emit_16(1265); +emit_16(1201); +emit_16(1265); +emit_16(1200); +emit_16(1265); +emit_16(1201); +emit_16(1266); +emit_16(1202); +emit_16(1266); +emit_16(1201); +emit_16(1266); +emit_16(1202); +emit_16(1267); +emit_16(1203); +emit_16(1267); +emit_16(1202); +emit_16(1267); +emit_16(1203); +emit_16(1268); +emit_16(1204); +emit_16(1268); +emit_16(1203); +emit_16(1268); +emit_16(1204); +emit_16(1269); +emit_16(1205); +emit_16(1269); +emit_16(1204); +emit_16(1269); +emit_16(1205); +emit_16(1270); +emit_16(1206); +emit_16(1270); +emit_16(1205); +emit_16(1270); +emit_16(1206); +emit_16(1271); +emit_16(1207); +emit_16(1271); +emit_16(1206); +emit_16(1271); +emit_16(1207); +emit_16(1272); +emit_16(1208); +emit_16(1272); +emit_16(1207); +emit_16(1272); +emit_16(1208); +emit_16(1273); +emit_16(1209); +emit_16(1273); +emit_16(1208); +emit_16(1273); +emit_16(1209); +emit_16(1274); +emit_16(1210); +emit_16(1274); +emit_16(1209); +emit_16(1274); +emit_16(1210); +emit_16(1275); +emit_16(1211); +emit_16(1275); +emit_16(1210); +emit_16(1275); +emit_16(1211); +emit_16(1276); +emit_16(1212); +emit_16(1276); +emit_16(1211); +emit_16(1276); +emit_16(1212); +emit_16(1277); +emit_16(1213); +emit_16(1277); +emit_16(1212); +emit_16(1277); +emit_16(1213); +emit_16(1278); +emit_16(1214); +emit_16(1278); +emit_16(1213); +emit_16(1278); +emit_16(1214); +emit_16(1279); +emit_16(1215); +emit_16(1279); +emit_16(1214); +emit_16(1280); +emit_16(1216); +emit_16(1281); +emit_16(1217); +emit_16(1281); +emit_16(1216); +emit_16(1281); +emit_16(1217); +emit_16(1282); +emit_16(1218); +emit_16(1282); +emit_16(1217); +emit_16(1282); +emit_16(1218); +emit_16(1283); +emit_16(1219); +emit_16(1283); +emit_16(1218); +emit_16(1283); +emit_16(1219); +emit_16(1284); +emit_16(1220); +emit_16(1284); +emit_16(1219); +emit_16(1284); +emit_16(1220); +emit_16(1285); +emit_16(1221); +emit_16(1285); +emit_16(1220); +emit_16(1285); +emit_16(1221); +emit_16(1286); +emit_16(1222); +emit_16(1286); +emit_16(1221); +emit_16(1286); +emit_16(1222); +emit_16(1287); +emit_16(1223); +emit_16(1287); +emit_16(1222); +emit_16(1287); +emit_16(1223); +emit_16(1288); +emit_16(1224); +emit_16(1288); +emit_16(1223); +emit_16(1288); +emit_16(1224); +emit_16(1289); +emit_16(1225); +emit_16(1289); +emit_16(1224); +emit_16(1289); +emit_16(1225); +emit_16(1290); +emit_16(1226); +emit_16(1290); +emit_16(1225); +emit_16(1290); +emit_16(1226); +emit_16(1291); +emit_16(1227); +emit_16(1291); +emit_16(1226); +emit_16(1291); +emit_16(1227); +emit_16(1292); +emit_16(1228); +emit_16(1292); +emit_16(1227); +emit_16(1292); +emit_16(1228); +emit_16(1293); +emit_16(1229); +emit_16(1293); +emit_16(1228); +emit_16(1293); +emit_16(1229); +emit_16(1294); +emit_16(1230); +emit_16(1294); +emit_16(1229); +emit_16(1294); +emit_16(1230); +emit_16(1295); +emit_16(1231); +emit_16(1295); +emit_16(1230); +emit_16(1295); +emit_16(1231); +emit_16(1296); +emit_16(1232); +emit_16(1296); +emit_16(1231); +emit_16(1296); +emit_16(1232); +emit_16(1297); +emit_16(1233); +emit_16(1297); +emit_16(1232); +emit_16(1297); +emit_16(1233); +emit_16(1298); +emit_16(1234); +emit_16(1298); +emit_16(1233); +emit_16(1298); +emit_16(1234); +emit_16(1299); +emit_16(1235); +emit_16(1299); +emit_16(1234); +emit_16(1299); +emit_16(1235); +emit_16(1300); +emit_16(1236); +emit_16(1300); +emit_16(1235); +emit_16(1300); +emit_16(1236); +emit_16(1301); +emit_16(1237); +emit_16(1301); +emit_16(1236); +emit_16(1301); +emit_16(1237); +emit_16(1302); +emit_16(1238); +emit_16(1302); +emit_16(1237); +emit_16(1302); +emit_16(1238); +emit_16(1303); +emit_16(1239); +emit_16(1303); +emit_16(1238); +emit_16(1303); +emit_16(1239); +emit_16(1304); +emit_16(1240); +emit_16(1304); +emit_16(1239); +emit_16(1304); +emit_16(1240); +emit_16(1305); +emit_16(1241); +emit_16(1305); +emit_16(1240); +emit_16(1305); +emit_16(1241); +emit_16(1306); +emit_16(1242); +emit_16(1306); +emit_16(1241); +emit_16(1306); +emit_16(1242); +emit_16(1307); +emit_16(1243); +emit_16(1307); +emit_16(1242); +emit_16(1307); +emit_16(1243); +emit_16(1308); +emit_16(1244); +emit_16(1308); +emit_16(1243); +emit_16(1308); +emit_16(1244); +emit_16(1309); +emit_16(1245); +emit_16(1309); +emit_16(1244); +emit_16(1309); +emit_16(1245); +emit_16(1310); +emit_16(1246); +emit_16(1310); +emit_16(1245); +emit_16(1310); +emit_16(1246); +emit_16(1311); +emit_16(1247); +emit_16(1311); +emit_16(1246); +emit_16(1311); +emit_16(1247); +emit_16(1312); +emit_16(1248); +emit_16(1312); +emit_16(1247); +emit_16(1312); +emit_16(1248); +emit_16(1313); +emit_16(1249); +emit_16(1313); +emit_16(1248); +emit_16(1313); +emit_16(1249); +emit_16(1314); +emit_16(1250); +emit_16(1314); +emit_16(1249); +emit_16(1314); +emit_16(1250); +emit_16(1315); +emit_16(1251); +emit_16(1315); +emit_16(1250); +emit_16(1315); +emit_16(1251); +emit_16(1316); +emit_16(1252); +emit_16(1316); +emit_16(1251); +emit_16(1316); +emit_16(1252); +emit_16(1317); +emit_16(1253); +emit_16(1317); +emit_16(1252); +emit_16(1317); +emit_16(1253); +emit_16(1318); +emit_16(1254); +emit_16(1318); +emit_16(1253); +emit_16(1318); +emit_16(1254); +emit_16(1319); +emit_16(1255); +emit_16(1319); +emit_16(1254); +emit_16(1319); +emit_16(1255); +emit_16(1320); +emit_16(1256); +emit_16(1320); +emit_16(1255); +emit_16(1320); +emit_16(1256); +emit_16(1321); +emit_16(1257); +emit_16(1321); +emit_16(1256); +emit_16(1321); +emit_16(1257); +emit_16(1322); +emit_16(1258); +emit_16(1322); +emit_16(1257); +emit_16(1322); +emit_16(1258); +emit_16(1323); +emit_16(1259); +emit_16(1323); +emit_16(1258); +emit_16(1323); +emit_16(1259); +emit_16(1324); +emit_16(1260); +emit_16(1324); +emit_16(1259); +emit_16(1324); +emit_16(1260); +emit_16(1325); +emit_16(1261); +emit_16(1325); +emit_16(1260); +emit_16(1325); +emit_16(1261); +emit_16(1326); +emit_16(1262); +emit_16(1326); +emit_16(1261); +emit_16(1326); +emit_16(1262); +emit_16(1327); +emit_16(1263); +emit_16(1327); +emit_16(1262); +emit_16(1327); +emit_16(1263); +emit_16(1328); +emit_16(1264); +emit_16(1328); +emit_16(1263); +emit_16(1328); +emit_16(1264); +emit_16(1329); +emit_16(1265); +emit_16(1329); +emit_16(1264); +emit_16(1329); +emit_16(1265); +emit_16(1330); +emit_16(1266); +emit_16(1330); +emit_16(1265); +emit_16(1330); +emit_16(1266); +emit_16(1331); +emit_16(1267); +emit_16(1331); +emit_16(1266); +emit_16(1331); +emit_16(1267); +emit_16(1332); +emit_16(1268); +emit_16(1332); +emit_16(1267); +emit_16(1332); +emit_16(1268); +emit_16(1333); +emit_16(1269); +emit_16(1333); +emit_16(1268); +emit_16(1333); +emit_16(1269); +emit_16(1334); +emit_16(1270); +emit_16(1334); +emit_16(1269); +emit_16(1334); +emit_16(1270); +emit_16(1335); +emit_16(1271); +emit_16(1335); +emit_16(1270); +emit_16(1335); +emit_16(1271); +emit_16(1336); +emit_16(1272); +emit_16(1336); +emit_16(1271); +emit_16(1336); +emit_16(1272); +emit_16(1337); +emit_16(1273); +emit_16(1337); +emit_16(1272); +emit_16(1337); +emit_16(1273); +emit_16(1338); +emit_16(1274); +emit_16(1338); +emit_16(1273); +emit_16(1338); +emit_16(1274); +emit_16(1339); +emit_16(1275); +emit_16(1339); +emit_16(1274); +emit_16(1339); +emit_16(1275); +emit_16(1340); +emit_16(1276); +emit_16(1340); +emit_16(1275); +emit_16(1340); +emit_16(1276); +emit_16(1341); +emit_16(1277); +emit_16(1341); +emit_16(1276); +emit_16(1341); +emit_16(1277); +emit_16(1342); +emit_16(1278); +emit_16(1342); +emit_16(1277); +emit_16(1342); +emit_16(1278); +emit_16(1343); +emit_16(1279); +emit_16(1343); +emit_16(1278); +emit_16(1344); +emit_16(1280); +emit_16(1345); +emit_16(1281); +emit_16(1345); +emit_16(1280); +emit_16(1345); +emit_16(1281); +emit_16(1346); +emit_16(1282); +emit_16(1346); +emit_16(1281); +emit_16(1346); +emit_16(1282); +emit_16(1347); +emit_16(1283); +emit_16(1347); +emit_16(1282); +emit_16(1347); +emit_16(1283); +emit_16(1348); +emit_16(1284); +emit_16(1348); +emit_16(1283); +emit_16(1348); +emit_16(1284); +emit_16(1349); +emit_16(1285); +emit_16(1349); +emit_16(1284); +emit_16(1349); +emit_16(1285); +emit_16(1350); +emit_16(1286); +emit_16(1350); +emit_16(1285); +emit_16(1350); +emit_16(1286); +emit_16(1351); +emit_16(1287); +emit_16(1351); +emit_16(1286); +emit_16(1351); +emit_16(1287); +emit_16(1352); +emit_16(1288); +emit_16(1352); +emit_16(1287); +emit_16(1352); +emit_16(1288); +emit_16(1353); +emit_16(1289); +emit_16(1353); +emit_16(1288); +emit_16(1353); +emit_16(1289); +emit_16(1354); +emit_16(1290); +emit_16(1354); +emit_16(1289); +emit_16(1354); +emit_16(1290); +emit_16(1355); +emit_16(1291); +emit_16(1355); +emit_16(1290); +emit_16(1355); +emit_16(1291); +emit_16(1356); +emit_16(1292); +emit_16(1356); +emit_16(1291); +emit_16(1356); +emit_16(1292); +emit_16(1357); +emit_16(1293); +emit_16(1357); +emit_16(1292); +emit_16(1357); +emit_16(1293); +emit_16(1358); +emit_16(1294); +emit_16(1358); +emit_16(1293); +emit_16(1358); +emit_16(1294); +emit_16(1359); +emit_16(1295); +emit_16(1359); +emit_16(1294); +emit_16(1359); +emit_16(1295); +emit_16(1360); +emit_16(1296); +emit_16(1360); +emit_16(1295); +emit_16(1360); +emit_16(1296); +emit_16(1361); +emit_16(1297); +emit_16(1361); +emit_16(1296); +emit_16(1361); +emit_16(1297); +emit_16(1362); +emit_16(1298); +emit_16(1362); +emit_16(1297); +emit_16(1362); +emit_16(1298); +emit_16(1363); +emit_16(1299); +emit_16(1363); +emit_16(1298); +emit_16(1363); +emit_16(1299); +emit_16(1364); +emit_16(1300); +emit_16(1364); +emit_16(1299); +emit_16(1364); +emit_16(1300); +emit_16(1365); +emit_16(1301); +emit_16(1365); +emit_16(1300); +emit_16(1365); +emit_16(1301); +emit_16(1366); +emit_16(1302); +emit_16(1366); +emit_16(1301); +emit_16(1366); +emit_16(1302); +emit_16(1367); +emit_16(1303); +emit_16(1367); +emit_16(1302); +emit_16(1367); +emit_16(1303); +emit_16(1368); +emit_16(1304); +emit_16(1368); +emit_16(1303); +emit_16(1368); +emit_16(1304); +emit_16(1369); +emit_16(1305); +emit_16(1369); +emit_16(1304); +emit_16(1369); +emit_16(1305); +emit_16(1370); +emit_16(1306); +emit_16(1370); +emit_16(1305); +emit_16(1370); +emit_16(1306); +emit_16(1371); +emit_16(1307); +emit_16(1371); +emit_16(1306); +emit_16(1371); +emit_16(1307); +emit_16(1372); +emit_16(1308); +emit_16(1372); +emit_16(1307); +emit_16(1372); +emit_16(1308); +emit_16(1373); +emit_16(1309); +emit_16(1373); +emit_16(1308); +emit_16(1373); +emit_16(1309); +emit_16(1374); +emit_16(1310); +emit_16(1374); +emit_16(1309); +emit_16(1374); +emit_16(1310); +emit_16(1375); +emit_16(1311); +emit_16(1375); +emit_16(1310); +emit_16(1375); +emit_16(1311); +emit_16(1376); +emit_16(1312); +emit_16(1376); +emit_16(1311); +emit_16(1376); +emit_16(1312); +emit_16(1377); +emit_16(1313); +emit_16(1377); +emit_16(1312); +emit_16(1377); +emit_16(1313); +emit_16(1378); +emit_16(1314); +emit_16(1378); +emit_16(1313); +emit_16(1378); +emit_16(1314); +emit_16(1379); +emit_16(1315); +emit_16(1379); +emit_16(1314); +emit_16(1379); +emit_16(1315); +emit_16(1380); +emit_16(1316); +emit_16(1380); +emit_16(1315); +emit_16(1380); +emit_16(1316); +emit_16(1381); +emit_16(1317); +emit_16(1381); +emit_16(1316); +emit_16(1381); +emit_16(1317); +emit_16(1382); +emit_16(1318); +emit_16(1382); +emit_16(1317); +emit_16(1382); +emit_16(1318); +emit_16(1383); +emit_16(1319); +emit_16(1383); +emit_16(1318); +emit_16(1383); +emit_16(1319); +emit_16(1384); +emit_16(1320); +emit_16(1384); +emit_16(1319); +emit_16(1384); +emit_16(1320); +emit_16(1385); +emit_16(1321); +emit_16(1385); +emit_16(1320); +emit_16(1385); +emit_16(1321); +emit_16(1386); +emit_16(1322); +emit_16(1386); +emit_16(1321); +emit_16(1386); +emit_16(1322); +emit_16(1387); +emit_16(1323); +emit_16(1387); +emit_16(1322); +emit_16(1387); +emit_16(1323); +emit_16(1388); +emit_16(1324); +emit_16(1388); +emit_16(1323); +emit_16(1388); +emit_16(1324); +emit_16(1389); +emit_16(1325); +emit_16(1389); +emit_16(1324); +emit_16(1389); +emit_16(1325); +emit_16(1390); +emit_16(1326); +emit_16(1390); +emit_16(1325); +emit_16(1390); +emit_16(1326); +emit_16(1391); +emit_16(1327); +emit_16(1391); +emit_16(1326); +emit_16(1391); +emit_16(1327); +emit_16(1392); +emit_16(1328); +emit_16(1392); +emit_16(1327); +emit_16(1392); +emit_16(1328); +emit_16(1393); +emit_16(1329); +emit_16(1393); +emit_16(1328); +emit_16(1393); +emit_16(1329); +emit_16(1394); +emit_16(1330); +emit_16(1394); +emit_16(1329); +emit_16(1394); +emit_16(1330); +emit_16(1395); +emit_16(1331); +emit_16(1395); +emit_16(1330); +emit_16(1395); +emit_16(1331); +emit_16(1396); +emit_16(1332); +emit_16(1396); +emit_16(1331); +emit_16(1396); +emit_16(1332); +emit_16(1397); +emit_16(1333); +emit_16(1397); +emit_16(1332); +emit_16(1397); +emit_16(1333); +emit_16(1398); +emit_16(1334); +emit_16(1398); +emit_16(1333); +emit_16(1398); +emit_16(1334); +emit_16(1399); +emit_16(1335); +emit_16(1399); +emit_16(1334); +emit_16(1399); +emit_16(1335); +emit_16(1400); +emit_16(1336); +emit_16(1400); +emit_16(1335); +emit_16(1400); +emit_16(1336); +emit_16(1401); +emit_16(1337); +emit_16(1401); +emit_16(1336); +emit_16(1401); +emit_16(1337); +emit_16(1402); +emit_16(1338); +emit_16(1402); +emit_16(1337); +emit_16(1402); +emit_16(1338); +emit_16(1403); +emit_16(1339); +emit_16(1403); +emit_16(1338); +emit_16(1403); +emit_16(1339); +emit_16(1404); +emit_16(1340); +emit_16(1404); +emit_16(1339); +emit_16(1404); +emit_16(1340); +emit_16(1405); +emit_16(1341); +emit_16(1405); +emit_16(1340); +emit_16(1405); +emit_16(1341); +emit_16(1406); +emit_16(1342); +emit_16(1406); +emit_16(1341); +emit_16(1406); +emit_16(1342); +emit_16(1407); +emit_16(1343); +emit_16(1407); +emit_16(1342); +emit_16(1408); +emit_16(1344); +emit_16(1409); +emit_16(1345); +emit_16(1409); +emit_16(1344); +emit_16(1409); +emit_16(1345); +emit_16(1410); +emit_16(1346); +emit_16(1410); +emit_16(1345); +emit_16(1410); +emit_16(1346); +emit_16(1411); +emit_16(1347); +emit_16(1411); +emit_16(1346); +emit_16(1411); +emit_16(1347); +emit_16(1412); +emit_16(1348); +emit_16(1412); +emit_16(1347); +emit_16(1412); +emit_16(1348); +emit_16(1413); +emit_16(1349); +emit_16(1413); +emit_16(1348); +emit_16(1413); +emit_16(1349); +emit_16(1414); +emit_16(1350); +emit_16(1414); +emit_16(1349); +emit_16(1414); +emit_16(1350); +emit_16(1415); +emit_16(1351); +emit_16(1415); +emit_16(1350); +emit_16(1415); +emit_16(1351); +emit_16(1416); +emit_16(1352); +emit_16(1416); +emit_16(1351); +emit_16(1416); +emit_16(1352); +emit_16(1417); +emit_16(1353); +emit_16(1417); +emit_16(1352); +emit_16(1417); +emit_16(1353); +emit_16(1418); +emit_16(1354); +emit_16(1418); +emit_16(1353); +emit_16(1418); +emit_16(1354); +emit_16(1419); +emit_16(1355); +emit_16(1419); +emit_16(1354); +emit_16(1419); +emit_16(1355); +emit_16(1420); +emit_16(1356); +emit_16(1420); +emit_16(1355); +emit_16(1420); +emit_16(1356); +emit_16(1421); +emit_16(1357); +emit_16(1421); +emit_16(1356); +emit_16(1421); +emit_16(1357); +emit_16(1422); +emit_16(1358); +emit_16(1422); +emit_16(1357); +emit_16(1422); +emit_16(1358); +emit_16(1423); +emit_16(1359); +emit_16(1423); +emit_16(1358); +emit_16(1423); +emit_16(1359); +emit_16(1424); +emit_16(1360); +emit_16(1424); +emit_16(1359); +emit_16(1424); +emit_16(1360); +emit_16(1425); +emit_16(1361); +emit_16(1425); +emit_16(1360); +emit_16(1425); +emit_16(1361); +emit_16(1426); +emit_16(1362); +emit_16(1426); +emit_16(1361); +emit_16(1426); +emit_16(1362); +emit_16(1427); +emit_16(1363); +emit_16(1427); +emit_16(1362); +emit_16(1427); +emit_16(1363); +emit_16(1428); +emit_16(1364); +emit_16(1428); +emit_16(1363); +emit_16(1428); +emit_16(1364); +emit_16(1429); +emit_16(1365); +emit_16(1429); +emit_16(1364); +emit_16(1429); +emit_16(1365); +emit_16(1430); +emit_16(1366); +emit_16(1430); +emit_16(1365); +emit_16(1430); +emit_16(1366); +emit_16(1431); +emit_16(1367); +emit_16(1431); +emit_16(1366); +emit_16(1431); +emit_16(1367); +emit_16(1432); +emit_16(1368); +emit_16(1432); +emit_16(1367); +emit_16(1432); +emit_16(1368); +emit_16(1433); +emit_16(1369); +emit_16(1433); +emit_16(1368); +emit_16(1433); +emit_16(1369); +emit_16(1434); +emit_16(1370); +emit_16(1434); +emit_16(1369); +emit_16(1434); +emit_16(1370); +emit_16(1435); +emit_16(1371); +emit_16(1435); +emit_16(1370); +emit_16(1435); +emit_16(1371); +emit_16(1436); +emit_16(1372); +emit_16(1436); +emit_16(1371); +emit_16(1436); +emit_16(1372); +emit_16(1437); +emit_16(1373); +emit_16(1437); +emit_16(1372); +emit_16(1437); +emit_16(1373); +emit_16(1438); +emit_16(1374); +emit_16(1438); +emit_16(1373); +emit_16(1438); +emit_16(1374); +emit_16(1439); +emit_16(1375); +emit_16(1439); +emit_16(1374); +emit_16(1439); +emit_16(1375); +emit_16(1440); +emit_16(1376); +emit_16(1440); +emit_16(1375); +emit_16(1440); +emit_16(1376); +emit_16(1441); +emit_16(1377); +emit_16(1441); +emit_16(1376); +emit_16(1441); +emit_16(1377); +emit_16(1442); +emit_16(1378); +emit_16(1442); +emit_16(1377); +emit_16(1442); +emit_16(1378); +emit_16(1443); +emit_16(1379); +emit_16(1443); +emit_16(1378); +emit_16(1443); +emit_16(1379); +emit_16(1444); +emit_16(1380); +emit_16(1444); +emit_16(1379); +emit_16(1444); +emit_16(1380); +emit_16(1445); +emit_16(1381); +emit_16(1445); +emit_16(1380); +emit_16(1445); +emit_16(1381); +emit_16(1446); +emit_16(1382); +emit_16(1446); +emit_16(1381); +emit_16(1446); +emit_16(1382); +emit_16(1447); +emit_16(1383); +emit_16(1447); +emit_16(1382); +emit_16(1447); +emit_16(1383); +emit_16(1448); +emit_16(1384); +emit_16(1448); +emit_16(1383); +emit_16(1448); +emit_16(1384); +emit_16(1449); +emit_16(1385); +emit_16(1449); +emit_16(1384); +emit_16(1449); +emit_16(1385); +emit_16(1450); +emit_16(1386); +emit_16(1450); +emit_16(1385); +emit_16(1450); +emit_16(1386); +emit_16(1451); +emit_16(1387); +emit_16(1451); +emit_16(1386); +emit_16(1451); +emit_16(1387); +emit_16(1452); +emit_16(1388); +emit_16(1452); +emit_16(1387); +emit_16(1452); +emit_16(1388); +emit_16(1453); +emit_16(1389); +emit_16(1453); +emit_16(1388); +emit_16(1453); +emit_16(1389); +emit_16(1454); +emit_16(1390); +emit_16(1454); +emit_16(1389); +emit_16(1454); +emit_16(1390); +emit_16(1455); +emit_16(1391); +emit_16(1455); +emit_16(1390); +emit_16(1455); +emit_16(1391); +emit_16(1456); +emit_16(1392); +emit_16(1456); +emit_16(1391); +emit_16(1456); +emit_16(1392); +emit_16(1457); +emit_16(1393); +emit_16(1457); +emit_16(1392); +emit_16(1457); +emit_16(1393); +emit_16(1458); +emit_16(1394); +emit_16(1458); +emit_16(1393); +emit_16(1458); +emit_16(1394); +emit_16(1459); +emit_16(1395); +emit_16(1459); +emit_16(1394); +emit_16(1459); +emit_16(1395); +emit_16(1460); +emit_16(1396); +emit_16(1460); +emit_16(1395); +emit_16(1460); +emit_16(1396); +emit_16(1461); +emit_16(1397); +emit_16(1461); +emit_16(1396); +emit_16(1461); +emit_16(1397); +emit_16(1462); +emit_16(1398); +emit_16(1462); +emit_16(1397); +emit_16(1462); +emit_16(1398); +emit_16(1463); +emit_16(1399); +emit_16(1463); +emit_16(1398); +emit_16(1463); +emit_16(1399); +emit_16(1464); +emit_16(1400); +emit_16(1464); +emit_16(1399); +emit_16(1464); +emit_16(1400); +emit_16(1465); +emit_16(1401); +emit_16(1465); +emit_16(1400); +emit_16(1465); +emit_16(1401); +emit_16(1466); +emit_16(1402); +emit_16(1466); +emit_16(1401); +emit_16(1466); +emit_16(1402); +emit_16(1467); +emit_16(1403); +emit_16(1467); +emit_16(1402); +emit_16(1467); +emit_16(1403); +emit_16(1468); +emit_16(1404); +emit_16(1468); +emit_16(1403); +emit_16(1468); +emit_16(1404); +emit_16(1469); +emit_16(1405); +emit_16(1469); +emit_16(1404); +emit_16(1469); +emit_16(1405); +emit_16(1470); +emit_16(1406); +emit_16(1470); +emit_16(1405); +emit_16(1470); +emit_16(1406); +emit_16(1471); +emit_16(1407); +emit_16(1471); +emit_16(1406); +emit_16(1472); +emit_16(1408); +emit_16(1473); +emit_16(1409); +emit_16(1473); +emit_16(1408); +emit_16(1473); +emit_16(1409); +emit_16(1474); +emit_16(1410); +emit_16(1474); +emit_16(1409); +emit_16(1474); +emit_16(1410); +emit_16(1475); +emit_16(1411); +emit_16(1475); +emit_16(1410); +emit_16(1475); +emit_16(1411); +emit_16(1476); +emit_16(1412); +emit_16(1476); +emit_16(1411); +emit_16(1476); +emit_16(1412); +emit_16(1477); +emit_16(1413); +emit_16(1477); +emit_16(1412); +emit_16(1477); +emit_16(1413); +emit_16(1478); +emit_16(1414); +emit_16(1478); +emit_16(1413); +emit_16(1478); +emit_16(1414); +emit_16(1479); +emit_16(1415); +emit_16(1479); +emit_16(1414); +emit_16(1479); +emit_16(1415); +emit_16(1480); +emit_16(1416); +emit_16(1480); +emit_16(1415); +emit_16(1480); +emit_16(1416); +emit_16(1481); +emit_16(1417); +emit_16(1481); +emit_16(1416); +emit_16(1481); +emit_16(1417); +emit_16(1482); +emit_16(1418); +emit_16(1482); +emit_16(1417); +emit_16(1482); +emit_16(1418); +emit_16(1483); +emit_16(1419); +emit_16(1483); +emit_16(1418); +emit_16(1483); +emit_16(1419); +emit_16(1484); +emit_16(1420); +emit_16(1484); +emit_16(1419); +emit_16(1484); +emit_16(1420); +emit_16(1485); +emit_16(1421); +emit_16(1485); +emit_16(1420); +emit_16(1485); +emit_16(1421); +emit_16(1486); +emit_16(1422); +emit_16(1486); +emit_16(1421); +emit_16(1486); +emit_16(1422); +emit_16(1487); +emit_16(1423); +emit_16(1487); +emit_16(1422); +emit_16(1487); +emit_16(1423); +emit_16(1488); +emit_16(1424); +emit_16(1488); +emit_16(1423); +emit_16(1488); +emit_16(1424); +emit_16(1489); +emit_16(1425); +emit_16(1489); +emit_16(1424); +emit_16(1489); +emit_16(1425); +emit_16(1490); +emit_16(1426); +emit_16(1490); +emit_16(1425); +emit_16(1490); +emit_16(1426); +emit_16(1491); +emit_16(1427); +emit_16(1491); +emit_16(1426); +emit_16(1491); +emit_16(1427); +emit_16(1492); +emit_16(1428); +emit_16(1492); +emit_16(1427); +emit_16(1492); +emit_16(1428); +emit_16(1493); +emit_16(1429); +emit_16(1493); +emit_16(1428); +emit_16(1493); +emit_16(1429); +emit_16(1494); +emit_16(1430); +emit_16(1494); +emit_16(1429); +emit_16(1494); +emit_16(1430); +emit_16(1495); +emit_16(1431); +emit_16(1495); +emit_16(1430); +emit_16(1495); +emit_16(1431); +emit_16(1496); +emit_16(1432); +emit_16(1496); +emit_16(1431); +emit_16(1496); +emit_16(1432); +emit_16(1497); +emit_16(1433); +emit_16(1497); +emit_16(1432); +emit_16(1497); +emit_16(1433); +emit_16(1498); +emit_16(1434); +emit_16(1498); +emit_16(1433); +emit_16(1498); +emit_16(1434); +emit_16(1499); +emit_16(1435); +emit_16(1499); +emit_16(1434); +emit_16(1499); +emit_16(1435); +emit_16(1500); +emit_16(1436); +emit_16(1500); +emit_16(1435); +emit_16(1500); +emit_16(1436); +emit_16(1501); +emit_16(1437); +emit_16(1501); +emit_16(1436); +emit_16(1501); +emit_16(1437); +emit_16(1502); +emit_16(1438); +emit_16(1502); +emit_16(1437); +emit_16(1502); +emit_16(1438); +emit_16(1503); +emit_16(1439); +emit_16(1503); +emit_16(1438); +emit_16(1503); +emit_16(1439); +emit_16(1504); +emit_16(1440); +emit_16(1504); +emit_16(1439); +emit_16(1504); +emit_16(1440); +emit_16(1505); +emit_16(1441); +emit_16(1505); +emit_16(1440); +emit_16(1505); +emit_16(1441); +emit_16(1506); +emit_16(1442); +emit_16(1506); +emit_16(1441); +emit_16(1506); +emit_16(1442); +emit_16(1507); +emit_16(1443); +emit_16(1507); +emit_16(1442); +emit_16(1507); +emit_16(1443); +emit_16(1508); +emit_16(1444); +emit_16(1508); +emit_16(1443); +emit_16(1508); +emit_16(1444); +emit_16(1509); +emit_16(1445); +emit_16(1509); +emit_16(1444); +emit_16(1509); +emit_16(1445); +emit_16(1510); +emit_16(1446); +emit_16(1510); +emit_16(1445); +emit_16(1510); +emit_16(1446); +emit_16(1511); +emit_16(1447); +emit_16(1511); +emit_16(1446); +emit_16(1511); +emit_16(1447); +emit_16(1512); +emit_16(1448); +emit_16(1512); +emit_16(1447); +emit_16(1512); +emit_16(1448); +emit_16(1513); +emit_16(1449); +emit_16(1513); +emit_16(1448); +emit_16(1513); +emit_16(1449); +emit_16(1514); +emit_16(1450); +emit_16(1514); +emit_16(1449); +emit_16(1514); +emit_16(1450); +emit_16(1515); +emit_16(1451); +emit_16(1515); +emit_16(1450); +emit_16(1515); +emit_16(1451); +emit_16(1516); +emit_16(1452); +emit_16(1516); +emit_16(1451); +emit_16(1516); +emit_16(1452); +emit_16(1517); +emit_16(1453); +emit_16(1517); +emit_16(1452); +emit_16(1517); +emit_16(1453); +emit_16(1518); +emit_16(1454); +emit_16(1518); +emit_16(1453); +emit_16(1518); +emit_16(1454); +emit_16(1519); +emit_16(1455); +emit_16(1519); +emit_16(1454); +emit_16(1519); +emit_16(1455); +emit_16(1520); +emit_16(1456); +emit_16(1520); +emit_16(1455); +emit_16(1520); +emit_16(1456); +emit_16(1521); +emit_16(1457); +emit_16(1521); +emit_16(1456); +emit_16(1521); +emit_16(1457); +emit_16(1522); +emit_16(1458); +emit_16(1522); +emit_16(1457); +emit_16(1522); +emit_16(1458); +emit_16(1523); +emit_16(1459); +emit_16(1523); +emit_16(1458); +emit_16(1523); +emit_16(1459); +emit_16(1524); +emit_16(1460); +emit_16(1524); +emit_16(1459); +emit_16(1524); +emit_16(1460); +emit_16(1525); +emit_16(1461); +emit_16(1525); +emit_16(1460); +emit_16(1525); +emit_16(1461); +emit_16(1526); +emit_16(1462); +emit_16(1526); +emit_16(1461); +emit_16(1526); +emit_16(1462); +emit_16(1527); +emit_16(1463); +emit_16(1527); +emit_16(1462); +emit_16(1527); +emit_16(1463); +emit_16(1528); +emit_16(1464); +emit_16(1528); +emit_16(1463); +emit_16(1528); +emit_16(1464); +emit_16(1529); +emit_16(1465); +emit_16(1529); +emit_16(1464); +emit_16(1529); +emit_16(1465); +emit_16(1530); +emit_16(1466); +emit_16(1530); +emit_16(1465); +emit_16(1530); +emit_16(1466); +emit_16(1531); +emit_16(1467); +emit_16(1531); +emit_16(1466); +emit_16(1531); +emit_16(1467); +emit_16(1532); +emit_16(1468); +emit_16(1532); +emit_16(1467); +emit_16(1532); +emit_16(1468); +emit_16(1533); +emit_16(1469); +emit_16(1533); +emit_16(1468); +emit_16(1533); +emit_16(1469); +emit_16(1534); +emit_16(1470); +emit_16(1534); +emit_16(1469); +emit_16(1534); +emit_16(1470); +emit_16(1535); +emit_16(1471); +emit_16(1535); +emit_16(1470); +emit_16(1536); +emit_16(1472); +emit_16(1537); +emit_16(1473); +emit_16(1537); +emit_16(1472); +emit_16(1537); +emit_16(1473); +emit_16(1538); +emit_16(1474); +emit_16(1538); +emit_16(1473); +emit_16(1538); +emit_16(1474); +emit_16(1539); +emit_16(1475); +emit_16(1539); +emit_16(1474); +emit_16(1539); +emit_16(1475); +emit_16(1540); +emit_16(1476); +emit_16(1540); +emit_16(1475); +emit_16(1540); +emit_16(1476); +emit_16(1541); +emit_16(1477); +emit_16(1541); +emit_16(1476); +emit_16(1541); +emit_16(1477); +emit_16(1542); +emit_16(1478); +emit_16(1542); +emit_16(1477); +emit_16(1542); +emit_16(1478); +emit_16(1543); +emit_16(1479); +emit_16(1543); +emit_16(1478); +emit_16(1543); +emit_16(1479); +emit_16(1544); +emit_16(1480); +emit_16(1544); +emit_16(1479); +emit_16(1544); +emit_16(1480); +emit_16(1545); +emit_16(1481); +emit_16(1545); +emit_16(1480); +emit_16(1545); +emit_16(1481); +emit_16(1546); +emit_16(1482); +emit_16(1546); +emit_16(1481); +emit_16(1546); +emit_16(1482); +emit_16(1547); +emit_16(1483); +emit_16(1547); +emit_16(1482); +emit_16(1547); +emit_16(1483); +emit_16(1548); +emit_16(1484); +emit_16(1548); +emit_16(1483); +emit_16(1548); +emit_16(1484); +emit_16(1549); +emit_16(1485); +emit_16(1549); +emit_16(1484); +emit_16(1549); +emit_16(1485); +emit_16(1550); +emit_16(1486); +emit_16(1550); +emit_16(1485); +emit_16(1550); +emit_16(1486); +emit_16(1551); +emit_16(1487); +emit_16(1551); +emit_16(1486); +emit_16(1551); +emit_16(1487); +emit_16(1552); +emit_16(1488); +emit_16(1552); +emit_16(1487); +emit_16(1552); +emit_16(1488); +emit_16(1553); +emit_16(1489); +emit_16(1553); +emit_16(1488); +emit_16(1553); +emit_16(1489); +emit_16(1554); +emit_16(1490); +emit_16(1554); +emit_16(1489); +emit_16(1554); +emit_16(1490); +emit_16(1555); +emit_16(1491); +emit_16(1555); +emit_16(1490); +emit_16(1555); +emit_16(1491); +emit_16(1556); +emit_16(1492); +emit_16(1556); +emit_16(1491); +emit_16(1556); +emit_16(1492); +emit_16(1557); +emit_16(1493); +emit_16(1557); +emit_16(1492); +emit_16(1557); +emit_16(1493); +emit_16(1558); +emit_16(1494); +emit_16(1558); +emit_16(1493); +emit_16(1558); +emit_16(1494); +emit_16(1559); +emit_16(1495); +emit_16(1559); +emit_16(1494); +emit_16(1559); +emit_16(1495); +emit_16(1560); +emit_16(1496); +emit_16(1560); +emit_16(1495); +emit_16(1560); +emit_16(1496); +emit_16(1561); +emit_16(1497); +emit_16(1561); +emit_16(1496); +emit_16(1561); +emit_16(1497); +emit_16(1562); +emit_16(1498); +emit_16(1562); +emit_16(1497); +emit_16(1562); +emit_16(1498); +emit_16(1563); +emit_16(1499); +emit_16(1563); +emit_16(1498); +emit_16(1563); +emit_16(1499); +emit_16(1564); +emit_16(1500); +emit_16(1564); +emit_16(1499); +emit_16(1564); +emit_16(1500); +emit_16(1565); +emit_16(1501); +emit_16(1565); +emit_16(1500); +emit_16(1565); +emit_16(1501); +emit_16(1566); +emit_16(1502); +emit_16(1566); +emit_16(1501); +emit_16(1566); +emit_16(1502); +emit_16(1567); +emit_16(1503); +emit_16(1567); +emit_16(1502); +emit_16(1567); +emit_16(1503); +emit_16(1568); +emit_16(1504); +emit_16(1568); +emit_16(1503); +emit_16(1568); +emit_16(1504); +emit_16(1569); +emit_16(1505); +emit_16(1569); +emit_16(1504); +emit_16(1569); +emit_16(1505); +emit_16(1570); +emit_16(1506); +emit_16(1570); +emit_16(1505); +emit_16(1570); +emit_16(1506); +emit_16(1571); +emit_16(1507); +emit_16(1571); +emit_16(1506); +emit_16(1571); +emit_16(1507); +emit_16(1572); +emit_16(1508); +emit_16(1572); +emit_16(1507); +emit_16(1572); +emit_16(1508); +emit_16(1573); +emit_16(1509); +emit_16(1573); +emit_16(1508); +emit_16(1573); +emit_16(1509); +emit_16(1574); +emit_16(1510); +emit_16(1574); +emit_16(1509); +emit_16(1574); +emit_16(1510); +emit_16(1575); +emit_16(1511); +emit_16(1575); +emit_16(1510); +emit_16(1575); +emit_16(1511); +emit_16(1576); +emit_16(1512); +emit_16(1576); +emit_16(1511); +emit_16(1576); +emit_16(1512); +emit_16(1577); +emit_16(1513); +emit_16(1577); +emit_16(1512); +emit_16(1577); +emit_16(1513); +emit_16(1578); +emit_16(1514); +emit_16(1578); +emit_16(1513); +emit_16(1578); +emit_16(1514); +emit_16(1579); +emit_16(1515); +emit_16(1579); +emit_16(1514); +emit_16(1579); +emit_16(1515); +emit_16(1580); +emit_16(1516); +emit_16(1580); +emit_16(1515); +emit_16(1580); +emit_16(1516); +emit_16(1581); +emit_16(1517); +emit_16(1581); +emit_16(1516); +emit_16(1581); +emit_16(1517); +emit_16(1582); +emit_16(1518); +emit_16(1582); +emit_16(1517); +emit_16(1582); +emit_16(1518); +emit_16(1583); +emit_16(1519); +emit_16(1583); +emit_16(1518); +emit_16(1583); +emit_16(1519); +emit_16(1584); +emit_16(1520); +emit_16(1584); +emit_16(1519); +emit_16(1584); +emit_16(1520); +emit_16(1585); +emit_16(1521); +emit_16(1585); +emit_16(1520); +emit_16(1585); +emit_16(1521); +emit_16(1586); +emit_16(1522); +emit_16(1586); +emit_16(1521); +emit_16(1586); +emit_16(1522); +emit_16(1587); +emit_16(1523); +emit_16(1587); +emit_16(1522); +emit_16(1587); +emit_16(1523); +emit_16(1588); +emit_16(1524); +emit_16(1588); +emit_16(1523); +emit_16(1588); +emit_16(1524); +emit_16(1589); +emit_16(1525); +emit_16(1589); +emit_16(1524); +emit_16(1589); +emit_16(1525); +emit_16(1590); +emit_16(1526); +emit_16(1590); +emit_16(1525); +emit_16(1590); +emit_16(1526); +emit_16(1591); +emit_16(1527); +emit_16(1591); +emit_16(1526); +emit_16(1591); +emit_16(1527); +emit_16(1592); +emit_16(1528); +emit_16(1592); +emit_16(1527); +emit_16(1592); +emit_16(1528); +emit_16(1593); +emit_16(1529); +emit_16(1593); +emit_16(1528); +emit_16(1593); +emit_16(1529); +emit_16(1594); +emit_16(1530); +emit_16(1594); +emit_16(1529); +emit_16(1594); +emit_16(1530); +emit_16(1595); +emit_16(1531); +emit_16(1595); +emit_16(1530); +emit_16(1595); +emit_16(1531); +emit_16(1596); +emit_16(1532); +emit_16(1596); +emit_16(1531); +emit_16(1596); +emit_16(1532); +emit_16(1597); +emit_16(1533); +emit_16(1597); +emit_16(1532); +emit_16(1597); +emit_16(1533); +emit_16(1598); +emit_16(1534); +emit_16(1598); +emit_16(1533); +emit_16(1598); +emit_16(1534); +emit_16(1599); +emit_16(1535); +emit_16(1599); +emit_16(1534); +emit_16(1600); +emit_16(1536); +emit_16(1601); +emit_16(1537); +emit_16(1601); +emit_16(1536); +emit_16(1601); +emit_16(1537); +emit_16(1602); +emit_16(1538); +emit_16(1602); +emit_16(1537); +emit_16(1602); +emit_16(1538); +emit_16(1603); +emit_16(1539); +emit_16(1603); +emit_16(1538); +emit_16(1603); +emit_16(1539); +emit_16(1604); +emit_16(1540); +emit_16(1604); +emit_16(1539); +emit_16(1604); +emit_16(1540); +emit_16(1605); +emit_16(1541); +emit_16(1605); +emit_16(1540); +emit_16(1605); +emit_16(1541); +emit_16(1606); +emit_16(1542); +emit_16(1606); +emit_16(1541); +emit_16(1606); +emit_16(1542); +emit_16(1607); +emit_16(1543); +emit_16(1607); +emit_16(1542); +emit_16(1607); +emit_16(1543); +emit_16(1608); +emit_16(1544); +emit_16(1608); +emit_16(1543); +emit_16(1608); +emit_16(1544); +emit_16(1609); +emit_16(1545); +emit_16(1609); +emit_16(1544); +emit_16(1609); +emit_16(1545); +emit_16(1610); +emit_16(1546); +emit_16(1610); +emit_16(1545); +emit_16(1610); +emit_16(1546); +emit_16(1611); +emit_16(1547); +emit_16(1611); +emit_16(1546); +emit_16(1611); +emit_16(1547); +emit_16(1612); +emit_16(1548); +emit_16(1612); +emit_16(1547); +emit_16(1612); +emit_16(1548); +emit_16(1613); +emit_16(1549); +emit_16(1613); +emit_16(1548); +emit_16(1613); +emit_16(1549); +emit_16(1614); +emit_16(1550); +emit_16(1614); +emit_16(1549); +emit_16(1614); +emit_16(1550); +emit_16(1615); +emit_16(1551); +emit_16(1615); +emit_16(1550); +emit_16(1615); +emit_16(1551); +emit_16(1616); +emit_16(1552); +emit_16(1616); +emit_16(1551); +emit_16(1616); +emit_16(1552); +emit_16(1617); +emit_16(1553); +emit_16(1617); +emit_16(1552); +emit_16(1617); +emit_16(1553); +emit_16(1618); +emit_16(1554); +emit_16(1618); +emit_16(1553); +emit_16(1618); +emit_16(1554); +emit_16(1619); +emit_16(1555); +emit_16(1619); +emit_16(1554); +emit_16(1619); +emit_16(1555); +emit_16(1620); +emit_16(1556); +emit_16(1620); +emit_16(1555); +emit_16(1620); +emit_16(1556); +emit_16(1621); +emit_16(1557); +emit_16(1621); +emit_16(1556); +emit_16(1621); +emit_16(1557); +emit_16(1622); +emit_16(1558); +emit_16(1622); +emit_16(1557); +emit_16(1622); +emit_16(1558); +emit_16(1623); +emit_16(1559); +emit_16(1623); +emit_16(1558); +emit_16(1623); +emit_16(1559); +emit_16(1624); +emit_16(1560); +emit_16(1624); +emit_16(1559); +emit_16(1624); +emit_16(1560); +emit_16(1625); +emit_16(1561); +emit_16(1625); +emit_16(1560); +emit_16(1625); +emit_16(1561); +emit_16(1626); +emit_16(1562); +emit_16(1626); +emit_16(1561); +emit_16(1626); +emit_16(1562); +emit_16(1627); +emit_16(1563); +emit_16(1627); +emit_16(1562); +emit_16(1627); +emit_16(1563); +emit_16(1628); +emit_16(1564); +emit_16(1628); +emit_16(1563); +emit_16(1628); +emit_16(1564); +emit_16(1629); +emit_16(1565); +emit_16(1629); +emit_16(1564); +emit_16(1629); +emit_16(1565); +emit_16(1630); +emit_16(1566); +emit_16(1630); +emit_16(1565); +emit_16(1630); +emit_16(1566); +emit_16(1631); +emit_16(1567); +emit_16(1631); +emit_16(1566); +emit_16(1631); +emit_16(1567); +emit_16(1632); +emit_16(1568); +emit_16(1632); +emit_16(1567); +emit_16(1632); +emit_16(1568); +emit_16(1633); +emit_16(1569); +emit_16(1633); +emit_16(1568); +emit_16(1633); +emit_16(1569); +emit_16(1634); +emit_16(1570); +emit_16(1634); +emit_16(1569); +emit_16(1634); +emit_16(1570); +emit_16(1635); +emit_16(1571); +emit_16(1635); +emit_16(1570); +emit_16(1635); +emit_16(1571); +emit_16(1636); +emit_16(1572); +emit_16(1636); +emit_16(1571); +emit_16(1636); +emit_16(1572); +emit_16(1637); +emit_16(1573); +emit_16(1637); +emit_16(1572); +emit_16(1637); +emit_16(1573); +emit_16(1638); +emit_16(1574); +emit_16(1638); +emit_16(1573); +emit_16(1638); +emit_16(1574); +emit_16(1639); +emit_16(1575); +emit_16(1639); +emit_16(1574); +emit_16(1639); +emit_16(1575); +emit_16(1640); +emit_16(1576); +emit_16(1640); +emit_16(1575); +emit_16(1640); +emit_16(1576); +emit_16(1641); +emit_16(1577); +emit_16(1641); +emit_16(1576); +emit_16(1641); +emit_16(1577); +emit_16(1642); +emit_16(1578); +emit_16(1642); +emit_16(1577); +emit_16(1642); +emit_16(1578); +emit_16(1643); +emit_16(1579); +emit_16(1643); +emit_16(1578); +emit_16(1643); +emit_16(1579); +emit_16(1644); +emit_16(1580); +emit_16(1644); +emit_16(1579); +emit_16(1644); +emit_16(1580); +emit_16(1645); +emit_16(1581); +emit_16(1645); +emit_16(1580); +emit_16(1645); +emit_16(1581); +emit_16(1646); +emit_16(1582); +emit_16(1646); +emit_16(1581); +emit_16(1646); +emit_16(1582); +emit_16(1647); +emit_16(1583); +emit_16(1647); +emit_16(1582); +emit_16(1647); +emit_16(1583); +emit_16(1648); +emit_16(1584); +emit_16(1648); +emit_16(1583); +emit_16(1648); +emit_16(1584); +emit_16(1649); +emit_16(1585); +emit_16(1649); +emit_16(1584); +emit_16(1649); +emit_16(1585); +emit_16(1650); +emit_16(1586); +emit_16(1650); +emit_16(1585); +emit_16(1650); +emit_16(1586); +emit_16(1651); +emit_16(1587); +emit_16(1651); +emit_16(1586); +emit_16(1651); +emit_16(1587); +emit_16(1652); +emit_16(1588); +emit_16(1652); +emit_16(1587); +emit_16(1652); +emit_16(1588); +emit_16(1653); +emit_16(1589); +emit_16(1653); +emit_16(1588); +emit_16(1653); +emit_16(1589); +emit_16(1654); +emit_16(1590); +emit_16(1654); +emit_16(1589); +emit_16(1654); +emit_16(1590); +emit_16(1655); +emit_16(1591); +emit_16(1655); +emit_16(1590); +emit_16(1655); +emit_16(1591); +emit_16(1656); +emit_16(1592); +emit_16(1656); +emit_16(1591); +emit_16(1656); +emit_16(1592); +emit_16(1657); +emit_16(1593); +emit_16(1657); +emit_16(1592); +emit_16(1657); +emit_16(1593); +emit_16(1658); +emit_16(1594); +emit_16(1658); +emit_16(1593); +emit_16(1658); +emit_16(1594); +emit_16(1659); +emit_16(1595); +emit_16(1659); +emit_16(1594); +emit_16(1659); +emit_16(1595); +emit_16(1660); +emit_16(1596); +emit_16(1660); +emit_16(1595); +emit_16(1660); +emit_16(1596); +emit_16(1661); +emit_16(1597); +emit_16(1661); +emit_16(1596); +emit_16(1661); +emit_16(1597); +emit_16(1662); +emit_16(1598); +emit_16(1662); +emit_16(1597); +emit_16(1662); +emit_16(1598); +emit_16(1663); +emit_16(1599); +emit_16(1663); +emit_16(1598); +emit_16(1664); +emit_16(1600); +emit_16(1665); +emit_16(1601); +emit_16(1665); +emit_16(1600); +emit_16(1665); +emit_16(1601); +emit_16(1666); +emit_16(1602); +emit_16(1666); +emit_16(1601); +emit_16(1666); +emit_16(1602); +emit_16(1667); +emit_16(1603); +emit_16(1667); +emit_16(1602); +emit_16(1667); +emit_16(1603); +emit_16(1668); +emit_16(1604); +emit_16(1668); +emit_16(1603); +emit_16(1668); +emit_16(1604); +emit_16(1669); +emit_16(1605); +emit_16(1669); +emit_16(1604); +emit_16(1669); +emit_16(1605); +emit_16(1670); +emit_16(1606); +emit_16(1670); +emit_16(1605); +emit_16(1670); +emit_16(1606); +emit_16(1671); +emit_16(1607); +emit_16(1671); +emit_16(1606); +emit_16(1671); +emit_16(1607); +emit_16(1672); +emit_16(1608); +emit_16(1672); +emit_16(1607); +emit_16(1672); +emit_16(1608); +emit_16(1673); +emit_16(1609); +emit_16(1673); +emit_16(1608); +emit_16(1673); +emit_16(1609); +emit_16(1674); +emit_16(1610); +emit_16(1674); +emit_16(1609); +emit_16(1674); +emit_16(1610); +emit_16(1675); +emit_16(1611); +emit_16(1675); +emit_16(1610); +emit_16(1675); +emit_16(1611); +emit_16(1676); +emit_16(1612); +emit_16(1676); +emit_16(1611); +emit_16(1676); +emit_16(1612); +emit_16(1677); +emit_16(1613); +emit_16(1677); +emit_16(1612); +emit_16(1677); +emit_16(1613); +emit_16(1678); +emit_16(1614); +emit_16(1678); +emit_16(1613); +emit_16(1678); +emit_16(1614); +emit_16(1679); +emit_16(1615); +emit_16(1679); +emit_16(1614); +emit_16(1679); +emit_16(1615); +emit_16(1680); +emit_16(1616); +emit_16(1680); +emit_16(1615); +emit_16(1680); +emit_16(1616); +emit_16(1681); +emit_16(1617); +emit_16(1681); +emit_16(1616); +emit_16(1681); +emit_16(1617); +emit_16(1682); +emit_16(1618); +emit_16(1682); +emit_16(1617); +emit_16(1682); +emit_16(1618); +emit_16(1683); +emit_16(1619); +emit_16(1683); +emit_16(1618); +emit_16(1683); +emit_16(1619); +emit_16(1684); +emit_16(1620); +emit_16(1684); +emit_16(1619); +emit_16(1684); +emit_16(1620); +emit_16(1685); +emit_16(1621); +emit_16(1685); +emit_16(1620); +emit_16(1685); +emit_16(1621); +emit_16(1686); +emit_16(1622); +emit_16(1686); +emit_16(1621); +emit_16(1686); +emit_16(1622); +emit_16(1687); +emit_16(1623); +emit_16(1687); +emit_16(1622); +emit_16(1687); +emit_16(1623); +emit_16(1688); +emit_16(1624); +emit_16(1688); +emit_16(1623); +emit_16(1688); +emit_16(1624); +emit_16(1689); +emit_16(1625); +emit_16(1689); +emit_16(1624); +emit_16(1689); +emit_16(1625); +emit_16(1690); +emit_16(1626); +emit_16(1690); +emit_16(1625); +emit_16(1690); +emit_16(1626); +emit_16(1691); +emit_16(1627); +emit_16(1691); +emit_16(1626); +emit_16(1691); +emit_16(1627); +emit_16(1692); +emit_16(1628); +emit_16(1692); +emit_16(1627); +emit_16(1692); +emit_16(1628); +emit_16(1693); +emit_16(1629); +emit_16(1693); +emit_16(1628); +emit_16(1693); +emit_16(1629); +emit_16(1694); +emit_16(1630); +emit_16(1694); +emit_16(1629); +emit_16(1694); +emit_16(1630); +emit_16(1695); +emit_16(1631); +emit_16(1695); +emit_16(1630); +emit_16(1695); +emit_16(1631); +emit_16(1696); +emit_16(1632); +emit_16(1696); +emit_16(1631); +emit_16(1696); +emit_16(1632); +emit_16(1697); +emit_16(1633); +emit_16(1697); +emit_16(1632); +emit_16(1697); +emit_16(1633); +emit_16(1698); +emit_16(1634); +emit_16(1698); +emit_16(1633); +emit_16(1698); +emit_16(1634); +emit_16(1699); +emit_16(1635); +emit_16(1699); +emit_16(1634); +emit_16(1699); +emit_16(1635); +emit_16(1700); +emit_16(1636); +emit_16(1700); +emit_16(1635); +emit_16(1700); +emit_16(1636); +emit_16(1701); +emit_16(1637); +emit_16(1701); +emit_16(1636); +emit_16(1701); +emit_16(1637); +emit_16(1702); +emit_16(1638); +emit_16(1702); +emit_16(1637); +emit_16(1702); +emit_16(1638); +emit_16(1703); +emit_16(1639); +emit_16(1703); +emit_16(1638); +emit_16(1703); +emit_16(1639); +emit_16(1704); +emit_16(1640); +emit_16(1704); +emit_16(1639); +emit_16(1704); +emit_16(1640); +emit_16(1705); +emit_16(1641); +emit_16(1705); +emit_16(1640); +emit_16(1705); +emit_16(1641); +emit_16(1706); +emit_16(1642); +emit_16(1706); +emit_16(1641); +emit_16(1706); +emit_16(1642); +emit_16(1707); +emit_16(1643); +emit_16(1707); +emit_16(1642); +emit_16(1707); +emit_16(1643); +emit_16(1708); +emit_16(1644); +emit_16(1708); +emit_16(1643); +emit_16(1708); +emit_16(1644); +emit_16(1709); +emit_16(1645); +emit_16(1709); +emit_16(1644); +emit_16(1709); +emit_16(1645); +emit_16(1710); +emit_16(1646); +emit_16(1710); +emit_16(1645); +emit_16(1710); +emit_16(1646); +emit_16(1711); +emit_16(1647); +emit_16(1711); +emit_16(1646); +emit_16(1711); +emit_16(1647); +emit_16(1712); +emit_16(1648); +emit_16(1712); +emit_16(1647); +emit_16(1712); +emit_16(1648); +emit_16(1713); +emit_16(1649); +emit_16(1713); +emit_16(1648); +emit_16(1713); +emit_16(1649); +emit_16(1714); +emit_16(1650); +emit_16(1714); +emit_16(1649); +emit_16(1714); +emit_16(1650); +emit_16(1715); +emit_16(1651); +emit_16(1715); +emit_16(1650); +emit_16(1715); +emit_16(1651); +emit_16(1716); +emit_16(1652); +emit_16(1716); +emit_16(1651); +emit_16(1716); +emit_16(1652); +emit_16(1717); +emit_16(1653); +emit_16(1717); +emit_16(1652); +emit_16(1717); +emit_16(1653); +emit_16(1718); +emit_16(1654); +emit_16(1718); +emit_16(1653); +emit_16(1718); +emit_16(1654); +emit_16(1719); +emit_16(1655); +emit_16(1719); +emit_16(1654); +emit_16(1719); +emit_16(1655); +emit_16(1720); +emit_16(1656); +emit_16(1720); +emit_16(1655); +emit_16(1720); +emit_16(1656); +emit_16(1721); +emit_16(1657); +emit_16(1721); +emit_16(1656); +emit_16(1721); +emit_16(1657); +emit_16(1722); +emit_16(1658); +emit_16(1722); +emit_16(1657); +emit_16(1722); +emit_16(1658); +emit_16(1723); +emit_16(1659); +emit_16(1723); +emit_16(1658); +emit_16(1723); +emit_16(1659); +emit_16(1724); +emit_16(1660); +emit_16(1724); +emit_16(1659); +emit_16(1724); +emit_16(1660); +emit_16(1725); +emit_16(1661); +emit_16(1725); +emit_16(1660); +emit_16(1725); +emit_16(1661); +emit_16(1726); +emit_16(1662); +emit_16(1726); +emit_16(1661); +emit_16(1726); +emit_16(1662); +emit_16(1727); +emit_16(1663); +emit_16(1727); +emit_16(1662); +emit_16(1728); +emit_16(1664); +emit_16(1729); +emit_16(1665); +emit_16(1729); +emit_16(1664); +emit_16(1729); +emit_16(1665); +emit_16(1730); +emit_16(1666); +emit_16(1730); +emit_16(1665); +emit_16(1730); +emit_16(1666); +emit_16(1731); +emit_16(1667); +emit_16(1731); +emit_16(1666); +emit_16(1731); +emit_16(1667); +emit_16(1732); +emit_16(1668); +emit_16(1732); +emit_16(1667); +emit_16(1732); +emit_16(1668); +emit_16(1733); +emit_16(1669); +emit_16(1733); +emit_16(1668); +emit_16(1733); +emit_16(1669); +emit_16(1734); +emit_16(1670); +emit_16(1734); +emit_16(1669); +emit_16(1734); +emit_16(1670); +emit_16(1735); +emit_16(1671); +emit_16(1735); +emit_16(1670); +emit_16(1735); +emit_16(1671); +emit_16(1736); +emit_16(1672); +emit_16(1736); +emit_16(1671); +emit_16(1736); +emit_16(1672); +emit_16(1737); +emit_16(1673); +emit_16(1737); +emit_16(1672); +emit_16(1737); +emit_16(1673); +emit_16(1738); +emit_16(1674); +emit_16(1738); +emit_16(1673); +emit_16(1738); +emit_16(1674); +emit_16(1739); +emit_16(1675); +emit_16(1739); +emit_16(1674); +emit_16(1739); +emit_16(1675); +emit_16(1740); +emit_16(1676); +emit_16(1740); +emit_16(1675); +emit_16(1740); +emit_16(1676); +emit_16(1741); +emit_16(1677); +emit_16(1741); +emit_16(1676); +emit_16(1741); +emit_16(1677); +emit_16(1742); +emit_16(1678); +emit_16(1742); +emit_16(1677); +emit_16(1742); +emit_16(1678); +emit_16(1743); +emit_16(1679); +emit_16(1743); +emit_16(1678); +emit_16(1743); +emit_16(1679); +emit_16(1744); +emit_16(1680); +emit_16(1744); +emit_16(1679); +emit_16(1744); +emit_16(1680); +emit_16(1745); +emit_16(1681); +emit_16(1745); +emit_16(1680); +emit_16(1745); +emit_16(1681); +emit_16(1746); +emit_16(1682); +emit_16(1746); +emit_16(1681); +emit_16(1746); +emit_16(1682); +emit_16(1747); +emit_16(1683); +emit_16(1747); +emit_16(1682); +emit_16(1747); +emit_16(1683); +emit_16(1748); +emit_16(1684); +emit_16(1748); +emit_16(1683); +emit_16(1748); +emit_16(1684); +emit_16(1749); +emit_16(1685); +emit_16(1749); +emit_16(1684); +emit_16(1749); +emit_16(1685); +emit_16(1750); +emit_16(1686); +emit_16(1750); +emit_16(1685); +emit_16(1750); +emit_16(1686); +emit_16(1751); +emit_16(1687); +emit_16(1751); +emit_16(1686); +emit_16(1751); +emit_16(1687); +emit_16(1752); +emit_16(1688); +emit_16(1752); +emit_16(1687); +emit_16(1752); +emit_16(1688); +emit_16(1753); +emit_16(1689); +emit_16(1753); +emit_16(1688); +emit_16(1753); +emit_16(1689); +emit_16(1754); +emit_16(1690); +emit_16(1754); +emit_16(1689); +emit_16(1754); +emit_16(1690); +emit_16(1755); +emit_16(1691); +emit_16(1755); +emit_16(1690); +emit_16(1755); +emit_16(1691); +emit_16(1756); +emit_16(1692); +emit_16(1756); +emit_16(1691); +emit_16(1756); +emit_16(1692); +emit_16(1757); +emit_16(1693); +emit_16(1757); +emit_16(1692); +emit_16(1757); +emit_16(1693); +emit_16(1758); +emit_16(1694); +emit_16(1758); +emit_16(1693); +emit_16(1758); +emit_16(1694); +emit_16(1759); +emit_16(1695); +emit_16(1759); +emit_16(1694); +emit_16(1759); +emit_16(1695); +emit_16(1760); +emit_16(1696); +emit_16(1760); +emit_16(1695); +emit_16(1760); +emit_16(1696); +emit_16(1761); +emit_16(1697); +emit_16(1761); +emit_16(1696); +emit_16(1761); +emit_16(1697); +emit_16(1762); +emit_16(1698); +emit_16(1762); +emit_16(1697); +emit_16(1762); +emit_16(1698); +emit_16(1763); +emit_16(1699); +emit_16(1763); +emit_16(1698); +emit_16(1763); +emit_16(1699); +emit_16(1764); +emit_16(1700); +emit_16(1764); +emit_16(1699); +emit_16(1764); +emit_16(1700); +emit_16(1765); +emit_16(1701); +emit_16(1765); +emit_16(1700); +emit_16(1765); +emit_16(1701); +emit_16(1766); +emit_16(1702); +emit_16(1766); +emit_16(1701); +emit_16(1766); +emit_16(1702); +emit_16(1767); +emit_16(1703); +emit_16(1767); +emit_16(1702); +emit_16(1767); +emit_16(1703); +emit_16(1768); +emit_16(1704); +emit_16(1768); +emit_16(1703); +emit_16(1768); +emit_16(1704); +emit_16(1769); +emit_16(1705); +emit_16(1769); +emit_16(1704); +emit_16(1769); +emit_16(1705); +emit_16(1770); +emit_16(1706); +emit_16(1770); +emit_16(1705); +emit_16(1770); +emit_16(1706); +emit_16(1771); +emit_16(1707); +emit_16(1771); +emit_16(1706); +emit_16(1771); +emit_16(1707); +emit_16(1772); +emit_16(1708); +emit_16(1772); +emit_16(1707); +emit_16(1772); +emit_16(1708); +emit_16(1773); +emit_16(1709); +emit_16(1773); +emit_16(1708); +emit_16(1773); +emit_16(1709); +emit_16(1774); +emit_16(1710); +emit_16(1774); +emit_16(1709); +emit_16(1774); +emit_16(1710); +emit_16(1775); +emit_16(1711); +emit_16(1775); +emit_16(1710); +emit_16(1775); +emit_16(1711); +emit_16(1776); +emit_16(1712); +emit_16(1776); +emit_16(1711); +emit_16(1776); +emit_16(1712); +emit_16(1777); +emit_16(1713); +emit_16(1777); +emit_16(1712); +emit_16(1777); +emit_16(1713); +emit_16(1778); +emit_16(1714); +emit_16(1778); +emit_16(1713); +emit_16(1778); +emit_16(1714); +emit_16(1779); +emit_16(1715); +emit_16(1779); +emit_16(1714); +emit_16(1779); +emit_16(1715); +emit_16(1780); +emit_16(1716); +emit_16(1780); +emit_16(1715); +emit_16(1780); +emit_16(1716); +emit_16(1781); +emit_16(1717); +emit_16(1781); +emit_16(1716); +emit_16(1781); +emit_16(1717); +emit_16(1782); +emit_16(1718); +emit_16(1782); +emit_16(1717); +emit_16(1782); +emit_16(1718); +emit_16(1783); +emit_16(1719); +emit_16(1783); +emit_16(1718); +emit_16(1783); +emit_16(1719); +emit_16(1784); +emit_16(1720); +emit_16(1784); +emit_16(1719); +emit_16(1784); +emit_16(1720); +emit_16(1785); +emit_16(1721); +emit_16(1785); +emit_16(1720); +emit_16(1785); +emit_16(1721); +emit_16(1786); +emit_16(1722); +emit_16(1786); +emit_16(1721); +emit_16(1786); +emit_16(1722); +emit_16(1787); +emit_16(1723); +emit_16(1787); +emit_16(1722); +emit_16(1787); +emit_16(1723); +emit_16(1788); +emit_16(1724); +emit_16(1788); +emit_16(1723); +emit_16(1788); +emit_16(1724); +emit_16(1789); +emit_16(1725); +emit_16(1789); +emit_16(1724); +emit_16(1789); +emit_16(1725); +emit_16(1790); +emit_16(1726); +emit_16(1790); +emit_16(1725); +emit_16(1790); +emit_16(1726); +emit_16(1791); +emit_16(1727); +emit_16(1791); +emit_16(1726); +emit_16(1792); +emit_16(1728); +emit_16(1793); +emit_16(1729); +emit_16(1793); +emit_16(1728); +emit_16(1793); +emit_16(1729); +emit_16(1794); +emit_16(1730); +emit_16(1794); +emit_16(1729); +emit_16(1794); +emit_16(1730); +emit_16(1795); +emit_16(1731); +emit_16(1795); +emit_16(1730); +emit_16(1795); +emit_16(1731); +emit_16(1796); +emit_16(1732); +emit_16(1796); +emit_16(1731); +emit_16(1796); +emit_16(1732); +emit_16(1797); +emit_16(1733); +emit_16(1797); +emit_16(1732); +emit_16(1797); +emit_16(1733); +emit_16(1798); +emit_16(1734); +emit_16(1798); +emit_16(1733); +emit_16(1798); +emit_16(1734); +emit_16(1799); +emit_16(1735); +emit_16(1799); +emit_16(1734); +emit_16(1799); +emit_16(1735); +emit_16(1800); +emit_16(1736); +emit_16(1800); +emit_16(1735); +emit_16(1800); +emit_16(1736); +emit_16(1801); +emit_16(1737); +emit_16(1801); +emit_16(1736); +emit_16(1801); +emit_16(1737); +emit_16(1802); +emit_16(1738); +emit_16(1802); +emit_16(1737); +emit_16(1802); +emit_16(1738); +emit_16(1803); +emit_16(1739); +emit_16(1803); +emit_16(1738); +emit_16(1803); +emit_16(1739); +emit_16(1804); +emit_16(1740); +emit_16(1804); +emit_16(1739); +emit_16(1804); +emit_16(1740); +emit_16(1805); +emit_16(1741); +emit_16(1805); +emit_16(1740); +emit_16(1805); +emit_16(1741); +emit_16(1806); +emit_16(1742); +emit_16(1806); +emit_16(1741); +emit_16(1806); +emit_16(1742); +emit_16(1807); +emit_16(1743); +emit_16(1807); +emit_16(1742); +emit_16(1807); +emit_16(1743); +emit_16(1808); +emit_16(1744); +emit_16(1808); +emit_16(1743); +emit_16(1808); +emit_16(1744); +emit_16(1809); +emit_16(1745); +emit_16(1809); +emit_16(1744); +emit_16(1809); +emit_16(1745); +emit_16(1810); +emit_16(1746); +emit_16(1810); +emit_16(1745); +emit_16(1810); +emit_16(1746); +emit_16(1811); +emit_16(1747); +emit_16(1811); +emit_16(1746); +emit_16(1811); +emit_16(1747); +emit_16(1812); +emit_16(1748); +emit_16(1812); +emit_16(1747); +emit_16(1812); +emit_16(1748); +emit_16(1813); +emit_16(1749); +emit_16(1813); +emit_16(1748); +emit_16(1813); +emit_16(1749); +emit_16(1814); +emit_16(1750); +emit_16(1814); +emit_16(1749); +emit_16(1814); +emit_16(1750); +emit_16(1815); +emit_16(1751); +emit_16(1815); +emit_16(1750); +emit_16(1815); +emit_16(1751); +emit_16(1816); +emit_16(1752); +emit_16(1816); +emit_16(1751); +emit_16(1816); +emit_16(1752); +emit_16(1817); +emit_16(1753); +emit_16(1817); +emit_16(1752); +emit_16(1817); +emit_16(1753); +emit_16(1818); +emit_16(1754); +emit_16(1818); +emit_16(1753); +emit_16(1818); +emit_16(1754); +emit_16(1819); +emit_16(1755); +emit_16(1819); +emit_16(1754); +emit_16(1819); +emit_16(1755); +emit_16(1820); +emit_16(1756); +emit_16(1820); +emit_16(1755); +emit_16(1820); +emit_16(1756); +emit_16(1821); +emit_16(1757); +emit_16(1821); +emit_16(1756); +emit_16(1821); +emit_16(1757); +emit_16(1822); +emit_16(1758); +emit_16(1822); +emit_16(1757); +emit_16(1822); +emit_16(1758); +emit_16(1823); +emit_16(1759); +emit_16(1823); +emit_16(1758); +emit_16(1823); +emit_16(1759); +emit_16(1824); +emit_16(1760); +emit_16(1824); +emit_16(1759); +emit_16(1824); +emit_16(1760); +emit_16(1825); +emit_16(1761); +emit_16(1825); +emit_16(1760); +emit_16(1825); +emit_16(1761); +emit_16(1826); +emit_16(1762); +emit_16(1826); +emit_16(1761); +emit_16(1826); +emit_16(1762); +emit_16(1827); +emit_16(1763); +emit_16(1827); +emit_16(1762); +emit_16(1827); +emit_16(1763); +emit_16(1828); +emit_16(1764); +emit_16(1828); +emit_16(1763); +emit_16(1828); +emit_16(1764); +emit_16(1829); +emit_16(1765); +emit_16(1829); +emit_16(1764); +emit_16(1829); +emit_16(1765); +emit_16(1830); +emit_16(1766); +emit_16(1830); +emit_16(1765); +emit_16(1830); +emit_16(1766); +emit_16(1831); +emit_16(1767); +emit_16(1831); +emit_16(1766); +emit_16(1831); +emit_16(1767); +emit_16(1832); +emit_16(1768); +emit_16(1832); +emit_16(1767); +emit_16(1832); +emit_16(1768); +emit_16(1833); +emit_16(1769); +emit_16(1833); +emit_16(1768); +emit_16(1833); +emit_16(1769); +emit_16(1834); +emit_16(1770); +emit_16(1834); +emit_16(1769); +emit_16(1834); +emit_16(1770); +emit_16(1835); +emit_16(1771); +emit_16(1835); +emit_16(1770); +emit_16(1835); +emit_16(1771); +emit_16(1836); +emit_16(1772); +emit_16(1836); +emit_16(1771); +emit_16(1836); +emit_16(1772); +emit_16(1837); +emit_16(1773); +emit_16(1837); +emit_16(1772); +emit_16(1837); +emit_16(1773); +emit_16(1838); +emit_16(1774); +emit_16(1838); +emit_16(1773); +emit_16(1838); +emit_16(1774); +emit_16(1839); +emit_16(1775); +emit_16(1839); +emit_16(1774); +emit_16(1839); +emit_16(1775); +emit_16(1840); +emit_16(1776); +emit_16(1840); +emit_16(1775); +emit_16(1840); +emit_16(1776); +emit_16(1841); +emit_16(1777); +emit_16(1841); +emit_16(1776); +emit_16(1841); +emit_16(1777); +emit_16(1842); +emit_16(1778); +emit_16(1842); +emit_16(1777); +emit_16(1842); +emit_16(1778); +emit_16(1843); +emit_16(1779); +emit_16(1843); +emit_16(1778); +emit_16(1843); +emit_16(1779); +emit_16(1844); +emit_16(1780); +emit_16(1844); +emit_16(1779); +emit_16(1844); +emit_16(1780); +emit_16(1845); +emit_16(1781); +emit_16(1845); +emit_16(1780); +emit_16(1845); +emit_16(1781); +emit_16(1846); +emit_16(1782); +emit_16(1846); +emit_16(1781); +emit_16(1846); +emit_16(1782); +emit_16(1847); +emit_16(1783); +emit_16(1847); +emit_16(1782); +emit_16(1847); +emit_16(1783); +emit_16(1848); +emit_16(1784); +emit_16(1848); +emit_16(1783); +emit_16(1848); +emit_16(1784); +emit_16(1849); +emit_16(1785); +emit_16(1849); +emit_16(1784); +emit_16(1849); +emit_16(1785); +emit_16(1850); +emit_16(1786); +emit_16(1850); +emit_16(1785); +emit_16(1850); +emit_16(1786); +emit_16(1851); +emit_16(1787); +emit_16(1851); +emit_16(1786); +emit_16(1851); +emit_16(1787); +emit_16(1852); +emit_16(1788); +emit_16(1852); +emit_16(1787); +emit_16(1852); +emit_16(1788); +emit_16(1853); +emit_16(1789); +emit_16(1853); +emit_16(1788); +emit_16(1853); +emit_16(1789); +emit_16(1854); +emit_16(1790); +emit_16(1854); +emit_16(1789); +emit_16(1854); +emit_16(1790); +emit_16(1855); +emit_16(1791); +emit_16(1855); +emit_16(1790); +emit_16(1856); +emit_16(1792); +emit_16(1857); +emit_16(1793); +emit_16(1857); +emit_16(1792); +emit_16(1857); +emit_16(1793); +emit_16(1858); +emit_16(1794); +emit_16(1858); +emit_16(1793); +emit_16(1858); +emit_16(1794); +emit_16(1859); +emit_16(1795); +emit_16(1859); +emit_16(1794); +emit_16(1859); +emit_16(1795); +emit_16(1860); +emit_16(1796); +emit_16(1860); +emit_16(1795); +emit_16(1860); +emit_16(1796); +emit_16(1861); +emit_16(1797); +emit_16(1861); +emit_16(1796); +emit_16(1861); +emit_16(1797); +emit_16(1862); +emit_16(1798); +emit_16(1862); +emit_16(1797); +emit_16(1862); +emit_16(1798); +emit_16(1863); +emit_16(1799); +emit_16(1863); +emit_16(1798); +emit_16(1863); +emit_16(1799); +emit_16(1864); +emit_16(1800); +emit_16(1864); +emit_16(1799); +emit_16(1864); +emit_16(1800); +emit_16(1865); +emit_16(1801); +emit_16(1865); +emit_16(1800); +emit_16(1865); +emit_16(1801); +emit_16(1866); +emit_16(1802); +emit_16(1866); +emit_16(1801); +emit_16(1866); +emit_16(1802); +emit_16(1867); +emit_16(1803); +emit_16(1867); +emit_16(1802); +emit_16(1867); +emit_16(1803); +emit_16(1868); +emit_16(1804); +emit_16(1868); +emit_16(1803); +emit_16(1868); +emit_16(1804); +emit_16(1869); +emit_16(1805); +emit_16(1869); +emit_16(1804); +emit_16(1869); +emit_16(1805); +emit_16(1870); +emit_16(1806); +emit_16(1870); +emit_16(1805); +emit_16(1870); +emit_16(1806); +emit_16(1871); +emit_16(1807); +emit_16(1871); +emit_16(1806); +emit_16(1871); +emit_16(1807); +emit_16(1872); +emit_16(1808); +emit_16(1872); +emit_16(1807); +emit_16(1872); +emit_16(1808); +emit_16(1873); +emit_16(1809); +emit_16(1873); +emit_16(1808); +emit_16(1873); +emit_16(1809); +emit_16(1874); +emit_16(1810); +emit_16(1874); +emit_16(1809); +emit_16(1874); +emit_16(1810); +emit_16(1875); +emit_16(1811); +emit_16(1875); +emit_16(1810); +emit_16(1875); +emit_16(1811); +emit_16(1876); +emit_16(1812); +emit_16(1876); +emit_16(1811); +emit_16(1876); +emit_16(1812); +emit_16(1877); +emit_16(1813); +emit_16(1877); +emit_16(1812); +emit_16(1877); +emit_16(1813); +emit_16(1878); +emit_16(1814); +emit_16(1878); +emit_16(1813); +emit_16(1878); +emit_16(1814); +emit_16(1879); +emit_16(1815); +emit_16(1879); +emit_16(1814); +emit_16(1879); +emit_16(1815); +emit_16(1880); +emit_16(1816); +emit_16(1880); +emit_16(1815); +emit_16(1880); +emit_16(1816); +emit_16(1881); +emit_16(1817); +emit_16(1881); +emit_16(1816); +emit_16(1881); +emit_16(1817); +emit_16(1882); +emit_16(1818); +emit_16(1882); +emit_16(1817); +emit_16(1882); +emit_16(1818); +emit_16(1883); +emit_16(1819); +emit_16(1883); +emit_16(1818); +emit_16(1883); +emit_16(1819); +emit_16(1884); +emit_16(1820); +emit_16(1884); +emit_16(1819); +emit_16(1884); +emit_16(1820); +emit_16(1885); +emit_16(1821); +emit_16(1885); +emit_16(1820); +emit_16(1885); +emit_16(1821); +emit_16(1886); +emit_16(1822); +emit_16(1886); +emit_16(1821); +emit_16(1886); +emit_16(1822); +emit_16(1887); +emit_16(1823); +emit_16(1887); +emit_16(1822); +emit_16(1887); +emit_16(1823); +emit_16(1888); +emit_16(1824); +emit_16(1888); +emit_16(1823); +emit_16(1888); +emit_16(1824); +emit_16(1889); +emit_16(1825); +emit_16(1889); +emit_16(1824); +emit_16(1889); +emit_16(1825); +emit_16(1890); +emit_16(1826); +emit_16(1890); +emit_16(1825); +emit_16(1890); +emit_16(1826); +emit_16(1891); +emit_16(1827); +emit_16(1891); +emit_16(1826); +emit_16(1891); +emit_16(1827); +emit_16(1892); +emit_16(1828); +emit_16(1892); +emit_16(1827); +emit_16(1892); +emit_16(1828); +emit_16(1893); +emit_16(1829); +emit_16(1893); +emit_16(1828); +emit_16(1893); +emit_16(1829); +emit_16(1894); +emit_16(1830); +emit_16(1894); +emit_16(1829); +emit_16(1894); +emit_16(1830); +emit_16(1895); +emit_16(1831); +emit_16(1895); +emit_16(1830); +emit_16(1895); +emit_16(1831); +emit_16(1896); +emit_16(1832); +emit_16(1896); +emit_16(1831); +emit_16(1896); +emit_16(1832); +emit_16(1897); +emit_16(1833); +emit_16(1897); +emit_16(1832); +emit_16(1897); +emit_16(1833); +emit_16(1898); +emit_16(1834); +emit_16(1898); +emit_16(1833); +emit_16(1898); +emit_16(1834); +emit_16(1899); +emit_16(1835); +emit_16(1899); +emit_16(1834); +emit_16(1899); +emit_16(1835); +emit_16(1900); +emit_16(1836); +emit_16(1900); +emit_16(1835); +emit_16(1900); +emit_16(1836); +emit_16(1901); +emit_16(1837); +emit_16(1901); +emit_16(1836); +emit_16(1901); +emit_16(1837); +emit_16(1902); +emit_16(1838); +emit_16(1902); +emit_16(1837); +emit_16(1902); +emit_16(1838); +emit_16(1903); +emit_16(1839); +emit_16(1903); +emit_16(1838); +emit_16(1903); +emit_16(1839); +emit_16(1904); +emit_16(1840); +emit_16(1904); +emit_16(1839); +emit_16(1904); +emit_16(1840); +emit_16(1905); +emit_16(1841); +emit_16(1905); +emit_16(1840); +emit_16(1905); +emit_16(1841); +emit_16(1906); +emit_16(1842); +emit_16(1906); +emit_16(1841); +emit_16(1906); +emit_16(1842); +emit_16(1907); +emit_16(1843); +emit_16(1907); +emit_16(1842); +emit_16(1907); +emit_16(1843); +emit_16(1908); +emit_16(1844); +emit_16(1908); +emit_16(1843); +emit_16(1908); +emit_16(1844); +emit_16(1909); +emit_16(1845); +emit_16(1909); +emit_16(1844); +emit_16(1909); +emit_16(1845); +emit_16(1910); +emit_16(1846); +emit_16(1910); +emit_16(1845); +emit_16(1910); +emit_16(1846); +emit_16(1911); +emit_16(1847); +emit_16(1911); +emit_16(1846); +emit_16(1911); +emit_16(1847); +emit_16(1912); +emit_16(1848); +emit_16(1912); +emit_16(1847); +emit_16(1912); +emit_16(1848); +emit_16(1913); +emit_16(1849); +emit_16(1913); +emit_16(1848); +emit_16(1913); +emit_16(1849); +emit_16(1914); +emit_16(1850); +emit_16(1914); +emit_16(1849); +emit_16(1914); +emit_16(1850); +emit_16(1915); +emit_16(1851); +emit_16(1915); +emit_16(1850); +emit_16(1915); +emit_16(1851); +emit_16(1916); +emit_16(1852); +emit_16(1916); +emit_16(1851); +emit_16(1916); +emit_16(1852); +emit_16(1917); +emit_16(1853); +emit_16(1917); +emit_16(1852); +emit_16(1917); +emit_16(1853); +emit_16(1918); +emit_16(1854); +emit_16(1918); +emit_16(1853); +emit_16(1918); +emit_16(1854); +emit_16(1919); +emit_16(1855); +emit_16(1919); +emit_16(1854); +emit_16(1920); +emit_16(1856); +emit_16(1921); +emit_16(1857); +emit_16(1921); +emit_16(1856); +emit_16(1921); +emit_16(1857); +emit_16(1922); +emit_16(1858); +emit_16(1922); +emit_16(1857); +emit_16(1922); +emit_16(1858); +emit_16(1923); +emit_16(1859); +emit_16(1923); +emit_16(1858); +emit_16(1923); +emit_16(1859); +emit_16(1924); +emit_16(1860); +emit_16(1924); +emit_16(1859); +emit_16(1924); +emit_16(1860); +emit_16(1925); +emit_16(1861); +emit_16(1925); +emit_16(1860); +emit_16(1925); +emit_16(1861); +emit_16(1926); +emit_16(1862); +emit_16(1926); +emit_16(1861); +emit_16(1926); +emit_16(1862); +emit_16(1927); +emit_16(1863); +emit_16(1927); +emit_16(1862); +emit_16(1927); +emit_16(1863); +emit_16(1928); +emit_16(1864); +emit_16(1928); +emit_16(1863); +emit_16(1928); +emit_16(1864); +emit_16(1929); +emit_16(1865); +emit_16(1929); +emit_16(1864); +emit_16(1929); +emit_16(1865); +emit_16(1930); +emit_16(1866); +emit_16(1930); +emit_16(1865); +emit_16(1930); +emit_16(1866); +emit_16(1931); +emit_16(1867); +emit_16(1931); +emit_16(1866); +emit_16(1931); +emit_16(1867); +emit_16(1932); +emit_16(1868); +emit_16(1932); +emit_16(1867); +emit_16(1932); +emit_16(1868); +emit_16(1933); +emit_16(1869); +emit_16(1933); +emit_16(1868); +emit_16(1933); +emit_16(1869); +emit_16(1934); +emit_16(1870); +emit_16(1934); +emit_16(1869); +emit_16(1934); +emit_16(1870); +emit_16(1935); +emit_16(1871); +emit_16(1935); +emit_16(1870); +emit_16(1935); +emit_16(1871); +emit_16(1936); +emit_16(1872); +emit_16(1936); +emit_16(1871); +emit_16(1936); +emit_16(1872); +emit_16(1937); +emit_16(1873); +emit_16(1937); +emit_16(1872); +emit_16(1937); +emit_16(1873); +emit_16(1938); +emit_16(1874); +emit_16(1938); +emit_16(1873); +emit_16(1938); +emit_16(1874); +emit_16(1939); +emit_16(1875); +emit_16(1939); +emit_16(1874); +emit_16(1939); +emit_16(1875); +emit_16(1940); +emit_16(1876); +emit_16(1940); +emit_16(1875); +emit_16(1940); +emit_16(1876); +emit_16(1941); +emit_16(1877); +emit_16(1941); +emit_16(1876); +emit_16(1941); +emit_16(1877); +emit_16(1942); +emit_16(1878); +emit_16(1942); +emit_16(1877); +emit_16(1942); +emit_16(1878); +emit_16(1943); +emit_16(1879); +emit_16(1943); +emit_16(1878); +emit_16(1943); +emit_16(1879); +emit_16(1944); +emit_16(1880); +emit_16(1944); +emit_16(1879); +emit_16(1944); +emit_16(1880); +emit_16(1945); +emit_16(1881); +emit_16(1945); +emit_16(1880); +emit_16(1945); +emit_16(1881); +emit_16(1946); +emit_16(1882); +emit_16(1946); +emit_16(1881); +emit_16(1946); +emit_16(1882); +emit_16(1947); +emit_16(1883); +emit_16(1947); +emit_16(1882); +emit_16(1947); +emit_16(1883); +emit_16(1948); +emit_16(1884); +emit_16(1948); +emit_16(1883); +emit_16(1948); +emit_16(1884); +emit_16(1949); +emit_16(1885); +emit_16(1949); +emit_16(1884); +emit_16(1949); +emit_16(1885); +emit_16(1950); +emit_16(1886); +emit_16(1950); +emit_16(1885); +emit_16(1950); +emit_16(1886); +emit_16(1951); +emit_16(1887); +emit_16(1951); +emit_16(1886); +emit_16(1951); +emit_16(1887); +emit_16(1952); +emit_16(1888); +emit_16(1952); +emit_16(1887); +emit_16(1952); +emit_16(1888); +emit_16(1953); +emit_16(1889); +emit_16(1953); +emit_16(1888); +emit_16(1953); +emit_16(1889); +emit_16(1954); +emit_16(1890); +emit_16(1954); +emit_16(1889); +emit_16(1954); +emit_16(1890); +emit_16(1955); +emit_16(1891); +emit_16(1955); +emit_16(1890); +emit_16(1955); +emit_16(1891); +emit_16(1956); +emit_16(1892); +emit_16(1956); +emit_16(1891); +emit_16(1956); +emit_16(1892); +emit_16(1957); +emit_16(1893); +emit_16(1957); +emit_16(1892); +emit_16(1957); +emit_16(1893); +emit_16(1958); +emit_16(1894); +emit_16(1958); +emit_16(1893); +emit_16(1958); +emit_16(1894); +emit_16(1959); +emit_16(1895); +emit_16(1959); +emit_16(1894); +emit_16(1959); +emit_16(1895); +emit_16(1960); +emit_16(1896); +emit_16(1960); +emit_16(1895); +emit_16(1960); +emit_16(1896); +emit_16(1961); +emit_16(1897); +emit_16(1961); +emit_16(1896); +emit_16(1961); +emit_16(1897); +emit_16(1962); +emit_16(1898); +emit_16(1962); +emit_16(1897); +emit_16(1962); +emit_16(1898); +emit_16(1963); +emit_16(1899); +emit_16(1963); +emit_16(1898); +emit_16(1963); +emit_16(1899); +emit_16(1964); +emit_16(1900); +emit_16(1964); +emit_16(1899); +emit_16(1964); +emit_16(1900); +emit_16(1965); +emit_16(1901); +emit_16(1965); +emit_16(1900); +emit_16(1965); +emit_16(1901); +emit_16(1966); +emit_16(1902); +emit_16(1966); +emit_16(1901); +emit_16(1966); +emit_16(1902); +emit_16(1967); +emit_16(1903); +emit_16(1967); +emit_16(1902); +emit_16(1967); +emit_16(1903); +emit_16(1968); +emit_16(1904); +emit_16(1968); +emit_16(1903); +emit_16(1968); +emit_16(1904); +emit_16(1969); +emit_16(1905); +emit_16(1969); +emit_16(1904); +emit_16(1969); +emit_16(1905); +emit_16(1970); +emit_16(1906); +emit_16(1970); +emit_16(1905); +emit_16(1970); +emit_16(1906); +emit_16(1971); +emit_16(1907); +emit_16(1971); +emit_16(1906); +emit_16(1971); +emit_16(1907); +emit_16(1972); +emit_16(1908); +emit_16(1972); +emit_16(1907); +emit_16(1972); +emit_16(1908); +emit_16(1973); +emit_16(1909); +emit_16(1973); +emit_16(1908); +emit_16(1973); +emit_16(1909); +emit_16(1974); +emit_16(1910); +emit_16(1974); +emit_16(1909); +emit_16(1974); +emit_16(1910); +emit_16(1975); +emit_16(1911); +emit_16(1975); +emit_16(1910); +emit_16(1975); +emit_16(1911); +emit_16(1976); +emit_16(1912); +emit_16(1976); +emit_16(1911); +emit_16(1976); +emit_16(1912); +emit_16(1977); +emit_16(1913); +emit_16(1977); +emit_16(1912); +emit_16(1977); +emit_16(1913); +emit_16(1978); +emit_16(1914); +emit_16(1978); +emit_16(1913); +emit_16(1978); +emit_16(1914); +emit_16(1979); +emit_16(1915); +emit_16(1979); +emit_16(1914); +emit_16(1979); +emit_16(1915); +emit_16(1980); +emit_16(1916); +emit_16(1980); +emit_16(1915); +emit_16(1980); +emit_16(1916); +emit_16(1981); +emit_16(1917); +emit_16(1981); +emit_16(1916); +emit_16(1981); +emit_16(1917); +emit_16(1982); +emit_16(1918); +emit_16(1982); +emit_16(1917); +emit_16(1982); +emit_16(1918); +emit_16(1983); +emit_16(1919); +emit_16(1983); +emit_16(1918); +emit_16(1984); +emit_16(1920); +emit_16(1985); +emit_16(1921); +emit_16(1985); +emit_16(1920); +emit_16(1985); +emit_16(1921); +emit_16(1986); +emit_16(1922); +emit_16(1986); +emit_16(1921); +emit_16(1986); +emit_16(1922); +emit_16(1987); +emit_16(1923); +emit_16(1987); +emit_16(1922); +emit_16(1987); +emit_16(1923); +emit_16(1988); +emit_16(1924); +emit_16(1988); +emit_16(1923); +emit_16(1988); +emit_16(1924); +emit_16(1989); +emit_16(1925); +emit_16(1989); +emit_16(1924); +emit_16(1989); +emit_16(1925); +emit_16(1990); +emit_16(1926); +emit_16(1990); +emit_16(1925); +emit_16(1990); +emit_16(1926); +emit_16(1991); +emit_16(1927); +emit_16(1991); +emit_16(1926); +emit_16(1991); +emit_16(1927); +emit_16(1992); +emit_16(1928); +emit_16(1992); +emit_16(1927); +emit_16(1992); +emit_16(1928); +emit_16(1993); +emit_16(1929); +emit_16(1993); +emit_16(1928); +emit_16(1993); +emit_16(1929); +emit_16(1994); +emit_16(1930); +emit_16(1994); +emit_16(1929); +emit_16(1994); +emit_16(1930); +emit_16(1995); +emit_16(1931); +emit_16(1995); +emit_16(1930); +emit_16(1995); +emit_16(1931); +emit_16(1996); +emit_16(1932); +emit_16(1996); +emit_16(1931); +emit_16(1996); +emit_16(1932); +emit_16(1997); +emit_16(1933); +emit_16(1997); +emit_16(1932); +emit_16(1997); +emit_16(1933); +emit_16(1998); +emit_16(1934); +emit_16(1998); +emit_16(1933); +emit_16(1998); +emit_16(1934); +emit_16(1999); +emit_16(1935); +emit_16(1999); +emit_16(1934); +emit_16(1999); +emit_16(1935); +emit_16(2000); +emit_16(1936); +emit_16(2000); +emit_16(1935); +emit_16(2000); +emit_16(1936); +emit_16(2001); +emit_16(1937); +emit_16(2001); +emit_16(1936); +emit_16(2001); +emit_16(1937); +emit_16(2002); +emit_16(1938); +emit_16(2002); +emit_16(1937); +emit_16(2002); +emit_16(1938); +emit_16(2003); +emit_16(1939); +emit_16(2003); +emit_16(1938); +emit_16(2003); +emit_16(1939); +emit_16(2004); +emit_16(1940); +emit_16(2004); +emit_16(1939); +emit_16(2004); +emit_16(1940); +emit_16(2005); +emit_16(1941); +emit_16(2005); +emit_16(1940); +emit_16(2005); +emit_16(1941); +emit_16(2006); +emit_16(1942); +emit_16(2006); +emit_16(1941); +emit_16(2006); +emit_16(1942); +emit_16(2007); +emit_16(1943); +emit_16(2007); +emit_16(1942); +emit_16(2007); +emit_16(1943); +emit_16(2008); +emit_16(1944); +emit_16(2008); +emit_16(1943); +emit_16(2008); +emit_16(1944); +emit_16(2009); +emit_16(1945); +emit_16(2009); +emit_16(1944); +emit_16(2009); +emit_16(1945); +emit_16(2010); +emit_16(1946); +emit_16(2010); +emit_16(1945); +emit_16(2010); +emit_16(1946); +emit_16(2011); +emit_16(1947); +emit_16(2011); +emit_16(1946); +emit_16(2011); +emit_16(1947); +emit_16(2012); +emit_16(1948); +emit_16(2012); +emit_16(1947); +emit_16(2012); +emit_16(1948); +emit_16(2013); +emit_16(1949); +emit_16(2013); +emit_16(1948); +emit_16(2013); +emit_16(1949); +emit_16(2014); +emit_16(1950); +emit_16(2014); +emit_16(1949); +emit_16(2014); +emit_16(1950); +emit_16(2015); +emit_16(1951); +emit_16(2015); +emit_16(1950); +emit_16(2015); +emit_16(1951); +emit_16(2016); +emit_16(1952); +emit_16(2016); +emit_16(1951); +emit_16(2016); +emit_16(1952); +emit_16(2017); +emit_16(1953); +emit_16(2017); +emit_16(1952); +emit_16(2017); +emit_16(1953); +emit_16(2018); +emit_16(1954); +emit_16(2018); +emit_16(1953); +emit_16(2018); +emit_16(1954); +emit_16(2019); +emit_16(1955); +emit_16(2019); +emit_16(1954); +emit_16(2019); +emit_16(1955); +emit_16(2020); +emit_16(1956); +emit_16(2020); +emit_16(1955); +emit_16(2020); +emit_16(1956); +emit_16(2021); +emit_16(1957); +emit_16(2021); +emit_16(1956); +emit_16(2021); +emit_16(1957); +emit_16(2022); +emit_16(1958); +emit_16(2022); +emit_16(1957); +emit_16(2022); +emit_16(1958); +emit_16(2023); +emit_16(1959); +emit_16(2023); +emit_16(1958); +emit_16(2023); +emit_16(1959); +emit_16(2024); +emit_16(1960); +emit_16(2024); +emit_16(1959); +emit_16(2024); +emit_16(1960); +emit_16(2025); +emit_16(1961); +emit_16(2025); +emit_16(1960); +emit_16(2025); +emit_16(1961); +emit_16(2026); +emit_16(1962); +emit_16(2026); +emit_16(1961); +emit_16(2026); +emit_16(1962); +emit_16(2027); +emit_16(1963); +emit_16(2027); +emit_16(1962); +emit_16(2027); +emit_16(1963); +emit_16(2028); +emit_16(1964); +emit_16(2028); +emit_16(1963); +emit_16(2028); +emit_16(1964); +emit_16(2029); +emit_16(1965); +emit_16(2029); +emit_16(1964); +emit_16(2029); +emit_16(1965); +emit_16(2030); +emit_16(1966); +emit_16(2030); +emit_16(1965); +emit_16(2030); +emit_16(1966); +emit_16(2031); +emit_16(1967); +emit_16(2031); +emit_16(1966); +emit_16(2031); +emit_16(1967); +emit_16(2032); +emit_16(1968); +emit_16(2032); +emit_16(1967); +emit_16(2032); +emit_16(1968); +emit_16(2033); +emit_16(1969); +emit_16(2033); +emit_16(1968); +emit_16(2033); +emit_16(1969); +emit_16(2034); +emit_16(1970); +emit_16(2034); +emit_16(1969); +emit_16(2034); +emit_16(1970); +emit_16(2035); +emit_16(1971); +emit_16(2035); +emit_16(1970); +emit_16(2035); +emit_16(1971); +emit_16(2036); +emit_16(1972); +emit_16(2036); +emit_16(1971); +emit_16(2036); +emit_16(1972); +emit_16(2037); +emit_16(1973); +emit_16(2037); +emit_16(1972); +emit_16(2037); +emit_16(1973); +emit_16(2038); +emit_16(1974); +emit_16(2038); +emit_16(1973); +emit_16(2038); +emit_16(1974); +emit_16(2039); +emit_16(1975); +emit_16(2039); +emit_16(1974); +emit_16(2039); +emit_16(1975); +emit_16(2040); +emit_16(1976); +emit_16(2040); +emit_16(1975); +emit_16(2040); +emit_16(1976); +emit_16(2041); +emit_16(1977); +emit_16(2041); +emit_16(1976); +emit_16(2041); +emit_16(1977); +emit_16(2042); +emit_16(1978); +emit_16(2042); +emit_16(1977); +emit_16(2042); +emit_16(1978); +emit_16(2043); +emit_16(1979); +emit_16(2043); +emit_16(1978); +emit_16(2043); +emit_16(1979); +emit_16(2044); +emit_16(1980); +emit_16(2044); +emit_16(1979); +emit_16(2044); +emit_16(1980); +emit_16(2045); +emit_16(1981); +emit_16(2045); +emit_16(1980); +emit_16(2045); +emit_16(1981); +emit_16(2046); +emit_16(1982); +emit_16(2046); +emit_16(1981); +emit_16(2046); +emit_16(1982); +emit_16(2047); +emit_16(1983); +emit_16(2047); +emit_16(1982); +emit_start(Landscape02Idx) +emit_16(0); +emit_16(1); +emit_16(2); +emit_16(3); +emit_16(2); +emit_16(1); +emit_16(2); +emit_16(3); +emit_16(4); +emit_16(5); +emit_16(4); +emit_16(3); +emit_16(4); +emit_16(5); +emit_16(6); +emit_16(7); +emit_16(6); +emit_16(5); +emit_16(6); +emit_16(7); +emit_16(8); +emit_16(9); +emit_16(8); +emit_16(7); +emit_16(8); +emit_16(9); +emit_16(10); +emit_16(11); +emit_16(10); +emit_16(9); +emit_16(10); +emit_16(11); +emit_16(12); +emit_16(13); +emit_16(12); +emit_16(11); +emit_16(12); +emit_16(13); +emit_16(14); +emit_16(15); +emit_16(14); +emit_16(13); +emit_16(14); +emit_16(15); +emit_16(16); +emit_16(17); +emit_16(16); +emit_16(15); +emit_16(16); +emit_16(17); +emit_16(18); +emit_16(19); +emit_16(18); +emit_16(17); +emit_16(18); +emit_16(19); +emit_16(20); +emit_16(21); +emit_16(20); +emit_16(19); +emit_16(20); +emit_16(21); +emit_16(22); +emit_16(23); +emit_16(22); +emit_16(21); +emit_16(22); +emit_16(23); +emit_16(24); +emit_16(25); +emit_16(24); +emit_16(23); +emit_16(24); +emit_16(25); +emit_16(26); +emit_16(27); +emit_16(26); +emit_16(25); +emit_16(26); +emit_16(27); +emit_16(28); +emit_16(29); +emit_16(28); +emit_16(27); +emit_16(28); +emit_16(29); +emit_16(30); +emit_16(31); +emit_16(30); +emit_16(29); +emit_16(30); +emit_16(31); +emit_16(32); +emit_16(33); +emit_16(32); +emit_16(31); +emit_16(32); +emit_16(33); +emit_16(34); +emit_16(35); +emit_16(34); +emit_16(33); +emit_16(34); +emit_16(35); +emit_16(36); +emit_16(37); +emit_16(36); +emit_16(35); +emit_16(36); +emit_16(37); +emit_16(38); +emit_16(39); +emit_16(38); +emit_16(37); +emit_16(38); +emit_16(39); +emit_16(40); +emit_16(41); +emit_16(40); +emit_16(39); +emit_16(40); +emit_16(41); +emit_16(42); +emit_16(43); +emit_16(42); +emit_16(41); +emit_16(42); +emit_16(43); +emit_16(44); +emit_16(45); +emit_16(44); +emit_16(43); +emit_16(44); +emit_16(45); +emit_16(46); +emit_16(47); +emit_16(46); +emit_16(45); +emit_16(46); +emit_16(47); +emit_16(48); +emit_16(49); +emit_16(48); +emit_16(47); +emit_16(48); +emit_16(49); +emit_16(50); +emit_16(51); +emit_16(50); +emit_16(49); +emit_16(50); +emit_16(51); +emit_16(52); +emit_16(53); +emit_16(52); +emit_16(51); +emit_16(52); +emit_16(53); +emit_16(54); +emit_16(55); +emit_16(54); +emit_16(53); +emit_16(54); +emit_16(55); +emit_16(56); +emit_16(57); +emit_16(56); +emit_16(55); +emit_16(56); +emit_16(57); +emit_16(58); +emit_16(59); +emit_16(58); +emit_16(57); +emit_16(58); +emit_16(59); +emit_16(60); +emit_16(61); +emit_16(60); +emit_16(59); +emit_16(60); +emit_16(61); +emit_16(62); +emit_16(63); +emit_16(62); +emit_16(61); +emit_16(62); +emit_16(63); +emit_16(64); +emit_16(65); +emit_16(64); +emit_16(63); +emit_16(64); +emit_16(65); +emit_16(66); +emit_16(67); +emit_16(66); +emit_16(65); +emit_16(66); +emit_16(67); +emit_16(68); +emit_16(69); +emit_16(68); +emit_16(67); +emit_16(68); +emit_16(69); +emit_16(70); +emit_16(71); +emit_16(70); +emit_16(69); +emit_16(70); +emit_16(71); +emit_16(72); +emit_16(73); +emit_16(72); +emit_16(71); +emit_16(72); +emit_16(73); +emit_16(74); +emit_16(75); +emit_16(74); +emit_16(73); +emit_16(74); +emit_16(75); +emit_16(76); +emit_16(77); +emit_16(76); +emit_16(75); +emit_16(76); +emit_16(77); +emit_16(78); +emit_16(79); +emit_16(78); +emit_16(77); +emit_16(78); +emit_16(79); +emit_16(80); +emit_16(81); +emit_16(80); +emit_16(79); +emit_16(80); +emit_16(81); +emit_16(82); +emit_16(83); +emit_16(82); +emit_16(81); +emit_16(82); +emit_16(83); +emit_16(84); +emit_16(85); +emit_16(84); +emit_16(83); +emit_16(84); +emit_16(85); +emit_16(86); +emit_16(87); +emit_16(86); +emit_16(85); +emit_16(86); +emit_16(87); +emit_16(88); +emit_16(89); +emit_16(88); +emit_16(87); +emit_16(88); +emit_16(89); +emit_16(90); +emit_16(91); +emit_16(90); +emit_16(89); +emit_16(90); +emit_16(91); +emit_16(92); +emit_16(93); +emit_16(92); +emit_16(91); +emit_16(92); +emit_16(93); +emit_16(94); +emit_16(95); +emit_16(94); +emit_16(93); +emit_16(94); +emit_16(95); +emit_16(96); +emit_16(97); +emit_16(96); +emit_16(95); +emit_16(96); +emit_16(97); +emit_16(98); +emit_16(99); +emit_16(98); +emit_16(97); +emit_16(98); +emit_16(99); +emit_16(100); +emit_16(101); +emit_16(100); +emit_16(99); +emit_16(100); +emit_16(101); +emit_16(102); +emit_16(103); +emit_16(102); +emit_16(101); +emit_16(102); +emit_16(103); +emit_16(104); +emit_16(105); +emit_16(104); +emit_16(103); +emit_16(104); +emit_16(105); +emit_16(106); +emit_16(107); +emit_16(106); +emit_16(105); +emit_16(106); +emit_16(107); +emit_16(108); +emit_16(109); +emit_16(108); +emit_16(107); +emit_16(108); +emit_16(109); +emit_16(110); +emit_16(111); +emit_16(110); +emit_16(109); +emit_16(110); +emit_16(111); +emit_16(112); +emit_16(113); +emit_16(112); +emit_16(111); +emit_16(112); +emit_16(113); +emit_16(114); +emit_16(115); +emit_16(114); +emit_16(113); +emit_16(114); +emit_16(115); +emit_16(116); +emit_16(117); +emit_16(116); +emit_16(115); +emit_16(116); +emit_16(117); +emit_16(118); +emit_16(119); +emit_16(118); +emit_16(117); +emit_16(118); +emit_16(119); +emit_16(120); +emit_16(121); +emit_16(120); +emit_16(119); +emit_16(120); +emit_16(121); +emit_16(122); +emit_16(123); +emit_16(122); +emit_16(121); +emit_16(122); +emit_16(123); +emit_16(124); +emit_16(125); +emit_16(124); +emit_16(123); +emit_16(124); +emit_16(125); +emit_16(126); +emit_16(127); +emit_16(126); +emit_16(125); +emit_16(126); +emit_16(127); +emit_16(128); +emit_16(129); +emit_16(128); +emit_16(127); +emit_16(128); +emit_16(129); +emit_16(130); +emit_16(131); +emit_16(130); +emit_16(129); +emit_16(132); +emit_16(0); +emit_16(133); +emit_16(2); +emit_16(133); +emit_16(0); +emit_16(133); +emit_16(2); +emit_16(134); +emit_16(4); +emit_16(134); +emit_16(2); +emit_16(134); +emit_16(4); +emit_16(135); +emit_16(6); +emit_16(135); +emit_16(4); +emit_16(135); +emit_16(6); +emit_16(136); +emit_16(8); +emit_16(136); +emit_16(6); +emit_16(136); +emit_16(8); +emit_16(137); +emit_16(10); +emit_16(137); +emit_16(8); +emit_16(137); +emit_16(10); +emit_16(138); +emit_16(12); +emit_16(138); +emit_16(10); +emit_16(138); +emit_16(12); +emit_16(139); +emit_16(14); +emit_16(139); +emit_16(12); +emit_16(139); +emit_16(14); +emit_16(140); +emit_16(16); +emit_16(140); +emit_16(14); +emit_16(140); +emit_16(16); +emit_16(141); +emit_16(18); +emit_16(141); +emit_16(16); +emit_16(141); +emit_16(18); +emit_16(142); +emit_16(20); +emit_16(142); +emit_16(18); +emit_16(142); +emit_16(20); +emit_16(143); +emit_16(22); +emit_16(143); +emit_16(20); +emit_16(143); +emit_16(22); +emit_16(144); +emit_16(24); +emit_16(144); +emit_16(22); +emit_16(144); +emit_16(24); +emit_16(145); +emit_16(26); +emit_16(145); +emit_16(24); +emit_16(145); +emit_16(26); +emit_16(146); +emit_16(28); +emit_16(146); +emit_16(26); +emit_16(146); +emit_16(28); +emit_16(147); +emit_16(30); +emit_16(147); +emit_16(28); +emit_16(147); +emit_16(30); +emit_16(148); +emit_16(32); +emit_16(148); +emit_16(30); +emit_16(148); +emit_16(32); +emit_16(149); +emit_16(34); +emit_16(149); +emit_16(32); +emit_16(149); +emit_16(34); +emit_16(150); +emit_16(36); +emit_16(150); +emit_16(34); +emit_16(150); +emit_16(36); +emit_16(151); +emit_16(38); +emit_16(151); +emit_16(36); +emit_16(151); +emit_16(38); +emit_16(152); +emit_16(40); +emit_16(152); +emit_16(38); +emit_16(152); +emit_16(40); +emit_16(153); +emit_16(42); +emit_16(153); +emit_16(40); +emit_16(153); +emit_16(42); +emit_16(154); +emit_16(44); +emit_16(154); +emit_16(42); +emit_16(154); +emit_16(44); +emit_16(155); +emit_16(46); +emit_16(155); +emit_16(44); +emit_16(155); +emit_16(46); +emit_16(156); +emit_16(48); +emit_16(156); +emit_16(46); +emit_16(156); +emit_16(48); +emit_16(157); +emit_16(50); +emit_16(157); +emit_16(48); +emit_16(157); +emit_16(50); +emit_16(158); +emit_16(52); +emit_16(158); +emit_16(50); +emit_16(158); +emit_16(52); +emit_16(159); +emit_16(54); +emit_16(159); +emit_16(52); +emit_16(159); +emit_16(54); +emit_16(160); +emit_16(56); +emit_16(160); +emit_16(54); +emit_16(160); +emit_16(56); +emit_16(161); +emit_16(58); +emit_16(161); +emit_16(56); +emit_16(161); +emit_16(58); +emit_16(162); +emit_16(60); +emit_16(162); +emit_16(58); +emit_16(162); +emit_16(60); +emit_16(163); +emit_16(62); +emit_16(163); +emit_16(60); +emit_16(163); +emit_16(62); +emit_16(164); +emit_16(64); +emit_16(164); +emit_16(62); +emit_16(164); +emit_16(64); +emit_16(165); +emit_16(66); +emit_16(165); +emit_16(64); +emit_16(165); +emit_16(66); +emit_16(166); +emit_16(68); +emit_16(166); +emit_16(66); +emit_16(166); +emit_16(68); +emit_16(167); +emit_16(70); +emit_16(167); +emit_16(68); +emit_16(167); +emit_16(70); +emit_16(168); +emit_16(72); +emit_16(168); +emit_16(70); +emit_16(168); +emit_16(72); +emit_16(169); +emit_16(74); +emit_16(169); +emit_16(72); +emit_16(169); +emit_16(74); +emit_16(170); +emit_16(76); +emit_16(170); +emit_16(74); +emit_16(170); +emit_16(76); +emit_16(171); +emit_16(78); +emit_16(171); +emit_16(76); +emit_16(171); +emit_16(78); +emit_16(172); +emit_16(80); +emit_16(172); +emit_16(78); +emit_16(172); +emit_16(80); +emit_16(173); +emit_16(82); +emit_16(173); +emit_16(80); +emit_16(173); +emit_16(82); +emit_16(174); +emit_16(84); +emit_16(174); +emit_16(82); +emit_16(174); +emit_16(84); +emit_16(175); +emit_16(86); +emit_16(175); +emit_16(84); +emit_16(175); +emit_16(86); +emit_16(176); +emit_16(88); +emit_16(176); +emit_16(86); +emit_16(176); +emit_16(88); +emit_16(177); +emit_16(90); +emit_16(177); +emit_16(88); +emit_16(177); +emit_16(90); +emit_16(178); +emit_16(92); +emit_16(178); +emit_16(90); +emit_16(178); +emit_16(92); +emit_16(179); +emit_16(94); +emit_16(179); +emit_16(92); +emit_16(179); +emit_16(94); +emit_16(180); +emit_16(96); +emit_16(180); +emit_16(94); +emit_16(180); +emit_16(96); +emit_16(181); +emit_16(98); +emit_16(181); +emit_16(96); +emit_16(181); +emit_16(98); +emit_16(182); +emit_16(100); +emit_16(182); +emit_16(98); +emit_16(182); +emit_16(100); +emit_16(183); +emit_16(102); +emit_16(183); +emit_16(100); +emit_16(183); +emit_16(102); +emit_16(184); +emit_16(104); +emit_16(184); +emit_16(102); +emit_16(184); +emit_16(104); +emit_16(185); +emit_16(106); +emit_16(185); +emit_16(104); +emit_16(185); +emit_16(106); +emit_16(186); +emit_16(108); +emit_16(186); +emit_16(106); +emit_16(186); +emit_16(108); +emit_16(187); +emit_16(110); +emit_16(187); +emit_16(108); +emit_16(187); +emit_16(110); +emit_16(188); +emit_16(112); +emit_16(188); +emit_16(110); +emit_16(188); +emit_16(112); +emit_16(189); +emit_16(114); +emit_16(189); +emit_16(112); +emit_16(189); +emit_16(114); +emit_16(190); +emit_16(116); +emit_16(190); +emit_16(114); +emit_16(190); +emit_16(116); +emit_16(191); +emit_16(118); +emit_16(191); +emit_16(116); +emit_16(191); +emit_16(118); +emit_16(192); +emit_16(120); +emit_16(192); +emit_16(118); +emit_16(192); +emit_16(120); +emit_16(193); +emit_16(122); +emit_16(193); +emit_16(120); +emit_16(193); +emit_16(122); +emit_16(194); +emit_16(124); +emit_16(194); +emit_16(122); +emit_16(194); +emit_16(124); +emit_16(195); +emit_16(126); +emit_16(195); +emit_16(124); +emit_16(195); +emit_16(126); +emit_16(196); +emit_16(128); +emit_16(196); +emit_16(126); +emit_16(196); +emit_16(128); +emit_16(197); +emit_16(130); +emit_16(197); +emit_16(128); +emit_16(198); +emit_16(132); +emit_16(199); +emit_16(133); +emit_16(199); +emit_16(132); +emit_16(199); +emit_16(133); +emit_16(200); +emit_16(134); +emit_16(200); +emit_16(133); +emit_16(200); +emit_16(134); +emit_16(201); +emit_16(135); +emit_16(201); +emit_16(134); +emit_16(201); +emit_16(135); +emit_16(202); +emit_16(136); +emit_16(202); +emit_16(135); +emit_16(202); +emit_16(136); +emit_16(203); +emit_16(137); +emit_16(203); +emit_16(136); +emit_16(203); +emit_16(137); +emit_16(204); +emit_16(138); +emit_16(204); +emit_16(137); +emit_16(204); +emit_16(138); +emit_16(205); +emit_16(139); +emit_16(205); +emit_16(138); +emit_16(205); +emit_16(139); +emit_16(206); +emit_16(140); +emit_16(206); +emit_16(139); +emit_16(206); +emit_16(140); +emit_16(207); +emit_16(141); +emit_16(207); +emit_16(140); +emit_16(207); +emit_16(141); +emit_16(208); +emit_16(142); +emit_16(208); +emit_16(141); +emit_16(208); +emit_16(142); +emit_16(209); +emit_16(143); +emit_16(209); +emit_16(142); +emit_16(209); +emit_16(143); +emit_16(210); +emit_16(144); +emit_16(210); +emit_16(143); +emit_16(210); +emit_16(144); +emit_16(211); +emit_16(145); +emit_16(211); +emit_16(144); +emit_16(211); +emit_16(145); +emit_16(212); +emit_16(146); +emit_16(212); +emit_16(145); +emit_16(212); +emit_16(146); +emit_16(213); +emit_16(147); +emit_16(213); +emit_16(146); +emit_16(213); +emit_16(147); +emit_16(214); +emit_16(148); +emit_16(214); +emit_16(147); +emit_16(214); +emit_16(148); +emit_16(215); +emit_16(149); +emit_16(215); +emit_16(148); +emit_16(215); +emit_16(149); +emit_16(216); +emit_16(150); +emit_16(216); +emit_16(149); +emit_16(216); +emit_16(150); +emit_16(217); +emit_16(151); +emit_16(217); +emit_16(150); +emit_16(217); +emit_16(151); +emit_16(218); +emit_16(152); +emit_16(218); +emit_16(151); +emit_16(218); +emit_16(152); +emit_16(219); +emit_16(153); +emit_16(219); +emit_16(152); +emit_16(219); +emit_16(153); +emit_16(220); +emit_16(154); +emit_16(220); +emit_16(153); +emit_16(220); +emit_16(154); +emit_16(221); +emit_16(155); +emit_16(221); +emit_16(154); +emit_16(221); +emit_16(155); +emit_16(222); +emit_16(156); +emit_16(222); +emit_16(155); +emit_16(222); +emit_16(156); +emit_16(223); +emit_16(157); +emit_16(223); +emit_16(156); +emit_16(223); +emit_16(157); +emit_16(224); +emit_16(158); +emit_16(224); +emit_16(157); +emit_16(224); +emit_16(158); +emit_16(225); +emit_16(159); +emit_16(225); +emit_16(158); +emit_16(225); +emit_16(159); +emit_16(226); +emit_16(160); +emit_16(226); +emit_16(159); +emit_16(226); +emit_16(160); +emit_16(227); +emit_16(161); +emit_16(227); +emit_16(160); +emit_16(227); +emit_16(161); +emit_16(228); +emit_16(162); +emit_16(228); +emit_16(161); +emit_16(228); +emit_16(162); +emit_16(229); +emit_16(163); +emit_16(229); +emit_16(162); +emit_16(229); +emit_16(163); +emit_16(230); +emit_16(164); +emit_16(230); +emit_16(163); +emit_16(230); +emit_16(164); +emit_16(231); +emit_16(165); +emit_16(231); +emit_16(164); +emit_16(231); +emit_16(165); +emit_16(232); +emit_16(166); +emit_16(232); +emit_16(165); +emit_16(232); +emit_16(166); +emit_16(233); +emit_16(167); +emit_16(233); +emit_16(166); +emit_16(233); +emit_16(167); +emit_16(234); +emit_16(168); +emit_16(234); +emit_16(167); +emit_16(234); +emit_16(168); +emit_16(235); +emit_16(169); +emit_16(235); +emit_16(168); +emit_16(235); +emit_16(169); +emit_16(236); +emit_16(170); +emit_16(236); +emit_16(169); +emit_16(236); +emit_16(170); +emit_16(237); +emit_16(171); +emit_16(237); +emit_16(170); +emit_16(237); +emit_16(171); +emit_16(238); +emit_16(172); +emit_16(238); +emit_16(171); +emit_16(238); +emit_16(172); +emit_16(239); +emit_16(173); +emit_16(239); +emit_16(172); +emit_16(239); +emit_16(173); +emit_16(240); +emit_16(174); +emit_16(240); +emit_16(173); +emit_16(240); +emit_16(174); +emit_16(241); +emit_16(175); +emit_16(241); +emit_16(174); +emit_16(241); +emit_16(175); +emit_16(242); +emit_16(176); +emit_16(242); +emit_16(175); +emit_16(242); +emit_16(176); +emit_16(243); +emit_16(177); +emit_16(243); +emit_16(176); +emit_16(243); +emit_16(177); +emit_16(244); +emit_16(178); +emit_16(244); +emit_16(177); +emit_16(244); +emit_16(178); +emit_16(245); +emit_16(179); +emit_16(245); +emit_16(178); +emit_16(245); +emit_16(179); +emit_16(246); +emit_16(180); +emit_16(246); +emit_16(179); +emit_16(246); +emit_16(180); +emit_16(247); +emit_16(181); +emit_16(247); +emit_16(180); +emit_16(247); +emit_16(181); +emit_16(248); +emit_16(182); +emit_16(248); +emit_16(181); +emit_16(248); +emit_16(182); +emit_16(249); +emit_16(183); +emit_16(249); +emit_16(182); +emit_16(249); +emit_16(183); +emit_16(250); +emit_16(184); +emit_16(250); +emit_16(183); +emit_16(250); +emit_16(184); +emit_16(251); +emit_16(185); +emit_16(251); +emit_16(184); +emit_16(251); +emit_16(185); +emit_16(252); +emit_16(186); +emit_16(252); +emit_16(185); +emit_16(252); +emit_16(186); +emit_16(253); +emit_16(187); +emit_16(253); +emit_16(186); +emit_16(253); +emit_16(187); +emit_16(254); +emit_16(188); +emit_16(254); +emit_16(187); +emit_16(254); +emit_16(188); +emit_16(255); +emit_16(189); +emit_16(255); +emit_16(188); +emit_16(255); +emit_16(189); +emit_16(256); +emit_16(190); +emit_16(256); +emit_16(189); +emit_16(256); +emit_16(190); +emit_16(257); +emit_16(191); +emit_16(257); +emit_16(190); +emit_16(257); +emit_16(191); +emit_16(258); +emit_16(192); +emit_16(258); +emit_16(191); +emit_16(258); +emit_16(192); +emit_16(259); +emit_16(193); +emit_16(259); +emit_16(192); +emit_16(259); +emit_16(193); +emit_16(260); +emit_16(194); +emit_16(260); +emit_16(193); +emit_16(260); +emit_16(194); +emit_16(261); +emit_16(195); +emit_16(261); +emit_16(194); +emit_16(261); +emit_16(195); +emit_16(262); +emit_16(196); +emit_16(262); +emit_16(195); +emit_16(262); +emit_16(196); +emit_16(263); +emit_16(197); +emit_16(263); +emit_16(196); +emit_16(264); +emit_16(198); +emit_16(265); +emit_16(199); +emit_16(265); +emit_16(198); +emit_16(265); +emit_16(199); +emit_16(266); +emit_16(200); +emit_16(266); +emit_16(199); +emit_16(266); +emit_16(200); +emit_16(267); +emit_16(201); +emit_16(267); +emit_16(200); +emit_16(267); +emit_16(201); +emit_16(268); +emit_16(202); +emit_16(268); +emit_16(201); +emit_16(268); +emit_16(202); +emit_16(269); +emit_16(203); +emit_16(269); +emit_16(202); +emit_16(269); +emit_16(203); +emit_16(270); +emit_16(204); +emit_16(270); +emit_16(203); +emit_16(270); +emit_16(204); +emit_16(271); +emit_16(205); +emit_16(271); +emit_16(204); +emit_16(271); +emit_16(205); +emit_16(272); +emit_16(206); +emit_16(272); +emit_16(205); +emit_16(272); +emit_16(206); +emit_16(273); +emit_16(207); +emit_16(273); +emit_16(206); +emit_16(273); +emit_16(207); +emit_16(274); +emit_16(208); +emit_16(274); +emit_16(207); +emit_16(274); +emit_16(208); +emit_16(275); +emit_16(209); +emit_16(275); +emit_16(208); +emit_16(275); +emit_16(209); +emit_16(276); +emit_16(210); +emit_16(276); +emit_16(209); +emit_16(276); +emit_16(210); +emit_16(277); +emit_16(211); +emit_16(277); +emit_16(210); +emit_16(277); +emit_16(211); +emit_16(278); +emit_16(212); +emit_16(278); +emit_16(211); +emit_16(278); +emit_16(212); +emit_16(279); +emit_16(213); +emit_16(279); +emit_16(212); +emit_16(279); +emit_16(213); +emit_16(280); +emit_16(214); +emit_16(280); +emit_16(213); +emit_16(280); +emit_16(214); +emit_16(281); +emit_16(215); +emit_16(281); +emit_16(214); +emit_16(281); +emit_16(215); +emit_16(282); +emit_16(216); +emit_16(282); +emit_16(215); +emit_16(282); +emit_16(216); +emit_16(283); +emit_16(217); +emit_16(283); +emit_16(216); +emit_16(283); +emit_16(217); +emit_16(284); +emit_16(218); +emit_16(284); +emit_16(217); +emit_16(284); +emit_16(218); +emit_16(285); +emit_16(219); +emit_16(285); +emit_16(218); +emit_16(285); +emit_16(219); +emit_16(286); +emit_16(220); +emit_16(286); +emit_16(219); +emit_16(286); +emit_16(220); +emit_16(287); +emit_16(221); +emit_16(287); +emit_16(220); +emit_16(287); +emit_16(221); +emit_16(288); +emit_16(222); +emit_16(288); +emit_16(221); +emit_16(288); +emit_16(222); +emit_16(289); +emit_16(223); +emit_16(289); +emit_16(222); +emit_16(289); +emit_16(223); +emit_16(290); +emit_16(224); +emit_16(290); +emit_16(223); +emit_16(290); +emit_16(224); +emit_16(291); +emit_16(225); +emit_16(291); +emit_16(224); +emit_16(291); +emit_16(225); +emit_16(292); +emit_16(226); +emit_16(292); +emit_16(225); +emit_16(292); +emit_16(226); +emit_16(293); +emit_16(227); +emit_16(293); +emit_16(226); +emit_16(293); +emit_16(227); +emit_16(294); +emit_16(228); +emit_16(294); +emit_16(227); +emit_16(294); +emit_16(228); +emit_16(295); +emit_16(229); +emit_16(295); +emit_16(228); +emit_16(295); +emit_16(229); +emit_16(296); +emit_16(230); +emit_16(296); +emit_16(229); +emit_16(296); +emit_16(230); +emit_16(297); +emit_16(231); +emit_16(297); +emit_16(230); +emit_16(297); +emit_16(231); +emit_16(298); +emit_16(232); +emit_16(298); +emit_16(231); +emit_16(298); +emit_16(232); +emit_16(299); +emit_16(233); +emit_16(299); +emit_16(232); +emit_16(299); +emit_16(233); +emit_16(300); +emit_16(234); +emit_16(300); +emit_16(233); +emit_16(300); +emit_16(234); +emit_16(301); +emit_16(235); +emit_16(301); +emit_16(234); +emit_16(301); +emit_16(235); +emit_16(302); +emit_16(236); +emit_16(302); +emit_16(235); +emit_16(302); +emit_16(236); +emit_16(303); +emit_16(237); +emit_16(303); +emit_16(236); +emit_16(303); +emit_16(237); +emit_16(304); +emit_16(238); +emit_16(304); +emit_16(237); +emit_16(304); +emit_16(238); +emit_16(305); +emit_16(239); +emit_16(305); +emit_16(238); +emit_16(305); +emit_16(239); +emit_16(306); +emit_16(240); +emit_16(306); +emit_16(239); +emit_16(306); +emit_16(240); +emit_16(307); +emit_16(241); +emit_16(307); +emit_16(240); +emit_16(307); +emit_16(241); +emit_16(308); +emit_16(242); +emit_16(308); +emit_16(241); +emit_16(308); +emit_16(242); +emit_16(309); +emit_16(243); +emit_16(309); +emit_16(242); +emit_16(309); +emit_16(243); +emit_16(310); +emit_16(244); +emit_16(310); +emit_16(243); +emit_16(310); +emit_16(244); +emit_16(311); +emit_16(245); +emit_16(311); +emit_16(244); +emit_16(311); +emit_16(245); +emit_16(312); +emit_16(246); +emit_16(312); +emit_16(245); +emit_16(312); +emit_16(246); +emit_16(313); +emit_16(247); +emit_16(313); +emit_16(246); +emit_16(313); +emit_16(247); +emit_16(314); +emit_16(248); +emit_16(314); +emit_16(247); +emit_16(314); +emit_16(248); +emit_16(315); +emit_16(249); +emit_16(315); +emit_16(248); +emit_16(315); +emit_16(249); +emit_16(316); +emit_16(250); +emit_16(316); +emit_16(249); +emit_16(316); +emit_16(250); +emit_16(317); +emit_16(251); +emit_16(317); +emit_16(250); +emit_16(317); +emit_16(251); +emit_16(318); +emit_16(252); +emit_16(318); +emit_16(251); +emit_16(318); +emit_16(252); +emit_16(319); +emit_16(253); +emit_16(319); +emit_16(252); +emit_16(319); +emit_16(253); +emit_16(320); +emit_16(254); +emit_16(320); +emit_16(253); +emit_16(320); +emit_16(254); +emit_16(321); +emit_16(255); +emit_16(321); +emit_16(254); +emit_16(321); +emit_16(255); +emit_16(322); +emit_16(256); +emit_16(322); +emit_16(255); +emit_16(322); +emit_16(256); +emit_16(323); +emit_16(257); +emit_16(323); +emit_16(256); +emit_16(323); +emit_16(257); +emit_16(324); +emit_16(258); +emit_16(324); +emit_16(257); +emit_16(324); +emit_16(258); +emit_16(325); +emit_16(259); +emit_16(325); +emit_16(258); +emit_16(325); +emit_16(259); +emit_16(326); +emit_16(260); +emit_16(326); +emit_16(259); +emit_16(326); +emit_16(260); +emit_16(327); +emit_16(261); +emit_16(327); +emit_16(260); +emit_16(327); +emit_16(261); +emit_16(328); +emit_16(262); +emit_16(328); +emit_16(261); +emit_16(328); +emit_16(262); +emit_16(329); +emit_16(263); +emit_16(329); +emit_16(262); +emit_16(330); +emit_16(264); +emit_16(331); +emit_16(265); +emit_16(331); +emit_16(264); +emit_16(331); +emit_16(265); +emit_16(332); +emit_16(266); +emit_16(332); +emit_16(265); +emit_16(332); +emit_16(266); +emit_16(333); +emit_16(267); +emit_16(333); +emit_16(266); +emit_16(333); +emit_16(267); +emit_16(334); +emit_16(268); +emit_16(334); +emit_16(267); +emit_16(334); +emit_16(268); +emit_16(335); +emit_16(269); +emit_16(335); +emit_16(268); +emit_16(335); +emit_16(269); +emit_16(336); +emit_16(270); +emit_16(336); +emit_16(269); +emit_16(336); +emit_16(270); +emit_16(337); +emit_16(271); +emit_16(337); +emit_16(270); +emit_16(337); +emit_16(271); +emit_16(338); +emit_16(272); +emit_16(338); +emit_16(271); +emit_16(338); +emit_16(272); +emit_16(339); +emit_16(273); +emit_16(339); +emit_16(272); +emit_16(339); +emit_16(273); +emit_16(340); +emit_16(274); +emit_16(340); +emit_16(273); +emit_16(340); +emit_16(274); +emit_16(341); +emit_16(275); +emit_16(341); +emit_16(274); +emit_16(341); +emit_16(275); +emit_16(342); +emit_16(276); +emit_16(342); +emit_16(275); +emit_16(342); +emit_16(276); +emit_16(343); +emit_16(277); +emit_16(343); +emit_16(276); +emit_16(343); +emit_16(277); +emit_16(344); +emit_16(278); +emit_16(344); +emit_16(277); +emit_16(344); +emit_16(278); +emit_16(345); +emit_16(279); +emit_16(345); +emit_16(278); +emit_16(345); +emit_16(279); +emit_16(346); +emit_16(280); +emit_16(346); +emit_16(279); +emit_16(346); +emit_16(280); +emit_16(347); +emit_16(281); +emit_16(347); +emit_16(280); +emit_16(347); +emit_16(281); +emit_16(348); +emit_16(282); +emit_16(348); +emit_16(281); +emit_16(348); +emit_16(282); +emit_16(349); +emit_16(283); +emit_16(349); +emit_16(282); +emit_16(349); +emit_16(283); +emit_16(350); +emit_16(284); +emit_16(350); +emit_16(283); +emit_16(350); +emit_16(284); +emit_16(351); +emit_16(285); +emit_16(351); +emit_16(284); +emit_16(351); +emit_16(285); +emit_16(352); +emit_16(286); +emit_16(352); +emit_16(285); +emit_16(352); +emit_16(286); +emit_16(353); +emit_16(287); +emit_16(353); +emit_16(286); +emit_16(353); +emit_16(287); +emit_16(354); +emit_16(288); +emit_16(354); +emit_16(287); +emit_16(354); +emit_16(288); +emit_16(355); +emit_16(289); +emit_16(355); +emit_16(288); +emit_16(355); +emit_16(289); +emit_16(356); +emit_16(290); +emit_16(356); +emit_16(289); +emit_16(356); +emit_16(290); +emit_16(357); +emit_16(291); +emit_16(357); +emit_16(290); +emit_16(357); +emit_16(291); +emit_16(358); +emit_16(292); +emit_16(358); +emit_16(291); +emit_16(358); +emit_16(292); +emit_16(359); +emit_16(293); +emit_16(359); +emit_16(292); +emit_16(359); +emit_16(293); +emit_16(360); +emit_16(294); +emit_16(360); +emit_16(293); +emit_16(360); +emit_16(294); +emit_16(361); +emit_16(295); +emit_16(361); +emit_16(294); +emit_16(361); +emit_16(295); +emit_16(362); +emit_16(296); +emit_16(362); +emit_16(295); +emit_16(362); +emit_16(296); +emit_16(363); +emit_16(297); +emit_16(363); +emit_16(296); +emit_16(363); +emit_16(297); +emit_16(364); +emit_16(298); +emit_16(364); +emit_16(297); +emit_16(364); +emit_16(298); +emit_16(365); +emit_16(299); +emit_16(365); +emit_16(298); +emit_16(365); +emit_16(299); +emit_16(366); +emit_16(300); +emit_16(366); +emit_16(299); +emit_16(366); +emit_16(300); +emit_16(367); +emit_16(301); +emit_16(367); +emit_16(300); +emit_16(367); +emit_16(301); +emit_16(368); +emit_16(302); +emit_16(368); +emit_16(301); +emit_16(368); +emit_16(302); +emit_16(369); +emit_16(303); +emit_16(369); +emit_16(302); +emit_16(369); +emit_16(303); +emit_16(370); +emit_16(304); +emit_16(370); +emit_16(303); +emit_16(370); +emit_16(304); +emit_16(371); +emit_16(305); +emit_16(371); +emit_16(304); +emit_16(371); +emit_16(305); +emit_16(372); +emit_16(306); +emit_16(372); +emit_16(305); +emit_16(372); +emit_16(306); +emit_16(373); +emit_16(307); +emit_16(373); +emit_16(306); +emit_16(373); +emit_16(307); +emit_16(374); +emit_16(308); +emit_16(374); +emit_16(307); +emit_16(374); +emit_16(308); +emit_16(375); +emit_16(309); +emit_16(375); +emit_16(308); +emit_16(375); +emit_16(309); +emit_16(376); +emit_16(310); +emit_16(376); +emit_16(309); +emit_16(376); +emit_16(310); +emit_16(377); +emit_16(311); +emit_16(377); +emit_16(310); +emit_16(377); +emit_16(311); +emit_16(378); +emit_16(312); +emit_16(378); +emit_16(311); +emit_16(378); +emit_16(312); +emit_16(379); +emit_16(313); +emit_16(379); +emit_16(312); +emit_16(379); +emit_16(313); +emit_16(380); +emit_16(314); +emit_16(380); +emit_16(313); +emit_16(380); +emit_16(314); +emit_16(381); +emit_16(315); +emit_16(381); +emit_16(314); +emit_16(381); +emit_16(315); +emit_16(382); +emit_16(316); +emit_16(382); +emit_16(315); +emit_16(382); +emit_16(316); +emit_16(383); +emit_16(317); +emit_16(383); +emit_16(316); +emit_16(383); +emit_16(317); +emit_16(384); +emit_16(318); +emit_16(384); +emit_16(317); +emit_16(384); +emit_16(318); +emit_16(385); +emit_16(319); +emit_16(385); +emit_16(318); +emit_16(385); +emit_16(319); +emit_16(386); +emit_16(320); +emit_16(386); +emit_16(319); +emit_16(386); +emit_16(320); +emit_16(387); +emit_16(321); +emit_16(387); +emit_16(320); +emit_16(387); +emit_16(321); +emit_16(388); +emit_16(322); +emit_16(388); +emit_16(321); +emit_16(388); +emit_16(322); +emit_16(389); +emit_16(323); +emit_16(389); +emit_16(322); +emit_16(389); +emit_16(323); +emit_16(390); +emit_16(324); +emit_16(390); +emit_16(323); +emit_16(390); +emit_16(324); +emit_16(391); +emit_16(325); +emit_16(391); +emit_16(324); +emit_16(391); +emit_16(325); +emit_16(392); +emit_16(326); +emit_16(392); +emit_16(325); +emit_16(392); +emit_16(326); +emit_16(393); +emit_16(327); +emit_16(393); +emit_16(326); +emit_16(393); +emit_16(327); +emit_16(394); +emit_16(328); +emit_16(394); +emit_16(327); +emit_16(394); +emit_16(328); +emit_16(395); +emit_16(329); +emit_16(395); +emit_16(328); +emit_16(396); +emit_16(330); +emit_16(397); +emit_16(331); +emit_16(397); +emit_16(330); +emit_16(397); +emit_16(331); +emit_16(398); +emit_16(332); +emit_16(398); +emit_16(331); +emit_16(398); +emit_16(332); +emit_16(399); +emit_16(333); +emit_16(399); +emit_16(332); +emit_16(399); +emit_16(333); +emit_16(400); +emit_16(334); +emit_16(400); +emit_16(333); +emit_16(400); +emit_16(334); +emit_16(401); +emit_16(335); +emit_16(401); +emit_16(334); +emit_16(401); +emit_16(335); +emit_16(402); +emit_16(336); +emit_16(402); +emit_16(335); +emit_16(402); +emit_16(336); +emit_16(403); +emit_16(337); +emit_16(403); +emit_16(336); +emit_16(403); +emit_16(337); +emit_16(404); +emit_16(338); +emit_16(404); +emit_16(337); +emit_16(404); +emit_16(338); +emit_16(405); +emit_16(339); +emit_16(405); +emit_16(338); +emit_16(405); +emit_16(339); +emit_16(406); +emit_16(340); +emit_16(406); +emit_16(339); +emit_16(406); +emit_16(340); +emit_16(407); +emit_16(341); +emit_16(407); +emit_16(340); +emit_16(407); +emit_16(341); +emit_16(408); +emit_16(342); +emit_16(408); +emit_16(341); +emit_16(408); +emit_16(342); +emit_16(409); +emit_16(343); +emit_16(409); +emit_16(342); +emit_16(409); +emit_16(343); +emit_16(410); +emit_16(344); +emit_16(410); +emit_16(343); +emit_16(410); +emit_16(344); +emit_16(411); +emit_16(345); +emit_16(411); +emit_16(344); +emit_16(411); +emit_16(345); +emit_16(412); +emit_16(346); +emit_16(412); +emit_16(345); +emit_16(412); +emit_16(346); +emit_16(413); +emit_16(347); +emit_16(413); +emit_16(346); +emit_16(413); +emit_16(347); +emit_16(414); +emit_16(348); +emit_16(414); +emit_16(347); +emit_16(414); +emit_16(348); +emit_16(415); +emit_16(349); +emit_16(415); +emit_16(348); +emit_16(415); +emit_16(349); +emit_16(416); +emit_16(350); +emit_16(416); +emit_16(349); +emit_16(416); +emit_16(350); +emit_16(417); +emit_16(351); +emit_16(417); +emit_16(350); +emit_16(417); +emit_16(351); +emit_16(418); +emit_16(352); +emit_16(418); +emit_16(351); +emit_16(418); +emit_16(352); +emit_16(419); +emit_16(353); +emit_16(419); +emit_16(352); +emit_16(419); +emit_16(353); +emit_16(420); +emit_16(354); +emit_16(420); +emit_16(353); +emit_16(420); +emit_16(354); +emit_16(421); +emit_16(355); +emit_16(421); +emit_16(354); +emit_16(421); +emit_16(355); +emit_16(422); +emit_16(356); +emit_16(422); +emit_16(355); +emit_16(422); +emit_16(356); +emit_16(423); +emit_16(357); +emit_16(423); +emit_16(356); +emit_16(423); +emit_16(357); +emit_16(424); +emit_16(358); +emit_16(424); +emit_16(357); +emit_16(424); +emit_16(358); +emit_16(425); +emit_16(359); +emit_16(425); +emit_16(358); +emit_16(425); +emit_16(359); +emit_16(426); +emit_16(360); +emit_16(426); +emit_16(359); +emit_16(426); +emit_16(360); +emit_16(427); +emit_16(361); +emit_16(427); +emit_16(360); +emit_16(427); +emit_16(361); +emit_16(428); +emit_16(362); +emit_16(428); +emit_16(361); +emit_16(428); +emit_16(362); +emit_16(429); +emit_16(363); +emit_16(429); +emit_16(362); +emit_16(429); +emit_16(363); +emit_16(430); +emit_16(364); +emit_16(430); +emit_16(363); +emit_16(430); +emit_16(364); +emit_16(431); +emit_16(365); +emit_16(431); +emit_16(364); +emit_16(431); +emit_16(365); +emit_16(432); +emit_16(366); +emit_16(432); +emit_16(365); +emit_16(432); +emit_16(366); +emit_16(433); +emit_16(367); +emit_16(433); +emit_16(366); +emit_16(433); +emit_16(367); +emit_16(434); +emit_16(368); +emit_16(434); +emit_16(367); +emit_16(434); +emit_16(368); +emit_16(435); +emit_16(369); +emit_16(435); +emit_16(368); +emit_16(435); +emit_16(369); +emit_16(436); +emit_16(370); +emit_16(436); +emit_16(369); +emit_16(436); +emit_16(370); +emit_16(437); +emit_16(371); +emit_16(437); +emit_16(370); +emit_16(437); +emit_16(371); +emit_16(438); +emit_16(372); +emit_16(438); +emit_16(371); +emit_16(438); +emit_16(372); +emit_16(439); +emit_16(373); +emit_16(439); +emit_16(372); +emit_16(439); +emit_16(373); +emit_16(440); +emit_16(374); +emit_16(440); +emit_16(373); +emit_16(440); +emit_16(374); +emit_16(441); +emit_16(375); +emit_16(441); +emit_16(374); +emit_16(441); +emit_16(375); +emit_16(442); +emit_16(376); +emit_16(442); +emit_16(375); +emit_16(442); +emit_16(376); +emit_16(443); +emit_16(377); +emit_16(443); +emit_16(376); +emit_16(443); +emit_16(377); +emit_16(444); +emit_16(378); +emit_16(444); +emit_16(377); +emit_16(444); +emit_16(378); +emit_16(445); +emit_16(379); +emit_16(445); +emit_16(378); +emit_16(445); +emit_16(379); +emit_16(446); +emit_16(380); +emit_16(446); +emit_16(379); +emit_16(446); +emit_16(380); +emit_16(447); +emit_16(381); +emit_16(447); +emit_16(380); +emit_16(447); +emit_16(381); +emit_16(448); +emit_16(382); +emit_16(448); +emit_16(381); +emit_16(448); +emit_16(382); +emit_16(449); +emit_16(383); +emit_16(449); +emit_16(382); +emit_16(449); +emit_16(383); +emit_16(450); +emit_16(384); +emit_16(450); +emit_16(383); +emit_16(450); +emit_16(384); +emit_16(451); +emit_16(385); +emit_16(451); +emit_16(384); +emit_16(451); +emit_16(385); +emit_16(452); +emit_16(386); +emit_16(452); +emit_16(385); +emit_16(452); +emit_16(386); +emit_16(453); +emit_16(387); +emit_16(453); +emit_16(386); +emit_16(453); +emit_16(387); +emit_16(454); +emit_16(388); +emit_16(454); +emit_16(387); +emit_16(454); +emit_16(388); +emit_16(455); +emit_16(389); +emit_16(455); +emit_16(388); +emit_16(455); +emit_16(389); +emit_16(456); +emit_16(390); +emit_16(456); +emit_16(389); +emit_16(456); +emit_16(390); +emit_16(457); +emit_16(391); +emit_16(457); +emit_16(390); +emit_16(457); +emit_16(391); +emit_16(458); +emit_16(392); +emit_16(458); +emit_16(391); +emit_16(458); +emit_16(392); +emit_16(459); +emit_16(393); +emit_16(459); +emit_16(392); +emit_16(459); +emit_16(393); +emit_16(460); +emit_16(394); +emit_16(460); +emit_16(393); +emit_16(460); +emit_16(394); +emit_16(461); +emit_16(395); +emit_16(461); +emit_16(394); +emit_16(462); +emit_16(396); +emit_16(463); +emit_16(397); +emit_16(463); +emit_16(396); +emit_16(463); +emit_16(397); +emit_16(464); +emit_16(398); +emit_16(464); +emit_16(397); +emit_16(464); +emit_16(398); +emit_16(465); +emit_16(399); +emit_16(465); +emit_16(398); +emit_16(465); +emit_16(399); +emit_16(466); +emit_16(400); +emit_16(466); +emit_16(399); +emit_16(466); +emit_16(400); +emit_16(467); +emit_16(401); +emit_16(467); +emit_16(400); +emit_16(467); +emit_16(401); +emit_16(468); +emit_16(402); +emit_16(468); +emit_16(401); +emit_16(468); +emit_16(402); +emit_16(469); +emit_16(403); +emit_16(469); +emit_16(402); +emit_16(469); +emit_16(403); +emit_16(470); +emit_16(404); +emit_16(470); +emit_16(403); +emit_16(470); +emit_16(404); +emit_16(471); +emit_16(405); +emit_16(471); +emit_16(404); +emit_16(471); +emit_16(405); +emit_16(472); +emit_16(406); +emit_16(472); +emit_16(405); +emit_16(472); +emit_16(406); +emit_16(473); +emit_16(407); +emit_16(473); +emit_16(406); +emit_16(473); +emit_16(407); +emit_16(474); +emit_16(408); +emit_16(474); +emit_16(407); +emit_16(474); +emit_16(408); +emit_16(475); +emit_16(409); +emit_16(475); +emit_16(408); +emit_16(475); +emit_16(409); +emit_16(476); +emit_16(410); +emit_16(476); +emit_16(409); +emit_16(476); +emit_16(410); +emit_16(477); +emit_16(411); +emit_16(477); +emit_16(410); +emit_16(477); +emit_16(411); +emit_16(478); +emit_16(412); +emit_16(478); +emit_16(411); +emit_16(478); +emit_16(412); +emit_16(479); +emit_16(413); +emit_16(479); +emit_16(412); +emit_16(479); +emit_16(413); +emit_16(480); +emit_16(414); +emit_16(480); +emit_16(413); +emit_16(480); +emit_16(414); +emit_16(481); +emit_16(415); +emit_16(481); +emit_16(414); +emit_16(481); +emit_16(415); +emit_16(482); +emit_16(416); +emit_16(482); +emit_16(415); +emit_16(482); +emit_16(416); +emit_16(483); +emit_16(417); +emit_16(483); +emit_16(416); +emit_16(483); +emit_16(417); +emit_16(484); +emit_16(418); +emit_16(484); +emit_16(417); +emit_16(484); +emit_16(418); +emit_16(485); +emit_16(419); +emit_16(485); +emit_16(418); +emit_16(485); +emit_16(419); +emit_16(486); +emit_16(420); +emit_16(486); +emit_16(419); +emit_16(486); +emit_16(420); +emit_16(487); +emit_16(421); +emit_16(487); +emit_16(420); +emit_16(487); +emit_16(421); +emit_16(488); +emit_16(422); +emit_16(488); +emit_16(421); +emit_16(488); +emit_16(422); +emit_16(489); +emit_16(423); +emit_16(489); +emit_16(422); +emit_16(489); +emit_16(423); +emit_16(490); +emit_16(424); +emit_16(490); +emit_16(423); +emit_16(490); +emit_16(424); +emit_16(491); +emit_16(425); +emit_16(491); +emit_16(424); +emit_16(491); +emit_16(425); +emit_16(492); +emit_16(426); +emit_16(492); +emit_16(425); +emit_16(492); +emit_16(426); +emit_16(493); +emit_16(427); +emit_16(493); +emit_16(426); +emit_16(493); +emit_16(427); +emit_16(494); +emit_16(428); +emit_16(494); +emit_16(427); +emit_16(494); +emit_16(428); +emit_16(495); +emit_16(429); +emit_16(495); +emit_16(428); +emit_16(495); +emit_16(429); +emit_16(496); +emit_16(430); +emit_16(496); +emit_16(429); +emit_16(496); +emit_16(430); +emit_16(497); +emit_16(431); +emit_16(497); +emit_16(430); +emit_16(497); +emit_16(431); +emit_16(498); +emit_16(432); +emit_16(498); +emit_16(431); +emit_16(498); +emit_16(432); +emit_16(499); +emit_16(433); +emit_16(499); +emit_16(432); +emit_16(499); +emit_16(433); +emit_16(500); +emit_16(434); +emit_16(500); +emit_16(433); +emit_16(500); +emit_16(434); +emit_16(501); +emit_16(435); +emit_16(501); +emit_16(434); +emit_16(501); +emit_16(435); +emit_16(502); +emit_16(436); +emit_16(502); +emit_16(435); +emit_16(502); +emit_16(436); +emit_16(503); +emit_16(437); +emit_16(503); +emit_16(436); +emit_16(503); +emit_16(437); +emit_16(504); +emit_16(438); +emit_16(504); +emit_16(437); +emit_16(504); +emit_16(438); +emit_16(505); +emit_16(439); +emit_16(505); +emit_16(438); +emit_16(505); +emit_16(439); +emit_16(506); +emit_16(440); +emit_16(506); +emit_16(439); +emit_16(506); +emit_16(440); +emit_16(507); +emit_16(441); +emit_16(507); +emit_16(440); +emit_16(507); +emit_16(441); +emit_16(508); +emit_16(442); +emit_16(508); +emit_16(441); +emit_16(508); +emit_16(442); +emit_16(509); +emit_16(443); +emit_16(509); +emit_16(442); +emit_16(509); +emit_16(443); +emit_16(510); +emit_16(444); +emit_16(510); +emit_16(443); +emit_16(510); +emit_16(444); +emit_16(511); +emit_16(445); +emit_16(511); +emit_16(444); +emit_16(511); +emit_16(445); +emit_16(512); +emit_16(446); +emit_16(512); +emit_16(445); +emit_16(512); +emit_16(446); +emit_16(513); +emit_16(447); +emit_16(513); +emit_16(446); +emit_16(513); +emit_16(447); +emit_16(514); +emit_16(448); +emit_16(514); +emit_16(447); +emit_16(514); +emit_16(448); +emit_16(515); +emit_16(449); +emit_16(515); +emit_16(448); +emit_16(515); +emit_16(449); +emit_16(516); +emit_16(450); +emit_16(516); +emit_16(449); +emit_16(516); +emit_16(450); +emit_16(517); +emit_16(451); +emit_16(517); +emit_16(450); +emit_16(517); +emit_16(451); +emit_16(518); +emit_16(452); +emit_16(518); +emit_16(451); +emit_16(518); +emit_16(452); +emit_16(519); +emit_16(453); +emit_16(519); +emit_16(452); +emit_16(519); +emit_16(453); +emit_16(520); +emit_16(454); +emit_16(520); +emit_16(453); +emit_16(520); +emit_16(454); +emit_16(521); +emit_16(455); +emit_16(521); +emit_16(454); +emit_16(521); +emit_16(455); +emit_16(522); +emit_16(456); +emit_16(522); +emit_16(455); +emit_16(522); +emit_16(456); +emit_16(523); +emit_16(457); +emit_16(523); +emit_16(456); +emit_16(523); +emit_16(457); +emit_16(524); +emit_16(458); +emit_16(524); +emit_16(457); +emit_16(524); +emit_16(458); +emit_16(525); +emit_16(459); +emit_16(525); +emit_16(458); +emit_16(525); +emit_16(459); +emit_16(526); +emit_16(460); +emit_16(526); +emit_16(459); +emit_16(526); +emit_16(460); +emit_16(527); +emit_16(461); +emit_16(527); +emit_16(460); +emit_16(528); +emit_16(462); +emit_16(529); +emit_16(463); +emit_16(529); +emit_16(462); +emit_16(529); +emit_16(463); +emit_16(530); +emit_16(464); +emit_16(530); +emit_16(463); +emit_16(530); +emit_16(464); +emit_16(531); +emit_16(465); +emit_16(531); +emit_16(464); +emit_16(531); +emit_16(465); +emit_16(532); +emit_16(466); +emit_16(532); +emit_16(465); +emit_16(532); +emit_16(466); +emit_16(533); +emit_16(467); +emit_16(533); +emit_16(466); +emit_16(533); +emit_16(467); +emit_16(534); +emit_16(468); +emit_16(534); +emit_16(467); +emit_16(534); +emit_16(468); +emit_16(535); +emit_16(469); +emit_16(535); +emit_16(468); +emit_16(535); +emit_16(469); +emit_16(536); +emit_16(470); +emit_16(536); +emit_16(469); +emit_16(536); +emit_16(470); +emit_16(537); +emit_16(471); +emit_16(537); +emit_16(470); +emit_16(537); +emit_16(471); +emit_16(538); +emit_16(472); +emit_16(538); +emit_16(471); +emit_16(538); +emit_16(472); +emit_16(539); +emit_16(473); +emit_16(539); +emit_16(472); +emit_16(539); +emit_16(473); +emit_16(540); +emit_16(474); +emit_16(540); +emit_16(473); +emit_16(540); +emit_16(474); +emit_16(541); +emit_16(475); +emit_16(541); +emit_16(474); +emit_16(541); +emit_16(475); +emit_16(542); +emit_16(476); +emit_16(542); +emit_16(475); +emit_16(542); +emit_16(476); +emit_16(543); +emit_16(477); +emit_16(543); +emit_16(476); +emit_16(543); +emit_16(477); +emit_16(544); +emit_16(478); +emit_16(544); +emit_16(477); +emit_16(544); +emit_16(478); +emit_16(545); +emit_16(479); +emit_16(545); +emit_16(478); +emit_16(545); +emit_16(479); +emit_16(546); +emit_16(480); +emit_16(546); +emit_16(479); +emit_16(546); +emit_16(480); +emit_16(547); +emit_16(481); +emit_16(547); +emit_16(480); +emit_16(547); +emit_16(481); +emit_16(548); +emit_16(482); +emit_16(548); +emit_16(481); +emit_16(548); +emit_16(482); +emit_16(549); +emit_16(483); +emit_16(549); +emit_16(482); +emit_16(549); +emit_16(483); +emit_16(550); +emit_16(484); +emit_16(550); +emit_16(483); +emit_16(550); +emit_16(484); +emit_16(551); +emit_16(485); +emit_16(551); +emit_16(484); +emit_16(551); +emit_16(485); +emit_16(552); +emit_16(486); +emit_16(552); +emit_16(485); +emit_16(552); +emit_16(486); +emit_16(553); +emit_16(487); +emit_16(553); +emit_16(486); +emit_16(553); +emit_16(487); +emit_16(554); +emit_16(488); +emit_16(554); +emit_16(487); +emit_16(554); +emit_16(488); +emit_16(555); +emit_16(489); +emit_16(555); +emit_16(488); +emit_16(555); +emit_16(489); +emit_16(556); +emit_16(490); +emit_16(556); +emit_16(489); +emit_16(556); +emit_16(490); +emit_16(557); +emit_16(491); +emit_16(557); +emit_16(490); +emit_16(557); +emit_16(491); +emit_16(558); +emit_16(492); +emit_16(558); +emit_16(491); +emit_16(558); +emit_16(492); +emit_16(559); +emit_16(493); +emit_16(559); +emit_16(492); +emit_16(559); +emit_16(493); +emit_16(560); +emit_16(494); +emit_16(560); +emit_16(493); +emit_16(560); +emit_16(494); +emit_16(561); +emit_16(495); +emit_16(561); +emit_16(494); +emit_16(561); +emit_16(495); +emit_16(562); +emit_16(496); +emit_16(562); +emit_16(495); +emit_16(562); +emit_16(496); +emit_16(563); +emit_16(497); +emit_16(563); +emit_16(496); +emit_16(563); +emit_16(497); +emit_16(564); +emit_16(498); +emit_16(564); +emit_16(497); +emit_16(564); +emit_16(498); +emit_16(565); +emit_16(499); +emit_16(565); +emit_16(498); +emit_16(565); +emit_16(499); +emit_16(566); +emit_16(500); +emit_16(566); +emit_16(499); +emit_16(566); +emit_16(500); +emit_16(567); +emit_16(501); +emit_16(567); +emit_16(500); +emit_16(567); +emit_16(501); +emit_16(568); +emit_16(502); +emit_16(568); +emit_16(501); +emit_16(568); +emit_16(502); +emit_16(569); +emit_16(503); +emit_16(569); +emit_16(502); +emit_16(569); +emit_16(503); +emit_16(570); +emit_16(504); +emit_16(570); +emit_16(503); +emit_16(570); +emit_16(504); +emit_16(571); +emit_16(505); +emit_16(571); +emit_16(504); +emit_16(571); +emit_16(505); +emit_16(572); +emit_16(506); +emit_16(572); +emit_16(505); +emit_16(572); +emit_16(506); +emit_16(573); +emit_16(507); +emit_16(573); +emit_16(506); +emit_16(573); +emit_16(507); +emit_16(574); +emit_16(508); +emit_16(574); +emit_16(507); +emit_16(574); +emit_16(508); +emit_16(575); +emit_16(509); +emit_16(575); +emit_16(508); +emit_16(575); +emit_16(509); +emit_16(576); +emit_16(510); +emit_16(576); +emit_16(509); +emit_16(576); +emit_16(510); +emit_16(577); +emit_16(511); +emit_16(577); +emit_16(510); +emit_16(577); +emit_16(511); +emit_16(578); +emit_16(512); +emit_16(578); +emit_16(511); +emit_16(578); +emit_16(512); +emit_16(579); +emit_16(513); +emit_16(579); +emit_16(512); +emit_16(579); +emit_16(513); +emit_16(580); +emit_16(514); +emit_16(580); +emit_16(513); +emit_16(580); +emit_16(514); +emit_16(581); +emit_16(515); +emit_16(581); +emit_16(514); +emit_16(581); +emit_16(515); +emit_16(582); +emit_16(516); +emit_16(582); +emit_16(515); +emit_16(582); +emit_16(516); +emit_16(583); +emit_16(517); +emit_16(583); +emit_16(516); +emit_16(583); +emit_16(517); +emit_16(584); +emit_16(518); +emit_16(584); +emit_16(517); +emit_16(584); +emit_16(518); +emit_16(585); +emit_16(519); +emit_16(585); +emit_16(518); +emit_16(585); +emit_16(519); +emit_16(586); +emit_16(520); +emit_16(586); +emit_16(519); +emit_16(586); +emit_16(520); +emit_16(587); +emit_16(521); +emit_16(587); +emit_16(520); +emit_16(587); +emit_16(521); +emit_16(588); +emit_16(522); +emit_16(588); +emit_16(521); +emit_16(588); +emit_16(522); +emit_16(589); +emit_16(523); +emit_16(589); +emit_16(522); +emit_16(589); +emit_16(523); +emit_16(590); +emit_16(524); +emit_16(590); +emit_16(523); +emit_16(590); +emit_16(524); +emit_16(591); +emit_16(525); +emit_16(591); +emit_16(524); +emit_16(591); +emit_16(525); +emit_16(592); +emit_16(526); +emit_16(592); +emit_16(525); +emit_16(592); +emit_16(526); +emit_16(593); +emit_16(527); +emit_16(593); +emit_16(526); +emit_16(594); +emit_16(528); +emit_16(595); +emit_16(529); +emit_16(595); +emit_16(528); +emit_16(595); +emit_16(529); +emit_16(596); +emit_16(530); +emit_16(596); +emit_16(529); +emit_16(596); +emit_16(530); +emit_16(597); +emit_16(531); +emit_16(597); +emit_16(530); +emit_16(597); +emit_16(531); +emit_16(598); +emit_16(532); +emit_16(598); +emit_16(531); +emit_16(598); +emit_16(532); +emit_16(599); +emit_16(533); +emit_16(599); +emit_16(532); +emit_16(599); +emit_16(533); +emit_16(600); +emit_16(534); +emit_16(600); +emit_16(533); +emit_16(600); +emit_16(534); +emit_16(601); +emit_16(535); +emit_16(601); +emit_16(534); +emit_16(601); +emit_16(535); +emit_16(602); +emit_16(536); +emit_16(602); +emit_16(535); +emit_16(602); +emit_16(536); +emit_16(603); +emit_16(537); +emit_16(603); +emit_16(536); +emit_16(603); +emit_16(537); +emit_16(604); +emit_16(538); +emit_16(604); +emit_16(537); +emit_16(604); +emit_16(538); +emit_16(605); +emit_16(539); +emit_16(605); +emit_16(538); +emit_16(605); +emit_16(539); +emit_16(606); +emit_16(540); +emit_16(606); +emit_16(539); +emit_16(606); +emit_16(540); +emit_16(607); +emit_16(541); +emit_16(607); +emit_16(540); +emit_16(607); +emit_16(541); +emit_16(608); +emit_16(542); +emit_16(608); +emit_16(541); +emit_16(608); +emit_16(542); +emit_16(609); +emit_16(543); +emit_16(609); +emit_16(542); +emit_16(609); +emit_16(543); +emit_16(610); +emit_16(544); +emit_16(610); +emit_16(543); +emit_16(610); +emit_16(544); +emit_16(611); +emit_16(545); +emit_16(611); +emit_16(544); +emit_16(611); +emit_16(545); +emit_16(612); +emit_16(546); +emit_16(612); +emit_16(545); +emit_16(612); +emit_16(546); +emit_16(613); +emit_16(547); +emit_16(613); +emit_16(546); +emit_16(613); +emit_16(547); +emit_16(614); +emit_16(548); +emit_16(614); +emit_16(547); +emit_16(614); +emit_16(548); +emit_16(615); +emit_16(549); +emit_16(615); +emit_16(548); +emit_16(615); +emit_16(549); +emit_16(616); +emit_16(550); +emit_16(616); +emit_16(549); +emit_16(616); +emit_16(550); +emit_16(617); +emit_16(551); +emit_16(617); +emit_16(550); +emit_16(617); +emit_16(551); +emit_16(618); +emit_16(552); +emit_16(618); +emit_16(551); +emit_16(618); +emit_16(552); +emit_16(619); +emit_16(553); +emit_16(619); +emit_16(552); +emit_16(619); +emit_16(553); +emit_16(620); +emit_16(554); +emit_16(620); +emit_16(553); +emit_16(620); +emit_16(554); +emit_16(621); +emit_16(555); +emit_16(621); +emit_16(554); +emit_16(621); +emit_16(555); +emit_16(622); +emit_16(556); +emit_16(622); +emit_16(555); +emit_16(622); +emit_16(556); +emit_16(623); +emit_16(557); +emit_16(623); +emit_16(556); +emit_16(623); +emit_16(557); +emit_16(624); +emit_16(558); +emit_16(624); +emit_16(557); +emit_16(624); +emit_16(558); +emit_16(625); +emit_16(559); +emit_16(625); +emit_16(558); +emit_16(625); +emit_16(559); +emit_16(626); +emit_16(560); +emit_16(626); +emit_16(559); +emit_16(626); +emit_16(560); +emit_16(627); +emit_16(561); +emit_16(627); +emit_16(560); +emit_16(627); +emit_16(561); +emit_16(628); +emit_16(562); +emit_16(628); +emit_16(561); +emit_16(628); +emit_16(562); +emit_16(629); +emit_16(563); +emit_16(629); +emit_16(562); +emit_16(629); +emit_16(563); +emit_16(630); +emit_16(564); +emit_16(630); +emit_16(563); +emit_16(630); +emit_16(564); +emit_16(631); +emit_16(565); +emit_16(631); +emit_16(564); +emit_16(631); +emit_16(565); +emit_16(632); +emit_16(566); +emit_16(632); +emit_16(565); +emit_16(632); +emit_16(566); +emit_16(633); +emit_16(567); +emit_16(633); +emit_16(566); +emit_16(633); +emit_16(567); +emit_16(634); +emit_16(568); +emit_16(634); +emit_16(567); +emit_16(634); +emit_16(568); +emit_16(635); +emit_16(569); +emit_16(635); +emit_16(568); +emit_16(635); +emit_16(569); +emit_16(636); +emit_16(570); +emit_16(636); +emit_16(569); +emit_16(636); +emit_16(570); +emit_16(637); +emit_16(571); +emit_16(637); +emit_16(570); +emit_16(637); +emit_16(571); +emit_16(638); +emit_16(572); +emit_16(638); +emit_16(571); +emit_16(638); +emit_16(572); +emit_16(639); +emit_16(573); +emit_16(639); +emit_16(572); +emit_16(639); +emit_16(573); +emit_16(640); +emit_16(574); +emit_16(640); +emit_16(573); +emit_16(640); +emit_16(574); +emit_16(641); +emit_16(575); +emit_16(641); +emit_16(574); +emit_16(641); +emit_16(575); +emit_16(642); +emit_16(576); +emit_16(642); +emit_16(575); +emit_16(642); +emit_16(576); +emit_16(643); +emit_16(577); +emit_16(643); +emit_16(576); +emit_16(643); +emit_16(577); +emit_16(644); +emit_16(578); +emit_16(644); +emit_16(577); +emit_16(644); +emit_16(578); +emit_16(645); +emit_16(579); +emit_16(645); +emit_16(578); +emit_16(645); +emit_16(579); +emit_16(646); +emit_16(580); +emit_16(646); +emit_16(579); +emit_16(646); +emit_16(580); +emit_16(647); +emit_16(581); +emit_16(647); +emit_16(580); +emit_16(647); +emit_16(581); +emit_16(648); +emit_16(582); +emit_16(648); +emit_16(581); +emit_16(648); +emit_16(582); +emit_16(649); +emit_16(583); +emit_16(649); +emit_16(582); +emit_16(649); +emit_16(583); +emit_16(650); +emit_16(584); +emit_16(650); +emit_16(583); +emit_16(650); +emit_16(584); +emit_16(651); +emit_16(585); +emit_16(651); +emit_16(584); +emit_16(651); +emit_16(585); +emit_16(652); +emit_16(586); +emit_16(652); +emit_16(585); +emit_16(652); +emit_16(586); +emit_16(653); +emit_16(587); +emit_16(653); +emit_16(586); +emit_16(653); +emit_16(587); +emit_16(654); +emit_16(588); +emit_16(654); +emit_16(587); +emit_16(654); +emit_16(588); +emit_16(655); +emit_16(589); +emit_16(655); +emit_16(588); +emit_16(655); +emit_16(589); +emit_16(656); +emit_16(590); +emit_16(656); +emit_16(589); +emit_16(656); +emit_16(590); +emit_16(657); +emit_16(591); +emit_16(657); +emit_16(590); +emit_16(657); +emit_16(591); +emit_16(658); +emit_16(592); +emit_16(658); +emit_16(591); +emit_16(658); +emit_16(592); +emit_16(659); +emit_16(593); +emit_16(659); +emit_16(592); +emit_16(660); +emit_16(594); +emit_16(661); +emit_16(595); +emit_16(661); +emit_16(594); +emit_16(661); +emit_16(595); +emit_16(662); +emit_16(596); +emit_16(662); +emit_16(595); +emit_16(662); +emit_16(596); +emit_16(663); +emit_16(597); +emit_16(663); +emit_16(596); +emit_16(663); +emit_16(597); +emit_16(664); +emit_16(598); +emit_16(664); +emit_16(597); +emit_16(664); +emit_16(598); +emit_16(665); +emit_16(599); +emit_16(665); +emit_16(598); +emit_16(665); +emit_16(599); +emit_16(666); +emit_16(600); +emit_16(666); +emit_16(599); +emit_16(666); +emit_16(600); +emit_16(667); +emit_16(601); +emit_16(667); +emit_16(600); +emit_16(667); +emit_16(601); +emit_16(668); +emit_16(602); +emit_16(668); +emit_16(601); +emit_16(668); +emit_16(602); +emit_16(669); +emit_16(603); +emit_16(669); +emit_16(602); +emit_16(669); +emit_16(603); +emit_16(670); +emit_16(604); +emit_16(670); +emit_16(603); +emit_16(670); +emit_16(604); +emit_16(671); +emit_16(605); +emit_16(671); +emit_16(604); +emit_16(671); +emit_16(605); +emit_16(672); +emit_16(606); +emit_16(672); +emit_16(605); +emit_16(672); +emit_16(606); +emit_16(673); +emit_16(607); +emit_16(673); +emit_16(606); +emit_16(673); +emit_16(607); +emit_16(674); +emit_16(608); +emit_16(674); +emit_16(607); +emit_16(674); +emit_16(608); +emit_16(675); +emit_16(609); +emit_16(675); +emit_16(608); +emit_16(675); +emit_16(609); +emit_16(676); +emit_16(610); +emit_16(676); +emit_16(609); +emit_16(676); +emit_16(610); +emit_16(677); +emit_16(611); +emit_16(677); +emit_16(610); +emit_16(677); +emit_16(611); +emit_16(678); +emit_16(612); +emit_16(678); +emit_16(611); +emit_16(678); +emit_16(612); +emit_16(679); +emit_16(613); +emit_16(679); +emit_16(612); +emit_16(679); +emit_16(613); +emit_16(680); +emit_16(614); +emit_16(680); +emit_16(613); +emit_16(680); +emit_16(614); +emit_16(681); +emit_16(615); +emit_16(681); +emit_16(614); +emit_16(681); +emit_16(615); +emit_16(682); +emit_16(616); +emit_16(682); +emit_16(615); +emit_16(682); +emit_16(616); +emit_16(683); +emit_16(617); +emit_16(683); +emit_16(616); +emit_16(683); +emit_16(617); +emit_16(684); +emit_16(618); +emit_16(684); +emit_16(617); +emit_16(684); +emit_16(618); +emit_16(685); +emit_16(619); +emit_16(685); +emit_16(618); +emit_16(685); +emit_16(619); +emit_16(686); +emit_16(620); +emit_16(686); +emit_16(619); +emit_16(686); +emit_16(620); +emit_16(687); +emit_16(621); +emit_16(687); +emit_16(620); +emit_16(687); +emit_16(621); +emit_16(688); +emit_16(622); +emit_16(688); +emit_16(621); +emit_16(688); +emit_16(622); +emit_16(689); +emit_16(623); +emit_16(689); +emit_16(622); +emit_16(689); +emit_16(623); +emit_16(690); +emit_16(624); +emit_16(690); +emit_16(623); +emit_16(690); +emit_16(624); +emit_16(691); +emit_16(625); +emit_16(691); +emit_16(624); +emit_16(691); +emit_16(625); +emit_16(692); +emit_16(626); +emit_16(692); +emit_16(625); +emit_16(692); +emit_16(626); +emit_16(693); +emit_16(627); +emit_16(693); +emit_16(626); +emit_16(693); +emit_16(627); +emit_16(694); +emit_16(628); +emit_16(694); +emit_16(627); +emit_16(694); +emit_16(628); +emit_16(695); +emit_16(629); +emit_16(695); +emit_16(628); +emit_16(695); +emit_16(629); +emit_16(696); +emit_16(630); +emit_16(696); +emit_16(629); +emit_16(696); +emit_16(630); +emit_16(697); +emit_16(631); +emit_16(697); +emit_16(630); +emit_16(697); +emit_16(631); +emit_16(698); +emit_16(632); +emit_16(698); +emit_16(631); +emit_16(698); +emit_16(632); +emit_16(699); +emit_16(633); +emit_16(699); +emit_16(632); +emit_16(699); +emit_16(633); +emit_16(700); +emit_16(634); +emit_16(700); +emit_16(633); +emit_16(700); +emit_16(634); +emit_16(701); +emit_16(635); +emit_16(701); +emit_16(634); +emit_16(701); +emit_16(635); +emit_16(702); +emit_16(636); +emit_16(702); +emit_16(635); +emit_16(702); +emit_16(636); +emit_16(703); +emit_16(637); +emit_16(703); +emit_16(636); +emit_16(703); +emit_16(637); +emit_16(704); +emit_16(638); +emit_16(704); +emit_16(637); +emit_16(704); +emit_16(638); +emit_16(705); +emit_16(639); +emit_16(705); +emit_16(638); +emit_16(705); +emit_16(639); +emit_16(706); +emit_16(640); +emit_16(706); +emit_16(639); +emit_16(706); +emit_16(640); +emit_16(707); +emit_16(641); +emit_16(707); +emit_16(640); +emit_16(707); +emit_16(641); +emit_16(708); +emit_16(642); +emit_16(708); +emit_16(641); +emit_16(708); +emit_16(642); +emit_16(709); +emit_16(643); +emit_16(709); +emit_16(642); +emit_16(709); +emit_16(643); +emit_16(710); +emit_16(644); +emit_16(710); +emit_16(643); +emit_16(710); +emit_16(644); +emit_16(711); +emit_16(645); +emit_16(711); +emit_16(644); +emit_16(711); +emit_16(645); +emit_16(712); +emit_16(646); +emit_16(712); +emit_16(645); +emit_16(712); +emit_16(646); +emit_16(713); +emit_16(647); +emit_16(713); +emit_16(646); +emit_16(713); +emit_16(647); +emit_16(714); +emit_16(648); +emit_16(714); +emit_16(647); +emit_16(714); +emit_16(648); +emit_16(715); +emit_16(649); +emit_16(715); +emit_16(648); +emit_16(715); +emit_16(649); +emit_16(716); +emit_16(650); +emit_16(716); +emit_16(649); +emit_16(716); +emit_16(650); +emit_16(717); +emit_16(651); +emit_16(717); +emit_16(650); +emit_16(717); +emit_16(651); +emit_16(718); +emit_16(652); +emit_16(718); +emit_16(651); +emit_16(718); +emit_16(652); +emit_16(719); +emit_16(653); +emit_16(719); +emit_16(652); +emit_16(719); +emit_16(653); +emit_16(720); +emit_16(654); +emit_16(720); +emit_16(653); +emit_16(720); +emit_16(654); +emit_16(721); +emit_16(655); +emit_16(721); +emit_16(654); +emit_16(721); +emit_16(655); +emit_16(722); +emit_16(656); +emit_16(722); +emit_16(655); +emit_16(722); +emit_16(656); +emit_16(723); +emit_16(657); +emit_16(723); +emit_16(656); +emit_16(723); +emit_16(657); +emit_16(724); +emit_16(658); +emit_16(724); +emit_16(657); +emit_16(724); +emit_16(658); +emit_16(725); +emit_16(659); +emit_16(725); +emit_16(658); +emit_16(726); +emit_16(660); +emit_16(727); +emit_16(661); +emit_16(727); +emit_16(660); +emit_16(727); +emit_16(661); +emit_16(728); +emit_16(662); +emit_16(728); +emit_16(661); +emit_16(728); +emit_16(662); +emit_16(729); +emit_16(663); +emit_16(729); +emit_16(662); +emit_16(729); +emit_16(663); +emit_16(730); +emit_16(664); +emit_16(730); +emit_16(663); +emit_16(730); +emit_16(664); +emit_16(731); +emit_16(665); +emit_16(731); +emit_16(664); +emit_16(731); +emit_16(665); +emit_16(732); +emit_16(666); +emit_16(732); +emit_16(665); +emit_16(732); +emit_16(666); +emit_16(733); +emit_16(667); +emit_16(733); +emit_16(666); +emit_16(733); +emit_16(667); +emit_16(734); +emit_16(668); +emit_16(734); +emit_16(667); +emit_16(734); +emit_16(668); +emit_16(735); +emit_16(669); +emit_16(735); +emit_16(668); +emit_16(735); +emit_16(669); +emit_16(736); +emit_16(670); +emit_16(736); +emit_16(669); +emit_16(736); +emit_16(670); +emit_16(737); +emit_16(671); +emit_16(737); +emit_16(670); +emit_16(737); +emit_16(671); +emit_16(738); +emit_16(672); +emit_16(738); +emit_16(671); +emit_16(738); +emit_16(672); +emit_16(739); +emit_16(673); +emit_16(739); +emit_16(672); +emit_16(739); +emit_16(673); +emit_16(740); +emit_16(674); +emit_16(740); +emit_16(673); +emit_16(740); +emit_16(674); +emit_16(741); +emit_16(675); +emit_16(741); +emit_16(674); +emit_16(741); +emit_16(675); +emit_16(742); +emit_16(676); +emit_16(742); +emit_16(675); +emit_16(742); +emit_16(676); +emit_16(743); +emit_16(677); +emit_16(743); +emit_16(676); +emit_16(743); +emit_16(677); +emit_16(744); +emit_16(678); +emit_16(744); +emit_16(677); +emit_16(744); +emit_16(678); +emit_16(745); +emit_16(679); +emit_16(745); +emit_16(678); +emit_16(745); +emit_16(679); +emit_16(746); +emit_16(680); +emit_16(746); +emit_16(679); +emit_16(746); +emit_16(680); +emit_16(747); +emit_16(681); +emit_16(747); +emit_16(680); +emit_16(747); +emit_16(681); +emit_16(748); +emit_16(682); +emit_16(748); +emit_16(681); +emit_16(748); +emit_16(682); +emit_16(749); +emit_16(683); +emit_16(749); +emit_16(682); +emit_16(749); +emit_16(683); +emit_16(750); +emit_16(684); +emit_16(750); +emit_16(683); +emit_16(750); +emit_16(684); +emit_16(751); +emit_16(685); +emit_16(751); +emit_16(684); +emit_16(751); +emit_16(685); +emit_16(752); +emit_16(686); +emit_16(752); +emit_16(685); +emit_16(752); +emit_16(686); +emit_16(753); +emit_16(687); +emit_16(753); +emit_16(686); +emit_16(753); +emit_16(687); +emit_16(754); +emit_16(688); +emit_16(754); +emit_16(687); +emit_16(754); +emit_16(688); +emit_16(755); +emit_16(689); +emit_16(755); +emit_16(688); +emit_16(755); +emit_16(689); +emit_16(756); +emit_16(690); +emit_16(756); +emit_16(689); +emit_16(756); +emit_16(690); +emit_16(757); +emit_16(691); +emit_16(757); +emit_16(690); +emit_16(757); +emit_16(691); +emit_16(758); +emit_16(692); +emit_16(758); +emit_16(691); +emit_16(758); +emit_16(692); +emit_16(759); +emit_16(693); +emit_16(759); +emit_16(692); +emit_16(759); +emit_16(693); +emit_16(760); +emit_16(694); +emit_16(760); +emit_16(693); +emit_16(760); +emit_16(694); +emit_16(761); +emit_16(695); +emit_16(761); +emit_16(694); +emit_16(761); +emit_16(695); +emit_16(762); +emit_16(696); +emit_16(762); +emit_16(695); +emit_16(762); +emit_16(696); +emit_16(763); +emit_16(697); +emit_16(763); +emit_16(696); +emit_16(763); +emit_16(697); +emit_16(764); +emit_16(698); +emit_16(764); +emit_16(697); +emit_16(764); +emit_16(698); +emit_16(765); +emit_16(699); +emit_16(765); +emit_16(698); +emit_16(765); +emit_16(699); +emit_16(766); +emit_16(700); +emit_16(766); +emit_16(699); +emit_16(766); +emit_16(700); +emit_16(767); +emit_16(701); +emit_16(767); +emit_16(700); +emit_16(767); +emit_16(701); +emit_16(768); +emit_16(702); +emit_16(768); +emit_16(701); +emit_16(768); +emit_16(702); +emit_16(769); +emit_16(703); +emit_16(769); +emit_16(702); +emit_16(769); +emit_16(703); +emit_16(770); +emit_16(704); +emit_16(770); +emit_16(703); +emit_16(770); +emit_16(704); +emit_16(771); +emit_16(705); +emit_16(771); +emit_16(704); +emit_16(771); +emit_16(705); +emit_16(772); +emit_16(706); +emit_16(772); +emit_16(705); +emit_16(772); +emit_16(706); +emit_16(773); +emit_16(707); +emit_16(773); +emit_16(706); +emit_16(773); +emit_16(707); +emit_16(774); +emit_16(708); +emit_16(774); +emit_16(707); +emit_16(774); +emit_16(708); +emit_16(775); +emit_16(709); +emit_16(775); +emit_16(708); +emit_16(775); +emit_16(709); +emit_16(776); +emit_16(710); +emit_16(776); +emit_16(709); +emit_16(776); +emit_16(710); +emit_16(777); +emit_16(711); +emit_16(777); +emit_16(710); +emit_16(777); +emit_16(711); +emit_16(778); +emit_16(712); +emit_16(778); +emit_16(711); +emit_16(778); +emit_16(712); +emit_16(779); +emit_16(713); +emit_16(779); +emit_16(712); +emit_16(779); +emit_16(713); +emit_16(780); +emit_16(714); +emit_16(780); +emit_16(713); +emit_16(780); +emit_16(714); +emit_16(781); +emit_16(715); +emit_16(781); +emit_16(714); +emit_16(781); +emit_16(715); +emit_16(782); +emit_16(716); +emit_16(782); +emit_16(715); +emit_16(782); +emit_16(716); +emit_16(783); +emit_16(717); +emit_16(783); +emit_16(716); +emit_16(783); +emit_16(717); +emit_16(784); +emit_16(718); +emit_16(784); +emit_16(717); +emit_16(784); +emit_16(718); +emit_16(785); +emit_16(719); +emit_16(785); +emit_16(718); +emit_16(785); +emit_16(719); +emit_16(786); +emit_16(720); +emit_16(786); +emit_16(719); +emit_16(786); +emit_16(720); +emit_16(787); +emit_16(721); +emit_16(787); +emit_16(720); +emit_16(787); +emit_16(721); +emit_16(788); +emit_16(722); +emit_16(788); +emit_16(721); +emit_16(788); +emit_16(722); +emit_16(789); +emit_16(723); +emit_16(789); +emit_16(722); +emit_16(789); +emit_16(723); +emit_16(790); +emit_16(724); +emit_16(790); +emit_16(723); +emit_16(790); +emit_16(724); +emit_16(791); +emit_16(725); +emit_16(791); +emit_16(724); +emit_16(792); +emit_16(726); +emit_16(793); +emit_16(727); +emit_16(793); +emit_16(726); +emit_16(793); +emit_16(727); +emit_16(794); +emit_16(728); +emit_16(794); +emit_16(727); +emit_16(794); +emit_16(728); +emit_16(795); +emit_16(729); +emit_16(795); +emit_16(728); +emit_16(795); +emit_16(729); +emit_16(796); +emit_16(730); +emit_16(796); +emit_16(729); +emit_16(796); +emit_16(730); +emit_16(797); +emit_16(731); +emit_16(797); +emit_16(730); +emit_16(797); +emit_16(731); +emit_16(798); +emit_16(732); +emit_16(798); +emit_16(731); +emit_16(798); +emit_16(732); +emit_16(799); +emit_16(733); +emit_16(799); +emit_16(732); +emit_16(799); +emit_16(733); +emit_16(800); +emit_16(734); +emit_16(800); +emit_16(733); +emit_16(800); +emit_16(734); +emit_16(801); +emit_16(735); +emit_16(801); +emit_16(734); +emit_16(801); +emit_16(735); +emit_16(802); +emit_16(736); +emit_16(802); +emit_16(735); +emit_16(802); +emit_16(736); +emit_16(803); +emit_16(737); +emit_16(803); +emit_16(736); +emit_16(803); +emit_16(737); +emit_16(804); +emit_16(738); +emit_16(804); +emit_16(737); +emit_16(804); +emit_16(738); +emit_16(805); +emit_16(739); +emit_16(805); +emit_16(738); +emit_16(805); +emit_16(739); +emit_16(806); +emit_16(740); +emit_16(806); +emit_16(739); +emit_16(806); +emit_16(740); +emit_16(807); +emit_16(741); +emit_16(807); +emit_16(740); +emit_16(807); +emit_16(741); +emit_16(808); +emit_16(742); +emit_16(808); +emit_16(741); +emit_16(808); +emit_16(742); +emit_16(809); +emit_16(743); +emit_16(809); +emit_16(742); +emit_16(809); +emit_16(743); +emit_16(810); +emit_16(744); +emit_16(810); +emit_16(743); +emit_16(810); +emit_16(744); +emit_16(811); +emit_16(745); +emit_16(811); +emit_16(744); +emit_16(811); +emit_16(745); +emit_16(812); +emit_16(746); +emit_16(812); +emit_16(745); +emit_16(812); +emit_16(746); +emit_16(813); +emit_16(747); +emit_16(813); +emit_16(746); +emit_16(813); +emit_16(747); +emit_16(814); +emit_16(748); +emit_16(814); +emit_16(747); +emit_16(814); +emit_16(748); +emit_16(815); +emit_16(749); +emit_16(815); +emit_16(748); +emit_16(815); +emit_16(749); +emit_16(816); +emit_16(750); +emit_16(816); +emit_16(749); +emit_16(816); +emit_16(750); +emit_16(817); +emit_16(751); +emit_16(817); +emit_16(750); +emit_16(817); +emit_16(751); +emit_16(818); +emit_16(752); +emit_16(818); +emit_16(751); +emit_16(818); +emit_16(752); +emit_16(819); +emit_16(753); +emit_16(819); +emit_16(752); +emit_16(819); +emit_16(753); +emit_16(820); +emit_16(754); +emit_16(820); +emit_16(753); +emit_16(820); +emit_16(754); +emit_16(821); +emit_16(755); +emit_16(821); +emit_16(754); +emit_16(821); +emit_16(755); +emit_16(822); +emit_16(756); +emit_16(822); +emit_16(755); +emit_16(822); +emit_16(756); +emit_16(823); +emit_16(757); +emit_16(823); +emit_16(756); +emit_16(823); +emit_16(757); +emit_16(824); +emit_16(758); +emit_16(824); +emit_16(757); +emit_16(824); +emit_16(758); +emit_16(825); +emit_16(759); +emit_16(825); +emit_16(758); +emit_16(825); +emit_16(759); +emit_16(826); +emit_16(760); +emit_16(826); +emit_16(759); +emit_16(826); +emit_16(760); +emit_16(827); +emit_16(761); +emit_16(827); +emit_16(760); +emit_16(827); +emit_16(761); +emit_16(828); +emit_16(762); +emit_16(828); +emit_16(761); +emit_16(828); +emit_16(762); +emit_16(829); +emit_16(763); +emit_16(829); +emit_16(762); +emit_16(829); +emit_16(763); +emit_16(830); +emit_16(764); +emit_16(830); +emit_16(763); +emit_16(830); +emit_16(764); +emit_16(831); +emit_16(765); +emit_16(831); +emit_16(764); +emit_16(831); +emit_16(765); +emit_16(832); +emit_16(766); +emit_16(832); +emit_16(765); +emit_16(832); +emit_16(766); +emit_16(833); +emit_16(767); +emit_16(833); +emit_16(766); +emit_16(833); +emit_16(767); +emit_16(834); +emit_16(768); +emit_16(834); +emit_16(767); +emit_16(834); +emit_16(768); +emit_16(835); +emit_16(769); +emit_16(835); +emit_16(768); +emit_16(835); +emit_16(769); +emit_16(836); +emit_16(770); +emit_16(836); +emit_16(769); +emit_16(836); +emit_16(770); +emit_16(837); +emit_16(771); +emit_16(837); +emit_16(770); +emit_16(837); +emit_16(771); +emit_16(838); +emit_16(772); +emit_16(838); +emit_16(771); +emit_16(838); +emit_16(772); +emit_16(839); +emit_16(773); +emit_16(839); +emit_16(772); +emit_16(839); +emit_16(773); +emit_16(840); +emit_16(774); +emit_16(840); +emit_16(773); +emit_16(840); +emit_16(774); +emit_16(841); +emit_16(775); +emit_16(841); +emit_16(774); +emit_16(841); +emit_16(775); +emit_16(842); +emit_16(776); +emit_16(842); +emit_16(775); +emit_16(842); +emit_16(776); +emit_16(843); +emit_16(777); +emit_16(843); +emit_16(776); +emit_16(843); +emit_16(777); +emit_16(844); +emit_16(778); +emit_16(844); +emit_16(777); +emit_16(844); +emit_16(778); +emit_16(845); +emit_16(779); +emit_16(845); +emit_16(778); +emit_16(845); +emit_16(779); +emit_16(846); +emit_16(780); +emit_16(846); +emit_16(779); +emit_16(846); +emit_16(780); +emit_16(847); +emit_16(781); +emit_16(847); +emit_16(780); +emit_16(847); +emit_16(781); +emit_16(848); +emit_16(782); +emit_16(848); +emit_16(781); +emit_16(848); +emit_16(782); +emit_16(849); +emit_16(783); +emit_16(849); +emit_16(782); +emit_16(849); +emit_16(783); +emit_16(850); +emit_16(784); +emit_16(850); +emit_16(783); +emit_16(850); +emit_16(784); +emit_16(851); +emit_16(785); +emit_16(851); +emit_16(784); +emit_16(851); +emit_16(785); +emit_16(852); +emit_16(786); +emit_16(852); +emit_16(785); +emit_16(852); +emit_16(786); +emit_16(853); +emit_16(787); +emit_16(853); +emit_16(786); +emit_16(853); +emit_16(787); +emit_16(854); +emit_16(788); +emit_16(854); +emit_16(787); +emit_16(854); +emit_16(788); +emit_16(855); +emit_16(789); +emit_16(855); +emit_16(788); +emit_16(855); +emit_16(789); +emit_16(856); +emit_16(790); +emit_16(856); +emit_16(789); +emit_16(856); +emit_16(790); +emit_16(857); +emit_16(791); +emit_16(857); +emit_16(790); +emit_16(858); +emit_16(792); +emit_16(859); +emit_16(793); +emit_16(859); +emit_16(792); +emit_16(859); +emit_16(793); +emit_16(860); +emit_16(794); +emit_16(860); +emit_16(793); +emit_16(860); +emit_16(794); +emit_16(861); +emit_16(795); +emit_16(861); +emit_16(794); +emit_16(861); +emit_16(795); +emit_16(862); +emit_16(796); +emit_16(862); +emit_16(795); +emit_16(862); +emit_16(796); +emit_16(863); +emit_16(797); +emit_16(863); +emit_16(796); +emit_16(863); +emit_16(797); +emit_16(864); +emit_16(798); +emit_16(864); +emit_16(797); +emit_16(864); +emit_16(798); +emit_16(865); +emit_16(799); +emit_16(865); +emit_16(798); +emit_16(865); +emit_16(799); +emit_16(866); +emit_16(800); +emit_16(866); +emit_16(799); +emit_16(866); +emit_16(800); +emit_16(867); +emit_16(801); +emit_16(867); +emit_16(800); +emit_16(867); +emit_16(801); +emit_16(868); +emit_16(802); +emit_16(868); +emit_16(801); +emit_16(868); +emit_16(802); +emit_16(869); +emit_16(803); +emit_16(869); +emit_16(802); +emit_16(869); +emit_16(803); +emit_16(870); +emit_16(804); +emit_16(870); +emit_16(803); +emit_16(870); +emit_16(804); +emit_16(871); +emit_16(805); +emit_16(871); +emit_16(804); +emit_16(871); +emit_16(805); +emit_16(872); +emit_16(806); +emit_16(872); +emit_16(805); +emit_16(872); +emit_16(806); +emit_16(873); +emit_16(807); +emit_16(873); +emit_16(806); +emit_16(873); +emit_16(807); +emit_16(874); +emit_16(808); +emit_16(874); +emit_16(807); +emit_16(874); +emit_16(808); +emit_16(875); +emit_16(809); +emit_16(875); +emit_16(808); +emit_16(875); +emit_16(809); +emit_16(876); +emit_16(810); +emit_16(876); +emit_16(809); +emit_16(876); +emit_16(810); +emit_16(877); +emit_16(811); +emit_16(877); +emit_16(810); +emit_16(877); +emit_16(811); +emit_16(878); +emit_16(812); +emit_16(878); +emit_16(811); +emit_16(878); +emit_16(812); +emit_16(879); +emit_16(813); +emit_16(879); +emit_16(812); +emit_16(879); +emit_16(813); +emit_16(880); +emit_16(814); +emit_16(880); +emit_16(813); +emit_16(880); +emit_16(814); +emit_16(881); +emit_16(815); +emit_16(881); +emit_16(814); +emit_16(881); +emit_16(815); +emit_16(882); +emit_16(816); +emit_16(882); +emit_16(815); +emit_16(882); +emit_16(816); +emit_16(883); +emit_16(817); +emit_16(883); +emit_16(816); +emit_16(883); +emit_16(817); +emit_16(884); +emit_16(818); +emit_16(884); +emit_16(817); +emit_16(884); +emit_16(818); +emit_16(885); +emit_16(819); +emit_16(885); +emit_16(818); +emit_16(885); +emit_16(819); +emit_16(886); +emit_16(820); +emit_16(886); +emit_16(819); +emit_16(886); +emit_16(820); +emit_16(887); +emit_16(821); +emit_16(887); +emit_16(820); +emit_16(887); +emit_16(821); +emit_16(888); +emit_16(822); +emit_16(888); +emit_16(821); +emit_16(888); +emit_16(822); +emit_16(889); +emit_16(823); +emit_16(889); +emit_16(822); +emit_16(889); +emit_16(823); +emit_16(890); +emit_16(824); +emit_16(890); +emit_16(823); +emit_16(890); +emit_16(824); +emit_16(891); +emit_16(825); +emit_16(891); +emit_16(824); +emit_16(891); +emit_16(825); +emit_16(892); +emit_16(826); +emit_16(892); +emit_16(825); +emit_16(892); +emit_16(826); +emit_16(893); +emit_16(827); +emit_16(893); +emit_16(826); +emit_16(893); +emit_16(827); +emit_16(894); +emit_16(828); +emit_16(894); +emit_16(827); +emit_16(894); +emit_16(828); +emit_16(895); +emit_16(829); +emit_16(895); +emit_16(828); +emit_16(895); +emit_16(829); +emit_16(896); +emit_16(830); +emit_16(896); +emit_16(829); +emit_16(896); +emit_16(830); +emit_16(897); +emit_16(831); +emit_16(897); +emit_16(830); +emit_16(897); +emit_16(831); +emit_16(898); +emit_16(832); +emit_16(898); +emit_16(831); +emit_16(898); +emit_16(832); +emit_16(899); +emit_16(833); +emit_16(899); +emit_16(832); +emit_16(899); +emit_16(833); +emit_16(900); +emit_16(834); +emit_16(900); +emit_16(833); +emit_16(900); +emit_16(834); +emit_16(901); +emit_16(835); +emit_16(901); +emit_16(834); +emit_16(901); +emit_16(835); +emit_16(902); +emit_16(836); +emit_16(902); +emit_16(835); +emit_16(902); +emit_16(836); +emit_16(903); +emit_16(837); +emit_16(903); +emit_16(836); +emit_16(903); +emit_16(837); +emit_16(904); +emit_16(838); +emit_16(904); +emit_16(837); +emit_16(904); +emit_16(838); +emit_16(905); +emit_16(839); +emit_16(905); +emit_16(838); +emit_16(905); +emit_16(839); +emit_16(906); +emit_16(840); +emit_16(906); +emit_16(839); +emit_16(906); +emit_16(840); +emit_16(907); +emit_16(841); +emit_16(907); +emit_16(840); +emit_16(907); +emit_16(841); +emit_16(908); +emit_16(842); +emit_16(908); +emit_16(841); +emit_16(908); +emit_16(842); +emit_16(909); +emit_16(843); +emit_16(909); +emit_16(842); +emit_16(909); +emit_16(843); +emit_16(910); +emit_16(844); +emit_16(910); +emit_16(843); +emit_16(910); +emit_16(844); +emit_16(911); +emit_16(845); +emit_16(911); +emit_16(844); +emit_16(911); +emit_16(845); +emit_16(912); +emit_16(846); +emit_16(912); +emit_16(845); +emit_16(912); +emit_16(846); +emit_16(913); +emit_16(847); +emit_16(913); +emit_16(846); +emit_16(913); +emit_16(847); +emit_16(914); +emit_16(848); +emit_16(914); +emit_16(847); +emit_16(914); +emit_16(848); +emit_16(915); +emit_16(849); +emit_16(915); +emit_16(848); +emit_16(915); +emit_16(849); +emit_16(916); +emit_16(850); +emit_16(916); +emit_16(849); +emit_16(916); +emit_16(850); +emit_16(917); +emit_16(851); +emit_16(917); +emit_16(850); +emit_16(917); +emit_16(851); +emit_16(918); +emit_16(852); +emit_16(918); +emit_16(851); +emit_16(918); +emit_16(852); +emit_16(919); +emit_16(853); +emit_16(919); +emit_16(852); +emit_16(919); +emit_16(853); +emit_16(920); +emit_16(854); +emit_16(920); +emit_16(853); +emit_16(920); +emit_16(854); +emit_16(921); +emit_16(855); +emit_16(921); +emit_16(854); +emit_16(921); +emit_16(855); +emit_16(922); +emit_16(856); +emit_16(922); +emit_16(855); +emit_16(922); +emit_16(856); +emit_16(923); +emit_16(857); +emit_16(923); +emit_16(856); +emit_16(924); +emit_16(858); +emit_16(925); +emit_16(859); +emit_16(925); +emit_16(858); +emit_16(925); +emit_16(859); +emit_16(926); +emit_16(860); +emit_16(926); +emit_16(859); +emit_16(926); +emit_16(860); +emit_16(927); +emit_16(861); +emit_16(927); +emit_16(860); +emit_16(927); +emit_16(861); +emit_16(928); +emit_16(862); +emit_16(928); +emit_16(861); +emit_16(928); +emit_16(862); +emit_16(929); +emit_16(863); +emit_16(929); +emit_16(862); +emit_16(929); +emit_16(863); +emit_16(930); +emit_16(864); +emit_16(930); +emit_16(863); +emit_16(930); +emit_16(864); +emit_16(931); +emit_16(865); +emit_16(931); +emit_16(864); +emit_16(931); +emit_16(865); +emit_16(932); +emit_16(866); +emit_16(932); +emit_16(865); +emit_16(932); +emit_16(866); +emit_16(933); +emit_16(867); +emit_16(933); +emit_16(866); +emit_16(933); +emit_16(867); +emit_16(934); +emit_16(868); +emit_16(934); +emit_16(867); +emit_16(934); +emit_16(868); +emit_16(935); +emit_16(869); +emit_16(935); +emit_16(868); +emit_16(935); +emit_16(869); +emit_16(936); +emit_16(870); +emit_16(936); +emit_16(869); +emit_16(936); +emit_16(870); +emit_16(937); +emit_16(871); +emit_16(937); +emit_16(870); +emit_16(937); +emit_16(871); +emit_16(938); +emit_16(872); +emit_16(938); +emit_16(871); +emit_16(938); +emit_16(872); +emit_16(939); +emit_16(873); +emit_16(939); +emit_16(872); +emit_16(939); +emit_16(873); +emit_16(940); +emit_16(874); +emit_16(940); +emit_16(873); +emit_16(940); +emit_16(874); +emit_16(941); +emit_16(875); +emit_16(941); +emit_16(874); +emit_16(941); +emit_16(875); +emit_16(942); +emit_16(876); +emit_16(942); +emit_16(875); +emit_16(942); +emit_16(876); +emit_16(943); +emit_16(877); +emit_16(943); +emit_16(876); +emit_16(943); +emit_16(877); +emit_16(944); +emit_16(878); +emit_16(944); +emit_16(877); +emit_16(944); +emit_16(878); +emit_16(945); +emit_16(879); +emit_16(945); +emit_16(878); +emit_16(945); +emit_16(879); +emit_16(946); +emit_16(880); +emit_16(946); +emit_16(879); +emit_16(946); +emit_16(880); +emit_16(947); +emit_16(881); +emit_16(947); +emit_16(880); +emit_16(947); +emit_16(881); +emit_16(948); +emit_16(882); +emit_16(948); +emit_16(881); +emit_16(948); +emit_16(882); +emit_16(949); +emit_16(883); +emit_16(949); +emit_16(882); +emit_16(949); +emit_16(883); +emit_16(950); +emit_16(884); +emit_16(950); +emit_16(883); +emit_16(950); +emit_16(884); +emit_16(951); +emit_16(885); +emit_16(951); +emit_16(884); +emit_16(951); +emit_16(885); +emit_16(952); +emit_16(886); +emit_16(952); +emit_16(885); +emit_16(952); +emit_16(886); +emit_16(953); +emit_16(887); +emit_16(953); +emit_16(886); +emit_16(953); +emit_16(887); +emit_16(954); +emit_16(888); +emit_16(954); +emit_16(887); +emit_16(954); +emit_16(888); +emit_16(955); +emit_16(889); +emit_16(955); +emit_16(888); +emit_16(955); +emit_16(889); +emit_16(956); +emit_16(890); +emit_16(956); +emit_16(889); +emit_16(956); +emit_16(890); +emit_16(957); +emit_16(891); +emit_16(957); +emit_16(890); +emit_16(957); +emit_16(891); +emit_16(958); +emit_16(892); +emit_16(958); +emit_16(891); +emit_16(958); +emit_16(892); +emit_16(959); +emit_16(893); +emit_16(959); +emit_16(892); +emit_16(959); +emit_16(893); +emit_16(960); +emit_16(894); +emit_16(960); +emit_16(893); +emit_16(960); +emit_16(894); +emit_16(961); +emit_16(895); +emit_16(961); +emit_16(894); +emit_16(961); +emit_16(895); +emit_16(962); +emit_16(896); +emit_16(962); +emit_16(895); +emit_16(962); +emit_16(896); +emit_16(963); +emit_16(897); +emit_16(963); +emit_16(896); +emit_16(963); +emit_16(897); +emit_16(964); +emit_16(898); +emit_16(964); +emit_16(897); +emit_16(964); +emit_16(898); +emit_16(965); +emit_16(899); +emit_16(965); +emit_16(898); +emit_16(965); +emit_16(899); +emit_16(966); +emit_16(900); +emit_16(966); +emit_16(899); +emit_16(966); +emit_16(900); +emit_16(967); +emit_16(901); +emit_16(967); +emit_16(900); +emit_16(967); +emit_16(901); +emit_16(968); +emit_16(902); +emit_16(968); +emit_16(901); +emit_16(968); +emit_16(902); +emit_16(969); +emit_16(903); +emit_16(969); +emit_16(902); +emit_16(969); +emit_16(903); +emit_16(970); +emit_16(904); +emit_16(970); +emit_16(903); +emit_16(970); +emit_16(904); +emit_16(971); +emit_16(905); +emit_16(971); +emit_16(904); +emit_16(971); +emit_16(905); +emit_16(972); +emit_16(906); +emit_16(972); +emit_16(905); +emit_16(972); +emit_16(906); +emit_16(973); +emit_16(907); +emit_16(973); +emit_16(906); +emit_16(973); +emit_16(907); +emit_16(974); +emit_16(908); +emit_16(974); +emit_16(907); +emit_16(974); +emit_16(908); +emit_16(975); +emit_16(909); +emit_16(975); +emit_16(908); +emit_16(975); +emit_16(909); +emit_16(976); +emit_16(910); +emit_16(976); +emit_16(909); +emit_16(976); +emit_16(910); +emit_16(977); +emit_16(911); +emit_16(977); +emit_16(910); +emit_16(977); +emit_16(911); +emit_16(978); +emit_16(912); +emit_16(978); +emit_16(911); +emit_16(978); +emit_16(912); +emit_16(979); +emit_16(913); +emit_16(979); +emit_16(912); +emit_16(979); +emit_16(913); +emit_16(980); +emit_16(914); +emit_16(980); +emit_16(913); +emit_16(980); +emit_16(914); +emit_16(981); +emit_16(915); +emit_16(981); +emit_16(914); +emit_16(981); +emit_16(915); +emit_16(982); +emit_16(916); +emit_16(982); +emit_16(915); +emit_16(982); +emit_16(916); +emit_16(983); +emit_16(917); +emit_16(983); +emit_16(916); +emit_16(983); +emit_16(917); +emit_16(984); +emit_16(918); +emit_16(984); +emit_16(917); +emit_16(984); +emit_16(918); +emit_16(985); +emit_16(919); +emit_16(985); +emit_16(918); +emit_16(985); +emit_16(919); +emit_16(986); +emit_16(920); +emit_16(986); +emit_16(919); +emit_16(986); +emit_16(920); +emit_16(987); +emit_16(921); +emit_16(987); +emit_16(920); +emit_16(987); +emit_16(921); +emit_16(988); +emit_16(922); +emit_16(988); +emit_16(921); +emit_16(988); +emit_16(922); +emit_16(989); +emit_16(923); +emit_16(989); +emit_16(922); +emit_16(990); +emit_16(924); +emit_16(991); +emit_16(925); +emit_16(991); +emit_16(924); +emit_16(991); +emit_16(925); +emit_16(992); +emit_16(926); +emit_16(992); +emit_16(925); +emit_16(992); +emit_16(926); +emit_16(993); +emit_16(927); +emit_16(993); +emit_16(926); +emit_16(993); +emit_16(927); +emit_16(994); +emit_16(928); +emit_16(994); +emit_16(927); +emit_16(994); +emit_16(928); +emit_16(995); +emit_16(929); +emit_16(995); +emit_16(928); +emit_16(995); +emit_16(929); +emit_16(996); +emit_16(930); +emit_16(996); +emit_16(929); +emit_16(996); +emit_16(930); +emit_16(997); +emit_16(931); +emit_16(997); +emit_16(930); +emit_16(997); +emit_16(931); +emit_16(998); +emit_16(932); +emit_16(998); +emit_16(931); +emit_16(998); +emit_16(932); +emit_16(999); +emit_16(933); +emit_16(999); +emit_16(932); +emit_16(999); +emit_16(933); +emit_16(1000); +emit_16(934); +emit_16(1000); +emit_16(933); +emit_16(1000); +emit_16(934); +emit_16(1001); +emit_16(935); +emit_16(1001); +emit_16(934); +emit_16(1001); +emit_16(935); +emit_16(1002); +emit_16(936); +emit_16(1002); +emit_16(935); +emit_16(1002); +emit_16(936); +emit_16(1003); +emit_16(937); +emit_16(1003); +emit_16(936); +emit_16(1003); +emit_16(937); +emit_16(1004); +emit_16(938); +emit_16(1004); +emit_16(937); +emit_16(1004); +emit_16(938); +emit_16(1005); +emit_16(939); +emit_16(1005); +emit_16(938); +emit_16(1005); +emit_16(939); +emit_16(1006); +emit_16(940); +emit_16(1006); +emit_16(939); +emit_16(1006); +emit_16(940); +emit_16(1007); +emit_16(941); +emit_16(1007); +emit_16(940); +emit_16(1007); +emit_16(941); +emit_16(1008); +emit_16(942); +emit_16(1008); +emit_16(941); +emit_16(1008); +emit_16(942); +emit_16(1009); +emit_16(943); +emit_16(1009); +emit_16(942); +emit_16(1009); +emit_16(943); +emit_16(1010); +emit_16(944); +emit_16(1010); +emit_16(943); +emit_16(1010); +emit_16(944); +emit_16(1011); +emit_16(945); +emit_16(1011); +emit_16(944); +emit_16(1011); +emit_16(945); +emit_16(1012); +emit_16(946); +emit_16(1012); +emit_16(945); +emit_16(1012); +emit_16(946); +emit_16(1013); +emit_16(947); +emit_16(1013); +emit_16(946); +emit_16(1013); +emit_16(947); +emit_16(1014); +emit_16(948); +emit_16(1014); +emit_16(947); +emit_16(1014); +emit_16(948); +emit_16(1015); +emit_16(949); +emit_16(1015); +emit_16(948); +emit_16(1015); +emit_16(949); +emit_16(1016); +emit_16(950); +emit_16(1016); +emit_16(949); +emit_16(1016); +emit_16(950); +emit_16(1017); +emit_16(951); +emit_16(1017); +emit_16(950); +emit_16(1017); +emit_16(951); +emit_16(1018); +emit_16(952); +emit_16(1018); +emit_16(951); +emit_16(1018); +emit_16(952); +emit_16(1019); +emit_16(953); +emit_16(1019); +emit_16(952); +emit_16(1019); +emit_16(953); +emit_16(1020); +emit_16(954); +emit_16(1020); +emit_16(953); +emit_16(1020); +emit_16(954); +emit_16(1021); +emit_16(955); +emit_16(1021); +emit_16(954); +emit_16(1021); +emit_16(955); +emit_16(1022); +emit_16(956); +emit_16(1022); +emit_16(955); +emit_16(1022); +emit_16(956); +emit_16(1023); +emit_16(957); +emit_16(1023); +emit_16(956); +emit_16(1023); +emit_16(957); +emit_16(1024); +emit_16(958); +emit_16(1024); +emit_16(957); +emit_16(1024); +emit_16(958); +emit_16(1025); +emit_16(959); +emit_16(1025); +emit_16(958); +emit_16(1025); +emit_16(959); +emit_16(1026); +emit_16(960); +emit_16(1026); +emit_16(959); +emit_16(1026); +emit_16(960); +emit_16(1027); +emit_16(961); +emit_16(1027); +emit_16(960); +emit_16(1027); +emit_16(961); +emit_16(1028); +emit_16(962); +emit_16(1028); +emit_16(961); +emit_16(1028); +emit_16(962); +emit_16(1029); +emit_16(963); +emit_16(1029); +emit_16(962); +emit_16(1029); +emit_16(963); +emit_16(1030); +emit_16(964); +emit_16(1030); +emit_16(963); +emit_16(1030); +emit_16(964); +emit_16(1031); +emit_16(965); +emit_16(1031); +emit_16(964); +emit_16(1031); +emit_16(965); +emit_16(1032); +emit_16(966); +emit_16(1032); +emit_16(965); +emit_16(1032); +emit_16(966); +emit_16(1033); +emit_16(967); +emit_16(1033); +emit_16(966); +emit_16(1033); +emit_16(967); +emit_16(1034); +emit_16(968); +emit_16(1034); +emit_16(967); +emit_16(1034); +emit_16(968); +emit_16(1035); +emit_16(969); +emit_16(1035); +emit_16(968); +emit_16(1035); +emit_16(969); +emit_16(1036); +emit_16(970); +emit_16(1036); +emit_16(969); +emit_16(1036); +emit_16(970); +emit_16(1037); +emit_16(971); +emit_16(1037); +emit_16(970); +emit_16(1037); +emit_16(971); +emit_16(1038); +emit_16(972); +emit_16(1038); +emit_16(971); +emit_16(1038); +emit_16(972); +emit_16(1039); +emit_16(973); +emit_16(1039); +emit_16(972); +emit_16(1039); +emit_16(973); +emit_16(1040); +emit_16(974); +emit_16(1040); +emit_16(973); +emit_16(1040); +emit_16(974); +emit_16(1041); +emit_16(975); +emit_16(1041); +emit_16(974); +emit_16(1041); +emit_16(975); +emit_16(1042); +emit_16(976); +emit_16(1042); +emit_16(975); +emit_16(1042); +emit_16(976); +emit_16(1043); +emit_16(977); +emit_16(1043); +emit_16(976); +emit_16(1043); +emit_16(977); +emit_16(1044); +emit_16(978); +emit_16(1044); +emit_16(977); +emit_16(1044); +emit_16(978); +emit_16(1045); +emit_16(979); +emit_16(1045); +emit_16(978); +emit_16(1045); +emit_16(979); +emit_16(1046); +emit_16(980); +emit_16(1046); +emit_16(979); +emit_16(1046); +emit_16(980); +emit_16(1047); +emit_16(981); +emit_16(1047); +emit_16(980); +emit_16(1047); +emit_16(981); +emit_16(1048); +emit_16(982); +emit_16(1048); +emit_16(981); +emit_16(1048); +emit_16(982); +emit_16(1049); +emit_16(983); +emit_16(1049); +emit_16(982); +emit_16(1049); +emit_16(983); +emit_16(1050); +emit_16(984); +emit_16(1050); +emit_16(983); +emit_16(1050); +emit_16(984); +emit_16(1051); +emit_16(985); +emit_16(1051); +emit_16(984); +emit_16(1051); +emit_16(985); +emit_16(1052); +emit_16(986); +emit_16(1052); +emit_16(985); +emit_16(1052); +emit_16(986); +emit_16(1053); +emit_16(987); +emit_16(1053); +emit_16(986); +emit_16(1053); +emit_16(987); +emit_16(1054); +emit_16(988); +emit_16(1054); +emit_16(987); +emit_16(1054); +emit_16(988); +emit_16(1055); +emit_16(989); +emit_16(1055); +emit_16(988); +emit_16(1056); +emit_16(990); +emit_16(1057); +emit_16(991); +emit_16(1057); +emit_16(990); +emit_16(1057); +emit_16(991); +emit_16(1058); +emit_16(992); +emit_16(1058); +emit_16(991); +emit_16(1058); +emit_16(992); +emit_16(1059); +emit_16(993); +emit_16(1059); +emit_16(992); +emit_16(1059); +emit_16(993); +emit_16(1060); +emit_16(994); +emit_16(1060); +emit_16(993); +emit_16(1060); +emit_16(994); +emit_16(1061); +emit_16(995); +emit_16(1061); +emit_16(994); +emit_16(1061); +emit_16(995); +emit_16(1062); +emit_16(996); +emit_16(1062); +emit_16(995); +emit_16(1062); +emit_16(996); +emit_16(1063); +emit_16(997); +emit_16(1063); +emit_16(996); +emit_16(1063); +emit_16(997); +emit_16(1064); +emit_16(998); +emit_16(1064); +emit_16(997); +emit_16(1064); +emit_16(998); +emit_16(1065); +emit_16(999); +emit_16(1065); +emit_16(998); +emit_16(1065); +emit_16(999); +emit_16(1066); +emit_16(1000); +emit_16(1066); +emit_16(999); +emit_16(1066); +emit_16(1000); +emit_16(1067); +emit_16(1001); +emit_16(1067); +emit_16(1000); +emit_16(1067); +emit_16(1001); +emit_16(1068); +emit_16(1002); +emit_16(1068); +emit_16(1001); +emit_16(1068); +emit_16(1002); +emit_16(1069); +emit_16(1003); +emit_16(1069); +emit_16(1002); +emit_16(1069); +emit_16(1003); +emit_16(1070); +emit_16(1004); +emit_16(1070); +emit_16(1003); +emit_16(1070); +emit_16(1004); +emit_16(1071); +emit_16(1005); +emit_16(1071); +emit_16(1004); +emit_16(1071); +emit_16(1005); +emit_16(1072); +emit_16(1006); +emit_16(1072); +emit_16(1005); +emit_16(1072); +emit_16(1006); +emit_16(1073); +emit_16(1007); +emit_16(1073); +emit_16(1006); +emit_16(1073); +emit_16(1007); +emit_16(1074); +emit_16(1008); +emit_16(1074); +emit_16(1007); +emit_16(1074); +emit_16(1008); +emit_16(1075); +emit_16(1009); +emit_16(1075); +emit_16(1008); +emit_16(1075); +emit_16(1009); +emit_16(1076); +emit_16(1010); +emit_16(1076); +emit_16(1009); +emit_16(1076); +emit_16(1010); +emit_16(1077); +emit_16(1011); +emit_16(1077); +emit_16(1010); +emit_16(1077); +emit_16(1011); +emit_16(1078); +emit_16(1012); +emit_16(1078); +emit_16(1011); +emit_16(1078); +emit_16(1012); +emit_16(1079); +emit_16(1013); +emit_16(1079); +emit_16(1012); +emit_16(1079); +emit_16(1013); +emit_16(1080); +emit_16(1014); +emit_16(1080); +emit_16(1013); +emit_16(1080); +emit_16(1014); +emit_16(1081); +emit_16(1015); +emit_16(1081); +emit_16(1014); +emit_16(1081); +emit_16(1015); +emit_16(1082); +emit_16(1016); +emit_16(1082); +emit_16(1015); +emit_16(1082); +emit_16(1016); +emit_16(1083); +emit_16(1017); +emit_16(1083); +emit_16(1016); +emit_16(1083); +emit_16(1017); +emit_16(1084); +emit_16(1018); +emit_16(1084); +emit_16(1017); +emit_16(1084); +emit_16(1018); +emit_16(1085); +emit_16(1019); +emit_16(1085); +emit_16(1018); +emit_16(1085); +emit_16(1019); +emit_16(1086); +emit_16(1020); +emit_16(1086); +emit_16(1019); +emit_16(1086); +emit_16(1020); +emit_16(1087); +emit_16(1021); +emit_16(1087); +emit_16(1020); +emit_16(1087); +emit_16(1021); +emit_16(1088); +emit_16(1022); +emit_16(1088); +emit_16(1021); +emit_16(1088); +emit_16(1022); +emit_16(1089); +emit_16(1023); +emit_16(1089); +emit_16(1022); +emit_16(1089); +emit_16(1023); +emit_16(1090); +emit_16(1024); +emit_16(1090); +emit_16(1023); +emit_16(1090); +emit_16(1024); +emit_16(1091); +emit_16(1025); +emit_16(1091); +emit_16(1024); +emit_16(1091); +emit_16(1025); +emit_16(1092); +emit_16(1026); +emit_16(1092); +emit_16(1025); +emit_16(1092); +emit_16(1026); +emit_16(1093); +emit_16(1027); +emit_16(1093); +emit_16(1026); +emit_16(1093); +emit_16(1027); +emit_16(1094); +emit_16(1028); +emit_16(1094); +emit_16(1027); +emit_16(1094); +emit_16(1028); +emit_16(1095); +emit_16(1029); +emit_16(1095); +emit_16(1028); +emit_16(1095); +emit_16(1029); +emit_16(1096); +emit_16(1030); +emit_16(1096); +emit_16(1029); +emit_16(1096); +emit_16(1030); +emit_16(1097); +emit_16(1031); +emit_16(1097); +emit_16(1030); +emit_16(1097); +emit_16(1031); +emit_16(1098); +emit_16(1032); +emit_16(1098); +emit_16(1031); +emit_16(1098); +emit_16(1032); +emit_16(1099); +emit_16(1033); +emit_16(1099); +emit_16(1032); +emit_16(1099); +emit_16(1033); +emit_16(1100); +emit_16(1034); +emit_16(1100); +emit_16(1033); +emit_16(1100); +emit_16(1034); +emit_16(1101); +emit_16(1035); +emit_16(1101); +emit_16(1034); +emit_16(1101); +emit_16(1035); +emit_16(1102); +emit_16(1036); +emit_16(1102); +emit_16(1035); +emit_16(1102); +emit_16(1036); +emit_16(1103); +emit_16(1037); +emit_16(1103); +emit_16(1036); +emit_16(1103); +emit_16(1037); +emit_16(1104); +emit_16(1038); +emit_16(1104); +emit_16(1037); +emit_16(1104); +emit_16(1038); +emit_16(1105); +emit_16(1039); +emit_16(1105); +emit_16(1038); +emit_16(1105); +emit_16(1039); +emit_16(1106); +emit_16(1040); +emit_16(1106); +emit_16(1039); +emit_16(1106); +emit_16(1040); +emit_16(1107); +emit_16(1041); +emit_16(1107); +emit_16(1040); +emit_16(1107); +emit_16(1041); +emit_16(1108); +emit_16(1042); +emit_16(1108); +emit_16(1041); +emit_16(1108); +emit_16(1042); +emit_16(1109); +emit_16(1043); +emit_16(1109); +emit_16(1042); +emit_16(1109); +emit_16(1043); +emit_16(1110); +emit_16(1044); +emit_16(1110); +emit_16(1043); +emit_16(1110); +emit_16(1044); +emit_16(1111); +emit_16(1045); +emit_16(1111); +emit_16(1044); +emit_16(1111); +emit_16(1045); +emit_16(1112); +emit_16(1046); +emit_16(1112); +emit_16(1045); +emit_16(1112); +emit_16(1046); +emit_16(1113); +emit_16(1047); +emit_16(1113); +emit_16(1046); +emit_16(1113); +emit_16(1047); +emit_16(1114); +emit_16(1048); +emit_16(1114); +emit_16(1047); +emit_16(1114); +emit_16(1048); +emit_16(1115); +emit_16(1049); +emit_16(1115); +emit_16(1048); +emit_16(1115); +emit_16(1049); +emit_16(1116); +emit_16(1050); +emit_16(1116); +emit_16(1049); +emit_16(1116); +emit_16(1050); +emit_16(1117); +emit_16(1051); +emit_16(1117); +emit_16(1050); +emit_16(1117); +emit_16(1051); +emit_16(1118); +emit_16(1052); +emit_16(1118); +emit_16(1051); +emit_16(1118); +emit_16(1052); +emit_16(1119); +emit_16(1053); +emit_16(1119); +emit_16(1052); +emit_16(1119); +emit_16(1053); +emit_16(1120); +emit_16(1054); +emit_16(1120); +emit_16(1053); +emit_16(1120); +emit_16(1054); +emit_16(1121); +emit_16(1055); +emit_16(1121); +emit_16(1054); +emit_16(1122); +emit_16(1056); +emit_16(1123); +emit_16(1057); +emit_16(1123); +emit_16(1056); +emit_16(1123); +emit_16(1057); +emit_16(1124); +emit_16(1058); +emit_16(1124); +emit_16(1057); +emit_16(1124); +emit_16(1058); +emit_16(1125); +emit_16(1059); +emit_16(1125); +emit_16(1058); +emit_16(1125); +emit_16(1059); +emit_16(1126); +emit_16(1060); +emit_16(1126); +emit_16(1059); +emit_16(1126); +emit_16(1060); +emit_16(1127); +emit_16(1061); +emit_16(1127); +emit_16(1060); +emit_16(1127); +emit_16(1061); +emit_16(1128); +emit_16(1062); +emit_16(1128); +emit_16(1061); +emit_16(1128); +emit_16(1062); +emit_16(1129); +emit_16(1063); +emit_16(1129); +emit_16(1062); +emit_16(1129); +emit_16(1063); +emit_16(1130); +emit_16(1064); +emit_16(1130); +emit_16(1063); +emit_16(1130); +emit_16(1064); +emit_16(1131); +emit_16(1065); +emit_16(1131); +emit_16(1064); +emit_16(1131); +emit_16(1065); +emit_16(1132); +emit_16(1066); +emit_16(1132); +emit_16(1065); +emit_16(1132); +emit_16(1066); +emit_16(1133); +emit_16(1067); +emit_16(1133); +emit_16(1066); +emit_16(1133); +emit_16(1067); +emit_16(1134); +emit_16(1068); +emit_16(1134); +emit_16(1067); +emit_16(1134); +emit_16(1068); +emit_16(1135); +emit_16(1069); +emit_16(1135); +emit_16(1068); +emit_16(1135); +emit_16(1069); +emit_16(1136); +emit_16(1070); +emit_16(1136); +emit_16(1069); +emit_16(1136); +emit_16(1070); +emit_16(1137); +emit_16(1071); +emit_16(1137); +emit_16(1070); +emit_16(1137); +emit_16(1071); +emit_16(1138); +emit_16(1072); +emit_16(1138); +emit_16(1071); +emit_16(1138); +emit_16(1072); +emit_16(1139); +emit_16(1073); +emit_16(1139); +emit_16(1072); +emit_16(1139); +emit_16(1073); +emit_16(1140); +emit_16(1074); +emit_16(1140); +emit_16(1073); +emit_16(1140); +emit_16(1074); +emit_16(1141); +emit_16(1075); +emit_16(1141); +emit_16(1074); +emit_16(1141); +emit_16(1075); +emit_16(1142); +emit_16(1076); +emit_16(1142); +emit_16(1075); +emit_16(1142); +emit_16(1076); +emit_16(1143); +emit_16(1077); +emit_16(1143); +emit_16(1076); +emit_16(1143); +emit_16(1077); +emit_16(1144); +emit_16(1078); +emit_16(1144); +emit_16(1077); +emit_16(1144); +emit_16(1078); +emit_16(1145); +emit_16(1079); +emit_16(1145); +emit_16(1078); +emit_16(1145); +emit_16(1079); +emit_16(1146); +emit_16(1080); +emit_16(1146); +emit_16(1079); +emit_16(1146); +emit_16(1080); +emit_16(1147); +emit_16(1081); +emit_16(1147); +emit_16(1080); +emit_16(1147); +emit_16(1081); +emit_16(1148); +emit_16(1082); +emit_16(1148); +emit_16(1081); +emit_16(1148); +emit_16(1082); +emit_16(1149); +emit_16(1083); +emit_16(1149); +emit_16(1082); +emit_16(1149); +emit_16(1083); +emit_16(1150); +emit_16(1084); +emit_16(1150); +emit_16(1083); +emit_16(1150); +emit_16(1084); +emit_16(1151); +emit_16(1085); +emit_16(1151); +emit_16(1084); +emit_16(1151); +emit_16(1085); +emit_16(1152); +emit_16(1086); +emit_16(1152); +emit_16(1085); +emit_16(1152); +emit_16(1086); +emit_16(1153); +emit_16(1087); +emit_16(1153); +emit_16(1086); +emit_16(1153); +emit_16(1087); +emit_16(1154); +emit_16(1088); +emit_16(1154); +emit_16(1087); +emit_16(1154); +emit_16(1088); +emit_16(1155); +emit_16(1089); +emit_16(1155); +emit_16(1088); +emit_16(1155); +emit_16(1089); +emit_16(1156); +emit_16(1090); +emit_16(1156); +emit_16(1089); +emit_16(1156); +emit_16(1090); +emit_16(1157); +emit_16(1091); +emit_16(1157); +emit_16(1090); +emit_16(1157); +emit_16(1091); +emit_16(1158); +emit_16(1092); +emit_16(1158); +emit_16(1091); +emit_16(1158); +emit_16(1092); +emit_16(1159); +emit_16(1093); +emit_16(1159); +emit_16(1092); +emit_16(1159); +emit_16(1093); +emit_16(1160); +emit_16(1094); +emit_16(1160); +emit_16(1093); +emit_16(1160); +emit_16(1094); +emit_16(1161); +emit_16(1095); +emit_16(1161); +emit_16(1094); +emit_16(1161); +emit_16(1095); +emit_16(1162); +emit_16(1096); +emit_16(1162); +emit_16(1095); +emit_16(1162); +emit_16(1096); +emit_16(1163); +emit_16(1097); +emit_16(1163); +emit_16(1096); +emit_16(1163); +emit_16(1097); +emit_16(1164); +emit_16(1098); +emit_16(1164); +emit_16(1097); +emit_16(1164); +emit_16(1098); +emit_16(1165); +emit_16(1099); +emit_16(1165); +emit_16(1098); +emit_16(1165); +emit_16(1099); +emit_16(1166); +emit_16(1100); +emit_16(1166); +emit_16(1099); +emit_16(1166); +emit_16(1100); +emit_16(1167); +emit_16(1101); +emit_16(1167); +emit_16(1100); +emit_16(1167); +emit_16(1101); +emit_16(1168); +emit_16(1102); +emit_16(1168); +emit_16(1101); +emit_16(1168); +emit_16(1102); +emit_16(1169); +emit_16(1103); +emit_16(1169); +emit_16(1102); +emit_16(1169); +emit_16(1103); +emit_16(1170); +emit_16(1104); +emit_16(1170); +emit_16(1103); +emit_16(1170); +emit_16(1104); +emit_16(1171); +emit_16(1105); +emit_16(1171); +emit_16(1104); +emit_16(1171); +emit_16(1105); +emit_16(1172); +emit_16(1106); +emit_16(1172); +emit_16(1105); +emit_16(1172); +emit_16(1106); +emit_16(1173); +emit_16(1107); +emit_16(1173); +emit_16(1106); +emit_16(1173); +emit_16(1107); +emit_16(1174); +emit_16(1108); +emit_16(1174); +emit_16(1107); +emit_16(1174); +emit_16(1108); +emit_16(1175); +emit_16(1109); +emit_16(1175); +emit_16(1108); +emit_16(1175); +emit_16(1109); +emit_16(1176); +emit_16(1110); +emit_16(1176); +emit_16(1109); +emit_16(1176); +emit_16(1110); +emit_16(1177); +emit_16(1111); +emit_16(1177); +emit_16(1110); +emit_16(1177); +emit_16(1111); +emit_16(1178); +emit_16(1112); +emit_16(1178); +emit_16(1111); +emit_16(1178); +emit_16(1112); +emit_16(1179); +emit_16(1113); +emit_16(1179); +emit_16(1112); +emit_16(1179); +emit_16(1113); +emit_16(1180); +emit_16(1114); +emit_16(1180); +emit_16(1113); +emit_16(1180); +emit_16(1114); +emit_16(1181); +emit_16(1115); +emit_16(1181); +emit_16(1114); +emit_16(1181); +emit_16(1115); +emit_16(1182); +emit_16(1116); +emit_16(1182); +emit_16(1115); +emit_16(1182); +emit_16(1116); +emit_16(1183); +emit_16(1117); +emit_16(1183); +emit_16(1116); +emit_16(1183); +emit_16(1117); +emit_16(1184); +emit_16(1118); +emit_16(1184); +emit_16(1117); +emit_16(1184); +emit_16(1118); +emit_16(1185); +emit_16(1119); +emit_16(1185); +emit_16(1118); +emit_16(1185); +emit_16(1119); +emit_16(1186); +emit_16(1120); +emit_16(1186); +emit_16(1119); +emit_16(1186); +emit_16(1120); +emit_16(1187); +emit_16(1121); +emit_16(1187); +emit_16(1120); +emit_16(1188); +emit_16(1122); +emit_16(1189); +emit_16(1123); +emit_16(1189); +emit_16(1122); +emit_16(1189); +emit_16(1123); +emit_16(1190); +emit_16(1124); +emit_16(1190); +emit_16(1123); +emit_16(1190); +emit_16(1124); +emit_16(1191); +emit_16(1125); +emit_16(1191); +emit_16(1124); +emit_16(1191); +emit_16(1125); +emit_16(1192); +emit_16(1126); +emit_16(1192); +emit_16(1125); +emit_16(1192); +emit_16(1126); +emit_16(1193); +emit_16(1127); +emit_16(1193); +emit_16(1126); +emit_16(1193); +emit_16(1127); +emit_16(1194); +emit_16(1128); +emit_16(1194); +emit_16(1127); +emit_16(1194); +emit_16(1128); +emit_16(1195); +emit_16(1129); +emit_16(1195); +emit_16(1128); +emit_16(1195); +emit_16(1129); +emit_16(1196); +emit_16(1130); +emit_16(1196); +emit_16(1129); +emit_16(1196); +emit_16(1130); +emit_16(1197); +emit_16(1131); +emit_16(1197); +emit_16(1130); +emit_16(1197); +emit_16(1131); +emit_16(1198); +emit_16(1132); +emit_16(1198); +emit_16(1131); +emit_16(1198); +emit_16(1132); +emit_16(1199); +emit_16(1133); +emit_16(1199); +emit_16(1132); +emit_16(1199); +emit_16(1133); +emit_16(1200); +emit_16(1134); +emit_16(1200); +emit_16(1133); +emit_16(1200); +emit_16(1134); +emit_16(1201); +emit_16(1135); +emit_16(1201); +emit_16(1134); +emit_16(1201); +emit_16(1135); +emit_16(1202); +emit_16(1136); +emit_16(1202); +emit_16(1135); +emit_16(1202); +emit_16(1136); +emit_16(1203); +emit_16(1137); +emit_16(1203); +emit_16(1136); +emit_16(1203); +emit_16(1137); +emit_16(1204); +emit_16(1138); +emit_16(1204); +emit_16(1137); +emit_16(1204); +emit_16(1138); +emit_16(1205); +emit_16(1139); +emit_16(1205); +emit_16(1138); +emit_16(1205); +emit_16(1139); +emit_16(1206); +emit_16(1140); +emit_16(1206); +emit_16(1139); +emit_16(1206); +emit_16(1140); +emit_16(1207); +emit_16(1141); +emit_16(1207); +emit_16(1140); +emit_16(1207); +emit_16(1141); +emit_16(1208); +emit_16(1142); +emit_16(1208); +emit_16(1141); +emit_16(1208); +emit_16(1142); +emit_16(1209); +emit_16(1143); +emit_16(1209); +emit_16(1142); +emit_16(1209); +emit_16(1143); +emit_16(1210); +emit_16(1144); +emit_16(1210); +emit_16(1143); +emit_16(1210); +emit_16(1144); +emit_16(1211); +emit_16(1145); +emit_16(1211); +emit_16(1144); +emit_16(1211); +emit_16(1145); +emit_16(1212); +emit_16(1146); +emit_16(1212); +emit_16(1145); +emit_16(1212); +emit_16(1146); +emit_16(1213); +emit_16(1147); +emit_16(1213); +emit_16(1146); +emit_16(1213); +emit_16(1147); +emit_16(1214); +emit_16(1148); +emit_16(1214); +emit_16(1147); +emit_16(1214); +emit_16(1148); +emit_16(1215); +emit_16(1149); +emit_16(1215); +emit_16(1148); +emit_16(1215); +emit_16(1149); +emit_16(1216); +emit_16(1150); +emit_16(1216); +emit_16(1149); +emit_16(1216); +emit_16(1150); +emit_16(1217); +emit_16(1151); +emit_16(1217); +emit_16(1150); +emit_16(1217); +emit_16(1151); +emit_16(1218); +emit_16(1152); +emit_16(1218); +emit_16(1151); +emit_16(1218); +emit_16(1152); +emit_16(1219); +emit_16(1153); +emit_16(1219); +emit_16(1152); +emit_16(1219); +emit_16(1153); +emit_16(1220); +emit_16(1154); +emit_16(1220); +emit_16(1153); +emit_16(1220); +emit_16(1154); +emit_16(1221); +emit_16(1155); +emit_16(1221); +emit_16(1154); +emit_16(1221); +emit_16(1155); +emit_16(1222); +emit_16(1156); +emit_16(1222); +emit_16(1155); +emit_16(1222); +emit_16(1156); +emit_16(1223); +emit_16(1157); +emit_16(1223); +emit_16(1156); +emit_16(1223); +emit_16(1157); +emit_16(1224); +emit_16(1158); +emit_16(1224); +emit_16(1157); +emit_16(1224); +emit_16(1158); +emit_16(1225); +emit_16(1159); +emit_16(1225); +emit_16(1158); +emit_16(1225); +emit_16(1159); +emit_16(1226); +emit_16(1160); +emit_16(1226); +emit_16(1159); +emit_16(1226); +emit_16(1160); +emit_16(1227); +emit_16(1161); +emit_16(1227); +emit_16(1160); +emit_16(1227); +emit_16(1161); +emit_16(1228); +emit_16(1162); +emit_16(1228); +emit_16(1161); +emit_16(1228); +emit_16(1162); +emit_16(1229); +emit_16(1163); +emit_16(1229); +emit_16(1162); +emit_16(1229); +emit_16(1163); +emit_16(1230); +emit_16(1164); +emit_16(1230); +emit_16(1163); +emit_16(1230); +emit_16(1164); +emit_16(1231); +emit_16(1165); +emit_16(1231); +emit_16(1164); +emit_16(1231); +emit_16(1165); +emit_16(1232); +emit_16(1166); +emit_16(1232); +emit_16(1165); +emit_16(1232); +emit_16(1166); +emit_16(1233); +emit_16(1167); +emit_16(1233); +emit_16(1166); +emit_16(1233); +emit_16(1167); +emit_16(1234); +emit_16(1168); +emit_16(1234); +emit_16(1167); +emit_16(1234); +emit_16(1168); +emit_16(1235); +emit_16(1169); +emit_16(1235); +emit_16(1168); +emit_16(1235); +emit_16(1169); +emit_16(1236); +emit_16(1170); +emit_16(1236); +emit_16(1169); +emit_16(1236); +emit_16(1170); +emit_16(1237); +emit_16(1171); +emit_16(1237); +emit_16(1170); +emit_16(1237); +emit_16(1171); +emit_16(1238); +emit_16(1172); +emit_16(1238); +emit_16(1171); +emit_16(1238); +emit_16(1172); +emit_16(1239); +emit_16(1173); +emit_16(1239); +emit_16(1172); +emit_16(1239); +emit_16(1173); +emit_16(1240); +emit_16(1174); +emit_16(1240); +emit_16(1173); +emit_16(1240); +emit_16(1174); +emit_16(1241); +emit_16(1175); +emit_16(1241); +emit_16(1174); +emit_16(1241); +emit_16(1175); +emit_16(1242); +emit_16(1176); +emit_16(1242); +emit_16(1175); +emit_16(1242); +emit_16(1176); +emit_16(1243); +emit_16(1177); +emit_16(1243); +emit_16(1176); +emit_16(1243); +emit_16(1177); +emit_16(1244); +emit_16(1178); +emit_16(1244); +emit_16(1177); +emit_16(1244); +emit_16(1178); +emit_16(1245); +emit_16(1179); +emit_16(1245); +emit_16(1178); +emit_16(1245); +emit_16(1179); +emit_16(1246); +emit_16(1180); +emit_16(1246); +emit_16(1179); +emit_16(1246); +emit_16(1180); +emit_16(1247); +emit_16(1181); +emit_16(1247); +emit_16(1180); +emit_16(1247); +emit_16(1181); +emit_16(1248); +emit_16(1182); +emit_16(1248); +emit_16(1181); +emit_16(1248); +emit_16(1182); +emit_16(1249); +emit_16(1183); +emit_16(1249); +emit_16(1182); +emit_16(1249); +emit_16(1183); +emit_16(1250); +emit_16(1184); +emit_16(1250); +emit_16(1183); +emit_16(1250); +emit_16(1184); +emit_16(1251); +emit_16(1185); +emit_16(1251); +emit_16(1184); +emit_16(1251); +emit_16(1185); +emit_16(1252); +emit_16(1186); +emit_16(1252); +emit_16(1185); +emit_16(1252); +emit_16(1186); +emit_16(1253); +emit_16(1187); +emit_16(1253); +emit_16(1186); +emit_16(1254); +emit_16(1188); +emit_16(1255); +emit_16(1189); +emit_16(1255); +emit_16(1188); +emit_16(1255); +emit_16(1189); +emit_16(1256); +emit_16(1190); +emit_16(1256); +emit_16(1189); +emit_16(1256); +emit_16(1190); +emit_16(1257); +emit_16(1191); +emit_16(1257); +emit_16(1190); +emit_16(1257); +emit_16(1191); +emit_16(1258); +emit_16(1192); +emit_16(1258); +emit_16(1191); +emit_16(1258); +emit_16(1192); +emit_16(1259); +emit_16(1193); +emit_16(1259); +emit_16(1192); +emit_16(1259); +emit_16(1193); +emit_16(1260); +emit_16(1194); +emit_16(1260); +emit_16(1193); +emit_16(1260); +emit_16(1194); +emit_16(1261); +emit_16(1195); +emit_16(1261); +emit_16(1194); +emit_16(1261); +emit_16(1195); +emit_16(1262); +emit_16(1196); +emit_16(1262); +emit_16(1195); +emit_16(1262); +emit_16(1196); +emit_16(1263); +emit_16(1197); +emit_16(1263); +emit_16(1196); +emit_16(1263); +emit_16(1197); +emit_16(1264); +emit_16(1198); +emit_16(1264); +emit_16(1197); +emit_16(1264); +emit_16(1198); +emit_16(1265); +emit_16(1199); +emit_16(1265); +emit_16(1198); +emit_16(1265); +emit_16(1199); +emit_16(1266); +emit_16(1200); +emit_16(1266); +emit_16(1199); +emit_16(1266); +emit_16(1200); +emit_16(1267); +emit_16(1201); +emit_16(1267); +emit_16(1200); +emit_16(1267); +emit_16(1201); +emit_16(1268); +emit_16(1202); +emit_16(1268); +emit_16(1201); +emit_16(1268); +emit_16(1202); +emit_16(1269); +emit_16(1203); +emit_16(1269); +emit_16(1202); +emit_16(1269); +emit_16(1203); +emit_16(1270); +emit_16(1204); +emit_16(1270); +emit_16(1203); +emit_16(1270); +emit_16(1204); +emit_16(1271); +emit_16(1205); +emit_16(1271); +emit_16(1204); +emit_16(1271); +emit_16(1205); +emit_16(1272); +emit_16(1206); +emit_16(1272); +emit_16(1205); +emit_16(1272); +emit_16(1206); +emit_16(1273); +emit_16(1207); +emit_16(1273); +emit_16(1206); +emit_16(1273); +emit_16(1207); +emit_16(1274); +emit_16(1208); +emit_16(1274); +emit_16(1207); +emit_16(1274); +emit_16(1208); +emit_16(1275); +emit_16(1209); +emit_16(1275); +emit_16(1208); +emit_16(1275); +emit_16(1209); +emit_16(1276); +emit_16(1210); +emit_16(1276); +emit_16(1209); +emit_16(1276); +emit_16(1210); +emit_16(1277); +emit_16(1211); +emit_16(1277); +emit_16(1210); +emit_16(1277); +emit_16(1211); +emit_16(1278); +emit_16(1212); +emit_16(1278); +emit_16(1211); +emit_16(1278); +emit_16(1212); +emit_16(1279); +emit_16(1213); +emit_16(1279); +emit_16(1212); +emit_16(1279); +emit_16(1213); +emit_16(1280); +emit_16(1214); +emit_16(1280); +emit_16(1213); +emit_16(1280); +emit_16(1214); +emit_16(1281); +emit_16(1215); +emit_16(1281); +emit_16(1214); +emit_16(1281); +emit_16(1215); +emit_16(1282); +emit_16(1216); +emit_16(1282); +emit_16(1215); +emit_16(1282); +emit_16(1216); +emit_16(1283); +emit_16(1217); +emit_16(1283); +emit_16(1216); +emit_16(1283); +emit_16(1217); +emit_16(1284); +emit_16(1218); +emit_16(1284); +emit_16(1217); +emit_16(1284); +emit_16(1218); +emit_16(1285); +emit_16(1219); +emit_16(1285); +emit_16(1218); +emit_16(1285); +emit_16(1219); +emit_16(1286); +emit_16(1220); +emit_16(1286); +emit_16(1219); +emit_16(1286); +emit_16(1220); +emit_16(1287); +emit_16(1221); +emit_16(1287); +emit_16(1220); +emit_16(1287); +emit_16(1221); +emit_16(1288); +emit_16(1222); +emit_16(1288); +emit_16(1221); +emit_16(1288); +emit_16(1222); +emit_16(1289); +emit_16(1223); +emit_16(1289); +emit_16(1222); +emit_16(1289); +emit_16(1223); +emit_16(1290); +emit_16(1224); +emit_16(1290); +emit_16(1223); +emit_16(1290); +emit_16(1224); +emit_16(1291); +emit_16(1225); +emit_16(1291); +emit_16(1224); +emit_16(1291); +emit_16(1225); +emit_16(1292); +emit_16(1226); +emit_16(1292); +emit_16(1225); +emit_16(1292); +emit_16(1226); +emit_16(1293); +emit_16(1227); +emit_16(1293); +emit_16(1226); +emit_16(1293); +emit_16(1227); +emit_16(1294); +emit_16(1228); +emit_16(1294); +emit_16(1227); +emit_16(1294); +emit_16(1228); +emit_16(1295); +emit_16(1229); +emit_16(1295); +emit_16(1228); +emit_16(1295); +emit_16(1229); +emit_16(1296); +emit_16(1230); +emit_16(1296); +emit_16(1229); +emit_16(1296); +emit_16(1230); +emit_16(1297); +emit_16(1231); +emit_16(1297); +emit_16(1230); +emit_16(1297); +emit_16(1231); +emit_16(1298); +emit_16(1232); +emit_16(1298); +emit_16(1231); +emit_16(1298); +emit_16(1232); +emit_16(1299); +emit_16(1233); +emit_16(1299); +emit_16(1232); +emit_16(1299); +emit_16(1233); +emit_16(1300); +emit_16(1234); +emit_16(1300); +emit_16(1233); +emit_16(1300); +emit_16(1234); +emit_16(1301); +emit_16(1235); +emit_16(1301); +emit_16(1234); +emit_16(1301); +emit_16(1235); +emit_16(1302); +emit_16(1236); +emit_16(1302); +emit_16(1235); +emit_16(1302); +emit_16(1236); +emit_16(1303); +emit_16(1237); +emit_16(1303); +emit_16(1236); +emit_16(1303); +emit_16(1237); +emit_16(1304); +emit_16(1238); +emit_16(1304); +emit_16(1237); +emit_16(1304); +emit_16(1238); +emit_16(1305); +emit_16(1239); +emit_16(1305); +emit_16(1238); +emit_16(1305); +emit_16(1239); +emit_16(1306); +emit_16(1240); +emit_16(1306); +emit_16(1239); +emit_16(1306); +emit_16(1240); +emit_16(1307); +emit_16(1241); +emit_16(1307); +emit_16(1240); +emit_16(1307); +emit_16(1241); +emit_16(1308); +emit_16(1242); +emit_16(1308); +emit_16(1241); +emit_16(1308); +emit_16(1242); +emit_16(1309); +emit_16(1243); +emit_16(1309); +emit_16(1242); +emit_16(1309); +emit_16(1243); +emit_16(1310); +emit_16(1244); +emit_16(1310); +emit_16(1243); +emit_16(1310); +emit_16(1244); +emit_16(1311); +emit_16(1245); +emit_16(1311); +emit_16(1244); +emit_16(1311); +emit_16(1245); +emit_16(1312); +emit_16(1246); +emit_16(1312); +emit_16(1245); +emit_16(1312); +emit_16(1246); +emit_16(1313); +emit_16(1247); +emit_16(1313); +emit_16(1246); +emit_16(1313); +emit_16(1247); +emit_16(1314); +emit_16(1248); +emit_16(1314); +emit_16(1247); +emit_16(1314); +emit_16(1248); +emit_16(1315); +emit_16(1249); +emit_16(1315); +emit_16(1248); +emit_16(1315); +emit_16(1249); +emit_16(1316); +emit_16(1250); +emit_16(1316); +emit_16(1249); +emit_16(1316); +emit_16(1250); +emit_16(1317); +emit_16(1251); +emit_16(1317); +emit_16(1250); +emit_16(1317); +emit_16(1251); +emit_16(1318); +emit_16(1252); +emit_16(1318); +emit_16(1251); +emit_16(1318); +emit_16(1252); +emit_16(1319); +emit_16(1253); +emit_16(1319); +emit_16(1252); +emit_16(1320); +emit_16(1254); +emit_16(1321); +emit_16(1255); +emit_16(1321); +emit_16(1254); +emit_16(1321); +emit_16(1255); +emit_16(1322); +emit_16(1256); +emit_16(1322); +emit_16(1255); +emit_16(1322); +emit_16(1256); +emit_16(1323); +emit_16(1257); +emit_16(1323); +emit_16(1256); +emit_16(1323); +emit_16(1257); +emit_16(1324); +emit_16(1258); +emit_16(1324); +emit_16(1257); +emit_16(1324); +emit_16(1258); +emit_16(1325); +emit_16(1259); +emit_16(1325); +emit_16(1258); +emit_16(1325); +emit_16(1259); +emit_16(1326); +emit_16(1260); +emit_16(1326); +emit_16(1259); +emit_16(1326); +emit_16(1260); +emit_16(1327); +emit_16(1261); +emit_16(1327); +emit_16(1260); +emit_16(1327); +emit_16(1261); +emit_16(1328); +emit_16(1262); +emit_16(1328); +emit_16(1261); +emit_16(1328); +emit_16(1262); +emit_16(1329); +emit_16(1263); +emit_16(1329); +emit_16(1262); +emit_16(1329); +emit_16(1263); +emit_16(1330); +emit_16(1264); +emit_16(1330); +emit_16(1263); +emit_16(1330); +emit_16(1264); +emit_16(1331); +emit_16(1265); +emit_16(1331); +emit_16(1264); +emit_16(1331); +emit_16(1265); +emit_16(1332); +emit_16(1266); +emit_16(1332); +emit_16(1265); +emit_16(1332); +emit_16(1266); +emit_16(1333); +emit_16(1267); +emit_16(1333); +emit_16(1266); +emit_16(1333); +emit_16(1267); +emit_16(1334); +emit_16(1268); +emit_16(1334); +emit_16(1267); +emit_16(1334); +emit_16(1268); +emit_16(1335); +emit_16(1269); +emit_16(1335); +emit_16(1268); +emit_16(1335); +emit_16(1269); +emit_16(1336); +emit_16(1270); +emit_16(1336); +emit_16(1269); +emit_16(1336); +emit_16(1270); +emit_16(1337); +emit_16(1271); +emit_16(1337); +emit_16(1270); +emit_16(1337); +emit_16(1271); +emit_16(1338); +emit_16(1272); +emit_16(1338); +emit_16(1271); +emit_16(1338); +emit_16(1272); +emit_16(1339); +emit_16(1273); +emit_16(1339); +emit_16(1272); +emit_16(1339); +emit_16(1273); +emit_16(1340); +emit_16(1274); +emit_16(1340); +emit_16(1273); +emit_16(1340); +emit_16(1274); +emit_16(1341); +emit_16(1275); +emit_16(1341); +emit_16(1274); +emit_16(1341); +emit_16(1275); +emit_16(1342); +emit_16(1276); +emit_16(1342); +emit_16(1275); +emit_16(1342); +emit_16(1276); +emit_16(1343); +emit_16(1277); +emit_16(1343); +emit_16(1276); +emit_16(1343); +emit_16(1277); +emit_16(1344); +emit_16(1278); +emit_16(1344); +emit_16(1277); +emit_16(1344); +emit_16(1278); +emit_16(1345); +emit_16(1279); +emit_16(1345); +emit_16(1278); +emit_16(1345); +emit_16(1279); +emit_16(1346); +emit_16(1280); +emit_16(1346); +emit_16(1279); +emit_16(1346); +emit_16(1280); +emit_16(1347); +emit_16(1281); +emit_16(1347); +emit_16(1280); +emit_16(1347); +emit_16(1281); +emit_16(1348); +emit_16(1282); +emit_16(1348); +emit_16(1281); +emit_16(1348); +emit_16(1282); +emit_16(1349); +emit_16(1283); +emit_16(1349); +emit_16(1282); +emit_16(1349); +emit_16(1283); +emit_16(1350); +emit_16(1284); +emit_16(1350); +emit_16(1283); +emit_16(1350); +emit_16(1284); +emit_16(1351); +emit_16(1285); +emit_16(1351); +emit_16(1284); +emit_16(1351); +emit_16(1285); +emit_16(1352); +emit_16(1286); +emit_16(1352); +emit_16(1285); +emit_16(1352); +emit_16(1286); +emit_16(1353); +emit_16(1287); +emit_16(1353); +emit_16(1286); +emit_16(1353); +emit_16(1287); +emit_16(1354); +emit_16(1288); +emit_16(1354); +emit_16(1287); +emit_16(1354); +emit_16(1288); +emit_16(1355); +emit_16(1289); +emit_16(1355); +emit_16(1288); +emit_16(1355); +emit_16(1289); +emit_16(1356); +emit_16(1290); +emit_16(1356); +emit_16(1289); +emit_16(1356); +emit_16(1290); +emit_16(1357); +emit_16(1291); +emit_16(1357); +emit_16(1290); +emit_16(1357); +emit_16(1291); +emit_16(1358); +emit_16(1292); +emit_16(1358); +emit_16(1291); +emit_16(1358); +emit_16(1292); +emit_16(1359); +emit_16(1293); +emit_16(1359); +emit_16(1292); +emit_16(1359); +emit_16(1293); +emit_16(1360); +emit_16(1294); +emit_16(1360); +emit_16(1293); +emit_16(1360); +emit_16(1294); +emit_16(1361); +emit_16(1295); +emit_16(1361); +emit_16(1294); +emit_16(1361); +emit_16(1295); +emit_16(1362); +emit_16(1296); +emit_16(1362); +emit_16(1295); +emit_16(1362); +emit_16(1296); +emit_16(1363); +emit_16(1297); +emit_16(1363); +emit_16(1296); +emit_16(1363); +emit_16(1297); +emit_16(1364); +emit_16(1298); +emit_16(1364); +emit_16(1297); +emit_16(1364); +emit_16(1298); +emit_16(1365); +emit_16(1299); +emit_16(1365); +emit_16(1298); +emit_16(1365); +emit_16(1299); +emit_16(1366); +emit_16(1300); +emit_16(1366); +emit_16(1299); +emit_16(1366); +emit_16(1300); +emit_16(1367); +emit_16(1301); +emit_16(1367); +emit_16(1300); +emit_16(1367); +emit_16(1301); +emit_16(1368); +emit_16(1302); +emit_16(1368); +emit_16(1301); +emit_16(1368); +emit_16(1302); +emit_16(1369); +emit_16(1303); +emit_16(1369); +emit_16(1302); +emit_16(1369); +emit_16(1303); +emit_16(1370); +emit_16(1304); +emit_16(1370); +emit_16(1303); +emit_16(1370); +emit_16(1304); +emit_16(1371); +emit_16(1305); +emit_16(1371); +emit_16(1304); +emit_16(1371); +emit_16(1305); +emit_16(1372); +emit_16(1306); +emit_16(1372); +emit_16(1305); +emit_16(1372); +emit_16(1306); +emit_16(1373); +emit_16(1307); +emit_16(1373); +emit_16(1306); +emit_16(1373); +emit_16(1307); +emit_16(1374); +emit_16(1308); +emit_16(1374); +emit_16(1307); +emit_16(1374); +emit_16(1308); +emit_16(1375); +emit_16(1309); +emit_16(1375); +emit_16(1308); +emit_16(1375); +emit_16(1309); +emit_16(1376); +emit_16(1310); +emit_16(1376); +emit_16(1309); +emit_16(1376); +emit_16(1310); +emit_16(1377); +emit_16(1311); +emit_16(1377); +emit_16(1310); +emit_16(1377); +emit_16(1311); +emit_16(1378); +emit_16(1312); +emit_16(1378); +emit_16(1311); +emit_16(1378); +emit_16(1312); +emit_16(1379); +emit_16(1313); +emit_16(1379); +emit_16(1312); +emit_16(1379); +emit_16(1313); +emit_16(1380); +emit_16(1314); +emit_16(1380); +emit_16(1313); +emit_16(1380); +emit_16(1314); +emit_16(1381); +emit_16(1315); +emit_16(1381); +emit_16(1314); +emit_16(1381); +emit_16(1315); +emit_16(1382); +emit_16(1316); +emit_16(1382); +emit_16(1315); +emit_16(1382); +emit_16(1316); +emit_16(1383); +emit_16(1317); +emit_16(1383); +emit_16(1316); +emit_16(1383); +emit_16(1317); +emit_16(1384); +emit_16(1318); +emit_16(1384); +emit_16(1317); +emit_16(1384); +emit_16(1318); +emit_16(1385); +emit_16(1319); +emit_16(1385); +emit_16(1318); +emit_16(1386); +emit_16(1320); +emit_16(1387); +emit_16(1321); +emit_16(1387); +emit_16(1320); +emit_16(1387); +emit_16(1321); +emit_16(1388); +emit_16(1322); +emit_16(1388); +emit_16(1321); +emit_16(1388); +emit_16(1322); +emit_16(1389); +emit_16(1323); +emit_16(1389); +emit_16(1322); +emit_16(1389); +emit_16(1323); +emit_16(1390); +emit_16(1324); +emit_16(1390); +emit_16(1323); +emit_16(1390); +emit_16(1324); +emit_16(1391); +emit_16(1325); +emit_16(1391); +emit_16(1324); +emit_16(1391); +emit_16(1325); +emit_16(1392); +emit_16(1326); +emit_16(1392); +emit_16(1325); +emit_16(1392); +emit_16(1326); +emit_16(1393); +emit_16(1327); +emit_16(1393); +emit_16(1326); +emit_16(1393); +emit_16(1327); +emit_16(1394); +emit_16(1328); +emit_16(1394); +emit_16(1327); +emit_16(1394); +emit_16(1328); +emit_16(1395); +emit_16(1329); +emit_16(1395); +emit_16(1328); +emit_16(1395); +emit_16(1329); +emit_16(1396); +emit_16(1330); +emit_16(1396); +emit_16(1329); +emit_16(1396); +emit_16(1330); +emit_16(1397); +emit_16(1331); +emit_16(1397); +emit_16(1330); +emit_16(1397); +emit_16(1331); +emit_16(1398); +emit_16(1332); +emit_16(1398); +emit_16(1331); +emit_16(1398); +emit_16(1332); +emit_16(1399); +emit_16(1333); +emit_16(1399); +emit_16(1332); +emit_16(1399); +emit_16(1333); +emit_16(1400); +emit_16(1334); +emit_16(1400); +emit_16(1333); +emit_16(1400); +emit_16(1334); +emit_16(1401); +emit_16(1335); +emit_16(1401); +emit_16(1334); +emit_16(1401); +emit_16(1335); +emit_16(1402); +emit_16(1336); +emit_16(1402); +emit_16(1335); +emit_16(1402); +emit_16(1336); +emit_16(1403); +emit_16(1337); +emit_16(1403); +emit_16(1336); +emit_16(1403); +emit_16(1337); +emit_16(1404); +emit_16(1338); +emit_16(1404); +emit_16(1337); +emit_16(1404); +emit_16(1338); +emit_16(1405); +emit_16(1339); +emit_16(1405); +emit_16(1338); +emit_16(1405); +emit_16(1339); +emit_16(1406); +emit_16(1340); +emit_16(1406); +emit_16(1339); +emit_16(1406); +emit_16(1340); +emit_16(1407); +emit_16(1341); +emit_16(1407); +emit_16(1340); +emit_16(1407); +emit_16(1341); +emit_16(1408); +emit_16(1342); +emit_16(1408); +emit_16(1341); +emit_16(1408); +emit_16(1342); +emit_16(1409); +emit_16(1343); +emit_16(1409); +emit_16(1342); +emit_16(1409); +emit_16(1343); +emit_16(1410); +emit_16(1344); +emit_16(1410); +emit_16(1343); +emit_16(1410); +emit_16(1344); +emit_16(1411); +emit_16(1345); +emit_16(1411); +emit_16(1344); +emit_16(1411); +emit_16(1345); +emit_16(1412); +emit_16(1346); +emit_16(1412); +emit_16(1345); +emit_16(1412); +emit_16(1346); +emit_16(1413); +emit_16(1347); +emit_16(1413); +emit_16(1346); +emit_16(1413); +emit_16(1347); +emit_16(1414); +emit_16(1348); +emit_16(1414); +emit_16(1347); +emit_16(1414); +emit_16(1348); +emit_16(1415); +emit_16(1349); +emit_16(1415); +emit_16(1348); +emit_16(1415); +emit_16(1349); +emit_16(1416); +emit_16(1350); +emit_16(1416); +emit_16(1349); +emit_16(1416); +emit_16(1350); +emit_16(1417); +emit_16(1351); +emit_16(1417); +emit_16(1350); +emit_16(1417); +emit_16(1351); +emit_16(1418); +emit_16(1352); +emit_16(1418); +emit_16(1351); +emit_16(1418); +emit_16(1352); +emit_16(1419); +emit_16(1353); +emit_16(1419); +emit_16(1352); +emit_16(1419); +emit_16(1353); +emit_16(1420); +emit_16(1354); +emit_16(1420); +emit_16(1353); +emit_16(1420); +emit_16(1354); +emit_16(1421); +emit_16(1355); +emit_16(1421); +emit_16(1354); +emit_16(1421); +emit_16(1355); +emit_16(1422); +emit_16(1356); +emit_16(1422); +emit_16(1355); +emit_16(1422); +emit_16(1356); +emit_16(1423); +emit_16(1357); +emit_16(1423); +emit_16(1356); +emit_16(1423); +emit_16(1357); +emit_16(1424); +emit_16(1358); +emit_16(1424); +emit_16(1357); +emit_16(1424); +emit_16(1358); +emit_16(1425); +emit_16(1359); +emit_16(1425); +emit_16(1358); +emit_16(1425); +emit_16(1359); +emit_16(1426); +emit_16(1360); +emit_16(1426); +emit_16(1359); +emit_16(1426); +emit_16(1360); +emit_16(1427); +emit_16(1361); +emit_16(1427); +emit_16(1360); +emit_16(1427); +emit_16(1361); +emit_16(1428); +emit_16(1362); +emit_16(1428); +emit_16(1361); +emit_16(1428); +emit_16(1362); +emit_16(1429); +emit_16(1363); +emit_16(1429); +emit_16(1362); +emit_16(1429); +emit_16(1363); +emit_16(1430); +emit_16(1364); +emit_16(1430); +emit_16(1363); +emit_16(1430); +emit_16(1364); +emit_16(1431); +emit_16(1365); +emit_16(1431); +emit_16(1364); +emit_16(1431); +emit_16(1365); +emit_16(1432); +emit_16(1366); +emit_16(1432); +emit_16(1365); +emit_16(1432); +emit_16(1366); +emit_16(1433); +emit_16(1367); +emit_16(1433); +emit_16(1366); +emit_16(1433); +emit_16(1367); +emit_16(1434); +emit_16(1368); +emit_16(1434); +emit_16(1367); +emit_16(1434); +emit_16(1368); +emit_16(1435); +emit_16(1369); +emit_16(1435); +emit_16(1368); +emit_16(1435); +emit_16(1369); +emit_16(1436); +emit_16(1370); +emit_16(1436); +emit_16(1369); +emit_16(1436); +emit_16(1370); +emit_16(1437); +emit_16(1371); +emit_16(1437); +emit_16(1370); +emit_16(1437); +emit_16(1371); +emit_16(1438); +emit_16(1372); +emit_16(1438); +emit_16(1371); +emit_16(1438); +emit_16(1372); +emit_16(1439); +emit_16(1373); +emit_16(1439); +emit_16(1372); +emit_16(1439); +emit_16(1373); +emit_16(1440); +emit_16(1374); +emit_16(1440); +emit_16(1373); +emit_16(1440); +emit_16(1374); +emit_16(1441); +emit_16(1375); +emit_16(1441); +emit_16(1374); +emit_16(1441); +emit_16(1375); +emit_16(1442); +emit_16(1376); +emit_16(1442); +emit_16(1375); +emit_16(1442); +emit_16(1376); +emit_16(1443); +emit_16(1377); +emit_16(1443); +emit_16(1376); +emit_16(1443); +emit_16(1377); +emit_16(1444); +emit_16(1378); +emit_16(1444); +emit_16(1377); +emit_16(1444); +emit_16(1378); +emit_16(1445); +emit_16(1379); +emit_16(1445); +emit_16(1378); +emit_16(1445); +emit_16(1379); +emit_16(1446); +emit_16(1380); +emit_16(1446); +emit_16(1379); +emit_16(1446); +emit_16(1380); +emit_16(1447); +emit_16(1381); +emit_16(1447); +emit_16(1380); +emit_16(1447); +emit_16(1381); +emit_16(1448); +emit_16(1382); +emit_16(1448); +emit_16(1381); +emit_16(1448); +emit_16(1382); +emit_16(1449); +emit_16(1383); +emit_16(1449); +emit_16(1382); +emit_16(1449); +emit_16(1383); +emit_16(1450); +emit_16(1384); +emit_16(1450); +emit_16(1383); +emit_16(1450); +emit_16(1384); +emit_16(1451); +emit_16(1385); +emit_16(1451); +emit_16(1384); +emit_16(1452); +emit_16(1386); +emit_16(1453); +emit_16(1387); +emit_16(1453); +emit_16(1386); +emit_16(1453); +emit_16(1387); +emit_16(1454); +emit_16(1388); +emit_16(1454); +emit_16(1387); +emit_16(1454); +emit_16(1388); +emit_16(1455); +emit_16(1389); +emit_16(1455); +emit_16(1388); +emit_16(1455); +emit_16(1389); +emit_16(1456); +emit_16(1390); +emit_16(1456); +emit_16(1389); +emit_16(1456); +emit_16(1390); +emit_16(1457); +emit_16(1391); +emit_16(1457); +emit_16(1390); +emit_16(1457); +emit_16(1391); +emit_16(1458); +emit_16(1392); +emit_16(1458); +emit_16(1391); +emit_16(1458); +emit_16(1392); +emit_16(1459); +emit_16(1393); +emit_16(1459); +emit_16(1392); +emit_16(1459); +emit_16(1393); +emit_16(1460); +emit_16(1394); +emit_16(1460); +emit_16(1393); +emit_16(1460); +emit_16(1394); +emit_16(1461); +emit_16(1395); +emit_16(1461); +emit_16(1394); +emit_16(1461); +emit_16(1395); +emit_16(1462); +emit_16(1396); +emit_16(1462); +emit_16(1395); +emit_16(1462); +emit_16(1396); +emit_16(1463); +emit_16(1397); +emit_16(1463); +emit_16(1396); +emit_16(1463); +emit_16(1397); +emit_16(1464); +emit_16(1398); +emit_16(1464); +emit_16(1397); +emit_16(1464); +emit_16(1398); +emit_16(1465); +emit_16(1399); +emit_16(1465); +emit_16(1398); +emit_16(1465); +emit_16(1399); +emit_16(1466); +emit_16(1400); +emit_16(1466); +emit_16(1399); +emit_16(1466); +emit_16(1400); +emit_16(1467); +emit_16(1401); +emit_16(1467); +emit_16(1400); +emit_16(1467); +emit_16(1401); +emit_16(1468); +emit_16(1402); +emit_16(1468); +emit_16(1401); +emit_16(1468); +emit_16(1402); +emit_16(1469); +emit_16(1403); +emit_16(1469); +emit_16(1402); +emit_16(1469); +emit_16(1403); +emit_16(1470); +emit_16(1404); +emit_16(1470); +emit_16(1403); +emit_16(1470); +emit_16(1404); +emit_16(1471); +emit_16(1405); +emit_16(1471); +emit_16(1404); +emit_16(1471); +emit_16(1405); +emit_16(1472); +emit_16(1406); +emit_16(1472); +emit_16(1405); +emit_16(1472); +emit_16(1406); +emit_16(1473); +emit_16(1407); +emit_16(1473); +emit_16(1406); +emit_16(1473); +emit_16(1407); +emit_16(1474); +emit_16(1408); +emit_16(1474); +emit_16(1407); +emit_16(1474); +emit_16(1408); +emit_16(1475); +emit_16(1409); +emit_16(1475); +emit_16(1408); +emit_16(1475); +emit_16(1409); +emit_16(1476); +emit_16(1410); +emit_16(1476); +emit_16(1409); +emit_16(1476); +emit_16(1410); +emit_16(1477); +emit_16(1411); +emit_16(1477); +emit_16(1410); +emit_16(1477); +emit_16(1411); +emit_16(1478); +emit_16(1412); +emit_16(1478); +emit_16(1411); +emit_16(1478); +emit_16(1412); +emit_16(1479); +emit_16(1413); +emit_16(1479); +emit_16(1412); +emit_16(1479); +emit_16(1413); +emit_16(1480); +emit_16(1414); +emit_16(1480); +emit_16(1413); +emit_16(1480); +emit_16(1414); +emit_16(1481); +emit_16(1415); +emit_16(1481); +emit_16(1414); +emit_16(1481); +emit_16(1415); +emit_16(1482); +emit_16(1416); +emit_16(1482); +emit_16(1415); +emit_16(1482); +emit_16(1416); +emit_16(1483); +emit_16(1417); +emit_16(1483); +emit_16(1416); +emit_16(1483); +emit_16(1417); +emit_16(1484); +emit_16(1418); +emit_16(1484); +emit_16(1417); +emit_16(1484); +emit_16(1418); +emit_16(1485); +emit_16(1419); +emit_16(1485); +emit_16(1418); +emit_16(1485); +emit_16(1419); +emit_16(1486); +emit_16(1420); +emit_16(1486); +emit_16(1419); +emit_16(1486); +emit_16(1420); +emit_16(1487); +emit_16(1421); +emit_16(1487); +emit_16(1420); +emit_16(1487); +emit_16(1421); +emit_16(1488); +emit_16(1422); +emit_16(1488); +emit_16(1421); +emit_16(1488); +emit_16(1422); +emit_16(1489); +emit_16(1423); +emit_16(1489); +emit_16(1422); +emit_16(1489); +emit_16(1423); +emit_16(1490); +emit_16(1424); +emit_16(1490); +emit_16(1423); +emit_16(1490); +emit_16(1424); +emit_16(1491); +emit_16(1425); +emit_16(1491); +emit_16(1424); +emit_16(1491); +emit_16(1425); +emit_16(1492); +emit_16(1426); +emit_16(1492); +emit_16(1425); +emit_16(1492); +emit_16(1426); +emit_16(1493); +emit_16(1427); +emit_16(1493); +emit_16(1426); +emit_16(1493); +emit_16(1427); +emit_16(1494); +emit_16(1428); +emit_16(1494); +emit_16(1427); +emit_16(1494); +emit_16(1428); +emit_16(1495); +emit_16(1429); +emit_16(1495); +emit_16(1428); +emit_16(1495); +emit_16(1429); +emit_16(1496); +emit_16(1430); +emit_16(1496); +emit_16(1429); +emit_16(1496); +emit_16(1430); +emit_16(1497); +emit_16(1431); +emit_16(1497); +emit_16(1430); +emit_16(1497); +emit_16(1431); +emit_16(1498); +emit_16(1432); +emit_16(1498); +emit_16(1431); +emit_16(1498); +emit_16(1432); +emit_16(1499); +emit_16(1433); +emit_16(1499); +emit_16(1432); +emit_16(1499); +emit_16(1433); +emit_16(1500); +emit_16(1434); +emit_16(1500); +emit_16(1433); +emit_16(1500); +emit_16(1434); +emit_16(1501); +emit_16(1435); +emit_16(1501); +emit_16(1434); +emit_16(1501); +emit_16(1435); +emit_16(1502); +emit_16(1436); +emit_16(1502); +emit_16(1435); +emit_16(1502); +emit_16(1436); +emit_16(1503); +emit_16(1437); +emit_16(1503); +emit_16(1436); +emit_16(1503); +emit_16(1437); +emit_16(1504); +emit_16(1438); +emit_16(1504); +emit_16(1437); +emit_16(1504); +emit_16(1438); +emit_16(1505); +emit_16(1439); +emit_16(1505); +emit_16(1438); +emit_16(1505); +emit_16(1439); +emit_16(1506); +emit_16(1440); +emit_16(1506); +emit_16(1439); +emit_16(1506); +emit_16(1440); +emit_16(1507); +emit_16(1441); +emit_16(1507); +emit_16(1440); +emit_16(1507); +emit_16(1441); +emit_16(1508); +emit_16(1442); +emit_16(1508); +emit_16(1441); +emit_16(1508); +emit_16(1442); +emit_16(1509); +emit_16(1443); +emit_16(1509); +emit_16(1442); +emit_16(1509); +emit_16(1443); +emit_16(1510); +emit_16(1444); +emit_16(1510); +emit_16(1443); +emit_16(1510); +emit_16(1444); +emit_16(1511); +emit_16(1445); +emit_16(1511); +emit_16(1444); +emit_16(1511); +emit_16(1445); +emit_16(1512); +emit_16(1446); +emit_16(1512); +emit_16(1445); +emit_16(1512); +emit_16(1446); +emit_16(1513); +emit_16(1447); +emit_16(1513); +emit_16(1446); +emit_16(1513); +emit_16(1447); +emit_16(1514); +emit_16(1448); +emit_16(1514); +emit_16(1447); +emit_16(1514); +emit_16(1448); +emit_16(1515); +emit_16(1449); +emit_16(1515); +emit_16(1448); +emit_16(1515); +emit_16(1449); +emit_16(1516); +emit_16(1450); +emit_16(1516); +emit_16(1449); +emit_16(1516); +emit_16(1450); +emit_16(1517); +emit_16(1451); +emit_16(1517); +emit_16(1450); +emit_16(1518); +emit_16(1452); +emit_16(1519); +emit_16(1453); +emit_16(1519); +emit_16(1452); +emit_16(1519); +emit_16(1453); +emit_16(1520); +emit_16(1454); +emit_16(1520); +emit_16(1453); +emit_16(1520); +emit_16(1454); +emit_16(1521); +emit_16(1455); +emit_16(1521); +emit_16(1454); +emit_16(1521); +emit_16(1455); +emit_16(1522); +emit_16(1456); +emit_16(1522); +emit_16(1455); +emit_16(1522); +emit_16(1456); +emit_16(1523); +emit_16(1457); +emit_16(1523); +emit_16(1456); +emit_16(1523); +emit_16(1457); +emit_16(1524); +emit_16(1458); +emit_16(1524); +emit_16(1457); +emit_16(1524); +emit_16(1458); +emit_16(1525); +emit_16(1459); +emit_16(1525); +emit_16(1458); +emit_16(1525); +emit_16(1459); +emit_16(1526); +emit_16(1460); +emit_16(1526); +emit_16(1459); +emit_16(1526); +emit_16(1460); +emit_16(1527); +emit_16(1461); +emit_16(1527); +emit_16(1460); +emit_16(1527); +emit_16(1461); +emit_16(1528); +emit_16(1462); +emit_16(1528); +emit_16(1461); +emit_16(1528); +emit_16(1462); +emit_16(1529); +emit_16(1463); +emit_16(1529); +emit_16(1462); +emit_16(1529); +emit_16(1463); +emit_16(1530); +emit_16(1464); +emit_16(1530); +emit_16(1463); +emit_16(1530); +emit_16(1464); +emit_16(1531); +emit_16(1465); +emit_16(1531); +emit_16(1464); +emit_16(1531); +emit_16(1465); +emit_16(1532); +emit_16(1466); +emit_16(1532); +emit_16(1465); +emit_16(1532); +emit_16(1466); +emit_16(1533); +emit_16(1467); +emit_16(1533); +emit_16(1466); +emit_16(1533); +emit_16(1467); +emit_16(1534); +emit_16(1468); +emit_16(1534); +emit_16(1467); +emit_16(1534); +emit_16(1468); +emit_16(1535); +emit_16(1469); +emit_16(1535); +emit_16(1468); +emit_16(1535); +emit_16(1469); +emit_16(1536); +emit_16(1470); +emit_16(1536); +emit_16(1469); +emit_16(1536); +emit_16(1470); +emit_16(1537); +emit_16(1471); +emit_16(1537); +emit_16(1470); +emit_16(1537); +emit_16(1471); +emit_16(1538); +emit_16(1472); +emit_16(1538); +emit_16(1471); +emit_16(1538); +emit_16(1472); +emit_16(1539); +emit_16(1473); +emit_16(1539); +emit_16(1472); +emit_16(1539); +emit_16(1473); +emit_16(1540); +emit_16(1474); +emit_16(1540); +emit_16(1473); +emit_16(1540); +emit_16(1474); +emit_16(1541); +emit_16(1475); +emit_16(1541); +emit_16(1474); +emit_16(1541); +emit_16(1475); +emit_16(1542); +emit_16(1476); +emit_16(1542); +emit_16(1475); +emit_16(1542); +emit_16(1476); +emit_16(1543); +emit_16(1477); +emit_16(1543); +emit_16(1476); +emit_16(1543); +emit_16(1477); +emit_16(1544); +emit_16(1478); +emit_16(1544); +emit_16(1477); +emit_16(1544); +emit_16(1478); +emit_16(1545); +emit_16(1479); +emit_16(1545); +emit_16(1478); +emit_16(1545); +emit_16(1479); +emit_16(1546); +emit_16(1480); +emit_16(1546); +emit_16(1479); +emit_16(1546); +emit_16(1480); +emit_16(1547); +emit_16(1481); +emit_16(1547); +emit_16(1480); +emit_16(1547); +emit_16(1481); +emit_16(1548); +emit_16(1482); +emit_16(1548); +emit_16(1481); +emit_16(1548); +emit_16(1482); +emit_16(1549); +emit_16(1483); +emit_16(1549); +emit_16(1482); +emit_16(1549); +emit_16(1483); +emit_16(1550); +emit_16(1484); +emit_16(1550); +emit_16(1483); +emit_16(1550); +emit_16(1484); +emit_16(1551); +emit_16(1485); +emit_16(1551); +emit_16(1484); +emit_16(1551); +emit_16(1485); +emit_16(1552); +emit_16(1486); +emit_16(1552); +emit_16(1485); +emit_16(1552); +emit_16(1486); +emit_16(1553); +emit_16(1487); +emit_16(1553); +emit_16(1486); +emit_16(1553); +emit_16(1487); +emit_16(1554); +emit_16(1488); +emit_16(1554); +emit_16(1487); +emit_16(1554); +emit_16(1488); +emit_16(1555); +emit_16(1489); +emit_16(1555); +emit_16(1488); +emit_16(1555); +emit_16(1489); +emit_16(1556); +emit_16(1490); +emit_16(1556); +emit_16(1489); +emit_16(1556); +emit_16(1490); +emit_16(1557); +emit_16(1491); +emit_16(1557); +emit_16(1490); +emit_16(1557); +emit_16(1491); +emit_16(1558); +emit_16(1492); +emit_16(1558); +emit_16(1491); +emit_16(1558); +emit_16(1492); +emit_16(1559); +emit_16(1493); +emit_16(1559); +emit_16(1492); +emit_16(1559); +emit_16(1493); +emit_16(1560); +emit_16(1494); +emit_16(1560); +emit_16(1493); +emit_16(1560); +emit_16(1494); +emit_16(1561); +emit_16(1495); +emit_16(1561); +emit_16(1494); +emit_16(1561); +emit_16(1495); +emit_16(1562); +emit_16(1496); +emit_16(1562); +emit_16(1495); +emit_16(1562); +emit_16(1496); +emit_16(1563); +emit_16(1497); +emit_16(1563); +emit_16(1496); +emit_16(1563); +emit_16(1497); +emit_16(1564); +emit_16(1498); +emit_16(1564); +emit_16(1497); +emit_16(1564); +emit_16(1498); +emit_16(1565); +emit_16(1499); +emit_16(1565); +emit_16(1498); +emit_16(1565); +emit_16(1499); +emit_16(1566); +emit_16(1500); +emit_16(1566); +emit_16(1499); +emit_16(1566); +emit_16(1500); +emit_16(1567); +emit_16(1501); +emit_16(1567); +emit_16(1500); +emit_16(1567); +emit_16(1501); +emit_16(1568); +emit_16(1502); +emit_16(1568); +emit_16(1501); +emit_16(1568); +emit_16(1502); +emit_16(1569); +emit_16(1503); +emit_16(1569); +emit_16(1502); +emit_16(1569); +emit_16(1503); +emit_16(1570); +emit_16(1504); +emit_16(1570); +emit_16(1503); +emit_16(1570); +emit_16(1504); +emit_16(1571); +emit_16(1505); +emit_16(1571); +emit_16(1504); +emit_16(1571); +emit_16(1505); +emit_16(1572); +emit_16(1506); +emit_16(1572); +emit_16(1505); +emit_16(1572); +emit_16(1506); +emit_16(1573); +emit_16(1507); +emit_16(1573); +emit_16(1506); +emit_16(1573); +emit_16(1507); +emit_16(1574); +emit_16(1508); +emit_16(1574); +emit_16(1507); +emit_16(1574); +emit_16(1508); +emit_16(1575); +emit_16(1509); +emit_16(1575); +emit_16(1508); +emit_16(1575); +emit_16(1509); +emit_16(1576); +emit_16(1510); +emit_16(1576); +emit_16(1509); +emit_16(1576); +emit_16(1510); +emit_16(1577); +emit_16(1511); +emit_16(1577); +emit_16(1510); +emit_16(1577); +emit_16(1511); +emit_16(1578); +emit_16(1512); +emit_16(1578); +emit_16(1511); +emit_16(1578); +emit_16(1512); +emit_16(1579); +emit_16(1513); +emit_16(1579); +emit_16(1512); +emit_16(1579); +emit_16(1513); +emit_16(1580); +emit_16(1514); +emit_16(1580); +emit_16(1513); +emit_16(1580); +emit_16(1514); +emit_16(1581); +emit_16(1515); +emit_16(1581); +emit_16(1514); +emit_16(1581); +emit_16(1515); +emit_16(1582); +emit_16(1516); +emit_16(1582); +emit_16(1515); +emit_16(1582); +emit_16(1516); +emit_16(1583); +emit_16(1517); +emit_16(1583); +emit_16(1516); +emit_16(1584); +emit_16(1518); +emit_16(1585); +emit_16(1519); +emit_16(1585); +emit_16(1518); +emit_16(1585); +emit_16(1519); +emit_16(1586); +emit_16(1520); +emit_16(1586); +emit_16(1519); +emit_16(1586); +emit_16(1520); +emit_16(1587); +emit_16(1521); +emit_16(1587); +emit_16(1520); +emit_16(1587); +emit_16(1521); +emit_16(1588); +emit_16(1522); +emit_16(1588); +emit_16(1521); +emit_16(1588); +emit_16(1522); +emit_16(1589); +emit_16(1523); +emit_16(1589); +emit_16(1522); +emit_16(1589); +emit_16(1523); +emit_16(1590); +emit_16(1524); +emit_16(1590); +emit_16(1523); +emit_16(1590); +emit_16(1524); +emit_16(1591); +emit_16(1525); +emit_16(1591); +emit_16(1524); +emit_16(1591); +emit_16(1525); +emit_16(1592); +emit_16(1526); +emit_16(1592); +emit_16(1525); +emit_16(1592); +emit_16(1526); +emit_16(1593); +emit_16(1527); +emit_16(1593); +emit_16(1526); +emit_16(1593); +emit_16(1527); +emit_16(1594); +emit_16(1528); +emit_16(1594); +emit_16(1527); +emit_16(1594); +emit_16(1528); +emit_16(1595); +emit_16(1529); +emit_16(1595); +emit_16(1528); +emit_16(1595); +emit_16(1529); +emit_16(1596); +emit_16(1530); +emit_16(1596); +emit_16(1529); +emit_16(1596); +emit_16(1530); +emit_16(1597); +emit_16(1531); +emit_16(1597); +emit_16(1530); +emit_16(1597); +emit_16(1531); +emit_16(1598); +emit_16(1532); +emit_16(1598); +emit_16(1531); +emit_16(1598); +emit_16(1532); +emit_16(1599); +emit_16(1533); +emit_16(1599); +emit_16(1532); +emit_16(1599); +emit_16(1533); +emit_16(1600); +emit_16(1534); +emit_16(1600); +emit_16(1533); +emit_16(1600); +emit_16(1534); +emit_16(1601); +emit_16(1535); +emit_16(1601); +emit_16(1534); +emit_16(1601); +emit_16(1535); +emit_16(1602); +emit_16(1536); +emit_16(1602); +emit_16(1535); +emit_16(1602); +emit_16(1536); +emit_16(1603); +emit_16(1537); +emit_16(1603); +emit_16(1536); +emit_16(1603); +emit_16(1537); +emit_16(1604); +emit_16(1538); +emit_16(1604); +emit_16(1537); +emit_16(1604); +emit_16(1538); +emit_16(1605); +emit_16(1539); +emit_16(1605); +emit_16(1538); +emit_16(1605); +emit_16(1539); +emit_16(1606); +emit_16(1540); +emit_16(1606); +emit_16(1539); +emit_16(1606); +emit_16(1540); +emit_16(1607); +emit_16(1541); +emit_16(1607); +emit_16(1540); +emit_16(1607); +emit_16(1541); +emit_16(1608); +emit_16(1542); +emit_16(1608); +emit_16(1541); +emit_16(1608); +emit_16(1542); +emit_16(1609); +emit_16(1543); +emit_16(1609); +emit_16(1542); +emit_16(1609); +emit_16(1543); +emit_16(1610); +emit_16(1544); +emit_16(1610); +emit_16(1543); +emit_16(1610); +emit_16(1544); +emit_16(1611); +emit_16(1545); +emit_16(1611); +emit_16(1544); +emit_16(1611); +emit_16(1545); +emit_16(1612); +emit_16(1546); +emit_16(1612); +emit_16(1545); +emit_16(1612); +emit_16(1546); +emit_16(1613); +emit_16(1547); +emit_16(1613); +emit_16(1546); +emit_16(1613); +emit_16(1547); +emit_16(1614); +emit_16(1548); +emit_16(1614); +emit_16(1547); +emit_16(1614); +emit_16(1548); +emit_16(1615); +emit_16(1549); +emit_16(1615); +emit_16(1548); +emit_16(1615); +emit_16(1549); +emit_16(1616); +emit_16(1550); +emit_16(1616); +emit_16(1549); +emit_16(1616); +emit_16(1550); +emit_16(1617); +emit_16(1551); +emit_16(1617); +emit_16(1550); +emit_16(1617); +emit_16(1551); +emit_16(1618); +emit_16(1552); +emit_16(1618); +emit_16(1551); +emit_16(1618); +emit_16(1552); +emit_16(1619); +emit_16(1553); +emit_16(1619); +emit_16(1552); +emit_16(1619); +emit_16(1553); +emit_16(1620); +emit_16(1554); +emit_16(1620); +emit_16(1553); +emit_16(1620); +emit_16(1554); +emit_16(1621); +emit_16(1555); +emit_16(1621); +emit_16(1554); +emit_16(1621); +emit_16(1555); +emit_16(1622); +emit_16(1556); +emit_16(1622); +emit_16(1555); +emit_16(1622); +emit_16(1556); +emit_16(1623); +emit_16(1557); +emit_16(1623); +emit_16(1556); +emit_16(1623); +emit_16(1557); +emit_16(1624); +emit_16(1558); +emit_16(1624); +emit_16(1557); +emit_16(1624); +emit_16(1558); +emit_16(1625); +emit_16(1559); +emit_16(1625); +emit_16(1558); +emit_16(1625); +emit_16(1559); +emit_16(1626); +emit_16(1560); +emit_16(1626); +emit_16(1559); +emit_16(1626); +emit_16(1560); +emit_16(1627); +emit_16(1561); +emit_16(1627); +emit_16(1560); +emit_16(1627); +emit_16(1561); +emit_16(1628); +emit_16(1562); +emit_16(1628); +emit_16(1561); +emit_16(1628); +emit_16(1562); +emit_16(1629); +emit_16(1563); +emit_16(1629); +emit_16(1562); +emit_16(1629); +emit_16(1563); +emit_16(1630); +emit_16(1564); +emit_16(1630); +emit_16(1563); +emit_16(1630); +emit_16(1564); +emit_16(1631); +emit_16(1565); +emit_16(1631); +emit_16(1564); +emit_16(1631); +emit_16(1565); +emit_16(1632); +emit_16(1566); +emit_16(1632); +emit_16(1565); +emit_16(1632); +emit_16(1566); +emit_16(1633); +emit_16(1567); +emit_16(1633); +emit_16(1566); +emit_16(1633); +emit_16(1567); +emit_16(1634); +emit_16(1568); +emit_16(1634); +emit_16(1567); +emit_16(1634); +emit_16(1568); +emit_16(1635); +emit_16(1569); +emit_16(1635); +emit_16(1568); +emit_16(1635); +emit_16(1569); +emit_16(1636); +emit_16(1570); +emit_16(1636); +emit_16(1569); +emit_16(1636); +emit_16(1570); +emit_16(1637); +emit_16(1571); +emit_16(1637); +emit_16(1570); +emit_16(1637); +emit_16(1571); +emit_16(1638); +emit_16(1572); +emit_16(1638); +emit_16(1571); +emit_16(1638); +emit_16(1572); +emit_16(1639); +emit_16(1573); +emit_16(1639); +emit_16(1572); +emit_16(1639); +emit_16(1573); +emit_16(1640); +emit_16(1574); +emit_16(1640); +emit_16(1573); +emit_16(1640); +emit_16(1574); +emit_16(1641); +emit_16(1575); +emit_16(1641); +emit_16(1574); +emit_16(1641); +emit_16(1575); +emit_16(1642); +emit_16(1576); +emit_16(1642); +emit_16(1575); +emit_16(1642); +emit_16(1576); +emit_16(1643); +emit_16(1577); +emit_16(1643); +emit_16(1576); +emit_16(1643); +emit_16(1577); +emit_16(1644); +emit_16(1578); +emit_16(1644); +emit_16(1577); +emit_16(1644); +emit_16(1578); +emit_16(1645); +emit_16(1579); +emit_16(1645); +emit_16(1578); +emit_16(1645); +emit_16(1579); +emit_16(1646); +emit_16(1580); +emit_16(1646); +emit_16(1579); +emit_16(1646); +emit_16(1580); +emit_16(1647); +emit_16(1581); +emit_16(1647); +emit_16(1580); +emit_16(1647); +emit_16(1581); +emit_16(1648); +emit_16(1582); +emit_16(1648); +emit_16(1581); +emit_16(1648); +emit_16(1582); +emit_16(1649); +emit_16(1583); +emit_16(1649); +emit_16(1582); +emit_16(1650); +emit_16(1584); +emit_16(1651); +emit_16(1585); +emit_16(1651); +emit_16(1584); +emit_16(1651); +emit_16(1585); +emit_16(1652); +emit_16(1586); +emit_16(1652); +emit_16(1585); +emit_16(1652); +emit_16(1586); +emit_16(1653); +emit_16(1587); +emit_16(1653); +emit_16(1586); +emit_16(1653); +emit_16(1587); +emit_16(1654); +emit_16(1588); +emit_16(1654); +emit_16(1587); +emit_16(1654); +emit_16(1588); +emit_16(1655); +emit_16(1589); +emit_16(1655); +emit_16(1588); +emit_16(1655); +emit_16(1589); +emit_16(1656); +emit_16(1590); +emit_16(1656); +emit_16(1589); +emit_16(1656); +emit_16(1590); +emit_16(1657); +emit_16(1591); +emit_16(1657); +emit_16(1590); +emit_16(1657); +emit_16(1591); +emit_16(1658); +emit_16(1592); +emit_16(1658); +emit_16(1591); +emit_16(1658); +emit_16(1592); +emit_16(1659); +emit_16(1593); +emit_16(1659); +emit_16(1592); +emit_16(1659); +emit_16(1593); +emit_16(1660); +emit_16(1594); +emit_16(1660); +emit_16(1593); +emit_16(1660); +emit_16(1594); +emit_16(1661); +emit_16(1595); +emit_16(1661); +emit_16(1594); +emit_16(1661); +emit_16(1595); +emit_16(1662); +emit_16(1596); +emit_16(1662); +emit_16(1595); +emit_16(1662); +emit_16(1596); +emit_16(1663); +emit_16(1597); +emit_16(1663); +emit_16(1596); +emit_16(1663); +emit_16(1597); +emit_16(1664); +emit_16(1598); +emit_16(1664); +emit_16(1597); +emit_16(1664); +emit_16(1598); +emit_16(1665); +emit_16(1599); +emit_16(1665); +emit_16(1598); +emit_16(1665); +emit_16(1599); +emit_16(1666); +emit_16(1600); +emit_16(1666); +emit_16(1599); +emit_16(1666); +emit_16(1600); +emit_16(1667); +emit_16(1601); +emit_16(1667); +emit_16(1600); +emit_16(1667); +emit_16(1601); +emit_16(1668); +emit_16(1602); +emit_16(1668); +emit_16(1601); +emit_16(1668); +emit_16(1602); +emit_16(1669); +emit_16(1603); +emit_16(1669); +emit_16(1602); +emit_16(1669); +emit_16(1603); +emit_16(1670); +emit_16(1604); +emit_16(1670); +emit_16(1603); +emit_16(1670); +emit_16(1604); +emit_16(1671); +emit_16(1605); +emit_16(1671); +emit_16(1604); +emit_16(1671); +emit_16(1605); +emit_16(1672); +emit_16(1606); +emit_16(1672); +emit_16(1605); +emit_16(1672); +emit_16(1606); +emit_16(1673); +emit_16(1607); +emit_16(1673); +emit_16(1606); +emit_16(1673); +emit_16(1607); +emit_16(1674); +emit_16(1608); +emit_16(1674); +emit_16(1607); +emit_16(1674); +emit_16(1608); +emit_16(1675); +emit_16(1609); +emit_16(1675); +emit_16(1608); +emit_16(1675); +emit_16(1609); +emit_16(1676); +emit_16(1610); +emit_16(1676); +emit_16(1609); +emit_16(1676); +emit_16(1610); +emit_16(1677); +emit_16(1611); +emit_16(1677); +emit_16(1610); +emit_16(1677); +emit_16(1611); +emit_16(1678); +emit_16(1612); +emit_16(1678); +emit_16(1611); +emit_16(1678); +emit_16(1612); +emit_16(1679); +emit_16(1613); +emit_16(1679); +emit_16(1612); +emit_16(1679); +emit_16(1613); +emit_16(1680); +emit_16(1614); +emit_16(1680); +emit_16(1613); +emit_16(1680); +emit_16(1614); +emit_16(1681); +emit_16(1615); +emit_16(1681); +emit_16(1614); +emit_16(1681); +emit_16(1615); +emit_16(1682); +emit_16(1616); +emit_16(1682); +emit_16(1615); +emit_16(1682); +emit_16(1616); +emit_16(1683); +emit_16(1617); +emit_16(1683); +emit_16(1616); +emit_16(1683); +emit_16(1617); +emit_16(1684); +emit_16(1618); +emit_16(1684); +emit_16(1617); +emit_16(1684); +emit_16(1618); +emit_16(1685); +emit_16(1619); +emit_16(1685); +emit_16(1618); +emit_16(1685); +emit_16(1619); +emit_16(1686); +emit_16(1620); +emit_16(1686); +emit_16(1619); +emit_16(1686); +emit_16(1620); +emit_16(1687); +emit_16(1621); +emit_16(1687); +emit_16(1620); +emit_16(1687); +emit_16(1621); +emit_16(1688); +emit_16(1622); +emit_16(1688); +emit_16(1621); +emit_16(1688); +emit_16(1622); +emit_16(1689); +emit_16(1623); +emit_16(1689); +emit_16(1622); +emit_16(1689); +emit_16(1623); +emit_16(1690); +emit_16(1624); +emit_16(1690); +emit_16(1623); +emit_16(1690); +emit_16(1624); +emit_16(1691); +emit_16(1625); +emit_16(1691); +emit_16(1624); +emit_16(1691); +emit_16(1625); +emit_16(1692); +emit_16(1626); +emit_16(1692); +emit_16(1625); +emit_16(1692); +emit_16(1626); +emit_16(1693); +emit_16(1627); +emit_16(1693); +emit_16(1626); +emit_16(1693); +emit_16(1627); +emit_16(1694); +emit_16(1628); +emit_16(1694); +emit_16(1627); +emit_16(1694); +emit_16(1628); +emit_16(1695); +emit_16(1629); +emit_16(1695); +emit_16(1628); +emit_16(1695); +emit_16(1629); +emit_16(1696); +emit_16(1630); +emit_16(1696); +emit_16(1629); +emit_16(1696); +emit_16(1630); +emit_16(1697); +emit_16(1631); +emit_16(1697); +emit_16(1630); +emit_16(1697); +emit_16(1631); +emit_16(1698); +emit_16(1632); +emit_16(1698); +emit_16(1631); +emit_16(1698); +emit_16(1632); +emit_16(1699); +emit_16(1633); +emit_16(1699); +emit_16(1632); +emit_16(1699); +emit_16(1633); +emit_16(1700); +emit_16(1634); +emit_16(1700); +emit_16(1633); +emit_16(1700); +emit_16(1634); +emit_16(1701); +emit_16(1635); +emit_16(1701); +emit_16(1634); +emit_16(1701); +emit_16(1635); +emit_16(1702); +emit_16(1636); +emit_16(1702); +emit_16(1635); +emit_16(1702); +emit_16(1636); +emit_16(1703); +emit_16(1637); +emit_16(1703); +emit_16(1636); +emit_16(1703); +emit_16(1637); +emit_16(1704); +emit_16(1638); +emit_16(1704); +emit_16(1637); +emit_16(1704); +emit_16(1638); +emit_16(1705); +emit_16(1639); +emit_16(1705); +emit_16(1638); +emit_16(1705); +emit_16(1639); +emit_16(1706); +emit_16(1640); +emit_16(1706); +emit_16(1639); +emit_16(1706); +emit_16(1640); +emit_16(1707); +emit_16(1641); +emit_16(1707); +emit_16(1640); +emit_16(1707); +emit_16(1641); +emit_16(1708); +emit_16(1642); +emit_16(1708); +emit_16(1641); +emit_16(1708); +emit_16(1642); +emit_16(1709); +emit_16(1643); +emit_16(1709); +emit_16(1642); +emit_16(1709); +emit_16(1643); +emit_16(1710); +emit_16(1644); +emit_16(1710); +emit_16(1643); +emit_16(1710); +emit_16(1644); +emit_16(1711); +emit_16(1645); +emit_16(1711); +emit_16(1644); +emit_16(1711); +emit_16(1645); +emit_16(1712); +emit_16(1646); +emit_16(1712); +emit_16(1645); +emit_16(1712); +emit_16(1646); +emit_16(1713); +emit_16(1647); +emit_16(1713); +emit_16(1646); +emit_16(1713); +emit_16(1647); +emit_16(1714); +emit_16(1648); +emit_16(1714); +emit_16(1647); +emit_16(1714); +emit_16(1648); +emit_16(1715); +emit_16(1649); +emit_16(1715); +emit_16(1648); +emit_16(1716); +emit_16(1650); +emit_16(1717); +emit_16(1651); +emit_16(1717); +emit_16(1650); +emit_16(1717); +emit_16(1651); +emit_16(1718); +emit_16(1652); +emit_16(1718); +emit_16(1651); +emit_16(1718); +emit_16(1652); +emit_16(1719); +emit_16(1653); +emit_16(1719); +emit_16(1652); +emit_16(1719); +emit_16(1653); +emit_16(1720); +emit_16(1654); +emit_16(1720); +emit_16(1653); +emit_16(1720); +emit_16(1654); +emit_16(1721); +emit_16(1655); +emit_16(1721); +emit_16(1654); +emit_16(1721); +emit_16(1655); +emit_16(1722); +emit_16(1656); +emit_16(1722); +emit_16(1655); +emit_16(1722); +emit_16(1656); +emit_16(1723); +emit_16(1657); +emit_16(1723); +emit_16(1656); +emit_16(1723); +emit_16(1657); +emit_16(1724); +emit_16(1658); +emit_16(1724); +emit_16(1657); +emit_16(1724); +emit_16(1658); +emit_16(1725); +emit_16(1659); +emit_16(1725); +emit_16(1658); +emit_16(1725); +emit_16(1659); +emit_16(1726); +emit_16(1660); +emit_16(1726); +emit_16(1659); +emit_16(1726); +emit_16(1660); +emit_16(1727); +emit_16(1661); +emit_16(1727); +emit_16(1660); +emit_16(1727); +emit_16(1661); +emit_16(1728); +emit_16(1662); +emit_16(1728); +emit_16(1661); +emit_16(1728); +emit_16(1662); +emit_16(1729); +emit_16(1663); +emit_16(1729); +emit_16(1662); +emit_16(1729); +emit_16(1663); +emit_16(1730); +emit_16(1664); +emit_16(1730); +emit_16(1663); +emit_16(1730); +emit_16(1664); +emit_16(1731); +emit_16(1665); +emit_16(1731); +emit_16(1664); +emit_16(1731); +emit_16(1665); +emit_16(1732); +emit_16(1666); +emit_16(1732); +emit_16(1665); +emit_16(1732); +emit_16(1666); +emit_16(1733); +emit_16(1667); +emit_16(1733); +emit_16(1666); +emit_16(1733); +emit_16(1667); +emit_16(1734); +emit_16(1668); +emit_16(1734); +emit_16(1667); +emit_16(1734); +emit_16(1668); +emit_16(1735); +emit_16(1669); +emit_16(1735); +emit_16(1668); +emit_16(1735); +emit_16(1669); +emit_16(1736); +emit_16(1670); +emit_16(1736); +emit_16(1669); +emit_16(1736); +emit_16(1670); +emit_16(1737); +emit_16(1671); +emit_16(1737); +emit_16(1670); +emit_16(1737); +emit_16(1671); +emit_16(1738); +emit_16(1672); +emit_16(1738); +emit_16(1671); +emit_16(1738); +emit_16(1672); +emit_16(1739); +emit_16(1673); +emit_16(1739); +emit_16(1672); +emit_16(1739); +emit_16(1673); +emit_16(1740); +emit_16(1674); +emit_16(1740); +emit_16(1673); +emit_16(1740); +emit_16(1674); +emit_16(1741); +emit_16(1675); +emit_16(1741); +emit_16(1674); +emit_16(1741); +emit_16(1675); +emit_16(1742); +emit_16(1676); +emit_16(1742); +emit_16(1675); +emit_16(1742); +emit_16(1676); +emit_16(1743); +emit_16(1677); +emit_16(1743); +emit_16(1676); +emit_16(1743); +emit_16(1677); +emit_16(1744); +emit_16(1678); +emit_16(1744); +emit_16(1677); +emit_16(1744); +emit_16(1678); +emit_16(1745); +emit_16(1679); +emit_16(1745); +emit_16(1678); +emit_16(1745); +emit_16(1679); +emit_16(1746); +emit_16(1680); +emit_16(1746); +emit_16(1679); +emit_16(1746); +emit_16(1680); +emit_16(1747); +emit_16(1681); +emit_16(1747); +emit_16(1680); +emit_16(1747); +emit_16(1681); +emit_16(1748); +emit_16(1682); +emit_16(1748); +emit_16(1681); +emit_16(1748); +emit_16(1682); +emit_16(1749); +emit_16(1683); +emit_16(1749); +emit_16(1682); +emit_16(1749); +emit_16(1683); +emit_16(1750); +emit_16(1684); +emit_16(1750); +emit_16(1683); +emit_16(1750); +emit_16(1684); +emit_16(1751); +emit_16(1685); +emit_16(1751); +emit_16(1684); +emit_16(1751); +emit_16(1685); +emit_16(1752); +emit_16(1686); +emit_16(1752); +emit_16(1685); +emit_16(1752); +emit_16(1686); +emit_16(1753); +emit_16(1687); +emit_16(1753); +emit_16(1686); +emit_16(1753); +emit_16(1687); +emit_16(1754); +emit_16(1688); +emit_16(1754); +emit_16(1687); +emit_16(1754); +emit_16(1688); +emit_16(1755); +emit_16(1689); +emit_16(1755); +emit_16(1688); +emit_16(1755); +emit_16(1689); +emit_16(1756); +emit_16(1690); +emit_16(1756); +emit_16(1689); +emit_16(1756); +emit_16(1690); +emit_16(1757); +emit_16(1691); +emit_16(1757); +emit_16(1690); +emit_16(1757); +emit_16(1691); +emit_16(1758); +emit_16(1692); +emit_16(1758); +emit_16(1691); +emit_16(1758); +emit_16(1692); +emit_16(1759); +emit_16(1693); +emit_16(1759); +emit_16(1692); +emit_16(1759); +emit_16(1693); +emit_16(1760); +emit_16(1694); +emit_16(1760); +emit_16(1693); +emit_16(1760); +emit_16(1694); +emit_16(1761); +emit_16(1695); +emit_16(1761); +emit_16(1694); +emit_16(1761); +emit_16(1695); +emit_16(1762); +emit_16(1696); +emit_16(1762); +emit_16(1695); +emit_16(1762); +emit_16(1696); +emit_16(1763); +emit_16(1697); +emit_16(1763); +emit_16(1696); +emit_16(1763); +emit_16(1697); +emit_16(1764); +emit_16(1698); +emit_16(1764); +emit_16(1697); +emit_16(1764); +emit_16(1698); +emit_16(1765); +emit_16(1699); +emit_16(1765); +emit_16(1698); +emit_16(1765); +emit_16(1699); +emit_16(1766); +emit_16(1700); +emit_16(1766); +emit_16(1699); +emit_16(1766); +emit_16(1700); +emit_16(1767); +emit_16(1701); +emit_16(1767); +emit_16(1700); +emit_16(1767); +emit_16(1701); +emit_16(1768); +emit_16(1702); +emit_16(1768); +emit_16(1701); +emit_16(1768); +emit_16(1702); +emit_16(1769); +emit_16(1703); +emit_16(1769); +emit_16(1702); +emit_16(1769); +emit_16(1703); +emit_16(1770); +emit_16(1704); +emit_16(1770); +emit_16(1703); +emit_16(1770); +emit_16(1704); +emit_16(1771); +emit_16(1705); +emit_16(1771); +emit_16(1704); +emit_16(1771); +emit_16(1705); +emit_16(1772); +emit_16(1706); +emit_16(1772); +emit_16(1705); +emit_16(1772); +emit_16(1706); +emit_16(1773); +emit_16(1707); +emit_16(1773); +emit_16(1706); +emit_16(1773); +emit_16(1707); +emit_16(1774); +emit_16(1708); +emit_16(1774); +emit_16(1707); +emit_16(1774); +emit_16(1708); +emit_16(1775); +emit_16(1709); +emit_16(1775); +emit_16(1708); +emit_16(1775); +emit_16(1709); +emit_16(1776); +emit_16(1710); +emit_16(1776); +emit_16(1709); +emit_16(1776); +emit_16(1710); +emit_16(1777); +emit_16(1711); +emit_16(1777); +emit_16(1710); +emit_16(1777); +emit_16(1711); +emit_16(1778); +emit_16(1712); +emit_16(1778); +emit_16(1711); +emit_16(1778); +emit_16(1712); +emit_16(1779); +emit_16(1713); +emit_16(1779); +emit_16(1712); +emit_16(1779); +emit_16(1713); +emit_16(1780); +emit_16(1714); +emit_16(1780); +emit_16(1713); +emit_16(1780); +emit_16(1714); +emit_16(1781); +emit_16(1715); +emit_16(1781); +emit_16(1714); +emit_16(1782); +emit_16(1716); +emit_16(1783); +emit_16(1717); +emit_16(1783); +emit_16(1716); +emit_16(1783); +emit_16(1717); +emit_16(1784); +emit_16(1718); +emit_16(1784); +emit_16(1717); +emit_16(1784); +emit_16(1718); +emit_16(1785); +emit_16(1719); +emit_16(1785); +emit_16(1718); +emit_16(1785); +emit_16(1719); +emit_16(1786); +emit_16(1720); +emit_16(1786); +emit_16(1719); +emit_16(1786); +emit_16(1720); +emit_16(1787); +emit_16(1721); +emit_16(1787); +emit_16(1720); +emit_16(1787); +emit_16(1721); +emit_16(1788); +emit_16(1722); +emit_16(1788); +emit_16(1721); +emit_16(1788); +emit_16(1722); +emit_16(1789); +emit_16(1723); +emit_16(1789); +emit_16(1722); +emit_16(1789); +emit_16(1723); +emit_16(1790); +emit_16(1724); +emit_16(1790); +emit_16(1723); +emit_16(1790); +emit_16(1724); +emit_16(1791); +emit_16(1725); +emit_16(1791); +emit_16(1724); +emit_16(1791); +emit_16(1725); +emit_16(1792); +emit_16(1726); +emit_16(1792); +emit_16(1725); +emit_16(1792); +emit_16(1726); +emit_16(1793); +emit_16(1727); +emit_16(1793); +emit_16(1726); +emit_16(1793); +emit_16(1727); +emit_16(1794); +emit_16(1728); +emit_16(1794); +emit_16(1727); +emit_16(1794); +emit_16(1728); +emit_16(1795); +emit_16(1729); +emit_16(1795); +emit_16(1728); +emit_16(1795); +emit_16(1729); +emit_16(1796); +emit_16(1730); +emit_16(1796); +emit_16(1729); +emit_16(1796); +emit_16(1730); +emit_16(1797); +emit_16(1731); +emit_16(1797); +emit_16(1730); +emit_16(1797); +emit_16(1731); +emit_16(1798); +emit_16(1732); +emit_16(1798); +emit_16(1731); +emit_16(1798); +emit_16(1732); +emit_16(1799); +emit_16(1733); +emit_16(1799); +emit_16(1732); +emit_16(1799); +emit_16(1733); +emit_16(1800); +emit_16(1734); +emit_16(1800); +emit_16(1733); +emit_16(1800); +emit_16(1734); +emit_16(1801); +emit_16(1735); +emit_16(1801); +emit_16(1734); +emit_16(1801); +emit_16(1735); +emit_16(1802); +emit_16(1736); +emit_16(1802); +emit_16(1735); +emit_16(1802); +emit_16(1736); +emit_16(1803); +emit_16(1737); +emit_16(1803); +emit_16(1736); +emit_16(1803); +emit_16(1737); +emit_16(1804); +emit_16(1738); +emit_16(1804); +emit_16(1737); +emit_16(1804); +emit_16(1738); +emit_16(1805); +emit_16(1739); +emit_16(1805); +emit_16(1738); +emit_16(1805); +emit_16(1739); +emit_16(1806); +emit_16(1740); +emit_16(1806); +emit_16(1739); +emit_16(1806); +emit_16(1740); +emit_16(1807); +emit_16(1741); +emit_16(1807); +emit_16(1740); +emit_16(1807); +emit_16(1741); +emit_16(1808); +emit_16(1742); +emit_16(1808); +emit_16(1741); +emit_16(1808); +emit_16(1742); +emit_16(1809); +emit_16(1743); +emit_16(1809); +emit_16(1742); +emit_16(1809); +emit_16(1743); +emit_16(1810); +emit_16(1744); +emit_16(1810); +emit_16(1743); +emit_16(1810); +emit_16(1744); +emit_16(1811); +emit_16(1745); +emit_16(1811); +emit_16(1744); +emit_16(1811); +emit_16(1745); +emit_16(1812); +emit_16(1746); +emit_16(1812); +emit_16(1745); +emit_16(1812); +emit_16(1746); +emit_16(1813); +emit_16(1747); +emit_16(1813); +emit_16(1746); +emit_16(1813); +emit_16(1747); +emit_16(1814); +emit_16(1748); +emit_16(1814); +emit_16(1747); +emit_16(1814); +emit_16(1748); +emit_16(1815); +emit_16(1749); +emit_16(1815); +emit_16(1748); +emit_16(1815); +emit_16(1749); +emit_16(1816); +emit_16(1750); +emit_16(1816); +emit_16(1749); +emit_16(1816); +emit_16(1750); +emit_16(1817); +emit_16(1751); +emit_16(1817); +emit_16(1750); +emit_16(1817); +emit_16(1751); +emit_16(1818); +emit_16(1752); +emit_16(1818); +emit_16(1751); +emit_16(1818); +emit_16(1752); +emit_16(1819); +emit_16(1753); +emit_16(1819); +emit_16(1752); +emit_16(1819); +emit_16(1753); +emit_16(1820); +emit_16(1754); +emit_16(1820); +emit_16(1753); +emit_16(1820); +emit_16(1754); +emit_16(1821); +emit_16(1755); +emit_16(1821); +emit_16(1754); +emit_16(1821); +emit_16(1755); +emit_16(1822); +emit_16(1756); +emit_16(1822); +emit_16(1755); +emit_16(1822); +emit_16(1756); +emit_16(1823); +emit_16(1757); +emit_16(1823); +emit_16(1756); +emit_16(1823); +emit_16(1757); +emit_16(1824); +emit_16(1758); +emit_16(1824); +emit_16(1757); +emit_16(1824); +emit_16(1758); +emit_16(1825); +emit_16(1759); +emit_16(1825); +emit_16(1758); +emit_16(1825); +emit_16(1759); +emit_16(1826); +emit_16(1760); +emit_16(1826); +emit_16(1759); +emit_16(1826); +emit_16(1760); +emit_16(1827); +emit_16(1761); +emit_16(1827); +emit_16(1760); +emit_16(1827); +emit_16(1761); +emit_16(1828); +emit_16(1762); +emit_16(1828); +emit_16(1761); +emit_16(1828); +emit_16(1762); +emit_16(1829); +emit_16(1763); +emit_16(1829); +emit_16(1762); +emit_16(1829); +emit_16(1763); +emit_16(1830); +emit_16(1764); +emit_16(1830); +emit_16(1763); +emit_16(1830); +emit_16(1764); +emit_16(1831); +emit_16(1765); +emit_16(1831); +emit_16(1764); +emit_16(1831); +emit_16(1765); +emit_16(1832); +emit_16(1766); +emit_16(1832); +emit_16(1765); +emit_16(1832); +emit_16(1766); +emit_16(1833); +emit_16(1767); +emit_16(1833); +emit_16(1766); +emit_16(1833); +emit_16(1767); +emit_16(1834); +emit_16(1768); +emit_16(1834); +emit_16(1767); +emit_16(1834); +emit_16(1768); +emit_16(1835); +emit_16(1769); +emit_16(1835); +emit_16(1768); +emit_16(1835); +emit_16(1769); +emit_16(1836); +emit_16(1770); +emit_16(1836); +emit_16(1769); +emit_16(1836); +emit_16(1770); +emit_16(1837); +emit_16(1771); +emit_16(1837); +emit_16(1770); +emit_16(1837); +emit_16(1771); +emit_16(1838); +emit_16(1772); +emit_16(1838); +emit_16(1771); +emit_16(1838); +emit_16(1772); +emit_16(1839); +emit_16(1773); +emit_16(1839); +emit_16(1772); +emit_16(1839); +emit_16(1773); +emit_16(1840); +emit_16(1774); +emit_16(1840); +emit_16(1773); +emit_16(1840); +emit_16(1774); +emit_16(1841); +emit_16(1775); +emit_16(1841); +emit_16(1774); +emit_16(1841); +emit_16(1775); +emit_16(1842); +emit_16(1776); +emit_16(1842); +emit_16(1775); +emit_16(1842); +emit_16(1776); +emit_16(1843); +emit_16(1777); +emit_16(1843); +emit_16(1776); +emit_16(1843); +emit_16(1777); +emit_16(1844); +emit_16(1778); +emit_16(1844); +emit_16(1777); +emit_16(1844); +emit_16(1778); +emit_16(1845); +emit_16(1779); +emit_16(1845); +emit_16(1778); +emit_16(1845); +emit_16(1779); +emit_16(1846); +emit_16(1780); +emit_16(1846); +emit_16(1779); +emit_16(1846); +emit_16(1780); +emit_16(1847); +emit_16(1781); +emit_16(1847); +emit_16(1780); +emit_16(1848); +emit_16(1782); +emit_16(1849); +emit_16(1783); +emit_16(1849); +emit_16(1782); +emit_16(1849); +emit_16(1783); +emit_16(1850); +emit_16(1784); +emit_16(1850); +emit_16(1783); +emit_16(1850); +emit_16(1784); +emit_16(1851); +emit_16(1785); +emit_16(1851); +emit_16(1784); +emit_16(1851); +emit_16(1785); +emit_16(1852); +emit_16(1786); +emit_16(1852); +emit_16(1785); +emit_16(1852); +emit_16(1786); +emit_16(1853); +emit_16(1787); +emit_16(1853); +emit_16(1786); +emit_16(1853); +emit_16(1787); +emit_16(1854); +emit_16(1788); +emit_16(1854); +emit_16(1787); +emit_16(1854); +emit_16(1788); +emit_16(1855); +emit_16(1789); +emit_16(1855); +emit_16(1788); +emit_16(1855); +emit_16(1789); +emit_16(1856); +emit_16(1790); +emit_16(1856); +emit_16(1789); +emit_16(1856); +emit_16(1790); +emit_16(1857); +emit_16(1791); +emit_16(1857); +emit_16(1790); +emit_16(1857); +emit_16(1791); +emit_16(1858); +emit_16(1792); +emit_16(1858); +emit_16(1791); +emit_16(1858); +emit_16(1792); +emit_16(1859); +emit_16(1793); +emit_16(1859); +emit_16(1792); +emit_16(1859); +emit_16(1793); +emit_16(1860); +emit_16(1794); +emit_16(1860); +emit_16(1793); +emit_16(1860); +emit_16(1794); +emit_16(1861); +emit_16(1795); +emit_16(1861); +emit_16(1794); +emit_16(1861); +emit_16(1795); +emit_16(1862); +emit_16(1796); +emit_16(1862); +emit_16(1795); +emit_16(1862); +emit_16(1796); +emit_16(1863); +emit_16(1797); +emit_16(1863); +emit_16(1796); +emit_16(1863); +emit_16(1797); +emit_16(1864); +emit_16(1798); +emit_16(1864); +emit_16(1797); +emit_16(1864); +emit_16(1798); +emit_16(1865); +emit_16(1799); +emit_16(1865); +emit_16(1798); +emit_16(1865); +emit_16(1799); +emit_16(1866); +emit_16(1800); +emit_16(1866); +emit_16(1799); +emit_16(1866); +emit_16(1800); +emit_16(1867); +emit_16(1801); +emit_16(1867); +emit_16(1800); +emit_16(1867); +emit_16(1801); +emit_16(1868); +emit_16(1802); +emit_16(1868); +emit_16(1801); +emit_16(1868); +emit_16(1802); +emit_16(1869); +emit_16(1803); +emit_16(1869); +emit_16(1802); +emit_16(1869); +emit_16(1803); +emit_16(1870); +emit_16(1804); +emit_16(1870); +emit_16(1803); +emit_16(1870); +emit_16(1804); +emit_16(1871); +emit_16(1805); +emit_16(1871); +emit_16(1804); +emit_16(1871); +emit_16(1805); +emit_16(1872); +emit_16(1806); +emit_16(1872); +emit_16(1805); +emit_16(1872); +emit_16(1806); +emit_16(1873); +emit_16(1807); +emit_16(1873); +emit_16(1806); +emit_16(1873); +emit_16(1807); +emit_16(1874); +emit_16(1808); +emit_16(1874); +emit_16(1807); +emit_16(1874); +emit_16(1808); +emit_16(1875); +emit_16(1809); +emit_16(1875); +emit_16(1808); +emit_16(1875); +emit_16(1809); +emit_16(1876); +emit_16(1810); +emit_16(1876); +emit_16(1809); +emit_16(1876); +emit_16(1810); +emit_16(1877); +emit_16(1811); +emit_16(1877); +emit_16(1810); +emit_16(1877); +emit_16(1811); +emit_16(1878); +emit_16(1812); +emit_16(1878); +emit_16(1811); +emit_16(1878); +emit_16(1812); +emit_16(1879); +emit_16(1813); +emit_16(1879); +emit_16(1812); +emit_16(1879); +emit_16(1813); +emit_16(1880); +emit_16(1814); +emit_16(1880); +emit_16(1813); +emit_16(1880); +emit_16(1814); +emit_16(1881); +emit_16(1815); +emit_16(1881); +emit_16(1814); +emit_16(1881); +emit_16(1815); +emit_16(1882); +emit_16(1816); +emit_16(1882); +emit_16(1815); +emit_16(1882); +emit_16(1816); +emit_16(1883); +emit_16(1817); +emit_16(1883); +emit_16(1816); +emit_16(1883); +emit_16(1817); +emit_16(1884); +emit_16(1818); +emit_16(1884); +emit_16(1817); +emit_16(1884); +emit_16(1818); +emit_16(1885); +emit_16(1819); +emit_16(1885); +emit_16(1818); +emit_16(1885); +emit_16(1819); +emit_16(1886); +emit_16(1820); +emit_16(1886); +emit_16(1819); +emit_16(1886); +emit_16(1820); +emit_16(1887); +emit_16(1821); +emit_16(1887); +emit_16(1820); +emit_16(1887); +emit_16(1821); +emit_16(1888); +emit_16(1822); +emit_16(1888); +emit_16(1821); +emit_16(1888); +emit_16(1822); +emit_16(1889); +emit_16(1823); +emit_16(1889); +emit_16(1822); +emit_16(1889); +emit_16(1823); +emit_16(1890); +emit_16(1824); +emit_16(1890); +emit_16(1823); +emit_16(1890); +emit_16(1824); +emit_16(1891); +emit_16(1825); +emit_16(1891); +emit_16(1824); +emit_16(1891); +emit_16(1825); +emit_16(1892); +emit_16(1826); +emit_16(1892); +emit_16(1825); +emit_16(1892); +emit_16(1826); +emit_16(1893); +emit_16(1827); +emit_16(1893); +emit_16(1826); +emit_16(1893); +emit_16(1827); +emit_16(1894); +emit_16(1828); +emit_16(1894); +emit_16(1827); +emit_16(1894); +emit_16(1828); +emit_16(1895); +emit_16(1829); +emit_16(1895); +emit_16(1828); +emit_16(1895); +emit_16(1829); +emit_16(1896); +emit_16(1830); +emit_16(1896); +emit_16(1829); +emit_16(1896); +emit_16(1830); +emit_16(1897); +emit_16(1831); +emit_16(1897); +emit_16(1830); +emit_16(1897); +emit_16(1831); +emit_16(1898); +emit_16(1832); +emit_16(1898); +emit_16(1831); +emit_16(1898); +emit_16(1832); +emit_16(1899); +emit_16(1833); +emit_16(1899); +emit_16(1832); +emit_16(1899); +emit_16(1833); +emit_16(1900); +emit_16(1834); +emit_16(1900); +emit_16(1833); +emit_16(1900); +emit_16(1834); +emit_16(1901); +emit_16(1835); +emit_16(1901); +emit_16(1834); +emit_16(1901); +emit_16(1835); +emit_16(1902); +emit_16(1836); +emit_16(1902); +emit_16(1835); +emit_16(1902); +emit_16(1836); +emit_16(1903); +emit_16(1837); +emit_16(1903); +emit_16(1836); +emit_16(1903); +emit_16(1837); +emit_16(1904); +emit_16(1838); +emit_16(1904); +emit_16(1837); +emit_16(1904); +emit_16(1838); +emit_16(1905); +emit_16(1839); +emit_16(1905); +emit_16(1838); +emit_16(1905); +emit_16(1839); +emit_16(1906); +emit_16(1840); +emit_16(1906); +emit_16(1839); +emit_16(1906); +emit_16(1840); +emit_16(1907); +emit_16(1841); +emit_16(1907); +emit_16(1840); +emit_16(1907); +emit_16(1841); +emit_16(1908); +emit_16(1842); +emit_16(1908); +emit_16(1841); +emit_16(1908); +emit_16(1842); +emit_16(1909); +emit_16(1843); +emit_16(1909); +emit_16(1842); +emit_16(1909); +emit_16(1843); +emit_16(1910); +emit_16(1844); +emit_16(1910); +emit_16(1843); +emit_16(1910); +emit_16(1844); +emit_16(1911); +emit_16(1845); +emit_16(1911); +emit_16(1844); +emit_16(1911); +emit_16(1845); +emit_16(1912); +emit_16(1846); +emit_16(1912); +emit_16(1845); +emit_16(1912); +emit_16(1846); +emit_16(1913); +emit_16(1847); +emit_16(1913); +emit_16(1846); +emit_16(1914); +emit_16(1848); +emit_16(1915); +emit_16(1849); +emit_16(1915); +emit_16(1848); +emit_16(1915); +emit_16(1849); +emit_16(1916); +emit_16(1850); +emit_16(1916); +emit_16(1849); +emit_16(1916); +emit_16(1850); +emit_16(1917); +emit_16(1851); +emit_16(1917); +emit_16(1850); +emit_16(1917); +emit_16(1851); +emit_16(1918); +emit_16(1852); +emit_16(1918); +emit_16(1851); +emit_16(1918); +emit_16(1852); +emit_16(1919); +emit_16(1853); +emit_16(1919); +emit_16(1852); +emit_16(1919); +emit_16(1853); +emit_16(1920); +emit_16(1854); +emit_16(1920); +emit_16(1853); +emit_16(1920); +emit_16(1854); +emit_16(1921); +emit_16(1855); +emit_16(1921); +emit_16(1854); +emit_16(1921); +emit_16(1855); +emit_16(1922); +emit_16(1856); +emit_16(1922); +emit_16(1855); +emit_16(1922); +emit_16(1856); +emit_16(1923); +emit_16(1857); +emit_16(1923); +emit_16(1856); +emit_16(1923); +emit_16(1857); +emit_16(1924); +emit_16(1858); +emit_16(1924); +emit_16(1857); +emit_16(1924); +emit_16(1858); +emit_16(1925); +emit_16(1859); +emit_16(1925); +emit_16(1858); +emit_16(1925); +emit_16(1859); +emit_16(1926); +emit_16(1860); +emit_16(1926); +emit_16(1859); +emit_16(1926); +emit_16(1860); +emit_16(1927); +emit_16(1861); +emit_16(1927); +emit_16(1860); +emit_16(1927); +emit_16(1861); +emit_16(1928); +emit_16(1862); +emit_16(1928); +emit_16(1861); +emit_16(1928); +emit_16(1862); +emit_16(1929); +emit_16(1863); +emit_16(1929); +emit_16(1862); +emit_16(1929); +emit_16(1863); +emit_16(1930); +emit_16(1864); +emit_16(1930); +emit_16(1863); +emit_16(1930); +emit_16(1864); +emit_16(1931); +emit_16(1865); +emit_16(1931); +emit_16(1864); +emit_16(1931); +emit_16(1865); +emit_16(1932); +emit_16(1866); +emit_16(1932); +emit_16(1865); +emit_16(1932); +emit_16(1866); +emit_16(1933); +emit_16(1867); +emit_16(1933); +emit_16(1866); +emit_16(1933); +emit_16(1867); +emit_16(1934); +emit_16(1868); +emit_16(1934); +emit_16(1867); +emit_16(1934); +emit_16(1868); +emit_16(1935); +emit_16(1869); +emit_16(1935); +emit_16(1868); +emit_16(1935); +emit_16(1869); +emit_16(1936); +emit_16(1870); +emit_16(1936); +emit_16(1869); +emit_16(1936); +emit_16(1870); +emit_16(1937); +emit_16(1871); +emit_16(1937); +emit_16(1870); +emit_16(1937); +emit_16(1871); +emit_16(1938); +emit_16(1872); +emit_16(1938); +emit_16(1871); +emit_16(1938); +emit_16(1872); +emit_16(1939); +emit_16(1873); +emit_16(1939); +emit_16(1872); +emit_16(1939); +emit_16(1873); +emit_16(1940); +emit_16(1874); +emit_16(1940); +emit_16(1873); +emit_16(1940); +emit_16(1874); +emit_16(1941); +emit_16(1875); +emit_16(1941); +emit_16(1874); +emit_16(1941); +emit_16(1875); +emit_16(1942); +emit_16(1876); +emit_16(1942); +emit_16(1875); +emit_16(1942); +emit_16(1876); +emit_16(1943); +emit_16(1877); +emit_16(1943); +emit_16(1876); +emit_16(1943); +emit_16(1877); +emit_16(1944); +emit_16(1878); +emit_16(1944); +emit_16(1877); +emit_16(1944); +emit_16(1878); +emit_16(1945); +emit_16(1879); +emit_16(1945); +emit_16(1878); +emit_16(1945); +emit_16(1879); +emit_16(1946); +emit_16(1880); +emit_16(1946); +emit_16(1879); +emit_16(1946); +emit_16(1880); +emit_16(1947); +emit_16(1881); +emit_16(1947); +emit_16(1880); +emit_16(1947); +emit_16(1881); +emit_16(1948); +emit_16(1882); +emit_16(1948); +emit_16(1881); +emit_16(1948); +emit_16(1882); +emit_16(1949); +emit_16(1883); +emit_16(1949); +emit_16(1882); +emit_16(1949); +emit_16(1883); +emit_16(1950); +emit_16(1884); +emit_16(1950); +emit_16(1883); +emit_16(1950); +emit_16(1884); +emit_16(1951); +emit_16(1885); +emit_16(1951); +emit_16(1884); +emit_16(1951); +emit_16(1885); +emit_16(1952); +emit_16(1886); +emit_16(1952); +emit_16(1885); +emit_16(1952); +emit_16(1886); +emit_16(1953); +emit_16(1887); +emit_16(1953); +emit_16(1886); +emit_16(1953); +emit_16(1887); +emit_16(1954); +emit_16(1888); +emit_16(1954); +emit_16(1887); +emit_16(1954); +emit_16(1888); +emit_16(1955); +emit_16(1889); +emit_16(1955); +emit_16(1888); +emit_16(1955); +emit_16(1889); +emit_16(1956); +emit_16(1890); +emit_16(1956); +emit_16(1889); +emit_16(1956); +emit_16(1890); +emit_16(1957); +emit_16(1891); +emit_16(1957); +emit_16(1890); +emit_16(1957); +emit_16(1891); +emit_16(1958); +emit_16(1892); +emit_16(1958); +emit_16(1891); +emit_16(1958); +emit_16(1892); +emit_16(1959); +emit_16(1893); +emit_16(1959); +emit_16(1892); +emit_16(1959); +emit_16(1893); +emit_16(1960); +emit_16(1894); +emit_16(1960); +emit_16(1893); +emit_16(1960); +emit_16(1894); +emit_16(1961); +emit_16(1895); +emit_16(1961); +emit_16(1894); +emit_16(1961); +emit_16(1895); +emit_16(1962); +emit_16(1896); +emit_16(1962); +emit_16(1895); +emit_16(1962); +emit_16(1896); +emit_16(1963); +emit_16(1897); +emit_16(1963); +emit_16(1896); +emit_16(1963); +emit_16(1897); +emit_16(1964); +emit_16(1898); +emit_16(1964); +emit_16(1897); +emit_16(1964); +emit_16(1898); +emit_16(1965); +emit_16(1899); +emit_16(1965); +emit_16(1898); +emit_16(1965); +emit_16(1899); +emit_16(1966); +emit_16(1900); +emit_16(1966); +emit_16(1899); +emit_16(1966); +emit_16(1900); +emit_16(1967); +emit_16(1901); +emit_16(1967); +emit_16(1900); +emit_16(1967); +emit_16(1901); +emit_16(1968); +emit_16(1902); +emit_16(1968); +emit_16(1901); +emit_16(1968); +emit_16(1902); +emit_16(1969); +emit_16(1903); +emit_16(1969); +emit_16(1902); +emit_16(1969); +emit_16(1903); +emit_16(1970); +emit_16(1904); +emit_16(1970); +emit_16(1903); +emit_16(1970); +emit_16(1904); +emit_16(1971); +emit_16(1905); +emit_16(1971); +emit_16(1904); +emit_16(1971); +emit_16(1905); +emit_16(1972); +emit_16(1906); +emit_16(1972); +emit_16(1905); +emit_16(1972); +emit_16(1906); +emit_16(1973); +emit_16(1907); +emit_16(1973); +emit_16(1906); +emit_16(1973); +emit_16(1907); +emit_16(1974); +emit_16(1908); +emit_16(1974); +emit_16(1907); +emit_16(1974); +emit_16(1908); +emit_16(1975); +emit_16(1909); +emit_16(1975); +emit_16(1908); +emit_16(1975); +emit_16(1909); +emit_16(1976); +emit_16(1910); +emit_16(1976); +emit_16(1909); +emit_16(1976); +emit_16(1910); +emit_16(1977); +emit_16(1911); +emit_16(1977); +emit_16(1910); +emit_16(1977); +emit_16(1911); +emit_16(1978); +emit_16(1912); +emit_16(1978); +emit_16(1911); +emit_16(1978); +emit_16(1912); +emit_16(1979); +emit_16(1913); +emit_16(1979); +emit_16(1912); +emit_start(Landscape03Idx) +emit_16(0); +emit_16(1); +emit_16(2); +emit_16(3); +emit_16(2); +emit_16(1); +emit_16(2); +emit_16(3); +emit_16(4); +emit_16(5); +emit_16(4); +emit_16(3); +emit_16(4); +emit_16(5); +emit_16(6); +emit_16(7); +emit_16(6); +emit_16(5); +emit_16(6); +emit_16(7); +emit_16(8); +emit_16(9); +emit_16(8); +emit_16(7); +emit_16(8); +emit_16(9); +emit_16(10); +emit_16(11); +emit_16(10); +emit_16(9); +emit_16(10); +emit_16(11); +emit_16(12); +emit_16(13); +emit_16(12); +emit_16(11); +emit_16(12); +emit_16(13); +emit_16(14); +emit_16(15); +emit_16(14); +emit_16(13); +emit_16(14); +emit_16(15); +emit_16(16); +emit_16(17); +emit_16(16); +emit_16(15); +emit_16(16); +emit_16(17); +emit_16(18); +emit_16(19); +emit_16(18); +emit_16(17); +emit_16(18); +emit_16(19); +emit_16(20); +emit_16(21); +emit_16(20); +emit_16(19); +emit_16(20); +emit_16(21); +emit_16(22); +emit_16(23); +emit_16(22); +emit_16(21); +emit_16(22); +emit_16(23); +emit_16(24); +emit_16(25); +emit_16(24); +emit_16(23); +emit_16(24); +emit_16(25); +emit_16(26); +emit_16(27); +emit_16(26); +emit_16(25); +emit_16(26); +emit_16(27); +emit_16(28); +emit_16(29); +emit_16(28); +emit_16(27); +emit_16(28); +emit_16(29); +emit_16(30); +emit_16(31); +emit_16(30); +emit_16(29); +emit_16(30); +emit_16(31); +emit_16(32); +emit_16(33); +emit_16(32); +emit_16(31); +emit_16(32); +emit_16(33); +emit_16(34); +emit_16(35); +emit_16(34); +emit_16(33); +emit_16(34); +emit_16(35); +emit_16(36); +emit_16(37); +emit_16(36); +emit_16(35); +emit_16(36); +emit_16(37); +emit_16(38); +emit_16(39); +emit_16(38); +emit_16(37); +emit_16(38); +emit_16(39); +emit_16(40); +emit_16(41); +emit_16(40); +emit_16(39); +emit_16(40); +emit_16(41); +emit_16(42); +emit_16(43); +emit_16(42); +emit_16(41); +emit_16(42); +emit_16(43); +emit_16(44); +emit_16(45); +emit_16(44); +emit_16(43); +emit_16(44); +emit_16(45); +emit_16(46); +emit_16(47); +emit_16(46); +emit_16(45); +emit_16(46); +emit_16(47); +emit_16(48); +emit_16(49); +emit_16(48); +emit_16(47); +emit_16(48); +emit_16(49); +emit_16(50); +emit_16(51); +emit_16(50); +emit_16(49); +emit_16(50); +emit_16(51); +emit_16(52); +emit_16(53); +emit_16(52); +emit_16(51); +emit_16(52); +emit_16(53); +emit_16(54); +emit_16(55); +emit_16(54); +emit_16(53); +emit_16(54); +emit_16(55); +emit_16(56); +emit_16(57); +emit_16(56); +emit_16(55); +emit_16(56); +emit_16(57); +emit_16(58); +emit_16(59); +emit_16(58); +emit_16(57); +emit_16(58); +emit_16(59); +emit_16(60); +emit_16(61); +emit_16(60); +emit_16(59); +emit_16(60); +emit_16(61); +emit_16(62); +emit_16(63); +emit_16(62); +emit_16(61); +emit_16(62); +emit_16(63); +emit_16(64); +emit_16(65); +emit_16(64); +emit_16(63); +emit_16(64); +emit_16(65); +emit_16(66); +emit_16(67); +emit_16(66); +emit_16(65); +emit_16(66); +emit_16(67); +emit_16(68); +emit_16(69); +emit_16(68); +emit_16(67); +emit_16(68); +emit_16(69); +emit_16(70); +emit_16(71); +emit_16(70); +emit_16(69); +emit_16(70); +emit_16(71); +emit_16(72); +emit_16(73); +emit_16(72); +emit_16(71); +emit_16(72); +emit_16(73); +emit_16(74); +emit_16(75); +emit_16(74); +emit_16(73); +emit_16(74); +emit_16(75); +emit_16(76); +emit_16(77); +emit_16(76); +emit_16(75); +emit_16(76); +emit_16(77); +emit_16(78); +emit_16(79); +emit_16(78); +emit_16(77); +emit_16(78); +emit_16(79); +emit_16(80); +emit_16(81); +emit_16(80); +emit_16(79); +emit_16(80); +emit_16(81); +emit_16(82); +emit_16(83); +emit_16(82); +emit_16(81); +emit_16(82); +emit_16(83); +emit_16(84); +emit_16(85); +emit_16(84); +emit_16(83); +emit_16(84); +emit_16(85); +emit_16(86); +emit_16(87); +emit_16(86); +emit_16(85); +emit_16(86); +emit_16(87); +emit_16(88); +emit_16(89); +emit_16(88); +emit_16(87); +emit_16(88); +emit_16(89); +emit_16(90); +emit_16(91); +emit_16(90); +emit_16(89); +emit_16(90); +emit_16(91); +emit_16(92); +emit_16(93); +emit_16(92); +emit_16(91); +emit_16(92); +emit_16(93); +emit_16(94); +emit_16(95); +emit_16(94); +emit_16(93); +emit_16(94); +emit_16(95); +emit_16(96); +emit_16(97); +emit_16(96); +emit_16(95); +emit_16(96); +emit_16(97); +emit_16(98); +emit_16(99); +emit_16(98); +emit_16(97); +emit_16(98); +emit_16(99); +emit_16(100); +emit_16(101); +emit_16(100); +emit_16(99); +emit_16(100); +emit_16(101); +emit_16(102); +emit_16(103); +emit_16(102); +emit_16(101); +emit_16(102); +emit_16(103); +emit_16(104); +emit_16(105); +emit_16(104); +emit_16(103); +emit_16(104); +emit_16(105); +emit_16(106); +emit_16(107); +emit_16(106); +emit_16(105); +emit_16(106); +emit_16(107); +emit_16(108); +emit_16(109); +emit_16(108); +emit_16(107); +emit_16(108); +emit_16(109); +emit_16(110); +emit_16(111); +emit_16(110); +emit_16(109); +emit_16(110); +emit_16(111); +emit_16(112); +emit_16(113); +emit_16(112); +emit_16(111); +emit_16(112); +emit_16(113); +emit_16(114); +emit_16(115); +emit_16(114); +emit_16(113); +emit_16(114); +emit_16(115); +emit_16(116); +emit_16(117); +emit_16(116); +emit_16(115); +emit_16(116); +emit_16(117); +emit_16(118); +emit_16(119); +emit_16(118); +emit_16(117); +emit_16(118); +emit_16(119); +emit_16(120); +emit_16(121); +emit_16(120); +emit_16(119); +emit_16(120); +emit_16(121); +emit_16(122); +emit_16(123); +emit_16(122); +emit_16(121); +emit_16(122); +emit_16(123); +emit_16(124); +emit_16(125); +emit_16(124); +emit_16(123); +emit_16(124); +emit_16(125); +emit_16(126); +emit_16(127); +emit_16(126); +emit_16(125); +emit_16(128); +emit_16(0); +emit_16(129); +emit_16(2); +emit_16(129); +emit_16(0); +emit_16(129); +emit_16(2); +emit_16(130); +emit_16(4); +emit_16(130); +emit_16(2); +emit_16(130); +emit_16(4); +emit_16(131); +emit_16(6); +emit_16(131); +emit_16(4); +emit_16(131); +emit_16(6); +emit_16(132); +emit_16(8); +emit_16(132); +emit_16(6); +emit_16(132); +emit_16(8); +emit_16(133); +emit_16(10); +emit_16(133); +emit_16(8); +emit_16(133); +emit_16(10); +emit_16(134); +emit_16(12); +emit_16(134); +emit_16(10); +emit_16(134); +emit_16(12); +emit_16(135); +emit_16(14); +emit_16(135); +emit_16(12); +emit_16(135); +emit_16(14); +emit_16(136); +emit_16(16); +emit_16(136); +emit_16(14); +emit_16(136); +emit_16(16); +emit_16(137); +emit_16(18); +emit_16(137); +emit_16(16); +emit_16(137); +emit_16(18); +emit_16(138); +emit_16(20); +emit_16(138); +emit_16(18); +emit_16(138); +emit_16(20); +emit_16(139); +emit_16(22); +emit_16(139); +emit_16(20); +emit_16(139); +emit_16(22); +emit_16(140); +emit_16(24); +emit_16(140); +emit_16(22); +emit_16(140); +emit_16(24); +emit_16(141); +emit_16(26); +emit_16(141); +emit_16(24); +emit_16(141); +emit_16(26); +emit_16(142); +emit_16(28); +emit_16(142); +emit_16(26); +emit_16(142); +emit_16(28); +emit_16(143); +emit_16(30); +emit_16(143); +emit_16(28); +emit_16(143); +emit_16(30); +emit_16(144); +emit_16(32); +emit_16(144); +emit_16(30); +emit_16(144); +emit_16(32); +emit_16(145); +emit_16(34); +emit_16(145); +emit_16(32); +emit_16(145); +emit_16(34); +emit_16(146); +emit_16(36); +emit_16(146); +emit_16(34); +emit_16(146); +emit_16(36); +emit_16(147); +emit_16(38); +emit_16(147); +emit_16(36); +emit_16(147); +emit_16(38); +emit_16(148); +emit_16(40); +emit_16(148); +emit_16(38); +emit_16(148); +emit_16(40); +emit_16(149); +emit_16(42); +emit_16(149); +emit_16(40); +emit_16(149); +emit_16(42); +emit_16(150); +emit_16(44); +emit_16(150); +emit_16(42); +emit_16(150); +emit_16(44); +emit_16(151); +emit_16(46); +emit_16(151); +emit_16(44); +emit_16(151); +emit_16(46); +emit_16(152); +emit_16(48); +emit_16(152); +emit_16(46); +emit_16(152); +emit_16(48); +emit_16(153); +emit_16(50); +emit_16(153); +emit_16(48); +emit_16(153); +emit_16(50); +emit_16(154); +emit_16(52); +emit_16(154); +emit_16(50); +emit_16(154); +emit_16(52); +emit_16(155); +emit_16(54); +emit_16(155); +emit_16(52); +emit_16(155); +emit_16(54); +emit_16(156); +emit_16(56); +emit_16(156); +emit_16(54); +emit_16(156); +emit_16(56); +emit_16(157); +emit_16(58); +emit_16(157); +emit_16(56); +emit_16(157); +emit_16(58); +emit_16(158); +emit_16(60); +emit_16(158); +emit_16(58); +emit_16(158); +emit_16(60); +emit_16(159); +emit_16(62); +emit_16(159); +emit_16(60); +emit_16(159); +emit_16(62); +emit_16(160); +emit_16(64); +emit_16(160); +emit_16(62); +emit_16(160); +emit_16(64); +emit_16(161); +emit_16(66); +emit_16(161); +emit_16(64); +emit_16(161); +emit_16(66); +emit_16(162); +emit_16(68); +emit_16(162); +emit_16(66); +emit_16(162); +emit_16(68); +emit_16(163); +emit_16(70); +emit_16(163); +emit_16(68); +emit_16(163); +emit_16(70); +emit_16(164); +emit_16(72); +emit_16(164); +emit_16(70); +emit_16(164); +emit_16(72); +emit_16(165); +emit_16(74); +emit_16(165); +emit_16(72); +emit_16(165); +emit_16(74); +emit_16(166); +emit_16(76); +emit_16(166); +emit_16(74); +emit_16(166); +emit_16(76); +emit_16(167); +emit_16(78); +emit_16(167); +emit_16(76); +emit_16(167); +emit_16(78); +emit_16(168); +emit_16(80); +emit_16(168); +emit_16(78); +emit_16(168); +emit_16(80); +emit_16(169); +emit_16(82); +emit_16(169); +emit_16(80); +emit_16(169); +emit_16(82); +emit_16(170); +emit_16(84); +emit_16(170); +emit_16(82); +emit_16(170); +emit_16(84); +emit_16(171); +emit_16(86); +emit_16(171); +emit_16(84); +emit_16(171); +emit_16(86); +emit_16(172); +emit_16(88); +emit_16(172); +emit_16(86); +emit_16(172); +emit_16(88); +emit_16(173); +emit_16(90); +emit_16(173); +emit_16(88); +emit_16(173); +emit_16(90); +emit_16(174); +emit_16(92); +emit_16(174); +emit_16(90); +emit_16(174); +emit_16(92); +emit_16(175); +emit_16(94); +emit_16(175); +emit_16(92); +emit_16(175); +emit_16(94); +emit_16(176); +emit_16(96); +emit_16(176); +emit_16(94); +emit_16(176); +emit_16(96); +emit_16(177); +emit_16(98); +emit_16(177); +emit_16(96); +emit_16(177); +emit_16(98); +emit_16(178); +emit_16(100); +emit_16(178); +emit_16(98); +emit_16(178); +emit_16(100); +emit_16(179); +emit_16(102); +emit_16(179); +emit_16(100); +emit_16(179); +emit_16(102); +emit_16(180); +emit_16(104); +emit_16(180); +emit_16(102); +emit_16(180); +emit_16(104); +emit_16(181); +emit_16(106); +emit_16(181); +emit_16(104); +emit_16(181); +emit_16(106); +emit_16(182); +emit_16(108); +emit_16(182); +emit_16(106); +emit_16(182); +emit_16(108); +emit_16(183); +emit_16(110); +emit_16(183); +emit_16(108); +emit_16(183); +emit_16(110); +emit_16(184); +emit_16(112); +emit_16(184); +emit_16(110); +emit_16(184); +emit_16(112); +emit_16(185); +emit_16(114); +emit_16(185); +emit_16(112); +emit_16(185); +emit_16(114); +emit_16(186); +emit_16(116); +emit_16(186); +emit_16(114); +emit_16(186); +emit_16(116); +emit_16(187); +emit_16(118); +emit_16(187); +emit_16(116); +emit_16(187); +emit_16(118); +emit_16(188); +emit_16(120); +emit_16(188); +emit_16(118); +emit_16(188); +emit_16(120); +emit_16(189); +emit_16(122); +emit_16(189); +emit_16(120); +emit_16(189); +emit_16(122); +emit_16(190); +emit_16(124); +emit_16(190); +emit_16(122); +emit_16(190); +emit_16(124); +emit_16(191); +emit_16(126); +emit_16(191); +emit_16(124); +emit_16(192); +emit_16(128); +emit_16(193); +emit_16(129); +emit_16(193); +emit_16(128); +emit_16(193); +emit_16(129); +emit_16(194); +emit_16(130); +emit_16(194); +emit_16(129); +emit_16(194); +emit_16(130); +emit_16(195); +emit_16(131); +emit_16(195); +emit_16(130); +emit_16(195); +emit_16(131); +emit_16(196); +emit_16(132); +emit_16(196); +emit_16(131); +emit_16(196); +emit_16(132); +emit_16(197); +emit_16(133); +emit_16(197); +emit_16(132); +emit_16(197); +emit_16(133); +emit_16(198); +emit_16(134); +emit_16(198); +emit_16(133); +emit_16(198); +emit_16(134); +emit_16(199); +emit_16(135); +emit_16(199); +emit_16(134); +emit_16(199); +emit_16(135); +emit_16(200); +emit_16(136); +emit_16(200); +emit_16(135); +emit_16(200); +emit_16(136); +emit_16(201); +emit_16(137); +emit_16(201); +emit_16(136); +emit_16(201); +emit_16(137); +emit_16(202); +emit_16(138); +emit_16(202); +emit_16(137); +emit_16(202); +emit_16(138); +emit_16(203); +emit_16(139); +emit_16(203); +emit_16(138); +emit_16(203); +emit_16(139); +emit_16(204); +emit_16(140); +emit_16(204); +emit_16(139); +emit_16(204); +emit_16(140); +emit_16(205); +emit_16(141); +emit_16(205); +emit_16(140); +emit_16(205); +emit_16(141); +emit_16(206); +emit_16(142); +emit_16(206); +emit_16(141); +emit_16(206); +emit_16(142); +emit_16(207); +emit_16(143); +emit_16(207); +emit_16(142); +emit_16(207); +emit_16(143); +emit_16(208); +emit_16(144); +emit_16(208); +emit_16(143); +emit_16(208); +emit_16(144); +emit_16(209); +emit_16(145); +emit_16(209); +emit_16(144); +emit_16(209); +emit_16(145); +emit_16(210); +emit_16(146); +emit_16(210); +emit_16(145); +emit_16(210); +emit_16(146); +emit_16(211); +emit_16(147); +emit_16(211); +emit_16(146); +emit_16(211); +emit_16(147); +emit_16(212); +emit_16(148); +emit_16(212); +emit_16(147); +emit_16(212); +emit_16(148); +emit_16(213); +emit_16(149); +emit_16(213); +emit_16(148); +emit_16(213); +emit_16(149); +emit_16(214); +emit_16(150); +emit_16(214); +emit_16(149); +emit_16(214); +emit_16(150); +emit_16(215); +emit_16(151); +emit_16(215); +emit_16(150); +emit_16(215); +emit_16(151); +emit_16(216); +emit_16(152); +emit_16(216); +emit_16(151); +emit_16(216); +emit_16(152); +emit_16(217); +emit_16(153); +emit_16(217); +emit_16(152); +emit_16(217); +emit_16(153); +emit_16(218); +emit_16(154); +emit_16(218); +emit_16(153); +emit_16(218); +emit_16(154); +emit_16(219); +emit_16(155); +emit_16(219); +emit_16(154); +emit_16(219); +emit_16(155); +emit_16(220); +emit_16(156); +emit_16(220); +emit_16(155); +emit_16(220); +emit_16(156); +emit_16(221); +emit_16(157); +emit_16(221); +emit_16(156); +emit_16(221); +emit_16(157); +emit_16(222); +emit_16(158); +emit_16(222); +emit_16(157); +emit_16(222); +emit_16(158); +emit_16(223); +emit_16(159); +emit_16(223); +emit_16(158); +emit_16(223); +emit_16(159); +emit_16(224); +emit_16(160); +emit_16(224); +emit_16(159); +emit_16(224); +emit_16(160); +emit_16(225); +emit_16(161); +emit_16(225); +emit_16(160); +emit_16(225); +emit_16(161); +emit_16(226); +emit_16(162); +emit_16(226); +emit_16(161); +emit_16(226); +emit_16(162); +emit_16(227); +emit_16(163); +emit_16(227); +emit_16(162); +emit_16(227); +emit_16(163); +emit_16(228); +emit_16(164); +emit_16(228); +emit_16(163); +emit_16(228); +emit_16(164); +emit_16(229); +emit_16(165); +emit_16(229); +emit_16(164); +emit_16(229); +emit_16(165); +emit_16(230); +emit_16(166); +emit_16(230); +emit_16(165); +emit_16(230); +emit_16(166); +emit_16(231); +emit_16(167); +emit_16(231); +emit_16(166); +emit_16(231); +emit_16(167); +emit_16(232); +emit_16(168); +emit_16(232); +emit_16(167); +emit_16(232); +emit_16(168); +emit_16(233); +emit_16(169); +emit_16(233); +emit_16(168); +emit_16(233); +emit_16(169); +emit_16(234); +emit_16(170); +emit_16(234); +emit_16(169); +emit_16(234); +emit_16(170); +emit_16(235); +emit_16(171); +emit_16(235); +emit_16(170); +emit_16(235); +emit_16(171); +emit_16(236); +emit_16(172); +emit_16(236); +emit_16(171); +emit_16(236); +emit_16(172); +emit_16(237); +emit_16(173); +emit_16(237); +emit_16(172); +emit_16(237); +emit_16(173); +emit_16(238); +emit_16(174); +emit_16(238); +emit_16(173); +emit_16(238); +emit_16(174); +emit_16(239); +emit_16(175); +emit_16(239); +emit_16(174); +emit_16(239); +emit_16(175); +emit_16(240); +emit_16(176); +emit_16(240); +emit_16(175); +emit_16(240); +emit_16(176); +emit_16(241); +emit_16(177); +emit_16(241); +emit_16(176); +emit_16(241); +emit_16(177); +emit_16(242); +emit_16(178); +emit_16(242); +emit_16(177); +emit_16(242); +emit_16(178); +emit_16(243); +emit_16(179); +emit_16(243); +emit_16(178); +emit_16(243); +emit_16(179); +emit_16(244); +emit_16(180); +emit_16(244); +emit_16(179); +emit_16(244); +emit_16(180); +emit_16(245); +emit_16(181); +emit_16(245); +emit_16(180); +emit_16(245); +emit_16(181); +emit_16(246); +emit_16(182); +emit_16(246); +emit_16(181); +emit_16(246); +emit_16(182); +emit_16(247); +emit_16(183); +emit_16(247); +emit_16(182); +emit_16(247); +emit_16(183); +emit_16(248); +emit_16(184); +emit_16(248); +emit_16(183); +emit_16(248); +emit_16(184); +emit_16(249); +emit_16(185); +emit_16(249); +emit_16(184); +emit_16(249); +emit_16(185); +emit_16(250); +emit_16(186); +emit_16(250); +emit_16(185); +emit_16(250); +emit_16(186); +emit_16(251); +emit_16(187); +emit_16(251); +emit_16(186); +emit_16(251); +emit_16(187); +emit_16(252); +emit_16(188); +emit_16(252); +emit_16(187); +emit_16(252); +emit_16(188); +emit_16(253); +emit_16(189); +emit_16(253); +emit_16(188); +emit_16(253); +emit_16(189); +emit_16(254); +emit_16(190); +emit_16(254); +emit_16(189); +emit_16(254); +emit_16(190); +emit_16(255); +emit_16(191); +emit_16(255); +emit_16(190); +emit_16(256); +emit_16(192); +emit_16(257); +emit_16(193); +emit_16(257); +emit_16(192); +emit_16(257); +emit_16(193); +emit_16(258); +emit_16(194); +emit_16(258); +emit_16(193); +emit_16(258); +emit_16(194); +emit_16(259); +emit_16(195); +emit_16(259); +emit_16(194); +emit_16(259); +emit_16(195); +emit_16(260); +emit_16(196); +emit_16(260); +emit_16(195); +emit_16(260); +emit_16(196); +emit_16(261); +emit_16(197); +emit_16(261); +emit_16(196); +emit_16(261); +emit_16(197); +emit_16(262); +emit_16(198); +emit_16(262); +emit_16(197); +emit_16(262); +emit_16(198); +emit_16(263); +emit_16(199); +emit_16(263); +emit_16(198); +emit_16(263); +emit_16(199); +emit_16(264); +emit_16(200); +emit_16(264); +emit_16(199); +emit_16(264); +emit_16(200); +emit_16(265); +emit_16(201); +emit_16(265); +emit_16(200); +emit_16(265); +emit_16(201); +emit_16(266); +emit_16(202); +emit_16(266); +emit_16(201); +emit_16(266); +emit_16(202); +emit_16(267); +emit_16(203); +emit_16(267); +emit_16(202); +emit_16(267); +emit_16(203); +emit_16(268); +emit_16(204); +emit_16(268); +emit_16(203); +emit_16(268); +emit_16(204); +emit_16(269); +emit_16(205); +emit_16(269); +emit_16(204); +emit_16(269); +emit_16(205); +emit_16(270); +emit_16(206); +emit_16(270); +emit_16(205); +emit_16(270); +emit_16(206); +emit_16(271); +emit_16(207); +emit_16(271); +emit_16(206); +emit_16(271); +emit_16(207); +emit_16(272); +emit_16(208); +emit_16(272); +emit_16(207); +emit_16(272); +emit_16(208); +emit_16(273); +emit_16(209); +emit_16(273); +emit_16(208); +emit_16(273); +emit_16(209); +emit_16(274); +emit_16(210); +emit_16(274); +emit_16(209); +emit_16(274); +emit_16(210); +emit_16(275); +emit_16(211); +emit_16(275); +emit_16(210); +emit_16(275); +emit_16(211); +emit_16(276); +emit_16(212); +emit_16(276); +emit_16(211); +emit_16(276); +emit_16(212); +emit_16(277); +emit_16(213); +emit_16(277); +emit_16(212); +emit_16(277); +emit_16(213); +emit_16(278); +emit_16(214); +emit_16(278); +emit_16(213); +emit_16(278); +emit_16(214); +emit_16(279); +emit_16(215); +emit_16(279); +emit_16(214); +emit_16(279); +emit_16(215); +emit_16(280); +emit_16(216); +emit_16(280); +emit_16(215); +emit_16(280); +emit_16(216); +emit_16(281); +emit_16(217); +emit_16(281); +emit_16(216); +emit_16(281); +emit_16(217); +emit_16(282); +emit_16(218); +emit_16(282); +emit_16(217); +emit_16(282); +emit_16(218); +emit_16(283); +emit_16(219); +emit_16(283); +emit_16(218); +emit_16(283); +emit_16(219); +emit_16(284); +emit_16(220); +emit_16(284); +emit_16(219); +emit_16(284); +emit_16(220); +emit_16(285); +emit_16(221); +emit_16(285); +emit_16(220); +emit_16(285); +emit_16(221); +emit_16(286); +emit_16(222); +emit_16(286); +emit_16(221); +emit_16(286); +emit_16(222); +emit_16(287); +emit_16(223); +emit_16(287); +emit_16(222); +emit_16(287); +emit_16(223); +emit_16(288); +emit_16(224); +emit_16(288); +emit_16(223); +emit_16(288); +emit_16(224); +emit_16(289); +emit_16(225); +emit_16(289); +emit_16(224); +emit_16(289); +emit_16(225); +emit_16(290); +emit_16(226); +emit_16(290); +emit_16(225); +emit_16(290); +emit_16(226); +emit_16(291); +emit_16(227); +emit_16(291); +emit_16(226); +emit_16(291); +emit_16(227); +emit_16(292); +emit_16(228); +emit_16(292); +emit_16(227); +emit_16(292); +emit_16(228); +emit_16(293); +emit_16(229); +emit_16(293); +emit_16(228); +emit_16(293); +emit_16(229); +emit_16(294); +emit_16(230); +emit_16(294); +emit_16(229); +emit_16(294); +emit_16(230); +emit_16(295); +emit_16(231); +emit_16(295); +emit_16(230); +emit_16(295); +emit_16(231); +emit_16(296); +emit_16(232); +emit_16(296); +emit_16(231); +emit_16(296); +emit_16(232); +emit_16(297); +emit_16(233); +emit_16(297); +emit_16(232); +emit_16(297); +emit_16(233); +emit_16(298); +emit_16(234); +emit_16(298); +emit_16(233); +emit_16(298); +emit_16(234); +emit_16(299); +emit_16(235); +emit_16(299); +emit_16(234); +emit_16(299); +emit_16(235); +emit_16(300); +emit_16(236); +emit_16(300); +emit_16(235); +emit_16(300); +emit_16(236); +emit_16(301); +emit_16(237); +emit_16(301); +emit_16(236); +emit_16(301); +emit_16(237); +emit_16(302); +emit_16(238); +emit_16(302); +emit_16(237); +emit_16(302); +emit_16(238); +emit_16(303); +emit_16(239); +emit_16(303); +emit_16(238); +emit_16(303); +emit_16(239); +emit_16(304); +emit_16(240); +emit_16(304); +emit_16(239); +emit_16(304); +emit_16(240); +emit_16(305); +emit_16(241); +emit_16(305); +emit_16(240); +emit_16(305); +emit_16(241); +emit_16(306); +emit_16(242); +emit_16(306); +emit_16(241); +emit_16(306); +emit_16(242); +emit_16(307); +emit_16(243); +emit_16(307); +emit_16(242); +emit_16(307); +emit_16(243); +emit_16(308); +emit_16(244); +emit_16(308); +emit_16(243); +emit_16(308); +emit_16(244); +emit_16(309); +emit_16(245); +emit_16(309); +emit_16(244); +emit_16(309); +emit_16(245); +emit_16(310); +emit_16(246); +emit_16(310); +emit_16(245); +emit_16(310); +emit_16(246); +emit_16(311); +emit_16(247); +emit_16(311); +emit_16(246); +emit_16(311); +emit_16(247); +emit_16(312); +emit_16(248); +emit_16(312); +emit_16(247); +emit_16(312); +emit_16(248); +emit_16(313); +emit_16(249); +emit_16(313); +emit_16(248); +emit_16(313); +emit_16(249); +emit_16(314); +emit_16(250); +emit_16(314); +emit_16(249); +emit_16(314); +emit_16(250); +emit_16(315); +emit_16(251); +emit_16(315); +emit_16(250); +emit_16(315); +emit_16(251); +emit_16(316); +emit_16(252); +emit_16(316); +emit_16(251); +emit_16(316); +emit_16(252); +emit_16(317); +emit_16(253); +emit_16(317); +emit_16(252); +emit_16(317); +emit_16(253); +emit_16(318); +emit_16(254); +emit_16(318); +emit_16(253); +emit_16(318); +emit_16(254); +emit_16(319); +emit_16(255); +emit_16(319); +emit_16(254); +emit_16(320); +emit_16(256); +emit_16(321); +emit_16(257); +emit_16(321); +emit_16(256); +emit_16(321); +emit_16(257); +emit_16(322); +emit_16(258); +emit_16(322); +emit_16(257); +emit_16(322); +emit_16(258); +emit_16(323); +emit_16(259); +emit_16(323); +emit_16(258); +emit_16(323); +emit_16(259); +emit_16(324); +emit_16(260); +emit_16(324); +emit_16(259); +emit_16(324); +emit_16(260); +emit_16(325); +emit_16(261); +emit_16(325); +emit_16(260); +emit_16(325); +emit_16(261); +emit_16(326); +emit_16(262); +emit_16(326); +emit_16(261); +emit_16(326); +emit_16(262); +emit_16(327); +emit_16(263); +emit_16(327); +emit_16(262); +emit_16(327); +emit_16(263); +emit_16(328); +emit_16(264); +emit_16(328); +emit_16(263); +emit_16(328); +emit_16(264); +emit_16(329); +emit_16(265); +emit_16(329); +emit_16(264); +emit_16(329); +emit_16(265); +emit_16(330); +emit_16(266); +emit_16(330); +emit_16(265); +emit_16(330); +emit_16(266); +emit_16(331); +emit_16(267); +emit_16(331); +emit_16(266); +emit_16(331); +emit_16(267); +emit_16(332); +emit_16(268); +emit_16(332); +emit_16(267); +emit_16(332); +emit_16(268); +emit_16(333); +emit_16(269); +emit_16(333); +emit_16(268); +emit_16(333); +emit_16(269); +emit_16(334); +emit_16(270); +emit_16(334); +emit_16(269); +emit_16(334); +emit_16(270); +emit_16(335); +emit_16(271); +emit_16(335); +emit_16(270); +emit_16(335); +emit_16(271); +emit_16(336); +emit_16(272); +emit_16(336); +emit_16(271); +emit_16(336); +emit_16(272); +emit_16(337); +emit_16(273); +emit_16(337); +emit_16(272); +emit_16(337); +emit_16(273); +emit_16(338); +emit_16(274); +emit_16(338); +emit_16(273); +emit_16(338); +emit_16(274); +emit_16(339); +emit_16(275); +emit_16(339); +emit_16(274); +emit_16(339); +emit_16(275); +emit_16(340); +emit_16(276); +emit_16(340); +emit_16(275); +emit_16(340); +emit_16(276); +emit_16(341); +emit_16(277); +emit_16(341); +emit_16(276); +emit_16(341); +emit_16(277); +emit_16(342); +emit_16(278); +emit_16(342); +emit_16(277); +emit_16(342); +emit_16(278); +emit_16(343); +emit_16(279); +emit_16(343); +emit_16(278); +emit_16(343); +emit_16(279); +emit_16(344); +emit_16(280); +emit_16(344); +emit_16(279); +emit_16(344); +emit_16(280); +emit_16(345); +emit_16(281); +emit_16(345); +emit_16(280); +emit_16(345); +emit_16(281); +emit_16(346); +emit_16(282); +emit_16(346); +emit_16(281); +emit_16(346); +emit_16(282); +emit_16(347); +emit_16(283); +emit_16(347); +emit_16(282); +emit_16(347); +emit_16(283); +emit_16(348); +emit_16(284); +emit_16(348); +emit_16(283); +emit_16(348); +emit_16(284); +emit_16(349); +emit_16(285); +emit_16(349); +emit_16(284); +emit_16(349); +emit_16(285); +emit_16(350); +emit_16(286); +emit_16(350); +emit_16(285); +emit_16(350); +emit_16(286); +emit_16(351); +emit_16(287); +emit_16(351); +emit_16(286); +emit_16(351); +emit_16(287); +emit_16(352); +emit_16(288); +emit_16(352); +emit_16(287); +emit_16(352); +emit_16(288); +emit_16(353); +emit_16(289); +emit_16(353); +emit_16(288); +emit_16(353); +emit_16(289); +emit_16(354); +emit_16(290); +emit_16(354); +emit_16(289); +emit_16(354); +emit_16(290); +emit_16(355); +emit_16(291); +emit_16(355); +emit_16(290); +emit_16(355); +emit_16(291); +emit_16(356); +emit_16(292); +emit_16(356); +emit_16(291); +emit_16(356); +emit_16(292); +emit_16(357); +emit_16(293); +emit_16(357); +emit_16(292); +emit_16(357); +emit_16(293); +emit_16(358); +emit_16(294); +emit_16(358); +emit_16(293); +emit_16(358); +emit_16(294); +emit_16(359); +emit_16(295); +emit_16(359); +emit_16(294); +emit_16(359); +emit_16(295); +emit_16(360); +emit_16(296); +emit_16(360); +emit_16(295); +emit_16(360); +emit_16(296); +emit_16(361); +emit_16(297); +emit_16(361); +emit_16(296); +emit_16(361); +emit_16(297); +emit_16(362); +emit_16(298); +emit_16(362); +emit_16(297); +emit_16(362); +emit_16(298); +emit_16(363); +emit_16(299); +emit_16(363); +emit_16(298); +emit_16(363); +emit_16(299); +emit_16(364); +emit_16(300); +emit_16(364); +emit_16(299); +emit_16(364); +emit_16(300); +emit_16(365); +emit_16(301); +emit_16(365); +emit_16(300); +emit_16(365); +emit_16(301); +emit_16(366); +emit_16(302); +emit_16(366); +emit_16(301); +emit_16(366); +emit_16(302); +emit_16(367); +emit_16(303); +emit_16(367); +emit_16(302); +emit_16(367); +emit_16(303); +emit_16(368); +emit_16(304); +emit_16(368); +emit_16(303); +emit_16(368); +emit_16(304); +emit_16(369); +emit_16(305); +emit_16(369); +emit_16(304); +emit_16(369); +emit_16(305); +emit_16(370); +emit_16(306); +emit_16(370); +emit_16(305); +emit_16(370); +emit_16(306); +emit_16(371); +emit_16(307); +emit_16(371); +emit_16(306); +emit_16(371); +emit_16(307); +emit_16(372); +emit_16(308); +emit_16(372); +emit_16(307); +emit_16(372); +emit_16(308); +emit_16(373); +emit_16(309); +emit_16(373); +emit_16(308); +emit_16(373); +emit_16(309); +emit_16(374); +emit_16(310); +emit_16(374); +emit_16(309); +emit_16(374); +emit_16(310); +emit_16(375); +emit_16(311); +emit_16(375); +emit_16(310); +emit_16(375); +emit_16(311); +emit_16(376); +emit_16(312); +emit_16(376); +emit_16(311); +emit_16(376); +emit_16(312); +emit_16(377); +emit_16(313); +emit_16(377); +emit_16(312); +emit_16(377); +emit_16(313); +emit_16(378); +emit_16(314); +emit_16(378); +emit_16(313); +emit_16(378); +emit_16(314); +emit_16(379); +emit_16(315); +emit_16(379); +emit_16(314); +emit_16(379); +emit_16(315); +emit_16(380); +emit_16(316); +emit_16(380); +emit_16(315); +emit_16(380); +emit_16(316); +emit_16(381); +emit_16(317); +emit_16(381); +emit_16(316); +emit_16(381); +emit_16(317); +emit_16(382); +emit_16(318); +emit_16(382); +emit_16(317); +emit_16(382); +emit_16(318); +emit_16(383); +emit_16(319); +emit_16(383); +emit_16(318); +emit_16(384); +emit_16(320); +emit_16(385); +emit_16(321); +emit_16(385); +emit_16(320); +emit_16(385); +emit_16(321); +emit_16(386); +emit_16(322); +emit_16(386); +emit_16(321); +emit_16(386); +emit_16(322); +emit_16(387); +emit_16(323); +emit_16(387); +emit_16(322); +emit_16(387); +emit_16(323); +emit_16(388); +emit_16(324); +emit_16(388); +emit_16(323); +emit_16(388); +emit_16(324); +emit_16(389); +emit_16(325); +emit_16(389); +emit_16(324); +emit_16(389); +emit_16(325); +emit_16(390); +emit_16(326); +emit_16(390); +emit_16(325); +emit_16(390); +emit_16(326); +emit_16(391); +emit_16(327); +emit_16(391); +emit_16(326); +emit_16(391); +emit_16(327); +emit_16(392); +emit_16(328); +emit_16(392); +emit_16(327); +emit_16(392); +emit_16(328); +emit_16(393); +emit_16(329); +emit_16(393); +emit_16(328); +emit_16(393); +emit_16(329); +emit_16(394); +emit_16(330); +emit_16(394); +emit_16(329); +emit_16(394); +emit_16(330); +emit_16(395); +emit_16(331); +emit_16(395); +emit_16(330); +emit_16(395); +emit_16(331); +emit_16(396); +emit_16(332); +emit_16(396); +emit_16(331); +emit_16(396); +emit_16(332); +emit_16(397); +emit_16(333); +emit_16(397); +emit_16(332); +emit_16(397); +emit_16(333); +emit_16(398); +emit_16(334); +emit_16(398); +emit_16(333); +emit_16(398); +emit_16(334); +emit_16(399); +emit_16(335); +emit_16(399); +emit_16(334); +emit_16(399); +emit_16(335); +emit_16(400); +emit_16(336); +emit_16(400); +emit_16(335); +emit_16(400); +emit_16(336); +emit_16(401); +emit_16(337); +emit_16(401); +emit_16(336); +emit_16(401); +emit_16(337); +emit_16(402); +emit_16(338); +emit_16(402); +emit_16(337); +emit_16(402); +emit_16(338); +emit_16(403); +emit_16(339); +emit_16(403); +emit_16(338); +emit_16(403); +emit_16(339); +emit_16(404); +emit_16(340); +emit_16(404); +emit_16(339); +emit_16(404); +emit_16(340); +emit_16(405); +emit_16(341); +emit_16(405); +emit_16(340); +emit_16(405); +emit_16(341); +emit_16(406); +emit_16(342); +emit_16(406); +emit_16(341); +emit_16(406); +emit_16(342); +emit_16(407); +emit_16(343); +emit_16(407); +emit_16(342); +emit_16(407); +emit_16(343); +emit_16(408); +emit_16(344); +emit_16(408); +emit_16(343); +emit_16(408); +emit_16(344); +emit_16(409); +emit_16(345); +emit_16(409); +emit_16(344); +emit_16(409); +emit_16(345); +emit_16(410); +emit_16(346); +emit_16(410); +emit_16(345); +emit_16(410); +emit_16(346); +emit_16(411); +emit_16(347); +emit_16(411); +emit_16(346); +emit_16(411); +emit_16(347); +emit_16(412); +emit_16(348); +emit_16(412); +emit_16(347); +emit_16(412); +emit_16(348); +emit_16(413); +emit_16(349); +emit_16(413); +emit_16(348); +emit_16(413); +emit_16(349); +emit_16(414); +emit_16(350); +emit_16(414); +emit_16(349); +emit_16(414); +emit_16(350); +emit_16(415); +emit_16(351); +emit_16(415); +emit_16(350); +emit_16(415); +emit_16(351); +emit_16(416); +emit_16(352); +emit_16(416); +emit_16(351); +emit_16(416); +emit_16(352); +emit_16(417); +emit_16(353); +emit_16(417); +emit_16(352); +emit_16(417); +emit_16(353); +emit_16(418); +emit_16(354); +emit_16(418); +emit_16(353); +emit_16(418); +emit_16(354); +emit_16(419); +emit_16(355); +emit_16(419); +emit_16(354); +emit_16(419); +emit_16(355); +emit_16(420); +emit_16(356); +emit_16(420); +emit_16(355); +emit_16(420); +emit_16(356); +emit_16(421); +emit_16(357); +emit_16(421); +emit_16(356); +emit_16(421); +emit_16(357); +emit_16(422); +emit_16(358); +emit_16(422); +emit_16(357); +emit_16(422); +emit_16(358); +emit_16(423); +emit_16(359); +emit_16(423); +emit_16(358); +emit_16(423); +emit_16(359); +emit_16(424); +emit_16(360); +emit_16(424); +emit_16(359); +emit_16(424); +emit_16(360); +emit_16(425); +emit_16(361); +emit_16(425); +emit_16(360); +emit_16(425); +emit_16(361); +emit_16(426); +emit_16(362); +emit_16(426); +emit_16(361); +emit_16(426); +emit_16(362); +emit_16(427); +emit_16(363); +emit_16(427); +emit_16(362); +emit_16(427); +emit_16(363); +emit_16(428); +emit_16(364); +emit_16(428); +emit_16(363); +emit_16(428); +emit_16(364); +emit_16(429); +emit_16(365); +emit_16(429); +emit_16(364); +emit_16(429); +emit_16(365); +emit_16(430); +emit_16(366); +emit_16(430); +emit_16(365); +emit_16(430); +emit_16(366); +emit_16(431); +emit_16(367); +emit_16(431); +emit_16(366); +emit_16(431); +emit_16(367); +emit_16(432); +emit_16(368); +emit_16(432); +emit_16(367); +emit_16(432); +emit_16(368); +emit_16(433); +emit_16(369); +emit_16(433); +emit_16(368); +emit_16(433); +emit_16(369); +emit_16(434); +emit_16(370); +emit_16(434); +emit_16(369); +emit_16(434); +emit_16(370); +emit_16(435); +emit_16(371); +emit_16(435); +emit_16(370); +emit_16(435); +emit_16(371); +emit_16(436); +emit_16(372); +emit_16(436); +emit_16(371); +emit_16(436); +emit_16(372); +emit_16(437); +emit_16(373); +emit_16(437); +emit_16(372); +emit_16(437); +emit_16(373); +emit_16(438); +emit_16(374); +emit_16(438); +emit_16(373); +emit_16(438); +emit_16(374); +emit_16(439); +emit_16(375); +emit_16(439); +emit_16(374); +emit_16(439); +emit_16(375); +emit_16(440); +emit_16(376); +emit_16(440); +emit_16(375); +emit_16(440); +emit_16(376); +emit_16(441); +emit_16(377); +emit_16(441); +emit_16(376); +emit_16(441); +emit_16(377); +emit_16(442); +emit_16(378); +emit_16(442); +emit_16(377); +emit_16(442); +emit_16(378); +emit_16(443); +emit_16(379); +emit_16(443); +emit_16(378); +emit_16(443); +emit_16(379); +emit_16(444); +emit_16(380); +emit_16(444); +emit_16(379); +emit_16(444); +emit_16(380); +emit_16(445); +emit_16(381); +emit_16(445); +emit_16(380); +emit_16(445); +emit_16(381); +emit_16(446); +emit_16(382); +emit_16(446); +emit_16(381); +emit_16(446); +emit_16(382); +emit_16(447); +emit_16(383); +emit_16(447); +emit_16(382); +emit_16(448); +emit_16(384); +emit_16(449); +emit_16(385); +emit_16(449); +emit_16(384); +emit_16(449); +emit_16(385); +emit_16(450); +emit_16(386); +emit_16(450); +emit_16(385); +emit_16(450); +emit_16(386); +emit_16(451); +emit_16(387); +emit_16(451); +emit_16(386); +emit_16(451); +emit_16(387); +emit_16(452); +emit_16(388); +emit_16(452); +emit_16(387); +emit_16(452); +emit_16(388); +emit_16(453); +emit_16(389); +emit_16(453); +emit_16(388); +emit_16(453); +emit_16(389); +emit_16(454); +emit_16(390); +emit_16(454); +emit_16(389); +emit_16(454); +emit_16(390); +emit_16(455); +emit_16(391); +emit_16(455); +emit_16(390); +emit_16(455); +emit_16(391); +emit_16(456); +emit_16(392); +emit_16(456); +emit_16(391); +emit_16(456); +emit_16(392); +emit_16(457); +emit_16(393); +emit_16(457); +emit_16(392); +emit_16(457); +emit_16(393); +emit_16(458); +emit_16(394); +emit_16(458); +emit_16(393); +emit_16(458); +emit_16(394); +emit_16(459); +emit_16(395); +emit_16(459); +emit_16(394); +emit_16(459); +emit_16(395); +emit_16(460); +emit_16(396); +emit_16(460); +emit_16(395); +emit_16(460); +emit_16(396); +emit_16(461); +emit_16(397); +emit_16(461); +emit_16(396); +emit_16(461); +emit_16(397); +emit_16(462); +emit_16(398); +emit_16(462); +emit_16(397); +emit_16(462); +emit_16(398); +emit_16(463); +emit_16(399); +emit_16(463); +emit_16(398); +emit_16(463); +emit_16(399); +emit_16(464); +emit_16(400); +emit_16(464); +emit_16(399); +emit_16(464); +emit_16(400); +emit_16(465); +emit_16(401); +emit_16(465); +emit_16(400); +emit_16(465); +emit_16(401); +emit_16(466); +emit_16(402); +emit_16(466); +emit_16(401); +emit_16(466); +emit_16(402); +emit_16(467); +emit_16(403); +emit_16(467); +emit_16(402); +emit_16(467); +emit_16(403); +emit_16(468); +emit_16(404); +emit_16(468); +emit_16(403); +emit_16(468); +emit_16(404); +emit_16(469); +emit_16(405); +emit_16(469); +emit_16(404); +emit_16(469); +emit_16(405); +emit_16(470); +emit_16(406); +emit_16(470); +emit_16(405); +emit_16(470); +emit_16(406); +emit_16(471); +emit_16(407); +emit_16(471); +emit_16(406); +emit_16(471); +emit_16(407); +emit_16(472); +emit_16(408); +emit_16(472); +emit_16(407); +emit_16(472); +emit_16(408); +emit_16(473); +emit_16(409); +emit_16(473); +emit_16(408); +emit_16(473); +emit_16(409); +emit_16(474); +emit_16(410); +emit_16(474); +emit_16(409); +emit_16(474); +emit_16(410); +emit_16(475); +emit_16(411); +emit_16(475); +emit_16(410); +emit_16(475); +emit_16(411); +emit_16(476); +emit_16(412); +emit_16(476); +emit_16(411); +emit_16(476); +emit_16(412); +emit_16(477); +emit_16(413); +emit_16(477); +emit_16(412); +emit_16(477); +emit_16(413); +emit_16(478); +emit_16(414); +emit_16(478); +emit_16(413); +emit_16(478); +emit_16(414); +emit_16(479); +emit_16(415); +emit_16(479); +emit_16(414); +emit_16(479); +emit_16(415); +emit_16(480); +emit_16(416); +emit_16(480); +emit_16(415); +emit_16(480); +emit_16(416); +emit_16(481); +emit_16(417); +emit_16(481); +emit_16(416); +emit_16(481); +emit_16(417); +emit_16(482); +emit_16(418); +emit_16(482); +emit_16(417); +emit_16(482); +emit_16(418); +emit_16(483); +emit_16(419); +emit_16(483); +emit_16(418); +emit_16(483); +emit_16(419); +emit_16(484); +emit_16(420); +emit_16(484); +emit_16(419); +emit_16(484); +emit_16(420); +emit_16(485); +emit_16(421); +emit_16(485); +emit_16(420); +emit_16(485); +emit_16(421); +emit_16(486); +emit_16(422); +emit_16(486); +emit_16(421); +emit_16(486); +emit_16(422); +emit_16(487); +emit_16(423); +emit_16(487); +emit_16(422); +emit_16(487); +emit_16(423); +emit_16(488); +emit_16(424); +emit_16(488); +emit_16(423); +emit_16(488); +emit_16(424); +emit_16(489); +emit_16(425); +emit_16(489); +emit_16(424); +emit_16(489); +emit_16(425); +emit_16(490); +emit_16(426); +emit_16(490); +emit_16(425); +emit_16(490); +emit_16(426); +emit_16(491); +emit_16(427); +emit_16(491); +emit_16(426); +emit_16(491); +emit_16(427); +emit_16(492); +emit_16(428); +emit_16(492); +emit_16(427); +emit_16(492); +emit_16(428); +emit_16(493); +emit_16(429); +emit_16(493); +emit_16(428); +emit_16(493); +emit_16(429); +emit_16(494); +emit_16(430); +emit_16(494); +emit_16(429); +emit_16(494); +emit_16(430); +emit_16(495); +emit_16(431); +emit_16(495); +emit_16(430); +emit_16(495); +emit_16(431); +emit_16(496); +emit_16(432); +emit_16(496); +emit_16(431); +emit_16(496); +emit_16(432); +emit_16(497); +emit_16(433); +emit_16(497); +emit_16(432); +emit_16(497); +emit_16(433); +emit_16(498); +emit_16(434); +emit_16(498); +emit_16(433); +emit_16(498); +emit_16(434); +emit_16(499); +emit_16(435); +emit_16(499); +emit_16(434); +emit_16(499); +emit_16(435); +emit_16(500); +emit_16(436); +emit_16(500); +emit_16(435); +emit_16(500); +emit_16(436); +emit_16(501); +emit_16(437); +emit_16(501); +emit_16(436); +emit_16(501); +emit_16(437); +emit_16(502); +emit_16(438); +emit_16(502); +emit_16(437); +emit_16(502); +emit_16(438); +emit_16(503); +emit_16(439); +emit_16(503); +emit_16(438); +emit_16(503); +emit_16(439); +emit_16(504); +emit_16(440); +emit_16(504); +emit_16(439); +emit_16(504); +emit_16(440); +emit_16(505); +emit_16(441); +emit_16(505); +emit_16(440); +emit_16(505); +emit_16(441); +emit_16(506); +emit_16(442); +emit_16(506); +emit_16(441); +emit_16(506); +emit_16(442); +emit_16(507); +emit_16(443); +emit_16(507); +emit_16(442); +emit_16(507); +emit_16(443); +emit_16(508); +emit_16(444); +emit_16(508); +emit_16(443); +emit_16(508); +emit_16(444); +emit_16(509); +emit_16(445); +emit_16(509); +emit_16(444); +emit_16(509); +emit_16(445); +emit_16(510); +emit_16(446); +emit_16(510); +emit_16(445); +emit_16(510); +emit_16(446); +emit_16(511); +emit_16(447); +emit_16(511); +emit_16(446); +emit_16(512); +emit_16(448); +emit_16(513); +emit_16(449); +emit_16(513); +emit_16(448); +emit_16(513); +emit_16(449); +emit_16(514); +emit_16(450); +emit_16(514); +emit_16(449); +emit_16(514); +emit_16(450); +emit_16(515); +emit_16(451); +emit_16(515); +emit_16(450); +emit_16(515); +emit_16(451); +emit_16(516); +emit_16(452); +emit_16(516); +emit_16(451); +emit_16(516); +emit_16(452); +emit_16(517); +emit_16(453); +emit_16(517); +emit_16(452); +emit_16(517); +emit_16(453); +emit_16(518); +emit_16(454); +emit_16(518); +emit_16(453); +emit_16(518); +emit_16(454); +emit_16(519); +emit_16(455); +emit_16(519); +emit_16(454); +emit_16(519); +emit_16(455); +emit_16(520); +emit_16(456); +emit_16(520); +emit_16(455); +emit_16(520); +emit_16(456); +emit_16(521); +emit_16(457); +emit_16(521); +emit_16(456); +emit_16(521); +emit_16(457); +emit_16(522); +emit_16(458); +emit_16(522); +emit_16(457); +emit_16(522); +emit_16(458); +emit_16(523); +emit_16(459); +emit_16(523); +emit_16(458); +emit_16(523); +emit_16(459); +emit_16(524); +emit_16(460); +emit_16(524); +emit_16(459); +emit_16(524); +emit_16(460); +emit_16(525); +emit_16(461); +emit_16(525); +emit_16(460); +emit_16(525); +emit_16(461); +emit_16(526); +emit_16(462); +emit_16(526); +emit_16(461); +emit_16(526); +emit_16(462); +emit_16(527); +emit_16(463); +emit_16(527); +emit_16(462); +emit_16(527); +emit_16(463); +emit_16(528); +emit_16(464); +emit_16(528); +emit_16(463); +emit_16(528); +emit_16(464); +emit_16(529); +emit_16(465); +emit_16(529); +emit_16(464); +emit_16(529); +emit_16(465); +emit_16(530); +emit_16(466); +emit_16(530); +emit_16(465); +emit_16(530); +emit_16(466); +emit_16(531); +emit_16(467); +emit_16(531); +emit_16(466); +emit_16(531); +emit_16(467); +emit_16(532); +emit_16(468); +emit_16(532); +emit_16(467); +emit_16(532); +emit_16(468); +emit_16(533); +emit_16(469); +emit_16(533); +emit_16(468); +emit_16(533); +emit_16(469); +emit_16(534); +emit_16(470); +emit_16(534); +emit_16(469); +emit_16(534); +emit_16(470); +emit_16(535); +emit_16(471); +emit_16(535); +emit_16(470); +emit_16(535); +emit_16(471); +emit_16(536); +emit_16(472); +emit_16(536); +emit_16(471); +emit_16(536); +emit_16(472); +emit_16(537); +emit_16(473); +emit_16(537); +emit_16(472); +emit_16(537); +emit_16(473); +emit_16(538); +emit_16(474); +emit_16(538); +emit_16(473); +emit_16(538); +emit_16(474); +emit_16(539); +emit_16(475); +emit_16(539); +emit_16(474); +emit_16(539); +emit_16(475); +emit_16(540); +emit_16(476); +emit_16(540); +emit_16(475); +emit_16(540); +emit_16(476); +emit_16(541); +emit_16(477); +emit_16(541); +emit_16(476); +emit_16(541); +emit_16(477); +emit_16(542); +emit_16(478); +emit_16(542); +emit_16(477); +emit_16(542); +emit_16(478); +emit_16(543); +emit_16(479); +emit_16(543); +emit_16(478); +emit_16(543); +emit_16(479); +emit_16(544); +emit_16(480); +emit_16(544); +emit_16(479); +emit_16(544); +emit_16(480); +emit_16(545); +emit_16(481); +emit_16(545); +emit_16(480); +emit_16(545); +emit_16(481); +emit_16(546); +emit_16(482); +emit_16(546); +emit_16(481); +emit_16(546); +emit_16(482); +emit_16(547); +emit_16(483); +emit_16(547); +emit_16(482); +emit_16(547); +emit_16(483); +emit_16(548); +emit_16(484); +emit_16(548); +emit_16(483); +emit_16(548); +emit_16(484); +emit_16(549); +emit_16(485); +emit_16(549); +emit_16(484); +emit_16(549); +emit_16(485); +emit_16(550); +emit_16(486); +emit_16(550); +emit_16(485); +emit_16(550); +emit_16(486); +emit_16(551); +emit_16(487); +emit_16(551); +emit_16(486); +emit_16(551); +emit_16(487); +emit_16(552); +emit_16(488); +emit_16(552); +emit_16(487); +emit_16(552); +emit_16(488); +emit_16(553); +emit_16(489); +emit_16(553); +emit_16(488); +emit_16(553); +emit_16(489); +emit_16(554); +emit_16(490); +emit_16(554); +emit_16(489); +emit_16(554); +emit_16(490); +emit_16(555); +emit_16(491); +emit_16(555); +emit_16(490); +emit_16(555); +emit_16(491); +emit_16(556); +emit_16(492); +emit_16(556); +emit_16(491); +emit_16(556); +emit_16(492); +emit_16(557); +emit_16(493); +emit_16(557); +emit_16(492); +emit_16(557); +emit_16(493); +emit_16(558); +emit_16(494); +emit_16(558); +emit_16(493); +emit_16(558); +emit_16(494); +emit_16(559); +emit_16(495); +emit_16(559); +emit_16(494); +emit_16(559); +emit_16(495); +emit_16(560); +emit_16(496); +emit_16(560); +emit_16(495); +emit_16(560); +emit_16(496); +emit_16(561); +emit_16(497); +emit_16(561); +emit_16(496); +emit_16(561); +emit_16(497); +emit_16(562); +emit_16(498); +emit_16(562); +emit_16(497); +emit_16(562); +emit_16(498); +emit_16(563); +emit_16(499); +emit_16(563); +emit_16(498); +emit_16(563); +emit_16(499); +emit_16(564); +emit_16(500); +emit_16(564); +emit_16(499); +emit_16(564); +emit_16(500); +emit_16(565); +emit_16(501); +emit_16(565); +emit_16(500); +emit_16(565); +emit_16(501); +emit_16(566); +emit_16(502); +emit_16(566); +emit_16(501); +emit_16(566); +emit_16(502); +emit_16(567); +emit_16(503); +emit_16(567); +emit_16(502); +emit_16(567); +emit_16(503); +emit_16(568); +emit_16(504); +emit_16(568); +emit_16(503); +emit_16(568); +emit_16(504); +emit_16(569); +emit_16(505); +emit_16(569); +emit_16(504); +emit_16(569); +emit_16(505); +emit_16(570); +emit_16(506); +emit_16(570); +emit_16(505); +emit_16(570); +emit_16(506); +emit_16(571); +emit_16(507); +emit_16(571); +emit_16(506); +emit_16(571); +emit_16(507); +emit_16(572); +emit_16(508); +emit_16(572); +emit_16(507); +emit_16(572); +emit_16(508); +emit_16(573); +emit_16(509); +emit_16(573); +emit_16(508); +emit_16(573); +emit_16(509); +emit_16(574); +emit_16(510); +emit_16(574); +emit_16(509); +emit_16(574); +emit_16(510); +emit_16(575); +emit_16(511); +emit_16(575); +emit_16(510); +emit_16(576); +emit_16(512); +emit_16(577); +emit_16(513); +emit_16(577); +emit_16(512); +emit_16(577); +emit_16(513); +emit_16(578); +emit_16(514); +emit_16(578); +emit_16(513); +emit_16(578); +emit_16(514); +emit_16(579); +emit_16(515); +emit_16(579); +emit_16(514); +emit_16(579); +emit_16(515); +emit_16(580); +emit_16(516); +emit_16(580); +emit_16(515); +emit_16(580); +emit_16(516); +emit_16(581); +emit_16(517); +emit_16(581); +emit_16(516); +emit_16(581); +emit_16(517); +emit_16(582); +emit_16(518); +emit_16(582); +emit_16(517); +emit_16(582); +emit_16(518); +emit_16(583); +emit_16(519); +emit_16(583); +emit_16(518); +emit_16(583); +emit_16(519); +emit_16(584); +emit_16(520); +emit_16(584); +emit_16(519); +emit_16(584); +emit_16(520); +emit_16(585); +emit_16(521); +emit_16(585); +emit_16(520); +emit_16(585); +emit_16(521); +emit_16(586); +emit_16(522); +emit_16(586); +emit_16(521); +emit_16(586); +emit_16(522); +emit_16(587); +emit_16(523); +emit_16(587); +emit_16(522); +emit_16(587); +emit_16(523); +emit_16(588); +emit_16(524); +emit_16(588); +emit_16(523); +emit_16(588); +emit_16(524); +emit_16(589); +emit_16(525); +emit_16(589); +emit_16(524); +emit_16(589); +emit_16(525); +emit_16(590); +emit_16(526); +emit_16(590); +emit_16(525); +emit_16(590); +emit_16(526); +emit_16(591); +emit_16(527); +emit_16(591); +emit_16(526); +emit_16(591); +emit_16(527); +emit_16(592); +emit_16(528); +emit_16(592); +emit_16(527); +emit_16(592); +emit_16(528); +emit_16(593); +emit_16(529); +emit_16(593); +emit_16(528); +emit_16(593); +emit_16(529); +emit_16(594); +emit_16(530); +emit_16(594); +emit_16(529); +emit_16(594); +emit_16(530); +emit_16(595); +emit_16(531); +emit_16(595); +emit_16(530); +emit_16(595); +emit_16(531); +emit_16(596); +emit_16(532); +emit_16(596); +emit_16(531); +emit_16(596); +emit_16(532); +emit_16(597); +emit_16(533); +emit_16(597); +emit_16(532); +emit_16(597); +emit_16(533); +emit_16(598); +emit_16(534); +emit_16(598); +emit_16(533); +emit_16(598); +emit_16(534); +emit_16(599); +emit_16(535); +emit_16(599); +emit_16(534); +emit_16(599); +emit_16(535); +emit_16(600); +emit_16(536); +emit_16(600); +emit_16(535); +emit_16(600); +emit_16(536); +emit_16(601); +emit_16(537); +emit_16(601); +emit_16(536); +emit_16(601); +emit_16(537); +emit_16(602); +emit_16(538); +emit_16(602); +emit_16(537); +emit_16(602); +emit_16(538); +emit_16(603); +emit_16(539); +emit_16(603); +emit_16(538); +emit_16(603); +emit_16(539); +emit_16(604); +emit_16(540); +emit_16(604); +emit_16(539); +emit_16(604); +emit_16(540); +emit_16(605); +emit_16(541); +emit_16(605); +emit_16(540); +emit_16(605); +emit_16(541); +emit_16(606); +emit_16(542); +emit_16(606); +emit_16(541); +emit_16(606); +emit_16(542); +emit_16(607); +emit_16(543); +emit_16(607); +emit_16(542); +emit_16(607); +emit_16(543); +emit_16(608); +emit_16(544); +emit_16(608); +emit_16(543); +emit_16(608); +emit_16(544); +emit_16(609); +emit_16(545); +emit_16(609); +emit_16(544); +emit_16(609); +emit_16(545); +emit_16(610); +emit_16(546); +emit_16(610); +emit_16(545); +emit_16(610); +emit_16(546); +emit_16(611); +emit_16(547); +emit_16(611); +emit_16(546); +emit_16(611); +emit_16(547); +emit_16(612); +emit_16(548); +emit_16(612); +emit_16(547); +emit_16(612); +emit_16(548); +emit_16(613); +emit_16(549); +emit_16(613); +emit_16(548); +emit_16(613); +emit_16(549); +emit_16(614); +emit_16(550); +emit_16(614); +emit_16(549); +emit_16(614); +emit_16(550); +emit_16(615); +emit_16(551); +emit_16(615); +emit_16(550); +emit_16(615); +emit_16(551); +emit_16(616); +emit_16(552); +emit_16(616); +emit_16(551); +emit_16(616); +emit_16(552); +emit_16(617); +emit_16(553); +emit_16(617); +emit_16(552); +emit_16(617); +emit_16(553); +emit_16(618); +emit_16(554); +emit_16(618); +emit_16(553); +emit_16(618); +emit_16(554); +emit_16(619); +emit_16(555); +emit_16(619); +emit_16(554); +emit_16(619); +emit_16(555); +emit_16(620); +emit_16(556); +emit_16(620); +emit_16(555); +emit_16(620); +emit_16(556); +emit_16(621); +emit_16(557); +emit_16(621); +emit_16(556); +emit_16(621); +emit_16(557); +emit_16(622); +emit_16(558); +emit_16(622); +emit_16(557); +emit_16(622); +emit_16(558); +emit_16(623); +emit_16(559); +emit_16(623); +emit_16(558); +emit_16(623); +emit_16(559); +emit_16(624); +emit_16(560); +emit_16(624); +emit_16(559); +emit_16(624); +emit_16(560); +emit_16(625); +emit_16(561); +emit_16(625); +emit_16(560); +emit_16(625); +emit_16(561); +emit_16(626); +emit_16(562); +emit_16(626); +emit_16(561); +emit_16(626); +emit_16(562); +emit_16(627); +emit_16(563); +emit_16(627); +emit_16(562); +emit_16(627); +emit_16(563); +emit_16(628); +emit_16(564); +emit_16(628); +emit_16(563); +emit_16(628); +emit_16(564); +emit_16(629); +emit_16(565); +emit_16(629); +emit_16(564); +emit_16(629); +emit_16(565); +emit_16(630); +emit_16(566); +emit_16(630); +emit_16(565); +emit_16(630); +emit_16(566); +emit_16(631); +emit_16(567); +emit_16(631); +emit_16(566); +emit_16(631); +emit_16(567); +emit_16(632); +emit_16(568); +emit_16(632); +emit_16(567); +emit_16(632); +emit_16(568); +emit_16(633); +emit_16(569); +emit_16(633); +emit_16(568); +emit_16(633); +emit_16(569); +emit_16(634); +emit_16(570); +emit_16(634); +emit_16(569); +emit_16(634); +emit_16(570); +emit_16(635); +emit_16(571); +emit_16(635); +emit_16(570); +emit_16(635); +emit_16(571); +emit_16(636); +emit_16(572); +emit_16(636); +emit_16(571); +emit_16(636); +emit_16(572); +emit_16(637); +emit_16(573); +emit_16(637); +emit_16(572); +emit_16(637); +emit_16(573); +emit_16(638); +emit_16(574); +emit_16(638); +emit_16(573); +emit_16(638); +emit_16(574); +emit_16(639); +emit_16(575); +emit_16(639); +emit_16(574); +emit_16(640); +emit_16(576); +emit_16(641); +emit_16(577); +emit_16(641); +emit_16(576); +emit_16(641); +emit_16(577); +emit_16(642); +emit_16(578); +emit_16(642); +emit_16(577); +emit_16(642); +emit_16(578); +emit_16(643); +emit_16(579); +emit_16(643); +emit_16(578); +emit_16(643); +emit_16(579); +emit_16(644); +emit_16(580); +emit_16(644); +emit_16(579); +emit_16(644); +emit_16(580); +emit_16(645); +emit_16(581); +emit_16(645); +emit_16(580); +emit_16(645); +emit_16(581); +emit_16(646); +emit_16(582); +emit_16(646); +emit_16(581); +emit_16(646); +emit_16(582); +emit_16(647); +emit_16(583); +emit_16(647); +emit_16(582); +emit_16(647); +emit_16(583); +emit_16(648); +emit_16(584); +emit_16(648); +emit_16(583); +emit_16(648); +emit_16(584); +emit_16(649); +emit_16(585); +emit_16(649); +emit_16(584); +emit_16(649); +emit_16(585); +emit_16(650); +emit_16(586); +emit_16(650); +emit_16(585); +emit_16(650); +emit_16(586); +emit_16(651); +emit_16(587); +emit_16(651); +emit_16(586); +emit_16(651); +emit_16(587); +emit_16(652); +emit_16(588); +emit_16(652); +emit_16(587); +emit_16(652); +emit_16(588); +emit_16(653); +emit_16(589); +emit_16(653); +emit_16(588); +emit_16(653); +emit_16(589); +emit_16(654); +emit_16(590); +emit_16(654); +emit_16(589); +emit_16(654); +emit_16(590); +emit_16(655); +emit_16(591); +emit_16(655); +emit_16(590); +emit_16(655); +emit_16(591); +emit_16(656); +emit_16(592); +emit_16(656); +emit_16(591); +emit_16(656); +emit_16(592); +emit_16(657); +emit_16(593); +emit_16(657); +emit_16(592); +emit_16(657); +emit_16(593); +emit_16(658); +emit_16(594); +emit_16(658); +emit_16(593); +emit_16(658); +emit_16(594); +emit_16(659); +emit_16(595); +emit_16(659); +emit_16(594); +emit_16(659); +emit_16(595); +emit_16(660); +emit_16(596); +emit_16(660); +emit_16(595); +emit_16(660); +emit_16(596); +emit_16(661); +emit_16(597); +emit_16(661); +emit_16(596); +emit_16(661); +emit_16(597); +emit_16(662); +emit_16(598); +emit_16(662); +emit_16(597); +emit_16(662); +emit_16(598); +emit_16(663); +emit_16(599); +emit_16(663); +emit_16(598); +emit_16(663); +emit_16(599); +emit_16(664); +emit_16(600); +emit_16(664); +emit_16(599); +emit_16(664); +emit_16(600); +emit_16(665); +emit_16(601); +emit_16(665); +emit_16(600); +emit_16(665); +emit_16(601); +emit_16(666); +emit_16(602); +emit_16(666); +emit_16(601); +emit_16(666); +emit_16(602); +emit_16(667); +emit_16(603); +emit_16(667); +emit_16(602); +emit_16(667); +emit_16(603); +emit_16(668); +emit_16(604); +emit_16(668); +emit_16(603); +emit_16(668); +emit_16(604); +emit_16(669); +emit_16(605); +emit_16(669); +emit_16(604); +emit_16(669); +emit_16(605); +emit_16(670); +emit_16(606); +emit_16(670); +emit_16(605); +emit_16(670); +emit_16(606); +emit_16(671); +emit_16(607); +emit_16(671); +emit_16(606); +emit_16(671); +emit_16(607); +emit_16(672); +emit_16(608); +emit_16(672); +emit_16(607); +emit_16(672); +emit_16(608); +emit_16(673); +emit_16(609); +emit_16(673); +emit_16(608); +emit_16(673); +emit_16(609); +emit_16(674); +emit_16(610); +emit_16(674); +emit_16(609); +emit_16(674); +emit_16(610); +emit_16(675); +emit_16(611); +emit_16(675); +emit_16(610); +emit_16(675); +emit_16(611); +emit_16(676); +emit_16(612); +emit_16(676); +emit_16(611); +emit_16(676); +emit_16(612); +emit_16(677); +emit_16(613); +emit_16(677); +emit_16(612); +emit_16(677); +emit_16(613); +emit_16(678); +emit_16(614); +emit_16(678); +emit_16(613); +emit_16(678); +emit_16(614); +emit_16(679); +emit_16(615); +emit_16(679); +emit_16(614); +emit_16(679); +emit_16(615); +emit_16(680); +emit_16(616); +emit_16(680); +emit_16(615); +emit_16(680); +emit_16(616); +emit_16(681); +emit_16(617); +emit_16(681); +emit_16(616); +emit_16(681); +emit_16(617); +emit_16(682); +emit_16(618); +emit_16(682); +emit_16(617); +emit_16(682); +emit_16(618); +emit_16(683); +emit_16(619); +emit_16(683); +emit_16(618); +emit_16(683); +emit_16(619); +emit_16(684); +emit_16(620); +emit_16(684); +emit_16(619); +emit_16(684); +emit_16(620); +emit_16(685); +emit_16(621); +emit_16(685); +emit_16(620); +emit_16(685); +emit_16(621); +emit_16(686); +emit_16(622); +emit_16(686); +emit_16(621); +emit_16(686); +emit_16(622); +emit_16(687); +emit_16(623); +emit_16(687); +emit_16(622); +emit_16(687); +emit_16(623); +emit_16(688); +emit_16(624); +emit_16(688); +emit_16(623); +emit_16(688); +emit_16(624); +emit_16(689); +emit_16(625); +emit_16(689); +emit_16(624); +emit_16(689); +emit_16(625); +emit_16(690); +emit_16(626); +emit_16(690); +emit_16(625); +emit_16(690); +emit_16(626); +emit_16(691); +emit_16(627); +emit_16(691); +emit_16(626); +emit_16(691); +emit_16(627); +emit_16(692); +emit_16(628); +emit_16(692); +emit_16(627); +emit_16(692); +emit_16(628); +emit_16(693); +emit_16(629); +emit_16(693); +emit_16(628); +emit_16(693); +emit_16(629); +emit_16(694); +emit_16(630); +emit_16(694); +emit_16(629); +emit_16(694); +emit_16(630); +emit_16(695); +emit_16(631); +emit_16(695); +emit_16(630); +emit_16(695); +emit_16(631); +emit_16(696); +emit_16(632); +emit_16(696); +emit_16(631); +emit_16(696); +emit_16(632); +emit_16(697); +emit_16(633); +emit_16(697); +emit_16(632); +emit_16(697); +emit_16(633); +emit_16(698); +emit_16(634); +emit_16(698); +emit_16(633); +emit_16(698); +emit_16(634); +emit_16(699); +emit_16(635); +emit_16(699); +emit_16(634); +emit_16(699); +emit_16(635); +emit_16(700); +emit_16(636); +emit_16(700); +emit_16(635); +emit_16(700); +emit_16(636); +emit_16(701); +emit_16(637); +emit_16(701); +emit_16(636); +emit_16(701); +emit_16(637); +emit_16(702); +emit_16(638); +emit_16(702); +emit_16(637); +emit_16(702); +emit_16(638); +emit_16(703); +emit_16(639); +emit_16(703); +emit_16(638); +emit_16(704); +emit_16(640); +emit_16(705); +emit_16(641); +emit_16(705); +emit_16(640); +emit_16(705); +emit_16(641); +emit_16(706); +emit_16(642); +emit_16(706); +emit_16(641); +emit_16(706); +emit_16(642); +emit_16(707); +emit_16(643); +emit_16(707); +emit_16(642); +emit_16(707); +emit_16(643); +emit_16(708); +emit_16(644); +emit_16(708); +emit_16(643); +emit_16(708); +emit_16(644); +emit_16(709); +emit_16(645); +emit_16(709); +emit_16(644); +emit_16(709); +emit_16(645); +emit_16(710); +emit_16(646); +emit_16(710); +emit_16(645); +emit_16(710); +emit_16(646); +emit_16(711); +emit_16(647); +emit_16(711); +emit_16(646); +emit_16(711); +emit_16(647); +emit_16(712); +emit_16(648); +emit_16(712); +emit_16(647); +emit_16(712); +emit_16(648); +emit_16(713); +emit_16(649); +emit_16(713); +emit_16(648); +emit_16(713); +emit_16(649); +emit_16(714); +emit_16(650); +emit_16(714); +emit_16(649); +emit_16(714); +emit_16(650); +emit_16(715); +emit_16(651); +emit_16(715); +emit_16(650); +emit_16(715); +emit_16(651); +emit_16(716); +emit_16(652); +emit_16(716); +emit_16(651); +emit_16(716); +emit_16(652); +emit_16(717); +emit_16(653); +emit_16(717); +emit_16(652); +emit_16(717); +emit_16(653); +emit_16(718); +emit_16(654); +emit_16(718); +emit_16(653); +emit_16(718); +emit_16(654); +emit_16(719); +emit_16(655); +emit_16(719); +emit_16(654); +emit_16(719); +emit_16(655); +emit_16(720); +emit_16(656); +emit_16(720); +emit_16(655); +emit_16(720); +emit_16(656); +emit_16(721); +emit_16(657); +emit_16(721); +emit_16(656); +emit_16(721); +emit_16(657); +emit_16(722); +emit_16(658); +emit_16(722); +emit_16(657); +emit_16(722); +emit_16(658); +emit_16(723); +emit_16(659); +emit_16(723); +emit_16(658); +emit_16(723); +emit_16(659); +emit_16(724); +emit_16(660); +emit_16(724); +emit_16(659); +emit_16(724); +emit_16(660); +emit_16(725); +emit_16(661); +emit_16(725); +emit_16(660); +emit_16(725); +emit_16(661); +emit_16(726); +emit_16(662); +emit_16(726); +emit_16(661); +emit_16(726); +emit_16(662); +emit_16(727); +emit_16(663); +emit_16(727); +emit_16(662); +emit_16(727); +emit_16(663); +emit_16(728); +emit_16(664); +emit_16(728); +emit_16(663); +emit_16(728); +emit_16(664); +emit_16(729); +emit_16(665); +emit_16(729); +emit_16(664); +emit_16(729); +emit_16(665); +emit_16(730); +emit_16(666); +emit_16(730); +emit_16(665); +emit_16(730); +emit_16(666); +emit_16(731); +emit_16(667); +emit_16(731); +emit_16(666); +emit_16(731); +emit_16(667); +emit_16(732); +emit_16(668); +emit_16(732); +emit_16(667); +emit_16(732); +emit_16(668); +emit_16(733); +emit_16(669); +emit_16(733); +emit_16(668); +emit_16(733); +emit_16(669); +emit_16(734); +emit_16(670); +emit_16(734); +emit_16(669); +emit_16(734); +emit_16(670); +emit_16(735); +emit_16(671); +emit_16(735); +emit_16(670); +emit_16(735); +emit_16(671); +emit_16(736); +emit_16(672); +emit_16(736); +emit_16(671); +emit_16(736); +emit_16(672); +emit_16(737); +emit_16(673); +emit_16(737); +emit_16(672); +emit_16(737); +emit_16(673); +emit_16(738); +emit_16(674); +emit_16(738); +emit_16(673); +emit_16(738); +emit_16(674); +emit_16(739); +emit_16(675); +emit_16(739); +emit_16(674); +emit_16(739); +emit_16(675); +emit_16(740); +emit_16(676); +emit_16(740); +emit_16(675); +emit_16(740); +emit_16(676); +emit_16(741); +emit_16(677); +emit_16(741); +emit_16(676); +emit_16(741); +emit_16(677); +emit_16(742); +emit_16(678); +emit_16(742); +emit_16(677); +emit_16(742); +emit_16(678); +emit_16(743); +emit_16(679); +emit_16(743); +emit_16(678); +emit_16(743); +emit_16(679); +emit_16(744); +emit_16(680); +emit_16(744); +emit_16(679); +emit_16(744); +emit_16(680); +emit_16(745); +emit_16(681); +emit_16(745); +emit_16(680); +emit_16(745); +emit_16(681); +emit_16(746); +emit_16(682); +emit_16(746); +emit_16(681); +emit_16(746); +emit_16(682); +emit_16(747); +emit_16(683); +emit_16(747); +emit_16(682); +emit_16(747); +emit_16(683); +emit_16(748); +emit_16(684); +emit_16(748); +emit_16(683); +emit_16(748); +emit_16(684); +emit_16(749); +emit_16(685); +emit_16(749); +emit_16(684); +emit_16(749); +emit_16(685); +emit_16(750); +emit_16(686); +emit_16(750); +emit_16(685); +emit_16(750); +emit_16(686); +emit_16(751); +emit_16(687); +emit_16(751); +emit_16(686); +emit_16(751); +emit_16(687); +emit_16(752); +emit_16(688); +emit_16(752); +emit_16(687); +emit_16(752); +emit_16(688); +emit_16(753); +emit_16(689); +emit_16(753); +emit_16(688); +emit_16(753); +emit_16(689); +emit_16(754); +emit_16(690); +emit_16(754); +emit_16(689); +emit_16(754); +emit_16(690); +emit_16(755); +emit_16(691); +emit_16(755); +emit_16(690); +emit_16(755); +emit_16(691); +emit_16(756); +emit_16(692); +emit_16(756); +emit_16(691); +emit_16(756); +emit_16(692); +emit_16(757); +emit_16(693); +emit_16(757); +emit_16(692); +emit_16(757); +emit_16(693); +emit_16(758); +emit_16(694); +emit_16(758); +emit_16(693); +emit_16(758); +emit_16(694); +emit_16(759); +emit_16(695); +emit_16(759); +emit_16(694); +emit_16(759); +emit_16(695); +emit_16(760); +emit_16(696); +emit_16(760); +emit_16(695); +emit_16(760); +emit_16(696); +emit_16(761); +emit_16(697); +emit_16(761); +emit_16(696); +emit_16(761); +emit_16(697); +emit_16(762); +emit_16(698); +emit_16(762); +emit_16(697); +emit_16(762); +emit_16(698); +emit_16(763); +emit_16(699); +emit_16(763); +emit_16(698); +emit_16(763); +emit_16(699); +emit_16(764); +emit_16(700); +emit_16(764); +emit_16(699); +emit_16(764); +emit_16(700); +emit_16(765); +emit_16(701); +emit_16(765); +emit_16(700); +emit_16(765); +emit_16(701); +emit_16(766); +emit_16(702); +emit_16(766); +emit_16(701); +emit_16(766); +emit_16(702); +emit_16(767); +emit_16(703); +emit_16(767); +emit_16(702); +emit_16(768); +emit_16(704); +emit_16(769); +emit_16(705); +emit_16(769); +emit_16(704); +emit_16(769); +emit_16(705); +emit_16(770); +emit_16(706); +emit_16(770); +emit_16(705); +emit_16(770); +emit_16(706); +emit_16(771); +emit_16(707); +emit_16(771); +emit_16(706); +emit_16(771); +emit_16(707); +emit_16(772); +emit_16(708); +emit_16(772); +emit_16(707); +emit_16(772); +emit_16(708); +emit_16(773); +emit_16(709); +emit_16(773); +emit_16(708); +emit_16(773); +emit_16(709); +emit_16(774); +emit_16(710); +emit_16(774); +emit_16(709); +emit_16(774); +emit_16(710); +emit_16(775); +emit_16(711); +emit_16(775); +emit_16(710); +emit_16(775); +emit_16(711); +emit_16(776); +emit_16(712); +emit_16(776); +emit_16(711); +emit_16(776); +emit_16(712); +emit_16(777); +emit_16(713); +emit_16(777); +emit_16(712); +emit_16(777); +emit_16(713); +emit_16(778); +emit_16(714); +emit_16(778); +emit_16(713); +emit_16(778); +emit_16(714); +emit_16(779); +emit_16(715); +emit_16(779); +emit_16(714); +emit_16(779); +emit_16(715); +emit_16(780); +emit_16(716); +emit_16(780); +emit_16(715); +emit_16(780); +emit_16(716); +emit_16(781); +emit_16(717); +emit_16(781); +emit_16(716); +emit_16(781); +emit_16(717); +emit_16(782); +emit_16(718); +emit_16(782); +emit_16(717); +emit_16(782); +emit_16(718); +emit_16(783); +emit_16(719); +emit_16(783); +emit_16(718); +emit_16(783); +emit_16(719); +emit_16(784); +emit_16(720); +emit_16(784); +emit_16(719); +emit_16(784); +emit_16(720); +emit_16(785); +emit_16(721); +emit_16(785); +emit_16(720); +emit_16(785); +emit_16(721); +emit_16(786); +emit_16(722); +emit_16(786); +emit_16(721); +emit_16(786); +emit_16(722); +emit_16(787); +emit_16(723); +emit_16(787); +emit_16(722); +emit_16(787); +emit_16(723); +emit_16(788); +emit_16(724); +emit_16(788); +emit_16(723); +emit_16(788); +emit_16(724); +emit_16(789); +emit_16(725); +emit_16(789); +emit_16(724); +emit_16(789); +emit_16(725); +emit_16(790); +emit_16(726); +emit_16(790); +emit_16(725); +emit_16(790); +emit_16(726); +emit_16(791); +emit_16(727); +emit_16(791); +emit_16(726); +emit_16(791); +emit_16(727); +emit_16(792); +emit_16(728); +emit_16(792); +emit_16(727); +emit_16(792); +emit_16(728); +emit_16(793); +emit_16(729); +emit_16(793); +emit_16(728); +emit_16(793); +emit_16(729); +emit_16(794); +emit_16(730); +emit_16(794); +emit_16(729); +emit_16(794); +emit_16(730); +emit_16(795); +emit_16(731); +emit_16(795); +emit_16(730); +emit_16(795); +emit_16(731); +emit_16(796); +emit_16(732); +emit_16(796); +emit_16(731); +emit_16(796); +emit_16(732); +emit_16(797); +emit_16(733); +emit_16(797); +emit_16(732); +emit_16(797); +emit_16(733); +emit_16(798); +emit_16(734); +emit_16(798); +emit_16(733); +emit_16(798); +emit_16(734); +emit_16(799); +emit_16(735); +emit_16(799); +emit_16(734); +emit_16(799); +emit_16(735); +emit_16(800); +emit_16(736); +emit_16(800); +emit_16(735); +emit_16(800); +emit_16(736); +emit_16(801); +emit_16(737); +emit_16(801); +emit_16(736); +emit_16(801); +emit_16(737); +emit_16(802); +emit_16(738); +emit_16(802); +emit_16(737); +emit_16(802); +emit_16(738); +emit_16(803); +emit_16(739); +emit_16(803); +emit_16(738); +emit_16(803); +emit_16(739); +emit_16(804); +emit_16(740); +emit_16(804); +emit_16(739); +emit_16(804); +emit_16(740); +emit_16(805); +emit_16(741); +emit_16(805); +emit_16(740); +emit_16(805); +emit_16(741); +emit_16(806); +emit_16(742); +emit_16(806); +emit_16(741); +emit_16(806); +emit_16(742); +emit_16(807); +emit_16(743); +emit_16(807); +emit_16(742); +emit_16(807); +emit_16(743); +emit_16(808); +emit_16(744); +emit_16(808); +emit_16(743); +emit_16(808); +emit_16(744); +emit_16(809); +emit_16(745); +emit_16(809); +emit_16(744); +emit_16(809); +emit_16(745); +emit_16(810); +emit_16(746); +emit_16(810); +emit_16(745); +emit_16(810); +emit_16(746); +emit_16(811); +emit_16(747); +emit_16(811); +emit_16(746); +emit_16(811); +emit_16(747); +emit_16(812); +emit_16(748); +emit_16(812); +emit_16(747); +emit_16(812); +emit_16(748); +emit_16(813); +emit_16(749); +emit_16(813); +emit_16(748); +emit_16(813); +emit_16(749); +emit_16(814); +emit_16(750); +emit_16(814); +emit_16(749); +emit_16(814); +emit_16(750); +emit_16(815); +emit_16(751); +emit_16(815); +emit_16(750); +emit_16(815); +emit_16(751); +emit_16(816); +emit_16(752); +emit_16(816); +emit_16(751); +emit_16(816); +emit_16(752); +emit_16(817); +emit_16(753); +emit_16(817); +emit_16(752); +emit_16(817); +emit_16(753); +emit_16(818); +emit_16(754); +emit_16(818); +emit_16(753); +emit_16(818); +emit_16(754); +emit_16(819); +emit_16(755); +emit_16(819); +emit_16(754); +emit_16(819); +emit_16(755); +emit_16(820); +emit_16(756); +emit_16(820); +emit_16(755); +emit_16(820); +emit_16(756); +emit_16(821); +emit_16(757); +emit_16(821); +emit_16(756); +emit_16(821); +emit_16(757); +emit_16(822); +emit_16(758); +emit_16(822); +emit_16(757); +emit_16(822); +emit_16(758); +emit_16(823); +emit_16(759); +emit_16(823); +emit_16(758); +emit_16(823); +emit_16(759); +emit_16(824); +emit_16(760); +emit_16(824); +emit_16(759); +emit_16(824); +emit_16(760); +emit_16(825); +emit_16(761); +emit_16(825); +emit_16(760); +emit_16(825); +emit_16(761); +emit_16(826); +emit_16(762); +emit_16(826); +emit_16(761); +emit_16(826); +emit_16(762); +emit_16(827); +emit_16(763); +emit_16(827); +emit_16(762); +emit_16(827); +emit_16(763); +emit_16(828); +emit_16(764); +emit_16(828); +emit_16(763); +emit_16(828); +emit_16(764); +emit_16(829); +emit_16(765); +emit_16(829); +emit_16(764); +emit_16(829); +emit_16(765); +emit_16(830); +emit_16(766); +emit_16(830); +emit_16(765); +emit_16(830); +emit_16(766); +emit_16(831); +emit_16(767); +emit_16(831); +emit_16(766); +emit_16(832); +emit_16(768); +emit_16(833); +emit_16(769); +emit_16(833); +emit_16(768); +emit_16(833); +emit_16(769); +emit_16(834); +emit_16(770); +emit_16(834); +emit_16(769); +emit_16(834); +emit_16(770); +emit_16(835); +emit_16(771); +emit_16(835); +emit_16(770); +emit_16(835); +emit_16(771); +emit_16(836); +emit_16(772); +emit_16(836); +emit_16(771); +emit_16(836); +emit_16(772); +emit_16(837); +emit_16(773); +emit_16(837); +emit_16(772); +emit_16(837); +emit_16(773); +emit_16(838); +emit_16(774); +emit_16(838); +emit_16(773); +emit_16(838); +emit_16(774); +emit_16(839); +emit_16(775); +emit_16(839); +emit_16(774); +emit_16(839); +emit_16(775); +emit_16(840); +emit_16(776); +emit_16(840); +emit_16(775); +emit_16(840); +emit_16(776); +emit_16(841); +emit_16(777); +emit_16(841); +emit_16(776); +emit_16(841); +emit_16(777); +emit_16(842); +emit_16(778); +emit_16(842); +emit_16(777); +emit_16(842); +emit_16(778); +emit_16(843); +emit_16(779); +emit_16(843); +emit_16(778); +emit_16(843); +emit_16(779); +emit_16(844); +emit_16(780); +emit_16(844); +emit_16(779); +emit_16(844); +emit_16(780); +emit_16(845); +emit_16(781); +emit_16(845); +emit_16(780); +emit_16(845); +emit_16(781); +emit_16(846); +emit_16(782); +emit_16(846); +emit_16(781); +emit_16(846); +emit_16(782); +emit_16(847); +emit_16(783); +emit_16(847); +emit_16(782); +emit_16(847); +emit_16(783); +emit_16(848); +emit_16(784); +emit_16(848); +emit_16(783); +emit_16(848); +emit_16(784); +emit_16(849); +emit_16(785); +emit_16(849); +emit_16(784); +emit_16(849); +emit_16(785); +emit_16(850); +emit_16(786); +emit_16(850); +emit_16(785); +emit_16(850); +emit_16(786); +emit_16(851); +emit_16(787); +emit_16(851); +emit_16(786); +emit_16(851); +emit_16(787); +emit_16(852); +emit_16(788); +emit_16(852); +emit_16(787); +emit_16(852); +emit_16(788); +emit_16(853); +emit_16(789); +emit_16(853); +emit_16(788); +emit_16(853); +emit_16(789); +emit_16(854); +emit_16(790); +emit_16(854); +emit_16(789); +emit_16(854); +emit_16(790); +emit_16(855); +emit_16(791); +emit_16(855); +emit_16(790); +emit_16(855); +emit_16(791); +emit_16(856); +emit_16(792); +emit_16(856); +emit_16(791); +emit_16(856); +emit_16(792); +emit_16(857); +emit_16(793); +emit_16(857); +emit_16(792); +emit_16(857); +emit_16(793); +emit_16(858); +emit_16(794); +emit_16(858); +emit_16(793); +emit_16(858); +emit_16(794); +emit_16(859); +emit_16(795); +emit_16(859); +emit_16(794); +emit_16(859); +emit_16(795); +emit_16(860); +emit_16(796); +emit_16(860); +emit_16(795); +emit_16(860); +emit_16(796); +emit_16(861); +emit_16(797); +emit_16(861); +emit_16(796); +emit_16(861); +emit_16(797); +emit_16(862); +emit_16(798); +emit_16(862); +emit_16(797); +emit_16(862); +emit_16(798); +emit_16(863); +emit_16(799); +emit_16(863); +emit_16(798); +emit_16(863); +emit_16(799); +emit_16(864); +emit_16(800); +emit_16(864); +emit_16(799); +emit_16(864); +emit_16(800); +emit_16(865); +emit_16(801); +emit_16(865); +emit_16(800); +emit_16(865); +emit_16(801); +emit_16(866); +emit_16(802); +emit_16(866); +emit_16(801); +emit_16(866); +emit_16(802); +emit_16(867); +emit_16(803); +emit_16(867); +emit_16(802); +emit_16(867); +emit_16(803); +emit_16(868); +emit_16(804); +emit_16(868); +emit_16(803); +emit_16(868); +emit_16(804); +emit_16(869); +emit_16(805); +emit_16(869); +emit_16(804); +emit_16(869); +emit_16(805); +emit_16(870); +emit_16(806); +emit_16(870); +emit_16(805); +emit_16(870); +emit_16(806); +emit_16(871); +emit_16(807); +emit_16(871); +emit_16(806); +emit_16(871); +emit_16(807); +emit_16(872); +emit_16(808); +emit_16(872); +emit_16(807); +emit_16(872); +emit_16(808); +emit_16(873); +emit_16(809); +emit_16(873); +emit_16(808); +emit_16(873); +emit_16(809); +emit_16(874); +emit_16(810); +emit_16(874); +emit_16(809); +emit_16(874); +emit_16(810); +emit_16(875); +emit_16(811); +emit_16(875); +emit_16(810); +emit_16(875); +emit_16(811); +emit_16(876); +emit_16(812); +emit_16(876); +emit_16(811); +emit_16(876); +emit_16(812); +emit_16(877); +emit_16(813); +emit_16(877); +emit_16(812); +emit_16(877); +emit_16(813); +emit_16(878); +emit_16(814); +emit_16(878); +emit_16(813); +emit_16(878); +emit_16(814); +emit_16(879); +emit_16(815); +emit_16(879); +emit_16(814); +emit_16(879); +emit_16(815); +emit_16(880); +emit_16(816); +emit_16(880); +emit_16(815); +emit_16(880); +emit_16(816); +emit_16(881); +emit_16(817); +emit_16(881); +emit_16(816); +emit_16(881); +emit_16(817); +emit_16(882); +emit_16(818); +emit_16(882); +emit_16(817); +emit_16(882); +emit_16(818); +emit_16(883); +emit_16(819); +emit_16(883); +emit_16(818); +emit_16(883); +emit_16(819); +emit_16(884); +emit_16(820); +emit_16(884); +emit_16(819); +emit_16(884); +emit_16(820); +emit_16(885); +emit_16(821); +emit_16(885); +emit_16(820); +emit_16(885); +emit_16(821); +emit_16(886); +emit_16(822); +emit_16(886); +emit_16(821); +emit_16(886); +emit_16(822); +emit_16(887); +emit_16(823); +emit_16(887); +emit_16(822); +emit_16(887); +emit_16(823); +emit_16(888); +emit_16(824); +emit_16(888); +emit_16(823); +emit_16(888); +emit_16(824); +emit_16(889); +emit_16(825); +emit_16(889); +emit_16(824); +emit_16(889); +emit_16(825); +emit_16(890); +emit_16(826); +emit_16(890); +emit_16(825); +emit_16(890); +emit_16(826); +emit_16(891); +emit_16(827); +emit_16(891); +emit_16(826); +emit_16(891); +emit_16(827); +emit_16(892); +emit_16(828); +emit_16(892); +emit_16(827); +emit_16(892); +emit_16(828); +emit_16(893); +emit_16(829); +emit_16(893); +emit_16(828); +emit_16(893); +emit_16(829); +emit_16(894); +emit_16(830); +emit_16(894); +emit_16(829); +emit_16(894); +emit_16(830); +emit_16(895); +emit_16(831); +emit_16(895); +emit_16(830); +emit_16(896); +emit_16(832); +emit_16(897); +emit_16(833); +emit_16(897); +emit_16(832); +emit_16(897); +emit_16(833); +emit_16(898); +emit_16(834); +emit_16(898); +emit_16(833); +emit_16(898); +emit_16(834); +emit_16(899); +emit_16(835); +emit_16(899); +emit_16(834); +emit_16(899); +emit_16(835); +emit_16(900); +emit_16(836); +emit_16(900); +emit_16(835); +emit_16(900); +emit_16(836); +emit_16(901); +emit_16(837); +emit_16(901); +emit_16(836); +emit_16(901); +emit_16(837); +emit_16(902); +emit_16(838); +emit_16(902); +emit_16(837); +emit_16(902); +emit_16(838); +emit_16(903); +emit_16(839); +emit_16(903); +emit_16(838); +emit_16(903); +emit_16(839); +emit_16(904); +emit_16(840); +emit_16(904); +emit_16(839); +emit_16(904); +emit_16(840); +emit_16(905); +emit_16(841); +emit_16(905); +emit_16(840); +emit_16(905); +emit_16(841); +emit_16(906); +emit_16(842); +emit_16(906); +emit_16(841); +emit_16(906); +emit_16(842); +emit_16(907); +emit_16(843); +emit_16(907); +emit_16(842); +emit_16(907); +emit_16(843); +emit_16(908); +emit_16(844); +emit_16(908); +emit_16(843); +emit_16(908); +emit_16(844); +emit_16(909); +emit_16(845); +emit_16(909); +emit_16(844); +emit_16(909); +emit_16(845); +emit_16(910); +emit_16(846); +emit_16(910); +emit_16(845); +emit_16(910); +emit_16(846); +emit_16(911); +emit_16(847); +emit_16(911); +emit_16(846); +emit_16(911); +emit_16(847); +emit_16(912); +emit_16(848); +emit_16(912); +emit_16(847); +emit_16(912); +emit_16(848); +emit_16(913); +emit_16(849); +emit_16(913); +emit_16(848); +emit_16(913); +emit_16(849); +emit_16(914); +emit_16(850); +emit_16(914); +emit_16(849); +emit_16(914); +emit_16(850); +emit_16(915); +emit_16(851); +emit_16(915); +emit_16(850); +emit_16(915); +emit_16(851); +emit_16(916); +emit_16(852); +emit_16(916); +emit_16(851); +emit_16(916); +emit_16(852); +emit_16(917); +emit_16(853); +emit_16(917); +emit_16(852); +emit_16(917); +emit_16(853); +emit_16(918); +emit_16(854); +emit_16(918); +emit_16(853); +emit_16(918); +emit_16(854); +emit_16(919); +emit_16(855); +emit_16(919); +emit_16(854); +emit_16(919); +emit_16(855); +emit_16(920); +emit_16(856); +emit_16(920); +emit_16(855); +emit_16(920); +emit_16(856); +emit_16(921); +emit_16(857); +emit_16(921); +emit_16(856); +emit_16(921); +emit_16(857); +emit_16(922); +emit_16(858); +emit_16(922); +emit_16(857); +emit_16(922); +emit_16(858); +emit_16(923); +emit_16(859); +emit_16(923); +emit_16(858); +emit_16(923); +emit_16(859); +emit_16(924); +emit_16(860); +emit_16(924); +emit_16(859); +emit_16(924); +emit_16(860); +emit_16(925); +emit_16(861); +emit_16(925); +emit_16(860); +emit_16(925); +emit_16(861); +emit_16(926); +emit_16(862); +emit_16(926); +emit_16(861); +emit_16(926); +emit_16(862); +emit_16(927); +emit_16(863); +emit_16(927); +emit_16(862); +emit_16(927); +emit_16(863); +emit_16(928); +emit_16(864); +emit_16(928); +emit_16(863); +emit_16(928); +emit_16(864); +emit_16(929); +emit_16(865); +emit_16(929); +emit_16(864); +emit_16(929); +emit_16(865); +emit_16(930); +emit_16(866); +emit_16(930); +emit_16(865); +emit_16(930); +emit_16(866); +emit_16(931); +emit_16(867); +emit_16(931); +emit_16(866); +emit_16(931); +emit_16(867); +emit_16(932); +emit_16(868); +emit_16(932); +emit_16(867); +emit_16(932); +emit_16(868); +emit_16(933); +emit_16(869); +emit_16(933); +emit_16(868); +emit_16(933); +emit_16(869); +emit_16(934); +emit_16(870); +emit_16(934); +emit_16(869); +emit_16(934); +emit_16(870); +emit_16(935); +emit_16(871); +emit_16(935); +emit_16(870); +emit_16(935); +emit_16(871); +emit_16(936); +emit_16(872); +emit_16(936); +emit_16(871); +emit_16(936); +emit_16(872); +emit_16(937); +emit_16(873); +emit_16(937); +emit_16(872); +emit_16(937); +emit_16(873); +emit_16(938); +emit_16(874); +emit_16(938); +emit_16(873); +emit_16(938); +emit_16(874); +emit_16(939); +emit_16(875); +emit_16(939); +emit_16(874); +emit_16(939); +emit_16(875); +emit_16(940); +emit_16(876); +emit_16(940); +emit_16(875); +emit_16(940); +emit_16(876); +emit_16(941); +emit_16(877); +emit_16(941); +emit_16(876); +emit_16(941); +emit_16(877); +emit_16(942); +emit_16(878); +emit_16(942); +emit_16(877); +emit_16(942); +emit_16(878); +emit_16(943); +emit_16(879); +emit_16(943); +emit_16(878); +emit_16(943); +emit_16(879); +emit_16(944); +emit_16(880); +emit_16(944); +emit_16(879); +emit_16(944); +emit_16(880); +emit_16(945); +emit_16(881); +emit_16(945); +emit_16(880); +emit_16(945); +emit_16(881); +emit_16(946); +emit_16(882); +emit_16(946); +emit_16(881); +emit_16(946); +emit_16(882); +emit_16(947); +emit_16(883); +emit_16(947); +emit_16(882); +emit_16(947); +emit_16(883); +emit_16(948); +emit_16(884); +emit_16(948); +emit_16(883); +emit_16(948); +emit_16(884); +emit_16(949); +emit_16(885); +emit_16(949); +emit_16(884); +emit_16(949); +emit_16(885); +emit_16(950); +emit_16(886); +emit_16(950); +emit_16(885); +emit_16(950); +emit_16(886); +emit_16(951); +emit_16(887); +emit_16(951); +emit_16(886); +emit_16(951); +emit_16(887); +emit_16(952); +emit_16(888); +emit_16(952); +emit_16(887); +emit_16(952); +emit_16(888); +emit_16(953); +emit_16(889); +emit_16(953); +emit_16(888); +emit_16(953); +emit_16(889); +emit_16(954); +emit_16(890); +emit_16(954); +emit_16(889); +emit_16(954); +emit_16(890); +emit_16(955); +emit_16(891); +emit_16(955); +emit_16(890); +emit_16(955); +emit_16(891); +emit_16(956); +emit_16(892); +emit_16(956); +emit_16(891); +emit_16(956); +emit_16(892); +emit_16(957); +emit_16(893); +emit_16(957); +emit_16(892); +emit_16(957); +emit_16(893); +emit_16(958); +emit_16(894); +emit_16(958); +emit_16(893); +emit_16(958); +emit_16(894); +emit_16(959); +emit_16(895); +emit_16(959); +emit_16(894); +emit_16(960); +emit_16(896); +emit_16(961); +emit_16(897); +emit_16(961); +emit_16(896); +emit_16(961); +emit_16(897); +emit_16(962); +emit_16(898); +emit_16(962); +emit_16(897); +emit_16(962); +emit_16(898); +emit_16(963); +emit_16(899); +emit_16(963); +emit_16(898); +emit_16(963); +emit_16(899); +emit_16(964); +emit_16(900); +emit_16(964); +emit_16(899); +emit_16(964); +emit_16(900); +emit_16(965); +emit_16(901); +emit_16(965); +emit_16(900); +emit_16(965); +emit_16(901); +emit_16(966); +emit_16(902); +emit_16(966); +emit_16(901); +emit_16(966); +emit_16(902); +emit_16(967); +emit_16(903); +emit_16(967); +emit_16(902); +emit_16(967); +emit_16(903); +emit_16(968); +emit_16(904); +emit_16(968); +emit_16(903); +emit_16(968); +emit_16(904); +emit_16(969); +emit_16(905); +emit_16(969); +emit_16(904); +emit_16(969); +emit_16(905); +emit_16(970); +emit_16(906); +emit_16(970); +emit_16(905); +emit_16(970); +emit_16(906); +emit_16(971); +emit_16(907); +emit_16(971); +emit_16(906); +emit_16(971); +emit_16(907); +emit_16(972); +emit_16(908); +emit_16(972); +emit_16(907); +emit_16(972); +emit_16(908); +emit_16(973); +emit_16(909); +emit_16(973); +emit_16(908); +emit_16(973); +emit_16(909); +emit_16(974); +emit_16(910); +emit_16(974); +emit_16(909); +emit_16(974); +emit_16(910); +emit_16(975); +emit_16(911); +emit_16(975); +emit_16(910); +emit_16(975); +emit_16(911); +emit_16(976); +emit_16(912); +emit_16(976); +emit_16(911); +emit_16(976); +emit_16(912); +emit_16(977); +emit_16(913); +emit_16(977); +emit_16(912); +emit_16(977); +emit_16(913); +emit_16(978); +emit_16(914); +emit_16(978); +emit_16(913); +emit_16(978); +emit_16(914); +emit_16(979); +emit_16(915); +emit_16(979); +emit_16(914); +emit_16(979); +emit_16(915); +emit_16(980); +emit_16(916); +emit_16(980); +emit_16(915); +emit_16(980); +emit_16(916); +emit_16(981); +emit_16(917); +emit_16(981); +emit_16(916); +emit_16(981); +emit_16(917); +emit_16(982); +emit_16(918); +emit_16(982); +emit_16(917); +emit_16(982); +emit_16(918); +emit_16(983); +emit_16(919); +emit_16(983); +emit_16(918); +emit_16(983); +emit_16(919); +emit_16(984); +emit_16(920); +emit_16(984); +emit_16(919); +emit_16(984); +emit_16(920); +emit_16(985); +emit_16(921); +emit_16(985); +emit_16(920); +emit_16(985); +emit_16(921); +emit_16(986); +emit_16(922); +emit_16(986); +emit_16(921); +emit_16(986); +emit_16(922); +emit_16(987); +emit_16(923); +emit_16(987); +emit_16(922); +emit_16(987); +emit_16(923); +emit_16(988); +emit_16(924); +emit_16(988); +emit_16(923); +emit_16(988); +emit_16(924); +emit_16(989); +emit_16(925); +emit_16(989); +emit_16(924); +emit_16(989); +emit_16(925); +emit_16(990); +emit_16(926); +emit_16(990); +emit_16(925); +emit_16(990); +emit_16(926); +emit_16(991); +emit_16(927); +emit_16(991); +emit_16(926); +emit_16(991); +emit_16(927); +emit_16(992); +emit_16(928); +emit_16(992); +emit_16(927); +emit_16(992); +emit_16(928); +emit_16(993); +emit_16(929); +emit_16(993); +emit_16(928); +emit_16(993); +emit_16(929); +emit_16(994); +emit_16(930); +emit_16(994); +emit_16(929); +emit_16(994); +emit_16(930); +emit_16(995); +emit_16(931); +emit_16(995); +emit_16(930); +emit_16(995); +emit_16(931); +emit_16(996); +emit_16(932); +emit_16(996); +emit_16(931); +emit_16(996); +emit_16(932); +emit_16(997); +emit_16(933); +emit_16(997); +emit_16(932); +emit_16(997); +emit_16(933); +emit_16(998); +emit_16(934); +emit_16(998); +emit_16(933); +emit_16(998); +emit_16(934); +emit_16(999); +emit_16(935); +emit_16(999); +emit_16(934); +emit_16(999); +emit_16(935); +emit_16(1000); +emit_16(936); +emit_16(1000); +emit_16(935); +emit_16(1000); +emit_16(936); +emit_16(1001); +emit_16(937); +emit_16(1001); +emit_16(936); +emit_16(1001); +emit_16(937); +emit_16(1002); +emit_16(938); +emit_16(1002); +emit_16(937); +emit_16(1002); +emit_16(938); +emit_16(1003); +emit_16(939); +emit_16(1003); +emit_16(938); +emit_16(1003); +emit_16(939); +emit_16(1004); +emit_16(940); +emit_16(1004); +emit_16(939); +emit_16(1004); +emit_16(940); +emit_16(1005); +emit_16(941); +emit_16(1005); +emit_16(940); +emit_16(1005); +emit_16(941); +emit_16(1006); +emit_16(942); +emit_16(1006); +emit_16(941); +emit_16(1006); +emit_16(942); +emit_16(1007); +emit_16(943); +emit_16(1007); +emit_16(942); +emit_16(1007); +emit_16(943); +emit_16(1008); +emit_16(944); +emit_16(1008); +emit_16(943); +emit_16(1008); +emit_16(944); +emit_16(1009); +emit_16(945); +emit_16(1009); +emit_16(944); +emit_16(1009); +emit_16(945); +emit_16(1010); +emit_16(946); +emit_16(1010); +emit_16(945); +emit_16(1010); +emit_16(946); +emit_16(1011); +emit_16(947); +emit_16(1011); +emit_16(946); +emit_16(1011); +emit_16(947); +emit_16(1012); +emit_16(948); +emit_16(1012); +emit_16(947); +emit_16(1012); +emit_16(948); +emit_16(1013); +emit_16(949); +emit_16(1013); +emit_16(948); +emit_16(1013); +emit_16(949); +emit_16(1014); +emit_16(950); +emit_16(1014); +emit_16(949); +emit_16(1014); +emit_16(950); +emit_16(1015); +emit_16(951); +emit_16(1015); +emit_16(950); +emit_16(1015); +emit_16(951); +emit_16(1016); +emit_16(952); +emit_16(1016); +emit_16(951); +emit_16(1016); +emit_16(952); +emit_16(1017); +emit_16(953); +emit_16(1017); +emit_16(952); +emit_16(1017); +emit_16(953); +emit_16(1018); +emit_16(954); +emit_16(1018); +emit_16(953); +emit_16(1018); +emit_16(954); +emit_16(1019); +emit_16(955); +emit_16(1019); +emit_16(954); +emit_16(1019); +emit_16(955); +emit_16(1020); +emit_16(956); +emit_16(1020); +emit_16(955); +emit_16(1020); +emit_16(956); +emit_16(1021); +emit_16(957); +emit_16(1021); +emit_16(956); +emit_16(1021); +emit_16(957); +emit_16(1022); +emit_16(958); +emit_16(1022); +emit_16(957); +emit_16(1022); +emit_16(958); +emit_16(1023); +emit_16(959); +emit_16(1023); +emit_16(958); +emit_16(1024); +emit_16(960); +emit_16(1025); +emit_16(961); +emit_16(1025); +emit_16(960); +emit_16(1025); +emit_16(961); +emit_16(1026); +emit_16(962); +emit_16(1026); +emit_16(961); +emit_16(1026); +emit_16(962); +emit_16(1027); +emit_16(963); +emit_16(1027); +emit_16(962); +emit_16(1027); +emit_16(963); +emit_16(1028); +emit_16(964); +emit_16(1028); +emit_16(963); +emit_16(1028); +emit_16(964); +emit_16(1029); +emit_16(965); +emit_16(1029); +emit_16(964); +emit_16(1029); +emit_16(965); +emit_16(1030); +emit_16(966); +emit_16(1030); +emit_16(965); +emit_16(1030); +emit_16(966); +emit_16(1031); +emit_16(967); +emit_16(1031); +emit_16(966); +emit_16(1031); +emit_16(967); +emit_16(1032); +emit_16(968); +emit_16(1032); +emit_16(967); +emit_16(1032); +emit_16(968); +emit_16(1033); +emit_16(969); +emit_16(1033); +emit_16(968); +emit_16(1033); +emit_16(969); +emit_16(1034); +emit_16(970); +emit_16(1034); +emit_16(969); +emit_16(1034); +emit_16(970); +emit_16(1035); +emit_16(971); +emit_16(1035); +emit_16(970); +emit_16(1035); +emit_16(971); +emit_16(1036); +emit_16(972); +emit_16(1036); +emit_16(971); +emit_16(1036); +emit_16(972); +emit_16(1037); +emit_16(973); +emit_16(1037); +emit_16(972); +emit_16(1037); +emit_16(973); +emit_16(1038); +emit_16(974); +emit_16(1038); +emit_16(973); +emit_16(1038); +emit_16(974); +emit_16(1039); +emit_16(975); +emit_16(1039); +emit_16(974); +emit_16(1039); +emit_16(975); +emit_16(1040); +emit_16(976); +emit_16(1040); +emit_16(975); +emit_16(1040); +emit_16(976); +emit_16(1041); +emit_16(977); +emit_16(1041); +emit_16(976); +emit_16(1041); +emit_16(977); +emit_16(1042); +emit_16(978); +emit_16(1042); +emit_16(977); +emit_16(1042); +emit_16(978); +emit_16(1043); +emit_16(979); +emit_16(1043); +emit_16(978); +emit_16(1043); +emit_16(979); +emit_16(1044); +emit_16(980); +emit_16(1044); +emit_16(979); +emit_16(1044); +emit_16(980); +emit_16(1045); +emit_16(981); +emit_16(1045); +emit_16(980); +emit_16(1045); +emit_16(981); +emit_16(1046); +emit_16(982); +emit_16(1046); +emit_16(981); +emit_16(1046); +emit_16(982); +emit_16(1047); +emit_16(983); +emit_16(1047); +emit_16(982); +emit_16(1047); +emit_16(983); +emit_16(1048); +emit_16(984); +emit_16(1048); +emit_16(983); +emit_16(1048); +emit_16(984); +emit_16(1049); +emit_16(985); +emit_16(1049); +emit_16(984); +emit_16(1049); +emit_16(985); +emit_16(1050); +emit_16(986); +emit_16(1050); +emit_16(985); +emit_16(1050); +emit_16(986); +emit_16(1051); +emit_16(987); +emit_16(1051); +emit_16(986); +emit_16(1051); +emit_16(987); +emit_16(1052); +emit_16(988); +emit_16(1052); +emit_16(987); +emit_16(1052); +emit_16(988); +emit_16(1053); +emit_16(989); +emit_16(1053); +emit_16(988); +emit_16(1053); +emit_16(989); +emit_16(1054); +emit_16(990); +emit_16(1054); +emit_16(989); +emit_16(1054); +emit_16(990); +emit_16(1055); +emit_16(991); +emit_16(1055); +emit_16(990); +emit_16(1055); +emit_16(991); +emit_16(1056); +emit_16(992); +emit_16(1056); +emit_16(991); +emit_16(1056); +emit_16(992); +emit_16(1057); +emit_16(993); +emit_16(1057); +emit_16(992); +emit_16(1057); +emit_16(993); +emit_16(1058); +emit_16(994); +emit_16(1058); +emit_16(993); +emit_16(1058); +emit_16(994); +emit_16(1059); +emit_16(995); +emit_16(1059); +emit_16(994); +emit_16(1059); +emit_16(995); +emit_16(1060); +emit_16(996); +emit_16(1060); +emit_16(995); +emit_16(1060); +emit_16(996); +emit_16(1061); +emit_16(997); +emit_16(1061); +emit_16(996); +emit_16(1061); +emit_16(997); +emit_16(1062); +emit_16(998); +emit_16(1062); +emit_16(997); +emit_16(1062); +emit_16(998); +emit_16(1063); +emit_16(999); +emit_16(1063); +emit_16(998); +emit_16(1063); +emit_16(999); +emit_16(1064); +emit_16(1000); +emit_16(1064); +emit_16(999); +emit_16(1064); +emit_16(1000); +emit_16(1065); +emit_16(1001); +emit_16(1065); +emit_16(1000); +emit_16(1065); +emit_16(1001); +emit_16(1066); +emit_16(1002); +emit_16(1066); +emit_16(1001); +emit_16(1066); +emit_16(1002); +emit_16(1067); +emit_16(1003); +emit_16(1067); +emit_16(1002); +emit_16(1067); +emit_16(1003); +emit_16(1068); +emit_16(1004); +emit_16(1068); +emit_16(1003); +emit_16(1068); +emit_16(1004); +emit_16(1069); +emit_16(1005); +emit_16(1069); +emit_16(1004); +emit_16(1069); +emit_16(1005); +emit_16(1070); +emit_16(1006); +emit_16(1070); +emit_16(1005); +emit_16(1070); +emit_16(1006); +emit_16(1071); +emit_16(1007); +emit_16(1071); +emit_16(1006); +emit_16(1071); +emit_16(1007); +emit_16(1072); +emit_16(1008); +emit_16(1072); +emit_16(1007); +emit_16(1072); +emit_16(1008); +emit_16(1073); +emit_16(1009); +emit_16(1073); +emit_16(1008); +emit_16(1073); +emit_16(1009); +emit_16(1074); +emit_16(1010); +emit_16(1074); +emit_16(1009); +emit_16(1074); +emit_16(1010); +emit_16(1075); +emit_16(1011); +emit_16(1075); +emit_16(1010); +emit_16(1075); +emit_16(1011); +emit_16(1076); +emit_16(1012); +emit_16(1076); +emit_16(1011); +emit_16(1076); +emit_16(1012); +emit_16(1077); +emit_16(1013); +emit_16(1077); +emit_16(1012); +emit_16(1077); +emit_16(1013); +emit_16(1078); +emit_16(1014); +emit_16(1078); +emit_16(1013); +emit_16(1078); +emit_16(1014); +emit_16(1079); +emit_16(1015); +emit_16(1079); +emit_16(1014); +emit_16(1079); +emit_16(1015); +emit_16(1080); +emit_16(1016); +emit_16(1080); +emit_16(1015); +emit_16(1080); +emit_16(1016); +emit_16(1081); +emit_16(1017); +emit_16(1081); +emit_16(1016); +emit_16(1081); +emit_16(1017); +emit_16(1082); +emit_16(1018); +emit_16(1082); +emit_16(1017); +emit_16(1082); +emit_16(1018); +emit_16(1083); +emit_16(1019); +emit_16(1083); +emit_16(1018); +emit_16(1083); +emit_16(1019); +emit_16(1084); +emit_16(1020); +emit_16(1084); +emit_16(1019); +emit_16(1084); +emit_16(1020); +emit_16(1085); +emit_16(1021); +emit_16(1085); +emit_16(1020); +emit_16(1085); +emit_16(1021); +emit_16(1086); +emit_16(1022); +emit_16(1086); +emit_16(1021); +emit_16(1086); +emit_16(1022); +emit_16(1087); +emit_16(1023); +emit_16(1087); +emit_16(1022); +emit_16(1088); +emit_16(1024); +emit_16(1089); +emit_16(1025); +emit_16(1089); +emit_16(1024); +emit_16(1089); +emit_16(1025); +emit_16(1090); +emit_16(1026); +emit_16(1090); +emit_16(1025); +emit_16(1090); +emit_16(1026); +emit_16(1091); +emit_16(1027); +emit_16(1091); +emit_16(1026); +emit_16(1091); +emit_16(1027); +emit_16(1092); +emit_16(1028); +emit_16(1092); +emit_16(1027); +emit_16(1092); +emit_16(1028); +emit_16(1093); +emit_16(1029); +emit_16(1093); +emit_16(1028); +emit_16(1093); +emit_16(1029); +emit_16(1094); +emit_16(1030); +emit_16(1094); +emit_16(1029); +emit_16(1094); +emit_16(1030); +emit_16(1095); +emit_16(1031); +emit_16(1095); +emit_16(1030); +emit_16(1095); +emit_16(1031); +emit_16(1096); +emit_16(1032); +emit_16(1096); +emit_16(1031); +emit_16(1096); +emit_16(1032); +emit_16(1097); +emit_16(1033); +emit_16(1097); +emit_16(1032); +emit_16(1097); +emit_16(1033); +emit_16(1098); +emit_16(1034); +emit_16(1098); +emit_16(1033); +emit_16(1098); +emit_16(1034); +emit_16(1099); +emit_16(1035); +emit_16(1099); +emit_16(1034); +emit_16(1099); +emit_16(1035); +emit_16(1100); +emit_16(1036); +emit_16(1100); +emit_16(1035); +emit_16(1100); +emit_16(1036); +emit_16(1101); +emit_16(1037); +emit_16(1101); +emit_16(1036); +emit_16(1101); +emit_16(1037); +emit_16(1102); +emit_16(1038); +emit_16(1102); +emit_16(1037); +emit_16(1102); +emit_16(1038); +emit_16(1103); +emit_16(1039); +emit_16(1103); +emit_16(1038); +emit_16(1103); +emit_16(1039); +emit_16(1104); +emit_16(1040); +emit_16(1104); +emit_16(1039); +emit_16(1104); +emit_16(1040); +emit_16(1105); +emit_16(1041); +emit_16(1105); +emit_16(1040); +emit_16(1105); +emit_16(1041); +emit_16(1106); +emit_16(1042); +emit_16(1106); +emit_16(1041); +emit_16(1106); +emit_16(1042); +emit_16(1107); +emit_16(1043); +emit_16(1107); +emit_16(1042); +emit_16(1107); +emit_16(1043); +emit_16(1108); +emit_16(1044); +emit_16(1108); +emit_16(1043); +emit_16(1108); +emit_16(1044); +emit_16(1109); +emit_16(1045); +emit_16(1109); +emit_16(1044); +emit_16(1109); +emit_16(1045); +emit_16(1110); +emit_16(1046); +emit_16(1110); +emit_16(1045); +emit_16(1110); +emit_16(1046); +emit_16(1111); +emit_16(1047); +emit_16(1111); +emit_16(1046); +emit_16(1111); +emit_16(1047); +emit_16(1112); +emit_16(1048); +emit_16(1112); +emit_16(1047); +emit_16(1112); +emit_16(1048); +emit_16(1113); +emit_16(1049); +emit_16(1113); +emit_16(1048); +emit_16(1113); +emit_16(1049); +emit_16(1114); +emit_16(1050); +emit_16(1114); +emit_16(1049); +emit_16(1114); +emit_16(1050); +emit_16(1115); +emit_16(1051); +emit_16(1115); +emit_16(1050); +emit_16(1115); +emit_16(1051); +emit_16(1116); +emit_16(1052); +emit_16(1116); +emit_16(1051); +emit_16(1116); +emit_16(1052); +emit_16(1117); +emit_16(1053); +emit_16(1117); +emit_16(1052); +emit_16(1117); +emit_16(1053); +emit_16(1118); +emit_16(1054); +emit_16(1118); +emit_16(1053); +emit_16(1118); +emit_16(1054); +emit_16(1119); +emit_16(1055); +emit_16(1119); +emit_16(1054); +emit_16(1119); +emit_16(1055); +emit_16(1120); +emit_16(1056); +emit_16(1120); +emit_16(1055); +emit_16(1120); +emit_16(1056); +emit_16(1121); +emit_16(1057); +emit_16(1121); +emit_16(1056); +emit_16(1121); +emit_16(1057); +emit_16(1122); +emit_16(1058); +emit_16(1122); +emit_16(1057); +emit_16(1122); +emit_16(1058); +emit_16(1123); +emit_16(1059); +emit_16(1123); +emit_16(1058); +emit_16(1123); +emit_16(1059); +emit_16(1124); +emit_16(1060); +emit_16(1124); +emit_16(1059); +emit_16(1124); +emit_16(1060); +emit_16(1125); +emit_16(1061); +emit_16(1125); +emit_16(1060); +emit_16(1125); +emit_16(1061); +emit_16(1126); +emit_16(1062); +emit_16(1126); +emit_16(1061); +emit_16(1126); +emit_16(1062); +emit_16(1127); +emit_16(1063); +emit_16(1127); +emit_16(1062); +emit_16(1127); +emit_16(1063); +emit_16(1128); +emit_16(1064); +emit_16(1128); +emit_16(1063); +emit_16(1128); +emit_16(1064); +emit_16(1129); +emit_16(1065); +emit_16(1129); +emit_16(1064); +emit_16(1129); +emit_16(1065); +emit_16(1130); +emit_16(1066); +emit_16(1130); +emit_16(1065); +emit_16(1130); +emit_16(1066); +emit_16(1131); +emit_16(1067); +emit_16(1131); +emit_16(1066); +emit_16(1131); +emit_16(1067); +emit_16(1132); +emit_16(1068); +emit_16(1132); +emit_16(1067); +emit_16(1132); +emit_16(1068); +emit_16(1133); +emit_16(1069); +emit_16(1133); +emit_16(1068); +emit_16(1133); +emit_16(1069); +emit_16(1134); +emit_16(1070); +emit_16(1134); +emit_16(1069); +emit_16(1134); +emit_16(1070); +emit_16(1135); +emit_16(1071); +emit_16(1135); +emit_16(1070); +emit_16(1135); +emit_16(1071); +emit_16(1136); +emit_16(1072); +emit_16(1136); +emit_16(1071); +emit_16(1136); +emit_16(1072); +emit_16(1137); +emit_16(1073); +emit_16(1137); +emit_16(1072); +emit_16(1137); +emit_16(1073); +emit_16(1138); +emit_16(1074); +emit_16(1138); +emit_16(1073); +emit_16(1138); +emit_16(1074); +emit_16(1139); +emit_16(1075); +emit_16(1139); +emit_16(1074); +emit_16(1139); +emit_16(1075); +emit_16(1140); +emit_16(1076); +emit_16(1140); +emit_16(1075); +emit_16(1140); +emit_16(1076); +emit_16(1141); +emit_16(1077); +emit_16(1141); +emit_16(1076); +emit_16(1141); +emit_16(1077); +emit_16(1142); +emit_16(1078); +emit_16(1142); +emit_16(1077); +emit_16(1142); +emit_16(1078); +emit_16(1143); +emit_16(1079); +emit_16(1143); +emit_16(1078); +emit_16(1143); +emit_16(1079); +emit_16(1144); +emit_16(1080); +emit_16(1144); +emit_16(1079); +emit_16(1144); +emit_16(1080); +emit_16(1145); +emit_16(1081); +emit_16(1145); +emit_16(1080); +emit_16(1145); +emit_16(1081); +emit_16(1146); +emit_16(1082); +emit_16(1146); +emit_16(1081); +emit_16(1146); +emit_16(1082); +emit_16(1147); +emit_16(1083); +emit_16(1147); +emit_16(1082); +emit_16(1147); +emit_16(1083); +emit_16(1148); +emit_16(1084); +emit_16(1148); +emit_16(1083); +emit_16(1148); +emit_16(1084); +emit_16(1149); +emit_16(1085); +emit_16(1149); +emit_16(1084); +emit_16(1149); +emit_16(1085); +emit_16(1150); +emit_16(1086); +emit_16(1150); +emit_16(1085); +emit_16(1150); +emit_16(1086); +emit_16(1151); +emit_16(1087); +emit_16(1151); +emit_16(1086); +emit_16(1152); +emit_16(1088); +emit_16(1153); +emit_16(1089); +emit_16(1153); +emit_16(1088); +emit_16(1153); +emit_16(1089); +emit_16(1154); +emit_16(1090); +emit_16(1154); +emit_16(1089); +emit_16(1154); +emit_16(1090); +emit_16(1155); +emit_16(1091); +emit_16(1155); +emit_16(1090); +emit_16(1155); +emit_16(1091); +emit_16(1156); +emit_16(1092); +emit_16(1156); +emit_16(1091); +emit_16(1156); +emit_16(1092); +emit_16(1157); +emit_16(1093); +emit_16(1157); +emit_16(1092); +emit_16(1157); +emit_16(1093); +emit_16(1158); +emit_16(1094); +emit_16(1158); +emit_16(1093); +emit_16(1158); +emit_16(1094); +emit_16(1159); +emit_16(1095); +emit_16(1159); +emit_16(1094); +emit_16(1159); +emit_16(1095); +emit_16(1160); +emit_16(1096); +emit_16(1160); +emit_16(1095); +emit_16(1160); +emit_16(1096); +emit_16(1161); +emit_16(1097); +emit_16(1161); +emit_16(1096); +emit_16(1161); +emit_16(1097); +emit_16(1162); +emit_16(1098); +emit_16(1162); +emit_16(1097); +emit_16(1162); +emit_16(1098); +emit_16(1163); +emit_16(1099); +emit_16(1163); +emit_16(1098); +emit_16(1163); +emit_16(1099); +emit_16(1164); +emit_16(1100); +emit_16(1164); +emit_16(1099); +emit_16(1164); +emit_16(1100); +emit_16(1165); +emit_16(1101); +emit_16(1165); +emit_16(1100); +emit_16(1165); +emit_16(1101); +emit_16(1166); +emit_16(1102); +emit_16(1166); +emit_16(1101); +emit_16(1166); +emit_16(1102); +emit_16(1167); +emit_16(1103); +emit_16(1167); +emit_16(1102); +emit_16(1167); +emit_16(1103); +emit_16(1168); +emit_16(1104); +emit_16(1168); +emit_16(1103); +emit_16(1168); +emit_16(1104); +emit_16(1169); +emit_16(1105); +emit_16(1169); +emit_16(1104); +emit_16(1169); +emit_16(1105); +emit_16(1170); +emit_16(1106); +emit_16(1170); +emit_16(1105); +emit_16(1170); +emit_16(1106); +emit_16(1171); +emit_16(1107); +emit_16(1171); +emit_16(1106); +emit_16(1171); +emit_16(1107); +emit_16(1172); +emit_16(1108); +emit_16(1172); +emit_16(1107); +emit_16(1172); +emit_16(1108); +emit_16(1173); +emit_16(1109); +emit_16(1173); +emit_16(1108); +emit_16(1173); +emit_16(1109); +emit_16(1174); +emit_16(1110); +emit_16(1174); +emit_16(1109); +emit_16(1174); +emit_16(1110); +emit_16(1175); +emit_16(1111); +emit_16(1175); +emit_16(1110); +emit_16(1175); +emit_16(1111); +emit_16(1176); +emit_16(1112); +emit_16(1176); +emit_16(1111); +emit_16(1176); +emit_16(1112); +emit_16(1177); +emit_16(1113); +emit_16(1177); +emit_16(1112); +emit_16(1177); +emit_16(1113); +emit_16(1178); +emit_16(1114); +emit_16(1178); +emit_16(1113); +emit_16(1178); +emit_16(1114); +emit_16(1179); +emit_16(1115); +emit_16(1179); +emit_16(1114); +emit_16(1179); +emit_16(1115); +emit_16(1180); +emit_16(1116); +emit_16(1180); +emit_16(1115); +emit_16(1180); +emit_16(1116); +emit_16(1181); +emit_16(1117); +emit_16(1181); +emit_16(1116); +emit_16(1181); +emit_16(1117); +emit_16(1182); +emit_16(1118); +emit_16(1182); +emit_16(1117); +emit_16(1182); +emit_16(1118); +emit_16(1183); +emit_16(1119); +emit_16(1183); +emit_16(1118); +emit_16(1183); +emit_16(1119); +emit_16(1184); +emit_16(1120); +emit_16(1184); +emit_16(1119); +emit_16(1184); +emit_16(1120); +emit_16(1185); +emit_16(1121); +emit_16(1185); +emit_16(1120); +emit_16(1185); +emit_16(1121); +emit_16(1186); +emit_16(1122); +emit_16(1186); +emit_16(1121); +emit_16(1186); +emit_16(1122); +emit_16(1187); +emit_16(1123); +emit_16(1187); +emit_16(1122); +emit_16(1187); +emit_16(1123); +emit_16(1188); +emit_16(1124); +emit_16(1188); +emit_16(1123); +emit_16(1188); +emit_16(1124); +emit_16(1189); +emit_16(1125); +emit_16(1189); +emit_16(1124); +emit_16(1189); +emit_16(1125); +emit_16(1190); +emit_16(1126); +emit_16(1190); +emit_16(1125); +emit_16(1190); +emit_16(1126); +emit_16(1191); +emit_16(1127); +emit_16(1191); +emit_16(1126); +emit_16(1191); +emit_16(1127); +emit_16(1192); +emit_16(1128); +emit_16(1192); +emit_16(1127); +emit_16(1192); +emit_16(1128); +emit_16(1193); +emit_16(1129); +emit_16(1193); +emit_16(1128); +emit_16(1193); +emit_16(1129); +emit_16(1194); +emit_16(1130); +emit_16(1194); +emit_16(1129); +emit_16(1194); +emit_16(1130); +emit_16(1195); +emit_16(1131); +emit_16(1195); +emit_16(1130); +emit_16(1195); +emit_16(1131); +emit_16(1196); +emit_16(1132); +emit_16(1196); +emit_16(1131); +emit_16(1196); +emit_16(1132); +emit_16(1197); +emit_16(1133); +emit_16(1197); +emit_16(1132); +emit_16(1197); +emit_16(1133); +emit_16(1198); +emit_16(1134); +emit_16(1198); +emit_16(1133); +emit_16(1198); +emit_16(1134); +emit_16(1199); +emit_16(1135); +emit_16(1199); +emit_16(1134); +emit_16(1199); +emit_16(1135); +emit_16(1200); +emit_16(1136); +emit_16(1200); +emit_16(1135); +emit_16(1200); +emit_16(1136); +emit_16(1201); +emit_16(1137); +emit_16(1201); +emit_16(1136); +emit_16(1201); +emit_16(1137); +emit_16(1202); +emit_16(1138); +emit_16(1202); +emit_16(1137); +emit_16(1202); +emit_16(1138); +emit_16(1203); +emit_16(1139); +emit_16(1203); +emit_16(1138); +emit_16(1203); +emit_16(1139); +emit_16(1204); +emit_16(1140); +emit_16(1204); +emit_16(1139); +emit_16(1204); +emit_16(1140); +emit_16(1205); +emit_16(1141); +emit_16(1205); +emit_16(1140); +emit_16(1205); +emit_16(1141); +emit_16(1206); +emit_16(1142); +emit_16(1206); +emit_16(1141); +emit_16(1206); +emit_16(1142); +emit_16(1207); +emit_16(1143); +emit_16(1207); +emit_16(1142); +emit_16(1207); +emit_16(1143); +emit_16(1208); +emit_16(1144); +emit_16(1208); +emit_16(1143); +emit_16(1208); +emit_16(1144); +emit_16(1209); +emit_16(1145); +emit_16(1209); +emit_16(1144); +emit_16(1209); +emit_16(1145); +emit_16(1210); +emit_16(1146); +emit_16(1210); +emit_16(1145); +emit_16(1210); +emit_16(1146); +emit_16(1211); +emit_16(1147); +emit_16(1211); +emit_16(1146); +emit_16(1211); +emit_16(1147); +emit_16(1212); +emit_16(1148); +emit_16(1212); +emit_16(1147); +emit_16(1212); +emit_16(1148); +emit_16(1213); +emit_16(1149); +emit_16(1213); +emit_16(1148); +emit_16(1213); +emit_16(1149); +emit_16(1214); +emit_16(1150); +emit_16(1214); +emit_16(1149); +emit_16(1214); +emit_16(1150); +emit_16(1215); +emit_16(1151); +emit_16(1215); +emit_16(1150); +emit_16(1216); +emit_16(1152); +emit_16(1217); +emit_16(1153); +emit_16(1217); +emit_16(1152); +emit_16(1217); +emit_16(1153); +emit_16(1218); +emit_16(1154); +emit_16(1218); +emit_16(1153); +emit_16(1218); +emit_16(1154); +emit_16(1219); +emit_16(1155); +emit_16(1219); +emit_16(1154); +emit_16(1219); +emit_16(1155); +emit_16(1220); +emit_16(1156); +emit_16(1220); +emit_16(1155); +emit_16(1220); +emit_16(1156); +emit_16(1221); +emit_16(1157); +emit_16(1221); +emit_16(1156); +emit_16(1221); +emit_16(1157); +emit_16(1222); +emit_16(1158); +emit_16(1222); +emit_16(1157); +emit_16(1222); +emit_16(1158); +emit_16(1223); +emit_16(1159); +emit_16(1223); +emit_16(1158); +emit_16(1223); +emit_16(1159); +emit_16(1224); +emit_16(1160); +emit_16(1224); +emit_16(1159); +emit_16(1224); +emit_16(1160); +emit_16(1225); +emit_16(1161); +emit_16(1225); +emit_16(1160); +emit_16(1225); +emit_16(1161); +emit_16(1226); +emit_16(1162); +emit_16(1226); +emit_16(1161); +emit_16(1226); +emit_16(1162); +emit_16(1227); +emit_16(1163); +emit_16(1227); +emit_16(1162); +emit_16(1227); +emit_16(1163); +emit_16(1228); +emit_16(1164); +emit_16(1228); +emit_16(1163); +emit_16(1228); +emit_16(1164); +emit_16(1229); +emit_16(1165); +emit_16(1229); +emit_16(1164); +emit_16(1229); +emit_16(1165); +emit_16(1230); +emit_16(1166); +emit_16(1230); +emit_16(1165); +emit_16(1230); +emit_16(1166); +emit_16(1231); +emit_16(1167); +emit_16(1231); +emit_16(1166); +emit_16(1231); +emit_16(1167); +emit_16(1232); +emit_16(1168); +emit_16(1232); +emit_16(1167); +emit_16(1232); +emit_16(1168); +emit_16(1233); +emit_16(1169); +emit_16(1233); +emit_16(1168); +emit_16(1233); +emit_16(1169); +emit_16(1234); +emit_16(1170); +emit_16(1234); +emit_16(1169); +emit_16(1234); +emit_16(1170); +emit_16(1235); +emit_16(1171); +emit_16(1235); +emit_16(1170); +emit_16(1235); +emit_16(1171); +emit_16(1236); +emit_16(1172); +emit_16(1236); +emit_16(1171); +emit_16(1236); +emit_16(1172); +emit_16(1237); +emit_16(1173); +emit_16(1237); +emit_16(1172); +emit_16(1237); +emit_16(1173); +emit_16(1238); +emit_16(1174); +emit_16(1238); +emit_16(1173); +emit_16(1238); +emit_16(1174); +emit_16(1239); +emit_16(1175); +emit_16(1239); +emit_16(1174); +emit_16(1239); +emit_16(1175); +emit_16(1240); +emit_16(1176); +emit_16(1240); +emit_16(1175); +emit_16(1240); +emit_16(1176); +emit_16(1241); +emit_16(1177); +emit_16(1241); +emit_16(1176); +emit_16(1241); +emit_16(1177); +emit_16(1242); +emit_16(1178); +emit_16(1242); +emit_16(1177); +emit_16(1242); +emit_16(1178); +emit_16(1243); +emit_16(1179); +emit_16(1243); +emit_16(1178); +emit_16(1243); +emit_16(1179); +emit_16(1244); +emit_16(1180); +emit_16(1244); +emit_16(1179); +emit_16(1244); +emit_16(1180); +emit_16(1245); +emit_16(1181); +emit_16(1245); +emit_16(1180); +emit_16(1245); +emit_16(1181); +emit_16(1246); +emit_16(1182); +emit_16(1246); +emit_16(1181); +emit_16(1246); +emit_16(1182); +emit_16(1247); +emit_16(1183); +emit_16(1247); +emit_16(1182); +emit_16(1247); +emit_16(1183); +emit_16(1248); +emit_16(1184); +emit_16(1248); +emit_16(1183); +emit_16(1248); +emit_16(1184); +emit_16(1249); +emit_16(1185); +emit_16(1249); +emit_16(1184); +emit_16(1249); +emit_16(1185); +emit_16(1250); +emit_16(1186); +emit_16(1250); +emit_16(1185); +emit_16(1250); +emit_16(1186); +emit_16(1251); +emit_16(1187); +emit_16(1251); +emit_16(1186); +emit_16(1251); +emit_16(1187); +emit_16(1252); +emit_16(1188); +emit_16(1252); +emit_16(1187); +emit_16(1252); +emit_16(1188); +emit_16(1253); +emit_16(1189); +emit_16(1253); +emit_16(1188); +emit_16(1253); +emit_16(1189); +emit_16(1254); +emit_16(1190); +emit_16(1254); +emit_16(1189); +emit_16(1254); +emit_16(1190); +emit_16(1255); +emit_16(1191); +emit_16(1255); +emit_16(1190); +emit_16(1255); +emit_16(1191); +emit_16(1256); +emit_16(1192); +emit_16(1256); +emit_16(1191); +emit_16(1256); +emit_16(1192); +emit_16(1257); +emit_16(1193); +emit_16(1257); +emit_16(1192); +emit_16(1257); +emit_16(1193); +emit_16(1258); +emit_16(1194); +emit_16(1258); +emit_16(1193); +emit_16(1258); +emit_16(1194); +emit_16(1259); +emit_16(1195); +emit_16(1259); +emit_16(1194); +emit_16(1259); +emit_16(1195); +emit_16(1260); +emit_16(1196); +emit_16(1260); +emit_16(1195); +emit_16(1260); +emit_16(1196); +emit_16(1261); +emit_16(1197); +emit_16(1261); +emit_16(1196); +emit_16(1261); +emit_16(1197); +emit_16(1262); +emit_16(1198); +emit_16(1262); +emit_16(1197); +emit_16(1262); +emit_16(1198); +emit_16(1263); +emit_16(1199); +emit_16(1263); +emit_16(1198); +emit_16(1263); +emit_16(1199); +emit_16(1264); +emit_16(1200); +emit_16(1264); +emit_16(1199); +emit_16(1264); +emit_16(1200); +emit_16(1265); +emit_16(1201); +emit_16(1265); +emit_16(1200); +emit_16(1265); +emit_16(1201); +emit_16(1266); +emit_16(1202); +emit_16(1266); +emit_16(1201); +emit_16(1266); +emit_16(1202); +emit_16(1267); +emit_16(1203); +emit_16(1267); +emit_16(1202); +emit_16(1267); +emit_16(1203); +emit_16(1268); +emit_16(1204); +emit_16(1268); +emit_16(1203); +emit_16(1268); +emit_16(1204); +emit_16(1269); +emit_16(1205); +emit_16(1269); +emit_16(1204); +emit_16(1269); +emit_16(1205); +emit_16(1270); +emit_16(1206); +emit_16(1270); +emit_16(1205); +emit_16(1270); +emit_16(1206); +emit_16(1271); +emit_16(1207); +emit_16(1271); +emit_16(1206); +emit_16(1271); +emit_16(1207); +emit_16(1272); +emit_16(1208); +emit_16(1272); +emit_16(1207); +emit_16(1272); +emit_16(1208); +emit_16(1273); +emit_16(1209); +emit_16(1273); +emit_16(1208); +emit_16(1273); +emit_16(1209); +emit_16(1274); +emit_16(1210); +emit_16(1274); +emit_16(1209); +emit_16(1274); +emit_16(1210); +emit_16(1275); +emit_16(1211); +emit_16(1275); +emit_16(1210); +emit_16(1275); +emit_16(1211); +emit_16(1276); +emit_16(1212); +emit_16(1276); +emit_16(1211); +emit_16(1276); +emit_16(1212); +emit_16(1277); +emit_16(1213); +emit_16(1277); +emit_16(1212); +emit_16(1277); +emit_16(1213); +emit_16(1278); +emit_16(1214); +emit_16(1278); +emit_16(1213); +emit_16(1278); +emit_16(1214); +emit_16(1279); +emit_16(1215); +emit_16(1279); +emit_16(1214); +emit_16(1280); +emit_16(1216); +emit_16(1281); +emit_16(1217); +emit_16(1281); +emit_16(1216); +emit_16(1281); +emit_16(1217); +emit_16(1282); +emit_16(1218); +emit_16(1282); +emit_16(1217); +emit_16(1282); +emit_16(1218); +emit_16(1283); +emit_16(1219); +emit_16(1283); +emit_16(1218); +emit_16(1283); +emit_16(1219); +emit_16(1284); +emit_16(1220); +emit_16(1284); +emit_16(1219); +emit_16(1284); +emit_16(1220); +emit_16(1285); +emit_16(1221); +emit_16(1285); +emit_16(1220); +emit_16(1285); +emit_16(1221); +emit_16(1286); +emit_16(1222); +emit_16(1286); +emit_16(1221); +emit_16(1286); +emit_16(1222); +emit_16(1287); +emit_16(1223); +emit_16(1287); +emit_16(1222); +emit_16(1287); +emit_16(1223); +emit_16(1288); +emit_16(1224); +emit_16(1288); +emit_16(1223); +emit_16(1288); +emit_16(1224); +emit_16(1289); +emit_16(1225); +emit_16(1289); +emit_16(1224); +emit_16(1289); +emit_16(1225); +emit_16(1290); +emit_16(1226); +emit_16(1290); +emit_16(1225); +emit_16(1290); +emit_16(1226); +emit_16(1291); +emit_16(1227); +emit_16(1291); +emit_16(1226); +emit_16(1291); +emit_16(1227); +emit_16(1292); +emit_16(1228); +emit_16(1292); +emit_16(1227); +emit_16(1292); +emit_16(1228); +emit_16(1293); +emit_16(1229); +emit_16(1293); +emit_16(1228); +emit_16(1293); +emit_16(1229); +emit_16(1294); +emit_16(1230); +emit_16(1294); +emit_16(1229); +emit_16(1294); +emit_16(1230); +emit_16(1295); +emit_16(1231); +emit_16(1295); +emit_16(1230); +emit_16(1295); +emit_16(1231); +emit_16(1296); +emit_16(1232); +emit_16(1296); +emit_16(1231); +emit_16(1296); +emit_16(1232); +emit_16(1297); +emit_16(1233); +emit_16(1297); +emit_16(1232); +emit_16(1297); +emit_16(1233); +emit_16(1298); +emit_16(1234); +emit_16(1298); +emit_16(1233); +emit_16(1298); +emit_16(1234); +emit_16(1299); +emit_16(1235); +emit_16(1299); +emit_16(1234); +emit_16(1299); +emit_16(1235); +emit_16(1300); +emit_16(1236); +emit_16(1300); +emit_16(1235); +emit_16(1300); +emit_16(1236); +emit_16(1301); +emit_16(1237); +emit_16(1301); +emit_16(1236); +emit_16(1301); +emit_16(1237); +emit_16(1302); +emit_16(1238); +emit_16(1302); +emit_16(1237); +emit_16(1302); +emit_16(1238); +emit_16(1303); +emit_16(1239); +emit_16(1303); +emit_16(1238); +emit_16(1303); +emit_16(1239); +emit_16(1304); +emit_16(1240); +emit_16(1304); +emit_16(1239); +emit_16(1304); +emit_16(1240); +emit_16(1305); +emit_16(1241); +emit_16(1305); +emit_16(1240); +emit_16(1305); +emit_16(1241); +emit_16(1306); +emit_16(1242); +emit_16(1306); +emit_16(1241); +emit_16(1306); +emit_16(1242); +emit_16(1307); +emit_16(1243); +emit_16(1307); +emit_16(1242); +emit_16(1307); +emit_16(1243); +emit_16(1308); +emit_16(1244); +emit_16(1308); +emit_16(1243); +emit_16(1308); +emit_16(1244); +emit_16(1309); +emit_16(1245); +emit_16(1309); +emit_16(1244); +emit_16(1309); +emit_16(1245); +emit_16(1310); +emit_16(1246); +emit_16(1310); +emit_16(1245); +emit_16(1310); +emit_16(1246); +emit_16(1311); +emit_16(1247); +emit_16(1311); +emit_16(1246); +emit_16(1311); +emit_16(1247); +emit_16(1312); +emit_16(1248); +emit_16(1312); +emit_16(1247); +emit_16(1312); +emit_16(1248); +emit_16(1313); +emit_16(1249); +emit_16(1313); +emit_16(1248); +emit_16(1313); +emit_16(1249); +emit_16(1314); +emit_16(1250); +emit_16(1314); +emit_16(1249); +emit_16(1314); +emit_16(1250); +emit_16(1315); +emit_16(1251); +emit_16(1315); +emit_16(1250); +emit_16(1315); +emit_16(1251); +emit_16(1316); +emit_16(1252); +emit_16(1316); +emit_16(1251); +emit_16(1316); +emit_16(1252); +emit_16(1317); +emit_16(1253); +emit_16(1317); +emit_16(1252); +emit_16(1317); +emit_16(1253); +emit_16(1318); +emit_16(1254); +emit_16(1318); +emit_16(1253); +emit_16(1318); +emit_16(1254); +emit_16(1319); +emit_16(1255); +emit_16(1319); +emit_16(1254); +emit_16(1319); +emit_16(1255); +emit_16(1320); +emit_16(1256); +emit_16(1320); +emit_16(1255); +emit_16(1320); +emit_16(1256); +emit_16(1321); +emit_16(1257); +emit_16(1321); +emit_16(1256); +emit_16(1321); +emit_16(1257); +emit_16(1322); +emit_16(1258); +emit_16(1322); +emit_16(1257); +emit_16(1322); +emit_16(1258); +emit_16(1323); +emit_16(1259); +emit_16(1323); +emit_16(1258); +emit_16(1323); +emit_16(1259); +emit_16(1324); +emit_16(1260); +emit_16(1324); +emit_16(1259); +emit_16(1324); +emit_16(1260); +emit_16(1325); +emit_16(1261); +emit_16(1325); +emit_16(1260); +emit_16(1325); +emit_16(1261); +emit_16(1326); +emit_16(1262); +emit_16(1326); +emit_16(1261); +emit_16(1326); +emit_16(1262); +emit_16(1327); +emit_16(1263); +emit_16(1327); +emit_16(1262); +emit_16(1327); +emit_16(1263); +emit_16(1328); +emit_16(1264); +emit_16(1328); +emit_16(1263); +emit_16(1328); +emit_16(1264); +emit_16(1329); +emit_16(1265); +emit_16(1329); +emit_16(1264); +emit_16(1329); +emit_16(1265); +emit_16(1330); +emit_16(1266); +emit_16(1330); +emit_16(1265); +emit_16(1330); +emit_16(1266); +emit_16(1331); +emit_16(1267); +emit_16(1331); +emit_16(1266); +emit_16(1331); +emit_16(1267); +emit_16(1332); +emit_16(1268); +emit_16(1332); +emit_16(1267); +emit_16(1332); +emit_16(1268); +emit_16(1333); +emit_16(1269); +emit_16(1333); +emit_16(1268); +emit_16(1333); +emit_16(1269); +emit_16(1334); +emit_16(1270); +emit_16(1334); +emit_16(1269); +emit_16(1334); +emit_16(1270); +emit_16(1335); +emit_16(1271); +emit_16(1335); +emit_16(1270); +emit_16(1335); +emit_16(1271); +emit_16(1336); +emit_16(1272); +emit_16(1336); +emit_16(1271); +emit_16(1336); +emit_16(1272); +emit_16(1337); +emit_16(1273); +emit_16(1337); +emit_16(1272); +emit_16(1337); +emit_16(1273); +emit_16(1338); +emit_16(1274); +emit_16(1338); +emit_16(1273); +emit_16(1338); +emit_16(1274); +emit_16(1339); +emit_16(1275); +emit_16(1339); +emit_16(1274); +emit_16(1339); +emit_16(1275); +emit_16(1340); +emit_16(1276); +emit_16(1340); +emit_16(1275); +emit_16(1340); +emit_16(1276); +emit_16(1341); +emit_16(1277); +emit_16(1341); +emit_16(1276); +emit_16(1341); +emit_16(1277); +emit_16(1342); +emit_16(1278); +emit_16(1342); +emit_16(1277); +emit_16(1342); +emit_16(1278); +emit_16(1343); +emit_16(1279); +emit_16(1343); +emit_16(1278); +emit_16(1344); +emit_16(1280); +emit_16(1345); +emit_16(1281); +emit_16(1345); +emit_16(1280); +emit_16(1345); +emit_16(1281); +emit_16(1346); +emit_16(1282); +emit_16(1346); +emit_16(1281); +emit_16(1346); +emit_16(1282); +emit_16(1347); +emit_16(1283); +emit_16(1347); +emit_16(1282); +emit_16(1347); +emit_16(1283); +emit_16(1348); +emit_16(1284); +emit_16(1348); +emit_16(1283); +emit_16(1348); +emit_16(1284); +emit_16(1349); +emit_16(1285); +emit_16(1349); +emit_16(1284); +emit_16(1349); +emit_16(1285); +emit_16(1350); +emit_16(1286); +emit_16(1350); +emit_16(1285); +emit_16(1350); +emit_16(1286); +emit_16(1351); +emit_16(1287); +emit_16(1351); +emit_16(1286); +emit_16(1351); +emit_16(1287); +emit_16(1352); +emit_16(1288); +emit_16(1352); +emit_16(1287); +emit_16(1352); +emit_16(1288); +emit_16(1353); +emit_16(1289); +emit_16(1353); +emit_16(1288); +emit_16(1353); +emit_16(1289); +emit_16(1354); +emit_16(1290); +emit_16(1354); +emit_16(1289); +emit_16(1354); +emit_16(1290); +emit_16(1355); +emit_16(1291); +emit_16(1355); +emit_16(1290); +emit_16(1355); +emit_16(1291); +emit_16(1356); +emit_16(1292); +emit_16(1356); +emit_16(1291); +emit_16(1356); +emit_16(1292); +emit_16(1357); +emit_16(1293); +emit_16(1357); +emit_16(1292); +emit_16(1357); +emit_16(1293); +emit_16(1358); +emit_16(1294); +emit_16(1358); +emit_16(1293); +emit_16(1358); +emit_16(1294); +emit_16(1359); +emit_16(1295); +emit_16(1359); +emit_16(1294); +emit_16(1359); +emit_16(1295); +emit_16(1360); +emit_16(1296); +emit_16(1360); +emit_16(1295); +emit_16(1360); +emit_16(1296); +emit_16(1361); +emit_16(1297); +emit_16(1361); +emit_16(1296); +emit_16(1361); +emit_16(1297); +emit_16(1362); +emit_16(1298); +emit_16(1362); +emit_16(1297); +emit_16(1362); +emit_16(1298); +emit_16(1363); +emit_16(1299); +emit_16(1363); +emit_16(1298); +emit_16(1363); +emit_16(1299); +emit_16(1364); +emit_16(1300); +emit_16(1364); +emit_16(1299); +emit_16(1364); +emit_16(1300); +emit_16(1365); +emit_16(1301); +emit_16(1365); +emit_16(1300); +emit_16(1365); +emit_16(1301); +emit_16(1366); +emit_16(1302); +emit_16(1366); +emit_16(1301); +emit_16(1366); +emit_16(1302); +emit_16(1367); +emit_16(1303); +emit_16(1367); +emit_16(1302); +emit_16(1367); +emit_16(1303); +emit_16(1368); +emit_16(1304); +emit_16(1368); +emit_16(1303); +emit_16(1368); +emit_16(1304); +emit_16(1369); +emit_16(1305); +emit_16(1369); +emit_16(1304); +emit_16(1369); +emit_16(1305); +emit_16(1370); +emit_16(1306); +emit_16(1370); +emit_16(1305); +emit_16(1370); +emit_16(1306); +emit_16(1371); +emit_16(1307); +emit_16(1371); +emit_16(1306); +emit_16(1371); +emit_16(1307); +emit_16(1372); +emit_16(1308); +emit_16(1372); +emit_16(1307); +emit_16(1372); +emit_16(1308); +emit_16(1373); +emit_16(1309); +emit_16(1373); +emit_16(1308); +emit_16(1373); +emit_16(1309); +emit_16(1374); +emit_16(1310); +emit_16(1374); +emit_16(1309); +emit_16(1374); +emit_16(1310); +emit_16(1375); +emit_16(1311); +emit_16(1375); +emit_16(1310); +emit_16(1375); +emit_16(1311); +emit_16(1376); +emit_16(1312); +emit_16(1376); +emit_16(1311); +emit_16(1376); +emit_16(1312); +emit_16(1377); +emit_16(1313); +emit_16(1377); +emit_16(1312); +emit_16(1377); +emit_16(1313); +emit_16(1378); +emit_16(1314); +emit_16(1378); +emit_16(1313); +emit_16(1378); +emit_16(1314); +emit_16(1379); +emit_16(1315); +emit_16(1379); +emit_16(1314); +emit_16(1379); +emit_16(1315); +emit_16(1380); +emit_16(1316); +emit_16(1380); +emit_16(1315); +emit_16(1380); +emit_16(1316); +emit_16(1381); +emit_16(1317); +emit_16(1381); +emit_16(1316); +emit_16(1381); +emit_16(1317); +emit_16(1382); +emit_16(1318); +emit_16(1382); +emit_16(1317); +emit_16(1382); +emit_16(1318); +emit_16(1383); +emit_16(1319); +emit_16(1383); +emit_16(1318); +emit_16(1383); +emit_16(1319); +emit_16(1384); +emit_16(1320); +emit_16(1384); +emit_16(1319); +emit_16(1384); +emit_16(1320); +emit_16(1385); +emit_16(1321); +emit_16(1385); +emit_16(1320); +emit_16(1385); +emit_16(1321); +emit_16(1386); +emit_16(1322); +emit_16(1386); +emit_16(1321); +emit_16(1386); +emit_16(1322); +emit_16(1387); +emit_16(1323); +emit_16(1387); +emit_16(1322); +emit_16(1387); +emit_16(1323); +emit_16(1388); +emit_16(1324); +emit_16(1388); +emit_16(1323); +emit_16(1388); +emit_16(1324); +emit_16(1389); +emit_16(1325); +emit_16(1389); +emit_16(1324); +emit_16(1389); +emit_16(1325); +emit_16(1390); +emit_16(1326); +emit_16(1390); +emit_16(1325); +emit_16(1390); +emit_16(1326); +emit_16(1391); +emit_16(1327); +emit_16(1391); +emit_16(1326); +emit_16(1391); +emit_16(1327); +emit_16(1392); +emit_16(1328); +emit_16(1392); +emit_16(1327); +emit_16(1392); +emit_16(1328); +emit_16(1393); +emit_16(1329); +emit_16(1393); +emit_16(1328); +emit_16(1393); +emit_16(1329); +emit_16(1394); +emit_16(1330); +emit_16(1394); +emit_16(1329); +emit_16(1394); +emit_16(1330); +emit_16(1395); +emit_16(1331); +emit_16(1395); +emit_16(1330); +emit_16(1395); +emit_16(1331); +emit_16(1396); +emit_16(1332); +emit_16(1396); +emit_16(1331); +emit_16(1396); +emit_16(1332); +emit_16(1397); +emit_16(1333); +emit_16(1397); +emit_16(1332); +emit_16(1397); +emit_16(1333); +emit_16(1398); +emit_16(1334); +emit_16(1398); +emit_16(1333); +emit_16(1398); +emit_16(1334); +emit_16(1399); +emit_16(1335); +emit_16(1399); +emit_16(1334); +emit_16(1399); +emit_16(1335); +emit_16(1400); +emit_16(1336); +emit_16(1400); +emit_16(1335); +emit_16(1400); +emit_16(1336); +emit_16(1401); +emit_16(1337); +emit_16(1401); +emit_16(1336); +emit_16(1401); +emit_16(1337); +emit_16(1402); +emit_16(1338); +emit_16(1402); +emit_16(1337); +emit_16(1402); +emit_16(1338); +emit_16(1403); +emit_16(1339); +emit_16(1403); +emit_16(1338); +emit_16(1403); +emit_16(1339); +emit_16(1404); +emit_16(1340); +emit_16(1404); +emit_16(1339); +emit_16(1404); +emit_16(1340); +emit_16(1405); +emit_16(1341); +emit_16(1405); +emit_16(1340); +emit_16(1405); +emit_16(1341); +emit_16(1406); +emit_16(1342); +emit_16(1406); +emit_16(1341); +emit_16(1406); +emit_16(1342); +emit_16(1407); +emit_16(1343); +emit_16(1407); +emit_16(1342); +emit_16(1408); +emit_16(1344); +emit_16(1409); +emit_16(1345); +emit_16(1409); +emit_16(1344); +emit_16(1409); +emit_16(1345); +emit_16(1410); +emit_16(1346); +emit_16(1410); +emit_16(1345); +emit_16(1410); +emit_16(1346); +emit_16(1411); +emit_16(1347); +emit_16(1411); +emit_16(1346); +emit_16(1411); +emit_16(1347); +emit_16(1412); +emit_16(1348); +emit_16(1412); +emit_16(1347); +emit_16(1412); +emit_16(1348); +emit_16(1413); +emit_16(1349); +emit_16(1413); +emit_16(1348); +emit_16(1413); +emit_16(1349); +emit_16(1414); +emit_16(1350); +emit_16(1414); +emit_16(1349); +emit_16(1414); +emit_16(1350); +emit_16(1415); +emit_16(1351); +emit_16(1415); +emit_16(1350); +emit_16(1415); +emit_16(1351); +emit_16(1416); +emit_16(1352); +emit_16(1416); +emit_16(1351); +emit_16(1416); +emit_16(1352); +emit_16(1417); +emit_16(1353); +emit_16(1417); +emit_16(1352); +emit_16(1417); +emit_16(1353); +emit_16(1418); +emit_16(1354); +emit_16(1418); +emit_16(1353); +emit_16(1418); +emit_16(1354); +emit_16(1419); +emit_16(1355); +emit_16(1419); +emit_16(1354); +emit_16(1419); +emit_16(1355); +emit_16(1420); +emit_16(1356); +emit_16(1420); +emit_16(1355); +emit_16(1420); +emit_16(1356); +emit_16(1421); +emit_16(1357); +emit_16(1421); +emit_16(1356); +emit_16(1421); +emit_16(1357); +emit_16(1422); +emit_16(1358); +emit_16(1422); +emit_16(1357); +emit_16(1422); +emit_16(1358); +emit_16(1423); +emit_16(1359); +emit_16(1423); +emit_16(1358); +emit_16(1423); +emit_16(1359); +emit_16(1424); +emit_16(1360); +emit_16(1424); +emit_16(1359); +emit_16(1424); +emit_16(1360); +emit_16(1425); +emit_16(1361); +emit_16(1425); +emit_16(1360); +emit_16(1425); +emit_16(1361); +emit_16(1426); +emit_16(1362); +emit_16(1426); +emit_16(1361); +emit_16(1426); +emit_16(1362); +emit_16(1427); +emit_16(1363); +emit_16(1427); +emit_16(1362); +emit_16(1427); +emit_16(1363); +emit_16(1428); +emit_16(1364); +emit_16(1428); +emit_16(1363); +emit_16(1428); +emit_16(1364); +emit_16(1429); +emit_16(1365); +emit_16(1429); +emit_16(1364); +emit_16(1429); +emit_16(1365); +emit_16(1430); +emit_16(1366); +emit_16(1430); +emit_16(1365); +emit_16(1430); +emit_16(1366); +emit_16(1431); +emit_16(1367); +emit_16(1431); +emit_16(1366); +emit_16(1431); +emit_16(1367); +emit_16(1432); +emit_16(1368); +emit_16(1432); +emit_16(1367); +emit_16(1432); +emit_16(1368); +emit_16(1433); +emit_16(1369); +emit_16(1433); +emit_16(1368); +emit_16(1433); +emit_16(1369); +emit_16(1434); +emit_16(1370); +emit_16(1434); +emit_16(1369); +emit_16(1434); +emit_16(1370); +emit_16(1435); +emit_16(1371); +emit_16(1435); +emit_16(1370); +emit_16(1435); +emit_16(1371); +emit_16(1436); +emit_16(1372); +emit_16(1436); +emit_16(1371); +emit_16(1436); +emit_16(1372); +emit_16(1437); +emit_16(1373); +emit_16(1437); +emit_16(1372); +emit_16(1437); +emit_16(1373); +emit_16(1438); +emit_16(1374); +emit_16(1438); +emit_16(1373); +emit_16(1438); +emit_16(1374); +emit_16(1439); +emit_16(1375); +emit_16(1439); +emit_16(1374); +emit_16(1439); +emit_16(1375); +emit_16(1440); +emit_16(1376); +emit_16(1440); +emit_16(1375); +emit_16(1440); +emit_16(1376); +emit_16(1441); +emit_16(1377); +emit_16(1441); +emit_16(1376); +emit_16(1441); +emit_16(1377); +emit_16(1442); +emit_16(1378); +emit_16(1442); +emit_16(1377); +emit_16(1442); +emit_16(1378); +emit_16(1443); +emit_16(1379); +emit_16(1443); +emit_16(1378); +emit_16(1443); +emit_16(1379); +emit_16(1444); +emit_16(1380); +emit_16(1444); +emit_16(1379); +emit_16(1444); +emit_16(1380); +emit_16(1445); +emit_16(1381); +emit_16(1445); +emit_16(1380); +emit_16(1445); +emit_16(1381); +emit_16(1446); +emit_16(1382); +emit_16(1446); +emit_16(1381); +emit_16(1446); +emit_16(1382); +emit_16(1447); +emit_16(1383); +emit_16(1447); +emit_16(1382); +emit_16(1447); +emit_16(1383); +emit_16(1448); +emit_16(1384); +emit_16(1448); +emit_16(1383); +emit_16(1448); +emit_16(1384); +emit_16(1449); +emit_16(1385); +emit_16(1449); +emit_16(1384); +emit_16(1449); +emit_16(1385); +emit_16(1450); +emit_16(1386); +emit_16(1450); +emit_16(1385); +emit_16(1450); +emit_16(1386); +emit_16(1451); +emit_16(1387); +emit_16(1451); +emit_16(1386); +emit_16(1451); +emit_16(1387); +emit_16(1452); +emit_16(1388); +emit_16(1452); +emit_16(1387); +emit_16(1452); +emit_16(1388); +emit_16(1453); +emit_16(1389); +emit_16(1453); +emit_16(1388); +emit_16(1453); +emit_16(1389); +emit_16(1454); +emit_16(1390); +emit_16(1454); +emit_16(1389); +emit_16(1454); +emit_16(1390); +emit_16(1455); +emit_16(1391); +emit_16(1455); +emit_16(1390); +emit_16(1455); +emit_16(1391); +emit_16(1456); +emit_16(1392); +emit_16(1456); +emit_16(1391); +emit_16(1456); +emit_16(1392); +emit_16(1457); +emit_16(1393); +emit_16(1457); +emit_16(1392); +emit_16(1457); +emit_16(1393); +emit_16(1458); +emit_16(1394); +emit_16(1458); +emit_16(1393); +emit_16(1458); +emit_16(1394); +emit_16(1459); +emit_16(1395); +emit_16(1459); +emit_16(1394); +emit_16(1459); +emit_16(1395); +emit_16(1460); +emit_16(1396); +emit_16(1460); +emit_16(1395); +emit_16(1460); +emit_16(1396); +emit_16(1461); +emit_16(1397); +emit_16(1461); +emit_16(1396); +emit_16(1461); +emit_16(1397); +emit_16(1462); +emit_16(1398); +emit_16(1462); +emit_16(1397); +emit_16(1462); +emit_16(1398); +emit_16(1463); +emit_16(1399); +emit_16(1463); +emit_16(1398); +emit_16(1463); +emit_16(1399); +emit_16(1464); +emit_16(1400); +emit_16(1464); +emit_16(1399); +emit_16(1464); +emit_16(1400); +emit_16(1465); +emit_16(1401); +emit_16(1465); +emit_16(1400); +emit_16(1465); +emit_16(1401); +emit_16(1466); +emit_16(1402); +emit_16(1466); +emit_16(1401); +emit_16(1466); +emit_16(1402); +emit_16(1467); +emit_16(1403); +emit_16(1467); +emit_16(1402); +emit_16(1467); +emit_16(1403); +emit_16(1468); +emit_16(1404); +emit_16(1468); +emit_16(1403); +emit_16(1468); +emit_16(1404); +emit_16(1469); +emit_16(1405); +emit_16(1469); +emit_16(1404); +emit_16(1469); +emit_16(1405); +emit_16(1470); +emit_16(1406); +emit_16(1470); +emit_16(1405); +emit_16(1470); +emit_16(1406); +emit_16(1471); +emit_16(1407); +emit_16(1471); +emit_16(1406); +emit_16(1472); +emit_16(1408); +emit_16(1473); +emit_16(1409); +emit_16(1473); +emit_16(1408); +emit_16(1473); +emit_16(1409); +emit_16(1474); +emit_16(1410); +emit_16(1474); +emit_16(1409); +emit_16(1474); +emit_16(1410); +emit_16(1475); +emit_16(1411); +emit_16(1475); +emit_16(1410); +emit_16(1475); +emit_16(1411); +emit_16(1476); +emit_16(1412); +emit_16(1476); +emit_16(1411); +emit_16(1476); +emit_16(1412); +emit_16(1477); +emit_16(1413); +emit_16(1477); +emit_16(1412); +emit_16(1477); +emit_16(1413); +emit_16(1478); +emit_16(1414); +emit_16(1478); +emit_16(1413); +emit_16(1478); +emit_16(1414); +emit_16(1479); +emit_16(1415); +emit_16(1479); +emit_16(1414); +emit_16(1479); +emit_16(1415); +emit_16(1480); +emit_16(1416); +emit_16(1480); +emit_16(1415); +emit_16(1480); +emit_16(1416); +emit_16(1481); +emit_16(1417); +emit_16(1481); +emit_16(1416); +emit_16(1481); +emit_16(1417); +emit_16(1482); +emit_16(1418); +emit_16(1482); +emit_16(1417); +emit_16(1482); +emit_16(1418); +emit_16(1483); +emit_16(1419); +emit_16(1483); +emit_16(1418); +emit_16(1483); +emit_16(1419); +emit_16(1484); +emit_16(1420); +emit_16(1484); +emit_16(1419); +emit_16(1484); +emit_16(1420); +emit_16(1485); +emit_16(1421); +emit_16(1485); +emit_16(1420); +emit_16(1485); +emit_16(1421); +emit_16(1486); +emit_16(1422); +emit_16(1486); +emit_16(1421); +emit_16(1486); +emit_16(1422); +emit_16(1487); +emit_16(1423); +emit_16(1487); +emit_16(1422); +emit_16(1487); +emit_16(1423); +emit_16(1488); +emit_16(1424); +emit_16(1488); +emit_16(1423); +emit_16(1488); +emit_16(1424); +emit_16(1489); +emit_16(1425); +emit_16(1489); +emit_16(1424); +emit_16(1489); +emit_16(1425); +emit_16(1490); +emit_16(1426); +emit_16(1490); +emit_16(1425); +emit_16(1490); +emit_16(1426); +emit_16(1491); +emit_16(1427); +emit_16(1491); +emit_16(1426); +emit_16(1491); +emit_16(1427); +emit_16(1492); +emit_16(1428); +emit_16(1492); +emit_16(1427); +emit_16(1492); +emit_16(1428); +emit_16(1493); +emit_16(1429); +emit_16(1493); +emit_16(1428); +emit_16(1493); +emit_16(1429); +emit_16(1494); +emit_16(1430); +emit_16(1494); +emit_16(1429); +emit_16(1494); +emit_16(1430); +emit_16(1495); +emit_16(1431); +emit_16(1495); +emit_16(1430); +emit_16(1495); +emit_16(1431); +emit_16(1496); +emit_16(1432); +emit_16(1496); +emit_16(1431); +emit_16(1496); +emit_16(1432); +emit_16(1497); +emit_16(1433); +emit_16(1497); +emit_16(1432); +emit_16(1497); +emit_16(1433); +emit_16(1498); +emit_16(1434); +emit_16(1498); +emit_16(1433); +emit_16(1498); +emit_16(1434); +emit_16(1499); +emit_16(1435); +emit_16(1499); +emit_16(1434); +emit_16(1499); +emit_16(1435); +emit_16(1500); +emit_16(1436); +emit_16(1500); +emit_16(1435); +emit_16(1500); +emit_16(1436); +emit_16(1501); +emit_16(1437); +emit_16(1501); +emit_16(1436); +emit_16(1501); +emit_16(1437); +emit_16(1502); +emit_16(1438); +emit_16(1502); +emit_16(1437); +emit_16(1502); +emit_16(1438); +emit_16(1503); +emit_16(1439); +emit_16(1503); +emit_16(1438); +emit_16(1503); +emit_16(1439); +emit_16(1504); +emit_16(1440); +emit_16(1504); +emit_16(1439); +emit_16(1504); +emit_16(1440); +emit_16(1505); +emit_16(1441); +emit_16(1505); +emit_16(1440); +emit_16(1505); +emit_16(1441); +emit_16(1506); +emit_16(1442); +emit_16(1506); +emit_16(1441); +emit_16(1506); +emit_16(1442); +emit_16(1507); +emit_16(1443); +emit_16(1507); +emit_16(1442); +emit_16(1507); +emit_16(1443); +emit_16(1508); +emit_16(1444); +emit_16(1508); +emit_16(1443); +emit_16(1508); +emit_16(1444); +emit_16(1509); +emit_16(1445); +emit_16(1509); +emit_16(1444); +emit_16(1509); +emit_16(1445); +emit_16(1510); +emit_16(1446); +emit_16(1510); +emit_16(1445); +emit_16(1510); +emit_16(1446); +emit_16(1511); +emit_16(1447); +emit_16(1511); +emit_16(1446); +emit_16(1511); +emit_16(1447); +emit_16(1512); +emit_16(1448); +emit_16(1512); +emit_16(1447); +emit_16(1512); +emit_16(1448); +emit_16(1513); +emit_16(1449); +emit_16(1513); +emit_16(1448); +emit_16(1513); +emit_16(1449); +emit_16(1514); +emit_16(1450); +emit_16(1514); +emit_16(1449); +emit_16(1514); +emit_16(1450); +emit_16(1515); +emit_16(1451); +emit_16(1515); +emit_16(1450); +emit_16(1515); +emit_16(1451); +emit_16(1516); +emit_16(1452); +emit_16(1516); +emit_16(1451); +emit_16(1516); +emit_16(1452); +emit_16(1517); +emit_16(1453); +emit_16(1517); +emit_16(1452); +emit_16(1517); +emit_16(1453); +emit_16(1518); +emit_16(1454); +emit_16(1518); +emit_16(1453); +emit_16(1518); +emit_16(1454); +emit_16(1519); +emit_16(1455); +emit_16(1519); +emit_16(1454); +emit_16(1519); +emit_16(1455); +emit_16(1520); +emit_16(1456); +emit_16(1520); +emit_16(1455); +emit_16(1520); +emit_16(1456); +emit_16(1521); +emit_16(1457); +emit_16(1521); +emit_16(1456); +emit_16(1521); +emit_16(1457); +emit_16(1522); +emit_16(1458); +emit_16(1522); +emit_16(1457); +emit_16(1522); +emit_16(1458); +emit_16(1523); +emit_16(1459); +emit_16(1523); +emit_16(1458); +emit_16(1523); +emit_16(1459); +emit_16(1524); +emit_16(1460); +emit_16(1524); +emit_16(1459); +emit_16(1524); +emit_16(1460); +emit_16(1525); +emit_16(1461); +emit_16(1525); +emit_16(1460); +emit_16(1525); +emit_16(1461); +emit_16(1526); +emit_16(1462); +emit_16(1526); +emit_16(1461); +emit_16(1526); +emit_16(1462); +emit_16(1527); +emit_16(1463); +emit_16(1527); +emit_16(1462); +emit_16(1527); +emit_16(1463); +emit_16(1528); +emit_16(1464); +emit_16(1528); +emit_16(1463); +emit_16(1528); +emit_16(1464); +emit_16(1529); +emit_16(1465); +emit_16(1529); +emit_16(1464); +emit_16(1529); +emit_16(1465); +emit_16(1530); +emit_16(1466); +emit_16(1530); +emit_16(1465); +emit_16(1530); +emit_16(1466); +emit_16(1531); +emit_16(1467); +emit_16(1531); +emit_16(1466); +emit_16(1531); +emit_16(1467); +emit_16(1532); +emit_16(1468); +emit_16(1532); +emit_16(1467); +emit_16(1532); +emit_16(1468); +emit_16(1533); +emit_16(1469); +emit_16(1533); +emit_16(1468); +emit_16(1533); +emit_16(1469); +emit_16(1534); +emit_16(1470); +emit_16(1534); +emit_16(1469); +emit_16(1534); +emit_16(1470); +emit_16(1535); +emit_16(1471); +emit_16(1535); +emit_16(1470); +emit_16(1536); +emit_16(1472); +emit_16(1537); +emit_16(1473); +emit_16(1537); +emit_16(1472); +emit_16(1537); +emit_16(1473); +emit_16(1538); +emit_16(1474); +emit_16(1538); +emit_16(1473); +emit_16(1538); +emit_16(1474); +emit_16(1539); +emit_16(1475); +emit_16(1539); +emit_16(1474); +emit_16(1539); +emit_16(1475); +emit_16(1540); +emit_16(1476); +emit_16(1540); +emit_16(1475); +emit_16(1540); +emit_16(1476); +emit_16(1541); +emit_16(1477); +emit_16(1541); +emit_16(1476); +emit_16(1541); +emit_16(1477); +emit_16(1542); +emit_16(1478); +emit_16(1542); +emit_16(1477); +emit_16(1542); +emit_16(1478); +emit_16(1543); +emit_16(1479); +emit_16(1543); +emit_16(1478); +emit_16(1543); +emit_16(1479); +emit_16(1544); +emit_16(1480); +emit_16(1544); +emit_16(1479); +emit_16(1544); +emit_16(1480); +emit_16(1545); +emit_16(1481); +emit_16(1545); +emit_16(1480); +emit_16(1545); +emit_16(1481); +emit_16(1546); +emit_16(1482); +emit_16(1546); +emit_16(1481); +emit_16(1546); +emit_16(1482); +emit_16(1547); +emit_16(1483); +emit_16(1547); +emit_16(1482); +emit_16(1547); +emit_16(1483); +emit_16(1548); +emit_16(1484); +emit_16(1548); +emit_16(1483); +emit_16(1548); +emit_16(1484); +emit_16(1549); +emit_16(1485); +emit_16(1549); +emit_16(1484); +emit_16(1549); +emit_16(1485); +emit_16(1550); +emit_16(1486); +emit_16(1550); +emit_16(1485); +emit_16(1550); +emit_16(1486); +emit_16(1551); +emit_16(1487); +emit_16(1551); +emit_16(1486); +emit_16(1551); +emit_16(1487); +emit_16(1552); +emit_16(1488); +emit_16(1552); +emit_16(1487); +emit_16(1552); +emit_16(1488); +emit_16(1553); +emit_16(1489); +emit_16(1553); +emit_16(1488); +emit_16(1553); +emit_16(1489); +emit_16(1554); +emit_16(1490); +emit_16(1554); +emit_16(1489); +emit_16(1554); +emit_16(1490); +emit_16(1555); +emit_16(1491); +emit_16(1555); +emit_16(1490); +emit_16(1555); +emit_16(1491); +emit_16(1556); +emit_16(1492); +emit_16(1556); +emit_16(1491); +emit_16(1556); +emit_16(1492); +emit_16(1557); +emit_16(1493); +emit_16(1557); +emit_16(1492); +emit_16(1557); +emit_16(1493); +emit_16(1558); +emit_16(1494); +emit_16(1558); +emit_16(1493); +emit_16(1558); +emit_16(1494); +emit_16(1559); +emit_16(1495); +emit_16(1559); +emit_16(1494); +emit_16(1559); +emit_16(1495); +emit_16(1560); +emit_16(1496); +emit_16(1560); +emit_16(1495); +emit_16(1560); +emit_16(1496); +emit_16(1561); +emit_16(1497); +emit_16(1561); +emit_16(1496); +emit_16(1561); +emit_16(1497); +emit_16(1562); +emit_16(1498); +emit_16(1562); +emit_16(1497); +emit_16(1562); +emit_16(1498); +emit_16(1563); +emit_16(1499); +emit_16(1563); +emit_16(1498); +emit_16(1563); +emit_16(1499); +emit_16(1564); +emit_16(1500); +emit_16(1564); +emit_16(1499); +emit_16(1564); +emit_16(1500); +emit_16(1565); +emit_16(1501); +emit_16(1565); +emit_16(1500); +emit_16(1565); +emit_16(1501); +emit_16(1566); +emit_16(1502); +emit_16(1566); +emit_16(1501); +emit_16(1566); +emit_16(1502); +emit_16(1567); +emit_16(1503); +emit_16(1567); +emit_16(1502); +emit_16(1567); +emit_16(1503); +emit_16(1568); +emit_16(1504); +emit_16(1568); +emit_16(1503); +emit_16(1568); +emit_16(1504); +emit_16(1569); +emit_16(1505); +emit_16(1569); +emit_16(1504); +emit_16(1569); +emit_16(1505); +emit_16(1570); +emit_16(1506); +emit_16(1570); +emit_16(1505); +emit_16(1570); +emit_16(1506); +emit_16(1571); +emit_16(1507); +emit_16(1571); +emit_16(1506); +emit_16(1571); +emit_16(1507); +emit_16(1572); +emit_16(1508); +emit_16(1572); +emit_16(1507); +emit_16(1572); +emit_16(1508); +emit_16(1573); +emit_16(1509); +emit_16(1573); +emit_16(1508); +emit_16(1573); +emit_16(1509); +emit_16(1574); +emit_16(1510); +emit_16(1574); +emit_16(1509); +emit_16(1574); +emit_16(1510); +emit_16(1575); +emit_16(1511); +emit_16(1575); +emit_16(1510); +emit_16(1575); +emit_16(1511); +emit_16(1576); +emit_16(1512); +emit_16(1576); +emit_16(1511); +emit_16(1576); +emit_16(1512); +emit_16(1577); +emit_16(1513); +emit_16(1577); +emit_16(1512); +emit_16(1577); +emit_16(1513); +emit_16(1578); +emit_16(1514); +emit_16(1578); +emit_16(1513); +emit_16(1578); +emit_16(1514); +emit_16(1579); +emit_16(1515); +emit_16(1579); +emit_16(1514); +emit_16(1579); +emit_16(1515); +emit_16(1580); +emit_16(1516); +emit_16(1580); +emit_16(1515); +emit_16(1580); +emit_16(1516); +emit_16(1581); +emit_16(1517); +emit_16(1581); +emit_16(1516); +emit_16(1581); +emit_16(1517); +emit_16(1582); +emit_16(1518); +emit_16(1582); +emit_16(1517); +emit_16(1582); +emit_16(1518); +emit_16(1583); +emit_16(1519); +emit_16(1583); +emit_16(1518); +emit_16(1583); +emit_16(1519); +emit_16(1584); +emit_16(1520); +emit_16(1584); +emit_16(1519); +emit_16(1584); +emit_16(1520); +emit_16(1585); +emit_16(1521); +emit_16(1585); +emit_16(1520); +emit_16(1585); +emit_16(1521); +emit_16(1586); +emit_16(1522); +emit_16(1586); +emit_16(1521); +emit_16(1586); +emit_16(1522); +emit_16(1587); +emit_16(1523); +emit_16(1587); +emit_16(1522); +emit_16(1587); +emit_16(1523); +emit_16(1588); +emit_16(1524); +emit_16(1588); +emit_16(1523); +emit_16(1588); +emit_16(1524); +emit_16(1589); +emit_16(1525); +emit_16(1589); +emit_16(1524); +emit_16(1589); +emit_16(1525); +emit_16(1590); +emit_16(1526); +emit_16(1590); +emit_16(1525); +emit_16(1590); +emit_16(1526); +emit_16(1591); +emit_16(1527); +emit_16(1591); +emit_16(1526); +emit_16(1591); +emit_16(1527); +emit_16(1592); +emit_16(1528); +emit_16(1592); +emit_16(1527); +emit_16(1592); +emit_16(1528); +emit_16(1593); +emit_16(1529); +emit_16(1593); +emit_16(1528); +emit_16(1593); +emit_16(1529); +emit_16(1594); +emit_16(1530); +emit_16(1594); +emit_16(1529); +emit_16(1594); +emit_16(1530); +emit_16(1595); +emit_16(1531); +emit_16(1595); +emit_16(1530); +emit_16(1595); +emit_16(1531); +emit_16(1596); +emit_16(1532); +emit_16(1596); +emit_16(1531); +emit_16(1596); +emit_16(1532); +emit_16(1597); +emit_16(1533); +emit_16(1597); +emit_16(1532); +emit_16(1597); +emit_16(1533); +emit_16(1598); +emit_16(1534); +emit_16(1598); +emit_16(1533); +emit_16(1598); +emit_16(1534); +emit_16(1599); +emit_16(1535); +emit_16(1599); +emit_16(1534); +emit_16(1600); +emit_16(1536); +emit_16(1601); +emit_16(1537); +emit_16(1601); +emit_16(1536); +emit_16(1601); +emit_16(1537); +emit_16(1602); +emit_16(1538); +emit_16(1602); +emit_16(1537); +emit_16(1602); +emit_16(1538); +emit_16(1603); +emit_16(1539); +emit_16(1603); +emit_16(1538); +emit_16(1603); +emit_16(1539); +emit_16(1604); +emit_16(1540); +emit_16(1604); +emit_16(1539); +emit_16(1604); +emit_16(1540); +emit_16(1605); +emit_16(1541); +emit_16(1605); +emit_16(1540); +emit_16(1605); +emit_16(1541); +emit_16(1606); +emit_16(1542); +emit_16(1606); +emit_16(1541); +emit_16(1606); +emit_16(1542); +emit_16(1607); +emit_16(1543); +emit_16(1607); +emit_16(1542); +emit_16(1607); +emit_16(1543); +emit_16(1608); +emit_16(1544); +emit_16(1608); +emit_16(1543); +emit_16(1608); +emit_16(1544); +emit_16(1609); +emit_16(1545); +emit_16(1609); +emit_16(1544); +emit_16(1609); +emit_16(1545); +emit_16(1610); +emit_16(1546); +emit_16(1610); +emit_16(1545); +emit_16(1610); +emit_16(1546); +emit_16(1611); +emit_16(1547); +emit_16(1611); +emit_16(1546); +emit_16(1611); +emit_16(1547); +emit_16(1612); +emit_16(1548); +emit_16(1612); +emit_16(1547); +emit_16(1612); +emit_16(1548); +emit_16(1613); +emit_16(1549); +emit_16(1613); +emit_16(1548); +emit_16(1613); +emit_16(1549); +emit_16(1614); +emit_16(1550); +emit_16(1614); +emit_16(1549); +emit_16(1614); +emit_16(1550); +emit_16(1615); +emit_16(1551); +emit_16(1615); +emit_16(1550); +emit_16(1615); +emit_16(1551); +emit_16(1616); +emit_16(1552); +emit_16(1616); +emit_16(1551); +emit_16(1616); +emit_16(1552); +emit_16(1617); +emit_16(1553); +emit_16(1617); +emit_16(1552); +emit_16(1617); +emit_16(1553); +emit_16(1618); +emit_16(1554); +emit_16(1618); +emit_16(1553); +emit_16(1618); +emit_16(1554); +emit_16(1619); +emit_16(1555); +emit_16(1619); +emit_16(1554); +emit_16(1619); +emit_16(1555); +emit_16(1620); +emit_16(1556); +emit_16(1620); +emit_16(1555); +emit_16(1620); +emit_16(1556); +emit_16(1621); +emit_16(1557); +emit_16(1621); +emit_16(1556); +emit_16(1621); +emit_16(1557); +emit_16(1622); +emit_16(1558); +emit_16(1622); +emit_16(1557); +emit_16(1622); +emit_16(1558); +emit_16(1623); +emit_16(1559); +emit_16(1623); +emit_16(1558); +emit_16(1623); +emit_16(1559); +emit_16(1624); +emit_16(1560); +emit_16(1624); +emit_16(1559); +emit_16(1624); +emit_16(1560); +emit_16(1625); +emit_16(1561); +emit_16(1625); +emit_16(1560); +emit_16(1625); +emit_16(1561); +emit_16(1626); +emit_16(1562); +emit_16(1626); +emit_16(1561); +emit_16(1626); +emit_16(1562); +emit_16(1627); +emit_16(1563); +emit_16(1627); +emit_16(1562); +emit_16(1627); +emit_16(1563); +emit_16(1628); +emit_16(1564); +emit_16(1628); +emit_16(1563); +emit_16(1628); +emit_16(1564); +emit_16(1629); +emit_16(1565); +emit_16(1629); +emit_16(1564); +emit_16(1629); +emit_16(1565); +emit_16(1630); +emit_16(1566); +emit_16(1630); +emit_16(1565); +emit_16(1630); +emit_16(1566); +emit_16(1631); +emit_16(1567); +emit_16(1631); +emit_16(1566); +emit_16(1631); +emit_16(1567); +emit_16(1632); +emit_16(1568); +emit_16(1632); +emit_16(1567); +emit_16(1632); +emit_16(1568); +emit_16(1633); +emit_16(1569); +emit_16(1633); +emit_16(1568); +emit_16(1633); +emit_16(1569); +emit_16(1634); +emit_16(1570); +emit_16(1634); +emit_16(1569); +emit_16(1634); +emit_16(1570); +emit_16(1635); +emit_16(1571); +emit_16(1635); +emit_16(1570); +emit_16(1635); +emit_16(1571); +emit_16(1636); +emit_16(1572); +emit_16(1636); +emit_16(1571); +emit_16(1636); +emit_16(1572); +emit_16(1637); +emit_16(1573); +emit_16(1637); +emit_16(1572); +emit_16(1637); +emit_16(1573); +emit_16(1638); +emit_16(1574); +emit_16(1638); +emit_16(1573); +emit_16(1638); +emit_16(1574); +emit_16(1639); +emit_16(1575); +emit_16(1639); +emit_16(1574); +emit_16(1639); +emit_16(1575); +emit_16(1640); +emit_16(1576); +emit_16(1640); +emit_16(1575); +emit_16(1640); +emit_16(1576); +emit_16(1641); +emit_16(1577); +emit_16(1641); +emit_16(1576); +emit_16(1641); +emit_16(1577); +emit_16(1642); +emit_16(1578); +emit_16(1642); +emit_16(1577); +emit_16(1642); +emit_16(1578); +emit_16(1643); +emit_16(1579); +emit_16(1643); +emit_16(1578); +emit_16(1643); +emit_16(1579); +emit_16(1644); +emit_16(1580); +emit_16(1644); +emit_16(1579); +emit_16(1644); +emit_16(1580); +emit_16(1645); +emit_16(1581); +emit_16(1645); +emit_16(1580); +emit_16(1645); +emit_16(1581); +emit_16(1646); +emit_16(1582); +emit_16(1646); +emit_16(1581); +emit_16(1646); +emit_16(1582); +emit_16(1647); +emit_16(1583); +emit_16(1647); +emit_16(1582); +emit_16(1647); +emit_16(1583); +emit_16(1648); +emit_16(1584); +emit_16(1648); +emit_16(1583); +emit_16(1648); +emit_16(1584); +emit_16(1649); +emit_16(1585); +emit_16(1649); +emit_16(1584); +emit_16(1649); +emit_16(1585); +emit_16(1650); +emit_16(1586); +emit_16(1650); +emit_16(1585); +emit_16(1650); +emit_16(1586); +emit_16(1651); +emit_16(1587); +emit_16(1651); +emit_16(1586); +emit_16(1651); +emit_16(1587); +emit_16(1652); +emit_16(1588); +emit_16(1652); +emit_16(1587); +emit_16(1652); +emit_16(1588); +emit_16(1653); +emit_16(1589); +emit_16(1653); +emit_16(1588); +emit_16(1653); +emit_16(1589); +emit_16(1654); +emit_16(1590); +emit_16(1654); +emit_16(1589); +emit_16(1654); +emit_16(1590); +emit_16(1655); +emit_16(1591); +emit_16(1655); +emit_16(1590); +emit_16(1655); +emit_16(1591); +emit_16(1656); +emit_16(1592); +emit_16(1656); +emit_16(1591); +emit_16(1656); +emit_16(1592); +emit_16(1657); +emit_16(1593); +emit_16(1657); +emit_16(1592); +emit_16(1657); +emit_16(1593); +emit_16(1658); +emit_16(1594); +emit_16(1658); +emit_16(1593); +emit_16(1658); +emit_16(1594); +emit_16(1659); +emit_16(1595); +emit_16(1659); +emit_16(1594); +emit_16(1659); +emit_16(1595); +emit_16(1660); +emit_16(1596); +emit_16(1660); +emit_16(1595); +emit_16(1660); +emit_16(1596); +emit_16(1661); +emit_16(1597); +emit_16(1661); +emit_16(1596); +emit_16(1661); +emit_16(1597); +emit_16(1662); +emit_16(1598); +emit_16(1662); +emit_16(1597); +emit_16(1662); +emit_16(1598); +emit_16(1663); +emit_16(1599); +emit_16(1663); +emit_16(1598); +emit_16(1664); +emit_16(1600); +emit_16(1665); +emit_16(1601); +emit_16(1665); +emit_16(1600); +emit_16(1665); +emit_16(1601); +emit_16(1666); +emit_16(1602); +emit_16(1666); +emit_16(1601); +emit_16(1666); +emit_16(1602); +emit_16(1667); +emit_16(1603); +emit_16(1667); +emit_16(1602); +emit_16(1667); +emit_16(1603); +emit_16(1668); +emit_16(1604); +emit_16(1668); +emit_16(1603); +emit_16(1668); +emit_16(1604); +emit_16(1669); +emit_16(1605); +emit_16(1669); +emit_16(1604); +emit_16(1669); +emit_16(1605); +emit_16(1670); +emit_16(1606); +emit_16(1670); +emit_16(1605); +emit_16(1670); +emit_16(1606); +emit_16(1671); +emit_16(1607); +emit_16(1671); +emit_16(1606); +emit_16(1671); +emit_16(1607); +emit_16(1672); +emit_16(1608); +emit_16(1672); +emit_16(1607); +emit_16(1672); +emit_16(1608); +emit_16(1673); +emit_16(1609); +emit_16(1673); +emit_16(1608); +emit_16(1673); +emit_16(1609); +emit_16(1674); +emit_16(1610); +emit_16(1674); +emit_16(1609); +emit_16(1674); +emit_16(1610); +emit_16(1675); +emit_16(1611); +emit_16(1675); +emit_16(1610); +emit_16(1675); +emit_16(1611); +emit_16(1676); +emit_16(1612); +emit_16(1676); +emit_16(1611); +emit_16(1676); +emit_16(1612); +emit_16(1677); +emit_16(1613); +emit_16(1677); +emit_16(1612); +emit_16(1677); +emit_16(1613); +emit_16(1678); +emit_16(1614); +emit_16(1678); +emit_16(1613); +emit_16(1678); +emit_16(1614); +emit_16(1679); +emit_16(1615); +emit_16(1679); +emit_16(1614); +emit_16(1679); +emit_16(1615); +emit_16(1680); +emit_16(1616); +emit_16(1680); +emit_16(1615); +emit_16(1680); +emit_16(1616); +emit_16(1681); +emit_16(1617); +emit_16(1681); +emit_16(1616); +emit_16(1681); +emit_16(1617); +emit_16(1682); +emit_16(1618); +emit_16(1682); +emit_16(1617); +emit_16(1682); +emit_16(1618); +emit_16(1683); +emit_16(1619); +emit_16(1683); +emit_16(1618); +emit_16(1683); +emit_16(1619); +emit_16(1684); +emit_16(1620); +emit_16(1684); +emit_16(1619); +emit_16(1684); +emit_16(1620); +emit_16(1685); +emit_16(1621); +emit_16(1685); +emit_16(1620); +emit_16(1685); +emit_16(1621); +emit_16(1686); +emit_16(1622); +emit_16(1686); +emit_16(1621); +emit_16(1686); +emit_16(1622); +emit_16(1687); +emit_16(1623); +emit_16(1687); +emit_16(1622); +emit_16(1687); +emit_16(1623); +emit_16(1688); +emit_16(1624); +emit_16(1688); +emit_16(1623); +emit_16(1688); +emit_16(1624); +emit_16(1689); +emit_16(1625); +emit_16(1689); +emit_16(1624); +emit_16(1689); +emit_16(1625); +emit_16(1690); +emit_16(1626); +emit_16(1690); +emit_16(1625); +emit_16(1690); +emit_16(1626); +emit_16(1691); +emit_16(1627); +emit_16(1691); +emit_16(1626); +emit_16(1691); +emit_16(1627); +emit_16(1692); +emit_16(1628); +emit_16(1692); +emit_16(1627); +emit_16(1692); +emit_16(1628); +emit_16(1693); +emit_16(1629); +emit_16(1693); +emit_16(1628); +emit_16(1693); +emit_16(1629); +emit_16(1694); +emit_16(1630); +emit_16(1694); +emit_16(1629); +emit_16(1694); +emit_16(1630); +emit_16(1695); +emit_16(1631); +emit_16(1695); +emit_16(1630); +emit_16(1695); +emit_16(1631); +emit_16(1696); +emit_16(1632); +emit_16(1696); +emit_16(1631); +emit_16(1696); +emit_16(1632); +emit_16(1697); +emit_16(1633); +emit_16(1697); +emit_16(1632); +emit_16(1697); +emit_16(1633); +emit_16(1698); +emit_16(1634); +emit_16(1698); +emit_16(1633); +emit_16(1698); +emit_16(1634); +emit_16(1699); +emit_16(1635); +emit_16(1699); +emit_16(1634); +emit_16(1699); +emit_16(1635); +emit_16(1700); +emit_16(1636); +emit_16(1700); +emit_16(1635); +emit_16(1700); +emit_16(1636); +emit_16(1701); +emit_16(1637); +emit_16(1701); +emit_16(1636); +emit_16(1701); +emit_16(1637); +emit_16(1702); +emit_16(1638); +emit_16(1702); +emit_16(1637); +emit_16(1702); +emit_16(1638); +emit_16(1703); +emit_16(1639); +emit_16(1703); +emit_16(1638); +emit_16(1703); +emit_16(1639); +emit_16(1704); +emit_16(1640); +emit_16(1704); +emit_16(1639); +emit_16(1704); +emit_16(1640); +emit_16(1705); +emit_16(1641); +emit_16(1705); +emit_16(1640); +emit_16(1705); +emit_16(1641); +emit_16(1706); +emit_16(1642); +emit_16(1706); +emit_16(1641); +emit_16(1706); +emit_16(1642); +emit_16(1707); +emit_16(1643); +emit_16(1707); +emit_16(1642); +emit_16(1707); +emit_16(1643); +emit_16(1708); +emit_16(1644); +emit_16(1708); +emit_16(1643); +emit_16(1708); +emit_16(1644); +emit_16(1709); +emit_16(1645); +emit_16(1709); +emit_16(1644); +emit_16(1709); +emit_16(1645); +emit_16(1710); +emit_16(1646); +emit_16(1710); +emit_16(1645); +emit_16(1710); +emit_16(1646); +emit_16(1711); +emit_16(1647); +emit_16(1711); +emit_16(1646); +emit_16(1711); +emit_16(1647); +emit_16(1712); +emit_16(1648); +emit_16(1712); +emit_16(1647); +emit_16(1712); +emit_16(1648); +emit_16(1713); +emit_16(1649); +emit_16(1713); +emit_16(1648); +emit_16(1713); +emit_16(1649); +emit_16(1714); +emit_16(1650); +emit_16(1714); +emit_16(1649); +emit_16(1714); +emit_16(1650); +emit_16(1715); +emit_16(1651); +emit_16(1715); +emit_16(1650); +emit_16(1715); +emit_16(1651); +emit_16(1716); +emit_16(1652); +emit_16(1716); +emit_16(1651); +emit_16(1716); +emit_16(1652); +emit_16(1717); +emit_16(1653); +emit_16(1717); +emit_16(1652); +emit_16(1717); +emit_16(1653); +emit_16(1718); +emit_16(1654); +emit_16(1718); +emit_16(1653); +emit_16(1718); +emit_16(1654); +emit_16(1719); +emit_16(1655); +emit_16(1719); +emit_16(1654); +emit_16(1719); +emit_16(1655); +emit_16(1720); +emit_16(1656); +emit_16(1720); +emit_16(1655); +emit_16(1720); +emit_16(1656); +emit_16(1721); +emit_16(1657); +emit_16(1721); +emit_16(1656); +emit_16(1721); +emit_16(1657); +emit_16(1722); +emit_16(1658); +emit_16(1722); +emit_16(1657); +emit_16(1722); +emit_16(1658); +emit_16(1723); +emit_16(1659); +emit_16(1723); +emit_16(1658); +emit_16(1723); +emit_16(1659); +emit_16(1724); +emit_16(1660); +emit_16(1724); +emit_16(1659); +emit_16(1724); +emit_16(1660); +emit_16(1725); +emit_16(1661); +emit_16(1725); +emit_16(1660); +emit_16(1725); +emit_16(1661); +emit_16(1726); +emit_16(1662); +emit_16(1726); +emit_16(1661); +emit_16(1726); +emit_16(1662); +emit_16(1727); +emit_16(1663); +emit_16(1727); +emit_16(1662); +emit_16(1728); +emit_16(1664); +emit_16(1729); +emit_16(1665); +emit_16(1729); +emit_16(1664); +emit_16(1729); +emit_16(1665); +emit_16(1730); +emit_16(1666); +emit_16(1730); +emit_16(1665); +emit_16(1730); +emit_16(1666); +emit_16(1731); +emit_16(1667); +emit_16(1731); +emit_16(1666); +emit_16(1731); +emit_16(1667); +emit_16(1732); +emit_16(1668); +emit_16(1732); +emit_16(1667); +emit_16(1732); +emit_16(1668); +emit_16(1733); +emit_16(1669); +emit_16(1733); +emit_16(1668); +emit_16(1733); +emit_16(1669); +emit_16(1734); +emit_16(1670); +emit_16(1734); +emit_16(1669); +emit_16(1734); +emit_16(1670); +emit_16(1735); +emit_16(1671); +emit_16(1735); +emit_16(1670); +emit_16(1735); +emit_16(1671); +emit_16(1736); +emit_16(1672); +emit_16(1736); +emit_16(1671); +emit_16(1736); +emit_16(1672); +emit_16(1737); +emit_16(1673); +emit_16(1737); +emit_16(1672); +emit_16(1737); +emit_16(1673); +emit_16(1738); +emit_16(1674); +emit_16(1738); +emit_16(1673); +emit_16(1738); +emit_16(1674); +emit_16(1739); +emit_16(1675); +emit_16(1739); +emit_16(1674); +emit_16(1739); +emit_16(1675); +emit_16(1740); +emit_16(1676); +emit_16(1740); +emit_16(1675); +emit_16(1740); +emit_16(1676); +emit_16(1741); +emit_16(1677); +emit_16(1741); +emit_16(1676); +emit_16(1741); +emit_16(1677); +emit_16(1742); +emit_16(1678); +emit_16(1742); +emit_16(1677); +emit_16(1742); +emit_16(1678); +emit_16(1743); +emit_16(1679); +emit_16(1743); +emit_16(1678); +emit_16(1743); +emit_16(1679); +emit_16(1744); +emit_16(1680); +emit_16(1744); +emit_16(1679); +emit_16(1744); +emit_16(1680); +emit_16(1745); +emit_16(1681); +emit_16(1745); +emit_16(1680); +emit_16(1745); +emit_16(1681); +emit_16(1746); +emit_16(1682); +emit_16(1746); +emit_16(1681); +emit_16(1746); +emit_16(1682); +emit_16(1747); +emit_16(1683); +emit_16(1747); +emit_16(1682); +emit_16(1747); +emit_16(1683); +emit_16(1748); +emit_16(1684); +emit_16(1748); +emit_16(1683); +emit_16(1748); +emit_16(1684); +emit_16(1749); +emit_16(1685); +emit_16(1749); +emit_16(1684); +emit_16(1749); +emit_16(1685); +emit_16(1750); +emit_16(1686); +emit_16(1750); +emit_16(1685); +emit_16(1750); +emit_16(1686); +emit_16(1751); +emit_16(1687); +emit_16(1751); +emit_16(1686); +emit_16(1751); +emit_16(1687); +emit_16(1752); +emit_16(1688); +emit_16(1752); +emit_16(1687); +emit_16(1752); +emit_16(1688); +emit_16(1753); +emit_16(1689); +emit_16(1753); +emit_16(1688); +emit_16(1753); +emit_16(1689); +emit_16(1754); +emit_16(1690); +emit_16(1754); +emit_16(1689); +emit_16(1754); +emit_16(1690); +emit_16(1755); +emit_16(1691); +emit_16(1755); +emit_16(1690); +emit_16(1755); +emit_16(1691); +emit_16(1756); +emit_16(1692); +emit_16(1756); +emit_16(1691); +emit_16(1756); +emit_16(1692); +emit_16(1757); +emit_16(1693); +emit_16(1757); +emit_16(1692); +emit_16(1757); +emit_16(1693); +emit_16(1758); +emit_16(1694); +emit_16(1758); +emit_16(1693); +emit_16(1758); +emit_16(1694); +emit_16(1759); +emit_16(1695); +emit_16(1759); +emit_16(1694); +emit_16(1759); +emit_16(1695); +emit_16(1760); +emit_16(1696); +emit_16(1760); +emit_16(1695); +emit_16(1760); +emit_16(1696); +emit_16(1761); +emit_16(1697); +emit_16(1761); +emit_16(1696); +emit_16(1761); +emit_16(1697); +emit_16(1762); +emit_16(1698); +emit_16(1762); +emit_16(1697); +emit_16(1762); +emit_16(1698); +emit_16(1763); +emit_16(1699); +emit_16(1763); +emit_16(1698); +emit_16(1763); +emit_16(1699); +emit_16(1764); +emit_16(1700); +emit_16(1764); +emit_16(1699); +emit_16(1764); +emit_16(1700); +emit_16(1765); +emit_16(1701); +emit_16(1765); +emit_16(1700); +emit_16(1765); +emit_16(1701); +emit_16(1766); +emit_16(1702); +emit_16(1766); +emit_16(1701); +emit_16(1766); +emit_16(1702); +emit_16(1767); +emit_16(1703); +emit_16(1767); +emit_16(1702); +emit_16(1767); +emit_16(1703); +emit_16(1768); +emit_16(1704); +emit_16(1768); +emit_16(1703); +emit_16(1768); +emit_16(1704); +emit_16(1769); +emit_16(1705); +emit_16(1769); +emit_16(1704); +emit_16(1769); +emit_16(1705); +emit_16(1770); +emit_16(1706); +emit_16(1770); +emit_16(1705); +emit_16(1770); +emit_16(1706); +emit_16(1771); +emit_16(1707); +emit_16(1771); +emit_16(1706); +emit_16(1771); +emit_16(1707); +emit_16(1772); +emit_16(1708); +emit_16(1772); +emit_16(1707); +emit_16(1772); +emit_16(1708); +emit_16(1773); +emit_16(1709); +emit_16(1773); +emit_16(1708); +emit_16(1773); +emit_16(1709); +emit_16(1774); +emit_16(1710); +emit_16(1774); +emit_16(1709); +emit_16(1774); +emit_16(1710); +emit_16(1775); +emit_16(1711); +emit_16(1775); +emit_16(1710); +emit_16(1775); +emit_16(1711); +emit_16(1776); +emit_16(1712); +emit_16(1776); +emit_16(1711); +emit_16(1776); +emit_16(1712); +emit_16(1777); +emit_16(1713); +emit_16(1777); +emit_16(1712); +emit_16(1777); +emit_16(1713); +emit_16(1778); +emit_16(1714); +emit_16(1778); +emit_16(1713); +emit_16(1778); +emit_16(1714); +emit_16(1779); +emit_16(1715); +emit_16(1779); +emit_16(1714); +emit_16(1779); +emit_16(1715); +emit_16(1780); +emit_16(1716); +emit_16(1780); +emit_16(1715); +emit_16(1780); +emit_16(1716); +emit_16(1781); +emit_16(1717); +emit_16(1781); +emit_16(1716); +emit_16(1781); +emit_16(1717); +emit_16(1782); +emit_16(1718); +emit_16(1782); +emit_16(1717); +emit_16(1782); +emit_16(1718); +emit_16(1783); +emit_16(1719); +emit_16(1783); +emit_16(1718); +emit_16(1783); +emit_16(1719); +emit_16(1784); +emit_16(1720); +emit_16(1784); +emit_16(1719); +emit_16(1784); +emit_16(1720); +emit_16(1785); +emit_16(1721); +emit_16(1785); +emit_16(1720); +emit_16(1785); +emit_16(1721); +emit_16(1786); +emit_16(1722); +emit_16(1786); +emit_16(1721); +emit_16(1786); +emit_16(1722); +emit_16(1787); +emit_16(1723); +emit_16(1787); +emit_16(1722); +emit_16(1787); +emit_16(1723); +emit_16(1788); +emit_16(1724); +emit_16(1788); +emit_16(1723); +emit_16(1788); +emit_16(1724); +emit_16(1789); +emit_16(1725); +emit_16(1789); +emit_16(1724); +emit_16(1789); +emit_16(1725); +emit_16(1790); +emit_16(1726); +emit_16(1790); +emit_16(1725); +emit_16(1790); +emit_16(1726); +emit_16(1791); +emit_16(1727); +emit_16(1791); +emit_16(1726); +emit_16(1792); +emit_16(1728); +emit_16(1793); +emit_16(1729); +emit_16(1793); +emit_16(1728); +emit_16(1793); +emit_16(1729); +emit_16(1794); +emit_16(1730); +emit_16(1794); +emit_16(1729); +emit_16(1794); +emit_16(1730); +emit_16(1795); +emit_16(1731); +emit_16(1795); +emit_16(1730); +emit_16(1795); +emit_16(1731); +emit_16(1796); +emit_16(1732); +emit_16(1796); +emit_16(1731); +emit_16(1796); +emit_16(1732); +emit_16(1797); +emit_16(1733); +emit_16(1797); +emit_16(1732); +emit_16(1797); +emit_16(1733); +emit_16(1798); +emit_16(1734); +emit_16(1798); +emit_16(1733); +emit_16(1798); +emit_16(1734); +emit_16(1799); +emit_16(1735); +emit_16(1799); +emit_16(1734); +emit_16(1799); +emit_16(1735); +emit_16(1800); +emit_16(1736); +emit_16(1800); +emit_16(1735); +emit_16(1800); +emit_16(1736); +emit_16(1801); +emit_16(1737); +emit_16(1801); +emit_16(1736); +emit_16(1801); +emit_16(1737); +emit_16(1802); +emit_16(1738); +emit_16(1802); +emit_16(1737); +emit_16(1802); +emit_16(1738); +emit_16(1803); +emit_16(1739); +emit_16(1803); +emit_16(1738); +emit_16(1803); +emit_16(1739); +emit_16(1804); +emit_16(1740); +emit_16(1804); +emit_16(1739); +emit_16(1804); +emit_16(1740); +emit_16(1805); +emit_16(1741); +emit_16(1805); +emit_16(1740); +emit_16(1805); +emit_16(1741); +emit_16(1806); +emit_16(1742); +emit_16(1806); +emit_16(1741); +emit_16(1806); +emit_16(1742); +emit_16(1807); +emit_16(1743); +emit_16(1807); +emit_16(1742); +emit_16(1807); +emit_16(1743); +emit_16(1808); +emit_16(1744); +emit_16(1808); +emit_16(1743); +emit_16(1808); +emit_16(1744); +emit_16(1809); +emit_16(1745); +emit_16(1809); +emit_16(1744); +emit_16(1809); +emit_16(1745); +emit_16(1810); +emit_16(1746); +emit_16(1810); +emit_16(1745); +emit_16(1810); +emit_16(1746); +emit_16(1811); +emit_16(1747); +emit_16(1811); +emit_16(1746); +emit_16(1811); +emit_16(1747); +emit_16(1812); +emit_16(1748); +emit_16(1812); +emit_16(1747); +emit_16(1812); +emit_16(1748); +emit_16(1813); +emit_16(1749); +emit_16(1813); +emit_16(1748); +emit_16(1813); +emit_16(1749); +emit_16(1814); +emit_16(1750); +emit_16(1814); +emit_16(1749); +emit_16(1814); +emit_16(1750); +emit_16(1815); +emit_16(1751); +emit_16(1815); +emit_16(1750); +emit_16(1815); +emit_16(1751); +emit_16(1816); +emit_16(1752); +emit_16(1816); +emit_16(1751); +emit_16(1816); +emit_16(1752); +emit_16(1817); +emit_16(1753); +emit_16(1817); +emit_16(1752); +emit_16(1817); +emit_16(1753); +emit_16(1818); +emit_16(1754); +emit_16(1818); +emit_16(1753); +emit_16(1818); +emit_16(1754); +emit_16(1819); +emit_16(1755); +emit_16(1819); +emit_16(1754); +emit_16(1819); +emit_16(1755); +emit_16(1820); +emit_16(1756); +emit_16(1820); +emit_16(1755); +emit_16(1820); +emit_16(1756); +emit_16(1821); +emit_16(1757); +emit_16(1821); +emit_16(1756); +emit_16(1821); +emit_16(1757); +emit_16(1822); +emit_16(1758); +emit_16(1822); +emit_16(1757); +emit_16(1822); +emit_16(1758); +emit_16(1823); +emit_16(1759); +emit_16(1823); +emit_16(1758); +emit_16(1823); +emit_16(1759); +emit_16(1824); +emit_16(1760); +emit_16(1824); +emit_16(1759); +emit_16(1824); +emit_16(1760); +emit_16(1825); +emit_16(1761); +emit_16(1825); +emit_16(1760); +emit_16(1825); +emit_16(1761); +emit_16(1826); +emit_16(1762); +emit_16(1826); +emit_16(1761); +emit_16(1826); +emit_16(1762); +emit_16(1827); +emit_16(1763); +emit_16(1827); +emit_16(1762); +emit_16(1827); +emit_16(1763); +emit_16(1828); +emit_16(1764); +emit_16(1828); +emit_16(1763); +emit_16(1828); +emit_16(1764); +emit_16(1829); +emit_16(1765); +emit_16(1829); +emit_16(1764); +emit_16(1829); +emit_16(1765); +emit_16(1830); +emit_16(1766); +emit_16(1830); +emit_16(1765); +emit_16(1830); +emit_16(1766); +emit_16(1831); +emit_16(1767); +emit_16(1831); +emit_16(1766); +emit_16(1831); +emit_16(1767); +emit_16(1832); +emit_16(1768); +emit_16(1832); +emit_16(1767); +emit_16(1832); +emit_16(1768); +emit_16(1833); +emit_16(1769); +emit_16(1833); +emit_16(1768); +emit_16(1833); +emit_16(1769); +emit_16(1834); +emit_16(1770); +emit_16(1834); +emit_16(1769); +emit_16(1834); +emit_16(1770); +emit_16(1835); +emit_16(1771); +emit_16(1835); +emit_16(1770); +emit_16(1835); +emit_16(1771); +emit_16(1836); +emit_16(1772); +emit_16(1836); +emit_16(1771); +emit_16(1836); +emit_16(1772); +emit_16(1837); +emit_16(1773); +emit_16(1837); +emit_16(1772); +emit_16(1837); +emit_16(1773); +emit_16(1838); +emit_16(1774); +emit_16(1838); +emit_16(1773); +emit_16(1838); +emit_16(1774); +emit_16(1839); +emit_16(1775); +emit_16(1839); +emit_16(1774); +emit_16(1839); +emit_16(1775); +emit_16(1840); +emit_16(1776); +emit_16(1840); +emit_16(1775); +emit_16(1840); +emit_16(1776); +emit_16(1841); +emit_16(1777); +emit_16(1841); +emit_16(1776); +emit_16(1841); +emit_16(1777); +emit_16(1842); +emit_16(1778); +emit_16(1842); +emit_16(1777); +emit_16(1842); +emit_16(1778); +emit_16(1843); +emit_16(1779); +emit_16(1843); +emit_16(1778); +emit_16(1843); +emit_16(1779); +emit_16(1844); +emit_16(1780); +emit_16(1844); +emit_16(1779); +emit_16(1844); +emit_16(1780); +emit_16(1845); +emit_16(1781); +emit_16(1845); +emit_16(1780); +emit_16(1845); +emit_16(1781); +emit_16(1846); +emit_16(1782); +emit_16(1846); +emit_16(1781); +emit_16(1846); +emit_16(1782); +emit_16(1847); +emit_16(1783); +emit_16(1847); +emit_16(1782); +emit_16(1847); +emit_16(1783); +emit_16(1848); +emit_16(1784); +emit_16(1848); +emit_16(1783); +emit_16(1848); +emit_16(1784); +emit_16(1849); +emit_16(1785); +emit_16(1849); +emit_16(1784); +emit_16(1849); +emit_16(1785); +emit_16(1850); +emit_16(1786); +emit_16(1850); +emit_16(1785); +emit_16(1850); +emit_16(1786); +emit_16(1851); +emit_16(1787); +emit_16(1851); +emit_16(1786); +emit_16(1851); +emit_16(1787); +emit_16(1852); +emit_16(1788); +emit_16(1852); +emit_16(1787); +emit_16(1852); +emit_16(1788); +emit_16(1853); +emit_16(1789); +emit_16(1853); +emit_16(1788); +emit_16(1853); +emit_16(1789); +emit_16(1854); +emit_16(1790); +emit_16(1854); +emit_16(1789); +emit_16(1854); +emit_16(1790); +emit_16(1855); +emit_16(1791); +emit_16(1855); +emit_16(1790); +emit_16(1856); +emit_16(1792); +emit_16(1857); +emit_16(1793); +emit_16(1857); +emit_16(1792); +emit_16(1857); +emit_16(1793); +emit_16(1858); +emit_16(1794); +emit_16(1858); +emit_16(1793); +emit_16(1858); +emit_16(1794); +emit_16(1859); +emit_16(1795); +emit_16(1859); +emit_16(1794); +emit_16(1859); +emit_16(1795); +emit_16(1860); +emit_16(1796); +emit_16(1860); +emit_16(1795); +emit_16(1860); +emit_16(1796); +emit_16(1861); +emit_16(1797); +emit_16(1861); +emit_16(1796); +emit_16(1861); +emit_16(1797); +emit_16(1862); +emit_16(1798); +emit_16(1862); +emit_16(1797); +emit_16(1862); +emit_16(1798); +emit_16(1863); +emit_16(1799); +emit_16(1863); +emit_16(1798); +emit_16(1863); +emit_16(1799); +emit_16(1864); +emit_16(1800); +emit_16(1864); +emit_16(1799); +emit_16(1864); +emit_16(1800); +emit_16(1865); +emit_16(1801); +emit_16(1865); +emit_16(1800); +emit_16(1865); +emit_16(1801); +emit_16(1866); +emit_16(1802); +emit_16(1866); +emit_16(1801); +emit_16(1866); +emit_16(1802); +emit_16(1867); +emit_16(1803); +emit_16(1867); +emit_16(1802); +emit_16(1867); +emit_16(1803); +emit_16(1868); +emit_16(1804); +emit_16(1868); +emit_16(1803); +emit_16(1868); +emit_16(1804); +emit_16(1869); +emit_16(1805); +emit_16(1869); +emit_16(1804); +emit_16(1869); +emit_16(1805); +emit_16(1870); +emit_16(1806); +emit_16(1870); +emit_16(1805); +emit_16(1870); +emit_16(1806); +emit_16(1871); +emit_16(1807); +emit_16(1871); +emit_16(1806); +emit_16(1871); +emit_16(1807); +emit_16(1872); +emit_16(1808); +emit_16(1872); +emit_16(1807); +emit_16(1872); +emit_16(1808); +emit_16(1873); +emit_16(1809); +emit_16(1873); +emit_16(1808); +emit_16(1873); +emit_16(1809); +emit_16(1874); +emit_16(1810); +emit_16(1874); +emit_16(1809); +emit_16(1874); +emit_16(1810); +emit_16(1875); +emit_16(1811); +emit_16(1875); +emit_16(1810); +emit_16(1875); +emit_16(1811); +emit_16(1876); +emit_16(1812); +emit_16(1876); +emit_16(1811); +emit_16(1876); +emit_16(1812); +emit_16(1877); +emit_16(1813); +emit_16(1877); +emit_16(1812); +emit_16(1877); +emit_16(1813); +emit_16(1878); +emit_16(1814); +emit_16(1878); +emit_16(1813); +emit_16(1878); +emit_16(1814); +emit_16(1879); +emit_16(1815); +emit_16(1879); +emit_16(1814); +emit_16(1879); +emit_16(1815); +emit_16(1880); +emit_16(1816); +emit_16(1880); +emit_16(1815); +emit_16(1880); +emit_16(1816); +emit_16(1881); +emit_16(1817); +emit_16(1881); +emit_16(1816); +emit_16(1881); +emit_16(1817); +emit_16(1882); +emit_16(1818); +emit_16(1882); +emit_16(1817); +emit_16(1882); +emit_16(1818); +emit_16(1883); +emit_16(1819); +emit_16(1883); +emit_16(1818); +emit_16(1883); +emit_16(1819); +emit_16(1884); +emit_16(1820); +emit_16(1884); +emit_16(1819); +emit_16(1884); +emit_16(1820); +emit_16(1885); +emit_16(1821); +emit_16(1885); +emit_16(1820); +emit_16(1885); +emit_16(1821); +emit_16(1886); +emit_16(1822); +emit_16(1886); +emit_16(1821); +emit_16(1886); +emit_16(1822); +emit_16(1887); +emit_16(1823); +emit_16(1887); +emit_16(1822); +emit_16(1887); +emit_16(1823); +emit_16(1888); +emit_16(1824); +emit_16(1888); +emit_16(1823); +emit_16(1888); +emit_16(1824); +emit_16(1889); +emit_16(1825); +emit_16(1889); +emit_16(1824); +emit_16(1889); +emit_16(1825); +emit_16(1890); +emit_16(1826); +emit_16(1890); +emit_16(1825); +emit_16(1890); +emit_16(1826); +emit_16(1891); +emit_16(1827); +emit_16(1891); +emit_16(1826); +emit_16(1891); +emit_16(1827); +emit_16(1892); +emit_16(1828); +emit_16(1892); +emit_16(1827); +emit_16(1892); +emit_16(1828); +emit_16(1893); +emit_16(1829); +emit_16(1893); +emit_16(1828); +emit_16(1893); +emit_16(1829); +emit_16(1894); +emit_16(1830); +emit_16(1894); +emit_16(1829); +emit_16(1894); +emit_16(1830); +emit_16(1895); +emit_16(1831); +emit_16(1895); +emit_16(1830); +emit_16(1895); +emit_16(1831); +emit_16(1896); +emit_16(1832); +emit_16(1896); +emit_16(1831); +emit_16(1896); +emit_16(1832); +emit_16(1897); +emit_16(1833); +emit_16(1897); +emit_16(1832); +emit_16(1897); +emit_16(1833); +emit_16(1898); +emit_16(1834); +emit_16(1898); +emit_16(1833); +emit_16(1898); +emit_16(1834); +emit_16(1899); +emit_16(1835); +emit_16(1899); +emit_16(1834); +emit_16(1899); +emit_16(1835); +emit_16(1900); +emit_16(1836); +emit_16(1900); +emit_16(1835); +emit_16(1900); +emit_16(1836); +emit_16(1901); +emit_16(1837); +emit_16(1901); +emit_16(1836); +emit_16(1901); +emit_16(1837); +emit_16(1902); +emit_16(1838); +emit_16(1902); +emit_16(1837); +emit_16(1902); +emit_16(1838); +emit_16(1903); +emit_16(1839); +emit_16(1903); +emit_16(1838); +emit_16(1903); +emit_16(1839); +emit_16(1904); +emit_16(1840); +emit_16(1904); +emit_16(1839); +emit_16(1904); +emit_16(1840); +emit_16(1905); +emit_16(1841); +emit_16(1905); +emit_16(1840); +emit_16(1905); +emit_16(1841); +emit_16(1906); +emit_16(1842); +emit_16(1906); +emit_16(1841); +emit_16(1906); +emit_16(1842); +emit_16(1907); +emit_16(1843); +emit_16(1907); +emit_16(1842); +emit_16(1907); +emit_16(1843); +emit_16(1908); +emit_16(1844); +emit_16(1908); +emit_16(1843); +emit_16(1908); +emit_16(1844); +emit_16(1909); +emit_16(1845); +emit_16(1909); +emit_16(1844); +emit_16(1909); +emit_16(1845); +emit_16(1910); +emit_16(1846); +emit_16(1910); +emit_16(1845); +emit_16(1910); +emit_16(1846); +emit_16(1911); +emit_16(1847); +emit_16(1911); +emit_16(1846); +emit_16(1911); +emit_16(1847); +emit_16(1912); +emit_16(1848); +emit_16(1912); +emit_16(1847); +emit_16(1912); +emit_16(1848); +emit_16(1913); +emit_16(1849); +emit_16(1913); +emit_16(1848); +emit_16(1913); +emit_16(1849); +emit_16(1914); +emit_16(1850); +emit_16(1914); +emit_16(1849); +emit_16(1914); +emit_16(1850); +emit_16(1915); +emit_16(1851); +emit_16(1915); +emit_16(1850); +emit_16(1915); +emit_16(1851); +emit_16(1916); +emit_16(1852); +emit_16(1916); +emit_16(1851); +emit_16(1916); +emit_16(1852); +emit_16(1917); +emit_16(1853); +emit_16(1917); +emit_16(1852); +emit_16(1917); +emit_16(1853); +emit_16(1918); +emit_16(1854); +emit_16(1918); +emit_16(1853); +emit_16(1918); +emit_16(1854); +emit_16(1919); +emit_16(1855); +emit_16(1919); +emit_16(1854); +emit_16(1920); +emit_16(1856); +emit_16(1921); +emit_16(1857); +emit_16(1921); +emit_16(1856); +emit_16(1921); +emit_16(1857); +emit_16(1922); +emit_16(1858); +emit_16(1922); +emit_16(1857); +emit_16(1922); +emit_16(1858); +emit_16(1923); +emit_16(1859); +emit_16(1923); +emit_16(1858); +emit_16(1923); +emit_16(1859); +emit_16(1924); +emit_16(1860); +emit_16(1924); +emit_16(1859); +emit_16(1924); +emit_16(1860); +emit_16(1925); +emit_16(1861); +emit_16(1925); +emit_16(1860); +emit_16(1925); +emit_16(1861); +emit_16(1926); +emit_16(1862); +emit_16(1926); +emit_16(1861); +emit_16(1926); +emit_16(1862); +emit_16(1927); +emit_16(1863); +emit_16(1927); +emit_16(1862); +emit_16(1927); +emit_16(1863); +emit_16(1928); +emit_16(1864); +emit_16(1928); +emit_16(1863); +emit_16(1928); +emit_16(1864); +emit_16(1929); +emit_16(1865); +emit_16(1929); +emit_16(1864); +emit_16(1929); +emit_16(1865); +emit_16(1930); +emit_16(1866); +emit_16(1930); +emit_16(1865); +emit_16(1930); +emit_16(1866); +emit_16(1931); +emit_16(1867); +emit_16(1931); +emit_16(1866); +emit_16(1931); +emit_16(1867); +emit_16(1932); +emit_16(1868); +emit_16(1932); +emit_16(1867); +emit_16(1932); +emit_16(1868); +emit_16(1933); +emit_16(1869); +emit_16(1933); +emit_16(1868); +emit_16(1933); +emit_16(1869); +emit_16(1934); +emit_16(1870); +emit_16(1934); +emit_16(1869); +emit_16(1934); +emit_16(1870); +emit_16(1935); +emit_16(1871); +emit_16(1935); +emit_16(1870); +emit_16(1935); +emit_16(1871); +emit_16(1936); +emit_16(1872); +emit_16(1936); +emit_16(1871); +emit_16(1936); +emit_16(1872); +emit_16(1937); +emit_16(1873); +emit_16(1937); +emit_16(1872); +emit_16(1937); +emit_16(1873); +emit_16(1938); +emit_16(1874); +emit_16(1938); +emit_16(1873); +emit_16(1938); +emit_16(1874); +emit_16(1939); +emit_16(1875); +emit_16(1939); +emit_16(1874); +emit_16(1939); +emit_16(1875); +emit_16(1940); +emit_16(1876); +emit_16(1940); +emit_16(1875); +emit_16(1940); +emit_16(1876); +emit_16(1941); +emit_16(1877); +emit_16(1941); +emit_16(1876); +emit_16(1941); +emit_16(1877); +emit_16(1942); +emit_16(1878); +emit_16(1942); +emit_16(1877); +emit_16(1942); +emit_16(1878); +emit_16(1943); +emit_16(1879); +emit_16(1943); +emit_16(1878); +emit_16(1943); +emit_16(1879); +emit_16(1944); +emit_16(1880); +emit_16(1944); +emit_16(1879); +emit_16(1944); +emit_16(1880); +emit_16(1945); +emit_16(1881); +emit_16(1945); +emit_16(1880); +emit_16(1945); +emit_16(1881); +emit_16(1946); +emit_16(1882); +emit_16(1946); +emit_16(1881); +emit_16(1946); +emit_16(1882); +emit_16(1947); +emit_16(1883); +emit_16(1947); +emit_16(1882); +emit_16(1947); +emit_16(1883); +emit_16(1948); +emit_16(1884); +emit_16(1948); +emit_16(1883); +emit_16(1948); +emit_16(1884); +emit_16(1949); +emit_16(1885); +emit_16(1949); +emit_16(1884); +emit_16(1949); +emit_16(1885); +emit_16(1950); +emit_16(1886); +emit_16(1950); +emit_16(1885); +emit_16(1950); +emit_16(1886); +emit_16(1951); +emit_16(1887); +emit_16(1951); +emit_16(1886); +emit_16(1951); +emit_16(1887); +emit_16(1952); +emit_16(1888); +emit_16(1952); +emit_16(1887); +emit_16(1952); +emit_16(1888); +emit_16(1953); +emit_16(1889); +emit_16(1953); +emit_16(1888); +emit_16(1953); +emit_16(1889); +emit_16(1954); +emit_16(1890); +emit_16(1954); +emit_16(1889); +emit_16(1954); +emit_16(1890); +emit_16(1955); +emit_16(1891); +emit_16(1955); +emit_16(1890); +emit_16(1955); +emit_16(1891); +emit_16(1956); +emit_16(1892); +emit_16(1956); +emit_16(1891); +emit_16(1956); +emit_16(1892); +emit_16(1957); +emit_16(1893); +emit_16(1957); +emit_16(1892); +emit_16(1957); +emit_16(1893); +emit_16(1958); +emit_16(1894); +emit_16(1958); +emit_16(1893); +emit_16(1958); +emit_16(1894); +emit_16(1959); +emit_16(1895); +emit_16(1959); +emit_16(1894); +emit_16(1959); +emit_16(1895); +emit_16(1960); +emit_16(1896); +emit_16(1960); +emit_16(1895); +emit_16(1960); +emit_16(1896); +emit_16(1961); +emit_16(1897); +emit_16(1961); +emit_16(1896); +emit_16(1961); +emit_16(1897); +emit_16(1962); +emit_16(1898); +emit_16(1962); +emit_16(1897); +emit_16(1962); +emit_16(1898); +emit_16(1963); +emit_16(1899); +emit_16(1963); +emit_16(1898); +emit_16(1963); +emit_16(1899); +emit_16(1964); +emit_16(1900); +emit_16(1964); +emit_16(1899); +emit_16(1964); +emit_16(1900); +emit_16(1965); +emit_16(1901); +emit_16(1965); +emit_16(1900); +emit_16(1965); +emit_16(1901); +emit_16(1966); +emit_16(1902); +emit_16(1966); +emit_16(1901); +emit_16(1966); +emit_16(1902); +emit_16(1967); +emit_16(1903); +emit_16(1967); +emit_16(1902); +emit_16(1967); +emit_16(1903); +emit_16(1968); +emit_16(1904); +emit_16(1968); +emit_16(1903); +emit_16(1968); +emit_16(1904); +emit_16(1969); +emit_16(1905); +emit_16(1969); +emit_16(1904); +emit_16(1969); +emit_16(1905); +emit_16(1970); +emit_16(1906); +emit_16(1970); +emit_16(1905); +emit_16(1970); +emit_16(1906); +emit_16(1971); +emit_16(1907); +emit_16(1971); +emit_16(1906); +emit_16(1971); +emit_16(1907); +emit_16(1972); +emit_16(1908); +emit_16(1972); +emit_16(1907); +emit_16(1972); +emit_16(1908); +emit_16(1973); +emit_16(1909); +emit_16(1973); +emit_16(1908); +emit_16(1973); +emit_16(1909); +emit_16(1974); +emit_16(1910); +emit_16(1974); +emit_16(1909); +emit_16(1974); +emit_16(1910); +emit_16(1975); +emit_16(1911); +emit_16(1975); +emit_16(1910); +emit_16(1975); +emit_16(1911); +emit_16(1976); +emit_16(1912); +emit_16(1976); +emit_16(1911); +emit_16(1976); +emit_16(1912); +emit_16(1977); +emit_16(1913); +emit_16(1977); +emit_16(1912); +emit_16(1977); +emit_16(1913); +emit_16(1978); +emit_16(1914); +emit_16(1978); +emit_16(1913); +emit_16(1978); +emit_16(1914); +emit_16(1979); +emit_16(1915); +emit_16(1979); +emit_16(1914); +emit_16(1979); +emit_16(1915); +emit_16(1980); +emit_16(1916); +emit_16(1980); +emit_16(1915); +emit_16(1980); +emit_16(1916); +emit_16(1981); +emit_16(1917); +emit_16(1981); +emit_16(1916); +emit_16(1981); +emit_16(1917); +emit_16(1982); +emit_16(1918); +emit_16(1982); +emit_16(1917); +emit_16(1982); +emit_16(1918); +emit_16(1983); +emit_16(1919); +emit_16(1983); +emit_16(1918); +emit_16(1984); +emit_16(1920); +emit_16(1985); +emit_16(1921); +emit_16(1985); +emit_16(1920); +emit_16(1985); +emit_16(1921); +emit_16(1986); +emit_16(1922); +emit_16(1986); +emit_16(1921); +emit_16(1986); +emit_16(1922); +emit_16(1987); +emit_16(1923); +emit_16(1987); +emit_16(1922); +emit_16(1987); +emit_16(1923); +emit_16(1988); +emit_16(1924); +emit_16(1988); +emit_16(1923); +emit_16(1988); +emit_16(1924); +emit_16(1989); +emit_16(1925); +emit_16(1989); +emit_16(1924); +emit_16(1989); +emit_16(1925); +emit_16(1990); +emit_16(1926); +emit_16(1990); +emit_16(1925); +emit_16(1990); +emit_16(1926); +emit_16(1991); +emit_16(1927); +emit_16(1991); +emit_16(1926); +emit_16(1991); +emit_16(1927); +emit_16(1992); +emit_16(1928); +emit_16(1992); +emit_16(1927); +emit_16(1992); +emit_16(1928); +emit_16(1993); +emit_16(1929); +emit_16(1993); +emit_16(1928); +emit_16(1993); +emit_16(1929); +emit_16(1994); +emit_16(1930); +emit_16(1994); +emit_16(1929); +emit_16(1994); +emit_16(1930); +emit_16(1995); +emit_16(1931); +emit_16(1995); +emit_16(1930); +emit_16(1995); +emit_16(1931); +emit_16(1996); +emit_16(1932); +emit_16(1996); +emit_16(1931); +emit_16(1996); +emit_16(1932); +emit_16(1997); +emit_16(1933); +emit_16(1997); +emit_16(1932); +emit_16(1997); +emit_16(1933); +emit_16(1998); +emit_16(1934); +emit_16(1998); +emit_16(1933); +emit_16(1998); +emit_16(1934); +emit_16(1999); +emit_16(1935); +emit_16(1999); +emit_16(1934); +emit_16(1999); +emit_16(1935); +emit_16(2000); +emit_16(1936); +emit_16(2000); +emit_16(1935); +emit_16(2000); +emit_16(1936); +emit_16(2001); +emit_16(1937); +emit_16(2001); +emit_16(1936); +emit_16(2001); +emit_16(1937); +emit_16(2002); +emit_16(1938); +emit_16(2002); +emit_16(1937); +emit_16(2002); +emit_16(1938); +emit_16(2003); +emit_16(1939); +emit_16(2003); +emit_16(1938); +emit_16(2003); +emit_16(1939); +emit_16(2004); +emit_16(1940); +emit_16(2004); +emit_16(1939); +emit_16(2004); +emit_16(1940); +emit_16(2005); +emit_16(1941); +emit_16(2005); +emit_16(1940); +emit_16(2005); +emit_16(1941); +emit_16(2006); +emit_16(1942); +emit_16(2006); +emit_16(1941); +emit_16(2006); +emit_16(1942); +emit_16(2007); +emit_16(1943); +emit_16(2007); +emit_16(1942); +emit_16(2007); +emit_16(1943); +emit_16(2008); +emit_16(1944); +emit_16(2008); +emit_16(1943); +emit_16(2008); +emit_16(1944); +emit_16(2009); +emit_16(1945); +emit_16(2009); +emit_16(1944); +emit_16(2009); +emit_16(1945); +emit_16(2010); +emit_16(1946); +emit_16(2010); +emit_16(1945); +emit_16(2010); +emit_16(1946); +emit_16(2011); +emit_16(1947); +emit_16(2011); +emit_16(1946); +emit_16(2011); +emit_16(1947); +emit_16(2012); +emit_16(1948); +emit_16(2012); +emit_16(1947); +emit_16(2012); +emit_16(1948); +emit_16(2013); +emit_16(1949); +emit_16(2013); +emit_16(1948); +emit_16(2013); +emit_16(1949); +emit_16(2014); +emit_16(1950); +emit_16(2014); +emit_16(1949); +emit_16(2014); +emit_16(1950); +emit_16(2015); +emit_16(1951); +emit_16(2015); +emit_16(1950); +emit_16(2015); +emit_16(1951); +emit_16(2016); +emit_16(1952); +emit_16(2016); +emit_16(1951); +emit_16(2016); +emit_16(1952); +emit_16(2017); +emit_16(1953); +emit_16(2017); +emit_16(1952); +emit_16(2017); +emit_16(1953); +emit_16(2018); +emit_16(1954); +emit_16(2018); +emit_16(1953); +emit_16(2018); +emit_16(1954); +emit_16(2019); +emit_16(1955); +emit_16(2019); +emit_16(1954); +emit_16(2019); +emit_16(1955); +emit_16(2020); +emit_16(1956); +emit_16(2020); +emit_16(1955); +emit_16(2020); +emit_16(1956); +emit_16(2021); +emit_16(1957); +emit_16(2021); +emit_16(1956); +emit_16(2021); +emit_16(1957); +emit_16(2022); +emit_16(1958); +emit_16(2022); +emit_16(1957); +emit_16(2022); +emit_16(1958); +emit_16(2023); +emit_16(1959); +emit_16(2023); +emit_16(1958); +emit_16(2023); +emit_16(1959); +emit_16(2024); +emit_16(1960); +emit_16(2024); +emit_16(1959); +emit_16(2024); +emit_16(1960); +emit_16(2025); +emit_16(1961); +emit_16(2025); +emit_16(1960); +emit_16(2025); +emit_16(1961); +emit_16(2026); +emit_16(1962); +emit_16(2026); +emit_16(1961); +emit_16(2026); +emit_16(1962); +emit_16(2027); +emit_16(1963); +emit_16(2027); +emit_16(1962); +emit_16(2027); +emit_16(1963); +emit_16(2028); +emit_16(1964); +emit_16(2028); +emit_16(1963); +emit_16(2028); +emit_16(1964); +emit_16(2029); +emit_16(1965); +emit_16(2029); +emit_16(1964); +emit_16(2029); +emit_16(1965); +emit_16(2030); +emit_16(1966); +emit_16(2030); +emit_16(1965); +emit_16(2030); +emit_16(1966); +emit_16(2031); +emit_16(1967); +emit_16(2031); +emit_16(1966); +emit_16(2031); +emit_16(1967); +emit_16(2032); +emit_16(1968); +emit_16(2032); +emit_16(1967); +emit_16(2032); +emit_16(1968); +emit_16(2033); +emit_16(1969); +emit_16(2033); +emit_16(1968); +emit_16(2033); +emit_16(1969); +emit_16(2034); +emit_16(1970); +emit_16(2034); +emit_16(1969); +emit_16(2034); +emit_16(1970); +emit_16(2035); +emit_16(1971); +emit_16(2035); +emit_16(1970); +emit_16(2035); +emit_16(1971); +emit_16(2036); +emit_16(1972); +emit_16(2036); +emit_16(1971); +emit_16(2036); +emit_16(1972); +emit_16(2037); +emit_16(1973); +emit_16(2037); +emit_16(1972); +emit_16(2037); +emit_16(1973); +emit_16(2038); +emit_16(1974); +emit_16(2038); +emit_16(1973); +emit_16(2038); +emit_16(1974); +emit_16(2039); +emit_16(1975); +emit_16(2039); +emit_16(1974); +emit_16(2039); +emit_16(1975); +emit_16(2040); +emit_16(1976); +emit_16(2040); +emit_16(1975); +emit_16(2040); +emit_16(1976); +emit_16(2041); +emit_16(1977); +emit_16(2041); +emit_16(1976); +emit_16(2041); +emit_16(1977); +emit_16(2042); +emit_16(1978); +emit_16(2042); +emit_16(1977); +emit_16(2042); +emit_16(1978); +emit_16(2043); +emit_16(1979); +emit_16(2043); +emit_16(1978); +emit_16(2043); +emit_16(1979); +emit_16(2044); +emit_16(1980); +emit_16(2044); +emit_16(1979); +emit_16(2044); +emit_16(1980); +emit_16(2045); +emit_16(1981); +emit_16(2045); +emit_16(1980); +emit_16(2045); +emit_16(1981); +emit_16(2046); +emit_16(1982); +emit_16(2046); +emit_16(1981); +emit_16(2046); +emit_16(1982); +emit_16(2047); +emit_16(1983); +emit_16(2047); +emit_16(1982); +emit_start(Landscape04Idx) +emit_16(0); +emit_16(1); +emit_16(2); +emit_16(3); +emit_16(2); +emit_16(1); +emit_16(2); +emit_16(3); +emit_16(4); +emit_16(5); +emit_16(4); +emit_16(3); +emit_16(4); +emit_16(5); +emit_16(6); +emit_16(7); +emit_16(6); +emit_16(5); +emit_16(6); +emit_16(7); +emit_16(8); +emit_16(9); +emit_16(8); +emit_16(7); +emit_16(8); +emit_16(9); +emit_16(10); +emit_16(11); +emit_16(10); +emit_16(9); +emit_16(10); +emit_16(11); +emit_16(12); +emit_16(13); +emit_16(12); +emit_16(11); +emit_16(12); +emit_16(13); +emit_16(14); +emit_16(15); +emit_16(14); +emit_16(13); +emit_16(14); +emit_16(15); +emit_16(16); +emit_16(17); +emit_16(16); +emit_16(15); +emit_16(16); +emit_16(17); +emit_16(18); +emit_16(19); +emit_16(18); +emit_16(17); +emit_16(18); +emit_16(19); +emit_16(20); +emit_16(21); +emit_16(20); +emit_16(19); +emit_16(20); +emit_16(21); +emit_16(22); +emit_16(23); +emit_16(22); +emit_16(21); +emit_16(22); +emit_16(23); +emit_16(24); +emit_16(25); +emit_16(24); +emit_16(23); +emit_16(24); +emit_16(25); +emit_16(26); +emit_16(27); +emit_16(26); +emit_16(25); +emit_16(26); +emit_16(27); +emit_16(28); +emit_16(29); +emit_16(28); +emit_16(27); +emit_16(28); +emit_16(29); +emit_16(30); +emit_16(31); +emit_16(30); +emit_16(29); +emit_16(30); +emit_16(31); +emit_16(32); +emit_16(33); +emit_16(32); +emit_16(31); +emit_16(32); +emit_16(33); +emit_16(34); +emit_16(35); +emit_16(34); +emit_16(33); +emit_16(34); +emit_16(35); +emit_16(36); +emit_16(37); +emit_16(36); +emit_16(35); +emit_16(36); +emit_16(37); +emit_16(38); +emit_16(39); +emit_16(38); +emit_16(37); +emit_16(38); +emit_16(39); +emit_16(40); +emit_16(41); +emit_16(40); +emit_16(39); +emit_16(40); +emit_16(41); +emit_16(42); +emit_16(43); +emit_16(42); +emit_16(41); +emit_16(42); +emit_16(43); +emit_16(44); +emit_16(45); +emit_16(44); +emit_16(43); +emit_16(44); +emit_16(45); +emit_16(46); +emit_16(47); +emit_16(46); +emit_16(45); +emit_16(46); +emit_16(47); +emit_16(48); +emit_16(49); +emit_16(48); +emit_16(47); +emit_16(48); +emit_16(49); +emit_16(50); +emit_16(51); +emit_16(50); +emit_16(49); +emit_16(50); +emit_16(51); +emit_16(52); +emit_16(53); +emit_16(52); +emit_16(51); +emit_16(52); +emit_16(53); +emit_16(54); +emit_16(55); +emit_16(54); +emit_16(53); +emit_16(54); +emit_16(55); +emit_16(56); +emit_16(57); +emit_16(56); +emit_16(55); +emit_16(56); +emit_16(57); +emit_16(58); +emit_16(59); +emit_16(58); +emit_16(57); +emit_16(58); +emit_16(59); +emit_16(60); +emit_16(61); +emit_16(60); +emit_16(59); +emit_16(60); +emit_16(61); +emit_16(62); +emit_16(63); +emit_16(62); +emit_16(61); +emit_16(62); +emit_16(63); +emit_16(64); +emit_16(65); +emit_16(64); +emit_16(63); +emit_16(64); +emit_16(65); +emit_16(66); +emit_16(67); +emit_16(66); +emit_16(65); +emit_16(66); +emit_16(67); +emit_16(68); +emit_16(69); +emit_16(68); +emit_16(67); +emit_16(68); +emit_16(69); +emit_16(70); +emit_16(71); +emit_16(70); +emit_16(69); +emit_16(70); +emit_16(71); +emit_16(72); +emit_16(73); +emit_16(72); +emit_16(71); +emit_16(72); +emit_16(73); +emit_16(74); +emit_16(75); +emit_16(74); +emit_16(73); +emit_16(74); +emit_16(75); +emit_16(76); +emit_16(77); +emit_16(76); +emit_16(75); +emit_16(76); +emit_16(77); +emit_16(78); +emit_16(79); +emit_16(78); +emit_16(77); +emit_16(78); +emit_16(79); +emit_16(80); +emit_16(81); +emit_16(80); +emit_16(79); +emit_16(80); +emit_16(81); +emit_16(82); +emit_16(83); +emit_16(82); +emit_16(81); +emit_16(82); +emit_16(83); +emit_16(84); +emit_16(85); +emit_16(84); +emit_16(83); +emit_16(84); +emit_16(85); +emit_16(86); +emit_16(87); +emit_16(86); +emit_16(85); +emit_16(86); +emit_16(87); +emit_16(88); +emit_16(89); +emit_16(88); +emit_16(87); +emit_16(88); +emit_16(89); +emit_16(90); +emit_16(91); +emit_16(90); +emit_16(89); +emit_16(90); +emit_16(91); +emit_16(92); +emit_16(93); +emit_16(92); +emit_16(91); +emit_16(92); +emit_16(93); +emit_16(94); +emit_16(95); +emit_16(94); +emit_16(93); +emit_16(94); +emit_16(95); +emit_16(96); +emit_16(97); +emit_16(96); +emit_16(95); +emit_16(96); +emit_16(97); +emit_16(98); +emit_16(99); +emit_16(98); +emit_16(97); +emit_16(98); +emit_16(99); +emit_16(100); +emit_16(101); +emit_16(100); +emit_16(99); +emit_16(100); +emit_16(101); +emit_16(102); +emit_16(103); +emit_16(102); +emit_16(101); +emit_16(102); +emit_16(103); +emit_16(104); +emit_16(105); +emit_16(104); +emit_16(103); +emit_16(104); +emit_16(105); +emit_16(106); +emit_16(107); +emit_16(106); +emit_16(105); +emit_16(106); +emit_16(107); +emit_16(108); +emit_16(109); +emit_16(108); +emit_16(107); +emit_16(108); +emit_16(109); +emit_16(110); +emit_16(111); +emit_16(110); +emit_16(109); +emit_16(110); +emit_16(111); +emit_16(112); +emit_16(113); +emit_16(112); +emit_16(111); +emit_16(112); +emit_16(113); +emit_16(114); +emit_16(115); +emit_16(114); +emit_16(113); +emit_16(114); +emit_16(115); +emit_16(116); +emit_16(117); +emit_16(116); +emit_16(115); +emit_16(116); +emit_16(117); +emit_16(118); +emit_16(119); +emit_16(118); +emit_16(117); +emit_16(118); +emit_16(119); +emit_16(120); +emit_16(121); +emit_16(120); +emit_16(119); +emit_16(120); +emit_16(121); +emit_16(122); +emit_16(123); +emit_16(122); +emit_16(121); +emit_16(122); +emit_16(123); +emit_16(124); +emit_16(125); +emit_16(124); +emit_16(123); +emit_16(124); +emit_16(125); +emit_16(126); +emit_16(127); +emit_16(126); +emit_16(125); +emit_16(128); +emit_16(0); +emit_16(129); +emit_16(2); +emit_16(129); +emit_16(0); +emit_16(129); +emit_16(2); +emit_16(130); +emit_16(4); +emit_16(130); +emit_16(2); +emit_16(130); +emit_16(4); +emit_16(131); +emit_16(6); +emit_16(131); +emit_16(4); +emit_16(131); +emit_16(6); +emit_16(132); +emit_16(8); +emit_16(132); +emit_16(6); +emit_16(132); +emit_16(8); +emit_16(133); +emit_16(10); +emit_16(133); +emit_16(8); +emit_16(133); +emit_16(10); +emit_16(134); +emit_16(12); +emit_16(134); +emit_16(10); +emit_16(134); +emit_16(12); +emit_16(135); +emit_16(14); +emit_16(135); +emit_16(12); +emit_16(135); +emit_16(14); +emit_16(136); +emit_16(16); +emit_16(136); +emit_16(14); +emit_16(136); +emit_16(16); +emit_16(137); +emit_16(18); +emit_16(137); +emit_16(16); +emit_16(137); +emit_16(18); +emit_16(138); +emit_16(20); +emit_16(138); +emit_16(18); +emit_16(138); +emit_16(20); +emit_16(139); +emit_16(22); +emit_16(139); +emit_16(20); +emit_16(139); +emit_16(22); +emit_16(140); +emit_16(24); +emit_16(140); +emit_16(22); +emit_16(140); +emit_16(24); +emit_16(141); +emit_16(26); +emit_16(141); +emit_16(24); +emit_16(141); +emit_16(26); +emit_16(142); +emit_16(28); +emit_16(142); +emit_16(26); +emit_16(142); +emit_16(28); +emit_16(143); +emit_16(30); +emit_16(143); +emit_16(28); +emit_16(143); +emit_16(30); +emit_16(144); +emit_16(32); +emit_16(144); +emit_16(30); +emit_16(144); +emit_16(32); +emit_16(145); +emit_16(34); +emit_16(145); +emit_16(32); +emit_16(145); +emit_16(34); +emit_16(146); +emit_16(36); +emit_16(146); +emit_16(34); +emit_16(146); +emit_16(36); +emit_16(147); +emit_16(38); +emit_16(147); +emit_16(36); +emit_16(147); +emit_16(38); +emit_16(148); +emit_16(40); +emit_16(148); +emit_16(38); +emit_16(148); +emit_16(40); +emit_16(149); +emit_16(42); +emit_16(149); +emit_16(40); +emit_16(149); +emit_16(42); +emit_16(150); +emit_16(44); +emit_16(150); +emit_16(42); +emit_16(150); +emit_16(44); +emit_16(151); +emit_16(46); +emit_16(151); +emit_16(44); +emit_16(151); +emit_16(46); +emit_16(152); +emit_16(48); +emit_16(152); +emit_16(46); +emit_16(152); +emit_16(48); +emit_16(153); +emit_16(50); +emit_16(153); +emit_16(48); +emit_16(153); +emit_16(50); +emit_16(154); +emit_16(52); +emit_16(154); +emit_16(50); +emit_16(154); +emit_16(52); +emit_16(155); +emit_16(54); +emit_16(155); +emit_16(52); +emit_16(155); +emit_16(54); +emit_16(156); +emit_16(56); +emit_16(156); +emit_16(54); +emit_16(156); +emit_16(56); +emit_16(157); +emit_16(58); +emit_16(157); +emit_16(56); +emit_16(157); +emit_16(58); +emit_16(158); +emit_16(60); +emit_16(158); +emit_16(58); +emit_16(158); +emit_16(60); +emit_16(159); +emit_16(62); +emit_16(159); +emit_16(60); +emit_16(159); +emit_16(62); +emit_16(160); +emit_16(64); +emit_16(160); +emit_16(62); +emit_16(160); +emit_16(64); +emit_16(161); +emit_16(66); +emit_16(161); +emit_16(64); +emit_16(161); +emit_16(66); +emit_16(162); +emit_16(68); +emit_16(162); +emit_16(66); +emit_16(162); +emit_16(68); +emit_16(163); +emit_16(70); +emit_16(163); +emit_16(68); +emit_16(163); +emit_16(70); +emit_16(164); +emit_16(72); +emit_16(164); +emit_16(70); +emit_16(164); +emit_16(72); +emit_16(165); +emit_16(74); +emit_16(165); +emit_16(72); +emit_16(165); +emit_16(74); +emit_16(166); +emit_16(76); +emit_16(166); +emit_16(74); +emit_16(166); +emit_16(76); +emit_16(167); +emit_16(78); +emit_16(167); +emit_16(76); +emit_16(167); +emit_16(78); +emit_16(168); +emit_16(80); +emit_16(168); +emit_16(78); +emit_16(168); +emit_16(80); +emit_16(169); +emit_16(82); +emit_16(169); +emit_16(80); +emit_16(169); +emit_16(82); +emit_16(170); +emit_16(84); +emit_16(170); +emit_16(82); +emit_16(170); +emit_16(84); +emit_16(171); +emit_16(86); +emit_16(171); +emit_16(84); +emit_16(171); +emit_16(86); +emit_16(172); +emit_16(88); +emit_16(172); +emit_16(86); +emit_16(172); +emit_16(88); +emit_16(173); +emit_16(90); +emit_16(173); +emit_16(88); +emit_16(173); +emit_16(90); +emit_16(174); +emit_16(92); +emit_16(174); +emit_16(90); +emit_16(174); +emit_16(92); +emit_16(175); +emit_16(94); +emit_16(175); +emit_16(92); +emit_16(175); +emit_16(94); +emit_16(176); +emit_16(96); +emit_16(176); +emit_16(94); +emit_16(176); +emit_16(96); +emit_16(177); +emit_16(98); +emit_16(177); +emit_16(96); +emit_16(177); +emit_16(98); +emit_16(178); +emit_16(100); +emit_16(178); +emit_16(98); +emit_16(178); +emit_16(100); +emit_16(179); +emit_16(102); +emit_16(179); +emit_16(100); +emit_16(179); +emit_16(102); +emit_16(180); +emit_16(104); +emit_16(180); +emit_16(102); +emit_16(180); +emit_16(104); +emit_16(181); +emit_16(106); +emit_16(181); +emit_16(104); +emit_16(181); +emit_16(106); +emit_16(182); +emit_16(108); +emit_16(182); +emit_16(106); +emit_16(182); +emit_16(108); +emit_16(183); +emit_16(110); +emit_16(183); +emit_16(108); +emit_16(183); +emit_16(110); +emit_16(184); +emit_16(112); +emit_16(184); +emit_16(110); +emit_16(184); +emit_16(112); +emit_16(185); +emit_16(114); +emit_16(185); +emit_16(112); +emit_16(185); +emit_16(114); +emit_16(186); +emit_16(116); +emit_16(186); +emit_16(114); +emit_16(186); +emit_16(116); +emit_16(187); +emit_16(118); +emit_16(187); +emit_16(116); +emit_16(187); +emit_16(118); +emit_16(188); +emit_16(120); +emit_16(188); +emit_16(118); +emit_16(188); +emit_16(120); +emit_16(189); +emit_16(122); +emit_16(189); +emit_16(120); +emit_16(189); +emit_16(122); +emit_16(190); +emit_16(124); +emit_16(190); +emit_16(122); +emit_16(190); +emit_16(124); +emit_16(191); +emit_16(126); +emit_16(191); +emit_16(124); +emit_16(192); +emit_16(128); +emit_16(193); +emit_16(129); +emit_16(193); +emit_16(128); +emit_16(193); +emit_16(129); +emit_16(194); +emit_16(130); +emit_16(194); +emit_16(129); +emit_16(194); +emit_16(130); +emit_16(195); +emit_16(131); +emit_16(195); +emit_16(130); +emit_16(195); +emit_16(131); +emit_16(196); +emit_16(132); +emit_16(196); +emit_16(131); +emit_16(196); +emit_16(132); +emit_16(197); +emit_16(133); +emit_16(197); +emit_16(132); +emit_16(197); +emit_16(133); +emit_16(198); +emit_16(134); +emit_16(198); +emit_16(133); +emit_16(198); +emit_16(134); +emit_16(199); +emit_16(135); +emit_16(199); +emit_16(134); +emit_16(199); +emit_16(135); +emit_16(200); +emit_16(136); +emit_16(200); +emit_16(135); +emit_16(200); +emit_16(136); +emit_16(201); +emit_16(137); +emit_16(201); +emit_16(136); +emit_16(201); +emit_16(137); +emit_16(202); +emit_16(138); +emit_16(202); +emit_16(137); +emit_16(202); +emit_16(138); +emit_16(203); +emit_16(139); +emit_16(203); +emit_16(138); +emit_16(203); +emit_16(139); +emit_16(204); +emit_16(140); +emit_16(204); +emit_16(139); +emit_16(204); +emit_16(140); +emit_16(205); +emit_16(141); +emit_16(205); +emit_16(140); +emit_16(205); +emit_16(141); +emit_16(206); +emit_16(142); +emit_16(206); +emit_16(141); +emit_16(206); +emit_16(142); +emit_16(207); +emit_16(143); +emit_16(207); +emit_16(142); +emit_16(207); +emit_16(143); +emit_16(208); +emit_16(144); +emit_16(208); +emit_16(143); +emit_16(208); +emit_16(144); +emit_16(209); +emit_16(145); +emit_16(209); +emit_16(144); +emit_16(209); +emit_16(145); +emit_16(210); +emit_16(146); +emit_16(210); +emit_16(145); +emit_16(210); +emit_16(146); +emit_16(211); +emit_16(147); +emit_16(211); +emit_16(146); +emit_16(211); +emit_16(147); +emit_16(212); +emit_16(148); +emit_16(212); +emit_16(147); +emit_16(212); +emit_16(148); +emit_16(213); +emit_16(149); +emit_16(213); +emit_16(148); +emit_16(213); +emit_16(149); +emit_16(214); +emit_16(150); +emit_16(214); +emit_16(149); +emit_16(214); +emit_16(150); +emit_16(215); +emit_16(151); +emit_16(215); +emit_16(150); +emit_16(215); +emit_16(151); +emit_16(216); +emit_16(152); +emit_16(216); +emit_16(151); +emit_16(216); +emit_16(152); +emit_16(217); +emit_16(153); +emit_16(217); +emit_16(152); +emit_16(217); +emit_16(153); +emit_16(218); +emit_16(154); +emit_16(218); +emit_16(153); +emit_16(218); +emit_16(154); +emit_16(219); +emit_16(155); +emit_16(219); +emit_16(154); +emit_16(219); +emit_16(155); +emit_16(220); +emit_16(156); +emit_16(220); +emit_16(155); +emit_16(220); +emit_16(156); +emit_16(221); +emit_16(157); +emit_16(221); +emit_16(156); +emit_16(221); +emit_16(157); +emit_16(222); +emit_16(158); +emit_16(222); +emit_16(157); +emit_16(222); +emit_16(158); +emit_16(223); +emit_16(159); +emit_16(223); +emit_16(158); +emit_16(223); +emit_16(159); +emit_16(224); +emit_16(160); +emit_16(224); +emit_16(159); +emit_16(224); +emit_16(160); +emit_16(225); +emit_16(161); +emit_16(225); +emit_16(160); +emit_16(225); +emit_16(161); +emit_16(226); +emit_16(162); +emit_16(226); +emit_16(161); +emit_16(226); +emit_16(162); +emit_16(227); +emit_16(163); +emit_16(227); +emit_16(162); +emit_16(227); +emit_16(163); +emit_16(228); +emit_16(164); +emit_16(228); +emit_16(163); +emit_16(228); +emit_16(164); +emit_16(229); +emit_16(165); +emit_16(229); +emit_16(164); +emit_16(229); +emit_16(165); +emit_16(230); +emit_16(166); +emit_16(230); +emit_16(165); +emit_16(230); +emit_16(166); +emit_16(231); +emit_16(167); +emit_16(231); +emit_16(166); +emit_16(231); +emit_16(167); +emit_16(232); +emit_16(168); +emit_16(232); +emit_16(167); +emit_16(232); +emit_16(168); +emit_16(233); +emit_16(169); +emit_16(233); +emit_16(168); +emit_16(233); +emit_16(169); +emit_16(234); +emit_16(170); +emit_16(234); +emit_16(169); +emit_16(234); +emit_16(170); +emit_16(235); +emit_16(171); +emit_16(235); +emit_16(170); +emit_16(235); +emit_16(171); +emit_16(236); +emit_16(172); +emit_16(236); +emit_16(171); +emit_16(236); +emit_16(172); +emit_16(237); +emit_16(173); +emit_16(237); +emit_16(172); +emit_16(237); +emit_16(173); +emit_16(238); +emit_16(174); +emit_16(238); +emit_16(173); +emit_16(238); +emit_16(174); +emit_16(239); +emit_16(175); +emit_16(239); +emit_16(174); +emit_16(239); +emit_16(175); +emit_16(240); +emit_16(176); +emit_16(240); +emit_16(175); +emit_16(240); +emit_16(176); +emit_16(241); +emit_16(177); +emit_16(241); +emit_16(176); +emit_16(241); +emit_16(177); +emit_16(242); +emit_16(178); +emit_16(242); +emit_16(177); +emit_16(242); +emit_16(178); +emit_16(243); +emit_16(179); +emit_16(243); +emit_16(178); +emit_16(243); +emit_16(179); +emit_16(244); +emit_16(180); +emit_16(244); +emit_16(179); +emit_16(244); +emit_16(180); +emit_16(245); +emit_16(181); +emit_16(245); +emit_16(180); +emit_16(245); +emit_16(181); +emit_16(246); +emit_16(182); +emit_16(246); +emit_16(181); +emit_16(246); +emit_16(182); +emit_16(247); +emit_16(183); +emit_16(247); +emit_16(182); +emit_16(247); +emit_16(183); +emit_16(248); +emit_16(184); +emit_16(248); +emit_16(183); +emit_16(248); +emit_16(184); +emit_16(249); +emit_16(185); +emit_16(249); +emit_16(184); +emit_16(249); +emit_16(185); +emit_16(250); +emit_16(186); +emit_16(250); +emit_16(185); +emit_16(250); +emit_16(186); +emit_16(251); +emit_16(187); +emit_16(251); +emit_16(186); +emit_16(251); +emit_16(187); +emit_16(252); +emit_16(188); +emit_16(252); +emit_16(187); +emit_16(252); +emit_16(188); +emit_16(253); +emit_16(189); +emit_16(253); +emit_16(188); +emit_16(253); +emit_16(189); +emit_16(254); +emit_16(190); +emit_16(254); +emit_16(189); +emit_16(254); +emit_16(190); +emit_16(255); +emit_16(191); +emit_16(255); +emit_16(190); +emit_16(256); +emit_16(192); +emit_16(257); +emit_16(193); +emit_16(257); +emit_16(192); +emit_16(257); +emit_16(193); +emit_16(258); +emit_16(194); +emit_16(258); +emit_16(193); +emit_16(258); +emit_16(194); +emit_16(259); +emit_16(195); +emit_16(259); +emit_16(194); +emit_16(259); +emit_16(195); +emit_16(260); +emit_16(196); +emit_16(260); +emit_16(195); +emit_16(260); +emit_16(196); +emit_16(261); +emit_16(197); +emit_16(261); +emit_16(196); +emit_16(261); +emit_16(197); +emit_16(262); +emit_16(198); +emit_16(262); +emit_16(197); +emit_16(262); +emit_16(198); +emit_16(263); +emit_16(199); +emit_16(263); +emit_16(198); +emit_16(263); +emit_16(199); +emit_16(264); +emit_16(200); +emit_16(264); +emit_16(199); +emit_16(264); +emit_16(200); +emit_16(265); +emit_16(201); +emit_16(265); +emit_16(200); +emit_16(265); +emit_16(201); +emit_16(266); +emit_16(202); +emit_16(266); +emit_16(201); +emit_16(266); +emit_16(202); +emit_16(267); +emit_16(203); +emit_16(267); +emit_16(202); +emit_16(267); +emit_16(203); +emit_16(268); +emit_16(204); +emit_16(268); +emit_16(203); +emit_16(268); +emit_16(204); +emit_16(269); +emit_16(205); +emit_16(269); +emit_16(204); +emit_16(269); +emit_16(205); +emit_16(270); +emit_16(206); +emit_16(270); +emit_16(205); +emit_16(270); +emit_16(206); +emit_16(271); +emit_16(207); +emit_16(271); +emit_16(206); +emit_16(271); +emit_16(207); +emit_16(272); +emit_16(208); +emit_16(272); +emit_16(207); +emit_16(272); +emit_16(208); +emit_16(273); +emit_16(209); +emit_16(273); +emit_16(208); +emit_16(273); +emit_16(209); +emit_16(274); +emit_16(210); +emit_16(274); +emit_16(209); +emit_16(274); +emit_16(210); +emit_16(275); +emit_16(211); +emit_16(275); +emit_16(210); +emit_16(275); +emit_16(211); +emit_16(276); +emit_16(212); +emit_16(276); +emit_16(211); +emit_16(276); +emit_16(212); +emit_16(277); +emit_16(213); +emit_16(277); +emit_16(212); +emit_16(277); +emit_16(213); +emit_16(278); +emit_16(214); +emit_16(278); +emit_16(213); +emit_16(278); +emit_16(214); +emit_16(279); +emit_16(215); +emit_16(279); +emit_16(214); +emit_16(279); +emit_16(215); +emit_16(280); +emit_16(216); +emit_16(280); +emit_16(215); +emit_16(280); +emit_16(216); +emit_16(281); +emit_16(217); +emit_16(281); +emit_16(216); +emit_16(281); +emit_16(217); +emit_16(282); +emit_16(218); +emit_16(282); +emit_16(217); +emit_16(282); +emit_16(218); +emit_16(283); +emit_16(219); +emit_16(283); +emit_16(218); +emit_16(283); +emit_16(219); +emit_16(284); +emit_16(220); +emit_16(284); +emit_16(219); +emit_16(284); +emit_16(220); +emit_16(285); +emit_16(221); +emit_16(285); +emit_16(220); +emit_16(285); +emit_16(221); +emit_16(286); +emit_16(222); +emit_16(286); +emit_16(221); +emit_16(286); +emit_16(222); +emit_16(287); +emit_16(223); +emit_16(287); +emit_16(222); +emit_16(287); +emit_16(223); +emit_16(288); +emit_16(224); +emit_16(288); +emit_16(223); +emit_16(288); +emit_16(224); +emit_16(289); +emit_16(225); +emit_16(289); +emit_16(224); +emit_16(289); +emit_16(225); +emit_16(290); +emit_16(226); +emit_16(290); +emit_16(225); +emit_16(290); +emit_16(226); +emit_16(291); +emit_16(227); +emit_16(291); +emit_16(226); +emit_16(291); +emit_16(227); +emit_16(292); +emit_16(228); +emit_16(292); +emit_16(227); +emit_16(292); +emit_16(228); +emit_16(293); +emit_16(229); +emit_16(293); +emit_16(228); +emit_16(293); +emit_16(229); +emit_16(294); +emit_16(230); +emit_16(294); +emit_16(229); +emit_16(294); +emit_16(230); +emit_16(295); +emit_16(231); +emit_16(295); +emit_16(230); +emit_16(295); +emit_16(231); +emit_16(296); +emit_16(232); +emit_16(296); +emit_16(231); +emit_16(296); +emit_16(232); +emit_16(297); +emit_16(233); +emit_16(297); +emit_16(232); +emit_16(297); +emit_16(233); +emit_16(298); +emit_16(234); +emit_16(298); +emit_16(233); +emit_16(298); +emit_16(234); +emit_16(299); +emit_16(235); +emit_16(299); +emit_16(234); +emit_16(299); +emit_16(235); +emit_16(300); +emit_16(236); +emit_16(300); +emit_16(235); +emit_16(300); +emit_16(236); +emit_16(301); +emit_16(237); +emit_16(301); +emit_16(236); +emit_16(301); +emit_16(237); +emit_16(302); +emit_16(238); +emit_16(302); +emit_16(237); +emit_16(302); +emit_16(238); +emit_16(303); +emit_16(239); +emit_16(303); +emit_16(238); +emit_16(303); +emit_16(239); +emit_16(304); +emit_16(240); +emit_16(304); +emit_16(239); +emit_16(304); +emit_16(240); +emit_16(305); +emit_16(241); +emit_16(305); +emit_16(240); +emit_16(305); +emit_16(241); +emit_16(306); +emit_16(242); +emit_16(306); +emit_16(241); +emit_16(306); +emit_16(242); +emit_16(307); +emit_16(243); +emit_16(307); +emit_16(242); +emit_16(307); +emit_16(243); +emit_16(308); +emit_16(244); +emit_16(308); +emit_16(243); +emit_16(308); +emit_16(244); +emit_16(309); +emit_16(245); +emit_16(309); +emit_16(244); +emit_16(309); +emit_16(245); +emit_16(310); +emit_16(246); +emit_16(310); +emit_16(245); +emit_16(310); +emit_16(246); +emit_16(311); +emit_16(247); +emit_16(311); +emit_16(246); +emit_16(311); +emit_16(247); +emit_16(312); +emit_16(248); +emit_16(312); +emit_16(247); +emit_16(312); +emit_16(248); +emit_16(313); +emit_16(249); +emit_16(313); +emit_16(248); +emit_16(313); +emit_16(249); +emit_16(314); +emit_16(250); +emit_16(314); +emit_16(249); +emit_16(314); +emit_16(250); +emit_16(315); +emit_16(251); +emit_16(315); +emit_16(250); +emit_16(315); +emit_16(251); +emit_16(316); +emit_16(252); +emit_16(316); +emit_16(251); +emit_16(316); +emit_16(252); +emit_16(317); +emit_16(253); +emit_16(317); +emit_16(252); +emit_16(317); +emit_16(253); +emit_16(318); +emit_16(254); +emit_16(318); +emit_16(253); +emit_16(318); +emit_16(254); +emit_16(319); +emit_16(255); +emit_16(319); +emit_16(254); +emit_16(320); +emit_16(256); +emit_16(321); +emit_16(257); +emit_16(321); +emit_16(256); +emit_16(321); +emit_16(257); +emit_16(322); +emit_16(258); +emit_16(322); +emit_16(257); +emit_16(322); +emit_16(258); +emit_16(323); +emit_16(259); +emit_16(323); +emit_16(258); +emit_16(323); +emit_16(259); +emit_16(324); +emit_16(260); +emit_16(324); +emit_16(259); +emit_16(324); +emit_16(260); +emit_16(325); +emit_16(261); +emit_16(325); +emit_16(260); +emit_16(325); +emit_16(261); +emit_16(326); +emit_16(262); +emit_16(326); +emit_16(261); +emit_16(326); +emit_16(262); +emit_16(327); +emit_16(263); +emit_16(327); +emit_16(262); +emit_16(327); +emit_16(263); +emit_16(328); +emit_16(264); +emit_16(328); +emit_16(263); +emit_16(328); +emit_16(264); +emit_16(329); +emit_16(265); +emit_16(329); +emit_16(264); +emit_16(329); +emit_16(265); +emit_16(330); +emit_16(266); +emit_16(330); +emit_16(265); +emit_16(330); +emit_16(266); +emit_16(331); +emit_16(267); +emit_16(331); +emit_16(266); +emit_16(331); +emit_16(267); +emit_16(332); +emit_16(268); +emit_16(332); +emit_16(267); +emit_16(332); +emit_16(268); +emit_16(333); +emit_16(269); +emit_16(333); +emit_16(268); +emit_16(333); +emit_16(269); +emit_16(334); +emit_16(270); +emit_16(334); +emit_16(269); +emit_16(334); +emit_16(270); +emit_16(335); +emit_16(271); +emit_16(335); +emit_16(270); +emit_16(335); +emit_16(271); +emit_16(336); +emit_16(272); +emit_16(336); +emit_16(271); +emit_16(336); +emit_16(272); +emit_16(337); +emit_16(273); +emit_16(337); +emit_16(272); +emit_16(337); +emit_16(273); +emit_16(338); +emit_16(274); +emit_16(338); +emit_16(273); +emit_16(338); +emit_16(274); +emit_16(339); +emit_16(275); +emit_16(339); +emit_16(274); +emit_16(339); +emit_16(275); +emit_16(340); +emit_16(276); +emit_16(340); +emit_16(275); +emit_16(340); +emit_16(276); +emit_16(341); +emit_16(277); +emit_16(341); +emit_16(276); +emit_16(341); +emit_16(277); +emit_16(342); +emit_16(278); +emit_16(342); +emit_16(277); +emit_16(342); +emit_16(278); +emit_16(343); +emit_16(279); +emit_16(343); +emit_16(278); +emit_16(343); +emit_16(279); +emit_16(344); +emit_16(280); +emit_16(344); +emit_16(279); +emit_16(344); +emit_16(280); +emit_16(345); +emit_16(281); +emit_16(345); +emit_16(280); +emit_16(345); +emit_16(281); +emit_16(346); +emit_16(282); +emit_16(346); +emit_16(281); +emit_16(346); +emit_16(282); +emit_16(347); +emit_16(283); +emit_16(347); +emit_16(282); +emit_16(347); +emit_16(283); +emit_16(348); +emit_16(284); +emit_16(348); +emit_16(283); +emit_16(348); +emit_16(284); +emit_16(349); +emit_16(285); +emit_16(349); +emit_16(284); +emit_16(349); +emit_16(285); +emit_16(350); +emit_16(286); +emit_16(350); +emit_16(285); +emit_16(350); +emit_16(286); +emit_16(351); +emit_16(287); +emit_16(351); +emit_16(286); +emit_16(351); +emit_16(287); +emit_16(352); +emit_16(288); +emit_16(352); +emit_16(287); +emit_16(352); +emit_16(288); +emit_16(353); +emit_16(289); +emit_16(353); +emit_16(288); +emit_16(353); +emit_16(289); +emit_16(354); +emit_16(290); +emit_16(354); +emit_16(289); +emit_16(354); +emit_16(290); +emit_16(355); +emit_16(291); +emit_16(355); +emit_16(290); +emit_16(355); +emit_16(291); +emit_16(356); +emit_16(292); +emit_16(356); +emit_16(291); +emit_16(356); +emit_16(292); +emit_16(357); +emit_16(293); +emit_16(357); +emit_16(292); +emit_16(357); +emit_16(293); +emit_16(358); +emit_16(294); +emit_16(358); +emit_16(293); +emit_16(358); +emit_16(294); +emit_16(359); +emit_16(295); +emit_16(359); +emit_16(294); +emit_16(359); +emit_16(295); +emit_16(360); +emit_16(296); +emit_16(360); +emit_16(295); +emit_16(360); +emit_16(296); +emit_16(361); +emit_16(297); +emit_16(361); +emit_16(296); +emit_16(361); +emit_16(297); +emit_16(362); +emit_16(298); +emit_16(362); +emit_16(297); +emit_16(362); +emit_16(298); +emit_16(363); +emit_16(299); +emit_16(363); +emit_16(298); +emit_16(363); +emit_16(299); +emit_16(364); +emit_16(300); +emit_16(364); +emit_16(299); +emit_16(364); +emit_16(300); +emit_16(365); +emit_16(301); +emit_16(365); +emit_16(300); +emit_16(365); +emit_16(301); +emit_16(366); +emit_16(302); +emit_16(366); +emit_16(301); +emit_16(366); +emit_16(302); +emit_16(367); +emit_16(303); +emit_16(367); +emit_16(302); +emit_16(367); +emit_16(303); +emit_16(368); +emit_16(304); +emit_16(368); +emit_16(303); +emit_16(368); +emit_16(304); +emit_16(369); +emit_16(305); +emit_16(369); +emit_16(304); +emit_16(369); +emit_16(305); +emit_16(370); +emit_16(306); +emit_16(370); +emit_16(305); +emit_16(370); +emit_16(306); +emit_16(371); +emit_16(307); +emit_16(371); +emit_16(306); +emit_16(371); +emit_16(307); +emit_16(372); +emit_16(308); +emit_16(372); +emit_16(307); +emit_16(372); +emit_16(308); +emit_16(373); +emit_16(309); +emit_16(373); +emit_16(308); +emit_16(373); +emit_16(309); +emit_16(374); +emit_16(310); +emit_16(374); +emit_16(309); +emit_16(374); +emit_16(310); +emit_16(375); +emit_16(311); +emit_16(375); +emit_16(310); +emit_16(375); +emit_16(311); +emit_16(376); +emit_16(312); +emit_16(376); +emit_16(311); +emit_16(376); +emit_16(312); +emit_16(377); +emit_16(313); +emit_16(377); +emit_16(312); +emit_16(377); +emit_16(313); +emit_16(378); +emit_16(314); +emit_16(378); +emit_16(313); +emit_16(378); +emit_16(314); +emit_16(379); +emit_16(315); +emit_16(379); +emit_16(314); +emit_16(379); +emit_16(315); +emit_16(380); +emit_16(316); +emit_16(380); +emit_16(315); +emit_16(380); +emit_16(316); +emit_16(381); +emit_16(317); +emit_16(381); +emit_16(316); +emit_16(381); +emit_16(317); +emit_16(382); +emit_16(318); +emit_16(382); +emit_16(317); +emit_16(382); +emit_16(318); +emit_16(383); +emit_16(319); +emit_16(383); +emit_16(318); +emit_16(384); +emit_16(320); +emit_16(385); +emit_16(321); +emit_16(385); +emit_16(320); +emit_16(385); +emit_16(321); +emit_16(386); +emit_16(322); +emit_16(386); +emit_16(321); +emit_16(386); +emit_16(322); +emit_16(387); +emit_16(323); +emit_16(387); +emit_16(322); +emit_16(387); +emit_16(323); +emit_16(388); +emit_16(324); +emit_16(388); +emit_16(323); +emit_16(388); +emit_16(324); +emit_16(389); +emit_16(325); +emit_16(389); +emit_16(324); +emit_16(389); +emit_16(325); +emit_16(390); +emit_16(326); +emit_16(390); +emit_16(325); +emit_16(390); +emit_16(326); +emit_16(391); +emit_16(327); +emit_16(391); +emit_16(326); +emit_16(391); +emit_16(327); +emit_16(392); +emit_16(328); +emit_16(392); +emit_16(327); +emit_16(392); +emit_16(328); +emit_16(393); +emit_16(329); +emit_16(393); +emit_16(328); +emit_16(393); +emit_16(329); +emit_16(394); +emit_16(330); +emit_16(394); +emit_16(329); +emit_16(394); +emit_16(330); +emit_16(395); +emit_16(331); +emit_16(395); +emit_16(330); +emit_16(395); +emit_16(331); +emit_16(396); +emit_16(332); +emit_16(396); +emit_16(331); +emit_16(396); +emit_16(332); +emit_16(397); +emit_16(333); +emit_16(397); +emit_16(332); +emit_16(397); +emit_16(333); +emit_16(398); +emit_16(334); +emit_16(398); +emit_16(333); +emit_16(398); +emit_16(334); +emit_16(399); +emit_16(335); +emit_16(399); +emit_16(334); +emit_16(399); +emit_16(335); +emit_16(400); +emit_16(336); +emit_16(400); +emit_16(335); +emit_16(400); +emit_16(336); +emit_16(401); +emit_16(337); +emit_16(401); +emit_16(336); +emit_16(401); +emit_16(337); +emit_16(402); +emit_16(338); +emit_16(402); +emit_16(337); +emit_16(402); +emit_16(338); +emit_16(403); +emit_16(339); +emit_16(403); +emit_16(338); +emit_16(403); +emit_16(339); +emit_16(404); +emit_16(340); +emit_16(404); +emit_16(339); +emit_16(404); +emit_16(340); +emit_16(405); +emit_16(341); +emit_16(405); +emit_16(340); +emit_16(405); +emit_16(341); +emit_16(406); +emit_16(342); +emit_16(406); +emit_16(341); +emit_16(406); +emit_16(342); +emit_16(407); +emit_16(343); +emit_16(407); +emit_16(342); +emit_16(407); +emit_16(343); +emit_16(408); +emit_16(344); +emit_16(408); +emit_16(343); +emit_16(408); +emit_16(344); +emit_16(409); +emit_16(345); +emit_16(409); +emit_16(344); +emit_16(409); +emit_16(345); +emit_16(410); +emit_16(346); +emit_16(410); +emit_16(345); +emit_16(410); +emit_16(346); +emit_16(411); +emit_16(347); +emit_16(411); +emit_16(346); +emit_16(411); +emit_16(347); +emit_16(412); +emit_16(348); +emit_16(412); +emit_16(347); +emit_16(412); +emit_16(348); +emit_16(413); +emit_16(349); +emit_16(413); +emit_16(348); +emit_16(413); +emit_16(349); +emit_16(414); +emit_16(350); +emit_16(414); +emit_16(349); +emit_16(414); +emit_16(350); +emit_16(415); +emit_16(351); +emit_16(415); +emit_16(350); +emit_16(415); +emit_16(351); +emit_16(416); +emit_16(352); +emit_16(416); +emit_16(351); +emit_16(416); +emit_16(352); +emit_16(417); +emit_16(353); +emit_16(417); +emit_16(352); +emit_16(417); +emit_16(353); +emit_16(418); +emit_16(354); +emit_16(418); +emit_16(353); +emit_16(418); +emit_16(354); +emit_16(419); +emit_16(355); +emit_16(419); +emit_16(354); +emit_16(419); +emit_16(355); +emit_16(420); +emit_16(356); +emit_16(420); +emit_16(355); +emit_16(420); +emit_16(356); +emit_16(421); +emit_16(357); +emit_16(421); +emit_16(356); +emit_16(421); +emit_16(357); +emit_16(422); +emit_16(358); +emit_16(422); +emit_16(357); +emit_16(422); +emit_16(358); +emit_16(423); +emit_16(359); +emit_16(423); +emit_16(358); +emit_16(423); +emit_16(359); +emit_16(424); +emit_16(360); +emit_16(424); +emit_16(359); +emit_16(424); +emit_16(360); +emit_16(425); +emit_16(361); +emit_16(425); +emit_16(360); +emit_16(425); +emit_16(361); +emit_16(426); +emit_16(362); +emit_16(426); +emit_16(361); +emit_16(426); +emit_16(362); +emit_16(427); +emit_16(363); +emit_16(427); +emit_16(362); +emit_16(427); +emit_16(363); +emit_16(428); +emit_16(364); +emit_16(428); +emit_16(363); +emit_16(428); +emit_16(364); +emit_16(429); +emit_16(365); +emit_16(429); +emit_16(364); +emit_16(429); +emit_16(365); +emit_16(430); +emit_16(366); +emit_16(430); +emit_16(365); +emit_16(430); +emit_16(366); +emit_16(431); +emit_16(367); +emit_16(431); +emit_16(366); +emit_16(431); +emit_16(367); +emit_16(432); +emit_16(368); +emit_16(432); +emit_16(367); +emit_16(432); +emit_16(368); +emit_16(433); +emit_16(369); +emit_16(433); +emit_16(368); +emit_16(433); +emit_16(369); +emit_16(434); +emit_16(370); +emit_16(434); +emit_16(369); +emit_16(434); +emit_16(370); +emit_16(435); +emit_16(371); +emit_16(435); +emit_16(370); +emit_16(435); +emit_16(371); +emit_16(436); +emit_16(372); +emit_16(436); +emit_16(371); +emit_16(436); +emit_16(372); +emit_16(437); +emit_16(373); +emit_16(437); +emit_16(372); +emit_16(437); +emit_16(373); +emit_16(438); +emit_16(374); +emit_16(438); +emit_16(373); +emit_16(438); +emit_16(374); +emit_16(439); +emit_16(375); +emit_16(439); +emit_16(374); +emit_16(439); +emit_16(375); +emit_16(440); +emit_16(376); +emit_16(440); +emit_16(375); +emit_16(440); +emit_16(376); +emit_16(441); +emit_16(377); +emit_16(441); +emit_16(376); +emit_16(441); +emit_16(377); +emit_16(442); +emit_16(378); +emit_16(442); +emit_16(377); +emit_16(442); +emit_16(378); +emit_16(443); +emit_16(379); +emit_16(443); +emit_16(378); +emit_16(443); +emit_16(379); +emit_16(444); +emit_16(380); +emit_16(444); +emit_16(379); +emit_16(444); +emit_16(380); +emit_16(445); +emit_16(381); +emit_16(445); +emit_16(380); +emit_16(445); +emit_16(381); +emit_16(446); +emit_16(382); +emit_16(446); +emit_16(381); +emit_16(446); +emit_16(382); +emit_16(447); +emit_16(383); +emit_16(447); +emit_16(382); +emit_16(448); +emit_16(384); +emit_16(449); +emit_16(385); +emit_16(449); +emit_16(384); +emit_16(449); +emit_16(385); +emit_16(450); +emit_16(386); +emit_16(450); +emit_16(385); +emit_16(450); +emit_16(386); +emit_16(451); +emit_16(387); +emit_16(451); +emit_16(386); +emit_16(451); +emit_16(387); +emit_16(452); +emit_16(388); +emit_16(452); +emit_16(387); +emit_16(452); +emit_16(388); +emit_16(453); +emit_16(389); +emit_16(453); +emit_16(388); +emit_16(453); +emit_16(389); +emit_16(454); +emit_16(390); +emit_16(454); +emit_16(389); +emit_16(454); +emit_16(390); +emit_16(455); +emit_16(391); +emit_16(455); +emit_16(390); +emit_16(455); +emit_16(391); +emit_16(456); +emit_16(392); +emit_16(456); +emit_16(391); +emit_16(456); +emit_16(392); +emit_16(457); +emit_16(393); +emit_16(457); +emit_16(392); +emit_16(457); +emit_16(393); +emit_16(458); +emit_16(394); +emit_16(458); +emit_16(393); +emit_16(458); +emit_16(394); +emit_16(459); +emit_16(395); +emit_16(459); +emit_16(394); +emit_16(459); +emit_16(395); +emit_16(460); +emit_16(396); +emit_16(460); +emit_16(395); +emit_16(460); +emit_16(396); +emit_16(461); +emit_16(397); +emit_16(461); +emit_16(396); +emit_16(461); +emit_16(397); +emit_16(462); +emit_16(398); +emit_16(462); +emit_16(397); +emit_16(462); +emit_16(398); +emit_16(463); +emit_16(399); +emit_16(463); +emit_16(398); +emit_16(463); +emit_16(399); +emit_16(464); +emit_16(400); +emit_16(464); +emit_16(399); +emit_16(464); +emit_16(400); +emit_16(465); +emit_16(401); +emit_16(465); +emit_16(400); +emit_16(465); +emit_16(401); +emit_16(466); +emit_16(402); +emit_16(466); +emit_16(401); +emit_16(466); +emit_16(402); +emit_16(467); +emit_16(403); +emit_16(467); +emit_16(402); +emit_16(467); +emit_16(403); +emit_16(468); +emit_16(404); +emit_16(468); +emit_16(403); +emit_16(468); +emit_16(404); +emit_16(469); +emit_16(405); +emit_16(469); +emit_16(404); +emit_16(469); +emit_16(405); +emit_16(470); +emit_16(406); +emit_16(470); +emit_16(405); +emit_16(470); +emit_16(406); +emit_16(471); +emit_16(407); +emit_16(471); +emit_16(406); +emit_16(471); +emit_16(407); +emit_16(472); +emit_16(408); +emit_16(472); +emit_16(407); +emit_16(472); +emit_16(408); +emit_16(473); +emit_16(409); +emit_16(473); +emit_16(408); +emit_16(473); +emit_16(409); +emit_16(474); +emit_16(410); +emit_16(474); +emit_16(409); +emit_16(474); +emit_16(410); +emit_16(475); +emit_16(411); +emit_16(475); +emit_16(410); +emit_16(475); +emit_16(411); +emit_16(476); +emit_16(412); +emit_16(476); +emit_16(411); +emit_16(476); +emit_16(412); +emit_16(477); +emit_16(413); +emit_16(477); +emit_16(412); +emit_16(477); +emit_16(413); +emit_16(478); +emit_16(414); +emit_16(478); +emit_16(413); +emit_16(478); +emit_16(414); +emit_16(479); +emit_16(415); +emit_16(479); +emit_16(414); +emit_16(479); +emit_16(415); +emit_16(480); +emit_16(416); +emit_16(480); +emit_16(415); +emit_16(480); +emit_16(416); +emit_16(481); +emit_16(417); +emit_16(481); +emit_16(416); +emit_16(481); +emit_16(417); +emit_16(482); +emit_16(418); +emit_16(482); +emit_16(417); +emit_16(482); +emit_16(418); +emit_16(483); +emit_16(419); +emit_16(483); +emit_16(418); +emit_16(483); +emit_16(419); +emit_16(484); +emit_16(420); +emit_16(484); +emit_16(419); +emit_16(484); +emit_16(420); +emit_16(485); +emit_16(421); +emit_16(485); +emit_16(420); +emit_16(485); +emit_16(421); +emit_16(486); +emit_16(422); +emit_16(486); +emit_16(421); +emit_16(486); +emit_16(422); +emit_16(487); +emit_16(423); +emit_16(487); +emit_16(422); +emit_16(487); +emit_16(423); +emit_16(488); +emit_16(424); +emit_16(488); +emit_16(423); +emit_16(488); +emit_16(424); +emit_16(489); +emit_16(425); +emit_16(489); +emit_16(424); +emit_16(489); +emit_16(425); +emit_16(490); +emit_16(426); +emit_16(490); +emit_16(425); +emit_16(490); +emit_16(426); +emit_16(491); +emit_16(427); +emit_16(491); +emit_16(426); +emit_16(491); +emit_16(427); +emit_16(492); +emit_16(428); +emit_16(492); +emit_16(427); +emit_16(492); +emit_16(428); +emit_16(493); +emit_16(429); +emit_16(493); +emit_16(428); +emit_16(493); +emit_16(429); +emit_16(494); +emit_16(430); +emit_16(494); +emit_16(429); +emit_16(494); +emit_16(430); +emit_16(495); +emit_16(431); +emit_16(495); +emit_16(430); +emit_16(495); +emit_16(431); +emit_16(496); +emit_16(432); +emit_16(496); +emit_16(431); +emit_16(496); +emit_16(432); +emit_16(497); +emit_16(433); +emit_16(497); +emit_16(432); +emit_16(497); +emit_16(433); +emit_16(498); +emit_16(434); +emit_16(498); +emit_16(433); +emit_16(498); +emit_16(434); +emit_16(499); +emit_16(435); +emit_16(499); +emit_16(434); +emit_16(499); +emit_16(435); +emit_16(500); +emit_16(436); +emit_16(500); +emit_16(435); +emit_16(500); +emit_16(436); +emit_16(501); +emit_16(437); +emit_16(501); +emit_16(436); +emit_16(501); +emit_16(437); +emit_16(502); +emit_16(438); +emit_16(502); +emit_16(437); +emit_16(502); +emit_16(438); +emit_16(503); +emit_16(439); +emit_16(503); +emit_16(438); +emit_16(503); +emit_16(439); +emit_16(504); +emit_16(440); +emit_16(504); +emit_16(439); +emit_16(504); +emit_16(440); +emit_16(505); +emit_16(441); +emit_16(505); +emit_16(440); +emit_16(505); +emit_16(441); +emit_16(506); +emit_16(442); +emit_16(506); +emit_16(441); +emit_16(506); +emit_16(442); +emit_16(507); +emit_16(443); +emit_16(507); +emit_16(442); +emit_16(507); +emit_16(443); +emit_16(508); +emit_16(444); +emit_16(508); +emit_16(443); +emit_16(508); +emit_16(444); +emit_16(509); +emit_16(445); +emit_16(509); +emit_16(444); +emit_16(509); +emit_16(445); +emit_16(510); +emit_16(446); +emit_16(510); +emit_16(445); +emit_16(510); +emit_16(446); +emit_16(511); +emit_16(447); +emit_16(511); +emit_16(446); +emit_16(512); +emit_16(448); +emit_16(513); +emit_16(449); +emit_16(513); +emit_16(448); +emit_16(513); +emit_16(449); +emit_16(514); +emit_16(450); +emit_16(514); +emit_16(449); +emit_16(514); +emit_16(450); +emit_16(515); +emit_16(451); +emit_16(515); +emit_16(450); +emit_16(515); +emit_16(451); +emit_16(516); +emit_16(452); +emit_16(516); +emit_16(451); +emit_16(516); +emit_16(452); +emit_16(517); +emit_16(453); +emit_16(517); +emit_16(452); +emit_16(517); +emit_16(453); +emit_16(518); +emit_16(454); +emit_16(518); +emit_16(453); +emit_16(518); +emit_16(454); +emit_16(519); +emit_16(455); +emit_16(519); +emit_16(454); +emit_16(519); +emit_16(455); +emit_16(520); +emit_16(456); +emit_16(520); +emit_16(455); +emit_16(520); +emit_16(456); +emit_16(521); +emit_16(457); +emit_16(521); +emit_16(456); +emit_16(521); +emit_16(457); +emit_16(522); +emit_16(458); +emit_16(522); +emit_16(457); +emit_16(522); +emit_16(458); +emit_16(523); +emit_16(459); +emit_16(523); +emit_16(458); +emit_16(523); +emit_16(459); +emit_16(524); +emit_16(460); +emit_16(524); +emit_16(459); +emit_16(524); +emit_16(460); +emit_16(525); +emit_16(461); +emit_16(525); +emit_16(460); +emit_16(525); +emit_16(461); +emit_16(526); +emit_16(462); +emit_16(526); +emit_16(461); +emit_16(526); +emit_16(462); +emit_16(527); +emit_16(463); +emit_16(527); +emit_16(462); +emit_16(527); +emit_16(463); +emit_16(528); +emit_16(464); +emit_16(528); +emit_16(463); +emit_16(528); +emit_16(464); +emit_16(529); +emit_16(465); +emit_16(529); +emit_16(464); +emit_16(529); +emit_16(465); +emit_16(530); +emit_16(466); +emit_16(530); +emit_16(465); +emit_16(530); +emit_16(466); +emit_16(531); +emit_16(467); +emit_16(531); +emit_16(466); +emit_16(531); +emit_16(467); +emit_16(532); +emit_16(468); +emit_16(532); +emit_16(467); +emit_16(532); +emit_16(468); +emit_16(533); +emit_16(469); +emit_16(533); +emit_16(468); +emit_16(533); +emit_16(469); +emit_16(534); +emit_16(470); +emit_16(534); +emit_16(469); +emit_16(534); +emit_16(470); +emit_16(535); +emit_16(471); +emit_16(535); +emit_16(470); +emit_16(535); +emit_16(471); +emit_16(536); +emit_16(472); +emit_16(536); +emit_16(471); +emit_16(536); +emit_16(472); +emit_16(537); +emit_16(473); +emit_16(537); +emit_16(472); +emit_16(537); +emit_16(473); +emit_16(538); +emit_16(474); +emit_16(538); +emit_16(473); +emit_16(538); +emit_16(474); +emit_16(539); +emit_16(475); +emit_16(539); +emit_16(474); +emit_16(539); +emit_16(475); +emit_16(540); +emit_16(476); +emit_16(540); +emit_16(475); +emit_16(540); +emit_16(476); +emit_16(541); +emit_16(477); +emit_16(541); +emit_16(476); +emit_16(541); +emit_16(477); +emit_16(542); +emit_16(478); +emit_16(542); +emit_16(477); +emit_16(542); +emit_16(478); +emit_16(543); +emit_16(479); +emit_16(543); +emit_16(478); +emit_16(543); +emit_16(479); +emit_16(544); +emit_16(480); +emit_16(544); +emit_16(479); +emit_16(544); +emit_16(480); +emit_16(545); +emit_16(481); +emit_16(545); +emit_16(480); +emit_16(545); +emit_16(481); +emit_16(546); +emit_16(482); +emit_16(546); +emit_16(481); +emit_16(546); +emit_16(482); +emit_16(547); +emit_16(483); +emit_16(547); +emit_16(482); +emit_16(547); +emit_16(483); +emit_16(548); +emit_16(484); +emit_16(548); +emit_16(483); +emit_16(548); +emit_16(484); +emit_16(549); +emit_16(485); +emit_16(549); +emit_16(484); +emit_16(549); +emit_16(485); +emit_16(550); +emit_16(486); +emit_16(550); +emit_16(485); +emit_16(550); +emit_16(486); +emit_16(551); +emit_16(487); +emit_16(551); +emit_16(486); +emit_16(551); +emit_16(487); +emit_16(552); +emit_16(488); +emit_16(552); +emit_16(487); +emit_16(552); +emit_16(488); +emit_16(553); +emit_16(489); +emit_16(553); +emit_16(488); +emit_16(553); +emit_16(489); +emit_16(554); +emit_16(490); +emit_16(554); +emit_16(489); +emit_16(554); +emit_16(490); +emit_16(555); +emit_16(491); +emit_16(555); +emit_16(490); +emit_16(555); +emit_16(491); +emit_16(556); +emit_16(492); +emit_16(556); +emit_16(491); +emit_16(556); +emit_16(492); +emit_16(557); +emit_16(493); +emit_16(557); +emit_16(492); +emit_16(557); +emit_16(493); +emit_16(558); +emit_16(494); +emit_16(558); +emit_16(493); +emit_16(558); +emit_16(494); +emit_16(559); +emit_16(495); +emit_16(559); +emit_16(494); +emit_16(559); +emit_16(495); +emit_16(560); +emit_16(496); +emit_16(560); +emit_16(495); +emit_16(560); +emit_16(496); +emit_16(561); +emit_16(497); +emit_16(561); +emit_16(496); +emit_16(561); +emit_16(497); +emit_16(562); +emit_16(498); +emit_16(562); +emit_16(497); +emit_16(562); +emit_16(498); +emit_16(563); +emit_16(499); +emit_16(563); +emit_16(498); +emit_16(563); +emit_16(499); +emit_16(564); +emit_16(500); +emit_16(564); +emit_16(499); +emit_16(564); +emit_16(500); +emit_16(565); +emit_16(501); +emit_16(565); +emit_16(500); +emit_16(565); +emit_16(501); +emit_16(566); +emit_16(502); +emit_16(566); +emit_16(501); +emit_16(566); +emit_16(502); +emit_16(567); +emit_16(503); +emit_16(567); +emit_16(502); +emit_16(567); +emit_16(503); +emit_16(568); +emit_16(504); +emit_16(568); +emit_16(503); +emit_16(568); +emit_16(504); +emit_16(569); +emit_16(505); +emit_16(569); +emit_16(504); +emit_16(569); +emit_16(505); +emit_16(570); +emit_16(506); +emit_16(570); +emit_16(505); +emit_16(570); +emit_16(506); +emit_16(571); +emit_16(507); +emit_16(571); +emit_16(506); +emit_16(571); +emit_16(507); +emit_16(572); +emit_16(508); +emit_16(572); +emit_16(507); +emit_16(572); +emit_16(508); +emit_16(573); +emit_16(509); +emit_16(573); +emit_16(508); +emit_16(573); +emit_16(509); +emit_16(574); +emit_16(510); +emit_16(574); +emit_16(509); +emit_16(574); +emit_16(510); +emit_16(575); +emit_16(511); +emit_16(575); +emit_16(510); +emit_16(576); +emit_16(512); +emit_16(577); +emit_16(513); +emit_16(577); +emit_16(512); +emit_16(577); +emit_16(513); +emit_16(578); +emit_16(514); +emit_16(578); +emit_16(513); +emit_16(578); +emit_16(514); +emit_16(579); +emit_16(515); +emit_16(579); +emit_16(514); +emit_16(579); +emit_16(515); +emit_16(580); +emit_16(516); +emit_16(580); +emit_16(515); +emit_16(580); +emit_16(516); +emit_16(581); +emit_16(517); +emit_16(581); +emit_16(516); +emit_16(581); +emit_16(517); +emit_16(582); +emit_16(518); +emit_16(582); +emit_16(517); +emit_16(582); +emit_16(518); +emit_16(583); +emit_16(519); +emit_16(583); +emit_16(518); +emit_16(583); +emit_16(519); +emit_16(584); +emit_16(520); +emit_16(584); +emit_16(519); +emit_16(584); +emit_16(520); +emit_16(585); +emit_16(521); +emit_16(585); +emit_16(520); +emit_16(585); +emit_16(521); +emit_16(586); +emit_16(522); +emit_16(586); +emit_16(521); +emit_16(586); +emit_16(522); +emit_16(587); +emit_16(523); +emit_16(587); +emit_16(522); +emit_16(587); +emit_16(523); +emit_16(588); +emit_16(524); +emit_16(588); +emit_16(523); +emit_16(588); +emit_16(524); +emit_16(589); +emit_16(525); +emit_16(589); +emit_16(524); +emit_16(589); +emit_16(525); +emit_16(590); +emit_16(526); +emit_16(590); +emit_16(525); +emit_16(590); +emit_16(526); +emit_16(591); +emit_16(527); +emit_16(591); +emit_16(526); +emit_16(591); +emit_16(527); +emit_16(592); +emit_16(528); +emit_16(592); +emit_16(527); +emit_16(592); +emit_16(528); +emit_16(593); +emit_16(529); +emit_16(593); +emit_16(528); +emit_16(593); +emit_16(529); +emit_16(594); +emit_16(530); +emit_16(594); +emit_16(529); +emit_16(594); +emit_16(530); +emit_16(595); +emit_16(531); +emit_16(595); +emit_16(530); +emit_16(595); +emit_16(531); +emit_16(596); +emit_16(532); +emit_16(596); +emit_16(531); +emit_16(596); +emit_16(532); +emit_16(597); +emit_16(533); +emit_16(597); +emit_16(532); +emit_16(597); +emit_16(533); +emit_16(598); +emit_16(534); +emit_16(598); +emit_16(533); +emit_16(598); +emit_16(534); +emit_16(599); +emit_16(535); +emit_16(599); +emit_16(534); +emit_16(599); +emit_16(535); +emit_16(600); +emit_16(536); +emit_16(600); +emit_16(535); +emit_16(600); +emit_16(536); +emit_16(601); +emit_16(537); +emit_16(601); +emit_16(536); +emit_16(601); +emit_16(537); +emit_16(602); +emit_16(538); +emit_16(602); +emit_16(537); +emit_16(602); +emit_16(538); +emit_16(603); +emit_16(539); +emit_16(603); +emit_16(538); +emit_16(603); +emit_16(539); +emit_16(604); +emit_16(540); +emit_16(604); +emit_16(539); +emit_16(604); +emit_16(540); +emit_16(605); +emit_16(541); +emit_16(605); +emit_16(540); +emit_16(605); +emit_16(541); +emit_16(606); +emit_16(542); +emit_16(606); +emit_16(541); +emit_16(606); +emit_16(542); +emit_16(607); +emit_16(543); +emit_16(607); +emit_16(542); +emit_16(607); +emit_16(543); +emit_16(608); +emit_16(544); +emit_16(608); +emit_16(543); +emit_16(608); +emit_16(544); +emit_16(609); +emit_16(545); +emit_16(609); +emit_16(544); +emit_16(609); +emit_16(545); +emit_16(610); +emit_16(546); +emit_16(610); +emit_16(545); +emit_16(610); +emit_16(546); +emit_16(611); +emit_16(547); +emit_16(611); +emit_16(546); +emit_16(611); +emit_16(547); +emit_16(612); +emit_16(548); +emit_16(612); +emit_16(547); +emit_16(612); +emit_16(548); +emit_16(613); +emit_16(549); +emit_16(613); +emit_16(548); +emit_16(613); +emit_16(549); +emit_16(614); +emit_16(550); +emit_16(614); +emit_16(549); +emit_16(614); +emit_16(550); +emit_16(615); +emit_16(551); +emit_16(615); +emit_16(550); +emit_16(615); +emit_16(551); +emit_16(616); +emit_16(552); +emit_16(616); +emit_16(551); +emit_16(616); +emit_16(552); +emit_16(617); +emit_16(553); +emit_16(617); +emit_16(552); +emit_16(617); +emit_16(553); +emit_16(618); +emit_16(554); +emit_16(618); +emit_16(553); +emit_16(618); +emit_16(554); +emit_16(619); +emit_16(555); +emit_16(619); +emit_16(554); +emit_16(619); +emit_16(555); +emit_16(620); +emit_16(556); +emit_16(620); +emit_16(555); +emit_16(620); +emit_16(556); +emit_16(621); +emit_16(557); +emit_16(621); +emit_16(556); +emit_16(621); +emit_16(557); +emit_16(622); +emit_16(558); +emit_16(622); +emit_16(557); +emit_16(622); +emit_16(558); +emit_16(623); +emit_16(559); +emit_16(623); +emit_16(558); +emit_16(623); +emit_16(559); +emit_16(624); +emit_16(560); +emit_16(624); +emit_16(559); +emit_16(624); +emit_16(560); +emit_16(625); +emit_16(561); +emit_16(625); +emit_16(560); +emit_16(625); +emit_16(561); +emit_16(626); +emit_16(562); +emit_16(626); +emit_16(561); +emit_16(626); +emit_16(562); +emit_16(627); +emit_16(563); +emit_16(627); +emit_16(562); +emit_16(627); +emit_16(563); +emit_16(628); +emit_16(564); +emit_16(628); +emit_16(563); +emit_16(628); +emit_16(564); +emit_16(629); +emit_16(565); +emit_16(629); +emit_16(564); +emit_16(629); +emit_16(565); +emit_16(630); +emit_16(566); +emit_16(630); +emit_16(565); +emit_16(630); +emit_16(566); +emit_16(631); +emit_16(567); +emit_16(631); +emit_16(566); +emit_16(631); +emit_16(567); +emit_16(632); +emit_16(568); +emit_16(632); +emit_16(567); +emit_16(632); +emit_16(568); +emit_16(633); +emit_16(569); +emit_16(633); +emit_16(568); +emit_16(633); +emit_16(569); +emit_16(634); +emit_16(570); +emit_16(634); +emit_16(569); +emit_16(634); +emit_16(570); +emit_16(635); +emit_16(571); +emit_16(635); +emit_16(570); +emit_16(635); +emit_16(571); +emit_16(636); +emit_16(572); +emit_16(636); +emit_16(571); +emit_16(636); +emit_16(572); +emit_16(637); +emit_16(573); +emit_16(637); +emit_16(572); +emit_16(637); +emit_16(573); +emit_16(638); +emit_16(574); +emit_16(638); +emit_16(573); +emit_16(638); +emit_16(574); +emit_16(639); +emit_16(575); +emit_16(639); +emit_16(574); +emit_16(640); +emit_16(576); +emit_16(641); +emit_16(577); +emit_16(641); +emit_16(576); +emit_16(641); +emit_16(577); +emit_16(642); +emit_16(578); +emit_16(642); +emit_16(577); +emit_16(642); +emit_16(578); +emit_16(643); +emit_16(579); +emit_16(643); +emit_16(578); +emit_16(643); +emit_16(579); +emit_16(644); +emit_16(580); +emit_16(644); +emit_16(579); +emit_16(644); +emit_16(580); +emit_16(645); +emit_16(581); +emit_16(645); +emit_16(580); +emit_16(645); +emit_16(581); +emit_16(646); +emit_16(582); +emit_16(646); +emit_16(581); +emit_16(646); +emit_16(582); +emit_16(647); +emit_16(583); +emit_16(647); +emit_16(582); +emit_16(647); +emit_16(583); +emit_16(648); +emit_16(584); +emit_16(648); +emit_16(583); +emit_16(648); +emit_16(584); +emit_16(649); +emit_16(585); +emit_16(649); +emit_16(584); +emit_16(649); +emit_16(585); +emit_16(650); +emit_16(586); +emit_16(650); +emit_16(585); +emit_16(650); +emit_16(586); +emit_16(651); +emit_16(587); +emit_16(651); +emit_16(586); +emit_16(651); +emit_16(587); +emit_16(652); +emit_16(588); +emit_16(652); +emit_16(587); +emit_16(652); +emit_16(588); +emit_16(653); +emit_16(589); +emit_16(653); +emit_16(588); +emit_16(653); +emit_16(589); +emit_16(654); +emit_16(590); +emit_16(654); +emit_16(589); +emit_16(654); +emit_16(590); +emit_16(655); +emit_16(591); +emit_16(655); +emit_16(590); +emit_16(655); +emit_16(591); +emit_16(656); +emit_16(592); +emit_16(656); +emit_16(591); +emit_16(656); +emit_16(592); +emit_16(657); +emit_16(593); +emit_16(657); +emit_16(592); +emit_16(657); +emit_16(593); +emit_16(658); +emit_16(594); +emit_16(658); +emit_16(593); +emit_16(658); +emit_16(594); +emit_16(659); +emit_16(595); +emit_16(659); +emit_16(594); +emit_16(659); +emit_16(595); +emit_16(660); +emit_16(596); +emit_16(660); +emit_16(595); +emit_16(660); +emit_16(596); +emit_16(661); +emit_16(597); +emit_16(661); +emit_16(596); +emit_16(661); +emit_16(597); +emit_16(662); +emit_16(598); +emit_16(662); +emit_16(597); +emit_16(662); +emit_16(598); +emit_16(663); +emit_16(599); +emit_16(663); +emit_16(598); +emit_16(663); +emit_16(599); +emit_16(664); +emit_16(600); +emit_16(664); +emit_16(599); +emit_16(664); +emit_16(600); +emit_16(665); +emit_16(601); +emit_16(665); +emit_16(600); +emit_16(665); +emit_16(601); +emit_16(666); +emit_16(602); +emit_16(666); +emit_16(601); +emit_16(666); +emit_16(602); +emit_16(667); +emit_16(603); +emit_16(667); +emit_16(602); +emit_16(667); +emit_16(603); +emit_16(668); +emit_16(604); +emit_16(668); +emit_16(603); +emit_16(668); +emit_16(604); +emit_16(669); +emit_16(605); +emit_16(669); +emit_16(604); +emit_16(669); +emit_16(605); +emit_16(670); +emit_16(606); +emit_16(670); +emit_16(605); +emit_16(670); +emit_16(606); +emit_16(671); +emit_16(607); +emit_16(671); +emit_16(606); +emit_16(671); +emit_16(607); +emit_16(672); +emit_16(608); +emit_16(672); +emit_16(607); +emit_16(672); +emit_16(608); +emit_16(673); +emit_16(609); +emit_16(673); +emit_16(608); +emit_16(673); +emit_16(609); +emit_16(674); +emit_16(610); +emit_16(674); +emit_16(609); +emit_16(674); +emit_16(610); +emit_16(675); +emit_16(611); +emit_16(675); +emit_16(610); +emit_16(675); +emit_16(611); +emit_16(676); +emit_16(612); +emit_16(676); +emit_16(611); +emit_16(676); +emit_16(612); +emit_16(677); +emit_16(613); +emit_16(677); +emit_16(612); +emit_16(677); +emit_16(613); +emit_16(678); +emit_16(614); +emit_16(678); +emit_16(613); +emit_16(678); +emit_16(614); +emit_16(679); +emit_16(615); +emit_16(679); +emit_16(614); +emit_16(679); +emit_16(615); +emit_16(680); +emit_16(616); +emit_16(680); +emit_16(615); +emit_16(680); +emit_16(616); +emit_16(681); +emit_16(617); +emit_16(681); +emit_16(616); +emit_16(681); +emit_16(617); +emit_16(682); +emit_16(618); +emit_16(682); +emit_16(617); +emit_16(682); +emit_16(618); +emit_16(683); +emit_16(619); +emit_16(683); +emit_16(618); +emit_16(683); +emit_16(619); +emit_16(684); +emit_16(620); +emit_16(684); +emit_16(619); +emit_16(684); +emit_16(620); +emit_16(685); +emit_16(621); +emit_16(685); +emit_16(620); +emit_16(685); +emit_16(621); +emit_16(686); +emit_16(622); +emit_16(686); +emit_16(621); +emit_16(686); +emit_16(622); +emit_16(687); +emit_16(623); +emit_16(687); +emit_16(622); +emit_16(687); +emit_16(623); +emit_16(688); +emit_16(624); +emit_16(688); +emit_16(623); +emit_16(688); +emit_16(624); +emit_16(689); +emit_16(625); +emit_16(689); +emit_16(624); +emit_16(689); +emit_16(625); +emit_16(690); +emit_16(626); +emit_16(690); +emit_16(625); +emit_16(690); +emit_16(626); +emit_16(691); +emit_16(627); +emit_16(691); +emit_16(626); +emit_16(691); +emit_16(627); +emit_16(692); +emit_16(628); +emit_16(692); +emit_16(627); +emit_16(692); +emit_16(628); +emit_16(693); +emit_16(629); +emit_16(693); +emit_16(628); +emit_16(693); +emit_16(629); +emit_16(694); +emit_16(630); +emit_16(694); +emit_16(629); +emit_16(694); +emit_16(630); +emit_16(695); +emit_16(631); +emit_16(695); +emit_16(630); +emit_16(695); +emit_16(631); +emit_16(696); +emit_16(632); +emit_16(696); +emit_16(631); +emit_16(696); +emit_16(632); +emit_16(697); +emit_16(633); +emit_16(697); +emit_16(632); +emit_16(697); +emit_16(633); +emit_16(698); +emit_16(634); +emit_16(698); +emit_16(633); +emit_16(698); +emit_16(634); +emit_16(699); +emit_16(635); +emit_16(699); +emit_16(634); +emit_16(699); +emit_16(635); +emit_16(700); +emit_16(636); +emit_16(700); +emit_16(635); +emit_16(700); +emit_16(636); +emit_16(701); +emit_16(637); +emit_16(701); +emit_16(636); +emit_16(701); +emit_16(637); +emit_16(702); +emit_16(638); +emit_16(702); +emit_16(637); +emit_16(702); +emit_16(638); +emit_16(703); +emit_16(639); +emit_16(703); +emit_16(638); +emit_16(704); +emit_16(640); +emit_16(705); +emit_16(641); +emit_16(705); +emit_16(640); +emit_16(705); +emit_16(641); +emit_16(706); +emit_16(642); +emit_16(706); +emit_16(641); +emit_16(706); +emit_16(642); +emit_16(707); +emit_16(643); +emit_16(707); +emit_16(642); +emit_16(707); +emit_16(643); +emit_16(708); +emit_16(644); +emit_16(708); +emit_16(643); +emit_16(708); +emit_16(644); +emit_16(709); +emit_16(645); +emit_16(709); +emit_16(644); +emit_16(709); +emit_16(645); +emit_16(710); +emit_16(646); +emit_16(710); +emit_16(645); +emit_16(710); +emit_16(646); +emit_16(711); +emit_16(647); +emit_16(711); +emit_16(646); +emit_16(711); +emit_16(647); +emit_16(712); +emit_16(648); +emit_16(712); +emit_16(647); +emit_16(712); +emit_16(648); +emit_16(713); +emit_16(649); +emit_16(713); +emit_16(648); +emit_16(713); +emit_16(649); +emit_16(714); +emit_16(650); +emit_16(714); +emit_16(649); +emit_16(714); +emit_16(650); +emit_16(715); +emit_16(651); +emit_16(715); +emit_16(650); +emit_16(715); +emit_16(651); +emit_16(716); +emit_16(652); +emit_16(716); +emit_16(651); +emit_16(716); +emit_16(652); +emit_16(717); +emit_16(653); +emit_16(717); +emit_16(652); +emit_16(717); +emit_16(653); +emit_16(718); +emit_16(654); +emit_16(718); +emit_16(653); +emit_16(718); +emit_16(654); +emit_16(719); +emit_16(655); +emit_16(719); +emit_16(654); +emit_16(719); +emit_16(655); +emit_16(720); +emit_16(656); +emit_16(720); +emit_16(655); +emit_16(720); +emit_16(656); +emit_16(721); +emit_16(657); +emit_16(721); +emit_16(656); +emit_16(721); +emit_16(657); +emit_16(722); +emit_16(658); +emit_16(722); +emit_16(657); +emit_16(722); +emit_16(658); +emit_16(723); +emit_16(659); +emit_16(723); +emit_16(658); +emit_16(723); +emit_16(659); +emit_16(724); +emit_16(660); +emit_16(724); +emit_16(659); +emit_16(724); +emit_16(660); +emit_16(725); +emit_16(661); +emit_16(725); +emit_16(660); +emit_16(725); +emit_16(661); +emit_16(726); +emit_16(662); +emit_16(726); +emit_16(661); +emit_16(726); +emit_16(662); +emit_16(727); +emit_16(663); +emit_16(727); +emit_16(662); +emit_16(727); +emit_16(663); +emit_16(728); +emit_16(664); +emit_16(728); +emit_16(663); +emit_16(728); +emit_16(664); +emit_16(729); +emit_16(665); +emit_16(729); +emit_16(664); +emit_16(729); +emit_16(665); +emit_16(730); +emit_16(666); +emit_16(730); +emit_16(665); +emit_16(730); +emit_16(666); +emit_16(731); +emit_16(667); +emit_16(731); +emit_16(666); +emit_16(731); +emit_16(667); +emit_16(732); +emit_16(668); +emit_16(732); +emit_16(667); +emit_16(732); +emit_16(668); +emit_16(733); +emit_16(669); +emit_16(733); +emit_16(668); +emit_16(733); +emit_16(669); +emit_16(734); +emit_16(670); +emit_16(734); +emit_16(669); +emit_16(734); +emit_16(670); +emit_16(735); +emit_16(671); +emit_16(735); +emit_16(670); +emit_16(735); +emit_16(671); +emit_16(736); +emit_16(672); +emit_16(736); +emit_16(671); +emit_16(736); +emit_16(672); +emit_16(737); +emit_16(673); +emit_16(737); +emit_16(672); +emit_16(737); +emit_16(673); +emit_16(738); +emit_16(674); +emit_16(738); +emit_16(673); +emit_16(738); +emit_16(674); +emit_16(739); +emit_16(675); +emit_16(739); +emit_16(674); +emit_16(739); +emit_16(675); +emit_16(740); +emit_16(676); +emit_16(740); +emit_16(675); +emit_16(740); +emit_16(676); +emit_16(741); +emit_16(677); +emit_16(741); +emit_16(676); +emit_16(741); +emit_16(677); +emit_16(742); +emit_16(678); +emit_16(742); +emit_16(677); +emit_16(742); +emit_16(678); +emit_16(743); +emit_16(679); +emit_16(743); +emit_16(678); +emit_16(743); +emit_16(679); +emit_16(744); +emit_16(680); +emit_16(744); +emit_16(679); +emit_16(744); +emit_16(680); +emit_16(745); +emit_16(681); +emit_16(745); +emit_16(680); +emit_16(745); +emit_16(681); +emit_16(746); +emit_16(682); +emit_16(746); +emit_16(681); +emit_16(746); +emit_16(682); +emit_16(747); +emit_16(683); +emit_16(747); +emit_16(682); +emit_16(747); +emit_16(683); +emit_16(748); +emit_16(684); +emit_16(748); +emit_16(683); +emit_16(748); +emit_16(684); +emit_16(749); +emit_16(685); +emit_16(749); +emit_16(684); +emit_16(749); +emit_16(685); +emit_16(750); +emit_16(686); +emit_16(750); +emit_16(685); +emit_16(750); +emit_16(686); +emit_16(751); +emit_16(687); +emit_16(751); +emit_16(686); +emit_16(751); +emit_16(687); +emit_16(752); +emit_16(688); +emit_16(752); +emit_16(687); +emit_16(752); +emit_16(688); +emit_16(753); +emit_16(689); +emit_16(753); +emit_16(688); +emit_16(753); +emit_16(689); +emit_16(754); +emit_16(690); +emit_16(754); +emit_16(689); +emit_16(754); +emit_16(690); +emit_16(755); +emit_16(691); +emit_16(755); +emit_16(690); +emit_16(755); +emit_16(691); +emit_16(756); +emit_16(692); +emit_16(756); +emit_16(691); +emit_16(756); +emit_16(692); +emit_16(757); +emit_16(693); +emit_16(757); +emit_16(692); +emit_16(757); +emit_16(693); +emit_16(758); +emit_16(694); +emit_16(758); +emit_16(693); +emit_16(758); +emit_16(694); +emit_16(759); +emit_16(695); +emit_16(759); +emit_16(694); +emit_16(759); +emit_16(695); +emit_16(760); +emit_16(696); +emit_16(760); +emit_16(695); +emit_16(760); +emit_16(696); +emit_16(761); +emit_16(697); +emit_16(761); +emit_16(696); +emit_16(761); +emit_16(697); +emit_16(762); +emit_16(698); +emit_16(762); +emit_16(697); +emit_16(762); +emit_16(698); +emit_16(763); +emit_16(699); +emit_16(763); +emit_16(698); +emit_16(763); +emit_16(699); +emit_16(764); +emit_16(700); +emit_16(764); +emit_16(699); +emit_16(764); +emit_16(700); +emit_16(765); +emit_16(701); +emit_16(765); +emit_16(700); +emit_16(765); +emit_16(701); +emit_16(766); +emit_16(702); +emit_16(766); +emit_16(701); +emit_16(766); +emit_16(702); +emit_16(767); +emit_16(703); +emit_16(767); +emit_16(702); +emit_16(768); +emit_16(704); +emit_16(769); +emit_16(705); +emit_16(769); +emit_16(704); +emit_16(769); +emit_16(705); +emit_16(770); +emit_16(706); +emit_16(770); +emit_16(705); +emit_16(770); +emit_16(706); +emit_16(771); +emit_16(707); +emit_16(771); +emit_16(706); +emit_16(771); +emit_16(707); +emit_16(772); +emit_16(708); +emit_16(772); +emit_16(707); +emit_16(772); +emit_16(708); +emit_16(773); +emit_16(709); +emit_16(773); +emit_16(708); +emit_16(773); +emit_16(709); +emit_16(774); +emit_16(710); +emit_16(774); +emit_16(709); +emit_16(774); +emit_16(710); +emit_16(775); +emit_16(711); +emit_16(775); +emit_16(710); +emit_16(775); +emit_16(711); +emit_16(776); +emit_16(712); +emit_16(776); +emit_16(711); +emit_16(776); +emit_16(712); +emit_16(777); +emit_16(713); +emit_16(777); +emit_16(712); +emit_16(777); +emit_16(713); +emit_16(778); +emit_16(714); +emit_16(778); +emit_16(713); +emit_16(778); +emit_16(714); +emit_16(779); +emit_16(715); +emit_16(779); +emit_16(714); +emit_16(779); +emit_16(715); +emit_16(780); +emit_16(716); +emit_16(780); +emit_16(715); +emit_16(780); +emit_16(716); +emit_16(781); +emit_16(717); +emit_16(781); +emit_16(716); +emit_16(781); +emit_16(717); +emit_16(782); +emit_16(718); +emit_16(782); +emit_16(717); +emit_16(782); +emit_16(718); +emit_16(783); +emit_16(719); +emit_16(783); +emit_16(718); +emit_16(783); +emit_16(719); +emit_16(784); +emit_16(720); +emit_16(784); +emit_16(719); +emit_16(784); +emit_16(720); +emit_16(785); +emit_16(721); +emit_16(785); +emit_16(720); +emit_16(785); +emit_16(721); +emit_16(786); +emit_16(722); +emit_16(786); +emit_16(721); +emit_16(786); +emit_16(722); +emit_16(787); +emit_16(723); +emit_16(787); +emit_16(722); +emit_16(787); +emit_16(723); +emit_16(788); +emit_16(724); +emit_16(788); +emit_16(723); +emit_16(788); +emit_16(724); +emit_16(789); +emit_16(725); +emit_16(789); +emit_16(724); +emit_16(789); +emit_16(725); +emit_16(790); +emit_16(726); +emit_16(790); +emit_16(725); +emit_16(790); +emit_16(726); +emit_16(791); +emit_16(727); +emit_16(791); +emit_16(726); +emit_16(791); +emit_16(727); +emit_16(792); +emit_16(728); +emit_16(792); +emit_16(727); +emit_16(792); +emit_16(728); +emit_16(793); +emit_16(729); +emit_16(793); +emit_16(728); +emit_16(793); +emit_16(729); +emit_16(794); +emit_16(730); +emit_16(794); +emit_16(729); +emit_16(794); +emit_16(730); +emit_16(795); +emit_16(731); +emit_16(795); +emit_16(730); +emit_16(795); +emit_16(731); +emit_16(796); +emit_16(732); +emit_16(796); +emit_16(731); +emit_16(796); +emit_16(732); +emit_16(797); +emit_16(733); +emit_16(797); +emit_16(732); +emit_16(797); +emit_16(733); +emit_16(798); +emit_16(734); +emit_16(798); +emit_16(733); +emit_16(798); +emit_16(734); +emit_16(799); +emit_16(735); +emit_16(799); +emit_16(734); +emit_16(799); +emit_16(735); +emit_16(800); +emit_16(736); +emit_16(800); +emit_16(735); +emit_16(800); +emit_16(736); +emit_16(801); +emit_16(737); +emit_16(801); +emit_16(736); +emit_16(801); +emit_16(737); +emit_16(802); +emit_16(738); +emit_16(802); +emit_16(737); +emit_16(802); +emit_16(738); +emit_16(803); +emit_16(739); +emit_16(803); +emit_16(738); +emit_16(803); +emit_16(739); +emit_16(804); +emit_16(740); +emit_16(804); +emit_16(739); +emit_16(804); +emit_16(740); +emit_16(805); +emit_16(741); +emit_16(805); +emit_16(740); +emit_16(805); +emit_16(741); +emit_16(806); +emit_16(742); +emit_16(806); +emit_16(741); +emit_16(806); +emit_16(742); +emit_16(807); +emit_16(743); +emit_16(807); +emit_16(742); +emit_16(807); +emit_16(743); +emit_16(808); +emit_16(744); +emit_16(808); +emit_16(743); +emit_16(808); +emit_16(744); +emit_16(809); +emit_16(745); +emit_16(809); +emit_16(744); +emit_16(809); +emit_16(745); +emit_16(810); +emit_16(746); +emit_16(810); +emit_16(745); +emit_16(810); +emit_16(746); +emit_16(811); +emit_16(747); +emit_16(811); +emit_16(746); +emit_16(811); +emit_16(747); +emit_16(812); +emit_16(748); +emit_16(812); +emit_16(747); +emit_16(812); +emit_16(748); +emit_16(813); +emit_16(749); +emit_16(813); +emit_16(748); +emit_16(813); +emit_16(749); +emit_16(814); +emit_16(750); +emit_16(814); +emit_16(749); +emit_16(814); +emit_16(750); +emit_16(815); +emit_16(751); +emit_16(815); +emit_16(750); +emit_16(815); +emit_16(751); +emit_16(816); +emit_16(752); +emit_16(816); +emit_16(751); +emit_16(816); +emit_16(752); +emit_16(817); +emit_16(753); +emit_16(817); +emit_16(752); +emit_16(817); +emit_16(753); +emit_16(818); +emit_16(754); +emit_16(818); +emit_16(753); +emit_16(818); +emit_16(754); +emit_16(819); +emit_16(755); +emit_16(819); +emit_16(754); +emit_16(819); +emit_16(755); +emit_16(820); +emit_16(756); +emit_16(820); +emit_16(755); +emit_16(820); +emit_16(756); +emit_16(821); +emit_16(757); +emit_16(821); +emit_16(756); +emit_16(821); +emit_16(757); +emit_16(822); +emit_16(758); +emit_16(822); +emit_16(757); +emit_16(822); +emit_16(758); +emit_16(823); +emit_16(759); +emit_16(823); +emit_16(758); +emit_16(823); +emit_16(759); +emit_16(824); +emit_16(760); +emit_16(824); +emit_16(759); +emit_16(824); +emit_16(760); +emit_16(825); +emit_16(761); +emit_16(825); +emit_16(760); +emit_16(825); +emit_16(761); +emit_16(826); +emit_16(762); +emit_16(826); +emit_16(761); +emit_16(826); +emit_16(762); +emit_16(827); +emit_16(763); +emit_16(827); +emit_16(762); +emit_16(827); +emit_16(763); +emit_16(828); +emit_16(764); +emit_16(828); +emit_16(763); +emit_16(828); +emit_16(764); +emit_16(829); +emit_16(765); +emit_16(829); +emit_16(764); +emit_16(829); +emit_16(765); +emit_16(830); +emit_16(766); +emit_16(830); +emit_16(765); +emit_16(830); +emit_16(766); +emit_16(831); +emit_16(767); +emit_16(831); +emit_16(766); +emit_16(832); +emit_16(768); +emit_16(833); +emit_16(769); +emit_16(833); +emit_16(768); +emit_16(833); +emit_16(769); +emit_16(834); +emit_16(770); +emit_16(834); +emit_16(769); +emit_16(834); +emit_16(770); +emit_16(835); +emit_16(771); +emit_16(835); +emit_16(770); +emit_16(835); +emit_16(771); +emit_16(836); +emit_16(772); +emit_16(836); +emit_16(771); +emit_16(836); +emit_16(772); +emit_16(837); +emit_16(773); +emit_16(837); +emit_16(772); +emit_16(837); +emit_16(773); +emit_16(838); +emit_16(774); +emit_16(838); +emit_16(773); +emit_16(838); +emit_16(774); +emit_16(839); +emit_16(775); +emit_16(839); +emit_16(774); +emit_16(839); +emit_16(775); +emit_16(840); +emit_16(776); +emit_16(840); +emit_16(775); +emit_16(840); +emit_16(776); +emit_16(841); +emit_16(777); +emit_16(841); +emit_16(776); +emit_16(841); +emit_16(777); +emit_16(842); +emit_16(778); +emit_16(842); +emit_16(777); +emit_16(842); +emit_16(778); +emit_16(843); +emit_16(779); +emit_16(843); +emit_16(778); +emit_16(843); +emit_16(779); +emit_16(844); +emit_16(780); +emit_16(844); +emit_16(779); +emit_16(844); +emit_16(780); +emit_16(845); +emit_16(781); +emit_16(845); +emit_16(780); +emit_16(845); +emit_16(781); +emit_16(846); +emit_16(782); +emit_16(846); +emit_16(781); +emit_16(846); +emit_16(782); +emit_16(847); +emit_16(783); +emit_16(847); +emit_16(782); +emit_16(847); +emit_16(783); +emit_16(848); +emit_16(784); +emit_16(848); +emit_16(783); +emit_16(848); +emit_16(784); +emit_16(849); +emit_16(785); +emit_16(849); +emit_16(784); +emit_16(849); +emit_16(785); +emit_16(850); +emit_16(786); +emit_16(850); +emit_16(785); +emit_16(850); +emit_16(786); +emit_16(851); +emit_16(787); +emit_16(851); +emit_16(786); +emit_16(851); +emit_16(787); +emit_16(852); +emit_16(788); +emit_16(852); +emit_16(787); +emit_16(852); +emit_16(788); +emit_16(853); +emit_16(789); +emit_16(853); +emit_16(788); +emit_16(853); +emit_16(789); +emit_16(854); +emit_16(790); +emit_16(854); +emit_16(789); +emit_16(854); +emit_16(790); +emit_16(855); +emit_16(791); +emit_16(855); +emit_16(790); +emit_16(855); +emit_16(791); +emit_16(856); +emit_16(792); +emit_16(856); +emit_16(791); +emit_16(856); +emit_16(792); +emit_16(857); +emit_16(793); +emit_16(857); +emit_16(792); +emit_16(857); +emit_16(793); +emit_16(858); +emit_16(794); +emit_16(858); +emit_16(793); +emit_16(858); +emit_16(794); +emit_16(859); +emit_16(795); +emit_16(859); +emit_16(794); +emit_16(859); +emit_16(795); +emit_16(860); +emit_16(796); +emit_16(860); +emit_16(795); +emit_16(860); +emit_16(796); +emit_16(861); +emit_16(797); +emit_16(861); +emit_16(796); +emit_16(861); +emit_16(797); +emit_16(862); +emit_16(798); +emit_16(862); +emit_16(797); +emit_16(862); +emit_16(798); +emit_16(863); +emit_16(799); +emit_16(863); +emit_16(798); +emit_16(863); +emit_16(799); +emit_16(864); +emit_16(800); +emit_16(864); +emit_16(799); +emit_16(864); +emit_16(800); +emit_16(865); +emit_16(801); +emit_16(865); +emit_16(800); +emit_16(865); +emit_16(801); +emit_16(866); +emit_16(802); +emit_16(866); +emit_16(801); +emit_16(866); +emit_16(802); +emit_16(867); +emit_16(803); +emit_16(867); +emit_16(802); +emit_16(867); +emit_16(803); +emit_16(868); +emit_16(804); +emit_16(868); +emit_16(803); +emit_16(868); +emit_16(804); +emit_16(869); +emit_16(805); +emit_16(869); +emit_16(804); +emit_16(869); +emit_16(805); +emit_16(870); +emit_16(806); +emit_16(870); +emit_16(805); +emit_16(870); +emit_16(806); +emit_16(871); +emit_16(807); +emit_16(871); +emit_16(806); +emit_16(871); +emit_16(807); +emit_16(872); +emit_16(808); +emit_16(872); +emit_16(807); +emit_16(872); +emit_16(808); +emit_16(873); +emit_16(809); +emit_16(873); +emit_16(808); +emit_16(873); +emit_16(809); +emit_16(874); +emit_16(810); +emit_16(874); +emit_16(809); +emit_16(874); +emit_16(810); +emit_16(875); +emit_16(811); +emit_16(875); +emit_16(810); +emit_16(875); +emit_16(811); +emit_16(876); +emit_16(812); +emit_16(876); +emit_16(811); +emit_16(876); +emit_16(812); +emit_16(877); +emit_16(813); +emit_16(877); +emit_16(812); +emit_16(877); +emit_16(813); +emit_16(878); +emit_16(814); +emit_16(878); +emit_16(813); +emit_16(878); +emit_16(814); +emit_16(879); +emit_16(815); +emit_16(879); +emit_16(814); +emit_16(879); +emit_16(815); +emit_16(880); +emit_16(816); +emit_16(880); +emit_16(815); +emit_16(880); +emit_16(816); +emit_16(881); +emit_16(817); +emit_16(881); +emit_16(816); +emit_16(881); +emit_16(817); +emit_16(882); +emit_16(818); +emit_16(882); +emit_16(817); +emit_16(882); +emit_16(818); +emit_16(883); +emit_16(819); +emit_16(883); +emit_16(818); +emit_16(883); +emit_16(819); +emit_16(884); +emit_16(820); +emit_16(884); +emit_16(819); +emit_16(884); +emit_16(820); +emit_16(885); +emit_16(821); +emit_16(885); +emit_16(820); +emit_16(885); +emit_16(821); +emit_16(886); +emit_16(822); +emit_16(886); +emit_16(821); +emit_16(886); +emit_16(822); +emit_16(887); +emit_16(823); +emit_16(887); +emit_16(822); +emit_16(887); +emit_16(823); +emit_16(888); +emit_16(824); +emit_16(888); +emit_16(823); +emit_16(888); +emit_16(824); +emit_16(889); +emit_16(825); +emit_16(889); +emit_16(824); +emit_16(889); +emit_16(825); +emit_16(890); +emit_16(826); +emit_16(890); +emit_16(825); +emit_16(890); +emit_16(826); +emit_16(891); +emit_16(827); +emit_16(891); +emit_16(826); +emit_16(891); +emit_16(827); +emit_16(892); +emit_16(828); +emit_16(892); +emit_16(827); +emit_16(892); +emit_16(828); +emit_16(893); +emit_16(829); +emit_16(893); +emit_16(828); +emit_16(893); +emit_16(829); +emit_16(894); +emit_16(830); +emit_16(894); +emit_16(829); +emit_16(894); +emit_16(830); +emit_16(895); +emit_16(831); +emit_16(895); +emit_16(830); +emit_16(896); +emit_16(832); +emit_16(897); +emit_16(833); +emit_16(897); +emit_16(832); +emit_16(897); +emit_16(833); +emit_16(898); +emit_16(834); +emit_16(898); +emit_16(833); +emit_16(898); +emit_16(834); +emit_16(899); +emit_16(835); +emit_16(899); +emit_16(834); +emit_16(899); +emit_16(835); +emit_16(900); +emit_16(836); +emit_16(900); +emit_16(835); +emit_16(900); +emit_16(836); +emit_16(901); +emit_16(837); +emit_16(901); +emit_16(836); +emit_16(901); +emit_16(837); +emit_16(902); +emit_16(838); +emit_16(902); +emit_16(837); +emit_16(902); +emit_16(838); +emit_16(903); +emit_16(839); +emit_16(903); +emit_16(838); +emit_16(903); +emit_16(839); +emit_16(904); +emit_16(840); +emit_16(904); +emit_16(839); +emit_16(904); +emit_16(840); +emit_16(905); +emit_16(841); +emit_16(905); +emit_16(840); +emit_16(905); +emit_16(841); +emit_16(906); +emit_16(842); +emit_16(906); +emit_16(841); +emit_16(906); +emit_16(842); +emit_16(907); +emit_16(843); +emit_16(907); +emit_16(842); +emit_16(907); +emit_16(843); +emit_16(908); +emit_16(844); +emit_16(908); +emit_16(843); +emit_16(908); +emit_16(844); +emit_16(909); +emit_16(845); +emit_16(909); +emit_16(844); +emit_16(909); +emit_16(845); +emit_16(910); +emit_16(846); +emit_16(910); +emit_16(845); +emit_16(910); +emit_16(846); +emit_16(911); +emit_16(847); +emit_16(911); +emit_16(846); +emit_16(911); +emit_16(847); +emit_16(912); +emit_16(848); +emit_16(912); +emit_16(847); +emit_16(912); +emit_16(848); +emit_16(913); +emit_16(849); +emit_16(913); +emit_16(848); +emit_16(913); +emit_16(849); +emit_16(914); +emit_16(850); +emit_16(914); +emit_16(849); +emit_16(914); +emit_16(850); +emit_16(915); +emit_16(851); +emit_16(915); +emit_16(850); +emit_16(915); +emit_16(851); +emit_16(916); +emit_16(852); +emit_16(916); +emit_16(851); +emit_16(916); +emit_16(852); +emit_16(917); +emit_16(853); +emit_16(917); +emit_16(852); +emit_16(917); +emit_16(853); +emit_16(918); +emit_16(854); +emit_16(918); +emit_16(853); +emit_16(918); +emit_16(854); +emit_16(919); +emit_16(855); +emit_16(919); +emit_16(854); +emit_16(919); +emit_16(855); +emit_16(920); +emit_16(856); +emit_16(920); +emit_16(855); +emit_16(920); +emit_16(856); +emit_16(921); +emit_16(857); +emit_16(921); +emit_16(856); +emit_16(921); +emit_16(857); +emit_16(922); +emit_16(858); +emit_16(922); +emit_16(857); +emit_16(922); +emit_16(858); +emit_16(923); +emit_16(859); +emit_16(923); +emit_16(858); +emit_16(923); +emit_16(859); +emit_16(924); +emit_16(860); +emit_16(924); +emit_16(859); +emit_16(924); +emit_16(860); +emit_16(925); +emit_16(861); +emit_16(925); +emit_16(860); +emit_16(925); +emit_16(861); +emit_16(926); +emit_16(862); +emit_16(926); +emit_16(861); +emit_16(926); +emit_16(862); +emit_16(927); +emit_16(863); +emit_16(927); +emit_16(862); +emit_16(927); +emit_16(863); +emit_16(928); +emit_16(864); +emit_16(928); +emit_16(863); +emit_16(928); +emit_16(864); +emit_16(929); +emit_16(865); +emit_16(929); +emit_16(864); +emit_16(929); +emit_16(865); +emit_16(930); +emit_16(866); +emit_16(930); +emit_16(865); +emit_16(930); +emit_16(866); +emit_16(931); +emit_16(867); +emit_16(931); +emit_16(866); +emit_16(931); +emit_16(867); +emit_16(932); +emit_16(868); +emit_16(932); +emit_16(867); +emit_16(932); +emit_16(868); +emit_16(933); +emit_16(869); +emit_16(933); +emit_16(868); +emit_16(933); +emit_16(869); +emit_16(934); +emit_16(870); +emit_16(934); +emit_16(869); +emit_16(934); +emit_16(870); +emit_16(935); +emit_16(871); +emit_16(935); +emit_16(870); +emit_16(935); +emit_16(871); +emit_16(936); +emit_16(872); +emit_16(936); +emit_16(871); +emit_16(936); +emit_16(872); +emit_16(937); +emit_16(873); +emit_16(937); +emit_16(872); +emit_16(937); +emit_16(873); +emit_16(938); +emit_16(874); +emit_16(938); +emit_16(873); +emit_16(938); +emit_16(874); +emit_16(939); +emit_16(875); +emit_16(939); +emit_16(874); +emit_16(939); +emit_16(875); +emit_16(940); +emit_16(876); +emit_16(940); +emit_16(875); +emit_16(940); +emit_16(876); +emit_16(941); +emit_16(877); +emit_16(941); +emit_16(876); +emit_16(941); +emit_16(877); +emit_16(942); +emit_16(878); +emit_16(942); +emit_16(877); +emit_16(942); +emit_16(878); +emit_16(943); +emit_16(879); +emit_16(943); +emit_16(878); +emit_16(943); +emit_16(879); +emit_16(944); +emit_16(880); +emit_16(944); +emit_16(879); +emit_16(944); +emit_16(880); +emit_16(945); +emit_16(881); +emit_16(945); +emit_16(880); +emit_16(945); +emit_16(881); +emit_16(946); +emit_16(882); +emit_16(946); +emit_16(881); +emit_16(946); +emit_16(882); +emit_16(947); +emit_16(883); +emit_16(947); +emit_16(882); +emit_16(947); +emit_16(883); +emit_16(948); +emit_16(884); +emit_16(948); +emit_16(883); +emit_16(948); +emit_16(884); +emit_16(949); +emit_16(885); +emit_16(949); +emit_16(884); +emit_16(949); +emit_16(885); +emit_16(950); +emit_16(886); +emit_16(950); +emit_16(885); +emit_16(950); +emit_16(886); +emit_16(951); +emit_16(887); +emit_16(951); +emit_16(886); +emit_16(951); +emit_16(887); +emit_16(952); +emit_16(888); +emit_16(952); +emit_16(887); +emit_16(952); +emit_16(888); +emit_16(953); +emit_16(889); +emit_16(953); +emit_16(888); +emit_16(953); +emit_16(889); +emit_16(954); +emit_16(890); +emit_16(954); +emit_16(889); +emit_16(954); +emit_16(890); +emit_16(955); +emit_16(891); +emit_16(955); +emit_16(890); +emit_16(955); +emit_16(891); +emit_16(956); +emit_16(892); +emit_16(956); +emit_16(891); +emit_16(956); +emit_16(892); +emit_16(957); +emit_16(893); +emit_16(957); +emit_16(892); +emit_16(957); +emit_16(893); +emit_16(958); +emit_16(894); +emit_16(958); +emit_16(893); +emit_16(958); +emit_16(894); +emit_16(959); +emit_16(895); +emit_16(959); +emit_16(894); +emit_16(960); +emit_16(896); +emit_16(961); +emit_16(897); +emit_16(961); +emit_16(896); +emit_16(961); +emit_16(897); +emit_16(962); +emit_16(898); +emit_16(962); +emit_16(897); +emit_16(962); +emit_16(898); +emit_16(963); +emit_16(899); +emit_16(963); +emit_16(898); +emit_16(963); +emit_16(899); +emit_16(964); +emit_16(900); +emit_16(964); +emit_16(899); +emit_16(964); +emit_16(900); +emit_16(965); +emit_16(901); +emit_16(965); +emit_16(900); +emit_16(965); +emit_16(901); +emit_16(966); +emit_16(902); +emit_16(966); +emit_16(901); +emit_16(966); +emit_16(902); +emit_16(967); +emit_16(903); +emit_16(967); +emit_16(902); +emit_16(967); +emit_16(903); +emit_16(968); +emit_16(904); +emit_16(968); +emit_16(903); +emit_16(968); +emit_16(904); +emit_16(969); +emit_16(905); +emit_16(969); +emit_16(904); +emit_16(969); +emit_16(905); +emit_16(970); +emit_16(906); +emit_16(970); +emit_16(905); +emit_16(970); +emit_16(906); +emit_16(971); +emit_16(907); +emit_16(971); +emit_16(906); +emit_16(971); +emit_16(907); +emit_16(972); +emit_16(908); +emit_16(972); +emit_16(907); +emit_16(972); +emit_16(908); +emit_16(973); +emit_16(909); +emit_16(973); +emit_16(908); +emit_16(973); +emit_16(909); +emit_16(974); +emit_16(910); +emit_16(974); +emit_16(909); +emit_16(974); +emit_16(910); +emit_16(975); +emit_16(911); +emit_16(975); +emit_16(910); +emit_16(975); +emit_16(911); +emit_16(976); +emit_16(912); +emit_16(976); +emit_16(911); +emit_16(976); +emit_16(912); +emit_16(977); +emit_16(913); +emit_16(977); +emit_16(912); +emit_16(977); +emit_16(913); +emit_16(978); +emit_16(914); +emit_16(978); +emit_16(913); +emit_16(978); +emit_16(914); +emit_16(979); +emit_16(915); +emit_16(979); +emit_16(914); +emit_16(979); +emit_16(915); +emit_16(980); +emit_16(916); +emit_16(980); +emit_16(915); +emit_16(980); +emit_16(916); +emit_16(981); +emit_16(917); +emit_16(981); +emit_16(916); +emit_16(981); +emit_16(917); +emit_16(982); +emit_16(918); +emit_16(982); +emit_16(917); +emit_16(982); +emit_16(918); +emit_16(983); +emit_16(919); +emit_16(983); +emit_16(918); +emit_16(983); +emit_16(919); +emit_16(984); +emit_16(920); +emit_16(984); +emit_16(919); +emit_16(984); +emit_16(920); +emit_16(985); +emit_16(921); +emit_16(985); +emit_16(920); +emit_16(985); +emit_16(921); +emit_16(986); +emit_16(922); +emit_16(986); +emit_16(921); +emit_16(986); +emit_16(922); +emit_16(987); +emit_16(923); +emit_16(987); +emit_16(922); +emit_16(987); +emit_16(923); +emit_16(988); +emit_16(924); +emit_16(988); +emit_16(923); +emit_16(988); +emit_16(924); +emit_16(989); +emit_16(925); +emit_16(989); +emit_16(924); +emit_16(989); +emit_16(925); +emit_16(990); +emit_16(926); +emit_16(990); +emit_16(925); +emit_16(990); +emit_16(926); +emit_16(991); +emit_16(927); +emit_16(991); +emit_16(926); +emit_16(991); +emit_16(927); +emit_16(992); +emit_16(928); +emit_16(992); +emit_16(927); +emit_16(992); +emit_16(928); +emit_16(993); +emit_16(929); +emit_16(993); +emit_16(928); +emit_16(993); +emit_16(929); +emit_16(994); +emit_16(930); +emit_16(994); +emit_16(929); +emit_16(994); +emit_16(930); +emit_16(995); +emit_16(931); +emit_16(995); +emit_16(930); +emit_16(995); +emit_16(931); +emit_16(996); +emit_16(932); +emit_16(996); +emit_16(931); +emit_16(996); +emit_16(932); +emit_16(997); +emit_16(933); +emit_16(997); +emit_16(932); +emit_16(997); +emit_16(933); +emit_16(998); +emit_16(934); +emit_16(998); +emit_16(933); +emit_16(998); +emit_16(934); +emit_16(999); +emit_16(935); +emit_16(999); +emit_16(934); +emit_16(999); +emit_16(935); +emit_16(1000); +emit_16(936); +emit_16(1000); +emit_16(935); +emit_16(1000); +emit_16(936); +emit_16(1001); +emit_16(937); +emit_16(1001); +emit_16(936); +emit_16(1001); +emit_16(937); +emit_16(1002); +emit_16(938); +emit_16(1002); +emit_16(937); +emit_16(1002); +emit_16(938); +emit_16(1003); +emit_16(939); +emit_16(1003); +emit_16(938); +emit_16(1003); +emit_16(939); +emit_16(1004); +emit_16(940); +emit_16(1004); +emit_16(939); +emit_16(1004); +emit_16(940); +emit_16(1005); +emit_16(941); +emit_16(1005); +emit_16(940); +emit_16(1005); +emit_16(941); +emit_16(1006); +emit_16(942); +emit_16(1006); +emit_16(941); +emit_16(1006); +emit_16(942); +emit_16(1007); +emit_16(943); +emit_16(1007); +emit_16(942); +emit_16(1007); +emit_16(943); +emit_16(1008); +emit_16(944); +emit_16(1008); +emit_16(943); +emit_16(1008); +emit_16(944); +emit_16(1009); +emit_16(945); +emit_16(1009); +emit_16(944); +emit_16(1009); +emit_16(945); +emit_16(1010); +emit_16(946); +emit_16(1010); +emit_16(945); +emit_16(1010); +emit_16(946); +emit_16(1011); +emit_16(947); +emit_16(1011); +emit_16(946); +emit_16(1011); +emit_16(947); +emit_16(1012); +emit_16(948); +emit_16(1012); +emit_16(947); +emit_16(1012); +emit_16(948); +emit_16(1013); +emit_16(949); +emit_16(1013); +emit_16(948); +emit_16(1013); +emit_16(949); +emit_16(1014); +emit_16(950); +emit_16(1014); +emit_16(949); +emit_16(1014); +emit_16(950); +emit_16(1015); +emit_16(951); +emit_16(1015); +emit_16(950); +emit_16(1015); +emit_16(951); +emit_16(1016); +emit_16(952); +emit_16(1016); +emit_16(951); +emit_16(1016); +emit_16(952); +emit_16(1017); +emit_16(953); +emit_16(1017); +emit_16(952); +emit_16(1017); +emit_16(953); +emit_16(1018); +emit_16(954); +emit_16(1018); +emit_16(953); +emit_16(1018); +emit_16(954); +emit_16(1019); +emit_16(955); +emit_16(1019); +emit_16(954); +emit_16(1019); +emit_16(955); +emit_16(1020); +emit_16(956); +emit_16(1020); +emit_16(955); +emit_16(1020); +emit_16(956); +emit_16(1021); +emit_16(957); +emit_16(1021); +emit_16(956); +emit_16(1021); +emit_16(957); +emit_16(1022); +emit_16(958); +emit_16(1022); +emit_16(957); +emit_16(1022); +emit_16(958); +emit_16(1023); +emit_16(959); +emit_16(1023); +emit_16(958); +emit_16(1024); +emit_16(960); +emit_16(1025); +emit_16(961); +emit_16(1025); +emit_16(960); +emit_16(1025); +emit_16(961); +emit_16(1026); +emit_16(962); +emit_16(1026); +emit_16(961); +emit_16(1026); +emit_16(962); +emit_16(1027); +emit_16(963); +emit_16(1027); +emit_16(962); +emit_16(1027); +emit_16(963); +emit_16(1028); +emit_16(964); +emit_16(1028); +emit_16(963); +emit_16(1028); +emit_16(964); +emit_16(1029); +emit_16(965); +emit_16(1029); +emit_16(964); +emit_16(1029); +emit_16(965); +emit_16(1030); +emit_16(966); +emit_16(1030); +emit_16(965); +emit_16(1030); +emit_16(966); +emit_16(1031); +emit_16(967); +emit_16(1031); +emit_16(966); +emit_16(1031); +emit_16(967); +emit_16(1032); +emit_16(968); +emit_16(1032); +emit_16(967); +emit_16(1032); +emit_16(968); +emit_16(1033); +emit_16(969); +emit_16(1033); +emit_16(968); +emit_16(1033); +emit_16(969); +emit_16(1034); +emit_16(970); +emit_16(1034); +emit_16(969); +emit_16(1034); +emit_16(970); +emit_16(1035); +emit_16(971); +emit_16(1035); +emit_16(970); +emit_16(1035); +emit_16(971); +emit_16(1036); +emit_16(972); +emit_16(1036); +emit_16(971); +emit_16(1036); +emit_16(972); +emit_16(1037); +emit_16(973); +emit_16(1037); +emit_16(972); +emit_16(1037); +emit_16(973); +emit_16(1038); +emit_16(974); +emit_16(1038); +emit_16(973); +emit_16(1038); +emit_16(974); +emit_16(1039); +emit_16(975); +emit_16(1039); +emit_16(974); +emit_16(1039); +emit_16(975); +emit_16(1040); +emit_16(976); +emit_16(1040); +emit_16(975); +emit_16(1040); +emit_16(976); +emit_16(1041); +emit_16(977); +emit_16(1041); +emit_16(976); +emit_16(1041); +emit_16(977); +emit_16(1042); +emit_16(978); +emit_16(1042); +emit_16(977); +emit_16(1042); +emit_16(978); +emit_16(1043); +emit_16(979); +emit_16(1043); +emit_16(978); +emit_16(1043); +emit_16(979); +emit_16(1044); +emit_16(980); +emit_16(1044); +emit_16(979); +emit_16(1044); +emit_16(980); +emit_16(1045); +emit_16(981); +emit_16(1045); +emit_16(980); +emit_16(1045); +emit_16(981); +emit_16(1046); +emit_16(982); +emit_16(1046); +emit_16(981); +emit_16(1046); +emit_16(982); +emit_16(1047); +emit_16(983); +emit_16(1047); +emit_16(982); +emit_16(1047); +emit_16(983); +emit_16(1048); +emit_16(984); +emit_16(1048); +emit_16(983); +emit_16(1048); +emit_16(984); +emit_16(1049); +emit_16(985); +emit_16(1049); +emit_16(984); +emit_16(1049); +emit_16(985); +emit_16(1050); +emit_16(986); +emit_16(1050); +emit_16(985); +emit_16(1050); +emit_16(986); +emit_16(1051); +emit_16(987); +emit_16(1051); +emit_16(986); +emit_16(1051); +emit_16(987); +emit_16(1052); +emit_16(988); +emit_16(1052); +emit_16(987); +emit_16(1052); +emit_16(988); +emit_16(1053); +emit_16(989); +emit_16(1053); +emit_16(988); +emit_16(1053); +emit_16(989); +emit_16(1054); +emit_16(990); +emit_16(1054); +emit_16(989); +emit_16(1054); +emit_16(990); +emit_16(1055); +emit_16(991); +emit_16(1055); +emit_16(990); +emit_16(1055); +emit_16(991); +emit_16(1056); +emit_16(992); +emit_16(1056); +emit_16(991); +emit_16(1056); +emit_16(992); +emit_16(1057); +emit_16(993); +emit_16(1057); +emit_16(992); +emit_16(1057); +emit_16(993); +emit_16(1058); +emit_16(994); +emit_16(1058); +emit_16(993); +emit_16(1058); +emit_16(994); +emit_16(1059); +emit_16(995); +emit_16(1059); +emit_16(994); +emit_16(1059); +emit_16(995); +emit_16(1060); +emit_16(996); +emit_16(1060); +emit_16(995); +emit_16(1060); +emit_16(996); +emit_16(1061); +emit_16(997); +emit_16(1061); +emit_16(996); +emit_16(1061); +emit_16(997); +emit_16(1062); +emit_16(998); +emit_16(1062); +emit_16(997); +emit_16(1062); +emit_16(998); +emit_16(1063); +emit_16(999); +emit_16(1063); +emit_16(998); +emit_16(1063); +emit_16(999); +emit_16(1064); +emit_16(1000); +emit_16(1064); +emit_16(999); +emit_16(1064); +emit_16(1000); +emit_16(1065); +emit_16(1001); +emit_16(1065); +emit_16(1000); +emit_16(1065); +emit_16(1001); +emit_16(1066); +emit_16(1002); +emit_16(1066); +emit_16(1001); +emit_16(1066); +emit_16(1002); +emit_16(1067); +emit_16(1003); +emit_16(1067); +emit_16(1002); +emit_16(1067); +emit_16(1003); +emit_16(1068); +emit_16(1004); +emit_16(1068); +emit_16(1003); +emit_16(1068); +emit_16(1004); +emit_16(1069); +emit_16(1005); +emit_16(1069); +emit_16(1004); +emit_16(1069); +emit_16(1005); +emit_16(1070); +emit_16(1006); +emit_16(1070); +emit_16(1005); +emit_16(1070); +emit_16(1006); +emit_16(1071); +emit_16(1007); +emit_16(1071); +emit_16(1006); +emit_16(1071); +emit_16(1007); +emit_16(1072); +emit_16(1008); +emit_16(1072); +emit_16(1007); +emit_16(1072); +emit_16(1008); +emit_16(1073); +emit_16(1009); +emit_16(1073); +emit_16(1008); +emit_16(1073); +emit_16(1009); +emit_16(1074); +emit_16(1010); +emit_16(1074); +emit_16(1009); +emit_16(1074); +emit_16(1010); +emit_16(1075); +emit_16(1011); +emit_16(1075); +emit_16(1010); +emit_16(1075); +emit_16(1011); +emit_16(1076); +emit_16(1012); +emit_16(1076); +emit_16(1011); +emit_16(1076); +emit_16(1012); +emit_16(1077); +emit_16(1013); +emit_16(1077); +emit_16(1012); +emit_16(1077); +emit_16(1013); +emit_16(1078); +emit_16(1014); +emit_16(1078); +emit_16(1013); +emit_16(1078); +emit_16(1014); +emit_16(1079); +emit_16(1015); +emit_16(1079); +emit_16(1014); +emit_16(1079); +emit_16(1015); +emit_16(1080); +emit_16(1016); +emit_16(1080); +emit_16(1015); +emit_16(1080); +emit_16(1016); +emit_16(1081); +emit_16(1017); +emit_16(1081); +emit_16(1016); +emit_16(1081); +emit_16(1017); +emit_16(1082); +emit_16(1018); +emit_16(1082); +emit_16(1017); +emit_16(1082); +emit_16(1018); +emit_16(1083); +emit_16(1019); +emit_16(1083); +emit_16(1018); +emit_16(1083); +emit_16(1019); +emit_16(1084); +emit_16(1020); +emit_16(1084); +emit_16(1019); +emit_16(1084); +emit_16(1020); +emit_16(1085); +emit_16(1021); +emit_16(1085); +emit_16(1020); +emit_16(1085); +emit_16(1021); +emit_16(1086); +emit_16(1022); +emit_16(1086); +emit_16(1021); +emit_16(1086); +emit_16(1022); +emit_16(1087); +emit_16(1023); +emit_16(1087); +emit_16(1022); +emit_16(1088); +emit_16(1024); +emit_16(1089); +emit_16(1025); +emit_16(1089); +emit_16(1024); +emit_16(1089); +emit_16(1025); +emit_16(1090); +emit_16(1026); +emit_16(1090); +emit_16(1025); +emit_16(1090); +emit_16(1026); +emit_16(1091); +emit_16(1027); +emit_16(1091); +emit_16(1026); +emit_16(1091); +emit_16(1027); +emit_16(1092); +emit_16(1028); +emit_16(1092); +emit_16(1027); +emit_16(1092); +emit_16(1028); +emit_16(1093); +emit_16(1029); +emit_16(1093); +emit_16(1028); +emit_16(1093); +emit_16(1029); +emit_16(1094); +emit_16(1030); +emit_16(1094); +emit_16(1029); +emit_16(1094); +emit_16(1030); +emit_16(1095); +emit_16(1031); +emit_16(1095); +emit_16(1030); +emit_16(1095); +emit_16(1031); +emit_16(1096); +emit_16(1032); +emit_16(1096); +emit_16(1031); +emit_16(1096); +emit_16(1032); +emit_16(1097); +emit_16(1033); +emit_16(1097); +emit_16(1032); +emit_16(1097); +emit_16(1033); +emit_16(1098); +emit_16(1034); +emit_16(1098); +emit_16(1033); +emit_16(1098); +emit_16(1034); +emit_16(1099); +emit_16(1035); +emit_16(1099); +emit_16(1034); +emit_16(1099); +emit_16(1035); +emit_16(1100); +emit_16(1036); +emit_16(1100); +emit_16(1035); +emit_16(1100); +emit_16(1036); +emit_16(1101); +emit_16(1037); +emit_16(1101); +emit_16(1036); +emit_16(1101); +emit_16(1037); +emit_16(1102); +emit_16(1038); +emit_16(1102); +emit_16(1037); +emit_16(1102); +emit_16(1038); +emit_16(1103); +emit_16(1039); +emit_16(1103); +emit_16(1038); +emit_16(1103); +emit_16(1039); +emit_16(1104); +emit_16(1040); +emit_16(1104); +emit_16(1039); +emit_16(1104); +emit_16(1040); +emit_16(1105); +emit_16(1041); +emit_16(1105); +emit_16(1040); +emit_16(1105); +emit_16(1041); +emit_16(1106); +emit_16(1042); +emit_16(1106); +emit_16(1041); +emit_16(1106); +emit_16(1042); +emit_16(1107); +emit_16(1043); +emit_16(1107); +emit_16(1042); +emit_16(1107); +emit_16(1043); +emit_16(1108); +emit_16(1044); +emit_16(1108); +emit_16(1043); +emit_16(1108); +emit_16(1044); +emit_16(1109); +emit_16(1045); +emit_16(1109); +emit_16(1044); +emit_16(1109); +emit_16(1045); +emit_16(1110); +emit_16(1046); +emit_16(1110); +emit_16(1045); +emit_16(1110); +emit_16(1046); +emit_16(1111); +emit_16(1047); +emit_16(1111); +emit_16(1046); +emit_16(1111); +emit_16(1047); +emit_16(1112); +emit_16(1048); +emit_16(1112); +emit_16(1047); +emit_16(1112); +emit_16(1048); +emit_16(1113); +emit_16(1049); +emit_16(1113); +emit_16(1048); +emit_16(1113); +emit_16(1049); +emit_16(1114); +emit_16(1050); +emit_16(1114); +emit_16(1049); +emit_16(1114); +emit_16(1050); +emit_16(1115); +emit_16(1051); +emit_16(1115); +emit_16(1050); +emit_16(1115); +emit_16(1051); +emit_16(1116); +emit_16(1052); +emit_16(1116); +emit_16(1051); +emit_16(1116); +emit_16(1052); +emit_16(1117); +emit_16(1053); +emit_16(1117); +emit_16(1052); +emit_16(1117); +emit_16(1053); +emit_16(1118); +emit_16(1054); +emit_16(1118); +emit_16(1053); +emit_16(1118); +emit_16(1054); +emit_16(1119); +emit_16(1055); +emit_16(1119); +emit_16(1054); +emit_16(1119); +emit_16(1055); +emit_16(1120); +emit_16(1056); +emit_16(1120); +emit_16(1055); +emit_16(1120); +emit_16(1056); +emit_16(1121); +emit_16(1057); +emit_16(1121); +emit_16(1056); +emit_16(1121); +emit_16(1057); +emit_16(1122); +emit_16(1058); +emit_16(1122); +emit_16(1057); +emit_16(1122); +emit_16(1058); +emit_16(1123); +emit_16(1059); +emit_16(1123); +emit_16(1058); +emit_16(1123); +emit_16(1059); +emit_16(1124); +emit_16(1060); +emit_16(1124); +emit_16(1059); +emit_16(1124); +emit_16(1060); +emit_16(1125); +emit_16(1061); +emit_16(1125); +emit_16(1060); +emit_16(1125); +emit_16(1061); +emit_16(1126); +emit_16(1062); +emit_16(1126); +emit_16(1061); +emit_16(1126); +emit_16(1062); +emit_16(1127); +emit_16(1063); +emit_16(1127); +emit_16(1062); +emit_16(1127); +emit_16(1063); +emit_16(1128); +emit_16(1064); +emit_16(1128); +emit_16(1063); +emit_16(1128); +emit_16(1064); +emit_16(1129); +emit_16(1065); +emit_16(1129); +emit_16(1064); +emit_16(1129); +emit_16(1065); +emit_16(1130); +emit_16(1066); +emit_16(1130); +emit_16(1065); +emit_16(1130); +emit_16(1066); +emit_16(1131); +emit_16(1067); +emit_16(1131); +emit_16(1066); +emit_16(1131); +emit_16(1067); +emit_16(1132); +emit_16(1068); +emit_16(1132); +emit_16(1067); +emit_16(1132); +emit_16(1068); +emit_16(1133); +emit_16(1069); +emit_16(1133); +emit_16(1068); +emit_16(1133); +emit_16(1069); +emit_16(1134); +emit_16(1070); +emit_16(1134); +emit_16(1069); +emit_16(1134); +emit_16(1070); +emit_16(1135); +emit_16(1071); +emit_16(1135); +emit_16(1070); +emit_16(1135); +emit_16(1071); +emit_16(1136); +emit_16(1072); +emit_16(1136); +emit_16(1071); +emit_16(1136); +emit_16(1072); +emit_16(1137); +emit_16(1073); +emit_16(1137); +emit_16(1072); +emit_16(1137); +emit_16(1073); +emit_16(1138); +emit_16(1074); +emit_16(1138); +emit_16(1073); +emit_16(1138); +emit_16(1074); +emit_16(1139); +emit_16(1075); +emit_16(1139); +emit_16(1074); +emit_16(1139); +emit_16(1075); +emit_16(1140); +emit_16(1076); +emit_16(1140); +emit_16(1075); +emit_16(1140); +emit_16(1076); +emit_16(1141); +emit_16(1077); +emit_16(1141); +emit_16(1076); +emit_16(1141); +emit_16(1077); +emit_16(1142); +emit_16(1078); +emit_16(1142); +emit_16(1077); +emit_16(1142); +emit_16(1078); +emit_16(1143); +emit_16(1079); +emit_16(1143); +emit_16(1078); +emit_16(1143); +emit_16(1079); +emit_16(1144); +emit_16(1080); +emit_16(1144); +emit_16(1079); +emit_16(1144); +emit_16(1080); +emit_16(1145); +emit_16(1081); +emit_16(1145); +emit_16(1080); +emit_16(1145); +emit_16(1081); +emit_16(1146); +emit_16(1082); +emit_16(1146); +emit_16(1081); +emit_16(1146); +emit_16(1082); +emit_16(1147); +emit_16(1083); +emit_16(1147); +emit_16(1082); +emit_16(1147); +emit_16(1083); +emit_16(1148); +emit_16(1084); +emit_16(1148); +emit_16(1083); +emit_16(1148); +emit_16(1084); +emit_16(1149); +emit_16(1085); +emit_16(1149); +emit_16(1084); +emit_16(1149); +emit_16(1085); +emit_16(1150); +emit_16(1086); +emit_16(1150); +emit_16(1085); +emit_16(1150); +emit_16(1086); +emit_16(1151); +emit_16(1087); +emit_16(1151); +emit_16(1086); +emit_16(1152); +emit_16(1088); +emit_16(1153); +emit_16(1089); +emit_16(1153); +emit_16(1088); +emit_16(1153); +emit_16(1089); +emit_16(1154); +emit_16(1090); +emit_16(1154); +emit_16(1089); +emit_16(1154); +emit_16(1090); +emit_16(1155); +emit_16(1091); +emit_16(1155); +emit_16(1090); +emit_16(1155); +emit_16(1091); +emit_16(1156); +emit_16(1092); +emit_16(1156); +emit_16(1091); +emit_16(1156); +emit_16(1092); +emit_16(1157); +emit_16(1093); +emit_16(1157); +emit_16(1092); +emit_16(1157); +emit_16(1093); +emit_16(1158); +emit_16(1094); +emit_16(1158); +emit_16(1093); +emit_16(1158); +emit_16(1094); +emit_16(1159); +emit_16(1095); +emit_16(1159); +emit_16(1094); +emit_16(1159); +emit_16(1095); +emit_16(1160); +emit_16(1096); +emit_16(1160); +emit_16(1095); +emit_16(1160); +emit_16(1096); +emit_16(1161); +emit_16(1097); +emit_16(1161); +emit_16(1096); +emit_16(1161); +emit_16(1097); +emit_16(1162); +emit_16(1098); +emit_16(1162); +emit_16(1097); +emit_16(1162); +emit_16(1098); +emit_16(1163); +emit_16(1099); +emit_16(1163); +emit_16(1098); +emit_16(1163); +emit_16(1099); +emit_16(1164); +emit_16(1100); +emit_16(1164); +emit_16(1099); +emit_16(1164); +emit_16(1100); +emit_16(1165); +emit_16(1101); +emit_16(1165); +emit_16(1100); +emit_16(1165); +emit_16(1101); +emit_16(1166); +emit_16(1102); +emit_16(1166); +emit_16(1101); +emit_16(1166); +emit_16(1102); +emit_16(1167); +emit_16(1103); +emit_16(1167); +emit_16(1102); +emit_16(1167); +emit_16(1103); +emit_16(1168); +emit_16(1104); +emit_16(1168); +emit_16(1103); +emit_16(1168); +emit_16(1104); +emit_16(1169); +emit_16(1105); +emit_16(1169); +emit_16(1104); +emit_16(1169); +emit_16(1105); +emit_16(1170); +emit_16(1106); +emit_16(1170); +emit_16(1105); +emit_16(1170); +emit_16(1106); +emit_16(1171); +emit_16(1107); +emit_16(1171); +emit_16(1106); +emit_16(1171); +emit_16(1107); +emit_16(1172); +emit_16(1108); +emit_16(1172); +emit_16(1107); +emit_16(1172); +emit_16(1108); +emit_16(1173); +emit_16(1109); +emit_16(1173); +emit_16(1108); +emit_16(1173); +emit_16(1109); +emit_16(1174); +emit_16(1110); +emit_16(1174); +emit_16(1109); +emit_16(1174); +emit_16(1110); +emit_16(1175); +emit_16(1111); +emit_16(1175); +emit_16(1110); +emit_16(1175); +emit_16(1111); +emit_16(1176); +emit_16(1112); +emit_16(1176); +emit_16(1111); +emit_16(1176); +emit_16(1112); +emit_16(1177); +emit_16(1113); +emit_16(1177); +emit_16(1112); +emit_16(1177); +emit_16(1113); +emit_16(1178); +emit_16(1114); +emit_16(1178); +emit_16(1113); +emit_16(1178); +emit_16(1114); +emit_16(1179); +emit_16(1115); +emit_16(1179); +emit_16(1114); +emit_16(1179); +emit_16(1115); +emit_16(1180); +emit_16(1116); +emit_16(1180); +emit_16(1115); +emit_16(1180); +emit_16(1116); +emit_16(1181); +emit_16(1117); +emit_16(1181); +emit_16(1116); +emit_16(1181); +emit_16(1117); +emit_16(1182); +emit_16(1118); +emit_16(1182); +emit_16(1117); +emit_16(1182); +emit_16(1118); +emit_16(1183); +emit_16(1119); +emit_16(1183); +emit_16(1118); +emit_16(1183); +emit_16(1119); +emit_16(1184); +emit_16(1120); +emit_16(1184); +emit_16(1119); +emit_16(1184); +emit_16(1120); +emit_16(1185); +emit_16(1121); +emit_16(1185); +emit_16(1120); +emit_16(1185); +emit_16(1121); +emit_16(1186); +emit_16(1122); +emit_16(1186); +emit_16(1121); +emit_16(1186); +emit_16(1122); +emit_16(1187); +emit_16(1123); +emit_16(1187); +emit_16(1122); +emit_16(1187); +emit_16(1123); +emit_16(1188); +emit_16(1124); +emit_16(1188); +emit_16(1123); +emit_16(1188); +emit_16(1124); +emit_16(1189); +emit_16(1125); +emit_16(1189); +emit_16(1124); +emit_16(1189); +emit_16(1125); +emit_16(1190); +emit_16(1126); +emit_16(1190); +emit_16(1125); +emit_16(1190); +emit_16(1126); +emit_16(1191); +emit_16(1127); +emit_16(1191); +emit_16(1126); +emit_16(1191); +emit_16(1127); +emit_16(1192); +emit_16(1128); +emit_16(1192); +emit_16(1127); +emit_16(1192); +emit_16(1128); +emit_16(1193); +emit_16(1129); +emit_16(1193); +emit_16(1128); +emit_16(1193); +emit_16(1129); +emit_16(1194); +emit_16(1130); +emit_16(1194); +emit_16(1129); +emit_16(1194); +emit_16(1130); +emit_16(1195); +emit_16(1131); +emit_16(1195); +emit_16(1130); +emit_16(1195); +emit_16(1131); +emit_16(1196); +emit_16(1132); +emit_16(1196); +emit_16(1131); +emit_16(1196); +emit_16(1132); +emit_16(1197); +emit_16(1133); +emit_16(1197); +emit_16(1132); +emit_16(1197); +emit_16(1133); +emit_16(1198); +emit_16(1134); +emit_16(1198); +emit_16(1133); +emit_16(1198); +emit_16(1134); +emit_16(1199); +emit_16(1135); +emit_16(1199); +emit_16(1134); +emit_16(1199); +emit_16(1135); +emit_16(1200); +emit_16(1136); +emit_16(1200); +emit_16(1135); +emit_16(1200); +emit_16(1136); +emit_16(1201); +emit_16(1137); +emit_16(1201); +emit_16(1136); +emit_16(1201); +emit_16(1137); +emit_16(1202); +emit_16(1138); +emit_16(1202); +emit_16(1137); +emit_16(1202); +emit_16(1138); +emit_16(1203); +emit_16(1139); +emit_16(1203); +emit_16(1138); +emit_16(1203); +emit_16(1139); +emit_16(1204); +emit_16(1140); +emit_16(1204); +emit_16(1139); +emit_16(1204); +emit_16(1140); +emit_16(1205); +emit_16(1141); +emit_16(1205); +emit_16(1140); +emit_16(1205); +emit_16(1141); +emit_16(1206); +emit_16(1142); +emit_16(1206); +emit_16(1141); +emit_16(1206); +emit_16(1142); +emit_16(1207); +emit_16(1143); +emit_16(1207); +emit_16(1142); +emit_16(1207); +emit_16(1143); +emit_16(1208); +emit_16(1144); +emit_16(1208); +emit_16(1143); +emit_16(1208); +emit_16(1144); +emit_16(1209); +emit_16(1145); +emit_16(1209); +emit_16(1144); +emit_16(1209); +emit_16(1145); +emit_16(1210); +emit_16(1146); +emit_16(1210); +emit_16(1145); +emit_16(1210); +emit_16(1146); +emit_16(1211); +emit_16(1147); +emit_16(1211); +emit_16(1146); +emit_16(1211); +emit_16(1147); +emit_16(1212); +emit_16(1148); +emit_16(1212); +emit_16(1147); +emit_16(1212); +emit_16(1148); +emit_16(1213); +emit_16(1149); +emit_16(1213); +emit_16(1148); +emit_16(1213); +emit_16(1149); +emit_16(1214); +emit_16(1150); +emit_16(1214); +emit_16(1149); +emit_16(1214); +emit_16(1150); +emit_16(1215); +emit_16(1151); +emit_16(1215); +emit_16(1150); +emit_16(1216); +emit_16(1152); +emit_16(1217); +emit_16(1153); +emit_16(1217); +emit_16(1152); +emit_16(1217); +emit_16(1153); +emit_16(1218); +emit_16(1154); +emit_16(1218); +emit_16(1153); +emit_16(1218); +emit_16(1154); +emit_16(1219); +emit_16(1155); +emit_16(1219); +emit_16(1154); +emit_16(1219); +emit_16(1155); +emit_16(1220); +emit_16(1156); +emit_16(1220); +emit_16(1155); +emit_16(1220); +emit_16(1156); +emit_16(1221); +emit_16(1157); +emit_16(1221); +emit_16(1156); +emit_16(1221); +emit_16(1157); +emit_16(1222); +emit_16(1158); +emit_16(1222); +emit_16(1157); +emit_16(1222); +emit_16(1158); +emit_16(1223); +emit_16(1159); +emit_16(1223); +emit_16(1158); +emit_16(1223); +emit_16(1159); +emit_16(1224); +emit_16(1160); +emit_16(1224); +emit_16(1159); +emit_16(1224); +emit_16(1160); +emit_16(1225); +emit_16(1161); +emit_16(1225); +emit_16(1160); +emit_16(1225); +emit_16(1161); +emit_16(1226); +emit_16(1162); +emit_16(1226); +emit_16(1161); +emit_16(1226); +emit_16(1162); +emit_16(1227); +emit_16(1163); +emit_16(1227); +emit_16(1162); +emit_16(1227); +emit_16(1163); +emit_16(1228); +emit_16(1164); +emit_16(1228); +emit_16(1163); +emit_16(1228); +emit_16(1164); +emit_16(1229); +emit_16(1165); +emit_16(1229); +emit_16(1164); +emit_16(1229); +emit_16(1165); +emit_16(1230); +emit_16(1166); +emit_16(1230); +emit_16(1165); +emit_16(1230); +emit_16(1166); +emit_16(1231); +emit_16(1167); +emit_16(1231); +emit_16(1166); +emit_16(1231); +emit_16(1167); +emit_16(1232); +emit_16(1168); +emit_16(1232); +emit_16(1167); +emit_16(1232); +emit_16(1168); +emit_16(1233); +emit_16(1169); +emit_16(1233); +emit_16(1168); +emit_16(1233); +emit_16(1169); +emit_16(1234); +emit_16(1170); +emit_16(1234); +emit_16(1169); +emit_16(1234); +emit_16(1170); +emit_16(1235); +emit_16(1171); +emit_16(1235); +emit_16(1170); +emit_16(1235); +emit_16(1171); +emit_16(1236); +emit_16(1172); +emit_16(1236); +emit_16(1171); +emit_16(1236); +emit_16(1172); +emit_16(1237); +emit_16(1173); +emit_16(1237); +emit_16(1172); +emit_16(1237); +emit_16(1173); +emit_16(1238); +emit_16(1174); +emit_16(1238); +emit_16(1173); +emit_16(1238); +emit_16(1174); +emit_16(1239); +emit_16(1175); +emit_16(1239); +emit_16(1174); +emit_16(1239); +emit_16(1175); +emit_16(1240); +emit_16(1176); +emit_16(1240); +emit_16(1175); +emit_16(1240); +emit_16(1176); +emit_16(1241); +emit_16(1177); +emit_16(1241); +emit_16(1176); +emit_16(1241); +emit_16(1177); +emit_16(1242); +emit_16(1178); +emit_16(1242); +emit_16(1177); +emit_16(1242); +emit_16(1178); +emit_16(1243); +emit_16(1179); +emit_16(1243); +emit_16(1178); +emit_16(1243); +emit_16(1179); +emit_16(1244); +emit_16(1180); +emit_16(1244); +emit_16(1179); +emit_16(1244); +emit_16(1180); +emit_16(1245); +emit_16(1181); +emit_16(1245); +emit_16(1180); +emit_16(1245); +emit_16(1181); +emit_16(1246); +emit_16(1182); +emit_16(1246); +emit_16(1181); +emit_16(1246); +emit_16(1182); +emit_16(1247); +emit_16(1183); +emit_16(1247); +emit_16(1182); +emit_16(1247); +emit_16(1183); +emit_16(1248); +emit_16(1184); +emit_16(1248); +emit_16(1183); +emit_16(1248); +emit_16(1184); +emit_16(1249); +emit_16(1185); +emit_16(1249); +emit_16(1184); +emit_16(1249); +emit_16(1185); +emit_16(1250); +emit_16(1186); +emit_16(1250); +emit_16(1185); +emit_16(1250); +emit_16(1186); +emit_16(1251); +emit_16(1187); +emit_16(1251); +emit_16(1186); +emit_16(1251); +emit_16(1187); +emit_16(1252); +emit_16(1188); +emit_16(1252); +emit_16(1187); +emit_16(1252); +emit_16(1188); +emit_16(1253); +emit_16(1189); +emit_16(1253); +emit_16(1188); +emit_16(1253); +emit_16(1189); +emit_16(1254); +emit_16(1190); +emit_16(1254); +emit_16(1189); +emit_16(1254); +emit_16(1190); +emit_16(1255); +emit_16(1191); +emit_16(1255); +emit_16(1190); +emit_16(1255); +emit_16(1191); +emit_16(1256); +emit_16(1192); +emit_16(1256); +emit_16(1191); +emit_16(1256); +emit_16(1192); +emit_16(1257); +emit_16(1193); +emit_16(1257); +emit_16(1192); +emit_16(1257); +emit_16(1193); +emit_16(1258); +emit_16(1194); +emit_16(1258); +emit_16(1193); +emit_16(1258); +emit_16(1194); +emit_16(1259); +emit_16(1195); +emit_16(1259); +emit_16(1194); +emit_16(1259); +emit_16(1195); +emit_16(1260); +emit_16(1196); +emit_16(1260); +emit_16(1195); +emit_16(1260); +emit_16(1196); +emit_16(1261); +emit_16(1197); +emit_16(1261); +emit_16(1196); +emit_16(1261); +emit_16(1197); +emit_16(1262); +emit_16(1198); +emit_16(1262); +emit_16(1197); +emit_16(1262); +emit_16(1198); +emit_16(1263); +emit_16(1199); +emit_16(1263); +emit_16(1198); +emit_16(1263); +emit_16(1199); +emit_16(1264); +emit_16(1200); +emit_16(1264); +emit_16(1199); +emit_16(1264); +emit_16(1200); +emit_16(1265); +emit_16(1201); +emit_16(1265); +emit_16(1200); +emit_16(1265); +emit_16(1201); +emit_16(1266); +emit_16(1202); +emit_16(1266); +emit_16(1201); +emit_16(1266); +emit_16(1202); +emit_16(1267); +emit_16(1203); +emit_16(1267); +emit_16(1202); +emit_16(1267); +emit_16(1203); +emit_16(1268); +emit_16(1204); +emit_16(1268); +emit_16(1203); +emit_16(1268); +emit_16(1204); +emit_16(1269); +emit_16(1205); +emit_16(1269); +emit_16(1204); +emit_16(1269); +emit_16(1205); +emit_16(1270); +emit_16(1206); +emit_16(1270); +emit_16(1205); +emit_16(1270); +emit_16(1206); +emit_16(1271); +emit_16(1207); +emit_16(1271); +emit_16(1206); +emit_16(1271); +emit_16(1207); +emit_16(1272); +emit_16(1208); +emit_16(1272); +emit_16(1207); +emit_16(1272); +emit_16(1208); +emit_16(1273); +emit_16(1209); +emit_16(1273); +emit_16(1208); +emit_16(1273); +emit_16(1209); +emit_16(1274); +emit_16(1210); +emit_16(1274); +emit_16(1209); +emit_16(1274); +emit_16(1210); +emit_16(1275); +emit_16(1211); +emit_16(1275); +emit_16(1210); +emit_16(1275); +emit_16(1211); +emit_16(1276); +emit_16(1212); +emit_16(1276); +emit_16(1211); +emit_16(1276); +emit_16(1212); +emit_16(1277); +emit_16(1213); +emit_16(1277); +emit_16(1212); +emit_16(1277); +emit_16(1213); +emit_16(1278); +emit_16(1214); +emit_16(1278); +emit_16(1213); +emit_16(1278); +emit_16(1214); +emit_16(1279); +emit_16(1215); +emit_16(1279); +emit_16(1214); +emit_16(1280); +emit_16(1216); +emit_16(1281); +emit_16(1217); +emit_16(1281); +emit_16(1216); +emit_16(1281); +emit_16(1217); +emit_16(1282); +emit_16(1218); +emit_16(1282); +emit_16(1217); +emit_16(1282); +emit_16(1218); +emit_16(1283); +emit_16(1219); +emit_16(1283); +emit_16(1218); +emit_16(1283); +emit_16(1219); +emit_16(1284); +emit_16(1220); +emit_16(1284); +emit_16(1219); +emit_16(1284); +emit_16(1220); +emit_16(1285); +emit_16(1221); +emit_16(1285); +emit_16(1220); +emit_16(1285); +emit_16(1221); +emit_16(1286); +emit_16(1222); +emit_16(1286); +emit_16(1221); +emit_16(1286); +emit_16(1222); +emit_16(1287); +emit_16(1223); +emit_16(1287); +emit_16(1222); +emit_16(1287); +emit_16(1223); +emit_16(1288); +emit_16(1224); +emit_16(1288); +emit_16(1223); +emit_16(1288); +emit_16(1224); +emit_16(1289); +emit_16(1225); +emit_16(1289); +emit_16(1224); +emit_16(1289); +emit_16(1225); +emit_16(1290); +emit_16(1226); +emit_16(1290); +emit_16(1225); +emit_16(1290); +emit_16(1226); +emit_16(1291); +emit_16(1227); +emit_16(1291); +emit_16(1226); +emit_16(1291); +emit_16(1227); +emit_16(1292); +emit_16(1228); +emit_16(1292); +emit_16(1227); +emit_16(1292); +emit_16(1228); +emit_16(1293); +emit_16(1229); +emit_16(1293); +emit_16(1228); +emit_16(1293); +emit_16(1229); +emit_16(1294); +emit_16(1230); +emit_16(1294); +emit_16(1229); +emit_16(1294); +emit_16(1230); +emit_16(1295); +emit_16(1231); +emit_16(1295); +emit_16(1230); +emit_16(1295); +emit_16(1231); +emit_16(1296); +emit_16(1232); +emit_16(1296); +emit_16(1231); +emit_16(1296); +emit_16(1232); +emit_16(1297); +emit_16(1233); +emit_16(1297); +emit_16(1232); +emit_16(1297); +emit_16(1233); +emit_16(1298); +emit_16(1234); +emit_16(1298); +emit_16(1233); +emit_16(1298); +emit_16(1234); +emit_16(1299); +emit_16(1235); +emit_16(1299); +emit_16(1234); +emit_16(1299); +emit_16(1235); +emit_16(1300); +emit_16(1236); +emit_16(1300); +emit_16(1235); +emit_16(1300); +emit_16(1236); +emit_16(1301); +emit_16(1237); +emit_16(1301); +emit_16(1236); +emit_16(1301); +emit_16(1237); +emit_16(1302); +emit_16(1238); +emit_16(1302); +emit_16(1237); +emit_16(1302); +emit_16(1238); +emit_16(1303); +emit_16(1239); +emit_16(1303); +emit_16(1238); +emit_16(1303); +emit_16(1239); +emit_16(1304); +emit_16(1240); +emit_16(1304); +emit_16(1239); +emit_16(1304); +emit_16(1240); +emit_16(1305); +emit_16(1241); +emit_16(1305); +emit_16(1240); +emit_16(1305); +emit_16(1241); +emit_16(1306); +emit_16(1242); +emit_16(1306); +emit_16(1241); +emit_16(1306); +emit_16(1242); +emit_16(1307); +emit_16(1243); +emit_16(1307); +emit_16(1242); +emit_16(1307); +emit_16(1243); +emit_16(1308); +emit_16(1244); +emit_16(1308); +emit_16(1243); +emit_16(1308); +emit_16(1244); +emit_16(1309); +emit_16(1245); +emit_16(1309); +emit_16(1244); +emit_16(1309); +emit_16(1245); +emit_16(1310); +emit_16(1246); +emit_16(1310); +emit_16(1245); +emit_16(1310); +emit_16(1246); +emit_16(1311); +emit_16(1247); +emit_16(1311); +emit_16(1246); +emit_16(1311); +emit_16(1247); +emit_16(1312); +emit_16(1248); +emit_16(1312); +emit_16(1247); +emit_16(1312); +emit_16(1248); +emit_16(1313); +emit_16(1249); +emit_16(1313); +emit_16(1248); +emit_16(1313); +emit_16(1249); +emit_16(1314); +emit_16(1250); +emit_16(1314); +emit_16(1249); +emit_16(1314); +emit_16(1250); +emit_16(1315); +emit_16(1251); +emit_16(1315); +emit_16(1250); +emit_16(1315); +emit_16(1251); +emit_16(1316); +emit_16(1252); +emit_16(1316); +emit_16(1251); +emit_16(1316); +emit_16(1252); +emit_16(1317); +emit_16(1253); +emit_16(1317); +emit_16(1252); +emit_16(1317); +emit_16(1253); +emit_16(1318); +emit_16(1254); +emit_16(1318); +emit_16(1253); +emit_16(1318); +emit_16(1254); +emit_16(1319); +emit_16(1255); +emit_16(1319); +emit_16(1254); +emit_16(1319); +emit_16(1255); +emit_16(1320); +emit_16(1256); +emit_16(1320); +emit_16(1255); +emit_16(1320); +emit_16(1256); +emit_16(1321); +emit_16(1257); +emit_16(1321); +emit_16(1256); +emit_16(1321); +emit_16(1257); +emit_16(1322); +emit_16(1258); +emit_16(1322); +emit_16(1257); +emit_16(1322); +emit_16(1258); +emit_16(1323); +emit_16(1259); +emit_16(1323); +emit_16(1258); +emit_16(1323); +emit_16(1259); +emit_16(1324); +emit_16(1260); +emit_16(1324); +emit_16(1259); +emit_16(1324); +emit_16(1260); +emit_16(1325); +emit_16(1261); +emit_16(1325); +emit_16(1260); +emit_16(1325); +emit_16(1261); +emit_16(1326); +emit_16(1262); +emit_16(1326); +emit_16(1261); +emit_16(1326); +emit_16(1262); +emit_16(1327); +emit_16(1263); +emit_16(1327); +emit_16(1262); +emit_16(1327); +emit_16(1263); +emit_16(1328); +emit_16(1264); +emit_16(1328); +emit_16(1263); +emit_16(1328); +emit_16(1264); +emit_16(1329); +emit_16(1265); +emit_16(1329); +emit_16(1264); +emit_16(1329); +emit_16(1265); +emit_16(1330); +emit_16(1266); +emit_16(1330); +emit_16(1265); +emit_16(1330); +emit_16(1266); +emit_16(1331); +emit_16(1267); +emit_16(1331); +emit_16(1266); +emit_16(1331); +emit_16(1267); +emit_16(1332); +emit_16(1268); +emit_16(1332); +emit_16(1267); +emit_16(1332); +emit_16(1268); +emit_16(1333); +emit_16(1269); +emit_16(1333); +emit_16(1268); +emit_16(1333); +emit_16(1269); +emit_16(1334); +emit_16(1270); +emit_16(1334); +emit_16(1269); +emit_16(1334); +emit_16(1270); +emit_16(1335); +emit_16(1271); +emit_16(1335); +emit_16(1270); +emit_16(1335); +emit_16(1271); +emit_16(1336); +emit_16(1272); +emit_16(1336); +emit_16(1271); +emit_16(1336); +emit_16(1272); +emit_16(1337); +emit_16(1273); +emit_16(1337); +emit_16(1272); +emit_16(1337); +emit_16(1273); +emit_16(1338); +emit_16(1274); +emit_16(1338); +emit_16(1273); +emit_16(1338); +emit_16(1274); +emit_16(1339); +emit_16(1275); +emit_16(1339); +emit_16(1274); +emit_16(1339); +emit_16(1275); +emit_16(1340); +emit_16(1276); +emit_16(1340); +emit_16(1275); +emit_16(1340); +emit_16(1276); +emit_16(1341); +emit_16(1277); +emit_16(1341); +emit_16(1276); +emit_16(1341); +emit_16(1277); +emit_16(1342); +emit_16(1278); +emit_16(1342); +emit_16(1277); +emit_16(1342); +emit_16(1278); +emit_16(1343); +emit_16(1279); +emit_16(1343); +emit_16(1278); +emit_16(1344); +emit_16(1280); +emit_16(1345); +emit_16(1281); +emit_16(1345); +emit_16(1280); +emit_16(1345); +emit_16(1281); +emit_16(1346); +emit_16(1282); +emit_16(1346); +emit_16(1281); +emit_16(1346); +emit_16(1282); +emit_16(1347); +emit_16(1283); +emit_16(1347); +emit_16(1282); +emit_16(1347); +emit_16(1283); +emit_16(1348); +emit_16(1284); +emit_16(1348); +emit_16(1283); +emit_16(1348); +emit_16(1284); +emit_16(1349); +emit_16(1285); +emit_16(1349); +emit_16(1284); +emit_16(1349); +emit_16(1285); +emit_16(1350); +emit_16(1286); +emit_16(1350); +emit_16(1285); +emit_16(1350); +emit_16(1286); +emit_16(1351); +emit_16(1287); +emit_16(1351); +emit_16(1286); +emit_16(1351); +emit_16(1287); +emit_16(1352); +emit_16(1288); +emit_16(1352); +emit_16(1287); +emit_16(1352); +emit_16(1288); +emit_16(1353); +emit_16(1289); +emit_16(1353); +emit_16(1288); +emit_16(1353); +emit_16(1289); +emit_16(1354); +emit_16(1290); +emit_16(1354); +emit_16(1289); +emit_16(1354); +emit_16(1290); +emit_16(1355); +emit_16(1291); +emit_16(1355); +emit_16(1290); +emit_16(1355); +emit_16(1291); +emit_16(1356); +emit_16(1292); +emit_16(1356); +emit_16(1291); +emit_16(1356); +emit_16(1292); +emit_16(1357); +emit_16(1293); +emit_16(1357); +emit_16(1292); +emit_16(1357); +emit_16(1293); +emit_16(1358); +emit_16(1294); +emit_16(1358); +emit_16(1293); +emit_16(1358); +emit_16(1294); +emit_16(1359); +emit_16(1295); +emit_16(1359); +emit_16(1294); +emit_16(1359); +emit_16(1295); +emit_16(1360); +emit_16(1296); +emit_16(1360); +emit_16(1295); +emit_16(1360); +emit_16(1296); +emit_16(1361); +emit_16(1297); +emit_16(1361); +emit_16(1296); +emit_16(1361); +emit_16(1297); +emit_16(1362); +emit_16(1298); +emit_16(1362); +emit_16(1297); +emit_16(1362); +emit_16(1298); +emit_16(1363); +emit_16(1299); +emit_16(1363); +emit_16(1298); +emit_16(1363); +emit_16(1299); +emit_16(1364); +emit_16(1300); +emit_16(1364); +emit_16(1299); +emit_16(1364); +emit_16(1300); +emit_16(1365); +emit_16(1301); +emit_16(1365); +emit_16(1300); +emit_16(1365); +emit_16(1301); +emit_16(1366); +emit_16(1302); +emit_16(1366); +emit_16(1301); +emit_16(1366); +emit_16(1302); +emit_16(1367); +emit_16(1303); +emit_16(1367); +emit_16(1302); +emit_16(1367); +emit_16(1303); +emit_16(1368); +emit_16(1304); +emit_16(1368); +emit_16(1303); +emit_16(1368); +emit_16(1304); +emit_16(1369); +emit_16(1305); +emit_16(1369); +emit_16(1304); +emit_16(1369); +emit_16(1305); +emit_16(1370); +emit_16(1306); +emit_16(1370); +emit_16(1305); +emit_16(1370); +emit_16(1306); +emit_16(1371); +emit_16(1307); +emit_16(1371); +emit_16(1306); +emit_16(1371); +emit_16(1307); +emit_16(1372); +emit_16(1308); +emit_16(1372); +emit_16(1307); +emit_16(1372); +emit_16(1308); +emit_16(1373); +emit_16(1309); +emit_16(1373); +emit_16(1308); +emit_16(1373); +emit_16(1309); +emit_16(1374); +emit_16(1310); +emit_16(1374); +emit_16(1309); +emit_16(1374); +emit_16(1310); +emit_16(1375); +emit_16(1311); +emit_16(1375); +emit_16(1310); +emit_16(1375); +emit_16(1311); +emit_16(1376); +emit_16(1312); +emit_16(1376); +emit_16(1311); +emit_16(1376); +emit_16(1312); +emit_16(1377); +emit_16(1313); +emit_16(1377); +emit_16(1312); +emit_16(1377); +emit_16(1313); +emit_16(1378); +emit_16(1314); +emit_16(1378); +emit_16(1313); +emit_16(1378); +emit_16(1314); +emit_16(1379); +emit_16(1315); +emit_16(1379); +emit_16(1314); +emit_16(1379); +emit_16(1315); +emit_16(1380); +emit_16(1316); +emit_16(1380); +emit_16(1315); +emit_16(1380); +emit_16(1316); +emit_16(1381); +emit_16(1317); +emit_16(1381); +emit_16(1316); +emit_16(1381); +emit_16(1317); +emit_16(1382); +emit_16(1318); +emit_16(1382); +emit_16(1317); +emit_16(1382); +emit_16(1318); +emit_16(1383); +emit_16(1319); +emit_16(1383); +emit_16(1318); +emit_16(1383); +emit_16(1319); +emit_16(1384); +emit_16(1320); +emit_16(1384); +emit_16(1319); +emit_16(1384); +emit_16(1320); +emit_16(1385); +emit_16(1321); +emit_16(1385); +emit_16(1320); +emit_16(1385); +emit_16(1321); +emit_16(1386); +emit_16(1322); +emit_16(1386); +emit_16(1321); +emit_16(1386); +emit_16(1322); +emit_16(1387); +emit_16(1323); +emit_16(1387); +emit_16(1322); +emit_16(1387); +emit_16(1323); +emit_16(1388); +emit_16(1324); +emit_16(1388); +emit_16(1323); +emit_16(1388); +emit_16(1324); +emit_16(1389); +emit_16(1325); +emit_16(1389); +emit_16(1324); +emit_16(1389); +emit_16(1325); +emit_16(1390); +emit_16(1326); +emit_16(1390); +emit_16(1325); +emit_16(1390); +emit_16(1326); +emit_16(1391); +emit_16(1327); +emit_16(1391); +emit_16(1326); +emit_16(1391); +emit_16(1327); +emit_16(1392); +emit_16(1328); +emit_16(1392); +emit_16(1327); +emit_16(1392); +emit_16(1328); +emit_16(1393); +emit_16(1329); +emit_16(1393); +emit_16(1328); +emit_16(1393); +emit_16(1329); +emit_16(1394); +emit_16(1330); +emit_16(1394); +emit_16(1329); +emit_16(1394); +emit_16(1330); +emit_16(1395); +emit_16(1331); +emit_16(1395); +emit_16(1330); +emit_16(1395); +emit_16(1331); +emit_16(1396); +emit_16(1332); +emit_16(1396); +emit_16(1331); +emit_16(1396); +emit_16(1332); +emit_16(1397); +emit_16(1333); +emit_16(1397); +emit_16(1332); +emit_16(1397); +emit_16(1333); +emit_16(1398); +emit_16(1334); +emit_16(1398); +emit_16(1333); +emit_16(1398); +emit_16(1334); +emit_16(1399); +emit_16(1335); +emit_16(1399); +emit_16(1334); +emit_16(1399); +emit_16(1335); +emit_16(1400); +emit_16(1336); +emit_16(1400); +emit_16(1335); +emit_16(1400); +emit_16(1336); +emit_16(1401); +emit_16(1337); +emit_16(1401); +emit_16(1336); +emit_16(1401); +emit_16(1337); +emit_16(1402); +emit_16(1338); +emit_16(1402); +emit_16(1337); +emit_16(1402); +emit_16(1338); +emit_16(1403); +emit_16(1339); +emit_16(1403); +emit_16(1338); +emit_16(1403); +emit_16(1339); +emit_16(1404); +emit_16(1340); +emit_16(1404); +emit_16(1339); +emit_16(1404); +emit_16(1340); +emit_16(1405); +emit_16(1341); +emit_16(1405); +emit_16(1340); +emit_16(1405); +emit_16(1341); +emit_16(1406); +emit_16(1342); +emit_16(1406); +emit_16(1341); +emit_16(1406); +emit_16(1342); +emit_16(1407); +emit_16(1343); +emit_16(1407); +emit_16(1342); +emit_16(1408); +emit_16(1344); +emit_16(1409); +emit_16(1345); +emit_16(1409); +emit_16(1344); +emit_16(1409); +emit_16(1345); +emit_16(1410); +emit_16(1346); +emit_16(1410); +emit_16(1345); +emit_16(1410); +emit_16(1346); +emit_16(1411); +emit_16(1347); +emit_16(1411); +emit_16(1346); +emit_16(1411); +emit_16(1347); +emit_16(1412); +emit_16(1348); +emit_16(1412); +emit_16(1347); +emit_16(1412); +emit_16(1348); +emit_16(1413); +emit_16(1349); +emit_16(1413); +emit_16(1348); +emit_16(1413); +emit_16(1349); +emit_16(1414); +emit_16(1350); +emit_16(1414); +emit_16(1349); +emit_16(1414); +emit_16(1350); +emit_16(1415); +emit_16(1351); +emit_16(1415); +emit_16(1350); +emit_16(1415); +emit_16(1351); +emit_16(1416); +emit_16(1352); +emit_16(1416); +emit_16(1351); +emit_16(1416); +emit_16(1352); +emit_16(1417); +emit_16(1353); +emit_16(1417); +emit_16(1352); +emit_16(1417); +emit_16(1353); +emit_16(1418); +emit_16(1354); +emit_16(1418); +emit_16(1353); +emit_16(1418); +emit_16(1354); +emit_16(1419); +emit_16(1355); +emit_16(1419); +emit_16(1354); +emit_16(1419); +emit_16(1355); +emit_16(1420); +emit_16(1356); +emit_16(1420); +emit_16(1355); +emit_16(1420); +emit_16(1356); +emit_16(1421); +emit_16(1357); +emit_16(1421); +emit_16(1356); +emit_16(1421); +emit_16(1357); +emit_16(1422); +emit_16(1358); +emit_16(1422); +emit_16(1357); +emit_16(1422); +emit_16(1358); +emit_16(1423); +emit_16(1359); +emit_16(1423); +emit_16(1358); +emit_16(1423); +emit_16(1359); +emit_16(1424); +emit_16(1360); +emit_16(1424); +emit_16(1359); +emit_16(1424); +emit_16(1360); +emit_16(1425); +emit_16(1361); +emit_16(1425); +emit_16(1360); +emit_16(1425); +emit_16(1361); +emit_16(1426); +emit_16(1362); +emit_16(1426); +emit_16(1361); +emit_16(1426); +emit_16(1362); +emit_16(1427); +emit_16(1363); +emit_16(1427); +emit_16(1362); +emit_16(1427); +emit_16(1363); +emit_16(1428); +emit_16(1364); +emit_16(1428); +emit_16(1363); +emit_16(1428); +emit_16(1364); +emit_16(1429); +emit_16(1365); +emit_16(1429); +emit_16(1364); +emit_16(1429); +emit_16(1365); +emit_16(1430); +emit_16(1366); +emit_16(1430); +emit_16(1365); +emit_16(1430); +emit_16(1366); +emit_16(1431); +emit_16(1367); +emit_16(1431); +emit_16(1366); +emit_16(1431); +emit_16(1367); +emit_16(1432); +emit_16(1368); +emit_16(1432); +emit_16(1367); +emit_16(1432); +emit_16(1368); +emit_16(1433); +emit_16(1369); +emit_16(1433); +emit_16(1368); +emit_16(1433); +emit_16(1369); +emit_16(1434); +emit_16(1370); +emit_16(1434); +emit_16(1369); +emit_16(1434); +emit_16(1370); +emit_16(1435); +emit_16(1371); +emit_16(1435); +emit_16(1370); +emit_16(1435); +emit_16(1371); +emit_16(1436); +emit_16(1372); +emit_16(1436); +emit_16(1371); +emit_16(1436); +emit_16(1372); +emit_16(1437); +emit_16(1373); +emit_16(1437); +emit_16(1372); +emit_16(1437); +emit_16(1373); +emit_16(1438); +emit_16(1374); +emit_16(1438); +emit_16(1373); +emit_16(1438); +emit_16(1374); +emit_16(1439); +emit_16(1375); +emit_16(1439); +emit_16(1374); +emit_16(1439); +emit_16(1375); +emit_16(1440); +emit_16(1376); +emit_16(1440); +emit_16(1375); +emit_16(1440); +emit_16(1376); +emit_16(1441); +emit_16(1377); +emit_16(1441); +emit_16(1376); +emit_16(1441); +emit_16(1377); +emit_16(1442); +emit_16(1378); +emit_16(1442); +emit_16(1377); +emit_16(1442); +emit_16(1378); +emit_16(1443); +emit_16(1379); +emit_16(1443); +emit_16(1378); +emit_16(1443); +emit_16(1379); +emit_16(1444); +emit_16(1380); +emit_16(1444); +emit_16(1379); +emit_16(1444); +emit_16(1380); +emit_16(1445); +emit_16(1381); +emit_16(1445); +emit_16(1380); +emit_16(1445); +emit_16(1381); +emit_16(1446); +emit_16(1382); +emit_16(1446); +emit_16(1381); +emit_16(1446); +emit_16(1382); +emit_16(1447); +emit_16(1383); +emit_16(1447); +emit_16(1382); +emit_16(1447); +emit_16(1383); +emit_16(1448); +emit_16(1384); +emit_16(1448); +emit_16(1383); +emit_16(1448); +emit_16(1384); +emit_16(1449); +emit_16(1385); +emit_16(1449); +emit_16(1384); +emit_16(1449); +emit_16(1385); +emit_16(1450); +emit_16(1386); +emit_16(1450); +emit_16(1385); +emit_16(1450); +emit_16(1386); +emit_16(1451); +emit_16(1387); +emit_16(1451); +emit_16(1386); +emit_16(1451); +emit_16(1387); +emit_16(1452); +emit_16(1388); +emit_16(1452); +emit_16(1387); +emit_16(1452); +emit_16(1388); +emit_16(1453); +emit_16(1389); +emit_16(1453); +emit_16(1388); +emit_16(1453); +emit_16(1389); +emit_16(1454); +emit_16(1390); +emit_16(1454); +emit_16(1389); +emit_16(1454); +emit_16(1390); +emit_16(1455); +emit_16(1391); +emit_16(1455); +emit_16(1390); +emit_16(1455); +emit_16(1391); +emit_16(1456); +emit_16(1392); +emit_16(1456); +emit_16(1391); +emit_16(1456); +emit_16(1392); +emit_16(1457); +emit_16(1393); +emit_16(1457); +emit_16(1392); +emit_16(1457); +emit_16(1393); +emit_16(1458); +emit_16(1394); +emit_16(1458); +emit_16(1393); +emit_16(1458); +emit_16(1394); +emit_16(1459); +emit_16(1395); +emit_16(1459); +emit_16(1394); +emit_16(1459); +emit_16(1395); +emit_16(1460); +emit_16(1396); +emit_16(1460); +emit_16(1395); +emit_16(1460); +emit_16(1396); +emit_16(1461); +emit_16(1397); +emit_16(1461); +emit_16(1396); +emit_16(1461); +emit_16(1397); +emit_16(1462); +emit_16(1398); +emit_16(1462); +emit_16(1397); +emit_16(1462); +emit_16(1398); +emit_16(1463); +emit_16(1399); +emit_16(1463); +emit_16(1398); +emit_16(1463); +emit_16(1399); +emit_16(1464); +emit_16(1400); +emit_16(1464); +emit_16(1399); +emit_16(1464); +emit_16(1400); +emit_16(1465); +emit_16(1401); +emit_16(1465); +emit_16(1400); +emit_16(1465); +emit_16(1401); +emit_16(1466); +emit_16(1402); +emit_16(1466); +emit_16(1401); +emit_16(1466); +emit_16(1402); +emit_16(1467); +emit_16(1403); +emit_16(1467); +emit_16(1402); +emit_16(1467); +emit_16(1403); +emit_16(1468); +emit_16(1404); +emit_16(1468); +emit_16(1403); +emit_16(1468); +emit_16(1404); +emit_16(1469); +emit_16(1405); +emit_16(1469); +emit_16(1404); +emit_16(1469); +emit_16(1405); +emit_16(1470); +emit_16(1406); +emit_16(1470); +emit_16(1405); +emit_16(1470); +emit_16(1406); +emit_16(1471); +emit_16(1407); +emit_16(1471); +emit_16(1406); +emit_16(1472); +emit_16(1408); +emit_16(1473); +emit_16(1409); +emit_16(1473); +emit_16(1408); +emit_16(1473); +emit_16(1409); +emit_16(1474); +emit_16(1410); +emit_16(1474); +emit_16(1409); +emit_16(1474); +emit_16(1410); +emit_16(1475); +emit_16(1411); +emit_16(1475); +emit_16(1410); +emit_16(1475); +emit_16(1411); +emit_16(1476); +emit_16(1412); +emit_16(1476); +emit_16(1411); +emit_16(1476); +emit_16(1412); +emit_16(1477); +emit_16(1413); +emit_16(1477); +emit_16(1412); +emit_16(1477); +emit_16(1413); +emit_16(1478); +emit_16(1414); +emit_16(1478); +emit_16(1413); +emit_16(1478); +emit_16(1414); +emit_16(1479); +emit_16(1415); +emit_16(1479); +emit_16(1414); +emit_16(1479); +emit_16(1415); +emit_16(1480); +emit_16(1416); +emit_16(1480); +emit_16(1415); +emit_16(1480); +emit_16(1416); +emit_16(1481); +emit_16(1417); +emit_16(1481); +emit_16(1416); +emit_16(1481); +emit_16(1417); +emit_16(1482); +emit_16(1418); +emit_16(1482); +emit_16(1417); +emit_16(1482); +emit_16(1418); +emit_16(1483); +emit_16(1419); +emit_16(1483); +emit_16(1418); +emit_16(1483); +emit_16(1419); +emit_16(1484); +emit_16(1420); +emit_16(1484); +emit_16(1419); +emit_16(1484); +emit_16(1420); +emit_16(1485); +emit_16(1421); +emit_16(1485); +emit_16(1420); +emit_16(1485); +emit_16(1421); +emit_16(1486); +emit_16(1422); +emit_16(1486); +emit_16(1421); +emit_16(1486); +emit_16(1422); +emit_16(1487); +emit_16(1423); +emit_16(1487); +emit_16(1422); +emit_16(1487); +emit_16(1423); +emit_16(1488); +emit_16(1424); +emit_16(1488); +emit_16(1423); +emit_16(1488); +emit_16(1424); +emit_16(1489); +emit_16(1425); +emit_16(1489); +emit_16(1424); +emit_16(1489); +emit_16(1425); +emit_16(1490); +emit_16(1426); +emit_16(1490); +emit_16(1425); +emit_16(1490); +emit_16(1426); +emit_16(1491); +emit_16(1427); +emit_16(1491); +emit_16(1426); +emit_16(1491); +emit_16(1427); +emit_16(1492); +emit_16(1428); +emit_16(1492); +emit_16(1427); +emit_16(1492); +emit_16(1428); +emit_16(1493); +emit_16(1429); +emit_16(1493); +emit_16(1428); +emit_16(1493); +emit_16(1429); +emit_16(1494); +emit_16(1430); +emit_16(1494); +emit_16(1429); +emit_16(1494); +emit_16(1430); +emit_16(1495); +emit_16(1431); +emit_16(1495); +emit_16(1430); +emit_16(1495); +emit_16(1431); +emit_16(1496); +emit_16(1432); +emit_16(1496); +emit_16(1431); +emit_16(1496); +emit_16(1432); +emit_16(1497); +emit_16(1433); +emit_16(1497); +emit_16(1432); +emit_16(1497); +emit_16(1433); +emit_16(1498); +emit_16(1434); +emit_16(1498); +emit_16(1433); +emit_16(1498); +emit_16(1434); +emit_16(1499); +emit_16(1435); +emit_16(1499); +emit_16(1434); +emit_16(1499); +emit_16(1435); +emit_16(1500); +emit_16(1436); +emit_16(1500); +emit_16(1435); +emit_16(1500); +emit_16(1436); +emit_16(1501); +emit_16(1437); +emit_16(1501); +emit_16(1436); +emit_16(1501); +emit_16(1437); +emit_16(1502); +emit_16(1438); +emit_16(1502); +emit_16(1437); +emit_16(1502); +emit_16(1438); +emit_16(1503); +emit_16(1439); +emit_16(1503); +emit_16(1438); +emit_16(1503); +emit_16(1439); +emit_16(1504); +emit_16(1440); +emit_16(1504); +emit_16(1439); +emit_16(1504); +emit_16(1440); +emit_16(1505); +emit_16(1441); +emit_16(1505); +emit_16(1440); +emit_16(1505); +emit_16(1441); +emit_16(1506); +emit_16(1442); +emit_16(1506); +emit_16(1441); +emit_16(1506); +emit_16(1442); +emit_16(1507); +emit_16(1443); +emit_16(1507); +emit_16(1442); +emit_16(1507); +emit_16(1443); +emit_16(1508); +emit_16(1444); +emit_16(1508); +emit_16(1443); +emit_16(1508); +emit_16(1444); +emit_16(1509); +emit_16(1445); +emit_16(1509); +emit_16(1444); +emit_16(1509); +emit_16(1445); +emit_16(1510); +emit_16(1446); +emit_16(1510); +emit_16(1445); +emit_16(1510); +emit_16(1446); +emit_16(1511); +emit_16(1447); +emit_16(1511); +emit_16(1446); +emit_16(1511); +emit_16(1447); +emit_16(1512); +emit_16(1448); +emit_16(1512); +emit_16(1447); +emit_16(1512); +emit_16(1448); +emit_16(1513); +emit_16(1449); +emit_16(1513); +emit_16(1448); +emit_16(1513); +emit_16(1449); +emit_16(1514); +emit_16(1450); +emit_16(1514); +emit_16(1449); +emit_16(1514); +emit_16(1450); +emit_16(1515); +emit_16(1451); +emit_16(1515); +emit_16(1450); +emit_16(1515); +emit_16(1451); +emit_16(1516); +emit_16(1452); +emit_16(1516); +emit_16(1451); +emit_16(1516); +emit_16(1452); +emit_16(1517); +emit_16(1453); +emit_16(1517); +emit_16(1452); +emit_16(1517); +emit_16(1453); +emit_16(1518); +emit_16(1454); +emit_16(1518); +emit_16(1453); +emit_16(1518); +emit_16(1454); +emit_16(1519); +emit_16(1455); +emit_16(1519); +emit_16(1454); +emit_16(1519); +emit_16(1455); +emit_16(1520); +emit_16(1456); +emit_16(1520); +emit_16(1455); +emit_16(1520); +emit_16(1456); +emit_16(1521); +emit_16(1457); +emit_16(1521); +emit_16(1456); +emit_16(1521); +emit_16(1457); +emit_16(1522); +emit_16(1458); +emit_16(1522); +emit_16(1457); +emit_16(1522); +emit_16(1458); +emit_16(1523); +emit_16(1459); +emit_16(1523); +emit_16(1458); +emit_16(1523); +emit_16(1459); +emit_16(1524); +emit_16(1460); +emit_16(1524); +emit_16(1459); +emit_16(1524); +emit_16(1460); +emit_16(1525); +emit_16(1461); +emit_16(1525); +emit_16(1460); +emit_16(1525); +emit_16(1461); +emit_16(1526); +emit_16(1462); +emit_16(1526); +emit_16(1461); +emit_16(1526); +emit_16(1462); +emit_16(1527); +emit_16(1463); +emit_16(1527); +emit_16(1462); +emit_16(1527); +emit_16(1463); +emit_16(1528); +emit_16(1464); +emit_16(1528); +emit_16(1463); +emit_16(1528); +emit_16(1464); +emit_16(1529); +emit_16(1465); +emit_16(1529); +emit_16(1464); +emit_16(1529); +emit_16(1465); +emit_16(1530); +emit_16(1466); +emit_16(1530); +emit_16(1465); +emit_16(1530); +emit_16(1466); +emit_16(1531); +emit_16(1467); +emit_16(1531); +emit_16(1466); +emit_16(1531); +emit_16(1467); +emit_16(1532); +emit_16(1468); +emit_16(1532); +emit_16(1467); +emit_16(1532); +emit_16(1468); +emit_16(1533); +emit_16(1469); +emit_16(1533); +emit_16(1468); +emit_16(1533); +emit_16(1469); +emit_16(1534); +emit_16(1470); +emit_16(1534); +emit_16(1469); +emit_16(1534); +emit_16(1470); +emit_16(1535); +emit_16(1471); +emit_16(1535); +emit_16(1470); +emit_16(1536); +emit_16(1472); +emit_16(1537); +emit_16(1473); +emit_16(1537); +emit_16(1472); +emit_16(1537); +emit_16(1473); +emit_16(1538); +emit_16(1474); +emit_16(1538); +emit_16(1473); +emit_16(1538); +emit_16(1474); +emit_16(1539); +emit_16(1475); +emit_16(1539); +emit_16(1474); +emit_16(1539); +emit_16(1475); +emit_16(1540); +emit_16(1476); +emit_16(1540); +emit_16(1475); +emit_16(1540); +emit_16(1476); +emit_16(1541); +emit_16(1477); +emit_16(1541); +emit_16(1476); +emit_16(1541); +emit_16(1477); +emit_16(1542); +emit_16(1478); +emit_16(1542); +emit_16(1477); +emit_16(1542); +emit_16(1478); +emit_16(1543); +emit_16(1479); +emit_16(1543); +emit_16(1478); +emit_16(1543); +emit_16(1479); +emit_16(1544); +emit_16(1480); +emit_16(1544); +emit_16(1479); +emit_16(1544); +emit_16(1480); +emit_16(1545); +emit_16(1481); +emit_16(1545); +emit_16(1480); +emit_16(1545); +emit_16(1481); +emit_16(1546); +emit_16(1482); +emit_16(1546); +emit_16(1481); +emit_16(1546); +emit_16(1482); +emit_16(1547); +emit_16(1483); +emit_16(1547); +emit_16(1482); +emit_16(1547); +emit_16(1483); +emit_16(1548); +emit_16(1484); +emit_16(1548); +emit_16(1483); +emit_16(1548); +emit_16(1484); +emit_16(1549); +emit_16(1485); +emit_16(1549); +emit_16(1484); +emit_16(1549); +emit_16(1485); +emit_16(1550); +emit_16(1486); +emit_16(1550); +emit_16(1485); +emit_16(1550); +emit_16(1486); +emit_16(1551); +emit_16(1487); +emit_16(1551); +emit_16(1486); +emit_16(1551); +emit_16(1487); +emit_16(1552); +emit_16(1488); +emit_16(1552); +emit_16(1487); +emit_16(1552); +emit_16(1488); +emit_16(1553); +emit_16(1489); +emit_16(1553); +emit_16(1488); +emit_16(1553); +emit_16(1489); +emit_16(1554); +emit_16(1490); +emit_16(1554); +emit_16(1489); +emit_16(1554); +emit_16(1490); +emit_16(1555); +emit_16(1491); +emit_16(1555); +emit_16(1490); +emit_16(1555); +emit_16(1491); +emit_16(1556); +emit_16(1492); +emit_16(1556); +emit_16(1491); +emit_16(1556); +emit_16(1492); +emit_16(1557); +emit_16(1493); +emit_16(1557); +emit_16(1492); +emit_16(1557); +emit_16(1493); +emit_16(1558); +emit_16(1494); +emit_16(1558); +emit_16(1493); +emit_16(1558); +emit_16(1494); +emit_16(1559); +emit_16(1495); +emit_16(1559); +emit_16(1494); +emit_16(1559); +emit_16(1495); +emit_16(1560); +emit_16(1496); +emit_16(1560); +emit_16(1495); +emit_16(1560); +emit_16(1496); +emit_16(1561); +emit_16(1497); +emit_16(1561); +emit_16(1496); +emit_16(1561); +emit_16(1497); +emit_16(1562); +emit_16(1498); +emit_16(1562); +emit_16(1497); +emit_16(1562); +emit_16(1498); +emit_16(1563); +emit_16(1499); +emit_16(1563); +emit_16(1498); +emit_16(1563); +emit_16(1499); +emit_16(1564); +emit_16(1500); +emit_16(1564); +emit_16(1499); +emit_16(1564); +emit_16(1500); +emit_16(1565); +emit_16(1501); +emit_16(1565); +emit_16(1500); +emit_16(1565); +emit_16(1501); +emit_16(1566); +emit_16(1502); +emit_16(1566); +emit_16(1501); +emit_16(1566); +emit_16(1502); +emit_16(1567); +emit_16(1503); +emit_16(1567); +emit_16(1502); +emit_16(1567); +emit_16(1503); +emit_16(1568); +emit_16(1504); +emit_16(1568); +emit_16(1503); +emit_16(1568); +emit_16(1504); +emit_16(1569); +emit_16(1505); +emit_16(1569); +emit_16(1504); +emit_16(1569); +emit_16(1505); +emit_16(1570); +emit_16(1506); +emit_16(1570); +emit_16(1505); +emit_16(1570); +emit_16(1506); +emit_16(1571); +emit_16(1507); +emit_16(1571); +emit_16(1506); +emit_16(1571); +emit_16(1507); +emit_16(1572); +emit_16(1508); +emit_16(1572); +emit_16(1507); +emit_16(1572); +emit_16(1508); +emit_16(1573); +emit_16(1509); +emit_16(1573); +emit_16(1508); +emit_16(1573); +emit_16(1509); +emit_16(1574); +emit_16(1510); +emit_16(1574); +emit_16(1509); +emit_16(1574); +emit_16(1510); +emit_16(1575); +emit_16(1511); +emit_16(1575); +emit_16(1510); +emit_16(1575); +emit_16(1511); +emit_16(1576); +emit_16(1512); +emit_16(1576); +emit_16(1511); +emit_16(1576); +emit_16(1512); +emit_16(1577); +emit_16(1513); +emit_16(1577); +emit_16(1512); +emit_16(1577); +emit_16(1513); +emit_16(1578); +emit_16(1514); +emit_16(1578); +emit_16(1513); +emit_16(1578); +emit_16(1514); +emit_16(1579); +emit_16(1515); +emit_16(1579); +emit_16(1514); +emit_16(1579); +emit_16(1515); +emit_16(1580); +emit_16(1516); +emit_16(1580); +emit_16(1515); +emit_16(1580); +emit_16(1516); +emit_16(1581); +emit_16(1517); +emit_16(1581); +emit_16(1516); +emit_16(1581); +emit_16(1517); +emit_16(1582); +emit_16(1518); +emit_16(1582); +emit_16(1517); +emit_16(1582); +emit_16(1518); +emit_16(1583); +emit_16(1519); +emit_16(1583); +emit_16(1518); +emit_16(1583); +emit_16(1519); +emit_16(1584); +emit_16(1520); +emit_16(1584); +emit_16(1519); +emit_16(1584); +emit_16(1520); +emit_16(1585); +emit_16(1521); +emit_16(1585); +emit_16(1520); +emit_16(1585); +emit_16(1521); +emit_16(1586); +emit_16(1522); +emit_16(1586); +emit_16(1521); +emit_16(1586); +emit_16(1522); +emit_16(1587); +emit_16(1523); +emit_16(1587); +emit_16(1522); +emit_16(1587); +emit_16(1523); +emit_16(1588); +emit_16(1524); +emit_16(1588); +emit_16(1523); +emit_16(1588); +emit_16(1524); +emit_16(1589); +emit_16(1525); +emit_16(1589); +emit_16(1524); +emit_16(1589); +emit_16(1525); +emit_16(1590); +emit_16(1526); +emit_16(1590); +emit_16(1525); +emit_16(1590); +emit_16(1526); +emit_16(1591); +emit_16(1527); +emit_16(1591); +emit_16(1526); +emit_16(1591); +emit_16(1527); +emit_16(1592); +emit_16(1528); +emit_16(1592); +emit_16(1527); +emit_16(1592); +emit_16(1528); +emit_16(1593); +emit_16(1529); +emit_16(1593); +emit_16(1528); +emit_16(1593); +emit_16(1529); +emit_16(1594); +emit_16(1530); +emit_16(1594); +emit_16(1529); +emit_16(1594); +emit_16(1530); +emit_16(1595); +emit_16(1531); +emit_16(1595); +emit_16(1530); +emit_16(1595); +emit_16(1531); +emit_16(1596); +emit_16(1532); +emit_16(1596); +emit_16(1531); +emit_16(1596); +emit_16(1532); +emit_16(1597); +emit_16(1533); +emit_16(1597); +emit_16(1532); +emit_16(1597); +emit_16(1533); +emit_16(1598); +emit_16(1534); +emit_16(1598); +emit_16(1533); +emit_16(1598); +emit_16(1534); +emit_16(1599); +emit_16(1535); +emit_16(1599); +emit_16(1534); +emit_16(1600); +emit_16(1536); +emit_16(1601); +emit_16(1537); +emit_16(1601); +emit_16(1536); +emit_16(1601); +emit_16(1537); +emit_16(1602); +emit_16(1538); +emit_16(1602); +emit_16(1537); +emit_16(1602); +emit_16(1538); +emit_16(1603); +emit_16(1539); +emit_16(1603); +emit_16(1538); +emit_16(1603); +emit_16(1539); +emit_16(1604); +emit_16(1540); +emit_16(1604); +emit_16(1539); +emit_16(1604); +emit_16(1540); +emit_16(1605); +emit_16(1541); +emit_16(1605); +emit_16(1540); +emit_16(1605); +emit_16(1541); +emit_16(1606); +emit_16(1542); +emit_16(1606); +emit_16(1541); +emit_16(1606); +emit_16(1542); +emit_16(1607); +emit_16(1543); +emit_16(1607); +emit_16(1542); +emit_16(1607); +emit_16(1543); +emit_16(1608); +emit_16(1544); +emit_16(1608); +emit_16(1543); +emit_16(1608); +emit_16(1544); +emit_16(1609); +emit_16(1545); +emit_16(1609); +emit_16(1544); +emit_16(1609); +emit_16(1545); +emit_16(1610); +emit_16(1546); +emit_16(1610); +emit_16(1545); +emit_16(1610); +emit_16(1546); +emit_16(1611); +emit_16(1547); +emit_16(1611); +emit_16(1546); +emit_16(1611); +emit_16(1547); +emit_16(1612); +emit_16(1548); +emit_16(1612); +emit_16(1547); +emit_16(1612); +emit_16(1548); +emit_16(1613); +emit_16(1549); +emit_16(1613); +emit_16(1548); +emit_16(1613); +emit_16(1549); +emit_16(1614); +emit_16(1550); +emit_16(1614); +emit_16(1549); +emit_16(1614); +emit_16(1550); +emit_16(1615); +emit_16(1551); +emit_16(1615); +emit_16(1550); +emit_16(1615); +emit_16(1551); +emit_16(1616); +emit_16(1552); +emit_16(1616); +emit_16(1551); +emit_16(1616); +emit_16(1552); +emit_16(1617); +emit_16(1553); +emit_16(1617); +emit_16(1552); +emit_16(1617); +emit_16(1553); +emit_16(1618); +emit_16(1554); +emit_16(1618); +emit_16(1553); +emit_16(1618); +emit_16(1554); +emit_16(1619); +emit_16(1555); +emit_16(1619); +emit_16(1554); +emit_16(1619); +emit_16(1555); +emit_16(1620); +emit_16(1556); +emit_16(1620); +emit_16(1555); +emit_16(1620); +emit_16(1556); +emit_16(1621); +emit_16(1557); +emit_16(1621); +emit_16(1556); +emit_16(1621); +emit_16(1557); +emit_16(1622); +emit_16(1558); +emit_16(1622); +emit_16(1557); +emit_16(1622); +emit_16(1558); +emit_16(1623); +emit_16(1559); +emit_16(1623); +emit_16(1558); +emit_16(1623); +emit_16(1559); +emit_16(1624); +emit_16(1560); +emit_16(1624); +emit_16(1559); +emit_16(1624); +emit_16(1560); +emit_16(1625); +emit_16(1561); +emit_16(1625); +emit_16(1560); +emit_16(1625); +emit_16(1561); +emit_16(1626); +emit_16(1562); +emit_16(1626); +emit_16(1561); +emit_16(1626); +emit_16(1562); +emit_16(1627); +emit_16(1563); +emit_16(1627); +emit_16(1562); +emit_16(1627); +emit_16(1563); +emit_16(1628); +emit_16(1564); +emit_16(1628); +emit_16(1563); +emit_16(1628); +emit_16(1564); +emit_16(1629); +emit_16(1565); +emit_16(1629); +emit_16(1564); +emit_16(1629); +emit_16(1565); +emit_16(1630); +emit_16(1566); +emit_16(1630); +emit_16(1565); +emit_16(1630); +emit_16(1566); +emit_16(1631); +emit_16(1567); +emit_16(1631); +emit_16(1566); +emit_16(1631); +emit_16(1567); +emit_16(1632); +emit_16(1568); +emit_16(1632); +emit_16(1567); +emit_16(1632); +emit_16(1568); +emit_16(1633); +emit_16(1569); +emit_16(1633); +emit_16(1568); +emit_16(1633); +emit_16(1569); +emit_16(1634); +emit_16(1570); +emit_16(1634); +emit_16(1569); +emit_16(1634); +emit_16(1570); +emit_16(1635); +emit_16(1571); +emit_16(1635); +emit_16(1570); +emit_16(1635); +emit_16(1571); +emit_16(1636); +emit_16(1572); +emit_16(1636); +emit_16(1571); +emit_16(1636); +emit_16(1572); +emit_16(1637); +emit_16(1573); +emit_16(1637); +emit_16(1572); +emit_16(1637); +emit_16(1573); +emit_16(1638); +emit_16(1574); +emit_16(1638); +emit_16(1573); +emit_16(1638); +emit_16(1574); +emit_16(1639); +emit_16(1575); +emit_16(1639); +emit_16(1574); +emit_16(1639); +emit_16(1575); +emit_16(1640); +emit_16(1576); +emit_16(1640); +emit_16(1575); +emit_16(1640); +emit_16(1576); +emit_16(1641); +emit_16(1577); +emit_16(1641); +emit_16(1576); +emit_16(1641); +emit_16(1577); +emit_16(1642); +emit_16(1578); +emit_16(1642); +emit_16(1577); +emit_16(1642); +emit_16(1578); +emit_16(1643); +emit_16(1579); +emit_16(1643); +emit_16(1578); +emit_16(1643); +emit_16(1579); +emit_16(1644); +emit_16(1580); +emit_16(1644); +emit_16(1579); +emit_16(1644); +emit_16(1580); +emit_16(1645); +emit_16(1581); +emit_16(1645); +emit_16(1580); +emit_16(1645); +emit_16(1581); +emit_16(1646); +emit_16(1582); +emit_16(1646); +emit_16(1581); +emit_16(1646); +emit_16(1582); +emit_16(1647); +emit_16(1583); +emit_16(1647); +emit_16(1582); +emit_16(1647); +emit_16(1583); +emit_16(1648); +emit_16(1584); +emit_16(1648); +emit_16(1583); +emit_16(1648); +emit_16(1584); +emit_16(1649); +emit_16(1585); +emit_16(1649); +emit_16(1584); +emit_16(1649); +emit_16(1585); +emit_16(1650); +emit_16(1586); +emit_16(1650); +emit_16(1585); +emit_16(1650); +emit_16(1586); +emit_16(1651); +emit_16(1587); +emit_16(1651); +emit_16(1586); +emit_16(1651); +emit_16(1587); +emit_16(1652); +emit_16(1588); +emit_16(1652); +emit_16(1587); +emit_16(1652); +emit_16(1588); +emit_16(1653); +emit_16(1589); +emit_16(1653); +emit_16(1588); +emit_16(1653); +emit_16(1589); +emit_16(1654); +emit_16(1590); +emit_16(1654); +emit_16(1589); +emit_16(1654); +emit_16(1590); +emit_16(1655); +emit_16(1591); +emit_16(1655); +emit_16(1590); +emit_16(1655); +emit_16(1591); +emit_16(1656); +emit_16(1592); +emit_16(1656); +emit_16(1591); +emit_16(1656); +emit_16(1592); +emit_16(1657); +emit_16(1593); +emit_16(1657); +emit_16(1592); +emit_16(1657); +emit_16(1593); +emit_16(1658); +emit_16(1594); +emit_16(1658); +emit_16(1593); +emit_16(1658); +emit_16(1594); +emit_16(1659); +emit_16(1595); +emit_16(1659); +emit_16(1594); +emit_16(1659); +emit_16(1595); +emit_16(1660); +emit_16(1596); +emit_16(1660); +emit_16(1595); +emit_16(1660); +emit_16(1596); +emit_16(1661); +emit_16(1597); +emit_16(1661); +emit_16(1596); +emit_16(1661); +emit_16(1597); +emit_16(1662); +emit_16(1598); +emit_16(1662); +emit_16(1597); +emit_16(1662); +emit_16(1598); +emit_16(1663); +emit_16(1599); +emit_16(1663); +emit_16(1598); +emit_16(1664); +emit_16(1600); +emit_16(1665); +emit_16(1601); +emit_16(1665); +emit_16(1600); +emit_16(1665); +emit_16(1601); +emit_16(1666); +emit_16(1602); +emit_16(1666); +emit_16(1601); +emit_16(1666); +emit_16(1602); +emit_16(1667); +emit_16(1603); +emit_16(1667); +emit_16(1602); +emit_16(1667); +emit_16(1603); +emit_16(1668); +emit_16(1604); +emit_16(1668); +emit_16(1603); +emit_16(1668); +emit_16(1604); +emit_16(1669); +emit_16(1605); +emit_16(1669); +emit_16(1604); +emit_16(1669); +emit_16(1605); +emit_16(1670); +emit_16(1606); +emit_16(1670); +emit_16(1605); +emit_16(1670); +emit_16(1606); +emit_16(1671); +emit_16(1607); +emit_16(1671); +emit_16(1606); +emit_16(1671); +emit_16(1607); +emit_16(1672); +emit_16(1608); +emit_16(1672); +emit_16(1607); +emit_16(1672); +emit_16(1608); +emit_16(1673); +emit_16(1609); +emit_16(1673); +emit_16(1608); +emit_16(1673); +emit_16(1609); +emit_16(1674); +emit_16(1610); +emit_16(1674); +emit_16(1609); +emit_16(1674); +emit_16(1610); +emit_16(1675); +emit_16(1611); +emit_16(1675); +emit_16(1610); +emit_16(1675); +emit_16(1611); +emit_16(1676); +emit_16(1612); +emit_16(1676); +emit_16(1611); +emit_16(1676); +emit_16(1612); +emit_16(1677); +emit_16(1613); +emit_16(1677); +emit_16(1612); +emit_16(1677); +emit_16(1613); +emit_16(1678); +emit_16(1614); +emit_16(1678); +emit_16(1613); +emit_16(1678); +emit_16(1614); +emit_16(1679); +emit_16(1615); +emit_16(1679); +emit_16(1614); +emit_16(1679); +emit_16(1615); +emit_16(1680); +emit_16(1616); +emit_16(1680); +emit_16(1615); +emit_16(1680); +emit_16(1616); +emit_16(1681); +emit_16(1617); +emit_16(1681); +emit_16(1616); +emit_16(1681); +emit_16(1617); +emit_16(1682); +emit_16(1618); +emit_16(1682); +emit_16(1617); +emit_16(1682); +emit_16(1618); +emit_16(1683); +emit_16(1619); +emit_16(1683); +emit_16(1618); +emit_16(1683); +emit_16(1619); +emit_16(1684); +emit_16(1620); +emit_16(1684); +emit_16(1619); +emit_16(1684); +emit_16(1620); +emit_16(1685); +emit_16(1621); +emit_16(1685); +emit_16(1620); +emit_16(1685); +emit_16(1621); +emit_16(1686); +emit_16(1622); +emit_16(1686); +emit_16(1621); +emit_16(1686); +emit_16(1622); +emit_16(1687); +emit_16(1623); +emit_16(1687); +emit_16(1622); +emit_16(1687); +emit_16(1623); +emit_16(1688); +emit_16(1624); +emit_16(1688); +emit_16(1623); +emit_16(1688); +emit_16(1624); +emit_16(1689); +emit_16(1625); +emit_16(1689); +emit_16(1624); +emit_16(1689); +emit_16(1625); +emit_16(1690); +emit_16(1626); +emit_16(1690); +emit_16(1625); +emit_16(1690); +emit_16(1626); +emit_16(1691); +emit_16(1627); +emit_16(1691); +emit_16(1626); +emit_16(1691); +emit_16(1627); +emit_16(1692); +emit_16(1628); +emit_16(1692); +emit_16(1627); +emit_16(1692); +emit_16(1628); +emit_16(1693); +emit_16(1629); +emit_16(1693); +emit_16(1628); +emit_16(1693); +emit_16(1629); +emit_16(1694); +emit_16(1630); +emit_16(1694); +emit_16(1629); +emit_16(1694); +emit_16(1630); +emit_16(1695); +emit_16(1631); +emit_16(1695); +emit_16(1630); +emit_16(1695); +emit_16(1631); +emit_16(1696); +emit_16(1632); +emit_16(1696); +emit_16(1631); +emit_16(1696); +emit_16(1632); +emit_16(1697); +emit_16(1633); +emit_16(1697); +emit_16(1632); +emit_16(1697); +emit_16(1633); +emit_16(1698); +emit_16(1634); +emit_16(1698); +emit_16(1633); +emit_16(1698); +emit_16(1634); +emit_16(1699); +emit_16(1635); +emit_16(1699); +emit_16(1634); +emit_16(1699); +emit_16(1635); +emit_16(1700); +emit_16(1636); +emit_16(1700); +emit_16(1635); +emit_16(1700); +emit_16(1636); +emit_16(1701); +emit_16(1637); +emit_16(1701); +emit_16(1636); +emit_16(1701); +emit_16(1637); +emit_16(1702); +emit_16(1638); +emit_16(1702); +emit_16(1637); +emit_16(1702); +emit_16(1638); +emit_16(1703); +emit_16(1639); +emit_16(1703); +emit_16(1638); +emit_16(1703); +emit_16(1639); +emit_16(1704); +emit_16(1640); +emit_16(1704); +emit_16(1639); +emit_16(1704); +emit_16(1640); +emit_16(1705); +emit_16(1641); +emit_16(1705); +emit_16(1640); +emit_16(1705); +emit_16(1641); +emit_16(1706); +emit_16(1642); +emit_16(1706); +emit_16(1641); +emit_16(1706); +emit_16(1642); +emit_16(1707); +emit_16(1643); +emit_16(1707); +emit_16(1642); +emit_16(1707); +emit_16(1643); +emit_16(1708); +emit_16(1644); +emit_16(1708); +emit_16(1643); +emit_16(1708); +emit_16(1644); +emit_16(1709); +emit_16(1645); +emit_16(1709); +emit_16(1644); +emit_16(1709); +emit_16(1645); +emit_16(1710); +emit_16(1646); +emit_16(1710); +emit_16(1645); +emit_16(1710); +emit_16(1646); +emit_16(1711); +emit_16(1647); +emit_16(1711); +emit_16(1646); +emit_16(1711); +emit_16(1647); +emit_16(1712); +emit_16(1648); +emit_16(1712); +emit_16(1647); +emit_16(1712); +emit_16(1648); +emit_16(1713); +emit_16(1649); +emit_16(1713); +emit_16(1648); +emit_16(1713); +emit_16(1649); +emit_16(1714); +emit_16(1650); +emit_16(1714); +emit_16(1649); +emit_16(1714); +emit_16(1650); +emit_16(1715); +emit_16(1651); +emit_16(1715); +emit_16(1650); +emit_16(1715); +emit_16(1651); +emit_16(1716); +emit_16(1652); +emit_16(1716); +emit_16(1651); +emit_16(1716); +emit_16(1652); +emit_16(1717); +emit_16(1653); +emit_16(1717); +emit_16(1652); +emit_16(1717); +emit_16(1653); +emit_16(1718); +emit_16(1654); +emit_16(1718); +emit_16(1653); +emit_16(1718); +emit_16(1654); +emit_16(1719); +emit_16(1655); +emit_16(1719); +emit_16(1654); +emit_16(1719); +emit_16(1655); +emit_16(1720); +emit_16(1656); +emit_16(1720); +emit_16(1655); +emit_16(1720); +emit_16(1656); +emit_16(1721); +emit_16(1657); +emit_16(1721); +emit_16(1656); +emit_16(1721); +emit_16(1657); +emit_16(1722); +emit_16(1658); +emit_16(1722); +emit_16(1657); +emit_16(1722); +emit_16(1658); +emit_16(1723); +emit_16(1659); +emit_16(1723); +emit_16(1658); +emit_16(1723); +emit_16(1659); +emit_16(1724); +emit_16(1660); +emit_16(1724); +emit_16(1659); +emit_16(1724); +emit_16(1660); +emit_16(1725); +emit_16(1661); +emit_16(1725); +emit_16(1660); +emit_16(1725); +emit_16(1661); +emit_16(1726); +emit_16(1662); +emit_16(1726); +emit_16(1661); +emit_16(1726); +emit_16(1662); +emit_16(1727); +emit_16(1663); +emit_16(1727); +emit_16(1662); +emit_16(1728); +emit_16(1664); +emit_16(1729); +emit_16(1665); +emit_16(1729); +emit_16(1664); +emit_16(1729); +emit_16(1665); +emit_16(1730); +emit_16(1666); +emit_16(1730); +emit_16(1665); +emit_16(1730); +emit_16(1666); +emit_16(1731); +emit_16(1667); +emit_16(1731); +emit_16(1666); +emit_16(1731); +emit_16(1667); +emit_16(1732); +emit_16(1668); +emit_16(1732); +emit_16(1667); +emit_16(1732); +emit_16(1668); +emit_16(1733); +emit_16(1669); +emit_16(1733); +emit_16(1668); +emit_16(1733); +emit_16(1669); +emit_16(1734); +emit_16(1670); +emit_16(1734); +emit_16(1669); +emit_16(1734); +emit_16(1670); +emit_16(1735); +emit_16(1671); +emit_16(1735); +emit_16(1670); +emit_16(1735); +emit_16(1671); +emit_16(1736); +emit_16(1672); +emit_16(1736); +emit_16(1671); +emit_16(1736); +emit_16(1672); +emit_16(1737); +emit_16(1673); +emit_16(1737); +emit_16(1672); +emit_16(1737); +emit_16(1673); +emit_16(1738); +emit_16(1674); +emit_16(1738); +emit_16(1673); +emit_16(1738); +emit_16(1674); +emit_16(1739); +emit_16(1675); +emit_16(1739); +emit_16(1674); +emit_16(1739); +emit_16(1675); +emit_16(1740); +emit_16(1676); +emit_16(1740); +emit_16(1675); +emit_16(1740); +emit_16(1676); +emit_16(1741); +emit_16(1677); +emit_16(1741); +emit_16(1676); +emit_16(1741); +emit_16(1677); +emit_16(1742); +emit_16(1678); +emit_16(1742); +emit_16(1677); +emit_16(1742); +emit_16(1678); +emit_16(1743); +emit_16(1679); +emit_16(1743); +emit_16(1678); +emit_16(1743); +emit_16(1679); +emit_16(1744); +emit_16(1680); +emit_16(1744); +emit_16(1679); +emit_16(1744); +emit_16(1680); +emit_16(1745); +emit_16(1681); +emit_16(1745); +emit_16(1680); +emit_16(1745); +emit_16(1681); +emit_16(1746); +emit_16(1682); +emit_16(1746); +emit_16(1681); +emit_16(1746); +emit_16(1682); +emit_16(1747); +emit_16(1683); +emit_16(1747); +emit_16(1682); +emit_16(1747); +emit_16(1683); +emit_16(1748); +emit_16(1684); +emit_16(1748); +emit_16(1683); +emit_16(1748); +emit_16(1684); +emit_16(1749); +emit_16(1685); +emit_16(1749); +emit_16(1684); +emit_16(1749); +emit_16(1685); +emit_16(1750); +emit_16(1686); +emit_16(1750); +emit_16(1685); +emit_16(1750); +emit_16(1686); +emit_16(1751); +emit_16(1687); +emit_16(1751); +emit_16(1686); +emit_16(1751); +emit_16(1687); +emit_16(1752); +emit_16(1688); +emit_16(1752); +emit_16(1687); +emit_16(1752); +emit_16(1688); +emit_16(1753); +emit_16(1689); +emit_16(1753); +emit_16(1688); +emit_16(1753); +emit_16(1689); +emit_16(1754); +emit_16(1690); +emit_16(1754); +emit_16(1689); +emit_16(1754); +emit_16(1690); +emit_16(1755); +emit_16(1691); +emit_16(1755); +emit_16(1690); +emit_16(1755); +emit_16(1691); +emit_16(1756); +emit_16(1692); +emit_16(1756); +emit_16(1691); +emit_16(1756); +emit_16(1692); +emit_16(1757); +emit_16(1693); +emit_16(1757); +emit_16(1692); +emit_16(1757); +emit_16(1693); +emit_16(1758); +emit_16(1694); +emit_16(1758); +emit_16(1693); +emit_16(1758); +emit_16(1694); +emit_16(1759); +emit_16(1695); +emit_16(1759); +emit_16(1694); +emit_16(1759); +emit_16(1695); +emit_16(1760); +emit_16(1696); +emit_16(1760); +emit_16(1695); +emit_16(1760); +emit_16(1696); +emit_16(1761); +emit_16(1697); +emit_16(1761); +emit_16(1696); +emit_16(1761); +emit_16(1697); +emit_16(1762); +emit_16(1698); +emit_16(1762); +emit_16(1697); +emit_16(1762); +emit_16(1698); +emit_16(1763); +emit_16(1699); +emit_16(1763); +emit_16(1698); +emit_16(1763); +emit_16(1699); +emit_16(1764); +emit_16(1700); +emit_16(1764); +emit_16(1699); +emit_16(1764); +emit_16(1700); +emit_16(1765); +emit_16(1701); +emit_16(1765); +emit_16(1700); +emit_16(1765); +emit_16(1701); +emit_16(1766); +emit_16(1702); +emit_16(1766); +emit_16(1701); +emit_16(1766); +emit_16(1702); +emit_16(1767); +emit_16(1703); +emit_16(1767); +emit_16(1702); +emit_16(1767); +emit_16(1703); +emit_16(1768); +emit_16(1704); +emit_16(1768); +emit_16(1703); +emit_16(1768); +emit_16(1704); +emit_16(1769); +emit_16(1705); +emit_16(1769); +emit_16(1704); +emit_16(1769); +emit_16(1705); +emit_16(1770); +emit_16(1706); +emit_16(1770); +emit_16(1705); +emit_16(1770); +emit_16(1706); +emit_16(1771); +emit_16(1707); +emit_16(1771); +emit_16(1706); +emit_16(1771); +emit_16(1707); +emit_16(1772); +emit_16(1708); +emit_16(1772); +emit_16(1707); +emit_16(1772); +emit_16(1708); +emit_16(1773); +emit_16(1709); +emit_16(1773); +emit_16(1708); +emit_16(1773); +emit_16(1709); +emit_16(1774); +emit_16(1710); +emit_16(1774); +emit_16(1709); +emit_16(1774); +emit_16(1710); +emit_16(1775); +emit_16(1711); +emit_16(1775); +emit_16(1710); +emit_16(1775); +emit_16(1711); +emit_16(1776); +emit_16(1712); +emit_16(1776); +emit_16(1711); +emit_16(1776); +emit_16(1712); +emit_16(1777); +emit_16(1713); +emit_16(1777); +emit_16(1712); +emit_16(1777); +emit_16(1713); +emit_16(1778); +emit_16(1714); +emit_16(1778); +emit_16(1713); +emit_16(1778); +emit_16(1714); +emit_16(1779); +emit_16(1715); +emit_16(1779); +emit_16(1714); +emit_16(1779); +emit_16(1715); +emit_16(1780); +emit_16(1716); +emit_16(1780); +emit_16(1715); +emit_16(1780); +emit_16(1716); +emit_16(1781); +emit_16(1717); +emit_16(1781); +emit_16(1716); +emit_16(1781); +emit_16(1717); +emit_16(1782); +emit_16(1718); +emit_16(1782); +emit_16(1717); +emit_16(1782); +emit_16(1718); +emit_16(1783); +emit_16(1719); +emit_16(1783); +emit_16(1718); +emit_16(1783); +emit_16(1719); +emit_16(1784); +emit_16(1720); +emit_16(1784); +emit_16(1719); +emit_16(1784); +emit_16(1720); +emit_16(1785); +emit_16(1721); +emit_16(1785); +emit_16(1720); +emit_16(1785); +emit_16(1721); +emit_16(1786); +emit_16(1722); +emit_16(1786); +emit_16(1721); +emit_16(1786); +emit_16(1722); +emit_16(1787); +emit_16(1723); +emit_16(1787); +emit_16(1722); +emit_16(1787); +emit_16(1723); +emit_16(1788); +emit_16(1724); +emit_16(1788); +emit_16(1723); +emit_16(1788); +emit_16(1724); +emit_16(1789); +emit_16(1725); +emit_16(1789); +emit_16(1724); +emit_16(1789); +emit_16(1725); +emit_16(1790); +emit_16(1726); +emit_16(1790); +emit_16(1725); +emit_16(1790); +emit_16(1726); +emit_16(1791); +emit_16(1727); +emit_16(1791); +emit_16(1726); +emit_16(1792); +emit_16(1728); +emit_16(1793); +emit_16(1729); +emit_16(1793); +emit_16(1728); +emit_16(1793); +emit_16(1729); +emit_16(1794); +emit_16(1730); +emit_16(1794); +emit_16(1729); +emit_16(1794); +emit_16(1730); +emit_16(1795); +emit_16(1731); +emit_16(1795); +emit_16(1730); +emit_16(1795); +emit_16(1731); +emit_16(1796); +emit_16(1732); +emit_16(1796); +emit_16(1731); +emit_16(1796); +emit_16(1732); +emit_16(1797); +emit_16(1733); +emit_16(1797); +emit_16(1732); +emit_16(1797); +emit_16(1733); +emit_16(1798); +emit_16(1734); +emit_16(1798); +emit_16(1733); +emit_16(1798); +emit_16(1734); +emit_16(1799); +emit_16(1735); +emit_16(1799); +emit_16(1734); +emit_16(1799); +emit_16(1735); +emit_16(1800); +emit_16(1736); +emit_16(1800); +emit_16(1735); +emit_16(1800); +emit_16(1736); +emit_16(1801); +emit_16(1737); +emit_16(1801); +emit_16(1736); +emit_16(1801); +emit_16(1737); +emit_16(1802); +emit_16(1738); +emit_16(1802); +emit_16(1737); +emit_16(1802); +emit_16(1738); +emit_16(1803); +emit_16(1739); +emit_16(1803); +emit_16(1738); +emit_16(1803); +emit_16(1739); +emit_16(1804); +emit_16(1740); +emit_16(1804); +emit_16(1739); +emit_16(1804); +emit_16(1740); +emit_16(1805); +emit_16(1741); +emit_16(1805); +emit_16(1740); +emit_16(1805); +emit_16(1741); +emit_16(1806); +emit_16(1742); +emit_16(1806); +emit_16(1741); +emit_16(1806); +emit_16(1742); +emit_16(1807); +emit_16(1743); +emit_16(1807); +emit_16(1742); +emit_16(1807); +emit_16(1743); +emit_16(1808); +emit_16(1744); +emit_16(1808); +emit_16(1743); +emit_16(1808); +emit_16(1744); +emit_16(1809); +emit_16(1745); +emit_16(1809); +emit_16(1744); +emit_16(1809); +emit_16(1745); +emit_16(1810); +emit_16(1746); +emit_16(1810); +emit_16(1745); +emit_16(1810); +emit_16(1746); +emit_16(1811); +emit_16(1747); +emit_16(1811); +emit_16(1746); +emit_16(1811); +emit_16(1747); +emit_16(1812); +emit_16(1748); +emit_16(1812); +emit_16(1747); +emit_16(1812); +emit_16(1748); +emit_16(1813); +emit_16(1749); +emit_16(1813); +emit_16(1748); +emit_16(1813); +emit_16(1749); +emit_16(1814); +emit_16(1750); +emit_16(1814); +emit_16(1749); +emit_16(1814); +emit_16(1750); +emit_16(1815); +emit_16(1751); +emit_16(1815); +emit_16(1750); +emit_16(1815); +emit_16(1751); +emit_16(1816); +emit_16(1752); +emit_16(1816); +emit_16(1751); +emit_16(1816); +emit_16(1752); +emit_16(1817); +emit_16(1753); +emit_16(1817); +emit_16(1752); +emit_16(1817); +emit_16(1753); +emit_16(1818); +emit_16(1754); +emit_16(1818); +emit_16(1753); +emit_16(1818); +emit_16(1754); +emit_16(1819); +emit_16(1755); +emit_16(1819); +emit_16(1754); +emit_16(1819); +emit_16(1755); +emit_16(1820); +emit_16(1756); +emit_16(1820); +emit_16(1755); +emit_16(1820); +emit_16(1756); +emit_16(1821); +emit_16(1757); +emit_16(1821); +emit_16(1756); +emit_16(1821); +emit_16(1757); +emit_16(1822); +emit_16(1758); +emit_16(1822); +emit_16(1757); +emit_16(1822); +emit_16(1758); +emit_16(1823); +emit_16(1759); +emit_16(1823); +emit_16(1758); +emit_16(1823); +emit_16(1759); +emit_16(1824); +emit_16(1760); +emit_16(1824); +emit_16(1759); +emit_16(1824); +emit_16(1760); +emit_16(1825); +emit_16(1761); +emit_16(1825); +emit_16(1760); +emit_16(1825); +emit_16(1761); +emit_16(1826); +emit_16(1762); +emit_16(1826); +emit_16(1761); +emit_16(1826); +emit_16(1762); +emit_16(1827); +emit_16(1763); +emit_16(1827); +emit_16(1762); +emit_16(1827); +emit_16(1763); +emit_16(1828); +emit_16(1764); +emit_16(1828); +emit_16(1763); +emit_16(1828); +emit_16(1764); +emit_16(1829); +emit_16(1765); +emit_16(1829); +emit_16(1764); +emit_16(1829); +emit_16(1765); +emit_16(1830); +emit_16(1766); +emit_16(1830); +emit_16(1765); +emit_16(1830); +emit_16(1766); +emit_16(1831); +emit_16(1767); +emit_16(1831); +emit_16(1766); +emit_16(1831); +emit_16(1767); +emit_16(1832); +emit_16(1768); +emit_16(1832); +emit_16(1767); +emit_16(1832); +emit_16(1768); +emit_16(1833); +emit_16(1769); +emit_16(1833); +emit_16(1768); +emit_16(1833); +emit_16(1769); +emit_16(1834); +emit_16(1770); +emit_16(1834); +emit_16(1769); +emit_16(1834); +emit_16(1770); +emit_16(1835); +emit_16(1771); +emit_16(1835); +emit_16(1770); +emit_16(1835); +emit_16(1771); +emit_16(1836); +emit_16(1772); +emit_16(1836); +emit_16(1771); +emit_16(1836); +emit_16(1772); +emit_16(1837); +emit_16(1773); +emit_16(1837); +emit_16(1772); +emit_16(1837); +emit_16(1773); +emit_16(1838); +emit_16(1774); +emit_16(1838); +emit_16(1773); +emit_16(1838); +emit_16(1774); +emit_16(1839); +emit_16(1775); +emit_16(1839); +emit_16(1774); +emit_16(1839); +emit_16(1775); +emit_16(1840); +emit_16(1776); +emit_16(1840); +emit_16(1775); +emit_16(1840); +emit_16(1776); +emit_16(1841); +emit_16(1777); +emit_16(1841); +emit_16(1776); +emit_16(1841); +emit_16(1777); +emit_16(1842); +emit_16(1778); +emit_16(1842); +emit_16(1777); +emit_16(1842); +emit_16(1778); +emit_16(1843); +emit_16(1779); +emit_16(1843); +emit_16(1778); +emit_16(1843); +emit_16(1779); +emit_16(1844); +emit_16(1780); +emit_16(1844); +emit_16(1779); +emit_16(1844); +emit_16(1780); +emit_16(1845); +emit_16(1781); +emit_16(1845); +emit_16(1780); +emit_16(1845); +emit_16(1781); +emit_16(1846); +emit_16(1782); +emit_16(1846); +emit_16(1781); +emit_16(1846); +emit_16(1782); +emit_16(1847); +emit_16(1783); +emit_16(1847); +emit_16(1782); +emit_16(1847); +emit_16(1783); +emit_16(1848); +emit_16(1784); +emit_16(1848); +emit_16(1783); +emit_16(1848); +emit_16(1784); +emit_16(1849); +emit_16(1785); +emit_16(1849); +emit_16(1784); +emit_16(1849); +emit_16(1785); +emit_16(1850); +emit_16(1786); +emit_16(1850); +emit_16(1785); +emit_16(1850); +emit_16(1786); +emit_16(1851); +emit_16(1787); +emit_16(1851); +emit_16(1786); +emit_16(1851); +emit_16(1787); +emit_16(1852); +emit_16(1788); +emit_16(1852); +emit_16(1787); +emit_16(1852); +emit_16(1788); +emit_16(1853); +emit_16(1789); +emit_16(1853); +emit_16(1788); +emit_16(1853); +emit_16(1789); +emit_16(1854); +emit_16(1790); +emit_16(1854); +emit_16(1789); +emit_16(1854); +emit_16(1790); +emit_16(1855); +emit_16(1791); +emit_16(1855); +emit_16(1790); +emit_16(1856); +emit_16(1792); +emit_16(1857); +emit_16(1793); +emit_16(1857); +emit_16(1792); +emit_16(1857); +emit_16(1793); +emit_16(1858); +emit_16(1794); +emit_16(1858); +emit_16(1793); +emit_16(1858); +emit_16(1794); +emit_16(1859); +emit_16(1795); +emit_16(1859); +emit_16(1794); +emit_16(1859); +emit_16(1795); +emit_16(1860); +emit_16(1796); +emit_16(1860); +emit_16(1795); +emit_16(1860); +emit_16(1796); +emit_16(1861); +emit_16(1797); +emit_16(1861); +emit_16(1796); +emit_16(1861); +emit_16(1797); +emit_16(1862); +emit_16(1798); +emit_16(1862); +emit_16(1797); +emit_16(1862); +emit_16(1798); +emit_16(1863); +emit_16(1799); +emit_16(1863); +emit_16(1798); +emit_16(1863); +emit_16(1799); +emit_16(1864); +emit_16(1800); +emit_16(1864); +emit_16(1799); +emit_16(1864); +emit_16(1800); +emit_16(1865); +emit_16(1801); +emit_16(1865); +emit_16(1800); +emit_16(1865); +emit_16(1801); +emit_16(1866); +emit_16(1802); +emit_16(1866); +emit_16(1801); +emit_16(1866); +emit_16(1802); +emit_16(1867); +emit_16(1803); +emit_16(1867); +emit_16(1802); +emit_16(1867); +emit_16(1803); +emit_16(1868); +emit_16(1804); +emit_16(1868); +emit_16(1803); +emit_16(1868); +emit_16(1804); +emit_16(1869); +emit_16(1805); +emit_16(1869); +emit_16(1804); +emit_16(1869); +emit_16(1805); +emit_16(1870); +emit_16(1806); +emit_16(1870); +emit_16(1805); +emit_16(1870); +emit_16(1806); +emit_16(1871); +emit_16(1807); +emit_16(1871); +emit_16(1806); +emit_16(1871); +emit_16(1807); +emit_16(1872); +emit_16(1808); +emit_16(1872); +emit_16(1807); +emit_16(1872); +emit_16(1808); +emit_16(1873); +emit_16(1809); +emit_16(1873); +emit_16(1808); +emit_16(1873); +emit_16(1809); +emit_16(1874); +emit_16(1810); +emit_16(1874); +emit_16(1809); +emit_16(1874); +emit_16(1810); +emit_16(1875); +emit_16(1811); +emit_16(1875); +emit_16(1810); +emit_16(1875); +emit_16(1811); +emit_16(1876); +emit_16(1812); +emit_16(1876); +emit_16(1811); +emit_16(1876); +emit_16(1812); +emit_16(1877); +emit_16(1813); +emit_16(1877); +emit_16(1812); +emit_16(1877); +emit_16(1813); +emit_16(1878); +emit_16(1814); +emit_16(1878); +emit_16(1813); +emit_16(1878); +emit_16(1814); +emit_16(1879); +emit_16(1815); +emit_16(1879); +emit_16(1814); +emit_16(1879); +emit_16(1815); +emit_16(1880); +emit_16(1816); +emit_16(1880); +emit_16(1815); +emit_16(1880); +emit_16(1816); +emit_16(1881); +emit_16(1817); +emit_16(1881); +emit_16(1816); +emit_16(1881); +emit_16(1817); +emit_16(1882); +emit_16(1818); +emit_16(1882); +emit_16(1817); +emit_16(1882); +emit_16(1818); +emit_16(1883); +emit_16(1819); +emit_16(1883); +emit_16(1818); +emit_16(1883); +emit_16(1819); +emit_16(1884); +emit_16(1820); +emit_16(1884); +emit_16(1819); +emit_16(1884); +emit_16(1820); +emit_16(1885); +emit_16(1821); +emit_16(1885); +emit_16(1820); +emit_16(1885); +emit_16(1821); +emit_16(1886); +emit_16(1822); +emit_16(1886); +emit_16(1821); +emit_16(1886); +emit_16(1822); +emit_16(1887); +emit_16(1823); +emit_16(1887); +emit_16(1822); +emit_16(1887); +emit_16(1823); +emit_16(1888); +emit_16(1824); +emit_16(1888); +emit_16(1823); +emit_16(1888); +emit_16(1824); +emit_16(1889); +emit_16(1825); +emit_16(1889); +emit_16(1824); +emit_16(1889); +emit_16(1825); +emit_16(1890); +emit_16(1826); +emit_16(1890); +emit_16(1825); +emit_16(1890); +emit_16(1826); +emit_16(1891); +emit_16(1827); +emit_16(1891); +emit_16(1826); +emit_16(1891); +emit_16(1827); +emit_16(1892); +emit_16(1828); +emit_16(1892); +emit_16(1827); +emit_16(1892); +emit_16(1828); +emit_16(1893); +emit_16(1829); +emit_16(1893); +emit_16(1828); +emit_16(1893); +emit_16(1829); +emit_16(1894); +emit_16(1830); +emit_16(1894); +emit_16(1829); +emit_16(1894); +emit_16(1830); +emit_16(1895); +emit_16(1831); +emit_16(1895); +emit_16(1830); +emit_16(1895); +emit_16(1831); +emit_16(1896); +emit_16(1832); +emit_16(1896); +emit_16(1831); +emit_16(1896); +emit_16(1832); +emit_16(1897); +emit_16(1833); +emit_16(1897); +emit_16(1832); +emit_16(1897); +emit_16(1833); +emit_16(1898); +emit_16(1834); +emit_16(1898); +emit_16(1833); +emit_16(1898); +emit_16(1834); +emit_16(1899); +emit_16(1835); +emit_16(1899); +emit_16(1834); +emit_16(1899); +emit_16(1835); +emit_16(1900); +emit_16(1836); +emit_16(1900); +emit_16(1835); +emit_16(1900); +emit_16(1836); +emit_16(1901); +emit_16(1837); +emit_16(1901); +emit_16(1836); +emit_16(1901); +emit_16(1837); +emit_16(1902); +emit_16(1838); +emit_16(1902); +emit_16(1837); +emit_16(1902); +emit_16(1838); +emit_16(1903); +emit_16(1839); +emit_16(1903); +emit_16(1838); +emit_16(1903); +emit_16(1839); +emit_16(1904); +emit_16(1840); +emit_16(1904); +emit_16(1839); +emit_16(1904); +emit_16(1840); +emit_16(1905); +emit_16(1841); +emit_16(1905); +emit_16(1840); +emit_16(1905); +emit_16(1841); +emit_16(1906); +emit_16(1842); +emit_16(1906); +emit_16(1841); +emit_16(1906); +emit_16(1842); +emit_16(1907); +emit_16(1843); +emit_16(1907); +emit_16(1842); +emit_16(1907); +emit_16(1843); +emit_16(1908); +emit_16(1844); +emit_16(1908); +emit_16(1843); +emit_16(1908); +emit_16(1844); +emit_16(1909); +emit_16(1845); +emit_16(1909); +emit_16(1844); +emit_16(1909); +emit_16(1845); +emit_16(1910); +emit_16(1846); +emit_16(1910); +emit_16(1845); +emit_16(1910); +emit_16(1846); +emit_16(1911); +emit_16(1847); +emit_16(1911); +emit_16(1846); +emit_16(1911); +emit_16(1847); +emit_16(1912); +emit_16(1848); +emit_16(1912); +emit_16(1847); +emit_16(1912); +emit_16(1848); +emit_16(1913); +emit_16(1849); +emit_16(1913); +emit_16(1848); +emit_16(1913); +emit_16(1849); +emit_16(1914); +emit_16(1850); +emit_16(1914); +emit_16(1849); +emit_16(1914); +emit_16(1850); +emit_16(1915); +emit_16(1851); +emit_16(1915); +emit_16(1850); +emit_16(1915); +emit_16(1851); +emit_16(1916); +emit_16(1852); +emit_16(1916); +emit_16(1851); +emit_16(1916); +emit_16(1852); +emit_16(1917); +emit_16(1853); +emit_16(1917); +emit_16(1852); +emit_16(1917); +emit_16(1853); +emit_16(1918); +emit_16(1854); +emit_16(1918); +emit_16(1853); +emit_16(1918); +emit_16(1854); +emit_16(1919); +emit_16(1855); +emit_16(1919); +emit_16(1854); +emit_16(1920); +emit_16(1856); +emit_16(1921); +emit_16(1857); +emit_16(1921); +emit_16(1856); +emit_16(1921); +emit_16(1857); +emit_16(1922); +emit_16(1858); +emit_16(1922); +emit_16(1857); +emit_16(1922); +emit_16(1858); +emit_16(1923); +emit_16(1859); +emit_16(1923); +emit_16(1858); +emit_16(1923); +emit_16(1859); +emit_16(1924); +emit_16(1860); +emit_16(1924); +emit_16(1859); +emit_16(1924); +emit_16(1860); +emit_16(1925); +emit_16(1861); +emit_16(1925); +emit_16(1860); +emit_16(1925); +emit_16(1861); +emit_16(1926); +emit_16(1862); +emit_16(1926); +emit_16(1861); +emit_16(1926); +emit_16(1862); +emit_16(1927); +emit_16(1863); +emit_16(1927); +emit_16(1862); +emit_16(1927); +emit_16(1863); +emit_16(1928); +emit_16(1864); +emit_16(1928); +emit_16(1863); +emit_16(1928); +emit_16(1864); +emit_16(1929); +emit_16(1865); +emit_16(1929); +emit_16(1864); +emit_16(1929); +emit_16(1865); +emit_16(1930); +emit_16(1866); +emit_16(1930); +emit_16(1865); +emit_16(1930); +emit_16(1866); +emit_16(1931); +emit_16(1867); +emit_16(1931); +emit_16(1866); +emit_16(1931); +emit_16(1867); +emit_16(1932); +emit_16(1868); +emit_16(1932); +emit_16(1867); +emit_16(1932); +emit_16(1868); +emit_16(1933); +emit_16(1869); +emit_16(1933); +emit_16(1868); +emit_16(1933); +emit_16(1869); +emit_16(1934); +emit_16(1870); +emit_16(1934); +emit_16(1869); +emit_16(1934); +emit_16(1870); +emit_16(1935); +emit_16(1871); +emit_16(1935); +emit_16(1870); +emit_16(1935); +emit_16(1871); +emit_16(1936); +emit_16(1872); +emit_16(1936); +emit_16(1871); +emit_16(1936); +emit_16(1872); +emit_16(1937); +emit_16(1873); +emit_16(1937); +emit_16(1872); +emit_16(1937); +emit_16(1873); +emit_16(1938); +emit_16(1874); +emit_16(1938); +emit_16(1873); +emit_16(1938); +emit_16(1874); +emit_16(1939); +emit_16(1875); +emit_16(1939); +emit_16(1874); +emit_16(1939); +emit_16(1875); +emit_16(1940); +emit_16(1876); +emit_16(1940); +emit_16(1875); +emit_16(1940); +emit_16(1876); +emit_16(1941); +emit_16(1877); +emit_16(1941); +emit_16(1876); +emit_16(1941); +emit_16(1877); +emit_16(1942); +emit_16(1878); +emit_16(1942); +emit_16(1877); +emit_16(1942); +emit_16(1878); +emit_16(1943); +emit_16(1879); +emit_16(1943); +emit_16(1878); +emit_16(1943); +emit_16(1879); +emit_16(1944); +emit_16(1880); +emit_16(1944); +emit_16(1879); +emit_16(1944); +emit_16(1880); +emit_16(1945); +emit_16(1881); +emit_16(1945); +emit_16(1880); +emit_16(1945); +emit_16(1881); +emit_16(1946); +emit_16(1882); +emit_16(1946); +emit_16(1881); +emit_16(1946); +emit_16(1882); +emit_16(1947); +emit_16(1883); +emit_16(1947); +emit_16(1882); +emit_16(1947); +emit_16(1883); +emit_16(1948); +emit_16(1884); +emit_16(1948); +emit_16(1883); +emit_16(1948); +emit_16(1884); +emit_16(1949); +emit_16(1885); +emit_16(1949); +emit_16(1884); +emit_16(1949); +emit_16(1885); +emit_16(1950); +emit_16(1886); +emit_16(1950); +emit_16(1885); +emit_16(1950); +emit_16(1886); +emit_16(1951); +emit_16(1887); +emit_16(1951); +emit_16(1886); +emit_16(1951); +emit_16(1887); +emit_16(1952); +emit_16(1888); +emit_16(1952); +emit_16(1887); +emit_16(1952); +emit_16(1888); +emit_16(1953); +emit_16(1889); +emit_16(1953); +emit_16(1888); +emit_16(1953); +emit_16(1889); +emit_16(1954); +emit_16(1890); +emit_16(1954); +emit_16(1889); +emit_16(1954); +emit_16(1890); +emit_16(1955); +emit_16(1891); +emit_16(1955); +emit_16(1890); +emit_16(1955); +emit_16(1891); +emit_16(1956); +emit_16(1892); +emit_16(1956); +emit_16(1891); +emit_16(1956); +emit_16(1892); +emit_16(1957); +emit_16(1893); +emit_16(1957); +emit_16(1892); +emit_16(1957); +emit_16(1893); +emit_16(1958); +emit_16(1894); +emit_16(1958); +emit_16(1893); +emit_16(1958); +emit_16(1894); +emit_16(1959); +emit_16(1895); +emit_16(1959); +emit_16(1894); +emit_16(1959); +emit_16(1895); +emit_16(1960); +emit_16(1896); +emit_16(1960); +emit_16(1895); +emit_16(1960); +emit_16(1896); +emit_16(1961); +emit_16(1897); +emit_16(1961); +emit_16(1896); +emit_16(1961); +emit_16(1897); +emit_16(1962); +emit_16(1898); +emit_16(1962); +emit_16(1897); +emit_16(1962); +emit_16(1898); +emit_16(1963); +emit_16(1899); +emit_16(1963); +emit_16(1898); +emit_16(1963); +emit_16(1899); +emit_16(1964); +emit_16(1900); +emit_16(1964); +emit_16(1899); +emit_16(1964); +emit_16(1900); +emit_16(1965); +emit_16(1901); +emit_16(1965); +emit_16(1900); +emit_16(1965); +emit_16(1901); +emit_16(1966); +emit_16(1902); +emit_16(1966); +emit_16(1901); +emit_16(1966); +emit_16(1902); +emit_16(1967); +emit_16(1903); +emit_16(1967); +emit_16(1902); +emit_16(1967); +emit_16(1903); +emit_16(1968); +emit_16(1904); +emit_16(1968); +emit_16(1903); +emit_16(1968); +emit_16(1904); +emit_16(1969); +emit_16(1905); +emit_16(1969); +emit_16(1904); +emit_16(1969); +emit_16(1905); +emit_16(1970); +emit_16(1906); +emit_16(1970); +emit_16(1905); +emit_16(1970); +emit_16(1906); +emit_16(1971); +emit_16(1907); +emit_16(1971); +emit_16(1906); +emit_16(1971); +emit_16(1907); +emit_16(1972); +emit_16(1908); +emit_16(1972); +emit_16(1907); +emit_16(1972); +emit_16(1908); +emit_16(1973); +emit_16(1909); +emit_16(1973); +emit_16(1908); +emit_16(1973); +emit_16(1909); +emit_16(1974); +emit_16(1910); +emit_16(1974); +emit_16(1909); +emit_16(1974); +emit_16(1910); +emit_16(1975); +emit_16(1911); +emit_16(1975); +emit_16(1910); +emit_16(1975); +emit_16(1911); +emit_16(1976); +emit_16(1912); +emit_16(1976); +emit_16(1911); +emit_16(1976); +emit_16(1912); +emit_16(1977); +emit_16(1913); +emit_16(1977); +emit_16(1912); +emit_16(1977); +emit_16(1913); +emit_16(1978); +emit_16(1914); +emit_16(1978); +emit_16(1913); +emit_16(1978); +emit_16(1914); +emit_16(1979); +emit_16(1915); +emit_16(1979); +emit_16(1914); +emit_16(1979); +emit_16(1915); +emit_16(1980); +emit_16(1916); +emit_16(1980); +emit_16(1915); +emit_16(1980); +emit_16(1916); +emit_16(1981); +emit_16(1917); +emit_16(1981); +emit_16(1916); +emit_16(1981); +emit_16(1917); +emit_16(1982); +emit_16(1918); +emit_16(1982); +emit_16(1917); +emit_16(1982); +emit_16(1918); +emit_16(1983); +emit_16(1919); +emit_16(1983); +emit_16(1918); +emit_16(1984); +emit_16(1920); +emit_16(1985); +emit_16(1921); +emit_16(1985); +emit_16(1920); +emit_16(1985); +emit_16(1921); +emit_16(1986); +emit_16(1922); +emit_16(1986); +emit_16(1921); +emit_16(1986); +emit_16(1922); +emit_16(1987); +emit_16(1923); +emit_16(1987); +emit_16(1922); +emit_16(1987); +emit_16(1923); +emit_16(1988); +emit_16(1924); +emit_16(1988); +emit_16(1923); +emit_16(1988); +emit_16(1924); +emit_16(1989); +emit_16(1925); +emit_16(1989); +emit_16(1924); +emit_16(1989); +emit_16(1925); +emit_16(1990); +emit_16(1926); +emit_16(1990); +emit_16(1925); +emit_16(1990); +emit_16(1926); +emit_16(1991); +emit_16(1927); +emit_16(1991); +emit_16(1926); +emit_16(1991); +emit_16(1927); +emit_16(1992); +emit_16(1928); +emit_16(1992); +emit_16(1927); +emit_16(1992); +emit_16(1928); +emit_16(1993); +emit_16(1929); +emit_16(1993); +emit_16(1928); +emit_16(1993); +emit_16(1929); +emit_16(1994); +emit_16(1930); +emit_16(1994); +emit_16(1929); +emit_16(1994); +emit_16(1930); +emit_16(1995); +emit_16(1931); +emit_16(1995); +emit_16(1930); +emit_16(1995); +emit_16(1931); +emit_16(1996); +emit_16(1932); +emit_16(1996); +emit_16(1931); +emit_16(1996); +emit_16(1932); +emit_16(1997); +emit_16(1933); +emit_16(1997); +emit_16(1932); +emit_16(1997); +emit_16(1933); +emit_16(1998); +emit_16(1934); +emit_16(1998); +emit_16(1933); +emit_16(1998); +emit_16(1934); +emit_16(1999); +emit_16(1935); +emit_16(1999); +emit_16(1934); +emit_16(1999); +emit_16(1935); +emit_16(2000); +emit_16(1936); +emit_16(2000); +emit_16(1935); +emit_16(2000); +emit_16(1936); +emit_16(2001); +emit_16(1937); +emit_16(2001); +emit_16(1936); +emit_16(2001); +emit_16(1937); +emit_16(2002); +emit_16(1938); +emit_16(2002); +emit_16(1937); +emit_16(2002); +emit_16(1938); +emit_16(2003); +emit_16(1939); +emit_16(2003); +emit_16(1938); +emit_16(2003); +emit_16(1939); +emit_16(2004); +emit_16(1940); +emit_16(2004); +emit_16(1939); +emit_16(2004); +emit_16(1940); +emit_16(2005); +emit_16(1941); +emit_16(2005); +emit_16(1940); +emit_16(2005); +emit_16(1941); +emit_16(2006); +emit_16(1942); +emit_16(2006); +emit_16(1941); +emit_16(2006); +emit_16(1942); +emit_16(2007); +emit_16(1943); +emit_16(2007); +emit_16(1942); +emit_16(2007); +emit_16(1943); +emit_16(2008); +emit_16(1944); +emit_16(2008); +emit_16(1943); +emit_16(2008); +emit_16(1944); +emit_16(2009); +emit_16(1945); +emit_16(2009); +emit_16(1944); +emit_16(2009); +emit_16(1945); +emit_16(2010); +emit_16(1946); +emit_16(2010); +emit_16(1945); +emit_16(2010); +emit_16(1946); +emit_16(2011); +emit_16(1947); +emit_16(2011); +emit_16(1946); +emit_16(2011); +emit_16(1947); +emit_16(2012); +emit_16(1948); +emit_16(2012); +emit_16(1947); +emit_16(2012); +emit_16(1948); +emit_16(2013); +emit_16(1949); +emit_16(2013); +emit_16(1948); +emit_16(2013); +emit_16(1949); +emit_16(2014); +emit_16(1950); +emit_16(2014); +emit_16(1949); +emit_16(2014); +emit_16(1950); +emit_16(2015); +emit_16(1951); +emit_16(2015); +emit_16(1950); +emit_16(2015); +emit_16(1951); +emit_16(2016); +emit_16(1952); +emit_16(2016); +emit_16(1951); +emit_16(2016); +emit_16(1952); +emit_16(2017); +emit_16(1953); +emit_16(2017); +emit_16(1952); +emit_16(2017); +emit_16(1953); +emit_16(2018); +emit_16(1954); +emit_16(2018); +emit_16(1953); +emit_16(2018); +emit_16(1954); +emit_16(2019); +emit_16(1955); +emit_16(2019); +emit_16(1954); +emit_16(2019); +emit_16(1955); +emit_16(2020); +emit_16(1956); +emit_16(2020); +emit_16(1955); +emit_16(2020); +emit_16(1956); +emit_16(2021); +emit_16(1957); +emit_16(2021); +emit_16(1956); +emit_16(2021); +emit_16(1957); +emit_16(2022); +emit_16(1958); +emit_16(2022); +emit_16(1957); +emit_16(2022); +emit_16(1958); +emit_16(2023); +emit_16(1959); +emit_16(2023); +emit_16(1958); +emit_16(2023); +emit_16(1959); +emit_16(2024); +emit_16(1960); +emit_16(2024); +emit_16(1959); +emit_16(2024); +emit_16(1960); +emit_16(2025); +emit_16(1961); +emit_16(2025); +emit_16(1960); +emit_16(2025); +emit_16(1961); +emit_16(2026); +emit_16(1962); +emit_16(2026); +emit_16(1961); +emit_16(2026); +emit_16(1962); +emit_16(2027); +emit_16(1963); +emit_16(2027); +emit_16(1962); +emit_16(2027); +emit_16(1963); +emit_16(2028); +emit_16(1964); +emit_16(2028); +emit_16(1963); +emit_16(2028); +emit_16(1964); +emit_16(2029); +emit_16(1965); +emit_16(2029); +emit_16(1964); +emit_16(2029); +emit_16(1965); +emit_16(2030); +emit_16(1966); +emit_16(2030); +emit_16(1965); +emit_16(2030); +emit_16(1966); +emit_16(2031); +emit_16(1967); +emit_16(2031); +emit_16(1966); +emit_16(2031); +emit_16(1967); +emit_16(2032); +emit_16(1968); +emit_16(2032); +emit_16(1967); +emit_16(2032); +emit_16(1968); +emit_16(2033); +emit_16(1969); +emit_16(2033); +emit_16(1968); +emit_16(2033); +emit_16(1969); +emit_16(2034); +emit_16(1970); +emit_16(2034); +emit_16(1969); +emit_16(2034); +emit_16(1970); +emit_16(2035); +emit_16(1971); +emit_16(2035); +emit_16(1970); +emit_16(2035); +emit_16(1971); +emit_16(2036); +emit_16(1972); +emit_16(2036); +emit_16(1971); +emit_16(2036); +emit_16(1972); +emit_16(2037); +emit_16(1973); +emit_16(2037); +emit_16(1972); +emit_16(2037); +emit_16(1973); +emit_16(2038); +emit_16(1974); +emit_16(2038); +emit_16(1973); +emit_16(2038); +emit_16(1974); +emit_16(2039); +emit_16(1975); +emit_16(2039); +emit_16(1974); +emit_16(2039); +emit_16(1975); +emit_16(2040); +emit_16(1976); +emit_16(2040); +emit_16(1975); +emit_16(2040); +emit_16(1976); +emit_16(2041); +emit_16(1977); +emit_16(2041); +emit_16(1976); +emit_16(2041); +emit_16(1977); +emit_16(2042); +emit_16(1978); +emit_16(2042); +emit_16(1977); +emit_16(2042); +emit_16(1978); +emit_16(2043); +emit_16(1979); +emit_16(2043); +emit_16(1978); +emit_16(2043); +emit_16(1979); +emit_16(2044); +emit_16(1980); +emit_16(2044); +emit_16(1979); +emit_16(2044); +emit_16(1980); +emit_16(2045); +emit_16(1981); +emit_16(2045); +emit_16(1980); +emit_16(2045); +emit_16(1981); +emit_16(2046); +emit_16(1982); +emit_16(2046); +emit_16(1981); +emit_16(2046); +emit_16(1982); +emit_16(2047); +emit_16(1983); +emit_16(2047); +emit_16(1982); +emit_16(2048); +emit_16(1984); +emit_16(2049); +emit_16(1985); +emit_16(2049); +emit_16(1984); +emit_16(2049); +emit_16(1985); +emit_16(2050); +emit_16(1986); +emit_16(2050); +emit_16(1985); +emit_16(2050); +emit_16(1986); +emit_16(2051); +emit_16(1987); +emit_16(2051); +emit_16(1986); +emit_16(2051); +emit_16(1987); +emit_16(2052); +emit_16(1988); +emit_16(2052); +emit_16(1987); +emit_16(2052); +emit_16(1988); +emit_16(2053); +emit_16(1989); +emit_16(2053); +emit_16(1988); +emit_16(2053); +emit_16(1989); +emit_16(2054); +emit_16(1990); +emit_16(2054); +emit_16(1989); +emit_16(2054); +emit_16(1990); +emit_16(2055); +emit_16(1991); +emit_16(2055); +emit_16(1990); +emit_16(2055); +emit_16(1991); +emit_16(2056); +emit_16(1992); +emit_16(2056); +emit_16(1991); +emit_16(2056); +emit_16(1992); +emit_16(2057); +emit_16(1993); +emit_16(2057); +emit_16(1992); +emit_16(2057); +emit_16(1993); +emit_16(2058); +emit_16(1994); +emit_16(2058); +emit_16(1993); +emit_16(2058); +emit_16(1994); +emit_16(2059); +emit_16(1995); +emit_16(2059); +emit_16(1994); +emit_16(2059); +emit_16(1995); +emit_16(2060); +emit_16(1996); +emit_16(2060); +emit_16(1995); +emit_16(2060); +emit_16(1996); +emit_16(2061); +emit_16(1997); +emit_16(2061); +emit_16(1996); +emit_16(2061); +emit_16(1997); +emit_16(2062); +emit_16(1998); +emit_16(2062); +emit_16(1997); +emit_16(2062); +emit_16(1998); +emit_16(2063); +emit_16(1999); +emit_16(2063); +emit_16(1998); +emit_16(2063); +emit_16(1999); +emit_16(2064); +emit_16(2000); +emit_16(2064); +emit_16(1999); +emit_16(2064); +emit_16(2000); +emit_16(2065); +emit_16(2001); +emit_16(2065); +emit_16(2000); +emit_16(2065); +emit_16(2001); +emit_16(2066); +emit_16(2002); +emit_16(2066); +emit_16(2001); +emit_16(2066); +emit_16(2002); +emit_16(2067); +emit_16(2003); +emit_16(2067); +emit_16(2002); +emit_16(2067); +emit_16(2003); +emit_16(2068); +emit_16(2004); +emit_16(2068); +emit_16(2003); +emit_16(2068); +emit_16(2004); +emit_16(2069); +emit_16(2005); +emit_16(2069); +emit_16(2004); +emit_16(2069); +emit_16(2005); +emit_16(2070); +emit_16(2006); +emit_16(2070); +emit_16(2005); +emit_16(2070); +emit_16(2006); +emit_16(2071); +emit_16(2007); +emit_16(2071); +emit_16(2006); +emit_16(2071); +emit_16(2007); +emit_16(2072); +emit_16(2008); +emit_16(2072); +emit_16(2007); +emit_16(2072); +emit_16(2008); +emit_16(2073); +emit_16(2009); +emit_16(2073); +emit_16(2008); +emit_16(2073); +emit_16(2009); +emit_16(2074); +emit_16(2010); +emit_16(2074); +emit_16(2009); +emit_16(2074); +emit_16(2010); +emit_16(2075); +emit_16(2011); +emit_16(2075); +emit_16(2010); +emit_16(2075); +emit_16(2011); +emit_16(2076); +emit_16(2012); +emit_16(2076); +emit_16(2011); +emit_16(2076); +emit_16(2012); +emit_16(2077); +emit_16(2013); +emit_16(2077); +emit_16(2012); +emit_16(2077); +emit_16(2013); +emit_16(2078); +emit_16(2014); +emit_16(2078); +emit_16(2013); +emit_16(2078); +emit_16(2014); +emit_16(2079); +emit_16(2015); +emit_16(2079); +emit_16(2014); +emit_16(2079); +emit_16(2015); +emit_16(2080); +emit_16(2016); +emit_16(2080); +emit_16(2015); +emit_16(2080); +emit_16(2016); +emit_16(2081); +emit_16(2017); +emit_16(2081); +emit_16(2016); +emit_16(2081); +emit_16(2017); +emit_16(2082); +emit_16(2018); +emit_16(2082); +emit_16(2017); +emit_16(2082); +emit_16(2018); +emit_16(2083); +emit_16(2019); +emit_16(2083); +emit_16(2018); +emit_16(2083); +emit_16(2019); +emit_16(2084); +emit_16(2020); +emit_16(2084); +emit_16(2019); +emit_16(2084); +emit_16(2020); +emit_16(2085); +emit_16(2021); +emit_16(2085); +emit_16(2020); +emit_16(2085); +emit_16(2021); +emit_16(2086); +emit_16(2022); +emit_16(2086); +emit_16(2021); +emit_16(2086); +emit_16(2022); +emit_16(2087); +emit_16(2023); +emit_16(2087); +emit_16(2022); +emit_16(2087); +emit_16(2023); +emit_16(2088); +emit_16(2024); +emit_16(2088); +emit_16(2023); +emit_16(2088); +emit_16(2024); +emit_16(2089); +emit_16(2025); +emit_16(2089); +emit_16(2024); +emit_16(2089); +emit_16(2025); +emit_16(2090); +emit_16(2026); +emit_16(2090); +emit_16(2025); +emit_16(2090); +emit_16(2026); +emit_16(2091); +emit_16(2027); +emit_16(2091); +emit_16(2026); +emit_16(2091); +emit_16(2027); +emit_16(2092); +emit_16(2028); +emit_16(2092); +emit_16(2027); +emit_16(2092); +emit_16(2028); +emit_16(2093); +emit_16(2029); +emit_16(2093); +emit_16(2028); +emit_16(2093); +emit_16(2029); +emit_16(2094); +emit_16(2030); +emit_16(2094); +emit_16(2029); +emit_16(2094); +emit_16(2030); +emit_16(2095); +emit_16(2031); +emit_16(2095); +emit_16(2030); +emit_16(2095); +emit_16(2031); +emit_16(2096); +emit_16(2032); +emit_16(2096); +emit_16(2031); +emit_16(2096); +emit_16(2032); +emit_16(2097); +emit_16(2033); +emit_16(2097); +emit_16(2032); +emit_16(2097); +emit_16(2033); +emit_16(2098); +emit_16(2034); +emit_16(2098); +emit_16(2033); +emit_16(2098); +emit_16(2034); +emit_16(2099); +emit_16(2035); +emit_16(2099); +emit_16(2034); +emit_16(2099); +emit_16(2035); +emit_16(2100); +emit_16(2036); +emit_16(2100); +emit_16(2035); +emit_16(2100); +emit_16(2036); +emit_16(2101); +emit_16(2037); +emit_16(2101); +emit_16(2036); +emit_16(2101); +emit_16(2037); +emit_16(2102); +emit_16(2038); +emit_16(2102); +emit_16(2037); +emit_16(2102); +emit_16(2038); +emit_16(2103); +emit_16(2039); +emit_16(2103); +emit_16(2038); +emit_16(2103); +emit_16(2039); +emit_16(2104); +emit_16(2040); +emit_16(2104); +emit_16(2039); +emit_16(2104); +emit_16(2040); +emit_16(2105); +emit_16(2041); +emit_16(2105); +emit_16(2040); +emit_16(2105); +emit_16(2041); +emit_16(2106); +emit_16(2042); +emit_16(2106); +emit_16(2041); +emit_16(2106); +emit_16(2042); +emit_16(2107); +emit_16(2043); +emit_16(2107); +emit_16(2042); +emit_16(2107); +emit_16(2043); +emit_16(2108); +emit_16(2044); +emit_16(2108); +emit_16(2043); +emit_16(2108); +emit_16(2044); +emit_16(2109); +emit_16(2045); +emit_16(2109); +emit_16(2044); +emit_16(2109); +emit_16(2045); +emit_16(2110); +emit_16(2046); +emit_16(2110); +emit_16(2045); +emit_16(2110); +emit_16(2046); +emit_16(2111); +emit_16(2047); +emit_16(2111); +emit_16(2046); +emit_start(Landscape05Idx) +emit_16(0); +emit_16(1); +emit_16(2); +emit_16(3); +emit_16(2); +emit_16(1); +emit_16(2); +emit_16(3); +emit_16(4); +emit_16(5); +emit_16(4); +emit_16(3); +emit_16(4); +emit_16(5); +emit_16(6); +emit_16(7); +emit_16(6); +emit_16(5); +emit_16(6); +emit_16(7); +emit_16(8); +emit_16(9); +emit_16(8); +emit_16(7); +emit_16(8); +emit_16(9); +emit_16(10); +emit_16(11); +emit_16(10); +emit_16(9); +emit_16(10); +emit_16(11); +emit_16(12); +emit_16(13); +emit_16(12); +emit_16(11); +emit_16(12); +emit_16(13); +emit_16(14); +emit_16(15); +emit_16(14); +emit_16(13); +emit_16(14); +emit_16(15); +emit_16(16); +emit_16(17); +emit_16(16); +emit_16(15); +emit_16(16); +emit_16(17); +emit_16(18); +emit_16(19); +emit_16(18); +emit_16(17); +emit_16(18); +emit_16(19); +emit_16(20); +emit_16(21); +emit_16(20); +emit_16(19); +emit_16(20); +emit_16(21); +emit_16(22); +emit_16(23); +emit_16(22); +emit_16(21); +emit_16(22); +emit_16(23); +emit_16(24); +emit_16(25); +emit_16(24); +emit_16(23); +emit_16(24); +emit_16(25); +emit_16(26); +emit_16(27); +emit_16(26); +emit_16(25); +emit_16(26); +emit_16(27); +emit_16(28); +emit_16(29); +emit_16(28); +emit_16(27); +emit_16(28); +emit_16(29); +emit_16(30); +emit_16(31); +emit_16(30); +emit_16(29); +emit_16(30); +emit_16(31); +emit_16(32); +emit_16(33); +emit_16(32); +emit_16(31); +emit_16(32); +emit_16(33); +emit_16(34); +emit_16(35); +emit_16(34); +emit_16(33); +emit_16(34); +emit_16(35); +emit_16(36); +emit_16(37); +emit_16(36); +emit_16(35); +emit_16(36); +emit_16(37); +emit_16(38); +emit_16(39); +emit_16(38); +emit_16(37); +emit_16(38); +emit_16(39); +emit_16(40); +emit_16(41); +emit_16(40); +emit_16(39); +emit_16(40); +emit_16(41); +emit_16(42); +emit_16(43); +emit_16(42); +emit_16(41); +emit_16(42); +emit_16(43); +emit_16(44); +emit_16(45); +emit_16(44); +emit_16(43); +emit_16(44); +emit_16(45); +emit_16(46); +emit_16(47); +emit_16(46); +emit_16(45); +emit_16(46); +emit_16(47); +emit_16(48); +emit_16(49); +emit_16(48); +emit_16(47); +emit_16(48); +emit_16(49); +emit_16(50); +emit_16(51); +emit_16(50); +emit_16(49); +emit_16(50); +emit_16(51); +emit_16(52); +emit_16(53); +emit_16(52); +emit_16(51); +emit_16(52); +emit_16(53); +emit_16(54); +emit_16(55); +emit_16(54); +emit_16(53); +emit_16(54); +emit_16(55); +emit_16(56); +emit_16(57); +emit_16(56); +emit_16(55); +emit_16(56); +emit_16(57); +emit_16(58); +emit_16(59); +emit_16(58); +emit_16(57); +emit_16(58); +emit_16(59); +emit_16(60); +emit_16(61); +emit_16(60); +emit_16(59); +emit_16(60); +emit_16(61); +emit_16(62); +emit_16(63); +emit_16(62); +emit_16(61); +emit_16(62); +emit_16(63); +emit_16(64); +emit_16(65); +emit_16(64); +emit_16(63); +emit_16(64); +emit_16(65); +emit_16(66); +emit_16(67); +emit_16(66); +emit_16(65); +emit_16(66); +emit_16(67); +emit_16(68); +emit_16(69); +emit_16(68); +emit_16(67); +emit_16(68); +emit_16(69); +emit_16(70); +emit_16(71); +emit_16(70); +emit_16(69); +emit_16(70); +emit_16(71); +emit_16(72); +emit_16(73); +emit_16(72); +emit_16(71); +emit_16(72); +emit_16(73); +emit_16(74); +emit_16(75); +emit_16(74); +emit_16(73); +emit_16(74); +emit_16(75); +emit_16(76); +emit_16(77); +emit_16(76); +emit_16(75); +emit_16(76); +emit_16(77); +emit_16(78); +emit_16(79); +emit_16(78); +emit_16(77); +emit_16(78); +emit_16(79); +emit_16(80); +emit_16(81); +emit_16(80); +emit_16(79); +emit_16(80); +emit_16(81); +emit_16(82); +emit_16(83); +emit_16(82); +emit_16(81); +emit_16(82); +emit_16(83); +emit_16(84); +emit_16(85); +emit_16(84); +emit_16(83); +emit_16(84); +emit_16(85); +emit_16(86); +emit_16(87); +emit_16(86); +emit_16(85); +emit_16(86); +emit_16(87); +emit_16(88); +emit_16(89); +emit_16(88); +emit_16(87); +emit_16(88); +emit_16(89); +emit_16(90); +emit_16(91); +emit_16(90); +emit_16(89); +emit_16(90); +emit_16(91); +emit_16(92); +emit_16(93); +emit_16(92); +emit_16(91); +emit_16(92); +emit_16(93); +emit_16(94); +emit_16(95); +emit_16(94); +emit_16(93); +emit_16(94); +emit_16(95); +emit_16(96); +emit_16(97); +emit_16(96); +emit_16(95); +emit_16(96); +emit_16(97); +emit_16(98); +emit_16(99); +emit_16(98); +emit_16(97); +emit_16(98); +emit_16(99); +emit_16(100); +emit_16(101); +emit_16(100); +emit_16(99); +emit_16(100); +emit_16(101); +emit_16(102); +emit_16(103); +emit_16(102); +emit_16(101); +emit_16(102); +emit_16(103); +emit_16(104); +emit_16(105); +emit_16(104); +emit_16(103); +emit_16(104); +emit_16(105); +emit_16(106); +emit_16(107); +emit_16(106); +emit_16(105); +emit_16(106); +emit_16(107); +emit_16(108); +emit_16(109); +emit_16(108); +emit_16(107); +emit_16(108); +emit_16(109); +emit_16(110); +emit_16(111); +emit_16(110); +emit_16(109); +emit_16(110); +emit_16(111); +emit_16(112); +emit_16(113); +emit_16(112); +emit_16(111); +emit_16(112); +emit_16(113); +emit_16(114); +emit_16(115); +emit_16(114); +emit_16(113); +emit_16(114); +emit_16(115); +emit_16(116); +emit_16(117); +emit_16(116); +emit_16(115); +emit_16(116); +emit_16(117); +emit_16(118); +emit_16(119); +emit_16(118); +emit_16(117); +emit_16(118); +emit_16(119); +emit_16(120); +emit_16(121); +emit_16(120); +emit_16(119); +emit_16(120); +emit_16(121); +emit_16(122); +emit_16(123); +emit_16(122); +emit_16(121); +emit_16(122); +emit_16(123); +emit_16(124); +emit_16(125); +emit_16(124); +emit_16(123); +emit_16(124); +emit_16(125); +emit_16(126); +emit_16(127); +emit_16(126); +emit_16(125); +emit_16(126); +emit_16(127); +emit_16(128); +emit_16(129); +emit_16(128); +emit_16(127); +emit_16(128); +emit_16(129); +emit_16(130); +emit_16(131); +emit_16(130); +emit_16(129); +emit_16(132); +emit_16(0); +emit_16(133); +emit_16(2); +emit_16(133); +emit_16(0); +emit_16(133); +emit_16(2); +emit_16(134); +emit_16(4); +emit_16(134); +emit_16(2); +emit_16(134); +emit_16(4); +emit_16(135); +emit_16(6); +emit_16(135); +emit_16(4); +emit_16(135); +emit_16(6); +emit_16(136); +emit_16(8); +emit_16(136); +emit_16(6); +emit_16(136); +emit_16(8); +emit_16(137); +emit_16(10); +emit_16(137); +emit_16(8); +emit_16(137); +emit_16(10); +emit_16(138); +emit_16(12); +emit_16(138); +emit_16(10); +emit_16(138); +emit_16(12); +emit_16(139); +emit_16(14); +emit_16(139); +emit_16(12); +emit_16(139); +emit_16(14); +emit_16(140); +emit_16(16); +emit_16(140); +emit_16(14); +emit_16(140); +emit_16(16); +emit_16(141); +emit_16(18); +emit_16(141); +emit_16(16); +emit_16(141); +emit_16(18); +emit_16(142); +emit_16(20); +emit_16(142); +emit_16(18); +emit_16(142); +emit_16(20); +emit_16(143); +emit_16(22); +emit_16(143); +emit_16(20); +emit_16(143); +emit_16(22); +emit_16(144); +emit_16(24); +emit_16(144); +emit_16(22); +emit_16(144); +emit_16(24); +emit_16(145); +emit_16(26); +emit_16(145); +emit_16(24); +emit_16(145); +emit_16(26); +emit_16(146); +emit_16(28); +emit_16(146); +emit_16(26); +emit_16(146); +emit_16(28); +emit_16(147); +emit_16(30); +emit_16(147); +emit_16(28); +emit_16(147); +emit_16(30); +emit_16(148); +emit_16(32); +emit_16(148); +emit_16(30); +emit_16(148); +emit_16(32); +emit_16(149); +emit_16(34); +emit_16(149); +emit_16(32); +emit_16(149); +emit_16(34); +emit_16(150); +emit_16(36); +emit_16(150); +emit_16(34); +emit_16(150); +emit_16(36); +emit_16(151); +emit_16(38); +emit_16(151); +emit_16(36); +emit_16(151); +emit_16(38); +emit_16(152); +emit_16(40); +emit_16(152); +emit_16(38); +emit_16(152); +emit_16(40); +emit_16(153); +emit_16(42); +emit_16(153); +emit_16(40); +emit_16(153); +emit_16(42); +emit_16(154); +emit_16(44); +emit_16(154); +emit_16(42); +emit_16(154); +emit_16(44); +emit_16(155); +emit_16(46); +emit_16(155); +emit_16(44); +emit_16(155); +emit_16(46); +emit_16(156); +emit_16(48); +emit_16(156); +emit_16(46); +emit_16(156); +emit_16(48); +emit_16(157); +emit_16(50); +emit_16(157); +emit_16(48); +emit_16(157); +emit_16(50); +emit_16(158); +emit_16(52); +emit_16(158); +emit_16(50); +emit_16(158); +emit_16(52); +emit_16(159); +emit_16(54); +emit_16(159); +emit_16(52); +emit_16(159); +emit_16(54); +emit_16(160); +emit_16(56); +emit_16(160); +emit_16(54); +emit_16(160); +emit_16(56); +emit_16(161); +emit_16(58); +emit_16(161); +emit_16(56); +emit_16(161); +emit_16(58); +emit_16(162); +emit_16(60); +emit_16(162); +emit_16(58); +emit_16(162); +emit_16(60); +emit_16(163); +emit_16(62); +emit_16(163); +emit_16(60); +emit_16(163); +emit_16(62); +emit_16(164); +emit_16(64); +emit_16(164); +emit_16(62); +emit_16(164); +emit_16(64); +emit_16(165); +emit_16(66); +emit_16(165); +emit_16(64); +emit_16(165); +emit_16(66); +emit_16(166); +emit_16(68); +emit_16(166); +emit_16(66); +emit_16(166); +emit_16(68); +emit_16(167); +emit_16(70); +emit_16(167); +emit_16(68); +emit_16(167); +emit_16(70); +emit_16(168); +emit_16(72); +emit_16(168); +emit_16(70); +emit_16(168); +emit_16(72); +emit_16(169); +emit_16(74); +emit_16(169); +emit_16(72); +emit_16(169); +emit_16(74); +emit_16(170); +emit_16(76); +emit_16(170); +emit_16(74); +emit_16(170); +emit_16(76); +emit_16(171); +emit_16(78); +emit_16(171); +emit_16(76); +emit_16(171); +emit_16(78); +emit_16(172); +emit_16(80); +emit_16(172); +emit_16(78); +emit_16(172); +emit_16(80); +emit_16(173); +emit_16(82); +emit_16(173); +emit_16(80); +emit_16(173); +emit_16(82); +emit_16(174); +emit_16(84); +emit_16(174); +emit_16(82); +emit_16(174); +emit_16(84); +emit_16(175); +emit_16(86); +emit_16(175); +emit_16(84); +emit_16(175); +emit_16(86); +emit_16(176); +emit_16(88); +emit_16(176); +emit_16(86); +emit_16(176); +emit_16(88); +emit_16(177); +emit_16(90); +emit_16(177); +emit_16(88); +emit_16(177); +emit_16(90); +emit_16(178); +emit_16(92); +emit_16(178); +emit_16(90); +emit_16(178); +emit_16(92); +emit_16(179); +emit_16(94); +emit_16(179); +emit_16(92); +emit_16(179); +emit_16(94); +emit_16(180); +emit_16(96); +emit_16(180); +emit_16(94); +emit_16(180); +emit_16(96); +emit_16(181); +emit_16(98); +emit_16(181); +emit_16(96); +emit_16(181); +emit_16(98); +emit_16(182); +emit_16(100); +emit_16(182); +emit_16(98); +emit_16(182); +emit_16(100); +emit_16(183); +emit_16(102); +emit_16(183); +emit_16(100); +emit_16(183); +emit_16(102); +emit_16(184); +emit_16(104); +emit_16(184); +emit_16(102); +emit_16(184); +emit_16(104); +emit_16(185); +emit_16(106); +emit_16(185); +emit_16(104); +emit_16(185); +emit_16(106); +emit_16(186); +emit_16(108); +emit_16(186); +emit_16(106); +emit_16(186); +emit_16(108); +emit_16(187); +emit_16(110); +emit_16(187); +emit_16(108); +emit_16(187); +emit_16(110); +emit_16(188); +emit_16(112); +emit_16(188); +emit_16(110); +emit_16(188); +emit_16(112); +emit_16(189); +emit_16(114); +emit_16(189); +emit_16(112); +emit_16(189); +emit_16(114); +emit_16(190); +emit_16(116); +emit_16(190); +emit_16(114); +emit_16(190); +emit_16(116); +emit_16(191); +emit_16(118); +emit_16(191); +emit_16(116); +emit_16(191); +emit_16(118); +emit_16(192); +emit_16(120); +emit_16(192); +emit_16(118); +emit_16(192); +emit_16(120); +emit_16(193); +emit_16(122); +emit_16(193); +emit_16(120); +emit_16(193); +emit_16(122); +emit_16(194); +emit_16(124); +emit_16(194); +emit_16(122); +emit_16(194); +emit_16(124); +emit_16(195); +emit_16(126); +emit_16(195); +emit_16(124); +emit_16(195); +emit_16(126); +emit_16(196); +emit_16(128); +emit_16(196); +emit_16(126); +emit_16(196); +emit_16(128); +emit_16(197); +emit_16(130); +emit_16(197); +emit_16(128); +emit_16(198); +emit_16(132); +emit_16(199); +emit_16(133); +emit_16(199); +emit_16(132); +emit_16(199); +emit_16(133); +emit_16(200); +emit_16(134); +emit_16(200); +emit_16(133); +emit_16(200); +emit_16(134); +emit_16(201); +emit_16(135); +emit_16(201); +emit_16(134); +emit_16(201); +emit_16(135); +emit_16(202); +emit_16(136); +emit_16(202); +emit_16(135); +emit_16(202); +emit_16(136); +emit_16(203); +emit_16(137); +emit_16(203); +emit_16(136); +emit_16(203); +emit_16(137); +emit_16(204); +emit_16(138); +emit_16(204); +emit_16(137); +emit_16(204); +emit_16(138); +emit_16(205); +emit_16(139); +emit_16(205); +emit_16(138); +emit_16(205); +emit_16(139); +emit_16(206); +emit_16(140); +emit_16(206); +emit_16(139); +emit_16(206); +emit_16(140); +emit_16(207); +emit_16(141); +emit_16(207); +emit_16(140); +emit_16(207); +emit_16(141); +emit_16(208); +emit_16(142); +emit_16(208); +emit_16(141); +emit_16(208); +emit_16(142); +emit_16(209); +emit_16(143); +emit_16(209); +emit_16(142); +emit_16(209); +emit_16(143); +emit_16(210); +emit_16(144); +emit_16(210); +emit_16(143); +emit_16(210); +emit_16(144); +emit_16(211); +emit_16(145); +emit_16(211); +emit_16(144); +emit_16(211); +emit_16(145); +emit_16(212); +emit_16(146); +emit_16(212); +emit_16(145); +emit_16(212); +emit_16(146); +emit_16(213); +emit_16(147); +emit_16(213); +emit_16(146); +emit_16(213); +emit_16(147); +emit_16(214); +emit_16(148); +emit_16(214); +emit_16(147); +emit_16(214); +emit_16(148); +emit_16(215); +emit_16(149); +emit_16(215); +emit_16(148); +emit_16(215); +emit_16(149); +emit_16(216); +emit_16(150); +emit_16(216); +emit_16(149); +emit_16(216); +emit_16(150); +emit_16(217); +emit_16(151); +emit_16(217); +emit_16(150); +emit_16(217); +emit_16(151); +emit_16(218); +emit_16(152); +emit_16(218); +emit_16(151); +emit_16(218); +emit_16(152); +emit_16(219); +emit_16(153); +emit_16(219); +emit_16(152); +emit_16(219); +emit_16(153); +emit_16(220); +emit_16(154); +emit_16(220); +emit_16(153); +emit_16(220); +emit_16(154); +emit_16(221); +emit_16(155); +emit_16(221); +emit_16(154); +emit_16(221); +emit_16(155); +emit_16(222); +emit_16(156); +emit_16(222); +emit_16(155); +emit_16(222); +emit_16(156); +emit_16(223); +emit_16(157); +emit_16(223); +emit_16(156); +emit_16(223); +emit_16(157); +emit_16(224); +emit_16(158); +emit_16(224); +emit_16(157); +emit_16(224); +emit_16(158); +emit_16(225); +emit_16(159); +emit_16(225); +emit_16(158); +emit_16(225); +emit_16(159); +emit_16(226); +emit_16(160); +emit_16(226); +emit_16(159); +emit_16(226); +emit_16(160); +emit_16(227); +emit_16(161); +emit_16(227); +emit_16(160); +emit_16(227); +emit_16(161); +emit_16(228); +emit_16(162); +emit_16(228); +emit_16(161); +emit_16(228); +emit_16(162); +emit_16(229); +emit_16(163); +emit_16(229); +emit_16(162); +emit_16(229); +emit_16(163); +emit_16(230); +emit_16(164); +emit_16(230); +emit_16(163); +emit_16(230); +emit_16(164); +emit_16(231); +emit_16(165); +emit_16(231); +emit_16(164); +emit_16(231); +emit_16(165); +emit_16(232); +emit_16(166); +emit_16(232); +emit_16(165); +emit_16(232); +emit_16(166); +emit_16(233); +emit_16(167); +emit_16(233); +emit_16(166); +emit_16(233); +emit_16(167); +emit_16(234); +emit_16(168); +emit_16(234); +emit_16(167); +emit_16(234); +emit_16(168); +emit_16(235); +emit_16(169); +emit_16(235); +emit_16(168); +emit_16(235); +emit_16(169); +emit_16(236); +emit_16(170); +emit_16(236); +emit_16(169); +emit_16(236); +emit_16(170); +emit_16(237); +emit_16(171); +emit_16(237); +emit_16(170); +emit_16(237); +emit_16(171); +emit_16(238); +emit_16(172); +emit_16(238); +emit_16(171); +emit_16(238); +emit_16(172); +emit_16(239); +emit_16(173); +emit_16(239); +emit_16(172); +emit_16(239); +emit_16(173); +emit_16(240); +emit_16(174); +emit_16(240); +emit_16(173); +emit_16(240); +emit_16(174); +emit_16(241); +emit_16(175); +emit_16(241); +emit_16(174); +emit_16(241); +emit_16(175); +emit_16(242); +emit_16(176); +emit_16(242); +emit_16(175); +emit_16(242); +emit_16(176); +emit_16(243); +emit_16(177); +emit_16(243); +emit_16(176); +emit_16(243); +emit_16(177); +emit_16(244); +emit_16(178); +emit_16(244); +emit_16(177); +emit_16(244); +emit_16(178); +emit_16(245); +emit_16(179); +emit_16(245); +emit_16(178); +emit_16(245); +emit_16(179); +emit_16(246); +emit_16(180); +emit_16(246); +emit_16(179); +emit_16(246); +emit_16(180); +emit_16(247); +emit_16(181); +emit_16(247); +emit_16(180); +emit_16(247); +emit_16(181); +emit_16(248); +emit_16(182); +emit_16(248); +emit_16(181); +emit_16(248); +emit_16(182); +emit_16(249); +emit_16(183); +emit_16(249); +emit_16(182); +emit_16(249); +emit_16(183); +emit_16(250); +emit_16(184); +emit_16(250); +emit_16(183); +emit_16(250); +emit_16(184); +emit_16(251); +emit_16(185); +emit_16(251); +emit_16(184); +emit_16(251); +emit_16(185); +emit_16(252); +emit_16(186); +emit_16(252); +emit_16(185); +emit_16(252); +emit_16(186); +emit_16(253); +emit_16(187); +emit_16(253); +emit_16(186); +emit_16(253); +emit_16(187); +emit_16(254); +emit_16(188); +emit_16(254); +emit_16(187); +emit_16(254); +emit_16(188); +emit_16(255); +emit_16(189); +emit_16(255); +emit_16(188); +emit_16(255); +emit_16(189); +emit_16(256); +emit_16(190); +emit_16(256); +emit_16(189); +emit_16(256); +emit_16(190); +emit_16(257); +emit_16(191); +emit_16(257); +emit_16(190); +emit_16(257); +emit_16(191); +emit_16(258); +emit_16(192); +emit_16(258); +emit_16(191); +emit_16(258); +emit_16(192); +emit_16(259); +emit_16(193); +emit_16(259); +emit_16(192); +emit_16(259); +emit_16(193); +emit_16(260); +emit_16(194); +emit_16(260); +emit_16(193); +emit_16(260); +emit_16(194); +emit_16(261); +emit_16(195); +emit_16(261); +emit_16(194); +emit_16(261); +emit_16(195); +emit_16(262); +emit_16(196); +emit_16(262); +emit_16(195); +emit_16(262); +emit_16(196); +emit_16(263); +emit_16(197); +emit_16(263); +emit_16(196); +emit_16(264); +emit_16(198); +emit_16(265); +emit_16(199); +emit_16(265); +emit_16(198); +emit_16(265); +emit_16(199); +emit_16(266); +emit_16(200); +emit_16(266); +emit_16(199); +emit_16(266); +emit_16(200); +emit_16(267); +emit_16(201); +emit_16(267); +emit_16(200); +emit_16(267); +emit_16(201); +emit_16(268); +emit_16(202); +emit_16(268); +emit_16(201); +emit_16(268); +emit_16(202); +emit_16(269); +emit_16(203); +emit_16(269); +emit_16(202); +emit_16(269); +emit_16(203); +emit_16(270); +emit_16(204); +emit_16(270); +emit_16(203); +emit_16(270); +emit_16(204); +emit_16(271); +emit_16(205); +emit_16(271); +emit_16(204); +emit_16(271); +emit_16(205); +emit_16(272); +emit_16(206); +emit_16(272); +emit_16(205); +emit_16(272); +emit_16(206); +emit_16(273); +emit_16(207); +emit_16(273); +emit_16(206); +emit_16(273); +emit_16(207); +emit_16(274); +emit_16(208); +emit_16(274); +emit_16(207); +emit_16(274); +emit_16(208); +emit_16(275); +emit_16(209); +emit_16(275); +emit_16(208); +emit_16(275); +emit_16(209); +emit_16(276); +emit_16(210); +emit_16(276); +emit_16(209); +emit_16(276); +emit_16(210); +emit_16(277); +emit_16(211); +emit_16(277); +emit_16(210); +emit_16(277); +emit_16(211); +emit_16(278); +emit_16(212); +emit_16(278); +emit_16(211); +emit_16(278); +emit_16(212); +emit_16(279); +emit_16(213); +emit_16(279); +emit_16(212); +emit_16(279); +emit_16(213); +emit_16(280); +emit_16(214); +emit_16(280); +emit_16(213); +emit_16(280); +emit_16(214); +emit_16(281); +emit_16(215); +emit_16(281); +emit_16(214); +emit_16(281); +emit_16(215); +emit_16(282); +emit_16(216); +emit_16(282); +emit_16(215); +emit_16(282); +emit_16(216); +emit_16(283); +emit_16(217); +emit_16(283); +emit_16(216); +emit_16(283); +emit_16(217); +emit_16(284); +emit_16(218); +emit_16(284); +emit_16(217); +emit_16(284); +emit_16(218); +emit_16(285); +emit_16(219); +emit_16(285); +emit_16(218); +emit_16(285); +emit_16(219); +emit_16(286); +emit_16(220); +emit_16(286); +emit_16(219); +emit_16(286); +emit_16(220); +emit_16(287); +emit_16(221); +emit_16(287); +emit_16(220); +emit_16(287); +emit_16(221); +emit_16(288); +emit_16(222); +emit_16(288); +emit_16(221); +emit_16(288); +emit_16(222); +emit_16(289); +emit_16(223); +emit_16(289); +emit_16(222); +emit_16(289); +emit_16(223); +emit_16(290); +emit_16(224); +emit_16(290); +emit_16(223); +emit_16(290); +emit_16(224); +emit_16(291); +emit_16(225); +emit_16(291); +emit_16(224); +emit_16(291); +emit_16(225); +emit_16(292); +emit_16(226); +emit_16(292); +emit_16(225); +emit_16(292); +emit_16(226); +emit_16(293); +emit_16(227); +emit_16(293); +emit_16(226); +emit_16(293); +emit_16(227); +emit_16(294); +emit_16(228); +emit_16(294); +emit_16(227); +emit_16(294); +emit_16(228); +emit_16(295); +emit_16(229); +emit_16(295); +emit_16(228); +emit_16(295); +emit_16(229); +emit_16(296); +emit_16(230); +emit_16(296); +emit_16(229); +emit_16(296); +emit_16(230); +emit_16(297); +emit_16(231); +emit_16(297); +emit_16(230); +emit_16(297); +emit_16(231); +emit_16(298); +emit_16(232); +emit_16(298); +emit_16(231); +emit_16(298); +emit_16(232); +emit_16(299); +emit_16(233); +emit_16(299); +emit_16(232); +emit_16(299); +emit_16(233); +emit_16(300); +emit_16(234); +emit_16(300); +emit_16(233); +emit_16(300); +emit_16(234); +emit_16(301); +emit_16(235); +emit_16(301); +emit_16(234); +emit_16(301); +emit_16(235); +emit_16(302); +emit_16(236); +emit_16(302); +emit_16(235); +emit_16(302); +emit_16(236); +emit_16(303); +emit_16(237); +emit_16(303); +emit_16(236); +emit_16(303); +emit_16(237); +emit_16(304); +emit_16(238); +emit_16(304); +emit_16(237); +emit_16(304); +emit_16(238); +emit_16(305); +emit_16(239); +emit_16(305); +emit_16(238); +emit_16(305); +emit_16(239); +emit_16(306); +emit_16(240); +emit_16(306); +emit_16(239); +emit_16(306); +emit_16(240); +emit_16(307); +emit_16(241); +emit_16(307); +emit_16(240); +emit_16(307); +emit_16(241); +emit_16(308); +emit_16(242); +emit_16(308); +emit_16(241); +emit_16(308); +emit_16(242); +emit_16(309); +emit_16(243); +emit_16(309); +emit_16(242); +emit_16(309); +emit_16(243); +emit_16(310); +emit_16(244); +emit_16(310); +emit_16(243); +emit_16(310); +emit_16(244); +emit_16(311); +emit_16(245); +emit_16(311); +emit_16(244); +emit_16(311); +emit_16(245); +emit_16(312); +emit_16(246); +emit_16(312); +emit_16(245); +emit_16(312); +emit_16(246); +emit_16(313); +emit_16(247); +emit_16(313); +emit_16(246); +emit_16(313); +emit_16(247); +emit_16(314); +emit_16(248); +emit_16(314); +emit_16(247); +emit_16(314); +emit_16(248); +emit_16(315); +emit_16(249); +emit_16(315); +emit_16(248); +emit_16(315); +emit_16(249); +emit_16(316); +emit_16(250); +emit_16(316); +emit_16(249); +emit_16(316); +emit_16(250); +emit_16(317); +emit_16(251); +emit_16(317); +emit_16(250); +emit_16(317); +emit_16(251); +emit_16(318); +emit_16(252); +emit_16(318); +emit_16(251); +emit_16(318); +emit_16(252); +emit_16(319); +emit_16(253); +emit_16(319); +emit_16(252); +emit_16(319); +emit_16(253); +emit_16(320); +emit_16(254); +emit_16(320); +emit_16(253); +emit_16(320); +emit_16(254); +emit_16(321); +emit_16(255); +emit_16(321); +emit_16(254); +emit_16(321); +emit_16(255); +emit_16(322); +emit_16(256); +emit_16(322); +emit_16(255); +emit_16(322); +emit_16(256); +emit_16(323); +emit_16(257); +emit_16(323); +emit_16(256); +emit_16(323); +emit_16(257); +emit_16(324); +emit_16(258); +emit_16(324); +emit_16(257); +emit_16(324); +emit_16(258); +emit_16(325); +emit_16(259); +emit_16(325); +emit_16(258); +emit_16(325); +emit_16(259); +emit_16(326); +emit_16(260); +emit_16(326); +emit_16(259); +emit_16(326); +emit_16(260); +emit_16(327); +emit_16(261); +emit_16(327); +emit_16(260); +emit_16(327); +emit_16(261); +emit_16(328); +emit_16(262); +emit_16(328); +emit_16(261); +emit_16(328); +emit_16(262); +emit_16(329); +emit_16(263); +emit_16(329); +emit_16(262); +emit_16(330); +emit_16(264); +emit_16(331); +emit_16(265); +emit_16(331); +emit_16(264); +emit_16(331); +emit_16(265); +emit_16(332); +emit_16(266); +emit_16(332); +emit_16(265); +emit_16(332); +emit_16(266); +emit_16(333); +emit_16(267); +emit_16(333); +emit_16(266); +emit_16(333); +emit_16(267); +emit_16(334); +emit_16(268); +emit_16(334); +emit_16(267); +emit_16(334); +emit_16(268); +emit_16(335); +emit_16(269); +emit_16(335); +emit_16(268); +emit_16(335); +emit_16(269); +emit_16(336); +emit_16(270); +emit_16(336); +emit_16(269); +emit_16(336); +emit_16(270); +emit_16(337); +emit_16(271); +emit_16(337); +emit_16(270); +emit_16(337); +emit_16(271); +emit_16(338); +emit_16(272); +emit_16(338); +emit_16(271); +emit_16(338); +emit_16(272); +emit_16(339); +emit_16(273); +emit_16(339); +emit_16(272); +emit_16(339); +emit_16(273); +emit_16(340); +emit_16(274); +emit_16(340); +emit_16(273); +emit_16(340); +emit_16(274); +emit_16(341); +emit_16(275); +emit_16(341); +emit_16(274); +emit_16(341); +emit_16(275); +emit_16(342); +emit_16(276); +emit_16(342); +emit_16(275); +emit_16(342); +emit_16(276); +emit_16(343); +emit_16(277); +emit_16(343); +emit_16(276); +emit_16(343); +emit_16(277); +emit_16(344); +emit_16(278); +emit_16(344); +emit_16(277); +emit_16(344); +emit_16(278); +emit_16(345); +emit_16(279); +emit_16(345); +emit_16(278); +emit_16(345); +emit_16(279); +emit_16(346); +emit_16(280); +emit_16(346); +emit_16(279); +emit_16(346); +emit_16(280); +emit_16(347); +emit_16(281); +emit_16(347); +emit_16(280); +emit_16(347); +emit_16(281); +emit_16(348); +emit_16(282); +emit_16(348); +emit_16(281); +emit_16(348); +emit_16(282); +emit_16(349); +emit_16(283); +emit_16(349); +emit_16(282); +emit_16(349); +emit_16(283); +emit_16(350); +emit_16(284); +emit_16(350); +emit_16(283); +emit_16(350); +emit_16(284); +emit_16(351); +emit_16(285); +emit_16(351); +emit_16(284); +emit_16(351); +emit_16(285); +emit_16(352); +emit_16(286); +emit_16(352); +emit_16(285); +emit_16(352); +emit_16(286); +emit_16(353); +emit_16(287); +emit_16(353); +emit_16(286); +emit_16(353); +emit_16(287); +emit_16(354); +emit_16(288); +emit_16(354); +emit_16(287); +emit_16(354); +emit_16(288); +emit_16(355); +emit_16(289); +emit_16(355); +emit_16(288); +emit_16(355); +emit_16(289); +emit_16(356); +emit_16(290); +emit_16(356); +emit_16(289); +emit_16(356); +emit_16(290); +emit_16(357); +emit_16(291); +emit_16(357); +emit_16(290); +emit_16(357); +emit_16(291); +emit_16(358); +emit_16(292); +emit_16(358); +emit_16(291); +emit_16(358); +emit_16(292); +emit_16(359); +emit_16(293); +emit_16(359); +emit_16(292); +emit_16(359); +emit_16(293); +emit_16(360); +emit_16(294); +emit_16(360); +emit_16(293); +emit_16(360); +emit_16(294); +emit_16(361); +emit_16(295); +emit_16(361); +emit_16(294); +emit_16(361); +emit_16(295); +emit_16(362); +emit_16(296); +emit_16(362); +emit_16(295); +emit_16(362); +emit_16(296); +emit_16(363); +emit_16(297); +emit_16(363); +emit_16(296); +emit_16(363); +emit_16(297); +emit_16(364); +emit_16(298); +emit_16(364); +emit_16(297); +emit_16(364); +emit_16(298); +emit_16(365); +emit_16(299); +emit_16(365); +emit_16(298); +emit_16(365); +emit_16(299); +emit_16(366); +emit_16(300); +emit_16(366); +emit_16(299); +emit_16(366); +emit_16(300); +emit_16(367); +emit_16(301); +emit_16(367); +emit_16(300); +emit_16(367); +emit_16(301); +emit_16(368); +emit_16(302); +emit_16(368); +emit_16(301); +emit_16(368); +emit_16(302); +emit_16(369); +emit_16(303); +emit_16(369); +emit_16(302); +emit_16(369); +emit_16(303); +emit_16(370); +emit_16(304); +emit_16(370); +emit_16(303); +emit_16(370); +emit_16(304); +emit_16(371); +emit_16(305); +emit_16(371); +emit_16(304); +emit_16(371); +emit_16(305); +emit_16(372); +emit_16(306); +emit_16(372); +emit_16(305); +emit_16(372); +emit_16(306); +emit_16(373); +emit_16(307); +emit_16(373); +emit_16(306); +emit_16(373); +emit_16(307); +emit_16(374); +emit_16(308); +emit_16(374); +emit_16(307); +emit_16(374); +emit_16(308); +emit_16(375); +emit_16(309); +emit_16(375); +emit_16(308); +emit_16(375); +emit_16(309); +emit_16(376); +emit_16(310); +emit_16(376); +emit_16(309); +emit_16(376); +emit_16(310); +emit_16(377); +emit_16(311); +emit_16(377); +emit_16(310); +emit_16(377); +emit_16(311); +emit_16(378); +emit_16(312); +emit_16(378); +emit_16(311); +emit_16(378); +emit_16(312); +emit_16(379); +emit_16(313); +emit_16(379); +emit_16(312); +emit_16(379); +emit_16(313); +emit_16(380); +emit_16(314); +emit_16(380); +emit_16(313); +emit_16(380); +emit_16(314); +emit_16(381); +emit_16(315); +emit_16(381); +emit_16(314); +emit_16(381); +emit_16(315); +emit_16(382); +emit_16(316); +emit_16(382); +emit_16(315); +emit_16(382); +emit_16(316); +emit_16(383); +emit_16(317); +emit_16(383); +emit_16(316); +emit_16(383); +emit_16(317); +emit_16(384); +emit_16(318); +emit_16(384); +emit_16(317); +emit_16(384); +emit_16(318); +emit_16(385); +emit_16(319); +emit_16(385); +emit_16(318); +emit_16(385); +emit_16(319); +emit_16(386); +emit_16(320); +emit_16(386); +emit_16(319); +emit_16(386); +emit_16(320); +emit_16(387); +emit_16(321); +emit_16(387); +emit_16(320); +emit_16(387); +emit_16(321); +emit_16(388); +emit_16(322); +emit_16(388); +emit_16(321); +emit_16(388); +emit_16(322); +emit_16(389); +emit_16(323); +emit_16(389); +emit_16(322); +emit_16(389); +emit_16(323); +emit_16(390); +emit_16(324); +emit_16(390); +emit_16(323); +emit_16(390); +emit_16(324); +emit_16(391); +emit_16(325); +emit_16(391); +emit_16(324); +emit_16(391); +emit_16(325); +emit_16(392); +emit_16(326); +emit_16(392); +emit_16(325); +emit_16(392); +emit_16(326); +emit_16(393); +emit_16(327); +emit_16(393); +emit_16(326); +emit_16(393); +emit_16(327); +emit_16(394); +emit_16(328); +emit_16(394); +emit_16(327); +emit_16(394); +emit_16(328); +emit_16(395); +emit_16(329); +emit_16(395); +emit_16(328); +emit_16(396); +emit_16(330); +emit_16(397); +emit_16(331); +emit_16(397); +emit_16(330); +emit_16(397); +emit_16(331); +emit_16(398); +emit_16(332); +emit_16(398); +emit_16(331); +emit_16(398); +emit_16(332); +emit_16(399); +emit_16(333); +emit_16(399); +emit_16(332); +emit_16(399); +emit_16(333); +emit_16(400); +emit_16(334); +emit_16(400); +emit_16(333); +emit_16(400); +emit_16(334); +emit_16(401); +emit_16(335); +emit_16(401); +emit_16(334); +emit_16(401); +emit_16(335); +emit_16(402); +emit_16(336); +emit_16(402); +emit_16(335); +emit_16(402); +emit_16(336); +emit_16(403); +emit_16(337); +emit_16(403); +emit_16(336); +emit_16(403); +emit_16(337); +emit_16(404); +emit_16(338); +emit_16(404); +emit_16(337); +emit_16(404); +emit_16(338); +emit_16(405); +emit_16(339); +emit_16(405); +emit_16(338); +emit_16(405); +emit_16(339); +emit_16(406); +emit_16(340); +emit_16(406); +emit_16(339); +emit_16(406); +emit_16(340); +emit_16(407); +emit_16(341); +emit_16(407); +emit_16(340); +emit_16(407); +emit_16(341); +emit_16(408); +emit_16(342); +emit_16(408); +emit_16(341); +emit_16(408); +emit_16(342); +emit_16(409); +emit_16(343); +emit_16(409); +emit_16(342); +emit_16(409); +emit_16(343); +emit_16(410); +emit_16(344); +emit_16(410); +emit_16(343); +emit_16(410); +emit_16(344); +emit_16(411); +emit_16(345); +emit_16(411); +emit_16(344); +emit_16(411); +emit_16(345); +emit_16(412); +emit_16(346); +emit_16(412); +emit_16(345); +emit_16(412); +emit_16(346); +emit_16(413); +emit_16(347); +emit_16(413); +emit_16(346); +emit_16(413); +emit_16(347); +emit_16(414); +emit_16(348); +emit_16(414); +emit_16(347); +emit_16(414); +emit_16(348); +emit_16(415); +emit_16(349); +emit_16(415); +emit_16(348); +emit_16(415); +emit_16(349); +emit_16(416); +emit_16(350); +emit_16(416); +emit_16(349); +emit_16(416); +emit_16(350); +emit_16(417); +emit_16(351); +emit_16(417); +emit_16(350); +emit_16(417); +emit_16(351); +emit_16(418); +emit_16(352); +emit_16(418); +emit_16(351); +emit_16(418); +emit_16(352); +emit_16(419); +emit_16(353); +emit_16(419); +emit_16(352); +emit_16(419); +emit_16(353); +emit_16(420); +emit_16(354); +emit_16(420); +emit_16(353); +emit_16(420); +emit_16(354); +emit_16(421); +emit_16(355); +emit_16(421); +emit_16(354); +emit_16(421); +emit_16(355); +emit_16(422); +emit_16(356); +emit_16(422); +emit_16(355); +emit_16(422); +emit_16(356); +emit_16(423); +emit_16(357); +emit_16(423); +emit_16(356); +emit_16(423); +emit_16(357); +emit_16(424); +emit_16(358); +emit_16(424); +emit_16(357); +emit_16(424); +emit_16(358); +emit_16(425); +emit_16(359); +emit_16(425); +emit_16(358); +emit_16(425); +emit_16(359); +emit_16(426); +emit_16(360); +emit_16(426); +emit_16(359); +emit_16(426); +emit_16(360); +emit_16(427); +emit_16(361); +emit_16(427); +emit_16(360); +emit_16(427); +emit_16(361); +emit_16(428); +emit_16(362); +emit_16(428); +emit_16(361); +emit_16(428); +emit_16(362); +emit_16(429); +emit_16(363); +emit_16(429); +emit_16(362); +emit_16(429); +emit_16(363); +emit_16(430); +emit_16(364); +emit_16(430); +emit_16(363); +emit_16(430); +emit_16(364); +emit_16(431); +emit_16(365); +emit_16(431); +emit_16(364); +emit_16(431); +emit_16(365); +emit_16(432); +emit_16(366); +emit_16(432); +emit_16(365); +emit_16(432); +emit_16(366); +emit_16(433); +emit_16(367); +emit_16(433); +emit_16(366); +emit_16(433); +emit_16(367); +emit_16(434); +emit_16(368); +emit_16(434); +emit_16(367); +emit_16(434); +emit_16(368); +emit_16(435); +emit_16(369); +emit_16(435); +emit_16(368); +emit_16(435); +emit_16(369); +emit_16(436); +emit_16(370); +emit_16(436); +emit_16(369); +emit_16(436); +emit_16(370); +emit_16(437); +emit_16(371); +emit_16(437); +emit_16(370); +emit_16(437); +emit_16(371); +emit_16(438); +emit_16(372); +emit_16(438); +emit_16(371); +emit_16(438); +emit_16(372); +emit_16(439); +emit_16(373); +emit_16(439); +emit_16(372); +emit_16(439); +emit_16(373); +emit_16(440); +emit_16(374); +emit_16(440); +emit_16(373); +emit_16(440); +emit_16(374); +emit_16(441); +emit_16(375); +emit_16(441); +emit_16(374); +emit_16(441); +emit_16(375); +emit_16(442); +emit_16(376); +emit_16(442); +emit_16(375); +emit_16(442); +emit_16(376); +emit_16(443); +emit_16(377); +emit_16(443); +emit_16(376); +emit_16(443); +emit_16(377); +emit_16(444); +emit_16(378); +emit_16(444); +emit_16(377); +emit_16(444); +emit_16(378); +emit_16(445); +emit_16(379); +emit_16(445); +emit_16(378); +emit_16(445); +emit_16(379); +emit_16(446); +emit_16(380); +emit_16(446); +emit_16(379); +emit_16(446); +emit_16(380); +emit_16(447); +emit_16(381); +emit_16(447); +emit_16(380); +emit_16(447); +emit_16(381); +emit_16(448); +emit_16(382); +emit_16(448); +emit_16(381); +emit_16(448); +emit_16(382); +emit_16(449); +emit_16(383); +emit_16(449); +emit_16(382); +emit_16(449); +emit_16(383); +emit_16(450); +emit_16(384); +emit_16(450); +emit_16(383); +emit_16(450); +emit_16(384); +emit_16(451); +emit_16(385); +emit_16(451); +emit_16(384); +emit_16(451); +emit_16(385); +emit_16(452); +emit_16(386); +emit_16(452); +emit_16(385); +emit_16(452); +emit_16(386); +emit_16(453); +emit_16(387); +emit_16(453); +emit_16(386); +emit_16(453); +emit_16(387); +emit_16(454); +emit_16(388); +emit_16(454); +emit_16(387); +emit_16(454); +emit_16(388); +emit_16(455); +emit_16(389); +emit_16(455); +emit_16(388); +emit_16(455); +emit_16(389); +emit_16(456); +emit_16(390); +emit_16(456); +emit_16(389); +emit_16(456); +emit_16(390); +emit_16(457); +emit_16(391); +emit_16(457); +emit_16(390); +emit_16(457); +emit_16(391); +emit_16(458); +emit_16(392); +emit_16(458); +emit_16(391); +emit_16(458); +emit_16(392); +emit_16(459); +emit_16(393); +emit_16(459); +emit_16(392); +emit_16(459); +emit_16(393); +emit_16(460); +emit_16(394); +emit_16(460); +emit_16(393); +emit_16(460); +emit_16(394); +emit_16(461); +emit_16(395); +emit_16(461); +emit_16(394); +emit_16(462); +emit_16(396); +emit_16(463); +emit_16(397); +emit_16(463); +emit_16(396); +emit_16(463); +emit_16(397); +emit_16(464); +emit_16(398); +emit_16(464); +emit_16(397); +emit_16(464); +emit_16(398); +emit_16(465); +emit_16(399); +emit_16(465); +emit_16(398); +emit_16(465); +emit_16(399); +emit_16(466); +emit_16(400); +emit_16(466); +emit_16(399); +emit_16(466); +emit_16(400); +emit_16(467); +emit_16(401); +emit_16(467); +emit_16(400); +emit_16(467); +emit_16(401); +emit_16(468); +emit_16(402); +emit_16(468); +emit_16(401); +emit_16(468); +emit_16(402); +emit_16(469); +emit_16(403); +emit_16(469); +emit_16(402); +emit_16(469); +emit_16(403); +emit_16(470); +emit_16(404); +emit_16(470); +emit_16(403); +emit_16(470); +emit_16(404); +emit_16(471); +emit_16(405); +emit_16(471); +emit_16(404); +emit_16(471); +emit_16(405); +emit_16(472); +emit_16(406); +emit_16(472); +emit_16(405); +emit_16(472); +emit_16(406); +emit_16(473); +emit_16(407); +emit_16(473); +emit_16(406); +emit_16(473); +emit_16(407); +emit_16(474); +emit_16(408); +emit_16(474); +emit_16(407); +emit_16(474); +emit_16(408); +emit_16(475); +emit_16(409); +emit_16(475); +emit_16(408); +emit_16(475); +emit_16(409); +emit_16(476); +emit_16(410); +emit_16(476); +emit_16(409); +emit_16(476); +emit_16(410); +emit_16(477); +emit_16(411); +emit_16(477); +emit_16(410); +emit_16(477); +emit_16(411); +emit_16(478); +emit_16(412); +emit_16(478); +emit_16(411); +emit_16(478); +emit_16(412); +emit_16(479); +emit_16(413); +emit_16(479); +emit_16(412); +emit_16(479); +emit_16(413); +emit_16(480); +emit_16(414); +emit_16(480); +emit_16(413); +emit_16(480); +emit_16(414); +emit_16(481); +emit_16(415); +emit_16(481); +emit_16(414); +emit_16(481); +emit_16(415); +emit_16(482); +emit_16(416); +emit_16(482); +emit_16(415); +emit_16(482); +emit_16(416); +emit_16(483); +emit_16(417); +emit_16(483); +emit_16(416); +emit_16(483); +emit_16(417); +emit_16(484); +emit_16(418); +emit_16(484); +emit_16(417); +emit_16(484); +emit_16(418); +emit_16(485); +emit_16(419); +emit_16(485); +emit_16(418); +emit_16(485); +emit_16(419); +emit_16(486); +emit_16(420); +emit_16(486); +emit_16(419); +emit_16(486); +emit_16(420); +emit_16(487); +emit_16(421); +emit_16(487); +emit_16(420); +emit_16(487); +emit_16(421); +emit_16(488); +emit_16(422); +emit_16(488); +emit_16(421); +emit_16(488); +emit_16(422); +emit_16(489); +emit_16(423); +emit_16(489); +emit_16(422); +emit_16(489); +emit_16(423); +emit_16(490); +emit_16(424); +emit_16(490); +emit_16(423); +emit_16(490); +emit_16(424); +emit_16(491); +emit_16(425); +emit_16(491); +emit_16(424); +emit_16(491); +emit_16(425); +emit_16(492); +emit_16(426); +emit_16(492); +emit_16(425); +emit_16(492); +emit_16(426); +emit_16(493); +emit_16(427); +emit_16(493); +emit_16(426); +emit_16(493); +emit_16(427); +emit_16(494); +emit_16(428); +emit_16(494); +emit_16(427); +emit_16(494); +emit_16(428); +emit_16(495); +emit_16(429); +emit_16(495); +emit_16(428); +emit_16(495); +emit_16(429); +emit_16(496); +emit_16(430); +emit_16(496); +emit_16(429); +emit_16(496); +emit_16(430); +emit_16(497); +emit_16(431); +emit_16(497); +emit_16(430); +emit_16(497); +emit_16(431); +emit_16(498); +emit_16(432); +emit_16(498); +emit_16(431); +emit_16(498); +emit_16(432); +emit_16(499); +emit_16(433); +emit_16(499); +emit_16(432); +emit_16(499); +emit_16(433); +emit_16(500); +emit_16(434); +emit_16(500); +emit_16(433); +emit_16(500); +emit_16(434); +emit_16(501); +emit_16(435); +emit_16(501); +emit_16(434); +emit_16(501); +emit_16(435); +emit_16(502); +emit_16(436); +emit_16(502); +emit_16(435); +emit_16(502); +emit_16(436); +emit_16(503); +emit_16(437); +emit_16(503); +emit_16(436); +emit_16(503); +emit_16(437); +emit_16(504); +emit_16(438); +emit_16(504); +emit_16(437); +emit_16(504); +emit_16(438); +emit_16(505); +emit_16(439); +emit_16(505); +emit_16(438); +emit_16(505); +emit_16(439); +emit_16(506); +emit_16(440); +emit_16(506); +emit_16(439); +emit_16(506); +emit_16(440); +emit_16(507); +emit_16(441); +emit_16(507); +emit_16(440); +emit_16(507); +emit_16(441); +emit_16(508); +emit_16(442); +emit_16(508); +emit_16(441); +emit_16(508); +emit_16(442); +emit_16(509); +emit_16(443); +emit_16(509); +emit_16(442); +emit_16(509); +emit_16(443); +emit_16(510); +emit_16(444); +emit_16(510); +emit_16(443); +emit_16(510); +emit_16(444); +emit_16(511); +emit_16(445); +emit_16(511); +emit_16(444); +emit_16(511); +emit_16(445); +emit_16(512); +emit_16(446); +emit_16(512); +emit_16(445); +emit_16(512); +emit_16(446); +emit_16(513); +emit_16(447); +emit_16(513); +emit_16(446); +emit_16(513); +emit_16(447); +emit_16(514); +emit_16(448); +emit_16(514); +emit_16(447); +emit_16(514); +emit_16(448); +emit_16(515); +emit_16(449); +emit_16(515); +emit_16(448); +emit_16(515); +emit_16(449); +emit_16(516); +emit_16(450); +emit_16(516); +emit_16(449); +emit_16(516); +emit_16(450); +emit_16(517); +emit_16(451); +emit_16(517); +emit_16(450); +emit_16(517); +emit_16(451); +emit_16(518); +emit_16(452); +emit_16(518); +emit_16(451); +emit_16(518); +emit_16(452); +emit_16(519); +emit_16(453); +emit_16(519); +emit_16(452); +emit_16(519); +emit_16(453); +emit_16(520); +emit_16(454); +emit_16(520); +emit_16(453); +emit_16(520); +emit_16(454); +emit_16(521); +emit_16(455); +emit_16(521); +emit_16(454); +emit_16(521); +emit_16(455); +emit_16(522); +emit_16(456); +emit_16(522); +emit_16(455); +emit_16(522); +emit_16(456); +emit_16(523); +emit_16(457); +emit_16(523); +emit_16(456); +emit_16(523); +emit_16(457); +emit_16(524); +emit_16(458); +emit_16(524); +emit_16(457); +emit_16(524); +emit_16(458); +emit_16(525); +emit_16(459); +emit_16(525); +emit_16(458); +emit_16(525); +emit_16(459); +emit_16(526); +emit_16(460); +emit_16(526); +emit_16(459); +emit_16(526); +emit_16(460); +emit_16(527); +emit_16(461); +emit_16(527); +emit_16(460); +emit_16(528); +emit_16(462); +emit_16(529); +emit_16(463); +emit_16(529); +emit_16(462); +emit_16(529); +emit_16(463); +emit_16(530); +emit_16(464); +emit_16(530); +emit_16(463); +emit_16(530); +emit_16(464); +emit_16(531); +emit_16(465); +emit_16(531); +emit_16(464); +emit_16(531); +emit_16(465); +emit_16(532); +emit_16(466); +emit_16(532); +emit_16(465); +emit_16(532); +emit_16(466); +emit_16(533); +emit_16(467); +emit_16(533); +emit_16(466); +emit_16(533); +emit_16(467); +emit_16(534); +emit_16(468); +emit_16(534); +emit_16(467); +emit_16(534); +emit_16(468); +emit_16(535); +emit_16(469); +emit_16(535); +emit_16(468); +emit_16(535); +emit_16(469); +emit_16(536); +emit_16(470); +emit_16(536); +emit_16(469); +emit_16(536); +emit_16(470); +emit_16(537); +emit_16(471); +emit_16(537); +emit_16(470); +emit_16(537); +emit_16(471); +emit_16(538); +emit_16(472); +emit_16(538); +emit_16(471); +emit_16(538); +emit_16(472); +emit_16(539); +emit_16(473); +emit_16(539); +emit_16(472); +emit_16(539); +emit_16(473); +emit_16(540); +emit_16(474); +emit_16(540); +emit_16(473); +emit_16(540); +emit_16(474); +emit_16(541); +emit_16(475); +emit_16(541); +emit_16(474); +emit_16(541); +emit_16(475); +emit_16(542); +emit_16(476); +emit_16(542); +emit_16(475); +emit_16(542); +emit_16(476); +emit_16(543); +emit_16(477); +emit_16(543); +emit_16(476); +emit_16(543); +emit_16(477); +emit_16(544); +emit_16(478); +emit_16(544); +emit_16(477); +emit_16(544); +emit_16(478); +emit_16(545); +emit_16(479); +emit_16(545); +emit_16(478); +emit_16(545); +emit_16(479); +emit_16(546); +emit_16(480); +emit_16(546); +emit_16(479); +emit_16(546); +emit_16(480); +emit_16(547); +emit_16(481); +emit_16(547); +emit_16(480); +emit_16(547); +emit_16(481); +emit_16(548); +emit_16(482); +emit_16(548); +emit_16(481); +emit_16(548); +emit_16(482); +emit_16(549); +emit_16(483); +emit_16(549); +emit_16(482); +emit_16(549); +emit_16(483); +emit_16(550); +emit_16(484); +emit_16(550); +emit_16(483); +emit_16(550); +emit_16(484); +emit_16(551); +emit_16(485); +emit_16(551); +emit_16(484); +emit_16(551); +emit_16(485); +emit_16(552); +emit_16(486); +emit_16(552); +emit_16(485); +emit_16(552); +emit_16(486); +emit_16(553); +emit_16(487); +emit_16(553); +emit_16(486); +emit_16(553); +emit_16(487); +emit_16(554); +emit_16(488); +emit_16(554); +emit_16(487); +emit_16(554); +emit_16(488); +emit_16(555); +emit_16(489); +emit_16(555); +emit_16(488); +emit_16(555); +emit_16(489); +emit_16(556); +emit_16(490); +emit_16(556); +emit_16(489); +emit_16(556); +emit_16(490); +emit_16(557); +emit_16(491); +emit_16(557); +emit_16(490); +emit_16(557); +emit_16(491); +emit_16(558); +emit_16(492); +emit_16(558); +emit_16(491); +emit_16(558); +emit_16(492); +emit_16(559); +emit_16(493); +emit_16(559); +emit_16(492); +emit_16(559); +emit_16(493); +emit_16(560); +emit_16(494); +emit_16(560); +emit_16(493); +emit_16(560); +emit_16(494); +emit_16(561); +emit_16(495); +emit_16(561); +emit_16(494); +emit_16(561); +emit_16(495); +emit_16(562); +emit_16(496); +emit_16(562); +emit_16(495); +emit_16(562); +emit_16(496); +emit_16(563); +emit_16(497); +emit_16(563); +emit_16(496); +emit_16(563); +emit_16(497); +emit_16(564); +emit_16(498); +emit_16(564); +emit_16(497); +emit_16(564); +emit_16(498); +emit_16(565); +emit_16(499); +emit_16(565); +emit_16(498); +emit_16(565); +emit_16(499); +emit_16(566); +emit_16(500); +emit_16(566); +emit_16(499); +emit_16(566); +emit_16(500); +emit_16(567); +emit_16(501); +emit_16(567); +emit_16(500); +emit_16(567); +emit_16(501); +emit_16(568); +emit_16(502); +emit_16(568); +emit_16(501); +emit_16(568); +emit_16(502); +emit_16(569); +emit_16(503); +emit_16(569); +emit_16(502); +emit_16(569); +emit_16(503); +emit_16(570); +emit_16(504); +emit_16(570); +emit_16(503); +emit_16(570); +emit_16(504); +emit_16(571); +emit_16(505); +emit_16(571); +emit_16(504); +emit_16(571); +emit_16(505); +emit_16(572); +emit_16(506); +emit_16(572); +emit_16(505); +emit_16(572); +emit_16(506); +emit_16(573); +emit_16(507); +emit_16(573); +emit_16(506); +emit_16(573); +emit_16(507); +emit_16(574); +emit_16(508); +emit_16(574); +emit_16(507); +emit_16(574); +emit_16(508); +emit_16(575); +emit_16(509); +emit_16(575); +emit_16(508); +emit_16(575); +emit_16(509); +emit_16(576); +emit_16(510); +emit_16(576); +emit_16(509); +emit_16(576); +emit_16(510); +emit_16(577); +emit_16(511); +emit_16(577); +emit_16(510); +emit_16(577); +emit_16(511); +emit_16(578); +emit_16(512); +emit_16(578); +emit_16(511); +emit_16(578); +emit_16(512); +emit_16(579); +emit_16(513); +emit_16(579); +emit_16(512); +emit_16(579); +emit_16(513); +emit_16(580); +emit_16(514); +emit_16(580); +emit_16(513); +emit_16(580); +emit_16(514); +emit_16(581); +emit_16(515); +emit_16(581); +emit_16(514); +emit_16(581); +emit_16(515); +emit_16(582); +emit_16(516); +emit_16(582); +emit_16(515); +emit_16(582); +emit_16(516); +emit_16(583); +emit_16(517); +emit_16(583); +emit_16(516); +emit_16(583); +emit_16(517); +emit_16(584); +emit_16(518); +emit_16(584); +emit_16(517); +emit_16(584); +emit_16(518); +emit_16(585); +emit_16(519); +emit_16(585); +emit_16(518); +emit_16(585); +emit_16(519); +emit_16(586); +emit_16(520); +emit_16(586); +emit_16(519); +emit_16(586); +emit_16(520); +emit_16(587); +emit_16(521); +emit_16(587); +emit_16(520); +emit_16(587); +emit_16(521); +emit_16(588); +emit_16(522); +emit_16(588); +emit_16(521); +emit_16(588); +emit_16(522); +emit_16(589); +emit_16(523); +emit_16(589); +emit_16(522); +emit_16(589); +emit_16(523); +emit_16(590); +emit_16(524); +emit_16(590); +emit_16(523); +emit_16(590); +emit_16(524); +emit_16(591); +emit_16(525); +emit_16(591); +emit_16(524); +emit_16(591); +emit_16(525); +emit_16(592); +emit_16(526); +emit_16(592); +emit_16(525); +emit_16(592); +emit_16(526); +emit_16(593); +emit_16(527); +emit_16(593); +emit_16(526); +emit_16(594); +emit_16(528); +emit_16(595); +emit_16(529); +emit_16(595); +emit_16(528); +emit_16(595); +emit_16(529); +emit_16(596); +emit_16(530); +emit_16(596); +emit_16(529); +emit_16(596); +emit_16(530); +emit_16(597); +emit_16(531); +emit_16(597); +emit_16(530); +emit_16(597); +emit_16(531); +emit_16(598); +emit_16(532); +emit_16(598); +emit_16(531); +emit_16(598); +emit_16(532); +emit_16(599); +emit_16(533); +emit_16(599); +emit_16(532); +emit_16(599); +emit_16(533); +emit_16(600); +emit_16(534); +emit_16(600); +emit_16(533); +emit_16(600); +emit_16(534); +emit_16(601); +emit_16(535); +emit_16(601); +emit_16(534); +emit_16(601); +emit_16(535); +emit_16(602); +emit_16(536); +emit_16(602); +emit_16(535); +emit_16(602); +emit_16(536); +emit_16(603); +emit_16(537); +emit_16(603); +emit_16(536); +emit_16(603); +emit_16(537); +emit_16(604); +emit_16(538); +emit_16(604); +emit_16(537); +emit_16(604); +emit_16(538); +emit_16(605); +emit_16(539); +emit_16(605); +emit_16(538); +emit_16(605); +emit_16(539); +emit_16(606); +emit_16(540); +emit_16(606); +emit_16(539); +emit_16(606); +emit_16(540); +emit_16(607); +emit_16(541); +emit_16(607); +emit_16(540); +emit_16(607); +emit_16(541); +emit_16(608); +emit_16(542); +emit_16(608); +emit_16(541); +emit_16(608); +emit_16(542); +emit_16(609); +emit_16(543); +emit_16(609); +emit_16(542); +emit_16(609); +emit_16(543); +emit_16(610); +emit_16(544); +emit_16(610); +emit_16(543); +emit_16(610); +emit_16(544); +emit_16(611); +emit_16(545); +emit_16(611); +emit_16(544); +emit_16(611); +emit_16(545); +emit_16(612); +emit_16(546); +emit_16(612); +emit_16(545); +emit_16(612); +emit_16(546); +emit_16(613); +emit_16(547); +emit_16(613); +emit_16(546); +emit_16(613); +emit_16(547); +emit_16(614); +emit_16(548); +emit_16(614); +emit_16(547); +emit_16(614); +emit_16(548); +emit_16(615); +emit_16(549); +emit_16(615); +emit_16(548); +emit_16(615); +emit_16(549); +emit_16(616); +emit_16(550); +emit_16(616); +emit_16(549); +emit_16(616); +emit_16(550); +emit_16(617); +emit_16(551); +emit_16(617); +emit_16(550); +emit_16(617); +emit_16(551); +emit_16(618); +emit_16(552); +emit_16(618); +emit_16(551); +emit_16(618); +emit_16(552); +emit_16(619); +emit_16(553); +emit_16(619); +emit_16(552); +emit_16(619); +emit_16(553); +emit_16(620); +emit_16(554); +emit_16(620); +emit_16(553); +emit_16(620); +emit_16(554); +emit_16(621); +emit_16(555); +emit_16(621); +emit_16(554); +emit_16(621); +emit_16(555); +emit_16(622); +emit_16(556); +emit_16(622); +emit_16(555); +emit_16(622); +emit_16(556); +emit_16(623); +emit_16(557); +emit_16(623); +emit_16(556); +emit_16(623); +emit_16(557); +emit_16(624); +emit_16(558); +emit_16(624); +emit_16(557); +emit_16(624); +emit_16(558); +emit_16(625); +emit_16(559); +emit_16(625); +emit_16(558); +emit_16(625); +emit_16(559); +emit_16(626); +emit_16(560); +emit_16(626); +emit_16(559); +emit_16(626); +emit_16(560); +emit_16(627); +emit_16(561); +emit_16(627); +emit_16(560); +emit_16(627); +emit_16(561); +emit_16(628); +emit_16(562); +emit_16(628); +emit_16(561); +emit_16(628); +emit_16(562); +emit_16(629); +emit_16(563); +emit_16(629); +emit_16(562); +emit_16(629); +emit_16(563); +emit_16(630); +emit_16(564); +emit_16(630); +emit_16(563); +emit_16(630); +emit_16(564); +emit_16(631); +emit_16(565); +emit_16(631); +emit_16(564); +emit_16(631); +emit_16(565); +emit_16(632); +emit_16(566); +emit_16(632); +emit_16(565); +emit_16(632); +emit_16(566); +emit_16(633); +emit_16(567); +emit_16(633); +emit_16(566); +emit_16(633); +emit_16(567); +emit_16(634); +emit_16(568); +emit_16(634); +emit_16(567); +emit_16(634); +emit_16(568); +emit_16(635); +emit_16(569); +emit_16(635); +emit_16(568); +emit_16(635); +emit_16(569); +emit_16(636); +emit_16(570); +emit_16(636); +emit_16(569); +emit_16(636); +emit_16(570); +emit_16(637); +emit_16(571); +emit_16(637); +emit_16(570); +emit_16(637); +emit_16(571); +emit_16(638); +emit_16(572); +emit_16(638); +emit_16(571); +emit_16(638); +emit_16(572); +emit_16(639); +emit_16(573); +emit_16(639); +emit_16(572); +emit_16(639); +emit_16(573); +emit_16(640); +emit_16(574); +emit_16(640); +emit_16(573); +emit_16(640); +emit_16(574); +emit_16(641); +emit_16(575); +emit_16(641); +emit_16(574); +emit_16(641); +emit_16(575); +emit_16(642); +emit_16(576); +emit_16(642); +emit_16(575); +emit_16(642); +emit_16(576); +emit_16(643); +emit_16(577); +emit_16(643); +emit_16(576); +emit_16(643); +emit_16(577); +emit_16(644); +emit_16(578); +emit_16(644); +emit_16(577); +emit_16(644); +emit_16(578); +emit_16(645); +emit_16(579); +emit_16(645); +emit_16(578); +emit_16(645); +emit_16(579); +emit_16(646); +emit_16(580); +emit_16(646); +emit_16(579); +emit_16(646); +emit_16(580); +emit_16(647); +emit_16(581); +emit_16(647); +emit_16(580); +emit_16(647); +emit_16(581); +emit_16(648); +emit_16(582); +emit_16(648); +emit_16(581); +emit_16(648); +emit_16(582); +emit_16(649); +emit_16(583); +emit_16(649); +emit_16(582); +emit_16(649); +emit_16(583); +emit_16(650); +emit_16(584); +emit_16(650); +emit_16(583); +emit_16(650); +emit_16(584); +emit_16(651); +emit_16(585); +emit_16(651); +emit_16(584); +emit_16(651); +emit_16(585); +emit_16(652); +emit_16(586); +emit_16(652); +emit_16(585); +emit_16(652); +emit_16(586); +emit_16(653); +emit_16(587); +emit_16(653); +emit_16(586); +emit_16(653); +emit_16(587); +emit_16(654); +emit_16(588); +emit_16(654); +emit_16(587); +emit_16(654); +emit_16(588); +emit_16(655); +emit_16(589); +emit_16(655); +emit_16(588); +emit_16(655); +emit_16(589); +emit_16(656); +emit_16(590); +emit_16(656); +emit_16(589); +emit_16(656); +emit_16(590); +emit_16(657); +emit_16(591); +emit_16(657); +emit_16(590); +emit_16(657); +emit_16(591); +emit_16(658); +emit_16(592); +emit_16(658); +emit_16(591); +emit_16(658); +emit_16(592); +emit_16(659); +emit_16(593); +emit_16(659); +emit_16(592); +emit_16(660); +emit_16(594); +emit_16(661); +emit_16(595); +emit_16(661); +emit_16(594); +emit_16(661); +emit_16(595); +emit_16(662); +emit_16(596); +emit_16(662); +emit_16(595); +emit_16(662); +emit_16(596); +emit_16(663); +emit_16(597); +emit_16(663); +emit_16(596); +emit_16(663); +emit_16(597); +emit_16(664); +emit_16(598); +emit_16(664); +emit_16(597); +emit_16(664); +emit_16(598); +emit_16(665); +emit_16(599); +emit_16(665); +emit_16(598); +emit_16(665); +emit_16(599); +emit_16(666); +emit_16(600); +emit_16(666); +emit_16(599); +emit_16(666); +emit_16(600); +emit_16(667); +emit_16(601); +emit_16(667); +emit_16(600); +emit_16(667); +emit_16(601); +emit_16(668); +emit_16(602); +emit_16(668); +emit_16(601); +emit_16(668); +emit_16(602); +emit_16(669); +emit_16(603); +emit_16(669); +emit_16(602); +emit_16(669); +emit_16(603); +emit_16(670); +emit_16(604); +emit_16(670); +emit_16(603); +emit_16(670); +emit_16(604); +emit_16(671); +emit_16(605); +emit_16(671); +emit_16(604); +emit_16(671); +emit_16(605); +emit_16(672); +emit_16(606); +emit_16(672); +emit_16(605); +emit_16(672); +emit_16(606); +emit_16(673); +emit_16(607); +emit_16(673); +emit_16(606); +emit_16(673); +emit_16(607); +emit_16(674); +emit_16(608); +emit_16(674); +emit_16(607); +emit_16(674); +emit_16(608); +emit_16(675); +emit_16(609); +emit_16(675); +emit_16(608); +emit_16(675); +emit_16(609); +emit_16(676); +emit_16(610); +emit_16(676); +emit_16(609); +emit_16(676); +emit_16(610); +emit_16(677); +emit_16(611); +emit_16(677); +emit_16(610); +emit_16(677); +emit_16(611); +emit_16(678); +emit_16(612); +emit_16(678); +emit_16(611); +emit_16(678); +emit_16(612); +emit_16(679); +emit_16(613); +emit_16(679); +emit_16(612); +emit_16(679); +emit_16(613); +emit_16(680); +emit_16(614); +emit_16(680); +emit_16(613); +emit_16(680); +emit_16(614); +emit_16(681); +emit_16(615); +emit_16(681); +emit_16(614); +emit_16(681); +emit_16(615); +emit_16(682); +emit_16(616); +emit_16(682); +emit_16(615); +emit_16(682); +emit_16(616); +emit_16(683); +emit_16(617); +emit_16(683); +emit_16(616); +emit_16(683); +emit_16(617); +emit_16(684); +emit_16(618); +emit_16(684); +emit_16(617); +emit_16(684); +emit_16(618); +emit_16(685); +emit_16(619); +emit_16(685); +emit_16(618); +emit_16(685); +emit_16(619); +emit_16(686); +emit_16(620); +emit_16(686); +emit_16(619); +emit_16(686); +emit_16(620); +emit_16(687); +emit_16(621); +emit_16(687); +emit_16(620); +emit_16(687); +emit_16(621); +emit_16(688); +emit_16(622); +emit_16(688); +emit_16(621); +emit_16(688); +emit_16(622); +emit_16(689); +emit_16(623); +emit_16(689); +emit_16(622); +emit_16(689); +emit_16(623); +emit_16(690); +emit_16(624); +emit_16(690); +emit_16(623); +emit_16(690); +emit_16(624); +emit_16(691); +emit_16(625); +emit_16(691); +emit_16(624); +emit_16(691); +emit_16(625); +emit_16(692); +emit_16(626); +emit_16(692); +emit_16(625); +emit_16(692); +emit_16(626); +emit_16(693); +emit_16(627); +emit_16(693); +emit_16(626); +emit_16(693); +emit_16(627); +emit_16(694); +emit_16(628); +emit_16(694); +emit_16(627); +emit_16(694); +emit_16(628); +emit_16(695); +emit_16(629); +emit_16(695); +emit_16(628); +emit_16(695); +emit_16(629); +emit_16(696); +emit_16(630); +emit_16(696); +emit_16(629); +emit_16(696); +emit_16(630); +emit_16(697); +emit_16(631); +emit_16(697); +emit_16(630); +emit_16(697); +emit_16(631); +emit_16(698); +emit_16(632); +emit_16(698); +emit_16(631); +emit_16(698); +emit_16(632); +emit_16(699); +emit_16(633); +emit_16(699); +emit_16(632); +emit_16(699); +emit_16(633); +emit_16(700); +emit_16(634); +emit_16(700); +emit_16(633); +emit_16(700); +emit_16(634); +emit_16(701); +emit_16(635); +emit_16(701); +emit_16(634); +emit_16(701); +emit_16(635); +emit_16(702); +emit_16(636); +emit_16(702); +emit_16(635); +emit_16(702); +emit_16(636); +emit_16(703); +emit_16(637); +emit_16(703); +emit_16(636); +emit_16(703); +emit_16(637); +emit_16(704); +emit_16(638); +emit_16(704); +emit_16(637); +emit_16(704); +emit_16(638); +emit_16(705); +emit_16(639); +emit_16(705); +emit_16(638); +emit_16(705); +emit_16(639); +emit_16(706); +emit_16(640); +emit_16(706); +emit_16(639); +emit_16(706); +emit_16(640); +emit_16(707); +emit_16(641); +emit_16(707); +emit_16(640); +emit_16(707); +emit_16(641); +emit_16(708); +emit_16(642); +emit_16(708); +emit_16(641); +emit_16(708); +emit_16(642); +emit_16(709); +emit_16(643); +emit_16(709); +emit_16(642); +emit_16(709); +emit_16(643); +emit_16(710); +emit_16(644); +emit_16(710); +emit_16(643); +emit_16(710); +emit_16(644); +emit_16(711); +emit_16(645); +emit_16(711); +emit_16(644); +emit_16(711); +emit_16(645); +emit_16(712); +emit_16(646); +emit_16(712); +emit_16(645); +emit_16(712); +emit_16(646); +emit_16(713); +emit_16(647); +emit_16(713); +emit_16(646); +emit_16(713); +emit_16(647); +emit_16(714); +emit_16(648); +emit_16(714); +emit_16(647); +emit_16(714); +emit_16(648); +emit_16(715); +emit_16(649); +emit_16(715); +emit_16(648); +emit_16(715); +emit_16(649); +emit_16(716); +emit_16(650); +emit_16(716); +emit_16(649); +emit_16(716); +emit_16(650); +emit_16(717); +emit_16(651); +emit_16(717); +emit_16(650); +emit_16(717); +emit_16(651); +emit_16(718); +emit_16(652); +emit_16(718); +emit_16(651); +emit_16(718); +emit_16(652); +emit_16(719); +emit_16(653); +emit_16(719); +emit_16(652); +emit_16(719); +emit_16(653); +emit_16(720); +emit_16(654); +emit_16(720); +emit_16(653); +emit_16(720); +emit_16(654); +emit_16(721); +emit_16(655); +emit_16(721); +emit_16(654); +emit_16(721); +emit_16(655); +emit_16(722); +emit_16(656); +emit_16(722); +emit_16(655); +emit_16(722); +emit_16(656); +emit_16(723); +emit_16(657); +emit_16(723); +emit_16(656); +emit_16(723); +emit_16(657); +emit_16(724); +emit_16(658); +emit_16(724); +emit_16(657); +emit_16(724); +emit_16(658); +emit_16(725); +emit_16(659); +emit_16(725); +emit_16(658); +emit_16(726); +emit_16(660); +emit_16(727); +emit_16(661); +emit_16(727); +emit_16(660); +emit_16(727); +emit_16(661); +emit_16(728); +emit_16(662); +emit_16(728); +emit_16(661); +emit_16(728); +emit_16(662); +emit_16(729); +emit_16(663); +emit_16(729); +emit_16(662); +emit_16(729); +emit_16(663); +emit_16(730); +emit_16(664); +emit_16(730); +emit_16(663); +emit_16(730); +emit_16(664); +emit_16(731); +emit_16(665); +emit_16(731); +emit_16(664); +emit_16(731); +emit_16(665); +emit_16(732); +emit_16(666); +emit_16(732); +emit_16(665); +emit_16(732); +emit_16(666); +emit_16(733); +emit_16(667); +emit_16(733); +emit_16(666); +emit_16(733); +emit_16(667); +emit_16(734); +emit_16(668); +emit_16(734); +emit_16(667); +emit_16(734); +emit_16(668); +emit_16(735); +emit_16(669); +emit_16(735); +emit_16(668); +emit_16(735); +emit_16(669); +emit_16(736); +emit_16(670); +emit_16(736); +emit_16(669); +emit_16(736); +emit_16(670); +emit_16(737); +emit_16(671); +emit_16(737); +emit_16(670); +emit_16(737); +emit_16(671); +emit_16(738); +emit_16(672); +emit_16(738); +emit_16(671); +emit_16(738); +emit_16(672); +emit_16(739); +emit_16(673); +emit_16(739); +emit_16(672); +emit_16(739); +emit_16(673); +emit_16(740); +emit_16(674); +emit_16(740); +emit_16(673); +emit_16(740); +emit_16(674); +emit_16(741); +emit_16(675); +emit_16(741); +emit_16(674); +emit_16(741); +emit_16(675); +emit_16(742); +emit_16(676); +emit_16(742); +emit_16(675); +emit_16(742); +emit_16(676); +emit_16(743); +emit_16(677); +emit_16(743); +emit_16(676); +emit_16(743); +emit_16(677); +emit_16(744); +emit_16(678); +emit_16(744); +emit_16(677); +emit_16(744); +emit_16(678); +emit_16(745); +emit_16(679); +emit_16(745); +emit_16(678); +emit_16(745); +emit_16(679); +emit_16(746); +emit_16(680); +emit_16(746); +emit_16(679); +emit_16(746); +emit_16(680); +emit_16(747); +emit_16(681); +emit_16(747); +emit_16(680); +emit_16(747); +emit_16(681); +emit_16(748); +emit_16(682); +emit_16(748); +emit_16(681); +emit_16(748); +emit_16(682); +emit_16(749); +emit_16(683); +emit_16(749); +emit_16(682); +emit_16(749); +emit_16(683); +emit_16(750); +emit_16(684); +emit_16(750); +emit_16(683); +emit_16(750); +emit_16(684); +emit_16(751); +emit_16(685); +emit_16(751); +emit_16(684); +emit_16(751); +emit_16(685); +emit_16(752); +emit_16(686); +emit_16(752); +emit_16(685); +emit_16(752); +emit_16(686); +emit_16(753); +emit_16(687); +emit_16(753); +emit_16(686); +emit_16(753); +emit_16(687); +emit_16(754); +emit_16(688); +emit_16(754); +emit_16(687); +emit_16(754); +emit_16(688); +emit_16(755); +emit_16(689); +emit_16(755); +emit_16(688); +emit_16(755); +emit_16(689); +emit_16(756); +emit_16(690); +emit_16(756); +emit_16(689); +emit_16(756); +emit_16(690); +emit_16(757); +emit_16(691); +emit_16(757); +emit_16(690); +emit_16(757); +emit_16(691); +emit_16(758); +emit_16(692); +emit_16(758); +emit_16(691); +emit_16(758); +emit_16(692); +emit_16(759); +emit_16(693); +emit_16(759); +emit_16(692); +emit_16(759); +emit_16(693); +emit_16(760); +emit_16(694); +emit_16(760); +emit_16(693); +emit_16(760); +emit_16(694); +emit_16(761); +emit_16(695); +emit_16(761); +emit_16(694); +emit_16(761); +emit_16(695); +emit_16(762); +emit_16(696); +emit_16(762); +emit_16(695); +emit_16(762); +emit_16(696); +emit_16(763); +emit_16(697); +emit_16(763); +emit_16(696); +emit_16(763); +emit_16(697); +emit_16(764); +emit_16(698); +emit_16(764); +emit_16(697); +emit_16(764); +emit_16(698); +emit_16(765); +emit_16(699); +emit_16(765); +emit_16(698); +emit_16(765); +emit_16(699); +emit_16(766); +emit_16(700); +emit_16(766); +emit_16(699); +emit_16(766); +emit_16(700); +emit_16(767); +emit_16(701); +emit_16(767); +emit_16(700); +emit_16(767); +emit_16(701); +emit_16(768); +emit_16(702); +emit_16(768); +emit_16(701); +emit_16(768); +emit_16(702); +emit_16(769); +emit_16(703); +emit_16(769); +emit_16(702); +emit_16(769); +emit_16(703); +emit_16(770); +emit_16(704); +emit_16(770); +emit_16(703); +emit_16(770); +emit_16(704); +emit_16(771); +emit_16(705); +emit_16(771); +emit_16(704); +emit_16(771); +emit_16(705); +emit_16(772); +emit_16(706); +emit_16(772); +emit_16(705); +emit_16(772); +emit_16(706); +emit_16(773); +emit_16(707); +emit_16(773); +emit_16(706); +emit_16(773); +emit_16(707); +emit_16(774); +emit_16(708); +emit_16(774); +emit_16(707); +emit_16(774); +emit_16(708); +emit_16(775); +emit_16(709); +emit_16(775); +emit_16(708); +emit_16(775); +emit_16(709); +emit_16(776); +emit_16(710); +emit_16(776); +emit_16(709); +emit_16(776); +emit_16(710); +emit_16(777); +emit_16(711); +emit_16(777); +emit_16(710); +emit_16(777); +emit_16(711); +emit_16(778); +emit_16(712); +emit_16(778); +emit_16(711); +emit_16(778); +emit_16(712); +emit_16(779); +emit_16(713); +emit_16(779); +emit_16(712); +emit_16(779); +emit_16(713); +emit_16(780); +emit_16(714); +emit_16(780); +emit_16(713); +emit_16(780); +emit_16(714); +emit_16(781); +emit_16(715); +emit_16(781); +emit_16(714); +emit_16(781); +emit_16(715); +emit_16(782); +emit_16(716); +emit_16(782); +emit_16(715); +emit_16(782); +emit_16(716); +emit_16(783); +emit_16(717); +emit_16(783); +emit_16(716); +emit_16(783); +emit_16(717); +emit_16(784); +emit_16(718); +emit_16(784); +emit_16(717); +emit_16(784); +emit_16(718); +emit_16(785); +emit_16(719); +emit_16(785); +emit_16(718); +emit_16(785); +emit_16(719); +emit_16(786); +emit_16(720); +emit_16(786); +emit_16(719); +emit_16(786); +emit_16(720); +emit_16(787); +emit_16(721); +emit_16(787); +emit_16(720); +emit_16(787); +emit_16(721); +emit_16(788); +emit_16(722); +emit_16(788); +emit_16(721); +emit_16(788); +emit_16(722); +emit_16(789); +emit_16(723); +emit_16(789); +emit_16(722); +emit_16(789); +emit_16(723); +emit_16(790); +emit_16(724); +emit_16(790); +emit_16(723); +emit_16(790); +emit_16(724); +emit_16(791); +emit_16(725); +emit_16(791); +emit_16(724); +emit_16(792); +emit_16(726); +emit_16(793); +emit_16(727); +emit_16(793); +emit_16(726); +emit_16(793); +emit_16(727); +emit_16(794); +emit_16(728); +emit_16(794); +emit_16(727); +emit_16(794); +emit_16(728); +emit_16(795); +emit_16(729); +emit_16(795); +emit_16(728); +emit_16(795); +emit_16(729); +emit_16(796); +emit_16(730); +emit_16(796); +emit_16(729); +emit_16(796); +emit_16(730); +emit_16(797); +emit_16(731); +emit_16(797); +emit_16(730); +emit_16(797); +emit_16(731); +emit_16(798); +emit_16(732); +emit_16(798); +emit_16(731); +emit_16(798); +emit_16(732); +emit_16(799); +emit_16(733); +emit_16(799); +emit_16(732); +emit_16(799); +emit_16(733); +emit_16(800); +emit_16(734); +emit_16(800); +emit_16(733); +emit_16(800); +emit_16(734); +emit_16(801); +emit_16(735); +emit_16(801); +emit_16(734); +emit_16(801); +emit_16(735); +emit_16(802); +emit_16(736); +emit_16(802); +emit_16(735); +emit_16(802); +emit_16(736); +emit_16(803); +emit_16(737); +emit_16(803); +emit_16(736); +emit_16(803); +emit_16(737); +emit_16(804); +emit_16(738); +emit_16(804); +emit_16(737); +emit_16(804); +emit_16(738); +emit_16(805); +emit_16(739); +emit_16(805); +emit_16(738); +emit_16(805); +emit_16(739); +emit_16(806); +emit_16(740); +emit_16(806); +emit_16(739); +emit_16(806); +emit_16(740); +emit_16(807); +emit_16(741); +emit_16(807); +emit_16(740); +emit_16(807); +emit_16(741); +emit_16(808); +emit_16(742); +emit_16(808); +emit_16(741); +emit_16(808); +emit_16(742); +emit_16(809); +emit_16(743); +emit_16(809); +emit_16(742); +emit_16(809); +emit_16(743); +emit_16(810); +emit_16(744); +emit_16(810); +emit_16(743); +emit_16(810); +emit_16(744); +emit_16(811); +emit_16(745); +emit_16(811); +emit_16(744); +emit_16(811); +emit_16(745); +emit_16(812); +emit_16(746); +emit_16(812); +emit_16(745); +emit_16(812); +emit_16(746); +emit_16(813); +emit_16(747); +emit_16(813); +emit_16(746); +emit_16(813); +emit_16(747); +emit_16(814); +emit_16(748); +emit_16(814); +emit_16(747); +emit_16(814); +emit_16(748); +emit_16(815); +emit_16(749); +emit_16(815); +emit_16(748); +emit_16(815); +emit_16(749); +emit_16(816); +emit_16(750); +emit_16(816); +emit_16(749); +emit_16(816); +emit_16(750); +emit_16(817); +emit_16(751); +emit_16(817); +emit_16(750); +emit_16(817); +emit_16(751); +emit_16(818); +emit_16(752); +emit_16(818); +emit_16(751); +emit_16(818); +emit_16(752); +emit_16(819); +emit_16(753); +emit_16(819); +emit_16(752); +emit_16(819); +emit_16(753); +emit_16(820); +emit_16(754); +emit_16(820); +emit_16(753); +emit_16(820); +emit_16(754); +emit_16(821); +emit_16(755); +emit_16(821); +emit_16(754); +emit_16(821); +emit_16(755); +emit_16(822); +emit_16(756); +emit_16(822); +emit_16(755); +emit_16(822); +emit_16(756); +emit_16(823); +emit_16(757); +emit_16(823); +emit_16(756); +emit_16(823); +emit_16(757); +emit_16(824); +emit_16(758); +emit_16(824); +emit_16(757); +emit_16(824); +emit_16(758); +emit_16(825); +emit_16(759); +emit_16(825); +emit_16(758); +emit_16(825); +emit_16(759); +emit_16(826); +emit_16(760); +emit_16(826); +emit_16(759); +emit_16(826); +emit_16(760); +emit_16(827); +emit_16(761); +emit_16(827); +emit_16(760); +emit_16(827); +emit_16(761); +emit_16(828); +emit_16(762); +emit_16(828); +emit_16(761); +emit_16(828); +emit_16(762); +emit_16(829); +emit_16(763); +emit_16(829); +emit_16(762); +emit_16(829); +emit_16(763); +emit_16(830); +emit_16(764); +emit_16(830); +emit_16(763); +emit_16(830); +emit_16(764); +emit_16(831); +emit_16(765); +emit_16(831); +emit_16(764); +emit_16(831); +emit_16(765); +emit_16(832); +emit_16(766); +emit_16(832); +emit_16(765); +emit_16(832); +emit_16(766); +emit_16(833); +emit_16(767); +emit_16(833); +emit_16(766); +emit_16(833); +emit_16(767); +emit_16(834); +emit_16(768); +emit_16(834); +emit_16(767); +emit_16(834); +emit_16(768); +emit_16(835); +emit_16(769); +emit_16(835); +emit_16(768); +emit_16(835); +emit_16(769); +emit_16(836); +emit_16(770); +emit_16(836); +emit_16(769); +emit_16(836); +emit_16(770); +emit_16(837); +emit_16(771); +emit_16(837); +emit_16(770); +emit_16(837); +emit_16(771); +emit_16(838); +emit_16(772); +emit_16(838); +emit_16(771); +emit_16(838); +emit_16(772); +emit_16(839); +emit_16(773); +emit_16(839); +emit_16(772); +emit_16(839); +emit_16(773); +emit_16(840); +emit_16(774); +emit_16(840); +emit_16(773); +emit_16(840); +emit_16(774); +emit_16(841); +emit_16(775); +emit_16(841); +emit_16(774); +emit_16(841); +emit_16(775); +emit_16(842); +emit_16(776); +emit_16(842); +emit_16(775); +emit_16(842); +emit_16(776); +emit_16(843); +emit_16(777); +emit_16(843); +emit_16(776); +emit_16(843); +emit_16(777); +emit_16(844); +emit_16(778); +emit_16(844); +emit_16(777); +emit_16(844); +emit_16(778); +emit_16(845); +emit_16(779); +emit_16(845); +emit_16(778); +emit_16(845); +emit_16(779); +emit_16(846); +emit_16(780); +emit_16(846); +emit_16(779); +emit_16(846); +emit_16(780); +emit_16(847); +emit_16(781); +emit_16(847); +emit_16(780); +emit_16(847); +emit_16(781); +emit_16(848); +emit_16(782); +emit_16(848); +emit_16(781); +emit_16(848); +emit_16(782); +emit_16(849); +emit_16(783); +emit_16(849); +emit_16(782); +emit_16(849); +emit_16(783); +emit_16(850); +emit_16(784); +emit_16(850); +emit_16(783); +emit_16(850); +emit_16(784); +emit_16(851); +emit_16(785); +emit_16(851); +emit_16(784); +emit_16(851); +emit_16(785); +emit_16(852); +emit_16(786); +emit_16(852); +emit_16(785); +emit_16(852); +emit_16(786); +emit_16(853); +emit_16(787); +emit_16(853); +emit_16(786); +emit_16(853); +emit_16(787); +emit_16(854); +emit_16(788); +emit_16(854); +emit_16(787); +emit_16(854); +emit_16(788); +emit_16(855); +emit_16(789); +emit_16(855); +emit_16(788); +emit_16(855); +emit_16(789); +emit_16(856); +emit_16(790); +emit_16(856); +emit_16(789); +emit_16(856); +emit_16(790); +emit_16(857); +emit_16(791); +emit_16(857); +emit_16(790); +emit_16(858); +emit_16(792); +emit_16(859); +emit_16(793); +emit_16(859); +emit_16(792); +emit_16(859); +emit_16(793); +emit_16(860); +emit_16(794); +emit_16(860); +emit_16(793); +emit_16(860); +emit_16(794); +emit_16(861); +emit_16(795); +emit_16(861); +emit_16(794); +emit_16(861); +emit_16(795); +emit_16(862); +emit_16(796); +emit_16(862); +emit_16(795); +emit_16(862); +emit_16(796); +emit_16(863); +emit_16(797); +emit_16(863); +emit_16(796); +emit_16(863); +emit_16(797); +emit_16(864); +emit_16(798); +emit_16(864); +emit_16(797); +emit_16(864); +emit_16(798); +emit_16(865); +emit_16(799); +emit_16(865); +emit_16(798); +emit_16(865); +emit_16(799); +emit_16(866); +emit_16(800); +emit_16(866); +emit_16(799); +emit_16(866); +emit_16(800); +emit_16(867); +emit_16(801); +emit_16(867); +emit_16(800); +emit_16(867); +emit_16(801); +emit_16(868); +emit_16(802); +emit_16(868); +emit_16(801); +emit_16(868); +emit_16(802); +emit_16(869); +emit_16(803); +emit_16(869); +emit_16(802); +emit_16(869); +emit_16(803); +emit_16(870); +emit_16(804); +emit_16(870); +emit_16(803); +emit_16(870); +emit_16(804); +emit_16(871); +emit_16(805); +emit_16(871); +emit_16(804); +emit_16(871); +emit_16(805); +emit_16(872); +emit_16(806); +emit_16(872); +emit_16(805); +emit_16(872); +emit_16(806); +emit_16(873); +emit_16(807); +emit_16(873); +emit_16(806); +emit_16(873); +emit_16(807); +emit_16(874); +emit_16(808); +emit_16(874); +emit_16(807); +emit_16(874); +emit_16(808); +emit_16(875); +emit_16(809); +emit_16(875); +emit_16(808); +emit_16(875); +emit_16(809); +emit_16(876); +emit_16(810); +emit_16(876); +emit_16(809); +emit_16(876); +emit_16(810); +emit_16(877); +emit_16(811); +emit_16(877); +emit_16(810); +emit_16(877); +emit_16(811); +emit_16(878); +emit_16(812); +emit_16(878); +emit_16(811); +emit_16(878); +emit_16(812); +emit_16(879); +emit_16(813); +emit_16(879); +emit_16(812); +emit_16(879); +emit_16(813); +emit_16(880); +emit_16(814); +emit_16(880); +emit_16(813); +emit_16(880); +emit_16(814); +emit_16(881); +emit_16(815); +emit_16(881); +emit_16(814); +emit_16(881); +emit_16(815); +emit_16(882); +emit_16(816); +emit_16(882); +emit_16(815); +emit_16(882); +emit_16(816); +emit_16(883); +emit_16(817); +emit_16(883); +emit_16(816); +emit_16(883); +emit_16(817); +emit_16(884); +emit_16(818); +emit_16(884); +emit_16(817); +emit_16(884); +emit_16(818); +emit_16(885); +emit_16(819); +emit_16(885); +emit_16(818); +emit_16(885); +emit_16(819); +emit_16(886); +emit_16(820); +emit_16(886); +emit_16(819); +emit_16(886); +emit_16(820); +emit_16(887); +emit_16(821); +emit_16(887); +emit_16(820); +emit_16(887); +emit_16(821); +emit_16(888); +emit_16(822); +emit_16(888); +emit_16(821); +emit_16(888); +emit_16(822); +emit_16(889); +emit_16(823); +emit_16(889); +emit_16(822); +emit_16(889); +emit_16(823); +emit_16(890); +emit_16(824); +emit_16(890); +emit_16(823); +emit_16(890); +emit_16(824); +emit_16(891); +emit_16(825); +emit_16(891); +emit_16(824); +emit_16(891); +emit_16(825); +emit_16(892); +emit_16(826); +emit_16(892); +emit_16(825); +emit_16(892); +emit_16(826); +emit_16(893); +emit_16(827); +emit_16(893); +emit_16(826); +emit_16(893); +emit_16(827); +emit_16(894); +emit_16(828); +emit_16(894); +emit_16(827); +emit_16(894); +emit_16(828); +emit_16(895); +emit_16(829); +emit_16(895); +emit_16(828); +emit_16(895); +emit_16(829); +emit_16(896); +emit_16(830); +emit_16(896); +emit_16(829); +emit_16(896); +emit_16(830); +emit_16(897); +emit_16(831); +emit_16(897); +emit_16(830); +emit_16(897); +emit_16(831); +emit_16(898); +emit_16(832); +emit_16(898); +emit_16(831); +emit_16(898); +emit_16(832); +emit_16(899); +emit_16(833); +emit_16(899); +emit_16(832); +emit_16(899); +emit_16(833); +emit_16(900); +emit_16(834); +emit_16(900); +emit_16(833); +emit_16(900); +emit_16(834); +emit_16(901); +emit_16(835); +emit_16(901); +emit_16(834); +emit_16(901); +emit_16(835); +emit_16(902); +emit_16(836); +emit_16(902); +emit_16(835); +emit_16(902); +emit_16(836); +emit_16(903); +emit_16(837); +emit_16(903); +emit_16(836); +emit_16(903); +emit_16(837); +emit_16(904); +emit_16(838); +emit_16(904); +emit_16(837); +emit_16(904); +emit_16(838); +emit_16(905); +emit_16(839); +emit_16(905); +emit_16(838); +emit_16(905); +emit_16(839); +emit_16(906); +emit_16(840); +emit_16(906); +emit_16(839); +emit_16(906); +emit_16(840); +emit_16(907); +emit_16(841); +emit_16(907); +emit_16(840); +emit_16(907); +emit_16(841); +emit_16(908); +emit_16(842); +emit_16(908); +emit_16(841); +emit_16(908); +emit_16(842); +emit_16(909); +emit_16(843); +emit_16(909); +emit_16(842); +emit_16(909); +emit_16(843); +emit_16(910); +emit_16(844); +emit_16(910); +emit_16(843); +emit_16(910); +emit_16(844); +emit_16(911); +emit_16(845); +emit_16(911); +emit_16(844); +emit_16(911); +emit_16(845); +emit_16(912); +emit_16(846); +emit_16(912); +emit_16(845); +emit_16(912); +emit_16(846); +emit_16(913); +emit_16(847); +emit_16(913); +emit_16(846); +emit_16(913); +emit_16(847); +emit_16(914); +emit_16(848); +emit_16(914); +emit_16(847); +emit_16(914); +emit_16(848); +emit_16(915); +emit_16(849); +emit_16(915); +emit_16(848); +emit_16(915); +emit_16(849); +emit_16(916); +emit_16(850); +emit_16(916); +emit_16(849); +emit_16(916); +emit_16(850); +emit_16(917); +emit_16(851); +emit_16(917); +emit_16(850); +emit_16(917); +emit_16(851); +emit_16(918); +emit_16(852); +emit_16(918); +emit_16(851); +emit_16(918); +emit_16(852); +emit_16(919); +emit_16(853); +emit_16(919); +emit_16(852); +emit_16(919); +emit_16(853); +emit_16(920); +emit_16(854); +emit_16(920); +emit_16(853); +emit_16(920); +emit_16(854); +emit_16(921); +emit_16(855); +emit_16(921); +emit_16(854); +emit_16(921); +emit_16(855); +emit_16(922); +emit_16(856); +emit_16(922); +emit_16(855); +emit_16(922); +emit_16(856); +emit_16(923); +emit_16(857); +emit_16(923); +emit_16(856); +emit_16(924); +emit_16(858); +emit_16(925); +emit_16(859); +emit_16(925); +emit_16(858); +emit_16(925); +emit_16(859); +emit_16(926); +emit_16(860); +emit_16(926); +emit_16(859); +emit_16(926); +emit_16(860); +emit_16(927); +emit_16(861); +emit_16(927); +emit_16(860); +emit_16(927); +emit_16(861); +emit_16(928); +emit_16(862); +emit_16(928); +emit_16(861); +emit_16(928); +emit_16(862); +emit_16(929); +emit_16(863); +emit_16(929); +emit_16(862); +emit_16(929); +emit_16(863); +emit_16(930); +emit_16(864); +emit_16(930); +emit_16(863); +emit_16(930); +emit_16(864); +emit_16(931); +emit_16(865); +emit_16(931); +emit_16(864); +emit_16(931); +emit_16(865); +emit_16(932); +emit_16(866); +emit_16(932); +emit_16(865); +emit_16(932); +emit_16(866); +emit_16(933); +emit_16(867); +emit_16(933); +emit_16(866); +emit_16(933); +emit_16(867); +emit_16(934); +emit_16(868); +emit_16(934); +emit_16(867); +emit_16(934); +emit_16(868); +emit_16(935); +emit_16(869); +emit_16(935); +emit_16(868); +emit_16(935); +emit_16(869); +emit_16(936); +emit_16(870); +emit_16(936); +emit_16(869); +emit_16(936); +emit_16(870); +emit_16(937); +emit_16(871); +emit_16(937); +emit_16(870); +emit_16(937); +emit_16(871); +emit_16(938); +emit_16(872); +emit_16(938); +emit_16(871); +emit_16(938); +emit_16(872); +emit_16(939); +emit_16(873); +emit_16(939); +emit_16(872); +emit_16(939); +emit_16(873); +emit_16(940); +emit_16(874); +emit_16(940); +emit_16(873); +emit_16(940); +emit_16(874); +emit_16(941); +emit_16(875); +emit_16(941); +emit_16(874); +emit_16(941); +emit_16(875); +emit_16(942); +emit_16(876); +emit_16(942); +emit_16(875); +emit_16(942); +emit_16(876); +emit_16(943); +emit_16(877); +emit_16(943); +emit_16(876); +emit_16(943); +emit_16(877); +emit_16(944); +emit_16(878); +emit_16(944); +emit_16(877); +emit_16(944); +emit_16(878); +emit_16(945); +emit_16(879); +emit_16(945); +emit_16(878); +emit_16(945); +emit_16(879); +emit_16(946); +emit_16(880); +emit_16(946); +emit_16(879); +emit_16(946); +emit_16(880); +emit_16(947); +emit_16(881); +emit_16(947); +emit_16(880); +emit_16(947); +emit_16(881); +emit_16(948); +emit_16(882); +emit_16(948); +emit_16(881); +emit_16(948); +emit_16(882); +emit_16(949); +emit_16(883); +emit_16(949); +emit_16(882); +emit_16(949); +emit_16(883); +emit_16(950); +emit_16(884); +emit_16(950); +emit_16(883); +emit_16(950); +emit_16(884); +emit_16(951); +emit_16(885); +emit_16(951); +emit_16(884); +emit_16(951); +emit_16(885); +emit_16(952); +emit_16(886); +emit_16(952); +emit_16(885); +emit_16(952); +emit_16(886); +emit_16(953); +emit_16(887); +emit_16(953); +emit_16(886); +emit_16(953); +emit_16(887); +emit_16(954); +emit_16(888); +emit_16(954); +emit_16(887); +emit_16(954); +emit_16(888); +emit_16(955); +emit_16(889); +emit_16(955); +emit_16(888); +emit_16(955); +emit_16(889); +emit_16(956); +emit_16(890); +emit_16(956); +emit_16(889); +emit_16(956); +emit_16(890); +emit_16(957); +emit_16(891); +emit_16(957); +emit_16(890); +emit_16(957); +emit_16(891); +emit_16(958); +emit_16(892); +emit_16(958); +emit_16(891); +emit_16(958); +emit_16(892); +emit_16(959); +emit_16(893); +emit_16(959); +emit_16(892); +emit_16(959); +emit_16(893); +emit_16(960); +emit_16(894); +emit_16(960); +emit_16(893); +emit_16(960); +emit_16(894); +emit_16(961); +emit_16(895); +emit_16(961); +emit_16(894); +emit_16(961); +emit_16(895); +emit_16(962); +emit_16(896); +emit_16(962); +emit_16(895); +emit_16(962); +emit_16(896); +emit_16(963); +emit_16(897); +emit_16(963); +emit_16(896); +emit_16(963); +emit_16(897); +emit_16(964); +emit_16(898); +emit_16(964); +emit_16(897); +emit_16(964); +emit_16(898); +emit_16(965); +emit_16(899); +emit_16(965); +emit_16(898); +emit_16(965); +emit_16(899); +emit_16(966); +emit_16(900); +emit_16(966); +emit_16(899); +emit_16(966); +emit_16(900); +emit_16(967); +emit_16(901); +emit_16(967); +emit_16(900); +emit_16(967); +emit_16(901); +emit_16(968); +emit_16(902); +emit_16(968); +emit_16(901); +emit_16(968); +emit_16(902); +emit_16(969); +emit_16(903); +emit_16(969); +emit_16(902); +emit_16(969); +emit_16(903); +emit_16(970); +emit_16(904); +emit_16(970); +emit_16(903); +emit_16(970); +emit_16(904); +emit_16(971); +emit_16(905); +emit_16(971); +emit_16(904); +emit_16(971); +emit_16(905); +emit_16(972); +emit_16(906); +emit_16(972); +emit_16(905); +emit_16(972); +emit_16(906); +emit_16(973); +emit_16(907); +emit_16(973); +emit_16(906); +emit_16(973); +emit_16(907); +emit_16(974); +emit_16(908); +emit_16(974); +emit_16(907); +emit_16(974); +emit_16(908); +emit_16(975); +emit_16(909); +emit_16(975); +emit_16(908); +emit_16(975); +emit_16(909); +emit_16(976); +emit_16(910); +emit_16(976); +emit_16(909); +emit_16(976); +emit_16(910); +emit_16(977); +emit_16(911); +emit_16(977); +emit_16(910); +emit_16(977); +emit_16(911); +emit_16(978); +emit_16(912); +emit_16(978); +emit_16(911); +emit_16(978); +emit_16(912); +emit_16(979); +emit_16(913); +emit_16(979); +emit_16(912); +emit_16(979); +emit_16(913); +emit_16(980); +emit_16(914); +emit_16(980); +emit_16(913); +emit_16(980); +emit_16(914); +emit_16(981); +emit_16(915); +emit_16(981); +emit_16(914); +emit_16(981); +emit_16(915); +emit_16(982); +emit_16(916); +emit_16(982); +emit_16(915); +emit_16(982); +emit_16(916); +emit_16(983); +emit_16(917); +emit_16(983); +emit_16(916); +emit_16(983); +emit_16(917); +emit_16(984); +emit_16(918); +emit_16(984); +emit_16(917); +emit_16(984); +emit_16(918); +emit_16(985); +emit_16(919); +emit_16(985); +emit_16(918); +emit_16(985); +emit_16(919); +emit_16(986); +emit_16(920); +emit_16(986); +emit_16(919); +emit_16(986); +emit_16(920); +emit_16(987); +emit_16(921); +emit_16(987); +emit_16(920); +emit_16(987); +emit_16(921); +emit_16(988); +emit_16(922); +emit_16(988); +emit_16(921); +emit_16(988); +emit_16(922); +emit_16(989); +emit_16(923); +emit_16(989); +emit_16(922); +emit_16(990); +emit_16(924); +emit_16(991); +emit_16(925); +emit_16(991); +emit_16(924); +emit_16(991); +emit_16(925); +emit_16(992); +emit_16(926); +emit_16(992); +emit_16(925); +emit_16(992); +emit_16(926); +emit_16(993); +emit_16(927); +emit_16(993); +emit_16(926); +emit_16(993); +emit_16(927); +emit_16(994); +emit_16(928); +emit_16(994); +emit_16(927); +emit_16(994); +emit_16(928); +emit_16(995); +emit_16(929); +emit_16(995); +emit_16(928); +emit_16(995); +emit_16(929); +emit_16(996); +emit_16(930); +emit_16(996); +emit_16(929); +emit_16(996); +emit_16(930); +emit_16(997); +emit_16(931); +emit_16(997); +emit_16(930); +emit_16(997); +emit_16(931); +emit_16(998); +emit_16(932); +emit_16(998); +emit_16(931); +emit_16(998); +emit_16(932); +emit_16(999); +emit_16(933); +emit_16(999); +emit_16(932); +emit_16(999); +emit_16(933); +emit_16(1000); +emit_16(934); +emit_16(1000); +emit_16(933); +emit_16(1000); +emit_16(934); +emit_16(1001); +emit_16(935); +emit_16(1001); +emit_16(934); +emit_16(1001); +emit_16(935); +emit_16(1002); +emit_16(936); +emit_16(1002); +emit_16(935); +emit_16(1002); +emit_16(936); +emit_16(1003); +emit_16(937); +emit_16(1003); +emit_16(936); +emit_16(1003); +emit_16(937); +emit_16(1004); +emit_16(938); +emit_16(1004); +emit_16(937); +emit_16(1004); +emit_16(938); +emit_16(1005); +emit_16(939); +emit_16(1005); +emit_16(938); +emit_16(1005); +emit_16(939); +emit_16(1006); +emit_16(940); +emit_16(1006); +emit_16(939); +emit_16(1006); +emit_16(940); +emit_16(1007); +emit_16(941); +emit_16(1007); +emit_16(940); +emit_16(1007); +emit_16(941); +emit_16(1008); +emit_16(942); +emit_16(1008); +emit_16(941); +emit_16(1008); +emit_16(942); +emit_16(1009); +emit_16(943); +emit_16(1009); +emit_16(942); +emit_16(1009); +emit_16(943); +emit_16(1010); +emit_16(944); +emit_16(1010); +emit_16(943); +emit_16(1010); +emit_16(944); +emit_16(1011); +emit_16(945); +emit_16(1011); +emit_16(944); +emit_16(1011); +emit_16(945); +emit_16(1012); +emit_16(946); +emit_16(1012); +emit_16(945); +emit_16(1012); +emit_16(946); +emit_16(1013); +emit_16(947); +emit_16(1013); +emit_16(946); +emit_16(1013); +emit_16(947); +emit_16(1014); +emit_16(948); +emit_16(1014); +emit_16(947); +emit_16(1014); +emit_16(948); +emit_16(1015); +emit_16(949); +emit_16(1015); +emit_16(948); +emit_16(1015); +emit_16(949); +emit_16(1016); +emit_16(950); +emit_16(1016); +emit_16(949); +emit_16(1016); +emit_16(950); +emit_16(1017); +emit_16(951); +emit_16(1017); +emit_16(950); +emit_16(1017); +emit_16(951); +emit_16(1018); +emit_16(952); +emit_16(1018); +emit_16(951); +emit_16(1018); +emit_16(952); +emit_16(1019); +emit_16(953); +emit_16(1019); +emit_16(952); +emit_16(1019); +emit_16(953); +emit_16(1020); +emit_16(954); +emit_16(1020); +emit_16(953); +emit_16(1020); +emit_16(954); +emit_16(1021); +emit_16(955); +emit_16(1021); +emit_16(954); +emit_16(1021); +emit_16(955); +emit_16(1022); +emit_16(956); +emit_16(1022); +emit_16(955); +emit_16(1022); +emit_16(956); +emit_16(1023); +emit_16(957); +emit_16(1023); +emit_16(956); +emit_16(1023); +emit_16(957); +emit_16(1024); +emit_16(958); +emit_16(1024); +emit_16(957); +emit_16(1024); +emit_16(958); +emit_16(1025); +emit_16(959); +emit_16(1025); +emit_16(958); +emit_16(1025); +emit_16(959); +emit_16(1026); +emit_16(960); +emit_16(1026); +emit_16(959); +emit_16(1026); +emit_16(960); +emit_16(1027); +emit_16(961); +emit_16(1027); +emit_16(960); +emit_16(1027); +emit_16(961); +emit_16(1028); +emit_16(962); +emit_16(1028); +emit_16(961); +emit_16(1028); +emit_16(962); +emit_16(1029); +emit_16(963); +emit_16(1029); +emit_16(962); +emit_16(1029); +emit_16(963); +emit_16(1030); +emit_16(964); +emit_16(1030); +emit_16(963); +emit_16(1030); +emit_16(964); +emit_16(1031); +emit_16(965); +emit_16(1031); +emit_16(964); +emit_16(1031); +emit_16(965); +emit_16(1032); +emit_16(966); +emit_16(1032); +emit_16(965); +emit_16(1032); +emit_16(966); +emit_16(1033); +emit_16(967); +emit_16(1033); +emit_16(966); +emit_16(1033); +emit_16(967); +emit_16(1034); +emit_16(968); +emit_16(1034); +emit_16(967); +emit_16(1034); +emit_16(968); +emit_16(1035); +emit_16(969); +emit_16(1035); +emit_16(968); +emit_16(1035); +emit_16(969); +emit_16(1036); +emit_16(970); +emit_16(1036); +emit_16(969); +emit_16(1036); +emit_16(970); +emit_16(1037); +emit_16(971); +emit_16(1037); +emit_16(970); +emit_16(1037); +emit_16(971); +emit_16(1038); +emit_16(972); +emit_16(1038); +emit_16(971); +emit_16(1038); +emit_16(972); +emit_16(1039); +emit_16(973); +emit_16(1039); +emit_16(972); +emit_16(1039); +emit_16(973); +emit_16(1040); +emit_16(974); +emit_16(1040); +emit_16(973); +emit_16(1040); +emit_16(974); +emit_16(1041); +emit_16(975); +emit_16(1041); +emit_16(974); +emit_16(1041); +emit_16(975); +emit_16(1042); +emit_16(976); +emit_16(1042); +emit_16(975); +emit_16(1042); +emit_16(976); +emit_16(1043); +emit_16(977); +emit_16(1043); +emit_16(976); +emit_16(1043); +emit_16(977); +emit_16(1044); +emit_16(978); +emit_16(1044); +emit_16(977); +emit_16(1044); +emit_16(978); +emit_16(1045); +emit_16(979); +emit_16(1045); +emit_16(978); +emit_16(1045); +emit_16(979); +emit_16(1046); +emit_16(980); +emit_16(1046); +emit_16(979); +emit_16(1046); +emit_16(980); +emit_16(1047); +emit_16(981); +emit_16(1047); +emit_16(980); +emit_16(1047); +emit_16(981); +emit_16(1048); +emit_16(982); +emit_16(1048); +emit_16(981); +emit_16(1048); +emit_16(982); +emit_16(1049); +emit_16(983); +emit_16(1049); +emit_16(982); +emit_16(1049); +emit_16(983); +emit_16(1050); +emit_16(984); +emit_16(1050); +emit_16(983); +emit_16(1050); +emit_16(984); +emit_16(1051); +emit_16(985); +emit_16(1051); +emit_16(984); +emit_16(1051); +emit_16(985); +emit_16(1052); +emit_16(986); +emit_16(1052); +emit_16(985); +emit_16(1052); +emit_16(986); +emit_16(1053); +emit_16(987); +emit_16(1053); +emit_16(986); +emit_16(1053); +emit_16(987); +emit_16(1054); +emit_16(988); +emit_16(1054); +emit_16(987); +emit_16(1054); +emit_16(988); +emit_16(1055); +emit_16(989); +emit_16(1055); +emit_16(988); +emit_16(1056); +emit_16(990); +emit_16(1057); +emit_16(991); +emit_16(1057); +emit_16(990); +emit_16(1057); +emit_16(991); +emit_16(1058); +emit_16(992); +emit_16(1058); +emit_16(991); +emit_16(1058); +emit_16(992); +emit_16(1059); +emit_16(993); +emit_16(1059); +emit_16(992); +emit_16(1059); +emit_16(993); +emit_16(1060); +emit_16(994); +emit_16(1060); +emit_16(993); +emit_16(1060); +emit_16(994); +emit_16(1061); +emit_16(995); +emit_16(1061); +emit_16(994); +emit_16(1061); +emit_16(995); +emit_16(1062); +emit_16(996); +emit_16(1062); +emit_16(995); +emit_16(1062); +emit_16(996); +emit_16(1063); +emit_16(997); +emit_16(1063); +emit_16(996); +emit_16(1063); +emit_16(997); +emit_16(1064); +emit_16(998); +emit_16(1064); +emit_16(997); +emit_16(1064); +emit_16(998); +emit_16(1065); +emit_16(999); +emit_16(1065); +emit_16(998); +emit_16(1065); +emit_16(999); +emit_16(1066); +emit_16(1000); +emit_16(1066); +emit_16(999); +emit_16(1066); +emit_16(1000); +emit_16(1067); +emit_16(1001); +emit_16(1067); +emit_16(1000); +emit_16(1067); +emit_16(1001); +emit_16(1068); +emit_16(1002); +emit_16(1068); +emit_16(1001); +emit_16(1068); +emit_16(1002); +emit_16(1069); +emit_16(1003); +emit_16(1069); +emit_16(1002); +emit_16(1069); +emit_16(1003); +emit_16(1070); +emit_16(1004); +emit_16(1070); +emit_16(1003); +emit_16(1070); +emit_16(1004); +emit_16(1071); +emit_16(1005); +emit_16(1071); +emit_16(1004); +emit_16(1071); +emit_16(1005); +emit_16(1072); +emit_16(1006); +emit_16(1072); +emit_16(1005); +emit_16(1072); +emit_16(1006); +emit_16(1073); +emit_16(1007); +emit_16(1073); +emit_16(1006); +emit_16(1073); +emit_16(1007); +emit_16(1074); +emit_16(1008); +emit_16(1074); +emit_16(1007); +emit_16(1074); +emit_16(1008); +emit_16(1075); +emit_16(1009); +emit_16(1075); +emit_16(1008); +emit_16(1075); +emit_16(1009); +emit_16(1076); +emit_16(1010); +emit_16(1076); +emit_16(1009); +emit_16(1076); +emit_16(1010); +emit_16(1077); +emit_16(1011); +emit_16(1077); +emit_16(1010); +emit_16(1077); +emit_16(1011); +emit_16(1078); +emit_16(1012); +emit_16(1078); +emit_16(1011); +emit_16(1078); +emit_16(1012); +emit_16(1079); +emit_16(1013); +emit_16(1079); +emit_16(1012); +emit_16(1079); +emit_16(1013); +emit_16(1080); +emit_16(1014); +emit_16(1080); +emit_16(1013); +emit_16(1080); +emit_16(1014); +emit_16(1081); +emit_16(1015); +emit_16(1081); +emit_16(1014); +emit_16(1081); +emit_16(1015); +emit_16(1082); +emit_16(1016); +emit_16(1082); +emit_16(1015); +emit_16(1082); +emit_16(1016); +emit_16(1083); +emit_16(1017); +emit_16(1083); +emit_16(1016); +emit_16(1083); +emit_16(1017); +emit_16(1084); +emit_16(1018); +emit_16(1084); +emit_16(1017); +emit_16(1084); +emit_16(1018); +emit_16(1085); +emit_16(1019); +emit_16(1085); +emit_16(1018); +emit_16(1085); +emit_16(1019); +emit_16(1086); +emit_16(1020); +emit_16(1086); +emit_16(1019); +emit_16(1086); +emit_16(1020); +emit_16(1087); +emit_16(1021); +emit_16(1087); +emit_16(1020); +emit_16(1087); +emit_16(1021); +emit_16(1088); +emit_16(1022); +emit_16(1088); +emit_16(1021); +emit_16(1088); +emit_16(1022); +emit_16(1089); +emit_16(1023); +emit_16(1089); +emit_16(1022); +emit_16(1089); +emit_16(1023); +emit_16(1090); +emit_16(1024); +emit_16(1090); +emit_16(1023); +emit_16(1090); +emit_16(1024); +emit_16(1091); +emit_16(1025); +emit_16(1091); +emit_16(1024); +emit_16(1091); +emit_16(1025); +emit_16(1092); +emit_16(1026); +emit_16(1092); +emit_16(1025); +emit_16(1092); +emit_16(1026); +emit_16(1093); +emit_16(1027); +emit_16(1093); +emit_16(1026); +emit_16(1093); +emit_16(1027); +emit_16(1094); +emit_16(1028); +emit_16(1094); +emit_16(1027); +emit_16(1094); +emit_16(1028); +emit_16(1095); +emit_16(1029); +emit_16(1095); +emit_16(1028); +emit_16(1095); +emit_16(1029); +emit_16(1096); +emit_16(1030); +emit_16(1096); +emit_16(1029); +emit_16(1096); +emit_16(1030); +emit_16(1097); +emit_16(1031); +emit_16(1097); +emit_16(1030); +emit_16(1097); +emit_16(1031); +emit_16(1098); +emit_16(1032); +emit_16(1098); +emit_16(1031); +emit_16(1098); +emit_16(1032); +emit_16(1099); +emit_16(1033); +emit_16(1099); +emit_16(1032); +emit_16(1099); +emit_16(1033); +emit_16(1100); +emit_16(1034); +emit_16(1100); +emit_16(1033); +emit_16(1100); +emit_16(1034); +emit_16(1101); +emit_16(1035); +emit_16(1101); +emit_16(1034); +emit_16(1101); +emit_16(1035); +emit_16(1102); +emit_16(1036); +emit_16(1102); +emit_16(1035); +emit_16(1102); +emit_16(1036); +emit_16(1103); +emit_16(1037); +emit_16(1103); +emit_16(1036); +emit_16(1103); +emit_16(1037); +emit_16(1104); +emit_16(1038); +emit_16(1104); +emit_16(1037); +emit_16(1104); +emit_16(1038); +emit_16(1105); +emit_16(1039); +emit_16(1105); +emit_16(1038); +emit_16(1105); +emit_16(1039); +emit_16(1106); +emit_16(1040); +emit_16(1106); +emit_16(1039); +emit_16(1106); +emit_16(1040); +emit_16(1107); +emit_16(1041); +emit_16(1107); +emit_16(1040); +emit_16(1107); +emit_16(1041); +emit_16(1108); +emit_16(1042); +emit_16(1108); +emit_16(1041); +emit_16(1108); +emit_16(1042); +emit_16(1109); +emit_16(1043); +emit_16(1109); +emit_16(1042); +emit_16(1109); +emit_16(1043); +emit_16(1110); +emit_16(1044); +emit_16(1110); +emit_16(1043); +emit_16(1110); +emit_16(1044); +emit_16(1111); +emit_16(1045); +emit_16(1111); +emit_16(1044); +emit_16(1111); +emit_16(1045); +emit_16(1112); +emit_16(1046); +emit_16(1112); +emit_16(1045); +emit_16(1112); +emit_16(1046); +emit_16(1113); +emit_16(1047); +emit_16(1113); +emit_16(1046); +emit_16(1113); +emit_16(1047); +emit_16(1114); +emit_16(1048); +emit_16(1114); +emit_16(1047); +emit_16(1114); +emit_16(1048); +emit_16(1115); +emit_16(1049); +emit_16(1115); +emit_16(1048); +emit_16(1115); +emit_16(1049); +emit_16(1116); +emit_16(1050); +emit_16(1116); +emit_16(1049); +emit_16(1116); +emit_16(1050); +emit_16(1117); +emit_16(1051); +emit_16(1117); +emit_16(1050); +emit_16(1117); +emit_16(1051); +emit_16(1118); +emit_16(1052); +emit_16(1118); +emit_16(1051); +emit_16(1118); +emit_16(1052); +emit_16(1119); +emit_16(1053); +emit_16(1119); +emit_16(1052); +emit_16(1119); +emit_16(1053); +emit_16(1120); +emit_16(1054); +emit_16(1120); +emit_16(1053); +emit_16(1120); +emit_16(1054); +emit_16(1121); +emit_16(1055); +emit_16(1121); +emit_16(1054); +emit_16(1122); +emit_16(1056); +emit_16(1123); +emit_16(1057); +emit_16(1123); +emit_16(1056); +emit_16(1123); +emit_16(1057); +emit_16(1124); +emit_16(1058); +emit_16(1124); +emit_16(1057); +emit_16(1124); +emit_16(1058); +emit_16(1125); +emit_16(1059); +emit_16(1125); +emit_16(1058); +emit_16(1125); +emit_16(1059); +emit_16(1126); +emit_16(1060); +emit_16(1126); +emit_16(1059); +emit_16(1126); +emit_16(1060); +emit_16(1127); +emit_16(1061); +emit_16(1127); +emit_16(1060); +emit_16(1127); +emit_16(1061); +emit_16(1128); +emit_16(1062); +emit_16(1128); +emit_16(1061); +emit_16(1128); +emit_16(1062); +emit_16(1129); +emit_16(1063); +emit_16(1129); +emit_16(1062); +emit_16(1129); +emit_16(1063); +emit_16(1130); +emit_16(1064); +emit_16(1130); +emit_16(1063); +emit_16(1130); +emit_16(1064); +emit_16(1131); +emit_16(1065); +emit_16(1131); +emit_16(1064); +emit_16(1131); +emit_16(1065); +emit_16(1132); +emit_16(1066); +emit_16(1132); +emit_16(1065); +emit_16(1132); +emit_16(1066); +emit_16(1133); +emit_16(1067); +emit_16(1133); +emit_16(1066); +emit_16(1133); +emit_16(1067); +emit_16(1134); +emit_16(1068); +emit_16(1134); +emit_16(1067); +emit_16(1134); +emit_16(1068); +emit_16(1135); +emit_16(1069); +emit_16(1135); +emit_16(1068); +emit_16(1135); +emit_16(1069); +emit_16(1136); +emit_16(1070); +emit_16(1136); +emit_16(1069); +emit_16(1136); +emit_16(1070); +emit_16(1137); +emit_16(1071); +emit_16(1137); +emit_16(1070); +emit_16(1137); +emit_16(1071); +emit_16(1138); +emit_16(1072); +emit_16(1138); +emit_16(1071); +emit_16(1138); +emit_16(1072); +emit_16(1139); +emit_16(1073); +emit_16(1139); +emit_16(1072); +emit_16(1139); +emit_16(1073); +emit_16(1140); +emit_16(1074); +emit_16(1140); +emit_16(1073); +emit_16(1140); +emit_16(1074); +emit_16(1141); +emit_16(1075); +emit_16(1141); +emit_16(1074); +emit_16(1141); +emit_16(1075); +emit_16(1142); +emit_16(1076); +emit_16(1142); +emit_16(1075); +emit_16(1142); +emit_16(1076); +emit_16(1143); +emit_16(1077); +emit_16(1143); +emit_16(1076); +emit_16(1143); +emit_16(1077); +emit_16(1144); +emit_16(1078); +emit_16(1144); +emit_16(1077); +emit_16(1144); +emit_16(1078); +emit_16(1145); +emit_16(1079); +emit_16(1145); +emit_16(1078); +emit_16(1145); +emit_16(1079); +emit_16(1146); +emit_16(1080); +emit_16(1146); +emit_16(1079); +emit_16(1146); +emit_16(1080); +emit_16(1147); +emit_16(1081); +emit_16(1147); +emit_16(1080); +emit_16(1147); +emit_16(1081); +emit_16(1148); +emit_16(1082); +emit_16(1148); +emit_16(1081); +emit_16(1148); +emit_16(1082); +emit_16(1149); +emit_16(1083); +emit_16(1149); +emit_16(1082); +emit_16(1149); +emit_16(1083); +emit_16(1150); +emit_16(1084); +emit_16(1150); +emit_16(1083); +emit_16(1150); +emit_16(1084); +emit_16(1151); +emit_16(1085); +emit_16(1151); +emit_16(1084); +emit_16(1151); +emit_16(1085); +emit_16(1152); +emit_16(1086); +emit_16(1152); +emit_16(1085); +emit_16(1152); +emit_16(1086); +emit_16(1153); +emit_16(1087); +emit_16(1153); +emit_16(1086); +emit_16(1153); +emit_16(1087); +emit_16(1154); +emit_16(1088); +emit_16(1154); +emit_16(1087); +emit_16(1154); +emit_16(1088); +emit_16(1155); +emit_16(1089); +emit_16(1155); +emit_16(1088); +emit_16(1155); +emit_16(1089); +emit_16(1156); +emit_16(1090); +emit_16(1156); +emit_16(1089); +emit_16(1156); +emit_16(1090); +emit_16(1157); +emit_16(1091); +emit_16(1157); +emit_16(1090); +emit_16(1157); +emit_16(1091); +emit_16(1158); +emit_16(1092); +emit_16(1158); +emit_16(1091); +emit_16(1158); +emit_16(1092); +emit_16(1159); +emit_16(1093); +emit_16(1159); +emit_16(1092); +emit_16(1159); +emit_16(1093); +emit_16(1160); +emit_16(1094); +emit_16(1160); +emit_16(1093); +emit_16(1160); +emit_16(1094); +emit_16(1161); +emit_16(1095); +emit_16(1161); +emit_16(1094); +emit_16(1161); +emit_16(1095); +emit_16(1162); +emit_16(1096); +emit_16(1162); +emit_16(1095); +emit_16(1162); +emit_16(1096); +emit_16(1163); +emit_16(1097); +emit_16(1163); +emit_16(1096); +emit_16(1163); +emit_16(1097); +emit_16(1164); +emit_16(1098); +emit_16(1164); +emit_16(1097); +emit_16(1164); +emit_16(1098); +emit_16(1165); +emit_16(1099); +emit_16(1165); +emit_16(1098); +emit_16(1165); +emit_16(1099); +emit_16(1166); +emit_16(1100); +emit_16(1166); +emit_16(1099); +emit_16(1166); +emit_16(1100); +emit_16(1167); +emit_16(1101); +emit_16(1167); +emit_16(1100); +emit_16(1167); +emit_16(1101); +emit_16(1168); +emit_16(1102); +emit_16(1168); +emit_16(1101); +emit_16(1168); +emit_16(1102); +emit_16(1169); +emit_16(1103); +emit_16(1169); +emit_16(1102); +emit_16(1169); +emit_16(1103); +emit_16(1170); +emit_16(1104); +emit_16(1170); +emit_16(1103); +emit_16(1170); +emit_16(1104); +emit_16(1171); +emit_16(1105); +emit_16(1171); +emit_16(1104); +emit_16(1171); +emit_16(1105); +emit_16(1172); +emit_16(1106); +emit_16(1172); +emit_16(1105); +emit_16(1172); +emit_16(1106); +emit_16(1173); +emit_16(1107); +emit_16(1173); +emit_16(1106); +emit_16(1173); +emit_16(1107); +emit_16(1174); +emit_16(1108); +emit_16(1174); +emit_16(1107); +emit_16(1174); +emit_16(1108); +emit_16(1175); +emit_16(1109); +emit_16(1175); +emit_16(1108); +emit_16(1175); +emit_16(1109); +emit_16(1176); +emit_16(1110); +emit_16(1176); +emit_16(1109); +emit_16(1176); +emit_16(1110); +emit_16(1177); +emit_16(1111); +emit_16(1177); +emit_16(1110); +emit_16(1177); +emit_16(1111); +emit_16(1178); +emit_16(1112); +emit_16(1178); +emit_16(1111); +emit_16(1178); +emit_16(1112); +emit_16(1179); +emit_16(1113); +emit_16(1179); +emit_16(1112); +emit_16(1179); +emit_16(1113); +emit_16(1180); +emit_16(1114); +emit_16(1180); +emit_16(1113); +emit_16(1180); +emit_16(1114); +emit_16(1181); +emit_16(1115); +emit_16(1181); +emit_16(1114); +emit_16(1181); +emit_16(1115); +emit_16(1182); +emit_16(1116); +emit_16(1182); +emit_16(1115); +emit_16(1182); +emit_16(1116); +emit_16(1183); +emit_16(1117); +emit_16(1183); +emit_16(1116); +emit_16(1183); +emit_16(1117); +emit_16(1184); +emit_16(1118); +emit_16(1184); +emit_16(1117); +emit_16(1184); +emit_16(1118); +emit_16(1185); +emit_16(1119); +emit_16(1185); +emit_16(1118); +emit_16(1185); +emit_16(1119); +emit_16(1186); +emit_16(1120); +emit_16(1186); +emit_16(1119); +emit_16(1186); +emit_16(1120); +emit_16(1187); +emit_16(1121); +emit_16(1187); +emit_16(1120); +emit_16(1188); +emit_16(1122); +emit_16(1189); +emit_16(1123); +emit_16(1189); +emit_16(1122); +emit_16(1189); +emit_16(1123); +emit_16(1190); +emit_16(1124); +emit_16(1190); +emit_16(1123); +emit_16(1190); +emit_16(1124); +emit_16(1191); +emit_16(1125); +emit_16(1191); +emit_16(1124); +emit_16(1191); +emit_16(1125); +emit_16(1192); +emit_16(1126); +emit_16(1192); +emit_16(1125); +emit_16(1192); +emit_16(1126); +emit_16(1193); +emit_16(1127); +emit_16(1193); +emit_16(1126); +emit_16(1193); +emit_16(1127); +emit_16(1194); +emit_16(1128); +emit_16(1194); +emit_16(1127); +emit_16(1194); +emit_16(1128); +emit_16(1195); +emit_16(1129); +emit_16(1195); +emit_16(1128); +emit_16(1195); +emit_16(1129); +emit_16(1196); +emit_16(1130); +emit_16(1196); +emit_16(1129); +emit_16(1196); +emit_16(1130); +emit_16(1197); +emit_16(1131); +emit_16(1197); +emit_16(1130); +emit_16(1197); +emit_16(1131); +emit_16(1198); +emit_16(1132); +emit_16(1198); +emit_16(1131); +emit_16(1198); +emit_16(1132); +emit_16(1199); +emit_16(1133); +emit_16(1199); +emit_16(1132); +emit_16(1199); +emit_16(1133); +emit_16(1200); +emit_16(1134); +emit_16(1200); +emit_16(1133); +emit_16(1200); +emit_16(1134); +emit_16(1201); +emit_16(1135); +emit_16(1201); +emit_16(1134); +emit_16(1201); +emit_16(1135); +emit_16(1202); +emit_16(1136); +emit_16(1202); +emit_16(1135); +emit_16(1202); +emit_16(1136); +emit_16(1203); +emit_16(1137); +emit_16(1203); +emit_16(1136); +emit_16(1203); +emit_16(1137); +emit_16(1204); +emit_16(1138); +emit_16(1204); +emit_16(1137); +emit_16(1204); +emit_16(1138); +emit_16(1205); +emit_16(1139); +emit_16(1205); +emit_16(1138); +emit_16(1205); +emit_16(1139); +emit_16(1206); +emit_16(1140); +emit_16(1206); +emit_16(1139); +emit_16(1206); +emit_16(1140); +emit_16(1207); +emit_16(1141); +emit_16(1207); +emit_16(1140); +emit_16(1207); +emit_16(1141); +emit_16(1208); +emit_16(1142); +emit_16(1208); +emit_16(1141); +emit_16(1208); +emit_16(1142); +emit_16(1209); +emit_16(1143); +emit_16(1209); +emit_16(1142); +emit_16(1209); +emit_16(1143); +emit_16(1210); +emit_16(1144); +emit_16(1210); +emit_16(1143); +emit_16(1210); +emit_16(1144); +emit_16(1211); +emit_16(1145); +emit_16(1211); +emit_16(1144); +emit_16(1211); +emit_16(1145); +emit_16(1212); +emit_16(1146); +emit_16(1212); +emit_16(1145); +emit_16(1212); +emit_16(1146); +emit_16(1213); +emit_16(1147); +emit_16(1213); +emit_16(1146); +emit_16(1213); +emit_16(1147); +emit_16(1214); +emit_16(1148); +emit_16(1214); +emit_16(1147); +emit_16(1214); +emit_16(1148); +emit_16(1215); +emit_16(1149); +emit_16(1215); +emit_16(1148); +emit_16(1215); +emit_16(1149); +emit_16(1216); +emit_16(1150); +emit_16(1216); +emit_16(1149); +emit_16(1216); +emit_16(1150); +emit_16(1217); +emit_16(1151); +emit_16(1217); +emit_16(1150); +emit_16(1217); +emit_16(1151); +emit_16(1218); +emit_16(1152); +emit_16(1218); +emit_16(1151); +emit_16(1218); +emit_16(1152); +emit_16(1219); +emit_16(1153); +emit_16(1219); +emit_16(1152); +emit_16(1219); +emit_16(1153); +emit_16(1220); +emit_16(1154); +emit_16(1220); +emit_16(1153); +emit_16(1220); +emit_16(1154); +emit_16(1221); +emit_16(1155); +emit_16(1221); +emit_16(1154); +emit_16(1221); +emit_16(1155); +emit_16(1222); +emit_16(1156); +emit_16(1222); +emit_16(1155); +emit_16(1222); +emit_16(1156); +emit_16(1223); +emit_16(1157); +emit_16(1223); +emit_16(1156); +emit_16(1223); +emit_16(1157); +emit_16(1224); +emit_16(1158); +emit_16(1224); +emit_16(1157); +emit_16(1224); +emit_16(1158); +emit_16(1225); +emit_16(1159); +emit_16(1225); +emit_16(1158); +emit_16(1225); +emit_16(1159); +emit_16(1226); +emit_16(1160); +emit_16(1226); +emit_16(1159); +emit_16(1226); +emit_16(1160); +emit_16(1227); +emit_16(1161); +emit_16(1227); +emit_16(1160); +emit_16(1227); +emit_16(1161); +emit_16(1228); +emit_16(1162); +emit_16(1228); +emit_16(1161); +emit_16(1228); +emit_16(1162); +emit_16(1229); +emit_16(1163); +emit_16(1229); +emit_16(1162); +emit_16(1229); +emit_16(1163); +emit_16(1230); +emit_16(1164); +emit_16(1230); +emit_16(1163); +emit_16(1230); +emit_16(1164); +emit_16(1231); +emit_16(1165); +emit_16(1231); +emit_16(1164); +emit_16(1231); +emit_16(1165); +emit_16(1232); +emit_16(1166); +emit_16(1232); +emit_16(1165); +emit_16(1232); +emit_16(1166); +emit_16(1233); +emit_16(1167); +emit_16(1233); +emit_16(1166); +emit_16(1233); +emit_16(1167); +emit_16(1234); +emit_16(1168); +emit_16(1234); +emit_16(1167); +emit_16(1234); +emit_16(1168); +emit_16(1235); +emit_16(1169); +emit_16(1235); +emit_16(1168); +emit_16(1235); +emit_16(1169); +emit_16(1236); +emit_16(1170); +emit_16(1236); +emit_16(1169); +emit_16(1236); +emit_16(1170); +emit_16(1237); +emit_16(1171); +emit_16(1237); +emit_16(1170); +emit_16(1237); +emit_16(1171); +emit_16(1238); +emit_16(1172); +emit_16(1238); +emit_16(1171); +emit_16(1238); +emit_16(1172); +emit_16(1239); +emit_16(1173); +emit_16(1239); +emit_16(1172); +emit_16(1239); +emit_16(1173); +emit_16(1240); +emit_16(1174); +emit_16(1240); +emit_16(1173); +emit_16(1240); +emit_16(1174); +emit_16(1241); +emit_16(1175); +emit_16(1241); +emit_16(1174); +emit_16(1241); +emit_16(1175); +emit_16(1242); +emit_16(1176); +emit_16(1242); +emit_16(1175); +emit_16(1242); +emit_16(1176); +emit_16(1243); +emit_16(1177); +emit_16(1243); +emit_16(1176); +emit_16(1243); +emit_16(1177); +emit_16(1244); +emit_16(1178); +emit_16(1244); +emit_16(1177); +emit_16(1244); +emit_16(1178); +emit_16(1245); +emit_16(1179); +emit_16(1245); +emit_16(1178); +emit_16(1245); +emit_16(1179); +emit_16(1246); +emit_16(1180); +emit_16(1246); +emit_16(1179); +emit_16(1246); +emit_16(1180); +emit_16(1247); +emit_16(1181); +emit_16(1247); +emit_16(1180); +emit_16(1247); +emit_16(1181); +emit_16(1248); +emit_16(1182); +emit_16(1248); +emit_16(1181); +emit_16(1248); +emit_16(1182); +emit_16(1249); +emit_16(1183); +emit_16(1249); +emit_16(1182); +emit_16(1249); +emit_16(1183); +emit_16(1250); +emit_16(1184); +emit_16(1250); +emit_16(1183); +emit_16(1250); +emit_16(1184); +emit_16(1251); +emit_16(1185); +emit_16(1251); +emit_16(1184); +emit_16(1251); +emit_16(1185); +emit_16(1252); +emit_16(1186); +emit_16(1252); +emit_16(1185); +emit_16(1252); +emit_16(1186); +emit_16(1253); +emit_16(1187); +emit_16(1253); +emit_16(1186); +emit_16(1254); +emit_16(1188); +emit_16(1255); +emit_16(1189); +emit_16(1255); +emit_16(1188); +emit_16(1255); +emit_16(1189); +emit_16(1256); +emit_16(1190); +emit_16(1256); +emit_16(1189); +emit_16(1256); +emit_16(1190); +emit_16(1257); +emit_16(1191); +emit_16(1257); +emit_16(1190); +emit_16(1257); +emit_16(1191); +emit_16(1258); +emit_16(1192); +emit_16(1258); +emit_16(1191); +emit_16(1258); +emit_16(1192); +emit_16(1259); +emit_16(1193); +emit_16(1259); +emit_16(1192); +emit_16(1259); +emit_16(1193); +emit_16(1260); +emit_16(1194); +emit_16(1260); +emit_16(1193); +emit_16(1260); +emit_16(1194); +emit_16(1261); +emit_16(1195); +emit_16(1261); +emit_16(1194); +emit_16(1261); +emit_16(1195); +emit_16(1262); +emit_16(1196); +emit_16(1262); +emit_16(1195); +emit_16(1262); +emit_16(1196); +emit_16(1263); +emit_16(1197); +emit_16(1263); +emit_16(1196); +emit_16(1263); +emit_16(1197); +emit_16(1264); +emit_16(1198); +emit_16(1264); +emit_16(1197); +emit_16(1264); +emit_16(1198); +emit_16(1265); +emit_16(1199); +emit_16(1265); +emit_16(1198); +emit_16(1265); +emit_16(1199); +emit_16(1266); +emit_16(1200); +emit_16(1266); +emit_16(1199); +emit_16(1266); +emit_16(1200); +emit_16(1267); +emit_16(1201); +emit_16(1267); +emit_16(1200); +emit_16(1267); +emit_16(1201); +emit_16(1268); +emit_16(1202); +emit_16(1268); +emit_16(1201); +emit_16(1268); +emit_16(1202); +emit_16(1269); +emit_16(1203); +emit_16(1269); +emit_16(1202); +emit_16(1269); +emit_16(1203); +emit_16(1270); +emit_16(1204); +emit_16(1270); +emit_16(1203); +emit_16(1270); +emit_16(1204); +emit_16(1271); +emit_16(1205); +emit_16(1271); +emit_16(1204); +emit_16(1271); +emit_16(1205); +emit_16(1272); +emit_16(1206); +emit_16(1272); +emit_16(1205); +emit_16(1272); +emit_16(1206); +emit_16(1273); +emit_16(1207); +emit_16(1273); +emit_16(1206); +emit_16(1273); +emit_16(1207); +emit_16(1274); +emit_16(1208); +emit_16(1274); +emit_16(1207); +emit_16(1274); +emit_16(1208); +emit_16(1275); +emit_16(1209); +emit_16(1275); +emit_16(1208); +emit_16(1275); +emit_16(1209); +emit_16(1276); +emit_16(1210); +emit_16(1276); +emit_16(1209); +emit_16(1276); +emit_16(1210); +emit_16(1277); +emit_16(1211); +emit_16(1277); +emit_16(1210); +emit_16(1277); +emit_16(1211); +emit_16(1278); +emit_16(1212); +emit_16(1278); +emit_16(1211); +emit_16(1278); +emit_16(1212); +emit_16(1279); +emit_16(1213); +emit_16(1279); +emit_16(1212); +emit_16(1279); +emit_16(1213); +emit_16(1280); +emit_16(1214); +emit_16(1280); +emit_16(1213); +emit_16(1280); +emit_16(1214); +emit_16(1281); +emit_16(1215); +emit_16(1281); +emit_16(1214); +emit_16(1281); +emit_16(1215); +emit_16(1282); +emit_16(1216); +emit_16(1282); +emit_16(1215); +emit_16(1282); +emit_16(1216); +emit_16(1283); +emit_16(1217); +emit_16(1283); +emit_16(1216); +emit_16(1283); +emit_16(1217); +emit_16(1284); +emit_16(1218); +emit_16(1284); +emit_16(1217); +emit_16(1284); +emit_16(1218); +emit_16(1285); +emit_16(1219); +emit_16(1285); +emit_16(1218); +emit_16(1285); +emit_16(1219); +emit_16(1286); +emit_16(1220); +emit_16(1286); +emit_16(1219); +emit_16(1286); +emit_16(1220); +emit_16(1287); +emit_16(1221); +emit_16(1287); +emit_16(1220); +emit_16(1287); +emit_16(1221); +emit_16(1288); +emit_16(1222); +emit_16(1288); +emit_16(1221); +emit_16(1288); +emit_16(1222); +emit_16(1289); +emit_16(1223); +emit_16(1289); +emit_16(1222); +emit_16(1289); +emit_16(1223); +emit_16(1290); +emit_16(1224); +emit_16(1290); +emit_16(1223); +emit_16(1290); +emit_16(1224); +emit_16(1291); +emit_16(1225); +emit_16(1291); +emit_16(1224); +emit_16(1291); +emit_16(1225); +emit_16(1292); +emit_16(1226); +emit_16(1292); +emit_16(1225); +emit_16(1292); +emit_16(1226); +emit_16(1293); +emit_16(1227); +emit_16(1293); +emit_16(1226); +emit_16(1293); +emit_16(1227); +emit_16(1294); +emit_16(1228); +emit_16(1294); +emit_16(1227); +emit_16(1294); +emit_16(1228); +emit_16(1295); +emit_16(1229); +emit_16(1295); +emit_16(1228); +emit_16(1295); +emit_16(1229); +emit_16(1296); +emit_16(1230); +emit_16(1296); +emit_16(1229); +emit_16(1296); +emit_16(1230); +emit_16(1297); +emit_16(1231); +emit_16(1297); +emit_16(1230); +emit_16(1297); +emit_16(1231); +emit_16(1298); +emit_16(1232); +emit_16(1298); +emit_16(1231); +emit_16(1298); +emit_16(1232); +emit_16(1299); +emit_16(1233); +emit_16(1299); +emit_16(1232); +emit_16(1299); +emit_16(1233); +emit_16(1300); +emit_16(1234); +emit_16(1300); +emit_16(1233); +emit_16(1300); +emit_16(1234); +emit_16(1301); +emit_16(1235); +emit_16(1301); +emit_16(1234); +emit_16(1301); +emit_16(1235); +emit_16(1302); +emit_16(1236); +emit_16(1302); +emit_16(1235); +emit_16(1302); +emit_16(1236); +emit_16(1303); +emit_16(1237); +emit_16(1303); +emit_16(1236); +emit_16(1303); +emit_16(1237); +emit_16(1304); +emit_16(1238); +emit_16(1304); +emit_16(1237); +emit_16(1304); +emit_16(1238); +emit_16(1305); +emit_16(1239); +emit_16(1305); +emit_16(1238); +emit_16(1305); +emit_16(1239); +emit_16(1306); +emit_16(1240); +emit_16(1306); +emit_16(1239); +emit_16(1306); +emit_16(1240); +emit_16(1307); +emit_16(1241); +emit_16(1307); +emit_16(1240); +emit_16(1307); +emit_16(1241); +emit_16(1308); +emit_16(1242); +emit_16(1308); +emit_16(1241); +emit_16(1308); +emit_16(1242); +emit_16(1309); +emit_16(1243); +emit_16(1309); +emit_16(1242); +emit_16(1309); +emit_16(1243); +emit_16(1310); +emit_16(1244); +emit_16(1310); +emit_16(1243); +emit_16(1310); +emit_16(1244); +emit_16(1311); +emit_16(1245); +emit_16(1311); +emit_16(1244); +emit_16(1311); +emit_16(1245); +emit_16(1312); +emit_16(1246); +emit_16(1312); +emit_16(1245); +emit_16(1312); +emit_16(1246); +emit_16(1313); +emit_16(1247); +emit_16(1313); +emit_16(1246); +emit_16(1313); +emit_16(1247); +emit_16(1314); +emit_16(1248); +emit_16(1314); +emit_16(1247); +emit_16(1314); +emit_16(1248); +emit_16(1315); +emit_16(1249); +emit_16(1315); +emit_16(1248); +emit_16(1315); +emit_16(1249); +emit_16(1316); +emit_16(1250); +emit_16(1316); +emit_16(1249); +emit_16(1316); +emit_16(1250); +emit_16(1317); +emit_16(1251); +emit_16(1317); +emit_16(1250); +emit_16(1317); +emit_16(1251); +emit_16(1318); +emit_16(1252); +emit_16(1318); +emit_16(1251); +emit_16(1318); +emit_16(1252); +emit_16(1319); +emit_16(1253); +emit_16(1319); +emit_16(1252); +emit_16(1320); +emit_16(1254); +emit_16(1321); +emit_16(1255); +emit_16(1321); +emit_16(1254); +emit_16(1321); +emit_16(1255); +emit_16(1322); +emit_16(1256); +emit_16(1322); +emit_16(1255); +emit_16(1322); +emit_16(1256); +emit_16(1323); +emit_16(1257); +emit_16(1323); +emit_16(1256); +emit_16(1323); +emit_16(1257); +emit_16(1324); +emit_16(1258); +emit_16(1324); +emit_16(1257); +emit_16(1324); +emit_16(1258); +emit_16(1325); +emit_16(1259); +emit_16(1325); +emit_16(1258); +emit_16(1325); +emit_16(1259); +emit_16(1326); +emit_16(1260); +emit_16(1326); +emit_16(1259); +emit_16(1326); +emit_16(1260); +emit_16(1327); +emit_16(1261); +emit_16(1327); +emit_16(1260); +emit_16(1327); +emit_16(1261); +emit_16(1328); +emit_16(1262); +emit_16(1328); +emit_16(1261); +emit_16(1328); +emit_16(1262); +emit_16(1329); +emit_16(1263); +emit_16(1329); +emit_16(1262); +emit_16(1329); +emit_16(1263); +emit_16(1330); +emit_16(1264); +emit_16(1330); +emit_16(1263); +emit_16(1330); +emit_16(1264); +emit_16(1331); +emit_16(1265); +emit_16(1331); +emit_16(1264); +emit_16(1331); +emit_16(1265); +emit_16(1332); +emit_16(1266); +emit_16(1332); +emit_16(1265); +emit_16(1332); +emit_16(1266); +emit_16(1333); +emit_16(1267); +emit_16(1333); +emit_16(1266); +emit_16(1333); +emit_16(1267); +emit_16(1334); +emit_16(1268); +emit_16(1334); +emit_16(1267); +emit_16(1334); +emit_16(1268); +emit_16(1335); +emit_16(1269); +emit_16(1335); +emit_16(1268); +emit_16(1335); +emit_16(1269); +emit_16(1336); +emit_16(1270); +emit_16(1336); +emit_16(1269); +emit_16(1336); +emit_16(1270); +emit_16(1337); +emit_16(1271); +emit_16(1337); +emit_16(1270); +emit_16(1337); +emit_16(1271); +emit_16(1338); +emit_16(1272); +emit_16(1338); +emit_16(1271); +emit_16(1338); +emit_16(1272); +emit_16(1339); +emit_16(1273); +emit_16(1339); +emit_16(1272); +emit_16(1339); +emit_16(1273); +emit_16(1340); +emit_16(1274); +emit_16(1340); +emit_16(1273); +emit_16(1340); +emit_16(1274); +emit_16(1341); +emit_16(1275); +emit_16(1341); +emit_16(1274); +emit_16(1341); +emit_16(1275); +emit_16(1342); +emit_16(1276); +emit_16(1342); +emit_16(1275); +emit_16(1342); +emit_16(1276); +emit_16(1343); +emit_16(1277); +emit_16(1343); +emit_16(1276); +emit_16(1343); +emit_16(1277); +emit_16(1344); +emit_16(1278); +emit_16(1344); +emit_16(1277); +emit_16(1344); +emit_16(1278); +emit_16(1345); +emit_16(1279); +emit_16(1345); +emit_16(1278); +emit_16(1345); +emit_16(1279); +emit_16(1346); +emit_16(1280); +emit_16(1346); +emit_16(1279); +emit_16(1346); +emit_16(1280); +emit_16(1347); +emit_16(1281); +emit_16(1347); +emit_16(1280); +emit_16(1347); +emit_16(1281); +emit_16(1348); +emit_16(1282); +emit_16(1348); +emit_16(1281); +emit_16(1348); +emit_16(1282); +emit_16(1349); +emit_16(1283); +emit_16(1349); +emit_16(1282); +emit_16(1349); +emit_16(1283); +emit_16(1350); +emit_16(1284); +emit_16(1350); +emit_16(1283); +emit_16(1350); +emit_16(1284); +emit_16(1351); +emit_16(1285); +emit_16(1351); +emit_16(1284); +emit_16(1351); +emit_16(1285); +emit_16(1352); +emit_16(1286); +emit_16(1352); +emit_16(1285); +emit_16(1352); +emit_16(1286); +emit_16(1353); +emit_16(1287); +emit_16(1353); +emit_16(1286); +emit_16(1353); +emit_16(1287); +emit_16(1354); +emit_16(1288); +emit_16(1354); +emit_16(1287); +emit_16(1354); +emit_16(1288); +emit_16(1355); +emit_16(1289); +emit_16(1355); +emit_16(1288); +emit_16(1355); +emit_16(1289); +emit_16(1356); +emit_16(1290); +emit_16(1356); +emit_16(1289); +emit_16(1356); +emit_16(1290); +emit_16(1357); +emit_16(1291); +emit_16(1357); +emit_16(1290); +emit_16(1357); +emit_16(1291); +emit_16(1358); +emit_16(1292); +emit_16(1358); +emit_16(1291); +emit_16(1358); +emit_16(1292); +emit_16(1359); +emit_16(1293); +emit_16(1359); +emit_16(1292); +emit_16(1359); +emit_16(1293); +emit_16(1360); +emit_16(1294); +emit_16(1360); +emit_16(1293); +emit_16(1360); +emit_16(1294); +emit_16(1361); +emit_16(1295); +emit_16(1361); +emit_16(1294); +emit_16(1361); +emit_16(1295); +emit_16(1362); +emit_16(1296); +emit_16(1362); +emit_16(1295); +emit_16(1362); +emit_16(1296); +emit_16(1363); +emit_16(1297); +emit_16(1363); +emit_16(1296); +emit_16(1363); +emit_16(1297); +emit_16(1364); +emit_16(1298); +emit_16(1364); +emit_16(1297); +emit_16(1364); +emit_16(1298); +emit_16(1365); +emit_16(1299); +emit_16(1365); +emit_16(1298); +emit_16(1365); +emit_16(1299); +emit_16(1366); +emit_16(1300); +emit_16(1366); +emit_16(1299); +emit_16(1366); +emit_16(1300); +emit_16(1367); +emit_16(1301); +emit_16(1367); +emit_16(1300); +emit_16(1367); +emit_16(1301); +emit_16(1368); +emit_16(1302); +emit_16(1368); +emit_16(1301); +emit_16(1368); +emit_16(1302); +emit_16(1369); +emit_16(1303); +emit_16(1369); +emit_16(1302); +emit_16(1369); +emit_16(1303); +emit_16(1370); +emit_16(1304); +emit_16(1370); +emit_16(1303); +emit_16(1370); +emit_16(1304); +emit_16(1371); +emit_16(1305); +emit_16(1371); +emit_16(1304); +emit_16(1371); +emit_16(1305); +emit_16(1372); +emit_16(1306); +emit_16(1372); +emit_16(1305); +emit_16(1372); +emit_16(1306); +emit_16(1373); +emit_16(1307); +emit_16(1373); +emit_16(1306); +emit_16(1373); +emit_16(1307); +emit_16(1374); +emit_16(1308); +emit_16(1374); +emit_16(1307); +emit_16(1374); +emit_16(1308); +emit_16(1375); +emit_16(1309); +emit_16(1375); +emit_16(1308); +emit_16(1375); +emit_16(1309); +emit_16(1376); +emit_16(1310); +emit_16(1376); +emit_16(1309); +emit_16(1376); +emit_16(1310); +emit_16(1377); +emit_16(1311); +emit_16(1377); +emit_16(1310); +emit_16(1377); +emit_16(1311); +emit_16(1378); +emit_16(1312); +emit_16(1378); +emit_16(1311); +emit_16(1378); +emit_16(1312); +emit_16(1379); +emit_16(1313); +emit_16(1379); +emit_16(1312); +emit_16(1379); +emit_16(1313); +emit_16(1380); +emit_16(1314); +emit_16(1380); +emit_16(1313); +emit_16(1380); +emit_16(1314); +emit_16(1381); +emit_16(1315); +emit_16(1381); +emit_16(1314); +emit_16(1381); +emit_16(1315); +emit_16(1382); +emit_16(1316); +emit_16(1382); +emit_16(1315); +emit_16(1382); +emit_16(1316); +emit_16(1383); +emit_16(1317); +emit_16(1383); +emit_16(1316); +emit_16(1383); +emit_16(1317); +emit_16(1384); +emit_16(1318); +emit_16(1384); +emit_16(1317); +emit_16(1384); +emit_16(1318); +emit_16(1385); +emit_16(1319); +emit_16(1385); +emit_16(1318); +emit_16(1386); +emit_16(1320); +emit_16(1387); +emit_16(1321); +emit_16(1387); +emit_16(1320); +emit_16(1387); +emit_16(1321); +emit_16(1388); +emit_16(1322); +emit_16(1388); +emit_16(1321); +emit_16(1388); +emit_16(1322); +emit_16(1389); +emit_16(1323); +emit_16(1389); +emit_16(1322); +emit_16(1389); +emit_16(1323); +emit_16(1390); +emit_16(1324); +emit_16(1390); +emit_16(1323); +emit_16(1390); +emit_16(1324); +emit_16(1391); +emit_16(1325); +emit_16(1391); +emit_16(1324); +emit_16(1391); +emit_16(1325); +emit_16(1392); +emit_16(1326); +emit_16(1392); +emit_16(1325); +emit_16(1392); +emit_16(1326); +emit_16(1393); +emit_16(1327); +emit_16(1393); +emit_16(1326); +emit_16(1393); +emit_16(1327); +emit_16(1394); +emit_16(1328); +emit_16(1394); +emit_16(1327); +emit_16(1394); +emit_16(1328); +emit_16(1395); +emit_16(1329); +emit_16(1395); +emit_16(1328); +emit_16(1395); +emit_16(1329); +emit_16(1396); +emit_16(1330); +emit_16(1396); +emit_16(1329); +emit_16(1396); +emit_16(1330); +emit_16(1397); +emit_16(1331); +emit_16(1397); +emit_16(1330); +emit_16(1397); +emit_16(1331); +emit_16(1398); +emit_16(1332); +emit_16(1398); +emit_16(1331); +emit_16(1398); +emit_16(1332); +emit_16(1399); +emit_16(1333); +emit_16(1399); +emit_16(1332); +emit_16(1399); +emit_16(1333); +emit_16(1400); +emit_16(1334); +emit_16(1400); +emit_16(1333); +emit_16(1400); +emit_16(1334); +emit_16(1401); +emit_16(1335); +emit_16(1401); +emit_16(1334); +emit_16(1401); +emit_16(1335); +emit_16(1402); +emit_16(1336); +emit_16(1402); +emit_16(1335); +emit_16(1402); +emit_16(1336); +emit_16(1403); +emit_16(1337); +emit_16(1403); +emit_16(1336); +emit_16(1403); +emit_16(1337); +emit_16(1404); +emit_16(1338); +emit_16(1404); +emit_16(1337); +emit_16(1404); +emit_16(1338); +emit_16(1405); +emit_16(1339); +emit_16(1405); +emit_16(1338); +emit_16(1405); +emit_16(1339); +emit_16(1406); +emit_16(1340); +emit_16(1406); +emit_16(1339); +emit_16(1406); +emit_16(1340); +emit_16(1407); +emit_16(1341); +emit_16(1407); +emit_16(1340); +emit_16(1407); +emit_16(1341); +emit_16(1408); +emit_16(1342); +emit_16(1408); +emit_16(1341); +emit_16(1408); +emit_16(1342); +emit_16(1409); +emit_16(1343); +emit_16(1409); +emit_16(1342); +emit_16(1409); +emit_16(1343); +emit_16(1410); +emit_16(1344); +emit_16(1410); +emit_16(1343); +emit_16(1410); +emit_16(1344); +emit_16(1411); +emit_16(1345); +emit_16(1411); +emit_16(1344); +emit_16(1411); +emit_16(1345); +emit_16(1412); +emit_16(1346); +emit_16(1412); +emit_16(1345); +emit_16(1412); +emit_16(1346); +emit_16(1413); +emit_16(1347); +emit_16(1413); +emit_16(1346); +emit_16(1413); +emit_16(1347); +emit_16(1414); +emit_16(1348); +emit_16(1414); +emit_16(1347); +emit_16(1414); +emit_16(1348); +emit_16(1415); +emit_16(1349); +emit_16(1415); +emit_16(1348); +emit_16(1415); +emit_16(1349); +emit_16(1416); +emit_16(1350); +emit_16(1416); +emit_16(1349); +emit_16(1416); +emit_16(1350); +emit_16(1417); +emit_16(1351); +emit_16(1417); +emit_16(1350); +emit_16(1417); +emit_16(1351); +emit_16(1418); +emit_16(1352); +emit_16(1418); +emit_16(1351); +emit_16(1418); +emit_16(1352); +emit_16(1419); +emit_16(1353); +emit_16(1419); +emit_16(1352); +emit_16(1419); +emit_16(1353); +emit_16(1420); +emit_16(1354); +emit_16(1420); +emit_16(1353); +emit_16(1420); +emit_16(1354); +emit_16(1421); +emit_16(1355); +emit_16(1421); +emit_16(1354); +emit_16(1421); +emit_16(1355); +emit_16(1422); +emit_16(1356); +emit_16(1422); +emit_16(1355); +emit_16(1422); +emit_16(1356); +emit_16(1423); +emit_16(1357); +emit_16(1423); +emit_16(1356); +emit_16(1423); +emit_16(1357); +emit_16(1424); +emit_16(1358); +emit_16(1424); +emit_16(1357); +emit_16(1424); +emit_16(1358); +emit_16(1425); +emit_16(1359); +emit_16(1425); +emit_16(1358); +emit_16(1425); +emit_16(1359); +emit_16(1426); +emit_16(1360); +emit_16(1426); +emit_16(1359); +emit_16(1426); +emit_16(1360); +emit_16(1427); +emit_16(1361); +emit_16(1427); +emit_16(1360); +emit_16(1427); +emit_16(1361); +emit_16(1428); +emit_16(1362); +emit_16(1428); +emit_16(1361); +emit_16(1428); +emit_16(1362); +emit_16(1429); +emit_16(1363); +emit_16(1429); +emit_16(1362); +emit_16(1429); +emit_16(1363); +emit_16(1430); +emit_16(1364); +emit_16(1430); +emit_16(1363); +emit_16(1430); +emit_16(1364); +emit_16(1431); +emit_16(1365); +emit_16(1431); +emit_16(1364); +emit_16(1431); +emit_16(1365); +emit_16(1432); +emit_16(1366); +emit_16(1432); +emit_16(1365); +emit_16(1432); +emit_16(1366); +emit_16(1433); +emit_16(1367); +emit_16(1433); +emit_16(1366); +emit_16(1433); +emit_16(1367); +emit_16(1434); +emit_16(1368); +emit_16(1434); +emit_16(1367); +emit_16(1434); +emit_16(1368); +emit_16(1435); +emit_16(1369); +emit_16(1435); +emit_16(1368); +emit_16(1435); +emit_16(1369); +emit_16(1436); +emit_16(1370); +emit_16(1436); +emit_16(1369); +emit_16(1436); +emit_16(1370); +emit_16(1437); +emit_16(1371); +emit_16(1437); +emit_16(1370); +emit_16(1437); +emit_16(1371); +emit_16(1438); +emit_16(1372); +emit_16(1438); +emit_16(1371); +emit_16(1438); +emit_16(1372); +emit_16(1439); +emit_16(1373); +emit_16(1439); +emit_16(1372); +emit_16(1439); +emit_16(1373); +emit_16(1440); +emit_16(1374); +emit_16(1440); +emit_16(1373); +emit_16(1440); +emit_16(1374); +emit_16(1441); +emit_16(1375); +emit_16(1441); +emit_16(1374); +emit_16(1441); +emit_16(1375); +emit_16(1442); +emit_16(1376); +emit_16(1442); +emit_16(1375); +emit_16(1442); +emit_16(1376); +emit_16(1443); +emit_16(1377); +emit_16(1443); +emit_16(1376); +emit_16(1443); +emit_16(1377); +emit_16(1444); +emit_16(1378); +emit_16(1444); +emit_16(1377); +emit_16(1444); +emit_16(1378); +emit_16(1445); +emit_16(1379); +emit_16(1445); +emit_16(1378); +emit_16(1445); +emit_16(1379); +emit_16(1446); +emit_16(1380); +emit_16(1446); +emit_16(1379); +emit_16(1446); +emit_16(1380); +emit_16(1447); +emit_16(1381); +emit_16(1447); +emit_16(1380); +emit_16(1447); +emit_16(1381); +emit_16(1448); +emit_16(1382); +emit_16(1448); +emit_16(1381); +emit_16(1448); +emit_16(1382); +emit_16(1449); +emit_16(1383); +emit_16(1449); +emit_16(1382); +emit_16(1449); +emit_16(1383); +emit_16(1450); +emit_16(1384); +emit_16(1450); +emit_16(1383); +emit_16(1450); +emit_16(1384); +emit_16(1451); +emit_16(1385); +emit_16(1451); +emit_16(1384); +emit_16(1452); +emit_16(1386); +emit_16(1453); +emit_16(1387); +emit_16(1453); +emit_16(1386); +emit_16(1453); +emit_16(1387); +emit_16(1454); +emit_16(1388); +emit_16(1454); +emit_16(1387); +emit_16(1454); +emit_16(1388); +emit_16(1455); +emit_16(1389); +emit_16(1455); +emit_16(1388); +emit_16(1455); +emit_16(1389); +emit_16(1456); +emit_16(1390); +emit_16(1456); +emit_16(1389); +emit_16(1456); +emit_16(1390); +emit_16(1457); +emit_16(1391); +emit_16(1457); +emit_16(1390); +emit_16(1457); +emit_16(1391); +emit_16(1458); +emit_16(1392); +emit_16(1458); +emit_16(1391); +emit_16(1458); +emit_16(1392); +emit_16(1459); +emit_16(1393); +emit_16(1459); +emit_16(1392); +emit_16(1459); +emit_16(1393); +emit_16(1460); +emit_16(1394); +emit_16(1460); +emit_16(1393); +emit_16(1460); +emit_16(1394); +emit_16(1461); +emit_16(1395); +emit_16(1461); +emit_16(1394); +emit_16(1461); +emit_16(1395); +emit_16(1462); +emit_16(1396); +emit_16(1462); +emit_16(1395); +emit_16(1462); +emit_16(1396); +emit_16(1463); +emit_16(1397); +emit_16(1463); +emit_16(1396); +emit_16(1463); +emit_16(1397); +emit_16(1464); +emit_16(1398); +emit_16(1464); +emit_16(1397); +emit_16(1464); +emit_16(1398); +emit_16(1465); +emit_16(1399); +emit_16(1465); +emit_16(1398); +emit_16(1465); +emit_16(1399); +emit_16(1466); +emit_16(1400); +emit_16(1466); +emit_16(1399); +emit_16(1466); +emit_16(1400); +emit_16(1467); +emit_16(1401); +emit_16(1467); +emit_16(1400); +emit_16(1467); +emit_16(1401); +emit_16(1468); +emit_16(1402); +emit_16(1468); +emit_16(1401); +emit_16(1468); +emit_16(1402); +emit_16(1469); +emit_16(1403); +emit_16(1469); +emit_16(1402); +emit_16(1469); +emit_16(1403); +emit_16(1470); +emit_16(1404); +emit_16(1470); +emit_16(1403); +emit_16(1470); +emit_16(1404); +emit_16(1471); +emit_16(1405); +emit_16(1471); +emit_16(1404); +emit_16(1471); +emit_16(1405); +emit_16(1472); +emit_16(1406); +emit_16(1472); +emit_16(1405); +emit_16(1472); +emit_16(1406); +emit_16(1473); +emit_16(1407); +emit_16(1473); +emit_16(1406); +emit_16(1473); +emit_16(1407); +emit_16(1474); +emit_16(1408); +emit_16(1474); +emit_16(1407); +emit_16(1474); +emit_16(1408); +emit_16(1475); +emit_16(1409); +emit_16(1475); +emit_16(1408); +emit_16(1475); +emit_16(1409); +emit_16(1476); +emit_16(1410); +emit_16(1476); +emit_16(1409); +emit_16(1476); +emit_16(1410); +emit_16(1477); +emit_16(1411); +emit_16(1477); +emit_16(1410); +emit_16(1477); +emit_16(1411); +emit_16(1478); +emit_16(1412); +emit_16(1478); +emit_16(1411); +emit_16(1478); +emit_16(1412); +emit_16(1479); +emit_16(1413); +emit_16(1479); +emit_16(1412); +emit_16(1479); +emit_16(1413); +emit_16(1480); +emit_16(1414); +emit_16(1480); +emit_16(1413); +emit_16(1480); +emit_16(1414); +emit_16(1481); +emit_16(1415); +emit_16(1481); +emit_16(1414); +emit_16(1481); +emit_16(1415); +emit_16(1482); +emit_16(1416); +emit_16(1482); +emit_16(1415); +emit_16(1482); +emit_16(1416); +emit_16(1483); +emit_16(1417); +emit_16(1483); +emit_16(1416); +emit_16(1483); +emit_16(1417); +emit_16(1484); +emit_16(1418); +emit_16(1484); +emit_16(1417); +emit_16(1484); +emit_16(1418); +emit_16(1485); +emit_16(1419); +emit_16(1485); +emit_16(1418); +emit_16(1485); +emit_16(1419); +emit_16(1486); +emit_16(1420); +emit_16(1486); +emit_16(1419); +emit_16(1486); +emit_16(1420); +emit_16(1487); +emit_16(1421); +emit_16(1487); +emit_16(1420); +emit_16(1487); +emit_16(1421); +emit_16(1488); +emit_16(1422); +emit_16(1488); +emit_16(1421); +emit_16(1488); +emit_16(1422); +emit_16(1489); +emit_16(1423); +emit_16(1489); +emit_16(1422); +emit_16(1489); +emit_16(1423); +emit_16(1490); +emit_16(1424); +emit_16(1490); +emit_16(1423); +emit_16(1490); +emit_16(1424); +emit_16(1491); +emit_16(1425); +emit_16(1491); +emit_16(1424); +emit_16(1491); +emit_16(1425); +emit_16(1492); +emit_16(1426); +emit_16(1492); +emit_16(1425); +emit_16(1492); +emit_16(1426); +emit_16(1493); +emit_16(1427); +emit_16(1493); +emit_16(1426); +emit_16(1493); +emit_16(1427); +emit_16(1494); +emit_16(1428); +emit_16(1494); +emit_16(1427); +emit_16(1494); +emit_16(1428); +emit_16(1495); +emit_16(1429); +emit_16(1495); +emit_16(1428); +emit_16(1495); +emit_16(1429); +emit_16(1496); +emit_16(1430); +emit_16(1496); +emit_16(1429); +emit_16(1496); +emit_16(1430); +emit_16(1497); +emit_16(1431); +emit_16(1497); +emit_16(1430); +emit_16(1497); +emit_16(1431); +emit_16(1498); +emit_16(1432); +emit_16(1498); +emit_16(1431); +emit_16(1498); +emit_16(1432); +emit_16(1499); +emit_16(1433); +emit_16(1499); +emit_16(1432); +emit_16(1499); +emit_16(1433); +emit_16(1500); +emit_16(1434); +emit_16(1500); +emit_16(1433); +emit_16(1500); +emit_16(1434); +emit_16(1501); +emit_16(1435); +emit_16(1501); +emit_16(1434); +emit_16(1501); +emit_16(1435); +emit_16(1502); +emit_16(1436); +emit_16(1502); +emit_16(1435); +emit_16(1502); +emit_16(1436); +emit_16(1503); +emit_16(1437); +emit_16(1503); +emit_16(1436); +emit_16(1503); +emit_16(1437); +emit_16(1504); +emit_16(1438); +emit_16(1504); +emit_16(1437); +emit_16(1504); +emit_16(1438); +emit_16(1505); +emit_16(1439); +emit_16(1505); +emit_16(1438); +emit_16(1505); +emit_16(1439); +emit_16(1506); +emit_16(1440); +emit_16(1506); +emit_16(1439); +emit_16(1506); +emit_16(1440); +emit_16(1507); +emit_16(1441); +emit_16(1507); +emit_16(1440); +emit_16(1507); +emit_16(1441); +emit_16(1508); +emit_16(1442); +emit_16(1508); +emit_16(1441); +emit_16(1508); +emit_16(1442); +emit_16(1509); +emit_16(1443); +emit_16(1509); +emit_16(1442); +emit_16(1509); +emit_16(1443); +emit_16(1510); +emit_16(1444); +emit_16(1510); +emit_16(1443); +emit_16(1510); +emit_16(1444); +emit_16(1511); +emit_16(1445); +emit_16(1511); +emit_16(1444); +emit_16(1511); +emit_16(1445); +emit_16(1512); +emit_16(1446); +emit_16(1512); +emit_16(1445); +emit_16(1512); +emit_16(1446); +emit_16(1513); +emit_16(1447); +emit_16(1513); +emit_16(1446); +emit_16(1513); +emit_16(1447); +emit_16(1514); +emit_16(1448); +emit_16(1514); +emit_16(1447); +emit_16(1514); +emit_16(1448); +emit_16(1515); +emit_16(1449); +emit_16(1515); +emit_16(1448); +emit_16(1515); +emit_16(1449); +emit_16(1516); +emit_16(1450); +emit_16(1516); +emit_16(1449); +emit_16(1516); +emit_16(1450); +emit_16(1517); +emit_16(1451); +emit_16(1517); +emit_16(1450); +emit_16(1518); +emit_16(1452); +emit_16(1519); +emit_16(1453); +emit_16(1519); +emit_16(1452); +emit_16(1519); +emit_16(1453); +emit_16(1520); +emit_16(1454); +emit_16(1520); +emit_16(1453); +emit_16(1520); +emit_16(1454); +emit_16(1521); +emit_16(1455); +emit_16(1521); +emit_16(1454); +emit_16(1521); +emit_16(1455); +emit_16(1522); +emit_16(1456); +emit_16(1522); +emit_16(1455); +emit_16(1522); +emit_16(1456); +emit_16(1523); +emit_16(1457); +emit_16(1523); +emit_16(1456); +emit_16(1523); +emit_16(1457); +emit_16(1524); +emit_16(1458); +emit_16(1524); +emit_16(1457); +emit_16(1524); +emit_16(1458); +emit_16(1525); +emit_16(1459); +emit_16(1525); +emit_16(1458); +emit_16(1525); +emit_16(1459); +emit_16(1526); +emit_16(1460); +emit_16(1526); +emit_16(1459); +emit_16(1526); +emit_16(1460); +emit_16(1527); +emit_16(1461); +emit_16(1527); +emit_16(1460); +emit_16(1527); +emit_16(1461); +emit_16(1528); +emit_16(1462); +emit_16(1528); +emit_16(1461); +emit_16(1528); +emit_16(1462); +emit_16(1529); +emit_16(1463); +emit_16(1529); +emit_16(1462); +emit_16(1529); +emit_16(1463); +emit_16(1530); +emit_16(1464); +emit_16(1530); +emit_16(1463); +emit_16(1530); +emit_16(1464); +emit_16(1531); +emit_16(1465); +emit_16(1531); +emit_16(1464); +emit_16(1531); +emit_16(1465); +emit_16(1532); +emit_16(1466); +emit_16(1532); +emit_16(1465); +emit_16(1532); +emit_16(1466); +emit_16(1533); +emit_16(1467); +emit_16(1533); +emit_16(1466); +emit_16(1533); +emit_16(1467); +emit_16(1534); +emit_16(1468); +emit_16(1534); +emit_16(1467); +emit_16(1534); +emit_16(1468); +emit_16(1535); +emit_16(1469); +emit_16(1535); +emit_16(1468); +emit_16(1535); +emit_16(1469); +emit_16(1536); +emit_16(1470); +emit_16(1536); +emit_16(1469); +emit_16(1536); +emit_16(1470); +emit_16(1537); +emit_16(1471); +emit_16(1537); +emit_16(1470); +emit_16(1537); +emit_16(1471); +emit_16(1538); +emit_16(1472); +emit_16(1538); +emit_16(1471); +emit_16(1538); +emit_16(1472); +emit_16(1539); +emit_16(1473); +emit_16(1539); +emit_16(1472); +emit_16(1539); +emit_16(1473); +emit_16(1540); +emit_16(1474); +emit_16(1540); +emit_16(1473); +emit_16(1540); +emit_16(1474); +emit_16(1541); +emit_16(1475); +emit_16(1541); +emit_16(1474); +emit_16(1541); +emit_16(1475); +emit_16(1542); +emit_16(1476); +emit_16(1542); +emit_16(1475); +emit_16(1542); +emit_16(1476); +emit_16(1543); +emit_16(1477); +emit_16(1543); +emit_16(1476); +emit_16(1543); +emit_16(1477); +emit_16(1544); +emit_16(1478); +emit_16(1544); +emit_16(1477); +emit_16(1544); +emit_16(1478); +emit_16(1545); +emit_16(1479); +emit_16(1545); +emit_16(1478); +emit_16(1545); +emit_16(1479); +emit_16(1546); +emit_16(1480); +emit_16(1546); +emit_16(1479); +emit_16(1546); +emit_16(1480); +emit_16(1547); +emit_16(1481); +emit_16(1547); +emit_16(1480); +emit_16(1547); +emit_16(1481); +emit_16(1548); +emit_16(1482); +emit_16(1548); +emit_16(1481); +emit_16(1548); +emit_16(1482); +emit_16(1549); +emit_16(1483); +emit_16(1549); +emit_16(1482); +emit_16(1549); +emit_16(1483); +emit_16(1550); +emit_16(1484); +emit_16(1550); +emit_16(1483); +emit_16(1550); +emit_16(1484); +emit_16(1551); +emit_16(1485); +emit_16(1551); +emit_16(1484); +emit_16(1551); +emit_16(1485); +emit_16(1552); +emit_16(1486); +emit_16(1552); +emit_16(1485); +emit_16(1552); +emit_16(1486); +emit_16(1553); +emit_16(1487); +emit_16(1553); +emit_16(1486); +emit_16(1553); +emit_16(1487); +emit_16(1554); +emit_16(1488); +emit_16(1554); +emit_16(1487); +emit_16(1554); +emit_16(1488); +emit_16(1555); +emit_16(1489); +emit_16(1555); +emit_16(1488); +emit_16(1555); +emit_16(1489); +emit_16(1556); +emit_16(1490); +emit_16(1556); +emit_16(1489); +emit_16(1556); +emit_16(1490); +emit_16(1557); +emit_16(1491); +emit_16(1557); +emit_16(1490); +emit_16(1557); +emit_16(1491); +emit_16(1558); +emit_16(1492); +emit_16(1558); +emit_16(1491); +emit_16(1558); +emit_16(1492); +emit_16(1559); +emit_16(1493); +emit_16(1559); +emit_16(1492); +emit_16(1559); +emit_16(1493); +emit_16(1560); +emit_16(1494); +emit_16(1560); +emit_16(1493); +emit_16(1560); +emit_16(1494); +emit_16(1561); +emit_16(1495); +emit_16(1561); +emit_16(1494); +emit_16(1561); +emit_16(1495); +emit_16(1562); +emit_16(1496); +emit_16(1562); +emit_16(1495); +emit_16(1562); +emit_16(1496); +emit_16(1563); +emit_16(1497); +emit_16(1563); +emit_16(1496); +emit_16(1563); +emit_16(1497); +emit_16(1564); +emit_16(1498); +emit_16(1564); +emit_16(1497); +emit_16(1564); +emit_16(1498); +emit_16(1565); +emit_16(1499); +emit_16(1565); +emit_16(1498); +emit_16(1565); +emit_16(1499); +emit_16(1566); +emit_16(1500); +emit_16(1566); +emit_16(1499); +emit_16(1566); +emit_16(1500); +emit_16(1567); +emit_16(1501); +emit_16(1567); +emit_16(1500); +emit_16(1567); +emit_16(1501); +emit_16(1568); +emit_16(1502); +emit_16(1568); +emit_16(1501); +emit_16(1568); +emit_16(1502); +emit_16(1569); +emit_16(1503); +emit_16(1569); +emit_16(1502); +emit_16(1569); +emit_16(1503); +emit_16(1570); +emit_16(1504); +emit_16(1570); +emit_16(1503); +emit_16(1570); +emit_16(1504); +emit_16(1571); +emit_16(1505); +emit_16(1571); +emit_16(1504); +emit_16(1571); +emit_16(1505); +emit_16(1572); +emit_16(1506); +emit_16(1572); +emit_16(1505); +emit_16(1572); +emit_16(1506); +emit_16(1573); +emit_16(1507); +emit_16(1573); +emit_16(1506); +emit_16(1573); +emit_16(1507); +emit_16(1574); +emit_16(1508); +emit_16(1574); +emit_16(1507); +emit_16(1574); +emit_16(1508); +emit_16(1575); +emit_16(1509); +emit_16(1575); +emit_16(1508); +emit_16(1575); +emit_16(1509); +emit_16(1576); +emit_16(1510); +emit_16(1576); +emit_16(1509); +emit_16(1576); +emit_16(1510); +emit_16(1577); +emit_16(1511); +emit_16(1577); +emit_16(1510); +emit_16(1577); +emit_16(1511); +emit_16(1578); +emit_16(1512); +emit_16(1578); +emit_16(1511); +emit_16(1578); +emit_16(1512); +emit_16(1579); +emit_16(1513); +emit_16(1579); +emit_16(1512); +emit_16(1579); +emit_16(1513); +emit_16(1580); +emit_16(1514); +emit_16(1580); +emit_16(1513); +emit_16(1580); +emit_16(1514); +emit_16(1581); +emit_16(1515); +emit_16(1581); +emit_16(1514); +emit_16(1581); +emit_16(1515); +emit_16(1582); +emit_16(1516); +emit_16(1582); +emit_16(1515); +emit_16(1582); +emit_16(1516); +emit_16(1583); +emit_16(1517); +emit_16(1583); +emit_16(1516); +emit_16(1584); +emit_16(1518); +emit_16(1585); +emit_16(1519); +emit_16(1585); +emit_16(1518); +emit_16(1585); +emit_16(1519); +emit_16(1586); +emit_16(1520); +emit_16(1586); +emit_16(1519); +emit_16(1586); +emit_16(1520); +emit_16(1587); +emit_16(1521); +emit_16(1587); +emit_16(1520); +emit_16(1587); +emit_16(1521); +emit_16(1588); +emit_16(1522); +emit_16(1588); +emit_16(1521); +emit_16(1588); +emit_16(1522); +emit_16(1589); +emit_16(1523); +emit_16(1589); +emit_16(1522); +emit_16(1589); +emit_16(1523); +emit_16(1590); +emit_16(1524); +emit_16(1590); +emit_16(1523); +emit_16(1590); +emit_16(1524); +emit_16(1591); +emit_16(1525); +emit_16(1591); +emit_16(1524); +emit_16(1591); +emit_16(1525); +emit_16(1592); +emit_16(1526); +emit_16(1592); +emit_16(1525); +emit_16(1592); +emit_16(1526); +emit_16(1593); +emit_16(1527); +emit_16(1593); +emit_16(1526); +emit_16(1593); +emit_16(1527); +emit_16(1594); +emit_16(1528); +emit_16(1594); +emit_16(1527); +emit_16(1594); +emit_16(1528); +emit_16(1595); +emit_16(1529); +emit_16(1595); +emit_16(1528); +emit_16(1595); +emit_16(1529); +emit_16(1596); +emit_16(1530); +emit_16(1596); +emit_16(1529); +emit_16(1596); +emit_16(1530); +emit_16(1597); +emit_16(1531); +emit_16(1597); +emit_16(1530); +emit_16(1597); +emit_16(1531); +emit_16(1598); +emit_16(1532); +emit_16(1598); +emit_16(1531); +emit_16(1598); +emit_16(1532); +emit_16(1599); +emit_16(1533); +emit_16(1599); +emit_16(1532); +emit_16(1599); +emit_16(1533); +emit_16(1600); +emit_16(1534); +emit_16(1600); +emit_16(1533); +emit_16(1600); +emit_16(1534); +emit_16(1601); +emit_16(1535); +emit_16(1601); +emit_16(1534); +emit_16(1601); +emit_16(1535); +emit_16(1602); +emit_16(1536); +emit_16(1602); +emit_16(1535); +emit_16(1602); +emit_16(1536); +emit_16(1603); +emit_16(1537); +emit_16(1603); +emit_16(1536); +emit_16(1603); +emit_16(1537); +emit_16(1604); +emit_16(1538); +emit_16(1604); +emit_16(1537); +emit_16(1604); +emit_16(1538); +emit_16(1605); +emit_16(1539); +emit_16(1605); +emit_16(1538); +emit_16(1605); +emit_16(1539); +emit_16(1606); +emit_16(1540); +emit_16(1606); +emit_16(1539); +emit_16(1606); +emit_16(1540); +emit_16(1607); +emit_16(1541); +emit_16(1607); +emit_16(1540); +emit_16(1607); +emit_16(1541); +emit_16(1608); +emit_16(1542); +emit_16(1608); +emit_16(1541); +emit_16(1608); +emit_16(1542); +emit_16(1609); +emit_16(1543); +emit_16(1609); +emit_16(1542); +emit_16(1609); +emit_16(1543); +emit_16(1610); +emit_16(1544); +emit_16(1610); +emit_16(1543); +emit_16(1610); +emit_16(1544); +emit_16(1611); +emit_16(1545); +emit_16(1611); +emit_16(1544); +emit_16(1611); +emit_16(1545); +emit_16(1612); +emit_16(1546); +emit_16(1612); +emit_16(1545); +emit_16(1612); +emit_16(1546); +emit_16(1613); +emit_16(1547); +emit_16(1613); +emit_16(1546); +emit_16(1613); +emit_16(1547); +emit_16(1614); +emit_16(1548); +emit_16(1614); +emit_16(1547); +emit_16(1614); +emit_16(1548); +emit_16(1615); +emit_16(1549); +emit_16(1615); +emit_16(1548); +emit_16(1615); +emit_16(1549); +emit_16(1616); +emit_16(1550); +emit_16(1616); +emit_16(1549); +emit_16(1616); +emit_16(1550); +emit_16(1617); +emit_16(1551); +emit_16(1617); +emit_16(1550); +emit_16(1617); +emit_16(1551); +emit_16(1618); +emit_16(1552); +emit_16(1618); +emit_16(1551); +emit_16(1618); +emit_16(1552); +emit_16(1619); +emit_16(1553); +emit_16(1619); +emit_16(1552); +emit_16(1619); +emit_16(1553); +emit_16(1620); +emit_16(1554); +emit_16(1620); +emit_16(1553); +emit_16(1620); +emit_16(1554); +emit_16(1621); +emit_16(1555); +emit_16(1621); +emit_16(1554); +emit_16(1621); +emit_16(1555); +emit_16(1622); +emit_16(1556); +emit_16(1622); +emit_16(1555); +emit_16(1622); +emit_16(1556); +emit_16(1623); +emit_16(1557); +emit_16(1623); +emit_16(1556); +emit_16(1623); +emit_16(1557); +emit_16(1624); +emit_16(1558); +emit_16(1624); +emit_16(1557); +emit_16(1624); +emit_16(1558); +emit_16(1625); +emit_16(1559); +emit_16(1625); +emit_16(1558); +emit_16(1625); +emit_16(1559); +emit_16(1626); +emit_16(1560); +emit_16(1626); +emit_16(1559); +emit_16(1626); +emit_16(1560); +emit_16(1627); +emit_16(1561); +emit_16(1627); +emit_16(1560); +emit_16(1627); +emit_16(1561); +emit_16(1628); +emit_16(1562); +emit_16(1628); +emit_16(1561); +emit_16(1628); +emit_16(1562); +emit_16(1629); +emit_16(1563); +emit_16(1629); +emit_16(1562); +emit_16(1629); +emit_16(1563); +emit_16(1630); +emit_16(1564); +emit_16(1630); +emit_16(1563); +emit_16(1630); +emit_16(1564); +emit_16(1631); +emit_16(1565); +emit_16(1631); +emit_16(1564); +emit_16(1631); +emit_16(1565); +emit_16(1632); +emit_16(1566); +emit_16(1632); +emit_16(1565); +emit_16(1632); +emit_16(1566); +emit_16(1633); +emit_16(1567); +emit_16(1633); +emit_16(1566); +emit_16(1633); +emit_16(1567); +emit_16(1634); +emit_16(1568); +emit_16(1634); +emit_16(1567); +emit_16(1634); +emit_16(1568); +emit_16(1635); +emit_16(1569); +emit_16(1635); +emit_16(1568); +emit_16(1635); +emit_16(1569); +emit_16(1636); +emit_16(1570); +emit_16(1636); +emit_16(1569); +emit_16(1636); +emit_16(1570); +emit_16(1637); +emit_16(1571); +emit_16(1637); +emit_16(1570); +emit_16(1637); +emit_16(1571); +emit_16(1638); +emit_16(1572); +emit_16(1638); +emit_16(1571); +emit_16(1638); +emit_16(1572); +emit_16(1639); +emit_16(1573); +emit_16(1639); +emit_16(1572); +emit_16(1639); +emit_16(1573); +emit_16(1640); +emit_16(1574); +emit_16(1640); +emit_16(1573); +emit_16(1640); +emit_16(1574); +emit_16(1641); +emit_16(1575); +emit_16(1641); +emit_16(1574); +emit_16(1641); +emit_16(1575); +emit_16(1642); +emit_16(1576); +emit_16(1642); +emit_16(1575); +emit_16(1642); +emit_16(1576); +emit_16(1643); +emit_16(1577); +emit_16(1643); +emit_16(1576); +emit_16(1643); +emit_16(1577); +emit_16(1644); +emit_16(1578); +emit_16(1644); +emit_16(1577); +emit_16(1644); +emit_16(1578); +emit_16(1645); +emit_16(1579); +emit_16(1645); +emit_16(1578); +emit_16(1645); +emit_16(1579); +emit_16(1646); +emit_16(1580); +emit_16(1646); +emit_16(1579); +emit_16(1646); +emit_16(1580); +emit_16(1647); +emit_16(1581); +emit_16(1647); +emit_16(1580); +emit_16(1647); +emit_16(1581); +emit_16(1648); +emit_16(1582); +emit_16(1648); +emit_16(1581); +emit_16(1648); +emit_16(1582); +emit_16(1649); +emit_16(1583); +emit_16(1649); +emit_16(1582); +emit_16(1650); +emit_16(1584); +emit_16(1651); +emit_16(1585); +emit_16(1651); +emit_16(1584); +emit_16(1651); +emit_16(1585); +emit_16(1652); +emit_16(1586); +emit_16(1652); +emit_16(1585); +emit_16(1652); +emit_16(1586); +emit_16(1653); +emit_16(1587); +emit_16(1653); +emit_16(1586); +emit_16(1653); +emit_16(1587); +emit_16(1654); +emit_16(1588); +emit_16(1654); +emit_16(1587); +emit_16(1654); +emit_16(1588); +emit_16(1655); +emit_16(1589); +emit_16(1655); +emit_16(1588); +emit_16(1655); +emit_16(1589); +emit_16(1656); +emit_16(1590); +emit_16(1656); +emit_16(1589); +emit_16(1656); +emit_16(1590); +emit_16(1657); +emit_16(1591); +emit_16(1657); +emit_16(1590); +emit_16(1657); +emit_16(1591); +emit_16(1658); +emit_16(1592); +emit_16(1658); +emit_16(1591); +emit_16(1658); +emit_16(1592); +emit_16(1659); +emit_16(1593); +emit_16(1659); +emit_16(1592); +emit_16(1659); +emit_16(1593); +emit_16(1660); +emit_16(1594); +emit_16(1660); +emit_16(1593); +emit_16(1660); +emit_16(1594); +emit_16(1661); +emit_16(1595); +emit_16(1661); +emit_16(1594); +emit_16(1661); +emit_16(1595); +emit_16(1662); +emit_16(1596); +emit_16(1662); +emit_16(1595); +emit_16(1662); +emit_16(1596); +emit_16(1663); +emit_16(1597); +emit_16(1663); +emit_16(1596); +emit_16(1663); +emit_16(1597); +emit_16(1664); +emit_16(1598); +emit_16(1664); +emit_16(1597); +emit_16(1664); +emit_16(1598); +emit_16(1665); +emit_16(1599); +emit_16(1665); +emit_16(1598); +emit_16(1665); +emit_16(1599); +emit_16(1666); +emit_16(1600); +emit_16(1666); +emit_16(1599); +emit_16(1666); +emit_16(1600); +emit_16(1667); +emit_16(1601); +emit_16(1667); +emit_16(1600); +emit_16(1667); +emit_16(1601); +emit_16(1668); +emit_16(1602); +emit_16(1668); +emit_16(1601); +emit_16(1668); +emit_16(1602); +emit_16(1669); +emit_16(1603); +emit_16(1669); +emit_16(1602); +emit_16(1669); +emit_16(1603); +emit_16(1670); +emit_16(1604); +emit_16(1670); +emit_16(1603); +emit_16(1670); +emit_16(1604); +emit_16(1671); +emit_16(1605); +emit_16(1671); +emit_16(1604); +emit_16(1671); +emit_16(1605); +emit_16(1672); +emit_16(1606); +emit_16(1672); +emit_16(1605); +emit_16(1672); +emit_16(1606); +emit_16(1673); +emit_16(1607); +emit_16(1673); +emit_16(1606); +emit_16(1673); +emit_16(1607); +emit_16(1674); +emit_16(1608); +emit_16(1674); +emit_16(1607); +emit_16(1674); +emit_16(1608); +emit_16(1675); +emit_16(1609); +emit_16(1675); +emit_16(1608); +emit_16(1675); +emit_16(1609); +emit_16(1676); +emit_16(1610); +emit_16(1676); +emit_16(1609); +emit_16(1676); +emit_16(1610); +emit_16(1677); +emit_16(1611); +emit_16(1677); +emit_16(1610); +emit_16(1677); +emit_16(1611); +emit_16(1678); +emit_16(1612); +emit_16(1678); +emit_16(1611); +emit_16(1678); +emit_16(1612); +emit_16(1679); +emit_16(1613); +emit_16(1679); +emit_16(1612); +emit_16(1679); +emit_16(1613); +emit_16(1680); +emit_16(1614); +emit_16(1680); +emit_16(1613); +emit_16(1680); +emit_16(1614); +emit_16(1681); +emit_16(1615); +emit_16(1681); +emit_16(1614); +emit_16(1681); +emit_16(1615); +emit_16(1682); +emit_16(1616); +emit_16(1682); +emit_16(1615); +emit_16(1682); +emit_16(1616); +emit_16(1683); +emit_16(1617); +emit_16(1683); +emit_16(1616); +emit_16(1683); +emit_16(1617); +emit_16(1684); +emit_16(1618); +emit_16(1684); +emit_16(1617); +emit_16(1684); +emit_16(1618); +emit_16(1685); +emit_16(1619); +emit_16(1685); +emit_16(1618); +emit_16(1685); +emit_16(1619); +emit_16(1686); +emit_16(1620); +emit_16(1686); +emit_16(1619); +emit_16(1686); +emit_16(1620); +emit_16(1687); +emit_16(1621); +emit_16(1687); +emit_16(1620); +emit_16(1687); +emit_16(1621); +emit_16(1688); +emit_16(1622); +emit_16(1688); +emit_16(1621); +emit_16(1688); +emit_16(1622); +emit_16(1689); +emit_16(1623); +emit_16(1689); +emit_16(1622); +emit_16(1689); +emit_16(1623); +emit_16(1690); +emit_16(1624); +emit_16(1690); +emit_16(1623); +emit_16(1690); +emit_16(1624); +emit_16(1691); +emit_16(1625); +emit_16(1691); +emit_16(1624); +emit_16(1691); +emit_16(1625); +emit_16(1692); +emit_16(1626); +emit_16(1692); +emit_16(1625); +emit_16(1692); +emit_16(1626); +emit_16(1693); +emit_16(1627); +emit_16(1693); +emit_16(1626); +emit_16(1693); +emit_16(1627); +emit_16(1694); +emit_16(1628); +emit_16(1694); +emit_16(1627); +emit_16(1694); +emit_16(1628); +emit_16(1695); +emit_16(1629); +emit_16(1695); +emit_16(1628); +emit_16(1695); +emit_16(1629); +emit_16(1696); +emit_16(1630); +emit_16(1696); +emit_16(1629); +emit_16(1696); +emit_16(1630); +emit_16(1697); +emit_16(1631); +emit_16(1697); +emit_16(1630); +emit_16(1697); +emit_16(1631); +emit_16(1698); +emit_16(1632); +emit_16(1698); +emit_16(1631); +emit_16(1698); +emit_16(1632); +emit_16(1699); +emit_16(1633); +emit_16(1699); +emit_16(1632); +emit_16(1699); +emit_16(1633); +emit_16(1700); +emit_16(1634); +emit_16(1700); +emit_16(1633); +emit_16(1700); +emit_16(1634); +emit_16(1701); +emit_16(1635); +emit_16(1701); +emit_16(1634); +emit_16(1701); +emit_16(1635); +emit_16(1702); +emit_16(1636); +emit_16(1702); +emit_16(1635); +emit_16(1702); +emit_16(1636); +emit_16(1703); +emit_16(1637); +emit_16(1703); +emit_16(1636); +emit_16(1703); +emit_16(1637); +emit_16(1704); +emit_16(1638); +emit_16(1704); +emit_16(1637); +emit_16(1704); +emit_16(1638); +emit_16(1705); +emit_16(1639); +emit_16(1705); +emit_16(1638); +emit_16(1705); +emit_16(1639); +emit_16(1706); +emit_16(1640); +emit_16(1706); +emit_16(1639); +emit_16(1706); +emit_16(1640); +emit_16(1707); +emit_16(1641); +emit_16(1707); +emit_16(1640); +emit_16(1707); +emit_16(1641); +emit_16(1708); +emit_16(1642); +emit_16(1708); +emit_16(1641); +emit_16(1708); +emit_16(1642); +emit_16(1709); +emit_16(1643); +emit_16(1709); +emit_16(1642); +emit_16(1709); +emit_16(1643); +emit_16(1710); +emit_16(1644); +emit_16(1710); +emit_16(1643); +emit_16(1710); +emit_16(1644); +emit_16(1711); +emit_16(1645); +emit_16(1711); +emit_16(1644); +emit_16(1711); +emit_16(1645); +emit_16(1712); +emit_16(1646); +emit_16(1712); +emit_16(1645); +emit_16(1712); +emit_16(1646); +emit_16(1713); +emit_16(1647); +emit_16(1713); +emit_16(1646); +emit_16(1713); +emit_16(1647); +emit_16(1714); +emit_16(1648); +emit_16(1714); +emit_16(1647); +emit_16(1714); +emit_16(1648); +emit_16(1715); +emit_16(1649); +emit_16(1715); +emit_16(1648); +emit_16(1716); +emit_16(1650); +emit_16(1717); +emit_16(1651); +emit_16(1717); +emit_16(1650); +emit_16(1717); +emit_16(1651); +emit_16(1718); +emit_16(1652); +emit_16(1718); +emit_16(1651); +emit_16(1718); +emit_16(1652); +emit_16(1719); +emit_16(1653); +emit_16(1719); +emit_16(1652); +emit_16(1719); +emit_16(1653); +emit_16(1720); +emit_16(1654); +emit_16(1720); +emit_16(1653); +emit_16(1720); +emit_16(1654); +emit_16(1721); +emit_16(1655); +emit_16(1721); +emit_16(1654); +emit_16(1721); +emit_16(1655); +emit_16(1722); +emit_16(1656); +emit_16(1722); +emit_16(1655); +emit_16(1722); +emit_16(1656); +emit_16(1723); +emit_16(1657); +emit_16(1723); +emit_16(1656); +emit_16(1723); +emit_16(1657); +emit_16(1724); +emit_16(1658); +emit_16(1724); +emit_16(1657); +emit_16(1724); +emit_16(1658); +emit_16(1725); +emit_16(1659); +emit_16(1725); +emit_16(1658); +emit_16(1725); +emit_16(1659); +emit_16(1726); +emit_16(1660); +emit_16(1726); +emit_16(1659); +emit_16(1726); +emit_16(1660); +emit_16(1727); +emit_16(1661); +emit_16(1727); +emit_16(1660); +emit_16(1727); +emit_16(1661); +emit_16(1728); +emit_16(1662); +emit_16(1728); +emit_16(1661); +emit_16(1728); +emit_16(1662); +emit_16(1729); +emit_16(1663); +emit_16(1729); +emit_16(1662); +emit_16(1729); +emit_16(1663); +emit_16(1730); +emit_16(1664); +emit_16(1730); +emit_16(1663); +emit_16(1730); +emit_16(1664); +emit_16(1731); +emit_16(1665); +emit_16(1731); +emit_16(1664); +emit_16(1731); +emit_16(1665); +emit_16(1732); +emit_16(1666); +emit_16(1732); +emit_16(1665); +emit_16(1732); +emit_16(1666); +emit_16(1733); +emit_16(1667); +emit_16(1733); +emit_16(1666); +emit_16(1733); +emit_16(1667); +emit_16(1734); +emit_16(1668); +emit_16(1734); +emit_16(1667); +emit_16(1734); +emit_16(1668); +emit_16(1735); +emit_16(1669); +emit_16(1735); +emit_16(1668); +emit_16(1735); +emit_16(1669); +emit_16(1736); +emit_16(1670); +emit_16(1736); +emit_16(1669); +emit_16(1736); +emit_16(1670); +emit_16(1737); +emit_16(1671); +emit_16(1737); +emit_16(1670); +emit_16(1737); +emit_16(1671); +emit_16(1738); +emit_16(1672); +emit_16(1738); +emit_16(1671); +emit_16(1738); +emit_16(1672); +emit_16(1739); +emit_16(1673); +emit_16(1739); +emit_16(1672); +emit_16(1739); +emit_16(1673); +emit_16(1740); +emit_16(1674); +emit_16(1740); +emit_16(1673); +emit_16(1740); +emit_16(1674); +emit_16(1741); +emit_16(1675); +emit_16(1741); +emit_16(1674); +emit_16(1741); +emit_16(1675); +emit_16(1742); +emit_16(1676); +emit_16(1742); +emit_16(1675); +emit_16(1742); +emit_16(1676); +emit_16(1743); +emit_16(1677); +emit_16(1743); +emit_16(1676); +emit_16(1743); +emit_16(1677); +emit_16(1744); +emit_16(1678); +emit_16(1744); +emit_16(1677); +emit_16(1744); +emit_16(1678); +emit_16(1745); +emit_16(1679); +emit_16(1745); +emit_16(1678); +emit_16(1745); +emit_16(1679); +emit_16(1746); +emit_16(1680); +emit_16(1746); +emit_16(1679); +emit_16(1746); +emit_16(1680); +emit_16(1747); +emit_16(1681); +emit_16(1747); +emit_16(1680); +emit_16(1747); +emit_16(1681); +emit_16(1748); +emit_16(1682); +emit_16(1748); +emit_16(1681); +emit_16(1748); +emit_16(1682); +emit_16(1749); +emit_16(1683); +emit_16(1749); +emit_16(1682); +emit_16(1749); +emit_16(1683); +emit_16(1750); +emit_16(1684); +emit_16(1750); +emit_16(1683); +emit_16(1750); +emit_16(1684); +emit_16(1751); +emit_16(1685); +emit_16(1751); +emit_16(1684); +emit_16(1751); +emit_16(1685); +emit_16(1752); +emit_16(1686); +emit_16(1752); +emit_16(1685); +emit_16(1752); +emit_16(1686); +emit_16(1753); +emit_16(1687); +emit_16(1753); +emit_16(1686); +emit_16(1753); +emit_16(1687); +emit_16(1754); +emit_16(1688); +emit_16(1754); +emit_16(1687); +emit_16(1754); +emit_16(1688); +emit_16(1755); +emit_16(1689); +emit_16(1755); +emit_16(1688); +emit_16(1755); +emit_16(1689); +emit_16(1756); +emit_16(1690); +emit_16(1756); +emit_16(1689); +emit_16(1756); +emit_16(1690); +emit_16(1757); +emit_16(1691); +emit_16(1757); +emit_16(1690); +emit_16(1757); +emit_16(1691); +emit_16(1758); +emit_16(1692); +emit_16(1758); +emit_16(1691); +emit_16(1758); +emit_16(1692); +emit_16(1759); +emit_16(1693); +emit_16(1759); +emit_16(1692); +emit_16(1759); +emit_16(1693); +emit_16(1760); +emit_16(1694); +emit_16(1760); +emit_16(1693); +emit_16(1760); +emit_16(1694); +emit_16(1761); +emit_16(1695); +emit_16(1761); +emit_16(1694); +emit_16(1761); +emit_16(1695); +emit_16(1762); +emit_16(1696); +emit_16(1762); +emit_16(1695); +emit_16(1762); +emit_16(1696); +emit_16(1763); +emit_16(1697); +emit_16(1763); +emit_16(1696); +emit_16(1763); +emit_16(1697); +emit_16(1764); +emit_16(1698); +emit_16(1764); +emit_16(1697); +emit_16(1764); +emit_16(1698); +emit_16(1765); +emit_16(1699); +emit_16(1765); +emit_16(1698); +emit_16(1765); +emit_16(1699); +emit_16(1766); +emit_16(1700); +emit_16(1766); +emit_16(1699); +emit_16(1766); +emit_16(1700); +emit_16(1767); +emit_16(1701); +emit_16(1767); +emit_16(1700); +emit_16(1767); +emit_16(1701); +emit_16(1768); +emit_16(1702); +emit_16(1768); +emit_16(1701); +emit_16(1768); +emit_16(1702); +emit_16(1769); +emit_16(1703); +emit_16(1769); +emit_16(1702); +emit_16(1769); +emit_16(1703); +emit_16(1770); +emit_16(1704); +emit_16(1770); +emit_16(1703); +emit_16(1770); +emit_16(1704); +emit_16(1771); +emit_16(1705); +emit_16(1771); +emit_16(1704); +emit_16(1771); +emit_16(1705); +emit_16(1772); +emit_16(1706); +emit_16(1772); +emit_16(1705); +emit_16(1772); +emit_16(1706); +emit_16(1773); +emit_16(1707); +emit_16(1773); +emit_16(1706); +emit_16(1773); +emit_16(1707); +emit_16(1774); +emit_16(1708); +emit_16(1774); +emit_16(1707); +emit_16(1774); +emit_16(1708); +emit_16(1775); +emit_16(1709); +emit_16(1775); +emit_16(1708); +emit_16(1775); +emit_16(1709); +emit_16(1776); +emit_16(1710); +emit_16(1776); +emit_16(1709); +emit_16(1776); +emit_16(1710); +emit_16(1777); +emit_16(1711); +emit_16(1777); +emit_16(1710); +emit_16(1777); +emit_16(1711); +emit_16(1778); +emit_16(1712); +emit_16(1778); +emit_16(1711); +emit_16(1778); +emit_16(1712); +emit_16(1779); +emit_16(1713); +emit_16(1779); +emit_16(1712); +emit_16(1779); +emit_16(1713); +emit_16(1780); +emit_16(1714); +emit_16(1780); +emit_16(1713); +emit_16(1780); +emit_16(1714); +emit_16(1781); +emit_16(1715); +emit_16(1781); +emit_16(1714); +emit_16(1782); +emit_16(1716); +emit_16(1783); +emit_16(1717); +emit_16(1783); +emit_16(1716); +emit_16(1783); +emit_16(1717); +emit_16(1784); +emit_16(1718); +emit_16(1784); +emit_16(1717); +emit_16(1784); +emit_16(1718); +emit_16(1785); +emit_16(1719); +emit_16(1785); +emit_16(1718); +emit_16(1785); +emit_16(1719); +emit_16(1786); +emit_16(1720); +emit_16(1786); +emit_16(1719); +emit_16(1786); +emit_16(1720); +emit_16(1787); +emit_16(1721); +emit_16(1787); +emit_16(1720); +emit_16(1787); +emit_16(1721); +emit_16(1788); +emit_16(1722); +emit_16(1788); +emit_16(1721); +emit_16(1788); +emit_16(1722); +emit_16(1789); +emit_16(1723); +emit_16(1789); +emit_16(1722); +emit_16(1789); +emit_16(1723); +emit_16(1790); +emit_16(1724); +emit_16(1790); +emit_16(1723); +emit_16(1790); +emit_16(1724); +emit_16(1791); +emit_16(1725); +emit_16(1791); +emit_16(1724); +emit_16(1791); +emit_16(1725); +emit_16(1792); +emit_16(1726); +emit_16(1792); +emit_16(1725); +emit_16(1792); +emit_16(1726); +emit_16(1793); +emit_16(1727); +emit_16(1793); +emit_16(1726); +emit_16(1793); +emit_16(1727); +emit_16(1794); +emit_16(1728); +emit_16(1794); +emit_16(1727); +emit_16(1794); +emit_16(1728); +emit_16(1795); +emit_16(1729); +emit_16(1795); +emit_16(1728); +emit_16(1795); +emit_16(1729); +emit_16(1796); +emit_16(1730); +emit_16(1796); +emit_16(1729); +emit_16(1796); +emit_16(1730); +emit_16(1797); +emit_16(1731); +emit_16(1797); +emit_16(1730); +emit_16(1797); +emit_16(1731); +emit_16(1798); +emit_16(1732); +emit_16(1798); +emit_16(1731); +emit_16(1798); +emit_16(1732); +emit_16(1799); +emit_16(1733); +emit_16(1799); +emit_16(1732); +emit_16(1799); +emit_16(1733); +emit_16(1800); +emit_16(1734); +emit_16(1800); +emit_16(1733); +emit_16(1800); +emit_16(1734); +emit_16(1801); +emit_16(1735); +emit_16(1801); +emit_16(1734); +emit_16(1801); +emit_16(1735); +emit_16(1802); +emit_16(1736); +emit_16(1802); +emit_16(1735); +emit_16(1802); +emit_16(1736); +emit_16(1803); +emit_16(1737); +emit_16(1803); +emit_16(1736); +emit_16(1803); +emit_16(1737); +emit_16(1804); +emit_16(1738); +emit_16(1804); +emit_16(1737); +emit_16(1804); +emit_16(1738); +emit_16(1805); +emit_16(1739); +emit_16(1805); +emit_16(1738); +emit_16(1805); +emit_16(1739); +emit_16(1806); +emit_16(1740); +emit_16(1806); +emit_16(1739); +emit_16(1806); +emit_16(1740); +emit_16(1807); +emit_16(1741); +emit_16(1807); +emit_16(1740); +emit_16(1807); +emit_16(1741); +emit_16(1808); +emit_16(1742); +emit_16(1808); +emit_16(1741); +emit_16(1808); +emit_16(1742); +emit_16(1809); +emit_16(1743); +emit_16(1809); +emit_16(1742); +emit_16(1809); +emit_16(1743); +emit_16(1810); +emit_16(1744); +emit_16(1810); +emit_16(1743); +emit_16(1810); +emit_16(1744); +emit_16(1811); +emit_16(1745); +emit_16(1811); +emit_16(1744); +emit_16(1811); +emit_16(1745); +emit_16(1812); +emit_16(1746); +emit_16(1812); +emit_16(1745); +emit_16(1812); +emit_16(1746); +emit_16(1813); +emit_16(1747); +emit_16(1813); +emit_16(1746); +emit_16(1813); +emit_16(1747); +emit_16(1814); +emit_16(1748); +emit_16(1814); +emit_16(1747); +emit_16(1814); +emit_16(1748); +emit_16(1815); +emit_16(1749); +emit_16(1815); +emit_16(1748); +emit_16(1815); +emit_16(1749); +emit_16(1816); +emit_16(1750); +emit_16(1816); +emit_16(1749); +emit_16(1816); +emit_16(1750); +emit_16(1817); +emit_16(1751); +emit_16(1817); +emit_16(1750); +emit_16(1817); +emit_16(1751); +emit_16(1818); +emit_16(1752); +emit_16(1818); +emit_16(1751); +emit_16(1818); +emit_16(1752); +emit_16(1819); +emit_16(1753); +emit_16(1819); +emit_16(1752); +emit_16(1819); +emit_16(1753); +emit_16(1820); +emit_16(1754); +emit_16(1820); +emit_16(1753); +emit_16(1820); +emit_16(1754); +emit_16(1821); +emit_16(1755); +emit_16(1821); +emit_16(1754); +emit_16(1821); +emit_16(1755); +emit_16(1822); +emit_16(1756); +emit_16(1822); +emit_16(1755); +emit_16(1822); +emit_16(1756); +emit_16(1823); +emit_16(1757); +emit_16(1823); +emit_16(1756); +emit_16(1823); +emit_16(1757); +emit_16(1824); +emit_16(1758); +emit_16(1824); +emit_16(1757); +emit_16(1824); +emit_16(1758); +emit_16(1825); +emit_16(1759); +emit_16(1825); +emit_16(1758); +emit_16(1825); +emit_16(1759); +emit_16(1826); +emit_16(1760); +emit_16(1826); +emit_16(1759); +emit_16(1826); +emit_16(1760); +emit_16(1827); +emit_16(1761); +emit_16(1827); +emit_16(1760); +emit_16(1827); +emit_16(1761); +emit_16(1828); +emit_16(1762); +emit_16(1828); +emit_16(1761); +emit_16(1828); +emit_16(1762); +emit_16(1829); +emit_16(1763); +emit_16(1829); +emit_16(1762); +emit_16(1829); +emit_16(1763); +emit_16(1830); +emit_16(1764); +emit_16(1830); +emit_16(1763); +emit_16(1830); +emit_16(1764); +emit_16(1831); +emit_16(1765); +emit_16(1831); +emit_16(1764); +emit_16(1831); +emit_16(1765); +emit_16(1832); +emit_16(1766); +emit_16(1832); +emit_16(1765); +emit_16(1832); +emit_16(1766); +emit_16(1833); +emit_16(1767); +emit_16(1833); +emit_16(1766); +emit_16(1833); +emit_16(1767); +emit_16(1834); +emit_16(1768); +emit_16(1834); +emit_16(1767); +emit_16(1834); +emit_16(1768); +emit_16(1835); +emit_16(1769); +emit_16(1835); +emit_16(1768); +emit_16(1835); +emit_16(1769); +emit_16(1836); +emit_16(1770); +emit_16(1836); +emit_16(1769); +emit_16(1836); +emit_16(1770); +emit_16(1837); +emit_16(1771); +emit_16(1837); +emit_16(1770); +emit_16(1837); +emit_16(1771); +emit_16(1838); +emit_16(1772); +emit_16(1838); +emit_16(1771); +emit_16(1838); +emit_16(1772); +emit_16(1839); +emit_16(1773); +emit_16(1839); +emit_16(1772); +emit_16(1839); +emit_16(1773); +emit_16(1840); +emit_16(1774); +emit_16(1840); +emit_16(1773); +emit_16(1840); +emit_16(1774); +emit_16(1841); +emit_16(1775); +emit_16(1841); +emit_16(1774); +emit_16(1841); +emit_16(1775); +emit_16(1842); +emit_16(1776); +emit_16(1842); +emit_16(1775); +emit_16(1842); +emit_16(1776); +emit_16(1843); +emit_16(1777); +emit_16(1843); +emit_16(1776); +emit_16(1843); +emit_16(1777); +emit_16(1844); +emit_16(1778); +emit_16(1844); +emit_16(1777); +emit_16(1844); +emit_16(1778); +emit_16(1845); +emit_16(1779); +emit_16(1845); +emit_16(1778); +emit_16(1845); +emit_16(1779); +emit_16(1846); +emit_16(1780); +emit_16(1846); +emit_16(1779); +emit_16(1846); +emit_16(1780); +emit_16(1847); +emit_16(1781); +emit_16(1847); +emit_16(1780); +emit_16(1848); +emit_16(1782); +emit_16(1849); +emit_16(1783); +emit_16(1849); +emit_16(1782); +emit_16(1849); +emit_16(1783); +emit_16(1850); +emit_16(1784); +emit_16(1850); +emit_16(1783); +emit_16(1850); +emit_16(1784); +emit_16(1851); +emit_16(1785); +emit_16(1851); +emit_16(1784); +emit_16(1851); +emit_16(1785); +emit_16(1852); +emit_16(1786); +emit_16(1852); +emit_16(1785); +emit_16(1852); +emit_16(1786); +emit_16(1853); +emit_16(1787); +emit_16(1853); +emit_16(1786); +emit_16(1853); +emit_16(1787); +emit_16(1854); +emit_16(1788); +emit_16(1854); +emit_16(1787); +emit_16(1854); +emit_16(1788); +emit_16(1855); +emit_16(1789); +emit_16(1855); +emit_16(1788); +emit_16(1855); +emit_16(1789); +emit_16(1856); +emit_16(1790); +emit_16(1856); +emit_16(1789); +emit_16(1856); +emit_16(1790); +emit_16(1857); +emit_16(1791); +emit_16(1857); +emit_16(1790); +emit_16(1857); +emit_16(1791); +emit_16(1858); +emit_16(1792); +emit_16(1858); +emit_16(1791); +emit_16(1858); +emit_16(1792); +emit_16(1859); +emit_16(1793); +emit_16(1859); +emit_16(1792); +emit_16(1859); +emit_16(1793); +emit_16(1860); +emit_16(1794); +emit_16(1860); +emit_16(1793); +emit_16(1860); +emit_16(1794); +emit_16(1861); +emit_16(1795); +emit_16(1861); +emit_16(1794); +emit_16(1861); +emit_16(1795); +emit_16(1862); +emit_16(1796); +emit_16(1862); +emit_16(1795); +emit_16(1862); +emit_16(1796); +emit_16(1863); +emit_16(1797); +emit_16(1863); +emit_16(1796); +emit_16(1863); +emit_16(1797); +emit_16(1864); +emit_16(1798); +emit_16(1864); +emit_16(1797); +emit_16(1864); +emit_16(1798); +emit_16(1865); +emit_16(1799); +emit_16(1865); +emit_16(1798); +emit_16(1865); +emit_16(1799); +emit_16(1866); +emit_16(1800); +emit_16(1866); +emit_16(1799); +emit_16(1866); +emit_16(1800); +emit_16(1867); +emit_16(1801); +emit_16(1867); +emit_16(1800); +emit_16(1867); +emit_16(1801); +emit_16(1868); +emit_16(1802); +emit_16(1868); +emit_16(1801); +emit_16(1868); +emit_16(1802); +emit_16(1869); +emit_16(1803); +emit_16(1869); +emit_16(1802); +emit_16(1869); +emit_16(1803); +emit_16(1870); +emit_16(1804); +emit_16(1870); +emit_16(1803); +emit_16(1870); +emit_16(1804); +emit_16(1871); +emit_16(1805); +emit_16(1871); +emit_16(1804); +emit_16(1871); +emit_16(1805); +emit_16(1872); +emit_16(1806); +emit_16(1872); +emit_16(1805); +emit_16(1872); +emit_16(1806); +emit_16(1873); +emit_16(1807); +emit_16(1873); +emit_16(1806); +emit_16(1873); +emit_16(1807); +emit_16(1874); +emit_16(1808); +emit_16(1874); +emit_16(1807); +emit_16(1874); +emit_16(1808); +emit_16(1875); +emit_16(1809); +emit_16(1875); +emit_16(1808); +emit_16(1875); +emit_16(1809); +emit_16(1876); +emit_16(1810); +emit_16(1876); +emit_16(1809); +emit_16(1876); +emit_16(1810); +emit_16(1877); +emit_16(1811); +emit_16(1877); +emit_16(1810); +emit_16(1877); +emit_16(1811); +emit_16(1878); +emit_16(1812); +emit_16(1878); +emit_16(1811); +emit_16(1878); +emit_16(1812); +emit_16(1879); +emit_16(1813); +emit_16(1879); +emit_16(1812); +emit_16(1879); +emit_16(1813); +emit_16(1880); +emit_16(1814); +emit_16(1880); +emit_16(1813); +emit_16(1880); +emit_16(1814); +emit_16(1881); +emit_16(1815); +emit_16(1881); +emit_16(1814); +emit_16(1881); +emit_16(1815); +emit_16(1882); +emit_16(1816); +emit_16(1882); +emit_16(1815); +emit_16(1882); +emit_16(1816); +emit_16(1883); +emit_16(1817); +emit_16(1883); +emit_16(1816); +emit_16(1883); +emit_16(1817); +emit_16(1884); +emit_16(1818); +emit_16(1884); +emit_16(1817); +emit_16(1884); +emit_16(1818); +emit_16(1885); +emit_16(1819); +emit_16(1885); +emit_16(1818); +emit_16(1885); +emit_16(1819); +emit_16(1886); +emit_16(1820); +emit_16(1886); +emit_16(1819); +emit_16(1886); +emit_16(1820); +emit_16(1887); +emit_16(1821); +emit_16(1887); +emit_16(1820); +emit_16(1887); +emit_16(1821); +emit_16(1888); +emit_16(1822); +emit_16(1888); +emit_16(1821); +emit_16(1888); +emit_16(1822); +emit_16(1889); +emit_16(1823); +emit_16(1889); +emit_16(1822); +emit_16(1889); +emit_16(1823); +emit_16(1890); +emit_16(1824); +emit_16(1890); +emit_16(1823); +emit_16(1890); +emit_16(1824); +emit_16(1891); +emit_16(1825); +emit_16(1891); +emit_16(1824); +emit_16(1891); +emit_16(1825); +emit_16(1892); +emit_16(1826); +emit_16(1892); +emit_16(1825); +emit_16(1892); +emit_16(1826); +emit_16(1893); +emit_16(1827); +emit_16(1893); +emit_16(1826); +emit_16(1893); +emit_16(1827); +emit_16(1894); +emit_16(1828); +emit_16(1894); +emit_16(1827); +emit_16(1894); +emit_16(1828); +emit_16(1895); +emit_16(1829); +emit_16(1895); +emit_16(1828); +emit_16(1895); +emit_16(1829); +emit_16(1896); +emit_16(1830); +emit_16(1896); +emit_16(1829); +emit_16(1896); +emit_16(1830); +emit_16(1897); +emit_16(1831); +emit_16(1897); +emit_16(1830); +emit_16(1897); +emit_16(1831); +emit_16(1898); +emit_16(1832); +emit_16(1898); +emit_16(1831); +emit_16(1898); +emit_16(1832); +emit_16(1899); +emit_16(1833); +emit_16(1899); +emit_16(1832); +emit_16(1899); +emit_16(1833); +emit_16(1900); +emit_16(1834); +emit_16(1900); +emit_16(1833); +emit_16(1900); +emit_16(1834); +emit_16(1901); +emit_16(1835); +emit_16(1901); +emit_16(1834); +emit_16(1901); +emit_16(1835); +emit_16(1902); +emit_16(1836); +emit_16(1902); +emit_16(1835); +emit_16(1902); +emit_16(1836); +emit_16(1903); +emit_16(1837); +emit_16(1903); +emit_16(1836); +emit_16(1903); +emit_16(1837); +emit_16(1904); +emit_16(1838); +emit_16(1904); +emit_16(1837); +emit_16(1904); +emit_16(1838); +emit_16(1905); +emit_16(1839); +emit_16(1905); +emit_16(1838); +emit_16(1905); +emit_16(1839); +emit_16(1906); +emit_16(1840); +emit_16(1906); +emit_16(1839); +emit_16(1906); +emit_16(1840); +emit_16(1907); +emit_16(1841); +emit_16(1907); +emit_16(1840); +emit_16(1907); +emit_16(1841); +emit_16(1908); +emit_16(1842); +emit_16(1908); +emit_16(1841); +emit_16(1908); +emit_16(1842); +emit_16(1909); +emit_16(1843); +emit_16(1909); +emit_16(1842); +emit_16(1909); +emit_16(1843); +emit_16(1910); +emit_16(1844); +emit_16(1910); +emit_16(1843); +emit_16(1910); +emit_16(1844); +emit_16(1911); +emit_16(1845); +emit_16(1911); +emit_16(1844); +emit_16(1911); +emit_16(1845); +emit_16(1912); +emit_16(1846); +emit_16(1912); +emit_16(1845); +emit_16(1912); +emit_16(1846); +emit_16(1913); +emit_16(1847); +emit_16(1913); +emit_16(1846); +emit_16(1914); +emit_16(1848); +emit_16(1915); +emit_16(1849); +emit_16(1915); +emit_16(1848); +emit_16(1915); +emit_16(1849); +emit_16(1916); +emit_16(1850); +emit_16(1916); +emit_16(1849); +emit_16(1916); +emit_16(1850); +emit_16(1917); +emit_16(1851); +emit_16(1917); +emit_16(1850); +emit_16(1917); +emit_16(1851); +emit_16(1918); +emit_16(1852); +emit_16(1918); +emit_16(1851); +emit_16(1918); +emit_16(1852); +emit_16(1919); +emit_16(1853); +emit_16(1919); +emit_16(1852); +emit_16(1919); +emit_16(1853); +emit_16(1920); +emit_16(1854); +emit_16(1920); +emit_16(1853); +emit_16(1920); +emit_16(1854); +emit_16(1921); +emit_16(1855); +emit_16(1921); +emit_16(1854); +emit_16(1921); +emit_16(1855); +emit_16(1922); +emit_16(1856); +emit_16(1922); +emit_16(1855); +emit_16(1922); +emit_16(1856); +emit_16(1923); +emit_16(1857); +emit_16(1923); +emit_16(1856); +emit_16(1923); +emit_16(1857); +emit_16(1924); +emit_16(1858); +emit_16(1924); +emit_16(1857); +emit_16(1924); +emit_16(1858); +emit_16(1925); +emit_16(1859); +emit_16(1925); +emit_16(1858); +emit_16(1925); +emit_16(1859); +emit_16(1926); +emit_16(1860); +emit_16(1926); +emit_16(1859); +emit_16(1926); +emit_16(1860); +emit_16(1927); +emit_16(1861); +emit_16(1927); +emit_16(1860); +emit_16(1927); +emit_16(1861); +emit_16(1928); +emit_16(1862); +emit_16(1928); +emit_16(1861); +emit_16(1928); +emit_16(1862); +emit_16(1929); +emit_16(1863); +emit_16(1929); +emit_16(1862); +emit_16(1929); +emit_16(1863); +emit_16(1930); +emit_16(1864); +emit_16(1930); +emit_16(1863); +emit_16(1930); +emit_16(1864); +emit_16(1931); +emit_16(1865); +emit_16(1931); +emit_16(1864); +emit_16(1931); +emit_16(1865); +emit_16(1932); +emit_16(1866); +emit_16(1932); +emit_16(1865); +emit_16(1932); +emit_16(1866); +emit_16(1933); +emit_16(1867); +emit_16(1933); +emit_16(1866); +emit_16(1933); +emit_16(1867); +emit_16(1934); +emit_16(1868); +emit_16(1934); +emit_16(1867); +emit_16(1934); +emit_16(1868); +emit_16(1935); +emit_16(1869); +emit_16(1935); +emit_16(1868); +emit_16(1935); +emit_16(1869); +emit_16(1936); +emit_16(1870); +emit_16(1936); +emit_16(1869); +emit_16(1936); +emit_16(1870); +emit_16(1937); +emit_16(1871); +emit_16(1937); +emit_16(1870); +emit_16(1937); +emit_16(1871); +emit_16(1938); +emit_16(1872); +emit_16(1938); +emit_16(1871); +emit_16(1938); +emit_16(1872); +emit_16(1939); +emit_16(1873); +emit_16(1939); +emit_16(1872); +emit_16(1939); +emit_16(1873); +emit_16(1940); +emit_16(1874); +emit_16(1940); +emit_16(1873); +emit_16(1940); +emit_16(1874); +emit_16(1941); +emit_16(1875); +emit_16(1941); +emit_16(1874); +emit_16(1941); +emit_16(1875); +emit_16(1942); +emit_16(1876); +emit_16(1942); +emit_16(1875); +emit_16(1942); +emit_16(1876); +emit_16(1943); +emit_16(1877); +emit_16(1943); +emit_16(1876); +emit_16(1943); +emit_16(1877); +emit_16(1944); +emit_16(1878); +emit_16(1944); +emit_16(1877); +emit_16(1944); +emit_16(1878); +emit_16(1945); +emit_16(1879); +emit_16(1945); +emit_16(1878); +emit_16(1945); +emit_16(1879); +emit_16(1946); +emit_16(1880); +emit_16(1946); +emit_16(1879); +emit_16(1946); +emit_16(1880); +emit_16(1947); +emit_16(1881); +emit_16(1947); +emit_16(1880); +emit_16(1947); +emit_16(1881); +emit_16(1948); +emit_16(1882); +emit_16(1948); +emit_16(1881); +emit_16(1948); +emit_16(1882); +emit_16(1949); +emit_16(1883); +emit_16(1949); +emit_16(1882); +emit_16(1949); +emit_16(1883); +emit_16(1950); +emit_16(1884); +emit_16(1950); +emit_16(1883); +emit_16(1950); +emit_16(1884); +emit_16(1951); +emit_16(1885); +emit_16(1951); +emit_16(1884); +emit_16(1951); +emit_16(1885); +emit_16(1952); +emit_16(1886); +emit_16(1952); +emit_16(1885); +emit_16(1952); +emit_16(1886); +emit_16(1953); +emit_16(1887); +emit_16(1953); +emit_16(1886); +emit_16(1953); +emit_16(1887); +emit_16(1954); +emit_16(1888); +emit_16(1954); +emit_16(1887); +emit_16(1954); +emit_16(1888); +emit_16(1955); +emit_16(1889); +emit_16(1955); +emit_16(1888); +emit_16(1955); +emit_16(1889); +emit_16(1956); +emit_16(1890); +emit_16(1956); +emit_16(1889); +emit_16(1956); +emit_16(1890); +emit_16(1957); +emit_16(1891); +emit_16(1957); +emit_16(1890); +emit_16(1957); +emit_16(1891); +emit_16(1958); +emit_16(1892); +emit_16(1958); +emit_16(1891); +emit_16(1958); +emit_16(1892); +emit_16(1959); +emit_16(1893); +emit_16(1959); +emit_16(1892); +emit_16(1959); +emit_16(1893); +emit_16(1960); +emit_16(1894); +emit_16(1960); +emit_16(1893); +emit_16(1960); +emit_16(1894); +emit_16(1961); +emit_16(1895); +emit_16(1961); +emit_16(1894); +emit_16(1961); +emit_16(1895); +emit_16(1962); +emit_16(1896); +emit_16(1962); +emit_16(1895); +emit_16(1962); +emit_16(1896); +emit_16(1963); +emit_16(1897); +emit_16(1963); +emit_16(1896); +emit_16(1963); +emit_16(1897); +emit_16(1964); +emit_16(1898); +emit_16(1964); +emit_16(1897); +emit_16(1964); +emit_16(1898); +emit_16(1965); +emit_16(1899); +emit_16(1965); +emit_16(1898); +emit_16(1965); +emit_16(1899); +emit_16(1966); +emit_16(1900); +emit_16(1966); +emit_16(1899); +emit_16(1966); +emit_16(1900); +emit_16(1967); +emit_16(1901); +emit_16(1967); +emit_16(1900); +emit_16(1967); +emit_16(1901); +emit_16(1968); +emit_16(1902); +emit_16(1968); +emit_16(1901); +emit_16(1968); +emit_16(1902); +emit_16(1969); +emit_16(1903); +emit_16(1969); +emit_16(1902); +emit_16(1969); +emit_16(1903); +emit_16(1970); +emit_16(1904); +emit_16(1970); +emit_16(1903); +emit_16(1970); +emit_16(1904); +emit_16(1971); +emit_16(1905); +emit_16(1971); +emit_16(1904); +emit_16(1971); +emit_16(1905); +emit_16(1972); +emit_16(1906); +emit_16(1972); +emit_16(1905); +emit_16(1972); +emit_16(1906); +emit_16(1973); +emit_16(1907); +emit_16(1973); +emit_16(1906); +emit_16(1973); +emit_16(1907); +emit_16(1974); +emit_16(1908); +emit_16(1974); +emit_16(1907); +emit_16(1974); +emit_16(1908); +emit_16(1975); +emit_16(1909); +emit_16(1975); +emit_16(1908); +emit_16(1975); +emit_16(1909); +emit_16(1976); +emit_16(1910); +emit_16(1976); +emit_16(1909); +emit_16(1976); +emit_16(1910); +emit_16(1977); +emit_16(1911); +emit_16(1977); +emit_16(1910); +emit_16(1977); +emit_16(1911); +emit_16(1978); +emit_16(1912); +emit_16(1978); +emit_16(1911); +emit_16(1978); +emit_16(1912); +emit_16(1979); +emit_16(1913); +emit_16(1979); +emit_16(1912); +emit_16(1980); +emit_16(1914); +emit_16(1981); +emit_16(1915); +emit_16(1981); +emit_16(1914); +emit_16(1981); +emit_16(1915); +emit_16(1982); +emit_16(1916); +emit_16(1982); +emit_16(1915); +emit_16(1982); +emit_16(1916); +emit_16(1983); +emit_16(1917); +emit_16(1983); +emit_16(1916); +emit_16(1983); +emit_16(1917); +emit_16(1984); +emit_16(1918); +emit_16(1984); +emit_16(1917); +emit_16(1984); +emit_16(1918); +emit_16(1985); +emit_16(1919); +emit_16(1985); +emit_16(1918); +emit_16(1985); +emit_16(1919); +emit_16(1986); +emit_16(1920); +emit_16(1986); +emit_16(1919); +emit_16(1986); +emit_16(1920); +emit_16(1987); +emit_16(1921); +emit_16(1987); +emit_16(1920); +emit_16(1987); +emit_16(1921); +emit_16(1988); +emit_16(1922); +emit_16(1988); +emit_16(1921); +emit_16(1988); +emit_16(1922); +emit_16(1989); +emit_16(1923); +emit_16(1989); +emit_16(1922); +emit_16(1989); +emit_16(1923); +emit_16(1990); +emit_16(1924); +emit_16(1990); +emit_16(1923); +emit_16(1990); +emit_16(1924); +emit_16(1991); +emit_16(1925); +emit_16(1991); +emit_16(1924); +emit_16(1991); +emit_16(1925); +emit_16(1992); +emit_16(1926); +emit_16(1992); +emit_16(1925); +emit_16(1992); +emit_16(1926); +emit_16(1993); +emit_16(1927); +emit_16(1993); +emit_16(1926); +emit_16(1993); +emit_16(1927); +emit_16(1994); +emit_16(1928); +emit_16(1994); +emit_16(1927); +emit_16(1994); +emit_16(1928); +emit_16(1995); +emit_16(1929); +emit_16(1995); +emit_16(1928); +emit_16(1995); +emit_16(1929); +emit_16(1996); +emit_16(1930); +emit_16(1996); +emit_16(1929); +emit_16(1996); +emit_16(1930); +emit_16(1997); +emit_16(1931); +emit_16(1997); +emit_16(1930); +emit_16(1997); +emit_16(1931); +emit_16(1998); +emit_16(1932); +emit_16(1998); +emit_16(1931); +emit_16(1998); +emit_16(1932); +emit_16(1999); +emit_16(1933); +emit_16(1999); +emit_16(1932); +emit_16(1999); +emit_16(1933); +emit_16(2000); +emit_16(1934); +emit_16(2000); +emit_16(1933); +emit_16(2000); +emit_16(1934); +emit_16(2001); +emit_16(1935); +emit_16(2001); +emit_16(1934); +emit_16(2001); +emit_16(1935); +emit_16(2002); +emit_16(1936); +emit_16(2002); +emit_16(1935); +emit_16(2002); +emit_16(1936); +emit_16(2003); +emit_16(1937); +emit_16(2003); +emit_16(1936); +emit_16(2003); +emit_16(1937); +emit_16(2004); +emit_16(1938); +emit_16(2004); +emit_16(1937); +emit_16(2004); +emit_16(1938); +emit_16(2005); +emit_16(1939); +emit_16(2005); +emit_16(1938); +emit_16(2005); +emit_16(1939); +emit_16(2006); +emit_16(1940); +emit_16(2006); +emit_16(1939); +emit_16(2006); +emit_16(1940); +emit_16(2007); +emit_16(1941); +emit_16(2007); +emit_16(1940); +emit_16(2007); +emit_16(1941); +emit_16(2008); +emit_16(1942); +emit_16(2008); +emit_16(1941); +emit_16(2008); +emit_16(1942); +emit_16(2009); +emit_16(1943); +emit_16(2009); +emit_16(1942); +emit_16(2009); +emit_16(1943); +emit_16(2010); +emit_16(1944); +emit_16(2010); +emit_16(1943); +emit_16(2010); +emit_16(1944); +emit_16(2011); +emit_16(1945); +emit_16(2011); +emit_16(1944); +emit_16(2011); +emit_16(1945); +emit_16(2012); +emit_16(1946); +emit_16(2012); +emit_16(1945); +emit_16(2012); +emit_16(1946); +emit_16(2013); +emit_16(1947); +emit_16(2013); +emit_16(1946); +emit_16(2013); +emit_16(1947); +emit_16(2014); +emit_16(1948); +emit_16(2014); +emit_16(1947); +emit_16(2014); +emit_16(1948); +emit_16(2015); +emit_16(1949); +emit_16(2015); +emit_16(1948); +emit_16(2015); +emit_16(1949); +emit_16(2016); +emit_16(1950); +emit_16(2016); +emit_16(1949); +emit_16(2016); +emit_16(1950); +emit_16(2017); +emit_16(1951); +emit_16(2017); +emit_16(1950); +emit_16(2017); +emit_16(1951); +emit_16(2018); +emit_16(1952); +emit_16(2018); +emit_16(1951); +emit_16(2018); +emit_16(1952); +emit_16(2019); +emit_16(1953); +emit_16(2019); +emit_16(1952); +emit_16(2019); +emit_16(1953); +emit_16(2020); +emit_16(1954); +emit_16(2020); +emit_16(1953); +emit_16(2020); +emit_16(1954); +emit_16(2021); +emit_16(1955); +emit_16(2021); +emit_16(1954); +emit_16(2021); +emit_16(1955); +emit_16(2022); +emit_16(1956); +emit_16(2022); +emit_16(1955); +emit_16(2022); +emit_16(1956); +emit_16(2023); +emit_16(1957); +emit_16(2023); +emit_16(1956); +emit_16(2023); +emit_16(1957); +emit_16(2024); +emit_16(1958); +emit_16(2024); +emit_16(1957); +emit_16(2024); +emit_16(1958); +emit_16(2025); +emit_16(1959); +emit_16(2025); +emit_16(1958); +emit_16(2025); +emit_16(1959); +emit_16(2026); +emit_16(1960); +emit_16(2026); +emit_16(1959); +emit_16(2026); +emit_16(1960); +emit_16(2027); +emit_16(1961); +emit_16(2027); +emit_16(1960); +emit_16(2027); +emit_16(1961); +emit_16(2028); +emit_16(1962); +emit_16(2028); +emit_16(1961); +emit_16(2028); +emit_16(1962); +emit_16(2029); +emit_16(1963); +emit_16(2029); +emit_16(1962); +emit_16(2029); +emit_16(1963); +emit_16(2030); +emit_16(1964); +emit_16(2030); +emit_16(1963); +emit_16(2030); +emit_16(1964); +emit_16(2031); +emit_16(1965); +emit_16(2031); +emit_16(1964); +emit_16(2031); +emit_16(1965); +emit_16(2032); +emit_16(1966); +emit_16(2032); +emit_16(1965); +emit_16(2032); +emit_16(1966); +emit_16(2033); +emit_16(1967); +emit_16(2033); +emit_16(1966); +emit_16(2033); +emit_16(1967); +emit_16(2034); +emit_16(1968); +emit_16(2034); +emit_16(1967); +emit_16(2034); +emit_16(1968); +emit_16(2035); +emit_16(1969); +emit_16(2035); +emit_16(1968); +emit_16(2035); +emit_16(1969); +emit_16(2036); +emit_16(1970); +emit_16(2036); +emit_16(1969); +emit_16(2036); +emit_16(1970); +emit_16(2037); +emit_16(1971); +emit_16(2037); +emit_16(1970); +emit_16(2037); +emit_16(1971); +emit_16(2038); +emit_16(1972); +emit_16(2038); +emit_16(1971); +emit_16(2038); +emit_16(1972); +emit_16(2039); +emit_16(1973); +emit_16(2039); +emit_16(1972); +emit_16(2039); +emit_16(1973); +emit_16(2040); +emit_16(1974); +emit_16(2040); +emit_16(1973); +emit_16(2040); +emit_16(1974); +emit_16(2041); +emit_16(1975); +emit_16(2041); +emit_16(1974); +emit_16(2041); +emit_16(1975); +emit_16(2042); +emit_16(1976); +emit_16(2042); +emit_16(1975); +emit_16(2042); +emit_16(1976); +emit_16(2043); +emit_16(1977); +emit_16(2043); +emit_16(1976); +emit_16(2043); +emit_16(1977); +emit_16(2044); +emit_16(1978); +emit_16(2044); +emit_16(1977); +emit_16(2044); +emit_16(1978); +emit_16(2045); +emit_16(1979); +emit_16(2045); +emit_16(1978); +emit_16(2046); +emit_16(1980); +emit_16(2047); +emit_16(1981); +emit_16(2047); +emit_16(1980); +emit_16(2047); +emit_16(1981); +emit_16(2048); +emit_16(1982); +emit_16(2048); +emit_16(1981); +emit_16(2048); +emit_16(1982); +emit_16(2049); +emit_16(1983); +emit_16(2049); +emit_16(1982); +emit_16(2049); +emit_16(1983); +emit_16(2050); +emit_16(1984); +emit_16(2050); +emit_16(1983); +emit_16(2050); +emit_16(1984); +emit_16(2051); +emit_16(1985); +emit_16(2051); +emit_16(1984); +emit_16(2051); +emit_16(1985); +emit_16(2052); +emit_16(1986); +emit_16(2052); +emit_16(1985); +emit_16(2052); +emit_16(1986); +emit_16(2053); +emit_16(1987); +emit_16(2053); +emit_16(1986); +emit_16(2053); +emit_16(1987); +emit_16(2054); +emit_16(1988); +emit_16(2054); +emit_16(1987); +emit_16(2054); +emit_16(1988); +emit_16(2055); +emit_16(1989); +emit_16(2055); +emit_16(1988); +emit_16(2055); +emit_16(1989); +emit_16(2056); +emit_16(1990); +emit_16(2056); +emit_16(1989); +emit_16(2056); +emit_16(1990); +emit_16(2057); +emit_16(1991); +emit_16(2057); +emit_16(1990); +emit_16(2057); +emit_16(1991); +emit_16(2058); +emit_16(1992); +emit_16(2058); +emit_16(1991); +emit_16(2058); +emit_16(1992); +emit_16(2059); +emit_16(1993); +emit_16(2059); +emit_16(1992); +emit_16(2059); +emit_16(1993); +emit_16(2060); +emit_16(1994); +emit_16(2060); +emit_16(1993); +emit_16(2060); +emit_16(1994); +emit_16(2061); +emit_16(1995); +emit_16(2061); +emit_16(1994); +emit_16(2061); +emit_16(1995); +emit_16(2062); +emit_16(1996); +emit_16(2062); +emit_16(1995); +emit_16(2062); +emit_16(1996); +emit_16(2063); +emit_16(1997); +emit_16(2063); +emit_16(1996); +emit_16(2063); +emit_16(1997); +emit_16(2064); +emit_16(1998); +emit_16(2064); +emit_16(1997); +emit_16(2064); +emit_16(1998); +emit_16(2065); +emit_16(1999); +emit_16(2065); +emit_16(1998); +emit_16(2065); +emit_16(1999); +emit_16(2066); +emit_16(2000); +emit_16(2066); +emit_16(1999); +emit_16(2066); +emit_16(2000); +emit_16(2067); +emit_16(2001); +emit_16(2067); +emit_16(2000); +emit_16(2067); +emit_16(2001); +emit_16(2068); +emit_16(2002); +emit_16(2068); +emit_16(2001); +emit_16(2068); +emit_16(2002); +emit_16(2069); +emit_16(2003); +emit_16(2069); +emit_16(2002); +emit_16(2069); +emit_16(2003); +emit_16(2070); +emit_16(2004); +emit_16(2070); +emit_16(2003); +emit_16(2070); +emit_16(2004); +emit_16(2071); +emit_16(2005); +emit_16(2071); +emit_16(2004); +emit_16(2071); +emit_16(2005); +emit_16(2072); +emit_16(2006); +emit_16(2072); +emit_16(2005); +emit_16(2072); +emit_16(2006); +emit_16(2073); +emit_16(2007); +emit_16(2073); +emit_16(2006); +emit_16(2073); +emit_16(2007); +emit_16(2074); +emit_16(2008); +emit_16(2074); +emit_16(2007); +emit_16(2074); +emit_16(2008); +emit_16(2075); +emit_16(2009); +emit_16(2075); +emit_16(2008); +emit_16(2075); +emit_16(2009); +emit_16(2076); +emit_16(2010); +emit_16(2076); +emit_16(2009); +emit_16(2076); +emit_16(2010); +emit_16(2077); +emit_16(2011); +emit_16(2077); +emit_16(2010); +emit_16(2077); +emit_16(2011); +emit_16(2078); +emit_16(2012); +emit_16(2078); +emit_16(2011); +emit_16(2078); +emit_16(2012); +emit_16(2079); +emit_16(2013); +emit_16(2079); +emit_16(2012); +emit_16(2079); +emit_16(2013); +emit_16(2080); +emit_16(2014); +emit_16(2080); +emit_16(2013); +emit_16(2080); +emit_16(2014); +emit_16(2081); +emit_16(2015); +emit_16(2081); +emit_16(2014); +emit_16(2081); +emit_16(2015); +emit_16(2082); +emit_16(2016); +emit_16(2082); +emit_16(2015); +emit_16(2082); +emit_16(2016); +emit_16(2083); +emit_16(2017); +emit_16(2083); +emit_16(2016); +emit_16(2083); +emit_16(2017); +emit_16(2084); +emit_16(2018); +emit_16(2084); +emit_16(2017); +emit_16(2084); +emit_16(2018); +emit_16(2085); +emit_16(2019); +emit_16(2085); +emit_16(2018); +emit_16(2085); +emit_16(2019); +emit_16(2086); +emit_16(2020); +emit_16(2086); +emit_16(2019); +emit_16(2086); +emit_16(2020); +emit_16(2087); +emit_16(2021); +emit_16(2087); +emit_16(2020); +emit_16(2087); +emit_16(2021); +emit_16(2088); +emit_16(2022); +emit_16(2088); +emit_16(2021); +emit_16(2088); +emit_16(2022); +emit_16(2089); +emit_16(2023); +emit_16(2089); +emit_16(2022); +emit_16(2089); +emit_16(2023); +emit_16(2090); +emit_16(2024); +emit_16(2090); +emit_16(2023); +emit_16(2090); +emit_16(2024); +emit_16(2091); +emit_16(2025); +emit_16(2091); +emit_16(2024); +emit_16(2091); +emit_16(2025); +emit_16(2092); +emit_16(2026); +emit_16(2092); +emit_16(2025); +emit_16(2092); +emit_16(2026); +emit_16(2093); +emit_16(2027); +emit_16(2093); +emit_16(2026); +emit_16(2093); +emit_16(2027); +emit_16(2094); +emit_16(2028); +emit_16(2094); +emit_16(2027); +emit_16(2094); +emit_16(2028); +emit_16(2095); +emit_16(2029); +emit_16(2095); +emit_16(2028); +emit_16(2095); +emit_16(2029); +emit_16(2096); +emit_16(2030); +emit_16(2096); +emit_16(2029); +emit_16(2096); +emit_16(2030); +emit_16(2097); +emit_16(2031); +emit_16(2097); +emit_16(2030); +emit_16(2097); +emit_16(2031); +emit_16(2098); +emit_16(2032); +emit_16(2098); +emit_16(2031); +emit_16(2098); +emit_16(2032); +emit_16(2099); +emit_16(2033); +emit_16(2099); +emit_16(2032); +emit_16(2099); +emit_16(2033); +emit_16(2100); +emit_16(2034); +emit_16(2100); +emit_16(2033); +emit_16(2100); +emit_16(2034); +emit_16(2101); +emit_16(2035); +emit_16(2101); +emit_16(2034); +emit_16(2101); +emit_16(2035); +emit_16(2102); +emit_16(2036); +emit_16(2102); +emit_16(2035); +emit_16(2102); +emit_16(2036); +emit_16(2103); +emit_16(2037); +emit_16(2103); +emit_16(2036); +emit_16(2103); +emit_16(2037); +emit_16(2104); +emit_16(2038); +emit_16(2104); +emit_16(2037); +emit_16(2104); +emit_16(2038); +emit_16(2105); +emit_16(2039); +emit_16(2105); +emit_16(2038); +emit_16(2105); +emit_16(2039); +emit_16(2106); +emit_16(2040); +emit_16(2106); +emit_16(2039); +emit_16(2106); +emit_16(2040); +emit_16(2107); +emit_16(2041); +emit_16(2107); +emit_16(2040); +emit_16(2107); +emit_16(2041); +emit_16(2108); +emit_16(2042); +emit_16(2108); +emit_16(2041); +emit_16(2108); +emit_16(2042); +emit_16(2109); +emit_16(2043); +emit_16(2109); +emit_16(2042); +emit_16(2109); +emit_16(2043); +emit_16(2110); +emit_16(2044); +emit_16(2110); +emit_16(2043); +emit_16(2110); +emit_16(2044); +emit_16(2111); +emit_16(2045); +emit_16(2111); +emit_16(2044); +emit_16(2112); +emit_16(2046); +emit_16(2113); +emit_16(2047); +emit_16(2113); +emit_16(2046); +emit_16(2113); +emit_16(2047); +emit_16(2114); +emit_16(2048); +emit_16(2114); +emit_16(2047); +emit_16(2114); +emit_16(2048); +emit_16(2115); +emit_16(2049); +emit_16(2115); +emit_16(2048); +emit_16(2115); +emit_16(2049); +emit_16(2116); +emit_16(2050); +emit_16(2116); +emit_16(2049); +emit_16(2116); +emit_16(2050); +emit_16(2117); +emit_16(2051); +emit_16(2117); +emit_16(2050); +emit_16(2117); +emit_16(2051); +emit_16(2118); +emit_16(2052); +emit_16(2118); +emit_16(2051); +emit_16(2118); +emit_16(2052); +emit_16(2119); +emit_16(2053); +emit_16(2119); +emit_16(2052); +emit_16(2119); +emit_16(2053); +emit_16(2120); +emit_16(2054); +emit_16(2120); +emit_16(2053); +emit_16(2120); +emit_16(2054); +emit_16(2121); +emit_16(2055); +emit_16(2121); +emit_16(2054); +emit_16(2121); +emit_16(2055); +emit_16(2122); +emit_16(2056); +emit_16(2122); +emit_16(2055); +emit_16(2122); +emit_16(2056); +emit_16(2123); +emit_16(2057); +emit_16(2123); +emit_16(2056); +emit_16(2123); +emit_16(2057); +emit_16(2124); +emit_16(2058); +emit_16(2124); +emit_16(2057); +emit_16(2124); +emit_16(2058); +emit_16(2125); +emit_16(2059); +emit_16(2125); +emit_16(2058); +emit_16(2125); +emit_16(2059); +emit_16(2126); +emit_16(2060); +emit_16(2126); +emit_16(2059); +emit_16(2126); +emit_16(2060); +emit_16(2127); +emit_16(2061); +emit_16(2127); +emit_16(2060); +emit_16(2127); +emit_16(2061); +emit_16(2128); +emit_16(2062); +emit_16(2128); +emit_16(2061); +emit_16(2128); +emit_16(2062); +emit_16(2129); +emit_16(2063); +emit_16(2129); +emit_16(2062); +emit_16(2129); +emit_16(2063); +emit_16(2130); +emit_16(2064); +emit_16(2130); +emit_16(2063); +emit_16(2130); +emit_16(2064); +emit_16(2131); +emit_16(2065); +emit_16(2131); +emit_16(2064); +emit_16(2131); +emit_16(2065); +emit_16(2132); +emit_16(2066); +emit_16(2132); +emit_16(2065); +emit_16(2132); +emit_16(2066); +emit_16(2133); +emit_16(2067); +emit_16(2133); +emit_16(2066); +emit_16(2133); +emit_16(2067); +emit_16(2134); +emit_16(2068); +emit_16(2134); +emit_16(2067); +emit_16(2134); +emit_16(2068); +emit_16(2135); +emit_16(2069); +emit_16(2135); +emit_16(2068); +emit_16(2135); +emit_16(2069); +emit_16(2136); +emit_16(2070); +emit_16(2136); +emit_16(2069); +emit_16(2136); +emit_16(2070); +emit_16(2137); +emit_16(2071); +emit_16(2137); +emit_16(2070); +emit_16(2137); +emit_16(2071); +emit_16(2138); +emit_16(2072); +emit_16(2138); +emit_16(2071); +emit_16(2138); +emit_16(2072); +emit_16(2139); +emit_16(2073); +emit_16(2139); +emit_16(2072); +emit_16(2139); +emit_16(2073); +emit_16(2140); +emit_16(2074); +emit_16(2140); +emit_16(2073); +emit_16(2140); +emit_16(2074); +emit_16(2141); +emit_16(2075); +emit_16(2141); +emit_16(2074); +emit_16(2141); +emit_16(2075); +emit_16(2142); +emit_16(2076); +emit_16(2142); +emit_16(2075); +emit_16(2142); +emit_16(2076); +emit_16(2143); +emit_16(2077); +emit_16(2143); +emit_16(2076); +emit_16(2143); +emit_16(2077); +emit_16(2144); +emit_16(2078); +emit_16(2144); +emit_16(2077); +emit_16(2144); +emit_16(2078); +emit_16(2145); +emit_16(2079); +emit_16(2145); +emit_16(2078); +emit_16(2145); +emit_16(2079); +emit_16(2146); +emit_16(2080); +emit_16(2146); +emit_16(2079); +emit_16(2146); +emit_16(2080); +emit_16(2147); +emit_16(2081); +emit_16(2147); +emit_16(2080); +emit_16(2147); +emit_16(2081); +emit_16(2148); +emit_16(2082); +emit_16(2148); +emit_16(2081); +emit_16(2148); +emit_16(2082); +emit_16(2149); +emit_16(2083); +emit_16(2149); +emit_16(2082); +emit_16(2149); +emit_16(2083); +emit_16(2150); +emit_16(2084); +emit_16(2150); +emit_16(2083); +emit_16(2150); +emit_16(2084); +emit_16(2151); +emit_16(2085); +emit_16(2151); +emit_16(2084); +emit_16(2151); +emit_16(2085); +emit_16(2152); +emit_16(2086); +emit_16(2152); +emit_16(2085); +emit_16(2152); +emit_16(2086); +emit_16(2153); +emit_16(2087); +emit_16(2153); +emit_16(2086); +emit_16(2153); +emit_16(2087); +emit_16(2154); +emit_16(2088); +emit_16(2154); +emit_16(2087); +emit_16(2154); +emit_16(2088); +emit_16(2155); +emit_16(2089); +emit_16(2155); +emit_16(2088); +emit_16(2155); +emit_16(2089); +emit_16(2156); +emit_16(2090); +emit_16(2156); +emit_16(2089); +emit_16(2156); +emit_16(2090); +emit_16(2157); +emit_16(2091); +emit_16(2157); +emit_16(2090); +emit_16(2157); +emit_16(2091); +emit_16(2158); +emit_16(2092); +emit_16(2158); +emit_16(2091); +emit_16(2158); +emit_16(2092); +emit_16(2159); +emit_16(2093); +emit_16(2159); +emit_16(2092); +emit_16(2159); +emit_16(2093); +emit_16(2160); +emit_16(2094); +emit_16(2160); +emit_16(2093); +emit_16(2160); +emit_16(2094); +emit_16(2161); +emit_16(2095); +emit_16(2161); +emit_16(2094); +emit_16(2161); +emit_16(2095); +emit_16(2162); +emit_16(2096); +emit_16(2162); +emit_16(2095); +emit_16(2162); +emit_16(2096); +emit_16(2163); +emit_16(2097); +emit_16(2163); +emit_16(2096); +emit_16(2163); +emit_16(2097); +emit_16(2164); +emit_16(2098); +emit_16(2164); +emit_16(2097); +emit_16(2164); +emit_16(2098); +emit_16(2165); +emit_16(2099); +emit_16(2165); +emit_16(2098); +emit_16(2165); +emit_16(2099); +emit_16(2166); +emit_16(2100); +emit_16(2166); +emit_16(2099); +emit_16(2166); +emit_16(2100); +emit_16(2167); +emit_16(2101); +emit_16(2167); +emit_16(2100); +emit_16(2167); +emit_16(2101); +emit_16(2168); +emit_16(2102); +emit_16(2168); +emit_16(2101); +emit_16(2168); +emit_16(2102); +emit_16(2169); +emit_16(2103); +emit_16(2169); +emit_16(2102); +emit_16(2169); +emit_16(2103); +emit_16(2170); +emit_16(2104); +emit_16(2170); +emit_16(2103); +emit_16(2170); +emit_16(2104); +emit_16(2171); +emit_16(2105); +emit_16(2171); +emit_16(2104); +emit_16(2171); +emit_16(2105); +emit_16(2172); +emit_16(2106); +emit_16(2172); +emit_16(2105); +emit_16(2172); +emit_16(2106); +emit_16(2173); +emit_16(2107); +emit_16(2173); +emit_16(2106); +emit_16(2173); +emit_16(2107); +emit_16(2174); +emit_16(2108); +emit_16(2174); +emit_16(2107); +emit_16(2174); +emit_16(2108); +emit_16(2175); +emit_16(2109); +emit_16(2175); +emit_16(2108); +emit_16(2175); +emit_16(2109); +emit_16(2176); +emit_16(2110); +emit_16(2176); +emit_16(2109); +emit_16(2176); +emit_16(2110); +emit_16(2177); +emit_16(2111); +emit_16(2177); +emit_16(2110); +emit_16(2178); +emit_16(2112); +emit_16(2179); +emit_16(2113); +emit_16(2179); +emit_16(2112); +emit_16(2179); +emit_16(2113); +emit_16(2180); +emit_16(2114); +emit_16(2180); +emit_16(2113); +emit_16(2180); +emit_16(2114); +emit_16(2181); +emit_16(2115); +emit_16(2181); +emit_16(2114); +emit_16(2181); +emit_16(2115); +emit_16(2182); +emit_16(2116); +emit_16(2182); +emit_16(2115); +emit_16(2182); +emit_16(2116); +emit_16(2183); +emit_16(2117); +emit_16(2183); +emit_16(2116); +emit_16(2183); +emit_16(2117); +emit_16(2184); +emit_16(2118); +emit_16(2184); +emit_16(2117); +emit_16(2184); +emit_16(2118); +emit_16(2185); +emit_16(2119); +emit_16(2185); +emit_16(2118); +emit_16(2185); +emit_16(2119); +emit_16(2186); +emit_16(2120); +emit_16(2186); +emit_16(2119); +emit_16(2186); +emit_16(2120); +emit_16(2187); +emit_16(2121); +emit_16(2187); +emit_16(2120); +emit_16(2187); +emit_16(2121); +emit_16(2188); +emit_16(2122); +emit_16(2188); +emit_16(2121); +emit_16(2188); +emit_16(2122); +emit_16(2189); +emit_16(2123); +emit_16(2189); +emit_16(2122); +emit_16(2189); +emit_16(2123); +emit_16(2190); +emit_16(2124); +emit_16(2190); +emit_16(2123); +emit_16(2190); +emit_16(2124); +emit_16(2191); +emit_16(2125); +emit_16(2191); +emit_16(2124); +emit_16(2191); +emit_16(2125); +emit_16(2192); +emit_16(2126); +emit_16(2192); +emit_16(2125); +emit_16(2192); +emit_16(2126); +emit_16(2193); +emit_16(2127); +emit_16(2193); +emit_16(2126); +emit_16(2193); +emit_16(2127); +emit_16(2194); +emit_16(2128); +emit_16(2194); +emit_16(2127); +emit_16(2194); +emit_16(2128); +emit_16(2195); +emit_16(2129); +emit_16(2195); +emit_16(2128); +emit_16(2195); +emit_16(2129); +emit_16(2196); +emit_16(2130); +emit_16(2196); +emit_16(2129); +emit_16(2196); +emit_16(2130); +emit_16(2197); +emit_16(2131); +emit_16(2197); +emit_16(2130); +emit_16(2197); +emit_16(2131); +emit_16(2198); +emit_16(2132); +emit_16(2198); +emit_16(2131); +emit_16(2198); +emit_16(2132); +emit_16(2199); +emit_16(2133); +emit_16(2199); +emit_16(2132); +emit_16(2199); +emit_16(2133); +emit_16(2200); +emit_16(2134); +emit_16(2200); +emit_16(2133); +emit_16(2200); +emit_16(2134); +emit_16(2201); +emit_16(2135); +emit_16(2201); +emit_16(2134); +emit_16(2201); +emit_16(2135); +emit_16(2202); +emit_16(2136); +emit_16(2202); +emit_16(2135); +emit_16(2202); +emit_16(2136); +emit_16(2203); +emit_16(2137); +emit_16(2203); +emit_16(2136); +emit_16(2203); +emit_16(2137); +emit_16(2204); +emit_16(2138); +emit_16(2204); +emit_16(2137); +emit_16(2204); +emit_16(2138); +emit_16(2205); +emit_16(2139); +emit_16(2205); +emit_16(2138); +emit_16(2205); +emit_16(2139); +emit_16(2206); +emit_16(2140); +emit_16(2206); +emit_16(2139); +emit_16(2206); +emit_16(2140); +emit_16(2207); +emit_16(2141); +emit_16(2207); +emit_16(2140); +emit_16(2207); +emit_16(2141); +emit_16(2208); +emit_16(2142); +emit_16(2208); +emit_16(2141); +emit_16(2208); +emit_16(2142); +emit_16(2209); +emit_16(2143); +emit_16(2209); +emit_16(2142); +emit_16(2209); +emit_16(2143); +emit_16(2210); +emit_16(2144); +emit_16(2210); +emit_16(2143); +emit_16(2210); +emit_16(2144); +emit_16(2211); +emit_16(2145); +emit_16(2211); +emit_16(2144); +emit_16(2211); +emit_16(2145); +emit_16(2212); +emit_16(2146); +emit_16(2212); +emit_16(2145); +emit_16(2212); +emit_16(2146); +emit_16(2213); +emit_16(2147); +emit_16(2213); +emit_16(2146); +emit_16(2213); +emit_16(2147); +emit_16(2214); +emit_16(2148); +emit_16(2214); +emit_16(2147); +emit_16(2214); +emit_16(2148); +emit_16(2215); +emit_16(2149); +emit_16(2215); +emit_16(2148); +emit_16(2215); +emit_16(2149); +emit_16(2216); +emit_16(2150); +emit_16(2216); +emit_16(2149); +emit_16(2216); +emit_16(2150); +emit_16(2217); +emit_16(2151); +emit_16(2217); +emit_16(2150); +emit_16(2217); +emit_16(2151); +emit_16(2218); +emit_16(2152); +emit_16(2218); +emit_16(2151); +emit_16(2218); +emit_16(2152); +emit_16(2219); +emit_16(2153); +emit_16(2219); +emit_16(2152); +emit_16(2219); +emit_16(2153); +emit_16(2220); +emit_16(2154); +emit_16(2220); +emit_16(2153); +emit_16(2220); +emit_16(2154); +emit_16(2221); +emit_16(2155); +emit_16(2221); +emit_16(2154); +emit_16(2221); +emit_16(2155); +emit_16(2222); +emit_16(2156); +emit_16(2222); +emit_16(2155); +emit_16(2222); +emit_16(2156); +emit_16(2223); +emit_16(2157); +emit_16(2223); +emit_16(2156); +emit_16(2223); +emit_16(2157); +emit_16(2224); +emit_16(2158); +emit_16(2224); +emit_16(2157); +emit_16(2224); +emit_16(2158); +emit_16(2225); +emit_16(2159); +emit_16(2225); +emit_16(2158); +emit_16(2225); +emit_16(2159); +emit_16(2226); +emit_16(2160); +emit_16(2226); +emit_16(2159); +emit_16(2226); +emit_16(2160); +emit_16(2227); +emit_16(2161); +emit_16(2227); +emit_16(2160); +emit_16(2227); +emit_16(2161); +emit_16(2228); +emit_16(2162); +emit_16(2228); +emit_16(2161); +emit_16(2228); +emit_16(2162); +emit_16(2229); +emit_16(2163); +emit_16(2229); +emit_16(2162); +emit_16(2229); +emit_16(2163); +emit_16(2230); +emit_16(2164); +emit_16(2230); +emit_16(2163); +emit_16(2230); +emit_16(2164); +emit_16(2231); +emit_16(2165); +emit_16(2231); +emit_16(2164); +emit_16(2231); +emit_16(2165); +emit_16(2232); +emit_16(2166); +emit_16(2232); +emit_16(2165); +emit_16(2232); +emit_16(2166); +emit_16(2233); +emit_16(2167); +emit_16(2233); +emit_16(2166); +emit_16(2233); +emit_16(2167); +emit_16(2234); +emit_16(2168); +emit_16(2234); +emit_16(2167); +emit_16(2234); +emit_16(2168); +emit_16(2235); +emit_16(2169); +emit_16(2235); +emit_16(2168); +emit_16(2235); +emit_16(2169); +emit_16(2236); +emit_16(2170); +emit_16(2236); +emit_16(2169); +emit_16(2236); +emit_16(2170); +emit_16(2237); +emit_16(2171); +emit_16(2237); +emit_16(2170); +emit_16(2237); +emit_16(2171); +emit_16(2238); +emit_16(2172); +emit_16(2238); +emit_16(2171); +emit_16(2238); +emit_16(2172); +emit_16(2239); +emit_16(2173); +emit_16(2239); +emit_16(2172); +emit_16(2239); +emit_16(2173); +emit_16(2240); +emit_16(2174); +emit_16(2240); +emit_16(2173); +emit_16(2240); +emit_16(2174); +emit_16(2241); +emit_16(2175); +emit_16(2241); +emit_16(2174); +emit_16(2241); +emit_16(2175); +emit_16(2242); +emit_16(2176); +emit_16(2242); +emit_16(2175); +emit_16(2242); +emit_16(2176); +emit_16(2243); +emit_16(2177); +emit_16(2243); +emit_16(2176); +emit_start(Landscape06Idx) +emit_16(0); +emit_16(1); +emit_16(2); +emit_16(3); +emit_16(2); +emit_16(1); +emit_16(2); +emit_16(3); +emit_16(4); +emit_16(5); +emit_16(4); +emit_16(3); +emit_16(4); +emit_16(5); +emit_16(6); +emit_16(7); +emit_16(6); +emit_16(5); +emit_16(6); +emit_16(7); +emit_16(8); +emit_16(9); +emit_16(8); +emit_16(7); +emit_16(8); +emit_16(9); +emit_16(10); +emit_16(11); +emit_16(10); +emit_16(9); +emit_16(10); +emit_16(11); +emit_16(12); +emit_16(13); +emit_16(12); +emit_16(11); +emit_16(12); +emit_16(13); +emit_16(14); +emit_16(15); +emit_16(14); +emit_16(13); +emit_16(14); +emit_16(15); +emit_16(16); +emit_16(17); +emit_16(16); +emit_16(15); +emit_16(16); +emit_16(17); +emit_16(18); +emit_16(19); +emit_16(18); +emit_16(17); +emit_16(18); +emit_16(19); +emit_16(20); +emit_16(21); +emit_16(20); +emit_16(19); +emit_16(20); +emit_16(21); +emit_16(22); +emit_16(23); +emit_16(22); +emit_16(21); +emit_16(22); +emit_16(23); +emit_16(24); +emit_16(25); +emit_16(24); +emit_16(23); +emit_16(24); +emit_16(25); +emit_16(26); +emit_16(27); +emit_16(26); +emit_16(25); +emit_16(26); +emit_16(27); +emit_16(28); +emit_16(29); +emit_16(28); +emit_16(27); +emit_16(28); +emit_16(29); +emit_16(30); +emit_16(31); +emit_16(30); +emit_16(29); +emit_16(30); +emit_16(31); +emit_16(32); +emit_16(33); +emit_16(32); +emit_16(31); +emit_16(32); +emit_16(33); +emit_16(34); +emit_16(35); +emit_16(34); +emit_16(33); +emit_16(34); +emit_16(35); +emit_16(36); +emit_16(37); +emit_16(36); +emit_16(35); +emit_16(36); +emit_16(37); +emit_16(38); +emit_16(39); +emit_16(38); +emit_16(37); +emit_16(38); +emit_16(39); +emit_16(40); +emit_16(41); +emit_16(40); +emit_16(39); +emit_16(40); +emit_16(41); +emit_16(42); +emit_16(43); +emit_16(42); +emit_16(41); +emit_16(42); +emit_16(43); +emit_16(44); +emit_16(45); +emit_16(44); +emit_16(43); +emit_16(44); +emit_16(45); +emit_16(46); +emit_16(47); +emit_16(46); +emit_16(45); +emit_16(46); +emit_16(47); +emit_16(48); +emit_16(49); +emit_16(48); +emit_16(47); +emit_16(48); +emit_16(49); +emit_16(50); +emit_16(51); +emit_16(50); +emit_16(49); +emit_16(50); +emit_16(51); +emit_16(52); +emit_16(53); +emit_16(52); +emit_16(51); +emit_16(52); +emit_16(53); +emit_16(54); +emit_16(55); +emit_16(54); +emit_16(53); +emit_16(54); +emit_16(55); +emit_16(56); +emit_16(57); +emit_16(56); +emit_16(55); +emit_16(56); +emit_16(57); +emit_16(58); +emit_16(59); +emit_16(58); +emit_16(57); +emit_16(58); +emit_16(59); +emit_16(60); +emit_16(61); +emit_16(60); +emit_16(59); +emit_16(60); +emit_16(61); +emit_16(62); +emit_16(63); +emit_16(62); +emit_16(61); +emit_16(62); +emit_16(63); +emit_16(64); +emit_16(65); +emit_16(64); +emit_16(63); +emit_16(64); +emit_16(65); +emit_16(66); +emit_16(67); +emit_16(66); +emit_16(65); +emit_16(66); +emit_16(67); +emit_16(68); +emit_16(69); +emit_16(68); +emit_16(67); +emit_16(68); +emit_16(69); +emit_16(70); +emit_16(71); +emit_16(70); +emit_16(69); +emit_16(70); +emit_16(71); +emit_16(72); +emit_16(73); +emit_16(72); +emit_16(71); +emit_16(72); +emit_16(73); +emit_16(74); +emit_16(75); +emit_16(74); +emit_16(73); +emit_16(74); +emit_16(75); +emit_16(76); +emit_16(77); +emit_16(76); +emit_16(75); +emit_16(76); +emit_16(77); +emit_16(78); +emit_16(79); +emit_16(78); +emit_16(77); +emit_16(78); +emit_16(79); +emit_16(80); +emit_16(81); +emit_16(80); +emit_16(79); +emit_16(80); +emit_16(81); +emit_16(82); +emit_16(83); +emit_16(82); +emit_16(81); +emit_16(82); +emit_16(83); +emit_16(84); +emit_16(85); +emit_16(84); +emit_16(83); +emit_16(84); +emit_16(85); +emit_16(86); +emit_16(87); +emit_16(86); +emit_16(85); +emit_16(86); +emit_16(87); +emit_16(88); +emit_16(89); +emit_16(88); +emit_16(87); +emit_16(88); +emit_16(89); +emit_16(90); +emit_16(91); +emit_16(90); +emit_16(89); +emit_16(90); +emit_16(91); +emit_16(92); +emit_16(93); +emit_16(92); +emit_16(91); +emit_16(92); +emit_16(93); +emit_16(94); +emit_16(95); +emit_16(94); +emit_16(93); +emit_16(94); +emit_16(95); +emit_16(96); +emit_16(97); +emit_16(96); +emit_16(95); +emit_16(96); +emit_16(97); +emit_16(98); +emit_16(99); +emit_16(98); +emit_16(97); +emit_16(98); +emit_16(99); +emit_16(100); +emit_16(101); +emit_16(100); +emit_16(99); +emit_16(100); +emit_16(101); +emit_16(102); +emit_16(103); +emit_16(102); +emit_16(101); +emit_16(102); +emit_16(103); +emit_16(104); +emit_16(105); +emit_16(104); +emit_16(103); +emit_16(104); +emit_16(105); +emit_16(106); +emit_16(107); +emit_16(106); +emit_16(105); +emit_16(106); +emit_16(107); +emit_16(108); +emit_16(109); +emit_16(108); +emit_16(107); +emit_16(108); +emit_16(109); +emit_16(110); +emit_16(111); +emit_16(110); +emit_16(109); +emit_16(110); +emit_16(111); +emit_16(112); +emit_16(113); +emit_16(112); +emit_16(111); +emit_16(112); +emit_16(113); +emit_16(114); +emit_16(115); +emit_16(114); +emit_16(113); +emit_16(114); +emit_16(115); +emit_16(116); +emit_16(117); +emit_16(116); +emit_16(115); +emit_16(116); +emit_16(117); +emit_16(118); +emit_16(119); +emit_16(118); +emit_16(117); +emit_16(118); +emit_16(119); +emit_16(120); +emit_16(121); +emit_16(120); +emit_16(119); +emit_16(120); +emit_16(121); +emit_16(122); +emit_16(123); +emit_16(122); +emit_16(121); +emit_16(122); +emit_16(123); +emit_16(124); +emit_16(125); +emit_16(124); +emit_16(123); +emit_16(124); +emit_16(125); +emit_16(126); +emit_16(127); +emit_16(126); +emit_16(125); +emit_16(126); +emit_16(127); +emit_16(128); +emit_16(129); +emit_16(128); +emit_16(127); +emit_16(128); +emit_16(129); +emit_16(130); +emit_16(131); +emit_16(130); +emit_16(129); +emit_16(132); +emit_16(0); +emit_16(133); +emit_16(2); +emit_16(133); +emit_16(0); +emit_16(133); +emit_16(2); +emit_16(134); +emit_16(4); +emit_16(134); +emit_16(2); +emit_16(134); +emit_16(4); +emit_16(135); +emit_16(6); +emit_16(135); +emit_16(4); +emit_16(135); +emit_16(6); +emit_16(136); +emit_16(8); +emit_16(136); +emit_16(6); +emit_16(136); +emit_16(8); +emit_16(137); +emit_16(10); +emit_16(137); +emit_16(8); +emit_16(137); +emit_16(10); +emit_16(138); +emit_16(12); +emit_16(138); +emit_16(10); +emit_16(138); +emit_16(12); +emit_16(139); +emit_16(14); +emit_16(139); +emit_16(12); +emit_16(139); +emit_16(14); +emit_16(140); +emit_16(16); +emit_16(140); +emit_16(14); +emit_16(140); +emit_16(16); +emit_16(141); +emit_16(18); +emit_16(141); +emit_16(16); +emit_16(141); +emit_16(18); +emit_16(142); +emit_16(20); +emit_16(142); +emit_16(18); +emit_16(142); +emit_16(20); +emit_16(143); +emit_16(22); +emit_16(143); +emit_16(20); +emit_16(143); +emit_16(22); +emit_16(144); +emit_16(24); +emit_16(144); +emit_16(22); +emit_16(144); +emit_16(24); +emit_16(145); +emit_16(26); +emit_16(145); +emit_16(24); +emit_16(145); +emit_16(26); +emit_16(146); +emit_16(28); +emit_16(146); +emit_16(26); +emit_16(146); +emit_16(28); +emit_16(147); +emit_16(30); +emit_16(147); +emit_16(28); +emit_16(147); +emit_16(30); +emit_16(148); +emit_16(32); +emit_16(148); +emit_16(30); +emit_16(148); +emit_16(32); +emit_16(149); +emit_16(34); +emit_16(149); +emit_16(32); +emit_16(149); +emit_16(34); +emit_16(150); +emit_16(36); +emit_16(150); +emit_16(34); +emit_16(150); +emit_16(36); +emit_16(151); +emit_16(38); +emit_16(151); +emit_16(36); +emit_16(151); +emit_16(38); +emit_16(152); +emit_16(40); +emit_16(152); +emit_16(38); +emit_16(152); +emit_16(40); +emit_16(153); +emit_16(42); +emit_16(153); +emit_16(40); +emit_16(153); +emit_16(42); +emit_16(154); +emit_16(44); +emit_16(154); +emit_16(42); +emit_16(154); +emit_16(44); +emit_16(155); +emit_16(46); +emit_16(155); +emit_16(44); +emit_16(155); +emit_16(46); +emit_16(156); +emit_16(48); +emit_16(156); +emit_16(46); +emit_16(156); +emit_16(48); +emit_16(157); +emit_16(50); +emit_16(157); +emit_16(48); +emit_16(157); +emit_16(50); +emit_16(158); +emit_16(52); +emit_16(158); +emit_16(50); +emit_16(158); +emit_16(52); +emit_16(159); +emit_16(54); +emit_16(159); +emit_16(52); +emit_16(159); +emit_16(54); +emit_16(160); +emit_16(56); +emit_16(160); +emit_16(54); +emit_16(160); +emit_16(56); +emit_16(161); +emit_16(58); +emit_16(161); +emit_16(56); +emit_16(161); +emit_16(58); +emit_16(162); +emit_16(60); +emit_16(162); +emit_16(58); +emit_16(162); +emit_16(60); +emit_16(163); +emit_16(62); +emit_16(163); +emit_16(60); +emit_16(163); +emit_16(62); +emit_16(164); +emit_16(64); +emit_16(164); +emit_16(62); +emit_16(164); +emit_16(64); +emit_16(165); +emit_16(66); +emit_16(165); +emit_16(64); +emit_16(165); +emit_16(66); +emit_16(166); +emit_16(68); +emit_16(166); +emit_16(66); +emit_16(166); +emit_16(68); +emit_16(167); +emit_16(70); +emit_16(167); +emit_16(68); +emit_16(167); +emit_16(70); +emit_16(168); +emit_16(72); +emit_16(168); +emit_16(70); +emit_16(168); +emit_16(72); +emit_16(169); +emit_16(74); +emit_16(169); +emit_16(72); +emit_16(169); +emit_16(74); +emit_16(170); +emit_16(76); +emit_16(170); +emit_16(74); +emit_16(170); +emit_16(76); +emit_16(171); +emit_16(78); +emit_16(171); +emit_16(76); +emit_16(171); +emit_16(78); +emit_16(172); +emit_16(80); +emit_16(172); +emit_16(78); +emit_16(172); +emit_16(80); +emit_16(173); +emit_16(82); +emit_16(173); +emit_16(80); +emit_16(173); +emit_16(82); +emit_16(174); +emit_16(84); +emit_16(174); +emit_16(82); +emit_16(174); +emit_16(84); +emit_16(175); +emit_16(86); +emit_16(175); +emit_16(84); +emit_16(175); +emit_16(86); +emit_16(176); +emit_16(88); +emit_16(176); +emit_16(86); +emit_16(176); +emit_16(88); +emit_16(177); +emit_16(90); +emit_16(177); +emit_16(88); +emit_16(177); +emit_16(90); +emit_16(178); +emit_16(92); +emit_16(178); +emit_16(90); +emit_16(178); +emit_16(92); +emit_16(179); +emit_16(94); +emit_16(179); +emit_16(92); +emit_16(179); +emit_16(94); +emit_16(180); +emit_16(96); +emit_16(180); +emit_16(94); +emit_16(180); +emit_16(96); +emit_16(181); +emit_16(98); +emit_16(181); +emit_16(96); +emit_16(181); +emit_16(98); +emit_16(182); +emit_16(100); +emit_16(182); +emit_16(98); +emit_16(182); +emit_16(100); +emit_16(183); +emit_16(102); +emit_16(183); +emit_16(100); +emit_16(183); +emit_16(102); +emit_16(184); +emit_16(104); +emit_16(184); +emit_16(102); +emit_16(184); +emit_16(104); +emit_16(185); +emit_16(106); +emit_16(185); +emit_16(104); +emit_16(185); +emit_16(106); +emit_16(186); +emit_16(108); +emit_16(186); +emit_16(106); +emit_16(186); +emit_16(108); +emit_16(187); +emit_16(110); +emit_16(187); +emit_16(108); +emit_16(187); +emit_16(110); +emit_16(188); +emit_16(112); +emit_16(188); +emit_16(110); +emit_16(188); +emit_16(112); +emit_16(189); +emit_16(114); +emit_16(189); +emit_16(112); +emit_16(189); +emit_16(114); +emit_16(190); +emit_16(116); +emit_16(190); +emit_16(114); +emit_16(190); +emit_16(116); +emit_16(191); +emit_16(118); +emit_16(191); +emit_16(116); +emit_16(191); +emit_16(118); +emit_16(192); +emit_16(120); +emit_16(192); +emit_16(118); +emit_16(192); +emit_16(120); +emit_16(193); +emit_16(122); +emit_16(193); +emit_16(120); +emit_16(193); +emit_16(122); +emit_16(194); +emit_16(124); +emit_16(194); +emit_16(122); +emit_16(194); +emit_16(124); +emit_16(195); +emit_16(126); +emit_16(195); +emit_16(124); +emit_16(195); +emit_16(126); +emit_16(196); +emit_16(128); +emit_16(196); +emit_16(126); +emit_16(196); +emit_16(128); +emit_16(197); +emit_16(130); +emit_16(197); +emit_16(128); +emit_16(198); +emit_16(132); +emit_16(199); +emit_16(133); +emit_16(199); +emit_16(132); +emit_16(199); +emit_16(133); +emit_16(200); +emit_16(134); +emit_16(200); +emit_16(133); +emit_16(200); +emit_16(134); +emit_16(201); +emit_16(135); +emit_16(201); +emit_16(134); +emit_16(201); +emit_16(135); +emit_16(202); +emit_16(136); +emit_16(202); +emit_16(135); +emit_16(202); +emit_16(136); +emit_16(203); +emit_16(137); +emit_16(203); +emit_16(136); +emit_16(203); +emit_16(137); +emit_16(204); +emit_16(138); +emit_16(204); +emit_16(137); +emit_16(204); +emit_16(138); +emit_16(205); +emit_16(139); +emit_16(205); +emit_16(138); +emit_16(205); +emit_16(139); +emit_16(206); +emit_16(140); +emit_16(206); +emit_16(139); +emit_16(206); +emit_16(140); +emit_16(207); +emit_16(141); +emit_16(207); +emit_16(140); +emit_16(207); +emit_16(141); +emit_16(208); +emit_16(142); +emit_16(208); +emit_16(141); +emit_16(208); +emit_16(142); +emit_16(209); +emit_16(143); +emit_16(209); +emit_16(142); +emit_16(209); +emit_16(143); +emit_16(210); +emit_16(144); +emit_16(210); +emit_16(143); +emit_16(210); +emit_16(144); +emit_16(211); +emit_16(145); +emit_16(211); +emit_16(144); +emit_16(211); +emit_16(145); +emit_16(212); +emit_16(146); +emit_16(212); +emit_16(145); +emit_16(212); +emit_16(146); +emit_16(213); +emit_16(147); +emit_16(213); +emit_16(146); +emit_16(213); +emit_16(147); +emit_16(214); +emit_16(148); +emit_16(214); +emit_16(147); +emit_16(214); +emit_16(148); +emit_16(215); +emit_16(149); +emit_16(215); +emit_16(148); +emit_16(215); +emit_16(149); +emit_16(216); +emit_16(150); +emit_16(216); +emit_16(149); +emit_16(216); +emit_16(150); +emit_16(217); +emit_16(151); +emit_16(217); +emit_16(150); +emit_16(217); +emit_16(151); +emit_16(218); +emit_16(152); +emit_16(218); +emit_16(151); +emit_16(218); +emit_16(152); +emit_16(219); +emit_16(153); +emit_16(219); +emit_16(152); +emit_16(219); +emit_16(153); +emit_16(220); +emit_16(154); +emit_16(220); +emit_16(153); +emit_16(220); +emit_16(154); +emit_16(221); +emit_16(155); +emit_16(221); +emit_16(154); +emit_16(221); +emit_16(155); +emit_16(222); +emit_16(156); +emit_16(222); +emit_16(155); +emit_16(222); +emit_16(156); +emit_16(223); +emit_16(157); +emit_16(223); +emit_16(156); +emit_16(223); +emit_16(157); +emit_16(224); +emit_16(158); +emit_16(224); +emit_16(157); +emit_16(224); +emit_16(158); +emit_16(225); +emit_16(159); +emit_16(225); +emit_16(158); +emit_16(225); +emit_16(159); +emit_16(226); +emit_16(160); +emit_16(226); +emit_16(159); +emit_16(226); +emit_16(160); +emit_16(227); +emit_16(161); +emit_16(227); +emit_16(160); +emit_16(227); +emit_16(161); +emit_16(228); +emit_16(162); +emit_16(228); +emit_16(161); +emit_16(228); +emit_16(162); +emit_16(229); +emit_16(163); +emit_16(229); +emit_16(162); +emit_16(229); +emit_16(163); +emit_16(230); +emit_16(164); +emit_16(230); +emit_16(163); +emit_16(230); +emit_16(164); +emit_16(231); +emit_16(165); +emit_16(231); +emit_16(164); +emit_16(231); +emit_16(165); +emit_16(232); +emit_16(166); +emit_16(232); +emit_16(165); +emit_16(232); +emit_16(166); +emit_16(233); +emit_16(167); +emit_16(233); +emit_16(166); +emit_16(233); +emit_16(167); +emit_16(234); +emit_16(168); +emit_16(234); +emit_16(167); +emit_16(234); +emit_16(168); +emit_16(235); +emit_16(169); +emit_16(235); +emit_16(168); +emit_16(235); +emit_16(169); +emit_16(236); +emit_16(170); +emit_16(236); +emit_16(169); +emit_16(236); +emit_16(170); +emit_16(237); +emit_16(171); +emit_16(237); +emit_16(170); +emit_16(237); +emit_16(171); +emit_16(238); +emit_16(172); +emit_16(238); +emit_16(171); +emit_16(238); +emit_16(172); +emit_16(239); +emit_16(173); +emit_16(239); +emit_16(172); +emit_16(239); +emit_16(173); +emit_16(240); +emit_16(174); +emit_16(240); +emit_16(173); +emit_16(240); +emit_16(174); +emit_16(241); +emit_16(175); +emit_16(241); +emit_16(174); +emit_16(241); +emit_16(175); +emit_16(242); +emit_16(176); +emit_16(242); +emit_16(175); +emit_16(242); +emit_16(176); +emit_16(243); +emit_16(177); +emit_16(243); +emit_16(176); +emit_16(243); +emit_16(177); +emit_16(244); +emit_16(178); +emit_16(244); +emit_16(177); +emit_16(244); +emit_16(178); +emit_16(245); +emit_16(179); +emit_16(245); +emit_16(178); +emit_16(245); +emit_16(179); +emit_16(246); +emit_16(180); +emit_16(246); +emit_16(179); +emit_16(246); +emit_16(180); +emit_16(247); +emit_16(181); +emit_16(247); +emit_16(180); +emit_16(247); +emit_16(181); +emit_16(248); +emit_16(182); +emit_16(248); +emit_16(181); +emit_16(248); +emit_16(182); +emit_16(249); +emit_16(183); +emit_16(249); +emit_16(182); +emit_16(249); +emit_16(183); +emit_16(250); +emit_16(184); +emit_16(250); +emit_16(183); +emit_16(250); +emit_16(184); +emit_16(251); +emit_16(185); +emit_16(251); +emit_16(184); +emit_16(251); +emit_16(185); +emit_16(252); +emit_16(186); +emit_16(252); +emit_16(185); +emit_16(252); +emit_16(186); +emit_16(253); +emit_16(187); +emit_16(253); +emit_16(186); +emit_16(253); +emit_16(187); +emit_16(254); +emit_16(188); +emit_16(254); +emit_16(187); +emit_16(254); +emit_16(188); +emit_16(255); +emit_16(189); +emit_16(255); +emit_16(188); +emit_16(255); +emit_16(189); +emit_16(256); +emit_16(190); +emit_16(256); +emit_16(189); +emit_16(256); +emit_16(190); +emit_16(257); +emit_16(191); +emit_16(257); +emit_16(190); +emit_16(257); +emit_16(191); +emit_16(258); +emit_16(192); +emit_16(258); +emit_16(191); +emit_16(258); +emit_16(192); +emit_16(259); +emit_16(193); +emit_16(259); +emit_16(192); +emit_16(259); +emit_16(193); +emit_16(260); +emit_16(194); +emit_16(260); +emit_16(193); +emit_16(260); +emit_16(194); +emit_16(261); +emit_16(195); +emit_16(261); +emit_16(194); +emit_16(261); +emit_16(195); +emit_16(262); +emit_16(196); +emit_16(262); +emit_16(195); +emit_16(262); +emit_16(196); +emit_16(263); +emit_16(197); +emit_16(263); +emit_16(196); +emit_16(264); +emit_16(198); +emit_16(265); +emit_16(199); +emit_16(265); +emit_16(198); +emit_16(265); +emit_16(199); +emit_16(266); +emit_16(200); +emit_16(266); +emit_16(199); +emit_16(266); +emit_16(200); +emit_16(267); +emit_16(201); +emit_16(267); +emit_16(200); +emit_16(267); +emit_16(201); +emit_16(268); +emit_16(202); +emit_16(268); +emit_16(201); +emit_16(268); +emit_16(202); +emit_16(269); +emit_16(203); +emit_16(269); +emit_16(202); +emit_16(269); +emit_16(203); +emit_16(270); +emit_16(204); +emit_16(270); +emit_16(203); +emit_16(270); +emit_16(204); +emit_16(271); +emit_16(205); +emit_16(271); +emit_16(204); +emit_16(271); +emit_16(205); +emit_16(272); +emit_16(206); +emit_16(272); +emit_16(205); +emit_16(272); +emit_16(206); +emit_16(273); +emit_16(207); +emit_16(273); +emit_16(206); +emit_16(273); +emit_16(207); +emit_16(274); +emit_16(208); +emit_16(274); +emit_16(207); +emit_16(274); +emit_16(208); +emit_16(275); +emit_16(209); +emit_16(275); +emit_16(208); +emit_16(275); +emit_16(209); +emit_16(276); +emit_16(210); +emit_16(276); +emit_16(209); +emit_16(276); +emit_16(210); +emit_16(277); +emit_16(211); +emit_16(277); +emit_16(210); +emit_16(277); +emit_16(211); +emit_16(278); +emit_16(212); +emit_16(278); +emit_16(211); +emit_16(278); +emit_16(212); +emit_16(279); +emit_16(213); +emit_16(279); +emit_16(212); +emit_16(279); +emit_16(213); +emit_16(280); +emit_16(214); +emit_16(280); +emit_16(213); +emit_16(280); +emit_16(214); +emit_16(281); +emit_16(215); +emit_16(281); +emit_16(214); +emit_16(281); +emit_16(215); +emit_16(282); +emit_16(216); +emit_16(282); +emit_16(215); +emit_16(282); +emit_16(216); +emit_16(283); +emit_16(217); +emit_16(283); +emit_16(216); +emit_16(283); +emit_16(217); +emit_16(284); +emit_16(218); +emit_16(284); +emit_16(217); +emit_16(284); +emit_16(218); +emit_16(285); +emit_16(219); +emit_16(285); +emit_16(218); +emit_16(285); +emit_16(219); +emit_16(286); +emit_16(220); +emit_16(286); +emit_16(219); +emit_16(286); +emit_16(220); +emit_16(287); +emit_16(221); +emit_16(287); +emit_16(220); +emit_16(287); +emit_16(221); +emit_16(288); +emit_16(222); +emit_16(288); +emit_16(221); +emit_16(288); +emit_16(222); +emit_16(289); +emit_16(223); +emit_16(289); +emit_16(222); +emit_16(289); +emit_16(223); +emit_16(290); +emit_16(224); +emit_16(290); +emit_16(223); +emit_16(290); +emit_16(224); +emit_16(291); +emit_16(225); +emit_16(291); +emit_16(224); +emit_16(291); +emit_16(225); +emit_16(292); +emit_16(226); +emit_16(292); +emit_16(225); +emit_16(292); +emit_16(226); +emit_16(293); +emit_16(227); +emit_16(293); +emit_16(226); +emit_16(293); +emit_16(227); +emit_16(294); +emit_16(228); +emit_16(294); +emit_16(227); +emit_16(294); +emit_16(228); +emit_16(295); +emit_16(229); +emit_16(295); +emit_16(228); +emit_16(295); +emit_16(229); +emit_16(296); +emit_16(230); +emit_16(296); +emit_16(229); +emit_16(296); +emit_16(230); +emit_16(297); +emit_16(231); +emit_16(297); +emit_16(230); +emit_16(297); +emit_16(231); +emit_16(298); +emit_16(232); +emit_16(298); +emit_16(231); +emit_16(298); +emit_16(232); +emit_16(299); +emit_16(233); +emit_16(299); +emit_16(232); +emit_16(299); +emit_16(233); +emit_16(300); +emit_16(234); +emit_16(300); +emit_16(233); +emit_16(300); +emit_16(234); +emit_16(301); +emit_16(235); +emit_16(301); +emit_16(234); +emit_16(301); +emit_16(235); +emit_16(302); +emit_16(236); +emit_16(302); +emit_16(235); +emit_16(302); +emit_16(236); +emit_16(303); +emit_16(237); +emit_16(303); +emit_16(236); +emit_16(303); +emit_16(237); +emit_16(304); +emit_16(238); +emit_16(304); +emit_16(237); +emit_16(304); +emit_16(238); +emit_16(305); +emit_16(239); +emit_16(305); +emit_16(238); +emit_16(305); +emit_16(239); +emit_16(306); +emit_16(240); +emit_16(306); +emit_16(239); +emit_16(306); +emit_16(240); +emit_16(307); +emit_16(241); +emit_16(307); +emit_16(240); +emit_16(307); +emit_16(241); +emit_16(308); +emit_16(242); +emit_16(308); +emit_16(241); +emit_16(308); +emit_16(242); +emit_16(309); +emit_16(243); +emit_16(309); +emit_16(242); +emit_16(309); +emit_16(243); +emit_16(310); +emit_16(244); +emit_16(310); +emit_16(243); +emit_16(310); +emit_16(244); +emit_16(311); +emit_16(245); +emit_16(311); +emit_16(244); +emit_16(311); +emit_16(245); +emit_16(312); +emit_16(246); +emit_16(312); +emit_16(245); +emit_16(312); +emit_16(246); +emit_16(313); +emit_16(247); +emit_16(313); +emit_16(246); +emit_16(313); +emit_16(247); +emit_16(314); +emit_16(248); +emit_16(314); +emit_16(247); +emit_16(314); +emit_16(248); +emit_16(315); +emit_16(249); +emit_16(315); +emit_16(248); +emit_16(315); +emit_16(249); +emit_16(316); +emit_16(250); +emit_16(316); +emit_16(249); +emit_16(316); +emit_16(250); +emit_16(317); +emit_16(251); +emit_16(317); +emit_16(250); +emit_16(317); +emit_16(251); +emit_16(318); +emit_16(252); +emit_16(318); +emit_16(251); +emit_16(318); +emit_16(252); +emit_16(319); +emit_16(253); +emit_16(319); +emit_16(252); +emit_16(319); +emit_16(253); +emit_16(320); +emit_16(254); +emit_16(320); +emit_16(253); +emit_16(320); +emit_16(254); +emit_16(321); +emit_16(255); +emit_16(321); +emit_16(254); +emit_16(321); +emit_16(255); +emit_16(322); +emit_16(256); +emit_16(322); +emit_16(255); +emit_16(322); +emit_16(256); +emit_16(323); +emit_16(257); +emit_16(323); +emit_16(256); +emit_16(323); +emit_16(257); +emit_16(324); +emit_16(258); +emit_16(324); +emit_16(257); +emit_16(324); +emit_16(258); +emit_16(325); +emit_16(259); +emit_16(325); +emit_16(258); +emit_16(325); +emit_16(259); +emit_16(326); +emit_16(260); +emit_16(326); +emit_16(259); +emit_16(326); +emit_16(260); +emit_16(327); +emit_16(261); +emit_16(327); +emit_16(260); +emit_16(327); +emit_16(261); +emit_16(328); +emit_16(262); +emit_16(328); +emit_16(261); +emit_16(328); +emit_16(262); +emit_16(329); +emit_16(263); +emit_16(329); +emit_16(262); +emit_16(330); +emit_16(264); +emit_16(331); +emit_16(265); +emit_16(331); +emit_16(264); +emit_16(331); +emit_16(265); +emit_16(332); +emit_16(266); +emit_16(332); +emit_16(265); +emit_16(332); +emit_16(266); +emit_16(333); +emit_16(267); +emit_16(333); +emit_16(266); +emit_16(333); +emit_16(267); +emit_16(334); +emit_16(268); +emit_16(334); +emit_16(267); +emit_16(334); +emit_16(268); +emit_16(335); +emit_16(269); +emit_16(335); +emit_16(268); +emit_16(335); +emit_16(269); +emit_16(336); +emit_16(270); +emit_16(336); +emit_16(269); +emit_16(336); +emit_16(270); +emit_16(337); +emit_16(271); +emit_16(337); +emit_16(270); +emit_16(337); +emit_16(271); +emit_16(338); +emit_16(272); +emit_16(338); +emit_16(271); +emit_16(338); +emit_16(272); +emit_16(339); +emit_16(273); +emit_16(339); +emit_16(272); +emit_16(339); +emit_16(273); +emit_16(340); +emit_16(274); +emit_16(340); +emit_16(273); +emit_16(340); +emit_16(274); +emit_16(341); +emit_16(275); +emit_16(341); +emit_16(274); +emit_16(341); +emit_16(275); +emit_16(342); +emit_16(276); +emit_16(342); +emit_16(275); +emit_16(342); +emit_16(276); +emit_16(343); +emit_16(277); +emit_16(343); +emit_16(276); +emit_16(343); +emit_16(277); +emit_16(344); +emit_16(278); +emit_16(344); +emit_16(277); +emit_16(344); +emit_16(278); +emit_16(345); +emit_16(279); +emit_16(345); +emit_16(278); +emit_16(345); +emit_16(279); +emit_16(346); +emit_16(280); +emit_16(346); +emit_16(279); +emit_16(346); +emit_16(280); +emit_16(347); +emit_16(281); +emit_16(347); +emit_16(280); +emit_16(347); +emit_16(281); +emit_16(348); +emit_16(282); +emit_16(348); +emit_16(281); +emit_16(348); +emit_16(282); +emit_16(349); +emit_16(283); +emit_16(349); +emit_16(282); +emit_16(349); +emit_16(283); +emit_16(350); +emit_16(284); +emit_16(350); +emit_16(283); +emit_16(350); +emit_16(284); +emit_16(351); +emit_16(285); +emit_16(351); +emit_16(284); +emit_16(351); +emit_16(285); +emit_16(352); +emit_16(286); +emit_16(352); +emit_16(285); +emit_16(352); +emit_16(286); +emit_16(353); +emit_16(287); +emit_16(353); +emit_16(286); +emit_16(353); +emit_16(287); +emit_16(354); +emit_16(288); +emit_16(354); +emit_16(287); +emit_16(354); +emit_16(288); +emit_16(355); +emit_16(289); +emit_16(355); +emit_16(288); +emit_16(355); +emit_16(289); +emit_16(356); +emit_16(290); +emit_16(356); +emit_16(289); +emit_16(356); +emit_16(290); +emit_16(357); +emit_16(291); +emit_16(357); +emit_16(290); +emit_16(357); +emit_16(291); +emit_16(358); +emit_16(292); +emit_16(358); +emit_16(291); +emit_16(358); +emit_16(292); +emit_16(359); +emit_16(293); +emit_16(359); +emit_16(292); +emit_16(359); +emit_16(293); +emit_16(360); +emit_16(294); +emit_16(360); +emit_16(293); +emit_16(360); +emit_16(294); +emit_16(361); +emit_16(295); +emit_16(361); +emit_16(294); +emit_16(361); +emit_16(295); +emit_16(362); +emit_16(296); +emit_16(362); +emit_16(295); +emit_16(362); +emit_16(296); +emit_16(363); +emit_16(297); +emit_16(363); +emit_16(296); +emit_16(363); +emit_16(297); +emit_16(364); +emit_16(298); +emit_16(364); +emit_16(297); +emit_16(364); +emit_16(298); +emit_16(365); +emit_16(299); +emit_16(365); +emit_16(298); +emit_16(365); +emit_16(299); +emit_16(366); +emit_16(300); +emit_16(366); +emit_16(299); +emit_16(366); +emit_16(300); +emit_16(367); +emit_16(301); +emit_16(367); +emit_16(300); +emit_16(367); +emit_16(301); +emit_16(368); +emit_16(302); +emit_16(368); +emit_16(301); +emit_16(368); +emit_16(302); +emit_16(369); +emit_16(303); +emit_16(369); +emit_16(302); +emit_16(369); +emit_16(303); +emit_16(370); +emit_16(304); +emit_16(370); +emit_16(303); +emit_16(370); +emit_16(304); +emit_16(371); +emit_16(305); +emit_16(371); +emit_16(304); +emit_16(371); +emit_16(305); +emit_16(372); +emit_16(306); +emit_16(372); +emit_16(305); +emit_16(372); +emit_16(306); +emit_16(373); +emit_16(307); +emit_16(373); +emit_16(306); +emit_16(373); +emit_16(307); +emit_16(374); +emit_16(308); +emit_16(374); +emit_16(307); +emit_16(374); +emit_16(308); +emit_16(375); +emit_16(309); +emit_16(375); +emit_16(308); +emit_16(375); +emit_16(309); +emit_16(376); +emit_16(310); +emit_16(376); +emit_16(309); +emit_16(376); +emit_16(310); +emit_16(377); +emit_16(311); +emit_16(377); +emit_16(310); +emit_16(377); +emit_16(311); +emit_16(378); +emit_16(312); +emit_16(378); +emit_16(311); +emit_16(378); +emit_16(312); +emit_16(379); +emit_16(313); +emit_16(379); +emit_16(312); +emit_16(379); +emit_16(313); +emit_16(380); +emit_16(314); +emit_16(380); +emit_16(313); +emit_16(380); +emit_16(314); +emit_16(381); +emit_16(315); +emit_16(381); +emit_16(314); +emit_16(381); +emit_16(315); +emit_16(382); +emit_16(316); +emit_16(382); +emit_16(315); +emit_16(382); +emit_16(316); +emit_16(383); +emit_16(317); +emit_16(383); +emit_16(316); +emit_16(383); +emit_16(317); +emit_16(384); +emit_16(318); +emit_16(384); +emit_16(317); +emit_16(384); +emit_16(318); +emit_16(385); +emit_16(319); +emit_16(385); +emit_16(318); +emit_16(385); +emit_16(319); +emit_16(386); +emit_16(320); +emit_16(386); +emit_16(319); +emit_16(386); +emit_16(320); +emit_16(387); +emit_16(321); +emit_16(387); +emit_16(320); +emit_16(387); +emit_16(321); +emit_16(388); +emit_16(322); +emit_16(388); +emit_16(321); +emit_16(388); +emit_16(322); +emit_16(389); +emit_16(323); +emit_16(389); +emit_16(322); +emit_16(389); +emit_16(323); +emit_16(390); +emit_16(324); +emit_16(390); +emit_16(323); +emit_16(390); +emit_16(324); +emit_16(391); +emit_16(325); +emit_16(391); +emit_16(324); +emit_16(391); +emit_16(325); +emit_16(392); +emit_16(326); +emit_16(392); +emit_16(325); +emit_16(392); +emit_16(326); +emit_16(393); +emit_16(327); +emit_16(393); +emit_16(326); +emit_16(393); +emit_16(327); +emit_16(394); +emit_16(328); +emit_16(394); +emit_16(327); +emit_16(394); +emit_16(328); +emit_16(395); +emit_16(329); +emit_16(395); +emit_16(328); +emit_16(396); +emit_16(330); +emit_16(397); +emit_16(331); +emit_16(397); +emit_16(330); +emit_16(397); +emit_16(331); +emit_16(398); +emit_16(332); +emit_16(398); +emit_16(331); +emit_16(398); +emit_16(332); +emit_16(399); +emit_16(333); +emit_16(399); +emit_16(332); +emit_16(399); +emit_16(333); +emit_16(400); +emit_16(334); +emit_16(400); +emit_16(333); +emit_16(400); +emit_16(334); +emit_16(401); +emit_16(335); +emit_16(401); +emit_16(334); +emit_16(401); +emit_16(335); +emit_16(402); +emit_16(336); +emit_16(402); +emit_16(335); +emit_16(402); +emit_16(336); +emit_16(403); +emit_16(337); +emit_16(403); +emit_16(336); +emit_16(403); +emit_16(337); +emit_16(404); +emit_16(338); +emit_16(404); +emit_16(337); +emit_16(404); +emit_16(338); +emit_16(405); +emit_16(339); +emit_16(405); +emit_16(338); +emit_16(405); +emit_16(339); +emit_16(406); +emit_16(340); +emit_16(406); +emit_16(339); +emit_16(406); +emit_16(340); +emit_16(407); +emit_16(341); +emit_16(407); +emit_16(340); +emit_16(407); +emit_16(341); +emit_16(408); +emit_16(342); +emit_16(408); +emit_16(341); +emit_16(408); +emit_16(342); +emit_16(409); +emit_16(343); +emit_16(409); +emit_16(342); +emit_16(409); +emit_16(343); +emit_16(410); +emit_16(344); +emit_16(410); +emit_16(343); +emit_16(410); +emit_16(344); +emit_16(411); +emit_16(345); +emit_16(411); +emit_16(344); +emit_16(411); +emit_16(345); +emit_16(412); +emit_16(346); +emit_16(412); +emit_16(345); +emit_16(412); +emit_16(346); +emit_16(413); +emit_16(347); +emit_16(413); +emit_16(346); +emit_16(413); +emit_16(347); +emit_16(414); +emit_16(348); +emit_16(414); +emit_16(347); +emit_16(414); +emit_16(348); +emit_16(415); +emit_16(349); +emit_16(415); +emit_16(348); +emit_16(415); +emit_16(349); +emit_16(416); +emit_16(350); +emit_16(416); +emit_16(349); +emit_16(416); +emit_16(350); +emit_16(417); +emit_16(351); +emit_16(417); +emit_16(350); +emit_16(417); +emit_16(351); +emit_16(418); +emit_16(352); +emit_16(418); +emit_16(351); +emit_16(418); +emit_16(352); +emit_16(419); +emit_16(353); +emit_16(419); +emit_16(352); +emit_16(419); +emit_16(353); +emit_16(420); +emit_16(354); +emit_16(420); +emit_16(353); +emit_16(420); +emit_16(354); +emit_16(421); +emit_16(355); +emit_16(421); +emit_16(354); +emit_16(421); +emit_16(355); +emit_16(422); +emit_16(356); +emit_16(422); +emit_16(355); +emit_16(422); +emit_16(356); +emit_16(423); +emit_16(357); +emit_16(423); +emit_16(356); +emit_16(423); +emit_16(357); +emit_16(424); +emit_16(358); +emit_16(424); +emit_16(357); +emit_16(424); +emit_16(358); +emit_16(425); +emit_16(359); +emit_16(425); +emit_16(358); +emit_16(425); +emit_16(359); +emit_16(426); +emit_16(360); +emit_16(426); +emit_16(359); +emit_16(426); +emit_16(360); +emit_16(427); +emit_16(361); +emit_16(427); +emit_16(360); +emit_16(427); +emit_16(361); +emit_16(428); +emit_16(362); +emit_16(428); +emit_16(361); +emit_16(428); +emit_16(362); +emit_16(429); +emit_16(363); +emit_16(429); +emit_16(362); +emit_16(429); +emit_16(363); +emit_16(430); +emit_16(364); +emit_16(430); +emit_16(363); +emit_16(430); +emit_16(364); +emit_16(431); +emit_16(365); +emit_16(431); +emit_16(364); +emit_16(431); +emit_16(365); +emit_16(432); +emit_16(366); +emit_16(432); +emit_16(365); +emit_16(432); +emit_16(366); +emit_16(433); +emit_16(367); +emit_16(433); +emit_16(366); +emit_16(433); +emit_16(367); +emit_16(434); +emit_16(368); +emit_16(434); +emit_16(367); +emit_16(434); +emit_16(368); +emit_16(435); +emit_16(369); +emit_16(435); +emit_16(368); +emit_16(435); +emit_16(369); +emit_16(436); +emit_16(370); +emit_16(436); +emit_16(369); +emit_16(436); +emit_16(370); +emit_16(437); +emit_16(371); +emit_16(437); +emit_16(370); +emit_16(437); +emit_16(371); +emit_16(438); +emit_16(372); +emit_16(438); +emit_16(371); +emit_16(438); +emit_16(372); +emit_16(439); +emit_16(373); +emit_16(439); +emit_16(372); +emit_16(439); +emit_16(373); +emit_16(440); +emit_16(374); +emit_16(440); +emit_16(373); +emit_16(440); +emit_16(374); +emit_16(441); +emit_16(375); +emit_16(441); +emit_16(374); +emit_16(441); +emit_16(375); +emit_16(442); +emit_16(376); +emit_16(442); +emit_16(375); +emit_16(442); +emit_16(376); +emit_16(443); +emit_16(377); +emit_16(443); +emit_16(376); +emit_16(443); +emit_16(377); +emit_16(444); +emit_16(378); +emit_16(444); +emit_16(377); +emit_16(444); +emit_16(378); +emit_16(445); +emit_16(379); +emit_16(445); +emit_16(378); +emit_16(445); +emit_16(379); +emit_16(446); +emit_16(380); +emit_16(446); +emit_16(379); +emit_16(446); +emit_16(380); +emit_16(447); +emit_16(381); +emit_16(447); +emit_16(380); +emit_16(447); +emit_16(381); +emit_16(448); +emit_16(382); +emit_16(448); +emit_16(381); +emit_16(448); +emit_16(382); +emit_16(449); +emit_16(383); +emit_16(449); +emit_16(382); +emit_16(449); +emit_16(383); +emit_16(450); +emit_16(384); +emit_16(450); +emit_16(383); +emit_16(450); +emit_16(384); +emit_16(451); +emit_16(385); +emit_16(451); +emit_16(384); +emit_16(451); +emit_16(385); +emit_16(452); +emit_16(386); +emit_16(452); +emit_16(385); +emit_16(452); +emit_16(386); +emit_16(453); +emit_16(387); +emit_16(453); +emit_16(386); +emit_16(453); +emit_16(387); +emit_16(454); +emit_16(388); +emit_16(454); +emit_16(387); +emit_16(454); +emit_16(388); +emit_16(455); +emit_16(389); +emit_16(455); +emit_16(388); +emit_16(455); +emit_16(389); +emit_16(456); +emit_16(390); +emit_16(456); +emit_16(389); +emit_16(456); +emit_16(390); +emit_16(457); +emit_16(391); +emit_16(457); +emit_16(390); +emit_16(457); +emit_16(391); +emit_16(458); +emit_16(392); +emit_16(458); +emit_16(391); +emit_16(458); +emit_16(392); +emit_16(459); +emit_16(393); +emit_16(459); +emit_16(392); +emit_16(459); +emit_16(393); +emit_16(460); +emit_16(394); +emit_16(460); +emit_16(393); +emit_16(460); +emit_16(394); +emit_16(461); +emit_16(395); +emit_16(461); +emit_16(394); +emit_16(462); +emit_16(396); +emit_16(463); +emit_16(397); +emit_16(463); +emit_16(396); +emit_16(463); +emit_16(397); +emit_16(464); +emit_16(398); +emit_16(464); +emit_16(397); +emit_16(464); +emit_16(398); +emit_16(465); +emit_16(399); +emit_16(465); +emit_16(398); +emit_16(465); +emit_16(399); +emit_16(466); +emit_16(400); +emit_16(466); +emit_16(399); +emit_16(466); +emit_16(400); +emit_16(467); +emit_16(401); +emit_16(467); +emit_16(400); +emit_16(467); +emit_16(401); +emit_16(468); +emit_16(402); +emit_16(468); +emit_16(401); +emit_16(468); +emit_16(402); +emit_16(469); +emit_16(403); +emit_16(469); +emit_16(402); +emit_16(469); +emit_16(403); +emit_16(470); +emit_16(404); +emit_16(470); +emit_16(403); +emit_16(470); +emit_16(404); +emit_16(471); +emit_16(405); +emit_16(471); +emit_16(404); +emit_16(471); +emit_16(405); +emit_16(472); +emit_16(406); +emit_16(472); +emit_16(405); +emit_16(472); +emit_16(406); +emit_16(473); +emit_16(407); +emit_16(473); +emit_16(406); +emit_16(473); +emit_16(407); +emit_16(474); +emit_16(408); +emit_16(474); +emit_16(407); +emit_16(474); +emit_16(408); +emit_16(475); +emit_16(409); +emit_16(475); +emit_16(408); +emit_16(475); +emit_16(409); +emit_16(476); +emit_16(410); +emit_16(476); +emit_16(409); +emit_16(476); +emit_16(410); +emit_16(477); +emit_16(411); +emit_16(477); +emit_16(410); +emit_16(477); +emit_16(411); +emit_16(478); +emit_16(412); +emit_16(478); +emit_16(411); +emit_16(478); +emit_16(412); +emit_16(479); +emit_16(413); +emit_16(479); +emit_16(412); +emit_16(479); +emit_16(413); +emit_16(480); +emit_16(414); +emit_16(480); +emit_16(413); +emit_16(480); +emit_16(414); +emit_16(481); +emit_16(415); +emit_16(481); +emit_16(414); +emit_16(481); +emit_16(415); +emit_16(482); +emit_16(416); +emit_16(482); +emit_16(415); +emit_16(482); +emit_16(416); +emit_16(483); +emit_16(417); +emit_16(483); +emit_16(416); +emit_16(483); +emit_16(417); +emit_16(484); +emit_16(418); +emit_16(484); +emit_16(417); +emit_16(484); +emit_16(418); +emit_16(485); +emit_16(419); +emit_16(485); +emit_16(418); +emit_16(485); +emit_16(419); +emit_16(486); +emit_16(420); +emit_16(486); +emit_16(419); +emit_16(486); +emit_16(420); +emit_16(487); +emit_16(421); +emit_16(487); +emit_16(420); +emit_16(487); +emit_16(421); +emit_16(488); +emit_16(422); +emit_16(488); +emit_16(421); +emit_16(488); +emit_16(422); +emit_16(489); +emit_16(423); +emit_16(489); +emit_16(422); +emit_16(489); +emit_16(423); +emit_16(490); +emit_16(424); +emit_16(490); +emit_16(423); +emit_16(490); +emit_16(424); +emit_16(491); +emit_16(425); +emit_16(491); +emit_16(424); +emit_16(491); +emit_16(425); +emit_16(492); +emit_16(426); +emit_16(492); +emit_16(425); +emit_16(492); +emit_16(426); +emit_16(493); +emit_16(427); +emit_16(493); +emit_16(426); +emit_16(493); +emit_16(427); +emit_16(494); +emit_16(428); +emit_16(494); +emit_16(427); +emit_16(494); +emit_16(428); +emit_16(495); +emit_16(429); +emit_16(495); +emit_16(428); +emit_16(495); +emit_16(429); +emit_16(496); +emit_16(430); +emit_16(496); +emit_16(429); +emit_16(496); +emit_16(430); +emit_16(497); +emit_16(431); +emit_16(497); +emit_16(430); +emit_16(497); +emit_16(431); +emit_16(498); +emit_16(432); +emit_16(498); +emit_16(431); +emit_16(498); +emit_16(432); +emit_16(499); +emit_16(433); +emit_16(499); +emit_16(432); +emit_16(499); +emit_16(433); +emit_16(500); +emit_16(434); +emit_16(500); +emit_16(433); +emit_16(500); +emit_16(434); +emit_16(501); +emit_16(435); +emit_16(501); +emit_16(434); +emit_16(501); +emit_16(435); +emit_16(502); +emit_16(436); +emit_16(502); +emit_16(435); +emit_16(502); +emit_16(436); +emit_16(503); +emit_16(437); +emit_16(503); +emit_16(436); +emit_16(503); +emit_16(437); +emit_16(504); +emit_16(438); +emit_16(504); +emit_16(437); +emit_16(504); +emit_16(438); +emit_16(505); +emit_16(439); +emit_16(505); +emit_16(438); +emit_16(505); +emit_16(439); +emit_16(506); +emit_16(440); +emit_16(506); +emit_16(439); +emit_16(506); +emit_16(440); +emit_16(507); +emit_16(441); +emit_16(507); +emit_16(440); +emit_16(507); +emit_16(441); +emit_16(508); +emit_16(442); +emit_16(508); +emit_16(441); +emit_16(508); +emit_16(442); +emit_16(509); +emit_16(443); +emit_16(509); +emit_16(442); +emit_16(509); +emit_16(443); +emit_16(510); +emit_16(444); +emit_16(510); +emit_16(443); +emit_16(510); +emit_16(444); +emit_16(511); +emit_16(445); +emit_16(511); +emit_16(444); +emit_16(511); +emit_16(445); +emit_16(512); +emit_16(446); +emit_16(512); +emit_16(445); +emit_16(512); +emit_16(446); +emit_16(513); +emit_16(447); +emit_16(513); +emit_16(446); +emit_16(513); +emit_16(447); +emit_16(514); +emit_16(448); +emit_16(514); +emit_16(447); +emit_16(514); +emit_16(448); +emit_16(515); +emit_16(449); +emit_16(515); +emit_16(448); +emit_16(515); +emit_16(449); +emit_16(516); +emit_16(450); +emit_16(516); +emit_16(449); +emit_16(516); +emit_16(450); +emit_16(517); +emit_16(451); +emit_16(517); +emit_16(450); +emit_16(517); +emit_16(451); +emit_16(518); +emit_16(452); +emit_16(518); +emit_16(451); +emit_16(518); +emit_16(452); +emit_16(519); +emit_16(453); +emit_16(519); +emit_16(452); +emit_16(519); +emit_16(453); +emit_16(520); +emit_16(454); +emit_16(520); +emit_16(453); +emit_16(520); +emit_16(454); +emit_16(521); +emit_16(455); +emit_16(521); +emit_16(454); +emit_16(521); +emit_16(455); +emit_16(522); +emit_16(456); +emit_16(522); +emit_16(455); +emit_16(522); +emit_16(456); +emit_16(523); +emit_16(457); +emit_16(523); +emit_16(456); +emit_16(523); +emit_16(457); +emit_16(524); +emit_16(458); +emit_16(524); +emit_16(457); +emit_16(524); +emit_16(458); +emit_16(525); +emit_16(459); +emit_16(525); +emit_16(458); +emit_16(525); +emit_16(459); +emit_16(526); +emit_16(460); +emit_16(526); +emit_16(459); +emit_16(526); +emit_16(460); +emit_16(527); +emit_16(461); +emit_16(527); +emit_16(460); +emit_16(528); +emit_16(462); +emit_16(529); +emit_16(463); +emit_16(529); +emit_16(462); +emit_16(529); +emit_16(463); +emit_16(530); +emit_16(464); +emit_16(530); +emit_16(463); +emit_16(530); +emit_16(464); +emit_16(531); +emit_16(465); +emit_16(531); +emit_16(464); +emit_16(531); +emit_16(465); +emit_16(532); +emit_16(466); +emit_16(532); +emit_16(465); +emit_16(532); +emit_16(466); +emit_16(533); +emit_16(467); +emit_16(533); +emit_16(466); +emit_16(533); +emit_16(467); +emit_16(534); +emit_16(468); +emit_16(534); +emit_16(467); +emit_16(534); +emit_16(468); +emit_16(535); +emit_16(469); +emit_16(535); +emit_16(468); +emit_16(535); +emit_16(469); +emit_16(536); +emit_16(470); +emit_16(536); +emit_16(469); +emit_16(536); +emit_16(470); +emit_16(537); +emit_16(471); +emit_16(537); +emit_16(470); +emit_16(537); +emit_16(471); +emit_16(538); +emit_16(472); +emit_16(538); +emit_16(471); +emit_16(538); +emit_16(472); +emit_16(539); +emit_16(473); +emit_16(539); +emit_16(472); +emit_16(539); +emit_16(473); +emit_16(540); +emit_16(474); +emit_16(540); +emit_16(473); +emit_16(540); +emit_16(474); +emit_16(541); +emit_16(475); +emit_16(541); +emit_16(474); +emit_16(541); +emit_16(475); +emit_16(542); +emit_16(476); +emit_16(542); +emit_16(475); +emit_16(542); +emit_16(476); +emit_16(543); +emit_16(477); +emit_16(543); +emit_16(476); +emit_16(543); +emit_16(477); +emit_16(544); +emit_16(478); +emit_16(544); +emit_16(477); +emit_16(544); +emit_16(478); +emit_16(545); +emit_16(479); +emit_16(545); +emit_16(478); +emit_16(545); +emit_16(479); +emit_16(546); +emit_16(480); +emit_16(546); +emit_16(479); +emit_16(546); +emit_16(480); +emit_16(547); +emit_16(481); +emit_16(547); +emit_16(480); +emit_16(547); +emit_16(481); +emit_16(548); +emit_16(482); +emit_16(548); +emit_16(481); +emit_16(548); +emit_16(482); +emit_16(549); +emit_16(483); +emit_16(549); +emit_16(482); +emit_16(549); +emit_16(483); +emit_16(550); +emit_16(484); +emit_16(550); +emit_16(483); +emit_16(550); +emit_16(484); +emit_16(551); +emit_16(485); +emit_16(551); +emit_16(484); +emit_16(551); +emit_16(485); +emit_16(552); +emit_16(486); +emit_16(552); +emit_16(485); +emit_16(552); +emit_16(486); +emit_16(553); +emit_16(487); +emit_16(553); +emit_16(486); +emit_16(553); +emit_16(487); +emit_16(554); +emit_16(488); +emit_16(554); +emit_16(487); +emit_16(554); +emit_16(488); +emit_16(555); +emit_16(489); +emit_16(555); +emit_16(488); +emit_16(555); +emit_16(489); +emit_16(556); +emit_16(490); +emit_16(556); +emit_16(489); +emit_16(556); +emit_16(490); +emit_16(557); +emit_16(491); +emit_16(557); +emit_16(490); +emit_16(557); +emit_16(491); +emit_16(558); +emit_16(492); +emit_16(558); +emit_16(491); +emit_16(558); +emit_16(492); +emit_16(559); +emit_16(493); +emit_16(559); +emit_16(492); +emit_16(559); +emit_16(493); +emit_16(560); +emit_16(494); +emit_16(560); +emit_16(493); +emit_16(560); +emit_16(494); +emit_16(561); +emit_16(495); +emit_16(561); +emit_16(494); +emit_16(561); +emit_16(495); +emit_16(562); +emit_16(496); +emit_16(562); +emit_16(495); +emit_16(562); +emit_16(496); +emit_16(563); +emit_16(497); +emit_16(563); +emit_16(496); +emit_16(563); +emit_16(497); +emit_16(564); +emit_16(498); +emit_16(564); +emit_16(497); +emit_16(564); +emit_16(498); +emit_16(565); +emit_16(499); +emit_16(565); +emit_16(498); +emit_16(565); +emit_16(499); +emit_16(566); +emit_16(500); +emit_16(566); +emit_16(499); +emit_16(566); +emit_16(500); +emit_16(567); +emit_16(501); +emit_16(567); +emit_16(500); +emit_16(567); +emit_16(501); +emit_16(568); +emit_16(502); +emit_16(568); +emit_16(501); +emit_16(568); +emit_16(502); +emit_16(569); +emit_16(503); +emit_16(569); +emit_16(502); +emit_16(569); +emit_16(503); +emit_16(570); +emit_16(504); +emit_16(570); +emit_16(503); +emit_16(570); +emit_16(504); +emit_16(571); +emit_16(505); +emit_16(571); +emit_16(504); +emit_16(571); +emit_16(505); +emit_16(572); +emit_16(506); +emit_16(572); +emit_16(505); +emit_16(572); +emit_16(506); +emit_16(573); +emit_16(507); +emit_16(573); +emit_16(506); +emit_16(573); +emit_16(507); +emit_16(574); +emit_16(508); +emit_16(574); +emit_16(507); +emit_16(574); +emit_16(508); +emit_16(575); +emit_16(509); +emit_16(575); +emit_16(508); +emit_16(575); +emit_16(509); +emit_16(576); +emit_16(510); +emit_16(576); +emit_16(509); +emit_16(576); +emit_16(510); +emit_16(577); +emit_16(511); +emit_16(577); +emit_16(510); +emit_16(577); +emit_16(511); +emit_16(578); +emit_16(512); +emit_16(578); +emit_16(511); +emit_16(578); +emit_16(512); +emit_16(579); +emit_16(513); +emit_16(579); +emit_16(512); +emit_16(579); +emit_16(513); +emit_16(580); +emit_16(514); +emit_16(580); +emit_16(513); +emit_16(580); +emit_16(514); +emit_16(581); +emit_16(515); +emit_16(581); +emit_16(514); +emit_16(581); +emit_16(515); +emit_16(582); +emit_16(516); +emit_16(582); +emit_16(515); +emit_16(582); +emit_16(516); +emit_16(583); +emit_16(517); +emit_16(583); +emit_16(516); +emit_16(583); +emit_16(517); +emit_16(584); +emit_16(518); +emit_16(584); +emit_16(517); +emit_16(584); +emit_16(518); +emit_16(585); +emit_16(519); +emit_16(585); +emit_16(518); +emit_16(585); +emit_16(519); +emit_16(586); +emit_16(520); +emit_16(586); +emit_16(519); +emit_16(586); +emit_16(520); +emit_16(587); +emit_16(521); +emit_16(587); +emit_16(520); +emit_16(587); +emit_16(521); +emit_16(588); +emit_16(522); +emit_16(588); +emit_16(521); +emit_16(588); +emit_16(522); +emit_16(589); +emit_16(523); +emit_16(589); +emit_16(522); +emit_16(589); +emit_16(523); +emit_16(590); +emit_16(524); +emit_16(590); +emit_16(523); +emit_16(590); +emit_16(524); +emit_16(591); +emit_16(525); +emit_16(591); +emit_16(524); +emit_16(591); +emit_16(525); +emit_16(592); +emit_16(526); +emit_16(592); +emit_16(525); +emit_16(592); +emit_16(526); +emit_16(593); +emit_16(527); +emit_16(593); +emit_16(526); +emit_16(594); +emit_16(528); +emit_16(595); +emit_16(529); +emit_16(595); +emit_16(528); +emit_16(595); +emit_16(529); +emit_16(596); +emit_16(530); +emit_16(596); +emit_16(529); +emit_16(596); +emit_16(530); +emit_16(597); +emit_16(531); +emit_16(597); +emit_16(530); +emit_16(597); +emit_16(531); +emit_16(598); +emit_16(532); +emit_16(598); +emit_16(531); +emit_16(598); +emit_16(532); +emit_16(599); +emit_16(533); +emit_16(599); +emit_16(532); +emit_16(599); +emit_16(533); +emit_16(600); +emit_16(534); +emit_16(600); +emit_16(533); +emit_16(600); +emit_16(534); +emit_16(601); +emit_16(535); +emit_16(601); +emit_16(534); +emit_16(601); +emit_16(535); +emit_16(602); +emit_16(536); +emit_16(602); +emit_16(535); +emit_16(602); +emit_16(536); +emit_16(603); +emit_16(537); +emit_16(603); +emit_16(536); +emit_16(603); +emit_16(537); +emit_16(604); +emit_16(538); +emit_16(604); +emit_16(537); +emit_16(604); +emit_16(538); +emit_16(605); +emit_16(539); +emit_16(605); +emit_16(538); +emit_16(605); +emit_16(539); +emit_16(606); +emit_16(540); +emit_16(606); +emit_16(539); +emit_16(606); +emit_16(540); +emit_16(607); +emit_16(541); +emit_16(607); +emit_16(540); +emit_16(607); +emit_16(541); +emit_16(608); +emit_16(542); +emit_16(608); +emit_16(541); +emit_16(608); +emit_16(542); +emit_16(609); +emit_16(543); +emit_16(609); +emit_16(542); +emit_16(609); +emit_16(543); +emit_16(610); +emit_16(544); +emit_16(610); +emit_16(543); +emit_16(610); +emit_16(544); +emit_16(611); +emit_16(545); +emit_16(611); +emit_16(544); +emit_16(611); +emit_16(545); +emit_16(612); +emit_16(546); +emit_16(612); +emit_16(545); +emit_16(612); +emit_16(546); +emit_16(613); +emit_16(547); +emit_16(613); +emit_16(546); +emit_16(613); +emit_16(547); +emit_16(614); +emit_16(548); +emit_16(614); +emit_16(547); +emit_16(614); +emit_16(548); +emit_16(615); +emit_16(549); +emit_16(615); +emit_16(548); +emit_16(615); +emit_16(549); +emit_16(616); +emit_16(550); +emit_16(616); +emit_16(549); +emit_16(616); +emit_16(550); +emit_16(617); +emit_16(551); +emit_16(617); +emit_16(550); +emit_16(617); +emit_16(551); +emit_16(618); +emit_16(552); +emit_16(618); +emit_16(551); +emit_16(618); +emit_16(552); +emit_16(619); +emit_16(553); +emit_16(619); +emit_16(552); +emit_16(619); +emit_16(553); +emit_16(620); +emit_16(554); +emit_16(620); +emit_16(553); +emit_16(620); +emit_16(554); +emit_16(621); +emit_16(555); +emit_16(621); +emit_16(554); +emit_16(621); +emit_16(555); +emit_16(622); +emit_16(556); +emit_16(622); +emit_16(555); +emit_16(622); +emit_16(556); +emit_16(623); +emit_16(557); +emit_16(623); +emit_16(556); +emit_16(623); +emit_16(557); +emit_16(624); +emit_16(558); +emit_16(624); +emit_16(557); +emit_16(624); +emit_16(558); +emit_16(625); +emit_16(559); +emit_16(625); +emit_16(558); +emit_16(625); +emit_16(559); +emit_16(626); +emit_16(560); +emit_16(626); +emit_16(559); +emit_16(626); +emit_16(560); +emit_16(627); +emit_16(561); +emit_16(627); +emit_16(560); +emit_16(627); +emit_16(561); +emit_16(628); +emit_16(562); +emit_16(628); +emit_16(561); +emit_16(628); +emit_16(562); +emit_16(629); +emit_16(563); +emit_16(629); +emit_16(562); +emit_16(629); +emit_16(563); +emit_16(630); +emit_16(564); +emit_16(630); +emit_16(563); +emit_16(630); +emit_16(564); +emit_16(631); +emit_16(565); +emit_16(631); +emit_16(564); +emit_16(631); +emit_16(565); +emit_16(632); +emit_16(566); +emit_16(632); +emit_16(565); +emit_16(632); +emit_16(566); +emit_16(633); +emit_16(567); +emit_16(633); +emit_16(566); +emit_16(633); +emit_16(567); +emit_16(634); +emit_16(568); +emit_16(634); +emit_16(567); +emit_16(634); +emit_16(568); +emit_16(635); +emit_16(569); +emit_16(635); +emit_16(568); +emit_16(635); +emit_16(569); +emit_16(636); +emit_16(570); +emit_16(636); +emit_16(569); +emit_16(636); +emit_16(570); +emit_16(637); +emit_16(571); +emit_16(637); +emit_16(570); +emit_16(637); +emit_16(571); +emit_16(638); +emit_16(572); +emit_16(638); +emit_16(571); +emit_16(638); +emit_16(572); +emit_16(639); +emit_16(573); +emit_16(639); +emit_16(572); +emit_16(639); +emit_16(573); +emit_16(640); +emit_16(574); +emit_16(640); +emit_16(573); +emit_16(640); +emit_16(574); +emit_16(641); +emit_16(575); +emit_16(641); +emit_16(574); +emit_16(641); +emit_16(575); +emit_16(642); +emit_16(576); +emit_16(642); +emit_16(575); +emit_16(642); +emit_16(576); +emit_16(643); +emit_16(577); +emit_16(643); +emit_16(576); +emit_16(643); +emit_16(577); +emit_16(644); +emit_16(578); +emit_16(644); +emit_16(577); +emit_16(644); +emit_16(578); +emit_16(645); +emit_16(579); +emit_16(645); +emit_16(578); +emit_16(645); +emit_16(579); +emit_16(646); +emit_16(580); +emit_16(646); +emit_16(579); +emit_16(646); +emit_16(580); +emit_16(647); +emit_16(581); +emit_16(647); +emit_16(580); +emit_16(647); +emit_16(581); +emit_16(648); +emit_16(582); +emit_16(648); +emit_16(581); +emit_16(648); +emit_16(582); +emit_16(649); +emit_16(583); +emit_16(649); +emit_16(582); +emit_16(649); +emit_16(583); +emit_16(650); +emit_16(584); +emit_16(650); +emit_16(583); +emit_16(650); +emit_16(584); +emit_16(651); +emit_16(585); +emit_16(651); +emit_16(584); +emit_16(651); +emit_16(585); +emit_16(652); +emit_16(586); +emit_16(652); +emit_16(585); +emit_16(652); +emit_16(586); +emit_16(653); +emit_16(587); +emit_16(653); +emit_16(586); +emit_16(653); +emit_16(587); +emit_16(654); +emit_16(588); +emit_16(654); +emit_16(587); +emit_16(654); +emit_16(588); +emit_16(655); +emit_16(589); +emit_16(655); +emit_16(588); +emit_16(655); +emit_16(589); +emit_16(656); +emit_16(590); +emit_16(656); +emit_16(589); +emit_16(656); +emit_16(590); +emit_16(657); +emit_16(591); +emit_16(657); +emit_16(590); +emit_16(657); +emit_16(591); +emit_16(658); +emit_16(592); +emit_16(658); +emit_16(591); +emit_16(658); +emit_16(592); +emit_16(659); +emit_16(593); +emit_16(659); +emit_16(592); +emit_16(660); +emit_16(594); +emit_16(661); +emit_16(595); +emit_16(661); +emit_16(594); +emit_16(661); +emit_16(595); +emit_16(662); +emit_16(596); +emit_16(662); +emit_16(595); +emit_16(662); +emit_16(596); +emit_16(663); +emit_16(597); +emit_16(663); +emit_16(596); +emit_16(663); +emit_16(597); +emit_16(664); +emit_16(598); +emit_16(664); +emit_16(597); +emit_16(664); +emit_16(598); +emit_16(665); +emit_16(599); +emit_16(665); +emit_16(598); +emit_16(665); +emit_16(599); +emit_16(666); +emit_16(600); +emit_16(666); +emit_16(599); +emit_16(666); +emit_16(600); +emit_16(667); +emit_16(601); +emit_16(667); +emit_16(600); +emit_16(667); +emit_16(601); +emit_16(668); +emit_16(602); +emit_16(668); +emit_16(601); +emit_16(668); +emit_16(602); +emit_16(669); +emit_16(603); +emit_16(669); +emit_16(602); +emit_16(669); +emit_16(603); +emit_16(670); +emit_16(604); +emit_16(670); +emit_16(603); +emit_16(670); +emit_16(604); +emit_16(671); +emit_16(605); +emit_16(671); +emit_16(604); +emit_16(671); +emit_16(605); +emit_16(672); +emit_16(606); +emit_16(672); +emit_16(605); +emit_16(672); +emit_16(606); +emit_16(673); +emit_16(607); +emit_16(673); +emit_16(606); +emit_16(673); +emit_16(607); +emit_16(674); +emit_16(608); +emit_16(674); +emit_16(607); +emit_16(674); +emit_16(608); +emit_16(675); +emit_16(609); +emit_16(675); +emit_16(608); +emit_16(675); +emit_16(609); +emit_16(676); +emit_16(610); +emit_16(676); +emit_16(609); +emit_16(676); +emit_16(610); +emit_16(677); +emit_16(611); +emit_16(677); +emit_16(610); +emit_16(677); +emit_16(611); +emit_16(678); +emit_16(612); +emit_16(678); +emit_16(611); +emit_16(678); +emit_16(612); +emit_16(679); +emit_16(613); +emit_16(679); +emit_16(612); +emit_16(679); +emit_16(613); +emit_16(680); +emit_16(614); +emit_16(680); +emit_16(613); +emit_16(680); +emit_16(614); +emit_16(681); +emit_16(615); +emit_16(681); +emit_16(614); +emit_16(681); +emit_16(615); +emit_16(682); +emit_16(616); +emit_16(682); +emit_16(615); +emit_16(682); +emit_16(616); +emit_16(683); +emit_16(617); +emit_16(683); +emit_16(616); +emit_16(683); +emit_16(617); +emit_16(684); +emit_16(618); +emit_16(684); +emit_16(617); +emit_16(684); +emit_16(618); +emit_16(685); +emit_16(619); +emit_16(685); +emit_16(618); +emit_16(685); +emit_16(619); +emit_16(686); +emit_16(620); +emit_16(686); +emit_16(619); +emit_16(686); +emit_16(620); +emit_16(687); +emit_16(621); +emit_16(687); +emit_16(620); +emit_16(687); +emit_16(621); +emit_16(688); +emit_16(622); +emit_16(688); +emit_16(621); +emit_16(688); +emit_16(622); +emit_16(689); +emit_16(623); +emit_16(689); +emit_16(622); +emit_16(689); +emit_16(623); +emit_16(690); +emit_16(624); +emit_16(690); +emit_16(623); +emit_16(690); +emit_16(624); +emit_16(691); +emit_16(625); +emit_16(691); +emit_16(624); +emit_16(691); +emit_16(625); +emit_16(692); +emit_16(626); +emit_16(692); +emit_16(625); +emit_16(692); +emit_16(626); +emit_16(693); +emit_16(627); +emit_16(693); +emit_16(626); +emit_16(693); +emit_16(627); +emit_16(694); +emit_16(628); +emit_16(694); +emit_16(627); +emit_16(694); +emit_16(628); +emit_16(695); +emit_16(629); +emit_16(695); +emit_16(628); +emit_16(695); +emit_16(629); +emit_16(696); +emit_16(630); +emit_16(696); +emit_16(629); +emit_16(696); +emit_16(630); +emit_16(697); +emit_16(631); +emit_16(697); +emit_16(630); +emit_16(697); +emit_16(631); +emit_16(698); +emit_16(632); +emit_16(698); +emit_16(631); +emit_16(698); +emit_16(632); +emit_16(699); +emit_16(633); +emit_16(699); +emit_16(632); +emit_16(699); +emit_16(633); +emit_16(700); +emit_16(634); +emit_16(700); +emit_16(633); +emit_16(700); +emit_16(634); +emit_16(701); +emit_16(635); +emit_16(701); +emit_16(634); +emit_16(701); +emit_16(635); +emit_16(702); +emit_16(636); +emit_16(702); +emit_16(635); +emit_16(702); +emit_16(636); +emit_16(703); +emit_16(637); +emit_16(703); +emit_16(636); +emit_16(703); +emit_16(637); +emit_16(704); +emit_16(638); +emit_16(704); +emit_16(637); +emit_16(704); +emit_16(638); +emit_16(705); +emit_16(639); +emit_16(705); +emit_16(638); +emit_16(705); +emit_16(639); +emit_16(706); +emit_16(640); +emit_16(706); +emit_16(639); +emit_16(706); +emit_16(640); +emit_16(707); +emit_16(641); +emit_16(707); +emit_16(640); +emit_16(707); +emit_16(641); +emit_16(708); +emit_16(642); +emit_16(708); +emit_16(641); +emit_16(708); +emit_16(642); +emit_16(709); +emit_16(643); +emit_16(709); +emit_16(642); +emit_16(709); +emit_16(643); +emit_16(710); +emit_16(644); +emit_16(710); +emit_16(643); +emit_16(710); +emit_16(644); +emit_16(711); +emit_16(645); +emit_16(711); +emit_16(644); +emit_16(711); +emit_16(645); +emit_16(712); +emit_16(646); +emit_16(712); +emit_16(645); +emit_16(712); +emit_16(646); +emit_16(713); +emit_16(647); +emit_16(713); +emit_16(646); +emit_16(713); +emit_16(647); +emit_16(714); +emit_16(648); +emit_16(714); +emit_16(647); +emit_16(714); +emit_16(648); +emit_16(715); +emit_16(649); +emit_16(715); +emit_16(648); +emit_16(715); +emit_16(649); +emit_16(716); +emit_16(650); +emit_16(716); +emit_16(649); +emit_16(716); +emit_16(650); +emit_16(717); +emit_16(651); +emit_16(717); +emit_16(650); +emit_16(717); +emit_16(651); +emit_16(718); +emit_16(652); +emit_16(718); +emit_16(651); +emit_16(718); +emit_16(652); +emit_16(719); +emit_16(653); +emit_16(719); +emit_16(652); +emit_16(719); +emit_16(653); +emit_16(720); +emit_16(654); +emit_16(720); +emit_16(653); +emit_16(720); +emit_16(654); +emit_16(721); +emit_16(655); +emit_16(721); +emit_16(654); +emit_16(721); +emit_16(655); +emit_16(722); +emit_16(656); +emit_16(722); +emit_16(655); +emit_16(722); +emit_16(656); +emit_16(723); +emit_16(657); +emit_16(723); +emit_16(656); +emit_16(723); +emit_16(657); +emit_16(724); +emit_16(658); +emit_16(724); +emit_16(657); +emit_16(724); +emit_16(658); +emit_16(725); +emit_16(659); +emit_16(725); +emit_16(658); +emit_16(726); +emit_16(660); +emit_16(727); +emit_16(661); +emit_16(727); +emit_16(660); +emit_16(727); +emit_16(661); +emit_16(728); +emit_16(662); +emit_16(728); +emit_16(661); +emit_16(728); +emit_16(662); +emit_16(729); +emit_16(663); +emit_16(729); +emit_16(662); +emit_16(729); +emit_16(663); +emit_16(730); +emit_16(664); +emit_16(730); +emit_16(663); +emit_16(730); +emit_16(664); +emit_16(731); +emit_16(665); +emit_16(731); +emit_16(664); +emit_16(731); +emit_16(665); +emit_16(732); +emit_16(666); +emit_16(732); +emit_16(665); +emit_16(732); +emit_16(666); +emit_16(733); +emit_16(667); +emit_16(733); +emit_16(666); +emit_16(733); +emit_16(667); +emit_16(734); +emit_16(668); +emit_16(734); +emit_16(667); +emit_16(734); +emit_16(668); +emit_16(735); +emit_16(669); +emit_16(735); +emit_16(668); +emit_16(735); +emit_16(669); +emit_16(736); +emit_16(670); +emit_16(736); +emit_16(669); +emit_16(736); +emit_16(670); +emit_16(737); +emit_16(671); +emit_16(737); +emit_16(670); +emit_16(737); +emit_16(671); +emit_16(738); +emit_16(672); +emit_16(738); +emit_16(671); +emit_16(738); +emit_16(672); +emit_16(739); +emit_16(673); +emit_16(739); +emit_16(672); +emit_16(739); +emit_16(673); +emit_16(740); +emit_16(674); +emit_16(740); +emit_16(673); +emit_16(740); +emit_16(674); +emit_16(741); +emit_16(675); +emit_16(741); +emit_16(674); +emit_16(741); +emit_16(675); +emit_16(742); +emit_16(676); +emit_16(742); +emit_16(675); +emit_16(742); +emit_16(676); +emit_16(743); +emit_16(677); +emit_16(743); +emit_16(676); +emit_16(743); +emit_16(677); +emit_16(744); +emit_16(678); +emit_16(744); +emit_16(677); +emit_16(744); +emit_16(678); +emit_16(745); +emit_16(679); +emit_16(745); +emit_16(678); +emit_16(745); +emit_16(679); +emit_16(746); +emit_16(680); +emit_16(746); +emit_16(679); +emit_16(746); +emit_16(680); +emit_16(747); +emit_16(681); +emit_16(747); +emit_16(680); +emit_16(747); +emit_16(681); +emit_16(748); +emit_16(682); +emit_16(748); +emit_16(681); +emit_16(748); +emit_16(682); +emit_16(749); +emit_16(683); +emit_16(749); +emit_16(682); +emit_16(749); +emit_16(683); +emit_16(750); +emit_16(684); +emit_16(750); +emit_16(683); +emit_16(750); +emit_16(684); +emit_16(751); +emit_16(685); +emit_16(751); +emit_16(684); +emit_16(751); +emit_16(685); +emit_16(752); +emit_16(686); +emit_16(752); +emit_16(685); +emit_16(752); +emit_16(686); +emit_16(753); +emit_16(687); +emit_16(753); +emit_16(686); +emit_16(753); +emit_16(687); +emit_16(754); +emit_16(688); +emit_16(754); +emit_16(687); +emit_16(754); +emit_16(688); +emit_16(755); +emit_16(689); +emit_16(755); +emit_16(688); +emit_16(755); +emit_16(689); +emit_16(756); +emit_16(690); +emit_16(756); +emit_16(689); +emit_16(756); +emit_16(690); +emit_16(757); +emit_16(691); +emit_16(757); +emit_16(690); +emit_16(757); +emit_16(691); +emit_16(758); +emit_16(692); +emit_16(758); +emit_16(691); +emit_16(758); +emit_16(692); +emit_16(759); +emit_16(693); +emit_16(759); +emit_16(692); +emit_16(759); +emit_16(693); +emit_16(760); +emit_16(694); +emit_16(760); +emit_16(693); +emit_16(760); +emit_16(694); +emit_16(761); +emit_16(695); +emit_16(761); +emit_16(694); +emit_16(761); +emit_16(695); +emit_16(762); +emit_16(696); +emit_16(762); +emit_16(695); +emit_16(762); +emit_16(696); +emit_16(763); +emit_16(697); +emit_16(763); +emit_16(696); +emit_16(763); +emit_16(697); +emit_16(764); +emit_16(698); +emit_16(764); +emit_16(697); +emit_16(764); +emit_16(698); +emit_16(765); +emit_16(699); +emit_16(765); +emit_16(698); +emit_16(765); +emit_16(699); +emit_16(766); +emit_16(700); +emit_16(766); +emit_16(699); +emit_16(766); +emit_16(700); +emit_16(767); +emit_16(701); +emit_16(767); +emit_16(700); +emit_16(767); +emit_16(701); +emit_16(768); +emit_16(702); +emit_16(768); +emit_16(701); +emit_16(768); +emit_16(702); +emit_16(769); +emit_16(703); +emit_16(769); +emit_16(702); +emit_16(769); +emit_16(703); +emit_16(770); +emit_16(704); +emit_16(770); +emit_16(703); +emit_16(770); +emit_16(704); +emit_16(771); +emit_16(705); +emit_16(771); +emit_16(704); +emit_16(771); +emit_16(705); +emit_16(772); +emit_16(706); +emit_16(772); +emit_16(705); +emit_16(772); +emit_16(706); +emit_16(773); +emit_16(707); +emit_16(773); +emit_16(706); +emit_16(773); +emit_16(707); +emit_16(774); +emit_16(708); +emit_16(774); +emit_16(707); +emit_16(774); +emit_16(708); +emit_16(775); +emit_16(709); +emit_16(775); +emit_16(708); +emit_16(775); +emit_16(709); +emit_16(776); +emit_16(710); +emit_16(776); +emit_16(709); +emit_16(776); +emit_16(710); +emit_16(777); +emit_16(711); +emit_16(777); +emit_16(710); +emit_16(777); +emit_16(711); +emit_16(778); +emit_16(712); +emit_16(778); +emit_16(711); +emit_16(778); +emit_16(712); +emit_16(779); +emit_16(713); +emit_16(779); +emit_16(712); +emit_16(779); +emit_16(713); +emit_16(780); +emit_16(714); +emit_16(780); +emit_16(713); +emit_16(780); +emit_16(714); +emit_16(781); +emit_16(715); +emit_16(781); +emit_16(714); +emit_16(781); +emit_16(715); +emit_16(782); +emit_16(716); +emit_16(782); +emit_16(715); +emit_16(782); +emit_16(716); +emit_16(783); +emit_16(717); +emit_16(783); +emit_16(716); +emit_16(783); +emit_16(717); +emit_16(784); +emit_16(718); +emit_16(784); +emit_16(717); +emit_16(784); +emit_16(718); +emit_16(785); +emit_16(719); +emit_16(785); +emit_16(718); +emit_16(785); +emit_16(719); +emit_16(786); +emit_16(720); +emit_16(786); +emit_16(719); +emit_16(786); +emit_16(720); +emit_16(787); +emit_16(721); +emit_16(787); +emit_16(720); +emit_16(787); +emit_16(721); +emit_16(788); +emit_16(722); +emit_16(788); +emit_16(721); +emit_16(788); +emit_16(722); +emit_16(789); +emit_16(723); +emit_16(789); +emit_16(722); +emit_16(789); +emit_16(723); +emit_16(790); +emit_16(724); +emit_16(790); +emit_16(723); +emit_16(790); +emit_16(724); +emit_16(791); +emit_16(725); +emit_16(791); +emit_16(724); +emit_16(792); +emit_16(726); +emit_16(793); +emit_16(727); +emit_16(793); +emit_16(726); +emit_16(793); +emit_16(727); +emit_16(794); +emit_16(728); +emit_16(794); +emit_16(727); +emit_16(794); +emit_16(728); +emit_16(795); +emit_16(729); +emit_16(795); +emit_16(728); +emit_16(795); +emit_16(729); +emit_16(796); +emit_16(730); +emit_16(796); +emit_16(729); +emit_16(796); +emit_16(730); +emit_16(797); +emit_16(731); +emit_16(797); +emit_16(730); +emit_16(797); +emit_16(731); +emit_16(798); +emit_16(732); +emit_16(798); +emit_16(731); +emit_16(798); +emit_16(732); +emit_16(799); +emit_16(733); +emit_16(799); +emit_16(732); +emit_16(799); +emit_16(733); +emit_16(800); +emit_16(734); +emit_16(800); +emit_16(733); +emit_16(800); +emit_16(734); +emit_16(801); +emit_16(735); +emit_16(801); +emit_16(734); +emit_16(801); +emit_16(735); +emit_16(802); +emit_16(736); +emit_16(802); +emit_16(735); +emit_16(802); +emit_16(736); +emit_16(803); +emit_16(737); +emit_16(803); +emit_16(736); +emit_16(803); +emit_16(737); +emit_16(804); +emit_16(738); +emit_16(804); +emit_16(737); +emit_16(804); +emit_16(738); +emit_16(805); +emit_16(739); +emit_16(805); +emit_16(738); +emit_16(805); +emit_16(739); +emit_16(806); +emit_16(740); +emit_16(806); +emit_16(739); +emit_16(806); +emit_16(740); +emit_16(807); +emit_16(741); +emit_16(807); +emit_16(740); +emit_16(807); +emit_16(741); +emit_16(808); +emit_16(742); +emit_16(808); +emit_16(741); +emit_16(808); +emit_16(742); +emit_16(809); +emit_16(743); +emit_16(809); +emit_16(742); +emit_16(809); +emit_16(743); +emit_16(810); +emit_16(744); +emit_16(810); +emit_16(743); +emit_16(810); +emit_16(744); +emit_16(811); +emit_16(745); +emit_16(811); +emit_16(744); +emit_16(811); +emit_16(745); +emit_16(812); +emit_16(746); +emit_16(812); +emit_16(745); +emit_16(812); +emit_16(746); +emit_16(813); +emit_16(747); +emit_16(813); +emit_16(746); +emit_16(813); +emit_16(747); +emit_16(814); +emit_16(748); +emit_16(814); +emit_16(747); +emit_16(814); +emit_16(748); +emit_16(815); +emit_16(749); +emit_16(815); +emit_16(748); +emit_16(815); +emit_16(749); +emit_16(816); +emit_16(750); +emit_16(816); +emit_16(749); +emit_16(816); +emit_16(750); +emit_16(817); +emit_16(751); +emit_16(817); +emit_16(750); +emit_16(817); +emit_16(751); +emit_16(818); +emit_16(752); +emit_16(818); +emit_16(751); +emit_16(818); +emit_16(752); +emit_16(819); +emit_16(753); +emit_16(819); +emit_16(752); +emit_16(819); +emit_16(753); +emit_16(820); +emit_16(754); +emit_16(820); +emit_16(753); +emit_16(820); +emit_16(754); +emit_16(821); +emit_16(755); +emit_16(821); +emit_16(754); +emit_16(821); +emit_16(755); +emit_16(822); +emit_16(756); +emit_16(822); +emit_16(755); +emit_16(822); +emit_16(756); +emit_16(823); +emit_16(757); +emit_16(823); +emit_16(756); +emit_16(823); +emit_16(757); +emit_16(824); +emit_16(758); +emit_16(824); +emit_16(757); +emit_16(824); +emit_16(758); +emit_16(825); +emit_16(759); +emit_16(825); +emit_16(758); +emit_16(825); +emit_16(759); +emit_16(826); +emit_16(760); +emit_16(826); +emit_16(759); +emit_16(826); +emit_16(760); +emit_16(827); +emit_16(761); +emit_16(827); +emit_16(760); +emit_16(827); +emit_16(761); +emit_16(828); +emit_16(762); +emit_16(828); +emit_16(761); +emit_16(828); +emit_16(762); +emit_16(829); +emit_16(763); +emit_16(829); +emit_16(762); +emit_16(829); +emit_16(763); +emit_16(830); +emit_16(764); +emit_16(830); +emit_16(763); +emit_16(830); +emit_16(764); +emit_16(831); +emit_16(765); +emit_16(831); +emit_16(764); +emit_16(831); +emit_16(765); +emit_16(832); +emit_16(766); +emit_16(832); +emit_16(765); +emit_16(832); +emit_16(766); +emit_16(833); +emit_16(767); +emit_16(833); +emit_16(766); +emit_16(833); +emit_16(767); +emit_16(834); +emit_16(768); +emit_16(834); +emit_16(767); +emit_16(834); +emit_16(768); +emit_16(835); +emit_16(769); +emit_16(835); +emit_16(768); +emit_16(835); +emit_16(769); +emit_16(836); +emit_16(770); +emit_16(836); +emit_16(769); +emit_16(836); +emit_16(770); +emit_16(837); +emit_16(771); +emit_16(837); +emit_16(770); +emit_16(837); +emit_16(771); +emit_16(838); +emit_16(772); +emit_16(838); +emit_16(771); +emit_16(838); +emit_16(772); +emit_16(839); +emit_16(773); +emit_16(839); +emit_16(772); +emit_16(839); +emit_16(773); +emit_16(840); +emit_16(774); +emit_16(840); +emit_16(773); +emit_16(840); +emit_16(774); +emit_16(841); +emit_16(775); +emit_16(841); +emit_16(774); +emit_16(841); +emit_16(775); +emit_16(842); +emit_16(776); +emit_16(842); +emit_16(775); +emit_16(842); +emit_16(776); +emit_16(843); +emit_16(777); +emit_16(843); +emit_16(776); +emit_16(843); +emit_16(777); +emit_16(844); +emit_16(778); +emit_16(844); +emit_16(777); +emit_16(844); +emit_16(778); +emit_16(845); +emit_16(779); +emit_16(845); +emit_16(778); +emit_16(845); +emit_16(779); +emit_16(846); +emit_16(780); +emit_16(846); +emit_16(779); +emit_16(846); +emit_16(780); +emit_16(847); +emit_16(781); +emit_16(847); +emit_16(780); +emit_16(847); +emit_16(781); +emit_16(848); +emit_16(782); +emit_16(848); +emit_16(781); +emit_16(848); +emit_16(782); +emit_16(849); +emit_16(783); +emit_16(849); +emit_16(782); +emit_16(849); +emit_16(783); +emit_16(850); +emit_16(784); +emit_16(850); +emit_16(783); +emit_16(850); +emit_16(784); +emit_16(851); +emit_16(785); +emit_16(851); +emit_16(784); +emit_16(851); +emit_16(785); +emit_16(852); +emit_16(786); +emit_16(852); +emit_16(785); +emit_16(852); +emit_16(786); +emit_16(853); +emit_16(787); +emit_16(853); +emit_16(786); +emit_16(853); +emit_16(787); +emit_16(854); +emit_16(788); +emit_16(854); +emit_16(787); +emit_16(854); +emit_16(788); +emit_16(855); +emit_16(789); +emit_16(855); +emit_16(788); +emit_16(855); +emit_16(789); +emit_16(856); +emit_16(790); +emit_16(856); +emit_16(789); +emit_16(856); +emit_16(790); +emit_16(857); +emit_16(791); +emit_16(857); +emit_16(790); +emit_16(858); +emit_16(792); +emit_16(859); +emit_16(793); +emit_16(859); +emit_16(792); +emit_16(859); +emit_16(793); +emit_16(860); +emit_16(794); +emit_16(860); +emit_16(793); +emit_16(860); +emit_16(794); +emit_16(861); +emit_16(795); +emit_16(861); +emit_16(794); +emit_16(861); +emit_16(795); +emit_16(862); +emit_16(796); +emit_16(862); +emit_16(795); +emit_16(862); +emit_16(796); +emit_16(863); +emit_16(797); +emit_16(863); +emit_16(796); +emit_16(863); +emit_16(797); +emit_16(864); +emit_16(798); +emit_16(864); +emit_16(797); +emit_16(864); +emit_16(798); +emit_16(865); +emit_16(799); +emit_16(865); +emit_16(798); +emit_16(865); +emit_16(799); +emit_16(866); +emit_16(800); +emit_16(866); +emit_16(799); +emit_16(866); +emit_16(800); +emit_16(867); +emit_16(801); +emit_16(867); +emit_16(800); +emit_16(867); +emit_16(801); +emit_16(868); +emit_16(802); +emit_16(868); +emit_16(801); +emit_16(868); +emit_16(802); +emit_16(869); +emit_16(803); +emit_16(869); +emit_16(802); +emit_16(869); +emit_16(803); +emit_16(870); +emit_16(804); +emit_16(870); +emit_16(803); +emit_16(870); +emit_16(804); +emit_16(871); +emit_16(805); +emit_16(871); +emit_16(804); +emit_16(871); +emit_16(805); +emit_16(872); +emit_16(806); +emit_16(872); +emit_16(805); +emit_16(872); +emit_16(806); +emit_16(873); +emit_16(807); +emit_16(873); +emit_16(806); +emit_16(873); +emit_16(807); +emit_16(874); +emit_16(808); +emit_16(874); +emit_16(807); +emit_16(874); +emit_16(808); +emit_16(875); +emit_16(809); +emit_16(875); +emit_16(808); +emit_16(875); +emit_16(809); +emit_16(876); +emit_16(810); +emit_16(876); +emit_16(809); +emit_16(876); +emit_16(810); +emit_16(877); +emit_16(811); +emit_16(877); +emit_16(810); +emit_16(877); +emit_16(811); +emit_16(878); +emit_16(812); +emit_16(878); +emit_16(811); +emit_16(878); +emit_16(812); +emit_16(879); +emit_16(813); +emit_16(879); +emit_16(812); +emit_16(879); +emit_16(813); +emit_16(880); +emit_16(814); +emit_16(880); +emit_16(813); +emit_16(880); +emit_16(814); +emit_16(881); +emit_16(815); +emit_16(881); +emit_16(814); +emit_16(881); +emit_16(815); +emit_16(882); +emit_16(816); +emit_16(882); +emit_16(815); +emit_16(882); +emit_16(816); +emit_16(883); +emit_16(817); +emit_16(883); +emit_16(816); +emit_16(883); +emit_16(817); +emit_16(884); +emit_16(818); +emit_16(884); +emit_16(817); +emit_16(884); +emit_16(818); +emit_16(885); +emit_16(819); +emit_16(885); +emit_16(818); +emit_16(885); +emit_16(819); +emit_16(886); +emit_16(820); +emit_16(886); +emit_16(819); +emit_16(886); +emit_16(820); +emit_16(887); +emit_16(821); +emit_16(887); +emit_16(820); +emit_16(887); +emit_16(821); +emit_16(888); +emit_16(822); +emit_16(888); +emit_16(821); +emit_16(888); +emit_16(822); +emit_16(889); +emit_16(823); +emit_16(889); +emit_16(822); +emit_16(889); +emit_16(823); +emit_16(890); +emit_16(824); +emit_16(890); +emit_16(823); +emit_16(890); +emit_16(824); +emit_16(891); +emit_16(825); +emit_16(891); +emit_16(824); +emit_16(891); +emit_16(825); +emit_16(892); +emit_16(826); +emit_16(892); +emit_16(825); +emit_16(892); +emit_16(826); +emit_16(893); +emit_16(827); +emit_16(893); +emit_16(826); +emit_16(893); +emit_16(827); +emit_16(894); +emit_16(828); +emit_16(894); +emit_16(827); +emit_16(894); +emit_16(828); +emit_16(895); +emit_16(829); +emit_16(895); +emit_16(828); +emit_16(895); +emit_16(829); +emit_16(896); +emit_16(830); +emit_16(896); +emit_16(829); +emit_16(896); +emit_16(830); +emit_16(897); +emit_16(831); +emit_16(897); +emit_16(830); +emit_16(897); +emit_16(831); +emit_16(898); +emit_16(832); +emit_16(898); +emit_16(831); +emit_16(898); +emit_16(832); +emit_16(899); +emit_16(833); +emit_16(899); +emit_16(832); +emit_16(899); +emit_16(833); +emit_16(900); +emit_16(834); +emit_16(900); +emit_16(833); +emit_16(900); +emit_16(834); +emit_16(901); +emit_16(835); +emit_16(901); +emit_16(834); +emit_16(901); +emit_16(835); +emit_16(902); +emit_16(836); +emit_16(902); +emit_16(835); +emit_16(902); +emit_16(836); +emit_16(903); +emit_16(837); +emit_16(903); +emit_16(836); +emit_16(903); +emit_16(837); +emit_16(904); +emit_16(838); +emit_16(904); +emit_16(837); +emit_16(904); +emit_16(838); +emit_16(905); +emit_16(839); +emit_16(905); +emit_16(838); +emit_16(905); +emit_16(839); +emit_16(906); +emit_16(840); +emit_16(906); +emit_16(839); +emit_16(906); +emit_16(840); +emit_16(907); +emit_16(841); +emit_16(907); +emit_16(840); +emit_16(907); +emit_16(841); +emit_16(908); +emit_16(842); +emit_16(908); +emit_16(841); +emit_16(908); +emit_16(842); +emit_16(909); +emit_16(843); +emit_16(909); +emit_16(842); +emit_16(909); +emit_16(843); +emit_16(910); +emit_16(844); +emit_16(910); +emit_16(843); +emit_16(910); +emit_16(844); +emit_16(911); +emit_16(845); +emit_16(911); +emit_16(844); +emit_16(911); +emit_16(845); +emit_16(912); +emit_16(846); +emit_16(912); +emit_16(845); +emit_16(912); +emit_16(846); +emit_16(913); +emit_16(847); +emit_16(913); +emit_16(846); +emit_16(913); +emit_16(847); +emit_16(914); +emit_16(848); +emit_16(914); +emit_16(847); +emit_16(914); +emit_16(848); +emit_16(915); +emit_16(849); +emit_16(915); +emit_16(848); +emit_16(915); +emit_16(849); +emit_16(916); +emit_16(850); +emit_16(916); +emit_16(849); +emit_16(916); +emit_16(850); +emit_16(917); +emit_16(851); +emit_16(917); +emit_16(850); +emit_16(917); +emit_16(851); +emit_16(918); +emit_16(852); +emit_16(918); +emit_16(851); +emit_16(918); +emit_16(852); +emit_16(919); +emit_16(853); +emit_16(919); +emit_16(852); +emit_16(919); +emit_16(853); +emit_16(920); +emit_16(854); +emit_16(920); +emit_16(853); +emit_16(920); +emit_16(854); +emit_16(921); +emit_16(855); +emit_16(921); +emit_16(854); +emit_16(921); +emit_16(855); +emit_16(922); +emit_16(856); +emit_16(922); +emit_16(855); +emit_16(922); +emit_16(856); +emit_16(923); +emit_16(857); +emit_16(923); +emit_16(856); +emit_16(924); +emit_16(858); +emit_16(925); +emit_16(859); +emit_16(925); +emit_16(858); +emit_16(925); +emit_16(859); +emit_16(926); +emit_16(860); +emit_16(926); +emit_16(859); +emit_16(926); +emit_16(860); +emit_16(927); +emit_16(861); +emit_16(927); +emit_16(860); +emit_16(927); +emit_16(861); +emit_16(928); +emit_16(862); +emit_16(928); +emit_16(861); +emit_16(928); +emit_16(862); +emit_16(929); +emit_16(863); +emit_16(929); +emit_16(862); +emit_16(929); +emit_16(863); +emit_16(930); +emit_16(864); +emit_16(930); +emit_16(863); +emit_16(930); +emit_16(864); +emit_16(931); +emit_16(865); +emit_16(931); +emit_16(864); +emit_16(931); +emit_16(865); +emit_16(932); +emit_16(866); +emit_16(932); +emit_16(865); +emit_16(932); +emit_16(866); +emit_16(933); +emit_16(867); +emit_16(933); +emit_16(866); +emit_16(933); +emit_16(867); +emit_16(934); +emit_16(868); +emit_16(934); +emit_16(867); +emit_16(934); +emit_16(868); +emit_16(935); +emit_16(869); +emit_16(935); +emit_16(868); +emit_16(935); +emit_16(869); +emit_16(936); +emit_16(870); +emit_16(936); +emit_16(869); +emit_16(936); +emit_16(870); +emit_16(937); +emit_16(871); +emit_16(937); +emit_16(870); +emit_16(937); +emit_16(871); +emit_16(938); +emit_16(872); +emit_16(938); +emit_16(871); +emit_16(938); +emit_16(872); +emit_16(939); +emit_16(873); +emit_16(939); +emit_16(872); +emit_16(939); +emit_16(873); +emit_16(940); +emit_16(874); +emit_16(940); +emit_16(873); +emit_16(940); +emit_16(874); +emit_16(941); +emit_16(875); +emit_16(941); +emit_16(874); +emit_16(941); +emit_16(875); +emit_16(942); +emit_16(876); +emit_16(942); +emit_16(875); +emit_16(942); +emit_16(876); +emit_16(943); +emit_16(877); +emit_16(943); +emit_16(876); +emit_16(943); +emit_16(877); +emit_16(944); +emit_16(878); +emit_16(944); +emit_16(877); +emit_16(944); +emit_16(878); +emit_16(945); +emit_16(879); +emit_16(945); +emit_16(878); +emit_16(945); +emit_16(879); +emit_16(946); +emit_16(880); +emit_16(946); +emit_16(879); +emit_16(946); +emit_16(880); +emit_16(947); +emit_16(881); +emit_16(947); +emit_16(880); +emit_16(947); +emit_16(881); +emit_16(948); +emit_16(882); +emit_16(948); +emit_16(881); +emit_16(948); +emit_16(882); +emit_16(949); +emit_16(883); +emit_16(949); +emit_16(882); +emit_16(949); +emit_16(883); +emit_16(950); +emit_16(884); +emit_16(950); +emit_16(883); +emit_16(950); +emit_16(884); +emit_16(951); +emit_16(885); +emit_16(951); +emit_16(884); +emit_16(951); +emit_16(885); +emit_16(952); +emit_16(886); +emit_16(952); +emit_16(885); +emit_16(952); +emit_16(886); +emit_16(953); +emit_16(887); +emit_16(953); +emit_16(886); +emit_16(953); +emit_16(887); +emit_16(954); +emit_16(888); +emit_16(954); +emit_16(887); +emit_16(954); +emit_16(888); +emit_16(955); +emit_16(889); +emit_16(955); +emit_16(888); +emit_16(955); +emit_16(889); +emit_16(956); +emit_16(890); +emit_16(956); +emit_16(889); +emit_16(956); +emit_16(890); +emit_16(957); +emit_16(891); +emit_16(957); +emit_16(890); +emit_16(957); +emit_16(891); +emit_16(958); +emit_16(892); +emit_16(958); +emit_16(891); +emit_16(958); +emit_16(892); +emit_16(959); +emit_16(893); +emit_16(959); +emit_16(892); +emit_16(959); +emit_16(893); +emit_16(960); +emit_16(894); +emit_16(960); +emit_16(893); +emit_16(960); +emit_16(894); +emit_16(961); +emit_16(895); +emit_16(961); +emit_16(894); +emit_16(961); +emit_16(895); +emit_16(962); +emit_16(896); +emit_16(962); +emit_16(895); +emit_16(962); +emit_16(896); +emit_16(963); +emit_16(897); +emit_16(963); +emit_16(896); +emit_16(963); +emit_16(897); +emit_16(964); +emit_16(898); +emit_16(964); +emit_16(897); +emit_16(964); +emit_16(898); +emit_16(965); +emit_16(899); +emit_16(965); +emit_16(898); +emit_16(965); +emit_16(899); +emit_16(966); +emit_16(900); +emit_16(966); +emit_16(899); +emit_16(966); +emit_16(900); +emit_16(967); +emit_16(901); +emit_16(967); +emit_16(900); +emit_16(967); +emit_16(901); +emit_16(968); +emit_16(902); +emit_16(968); +emit_16(901); +emit_16(968); +emit_16(902); +emit_16(969); +emit_16(903); +emit_16(969); +emit_16(902); +emit_16(969); +emit_16(903); +emit_16(970); +emit_16(904); +emit_16(970); +emit_16(903); +emit_16(970); +emit_16(904); +emit_16(971); +emit_16(905); +emit_16(971); +emit_16(904); +emit_16(971); +emit_16(905); +emit_16(972); +emit_16(906); +emit_16(972); +emit_16(905); +emit_16(972); +emit_16(906); +emit_16(973); +emit_16(907); +emit_16(973); +emit_16(906); +emit_16(973); +emit_16(907); +emit_16(974); +emit_16(908); +emit_16(974); +emit_16(907); +emit_16(974); +emit_16(908); +emit_16(975); +emit_16(909); +emit_16(975); +emit_16(908); +emit_16(975); +emit_16(909); +emit_16(976); +emit_16(910); +emit_16(976); +emit_16(909); +emit_16(976); +emit_16(910); +emit_16(977); +emit_16(911); +emit_16(977); +emit_16(910); +emit_16(977); +emit_16(911); +emit_16(978); +emit_16(912); +emit_16(978); +emit_16(911); +emit_16(978); +emit_16(912); +emit_16(979); +emit_16(913); +emit_16(979); +emit_16(912); +emit_16(979); +emit_16(913); +emit_16(980); +emit_16(914); +emit_16(980); +emit_16(913); +emit_16(980); +emit_16(914); +emit_16(981); +emit_16(915); +emit_16(981); +emit_16(914); +emit_16(981); +emit_16(915); +emit_16(982); +emit_16(916); +emit_16(982); +emit_16(915); +emit_16(982); +emit_16(916); +emit_16(983); +emit_16(917); +emit_16(983); +emit_16(916); +emit_16(983); +emit_16(917); +emit_16(984); +emit_16(918); +emit_16(984); +emit_16(917); +emit_16(984); +emit_16(918); +emit_16(985); +emit_16(919); +emit_16(985); +emit_16(918); +emit_16(985); +emit_16(919); +emit_16(986); +emit_16(920); +emit_16(986); +emit_16(919); +emit_16(986); +emit_16(920); +emit_16(987); +emit_16(921); +emit_16(987); +emit_16(920); +emit_16(987); +emit_16(921); +emit_16(988); +emit_16(922); +emit_16(988); +emit_16(921); +emit_16(988); +emit_16(922); +emit_16(989); +emit_16(923); +emit_16(989); +emit_16(922); +emit_16(990); +emit_16(924); +emit_16(991); +emit_16(925); +emit_16(991); +emit_16(924); +emit_16(991); +emit_16(925); +emit_16(992); +emit_16(926); +emit_16(992); +emit_16(925); +emit_16(992); +emit_16(926); +emit_16(993); +emit_16(927); +emit_16(993); +emit_16(926); +emit_16(993); +emit_16(927); +emit_16(994); +emit_16(928); +emit_16(994); +emit_16(927); +emit_16(994); +emit_16(928); +emit_16(995); +emit_16(929); +emit_16(995); +emit_16(928); +emit_16(995); +emit_16(929); +emit_16(996); +emit_16(930); +emit_16(996); +emit_16(929); +emit_16(996); +emit_16(930); +emit_16(997); +emit_16(931); +emit_16(997); +emit_16(930); +emit_16(997); +emit_16(931); +emit_16(998); +emit_16(932); +emit_16(998); +emit_16(931); +emit_16(998); +emit_16(932); +emit_16(999); +emit_16(933); +emit_16(999); +emit_16(932); +emit_16(999); +emit_16(933); +emit_16(1000); +emit_16(934); +emit_16(1000); +emit_16(933); +emit_16(1000); +emit_16(934); +emit_16(1001); +emit_16(935); +emit_16(1001); +emit_16(934); +emit_16(1001); +emit_16(935); +emit_16(1002); +emit_16(936); +emit_16(1002); +emit_16(935); +emit_16(1002); +emit_16(936); +emit_16(1003); +emit_16(937); +emit_16(1003); +emit_16(936); +emit_16(1003); +emit_16(937); +emit_16(1004); +emit_16(938); +emit_16(1004); +emit_16(937); +emit_16(1004); +emit_16(938); +emit_16(1005); +emit_16(939); +emit_16(1005); +emit_16(938); +emit_16(1005); +emit_16(939); +emit_16(1006); +emit_16(940); +emit_16(1006); +emit_16(939); +emit_16(1006); +emit_16(940); +emit_16(1007); +emit_16(941); +emit_16(1007); +emit_16(940); +emit_16(1007); +emit_16(941); +emit_16(1008); +emit_16(942); +emit_16(1008); +emit_16(941); +emit_16(1008); +emit_16(942); +emit_16(1009); +emit_16(943); +emit_16(1009); +emit_16(942); +emit_16(1009); +emit_16(943); +emit_16(1010); +emit_16(944); +emit_16(1010); +emit_16(943); +emit_16(1010); +emit_16(944); +emit_16(1011); +emit_16(945); +emit_16(1011); +emit_16(944); +emit_16(1011); +emit_16(945); +emit_16(1012); +emit_16(946); +emit_16(1012); +emit_16(945); +emit_16(1012); +emit_16(946); +emit_16(1013); +emit_16(947); +emit_16(1013); +emit_16(946); +emit_16(1013); +emit_16(947); +emit_16(1014); +emit_16(948); +emit_16(1014); +emit_16(947); +emit_16(1014); +emit_16(948); +emit_16(1015); +emit_16(949); +emit_16(1015); +emit_16(948); +emit_16(1015); +emit_16(949); +emit_16(1016); +emit_16(950); +emit_16(1016); +emit_16(949); +emit_16(1016); +emit_16(950); +emit_16(1017); +emit_16(951); +emit_16(1017); +emit_16(950); +emit_16(1017); +emit_16(951); +emit_16(1018); +emit_16(952); +emit_16(1018); +emit_16(951); +emit_16(1018); +emit_16(952); +emit_16(1019); +emit_16(953); +emit_16(1019); +emit_16(952); +emit_16(1019); +emit_16(953); +emit_16(1020); +emit_16(954); +emit_16(1020); +emit_16(953); +emit_16(1020); +emit_16(954); +emit_16(1021); +emit_16(955); +emit_16(1021); +emit_16(954); +emit_16(1021); +emit_16(955); +emit_16(1022); +emit_16(956); +emit_16(1022); +emit_16(955); +emit_16(1022); +emit_16(956); +emit_16(1023); +emit_16(957); +emit_16(1023); +emit_16(956); +emit_16(1023); +emit_16(957); +emit_16(1024); +emit_16(958); +emit_16(1024); +emit_16(957); +emit_16(1024); +emit_16(958); +emit_16(1025); +emit_16(959); +emit_16(1025); +emit_16(958); +emit_16(1025); +emit_16(959); +emit_16(1026); +emit_16(960); +emit_16(1026); +emit_16(959); +emit_16(1026); +emit_16(960); +emit_16(1027); +emit_16(961); +emit_16(1027); +emit_16(960); +emit_16(1027); +emit_16(961); +emit_16(1028); +emit_16(962); +emit_16(1028); +emit_16(961); +emit_16(1028); +emit_16(962); +emit_16(1029); +emit_16(963); +emit_16(1029); +emit_16(962); +emit_16(1029); +emit_16(963); +emit_16(1030); +emit_16(964); +emit_16(1030); +emit_16(963); +emit_16(1030); +emit_16(964); +emit_16(1031); +emit_16(965); +emit_16(1031); +emit_16(964); +emit_16(1031); +emit_16(965); +emit_16(1032); +emit_16(966); +emit_16(1032); +emit_16(965); +emit_16(1032); +emit_16(966); +emit_16(1033); +emit_16(967); +emit_16(1033); +emit_16(966); +emit_16(1033); +emit_16(967); +emit_16(1034); +emit_16(968); +emit_16(1034); +emit_16(967); +emit_16(1034); +emit_16(968); +emit_16(1035); +emit_16(969); +emit_16(1035); +emit_16(968); +emit_16(1035); +emit_16(969); +emit_16(1036); +emit_16(970); +emit_16(1036); +emit_16(969); +emit_16(1036); +emit_16(970); +emit_16(1037); +emit_16(971); +emit_16(1037); +emit_16(970); +emit_16(1037); +emit_16(971); +emit_16(1038); +emit_16(972); +emit_16(1038); +emit_16(971); +emit_16(1038); +emit_16(972); +emit_16(1039); +emit_16(973); +emit_16(1039); +emit_16(972); +emit_16(1039); +emit_16(973); +emit_16(1040); +emit_16(974); +emit_16(1040); +emit_16(973); +emit_16(1040); +emit_16(974); +emit_16(1041); +emit_16(975); +emit_16(1041); +emit_16(974); +emit_16(1041); +emit_16(975); +emit_16(1042); +emit_16(976); +emit_16(1042); +emit_16(975); +emit_16(1042); +emit_16(976); +emit_16(1043); +emit_16(977); +emit_16(1043); +emit_16(976); +emit_16(1043); +emit_16(977); +emit_16(1044); +emit_16(978); +emit_16(1044); +emit_16(977); +emit_16(1044); +emit_16(978); +emit_16(1045); +emit_16(979); +emit_16(1045); +emit_16(978); +emit_16(1045); +emit_16(979); +emit_16(1046); +emit_16(980); +emit_16(1046); +emit_16(979); +emit_16(1046); +emit_16(980); +emit_16(1047); +emit_16(981); +emit_16(1047); +emit_16(980); +emit_16(1047); +emit_16(981); +emit_16(1048); +emit_16(982); +emit_16(1048); +emit_16(981); +emit_16(1048); +emit_16(982); +emit_16(1049); +emit_16(983); +emit_16(1049); +emit_16(982); +emit_16(1049); +emit_16(983); +emit_16(1050); +emit_16(984); +emit_16(1050); +emit_16(983); +emit_16(1050); +emit_16(984); +emit_16(1051); +emit_16(985); +emit_16(1051); +emit_16(984); +emit_16(1051); +emit_16(985); +emit_16(1052); +emit_16(986); +emit_16(1052); +emit_16(985); +emit_16(1052); +emit_16(986); +emit_16(1053); +emit_16(987); +emit_16(1053); +emit_16(986); +emit_16(1053); +emit_16(987); +emit_16(1054); +emit_16(988); +emit_16(1054); +emit_16(987); +emit_16(1054); +emit_16(988); +emit_16(1055); +emit_16(989); +emit_16(1055); +emit_16(988); +emit_16(1056); +emit_16(990); +emit_16(1057); +emit_16(991); +emit_16(1057); +emit_16(990); +emit_16(1057); +emit_16(991); +emit_16(1058); +emit_16(992); +emit_16(1058); +emit_16(991); +emit_16(1058); +emit_16(992); +emit_16(1059); +emit_16(993); +emit_16(1059); +emit_16(992); +emit_16(1059); +emit_16(993); +emit_16(1060); +emit_16(994); +emit_16(1060); +emit_16(993); +emit_16(1060); +emit_16(994); +emit_16(1061); +emit_16(995); +emit_16(1061); +emit_16(994); +emit_16(1061); +emit_16(995); +emit_16(1062); +emit_16(996); +emit_16(1062); +emit_16(995); +emit_16(1062); +emit_16(996); +emit_16(1063); +emit_16(997); +emit_16(1063); +emit_16(996); +emit_16(1063); +emit_16(997); +emit_16(1064); +emit_16(998); +emit_16(1064); +emit_16(997); +emit_16(1064); +emit_16(998); +emit_16(1065); +emit_16(999); +emit_16(1065); +emit_16(998); +emit_16(1065); +emit_16(999); +emit_16(1066); +emit_16(1000); +emit_16(1066); +emit_16(999); +emit_16(1066); +emit_16(1000); +emit_16(1067); +emit_16(1001); +emit_16(1067); +emit_16(1000); +emit_16(1067); +emit_16(1001); +emit_16(1068); +emit_16(1002); +emit_16(1068); +emit_16(1001); +emit_16(1068); +emit_16(1002); +emit_16(1069); +emit_16(1003); +emit_16(1069); +emit_16(1002); +emit_16(1069); +emit_16(1003); +emit_16(1070); +emit_16(1004); +emit_16(1070); +emit_16(1003); +emit_16(1070); +emit_16(1004); +emit_16(1071); +emit_16(1005); +emit_16(1071); +emit_16(1004); +emit_16(1071); +emit_16(1005); +emit_16(1072); +emit_16(1006); +emit_16(1072); +emit_16(1005); +emit_16(1072); +emit_16(1006); +emit_16(1073); +emit_16(1007); +emit_16(1073); +emit_16(1006); +emit_16(1073); +emit_16(1007); +emit_16(1074); +emit_16(1008); +emit_16(1074); +emit_16(1007); +emit_16(1074); +emit_16(1008); +emit_16(1075); +emit_16(1009); +emit_16(1075); +emit_16(1008); +emit_16(1075); +emit_16(1009); +emit_16(1076); +emit_16(1010); +emit_16(1076); +emit_16(1009); +emit_16(1076); +emit_16(1010); +emit_16(1077); +emit_16(1011); +emit_16(1077); +emit_16(1010); +emit_16(1077); +emit_16(1011); +emit_16(1078); +emit_16(1012); +emit_16(1078); +emit_16(1011); +emit_16(1078); +emit_16(1012); +emit_16(1079); +emit_16(1013); +emit_16(1079); +emit_16(1012); +emit_16(1079); +emit_16(1013); +emit_16(1080); +emit_16(1014); +emit_16(1080); +emit_16(1013); +emit_16(1080); +emit_16(1014); +emit_16(1081); +emit_16(1015); +emit_16(1081); +emit_16(1014); +emit_16(1081); +emit_16(1015); +emit_16(1082); +emit_16(1016); +emit_16(1082); +emit_16(1015); +emit_16(1082); +emit_16(1016); +emit_16(1083); +emit_16(1017); +emit_16(1083); +emit_16(1016); +emit_16(1083); +emit_16(1017); +emit_16(1084); +emit_16(1018); +emit_16(1084); +emit_16(1017); +emit_16(1084); +emit_16(1018); +emit_16(1085); +emit_16(1019); +emit_16(1085); +emit_16(1018); +emit_16(1085); +emit_16(1019); +emit_16(1086); +emit_16(1020); +emit_16(1086); +emit_16(1019); +emit_16(1086); +emit_16(1020); +emit_16(1087); +emit_16(1021); +emit_16(1087); +emit_16(1020); +emit_16(1087); +emit_16(1021); +emit_16(1088); +emit_16(1022); +emit_16(1088); +emit_16(1021); +emit_16(1088); +emit_16(1022); +emit_16(1089); +emit_16(1023); +emit_16(1089); +emit_16(1022); +emit_16(1089); +emit_16(1023); +emit_16(1090); +emit_16(1024); +emit_16(1090); +emit_16(1023); +emit_16(1090); +emit_16(1024); +emit_16(1091); +emit_16(1025); +emit_16(1091); +emit_16(1024); +emit_16(1091); +emit_16(1025); +emit_16(1092); +emit_16(1026); +emit_16(1092); +emit_16(1025); +emit_16(1092); +emit_16(1026); +emit_16(1093); +emit_16(1027); +emit_16(1093); +emit_16(1026); +emit_16(1093); +emit_16(1027); +emit_16(1094); +emit_16(1028); +emit_16(1094); +emit_16(1027); +emit_16(1094); +emit_16(1028); +emit_16(1095); +emit_16(1029); +emit_16(1095); +emit_16(1028); +emit_16(1095); +emit_16(1029); +emit_16(1096); +emit_16(1030); +emit_16(1096); +emit_16(1029); +emit_16(1096); +emit_16(1030); +emit_16(1097); +emit_16(1031); +emit_16(1097); +emit_16(1030); +emit_16(1097); +emit_16(1031); +emit_16(1098); +emit_16(1032); +emit_16(1098); +emit_16(1031); +emit_16(1098); +emit_16(1032); +emit_16(1099); +emit_16(1033); +emit_16(1099); +emit_16(1032); +emit_16(1099); +emit_16(1033); +emit_16(1100); +emit_16(1034); +emit_16(1100); +emit_16(1033); +emit_16(1100); +emit_16(1034); +emit_16(1101); +emit_16(1035); +emit_16(1101); +emit_16(1034); +emit_16(1101); +emit_16(1035); +emit_16(1102); +emit_16(1036); +emit_16(1102); +emit_16(1035); +emit_16(1102); +emit_16(1036); +emit_16(1103); +emit_16(1037); +emit_16(1103); +emit_16(1036); +emit_16(1103); +emit_16(1037); +emit_16(1104); +emit_16(1038); +emit_16(1104); +emit_16(1037); +emit_16(1104); +emit_16(1038); +emit_16(1105); +emit_16(1039); +emit_16(1105); +emit_16(1038); +emit_16(1105); +emit_16(1039); +emit_16(1106); +emit_16(1040); +emit_16(1106); +emit_16(1039); +emit_16(1106); +emit_16(1040); +emit_16(1107); +emit_16(1041); +emit_16(1107); +emit_16(1040); +emit_16(1107); +emit_16(1041); +emit_16(1108); +emit_16(1042); +emit_16(1108); +emit_16(1041); +emit_16(1108); +emit_16(1042); +emit_16(1109); +emit_16(1043); +emit_16(1109); +emit_16(1042); +emit_16(1109); +emit_16(1043); +emit_16(1110); +emit_16(1044); +emit_16(1110); +emit_16(1043); +emit_16(1110); +emit_16(1044); +emit_16(1111); +emit_16(1045); +emit_16(1111); +emit_16(1044); +emit_16(1111); +emit_16(1045); +emit_16(1112); +emit_16(1046); +emit_16(1112); +emit_16(1045); +emit_16(1112); +emit_16(1046); +emit_16(1113); +emit_16(1047); +emit_16(1113); +emit_16(1046); +emit_16(1113); +emit_16(1047); +emit_16(1114); +emit_16(1048); +emit_16(1114); +emit_16(1047); +emit_16(1114); +emit_16(1048); +emit_16(1115); +emit_16(1049); +emit_16(1115); +emit_16(1048); +emit_16(1115); +emit_16(1049); +emit_16(1116); +emit_16(1050); +emit_16(1116); +emit_16(1049); +emit_16(1116); +emit_16(1050); +emit_16(1117); +emit_16(1051); +emit_16(1117); +emit_16(1050); +emit_16(1117); +emit_16(1051); +emit_16(1118); +emit_16(1052); +emit_16(1118); +emit_16(1051); +emit_16(1118); +emit_16(1052); +emit_16(1119); +emit_16(1053); +emit_16(1119); +emit_16(1052); +emit_16(1119); +emit_16(1053); +emit_16(1120); +emit_16(1054); +emit_16(1120); +emit_16(1053); +emit_16(1120); +emit_16(1054); +emit_16(1121); +emit_16(1055); +emit_16(1121); +emit_16(1054); +emit_16(1122); +emit_16(1056); +emit_16(1123); +emit_16(1057); +emit_16(1123); +emit_16(1056); +emit_16(1123); +emit_16(1057); +emit_16(1124); +emit_16(1058); +emit_16(1124); +emit_16(1057); +emit_16(1124); +emit_16(1058); +emit_16(1125); +emit_16(1059); +emit_16(1125); +emit_16(1058); +emit_16(1125); +emit_16(1059); +emit_16(1126); +emit_16(1060); +emit_16(1126); +emit_16(1059); +emit_16(1126); +emit_16(1060); +emit_16(1127); +emit_16(1061); +emit_16(1127); +emit_16(1060); +emit_16(1127); +emit_16(1061); +emit_16(1128); +emit_16(1062); +emit_16(1128); +emit_16(1061); +emit_16(1128); +emit_16(1062); +emit_16(1129); +emit_16(1063); +emit_16(1129); +emit_16(1062); +emit_16(1129); +emit_16(1063); +emit_16(1130); +emit_16(1064); +emit_16(1130); +emit_16(1063); +emit_16(1130); +emit_16(1064); +emit_16(1131); +emit_16(1065); +emit_16(1131); +emit_16(1064); +emit_16(1131); +emit_16(1065); +emit_16(1132); +emit_16(1066); +emit_16(1132); +emit_16(1065); +emit_16(1132); +emit_16(1066); +emit_16(1133); +emit_16(1067); +emit_16(1133); +emit_16(1066); +emit_16(1133); +emit_16(1067); +emit_16(1134); +emit_16(1068); +emit_16(1134); +emit_16(1067); +emit_16(1134); +emit_16(1068); +emit_16(1135); +emit_16(1069); +emit_16(1135); +emit_16(1068); +emit_16(1135); +emit_16(1069); +emit_16(1136); +emit_16(1070); +emit_16(1136); +emit_16(1069); +emit_16(1136); +emit_16(1070); +emit_16(1137); +emit_16(1071); +emit_16(1137); +emit_16(1070); +emit_16(1137); +emit_16(1071); +emit_16(1138); +emit_16(1072); +emit_16(1138); +emit_16(1071); +emit_16(1138); +emit_16(1072); +emit_16(1139); +emit_16(1073); +emit_16(1139); +emit_16(1072); +emit_16(1139); +emit_16(1073); +emit_16(1140); +emit_16(1074); +emit_16(1140); +emit_16(1073); +emit_16(1140); +emit_16(1074); +emit_16(1141); +emit_16(1075); +emit_16(1141); +emit_16(1074); +emit_16(1141); +emit_16(1075); +emit_16(1142); +emit_16(1076); +emit_16(1142); +emit_16(1075); +emit_16(1142); +emit_16(1076); +emit_16(1143); +emit_16(1077); +emit_16(1143); +emit_16(1076); +emit_16(1143); +emit_16(1077); +emit_16(1144); +emit_16(1078); +emit_16(1144); +emit_16(1077); +emit_16(1144); +emit_16(1078); +emit_16(1145); +emit_16(1079); +emit_16(1145); +emit_16(1078); +emit_16(1145); +emit_16(1079); +emit_16(1146); +emit_16(1080); +emit_16(1146); +emit_16(1079); +emit_16(1146); +emit_16(1080); +emit_16(1147); +emit_16(1081); +emit_16(1147); +emit_16(1080); +emit_16(1147); +emit_16(1081); +emit_16(1148); +emit_16(1082); +emit_16(1148); +emit_16(1081); +emit_16(1148); +emit_16(1082); +emit_16(1149); +emit_16(1083); +emit_16(1149); +emit_16(1082); +emit_16(1149); +emit_16(1083); +emit_16(1150); +emit_16(1084); +emit_16(1150); +emit_16(1083); +emit_16(1150); +emit_16(1084); +emit_16(1151); +emit_16(1085); +emit_16(1151); +emit_16(1084); +emit_16(1151); +emit_16(1085); +emit_16(1152); +emit_16(1086); +emit_16(1152); +emit_16(1085); +emit_16(1152); +emit_16(1086); +emit_16(1153); +emit_16(1087); +emit_16(1153); +emit_16(1086); +emit_16(1153); +emit_16(1087); +emit_16(1154); +emit_16(1088); +emit_16(1154); +emit_16(1087); +emit_16(1154); +emit_16(1088); +emit_16(1155); +emit_16(1089); +emit_16(1155); +emit_16(1088); +emit_16(1155); +emit_16(1089); +emit_16(1156); +emit_16(1090); +emit_16(1156); +emit_16(1089); +emit_16(1156); +emit_16(1090); +emit_16(1157); +emit_16(1091); +emit_16(1157); +emit_16(1090); +emit_16(1157); +emit_16(1091); +emit_16(1158); +emit_16(1092); +emit_16(1158); +emit_16(1091); +emit_16(1158); +emit_16(1092); +emit_16(1159); +emit_16(1093); +emit_16(1159); +emit_16(1092); +emit_16(1159); +emit_16(1093); +emit_16(1160); +emit_16(1094); +emit_16(1160); +emit_16(1093); +emit_16(1160); +emit_16(1094); +emit_16(1161); +emit_16(1095); +emit_16(1161); +emit_16(1094); +emit_16(1161); +emit_16(1095); +emit_16(1162); +emit_16(1096); +emit_16(1162); +emit_16(1095); +emit_16(1162); +emit_16(1096); +emit_16(1163); +emit_16(1097); +emit_16(1163); +emit_16(1096); +emit_16(1163); +emit_16(1097); +emit_16(1164); +emit_16(1098); +emit_16(1164); +emit_16(1097); +emit_16(1164); +emit_16(1098); +emit_16(1165); +emit_16(1099); +emit_16(1165); +emit_16(1098); +emit_16(1165); +emit_16(1099); +emit_16(1166); +emit_16(1100); +emit_16(1166); +emit_16(1099); +emit_16(1166); +emit_16(1100); +emit_16(1167); +emit_16(1101); +emit_16(1167); +emit_16(1100); +emit_16(1167); +emit_16(1101); +emit_16(1168); +emit_16(1102); +emit_16(1168); +emit_16(1101); +emit_16(1168); +emit_16(1102); +emit_16(1169); +emit_16(1103); +emit_16(1169); +emit_16(1102); +emit_16(1169); +emit_16(1103); +emit_16(1170); +emit_16(1104); +emit_16(1170); +emit_16(1103); +emit_16(1170); +emit_16(1104); +emit_16(1171); +emit_16(1105); +emit_16(1171); +emit_16(1104); +emit_16(1171); +emit_16(1105); +emit_16(1172); +emit_16(1106); +emit_16(1172); +emit_16(1105); +emit_16(1172); +emit_16(1106); +emit_16(1173); +emit_16(1107); +emit_16(1173); +emit_16(1106); +emit_16(1173); +emit_16(1107); +emit_16(1174); +emit_16(1108); +emit_16(1174); +emit_16(1107); +emit_16(1174); +emit_16(1108); +emit_16(1175); +emit_16(1109); +emit_16(1175); +emit_16(1108); +emit_16(1175); +emit_16(1109); +emit_16(1176); +emit_16(1110); +emit_16(1176); +emit_16(1109); +emit_16(1176); +emit_16(1110); +emit_16(1177); +emit_16(1111); +emit_16(1177); +emit_16(1110); +emit_16(1177); +emit_16(1111); +emit_16(1178); +emit_16(1112); +emit_16(1178); +emit_16(1111); +emit_16(1178); +emit_16(1112); +emit_16(1179); +emit_16(1113); +emit_16(1179); +emit_16(1112); +emit_16(1179); +emit_16(1113); +emit_16(1180); +emit_16(1114); +emit_16(1180); +emit_16(1113); +emit_16(1180); +emit_16(1114); +emit_16(1181); +emit_16(1115); +emit_16(1181); +emit_16(1114); +emit_16(1181); +emit_16(1115); +emit_16(1182); +emit_16(1116); +emit_16(1182); +emit_16(1115); +emit_16(1182); +emit_16(1116); +emit_16(1183); +emit_16(1117); +emit_16(1183); +emit_16(1116); +emit_16(1183); +emit_16(1117); +emit_16(1184); +emit_16(1118); +emit_16(1184); +emit_16(1117); +emit_16(1184); +emit_16(1118); +emit_16(1185); +emit_16(1119); +emit_16(1185); +emit_16(1118); +emit_16(1185); +emit_16(1119); +emit_16(1186); +emit_16(1120); +emit_16(1186); +emit_16(1119); +emit_16(1186); +emit_16(1120); +emit_16(1187); +emit_16(1121); +emit_16(1187); +emit_16(1120); +emit_16(1188); +emit_16(1122); +emit_16(1189); +emit_16(1123); +emit_16(1189); +emit_16(1122); +emit_16(1189); +emit_16(1123); +emit_16(1190); +emit_16(1124); +emit_16(1190); +emit_16(1123); +emit_16(1190); +emit_16(1124); +emit_16(1191); +emit_16(1125); +emit_16(1191); +emit_16(1124); +emit_16(1191); +emit_16(1125); +emit_16(1192); +emit_16(1126); +emit_16(1192); +emit_16(1125); +emit_16(1192); +emit_16(1126); +emit_16(1193); +emit_16(1127); +emit_16(1193); +emit_16(1126); +emit_16(1193); +emit_16(1127); +emit_16(1194); +emit_16(1128); +emit_16(1194); +emit_16(1127); +emit_16(1194); +emit_16(1128); +emit_16(1195); +emit_16(1129); +emit_16(1195); +emit_16(1128); +emit_16(1195); +emit_16(1129); +emit_16(1196); +emit_16(1130); +emit_16(1196); +emit_16(1129); +emit_16(1196); +emit_16(1130); +emit_16(1197); +emit_16(1131); +emit_16(1197); +emit_16(1130); +emit_16(1197); +emit_16(1131); +emit_16(1198); +emit_16(1132); +emit_16(1198); +emit_16(1131); +emit_16(1198); +emit_16(1132); +emit_16(1199); +emit_16(1133); +emit_16(1199); +emit_16(1132); +emit_16(1199); +emit_16(1133); +emit_16(1200); +emit_16(1134); +emit_16(1200); +emit_16(1133); +emit_16(1200); +emit_16(1134); +emit_16(1201); +emit_16(1135); +emit_16(1201); +emit_16(1134); +emit_16(1201); +emit_16(1135); +emit_16(1202); +emit_16(1136); +emit_16(1202); +emit_16(1135); +emit_16(1202); +emit_16(1136); +emit_16(1203); +emit_16(1137); +emit_16(1203); +emit_16(1136); +emit_16(1203); +emit_16(1137); +emit_16(1204); +emit_16(1138); +emit_16(1204); +emit_16(1137); +emit_16(1204); +emit_16(1138); +emit_16(1205); +emit_16(1139); +emit_16(1205); +emit_16(1138); +emit_16(1205); +emit_16(1139); +emit_16(1206); +emit_16(1140); +emit_16(1206); +emit_16(1139); +emit_16(1206); +emit_16(1140); +emit_16(1207); +emit_16(1141); +emit_16(1207); +emit_16(1140); +emit_16(1207); +emit_16(1141); +emit_16(1208); +emit_16(1142); +emit_16(1208); +emit_16(1141); +emit_16(1208); +emit_16(1142); +emit_16(1209); +emit_16(1143); +emit_16(1209); +emit_16(1142); +emit_16(1209); +emit_16(1143); +emit_16(1210); +emit_16(1144); +emit_16(1210); +emit_16(1143); +emit_16(1210); +emit_16(1144); +emit_16(1211); +emit_16(1145); +emit_16(1211); +emit_16(1144); +emit_16(1211); +emit_16(1145); +emit_16(1212); +emit_16(1146); +emit_16(1212); +emit_16(1145); +emit_16(1212); +emit_16(1146); +emit_16(1213); +emit_16(1147); +emit_16(1213); +emit_16(1146); +emit_16(1213); +emit_16(1147); +emit_16(1214); +emit_16(1148); +emit_16(1214); +emit_16(1147); +emit_16(1214); +emit_16(1148); +emit_16(1215); +emit_16(1149); +emit_16(1215); +emit_16(1148); +emit_16(1215); +emit_16(1149); +emit_16(1216); +emit_16(1150); +emit_16(1216); +emit_16(1149); +emit_16(1216); +emit_16(1150); +emit_16(1217); +emit_16(1151); +emit_16(1217); +emit_16(1150); +emit_16(1217); +emit_16(1151); +emit_16(1218); +emit_16(1152); +emit_16(1218); +emit_16(1151); +emit_16(1218); +emit_16(1152); +emit_16(1219); +emit_16(1153); +emit_16(1219); +emit_16(1152); +emit_16(1219); +emit_16(1153); +emit_16(1220); +emit_16(1154); +emit_16(1220); +emit_16(1153); +emit_16(1220); +emit_16(1154); +emit_16(1221); +emit_16(1155); +emit_16(1221); +emit_16(1154); +emit_16(1221); +emit_16(1155); +emit_16(1222); +emit_16(1156); +emit_16(1222); +emit_16(1155); +emit_16(1222); +emit_16(1156); +emit_16(1223); +emit_16(1157); +emit_16(1223); +emit_16(1156); +emit_16(1223); +emit_16(1157); +emit_16(1224); +emit_16(1158); +emit_16(1224); +emit_16(1157); +emit_16(1224); +emit_16(1158); +emit_16(1225); +emit_16(1159); +emit_16(1225); +emit_16(1158); +emit_16(1225); +emit_16(1159); +emit_16(1226); +emit_16(1160); +emit_16(1226); +emit_16(1159); +emit_16(1226); +emit_16(1160); +emit_16(1227); +emit_16(1161); +emit_16(1227); +emit_16(1160); +emit_16(1227); +emit_16(1161); +emit_16(1228); +emit_16(1162); +emit_16(1228); +emit_16(1161); +emit_16(1228); +emit_16(1162); +emit_16(1229); +emit_16(1163); +emit_16(1229); +emit_16(1162); +emit_16(1229); +emit_16(1163); +emit_16(1230); +emit_16(1164); +emit_16(1230); +emit_16(1163); +emit_16(1230); +emit_16(1164); +emit_16(1231); +emit_16(1165); +emit_16(1231); +emit_16(1164); +emit_16(1231); +emit_16(1165); +emit_16(1232); +emit_16(1166); +emit_16(1232); +emit_16(1165); +emit_16(1232); +emit_16(1166); +emit_16(1233); +emit_16(1167); +emit_16(1233); +emit_16(1166); +emit_16(1233); +emit_16(1167); +emit_16(1234); +emit_16(1168); +emit_16(1234); +emit_16(1167); +emit_16(1234); +emit_16(1168); +emit_16(1235); +emit_16(1169); +emit_16(1235); +emit_16(1168); +emit_16(1235); +emit_16(1169); +emit_16(1236); +emit_16(1170); +emit_16(1236); +emit_16(1169); +emit_16(1236); +emit_16(1170); +emit_16(1237); +emit_16(1171); +emit_16(1237); +emit_16(1170); +emit_16(1237); +emit_16(1171); +emit_16(1238); +emit_16(1172); +emit_16(1238); +emit_16(1171); +emit_16(1238); +emit_16(1172); +emit_16(1239); +emit_16(1173); +emit_16(1239); +emit_16(1172); +emit_16(1239); +emit_16(1173); +emit_16(1240); +emit_16(1174); +emit_16(1240); +emit_16(1173); +emit_16(1240); +emit_16(1174); +emit_16(1241); +emit_16(1175); +emit_16(1241); +emit_16(1174); +emit_16(1241); +emit_16(1175); +emit_16(1242); +emit_16(1176); +emit_16(1242); +emit_16(1175); +emit_16(1242); +emit_16(1176); +emit_16(1243); +emit_16(1177); +emit_16(1243); +emit_16(1176); +emit_16(1243); +emit_16(1177); +emit_16(1244); +emit_16(1178); +emit_16(1244); +emit_16(1177); +emit_16(1244); +emit_16(1178); +emit_16(1245); +emit_16(1179); +emit_16(1245); +emit_16(1178); +emit_16(1245); +emit_16(1179); +emit_16(1246); +emit_16(1180); +emit_16(1246); +emit_16(1179); +emit_16(1246); +emit_16(1180); +emit_16(1247); +emit_16(1181); +emit_16(1247); +emit_16(1180); +emit_16(1247); +emit_16(1181); +emit_16(1248); +emit_16(1182); +emit_16(1248); +emit_16(1181); +emit_16(1248); +emit_16(1182); +emit_16(1249); +emit_16(1183); +emit_16(1249); +emit_16(1182); +emit_16(1249); +emit_16(1183); +emit_16(1250); +emit_16(1184); +emit_16(1250); +emit_16(1183); +emit_16(1250); +emit_16(1184); +emit_16(1251); +emit_16(1185); +emit_16(1251); +emit_16(1184); +emit_16(1251); +emit_16(1185); +emit_16(1252); +emit_16(1186); +emit_16(1252); +emit_16(1185); +emit_16(1252); +emit_16(1186); +emit_16(1253); +emit_16(1187); +emit_16(1253); +emit_16(1186); +emit_16(1254); +emit_16(1188); +emit_16(1255); +emit_16(1189); +emit_16(1255); +emit_16(1188); +emit_16(1255); +emit_16(1189); +emit_16(1256); +emit_16(1190); +emit_16(1256); +emit_16(1189); +emit_16(1256); +emit_16(1190); +emit_16(1257); +emit_16(1191); +emit_16(1257); +emit_16(1190); +emit_16(1257); +emit_16(1191); +emit_16(1258); +emit_16(1192); +emit_16(1258); +emit_16(1191); +emit_16(1258); +emit_16(1192); +emit_16(1259); +emit_16(1193); +emit_16(1259); +emit_16(1192); +emit_16(1259); +emit_16(1193); +emit_16(1260); +emit_16(1194); +emit_16(1260); +emit_16(1193); +emit_16(1260); +emit_16(1194); +emit_16(1261); +emit_16(1195); +emit_16(1261); +emit_16(1194); +emit_16(1261); +emit_16(1195); +emit_16(1262); +emit_16(1196); +emit_16(1262); +emit_16(1195); +emit_16(1262); +emit_16(1196); +emit_16(1263); +emit_16(1197); +emit_16(1263); +emit_16(1196); +emit_16(1263); +emit_16(1197); +emit_16(1264); +emit_16(1198); +emit_16(1264); +emit_16(1197); +emit_16(1264); +emit_16(1198); +emit_16(1265); +emit_16(1199); +emit_16(1265); +emit_16(1198); +emit_16(1265); +emit_16(1199); +emit_16(1266); +emit_16(1200); +emit_16(1266); +emit_16(1199); +emit_16(1266); +emit_16(1200); +emit_16(1267); +emit_16(1201); +emit_16(1267); +emit_16(1200); +emit_16(1267); +emit_16(1201); +emit_16(1268); +emit_16(1202); +emit_16(1268); +emit_16(1201); +emit_16(1268); +emit_16(1202); +emit_16(1269); +emit_16(1203); +emit_16(1269); +emit_16(1202); +emit_16(1269); +emit_16(1203); +emit_16(1270); +emit_16(1204); +emit_16(1270); +emit_16(1203); +emit_16(1270); +emit_16(1204); +emit_16(1271); +emit_16(1205); +emit_16(1271); +emit_16(1204); +emit_16(1271); +emit_16(1205); +emit_16(1272); +emit_16(1206); +emit_16(1272); +emit_16(1205); +emit_16(1272); +emit_16(1206); +emit_16(1273); +emit_16(1207); +emit_16(1273); +emit_16(1206); +emit_16(1273); +emit_16(1207); +emit_16(1274); +emit_16(1208); +emit_16(1274); +emit_16(1207); +emit_16(1274); +emit_16(1208); +emit_16(1275); +emit_16(1209); +emit_16(1275); +emit_16(1208); +emit_16(1275); +emit_16(1209); +emit_16(1276); +emit_16(1210); +emit_16(1276); +emit_16(1209); +emit_16(1276); +emit_16(1210); +emit_16(1277); +emit_16(1211); +emit_16(1277); +emit_16(1210); +emit_16(1277); +emit_16(1211); +emit_16(1278); +emit_16(1212); +emit_16(1278); +emit_16(1211); +emit_16(1278); +emit_16(1212); +emit_16(1279); +emit_16(1213); +emit_16(1279); +emit_16(1212); +emit_16(1279); +emit_16(1213); +emit_16(1280); +emit_16(1214); +emit_16(1280); +emit_16(1213); +emit_16(1280); +emit_16(1214); +emit_16(1281); +emit_16(1215); +emit_16(1281); +emit_16(1214); +emit_16(1281); +emit_16(1215); +emit_16(1282); +emit_16(1216); +emit_16(1282); +emit_16(1215); +emit_16(1282); +emit_16(1216); +emit_16(1283); +emit_16(1217); +emit_16(1283); +emit_16(1216); +emit_16(1283); +emit_16(1217); +emit_16(1284); +emit_16(1218); +emit_16(1284); +emit_16(1217); +emit_16(1284); +emit_16(1218); +emit_16(1285); +emit_16(1219); +emit_16(1285); +emit_16(1218); +emit_16(1285); +emit_16(1219); +emit_16(1286); +emit_16(1220); +emit_16(1286); +emit_16(1219); +emit_16(1286); +emit_16(1220); +emit_16(1287); +emit_16(1221); +emit_16(1287); +emit_16(1220); +emit_16(1287); +emit_16(1221); +emit_16(1288); +emit_16(1222); +emit_16(1288); +emit_16(1221); +emit_16(1288); +emit_16(1222); +emit_16(1289); +emit_16(1223); +emit_16(1289); +emit_16(1222); +emit_16(1289); +emit_16(1223); +emit_16(1290); +emit_16(1224); +emit_16(1290); +emit_16(1223); +emit_16(1290); +emit_16(1224); +emit_16(1291); +emit_16(1225); +emit_16(1291); +emit_16(1224); +emit_16(1291); +emit_16(1225); +emit_16(1292); +emit_16(1226); +emit_16(1292); +emit_16(1225); +emit_16(1292); +emit_16(1226); +emit_16(1293); +emit_16(1227); +emit_16(1293); +emit_16(1226); +emit_16(1293); +emit_16(1227); +emit_16(1294); +emit_16(1228); +emit_16(1294); +emit_16(1227); +emit_16(1294); +emit_16(1228); +emit_16(1295); +emit_16(1229); +emit_16(1295); +emit_16(1228); +emit_16(1295); +emit_16(1229); +emit_16(1296); +emit_16(1230); +emit_16(1296); +emit_16(1229); +emit_16(1296); +emit_16(1230); +emit_16(1297); +emit_16(1231); +emit_16(1297); +emit_16(1230); +emit_16(1297); +emit_16(1231); +emit_16(1298); +emit_16(1232); +emit_16(1298); +emit_16(1231); +emit_16(1298); +emit_16(1232); +emit_16(1299); +emit_16(1233); +emit_16(1299); +emit_16(1232); +emit_16(1299); +emit_16(1233); +emit_16(1300); +emit_16(1234); +emit_16(1300); +emit_16(1233); +emit_16(1300); +emit_16(1234); +emit_16(1301); +emit_16(1235); +emit_16(1301); +emit_16(1234); +emit_16(1301); +emit_16(1235); +emit_16(1302); +emit_16(1236); +emit_16(1302); +emit_16(1235); +emit_16(1302); +emit_16(1236); +emit_16(1303); +emit_16(1237); +emit_16(1303); +emit_16(1236); +emit_16(1303); +emit_16(1237); +emit_16(1304); +emit_16(1238); +emit_16(1304); +emit_16(1237); +emit_16(1304); +emit_16(1238); +emit_16(1305); +emit_16(1239); +emit_16(1305); +emit_16(1238); +emit_16(1305); +emit_16(1239); +emit_16(1306); +emit_16(1240); +emit_16(1306); +emit_16(1239); +emit_16(1306); +emit_16(1240); +emit_16(1307); +emit_16(1241); +emit_16(1307); +emit_16(1240); +emit_16(1307); +emit_16(1241); +emit_16(1308); +emit_16(1242); +emit_16(1308); +emit_16(1241); +emit_16(1308); +emit_16(1242); +emit_16(1309); +emit_16(1243); +emit_16(1309); +emit_16(1242); +emit_16(1309); +emit_16(1243); +emit_16(1310); +emit_16(1244); +emit_16(1310); +emit_16(1243); +emit_16(1310); +emit_16(1244); +emit_16(1311); +emit_16(1245); +emit_16(1311); +emit_16(1244); +emit_16(1311); +emit_16(1245); +emit_16(1312); +emit_16(1246); +emit_16(1312); +emit_16(1245); +emit_16(1312); +emit_16(1246); +emit_16(1313); +emit_16(1247); +emit_16(1313); +emit_16(1246); +emit_16(1313); +emit_16(1247); +emit_16(1314); +emit_16(1248); +emit_16(1314); +emit_16(1247); +emit_16(1314); +emit_16(1248); +emit_16(1315); +emit_16(1249); +emit_16(1315); +emit_16(1248); +emit_16(1315); +emit_16(1249); +emit_16(1316); +emit_16(1250); +emit_16(1316); +emit_16(1249); +emit_16(1316); +emit_16(1250); +emit_16(1317); +emit_16(1251); +emit_16(1317); +emit_16(1250); +emit_16(1317); +emit_16(1251); +emit_16(1318); +emit_16(1252); +emit_16(1318); +emit_16(1251); +emit_16(1318); +emit_16(1252); +emit_16(1319); +emit_16(1253); +emit_16(1319); +emit_16(1252); +emit_16(1320); +emit_16(1254); +emit_16(1321); +emit_16(1255); +emit_16(1321); +emit_16(1254); +emit_16(1321); +emit_16(1255); +emit_16(1322); +emit_16(1256); +emit_16(1322); +emit_16(1255); +emit_16(1322); +emit_16(1256); +emit_16(1323); +emit_16(1257); +emit_16(1323); +emit_16(1256); +emit_16(1323); +emit_16(1257); +emit_16(1324); +emit_16(1258); +emit_16(1324); +emit_16(1257); +emit_16(1324); +emit_16(1258); +emit_16(1325); +emit_16(1259); +emit_16(1325); +emit_16(1258); +emit_16(1325); +emit_16(1259); +emit_16(1326); +emit_16(1260); +emit_16(1326); +emit_16(1259); +emit_16(1326); +emit_16(1260); +emit_16(1327); +emit_16(1261); +emit_16(1327); +emit_16(1260); +emit_16(1327); +emit_16(1261); +emit_16(1328); +emit_16(1262); +emit_16(1328); +emit_16(1261); +emit_16(1328); +emit_16(1262); +emit_16(1329); +emit_16(1263); +emit_16(1329); +emit_16(1262); +emit_16(1329); +emit_16(1263); +emit_16(1330); +emit_16(1264); +emit_16(1330); +emit_16(1263); +emit_16(1330); +emit_16(1264); +emit_16(1331); +emit_16(1265); +emit_16(1331); +emit_16(1264); +emit_16(1331); +emit_16(1265); +emit_16(1332); +emit_16(1266); +emit_16(1332); +emit_16(1265); +emit_16(1332); +emit_16(1266); +emit_16(1333); +emit_16(1267); +emit_16(1333); +emit_16(1266); +emit_16(1333); +emit_16(1267); +emit_16(1334); +emit_16(1268); +emit_16(1334); +emit_16(1267); +emit_16(1334); +emit_16(1268); +emit_16(1335); +emit_16(1269); +emit_16(1335); +emit_16(1268); +emit_16(1335); +emit_16(1269); +emit_16(1336); +emit_16(1270); +emit_16(1336); +emit_16(1269); +emit_16(1336); +emit_16(1270); +emit_16(1337); +emit_16(1271); +emit_16(1337); +emit_16(1270); +emit_16(1337); +emit_16(1271); +emit_16(1338); +emit_16(1272); +emit_16(1338); +emit_16(1271); +emit_16(1338); +emit_16(1272); +emit_16(1339); +emit_16(1273); +emit_16(1339); +emit_16(1272); +emit_16(1339); +emit_16(1273); +emit_16(1340); +emit_16(1274); +emit_16(1340); +emit_16(1273); +emit_16(1340); +emit_16(1274); +emit_16(1341); +emit_16(1275); +emit_16(1341); +emit_16(1274); +emit_16(1341); +emit_16(1275); +emit_16(1342); +emit_16(1276); +emit_16(1342); +emit_16(1275); +emit_16(1342); +emit_16(1276); +emit_16(1343); +emit_16(1277); +emit_16(1343); +emit_16(1276); +emit_16(1343); +emit_16(1277); +emit_16(1344); +emit_16(1278); +emit_16(1344); +emit_16(1277); +emit_16(1344); +emit_16(1278); +emit_16(1345); +emit_16(1279); +emit_16(1345); +emit_16(1278); +emit_16(1345); +emit_16(1279); +emit_16(1346); +emit_16(1280); +emit_16(1346); +emit_16(1279); +emit_16(1346); +emit_16(1280); +emit_16(1347); +emit_16(1281); +emit_16(1347); +emit_16(1280); +emit_16(1347); +emit_16(1281); +emit_16(1348); +emit_16(1282); +emit_16(1348); +emit_16(1281); +emit_16(1348); +emit_16(1282); +emit_16(1349); +emit_16(1283); +emit_16(1349); +emit_16(1282); +emit_16(1349); +emit_16(1283); +emit_16(1350); +emit_16(1284); +emit_16(1350); +emit_16(1283); +emit_16(1350); +emit_16(1284); +emit_16(1351); +emit_16(1285); +emit_16(1351); +emit_16(1284); +emit_16(1351); +emit_16(1285); +emit_16(1352); +emit_16(1286); +emit_16(1352); +emit_16(1285); +emit_16(1352); +emit_16(1286); +emit_16(1353); +emit_16(1287); +emit_16(1353); +emit_16(1286); +emit_16(1353); +emit_16(1287); +emit_16(1354); +emit_16(1288); +emit_16(1354); +emit_16(1287); +emit_16(1354); +emit_16(1288); +emit_16(1355); +emit_16(1289); +emit_16(1355); +emit_16(1288); +emit_16(1355); +emit_16(1289); +emit_16(1356); +emit_16(1290); +emit_16(1356); +emit_16(1289); +emit_16(1356); +emit_16(1290); +emit_16(1357); +emit_16(1291); +emit_16(1357); +emit_16(1290); +emit_16(1357); +emit_16(1291); +emit_16(1358); +emit_16(1292); +emit_16(1358); +emit_16(1291); +emit_16(1358); +emit_16(1292); +emit_16(1359); +emit_16(1293); +emit_16(1359); +emit_16(1292); +emit_16(1359); +emit_16(1293); +emit_16(1360); +emit_16(1294); +emit_16(1360); +emit_16(1293); +emit_16(1360); +emit_16(1294); +emit_16(1361); +emit_16(1295); +emit_16(1361); +emit_16(1294); +emit_16(1361); +emit_16(1295); +emit_16(1362); +emit_16(1296); +emit_16(1362); +emit_16(1295); +emit_16(1362); +emit_16(1296); +emit_16(1363); +emit_16(1297); +emit_16(1363); +emit_16(1296); +emit_16(1363); +emit_16(1297); +emit_16(1364); +emit_16(1298); +emit_16(1364); +emit_16(1297); +emit_16(1364); +emit_16(1298); +emit_16(1365); +emit_16(1299); +emit_16(1365); +emit_16(1298); +emit_16(1365); +emit_16(1299); +emit_16(1366); +emit_16(1300); +emit_16(1366); +emit_16(1299); +emit_16(1366); +emit_16(1300); +emit_16(1367); +emit_16(1301); +emit_16(1367); +emit_16(1300); +emit_16(1367); +emit_16(1301); +emit_16(1368); +emit_16(1302); +emit_16(1368); +emit_16(1301); +emit_16(1368); +emit_16(1302); +emit_16(1369); +emit_16(1303); +emit_16(1369); +emit_16(1302); +emit_16(1369); +emit_16(1303); +emit_16(1370); +emit_16(1304); +emit_16(1370); +emit_16(1303); +emit_16(1370); +emit_16(1304); +emit_16(1371); +emit_16(1305); +emit_16(1371); +emit_16(1304); +emit_16(1371); +emit_16(1305); +emit_16(1372); +emit_16(1306); +emit_16(1372); +emit_16(1305); +emit_16(1372); +emit_16(1306); +emit_16(1373); +emit_16(1307); +emit_16(1373); +emit_16(1306); +emit_16(1373); +emit_16(1307); +emit_16(1374); +emit_16(1308); +emit_16(1374); +emit_16(1307); +emit_16(1374); +emit_16(1308); +emit_16(1375); +emit_16(1309); +emit_16(1375); +emit_16(1308); +emit_16(1375); +emit_16(1309); +emit_16(1376); +emit_16(1310); +emit_16(1376); +emit_16(1309); +emit_16(1376); +emit_16(1310); +emit_16(1377); +emit_16(1311); +emit_16(1377); +emit_16(1310); +emit_16(1377); +emit_16(1311); +emit_16(1378); +emit_16(1312); +emit_16(1378); +emit_16(1311); +emit_16(1378); +emit_16(1312); +emit_16(1379); +emit_16(1313); +emit_16(1379); +emit_16(1312); +emit_16(1379); +emit_16(1313); +emit_16(1380); +emit_16(1314); +emit_16(1380); +emit_16(1313); +emit_16(1380); +emit_16(1314); +emit_16(1381); +emit_16(1315); +emit_16(1381); +emit_16(1314); +emit_16(1381); +emit_16(1315); +emit_16(1382); +emit_16(1316); +emit_16(1382); +emit_16(1315); +emit_16(1382); +emit_16(1316); +emit_16(1383); +emit_16(1317); +emit_16(1383); +emit_16(1316); +emit_16(1383); +emit_16(1317); +emit_16(1384); +emit_16(1318); +emit_16(1384); +emit_16(1317); +emit_16(1384); +emit_16(1318); +emit_16(1385); +emit_16(1319); +emit_16(1385); +emit_16(1318); +emit_16(1386); +emit_16(1320); +emit_16(1387); +emit_16(1321); +emit_16(1387); +emit_16(1320); +emit_16(1387); +emit_16(1321); +emit_16(1388); +emit_16(1322); +emit_16(1388); +emit_16(1321); +emit_16(1388); +emit_16(1322); +emit_16(1389); +emit_16(1323); +emit_16(1389); +emit_16(1322); +emit_16(1389); +emit_16(1323); +emit_16(1390); +emit_16(1324); +emit_16(1390); +emit_16(1323); +emit_16(1390); +emit_16(1324); +emit_16(1391); +emit_16(1325); +emit_16(1391); +emit_16(1324); +emit_16(1391); +emit_16(1325); +emit_16(1392); +emit_16(1326); +emit_16(1392); +emit_16(1325); +emit_16(1392); +emit_16(1326); +emit_16(1393); +emit_16(1327); +emit_16(1393); +emit_16(1326); +emit_16(1393); +emit_16(1327); +emit_16(1394); +emit_16(1328); +emit_16(1394); +emit_16(1327); +emit_16(1394); +emit_16(1328); +emit_16(1395); +emit_16(1329); +emit_16(1395); +emit_16(1328); +emit_16(1395); +emit_16(1329); +emit_16(1396); +emit_16(1330); +emit_16(1396); +emit_16(1329); +emit_16(1396); +emit_16(1330); +emit_16(1397); +emit_16(1331); +emit_16(1397); +emit_16(1330); +emit_16(1397); +emit_16(1331); +emit_16(1398); +emit_16(1332); +emit_16(1398); +emit_16(1331); +emit_16(1398); +emit_16(1332); +emit_16(1399); +emit_16(1333); +emit_16(1399); +emit_16(1332); +emit_16(1399); +emit_16(1333); +emit_16(1400); +emit_16(1334); +emit_16(1400); +emit_16(1333); +emit_16(1400); +emit_16(1334); +emit_16(1401); +emit_16(1335); +emit_16(1401); +emit_16(1334); +emit_16(1401); +emit_16(1335); +emit_16(1402); +emit_16(1336); +emit_16(1402); +emit_16(1335); +emit_16(1402); +emit_16(1336); +emit_16(1403); +emit_16(1337); +emit_16(1403); +emit_16(1336); +emit_16(1403); +emit_16(1337); +emit_16(1404); +emit_16(1338); +emit_16(1404); +emit_16(1337); +emit_16(1404); +emit_16(1338); +emit_16(1405); +emit_16(1339); +emit_16(1405); +emit_16(1338); +emit_16(1405); +emit_16(1339); +emit_16(1406); +emit_16(1340); +emit_16(1406); +emit_16(1339); +emit_16(1406); +emit_16(1340); +emit_16(1407); +emit_16(1341); +emit_16(1407); +emit_16(1340); +emit_16(1407); +emit_16(1341); +emit_16(1408); +emit_16(1342); +emit_16(1408); +emit_16(1341); +emit_16(1408); +emit_16(1342); +emit_16(1409); +emit_16(1343); +emit_16(1409); +emit_16(1342); +emit_16(1409); +emit_16(1343); +emit_16(1410); +emit_16(1344); +emit_16(1410); +emit_16(1343); +emit_16(1410); +emit_16(1344); +emit_16(1411); +emit_16(1345); +emit_16(1411); +emit_16(1344); +emit_16(1411); +emit_16(1345); +emit_16(1412); +emit_16(1346); +emit_16(1412); +emit_16(1345); +emit_16(1412); +emit_16(1346); +emit_16(1413); +emit_16(1347); +emit_16(1413); +emit_16(1346); +emit_16(1413); +emit_16(1347); +emit_16(1414); +emit_16(1348); +emit_16(1414); +emit_16(1347); +emit_16(1414); +emit_16(1348); +emit_16(1415); +emit_16(1349); +emit_16(1415); +emit_16(1348); +emit_16(1415); +emit_16(1349); +emit_16(1416); +emit_16(1350); +emit_16(1416); +emit_16(1349); +emit_16(1416); +emit_16(1350); +emit_16(1417); +emit_16(1351); +emit_16(1417); +emit_16(1350); +emit_16(1417); +emit_16(1351); +emit_16(1418); +emit_16(1352); +emit_16(1418); +emit_16(1351); +emit_16(1418); +emit_16(1352); +emit_16(1419); +emit_16(1353); +emit_16(1419); +emit_16(1352); +emit_16(1419); +emit_16(1353); +emit_16(1420); +emit_16(1354); +emit_16(1420); +emit_16(1353); +emit_16(1420); +emit_16(1354); +emit_16(1421); +emit_16(1355); +emit_16(1421); +emit_16(1354); +emit_16(1421); +emit_16(1355); +emit_16(1422); +emit_16(1356); +emit_16(1422); +emit_16(1355); +emit_16(1422); +emit_16(1356); +emit_16(1423); +emit_16(1357); +emit_16(1423); +emit_16(1356); +emit_16(1423); +emit_16(1357); +emit_16(1424); +emit_16(1358); +emit_16(1424); +emit_16(1357); +emit_16(1424); +emit_16(1358); +emit_16(1425); +emit_16(1359); +emit_16(1425); +emit_16(1358); +emit_16(1425); +emit_16(1359); +emit_16(1426); +emit_16(1360); +emit_16(1426); +emit_16(1359); +emit_16(1426); +emit_16(1360); +emit_16(1427); +emit_16(1361); +emit_16(1427); +emit_16(1360); +emit_16(1427); +emit_16(1361); +emit_16(1428); +emit_16(1362); +emit_16(1428); +emit_16(1361); +emit_16(1428); +emit_16(1362); +emit_16(1429); +emit_16(1363); +emit_16(1429); +emit_16(1362); +emit_16(1429); +emit_16(1363); +emit_16(1430); +emit_16(1364); +emit_16(1430); +emit_16(1363); +emit_16(1430); +emit_16(1364); +emit_16(1431); +emit_16(1365); +emit_16(1431); +emit_16(1364); +emit_16(1431); +emit_16(1365); +emit_16(1432); +emit_16(1366); +emit_16(1432); +emit_16(1365); +emit_16(1432); +emit_16(1366); +emit_16(1433); +emit_16(1367); +emit_16(1433); +emit_16(1366); +emit_16(1433); +emit_16(1367); +emit_16(1434); +emit_16(1368); +emit_16(1434); +emit_16(1367); +emit_16(1434); +emit_16(1368); +emit_16(1435); +emit_16(1369); +emit_16(1435); +emit_16(1368); +emit_16(1435); +emit_16(1369); +emit_16(1436); +emit_16(1370); +emit_16(1436); +emit_16(1369); +emit_16(1436); +emit_16(1370); +emit_16(1437); +emit_16(1371); +emit_16(1437); +emit_16(1370); +emit_16(1437); +emit_16(1371); +emit_16(1438); +emit_16(1372); +emit_16(1438); +emit_16(1371); +emit_16(1438); +emit_16(1372); +emit_16(1439); +emit_16(1373); +emit_16(1439); +emit_16(1372); +emit_16(1439); +emit_16(1373); +emit_16(1440); +emit_16(1374); +emit_16(1440); +emit_16(1373); +emit_16(1440); +emit_16(1374); +emit_16(1441); +emit_16(1375); +emit_16(1441); +emit_16(1374); +emit_16(1441); +emit_16(1375); +emit_16(1442); +emit_16(1376); +emit_16(1442); +emit_16(1375); +emit_16(1442); +emit_16(1376); +emit_16(1443); +emit_16(1377); +emit_16(1443); +emit_16(1376); +emit_16(1443); +emit_16(1377); +emit_16(1444); +emit_16(1378); +emit_16(1444); +emit_16(1377); +emit_16(1444); +emit_16(1378); +emit_16(1445); +emit_16(1379); +emit_16(1445); +emit_16(1378); +emit_16(1445); +emit_16(1379); +emit_16(1446); +emit_16(1380); +emit_16(1446); +emit_16(1379); +emit_16(1446); +emit_16(1380); +emit_16(1447); +emit_16(1381); +emit_16(1447); +emit_16(1380); +emit_16(1447); +emit_16(1381); +emit_16(1448); +emit_16(1382); +emit_16(1448); +emit_16(1381); +emit_16(1448); +emit_16(1382); +emit_16(1449); +emit_16(1383); +emit_16(1449); +emit_16(1382); +emit_16(1449); +emit_16(1383); +emit_16(1450); +emit_16(1384); +emit_16(1450); +emit_16(1383); +emit_16(1450); +emit_16(1384); +emit_16(1451); +emit_16(1385); +emit_16(1451); +emit_16(1384); +emit_16(1452); +emit_16(1386); +emit_16(1453); +emit_16(1387); +emit_16(1453); +emit_16(1386); +emit_16(1453); +emit_16(1387); +emit_16(1454); +emit_16(1388); +emit_16(1454); +emit_16(1387); +emit_16(1454); +emit_16(1388); +emit_16(1455); +emit_16(1389); +emit_16(1455); +emit_16(1388); +emit_16(1455); +emit_16(1389); +emit_16(1456); +emit_16(1390); +emit_16(1456); +emit_16(1389); +emit_16(1456); +emit_16(1390); +emit_16(1457); +emit_16(1391); +emit_16(1457); +emit_16(1390); +emit_16(1457); +emit_16(1391); +emit_16(1458); +emit_16(1392); +emit_16(1458); +emit_16(1391); +emit_16(1458); +emit_16(1392); +emit_16(1459); +emit_16(1393); +emit_16(1459); +emit_16(1392); +emit_16(1459); +emit_16(1393); +emit_16(1460); +emit_16(1394); +emit_16(1460); +emit_16(1393); +emit_16(1460); +emit_16(1394); +emit_16(1461); +emit_16(1395); +emit_16(1461); +emit_16(1394); +emit_16(1461); +emit_16(1395); +emit_16(1462); +emit_16(1396); +emit_16(1462); +emit_16(1395); +emit_16(1462); +emit_16(1396); +emit_16(1463); +emit_16(1397); +emit_16(1463); +emit_16(1396); +emit_16(1463); +emit_16(1397); +emit_16(1464); +emit_16(1398); +emit_16(1464); +emit_16(1397); +emit_16(1464); +emit_16(1398); +emit_16(1465); +emit_16(1399); +emit_16(1465); +emit_16(1398); +emit_16(1465); +emit_16(1399); +emit_16(1466); +emit_16(1400); +emit_16(1466); +emit_16(1399); +emit_16(1466); +emit_16(1400); +emit_16(1467); +emit_16(1401); +emit_16(1467); +emit_16(1400); +emit_16(1467); +emit_16(1401); +emit_16(1468); +emit_16(1402); +emit_16(1468); +emit_16(1401); +emit_16(1468); +emit_16(1402); +emit_16(1469); +emit_16(1403); +emit_16(1469); +emit_16(1402); +emit_16(1469); +emit_16(1403); +emit_16(1470); +emit_16(1404); +emit_16(1470); +emit_16(1403); +emit_16(1470); +emit_16(1404); +emit_16(1471); +emit_16(1405); +emit_16(1471); +emit_16(1404); +emit_16(1471); +emit_16(1405); +emit_16(1472); +emit_16(1406); +emit_16(1472); +emit_16(1405); +emit_16(1472); +emit_16(1406); +emit_16(1473); +emit_16(1407); +emit_16(1473); +emit_16(1406); +emit_16(1473); +emit_16(1407); +emit_16(1474); +emit_16(1408); +emit_16(1474); +emit_16(1407); +emit_16(1474); +emit_16(1408); +emit_16(1475); +emit_16(1409); +emit_16(1475); +emit_16(1408); +emit_16(1475); +emit_16(1409); +emit_16(1476); +emit_16(1410); +emit_16(1476); +emit_16(1409); +emit_16(1476); +emit_16(1410); +emit_16(1477); +emit_16(1411); +emit_16(1477); +emit_16(1410); +emit_16(1477); +emit_16(1411); +emit_16(1478); +emit_16(1412); +emit_16(1478); +emit_16(1411); +emit_16(1478); +emit_16(1412); +emit_16(1479); +emit_16(1413); +emit_16(1479); +emit_16(1412); +emit_16(1479); +emit_16(1413); +emit_16(1480); +emit_16(1414); +emit_16(1480); +emit_16(1413); +emit_16(1480); +emit_16(1414); +emit_16(1481); +emit_16(1415); +emit_16(1481); +emit_16(1414); +emit_16(1481); +emit_16(1415); +emit_16(1482); +emit_16(1416); +emit_16(1482); +emit_16(1415); +emit_16(1482); +emit_16(1416); +emit_16(1483); +emit_16(1417); +emit_16(1483); +emit_16(1416); +emit_16(1483); +emit_16(1417); +emit_16(1484); +emit_16(1418); +emit_16(1484); +emit_16(1417); +emit_16(1484); +emit_16(1418); +emit_16(1485); +emit_16(1419); +emit_16(1485); +emit_16(1418); +emit_16(1485); +emit_16(1419); +emit_16(1486); +emit_16(1420); +emit_16(1486); +emit_16(1419); +emit_16(1486); +emit_16(1420); +emit_16(1487); +emit_16(1421); +emit_16(1487); +emit_16(1420); +emit_16(1487); +emit_16(1421); +emit_16(1488); +emit_16(1422); +emit_16(1488); +emit_16(1421); +emit_16(1488); +emit_16(1422); +emit_16(1489); +emit_16(1423); +emit_16(1489); +emit_16(1422); +emit_16(1489); +emit_16(1423); +emit_16(1490); +emit_16(1424); +emit_16(1490); +emit_16(1423); +emit_16(1490); +emit_16(1424); +emit_16(1491); +emit_16(1425); +emit_16(1491); +emit_16(1424); +emit_16(1491); +emit_16(1425); +emit_16(1492); +emit_16(1426); +emit_16(1492); +emit_16(1425); +emit_16(1492); +emit_16(1426); +emit_16(1493); +emit_16(1427); +emit_16(1493); +emit_16(1426); +emit_16(1493); +emit_16(1427); +emit_16(1494); +emit_16(1428); +emit_16(1494); +emit_16(1427); +emit_16(1494); +emit_16(1428); +emit_16(1495); +emit_16(1429); +emit_16(1495); +emit_16(1428); +emit_16(1495); +emit_16(1429); +emit_16(1496); +emit_16(1430); +emit_16(1496); +emit_16(1429); +emit_16(1496); +emit_16(1430); +emit_16(1497); +emit_16(1431); +emit_16(1497); +emit_16(1430); +emit_16(1497); +emit_16(1431); +emit_16(1498); +emit_16(1432); +emit_16(1498); +emit_16(1431); +emit_16(1498); +emit_16(1432); +emit_16(1499); +emit_16(1433); +emit_16(1499); +emit_16(1432); +emit_16(1499); +emit_16(1433); +emit_16(1500); +emit_16(1434); +emit_16(1500); +emit_16(1433); +emit_16(1500); +emit_16(1434); +emit_16(1501); +emit_16(1435); +emit_16(1501); +emit_16(1434); +emit_16(1501); +emit_16(1435); +emit_16(1502); +emit_16(1436); +emit_16(1502); +emit_16(1435); +emit_16(1502); +emit_16(1436); +emit_16(1503); +emit_16(1437); +emit_16(1503); +emit_16(1436); +emit_16(1503); +emit_16(1437); +emit_16(1504); +emit_16(1438); +emit_16(1504); +emit_16(1437); +emit_16(1504); +emit_16(1438); +emit_16(1505); +emit_16(1439); +emit_16(1505); +emit_16(1438); +emit_16(1505); +emit_16(1439); +emit_16(1506); +emit_16(1440); +emit_16(1506); +emit_16(1439); +emit_16(1506); +emit_16(1440); +emit_16(1507); +emit_16(1441); +emit_16(1507); +emit_16(1440); +emit_16(1507); +emit_16(1441); +emit_16(1508); +emit_16(1442); +emit_16(1508); +emit_16(1441); +emit_16(1508); +emit_16(1442); +emit_16(1509); +emit_16(1443); +emit_16(1509); +emit_16(1442); +emit_16(1509); +emit_16(1443); +emit_16(1510); +emit_16(1444); +emit_16(1510); +emit_16(1443); +emit_16(1510); +emit_16(1444); +emit_16(1511); +emit_16(1445); +emit_16(1511); +emit_16(1444); +emit_16(1511); +emit_16(1445); +emit_16(1512); +emit_16(1446); +emit_16(1512); +emit_16(1445); +emit_16(1512); +emit_16(1446); +emit_16(1513); +emit_16(1447); +emit_16(1513); +emit_16(1446); +emit_16(1513); +emit_16(1447); +emit_16(1514); +emit_16(1448); +emit_16(1514); +emit_16(1447); +emit_16(1514); +emit_16(1448); +emit_16(1515); +emit_16(1449); +emit_16(1515); +emit_16(1448); +emit_16(1515); +emit_16(1449); +emit_16(1516); +emit_16(1450); +emit_16(1516); +emit_16(1449); +emit_16(1516); +emit_16(1450); +emit_16(1517); +emit_16(1451); +emit_16(1517); +emit_16(1450); +emit_16(1518); +emit_16(1452); +emit_16(1519); +emit_16(1453); +emit_16(1519); +emit_16(1452); +emit_16(1519); +emit_16(1453); +emit_16(1520); +emit_16(1454); +emit_16(1520); +emit_16(1453); +emit_16(1520); +emit_16(1454); +emit_16(1521); +emit_16(1455); +emit_16(1521); +emit_16(1454); +emit_16(1521); +emit_16(1455); +emit_16(1522); +emit_16(1456); +emit_16(1522); +emit_16(1455); +emit_16(1522); +emit_16(1456); +emit_16(1523); +emit_16(1457); +emit_16(1523); +emit_16(1456); +emit_16(1523); +emit_16(1457); +emit_16(1524); +emit_16(1458); +emit_16(1524); +emit_16(1457); +emit_16(1524); +emit_16(1458); +emit_16(1525); +emit_16(1459); +emit_16(1525); +emit_16(1458); +emit_16(1525); +emit_16(1459); +emit_16(1526); +emit_16(1460); +emit_16(1526); +emit_16(1459); +emit_16(1526); +emit_16(1460); +emit_16(1527); +emit_16(1461); +emit_16(1527); +emit_16(1460); +emit_16(1527); +emit_16(1461); +emit_16(1528); +emit_16(1462); +emit_16(1528); +emit_16(1461); +emit_16(1528); +emit_16(1462); +emit_16(1529); +emit_16(1463); +emit_16(1529); +emit_16(1462); +emit_16(1529); +emit_16(1463); +emit_16(1530); +emit_16(1464); +emit_16(1530); +emit_16(1463); +emit_16(1530); +emit_16(1464); +emit_16(1531); +emit_16(1465); +emit_16(1531); +emit_16(1464); +emit_16(1531); +emit_16(1465); +emit_16(1532); +emit_16(1466); +emit_16(1532); +emit_16(1465); +emit_16(1532); +emit_16(1466); +emit_16(1533); +emit_16(1467); +emit_16(1533); +emit_16(1466); +emit_16(1533); +emit_16(1467); +emit_16(1534); +emit_16(1468); +emit_16(1534); +emit_16(1467); +emit_16(1534); +emit_16(1468); +emit_16(1535); +emit_16(1469); +emit_16(1535); +emit_16(1468); +emit_16(1535); +emit_16(1469); +emit_16(1536); +emit_16(1470); +emit_16(1536); +emit_16(1469); +emit_16(1536); +emit_16(1470); +emit_16(1537); +emit_16(1471); +emit_16(1537); +emit_16(1470); +emit_16(1537); +emit_16(1471); +emit_16(1538); +emit_16(1472); +emit_16(1538); +emit_16(1471); +emit_16(1538); +emit_16(1472); +emit_16(1539); +emit_16(1473); +emit_16(1539); +emit_16(1472); +emit_16(1539); +emit_16(1473); +emit_16(1540); +emit_16(1474); +emit_16(1540); +emit_16(1473); +emit_16(1540); +emit_16(1474); +emit_16(1541); +emit_16(1475); +emit_16(1541); +emit_16(1474); +emit_16(1541); +emit_16(1475); +emit_16(1542); +emit_16(1476); +emit_16(1542); +emit_16(1475); +emit_16(1542); +emit_16(1476); +emit_16(1543); +emit_16(1477); +emit_16(1543); +emit_16(1476); +emit_16(1543); +emit_16(1477); +emit_16(1544); +emit_16(1478); +emit_16(1544); +emit_16(1477); +emit_16(1544); +emit_16(1478); +emit_16(1545); +emit_16(1479); +emit_16(1545); +emit_16(1478); +emit_16(1545); +emit_16(1479); +emit_16(1546); +emit_16(1480); +emit_16(1546); +emit_16(1479); +emit_16(1546); +emit_16(1480); +emit_16(1547); +emit_16(1481); +emit_16(1547); +emit_16(1480); +emit_16(1547); +emit_16(1481); +emit_16(1548); +emit_16(1482); +emit_16(1548); +emit_16(1481); +emit_16(1548); +emit_16(1482); +emit_16(1549); +emit_16(1483); +emit_16(1549); +emit_16(1482); +emit_16(1549); +emit_16(1483); +emit_16(1550); +emit_16(1484); +emit_16(1550); +emit_16(1483); +emit_16(1550); +emit_16(1484); +emit_16(1551); +emit_16(1485); +emit_16(1551); +emit_16(1484); +emit_16(1551); +emit_16(1485); +emit_16(1552); +emit_16(1486); +emit_16(1552); +emit_16(1485); +emit_16(1552); +emit_16(1486); +emit_16(1553); +emit_16(1487); +emit_16(1553); +emit_16(1486); +emit_16(1553); +emit_16(1487); +emit_16(1554); +emit_16(1488); +emit_16(1554); +emit_16(1487); +emit_16(1554); +emit_16(1488); +emit_16(1555); +emit_16(1489); +emit_16(1555); +emit_16(1488); +emit_16(1555); +emit_16(1489); +emit_16(1556); +emit_16(1490); +emit_16(1556); +emit_16(1489); +emit_16(1556); +emit_16(1490); +emit_16(1557); +emit_16(1491); +emit_16(1557); +emit_16(1490); +emit_16(1557); +emit_16(1491); +emit_16(1558); +emit_16(1492); +emit_16(1558); +emit_16(1491); +emit_16(1558); +emit_16(1492); +emit_16(1559); +emit_16(1493); +emit_16(1559); +emit_16(1492); +emit_16(1559); +emit_16(1493); +emit_16(1560); +emit_16(1494); +emit_16(1560); +emit_16(1493); +emit_16(1560); +emit_16(1494); +emit_16(1561); +emit_16(1495); +emit_16(1561); +emit_16(1494); +emit_16(1561); +emit_16(1495); +emit_16(1562); +emit_16(1496); +emit_16(1562); +emit_16(1495); +emit_16(1562); +emit_16(1496); +emit_16(1563); +emit_16(1497); +emit_16(1563); +emit_16(1496); +emit_16(1563); +emit_16(1497); +emit_16(1564); +emit_16(1498); +emit_16(1564); +emit_16(1497); +emit_16(1564); +emit_16(1498); +emit_16(1565); +emit_16(1499); +emit_16(1565); +emit_16(1498); +emit_16(1565); +emit_16(1499); +emit_16(1566); +emit_16(1500); +emit_16(1566); +emit_16(1499); +emit_16(1566); +emit_16(1500); +emit_16(1567); +emit_16(1501); +emit_16(1567); +emit_16(1500); +emit_16(1567); +emit_16(1501); +emit_16(1568); +emit_16(1502); +emit_16(1568); +emit_16(1501); +emit_16(1568); +emit_16(1502); +emit_16(1569); +emit_16(1503); +emit_16(1569); +emit_16(1502); +emit_16(1569); +emit_16(1503); +emit_16(1570); +emit_16(1504); +emit_16(1570); +emit_16(1503); +emit_16(1570); +emit_16(1504); +emit_16(1571); +emit_16(1505); +emit_16(1571); +emit_16(1504); +emit_16(1571); +emit_16(1505); +emit_16(1572); +emit_16(1506); +emit_16(1572); +emit_16(1505); +emit_16(1572); +emit_16(1506); +emit_16(1573); +emit_16(1507); +emit_16(1573); +emit_16(1506); +emit_16(1573); +emit_16(1507); +emit_16(1574); +emit_16(1508); +emit_16(1574); +emit_16(1507); +emit_16(1574); +emit_16(1508); +emit_16(1575); +emit_16(1509); +emit_16(1575); +emit_16(1508); +emit_16(1575); +emit_16(1509); +emit_16(1576); +emit_16(1510); +emit_16(1576); +emit_16(1509); +emit_16(1576); +emit_16(1510); +emit_16(1577); +emit_16(1511); +emit_16(1577); +emit_16(1510); +emit_16(1577); +emit_16(1511); +emit_16(1578); +emit_16(1512); +emit_16(1578); +emit_16(1511); +emit_16(1578); +emit_16(1512); +emit_16(1579); +emit_16(1513); +emit_16(1579); +emit_16(1512); +emit_16(1579); +emit_16(1513); +emit_16(1580); +emit_16(1514); +emit_16(1580); +emit_16(1513); +emit_16(1580); +emit_16(1514); +emit_16(1581); +emit_16(1515); +emit_16(1581); +emit_16(1514); +emit_16(1581); +emit_16(1515); +emit_16(1582); +emit_16(1516); +emit_16(1582); +emit_16(1515); +emit_16(1582); +emit_16(1516); +emit_16(1583); +emit_16(1517); +emit_16(1583); +emit_16(1516); +emit_16(1584); +emit_16(1518); +emit_16(1585); +emit_16(1519); +emit_16(1585); +emit_16(1518); +emit_16(1585); +emit_16(1519); +emit_16(1586); +emit_16(1520); +emit_16(1586); +emit_16(1519); +emit_16(1586); +emit_16(1520); +emit_16(1587); +emit_16(1521); +emit_16(1587); +emit_16(1520); +emit_16(1587); +emit_16(1521); +emit_16(1588); +emit_16(1522); +emit_16(1588); +emit_16(1521); +emit_16(1588); +emit_16(1522); +emit_16(1589); +emit_16(1523); +emit_16(1589); +emit_16(1522); +emit_16(1589); +emit_16(1523); +emit_16(1590); +emit_16(1524); +emit_16(1590); +emit_16(1523); +emit_16(1590); +emit_16(1524); +emit_16(1591); +emit_16(1525); +emit_16(1591); +emit_16(1524); +emit_16(1591); +emit_16(1525); +emit_16(1592); +emit_16(1526); +emit_16(1592); +emit_16(1525); +emit_16(1592); +emit_16(1526); +emit_16(1593); +emit_16(1527); +emit_16(1593); +emit_16(1526); +emit_16(1593); +emit_16(1527); +emit_16(1594); +emit_16(1528); +emit_16(1594); +emit_16(1527); +emit_16(1594); +emit_16(1528); +emit_16(1595); +emit_16(1529); +emit_16(1595); +emit_16(1528); +emit_16(1595); +emit_16(1529); +emit_16(1596); +emit_16(1530); +emit_16(1596); +emit_16(1529); +emit_16(1596); +emit_16(1530); +emit_16(1597); +emit_16(1531); +emit_16(1597); +emit_16(1530); +emit_16(1597); +emit_16(1531); +emit_16(1598); +emit_16(1532); +emit_16(1598); +emit_16(1531); +emit_16(1598); +emit_16(1532); +emit_16(1599); +emit_16(1533); +emit_16(1599); +emit_16(1532); +emit_16(1599); +emit_16(1533); +emit_16(1600); +emit_16(1534); +emit_16(1600); +emit_16(1533); +emit_16(1600); +emit_16(1534); +emit_16(1601); +emit_16(1535); +emit_16(1601); +emit_16(1534); +emit_16(1601); +emit_16(1535); +emit_16(1602); +emit_16(1536); +emit_16(1602); +emit_16(1535); +emit_16(1602); +emit_16(1536); +emit_16(1603); +emit_16(1537); +emit_16(1603); +emit_16(1536); +emit_16(1603); +emit_16(1537); +emit_16(1604); +emit_16(1538); +emit_16(1604); +emit_16(1537); +emit_16(1604); +emit_16(1538); +emit_16(1605); +emit_16(1539); +emit_16(1605); +emit_16(1538); +emit_16(1605); +emit_16(1539); +emit_16(1606); +emit_16(1540); +emit_16(1606); +emit_16(1539); +emit_16(1606); +emit_16(1540); +emit_16(1607); +emit_16(1541); +emit_16(1607); +emit_16(1540); +emit_16(1607); +emit_16(1541); +emit_16(1608); +emit_16(1542); +emit_16(1608); +emit_16(1541); +emit_16(1608); +emit_16(1542); +emit_16(1609); +emit_16(1543); +emit_16(1609); +emit_16(1542); +emit_16(1609); +emit_16(1543); +emit_16(1610); +emit_16(1544); +emit_16(1610); +emit_16(1543); +emit_16(1610); +emit_16(1544); +emit_16(1611); +emit_16(1545); +emit_16(1611); +emit_16(1544); +emit_16(1611); +emit_16(1545); +emit_16(1612); +emit_16(1546); +emit_16(1612); +emit_16(1545); +emit_16(1612); +emit_16(1546); +emit_16(1613); +emit_16(1547); +emit_16(1613); +emit_16(1546); +emit_16(1613); +emit_16(1547); +emit_16(1614); +emit_16(1548); +emit_16(1614); +emit_16(1547); +emit_16(1614); +emit_16(1548); +emit_16(1615); +emit_16(1549); +emit_16(1615); +emit_16(1548); +emit_16(1615); +emit_16(1549); +emit_16(1616); +emit_16(1550); +emit_16(1616); +emit_16(1549); +emit_16(1616); +emit_16(1550); +emit_16(1617); +emit_16(1551); +emit_16(1617); +emit_16(1550); +emit_16(1617); +emit_16(1551); +emit_16(1618); +emit_16(1552); +emit_16(1618); +emit_16(1551); +emit_16(1618); +emit_16(1552); +emit_16(1619); +emit_16(1553); +emit_16(1619); +emit_16(1552); +emit_16(1619); +emit_16(1553); +emit_16(1620); +emit_16(1554); +emit_16(1620); +emit_16(1553); +emit_16(1620); +emit_16(1554); +emit_16(1621); +emit_16(1555); +emit_16(1621); +emit_16(1554); +emit_16(1621); +emit_16(1555); +emit_16(1622); +emit_16(1556); +emit_16(1622); +emit_16(1555); +emit_16(1622); +emit_16(1556); +emit_16(1623); +emit_16(1557); +emit_16(1623); +emit_16(1556); +emit_16(1623); +emit_16(1557); +emit_16(1624); +emit_16(1558); +emit_16(1624); +emit_16(1557); +emit_16(1624); +emit_16(1558); +emit_16(1625); +emit_16(1559); +emit_16(1625); +emit_16(1558); +emit_16(1625); +emit_16(1559); +emit_16(1626); +emit_16(1560); +emit_16(1626); +emit_16(1559); +emit_16(1626); +emit_16(1560); +emit_16(1627); +emit_16(1561); +emit_16(1627); +emit_16(1560); +emit_16(1627); +emit_16(1561); +emit_16(1628); +emit_16(1562); +emit_16(1628); +emit_16(1561); +emit_16(1628); +emit_16(1562); +emit_16(1629); +emit_16(1563); +emit_16(1629); +emit_16(1562); +emit_16(1629); +emit_16(1563); +emit_16(1630); +emit_16(1564); +emit_16(1630); +emit_16(1563); +emit_16(1630); +emit_16(1564); +emit_16(1631); +emit_16(1565); +emit_16(1631); +emit_16(1564); +emit_16(1631); +emit_16(1565); +emit_16(1632); +emit_16(1566); +emit_16(1632); +emit_16(1565); +emit_16(1632); +emit_16(1566); +emit_16(1633); +emit_16(1567); +emit_16(1633); +emit_16(1566); +emit_16(1633); +emit_16(1567); +emit_16(1634); +emit_16(1568); +emit_16(1634); +emit_16(1567); +emit_16(1634); +emit_16(1568); +emit_16(1635); +emit_16(1569); +emit_16(1635); +emit_16(1568); +emit_16(1635); +emit_16(1569); +emit_16(1636); +emit_16(1570); +emit_16(1636); +emit_16(1569); +emit_16(1636); +emit_16(1570); +emit_16(1637); +emit_16(1571); +emit_16(1637); +emit_16(1570); +emit_16(1637); +emit_16(1571); +emit_16(1638); +emit_16(1572); +emit_16(1638); +emit_16(1571); +emit_16(1638); +emit_16(1572); +emit_16(1639); +emit_16(1573); +emit_16(1639); +emit_16(1572); +emit_16(1639); +emit_16(1573); +emit_16(1640); +emit_16(1574); +emit_16(1640); +emit_16(1573); +emit_16(1640); +emit_16(1574); +emit_16(1641); +emit_16(1575); +emit_16(1641); +emit_16(1574); +emit_16(1641); +emit_16(1575); +emit_16(1642); +emit_16(1576); +emit_16(1642); +emit_16(1575); +emit_16(1642); +emit_16(1576); +emit_16(1643); +emit_16(1577); +emit_16(1643); +emit_16(1576); +emit_16(1643); +emit_16(1577); +emit_16(1644); +emit_16(1578); +emit_16(1644); +emit_16(1577); +emit_16(1644); +emit_16(1578); +emit_16(1645); +emit_16(1579); +emit_16(1645); +emit_16(1578); +emit_16(1645); +emit_16(1579); +emit_16(1646); +emit_16(1580); +emit_16(1646); +emit_16(1579); +emit_16(1646); +emit_16(1580); +emit_16(1647); +emit_16(1581); +emit_16(1647); +emit_16(1580); +emit_16(1647); +emit_16(1581); +emit_16(1648); +emit_16(1582); +emit_16(1648); +emit_16(1581); +emit_16(1648); +emit_16(1582); +emit_16(1649); +emit_16(1583); +emit_16(1649); +emit_16(1582); +emit_16(1650); +emit_16(1584); +emit_16(1651); +emit_16(1585); +emit_16(1651); +emit_16(1584); +emit_16(1651); +emit_16(1585); +emit_16(1652); +emit_16(1586); +emit_16(1652); +emit_16(1585); +emit_16(1652); +emit_16(1586); +emit_16(1653); +emit_16(1587); +emit_16(1653); +emit_16(1586); +emit_16(1653); +emit_16(1587); +emit_16(1654); +emit_16(1588); +emit_16(1654); +emit_16(1587); +emit_16(1654); +emit_16(1588); +emit_16(1655); +emit_16(1589); +emit_16(1655); +emit_16(1588); +emit_16(1655); +emit_16(1589); +emit_16(1656); +emit_16(1590); +emit_16(1656); +emit_16(1589); +emit_16(1656); +emit_16(1590); +emit_16(1657); +emit_16(1591); +emit_16(1657); +emit_16(1590); +emit_16(1657); +emit_16(1591); +emit_16(1658); +emit_16(1592); +emit_16(1658); +emit_16(1591); +emit_16(1658); +emit_16(1592); +emit_16(1659); +emit_16(1593); +emit_16(1659); +emit_16(1592); +emit_16(1659); +emit_16(1593); +emit_16(1660); +emit_16(1594); +emit_16(1660); +emit_16(1593); +emit_16(1660); +emit_16(1594); +emit_16(1661); +emit_16(1595); +emit_16(1661); +emit_16(1594); +emit_16(1661); +emit_16(1595); +emit_16(1662); +emit_16(1596); +emit_16(1662); +emit_16(1595); +emit_16(1662); +emit_16(1596); +emit_16(1663); +emit_16(1597); +emit_16(1663); +emit_16(1596); +emit_16(1663); +emit_16(1597); +emit_16(1664); +emit_16(1598); +emit_16(1664); +emit_16(1597); +emit_16(1664); +emit_16(1598); +emit_16(1665); +emit_16(1599); +emit_16(1665); +emit_16(1598); +emit_16(1665); +emit_16(1599); +emit_16(1666); +emit_16(1600); +emit_16(1666); +emit_16(1599); +emit_16(1666); +emit_16(1600); +emit_16(1667); +emit_16(1601); +emit_16(1667); +emit_16(1600); +emit_16(1667); +emit_16(1601); +emit_16(1668); +emit_16(1602); +emit_16(1668); +emit_16(1601); +emit_16(1668); +emit_16(1602); +emit_16(1669); +emit_16(1603); +emit_16(1669); +emit_16(1602); +emit_16(1669); +emit_16(1603); +emit_16(1670); +emit_16(1604); +emit_16(1670); +emit_16(1603); +emit_16(1670); +emit_16(1604); +emit_16(1671); +emit_16(1605); +emit_16(1671); +emit_16(1604); +emit_16(1671); +emit_16(1605); +emit_16(1672); +emit_16(1606); +emit_16(1672); +emit_16(1605); +emit_16(1672); +emit_16(1606); +emit_16(1673); +emit_16(1607); +emit_16(1673); +emit_16(1606); +emit_16(1673); +emit_16(1607); +emit_16(1674); +emit_16(1608); +emit_16(1674); +emit_16(1607); +emit_16(1674); +emit_16(1608); +emit_16(1675); +emit_16(1609); +emit_16(1675); +emit_16(1608); +emit_16(1675); +emit_16(1609); +emit_16(1676); +emit_16(1610); +emit_16(1676); +emit_16(1609); +emit_16(1676); +emit_16(1610); +emit_16(1677); +emit_16(1611); +emit_16(1677); +emit_16(1610); +emit_16(1677); +emit_16(1611); +emit_16(1678); +emit_16(1612); +emit_16(1678); +emit_16(1611); +emit_16(1678); +emit_16(1612); +emit_16(1679); +emit_16(1613); +emit_16(1679); +emit_16(1612); +emit_16(1679); +emit_16(1613); +emit_16(1680); +emit_16(1614); +emit_16(1680); +emit_16(1613); +emit_16(1680); +emit_16(1614); +emit_16(1681); +emit_16(1615); +emit_16(1681); +emit_16(1614); +emit_16(1681); +emit_16(1615); +emit_16(1682); +emit_16(1616); +emit_16(1682); +emit_16(1615); +emit_16(1682); +emit_16(1616); +emit_16(1683); +emit_16(1617); +emit_16(1683); +emit_16(1616); +emit_16(1683); +emit_16(1617); +emit_16(1684); +emit_16(1618); +emit_16(1684); +emit_16(1617); +emit_16(1684); +emit_16(1618); +emit_16(1685); +emit_16(1619); +emit_16(1685); +emit_16(1618); +emit_16(1685); +emit_16(1619); +emit_16(1686); +emit_16(1620); +emit_16(1686); +emit_16(1619); +emit_16(1686); +emit_16(1620); +emit_16(1687); +emit_16(1621); +emit_16(1687); +emit_16(1620); +emit_16(1687); +emit_16(1621); +emit_16(1688); +emit_16(1622); +emit_16(1688); +emit_16(1621); +emit_16(1688); +emit_16(1622); +emit_16(1689); +emit_16(1623); +emit_16(1689); +emit_16(1622); +emit_16(1689); +emit_16(1623); +emit_16(1690); +emit_16(1624); +emit_16(1690); +emit_16(1623); +emit_16(1690); +emit_16(1624); +emit_16(1691); +emit_16(1625); +emit_16(1691); +emit_16(1624); +emit_16(1691); +emit_16(1625); +emit_16(1692); +emit_16(1626); +emit_16(1692); +emit_16(1625); +emit_16(1692); +emit_16(1626); +emit_16(1693); +emit_16(1627); +emit_16(1693); +emit_16(1626); +emit_16(1693); +emit_16(1627); +emit_16(1694); +emit_16(1628); +emit_16(1694); +emit_16(1627); +emit_16(1694); +emit_16(1628); +emit_16(1695); +emit_16(1629); +emit_16(1695); +emit_16(1628); +emit_16(1695); +emit_16(1629); +emit_16(1696); +emit_16(1630); +emit_16(1696); +emit_16(1629); +emit_16(1696); +emit_16(1630); +emit_16(1697); +emit_16(1631); +emit_16(1697); +emit_16(1630); +emit_16(1697); +emit_16(1631); +emit_16(1698); +emit_16(1632); +emit_16(1698); +emit_16(1631); +emit_16(1698); +emit_16(1632); +emit_16(1699); +emit_16(1633); +emit_16(1699); +emit_16(1632); +emit_16(1699); +emit_16(1633); +emit_16(1700); +emit_16(1634); +emit_16(1700); +emit_16(1633); +emit_16(1700); +emit_16(1634); +emit_16(1701); +emit_16(1635); +emit_16(1701); +emit_16(1634); +emit_16(1701); +emit_16(1635); +emit_16(1702); +emit_16(1636); +emit_16(1702); +emit_16(1635); +emit_16(1702); +emit_16(1636); +emit_16(1703); +emit_16(1637); +emit_16(1703); +emit_16(1636); +emit_16(1703); +emit_16(1637); +emit_16(1704); +emit_16(1638); +emit_16(1704); +emit_16(1637); +emit_16(1704); +emit_16(1638); +emit_16(1705); +emit_16(1639); +emit_16(1705); +emit_16(1638); +emit_16(1705); +emit_16(1639); +emit_16(1706); +emit_16(1640); +emit_16(1706); +emit_16(1639); +emit_16(1706); +emit_16(1640); +emit_16(1707); +emit_16(1641); +emit_16(1707); +emit_16(1640); +emit_16(1707); +emit_16(1641); +emit_16(1708); +emit_16(1642); +emit_16(1708); +emit_16(1641); +emit_16(1708); +emit_16(1642); +emit_16(1709); +emit_16(1643); +emit_16(1709); +emit_16(1642); +emit_16(1709); +emit_16(1643); +emit_16(1710); +emit_16(1644); +emit_16(1710); +emit_16(1643); +emit_16(1710); +emit_16(1644); +emit_16(1711); +emit_16(1645); +emit_16(1711); +emit_16(1644); +emit_16(1711); +emit_16(1645); +emit_16(1712); +emit_16(1646); +emit_16(1712); +emit_16(1645); +emit_16(1712); +emit_16(1646); +emit_16(1713); +emit_16(1647); +emit_16(1713); +emit_16(1646); +emit_16(1713); +emit_16(1647); +emit_16(1714); +emit_16(1648); +emit_16(1714); +emit_16(1647); +emit_16(1714); +emit_16(1648); +emit_16(1715); +emit_16(1649); +emit_16(1715); +emit_16(1648); +emit_16(1716); +emit_16(1650); +emit_16(1717); +emit_16(1651); +emit_16(1717); +emit_16(1650); +emit_16(1717); +emit_16(1651); +emit_16(1718); +emit_16(1652); +emit_16(1718); +emit_16(1651); +emit_16(1718); +emit_16(1652); +emit_16(1719); +emit_16(1653); +emit_16(1719); +emit_16(1652); +emit_16(1719); +emit_16(1653); +emit_16(1720); +emit_16(1654); +emit_16(1720); +emit_16(1653); +emit_16(1720); +emit_16(1654); +emit_16(1721); +emit_16(1655); +emit_16(1721); +emit_16(1654); +emit_16(1721); +emit_16(1655); +emit_16(1722); +emit_16(1656); +emit_16(1722); +emit_16(1655); +emit_16(1722); +emit_16(1656); +emit_16(1723); +emit_16(1657); +emit_16(1723); +emit_16(1656); +emit_16(1723); +emit_16(1657); +emit_16(1724); +emit_16(1658); +emit_16(1724); +emit_16(1657); +emit_16(1724); +emit_16(1658); +emit_16(1725); +emit_16(1659); +emit_16(1725); +emit_16(1658); +emit_16(1725); +emit_16(1659); +emit_16(1726); +emit_16(1660); +emit_16(1726); +emit_16(1659); +emit_16(1726); +emit_16(1660); +emit_16(1727); +emit_16(1661); +emit_16(1727); +emit_16(1660); +emit_16(1727); +emit_16(1661); +emit_16(1728); +emit_16(1662); +emit_16(1728); +emit_16(1661); +emit_16(1728); +emit_16(1662); +emit_16(1729); +emit_16(1663); +emit_16(1729); +emit_16(1662); +emit_16(1729); +emit_16(1663); +emit_16(1730); +emit_16(1664); +emit_16(1730); +emit_16(1663); +emit_16(1730); +emit_16(1664); +emit_16(1731); +emit_16(1665); +emit_16(1731); +emit_16(1664); +emit_16(1731); +emit_16(1665); +emit_16(1732); +emit_16(1666); +emit_16(1732); +emit_16(1665); +emit_16(1732); +emit_16(1666); +emit_16(1733); +emit_16(1667); +emit_16(1733); +emit_16(1666); +emit_16(1733); +emit_16(1667); +emit_16(1734); +emit_16(1668); +emit_16(1734); +emit_16(1667); +emit_16(1734); +emit_16(1668); +emit_16(1735); +emit_16(1669); +emit_16(1735); +emit_16(1668); +emit_16(1735); +emit_16(1669); +emit_16(1736); +emit_16(1670); +emit_16(1736); +emit_16(1669); +emit_16(1736); +emit_16(1670); +emit_16(1737); +emit_16(1671); +emit_16(1737); +emit_16(1670); +emit_16(1737); +emit_16(1671); +emit_16(1738); +emit_16(1672); +emit_16(1738); +emit_16(1671); +emit_16(1738); +emit_16(1672); +emit_16(1739); +emit_16(1673); +emit_16(1739); +emit_16(1672); +emit_16(1739); +emit_16(1673); +emit_16(1740); +emit_16(1674); +emit_16(1740); +emit_16(1673); +emit_16(1740); +emit_16(1674); +emit_16(1741); +emit_16(1675); +emit_16(1741); +emit_16(1674); +emit_16(1741); +emit_16(1675); +emit_16(1742); +emit_16(1676); +emit_16(1742); +emit_16(1675); +emit_16(1742); +emit_16(1676); +emit_16(1743); +emit_16(1677); +emit_16(1743); +emit_16(1676); +emit_16(1743); +emit_16(1677); +emit_16(1744); +emit_16(1678); +emit_16(1744); +emit_16(1677); +emit_16(1744); +emit_16(1678); +emit_16(1745); +emit_16(1679); +emit_16(1745); +emit_16(1678); +emit_16(1745); +emit_16(1679); +emit_16(1746); +emit_16(1680); +emit_16(1746); +emit_16(1679); +emit_16(1746); +emit_16(1680); +emit_16(1747); +emit_16(1681); +emit_16(1747); +emit_16(1680); +emit_16(1747); +emit_16(1681); +emit_16(1748); +emit_16(1682); +emit_16(1748); +emit_16(1681); +emit_16(1748); +emit_16(1682); +emit_16(1749); +emit_16(1683); +emit_16(1749); +emit_16(1682); +emit_16(1749); +emit_16(1683); +emit_16(1750); +emit_16(1684); +emit_16(1750); +emit_16(1683); +emit_16(1750); +emit_16(1684); +emit_16(1751); +emit_16(1685); +emit_16(1751); +emit_16(1684); +emit_16(1751); +emit_16(1685); +emit_16(1752); +emit_16(1686); +emit_16(1752); +emit_16(1685); +emit_16(1752); +emit_16(1686); +emit_16(1753); +emit_16(1687); +emit_16(1753); +emit_16(1686); +emit_16(1753); +emit_16(1687); +emit_16(1754); +emit_16(1688); +emit_16(1754); +emit_16(1687); +emit_16(1754); +emit_16(1688); +emit_16(1755); +emit_16(1689); +emit_16(1755); +emit_16(1688); +emit_16(1755); +emit_16(1689); +emit_16(1756); +emit_16(1690); +emit_16(1756); +emit_16(1689); +emit_16(1756); +emit_16(1690); +emit_16(1757); +emit_16(1691); +emit_16(1757); +emit_16(1690); +emit_16(1757); +emit_16(1691); +emit_16(1758); +emit_16(1692); +emit_16(1758); +emit_16(1691); +emit_16(1758); +emit_16(1692); +emit_16(1759); +emit_16(1693); +emit_16(1759); +emit_16(1692); +emit_16(1759); +emit_16(1693); +emit_16(1760); +emit_16(1694); +emit_16(1760); +emit_16(1693); +emit_16(1760); +emit_16(1694); +emit_16(1761); +emit_16(1695); +emit_16(1761); +emit_16(1694); +emit_16(1761); +emit_16(1695); +emit_16(1762); +emit_16(1696); +emit_16(1762); +emit_16(1695); +emit_16(1762); +emit_16(1696); +emit_16(1763); +emit_16(1697); +emit_16(1763); +emit_16(1696); +emit_16(1763); +emit_16(1697); +emit_16(1764); +emit_16(1698); +emit_16(1764); +emit_16(1697); +emit_16(1764); +emit_16(1698); +emit_16(1765); +emit_16(1699); +emit_16(1765); +emit_16(1698); +emit_16(1765); +emit_16(1699); +emit_16(1766); +emit_16(1700); +emit_16(1766); +emit_16(1699); +emit_16(1766); +emit_16(1700); +emit_16(1767); +emit_16(1701); +emit_16(1767); +emit_16(1700); +emit_16(1767); +emit_16(1701); +emit_16(1768); +emit_16(1702); +emit_16(1768); +emit_16(1701); +emit_16(1768); +emit_16(1702); +emit_16(1769); +emit_16(1703); +emit_16(1769); +emit_16(1702); +emit_16(1769); +emit_16(1703); +emit_16(1770); +emit_16(1704); +emit_16(1770); +emit_16(1703); +emit_16(1770); +emit_16(1704); +emit_16(1771); +emit_16(1705); +emit_16(1771); +emit_16(1704); +emit_16(1771); +emit_16(1705); +emit_16(1772); +emit_16(1706); +emit_16(1772); +emit_16(1705); +emit_16(1772); +emit_16(1706); +emit_16(1773); +emit_16(1707); +emit_16(1773); +emit_16(1706); +emit_16(1773); +emit_16(1707); +emit_16(1774); +emit_16(1708); +emit_16(1774); +emit_16(1707); +emit_16(1774); +emit_16(1708); +emit_16(1775); +emit_16(1709); +emit_16(1775); +emit_16(1708); +emit_16(1775); +emit_16(1709); +emit_16(1776); +emit_16(1710); +emit_16(1776); +emit_16(1709); +emit_16(1776); +emit_16(1710); +emit_16(1777); +emit_16(1711); +emit_16(1777); +emit_16(1710); +emit_16(1777); +emit_16(1711); +emit_16(1778); +emit_16(1712); +emit_16(1778); +emit_16(1711); +emit_16(1778); +emit_16(1712); +emit_16(1779); +emit_16(1713); +emit_16(1779); +emit_16(1712); +emit_16(1779); +emit_16(1713); +emit_16(1780); +emit_16(1714); +emit_16(1780); +emit_16(1713); +emit_16(1780); +emit_16(1714); +emit_16(1781); +emit_16(1715); +emit_16(1781); +emit_16(1714); +emit_16(1782); +emit_16(1716); +emit_16(1783); +emit_16(1717); +emit_16(1783); +emit_16(1716); +emit_16(1783); +emit_16(1717); +emit_16(1784); +emit_16(1718); +emit_16(1784); +emit_16(1717); +emit_16(1784); +emit_16(1718); +emit_16(1785); +emit_16(1719); +emit_16(1785); +emit_16(1718); +emit_16(1785); +emit_16(1719); +emit_16(1786); +emit_16(1720); +emit_16(1786); +emit_16(1719); +emit_16(1786); +emit_16(1720); +emit_16(1787); +emit_16(1721); +emit_16(1787); +emit_16(1720); +emit_16(1787); +emit_16(1721); +emit_16(1788); +emit_16(1722); +emit_16(1788); +emit_16(1721); +emit_16(1788); +emit_16(1722); +emit_16(1789); +emit_16(1723); +emit_16(1789); +emit_16(1722); +emit_16(1789); +emit_16(1723); +emit_16(1790); +emit_16(1724); +emit_16(1790); +emit_16(1723); +emit_16(1790); +emit_16(1724); +emit_16(1791); +emit_16(1725); +emit_16(1791); +emit_16(1724); +emit_16(1791); +emit_16(1725); +emit_16(1792); +emit_16(1726); +emit_16(1792); +emit_16(1725); +emit_16(1792); +emit_16(1726); +emit_16(1793); +emit_16(1727); +emit_16(1793); +emit_16(1726); +emit_16(1793); +emit_16(1727); +emit_16(1794); +emit_16(1728); +emit_16(1794); +emit_16(1727); +emit_16(1794); +emit_16(1728); +emit_16(1795); +emit_16(1729); +emit_16(1795); +emit_16(1728); +emit_16(1795); +emit_16(1729); +emit_16(1796); +emit_16(1730); +emit_16(1796); +emit_16(1729); +emit_16(1796); +emit_16(1730); +emit_16(1797); +emit_16(1731); +emit_16(1797); +emit_16(1730); +emit_16(1797); +emit_16(1731); +emit_16(1798); +emit_16(1732); +emit_16(1798); +emit_16(1731); +emit_16(1798); +emit_16(1732); +emit_16(1799); +emit_16(1733); +emit_16(1799); +emit_16(1732); +emit_16(1799); +emit_16(1733); +emit_16(1800); +emit_16(1734); +emit_16(1800); +emit_16(1733); +emit_16(1800); +emit_16(1734); +emit_16(1801); +emit_16(1735); +emit_16(1801); +emit_16(1734); +emit_16(1801); +emit_16(1735); +emit_16(1802); +emit_16(1736); +emit_16(1802); +emit_16(1735); +emit_16(1802); +emit_16(1736); +emit_16(1803); +emit_16(1737); +emit_16(1803); +emit_16(1736); +emit_16(1803); +emit_16(1737); +emit_16(1804); +emit_16(1738); +emit_16(1804); +emit_16(1737); +emit_16(1804); +emit_16(1738); +emit_16(1805); +emit_16(1739); +emit_16(1805); +emit_16(1738); +emit_16(1805); +emit_16(1739); +emit_16(1806); +emit_16(1740); +emit_16(1806); +emit_16(1739); +emit_16(1806); +emit_16(1740); +emit_16(1807); +emit_16(1741); +emit_16(1807); +emit_16(1740); +emit_16(1807); +emit_16(1741); +emit_16(1808); +emit_16(1742); +emit_16(1808); +emit_16(1741); +emit_16(1808); +emit_16(1742); +emit_16(1809); +emit_16(1743); +emit_16(1809); +emit_16(1742); +emit_16(1809); +emit_16(1743); +emit_16(1810); +emit_16(1744); +emit_16(1810); +emit_16(1743); +emit_16(1810); +emit_16(1744); +emit_16(1811); +emit_16(1745); +emit_16(1811); +emit_16(1744); +emit_16(1811); +emit_16(1745); +emit_16(1812); +emit_16(1746); +emit_16(1812); +emit_16(1745); +emit_16(1812); +emit_16(1746); +emit_16(1813); +emit_16(1747); +emit_16(1813); +emit_16(1746); +emit_16(1813); +emit_16(1747); +emit_16(1814); +emit_16(1748); +emit_16(1814); +emit_16(1747); +emit_16(1814); +emit_16(1748); +emit_16(1815); +emit_16(1749); +emit_16(1815); +emit_16(1748); +emit_16(1815); +emit_16(1749); +emit_16(1816); +emit_16(1750); +emit_16(1816); +emit_16(1749); +emit_16(1816); +emit_16(1750); +emit_16(1817); +emit_16(1751); +emit_16(1817); +emit_16(1750); +emit_16(1817); +emit_16(1751); +emit_16(1818); +emit_16(1752); +emit_16(1818); +emit_16(1751); +emit_16(1818); +emit_16(1752); +emit_16(1819); +emit_16(1753); +emit_16(1819); +emit_16(1752); +emit_16(1819); +emit_16(1753); +emit_16(1820); +emit_16(1754); +emit_16(1820); +emit_16(1753); +emit_16(1820); +emit_16(1754); +emit_16(1821); +emit_16(1755); +emit_16(1821); +emit_16(1754); +emit_16(1821); +emit_16(1755); +emit_16(1822); +emit_16(1756); +emit_16(1822); +emit_16(1755); +emit_16(1822); +emit_16(1756); +emit_16(1823); +emit_16(1757); +emit_16(1823); +emit_16(1756); +emit_16(1823); +emit_16(1757); +emit_16(1824); +emit_16(1758); +emit_16(1824); +emit_16(1757); +emit_16(1824); +emit_16(1758); +emit_16(1825); +emit_16(1759); +emit_16(1825); +emit_16(1758); +emit_16(1825); +emit_16(1759); +emit_16(1826); +emit_16(1760); +emit_16(1826); +emit_16(1759); +emit_16(1826); +emit_16(1760); +emit_16(1827); +emit_16(1761); +emit_16(1827); +emit_16(1760); +emit_16(1827); +emit_16(1761); +emit_16(1828); +emit_16(1762); +emit_16(1828); +emit_16(1761); +emit_16(1828); +emit_16(1762); +emit_16(1829); +emit_16(1763); +emit_16(1829); +emit_16(1762); +emit_16(1829); +emit_16(1763); +emit_16(1830); +emit_16(1764); +emit_16(1830); +emit_16(1763); +emit_16(1830); +emit_16(1764); +emit_16(1831); +emit_16(1765); +emit_16(1831); +emit_16(1764); +emit_16(1831); +emit_16(1765); +emit_16(1832); +emit_16(1766); +emit_16(1832); +emit_16(1765); +emit_16(1832); +emit_16(1766); +emit_16(1833); +emit_16(1767); +emit_16(1833); +emit_16(1766); +emit_16(1833); +emit_16(1767); +emit_16(1834); +emit_16(1768); +emit_16(1834); +emit_16(1767); +emit_16(1834); +emit_16(1768); +emit_16(1835); +emit_16(1769); +emit_16(1835); +emit_16(1768); +emit_16(1835); +emit_16(1769); +emit_16(1836); +emit_16(1770); +emit_16(1836); +emit_16(1769); +emit_16(1836); +emit_16(1770); +emit_16(1837); +emit_16(1771); +emit_16(1837); +emit_16(1770); +emit_16(1837); +emit_16(1771); +emit_16(1838); +emit_16(1772); +emit_16(1838); +emit_16(1771); +emit_16(1838); +emit_16(1772); +emit_16(1839); +emit_16(1773); +emit_16(1839); +emit_16(1772); +emit_16(1839); +emit_16(1773); +emit_16(1840); +emit_16(1774); +emit_16(1840); +emit_16(1773); +emit_16(1840); +emit_16(1774); +emit_16(1841); +emit_16(1775); +emit_16(1841); +emit_16(1774); +emit_16(1841); +emit_16(1775); +emit_16(1842); +emit_16(1776); +emit_16(1842); +emit_16(1775); +emit_16(1842); +emit_16(1776); +emit_16(1843); +emit_16(1777); +emit_16(1843); +emit_16(1776); +emit_16(1843); +emit_16(1777); +emit_16(1844); +emit_16(1778); +emit_16(1844); +emit_16(1777); +emit_16(1844); +emit_16(1778); +emit_16(1845); +emit_16(1779); +emit_16(1845); +emit_16(1778); +emit_16(1845); +emit_16(1779); +emit_16(1846); +emit_16(1780); +emit_16(1846); +emit_16(1779); +emit_16(1846); +emit_16(1780); +emit_16(1847); +emit_16(1781); +emit_16(1847); +emit_16(1780); +emit_16(1848); +emit_16(1782); +emit_16(1849); +emit_16(1783); +emit_16(1849); +emit_16(1782); +emit_16(1849); +emit_16(1783); +emit_16(1850); +emit_16(1784); +emit_16(1850); +emit_16(1783); +emit_16(1850); +emit_16(1784); +emit_16(1851); +emit_16(1785); +emit_16(1851); +emit_16(1784); +emit_16(1851); +emit_16(1785); +emit_16(1852); +emit_16(1786); +emit_16(1852); +emit_16(1785); +emit_16(1852); +emit_16(1786); +emit_16(1853); +emit_16(1787); +emit_16(1853); +emit_16(1786); +emit_16(1853); +emit_16(1787); +emit_16(1854); +emit_16(1788); +emit_16(1854); +emit_16(1787); +emit_16(1854); +emit_16(1788); +emit_16(1855); +emit_16(1789); +emit_16(1855); +emit_16(1788); +emit_16(1855); +emit_16(1789); +emit_16(1856); +emit_16(1790); +emit_16(1856); +emit_16(1789); +emit_16(1856); +emit_16(1790); +emit_16(1857); +emit_16(1791); +emit_16(1857); +emit_16(1790); +emit_16(1857); +emit_16(1791); +emit_16(1858); +emit_16(1792); +emit_16(1858); +emit_16(1791); +emit_16(1858); +emit_16(1792); +emit_16(1859); +emit_16(1793); +emit_16(1859); +emit_16(1792); +emit_16(1859); +emit_16(1793); +emit_16(1860); +emit_16(1794); +emit_16(1860); +emit_16(1793); +emit_16(1860); +emit_16(1794); +emit_16(1861); +emit_16(1795); +emit_16(1861); +emit_16(1794); +emit_16(1861); +emit_16(1795); +emit_16(1862); +emit_16(1796); +emit_16(1862); +emit_16(1795); +emit_16(1862); +emit_16(1796); +emit_16(1863); +emit_16(1797); +emit_16(1863); +emit_16(1796); +emit_16(1863); +emit_16(1797); +emit_16(1864); +emit_16(1798); +emit_16(1864); +emit_16(1797); +emit_16(1864); +emit_16(1798); +emit_16(1865); +emit_16(1799); +emit_16(1865); +emit_16(1798); +emit_16(1865); +emit_16(1799); +emit_16(1866); +emit_16(1800); +emit_16(1866); +emit_16(1799); +emit_16(1866); +emit_16(1800); +emit_16(1867); +emit_16(1801); +emit_16(1867); +emit_16(1800); +emit_16(1867); +emit_16(1801); +emit_16(1868); +emit_16(1802); +emit_16(1868); +emit_16(1801); +emit_16(1868); +emit_16(1802); +emit_16(1869); +emit_16(1803); +emit_16(1869); +emit_16(1802); +emit_16(1869); +emit_16(1803); +emit_16(1870); +emit_16(1804); +emit_16(1870); +emit_16(1803); +emit_16(1870); +emit_16(1804); +emit_16(1871); +emit_16(1805); +emit_16(1871); +emit_16(1804); +emit_16(1871); +emit_16(1805); +emit_16(1872); +emit_16(1806); +emit_16(1872); +emit_16(1805); +emit_16(1872); +emit_16(1806); +emit_16(1873); +emit_16(1807); +emit_16(1873); +emit_16(1806); +emit_16(1873); +emit_16(1807); +emit_16(1874); +emit_16(1808); +emit_16(1874); +emit_16(1807); +emit_16(1874); +emit_16(1808); +emit_16(1875); +emit_16(1809); +emit_16(1875); +emit_16(1808); +emit_16(1875); +emit_16(1809); +emit_16(1876); +emit_16(1810); +emit_16(1876); +emit_16(1809); +emit_16(1876); +emit_16(1810); +emit_16(1877); +emit_16(1811); +emit_16(1877); +emit_16(1810); +emit_16(1877); +emit_16(1811); +emit_16(1878); +emit_16(1812); +emit_16(1878); +emit_16(1811); +emit_16(1878); +emit_16(1812); +emit_16(1879); +emit_16(1813); +emit_16(1879); +emit_16(1812); +emit_16(1879); +emit_16(1813); +emit_16(1880); +emit_16(1814); +emit_16(1880); +emit_16(1813); +emit_16(1880); +emit_16(1814); +emit_16(1881); +emit_16(1815); +emit_16(1881); +emit_16(1814); +emit_16(1881); +emit_16(1815); +emit_16(1882); +emit_16(1816); +emit_16(1882); +emit_16(1815); +emit_16(1882); +emit_16(1816); +emit_16(1883); +emit_16(1817); +emit_16(1883); +emit_16(1816); +emit_16(1883); +emit_16(1817); +emit_16(1884); +emit_16(1818); +emit_16(1884); +emit_16(1817); +emit_16(1884); +emit_16(1818); +emit_16(1885); +emit_16(1819); +emit_16(1885); +emit_16(1818); +emit_16(1885); +emit_16(1819); +emit_16(1886); +emit_16(1820); +emit_16(1886); +emit_16(1819); +emit_16(1886); +emit_16(1820); +emit_16(1887); +emit_16(1821); +emit_16(1887); +emit_16(1820); +emit_16(1887); +emit_16(1821); +emit_16(1888); +emit_16(1822); +emit_16(1888); +emit_16(1821); +emit_16(1888); +emit_16(1822); +emit_16(1889); +emit_16(1823); +emit_16(1889); +emit_16(1822); +emit_16(1889); +emit_16(1823); +emit_16(1890); +emit_16(1824); +emit_16(1890); +emit_16(1823); +emit_16(1890); +emit_16(1824); +emit_16(1891); +emit_16(1825); +emit_16(1891); +emit_16(1824); +emit_16(1891); +emit_16(1825); +emit_16(1892); +emit_16(1826); +emit_16(1892); +emit_16(1825); +emit_16(1892); +emit_16(1826); +emit_16(1893); +emit_16(1827); +emit_16(1893); +emit_16(1826); +emit_16(1893); +emit_16(1827); +emit_16(1894); +emit_16(1828); +emit_16(1894); +emit_16(1827); +emit_16(1894); +emit_16(1828); +emit_16(1895); +emit_16(1829); +emit_16(1895); +emit_16(1828); +emit_16(1895); +emit_16(1829); +emit_16(1896); +emit_16(1830); +emit_16(1896); +emit_16(1829); +emit_16(1896); +emit_16(1830); +emit_16(1897); +emit_16(1831); +emit_16(1897); +emit_16(1830); +emit_16(1897); +emit_16(1831); +emit_16(1898); +emit_16(1832); +emit_16(1898); +emit_16(1831); +emit_16(1898); +emit_16(1832); +emit_16(1899); +emit_16(1833); +emit_16(1899); +emit_16(1832); +emit_16(1899); +emit_16(1833); +emit_16(1900); +emit_16(1834); +emit_16(1900); +emit_16(1833); +emit_16(1900); +emit_16(1834); +emit_16(1901); +emit_16(1835); +emit_16(1901); +emit_16(1834); +emit_16(1901); +emit_16(1835); +emit_16(1902); +emit_16(1836); +emit_16(1902); +emit_16(1835); +emit_16(1902); +emit_16(1836); +emit_16(1903); +emit_16(1837); +emit_16(1903); +emit_16(1836); +emit_16(1903); +emit_16(1837); +emit_16(1904); +emit_16(1838); +emit_16(1904); +emit_16(1837); +emit_16(1904); +emit_16(1838); +emit_16(1905); +emit_16(1839); +emit_16(1905); +emit_16(1838); +emit_16(1905); +emit_16(1839); +emit_16(1906); +emit_16(1840); +emit_16(1906); +emit_16(1839); +emit_16(1906); +emit_16(1840); +emit_16(1907); +emit_16(1841); +emit_16(1907); +emit_16(1840); +emit_16(1907); +emit_16(1841); +emit_16(1908); +emit_16(1842); +emit_16(1908); +emit_16(1841); +emit_16(1908); +emit_16(1842); +emit_16(1909); +emit_16(1843); +emit_16(1909); +emit_16(1842); +emit_16(1909); +emit_16(1843); +emit_16(1910); +emit_16(1844); +emit_16(1910); +emit_16(1843); +emit_16(1910); +emit_16(1844); +emit_16(1911); +emit_16(1845); +emit_16(1911); +emit_16(1844); +emit_16(1911); +emit_16(1845); +emit_16(1912); +emit_16(1846); +emit_16(1912); +emit_16(1845); +emit_16(1912); +emit_16(1846); +emit_16(1913); +emit_16(1847); +emit_16(1913); +emit_16(1846); +emit_16(1914); +emit_16(1848); +emit_16(1915); +emit_16(1849); +emit_16(1915); +emit_16(1848); +emit_16(1915); +emit_16(1849); +emit_16(1916); +emit_16(1850); +emit_16(1916); +emit_16(1849); +emit_16(1916); +emit_16(1850); +emit_16(1917); +emit_16(1851); +emit_16(1917); +emit_16(1850); +emit_16(1917); +emit_16(1851); +emit_16(1918); +emit_16(1852); +emit_16(1918); +emit_16(1851); +emit_16(1918); +emit_16(1852); +emit_16(1919); +emit_16(1853); +emit_16(1919); +emit_16(1852); +emit_16(1919); +emit_16(1853); +emit_16(1920); +emit_16(1854); +emit_16(1920); +emit_16(1853); +emit_16(1920); +emit_16(1854); +emit_16(1921); +emit_16(1855); +emit_16(1921); +emit_16(1854); +emit_16(1921); +emit_16(1855); +emit_16(1922); +emit_16(1856); +emit_16(1922); +emit_16(1855); +emit_16(1922); +emit_16(1856); +emit_16(1923); +emit_16(1857); +emit_16(1923); +emit_16(1856); +emit_16(1923); +emit_16(1857); +emit_16(1924); +emit_16(1858); +emit_16(1924); +emit_16(1857); +emit_16(1924); +emit_16(1858); +emit_16(1925); +emit_16(1859); +emit_16(1925); +emit_16(1858); +emit_16(1925); +emit_16(1859); +emit_16(1926); +emit_16(1860); +emit_16(1926); +emit_16(1859); +emit_16(1926); +emit_16(1860); +emit_16(1927); +emit_16(1861); +emit_16(1927); +emit_16(1860); +emit_16(1927); +emit_16(1861); +emit_16(1928); +emit_16(1862); +emit_16(1928); +emit_16(1861); +emit_16(1928); +emit_16(1862); +emit_16(1929); +emit_16(1863); +emit_16(1929); +emit_16(1862); +emit_16(1929); +emit_16(1863); +emit_16(1930); +emit_16(1864); +emit_16(1930); +emit_16(1863); +emit_16(1930); +emit_16(1864); +emit_16(1931); +emit_16(1865); +emit_16(1931); +emit_16(1864); +emit_16(1931); +emit_16(1865); +emit_16(1932); +emit_16(1866); +emit_16(1932); +emit_16(1865); +emit_16(1932); +emit_16(1866); +emit_16(1933); +emit_16(1867); +emit_16(1933); +emit_16(1866); +emit_16(1933); +emit_16(1867); +emit_16(1934); +emit_16(1868); +emit_16(1934); +emit_16(1867); +emit_16(1934); +emit_16(1868); +emit_16(1935); +emit_16(1869); +emit_16(1935); +emit_16(1868); +emit_16(1935); +emit_16(1869); +emit_16(1936); +emit_16(1870); +emit_16(1936); +emit_16(1869); +emit_16(1936); +emit_16(1870); +emit_16(1937); +emit_16(1871); +emit_16(1937); +emit_16(1870); +emit_16(1937); +emit_16(1871); +emit_16(1938); +emit_16(1872); +emit_16(1938); +emit_16(1871); +emit_16(1938); +emit_16(1872); +emit_16(1939); +emit_16(1873); +emit_16(1939); +emit_16(1872); +emit_16(1939); +emit_16(1873); +emit_16(1940); +emit_16(1874); +emit_16(1940); +emit_16(1873); +emit_16(1940); +emit_16(1874); +emit_16(1941); +emit_16(1875); +emit_16(1941); +emit_16(1874); +emit_16(1941); +emit_16(1875); +emit_16(1942); +emit_16(1876); +emit_16(1942); +emit_16(1875); +emit_16(1942); +emit_16(1876); +emit_16(1943); +emit_16(1877); +emit_16(1943); +emit_16(1876); +emit_16(1943); +emit_16(1877); +emit_16(1944); +emit_16(1878); +emit_16(1944); +emit_16(1877); +emit_16(1944); +emit_16(1878); +emit_16(1945); +emit_16(1879); +emit_16(1945); +emit_16(1878); +emit_16(1945); +emit_16(1879); +emit_16(1946); +emit_16(1880); +emit_16(1946); +emit_16(1879); +emit_16(1946); +emit_16(1880); +emit_16(1947); +emit_16(1881); +emit_16(1947); +emit_16(1880); +emit_16(1947); +emit_16(1881); +emit_16(1948); +emit_16(1882); +emit_16(1948); +emit_16(1881); +emit_16(1948); +emit_16(1882); +emit_16(1949); +emit_16(1883); +emit_16(1949); +emit_16(1882); +emit_16(1949); +emit_16(1883); +emit_16(1950); +emit_16(1884); +emit_16(1950); +emit_16(1883); +emit_16(1950); +emit_16(1884); +emit_16(1951); +emit_16(1885); +emit_16(1951); +emit_16(1884); +emit_16(1951); +emit_16(1885); +emit_16(1952); +emit_16(1886); +emit_16(1952); +emit_16(1885); +emit_16(1952); +emit_16(1886); +emit_16(1953); +emit_16(1887); +emit_16(1953); +emit_16(1886); +emit_16(1953); +emit_16(1887); +emit_16(1954); +emit_16(1888); +emit_16(1954); +emit_16(1887); +emit_16(1954); +emit_16(1888); +emit_16(1955); +emit_16(1889); +emit_16(1955); +emit_16(1888); +emit_16(1955); +emit_16(1889); +emit_16(1956); +emit_16(1890); +emit_16(1956); +emit_16(1889); +emit_16(1956); +emit_16(1890); +emit_16(1957); +emit_16(1891); +emit_16(1957); +emit_16(1890); +emit_16(1957); +emit_16(1891); +emit_16(1958); +emit_16(1892); +emit_16(1958); +emit_16(1891); +emit_16(1958); +emit_16(1892); +emit_16(1959); +emit_16(1893); +emit_16(1959); +emit_16(1892); +emit_16(1959); +emit_16(1893); +emit_16(1960); +emit_16(1894); +emit_16(1960); +emit_16(1893); +emit_16(1960); +emit_16(1894); +emit_16(1961); +emit_16(1895); +emit_16(1961); +emit_16(1894); +emit_16(1961); +emit_16(1895); +emit_16(1962); +emit_16(1896); +emit_16(1962); +emit_16(1895); +emit_16(1962); +emit_16(1896); +emit_16(1963); +emit_16(1897); +emit_16(1963); +emit_16(1896); +emit_16(1963); +emit_16(1897); +emit_16(1964); +emit_16(1898); +emit_16(1964); +emit_16(1897); +emit_16(1964); +emit_16(1898); +emit_16(1965); +emit_16(1899); +emit_16(1965); +emit_16(1898); +emit_16(1965); +emit_16(1899); +emit_16(1966); +emit_16(1900); +emit_16(1966); +emit_16(1899); +emit_16(1966); +emit_16(1900); +emit_16(1967); +emit_16(1901); +emit_16(1967); +emit_16(1900); +emit_16(1967); +emit_16(1901); +emit_16(1968); +emit_16(1902); +emit_16(1968); +emit_16(1901); +emit_16(1968); +emit_16(1902); +emit_16(1969); +emit_16(1903); +emit_16(1969); +emit_16(1902); +emit_16(1969); +emit_16(1903); +emit_16(1970); +emit_16(1904); +emit_16(1970); +emit_16(1903); +emit_16(1970); +emit_16(1904); +emit_16(1971); +emit_16(1905); +emit_16(1971); +emit_16(1904); +emit_16(1971); +emit_16(1905); +emit_16(1972); +emit_16(1906); +emit_16(1972); +emit_16(1905); +emit_16(1972); +emit_16(1906); +emit_16(1973); +emit_16(1907); +emit_16(1973); +emit_16(1906); +emit_16(1973); +emit_16(1907); +emit_16(1974); +emit_16(1908); +emit_16(1974); +emit_16(1907); +emit_16(1974); +emit_16(1908); +emit_16(1975); +emit_16(1909); +emit_16(1975); +emit_16(1908); +emit_16(1975); +emit_16(1909); +emit_16(1976); +emit_16(1910); +emit_16(1976); +emit_16(1909); +emit_16(1976); +emit_16(1910); +emit_16(1977); +emit_16(1911); +emit_16(1977); +emit_16(1910); +emit_16(1977); +emit_16(1911); +emit_16(1978); +emit_16(1912); +emit_16(1978); +emit_16(1911); +emit_16(1978); +emit_16(1912); +emit_16(1979); +emit_16(1913); +emit_16(1979); +emit_16(1912); +emit_16(1980); +emit_16(1914); +emit_16(1981); +emit_16(1915); +emit_16(1981); +emit_16(1914); +emit_16(1981); +emit_16(1915); +emit_16(1982); +emit_16(1916); +emit_16(1982); +emit_16(1915); +emit_16(1982); +emit_16(1916); +emit_16(1983); +emit_16(1917); +emit_16(1983); +emit_16(1916); +emit_16(1983); +emit_16(1917); +emit_16(1984); +emit_16(1918); +emit_16(1984); +emit_16(1917); +emit_16(1984); +emit_16(1918); +emit_16(1985); +emit_16(1919); +emit_16(1985); +emit_16(1918); +emit_16(1985); +emit_16(1919); +emit_16(1986); +emit_16(1920); +emit_16(1986); +emit_16(1919); +emit_16(1986); +emit_16(1920); +emit_16(1987); +emit_16(1921); +emit_16(1987); +emit_16(1920); +emit_16(1987); +emit_16(1921); +emit_16(1988); +emit_16(1922); +emit_16(1988); +emit_16(1921); +emit_16(1988); +emit_16(1922); +emit_16(1989); +emit_16(1923); +emit_16(1989); +emit_16(1922); +emit_16(1989); +emit_16(1923); +emit_16(1990); +emit_16(1924); +emit_16(1990); +emit_16(1923); +emit_16(1990); +emit_16(1924); +emit_16(1991); +emit_16(1925); +emit_16(1991); +emit_16(1924); +emit_16(1991); +emit_16(1925); +emit_16(1992); +emit_16(1926); +emit_16(1992); +emit_16(1925); +emit_16(1992); +emit_16(1926); +emit_16(1993); +emit_16(1927); +emit_16(1993); +emit_16(1926); +emit_16(1993); +emit_16(1927); +emit_16(1994); +emit_16(1928); +emit_16(1994); +emit_16(1927); +emit_16(1994); +emit_16(1928); +emit_16(1995); +emit_16(1929); +emit_16(1995); +emit_16(1928); +emit_16(1995); +emit_16(1929); +emit_16(1996); +emit_16(1930); +emit_16(1996); +emit_16(1929); +emit_16(1996); +emit_16(1930); +emit_16(1997); +emit_16(1931); +emit_16(1997); +emit_16(1930); +emit_16(1997); +emit_16(1931); +emit_16(1998); +emit_16(1932); +emit_16(1998); +emit_16(1931); +emit_16(1998); +emit_16(1932); +emit_16(1999); +emit_16(1933); +emit_16(1999); +emit_16(1932); +emit_16(1999); +emit_16(1933); +emit_16(2000); +emit_16(1934); +emit_16(2000); +emit_16(1933); +emit_16(2000); +emit_16(1934); +emit_16(2001); +emit_16(1935); +emit_16(2001); +emit_16(1934); +emit_16(2001); +emit_16(1935); +emit_16(2002); +emit_16(1936); +emit_16(2002); +emit_16(1935); +emit_16(2002); +emit_16(1936); +emit_16(2003); +emit_16(1937); +emit_16(2003); +emit_16(1936); +emit_16(2003); +emit_16(1937); +emit_16(2004); +emit_16(1938); +emit_16(2004); +emit_16(1937); +emit_16(2004); +emit_16(1938); +emit_16(2005); +emit_16(1939); +emit_16(2005); +emit_16(1938); +emit_16(2005); +emit_16(1939); +emit_16(2006); +emit_16(1940); +emit_16(2006); +emit_16(1939); +emit_16(2006); +emit_16(1940); +emit_16(2007); +emit_16(1941); +emit_16(2007); +emit_16(1940); +emit_16(2007); +emit_16(1941); +emit_16(2008); +emit_16(1942); +emit_16(2008); +emit_16(1941); +emit_16(2008); +emit_16(1942); +emit_16(2009); +emit_16(1943); +emit_16(2009); +emit_16(1942); +emit_16(2009); +emit_16(1943); +emit_16(2010); +emit_16(1944); +emit_16(2010); +emit_16(1943); +emit_16(2010); +emit_16(1944); +emit_16(2011); +emit_16(1945); +emit_16(2011); +emit_16(1944); +emit_16(2011); +emit_16(1945); +emit_16(2012); +emit_16(1946); +emit_16(2012); +emit_16(1945); +emit_16(2012); +emit_16(1946); +emit_16(2013); +emit_16(1947); +emit_16(2013); +emit_16(1946); +emit_16(2013); +emit_16(1947); +emit_16(2014); +emit_16(1948); +emit_16(2014); +emit_16(1947); +emit_16(2014); +emit_16(1948); +emit_16(2015); +emit_16(1949); +emit_16(2015); +emit_16(1948); +emit_16(2015); +emit_16(1949); +emit_16(2016); +emit_16(1950); +emit_16(2016); +emit_16(1949); +emit_16(2016); +emit_16(1950); +emit_16(2017); +emit_16(1951); +emit_16(2017); +emit_16(1950); +emit_16(2017); +emit_16(1951); +emit_16(2018); +emit_16(1952); +emit_16(2018); +emit_16(1951); +emit_16(2018); +emit_16(1952); +emit_16(2019); +emit_16(1953); +emit_16(2019); +emit_16(1952); +emit_16(2019); +emit_16(1953); +emit_16(2020); +emit_16(1954); +emit_16(2020); +emit_16(1953); +emit_16(2020); +emit_16(1954); +emit_16(2021); +emit_16(1955); +emit_16(2021); +emit_16(1954); +emit_16(2021); +emit_16(1955); +emit_16(2022); +emit_16(1956); +emit_16(2022); +emit_16(1955); +emit_16(2022); +emit_16(1956); +emit_16(2023); +emit_16(1957); +emit_16(2023); +emit_16(1956); +emit_16(2023); +emit_16(1957); +emit_16(2024); +emit_16(1958); +emit_16(2024); +emit_16(1957); +emit_16(2024); +emit_16(1958); +emit_16(2025); +emit_16(1959); +emit_16(2025); +emit_16(1958); +emit_16(2025); +emit_16(1959); +emit_16(2026); +emit_16(1960); +emit_16(2026); +emit_16(1959); +emit_16(2026); +emit_16(1960); +emit_16(2027); +emit_16(1961); +emit_16(2027); +emit_16(1960); +emit_16(2027); +emit_16(1961); +emit_16(2028); +emit_16(1962); +emit_16(2028); +emit_16(1961); +emit_16(2028); +emit_16(1962); +emit_16(2029); +emit_16(1963); +emit_16(2029); +emit_16(1962); +emit_16(2029); +emit_16(1963); +emit_16(2030); +emit_16(1964); +emit_16(2030); +emit_16(1963); +emit_16(2030); +emit_16(1964); +emit_16(2031); +emit_16(1965); +emit_16(2031); +emit_16(1964); +emit_16(2031); +emit_16(1965); +emit_16(2032); +emit_16(1966); +emit_16(2032); +emit_16(1965); +emit_16(2032); +emit_16(1966); +emit_16(2033); +emit_16(1967); +emit_16(2033); +emit_16(1966); +emit_16(2033); +emit_16(1967); +emit_16(2034); +emit_16(1968); +emit_16(2034); +emit_16(1967); +emit_16(2034); +emit_16(1968); +emit_16(2035); +emit_16(1969); +emit_16(2035); +emit_16(1968); +emit_16(2035); +emit_16(1969); +emit_16(2036); +emit_16(1970); +emit_16(2036); +emit_16(1969); +emit_16(2036); +emit_16(1970); +emit_16(2037); +emit_16(1971); +emit_16(2037); +emit_16(1970); +emit_16(2037); +emit_16(1971); +emit_16(2038); +emit_16(1972); +emit_16(2038); +emit_16(1971); +emit_16(2038); +emit_16(1972); +emit_16(2039); +emit_16(1973); +emit_16(2039); +emit_16(1972); +emit_16(2039); +emit_16(1973); +emit_16(2040); +emit_16(1974); +emit_16(2040); +emit_16(1973); +emit_16(2040); +emit_16(1974); +emit_16(2041); +emit_16(1975); +emit_16(2041); +emit_16(1974); +emit_16(2041); +emit_16(1975); +emit_16(2042); +emit_16(1976); +emit_16(2042); +emit_16(1975); +emit_16(2042); +emit_16(1976); +emit_16(2043); +emit_16(1977); +emit_16(2043); +emit_16(1976); +emit_16(2043); +emit_16(1977); +emit_16(2044); +emit_16(1978); +emit_16(2044); +emit_16(1977); +emit_16(2044); +emit_16(1978); +emit_16(2045); +emit_16(1979); +emit_16(2045); +emit_16(1978); +emit_16(2046); +emit_16(1980); +emit_16(2047); +emit_16(1981); +emit_16(2047); +emit_16(1980); +emit_16(2047); +emit_16(1981); +emit_16(2048); +emit_16(1982); +emit_16(2048); +emit_16(1981); +emit_16(2048); +emit_16(1982); +emit_16(2049); +emit_16(1983); +emit_16(2049); +emit_16(1982); +emit_16(2049); +emit_16(1983); +emit_16(2050); +emit_16(1984); +emit_16(2050); +emit_16(1983); +emit_16(2050); +emit_16(1984); +emit_16(2051); +emit_16(1985); +emit_16(2051); +emit_16(1984); +emit_16(2051); +emit_16(1985); +emit_16(2052); +emit_16(1986); +emit_16(2052); +emit_16(1985); +emit_16(2052); +emit_16(1986); +emit_16(2053); +emit_16(1987); +emit_16(2053); +emit_16(1986); +emit_16(2053); +emit_16(1987); +emit_16(2054); +emit_16(1988); +emit_16(2054); +emit_16(1987); +emit_16(2054); +emit_16(1988); +emit_16(2055); +emit_16(1989); +emit_16(2055); +emit_16(1988); +emit_16(2055); +emit_16(1989); +emit_16(2056); +emit_16(1990); +emit_16(2056); +emit_16(1989); +emit_16(2056); +emit_16(1990); +emit_16(2057); +emit_16(1991); +emit_16(2057); +emit_16(1990); +emit_16(2057); +emit_16(1991); +emit_16(2058); +emit_16(1992); +emit_16(2058); +emit_16(1991); +emit_16(2058); +emit_16(1992); +emit_16(2059); +emit_16(1993); +emit_16(2059); +emit_16(1992); +emit_16(2059); +emit_16(1993); +emit_16(2060); +emit_16(1994); +emit_16(2060); +emit_16(1993); +emit_16(2060); +emit_16(1994); +emit_16(2061); +emit_16(1995); +emit_16(2061); +emit_16(1994); +emit_16(2061); +emit_16(1995); +emit_16(2062); +emit_16(1996); +emit_16(2062); +emit_16(1995); +emit_16(2062); +emit_16(1996); +emit_16(2063); +emit_16(1997); +emit_16(2063); +emit_16(1996); +emit_16(2063); +emit_16(1997); +emit_16(2064); +emit_16(1998); +emit_16(2064); +emit_16(1997); +emit_16(2064); +emit_16(1998); +emit_16(2065); +emit_16(1999); +emit_16(2065); +emit_16(1998); +emit_16(2065); +emit_16(1999); +emit_16(2066); +emit_16(2000); +emit_16(2066); +emit_16(1999); +emit_16(2066); +emit_16(2000); +emit_16(2067); +emit_16(2001); +emit_16(2067); +emit_16(2000); +emit_16(2067); +emit_16(2001); +emit_16(2068); +emit_16(2002); +emit_16(2068); +emit_16(2001); +emit_16(2068); +emit_16(2002); +emit_16(2069); +emit_16(2003); +emit_16(2069); +emit_16(2002); +emit_16(2069); +emit_16(2003); +emit_16(2070); +emit_16(2004); +emit_16(2070); +emit_16(2003); +emit_16(2070); +emit_16(2004); +emit_16(2071); +emit_16(2005); +emit_16(2071); +emit_16(2004); +emit_16(2071); +emit_16(2005); +emit_16(2072); +emit_16(2006); +emit_16(2072); +emit_16(2005); +emit_16(2072); +emit_16(2006); +emit_16(2073); +emit_16(2007); +emit_16(2073); +emit_16(2006); +emit_16(2073); +emit_16(2007); +emit_16(2074); +emit_16(2008); +emit_16(2074); +emit_16(2007); +emit_16(2074); +emit_16(2008); +emit_16(2075); +emit_16(2009); +emit_16(2075); +emit_16(2008); +emit_16(2075); +emit_16(2009); +emit_16(2076); +emit_16(2010); +emit_16(2076); +emit_16(2009); +emit_16(2076); +emit_16(2010); +emit_16(2077); +emit_16(2011); +emit_16(2077); +emit_16(2010); +emit_16(2077); +emit_16(2011); +emit_16(2078); +emit_16(2012); +emit_16(2078); +emit_16(2011); +emit_16(2078); +emit_16(2012); +emit_16(2079); +emit_16(2013); +emit_16(2079); +emit_16(2012); +emit_16(2079); +emit_16(2013); +emit_16(2080); +emit_16(2014); +emit_16(2080); +emit_16(2013); +emit_16(2080); +emit_16(2014); +emit_16(2081); +emit_16(2015); +emit_16(2081); +emit_16(2014); +emit_16(2081); +emit_16(2015); +emit_16(2082); +emit_16(2016); +emit_16(2082); +emit_16(2015); +emit_16(2082); +emit_16(2016); +emit_16(2083); +emit_16(2017); +emit_16(2083); +emit_16(2016); +emit_16(2083); +emit_16(2017); +emit_16(2084); +emit_16(2018); +emit_16(2084); +emit_16(2017); +emit_16(2084); +emit_16(2018); +emit_16(2085); +emit_16(2019); +emit_16(2085); +emit_16(2018); +emit_16(2085); +emit_16(2019); +emit_16(2086); +emit_16(2020); +emit_16(2086); +emit_16(2019); +emit_16(2086); +emit_16(2020); +emit_16(2087); +emit_16(2021); +emit_16(2087); +emit_16(2020); +emit_16(2087); +emit_16(2021); +emit_16(2088); +emit_16(2022); +emit_16(2088); +emit_16(2021); +emit_16(2088); +emit_16(2022); +emit_16(2089); +emit_16(2023); +emit_16(2089); +emit_16(2022); +emit_16(2089); +emit_16(2023); +emit_16(2090); +emit_16(2024); +emit_16(2090); +emit_16(2023); +emit_16(2090); +emit_16(2024); +emit_16(2091); +emit_16(2025); +emit_16(2091); +emit_16(2024); +emit_16(2091); +emit_16(2025); +emit_16(2092); +emit_16(2026); +emit_16(2092); +emit_16(2025); +emit_16(2092); +emit_16(2026); +emit_16(2093); +emit_16(2027); +emit_16(2093); +emit_16(2026); +emit_16(2093); +emit_16(2027); +emit_16(2094); +emit_16(2028); +emit_16(2094); +emit_16(2027); +emit_16(2094); +emit_16(2028); +emit_16(2095); +emit_16(2029); +emit_16(2095); +emit_16(2028); +emit_16(2095); +emit_16(2029); +emit_16(2096); +emit_16(2030); +emit_16(2096); +emit_16(2029); +emit_16(2096); +emit_16(2030); +emit_16(2097); +emit_16(2031); +emit_16(2097); +emit_16(2030); +emit_16(2097); +emit_16(2031); +emit_16(2098); +emit_16(2032); +emit_16(2098); +emit_16(2031); +emit_16(2098); +emit_16(2032); +emit_16(2099); +emit_16(2033); +emit_16(2099); +emit_16(2032); +emit_16(2099); +emit_16(2033); +emit_16(2100); +emit_16(2034); +emit_16(2100); +emit_16(2033); +emit_16(2100); +emit_16(2034); +emit_16(2101); +emit_16(2035); +emit_16(2101); +emit_16(2034); +emit_16(2101); +emit_16(2035); +emit_16(2102); +emit_16(2036); +emit_16(2102); +emit_16(2035); +emit_16(2102); +emit_16(2036); +emit_16(2103); +emit_16(2037); +emit_16(2103); +emit_16(2036); +emit_16(2103); +emit_16(2037); +emit_16(2104); +emit_16(2038); +emit_16(2104); +emit_16(2037); +emit_16(2104); +emit_16(2038); +emit_16(2105); +emit_16(2039); +emit_16(2105); +emit_16(2038); +emit_16(2105); +emit_16(2039); +emit_16(2106); +emit_16(2040); +emit_16(2106); +emit_16(2039); +emit_16(2106); +emit_16(2040); +emit_16(2107); +emit_16(2041); +emit_16(2107); +emit_16(2040); +emit_16(2107); +emit_16(2041); +emit_16(2108); +emit_16(2042); +emit_16(2108); +emit_16(2041); +emit_16(2108); +emit_16(2042); +emit_16(2109); +emit_16(2043); +emit_16(2109); +emit_16(2042); +emit_16(2109); +emit_16(2043); +emit_16(2110); +emit_16(2044); +emit_16(2110); +emit_16(2043); +emit_16(2110); +emit_16(2044); +emit_16(2111); +emit_16(2045); +emit_16(2111); +emit_16(2044); +emit_16(2112); +emit_16(2046); +emit_16(2113); +emit_16(2047); +emit_16(2113); +emit_16(2046); +emit_16(2113); +emit_16(2047); +emit_16(2114); +emit_16(2048); +emit_16(2114); +emit_16(2047); +emit_16(2114); +emit_16(2048); +emit_16(2115); +emit_16(2049); +emit_16(2115); +emit_16(2048); +emit_16(2115); +emit_16(2049); +emit_16(2116); +emit_16(2050); +emit_16(2116); +emit_16(2049); +emit_16(2116); +emit_16(2050); +emit_16(2117); +emit_16(2051); +emit_16(2117); +emit_16(2050); +emit_16(2117); +emit_16(2051); +emit_16(2118); +emit_16(2052); +emit_16(2118); +emit_16(2051); +emit_16(2118); +emit_16(2052); +emit_16(2119); +emit_16(2053); +emit_16(2119); +emit_16(2052); +emit_16(2119); +emit_16(2053); +emit_16(2120); +emit_16(2054); +emit_16(2120); +emit_16(2053); +emit_16(2120); +emit_16(2054); +emit_16(2121); +emit_16(2055); +emit_16(2121); +emit_16(2054); +emit_16(2121); +emit_16(2055); +emit_16(2122); +emit_16(2056); +emit_16(2122); +emit_16(2055); +emit_16(2122); +emit_16(2056); +emit_16(2123); +emit_16(2057); +emit_16(2123); +emit_16(2056); +emit_16(2123); +emit_16(2057); +emit_16(2124); +emit_16(2058); +emit_16(2124); +emit_16(2057); +emit_16(2124); +emit_16(2058); +emit_16(2125); +emit_16(2059); +emit_16(2125); +emit_16(2058); +emit_16(2125); +emit_16(2059); +emit_16(2126); +emit_16(2060); +emit_16(2126); +emit_16(2059); +emit_16(2126); +emit_16(2060); +emit_16(2127); +emit_16(2061); +emit_16(2127); +emit_16(2060); +emit_16(2127); +emit_16(2061); +emit_16(2128); +emit_16(2062); +emit_16(2128); +emit_16(2061); +emit_16(2128); +emit_16(2062); +emit_16(2129); +emit_16(2063); +emit_16(2129); +emit_16(2062); +emit_16(2129); +emit_16(2063); +emit_16(2130); +emit_16(2064); +emit_16(2130); +emit_16(2063); +emit_16(2130); +emit_16(2064); +emit_16(2131); +emit_16(2065); +emit_16(2131); +emit_16(2064); +emit_16(2131); +emit_16(2065); +emit_16(2132); +emit_16(2066); +emit_16(2132); +emit_16(2065); +emit_16(2132); +emit_16(2066); +emit_16(2133); +emit_16(2067); +emit_16(2133); +emit_16(2066); +emit_16(2133); +emit_16(2067); +emit_16(2134); +emit_16(2068); +emit_16(2134); +emit_16(2067); +emit_16(2134); +emit_16(2068); +emit_16(2135); +emit_16(2069); +emit_16(2135); +emit_16(2068); +emit_16(2135); +emit_16(2069); +emit_16(2136); +emit_16(2070); +emit_16(2136); +emit_16(2069); +emit_16(2136); +emit_16(2070); +emit_16(2137); +emit_16(2071); +emit_16(2137); +emit_16(2070); +emit_16(2137); +emit_16(2071); +emit_16(2138); +emit_16(2072); +emit_16(2138); +emit_16(2071); +emit_16(2138); +emit_16(2072); +emit_16(2139); +emit_16(2073); +emit_16(2139); +emit_16(2072); +emit_16(2139); +emit_16(2073); +emit_16(2140); +emit_16(2074); +emit_16(2140); +emit_16(2073); +emit_16(2140); +emit_16(2074); +emit_16(2141); +emit_16(2075); +emit_16(2141); +emit_16(2074); +emit_16(2141); +emit_16(2075); +emit_16(2142); +emit_16(2076); +emit_16(2142); +emit_16(2075); +emit_16(2142); +emit_16(2076); +emit_16(2143); +emit_16(2077); +emit_16(2143); +emit_16(2076); +emit_16(2143); +emit_16(2077); +emit_16(2144); +emit_16(2078); +emit_16(2144); +emit_16(2077); +emit_16(2144); +emit_16(2078); +emit_16(2145); +emit_16(2079); +emit_16(2145); +emit_16(2078); +emit_16(2145); +emit_16(2079); +emit_16(2146); +emit_16(2080); +emit_16(2146); +emit_16(2079); +emit_16(2146); +emit_16(2080); +emit_16(2147); +emit_16(2081); +emit_16(2147); +emit_16(2080); +emit_16(2147); +emit_16(2081); +emit_16(2148); +emit_16(2082); +emit_16(2148); +emit_16(2081); +emit_16(2148); +emit_16(2082); +emit_16(2149); +emit_16(2083); +emit_16(2149); +emit_16(2082); +emit_16(2149); +emit_16(2083); +emit_16(2150); +emit_16(2084); +emit_16(2150); +emit_16(2083); +emit_16(2150); +emit_16(2084); +emit_16(2151); +emit_16(2085); +emit_16(2151); +emit_16(2084); +emit_16(2151); +emit_16(2085); +emit_16(2152); +emit_16(2086); +emit_16(2152); +emit_16(2085); +emit_16(2152); +emit_16(2086); +emit_16(2153); +emit_16(2087); +emit_16(2153); +emit_16(2086); +emit_16(2153); +emit_16(2087); +emit_16(2154); +emit_16(2088); +emit_16(2154); +emit_16(2087); +emit_16(2154); +emit_16(2088); +emit_16(2155); +emit_16(2089); +emit_16(2155); +emit_16(2088); +emit_16(2155); +emit_16(2089); +emit_16(2156); +emit_16(2090); +emit_16(2156); +emit_16(2089); +emit_16(2156); +emit_16(2090); +emit_16(2157); +emit_16(2091); +emit_16(2157); +emit_16(2090); +emit_16(2157); +emit_16(2091); +emit_16(2158); +emit_16(2092); +emit_16(2158); +emit_16(2091); +emit_16(2158); +emit_16(2092); +emit_16(2159); +emit_16(2093); +emit_16(2159); +emit_16(2092); +emit_16(2159); +emit_16(2093); +emit_16(2160); +emit_16(2094); +emit_16(2160); +emit_16(2093); +emit_16(2160); +emit_16(2094); +emit_16(2161); +emit_16(2095); +emit_16(2161); +emit_16(2094); +emit_16(2161); +emit_16(2095); +emit_16(2162); +emit_16(2096); +emit_16(2162); +emit_16(2095); +emit_16(2162); +emit_16(2096); +emit_16(2163); +emit_16(2097); +emit_16(2163); +emit_16(2096); +emit_16(2163); +emit_16(2097); +emit_16(2164); +emit_16(2098); +emit_16(2164); +emit_16(2097); +emit_16(2164); +emit_16(2098); +emit_16(2165); +emit_16(2099); +emit_16(2165); +emit_16(2098); +emit_16(2165); +emit_16(2099); +emit_16(2166); +emit_16(2100); +emit_16(2166); +emit_16(2099); +emit_16(2166); +emit_16(2100); +emit_16(2167); +emit_16(2101); +emit_16(2167); +emit_16(2100); +emit_16(2167); +emit_16(2101); +emit_16(2168); +emit_16(2102); +emit_16(2168); +emit_16(2101); +emit_16(2168); +emit_16(2102); +emit_16(2169); +emit_16(2103); +emit_16(2169); +emit_16(2102); +emit_16(2169); +emit_16(2103); +emit_16(2170); +emit_16(2104); +emit_16(2170); +emit_16(2103); +emit_16(2170); +emit_16(2104); +emit_16(2171); +emit_16(2105); +emit_16(2171); +emit_16(2104); +emit_16(2171); +emit_16(2105); +emit_16(2172); +emit_16(2106); +emit_16(2172); +emit_16(2105); +emit_16(2172); +emit_16(2106); +emit_16(2173); +emit_16(2107); +emit_16(2173); +emit_16(2106); +emit_16(2173); +emit_16(2107); +emit_16(2174); +emit_16(2108); +emit_16(2174); +emit_16(2107); +emit_16(2174); +emit_16(2108); +emit_16(2175); +emit_16(2109); +emit_16(2175); +emit_16(2108); +emit_16(2175); +emit_16(2109); +emit_16(2176); +emit_16(2110); +emit_16(2176); +emit_16(2109); +emit_16(2176); +emit_16(2110); +emit_16(2177); +emit_16(2111); +emit_16(2177); +emit_16(2110); +emit_16(2178); +emit_16(2112); +emit_16(2179); +emit_16(2113); +emit_16(2179); +emit_16(2112); +emit_16(2179); +emit_16(2113); +emit_16(2180); +emit_16(2114); +emit_16(2180); +emit_16(2113); +emit_16(2180); +emit_16(2114); +emit_16(2181); +emit_16(2115); +emit_16(2181); +emit_16(2114); +emit_16(2181); +emit_16(2115); +emit_16(2182); +emit_16(2116); +emit_16(2182); +emit_16(2115); +emit_16(2182); +emit_16(2116); +emit_16(2183); +emit_16(2117); +emit_16(2183); +emit_16(2116); +emit_16(2183); +emit_16(2117); +emit_16(2184); +emit_16(2118); +emit_16(2184); +emit_16(2117); +emit_16(2184); +emit_16(2118); +emit_16(2185); +emit_16(2119); +emit_16(2185); +emit_16(2118); +emit_16(2185); +emit_16(2119); +emit_16(2186); +emit_16(2120); +emit_16(2186); +emit_16(2119); +emit_16(2186); +emit_16(2120); +emit_16(2187); +emit_16(2121); +emit_16(2187); +emit_16(2120); +emit_16(2187); +emit_16(2121); +emit_16(2188); +emit_16(2122); +emit_16(2188); +emit_16(2121); +emit_16(2188); +emit_16(2122); +emit_16(2189); +emit_16(2123); +emit_16(2189); +emit_16(2122); +emit_16(2189); +emit_16(2123); +emit_16(2190); +emit_16(2124); +emit_16(2190); +emit_16(2123); +emit_16(2190); +emit_16(2124); +emit_16(2191); +emit_16(2125); +emit_16(2191); +emit_16(2124); +emit_16(2191); +emit_16(2125); +emit_16(2192); +emit_16(2126); +emit_16(2192); +emit_16(2125); +emit_16(2192); +emit_16(2126); +emit_16(2193); +emit_16(2127); +emit_16(2193); +emit_16(2126); +emit_16(2193); +emit_16(2127); +emit_16(2194); +emit_16(2128); +emit_16(2194); +emit_16(2127); +emit_16(2194); +emit_16(2128); +emit_16(2195); +emit_16(2129); +emit_16(2195); +emit_16(2128); +emit_16(2195); +emit_16(2129); +emit_16(2196); +emit_16(2130); +emit_16(2196); +emit_16(2129); +emit_16(2196); +emit_16(2130); +emit_16(2197); +emit_16(2131); +emit_16(2197); +emit_16(2130); +emit_16(2197); +emit_16(2131); +emit_16(2198); +emit_16(2132); +emit_16(2198); +emit_16(2131); +emit_16(2198); +emit_16(2132); +emit_16(2199); +emit_16(2133); +emit_16(2199); +emit_16(2132); +emit_16(2199); +emit_16(2133); +emit_16(2200); +emit_16(2134); +emit_16(2200); +emit_16(2133); +emit_16(2200); +emit_16(2134); +emit_16(2201); +emit_16(2135); +emit_16(2201); +emit_16(2134); +emit_16(2201); +emit_16(2135); +emit_16(2202); +emit_16(2136); +emit_16(2202); +emit_16(2135); +emit_16(2202); +emit_16(2136); +emit_16(2203); +emit_16(2137); +emit_16(2203); +emit_16(2136); +emit_16(2203); +emit_16(2137); +emit_16(2204); +emit_16(2138); +emit_16(2204); +emit_16(2137); +emit_16(2204); +emit_16(2138); +emit_16(2205); +emit_16(2139); +emit_16(2205); +emit_16(2138); +emit_16(2205); +emit_16(2139); +emit_16(2206); +emit_16(2140); +emit_16(2206); +emit_16(2139); +emit_16(2206); +emit_16(2140); +emit_16(2207); +emit_16(2141); +emit_16(2207); +emit_16(2140); +emit_16(2207); +emit_16(2141); +emit_16(2208); +emit_16(2142); +emit_16(2208); +emit_16(2141); +emit_16(2208); +emit_16(2142); +emit_16(2209); +emit_16(2143); +emit_16(2209); +emit_16(2142); +emit_16(2209); +emit_16(2143); +emit_16(2210); +emit_16(2144); +emit_16(2210); +emit_16(2143); +emit_16(2210); +emit_16(2144); +emit_16(2211); +emit_16(2145); +emit_16(2211); +emit_16(2144); +emit_16(2211); +emit_16(2145); +emit_16(2212); +emit_16(2146); +emit_16(2212); +emit_16(2145); +emit_16(2212); +emit_16(2146); +emit_16(2213); +emit_16(2147); +emit_16(2213); +emit_16(2146); +emit_16(2213); +emit_16(2147); +emit_16(2214); +emit_16(2148); +emit_16(2214); +emit_16(2147); +emit_16(2214); +emit_16(2148); +emit_16(2215); +emit_16(2149); +emit_16(2215); +emit_16(2148); +emit_16(2215); +emit_16(2149); +emit_16(2216); +emit_16(2150); +emit_16(2216); +emit_16(2149); +emit_16(2216); +emit_16(2150); +emit_16(2217); +emit_16(2151); +emit_16(2217); +emit_16(2150); +emit_16(2217); +emit_16(2151); +emit_16(2218); +emit_16(2152); +emit_16(2218); +emit_16(2151); +emit_16(2218); +emit_16(2152); +emit_16(2219); +emit_16(2153); +emit_16(2219); +emit_16(2152); +emit_16(2219); +emit_16(2153); +emit_16(2220); +emit_16(2154); +emit_16(2220); +emit_16(2153); +emit_16(2220); +emit_16(2154); +emit_16(2221); +emit_16(2155); +emit_16(2221); +emit_16(2154); +emit_16(2221); +emit_16(2155); +emit_16(2222); +emit_16(2156); +emit_16(2222); +emit_16(2155); +emit_16(2222); +emit_16(2156); +emit_16(2223); +emit_16(2157); +emit_16(2223); +emit_16(2156); +emit_16(2223); +emit_16(2157); +emit_16(2224); +emit_16(2158); +emit_16(2224); +emit_16(2157); +emit_16(2224); +emit_16(2158); +emit_16(2225); +emit_16(2159); +emit_16(2225); +emit_16(2158); +emit_16(2225); +emit_16(2159); +emit_16(2226); +emit_16(2160); +emit_16(2226); +emit_16(2159); +emit_16(2226); +emit_16(2160); +emit_16(2227); +emit_16(2161); +emit_16(2227); +emit_16(2160); +emit_16(2227); +emit_16(2161); +emit_16(2228); +emit_16(2162); +emit_16(2228); +emit_16(2161); +emit_16(2228); +emit_16(2162); +emit_16(2229); +emit_16(2163); +emit_16(2229); +emit_16(2162); +emit_16(2229); +emit_16(2163); +emit_16(2230); +emit_16(2164); +emit_16(2230); +emit_16(2163); +emit_16(2230); +emit_16(2164); +emit_16(2231); +emit_16(2165); +emit_16(2231); +emit_16(2164); +emit_16(2231); +emit_16(2165); +emit_16(2232); +emit_16(2166); +emit_16(2232); +emit_16(2165); +emit_16(2232); +emit_16(2166); +emit_16(2233); +emit_16(2167); +emit_16(2233); +emit_16(2166); +emit_16(2233); +emit_16(2167); +emit_16(2234); +emit_16(2168); +emit_16(2234); +emit_16(2167); +emit_16(2234); +emit_16(2168); +emit_16(2235); +emit_16(2169); +emit_16(2235); +emit_16(2168); +emit_16(2235); +emit_16(2169); +emit_16(2236); +emit_16(2170); +emit_16(2236); +emit_16(2169); +emit_16(2236); +emit_16(2170); +emit_16(2237); +emit_16(2171); +emit_16(2237); +emit_16(2170); +emit_16(2237); +emit_16(2171); +emit_16(2238); +emit_16(2172); +emit_16(2238); +emit_16(2171); +emit_16(2238); +emit_16(2172); +emit_16(2239); +emit_16(2173); +emit_16(2239); +emit_16(2172); +emit_16(2239); +emit_16(2173); +emit_16(2240); +emit_16(2174); +emit_16(2240); +emit_16(2173); +emit_16(2240); +emit_16(2174); +emit_16(2241); +emit_16(2175); +emit_16(2241); +emit_16(2174); +emit_16(2241); +emit_16(2175); +emit_16(2242); +emit_16(2176); +emit_16(2242); +emit_16(2175); +emit_16(2242); +emit_16(2176); +emit_16(2243); +emit_16(2177); +emit_16(2243); +emit_16(2176); +emit_16(2244); +emit_16(2178); +emit_16(2245); +emit_16(2179); +emit_16(2245); +emit_16(2178); +emit_16(2245); +emit_16(2179); +emit_16(2246); +emit_16(2180); +emit_16(2246); +emit_16(2179); +emit_16(2246); +emit_16(2180); +emit_16(2247); +emit_16(2181); +emit_16(2247); +emit_16(2180); +emit_16(2247); +emit_16(2181); +emit_16(2248); +emit_16(2182); +emit_16(2248); +emit_16(2181); +emit_16(2248); +emit_16(2182); +emit_16(2249); +emit_16(2183); +emit_16(2249); +emit_16(2182); +emit_16(2249); +emit_16(2183); +emit_16(2250); +emit_16(2184); +emit_16(2250); +emit_16(2183); +emit_16(2250); +emit_16(2184); +emit_16(2251); +emit_16(2185); +emit_16(2251); +emit_16(2184); +emit_16(2251); +emit_16(2185); +emit_16(2252); +emit_16(2186); +emit_16(2252); +emit_16(2185); +emit_16(2252); +emit_16(2186); +emit_16(2253); +emit_16(2187); +emit_16(2253); +emit_16(2186); +emit_16(2253); +emit_16(2187); +emit_16(2254); +emit_16(2188); +emit_16(2254); +emit_16(2187); +emit_16(2254); +emit_16(2188); +emit_16(2255); +emit_16(2189); +emit_16(2255); +emit_16(2188); +emit_16(2255); +emit_16(2189); +emit_16(2256); +emit_16(2190); +emit_16(2256); +emit_16(2189); +emit_16(2256); +emit_16(2190); +emit_16(2257); +emit_16(2191); +emit_16(2257); +emit_16(2190); +emit_16(2257); +emit_16(2191); +emit_16(2258); +emit_16(2192); +emit_16(2258); +emit_16(2191); +emit_16(2258); +emit_16(2192); +emit_16(2259); +emit_16(2193); +emit_16(2259); +emit_16(2192); +emit_16(2259); +emit_16(2193); +emit_16(2260); +emit_16(2194); +emit_16(2260); +emit_16(2193); +emit_16(2260); +emit_16(2194); +emit_16(2261); +emit_16(2195); +emit_16(2261); +emit_16(2194); +emit_16(2261); +emit_16(2195); +emit_16(2262); +emit_16(2196); +emit_16(2262); +emit_16(2195); +emit_16(2262); +emit_16(2196); +emit_16(2263); +emit_16(2197); +emit_16(2263); +emit_16(2196); +emit_16(2263); +emit_16(2197); +emit_16(2264); +emit_16(2198); +emit_16(2264); +emit_16(2197); +emit_16(2264); +emit_16(2198); +emit_16(2265); +emit_16(2199); +emit_16(2265); +emit_16(2198); +emit_16(2265); +emit_16(2199); +emit_16(2266); +emit_16(2200); +emit_16(2266); +emit_16(2199); +emit_16(2266); +emit_16(2200); +emit_16(2267); +emit_16(2201); +emit_16(2267); +emit_16(2200); +emit_16(2267); +emit_16(2201); +emit_16(2268); +emit_16(2202); +emit_16(2268); +emit_16(2201); +emit_16(2268); +emit_16(2202); +emit_16(2269); +emit_16(2203); +emit_16(2269); +emit_16(2202); +emit_16(2269); +emit_16(2203); +emit_16(2270); +emit_16(2204); +emit_16(2270); +emit_16(2203); +emit_16(2270); +emit_16(2204); +emit_16(2271); +emit_16(2205); +emit_16(2271); +emit_16(2204); +emit_16(2271); +emit_16(2205); +emit_16(2272); +emit_16(2206); +emit_16(2272); +emit_16(2205); +emit_16(2272); +emit_16(2206); +emit_16(2273); +emit_16(2207); +emit_16(2273); +emit_16(2206); +emit_16(2273); +emit_16(2207); +emit_16(2274); +emit_16(2208); +emit_16(2274); +emit_16(2207); +emit_16(2274); +emit_16(2208); +emit_16(2275); +emit_16(2209); +emit_16(2275); +emit_16(2208); +emit_16(2275); +emit_16(2209); +emit_16(2276); +emit_16(2210); +emit_16(2276); +emit_16(2209); +emit_16(2276); +emit_16(2210); +emit_16(2277); +emit_16(2211); +emit_16(2277); +emit_16(2210); +emit_16(2277); +emit_16(2211); +emit_16(2278); +emit_16(2212); +emit_16(2278); +emit_16(2211); +emit_16(2278); +emit_16(2212); +emit_16(2279); +emit_16(2213); +emit_16(2279); +emit_16(2212); +emit_16(2279); +emit_16(2213); +emit_16(2280); +emit_16(2214); +emit_16(2280); +emit_16(2213); +emit_16(2280); +emit_16(2214); +emit_16(2281); +emit_16(2215); +emit_16(2281); +emit_16(2214); +emit_16(2281); +emit_16(2215); +emit_16(2282); +emit_16(2216); +emit_16(2282); +emit_16(2215); +emit_16(2282); +emit_16(2216); +emit_16(2283); +emit_16(2217); +emit_16(2283); +emit_16(2216); +emit_16(2283); +emit_16(2217); +emit_16(2284); +emit_16(2218); +emit_16(2284); +emit_16(2217); +emit_16(2284); +emit_16(2218); +emit_16(2285); +emit_16(2219); +emit_16(2285); +emit_16(2218); +emit_16(2285); +emit_16(2219); +emit_16(2286); +emit_16(2220); +emit_16(2286); +emit_16(2219); +emit_16(2286); +emit_16(2220); +emit_16(2287); +emit_16(2221); +emit_16(2287); +emit_16(2220); +emit_16(2287); +emit_16(2221); +emit_16(2288); +emit_16(2222); +emit_16(2288); +emit_16(2221); +emit_16(2288); +emit_16(2222); +emit_16(2289); +emit_16(2223); +emit_16(2289); +emit_16(2222); +emit_16(2289); +emit_16(2223); +emit_16(2290); +emit_16(2224); +emit_16(2290); +emit_16(2223); +emit_16(2290); +emit_16(2224); +emit_16(2291); +emit_16(2225); +emit_16(2291); +emit_16(2224); +emit_16(2291); +emit_16(2225); +emit_16(2292); +emit_16(2226); +emit_16(2292); +emit_16(2225); +emit_16(2292); +emit_16(2226); +emit_16(2293); +emit_16(2227); +emit_16(2293); +emit_16(2226); +emit_16(2293); +emit_16(2227); +emit_16(2294); +emit_16(2228); +emit_16(2294); +emit_16(2227); +emit_16(2294); +emit_16(2228); +emit_16(2295); +emit_16(2229); +emit_16(2295); +emit_16(2228); +emit_16(2295); +emit_16(2229); +emit_16(2296); +emit_16(2230); +emit_16(2296); +emit_16(2229); +emit_16(2296); +emit_16(2230); +emit_16(2297); +emit_16(2231); +emit_16(2297); +emit_16(2230); +emit_16(2297); +emit_16(2231); +emit_16(2298); +emit_16(2232); +emit_16(2298); +emit_16(2231); +emit_16(2298); +emit_16(2232); +emit_16(2299); +emit_16(2233); +emit_16(2299); +emit_16(2232); +emit_16(2299); +emit_16(2233); +emit_16(2300); +emit_16(2234); +emit_16(2300); +emit_16(2233); +emit_16(2300); +emit_16(2234); +emit_16(2301); +emit_16(2235); +emit_16(2301); +emit_16(2234); +emit_16(2301); +emit_16(2235); +emit_16(2302); +emit_16(2236); +emit_16(2302); +emit_16(2235); +emit_16(2302); +emit_16(2236); +emit_16(2303); +emit_16(2237); +emit_16(2303); +emit_16(2236); +emit_16(2303); +emit_16(2237); +emit_16(2304); +emit_16(2238); +emit_16(2304); +emit_16(2237); +emit_16(2304); +emit_16(2238); +emit_16(2305); +emit_16(2239); +emit_16(2305); +emit_16(2238); +emit_16(2305); +emit_16(2239); +emit_16(2306); +emit_16(2240); +emit_16(2306); +emit_16(2239); +emit_16(2306); +emit_16(2240); +emit_16(2307); +emit_16(2241); +emit_16(2307); +emit_16(2240); +emit_16(2307); +emit_16(2241); +emit_16(2308); +emit_16(2242); +emit_16(2308); +emit_16(2241); +emit_16(2308); +emit_16(2242); +emit_16(2309); +emit_16(2243); +emit_16(2309); +emit_16(2242); +emit_start(Landscape07Idx) +emit_16(0); +emit_16(1); +emit_16(2); +emit_16(3); +emit_16(2); +emit_16(1); +emit_16(2); +emit_16(3); +emit_16(4); +emit_16(5); +emit_16(4); +emit_16(3); +emit_16(4); +emit_16(5); +emit_16(6); +emit_16(7); +emit_16(6); +emit_16(5); +emit_16(6); +emit_16(7); +emit_16(8); +emit_16(9); +emit_16(8); +emit_16(7); +emit_16(8); +emit_16(9); +emit_16(10); +emit_16(11); +emit_16(10); +emit_16(9); +emit_16(10); +emit_16(11); +emit_16(12); +emit_16(13); +emit_16(12); +emit_16(11); +emit_16(12); +emit_16(13); +emit_16(14); +emit_16(15); +emit_16(14); +emit_16(13); +emit_16(14); +emit_16(15); +emit_16(16); +emit_16(17); +emit_16(16); +emit_16(15); +emit_16(16); +emit_16(17); +emit_16(18); +emit_16(19); +emit_16(18); +emit_16(17); +emit_16(18); +emit_16(19); +emit_16(20); +emit_16(21); +emit_16(20); +emit_16(19); +emit_16(20); +emit_16(21); +emit_16(22); +emit_16(23); +emit_16(22); +emit_16(21); +emit_16(22); +emit_16(23); +emit_16(24); +emit_16(25); +emit_16(24); +emit_16(23); +emit_16(24); +emit_16(25); +emit_16(26); +emit_16(27); +emit_16(26); +emit_16(25); +emit_16(26); +emit_16(27); +emit_16(28); +emit_16(29); +emit_16(28); +emit_16(27); +emit_16(28); +emit_16(29); +emit_16(30); +emit_16(31); +emit_16(30); +emit_16(29); +emit_16(30); +emit_16(31); +emit_16(32); +emit_16(33); +emit_16(32); +emit_16(31); +emit_16(32); +emit_16(33); +emit_16(34); +emit_16(35); +emit_16(34); +emit_16(33); +emit_16(34); +emit_16(35); +emit_16(36); +emit_16(37); +emit_16(36); +emit_16(35); +emit_16(36); +emit_16(37); +emit_16(38); +emit_16(39); +emit_16(38); +emit_16(37); +emit_16(38); +emit_16(39); +emit_16(40); +emit_16(41); +emit_16(40); +emit_16(39); +emit_16(40); +emit_16(41); +emit_16(42); +emit_16(43); +emit_16(42); +emit_16(41); +emit_16(42); +emit_16(43); +emit_16(44); +emit_16(45); +emit_16(44); +emit_16(43); +emit_16(44); +emit_16(45); +emit_16(46); +emit_16(47); +emit_16(46); +emit_16(45); +emit_16(46); +emit_16(47); +emit_16(48); +emit_16(49); +emit_16(48); +emit_16(47); +emit_16(48); +emit_16(49); +emit_16(50); +emit_16(51); +emit_16(50); +emit_16(49); +emit_16(50); +emit_16(51); +emit_16(52); +emit_16(53); +emit_16(52); +emit_16(51); +emit_16(52); +emit_16(53); +emit_16(54); +emit_16(55); +emit_16(54); +emit_16(53); +emit_16(54); +emit_16(55); +emit_16(56); +emit_16(57); +emit_16(56); +emit_16(55); +emit_16(56); +emit_16(57); +emit_16(58); +emit_16(59); +emit_16(58); +emit_16(57); +emit_16(58); +emit_16(59); +emit_16(60); +emit_16(61); +emit_16(60); +emit_16(59); +emit_16(60); +emit_16(61); +emit_16(62); +emit_16(63); +emit_16(62); +emit_16(61); +emit_16(62); +emit_16(63); +emit_16(64); +emit_16(65); +emit_16(64); +emit_16(63); +emit_16(64); +emit_16(65); +emit_16(66); +emit_16(67); +emit_16(66); +emit_16(65); +emit_16(66); +emit_16(67); +emit_16(68); +emit_16(69); +emit_16(68); +emit_16(67); +emit_16(68); +emit_16(69); +emit_16(70); +emit_16(71); +emit_16(70); +emit_16(69); +emit_16(70); +emit_16(71); +emit_16(72); +emit_16(73); +emit_16(72); +emit_16(71); +emit_16(72); +emit_16(73); +emit_16(74); +emit_16(75); +emit_16(74); +emit_16(73); +emit_16(74); +emit_16(75); +emit_16(76); +emit_16(77); +emit_16(76); +emit_16(75); +emit_16(76); +emit_16(77); +emit_16(78); +emit_16(79); +emit_16(78); +emit_16(77); +emit_16(78); +emit_16(79); +emit_16(80); +emit_16(81); +emit_16(80); +emit_16(79); +emit_16(80); +emit_16(81); +emit_16(82); +emit_16(83); +emit_16(82); +emit_16(81); +emit_16(82); +emit_16(83); +emit_16(84); +emit_16(85); +emit_16(84); +emit_16(83); +emit_16(84); +emit_16(85); +emit_16(86); +emit_16(87); +emit_16(86); +emit_16(85); +emit_16(86); +emit_16(87); +emit_16(88); +emit_16(89); +emit_16(88); +emit_16(87); +emit_16(88); +emit_16(89); +emit_16(90); +emit_16(91); +emit_16(90); +emit_16(89); +emit_16(90); +emit_16(91); +emit_16(92); +emit_16(93); +emit_16(92); +emit_16(91); +emit_16(92); +emit_16(93); +emit_16(94); +emit_16(95); +emit_16(94); +emit_16(93); +emit_16(94); +emit_16(95); +emit_16(96); +emit_16(97); +emit_16(96); +emit_16(95); +emit_16(96); +emit_16(97); +emit_16(98); +emit_16(99); +emit_16(98); +emit_16(97); +emit_16(98); +emit_16(99); +emit_16(100); +emit_16(101); +emit_16(100); +emit_16(99); +emit_16(100); +emit_16(101); +emit_16(102); +emit_16(103); +emit_16(102); +emit_16(101); +emit_16(102); +emit_16(103); +emit_16(104); +emit_16(105); +emit_16(104); +emit_16(103); +emit_16(104); +emit_16(105); +emit_16(106); +emit_16(107); +emit_16(106); +emit_16(105); +emit_16(106); +emit_16(107); +emit_16(108); +emit_16(109); +emit_16(108); +emit_16(107); +emit_16(108); +emit_16(109); +emit_16(110); +emit_16(111); +emit_16(110); +emit_16(109); +emit_16(110); +emit_16(111); +emit_16(112); +emit_16(113); +emit_16(112); +emit_16(111); +emit_16(112); +emit_16(113); +emit_16(114); +emit_16(115); +emit_16(114); +emit_16(113); +emit_16(114); +emit_16(115); +emit_16(116); +emit_16(117); +emit_16(116); +emit_16(115); +emit_16(116); +emit_16(117); +emit_16(118); +emit_16(119); +emit_16(118); +emit_16(117); +emit_16(118); +emit_16(119); +emit_16(120); +emit_16(121); +emit_16(120); +emit_16(119); +emit_16(120); +emit_16(121); +emit_16(122); +emit_16(123); +emit_16(122); +emit_16(121); +emit_16(122); +emit_16(123); +emit_16(124); +emit_16(125); +emit_16(124); +emit_16(123); +emit_16(124); +emit_16(125); +emit_16(126); +emit_16(127); +emit_16(126); +emit_16(125); +emit_16(128); +emit_16(0); +emit_16(129); +emit_16(2); +emit_16(129); +emit_16(0); +emit_16(129); +emit_16(2); +emit_16(130); +emit_16(4); +emit_16(130); +emit_16(2); +emit_16(130); +emit_16(4); +emit_16(131); +emit_16(6); +emit_16(131); +emit_16(4); +emit_16(131); +emit_16(6); +emit_16(132); +emit_16(8); +emit_16(132); +emit_16(6); +emit_16(132); +emit_16(8); +emit_16(133); +emit_16(10); +emit_16(133); +emit_16(8); +emit_16(133); +emit_16(10); +emit_16(134); +emit_16(12); +emit_16(134); +emit_16(10); +emit_16(134); +emit_16(12); +emit_16(135); +emit_16(14); +emit_16(135); +emit_16(12); +emit_16(135); +emit_16(14); +emit_16(136); +emit_16(16); +emit_16(136); +emit_16(14); +emit_16(136); +emit_16(16); +emit_16(137); +emit_16(18); +emit_16(137); +emit_16(16); +emit_16(137); +emit_16(18); +emit_16(138); +emit_16(20); +emit_16(138); +emit_16(18); +emit_16(138); +emit_16(20); +emit_16(139); +emit_16(22); +emit_16(139); +emit_16(20); +emit_16(139); +emit_16(22); +emit_16(140); +emit_16(24); +emit_16(140); +emit_16(22); +emit_16(140); +emit_16(24); +emit_16(141); +emit_16(26); +emit_16(141); +emit_16(24); +emit_16(141); +emit_16(26); +emit_16(142); +emit_16(28); +emit_16(142); +emit_16(26); +emit_16(142); +emit_16(28); +emit_16(143); +emit_16(30); +emit_16(143); +emit_16(28); +emit_16(143); +emit_16(30); +emit_16(144); +emit_16(32); +emit_16(144); +emit_16(30); +emit_16(144); +emit_16(32); +emit_16(145); +emit_16(34); +emit_16(145); +emit_16(32); +emit_16(145); +emit_16(34); +emit_16(146); +emit_16(36); +emit_16(146); +emit_16(34); +emit_16(146); +emit_16(36); +emit_16(147); +emit_16(38); +emit_16(147); +emit_16(36); +emit_16(147); +emit_16(38); +emit_16(148); +emit_16(40); +emit_16(148); +emit_16(38); +emit_16(148); +emit_16(40); +emit_16(149); +emit_16(42); +emit_16(149); +emit_16(40); +emit_16(149); +emit_16(42); +emit_16(150); +emit_16(44); +emit_16(150); +emit_16(42); +emit_16(150); +emit_16(44); +emit_16(151); +emit_16(46); +emit_16(151); +emit_16(44); +emit_16(151); +emit_16(46); +emit_16(152); +emit_16(48); +emit_16(152); +emit_16(46); +emit_16(152); +emit_16(48); +emit_16(153); +emit_16(50); +emit_16(153); +emit_16(48); +emit_16(153); +emit_16(50); +emit_16(154); +emit_16(52); +emit_16(154); +emit_16(50); +emit_16(154); +emit_16(52); +emit_16(155); +emit_16(54); +emit_16(155); +emit_16(52); +emit_16(155); +emit_16(54); +emit_16(156); +emit_16(56); +emit_16(156); +emit_16(54); +emit_16(156); +emit_16(56); +emit_16(157); +emit_16(58); +emit_16(157); +emit_16(56); +emit_16(157); +emit_16(58); +emit_16(158); +emit_16(60); +emit_16(158); +emit_16(58); +emit_16(158); +emit_16(60); +emit_16(159); +emit_16(62); +emit_16(159); +emit_16(60); +emit_16(159); +emit_16(62); +emit_16(160); +emit_16(64); +emit_16(160); +emit_16(62); +emit_16(160); +emit_16(64); +emit_16(161); +emit_16(66); +emit_16(161); +emit_16(64); +emit_16(161); +emit_16(66); +emit_16(162); +emit_16(68); +emit_16(162); +emit_16(66); +emit_16(162); +emit_16(68); +emit_16(163); +emit_16(70); +emit_16(163); +emit_16(68); +emit_16(163); +emit_16(70); +emit_16(164); +emit_16(72); +emit_16(164); +emit_16(70); +emit_16(164); +emit_16(72); +emit_16(165); +emit_16(74); +emit_16(165); +emit_16(72); +emit_16(165); +emit_16(74); +emit_16(166); +emit_16(76); +emit_16(166); +emit_16(74); +emit_16(166); +emit_16(76); +emit_16(167); +emit_16(78); +emit_16(167); +emit_16(76); +emit_16(167); +emit_16(78); +emit_16(168); +emit_16(80); +emit_16(168); +emit_16(78); +emit_16(168); +emit_16(80); +emit_16(169); +emit_16(82); +emit_16(169); +emit_16(80); +emit_16(169); +emit_16(82); +emit_16(170); +emit_16(84); +emit_16(170); +emit_16(82); +emit_16(170); +emit_16(84); +emit_16(171); +emit_16(86); +emit_16(171); +emit_16(84); +emit_16(171); +emit_16(86); +emit_16(172); +emit_16(88); +emit_16(172); +emit_16(86); +emit_16(172); +emit_16(88); +emit_16(173); +emit_16(90); +emit_16(173); +emit_16(88); +emit_16(173); +emit_16(90); +emit_16(174); +emit_16(92); +emit_16(174); +emit_16(90); +emit_16(174); +emit_16(92); +emit_16(175); +emit_16(94); +emit_16(175); +emit_16(92); +emit_16(175); +emit_16(94); +emit_16(176); +emit_16(96); +emit_16(176); +emit_16(94); +emit_16(176); +emit_16(96); +emit_16(177); +emit_16(98); +emit_16(177); +emit_16(96); +emit_16(177); +emit_16(98); +emit_16(178); +emit_16(100); +emit_16(178); +emit_16(98); +emit_16(178); +emit_16(100); +emit_16(179); +emit_16(102); +emit_16(179); +emit_16(100); +emit_16(179); +emit_16(102); +emit_16(180); +emit_16(104); +emit_16(180); +emit_16(102); +emit_16(180); +emit_16(104); +emit_16(181); +emit_16(106); +emit_16(181); +emit_16(104); +emit_16(181); +emit_16(106); +emit_16(182); +emit_16(108); +emit_16(182); +emit_16(106); +emit_16(182); +emit_16(108); +emit_16(183); +emit_16(110); +emit_16(183); +emit_16(108); +emit_16(183); +emit_16(110); +emit_16(184); +emit_16(112); +emit_16(184); +emit_16(110); +emit_16(184); +emit_16(112); +emit_16(185); +emit_16(114); +emit_16(185); +emit_16(112); +emit_16(185); +emit_16(114); +emit_16(186); +emit_16(116); +emit_16(186); +emit_16(114); +emit_16(186); +emit_16(116); +emit_16(187); +emit_16(118); +emit_16(187); +emit_16(116); +emit_16(187); +emit_16(118); +emit_16(188); +emit_16(120); +emit_16(188); +emit_16(118); +emit_16(188); +emit_16(120); +emit_16(189); +emit_16(122); +emit_16(189); +emit_16(120); +emit_16(189); +emit_16(122); +emit_16(190); +emit_16(124); +emit_16(190); +emit_16(122); +emit_16(190); +emit_16(124); +emit_16(191); +emit_16(126); +emit_16(191); +emit_16(124); +emit_16(192); +emit_16(128); +emit_16(193); +emit_16(129); +emit_16(193); +emit_16(128); +emit_16(193); +emit_16(129); +emit_16(194); +emit_16(130); +emit_16(194); +emit_16(129); +emit_16(194); +emit_16(130); +emit_16(195); +emit_16(131); +emit_16(195); +emit_16(130); +emit_16(195); +emit_16(131); +emit_16(196); +emit_16(132); +emit_16(196); +emit_16(131); +emit_16(196); +emit_16(132); +emit_16(197); +emit_16(133); +emit_16(197); +emit_16(132); +emit_16(197); +emit_16(133); +emit_16(198); +emit_16(134); +emit_16(198); +emit_16(133); +emit_16(198); +emit_16(134); +emit_16(199); +emit_16(135); +emit_16(199); +emit_16(134); +emit_16(199); +emit_16(135); +emit_16(200); +emit_16(136); +emit_16(200); +emit_16(135); +emit_16(200); +emit_16(136); +emit_16(201); +emit_16(137); +emit_16(201); +emit_16(136); +emit_16(201); +emit_16(137); +emit_16(202); +emit_16(138); +emit_16(202); +emit_16(137); +emit_16(202); +emit_16(138); +emit_16(203); +emit_16(139); +emit_16(203); +emit_16(138); +emit_16(203); +emit_16(139); +emit_16(204); +emit_16(140); +emit_16(204); +emit_16(139); +emit_16(204); +emit_16(140); +emit_16(205); +emit_16(141); +emit_16(205); +emit_16(140); +emit_16(205); +emit_16(141); +emit_16(206); +emit_16(142); +emit_16(206); +emit_16(141); +emit_16(206); +emit_16(142); +emit_16(207); +emit_16(143); +emit_16(207); +emit_16(142); +emit_16(207); +emit_16(143); +emit_16(208); +emit_16(144); +emit_16(208); +emit_16(143); +emit_16(208); +emit_16(144); +emit_16(209); +emit_16(145); +emit_16(209); +emit_16(144); +emit_16(209); +emit_16(145); +emit_16(210); +emit_16(146); +emit_16(210); +emit_16(145); +emit_16(210); +emit_16(146); +emit_16(211); +emit_16(147); +emit_16(211); +emit_16(146); +emit_16(211); +emit_16(147); +emit_16(212); +emit_16(148); +emit_16(212); +emit_16(147); +emit_16(212); +emit_16(148); +emit_16(213); +emit_16(149); +emit_16(213); +emit_16(148); +emit_16(213); +emit_16(149); +emit_16(214); +emit_16(150); +emit_16(214); +emit_16(149); +emit_16(214); +emit_16(150); +emit_16(215); +emit_16(151); +emit_16(215); +emit_16(150); +emit_16(215); +emit_16(151); +emit_16(216); +emit_16(152); +emit_16(216); +emit_16(151); +emit_16(216); +emit_16(152); +emit_16(217); +emit_16(153); +emit_16(217); +emit_16(152); +emit_16(217); +emit_16(153); +emit_16(218); +emit_16(154); +emit_16(218); +emit_16(153); +emit_16(218); +emit_16(154); +emit_16(219); +emit_16(155); +emit_16(219); +emit_16(154); +emit_16(219); +emit_16(155); +emit_16(220); +emit_16(156); +emit_16(220); +emit_16(155); +emit_16(220); +emit_16(156); +emit_16(221); +emit_16(157); +emit_16(221); +emit_16(156); +emit_16(221); +emit_16(157); +emit_16(222); +emit_16(158); +emit_16(222); +emit_16(157); +emit_16(222); +emit_16(158); +emit_16(223); +emit_16(159); +emit_16(223); +emit_16(158); +emit_16(223); +emit_16(159); +emit_16(224); +emit_16(160); +emit_16(224); +emit_16(159); +emit_16(224); +emit_16(160); +emit_16(225); +emit_16(161); +emit_16(225); +emit_16(160); +emit_16(225); +emit_16(161); +emit_16(226); +emit_16(162); +emit_16(226); +emit_16(161); +emit_16(226); +emit_16(162); +emit_16(227); +emit_16(163); +emit_16(227); +emit_16(162); +emit_16(227); +emit_16(163); +emit_16(228); +emit_16(164); +emit_16(228); +emit_16(163); +emit_16(228); +emit_16(164); +emit_16(229); +emit_16(165); +emit_16(229); +emit_16(164); +emit_16(229); +emit_16(165); +emit_16(230); +emit_16(166); +emit_16(230); +emit_16(165); +emit_16(230); +emit_16(166); +emit_16(231); +emit_16(167); +emit_16(231); +emit_16(166); +emit_16(231); +emit_16(167); +emit_16(232); +emit_16(168); +emit_16(232); +emit_16(167); +emit_16(232); +emit_16(168); +emit_16(233); +emit_16(169); +emit_16(233); +emit_16(168); +emit_16(233); +emit_16(169); +emit_16(234); +emit_16(170); +emit_16(234); +emit_16(169); +emit_16(234); +emit_16(170); +emit_16(235); +emit_16(171); +emit_16(235); +emit_16(170); +emit_16(235); +emit_16(171); +emit_16(236); +emit_16(172); +emit_16(236); +emit_16(171); +emit_16(236); +emit_16(172); +emit_16(237); +emit_16(173); +emit_16(237); +emit_16(172); +emit_16(237); +emit_16(173); +emit_16(238); +emit_16(174); +emit_16(238); +emit_16(173); +emit_16(238); +emit_16(174); +emit_16(239); +emit_16(175); +emit_16(239); +emit_16(174); +emit_16(239); +emit_16(175); +emit_16(240); +emit_16(176); +emit_16(240); +emit_16(175); +emit_16(240); +emit_16(176); +emit_16(241); +emit_16(177); +emit_16(241); +emit_16(176); +emit_16(241); +emit_16(177); +emit_16(242); +emit_16(178); +emit_16(242); +emit_16(177); +emit_16(242); +emit_16(178); +emit_16(243); +emit_16(179); +emit_16(243); +emit_16(178); +emit_16(243); +emit_16(179); +emit_16(244); +emit_16(180); +emit_16(244); +emit_16(179); +emit_16(244); +emit_16(180); +emit_16(245); +emit_16(181); +emit_16(245); +emit_16(180); +emit_16(245); +emit_16(181); +emit_16(246); +emit_16(182); +emit_16(246); +emit_16(181); +emit_16(246); +emit_16(182); +emit_16(247); +emit_16(183); +emit_16(247); +emit_16(182); +emit_16(247); +emit_16(183); +emit_16(248); +emit_16(184); +emit_16(248); +emit_16(183); +emit_16(248); +emit_16(184); +emit_16(249); +emit_16(185); +emit_16(249); +emit_16(184); +emit_16(249); +emit_16(185); +emit_16(250); +emit_16(186); +emit_16(250); +emit_16(185); +emit_16(250); +emit_16(186); +emit_16(251); +emit_16(187); +emit_16(251); +emit_16(186); +emit_16(251); +emit_16(187); +emit_16(252); +emit_16(188); +emit_16(252); +emit_16(187); +emit_16(252); +emit_16(188); +emit_16(253); +emit_16(189); +emit_16(253); +emit_16(188); +emit_16(253); +emit_16(189); +emit_16(254); +emit_16(190); +emit_16(254); +emit_16(189); +emit_16(254); +emit_16(190); +emit_16(255); +emit_16(191); +emit_16(255); +emit_16(190); +emit_16(256); +emit_16(192); +emit_16(257); +emit_16(193); +emit_16(257); +emit_16(192); +emit_16(257); +emit_16(193); +emit_16(258); +emit_16(194); +emit_16(258); +emit_16(193); +emit_16(258); +emit_16(194); +emit_16(259); +emit_16(195); +emit_16(259); +emit_16(194); +emit_16(259); +emit_16(195); +emit_16(260); +emit_16(196); +emit_16(260); +emit_16(195); +emit_16(260); +emit_16(196); +emit_16(261); +emit_16(197); +emit_16(261); +emit_16(196); +emit_16(261); +emit_16(197); +emit_16(262); +emit_16(198); +emit_16(262); +emit_16(197); +emit_16(262); +emit_16(198); +emit_16(263); +emit_16(199); +emit_16(263); +emit_16(198); +emit_16(263); +emit_16(199); +emit_16(264); +emit_16(200); +emit_16(264); +emit_16(199); +emit_16(264); +emit_16(200); +emit_16(265); +emit_16(201); +emit_16(265); +emit_16(200); +emit_16(265); +emit_16(201); +emit_16(266); +emit_16(202); +emit_16(266); +emit_16(201); +emit_16(266); +emit_16(202); +emit_16(267); +emit_16(203); +emit_16(267); +emit_16(202); +emit_16(267); +emit_16(203); +emit_16(268); +emit_16(204); +emit_16(268); +emit_16(203); +emit_16(268); +emit_16(204); +emit_16(269); +emit_16(205); +emit_16(269); +emit_16(204); +emit_16(269); +emit_16(205); +emit_16(270); +emit_16(206); +emit_16(270); +emit_16(205); +emit_16(270); +emit_16(206); +emit_16(271); +emit_16(207); +emit_16(271); +emit_16(206); +emit_16(271); +emit_16(207); +emit_16(272); +emit_16(208); +emit_16(272); +emit_16(207); +emit_16(272); +emit_16(208); +emit_16(273); +emit_16(209); +emit_16(273); +emit_16(208); +emit_16(273); +emit_16(209); +emit_16(274); +emit_16(210); +emit_16(274); +emit_16(209); +emit_16(274); +emit_16(210); +emit_16(275); +emit_16(211); +emit_16(275); +emit_16(210); +emit_16(275); +emit_16(211); +emit_16(276); +emit_16(212); +emit_16(276); +emit_16(211); +emit_16(276); +emit_16(212); +emit_16(277); +emit_16(213); +emit_16(277); +emit_16(212); +emit_16(277); +emit_16(213); +emit_16(278); +emit_16(214); +emit_16(278); +emit_16(213); +emit_16(278); +emit_16(214); +emit_16(279); +emit_16(215); +emit_16(279); +emit_16(214); +emit_16(279); +emit_16(215); +emit_16(280); +emit_16(216); +emit_16(280); +emit_16(215); +emit_16(280); +emit_16(216); +emit_16(281); +emit_16(217); +emit_16(281); +emit_16(216); +emit_16(281); +emit_16(217); +emit_16(282); +emit_16(218); +emit_16(282); +emit_16(217); +emit_16(282); +emit_16(218); +emit_16(283); +emit_16(219); +emit_16(283); +emit_16(218); +emit_16(283); +emit_16(219); +emit_16(284); +emit_16(220); +emit_16(284); +emit_16(219); +emit_16(284); +emit_16(220); +emit_16(285); +emit_16(221); +emit_16(285); +emit_16(220); +emit_16(285); +emit_16(221); +emit_16(286); +emit_16(222); +emit_16(286); +emit_16(221); +emit_16(286); +emit_16(222); +emit_16(287); +emit_16(223); +emit_16(287); +emit_16(222); +emit_16(287); +emit_16(223); +emit_16(288); +emit_16(224); +emit_16(288); +emit_16(223); +emit_16(288); +emit_16(224); +emit_16(289); +emit_16(225); +emit_16(289); +emit_16(224); +emit_16(289); +emit_16(225); +emit_16(290); +emit_16(226); +emit_16(290); +emit_16(225); +emit_16(290); +emit_16(226); +emit_16(291); +emit_16(227); +emit_16(291); +emit_16(226); +emit_16(291); +emit_16(227); +emit_16(292); +emit_16(228); +emit_16(292); +emit_16(227); +emit_16(292); +emit_16(228); +emit_16(293); +emit_16(229); +emit_16(293); +emit_16(228); +emit_16(293); +emit_16(229); +emit_16(294); +emit_16(230); +emit_16(294); +emit_16(229); +emit_16(294); +emit_16(230); +emit_16(295); +emit_16(231); +emit_16(295); +emit_16(230); +emit_16(295); +emit_16(231); +emit_16(296); +emit_16(232); +emit_16(296); +emit_16(231); +emit_16(296); +emit_16(232); +emit_16(297); +emit_16(233); +emit_16(297); +emit_16(232); +emit_16(297); +emit_16(233); +emit_16(298); +emit_16(234); +emit_16(298); +emit_16(233); +emit_16(298); +emit_16(234); +emit_16(299); +emit_16(235); +emit_16(299); +emit_16(234); +emit_16(299); +emit_16(235); +emit_16(300); +emit_16(236); +emit_16(300); +emit_16(235); +emit_16(300); +emit_16(236); +emit_16(301); +emit_16(237); +emit_16(301); +emit_16(236); +emit_16(301); +emit_16(237); +emit_16(302); +emit_16(238); +emit_16(302); +emit_16(237); +emit_16(302); +emit_16(238); +emit_16(303); +emit_16(239); +emit_16(303); +emit_16(238); +emit_16(303); +emit_16(239); +emit_16(304); +emit_16(240); +emit_16(304); +emit_16(239); +emit_16(304); +emit_16(240); +emit_16(305); +emit_16(241); +emit_16(305); +emit_16(240); +emit_16(305); +emit_16(241); +emit_16(306); +emit_16(242); +emit_16(306); +emit_16(241); +emit_16(306); +emit_16(242); +emit_16(307); +emit_16(243); +emit_16(307); +emit_16(242); +emit_16(307); +emit_16(243); +emit_16(308); +emit_16(244); +emit_16(308); +emit_16(243); +emit_16(308); +emit_16(244); +emit_16(309); +emit_16(245); +emit_16(309); +emit_16(244); +emit_16(309); +emit_16(245); +emit_16(310); +emit_16(246); +emit_16(310); +emit_16(245); +emit_16(310); +emit_16(246); +emit_16(311); +emit_16(247); +emit_16(311); +emit_16(246); +emit_16(311); +emit_16(247); +emit_16(312); +emit_16(248); +emit_16(312); +emit_16(247); +emit_16(312); +emit_16(248); +emit_16(313); +emit_16(249); +emit_16(313); +emit_16(248); +emit_16(313); +emit_16(249); +emit_16(314); +emit_16(250); +emit_16(314); +emit_16(249); +emit_16(314); +emit_16(250); +emit_16(315); +emit_16(251); +emit_16(315); +emit_16(250); +emit_16(315); +emit_16(251); +emit_16(316); +emit_16(252); +emit_16(316); +emit_16(251); +emit_16(316); +emit_16(252); +emit_16(317); +emit_16(253); +emit_16(317); +emit_16(252); +emit_16(317); +emit_16(253); +emit_16(318); +emit_16(254); +emit_16(318); +emit_16(253); +emit_16(318); +emit_16(254); +emit_16(319); +emit_16(255); +emit_16(319); +emit_16(254); +emit_16(320); +emit_16(256); +emit_16(321); +emit_16(257); +emit_16(321); +emit_16(256); +emit_16(321); +emit_16(257); +emit_16(322); +emit_16(258); +emit_16(322); +emit_16(257); +emit_16(322); +emit_16(258); +emit_16(323); +emit_16(259); +emit_16(323); +emit_16(258); +emit_16(323); +emit_16(259); +emit_16(324); +emit_16(260); +emit_16(324); +emit_16(259); +emit_16(324); +emit_16(260); +emit_16(325); +emit_16(261); +emit_16(325); +emit_16(260); +emit_16(325); +emit_16(261); +emit_16(326); +emit_16(262); +emit_16(326); +emit_16(261); +emit_16(326); +emit_16(262); +emit_16(327); +emit_16(263); +emit_16(327); +emit_16(262); +emit_16(327); +emit_16(263); +emit_16(328); +emit_16(264); +emit_16(328); +emit_16(263); +emit_16(328); +emit_16(264); +emit_16(329); +emit_16(265); +emit_16(329); +emit_16(264); +emit_16(329); +emit_16(265); +emit_16(330); +emit_16(266); +emit_16(330); +emit_16(265); +emit_16(330); +emit_16(266); +emit_16(331); +emit_16(267); +emit_16(331); +emit_16(266); +emit_16(331); +emit_16(267); +emit_16(332); +emit_16(268); +emit_16(332); +emit_16(267); +emit_16(332); +emit_16(268); +emit_16(333); +emit_16(269); +emit_16(333); +emit_16(268); +emit_16(333); +emit_16(269); +emit_16(334); +emit_16(270); +emit_16(334); +emit_16(269); +emit_16(334); +emit_16(270); +emit_16(335); +emit_16(271); +emit_16(335); +emit_16(270); +emit_16(335); +emit_16(271); +emit_16(336); +emit_16(272); +emit_16(336); +emit_16(271); +emit_16(336); +emit_16(272); +emit_16(337); +emit_16(273); +emit_16(337); +emit_16(272); +emit_16(337); +emit_16(273); +emit_16(338); +emit_16(274); +emit_16(338); +emit_16(273); +emit_16(338); +emit_16(274); +emit_16(339); +emit_16(275); +emit_16(339); +emit_16(274); +emit_16(339); +emit_16(275); +emit_16(340); +emit_16(276); +emit_16(340); +emit_16(275); +emit_16(340); +emit_16(276); +emit_16(341); +emit_16(277); +emit_16(341); +emit_16(276); +emit_16(341); +emit_16(277); +emit_16(342); +emit_16(278); +emit_16(342); +emit_16(277); +emit_16(342); +emit_16(278); +emit_16(343); +emit_16(279); +emit_16(343); +emit_16(278); +emit_16(343); +emit_16(279); +emit_16(344); +emit_16(280); +emit_16(344); +emit_16(279); +emit_16(344); +emit_16(280); +emit_16(345); +emit_16(281); +emit_16(345); +emit_16(280); +emit_16(345); +emit_16(281); +emit_16(346); +emit_16(282); +emit_16(346); +emit_16(281); +emit_16(346); +emit_16(282); +emit_16(347); +emit_16(283); +emit_16(347); +emit_16(282); +emit_16(347); +emit_16(283); +emit_16(348); +emit_16(284); +emit_16(348); +emit_16(283); +emit_16(348); +emit_16(284); +emit_16(349); +emit_16(285); +emit_16(349); +emit_16(284); +emit_16(349); +emit_16(285); +emit_16(350); +emit_16(286); +emit_16(350); +emit_16(285); +emit_16(350); +emit_16(286); +emit_16(351); +emit_16(287); +emit_16(351); +emit_16(286); +emit_16(351); +emit_16(287); +emit_16(352); +emit_16(288); +emit_16(352); +emit_16(287); +emit_16(352); +emit_16(288); +emit_16(353); +emit_16(289); +emit_16(353); +emit_16(288); +emit_16(353); +emit_16(289); +emit_16(354); +emit_16(290); +emit_16(354); +emit_16(289); +emit_16(354); +emit_16(290); +emit_16(355); +emit_16(291); +emit_16(355); +emit_16(290); +emit_16(355); +emit_16(291); +emit_16(356); +emit_16(292); +emit_16(356); +emit_16(291); +emit_16(356); +emit_16(292); +emit_16(357); +emit_16(293); +emit_16(357); +emit_16(292); +emit_16(357); +emit_16(293); +emit_16(358); +emit_16(294); +emit_16(358); +emit_16(293); +emit_16(358); +emit_16(294); +emit_16(359); +emit_16(295); +emit_16(359); +emit_16(294); +emit_16(359); +emit_16(295); +emit_16(360); +emit_16(296); +emit_16(360); +emit_16(295); +emit_16(360); +emit_16(296); +emit_16(361); +emit_16(297); +emit_16(361); +emit_16(296); +emit_16(361); +emit_16(297); +emit_16(362); +emit_16(298); +emit_16(362); +emit_16(297); +emit_16(362); +emit_16(298); +emit_16(363); +emit_16(299); +emit_16(363); +emit_16(298); +emit_16(363); +emit_16(299); +emit_16(364); +emit_16(300); +emit_16(364); +emit_16(299); +emit_16(364); +emit_16(300); +emit_16(365); +emit_16(301); +emit_16(365); +emit_16(300); +emit_16(365); +emit_16(301); +emit_16(366); +emit_16(302); +emit_16(366); +emit_16(301); +emit_16(366); +emit_16(302); +emit_16(367); +emit_16(303); +emit_16(367); +emit_16(302); +emit_16(367); +emit_16(303); +emit_16(368); +emit_16(304); +emit_16(368); +emit_16(303); +emit_16(368); +emit_16(304); +emit_16(369); +emit_16(305); +emit_16(369); +emit_16(304); +emit_16(369); +emit_16(305); +emit_16(370); +emit_16(306); +emit_16(370); +emit_16(305); +emit_16(370); +emit_16(306); +emit_16(371); +emit_16(307); +emit_16(371); +emit_16(306); +emit_16(371); +emit_16(307); +emit_16(372); +emit_16(308); +emit_16(372); +emit_16(307); +emit_16(372); +emit_16(308); +emit_16(373); +emit_16(309); +emit_16(373); +emit_16(308); +emit_16(373); +emit_16(309); +emit_16(374); +emit_16(310); +emit_16(374); +emit_16(309); +emit_16(374); +emit_16(310); +emit_16(375); +emit_16(311); +emit_16(375); +emit_16(310); +emit_16(375); +emit_16(311); +emit_16(376); +emit_16(312); +emit_16(376); +emit_16(311); +emit_16(376); +emit_16(312); +emit_16(377); +emit_16(313); +emit_16(377); +emit_16(312); +emit_16(377); +emit_16(313); +emit_16(378); +emit_16(314); +emit_16(378); +emit_16(313); +emit_16(378); +emit_16(314); +emit_16(379); +emit_16(315); +emit_16(379); +emit_16(314); +emit_16(379); +emit_16(315); +emit_16(380); +emit_16(316); +emit_16(380); +emit_16(315); +emit_16(380); +emit_16(316); +emit_16(381); +emit_16(317); +emit_16(381); +emit_16(316); +emit_16(381); +emit_16(317); +emit_16(382); +emit_16(318); +emit_16(382); +emit_16(317); +emit_16(382); +emit_16(318); +emit_16(383); +emit_16(319); +emit_16(383); +emit_16(318); +emit_16(384); +emit_16(320); +emit_16(385); +emit_16(321); +emit_16(385); +emit_16(320); +emit_16(385); +emit_16(321); +emit_16(386); +emit_16(322); +emit_16(386); +emit_16(321); +emit_16(386); +emit_16(322); +emit_16(387); +emit_16(323); +emit_16(387); +emit_16(322); +emit_16(387); +emit_16(323); +emit_16(388); +emit_16(324); +emit_16(388); +emit_16(323); +emit_16(388); +emit_16(324); +emit_16(389); +emit_16(325); +emit_16(389); +emit_16(324); +emit_16(389); +emit_16(325); +emit_16(390); +emit_16(326); +emit_16(390); +emit_16(325); +emit_16(390); +emit_16(326); +emit_16(391); +emit_16(327); +emit_16(391); +emit_16(326); +emit_16(391); +emit_16(327); +emit_16(392); +emit_16(328); +emit_16(392); +emit_16(327); +emit_16(392); +emit_16(328); +emit_16(393); +emit_16(329); +emit_16(393); +emit_16(328); +emit_16(393); +emit_16(329); +emit_16(394); +emit_16(330); +emit_16(394); +emit_16(329); +emit_16(394); +emit_16(330); +emit_16(395); +emit_16(331); +emit_16(395); +emit_16(330); +emit_16(395); +emit_16(331); +emit_16(396); +emit_16(332); +emit_16(396); +emit_16(331); +emit_16(396); +emit_16(332); +emit_16(397); +emit_16(333); +emit_16(397); +emit_16(332); +emit_16(397); +emit_16(333); +emit_16(398); +emit_16(334); +emit_16(398); +emit_16(333); +emit_16(398); +emit_16(334); +emit_16(399); +emit_16(335); +emit_16(399); +emit_16(334); +emit_16(399); +emit_16(335); +emit_16(400); +emit_16(336); +emit_16(400); +emit_16(335); +emit_16(400); +emit_16(336); +emit_16(401); +emit_16(337); +emit_16(401); +emit_16(336); +emit_16(401); +emit_16(337); +emit_16(402); +emit_16(338); +emit_16(402); +emit_16(337); +emit_16(402); +emit_16(338); +emit_16(403); +emit_16(339); +emit_16(403); +emit_16(338); +emit_16(403); +emit_16(339); +emit_16(404); +emit_16(340); +emit_16(404); +emit_16(339); +emit_16(404); +emit_16(340); +emit_16(405); +emit_16(341); +emit_16(405); +emit_16(340); +emit_16(405); +emit_16(341); +emit_16(406); +emit_16(342); +emit_16(406); +emit_16(341); +emit_16(406); +emit_16(342); +emit_16(407); +emit_16(343); +emit_16(407); +emit_16(342); +emit_16(407); +emit_16(343); +emit_16(408); +emit_16(344); +emit_16(408); +emit_16(343); +emit_16(408); +emit_16(344); +emit_16(409); +emit_16(345); +emit_16(409); +emit_16(344); +emit_16(409); +emit_16(345); +emit_16(410); +emit_16(346); +emit_16(410); +emit_16(345); +emit_16(410); +emit_16(346); +emit_16(411); +emit_16(347); +emit_16(411); +emit_16(346); +emit_16(411); +emit_16(347); +emit_16(412); +emit_16(348); +emit_16(412); +emit_16(347); +emit_16(412); +emit_16(348); +emit_16(413); +emit_16(349); +emit_16(413); +emit_16(348); +emit_16(413); +emit_16(349); +emit_16(414); +emit_16(350); +emit_16(414); +emit_16(349); +emit_16(414); +emit_16(350); +emit_16(415); +emit_16(351); +emit_16(415); +emit_16(350); +emit_16(415); +emit_16(351); +emit_16(416); +emit_16(352); +emit_16(416); +emit_16(351); +emit_16(416); +emit_16(352); +emit_16(417); +emit_16(353); +emit_16(417); +emit_16(352); +emit_16(417); +emit_16(353); +emit_16(418); +emit_16(354); +emit_16(418); +emit_16(353); +emit_16(418); +emit_16(354); +emit_16(419); +emit_16(355); +emit_16(419); +emit_16(354); +emit_16(419); +emit_16(355); +emit_16(420); +emit_16(356); +emit_16(420); +emit_16(355); +emit_16(420); +emit_16(356); +emit_16(421); +emit_16(357); +emit_16(421); +emit_16(356); +emit_16(421); +emit_16(357); +emit_16(422); +emit_16(358); +emit_16(422); +emit_16(357); +emit_16(422); +emit_16(358); +emit_16(423); +emit_16(359); +emit_16(423); +emit_16(358); +emit_16(423); +emit_16(359); +emit_16(424); +emit_16(360); +emit_16(424); +emit_16(359); +emit_16(424); +emit_16(360); +emit_16(425); +emit_16(361); +emit_16(425); +emit_16(360); +emit_16(425); +emit_16(361); +emit_16(426); +emit_16(362); +emit_16(426); +emit_16(361); +emit_16(426); +emit_16(362); +emit_16(427); +emit_16(363); +emit_16(427); +emit_16(362); +emit_16(427); +emit_16(363); +emit_16(428); +emit_16(364); +emit_16(428); +emit_16(363); +emit_16(428); +emit_16(364); +emit_16(429); +emit_16(365); +emit_16(429); +emit_16(364); +emit_16(429); +emit_16(365); +emit_16(430); +emit_16(366); +emit_16(430); +emit_16(365); +emit_16(430); +emit_16(366); +emit_16(431); +emit_16(367); +emit_16(431); +emit_16(366); +emit_16(431); +emit_16(367); +emit_16(432); +emit_16(368); +emit_16(432); +emit_16(367); +emit_16(432); +emit_16(368); +emit_16(433); +emit_16(369); +emit_16(433); +emit_16(368); +emit_16(433); +emit_16(369); +emit_16(434); +emit_16(370); +emit_16(434); +emit_16(369); +emit_16(434); +emit_16(370); +emit_16(435); +emit_16(371); +emit_16(435); +emit_16(370); +emit_16(435); +emit_16(371); +emit_16(436); +emit_16(372); +emit_16(436); +emit_16(371); +emit_16(436); +emit_16(372); +emit_16(437); +emit_16(373); +emit_16(437); +emit_16(372); +emit_16(437); +emit_16(373); +emit_16(438); +emit_16(374); +emit_16(438); +emit_16(373); +emit_16(438); +emit_16(374); +emit_16(439); +emit_16(375); +emit_16(439); +emit_16(374); +emit_16(439); +emit_16(375); +emit_16(440); +emit_16(376); +emit_16(440); +emit_16(375); +emit_16(440); +emit_16(376); +emit_16(441); +emit_16(377); +emit_16(441); +emit_16(376); +emit_16(441); +emit_16(377); +emit_16(442); +emit_16(378); +emit_16(442); +emit_16(377); +emit_16(442); +emit_16(378); +emit_16(443); +emit_16(379); +emit_16(443); +emit_16(378); +emit_16(443); +emit_16(379); +emit_16(444); +emit_16(380); +emit_16(444); +emit_16(379); +emit_16(444); +emit_16(380); +emit_16(445); +emit_16(381); +emit_16(445); +emit_16(380); +emit_16(445); +emit_16(381); +emit_16(446); +emit_16(382); +emit_16(446); +emit_16(381); +emit_16(446); +emit_16(382); +emit_16(447); +emit_16(383); +emit_16(447); +emit_16(382); +emit_16(448); +emit_16(384); +emit_16(449); +emit_16(385); +emit_16(449); +emit_16(384); +emit_16(449); +emit_16(385); +emit_16(450); +emit_16(386); +emit_16(450); +emit_16(385); +emit_16(450); +emit_16(386); +emit_16(451); +emit_16(387); +emit_16(451); +emit_16(386); +emit_16(451); +emit_16(387); +emit_16(452); +emit_16(388); +emit_16(452); +emit_16(387); +emit_16(452); +emit_16(388); +emit_16(453); +emit_16(389); +emit_16(453); +emit_16(388); +emit_16(453); +emit_16(389); +emit_16(454); +emit_16(390); +emit_16(454); +emit_16(389); +emit_16(454); +emit_16(390); +emit_16(455); +emit_16(391); +emit_16(455); +emit_16(390); +emit_16(455); +emit_16(391); +emit_16(456); +emit_16(392); +emit_16(456); +emit_16(391); +emit_16(456); +emit_16(392); +emit_16(457); +emit_16(393); +emit_16(457); +emit_16(392); +emit_16(457); +emit_16(393); +emit_16(458); +emit_16(394); +emit_16(458); +emit_16(393); +emit_16(458); +emit_16(394); +emit_16(459); +emit_16(395); +emit_16(459); +emit_16(394); +emit_16(459); +emit_16(395); +emit_16(460); +emit_16(396); +emit_16(460); +emit_16(395); +emit_16(460); +emit_16(396); +emit_16(461); +emit_16(397); +emit_16(461); +emit_16(396); +emit_16(461); +emit_16(397); +emit_16(462); +emit_16(398); +emit_16(462); +emit_16(397); +emit_16(462); +emit_16(398); +emit_16(463); +emit_16(399); +emit_16(463); +emit_16(398); +emit_16(463); +emit_16(399); +emit_16(464); +emit_16(400); +emit_16(464); +emit_16(399); +emit_16(464); +emit_16(400); +emit_16(465); +emit_16(401); +emit_16(465); +emit_16(400); +emit_16(465); +emit_16(401); +emit_16(466); +emit_16(402); +emit_16(466); +emit_16(401); +emit_16(466); +emit_16(402); +emit_16(467); +emit_16(403); +emit_16(467); +emit_16(402); +emit_16(467); +emit_16(403); +emit_16(468); +emit_16(404); +emit_16(468); +emit_16(403); +emit_16(468); +emit_16(404); +emit_16(469); +emit_16(405); +emit_16(469); +emit_16(404); +emit_16(469); +emit_16(405); +emit_16(470); +emit_16(406); +emit_16(470); +emit_16(405); +emit_16(470); +emit_16(406); +emit_16(471); +emit_16(407); +emit_16(471); +emit_16(406); +emit_16(471); +emit_16(407); +emit_16(472); +emit_16(408); +emit_16(472); +emit_16(407); +emit_16(472); +emit_16(408); +emit_16(473); +emit_16(409); +emit_16(473); +emit_16(408); +emit_16(473); +emit_16(409); +emit_16(474); +emit_16(410); +emit_16(474); +emit_16(409); +emit_16(474); +emit_16(410); +emit_16(475); +emit_16(411); +emit_16(475); +emit_16(410); +emit_16(475); +emit_16(411); +emit_16(476); +emit_16(412); +emit_16(476); +emit_16(411); +emit_16(476); +emit_16(412); +emit_16(477); +emit_16(413); +emit_16(477); +emit_16(412); +emit_16(477); +emit_16(413); +emit_16(478); +emit_16(414); +emit_16(478); +emit_16(413); +emit_16(478); +emit_16(414); +emit_16(479); +emit_16(415); +emit_16(479); +emit_16(414); +emit_16(479); +emit_16(415); +emit_16(480); +emit_16(416); +emit_16(480); +emit_16(415); +emit_16(480); +emit_16(416); +emit_16(481); +emit_16(417); +emit_16(481); +emit_16(416); +emit_16(481); +emit_16(417); +emit_16(482); +emit_16(418); +emit_16(482); +emit_16(417); +emit_16(482); +emit_16(418); +emit_16(483); +emit_16(419); +emit_16(483); +emit_16(418); +emit_16(483); +emit_16(419); +emit_16(484); +emit_16(420); +emit_16(484); +emit_16(419); +emit_16(484); +emit_16(420); +emit_16(485); +emit_16(421); +emit_16(485); +emit_16(420); +emit_16(485); +emit_16(421); +emit_16(486); +emit_16(422); +emit_16(486); +emit_16(421); +emit_16(486); +emit_16(422); +emit_16(487); +emit_16(423); +emit_16(487); +emit_16(422); +emit_16(487); +emit_16(423); +emit_16(488); +emit_16(424); +emit_16(488); +emit_16(423); +emit_16(488); +emit_16(424); +emit_16(489); +emit_16(425); +emit_16(489); +emit_16(424); +emit_16(489); +emit_16(425); +emit_16(490); +emit_16(426); +emit_16(490); +emit_16(425); +emit_16(490); +emit_16(426); +emit_16(491); +emit_16(427); +emit_16(491); +emit_16(426); +emit_16(491); +emit_16(427); +emit_16(492); +emit_16(428); +emit_16(492); +emit_16(427); +emit_16(492); +emit_16(428); +emit_16(493); +emit_16(429); +emit_16(493); +emit_16(428); +emit_16(493); +emit_16(429); +emit_16(494); +emit_16(430); +emit_16(494); +emit_16(429); +emit_16(494); +emit_16(430); +emit_16(495); +emit_16(431); +emit_16(495); +emit_16(430); +emit_16(495); +emit_16(431); +emit_16(496); +emit_16(432); +emit_16(496); +emit_16(431); +emit_16(496); +emit_16(432); +emit_16(497); +emit_16(433); +emit_16(497); +emit_16(432); +emit_16(497); +emit_16(433); +emit_16(498); +emit_16(434); +emit_16(498); +emit_16(433); +emit_16(498); +emit_16(434); +emit_16(499); +emit_16(435); +emit_16(499); +emit_16(434); +emit_16(499); +emit_16(435); +emit_16(500); +emit_16(436); +emit_16(500); +emit_16(435); +emit_16(500); +emit_16(436); +emit_16(501); +emit_16(437); +emit_16(501); +emit_16(436); +emit_16(501); +emit_16(437); +emit_16(502); +emit_16(438); +emit_16(502); +emit_16(437); +emit_16(502); +emit_16(438); +emit_16(503); +emit_16(439); +emit_16(503); +emit_16(438); +emit_16(503); +emit_16(439); +emit_16(504); +emit_16(440); +emit_16(504); +emit_16(439); +emit_16(504); +emit_16(440); +emit_16(505); +emit_16(441); +emit_16(505); +emit_16(440); +emit_16(505); +emit_16(441); +emit_16(506); +emit_16(442); +emit_16(506); +emit_16(441); +emit_16(506); +emit_16(442); +emit_16(507); +emit_16(443); +emit_16(507); +emit_16(442); +emit_16(507); +emit_16(443); +emit_16(508); +emit_16(444); +emit_16(508); +emit_16(443); +emit_16(508); +emit_16(444); +emit_16(509); +emit_16(445); +emit_16(509); +emit_16(444); +emit_16(509); +emit_16(445); +emit_16(510); +emit_16(446); +emit_16(510); +emit_16(445); +emit_16(510); +emit_16(446); +emit_16(511); +emit_16(447); +emit_16(511); +emit_16(446); +emit_16(512); +emit_16(448); +emit_16(513); +emit_16(449); +emit_16(513); +emit_16(448); +emit_16(513); +emit_16(449); +emit_16(514); +emit_16(450); +emit_16(514); +emit_16(449); +emit_16(514); +emit_16(450); +emit_16(515); +emit_16(451); +emit_16(515); +emit_16(450); +emit_16(515); +emit_16(451); +emit_16(516); +emit_16(452); +emit_16(516); +emit_16(451); +emit_16(516); +emit_16(452); +emit_16(517); +emit_16(453); +emit_16(517); +emit_16(452); +emit_16(517); +emit_16(453); +emit_16(518); +emit_16(454); +emit_16(518); +emit_16(453); +emit_16(518); +emit_16(454); +emit_16(519); +emit_16(455); +emit_16(519); +emit_16(454); +emit_16(519); +emit_16(455); +emit_16(520); +emit_16(456); +emit_16(520); +emit_16(455); +emit_16(520); +emit_16(456); +emit_16(521); +emit_16(457); +emit_16(521); +emit_16(456); +emit_16(521); +emit_16(457); +emit_16(522); +emit_16(458); +emit_16(522); +emit_16(457); +emit_16(522); +emit_16(458); +emit_16(523); +emit_16(459); +emit_16(523); +emit_16(458); +emit_16(523); +emit_16(459); +emit_16(524); +emit_16(460); +emit_16(524); +emit_16(459); +emit_16(524); +emit_16(460); +emit_16(525); +emit_16(461); +emit_16(525); +emit_16(460); +emit_16(525); +emit_16(461); +emit_16(526); +emit_16(462); +emit_16(526); +emit_16(461); +emit_16(526); +emit_16(462); +emit_16(527); +emit_16(463); +emit_16(527); +emit_16(462); +emit_16(527); +emit_16(463); +emit_16(528); +emit_16(464); +emit_16(528); +emit_16(463); +emit_16(528); +emit_16(464); +emit_16(529); +emit_16(465); +emit_16(529); +emit_16(464); +emit_16(529); +emit_16(465); +emit_16(530); +emit_16(466); +emit_16(530); +emit_16(465); +emit_16(530); +emit_16(466); +emit_16(531); +emit_16(467); +emit_16(531); +emit_16(466); +emit_16(531); +emit_16(467); +emit_16(532); +emit_16(468); +emit_16(532); +emit_16(467); +emit_16(532); +emit_16(468); +emit_16(533); +emit_16(469); +emit_16(533); +emit_16(468); +emit_16(533); +emit_16(469); +emit_16(534); +emit_16(470); +emit_16(534); +emit_16(469); +emit_16(534); +emit_16(470); +emit_16(535); +emit_16(471); +emit_16(535); +emit_16(470); +emit_16(535); +emit_16(471); +emit_16(536); +emit_16(472); +emit_16(536); +emit_16(471); +emit_16(536); +emit_16(472); +emit_16(537); +emit_16(473); +emit_16(537); +emit_16(472); +emit_16(537); +emit_16(473); +emit_16(538); +emit_16(474); +emit_16(538); +emit_16(473); +emit_16(538); +emit_16(474); +emit_16(539); +emit_16(475); +emit_16(539); +emit_16(474); +emit_16(539); +emit_16(475); +emit_16(540); +emit_16(476); +emit_16(540); +emit_16(475); +emit_16(540); +emit_16(476); +emit_16(541); +emit_16(477); +emit_16(541); +emit_16(476); +emit_16(541); +emit_16(477); +emit_16(542); +emit_16(478); +emit_16(542); +emit_16(477); +emit_16(542); +emit_16(478); +emit_16(543); +emit_16(479); +emit_16(543); +emit_16(478); +emit_16(543); +emit_16(479); +emit_16(544); +emit_16(480); +emit_16(544); +emit_16(479); +emit_16(544); +emit_16(480); +emit_16(545); +emit_16(481); +emit_16(545); +emit_16(480); +emit_16(545); +emit_16(481); +emit_16(546); +emit_16(482); +emit_16(546); +emit_16(481); +emit_16(546); +emit_16(482); +emit_16(547); +emit_16(483); +emit_16(547); +emit_16(482); +emit_16(547); +emit_16(483); +emit_16(548); +emit_16(484); +emit_16(548); +emit_16(483); +emit_16(548); +emit_16(484); +emit_16(549); +emit_16(485); +emit_16(549); +emit_16(484); +emit_16(549); +emit_16(485); +emit_16(550); +emit_16(486); +emit_16(550); +emit_16(485); +emit_16(550); +emit_16(486); +emit_16(551); +emit_16(487); +emit_16(551); +emit_16(486); +emit_16(551); +emit_16(487); +emit_16(552); +emit_16(488); +emit_16(552); +emit_16(487); +emit_16(552); +emit_16(488); +emit_16(553); +emit_16(489); +emit_16(553); +emit_16(488); +emit_16(553); +emit_16(489); +emit_16(554); +emit_16(490); +emit_16(554); +emit_16(489); +emit_16(554); +emit_16(490); +emit_16(555); +emit_16(491); +emit_16(555); +emit_16(490); +emit_16(555); +emit_16(491); +emit_16(556); +emit_16(492); +emit_16(556); +emit_16(491); +emit_16(556); +emit_16(492); +emit_16(557); +emit_16(493); +emit_16(557); +emit_16(492); +emit_16(557); +emit_16(493); +emit_16(558); +emit_16(494); +emit_16(558); +emit_16(493); +emit_16(558); +emit_16(494); +emit_16(559); +emit_16(495); +emit_16(559); +emit_16(494); +emit_16(559); +emit_16(495); +emit_16(560); +emit_16(496); +emit_16(560); +emit_16(495); +emit_16(560); +emit_16(496); +emit_16(561); +emit_16(497); +emit_16(561); +emit_16(496); +emit_16(561); +emit_16(497); +emit_16(562); +emit_16(498); +emit_16(562); +emit_16(497); +emit_16(562); +emit_16(498); +emit_16(563); +emit_16(499); +emit_16(563); +emit_16(498); +emit_16(563); +emit_16(499); +emit_16(564); +emit_16(500); +emit_16(564); +emit_16(499); +emit_16(564); +emit_16(500); +emit_16(565); +emit_16(501); +emit_16(565); +emit_16(500); +emit_16(565); +emit_16(501); +emit_16(566); +emit_16(502); +emit_16(566); +emit_16(501); +emit_16(566); +emit_16(502); +emit_16(567); +emit_16(503); +emit_16(567); +emit_16(502); +emit_16(567); +emit_16(503); +emit_16(568); +emit_16(504); +emit_16(568); +emit_16(503); +emit_16(568); +emit_16(504); +emit_16(569); +emit_16(505); +emit_16(569); +emit_16(504); +emit_16(569); +emit_16(505); +emit_16(570); +emit_16(506); +emit_16(570); +emit_16(505); +emit_16(570); +emit_16(506); +emit_16(571); +emit_16(507); +emit_16(571); +emit_16(506); +emit_16(571); +emit_16(507); +emit_16(572); +emit_16(508); +emit_16(572); +emit_16(507); +emit_16(572); +emit_16(508); +emit_16(573); +emit_16(509); +emit_16(573); +emit_16(508); +emit_16(573); +emit_16(509); +emit_16(574); +emit_16(510); +emit_16(574); +emit_16(509); +emit_16(574); +emit_16(510); +emit_16(575); +emit_16(511); +emit_16(575); +emit_16(510); +emit_16(576); +emit_16(512); +emit_16(577); +emit_16(513); +emit_16(577); +emit_16(512); +emit_16(577); +emit_16(513); +emit_16(578); +emit_16(514); +emit_16(578); +emit_16(513); +emit_16(578); +emit_16(514); +emit_16(579); +emit_16(515); +emit_16(579); +emit_16(514); +emit_16(579); +emit_16(515); +emit_16(580); +emit_16(516); +emit_16(580); +emit_16(515); +emit_16(580); +emit_16(516); +emit_16(581); +emit_16(517); +emit_16(581); +emit_16(516); +emit_16(581); +emit_16(517); +emit_16(582); +emit_16(518); +emit_16(582); +emit_16(517); +emit_16(582); +emit_16(518); +emit_16(583); +emit_16(519); +emit_16(583); +emit_16(518); +emit_16(583); +emit_16(519); +emit_16(584); +emit_16(520); +emit_16(584); +emit_16(519); +emit_16(584); +emit_16(520); +emit_16(585); +emit_16(521); +emit_16(585); +emit_16(520); +emit_16(585); +emit_16(521); +emit_16(586); +emit_16(522); +emit_16(586); +emit_16(521); +emit_16(586); +emit_16(522); +emit_16(587); +emit_16(523); +emit_16(587); +emit_16(522); +emit_16(587); +emit_16(523); +emit_16(588); +emit_16(524); +emit_16(588); +emit_16(523); +emit_16(588); +emit_16(524); +emit_16(589); +emit_16(525); +emit_16(589); +emit_16(524); +emit_16(589); +emit_16(525); +emit_16(590); +emit_16(526); +emit_16(590); +emit_16(525); +emit_16(590); +emit_16(526); +emit_16(591); +emit_16(527); +emit_16(591); +emit_16(526); +emit_16(591); +emit_16(527); +emit_16(592); +emit_16(528); +emit_16(592); +emit_16(527); +emit_16(592); +emit_16(528); +emit_16(593); +emit_16(529); +emit_16(593); +emit_16(528); +emit_16(593); +emit_16(529); +emit_16(594); +emit_16(530); +emit_16(594); +emit_16(529); +emit_16(594); +emit_16(530); +emit_16(595); +emit_16(531); +emit_16(595); +emit_16(530); +emit_16(595); +emit_16(531); +emit_16(596); +emit_16(532); +emit_16(596); +emit_16(531); +emit_16(596); +emit_16(532); +emit_16(597); +emit_16(533); +emit_16(597); +emit_16(532); +emit_16(597); +emit_16(533); +emit_16(598); +emit_16(534); +emit_16(598); +emit_16(533); +emit_16(598); +emit_16(534); +emit_16(599); +emit_16(535); +emit_16(599); +emit_16(534); +emit_16(599); +emit_16(535); +emit_16(600); +emit_16(536); +emit_16(600); +emit_16(535); +emit_16(600); +emit_16(536); +emit_16(601); +emit_16(537); +emit_16(601); +emit_16(536); +emit_16(601); +emit_16(537); +emit_16(602); +emit_16(538); +emit_16(602); +emit_16(537); +emit_16(602); +emit_16(538); +emit_16(603); +emit_16(539); +emit_16(603); +emit_16(538); +emit_16(603); +emit_16(539); +emit_16(604); +emit_16(540); +emit_16(604); +emit_16(539); +emit_16(604); +emit_16(540); +emit_16(605); +emit_16(541); +emit_16(605); +emit_16(540); +emit_16(605); +emit_16(541); +emit_16(606); +emit_16(542); +emit_16(606); +emit_16(541); +emit_16(606); +emit_16(542); +emit_16(607); +emit_16(543); +emit_16(607); +emit_16(542); +emit_16(607); +emit_16(543); +emit_16(608); +emit_16(544); +emit_16(608); +emit_16(543); +emit_16(608); +emit_16(544); +emit_16(609); +emit_16(545); +emit_16(609); +emit_16(544); +emit_16(609); +emit_16(545); +emit_16(610); +emit_16(546); +emit_16(610); +emit_16(545); +emit_16(610); +emit_16(546); +emit_16(611); +emit_16(547); +emit_16(611); +emit_16(546); +emit_16(611); +emit_16(547); +emit_16(612); +emit_16(548); +emit_16(612); +emit_16(547); +emit_16(612); +emit_16(548); +emit_16(613); +emit_16(549); +emit_16(613); +emit_16(548); +emit_16(613); +emit_16(549); +emit_16(614); +emit_16(550); +emit_16(614); +emit_16(549); +emit_16(614); +emit_16(550); +emit_16(615); +emit_16(551); +emit_16(615); +emit_16(550); +emit_16(615); +emit_16(551); +emit_16(616); +emit_16(552); +emit_16(616); +emit_16(551); +emit_16(616); +emit_16(552); +emit_16(617); +emit_16(553); +emit_16(617); +emit_16(552); +emit_16(617); +emit_16(553); +emit_16(618); +emit_16(554); +emit_16(618); +emit_16(553); +emit_16(618); +emit_16(554); +emit_16(619); +emit_16(555); +emit_16(619); +emit_16(554); +emit_16(619); +emit_16(555); +emit_16(620); +emit_16(556); +emit_16(620); +emit_16(555); +emit_16(620); +emit_16(556); +emit_16(621); +emit_16(557); +emit_16(621); +emit_16(556); +emit_16(621); +emit_16(557); +emit_16(622); +emit_16(558); +emit_16(622); +emit_16(557); +emit_16(622); +emit_16(558); +emit_16(623); +emit_16(559); +emit_16(623); +emit_16(558); +emit_16(623); +emit_16(559); +emit_16(624); +emit_16(560); +emit_16(624); +emit_16(559); +emit_16(624); +emit_16(560); +emit_16(625); +emit_16(561); +emit_16(625); +emit_16(560); +emit_16(625); +emit_16(561); +emit_16(626); +emit_16(562); +emit_16(626); +emit_16(561); +emit_16(626); +emit_16(562); +emit_16(627); +emit_16(563); +emit_16(627); +emit_16(562); +emit_16(627); +emit_16(563); +emit_16(628); +emit_16(564); +emit_16(628); +emit_16(563); +emit_16(628); +emit_16(564); +emit_16(629); +emit_16(565); +emit_16(629); +emit_16(564); +emit_16(629); +emit_16(565); +emit_16(630); +emit_16(566); +emit_16(630); +emit_16(565); +emit_16(630); +emit_16(566); +emit_16(631); +emit_16(567); +emit_16(631); +emit_16(566); +emit_16(631); +emit_16(567); +emit_16(632); +emit_16(568); +emit_16(632); +emit_16(567); +emit_16(632); +emit_16(568); +emit_16(633); +emit_16(569); +emit_16(633); +emit_16(568); +emit_16(633); +emit_16(569); +emit_16(634); +emit_16(570); +emit_16(634); +emit_16(569); +emit_16(634); +emit_16(570); +emit_16(635); +emit_16(571); +emit_16(635); +emit_16(570); +emit_16(635); +emit_16(571); +emit_16(636); +emit_16(572); +emit_16(636); +emit_16(571); +emit_16(636); +emit_16(572); +emit_16(637); +emit_16(573); +emit_16(637); +emit_16(572); +emit_16(637); +emit_16(573); +emit_16(638); +emit_16(574); +emit_16(638); +emit_16(573); +emit_16(638); +emit_16(574); +emit_16(639); +emit_16(575); +emit_16(639); +emit_16(574); +emit_16(640); +emit_16(576); +emit_16(641); +emit_16(577); +emit_16(641); +emit_16(576); +emit_16(641); +emit_16(577); +emit_16(642); +emit_16(578); +emit_16(642); +emit_16(577); +emit_16(642); +emit_16(578); +emit_16(643); +emit_16(579); +emit_16(643); +emit_16(578); +emit_16(643); +emit_16(579); +emit_16(644); +emit_16(580); +emit_16(644); +emit_16(579); +emit_16(644); +emit_16(580); +emit_16(645); +emit_16(581); +emit_16(645); +emit_16(580); +emit_16(645); +emit_16(581); +emit_16(646); +emit_16(582); +emit_16(646); +emit_16(581); +emit_16(646); +emit_16(582); +emit_16(647); +emit_16(583); +emit_16(647); +emit_16(582); +emit_16(647); +emit_16(583); +emit_16(648); +emit_16(584); +emit_16(648); +emit_16(583); +emit_16(648); +emit_16(584); +emit_16(649); +emit_16(585); +emit_16(649); +emit_16(584); +emit_16(649); +emit_16(585); +emit_16(650); +emit_16(586); +emit_16(650); +emit_16(585); +emit_16(650); +emit_16(586); +emit_16(651); +emit_16(587); +emit_16(651); +emit_16(586); +emit_16(651); +emit_16(587); +emit_16(652); +emit_16(588); +emit_16(652); +emit_16(587); +emit_16(652); +emit_16(588); +emit_16(653); +emit_16(589); +emit_16(653); +emit_16(588); +emit_16(653); +emit_16(589); +emit_16(654); +emit_16(590); +emit_16(654); +emit_16(589); +emit_16(654); +emit_16(590); +emit_16(655); +emit_16(591); +emit_16(655); +emit_16(590); +emit_16(655); +emit_16(591); +emit_16(656); +emit_16(592); +emit_16(656); +emit_16(591); +emit_16(656); +emit_16(592); +emit_16(657); +emit_16(593); +emit_16(657); +emit_16(592); +emit_16(657); +emit_16(593); +emit_16(658); +emit_16(594); +emit_16(658); +emit_16(593); +emit_16(658); +emit_16(594); +emit_16(659); +emit_16(595); +emit_16(659); +emit_16(594); +emit_16(659); +emit_16(595); +emit_16(660); +emit_16(596); +emit_16(660); +emit_16(595); +emit_16(660); +emit_16(596); +emit_16(661); +emit_16(597); +emit_16(661); +emit_16(596); +emit_16(661); +emit_16(597); +emit_16(662); +emit_16(598); +emit_16(662); +emit_16(597); +emit_16(662); +emit_16(598); +emit_16(663); +emit_16(599); +emit_16(663); +emit_16(598); +emit_16(663); +emit_16(599); +emit_16(664); +emit_16(600); +emit_16(664); +emit_16(599); +emit_16(664); +emit_16(600); +emit_16(665); +emit_16(601); +emit_16(665); +emit_16(600); +emit_16(665); +emit_16(601); +emit_16(666); +emit_16(602); +emit_16(666); +emit_16(601); +emit_16(666); +emit_16(602); +emit_16(667); +emit_16(603); +emit_16(667); +emit_16(602); +emit_16(667); +emit_16(603); +emit_16(668); +emit_16(604); +emit_16(668); +emit_16(603); +emit_16(668); +emit_16(604); +emit_16(669); +emit_16(605); +emit_16(669); +emit_16(604); +emit_16(669); +emit_16(605); +emit_16(670); +emit_16(606); +emit_16(670); +emit_16(605); +emit_16(670); +emit_16(606); +emit_16(671); +emit_16(607); +emit_16(671); +emit_16(606); +emit_16(671); +emit_16(607); +emit_16(672); +emit_16(608); +emit_16(672); +emit_16(607); +emit_16(672); +emit_16(608); +emit_16(673); +emit_16(609); +emit_16(673); +emit_16(608); +emit_16(673); +emit_16(609); +emit_16(674); +emit_16(610); +emit_16(674); +emit_16(609); +emit_16(674); +emit_16(610); +emit_16(675); +emit_16(611); +emit_16(675); +emit_16(610); +emit_16(675); +emit_16(611); +emit_16(676); +emit_16(612); +emit_16(676); +emit_16(611); +emit_16(676); +emit_16(612); +emit_16(677); +emit_16(613); +emit_16(677); +emit_16(612); +emit_16(677); +emit_16(613); +emit_16(678); +emit_16(614); +emit_16(678); +emit_16(613); +emit_16(678); +emit_16(614); +emit_16(679); +emit_16(615); +emit_16(679); +emit_16(614); +emit_16(679); +emit_16(615); +emit_16(680); +emit_16(616); +emit_16(680); +emit_16(615); +emit_16(680); +emit_16(616); +emit_16(681); +emit_16(617); +emit_16(681); +emit_16(616); +emit_16(681); +emit_16(617); +emit_16(682); +emit_16(618); +emit_16(682); +emit_16(617); +emit_16(682); +emit_16(618); +emit_16(683); +emit_16(619); +emit_16(683); +emit_16(618); +emit_16(683); +emit_16(619); +emit_16(684); +emit_16(620); +emit_16(684); +emit_16(619); +emit_16(684); +emit_16(620); +emit_16(685); +emit_16(621); +emit_16(685); +emit_16(620); +emit_16(685); +emit_16(621); +emit_16(686); +emit_16(622); +emit_16(686); +emit_16(621); +emit_16(686); +emit_16(622); +emit_16(687); +emit_16(623); +emit_16(687); +emit_16(622); +emit_16(687); +emit_16(623); +emit_16(688); +emit_16(624); +emit_16(688); +emit_16(623); +emit_16(688); +emit_16(624); +emit_16(689); +emit_16(625); +emit_16(689); +emit_16(624); +emit_16(689); +emit_16(625); +emit_16(690); +emit_16(626); +emit_16(690); +emit_16(625); +emit_16(690); +emit_16(626); +emit_16(691); +emit_16(627); +emit_16(691); +emit_16(626); +emit_16(691); +emit_16(627); +emit_16(692); +emit_16(628); +emit_16(692); +emit_16(627); +emit_16(692); +emit_16(628); +emit_16(693); +emit_16(629); +emit_16(693); +emit_16(628); +emit_16(693); +emit_16(629); +emit_16(694); +emit_16(630); +emit_16(694); +emit_16(629); +emit_16(694); +emit_16(630); +emit_16(695); +emit_16(631); +emit_16(695); +emit_16(630); +emit_16(695); +emit_16(631); +emit_16(696); +emit_16(632); +emit_16(696); +emit_16(631); +emit_16(696); +emit_16(632); +emit_16(697); +emit_16(633); +emit_16(697); +emit_16(632); +emit_16(697); +emit_16(633); +emit_16(698); +emit_16(634); +emit_16(698); +emit_16(633); +emit_16(698); +emit_16(634); +emit_16(699); +emit_16(635); +emit_16(699); +emit_16(634); +emit_16(699); +emit_16(635); +emit_16(700); +emit_16(636); +emit_16(700); +emit_16(635); +emit_16(700); +emit_16(636); +emit_16(701); +emit_16(637); +emit_16(701); +emit_16(636); +emit_16(701); +emit_16(637); +emit_16(702); +emit_16(638); +emit_16(702); +emit_16(637); +emit_16(702); +emit_16(638); +emit_16(703); +emit_16(639); +emit_16(703); +emit_16(638); +emit_16(704); +emit_16(640); +emit_16(705); +emit_16(641); +emit_16(705); +emit_16(640); +emit_16(705); +emit_16(641); +emit_16(706); +emit_16(642); +emit_16(706); +emit_16(641); +emit_16(706); +emit_16(642); +emit_16(707); +emit_16(643); +emit_16(707); +emit_16(642); +emit_16(707); +emit_16(643); +emit_16(708); +emit_16(644); +emit_16(708); +emit_16(643); +emit_16(708); +emit_16(644); +emit_16(709); +emit_16(645); +emit_16(709); +emit_16(644); +emit_16(709); +emit_16(645); +emit_16(710); +emit_16(646); +emit_16(710); +emit_16(645); +emit_16(710); +emit_16(646); +emit_16(711); +emit_16(647); +emit_16(711); +emit_16(646); +emit_16(711); +emit_16(647); +emit_16(712); +emit_16(648); +emit_16(712); +emit_16(647); +emit_16(712); +emit_16(648); +emit_16(713); +emit_16(649); +emit_16(713); +emit_16(648); +emit_16(713); +emit_16(649); +emit_16(714); +emit_16(650); +emit_16(714); +emit_16(649); +emit_16(714); +emit_16(650); +emit_16(715); +emit_16(651); +emit_16(715); +emit_16(650); +emit_16(715); +emit_16(651); +emit_16(716); +emit_16(652); +emit_16(716); +emit_16(651); +emit_16(716); +emit_16(652); +emit_16(717); +emit_16(653); +emit_16(717); +emit_16(652); +emit_16(717); +emit_16(653); +emit_16(718); +emit_16(654); +emit_16(718); +emit_16(653); +emit_16(718); +emit_16(654); +emit_16(719); +emit_16(655); +emit_16(719); +emit_16(654); +emit_16(719); +emit_16(655); +emit_16(720); +emit_16(656); +emit_16(720); +emit_16(655); +emit_16(720); +emit_16(656); +emit_16(721); +emit_16(657); +emit_16(721); +emit_16(656); +emit_16(721); +emit_16(657); +emit_16(722); +emit_16(658); +emit_16(722); +emit_16(657); +emit_16(722); +emit_16(658); +emit_16(723); +emit_16(659); +emit_16(723); +emit_16(658); +emit_16(723); +emit_16(659); +emit_16(724); +emit_16(660); +emit_16(724); +emit_16(659); +emit_16(724); +emit_16(660); +emit_16(725); +emit_16(661); +emit_16(725); +emit_16(660); +emit_16(725); +emit_16(661); +emit_16(726); +emit_16(662); +emit_16(726); +emit_16(661); +emit_16(726); +emit_16(662); +emit_16(727); +emit_16(663); +emit_16(727); +emit_16(662); +emit_16(727); +emit_16(663); +emit_16(728); +emit_16(664); +emit_16(728); +emit_16(663); +emit_16(728); +emit_16(664); +emit_16(729); +emit_16(665); +emit_16(729); +emit_16(664); +emit_16(729); +emit_16(665); +emit_16(730); +emit_16(666); +emit_16(730); +emit_16(665); +emit_16(730); +emit_16(666); +emit_16(731); +emit_16(667); +emit_16(731); +emit_16(666); +emit_16(731); +emit_16(667); +emit_16(732); +emit_16(668); +emit_16(732); +emit_16(667); +emit_16(732); +emit_16(668); +emit_16(733); +emit_16(669); +emit_16(733); +emit_16(668); +emit_16(733); +emit_16(669); +emit_16(734); +emit_16(670); +emit_16(734); +emit_16(669); +emit_16(734); +emit_16(670); +emit_16(735); +emit_16(671); +emit_16(735); +emit_16(670); +emit_16(735); +emit_16(671); +emit_16(736); +emit_16(672); +emit_16(736); +emit_16(671); +emit_16(736); +emit_16(672); +emit_16(737); +emit_16(673); +emit_16(737); +emit_16(672); +emit_16(737); +emit_16(673); +emit_16(738); +emit_16(674); +emit_16(738); +emit_16(673); +emit_16(738); +emit_16(674); +emit_16(739); +emit_16(675); +emit_16(739); +emit_16(674); +emit_16(739); +emit_16(675); +emit_16(740); +emit_16(676); +emit_16(740); +emit_16(675); +emit_16(740); +emit_16(676); +emit_16(741); +emit_16(677); +emit_16(741); +emit_16(676); +emit_16(741); +emit_16(677); +emit_16(742); +emit_16(678); +emit_16(742); +emit_16(677); +emit_16(742); +emit_16(678); +emit_16(743); +emit_16(679); +emit_16(743); +emit_16(678); +emit_16(743); +emit_16(679); +emit_16(744); +emit_16(680); +emit_16(744); +emit_16(679); +emit_16(744); +emit_16(680); +emit_16(745); +emit_16(681); +emit_16(745); +emit_16(680); +emit_16(745); +emit_16(681); +emit_16(746); +emit_16(682); +emit_16(746); +emit_16(681); +emit_16(746); +emit_16(682); +emit_16(747); +emit_16(683); +emit_16(747); +emit_16(682); +emit_16(747); +emit_16(683); +emit_16(748); +emit_16(684); +emit_16(748); +emit_16(683); +emit_16(748); +emit_16(684); +emit_16(749); +emit_16(685); +emit_16(749); +emit_16(684); +emit_16(749); +emit_16(685); +emit_16(750); +emit_16(686); +emit_16(750); +emit_16(685); +emit_16(750); +emit_16(686); +emit_16(751); +emit_16(687); +emit_16(751); +emit_16(686); +emit_16(751); +emit_16(687); +emit_16(752); +emit_16(688); +emit_16(752); +emit_16(687); +emit_16(752); +emit_16(688); +emit_16(753); +emit_16(689); +emit_16(753); +emit_16(688); +emit_16(753); +emit_16(689); +emit_16(754); +emit_16(690); +emit_16(754); +emit_16(689); +emit_16(754); +emit_16(690); +emit_16(755); +emit_16(691); +emit_16(755); +emit_16(690); +emit_16(755); +emit_16(691); +emit_16(756); +emit_16(692); +emit_16(756); +emit_16(691); +emit_16(756); +emit_16(692); +emit_16(757); +emit_16(693); +emit_16(757); +emit_16(692); +emit_16(757); +emit_16(693); +emit_16(758); +emit_16(694); +emit_16(758); +emit_16(693); +emit_16(758); +emit_16(694); +emit_16(759); +emit_16(695); +emit_16(759); +emit_16(694); +emit_16(759); +emit_16(695); +emit_16(760); +emit_16(696); +emit_16(760); +emit_16(695); +emit_16(760); +emit_16(696); +emit_16(761); +emit_16(697); +emit_16(761); +emit_16(696); +emit_16(761); +emit_16(697); +emit_16(762); +emit_16(698); +emit_16(762); +emit_16(697); +emit_16(762); +emit_16(698); +emit_16(763); +emit_16(699); +emit_16(763); +emit_16(698); +emit_16(763); +emit_16(699); +emit_16(764); +emit_16(700); +emit_16(764); +emit_16(699); +emit_16(764); +emit_16(700); +emit_16(765); +emit_16(701); +emit_16(765); +emit_16(700); +emit_16(765); +emit_16(701); +emit_16(766); +emit_16(702); +emit_16(766); +emit_16(701); +emit_16(766); +emit_16(702); +emit_16(767); +emit_16(703); +emit_16(767); +emit_16(702); +emit_16(768); +emit_16(704); +emit_16(769); +emit_16(705); +emit_16(769); +emit_16(704); +emit_16(769); +emit_16(705); +emit_16(770); +emit_16(706); +emit_16(770); +emit_16(705); +emit_16(770); +emit_16(706); +emit_16(771); +emit_16(707); +emit_16(771); +emit_16(706); +emit_16(771); +emit_16(707); +emit_16(772); +emit_16(708); +emit_16(772); +emit_16(707); +emit_16(772); +emit_16(708); +emit_16(773); +emit_16(709); +emit_16(773); +emit_16(708); +emit_16(773); +emit_16(709); +emit_16(774); +emit_16(710); +emit_16(774); +emit_16(709); +emit_16(774); +emit_16(710); +emit_16(775); +emit_16(711); +emit_16(775); +emit_16(710); +emit_16(775); +emit_16(711); +emit_16(776); +emit_16(712); +emit_16(776); +emit_16(711); +emit_16(776); +emit_16(712); +emit_16(777); +emit_16(713); +emit_16(777); +emit_16(712); +emit_16(777); +emit_16(713); +emit_16(778); +emit_16(714); +emit_16(778); +emit_16(713); +emit_16(778); +emit_16(714); +emit_16(779); +emit_16(715); +emit_16(779); +emit_16(714); +emit_16(779); +emit_16(715); +emit_16(780); +emit_16(716); +emit_16(780); +emit_16(715); +emit_16(780); +emit_16(716); +emit_16(781); +emit_16(717); +emit_16(781); +emit_16(716); +emit_16(781); +emit_16(717); +emit_16(782); +emit_16(718); +emit_16(782); +emit_16(717); +emit_16(782); +emit_16(718); +emit_16(783); +emit_16(719); +emit_16(783); +emit_16(718); +emit_16(783); +emit_16(719); +emit_16(784); +emit_16(720); +emit_16(784); +emit_16(719); +emit_16(784); +emit_16(720); +emit_16(785); +emit_16(721); +emit_16(785); +emit_16(720); +emit_16(785); +emit_16(721); +emit_16(786); +emit_16(722); +emit_16(786); +emit_16(721); +emit_16(786); +emit_16(722); +emit_16(787); +emit_16(723); +emit_16(787); +emit_16(722); +emit_16(787); +emit_16(723); +emit_16(788); +emit_16(724); +emit_16(788); +emit_16(723); +emit_16(788); +emit_16(724); +emit_16(789); +emit_16(725); +emit_16(789); +emit_16(724); +emit_16(789); +emit_16(725); +emit_16(790); +emit_16(726); +emit_16(790); +emit_16(725); +emit_16(790); +emit_16(726); +emit_16(791); +emit_16(727); +emit_16(791); +emit_16(726); +emit_16(791); +emit_16(727); +emit_16(792); +emit_16(728); +emit_16(792); +emit_16(727); +emit_16(792); +emit_16(728); +emit_16(793); +emit_16(729); +emit_16(793); +emit_16(728); +emit_16(793); +emit_16(729); +emit_16(794); +emit_16(730); +emit_16(794); +emit_16(729); +emit_16(794); +emit_16(730); +emit_16(795); +emit_16(731); +emit_16(795); +emit_16(730); +emit_16(795); +emit_16(731); +emit_16(796); +emit_16(732); +emit_16(796); +emit_16(731); +emit_16(796); +emit_16(732); +emit_16(797); +emit_16(733); +emit_16(797); +emit_16(732); +emit_16(797); +emit_16(733); +emit_16(798); +emit_16(734); +emit_16(798); +emit_16(733); +emit_16(798); +emit_16(734); +emit_16(799); +emit_16(735); +emit_16(799); +emit_16(734); +emit_16(799); +emit_16(735); +emit_16(800); +emit_16(736); +emit_16(800); +emit_16(735); +emit_16(800); +emit_16(736); +emit_16(801); +emit_16(737); +emit_16(801); +emit_16(736); +emit_16(801); +emit_16(737); +emit_16(802); +emit_16(738); +emit_16(802); +emit_16(737); +emit_16(802); +emit_16(738); +emit_16(803); +emit_16(739); +emit_16(803); +emit_16(738); +emit_16(803); +emit_16(739); +emit_16(804); +emit_16(740); +emit_16(804); +emit_16(739); +emit_16(804); +emit_16(740); +emit_16(805); +emit_16(741); +emit_16(805); +emit_16(740); +emit_16(805); +emit_16(741); +emit_16(806); +emit_16(742); +emit_16(806); +emit_16(741); +emit_16(806); +emit_16(742); +emit_16(807); +emit_16(743); +emit_16(807); +emit_16(742); +emit_16(807); +emit_16(743); +emit_16(808); +emit_16(744); +emit_16(808); +emit_16(743); +emit_16(808); +emit_16(744); +emit_16(809); +emit_16(745); +emit_16(809); +emit_16(744); +emit_16(809); +emit_16(745); +emit_16(810); +emit_16(746); +emit_16(810); +emit_16(745); +emit_16(810); +emit_16(746); +emit_16(811); +emit_16(747); +emit_16(811); +emit_16(746); +emit_16(811); +emit_16(747); +emit_16(812); +emit_16(748); +emit_16(812); +emit_16(747); +emit_16(812); +emit_16(748); +emit_16(813); +emit_16(749); +emit_16(813); +emit_16(748); +emit_16(813); +emit_16(749); +emit_16(814); +emit_16(750); +emit_16(814); +emit_16(749); +emit_16(814); +emit_16(750); +emit_16(815); +emit_16(751); +emit_16(815); +emit_16(750); +emit_16(815); +emit_16(751); +emit_16(816); +emit_16(752); +emit_16(816); +emit_16(751); +emit_16(816); +emit_16(752); +emit_16(817); +emit_16(753); +emit_16(817); +emit_16(752); +emit_16(817); +emit_16(753); +emit_16(818); +emit_16(754); +emit_16(818); +emit_16(753); +emit_16(818); +emit_16(754); +emit_16(819); +emit_16(755); +emit_16(819); +emit_16(754); +emit_16(819); +emit_16(755); +emit_16(820); +emit_16(756); +emit_16(820); +emit_16(755); +emit_16(820); +emit_16(756); +emit_16(821); +emit_16(757); +emit_16(821); +emit_16(756); +emit_16(821); +emit_16(757); +emit_16(822); +emit_16(758); +emit_16(822); +emit_16(757); +emit_16(822); +emit_16(758); +emit_16(823); +emit_16(759); +emit_16(823); +emit_16(758); +emit_16(823); +emit_16(759); +emit_16(824); +emit_16(760); +emit_16(824); +emit_16(759); +emit_16(824); +emit_16(760); +emit_16(825); +emit_16(761); +emit_16(825); +emit_16(760); +emit_16(825); +emit_16(761); +emit_16(826); +emit_16(762); +emit_16(826); +emit_16(761); +emit_16(826); +emit_16(762); +emit_16(827); +emit_16(763); +emit_16(827); +emit_16(762); +emit_16(827); +emit_16(763); +emit_16(828); +emit_16(764); +emit_16(828); +emit_16(763); +emit_16(828); +emit_16(764); +emit_16(829); +emit_16(765); +emit_16(829); +emit_16(764); +emit_16(829); +emit_16(765); +emit_16(830); +emit_16(766); +emit_16(830); +emit_16(765); +emit_16(830); +emit_16(766); +emit_16(831); +emit_16(767); +emit_16(831); +emit_16(766); +emit_16(832); +emit_16(768); +emit_16(833); +emit_16(769); +emit_16(833); +emit_16(768); +emit_16(833); +emit_16(769); +emit_16(834); +emit_16(770); +emit_16(834); +emit_16(769); +emit_16(834); +emit_16(770); +emit_16(835); +emit_16(771); +emit_16(835); +emit_16(770); +emit_16(835); +emit_16(771); +emit_16(836); +emit_16(772); +emit_16(836); +emit_16(771); +emit_16(836); +emit_16(772); +emit_16(837); +emit_16(773); +emit_16(837); +emit_16(772); +emit_16(837); +emit_16(773); +emit_16(838); +emit_16(774); +emit_16(838); +emit_16(773); +emit_16(838); +emit_16(774); +emit_16(839); +emit_16(775); +emit_16(839); +emit_16(774); +emit_16(839); +emit_16(775); +emit_16(840); +emit_16(776); +emit_16(840); +emit_16(775); +emit_16(840); +emit_16(776); +emit_16(841); +emit_16(777); +emit_16(841); +emit_16(776); +emit_16(841); +emit_16(777); +emit_16(842); +emit_16(778); +emit_16(842); +emit_16(777); +emit_16(842); +emit_16(778); +emit_16(843); +emit_16(779); +emit_16(843); +emit_16(778); +emit_16(843); +emit_16(779); +emit_16(844); +emit_16(780); +emit_16(844); +emit_16(779); +emit_16(844); +emit_16(780); +emit_16(845); +emit_16(781); +emit_16(845); +emit_16(780); +emit_16(845); +emit_16(781); +emit_16(846); +emit_16(782); +emit_16(846); +emit_16(781); +emit_16(846); +emit_16(782); +emit_16(847); +emit_16(783); +emit_16(847); +emit_16(782); +emit_16(847); +emit_16(783); +emit_16(848); +emit_16(784); +emit_16(848); +emit_16(783); +emit_16(848); +emit_16(784); +emit_16(849); +emit_16(785); +emit_16(849); +emit_16(784); +emit_16(849); +emit_16(785); +emit_16(850); +emit_16(786); +emit_16(850); +emit_16(785); +emit_16(850); +emit_16(786); +emit_16(851); +emit_16(787); +emit_16(851); +emit_16(786); +emit_16(851); +emit_16(787); +emit_16(852); +emit_16(788); +emit_16(852); +emit_16(787); +emit_16(852); +emit_16(788); +emit_16(853); +emit_16(789); +emit_16(853); +emit_16(788); +emit_16(853); +emit_16(789); +emit_16(854); +emit_16(790); +emit_16(854); +emit_16(789); +emit_16(854); +emit_16(790); +emit_16(855); +emit_16(791); +emit_16(855); +emit_16(790); +emit_16(855); +emit_16(791); +emit_16(856); +emit_16(792); +emit_16(856); +emit_16(791); +emit_16(856); +emit_16(792); +emit_16(857); +emit_16(793); +emit_16(857); +emit_16(792); +emit_16(857); +emit_16(793); +emit_16(858); +emit_16(794); +emit_16(858); +emit_16(793); +emit_16(858); +emit_16(794); +emit_16(859); +emit_16(795); +emit_16(859); +emit_16(794); +emit_16(859); +emit_16(795); +emit_16(860); +emit_16(796); +emit_16(860); +emit_16(795); +emit_16(860); +emit_16(796); +emit_16(861); +emit_16(797); +emit_16(861); +emit_16(796); +emit_16(861); +emit_16(797); +emit_16(862); +emit_16(798); +emit_16(862); +emit_16(797); +emit_16(862); +emit_16(798); +emit_16(863); +emit_16(799); +emit_16(863); +emit_16(798); +emit_16(863); +emit_16(799); +emit_16(864); +emit_16(800); +emit_16(864); +emit_16(799); +emit_16(864); +emit_16(800); +emit_16(865); +emit_16(801); +emit_16(865); +emit_16(800); +emit_16(865); +emit_16(801); +emit_16(866); +emit_16(802); +emit_16(866); +emit_16(801); +emit_16(866); +emit_16(802); +emit_16(867); +emit_16(803); +emit_16(867); +emit_16(802); +emit_16(867); +emit_16(803); +emit_16(868); +emit_16(804); +emit_16(868); +emit_16(803); +emit_16(868); +emit_16(804); +emit_16(869); +emit_16(805); +emit_16(869); +emit_16(804); +emit_16(869); +emit_16(805); +emit_16(870); +emit_16(806); +emit_16(870); +emit_16(805); +emit_16(870); +emit_16(806); +emit_16(871); +emit_16(807); +emit_16(871); +emit_16(806); +emit_16(871); +emit_16(807); +emit_16(872); +emit_16(808); +emit_16(872); +emit_16(807); +emit_16(872); +emit_16(808); +emit_16(873); +emit_16(809); +emit_16(873); +emit_16(808); +emit_16(873); +emit_16(809); +emit_16(874); +emit_16(810); +emit_16(874); +emit_16(809); +emit_16(874); +emit_16(810); +emit_16(875); +emit_16(811); +emit_16(875); +emit_16(810); +emit_16(875); +emit_16(811); +emit_16(876); +emit_16(812); +emit_16(876); +emit_16(811); +emit_16(876); +emit_16(812); +emit_16(877); +emit_16(813); +emit_16(877); +emit_16(812); +emit_16(877); +emit_16(813); +emit_16(878); +emit_16(814); +emit_16(878); +emit_16(813); +emit_16(878); +emit_16(814); +emit_16(879); +emit_16(815); +emit_16(879); +emit_16(814); +emit_16(879); +emit_16(815); +emit_16(880); +emit_16(816); +emit_16(880); +emit_16(815); +emit_16(880); +emit_16(816); +emit_16(881); +emit_16(817); +emit_16(881); +emit_16(816); +emit_16(881); +emit_16(817); +emit_16(882); +emit_16(818); +emit_16(882); +emit_16(817); +emit_16(882); +emit_16(818); +emit_16(883); +emit_16(819); +emit_16(883); +emit_16(818); +emit_16(883); +emit_16(819); +emit_16(884); +emit_16(820); +emit_16(884); +emit_16(819); +emit_16(884); +emit_16(820); +emit_16(885); +emit_16(821); +emit_16(885); +emit_16(820); +emit_16(885); +emit_16(821); +emit_16(886); +emit_16(822); +emit_16(886); +emit_16(821); +emit_16(886); +emit_16(822); +emit_16(887); +emit_16(823); +emit_16(887); +emit_16(822); +emit_16(887); +emit_16(823); +emit_16(888); +emit_16(824); +emit_16(888); +emit_16(823); +emit_16(888); +emit_16(824); +emit_16(889); +emit_16(825); +emit_16(889); +emit_16(824); +emit_16(889); +emit_16(825); +emit_16(890); +emit_16(826); +emit_16(890); +emit_16(825); +emit_16(890); +emit_16(826); +emit_16(891); +emit_16(827); +emit_16(891); +emit_16(826); +emit_16(891); +emit_16(827); +emit_16(892); +emit_16(828); +emit_16(892); +emit_16(827); +emit_16(892); +emit_16(828); +emit_16(893); +emit_16(829); +emit_16(893); +emit_16(828); +emit_16(893); +emit_16(829); +emit_16(894); +emit_16(830); +emit_16(894); +emit_16(829); +emit_16(894); +emit_16(830); +emit_16(895); +emit_16(831); +emit_16(895); +emit_16(830); +emit_16(896); +emit_16(832); +emit_16(897); +emit_16(833); +emit_16(897); +emit_16(832); +emit_16(897); +emit_16(833); +emit_16(898); +emit_16(834); +emit_16(898); +emit_16(833); +emit_16(898); +emit_16(834); +emit_16(899); +emit_16(835); +emit_16(899); +emit_16(834); +emit_16(899); +emit_16(835); +emit_16(900); +emit_16(836); +emit_16(900); +emit_16(835); +emit_16(900); +emit_16(836); +emit_16(901); +emit_16(837); +emit_16(901); +emit_16(836); +emit_16(901); +emit_16(837); +emit_16(902); +emit_16(838); +emit_16(902); +emit_16(837); +emit_16(902); +emit_16(838); +emit_16(903); +emit_16(839); +emit_16(903); +emit_16(838); +emit_16(903); +emit_16(839); +emit_16(904); +emit_16(840); +emit_16(904); +emit_16(839); +emit_16(904); +emit_16(840); +emit_16(905); +emit_16(841); +emit_16(905); +emit_16(840); +emit_16(905); +emit_16(841); +emit_16(906); +emit_16(842); +emit_16(906); +emit_16(841); +emit_16(906); +emit_16(842); +emit_16(907); +emit_16(843); +emit_16(907); +emit_16(842); +emit_16(907); +emit_16(843); +emit_16(908); +emit_16(844); +emit_16(908); +emit_16(843); +emit_16(908); +emit_16(844); +emit_16(909); +emit_16(845); +emit_16(909); +emit_16(844); +emit_16(909); +emit_16(845); +emit_16(910); +emit_16(846); +emit_16(910); +emit_16(845); +emit_16(910); +emit_16(846); +emit_16(911); +emit_16(847); +emit_16(911); +emit_16(846); +emit_16(911); +emit_16(847); +emit_16(912); +emit_16(848); +emit_16(912); +emit_16(847); +emit_16(912); +emit_16(848); +emit_16(913); +emit_16(849); +emit_16(913); +emit_16(848); +emit_16(913); +emit_16(849); +emit_16(914); +emit_16(850); +emit_16(914); +emit_16(849); +emit_16(914); +emit_16(850); +emit_16(915); +emit_16(851); +emit_16(915); +emit_16(850); +emit_16(915); +emit_16(851); +emit_16(916); +emit_16(852); +emit_16(916); +emit_16(851); +emit_16(916); +emit_16(852); +emit_16(917); +emit_16(853); +emit_16(917); +emit_16(852); +emit_16(917); +emit_16(853); +emit_16(918); +emit_16(854); +emit_16(918); +emit_16(853); +emit_16(918); +emit_16(854); +emit_16(919); +emit_16(855); +emit_16(919); +emit_16(854); +emit_16(919); +emit_16(855); +emit_16(920); +emit_16(856); +emit_16(920); +emit_16(855); +emit_16(920); +emit_16(856); +emit_16(921); +emit_16(857); +emit_16(921); +emit_16(856); +emit_16(921); +emit_16(857); +emit_16(922); +emit_16(858); +emit_16(922); +emit_16(857); +emit_16(922); +emit_16(858); +emit_16(923); +emit_16(859); +emit_16(923); +emit_16(858); +emit_16(923); +emit_16(859); +emit_16(924); +emit_16(860); +emit_16(924); +emit_16(859); +emit_16(924); +emit_16(860); +emit_16(925); +emit_16(861); +emit_16(925); +emit_16(860); +emit_16(925); +emit_16(861); +emit_16(926); +emit_16(862); +emit_16(926); +emit_16(861); +emit_16(926); +emit_16(862); +emit_16(927); +emit_16(863); +emit_16(927); +emit_16(862); +emit_16(927); +emit_16(863); +emit_16(928); +emit_16(864); +emit_16(928); +emit_16(863); +emit_16(928); +emit_16(864); +emit_16(929); +emit_16(865); +emit_16(929); +emit_16(864); +emit_16(929); +emit_16(865); +emit_16(930); +emit_16(866); +emit_16(930); +emit_16(865); +emit_16(930); +emit_16(866); +emit_16(931); +emit_16(867); +emit_16(931); +emit_16(866); +emit_16(931); +emit_16(867); +emit_16(932); +emit_16(868); +emit_16(932); +emit_16(867); +emit_16(932); +emit_16(868); +emit_16(933); +emit_16(869); +emit_16(933); +emit_16(868); +emit_16(933); +emit_16(869); +emit_16(934); +emit_16(870); +emit_16(934); +emit_16(869); +emit_16(934); +emit_16(870); +emit_16(935); +emit_16(871); +emit_16(935); +emit_16(870); +emit_16(935); +emit_16(871); +emit_16(936); +emit_16(872); +emit_16(936); +emit_16(871); +emit_16(936); +emit_16(872); +emit_16(937); +emit_16(873); +emit_16(937); +emit_16(872); +emit_16(937); +emit_16(873); +emit_16(938); +emit_16(874); +emit_16(938); +emit_16(873); +emit_16(938); +emit_16(874); +emit_16(939); +emit_16(875); +emit_16(939); +emit_16(874); +emit_16(939); +emit_16(875); +emit_16(940); +emit_16(876); +emit_16(940); +emit_16(875); +emit_16(940); +emit_16(876); +emit_16(941); +emit_16(877); +emit_16(941); +emit_16(876); +emit_16(941); +emit_16(877); +emit_16(942); +emit_16(878); +emit_16(942); +emit_16(877); +emit_16(942); +emit_16(878); +emit_16(943); +emit_16(879); +emit_16(943); +emit_16(878); +emit_16(943); +emit_16(879); +emit_16(944); +emit_16(880); +emit_16(944); +emit_16(879); +emit_16(944); +emit_16(880); +emit_16(945); +emit_16(881); +emit_16(945); +emit_16(880); +emit_16(945); +emit_16(881); +emit_16(946); +emit_16(882); +emit_16(946); +emit_16(881); +emit_16(946); +emit_16(882); +emit_16(947); +emit_16(883); +emit_16(947); +emit_16(882); +emit_16(947); +emit_16(883); +emit_16(948); +emit_16(884); +emit_16(948); +emit_16(883); +emit_16(948); +emit_16(884); +emit_16(949); +emit_16(885); +emit_16(949); +emit_16(884); +emit_16(949); +emit_16(885); +emit_16(950); +emit_16(886); +emit_16(950); +emit_16(885); +emit_16(950); +emit_16(886); +emit_16(951); +emit_16(887); +emit_16(951); +emit_16(886); +emit_16(951); +emit_16(887); +emit_16(952); +emit_16(888); +emit_16(952); +emit_16(887); +emit_16(952); +emit_16(888); +emit_16(953); +emit_16(889); +emit_16(953); +emit_16(888); +emit_16(953); +emit_16(889); +emit_16(954); +emit_16(890); +emit_16(954); +emit_16(889); +emit_16(954); +emit_16(890); +emit_16(955); +emit_16(891); +emit_16(955); +emit_16(890); +emit_16(955); +emit_16(891); +emit_16(956); +emit_16(892); +emit_16(956); +emit_16(891); +emit_16(956); +emit_16(892); +emit_16(957); +emit_16(893); +emit_16(957); +emit_16(892); +emit_16(957); +emit_16(893); +emit_16(958); +emit_16(894); +emit_16(958); +emit_16(893); +emit_16(958); +emit_16(894); +emit_16(959); +emit_16(895); +emit_16(959); +emit_16(894); +emit_16(960); +emit_16(896); +emit_16(961); +emit_16(897); +emit_16(961); +emit_16(896); +emit_16(961); +emit_16(897); +emit_16(962); +emit_16(898); +emit_16(962); +emit_16(897); +emit_16(962); +emit_16(898); +emit_16(963); +emit_16(899); +emit_16(963); +emit_16(898); +emit_16(963); +emit_16(899); +emit_16(964); +emit_16(900); +emit_16(964); +emit_16(899); +emit_16(964); +emit_16(900); +emit_16(965); +emit_16(901); +emit_16(965); +emit_16(900); +emit_16(965); +emit_16(901); +emit_16(966); +emit_16(902); +emit_16(966); +emit_16(901); +emit_16(966); +emit_16(902); +emit_16(967); +emit_16(903); +emit_16(967); +emit_16(902); +emit_16(967); +emit_16(903); +emit_16(968); +emit_16(904); +emit_16(968); +emit_16(903); +emit_16(968); +emit_16(904); +emit_16(969); +emit_16(905); +emit_16(969); +emit_16(904); +emit_16(969); +emit_16(905); +emit_16(970); +emit_16(906); +emit_16(970); +emit_16(905); +emit_16(970); +emit_16(906); +emit_16(971); +emit_16(907); +emit_16(971); +emit_16(906); +emit_16(971); +emit_16(907); +emit_16(972); +emit_16(908); +emit_16(972); +emit_16(907); +emit_16(972); +emit_16(908); +emit_16(973); +emit_16(909); +emit_16(973); +emit_16(908); +emit_16(973); +emit_16(909); +emit_16(974); +emit_16(910); +emit_16(974); +emit_16(909); +emit_16(974); +emit_16(910); +emit_16(975); +emit_16(911); +emit_16(975); +emit_16(910); +emit_16(975); +emit_16(911); +emit_16(976); +emit_16(912); +emit_16(976); +emit_16(911); +emit_16(976); +emit_16(912); +emit_16(977); +emit_16(913); +emit_16(977); +emit_16(912); +emit_16(977); +emit_16(913); +emit_16(978); +emit_16(914); +emit_16(978); +emit_16(913); +emit_16(978); +emit_16(914); +emit_16(979); +emit_16(915); +emit_16(979); +emit_16(914); +emit_16(979); +emit_16(915); +emit_16(980); +emit_16(916); +emit_16(980); +emit_16(915); +emit_16(980); +emit_16(916); +emit_16(981); +emit_16(917); +emit_16(981); +emit_16(916); +emit_16(981); +emit_16(917); +emit_16(982); +emit_16(918); +emit_16(982); +emit_16(917); +emit_16(982); +emit_16(918); +emit_16(983); +emit_16(919); +emit_16(983); +emit_16(918); +emit_16(983); +emit_16(919); +emit_16(984); +emit_16(920); +emit_16(984); +emit_16(919); +emit_16(984); +emit_16(920); +emit_16(985); +emit_16(921); +emit_16(985); +emit_16(920); +emit_16(985); +emit_16(921); +emit_16(986); +emit_16(922); +emit_16(986); +emit_16(921); +emit_16(986); +emit_16(922); +emit_16(987); +emit_16(923); +emit_16(987); +emit_16(922); +emit_16(987); +emit_16(923); +emit_16(988); +emit_16(924); +emit_16(988); +emit_16(923); +emit_16(988); +emit_16(924); +emit_16(989); +emit_16(925); +emit_16(989); +emit_16(924); +emit_16(989); +emit_16(925); +emit_16(990); +emit_16(926); +emit_16(990); +emit_16(925); +emit_16(990); +emit_16(926); +emit_16(991); +emit_16(927); +emit_16(991); +emit_16(926); +emit_16(991); +emit_16(927); +emit_16(992); +emit_16(928); +emit_16(992); +emit_16(927); +emit_16(992); +emit_16(928); +emit_16(993); +emit_16(929); +emit_16(993); +emit_16(928); +emit_16(993); +emit_16(929); +emit_16(994); +emit_16(930); +emit_16(994); +emit_16(929); +emit_16(994); +emit_16(930); +emit_16(995); +emit_16(931); +emit_16(995); +emit_16(930); +emit_16(995); +emit_16(931); +emit_16(996); +emit_16(932); +emit_16(996); +emit_16(931); +emit_16(996); +emit_16(932); +emit_16(997); +emit_16(933); +emit_16(997); +emit_16(932); +emit_16(997); +emit_16(933); +emit_16(998); +emit_16(934); +emit_16(998); +emit_16(933); +emit_16(998); +emit_16(934); +emit_16(999); +emit_16(935); +emit_16(999); +emit_16(934); +emit_16(999); +emit_16(935); +emit_16(1000); +emit_16(936); +emit_16(1000); +emit_16(935); +emit_16(1000); +emit_16(936); +emit_16(1001); +emit_16(937); +emit_16(1001); +emit_16(936); +emit_16(1001); +emit_16(937); +emit_16(1002); +emit_16(938); +emit_16(1002); +emit_16(937); +emit_16(1002); +emit_16(938); +emit_16(1003); +emit_16(939); +emit_16(1003); +emit_16(938); +emit_16(1003); +emit_16(939); +emit_16(1004); +emit_16(940); +emit_16(1004); +emit_16(939); +emit_16(1004); +emit_16(940); +emit_16(1005); +emit_16(941); +emit_16(1005); +emit_16(940); +emit_16(1005); +emit_16(941); +emit_16(1006); +emit_16(942); +emit_16(1006); +emit_16(941); +emit_16(1006); +emit_16(942); +emit_16(1007); +emit_16(943); +emit_16(1007); +emit_16(942); +emit_16(1007); +emit_16(943); +emit_16(1008); +emit_16(944); +emit_16(1008); +emit_16(943); +emit_16(1008); +emit_16(944); +emit_16(1009); +emit_16(945); +emit_16(1009); +emit_16(944); +emit_16(1009); +emit_16(945); +emit_16(1010); +emit_16(946); +emit_16(1010); +emit_16(945); +emit_16(1010); +emit_16(946); +emit_16(1011); +emit_16(947); +emit_16(1011); +emit_16(946); +emit_16(1011); +emit_16(947); +emit_16(1012); +emit_16(948); +emit_16(1012); +emit_16(947); +emit_16(1012); +emit_16(948); +emit_16(1013); +emit_16(949); +emit_16(1013); +emit_16(948); +emit_16(1013); +emit_16(949); +emit_16(1014); +emit_16(950); +emit_16(1014); +emit_16(949); +emit_16(1014); +emit_16(950); +emit_16(1015); +emit_16(951); +emit_16(1015); +emit_16(950); +emit_16(1015); +emit_16(951); +emit_16(1016); +emit_16(952); +emit_16(1016); +emit_16(951); +emit_16(1016); +emit_16(952); +emit_16(1017); +emit_16(953); +emit_16(1017); +emit_16(952); +emit_16(1017); +emit_16(953); +emit_16(1018); +emit_16(954); +emit_16(1018); +emit_16(953); +emit_16(1018); +emit_16(954); +emit_16(1019); +emit_16(955); +emit_16(1019); +emit_16(954); +emit_16(1019); +emit_16(955); +emit_16(1020); +emit_16(956); +emit_16(1020); +emit_16(955); +emit_16(1020); +emit_16(956); +emit_16(1021); +emit_16(957); +emit_16(1021); +emit_16(956); +emit_16(1021); +emit_16(957); +emit_16(1022); +emit_16(958); +emit_16(1022); +emit_16(957); +emit_16(1022); +emit_16(958); +emit_16(1023); +emit_16(959); +emit_16(1023); +emit_16(958); +emit_16(1024); +emit_16(960); +emit_16(1025); +emit_16(961); +emit_16(1025); +emit_16(960); +emit_16(1025); +emit_16(961); +emit_16(1026); +emit_16(962); +emit_16(1026); +emit_16(961); +emit_16(1026); +emit_16(962); +emit_16(1027); +emit_16(963); +emit_16(1027); +emit_16(962); +emit_16(1027); +emit_16(963); +emit_16(1028); +emit_16(964); +emit_16(1028); +emit_16(963); +emit_16(1028); +emit_16(964); +emit_16(1029); +emit_16(965); +emit_16(1029); +emit_16(964); +emit_16(1029); +emit_16(965); +emit_16(1030); +emit_16(966); +emit_16(1030); +emit_16(965); +emit_16(1030); +emit_16(966); +emit_16(1031); +emit_16(967); +emit_16(1031); +emit_16(966); +emit_16(1031); +emit_16(967); +emit_16(1032); +emit_16(968); +emit_16(1032); +emit_16(967); +emit_16(1032); +emit_16(968); +emit_16(1033); +emit_16(969); +emit_16(1033); +emit_16(968); +emit_16(1033); +emit_16(969); +emit_16(1034); +emit_16(970); +emit_16(1034); +emit_16(969); +emit_16(1034); +emit_16(970); +emit_16(1035); +emit_16(971); +emit_16(1035); +emit_16(970); +emit_16(1035); +emit_16(971); +emit_16(1036); +emit_16(972); +emit_16(1036); +emit_16(971); +emit_16(1036); +emit_16(972); +emit_16(1037); +emit_16(973); +emit_16(1037); +emit_16(972); +emit_16(1037); +emit_16(973); +emit_16(1038); +emit_16(974); +emit_16(1038); +emit_16(973); +emit_16(1038); +emit_16(974); +emit_16(1039); +emit_16(975); +emit_16(1039); +emit_16(974); +emit_16(1039); +emit_16(975); +emit_16(1040); +emit_16(976); +emit_16(1040); +emit_16(975); +emit_16(1040); +emit_16(976); +emit_16(1041); +emit_16(977); +emit_16(1041); +emit_16(976); +emit_16(1041); +emit_16(977); +emit_16(1042); +emit_16(978); +emit_16(1042); +emit_16(977); +emit_16(1042); +emit_16(978); +emit_16(1043); +emit_16(979); +emit_16(1043); +emit_16(978); +emit_16(1043); +emit_16(979); +emit_16(1044); +emit_16(980); +emit_16(1044); +emit_16(979); +emit_16(1044); +emit_16(980); +emit_16(1045); +emit_16(981); +emit_16(1045); +emit_16(980); +emit_16(1045); +emit_16(981); +emit_16(1046); +emit_16(982); +emit_16(1046); +emit_16(981); +emit_16(1046); +emit_16(982); +emit_16(1047); +emit_16(983); +emit_16(1047); +emit_16(982); +emit_16(1047); +emit_16(983); +emit_16(1048); +emit_16(984); +emit_16(1048); +emit_16(983); +emit_16(1048); +emit_16(984); +emit_16(1049); +emit_16(985); +emit_16(1049); +emit_16(984); +emit_16(1049); +emit_16(985); +emit_16(1050); +emit_16(986); +emit_16(1050); +emit_16(985); +emit_16(1050); +emit_16(986); +emit_16(1051); +emit_16(987); +emit_16(1051); +emit_16(986); +emit_16(1051); +emit_16(987); +emit_16(1052); +emit_16(988); +emit_16(1052); +emit_16(987); +emit_16(1052); +emit_16(988); +emit_16(1053); +emit_16(989); +emit_16(1053); +emit_16(988); +emit_16(1053); +emit_16(989); +emit_16(1054); +emit_16(990); +emit_16(1054); +emit_16(989); +emit_16(1054); +emit_16(990); +emit_16(1055); +emit_16(991); +emit_16(1055); +emit_16(990); +emit_16(1055); +emit_16(991); +emit_16(1056); +emit_16(992); +emit_16(1056); +emit_16(991); +emit_16(1056); +emit_16(992); +emit_16(1057); +emit_16(993); +emit_16(1057); +emit_16(992); +emit_16(1057); +emit_16(993); +emit_16(1058); +emit_16(994); +emit_16(1058); +emit_16(993); +emit_16(1058); +emit_16(994); +emit_16(1059); +emit_16(995); +emit_16(1059); +emit_16(994); +emit_16(1059); +emit_16(995); +emit_16(1060); +emit_16(996); +emit_16(1060); +emit_16(995); +emit_16(1060); +emit_16(996); +emit_16(1061); +emit_16(997); +emit_16(1061); +emit_16(996); +emit_16(1061); +emit_16(997); +emit_16(1062); +emit_16(998); +emit_16(1062); +emit_16(997); +emit_16(1062); +emit_16(998); +emit_16(1063); +emit_16(999); +emit_16(1063); +emit_16(998); +emit_16(1063); +emit_16(999); +emit_16(1064); +emit_16(1000); +emit_16(1064); +emit_16(999); +emit_16(1064); +emit_16(1000); +emit_16(1065); +emit_16(1001); +emit_16(1065); +emit_16(1000); +emit_16(1065); +emit_16(1001); +emit_16(1066); +emit_16(1002); +emit_16(1066); +emit_16(1001); +emit_16(1066); +emit_16(1002); +emit_16(1067); +emit_16(1003); +emit_16(1067); +emit_16(1002); +emit_16(1067); +emit_16(1003); +emit_16(1068); +emit_16(1004); +emit_16(1068); +emit_16(1003); +emit_16(1068); +emit_16(1004); +emit_16(1069); +emit_16(1005); +emit_16(1069); +emit_16(1004); +emit_16(1069); +emit_16(1005); +emit_16(1070); +emit_16(1006); +emit_16(1070); +emit_16(1005); +emit_16(1070); +emit_16(1006); +emit_16(1071); +emit_16(1007); +emit_16(1071); +emit_16(1006); +emit_16(1071); +emit_16(1007); +emit_16(1072); +emit_16(1008); +emit_16(1072); +emit_16(1007); +emit_16(1072); +emit_16(1008); +emit_16(1073); +emit_16(1009); +emit_16(1073); +emit_16(1008); +emit_16(1073); +emit_16(1009); +emit_16(1074); +emit_16(1010); +emit_16(1074); +emit_16(1009); +emit_16(1074); +emit_16(1010); +emit_16(1075); +emit_16(1011); +emit_16(1075); +emit_16(1010); +emit_16(1075); +emit_16(1011); +emit_16(1076); +emit_16(1012); +emit_16(1076); +emit_16(1011); +emit_16(1076); +emit_16(1012); +emit_16(1077); +emit_16(1013); +emit_16(1077); +emit_16(1012); +emit_16(1077); +emit_16(1013); +emit_16(1078); +emit_16(1014); +emit_16(1078); +emit_16(1013); +emit_16(1078); +emit_16(1014); +emit_16(1079); +emit_16(1015); +emit_16(1079); +emit_16(1014); +emit_16(1079); +emit_16(1015); +emit_16(1080); +emit_16(1016); +emit_16(1080); +emit_16(1015); +emit_16(1080); +emit_16(1016); +emit_16(1081); +emit_16(1017); +emit_16(1081); +emit_16(1016); +emit_16(1081); +emit_16(1017); +emit_16(1082); +emit_16(1018); +emit_16(1082); +emit_16(1017); +emit_16(1082); +emit_16(1018); +emit_16(1083); +emit_16(1019); +emit_16(1083); +emit_16(1018); +emit_16(1083); +emit_16(1019); +emit_16(1084); +emit_16(1020); +emit_16(1084); +emit_16(1019); +emit_16(1084); +emit_16(1020); +emit_16(1085); +emit_16(1021); +emit_16(1085); +emit_16(1020); +emit_16(1085); +emit_16(1021); +emit_16(1086); +emit_16(1022); +emit_16(1086); +emit_16(1021); +emit_16(1086); +emit_16(1022); +emit_16(1087); +emit_16(1023); +emit_16(1087); +emit_16(1022); +emit_16(1088); +emit_16(1024); +emit_16(1089); +emit_16(1025); +emit_16(1089); +emit_16(1024); +emit_16(1089); +emit_16(1025); +emit_16(1090); +emit_16(1026); +emit_16(1090); +emit_16(1025); +emit_16(1090); +emit_16(1026); +emit_16(1091); +emit_16(1027); +emit_16(1091); +emit_16(1026); +emit_16(1091); +emit_16(1027); +emit_16(1092); +emit_16(1028); +emit_16(1092); +emit_16(1027); +emit_16(1092); +emit_16(1028); +emit_16(1093); +emit_16(1029); +emit_16(1093); +emit_16(1028); +emit_16(1093); +emit_16(1029); +emit_16(1094); +emit_16(1030); +emit_16(1094); +emit_16(1029); +emit_16(1094); +emit_16(1030); +emit_16(1095); +emit_16(1031); +emit_16(1095); +emit_16(1030); +emit_16(1095); +emit_16(1031); +emit_16(1096); +emit_16(1032); +emit_16(1096); +emit_16(1031); +emit_16(1096); +emit_16(1032); +emit_16(1097); +emit_16(1033); +emit_16(1097); +emit_16(1032); +emit_16(1097); +emit_16(1033); +emit_16(1098); +emit_16(1034); +emit_16(1098); +emit_16(1033); +emit_16(1098); +emit_16(1034); +emit_16(1099); +emit_16(1035); +emit_16(1099); +emit_16(1034); +emit_16(1099); +emit_16(1035); +emit_16(1100); +emit_16(1036); +emit_16(1100); +emit_16(1035); +emit_16(1100); +emit_16(1036); +emit_16(1101); +emit_16(1037); +emit_16(1101); +emit_16(1036); +emit_16(1101); +emit_16(1037); +emit_16(1102); +emit_16(1038); +emit_16(1102); +emit_16(1037); +emit_16(1102); +emit_16(1038); +emit_16(1103); +emit_16(1039); +emit_16(1103); +emit_16(1038); +emit_16(1103); +emit_16(1039); +emit_16(1104); +emit_16(1040); +emit_16(1104); +emit_16(1039); +emit_16(1104); +emit_16(1040); +emit_16(1105); +emit_16(1041); +emit_16(1105); +emit_16(1040); +emit_16(1105); +emit_16(1041); +emit_16(1106); +emit_16(1042); +emit_16(1106); +emit_16(1041); +emit_16(1106); +emit_16(1042); +emit_16(1107); +emit_16(1043); +emit_16(1107); +emit_16(1042); +emit_16(1107); +emit_16(1043); +emit_16(1108); +emit_16(1044); +emit_16(1108); +emit_16(1043); +emit_16(1108); +emit_16(1044); +emit_16(1109); +emit_16(1045); +emit_16(1109); +emit_16(1044); +emit_16(1109); +emit_16(1045); +emit_16(1110); +emit_16(1046); +emit_16(1110); +emit_16(1045); +emit_16(1110); +emit_16(1046); +emit_16(1111); +emit_16(1047); +emit_16(1111); +emit_16(1046); +emit_16(1111); +emit_16(1047); +emit_16(1112); +emit_16(1048); +emit_16(1112); +emit_16(1047); +emit_16(1112); +emit_16(1048); +emit_16(1113); +emit_16(1049); +emit_16(1113); +emit_16(1048); +emit_16(1113); +emit_16(1049); +emit_16(1114); +emit_16(1050); +emit_16(1114); +emit_16(1049); +emit_16(1114); +emit_16(1050); +emit_16(1115); +emit_16(1051); +emit_16(1115); +emit_16(1050); +emit_16(1115); +emit_16(1051); +emit_16(1116); +emit_16(1052); +emit_16(1116); +emit_16(1051); +emit_16(1116); +emit_16(1052); +emit_16(1117); +emit_16(1053); +emit_16(1117); +emit_16(1052); +emit_16(1117); +emit_16(1053); +emit_16(1118); +emit_16(1054); +emit_16(1118); +emit_16(1053); +emit_16(1118); +emit_16(1054); +emit_16(1119); +emit_16(1055); +emit_16(1119); +emit_16(1054); +emit_16(1119); +emit_16(1055); +emit_16(1120); +emit_16(1056); +emit_16(1120); +emit_16(1055); +emit_16(1120); +emit_16(1056); +emit_16(1121); +emit_16(1057); +emit_16(1121); +emit_16(1056); +emit_16(1121); +emit_16(1057); +emit_16(1122); +emit_16(1058); +emit_16(1122); +emit_16(1057); +emit_16(1122); +emit_16(1058); +emit_16(1123); +emit_16(1059); +emit_16(1123); +emit_16(1058); +emit_16(1123); +emit_16(1059); +emit_16(1124); +emit_16(1060); +emit_16(1124); +emit_16(1059); +emit_16(1124); +emit_16(1060); +emit_16(1125); +emit_16(1061); +emit_16(1125); +emit_16(1060); +emit_16(1125); +emit_16(1061); +emit_16(1126); +emit_16(1062); +emit_16(1126); +emit_16(1061); +emit_16(1126); +emit_16(1062); +emit_16(1127); +emit_16(1063); +emit_16(1127); +emit_16(1062); +emit_16(1127); +emit_16(1063); +emit_16(1128); +emit_16(1064); +emit_16(1128); +emit_16(1063); +emit_16(1128); +emit_16(1064); +emit_16(1129); +emit_16(1065); +emit_16(1129); +emit_16(1064); +emit_16(1129); +emit_16(1065); +emit_16(1130); +emit_16(1066); +emit_16(1130); +emit_16(1065); +emit_16(1130); +emit_16(1066); +emit_16(1131); +emit_16(1067); +emit_16(1131); +emit_16(1066); +emit_16(1131); +emit_16(1067); +emit_16(1132); +emit_16(1068); +emit_16(1132); +emit_16(1067); +emit_16(1132); +emit_16(1068); +emit_16(1133); +emit_16(1069); +emit_16(1133); +emit_16(1068); +emit_16(1133); +emit_16(1069); +emit_16(1134); +emit_16(1070); +emit_16(1134); +emit_16(1069); +emit_16(1134); +emit_16(1070); +emit_16(1135); +emit_16(1071); +emit_16(1135); +emit_16(1070); +emit_16(1135); +emit_16(1071); +emit_16(1136); +emit_16(1072); +emit_16(1136); +emit_16(1071); +emit_16(1136); +emit_16(1072); +emit_16(1137); +emit_16(1073); +emit_16(1137); +emit_16(1072); +emit_16(1137); +emit_16(1073); +emit_16(1138); +emit_16(1074); +emit_16(1138); +emit_16(1073); +emit_16(1138); +emit_16(1074); +emit_16(1139); +emit_16(1075); +emit_16(1139); +emit_16(1074); +emit_16(1139); +emit_16(1075); +emit_16(1140); +emit_16(1076); +emit_16(1140); +emit_16(1075); +emit_16(1140); +emit_16(1076); +emit_16(1141); +emit_16(1077); +emit_16(1141); +emit_16(1076); +emit_16(1141); +emit_16(1077); +emit_16(1142); +emit_16(1078); +emit_16(1142); +emit_16(1077); +emit_16(1142); +emit_16(1078); +emit_16(1143); +emit_16(1079); +emit_16(1143); +emit_16(1078); +emit_16(1143); +emit_16(1079); +emit_16(1144); +emit_16(1080); +emit_16(1144); +emit_16(1079); +emit_16(1144); +emit_16(1080); +emit_16(1145); +emit_16(1081); +emit_16(1145); +emit_16(1080); +emit_16(1145); +emit_16(1081); +emit_16(1146); +emit_16(1082); +emit_16(1146); +emit_16(1081); +emit_16(1146); +emit_16(1082); +emit_16(1147); +emit_16(1083); +emit_16(1147); +emit_16(1082); +emit_16(1147); +emit_16(1083); +emit_16(1148); +emit_16(1084); +emit_16(1148); +emit_16(1083); +emit_16(1148); +emit_16(1084); +emit_16(1149); +emit_16(1085); +emit_16(1149); +emit_16(1084); +emit_16(1149); +emit_16(1085); +emit_16(1150); +emit_16(1086); +emit_16(1150); +emit_16(1085); +emit_16(1150); +emit_16(1086); +emit_16(1151); +emit_16(1087); +emit_16(1151); +emit_16(1086); +emit_16(1152); +emit_16(1088); +emit_16(1153); +emit_16(1089); +emit_16(1153); +emit_16(1088); +emit_16(1153); +emit_16(1089); +emit_16(1154); +emit_16(1090); +emit_16(1154); +emit_16(1089); +emit_16(1154); +emit_16(1090); +emit_16(1155); +emit_16(1091); +emit_16(1155); +emit_16(1090); +emit_16(1155); +emit_16(1091); +emit_16(1156); +emit_16(1092); +emit_16(1156); +emit_16(1091); +emit_16(1156); +emit_16(1092); +emit_16(1157); +emit_16(1093); +emit_16(1157); +emit_16(1092); +emit_16(1157); +emit_16(1093); +emit_16(1158); +emit_16(1094); +emit_16(1158); +emit_16(1093); +emit_16(1158); +emit_16(1094); +emit_16(1159); +emit_16(1095); +emit_16(1159); +emit_16(1094); +emit_16(1159); +emit_16(1095); +emit_16(1160); +emit_16(1096); +emit_16(1160); +emit_16(1095); +emit_16(1160); +emit_16(1096); +emit_16(1161); +emit_16(1097); +emit_16(1161); +emit_16(1096); +emit_16(1161); +emit_16(1097); +emit_16(1162); +emit_16(1098); +emit_16(1162); +emit_16(1097); +emit_16(1162); +emit_16(1098); +emit_16(1163); +emit_16(1099); +emit_16(1163); +emit_16(1098); +emit_16(1163); +emit_16(1099); +emit_16(1164); +emit_16(1100); +emit_16(1164); +emit_16(1099); +emit_16(1164); +emit_16(1100); +emit_16(1165); +emit_16(1101); +emit_16(1165); +emit_16(1100); +emit_16(1165); +emit_16(1101); +emit_16(1166); +emit_16(1102); +emit_16(1166); +emit_16(1101); +emit_16(1166); +emit_16(1102); +emit_16(1167); +emit_16(1103); +emit_16(1167); +emit_16(1102); +emit_16(1167); +emit_16(1103); +emit_16(1168); +emit_16(1104); +emit_16(1168); +emit_16(1103); +emit_16(1168); +emit_16(1104); +emit_16(1169); +emit_16(1105); +emit_16(1169); +emit_16(1104); +emit_16(1169); +emit_16(1105); +emit_16(1170); +emit_16(1106); +emit_16(1170); +emit_16(1105); +emit_16(1170); +emit_16(1106); +emit_16(1171); +emit_16(1107); +emit_16(1171); +emit_16(1106); +emit_16(1171); +emit_16(1107); +emit_16(1172); +emit_16(1108); +emit_16(1172); +emit_16(1107); +emit_16(1172); +emit_16(1108); +emit_16(1173); +emit_16(1109); +emit_16(1173); +emit_16(1108); +emit_16(1173); +emit_16(1109); +emit_16(1174); +emit_16(1110); +emit_16(1174); +emit_16(1109); +emit_16(1174); +emit_16(1110); +emit_16(1175); +emit_16(1111); +emit_16(1175); +emit_16(1110); +emit_16(1175); +emit_16(1111); +emit_16(1176); +emit_16(1112); +emit_16(1176); +emit_16(1111); +emit_16(1176); +emit_16(1112); +emit_16(1177); +emit_16(1113); +emit_16(1177); +emit_16(1112); +emit_16(1177); +emit_16(1113); +emit_16(1178); +emit_16(1114); +emit_16(1178); +emit_16(1113); +emit_16(1178); +emit_16(1114); +emit_16(1179); +emit_16(1115); +emit_16(1179); +emit_16(1114); +emit_16(1179); +emit_16(1115); +emit_16(1180); +emit_16(1116); +emit_16(1180); +emit_16(1115); +emit_16(1180); +emit_16(1116); +emit_16(1181); +emit_16(1117); +emit_16(1181); +emit_16(1116); +emit_16(1181); +emit_16(1117); +emit_16(1182); +emit_16(1118); +emit_16(1182); +emit_16(1117); +emit_16(1182); +emit_16(1118); +emit_16(1183); +emit_16(1119); +emit_16(1183); +emit_16(1118); +emit_16(1183); +emit_16(1119); +emit_16(1184); +emit_16(1120); +emit_16(1184); +emit_16(1119); +emit_16(1184); +emit_16(1120); +emit_16(1185); +emit_16(1121); +emit_16(1185); +emit_16(1120); +emit_16(1185); +emit_16(1121); +emit_16(1186); +emit_16(1122); +emit_16(1186); +emit_16(1121); +emit_16(1186); +emit_16(1122); +emit_16(1187); +emit_16(1123); +emit_16(1187); +emit_16(1122); +emit_16(1187); +emit_16(1123); +emit_16(1188); +emit_16(1124); +emit_16(1188); +emit_16(1123); +emit_16(1188); +emit_16(1124); +emit_16(1189); +emit_16(1125); +emit_16(1189); +emit_16(1124); +emit_16(1189); +emit_16(1125); +emit_16(1190); +emit_16(1126); +emit_16(1190); +emit_16(1125); +emit_16(1190); +emit_16(1126); +emit_16(1191); +emit_16(1127); +emit_16(1191); +emit_16(1126); +emit_16(1191); +emit_16(1127); +emit_16(1192); +emit_16(1128); +emit_16(1192); +emit_16(1127); +emit_16(1192); +emit_16(1128); +emit_16(1193); +emit_16(1129); +emit_16(1193); +emit_16(1128); +emit_16(1193); +emit_16(1129); +emit_16(1194); +emit_16(1130); +emit_16(1194); +emit_16(1129); +emit_16(1194); +emit_16(1130); +emit_16(1195); +emit_16(1131); +emit_16(1195); +emit_16(1130); +emit_16(1195); +emit_16(1131); +emit_16(1196); +emit_16(1132); +emit_16(1196); +emit_16(1131); +emit_16(1196); +emit_16(1132); +emit_16(1197); +emit_16(1133); +emit_16(1197); +emit_16(1132); +emit_16(1197); +emit_16(1133); +emit_16(1198); +emit_16(1134); +emit_16(1198); +emit_16(1133); +emit_16(1198); +emit_16(1134); +emit_16(1199); +emit_16(1135); +emit_16(1199); +emit_16(1134); +emit_16(1199); +emit_16(1135); +emit_16(1200); +emit_16(1136); +emit_16(1200); +emit_16(1135); +emit_16(1200); +emit_16(1136); +emit_16(1201); +emit_16(1137); +emit_16(1201); +emit_16(1136); +emit_16(1201); +emit_16(1137); +emit_16(1202); +emit_16(1138); +emit_16(1202); +emit_16(1137); +emit_16(1202); +emit_16(1138); +emit_16(1203); +emit_16(1139); +emit_16(1203); +emit_16(1138); +emit_16(1203); +emit_16(1139); +emit_16(1204); +emit_16(1140); +emit_16(1204); +emit_16(1139); +emit_16(1204); +emit_16(1140); +emit_16(1205); +emit_16(1141); +emit_16(1205); +emit_16(1140); +emit_16(1205); +emit_16(1141); +emit_16(1206); +emit_16(1142); +emit_16(1206); +emit_16(1141); +emit_16(1206); +emit_16(1142); +emit_16(1207); +emit_16(1143); +emit_16(1207); +emit_16(1142); +emit_16(1207); +emit_16(1143); +emit_16(1208); +emit_16(1144); +emit_16(1208); +emit_16(1143); +emit_16(1208); +emit_16(1144); +emit_16(1209); +emit_16(1145); +emit_16(1209); +emit_16(1144); +emit_16(1209); +emit_16(1145); +emit_16(1210); +emit_16(1146); +emit_16(1210); +emit_16(1145); +emit_16(1210); +emit_16(1146); +emit_16(1211); +emit_16(1147); +emit_16(1211); +emit_16(1146); +emit_16(1211); +emit_16(1147); +emit_16(1212); +emit_16(1148); +emit_16(1212); +emit_16(1147); +emit_16(1212); +emit_16(1148); +emit_16(1213); +emit_16(1149); +emit_16(1213); +emit_16(1148); +emit_16(1213); +emit_16(1149); +emit_16(1214); +emit_16(1150); +emit_16(1214); +emit_16(1149); +emit_16(1214); +emit_16(1150); +emit_16(1215); +emit_16(1151); +emit_16(1215); +emit_16(1150); +emit_16(1216); +emit_16(1152); +emit_16(1217); +emit_16(1153); +emit_16(1217); +emit_16(1152); +emit_16(1217); +emit_16(1153); +emit_16(1218); +emit_16(1154); +emit_16(1218); +emit_16(1153); +emit_16(1218); +emit_16(1154); +emit_16(1219); +emit_16(1155); +emit_16(1219); +emit_16(1154); +emit_16(1219); +emit_16(1155); +emit_16(1220); +emit_16(1156); +emit_16(1220); +emit_16(1155); +emit_16(1220); +emit_16(1156); +emit_16(1221); +emit_16(1157); +emit_16(1221); +emit_16(1156); +emit_16(1221); +emit_16(1157); +emit_16(1222); +emit_16(1158); +emit_16(1222); +emit_16(1157); +emit_16(1222); +emit_16(1158); +emit_16(1223); +emit_16(1159); +emit_16(1223); +emit_16(1158); +emit_16(1223); +emit_16(1159); +emit_16(1224); +emit_16(1160); +emit_16(1224); +emit_16(1159); +emit_16(1224); +emit_16(1160); +emit_16(1225); +emit_16(1161); +emit_16(1225); +emit_16(1160); +emit_16(1225); +emit_16(1161); +emit_16(1226); +emit_16(1162); +emit_16(1226); +emit_16(1161); +emit_16(1226); +emit_16(1162); +emit_16(1227); +emit_16(1163); +emit_16(1227); +emit_16(1162); +emit_16(1227); +emit_16(1163); +emit_16(1228); +emit_16(1164); +emit_16(1228); +emit_16(1163); +emit_16(1228); +emit_16(1164); +emit_16(1229); +emit_16(1165); +emit_16(1229); +emit_16(1164); +emit_16(1229); +emit_16(1165); +emit_16(1230); +emit_16(1166); +emit_16(1230); +emit_16(1165); +emit_16(1230); +emit_16(1166); +emit_16(1231); +emit_16(1167); +emit_16(1231); +emit_16(1166); +emit_16(1231); +emit_16(1167); +emit_16(1232); +emit_16(1168); +emit_16(1232); +emit_16(1167); +emit_16(1232); +emit_16(1168); +emit_16(1233); +emit_16(1169); +emit_16(1233); +emit_16(1168); +emit_16(1233); +emit_16(1169); +emit_16(1234); +emit_16(1170); +emit_16(1234); +emit_16(1169); +emit_16(1234); +emit_16(1170); +emit_16(1235); +emit_16(1171); +emit_16(1235); +emit_16(1170); +emit_16(1235); +emit_16(1171); +emit_16(1236); +emit_16(1172); +emit_16(1236); +emit_16(1171); +emit_16(1236); +emit_16(1172); +emit_16(1237); +emit_16(1173); +emit_16(1237); +emit_16(1172); +emit_16(1237); +emit_16(1173); +emit_16(1238); +emit_16(1174); +emit_16(1238); +emit_16(1173); +emit_16(1238); +emit_16(1174); +emit_16(1239); +emit_16(1175); +emit_16(1239); +emit_16(1174); +emit_16(1239); +emit_16(1175); +emit_16(1240); +emit_16(1176); +emit_16(1240); +emit_16(1175); +emit_16(1240); +emit_16(1176); +emit_16(1241); +emit_16(1177); +emit_16(1241); +emit_16(1176); +emit_16(1241); +emit_16(1177); +emit_16(1242); +emit_16(1178); +emit_16(1242); +emit_16(1177); +emit_16(1242); +emit_16(1178); +emit_16(1243); +emit_16(1179); +emit_16(1243); +emit_16(1178); +emit_16(1243); +emit_16(1179); +emit_16(1244); +emit_16(1180); +emit_16(1244); +emit_16(1179); +emit_16(1244); +emit_16(1180); +emit_16(1245); +emit_16(1181); +emit_16(1245); +emit_16(1180); +emit_16(1245); +emit_16(1181); +emit_16(1246); +emit_16(1182); +emit_16(1246); +emit_16(1181); +emit_16(1246); +emit_16(1182); +emit_16(1247); +emit_16(1183); +emit_16(1247); +emit_16(1182); +emit_16(1247); +emit_16(1183); +emit_16(1248); +emit_16(1184); +emit_16(1248); +emit_16(1183); +emit_16(1248); +emit_16(1184); +emit_16(1249); +emit_16(1185); +emit_16(1249); +emit_16(1184); +emit_16(1249); +emit_16(1185); +emit_16(1250); +emit_16(1186); +emit_16(1250); +emit_16(1185); +emit_16(1250); +emit_16(1186); +emit_16(1251); +emit_16(1187); +emit_16(1251); +emit_16(1186); +emit_16(1251); +emit_16(1187); +emit_16(1252); +emit_16(1188); +emit_16(1252); +emit_16(1187); +emit_16(1252); +emit_16(1188); +emit_16(1253); +emit_16(1189); +emit_16(1253); +emit_16(1188); +emit_16(1253); +emit_16(1189); +emit_16(1254); +emit_16(1190); +emit_16(1254); +emit_16(1189); +emit_16(1254); +emit_16(1190); +emit_16(1255); +emit_16(1191); +emit_16(1255); +emit_16(1190); +emit_16(1255); +emit_16(1191); +emit_16(1256); +emit_16(1192); +emit_16(1256); +emit_16(1191); +emit_16(1256); +emit_16(1192); +emit_16(1257); +emit_16(1193); +emit_16(1257); +emit_16(1192); +emit_16(1257); +emit_16(1193); +emit_16(1258); +emit_16(1194); +emit_16(1258); +emit_16(1193); +emit_16(1258); +emit_16(1194); +emit_16(1259); +emit_16(1195); +emit_16(1259); +emit_16(1194); +emit_16(1259); +emit_16(1195); +emit_16(1260); +emit_16(1196); +emit_16(1260); +emit_16(1195); +emit_16(1260); +emit_16(1196); +emit_16(1261); +emit_16(1197); +emit_16(1261); +emit_16(1196); +emit_16(1261); +emit_16(1197); +emit_16(1262); +emit_16(1198); +emit_16(1262); +emit_16(1197); +emit_16(1262); +emit_16(1198); +emit_16(1263); +emit_16(1199); +emit_16(1263); +emit_16(1198); +emit_16(1263); +emit_16(1199); +emit_16(1264); +emit_16(1200); +emit_16(1264); +emit_16(1199); +emit_16(1264); +emit_16(1200); +emit_16(1265); +emit_16(1201); +emit_16(1265); +emit_16(1200); +emit_16(1265); +emit_16(1201); +emit_16(1266); +emit_16(1202); +emit_16(1266); +emit_16(1201); +emit_16(1266); +emit_16(1202); +emit_16(1267); +emit_16(1203); +emit_16(1267); +emit_16(1202); +emit_16(1267); +emit_16(1203); +emit_16(1268); +emit_16(1204); +emit_16(1268); +emit_16(1203); +emit_16(1268); +emit_16(1204); +emit_16(1269); +emit_16(1205); +emit_16(1269); +emit_16(1204); +emit_16(1269); +emit_16(1205); +emit_16(1270); +emit_16(1206); +emit_16(1270); +emit_16(1205); +emit_16(1270); +emit_16(1206); +emit_16(1271); +emit_16(1207); +emit_16(1271); +emit_16(1206); +emit_16(1271); +emit_16(1207); +emit_16(1272); +emit_16(1208); +emit_16(1272); +emit_16(1207); +emit_16(1272); +emit_16(1208); +emit_16(1273); +emit_16(1209); +emit_16(1273); +emit_16(1208); +emit_16(1273); +emit_16(1209); +emit_16(1274); +emit_16(1210); +emit_16(1274); +emit_16(1209); +emit_16(1274); +emit_16(1210); +emit_16(1275); +emit_16(1211); +emit_16(1275); +emit_16(1210); +emit_16(1275); +emit_16(1211); +emit_16(1276); +emit_16(1212); +emit_16(1276); +emit_16(1211); +emit_16(1276); +emit_16(1212); +emit_16(1277); +emit_16(1213); +emit_16(1277); +emit_16(1212); +emit_16(1277); +emit_16(1213); +emit_16(1278); +emit_16(1214); +emit_16(1278); +emit_16(1213); +emit_16(1278); +emit_16(1214); +emit_16(1279); +emit_16(1215); +emit_16(1279); +emit_16(1214); +emit_16(1280); +emit_16(1216); +emit_16(1281); +emit_16(1217); +emit_16(1281); +emit_16(1216); +emit_16(1281); +emit_16(1217); +emit_16(1282); +emit_16(1218); +emit_16(1282); +emit_16(1217); +emit_16(1282); +emit_16(1218); +emit_16(1283); +emit_16(1219); +emit_16(1283); +emit_16(1218); +emit_16(1283); +emit_16(1219); +emit_16(1284); +emit_16(1220); +emit_16(1284); +emit_16(1219); +emit_16(1284); +emit_16(1220); +emit_16(1285); +emit_16(1221); +emit_16(1285); +emit_16(1220); +emit_16(1285); +emit_16(1221); +emit_16(1286); +emit_16(1222); +emit_16(1286); +emit_16(1221); +emit_16(1286); +emit_16(1222); +emit_16(1287); +emit_16(1223); +emit_16(1287); +emit_16(1222); +emit_16(1287); +emit_16(1223); +emit_16(1288); +emit_16(1224); +emit_16(1288); +emit_16(1223); +emit_16(1288); +emit_16(1224); +emit_16(1289); +emit_16(1225); +emit_16(1289); +emit_16(1224); +emit_16(1289); +emit_16(1225); +emit_16(1290); +emit_16(1226); +emit_16(1290); +emit_16(1225); +emit_16(1290); +emit_16(1226); +emit_16(1291); +emit_16(1227); +emit_16(1291); +emit_16(1226); +emit_16(1291); +emit_16(1227); +emit_16(1292); +emit_16(1228); +emit_16(1292); +emit_16(1227); +emit_16(1292); +emit_16(1228); +emit_16(1293); +emit_16(1229); +emit_16(1293); +emit_16(1228); +emit_16(1293); +emit_16(1229); +emit_16(1294); +emit_16(1230); +emit_16(1294); +emit_16(1229); +emit_16(1294); +emit_16(1230); +emit_16(1295); +emit_16(1231); +emit_16(1295); +emit_16(1230); +emit_16(1295); +emit_16(1231); +emit_16(1296); +emit_16(1232); +emit_16(1296); +emit_16(1231); +emit_16(1296); +emit_16(1232); +emit_16(1297); +emit_16(1233); +emit_16(1297); +emit_16(1232); +emit_16(1297); +emit_16(1233); +emit_16(1298); +emit_16(1234); +emit_16(1298); +emit_16(1233); +emit_16(1298); +emit_16(1234); +emit_16(1299); +emit_16(1235); +emit_16(1299); +emit_16(1234); +emit_16(1299); +emit_16(1235); +emit_16(1300); +emit_16(1236); +emit_16(1300); +emit_16(1235); +emit_16(1300); +emit_16(1236); +emit_16(1301); +emit_16(1237); +emit_16(1301); +emit_16(1236); +emit_16(1301); +emit_16(1237); +emit_16(1302); +emit_16(1238); +emit_16(1302); +emit_16(1237); +emit_16(1302); +emit_16(1238); +emit_16(1303); +emit_16(1239); +emit_16(1303); +emit_16(1238); +emit_16(1303); +emit_16(1239); +emit_16(1304); +emit_16(1240); +emit_16(1304); +emit_16(1239); +emit_16(1304); +emit_16(1240); +emit_16(1305); +emit_16(1241); +emit_16(1305); +emit_16(1240); +emit_16(1305); +emit_16(1241); +emit_16(1306); +emit_16(1242); +emit_16(1306); +emit_16(1241); +emit_16(1306); +emit_16(1242); +emit_16(1307); +emit_16(1243); +emit_16(1307); +emit_16(1242); +emit_16(1307); +emit_16(1243); +emit_16(1308); +emit_16(1244); +emit_16(1308); +emit_16(1243); +emit_16(1308); +emit_16(1244); +emit_16(1309); +emit_16(1245); +emit_16(1309); +emit_16(1244); +emit_16(1309); +emit_16(1245); +emit_16(1310); +emit_16(1246); +emit_16(1310); +emit_16(1245); +emit_16(1310); +emit_16(1246); +emit_16(1311); +emit_16(1247); +emit_16(1311); +emit_16(1246); +emit_16(1311); +emit_16(1247); +emit_16(1312); +emit_16(1248); +emit_16(1312); +emit_16(1247); +emit_16(1312); +emit_16(1248); +emit_16(1313); +emit_16(1249); +emit_16(1313); +emit_16(1248); +emit_16(1313); +emit_16(1249); +emit_16(1314); +emit_16(1250); +emit_16(1314); +emit_16(1249); +emit_16(1314); +emit_16(1250); +emit_16(1315); +emit_16(1251); +emit_16(1315); +emit_16(1250); +emit_16(1315); +emit_16(1251); +emit_16(1316); +emit_16(1252); +emit_16(1316); +emit_16(1251); +emit_16(1316); +emit_16(1252); +emit_16(1317); +emit_16(1253); +emit_16(1317); +emit_16(1252); +emit_16(1317); +emit_16(1253); +emit_16(1318); +emit_16(1254); +emit_16(1318); +emit_16(1253); +emit_16(1318); +emit_16(1254); +emit_16(1319); +emit_16(1255); +emit_16(1319); +emit_16(1254); +emit_16(1319); +emit_16(1255); +emit_16(1320); +emit_16(1256); +emit_16(1320); +emit_16(1255); +emit_16(1320); +emit_16(1256); +emit_16(1321); +emit_16(1257); +emit_16(1321); +emit_16(1256); +emit_16(1321); +emit_16(1257); +emit_16(1322); +emit_16(1258); +emit_16(1322); +emit_16(1257); +emit_16(1322); +emit_16(1258); +emit_16(1323); +emit_16(1259); +emit_16(1323); +emit_16(1258); +emit_16(1323); +emit_16(1259); +emit_16(1324); +emit_16(1260); +emit_16(1324); +emit_16(1259); +emit_16(1324); +emit_16(1260); +emit_16(1325); +emit_16(1261); +emit_16(1325); +emit_16(1260); +emit_16(1325); +emit_16(1261); +emit_16(1326); +emit_16(1262); +emit_16(1326); +emit_16(1261); +emit_16(1326); +emit_16(1262); +emit_16(1327); +emit_16(1263); +emit_16(1327); +emit_16(1262); +emit_16(1327); +emit_16(1263); +emit_16(1328); +emit_16(1264); +emit_16(1328); +emit_16(1263); +emit_16(1328); +emit_16(1264); +emit_16(1329); +emit_16(1265); +emit_16(1329); +emit_16(1264); +emit_16(1329); +emit_16(1265); +emit_16(1330); +emit_16(1266); +emit_16(1330); +emit_16(1265); +emit_16(1330); +emit_16(1266); +emit_16(1331); +emit_16(1267); +emit_16(1331); +emit_16(1266); +emit_16(1331); +emit_16(1267); +emit_16(1332); +emit_16(1268); +emit_16(1332); +emit_16(1267); +emit_16(1332); +emit_16(1268); +emit_16(1333); +emit_16(1269); +emit_16(1333); +emit_16(1268); +emit_16(1333); +emit_16(1269); +emit_16(1334); +emit_16(1270); +emit_16(1334); +emit_16(1269); +emit_16(1334); +emit_16(1270); +emit_16(1335); +emit_16(1271); +emit_16(1335); +emit_16(1270); +emit_16(1335); +emit_16(1271); +emit_16(1336); +emit_16(1272); +emit_16(1336); +emit_16(1271); +emit_16(1336); +emit_16(1272); +emit_16(1337); +emit_16(1273); +emit_16(1337); +emit_16(1272); +emit_16(1337); +emit_16(1273); +emit_16(1338); +emit_16(1274); +emit_16(1338); +emit_16(1273); +emit_16(1338); +emit_16(1274); +emit_16(1339); +emit_16(1275); +emit_16(1339); +emit_16(1274); +emit_16(1339); +emit_16(1275); +emit_16(1340); +emit_16(1276); +emit_16(1340); +emit_16(1275); +emit_16(1340); +emit_16(1276); +emit_16(1341); +emit_16(1277); +emit_16(1341); +emit_16(1276); +emit_16(1341); +emit_16(1277); +emit_16(1342); +emit_16(1278); +emit_16(1342); +emit_16(1277); +emit_16(1342); +emit_16(1278); +emit_16(1343); +emit_16(1279); +emit_16(1343); +emit_16(1278); +emit_16(1344); +emit_16(1280); +emit_16(1345); +emit_16(1281); +emit_16(1345); +emit_16(1280); +emit_16(1345); +emit_16(1281); +emit_16(1346); +emit_16(1282); +emit_16(1346); +emit_16(1281); +emit_16(1346); +emit_16(1282); +emit_16(1347); +emit_16(1283); +emit_16(1347); +emit_16(1282); +emit_16(1347); +emit_16(1283); +emit_16(1348); +emit_16(1284); +emit_16(1348); +emit_16(1283); +emit_16(1348); +emit_16(1284); +emit_16(1349); +emit_16(1285); +emit_16(1349); +emit_16(1284); +emit_16(1349); +emit_16(1285); +emit_16(1350); +emit_16(1286); +emit_16(1350); +emit_16(1285); +emit_16(1350); +emit_16(1286); +emit_16(1351); +emit_16(1287); +emit_16(1351); +emit_16(1286); +emit_16(1351); +emit_16(1287); +emit_16(1352); +emit_16(1288); +emit_16(1352); +emit_16(1287); +emit_16(1352); +emit_16(1288); +emit_16(1353); +emit_16(1289); +emit_16(1353); +emit_16(1288); +emit_16(1353); +emit_16(1289); +emit_16(1354); +emit_16(1290); +emit_16(1354); +emit_16(1289); +emit_16(1354); +emit_16(1290); +emit_16(1355); +emit_16(1291); +emit_16(1355); +emit_16(1290); +emit_16(1355); +emit_16(1291); +emit_16(1356); +emit_16(1292); +emit_16(1356); +emit_16(1291); +emit_16(1356); +emit_16(1292); +emit_16(1357); +emit_16(1293); +emit_16(1357); +emit_16(1292); +emit_16(1357); +emit_16(1293); +emit_16(1358); +emit_16(1294); +emit_16(1358); +emit_16(1293); +emit_16(1358); +emit_16(1294); +emit_16(1359); +emit_16(1295); +emit_16(1359); +emit_16(1294); +emit_16(1359); +emit_16(1295); +emit_16(1360); +emit_16(1296); +emit_16(1360); +emit_16(1295); +emit_16(1360); +emit_16(1296); +emit_16(1361); +emit_16(1297); +emit_16(1361); +emit_16(1296); +emit_16(1361); +emit_16(1297); +emit_16(1362); +emit_16(1298); +emit_16(1362); +emit_16(1297); +emit_16(1362); +emit_16(1298); +emit_16(1363); +emit_16(1299); +emit_16(1363); +emit_16(1298); +emit_16(1363); +emit_16(1299); +emit_16(1364); +emit_16(1300); +emit_16(1364); +emit_16(1299); +emit_16(1364); +emit_16(1300); +emit_16(1365); +emit_16(1301); +emit_16(1365); +emit_16(1300); +emit_16(1365); +emit_16(1301); +emit_16(1366); +emit_16(1302); +emit_16(1366); +emit_16(1301); +emit_16(1366); +emit_16(1302); +emit_16(1367); +emit_16(1303); +emit_16(1367); +emit_16(1302); +emit_16(1367); +emit_16(1303); +emit_16(1368); +emit_16(1304); +emit_16(1368); +emit_16(1303); +emit_16(1368); +emit_16(1304); +emit_16(1369); +emit_16(1305); +emit_16(1369); +emit_16(1304); +emit_16(1369); +emit_16(1305); +emit_16(1370); +emit_16(1306); +emit_16(1370); +emit_16(1305); +emit_16(1370); +emit_16(1306); +emit_16(1371); +emit_16(1307); +emit_16(1371); +emit_16(1306); +emit_16(1371); +emit_16(1307); +emit_16(1372); +emit_16(1308); +emit_16(1372); +emit_16(1307); +emit_16(1372); +emit_16(1308); +emit_16(1373); +emit_16(1309); +emit_16(1373); +emit_16(1308); +emit_16(1373); +emit_16(1309); +emit_16(1374); +emit_16(1310); +emit_16(1374); +emit_16(1309); +emit_16(1374); +emit_16(1310); +emit_16(1375); +emit_16(1311); +emit_16(1375); +emit_16(1310); +emit_16(1375); +emit_16(1311); +emit_16(1376); +emit_16(1312); +emit_16(1376); +emit_16(1311); +emit_16(1376); +emit_16(1312); +emit_16(1377); +emit_16(1313); +emit_16(1377); +emit_16(1312); +emit_16(1377); +emit_16(1313); +emit_16(1378); +emit_16(1314); +emit_16(1378); +emit_16(1313); +emit_16(1378); +emit_16(1314); +emit_16(1379); +emit_16(1315); +emit_16(1379); +emit_16(1314); +emit_16(1379); +emit_16(1315); +emit_16(1380); +emit_16(1316); +emit_16(1380); +emit_16(1315); +emit_16(1380); +emit_16(1316); +emit_16(1381); +emit_16(1317); +emit_16(1381); +emit_16(1316); +emit_16(1381); +emit_16(1317); +emit_16(1382); +emit_16(1318); +emit_16(1382); +emit_16(1317); +emit_16(1382); +emit_16(1318); +emit_16(1383); +emit_16(1319); +emit_16(1383); +emit_16(1318); +emit_16(1383); +emit_16(1319); +emit_16(1384); +emit_16(1320); +emit_16(1384); +emit_16(1319); +emit_16(1384); +emit_16(1320); +emit_16(1385); +emit_16(1321); +emit_16(1385); +emit_16(1320); +emit_16(1385); +emit_16(1321); +emit_16(1386); +emit_16(1322); +emit_16(1386); +emit_16(1321); +emit_16(1386); +emit_16(1322); +emit_16(1387); +emit_16(1323); +emit_16(1387); +emit_16(1322); +emit_16(1387); +emit_16(1323); +emit_16(1388); +emit_16(1324); +emit_16(1388); +emit_16(1323); +emit_16(1388); +emit_16(1324); +emit_16(1389); +emit_16(1325); +emit_16(1389); +emit_16(1324); +emit_16(1389); +emit_16(1325); +emit_16(1390); +emit_16(1326); +emit_16(1390); +emit_16(1325); +emit_16(1390); +emit_16(1326); +emit_16(1391); +emit_16(1327); +emit_16(1391); +emit_16(1326); +emit_16(1391); +emit_16(1327); +emit_16(1392); +emit_16(1328); +emit_16(1392); +emit_16(1327); +emit_16(1392); +emit_16(1328); +emit_16(1393); +emit_16(1329); +emit_16(1393); +emit_16(1328); +emit_16(1393); +emit_16(1329); +emit_16(1394); +emit_16(1330); +emit_16(1394); +emit_16(1329); +emit_16(1394); +emit_16(1330); +emit_16(1395); +emit_16(1331); +emit_16(1395); +emit_16(1330); +emit_16(1395); +emit_16(1331); +emit_16(1396); +emit_16(1332); +emit_16(1396); +emit_16(1331); +emit_16(1396); +emit_16(1332); +emit_16(1397); +emit_16(1333); +emit_16(1397); +emit_16(1332); +emit_16(1397); +emit_16(1333); +emit_16(1398); +emit_16(1334); +emit_16(1398); +emit_16(1333); +emit_16(1398); +emit_16(1334); +emit_16(1399); +emit_16(1335); +emit_16(1399); +emit_16(1334); +emit_16(1399); +emit_16(1335); +emit_16(1400); +emit_16(1336); +emit_16(1400); +emit_16(1335); +emit_16(1400); +emit_16(1336); +emit_16(1401); +emit_16(1337); +emit_16(1401); +emit_16(1336); +emit_16(1401); +emit_16(1337); +emit_16(1402); +emit_16(1338); +emit_16(1402); +emit_16(1337); +emit_16(1402); +emit_16(1338); +emit_16(1403); +emit_16(1339); +emit_16(1403); +emit_16(1338); +emit_16(1403); +emit_16(1339); +emit_16(1404); +emit_16(1340); +emit_16(1404); +emit_16(1339); +emit_16(1404); +emit_16(1340); +emit_16(1405); +emit_16(1341); +emit_16(1405); +emit_16(1340); +emit_16(1405); +emit_16(1341); +emit_16(1406); +emit_16(1342); +emit_16(1406); +emit_16(1341); +emit_16(1406); +emit_16(1342); +emit_16(1407); +emit_16(1343); +emit_16(1407); +emit_16(1342); +emit_16(1408); +emit_16(1344); +emit_16(1409); +emit_16(1345); +emit_16(1409); +emit_16(1344); +emit_16(1409); +emit_16(1345); +emit_16(1410); +emit_16(1346); +emit_16(1410); +emit_16(1345); +emit_16(1410); +emit_16(1346); +emit_16(1411); +emit_16(1347); +emit_16(1411); +emit_16(1346); +emit_16(1411); +emit_16(1347); +emit_16(1412); +emit_16(1348); +emit_16(1412); +emit_16(1347); +emit_16(1412); +emit_16(1348); +emit_16(1413); +emit_16(1349); +emit_16(1413); +emit_16(1348); +emit_16(1413); +emit_16(1349); +emit_16(1414); +emit_16(1350); +emit_16(1414); +emit_16(1349); +emit_16(1414); +emit_16(1350); +emit_16(1415); +emit_16(1351); +emit_16(1415); +emit_16(1350); +emit_16(1415); +emit_16(1351); +emit_16(1416); +emit_16(1352); +emit_16(1416); +emit_16(1351); +emit_16(1416); +emit_16(1352); +emit_16(1417); +emit_16(1353); +emit_16(1417); +emit_16(1352); +emit_16(1417); +emit_16(1353); +emit_16(1418); +emit_16(1354); +emit_16(1418); +emit_16(1353); +emit_16(1418); +emit_16(1354); +emit_16(1419); +emit_16(1355); +emit_16(1419); +emit_16(1354); +emit_16(1419); +emit_16(1355); +emit_16(1420); +emit_16(1356); +emit_16(1420); +emit_16(1355); +emit_16(1420); +emit_16(1356); +emit_16(1421); +emit_16(1357); +emit_16(1421); +emit_16(1356); +emit_16(1421); +emit_16(1357); +emit_16(1422); +emit_16(1358); +emit_16(1422); +emit_16(1357); +emit_16(1422); +emit_16(1358); +emit_16(1423); +emit_16(1359); +emit_16(1423); +emit_16(1358); +emit_16(1423); +emit_16(1359); +emit_16(1424); +emit_16(1360); +emit_16(1424); +emit_16(1359); +emit_16(1424); +emit_16(1360); +emit_16(1425); +emit_16(1361); +emit_16(1425); +emit_16(1360); +emit_16(1425); +emit_16(1361); +emit_16(1426); +emit_16(1362); +emit_16(1426); +emit_16(1361); +emit_16(1426); +emit_16(1362); +emit_16(1427); +emit_16(1363); +emit_16(1427); +emit_16(1362); +emit_16(1427); +emit_16(1363); +emit_16(1428); +emit_16(1364); +emit_16(1428); +emit_16(1363); +emit_16(1428); +emit_16(1364); +emit_16(1429); +emit_16(1365); +emit_16(1429); +emit_16(1364); +emit_16(1429); +emit_16(1365); +emit_16(1430); +emit_16(1366); +emit_16(1430); +emit_16(1365); +emit_16(1430); +emit_16(1366); +emit_16(1431); +emit_16(1367); +emit_16(1431); +emit_16(1366); +emit_16(1431); +emit_16(1367); +emit_16(1432); +emit_16(1368); +emit_16(1432); +emit_16(1367); +emit_16(1432); +emit_16(1368); +emit_16(1433); +emit_16(1369); +emit_16(1433); +emit_16(1368); +emit_16(1433); +emit_16(1369); +emit_16(1434); +emit_16(1370); +emit_16(1434); +emit_16(1369); +emit_16(1434); +emit_16(1370); +emit_16(1435); +emit_16(1371); +emit_16(1435); +emit_16(1370); +emit_16(1435); +emit_16(1371); +emit_16(1436); +emit_16(1372); +emit_16(1436); +emit_16(1371); +emit_16(1436); +emit_16(1372); +emit_16(1437); +emit_16(1373); +emit_16(1437); +emit_16(1372); +emit_16(1437); +emit_16(1373); +emit_16(1438); +emit_16(1374); +emit_16(1438); +emit_16(1373); +emit_16(1438); +emit_16(1374); +emit_16(1439); +emit_16(1375); +emit_16(1439); +emit_16(1374); +emit_16(1439); +emit_16(1375); +emit_16(1440); +emit_16(1376); +emit_16(1440); +emit_16(1375); +emit_16(1440); +emit_16(1376); +emit_16(1441); +emit_16(1377); +emit_16(1441); +emit_16(1376); +emit_16(1441); +emit_16(1377); +emit_16(1442); +emit_16(1378); +emit_16(1442); +emit_16(1377); +emit_16(1442); +emit_16(1378); +emit_16(1443); +emit_16(1379); +emit_16(1443); +emit_16(1378); +emit_16(1443); +emit_16(1379); +emit_16(1444); +emit_16(1380); +emit_16(1444); +emit_16(1379); +emit_16(1444); +emit_16(1380); +emit_16(1445); +emit_16(1381); +emit_16(1445); +emit_16(1380); +emit_16(1445); +emit_16(1381); +emit_16(1446); +emit_16(1382); +emit_16(1446); +emit_16(1381); +emit_16(1446); +emit_16(1382); +emit_16(1447); +emit_16(1383); +emit_16(1447); +emit_16(1382); +emit_16(1447); +emit_16(1383); +emit_16(1448); +emit_16(1384); +emit_16(1448); +emit_16(1383); +emit_16(1448); +emit_16(1384); +emit_16(1449); +emit_16(1385); +emit_16(1449); +emit_16(1384); +emit_16(1449); +emit_16(1385); +emit_16(1450); +emit_16(1386); +emit_16(1450); +emit_16(1385); +emit_16(1450); +emit_16(1386); +emit_16(1451); +emit_16(1387); +emit_16(1451); +emit_16(1386); +emit_16(1451); +emit_16(1387); +emit_16(1452); +emit_16(1388); +emit_16(1452); +emit_16(1387); +emit_16(1452); +emit_16(1388); +emit_16(1453); +emit_16(1389); +emit_16(1453); +emit_16(1388); +emit_16(1453); +emit_16(1389); +emit_16(1454); +emit_16(1390); +emit_16(1454); +emit_16(1389); +emit_16(1454); +emit_16(1390); +emit_16(1455); +emit_16(1391); +emit_16(1455); +emit_16(1390); +emit_16(1455); +emit_16(1391); +emit_16(1456); +emit_16(1392); +emit_16(1456); +emit_16(1391); +emit_16(1456); +emit_16(1392); +emit_16(1457); +emit_16(1393); +emit_16(1457); +emit_16(1392); +emit_16(1457); +emit_16(1393); +emit_16(1458); +emit_16(1394); +emit_16(1458); +emit_16(1393); +emit_16(1458); +emit_16(1394); +emit_16(1459); +emit_16(1395); +emit_16(1459); +emit_16(1394); +emit_16(1459); +emit_16(1395); +emit_16(1460); +emit_16(1396); +emit_16(1460); +emit_16(1395); +emit_16(1460); +emit_16(1396); +emit_16(1461); +emit_16(1397); +emit_16(1461); +emit_16(1396); +emit_16(1461); +emit_16(1397); +emit_16(1462); +emit_16(1398); +emit_16(1462); +emit_16(1397); +emit_16(1462); +emit_16(1398); +emit_16(1463); +emit_16(1399); +emit_16(1463); +emit_16(1398); +emit_16(1463); +emit_16(1399); +emit_16(1464); +emit_16(1400); +emit_16(1464); +emit_16(1399); +emit_16(1464); +emit_16(1400); +emit_16(1465); +emit_16(1401); +emit_16(1465); +emit_16(1400); +emit_16(1465); +emit_16(1401); +emit_16(1466); +emit_16(1402); +emit_16(1466); +emit_16(1401); +emit_16(1466); +emit_16(1402); +emit_16(1467); +emit_16(1403); +emit_16(1467); +emit_16(1402); +emit_16(1467); +emit_16(1403); +emit_16(1468); +emit_16(1404); +emit_16(1468); +emit_16(1403); +emit_16(1468); +emit_16(1404); +emit_16(1469); +emit_16(1405); +emit_16(1469); +emit_16(1404); +emit_16(1469); +emit_16(1405); +emit_16(1470); +emit_16(1406); +emit_16(1470); +emit_16(1405); +emit_16(1470); +emit_16(1406); +emit_16(1471); +emit_16(1407); +emit_16(1471); +emit_16(1406); +emit_16(1472); +emit_16(1408); +emit_16(1473); +emit_16(1409); +emit_16(1473); +emit_16(1408); +emit_16(1473); +emit_16(1409); +emit_16(1474); +emit_16(1410); +emit_16(1474); +emit_16(1409); +emit_16(1474); +emit_16(1410); +emit_16(1475); +emit_16(1411); +emit_16(1475); +emit_16(1410); +emit_16(1475); +emit_16(1411); +emit_16(1476); +emit_16(1412); +emit_16(1476); +emit_16(1411); +emit_16(1476); +emit_16(1412); +emit_16(1477); +emit_16(1413); +emit_16(1477); +emit_16(1412); +emit_16(1477); +emit_16(1413); +emit_16(1478); +emit_16(1414); +emit_16(1478); +emit_16(1413); +emit_16(1478); +emit_16(1414); +emit_16(1479); +emit_16(1415); +emit_16(1479); +emit_16(1414); +emit_16(1479); +emit_16(1415); +emit_16(1480); +emit_16(1416); +emit_16(1480); +emit_16(1415); +emit_16(1480); +emit_16(1416); +emit_16(1481); +emit_16(1417); +emit_16(1481); +emit_16(1416); +emit_16(1481); +emit_16(1417); +emit_16(1482); +emit_16(1418); +emit_16(1482); +emit_16(1417); +emit_16(1482); +emit_16(1418); +emit_16(1483); +emit_16(1419); +emit_16(1483); +emit_16(1418); +emit_16(1483); +emit_16(1419); +emit_16(1484); +emit_16(1420); +emit_16(1484); +emit_16(1419); +emit_16(1484); +emit_16(1420); +emit_16(1485); +emit_16(1421); +emit_16(1485); +emit_16(1420); +emit_16(1485); +emit_16(1421); +emit_16(1486); +emit_16(1422); +emit_16(1486); +emit_16(1421); +emit_16(1486); +emit_16(1422); +emit_16(1487); +emit_16(1423); +emit_16(1487); +emit_16(1422); +emit_16(1487); +emit_16(1423); +emit_16(1488); +emit_16(1424); +emit_16(1488); +emit_16(1423); +emit_16(1488); +emit_16(1424); +emit_16(1489); +emit_16(1425); +emit_16(1489); +emit_16(1424); +emit_16(1489); +emit_16(1425); +emit_16(1490); +emit_16(1426); +emit_16(1490); +emit_16(1425); +emit_16(1490); +emit_16(1426); +emit_16(1491); +emit_16(1427); +emit_16(1491); +emit_16(1426); +emit_16(1491); +emit_16(1427); +emit_16(1492); +emit_16(1428); +emit_16(1492); +emit_16(1427); +emit_16(1492); +emit_16(1428); +emit_16(1493); +emit_16(1429); +emit_16(1493); +emit_16(1428); +emit_16(1493); +emit_16(1429); +emit_16(1494); +emit_16(1430); +emit_16(1494); +emit_16(1429); +emit_16(1494); +emit_16(1430); +emit_16(1495); +emit_16(1431); +emit_16(1495); +emit_16(1430); +emit_16(1495); +emit_16(1431); +emit_16(1496); +emit_16(1432); +emit_16(1496); +emit_16(1431); +emit_16(1496); +emit_16(1432); +emit_16(1497); +emit_16(1433); +emit_16(1497); +emit_16(1432); +emit_16(1497); +emit_16(1433); +emit_16(1498); +emit_16(1434); +emit_16(1498); +emit_16(1433); +emit_16(1498); +emit_16(1434); +emit_16(1499); +emit_16(1435); +emit_16(1499); +emit_16(1434); +emit_16(1499); +emit_16(1435); +emit_16(1500); +emit_16(1436); +emit_16(1500); +emit_16(1435); +emit_16(1500); +emit_16(1436); +emit_16(1501); +emit_16(1437); +emit_16(1501); +emit_16(1436); +emit_16(1501); +emit_16(1437); +emit_16(1502); +emit_16(1438); +emit_16(1502); +emit_16(1437); +emit_16(1502); +emit_16(1438); +emit_16(1503); +emit_16(1439); +emit_16(1503); +emit_16(1438); +emit_16(1503); +emit_16(1439); +emit_16(1504); +emit_16(1440); +emit_16(1504); +emit_16(1439); +emit_16(1504); +emit_16(1440); +emit_16(1505); +emit_16(1441); +emit_16(1505); +emit_16(1440); +emit_16(1505); +emit_16(1441); +emit_16(1506); +emit_16(1442); +emit_16(1506); +emit_16(1441); +emit_16(1506); +emit_16(1442); +emit_16(1507); +emit_16(1443); +emit_16(1507); +emit_16(1442); +emit_16(1507); +emit_16(1443); +emit_16(1508); +emit_16(1444); +emit_16(1508); +emit_16(1443); +emit_16(1508); +emit_16(1444); +emit_16(1509); +emit_16(1445); +emit_16(1509); +emit_16(1444); +emit_16(1509); +emit_16(1445); +emit_16(1510); +emit_16(1446); +emit_16(1510); +emit_16(1445); +emit_16(1510); +emit_16(1446); +emit_16(1511); +emit_16(1447); +emit_16(1511); +emit_16(1446); +emit_16(1511); +emit_16(1447); +emit_16(1512); +emit_16(1448); +emit_16(1512); +emit_16(1447); +emit_16(1512); +emit_16(1448); +emit_16(1513); +emit_16(1449); +emit_16(1513); +emit_16(1448); +emit_16(1513); +emit_16(1449); +emit_16(1514); +emit_16(1450); +emit_16(1514); +emit_16(1449); +emit_16(1514); +emit_16(1450); +emit_16(1515); +emit_16(1451); +emit_16(1515); +emit_16(1450); +emit_16(1515); +emit_16(1451); +emit_16(1516); +emit_16(1452); +emit_16(1516); +emit_16(1451); +emit_16(1516); +emit_16(1452); +emit_16(1517); +emit_16(1453); +emit_16(1517); +emit_16(1452); +emit_16(1517); +emit_16(1453); +emit_16(1518); +emit_16(1454); +emit_16(1518); +emit_16(1453); +emit_16(1518); +emit_16(1454); +emit_16(1519); +emit_16(1455); +emit_16(1519); +emit_16(1454); +emit_16(1519); +emit_16(1455); +emit_16(1520); +emit_16(1456); +emit_16(1520); +emit_16(1455); +emit_16(1520); +emit_16(1456); +emit_16(1521); +emit_16(1457); +emit_16(1521); +emit_16(1456); +emit_16(1521); +emit_16(1457); +emit_16(1522); +emit_16(1458); +emit_16(1522); +emit_16(1457); +emit_16(1522); +emit_16(1458); +emit_16(1523); +emit_16(1459); +emit_16(1523); +emit_16(1458); +emit_16(1523); +emit_16(1459); +emit_16(1524); +emit_16(1460); +emit_16(1524); +emit_16(1459); +emit_16(1524); +emit_16(1460); +emit_16(1525); +emit_16(1461); +emit_16(1525); +emit_16(1460); +emit_16(1525); +emit_16(1461); +emit_16(1526); +emit_16(1462); +emit_16(1526); +emit_16(1461); +emit_16(1526); +emit_16(1462); +emit_16(1527); +emit_16(1463); +emit_16(1527); +emit_16(1462); +emit_16(1527); +emit_16(1463); +emit_16(1528); +emit_16(1464); +emit_16(1528); +emit_16(1463); +emit_16(1528); +emit_16(1464); +emit_16(1529); +emit_16(1465); +emit_16(1529); +emit_16(1464); +emit_16(1529); +emit_16(1465); +emit_16(1530); +emit_16(1466); +emit_16(1530); +emit_16(1465); +emit_16(1530); +emit_16(1466); +emit_16(1531); +emit_16(1467); +emit_16(1531); +emit_16(1466); +emit_16(1531); +emit_16(1467); +emit_16(1532); +emit_16(1468); +emit_16(1532); +emit_16(1467); +emit_16(1532); +emit_16(1468); +emit_16(1533); +emit_16(1469); +emit_16(1533); +emit_16(1468); +emit_16(1533); +emit_16(1469); +emit_16(1534); +emit_16(1470); +emit_16(1534); +emit_16(1469); +emit_16(1534); +emit_16(1470); +emit_16(1535); +emit_16(1471); +emit_16(1535); +emit_16(1470); +emit_16(1536); +emit_16(1472); +emit_16(1537); +emit_16(1473); +emit_16(1537); +emit_16(1472); +emit_16(1537); +emit_16(1473); +emit_16(1538); +emit_16(1474); +emit_16(1538); +emit_16(1473); +emit_16(1538); +emit_16(1474); +emit_16(1539); +emit_16(1475); +emit_16(1539); +emit_16(1474); +emit_16(1539); +emit_16(1475); +emit_16(1540); +emit_16(1476); +emit_16(1540); +emit_16(1475); +emit_16(1540); +emit_16(1476); +emit_16(1541); +emit_16(1477); +emit_16(1541); +emit_16(1476); +emit_16(1541); +emit_16(1477); +emit_16(1542); +emit_16(1478); +emit_16(1542); +emit_16(1477); +emit_16(1542); +emit_16(1478); +emit_16(1543); +emit_16(1479); +emit_16(1543); +emit_16(1478); +emit_16(1543); +emit_16(1479); +emit_16(1544); +emit_16(1480); +emit_16(1544); +emit_16(1479); +emit_16(1544); +emit_16(1480); +emit_16(1545); +emit_16(1481); +emit_16(1545); +emit_16(1480); +emit_16(1545); +emit_16(1481); +emit_16(1546); +emit_16(1482); +emit_16(1546); +emit_16(1481); +emit_16(1546); +emit_16(1482); +emit_16(1547); +emit_16(1483); +emit_16(1547); +emit_16(1482); +emit_16(1547); +emit_16(1483); +emit_16(1548); +emit_16(1484); +emit_16(1548); +emit_16(1483); +emit_16(1548); +emit_16(1484); +emit_16(1549); +emit_16(1485); +emit_16(1549); +emit_16(1484); +emit_16(1549); +emit_16(1485); +emit_16(1550); +emit_16(1486); +emit_16(1550); +emit_16(1485); +emit_16(1550); +emit_16(1486); +emit_16(1551); +emit_16(1487); +emit_16(1551); +emit_16(1486); +emit_16(1551); +emit_16(1487); +emit_16(1552); +emit_16(1488); +emit_16(1552); +emit_16(1487); +emit_16(1552); +emit_16(1488); +emit_16(1553); +emit_16(1489); +emit_16(1553); +emit_16(1488); +emit_16(1553); +emit_16(1489); +emit_16(1554); +emit_16(1490); +emit_16(1554); +emit_16(1489); +emit_16(1554); +emit_16(1490); +emit_16(1555); +emit_16(1491); +emit_16(1555); +emit_16(1490); +emit_16(1555); +emit_16(1491); +emit_16(1556); +emit_16(1492); +emit_16(1556); +emit_16(1491); +emit_16(1556); +emit_16(1492); +emit_16(1557); +emit_16(1493); +emit_16(1557); +emit_16(1492); +emit_16(1557); +emit_16(1493); +emit_16(1558); +emit_16(1494); +emit_16(1558); +emit_16(1493); +emit_16(1558); +emit_16(1494); +emit_16(1559); +emit_16(1495); +emit_16(1559); +emit_16(1494); +emit_16(1559); +emit_16(1495); +emit_16(1560); +emit_16(1496); +emit_16(1560); +emit_16(1495); +emit_16(1560); +emit_16(1496); +emit_16(1561); +emit_16(1497); +emit_16(1561); +emit_16(1496); +emit_16(1561); +emit_16(1497); +emit_16(1562); +emit_16(1498); +emit_16(1562); +emit_16(1497); +emit_16(1562); +emit_16(1498); +emit_16(1563); +emit_16(1499); +emit_16(1563); +emit_16(1498); +emit_16(1563); +emit_16(1499); +emit_16(1564); +emit_16(1500); +emit_16(1564); +emit_16(1499); +emit_16(1564); +emit_16(1500); +emit_16(1565); +emit_16(1501); +emit_16(1565); +emit_16(1500); +emit_16(1565); +emit_16(1501); +emit_16(1566); +emit_16(1502); +emit_16(1566); +emit_16(1501); +emit_16(1566); +emit_16(1502); +emit_16(1567); +emit_16(1503); +emit_16(1567); +emit_16(1502); +emit_16(1567); +emit_16(1503); +emit_16(1568); +emit_16(1504); +emit_16(1568); +emit_16(1503); +emit_16(1568); +emit_16(1504); +emit_16(1569); +emit_16(1505); +emit_16(1569); +emit_16(1504); +emit_16(1569); +emit_16(1505); +emit_16(1570); +emit_16(1506); +emit_16(1570); +emit_16(1505); +emit_16(1570); +emit_16(1506); +emit_16(1571); +emit_16(1507); +emit_16(1571); +emit_16(1506); +emit_16(1571); +emit_16(1507); +emit_16(1572); +emit_16(1508); +emit_16(1572); +emit_16(1507); +emit_16(1572); +emit_16(1508); +emit_16(1573); +emit_16(1509); +emit_16(1573); +emit_16(1508); +emit_16(1573); +emit_16(1509); +emit_16(1574); +emit_16(1510); +emit_16(1574); +emit_16(1509); +emit_16(1574); +emit_16(1510); +emit_16(1575); +emit_16(1511); +emit_16(1575); +emit_16(1510); +emit_16(1575); +emit_16(1511); +emit_16(1576); +emit_16(1512); +emit_16(1576); +emit_16(1511); +emit_16(1576); +emit_16(1512); +emit_16(1577); +emit_16(1513); +emit_16(1577); +emit_16(1512); +emit_16(1577); +emit_16(1513); +emit_16(1578); +emit_16(1514); +emit_16(1578); +emit_16(1513); +emit_16(1578); +emit_16(1514); +emit_16(1579); +emit_16(1515); +emit_16(1579); +emit_16(1514); +emit_16(1579); +emit_16(1515); +emit_16(1580); +emit_16(1516); +emit_16(1580); +emit_16(1515); +emit_16(1580); +emit_16(1516); +emit_16(1581); +emit_16(1517); +emit_16(1581); +emit_16(1516); +emit_16(1581); +emit_16(1517); +emit_16(1582); +emit_16(1518); +emit_16(1582); +emit_16(1517); +emit_16(1582); +emit_16(1518); +emit_16(1583); +emit_16(1519); +emit_16(1583); +emit_16(1518); +emit_16(1583); +emit_16(1519); +emit_16(1584); +emit_16(1520); +emit_16(1584); +emit_16(1519); +emit_16(1584); +emit_16(1520); +emit_16(1585); +emit_16(1521); +emit_16(1585); +emit_16(1520); +emit_16(1585); +emit_16(1521); +emit_16(1586); +emit_16(1522); +emit_16(1586); +emit_16(1521); +emit_16(1586); +emit_16(1522); +emit_16(1587); +emit_16(1523); +emit_16(1587); +emit_16(1522); +emit_16(1587); +emit_16(1523); +emit_16(1588); +emit_16(1524); +emit_16(1588); +emit_16(1523); +emit_16(1588); +emit_16(1524); +emit_16(1589); +emit_16(1525); +emit_16(1589); +emit_16(1524); +emit_16(1589); +emit_16(1525); +emit_16(1590); +emit_16(1526); +emit_16(1590); +emit_16(1525); +emit_16(1590); +emit_16(1526); +emit_16(1591); +emit_16(1527); +emit_16(1591); +emit_16(1526); +emit_16(1591); +emit_16(1527); +emit_16(1592); +emit_16(1528); +emit_16(1592); +emit_16(1527); +emit_16(1592); +emit_16(1528); +emit_16(1593); +emit_16(1529); +emit_16(1593); +emit_16(1528); +emit_16(1593); +emit_16(1529); +emit_16(1594); +emit_16(1530); +emit_16(1594); +emit_16(1529); +emit_16(1594); +emit_16(1530); +emit_16(1595); +emit_16(1531); +emit_16(1595); +emit_16(1530); +emit_16(1595); +emit_16(1531); +emit_16(1596); +emit_16(1532); +emit_16(1596); +emit_16(1531); +emit_16(1596); +emit_16(1532); +emit_16(1597); +emit_16(1533); +emit_16(1597); +emit_16(1532); +emit_16(1597); +emit_16(1533); +emit_16(1598); +emit_16(1534); +emit_16(1598); +emit_16(1533); +emit_16(1598); +emit_16(1534); +emit_16(1599); +emit_16(1535); +emit_16(1599); +emit_16(1534); +emit_16(1600); +emit_16(1536); +emit_16(1601); +emit_16(1537); +emit_16(1601); +emit_16(1536); +emit_16(1601); +emit_16(1537); +emit_16(1602); +emit_16(1538); +emit_16(1602); +emit_16(1537); +emit_16(1602); +emit_16(1538); +emit_16(1603); +emit_16(1539); +emit_16(1603); +emit_16(1538); +emit_16(1603); +emit_16(1539); +emit_16(1604); +emit_16(1540); +emit_16(1604); +emit_16(1539); +emit_16(1604); +emit_16(1540); +emit_16(1605); +emit_16(1541); +emit_16(1605); +emit_16(1540); +emit_16(1605); +emit_16(1541); +emit_16(1606); +emit_16(1542); +emit_16(1606); +emit_16(1541); +emit_16(1606); +emit_16(1542); +emit_16(1607); +emit_16(1543); +emit_16(1607); +emit_16(1542); +emit_16(1607); +emit_16(1543); +emit_16(1608); +emit_16(1544); +emit_16(1608); +emit_16(1543); +emit_16(1608); +emit_16(1544); +emit_16(1609); +emit_16(1545); +emit_16(1609); +emit_16(1544); +emit_16(1609); +emit_16(1545); +emit_16(1610); +emit_16(1546); +emit_16(1610); +emit_16(1545); +emit_16(1610); +emit_16(1546); +emit_16(1611); +emit_16(1547); +emit_16(1611); +emit_16(1546); +emit_16(1611); +emit_16(1547); +emit_16(1612); +emit_16(1548); +emit_16(1612); +emit_16(1547); +emit_16(1612); +emit_16(1548); +emit_16(1613); +emit_16(1549); +emit_16(1613); +emit_16(1548); +emit_16(1613); +emit_16(1549); +emit_16(1614); +emit_16(1550); +emit_16(1614); +emit_16(1549); +emit_16(1614); +emit_16(1550); +emit_16(1615); +emit_16(1551); +emit_16(1615); +emit_16(1550); +emit_16(1615); +emit_16(1551); +emit_16(1616); +emit_16(1552); +emit_16(1616); +emit_16(1551); +emit_16(1616); +emit_16(1552); +emit_16(1617); +emit_16(1553); +emit_16(1617); +emit_16(1552); +emit_16(1617); +emit_16(1553); +emit_16(1618); +emit_16(1554); +emit_16(1618); +emit_16(1553); +emit_16(1618); +emit_16(1554); +emit_16(1619); +emit_16(1555); +emit_16(1619); +emit_16(1554); +emit_16(1619); +emit_16(1555); +emit_16(1620); +emit_16(1556); +emit_16(1620); +emit_16(1555); +emit_16(1620); +emit_16(1556); +emit_16(1621); +emit_16(1557); +emit_16(1621); +emit_16(1556); +emit_16(1621); +emit_16(1557); +emit_16(1622); +emit_16(1558); +emit_16(1622); +emit_16(1557); +emit_16(1622); +emit_16(1558); +emit_16(1623); +emit_16(1559); +emit_16(1623); +emit_16(1558); +emit_16(1623); +emit_16(1559); +emit_16(1624); +emit_16(1560); +emit_16(1624); +emit_16(1559); +emit_16(1624); +emit_16(1560); +emit_16(1625); +emit_16(1561); +emit_16(1625); +emit_16(1560); +emit_16(1625); +emit_16(1561); +emit_16(1626); +emit_16(1562); +emit_16(1626); +emit_16(1561); +emit_16(1626); +emit_16(1562); +emit_16(1627); +emit_16(1563); +emit_16(1627); +emit_16(1562); +emit_16(1627); +emit_16(1563); +emit_16(1628); +emit_16(1564); +emit_16(1628); +emit_16(1563); +emit_16(1628); +emit_16(1564); +emit_16(1629); +emit_16(1565); +emit_16(1629); +emit_16(1564); +emit_16(1629); +emit_16(1565); +emit_16(1630); +emit_16(1566); +emit_16(1630); +emit_16(1565); +emit_16(1630); +emit_16(1566); +emit_16(1631); +emit_16(1567); +emit_16(1631); +emit_16(1566); +emit_16(1631); +emit_16(1567); +emit_16(1632); +emit_16(1568); +emit_16(1632); +emit_16(1567); +emit_16(1632); +emit_16(1568); +emit_16(1633); +emit_16(1569); +emit_16(1633); +emit_16(1568); +emit_16(1633); +emit_16(1569); +emit_16(1634); +emit_16(1570); +emit_16(1634); +emit_16(1569); +emit_16(1634); +emit_16(1570); +emit_16(1635); +emit_16(1571); +emit_16(1635); +emit_16(1570); +emit_16(1635); +emit_16(1571); +emit_16(1636); +emit_16(1572); +emit_16(1636); +emit_16(1571); +emit_16(1636); +emit_16(1572); +emit_16(1637); +emit_16(1573); +emit_16(1637); +emit_16(1572); +emit_16(1637); +emit_16(1573); +emit_16(1638); +emit_16(1574); +emit_16(1638); +emit_16(1573); +emit_16(1638); +emit_16(1574); +emit_16(1639); +emit_16(1575); +emit_16(1639); +emit_16(1574); +emit_16(1639); +emit_16(1575); +emit_16(1640); +emit_16(1576); +emit_16(1640); +emit_16(1575); +emit_16(1640); +emit_16(1576); +emit_16(1641); +emit_16(1577); +emit_16(1641); +emit_16(1576); +emit_16(1641); +emit_16(1577); +emit_16(1642); +emit_16(1578); +emit_16(1642); +emit_16(1577); +emit_16(1642); +emit_16(1578); +emit_16(1643); +emit_16(1579); +emit_16(1643); +emit_16(1578); +emit_16(1643); +emit_16(1579); +emit_16(1644); +emit_16(1580); +emit_16(1644); +emit_16(1579); +emit_16(1644); +emit_16(1580); +emit_16(1645); +emit_16(1581); +emit_16(1645); +emit_16(1580); +emit_16(1645); +emit_16(1581); +emit_16(1646); +emit_16(1582); +emit_16(1646); +emit_16(1581); +emit_16(1646); +emit_16(1582); +emit_16(1647); +emit_16(1583); +emit_16(1647); +emit_16(1582); +emit_16(1647); +emit_16(1583); +emit_16(1648); +emit_16(1584); +emit_16(1648); +emit_16(1583); +emit_16(1648); +emit_16(1584); +emit_16(1649); +emit_16(1585); +emit_16(1649); +emit_16(1584); +emit_16(1649); +emit_16(1585); +emit_16(1650); +emit_16(1586); +emit_16(1650); +emit_16(1585); +emit_16(1650); +emit_16(1586); +emit_16(1651); +emit_16(1587); +emit_16(1651); +emit_16(1586); +emit_16(1651); +emit_16(1587); +emit_16(1652); +emit_16(1588); +emit_16(1652); +emit_16(1587); +emit_16(1652); +emit_16(1588); +emit_16(1653); +emit_16(1589); +emit_16(1653); +emit_16(1588); +emit_16(1653); +emit_16(1589); +emit_16(1654); +emit_16(1590); +emit_16(1654); +emit_16(1589); +emit_16(1654); +emit_16(1590); +emit_16(1655); +emit_16(1591); +emit_16(1655); +emit_16(1590); +emit_16(1655); +emit_16(1591); +emit_16(1656); +emit_16(1592); +emit_16(1656); +emit_16(1591); +emit_16(1656); +emit_16(1592); +emit_16(1657); +emit_16(1593); +emit_16(1657); +emit_16(1592); +emit_16(1657); +emit_16(1593); +emit_16(1658); +emit_16(1594); +emit_16(1658); +emit_16(1593); +emit_16(1658); +emit_16(1594); +emit_16(1659); +emit_16(1595); +emit_16(1659); +emit_16(1594); +emit_16(1659); +emit_16(1595); +emit_16(1660); +emit_16(1596); +emit_16(1660); +emit_16(1595); +emit_16(1660); +emit_16(1596); +emit_16(1661); +emit_16(1597); +emit_16(1661); +emit_16(1596); +emit_16(1661); +emit_16(1597); +emit_16(1662); +emit_16(1598); +emit_16(1662); +emit_16(1597); +emit_16(1662); +emit_16(1598); +emit_16(1663); +emit_16(1599); +emit_16(1663); +emit_16(1598); +emit_16(1664); +emit_16(1600); +emit_16(1665); +emit_16(1601); +emit_16(1665); +emit_16(1600); +emit_16(1665); +emit_16(1601); +emit_16(1666); +emit_16(1602); +emit_16(1666); +emit_16(1601); +emit_16(1666); +emit_16(1602); +emit_16(1667); +emit_16(1603); +emit_16(1667); +emit_16(1602); +emit_16(1667); +emit_16(1603); +emit_16(1668); +emit_16(1604); +emit_16(1668); +emit_16(1603); +emit_16(1668); +emit_16(1604); +emit_16(1669); +emit_16(1605); +emit_16(1669); +emit_16(1604); +emit_16(1669); +emit_16(1605); +emit_16(1670); +emit_16(1606); +emit_16(1670); +emit_16(1605); +emit_16(1670); +emit_16(1606); +emit_16(1671); +emit_16(1607); +emit_16(1671); +emit_16(1606); +emit_16(1671); +emit_16(1607); +emit_16(1672); +emit_16(1608); +emit_16(1672); +emit_16(1607); +emit_16(1672); +emit_16(1608); +emit_16(1673); +emit_16(1609); +emit_16(1673); +emit_16(1608); +emit_16(1673); +emit_16(1609); +emit_16(1674); +emit_16(1610); +emit_16(1674); +emit_16(1609); +emit_16(1674); +emit_16(1610); +emit_16(1675); +emit_16(1611); +emit_16(1675); +emit_16(1610); +emit_16(1675); +emit_16(1611); +emit_16(1676); +emit_16(1612); +emit_16(1676); +emit_16(1611); +emit_16(1676); +emit_16(1612); +emit_16(1677); +emit_16(1613); +emit_16(1677); +emit_16(1612); +emit_16(1677); +emit_16(1613); +emit_16(1678); +emit_16(1614); +emit_16(1678); +emit_16(1613); +emit_16(1678); +emit_16(1614); +emit_16(1679); +emit_16(1615); +emit_16(1679); +emit_16(1614); +emit_16(1679); +emit_16(1615); +emit_16(1680); +emit_16(1616); +emit_16(1680); +emit_16(1615); +emit_16(1680); +emit_16(1616); +emit_16(1681); +emit_16(1617); +emit_16(1681); +emit_16(1616); +emit_16(1681); +emit_16(1617); +emit_16(1682); +emit_16(1618); +emit_16(1682); +emit_16(1617); +emit_16(1682); +emit_16(1618); +emit_16(1683); +emit_16(1619); +emit_16(1683); +emit_16(1618); +emit_16(1683); +emit_16(1619); +emit_16(1684); +emit_16(1620); +emit_16(1684); +emit_16(1619); +emit_16(1684); +emit_16(1620); +emit_16(1685); +emit_16(1621); +emit_16(1685); +emit_16(1620); +emit_16(1685); +emit_16(1621); +emit_16(1686); +emit_16(1622); +emit_16(1686); +emit_16(1621); +emit_16(1686); +emit_16(1622); +emit_16(1687); +emit_16(1623); +emit_16(1687); +emit_16(1622); +emit_16(1687); +emit_16(1623); +emit_16(1688); +emit_16(1624); +emit_16(1688); +emit_16(1623); +emit_16(1688); +emit_16(1624); +emit_16(1689); +emit_16(1625); +emit_16(1689); +emit_16(1624); +emit_16(1689); +emit_16(1625); +emit_16(1690); +emit_16(1626); +emit_16(1690); +emit_16(1625); +emit_16(1690); +emit_16(1626); +emit_16(1691); +emit_16(1627); +emit_16(1691); +emit_16(1626); +emit_16(1691); +emit_16(1627); +emit_16(1692); +emit_16(1628); +emit_16(1692); +emit_16(1627); +emit_16(1692); +emit_16(1628); +emit_16(1693); +emit_16(1629); +emit_16(1693); +emit_16(1628); +emit_16(1693); +emit_16(1629); +emit_16(1694); +emit_16(1630); +emit_16(1694); +emit_16(1629); +emit_16(1694); +emit_16(1630); +emit_16(1695); +emit_16(1631); +emit_16(1695); +emit_16(1630); +emit_16(1695); +emit_16(1631); +emit_16(1696); +emit_16(1632); +emit_16(1696); +emit_16(1631); +emit_16(1696); +emit_16(1632); +emit_16(1697); +emit_16(1633); +emit_16(1697); +emit_16(1632); +emit_16(1697); +emit_16(1633); +emit_16(1698); +emit_16(1634); +emit_16(1698); +emit_16(1633); +emit_16(1698); +emit_16(1634); +emit_16(1699); +emit_16(1635); +emit_16(1699); +emit_16(1634); +emit_16(1699); +emit_16(1635); +emit_16(1700); +emit_16(1636); +emit_16(1700); +emit_16(1635); +emit_16(1700); +emit_16(1636); +emit_16(1701); +emit_16(1637); +emit_16(1701); +emit_16(1636); +emit_16(1701); +emit_16(1637); +emit_16(1702); +emit_16(1638); +emit_16(1702); +emit_16(1637); +emit_16(1702); +emit_16(1638); +emit_16(1703); +emit_16(1639); +emit_16(1703); +emit_16(1638); +emit_16(1703); +emit_16(1639); +emit_16(1704); +emit_16(1640); +emit_16(1704); +emit_16(1639); +emit_16(1704); +emit_16(1640); +emit_16(1705); +emit_16(1641); +emit_16(1705); +emit_16(1640); +emit_16(1705); +emit_16(1641); +emit_16(1706); +emit_16(1642); +emit_16(1706); +emit_16(1641); +emit_16(1706); +emit_16(1642); +emit_16(1707); +emit_16(1643); +emit_16(1707); +emit_16(1642); +emit_16(1707); +emit_16(1643); +emit_16(1708); +emit_16(1644); +emit_16(1708); +emit_16(1643); +emit_16(1708); +emit_16(1644); +emit_16(1709); +emit_16(1645); +emit_16(1709); +emit_16(1644); +emit_16(1709); +emit_16(1645); +emit_16(1710); +emit_16(1646); +emit_16(1710); +emit_16(1645); +emit_16(1710); +emit_16(1646); +emit_16(1711); +emit_16(1647); +emit_16(1711); +emit_16(1646); +emit_16(1711); +emit_16(1647); +emit_16(1712); +emit_16(1648); +emit_16(1712); +emit_16(1647); +emit_16(1712); +emit_16(1648); +emit_16(1713); +emit_16(1649); +emit_16(1713); +emit_16(1648); +emit_16(1713); +emit_16(1649); +emit_16(1714); +emit_16(1650); +emit_16(1714); +emit_16(1649); +emit_16(1714); +emit_16(1650); +emit_16(1715); +emit_16(1651); +emit_16(1715); +emit_16(1650); +emit_16(1715); +emit_16(1651); +emit_16(1716); +emit_16(1652); +emit_16(1716); +emit_16(1651); +emit_16(1716); +emit_16(1652); +emit_16(1717); +emit_16(1653); +emit_16(1717); +emit_16(1652); +emit_16(1717); +emit_16(1653); +emit_16(1718); +emit_16(1654); +emit_16(1718); +emit_16(1653); +emit_16(1718); +emit_16(1654); +emit_16(1719); +emit_16(1655); +emit_16(1719); +emit_16(1654); +emit_16(1719); +emit_16(1655); +emit_16(1720); +emit_16(1656); +emit_16(1720); +emit_16(1655); +emit_16(1720); +emit_16(1656); +emit_16(1721); +emit_16(1657); +emit_16(1721); +emit_16(1656); +emit_16(1721); +emit_16(1657); +emit_16(1722); +emit_16(1658); +emit_16(1722); +emit_16(1657); +emit_16(1722); +emit_16(1658); +emit_16(1723); +emit_16(1659); +emit_16(1723); +emit_16(1658); +emit_16(1723); +emit_16(1659); +emit_16(1724); +emit_16(1660); +emit_16(1724); +emit_16(1659); +emit_16(1724); +emit_16(1660); +emit_16(1725); +emit_16(1661); +emit_16(1725); +emit_16(1660); +emit_16(1725); +emit_16(1661); +emit_16(1726); +emit_16(1662); +emit_16(1726); +emit_16(1661); +emit_16(1726); +emit_16(1662); +emit_16(1727); +emit_16(1663); +emit_16(1727); +emit_16(1662); +emit_16(1728); +emit_16(1664); +emit_16(1729); +emit_16(1665); +emit_16(1729); +emit_16(1664); +emit_16(1729); +emit_16(1665); +emit_16(1730); +emit_16(1666); +emit_16(1730); +emit_16(1665); +emit_16(1730); +emit_16(1666); +emit_16(1731); +emit_16(1667); +emit_16(1731); +emit_16(1666); +emit_16(1731); +emit_16(1667); +emit_16(1732); +emit_16(1668); +emit_16(1732); +emit_16(1667); +emit_16(1732); +emit_16(1668); +emit_16(1733); +emit_16(1669); +emit_16(1733); +emit_16(1668); +emit_16(1733); +emit_16(1669); +emit_16(1734); +emit_16(1670); +emit_16(1734); +emit_16(1669); +emit_16(1734); +emit_16(1670); +emit_16(1735); +emit_16(1671); +emit_16(1735); +emit_16(1670); +emit_16(1735); +emit_16(1671); +emit_16(1736); +emit_16(1672); +emit_16(1736); +emit_16(1671); +emit_16(1736); +emit_16(1672); +emit_16(1737); +emit_16(1673); +emit_16(1737); +emit_16(1672); +emit_16(1737); +emit_16(1673); +emit_16(1738); +emit_16(1674); +emit_16(1738); +emit_16(1673); +emit_16(1738); +emit_16(1674); +emit_16(1739); +emit_16(1675); +emit_16(1739); +emit_16(1674); +emit_16(1739); +emit_16(1675); +emit_16(1740); +emit_16(1676); +emit_16(1740); +emit_16(1675); +emit_16(1740); +emit_16(1676); +emit_16(1741); +emit_16(1677); +emit_16(1741); +emit_16(1676); +emit_16(1741); +emit_16(1677); +emit_16(1742); +emit_16(1678); +emit_16(1742); +emit_16(1677); +emit_16(1742); +emit_16(1678); +emit_16(1743); +emit_16(1679); +emit_16(1743); +emit_16(1678); +emit_16(1743); +emit_16(1679); +emit_16(1744); +emit_16(1680); +emit_16(1744); +emit_16(1679); +emit_16(1744); +emit_16(1680); +emit_16(1745); +emit_16(1681); +emit_16(1745); +emit_16(1680); +emit_16(1745); +emit_16(1681); +emit_16(1746); +emit_16(1682); +emit_16(1746); +emit_16(1681); +emit_16(1746); +emit_16(1682); +emit_16(1747); +emit_16(1683); +emit_16(1747); +emit_16(1682); +emit_16(1747); +emit_16(1683); +emit_16(1748); +emit_16(1684); +emit_16(1748); +emit_16(1683); +emit_16(1748); +emit_16(1684); +emit_16(1749); +emit_16(1685); +emit_16(1749); +emit_16(1684); +emit_16(1749); +emit_16(1685); +emit_16(1750); +emit_16(1686); +emit_16(1750); +emit_16(1685); +emit_16(1750); +emit_16(1686); +emit_16(1751); +emit_16(1687); +emit_16(1751); +emit_16(1686); +emit_16(1751); +emit_16(1687); +emit_16(1752); +emit_16(1688); +emit_16(1752); +emit_16(1687); +emit_16(1752); +emit_16(1688); +emit_16(1753); +emit_16(1689); +emit_16(1753); +emit_16(1688); +emit_16(1753); +emit_16(1689); +emit_16(1754); +emit_16(1690); +emit_16(1754); +emit_16(1689); +emit_16(1754); +emit_16(1690); +emit_16(1755); +emit_16(1691); +emit_16(1755); +emit_16(1690); +emit_16(1755); +emit_16(1691); +emit_16(1756); +emit_16(1692); +emit_16(1756); +emit_16(1691); +emit_16(1756); +emit_16(1692); +emit_16(1757); +emit_16(1693); +emit_16(1757); +emit_16(1692); +emit_16(1757); +emit_16(1693); +emit_16(1758); +emit_16(1694); +emit_16(1758); +emit_16(1693); +emit_16(1758); +emit_16(1694); +emit_16(1759); +emit_16(1695); +emit_16(1759); +emit_16(1694); +emit_16(1759); +emit_16(1695); +emit_16(1760); +emit_16(1696); +emit_16(1760); +emit_16(1695); +emit_16(1760); +emit_16(1696); +emit_16(1761); +emit_16(1697); +emit_16(1761); +emit_16(1696); +emit_16(1761); +emit_16(1697); +emit_16(1762); +emit_16(1698); +emit_16(1762); +emit_16(1697); +emit_16(1762); +emit_16(1698); +emit_16(1763); +emit_16(1699); +emit_16(1763); +emit_16(1698); +emit_16(1763); +emit_16(1699); +emit_16(1764); +emit_16(1700); +emit_16(1764); +emit_16(1699); +emit_16(1764); +emit_16(1700); +emit_16(1765); +emit_16(1701); +emit_16(1765); +emit_16(1700); +emit_16(1765); +emit_16(1701); +emit_16(1766); +emit_16(1702); +emit_16(1766); +emit_16(1701); +emit_16(1766); +emit_16(1702); +emit_16(1767); +emit_16(1703); +emit_16(1767); +emit_16(1702); +emit_16(1767); +emit_16(1703); +emit_16(1768); +emit_16(1704); +emit_16(1768); +emit_16(1703); +emit_16(1768); +emit_16(1704); +emit_16(1769); +emit_16(1705); +emit_16(1769); +emit_16(1704); +emit_16(1769); +emit_16(1705); +emit_16(1770); +emit_16(1706); +emit_16(1770); +emit_16(1705); +emit_16(1770); +emit_16(1706); +emit_16(1771); +emit_16(1707); +emit_16(1771); +emit_16(1706); +emit_16(1771); +emit_16(1707); +emit_16(1772); +emit_16(1708); +emit_16(1772); +emit_16(1707); +emit_16(1772); +emit_16(1708); +emit_16(1773); +emit_16(1709); +emit_16(1773); +emit_16(1708); +emit_16(1773); +emit_16(1709); +emit_16(1774); +emit_16(1710); +emit_16(1774); +emit_16(1709); +emit_16(1774); +emit_16(1710); +emit_16(1775); +emit_16(1711); +emit_16(1775); +emit_16(1710); +emit_16(1775); +emit_16(1711); +emit_16(1776); +emit_16(1712); +emit_16(1776); +emit_16(1711); +emit_16(1776); +emit_16(1712); +emit_16(1777); +emit_16(1713); +emit_16(1777); +emit_16(1712); +emit_16(1777); +emit_16(1713); +emit_16(1778); +emit_16(1714); +emit_16(1778); +emit_16(1713); +emit_16(1778); +emit_16(1714); +emit_16(1779); +emit_16(1715); +emit_16(1779); +emit_16(1714); +emit_16(1779); +emit_16(1715); +emit_16(1780); +emit_16(1716); +emit_16(1780); +emit_16(1715); +emit_16(1780); +emit_16(1716); +emit_16(1781); +emit_16(1717); +emit_16(1781); +emit_16(1716); +emit_16(1781); +emit_16(1717); +emit_16(1782); +emit_16(1718); +emit_16(1782); +emit_16(1717); +emit_16(1782); +emit_16(1718); +emit_16(1783); +emit_16(1719); +emit_16(1783); +emit_16(1718); +emit_16(1783); +emit_16(1719); +emit_16(1784); +emit_16(1720); +emit_16(1784); +emit_16(1719); +emit_16(1784); +emit_16(1720); +emit_16(1785); +emit_16(1721); +emit_16(1785); +emit_16(1720); +emit_16(1785); +emit_16(1721); +emit_16(1786); +emit_16(1722); +emit_16(1786); +emit_16(1721); +emit_16(1786); +emit_16(1722); +emit_16(1787); +emit_16(1723); +emit_16(1787); +emit_16(1722); +emit_16(1787); +emit_16(1723); +emit_16(1788); +emit_16(1724); +emit_16(1788); +emit_16(1723); +emit_16(1788); +emit_16(1724); +emit_16(1789); +emit_16(1725); +emit_16(1789); +emit_16(1724); +emit_16(1789); +emit_16(1725); +emit_16(1790); +emit_16(1726); +emit_16(1790); +emit_16(1725); +emit_16(1790); +emit_16(1726); +emit_16(1791); +emit_16(1727); +emit_16(1791); +emit_16(1726); +emit_16(1792); +emit_16(1728); +emit_16(1793); +emit_16(1729); +emit_16(1793); +emit_16(1728); +emit_16(1793); +emit_16(1729); +emit_16(1794); +emit_16(1730); +emit_16(1794); +emit_16(1729); +emit_16(1794); +emit_16(1730); +emit_16(1795); +emit_16(1731); +emit_16(1795); +emit_16(1730); +emit_16(1795); +emit_16(1731); +emit_16(1796); +emit_16(1732); +emit_16(1796); +emit_16(1731); +emit_16(1796); +emit_16(1732); +emit_16(1797); +emit_16(1733); +emit_16(1797); +emit_16(1732); +emit_16(1797); +emit_16(1733); +emit_16(1798); +emit_16(1734); +emit_16(1798); +emit_16(1733); +emit_16(1798); +emit_16(1734); +emit_16(1799); +emit_16(1735); +emit_16(1799); +emit_16(1734); +emit_16(1799); +emit_16(1735); +emit_16(1800); +emit_16(1736); +emit_16(1800); +emit_16(1735); +emit_16(1800); +emit_16(1736); +emit_16(1801); +emit_16(1737); +emit_16(1801); +emit_16(1736); +emit_16(1801); +emit_16(1737); +emit_16(1802); +emit_16(1738); +emit_16(1802); +emit_16(1737); +emit_16(1802); +emit_16(1738); +emit_16(1803); +emit_16(1739); +emit_16(1803); +emit_16(1738); +emit_16(1803); +emit_16(1739); +emit_16(1804); +emit_16(1740); +emit_16(1804); +emit_16(1739); +emit_16(1804); +emit_16(1740); +emit_16(1805); +emit_16(1741); +emit_16(1805); +emit_16(1740); +emit_16(1805); +emit_16(1741); +emit_16(1806); +emit_16(1742); +emit_16(1806); +emit_16(1741); +emit_16(1806); +emit_16(1742); +emit_16(1807); +emit_16(1743); +emit_16(1807); +emit_16(1742); +emit_16(1807); +emit_16(1743); +emit_16(1808); +emit_16(1744); +emit_16(1808); +emit_16(1743); +emit_16(1808); +emit_16(1744); +emit_16(1809); +emit_16(1745); +emit_16(1809); +emit_16(1744); +emit_16(1809); +emit_16(1745); +emit_16(1810); +emit_16(1746); +emit_16(1810); +emit_16(1745); +emit_16(1810); +emit_16(1746); +emit_16(1811); +emit_16(1747); +emit_16(1811); +emit_16(1746); +emit_16(1811); +emit_16(1747); +emit_16(1812); +emit_16(1748); +emit_16(1812); +emit_16(1747); +emit_16(1812); +emit_16(1748); +emit_16(1813); +emit_16(1749); +emit_16(1813); +emit_16(1748); +emit_16(1813); +emit_16(1749); +emit_16(1814); +emit_16(1750); +emit_16(1814); +emit_16(1749); +emit_16(1814); +emit_16(1750); +emit_16(1815); +emit_16(1751); +emit_16(1815); +emit_16(1750); +emit_16(1815); +emit_16(1751); +emit_16(1816); +emit_16(1752); +emit_16(1816); +emit_16(1751); +emit_16(1816); +emit_16(1752); +emit_16(1817); +emit_16(1753); +emit_16(1817); +emit_16(1752); +emit_16(1817); +emit_16(1753); +emit_16(1818); +emit_16(1754); +emit_16(1818); +emit_16(1753); +emit_16(1818); +emit_16(1754); +emit_16(1819); +emit_16(1755); +emit_16(1819); +emit_16(1754); +emit_16(1819); +emit_16(1755); +emit_16(1820); +emit_16(1756); +emit_16(1820); +emit_16(1755); +emit_16(1820); +emit_16(1756); +emit_16(1821); +emit_16(1757); +emit_16(1821); +emit_16(1756); +emit_16(1821); +emit_16(1757); +emit_16(1822); +emit_16(1758); +emit_16(1822); +emit_16(1757); +emit_16(1822); +emit_16(1758); +emit_16(1823); +emit_16(1759); +emit_16(1823); +emit_16(1758); +emit_16(1823); +emit_16(1759); +emit_16(1824); +emit_16(1760); +emit_16(1824); +emit_16(1759); +emit_16(1824); +emit_16(1760); +emit_16(1825); +emit_16(1761); +emit_16(1825); +emit_16(1760); +emit_16(1825); +emit_16(1761); +emit_16(1826); +emit_16(1762); +emit_16(1826); +emit_16(1761); +emit_16(1826); +emit_16(1762); +emit_16(1827); +emit_16(1763); +emit_16(1827); +emit_16(1762); +emit_16(1827); +emit_16(1763); +emit_16(1828); +emit_16(1764); +emit_16(1828); +emit_16(1763); +emit_16(1828); +emit_16(1764); +emit_16(1829); +emit_16(1765); +emit_16(1829); +emit_16(1764); +emit_16(1829); +emit_16(1765); +emit_16(1830); +emit_16(1766); +emit_16(1830); +emit_16(1765); +emit_16(1830); +emit_16(1766); +emit_16(1831); +emit_16(1767); +emit_16(1831); +emit_16(1766); +emit_16(1831); +emit_16(1767); +emit_16(1832); +emit_16(1768); +emit_16(1832); +emit_16(1767); +emit_16(1832); +emit_16(1768); +emit_16(1833); +emit_16(1769); +emit_16(1833); +emit_16(1768); +emit_16(1833); +emit_16(1769); +emit_16(1834); +emit_16(1770); +emit_16(1834); +emit_16(1769); +emit_16(1834); +emit_16(1770); +emit_16(1835); +emit_16(1771); +emit_16(1835); +emit_16(1770); +emit_16(1835); +emit_16(1771); +emit_16(1836); +emit_16(1772); +emit_16(1836); +emit_16(1771); +emit_16(1836); +emit_16(1772); +emit_16(1837); +emit_16(1773); +emit_16(1837); +emit_16(1772); +emit_16(1837); +emit_16(1773); +emit_16(1838); +emit_16(1774); +emit_16(1838); +emit_16(1773); +emit_16(1838); +emit_16(1774); +emit_16(1839); +emit_16(1775); +emit_16(1839); +emit_16(1774); +emit_16(1839); +emit_16(1775); +emit_16(1840); +emit_16(1776); +emit_16(1840); +emit_16(1775); +emit_16(1840); +emit_16(1776); +emit_16(1841); +emit_16(1777); +emit_16(1841); +emit_16(1776); +emit_16(1841); +emit_16(1777); +emit_16(1842); +emit_16(1778); +emit_16(1842); +emit_16(1777); +emit_16(1842); +emit_16(1778); +emit_16(1843); +emit_16(1779); +emit_16(1843); +emit_16(1778); +emit_16(1843); +emit_16(1779); +emit_16(1844); +emit_16(1780); +emit_16(1844); +emit_16(1779); +emit_16(1844); +emit_16(1780); +emit_16(1845); +emit_16(1781); +emit_16(1845); +emit_16(1780); +emit_16(1845); +emit_16(1781); +emit_16(1846); +emit_16(1782); +emit_16(1846); +emit_16(1781); +emit_16(1846); +emit_16(1782); +emit_16(1847); +emit_16(1783); +emit_16(1847); +emit_16(1782); +emit_16(1847); +emit_16(1783); +emit_16(1848); +emit_16(1784); +emit_16(1848); +emit_16(1783); +emit_16(1848); +emit_16(1784); +emit_16(1849); +emit_16(1785); +emit_16(1849); +emit_16(1784); +emit_16(1849); +emit_16(1785); +emit_16(1850); +emit_16(1786); +emit_16(1850); +emit_16(1785); +emit_16(1850); +emit_16(1786); +emit_16(1851); +emit_16(1787); +emit_16(1851); +emit_16(1786); +emit_16(1851); +emit_16(1787); +emit_16(1852); +emit_16(1788); +emit_16(1852); +emit_16(1787); +emit_16(1852); +emit_16(1788); +emit_16(1853); +emit_16(1789); +emit_16(1853); +emit_16(1788); +emit_16(1853); +emit_16(1789); +emit_16(1854); +emit_16(1790); +emit_16(1854); +emit_16(1789); +emit_16(1854); +emit_16(1790); +emit_16(1855); +emit_16(1791); +emit_16(1855); +emit_16(1790); +emit_16(1856); +emit_16(1792); +emit_16(1857); +emit_16(1793); +emit_16(1857); +emit_16(1792); +emit_16(1857); +emit_16(1793); +emit_16(1858); +emit_16(1794); +emit_16(1858); +emit_16(1793); +emit_16(1858); +emit_16(1794); +emit_16(1859); +emit_16(1795); +emit_16(1859); +emit_16(1794); +emit_16(1859); +emit_16(1795); +emit_16(1860); +emit_16(1796); +emit_16(1860); +emit_16(1795); +emit_16(1860); +emit_16(1796); +emit_16(1861); +emit_16(1797); +emit_16(1861); +emit_16(1796); +emit_16(1861); +emit_16(1797); +emit_16(1862); +emit_16(1798); +emit_16(1862); +emit_16(1797); +emit_16(1862); +emit_16(1798); +emit_16(1863); +emit_16(1799); +emit_16(1863); +emit_16(1798); +emit_16(1863); +emit_16(1799); +emit_16(1864); +emit_16(1800); +emit_16(1864); +emit_16(1799); +emit_16(1864); +emit_16(1800); +emit_16(1865); +emit_16(1801); +emit_16(1865); +emit_16(1800); +emit_16(1865); +emit_16(1801); +emit_16(1866); +emit_16(1802); +emit_16(1866); +emit_16(1801); +emit_16(1866); +emit_16(1802); +emit_16(1867); +emit_16(1803); +emit_16(1867); +emit_16(1802); +emit_16(1867); +emit_16(1803); +emit_16(1868); +emit_16(1804); +emit_16(1868); +emit_16(1803); +emit_16(1868); +emit_16(1804); +emit_16(1869); +emit_16(1805); +emit_16(1869); +emit_16(1804); +emit_16(1869); +emit_16(1805); +emit_16(1870); +emit_16(1806); +emit_16(1870); +emit_16(1805); +emit_16(1870); +emit_16(1806); +emit_16(1871); +emit_16(1807); +emit_16(1871); +emit_16(1806); +emit_16(1871); +emit_16(1807); +emit_16(1872); +emit_16(1808); +emit_16(1872); +emit_16(1807); +emit_16(1872); +emit_16(1808); +emit_16(1873); +emit_16(1809); +emit_16(1873); +emit_16(1808); +emit_16(1873); +emit_16(1809); +emit_16(1874); +emit_16(1810); +emit_16(1874); +emit_16(1809); +emit_16(1874); +emit_16(1810); +emit_16(1875); +emit_16(1811); +emit_16(1875); +emit_16(1810); +emit_16(1875); +emit_16(1811); +emit_16(1876); +emit_16(1812); +emit_16(1876); +emit_16(1811); +emit_16(1876); +emit_16(1812); +emit_16(1877); +emit_16(1813); +emit_16(1877); +emit_16(1812); +emit_16(1877); +emit_16(1813); +emit_16(1878); +emit_16(1814); +emit_16(1878); +emit_16(1813); +emit_16(1878); +emit_16(1814); +emit_16(1879); +emit_16(1815); +emit_16(1879); +emit_16(1814); +emit_16(1879); +emit_16(1815); +emit_16(1880); +emit_16(1816); +emit_16(1880); +emit_16(1815); +emit_16(1880); +emit_16(1816); +emit_16(1881); +emit_16(1817); +emit_16(1881); +emit_16(1816); +emit_16(1881); +emit_16(1817); +emit_16(1882); +emit_16(1818); +emit_16(1882); +emit_16(1817); +emit_16(1882); +emit_16(1818); +emit_16(1883); +emit_16(1819); +emit_16(1883); +emit_16(1818); +emit_16(1883); +emit_16(1819); +emit_16(1884); +emit_16(1820); +emit_16(1884); +emit_16(1819); +emit_16(1884); +emit_16(1820); +emit_16(1885); +emit_16(1821); +emit_16(1885); +emit_16(1820); +emit_16(1885); +emit_16(1821); +emit_16(1886); +emit_16(1822); +emit_16(1886); +emit_16(1821); +emit_16(1886); +emit_16(1822); +emit_16(1887); +emit_16(1823); +emit_16(1887); +emit_16(1822); +emit_16(1887); +emit_16(1823); +emit_16(1888); +emit_16(1824); +emit_16(1888); +emit_16(1823); +emit_16(1888); +emit_16(1824); +emit_16(1889); +emit_16(1825); +emit_16(1889); +emit_16(1824); +emit_16(1889); +emit_16(1825); +emit_16(1890); +emit_16(1826); +emit_16(1890); +emit_16(1825); +emit_16(1890); +emit_16(1826); +emit_16(1891); +emit_16(1827); +emit_16(1891); +emit_16(1826); +emit_16(1891); +emit_16(1827); +emit_16(1892); +emit_16(1828); +emit_16(1892); +emit_16(1827); +emit_16(1892); +emit_16(1828); +emit_16(1893); +emit_16(1829); +emit_16(1893); +emit_16(1828); +emit_16(1893); +emit_16(1829); +emit_16(1894); +emit_16(1830); +emit_16(1894); +emit_16(1829); +emit_16(1894); +emit_16(1830); +emit_16(1895); +emit_16(1831); +emit_16(1895); +emit_16(1830); +emit_16(1895); +emit_16(1831); +emit_16(1896); +emit_16(1832); +emit_16(1896); +emit_16(1831); +emit_16(1896); +emit_16(1832); +emit_16(1897); +emit_16(1833); +emit_16(1897); +emit_16(1832); +emit_16(1897); +emit_16(1833); +emit_16(1898); +emit_16(1834); +emit_16(1898); +emit_16(1833); +emit_16(1898); +emit_16(1834); +emit_16(1899); +emit_16(1835); +emit_16(1899); +emit_16(1834); +emit_16(1899); +emit_16(1835); +emit_16(1900); +emit_16(1836); +emit_16(1900); +emit_16(1835); +emit_16(1900); +emit_16(1836); +emit_16(1901); +emit_16(1837); +emit_16(1901); +emit_16(1836); +emit_16(1901); +emit_16(1837); +emit_16(1902); +emit_16(1838); +emit_16(1902); +emit_16(1837); +emit_16(1902); +emit_16(1838); +emit_16(1903); +emit_16(1839); +emit_16(1903); +emit_16(1838); +emit_16(1903); +emit_16(1839); +emit_16(1904); +emit_16(1840); +emit_16(1904); +emit_16(1839); +emit_16(1904); +emit_16(1840); +emit_16(1905); +emit_16(1841); +emit_16(1905); +emit_16(1840); +emit_16(1905); +emit_16(1841); +emit_16(1906); +emit_16(1842); +emit_16(1906); +emit_16(1841); +emit_16(1906); +emit_16(1842); +emit_16(1907); +emit_16(1843); +emit_16(1907); +emit_16(1842); +emit_16(1907); +emit_16(1843); +emit_16(1908); +emit_16(1844); +emit_16(1908); +emit_16(1843); +emit_16(1908); +emit_16(1844); +emit_16(1909); +emit_16(1845); +emit_16(1909); +emit_16(1844); +emit_16(1909); +emit_16(1845); +emit_16(1910); +emit_16(1846); +emit_16(1910); +emit_16(1845); +emit_16(1910); +emit_16(1846); +emit_16(1911); +emit_16(1847); +emit_16(1911); +emit_16(1846); +emit_16(1911); +emit_16(1847); +emit_16(1912); +emit_16(1848); +emit_16(1912); +emit_16(1847); +emit_16(1912); +emit_16(1848); +emit_16(1913); +emit_16(1849); +emit_16(1913); +emit_16(1848); +emit_16(1913); +emit_16(1849); +emit_16(1914); +emit_16(1850); +emit_16(1914); +emit_16(1849); +emit_16(1914); +emit_16(1850); +emit_16(1915); +emit_16(1851); +emit_16(1915); +emit_16(1850); +emit_16(1915); +emit_16(1851); +emit_16(1916); +emit_16(1852); +emit_16(1916); +emit_16(1851); +emit_16(1916); +emit_16(1852); +emit_16(1917); +emit_16(1853); +emit_16(1917); +emit_16(1852); +emit_16(1917); +emit_16(1853); +emit_16(1918); +emit_16(1854); +emit_16(1918); +emit_16(1853); +emit_16(1918); +emit_16(1854); +emit_16(1919); +emit_16(1855); +emit_16(1919); +emit_16(1854); +emit_16(1920); +emit_16(1856); +emit_16(1921); +emit_16(1857); +emit_16(1921); +emit_16(1856); +emit_16(1921); +emit_16(1857); +emit_16(1922); +emit_16(1858); +emit_16(1922); +emit_16(1857); +emit_16(1922); +emit_16(1858); +emit_16(1923); +emit_16(1859); +emit_16(1923); +emit_16(1858); +emit_16(1923); +emit_16(1859); +emit_16(1924); +emit_16(1860); +emit_16(1924); +emit_16(1859); +emit_16(1924); +emit_16(1860); +emit_16(1925); +emit_16(1861); +emit_16(1925); +emit_16(1860); +emit_16(1925); +emit_16(1861); +emit_16(1926); +emit_16(1862); +emit_16(1926); +emit_16(1861); +emit_16(1926); +emit_16(1862); +emit_16(1927); +emit_16(1863); +emit_16(1927); +emit_16(1862); +emit_16(1927); +emit_16(1863); +emit_16(1928); +emit_16(1864); +emit_16(1928); +emit_16(1863); +emit_16(1928); +emit_16(1864); +emit_16(1929); +emit_16(1865); +emit_16(1929); +emit_16(1864); +emit_16(1929); +emit_16(1865); +emit_16(1930); +emit_16(1866); +emit_16(1930); +emit_16(1865); +emit_16(1930); +emit_16(1866); +emit_16(1931); +emit_16(1867); +emit_16(1931); +emit_16(1866); +emit_16(1931); +emit_16(1867); +emit_16(1932); +emit_16(1868); +emit_16(1932); +emit_16(1867); +emit_16(1932); +emit_16(1868); +emit_16(1933); +emit_16(1869); +emit_16(1933); +emit_16(1868); +emit_16(1933); +emit_16(1869); +emit_16(1934); +emit_16(1870); +emit_16(1934); +emit_16(1869); +emit_16(1934); +emit_16(1870); +emit_16(1935); +emit_16(1871); +emit_16(1935); +emit_16(1870); +emit_16(1935); +emit_16(1871); +emit_16(1936); +emit_16(1872); +emit_16(1936); +emit_16(1871); +emit_16(1936); +emit_16(1872); +emit_16(1937); +emit_16(1873); +emit_16(1937); +emit_16(1872); +emit_16(1937); +emit_16(1873); +emit_16(1938); +emit_16(1874); +emit_16(1938); +emit_16(1873); +emit_16(1938); +emit_16(1874); +emit_16(1939); +emit_16(1875); +emit_16(1939); +emit_16(1874); +emit_16(1939); +emit_16(1875); +emit_16(1940); +emit_16(1876); +emit_16(1940); +emit_16(1875); +emit_16(1940); +emit_16(1876); +emit_16(1941); +emit_16(1877); +emit_16(1941); +emit_16(1876); +emit_16(1941); +emit_16(1877); +emit_16(1942); +emit_16(1878); +emit_16(1942); +emit_16(1877); +emit_16(1942); +emit_16(1878); +emit_16(1943); +emit_16(1879); +emit_16(1943); +emit_16(1878); +emit_16(1943); +emit_16(1879); +emit_16(1944); +emit_16(1880); +emit_16(1944); +emit_16(1879); +emit_16(1944); +emit_16(1880); +emit_16(1945); +emit_16(1881); +emit_16(1945); +emit_16(1880); +emit_16(1945); +emit_16(1881); +emit_16(1946); +emit_16(1882); +emit_16(1946); +emit_16(1881); +emit_16(1946); +emit_16(1882); +emit_16(1947); +emit_16(1883); +emit_16(1947); +emit_16(1882); +emit_16(1947); +emit_16(1883); +emit_16(1948); +emit_16(1884); +emit_16(1948); +emit_16(1883); +emit_16(1948); +emit_16(1884); +emit_16(1949); +emit_16(1885); +emit_16(1949); +emit_16(1884); +emit_16(1949); +emit_16(1885); +emit_16(1950); +emit_16(1886); +emit_16(1950); +emit_16(1885); +emit_16(1950); +emit_16(1886); +emit_16(1951); +emit_16(1887); +emit_16(1951); +emit_16(1886); +emit_16(1951); +emit_16(1887); +emit_16(1952); +emit_16(1888); +emit_16(1952); +emit_16(1887); +emit_16(1952); +emit_16(1888); +emit_16(1953); +emit_16(1889); +emit_16(1953); +emit_16(1888); +emit_16(1953); +emit_16(1889); +emit_16(1954); +emit_16(1890); +emit_16(1954); +emit_16(1889); +emit_16(1954); +emit_16(1890); +emit_16(1955); +emit_16(1891); +emit_16(1955); +emit_16(1890); +emit_16(1955); +emit_16(1891); +emit_16(1956); +emit_16(1892); +emit_16(1956); +emit_16(1891); +emit_16(1956); +emit_16(1892); +emit_16(1957); +emit_16(1893); +emit_16(1957); +emit_16(1892); +emit_16(1957); +emit_16(1893); +emit_16(1958); +emit_16(1894); +emit_16(1958); +emit_16(1893); +emit_16(1958); +emit_16(1894); +emit_16(1959); +emit_16(1895); +emit_16(1959); +emit_16(1894); +emit_16(1959); +emit_16(1895); +emit_16(1960); +emit_16(1896); +emit_16(1960); +emit_16(1895); +emit_16(1960); +emit_16(1896); +emit_16(1961); +emit_16(1897); +emit_16(1961); +emit_16(1896); +emit_16(1961); +emit_16(1897); +emit_16(1962); +emit_16(1898); +emit_16(1962); +emit_16(1897); +emit_16(1962); +emit_16(1898); +emit_16(1963); +emit_16(1899); +emit_16(1963); +emit_16(1898); +emit_16(1963); +emit_16(1899); +emit_16(1964); +emit_16(1900); +emit_16(1964); +emit_16(1899); +emit_16(1964); +emit_16(1900); +emit_16(1965); +emit_16(1901); +emit_16(1965); +emit_16(1900); +emit_16(1965); +emit_16(1901); +emit_16(1966); +emit_16(1902); +emit_16(1966); +emit_16(1901); +emit_16(1966); +emit_16(1902); +emit_16(1967); +emit_16(1903); +emit_16(1967); +emit_16(1902); +emit_16(1967); +emit_16(1903); +emit_16(1968); +emit_16(1904); +emit_16(1968); +emit_16(1903); +emit_16(1968); +emit_16(1904); +emit_16(1969); +emit_16(1905); +emit_16(1969); +emit_16(1904); +emit_16(1969); +emit_16(1905); +emit_16(1970); +emit_16(1906); +emit_16(1970); +emit_16(1905); +emit_16(1970); +emit_16(1906); +emit_16(1971); +emit_16(1907); +emit_16(1971); +emit_16(1906); +emit_16(1971); +emit_16(1907); +emit_16(1972); +emit_16(1908); +emit_16(1972); +emit_16(1907); +emit_16(1972); +emit_16(1908); +emit_16(1973); +emit_16(1909); +emit_16(1973); +emit_16(1908); +emit_16(1973); +emit_16(1909); +emit_16(1974); +emit_16(1910); +emit_16(1974); +emit_16(1909); +emit_16(1974); +emit_16(1910); +emit_16(1975); +emit_16(1911); +emit_16(1975); +emit_16(1910); +emit_16(1975); +emit_16(1911); +emit_16(1976); +emit_16(1912); +emit_16(1976); +emit_16(1911); +emit_16(1976); +emit_16(1912); +emit_16(1977); +emit_16(1913); +emit_16(1977); +emit_16(1912); +emit_16(1977); +emit_16(1913); +emit_16(1978); +emit_16(1914); +emit_16(1978); +emit_16(1913); +emit_16(1978); +emit_16(1914); +emit_16(1979); +emit_16(1915); +emit_16(1979); +emit_16(1914); +emit_16(1979); +emit_16(1915); +emit_16(1980); +emit_16(1916); +emit_16(1980); +emit_16(1915); +emit_16(1980); +emit_16(1916); +emit_16(1981); +emit_16(1917); +emit_16(1981); +emit_16(1916); +emit_16(1981); +emit_16(1917); +emit_16(1982); +emit_16(1918); +emit_16(1982); +emit_16(1917); +emit_16(1982); +emit_16(1918); +emit_16(1983); +emit_16(1919); +emit_16(1983); +emit_16(1918); +emit_16(1984); +emit_16(1920); +emit_16(1985); +emit_16(1921); +emit_16(1985); +emit_16(1920); +emit_16(1985); +emit_16(1921); +emit_16(1986); +emit_16(1922); +emit_16(1986); +emit_16(1921); +emit_16(1986); +emit_16(1922); +emit_16(1987); +emit_16(1923); +emit_16(1987); +emit_16(1922); +emit_16(1987); +emit_16(1923); +emit_16(1988); +emit_16(1924); +emit_16(1988); +emit_16(1923); +emit_16(1988); +emit_16(1924); +emit_16(1989); +emit_16(1925); +emit_16(1989); +emit_16(1924); +emit_16(1989); +emit_16(1925); +emit_16(1990); +emit_16(1926); +emit_16(1990); +emit_16(1925); +emit_16(1990); +emit_16(1926); +emit_16(1991); +emit_16(1927); +emit_16(1991); +emit_16(1926); +emit_16(1991); +emit_16(1927); +emit_16(1992); +emit_16(1928); +emit_16(1992); +emit_16(1927); +emit_16(1992); +emit_16(1928); +emit_16(1993); +emit_16(1929); +emit_16(1993); +emit_16(1928); +emit_16(1993); +emit_16(1929); +emit_16(1994); +emit_16(1930); +emit_16(1994); +emit_16(1929); +emit_16(1994); +emit_16(1930); +emit_16(1995); +emit_16(1931); +emit_16(1995); +emit_16(1930); +emit_16(1995); +emit_16(1931); +emit_16(1996); +emit_16(1932); +emit_16(1996); +emit_16(1931); +emit_16(1996); +emit_16(1932); +emit_16(1997); +emit_16(1933); +emit_16(1997); +emit_16(1932); +emit_16(1997); +emit_16(1933); +emit_16(1998); +emit_16(1934); +emit_16(1998); +emit_16(1933); +emit_16(1998); +emit_16(1934); +emit_16(1999); +emit_16(1935); +emit_16(1999); +emit_16(1934); +emit_16(1999); +emit_16(1935); +emit_16(2000); +emit_16(1936); +emit_16(2000); +emit_16(1935); +emit_16(2000); +emit_16(1936); +emit_16(2001); +emit_16(1937); +emit_16(2001); +emit_16(1936); +emit_16(2001); +emit_16(1937); +emit_16(2002); +emit_16(1938); +emit_16(2002); +emit_16(1937); +emit_16(2002); +emit_16(1938); +emit_16(2003); +emit_16(1939); +emit_16(2003); +emit_16(1938); +emit_16(2003); +emit_16(1939); +emit_16(2004); +emit_16(1940); +emit_16(2004); +emit_16(1939); +emit_16(2004); +emit_16(1940); +emit_16(2005); +emit_16(1941); +emit_16(2005); +emit_16(1940); +emit_16(2005); +emit_16(1941); +emit_16(2006); +emit_16(1942); +emit_16(2006); +emit_16(1941); +emit_16(2006); +emit_16(1942); +emit_16(2007); +emit_16(1943); +emit_16(2007); +emit_16(1942); +emit_16(2007); +emit_16(1943); +emit_16(2008); +emit_16(1944); +emit_16(2008); +emit_16(1943); +emit_16(2008); +emit_16(1944); +emit_16(2009); +emit_16(1945); +emit_16(2009); +emit_16(1944); +emit_16(2009); +emit_16(1945); +emit_16(2010); +emit_16(1946); +emit_16(2010); +emit_16(1945); +emit_16(2010); +emit_16(1946); +emit_16(2011); +emit_16(1947); +emit_16(2011); +emit_16(1946); +emit_16(2011); +emit_16(1947); +emit_16(2012); +emit_16(1948); +emit_16(2012); +emit_16(1947); +emit_16(2012); +emit_16(1948); +emit_16(2013); +emit_16(1949); +emit_16(2013); +emit_16(1948); +emit_16(2013); +emit_16(1949); +emit_16(2014); +emit_16(1950); +emit_16(2014); +emit_16(1949); +emit_16(2014); +emit_16(1950); +emit_16(2015); +emit_16(1951); +emit_16(2015); +emit_16(1950); +emit_16(2015); +emit_16(1951); +emit_16(2016); +emit_16(1952); +emit_16(2016); +emit_16(1951); +emit_16(2016); +emit_16(1952); +emit_16(2017); +emit_16(1953); +emit_16(2017); +emit_16(1952); +emit_16(2017); +emit_16(1953); +emit_16(2018); +emit_16(1954); +emit_16(2018); +emit_16(1953); +emit_16(2018); +emit_16(1954); +emit_16(2019); +emit_16(1955); +emit_16(2019); +emit_16(1954); +emit_16(2019); +emit_16(1955); +emit_16(2020); +emit_16(1956); +emit_16(2020); +emit_16(1955); +emit_16(2020); +emit_16(1956); +emit_16(2021); +emit_16(1957); +emit_16(2021); +emit_16(1956); +emit_16(2021); +emit_16(1957); +emit_16(2022); +emit_16(1958); +emit_16(2022); +emit_16(1957); +emit_16(2022); +emit_16(1958); +emit_16(2023); +emit_16(1959); +emit_16(2023); +emit_16(1958); +emit_16(2023); +emit_16(1959); +emit_16(2024); +emit_16(1960); +emit_16(2024); +emit_16(1959); +emit_16(2024); +emit_16(1960); +emit_16(2025); +emit_16(1961); +emit_16(2025); +emit_16(1960); +emit_16(2025); +emit_16(1961); +emit_16(2026); +emit_16(1962); +emit_16(2026); +emit_16(1961); +emit_16(2026); +emit_16(1962); +emit_16(2027); +emit_16(1963); +emit_16(2027); +emit_16(1962); +emit_16(2027); +emit_16(1963); +emit_16(2028); +emit_16(1964); +emit_16(2028); +emit_16(1963); +emit_16(2028); +emit_16(1964); +emit_16(2029); +emit_16(1965); +emit_16(2029); +emit_16(1964); +emit_16(2029); +emit_16(1965); +emit_16(2030); +emit_16(1966); +emit_16(2030); +emit_16(1965); +emit_16(2030); +emit_16(1966); +emit_16(2031); +emit_16(1967); +emit_16(2031); +emit_16(1966); +emit_16(2031); +emit_16(1967); +emit_16(2032); +emit_16(1968); +emit_16(2032); +emit_16(1967); +emit_16(2032); +emit_16(1968); +emit_16(2033); +emit_16(1969); +emit_16(2033); +emit_16(1968); +emit_16(2033); +emit_16(1969); +emit_16(2034); +emit_16(1970); +emit_16(2034); +emit_16(1969); +emit_16(2034); +emit_16(1970); +emit_16(2035); +emit_16(1971); +emit_16(2035); +emit_16(1970); +emit_16(2035); +emit_16(1971); +emit_16(2036); +emit_16(1972); +emit_16(2036); +emit_16(1971); +emit_16(2036); +emit_16(1972); +emit_16(2037); +emit_16(1973); +emit_16(2037); +emit_16(1972); +emit_16(2037); +emit_16(1973); +emit_16(2038); +emit_16(1974); +emit_16(2038); +emit_16(1973); +emit_16(2038); +emit_16(1974); +emit_16(2039); +emit_16(1975); +emit_16(2039); +emit_16(1974); +emit_16(2039); +emit_16(1975); +emit_16(2040); +emit_16(1976); +emit_16(2040); +emit_16(1975); +emit_16(2040); +emit_16(1976); +emit_16(2041); +emit_16(1977); +emit_16(2041); +emit_16(1976); +emit_16(2041); +emit_16(1977); +emit_16(2042); +emit_16(1978); +emit_16(2042); +emit_16(1977); +emit_16(2042); +emit_16(1978); +emit_16(2043); +emit_16(1979); +emit_16(2043); +emit_16(1978); +emit_16(2043); +emit_16(1979); +emit_16(2044); +emit_16(1980); +emit_16(2044); +emit_16(1979); +emit_16(2044); +emit_16(1980); +emit_16(2045); +emit_16(1981); +emit_16(2045); +emit_16(1980); +emit_16(2045); +emit_16(1981); +emit_16(2046); +emit_16(1982); +emit_16(2046); +emit_16(1981); +emit_16(2046); +emit_16(1982); +emit_16(2047); +emit_16(1983); +emit_16(2047); +emit_16(1982); +emit_16(2048); +emit_16(1984); +emit_16(2049); +emit_16(1985); +emit_16(2049); +emit_16(1984); +emit_16(2049); +emit_16(1985); +emit_16(2050); +emit_16(1986); +emit_16(2050); +emit_16(1985); +emit_16(2050); +emit_16(1986); +emit_16(2051); +emit_16(1987); +emit_16(2051); +emit_16(1986); +emit_16(2051); +emit_16(1987); +emit_16(2052); +emit_16(1988); +emit_16(2052); +emit_16(1987); +emit_16(2052); +emit_16(1988); +emit_16(2053); +emit_16(1989); +emit_16(2053); +emit_16(1988); +emit_16(2053); +emit_16(1989); +emit_16(2054); +emit_16(1990); +emit_16(2054); +emit_16(1989); +emit_16(2054); +emit_16(1990); +emit_16(2055); +emit_16(1991); +emit_16(2055); +emit_16(1990); +emit_16(2055); +emit_16(1991); +emit_16(2056); +emit_16(1992); +emit_16(2056); +emit_16(1991); +emit_16(2056); +emit_16(1992); +emit_16(2057); +emit_16(1993); +emit_16(2057); +emit_16(1992); +emit_16(2057); +emit_16(1993); +emit_16(2058); +emit_16(1994); +emit_16(2058); +emit_16(1993); +emit_16(2058); +emit_16(1994); +emit_16(2059); +emit_16(1995); +emit_16(2059); +emit_16(1994); +emit_16(2059); +emit_16(1995); +emit_16(2060); +emit_16(1996); +emit_16(2060); +emit_16(1995); +emit_16(2060); +emit_16(1996); +emit_16(2061); +emit_16(1997); +emit_16(2061); +emit_16(1996); +emit_16(2061); +emit_16(1997); +emit_16(2062); +emit_16(1998); +emit_16(2062); +emit_16(1997); +emit_16(2062); +emit_16(1998); +emit_16(2063); +emit_16(1999); +emit_16(2063); +emit_16(1998); +emit_16(2063); +emit_16(1999); +emit_16(2064); +emit_16(2000); +emit_16(2064); +emit_16(1999); +emit_16(2064); +emit_16(2000); +emit_16(2065); +emit_16(2001); +emit_16(2065); +emit_16(2000); +emit_16(2065); +emit_16(2001); +emit_16(2066); +emit_16(2002); +emit_16(2066); +emit_16(2001); +emit_16(2066); +emit_16(2002); +emit_16(2067); +emit_16(2003); +emit_16(2067); +emit_16(2002); +emit_16(2067); +emit_16(2003); +emit_16(2068); +emit_16(2004); +emit_16(2068); +emit_16(2003); +emit_16(2068); +emit_16(2004); +emit_16(2069); +emit_16(2005); +emit_16(2069); +emit_16(2004); +emit_16(2069); +emit_16(2005); +emit_16(2070); +emit_16(2006); +emit_16(2070); +emit_16(2005); +emit_16(2070); +emit_16(2006); +emit_16(2071); +emit_16(2007); +emit_16(2071); +emit_16(2006); +emit_16(2071); +emit_16(2007); +emit_16(2072); +emit_16(2008); +emit_16(2072); +emit_16(2007); +emit_16(2072); +emit_16(2008); +emit_16(2073); +emit_16(2009); +emit_16(2073); +emit_16(2008); +emit_16(2073); +emit_16(2009); +emit_16(2074); +emit_16(2010); +emit_16(2074); +emit_16(2009); +emit_16(2074); +emit_16(2010); +emit_16(2075); +emit_16(2011); +emit_16(2075); +emit_16(2010); +emit_16(2075); +emit_16(2011); +emit_16(2076); +emit_16(2012); +emit_16(2076); +emit_16(2011); +emit_16(2076); +emit_16(2012); +emit_16(2077); +emit_16(2013); +emit_16(2077); +emit_16(2012); +emit_16(2077); +emit_16(2013); +emit_16(2078); +emit_16(2014); +emit_16(2078); +emit_16(2013); +emit_16(2078); +emit_16(2014); +emit_16(2079); +emit_16(2015); +emit_16(2079); +emit_16(2014); +emit_16(2079); +emit_16(2015); +emit_16(2080); +emit_16(2016); +emit_16(2080); +emit_16(2015); +emit_16(2080); +emit_16(2016); +emit_16(2081); +emit_16(2017); +emit_16(2081); +emit_16(2016); +emit_16(2081); +emit_16(2017); +emit_16(2082); +emit_16(2018); +emit_16(2082); +emit_16(2017); +emit_16(2082); +emit_16(2018); +emit_16(2083); +emit_16(2019); +emit_16(2083); +emit_16(2018); +emit_16(2083); +emit_16(2019); +emit_16(2084); +emit_16(2020); +emit_16(2084); +emit_16(2019); +emit_16(2084); +emit_16(2020); +emit_16(2085); +emit_16(2021); +emit_16(2085); +emit_16(2020); +emit_16(2085); +emit_16(2021); +emit_16(2086); +emit_16(2022); +emit_16(2086); +emit_16(2021); +emit_16(2086); +emit_16(2022); +emit_16(2087); +emit_16(2023); +emit_16(2087); +emit_16(2022); +emit_16(2087); +emit_16(2023); +emit_16(2088); +emit_16(2024); +emit_16(2088); +emit_16(2023); +emit_16(2088); +emit_16(2024); +emit_16(2089); +emit_16(2025); +emit_16(2089); +emit_16(2024); +emit_16(2089); +emit_16(2025); +emit_16(2090); +emit_16(2026); +emit_16(2090); +emit_16(2025); +emit_16(2090); +emit_16(2026); +emit_16(2091); +emit_16(2027); +emit_16(2091); +emit_16(2026); +emit_16(2091); +emit_16(2027); +emit_16(2092); +emit_16(2028); +emit_16(2092); +emit_16(2027); +emit_16(2092); +emit_16(2028); +emit_16(2093); +emit_16(2029); +emit_16(2093); +emit_16(2028); +emit_16(2093); +emit_16(2029); +emit_16(2094); +emit_16(2030); +emit_16(2094); +emit_16(2029); +emit_16(2094); +emit_16(2030); +emit_16(2095); +emit_16(2031); +emit_16(2095); +emit_16(2030); +emit_16(2095); +emit_16(2031); +emit_16(2096); +emit_16(2032); +emit_16(2096); +emit_16(2031); +emit_16(2096); +emit_16(2032); +emit_16(2097); +emit_16(2033); +emit_16(2097); +emit_16(2032); +emit_16(2097); +emit_16(2033); +emit_16(2098); +emit_16(2034); +emit_16(2098); +emit_16(2033); +emit_16(2098); +emit_16(2034); +emit_16(2099); +emit_16(2035); +emit_16(2099); +emit_16(2034); +emit_16(2099); +emit_16(2035); +emit_16(2100); +emit_16(2036); +emit_16(2100); +emit_16(2035); +emit_16(2100); +emit_16(2036); +emit_16(2101); +emit_16(2037); +emit_16(2101); +emit_16(2036); +emit_16(2101); +emit_16(2037); +emit_16(2102); +emit_16(2038); +emit_16(2102); +emit_16(2037); +emit_16(2102); +emit_16(2038); +emit_16(2103); +emit_16(2039); +emit_16(2103); +emit_16(2038); +emit_16(2103); +emit_16(2039); +emit_16(2104); +emit_16(2040); +emit_16(2104); +emit_16(2039); +emit_16(2104); +emit_16(2040); +emit_16(2105); +emit_16(2041); +emit_16(2105); +emit_16(2040); +emit_16(2105); +emit_16(2041); +emit_16(2106); +emit_16(2042); +emit_16(2106); +emit_16(2041); +emit_16(2106); +emit_16(2042); +emit_16(2107); +emit_16(2043); +emit_16(2107); +emit_16(2042); +emit_16(2107); +emit_16(2043); +emit_16(2108); +emit_16(2044); +emit_16(2108); +emit_16(2043); +emit_16(2108); +emit_16(2044); +emit_16(2109); +emit_16(2045); +emit_16(2109); +emit_16(2044); +emit_16(2109); +emit_16(2045); +emit_16(2110); +emit_16(2046); +emit_16(2110); +emit_16(2045); +emit_16(2110); +emit_16(2046); +emit_16(2111); +emit_16(2047); +emit_16(2111); +emit_16(2046); +emit_16(2112); +emit_16(2048); +emit_16(2113); +emit_16(2049); +emit_16(2113); +emit_16(2048); +emit_16(2113); +emit_16(2049); +emit_16(2114); +emit_16(2050); +emit_16(2114); +emit_16(2049); +emit_16(2114); +emit_16(2050); +emit_16(2115); +emit_16(2051); +emit_16(2115); +emit_16(2050); +emit_16(2115); +emit_16(2051); +emit_16(2116); +emit_16(2052); +emit_16(2116); +emit_16(2051); +emit_16(2116); +emit_16(2052); +emit_16(2117); +emit_16(2053); +emit_16(2117); +emit_16(2052); +emit_16(2117); +emit_16(2053); +emit_16(2118); +emit_16(2054); +emit_16(2118); +emit_16(2053); +emit_16(2118); +emit_16(2054); +emit_16(2119); +emit_16(2055); +emit_16(2119); +emit_16(2054); +emit_16(2119); +emit_16(2055); +emit_16(2120); +emit_16(2056); +emit_16(2120); +emit_16(2055); +emit_16(2120); +emit_16(2056); +emit_16(2121); +emit_16(2057); +emit_16(2121); +emit_16(2056); +emit_16(2121); +emit_16(2057); +emit_16(2122); +emit_16(2058); +emit_16(2122); +emit_16(2057); +emit_16(2122); +emit_16(2058); +emit_16(2123); +emit_16(2059); +emit_16(2123); +emit_16(2058); +emit_16(2123); +emit_16(2059); +emit_16(2124); +emit_16(2060); +emit_16(2124); +emit_16(2059); +emit_16(2124); +emit_16(2060); +emit_16(2125); +emit_16(2061); +emit_16(2125); +emit_16(2060); +emit_16(2125); +emit_16(2061); +emit_16(2126); +emit_16(2062); +emit_16(2126); +emit_16(2061); +emit_16(2126); +emit_16(2062); +emit_16(2127); +emit_16(2063); +emit_16(2127); +emit_16(2062); +emit_16(2127); +emit_16(2063); +emit_16(2128); +emit_16(2064); +emit_16(2128); +emit_16(2063); +emit_16(2128); +emit_16(2064); +emit_16(2129); +emit_16(2065); +emit_16(2129); +emit_16(2064); +emit_16(2129); +emit_16(2065); +emit_16(2130); +emit_16(2066); +emit_16(2130); +emit_16(2065); +emit_16(2130); +emit_16(2066); +emit_16(2131); +emit_16(2067); +emit_16(2131); +emit_16(2066); +emit_16(2131); +emit_16(2067); +emit_16(2132); +emit_16(2068); +emit_16(2132); +emit_16(2067); +emit_16(2132); +emit_16(2068); +emit_16(2133); +emit_16(2069); +emit_16(2133); +emit_16(2068); +emit_16(2133); +emit_16(2069); +emit_16(2134); +emit_16(2070); +emit_16(2134); +emit_16(2069); +emit_16(2134); +emit_16(2070); +emit_16(2135); +emit_16(2071); +emit_16(2135); +emit_16(2070); +emit_16(2135); +emit_16(2071); +emit_16(2136); +emit_16(2072); +emit_16(2136); +emit_16(2071); +emit_16(2136); +emit_16(2072); +emit_16(2137); +emit_16(2073); +emit_16(2137); +emit_16(2072); +emit_16(2137); +emit_16(2073); +emit_16(2138); +emit_16(2074); +emit_16(2138); +emit_16(2073); +emit_16(2138); +emit_16(2074); +emit_16(2139); +emit_16(2075); +emit_16(2139); +emit_16(2074); +emit_16(2139); +emit_16(2075); +emit_16(2140); +emit_16(2076); +emit_16(2140); +emit_16(2075); +emit_16(2140); +emit_16(2076); +emit_16(2141); +emit_16(2077); +emit_16(2141); +emit_16(2076); +emit_16(2141); +emit_16(2077); +emit_16(2142); +emit_16(2078); +emit_16(2142); +emit_16(2077); +emit_16(2142); +emit_16(2078); +emit_16(2143); +emit_16(2079); +emit_16(2143); +emit_16(2078); +emit_16(2143); +emit_16(2079); +emit_16(2144); +emit_16(2080); +emit_16(2144); +emit_16(2079); +emit_16(2144); +emit_16(2080); +emit_16(2145); +emit_16(2081); +emit_16(2145); +emit_16(2080); +emit_16(2145); +emit_16(2081); +emit_16(2146); +emit_16(2082); +emit_16(2146); +emit_16(2081); +emit_16(2146); +emit_16(2082); +emit_16(2147); +emit_16(2083); +emit_16(2147); +emit_16(2082); +emit_16(2147); +emit_16(2083); +emit_16(2148); +emit_16(2084); +emit_16(2148); +emit_16(2083); +emit_16(2148); +emit_16(2084); +emit_16(2149); +emit_16(2085); +emit_16(2149); +emit_16(2084); +emit_16(2149); +emit_16(2085); +emit_16(2150); +emit_16(2086); +emit_16(2150); +emit_16(2085); +emit_16(2150); +emit_16(2086); +emit_16(2151); +emit_16(2087); +emit_16(2151); +emit_16(2086); +emit_16(2151); +emit_16(2087); +emit_16(2152); +emit_16(2088); +emit_16(2152); +emit_16(2087); +emit_16(2152); +emit_16(2088); +emit_16(2153); +emit_16(2089); +emit_16(2153); +emit_16(2088); +emit_16(2153); +emit_16(2089); +emit_16(2154); +emit_16(2090); +emit_16(2154); +emit_16(2089); +emit_16(2154); +emit_16(2090); +emit_16(2155); +emit_16(2091); +emit_16(2155); +emit_16(2090); +emit_16(2155); +emit_16(2091); +emit_16(2156); +emit_16(2092); +emit_16(2156); +emit_16(2091); +emit_16(2156); +emit_16(2092); +emit_16(2157); +emit_16(2093); +emit_16(2157); +emit_16(2092); +emit_16(2157); +emit_16(2093); +emit_16(2158); +emit_16(2094); +emit_16(2158); +emit_16(2093); +emit_16(2158); +emit_16(2094); +emit_16(2159); +emit_16(2095); +emit_16(2159); +emit_16(2094); +emit_16(2159); +emit_16(2095); +emit_16(2160); +emit_16(2096); +emit_16(2160); +emit_16(2095); +emit_16(2160); +emit_16(2096); +emit_16(2161); +emit_16(2097); +emit_16(2161); +emit_16(2096); +emit_16(2161); +emit_16(2097); +emit_16(2162); +emit_16(2098); +emit_16(2162); +emit_16(2097); +emit_16(2162); +emit_16(2098); +emit_16(2163); +emit_16(2099); +emit_16(2163); +emit_16(2098); +emit_16(2163); +emit_16(2099); +emit_16(2164); +emit_16(2100); +emit_16(2164); +emit_16(2099); +emit_16(2164); +emit_16(2100); +emit_16(2165); +emit_16(2101); +emit_16(2165); +emit_16(2100); +emit_16(2165); +emit_16(2101); +emit_16(2166); +emit_16(2102); +emit_16(2166); +emit_16(2101); +emit_16(2166); +emit_16(2102); +emit_16(2167); +emit_16(2103); +emit_16(2167); +emit_16(2102); +emit_16(2167); +emit_16(2103); +emit_16(2168); +emit_16(2104); +emit_16(2168); +emit_16(2103); +emit_16(2168); +emit_16(2104); +emit_16(2169); +emit_16(2105); +emit_16(2169); +emit_16(2104); +emit_16(2169); +emit_16(2105); +emit_16(2170); +emit_16(2106); +emit_16(2170); +emit_16(2105); +emit_16(2170); +emit_16(2106); +emit_16(2171); +emit_16(2107); +emit_16(2171); +emit_16(2106); +emit_16(2171); +emit_16(2107); +emit_16(2172); +emit_16(2108); +emit_16(2172); +emit_16(2107); +emit_16(2172); +emit_16(2108); +emit_16(2173); +emit_16(2109); +emit_16(2173); +emit_16(2108); +emit_16(2173); +emit_16(2109); +emit_16(2174); +emit_16(2110); +emit_16(2174); +emit_16(2109); +emit_16(2174); +emit_16(2110); +emit_16(2175); +emit_16(2111); +emit_16(2175); +emit_16(2110); +emit_16(2176); +emit_16(2112); +emit_16(2177); +emit_16(2113); +emit_16(2177); +emit_16(2112); +emit_16(2177); +emit_16(2113); +emit_16(2178); +emit_16(2114); +emit_16(2178); +emit_16(2113); +emit_16(2178); +emit_16(2114); +emit_16(2179); +emit_16(2115); +emit_16(2179); +emit_16(2114); +emit_16(2179); +emit_16(2115); +emit_16(2180); +emit_16(2116); +emit_16(2180); +emit_16(2115); +emit_16(2180); +emit_16(2116); +emit_16(2181); +emit_16(2117); +emit_16(2181); +emit_16(2116); +emit_16(2181); +emit_16(2117); +emit_16(2182); +emit_16(2118); +emit_16(2182); +emit_16(2117); +emit_16(2182); +emit_16(2118); +emit_16(2183); +emit_16(2119); +emit_16(2183); +emit_16(2118); +emit_16(2183); +emit_16(2119); +emit_16(2184); +emit_16(2120); +emit_16(2184); +emit_16(2119); +emit_16(2184); +emit_16(2120); +emit_16(2185); +emit_16(2121); +emit_16(2185); +emit_16(2120); +emit_16(2185); +emit_16(2121); +emit_16(2186); +emit_16(2122); +emit_16(2186); +emit_16(2121); +emit_16(2186); +emit_16(2122); +emit_16(2187); +emit_16(2123); +emit_16(2187); +emit_16(2122); +emit_16(2187); +emit_16(2123); +emit_16(2188); +emit_16(2124); +emit_16(2188); +emit_16(2123); +emit_16(2188); +emit_16(2124); +emit_16(2189); +emit_16(2125); +emit_16(2189); +emit_16(2124); +emit_16(2189); +emit_16(2125); +emit_16(2190); +emit_16(2126); +emit_16(2190); +emit_16(2125); +emit_16(2190); +emit_16(2126); +emit_16(2191); +emit_16(2127); +emit_16(2191); +emit_16(2126); +emit_16(2191); +emit_16(2127); +emit_16(2192); +emit_16(2128); +emit_16(2192); +emit_16(2127); +emit_16(2192); +emit_16(2128); +emit_16(2193); +emit_16(2129); +emit_16(2193); +emit_16(2128); +emit_16(2193); +emit_16(2129); +emit_16(2194); +emit_16(2130); +emit_16(2194); +emit_16(2129); +emit_16(2194); +emit_16(2130); +emit_16(2195); +emit_16(2131); +emit_16(2195); +emit_16(2130); +emit_16(2195); +emit_16(2131); +emit_16(2196); +emit_16(2132); +emit_16(2196); +emit_16(2131); +emit_16(2196); +emit_16(2132); +emit_16(2197); +emit_16(2133); +emit_16(2197); +emit_16(2132); +emit_16(2197); +emit_16(2133); +emit_16(2198); +emit_16(2134); +emit_16(2198); +emit_16(2133); +emit_16(2198); +emit_16(2134); +emit_16(2199); +emit_16(2135); +emit_16(2199); +emit_16(2134); +emit_16(2199); +emit_16(2135); +emit_16(2200); +emit_16(2136); +emit_16(2200); +emit_16(2135); +emit_16(2200); +emit_16(2136); +emit_16(2201); +emit_16(2137); +emit_16(2201); +emit_16(2136); +emit_16(2201); +emit_16(2137); +emit_16(2202); +emit_16(2138); +emit_16(2202); +emit_16(2137); +emit_16(2202); +emit_16(2138); +emit_16(2203); +emit_16(2139); +emit_16(2203); +emit_16(2138); +emit_16(2203); +emit_16(2139); +emit_16(2204); +emit_16(2140); +emit_16(2204); +emit_16(2139); +emit_16(2204); +emit_16(2140); +emit_16(2205); +emit_16(2141); +emit_16(2205); +emit_16(2140); +emit_16(2205); +emit_16(2141); +emit_16(2206); +emit_16(2142); +emit_16(2206); +emit_16(2141); +emit_16(2206); +emit_16(2142); +emit_16(2207); +emit_16(2143); +emit_16(2207); +emit_16(2142); +emit_16(2207); +emit_16(2143); +emit_16(2208); +emit_16(2144); +emit_16(2208); +emit_16(2143); +emit_16(2208); +emit_16(2144); +emit_16(2209); +emit_16(2145); +emit_16(2209); +emit_16(2144); +emit_16(2209); +emit_16(2145); +emit_16(2210); +emit_16(2146); +emit_16(2210); +emit_16(2145); +emit_16(2210); +emit_16(2146); +emit_16(2211); +emit_16(2147); +emit_16(2211); +emit_16(2146); +emit_16(2211); +emit_16(2147); +emit_16(2212); +emit_16(2148); +emit_16(2212); +emit_16(2147); +emit_16(2212); +emit_16(2148); +emit_16(2213); +emit_16(2149); +emit_16(2213); +emit_16(2148); +emit_16(2213); +emit_16(2149); +emit_16(2214); +emit_16(2150); +emit_16(2214); +emit_16(2149); +emit_16(2214); +emit_16(2150); +emit_16(2215); +emit_16(2151); +emit_16(2215); +emit_16(2150); +emit_16(2215); +emit_16(2151); +emit_16(2216); +emit_16(2152); +emit_16(2216); +emit_16(2151); +emit_16(2216); +emit_16(2152); +emit_16(2217); +emit_16(2153); +emit_16(2217); +emit_16(2152); +emit_16(2217); +emit_16(2153); +emit_16(2218); +emit_16(2154); +emit_16(2218); +emit_16(2153); +emit_16(2218); +emit_16(2154); +emit_16(2219); +emit_16(2155); +emit_16(2219); +emit_16(2154); +emit_16(2219); +emit_16(2155); +emit_16(2220); +emit_16(2156); +emit_16(2220); +emit_16(2155); +emit_16(2220); +emit_16(2156); +emit_16(2221); +emit_16(2157); +emit_16(2221); +emit_16(2156); +emit_16(2221); +emit_16(2157); +emit_16(2222); +emit_16(2158); +emit_16(2222); +emit_16(2157); +emit_16(2222); +emit_16(2158); +emit_16(2223); +emit_16(2159); +emit_16(2223); +emit_16(2158); +emit_16(2223); +emit_16(2159); +emit_16(2224); +emit_16(2160); +emit_16(2224); +emit_16(2159); +emit_16(2224); +emit_16(2160); +emit_16(2225); +emit_16(2161); +emit_16(2225); +emit_16(2160); +emit_16(2225); +emit_16(2161); +emit_16(2226); +emit_16(2162); +emit_16(2226); +emit_16(2161); +emit_16(2226); +emit_16(2162); +emit_16(2227); +emit_16(2163); +emit_16(2227); +emit_16(2162); +emit_16(2227); +emit_16(2163); +emit_16(2228); +emit_16(2164); +emit_16(2228); +emit_16(2163); +emit_16(2228); +emit_16(2164); +emit_16(2229); +emit_16(2165); +emit_16(2229); +emit_16(2164); +emit_16(2229); +emit_16(2165); +emit_16(2230); +emit_16(2166); +emit_16(2230); +emit_16(2165); +emit_16(2230); +emit_16(2166); +emit_16(2231); +emit_16(2167); +emit_16(2231); +emit_16(2166); +emit_16(2231); +emit_16(2167); +emit_16(2232); +emit_16(2168); +emit_16(2232); +emit_16(2167); +emit_16(2232); +emit_16(2168); +emit_16(2233); +emit_16(2169); +emit_16(2233); +emit_16(2168); +emit_16(2233); +emit_16(2169); +emit_16(2234); +emit_16(2170); +emit_16(2234); +emit_16(2169); +emit_16(2234); +emit_16(2170); +emit_16(2235); +emit_16(2171); +emit_16(2235); +emit_16(2170); +emit_16(2235); +emit_16(2171); +emit_16(2236); +emit_16(2172); +emit_16(2236); +emit_16(2171); +emit_16(2236); +emit_16(2172); +emit_16(2237); +emit_16(2173); +emit_16(2237); +emit_16(2172); +emit_16(2237); +emit_16(2173); +emit_16(2238); +emit_16(2174); +emit_16(2238); +emit_16(2173); +emit_16(2238); +emit_16(2174); +emit_16(2239); +emit_16(2175); +emit_16(2239); +emit_16(2174); +emit_start(Landscape08Idx) +emit_16(0); +emit_16(1); +emit_16(2); +emit_16(3); +emit_16(2); +emit_16(1); +emit_16(2); +emit_16(3); +emit_16(4); +emit_16(5); +emit_16(4); +emit_16(3); +emit_16(4); +emit_16(5); +emit_16(6); +emit_16(7); +emit_16(6); +emit_16(5); +emit_16(6); +emit_16(7); +emit_16(8); +emit_16(9); +emit_16(8); +emit_16(7); +emit_16(8); +emit_16(9); +emit_16(10); +emit_16(11); +emit_16(10); +emit_16(9); +emit_16(10); +emit_16(11); +emit_16(12); +emit_16(13); +emit_16(12); +emit_16(11); +emit_16(12); +emit_16(13); +emit_16(14); +emit_16(15); +emit_16(14); +emit_16(13); +emit_16(14); +emit_16(15); +emit_16(16); +emit_16(17); +emit_16(16); +emit_16(15); +emit_16(16); +emit_16(17); +emit_16(18); +emit_16(19); +emit_16(18); +emit_16(17); +emit_16(18); +emit_16(19); +emit_16(20); +emit_16(21); +emit_16(20); +emit_16(19); +emit_16(20); +emit_16(21); +emit_16(22); +emit_16(23); +emit_16(22); +emit_16(21); +emit_16(22); +emit_16(23); +emit_16(24); +emit_16(25); +emit_16(24); +emit_16(23); +emit_16(24); +emit_16(25); +emit_16(26); +emit_16(27); +emit_16(26); +emit_16(25); +emit_16(26); +emit_16(27); +emit_16(28); +emit_16(29); +emit_16(28); +emit_16(27); +emit_16(28); +emit_16(29); +emit_16(30); +emit_16(31); +emit_16(30); +emit_16(29); +emit_16(30); +emit_16(31); +emit_16(32); +emit_16(33); +emit_16(32); +emit_16(31); +emit_16(32); +emit_16(33); +emit_16(34); +emit_16(35); +emit_16(34); +emit_16(33); +emit_16(34); +emit_16(35); +emit_16(36); +emit_16(37); +emit_16(36); +emit_16(35); +emit_16(36); +emit_16(37); +emit_16(38); +emit_16(39); +emit_16(38); +emit_16(37); +emit_16(38); +emit_16(39); +emit_16(40); +emit_16(41); +emit_16(40); +emit_16(39); +emit_16(40); +emit_16(41); +emit_16(42); +emit_16(43); +emit_16(42); +emit_16(41); +emit_16(42); +emit_16(43); +emit_16(44); +emit_16(45); +emit_16(44); +emit_16(43); +emit_16(44); +emit_16(45); +emit_16(46); +emit_16(47); +emit_16(46); +emit_16(45); +emit_16(46); +emit_16(47); +emit_16(48); +emit_16(49); +emit_16(48); +emit_16(47); +emit_16(48); +emit_16(49); +emit_16(50); +emit_16(51); +emit_16(50); +emit_16(49); +emit_16(50); +emit_16(51); +emit_16(52); +emit_16(53); +emit_16(52); +emit_16(51); +emit_16(52); +emit_16(53); +emit_16(54); +emit_16(55); +emit_16(54); +emit_16(53); +emit_16(54); +emit_16(55); +emit_16(56); +emit_16(57); +emit_16(56); +emit_16(55); +emit_16(56); +emit_16(57); +emit_16(58); +emit_16(59); +emit_16(58); +emit_16(57); +emit_16(58); +emit_16(59); +emit_16(60); +emit_16(61); +emit_16(60); +emit_16(59); +emit_16(60); +emit_16(61); +emit_16(62); +emit_16(63); +emit_16(62); +emit_16(61); +emit_16(62); +emit_16(63); +emit_16(64); +emit_16(65); +emit_16(64); +emit_16(63); +emit_16(64); +emit_16(65); +emit_16(66); +emit_16(67); +emit_16(66); +emit_16(65); +emit_16(66); +emit_16(67); +emit_16(68); +emit_16(69); +emit_16(68); +emit_16(67); +emit_16(68); +emit_16(69); +emit_16(70); +emit_16(71); +emit_16(70); +emit_16(69); +emit_16(70); +emit_16(71); +emit_16(72); +emit_16(73); +emit_16(72); +emit_16(71); +emit_16(72); +emit_16(73); +emit_16(74); +emit_16(75); +emit_16(74); +emit_16(73); +emit_16(74); +emit_16(75); +emit_16(76); +emit_16(77); +emit_16(76); +emit_16(75); +emit_16(76); +emit_16(77); +emit_16(78); +emit_16(79); +emit_16(78); +emit_16(77); +emit_16(78); +emit_16(79); +emit_16(80); +emit_16(81); +emit_16(80); +emit_16(79); +emit_16(80); +emit_16(81); +emit_16(82); +emit_16(83); +emit_16(82); +emit_16(81); +emit_16(82); +emit_16(83); +emit_16(84); +emit_16(85); +emit_16(84); +emit_16(83); +emit_16(84); +emit_16(85); +emit_16(86); +emit_16(87); +emit_16(86); +emit_16(85); +emit_16(86); +emit_16(87); +emit_16(88); +emit_16(89); +emit_16(88); +emit_16(87); +emit_16(88); +emit_16(89); +emit_16(90); +emit_16(91); +emit_16(90); +emit_16(89); +emit_16(90); +emit_16(91); +emit_16(92); +emit_16(93); +emit_16(92); +emit_16(91); +emit_16(92); +emit_16(93); +emit_16(94); +emit_16(95); +emit_16(94); +emit_16(93); +emit_16(94); +emit_16(95); +emit_16(96); +emit_16(97); +emit_16(96); +emit_16(95); +emit_16(96); +emit_16(97); +emit_16(98); +emit_16(99); +emit_16(98); +emit_16(97); +emit_16(98); +emit_16(99); +emit_16(100); +emit_16(101); +emit_16(100); +emit_16(99); +emit_16(100); +emit_16(101); +emit_16(102); +emit_16(103); +emit_16(102); +emit_16(101); +emit_16(102); +emit_16(103); +emit_16(104); +emit_16(105); +emit_16(104); +emit_16(103); +emit_16(104); +emit_16(105); +emit_16(106); +emit_16(107); +emit_16(106); +emit_16(105); +emit_16(106); +emit_16(107); +emit_16(108); +emit_16(109); +emit_16(108); +emit_16(107); +emit_16(108); +emit_16(109); +emit_16(110); +emit_16(111); +emit_16(110); +emit_16(109); +emit_16(110); +emit_16(111); +emit_16(112); +emit_16(113); +emit_16(112); +emit_16(111); +emit_16(112); +emit_16(113); +emit_16(114); +emit_16(115); +emit_16(114); +emit_16(113); +emit_16(114); +emit_16(115); +emit_16(116); +emit_16(117); +emit_16(116); +emit_16(115); +emit_16(116); +emit_16(117); +emit_16(118); +emit_16(119); +emit_16(118); +emit_16(117); +emit_16(118); +emit_16(119); +emit_16(120); +emit_16(121); +emit_16(120); +emit_16(119); +emit_16(120); +emit_16(121); +emit_16(122); +emit_16(123); +emit_16(122); +emit_16(121); +emit_16(122); +emit_16(123); +emit_16(124); +emit_16(125); +emit_16(124); +emit_16(123); +emit_16(124); +emit_16(125); +emit_16(126); +emit_16(127); +emit_16(126); +emit_16(125); +emit_16(126); +emit_16(127); +emit_16(128); +emit_16(129); +emit_16(128); +emit_16(127); +emit_16(128); +emit_16(129); +emit_16(130); +emit_16(131); +emit_16(130); +emit_16(129); +emit_16(132); +emit_16(0); +emit_16(133); +emit_16(2); +emit_16(133); +emit_16(0); +emit_16(133); +emit_16(2); +emit_16(134); +emit_16(4); +emit_16(134); +emit_16(2); +emit_16(134); +emit_16(4); +emit_16(135); +emit_16(6); +emit_16(135); +emit_16(4); +emit_16(135); +emit_16(6); +emit_16(136); +emit_16(8); +emit_16(136); +emit_16(6); +emit_16(136); +emit_16(8); +emit_16(137); +emit_16(10); +emit_16(137); +emit_16(8); +emit_16(137); +emit_16(10); +emit_16(138); +emit_16(12); +emit_16(138); +emit_16(10); +emit_16(138); +emit_16(12); +emit_16(139); +emit_16(14); +emit_16(139); +emit_16(12); +emit_16(139); +emit_16(14); +emit_16(140); +emit_16(16); +emit_16(140); +emit_16(14); +emit_16(140); +emit_16(16); +emit_16(141); +emit_16(18); +emit_16(141); +emit_16(16); +emit_16(141); +emit_16(18); +emit_16(142); +emit_16(20); +emit_16(142); +emit_16(18); +emit_16(142); +emit_16(20); +emit_16(143); +emit_16(22); +emit_16(143); +emit_16(20); +emit_16(143); +emit_16(22); +emit_16(144); +emit_16(24); +emit_16(144); +emit_16(22); +emit_16(144); +emit_16(24); +emit_16(145); +emit_16(26); +emit_16(145); +emit_16(24); +emit_16(145); +emit_16(26); +emit_16(146); +emit_16(28); +emit_16(146); +emit_16(26); +emit_16(146); +emit_16(28); +emit_16(147); +emit_16(30); +emit_16(147); +emit_16(28); +emit_16(147); +emit_16(30); +emit_16(148); +emit_16(32); +emit_16(148); +emit_16(30); +emit_16(148); +emit_16(32); +emit_16(149); +emit_16(34); +emit_16(149); +emit_16(32); +emit_16(149); +emit_16(34); +emit_16(150); +emit_16(36); +emit_16(150); +emit_16(34); +emit_16(150); +emit_16(36); +emit_16(151); +emit_16(38); +emit_16(151); +emit_16(36); +emit_16(151); +emit_16(38); +emit_16(152); +emit_16(40); +emit_16(152); +emit_16(38); +emit_16(152); +emit_16(40); +emit_16(153); +emit_16(42); +emit_16(153); +emit_16(40); +emit_16(153); +emit_16(42); +emit_16(154); +emit_16(44); +emit_16(154); +emit_16(42); +emit_16(154); +emit_16(44); +emit_16(155); +emit_16(46); +emit_16(155); +emit_16(44); +emit_16(155); +emit_16(46); +emit_16(156); +emit_16(48); +emit_16(156); +emit_16(46); +emit_16(156); +emit_16(48); +emit_16(157); +emit_16(50); +emit_16(157); +emit_16(48); +emit_16(157); +emit_16(50); +emit_16(158); +emit_16(52); +emit_16(158); +emit_16(50); +emit_16(158); +emit_16(52); +emit_16(159); +emit_16(54); +emit_16(159); +emit_16(52); +emit_16(159); +emit_16(54); +emit_16(160); +emit_16(56); +emit_16(160); +emit_16(54); +emit_16(160); +emit_16(56); +emit_16(161); +emit_16(58); +emit_16(161); +emit_16(56); +emit_16(161); +emit_16(58); +emit_16(162); +emit_16(60); +emit_16(162); +emit_16(58); +emit_16(162); +emit_16(60); +emit_16(163); +emit_16(62); +emit_16(163); +emit_16(60); +emit_16(163); +emit_16(62); +emit_16(164); +emit_16(64); +emit_16(164); +emit_16(62); +emit_16(164); +emit_16(64); +emit_16(165); +emit_16(66); +emit_16(165); +emit_16(64); +emit_16(165); +emit_16(66); +emit_16(166); +emit_16(68); +emit_16(166); +emit_16(66); +emit_16(166); +emit_16(68); +emit_16(167); +emit_16(70); +emit_16(167); +emit_16(68); +emit_16(167); +emit_16(70); +emit_16(168); +emit_16(72); +emit_16(168); +emit_16(70); +emit_16(168); +emit_16(72); +emit_16(169); +emit_16(74); +emit_16(169); +emit_16(72); +emit_16(169); +emit_16(74); +emit_16(170); +emit_16(76); +emit_16(170); +emit_16(74); +emit_16(170); +emit_16(76); +emit_16(171); +emit_16(78); +emit_16(171); +emit_16(76); +emit_16(171); +emit_16(78); +emit_16(172); +emit_16(80); +emit_16(172); +emit_16(78); +emit_16(172); +emit_16(80); +emit_16(173); +emit_16(82); +emit_16(173); +emit_16(80); +emit_16(173); +emit_16(82); +emit_16(174); +emit_16(84); +emit_16(174); +emit_16(82); +emit_16(174); +emit_16(84); +emit_16(175); +emit_16(86); +emit_16(175); +emit_16(84); +emit_16(175); +emit_16(86); +emit_16(176); +emit_16(88); +emit_16(176); +emit_16(86); +emit_16(176); +emit_16(88); +emit_16(177); +emit_16(90); +emit_16(177); +emit_16(88); +emit_16(177); +emit_16(90); +emit_16(178); +emit_16(92); +emit_16(178); +emit_16(90); +emit_16(178); +emit_16(92); +emit_16(179); +emit_16(94); +emit_16(179); +emit_16(92); +emit_16(179); +emit_16(94); +emit_16(180); +emit_16(96); +emit_16(180); +emit_16(94); +emit_16(180); +emit_16(96); +emit_16(181); +emit_16(98); +emit_16(181); +emit_16(96); +emit_16(181); +emit_16(98); +emit_16(182); +emit_16(100); +emit_16(182); +emit_16(98); +emit_16(182); +emit_16(100); +emit_16(183); +emit_16(102); +emit_16(183); +emit_16(100); +emit_16(183); +emit_16(102); +emit_16(184); +emit_16(104); +emit_16(184); +emit_16(102); +emit_16(184); +emit_16(104); +emit_16(185); +emit_16(106); +emit_16(185); +emit_16(104); +emit_16(185); +emit_16(106); +emit_16(186); +emit_16(108); +emit_16(186); +emit_16(106); +emit_16(186); +emit_16(108); +emit_16(187); +emit_16(110); +emit_16(187); +emit_16(108); +emit_16(187); +emit_16(110); +emit_16(188); +emit_16(112); +emit_16(188); +emit_16(110); +emit_16(188); +emit_16(112); +emit_16(189); +emit_16(114); +emit_16(189); +emit_16(112); +emit_16(189); +emit_16(114); +emit_16(190); +emit_16(116); +emit_16(190); +emit_16(114); +emit_16(190); +emit_16(116); +emit_16(191); +emit_16(118); +emit_16(191); +emit_16(116); +emit_16(191); +emit_16(118); +emit_16(192); +emit_16(120); +emit_16(192); +emit_16(118); +emit_16(192); +emit_16(120); +emit_16(193); +emit_16(122); +emit_16(193); +emit_16(120); +emit_16(193); +emit_16(122); +emit_16(194); +emit_16(124); +emit_16(194); +emit_16(122); +emit_16(194); +emit_16(124); +emit_16(195); +emit_16(126); +emit_16(195); +emit_16(124); +emit_16(195); +emit_16(126); +emit_16(196); +emit_16(128); +emit_16(196); +emit_16(126); +emit_16(196); +emit_16(128); +emit_16(197); +emit_16(130); +emit_16(197); +emit_16(128); +emit_16(198); +emit_16(132); +emit_16(199); +emit_16(133); +emit_16(199); +emit_16(132); +emit_16(199); +emit_16(133); +emit_16(200); +emit_16(134); +emit_16(200); +emit_16(133); +emit_16(200); +emit_16(134); +emit_16(201); +emit_16(135); +emit_16(201); +emit_16(134); +emit_16(201); +emit_16(135); +emit_16(202); +emit_16(136); +emit_16(202); +emit_16(135); +emit_16(202); +emit_16(136); +emit_16(203); +emit_16(137); +emit_16(203); +emit_16(136); +emit_16(203); +emit_16(137); +emit_16(204); +emit_16(138); +emit_16(204); +emit_16(137); +emit_16(204); +emit_16(138); +emit_16(205); +emit_16(139); +emit_16(205); +emit_16(138); +emit_16(205); +emit_16(139); +emit_16(206); +emit_16(140); +emit_16(206); +emit_16(139); +emit_16(206); +emit_16(140); +emit_16(207); +emit_16(141); +emit_16(207); +emit_16(140); +emit_16(207); +emit_16(141); +emit_16(208); +emit_16(142); +emit_16(208); +emit_16(141); +emit_16(208); +emit_16(142); +emit_16(209); +emit_16(143); +emit_16(209); +emit_16(142); +emit_16(209); +emit_16(143); +emit_16(210); +emit_16(144); +emit_16(210); +emit_16(143); +emit_16(210); +emit_16(144); +emit_16(211); +emit_16(145); +emit_16(211); +emit_16(144); +emit_16(211); +emit_16(145); +emit_16(212); +emit_16(146); +emit_16(212); +emit_16(145); +emit_16(212); +emit_16(146); +emit_16(213); +emit_16(147); +emit_16(213); +emit_16(146); +emit_16(213); +emit_16(147); +emit_16(214); +emit_16(148); +emit_16(214); +emit_16(147); +emit_16(214); +emit_16(148); +emit_16(215); +emit_16(149); +emit_16(215); +emit_16(148); +emit_16(215); +emit_16(149); +emit_16(216); +emit_16(150); +emit_16(216); +emit_16(149); +emit_16(216); +emit_16(150); +emit_16(217); +emit_16(151); +emit_16(217); +emit_16(150); +emit_16(217); +emit_16(151); +emit_16(218); +emit_16(152); +emit_16(218); +emit_16(151); +emit_16(218); +emit_16(152); +emit_16(219); +emit_16(153); +emit_16(219); +emit_16(152); +emit_16(219); +emit_16(153); +emit_16(220); +emit_16(154); +emit_16(220); +emit_16(153); +emit_16(220); +emit_16(154); +emit_16(221); +emit_16(155); +emit_16(221); +emit_16(154); +emit_16(221); +emit_16(155); +emit_16(222); +emit_16(156); +emit_16(222); +emit_16(155); +emit_16(222); +emit_16(156); +emit_16(223); +emit_16(157); +emit_16(223); +emit_16(156); +emit_16(223); +emit_16(157); +emit_16(224); +emit_16(158); +emit_16(224); +emit_16(157); +emit_16(224); +emit_16(158); +emit_16(225); +emit_16(159); +emit_16(225); +emit_16(158); +emit_16(225); +emit_16(159); +emit_16(226); +emit_16(160); +emit_16(226); +emit_16(159); +emit_16(226); +emit_16(160); +emit_16(227); +emit_16(161); +emit_16(227); +emit_16(160); +emit_16(227); +emit_16(161); +emit_16(228); +emit_16(162); +emit_16(228); +emit_16(161); +emit_16(228); +emit_16(162); +emit_16(229); +emit_16(163); +emit_16(229); +emit_16(162); +emit_16(229); +emit_16(163); +emit_16(230); +emit_16(164); +emit_16(230); +emit_16(163); +emit_16(230); +emit_16(164); +emit_16(231); +emit_16(165); +emit_16(231); +emit_16(164); +emit_16(231); +emit_16(165); +emit_16(232); +emit_16(166); +emit_16(232); +emit_16(165); +emit_16(232); +emit_16(166); +emit_16(233); +emit_16(167); +emit_16(233); +emit_16(166); +emit_16(233); +emit_16(167); +emit_16(234); +emit_16(168); +emit_16(234); +emit_16(167); +emit_16(234); +emit_16(168); +emit_16(235); +emit_16(169); +emit_16(235); +emit_16(168); +emit_16(235); +emit_16(169); +emit_16(236); +emit_16(170); +emit_16(236); +emit_16(169); +emit_16(236); +emit_16(170); +emit_16(237); +emit_16(171); +emit_16(237); +emit_16(170); +emit_16(237); +emit_16(171); +emit_16(238); +emit_16(172); +emit_16(238); +emit_16(171); +emit_16(238); +emit_16(172); +emit_16(239); +emit_16(173); +emit_16(239); +emit_16(172); +emit_16(239); +emit_16(173); +emit_16(240); +emit_16(174); +emit_16(240); +emit_16(173); +emit_16(240); +emit_16(174); +emit_16(241); +emit_16(175); +emit_16(241); +emit_16(174); +emit_16(241); +emit_16(175); +emit_16(242); +emit_16(176); +emit_16(242); +emit_16(175); +emit_16(242); +emit_16(176); +emit_16(243); +emit_16(177); +emit_16(243); +emit_16(176); +emit_16(243); +emit_16(177); +emit_16(244); +emit_16(178); +emit_16(244); +emit_16(177); +emit_16(244); +emit_16(178); +emit_16(245); +emit_16(179); +emit_16(245); +emit_16(178); +emit_16(245); +emit_16(179); +emit_16(246); +emit_16(180); +emit_16(246); +emit_16(179); +emit_16(246); +emit_16(180); +emit_16(247); +emit_16(181); +emit_16(247); +emit_16(180); +emit_16(247); +emit_16(181); +emit_16(248); +emit_16(182); +emit_16(248); +emit_16(181); +emit_16(248); +emit_16(182); +emit_16(249); +emit_16(183); +emit_16(249); +emit_16(182); +emit_16(249); +emit_16(183); +emit_16(250); +emit_16(184); +emit_16(250); +emit_16(183); +emit_16(250); +emit_16(184); +emit_16(251); +emit_16(185); +emit_16(251); +emit_16(184); +emit_16(251); +emit_16(185); +emit_16(252); +emit_16(186); +emit_16(252); +emit_16(185); +emit_16(252); +emit_16(186); +emit_16(253); +emit_16(187); +emit_16(253); +emit_16(186); +emit_16(253); +emit_16(187); +emit_16(254); +emit_16(188); +emit_16(254); +emit_16(187); +emit_16(254); +emit_16(188); +emit_16(255); +emit_16(189); +emit_16(255); +emit_16(188); +emit_16(255); +emit_16(189); +emit_16(256); +emit_16(190); +emit_16(256); +emit_16(189); +emit_16(256); +emit_16(190); +emit_16(257); +emit_16(191); +emit_16(257); +emit_16(190); +emit_16(257); +emit_16(191); +emit_16(258); +emit_16(192); +emit_16(258); +emit_16(191); +emit_16(258); +emit_16(192); +emit_16(259); +emit_16(193); +emit_16(259); +emit_16(192); +emit_16(259); +emit_16(193); +emit_16(260); +emit_16(194); +emit_16(260); +emit_16(193); +emit_16(260); +emit_16(194); +emit_16(261); +emit_16(195); +emit_16(261); +emit_16(194); +emit_16(261); +emit_16(195); +emit_16(262); +emit_16(196); +emit_16(262); +emit_16(195); +emit_16(262); +emit_16(196); +emit_16(263); +emit_16(197); +emit_16(263); +emit_16(196); +emit_16(264); +emit_16(198); +emit_16(265); +emit_16(199); +emit_16(265); +emit_16(198); +emit_16(265); +emit_16(199); +emit_16(266); +emit_16(200); +emit_16(266); +emit_16(199); +emit_16(266); +emit_16(200); +emit_16(267); +emit_16(201); +emit_16(267); +emit_16(200); +emit_16(267); +emit_16(201); +emit_16(268); +emit_16(202); +emit_16(268); +emit_16(201); +emit_16(268); +emit_16(202); +emit_16(269); +emit_16(203); +emit_16(269); +emit_16(202); +emit_16(269); +emit_16(203); +emit_16(270); +emit_16(204); +emit_16(270); +emit_16(203); +emit_16(270); +emit_16(204); +emit_16(271); +emit_16(205); +emit_16(271); +emit_16(204); +emit_16(271); +emit_16(205); +emit_16(272); +emit_16(206); +emit_16(272); +emit_16(205); +emit_16(272); +emit_16(206); +emit_16(273); +emit_16(207); +emit_16(273); +emit_16(206); +emit_16(273); +emit_16(207); +emit_16(274); +emit_16(208); +emit_16(274); +emit_16(207); +emit_16(274); +emit_16(208); +emit_16(275); +emit_16(209); +emit_16(275); +emit_16(208); +emit_16(275); +emit_16(209); +emit_16(276); +emit_16(210); +emit_16(276); +emit_16(209); +emit_16(276); +emit_16(210); +emit_16(277); +emit_16(211); +emit_16(277); +emit_16(210); +emit_16(277); +emit_16(211); +emit_16(278); +emit_16(212); +emit_16(278); +emit_16(211); +emit_16(278); +emit_16(212); +emit_16(279); +emit_16(213); +emit_16(279); +emit_16(212); +emit_16(279); +emit_16(213); +emit_16(280); +emit_16(214); +emit_16(280); +emit_16(213); +emit_16(280); +emit_16(214); +emit_16(281); +emit_16(215); +emit_16(281); +emit_16(214); +emit_16(281); +emit_16(215); +emit_16(282); +emit_16(216); +emit_16(282); +emit_16(215); +emit_16(282); +emit_16(216); +emit_16(283); +emit_16(217); +emit_16(283); +emit_16(216); +emit_16(283); +emit_16(217); +emit_16(284); +emit_16(218); +emit_16(284); +emit_16(217); +emit_16(284); +emit_16(218); +emit_16(285); +emit_16(219); +emit_16(285); +emit_16(218); +emit_16(285); +emit_16(219); +emit_16(286); +emit_16(220); +emit_16(286); +emit_16(219); +emit_16(286); +emit_16(220); +emit_16(287); +emit_16(221); +emit_16(287); +emit_16(220); +emit_16(287); +emit_16(221); +emit_16(288); +emit_16(222); +emit_16(288); +emit_16(221); +emit_16(288); +emit_16(222); +emit_16(289); +emit_16(223); +emit_16(289); +emit_16(222); +emit_16(289); +emit_16(223); +emit_16(290); +emit_16(224); +emit_16(290); +emit_16(223); +emit_16(290); +emit_16(224); +emit_16(291); +emit_16(225); +emit_16(291); +emit_16(224); +emit_16(291); +emit_16(225); +emit_16(292); +emit_16(226); +emit_16(292); +emit_16(225); +emit_16(292); +emit_16(226); +emit_16(293); +emit_16(227); +emit_16(293); +emit_16(226); +emit_16(293); +emit_16(227); +emit_16(294); +emit_16(228); +emit_16(294); +emit_16(227); +emit_16(294); +emit_16(228); +emit_16(295); +emit_16(229); +emit_16(295); +emit_16(228); +emit_16(295); +emit_16(229); +emit_16(296); +emit_16(230); +emit_16(296); +emit_16(229); +emit_16(296); +emit_16(230); +emit_16(297); +emit_16(231); +emit_16(297); +emit_16(230); +emit_16(297); +emit_16(231); +emit_16(298); +emit_16(232); +emit_16(298); +emit_16(231); +emit_16(298); +emit_16(232); +emit_16(299); +emit_16(233); +emit_16(299); +emit_16(232); +emit_16(299); +emit_16(233); +emit_16(300); +emit_16(234); +emit_16(300); +emit_16(233); +emit_16(300); +emit_16(234); +emit_16(301); +emit_16(235); +emit_16(301); +emit_16(234); +emit_16(301); +emit_16(235); +emit_16(302); +emit_16(236); +emit_16(302); +emit_16(235); +emit_16(302); +emit_16(236); +emit_16(303); +emit_16(237); +emit_16(303); +emit_16(236); +emit_16(303); +emit_16(237); +emit_16(304); +emit_16(238); +emit_16(304); +emit_16(237); +emit_16(304); +emit_16(238); +emit_16(305); +emit_16(239); +emit_16(305); +emit_16(238); +emit_16(305); +emit_16(239); +emit_16(306); +emit_16(240); +emit_16(306); +emit_16(239); +emit_16(306); +emit_16(240); +emit_16(307); +emit_16(241); +emit_16(307); +emit_16(240); +emit_16(307); +emit_16(241); +emit_16(308); +emit_16(242); +emit_16(308); +emit_16(241); +emit_16(308); +emit_16(242); +emit_16(309); +emit_16(243); +emit_16(309); +emit_16(242); +emit_16(309); +emit_16(243); +emit_16(310); +emit_16(244); +emit_16(310); +emit_16(243); +emit_16(310); +emit_16(244); +emit_16(311); +emit_16(245); +emit_16(311); +emit_16(244); +emit_16(311); +emit_16(245); +emit_16(312); +emit_16(246); +emit_16(312); +emit_16(245); +emit_16(312); +emit_16(246); +emit_16(313); +emit_16(247); +emit_16(313); +emit_16(246); +emit_16(313); +emit_16(247); +emit_16(314); +emit_16(248); +emit_16(314); +emit_16(247); +emit_16(314); +emit_16(248); +emit_16(315); +emit_16(249); +emit_16(315); +emit_16(248); +emit_16(315); +emit_16(249); +emit_16(316); +emit_16(250); +emit_16(316); +emit_16(249); +emit_16(316); +emit_16(250); +emit_16(317); +emit_16(251); +emit_16(317); +emit_16(250); +emit_16(317); +emit_16(251); +emit_16(318); +emit_16(252); +emit_16(318); +emit_16(251); +emit_16(318); +emit_16(252); +emit_16(319); +emit_16(253); +emit_16(319); +emit_16(252); +emit_16(319); +emit_16(253); +emit_16(320); +emit_16(254); +emit_16(320); +emit_16(253); +emit_16(320); +emit_16(254); +emit_16(321); +emit_16(255); +emit_16(321); +emit_16(254); +emit_16(321); +emit_16(255); +emit_16(322); +emit_16(256); +emit_16(322); +emit_16(255); +emit_16(322); +emit_16(256); +emit_16(323); +emit_16(257); +emit_16(323); +emit_16(256); +emit_16(323); +emit_16(257); +emit_16(324); +emit_16(258); +emit_16(324); +emit_16(257); +emit_16(324); +emit_16(258); +emit_16(325); +emit_16(259); +emit_16(325); +emit_16(258); +emit_16(325); +emit_16(259); +emit_16(326); +emit_16(260); +emit_16(326); +emit_16(259); +emit_16(326); +emit_16(260); +emit_16(327); +emit_16(261); +emit_16(327); +emit_16(260); +emit_16(327); +emit_16(261); +emit_16(328); +emit_16(262); +emit_16(328); +emit_16(261); +emit_16(328); +emit_16(262); +emit_16(329); +emit_16(263); +emit_16(329); +emit_16(262); +emit_16(330); +emit_16(264); +emit_16(331); +emit_16(265); +emit_16(331); +emit_16(264); +emit_16(331); +emit_16(265); +emit_16(332); +emit_16(266); +emit_16(332); +emit_16(265); +emit_16(332); +emit_16(266); +emit_16(333); +emit_16(267); +emit_16(333); +emit_16(266); +emit_16(333); +emit_16(267); +emit_16(334); +emit_16(268); +emit_16(334); +emit_16(267); +emit_16(334); +emit_16(268); +emit_16(335); +emit_16(269); +emit_16(335); +emit_16(268); +emit_16(335); +emit_16(269); +emit_16(336); +emit_16(270); +emit_16(336); +emit_16(269); +emit_16(336); +emit_16(270); +emit_16(337); +emit_16(271); +emit_16(337); +emit_16(270); +emit_16(337); +emit_16(271); +emit_16(338); +emit_16(272); +emit_16(338); +emit_16(271); +emit_16(338); +emit_16(272); +emit_16(339); +emit_16(273); +emit_16(339); +emit_16(272); +emit_16(339); +emit_16(273); +emit_16(340); +emit_16(274); +emit_16(340); +emit_16(273); +emit_16(340); +emit_16(274); +emit_16(341); +emit_16(275); +emit_16(341); +emit_16(274); +emit_16(341); +emit_16(275); +emit_16(342); +emit_16(276); +emit_16(342); +emit_16(275); +emit_16(342); +emit_16(276); +emit_16(343); +emit_16(277); +emit_16(343); +emit_16(276); +emit_16(343); +emit_16(277); +emit_16(344); +emit_16(278); +emit_16(344); +emit_16(277); +emit_16(344); +emit_16(278); +emit_16(345); +emit_16(279); +emit_16(345); +emit_16(278); +emit_16(345); +emit_16(279); +emit_16(346); +emit_16(280); +emit_16(346); +emit_16(279); +emit_16(346); +emit_16(280); +emit_16(347); +emit_16(281); +emit_16(347); +emit_16(280); +emit_16(347); +emit_16(281); +emit_16(348); +emit_16(282); +emit_16(348); +emit_16(281); +emit_16(348); +emit_16(282); +emit_16(349); +emit_16(283); +emit_16(349); +emit_16(282); +emit_16(349); +emit_16(283); +emit_16(350); +emit_16(284); +emit_16(350); +emit_16(283); +emit_16(350); +emit_16(284); +emit_16(351); +emit_16(285); +emit_16(351); +emit_16(284); +emit_16(351); +emit_16(285); +emit_16(352); +emit_16(286); +emit_16(352); +emit_16(285); +emit_16(352); +emit_16(286); +emit_16(353); +emit_16(287); +emit_16(353); +emit_16(286); +emit_16(353); +emit_16(287); +emit_16(354); +emit_16(288); +emit_16(354); +emit_16(287); +emit_16(354); +emit_16(288); +emit_16(355); +emit_16(289); +emit_16(355); +emit_16(288); +emit_16(355); +emit_16(289); +emit_16(356); +emit_16(290); +emit_16(356); +emit_16(289); +emit_16(356); +emit_16(290); +emit_16(357); +emit_16(291); +emit_16(357); +emit_16(290); +emit_16(357); +emit_16(291); +emit_16(358); +emit_16(292); +emit_16(358); +emit_16(291); +emit_16(358); +emit_16(292); +emit_16(359); +emit_16(293); +emit_16(359); +emit_16(292); +emit_16(359); +emit_16(293); +emit_16(360); +emit_16(294); +emit_16(360); +emit_16(293); +emit_16(360); +emit_16(294); +emit_16(361); +emit_16(295); +emit_16(361); +emit_16(294); +emit_16(361); +emit_16(295); +emit_16(362); +emit_16(296); +emit_16(362); +emit_16(295); +emit_16(362); +emit_16(296); +emit_16(363); +emit_16(297); +emit_16(363); +emit_16(296); +emit_16(363); +emit_16(297); +emit_16(364); +emit_16(298); +emit_16(364); +emit_16(297); +emit_16(364); +emit_16(298); +emit_16(365); +emit_16(299); +emit_16(365); +emit_16(298); +emit_16(365); +emit_16(299); +emit_16(366); +emit_16(300); +emit_16(366); +emit_16(299); +emit_16(366); +emit_16(300); +emit_16(367); +emit_16(301); +emit_16(367); +emit_16(300); +emit_16(367); +emit_16(301); +emit_16(368); +emit_16(302); +emit_16(368); +emit_16(301); +emit_16(368); +emit_16(302); +emit_16(369); +emit_16(303); +emit_16(369); +emit_16(302); +emit_16(369); +emit_16(303); +emit_16(370); +emit_16(304); +emit_16(370); +emit_16(303); +emit_16(370); +emit_16(304); +emit_16(371); +emit_16(305); +emit_16(371); +emit_16(304); +emit_16(371); +emit_16(305); +emit_16(372); +emit_16(306); +emit_16(372); +emit_16(305); +emit_16(372); +emit_16(306); +emit_16(373); +emit_16(307); +emit_16(373); +emit_16(306); +emit_16(373); +emit_16(307); +emit_16(374); +emit_16(308); +emit_16(374); +emit_16(307); +emit_16(374); +emit_16(308); +emit_16(375); +emit_16(309); +emit_16(375); +emit_16(308); +emit_16(375); +emit_16(309); +emit_16(376); +emit_16(310); +emit_16(376); +emit_16(309); +emit_16(376); +emit_16(310); +emit_16(377); +emit_16(311); +emit_16(377); +emit_16(310); +emit_16(377); +emit_16(311); +emit_16(378); +emit_16(312); +emit_16(378); +emit_16(311); +emit_16(378); +emit_16(312); +emit_16(379); +emit_16(313); +emit_16(379); +emit_16(312); +emit_16(379); +emit_16(313); +emit_16(380); +emit_16(314); +emit_16(380); +emit_16(313); +emit_16(380); +emit_16(314); +emit_16(381); +emit_16(315); +emit_16(381); +emit_16(314); +emit_16(381); +emit_16(315); +emit_16(382); +emit_16(316); +emit_16(382); +emit_16(315); +emit_16(382); +emit_16(316); +emit_16(383); +emit_16(317); +emit_16(383); +emit_16(316); +emit_16(383); +emit_16(317); +emit_16(384); +emit_16(318); +emit_16(384); +emit_16(317); +emit_16(384); +emit_16(318); +emit_16(385); +emit_16(319); +emit_16(385); +emit_16(318); +emit_16(385); +emit_16(319); +emit_16(386); +emit_16(320); +emit_16(386); +emit_16(319); +emit_16(386); +emit_16(320); +emit_16(387); +emit_16(321); +emit_16(387); +emit_16(320); +emit_16(387); +emit_16(321); +emit_16(388); +emit_16(322); +emit_16(388); +emit_16(321); +emit_16(388); +emit_16(322); +emit_16(389); +emit_16(323); +emit_16(389); +emit_16(322); +emit_16(389); +emit_16(323); +emit_16(390); +emit_16(324); +emit_16(390); +emit_16(323); +emit_16(390); +emit_16(324); +emit_16(391); +emit_16(325); +emit_16(391); +emit_16(324); +emit_16(391); +emit_16(325); +emit_16(392); +emit_16(326); +emit_16(392); +emit_16(325); +emit_16(392); +emit_16(326); +emit_16(393); +emit_16(327); +emit_16(393); +emit_16(326); +emit_16(393); +emit_16(327); +emit_16(394); +emit_16(328); +emit_16(394); +emit_16(327); +emit_16(394); +emit_16(328); +emit_16(395); +emit_16(329); +emit_16(395); +emit_16(328); +emit_16(396); +emit_16(330); +emit_16(397); +emit_16(331); +emit_16(397); +emit_16(330); +emit_16(397); +emit_16(331); +emit_16(398); +emit_16(332); +emit_16(398); +emit_16(331); +emit_16(398); +emit_16(332); +emit_16(399); +emit_16(333); +emit_16(399); +emit_16(332); +emit_16(399); +emit_16(333); +emit_16(400); +emit_16(334); +emit_16(400); +emit_16(333); +emit_16(400); +emit_16(334); +emit_16(401); +emit_16(335); +emit_16(401); +emit_16(334); +emit_16(401); +emit_16(335); +emit_16(402); +emit_16(336); +emit_16(402); +emit_16(335); +emit_16(402); +emit_16(336); +emit_16(403); +emit_16(337); +emit_16(403); +emit_16(336); +emit_16(403); +emit_16(337); +emit_16(404); +emit_16(338); +emit_16(404); +emit_16(337); +emit_16(404); +emit_16(338); +emit_16(405); +emit_16(339); +emit_16(405); +emit_16(338); +emit_16(405); +emit_16(339); +emit_16(406); +emit_16(340); +emit_16(406); +emit_16(339); +emit_16(406); +emit_16(340); +emit_16(407); +emit_16(341); +emit_16(407); +emit_16(340); +emit_16(407); +emit_16(341); +emit_16(408); +emit_16(342); +emit_16(408); +emit_16(341); +emit_16(408); +emit_16(342); +emit_16(409); +emit_16(343); +emit_16(409); +emit_16(342); +emit_16(409); +emit_16(343); +emit_16(410); +emit_16(344); +emit_16(410); +emit_16(343); +emit_16(410); +emit_16(344); +emit_16(411); +emit_16(345); +emit_16(411); +emit_16(344); +emit_16(411); +emit_16(345); +emit_16(412); +emit_16(346); +emit_16(412); +emit_16(345); +emit_16(412); +emit_16(346); +emit_16(413); +emit_16(347); +emit_16(413); +emit_16(346); +emit_16(413); +emit_16(347); +emit_16(414); +emit_16(348); +emit_16(414); +emit_16(347); +emit_16(414); +emit_16(348); +emit_16(415); +emit_16(349); +emit_16(415); +emit_16(348); +emit_16(415); +emit_16(349); +emit_16(416); +emit_16(350); +emit_16(416); +emit_16(349); +emit_16(416); +emit_16(350); +emit_16(417); +emit_16(351); +emit_16(417); +emit_16(350); +emit_16(417); +emit_16(351); +emit_16(418); +emit_16(352); +emit_16(418); +emit_16(351); +emit_16(418); +emit_16(352); +emit_16(419); +emit_16(353); +emit_16(419); +emit_16(352); +emit_16(419); +emit_16(353); +emit_16(420); +emit_16(354); +emit_16(420); +emit_16(353); +emit_16(420); +emit_16(354); +emit_16(421); +emit_16(355); +emit_16(421); +emit_16(354); +emit_16(421); +emit_16(355); +emit_16(422); +emit_16(356); +emit_16(422); +emit_16(355); +emit_16(422); +emit_16(356); +emit_16(423); +emit_16(357); +emit_16(423); +emit_16(356); +emit_16(423); +emit_16(357); +emit_16(424); +emit_16(358); +emit_16(424); +emit_16(357); +emit_16(424); +emit_16(358); +emit_16(425); +emit_16(359); +emit_16(425); +emit_16(358); +emit_16(425); +emit_16(359); +emit_16(426); +emit_16(360); +emit_16(426); +emit_16(359); +emit_16(426); +emit_16(360); +emit_16(427); +emit_16(361); +emit_16(427); +emit_16(360); +emit_16(427); +emit_16(361); +emit_16(428); +emit_16(362); +emit_16(428); +emit_16(361); +emit_16(428); +emit_16(362); +emit_16(429); +emit_16(363); +emit_16(429); +emit_16(362); +emit_16(429); +emit_16(363); +emit_16(430); +emit_16(364); +emit_16(430); +emit_16(363); +emit_16(430); +emit_16(364); +emit_16(431); +emit_16(365); +emit_16(431); +emit_16(364); +emit_16(431); +emit_16(365); +emit_16(432); +emit_16(366); +emit_16(432); +emit_16(365); +emit_16(432); +emit_16(366); +emit_16(433); +emit_16(367); +emit_16(433); +emit_16(366); +emit_16(433); +emit_16(367); +emit_16(434); +emit_16(368); +emit_16(434); +emit_16(367); +emit_16(434); +emit_16(368); +emit_16(435); +emit_16(369); +emit_16(435); +emit_16(368); +emit_16(435); +emit_16(369); +emit_16(436); +emit_16(370); +emit_16(436); +emit_16(369); +emit_16(436); +emit_16(370); +emit_16(437); +emit_16(371); +emit_16(437); +emit_16(370); +emit_16(437); +emit_16(371); +emit_16(438); +emit_16(372); +emit_16(438); +emit_16(371); +emit_16(438); +emit_16(372); +emit_16(439); +emit_16(373); +emit_16(439); +emit_16(372); +emit_16(439); +emit_16(373); +emit_16(440); +emit_16(374); +emit_16(440); +emit_16(373); +emit_16(440); +emit_16(374); +emit_16(441); +emit_16(375); +emit_16(441); +emit_16(374); +emit_16(441); +emit_16(375); +emit_16(442); +emit_16(376); +emit_16(442); +emit_16(375); +emit_16(442); +emit_16(376); +emit_16(443); +emit_16(377); +emit_16(443); +emit_16(376); +emit_16(443); +emit_16(377); +emit_16(444); +emit_16(378); +emit_16(444); +emit_16(377); +emit_16(444); +emit_16(378); +emit_16(445); +emit_16(379); +emit_16(445); +emit_16(378); +emit_16(445); +emit_16(379); +emit_16(446); +emit_16(380); +emit_16(446); +emit_16(379); +emit_16(446); +emit_16(380); +emit_16(447); +emit_16(381); +emit_16(447); +emit_16(380); +emit_16(447); +emit_16(381); +emit_16(448); +emit_16(382); +emit_16(448); +emit_16(381); +emit_16(448); +emit_16(382); +emit_16(449); +emit_16(383); +emit_16(449); +emit_16(382); +emit_16(449); +emit_16(383); +emit_16(450); +emit_16(384); +emit_16(450); +emit_16(383); +emit_16(450); +emit_16(384); +emit_16(451); +emit_16(385); +emit_16(451); +emit_16(384); +emit_16(451); +emit_16(385); +emit_16(452); +emit_16(386); +emit_16(452); +emit_16(385); +emit_16(452); +emit_16(386); +emit_16(453); +emit_16(387); +emit_16(453); +emit_16(386); +emit_16(453); +emit_16(387); +emit_16(454); +emit_16(388); +emit_16(454); +emit_16(387); +emit_16(454); +emit_16(388); +emit_16(455); +emit_16(389); +emit_16(455); +emit_16(388); +emit_16(455); +emit_16(389); +emit_16(456); +emit_16(390); +emit_16(456); +emit_16(389); +emit_16(456); +emit_16(390); +emit_16(457); +emit_16(391); +emit_16(457); +emit_16(390); +emit_16(457); +emit_16(391); +emit_16(458); +emit_16(392); +emit_16(458); +emit_16(391); +emit_16(458); +emit_16(392); +emit_16(459); +emit_16(393); +emit_16(459); +emit_16(392); +emit_16(459); +emit_16(393); +emit_16(460); +emit_16(394); +emit_16(460); +emit_16(393); +emit_16(460); +emit_16(394); +emit_16(461); +emit_16(395); +emit_16(461); +emit_16(394); +emit_16(462); +emit_16(396); +emit_16(463); +emit_16(397); +emit_16(463); +emit_16(396); +emit_16(463); +emit_16(397); +emit_16(464); +emit_16(398); +emit_16(464); +emit_16(397); +emit_16(464); +emit_16(398); +emit_16(465); +emit_16(399); +emit_16(465); +emit_16(398); +emit_16(465); +emit_16(399); +emit_16(466); +emit_16(400); +emit_16(466); +emit_16(399); +emit_16(466); +emit_16(400); +emit_16(467); +emit_16(401); +emit_16(467); +emit_16(400); +emit_16(467); +emit_16(401); +emit_16(468); +emit_16(402); +emit_16(468); +emit_16(401); +emit_16(468); +emit_16(402); +emit_16(469); +emit_16(403); +emit_16(469); +emit_16(402); +emit_16(469); +emit_16(403); +emit_16(470); +emit_16(404); +emit_16(470); +emit_16(403); +emit_16(470); +emit_16(404); +emit_16(471); +emit_16(405); +emit_16(471); +emit_16(404); +emit_16(471); +emit_16(405); +emit_16(472); +emit_16(406); +emit_16(472); +emit_16(405); +emit_16(472); +emit_16(406); +emit_16(473); +emit_16(407); +emit_16(473); +emit_16(406); +emit_16(473); +emit_16(407); +emit_16(474); +emit_16(408); +emit_16(474); +emit_16(407); +emit_16(474); +emit_16(408); +emit_16(475); +emit_16(409); +emit_16(475); +emit_16(408); +emit_16(475); +emit_16(409); +emit_16(476); +emit_16(410); +emit_16(476); +emit_16(409); +emit_16(476); +emit_16(410); +emit_16(477); +emit_16(411); +emit_16(477); +emit_16(410); +emit_16(477); +emit_16(411); +emit_16(478); +emit_16(412); +emit_16(478); +emit_16(411); +emit_16(478); +emit_16(412); +emit_16(479); +emit_16(413); +emit_16(479); +emit_16(412); +emit_16(479); +emit_16(413); +emit_16(480); +emit_16(414); +emit_16(480); +emit_16(413); +emit_16(480); +emit_16(414); +emit_16(481); +emit_16(415); +emit_16(481); +emit_16(414); +emit_16(481); +emit_16(415); +emit_16(482); +emit_16(416); +emit_16(482); +emit_16(415); +emit_16(482); +emit_16(416); +emit_16(483); +emit_16(417); +emit_16(483); +emit_16(416); +emit_16(483); +emit_16(417); +emit_16(484); +emit_16(418); +emit_16(484); +emit_16(417); +emit_16(484); +emit_16(418); +emit_16(485); +emit_16(419); +emit_16(485); +emit_16(418); +emit_16(485); +emit_16(419); +emit_16(486); +emit_16(420); +emit_16(486); +emit_16(419); +emit_16(486); +emit_16(420); +emit_16(487); +emit_16(421); +emit_16(487); +emit_16(420); +emit_16(487); +emit_16(421); +emit_16(488); +emit_16(422); +emit_16(488); +emit_16(421); +emit_16(488); +emit_16(422); +emit_16(489); +emit_16(423); +emit_16(489); +emit_16(422); +emit_16(489); +emit_16(423); +emit_16(490); +emit_16(424); +emit_16(490); +emit_16(423); +emit_16(490); +emit_16(424); +emit_16(491); +emit_16(425); +emit_16(491); +emit_16(424); +emit_16(491); +emit_16(425); +emit_16(492); +emit_16(426); +emit_16(492); +emit_16(425); +emit_16(492); +emit_16(426); +emit_16(493); +emit_16(427); +emit_16(493); +emit_16(426); +emit_16(493); +emit_16(427); +emit_16(494); +emit_16(428); +emit_16(494); +emit_16(427); +emit_16(494); +emit_16(428); +emit_16(495); +emit_16(429); +emit_16(495); +emit_16(428); +emit_16(495); +emit_16(429); +emit_16(496); +emit_16(430); +emit_16(496); +emit_16(429); +emit_16(496); +emit_16(430); +emit_16(497); +emit_16(431); +emit_16(497); +emit_16(430); +emit_16(497); +emit_16(431); +emit_16(498); +emit_16(432); +emit_16(498); +emit_16(431); +emit_16(498); +emit_16(432); +emit_16(499); +emit_16(433); +emit_16(499); +emit_16(432); +emit_16(499); +emit_16(433); +emit_16(500); +emit_16(434); +emit_16(500); +emit_16(433); +emit_16(500); +emit_16(434); +emit_16(501); +emit_16(435); +emit_16(501); +emit_16(434); +emit_16(501); +emit_16(435); +emit_16(502); +emit_16(436); +emit_16(502); +emit_16(435); +emit_16(502); +emit_16(436); +emit_16(503); +emit_16(437); +emit_16(503); +emit_16(436); +emit_16(503); +emit_16(437); +emit_16(504); +emit_16(438); +emit_16(504); +emit_16(437); +emit_16(504); +emit_16(438); +emit_16(505); +emit_16(439); +emit_16(505); +emit_16(438); +emit_16(505); +emit_16(439); +emit_16(506); +emit_16(440); +emit_16(506); +emit_16(439); +emit_16(506); +emit_16(440); +emit_16(507); +emit_16(441); +emit_16(507); +emit_16(440); +emit_16(507); +emit_16(441); +emit_16(508); +emit_16(442); +emit_16(508); +emit_16(441); +emit_16(508); +emit_16(442); +emit_16(509); +emit_16(443); +emit_16(509); +emit_16(442); +emit_16(509); +emit_16(443); +emit_16(510); +emit_16(444); +emit_16(510); +emit_16(443); +emit_16(510); +emit_16(444); +emit_16(511); +emit_16(445); +emit_16(511); +emit_16(444); +emit_16(511); +emit_16(445); +emit_16(512); +emit_16(446); +emit_16(512); +emit_16(445); +emit_16(512); +emit_16(446); +emit_16(513); +emit_16(447); +emit_16(513); +emit_16(446); +emit_16(513); +emit_16(447); +emit_16(514); +emit_16(448); +emit_16(514); +emit_16(447); +emit_16(514); +emit_16(448); +emit_16(515); +emit_16(449); +emit_16(515); +emit_16(448); +emit_16(515); +emit_16(449); +emit_16(516); +emit_16(450); +emit_16(516); +emit_16(449); +emit_16(516); +emit_16(450); +emit_16(517); +emit_16(451); +emit_16(517); +emit_16(450); +emit_16(517); +emit_16(451); +emit_16(518); +emit_16(452); +emit_16(518); +emit_16(451); +emit_16(518); +emit_16(452); +emit_16(519); +emit_16(453); +emit_16(519); +emit_16(452); +emit_16(519); +emit_16(453); +emit_16(520); +emit_16(454); +emit_16(520); +emit_16(453); +emit_16(520); +emit_16(454); +emit_16(521); +emit_16(455); +emit_16(521); +emit_16(454); +emit_16(521); +emit_16(455); +emit_16(522); +emit_16(456); +emit_16(522); +emit_16(455); +emit_16(522); +emit_16(456); +emit_16(523); +emit_16(457); +emit_16(523); +emit_16(456); +emit_16(523); +emit_16(457); +emit_16(524); +emit_16(458); +emit_16(524); +emit_16(457); +emit_16(524); +emit_16(458); +emit_16(525); +emit_16(459); +emit_16(525); +emit_16(458); +emit_16(525); +emit_16(459); +emit_16(526); +emit_16(460); +emit_16(526); +emit_16(459); +emit_16(526); +emit_16(460); +emit_16(527); +emit_16(461); +emit_16(527); +emit_16(460); +emit_16(528); +emit_16(462); +emit_16(529); +emit_16(463); +emit_16(529); +emit_16(462); +emit_16(529); +emit_16(463); +emit_16(530); +emit_16(464); +emit_16(530); +emit_16(463); +emit_16(530); +emit_16(464); +emit_16(531); +emit_16(465); +emit_16(531); +emit_16(464); +emit_16(531); +emit_16(465); +emit_16(532); +emit_16(466); +emit_16(532); +emit_16(465); +emit_16(532); +emit_16(466); +emit_16(533); +emit_16(467); +emit_16(533); +emit_16(466); +emit_16(533); +emit_16(467); +emit_16(534); +emit_16(468); +emit_16(534); +emit_16(467); +emit_16(534); +emit_16(468); +emit_16(535); +emit_16(469); +emit_16(535); +emit_16(468); +emit_16(535); +emit_16(469); +emit_16(536); +emit_16(470); +emit_16(536); +emit_16(469); +emit_16(536); +emit_16(470); +emit_16(537); +emit_16(471); +emit_16(537); +emit_16(470); +emit_16(537); +emit_16(471); +emit_16(538); +emit_16(472); +emit_16(538); +emit_16(471); +emit_16(538); +emit_16(472); +emit_16(539); +emit_16(473); +emit_16(539); +emit_16(472); +emit_16(539); +emit_16(473); +emit_16(540); +emit_16(474); +emit_16(540); +emit_16(473); +emit_16(540); +emit_16(474); +emit_16(541); +emit_16(475); +emit_16(541); +emit_16(474); +emit_16(541); +emit_16(475); +emit_16(542); +emit_16(476); +emit_16(542); +emit_16(475); +emit_16(542); +emit_16(476); +emit_16(543); +emit_16(477); +emit_16(543); +emit_16(476); +emit_16(543); +emit_16(477); +emit_16(544); +emit_16(478); +emit_16(544); +emit_16(477); +emit_16(544); +emit_16(478); +emit_16(545); +emit_16(479); +emit_16(545); +emit_16(478); +emit_16(545); +emit_16(479); +emit_16(546); +emit_16(480); +emit_16(546); +emit_16(479); +emit_16(546); +emit_16(480); +emit_16(547); +emit_16(481); +emit_16(547); +emit_16(480); +emit_16(547); +emit_16(481); +emit_16(548); +emit_16(482); +emit_16(548); +emit_16(481); +emit_16(548); +emit_16(482); +emit_16(549); +emit_16(483); +emit_16(549); +emit_16(482); +emit_16(549); +emit_16(483); +emit_16(550); +emit_16(484); +emit_16(550); +emit_16(483); +emit_16(550); +emit_16(484); +emit_16(551); +emit_16(485); +emit_16(551); +emit_16(484); +emit_16(551); +emit_16(485); +emit_16(552); +emit_16(486); +emit_16(552); +emit_16(485); +emit_16(552); +emit_16(486); +emit_16(553); +emit_16(487); +emit_16(553); +emit_16(486); +emit_16(553); +emit_16(487); +emit_16(554); +emit_16(488); +emit_16(554); +emit_16(487); +emit_16(554); +emit_16(488); +emit_16(555); +emit_16(489); +emit_16(555); +emit_16(488); +emit_16(555); +emit_16(489); +emit_16(556); +emit_16(490); +emit_16(556); +emit_16(489); +emit_16(556); +emit_16(490); +emit_16(557); +emit_16(491); +emit_16(557); +emit_16(490); +emit_16(557); +emit_16(491); +emit_16(558); +emit_16(492); +emit_16(558); +emit_16(491); +emit_16(558); +emit_16(492); +emit_16(559); +emit_16(493); +emit_16(559); +emit_16(492); +emit_16(559); +emit_16(493); +emit_16(560); +emit_16(494); +emit_16(560); +emit_16(493); +emit_16(560); +emit_16(494); +emit_16(561); +emit_16(495); +emit_16(561); +emit_16(494); +emit_16(561); +emit_16(495); +emit_16(562); +emit_16(496); +emit_16(562); +emit_16(495); +emit_16(562); +emit_16(496); +emit_16(563); +emit_16(497); +emit_16(563); +emit_16(496); +emit_16(563); +emit_16(497); +emit_16(564); +emit_16(498); +emit_16(564); +emit_16(497); +emit_16(564); +emit_16(498); +emit_16(565); +emit_16(499); +emit_16(565); +emit_16(498); +emit_16(565); +emit_16(499); +emit_16(566); +emit_16(500); +emit_16(566); +emit_16(499); +emit_16(566); +emit_16(500); +emit_16(567); +emit_16(501); +emit_16(567); +emit_16(500); +emit_16(567); +emit_16(501); +emit_16(568); +emit_16(502); +emit_16(568); +emit_16(501); +emit_16(568); +emit_16(502); +emit_16(569); +emit_16(503); +emit_16(569); +emit_16(502); +emit_16(569); +emit_16(503); +emit_16(570); +emit_16(504); +emit_16(570); +emit_16(503); +emit_16(570); +emit_16(504); +emit_16(571); +emit_16(505); +emit_16(571); +emit_16(504); +emit_16(571); +emit_16(505); +emit_16(572); +emit_16(506); +emit_16(572); +emit_16(505); +emit_16(572); +emit_16(506); +emit_16(573); +emit_16(507); +emit_16(573); +emit_16(506); +emit_16(573); +emit_16(507); +emit_16(574); +emit_16(508); +emit_16(574); +emit_16(507); +emit_16(574); +emit_16(508); +emit_16(575); +emit_16(509); +emit_16(575); +emit_16(508); +emit_16(575); +emit_16(509); +emit_16(576); +emit_16(510); +emit_16(576); +emit_16(509); +emit_16(576); +emit_16(510); +emit_16(577); +emit_16(511); +emit_16(577); +emit_16(510); +emit_16(577); +emit_16(511); +emit_16(578); +emit_16(512); +emit_16(578); +emit_16(511); +emit_16(578); +emit_16(512); +emit_16(579); +emit_16(513); +emit_16(579); +emit_16(512); +emit_16(579); +emit_16(513); +emit_16(580); +emit_16(514); +emit_16(580); +emit_16(513); +emit_16(580); +emit_16(514); +emit_16(581); +emit_16(515); +emit_16(581); +emit_16(514); +emit_16(581); +emit_16(515); +emit_16(582); +emit_16(516); +emit_16(582); +emit_16(515); +emit_16(582); +emit_16(516); +emit_16(583); +emit_16(517); +emit_16(583); +emit_16(516); +emit_16(583); +emit_16(517); +emit_16(584); +emit_16(518); +emit_16(584); +emit_16(517); +emit_16(584); +emit_16(518); +emit_16(585); +emit_16(519); +emit_16(585); +emit_16(518); +emit_16(585); +emit_16(519); +emit_16(586); +emit_16(520); +emit_16(586); +emit_16(519); +emit_16(586); +emit_16(520); +emit_16(587); +emit_16(521); +emit_16(587); +emit_16(520); +emit_16(587); +emit_16(521); +emit_16(588); +emit_16(522); +emit_16(588); +emit_16(521); +emit_16(588); +emit_16(522); +emit_16(589); +emit_16(523); +emit_16(589); +emit_16(522); +emit_16(589); +emit_16(523); +emit_16(590); +emit_16(524); +emit_16(590); +emit_16(523); +emit_16(590); +emit_16(524); +emit_16(591); +emit_16(525); +emit_16(591); +emit_16(524); +emit_16(591); +emit_16(525); +emit_16(592); +emit_16(526); +emit_16(592); +emit_16(525); +emit_16(592); +emit_16(526); +emit_16(593); +emit_16(527); +emit_16(593); +emit_16(526); +emit_16(594); +emit_16(528); +emit_16(595); +emit_16(529); +emit_16(595); +emit_16(528); +emit_16(595); +emit_16(529); +emit_16(596); +emit_16(530); +emit_16(596); +emit_16(529); +emit_16(596); +emit_16(530); +emit_16(597); +emit_16(531); +emit_16(597); +emit_16(530); +emit_16(597); +emit_16(531); +emit_16(598); +emit_16(532); +emit_16(598); +emit_16(531); +emit_16(598); +emit_16(532); +emit_16(599); +emit_16(533); +emit_16(599); +emit_16(532); +emit_16(599); +emit_16(533); +emit_16(600); +emit_16(534); +emit_16(600); +emit_16(533); +emit_16(600); +emit_16(534); +emit_16(601); +emit_16(535); +emit_16(601); +emit_16(534); +emit_16(601); +emit_16(535); +emit_16(602); +emit_16(536); +emit_16(602); +emit_16(535); +emit_16(602); +emit_16(536); +emit_16(603); +emit_16(537); +emit_16(603); +emit_16(536); +emit_16(603); +emit_16(537); +emit_16(604); +emit_16(538); +emit_16(604); +emit_16(537); +emit_16(604); +emit_16(538); +emit_16(605); +emit_16(539); +emit_16(605); +emit_16(538); +emit_16(605); +emit_16(539); +emit_16(606); +emit_16(540); +emit_16(606); +emit_16(539); +emit_16(606); +emit_16(540); +emit_16(607); +emit_16(541); +emit_16(607); +emit_16(540); +emit_16(607); +emit_16(541); +emit_16(608); +emit_16(542); +emit_16(608); +emit_16(541); +emit_16(608); +emit_16(542); +emit_16(609); +emit_16(543); +emit_16(609); +emit_16(542); +emit_16(609); +emit_16(543); +emit_16(610); +emit_16(544); +emit_16(610); +emit_16(543); +emit_16(610); +emit_16(544); +emit_16(611); +emit_16(545); +emit_16(611); +emit_16(544); +emit_16(611); +emit_16(545); +emit_16(612); +emit_16(546); +emit_16(612); +emit_16(545); +emit_16(612); +emit_16(546); +emit_16(613); +emit_16(547); +emit_16(613); +emit_16(546); +emit_16(613); +emit_16(547); +emit_16(614); +emit_16(548); +emit_16(614); +emit_16(547); +emit_16(614); +emit_16(548); +emit_16(615); +emit_16(549); +emit_16(615); +emit_16(548); +emit_16(615); +emit_16(549); +emit_16(616); +emit_16(550); +emit_16(616); +emit_16(549); +emit_16(616); +emit_16(550); +emit_16(617); +emit_16(551); +emit_16(617); +emit_16(550); +emit_16(617); +emit_16(551); +emit_16(618); +emit_16(552); +emit_16(618); +emit_16(551); +emit_16(618); +emit_16(552); +emit_16(619); +emit_16(553); +emit_16(619); +emit_16(552); +emit_16(619); +emit_16(553); +emit_16(620); +emit_16(554); +emit_16(620); +emit_16(553); +emit_16(620); +emit_16(554); +emit_16(621); +emit_16(555); +emit_16(621); +emit_16(554); +emit_16(621); +emit_16(555); +emit_16(622); +emit_16(556); +emit_16(622); +emit_16(555); +emit_16(622); +emit_16(556); +emit_16(623); +emit_16(557); +emit_16(623); +emit_16(556); +emit_16(623); +emit_16(557); +emit_16(624); +emit_16(558); +emit_16(624); +emit_16(557); +emit_16(624); +emit_16(558); +emit_16(625); +emit_16(559); +emit_16(625); +emit_16(558); +emit_16(625); +emit_16(559); +emit_16(626); +emit_16(560); +emit_16(626); +emit_16(559); +emit_16(626); +emit_16(560); +emit_16(627); +emit_16(561); +emit_16(627); +emit_16(560); +emit_16(627); +emit_16(561); +emit_16(628); +emit_16(562); +emit_16(628); +emit_16(561); +emit_16(628); +emit_16(562); +emit_16(629); +emit_16(563); +emit_16(629); +emit_16(562); +emit_16(629); +emit_16(563); +emit_16(630); +emit_16(564); +emit_16(630); +emit_16(563); +emit_16(630); +emit_16(564); +emit_16(631); +emit_16(565); +emit_16(631); +emit_16(564); +emit_16(631); +emit_16(565); +emit_16(632); +emit_16(566); +emit_16(632); +emit_16(565); +emit_16(632); +emit_16(566); +emit_16(633); +emit_16(567); +emit_16(633); +emit_16(566); +emit_16(633); +emit_16(567); +emit_16(634); +emit_16(568); +emit_16(634); +emit_16(567); +emit_16(634); +emit_16(568); +emit_16(635); +emit_16(569); +emit_16(635); +emit_16(568); +emit_16(635); +emit_16(569); +emit_16(636); +emit_16(570); +emit_16(636); +emit_16(569); +emit_16(636); +emit_16(570); +emit_16(637); +emit_16(571); +emit_16(637); +emit_16(570); +emit_16(637); +emit_16(571); +emit_16(638); +emit_16(572); +emit_16(638); +emit_16(571); +emit_16(638); +emit_16(572); +emit_16(639); +emit_16(573); +emit_16(639); +emit_16(572); +emit_16(639); +emit_16(573); +emit_16(640); +emit_16(574); +emit_16(640); +emit_16(573); +emit_16(640); +emit_16(574); +emit_16(641); +emit_16(575); +emit_16(641); +emit_16(574); +emit_16(641); +emit_16(575); +emit_16(642); +emit_16(576); +emit_16(642); +emit_16(575); +emit_16(642); +emit_16(576); +emit_16(643); +emit_16(577); +emit_16(643); +emit_16(576); +emit_16(643); +emit_16(577); +emit_16(644); +emit_16(578); +emit_16(644); +emit_16(577); +emit_16(644); +emit_16(578); +emit_16(645); +emit_16(579); +emit_16(645); +emit_16(578); +emit_16(645); +emit_16(579); +emit_16(646); +emit_16(580); +emit_16(646); +emit_16(579); +emit_16(646); +emit_16(580); +emit_16(647); +emit_16(581); +emit_16(647); +emit_16(580); +emit_16(647); +emit_16(581); +emit_16(648); +emit_16(582); +emit_16(648); +emit_16(581); +emit_16(648); +emit_16(582); +emit_16(649); +emit_16(583); +emit_16(649); +emit_16(582); +emit_16(649); +emit_16(583); +emit_16(650); +emit_16(584); +emit_16(650); +emit_16(583); +emit_16(650); +emit_16(584); +emit_16(651); +emit_16(585); +emit_16(651); +emit_16(584); +emit_16(651); +emit_16(585); +emit_16(652); +emit_16(586); +emit_16(652); +emit_16(585); +emit_16(652); +emit_16(586); +emit_16(653); +emit_16(587); +emit_16(653); +emit_16(586); +emit_16(653); +emit_16(587); +emit_16(654); +emit_16(588); +emit_16(654); +emit_16(587); +emit_16(654); +emit_16(588); +emit_16(655); +emit_16(589); +emit_16(655); +emit_16(588); +emit_16(655); +emit_16(589); +emit_16(656); +emit_16(590); +emit_16(656); +emit_16(589); +emit_16(656); +emit_16(590); +emit_16(657); +emit_16(591); +emit_16(657); +emit_16(590); +emit_16(657); +emit_16(591); +emit_16(658); +emit_16(592); +emit_16(658); +emit_16(591); +emit_16(658); +emit_16(592); +emit_16(659); +emit_16(593); +emit_16(659); +emit_16(592); +emit_16(660); +emit_16(594); +emit_16(661); +emit_16(595); +emit_16(661); +emit_16(594); +emit_16(661); +emit_16(595); +emit_16(662); +emit_16(596); +emit_16(662); +emit_16(595); +emit_16(662); +emit_16(596); +emit_16(663); +emit_16(597); +emit_16(663); +emit_16(596); +emit_16(663); +emit_16(597); +emit_16(664); +emit_16(598); +emit_16(664); +emit_16(597); +emit_16(664); +emit_16(598); +emit_16(665); +emit_16(599); +emit_16(665); +emit_16(598); +emit_16(665); +emit_16(599); +emit_16(666); +emit_16(600); +emit_16(666); +emit_16(599); +emit_16(666); +emit_16(600); +emit_16(667); +emit_16(601); +emit_16(667); +emit_16(600); +emit_16(667); +emit_16(601); +emit_16(668); +emit_16(602); +emit_16(668); +emit_16(601); +emit_16(668); +emit_16(602); +emit_16(669); +emit_16(603); +emit_16(669); +emit_16(602); +emit_16(669); +emit_16(603); +emit_16(670); +emit_16(604); +emit_16(670); +emit_16(603); +emit_16(670); +emit_16(604); +emit_16(671); +emit_16(605); +emit_16(671); +emit_16(604); +emit_16(671); +emit_16(605); +emit_16(672); +emit_16(606); +emit_16(672); +emit_16(605); +emit_16(672); +emit_16(606); +emit_16(673); +emit_16(607); +emit_16(673); +emit_16(606); +emit_16(673); +emit_16(607); +emit_16(674); +emit_16(608); +emit_16(674); +emit_16(607); +emit_16(674); +emit_16(608); +emit_16(675); +emit_16(609); +emit_16(675); +emit_16(608); +emit_16(675); +emit_16(609); +emit_16(676); +emit_16(610); +emit_16(676); +emit_16(609); +emit_16(676); +emit_16(610); +emit_16(677); +emit_16(611); +emit_16(677); +emit_16(610); +emit_16(677); +emit_16(611); +emit_16(678); +emit_16(612); +emit_16(678); +emit_16(611); +emit_16(678); +emit_16(612); +emit_16(679); +emit_16(613); +emit_16(679); +emit_16(612); +emit_16(679); +emit_16(613); +emit_16(680); +emit_16(614); +emit_16(680); +emit_16(613); +emit_16(680); +emit_16(614); +emit_16(681); +emit_16(615); +emit_16(681); +emit_16(614); +emit_16(681); +emit_16(615); +emit_16(682); +emit_16(616); +emit_16(682); +emit_16(615); +emit_16(682); +emit_16(616); +emit_16(683); +emit_16(617); +emit_16(683); +emit_16(616); +emit_16(683); +emit_16(617); +emit_16(684); +emit_16(618); +emit_16(684); +emit_16(617); +emit_16(684); +emit_16(618); +emit_16(685); +emit_16(619); +emit_16(685); +emit_16(618); +emit_16(685); +emit_16(619); +emit_16(686); +emit_16(620); +emit_16(686); +emit_16(619); +emit_16(686); +emit_16(620); +emit_16(687); +emit_16(621); +emit_16(687); +emit_16(620); +emit_16(687); +emit_16(621); +emit_16(688); +emit_16(622); +emit_16(688); +emit_16(621); +emit_16(688); +emit_16(622); +emit_16(689); +emit_16(623); +emit_16(689); +emit_16(622); +emit_16(689); +emit_16(623); +emit_16(690); +emit_16(624); +emit_16(690); +emit_16(623); +emit_16(690); +emit_16(624); +emit_16(691); +emit_16(625); +emit_16(691); +emit_16(624); +emit_16(691); +emit_16(625); +emit_16(692); +emit_16(626); +emit_16(692); +emit_16(625); +emit_16(692); +emit_16(626); +emit_16(693); +emit_16(627); +emit_16(693); +emit_16(626); +emit_16(693); +emit_16(627); +emit_16(694); +emit_16(628); +emit_16(694); +emit_16(627); +emit_16(694); +emit_16(628); +emit_16(695); +emit_16(629); +emit_16(695); +emit_16(628); +emit_16(695); +emit_16(629); +emit_16(696); +emit_16(630); +emit_16(696); +emit_16(629); +emit_16(696); +emit_16(630); +emit_16(697); +emit_16(631); +emit_16(697); +emit_16(630); +emit_16(697); +emit_16(631); +emit_16(698); +emit_16(632); +emit_16(698); +emit_16(631); +emit_16(698); +emit_16(632); +emit_16(699); +emit_16(633); +emit_16(699); +emit_16(632); +emit_16(699); +emit_16(633); +emit_16(700); +emit_16(634); +emit_16(700); +emit_16(633); +emit_16(700); +emit_16(634); +emit_16(701); +emit_16(635); +emit_16(701); +emit_16(634); +emit_16(701); +emit_16(635); +emit_16(702); +emit_16(636); +emit_16(702); +emit_16(635); +emit_16(702); +emit_16(636); +emit_16(703); +emit_16(637); +emit_16(703); +emit_16(636); +emit_16(703); +emit_16(637); +emit_16(704); +emit_16(638); +emit_16(704); +emit_16(637); +emit_16(704); +emit_16(638); +emit_16(705); +emit_16(639); +emit_16(705); +emit_16(638); +emit_16(705); +emit_16(639); +emit_16(706); +emit_16(640); +emit_16(706); +emit_16(639); +emit_16(706); +emit_16(640); +emit_16(707); +emit_16(641); +emit_16(707); +emit_16(640); +emit_16(707); +emit_16(641); +emit_16(708); +emit_16(642); +emit_16(708); +emit_16(641); +emit_16(708); +emit_16(642); +emit_16(709); +emit_16(643); +emit_16(709); +emit_16(642); +emit_16(709); +emit_16(643); +emit_16(710); +emit_16(644); +emit_16(710); +emit_16(643); +emit_16(710); +emit_16(644); +emit_16(711); +emit_16(645); +emit_16(711); +emit_16(644); +emit_16(711); +emit_16(645); +emit_16(712); +emit_16(646); +emit_16(712); +emit_16(645); +emit_16(712); +emit_16(646); +emit_16(713); +emit_16(647); +emit_16(713); +emit_16(646); +emit_16(713); +emit_16(647); +emit_16(714); +emit_16(648); +emit_16(714); +emit_16(647); +emit_16(714); +emit_16(648); +emit_16(715); +emit_16(649); +emit_16(715); +emit_16(648); +emit_16(715); +emit_16(649); +emit_16(716); +emit_16(650); +emit_16(716); +emit_16(649); +emit_16(716); +emit_16(650); +emit_16(717); +emit_16(651); +emit_16(717); +emit_16(650); +emit_16(717); +emit_16(651); +emit_16(718); +emit_16(652); +emit_16(718); +emit_16(651); +emit_16(718); +emit_16(652); +emit_16(719); +emit_16(653); +emit_16(719); +emit_16(652); +emit_16(719); +emit_16(653); +emit_16(720); +emit_16(654); +emit_16(720); +emit_16(653); +emit_16(720); +emit_16(654); +emit_16(721); +emit_16(655); +emit_16(721); +emit_16(654); +emit_16(721); +emit_16(655); +emit_16(722); +emit_16(656); +emit_16(722); +emit_16(655); +emit_16(722); +emit_16(656); +emit_16(723); +emit_16(657); +emit_16(723); +emit_16(656); +emit_16(723); +emit_16(657); +emit_16(724); +emit_16(658); +emit_16(724); +emit_16(657); +emit_16(724); +emit_16(658); +emit_16(725); +emit_16(659); +emit_16(725); +emit_16(658); +emit_16(726); +emit_16(660); +emit_16(727); +emit_16(661); +emit_16(727); +emit_16(660); +emit_16(727); +emit_16(661); +emit_16(728); +emit_16(662); +emit_16(728); +emit_16(661); +emit_16(728); +emit_16(662); +emit_16(729); +emit_16(663); +emit_16(729); +emit_16(662); +emit_16(729); +emit_16(663); +emit_16(730); +emit_16(664); +emit_16(730); +emit_16(663); +emit_16(730); +emit_16(664); +emit_16(731); +emit_16(665); +emit_16(731); +emit_16(664); +emit_16(731); +emit_16(665); +emit_16(732); +emit_16(666); +emit_16(732); +emit_16(665); +emit_16(732); +emit_16(666); +emit_16(733); +emit_16(667); +emit_16(733); +emit_16(666); +emit_16(733); +emit_16(667); +emit_16(734); +emit_16(668); +emit_16(734); +emit_16(667); +emit_16(734); +emit_16(668); +emit_16(735); +emit_16(669); +emit_16(735); +emit_16(668); +emit_16(735); +emit_16(669); +emit_16(736); +emit_16(670); +emit_16(736); +emit_16(669); +emit_16(736); +emit_16(670); +emit_16(737); +emit_16(671); +emit_16(737); +emit_16(670); +emit_16(737); +emit_16(671); +emit_16(738); +emit_16(672); +emit_16(738); +emit_16(671); +emit_16(738); +emit_16(672); +emit_16(739); +emit_16(673); +emit_16(739); +emit_16(672); +emit_16(739); +emit_16(673); +emit_16(740); +emit_16(674); +emit_16(740); +emit_16(673); +emit_16(740); +emit_16(674); +emit_16(741); +emit_16(675); +emit_16(741); +emit_16(674); +emit_16(741); +emit_16(675); +emit_16(742); +emit_16(676); +emit_16(742); +emit_16(675); +emit_16(742); +emit_16(676); +emit_16(743); +emit_16(677); +emit_16(743); +emit_16(676); +emit_16(743); +emit_16(677); +emit_16(744); +emit_16(678); +emit_16(744); +emit_16(677); +emit_16(744); +emit_16(678); +emit_16(745); +emit_16(679); +emit_16(745); +emit_16(678); +emit_16(745); +emit_16(679); +emit_16(746); +emit_16(680); +emit_16(746); +emit_16(679); +emit_16(746); +emit_16(680); +emit_16(747); +emit_16(681); +emit_16(747); +emit_16(680); +emit_16(747); +emit_16(681); +emit_16(748); +emit_16(682); +emit_16(748); +emit_16(681); +emit_16(748); +emit_16(682); +emit_16(749); +emit_16(683); +emit_16(749); +emit_16(682); +emit_16(749); +emit_16(683); +emit_16(750); +emit_16(684); +emit_16(750); +emit_16(683); +emit_16(750); +emit_16(684); +emit_16(751); +emit_16(685); +emit_16(751); +emit_16(684); +emit_16(751); +emit_16(685); +emit_16(752); +emit_16(686); +emit_16(752); +emit_16(685); +emit_16(752); +emit_16(686); +emit_16(753); +emit_16(687); +emit_16(753); +emit_16(686); +emit_16(753); +emit_16(687); +emit_16(754); +emit_16(688); +emit_16(754); +emit_16(687); +emit_16(754); +emit_16(688); +emit_16(755); +emit_16(689); +emit_16(755); +emit_16(688); +emit_16(755); +emit_16(689); +emit_16(756); +emit_16(690); +emit_16(756); +emit_16(689); +emit_16(756); +emit_16(690); +emit_16(757); +emit_16(691); +emit_16(757); +emit_16(690); +emit_16(757); +emit_16(691); +emit_16(758); +emit_16(692); +emit_16(758); +emit_16(691); +emit_16(758); +emit_16(692); +emit_16(759); +emit_16(693); +emit_16(759); +emit_16(692); +emit_16(759); +emit_16(693); +emit_16(760); +emit_16(694); +emit_16(760); +emit_16(693); +emit_16(760); +emit_16(694); +emit_16(761); +emit_16(695); +emit_16(761); +emit_16(694); +emit_16(761); +emit_16(695); +emit_16(762); +emit_16(696); +emit_16(762); +emit_16(695); +emit_16(762); +emit_16(696); +emit_16(763); +emit_16(697); +emit_16(763); +emit_16(696); +emit_16(763); +emit_16(697); +emit_16(764); +emit_16(698); +emit_16(764); +emit_16(697); +emit_16(764); +emit_16(698); +emit_16(765); +emit_16(699); +emit_16(765); +emit_16(698); +emit_16(765); +emit_16(699); +emit_16(766); +emit_16(700); +emit_16(766); +emit_16(699); +emit_16(766); +emit_16(700); +emit_16(767); +emit_16(701); +emit_16(767); +emit_16(700); +emit_16(767); +emit_16(701); +emit_16(768); +emit_16(702); +emit_16(768); +emit_16(701); +emit_16(768); +emit_16(702); +emit_16(769); +emit_16(703); +emit_16(769); +emit_16(702); +emit_16(769); +emit_16(703); +emit_16(770); +emit_16(704); +emit_16(770); +emit_16(703); +emit_16(770); +emit_16(704); +emit_16(771); +emit_16(705); +emit_16(771); +emit_16(704); +emit_16(771); +emit_16(705); +emit_16(772); +emit_16(706); +emit_16(772); +emit_16(705); +emit_16(772); +emit_16(706); +emit_16(773); +emit_16(707); +emit_16(773); +emit_16(706); +emit_16(773); +emit_16(707); +emit_16(774); +emit_16(708); +emit_16(774); +emit_16(707); +emit_16(774); +emit_16(708); +emit_16(775); +emit_16(709); +emit_16(775); +emit_16(708); +emit_16(775); +emit_16(709); +emit_16(776); +emit_16(710); +emit_16(776); +emit_16(709); +emit_16(776); +emit_16(710); +emit_16(777); +emit_16(711); +emit_16(777); +emit_16(710); +emit_16(777); +emit_16(711); +emit_16(778); +emit_16(712); +emit_16(778); +emit_16(711); +emit_16(778); +emit_16(712); +emit_16(779); +emit_16(713); +emit_16(779); +emit_16(712); +emit_16(779); +emit_16(713); +emit_16(780); +emit_16(714); +emit_16(780); +emit_16(713); +emit_16(780); +emit_16(714); +emit_16(781); +emit_16(715); +emit_16(781); +emit_16(714); +emit_16(781); +emit_16(715); +emit_16(782); +emit_16(716); +emit_16(782); +emit_16(715); +emit_16(782); +emit_16(716); +emit_16(783); +emit_16(717); +emit_16(783); +emit_16(716); +emit_16(783); +emit_16(717); +emit_16(784); +emit_16(718); +emit_16(784); +emit_16(717); +emit_16(784); +emit_16(718); +emit_16(785); +emit_16(719); +emit_16(785); +emit_16(718); +emit_16(785); +emit_16(719); +emit_16(786); +emit_16(720); +emit_16(786); +emit_16(719); +emit_16(786); +emit_16(720); +emit_16(787); +emit_16(721); +emit_16(787); +emit_16(720); +emit_16(787); +emit_16(721); +emit_16(788); +emit_16(722); +emit_16(788); +emit_16(721); +emit_16(788); +emit_16(722); +emit_16(789); +emit_16(723); +emit_16(789); +emit_16(722); +emit_16(789); +emit_16(723); +emit_16(790); +emit_16(724); +emit_16(790); +emit_16(723); +emit_16(790); +emit_16(724); +emit_16(791); +emit_16(725); +emit_16(791); +emit_16(724); +emit_16(792); +emit_16(726); +emit_16(793); +emit_16(727); +emit_16(793); +emit_16(726); +emit_16(793); +emit_16(727); +emit_16(794); +emit_16(728); +emit_16(794); +emit_16(727); +emit_16(794); +emit_16(728); +emit_16(795); +emit_16(729); +emit_16(795); +emit_16(728); +emit_16(795); +emit_16(729); +emit_16(796); +emit_16(730); +emit_16(796); +emit_16(729); +emit_16(796); +emit_16(730); +emit_16(797); +emit_16(731); +emit_16(797); +emit_16(730); +emit_16(797); +emit_16(731); +emit_16(798); +emit_16(732); +emit_16(798); +emit_16(731); +emit_16(798); +emit_16(732); +emit_16(799); +emit_16(733); +emit_16(799); +emit_16(732); +emit_16(799); +emit_16(733); +emit_16(800); +emit_16(734); +emit_16(800); +emit_16(733); +emit_16(800); +emit_16(734); +emit_16(801); +emit_16(735); +emit_16(801); +emit_16(734); +emit_16(801); +emit_16(735); +emit_16(802); +emit_16(736); +emit_16(802); +emit_16(735); +emit_16(802); +emit_16(736); +emit_16(803); +emit_16(737); +emit_16(803); +emit_16(736); +emit_16(803); +emit_16(737); +emit_16(804); +emit_16(738); +emit_16(804); +emit_16(737); +emit_16(804); +emit_16(738); +emit_16(805); +emit_16(739); +emit_16(805); +emit_16(738); +emit_16(805); +emit_16(739); +emit_16(806); +emit_16(740); +emit_16(806); +emit_16(739); +emit_16(806); +emit_16(740); +emit_16(807); +emit_16(741); +emit_16(807); +emit_16(740); +emit_16(807); +emit_16(741); +emit_16(808); +emit_16(742); +emit_16(808); +emit_16(741); +emit_16(808); +emit_16(742); +emit_16(809); +emit_16(743); +emit_16(809); +emit_16(742); +emit_16(809); +emit_16(743); +emit_16(810); +emit_16(744); +emit_16(810); +emit_16(743); +emit_16(810); +emit_16(744); +emit_16(811); +emit_16(745); +emit_16(811); +emit_16(744); +emit_16(811); +emit_16(745); +emit_16(812); +emit_16(746); +emit_16(812); +emit_16(745); +emit_16(812); +emit_16(746); +emit_16(813); +emit_16(747); +emit_16(813); +emit_16(746); +emit_16(813); +emit_16(747); +emit_16(814); +emit_16(748); +emit_16(814); +emit_16(747); +emit_16(814); +emit_16(748); +emit_16(815); +emit_16(749); +emit_16(815); +emit_16(748); +emit_16(815); +emit_16(749); +emit_16(816); +emit_16(750); +emit_16(816); +emit_16(749); +emit_16(816); +emit_16(750); +emit_16(817); +emit_16(751); +emit_16(817); +emit_16(750); +emit_16(817); +emit_16(751); +emit_16(818); +emit_16(752); +emit_16(818); +emit_16(751); +emit_16(818); +emit_16(752); +emit_16(819); +emit_16(753); +emit_16(819); +emit_16(752); +emit_16(819); +emit_16(753); +emit_16(820); +emit_16(754); +emit_16(820); +emit_16(753); +emit_16(820); +emit_16(754); +emit_16(821); +emit_16(755); +emit_16(821); +emit_16(754); +emit_16(821); +emit_16(755); +emit_16(822); +emit_16(756); +emit_16(822); +emit_16(755); +emit_16(822); +emit_16(756); +emit_16(823); +emit_16(757); +emit_16(823); +emit_16(756); +emit_16(823); +emit_16(757); +emit_16(824); +emit_16(758); +emit_16(824); +emit_16(757); +emit_16(824); +emit_16(758); +emit_16(825); +emit_16(759); +emit_16(825); +emit_16(758); +emit_16(825); +emit_16(759); +emit_16(826); +emit_16(760); +emit_16(826); +emit_16(759); +emit_16(826); +emit_16(760); +emit_16(827); +emit_16(761); +emit_16(827); +emit_16(760); +emit_16(827); +emit_16(761); +emit_16(828); +emit_16(762); +emit_16(828); +emit_16(761); +emit_16(828); +emit_16(762); +emit_16(829); +emit_16(763); +emit_16(829); +emit_16(762); +emit_16(829); +emit_16(763); +emit_16(830); +emit_16(764); +emit_16(830); +emit_16(763); +emit_16(830); +emit_16(764); +emit_16(831); +emit_16(765); +emit_16(831); +emit_16(764); +emit_16(831); +emit_16(765); +emit_16(832); +emit_16(766); +emit_16(832); +emit_16(765); +emit_16(832); +emit_16(766); +emit_16(833); +emit_16(767); +emit_16(833); +emit_16(766); +emit_16(833); +emit_16(767); +emit_16(834); +emit_16(768); +emit_16(834); +emit_16(767); +emit_16(834); +emit_16(768); +emit_16(835); +emit_16(769); +emit_16(835); +emit_16(768); +emit_16(835); +emit_16(769); +emit_16(836); +emit_16(770); +emit_16(836); +emit_16(769); +emit_16(836); +emit_16(770); +emit_16(837); +emit_16(771); +emit_16(837); +emit_16(770); +emit_16(837); +emit_16(771); +emit_16(838); +emit_16(772); +emit_16(838); +emit_16(771); +emit_16(838); +emit_16(772); +emit_16(839); +emit_16(773); +emit_16(839); +emit_16(772); +emit_16(839); +emit_16(773); +emit_16(840); +emit_16(774); +emit_16(840); +emit_16(773); +emit_16(840); +emit_16(774); +emit_16(841); +emit_16(775); +emit_16(841); +emit_16(774); +emit_16(841); +emit_16(775); +emit_16(842); +emit_16(776); +emit_16(842); +emit_16(775); +emit_16(842); +emit_16(776); +emit_16(843); +emit_16(777); +emit_16(843); +emit_16(776); +emit_16(843); +emit_16(777); +emit_16(844); +emit_16(778); +emit_16(844); +emit_16(777); +emit_16(844); +emit_16(778); +emit_16(845); +emit_16(779); +emit_16(845); +emit_16(778); +emit_16(845); +emit_16(779); +emit_16(846); +emit_16(780); +emit_16(846); +emit_16(779); +emit_16(846); +emit_16(780); +emit_16(847); +emit_16(781); +emit_16(847); +emit_16(780); +emit_16(847); +emit_16(781); +emit_16(848); +emit_16(782); +emit_16(848); +emit_16(781); +emit_16(848); +emit_16(782); +emit_16(849); +emit_16(783); +emit_16(849); +emit_16(782); +emit_16(849); +emit_16(783); +emit_16(850); +emit_16(784); +emit_16(850); +emit_16(783); +emit_16(850); +emit_16(784); +emit_16(851); +emit_16(785); +emit_16(851); +emit_16(784); +emit_16(851); +emit_16(785); +emit_16(852); +emit_16(786); +emit_16(852); +emit_16(785); +emit_16(852); +emit_16(786); +emit_16(853); +emit_16(787); +emit_16(853); +emit_16(786); +emit_16(853); +emit_16(787); +emit_16(854); +emit_16(788); +emit_16(854); +emit_16(787); +emit_16(854); +emit_16(788); +emit_16(855); +emit_16(789); +emit_16(855); +emit_16(788); +emit_16(855); +emit_16(789); +emit_16(856); +emit_16(790); +emit_16(856); +emit_16(789); +emit_16(856); +emit_16(790); +emit_16(857); +emit_16(791); +emit_16(857); +emit_16(790); +emit_16(858); +emit_16(792); +emit_16(859); +emit_16(793); +emit_16(859); +emit_16(792); +emit_16(859); +emit_16(793); +emit_16(860); +emit_16(794); +emit_16(860); +emit_16(793); +emit_16(860); +emit_16(794); +emit_16(861); +emit_16(795); +emit_16(861); +emit_16(794); +emit_16(861); +emit_16(795); +emit_16(862); +emit_16(796); +emit_16(862); +emit_16(795); +emit_16(862); +emit_16(796); +emit_16(863); +emit_16(797); +emit_16(863); +emit_16(796); +emit_16(863); +emit_16(797); +emit_16(864); +emit_16(798); +emit_16(864); +emit_16(797); +emit_16(864); +emit_16(798); +emit_16(865); +emit_16(799); +emit_16(865); +emit_16(798); +emit_16(865); +emit_16(799); +emit_16(866); +emit_16(800); +emit_16(866); +emit_16(799); +emit_16(866); +emit_16(800); +emit_16(867); +emit_16(801); +emit_16(867); +emit_16(800); +emit_16(867); +emit_16(801); +emit_16(868); +emit_16(802); +emit_16(868); +emit_16(801); +emit_16(868); +emit_16(802); +emit_16(869); +emit_16(803); +emit_16(869); +emit_16(802); +emit_16(869); +emit_16(803); +emit_16(870); +emit_16(804); +emit_16(870); +emit_16(803); +emit_16(870); +emit_16(804); +emit_16(871); +emit_16(805); +emit_16(871); +emit_16(804); +emit_16(871); +emit_16(805); +emit_16(872); +emit_16(806); +emit_16(872); +emit_16(805); +emit_16(872); +emit_16(806); +emit_16(873); +emit_16(807); +emit_16(873); +emit_16(806); +emit_16(873); +emit_16(807); +emit_16(874); +emit_16(808); +emit_16(874); +emit_16(807); +emit_16(874); +emit_16(808); +emit_16(875); +emit_16(809); +emit_16(875); +emit_16(808); +emit_16(875); +emit_16(809); +emit_16(876); +emit_16(810); +emit_16(876); +emit_16(809); +emit_16(876); +emit_16(810); +emit_16(877); +emit_16(811); +emit_16(877); +emit_16(810); +emit_16(877); +emit_16(811); +emit_16(878); +emit_16(812); +emit_16(878); +emit_16(811); +emit_16(878); +emit_16(812); +emit_16(879); +emit_16(813); +emit_16(879); +emit_16(812); +emit_16(879); +emit_16(813); +emit_16(880); +emit_16(814); +emit_16(880); +emit_16(813); +emit_16(880); +emit_16(814); +emit_16(881); +emit_16(815); +emit_16(881); +emit_16(814); +emit_16(881); +emit_16(815); +emit_16(882); +emit_16(816); +emit_16(882); +emit_16(815); +emit_16(882); +emit_16(816); +emit_16(883); +emit_16(817); +emit_16(883); +emit_16(816); +emit_16(883); +emit_16(817); +emit_16(884); +emit_16(818); +emit_16(884); +emit_16(817); +emit_16(884); +emit_16(818); +emit_16(885); +emit_16(819); +emit_16(885); +emit_16(818); +emit_16(885); +emit_16(819); +emit_16(886); +emit_16(820); +emit_16(886); +emit_16(819); +emit_16(886); +emit_16(820); +emit_16(887); +emit_16(821); +emit_16(887); +emit_16(820); +emit_16(887); +emit_16(821); +emit_16(888); +emit_16(822); +emit_16(888); +emit_16(821); +emit_16(888); +emit_16(822); +emit_16(889); +emit_16(823); +emit_16(889); +emit_16(822); +emit_16(889); +emit_16(823); +emit_16(890); +emit_16(824); +emit_16(890); +emit_16(823); +emit_16(890); +emit_16(824); +emit_16(891); +emit_16(825); +emit_16(891); +emit_16(824); +emit_16(891); +emit_16(825); +emit_16(892); +emit_16(826); +emit_16(892); +emit_16(825); +emit_16(892); +emit_16(826); +emit_16(893); +emit_16(827); +emit_16(893); +emit_16(826); +emit_16(893); +emit_16(827); +emit_16(894); +emit_16(828); +emit_16(894); +emit_16(827); +emit_16(894); +emit_16(828); +emit_16(895); +emit_16(829); +emit_16(895); +emit_16(828); +emit_16(895); +emit_16(829); +emit_16(896); +emit_16(830); +emit_16(896); +emit_16(829); +emit_16(896); +emit_16(830); +emit_16(897); +emit_16(831); +emit_16(897); +emit_16(830); +emit_16(897); +emit_16(831); +emit_16(898); +emit_16(832); +emit_16(898); +emit_16(831); +emit_16(898); +emit_16(832); +emit_16(899); +emit_16(833); +emit_16(899); +emit_16(832); +emit_16(899); +emit_16(833); +emit_16(900); +emit_16(834); +emit_16(900); +emit_16(833); +emit_16(900); +emit_16(834); +emit_16(901); +emit_16(835); +emit_16(901); +emit_16(834); +emit_16(901); +emit_16(835); +emit_16(902); +emit_16(836); +emit_16(902); +emit_16(835); +emit_16(902); +emit_16(836); +emit_16(903); +emit_16(837); +emit_16(903); +emit_16(836); +emit_16(903); +emit_16(837); +emit_16(904); +emit_16(838); +emit_16(904); +emit_16(837); +emit_16(904); +emit_16(838); +emit_16(905); +emit_16(839); +emit_16(905); +emit_16(838); +emit_16(905); +emit_16(839); +emit_16(906); +emit_16(840); +emit_16(906); +emit_16(839); +emit_16(906); +emit_16(840); +emit_16(907); +emit_16(841); +emit_16(907); +emit_16(840); +emit_16(907); +emit_16(841); +emit_16(908); +emit_16(842); +emit_16(908); +emit_16(841); +emit_16(908); +emit_16(842); +emit_16(909); +emit_16(843); +emit_16(909); +emit_16(842); +emit_16(909); +emit_16(843); +emit_16(910); +emit_16(844); +emit_16(910); +emit_16(843); +emit_16(910); +emit_16(844); +emit_16(911); +emit_16(845); +emit_16(911); +emit_16(844); +emit_16(911); +emit_16(845); +emit_16(912); +emit_16(846); +emit_16(912); +emit_16(845); +emit_16(912); +emit_16(846); +emit_16(913); +emit_16(847); +emit_16(913); +emit_16(846); +emit_16(913); +emit_16(847); +emit_16(914); +emit_16(848); +emit_16(914); +emit_16(847); +emit_16(914); +emit_16(848); +emit_16(915); +emit_16(849); +emit_16(915); +emit_16(848); +emit_16(915); +emit_16(849); +emit_16(916); +emit_16(850); +emit_16(916); +emit_16(849); +emit_16(916); +emit_16(850); +emit_16(917); +emit_16(851); +emit_16(917); +emit_16(850); +emit_16(917); +emit_16(851); +emit_16(918); +emit_16(852); +emit_16(918); +emit_16(851); +emit_16(918); +emit_16(852); +emit_16(919); +emit_16(853); +emit_16(919); +emit_16(852); +emit_16(919); +emit_16(853); +emit_16(920); +emit_16(854); +emit_16(920); +emit_16(853); +emit_16(920); +emit_16(854); +emit_16(921); +emit_16(855); +emit_16(921); +emit_16(854); +emit_16(921); +emit_16(855); +emit_16(922); +emit_16(856); +emit_16(922); +emit_16(855); +emit_16(922); +emit_16(856); +emit_16(923); +emit_16(857); +emit_16(923); +emit_16(856); +emit_16(924); +emit_16(858); +emit_16(925); +emit_16(859); +emit_16(925); +emit_16(858); +emit_16(925); +emit_16(859); +emit_16(926); +emit_16(860); +emit_16(926); +emit_16(859); +emit_16(926); +emit_16(860); +emit_16(927); +emit_16(861); +emit_16(927); +emit_16(860); +emit_16(927); +emit_16(861); +emit_16(928); +emit_16(862); +emit_16(928); +emit_16(861); +emit_16(928); +emit_16(862); +emit_16(929); +emit_16(863); +emit_16(929); +emit_16(862); +emit_16(929); +emit_16(863); +emit_16(930); +emit_16(864); +emit_16(930); +emit_16(863); +emit_16(930); +emit_16(864); +emit_16(931); +emit_16(865); +emit_16(931); +emit_16(864); +emit_16(931); +emit_16(865); +emit_16(932); +emit_16(866); +emit_16(932); +emit_16(865); +emit_16(932); +emit_16(866); +emit_16(933); +emit_16(867); +emit_16(933); +emit_16(866); +emit_16(933); +emit_16(867); +emit_16(934); +emit_16(868); +emit_16(934); +emit_16(867); +emit_16(934); +emit_16(868); +emit_16(935); +emit_16(869); +emit_16(935); +emit_16(868); +emit_16(935); +emit_16(869); +emit_16(936); +emit_16(870); +emit_16(936); +emit_16(869); +emit_16(936); +emit_16(870); +emit_16(937); +emit_16(871); +emit_16(937); +emit_16(870); +emit_16(937); +emit_16(871); +emit_16(938); +emit_16(872); +emit_16(938); +emit_16(871); +emit_16(938); +emit_16(872); +emit_16(939); +emit_16(873); +emit_16(939); +emit_16(872); +emit_16(939); +emit_16(873); +emit_16(940); +emit_16(874); +emit_16(940); +emit_16(873); +emit_16(940); +emit_16(874); +emit_16(941); +emit_16(875); +emit_16(941); +emit_16(874); +emit_16(941); +emit_16(875); +emit_16(942); +emit_16(876); +emit_16(942); +emit_16(875); +emit_16(942); +emit_16(876); +emit_16(943); +emit_16(877); +emit_16(943); +emit_16(876); +emit_16(943); +emit_16(877); +emit_16(944); +emit_16(878); +emit_16(944); +emit_16(877); +emit_16(944); +emit_16(878); +emit_16(945); +emit_16(879); +emit_16(945); +emit_16(878); +emit_16(945); +emit_16(879); +emit_16(946); +emit_16(880); +emit_16(946); +emit_16(879); +emit_16(946); +emit_16(880); +emit_16(947); +emit_16(881); +emit_16(947); +emit_16(880); +emit_16(947); +emit_16(881); +emit_16(948); +emit_16(882); +emit_16(948); +emit_16(881); +emit_16(948); +emit_16(882); +emit_16(949); +emit_16(883); +emit_16(949); +emit_16(882); +emit_16(949); +emit_16(883); +emit_16(950); +emit_16(884); +emit_16(950); +emit_16(883); +emit_16(950); +emit_16(884); +emit_16(951); +emit_16(885); +emit_16(951); +emit_16(884); +emit_16(951); +emit_16(885); +emit_16(952); +emit_16(886); +emit_16(952); +emit_16(885); +emit_16(952); +emit_16(886); +emit_16(953); +emit_16(887); +emit_16(953); +emit_16(886); +emit_16(953); +emit_16(887); +emit_16(954); +emit_16(888); +emit_16(954); +emit_16(887); +emit_16(954); +emit_16(888); +emit_16(955); +emit_16(889); +emit_16(955); +emit_16(888); +emit_16(955); +emit_16(889); +emit_16(956); +emit_16(890); +emit_16(956); +emit_16(889); +emit_16(956); +emit_16(890); +emit_16(957); +emit_16(891); +emit_16(957); +emit_16(890); +emit_16(957); +emit_16(891); +emit_16(958); +emit_16(892); +emit_16(958); +emit_16(891); +emit_16(958); +emit_16(892); +emit_16(959); +emit_16(893); +emit_16(959); +emit_16(892); +emit_16(959); +emit_16(893); +emit_16(960); +emit_16(894); +emit_16(960); +emit_16(893); +emit_16(960); +emit_16(894); +emit_16(961); +emit_16(895); +emit_16(961); +emit_16(894); +emit_16(961); +emit_16(895); +emit_16(962); +emit_16(896); +emit_16(962); +emit_16(895); +emit_16(962); +emit_16(896); +emit_16(963); +emit_16(897); +emit_16(963); +emit_16(896); +emit_16(963); +emit_16(897); +emit_16(964); +emit_16(898); +emit_16(964); +emit_16(897); +emit_16(964); +emit_16(898); +emit_16(965); +emit_16(899); +emit_16(965); +emit_16(898); +emit_16(965); +emit_16(899); +emit_16(966); +emit_16(900); +emit_16(966); +emit_16(899); +emit_16(966); +emit_16(900); +emit_16(967); +emit_16(901); +emit_16(967); +emit_16(900); +emit_16(967); +emit_16(901); +emit_16(968); +emit_16(902); +emit_16(968); +emit_16(901); +emit_16(968); +emit_16(902); +emit_16(969); +emit_16(903); +emit_16(969); +emit_16(902); +emit_16(969); +emit_16(903); +emit_16(970); +emit_16(904); +emit_16(970); +emit_16(903); +emit_16(970); +emit_16(904); +emit_16(971); +emit_16(905); +emit_16(971); +emit_16(904); +emit_16(971); +emit_16(905); +emit_16(972); +emit_16(906); +emit_16(972); +emit_16(905); +emit_16(972); +emit_16(906); +emit_16(973); +emit_16(907); +emit_16(973); +emit_16(906); +emit_16(973); +emit_16(907); +emit_16(974); +emit_16(908); +emit_16(974); +emit_16(907); +emit_16(974); +emit_16(908); +emit_16(975); +emit_16(909); +emit_16(975); +emit_16(908); +emit_16(975); +emit_16(909); +emit_16(976); +emit_16(910); +emit_16(976); +emit_16(909); +emit_16(976); +emit_16(910); +emit_16(977); +emit_16(911); +emit_16(977); +emit_16(910); +emit_16(977); +emit_16(911); +emit_16(978); +emit_16(912); +emit_16(978); +emit_16(911); +emit_16(978); +emit_16(912); +emit_16(979); +emit_16(913); +emit_16(979); +emit_16(912); +emit_16(979); +emit_16(913); +emit_16(980); +emit_16(914); +emit_16(980); +emit_16(913); +emit_16(980); +emit_16(914); +emit_16(981); +emit_16(915); +emit_16(981); +emit_16(914); +emit_16(981); +emit_16(915); +emit_16(982); +emit_16(916); +emit_16(982); +emit_16(915); +emit_16(982); +emit_16(916); +emit_16(983); +emit_16(917); +emit_16(983); +emit_16(916); +emit_16(983); +emit_16(917); +emit_16(984); +emit_16(918); +emit_16(984); +emit_16(917); +emit_16(984); +emit_16(918); +emit_16(985); +emit_16(919); +emit_16(985); +emit_16(918); +emit_16(985); +emit_16(919); +emit_16(986); +emit_16(920); +emit_16(986); +emit_16(919); +emit_16(986); +emit_16(920); +emit_16(987); +emit_16(921); +emit_16(987); +emit_16(920); +emit_16(987); +emit_16(921); +emit_16(988); +emit_16(922); +emit_16(988); +emit_16(921); +emit_16(988); +emit_16(922); +emit_16(989); +emit_16(923); +emit_16(989); +emit_16(922); +emit_16(990); +emit_16(924); +emit_16(991); +emit_16(925); +emit_16(991); +emit_16(924); +emit_16(991); +emit_16(925); +emit_16(992); +emit_16(926); +emit_16(992); +emit_16(925); +emit_16(992); +emit_16(926); +emit_16(993); +emit_16(927); +emit_16(993); +emit_16(926); +emit_16(993); +emit_16(927); +emit_16(994); +emit_16(928); +emit_16(994); +emit_16(927); +emit_16(994); +emit_16(928); +emit_16(995); +emit_16(929); +emit_16(995); +emit_16(928); +emit_16(995); +emit_16(929); +emit_16(996); +emit_16(930); +emit_16(996); +emit_16(929); +emit_16(996); +emit_16(930); +emit_16(997); +emit_16(931); +emit_16(997); +emit_16(930); +emit_16(997); +emit_16(931); +emit_16(998); +emit_16(932); +emit_16(998); +emit_16(931); +emit_16(998); +emit_16(932); +emit_16(999); +emit_16(933); +emit_16(999); +emit_16(932); +emit_16(999); +emit_16(933); +emit_16(1000); +emit_16(934); +emit_16(1000); +emit_16(933); +emit_16(1000); +emit_16(934); +emit_16(1001); +emit_16(935); +emit_16(1001); +emit_16(934); +emit_16(1001); +emit_16(935); +emit_16(1002); +emit_16(936); +emit_16(1002); +emit_16(935); +emit_16(1002); +emit_16(936); +emit_16(1003); +emit_16(937); +emit_16(1003); +emit_16(936); +emit_16(1003); +emit_16(937); +emit_16(1004); +emit_16(938); +emit_16(1004); +emit_16(937); +emit_16(1004); +emit_16(938); +emit_16(1005); +emit_16(939); +emit_16(1005); +emit_16(938); +emit_16(1005); +emit_16(939); +emit_16(1006); +emit_16(940); +emit_16(1006); +emit_16(939); +emit_16(1006); +emit_16(940); +emit_16(1007); +emit_16(941); +emit_16(1007); +emit_16(940); +emit_16(1007); +emit_16(941); +emit_16(1008); +emit_16(942); +emit_16(1008); +emit_16(941); +emit_16(1008); +emit_16(942); +emit_16(1009); +emit_16(943); +emit_16(1009); +emit_16(942); +emit_16(1009); +emit_16(943); +emit_16(1010); +emit_16(944); +emit_16(1010); +emit_16(943); +emit_16(1010); +emit_16(944); +emit_16(1011); +emit_16(945); +emit_16(1011); +emit_16(944); +emit_16(1011); +emit_16(945); +emit_16(1012); +emit_16(946); +emit_16(1012); +emit_16(945); +emit_16(1012); +emit_16(946); +emit_16(1013); +emit_16(947); +emit_16(1013); +emit_16(946); +emit_16(1013); +emit_16(947); +emit_16(1014); +emit_16(948); +emit_16(1014); +emit_16(947); +emit_16(1014); +emit_16(948); +emit_16(1015); +emit_16(949); +emit_16(1015); +emit_16(948); +emit_16(1015); +emit_16(949); +emit_16(1016); +emit_16(950); +emit_16(1016); +emit_16(949); +emit_16(1016); +emit_16(950); +emit_16(1017); +emit_16(951); +emit_16(1017); +emit_16(950); +emit_16(1017); +emit_16(951); +emit_16(1018); +emit_16(952); +emit_16(1018); +emit_16(951); +emit_16(1018); +emit_16(952); +emit_16(1019); +emit_16(953); +emit_16(1019); +emit_16(952); +emit_16(1019); +emit_16(953); +emit_16(1020); +emit_16(954); +emit_16(1020); +emit_16(953); +emit_16(1020); +emit_16(954); +emit_16(1021); +emit_16(955); +emit_16(1021); +emit_16(954); +emit_16(1021); +emit_16(955); +emit_16(1022); +emit_16(956); +emit_16(1022); +emit_16(955); +emit_16(1022); +emit_16(956); +emit_16(1023); +emit_16(957); +emit_16(1023); +emit_16(956); +emit_16(1023); +emit_16(957); +emit_16(1024); +emit_16(958); +emit_16(1024); +emit_16(957); +emit_16(1024); +emit_16(958); +emit_16(1025); +emit_16(959); +emit_16(1025); +emit_16(958); +emit_16(1025); +emit_16(959); +emit_16(1026); +emit_16(960); +emit_16(1026); +emit_16(959); +emit_16(1026); +emit_16(960); +emit_16(1027); +emit_16(961); +emit_16(1027); +emit_16(960); +emit_16(1027); +emit_16(961); +emit_16(1028); +emit_16(962); +emit_16(1028); +emit_16(961); +emit_16(1028); +emit_16(962); +emit_16(1029); +emit_16(963); +emit_16(1029); +emit_16(962); +emit_16(1029); +emit_16(963); +emit_16(1030); +emit_16(964); +emit_16(1030); +emit_16(963); +emit_16(1030); +emit_16(964); +emit_16(1031); +emit_16(965); +emit_16(1031); +emit_16(964); +emit_16(1031); +emit_16(965); +emit_16(1032); +emit_16(966); +emit_16(1032); +emit_16(965); +emit_16(1032); +emit_16(966); +emit_16(1033); +emit_16(967); +emit_16(1033); +emit_16(966); +emit_16(1033); +emit_16(967); +emit_16(1034); +emit_16(968); +emit_16(1034); +emit_16(967); +emit_16(1034); +emit_16(968); +emit_16(1035); +emit_16(969); +emit_16(1035); +emit_16(968); +emit_16(1035); +emit_16(969); +emit_16(1036); +emit_16(970); +emit_16(1036); +emit_16(969); +emit_16(1036); +emit_16(970); +emit_16(1037); +emit_16(971); +emit_16(1037); +emit_16(970); +emit_16(1037); +emit_16(971); +emit_16(1038); +emit_16(972); +emit_16(1038); +emit_16(971); +emit_16(1038); +emit_16(972); +emit_16(1039); +emit_16(973); +emit_16(1039); +emit_16(972); +emit_16(1039); +emit_16(973); +emit_16(1040); +emit_16(974); +emit_16(1040); +emit_16(973); +emit_16(1040); +emit_16(974); +emit_16(1041); +emit_16(975); +emit_16(1041); +emit_16(974); +emit_16(1041); +emit_16(975); +emit_16(1042); +emit_16(976); +emit_16(1042); +emit_16(975); +emit_16(1042); +emit_16(976); +emit_16(1043); +emit_16(977); +emit_16(1043); +emit_16(976); +emit_16(1043); +emit_16(977); +emit_16(1044); +emit_16(978); +emit_16(1044); +emit_16(977); +emit_16(1044); +emit_16(978); +emit_16(1045); +emit_16(979); +emit_16(1045); +emit_16(978); +emit_16(1045); +emit_16(979); +emit_16(1046); +emit_16(980); +emit_16(1046); +emit_16(979); +emit_16(1046); +emit_16(980); +emit_16(1047); +emit_16(981); +emit_16(1047); +emit_16(980); +emit_16(1047); +emit_16(981); +emit_16(1048); +emit_16(982); +emit_16(1048); +emit_16(981); +emit_16(1048); +emit_16(982); +emit_16(1049); +emit_16(983); +emit_16(1049); +emit_16(982); +emit_16(1049); +emit_16(983); +emit_16(1050); +emit_16(984); +emit_16(1050); +emit_16(983); +emit_16(1050); +emit_16(984); +emit_16(1051); +emit_16(985); +emit_16(1051); +emit_16(984); +emit_16(1051); +emit_16(985); +emit_16(1052); +emit_16(986); +emit_16(1052); +emit_16(985); +emit_16(1052); +emit_16(986); +emit_16(1053); +emit_16(987); +emit_16(1053); +emit_16(986); +emit_16(1053); +emit_16(987); +emit_16(1054); +emit_16(988); +emit_16(1054); +emit_16(987); +emit_16(1054); +emit_16(988); +emit_16(1055); +emit_16(989); +emit_16(1055); +emit_16(988); +emit_16(1056); +emit_16(990); +emit_16(1057); +emit_16(991); +emit_16(1057); +emit_16(990); +emit_16(1057); +emit_16(991); +emit_16(1058); +emit_16(992); +emit_16(1058); +emit_16(991); +emit_16(1058); +emit_16(992); +emit_16(1059); +emit_16(993); +emit_16(1059); +emit_16(992); +emit_16(1059); +emit_16(993); +emit_16(1060); +emit_16(994); +emit_16(1060); +emit_16(993); +emit_16(1060); +emit_16(994); +emit_16(1061); +emit_16(995); +emit_16(1061); +emit_16(994); +emit_16(1061); +emit_16(995); +emit_16(1062); +emit_16(996); +emit_16(1062); +emit_16(995); +emit_16(1062); +emit_16(996); +emit_16(1063); +emit_16(997); +emit_16(1063); +emit_16(996); +emit_16(1063); +emit_16(997); +emit_16(1064); +emit_16(998); +emit_16(1064); +emit_16(997); +emit_16(1064); +emit_16(998); +emit_16(1065); +emit_16(999); +emit_16(1065); +emit_16(998); +emit_16(1065); +emit_16(999); +emit_16(1066); +emit_16(1000); +emit_16(1066); +emit_16(999); +emit_16(1066); +emit_16(1000); +emit_16(1067); +emit_16(1001); +emit_16(1067); +emit_16(1000); +emit_16(1067); +emit_16(1001); +emit_16(1068); +emit_16(1002); +emit_16(1068); +emit_16(1001); +emit_16(1068); +emit_16(1002); +emit_16(1069); +emit_16(1003); +emit_16(1069); +emit_16(1002); +emit_16(1069); +emit_16(1003); +emit_16(1070); +emit_16(1004); +emit_16(1070); +emit_16(1003); +emit_16(1070); +emit_16(1004); +emit_16(1071); +emit_16(1005); +emit_16(1071); +emit_16(1004); +emit_16(1071); +emit_16(1005); +emit_16(1072); +emit_16(1006); +emit_16(1072); +emit_16(1005); +emit_16(1072); +emit_16(1006); +emit_16(1073); +emit_16(1007); +emit_16(1073); +emit_16(1006); +emit_16(1073); +emit_16(1007); +emit_16(1074); +emit_16(1008); +emit_16(1074); +emit_16(1007); +emit_16(1074); +emit_16(1008); +emit_16(1075); +emit_16(1009); +emit_16(1075); +emit_16(1008); +emit_16(1075); +emit_16(1009); +emit_16(1076); +emit_16(1010); +emit_16(1076); +emit_16(1009); +emit_16(1076); +emit_16(1010); +emit_16(1077); +emit_16(1011); +emit_16(1077); +emit_16(1010); +emit_16(1077); +emit_16(1011); +emit_16(1078); +emit_16(1012); +emit_16(1078); +emit_16(1011); +emit_16(1078); +emit_16(1012); +emit_16(1079); +emit_16(1013); +emit_16(1079); +emit_16(1012); +emit_16(1079); +emit_16(1013); +emit_16(1080); +emit_16(1014); +emit_16(1080); +emit_16(1013); +emit_16(1080); +emit_16(1014); +emit_16(1081); +emit_16(1015); +emit_16(1081); +emit_16(1014); +emit_16(1081); +emit_16(1015); +emit_16(1082); +emit_16(1016); +emit_16(1082); +emit_16(1015); +emit_16(1082); +emit_16(1016); +emit_16(1083); +emit_16(1017); +emit_16(1083); +emit_16(1016); +emit_16(1083); +emit_16(1017); +emit_16(1084); +emit_16(1018); +emit_16(1084); +emit_16(1017); +emit_16(1084); +emit_16(1018); +emit_16(1085); +emit_16(1019); +emit_16(1085); +emit_16(1018); +emit_16(1085); +emit_16(1019); +emit_16(1086); +emit_16(1020); +emit_16(1086); +emit_16(1019); +emit_16(1086); +emit_16(1020); +emit_16(1087); +emit_16(1021); +emit_16(1087); +emit_16(1020); +emit_16(1087); +emit_16(1021); +emit_16(1088); +emit_16(1022); +emit_16(1088); +emit_16(1021); +emit_16(1088); +emit_16(1022); +emit_16(1089); +emit_16(1023); +emit_16(1089); +emit_16(1022); +emit_16(1089); +emit_16(1023); +emit_16(1090); +emit_16(1024); +emit_16(1090); +emit_16(1023); +emit_16(1090); +emit_16(1024); +emit_16(1091); +emit_16(1025); +emit_16(1091); +emit_16(1024); +emit_16(1091); +emit_16(1025); +emit_16(1092); +emit_16(1026); +emit_16(1092); +emit_16(1025); +emit_16(1092); +emit_16(1026); +emit_16(1093); +emit_16(1027); +emit_16(1093); +emit_16(1026); +emit_16(1093); +emit_16(1027); +emit_16(1094); +emit_16(1028); +emit_16(1094); +emit_16(1027); +emit_16(1094); +emit_16(1028); +emit_16(1095); +emit_16(1029); +emit_16(1095); +emit_16(1028); +emit_16(1095); +emit_16(1029); +emit_16(1096); +emit_16(1030); +emit_16(1096); +emit_16(1029); +emit_16(1096); +emit_16(1030); +emit_16(1097); +emit_16(1031); +emit_16(1097); +emit_16(1030); +emit_16(1097); +emit_16(1031); +emit_16(1098); +emit_16(1032); +emit_16(1098); +emit_16(1031); +emit_16(1098); +emit_16(1032); +emit_16(1099); +emit_16(1033); +emit_16(1099); +emit_16(1032); +emit_16(1099); +emit_16(1033); +emit_16(1100); +emit_16(1034); +emit_16(1100); +emit_16(1033); +emit_16(1100); +emit_16(1034); +emit_16(1101); +emit_16(1035); +emit_16(1101); +emit_16(1034); +emit_16(1101); +emit_16(1035); +emit_16(1102); +emit_16(1036); +emit_16(1102); +emit_16(1035); +emit_16(1102); +emit_16(1036); +emit_16(1103); +emit_16(1037); +emit_16(1103); +emit_16(1036); +emit_16(1103); +emit_16(1037); +emit_16(1104); +emit_16(1038); +emit_16(1104); +emit_16(1037); +emit_16(1104); +emit_16(1038); +emit_16(1105); +emit_16(1039); +emit_16(1105); +emit_16(1038); +emit_16(1105); +emit_16(1039); +emit_16(1106); +emit_16(1040); +emit_16(1106); +emit_16(1039); +emit_16(1106); +emit_16(1040); +emit_16(1107); +emit_16(1041); +emit_16(1107); +emit_16(1040); +emit_16(1107); +emit_16(1041); +emit_16(1108); +emit_16(1042); +emit_16(1108); +emit_16(1041); +emit_16(1108); +emit_16(1042); +emit_16(1109); +emit_16(1043); +emit_16(1109); +emit_16(1042); +emit_16(1109); +emit_16(1043); +emit_16(1110); +emit_16(1044); +emit_16(1110); +emit_16(1043); +emit_16(1110); +emit_16(1044); +emit_16(1111); +emit_16(1045); +emit_16(1111); +emit_16(1044); +emit_16(1111); +emit_16(1045); +emit_16(1112); +emit_16(1046); +emit_16(1112); +emit_16(1045); +emit_16(1112); +emit_16(1046); +emit_16(1113); +emit_16(1047); +emit_16(1113); +emit_16(1046); +emit_16(1113); +emit_16(1047); +emit_16(1114); +emit_16(1048); +emit_16(1114); +emit_16(1047); +emit_16(1114); +emit_16(1048); +emit_16(1115); +emit_16(1049); +emit_16(1115); +emit_16(1048); +emit_16(1115); +emit_16(1049); +emit_16(1116); +emit_16(1050); +emit_16(1116); +emit_16(1049); +emit_16(1116); +emit_16(1050); +emit_16(1117); +emit_16(1051); +emit_16(1117); +emit_16(1050); +emit_16(1117); +emit_16(1051); +emit_16(1118); +emit_16(1052); +emit_16(1118); +emit_16(1051); +emit_16(1118); +emit_16(1052); +emit_16(1119); +emit_16(1053); +emit_16(1119); +emit_16(1052); +emit_16(1119); +emit_16(1053); +emit_16(1120); +emit_16(1054); +emit_16(1120); +emit_16(1053); +emit_16(1120); +emit_16(1054); +emit_16(1121); +emit_16(1055); +emit_16(1121); +emit_16(1054); +emit_16(1122); +emit_16(1056); +emit_16(1123); +emit_16(1057); +emit_16(1123); +emit_16(1056); +emit_16(1123); +emit_16(1057); +emit_16(1124); +emit_16(1058); +emit_16(1124); +emit_16(1057); +emit_16(1124); +emit_16(1058); +emit_16(1125); +emit_16(1059); +emit_16(1125); +emit_16(1058); +emit_16(1125); +emit_16(1059); +emit_16(1126); +emit_16(1060); +emit_16(1126); +emit_16(1059); +emit_16(1126); +emit_16(1060); +emit_16(1127); +emit_16(1061); +emit_16(1127); +emit_16(1060); +emit_16(1127); +emit_16(1061); +emit_16(1128); +emit_16(1062); +emit_16(1128); +emit_16(1061); +emit_16(1128); +emit_16(1062); +emit_16(1129); +emit_16(1063); +emit_16(1129); +emit_16(1062); +emit_16(1129); +emit_16(1063); +emit_16(1130); +emit_16(1064); +emit_16(1130); +emit_16(1063); +emit_16(1130); +emit_16(1064); +emit_16(1131); +emit_16(1065); +emit_16(1131); +emit_16(1064); +emit_16(1131); +emit_16(1065); +emit_16(1132); +emit_16(1066); +emit_16(1132); +emit_16(1065); +emit_16(1132); +emit_16(1066); +emit_16(1133); +emit_16(1067); +emit_16(1133); +emit_16(1066); +emit_16(1133); +emit_16(1067); +emit_16(1134); +emit_16(1068); +emit_16(1134); +emit_16(1067); +emit_16(1134); +emit_16(1068); +emit_16(1135); +emit_16(1069); +emit_16(1135); +emit_16(1068); +emit_16(1135); +emit_16(1069); +emit_16(1136); +emit_16(1070); +emit_16(1136); +emit_16(1069); +emit_16(1136); +emit_16(1070); +emit_16(1137); +emit_16(1071); +emit_16(1137); +emit_16(1070); +emit_16(1137); +emit_16(1071); +emit_16(1138); +emit_16(1072); +emit_16(1138); +emit_16(1071); +emit_16(1138); +emit_16(1072); +emit_16(1139); +emit_16(1073); +emit_16(1139); +emit_16(1072); +emit_16(1139); +emit_16(1073); +emit_16(1140); +emit_16(1074); +emit_16(1140); +emit_16(1073); +emit_16(1140); +emit_16(1074); +emit_16(1141); +emit_16(1075); +emit_16(1141); +emit_16(1074); +emit_16(1141); +emit_16(1075); +emit_16(1142); +emit_16(1076); +emit_16(1142); +emit_16(1075); +emit_16(1142); +emit_16(1076); +emit_16(1143); +emit_16(1077); +emit_16(1143); +emit_16(1076); +emit_16(1143); +emit_16(1077); +emit_16(1144); +emit_16(1078); +emit_16(1144); +emit_16(1077); +emit_16(1144); +emit_16(1078); +emit_16(1145); +emit_16(1079); +emit_16(1145); +emit_16(1078); +emit_16(1145); +emit_16(1079); +emit_16(1146); +emit_16(1080); +emit_16(1146); +emit_16(1079); +emit_16(1146); +emit_16(1080); +emit_16(1147); +emit_16(1081); +emit_16(1147); +emit_16(1080); +emit_16(1147); +emit_16(1081); +emit_16(1148); +emit_16(1082); +emit_16(1148); +emit_16(1081); +emit_16(1148); +emit_16(1082); +emit_16(1149); +emit_16(1083); +emit_16(1149); +emit_16(1082); +emit_16(1149); +emit_16(1083); +emit_16(1150); +emit_16(1084); +emit_16(1150); +emit_16(1083); +emit_16(1150); +emit_16(1084); +emit_16(1151); +emit_16(1085); +emit_16(1151); +emit_16(1084); +emit_16(1151); +emit_16(1085); +emit_16(1152); +emit_16(1086); +emit_16(1152); +emit_16(1085); +emit_16(1152); +emit_16(1086); +emit_16(1153); +emit_16(1087); +emit_16(1153); +emit_16(1086); +emit_16(1153); +emit_16(1087); +emit_16(1154); +emit_16(1088); +emit_16(1154); +emit_16(1087); +emit_16(1154); +emit_16(1088); +emit_16(1155); +emit_16(1089); +emit_16(1155); +emit_16(1088); +emit_16(1155); +emit_16(1089); +emit_16(1156); +emit_16(1090); +emit_16(1156); +emit_16(1089); +emit_16(1156); +emit_16(1090); +emit_16(1157); +emit_16(1091); +emit_16(1157); +emit_16(1090); +emit_16(1157); +emit_16(1091); +emit_16(1158); +emit_16(1092); +emit_16(1158); +emit_16(1091); +emit_16(1158); +emit_16(1092); +emit_16(1159); +emit_16(1093); +emit_16(1159); +emit_16(1092); +emit_16(1159); +emit_16(1093); +emit_16(1160); +emit_16(1094); +emit_16(1160); +emit_16(1093); +emit_16(1160); +emit_16(1094); +emit_16(1161); +emit_16(1095); +emit_16(1161); +emit_16(1094); +emit_16(1161); +emit_16(1095); +emit_16(1162); +emit_16(1096); +emit_16(1162); +emit_16(1095); +emit_16(1162); +emit_16(1096); +emit_16(1163); +emit_16(1097); +emit_16(1163); +emit_16(1096); +emit_16(1163); +emit_16(1097); +emit_16(1164); +emit_16(1098); +emit_16(1164); +emit_16(1097); +emit_16(1164); +emit_16(1098); +emit_16(1165); +emit_16(1099); +emit_16(1165); +emit_16(1098); +emit_16(1165); +emit_16(1099); +emit_16(1166); +emit_16(1100); +emit_16(1166); +emit_16(1099); +emit_16(1166); +emit_16(1100); +emit_16(1167); +emit_16(1101); +emit_16(1167); +emit_16(1100); +emit_16(1167); +emit_16(1101); +emit_16(1168); +emit_16(1102); +emit_16(1168); +emit_16(1101); +emit_16(1168); +emit_16(1102); +emit_16(1169); +emit_16(1103); +emit_16(1169); +emit_16(1102); +emit_16(1169); +emit_16(1103); +emit_16(1170); +emit_16(1104); +emit_16(1170); +emit_16(1103); +emit_16(1170); +emit_16(1104); +emit_16(1171); +emit_16(1105); +emit_16(1171); +emit_16(1104); +emit_16(1171); +emit_16(1105); +emit_16(1172); +emit_16(1106); +emit_16(1172); +emit_16(1105); +emit_16(1172); +emit_16(1106); +emit_16(1173); +emit_16(1107); +emit_16(1173); +emit_16(1106); +emit_16(1173); +emit_16(1107); +emit_16(1174); +emit_16(1108); +emit_16(1174); +emit_16(1107); +emit_16(1174); +emit_16(1108); +emit_16(1175); +emit_16(1109); +emit_16(1175); +emit_16(1108); +emit_16(1175); +emit_16(1109); +emit_16(1176); +emit_16(1110); +emit_16(1176); +emit_16(1109); +emit_16(1176); +emit_16(1110); +emit_16(1177); +emit_16(1111); +emit_16(1177); +emit_16(1110); +emit_16(1177); +emit_16(1111); +emit_16(1178); +emit_16(1112); +emit_16(1178); +emit_16(1111); +emit_16(1178); +emit_16(1112); +emit_16(1179); +emit_16(1113); +emit_16(1179); +emit_16(1112); +emit_16(1179); +emit_16(1113); +emit_16(1180); +emit_16(1114); +emit_16(1180); +emit_16(1113); +emit_16(1180); +emit_16(1114); +emit_16(1181); +emit_16(1115); +emit_16(1181); +emit_16(1114); +emit_16(1181); +emit_16(1115); +emit_16(1182); +emit_16(1116); +emit_16(1182); +emit_16(1115); +emit_16(1182); +emit_16(1116); +emit_16(1183); +emit_16(1117); +emit_16(1183); +emit_16(1116); +emit_16(1183); +emit_16(1117); +emit_16(1184); +emit_16(1118); +emit_16(1184); +emit_16(1117); +emit_16(1184); +emit_16(1118); +emit_16(1185); +emit_16(1119); +emit_16(1185); +emit_16(1118); +emit_16(1185); +emit_16(1119); +emit_16(1186); +emit_16(1120); +emit_16(1186); +emit_16(1119); +emit_16(1186); +emit_16(1120); +emit_16(1187); +emit_16(1121); +emit_16(1187); +emit_16(1120); +emit_16(1188); +emit_16(1122); +emit_16(1189); +emit_16(1123); +emit_16(1189); +emit_16(1122); +emit_16(1189); +emit_16(1123); +emit_16(1190); +emit_16(1124); +emit_16(1190); +emit_16(1123); +emit_16(1190); +emit_16(1124); +emit_16(1191); +emit_16(1125); +emit_16(1191); +emit_16(1124); +emit_16(1191); +emit_16(1125); +emit_16(1192); +emit_16(1126); +emit_16(1192); +emit_16(1125); +emit_16(1192); +emit_16(1126); +emit_16(1193); +emit_16(1127); +emit_16(1193); +emit_16(1126); +emit_16(1193); +emit_16(1127); +emit_16(1194); +emit_16(1128); +emit_16(1194); +emit_16(1127); +emit_16(1194); +emit_16(1128); +emit_16(1195); +emit_16(1129); +emit_16(1195); +emit_16(1128); +emit_16(1195); +emit_16(1129); +emit_16(1196); +emit_16(1130); +emit_16(1196); +emit_16(1129); +emit_16(1196); +emit_16(1130); +emit_16(1197); +emit_16(1131); +emit_16(1197); +emit_16(1130); +emit_16(1197); +emit_16(1131); +emit_16(1198); +emit_16(1132); +emit_16(1198); +emit_16(1131); +emit_16(1198); +emit_16(1132); +emit_16(1199); +emit_16(1133); +emit_16(1199); +emit_16(1132); +emit_16(1199); +emit_16(1133); +emit_16(1200); +emit_16(1134); +emit_16(1200); +emit_16(1133); +emit_16(1200); +emit_16(1134); +emit_16(1201); +emit_16(1135); +emit_16(1201); +emit_16(1134); +emit_16(1201); +emit_16(1135); +emit_16(1202); +emit_16(1136); +emit_16(1202); +emit_16(1135); +emit_16(1202); +emit_16(1136); +emit_16(1203); +emit_16(1137); +emit_16(1203); +emit_16(1136); +emit_16(1203); +emit_16(1137); +emit_16(1204); +emit_16(1138); +emit_16(1204); +emit_16(1137); +emit_16(1204); +emit_16(1138); +emit_16(1205); +emit_16(1139); +emit_16(1205); +emit_16(1138); +emit_16(1205); +emit_16(1139); +emit_16(1206); +emit_16(1140); +emit_16(1206); +emit_16(1139); +emit_16(1206); +emit_16(1140); +emit_16(1207); +emit_16(1141); +emit_16(1207); +emit_16(1140); +emit_16(1207); +emit_16(1141); +emit_16(1208); +emit_16(1142); +emit_16(1208); +emit_16(1141); +emit_16(1208); +emit_16(1142); +emit_16(1209); +emit_16(1143); +emit_16(1209); +emit_16(1142); +emit_16(1209); +emit_16(1143); +emit_16(1210); +emit_16(1144); +emit_16(1210); +emit_16(1143); +emit_16(1210); +emit_16(1144); +emit_16(1211); +emit_16(1145); +emit_16(1211); +emit_16(1144); +emit_16(1211); +emit_16(1145); +emit_16(1212); +emit_16(1146); +emit_16(1212); +emit_16(1145); +emit_16(1212); +emit_16(1146); +emit_16(1213); +emit_16(1147); +emit_16(1213); +emit_16(1146); +emit_16(1213); +emit_16(1147); +emit_16(1214); +emit_16(1148); +emit_16(1214); +emit_16(1147); +emit_16(1214); +emit_16(1148); +emit_16(1215); +emit_16(1149); +emit_16(1215); +emit_16(1148); +emit_16(1215); +emit_16(1149); +emit_16(1216); +emit_16(1150); +emit_16(1216); +emit_16(1149); +emit_16(1216); +emit_16(1150); +emit_16(1217); +emit_16(1151); +emit_16(1217); +emit_16(1150); +emit_16(1217); +emit_16(1151); +emit_16(1218); +emit_16(1152); +emit_16(1218); +emit_16(1151); +emit_16(1218); +emit_16(1152); +emit_16(1219); +emit_16(1153); +emit_16(1219); +emit_16(1152); +emit_16(1219); +emit_16(1153); +emit_16(1220); +emit_16(1154); +emit_16(1220); +emit_16(1153); +emit_16(1220); +emit_16(1154); +emit_16(1221); +emit_16(1155); +emit_16(1221); +emit_16(1154); +emit_16(1221); +emit_16(1155); +emit_16(1222); +emit_16(1156); +emit_16(1222); +emit_16(1155); +emit_16(1222); +emit_16(1156); +emit_16(1223); +emit_16(1157); +emit_16(1223); +emit_16(1156); +emit_16(1223); +emit_16(1157); +emit_16(1224); +emit_16(1158); +emit_16(1224); +emit_16(1157); +emit_16(1224); +emit_16(1158); +emit_16(1225); +emit_16(1159); +emit_16(1225); +emit_16(1158); +emit_16(1225); +emit_16(1159); +emit_16(1226); +emit_16(1160); +emit_16(1226); +emit_16(1159); +emit_16(1226); +emit_16(1160); +emit_16(1227); +emit_16(1161); +emit_16(1227); +emit_16(1160); +emit_16(1227); +emit_16(1161); +emit_16(1228); +emit_16(1162); +emit_16(1228); +emit_16(1161); +emit_16(1228); +emit_16(1162); +emit_16(1229); +emit_16(1163); +emit_16(1229); +emit_16(1162); +emit_16(1229); +emit_16(1163); +emit_16(1230); +emit_16(1164); +emit_16(1230); +emit_16(1163); +emit_16(1230); +emit_16(1164); +emit_16(1231); +emit_16(1165); +emit_16(1231); +emit_16(1164); +emit_16(1231); +emit_16(1165); +emit_16(1232); +emit_16(1166); +emit_16(1232); +emit_16(1165); +emit_16(1232); +emit_16(1166); +emit_16(1233); +emit_16(1167); +emit_16(1233); +emit_16(1166); +emit_16(1233); +emit_16(1167); +emit_16(1234); +emit_16(1168); +emit_16(1234); +emit_16(1167); +emit_16(1234); +emit_16(1168); +emit_16(1235); +emit_16(1169); +emit_16(1235); +emit_16(1168); +emit_16(1235); +emit_16(1169); +emit_16(1236); +emit_16(1170); +emit_16(1236); +emit_16(1169); +emit_16(1236); +emit_16(1170); +emit_16(1237); +emit_16(1171); +emit_16(1237); +emit_16(1170); +emit_16(1237); +emit_16(1171); +emit_16(1238); +emit_16(1172); +emit_16(1238); +emit_16(1171); +emit_16(1238); +emit_16(1172); +emit_16(1239); +emit_16(1173); +emit_16(1239); +emit_16(1172); +emit_16(1239); +emit_16(1173); +emit_16(1240); +emit_16(1174); +emit_16(1240); +emit_16(1173); +emit_16(1240); +emit_16(1174); +emit_16(1241); +emit_16(1175); +emit_16(1241); +emit_16(1174); +emit_16(1241); +emit_16(1175); +emit_16(1242); +emit_16(1176); +emit_16(1242); +emit_16(1175); +emit_16(1242); +emit_16(1176); +emit_16(1243); +emit_16(1177); +emit_16(1243); +emit_16(1176); +emit_16(1243); +emit_16(1177); +emit_16(1244); +emit_16(1178); +emit_16(1244); +emit_16(1177); +emit_16(1244); +emit_16(1178); +emit_16(1245); +emit_16(1179); +emit_16(1245); +emit_16(1178); +emit_16(1245); +emit_16(1179); +emit_16(1246); +emit_16(1180); +emit_16(1246); +emit_16(1179); +emit_16(1246); +emit_16(1180); +emit_16(1247); +emit_16(1181); +emit_16(1247); +emit_16(1180); +emit_16(1247); +emit_16(1181); +emit_16(1248); +emit_16(1182); +emit_16(1248); +emit_16(1181); +emit_16(1248); +emit_16(1182); +emit_16(1249); +emit_16(1183); +emit_16(1249); +emit_16(1182); +emit_16(1249); +emit_16(1183); +emit_16(1250); +emit_16(1184); +emit_16(1250); +emit_16(1183); +emit_16(1250); +emit_16(1184); +emit_16(1251); +emit_16(1185); +emit_16(1251); +emit_16(1184); +emit_16(1251); +emit_16(1185); +emit_16(1252); +emit_16(1186); +emit_16(1252); +emit_16(1185); +emit_16(1252); +emit_16(1186); +emit_16(1253); +emit_16(1187); +emit_16(1253); +emit_16(1186); +emit_16(1254); +emit_16(1188); +emit_16(1255); +emit_16(1189); +emit_16(1255); +emit_16(1188); +emit_16(1255); +emit_16(1189); +emit_16(1256); +emit_16(1190); +emit_16(1256); +emit_16(1189); +emit_16(1256); +emit_16(1190); +emit_16(1257); +emit_16(1191); +emit_16(1257); +emit_16(1190); +emit_16(1257); +emit_16(1191); +emit_16(1258); +emit_16(1192); +emit_16(1258); +emit_16(1191); +emit_16(1258); +emit_16(1192); +emit_16(1259); +emit_16(1193); +emit_16(1259); +emit_16(1192); +emit_16(1259); +emit_16(1193); +emit_16(1260); +emit_16(1194); +emit_16(1260); +emit_16(1193); +emit_16(1260); +emit_16(1194); +emit_16(1261); +emit_16(1195); +emit_16(1261); +emit_16(1194); +emit_16(1261); +emit_16(1195); +emit_16(1262); +emit_16(1196); +emit_16(1262); +emit_16(1195); +emit_16(1262); +emit_16(1196); +emit_16(1263); +emit_16(1197); +emit_16(1263); +emit_16(1196); +emit_16(1263); +emit_16(1197); +emit_16(1264); +emit_16(1198); +emit_16(1264); +emit_16(1197); +emit_16(1264); +emit_16(1198); +emit_16(1265); +emit_16(1199); +emit_16(1265); +emit_16(1198); +emit_16(1265); +emit_16(1199); +emit_16(1266); +emit_16(1200); +emit_16(1266); +emit_16(1199); +emit_16(1266); +emit_16(1200); +emit_16(1267); +emit_16(1201); +emit_16(1267); +emit_16(1200); +emit_16(1267); +emit_16(1201); +emit_16(1268); +emit_16(1202); +emit_16(1268); +emit_16(1201); +emit_16(1268); +emit_16(1202); +emit_16(1269); +emit_16(1203); +emit_16(1269); +emit_16(1202); +emit_16(1269); +emit_16(1203); +emit_16(1270); +emit_16(1204); +emit_16(1270); +emit_16(1203); +emit_16(1270); +emit_16(1204); +emit_16(1271); +emit_16(1205); +emit_16(1271); +emit_16(1204); +emit_16(1271); +emit_16(1205); +emit_16(1272); +emit_16(1206); +emit_16(1272); +emit_16(1205); +emit_16(1272); +emit_16(1206); +emit_16(1273); +emit_16(1207); +emit_16(1273); +emit_16(1206); +emit_16(1273); +emit_16(1207); +emit_16(1274); +emit_16(1208); +emit_16(1274); +emit_16(1207); +emit_16(1274); +emit_16(1208); +emit_16(1275); +emit_16(1209); +emit_16(1275); +emit_16(1208); +emit_16(1275); +emit_16(1209); +emit_16(1276); +emit_16(1210); +emit_16(1276); +emit_16(1209); +emit_16(1276); +emit_16(1210); +emit_16(1277); +emit_16(1211); +emit_16(1277); +emit_16(1210); +emit_16(1277); +emit_16(1211); +emit_16(1278); +emit_16(1212); +emit_16(1278); +emit_16(1211); +emit_16(1278); +emit_16(1212); +emit_16(1279); +emit_16(1213); +emit_16(1279); +emit_16(1212); +emit_16(1279); +emit_16(1213); +emit_16(1280); +emit_16(1214); +emit_16(1280); +emit_16(1213); +emit_16(1280); +emit_16(1214); +emit_16(1281); +emit_16(1215); +emit_16(1281); +emit_16(1214); +emit_16(1281); +emit_16(1215); +emit_16(1282); +emit_16(1216); +emit_16(1282); +emit_16(1215); +emit_16(1282); +emit_16(1216); +emit_16(1283); +emit_16(1217); +emit_16(1283); +emit_16(1216); +emit_16(1283); +emit_16(1217); +emit_16(1284); +emit_16(1218); +emit_16(1284); +emit_16(1217); +emit_16(1284); +emit_16(1218); +emit_16(1285); +emit_16(1219); +emit_16(1285); +emit_16(1218); +emit_16(1285); +emit_16(1219); +emit_16(1286); +emit_16(1220); +emit_16(1286); +emit_16(1219); +emit_16(1286); +emit_16(1220); +emit_16(1287); +emit_16(1221); +emit_16(1287); +emit_16(1220); +emit_16(1287); +emit_16(1221); +emit_16(1288); +emit_16(1222); +emit_16(1288); +emit_16(1221); +emit_16(1288); +emit_16(1222); +emit_16(1289); +emit_16(1223); +emit_16(1289); +emit_16(1222); +emit_16(1289); +emit_16(1223); +emit_16(1290); +emit_16(1224); +emit_16(1290); +emit_16(1223); +emit_16(1290); +emit_16(1224); +emit_16(1291); +emit_16(1225); +emit_16(1291); +emit_16(1224); +emit_16(1291); +emit_16(1225); +emit_16(1292); +emit_16(1226); +emit_16(1292); +emit_16(1225); +emit_16(1292); +emit_16(1226); +emit_16(1293); +emit_16(1227); +emit_16(1293); +emit_16(1226); +emit_16(1293); +emit_16(1227); +emit_16(1294); +emit_16(1228); +emit_16(1294); +emit_16(1227); +emit_16(1294); +emit_16(1228); +emit_16(1295); +emit_16(1229); +emit_16(1295); +emit_16(1228); +emit_16(1295); +emit_16(1229); +emit_16(1296); +emit_16(1230); +emit_16(1296); +emit_16(1229); +emit_16(1296); +emit_16(1230); +emit_16(1297); +emit_16(1231); +emit_16(1297); +emit_16(1230); +emit_16(1297); +emit_16(1231); +emit_16(1298); +emit_16(1232); +emit_16(1298); +emit_16(1231); +emit_16(1298); +emit_16(1232); +emit_16(1299); +emit_16(1233); +emit_16(1299); +emit_16(1232); +emit_16(1299); +emit_16(1233); +emit_16(1300); +emit_16(1234); +emit_16(1300); +emit_16(1233); +emit_16(1300); +emit_16(1234); +emit_16(1301); +emit_16(1235); +emit_16(1301); +emit_16(1234); +emit_16(1301); +emit_16(1235); +emit_16(1302); +emit_16(1236); +emit_16(1302); +emit_16(1235); +emit_16(1302); +emit_16(1236); +emit_16(1303); +emit_16(1237); +emit_16(1303); +emit_16(1236); +emit_16(1303); +emit_16(1237); +emit_16(1304); +emit_16(1238); +emit_16(1304); +emit_16(1237); +emit_16(1304); +emit_16(1238); +emit_16(1305); +emit_16(1239); +emit_16(1305); +emit_16(1238); +emit_16(1305); +emit_16(1239); +emit_16(1306); +emit_16(1240); +emit_16(1306); +emit_16(1239); +emit_16(1306); +emit_16(1240); +emit_16(1307); +emit_16(1241); +emit_16(1307); +emit_16(1240); +emit_16(1307); +emit_16(1241); +emit_16(1308); +emit_16(1242); +emit_16(1308); +emit_16(1241); +emit_16(1308); +emit_16(1242); +emit_16(1309); +emit_16(1243); +emit_16(1309); +emit_16(1242); +emit_16(1309); +emit_16(1243); +emit_16(1310); +emit_16(1244); +emit_16(1310); +emit_16(1243); +emit_16(1310); +emit_16(1244); +emit_16(1311); +emit_16(1245); +emit_16(1311); +emit_16(1244); +emit_16(1311); +emit_16(1245); +emit_16(1312); +emit_16(1246); +emit_16(1312); +emit_16(1245); +emit_16(1312); +emit_16(1246); +emit_16(1313); +emit_16(1247); +emit_16(1313); +emit_16(1246); +emit_16(1313); +emit_16(1247); +emit_16(1314); +emit_16(1248); +emit_16(1314); +emit_16(1247); +emit_16(1314); +emit_16(1248); +emit_16(1315); +emit_16(1249); +emit_16(1315); +emit_16(1248); +emit_16(1315); +emit_16(1249); +emit_16(1316); +emit_16(1250); +emit_16(1316); +emit_16(1249); +emit_16(1316); +emit_16(1250); +emit_16(1317); +emit_16(1251); +emit_16(1317); +emit_16(1250); +emit_16(1317); +emit_16(1251); +emit_16(1318); +emit_16(1252); +emit_16(1318); +emit_16(1251); +emit_16(1318); +emit_16(1252); +emit_16(1319); +emit_16(1253); +emit_16(1319); +emit_16(1252); +emit_16(1320); +emit_16(1254); +emit_16(1321); +emit_16(1255); +emit_16(1321); +emit_16(1254); +emit_16(1321); +emit_16(1255); +emit_16(1322); +emit_16(1256); +emit_16(1322); +emit_16(1255); +emit_16(1322); +emit_16(1256); +emit_16(1323); +emit_16(1257); +emit_16(1323); +emit_16(1256); +emit_16(1323); +emit_16(1257); +emit_16(1324); +emit_16(1258); +emit_16(1324); +emit_16(1257); +emit_16(1324); +emit_16(1258); +emit_16(1325); +emit_16(1259); +emit_16(1325); +emit_16(1258); +emit_16(1325); +emit_16(1259); +emit_16(1326); +emit_16(1260); +emit_16(1326); +emit_16(1259); +emit_16(1326); +emit_16(1260); +emit_16(1327); +emit_16(1261); +emit_16(1327); +emit_16(1260); +emit_16(1327); +emit_16(1261); +emit_16(1328); +emit_16(1262); +emit_16(1328); +emit_16(1261); +emit_16(1328); +emit_16(1262); +emit_16(1329); +emit_16(1263); +emit_16(1329); +emit_16(1262); +emit_16(1329); +emit_16(1263); +emit_16(1330); +emit_16(1264); +emit_16(1330); +emit_16(1263); +emit_16(1330); +emit_16(1264); +emit_16(1331); +emit_16(1265); +emit_16(1331); +emit_16(1264); +emit_16(1331); +emit_16(1265); +emit_16(1332); +emit_16(1266); +emit_16(1332); +emit_16(1265); +emit_16(1332); +emit_16(1266); +emit_16(1333); +emit_16(1267); +emit_16(1333); +emit_16(1266); +emit_16(1333); +emit_16(1267); +emit_16(1334); +emit_16(1268); +emit_16(1334); +emit_16(1267); +emit_16(1334); +emit_16(1268); +emit_16(1335); +emit_16(1269); +emit_16(1335); +emit_16(1268); +emit_16(1335); +emit_16(1269); +emit_16(1336); +emit_16(1270); +emit_16(1336); +emit_16(1269); +emit_16(1336); +emit_16(1270); +emit_16(1337); +emit_16(1271); +emit_16(1337); +emit_16(1270); +emit_16(1337); +emit_16(1271); +emit_16(1338); +emit_16(1272); +emit_16(1338); +emit_16(1271); +emit_16(1338); +emit_16(1272); +emit_16(1339); +emit_16(1273); +emit_16(1339); +emit_16(1272); +emit_16(1339); +emit_16(1273); +emit_16(1340); +emit_16(1274); +emit_16(1340); +emit_16(1273); +emit_16(1340); +emit_16(1274); +emit_16(1341); +emit_16(1275); +emit_16(1341); +emit_16(1274); +emit_16(1341); +emit_16(1275); +emit_16(1342); +emit_16(1276); +emit_16(1342); +emit_16(1275); +emit_16(1342); +emit_16(1276); +emit_16(1343); +emit_16(1277); +emit_16(1343); +emit_16(1276); +emit_16(1343); +emit_16(1277); +emit_16(1344); +emit_16(1278); +emit_16(1344); +emit_16(1277); +emit_16(1344); +emit_16(1278); +emit_16(1345); +emit_16(1279); +emit_16(1345); +emit_16(1278); +emit_16(1345); +emit_16(1279); +emit_16(1346); +emit_16(1280); +emit_16(1346); +emit_16(1279); +emit_16(1346); +emit_16(1280); +emit_16(1347); +emit_16(1281); +emit_16(1347); +emit_16(1280); +emit_16(1347); +emit_16(1281); +emit_16(1348); +emit_16(1282); +emit_16(1348); +emit_16(1281); +emit_16(1348); +emit_16(1282); +emit_16(1349); +emit_16(1283); +emit_16(1349); +emit_16(1282); +emit_16(1349); +emit_16(1283); +emit_16(1350); +emit_16(1284); +emit_16(1350); +emit_16(1283); +emit_16(1350); +emit_16(1284); +emit_16(1351); +emit_16(1285); +emit_16(1351); +emit_16(1284); +emit_16(1351); +emit_16(1285); +emit_16(1352); +emit_16(1286); +emit_16(1352); +emit_16(1285); +emit_16(1352); +emit_16(1286); +emit_16(1353); +emit_16(1287); +emit_16(1353); +emit_16(1286); +emit_16(1353); +emit_16(1287); +emit_16(1354); +emit_16(1288); +emit_16(1354); +emit_16(1287); +emit_16(1354); +emit_16(1288); +emit_16(1355); +emit_16(1289); +emit_16(1355); +emit_16(1288); +emit_16(1355); +emit_16(1289); +emit_16(1356); +emit_16(1290); +emit_16(1356); +emit_16(1289); +emit_16(1356); +emit_16(1290); +emit_16(1357); +emit_16(1291); +emit_16(1357); +emit_16(1290); +emit_16(1357); +emit_16(1291); +emit_16(1358); +emit_16(1292); +emit_16(1358); +emit_16(1291); +emit_16(1358); +emit_16(1292); +emit_16(1359); +emit_16(1293); +emit_16(1359); +emit_16(1292); +emit_16(1359); +emit_16(1293); +emit_16(1360); +emit_16(1294); +emit_16(1360); +emit_16(1293); +emit_16(1360); +emit_16(1294); +emit_16(1361); +emit_16(1295); +emit_16(1361); +emit_16(1294); +emit_16(1361); +emit_16(1295); +emit_16(1362); +emit_16(1296); +emit_16(1362); +emit_16(1295); +emit_16(1362); +emit_16(1296); +emit_16(1363); +emit_16(1297); +emit_16(1363); +emit_16(1296); +emit_16(1363); +emit_16(1297); +emit_16(1364); +emit_16(1298); +emit_16(1364); +emit_16(1297); +emit_16(1364); +emit_16(1298); +emit_16(1365); +emit_16(1299); +emit_16(1365); +emit_16(1298); +emit_16(1365); +emit_16(1299); +emit_16(1366); +emit_16(1300); +emit_16(1366); +emit_16(1299); +emit_16(1366); +emit_16(1300); +emit_16(1367); +emit_16(1301); +emit_16(1367); +emit_16(1300); +emit_16(1367); +emit_16(1301); +emit_16(1368); +emit_16(1302); +emit_16(1368); +emit_16(1301); +emit_16(1368); +emit_16(1302); +emit_16(1369); +emit_16(1303); +emit_16(1369); +emit_16(1302); +emit_16(1369); +emit_16(1303); +emit_16(1370); +emit_16(1304); +emit_16(1370); +emit_16(1303); +emit_16(1370); +emit_16(1304); +emit_16(1371); +emit_16(1305); +emit_16(1371); +emit_16(1304); +emit_16(1371); +emit_16(1305); +emit_16(1372); +emit_16(1306); +emit_16(1372); +emit_16(1305); +emit_16(1372); +emit_16(1306); +emit_16(1373); +emit_16(1307); +emit_16(1373); +emit_16(1306); +emit_16(1373); +emit_16(1307); +emit_16(1374); +emit_16(1308); +emit_16(1374); +emit_16(1307); +emit_16(1374); +emit_16(1308); +emit_16(1375); +emit_16(1309); +emit_16(1375); +emit_16(1308); +emit_16(1375); +emit_16(1309); +emit_16(1376); +emit_16(1310); +emit_16(1376); +emit_16(1309); +emit_16(1376); +emit_16(1310); +emit_16(1377); +emit_16(1311); +emit_16(1377); +emit_16(1310); +emit_16(1377); +emit_16(1311); +emit_16(1378); +emit_16(1312); +emit_16(1378); +emit_16(1311); +emit_16(1378); +emit_16(1312); +emit_16(1379); +emit_16(1313); +emit_16(1379); +emit_16(1312); +emit_16(1379); +emit_16(1313); +emit_16(1380); +emit_16(1314); +emit_16(1380); +emit_16(1313); +emit_16(1380); +emit_16(1314); +emit_16(1381); +emit_16(1315); +emit_16(1381); +emit_16(1314); +emit_16(1381); +emit_16(1315); +emit_16(1382); +emit_16(1316); +emit_16(1382); +emit_16(1315); +emit_16(1382); +emit_16(1316); +emit_16(1383); +emit_16(1317); +emit_16(1383); +emit_16(1316); +emit_16(1383); +emit_16(1317); +emit_16(1384); +emit_16(1318); +emit_16(1384); +emit_16(1317); +emit_16(1384); +emit_16(1318); +emit_16(1385); +emit_16(1319); +emit_16(1385); +emit_16(1318); +emit_16(1386); +emit_16(1320); +emit_16(1387); +emit_16(1321); +emit_16(1387); +emit_16(1320); +emit_16(1387); +emit_16(1321); +emit_16(1388); +emit_16(1322); +emit_16(1388); +emit_16(1321); +emit_16(1388); +emit_16(1322); +emit_16(1389); +emit_16(1323); +emit_16(1389); +emit_16(1322); +emit_16(1389); +emit_16(1323); +emit_16(1390); +emit_16(1324); +emit_16(1390); +emit_16(1323); +emit_16(1390); +emit_16(1324); +emit_16(1391); +emit_16(1325); +emit_16(1391); +emit_16(1324); +emit_16(1391); +emit_16(1325); +emit_16(1392); +emit_16(1326); +emit_16(1392); +emit_16(1325); +emit_16(1392); +emit_16(1326); +emit_16(1393); +emit_16(1327); +emit_16(1393); +emit_16(1326); +emit_16(1393); +emit_16(1327); +emit_16(1394); +emit_16(1328); +emit_16(1394); +emit_16(1327); +emit_16(1394); +emit_16(1328); +emit_16(1395); +emit_16(1329); +emit_16(1395); +emit_16(1328); +emit_16(1395); +emit_16(1329); +emit_16(1396); +emit_16(1330); +emit_16(1396); +emit_16(1329); +emit_16(1396); +emit_16(1330); +emit_16(1397); +emit_16(1331); +emit_16(1397); +emit_16(1330); +emit_16(1397); +emit_16(1331); +emit_16(1398); +emit_16(1332); +emit_16(1398); +emit_16(1331); +emit_16(1398); +emit_16(1332); +emit_16(1399); +emit_16(1333); +emit_16(1399); +emit_16(1332); +emit_16(1399); +emit_16(1333); +emit_16(1400); +emit_16(1334); +emit_16(1400); +emit_16(1333); +emit_16(1400); +emit_16(1334); +emit_16(1401); +emit_16(1335); +emit_16(1401); +emit_16(1334); +emit_16(1401); +emit_16(1335); +emit_16(1402); +emit_16(1336); +emit_16(1402); +emit_16(1335); +emit_16(1402); +emit_16(1336); +emit_16(1403); +emit_16(1337); +emit_16(1403); +emit_16(1336); +emit_16(1403); +emit_16(1337); +emit_16(1404); +emit_16(1338); +emit_16(1404); +emit_16(1337); +emit_16(1404); +emit_16(1338); +emit_16(1405); +emit_16(1339); +emit_16(1405); +emit_16(1338); +emit_16(1405); +emit_16(1339); +emit_16(1406); +emit_16(1340); +emit_16(1406); +emit_16(1339); +emit_16(1406); +emit_16(1340); +emit_16(1407); +emit_16(1341); +emit_16(1407); +emit_16(1340); +emit_16(1407); +emit_16(1341); +emit_16(1408); +emit_16(1342); +emit_16(1408); +emit_16(1341); +emit_16(1408); +emit_16(1342); +emit_16(1409); +emit_16(1343); +emit_16(1409); +emit_16(1342); +emit_16(1409); +emit_16(1343); +emit_16(1410); +emit_16(1344); +emit_16(1410); +emit_16(1343); +emit_16(1410); +emit_16(1344); +emit_16(1411); +emit_16(1345); +emit_16(1411); +emit_16(1344); +emit_16(1411); +emit_16(1345); +emit_16(1412); +emit_16(1346); +emit_16(1412); +emit_16(1345); +emit_16(1412); +emit_16(1346); +emit_16(1413); +emit_16(1347); +emit_16(1413); +emit_16(1346); +emit_16(1413); +emit_16(1347); +emit_16(1414); +emit_16(1348); +emit_16(1414); +emit_16(1347); +emit_16(1414); +emit_16(1348); +emit_16(1415); +emit_16(1349); +emit_16(1415); +emit_16(1348); +emit_16(1415); +emit_16(1349); +emit_16(1416); +emit_16(1350); +emit_16(1416); +emit_16(1349); +emit_16(1416); +emit_16(1350); +emit_16(1417); +emit_16(1351); +emit_16(1417); +emit_16(1350); +emit_16(1417); +emit_16(1351); +emit_16(1418); +emit_16(1352); +emit_16(1418); +emit_16(1351); +emit_16(1418); +emit_16(1352); +emit_16(1419); +emit_16(1353); +emit_16(1419); +emit_16(1352); +emit_16(1419); +emit_16(1353); +emit_16(1420); +emit_16(1354); +emit_16(1420); +emit_16(1353); +emit_16(1420); +emit_16(1354); +emit_16(1421); +emit_16(1355); +emit_16(1421); +emit_16(1354); +emit_16(1421); +emit_16(1355); +emit_16(1422); +emit_16(1356); +emit_16(1422); +emit_16(1355); +emit_16(1422); +emit_16(1356); +emit_16(1423); +emit_16(1357); +emit_16(1423); +emit_16(1356); +emit_16(1423); +emit_16(1357); +emit_16(1424); +emit_16(1358); +emit_16(1424); +emit_16(1357); +emit_16(1424); +emit_16(1358); +emit_16(1425); +emit_16(1359); +emit_16(1425); +emit_16(1358); +emit_16(1425); +emit_16(1359); +emit_16(1426); +emit_16(1360); +emit_16(1426); +emit_16(1359); +emit_16(1426); +emit_16(1360); +emit_16(1427); +emit_16(1361); +emit_16(1427); +emit_16(1360); +emit_16(1427); +emit_16(1361); +emit_16(1428); +emit_16(1362); +emit_16(1428); +emit_16(1361); +emit_16(1428); +emit_16(1362); +emit_16(1429); +emit_16(1363); +emit_16(1429); +emit_16(1362); +emit_16(1429); +emit_16(1363); +emit_16(1430); +emit_16(1364); +emit_16(1430); +emit_16(1363); +emit_16(1430); +emit_16(1364); +emit_16(1431); +emit_16(1365); +emit_16(1431); +emit_16(1364); +emit_16(1431); +emit_16(1365); +emit_16(1432); +emit_16(1366); +emit_16(1432); +emit_16(1365); +emit_16(1432); +emit_16(1366); +emit_16(1433); +emit_16(1367); +emit_16(1433); +emit_16(1366); +emit_16(1433); +emit_16(1367); +emit_16(1434); +emit_16(1368); +emit_16(1434); +emit_16(1367); +emit_16(1434); +emit_16(1368); +emit_16(1435); +emit_16(1369); +emit_16(1435); +emit_16(1368); +emit_16(1435); +emit_16(1369); +emit_16(1436); +emit_16(1370); +emit_16(1436); +emit_16(1369); +emit_16(1436); +emit_16(1370); +emit_16(1437); +emit_16(1371); +emit_16(1437); +emit_16(1370); +emit_16(1437); +emit_16(1371); +emit_16(1438); +emit_16(1372); +emit_16(1438); +emit_16(1371); +emit_16(1438); +emit_16(1372); +emit_16(1439); +emit_16(1373); +emit_16(1439); +emit_16(1372); +emit_16(1439); +emit_16(1373); +emit_16(1440); +emit_16(1374); +emit_16(1440); +emit_16(1373); +emit_16(1440); +emit_16(1374); +emit_16(1441); +emit_16(1375); +emit_16(1441); +emit_16(1374); +emit_16(1441); +emit_16(1375); +emit_16(1442); +emit_16(1376); +emit_16(1442); +emit_16(1375); +emit_16(1442); +emit_16(1376); +emit_16(1443); +emit_16(1377); +emit_16(1443); +emit_16(1376); +emit_16(1443); +emit_16(1377); +emit_16(1444); +emit_16(1378); +emit_16(1444); +emit_16(1377); +emit_16(1444); +emit_16(1378); +emit_16(1445); +emit_16(1379); +emit_16(1445); +emit_16(1378); +emit_16(1445); +emit_16(1379); +emit_16(1446); +emit_16(1380); +emit_16(1446); +emit_16(1379); +emit_16(1446); +emit_16(1380); +emit_16(1447); +emit_16(1381); +emit_16(1447); +emit_16(1380); +emit_16(1447); +emit_16(1381); +emit_16(1448); +emit_16(1382); +emit_16(1448); +emit_16(1381); +emit_16(1448); +emit_16(1382); +emit_16(1449); +emit_16(1383); +emit_16(1449); +emit_16(1382); +emit_16(1449); +emit_16(1383); +emit_16(1450); +emit_16(1384); +emit_16(1450); +emit_16(1383); +emit_16(1450); +emit_16(1384); +emit_16(1451); +emit_16(1385); +emit_16(1451); +emit_16(1384); +emit_16(1452); +emit_16(1386); +emit_16(1453); +emit_16(1387); +emit_16(1453); +emit_16(1386); +emit_16(1453); +emit_16(1387); +emit_16(1454); +emit_16(1388); +emit_16(1454); +emit_16(1387); +emit_16(1454); +emit_16(1388); +emit_16(1455); +emit_16(1389); +emit_16(1455); +emit_16(1388); +emit_16(1455); +emit_16(1389); +emit_16(1456); +emit_16(1390); +emit_16(1456); +emit_16(1389); +emit_16(1456); +emit_16(1390); +emit_16(1457); +emit_16(1391); +emit_16(1457); +emit_16(1390); +emit_16(1457); +emit_16(1391); +emit_16(1458); +emit_16(1392); +emit_16(1458); +emit_16(1391); +emit_16(1458); +emit_16(1392); +emit_16(1459); +emit_16(1393); +emit_16(1459); +emit_16(1392); +emit_16(1459); +emit_16(1393); +emit_16(1460); +emit_16(1394); +emit_16(1460); +emit_16(1393); +emit_16(1460); +emit_16(1394); +emit_16(1461); +emit_16(1395); +emit_16(1461); +emit_16(1394); +emit_16(1461); +emit_16(1395); +emit_16(1462); +emit_16(1396); +emit_16(1462); +emit_16(1395); +emit_16(1462); +emit_16(1396); +emit_16(1463); +emit_16(1397); +emit_16(1463); +emit_16(1396); +emit_16(1463); +emit_16(1397); +emit_16(1464); +emit_16(1398); +emit_16(1464); +emit_16(1397); +emit_16(1464); +emit_16(1398); +emit_16(1465); +emit_16(1399); +emit_16(1465); +emit_16(1398); +emit_16(1465); +emit_16(1399); +emit_16(1466); +emit_16(1400); +emit_16(1466); +emit_16(1399); +emit_16(1466); +emit_16(1400); +emit_16(1467); +emit_16(1401); +emit_16(1467); +emit_16(1400); +emit_16(1467); +emit_16(1401); +emit_16(1468); +emit_16(1402); +emit_16(1468); +emit_16(1401); +emit_16(1468); +emit_16(1402); +emit_16(1469); +emit_16(1403); +emit_16(1469); +emit_16(1402); +emit_16(1469); +emit_16(1403); +emit_16(1470); +emit_16(1404); +emit_16(1470); +emit_16(1403); +emit_16(1470); +emit_16(1404); +emit_16(1471); +emit_16(1405); +emit_16(1471); +emit_16(1404); +emit_16(1471); +emit_16(1405); +emit_16(1472); +emit_16(1406); +emit_16(1472); +emit_16(1405); +emit_16(1472); +emit_16(1406); +emit_16(1473); +emit_16(1407); +emit_16(1473); +emit_16(1406); +emit_16(1473); +emit_16(1407); +emit_16(1474); +emit_16(1408); +emit_16(1474); +emit_16(1407); +emit_16(1474); +emit_16(1408); +emit_16(1475); +emit_16(1409); +emit_16(1475); +emit_16(1408); +emit_16(1475); +emit_16(1409); +emit_16(1476); +emit_16(1410); +emit_16(1476); +emit_16(1409); +emit_16(1476); +emit_16(1410); +emit_16(1477); +emit_16(1411); +emit_16(1477); +emit_16(1410); +emit_16(1477); +emit_16(1411); +emit_16(1478); +emit_16(1412); +emit_16(1478); +emit_16(1411); +emit_16(1478); +emit_16(1412); +emit_16(1479); +emit_16(1413); +emit_16(1479); +emit_16(1412); +emit_16(1479); +emit_16(1413); +emit_16(1480); +emit_16(1414); +emit_16(1480); +emit_16(1413); +emit_16(1480); +emit_16(1414); +emit_16(1481); +emit_16(1415); +emit_16(1481); +emit_16(1414); +emit_16(1481); +emit_16(1415); +emit_16(1482); +emit_16(1416); +emit_16(1482); +emit_16(1415); +emit_16(1482); +emit_16(1416); +emit_16(1483); +emit_16(1417); +emit_16(1483); +emit_16(1416); +emit_16(1483); +emit_16(1417); +emit_16(1484); +emit_16(1418); +emit_16(1484); +emit_16(1417); +emit_16(1484); +emit_16(1418); +emit_16(1485); +emit_16(1419); +emit_16(1485); +emit_16(1418); +emit_16(1485); +emit_16(1419); +emit_16(1486); +emit_16(1420); +emit_16(1486); +emit_16(1419); +emit_16(1486); +emit_16(1420); +emit_16(1487); +emit_16(1421); +emit_16(1487); +emit_16(1420); +emit_16(1487); +emit_16(1421); +emit_16(1488); +emit_16(1422); +emit_16(1488); +emit_16(1421); +emit_16(1488); +emit_16(1422); +emit_16(1489); +emit_16(1423); +emit_16(1489); +emit_16(1422); +emit_16(1489); +emit_16(1423); +emit_16(1490); +emit_16(1424); +emit_16(1490); +emit_16(1423); +emit_16(1490); +emit_16(1424); +emit_16(1491); +emit_16(1425); +emit_16(1491); +emit_16(1424); +emit_16(1491); +emit_16(1425); +emit_16(1492); +emit_16(1426); +emit_16(1492); +emit_16(1425); +emit_16(1492); +emit_16(1426); +emit_16(1493); +emit_16(1427); +emit_16(1493); +emit_16(1426); +emit_16(1493); +emit_16(1427); +emit_16(1494); +emit_16(1428); +emit_16(1494); +emit_16(1427); +emit_16(1494); +emit_16(1428); +emit_16(1495); +emit_16(1429); +emit_16(1495); +emit_16(1428); +emit_16(1495); +emit_16(1429); +emit_16(1496); +emit_16(1430); +emit_16(1496); +emit_16(1429); +emit_16(1496); +emit_16(1430); +emit_16(1497); +emit_16(1431); +emit_16(1497); +emit_16(1430); +emit_16(1497); +emit_16(1431); +emit_16(1498); +emit_16(1432); +emit_16(1498); +emit_16(1431); +emit_16(1498); +emit_16(1432); +emit_16(1499); +emit_16(1433); +emit_16(1499); +emit_16(1432); +emit_16(1499); +emit_16(1433); +emit_16(1500); +emit_16(1434); +emit_16(1500); +emit_16(1433); +emit_16(1500); +emit_16(1434); +emit_16(1501); +emit_16(1435); +emit_16(1501); +emit_16(1434); +emit_16(1501); +emit_16(1435); +emit_16(1502); +emit_16(1436); +emit_16(1502); +emit_16(1435); +emit_16(1502); +emit_16(1436); +emit_16(1503); +emit_16(1437); +emit_16(1503); +emit_16(1436); +emit_16(1503); +emit_16(1437); +emit_16(1504); +emit_16(1438); +emit_16(1504); +emit_16(1437); +emit_16(1504); +emit_16(1438); +emit_16(1505); +emit_16(1439); +emit_16(1505); +emit_16(1438); +emit_16(1505); +emit_16(1439); +emit_16(1506); +emit_16(1440); +emit_16(1506); +emit_16(1439); +emit_16(1506); +emit_16(1440); +emit_16(1507); +emit_16(1441); +emit_16(1507); +emit_16(1440); +emit_16(1507); +emit_16(1441); +emit_16(1508); +emit_16(1442); +emit_16(1508); +emit_16(1441); +emit_16(1508); +emit_16(1442); +emit_16(1509); +emit_16(1443); +emit_16(1509); +emit_16(1442); +emit_16(1509); +emit_16(1443); +emit_16(1510); +emit_16(1444); +emit_16(1510); +emit_16(1443); +emit_16(1510); +emit_16(1444); +emit_16(1511); +emit_16(1445); +emit_16(1511); +emit_16(1444); +emit_16(1511); +emit_16(1445); +emit_16(1512); +emit_16(1446); +emit_16(1512); +emit_16(1445); +emit_16(1512); +emit_16(1446); +emit_16(1513); +emit_16(1447); +emit_16(1513); +emit_16(1446); +emit_16(1513); +emit_16(1447); +emit_16(1514); +emit_16(1448); +emit_16(1514); +emit_16(1447); +emit_16(1514); +emit_16(1448); +emit_16(1515); +emit_16(1449); +emit_16(1515); +emit_16(1448); +emit_16(1515); +emit_16(1449); +emit_16(1516); +emit_16(1450); +emit_16(1516); +emit_16(1449); +emit_16(1516); +emit_16(1450); +emit_16(1517); +emit_16(1451); +emit_16(1517); +emit_16(1450); +emit_16(1518); +emit_16(1452); +emit_16(1519); +emit_16(1453); +emit_16(1519); +emit_16(1452); +emit_16(1519); +emit_16(1453); +emit_16(1520); +emit_16(1454); +emit_16(1520); +emit_16(1453); +emit_16(1520); +emit_16(1454); +emit_16(1521); +emit_16(1455); +emit_16(1521); +emit_16(1454); +emit_16(1521); +emit_16(1455); +emit_16(1522); +emit_16(1456); +emit_16(1522); +emit_16(1455); +emit_16(1522); +emit_16(1456); +emit_16(1523); +emit_16(1457); +emit_16(1523); +emit_16(1456); +emit_16(1523); +emit_16(1457); +emit_16(1524); +emit_16(1458); +emit_16(1524); +emit_16(1457); +emit_16(1524); +emit_16(1458); +emit_16(1525); +emit_16(1459); +emit_16(1525); +emit_16(1458); +emit_16(1525); +emit_16(1459); +emit_16(1526); +emit_16(1460); +emit_16(1526); +emit_16(1459); +emit_16(1526); +emit_16(1460); +emit_16(1527); +emit_16(1461); +emit_16(1527); +emit_16(1460); +emit_16(1527); +emit_16(1461); +emit_16(1528); +emit_16(1462); +emit_16(1528); +emit_16(1461); +emit_16(1528); +emit_16(1462); +emit_16(1529); +emit_16(1463); +emit_16(1529); +emit_16(1462); +emit_16(1529); +emit_16(1463); +emit_16(1530); +emit_16(1464); +emit_16(1530); +emit_16(1463); +emit_16(1530); +emit_16(1464); +emit_16(1531); +emit_16(1465); +emit_16(1531); +emit_16(1464); +emit_16(1531); +emit_16(1465); +emit_16(1532); +emit_16(1466); +emit_16(1532); +emit_16(1465); +emit_16(1532); +emit_16(1466); +emit_16(1533); +emit_16(1467); +emit_16(1533); +emit_16(1466); +emit_16(1533); +emit_16(1467); +emit_16(1534); +emit_16(1468); +emit_16(1534); +emit_16(1467); +emit_16(1534); +emit_16(1468); +emit_16(1535); +emit_16(1469); +emit_16(1535); +emit_16(1468); +emit_16(1535); +emit_16(1469); +emit_16(1536); +emit_16(1470); +emit_16(1536); +emit_16(1469); +emit_16(1536); +emit_16(1470); +emit_16(1537); +emit_16(1471); +emit_16(1537); +emit_16(1470); +emit_16(1537); +emit_16(1471); +emit_16(1538); +emit_16(1472); +emit_16(1538); +emit_16(1471); +emit_16(1538); +emit_16(1472); +emit_16(1539); +emit_16(1473); +emit_16(1539); +emit_16(1472); +emit_16(1539); +emit_16(1473); +emit_16(1540); +emit_16(1474); +emit_16(1540); +emit_16(1473); +emit_16(1540); +emit_16(1474); +emit_16(1541); +emit_16(1475); +emit_16(1541); +emit_16(1474); +emit_16(1541); +emit_16(1475); +emit_16(1542); +emit_16(1476); +emit_16(1542); +emit_16(1475); +emit_16(1542); +emit_16(1476); +emit_16(1543); +emit_16(1477); +emit_16(1543); +emit_16(1476); +emit_16(1543); +emit_16(1477); +emit_16(1544); +emit_16(1478); +emit_16(1544); +emit_16(1477); +emit_16(1544); +emit_16(1478); +emit_16(1545); +emit_16(1479); +emit_16(1545); +emit_16(1478); +emit_16(1545); +emit_16(1479); +emit_16(1546); +emit_16(1480); +emit_16(1546); +emit_16(1479); +emit_16(1546); +emit_16(1480); +emit_16(1547); +emit_16(1481); +emit_16(1547); +emit_16(1480); +emit_16(1547); +emit_16(1481); +emit_16(1548); +emit_16(1482); +emit_16(1548); +emit_16(1481); +emit_16(1548); +emit_16(1482); +emit_16(1549); +emit_16(1483); +emit_16(1549); +emit_16(1482); +emit_16(1549); +emit_16(1483); +emit_16(1550); +emit_16(1484); +emit_16(1550); +emit_16(1483); +emit_16(1550); +emit_16(1484); +emit_16(1551); +emit_16(1485); +emit_16(1551); +emit_16(1484); +emit_16(1551); +emit_16(1485); +emit_16(1552); +emit_16(1486); +emit_16(1552); +emit_16(1485); +emit_16(1552); +emit_16(1486); +emit_16(1553); +emit_16(1487); +emit_16(1553); +emit_16(1486); +emit_16(1553); +emit_16(1487); +emit_16(1554); +emit_16(1488); +emit_16(1554); +emit_16(1487); +emit_16(1554); +emit_16(1488); +emit_16(1555); +emit_16(1489); +emit_16(1555); +emit_16(1488); +emit_16(1555); +emit_16(1489); +emit_16(1556); +emit_16(1490); +emit_16(1556); +emit_16(1489); +emit_16(1556); +emit_16(1490); +emit_16(1557); +emit_16(1491); +emit_16(1557); +emit_16(1490); +emit_16(1557); +emit_16(1491); +emit_16(1558); +emit_16(1492); +emit_16(1558); +emit_16(1491); +emit_16(1558); +emit_16(1492); +emit_16(1559); +emit_16(1493); +emit_16(1559); +emit_16(1492); +emit_16(1559); +emit_16(1493); +emit_16(1560); +emit_16(1494); +emit_16(1560); +emit_16(1493); +emit_16(1560); +emit_16(1494); +emit_16(1561); +emit_16(1495); +emit_16(1561); +emit_16(1494); +emit_16(1561); +emit_16(1495); +emit_16(1562); +emit_16(1496); +emit_16(1562); +emit_16(1495); +emit_16(1562); +emit_16(1496); +emit_16(1563); +emit_16(1497); +emit_16(1563); +emit_16(1496); +emit_16(1563); +emit_16(1497); +emit_16(1564); +emit_16(1498); +emit_16(1564); +emit_16(1497); +emit_16(1564); +emit_16(1498); +emit_16(1565); +emit_16(1499); +emit_16(1565); +emit_16(1498); +emit_16(1565); +emit_16(1499); +emit_16(1566); +emit_16(1500); +emit_16(1566); +emit_16(1499); +emit_16(1566); +emit_16(1500); +emit_16(1567); +emit_16(1501); +emit_16(1567); +emit_16(1500); +emit_16(1567); +emit_16(1501); +emit_16(1568); +emit_16(1502); +emit_16(1568); +emit_16(1501); +emit_16(1568); +emit_16(1502); +emit_16(1569); +emit_16(1503); +emit_16(1569); +emit_16(1502); +emit_16(1569); +emit_16(1503); +emit_16(1570); +emit_16(1504); +emit_16(1570); +emit_16(1503); +emit_16(1570); +emit_16(1504); +emit_16(1571); +emit_16(1505); +emit_16(1571); +emit_16(1504); +emit_16(1571); +emit_16(1505); +emit_16(1572); +emit_16(1506); +emit_16(1572); +emit_16(1505); +emit_16(1572); +emit_16(1506); +emit_16(1573); +emit_16(1507); +emit_16(1573); +emit_16(1506); +emit_16(1573); +emit_16(1507); +emit_16(1574); +emit_16(1508); +emit_16(1574); +emit_16(1507); +emit_16(1574); +emit_16(1508); +emit_16(1575); +emit_16(1509); +emit_16(1575); +emit_16(1508); +emit_16(1575); +emit_16(1509); +emit_16(1576); +emit_16(1510); +emit_16(1576); +emit_16(1509); +emit_16(1576); +emit_16(1510); +emit_16(1577); +emit_16(1511); +emit_16(1577); +emit_16(1510); +emit_16(1577); +emit_16(1511); +emit_16(1578); +emit_16(1512); +emit_16(1578); +emit_16(1511); +emit_16(1578); +emit_16(1512); +emit_16(1579); +emit_16(1513); +emit_16(1579); +emit_16(1512); +emit_16(1579); +emit_16(1513); +emit_16(1580); +emit_16(1514); +emit_16(1580); +emit_16(1513); +emit_16(1580); +emit_16(1514); +emit_16(1581); +emit_16(1515); +emit_16(1581); +emit_16(1514); +emit_16(1581); +emit_16(1515); +emit_16(1582); +emit_16(1516); +emit_16(1582); +emit_16(1515); +emit_16(1582); +emit_16(1516); +emit_16(1583); +emit_16(1517); +emit_16(1583); +emit_16(1516); +emit_16(1584); +emit_16(1518); +emit_16(1585); +emit_16(1519); +emit_16(1585); +emit_16(1518); +emit_16(1585); +emit_16(1519); +emit_16(1586); +emit_16(1520); +emit_16(1586); +emit_16(1519); +emit_16(1586); +emit_16(1520); +emit_16(1587); +emit_16(1521); +emit_16(1587); +emit_16(1520); +emit_16(1587); +emit_16(1521); +emit_16(1588); +emit_16(1522); +emit_16(1588); +emit_16(1521); +emit_16(1588); +emit_16(1522); +emit_16(1589); +emit_16(1523); +emit_16(1589); +emit_16(1522); +emit_16(1589); +emit_16(1523); +emit_16(1590); +emit_16(1524); +emit_16(1590); +emit_16(1523); +emit_16(1590); +emit_16(1524); +emit_16(1591); +emit_16(1525); +emit_16(1591); +emit_16(1524); +emit_16(1591); +emit_16(1525); +emit_16(1592); +emit_16(1526); +emit_16(1592); +emit_16(1525); +emit_16(1592); +emit_16(1526); +emit_16(1593); +emit_16(1527); +emit_16(1593); +emit_16(1526); +emit_16(1593); +emit_16(1527); +emit_16(1594); +emit_16(1528); +emit_16(1594); +emit_16(1527); +emit_16(1594); +emit_16(1528); +emit_16(1595); +emit_16(1529); +emit_16(1595); +emit_16(1528); +emit_16(1595); +emit_16(1529); +emit_16(1596); +emit_16(1530); +emit_16(1596); +emit_16(1529); +emit_16(1596); +emit_16(1530); +emit_16(1597); +emit_16(1531); +emit_16(1597); +emit_16(1530); +emit_16(1597); +emit_16(1531); +emit_16(1598); +emit_16(1532); +emit_16(1598); +emit_16(1531); +emit_16(1598); +emit_16(1532); +emit_16(1599); +emit_16(1533); +emit_16(1599); +emit_16(1532); +emit_16(1599); +emit_16(1533); +emit_16(1600); +emit_16(1534); +emit_16(1600); +emit_16(1533); +emit_16(1600); +emit_16(1534); +emit_16(1601); +emit_16(1535); +emit_16(1601); +emit_16(1534); +emit_16(1601); +emit_16(1535); +emit_16(1602); +emit_16(1536); +emit_16(1602); +emit_16(1535); +emit_16(1602); +emit_16(1536); +emit_16(1603); +emit_16(1537); +emit_16(1603); +emit_16(1536); +emit_16(1603); +emit_16(1537); +emit_16(1604); +emit_16(1538); +emit_16(1604); +emit_16(1537); +emit_16(1604); +emit_16(1538); +emit_16(1605); +emit_16(1539); +emit_16(1605); +emit_16(1538); +emit_16(1605); +emit_16(1539); +emit_16(1606); +emit_16(1540); +emit_16(1606); +emit_16(1539); +emit_16(1606); +emit_16(1540); +emit_16(1607); +emit_16(1541); +emit_16(1607); +emit_16(1540); +emit_16(1607); +emit_16(1541); +emit_16(1608); +emit_16(1542); +emit_16(1608); +emit_16(1541); +emit_16(1608); +emit_16(1542); +emit_16(1609); +emit_16(1543); +emit_16(1609); +emit_16(1542); +emit_16(1609); +emit_16(1543); +emit_16(1610); +emit_16(1544); +emit_16(1610); +emit_16(1543); +emit_16(1610); +emit_16(1544); +emit_16(1611); +emit_16(1545); +emit_16(1611); +emit_16(1544); +emit_16(1611); +emit_16(1545); +emit_16(1612); +emit_16(1546); +emit_16(1612); +emit_16(1545); +emit_16(1612); +emit_16(1546); +emit_16(1613); +emit_16(1547); +emit_16(1613); +emit_16(1546); +emit_16(1613); +emit_16(1547); +emit_16(1614); +emit_16(1548); +emit_16(1614); +emit_16(1547); +emit_16(1614); +emit_16(1548); +emit_16(1615); +emit_16(1549); +emit_16(1615); +emit_16(1548); +emit_16(1615); +emit_16(1549); +emit_16(1616); +emit_16(1550); +emit_16(1616); +emit_16(1549); +emit_16(1616); +emit_16(1550); +emit_16(1617); +emit_16(1551); +emit_16(1617); +emit_16(1550); +emit_16(1617); +emit_16(1551); +emit_16(1618); +emit_16(1552); +emit_16(1618); +emit_16(1551); +emit_16(1618); +emit_16(1552); +emit_16(1619); +emit_16(1553); +emit_16(1619); +emit_16(1552); +emit_16(1619); +emit_16(1553); +emit_16(1620); +emit_16(1554); +emit_16(1620); +emit_16(1553); +emit_16(1620); +emit_16(1554); +emit_16(1621); +emit_16(1555); +emit_16(1621); +emit_16(1554); +emit_16(1621); +emit_16(1555); +emit_16(1622); +emit_16(1556); +emit_16(1622); +emit_16(1555); +emit_16(1622); +emit_16(1556); +emit_16(1623); +emit_16(1557); +emit_16(1623); +emit_16(1556); +emit_16(1623); +emit_16(1557); +emit_16(1624); +emit_16(1558); +emit_16(1624); +emit_16(1557); +emit_16(1624); +emit_16(1558); +emit_16(1625); +emit_16(1559); +emit_16(1625); +emit_16(1558); +emit_16(1625); +emit_16(1559); +emit_16(1626); +emit_16(1560); +emit_16(1626); +emit_16(1559); +emit_16(1626); +emit_16(1560); +emit_16(1627); +emit_16(1561); +emit_16(1627); +emit_16(1560); +emit_16(1627); +emit_16(1561); +emit_16(1628); +emit_16(1562); +emit_16(1628); +emit_16(1561); +emit_16(1628); +emit_16(1562); +emit_16(1629); +emit_16(1563); +emit_16(1629); +emit_16(1562); +emit_16(1629); +emit_16(1563); +emit_16(1630); +emit_16(1564); +emit_16(1630); +emit_16(1563); +emit_16(1630); +emit_16(1564); +emit_16(1631); +emit_16(1565); +emit_16(1631); +emit_16(1564); +emit_16(1631); +emit_16(1565); +emit_16(1632); +emit_16(1566); +emit_16(1632); +emit_16(1565); +emit_16(1632); +emit_16(1566); +emit_16(1633); +emit_16(1567); +emit_16(1633); +emit_16(1566); +emit_16(1633); +emit_16(1567); +emit_16(1634); +emit_16(1568); +emit_16(1634); +emit_16(1567); +emit_16(1634); +emit_16(1568); +emit_16(1635); +emit_16(1569); +emit_16(1635); +emit_16(1568); +emit_16(1635); +emit_16(1569); +emit_16(1636); +emit_16(1570); +emit_16(1636); +emit_16(1569); +emit_16(1636); +emit_16(1570); +emit_16(1637); +emit_16(1571); +emit_16(1637); +emit_16(1570); +emit_16(1637); +emit_16(1571); +emit_16(1638); +emit_16(1572); +emit_16(1638); +emit_16(1571); +emit_16(1638); +emit_16(1572); +emit_16(1639); +emit_16(1573); +emit_16(1639); +emit_16(1572); +emit_16(1639); +emit_16(1573); +emit_16(1640); +emit_16(1574); +emit_16(1640); +emit_16(1573); +emit_16(1640); +emit_16(1574); +emit_16(1641); +emit_16(1575); +emit_16(1641); +emit_16(1574); +emit_16(1641); +emit_16(1575); +emit_16(1642); +emit_16(1576); +emit_16(1642); +emit_16(1575); +emit_16(1642); +emit_16(1576); +emit_16(1643); +emit_16(1577); +emit_16(1643); +emit_16(1576); +emit_16(1643); +emit_16(1577); +emit_16(1644); +emit_16(1578); +emit_16(1644); +emit_16(1577); +emit_16(1644); +emit_16(1578); +emit_16(1645); +emit_16(1579); +emit_16(1645); +emit_16(1578); +emit_16(1645); +emit_16(1579); +emit_16(1646); +emit_16(1580); +emit_16(1646); +emit_16(1579); +emit_16(1646); +emit_16(1580); +emit_16(1647); +emit_16(1581); +emit_16(1647); +emit_16(1580); +emit_16(1647); +emit_16(1581); +emit_16(1648); +emit_16(1582); +emit_16(1648); +emit_16(1581); +emit_16(1648); +emit_16(1582); +emit_16(1649); +emit_16(1583); +emit_16(1649); +emit_16(1582); +emit_16(1650); +emit_16(1584); +emit_16(1651); +emit_16(1585); +emit_16(1651); +emit_16(1584); +emit_16(1651); +emit_16(1585); +emit_16(1652); +emit_16(1586); +emit_16(1652); +emit_16(1585); +emit_16(1652); +emit_16(1586); +emit_16(1653); +emit_16(1587); +emit_16(1653); +emit_16(1586); +emit_16(1653); +emit_16(1587); +emit_16(1654); +emit_16(1588); +emit_16(1654); +emit_16(1587); +emit_16(1654); +emit_16(1588); +emit_16(1655); +emit_16(1589); +emit_16(1655); +emit_16(1588); +emit_16(1655); +emit_16(1589); +emit_16(1656); +emit_16(1590); +emit_16(1656); +emit_16(1589); +emit_16(1656); +emit_16(1590); +emit_16(1657); +emit_16(1591); +emit_16(1657); +emit_16(1590); +emit_16(1657); +emit_16(1591); +emit_16(1658); +emit_16(1592); +emit_16(1658); +emit_16(1591); +emit_16(1658); +emit_16(1592); +emit_16(1659); +emit_16(1593); +emit_16(1659); +emit_16(1592); +emit_16(1659); +emit_16(1593); +emit_16(1660); +emit_16(1594); +emit_16(1660); +emit_16(1593); +emit_16(1660); +emit_16(1594); +emit_16(1661); +emit_16(1595); +emit_16(1661); +emit_16(1594); +emit_16(1661); +emit_16(1595); +emit_16(1662); +emit_16(1596); +emit_16(1662); +emit_16(1595); +emit_16(1662); +emit_16(1596); +emit_16(1663); +emit_16(1597); +emit_16(1663); +emit_16(1596); +emit_16(1663); +emit_16(1597); +emit_16(1664); +emit_16(1598); +emit_16(1664); +emit_16(1597); +emit_16(1664); +emit_16(1598); +emit_16(1665); +emit_16(1599); +emit_16(1665); +emit_16(1598); +emit_16(1665); +emit_16(1599); +emit_16(1666); +emit_16(1600); +emit_16(1666); +emit_16(1599); +emit_16(1666); +emit_16(1600); +emit_16(1667); +emit_16(1601); +emit_16(1667); +emit_16(1600); +emit_16(1667); +emit_16(1601); +emit_16(1668); +emit_16(1602); +emit_16(1668); +emit_16(1601); +emit_16(1668); +emit_16(1602); +emit_16(1669); +emit_16(1603); +emit_16(1669); +emit_16(1602); +emit_16(1669); +emit_16(1603); +emit_16(1670); +emit_16(1604); +emit_16(1670); +emit_16(1603); +emit_16(1670); +emit_16(1604); +emit_16(1671); +emit_16(1605); +emit_16(1671); +emit_16(1604); +emit_16(1671); +emit_16(1605); +emit_16(1672); +emit_16(1606); +emit_16(1672); +emit_16(1605); +emit_16(1672); +emit_16(1606); +emit_16(1673); +emit_16(1607); +emit_16(1673); +emit_16(1606); +emit_16(1673); +emit_16(1607); +emit_16(1674); +emit_16(1608); +emit_16(1674); +emit_16(1607); +emit_16(1674); +emit_16(1608); +emit_16(1675); +emit_16(1609); +emit_16(1675); +emit_16(1608); +emit_16(1675); +emit_16(1609); +emit_16(1676); +emit_16(1610); +emit_16(1676); +emit_16(1609); +emit_16(1676); +emit_16(1610); +emit_16(1677); +emit_16(1611); +emit_16(1677); +emit_16(1610); +emit_16(1677); +emit_16(1611); +emit_16(1678); +emit_16(1612); +emit_16(1678); +emit_16(1611); +emit_16(1678); +emit_16(1612); +emit_16(1679); +emit_16(1613); +emit_16(1679); +emit_16(1612); +emit_16(1679); +emit_16(1613); +emit_16(1680); +emit_16(1614); +emit_16(1680); +emit_16(1613); +emit_16(1680); +emit_16(1614); +emit_16(1681); +emit_16(1615); +emit_16(1681); +emit_16(1614); +emit_16(1681); +emit_16(1615); +emit_16(1682); +emit_16(1616); +emit_16(1682); +emit_16(1615); +emit_16(1682); +emit_16(1616); +emit_16(1683); +emit_16(1617); +emit_16(1683); +emit_16(1616); +emit_16(1683); +emit_16(1617); +emit_16(1684); +emit_16(1618); +emit_16(1684); +emit_16(1617); +emit_16(1684); +emit_16(1618); +emit_16(1685); +emit_16(1619); +emit_16(1685); +emit_16(1618); +emit_16(1685); +emit_16(1619); +emit_16(1686); +emit_16(1620); +emit_16(1686); +emit_16(1619); +emit_16(1686); +emit_16(1620); +emit_16(1687); +emit_16(1621); +emit_16(1687); +emit_16(1620); +emit_16(1687); +emit_16(1621); +emit_16(1688); +emit_16(1622); +emit_16(1688); +emit_16(1621); +emit_16(1688); +emit_16(1622); +emit_16(1689); +emit_16(1623); +emit_16(1689); +emit_16(1622); +emit_16(1689); +emit_16(1623); +emit_16(1690); +emit_16(1624); +emit_16(1690); +emit_16(1623); +emit_16(1690); +emit_16(1624); +emit_16(1691); +emit_16(1625); +emit_16(1691); +emit_16(1624); +emit_16(1691); +emit_16(1625); +emit_16(1692); +emit_16(1626); +emit_16(1692); +emit_16(1625); +emit_16(1692); +emit_16(1626); +emit_16(1693); +emit_16(1627); +emit_16(1693); +emit_16(1626); +emit_16(1693); +emit_16(1627); +emit_16(1694); +emit_16(1628); +emit_16(1694); +emit_16(1627); +emit_16(1694); +emit_16(1628); +emit_16(1695); +emit_16(1629); +emit_16(1695); +emit_16(1628); +emit_16(1695); +emit_16(1629); +emit_16(1696); +emit_16(1630); +emit_16(1696); +emit_16(1629); +emit_16(1696); +emit_16(1630); +emit_16(1697); +emit_16(1631); +emit_16(1697); +emit_16(1630); +emit_16(1697); +emit_16(1631); +emit_16(1698); +emit_16(1632); +emit_16(1698); +emit_16(1631); +emit_16(1698); +emit_16(1632); +emit_16(1699); +emit_16(1633); +emit_16(1699); +emit_16(1632); +emit_16(1699); +emit_16(1633); +emit_16(1700); +emit_16(1634); +emit_16(1700); +emit_16(1633); +emit_16(1700); +emit_16(1634); +emit_16(1701); +emit_16(1635); +emit_16(1701); +emit_16(1634); +emit_16(1701); +emit_16(1635); +emit_16(1702); +emit_16(1636); +emit_16(1702); +emit_16(1635); +emit_16(1702); +emit_16(1636); +emit_16(1703); +emit_16(1637); +emit_16(1703); +emit_16(1636); +emit_16(1703); +emit_16(1637); +emit_16(1704); +emit_16(1638); +emit_16(1704); +emit_16(1637); +emit_16(1704); +emit_16(1638); +emit_16(1705); +emit_16(1639); +emit_16(1705); +emit_16(1638); +emit_16(1705); +emit_16(1639); +emit_16(1706); +emit_16(1640); +emit_16(1706); +emit_16(1639); +emit_16(1706); +emit_16(1640); +emit_16(1707); +emit_16(1641); +emit_16(1707); +emit_16(1640); +emit_16(1707); +emit_16(1641); +emit_16(1708); +emit_16(1642); +emit_16(1708); +emit_16(1641); +emit_16(1708); +emit_16(1642); +emit_16(1709); +emit_16(1643); +emit_16(1709); +emit_16(1642); +emit_16(1709); +emit_16(1643); +emit_16(1710); +emit_16(1644); +emit_16(1710); +emit_16(1643); +emit_16(1710); +emit_16(1644); +emit_16(1711); +emit_16(1645); +emit_16(1711); +emit_16(1644); +emit_16(1711); +emit_16(1645); +emit_16(1712); +emit_16(1646); +emit_16(1712); +emit_16(1645); +emit_16(1712); +emit_16(1646); +emit_16(1713); +emit_16(1647); +emit_16(1713); +emit_16(1646); +emit_16(1713); +emit_16(1647); +emit_16(1714); +emit_16(1648); +emit_16(1714); +emit_16(1647); +emit_16(1714); +emit_16(1648); +emit_16(1715); +emit_16(1649); +emit_16(1715); +emit_16(1648); +emit_16(1716); +emit_16(1650); +emit_16(1717); +emit_16(1651); +emit_16(1717); +emit_16(1650); +emit_16(1717); +emit_16(1651); +emit_16(1718); +emit_16(1652); +emit_16(1718); +emit_16(1651); +emit_16(1718); +emit_16(1652); +emit_16(1719); +emit_16(1653); +emit_16(1719); +emit_16(1652); +emit_16(1719); +emit_16(1653); +emit_16(1720); +emit_16(1654); +emit_16(1720); +emit_16(1653); +emit_16(1720); +emit_16(1654); +emit_16(1721); +emit_16(1655); +emit_16(1721); +emit_16(1654); +emit_16(1721); +emit_16(1655); +emit_16(1722); +emit_16(1656); +emit_16(1722); +emit_16(1655); +emit_16(1722); +emit_16(1656); +emit_16(1723); +emit_16(1657); +emit_16(1723); +emit_16(1656); +emit_16(1723); +emit_16(1657); +emit_16(1724); +emit_16(1658); +emit_16(1724); +emit_16(1657); +emit_16(1724); +emit_16(1658); +emit_16(1725); +emit_16(1659); +emit_16(1725); +emit_16(1658); +emit_16(1725); +emit_16(1659); +emit_16(1726); +emit_16(1660); +emit_16(1726); +emit_16(1659); +emit_16(1726); +emit_16(1660); +emit_16(1727); +emit_16(1661); +emit_16(1727); +emit_16(1660); +emit_16(1727); +emit_16(1661); +emit_16(1728); +emit_16(1662); +emit_16(1728); +emit_16(1661); +emit_16(1728); +emit_16(1662); +emit_16(1729); +emit_16(1663); +emit_16(1729); +emit_16(1662); +emit_16(1729); +emit_16(1663); +emit_16(1730); +emit_16(1664); +emit_16(1730); +emit_16(1663); +emit_16(1730); +emit_16(1664); +emit_16(1731); +emit_16(1665); +emit_16(1731); +emit_16(1664); +emit_16(1731); +emit_16(1665); +emit_16(1732); +emit_16(1666); +emit_16(1732); +emit_16(1665); +emit_16(1732); +emit_16(1666); +emit_16(1733); +emit_16(1667); +emit_16(1733); +emit_16(1666); +emit_16(1733); +emit_16(1667); +emit_16(1734); +emit_16(1668); +emit_16(1734); +emit_16(1667); +emit_16(1734); +emit_16(1668); +emit_16(1735); +emit_16(1669); +emit_16(1735); +emit_16(1668); +emit_16(1735); +emit_16(1669); +emit_16(1736); +emit_16(1670); +emit_16(1736); +emit_16(1669); +emit_16(1736); +emit_16(1670); +emit_16(1737); +emit_16(1671); +emit_16(1737); +emit_16(1670); +emit_16(1737); +emit_16(1671); +emit_16(1738); +emit_16(1672); +emit_16(1738); +emit_16(1671); +emit_16(1738); +emit_16(1672); +emit_16(1739); +emit_16(1673); +emit_16(1739); +emit_16(1672); +emit_16(1739); +emit_16(1673); +emit_16(1740); +emit_16(1674); +emit_16(1740); +emit_16(1673); +emit_16(1740); +emit_16(1674); +emit_16(1741); +emit_16(1675); +emit_16(1741); +emit_16(1674); +emit_16(1741); +emit_16(1675); +emit_16(1742); +emit_16(1676); +emit_16(1742); +emit_16(1675); +emit_16(1742); +emit_16(1676); +emit_16(1743); +emit_16(1677); +emit_16(1743); +emit_16(1676); +emit_16(1743); +emit_16(1677); +emit_16(1744); +emit_16(1678); +emit_16(1744); +emit_16(1677); +emit_16(1744); +emit_16(1678); +emit_16(1745); +emit_16(1679); +emit_16(1745); +emit_16(1678); +emit_16(1745); +emit_16(1679); +emit_16(1746); +emit_16(1680); +emit_16(1746); +emit_16(1679); +emit_16(1746); +emit_16(1680); +emit_16(1747); +emit_16(1681); +emit_16(1747); +emit_16(1680); +emit_16(1747); +emit_16(1681); +emit_16(1748); +emit_16(1682); +emit_16(1748); +emit_16(1681); +emit_16(1748); +emit_16(1682); +emit_16(1749); +emit_16(1683); +emit_16(1749); +emit_16(1682); +emit_16(1749); +emit_16(1683); +emit_16(1750); +emit_16(1684); +emit_16(1750); +emit_16(1683); +emit_16(1750); +emit_16(1684); +emit_16(1751); +emit_16(1685); +emit_16(1751); +emit_16(1684); +emit_16(1751); +emit_16(1685); +emit_16(1752); +emit_16(1686); +emit_16(1752); +emit_16(1685); +emit_16(1752); +emit_16(1686); +emit_16(1753); +emit_16(1687); +emit_16(1753); +emit_16(1686); +emit_16(1753); +emit_16(1687); +emit_16(1754); +emit_16(1688); +emit_16(1754); +emit_16(1687); +emit_16(1754); +emit_16(1688); +emit_16(1755); +emit_16(1689); +emit_16(1755); +emit_16(1688); +emit_16(1755); +emit_16(1689); +emit_16(1756); +emit_16(1690); +emit_16(1756); +emit_16(1689); +emit_16(1756); +emit_16(1690); +emit_16(1757); +emit_16(1691); +emit_16(1757); +emit_16(1690); +emit_16(1757); +emit_16(1691); +emit_16(1758); +emit_16(1692); +emit_16(1758); +emit_16(1691); +emit_16(1758); +emit_16(1692); +emit_16(1759); +emit_16(1693); +emit_16(1759); +emit_16(1692); +emit_16(1759); +emit_16(1693); +emit_16(1760); +emit_16(1694); +emit_16(1760); +emit_16(1693); +emit_16(1760); +emit_16(1694); +emit_16(1761); +emit_16(1695); +emit_16(1761); +emit_16(1694); +emit_16(1761); +emit_16(1695); +emit_16(1762); +emit_16(1696); +emit_16(1762); +emit_16(1695); +emit_16(1762); +emit_16(1696); +emit_16(1763); +emit_16(1697); +emit_16(1763); +emit_16(1696); +emit_16(1763); +emit_16(1697); +emit_16(1764); +emit_16(1698); +emit_16(1764); +emit_16(1697); +emit_16(1764); +emit_16(1698); +emit_16(1765); +emit_16(1699); +emit_16(1765); +emit_16(1698); +emit_16(1765); +emit_16(1699); +emit_16(1766); +emit_16(1700); +emit_16(1766); +emit_16(1699); +emit_16(1766); +emit_16(1700); +emit_16(1767); +emit_16(1701); +emit_16(1767); +emit_16(1700); +emit_16(1767); +emit_16(1701); +emit_16(1768); +emit_16(1702); +emit_16(1768); +emit_16(1701); +emit_16(1768); +emit_16(1702); +emit_16(1769); +emit_16(1703); +emit_16(1769); +emit_16(1702); +emit_16(1769); +emit_16(1703); +emit_16(1770); +emit_16(1704); +emit_16(1770); +emit_16(1703); +emit_16(1770); +emit_16(1704); +emit_16(1771); +emit_16(1705); +emit_16(1771); +emit_16(1704); +emit_16(1771); +emit_16(1705); +emit_16(1772); +emit_16(1706); +emit_16(1772); +emit_16(1705); +emit_16(1772); +emit_16(1706); +emit_16(1773); +emit_16(1707); +emit_16(1773); +emit_16(1706); +emit_16(1773); +emit_16(1707); +emit_16(1774); +emit_16(1708); +emit_16(1774); +emit_16(1707); +emit_16(1774); +emit_16(1708); +emit_16(1775); +emit_16(1709); +emit_16(1775); +emit_16(1708); +emit_16(1775); +emit_16(1709); +emit_16(1776); +emit_16(1710); +emit_16(1776); +emit_16(1709); +emit_16(1776); +emit_16(1710); +emit_16(1777); +emit_16(1711); +emit_16(1777); +emit_16(1710); +emit_16(1777); +emit_16(1711); +emit_16(1778); +emit_16(1712); +emit_16(1778); +emit_16(1711); +emit_16(1778); +emit_16(1712); +emit_16(1779); +emit_16(1713); +emit_16(1779); +emit_16(1712); +emit_16(1779); +emit_16(1713); +emit_16(1780); +emit_16(1714); +emit_16(1780); +emit_16(1713); +emit_16(1780); +emit_16(1714); +emit_16(1781); +emit_16(1715); +emit_16(1781); +emit_16(1714); +emit_16(1782); +emit_16(1716); +emit_16(1783); +emit_16(1717); +emit_16(1783); +emit_16(1716); +emit_16(1783); +emit_16(1717); +emit_16(1784); +emit_16(1718); +emit_16(1784); +emit_16(1717); +emit_16(1784); +emit_16(1718); +emit_16(1785); +emit_16(1719); +emit_16(1785); +emit_16(1718); +emit_16(1785); +emit_16(1719); +emit_16(1786); +emit_16(1720); +emit_16(1786); +emit_16(1719); +emit_16(1786); +emit_16(1720); +emit_16(1787); +emit_16(1721); +emit_16(1787); +emit_16(1720); +emit_16(1787); +emit_16(1721); +emit_16(1788); +emit_16(1722); +emit_16(1788); +emit_16(1721); +emit_16(1788); +emit_16(1722); +emit_16(1789); +emit_16(1723); +emit_16(1789); +emit_16(1722); +emit_16(1789); +emit_16(1723); +emit_16(1790); +emit_16(1724); +emit_16(1790); +emit_16(1723); +emit_16(1790); +emit_16(1724); +emit_16(1791); +emit_16(1725); +emit_16(1791); +emit_16(1724); +emit_16(1791); +emit_16(1725); +emit_16(1792); +emit_16(1726); +emit_16(1792); +emit_16(1725); +emit_16(1792); +emit_16(1726); +emit_16(1793); +emit_16(1727); +emit_16(1793); +emit_16(1726); +emit_16(1793); +emit_16(1727); +emit_16(1794); +emit_16(1728); +emit_16(1794); +emit_16(1727); +emit_16(1794); +emit_16(1728); +emit_16(1795); +emit_16(1729); +emit_16(1795); +emit_16(1728); +emit_16(1795); +emit_16(1729); +emit_16(1796); +emit_16(1730); +emit_16(1796); +emit_16(1729); +emit_16(1796); +emit_16(1730); +emit_16(1797); +emit_16(1731); +emit_16(1797); +emit_16(1730); +emit_16(1797); +emit_16(1731); +emit_16(1798); +emit_16(1732); +emit_16(1798); +emit_16(1731); +emit_16(1798); +emit_16(1732); +emit_16(1799); +emit_16(1733); +emit_16(1799); +emit_16(1732); +emit_16(1799); +emit_16(1733); +emit_16(1800); +emit_16(1734); +emit_16(1800); +emit_16(1733); +emit_16(1800); +emit_16(1734); +emit_16(1801); +emit_16(1735); +emit_16(1801); +emit_16(1734); +emit_16(1801); +emit_16(1735); +emit_16(1802); +emit_16(1736); +emit_16(1802); +emit_16(1735); +emit_16(1802); +emit_16(1736); +emit_16(1803); +emit_16(1737); +emit_16(1803); +emit_16(1736); +emit_16(1803); +emit_16(1737); +emit_16(1804); +emit_16(1738); +emit_16(1804); +emit_16(1737); +emit_16(1804); +emit_16(1738); +emit_16(1805); +emit_16(1739); +emit_16(1805); +emit_16(1738); +emit_16(1805); +emit_16(1739); +emit_16(1806); +emit_16(1740); +emit_16(1806); +emit_16(1739); +emit_16(1806); +emit_16(1740); +emit_16(1807); +emit_16(1741); +emit_16(1807); +emit_16(1740); +emit_16(1807); +emit_16(1741); +emit_16(1808); +emit_16(1742); +emit_16(1808); +emit_16(1741); +emit_16(1808); +emit_16(1742); +emit_16(1809); +emit_16(1743); +emit_16(1809); +emit_16(1742); +emit_16(1809); +emit_16(1743); +emit_16(1810); +emit_16(1744); +emit_16(1810); +emit_16(1743); +emit_16(1810); +emit_16(1744); +emit_16(1811); +emit_16(1745); +emit_16(1811); +emit_16(1744); +emit_16(1811); +emit_16(1745); +emit_16(1812); +emit_16(1746); +emit_16(1812); +emit_16(1745); +emit_16(1812); +emit_16(1746); +emit_16(1813); +emit_16(1747); +emit_16(1813); +emit_16(1746); +emit_16(1813); +emit_16(1747); +emit_16(1814); +emit_16(1748); +emit_16(1814); +emit_16(1747); +emit_16(1814); +emit_16(1748); +emit_16(1815); +emit_16(1749); +emit_16(1815); +emit_16(1748); +emit_16(1815); +emit_16(1749); +emit_16(1816); +emit_16(1750); +emit_16(1816); +emit_16(1749); +emit_16(1816); +emit_16(1750); +emit_16(1817); +emit_16(1751); +emit_16(1817); +emit_16(1750); +emit_16(1817); +emit_16(1751); +emit_16(1818); +emit_16(1752); +emit_16(1818); +emit_16(1751); +emit_16(1818); +emit_16(1752); +emit_16(1819); +emit_16(1753); +emit_16(1819); +emit_16(1752); +emit_16(1819); +emit_16(1753); +emit_16(1820); +emit_16(1754); +emit_16(1820); +emit_16(1753); +emit_16(1820); +emit_16(1754); +emit_16(1821); +emit_16(1755); +emit_16(1821); +emit_16(1754); +emit_16(1821); +emit_16(1755); +emit_16(1822); +emit_16(1756); +emit_16(1822); +emit_16(1755); +emit_16(1822); +emit_16(1756); +emit_16(1823); +emit_16(1757); +emit_16(1823); +emit_16(1756); +emit_16(1823); +emit_16(1757); +emit_16(1824); +emit_16(1758); +emit_16(1824); +emit_16(1757); +emit_16(1824); +emit_16(1758); +emit_16(1825); +emit_16(1759); +emit_16(1825); +emit_16(1758); +emit_16(1825); +emit_16(1759); +emit_16(1826); +emit_16(1760); +emit_16(1826); +emit_16(1759); +emit_16(1826); +emit_16(1760); +emit_16(1827); +emit_16(1761); +emit_16(1827); +emit_16(1760); +emit_16(1827); +emit_16(1761); +emit_16(1828); +emit_16(1762); +emit_16(1828); +emit_16(1761); +emit_16(1828); +emit_16(1762); +emit_16(1829); +emit_16(1763); +emit_16(1829); +emit_16(1762); +emit_16(1829); +emit_16(1763); +emit_16(1830); +emit_16(1764); +emit_16(1830); +emit_16(1763); +emit_16(1830); +emit_16(1764); +emit_16(1831); +emit_16(1765); +emit_16(1831); +emit_16(1764); +emit_16(1831); +emit_16(1765); +emit_16(1832); +emit_16(1766); +emit_16(1832); +emit_16(1765); +emit_16(1832); +emit_16(1766); +emit_16(1833); +emit_16(1767); +emit_16(1833); +emit_16(1766); +emit_16(1833); +emit_16(1767); +emit_16(1834); +emit_16(1768); +emit_16(1834); +emit_16(1767); +emit_16(1834); +emit_16(1768); +emit_16(1835); +emit_16(1769); +emit_16(1835); +emit_16(1768); +emit_16(1835); +emit_16(1769); +emit_16(1836); +emit_16(1770); +emit_16(1836); +emit_16(1769); +emit_16(1836); +emit_16(1770); +emit_16(1837); +emit_16(1771); +emit_16(1837); +emit_16(1770); +emit_16(1837); +emit_16(1771); +emit_16(1838); +emit_16(1772); +emit_16(1838); +emit_16(1771); +emit_16(1838); +emit_16(1772); +emit_16(1839); +emit_16(1773); +emit_16(1839); +emit_16(1772); +emit_16(1839); +emit_16(1773); +emit_16(1840); +emit_16(1774); +emit_16(1840); +emit_16(1773); +emit_16(1840); +emit_16(1774); +emit_16(1841); +emit_16(1775); +emit_16(1841); +emit_16(1774); +emit_16(1841); +emit_16(1775); +emit_16(1842); +emit_16(1776); +emit_16(1842); +emit_16(1775); +emit_16(1842); +emit_16(1776); +emit_16(1843); +emit_16(1777); +emit_16(1843); +emit_16(1776); +emit_16(1843); +emit_16(1777); +emit_16(1844); +emit_16(1778); +emit_16(1844); +emit_16(1777); +emit_16(1844); +emit_16(1778); +emit_16(1845); +emit_16(1779); +emit_16(1845); +emit_16(1778); +emit_16(1845); +emit_16(1779); +emit_16(1846); +emit_16(1780); +emit_16(1846); +emit_16(1779); +emit_16(1846); +emit_16(1780); +emit_16(1847); +emit_16(1781); +emit_16(1847); +emit_16(1780); +emit_16(1848); +emit_16(1782); +emit_16(1849); +emit_16(1783); +emit_16(1849); +emit_16(1782); +emit_16(1849); +emit_16(1783); +emit_16(1850); +emit_16(1784); +emit_16(1850); +emit_16(1783); +emit_16(1850); +emit_16(1784); +emit_16(1851); +emit_16(1785); +emit_16(1851); +emit_16(1784); +emit_16(1851); +emit_16(1785); +emit_16(1852); +emit_16(1786); +emit_16(1852); +emit_16(1785); +emit_16(1852); +emit_16(1786); +emit_16(1853); +emit_16(1787); +emit_16(1853); +emit_16(1786); +emit_16(1853); +emit_16(1787); +emit_16(1854); +emit_16(1788); +emit_16(1854); +emit_16(1787); +emit_16(1854); +emit_16(1788); +emit_16(1855); +emit_16(1789); +emit_16(1855); +emit_16(1788); +emit_16(1855); +emit_16(1789); +emit_16(1856); +emit_16(1790); +emit_16(1856); +emit_16(1789); +emit_16(1856); +emit_16(1790); +emit_16(1857); +emit_16(1791); +emit_16(1857); +emit_16(1790); +emit_16(1857); +emit_16(1791); +emit_16(1858); +emit_16(1792); +emit_16(1858); +emit_16(1791); +emit_16(1858); +emit_16(1792); +emit_16(1859); +emit_16(1793); +emit_16(1859); +emit_16(1792); +emit_16(1859); +emit_16(1793); +emit_16(1860); +emit_16(1794); +emit_16(1860); +emit_16(1793); +emit_16(1860); +emit_16(1794); +emit_16(1861); +emit_16(1795); +emit_16(1861); +emit_16(1794); +emit_16(1861); +emit_16(1795); +emit_16(1862); +emit_16(1796); +emit_16(1862); +emit_16(1795); +emit_16(1862); +emit_16(1796); +emit_16(1863); +emit_16(1797); +emit_16(1863); +emit_16(1796); +emit_16(1863); +emit_16(1797); +emit_16(1864); +emit_16(1798); +emit_16(1864); +emit_16(1797); +emit_16(1864); +emit_16(1798); +emit_16(1865); +emit_16(1799); +emit_16(1865); +emit_16(1798); +emit_16(1865); +emit_16(1799); +emit_16(1866); +emit_16(1800); +emit_16(1866); +emit_16(1799); +emit_16(1866); +emit_16(1800); +emit_16(1867); +emit_16(1801); +emit_16(1867); +emit_16(1800); +emit_16(1867); +emit_16(1801); +emit_16(1868); +emit_16(1802); +emit_16(1868); +emit_16(1801); +emit_16(1868); +emit_16(1802); +emit_16(1869); +emit_16(1803); +emit_16(1869); +emit_16(1802); +emit_16(1869); +emit_16(1803); +emit_16(1870); +emit_16(1804); +emit_16(1870); +emit_16(1803); +emit_16(1870); +emit_16(1804); +emit_16(1871); +emit_16(1805); +emit_16(1871); +emit_16(1804); +emit_16(1871); +emit_16(1805); +emit_16(1872); +emit_16(1806); +emit_16(1872); +emit_16(1805); +emit_16(1872); +emit_16(1806); +emit_16(1873); +emit_16(1807); +emit_16(1873); +emit_16(1806); +emit_16(1873); +emit_16(1807); +emit_16(1874); +emit_16(1808); +emit_16(1874); +emit_16(1807); +emit_16(1874); +emit_16(1808); +emit_16(1875); +emit_16(1809); +emit_16(1875); +emit_16(1808); +emit_16(1875); +emit_16(1809); +emit_16(1876); +emit_16(1810); +emit_16(1876); +emit_16(1809); +emit_16(1876); +emit_16(1810); +emit_16(1877); +emit_16(1811); +emit_16(1877); +emit_16(1810); +emit_16(1877); +emit_16(1811); +emit_16(1878); +emit_16(1812); +emit_16(1878); +emit_16(1811); +emit_16(1878); +emit_16(1812); +emit_16(1879); +emit_16(1813); +emit_16(1879); +emit_16(1812); +emit_16(1879); +emit_16(1813); +emit_16(1880); +emit_16(1814); +emit_16(1880); +emit_16(1813); +emit_16(1880); +emit_16(1814); +emit_16(1881); +emit_16(1815); +emit_16(1881); +emit_16(1814); +emit_16(1881); +emit_16(1815); +emit_16(1882); +emit_16(1816); +emit_16(1882); +emit_16(1815); +emit_16(1882); +emit_16(1816); +emit_16(1883); +emit_16(1817); +emit_16(1883); +emit_16(1816); +emit_16(1883); +emit_16(1817); +emit_16(1884); +emit_16(1818); +emit_16(1884); +emit_16(1817); +emit_16(1884); +emit_16(1818); +emit_16(1885); +emit_16(1819); +emit_16(1885); +emit_16(1818); +emit_16(1885); +emit_16(1819); +emit_16(1886); +emit_16(1820); +emit_16(1886); +emit_16(1819); +emit_16(1886); +emit_16(1820); +emit_16(1887); +emit_16(1821); +emit_16(1887); +emit_16(1820); +emit_16(1887); +emit_16(1821); +emit_16(1888); +emit_16(1822); +emit_16(1888); +emit_16(1821); +emit_16(1888); +emit_16(1822); +emit_16(1889); +emit_16(1823); +emit_16(1889); +emit_16(1822); +emit_16(1889); +emit_16(1823); +emit_16(1890); +emit_16(1824); +emit_16(1890); +emit_16(1823); +emit_16(1890); +emit_16(1824); +emit_16(1891); +emit_16(1825); +emit_16(1891); +emit_16(1824); +emit_16(1891); +emit_16(1825); +emit_16(1892); +emit_16(1826); +emit_16(1892); +emit_16(1825); +emit_16(1892); +emit_16(1826); +emit_16(1893); +emit_16(1827); +emit_16(1893); +emit_16(1826); +emit_16(1893); +emit_16(1827); +emit_16(1894); +emit_16(1828); +emit_16(1894); +emit_16(1827); +emit_16(1894); +emit_16(1828); +emit_16(1895); +emit_16(1829); +emit_16(1895); +emit_16(1828); +emit_16(1895); +emit_16(1829); +emit_16(1896); +emit_16(1830); +emit_16(1896); +emit_16(1829); +emit_16(1896); +emit_16(1830); +emit_16(1897); +emit_16(1831); +emit_16(1897); +emit_16(1830); +emit_16(1897); +emit_16(1831); +emit_16(1898); +emit_16(1832); +emit_16(1898); +emit_16(1831); +emit_16(1898); +emit_16(1832); +emit_16(1899); +emit_16(1833); +emit_16(1899); +emit_16(1832); +emit_16(1899); +emit_16(1833); +emit_16(1900); +emit_16(1834); +emit_16(1900); +emit_16(1833); +emit_16(1900); +emit_16(1834); +emit_16(1901); +emit_16(1835); +emit_16(1901); +emit_16(1834); +emit_16(1901); +emit_16(1835); +emit_16(1902); +emit_16(1836); +emit_16(1902); +emit_16(1835); +emit_16(1902); +emit_16(1836); +emit_16(1903); +emit_16(1837); +emit_16(1903); +emit_16(1836); +emit_16(1903); +emit_16(1837); +emit_16(1904); +emit_16(1838); +emit_16(1904); +emit_16(1837); +emit_16(1904); +emit_16(1838); +emit_16(1905); +emit_16(1839); +emit_16(1905); +emit_16(1838); +emit_16(1905); +emit_16(1839); +emit_16(1906); +emit_16(1840); +emit_16(1906); +emit_16(1839); +emit_16(1906); +emit_16(1840); +emit_16(1907); +emit_16(1841); +emit_16(1907); +emit_16(1840); +emit_16(1907); +emit_16(1841); +emit_16(1908); +emit_16(1842); +emit_16(1908); +emit_16(1841); +emit_16(1908); +emit_16(1842); +emit_16(1909); +emit_16(1843); +emit_16(1909); +emit_16(1842); +emit_16(1909); +emit_16(1843); +emit_16(1910); +emit_16(1844); +emit_16(1910); +emit_16(1843); +emit_16(1910); +emit_16(1844); +emit_16(1911); +emit_16(1845); +emit_16(1911); +emit_16(1844); +emit_16(1911); +emit_16(1845); +emit_16(1912); +emit_16(1846); +emit_16(1912); +emit_16(1845); +emit_16(1912); +emit_16(1846); +emit_16(1913); +emit_16(1847); +emit_16(1913); +emit_16(1846); +emit_16(1914); +emit_16(1848); +emit_16(1915); +emit_16(1849); +emit_16(1915); +emit_16(1848); +emit_16(1915); +emit_16(1849); +emit_16(1916); +emit_16(1850); +emit_16(1916); +emit_16(1849); +emit_16(1916); +emit_16(1850); +emit_16(1917); +emit_16(1851); +emit_16(1917); +emit_16(1850); +emit_16(1917); +emit_16(1851); +emit_16(1918); +emit_16(1852); +emit_16(1918); +emit_16(1851); +emit_16(1918); +emit_16(1852); +emit_16(1919); +emit_16(1853); +emit_16(1919); +emit_16(1852); +emit_16(1919); +emit_16(1853); +emit_16(1920); +emit_16(1854); +emit_16(1920); +emit_16(1853); +emit_16(1920); +emit_16(1854); +emit_16(1921); +emit_16(1855); +emit_16(1921); +emit_16(1854); +emit_16(1921); +emit_16(1855); +emit_16(1922); +emit_16(1856); +emit_16(1922); +emit_16(1855); +emit_16(1922); +emit_16(1856); +emit_16(1923); +emit_16(1857); +emit_16(1923); +emit_16(1856); +emit_16(1923); +emit_16(1857); +emit_16(1924); +emit_16(1858); +emit_16(1924); +emit_16(1857); +emit_16(1924); +emit_16(1858); +emit_16(1925); +emit_16(1859); +emit_16(1925); +emit_16(1858); +emit_16(1925); +emit_16(1859); +emit_16(1926); +emit_16(1860); +emit_16(1926); +emit_16(1859); +emit_16(1926); +emit_16(1860); +emit_16(1927); +emit_16(1861); +emit_16(1927); +emit_16(1860); +emit_16(1927); +emit_16(1861); +emit_16(1928); +emit_16(1862); +emit_16(1928); +emit_16(1861); +emit_16(1928); +emit_16(1862); +emit_16(1929); +emit_16(1863); +emit_16(1929); +emit_16(1862); +emit_16(1929); +emit_16(1863); +emit_16(1930); +emit_16(1864); +emit_16(1930); +emit_16(1863); +emit_16(1930); +emit_16(1864); +emit_16(1931); +emit_16(1865); +emit_16(1931); +emit_16(1864); +emit_16(1931); +emit_16(1865); +emit_16(1932); +emit_16(1866); +emit_16(1932); +emit_16(1865); +emit_16(1932); +emit_16(1866); +emit_16(1933); +emit_16(1867); +emit_16(1933); +emit_16(1866); +emit_16(1933); +emit_16(1867); +emit_16(1934); +emit_16(1868); +emit_16(1934); +emit_16(1867); +emit_16(1934); +emit_16(1868); +emit_16(1935); +emit_16(1869); +emit_16(1935); +emit_16(1868); +emit_16(1935); +emit_16(1869); +emit_16(1936); +emit_16(1870); +emit_16(1936); +emit_16(1869); +emit_16(1936); +emit_16(1870); +emit_16(1937); +emit_16(1871); +emit_16(1937); +emit_16(1870); +emit_16(1937); +emit_16(1871); +emit_16(1938); +emit_16(1872); +emit_16(1938); +emit_16(1871); +emit_16(1938); +emit_16(1872); +emit_16(1939); +emit_16(1873); +emit_16(1939); +emit_16(1872); +emit_16(1939); +emit_16(1873); +emit_16(1940); +emit_16(1874); +emit_16(1940); +emit_16(1873); +emit_16(1940); +emit_16(1874); +emit_16(1941); +emit_16(1875); +emit_16(1941); +emit_16(1874); +emit_16(1941); +emit_16(1875); +emit_16(1942); +emit_16(1876); +emit_16(1942); +emit_16(1875); +emit_16(1942); +emit_16(1876); +emit_16(1943); +emit_16(1877); +emit_16(1943); +emit_16(1876); +emit_16(1943); +emit_16(1877); +emit_16(1944); +emit_16(1878); +emit_16(1944); +emit_16(1877); +emit_16(1944); +emit_16(1878); +emit_16(1945); +emit_16(1879); +emit_16(1945); +emit_16(1878); +emit_16(1945); +emit_16(1879); +emit_16(1946); +emit_16(1880); +emit_16(1946); +emit_16(1879); +emit_16(1946); +emit_16(1880); +emit_16(1947); +emit_16(1881); +emit_16(1947); +emit_16(1880); +emit_16(1947); +emit_16(1881); +emit_16(1948); +emit_16(1882); +emit_16(1948); +emit_16(1881); +emit_16(1948); +emit_16(1882); +emit_16(1949); +emit_16(1883); +emit_16(1949); +emit_16(1882); +emit_16(1949); +emit_16(1883); +emit_16(1950); +emit_16(1884); +emit_16(1950); +emit_16(1883); +emit_16(1950); +emit_16(1884); +emit_16(1951); +emit_16(1885); +emit_16(1951); +emit_16(1884); +emit_16(1951); +emit_16(1885); +emit_16(1952); +emit_16(1886); +emit_16(1952); +emit_16(1885); +emit_16(1952); +emit_16(1886); +emit_16(1953); +emit_16(1887); +emit_16(1953); +emit_16(1886); +emit_16(1953); +emit_16(1887); +emit_16(1954); +emit_16(1888); +emit_16(1954); +emit_16(1887); +emit_16(1954); +emit_16(1888); +emit_16(1955); +emit_16(1889); +emit_16(1955); +emit_16(1888); +emit_16(1955); +emit_16(1889); +emit_16(1956); +emit_16(1890); +emit_16(1956); +emit_16(1889); +emit_16(1956); +emit_16(1890); +emit_16(1957); +emit_16(1891); +emit_16(1957); +emit_16(1890); +emit_16(1957); +emit_16(1891); +emit_16(1958); +emit_16(1892); +emit_16(1958); +emit_16(1891); +emit_16(1958); +emit_16(1892); +emit_16(1959); +emit_16(1893); +emit_16(1959); +emit_16(1892); +emit_16(1959); +emit_16(1893); +emit_16(1960); +emit_16(1894); +emit_16(1960); +emit_16(1893); +emit_16(1960); +emit_16(1894); +emit_16(1961); +emit_16(1895); +emit_16(1961); +emit_16(1894); +emit_16(1961); +emit_16(1895); +emit_16(1962); +emit_16(1896); +emit_16(1962); +emit_16(1895); +emit_16(1962); +emit_16(1896); +emit_16(1963); +emit_16(1897); +emit_16(1963); +emit_16(1896); +emit_16(1963); +emit_16(1897); +emit_16(1964); +emit_16(1898); +emit_16(1964); +emit_16(1897); +emit_16(1964); +emit_16(1898); +emit_16(1965); +emit_16(1899); +emit_16(1965); +emit_16(1898); +emit_16(1965); +emit_16(1899); +emit_16(1966); +emit_16(1900); +emit_16(1966); +emit_16(1899); +emit_16(1966); +emit_16(1900); +emit_16(1967); +emit_16(1901); +emit_16(1967); +emit_16(1900); +emit_16(1967); +emit_16(1901); +emit_16(1968); +emit_16(1902); +emit_16(1968); +emit_16(1901); +emit_16(1968); +emit_16(1902); +emit_16(1969); +emit_16(1903); +emit_16(1969); +emit_16(1902); +emit_16(1969); +emit_16(1903); +emit_16(1970); +emit_16(1904); +emit_16(1970); +emit_16(1903); +emit_16(1970); +emit_16(1904); +emit_16(1971); +emit_16(1905); +emit_16(1971); +emit_16(1904); +emit_16(1971); +emit_16(1905); +emit_16(1972); +emit_16(1906); +emit_16(1972); +emit_16(1905); +emit_16(1972); +emit_16(1906); +emit_16(1973); +emit_16(1907); +emit_16(1973); +emit_16(1906); +emit_16(1973); +emit_16(1907); +emit_16(1974); +emit_16(1908); +emit_16(1974); +emit_16(1907); +emit_16(1974); +emit_16(1908); +emit_16(1975); +emit_16(1909); +emit_16(1975); +emit_16(1908); +emit_16(1975); +emit_16(1909); +emit_16(1976); +emit_16(1910); +emit_16(1976); +emit_16(1909); +emit_16(1976); +emit_16(1910); +emit_16(1977); +emit_16(1911); +emit_16(1977); +emit_16(1910); +emit_16(1977); +emit_16(1911); +emit_16(1978); +emit_16(1912); +emit_16(1978); +emit_16(1911); +emit_16(1978); +emit_16(1912); +emit_16(1979); +emit_16(1913); +emit_16(1979); +emit_16(1912); +emit_16(1980); +emit_16(1914); +emit_16(1981); +emit_16(1915); +emit_16(1981); +emit_16(1914); +emit_16(1981); +emit_16(1915); +emit_16(1982); +emit_16(1916); +emit_16(1982); +emit_16(1915); +emit_16(1982); +emit_16(1916); +emit_16(1983); +emit_16(1917); +emit_16(1983); +emit_16(1916); +emit_16(1983); +emit_16(1917); +emit_16(1984); +emit_16(1918); +emit_16(1984); +emit_16(1917); +emit_16(1984); +emit_16(1918); +emit_16(1985); +emit_16(1919); +emit_16(1985); +emit_16(1918); +emit_16(1985); +emit_16(1919); +emit_16(1986); +emit_16(1920); +emit_16(1986); +emit_16(1919); +emit_16(1986); +emit_16(1920); +emit_16(1987); +emit_16(1921); +emit_16(1987); +emit_16(1920); +emit_16(1987); +emit_16(1921); +emit_16(1988); +emit_16(1922); +emit_16(1988); +emit_16(1921); +emit_16(1988); +emit_16(1922); +emit_16(1989); +emit_16(1923); +emit_16(1989); +emit_16(1922); +emit_16(1989); +emit_16(1923); +emit_16(1990); +emit_16(1924); +emit_16(1990); +emit_16(1923); +emit_16(1990); +emit_16(1924); +emit_16(1991); +emit_16(1925); +emit_16(1991); +emit_16(1924); +emit_16(1991); +emit_16(1925); +emit_16(1992); +emit_16(1926); +emit_16(1992); +emit_16(1925); +emit_16(1992); +emit_16(1926); +emit_16(1993); +emit_16(1927); +emit_16(1993); +emit_16(1926); +emit_16(1993); +emit_16(1927); +emit_16(1994); +emit_16(1928); +emit_16(1994); +emit_16(1927); +emit_16(1994); +emit_16(1928); +emit_16(1995); +emit_16(1929); +emit_16(1995); +emit_16(1928); +emit_16(1995); +emit_16(1929); +emit_16(1996); +emit_16(1930); +emit_16(1996); +emit_16(1929); +emit_16(1996); +emit_16(1930); +emit_16(1997); +emit_16(1931); +emit_16(1997); +emit_16(1930); +emit_16(1997); +emit_16(1931); +emit_16(1998); +emit_16(1932); +emit_16(1998); +emit_16(1931); +emit_16(1998); +emit_16(1932); +emit_16(1999); +emit_16(1933); +emit_16(1999); +emit_16(1932); +emit_16(1999); +emit_16(1933); +emit_16(2000); +emit_16(1934); +emit_16(2000); +emit_16(1933); +emit_16(2000); +emit_16(1934); +emit_16(2001); +emit_16(1935); +emit_16(2001); +emit_16(1934); +emit_16(2001); +emit_16(1935); +emit_16(2002); +emit_16(1936); +emit_16(2002); +emit_16(1935); +emit_16(2002); +emit_16(1936); +emit_16(2003); +emit_16(1937); +emit_16(2003); +emit_16(1936); +emit_16(2003); +emit_16(1937); +emit_16(2004); +emit_16(1938); +emit_16(2004); +emit_16(1937); +emit_16(2004); +emit_16(1938); +emit_16(2005); +emit_16(1939); +emit_16(2005); +emit_16(1938); +emit_16(2005); +emit_16(1939); +emit_16(2006); +emit_16(1940); +emit_16(2006); +emit_16(1939); +emit_16(2006); +emit_16(1940); +emit_16(2007); +emit_16(1941); +emit_16(2007); +emit_16(1940); +emit_16(2007); +emit_16(1941); +emit_16(2008); +emit_16(1942); +emit_16(2008); +emit_16(1941); +emit_16(2008); +emit_16(1942); +emit_16(2009); +emit_16(1943); +emit_16(2009); +emit_16(1942); +emit_16(2009); +emit_16(1943); +emit_16(2010); +emit_16(1944); +emit_16(2010); +emit_16(1943); +emit_16(2010); +emit_16(1944); +emit_16(2011); +emit_16(1945); +emit_16(2011); +emit_16(1944); +emit_16(2011); +emit_16(1945); +emit_16(2012); +emit_16(1946); +emit_16(2012); +emit_16(1945); +emit_16(2012); +emit_16(1946); +emit_16(2013); +emit_16(1947); +emit_16(2013); +emit_16(1946); +emit_16(2013); +emit_16(1947); +emit_16(2014); +emit_16(1948); +emit_16(2014); +emit_16(1947); +emit_16(2014); +emit_16(1948); +emit_16(2015); +emit_16(1949); +emit_16(2015); +emit_16(1948); +emit_16(2015); +emit_16(1949); +emit_16(2016); +emit_16(1950); +emit_16(2016); +emit_16(1949); +emit_16(2016); +emit_16(1950); +emit_16(2017); +emit_16(1951); +emit_16(2017); +emit_16(1950); +emit_16(2017); +emit_16(1951); +emit_16(2018); +emit_16(1952); +emit_16(2018); +emit_16(1951); +emit_16(2018); +emit_16(1952); +emit_16(2019); +emit_16(1953); +emit_16(2019); +emit_16(1952); +emit_16(2019); +emit_16(1953); +emit_16(2020); +emit_16(1954); +emit_16(2020); +emit_16(1953); +emit_16(2020); +emit_16(1954); +emit_16(2021); +emit_16(1955); +emit_16(2021); +emit_16(1954); +emit_16(2021); +emit_16(1955); +emit_16(2022); +emit_16(1956); +emit_16(2022); +emit_16(1955); +emit_16(2022); +emit_16(1956); +emit_16(2023); +emit_16(1957); +emit_16(2023); +emit_16(1956); +emit_16(2023); +emit_16(1957); +emit_16(2024); +emit_16(1958); +emit_16(2024); +emit_16(1957); +emit_16(2024); +emit_16(1958); +emit_16(2025); +emit_16(1959); +emit_16(2025); +emit_16(1958); +emit_16(2025); +emit_16(1959); +emit_16(2026); +emit_16(1960); +emit_16(2026); +emit_16(1959); +emit_16(2026); +emit_16(1960); +emit_16(2027); +emit_16(1961); +emit_16(2027); +emit_16(1960); +emit_16(2027); +emit_16(1961); +emit_16(2028); +emit_16(1962); +emit_16(2028); +emit_16(1961); +emit_16(2028); +emit_16(1962); +emit_16(2029); +emit_16(1963); +emit_16(2029); +emit_16(1962); +emit_16(2029); +emit_16(1963); +emit_16(2030); +emit_16(1964); +emit_16(2030); +emit_16(1963); +emit_16(2030); +emit_16(1964); +emit_16(2031); +emit_16(1965); +emit_16(2031); +emit_16(1964); +emit_16(2031); +emit_16(1965); +emit_16(2032); +emit_16(1966); +emit_16(2032); +emit_16(1965); +emit_16(2032); +emit_16(1966); +emit_16(2033); +emit_16(1967); +emit_16(2033); +emit_16(1966); +emit_16(2033); +emit_16(1967); +emit_16(2034); +emit_16(1968); +emit_16(2034); +emit_16(1967); +emit_16(2034); +emit_16(1968); +emit_16(2035); +emit_16(1969); +emit_16(2035); +emit_16(1968); +emit_16(2035); +emit_16(1969); +emit_16(2036); +emit_16(1970); +emit_16(2036); +emit_16(1969); +emit_16(2036); +emit_16(1970); +emit_16(2037); +emit_16(1971); +emit_16(2037); +emit_16(1970); +emit_16(2037); +emit_16(1971); +emit_16(2038); +emit_16(1972); +emit_16(2038); +emit_16(1971); +emit_16(2038); +emit_16(1972); +emit_16(2039); +emit_16(1973); +emit_16(2039); +emit_16(1972); +emit_16(2039); +emit_16(1973); +emit_16(2040); +emit_16(1974); +emit_16(2040); +emit_16(1973); +emit_16(2040); +emit_16(1974); +emit_16(2041); +emit_16(1975); +emit_16(2041); +emit_16(1974); +emit_16(2041); +emit_16(1975); +emit_16(2042); +emit_16(1976); +emit_16(2042); +emit_16(1975); +emit_16(2042); +emit_16(1976); +emit_16(2043); +emit_16(1977); +emit_16(2043); +emit_16(1976); +emit_16(2043); +emit_16(1977); +emit_16(2044); +emit_16(1978); +emit_16(2044); +emit_16(1977); +emit_16(2044); +emit_16(1978); +emit_16(2045); +emit_16(1979); +emit_16(2045); +emit_16(1978); +emit_16(2046); +emit_16(1980); +emit_16(2047); +emit_16(1981); +emit_16(2047); +emit_16(1980); +emit_16(2047); +emit_16(1981); +emit_16(2048); +emit_16(1982); +emit_16(2048); +emit_16(1981); +emit_16(2048); +emit_16(1982); +emit_16(2049); +emit_16(1983); +emit_16(2049); +emit_16(1982); +emit_16(2049); +emit_16(1983); +emit_16(2050); +emit_16(1984); +emit_16(2050); +emit_16(1983); +emit_16(2050); +emit_16(1984); +emit_16(2051); +emit_16(1985); +emit_16(2051); +emit_16(1984); +emit_16(2051); +emit_16(1985); +emit_16(2052); +emit_16(1986); +emit_16(2052); +emit_16(1985); +emit_16(2052); +emit_16(1986); +emit_16(2053); +emit_16(1987); +emit_16(2053); +emit_16(1986); +emit_16(2053); +emit_16(1987); +emit_16(2054); +emit_16(1988); +emit_16(2054); +emit_16(1987); +emit_16(2054); +emit_16(1988); +emit_16(2055); +emit_16(1989); +emit_16(2055); +emit_16(1988); +emit_16(2055); +emit_16(1989); +emit_16(2056); +emit_16(1990); +emit_16(2056); +emit_16(1989); +emit_16(2056); +emit_16(1990); +emit_16(2057); +emit_16(1991); +emit_16(2057); +emit_16(1990); +emit_16(2057); +emit_16(1991); +emit_16(2058); +emit_16(1992); +emit_16(2058); +emit_16(1991); +emit_16(2058); +emit_16(1992); +emit_16(2059); +emit_16(1993); +emit_16(2059); +emit_16(1992); +emit_16(2059); +emit_16(1993); +emit_16(2060); +emit_16(1994); +emit_16(2060); +emit_16(1993); +emit_16(2060); +emit_16(1994); +emit_16(2061); +emit_16(1995); +emit_16(2061); +emit_16(1994); +emit_16(2061); +emit_16(1995); +emit_16(2062); +emit_16(1996); +emit_16(2062); +emit_16(1995); +emit_16(2062); +emit_16(1996); +emit_16(2063); +emit_16(1997); +emit_16(2063); +emit_16(1996); +emit_16(2063); +emit_16(1997); +emit_16(2064); +emit_16(1998); +emit_16(2064); +emit_16(1997); +emit_16(2064); +emit_16(1998); +emit_16(2065); +emit_16(1999); +emit_16(2065); +emit_16(1998); +emit_16(2065); +emit_16(1999); +emit_16(2066); +emit_16(2000); +emit_16(2066); +emit_16(1999); +emit_16(2066); +emit_16(2000); +emit_16(2067); +emit_16(2001); +emit_16(2067); +emit_16(2000); +emit_16(2067); +emit_16(2001); +emit_16(2068); +emit_16(2002); +emit_16(2068); +emit_16(2001); +emit_16(2068); +emit_16(2002); +emit_16(2069); +emit_16(2003); +emit_16(2069); +emit_16(2002); +emit_16(2069); +emit_16(2003); +emit_16(2070); +emit_16(2004); +emit_16(2070); +emit_16(2003); +emit_16(2070); +emit_16(2004); +emit_16(2071); +emit_16(2005); +emit_16(2071); +emit_16(2004); +emit_16(2071); +emit_16(2005); +emit_16(2072); +emit_16(2006); +emit_16(2072); +emit_16(2005); +emit_16(2072); +emit_16(2006); +emit_16(2073); +emit_16(2007); +emit_16(2073); +emit_16(2006); +emit_16(2073); +emit_16(2007); +emit_16(2074); +emit_16(2008); +emit_16(2074); +emit_16(2007); +emit_16(2074); +emit_16(2008); +emit_16(2075); +emit_16(2009); +emit_16(2075); +emit_16(2008); +emit_16(2075); +emit_16(2009); +emit_16(2076); +emit_16(2010); +emit_16(2076); +emit_16(2009); +emit_16(2076); +emit_16(2010); +emit_16(2077); +emit_16(2011); +emit_16(2077); +emit_16(2010); +emit_16(2077); +emit_16(2011); +emit_16(2078); +emit_16(2012); +emit_16(2078); +emit_16(2011); +emit_16(2078); +emit_16(2012); +emit_16(2079); +emit_16(2013); +emit_16(2079); +emit_16(2012); +emit_16(2079); +emit_16(2013); +emit_16(2080); +emit_16(2014); +emit_16(2080); +emit_16(2013); +emit_16(2080); +emit_16(2014); +emit_16(2081); +emit_16(2015); +emit_16(2081); +emit_16(2014); +emit_16(2081); +emit_16(2015); +emit_16(2082); +emit_16(2016); +emit_16(2082); +emit_16(2015); +emit_16(2082); +emit_16(2016); +emit_16(2083); +emit_16(2017); +emit_16(2083); +emit_16(2016); +emit_16(2083); +emit_16(2017); +emit_16(2084); +emit_16(2018); +emit_16(2084); +emit_16(2017); +emit_16(2084); +emit_16(2018); +emit_16(2085); +emit_16(2019); +emit_16(2085); +emit_16(2018); +emit_16(2085); +emit_16(2019); +emit_16(2086); +emit_16(2020); +emit_16(2086); +emit_16(2019); +emit_16(2086); +emit_16(2020); +emit_16(2087); +emit_16(2021); +emit_16(2087); +emit_16(2020); +emit_16(2087); +emit_16(2021); +emit_16(2088); +emit_16(2022); +emit_16(2088); +emit_16(2021); +emit_16(2088); +emit_16(2022); +emit_16(2089); +emit_16(2023); +emit_16(2089); +emit_16(2022); +emit_16(2089); +emit_16(2023); +emit_16(2090); +emit_16(2024); +emit_16(2090); +emit_16(2023); +emit_16(2090); +emit_16(2024); +emit_16(2091); +emit_16(2025); +emit_16(2091); +emit_16(2024); +emit_16(2091); +emit_16(2025); +emit_16(2092); +emit_16(2026); +emit_16(2092); +emit_16(2025); +emit_16(2092); +emit_16(2026); +emit_16(2093); +emit_16(2027); +emit_16(2093); +emit_16(2026); +emit_16(2093); +emit_16(2027); +emit_16(2094); +emit_16(2028); +emit_16(2094); +emit_16(2027); +emit_16(2094); +emit_16(2028); +emit_16(2095); +emit_16(2029); +emit_16(2095); +emit_16(2028); +emit_16(2095); +emit_16(2029); +emit_16(2096); +emit_16(2030); +emit_16(2096); +emit_16(2029); +emit_16(2096); +emit_16(2030); +emit_16(2097); +emit_16(2031); +emit_16(2097); +emit_16(2030); +emit_16(2097); +emit_16(2031); +emit_16(2098); +emit_16(2032); +emit_16(2098); +emit_16(2031); +emit_16(2098); +emit_16(2032); +emit_16(2099); +emit_16(2033); +emit_16(2099); +emit_16(2032); +emit_16(2099); +emit_16(2033); +emit_16(2100); +emit_16(2034); +emit_16(2100); +emit_16(2033); +emit_16(2100); +emit_16(2034); +emit_16(2101); +emit_16(2035); +emit_16(2101); +emit_16(2034); +emit_16(2101); +emit_16(2035); +emit_16(2102); +emit_16(2036); +emit_16(2102); +emit_16(2035); +emit_16(2102); +emit_16(2036); +emit_16(2103); +emit_16(2037); +emit_16(2103); +emit_16(2036); +emit_16(2103); +emit_16(2037); +emit_16(2104); +emit_16(2038); +emit_16(2104); +emit_16(2037); +emit_16(2104); +emit_16(2038); +emit_16(2105); +emit_16(2039); +emit_16(2105); +emit_16(2038); +emit_16(2105); +emit_16(2039); +emit_16(2106); +emit_16(2040); +emit_16(2106); +emit_16(2039); +emit_16(2106); +emit_16(2040); +emit_16(2107); +emit_16(2041); +emit_16(2107); +emit_16(2040); +emit_16(2107); +emit_16(2041); +emit_16(2108); +emit_16(2042); +emit_16(2108); +emit_16(2041); +emit_16(2108); +emit_16(2042); +emit_16(2109); +emit_16(2043); +emit_16(2109); +emit_16(2042); +emit_16(2109); +emit_16(2043); +emit_16(2110); +emit_16(2044); +emit_16(2110); +emit_16(2043); +emit_16(2110); +emit_16(2044); +emit_16(2111); +emit_16(2045); +emit_16(2111); +emit_16(2044); +emit_16(2112); +emit_16(2046); +emit_16(2113); +emit_16(2047); +emit_16(2113); +emit_16(2046); +emit_16(2113); +emit_16(2047); +emit_16(2114); +emit_16(2048); +emit_16(2114); +emit_16(2047); +emit_16(2114); +emit_16(2048); +emit_16(2115); +emit_16(2049); +emit_16(2115); +emit_16(2048); +emit_16(2115); +emit_16(2049); +emit_16(2116); +emit_16(2050); +emit_16(2116); +emit_16(2049); +emit_16(2116); +emit_16(2050); +emit_16(2117); +emit_16(2051); +emit_16(2117); +emit_16(2050); +emit_16(2117); +emit_16(2051); +emit_16(2118); +emit_16(2052); +emit_16(2118); +emit_16(2051); +emit_16(2118); +emit_16(2052); +emit_16(2119); +emit_16(2053); +emit_16(2119); +emit_16(2052); +emit_16(2119); +emit_16(2053); +emit_16(2120); +emit_16(2054); +emit_16(2120); +emit_16(2053); +emit_16(2120); +emit_16(2054); +emit_16(2121); +emit_16(2055); +emit_16(2121); +emit_16(2054); +emit_16(2121); +emit_16(2055); +emit_16(2122); +emit_16(2056); +emit_16(2122); +emit_16(2055); +emit_16(2122); +emit_16(2056); +emit_16(2123); +emit_16(2057); +emit_16(2123); +emit_16(2056); +emit_16(2123); +emit_16(2057); +emit_16(2124); +emit_16(2058); +emit_16(2124); +emit_16(2057); +emit_16(2124); +emit_16(2058); +emit_16(2125); +emit_16(2059); +emit_16(2125); +emit_16(2058); +emit_16(2125); +emit_16(2059); +emit_16(2126); +emit_16(2060); +emit_16(2126); +emit_16(2059); +emit_16(2126); +emit_16(2060); +emit_16(2127); +emit_16(2061); +emit_16(2127); +emit_16(2060); +emit_16(2127); +emit_16(2061); +emit_16(2128); +emit_16(2062); +emit_16(2128); +emit_16(2061); +emit_16(2128); +emit_16(2062); +emit_16(2129); +emit_16(2063); +emit_16(2129); +emit_16(2062); +emit_16(2129); +emit_16(2063); +emit_16(2130); +emit_16(2064); +emit_16(2130); +emit_16(2063); +emit_16(2130); +emit_16(2064); +emit_16(2131); +emit_16(2065); +emit_16(2131); +emit_16(2064); +emit_16(2131); +emit_16(2065); +emit_16(2132); +emit_16(2066); +emit_16(2132); +emit_16(2065); +emit_16(2132); +emit_16(2066); +emit_16(2133); +emit_16(2067); +emit_16(2133); +emit_16(2066); +emit_16(2133); +emit_16(2067); +emit_16(2134); +emit_16(2068); +emit_16(2134); +emit_16(2067); +emit_16(2134); +emit_16(2068); +emit_16(2135); +emit_16(2069); +emit_16(2135); +emit_16(2068); +emit_16(2135); +emit_16(2069); +emit_16(2136); +emit_16(2070); +emit_16(2136); +emit_16(2069); +emit_16(2136); +emit_16(2070); +emit_16(2137); +emit_16(2071); +emit_16(2137); +emit_16(2070); +emit_16(2137); +emit_16(2071); +emit_16(2138); +emit_16(2072); +emit_16(2138); +emit_16(2071); +emit_16(2138); +emit_16(2072); +emit_16(2139); +emit_16(2073); +emit_16(2139); +emit_16(2072); +emit_16(2139); +emit_16(2073); +emit_16(2140); +emit_16(2074); +emit_16(2140); +emit_16(2073); +emit_16(2140); +emit_16(2074); +emit_16(2141); +emit_16(2075); +emit_16(2141); +emit_16(2074); +emit_16(2141); +emit_16(2075); +emit_16(2142); +emit_16(2076); +emit_16(2142); +emit_16(2075); +emit_16(2142); +emit_16(2076); +emit_16(2143); +emit_16(2077); +emit_16(2143); +emit_16(2076); +emit_16(2143); +emit_16(2077); +emit_16(2144); +emit_16(2078); +emit_16(2144); +emit_16(2077); +emit_16(2144); +emit_16(2078); +emit_16(2145); +emit_16(2079); +emit_16(2145); +emit_16(2078); +emit_16(2145); +emit_16(2079); +emit_16(2146); +emit_16(2080); +emit_16(2146); +emit_16(2079); +emit_16(2146); +emit_16(2080); +emit_16(2147); +emit_16(2081); +emit_16(2147); +emit_16(2080); +emit_16(2147); +emit_16(2081); +emit_16(2148); +emit_16(2082); +emit_16(2148); +emit_16(2081); +emit_16(2148); +emit_16(2082); +emit_16(2149); +emit_16(2083); +emit_16(2149); +emit_16(2082); +emit_16(2149); +emit_16(2083); +emit_16(2150); +emit_16(2084); +emit_16(2150); +emit_16(2083); +emit_16(2150); +emit_16(2084); +emit_16(2151); +emit_16(2085); +emit_16(2151); +emit_16(2084); +emit_16(2151); +emit_16(2085); +emit_16(2152); +emit_16(2086); +emit_16(2152); +emit_16(2085); +emit_16(2152); +emit_16(2086); +emit_16(2153); +emit_16(2087); +emit_16(2153); +emit_16(2086); +emit_16(2153); +emit_16(2087); +emit_16(2154); +emit_16(2088); +emit_16(2154); +emit_16(2087); +emit_16(2154); +emit_16(2088); +emit_16(2155); +emit_16(2089); +emit_16(2155); +emit_16(2088); +emit_16(2155); +emit_16(2089); +emit_16(2156); +emit_16(2090); +emit_16(2156); +emit_16(2089); +emit_16(2156); +emit_16(2090); +emit_16(2157); +emit_16(2091); +emit_16(2157); +emit_16(2090); +emit_16(2157); +emit_16(2091); +emit_16(2158); +emit_16(2092); +emit_16(2158); +emit_16(2091); +emit_16(2158); +emit_16(2092); +emit_16(2159); +emit_16(2093); +emit_16(2159); +emit_16(2092); +emit_16(2159); +emit_16(2093); +emit_16(2160); +emit_16(2094); +emit_16(2160); +emit_16(2093); +emit_16(2160); +emit_16(2094); +emit_16(2161); +emit_16(2095); +emit_16(2161); +emit_16(2094); +emit_16(2161); +emit_16(2095); +emit_16(2162); +emit_16(2096); +emit_16(2162); +emit_16(2095); +emit_16(2162); +emit_16(2096); +emit_16(2163); +emit_16(2097); +emit_16(2163); +emit_16(2096); +emit_16(2163); +emit_16(2097); +emit_16(2164); +emit_16(2098); +emit_16(2164); +emit_16(2097); +emit_16(2164); +emit_16(2098); +emit_16(2165); +emit_16(2099); +emit_16(2165); +emit_16(2098); +emit_16(2165); +emit_16(2099); +emit_16(2166); +emit_16(2100); +emit_16(2166); +emit_16(2099); +emit_16(2166); +emit_16(2100); +emit_16(2167); +emit_16(2101); +emit_16(2167); +emit_16(2100); +emit_16(2167); +emit_16(2101); +emit_16(2168); +emit_16(2102); +emit_16(2168); +emit_16(2101); +emit_16(2168); +emit_16(2102); +emit_16(2169); +emit_16(2103); +emit_16(2169); +emit_16(2102); +emit_16(2169); +emit_16(2103); +emit_16(2170); +emit_16(2104); +emit_16(2170); +emit_16(2103); +emit_16(2170); +emit_16(2104); +emit_16(2171); +emit_16(2105); +emit_16(2171); +emit_16(2104); +emit_16(2171); +emit_16(2105); +emit_16(2172); +emit_16(2106); +emit_16(2172); +emit_16(2105); +emit_16(2172); +emit_16(2106); +emit_16(2173); +emit_16(2107); +emit_16(2173); +emit_16(2106); +emit_16(2173); +emit_16(2107); +emit_16(2174); +emit_16(2108); +emit_16(2174); +emit_16(2107); +emit_16(2174); +emit_16(2108); +emit_16(2175); +emit_16(2109); +emit_16(2175); +emit_16(2108); +emit_16(2175); +emit_16(2109); +emit_16(2176); +emit_16(2110); +emit_16(2176); +emit_16(2109); +emit_16(2176); +emit_16(2110); +emit_16(2177); +emit_16(2111); +emit_16(2177); +emit_16(2110); +emit_start(LandscapeIdxCount) +emit_32(11718); +emit_32(11310); +emit_32(11718); +emit_32(12096); +emit_32(12870); +emit_32(13260); +emit_32(12852); +emit_32(12480); +emit_start(_ZTV14BenchmarkDemo4) +emit_32(0); +emit_32(_ZTI14BenchmarkDemo4); +emit_32(_ZN15DemoApplication6myinitEv__index__); +emit_32(_ZN15DemoApplication16getDynamicsWorldEv__index__); +emit_32(_ZN15DemoApplication20localCreateRigidBodyEfRK11btTransformP16btCollisionShape__index__); +emit_32(_ZN14BenchmarkDemo4D1Ev__index__); +emit_32(_ZN14BenchmarkDemo4D0Ev__index__); +emit_32(_ZN13BenchmarkDemo20clientMoveAndDisplayEv__index__); +emit_32(_ZN13BenchmarkDemo15displayCallbackEv__index__); +emit_start(_ZTI14BenchmarkDemo4) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS14BenchmarkDemo4); +emit_32(_ZTI13BenchmarkDemo); +emit_start(_ZTS14BenchmarkDemo4) +emit_string('14BenchmarkDemo4\x00'); +emit_start(_ZL14benchmarkDemo4) +emit_32(_ZTV14BenchmarkDemo4+8); +emit_32(0); +emit_32(1566444395); +emit_fill(0,1); +emit_fill(0,3); +emit_32(0); +emit_32(0); +emit_32(0); +emit_8(1); +emit_fill(0,3); +emit_fill(0,1); +emit_fill(0,3); +emit_32(0); +emit_32(0); +emit_32(0); +emit_8(1); +emit_fill(0,3); +emit_32(0); +emit_32(0); +emit_32(0); +emit_32(0); +emit_32(4); +emit_32(0); +emit_32(0); +emit_start(_ZTI21btBroadphaseInterface) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS21btBroadphaseInterface); +emit_start(_ZTS21btBroadphaseInterface) +emit_string('21btBroadphaseInterface\x00'); +emit_start(_ZTI25btOverlappingPairCallback) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS25btOverlappingPairCallback); +emit_start(_ZTS25btOverlappingPairCallback) +emit_string('25btOverlappingPairCallback\x00'); +emit_start(_ZTI22btOverlappingPairCache) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS22btOverlappingPairCache); +emit_32(_ZTI25btOverlappingPairCallback); +emit_start(_ZTS22btOverlappingPairCache) +emit_string('22btOverlappingPairCache\x00'); +emit_start(_ZTV15btNullPairCache) +emit_32(0); +emit_32(_ZTI15btNullPairCache); +emit_32(_ZN15btNullPairCacheD1Ev__index__); +emit_32(_ZN15btNullPairCacheD0Ev__index__); +emit_32(_ZN15btNullPairCache18addOverlappingPairEP17btBroadphaseProxyS1___index__); +emit_32(_ZN15btNullPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher__index__); +emit_32(_ZN15btNullPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher__index__); +emit_32(_ZN15btNullPairCache26getOverlappingPairArrayPtrEv__index__); +emit_32(_ZNK15btNullPairCache26getOverlappingPairArrayPtrEv__index__); +emit_32(_ZN15btNullPairCache23getOverlappingPairArrayEv__index__); +emit_32(_ZN15btNullPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher__index__); +emit_32(_ZNK15btNullPairCache22getNumOverlappingPairsEv__index__); +emit_32(_ZN15btNullPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher__index__); +emit_32(_ZN15btNullPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback__index__); +emit_32(_ZN15btNullPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher__index__); +emit_32(_ZN15btNullPairCache8findPairEP17btBroadphaseProxyS1___index__); +emit_32(_ZN15btNullPairCache18hasDeferredRemovalEv__index__); +emit_32(_ZN15btNullPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback__index__); +emit_32(_ZN15btNullPairCache20sortOverlappingPairsEP12btDispatcher__index__); +emit_start(_ZTI15btNullPairCache) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS15btNullPairCache); +emit_32(_ZTI22btOverlappingPairCache); +emit_start(_ZTS15btNullPairCache) +emit_string('15btNullPairCache\x00'); +emit_start(_2E_str11) +emit_string('handle > 0 && handle < m_maxHandles\x00'); +emit_start(_2E_str112) +emit_string('../../../../src/BulletCollision/BroadphaseCollision/btAxisSweep3.h\x00'); +emit_start(_2E_str213) +emit_string('m_firstFreeHandle\x00'); +emit_start(_2E_str314) +emit_string('!pair.m_algorithm\x00'); +emit_start(_ZTV20btAxisSweep3InternalItE) +emit_32(0); +emit_32(_ZTI20btAxisSweep3InternalItE); +emit_32(_ZN20btAxisSweep3InternalItED1Ev__index__); +emit_32(_ZN20btAxisSweep3InternalItED0Ev__index__); +emit_32(_ZN20btAxisSweep3InternalItE11createProxyERK9btVector3S3_iPvssP12btDispatcherS4___index__); +emit_32(_ZN20btAxisSweep3InternalItE12destroyProxyEP17btBroadphaseProxyP12btDispatcher__index__); +emit_32(_ZN20btAxisSweep3InternalItE7setAabbEP17btBroadphaseProxyRK9btVector3S5_P12btDispatcher__index__); +emit_32(_ZNK20btAxisSweep3InternalItE7getAabbEP17btBroadphaseProxyR9btVector3S4___index__); +emit_32(_ZN20btAxisSweep3InternalItE7rayTestERK9btVector3S3_R23btBroadphaseRayCallbackS3_S3___index__); +emit_32(_ZN20btAxisSweep3InternalItE8aabbTestERK9btVector3S3_R24btBroadphaseAabbCallback__index__); +emit_32(_ZN20btAxisSweep3InternalItE25calculateOverlappingPairsEP12btDispatcher__index__); +emit_32(_ZN20btAxisSweep3InternalItE23getOverlappingPairCacheEv__index__); +emit_32(_ZNK20btAxisSweep3InternalItE23getOverlappingPairCacheEv__index__); +emit_32(_ZNK20btAxisSweep3InternalItE17getBroadphaseAabbER9btVector3S2___index__); +emit_32(_ZN20btAxisSweep3InternalItE9resetPoolEP12btDispatcher__index__); +emit_32(_ZN20btAxisSweep3InternalItE10printStatsEv__index__); +emit_start(_ZTI20btAxisSweep3InternalItE) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS20btAxisSweep3InternalItE); +emit_32(_ZTI21btBroadphaseInterface); +emit_start(_ZTS20btAxisSweep3InternalItE) +emit_string('20btAxisSweep3InternalItE\x00'); +emit_start(_ZTV12btAxisSweep3) +emit_32(0); +emit_32(_ZTI12btAxisSweep3); +emit_32(_ZN12btAxisSweep3D1Ev__index__); +emit_32(_ZN12btAxisSweep3D0Ev__index__); +emit_32(_ZN20btAxisSweep3InternalItE11createProxyERK9btVector3S3_iPvssP12btDispatcherS4___index__); +emit_32(_ZN20btAxisSweep3InternalItE12destroyProxyEP17btBroadphaseProxyP12btDispatcher__index__); +emit_32(_ZN20btAxisSweep3InternalItE7setAabbEP17btBroadphaseProxyRK9btVector3S5_P12btDispatcher__index__); +emit_32(_ZNK20btAxisSweep3InternalItE7getAabbEP17btBroadphaseProxyR9btVector3S4___index__); +emit_32(_ZN20btAxisSweep3InternalItE7rayTestERK9btVector3S3_R23btBroadphaseRayCallbackS3_S3___index__); +emit_32(_ZN20btAxisSweep3InternalItE8aabbTestERK9btVector3S3_R24btBroadphaseAabbCallback__index__); +emit_32(_ZN20btAxisSweep3InternalItE25calculateOverlappingPairsEP12btDispatcher__index__); +emit_32(_ZN20btAxisSweep3InternalItE23getOverlappingPairCacheEv__index__); +emit_32(_ZNK20btAxisSweep3InternalItE23getOverlappingPairCacheEv__index__); +emit_32(_ZNK20btAxisSweep3InternalItE17getBroadphaseAabbER9btVector3S2___index__); +emit_32(_ZN20btAxisSweep3InternalItE9resetPoolEP12btDispatcher__index__); +emit_32(_ZN20btAxisSweep3InternalItE10printStatsEv__index__); +emit_start(_ZTI12btAxisSweep3) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS12btAxisSweep3); +emit_32(_ZTI20btAxisSweep3InternalItE); +emit_start(_ZTS12btAxisSweep3) +emit_string('12btAxisSweep3\x00'); +emit_start(_ZTV20btCollisionAlgorithm) +emit_32(0); +emit_32(_ZTI20btCollisionAlgorithm); +emit_32(_ZN20btCollisionAlgorithmD1Ev__index__); +emit_32(_ZN20btCollisionAlgorithmD0Ev__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_start(_ZTI20btCollisionAlgorithm) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS20btCollisionAlgorithm); +emit_start(_ZTS20btCollisionAlgorithm) +emit_string('20btCollisionAlgorithm\x00'); +emit_start(_ZTIN6btDbvt8ICollideE) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTSN6btDbvt8ICollideE); +emit_start(_ZTSN6btDbvt8ICollideE) +emit_string('N6btDbvt8ICollideE\x00'); +emit_start(_2E_str1118) +emit_string('../../../../src/BulletCollision/BroadphaseCollision/btDbvt.cpp\x00'); +emit_start(_2E_str22) +emit_string('n==p->childs[i]\x00'); +emit_start(_ZTV18btDbvtTreeCollider) +emit_32(0); +emit_32(_ZTI18btDbvtTreeCollider); +emit_32(_ZN18btDbvtTreeColliderD1Ev__index__); +emit_32(_ZN18btDbvtTreeColliderD0Ev__index__); +emit_32(_ZN18btDbvtTreeCollider7ProcessEPK10btDbvtNodeS2___index__); +emit_32(_ZN18btDbvtTreeCollider7ProcessEPK10btDbvtNode__index__); +emit_32(_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodef__index__); +emit_32(_ZN6btDbvt8ICollide7DescentEPK10btDbvtNode__index__); +emit_32(_ZN6btDbvt8ICollide9AllLeavesEPK10btDbvtNode__index__); +emit_start(_ZTI18btDbvtTreeCollider) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS18btDbvtTreeCollider); +emit_32(_ZTIN6btDbvt8ICollideE); +emit_start(_ZTS18btDbvtTreeCollider) +emit_string('18btDbvtTreeCollider\x00'); +emit_start(_ZTV19BroadphaseRayTester) +emit_32(0); +emit_32(_ZTI19BroadphaseRayTester); +emit_32(_ZN19BroadphaseRayTesterD1Ev__index__); +emit_32(_ZN19BroadphaseRayTesterD0Ev__index__); +emit_32(_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodeS3___index__); +emit_32(_ZN19BroadphaseRayTester7ProcessEPK10btDbvtNode__index__); +emit_32(_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodef__index__); +emit_32(_ZN6btDbvt8ICollide7DescentEPK10btDbvtNode__index__); +emit_32(_ZN6btDbvt8ICollide9AllLeavesEPK10btDbvtNode__index__); +emit_start(_ZTI19BroadphaseRayTester) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS19BroadphaseRayTester); +emit_32(_ZTIN6btDbvt8ICollideE); +emit_start(_ZTS19BroadphaseRayTester) +emit_string('19BroadphaseRayTester\x00'); +emit_start(_ZTV20BroadphaseAabbTester) +emit_32(0); +emit_32(_ZTI20BroadphaseAabbTester); +emit_32(_ZN20BroadphaseAabbTesterD1Ev__index__); +emit_32(_ZN20BroadphaseAabbTesterD0Ev__index__); +emit_32(_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodeS3___index__); +emit_32(_ZN20BroadphaseAabbTester7ProcessEPK10btDbvtNode__index__); +emit_32(_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodef__index__); +emit_32(_ZN6btDbvt8ICollide7DescentEPK10btDbvtNode__index__); +emit_32(_ZN6btDbvt8ICollide9AllLeavesEPK10btDbvtNode__index__); +emit_start(_ZTI20BroadphaseAabbTester) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS20BroadphaseAabbTester); +emit_32(_ZTIN6btDbvt8ICollideE); +emit_start(_ZTS20BroadphaseAabbTester) +emit_string('20BroadphaseAabbTester\x00'); +emit_start(_2E_str18) +emit_string('../../../../src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp\x00'); +emit_start(_ZTV16btDbvtBroadphase) +emit_32(0); +emit_32(_ZTI16btDbvtBroadphase); +emit_32(_ZN16btDbvtBroadphaseD1Ev__index__); +emit_32(_ZN16btDbvtBroadphaseD0Ev__index__); +emit_32(_ZN16btDbvtBroadphase11createProxyERK9btVector3S2_iPvssP12btDispatcherS3___index__); +emit_32(_ZN16btDbvtBroadphase12destroyProxyEP17btBroadphaseProxyP12btDispatcher__index__); +emit_32(_ZN16btDbvtBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcher__index__); +emit_32(_ZNK16btDbvtBroadphase7getAabbEP17btBroadphaseProxyR9btVector3S3___index__); +emit_32(_ZN16btDbvtBroadphase7rayTestERK9btVector3S2_R23btBroadphaseRayCallbackS2_S2___index__); +emit_32(_ZN16btDbvtBroadphase8aabbTestERK9btVector3S2_R24btBroadphaseAabbCallback__index__); +emit_32(_ZN16btDbvtBroadphase25calculateOverlappingPairsEP12btDispatcher__index__); +emit_32(_ZN16btDbvtBroadphase23getOverlappingPairCacheEv__index__); +emit_32(_ZNK16btDbvtBroadphase23getOverlappingPairCacheEv__index__); +emit_32(_ZNK16btDbvtBroadphase17getBroadphaseAabbER9btVector3S1___index__); +emit_32(_ZN16btDbvtBroadphase9resetPoolEP12btDispatcher__index__); +emit_32(_ZN16btDbvtBroadphase10printStatsEv__index__); +emit_start(_ZTI16btDbvtBroadphase) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS16btDbvtBroadphase); +emit_32(_ZTI21btBroadphaseInterface); +emit_start(_ZTS16btDbvtBroadphase) +emit_string('16btDbvtBroadphase\x00'); +emit_start(_ZTV12btDispatcher) +emit_32(0); +emit_32(_ZTI12btDispatcher); +emit_32(_ZN12btDispatcherD1Ev__index__); +emit_32(_ZN12btDispatcherD0Ev__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_start(_ZTI12btDispatcher) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS12btDispatcher); +emit_start(_ZTS12btDispatcher) +emit_string('12btDispatcher\x00'); +emit_start(_ZTI21btNodeOverlapCallback) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS21btNodeOverlapCallback); +emit_start(_ZTS21btNodeOverlapCallback) +emit_string('21btNodeOverlapCallback\x00'); +emit_start(_2E_str10) +emit_string('0\x00'); +emit_start(_2E_str212) +emit_string('m_useQuantization\x00'); +emit_start(_2E_str313) +emit_string('../../../../src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h\x00'); +emit_start(_2E_str414) +emit_string('point.getX() <= m_bvhAabbMax.getX()\x00'); +emit_start(_2E_str515) +emit_string('point.getY() <= m_bvhAabbMax.getY()\x00'); +emit_start(_2E_str616) +emit_string('point.getZ() <= m_bvhAabbMax.getZ()\x00'); +emit_start(_2E_str717) +emit_string('point.getX() >= m_bvhAabbMin.getX()\x00'); +emit_start(_2E_str820) +emit_string('point.getY() >= m_bvhAabbMin.getY()\x00'); +emit_start(_2E_str9) +emit_string('point.getZ() >= m_bvhAabbMin.getZ()\x00'); +emit_start(_ZTI17btOverlapCallback) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS17btOverlapCallback); +emit_start(_ZTS17btOverlapCallback) +emit_string('17btOverlapCallback\x00'); +emit_start(_ZTVZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback) +emit_32(0); +emit_32(_ZTIZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback); +emit_32(_ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD1Ev__index__); +emit_32(_ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD0Ev__index__); +emit_32(_ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallback14processOverlapER16btBroadphasePair__index__); +emit_start(_ZTIZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback); +emit_32(_ZTI17btOverlapCallback); +emit_start(_ZTSZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback) +emit_string('ZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback\x00'); +emit_start(_ZTVZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback) +emit_32(0); +emit_32(_ZTIZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback); +emit_32(_ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD1Ev__index__); +emit_32(_ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD0Ev__index__); +emit_32(_ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallback14processOverlapER16btBroadphasePair__index__); +emit_start(_ZTIZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback); +emit_32(_ZTI17btOverlapCallback); +emit_start(_ZTSZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback) +emit_string('ZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback\x00'); +emit_start(_ZTV28btHashedOverlappingPairCache) +emit_32(0); +emit_32(_ZTI28btHashedOverlappingPairCache); +emit_32(_ZN28btHashedOverlappingPairCacheD1Ev__index__); +emit_32(_ZN28btHashedOverlappingPairCacheD0Ev__index__); +emit_32(_ZN28btHashedOverlappingPairCache18addOverlappingPairEP17btBroadphaseProxyS1___index__); +emit_32(_ZN28btHashedOverlappingPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher__index__); +emit_32(_ZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher__index__); +emit_32(_ZN28btHashedOverlappingPairCache26getOverlappingPairArrayPtrEv__index__); +emit_32(_ZNK28btHashedOverlappingPairCache26getOverlappingPairArrayPtrEv__index__); +emit_32(_ZN28btHashedOverlappingPairCache23getOverlappingPairArrayEv__index__); +emit_32(_ZN28btHashedOverlappingPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher__index__); +emit_32(_ZNK28btHashedOverlappingPairCache22getNumOverlappingPairsEv__index__); +emit_32(_ZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher__index__); +emit_32(_ZN28btHashedOverlappingPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback__index__); +emit_32(_ZN28btHashedOverlappingPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher__index__); +emit_32(_ZN28btHashedOverlappingPairCache8findPairEP17btBroadphaseProxyS1___index__); +emit_32(_ZN28btHashedOverlappingPairCache18hasDeferredRemovalEv__index__); +emit_32(_ZN28btHashedOverlappingPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback__index__); +emit_32(_ZN28btHashedOverlappingPairCache20sortOverlappingPairsEP12btDispatcher__index__); +emit_start(_ZTI28btHashedOverlappingPairCache) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS28btHashedOverlappingPairCache); +emit_32(_ZTI22btOverlappingPairCache); +emit_start(_ZTS28btHashedOverlappingPairCache) +emit_string('28btHashedOverlappingPairCache\x00'); +emit_start(_2E_str121) +emit_string('../../../../src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp\x00'); +emit_start(_2E_str222) +emit_string('index < m_overlappingPairArray.size()\x00'); +emit_start(_2E_str323) +emit_string('../../../../src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h\x00'); +emit_start(_2E_str424) +emit_string('pair->m_pProxy0->getUid() == proxyId1\x00'); +emit_start(_2E_str525) +emit_string('pair->m_pProxy1->getUid() == proxyId2\x00'); +emit_start(_2E_str626) +emit_string('pairIndex < m_overlappingPairArray.size()\x00'); +emit_start(_2E_str727) +emit_string('index != BT_NULL_PAIR\x00'); +emit_start(_2E_str32) +emit_string('btOptimizedBvhNodeData\x00'); +emit_start(_2E_str133) +emit_string('btQuantizedBvhNodeData\x00'); +emit_start(_2E_str234) +emit_string('btBvhSubtreeInfoData\x00'); +emit_start(_2E_str335) +emit_string('btQuantizedBvhFloatData\x00'); +emit_start(_ZTV14btQuantizedBvh) +emit_32(0); +emit_32(_ZTI14btQuantizedBvh); +emit_32(_ZN14btQuantizedBvhD1Ev__index__); +emit_32(_ZN14btQuantizedBvhD0Ev__index__); +emit_32(_ZNK14btQuantizedBvh9serializeEPvjb__index__); +emit_32(_ZNK14btQuantizedBvh31calculateSerializeBufferSizeNewEv__index__); +emit_32(_ZNK14btQuantizedBvh9serializeEPvP12btSerializer__index__); +emit_32(_ZN14btQuantizedBvh16deSerializeFloatER23btQuantizedBvhFloatData__index__); +emit_32(_ZN14btQuantizedBvh17deSerializeDoubleER24btQuantizedBvhDoubleData__index__); +emit_start(_ZTI14btQuantizedBvh) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS14btQuantizedBvh); +emit_start(_ZTS14btQuantizedBvh) +emit_string('14btQuantizedBvh\x00'); +emit_start(_2E_str537) +emit_string('../../../../src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp\x00'); +emit_start(_2E_str638) +emit_string('m_subtreeHeaderCount == m_SubtreeHeaders.size()\x00'); +emit_start(_2E_str739) +emit_string('isLeafNode()\x00'); +emit_start(_2E_str941) +emit_string('!isLeafNode()\x00'); +emit_start(_2E_str1143) +emit_string('walkIterations < subTreeSize\x00'); +emit_start(_2E_str1844) +emit_string('!m_useQuantization\x00'); +emit_start(_2E_str1921) +emit_string('walkIterations < m_curNodeIndex\x00'); +emit_start(_2E_str21) +emit_string('!unbal\x00'); +emit_start(_2E_str2246) +emit_string('numIndices>0\x00'); +emit_start(_ZTV30btActivatingCollisionAlgorithm) +emit_32(0); +emit_32(_ZTI30btActivatingCollisionAlgorithm); +emit_32(_ZN30btActivatingCollisionAlgorithmD1Ev__index__); +emit_32(_ZN30btActivatingCollisionAlgorithmD0Ev__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_start(_ZTI30btActivatingCollisionAlgorithm) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS30btActivatingCollisionAlgorithm); +emit_32(_ZTI20btCollisionAlgorithm); +emit_start(_ZTS30btActivatingCollisionAlgorithm) +emit_string('30btActivatingCollisionAlgorithm\x00'); +emit_start(_2E_str59) +emit_string('m_manifoldPtr\x00'); +emit_start(_2E_str160) +emit_string('../../../../src/BulletCollision/CollisionDispatch/btManifoldResult.h\x00'); +emit_start(_ZTV26btBoxBoxCollisionAlgorithm) +emit_32(0); +emit_32(_ZTI26btBoxBoxCollisionAlgorithm); +emit_32(_ZN26btBoxBoxCollisionAlgorithmD1Ev__index__); +emit_32(_ZN26btBoxBoxCollisionAlgorithmD0Ev__index__); +emit_32(_ZN26btBoxBoxCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__); +emit_32(_ZN26btBoxBoxCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__); +emit_32(_ZN26btBoxBoxCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__); +emit_start(_ZTI26btBoxBoxCollisionAlgorithm) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS26btBoxBoxCollisionAlgorithm); +emit_32(_ZTI30btActivatingCollisionAlgorithm); +emit_start(_ZTS26btBoxBoxCollisionAlgorithm) +emit_string('26btBoxBoxCollisionAlgorithm\x00'); +emit_start(_ZTI36btDiscreteCollisionDetectorInterface) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS36btDiscreteCollisionDetectorInterface); +emit_start(_ZTS36btDiscreteCollisionDetectorInterface) +emit_string('36btDiscreteCollisionDetectorInterface\x00'); +emit_start(_ZTV16btBoxBoxDetector) +emit_32(0); +emit_32(_ZTI16btBoxBoxDetector); +emit_32(_ZN16btBoxBoxDetectorD1Ev__index__); +emit_32(_ZN16btBoxBoxDetectorD0Ev__index__); +emit_32(_ZN16btBoxBoxDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb__index__); +emit_start(_ZTI16btBoxBoxDetector) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS16btBoxBoxDetector); +emit_32(_ZTI36btDiscreteCollisionDetectorInterface); +emit_start(_ZTS16btBoxBoxDetector) +emit_string('16btBoxBoxDetector\x00'); +emit_start(_2E_str65) +emit_string('*iret != i0\x00'); +emit_start(_2E_str166) +emit_string('../../../../src/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp\x00'); +emit_start(_ZTIN36btDiscreteCollisionDetectorInterface6ResultE) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTSN36btDiscreteCollisionDetectorInterface6ResultE); +emit_start(_ZTSN36btDiscreteCollisionDetectorInterface6ResultE) +emit_string('N36btDiscreteCollisionDetectorInterface6ResultE\x00'); +emit_start(_ZTV23btCollisionPairCallback) +emit_32(0); +emit_32(_ZTI23btCollisionPairCallback); +emit_32(_ZN23btCollisionPairCallbackD1Ev__index__); +emit_32(_ZN23btCollisionPairCallbackD0Ev__index__); +emit_32(_ZN23btCollisionPairCallback14processOverlapER16btBroadphasePair__index__); +emit_start(_ZTI23btCollisionPairCallback) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS23btCollisionPairCallback); +emit_32(_ZTI17btOverlapCallback); +emit_start(_ZTS23btCollisionPairCallback) +emit_string('23btCollisionPairCallback\x00'); +emit_start(_2E_str169) +emit_string('../../../../src/LinearMath/btPoolAllocator.h\x00'); +emit_start(_2E_str270) +emit_string('!size || size<=m_elemSize\x00'); +emit_start(_2E_str371) +emit_string('m_freeCount>0\x00'); +emit_start(_2E_str472) +emit_string('findIndex < m_manifoldsPtr.size()\x00'); +emit_start(_2E_str573) +emit_string('../../../../src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp\x00'); +emit_start(_ZTV21btCollisionDispatcher) +emit_32(0); +emit_32(_ZTI21btCollisionDispatcher); +emit_32(_ZN21btCollisionDispatcherD1Ev__index__); +emit_32(_ZN21btCollisionDispatcherD0Ev__index__); +emit_32(_ZN21btCollisionDispatcher13findAlgorithmEP17btCollisionObjectS1_P20btPersistentManifold__index__); +emit_32(_ZN21btCollisionDispatcher14getNewManifoldEPvS0___index__); +emit_32(_ZN21btCollisionDispatcher15releaseManifoldEP20btPersistentManifold__index__); +emit_32(_ZN21btCollisionDispatcher13clearManifoldEP20btPersistentManifold__index__); +emit_32(_ZN21btCollisionDispatcher14needsCollisionEP17btCollisionObjectS1___index__); +emit_32(_ZN21btCollisionDispatcher13needsResponseEP17btCollisionObjectS1___index__); +emit_32(_ZN21btCollisionDispatcher25dispatchAllCollisionPairsEP22btOverlappingPairCacheRK16btDispatcherInfoP12btDispatcher__index__); +emit_32(_ZNK21btCollisionDispatcher15getNumManifoldsEv__index__); +emit_32(_ZN21btCollisionDispatcher26getManifoldByIndexInternalEi__index__); +emit_32(_ZN21btCollisionDispatcher26getInternalManifoldPointerEv__index__); +emit_32(_ZN21btCollisionDispatcher26allocateCollisionAlgorithmEi__index__); +emit_32(_ZN21btCollisionDispatcher22freeCollisionAlgorithmEPv__index__); +emit_start(_ZTI21btCollisionDispatcher) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS21btCollisionDispatcher); +emit_32(_ZTI12btDispatcher); +emit_start(_ZTS21btCollisionDispatcher) +emit_string('21btCollisionDispatcher\x00'); +emit_start(_2E_str674) +emit_string('m_doubleDispatch[i][j]\x00'); +emit_start(_2E_str775) +emit_string('body0\x00'); +emit_start(_2E_str876) +emit_string('body1\x00'); +emit_start(_2E_str977) +emit_string('warning btCollisionDispatcher::needsCollision: static-static collision!\x0a\x00'); +emit_start(_ZTV17btCollisionObject) +emit_32(0); +emit_32(_ZTI17btCollisionObject); +emit_32(_ZN17btCollisionObject24checkCollideWithOverrideEPS___index__); +emit_32(_ZN17btCollisionObjectD1Ev__index__); +emit_32(_ZN17btCollisionObjectD0Ev__index__); +emit_32(_ZN17btCollisionObject17setCollisionShapeEP16btCollisionShape__index__); +emit_32(_ZNK17btCollisionObject28calculateSerializeBufferSizeEv__index__); +emit_32(_ZNK17btCollisionObject9serializeEPvP12btSerializer__index__); +emit_32(_ZNK17btCollisionObject21serializeSingleObjectEP12btSerializer__index__); +emit_start(_ZTI17btCollisionObject) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS17btCollisionObject); +emit_start(_ZTS17btCollisionObject) +emit_string('17btCollisionObject\x00'); +emit_start(_2E_str78) +emit_string('btCollisionObjectFloatData\x00'); +emit_start(_ZTIN16btCollisionWorld20ConvexResultCallbackE) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTSN16btCollisionWorld20ConvexResultCallbackE); +emit_start(_ZTSN16btCollisionWorld20ConvexResultCallbackE) +emit_string('N16btCollisionWorld20ConvexResultCallbackE\x00'); +emit_start(_ZTI30btConvexPenetrationDepthSolver) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS30btConvexPenetrationDepthSolver); +emit_start(_ZTS30btConvexPenetrationDepthSolver) +emit_string('30btConvexPenetrationDepthSolver\x00'); +emit_start(_ZTVN12btConvexCast10CastResultE) +emit_32(0); +emit_32(_ZTIN12btConvexCast10CastResultE); +emit_32(_ZN12btConvexCast10CastResult9DebugDrawEf__index__); +emit_32(_ZN12btConvexCast10CastResult15drawCoordSystemERK11btTransform__index__); +emit_32(_ZN12btConvexCast10CastResultD1Ev__index__); +emit_32(_ZN12btConvexCast10CastResultD0Ev__index__); +emit_start(_ZTIN12btConvexCast10CastResultE) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTSN12btConvexCast10CastResultE); +emit_start(_ZTSN12btConvexCast10CastResultE) +emit_string('N12btConvexCast10CastResultE\x00'); +emit_start(_ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2) +emit_32(0); +emit_32(_ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2); +emit_32(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder2D1Ev__index__); +emit_32(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder2D0Ev__index__); +emit_32(_ZNK16btCollisionWorld17RayResultCallback14needsCollisionEP17btBroadphaseProxy__index__); +emit_32(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder215addSingleResultERNS_14LocalRayResultEb__index__); +emit_start(_ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2); +emit_32(_ZTIN16btCollisionWorld17RayResultCallbackE); +emit_start(_ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2) +emit_string('ZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2\x00'); +emit_start(_ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder) +emit_32(0); +emit_32(_ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder); +emit_32(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdderD1Ev__index__); +emit_32(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdderD0Ev__index__); +emit_32(_ZNK16btCollisionWorld20ConvexResultCallback14needsCollisionEP17btBroadphaseProxy__index__); +emit_32(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdder15addSingleResultERNS_17LocalConvexResultEb__index__); +emit_start(_ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder); +emit_32(_ZTIN16btCollisionWorld20ConvexResultCallbackE); +emit_start(_ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder) +emit_string('ZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder\x00'); +emit_start(_ZTI24btBroadphaseAabbCallback) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS24btBroadphaseAabbCallback); +emit_start(_ZTS24btBroadphaseAabbCallback) +emit_string('24btBroadphaseAabbCallback\x00'); +emit_start(_ZTI23btBroadphaseRayCallback) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS23btBroadphaseRayCallback); +emit_32(_ZTI24btBroadphaseAabbCallback); +emit_start(_ZTS23btBroadphaseRayCallback) +emit_string('23btBroadphaseRayCallback\x00'); +emit_start(_ZTV17DebugDrawcallback) +emit_32(0); +emit_32(_ZTI17DebugDrawcallback); +emit_32(_ZN17DebugDrawcallbackD1Ev__index__); +emit_32(_ZN17DebugDrawcallbackD0Ev__index__); +emit_32(_ZN17DebugDrawcallback15processTriangleEP9btVector3ii__index__); +emit_32(_ZN17DebugDrawcallback28internalProcessTriangleIndexEP9btVector3ii__index__); +emit_32(4294967292); +emit_32(_ZTI17DebugDrawcallback); +emit_32(_ZThn4_N17DebugDrawcallbackD1Ev__index__); +emit_32(_ZThn4_N17DebugDrawcallbackD0Ev__index__); +emit_32(_ZThn4_N17DebugDrawcallback28internalProcessTriangleIndexEP9btVector3ii__index__); +emit_start(_ZTI17DebugDrawcallback) +emit_32(_ZTVN10__cxxabiv121__vmi_class_type_infoE+8); +emit_32(_ZTS17DebugDrawcallback); +emit_32(0); +emit_32(2); +emit_32(_ZTI18btTriangleCallback); +emit_32(2); +emit_32(_ZTI31btInternalTriangleIndexCallback); +emit_32(1026); +emit_start(_ZTS17DebugDrawcallback) +emit_string('17DebugDrawcallback\x00'); +emit_start(_ZTI18btTriangleCallback) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS18btTriangleCallback); +emit_start(_ZTS18btTriangleCallback) +emit_string('18btTriangleCallback\x00'); +emit_start(_ZTI31btInternalTriangleIndexCallback) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS31btInternalTriangleIndexCallback); +emit_start(_ZTS31btInternalTriangleIndexCallback) +emit_string('31btInternalTriangleIndexCallback\x00'); +emit_start(_ZTV16btCollisionWorld) +emit_32(0); +emit_32(_ZTI16btCollisionWorld); +emit_32(_ZN16btCollisionWorldD1Ev__index__); +emit_32(_ZN16btCollisionWorldD0Ev__index__); +emit_32(_ZN16btCollisionWorld11updateAabbsEv__index__); +emit_32(_ZN16btCollisionWorld14setDebugDrawerEP12btIDebugDraw__index__); +emit_32(_ZN16btCollisionWorld14getDebugDrawerEv__index__); +emit_32(_ZN16btCollisionWorld14debugDrawWorldEv__index__); +emit_32(_ZN16btCollisionWorld15debugDrawObjectERK11btTransformPK16btCollisionShapeRK9btVector3__index__); +emit_32(_ZNK16btCollisionWorld7rayTestERK9btVector3S2_RNS_17RayResultCallbackE__index__); +emit_32(_ZN16btCollisionWorld18addCollisionObjectEP17btCollisionObjectss__index__); +emit_32(_ZN16btCollisionWorld21removeCollisionObjectEP17btCollisionObject__index__); +emit_32(_ZN16btCollisionWorld33performDiscreteCollisionDetectionEv__index__); +emit_32(_ZN16btCollisionWorld9serializeEP12btSerializer__index__); +emit_start(_ZTI16btCollisionWorld) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS16btCollisionWorld); +emit_start(_ZTS16btCollisionWorld) +emit_string('16btCollisionWorld\x00'); +emit_start(_ZTI16btManifoldResult) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS16btManifoldResult); +emit_32(_ZTIN36btDiscreteCollisionDetectorInterface6ResultE); +emit_start(_ZTS16btManifoldResult) +emit_string('16btManifoldResult\x00'); +emit_start(_ZTV21btSingleSweepCallback) +emit_32(0); +emit_32(_ZTI21btSingleSweepCallback); +emit_32(_ZN21btSingleSweepCallbackD1Ev__index__); +emit_32(_ZN21btSingleSweepCallbackD0Ev__index__); +emit_32(_ZN21btSingleSweepCallback7processEPK17btBroadphaseProxy__index__); +emit_start(_ZTI21btSingleSweepCallback) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS21btSingleSweepCallback); +emit_32(_ZTI23btBroadphaseRayCallback); +emit_start(_ZTS21btSingleSweepCallback) +emit_string('21btSingleSweepCallback\x00'); +emit_start(_ZTV19btSingleRayCallback) +emit_32(0); +emit_32(_ZTI19btSingleRayCallback); +emit_32(_ZN19btSingleRayCallbackD1Ev__index__); +emit_32(_ZN19btSingleRayCallbackD0Ev__index__); +emit_32(_ZN19btSingleRayCallback7processEPK17btBroadphaseProxy__index__); +emit_start(_ZTI19btSingleRayCallback) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS19btSingleRayCallback); +emit_32(_ZTI23btBroadphaseRayCallback); +emit_start(_ZTS19btSingleRayCallback) +emit_string('19btSingleRayCallback\x00'); +emit_start(_2E_str382) +emit_string('index < m_cachedPoints\x00'); +emit_start(_2E_str483) +emit_string('../../../../src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h\x00'); +emit_start(_2E_str584) +emit_string('s != btScalar(0.0)\x00'); +emit_start(_2E_str685) +emit_string('../../../../src/LinearMath/btQuaternion.h\x00'); +emit_start(_2E_str786) +emit_string('collisionObject\x00'); +emit_start(_2E_str887) +emit_string('../../../../src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp\x00'); +emit_start(_2E_str988) +emit_string('m_collisionObjects.findLinearSearch(collisionObject) == m_collisionObjects.size()\x00'); +emit_start(_ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0) +emit_32(0); +emit_32(_ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0); +emit_32(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD1E_0v__index__); +emit_32(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD0E_0v__index__); +emit_32(_ZN28btTriangleConvexcastCallback15processTriangleEP9btVector3ii__index__); +emit_32(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallback9reportHitE_0RK9btVector3SG_fii__index__); +emit_start(_ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0); +emit_32(_ZTI28btTriangleConvexcastCallback); +emit_start(_ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0) +emit_string('ZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0\x00'); +emit_start(_ZTI28btTriangleConvexcastCallback) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS28btTriangleConvexcastCallback); +emit_32(_ZTI18btTriangleCallback); +emit_start(_ZTS28btTriangleConvexcastCallback) +emit_string('28btTriangleConvexcastCallback\x00'); +emit_start(_ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback) +emit_32(0); +emit_32(_ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback); +emit_32(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD1Ev__index__); +emit_32(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD0Ev__index__); +emit_32(_ZN28btTriangleConvexcastCallback15processTriangleEP9btVector3ii__index__); +emit_32(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallback9reportHitERK9btVector3SG_fii__index__); +emit_start(_ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback); +emit_32(_ZTI28btTriangleConvexcastCallback); +emit_start(_ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback) +emit_string('ZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback\x00'); +emit_start(_ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0) +emit_32(0); +emit_32(_ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0); +emit_32(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD1E_0v__index__); +emit_32(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD0E_0v__index__); +emit_32(_ZN25btTriangleRaycastCallback15processTriangleEP9btVector3ii__index__); +emit_32(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallback9reportHitE_0RK9btVector3fii__index__); +emit_start(_ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0); +emit_32(_ZTI25btTriangleRaycastCallback); +emit_start(_ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0) +emit_string('ZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0\x00'); +emit_start(_ZTI25btTriangleRaycastCallback) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS25btTriangleRaycastCallback); +emit_32(_ZTI18btTriangleCallback); +emit_start(_ZTS25btTriangleRaycastCallback) +emit_string('25btTriangleRaycastCallback\x00'); +emit_start(_ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback) +emit_32(0); +emit_32(_ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback); +emit_32(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD1Ev__index__); +emit_32(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD0Ev__index__); +emit_32(_ZN25btTriangleRaycastCallback15processTriangleEP9btVector3ii__index__); +emit_32(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallback9reportHitERK9btVector3fii__index__); +emit_start(_ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback); +emit_32(_ZTI25btTriangleRaycastCallback); +emit_start(_ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback) +emit_string('ZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback\x00'); +emit_start(_2E_str1089) +emit_string('convexSweepTest\x00'); +emit_start(_2E_str1190) +emit_string('performDiscreteCollisionDetection\x00'); +emit_start(_2E_str1291) +emit_string('calculateOverlappingPairs\x00'); +emit_start(_2E_str1392) +emit_string('dispatchAllCollisionPairs\x00'); +emit_start(_2E_str1493) +emit_string('convexSweepCompound\x00'); +emit_start(_2E_str1594) +emit_string('Overflow in AABB, object removed from simulation\x00'); +emit_start(_2E_str1695) +emit_string('If you can reproduce this, please email bugs@continuousphysics.com\x0a\x00'); +emit_start(_2E_str1796) +emit_string('Please include above information, your Platform, version of OS.\x0a\x00'); +emit_start(_2E_str1897) +emit_string('Thanks.\x0a\x00'); +emit_start(_2E_str1998) +emit_string('updateAabbs\x00'); +emit_start(_ZTV22btCompoundLeafCallback) +emit_32(0); +emit_32(_ZTI22btCompoundLeafCallback); +emit_32(_ZN22btCompoundLeafCallbackD1Ev__index__); +emit_32(_ZN22btCompoundLeafCallbackD0Ev__index__); +emit_32(_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodeS3___index__); +emit_32(_ZN22btCompoundLeafCallback7ProcessEPK10btDbvtNode__index__); +emit_32(_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodef__index__); +emit_32(_ZN6btDbvt8ICollide7DescentEPK10btDbvtNode__index__); +emit_32(_ZN6btDbvt8ICollide9AllLeavesEPK10btDbvtNode__index__); +emit_start(_ZTI22btCompoundLeafCallback) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS22btCompoundLeafCallback); +emit_32(_ZTIN6btDbvt8ICollideE); +emit_start(_ZTS22btCompoundLeafCallback) +emit_string('22btCompoundLeafCallback\x00'); +emit_start(_2E_str99) +emit_string('colObj->getCollisionShape()->isCompound()\x00'); +emit_start(_2E_str1100) +emit_string('../../../../src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp\x00'); +emit_start(_2E_str2101) +emit_string('localAabbMin.getX() <= localAabbMax.getX()\x00'); +emit_start(_2E_str3102) +emit_string('../../../../src/LinearMath/btAabbUtil2.h\x00'); +emit_start(_2E_str4103) +emit_string('localAabbMin.getY() <= localAabbMax.getY()\x00'); +emit_start(_2E_str5104) +emit_string('localAabbMin.getZ() <= localAabbMax.getZ()\x00'); +emit_start(_2E_str6105) +emit_string('index>=0\x00'); +emit_start(_2E_str7106) +emit_string('indexgetNumChildShapes()\x00'); +emit_start(_ZTV28btCompoundCollisionAlgorithm) +emit_32(0); +emit_32(_ZTI28btCompoundCollisionAlgorithm); +emit_32(_ZN28btCompoundCollisionAlgorithmD1Ev__index__); +emit_32(_ZN28btCompoundCollisionAlgorithmD0Ev__index__); +emit_32(_ZN28btCompoundCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__); +emit_32(_ZN28btCompoundCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__); +emit_32(_ZN28btCompoundCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__); +emit_start(_ZTI28btCompoundCollisionAlgorithm) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS28btCompoundCollisionAlgorithm); +emit_32(_ZTI30btActivatingCollisionAlgorithm); +emit_start(_ZTS28btCompoundCollisionAlgorithm) +emit_string('28btCompoundCollisionAlgorithm\x00'); +emit_start(_2E_str109) +emit_string('Triangle\x00'); +emit_start(_ZTV24btConvexTriangleCallback) +emit_32(0); +emit_32(_ZTI24btConvexTriangleCallback); +emit_32(_ZN24btConvexTriangleCallbackD1Ev__index__); +emit_32(_ZN24btConvexTriangleCallbackD0Ev__index__); +emit_32(_ZN24btConvexTriangleCallback15processTriangleEP9btVector3ii__index__); +emit_start(_ZTI24btConvexTriangleCallback) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS24btConvexTriangleCallback); +emit_32(_ZTI18btTriangleCallback); +emit_start(_ZTS24btConvexTriangleCallback) +emit_string('24btConvexTriangleCallback\x00'); +emit_start(_ZTVZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback) +emit_32(0); +emit_32(_ZTIZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback); +emit_32(_ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallbackD1Ev__index__); +emit_32(_ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallbackD0Ev__index__); +emit_32(_ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallback15processTriangleEP9btVector3ii__index__); +emit_start(_ZTIZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback); +emit_32(_ZTI18btTriangleCallback); +emit_start(_ZTSZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback) +emit_string('ZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback\x00'); +emit_start(_ZTV15btTriangleShape) +emit_32(0); +emit_32(_ZTI15btTriangleShape); +emit_32(_ZN15btTriangleShapeD1Ev__index__); +emit_32(_ZN15btTriangleShapeD0Ev__index__); +emit_32(_ZNK15btTriangleShape7getAabbERK11btTransformR9btVector3S4___index__); +emit_32(_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf__index__); +emit_32(_ZNK16btCollisionShape20getAngularMotionDiscEv__index__); +emit_32(_ZNK16btCollisionShape27getContactBreakingThresholdEf__index__); +emit_32(_ZN21btConvexInternalShape15setLocalScalingERK9btVector3__index__); +emit_32(_ZNK21btConvexInternalShape15getLocalScalingEv__index__); +emit_32(_ZNK15btTriangleShape21calculateLocalInertiaEfR9btVector3__index__); +emit_32(_ZNK15btTriangleShape7getNameEv__index__); +emit_32(_ZN21btConvexInternalShape9setMarginEf__index__); +emit_32(_ZNK21btConvexInternalShape9getMarginEv__index__); +emit_32(_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv__index__); +emit_32(_ZNK21btConvexInternalShape9serializeEPvP12btSerializer__index__); +emit_32(_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer__index__); +emit_32(_ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3__index__); +emit_32(_ZNK15btTriangleShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__); +emit_32(_ZNK15btTriangleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i__index__); +emit_32(_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4___index__); +emit_32(_ZNK15btTriangleShape36getNumPreferredPenetrationDirectionsEv__index__); +emit_32(_ZNK15btTriangleShape32getPreferredPenetrationDirectionEiR9btVector3__index__); +emit_32(_ZNK15btTriangleShape14getNumVerticesEv__index__); +emit_32(_ZNK15btTriangleShape11getNumEdgesEv__index__); +emit_32(_ZNK15btTriangleShape7getEdgeEiR9btVector3S1___index__); +emit_32(_ZNK15btTriangleShape9getVertexEiR9btVector3__index__); +emit_32(_ZNK15btTriangleShape12getNumPlanesEv__index__); +emit_32(_ZNK15btTriangleShape8getPlaneER9btVector3S1_i__index__); +emit_32(_ZNK15btTriangleShape8isInsideERK9btVector3f__index__); +emit_32(_ZNK15btTriangleShape16getPlaneEquationEiR9btVector3S1___index__); +emit_start(_ZTI15btTriangleShape) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS15btTriangleShape); +emit_32(_ZTI23btPolyhedralConvexShape); +emit_start(_ZTS15btTriangleShape) +emit_string('15btTriangleShape\x00'); +emit_start(_ZTI23btPolyhedralConvexShape) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS23btPolyhedralConvexShape); +emit_32(_ZTI21btConvexInternalShape); +emit_start(_ZTS23btPolyhedralConvexShape) +emit_string('23btPolyhedralConvexShape\x00'); +emit_start(_ZTI21btConvexInternalShape) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS21btConvexInternalShape); +emit_32(_ZTI13btConvexShape); +emit_start(_ZTS21btConvexInternalShape) +emit_string('21btConvexInternalShape\x00'); +emit_start(_ZTI13btConvexShape) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS13btConvexShape); +emit_32(_ZTI16btCollisionShape); +emit_start(_ZTS13btConvexShape) +emit_string('13btConvexShape\x00'); +emit_start(_ZTI16btCollisionShape) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS16btCollisionShape); +emit_start(_ZTS16btCollisionShape) +emit_string('16btCollisionShape\x00'); +emit_start(_2E_str1110) +emit_string('btConvexInternalShapeData\x00'); +emit_start(_2E_str3112) +emit_string('../../../../src/BulletCollision/CollisionShapes/btTriangleShape.h\x00'); +emit_start(_ZTV33btConvexConcaveCollisionAlgorithm) +emit_32(0); +emit_32(_ZTI33btConvexConcaveCollisionAlgorithm); +emit_32(_ZN33btConvexConcaveCollisionAlgorithmD1Ev__index__); +emit_32(_ZN33btConvexConcaveCollisionAlgorithmD0Ev__index__); +emit_32(_ZN33btConvexConcaveCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__); +emit_32(_ZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__); +emit_32(_ZN33btConvexConcaveCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__); +emit_start(_ZTI33btConvexConcaveCollisionAlgorithm) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS33btConvexConcaveCollisionAlgorithm); +emit_32(_ZTI30btActivatingCollisionAlgorithm); +emit_start(_ZTS33btConvexConcaveCollisionAlgorithm) +emit_string('33btConvexConcaveCollisionAlgorithm\x00'); +emit_start(_ZTI30btCollisionAlgorithmCreateFunc) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS30btCollisionAlgorithmCreateFunc); +emit_start(_ZTS30btCollisionAlgorithmCreateFunc) +emit_string('30btCollisionAlgorithmCreateFunc\x00'); +emit_start(_ZTVN23btConvexConvexAlgorithm10CreateFuncE) +emit_32(0); +emit_32(_ZTIN23btConvexConvexAlgorithm10CreateFuncE); +emit_32(_ZN23btConvexConvexAlgorithm10CreateFuncD1Ev__index__); +emit_32(_ZN23btConvexConvexAlgorithm10CreateFuncD0Ev__index__); +emit_32(_ZN23btConvexConvexAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__); +emit_start(_ZTIN23btConvexConvexAlgorithm10CreateFuncE) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSN23btConvexConvexAlgorithm10CreateFuncE); +emit_32(_ZTI30btCollisionAlgorithmCreateFunc); +emit_start(_ZTSN23btConvexConvexAlgorithm10CreateFuncE) +emit_string('N23btConvexConvexAlgorithm10CreateFuncE\x00'); +emit_start(_ZTV24btPerturbedContactResult) +emit_32(0); +emit_32(_ZTI24btPerturbedContactResult); +emit_32(_ZN24btPerturbedContactResultD1Ev__index__); +emit_32(_ZN24btPerturbedContactResultD0Ev__index__); +emit_32(_ZN16btManifoldResult20setShapeIdentifiersAEii__index__); +emit_32(_ZN16btManifoldResult20setShapeIdentifiersBEii__index__); +emit_32(_ZN24btPerturbedContactResult15addContactPointERK9btVector3S2_f__index__); +emit_start(_ZTI24btPerturbedContactResult) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS24btPerturbedContactResult); +emit_32(_ZTI16btManifoldResult); +emit_start(_ZTS24btPerturbedContactResult) +emit_string('24btPerturbedContactResult\x00'); +emit_start(_2E_str115) +emit_string('d != btScalar(0.0)\x00'); +emit_start(_2E_str4119) +emit_string('normalOnB.length2()>=(SIMD_EPSILON*SIMD_EPSILON)\x00'); +emit_start(_2E_str5120) +emit_string('../../../../src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp\x00'); +emit_start(_ZTV23btConvexConvexAlgorithm) +emit_32(0); +emit_32(_ZTI23btConvexConvexAlgorithm); +emit_32(_ZN23btConvexConvexAlgorithmD1Ev__index__); +emit_32(_ZN23btConvexConvexAlgorithmD0Ev__index__); +emit_32(_ZN23btConvexConvexAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__); +emit_32(_ZN23btConvexConvexAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__); +emit_32(_ZN23btConvexConvexAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__); +emit_start(_ZTI23btConvexConvexAlgorithm) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS23btConvexConvexAlgorithm); +emit_32(_ZTI30btActivatingCollisionAlgorithm); +emit_start(_ZTS23btConvexConvexAlgorithm) +emit_string('23btConvexConvexAlgorithm\x00'); +emit_start(_ZTV31btConvexPlaneCollisionAlgorithm) +emit_32(0); +emit_32(_ZTI31btConvexPlaneCollisionAlgorithm); +emit_32(_ZN31btConvexPlaneCollisionAlgorithmD1Ev__index__); +emit_32(_ZN31btConvexPlaneCollisionAlgorithmD0Ev__index__); +emit_32(_ZN31btConvexPlaneCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__); +emit_32(_ZN31btConvexPlaneCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__); +emit_32(_ZN31btConvexPlaneCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__); +emit_start(_ZTI31btConvexPlaneCollisionAlgorithm) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS31btConvexPlaneCollisionAlgorithm); +emit_32(_ZTI20btCollisionAlgorithm); +emit_start(_ZTS31btConvexPlaneCollisionAlgorithm) +emit_string('31btConvexPlaneCollisionAlgorithm\x00'); +emit_start(_ZTVN31btConvexPlaneCollisionAlgorithm10CreateFuncE) +emit_32(0); +emit_32(_ZTIN31btConvexPlaneCollisionAlgorithm10CreateFuncE); +emit_32(_ZN31btConvexPlaneCollisionAlgorithm10CreateFuncD1Ev__index__); +emit_32(_ZN31btConvexPlaneCollisionAlgorithm10CreateFuncD0Ev__index__); +emit_32(_ZN31btConvexPlaneCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__); +emit_start(_ZTIN31btConvexPlaneCollisionAlgorithm10CreateFuncE) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSN31btConvexPlaneCollisionAlgorithm10CreateFuncE); +emit_32(_ZTI30btCollisionAlgorithmCreateFunc); +emit_start(_ZTSN31btConvexPlaneCollisionAlgorithm10CreateFuncE) +emit_string('N31btConvexPlaneCollisionAlgorithm10CreateFuncE\x00'); +emit_start(_ZTI24btCollisionConfiguration) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS24btCollisionConfiguration); +emit_start(_ZTS24btCollisionConfiguration) +emit_string('24btCollisionConfiguration\x00'); +emit_start(_ZTVN33btConvexConcaveCollisionAlgorithm10CreateFuncE) +emit_32(0); +emit_32(_ZTIN33btConvexConcaveCollisionAlgorithm10CreateFuncE); +emit_32(_ZN33btConvexConcaveCollisionAlgorithm10CreateFuncD1Ev__index__); +emit_32(_ZN33btConvexConcaveCollisionAlgorithm10CreateFuncD0Ev__index__); +emit_32(_ZN33btConvexConcaveCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__); +emit_start(_ZTIN33btConvexConcaveCollisionAlgorithm10CreateFuncE) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSN33btConvexConcaveCollisionAlgorithm10CreateFuncE); +emit_32(_ZTI30btCollisionAlgorithmCreateFunc); +emit_start(_ZTSN33btConvexConcaveCollisionAlgorithm10CreateFuncE) +emit_string('N33btConvexConcaveCollisionAlgorithm10CreateFuncE\x00'); +emit_start(_ZTVN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE) +emit_32(0); +emit_32(_ZTIN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE); +emit_32(_ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncD1Ev__index__); +emit_32(_ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncD0Ev__index__); +emit_32(_ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__); +emit_start(_ZTIN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE); +emit_32(_ZTI30btCollisionAlgorithmCreateFunc); +emit_start(_ZTSN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE) +emit_string('N33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE\x00'); +emit_start(_ZTVN28btCompoundCollisionAlgorithm10CreateFuncE) +emit_32(0); +emit_32(_ZTIN28btCompoundCollisionAlgorithm10CreateFuncE); +emit_32(_ZN28btCompoundCollisionAlgorithm10CreateFuncD1Ev__index__); +emit_32(_ZN28btCompoundCollisionAlgorithm10CreateFuncD0Ev__index__); +emit_32(_ZN28btCompoundCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__); +emit_start(_ZTIN28btCompoundCollisionAlgorithm10CreateFuncE) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSN28btCompoundCollisionAlgorithm10CreateFuncE); +emit_32(_ZTI30btCollisionAlgorithmCreateFunc); +emit_start(_ZTSN28btCompoundCollisionAlgorithm10CreateFuncE) +emit_string('N28btCompoundCollisionAlgorithm10CreateFuncE\x00'); +emit_start(_ZTVN28btCompoundCollisionAlgorithm17SwappedCreateFuncE) +emit_32(0); +emit_32(_ZTIN28btCompoundCollisionAlgorithm17SwappedCreateFuncE); +emit_32(_ZN28btCompoundCollisionAlgorithm17SwappedCreateFuncD1Ev__index__); +emit_32(_ZN28btCompoundCollisionAlgorithm17SwappedCreateFuncD0Ev__index__); +emit_32(_ZN28btCompoundCollisionAlgorithm17SwappedCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__); +emit_start(_ZTIN28btCompoundCollisionAlgorithm17SwappedCreateFuncE) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSN28btCompoundCollisionAlgorithm17SwappedCreateFuncE); +emit_32(_ZTI30btCollisionAlgorithmCreateFunc); +emit_start(_ZTSN28btCompoundCollisionAlgorithm17SwappedCreateFuncE) +emit_string('N28btCompoundCollisionAlgorithm17SwappedCreateFuncE\x00'); +emit_start(_ZTVN16btEmptyAlgorithm10CreateFuncE) +emit_32(0); +emit_32(_ZTIN16btEmptyAlgorithm10CreateFuncE); +emit_32(_ZN16btEmptyAlgorithm10CreateFuncD1Ev__index__); +emit_32(_ZN16btEmptyAlgorithm10CreateFuncD0Ev__index__); +emit_32(_ZN16btEmptyAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__); +emit_start(_ZTIN16btEmptyAlgorithm10CreateFuncE) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSN16btEmptyAlgorithm10CreateFuncE); +emit_32(_ZTI30btCollisionAlgorithmCreateFunc); +emit_start(_ZTSN16btEmptyAlgorithm10CreateFuncE) +emit_string('N16btEmptyAlgorithm10CreateFuncE\x00'); +emit_start(_ZTVN32btSphereSphereCollisionAlgorithm10CreateFuncE) +emit_32(0); +emit_32(_ZTIN32btSphereSphereCollisionAlgorithm10CreateFuncE); +emit_32(_ZN32btSphereSphereCollisionAlgorithm10CreateFuncD1Ev__index__); +emit_32(_ZN32btSphereSphereCollisionAlgorithm10CreateFuncD0Ev__index__); +emit_32(_ZN32btSphereSphereCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__); +emit_start(_ZTIN32btSphereSphereCollisionAlgorithm10CreateFuncE) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSN32btSphereSphereCollisionAlgorithm10CreateFuncE); +emit_32(_ZTI30btCollisionAlgorithmCreateFunc); +emit_start(_ZTSN32btSphereSphereCollisionAlgorithm10CreateFuncE) +emit_string('N32btSphereSphereCollisionAlgorithm10CreateFuncE\x00'); +emit_start(_ZTVN34btSphereTriangleCollisionAlgorithm10CreateFuncE) +emit_32(0); +emit_32(_ZTIN34btSphereTriangleCollisionAlgorithm10CreateFuncE); +emit_32(_ZN34btSphereTriangleCollisionAlgorithm10CreateFuncD1Ev__index__); +emit_32(_ZN34btSphereTriangleCollisionAlgorithm10CreateFuncD0Ev__index__); +emit_32(_ZN34btSphereTriangleCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__); +emit_start(_ZTIN34btSphereTriangleCollisionAlgorithm10CreateFuncE) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSN34btSphereTriangleCollisionAlgorithm10CreateFuncE); +emit_32(_ZTI30btCollisionAlgorithmCreateFunc); +emit_start(_ZTSN34btSphereTriangleCollisionAlgorithm10CreateFuncE) +emit_string('N34btSphereTriangleCollisionAlgorithm10CreateFuncE\x00'); +emit_start(_ZTVN26btBoxBoxCollisionAlgorithm10CreateFuncE) +emit_32(0); +emit_32(_ZTIN26btBoxBoxCollisionAlgorithm10CreateFuncE); +emit_32(_ZN26btBoxBoxCollisionAlgorithm10CreateFuncD1Ev__index__); +emit_32(_ZN26btBoxBoxCollisionAlgorithm10CreateFuncD0Ev__index__); +emit_32(_ZN26btBoxBoxCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__); +emit_start(_ZTIN26btBoxBoxCollisionAlgorithm10CreateFuncE) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSN26btBoxBoxCollisionAlgorithm10CreateFuncE); +emit_32(_ZTI30btCollisionAlgorithmCreateFunc); +emit_start(_ZTSN26btBoxBoxCollisionAlgorithm10CreateFuncE) +emit_string('N26btBoxBoxCollisionAlgorithm10CreateFuncE\x00'); +emit_start(_2E_str128) +emit_string('usedsize==0\x00'); +emit_start(_2E_str1129) +emit_string('../../../../src/LinearMath/btStackAlloc.h\x00'); +emit_start(_ZTV31btDefaultCollisionConfiguration) +emit_32(0); +emit_32(_ZTI31btDefaultCollisionConfiguration); +emit_32(_ZN31btDefaultCollisionConfigurationD1Ev__index__); +emit_32(_ZN31btDefaultCollisionConfigurationD0Ev__index__); +emit_32(_ZN31btDefaultCollisionConfiguration25getPersistentManifoldPoolEv__index__); +emit_32(_ZN31btDefaultCollisionConfiguration25getCollisionAlgorithmPoolEv__index__); +emit_32(_ZN31btDefaultCollisionConfiguration17getStackAllocatorEv__index__); +emit_32(_ZN31btDefaultCollisionConfiguration31getCollisionAlgorithmCreateFuncEii__index__); +emit_32(_ZN31btDefaultCollisionConfiguration16getSimplexSolverEv__index__); +emit_start(_ZTI31btDefaultCollisionConfiguration) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS31btDefaultCollisionConfiguration); +emit_32(_ZTI24btCollisionConfiguration); +emit_start(_ZTS31btDefaultCollisionConfiguration) +emit_string('31btDefaultCollisionConfiguration\x00'); +emit_start(_ZTV16btEmptyAlgorithm) +emit_32(0); +emit_32(_ZTI16btEmptyAlgorithm); +emit_32(_ZN16btEmptyAlgorithmD1Ev__index__); +emit_32(_ZN16btEmptyAlgorithmD0Ev__index__); +emit_32(_ZN16btEmptyAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__); +emit_32(_ZN16btEmptyAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__); +emit_32(_ZN16btEmptyAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__); +emit_start(_ZTI16btEmptyAlgorithm) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS16btEmptyAlgorithm); +emit_32(_ZTI20btCollisionAlgorithm); +emit_start(_ZTS16btEmptyAlgorithm) +emit_string('16btEmptyAlgorithm\x00'); +emit_start(_ZTV16btManifoldResult) +emit_32(0); +emit_32(_ZTI16btManifoldResult); +emit_32(_ZN16btManifoldResultD1Ev__index__); +emit_32(_ZN16btManifoldResultD0Ev__index__); +emit_32(_ZN16btManifoldResult20setShapeIdentifiersAEii__index__); +emit_32(_ZN16btManifoldResult20setShapeIdentifiersBEii__index__); +emit_32(_ZN16btManifoldResult15addContactPointERK9btVector3S2_f__index__); +emit_start(_2E_str2149) +emit_string('validContactDistance(newPoint)\x00'); +emit_start(_2E_str3150) +emit_string('lifeTime>=0\x00'); +emit_start(_2E_str5152) +emit_string('../../../../src/BulletCollision/CollisionDispatch/btManifoldResult.cpp\x00'); +emit_start(_2E_str155) +emit_string('islandUnionFindAndQuickSort\x00'); +emit_start(_2E_str1156) +emit_string('(colObj0->getIslandTag() == islandId) || (colObj0->getIslandTag() == -1)\x00'); +emit_start(_2E_str2157) +emit_string('../../../../src/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp\x00'); +emit_start(_2E_str3158) +emit_string('processIslands\x00'); +emit_start(_ZTV25btSimulationIslandManager) +emit_32(0); +emit_32(_ZTI25btSimulationIslandManager); +emit_32(_ZN25btSimulationIslandManagerD1Ev__index__); +emit_32(_ZN25btSimulationIslandManagerD0Ev__index__); +emit_32(_ZN25btSimulationIslandManager21updateActivationStateEP16btCollisionWorldP12btDispatcher__index__); +emit_32(_ZN25btSimulationIslandManager26storeIslandActivationStateEP16btCollisionWorld__index__); +emit_start(_ZTI25btSimulationIslandManager) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS25btSimulationIslandManager); +emit_start(_ZTS25btSimulationIslandManager) +emit_string('25btSimulationIslandManager\x00'); +emit_start(_ZTV32btSphereSphereCollisionAlgorithm) +emit_32(0); +emit_32(_ZTI32btSphereSphereCollisionAlgorithm); +emit_32(_ZN32btSphereSphereCollisionAlgorithmD1Ev__index__); +emit_32(_ZN32btSphereSphereCollisionAlgorithmD0Ev__index__); +emit_32(_ZN32btSphereSphereCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__); +emit_32(_ZN32btSphereSphereCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__); +emit_32(_ZN32btSphereSphereCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__); +emit_start(_ZTI32btSphereSphereCollisionAlgorithm) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS32btSphereSphereCollisionAlgorithm); +emit_32(_ZTI30btActivatingCollisionAlgorithm); +emit_start(_ZTS32btSphereSphereCollisionAlgorithm) +emit_string('32btSphereSphereCollisionAlgorithm\x00'); +emit_start(_ZTV34btSphereTriangleCollisionAlgorithm) +emit_32(0); +emit_32(_ZTI34btSphereTriangleCollisionAlgorithm); +emit_32(_ZN34btSphereTriangleCollisionAlgorithmD1Ev__index__); +emit_32(_ZN34btSphereTriangleCollisionAlgorithmD0Ev__index__); +emit_32(_ZN34btSphereTriangleCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__); +emit_32(_ZN34btSphereTriangleCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__); +emit_32(_ZN34btSphereTriangleCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__); +emit_start(_ZTI34btSphereTriangleCollisionAlgorithm) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS34btSphereTriangleCollisionAlgorithm); +emit_32(_ZTI30btActivatingCollisionAlgorithm); +emit_start(_ZTS34btSphereTriangleCollisionAlgorithm) +emit_string('34btSphereTriangleCollisionAlgorithm\x00'); +emit_start(_ZTV22SphereTriangleDetector) +emit_32(0); +emit_32(_ZTI22SphereTriangleDetector); +emit_32(_ZN22SphereTriangleDetectorD1Ev__index__); +emit_32(_ZN22SphereTriangleDetectorD0Ev__index__); +emit_32(_ZN22SphereTriangleDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb__index__); +emit_start(_ZTI22SphereTriangleDetector) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS22SphereTriangleDetector); +emit_32(_ZTI36btDiscreteCollisionDetectorInterface); +emit_start(_ZTS22SphereTriangleDetector) +emit_string('22SphereTriangleDetector\x00'); +emit_start(_2E_str173) +emit_string('Box\x00'); +emit_start(_2E_str2175) +emit_string('../../../../src/BulletCollision/CollisionShapes/btBoxShape.h\x00'); +emit_start(_ZTV10btBoxShape) +emit_32(0); +emit_32(_ZTI10btBoxShape); +emit_32(_ZN10btBoxShapeD1Ev__index__); +emit_32(_ZN10btBoxShapeD0Ev__index__); +emit_32(_ZNK10btBoxShape7getAabbERK11btTransformR9btVector3S4___index__); +emit_32(_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf__index__); +emit_32(_ZNK16btCollisionShape20getAngularMotionDiscEv__index__); +emit_32(_ZNK16btCollisionShape27getContactBreakingThresholdEf__index__); +emit_32(_ZN10btBoxShape15setLocalScalingERK9btVector3__index__); +emit_32(_ZNK21btConvexInternalShape15getLocalScalingEv__index__); +emit_32(_ZNK10btBoxShape21calculateLocalInertiaEfR9btVector3__index__); +emit_32(_ZNK10btBoxShape7getNameEv__index__); +emit_32(_ZN10btBoxShape9setMarginEf__index__); +emit_32(_ZNK21btConvexInternalShape9getMarginEv__index__); +emit_32(_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv__index__); +emit_32(_ZNK21btConvexInternalShape9serializeEPvP12btSerializer__index__); +emit_32(_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer__index__); +emit_32(_ZNK10btBoxShape24localGetSupportingVertexERK9btVector3__index__); +emit_32(_ZNK10btBoxShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__); +emit_32(_ZNK10btBoxShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i__index__); +emit_32(_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4___index__); +emit_32(_ZNK10btBoxShape36getNumPreferredPenetrationDirectionsEv__index__); +emit_32(_ZNK10btBoxShape32getPreferredPenetrationDirectionEiR9btVector3__index__); +emit_32(_ZNK10btBoxShape14getNumVerticesEv__index__); +emit_32(_ZNK10btBoxShape11getNumEdgesEv__index__); +emit_32(_ZNK10btBoxShape7getEdgeEiR9btVector3S1___index__); +emit_32(_ZNK10btBoxShape9getVertexEiR9btVector3__index__); +emit_32(_ZNK10btBoxShape12getNumPlanesEv__index__); +emit_32(_ZNK10btBoxShape8getPlaneER9btVector3S1_i__index__); +emit_32(_ZNK10btBoxShape8isInsideERK9btVector3f__index__); +emit_32(_ZNK10btBoxShape16getPlaneEquationER9btVector4i__index__); +emit_start(_ZTI10btBoxShape) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS10btBoxShape); +emit_32(_ZTI23btPolyhedralConvexShape); +emit_start(_ZTS10btBoxShape) +emit_string('10btBoxShape\x00'); +emit_start(_2E_str181) +emit_string('BVHTRIANGLEMESH\x00'); +emit_start(_ZTVZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback) +emit_32(0); +emit_32(_ZTIZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback); +emit_32(_ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD1Ev__index__); +emit_32(_ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD0Ev__index__); +emit_32(_ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallback11processNodeEii__index__); +emit_start(_ZTIZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback); +emit_32(_ZTI21btNodeOverlapCallback); +emit_start(_ZTSZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback) +emit_string('ZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback\x00'); +emit_start(_ZTVZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback) +emit_32(0); +emit_32(_ZTIZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback); +emit_32(_ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallbackD1Ev__index__); +emit_32(_ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallbackD0Ev__index__); +emit_32(_ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallback11processNodeEii__index__); +emit_start(_ZTIZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback); +emit_32(_ZTI21btNodeOverlapCallback); +emit_start(_ZTSZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback) +emit_string('ZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback\x00'); +emit_start(_ZTVZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback) +emit_32(0); +emit_32(_ZTIZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback); +emit_32(_ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD1Ev__index__); +emit_32(_ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD0Ev__index__); +emit_32(_ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallback11processNodeEii__index__); +emit_start(_ZTIZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback); +emit_32(_ZTI21btNodeOverlapCallback); +emit_start(_ZTSZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback) +emit_string('ZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback\x00'); +emit_start(_2E_str5186) +emit_string('../../../../src/BulletCollision/CollisionShapes/btTriangleMeshShape.h\x00'); +emit_start(_2E_str6187) +emit_string('indicestype==PHY_INTEGER||indicestype==PHY_SHORT\x00'); +emit_start(_2E_str7188) +emit_string('../../../../src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp\x00'); +emit_start(_2E_str8189) +emit_string('btTriangleMeshShapeData\x00'); +emit_start(_ZTV22btBvhTriangleMeshShape) +emit_32(0); +emit_32(_ZTI22btBvhTriangleMeshShape); +emit_32(_ZN22btBvhTriangleMeshShapeD1Ev__index__); +emit_32(_ZN22btBvhTriangleMeshShapeD0Ev__index__); +emit_32(_ZNK19btTriangleMeshShape7getAabbERK11btTransformR9btVector3S4___index__); +emit_32(_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf__index__); +emit_32(_ZNK16btCollisionShape20getAngularMotionDiscEv__index__); +emit_32(_ZNK16btCollisionShape27getContactBreakingThresholdEf__index__); +emit_32(_ZN22btBvhTriangleMeshShape15setLocalScalingERK9btVector3__index__); +emit_32(_ZNK19btTriangleMeshShape15getLocalScalingEv__index__); +emit_32(_ZNK19btTriangleMeshShape21calculateLocalInertiaEfR9btVector3__index__); +emit_32(_ZNK22btBvhTriangleMeshShape7getNameEv__index__); +emit_32(_ZN14btConcaveShape9setMarginEf__index__); +emit_32(_ZNK14btConcaveShape9getMarginEv__index__); +emit_32(_ZNK22btBvhTriangleMeshShape28calculateSerializeBufferSizeEv__index__); +emit_32(_ZNK22btBvhTriangleMeshShape9serializeEPvP12btSerializer__index__); +emit_32(_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer__index__); +emit_32(_ZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4___index__); +emit_32(_ZNK19btTriangleMeshShape24localGetSupportingVertexERK9btVector3__index__); +emit_32(_ZNK19btTriangleMeshShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__); +emit_32(_ZNK22btBvhTriangleMeshShape18serializeSingleBvhEP12btSerializer__index__); +emit_32(_ZNK22btBvhTriangleMeshShape30serializeSingleTriangleInfoMapEP12btSerializer__index__); +emit_start(_ZTI22btBvhTriangleMeshShape) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS22btBvhTriangleMeshShape); +emit_32(_ZTI19btTriangleMeshShape); +emit_start(_ZTS22btBvhTriangleMeshShape) +emit_string('22btBvhTriangleMeshShape\x00'); +emit_start(_ZTI19btTriangleMeshShape) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS19btTriangleMeshShape); +emit_32(_ZTI14btConcaveShape); +emit_start(_ZTS19btTriangleMeshShape) +emit_string('19btTriangleMeshShape\x00'); +emit_start(_ZTI14btConcaveShape) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS14btConcaveShape); +emit_32(_ZTI16btCollisionShape); +emit_start(_ZTS14btConcaveShape) +emit_string('14btConcaveShape\x00'); +emit_start(_2E_str194) +emit_string('CapsuleShape\x00'); +emit_start(_2E_str4198) +emit_string('../../../../src/BulletCollision/CollisionShapes/btConvexInternalShape.h\x00'); +emit_start(_2E_str6199) +emit_string('btCapsuleShapeData\x00'); +emit_start(_ZTV14btCapsuleShape) +emit_32(0); +emit_32(_ZTI14btCapsuleShape); +emit_32(_ZN14btCapsuleShapeD1Ev__index__); +emit_32(_ZN14btCapsuleShapeD0Ev__index__); +emit_32(_ZNK14btCapsuleShape7getAabbERK11btTransformR9btVector3S4___index__); +emit_32(_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf__index__); +emit_32(_ZNK16btCollisionShape20getAngularMotionDiscEv__index__); +emit_32(_ZNK16btCollisionShape27getContactBreakingThresholdEf__index__); +emit_32(_ZN14btCapsuleShape15setLocalScalingERK9btVector3__index__); +emit_32(_ZNK21btConvexInternalShape15getLocalScalingEv__index__); +emit_32(_ZNK14btCapsuleShape21calculateLocalInertiaEfR9btVector3__index__); +emit_32(_ZNK14btCapsuleShape7getNameEv__index__); +emit_32(_ZN14btCapsuleShape9setMarginEf__index__); +emit_32(_ZNK21btConvexInternalShape9getMarginEv__index__); +emit_32(_ZNK14btCapsuleShape28calculateSerializeBufferSizeEv__index__); +emit_32(_ZNK14btCapsuleShape9serializeEPvP12btSerializer__index__); +emit_32(_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer__index__); +emit_32(_ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3__index__); +emit_32(_ZNK14btCapsuleShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__); +emit_32(_ZNK14btCapsuleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i__index__); +emit_32(_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4___index__); +emit_32(_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv__index__); +emit_32(_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3__index__); +emit_start(_ZTI14btCapsuleShape) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS14btCapsuleShape); +emit_32(_ZTI21btConvexInternalShape); +emit_start(_ZTS14btCapsuleShape) +emit_string('14btCapsuleShape\x00'); +emit_start(_2E_str200) +emit_string('btCollisionShapeData\x00'); +emit_start(_ZTV14btConcaveShape) +emit_32(0); +emit_32(_ZTI14btConcaveShape); +emit_32(_ZN14btConcaveShapeD1Ev__index__); +emit_32(_ZN14btConcaveShapeD0Ev__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf__index__); +emit_32(_ZNK16btCollisionShape20getAngularMotionDiscEv__index__); +emit_32(_ZNK16btCollisionShape27getContactBreakingThresholdEf__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(_ZN14btConcaveShape9setMarginEf__index__); +emit_32(_ZNK14btConcaveShape9getMarginEv__index__); +emit_32(_ZNK16btCollisionShape28calculateSerializeBufferSizeEv__index__); +emit_32(_ZNK16btCollisionShape9serializeEPvP12btSerializer__index__); +emit_32(_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer__index__); +emit_32(__cxa_pure_virtual__index__); +emit_start(_2E_str219) +emit_string('Convex\x00'); +emit_start(_2E_str3222) +emit_string('../../../../src/BulletCollision/CollisionShapes/btConvexHullShape.cpp\x00'); +emit_start(_ZTV17btConvexHullShape) +emit_32(0); +emit_32(_ZTI17btConvexHullShape); +emit_32(_ZN17btConvexHullShapeD1Ev__index__); +emit_32(_ZN17btConvexHullShapeD0Ev__index__); +emit_32(_ZNK34btPolyhedralConvexAabbCachingShape7getAabbERK11btTransformR9btVector3S4___index__); +emit_32(_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf__index__); +emit_32(_ZNK16btCollisionShape20getAngularMotionDiscEv__index__); +emit_32(_ZNK16btCollisionShape27getContactBreakingThresholdEf__index__); +emit_32(_ZN17btConvexHullShape15setLocalScalingERK9btVector3__index__); +emit_32(_ZNK21btConvexInternalShape15getLocalScalingEv__index__); +emit_32(_ZNK23btPolyhedralConvexShape21calculateLocalInertiaEfR9btVector3__index__); +emit_32(_ZNK17btConvexHullShape7getNameEv__index__); +emit_32(_ZN21btConvexInternalShape9setMarginEf__index__); +emit_32(_ZNK21btConvexInternalShape9getMarginEv__index__); +emit_32(_ZNK17btConvexHullShape28calculateSerializeBufferSizeEv__index__); +emit_32(_ZNK17btConvexHullShape9serializeEPvP12btSerializer__index__); +emit_32(_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer__index__); +emit_32(_ZNK17btConvexHullShape24localGetSupportingVertexERK9btVector3__index__); +emit_32(_ZNK17btConvexHullShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__); +emit_32(_ZNK17btConvexHullShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i__index__); +emit_32(_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4___index__); +emit_32(_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv__index__); +emit_32(_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3__index__); +emit_32(_ZNK17btConvexHullShape14getNumVerticesEv__index__); +emit_32(_ZNK17btConvexHullShape11getNumEdgesEv__index__); +emit_32(_ZNK17btConvexHullShape7getEdgeEiR9btVector3S1___index__); +emit_32(_ZNK17btConvexHullShape9getVertexEiR9btVector3__index__); +emit_32(_ZNK17btConvexHullShape12getNumPlanesEv__index__); +emit_32(_ZNK17btConvexHullShape8getPlaneER9btVector3S1_i__index__); +emit_32(_ZNK17btConvexHullShape8isInsideERK9btVector3f__index__); +emit_start(_ZTI17btConvexHullShape) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS17btConvexHullShape); +emit_32(_ZTI34btPolyhedralConvexAabbCachingShape); +emit_start(_ZTS17btConvexHullShape) +emit_string('17btConvexHullShape\x00'); +emit_start(_ZTI34btPolyhedralConvexAabbCachingShape) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS34btPolyhedralConvexAabbCachingShape); +emit_32(_ZTI23btPolyhedralConvexShape); +emit_start(_ZTS34btPolyhedralConvexAabbCachingShape) +emit_string('34btPolyhedralConvexAabbCachingShape\x00'); +emit_start(_2E_str5223) +emit_string('btVector3FloatData\x00'); +emit_start(_2E_str6224) +emit_string('btConvexHullShapeData\x00'); +emit_start(_2E_str6232) +emit_string('m_isLocalAabbValid\x00'); +emit_start(_ZTV13btConvexShape) +emit_32(0); +emit_32(_ZTI13btConvexShape); +emit_32(_ZN13btConvexShapeD1Ev__index__); +emit_32(_ZN13btConvexShapeD0Ev__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf__index__); +emit_32(_ZNK16btCollisionShape20getAngularMotionDiscEv__index__); +emit_32(_ZNK16btCollisionShape27getContactBreakingThresholdEf__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(_ZNK16btCollisionShape28calculateSerializeBufferSizeEv__index__); +emit_32(_ZNK16btCollisionShape9serializeEPvP12btSerializer__index__); +emit_32(_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_start(_2E_str6249) +emit_string('ptIndex >= 0\x00'); +emit_start(_2E_str7250) +emit_string('../../../../src/BulletCollision/CollisionShapes/btConvexShape.cpp\x00'); +emit_start(_ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback) +emit_32(0); +emit_32(_ZTIZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback); +emit_32(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallbackD1Ev__index__); +emit_32(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallbackD0Ev__index__); +emit_32(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallback28internalProcessTriangleIndexEPS2_ii__index__); +emit_start(_ZTIZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback); +emit_32(_ZTI31btInternalTriangleIndexCallback); +emit_start(_ZTSZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback) +emit_string('ZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback\x00'); +emit_start(_ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback) +emit_32(0); +emit_32(_ZTIZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback); +emit_32(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallbackD1Ev__index__); +emit_32(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallbackD0Ev__index__); +emit_32(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallback28internalProcessTriangleIndexEPS2_ii__index__); +emit_start(_ZTIZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback); +emit_32(_ZTI31btInternalTriangleIndexCallback); +emit_start(_ZTSZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback) +emit_string('ZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback\x00'); +emit_start(_2E_str10306) +emit_string('../../../../src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp\x00'); +emit_start(_2E_str18314) +emit_string('partId < (1<=0\x00'); +emit_start(_ZTV14btOptimizedBvh) +emit_32(0); +emit_32(_ZTI14btOptimizedBvh); +emit_32(_ZN14btOptimizedBvhD1Ev__index__); +emit_32(_ZN14btOptimizedBvhD0Ev__index__); +emit_32(_ZNK14btQuantizedBvh9serializeEPvjb__index__); +emit_32(_ZNK14btQuantizedBvh31calculateSerializeBufferSizeNewEv__index__); +emit_32(_ZNK14btQuantizedBvh9serializeEPvP12btSerializer__index__); +emit_32(_ZN14btQuantizedBvh16deSerializeFloatER23btQuantizedBvhFloatData__index__); +emit_32(_ZN14btQuantizedBvh17deSerializeDoubleER24btQuantizedBvhDoubleData__index__); +emit_32(_ZNK14btOptimizedBvh16serializeInPlaceEPvjb__index__); +emit_start(_ZTI14btOptimizedBvh) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS14btOptimizedBvh); +emit_32(_ZTI14btQuantizedBvh); +emit_start(_ZTS14btOptimizedBvh) +emit_string('14btOptimizedBvh\x00'); +emit_start(_2E_str7331) +emit_string('../../../../src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h\x00'); +emit_start(_2E_str342) +emit_string('SPHERE\x00'); +emit_start(_ZTV13btSphereShape) +emit_32(0); +emit_32(_ZTI13btSphereShape); +emit_32(_ZN13btSphereShapeD1Ev__index__); +emit_32(_ZN13btSphereShapeD0Ev__index__); +emit_32(_ZNK13btSphereShape7getAabbERK11btTransformR9btVector3S4___index__); +emit_32(_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf__index__); +emit_32(_ZNK16btCollisionShape20getAngularMotionDiscEv__index__); +emit_32(_ZNK16btCollisionShape27getContactBreakingThresholdEf__index__); +emit_32(_ZN21btConvexInternalShape15setLocalScalingERK9btVector3__index__); +emit_32(_ZNK21btConvexInternalShape15getLocalScalingEv__index__); +emit_32(_ZNK13btSphereShape21calculateLocalInertiaEfR9btVector3__index__); +emit_32(_ZNK13btSphereShape7getNameEv__index__); +emit_32(_ZN13btSphereShape9setMarginEf__index__); +emit_32(_ZNK13btSphereShape9getMarginEv__index__); +emit_32(_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv__index__); +emit_32(_ZNK21btConvexInternalShape9serializeEPvP12btSerializer__index__); +emit_32(_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer__index__); +emit_32(_ZNK13btSphereShape24localGetSupportingVertexERK9btVector3__index__); +emit_32(_ZNK13btSphereShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__); +emit_32(_ZNK13btSphereShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i__index__); +emit_32(_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4___index__); +emit_32(_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv__index__); +emit_32(_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3__index__); +emit_start(_ZTI13btSphereShape) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS13btSphereShape); +emit_32(_ZTI21btConvexInternalShape); +emit_start(_ZTS13btSphereShape) +emit_string('13btSphereShape\x00'); +emit_start(_2E_str349) +emit_string('btIntIndexData\x00'); +emit_start(_2E_str1350) +emit_string('btShortIntIndexTripletData\x00'); +emit_start(_2E_str3352) +emit_string('../../../../src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp\x00'); +emit_start(_2E_str5354) +emit_string('btVector3DoubleData\x00'); +emit_start(_2E_str6355) +emit_string('(type == PHY_FLOAT) || (type == PHY_DOUBLE)\x00'); +emit_start(_2E_str7356) +emit_string('btMeshPartData\x00'); +emit_start(_2E_str8357) +emit_string('btStridingMeshInterfaceData\x00'); +emit_start(_2E_str9358) +emit_string('(gfxindextype == PHY_INTEGER) || (gfxindextype == PHY_SHORT)\x00'); +emit_start(_ZTV23btStridingMeshInterface) +emit_32(0); +emit_32(_ZTI23btStridingMeshInterface); +emit_32(_ZN23btStridingMeshInterfaceD1Ev__index__); +emit_32(_ZN23btStridingMeshInterfaceD0Ev__index__); +emit_32(_ZNK23btStridingMeshInterface27InternalProcessAllTrianglesEP31btInternalTriangleIndexCallbackRK9btVector3S4___index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(__cxa_pure_virtual__index__); +emit_32(_ZNK23btStridingMeshInterface14hasPremadeAabbEv__index__); +emit_32(_ZNK23btStridingMeshInterface14setPremadeAabbERK9btVector3S2___index__); +emit_32(_ZNK23btStridingMeshInterface14getPremadeAabbEP9btVector3S1___index__); +emit_32(_ZNK23btStridingMeshInterface28calculateSerializeBufferSizeEv__index__); +emit_32(_ZNK23btStridingMeshInterface9serializeEPvP12btSerializer__index__); +emit_start(_ZTI23btStridingMeshInterface) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS23btStridingMeshInterface); +emit_start(_ZTS23btStridingMeshInterface) +emit_string('23btStridingMeshInterface\x00'); +emit_start(_ZTV31btInternalTriangleIndexCallback) +emit_32(0); +emit_32(_ZTI31btInternalTriangleIndexCallback); +emit_32(_ZN31btInternalTriangleIndexCallbackD1Ev__index__); +emit_32(_ZN31btInternalTriangleIndexCallbackD0Ev__index__); +emit_32(__cxa_pure_virtual__index__); +emit_start(_ZTV18btTriangleCallback) +emit_32(0); +emit_32(_ZTI18btTriangleCallback); +emit_32(_ZN18btTriangleCallbackD1Ev__index__); +emit_32(_ZN18btTriangleCallbackD0Ev__index__); +emit_32(__cxa_pure_virtual__index__); +emit_start(_2E_str367) +emit_string('subpart< getNumSubParts()\x00'); +emit_start(_2E_str1368) +emit_string('../../../../src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp\x00'); +emit_start(_ZTV26btTriangleIndexVertexArray) +emit_32(0); +emit_32(_ZTI26btTriangleIndexVertexArray); +emit_32(_ZN26btTriangleIndexVertexArrayD1Ev__index__); +emit_32(_ZN26btTriangleIndexVertexArrayD0Ev__index__); +emit_32(_ZNK23btStridingMeshInterface27InternalProcessAllTrianglesEP31btInternalTriangleIndexCallbackRK9btVector3S4___index__); +emit_32(_ZN26btTriangleIndexVertexArray24getLockedVertexIndexBaseEPPhRiR14PHY_ScalarTypeS2_S1_S2_S2_S4_i__index__); +emit_32(_ZNK26btTriangleIndexVertexArray32getLockedReadOnlyVertexIndexBaseEPPKhRiR14PHY_ScalarTypeS3_S2_S3_S3_S5_i__index__); +emit_32(_ZN26btTriangleIndexVertexArray16unLockVertexBaseEi__index__); +emit_32(_ZNK26btTriangleIndexVertexArray24unLockReadOnlyVertexBaseEi__index__); +emit_32(_ZNK26btTriangleIndexVertexArray14getNumSubPartsEv__index__); +emit_32(_ZN26btTriangleIndexVertexArray19preallocateVerticesEi__index__); +emit_32(_ZN26btTriangleIndexVertexArray18preallocateIndicesEi__index__); +emit_32(_ZNK26btTriangleIndexVertexArray14hasPremadeAabbEv__index__); +emit_32(_ZNK26btTriangleIndexVertexArray14setPremadeAabbERK9btVector3S2___index__); +emit_32(_ZNK26btTriangleIndexVertexArray14getPremadeAabbEP9btVector3S1___index__); +emit_32(_ZNK23btStridingMeshInterface28calculateSerializeBufferSizeEv__index__); +emit_32(_ZNK23btStridingMeshInterface9serializeEPvP12btSerializer__index__); +emit_start(_ZTI26btTriangleIndexVertexArray) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS26btTriangleIndexVertexArray); +emit_32(_ZTI23btStridingMeshInterface); +emit_start(_ZTS26btTriangleIndexVertexArray) +emit_string('26btTriangleIndexVertexArray\x00'); +emit_start(_2E_str372) +emit_string('TRIANGLEMESH\x00'); +emit_start(_ZTV21SupportVertexCallback) +emit_32(0); +emit_32(_ZTI21SupportVertexCallback); +emit_32(_ZN21SupportVertexCallbackD1Ev__index__); +emit_32(_ZN21SupportVertexCallbackD0Ev__index__); +emit_32(_ZN21SupportVertexCallback15processTriangleEP9btVector3ii__index__); +emit_start(_ZTI21SupportVertexCallback) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS21SupportVertexCallback); +emit_32(_ZTI18btTriangleCallback); +emit_start(_ZTS21SupportVertexCallback) +emit_string('21SupportVertexCallback\x00'); +emit_start(_ZTVZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback) +emit_32(0); +emit_32(_ZTIZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback); +emit_32(_ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallbackD1Ev__index__); +emit_32(_ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallbackD0Ev__index__); +emit_32(_ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallback28internalProcessTriangleIndexEPS2_ii__index__); +emit_start(_ZTIZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback); +emit_32(_ZTI31btInternalTriangleIndexCallback); +emit_start(_ZTSZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback) +emit_string('ZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback\x00'); +emit_start(_2E_str3375) +emit_string('../../../../src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp\x00'); +emit_start(_ZTV19btTriangleMeshShape) +emit_32(0); +emit_32(_ZTI19btTriangleMeshShape); +emit_32(_ZN19btTriangleMeshShapeD1Ev__index__); +emit_32(_ZN19btTriangleMeshShapeD0Ev__index__); +emit_32(_ZNK19btTriangleMeshShape7getAabbERK11btTransformR9btVector3S4___index__); +emit_32(_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf__index__); +emit_32(_ZNK16btCollisionShape20getAngularMotionDiscEv__index__); +emit_32(_ZNK16btCollisionShape27getContactBreakingThresholdEf__index__); +emit_32(_ZN19btTriangleMeshShape15setLocalScalingERK9btVector3__index__); +emit_32(_ZNK19btTriangleMeshShape15getLocalScalingEv__index__); +emit_32(_ZNK19btTriangleMeshShape21calculateLocalInertiaEfR9btVector3__index__); +emit_32(_ZNK19btTriangleMeshShape7getNameEv__index__); +emit_32(_ZN14btConcaveShape9setMarginEf__index__); +emit_32(_ZNK14btConcaveShape9getMarginEv__index__); +emit_32(_ZNK16btCollisionShape28calculateSerializeBufferSizeEv__index__); +emit_32(_ZNK16btCollisionShape9serializeEPvP12btSerializer__index__); +emit_32(_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer__index__); +emit_32(_ZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4___index__); +emit_32(_ZNK19btTriangleMeshShape24localGetSupportingVertexERK9btVector3__index__); +emit_32(_ZNK19btTriangleMeshShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__); +emit_start(_ZTV16btPointCollector) +emit_32(0); +emit_32(_ZTI16btPointCollector); +emit_32(_ZN16btPointCollectorD1Ev__index__); +emit_32(_ZN16btPointCollectorD0Ev__index__); +emit_32(_ZN16btPointCollector20setShapeIdentifiersAEii__index__); +emit_32(_ZN16btPointCollector20setShapeIdentifiersBEii__index__); +emit_32(_ZN16btPointCollector15addContactPointERK9btVector3S2_f__index__); +emit_start(_ZTI16btPointCollector) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS16btPointCollector); +emit_32(_ZTIN36btDiscreteCollisionDetectorInterface6ResultE); +emit_start(_ZTS16btPointCollector) +emit_string('16btPointCollector\x00'); +emit_start(_ZTV27btContinuousConvexCollision) +emit_32(0); +emit_32(_ZTI27btContinuousConvexCollision); +emit_32(_ZN27btContinuousConvexCollisionD1Ev__index__); +emit_32(_ZN27btContinuousConvexCollisionD0Ev__index__); +emit_32(_ZN27btContinuousConvexCollision16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE__index__); +emit_start(_ZTI27btContinuousConvexCollision) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS27btContinuousConvexCollision); +emit_32(_ZTI12btConvexCast); +emit_start(_ZTS27btContinuousConvexCollision) +emit_string('27btContinuousConvexCollision\x00'); +emit_start(_ZTI12btConvexCast) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS12btConvexCast); +emit_start(_ZTS12btConvexCast) +emit_string('12btConvexCast\x00'); +emit_start(_ZTV12btConvexCast) +emit_32(0); +emit_32(_ZTI12btConvexCast); +emit_32(_ZN12btConvexCastD1Ev__index__); +emit_32(_ZN12btConvexCastD0Ev__index__); +emit_32(__cxa_pure_virtual__index__); +emit_start(_ZTV15btGjkConvexCast) +emit_32(0); +emit_32(_ZTI15btGjkConvexCast); +emit_32(_ZN15btGjkConvexCastD1Ev__index__); +emit_32(_ZN15btGjkConvexCastD0Ev__index__); +emit_32(_ZN15btGjkConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE__index__); +emit_start(_ZTI15btGjkConvexCast) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS15btGjkConvexCast); +emit_32(_ZTI12btConvexCast); +emit_start(_ZTS15btGjkConvexCast) +emit_string('15btGjkConvexCast\x00'); +emit_start(_ZZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRjE4imd3) +emit_32(1); +emit_32(2); +emit_32(0); +emit_start(_ZZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonEE4i2m3) +emit_32(2); +emit_32(0); +emit_32(1); +emit_start(_ZTV30btGjkEpaPenetrationDepthSolver) +emit_32(0); +emit_32(_ZTI30btGjkEpaPenetrationDepthSolver); +emit_32(_ZN30btGjkEpaPenetrationDepthSolverD1Ev__index__); +emit_32(_ZN30btGjkEpaPenetrationDepthSolverD0Ev__index__); +emit_32(_ZN30btGjkEpaPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAlloc__index__); +emit_start(_ZTI30btGjkEpaPenetrationDepthSolver) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS30btGjkEpaPenetrationDepthSolver); +emit_32(_ZTI30btConvexPenetrationDepthSolver); +emit_start(_ZTS30btGjkEpaPenetrationDepthSolver) +emit_string('30btGjkEpaPenetrationDepthSolver\x00'); +emit_start(_ZTV17btGjkPairDetector) +emit_32(0); +emit_32(_ZTI17btGjkPairDetector); +emit_32(_ZN17btGjkPairDetectorD1Ev__index__); +emit_32(_ZN17btGjkPairDetectorD0Ev__index__); +emit_32(_ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb__index__); +emit_start(_ZTI17btGjkPairDetector) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS17btGjkPairDetector); +emit_32(_ZTI36btDiscreteCollisionDetectorInterface); +emit_start(_ZTS17btGjkPairDetector) +emit_string('17btGjkPairDetector\x00'); +emit_start(_2E_str425) +emit_string('btGjkPairDetector maxIter exceeded:%i\x0a\x00'); +emit_start(_2E_str1426) +emit_string('sepAxis=(%f,%f,%f), squaredDistance = %f, shapeTypeA=%i,shapeTypeB=%i\x0a\x00'); +emit_start(_2E_str2427) +emit_string('s > btScalar(0.0)\x00'); +emit_start(_2E_str3428) +emit_string('../../../../src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp\x00'); +emit_start(gContactBreakingThreshold) +emit_32(1017370378); +emit_start(_2E_str434) +emit_string('m_pointCache[lastUsedIndex].m_userPersistentData==0\x00'); +emit_start(_2E_str3437) +emit_string('../../../../src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp\x00'); +emit_start(_2E_str4438) +emit_string('m_pointCache[insertIndex].m_userPersistentData==0\x00'); +emit_start(_ZTV28btTriangleConvexcastCallback) +emit_32(0); +emit_32(_ZTI28btTriangleConvexcastCallback); +emit_32(_ZN28btTriangleConvexcastCallbackD1Ev__index__); +emit_32(_ZN28btTriangleConvexcastCallbackD0Ev__index__); +emit_32(_ZN28btTriangleConvexcastCallback15processTriangleEP9btVector3ii__index__); +emit_32(__cxa_pure_virtual__index__); +emit_start(_ZTV22btSubsimplexConvexCast) +emit_32(0); +emit_32(_ZTI22btSubsimplexConvexCast); +emit_32(_ZN22btSubsimplexConvexCastD1Ev__index__); +emit_32(_ZN22btSubsimplexConvexCastD0Ev__index__); +emit_32(_ZN22btSubsimplexConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE__index__); +emit_start(_ZTI22btSubsimplexConvexCast) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS22btSubsimplexConvexCast); +emit_32(_ZTI12btConvexCast); +emit_start(_ZTS22btSubsimplexConvexCast) +emit_string('22btSubsimplexConvexCast\x00'); +emit_start(_2E_str457) +emit_string('m_numVertices>0\x00'); +emit_start(_2E_str1458) +emit_string('../../../../src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp\x00'); +emit_start(_ZTVN16btCollisionWorld27ClosestConvexResultCallbackE) +emit_32(0); +emit_32(_ZTIN16btCollisionWorld27ClosestConvexResultCallbackE); +emit_32(_ZN16btCollisionWorld27ClosestConvexResultCallbackD1Ev__index__); +emit_32(_ZN16btCollisionWorld27ClosestConvexResultCallbackD0Ev__index__); +emit_32(_ZNK16btCollisionWorld20ConvexResultCallback14needsCollisionEP17btBroadphaseProxy__index__); +emit_32(_ZN16btCollisionWorld27ClosestConvexResultCallback15addSingleResultERNS_17LocalConvexResultEb__index__); +emit_start(_ZTIN16btCollisionWorld27ClosestConvexResultCallbackE) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSN16btCollisionWorld27ClosestConvexResultCallbackE); +emit_32(_ZTIN16btCollisionWorld20ConvexResultCallbackE); +emit_start(_ZTSN16btCollisionWorld27ClosestConvexResultCallbackE) +emit_string('N16btCollisionWorld27ClosestConvexResultCallbackE\x00'); +emit_start(_2E_str36) +emit_string('convexResult.m_hitFraction <= m_closestHitFraction\x00'); +emit_start(_2E_str239) +emit_string('btConeTwistConstraintData\x00'); +emit_start(_ZTV21btConeTwistConstraint) +emit_32(0); +emit_32(_ZTI21btConeTwistConstraint); +emit_32(_ZN21btConeTwistConstraintD1Ev__index__); +emit_32(_ZN21btConeTwistConstraintD0Ev__index__); +emit_32(_ZN21btConeTwistConstraint13buildJacobianEv__index__); +emit_32(_ZN17btTypedConstraint21setupSolverConstraintER20btAlignedObjectArrayI18btSolverConstraintEiif__index__); +emit_32(_ZN21btConeTwistConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E__index__); +emit_32(_ZN21btConeTwistConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E__index__); +emit_32(_ZN21btConeTwistConstraint23solveConstraintObsoleteER11btRigidBodyS1_f__index__); +emit_32(_ZN21btConeTwistConstraint8setParamEifi__index__); +emit_32(_ZNK21btConeTwistConstraint8getParamEii__index__); +emit_32(_ZNK21btConeTwistConstraint28calculateSerializeBufferSizeEv__index__); +emit_32(_ZNK21btConeTwistConstraint9serializeEPvP12btSerializer__index__); +emit_start(_ZTI21btConeTwistConstraint) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS21btConeTwistConstraint); +emit_32(_ZTI17btTypedConstraint); +emit_start(_ZTS21btConeTwistConstraint) +emit_string('21btConeTwistConstraint\x00'); +emit_start(_2E_str1340) +emit_string('m_flags & BT_CONETWIST_FLAGS_LIN_ERP\x00'); +emit_start(_2E_str24) +emit_string('../../../../src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp\x00'); +emit_start(_2E_str442) +emit_string('m_flags & BT_CONETWIST_FLAGS_LIN_CFM\x00'); +emit_start(_2E_str543) +emit_string('m_flags & BT_CONETWIST_FLAGS_ANG_CFM\x00'); +emit_start(_2E_str846) +emit_string('m_Adiag > btScalar(0.0)\x00'); +emit_start(_2E_str947) +emit_string('../../../../src/BulletDynamics/ConstraintSolver/btJacobianEntry.h\x00'); +emit_start(_2E_str1149) +emit_string('!m_useSolveConstraintObsolete\x00'); +emit_start(_2E_str29) +emit_string('btHingeConstraintFloatData\x00'); +emit_start(_ZTV17btHingeConstraint) +emit_32(0); +emit_32(_ZTI17btHingeConstraint); +emit_32(_ZN17btHingeConstraintD1Ev__index__); +emit_32(_ZN17btHingeConstraintD0Ev__index__); +emit_32(_ZN17btHingeConstraint13buildJacobianEv__index__); +emit_32(_ZN17btTypedConstraint21setupSolverConstraintER20btAlignedObjectArrayI18btSolverConstraintEiif__index__); +emit_32(_ZN17btHingeConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E__index__); +emit_32(_ZN17btHingeConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E__index__); +emit_32(_ZN17btTypedConstraint23solveConstraintObsoleteER11btRigidBodyS1_f__index__); +emit_32(_ZN17btHingeConstraint8setParamEifi__index__); +emit_32(_ZNK17btHingeConstraint8getParamEii__index__); +emit_32(_ZNK17btHingeConstraint28calculateSerializeBufferSizeEv__index__); +emit_32(_ZNK17btHingeConstraint9serializeEPvP12btSerializer__index__); +emit_start(_ZTI17btHingeConstraint) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS17btHingeConstraint); +emit_32(_ZTI17btTypedConstraint); +emit_start(_ZTS17btHingeConstraint) +emit_string('17btHingeConstraint\x00'); +emit_start(_2E_str130) +emit_string('m_flags & BT_HINGE_FLAGS_ERP_STOP\x00'); +emit_start(_2E_str231) +emit_string('../../../../src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp\x00'); +emit_start(_2E_str332) +emit_string('m_flags & BT_HINGE_FLAGS_CFM_STOP\x00'); +emit_start(_2E_str433) +emit_string('m_flags & BT_HINGE_FLAGS_CFM_NORM\x00'); +emit_start(_ZTI18btConstraintSolver) +emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8); +emit_32(_ZTS18btConstraintSolver); +emit_start(_ZTS18btConstraintSolver) +emit_string('18btConstraintSolver\x00'); +emit_start(_ZTV35btSequentialImpulseConstraintSolver) +emit_32(0); +emit_32(_ZTI35btSequentialImpulseConstraintSolver); +emit_32(_ZN35btSequentialImpulseConstraintSolverD1Ev__index__); +emit_32(_ZN35btSequentialImpulseConstraintSolverD0Ev__index__); +emit_32(_ZN18btConstraintSolver12prepareSolveEii__index__); +emit_32(_ZN35btSequentialImpulseConstraintSolver10solveGroupEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAllocP12btDispatcher__index__); +emit_32(_ZN18btConstraintSolver9allSolvedERK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc__index__); +emit_32(_ZN35btSequentialImpulseConstraintSolver5resetEv__index__); +emit_32(_ZN35btSequentialImpulseConstraintSolver45solveGroupCacheFriendlySplitImpulseIterationsEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc__index__); +emit_32(_ZN35btSequentialImpulseConstraintSolver29solveGroupCacheFriendlyFinishEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc__index__); +emit_32(_ZN35btSequentialImpulseConstraintSolver28solveGroupCacheFriendlySetupEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc__index__); +emit_32(_ZN35btSequentialImpulseConstraintSolver33solveGroupCacheFriendlyIterationsEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc__index__); +emit_start(_ZTI35btSequentialImpulseConstraintSolver) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTS35btSequentialImpulseConstraintSolver); +emit_32(_ZTI18btConstraintSolver); +emit_start(_ZTS35btSequentialImpulseConstraintSolver) +emit_string('35btSequentialImpulseConstraintSolver\x00'); +emit_start(_2E_str248) +emit_string('m_constraintRefs.size()==0\x00'); +emit_start(_2E_str34955) +emit_string('../../../../src/BulletDynamics/Dynamics/btRigidBody.h\x00'); +emit_start(_2E_str450) +emit_string('solveGroup\x00'); +emit_start(_2E_str551) +emit_string('bodies\x00'); +emit_start(_2E_str652) +emit_string('../../../../src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp\x00'); +emit_start(_2E_str753) +emit_string('numBodies\x00'); +emit_start(_2E_str854) +emit_string('solveGroupCacheFriendlyIterations\x00'); +emit_start(_2E_str955) +emit_string('pt\x00'); +emit_start(_2E_str1056) +emit_string('solveGroupCacheFriendlySetup\x00'); +emit_start(_2E_str1157) +emit_string('currentRow\xff\xff\xff?456789:;<=\xff\xff\xff\xff\xff\xff\xff\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\xff\xff\xff\xff\xff\xff\x1a\x1b\x1c\x1d\x1e\x1f !\x22#$%&\x27()*+,-./0123\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff'); +emit_start(_ZL25s_mandreel_internal_width) +emit_32(1024); +emit_start(_ZL26s_mandreel_internal_height) +emit_32(768); +emit_start(_2E_str779) +emit_string('mandreel.fat\x00'); +emit_start(_2E_str3782) +emit_string('asynctexture\x00'); +emit_start(_2E_str4783) +emit_string('warning: asynctexture data not valid\x00'); +emit_start(_2E_str5784) +emit_string('packtexture\x00'); +emit_start(_2E_str6785) +emit_string('unpackedtextures\x00'); +emit_start(_ZTVN10__cxxabiv120__si_class_type_infoE) +emit_32(0); +emit_32(_ZTIN10__cxxabiv120__si_class_type_infoE); +emit_32(_ZN10__cxxabiv120__si_class_type_infoD1Ev__index__); +emit_32(_ZN10__cxxabiv120__si_class_type_infoD0Ev__index__); +emit_32(_ZNKSt9type_info15__is_function_pEv__index__); +emit_32(_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj__index__); +emit_32(_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv__index__); +emit_32(_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE__index__); +emit_32(_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE__index__); +emit_32(_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2___index__); +emit_start(_ZTIN10__cxxabiv120__si_class_type_infoE) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSN10__cxxabiv120__si_class_type_infoE); +emit_32(_ZTIN10__cxxabiv117__class_type_infoE); +emit_start(_ZTSN10__cxxabiv120__si_class_type_infoE) +emit_string('N10__cxxabiv120__si_class_type_infoE\x00'); +emit_start(_ZTIN10__cxxabiv117__class_type_infoE) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSN10__cxxabiv117__class_type_infoE); +emit_32(_ZTISt9type_info); +emit_start(_ZTSN10__cxxabiv117__class_type_infoE) +emit_string('N10__cxxabiv117__class_type_infoE\x00'); +emit_start(_ZTVN10__cxxabiv117__class_type_infoE) +emit_32(0); +emit_32(_ZTIN10__cxxabiv117__class_type_infoE); +emit_32(_ZN10__cxxabiv117__class_type_infoD1Ev__index__); +emit_32(_ZN10__cxxabiv117__class_type_infoD0Ev__index__); +emit_32(_ZNKSt9type_info15__is_function_pEv__index__); +emit_32(_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj__index__); +emit_32(_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv__index__); +emit_32(_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE__index__); +emit_32(_ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE__index__); +emit_32(_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2___index__); +emit_start(_ZTVN10__cxxabiv121__vmi_class_type_infoE) +emit_32(0); +emit_32(_ZTIN10__cxxabiv121__vmi_class_type_infoE); +emit_32(_ZN10__cxxabiv121__vmi_class_type_infoD1Ev__index__); +emit_32(_ZN10__cxxabiv121__vmi_class_type_infoD0Ev__index__); +emit_32(_ZNKSt9type_info15__is_function_pEv__index__); +emit_32(_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj__index__); +emit_32(_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv__index__); +emit_32(_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE__index__); +emit_32(_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE__index__); +emit_32(_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2___index__); +emit_start(_ZTIN10__cxxabiv121__vmi_class_type_infoE) +emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8); +emit_32(_ZTSN10__cxxabiv121__vmi_class_type_infoE); +emit_32(_ZTIN10__cxxabiv117__class_type_infoE); +emit_start(_ZTSN10__cxxabiv121__vmi_class_type_infoE) +emit_string('N10__cxxabiv121__vmi_class_type_infoE\x00'); +emit_start(_2E_str221) +emit_string('g_bInit\x00'); +emit_start(_2E_str1222) +emit_string('MandreelAudioLib.cpp\x00'); +emit_start(_2E_str3224) +emit_string('Mandreel_Audio_GetSoundDuration warning: sound duration not found(%s)\x0a\x00'); +emit_start(_2E_str4225) +emit_string('sandbox\x00'); +emit_start(_2E_str12233) +emit_string('%s%s\x00'); +emit_start(_2E_str22243) +emit_string('LoadSoundDuractions\x0a\x00'); +emit_start(_2E_str24245) +emit_string('error: mandreel.fat file not found. Maybe the working folder is not correctly set???\x0a\x00'); +emit_start(_2E_str26247) +emit_string('version\x00'); +emit_start(_2E_str27248) +emit_string('1.4\x00'); +emit_start(_2E_str28249) +emit_string('ERROR: mandreel.fat version number is (%s) instead of (%s)\x0a\x00'); +emit_start(_2E_str29250) +emit_string('audiofile\x00'); +emit_start(_2E_str30251) +emit_string('??\x00'); +emit_start(_2E_str31252) +emit_string('warning: audiofile(%s) duration can\x27t be read, invalid mandreel.fat file?\x0a\x00'); +emit_start(_2E_str32253) +emit_string('file\x00'); +emit_start(_2E_str33254) +emit_string('dir\x00'); +emit_start(_2E_str34255) +emit_string('!g_bInit\x00'); +emit_start(_2E_str35256) +emit_string('Mandreel_Audio_Init()\x00'); +emit_start(_ZL13s_fifo_errors) +emit_32(0); +emit_32(_ZL13s_fifo_errors+8); +emit_32(0); +emit_32(_ZL13s_fifo_errors+8); +emit_32(0); +emit_32(0); +emit_start(llvm_2E_global_ctors) +emit_32(65535); +emit_32(_GLOBAL__I_Landscape02Vtx__index__); +emit_32(65535); +emit_32(_GLOBAL__I__ZN7btClockC2Ev__index__); +emit_32(65535); +emit_32(_GLOBAL__I__ZN4__rw9__catfindEPNS_8__rw_catE__index__); +emit_32(65535); +emit_32(_GLOBAL__I__mandreel_create_tcp_socket__index__); +emit_32(65535); +emit_32(_GLOBAL__I__ZN5my_gl14glAttachShaderEjj__index__); +emit_start(llvm_2E_global_dtors) +emit_32(65535); +emit_32(_GLOBAL__D_Landscape02Vtx__index__); +emit_32(65535); +emit_32(_GLOBAL__D__Z6mymainiPPc__index__); +emit_32(65535); +emit_32(_GLOBAL__D__ZN19btGenericMemoryPool24allocate_from_free_nodesEj__index__); +emit_32(65535); +emit_32(_GLOBAL__D__ZN7btClockC2Ev__index__); +emit_32(65535); +emit_32(_GLOBAL__D__ZN4__rw9__catfindEPNS_8__rw_catE__index__); +emit_32(65535); +emit_32(_GLOBAL__D__ZN8OpenGLES12OpenGLESUtil15getCurrentErrorEv__index__); +emit_32(65535); +emit_32(_GLOBAL__D__ZN5my_gl14glAttachShaderEjj__index__); +emit_start(llvm_2E_used) +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value); +mandreel_call_constructors(llvm_2E_global_ctors,5,stackPos); +} +var _GLOBAL__D_Landscape02Vtx__index__ = register_delegate(_GLOBAL__D_Landscape02Vtx); +var _GLOBAL__D__Z6mymainiPPc__index__ = register_delegate(_GLOBAL__D__Z6mymainiPPc); +var _GLOBAL__D__ZN19btGenericMemoryPool24allocate_from_free_nodesEj__index__ = register_delegate(_GLOBAL__D__ZN19btGenericMemoryPool24allocate_from_free_nodesEj); +var _GLOBAL__D__ZN4__rw9__catfindEPNS_8__rw_catE__index__ = register_delegate(_GLOBAL__D__ZN4__rw9__catfindEPNS_8__rw_catE); +var _GLOBAL__D__ZN5my_gl14glAttachShaderEjj__index__ = register_delegate(_GLOBAL__D__ZN5my_gl14glAttachShaderEjj); +var _GLOBAL__D__ZN7btClockC2Ev__index__ = register_delegate(_GLOBAL__D__ZN7btClockC2Ev); +var _GLOBAL__D__ZN8OpenGLES12OpenGLESUtil15getCurrentErrorEv__index__ = register_delegate(_GLOBAL__D__ZN8OpenGLES12OpenGLESUtil15getCurrentErrorEv); +var _GLOBAL__I_Landscape02Vtx__index__ = register_delegate(_GLOBAL__I_Landscape02Vtx); +var _GLOBAL__I__ZN4__rw9__catfindEPNS_8__rw_catE__index__ = register_delegate(_GLOBAL__I__ZN4__rw9__catfindEPNS_8__rw_catE); +var _GLOBAL__I__ZN5my_gl14glAttachShaderEjj__index__ = register_delegate(_GLOBAL__I__ZN5my_gl14glAttachShaderEjj); +var _GLOBAL__I__ZN7btClockC2Ev__index__ = register_delegate(_GLOBAL__I__ZN7btClockC2Ev); +var _GLOBAL__I__mandreel_create_tcp_socket__index__ = register_delegate(_GLOBAL__I__mandreel_create_tcp_socket); +var _Z31MandreelDefaultDebugMsgCallbackiPKc__index__ = register_delegate(_Z31MandreelDefaultDebugMsgCallbackiPKc); +var _ZN10CFileCloud4feofEv__index__ = register_delegate(_ZN10CFileCloud4feofEv); +var _ZN10CFileCloud5freadEPvjj__index__ = register_delegate(_ZN10CFileCloud5freadEPvjj); +var _ZN10CFileCloud5fseekEli__index__ = register_delegate(_ZN10CFileCloud5fseekEli); +var _ZN10CFileCloud5ftellEv__index__ = register_delegate(_ZN10CFileCloud5ftellEv); +var _ZN10CFileCloud6fcloseEv__index__ = register_delegate(_ZN10CFileCloud6fcloseEv); +var _ZN10CFileCloud6fflushEv__index__ = register_delegate(_ZN10CFileCloud6fflushEv); +var _ZN10CFileCloud6fwriteEPKvjj__index__ = register_delegate(_ZN10CFileCloud6fwriteEPKvjj); +var _ZN10CFileCloud6ungetcEi__index__ = register_delegate(_ZN10CFileCloud6ungetcEi); +var _ZN10__cxxabiv117__class_type_infoD0Ev__index__ = register_delegate(_ZN10__cxxabiv117__class_type_infoD0Ev); +var _ZN10__cxxabiv117__class_type_infoD1Ev__index__ = register_delegate(_ZN10__cxxabiv117__class_type_infoD1Ev); +var _ZN10__cxxabiv120__si_class_type_infoD0Ev__index__ = register_delegate(_ZN10__cxxabiv120__si_class_type_infoD0Ev); +var _ZN10__cxxabiv120__si_class_type_infoD1Ev__index__ = register_delegate(_ZN10__cxxabiv120__si_class_type_infoD1Ev); +var _ZN10__cxxabiv121__vmi_class_type_infoD0Ev__index__ = register_delegate(_ZN10__cxxabiv121__vmi_class_type_infoD0Ev); +var _ZN10__cxxabiv121__vmi_class_type_infoD1Ev__index__ = register_delegate(_ZN10__cxxabiv121__vmi_class_type_infoD1Ev); +var _ZN10btBoxShape15setLocalScalingERK9btVector3__index__ = register_delegate(_ZN10btBoxShape15setLocalScalingERK9btVector3); +var _ZN10btBoxShape9setMarginEf__index__ = register_delegate(_ZN10btBoxShape9setMarginEf); +var _ZN10btBoxShapeD0Ev__index__ = register_delegate(_ZN10btBoxShapeD0Ev); +var _ZN10btBoxShapeD1Ev__index__ = register_delegate(_ZN10btBoxShapeD1Ev); +var _ZN11CFileStdout4feofEv__index__ = register_delegate(_ZN11CFileStdout4feofEv); +var _ZN11CFileStdout5freadEPvjj__index__ = register_delegate(_ZN11CFileStdout5freadEPvjj); +var _ZN11CFileStdout5fseekEli__index__ = register_delegate(_ZN11CFileStdout5fseekEli); +var _ZN11CFileStdout5ftellEv__index__ = register_delegate(_ZN11CFileStdout5ftellEv); +var _ZN11CFileStdout6fcloseEv__index__ = register_delegate(_ZN11CFileStdout6fcloseEv); +var _ZN11CFileStdout6fflushEv__index__ = register_delegate(_ZN11CFileStdout6fflushEv); +var _ZN11CFileStdout6fwriteEPKvjj__index__ = register_delegate(_ZN11CFileStdout6fwriteEPKvjj); +var _ZN11CFileStdout6ungetcEi__index__ = register_delegate(_ZN11CFileStdout6ungetcEi); +var _ZN11CFileSystem4feofEv__index__ = register_delegate(_ZN11CFileSystem4feofEv); +var _ZN11CFileSystem5freadEPvjj__index__ = register_delegate(_ZN11CFileSystem5freadEPvjj); +var _ZN11CFileSystem5fseekEli__index__ = register_delegate(_ZN11CFileSystem5fseekEli); +var _ZN11CFileSystem5ftellEv__index__ = register_delegate(_ZN11CFileSystem5ftellEv); +var _ZN11CFileSystem6fcloseEv__index__ = register_delegate(_ZN11CFileSystem6fcloseEv); +var _ZN11CFileSystem6fflushEv__index__ = register_delegate(_ZN11CFileSystem6fflushEv); +var _ZN11CFileSystem6fwriteEPKvjj__index__ = register_delegate(_ZN11CFileSystem6fwriteEPKvjj); +var _ZN11CFileSystem6ungetcEi__index__ = register_delegate(_ZN11CFileSystem6ungetcEi); +var _ZN11btRigidBody24checkCollideWithOverrideEP17btCollisionObject__index__ = register_delegate(_ZN11btRigidBody24checkCollideWithOverrideEP17btCollisionObject); +var _ZN11btRigidBodyD0Ev__index__ = register_delegate(_ZN11btRigidBodyD0Ev); +var _ZN11btRigidBodyD1Ev__index__ = register_delegate(_ZN11btRigidBodyD1Ev); +var _ZN12btAxisSweep3D0Ev__index__ = register_delegate(_ZN12btAxisSweep3D0Ev); +var _ZN12btAxisSweep3D1Ev__index__ = register_delegate(_ZN12btAxisSweep3D1Ev); +var _ZN12btConvexCast10CastResult15drawCoordSystemERK11btTransform__index__ = register_delegate(_ZN12btConvexCast10CastResult15drawCoordSystemERK11btTransform); +var _ZN12btConvexCast10CastResult9DebugDrawEf__index__ = register_delegate(_ZN12btConvexCast10CastResult9DebugDrawEf); +var _ZN12btConvexCast10CastResultD0Ev__index__ = register_delegate(_ZN12btConvexCast10CastResultD0Ev); +var _ZN12btConvexCast10CastResultD1Ev__index__ = register_delegate(_ZN12btConvexCast10CastResultD1Ev); +var _ZN12btConvexCastD0Ev__index__ = register_delegate(_ZN12btConvexCastD0Ev); +var _ZN12btConvexCastD1Ev__index__ = register_delegate(_ZN12btConvexCastD1Ev); +var _ZN12btDispatcherD0Ev__index__ = register_delegate(_ZN12btDispatcherD0Ev); +var _ZN12btDispatcherD1Ev__index__ = register_delegate(_ZN12btDispatcherD1Ev); +var _ZN13BenchmarkDemo15displayCallbackEv__index__ = register_delegate(_ZN13BenchmarkDemo15displayCallbackEv); +var _ZN13BenchmarkDemo20clientMoveAndDisplayEv__index__ = register_delegate(_ZN13BenchmarkDemo20clientMoveAndDisplayEv); +var _ZN13BenchmarkDemoD0Ev__index__ = register_delegate(_ZN13BenchmarkDemoD0Ev); +var _ZN13BenchmarkDemoD1Ev__index__ = register_delegate(_ZN13BenchmarkDemoD1Ev); +var _ZN13btConvexShapeD0Ev__index__ = register_delegate(_ZN13btConvexShapeD0Ev); +var _ZN13btConvexShapeD1Ev__index__ = register_delegate(_ZN13btConvexShapeD1Ev); +var _ZN13btSphereShape9setMarginEf__index__ = register_delegate(_ZN13btSphereShape9setMarginEf); +var _ZN13btSphereShapeD0Ev__index__ = register_delegate(_ZN13btSphereShapeD0Ev); +var _ZN13btSphereShapeD1Ev__index__ = register_delegate(_ZN13btSphereShapeD1Ev); +var _ZN14BenchmarkDemo4D0Ev__index__ = register_delegate(_ZN14BenchmarkDemo4D0Ev); +var _ZN14BenchmarkDemo4D1Ev__index__ = register_delegate(_ZN14BenchmarkDemo4D1Ev); +var _ZN14btCapsuleShape15setLocalScalingERK9btVector3__index__ = register_delegate(_ZN14btCapsuleShape15setLocalScalingERK9btVector3); +var _ZN14btCapsuleShape9setMarginEf__index__ = register_delegate(_ZN14btCapsuleShape9setMarginEf); +var _ZN14btCapsuleShapeD0Ev__index__ = register_delegate(_ZN14btCapsuleShapeD0Ev); +var _ZN14btCapsuleShapeD1Ev__index__ = register_delegate(_ZN14btCapsuleShapeD1Ev); +var _ZN14btConcaveShape9setMarginEf__index__ = register_delegate(_ZN14btConcaveShape9setMarginEf); +var _ZN14btConcaveShapeD0Ev__index__ = register_delegate(_ZN14btConcaveShapeD0Ev); +var _ZN14btConcaveShapeD1Ev__index__ = register_delegate(_ZN14btConcaveShapeD1Ev); +var _ZN14btOptimizedBvhD0Ev__index__ = register_delegate(_ZN14btOptimizedBvhD0Ev); +var _ZN14btOptimizedBvhD1Ev__index__ = register_delegate(_ZN14btOptimizedBvhD1Ev); +var _ZN14btQuantizedBvh16deSerializeFloatER23btQuantizedBvhFloatData__index__ = register_delegate(_ZN14btQuantizedBvh16deSerializeFloatER23btQuantizedBvhFloatData); +var _ZN14btQuantizedBvh17deSerializeDoubleER24btQuantizedBvhDoubleData__index__ = register_delegate(_ZN14btQuantizedBvh17deSerializeDoubleER24btQuantizedBvhDoubleData); +var _ZN14btQuantizedBvhD0Ev__index__ = register_delegate(_ZN14btQuantizedBvhD0Ev); +var _ZN14btQuantizedBvhD1Ev__index__ = register_delegate(_ZN14btQuantizedBvhD1Ev); +var _ZN15DemoApplication16getDynamicsWorldEv__index__ = register_delegate(_ZN15DemoApplication16getDynamicsWorldEv); +var _ZN15DemoApplication20localCreateRigidBodyEfRK11btTransformP16btCollisionShape__index__ = register_delegate(_ZN15DemoApplication20localCreateRigidBodyEfRK11btTransformP16btCollisionShape); +var _ZN15DemoApplication6myinitEv__index__ = register_delegate(_ZN15DemoApplication6myinitEv); +var _ZN15btDynamicsWorld10addVehicleEP17btActionInterface__index__ = register_delegate(_ZN15btDynamicsWorld10addVehicleEP17btActionInterface); +var _ZN15btDynamicsWorld12addCharacterEP17btActionInterface__index__ = register_delegate(_ZN15btDynamicsWorld12addCharacterEP17btActionInterface); +var _ZN15btDynamicsWorld13addConstraintEP17btTypedConstraintb__index__ = register_delegate(_ZN15btDynamicsWorld13addConstraintEP17btTypedConstraintb); +var _ZN15btDynamicsWorld13getConstraintEi__index__ = register_delegate(_ZN15btDynamicsWorld13getConstraintEi); +var _ZN15btDynamicsWorld13removeVehicleEP17btActionInterface__index__ = register_delegate(_ZN15btDynamicsWorld13removeVehicleEP17btActionInterface); +var _ZN15btDynamicsWorld15removeCharacterEP17btActionInterface__index__ = register_delegate(_ZN15btDynamicsWorld15removeCharacterEP17btActionInterface); +var _ZN15btDynamicsWorld16removeConstraintEP17btTypedConstraint__index__ = register_delegate(_ZN15btDynamicsWorld16removeConstraintEP17btTypedConstraint); +var _ZN15btDynamicsWorldD0Ev__index__ = register_delegate(_ZN15btDynamicsWorldD0Ev); +var _ZN15btDynamicsWorldD1Ev__index__ = register_delegate(_ZN15btDynamicsWorldD1Ev); +var _ZN15btGjkConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE__index__ = register_delegate(_ZN15btGjkConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE); +var _ZN15btGjkConvexCastD0Ev__index__ = register_delegate(_ZN15btGjkConvexCastD0Ev); +var _ZN15btGjkConvexCastD1Ev__index__ = register_delegate(_ZN15btGjkConvexCastD1Ev); +var _ZN15btNullPairCache18addOverlappingPairEP17btBroadphaseProxyS1___index__ = register_delegate(_ZN15btNullPairCache18addOverlappingPairEP17btBroadphaseProxyS1_); +var _ZN15btNullPairCache18hasDeferredRemovalEv__index__ = register_delegate(_ZN15btNullPairCache18hasDeferredRemovalEv); +var _ZN15btNullPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher__index__ = register_delegate(_ZN15btNullPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher); +var _ZN15btNullPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher__index__ = register_delegate(_ZN15btNullPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher); +var _ZN15btNullPairCache20sortOverlappingPairsEP12btDispatcher__index__ = register_delegate(_ZN15btNullPairCache20sortOverlappingPairsEP12btDispatcher); +var _ZN15btNullPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher__index__ = register_delegate(_ZN15btNullPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher); +var _ZN15btNullPairCache23getOverlappingPairArrayEv__index__ = register_delegate(_ZN15btNullPairCache23getOverlappingPairArrayEv); +var _ZN15btNullPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback__index__ = register_delegate(_ZN15btNullPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback); +var _ZN15btNullPairCache26getOverlappingPairArrayPtrEv__index__ = register_delegate(_ZN15btNullPairCache26getOverlappingPairArrayPtrEv); +var _ZN15btNullPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher__index__ = register_delegate(_ZN15btNullPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher); +var _ZN15btNullPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback__index__ = register_delegate(_ZN15btNullPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback); +var _ZN15btNullPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher__index__ = register_delegate(_ZN15btNullPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher); +var _ZN15btNullPairCache8findPairEP17btBroadphaseProxyS1___index__ = register_delegate(_ZN15btNullPairCache8findPairEP17btBroadphaseProxyS1_); +var _ZN15btNullPairCacheD0Ev__index__ = register_delegate(_ZN15btNullPairCacheD0Ev); +var _ZN15btNullPairCacheD1Ev__index__ = register_delegate(_ZN15btNullPairCacheD1Ev); +var _ZN15btTriangleShapeD0Ev__index__ = register_delegate(_ZN15btTriangleShapeD0Ev); +var _ZN15btTriangleShapeD1Ev__index__ = register_delegate(_ZN15btTriangleShapeD1Ev); +var _ZN16btBoxBoxDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb__index__ = register_delegate(_ZN16btBoxBoxDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb); +var _ZN16btBoxBoxDetectorD0Ev__index__ = register_delegate(_ZN16btBoxBoxDetectorD0Ev); +var _ZN16btBoxBoxDetectorD1Ev__index__ = register_delegate(_ZN16btBoxBoxDetectorD1Ev); +var _ZN16btCollisionWorld11updateAabbsEv__index__ = register_delegate(_ZN16btCollisionWorld11updateAabbsEv); +var _ZN16btCollisionWorld14debugDrawWorldEv__index__ = register_delegate(_ZN16btCollisionWorld14debugDrawWorldEv); +var _ZN16btCollisionWorld14getDebugDrawerEv__index__ = register_delegate(_ZN16btCollisionWorld14getDebugDrawerEv); +var _ZN16btCollisionWorld14setDebugDrawerEP12btIDebugDraw__index__ = register_delegate(_ZN16btCollisionWorld14setDebugDrawerEP12btIDebugDraw); +var _ZN16btCollisionWorld15debugDrawObjectERK11btTransformPK16btCollisionShapeRK9btVector3__index__ = register_delegate(_ZN16btCollisionWorld15debugDrawObjectERK11btTransformPK16btCollisionShapeRK9btVector3); +var _ZN16btCollisionWorld18addCollisionObjectEP17btCollisionObjectss__index__ = register_delegate(_ZN16btCollisionWorld18addCollisionObjectEP17btCollisionObjectss); +var _ZN16btCollisionWorld21removeCollisionObjectEP17btCollisionObject__index__ = register_delegate(_ZN16btCollisionWorld21removeCollisionObjectEP17btCollisionObject); +var _ZN16btCollisionWorld24ClosestRayResultCallback15addSingleResultERNS_14LocalRayResultEb__index__ = register_delegate(_ZN16btCollisionWorld24ClosestRayResultCallback15addSingleResultERNS_14LocalRayResultEb); +var _ZN16btCollisionWorld24ClosestRayResultCallbackD0Ev__index__ = register_delegate(_ZN16btCollisionWorld24ClosestRayResultCallbackD0Ev); +var _ZN16btCollisionWorld24ClosestRayResultCallbackD1Ev__index__ = register_delegate(_ZN16btCollisionWorld24ClosestRayResultCallbackD1Ev); +var _ZN16btCollisionWorld27ClosestConvexResultCallback15addSingleResultERNS_17LocalConvexResultEb__index__ = register_delegate(_ZN16btCollisionWorld27ClosestConvexResultCallback15addSingleResultERNS_17LocalConvexResultEb); +var _ZN16btCollisionWorld27ClosestConvexResultCallbackD0Ev__index__ = register_delegate(_ZN16btCollisionWorld27ClosestConvexResultCallbackD0Ev); +var _ZN16btCollisionWorld27ClosestConvexResultCallbackD1Ev__index__ = register_delegate(_ZN16btCollisionWorld27ClosestConvexResultCallbackD1Ev); +var _ZN16btCollisionWorld33performDiscreteCollisionDetectionEv__index__ = register_delegate(_ZN16btCollisionWorld33performDiscreteCollisionDetectionEv); +var _ZN16btCollisionWorld9serializeEP12btSerializer__index__ = register_delegate(_ZN16btCollisionWorld9serializeEP12btSerializer); +var _ZN16btCollisionWorldD0Ev__index__ = register_delegate(_ZN16btCollisionWorldD0Ev); +var _ZN16btCollisionWorldD1Ev__index__ = register_delegate(_ZN16btCollisionWorldD1Ev); +var _ZN16btDbvtBroadphase10printStatsEv__index__ = register_delegate(_ZN16btDbvtBroadphase10printStatsEv); +var _ZN16btDbvtBroadphase11createProxyERK9btVector3S2_iPvssP12btDispatcherS3___index__ = register_delegate(_ZN16btDbvtBroadphase11createProxyERK9btVector3S2_iPvssP12btDispatcherS3_); +var _ZN16btDbvtBroadphase12destroyProxyEP17btBroadphaseProxyP12btDispatcher__index__ = register_delegate(_ZN16btDbvtBroadphase12destroyProxyEP17btBroadphaseProxyP12btDispatcher); +var _ZN16btDbvtBroadphase23getOverlappingPairCacheEv__index__ = register_delegate(_ZN16btDbvtBroadphase23getOverlappingPairCacheEv); +var _ZN16btDbvtBroadphase25calculateOverlappingPairsEP12btDispatcher__index__ = register_delegate(_ZN16btDbvtBroadphase25calculateOverlappingPairsEP12btDispatcher); +var _ZN16btDbvtBroadphase7rayTestERK9btVector3S2_R23btBroadphaseRayCallbackS2_S2___index__ = register_delegate(_ZN16btDbvtBroadphase7rayTestERK9btVector3S2_R23btBroadphaseRayCallbackS2_S2_); +var _ZN16btDbvtBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcher__index__ = register_delegate(_ZN16btDbvtBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcher); +var _ZN16btDbvtBroadphase8aabbTestERK9btVector3S2_R24btBroadphaseAabbCallback__index__ = register_delegate(_ZN16btDbvtBroadphase8aabbTestERK9btVector3S2_R24btBroadphaseAabbCallback); +var _ZN16btDbvtBroadphase9resetPoolEP12btDispatcher__index__ = register_delegate(_ZN16btDbvtBroadphase9resetPoolEP12btDispatcher); +var _ZN16btDbvtBroadphaseD0Ev__index__ = register_delegate(_ZN16btDbvtBroadphaseD0Ev); +var _ZN16btDbvtBroadphaseD1Ev__index__ = register_delegate(_ZN16btDbvtBroadphaseD1Ev); +var _ZN16btEmptyAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__ = register_delegate(_ZN16btEmptyAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_); +var _ZN16btEmptyAlgorithm10CreateFuncD0Ev__index__ = register_delegate(_ZN16btEmptyAlgorithm10CreateFuncD0Ev); +var _ZN16btEmptyAlgorithm10CreateFuncD1Ev__index__ = register_delegate(_ZN16btEmptyAlgorithm10CreateFuncD1Ev); +var _ZN16btEmptyAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN16btEmptyAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult); +var _ZN16btEmptyAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN16btEmptyAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult); +var _ZN16btEmptyAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__ = register_delegate(_ZN16btEmptyAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE); +var _ZN16btEmptyAlgorithmD0Ev__index__ = register_delegate(_ZN16btEmptyAlgorithmD0Ev); +var _ZN16btEmptyAlgorithmD1Ev__index__ = register_delegate(_ZN16btEmptyAlgorithmD1Ev); +var _ZN16btManifoldResult15addContactPointERK9btVector3S2_f__index__ = register_delegate(_ZN16btManifoldResult15addContactPointERK9btVector3S2_f); +var _ZN16btManifoldResult20setShapeIdentifiersAEii__index__ = register_delegate(_ZN16btManifoldResult20setShapeIdentifiersAEii); +var _ZN16btManifoldResult20setShapeIdentifiersBEii__index__ = register_delegate(_ZN16btManifoldResult20setShapeIdentifiersBEii); +var _ZN16btManifoldResultD0Ev__index__ = register_delegate(_ZN16btManifoldResultD0Ev); +var _ZN16btManifoldResultD1Ev__index__ = register_delegate(_ZN16btManifoldResultD1Ev); +var _ZN16btPointCollector15addContactPointERK9btVector3S2_f__index__ = register_delegate(_ZN16btPointCollector15addContactPointERK9btVector3S2_f); +var _ZN16btPointCollector20setShapeIdentifiersAEii__index__ = register_delegate(_ZN16btPointCollector20setShapeIdentifiersAEii); +var _ZN16btPointCollector20setShapeIdentifiersBEii__index__ = register_delegate(_ZN16btPointCollector20setShapeIdentifiersBEii); +var _ZN16btPointCollectorD0Ev__index__ = register_delegate(_ZN16btPointCollectorD0Ev); +var _ZN16btPointCollectorD1Ev__index__ = register_delegate(_ZN16btPointCollectorD1Ev); +var _ZN17DebugDrawcallback15processTriangleEP9btVector3ii__index__ = register_delegate(_ZN17DebugDrawcallback15processTriangleEP9btVector3ii); +var _ZN17DebugDrawcallback28internalProcessTriangleIndexEP9btVector3ii__index__ = register_delegate(_ZN17DebugDrawcallback28internalProcessTriangleIndexEP9btVector3ii); +var _ZN17DebugDrawcallbackD0Ev__index__ = register_delegate(_ZN17DebugDrawcallbackD0Ev); +var _ZN17DebugDrawcallbackD1Ev__index__ = register_delegate(_ZN17DebugDrawcallbackD1Ev); +var _ZN17btCollisionObject17setCollisionShapeEP16btCollisionShape__index__ = register_delegate(_ZN17btCollisionObject17setCollisionShapeEP16btCollisionShape); +var _ZN17btCollisionObject24checkCollideWithOverrideEPS___index__ = register_delegate(_ZN17btCollisionObject24checkCollideWithOverrideEPS_); +var _ZN17btCollisionObjectD0Ev__index__ = register_delegate(_ZN17btCollisionObjectD0Ev); +var _ZN17btCollisionObjectD1Ev__index__ = register_delegate(_ZN17btCollisionObjectD1Ev); +var _ZN17btConvexHullShape15setLocalScalingERK9btVector3__index__ = register_delegate(_ZN17btConvexHullShape15setLocalScalingERK9btVector3); +var _ZN17btConvexHullShapeD0Ev__index__ = register_delegate(_ZN17btConvexHullShapeD0Ev); +var _ZN17btConvexHullShapeD1Ev__index__ = register_delegate(_ZN17btConvexHullShapeD1Ev); +var _ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb__index__ = register_delegate(_ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb); +var _ZN17btGjkPairDetectorD0Ev__index__ = register_delegate(_ZN17btGjkPairDetectorD0Ev); +var _ZN17btGjkPairDetectorD1Ev__index__ = register_delegate(_ZN17btGjkPairDetectorD1Ev); +var _ZN17btHingeConstraint13buildJacobianEv__index__ = register_delegate(_ZN17btHingeConstraint13buildJacobianEv); +var _ZN17btHingeConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E__index__ = register_delegate(_ZN17btHingeConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E); +var _ZN17btHingeConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E__index__ = register_delegate(_ZN17btHingeConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E); +var _ZN17btHingeConstraint8setParamEifi__index__ = register_delegate(_ZN17btHingeConstraint8setParamEifi); +var _ZN17btHingeConstraintD0Ev__index__ = register_delegate(_ZN17btHingeConstraintD0Ev); +var _ZN17btHingeConstraintD1Ev__index__ = register_delegate(_ZN17btHingeConstraintD1Ev); +var _ZN17btTypedConstraint21setupSolverConstraintER20btAlignedObjectArrayI18btSolverConstraintEiif__index__ = register_delegate(_ZN17btTypedConstraint21setupSolverConstraintER20btAlignedObjectArrayI18btSolverConstraintEiif); +var _ZN17btTypedConstraint23solveConstraintObsoleteER11btRigidBodyS1_f__index__ = register_delegate(_ZN17btTypedConstraint23solveConstraintObsoleteER11btRigidBodyS1_f); +var _ZN18btConstraintSolver12prepareSolveEii__index__ = register_delegate(_ZN18btConstraintSolver12prepareSolveEii); +var _ZN18btConstraintSolver9allSolvedERK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc__index__ = register_delegate(_ZN18btConstraintSolver9allSolvedERK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc); +var _ZN18btDbvtTreeCollider7ProcessEPK10btDbvtNode__index__ = register_delegate(_ZN18btDbvtTreeCollider7ProcessEPK10btDbvtNode); +var _ZN18btDbvtTreeCollider7ProcessEPK10btDbvtNodeS2___index__ = register_delegate(_ZN18btDbvtTreeCollider7ProcessEPK10btDbvtNodeS2_); +var _ZN18btDbvtTreeColliderD0Ev__index__ = register_delegate(_ZN18btDbvtTreeColliderD0Ev); +var _ZN18btDbvtTreeColliderD1Ev__index__ = register_delegate(_ZN18btDbvtTreeColliderD1Ev); +var _ZN18btTriangleCallbackD0Ev__index__ = register_delegate(_ZN18btTriangleCallbackD0Ev); +var _ZN18btTriangleCallbackD1Ev__index__ = register_delegate(_ZN18btTriangleCallbackD1Ev); +var _ZN19BroadphaseRayTester7ProcessEPK10btDbvtNode__index__ = register_delegate(_ZN19BroadphaseRayTester7ProcessEPK10btDbvtNode); +var _ZN19BroadphaseRayTesterD0Ev__index__ = register_delegate(_ZN19BroadphaseRayTesterD0Ev); +var _ZN19BroadphaseRayTesterD1Ev__index__ = register_delegate(_ZN19BroadphaseRayTesterD1Ev); +var _ZN19btSingleRayCallback7processEPK17btBroadphaseProxy__index__ = register_delegate(_ZN19btSingleRayCallback7processEPK17btBroadphaseProxy); +var _ZN19btSingleRayCallbackD0Ev__index__ = register_delegate(_ZN19btSingleRayCallbackD0Ev); +var _ZN19btSingleRayCallbackD1Ev__index__ = register_delegate(_ZN19btSingleRayCallbackD1Ev); +var _ZN19btTriangleMeshShape15setLocalScalingERK9btVector3__index__ = register_delegate(_ZN19btTriangleMeshShape15setLocalScalingERK9btVector3); +var _ZN19btTriangleMeshShapeD0Ev__index__ = register_delegate(_ZN19btTriangleMeshShapeD0Ev); +var _ZN19btTriangleMeshShapeD1Ev__index__ = register_delegate(_ZN19btTriangleMeshShapeD1Ev); +var _ZN20BroadphaseAabbTester7ProcessEPK10btDbvtNode__index__ = register_delegate(_ZN20BroadphaseAabbTester7ProcessEPK10btDbvtNode); +var _ZN20BroadphaseAabbTesterD0Ev__index__ = register_delegate(_ZN20BroadphaseAabbTesterD0Ev); +var _ZN20BroadphaseAabbTesterD1Ev__index__ = register_delegate(_ZN20BroadphaseAabbTesterD1Ev); +var _ZN20btAxisSweep3InternalItE10printStatsEv__index__ = register_delegate(_ZN20btAxisSweep3InternalItE10printStatsEv); +var _ZN20btAxisSweep3InternalItE11createProxyERK9btVector3S3_iPvssP12btDispatcherS4___index__ = register_delegate(_ZN20btAxisSweep3InternalItE11createProxyERK9btVector3S3_iPvssP12btDispatcherS4_); +var _ZN20btAxisSweep3InternalItE12destroyProxyEP17btBroadphaseProxyP12btDispatcher__index__ = register_delegate(_ZN20btAxisSweep3InternalItE12destroyProxyEP17btBroadphaseProxyP12btDispatcher); +var _ZN20btAxisSweep3InternalItE23getOverlappingPairCacheEv__index__ = register_delegate(_ZN20btAxisSweep3InternalItE23getOverlappingPairCacheEv); +var _ZN20btAxisSweep3InternalItE25calculateOverlappingPairsEP12btDispatcher__index__ = register_delegate(_ZN20btAxisSweep3InternalItE25calculateOverlappingPairsEP12btDispatcher); +var _ZN20btAxisSweep3InternalItE7rayTestERK9btVector3S3_R23btBroadphaseRayCallbackS3_S3___index__ = register_delegate(_ZN20btAxisSweep3InternalItE7rayTestERK9btVector3S3_R23btBroadphaseRayCallbackS3_S3_); +var _ZN20btAxisSweep3InternalItE7setAabbEP17btBroadphaseProxyRK9btVector3S5_P12btDispatcher__index__ = register_delegate(_ZN20btAxisSweep3InternalItE7setAabbEP17btBroadphaseProxyRK9btVector3S5_P12btDispatcher); +var _ZN20btAxisSweep3InternalItE8aabbTestERK9btVector3S3_R24btBroadphaseAabbCallback__index__ = register_delegate(_ZN20btAxisSweep3InternalItE8aabbTestERK9btVector3S3_R24btBroadphaseAabbCallback); +var _ZN20btAxisSweep3InternalItE9resetPoolEP12btDispatcher__index__ = register_delegate(_ZN20btAxisSweep3InternalItE9resetPoolEP12btDispatcher); +var _ZN20btAxisSweep3InternalItED0Ev__index__ = register_delegate(_ZN20btAxisSweep3InternalItED0Ev); +var _ZN20btAxisSweep3InternalItED1Ev__index__ = register_delegate(_ZN20btAxisSweep3InternalItED1Ev); +var _ZN20btCollisionAlgorithmD0Ev__index__ = register_delegate(_ZN20btCollisionAlgorithmD0Ev); +var _ZN20btCollisionAlgorithmD1Ev__index__ = register_delegate(_ZN20btCollisionAlgorithmD1Ev); +var _ZN20btDefaultMotionState17setWorldTransformERK11btTransform__index__ = register_delegate(_ZN20btDefaultMotionState17setWorldTransformERK11btTransform); +var _ZN20btDefaultMotionStateD0Ev__index__ = register_delegate(_ZN20btDefaultMotionStateD0Ev); +var _ZN20btDefaultMotionStateD1Ev__index__ = register_delegate(_ZN20btDefaultMotionStateD1Ev); +var _ZN21SupportVertexCallback15processTriangleEP9btVector3ii__index__ = register_delegate(_ZN21SupportVertexCallback15processTriangleEP9btVector3ii); +var _ZN21SupportVertexCallbackD0Ev__index__ = register_delegate(_ZN21SupportVertexCallbackD0Ev); +var _ZN21SupportVertexCallbackD1Ev__index__ = register_delegate(_ZN21SupportVertexCallbackD1Ev); +var _ZN21btCollisionDispatcher13clearManifoldEP20btPersistentManifold__index__ = register_delegate(_ZN21btCollisionDispatcher13clearManifoldEP20btPersistentManifold); +var _ZN21btCollisionDispatcher13findAlgorithmEP17btCollisionObjectS1_P20btPersistentManifold__index__ = register_delegate(_ZN21btCollisionDispatcher13findAlgorithmEP17btCollisionObjectS1_P20btPersistentManifold); +var _ZN21btCollisionDispatcher13needsResponseEP17btCollisionObjectS1___index__ = register_delegate(_ZN21btCollisionDispatcher13needsResponseEP17btCollisionObjectS1_); +var _ZN21btCollisionDispatcher14getNewManifoldEPvS0___index__ = register_delegate(_ZN21btCollisionDispatcher14getNewManifoldEPvS0_); +var _ZN21btCollisionDispatcher14needsCollisionEP17btCollisionObjectS1___index__ = register_delegate(_ZN21btCollisionDispatcher14needsCollisionEP17btCollisionObjectS1_); +var _ZN21btCollisionDispatcher15releaseManifoldEP20btPersistentManifold__index__ = register_delegate(_ZN21btCollisionDispatcher15releaseManifoldEP20btPersistentManifold); +var _ZN21btCollisionDispatcher19defaultNearCallbackER16btBroadphasePairRS_RK16btDispatcherInfo__index__ = register_delegate(_ZN21btCollisionDispatcher19defaultNearCallbackER16btBroadphasePairRS_RK16btDispatcherInfo); +var _ZN21btCollisionDispatcher22freeCollisionAlgorithmEPv__index__ = register_delegate(_ZN21btCollisionDispatcher22freeCollisionAlgorithmEPv); +var _ZN21btCollisionDispatcher25dispatchAllCollisionPairsEP22btOverlappingPairCacheRK16btDispatcherInfoP12btDispatcher__index__ = register_delegate(_ZN21btCollisionDispatcher25dispatchAllCollisionPairsEP22btOverlappingPairCacheRK16btDispatcherInfoP12btDispatcher); +var _ZN21btCollisionDispatcher26allocateCollisionAlgorithmEi__index__ = register_delegate(_ZN21btCollisionDispatcher26allocateCollisionAlgorithmEi); +var _ZN21btCollisionDispatcher26getInternalManifoldPointerEv__index__ = register_delegate(_ZN21btCollisionDispatcher26getInternalManifoldPointerEv); +var _ZN21btCollisionDispatcher26getManifoldByIndexInternalEi__index__ = register_delegate(_ZN21btCollisionDispatcher26getManifoldByIndexInternalEi); +var _ZN21btCollisionDispatcherD0Ev__index__ = register_delegate(_ZN21btCollisionDispatcherD0Ev); +var _ZN21btCollisionDispatcherD1Ev__index__ = register_delegate(_ZN21btCollisionDispatcherD1Ev); +var _ZN21btConeTwistConstraint13buildJacobianEv__index__ = register_delegate(_ZN21btConeTwistConstraint13buildJacobianEv); +var _ZN21btConeTwistConstraint23solveConstraintObsoleteER11btRigidBodyS1_f__index__ = register_delegate(_ZN21btConeTwistConstraint23solveConstraintObsoleteER11btRigidBodyS1_f); +var _ZN21btConeTwistConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E__index__ = register_delegate(_ZN21btConeTwistConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E); +var _ZN21btConeTwistConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E__index__ = register_delegate(_ZN21btConeTwistConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E); +var _ZN21btConeTwistConstraint8setParamEifi__index__ = register_delegate(_ZN21btConeTwistConstraint8setParamEifi); +var _ZN21btConeTwistConstraintD0Ev__index__ = register_delegate(_ZN21btConeTwistConstraintD0Ev); +var _ZN21btConeTwistConstraintD1Ev__index__ = register_delegate(_ZN21btConeTwistConstraintD1Ev); +var _ZN21btConvexInternalShape15setLocalScalingERK9btVector3__index__ = register_delegate(_ZN21btConvexInternalShape15setLocalScalingERK9btVector3); +var _ZN21btConvexInternalShape9setMarginEf__index__ = register_delegate(_ZN21btConvexInternalShape9setMarginEf); +var _ZN21btSingleSweepCallback7processEPK17btBroadphaseProxy__index__ = register_delegate(_ZN21btSingleSweepCallback7processEPK17btBroadphaseProxy); +var _ZN21btSingleSweepCallbackD0Ev__index__ = register_delegate(_ZN21btSingleSweepCallbackD0Ev); +var _ZN21btSingleSweepCallbackD1Ev__index__ = register_delegate(_ZN21btSingleSweepCallbackD1Ev); +var _ZN22SphereTriangleDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb__index__ = register_delegate(_ZN22SphereTriangleDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb); +var _ZN22SphereTriangleDetectorD0Ev__index__ = register_delegate(_ZN22SphereTriangleDetectorD0Ev); +var _ZN22SphereTriangleDetectorD1Ev__index__ = register_delegate(_ZN22SphereTriangleDetectorD1Ev); +var _ZN22btBvhTriangleMeshShape15setLocalScalingERK9btVector3__index__ = register_delegate(_ZN22btBvhTriangleMeshShape15setLocalScalingERK9btVector3); +var _ZN22btBvhTriangleMeshShapeD0Ev__index__ = register_delegate(_ZN22btBvhTriangleMeshShapeD0Ev); +var _ZN22btBvhTriangleMeshShapeD1Ev__index__ = register_delegate(_ZN22btBvhTriangleMeshShapeD1Ev); +var _ZN22btCompoundLeafCallback7ProcessEPK10btDbvtNode__index__ = register_delegate(_ZN22btCompoundLeafCallback7ProcessEPK10btDbvtNode); +var _ZN22btCompoundLeafCallbackD0Ev__index__ = register_delegate(_ZN22btCompoundLeafCallbackD0Ev); +var _ZN22btCompoundLeafCallbackD1Ev__index__ = register_delegate(_ZN22btCompoundLeafCallbackD1Ev); +var _ZN22btSubsimplexConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE__index__ = register_delegate(_ZN22btSubsimplexConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE); +var _ZN22btSubsimplexConvexCastD0Ev__index__ = register_delegate(_ZN22btSubsimplexConvexCastD0Ev); +var _ZN22btSubsimplexConvexCastD1Ev__index__ = register_delegate(_ZN22btSubsimplexConvexCastD1Ev); +var _ZN23btCollisionPairCallback14processOverlapER16btBroadphasePair__index__ = register_delegate(_ZN23btCollisionPairCallback14processOverlapER16btBroadphasePair); +var _ZN23btCollisionPairCallbackD0Ev__index__ = register_delegate(_ZN23btCollisionPairCallbackD0Ev); +var _ZN23btCollisionPairCallbackD1Ev__index__ = register_delegate(_ZN23btCollisionPairCallbackD1Ev); +var _ZN23btConvexConvexAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__ = register_delegate(_ZN23btConvexConvexAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_); +var _ZN23btConvexConvexAlgorithm10CreateFuncD0Ev__index__ = register_delegate(_ZN23btConvexConvexAlgorithm10CreateFuncD0Ev); +var _ZN23btConvexConvexAlgorithm10CreateFuncD1Ev__index__ = register_delegate(_ZN23btConvexConvexAlgorithm10CreateFuncD1Ev); +var _ZN23btConvexConvexAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN23btConvexConvexAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult); +var _ZN23btConvexConvexAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN23btConvexConvexAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult); +var _ZN23btConvexConvexAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__ = register_delegate(_ZN23btConvexConvexAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE); +var _ZN23btConvexConvexAlgorithmD0Ev__index__ = register_delegate(_ZN23btConvexConvexAlgorithmD0Ev); +var _ZN23btConvexConvexAlgorithmD1Ev__index__ = register_delegate(_ZN23btConvexConvexAlgorithmD1Ev); +var _ZN23btDiscreteDynamicsWorld10addVehicleEP17btActionInterface__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld10addVehicleEP17btActionInterface); +var _ZN23btDiscreteDynamicsWorld10setGravityERK9btVector3__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld10setGravityERK9btVector3); +var _ZN23btDiscreteDynamicsWorld11clearForcesEv__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld11clearForcesEv); +var _ZN23btDiscreteDynamicsWorld11setNumTasksEi__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld11setNumTasksEi); +var _ZN23btDiscreteDynamicsWorld12addCharacterEP17btActionInterface__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld12addCharacterEP17btActionInterface); +var _ZN23btDiscreteDynamicsWorld12addRigidBodyEP11btRigidBody__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld12addRigidBodyEP11btRigidBody); +var _ZN23btDiscreteDynamicsWorld12addRigidBodyEP11btRigidBodyss__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld12addRigidBodyEP11btRigidBodyss); +var _ZN23btDiscreteDynamicsWorld12applyGravityEv__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld12applyGravityEv); +var _ZN23btDiscreteDynamicsWorld12removeActionEP17btActionInterface__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld12removeActionEP17btActionInterface); +var _ZN23btDiscreteDynamicsWorld13addConstraintEP17btTypedConstraintb__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld13addConstraintEP17btTypedConstraintb); +var _ZN23btDiscreteDynamicsWorld13getConstraintEi__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld13getConstraintEi); +var _ZN23btDiscreteDynamicsWorld13removeVehicleEP17btActionInterface__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld13removeVehicleEP17btActionInterface); +var _ZN23btDiscreteDynamicsWorld14debugDrawWorldEv__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld14debugDrawWorldEv); +var _ZN23btDiscreteDynamicsWorld14stepSimulationEfif__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld14stepSimulationEfif); +var _ZN23btDiscreteDynamicsWorld14updateVehiclesEf__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld14updateVehiclesEf); +var _ZN23btDiscreteDynamicsWorld15removeCharacterEP17btActionInterface__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld15removeCharacterEP17btActionInterface); +var _ZN23btDiscreteDynamicsWorld15removeRigidBodyEP11btRigidBody__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld15removeRigidBodyEP11btRigidBody); +var _ZN23btDiscreteDynamicsWorld16removeConstraintEP17btTypedConstraint__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld16removeConstraintEP17btTypedConstraint); +var _ZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfo__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfo); +var _ZN23btDiscreteDynamicsWorld18addCollisionObjectEP17btCollisionObjectss__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld18addCollisionObjectEP17btCollisionObjectss); +var _ZN23btDiscreteDynamicsWorld18saveKinematicStateEf__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld18saveKinematicStateEf); +var _ZN23btDiscreteDynamicsWorld19getConstraintSolverEv__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld19getConstraintSolverEv); +var _ZN23btDiscreteDynamicsWorld19integrateTransformsEf__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld19integrateTransformsEf); +var _ZN23btDiscreteDynamicsWorld19setConstraintSolverEP18btConstraintSolver__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld19setConstraintSolverEP18btConstraintSolver); +var _ZN23btDiscreteDynamicsWorld21removeCollisionObjectEP17btCollisionObject__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld21removeCollisionObjectEP17btCollisionObject); +var _ZN23btDiscreteDynamicsWorld23synchronizeMotionStatesEv__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld23synchronizeMotionStatesEv); +var _ZN23btDiscreteDynamicsWorld25predictUnconstraintMotionEf__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld25predictUnconstraintMotionEf); +var _ZN23btDiscreteDynamicsWorld26calculateSimulationIslandsEv__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld26calculateSimulationIslandsEv); +var _ZN23btDiscreteDynamicsWorld28internalSingleStepSimulationEf__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld28internalSingleStepSimulationEf); +var _ZN23btDiscreteDynamicsWorld9addActionEP17btActionInterface__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld9addActionEP17btActionInterface); +var _ZN23btDiscreteDynamicsWorld9serializeEP12btSerializer__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld9serializeEP12btSerializer); +var _ZN23btDiscreteDynamicsWorldD0Ev__index__ = register_delegate(_ZN23btDiscreteDynamicsWorldD0Ev); +var _ZN23btDiscreteDynamicsWorldD1Ev__index__ = register_delegate(_ZN23btDiscreteDynamicsWorldD1Ev); +var _ZN23btStridingMeshInterfaceD0Ev__index__ = register_delegate(_ZN23btStridingMeshInterfaceD0Ev); +var _ZN23btStridingMeshInterfaceD1Ev__index__ = register_delegate(_ZN23btStridingMeshInterfaceD1Ev); +var _ZN24btConvexTriangleCallback15processTriangleEP9btVector3ii__index__ = register_delegate(_ZN24btConvexTriangleCallback15processTriangleEP9btVector3ii); +var _ZN24btConvexTriangleCallbackD0Ev__index__ = register_delegate(_ZN24btConvexTriangleCallbackD0Ev); +var _ZN24btConvexTriangleCallbackD1Ev__index__ = register_delegate(_ZN24btConvexTriangleCallbackD1Ev); +var _ZN24btPerturbedContactResult15addContactPointERK9btVector3S2_f__index__ = register_delegate(_ZN24btPerturbedContactResult15addContactPointERK9btVector3S2_f); +var _ZN24btPerturbedContactResultD0Ev__index__ = register_delegate(_ZN24btPerturbedContactResultD0Ev); +var _ZN24btPerturbedContactResultD1Ev__index__ = register_delegate(_ZN24btPerturbedContactResultD1Ev); +var _ZN25btSimulationIslandManager21updateActivationStateEP16btCollisionWorldP12btDispatcher__index__ = register_delegate(_ZN25btSimulationIslandManager21updateActivationStateEP16btCollisionWorldP12btDispatcher); +var _ZN25btSimulationIslandManager26storeIslandActivationStateEP16btCollisionWorld__index__ = register_delegate(_ZN25btSimulationIslandManager26storeIslandActivationStateEP16btCollisionWorld); +var _ZN25btSimulationIslandManagerD0Ev__index__ = register_delegate(_ZN25btSimulationIslandManagerD0Ev); +var _ZN25btSimulationIslandManagerD1Ev__index__ = register_delegate(_ZN25btSimulationIslandManagerD1Ev); +var _ZN25btTriangleRaycastCallback15processTriangleEP9btVector3ii__index__ = register_delegate(_ZN25btTriangleRaycastCallback15processTriangleEP9btVector3ii); +var _ZN26btBoxBoxCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__ = register_delegate(_ZN26btBoxBoxCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_); +var _ZN26btBoxBoxCollisionAlgorithm10CreateFuncD0Ev__index__ = register_delegate(_ZN26btBoxBoxCollisionAlgorithm10CreateFuncD0Ev); +var _ZN26btBoxBoxCollisionAlgorithm10CreateFuncD1Ev__index__ = register_delegate(_ZN26btBoxBoxCollisionAlgorithm10CreateFuncD1Ev); +var _ZN26btBoxBoxCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN26btBoxBoxCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult); +var _ZN26btBoxBoxCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN26btBoxBoxCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult); +var _ZN26btBoxBoxCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__ = register_delegate(_ZN26btBoxBoxCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE); +var _ZN26btBoxBoxCollisionAlgorithmD0Ev__index__ = register_delegate(_ZN26btBoxBoxCollisionAlgorithmD0Ev); +var _ZN26btBoxBoxCollisionAlgorithmD1Ev__index__ = register_delegate(_ZN26btBoxBoxCollisionAlgorithmD1Ev); +var _ZN26btTriangleIndexVertexArray16unLockVertexBaseEi__index__ = register_delegate(_ZN26btTriangleIndexVertexArray16unLockVertexBaseEi); +var _ZN26btTriangleIndexVertexArray18preallocateIndicesEi__index__ = register_delegate(_ZN26btTriangleIndexVertexArray18preallocateIndicesEi); +var _ZN26btTriangleIndexVertexArray19preallocateVerticesEi__index__ = register_delegate(_ZN26btTriangleIndexVertexArray19preallocateVerticesEi); +var _ZN26btTriangleIndexVertexArray24getLockedVertexIndexBaseEPPhRiR14PHY_ScalarTypeS2_S1_S2_S2_S4_i__index__ = register_delegate(_ZN26btTriangleIndexVertexArray24getLockedVertexIndexBaseEPPhRiR14PHY_ScalarTypeS2_S1_S2_S2_S4_i); +var _ZN26btTriangleIndexVertexArrayD0Ev__index__ = register_delegate(_ZN26btTriangleIndexVertexArrayD0Ev); +var _ZN26btTriangleIndexVertexArrayD1Ev__index__ = register_delegate(_ZN26btTriangleIndexVertexArrayD1Ev); +var _ZN27btContinuousConvexCollision16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE__index__ = register_delegate(_ZN27btContinuousConvexCollision16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE); +var _ZN27btContinuousConvexCollisionD0Ev__index__ = register_delegate(_ZN27btContinuousConvexCollisionD0Ev); +var _ZN27btContinuousConvexCollisionD1Ev__index__ = register_delegate(_ZN27btContinuousConvexCollisionD1Ev); +var _ZN28btCompoundCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__ = register_delegate(_ZN28btCompoundCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_); +var _ZN28btCompoundCollisionAlgorithm10CreateFuncD0Ev__index__ = register_delegate(_ZN28btCompoundCollisionAlgorithm10CreateFuncD0Ev); +var _ZN28btCompoundCollisionAlgorithm10CreateFuncD1Ev__index__ = register_delegate(_ZN28btCompoundCollisionAlgorithm10CreateFuncD1Ev); +var _ZN28btCompoundCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN28btCompoundCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult); +var _ZN28btCompoundCollisionAlgorithm17SwappedCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__ = register_delegate(_ZN28btCompoundCollisionAlgorithm17SwappedCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_); +var _ZN28btCompoundCollisionAlgorithm17SwappedCreateFuncD0Ev__index__ = register_delegate(_ZN28btCompoundCollisionAlgorithm17SwappedCreateFuncD0Ev); +var _ZN28btCompoundCollisionAlgorithm17SwappedCreateFuncD1Ev__index__ = register_delegate(_ZN28btCompoundCollisionAlgorithm17SwappedCreateFuncD1Ev); +var _ZN28btCompoundCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN28btCompoundCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult); +var _ZN28btCompoundCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__ = register_delegate(_ZN28btCompoundCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE); +var _ZN28btCompoundCollisionAlgorithmD0Ev__index__ = register_delegate(_ZN28btCompoundCollisionAlgorithmD0Ev); +var _ZN28btCompoundCollisionAlgorithmD1Ev__index__ = register_delegate(_ZN28btCompoundCollisionAlgorithmD1Ev); +var _ZN28btHashedOverlappingPairCache18addOverlappingPairEP17btBroadphaseProxyS1___index__ = register_delegate(_ZN28btHashedOverlappingPairCache18addOverlappingPairEP17btBroadphaseProxyS1_); +var _ZN28btHashedOverlappingPairCache18hasDeferredRemovalEv__index__ = register_delegate(_ZN28btHashedOverlappingPairCache18hasDeferredRemovalEv); +var _ZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher__index__ = register_delegate(_ZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher); +var _ZN28btHashedOverlappingPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher__index__ = register_delegate(_ZN28btHashedOverlappingPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher); +var _ZN28btHashedOverlappingPairCache20sortOverlappingPairsEP12btDispatcher__index__ = register_delegate(_ZN28btHashedOverlappingPairCache20sortOverlappingPairsEP12btDispatcher); +var _ZN28btHashedOverlappingPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher__index__ = register_delegate(_ZN28btHashedOverlappingPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher); +var _ZN28btHashedOverlappingPairCache23getOverlappingPairArrayEv__index__ = register_delegate(_ZN28btHashedOverlappingPairCache23getOverlappingPairArrayEv); +var _ZN28btHashedOverlappingPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback__index__ = register_delegate(_ZN28btHashedOverlappingPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback); +var _ZN28btHashedOverlappingPairCache26getOverlappingPairArrayPtrEv__index__ = register_delegate(_ZN28btHashedOverlappingPairCache26getOverlappingPairArrayPtrEv); +var _ZN28btHashedOverlappingPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher__index__ = register_delegate(_ZN28btHashedOverlappingPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher); +var _ZN28btHashedOverlappingPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback__index__ = register_delegate(_ZN28btHashedOverlappingPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback); +var _ZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher__index__ = register_delegate(_ZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher); +var _ZN28btHashedOverlappingPairCache8findPairEP17btBroadphaseProxyS1___index__ = register_delegate(_ZN28btHashedOverlappingPairCache8findPairEP17btBroadphaseProxyS1_); +var _ZN28btHashedOverlappingPairCacheD0Ev__index__ = register_delegate(_ZN28btHashedOverlappingPairCacheD0Ev); +var _ZN28btHashedOverlappingPairCacheD1Ev__index__ = register_delegate(_ZN28btHashedOverlappingPairCacheD1Ev); +var _ZN28btTriangleConvexcastCallback15processTriangleEP9btVector3ii__index__ = register_delegate(_ZN28btTriangleConvexcastCallback15processTriangleEP9btVector3ii); +var _ZN28btTriangleConvexcastCallbackD0Ev__index__ = register_delegate(_ZN28btTriangleConvexcastCallbackD0Ev); +var _ZN28btTriangleConvexcastCallbackD1Ev__index__ = register_delegate(_ZN28btTriangleConvexcastCallbackD1Ev); +var _ZN30btActivatingCollisionAlgorithmD0Ev__index__ = register_delegate(_ZN30btActivatingCollisionAlgorithmD0Ev); +var _ZN30btActivatingCollisionAlgorithmD1Ev__index__ = register_delegate(_ZN30btActivatingCollisionAlgorithmD1Ev); +var _ZN30btGjkEpaPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAlloc__index__ = register_delegate(_ZN30btGjkEpaPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAlloc); +var _ZN30btGjkEpaPenetrationDepthSolverD0Ev__index__ = register_delegate(_ZN30btGjkEpaPenetrationDepthSolverD0Ev); +var _ZN30btGjkEpaPenetrationDepthSolverD1Ev__index__ = register_delegate(_ZN30btGjkEpaPenetrationDepthSolverD1Ev); +var _ZN31btConvexPlaneCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__ = register_delegate(_ZN31btConvexPlaneCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_); +var _ZN31btConvexPlaneCollisionAlgorithm10CreateFuncD0Ev__index__ = register_delegate(_ZN31btConvexPlaneCollisionAlgorithm10CreateFuncD0Ev); +var _ZN31btConvexPlaneCollisionAlgorithm10CreateFuncD1Ev__index__ = register_delegate(_ZN31btConvexPlaneCollisionAlgorithm10CreateFuncD1Ev); +var _ZN31btConvexPlaneCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN31btConvexPlaneCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult); +var _ZN31btConvexPlaneCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN31btConvexPlaneCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult); +var _ZN31btConvexPlaneCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__ = register_delegate(_ZN31btConvexPlaneCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE); +var _ZN31btConvexPlaneCollisionAlgorithmD0Ev__index__ = register_delegate(_ZN31btConvexPlaneCollisionAlgorithmD0Ev); +var _ZN31btConvexPlaneCollisionAlgorithmD1Ev__index__ = register_delegate(_ZN31btConvexPlaneCollisionAlgorithmD1Ev); +var _ZN31btDefaultCollisionConfiguration16getSimplexSolverEv__index__ = register_delegate(_ZN31btDefaultCollisionConfiguration16getSimplexSolverEv); +var _ZN31btDefaultCollisionConfiguration17getStackAllocatorEv__index__ = register_delegate(_ZN31btDefaultCollisionConfiguration17getStackAllocatorEv); +var _ZN31btDefaultCollisionConfiguration25getCollisionAlgorithmPoolEv__index__ = register_delegate(_ZN31btDefaultCollisionConfiguration25getCollisionAlgorithmPoolEv); +var _ZN31btDefaultCollisionConfiguration25getPersistentManifoldPoolEv__index__ = register_delegate(_ZN31btDefaultCollisionConfiguration25getPersistentManifoldPoolEv); +var _ZN31btDefaultCollisionConfiguration31getCollisionAlgorithmCreateFuncEii__index__ = register_delegate(_ZN31btDefaultCollisionConfiguration31getCollisionAlgorithmCreateFuncEii); +var _ZN31btDefaultCollisionConfigurationD0Ev__index__ = register_delegate(_ZN31btDefaultCollisionConfigurationD0Ev); +var _ZN31btDefaultCollisionConfigurationD1Ev__index__ = register_delegate(_ZN31btDefaultCollisionConfigurationD1Ev); +var _ZN31btInternalTriangleIndexCallbackD0Ev__index__ = register_delegate(_ZN31btInternalTriangleIndexCallbackD0Ev); +var _ZN31btInternalTriangleIndexCallbackD1Ev__index__ = register_delegate(_ZN31btInternalTriangleIndexCallbackD1Ev); +var _ZN32btSphereSphereCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__ = register_delegate(_ZN32btSphereSphereCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_); +var _ZN32btSphereSphereCollisionAlgorithm10CreateFuncD0Ev__index__ = register_delegate(_ZN32btSphereSphereCollisionAlgorithm10CreateFuncD0Ev); +var _ZN32btSphereSphereCollisionAlgorithm10CreateFuncD1Ev__index__ = register_delegate(_ZN32btSphereSphereCollisionAlgorithm10CreateFuncD1Ev); +var _ZN32btSphereSphereCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN32btSphereSphereCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult); +var _ZN32btSphereSphereCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN32btSphereSphereCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult); +var _ZN32btSphereSphereCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__ = register_delegate(_ZN32btSphereSphereCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE); +var _ZN32btSphereSphereCollisionAlgorithmD0Ev__index__ = register_delegate(_ZN32btSphereSphereCollisionAlgorithmD0Ev); +var _ZN32btSphereSphereCollisionAlgorithmD1Ev__index__ = register_delegate(_ZN32btSphereSphereCollisionAlgorithmD1Ev); +var _ZN33btConvexConcaveCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_); +var _ZN33btConvexConcaveCollisionAlgorithm10CreateFuncD0Ev__index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithm10CreateFuncD0Ev); +var _ZN33btConvexConcaveCollisionAlgorithm10CreateFuncD1Ev__index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithm10CreateFuncD1Ev); +var _ZN33btConvexConcaveCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult); +var _ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_); +var _ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncD0Ev__index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncD0Ev); +var _ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncD1Ev__index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncD1Ev); +var _ZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult); +var _ZN33btConvexConcaveCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE); +var _ZN33btConvexConcaveCollisionAlgorithmD0Ev__index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithmD0Ev); +var _ZN33btConvexConcaveCollisionAlgorithmD1Ev__index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithmD1Ev); +var _ZN34btClosestNotMeConvexResultCallback15addSingleResultERN16btCollisionWorld17LocalConvexResultEb__index__ = register_delegate(_ZN34btClosestNotMeConvexResultCallback15addSingleResultERN16btCollisionWorld17LocalConvexResultEb); +var _ZN34btClosestNotMeConvexResultCallbackD0Ev__index__ = register_delegate(_ZN34btClosestNotMeConvexResultCallbackD0Ev); +var _ZN34btClosestNotMeConvexResultCallbackD1Ev__index__ = register_delegate(_ZN34btClosestNotMeConvexResultCallbackD1Ev); +var _ZN34btSphereTriangleCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__ = register_delegate(_ZN34btSphereTriangleCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_); +var _ZN34btSphereTriangleCollisionAlgorithm10CreateFuncD0Ev__index__ = register_delegate(_ZN34btSphereTriangleCollisionAlgorithm10CreateFuncD0Ev); +var _ZN34btSphereTriangleCollisionAlgorithm10CreateFuncD1Ev__index__ = register_delegate(_ZN34btSphereTriangleCollisionAlgorithm10CreateFuncD1Ev); +var _ZN34btSphereTriangleCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN34btSphereTriangleCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult); +var _ZN34btSphereTriangleCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN34btSphereTriangleCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult); +var _ZN34btSphereTriangleCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__ = register_delegate(_ZN34btSphereTriangleCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE); +var _ZN34btSphereTriangleCollisionAlgorithmD0Ev__index__ = register_delegate(_ZN34btSphereTriangleCollisionAlgorithmD0Ev); +var _ZN34btSphereTriangleCollisionAlgorithmD1Ev__index__ = register_delegate(_ZN34btSphereTriangleCollisionAlgorithmD1Ev); +var _ZN35btSequentialImpulseConstraintSolver10solveGroupEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAllocP12btDispatcher__index__ = register_delegate(_ZN35btSequentialImpulseConstraintSolver10solveGroupEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAllocP12btDispatcher); +var _ZN35btSequentialImpulseConstraintSolver28solveGroupCacheFriendlySetupEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc__index__ = register_delegate(_ZN35btSequentialImpulseConstraintSolver28solveGroupCacheFriendlySetupEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc); +var _ZN35btSequentialImpulseConstraintSolver29solveGroupCacheFriendlyFinishEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc__index__ = register_delegate(_ZN35btSequentialImpulseConstraintSolver29solveGroupCacheFriendlyFinishEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc); +var _ZN35btSequentialImpulseConstraintSolver33solveGroupCacheFriendlyIterationsEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc__index__ = register_delegate(_ZN35btSequentialImpulseConstraintSolver33solveGroupCacheFriendlyIterationsEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc); +var _ZN35btSequentialImpulseConstraintSolver45solveGroupCacheFriendlySplitImpulseIterationsEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc__index__ = register_delegate(_ZN35btSequentialImpulseConstraintSolver45solveGroupCacheFriendlySplitImpulseIterationsEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc); +var _ZN35btSequentialImpulseConstraintSolver5resetEv__index__ = register_delegate(_ZN35btSequentialImpulseConstraintSolver5resetEv); +var _ZN35btSequentialImpulseConstraintSolverD0Ev__index__ = register_delegate(_ZN35btSequentialImpulseConstraintSolverD0Ev); +var _ZN35btSequentialImpulseConstraintSolverD1Ev__index__ = register_delegate(_ZN35btSequentialImpulseConstraintSolverD1Ev); +var _ZN4__rw10__rw_facetD0Ev__index__ = register_delegate(_ZN4__rw10__rw_facetD0Ev); +var _ZN4__rw10__rw_facetD1Ev__index__ = register_delegate(_ZN4__rw10__rw_facetD1Ev); +var _ZN6btDbvt8ICollide7DescentEPK10btDbvtNode__index__ = register_delegate(_ZN6btDbvt8ICollide7DescentEPK10btDbvtNode); +var _ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodeS3___index__ = register_delegate(_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodeS3_); +var _ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodef__index__ = register_delegate(_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodef); +var _ZN6btDbvt8ICollide9AllLeavesEPK10btDbvtNode__index__ = register_delegate(_ZN6btDbvt8ICollide9AllLeavesEPK10btDbvtNode); +var _ZN7CFileLS4feofEv__index__ = register_delegate(_ZN7CFileLS4feofEv); +var _ZN7CFileLS5freadEPvjj__index__ = register_delegate(_ZN7CFileLS5freadEPvjj); +var _ZN7CFileLS5fseekEli__index__ = register_delegate(_ZN7CFileLS5fseekEli); +var _ZN7CFileLS5ftellEv__index__ = register_delegate(_ZN7CFileLS5ftellEv); +var _ZN7CFileLS6fcloseEv__index__ = register_delegate(_ZN7CFileLS6fcloseEv); +var _ZN7CFileLS6fflushEv__index__ = register_delegate(_ZN7CFileLS6fflushEv); +var _ZN7CFileLS6fwriteEPKvjj__index__ = register_delegate(_ZN7CFileLS6fwriteEPKvjj); +var _ZN7CFileLS6ungetcEi__index__ = register_delegate(_ZN7CFileLS6ungetcEi); +var _ZN7RagDollD0Ev__index__ = register_delegate(_ZN7RagDollD0Ev); +var _ZN7RagDollD1Ev__index__ = register_delegate(_ZN7RagDollD1Ev); +var _ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj__index__ = register_delegate(_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj); +var _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE__index__ = register_delegate(_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE); +var _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv__index__ = register_delegate(_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv); +var _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE__index__ = register_delegate(_ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE); +var _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2___index__ = register_delegate(_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_); +var _ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE__index__ = register_delegate(_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE); +var _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE__index__ = register_delegate(_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE); +var _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2___index__ = register_delegate(_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_); +var _ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE__index__ = register_delegate(_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE); +var _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE__index__ = register_delegate(_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE); +var _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2___index__ = register_delegate(_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_); +var _ZNK10btBoxShape11getNumEdgesEv__index__ = register_delegate(_ZNK10btBoxShape11getNumEdgesEv); +var _ZNK10btBoxShape12getNumPlanesEv__index__ = register_delegate(_ZNK10btBoxShape12getNumPlanesEv); +var _ZNK10btBoxShape14getNumVerticesEv__index__ = register_delegate(_ZNK10btBoxShape14getNumVerticesEv); +var _ZNK10btBoxShape16getPlaneEquationER9btVector4i__index__ = register_delegate(_ZNK10btBoxShape16getPlaneEquationER9btVector4i); +var _ZNK10btBoxShape21calculateLocalInertiaEfR9btVector3__index__ = register_delegate(_ZNK10btBoxShape21calculateLocalInertiaEfR9btVector3); +var _ZNK10btBoxShape24localGetSupportingVertexERK9btVector3__index__ = register_delegate(_ZNK10btBoxShape24localGetSupportingVertexERK9btVector3); +var _ZNK10btBoxShape32getPreferredPenetrationDirectionEiR9btVector3__index__ = register_delegate(_ZNK10btBoxShape32getPreferredPenetrationDirectionEiR9btVector3); +var _ZNK10btBoxShape36getNumPreferredPenetrationDirectionsEv__index__ = register_delegate(_ZNK10btBoxShape36getNumPreferredPenetrationDirectionsEv); +var _ZNK10btBoxShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__ = register_delegate(_ZNK10btBoxShape37localGetSupportingVertexWithoutMarginERK9btVector3); +var _ZNK10btBoxShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i__index__ = register_delegate(_ZNK10btBoxShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i); +var _ZNK10btBoxShape7getAabbERK11btTransformR9btVector3S4___index__ = register_delegate(_ZNK10btBoxShape7getAabbERK11btTransformR9btVector3S4_); +var _ZNK10btBoxShape7getEdgeEiR9btVector3S1___index__ = register_delegate(_ZNK10btBoxShape7getEdgeEiR9btVector3S1_); +var _ZNK10btBoxShape7getNameEv__index__ = register_delegate(_ZNK10btBoxShape7getNameEv); +var _ZNK10btBoxShape8getPlaneER9btVector3S1_i__index__ = register_delegate(_ZNK10btBoxShape8getPlaneER9btVector3S1_i); +var _ZNK10btBoxShape8isInsideERK9btVector3f__index__ = register_delegate(_ZNK10btBoxShape8isInsideERK9btVector3f); +var _ZNK10btBoxShape9getVertexEiR9btVector3__index__ = register_delegate(_ZNK10btBoxShape9getVertexEiR9btVector3); +var _ZNK11CFileSystem12IsFileSystemEv__index__ = register_delegate(_ZNK11CFileSystem12IsFileSystemEv); +var _ZNK11btRigidBody21serializeSingleObjectEP12btSerializer__index__ = register_delegate(_ZNK11btRigidBody21serializeSingleObjectEP12btSerializer); +var _ZNK11btRigidBody28calculateSerializeBufferSizeEv__index__ = register_delegate(_ZNK11btRigidBody28calculateSerializeBufferSizeEv); +var _ZNK11btRigidBody9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK11btRigidBody9serializeEPvP12btSerializer); +var _ZNK13btConvexShape31localGetSupportVertexNonVirtualERK9btVector3__index__ = register_delegate(_ZNK13btConvexShape31localGetSupportVertexNonVirtualERK9btVector3); +var _ZNK13btConvexShape44localGetSupportVertexWithoutMarginNonVirtualERK9btVector3__index__ = register_delegate(_ZNK13btConvexShape44localGetSupportVertexWithoutMarginNonVirtualERK9btVector3); +var _ZNK13btSphereShape21calculateLocalInertiaEfR9btVector3__index__ = register_delegate(_ZNK13btSphereShape21calculateLocalInertiaEfR9btVector3); +var _ZNK13btSphereShape24localGetSupportingVertexERK9btVector3__index__ = register_delegate(_ZNK13btSphereShape24localGetSupportingVertexERK9btVector3); +var _ZNK13btSphereShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__ = register_delegate(_ZNK13btSphereShape37localGetSupportingVertexWithoutMarginERK9btVector3); +var _ZNK13btSphereShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i__index__ = register_delegate(_ZNK13btSphereShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i); +var _ZNK13btSphereShape7getAabbERK11btTransformR9btVector3S4___index__ = register_delegate(_ZNK13btSphereShape7getAabbERK11btTransformR9btVector3S4_); +var _ZNK13btSphereShape7getNameEv__index__ = register_delegate(_ZNK13btSphereShape7getNameEv); +var _ZNK13btSphereShape9getMarginEv__index__ = register_delegate(_ZNK13btSphereShape9getMarginEv); +var _ZNK14CFileInterface12IsFileSystemEv__index__ = register_delegate(_ZNK14CFileInterface12IsFileSystemEv); +var _ZNK14btCapsuleShape21calculateLocalInertiaEfR9btVector3__index__ = register_delegate(_ZNK14btCapsuleShape21calculateLocalInertiaEfR9btVector3); +var _ZNK14btCapsuleShape28calculateSerializeBufferSizeEv__index__ = register_delegate(_ZNK14btCapsuleShape28calculateSerializeBufferSizeEv); +var _ZNK14btCapsuleShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__ = register_delegate(_ZNK14btCapsuleShape37localGetSupportingVertexWithoutMarginERK9btVector3); +var _ZNK14btCapsuleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i__index__ = register_delegate(_ZNK14btCapsuleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i); +var _ZNK14btCapsuleShape7getAabbERK11btTransformR9btVector3S4___index__ = register_delegate(_ZNK14btCapsuleShape7getAabbERK11btTransformR9btVector3S4_); +var _ZNK14btCapsuleShape7getNameEv__index__ = register_delegate(_ZNK14btCapsuleShape7getNameEv); +var _ZNK14btCapsuleShape9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK14btCapsuleShape9serializeEPvP12btSerializer); +var _ZNK14btConcaveShape9getMarginEv__index__ = register_delegate(_ZNK14btConcaveShape9getMarginEv); +var _ZNK14btOptimizedBvh16serializeInPlaceEPvjb__index__ = register_delegate(_ZNK14btOptimizedBvh16serializeInPlaceEPvjb); +var _ZNK14btQuantizedBvh31calculateSerializeBufferSizeNewEv__index__ = register_delegate(_ZNK14btQuantizedBvh31calculateSerializeBufferSizeNewEv); +var _ZNK14btQuantizedBvh9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK14btQuantizedBvh9serializeEPvP12btSerializer); +var _ZNK14btQuantizedBvh9serializeEPvjb__index__ = register_delegate(_ZNK14btQuantizedBvh9serializeEPvjb); +var _ZNK15btDynamicsWorld13getConstraintEi__index__ = register_delegate(_ZNK15btDynamicsWorld13getConstraintEi); +var _ZNK15btDynamicsWorld17getNumConstraintsEv__index__ = register_delegate(_ZNK15btDynamicsWorld17getNumConstraintsEv); +var _ZNK15btNullPairCache22getNumOverlappingPairsEv__index__ = register_delegate(_ZNK15btNullPairCache22getNumOverlappingPairsEv); +var _ZNK15btNullPairCache26getOverlappingPairArrayPtrEv__index__ = register_delegate(_ZNK15btNullPairCache26getOverlappingPairArrayPtrEv); +var _ZNK15btTriangleShape11getNumEdgesEv__index__ = register_delegate(_ZNK15btTriangleShape11getNumEdgesEv); +var _ZNK15btTriangleShape12getNumPlanesEv__index__ = register_delegate(_ZNK15btTriangleShape12getNumPlanesEv); +var _ZNK15btTriangleShape14getNumVerticesEv__index__ = register_delegate(_ZNK15btTriangleShape14getNumVerticesEv); +var _ZNK15btTriangleShape16getPlaneEquationEiR9btVector3S1___index__ = register_delegate(_ZNK15btTriangleShape16getPlaneEquationEiR9btVector3S1_); +var _ZNK15btTriangleShape21calculateLocalInertiaEfR9btVector3__index__ = register_delegate(_ZNK15btTriangleShape21calculateLocalInertiaEfR9btVector3); +var _ZNK15btTriangleShape32getPreferredPenetrationDirectionEiR9btVector3__index__ = register_delegate(_ZNK15btTriangleShape32getPreferredPenetrationDirectionEiR9btVector3); +var _ZNK15btTriangleShape36getNumPreferredPenetrationDirectionsEv__index__ = register_delegate(_ZNK15btTriangleShape36getNumPreferredPenetrationDirectionsEv); +var _ZNK15btTriangleShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__ = register_delegate(_ZNK15btTriangleShape37localGetSupportingVertexWithoutMarginERK9btVector3); +var _ZNK15btTriangleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i__index__ = register_delegate(_ZNK15btTriangleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i); +var _ZNK15btTriangleShape7getAabbERK11btTransformR9btVector3S4___index__ = register_delegate(_ZNK15btTriangleShape7getAabbERK11btTransformR9btVector3S4_); +var _ZNK15btTriangleShape7getEdgeEiR9btVector3S1___index__ = register_delegate(_ZNK15btTriangleShape7getEdgeEiR9btVector3S1_); +var _ZNK15btTriangleShape7getNameEv__index__ = register_delegate(_ZNK15btTriangleShape7getNameEv); +var _ZNK15btTriangleShape8getPlaneER9btVector3S1_i__index__ = register_delegate(_ZNK15btTriangleShape8getPlaneER9btVector3S1_i); +var _ZNK15btTriangleShape8isInsideERK9btVector3f__index__ = register_delegate(_ZNK15btTriangleShape8isInsideERK9btVector3f); +var _ZNK15btTriangleShape9getVertexEiR9btVector3__index__ = register_delegate(_ZNK15btTriangleShape9getVertexEiR9btVector3); +var _ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf__index__ = register_delegate(_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf); +var _ZNK16btCollisionShape20getAngularMotionDiscEv__index__ = register_delegate(_ZNK16btCollisionShape20getAngularMotionDiscEv); +var _ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer__index__ = register_delegate(_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer); +var _ZNK16btCollisionShape27getContactBreakingThresholdEf__index__ = register_delegate(_ZNK16btCollisionShape27getContactBreakingThresholdEf); +var _ZNK16btCollisionShape28calculateSerializeBufferSizeEv__index__ = register_delegate(_ZNK16btCollisionShape28calculateSerializeBufferSizeEv); +var _ZNK16btCollisionShape9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK16btCollisionShape9serializeEPvP12btSerializer); +var _ZNK16btCollisionWorld17RayResultCallback14needsCollisionEP17btBroadphaseProxy__index__ = register_delegate(_ZNK16btCollisionWorld17RayResultCallback14needsCollisionEP17btBroadphaseProxy); +var _ZNK16btCollisionWorld20ConvexResultCallback14needsCollisionEP17btBroadphaseProxy__index__ = register_delegate(_ZNK16btCollisionWorld20ConvexResultCallback14needsCollisionEP17btBroadphaseProxy); +var _ZNK16btCollisionWorld7rayTestERK9btVector3S2_RNS_17RayResultCallbackE__index__ = register_delegate(_ZNK16btCollisionWorld7rayTestERK9btVector3S2_RNS_17RayResultCallbackE); +var _ZNK16btDbvtBroadphase17getBroadphaseAabbER9btVector3S1___index__ = register_delegate(_ZNK16btDbvtBroadphase17getBroadphaseAabbER9btVector3S1_); +var _ZNK16btDbvtBroadphase23getOverlappingPairCacheEv__index__ = register_delegate(_ZNK16btDbvtBroadphase23getOverlappingPairCacheEv); +var _ZNK16btDbvtBroadphase7getAabbEP17btBroadphaseProxyR9btVector3S3___index__ = register_delegate(_ZNK16btDbvtBroadphase7getAabbEP17btBroadphaseProxyR9btVector3S3_); +var _ZNK17btCollisionObject21serializeSingleObjectEP12btSerializer__index__ = register_delegate(_ZNK17btCollisionObject21serializeSingleObjectEP12btSerializer); +var _ZNK17btCollisionObject28calculateSerializeBufferSizeEv__index__ = register_delegate(_ZNK17btCollisionObject28calculateSerializeBufferSizeEv); +var _ZNK17btCollisionObject9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK17btCollisionObject9serializeEPvP12btSerializer); +var _ZNK17btConvexHullShape11getNumEdgesEv__index__ = register_delegate(_ZNK17btConvexHullShape11getNumEdgesEv); +var _ZNK17btConvexHullShape12getNumPlanesEv__index__ = register_delegate(_ZNK17btConvexHullShape12getNumPlanesEv); +var _ZNK17btConvexHullShape14getNumVerticesEv__index__ = register_delegate(_ZNK17btConvexHullShape14getNumVerticesEv); +var _ZNK17btConvexHullShape24localGetSupportingVertexERK9btVector3__index__ = register_delegate(_ZNK17btConvexHullShape24localGetSupportingVertexERK9btVector3); +var _ZNK17btConvexHullShape28calculateSerializeBufferSizeEv__index__ = register_delegate(_ZNK17btConvexHullShape28calculateSerializeBufferSizeEv); +var _ZNK17btConvexHullShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__ = register_delegate(_ZNK17btConvexHullShape37localGetSupportingVertexWithoutMarginERK9btVector3); +var _ZNK17btConvexHullShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i__index__ = register_delegate(_ZNK17btConvexHullShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i); +var _ZNK17btConvexHullShape7getEdgeEiR9btVector3S1___index__ = register_delegate(_ZNK17btConvexHullShape7getEdgeEiR9btVector3S1_); +var _ZNK17btConvexHullShape7getNameEv__index__ = register_delegate(_ZNK17btConvexHullShape7getNameEv); +var _ZNK17btConvexHullShape8getPlaneER9btVector3S1_i__index__ = register_delegate(_ZNK17btConvexHullShape8getPlaneER9btVector3S1_i); +var _ZNK17btConvexHullShape8isInsideERK9btVector3f__index__ = register_delegate(_ZNK17btConvexHullShape8isInsideERK9btVector3f); +var _ZNK17btConvexHullShape9getVertexEiR9btVector3__index__ = register_delegate(_ZNK17btConvexHullShape9getVertexEiR9btVector3); +var _ZNK17btConvexHullShape9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK17btConvexHullShape9serializeEPvP12btSerializer); +var _ZNK17btHingeConstraint28calculateSerializeBufferSizeEv__index__ = register_delegate(_ZNK17btHingeConstraint28calculateSerializeBufferSizeEv); +var _ZNK17btHingeConstraint8getParamEii__index__ = register_delegate(_ZNK17btHingeConstraint8getParamEii); +var _ZNK17btHingeConstraint9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK17btHingeConstraint9serializeEPvP12btSerializer); +var _ZNK19btTriangleMeshShape15getLocalScalingEv__index__ = register_delegate(_ZNK19btTriangleMeshShape15getLocalScalingEv); +var _ZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4___index__ = register_delegate(_ZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_); +var _ZNK19btTriangleMeshShape21calculateLocalInertiaEfR9btVector3__index__ = register_delegate(_ZNK19btTriangleMeshShape21calculateLocalInertiaEfR9btVector3); +var _ZNK19btTriangleMeshShape24localGetSupportingVertexERK9btVector3__index__ = register_delegate(_ZNK19btTriangleMeshShape24localGetSupportingVertexERK9btVector3); +var _ZNK19btTriangleMeshShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__ = register_delegate(_ZNK19btTriangleMeshShape37localGetSupportingVertexWithoutMarginERK9btVector3); +var _ZNK19btTriangleMeshShape7getAabbERK11btTransformR9btVector3S4___index__ = register_delegate(_ZNK19btTriangleMeshShape7getAabbERK11btTransformR9btVector3S4_); +var _ZNK19btTriangleMeshShape7getNameEv__index__ = register_delegate(_ZNK19btTriangleMeshShape7getNameEv); +var _ZNK20btAxisSweep3InternalItE17getBroadphaseAabbER9btVector3S2___index__ = register_delegate(_ZNK20btAxisSweep3InternalItE17getBroadphaseAabbER9btVector3S2_); +var _ZNK20btAxisSweep3InternalItE23getOverlappingPairCacheEv__index__ = register_delegate(_ZNK20btAxisSweep3InternalItE23getOverlappingPairCacheEv); +var _ZNK20btAxisSweep3InternalItE7getAabbEP17btBroadphaseProxyR9btVector3S4___index__ = register_delegate(_ZNK20btAxisSweep3InternalItE7getAabbEP17btBroadphaseProxyR9btVector3S4_); +var _ZNK20btDefaultMotionState17getWorldTransformER11btTransform__index__ = register_delegate(_ZNK20btDefaultMotionState17getWorldTransformER11btTransform); +var _ZNK21btCollisionDispatcher15getNumManifoldsEv__index__ = register_delegate(_ZNK21btCollisionDispatcher15getNumManifoldsEv); +var _ZNK21btConeTwistConstraint28calculateSerializeBufferSizeEv__index__ = register_delegate(_ZNK21btConeTwistConstraint28calculateSerializeBufferSizeEv); +var _ZNK21btConeTwistConstraint8getParamEii__index__ = register_delegate(_ZNK21btConeTwistConstraint8getParamEii); +var _ZNK21btConeTwistConstraint9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK21btConeTwistConstraint9serializeEPvP12btSerializer); +var _ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4___index__ = register_delegate(_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_); +var _ZNK21btConvexInternalShape15getLocalScalingEv__index__ = register_delegate(_ZNK21btConvexInternalShape15getLocalScalingEv); +var _ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3__index__ = register_delegate(_ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3); +var _ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv__index__ = register_delegate(_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv); +var _ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3__index__ = register_delegate(_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3); +var _ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv__index__ = register_delegate(_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv); +var _ZNK21btConvexInternalShape9getMarginEv__index__ = register_delegate(_ZNK21btConvexInternalShape9getMarginEv); +var _ZNK21btConvexInternalShape9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK21btConvexInternalShape9serializeEPvP12btSerializer); +var _ZNK22btBvhTriangleMeshShape18serializeSingleBvhEP12btSerializer__index__ = register_delegate(_ZNK22btBvhTriangleMeshShape18serializeSingleBvhEP12btSerializer); +var _ZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4___index__ = register_delegate(_ZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_); +var _ZNK22btBvhTriangleMeshShape28calculateSerializeBufferSizeEv__index__ = register_delegate(_ZNK22btBvhTriangleMeshShape28calculateSerializeBufferSizeEv); +var _ZNK22btBvhTriangleMeshShape30serializeSingleTriangleInfoMapEP12btSerializer__index__ = register_delegate(_ZNK22btBvhTriangleMeshShape30serializeSingleTriangleInfoMapEP12btSerializer); +var _ZNK22btBvhTriangleMeshShape7getNameEv__index__ = register_delegate(_ZNK22btBvhTriangleMeshShape7getNameEv); +var _ZNK22btBvhTriangleMeshShape9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK22btBvhTriangleMeshShape9serializeEPvP12btSerializer); +var _ZNK23btDiscreteDynamicsWorld10getGravityEv__index__ = register_delegate(_ZNK23btDiscreteDynamicsWorld10getGravityEv); +var _ZNK23btDiscreteDynamicsWorld12getWorldTypeEv__index__ = register_delegate(_ZNK23btDiscreteDynamicsWorld12getWorldTypeEv); +var _ZNK23btDiscreteDynamicsWorld13getConstraintEi__index__ = register_delegate(_ZNK23btDiscreteDynamicsWorld13getConstraintEi); +var _ZNK23btDiscreteDynamicsWorld17getNumConstraintsEv__index__ = register_delegate(_ZNK23btDiscreteDynamicsWorld17getNumConstraintsEv); +var _ZNK23btPolyhedralConvexShape21calculateLocalInertiaEfR9btVector3__index__ = register_delegate(_ZNK23btPolyhedralConvexShape21calculateLocalInertiaEfR9btVector3); +var _ZNK23btStridingMeshInterface14getPremadeAabbEP9btVector3S1___index__ = register_delegate(_ZNK23btStridingMeshInterface14getPremadeAabbEP9btVector3S1_); +var _ZNK23btStridingMeshInterface14hasPremadeAabbEv__index__ = register_delegate(_ZNK23btStridingMeshInterface14hasPremadeAabbEv); +var _ZNK23btStridingMeshInterface14setPremadeAabbERK9btVector3S2___index__ = register_delegate(_ZNK23btStridingMeshInterface14setPremadeAabbERK9btVector3S2_); +var _ZNK23btStridingMeshInterface27InternalProcessAllTrianglesEP31btInternalTriangleIndexCallbackRK9btVector3S4___index__ = register_delegate(_ZNK23btStridingMeshInterface27InternalProcessAllTrianglesEP31btInternalTriangleIndexCallbackRK9btVector3S4_); +var _ZNK23btStridingMeshInterface28calculateSerializeBufferSizeEv__index__ = register_delegate(_ZNK23btStridingMeshInterface28calculateSerializeBufferSizeEv); +var _ZNK23btStridingMeshInterface9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK23btStridingMeshInterface9serializeEPvP12btSerializer); +var _ZNK26btTriangleIndexVertexArray14getNumSubPartsEv__index__ = register_delegate(_ZNK26btTriangleIndexVertexArray14getNumSubPartsEv); +var _ZNK26btTriangleIndexVertexArray14getPremadeAabbEP9btVector3S1___index__ = register_delegate(_ZNK26btTriangleIndexVertexArray14getPremadeAabbEP9btVector3S1_); +var _ZNK26btTriangleIndexVertexArray14hasPremadeAabbEv__index__ = register_delegate(_ZNK26btTriangleIndexVertexArray14hasPremadeAabbEv); +var _ZNK26btTriangleIndexVertexArray14setPremadeAabbERK9btVector3S2___index__ = register_delegate(_ZNK26btTriangleIndexVertexArray14setPremadeAabbERK9btVector3S2_); +var _ZNK26btTriangleIndexVertexArray24unLockReadOnlyVertexBaseEi__index__ = register_delegate(_ZNK26btTriangleIndexVertexArray24unLockReadOnlyVertexBaseEi); +var _ZNK26btTriangleIndexVertexArray32getLockedReadOnlyVertexIndexBaseEPPKhRiR14PHY_ScalarTypeS3_S2_S3_S3_S5_i__index__ = register_delegate(_ZNK26btTriangleIndexVertexArray32getLockedReadOnlyVertexIndexBaseEPPKhRiR14PHY_ScalarTypeS3_S2_S3_S3_S5_i); +var _ZNK28btHashedOverlappingPairCache22getNumOverlappingPairsEv__index__ = register_delegate(_ZNK28btHashedOverlappingPairCache22getNumOverlappingPairsEv); +var _ZNK28btHashedOverlappingPairCache26getOverlappingPairArrayPtrEv__index__ = register_delegate(_ZNK28btHashedOverlappingPairCache26getOverlappingPairArrayPtrEv); +var _ZNK34btClosestNotMeConvexResultCallback14needsCollisionEP17btBroadphaseProxy__index__ = register_delegate(_ZNK34btClosestNotMeConvexResultCallback14needsCollisionEP17btBroadphaseProxy); +var _ZNK34btPolyhedralConvexAabbCachingShape7getAabbERK11btTransformR9btVector3S4___index__ = register_delegate(_ZNK34btPolyhedralConvexAabbCachingShape7getAabbERK11btTransformR9btVector3S4_); +var _ZNKSt8messagesIcE6do_getEiiiRKSs__index__ = register_delegate(_ZNKSt8messagesIcE6do_getEiiiRKSs); +var _ZNKSt8messagesIcE7do_openERKSsRKSt6locale__index__ = register_delegate(_ZNKSt8messagesIcE7do_openERKSsRKSt6locale); +var _ZNKSt8messagesIcE8do_closeEi__index__ = register_delegate(_ZNKSt8messagesIcE8do_closeEi); +var _ZNKSt9type_info10__do_catchEPKS_PPvj__index__ = register_delegate(_ZNKSt9type_info10__do_catchEPKS_PPvj); +var _ZNKSt9type_info15__is_function_pEv__index__ = register_delegate(_ZNKSt9type_info15__is_function_pEv); +var _ZNSt8messagesIcED0Ev__index__ = register_delegate(_ZNSt8messagesIcED0Ev); +var _ZNSt8messagesIcED1Ev__index__ = register_delegate(_ZNSt8messagesIcED1Ev); +var _ZNSt9type_infoD0Ev__index__ = register_delegate(_ZNSt9type_infoD0Ev); +var _ZNSt9type_infoD1Ev__index__ = register_delegate(_ZNSt9type_infoD1Ev); +var _ZThn4_N17DebugDrawcallback28internalProcessTriangleIndexEP9btVector3ii__index__ = register_delegate(_ZThn4_N17DebugDrawcallback28internalProcessTriangleIndexEP9btVector3ii); +var _ZThn4_N17DebugDrawcallbackD0Ev__index__ = register_delegate(_ZThn4_N17DebugDrawcallbackD0Ev); +var _ZThn4_N17DebugDrawcallbackD1Ev__index__ = register_delegate(_ZThn4_N17DebugDrawcallbackD1Ev); +var _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallback28internalProcessTriangleIndexEPS2_ii__index__ = register_delegate(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallback28internalProcessTriangleIndexEPS2_ii); +var _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallbackD0Ev__index__ = register_delegate(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallbackD0Ev); +var _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallbackD1Ev__index__ = register_delegate(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallbackD1Ev); +var _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallback28internalProcessTriangleIndexEPS2_ii__index__ = register_delegate(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallback28internalProcessTriangleIndexEPS2_ii); +var _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallbackD0Ev__index__ = register_delegate(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallbackD0Ev); +var _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallbackD1Ev__index__ = register_delegate(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallbackD1Ev); +var _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder215addSingleResultERNS_14LocalRayResultEb__index__ = register_delegate(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder215addSingleResultERNS_14LocalRayResultEb); +var _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder2D0Ev__index__ = register_delegate(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder2D0Ev); +var _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder2D1Ev__index__ = register_delegate(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder2D1Ev); +var _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallback9reportHitERK9btVector3fii__index__ = register_delegate(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallback9reportHitERK9btVector3fii); +var _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallback9reportHitE_0RK9btVector3fii__index__ = register_delegate(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallback9reportHitE_0RK9btVector3fii); +var _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD0E_0v__index__ = register_delegate(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD0E_0v); +var _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD0Ev__index__ = register_delegate(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD0Ev); +var _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD1E_0v__index__ = register_delegate(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD1E_0v); +var _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD1Ev__index__ = register_delegate(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD1Ev); +var _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdder15addSingleResultERNS_17LocalConvexResultEb__index__ = register_delegate(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdder15addSingleResultERNS_17LocalConvexResultEb); +var _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdderD0Ev__index__ = register_delegate(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdderD0Ev); +var _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdderD1Ev__index__ = register_delegate(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdderD1Ev); +var _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallback9reportHitERK9btVector3SG_fii__index__ = register_delegate(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallback9reportHitERK9btVector3SG_fii); +var _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallback9reportHitE_0RK9btVector3SG_fii__index__ = register_delegate(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallback9reportHitE_0RK9btVector3SG_fii); +var _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD0E_0v__index__ = register_delegate(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD0E_0v); +var _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD0Ev__index__ = register_delegate(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD0Ev); +var _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD1E_0v__index__ = register_delegate(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD1E_0v); +var _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD1Ev__index__ = register_delegate(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD1Ev); +var _ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallback11processNodeEii__index__ = register_delegate(_ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallback11processNodeEii); +var _ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD0Ev__index__ = register_delegate(_ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD0Ev); +var _ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD1Ev__index__ = register_delegate(_ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD1Ev); +var _ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallback11processNodeEii__index__ = register_delegate(_ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallback11processNodeEii); +var _ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallbackD0Ev__index__ = register_delegate(_ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallbackD0Ev); +var _ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallbackD1Ev__index__ = register_delegate(_ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallbackD1Ev); +var _ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallback13ProcessIslandEPP17btCollisionObjectiPP20btPersistentManifoldii__index__ = register_delegate(_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallback13ProcessIslandEPP17btCollisionObjectiPP20btPersistentManifoldii); +var _ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallbackD0Ev__index__ = register_delegate(_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallbackD0Ev); +var _ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallbackD1Ev__index__ = register_delegate(_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallbackD1Ev); +var _ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallback14processOverlapER16btBroadphasePair__index__ = register_delegate(_ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallback14processOverlapER16btBroadphasePair); +var _ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD0Ev__index__ = register_delegate(_ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD0Ev); +var _ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD1Ev__index__ = register_delegate(_ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD1Ev); +var _ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallback14processOverlapER16btBroadphasePair__index__ = register_delegate(_ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallback14processOverlapER16btBroadphasePair); +var _ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD0Ev__index__ = register_delegate(_ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD0Ev); +var _ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD1Ev__index__ = register_delegate(_ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD1Ev); +var _ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallback15processTriangleEP9btVector3ii__index__ = register_delegate(_ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallback15processTriangleEP9btVector3ii); +var _ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallbackD0Ev__index__ = register_delegate(_ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallbackD0Ev); +var _ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallbackD1Ev__index__ = register_delegate(_ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallbackD1Ev); +var _ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallback28internalProcessTriangleIndexEPS2_ii__index__ = register_delegate(_ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallback28internalProcessTriangleIndexEPS2_ii); +var _ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallbackD0Ev__index__ = register_delegate(_ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallbackD0Ev); +var _ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallbackD1Ev__index__ = register_delegate(_ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallbackD1Ev); +var _ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallback11processNodeEii__index__ = register_delegate(_ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallback11processNodeEii); +var _ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD0Ev__index__ = register_delegate(_ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD0Ev); +var _ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD1Ev__index__ = register_delegate(_ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD1Ev); +var __cxa_pure_virtual__index__ = register_delegate(__cxa_pure_virtual); +var __fwrite__index__ = register_delegate(__fwrite); +var __mandreel_internal_SetResolution__index__ = register_delegate(__mandreel_internal_SetResolution); +var __resize__index__ = register_delegate(__resize); +var cmpfacets__index__ = register_delegate(cmpfacets); +var cmplocales__index__ = register_delegate(cmplocales); +var iMandreel_TextureAsync_GetPackOffset__index__ = register_delegate(iMandreel_TextureAsync_GetPackOffset); +var iMandreel_TextureAsync_IsCompressed__index__ = register_delegate(iMandreel_TextureAsync_IsCompressed); +var imandreel_restore_glcontext__index__ = register_delegate(imandreel_restore_glcontext); +var imandreel_viewport_resize__index__ = register_delegate(imandreel_viewport_resize); +var mandreel_flash_tcp_onError__index__ = register_delegate(mandreel_flash_tcp_onError); +var swrite__index__ = register_delegate(swrite); +var _objc_sections = {}; +var _objc_sections_size = {}; + +// End of mandreel.js file. diff --git a/js/src/octane/navier-stokes.js b/js/src/octane/navier-stokes.js new file mode 100644 index 0000000000..6e21cb57ac --- /dev/null +++ b/js/src/octane/navier-stokes.js @@ -0,0 +1,415 @@ +/** + * Copyright 2013 the V8 project authors. All rights reserved. + * Copyright 2009 Oliver Hunt + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * Update 10/21/2013: fixed loop variables at line 119 + */ + +var NavierStokes = new BenchmarkSuite('NavierStokes', [1484000], + [new Benchmark('NavierStokes', + true, + false, + 180, + runNavierStokes, + setupNavierStokes, + tearDownNavierStokes, + null, + 16)]); + +var solver = null; +var nsFrameCounter = 0; + +function runNavierStokes() +{ + solver.update(); + nsFrameCounter++; + + if(nsFrameCounter==15) + checkResult(solver.getDens()); +} + +function checkResult(dens) { + + this.result = 0; + for (var i=7000;i<7100;i++) { + this.result+=~~((dens[i]*10)); + } + + if (this.result!=77) { + throw(new Error("checksum failed")); + } +} + +function setupNavierStokes() +{ + solver = new FluidField(null); + solver.setResolution(128, 128); + solver.setIterations(20); + solver.setDisplayFunction(function(){}); + solver.setUICallback(prepareFrame); + solver.reset(); +} + +function tearDownNavierStokes() +{ + solver = null; +} + +function addPoints(field) { + var n = 64; + for (var i = 1; i <= n; i++) { + field.setVelocity(i, i, n, n); + field.setDensity(i, i, 5); + field.setVelocity(i, n - i, -n, -n); + field.setDensity(i, n - i, 20); + field.setVelocity(128 - i, n + i, -n, -n); + field.setDensity(128 - i, n + i, 30); + } +} + +var framesTillAddingPoints = 0; +var framesBetweenAddingPoints = 5; + +function prepareFrame(field) +{ + if (framesTillAddingPoints == 0) { + addPoints(field); + framesTillAddingPoints = framesBetweenAddingPoints; + framesBetweenAddingPoints++; + } else { + framesTillAddingPoints--; + } +} + +// Code from Oliver Hunt (http://nerget.com/fluidSim/pressure.js) starts here. +function FluidField(canvas) { + function addFields(x, s, dt) + { + for (var i=0; i Wp5) + x = Wp5; + var i0 = x | 0; + var i1 = i0 + 1; + if (y < 0.5) + y = 0.5; + else if (y > Hp5) + y = Hp5; + var j0 = y | 0; + var j1 = j0 + 1; + var s1 = x - i0; + var s0 = 1 - s1; + var t1 = y - j0; + var t0 = 1 - t1; + var row1 = j0 * rowSize; + var row2 = j1 * rowSize; + d[pos] = s0 * (t0 * d0[i0 + row1] + t1 * d0[i0 + row2]) + s1 * (t0 * d0[i1 + row1] + t1 * d0[i1 + row2]); + } + } + set_bnd(b, d); + } + + function project(u, v, p, div) + { + var h = -0.5 / Math.sqrt(width * height); + for (var j = 1 ; j <= height; j++ ) { + var row = j * rowSize; + var previousRow = (j - 1) * rowSize; + var prevValue = row - 1; + var currentRow = row; + var nextValue = row + 1; + var nextRow = (j + 1) * rowSize; + for (var i = 1; i <= width; i++ ) { + div[++currentRow] = h * (u[++nextValue] - u[++prevValue] + v[++nextRow] - v[++previousRow]); + p[currentRow] = 0; + } + } + set_bnd(0, div); + set_bnd(0, p); + + lin_solve(0, p, div, 1, 4 ); + var wScale = 0.5 * width; + var hScale = 0.5 * height; + for (var j = 1; j<= height; j++ ) { + var prevPos = j * rowSize - 1; + var currentPos = j * rowSize; + var nextPos = j * rowSize + 1; + var prevRow = (j - 1) * rowSize; + var currentRow = j * rowSize; + var nextRow = (j + 1) * rowSize; + + for (var i = 1; i<= width; i++) { + u[++currentPos] -= wScale * (p[++nextPos] - p[++prevPos]); + v[currentPos] -= hScale * (p[++nextRow] - p[++prevRow]); + } + } + set_bnd(1, u); + set_bnd(2, v); + } + + function dens_step(x, x0, u, v, dt) + { + addFields(x, x0, dt); + diffuse(0, x0, x, dt ); + advect(0, x, x0, u, v, dt ); + } + + function vel_step(u, v, u0, v0, dt) + { + addFields(u, u0, dt ); + addFields(v, v0, dt ); + var temp = u0; u0 = u; u = temp; + var temp = v0; v0 = v; v = temp; + diffuse2(u,u0,v,v0, dt); + project(u, v, u0, v0); + var temp = u0; u0 = u; u = temp; + var temp = v0; v0 = v; v = temp; + advect(1, u, u0, u0, v0, dt); + advect(2, v, v0, u0, v0, dt); + project(u, v, u0, v0 ); + } + var uiCallback = function(d,u,v) {}; + + function Field(dens, u, v) { + // Just exposing the fields here rather than using accessors is a measurable win during display (maybe 5%) + // but makes the code ugly. + this.setDensity = function(x, y, d) { + dens[(x + 1) + (y + 1) * rowSize] = d; + } + this.getDensity = function(x, y) { + return dens[(x + 1) + (y + 1) * rowSize]; + } + this.setVelocity = function(x, y, xv, yv) { + u[(x + 1) + (y + 1) * rowSize] = xv; + v[(x + 1) + (y + 1) * rowSize] = yv; + } + this.getXVelocity = function(x, y) { + return u[(x + 1) + (y + 1) * rowSize]; + } + this.getYVelocity = function(x, y) { + return v[(x + 1) + (y + 1) * rowSize]; + } + this.width = function() { return width; } + this.height = function() { return height; } + } + function queryUI(d, u, v) + { + for (var i = 0; i < size; i++) + u[i] = v[i] = d[i] = 0.0; + uiCallback(new Field(d, u, v)); + } + + this.update = function () { + queryUI(dens_prev, u_prev, v_prev); + vel_step(u, v, u_prev, v_prev, dt); + dens_step(dens, dens_prev, u, v, dt); + displayFunc(new Field(dens, u, v)); + } + this.setDisplayFunction = function(func) { + displayFunc = func; + } + + this.iterations = function() { return iterations; } + this.setIterations = function(iters) { + if (iters > 0 && iters <= 100) + iterations = iters; + } + this.setUICallback = function(callback) { + uiCallback = callback; + } + var iterations = 10; + var visc = 0.5; + var dt = 0.1; + var dens; + var dens_prev; + var u; + var u_prev; + var v; + var v_prev; + var width; + var height; + var rowSize; + var size; + var displayFunc; + function reset() + { + rowSize = width + 2; + size = (width+2)*(height+2); + dens = new Array(size); + dens_prev = new Array(size); + u = new Array(size); + u_prev = new Array(size); + v = new Array(size); + v_prev = new Array(size); + for (var i = 0; i < size; i++) + dens_prev[i] = u_prev[i] = v_prev[i] = dens[i] = u[i] = v[i] = 0; + } + this.reset = reset; + this.getDens = function() + { + return dens; + } + this.setResolution = function (hRes, wRes) + { + var res = wRes * hRes; + if (res > 0 && res < 1000000 && (wRes != width || hRes != height)) { + width = wRes; + height = hRes; + reset(); + return true; + } + return false; + } + this.setResolution(64, 64); +} diff --git a/js/src/octane/raytrace.js b/js/src/octane/raytrace.js new file mode 100644 index 0000000000..9ff0e19d20 --- /dev/null +++ b/js/src/octane/raytrace.js @@ -0,0 +1,904 @@ +// The ray tracer code in this file is written by Adam Burmister. It +// is available in its original form from: +// +// http://labs.flog.nz.co/raytracer/ +// +// It has been modified slightly by Google to work as a standalone +// benchmark, but the all the computational code remains +// untouched. This file also contains a copy of parts of the Prototype +// JavaScript framework which is used by the ray tracer. + +var RayTrace = new BenchmarkSuite('RayTrace', [739989], [ + new Benchmark('RayTrace', true, false, 600, renderScene) +]); + + +// Variable used to hold a number that can be used to verify that +// the scene was ray traced correctly. +var checkNumber; + + +// ------------------------------------------------------------------------ +// ------------------------------------------------------------------------ + +// The following is a copy of parts of the Prototype JavaScript library: + +// Prototype JavaScript framework, version 1.5.0 +// (c) 2005-2007 Sam Stephenson +// +// Prototype is freely distributable under the terms of an MIT-style license. +// For details, see the Prototype web site: http://prototype.conio.net/ + + +var Class = { + create: function() { + return function() { + this.initialize.apply(this, arguments); + } + } +}; + + +Object.extend = function(destination, source) { + for (var property in source) { + destination[property] = source[property]; + } + return destination; +}; + + +// ------------------------------------------------------------------------ +// ------------------------------------------------------------------------ + +// The rest of this file is the actual ray tracer written by Adam +// Burmister. It's a concatenation of the following files: +// +// flog/color.js +// flog/light.js +// flog/vector.js +// flog/ray.js +// flog/scene.js +// flog/material/basematerial.js +// flog/material/solid.js +// flog/material/chessboard.js +// flog/shape/baseshape.js +// flog/shape/sphere.js +// flog/shape/plane.js +// flog/intersectioninfo.js +// flog/camera.js +// flog/background.js +// flog/engine.js + + +/* Fake a Flog.* namespace */ +if(typeof(Flog) == 'undefined') var Flog = {}; +if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {}; + +Flog.RayTracer.Color = Class.create(); + +Flog.RayTracer.Color.prototype = { + red : 0.0, + green : 0.0, + blue : 0.0, + + initialize : function(r, g, b) { + if(!r) r = 0.0; + if(!g) g = 0.0; + if(!b) b = 0.0; + + this.red = r; + this.green = g; + this.blue = b; + }, + + add : function(c1, c2){ + var result = new Flog.RayTracer.Color(0,0,0); + + result.red = c1.red + c2.red; + result.green = c1.green + c2.green; + result.blue = c1.blue + c2.blue; + + return result; + }, + + addScalar: function(c1, s){ + var result = new Flog.RayTracer.Color(0,0,0); + + result.red = c1.red + s; + result.green = c1.green + s; + result.blue = c1.blue + s; + + result.limit(); + + return result; + }, + + subtract: function(c1, c2){ + var result = new Flog.RayTracer.Color(0,0,0); + + result.red = c1.red - c2.red; + result.green = c1.green - c2.green; + result.blue = c1.blue - c2.blue; + + return result; + }, + + multiply : function(c1, c2) { + var result = new Flog.RayTracer.Color(0,0,0); + + result.red = c1.red * c2.red; + result.green = c1.green * c2.green; + result.blue = c1.blue * c2.blue; + + return result; + }, + + multiplyScalar : function(c1, f) { + var result = new Flog.RayTracer.Color(0,0,0); + + result.red = c1.red * f; + result.green = c1.green * f; + result.blue = c1.blue * f; + + return result; + }, + + divideFactor : function(c1, f) { + var result = new Flog.RayTracer.Color(0,0,0); + + result.red = c1.red / f; + result.green = c1.green / f; + result.blue = c1.blue / f; + + return result; + }, + + limit: function(){ + this.red = (this.red > 0.0) ? ( (this.red > 1.0) ? 1.0 : this.red ) : 0.0; + this.green = (this.green > 0.0) ? ( (this.green > 1.0) ? 1.0 : this.green ) : 0.0; + this.blue = (this.blue > 0.0) ? ( (this.blue > 1.0) ? 1.0 : this.blue ) : 0.0; + }, + + distance : function(color) { + var d = Math.abs(this.red - color.red) + Math.abs(this.green - color.green) + Math.abs(this.blue - color.blue); + return d; + }, + + blend: function(c1, c2, w){ + var result = new Flog.RayTracer.Color(0,0,0); + result = Flog.RayTracer.Color.prototype.add( + Flog.RayTracer.Color.prototype.multiplyScalar(c1, 1 - w), + Flog.RayTracer.Color.prototype.multiplyScalar(c2, w) + ); + return result; + }, + + brightness : function() { + var r = Math.floor(this.red*255); + var g = Math.floor(this.green*255); + var b = Math.floor(this.blue*255); + return (r * 77 + g * 150 + b * 29) >> 8; + }, + + toString : function () { + var r = Math.floor(this.red*255); + var g = Math.floor(this.green*255); + var b = Math.floor(this.blue*255); + + return "rgb("+ r +","+ g +","+ b +")"; + } +} +/* Fake a Flog.* namespace */ +if(typeof(Flog) == 'undefined') var Flog = {}; +if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {}; + +Flog.RayTracer.Light = Class.create(); + +Flog.RayTracer.Light.prototype = { + position: null, + color: null, + intensity: 10.0, + + initialize : function(pos, color, intensity) { + this.position = pos; + this.color = color; + this.intensity = (intensity ? intensity : 10.0); + }, + + toString : function () { + return 'Light [' + this.position.x + ',' + this.position.y + ',' + this.position.z + ']'; + } +} +/* Fake a Flog.* namespace */ +if(typeof(Flog) == 'undefined') var Flog = {}; +if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {}; + +Flog.RayTracer.Vector = Class.create(); + +Flog.RayTracer.Vector.prototype = { + x : 0.0, + y : 0.0, + z : 0.0, + + initialize : function(x, y, z) { + this.x = (x ? x : 0); + this.y = (y ? y : 0); + this.z = (z ? z : 0); + }, + + copy: function(vector){ + this.x = vector.x; + this.y = vector.y; + this.z = vector.z; + }, + + normalize : function() { + var m = this.magnitude(); + return new Flog.RayTracer.Vector(this.x / m, this.y / m, this.z / m); + }, + + magnitude : function() { + return Math.sqrt((this.x * this.x) + (this.y * this.y) + (this.z * this.z)); + }, + + cross : function(w) { + return new Flog.RayTracer.Vector( + -this.z * w.y + this.y * w.z, + this.z * w.x - this.x * w.z, + -this.y * w.x + this.x * w.y); + }, + + dot : function(w) { + return this.x * w.x + this.y * w.y + this.z * w.z; + }, + + add : function(v, w) { + return new Flog.RayTracer.Vector(w.x + v.x, w.y + v.y, w.z + v.z); + }, + + subtract : function(v, w) { + if(!w || !v) throw 'Vectors must be defined [' + v + ',' + w + ']'; + return new Flog.RayTracer.Vector(v.x - w.x, v.y - w.y, v.z - w.z); + }, + + multiplyVector : function(v, w) { + return new Flog.RayTracer.Vector(v.x * w.x, v.y * w.y, v.z * w.z); + }, + + multiplyScalar : function(v, w) { + return new Flog.RayTracer.Vector(v.x * w, v.y * w, v.z * w); + }, + + toString : function () { + return 'Vector [' + this.x + ',' + this.y + ',' + this.z + ']'; + } +} +/* Fake a Flog.* namespace */ +if(typeof(Flog) == 'undefined') var Flog = {}; +if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {}; + +Flog.RayTracer.Ray = Class.create(); + +Flog.RayTracer.Ray.prototype = { + position : null, + direction : null, + initialize : function(pos, dir) { + this.position = pos; + this.direction = dir; + }, + + toString : function () { + return 'Ray [' + this.position + ',' + this.direction + ']'; + } +} +/* Fake a Flog.* namespace */ +if(typeof(Flog) == 'undefined') var Flog = {}; +if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {}; + +Flog.RayTracer.Scene = Class.create(); + +Flog.RayTracer.Scene.prototype = { + camera : null, + shapes : [], + lights : [], + background : null, + + initialize : function() { + this.camera = new Flog.RayTracer.Camera( + new Flog.RayTracer.Vector(0,0,-5), + new Flog.RayTracer.Vector(0,0,1), + new Flog.RayTracer.Vector(0,1,0) + ); + this.shapes = new Array(); + this.lights = new Array(); + this.background = new Flog.RayTracer.Background(new Flog.RayTracer.Color(0,0,0.5), 0.2); + } +} +/* Fake a Flog.* namespace */ +if(typeof(Flog) == 'undefined') var Flog = {}; +if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {}; +if(typeof(Flog.RayTracer.Material) == 'undefined') Flog.RayTracer.Material = {}; + +Flog.RayTracer.Material.BaseMaterial = Class.create(); + +Flog.RayTracer.Material.BaseMaterial.prototype = { + + gloss: 2.0, // [0...infinity] 0 = matt + transparency: 0.0, // 0=opaque + reflection: 0.0, // [0...infinity] 0 = no reflection + refraction: 0.50, + hasTexture: false, + + initialize : function() { + + }, + + getColor: function(u, v){ + + }, + + wrapUp: function(t){ + t = t % 2.0; + if(t < -1) t += 2.0; + if(t >= 1) t -= 2.0; + return t; + }, + + toString : function () { + return 'Material [gloss=' + this.gloss + ', transparency=' + this.transparency + ', hasTexture=' + this.hasTexture +']'; + } +} +/* Fake a Flog.* namespace */ +if(typeof(Flog) == 'undefined') var Flog = {}; +if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {}; + +Flog.RayTracer.Material.Solid = Class.create(); + +Flog.RayTracer.Material.Solid.prototype = Object.extend( + new Flog.RayTracer.Material.BaseMaterial(), { + initialize : function(color, reflection, refraction, transparency, gloss) { + this.color = color; + this.reflection = reflection; + this.transparency = transparency; + this.gloss = gloss; + this.hasTexture = false; + }, + + getColor: function(u, v){ + return this.color; + }, + + toString : function () { + return 'SolidMaterial [gloss=' + this.gloss + ', transparency=' + this.transparency + ', hasTexture=' + this.hasTexture +']'; + } + } +); +/* Fake a Flog.* namespace */ +if(typeof(Flog) == 'undefined') var Flog = {}; +if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {}; + +Flog.RayTracer.Material.Chessboard = Class.create(); + +Flog.RayTracer.Material.Chessboard.prototype = Object.extend( + new Flog.RayTracer.Material.BaseMaterial(), { + colorEven: null, + colorOdd: null, + density: 0.5, + + initialize : function(colorEven, colorOdd, reflection, transparency, gloss, density) { + this.colorEven = colorEven; + this.colorOdd = colorOdd; + this.reflection = reflection; + this.transparency = transparency; + this.gloss = gloss; + this.density = density; + this.hasTexture = true; + }, + + getColor: function(u, v){ + var t = this.wrapUp(u * this.density) * this.wrapUp(v * this.density); + + if(t < 0.0) + return this.colorEven; + else + return this.colorOdd; + }, + + toString : function () { + return 'ChessMaterial [gloss=' + this.gloss + ', transparency=' + this.transparency + ', hasTexture=' + this.hasTexture +']'; + } + } +); +/* Fake a Flog.* namespace */ +if(typeof(Flog) == 'undefined') var Flog = {}; +if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {}; +if(typeof(Flog.RayTracer.Shape) == 'undefined') Flog.RayTracer.Shape = {}; + +Flog.RayTracer.Shape.Sphere = Class.create(); + +Flog.RayTracer.Shape.Sphere.prototype = { + initialize : function(pos, radius, material) { + this.radius = radius; + this.position = pos; + this.material = material; + }, + + intersect: function(ray){ + var info = new Flog.RayTracer.IntersectionInfo(); + info.shape = this; + + var dst = Flog.RayTracer.Vector.prototype.subtract(ray.position, this.position); + + var B = dst.dot(ray.direction); + var C = dst.dot(dst) - (this.radius * this.radius); + var D = (B * B) - C; + + if(D > 0){ // intersection! + info.isHit = true; + info.distance = (-B) - Math.sqrt(D); + info.position = Flog.RayTracer.Vector.prototype.add( + ray.position, + Flog.RayTracer.Vector.prototype.multiplyScalar( + ray.direction, + info.distance + ) + ); + info.normal = Flog.RayTracer.Vector.prototype.subtract( + info.position, + this.position + ).normalize(); + + info.color = this.material.getColor(0,0); + } else { + info.isHit = false; + } + return info; + }, + + toString : function () { + return 'Sphere [position=' + this.position + ', radius=' + this.radius + ']'; + } +} +/* Fake a Flog.* namespace */ +if(typeof(Flog) == 'undefined') var Flog = {}; +if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {}; +if(typeof(Flog.RayTracer.Shape) == 'undefined') Flog.RayTracer.Shape = {}; + +Flog.RayTracer.Shape.Plane = Class.create(); + +Flog.RayTracer.Shape.Plane.prototype = { + d: 0.0, + + initialize : function(pos, d, material) { + this.position = pos; + this.d = d; + this.material = material; + }, + + intersect: function(ray){ + var info = new Flog.RayTracer.IntersectionInfo(); + + var Vd = this.position.dot(ray.direction); + if(Vd == 0) return info; // no intersection + + var t = -(this.position.dot(ray.position) + this.d) / Vd; + if(t <= 0) return info; + + info.shape = this; + info.isHit = true; + info.position = Flog.RayTracer.Vector.prototype.add( + ray.position, + Flog.RayTracer.Vector.prototype.multiplyScalar( + ray.direction, + t + ) + ); + info.normal = this.position; + info.distance = t; + + if(this.material.hasTexture){ + var vU = new Flog.RayTracer.Vector(this.position.y, this.position.z, -this.position.x); + var vV = vU.cross(this.position); + var u = info.position.dot(vU); + var v = info.position.dot(vV); + info.color = this.material.getColor(u,v); + } else { + info.color = this.material.getColor(0,0); + } + + return info; + }, + + toString : function () { + return 'Plane [' + this.position + ', d=' + this.d + ']'; + } +} +/* Fake a Flog.* namespace */ +if(typeof(Flog) == 'undefined') var Flog = {}; +if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {}; + +Flog.RayTracer.IntersectionInfo = Class.create(); + +Flog.RayTracer.IntersectionInfo.prototype = { + isHit: false, + hitCount: 0, + shape: null, + position: null, + normal: null, + color: null, + distance: null, + + initialize : function() { + this.color = new Flog.RayTracer.Color(0,0,0); + }, + + toString : function () { + return 'Intersection [' + this.position + ']'; + } +} +/* Fake a Flog.* namespace */ +if(typeof(Flog) == 'undefined') var Flog = {}; +if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {}; + +Flog.RayTracer.Camera = Class.create(); + +Flog.RayTracer.Camera.prototype = { + position: null, + lookAt: null, + equator: null, + up: null, + screen: null, + + initialize : function(pos, lookAt, up) { + this.position = pos; + this.lookAt = lookAt; + this.up = up; + this.equator = lookAt.normalize().cross(this.up); + this.screen = Flog.RayTracer.Vector.prototype.add(this.position, this.lookAt); + }, + + getRay: function(vx, vy){ + var pos = Flog.RayTracer.Vector.prototype.subtract( + this.screen, + Flog.RayTracer.Vector.prototype.subtract( + Flog.RayTracer.Vector.prototype.multiplyScalar(this.equator, vx), + Flog.RayTracer.Vector.prototype.multiplyScalar(this.up, vy) + ) + ); + pos.y = pos.y * -1; + var dir = Flog.RayTracer.Vector.prototype.subtract( + pos, + this.position + ); + + var ray = new Flog.RayTracer.Ray(pos, dir.normalize()); + + return ray; + }, + + toString : function () { + return 'Ray []'; + } +} +/* Fake a Flog.* namespace */ +if(typeof(Flog) == 'undefined') var Flog = {}; +if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {}; + +Flog.RayTracer.Background = Class.create(); + +Flog.RayTracer.Background.prototype = { + color : null, + ambience : 0.0, + + initialize : function(color, ambience) { + this.color = color; + this.ambience = ambience; + } +} +/* Fake a Flog.* namespace */ +if(typeof(Flog) == 'undefined') var Flog = {}; +if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {}; + +Flog.RayTracer.Engine = Class.create(); + +Flog.RayTracer.Engine.prototype = { + canvas: null, /* 2d context we can render to */ + + initialize: function(options){ + this.options = Object.extend({ + canvasHeight: 100, + canvasWidth: 100, + pixelWidth: 2, + pixelHeight: 2, + renderDiffuse: false, + renderShadows: false, + renderHighlights: false, + renderReflections: false, + rayDepth: 2 + }, options || {}); + + this.options.canvasHeight /= this.options.pixelHeight; + this.options.canvasWidth /= this.options.pixelWidth; + + /* TODO: dynamically include other scripts */ + }, + + setPixel: function(x, y, color){ + var pxW, pxH; + pxW = this.options.pixelWidth; + pxH = this.options.pixelHeight; + + if (this.canvas) { + this.canvas.fillStyle = color.toString(); + this.canvas.fillRect (x * pxW, y * pxH, pxW, pxH); + } else { + if (x === y) { + checkNumber += color.brightness(); + } + // print(x * pxW, y * pxH, pxW, pxH); + } + }, + + renderScene: function(scene, canvas){ + checkNumber = 0; + /* Get canvas */ + if (canvas) { + this.canvas = canvas.getContext("2d"); + } else { + this.canvas = null; + } + + var canvasHeight = this.options.canvasHeight; + var canvasWidth = this.options.canvasWidth; + + for(var y=0; y < canvasHeight; y++){ + for(var x=0; x < canvasWidth; x++){ + var yp = y * 1.0 / canvasHeight * 2 - 1; + var xp = x * 1.0 / canvasWidth * 2 - 1; + + var ray = scene.camera.getRay(xp, yp); + + var color = this.getPixelColor(ray, scene); + + this.setPixel(x, y, color); + } + } + if (checkNumber !== 2321) { + throw new Error("Scene rendered incorrectly"); + } + }, + + getPixelColor: function(ray, scene){ + var info = this.testIntersection(ray, scene, null); + if(info.isHit){ + var color = this.rayTrace(info, ray, scene, 0); + return color; + } + return scene.background.color; + }, + + testIntersection: function(ray, scene, exclude){ + var hits = 0; + var best = new Flog.RayTracer.IntersectionInfo(); + best.distance = 2000; + + for(var i=0; i= 0 && info.distance < best.distance){ + best = info; + hits++; + } + } + } + best.hitCount = hits; + return best; + }, + + getReflectionRay: function(P,N,V){ + var c1 = -N.dot(V); + var R1 = Flog.RayTracer.Vector.prototype.add( + Flog.RayTracer.Vector.prototype.multiplyScalar(N, 2*c1), + V + ); + return new Flog.RayTracer.Ray(P, R1); + }, + + rayTrace: function(info, ray, scene, depth){ + // Calc ambient + var color = Flog.RayTracer.Color.prototype.multiplyScalar(info.color, scene.background.ambience); + var oldColor = color; + var shininess = Math.pow(10, info.shape.material.gloss + 1); + + for(var i=0; i 0.0){ + color = Flog.RayTracer.Color.prototype.add( + color, + Flog.RayTracer.Color.prototype.multiply( + info.color, + Flog.RayTracer.Color.prototype.multiplyScalar( + light.color, + L + ) + ) + ); + } + } + + // The greater the depth the more accurate the colours, but + // this is exponentially (!) expensive + if(depth <= this.options.rayDepth){ + // calculate reflection ray + if(this.options.renderReflections && info.shape.material.reflection > 0) + { + var reflectionRay = this.getReflectionRay(info.position, info.normal, ray.direction); + var refl = this.testIntersection(reflectionRay, scene, info.shape); + + if (refl.isHit && refl.distance > 0){ + refl.color = this.rayTrace(refl, reflectionRay, scene, depth + 1); + } else { + refl.color = scene.background.color; + } + + color = Flog.RayTracer.Color.prototype.blend( + color, + refl.color, + info.shape.material.reflection + ); + } + + // Refraction + /* TODO */ + } + + /* Render shadows and highlights */ + + var shadowInfo = new Flog.RayTracer.IntersectionInfo(); + + if(this.options.renderShadows){ + var shadowRay = new Flog.RayTracer.Ray(info.position, v); + + shadowInfo = this.testIntersection(shadowRay, scene, info.shape); + if(shadowInfo.isHit && shadowInfo.shape != info.shape /*&& shadowInfo.shape.type != 'PLANE'*/){ + var vA = Flog.RayTracer.Color.prototype.multiplyScalar(color, 0.5); + var dB = (0.5 * Math.pow(shadowInfo.shape.material.transparency, 0.5)); + color = Flog.RayTracer.Color.prototype.addScalar(vA,dB); + } + } + + // Phong specular highlights + if(this.options.renderHighlights && !shadowInfo.isHit && info.shape.material.gloss > 0){ + var Lv = Flog.RayTracer.Vector.prototype.subtract( + info.shape.position, + light.position + ).normalize(); + + var E = Flog.RayTracer.Vector.prototype.subtract( + scene.camera.position, + info.shape.position + ).normalize(); + + var H = Flog.RayTracer.Vector.prototype.subtract( + E, + Lv + ).normalize(); + + var glossWeight = Math.pow(Math.max(info.normal.dot(H), 0), shininess); + color = Flog.RayTracer.Color.prototype.add( + Flog.RayTracer.Color.prototype.multiplyScalar(light.color, glossWeight), + color + ); + } + } + color.limit(); + return color; + } +}; + + +function renderScene(){ + var scene = new Flog.RayTracer.Scene(); + + scene.camera = new Flog.RayTracer.Camera( + new Flog.RayTracer.Vector(0, 0, -15), + new Flog.RayTracer.Vector(-0.2, 0, 5), + new Flog.RayTracer.Vector(0, 1, 0) + ); + + scene.background = new Flog.RayTracer.Background( + new Flog.RayTracer.Color(0.5, 0.5, 0.5), + 0.4 + ); + + var sphere = new Flog.RayTracer.Shape.Sphere( + new Flog.RayTracer.Vector(-1.5, 1.5, 2), + 1.5, + new Flog.RayTracer.Material.Solid( + new Flog.RayTracer.Color(0,0.5,0.5), + 0.3, + 0.0, + 0.0, + 2.0 + ) + ); + + var sphere1 = new Flog.RayTracer.Shape.Sphere( + new Flog.RayTracer.Vector(1, 0.25, 1), + 0.5, + new Flog.RayTracer.Material.Solid( + new Flog.RayTracer.Color(0.9,0.9,0.9), + 0.1, + 0.0, + 0.0, + 1.5 + ) + ); + + var plane = new Flog.RayTracer.Shape.Plane( + new Flog.RayTracer.Vector(0.1, 0.9, -0.5).normalize(), + 1.2, + new Flog.RayTracer.Material.Chessboard( + new Flog.RayTracer.Color(1,1,1), + new Flog.RayTracer.Color(0,0,0), + 0.2, + 0.0, + 1.0, + 0.7 + ) + ); + + scene.shapes.push(plane); + scene.shapes.push(sphere); + scene.shapes.push(sphere1); + + var light = new Flog.RayTracer.Light( + new Flog.RayTracer.Vector(5, 10, -1), + new Flog.RayTracer.Color(0.8, 0.8, 0.8) + ); + + var light1 = new Flog.RayTracer.Light( + new Flog.RayTracer.Vector(-3, 5, -15), + new Flog.RayTracer.Color(0.8, 0.8, 0.8), + 100 + ); + + scene.lights.push(light); + scene.lights.push(light1); + + var imageWidth = 100; // $F('imageWidth'); + var imageHeight = 100; // $F('imageHeight'); + var pixelSize = "5,5".split(','); // $F('pixelSize').split(','); + var renderDiffuse = true; // $F('renderDiffuse'); + var renderShadows = true; // $F('renderShadows'); + var renderHighlights = true; // $F('renderHighlights'); + var renderReflections = true; // $F('renderReflections'); + var rayDepth = 2;//$F('rayDepth'); + + var raytracer = new Flog.RayTracer.Engine( + { + canvasWidth: imageWidth, + canvasHeight: imageHeight, + pixelWidth: pixelSize[0], + pixelHeight: pixelSize[1], + "renderDiffuse": renderDiffuse, + "renderHighlights": renderHighlights, + "renderShadows": renderShadows, + "renderReflections": renderReflections, + "rayDepth": rayDepth + } + ); + + raytracer.renderScene(scene, null, 0); +} diff --git a/js/src/octane/richards.js b/js/src/octane/richards.js new file mode 100644 index 0000000000..2cf027eae5 --- /dev/null +++ b/js/src/octane/richards.js @@ -0,0 +1,539 @@ +// Copyright 2006-2008 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +// This is a JavaScript implementation of the Richards +// benchmark from: +// +// http://www.cl.cam.ac.uk/~mr10/Bench.html +// +// The benchmark was originally implemented in BCPL by +// Martin Richards. + + +var Richards = new BenchmarkSuite('Richards', [35302], [ + new Benchmark("Richards", true, false, 8200, runRichards) +]); + + +/** + * The Richards benchmark simulates the task dispatcher of an + * operating system. + **/ +function runRichards() { + var scheduler = new Scheduler(); + scheduler.addIdleTask(ID_IDLE, 0, null, COUNT); + + var queue = new Packet(null, ID_WORKER, KIND_WORK); + queue = new Packet(queue, ID_WORKER, KIND_WORK); + scheduler.addWorkerTask(ID_WORKER, 1000, queue); + + queue = new Packet(null, ID_DEVICE_A, KIND_DEVICE); + queue = new Packet(queue, ID_DEVICE_A, KIND_DEVICE); + queue = new Packet(queue, ID_DEVICE_A, KIND_DEVICE); + scheduler.addHandlerTask(ID_HANDLER_A, 2000, queue); + + queue = new Packet(null, ID_DEVICE_B, KIND_DEVICE); + queue = new Packet(queue, ID_DEVICE_B, KIND_DEVICE); + queue = new Packet(queue, ID_DEVICE_B, KIND_DEVICE); + scheduler.addHandlerTask(ID_HANDLER_B, 3000, queue); + + scheduler.addDeviceTask(ID_DEVICE_A, 4000, null); + + scheduler.addDeviceTask(ID_DEVICE_B, 5000, null); + + scheduler.schedule(); + + if (scheduler.queueCount != EXPECTED_QUEUE_COUNT || + scheduler.holdCount != EXPECTED_HOLD_COUNT) { + var msg = + "Error during execution: queueCount = " + scheduler.queueCount + + ", holdCount = " + scheduler.holdCount + "."; + throw new Error(msg); + } +} + +var COUNT = 1000; + +/** + * These two constants specify how many times a packet is queued and + * how many times a task is put on hold in a correct run of richards. + * They don't have any meaning a such but are characteristic of a + * correct run so if the actual queue or hold count is different from + * the expected there must be a bug in the implementation. + **/ +var EXPECTED_QUEUE_COUNT = 2322; +var EXPECTED_HOLD_COUNT = 928; + + +/** + * A scheduler can be used to schedule a set of tasks based on their relative + * priorities. Scheduling is done by maintaining a list of task control blocks + * which holds tasks and the data queue they are processing. + * @constructor + */ +function Scheduler() { + this.queueCount = 0; + this.holdCount = 0; + this.blocks = new Array(NUMBER_OF_IDS); + this.list = null; + this.currentTcb = null; + this.currentId = null; +} + +var ID_IDLE = 0; +var ID_WORKER = 1; +var ID_HANDLER_A = 2; +var ID_HANDLER_B = 3; +var ID_DEVICE_A = 4; +var ID_DEVICE_B = 5; +var NUMBER_OF_IDS = 6; + +var KIND_DEVICE = 0; +var KIND_WORK = 1; + +/** + * Add an idle task to this scheduler. + * @param {int} id the identity of the task + * @param {int} priority the task's priority + * @param {Packet} queue the queue of work to be processed by the task + * @param {int} count the number of times to schedule the task + */ +Scheduler.prototype.addIdleTask = function (id, priority, queue, count) { + this.addRunningTask(id, priority, queue, new IdleTask(this, 1, count)); +}; + +/** + * Add a work task to this scheduler. + * @param {int} id the identity of the task + * @param {int} priority the task's priority + * @param {Packet} queue the queue of work to be processed by the task + */ +Scheduler.prototype.addWorkerTask = function (id, priority, queue) { + this.addTask(id, priority, queue, new WorkerTask(this, ID_HANDLER_A, 0)); +}; + +/** + * Add a handler task to this scheduler. + * @param {int} id the identity of the task + * @param {int} priority the task's priority + * @param {Packet} queue the queue of work to be processed by the task + */ +Scheduler.prototype.addHandlerTask = function (id, priority, queue) { + this.addTask(id, priority, queue, new HandlerTask(this)); +}; + +/** + * Add a handler task to this scheduler. + * @param {int} id the identity of the task + * @param {int} priority the task's priority + * @param {Packet} queue the queue of work to be processed by the task + */ +Scheduler.prototype.addDeviceTask = function (id, priority, queue) { + this.addTask(id, priority, queue, new DeviceTask(this)) +}; + +/** + * Add the specified task and mark it as running. + * @param {int} id the identity of the task + * @param {int} priority the task's priority + * @param {Packet} queue the queue of work to be processed by the task + * @param {Task} task the task to add + */ +Scheduler.prototype.addRunningTask = function (id, priority, queue, task) { + this.addTask(id, priority, queue, task); + this.currentTcb.setRunning(); +}; + +/** + * Add the specified task to this scheduler. + * @param {int} id the identity of the task + * @param {int} priority the task's priority + * @param {Packet} queue the queue of work to be processed by the task + * @param {Task} task the task to add + */ +Scheduler.prototype.addTask = function (id, priority, queue, task) { + this.currentTcb = new TaskControlBlock(this.list, id, priority, queue, task); + this.list = this.currentTcb; + this.blocks[id] = this.currentTcb; +}; + +/** + * Execute the tasks managed by this scheduler. + */ +Scheduler.prototype.schedule = function () { + this.currentTcb = this.list; + while (this.currentTcb != null) { + if (this.currentTcb.isHeldOrSuspended()) { + this.currentTcb = this.currentTcb.link; + } else { + this.currentId = this.currentTcb.id; + this.currentTcb = this.currentTcb.run(); + } + } +}; + +/** + * Release a task that is currently blocked and return the next block to run. + * @param {int} id the id of the task to suspend + */ +Scheduler.prototype.release = function (id) { + var tcb = this.blocks[id]; + if (tcb == null) return tcb; + tcb.markAsNotHeld(); + if (tcb.priority > this.currentTcb.priority) { + return tcb; + } else { + return this.currentTcb; + } +}; + +/** + * Block the currently executing task and return the next task control block + * to run. The blocked task will not be made runnable until it is explicitly + * released, even if new work is added to it. + */ +Scheduler.prototype.holdCurrent = function () { + this.holdCount++; + this.currentTcb.markAsHeld(); + return this.currentTcb.link; +}; + +/** + * Suspend the currently executing task and return the next task control block + * to run. If new work is added to the suspended task it will be made runnable. + */ +Scheduler.prototype.suspendCurrent = function () { + this.currentTcb.markAsSuspended(); + return this.currentTcb; +}; + +/** + * Add the specified packet to the end of the worklist used by the task + * associated with the packet and make the task runnable if it is currently + * suspended. + * @param {Packet} packet the packet to add + */ +Scheduler.prototype.queue = function (packet) { + var t = this.blocks[packet.id]; + if (t == null) return t; + this.queueCount++; + packet.link = null; + packet.id = this.currentId; + return t.checkPriorityAdd(this.currentTcb, packet); +}; + +/** + * A task control block manages a task and the queue of work packages associated + * with it. + * @param {TaskControlBlock} link the preceding block in the linked block list + * @param {int} id the id of this block + * @param {int} priority the priority of this block + * @param {Packet} queue the queue of packages to be processed by the task + * @param {Task} task the task + * @constructor + */ +function TaskControlBlock(link, id, priority, queue, task) { + this.link = link; + this.id = id; + this.priority = priority; + this.queue = queue; + this.task = task; + if (queue == null) { + this.state = STATE_SUSPENDED; + } else { + this.state = STATE_SUSPENDED_RUNNABLE; + } +} + +/** + * The task is running and is currently scheduled. + */ +var STATE_RUNNING = 0; + +/** + * The task has packets left to process. + */ +var STATE_RUNNABLE = 1; + +/** + * The task is not currently running. The task is not blocked as such and may +* be started by the scheduler. + */ +var STATE_SUSPENDED = 2; + +/** + * The task is blocked and cannot be run until it is explicitly released. + */ +var STATE_HELD = 4; + +var STATE_SUSPENDED_RUNNABLE = STATE_SUSPENDED | STATE_RUNNABLE; +var STATE_NOT_HELD = ~STATE_HELD; + +TaskControlBlock.prototype.setRunning = function () { + this.state = STATE_RUNNING; +}; + +TaskControlBlock.prototype.markAsNotHeld = function () { + this.state = this.state & STATE_NOT_HELD; +}; + +TaskControlBlock.prototype.markAsHeld = function () { + this.state = this.state | STATE_HELD; +}; + +TaskControlBlock.prototype.isHeldOrSuspended = function () { + return (this.state & STATE_HELD) != 0 || (this.state == STATE_SUSPENDED); +}; + +TaskControlBlock.prototype.markAsSuspended = function () { + this.state = this.state | STATE_SUSPENDED; +}; + +TaskControlBlock.prototype.markAsRunnable = function () { + this.state = this.state | STATE_RUNNABLE; +}; + +/** + * Runs this task, if it is ready to be run, and returns the next task to run. + */ +TaskControlBlock.prototype.run = function () { + var packet; + if (this.state == STATE_SUSPENDED_RUNNABLE) { + packet = this.queue; + this.queue = packet.link; + if (this.queue == null) { + this.state = STATE_RUNNING; + } else { + this.state = STATE_RUNNABLE; + } + } else { + packet = null; + } + return this.task.run(packet); +}; + +/** + * Adds a packet to the worklist of this block's task, marks this as runnable if + * necessary, and returns the next runnable object to run (the one + * with the highest priority). + */ +TaskControlBlock.prototype.checkPriorityAdd = function (task, packet) { + if (this.queue == null) { + this.queue = packet; + this.markAsRunnable(); + if (this.priority > task.priority) return this; + } else { + this.queue = packet.addTo(this.queue); + } + return task; +}; + +TaskControlBlock.prototype.toString = function () { + return "tcb { " + this.task + "@" + this.state + " }"; +}; + +/** + * An idle task doesn't do any work itself but cycles control between the two + * device tasks. + * @param {Scheduler} scheduler the scheduler that manages this task + * @param {int} v1 a seed value that controls how the device tasks are scheduled + * @param {int} count the number of times this task should be scheduled + * @constructor + */ +function IdleTask(scheduler, v1, count) { + this.scheduler = scheduler; + this.v1 = v1; + this.count = count; +} + +IdleTask.prototype.run = function (packet) { + this.count--; + if (this.count == 0) return this.scheduler.holdCurrent(); + if ((this.v1 & 1) == 0) { + this.v1 = this.v1 >> 1; + return this.scheduler.release(ID_DEVICE_A); + } else { + this.v1 = (this.v1 >> 1) ^ 0xD008; + return this.scheduler.release(ID_DEVICE_B); + } +}; + +IdleTask.prototype.toString = function () { + return "IdleTask" +}; + +/** + * A task that suspends itself after each time it has been run to simulate + * waiting for data from an external device. + * @param {Scheduler} scheduler the scheduler that manages this task + * @constructor + */ +function DeviceTask(scheduler) { + this.scheduler = scheduler; + this.v1 = null; +} + +DeviceTask.prototype.run = function (packet) { + if (packet == null) { + if (this.v1 == null) return this.scheduler.suspendCurrent(); + var v = this.v1; + this.v1 = null; + return this.scheduler.queue(v); + } else { + this.v1 = packet; + return this.scheduler.holdCurrent(); + } +}; + +DeviceTask.prototype.toString = function () { + return "DeviceTask"; +}; + +/** + * A task that manipulates work packets. + * @param {Scheduler} scheduler the scheduler that manages this task + * @param {int} v1 a seed used to specify how work packets are manipulated + * @param {int} v2 another seed used to specify how work packets are manipulated + * @constructor + */ +function WorkerTask(scheduler, v1, v2) { + this.scheduler = scheduler; + this.v1 = v1; + this.v2 = v2; +} + +WorkerTask.prototype.run = function (packet) { + if (packet == null) { + return this.scheduler.suspendCurrent(); + } else { + if (this.v1 == ID_HANDLER_A) { + this.v1 = ID_HANDLER_B; + } else { + this.v1 = ID_HANDLER_A; + } + packet.id = this.v1; + packet.a1 = 0; + for (var i = 0; i < DATA_SIZE; i++) { + this.v2++; + if (this.v2 > 26) this.v2 = 1; + packet.a2[i] = this.v2; + } + return this.scheduler.queue(packet); + } +}; + +WorkerTask.prototype.toString = function () { + return "WorkerTask"; +}; + +/** + * A task that manipulates work packets and then suspends itself. + * @param {Scheduler} scheduler the scheduler that manages this task + * @constructor + */ +function HandlerTask(scheduler) { + this.scheduler = scheduler; + this.v1 = null; + this.v2 = null; +} + +HandlerTask.prototype.run = function (packet) { + if (packet != null) { + if (packet.kind == KIND_WORK) { + this.v1 = packet.addTo(this.v1); + } else { + this.v2 = packet.addTo(this.v2); + } + } + if (this.v1 != null) { + var count = this.v1.a1; + var v; + if (count < DATA_SIZE) { + if (this.v2 != null) { + v = this.v2; + this.v2 = this.v2.link; + v.a1 = this.v1.a2[count]; + this.v1.a1 = count + 1; + return this.scheduler.queue(v); + } + } else { + v = this.v1; + this.v1 = this.v1.link; + return this.scheduler.queue(v); + } + } + return this.scheduler.suspendCurrent(); +}; + +HandlerTask.prototype.toString = function () { + return "HandlerTask"; +}; + +/* --- * + * P a c k e t + * --- */ + +var DATA_SIZE = 4; + +/** + * A simple package of data that is manipulated by the tasks. The exact layout + * of the payload data carried by a packet is not importaint, and neither is the + * nature of the work performed on packets by the tasks. + * + * Besides carrying data, packets form linked lists and are hence used both as + * data and worklists. + * @param {Packet} link the tail of the linked list of packets + * @param {int} id an ID for this packet + * @param {int} kind the type of this packet + * @constructor + */ +function Packet(link, id, kind) { + this.link = link; + this.id = id; + this.kind = kind; + this.a1 = 0; + this.a2 = new Array(DATA_SIZE); +} + +/** + * Add this packet to the end of a worklist, and return the worklist. + * @param {Packet} queue the worklist to add this packet to + */ +Packet.prototype.addTo = function (queue) { + this.link = null; + if (queue == null) return this; + var peek, next = queue; + while ((peek = next.link) != null) + next = peek; + next.link = this; + return queue; +}; + +Packet.prototype.toString = function () { + return "Packet"; +}; diff --git a/js/src/octane/run-box2d.js b/js/src/octane/run-box2d.js new file mode 100644 index 0000000000..8989800464 --- /dev/null +++ b/js/src/octane/run-box2d.js @@ -0,0 +1,59 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +var base_dir = ''; +load(base_dir + 'base.js'); +load(base_dir + 'box2d.js'); + +var success = true; + +function PrintResult(name, result) { + print(name + ': ' + result); +} + + +function PrintError(name, error) { + PrintResult(name, error); + success = false; +} + + +function PrintScore(score) { + if (success) { + print('----'); + print('Score (version ' + BenchmarkSuite.version + '): ' + score); + } +} + + +BenchmarkSuite.config.doWarmup = undefined; +BenchmarkSuite.config.doDeterministic = undefined; + +BenchmarkSuite.RunSuites({ NotifyResult: PrintResult, + NotifyError: PrintError, + NotifyScore: PrintScore }); diff --git a/js/src/octane/run-code-load.js b/js/src/octane/run-code-load.js new file mode 100644 index 0000000000..6b64361fb2 --- /dev/null +++ b/js/src/octane/run-code-load.js @@ -0,0 +1,59 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +var base_dir = ''; +load(base_dir + 'base.js'); +load(base_dir + 'code-load.js'); + +var success = true; + +function PrintResult(name, result) { + print(name + ': ' + result); +} + + +function PrintError(name, error) { + PrintResult(name, error); + success = false; +} + + +function PrintScore(score) { + if (success) { + print('----'); + print('Score (version ' + BenchmarkSuite.version + '): ' + score); + } +} + + +BenchmarkSuite.config.doWarmup = undefined; +BenchmarkSuite.config.doDeterministic = undefined; + +BenchmarkSuite.RunSuites({ NotifyResult: PrintResult, + NotifyError: PrintError, + NotifyScore: PrintScore }); diff --git a/js/src/octane/run-crypto.js b/js/src/octane/run-crypto.js new file mode 100644 index 0000000000..cd2bb5d5a8 --- /dev/null +++ b/js/src/octane/run-crypto.js @@ -0,0 +1,59 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +var base_dir = ''; +load(base_dir + 'base.js'); +load(base_dir + 'crypto.js'); + +var success = true; + +function PrintResult(name, result) { + print(name + ': ' + result); +} + + +function PrintError(name, error) { + PrintResult(name, error); + success = false; +} + + +function PrintScore(score) { + if (success) { + print('----'); + print('Score (version ' + BenchmarkSuite.version + '): ' + score); + } +} + + +BenchmarkSuite.config.doWarmup = undefined; +BenchmarkSuite.config.doDeterministic = undefined; + +BenchmarkSuite.RunSuites({ NotifyResult: PrintResult, + NotifyError: PrintError, + NotifyScore: PrintScore }); diff --git a/js/src/octane/run-deltablue.js b/js/src/octane/run-deltablue.js new file mode 100644 index 0000000000..83566339d9 --- /dev/null +++ b/js/src/octane/run-deltablue.js @@ -0,0 +1,59 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +var base_dir = ''; +load(base_dir + 'base.js'); +load(base_dir + 'deltablue.js'); + +var success = true; + +function PrintResult(name, result) { + print(name + ': ' + result); +} + + +function PrintError(name, error) { + PrintResult(name, error); + success = false; +} + + +function PrintScore(score) { + if (success) { + print('----'); + print('Score (version ' + BenchmarkSuite.version + '): ' + score); + } +} + + +BenchmarkSuite.config.doWarmup = undefined; +BenchmarkSuite.config.doDeterministic = undefined; + +BenchmarkSuite.RunSuites({ NotifyResult: PrintResult, + NotifyError: PrintError, + NotifyScore: PrintScore }); diff --git a/js/src/octane/run-earley-boyer.js b/js/src/octane/run-earley-boyer.js new file mode 100644 index 0000000000..c9912a5337 --- /dev/null +++ b/js/src/octane/run-earley-boyer.js @@ -0,0 +1,59 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +var base_dir = ''; +load(base_dir + 'base.js'); +load(base_dir + 'earley-boyer.js'); + +var success = true; + +function PrintResult(name, result) { + print(name + ': ' + result); +} + + +function PrintError(name, error) { + PrintResult(name, error); + success = false; +} + + +function PrintScore(score) { + if (success) { + print('----'); + print('Score (version ' + BenchmarkSuite.version + '): ' + score); + } +} + + +BenchmarkSuite.config.doWarmup = undefined; +BenchmarkSuite.config.doDeterministic = undefined; + +BenchmarkSuite.RunSuites({ NotifyResult: PrintResult, + NotifyError: PrintError, + NotifyScore: PrintScore }); diff --git a/js/src/octane/run-gbemu.js b/js/src/octane/run-gbemu.js new file mode 100644 index 0000000000..f9f646c16d --- /dev/null +++ b/js/src/octane/run-gbemu.js @@ -0,0 +1,60 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +var base_dir = ''; +load(base_dir + 'base.js'); +load(base_dir + 'gbemu-part1.js'); +load(base_dir + 'gbemu-part2.js'); + +var success = true; + +function PrintResult(name, result) { + print(name + ': ' + result); +} + + +function PrintError(name, error) { + PrintResult(name, error); + success = false; +} + + +function PrintScore(score) { + if (success) { + print('----'); + print('Score (version ' + BenchmarkSuite.version + '): ' + score); + } +} + + +BenchmarkSuite.config.doWarmup = undefined; +BenchmarkSuite.config.doDeterministic = undefined; + +BenchmarkSuite.RunSuites({ NotifyResult: PrintResult, + NotifyError: PrintError, + NotifyScore: PrintScore }); diff --git a/js/src/octane/run-mandreel.js b/js/src/octane/run-mandreel.js new file mode 100644 index 0000000000..ebb20911b7 --- /dev/null +++ b/js/src/octane/run-mandreel.js @@ -0,0 +1,59 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +var base_dir = ''; +load(base_dir + 'base.js'); +load(base_dir + 'mandreel.js'); + +var success = true; + +function PrintResult(name, result) { + print(name + ': ' + result); +} + + +function PrintError(name, error) { + PrintResult(name, error); + success = false; +} + + +function PrintScore(score) { + if (success) { + print('----'); + print('Score (version ' + BenchmarkSuite.version + '): ' + score); + } +} + + +BenchmarkSuite.config.doWarmup = undefined; +BenchmarkSuite.config.doDeterministic = undefined; + +BenchmarkSuite.RunSuites({ NotifyResult: PrintResult, + NotifyError: PrintError, + NotifyScore: PrintScore }); diff --git a/js/src/octane/run-navier-stokes.js b/js/src/octane/run-navier-stokes.js new file mode 100644 index 0000000000..f6f0c36f09 --- /dev/null +++ b/js/src/octane/run-navier-stokes.js @@ -0,0 +1,59 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +var base_dir = ''; +load(base_dir + 'base.js'); +load(base_dir + 'navier-stokes.js'); + +var success = true; + +function PrintResult(name, result) { + print(name + ': ' + result); +} + + +function PrintError(name, error) { + PrintResult(name, error); + success = false; +} + + +function PrintScore(score) { + if (success) { + print('----'); + print('Score (version ' + BenchmarkSuite.version + '): ' + score); + } +} + + +BenchmarkSuite.config.doWarmup = undefined; +BenchmarkSuite.config.doDeterministic = undefined; + +BenchmarkSuite.RunSuites({ NotifyResult: PrintResult, + NotifyError: PrintError, + NotifyScore: PrintScore }); diff --git a/js/src/octane/run-pdfjs.js b/js/src/octane/run-pdfjs.js new file mode 100644 index 0000000000..830bd01feb --- /dev/null +++ b/js/src/octane/run-pdfjs.js @@ -0,0 +1,59 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +var base_dir = ''; +load(base_dir + 'base.js'); +load(base_dir + 'pdfjs.js'); + +var success = true; + +function PrintResult(name, result) { + print(name + ': ' + result); +} + + +function PrintError(name, error) { + PrintResult(name, error); + success = false; +} + + +function PrintScore(score) { + if (success) { + print('----'); + print('Score (version ' + BenchmarkSuite.version + '): ' + score); + } +} + + +BenchmarkSuite.config.doWarmup = undefined; +BenchmarkSuite.config.doDeterministic = undefined; + +BenchmarkSuite.RunSuites({ NotifyResult: PrintResult, + NotifyError: PrintError, + NotifyScore: PrintScore }); diff --git a/js/src/octane/run-raytrace.js b/js/src/octane/run-raytrace.js new file mode 100644 index 0000000000..aa6afc14b6 --- /dev/null +++ b/js/src/octane/run-raytrace.js @@ -0,0 +1,59 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +var base_dir = ''; +load(base_dir + 'base.js'); +load(base_dir + 'raytrace.js'); + +var success = true; + +function PrintResult(name, result) { + print(name + ': ' + result); +} + + +function PrintError(name, error) { + PrintResult(name, error); + success = false; +} + + +function PrintScore(score) { + if (success) { + print('----'); + print('Score (version ' + BenchmarkSuite.version + '): ' + score); + } +} + + +BenchmarkSuite.config.doWarmup = undefined; +BenchmarkSuite.config.doDeterministic = undefined; + +BenchmarkSuite.RunSuites({ NotifyResult: PrintResult, + NotifyError: PrintError, + NotifyScore: PrintScore }); diff --git a/js/src/octane/run-regexp.js b/js/src/octane/run-regexp.js new file mode 100644 index 0000000000..e413a159bf --- /dev/null +++ b/js/src/octane/run-regexp.js @@ -0,0 +1,59 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +var base_dir = ''; +load(base_dir + 'base.js'); +load(base_dir + 'regexp.js'); + +var success = true; + +function PrintResult(name, result) { + print(name + ': ' + result); +} + + +function PrintError(name, error) { + PrintResult(name, error); + success = false; +} + + +function PrintScore(score) { + if (success) { + print('----'); + print('Score (version ' + BenchmarkSuite.version + '): ' + score); + } +} + + +BenchmarkSuite.config.doWarmup = undefined; +BenchmarkSuite.config.doDeterministic = undefined; + +BenchmarkSuite.RunSuites({ NotifyResult: PrintResult, + NotifyError: PrintError, + NotifyScore: PrintScore }); diff --git a/js/src/octane/run-richards.js b/js/src/octane/run-richards.js new file mode 100644 index 0000000000..dbfe50d2ff --- /dev/null +++ b/js/src/octane/run-richards.js @@ -0,0 +1,59 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +var base_dir = ''; +load(base_dir + 'base.js'); +load(base_dir + 'richards.js'); + +var success = true; + +function PrintResult(name, result) { + print(name + ': ' + result); +} + + +function PrintError(name, error) { + PrintResult(name, error); + success = false; +} + + +function PrintScore(score) { + if (success) { + print('----'); + print('Score (version ' + BenchmarkSuite.version + '): ' + score); + } +} + + +BenchmarkSuite.config.doWarmup = undefined; +BenchmarkSuite.config.doDeterministic = undefined; + +BenchmarkSuite.RunSuites({ NotifyResult: PrintResult, + NotifyError: PrintError, + NotifyScore: PrintScore }); diff --git a/js/src/octane/run-splay.js b/js/src/octane/run-splay.js new file mode 100644 index 0000000000..663e5b0355 --- /dev/null +++ b/js/src/octane/run-splay.js @@ -0,0 +1,59 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +var base_dir = ''; +load(base_dir + 'base.js'); +load(base_dir + 'splay.js'); + +var success = true; + +function PrintResult(name, result) { + print(name + ': ' + result); +} + + +function PrintError(name, error) { + PrintResult(name, error); + success = false; +} + + +function PrintScore(score) { + if (success) { + print('----'); + print('Score (version ' + BenchmarkSuite.version + '): ' + score); + } +} + + +BenchmarkSuite.config.doWarmup = undefined; +BenchmarkSuite.config.doDeterministic = undefined; + +BenchmarkSuite.RunSuites({ NotifyResult: PrintResult, + NotifyError: PrintError, + NotifyScore: PrintScore }); diff --git a/js/src/octane/run-typescript.js b/js/src/octane/run-typescript.js new file mode 100644 index 0000000000..8d8cf5a269 --- /dev/null +++ b/js/src/octane/run-typescript.js @@ -0,0 +1,61 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +var base_dir = ''; +load(base_dir + 'base.js'); +load(base_dir + 'typescript.js'); +load(base_dir + 'typescript-input.js'); +load(base_dir + 'typescript-compiler.js'); + +var success = true; + +function PrintResult(name, result) { + print(name + ': ' + result); +} + + +function PrintError(name, error) { + PrintResult(name, error); + success = false; +} + + +function PrintScore(score) { + if (success) { + print('----'); + print('Score (version ' + BenchmarkSuite.version + '): ' + score); + } +} + + +BenchmarkSuite.config.doWarmup = undefined; +BenchmarkSuite.config.doDeterministic = undefined; + +BenchmarkSuite.RunSuites({ NotifyResult: PrintResult, + NotifyError: PrintError, + NotifyScore: PrintScore }); diff --git a/js/src/octane/run-zlib.js b/js/src/octane/run-zlib.js new file mode 100644 index 0000000000..423f40d202 --- /dev/null +++ b/js/src/octane/run-zlib.js @@ -0,0 +1,60 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +var base_dir = ''; +load(base_dir + 'base.js'); +load(base_dir + 'zlib.js'); +load(base_dir + 'zlib-data.js'); + +var success = true; + +function PrintResult(name, result) { + print(name + ': ' + result); +} + + +function PrintError(name, error) { + PrintResult(name, error); + success = false; +} + + +function PrintScore(score) { + if (success) { + print('----'); + print('Score (version ' + BenchmarkSuite.version + '): ' + score); + } +} + + +BenchmarkSuite.config.doWarmup = undefined; +BenchmarkSuite.config.doDeterministic = undefined; + +BenchmarkSuite.RunSuites({ NotifyResult: PrintResult, + NotifyError: PrintError, + NotifyScore: PrintScore }); diff --git a/js/src/octane/run.js b/js/src/octane/run.js new file mode 100644 index 0000000000..d06a6beffe --- /dev/null +++ b/js/src/octane/run.js @@ -0,0 +1,77 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +var base_dir = ''; +load(base_dir + 'base.js'); +load(base_dir + 'richards.js'); +load(base_dir + 'deltablue.js'); +load(base_dir + 'crypto.js'); +load(base_dir + 'raytrace.js'); +load(base_dir + 'earley-boyer.js'); +load(base_dir + 'regexp.js'); +load(base_dir + 'splay.js'); +load(base_dir + 'navier-stokes.js'); +load(base_dir + 'pdfjs.js'); +load(base_dir + 'mandreel.js'); +load(base_dir + 'gbemu-part1.js'); +load(base_dir + 'gbemu-part2.js'); +load(base_dir + 'code-load.js'); +load(base_dir + 'box2d.js'); +load(base_dir + 'zlib.js'); +load(base_dir + 'zlib-data.js'); +load(base_dir + 'typescript.js'); +load(base_dir + 'typescript-input.js'); +load(base_dir + 'typescript-compiler.js'); + +var success = true; + +function PrintResult(name, result) { + print(name + ': ' + result); +} + + +function PrintError(name, error) { + PrintResult(name, error); + success = false; +} + + +function PrintScore(score) { + if (success) { + print('----'); + print('Score (version ' + BenchmarkSuite.version + '): ' + score); + } +} + + +BenchmarkSuite.config.doWarmup = undefined; +BenchmarkSuite.config.doDeterministic = undefined; + +BenchmarkSuite.RunSuites({ NotifyResult: PrintResult, + NotifyError: PrintError, + NotifyScore: PrintScore }); diff --git a/js/src/octane/splay.js b/js/src/octane/splay.js new file mode 100644 index 0000000000..9902c79d21 --- /dev/null +++ b/js/src/octane/splay.js @@ -0,0 +1,423 @@ +// Copyright 2009 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This benchmark is based on a JavaScript log processing module used +// by the V8 profiler to generate execution time profiles for runs of +// JavaScript applications, and it effectively measures how fast the +// JavaScript engine is at allocating nodes and reclaiming the memory +// used for old nodes. Because of the way splay trees work, the engine +// also has to deal with a lot of changes to the large tree object +// graph. + +var Splay = new BenchmarkSuite('Splay', [81491, 2739514], [ + new Benchmark("Splay", true, false, 1400, + SplayRun, SplaySetup, SplayTearDown, SplayRMS) +]); + + +// Configuration. +var kSplayTreeSize = 8000; +var kSplayTreeModifications = 80; +var kSplayTreePayloadDepth = 5; + +var splayTree = null; +var splaySampleTimeStart = 0.0; + +function GeneratePayloadTree(depth, tag) { + if (depth == 0) { + return { + array : [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ], + string : 'String for key ' + tag + ' in leaf node' + }; + } else { + return { + left: GeneratePayloadTree(depth - 1, tag), + right: GeneratePayloadTree(depth - 1, tag) + }; + } +} + + +function GenerateKey() { + // The benchmark framework guarantees that Math.random is + // deterministic; see base.js. + return Math.random(); +} + +var splaySamples = 0; +var splaySumOfSquaredPauses = 0; + +function SplayRMS() { + return Math.round(Math.sqrt(splaySumOfSquaredPauses / splaySamples) * 10000); +} + +function SplayUpdateStats(time) { + var pause = time - splaySampleTimeStart; + splaySampleTimeStart = time; + splaySamples++; + splaySumOfSquaredPauses += pause * pause; +} + +function InsertNewNode() { + // Insert new node with a unique key. + var key; + do { + key = GenerateKey(); + } while (splayTree.find(key) != null); + var payload = GeneratePayloadTree(kSplayTreePayloadDepth, String(key)); + splayTree.insert(key, payload); + return key; +} + + +function SplaySetup() { + // Check if the platform has the performance.now high resolution timer. + // If not, throw exception and quit. + if (!performance.now) { + throw "PerformanceNowUnsupported"; + } + + splayTree = new SplayTree(); + splaySampleTimeStart = performance.now() + for (var i = 0; i < kSplayTreeSize; i++) { + InsertNewNode(); + if ((i+1) % 20 == 19) { + SplayUpdateStats(performance.now()); + } + } +} + + +function SplayTearDown() { + // Allow the garbage collector to reclaim the memory + // used by the splay tree no matter how we exit the + // tear down function. + var keys = splayTree.exportKeys(); + splayTree = null; + + splaySamples = 0; + splaySumOfSquaredPauses = 0; + + // Verify that the splay tree has the right size. + var length = keys.length; + if (length != kSplayTreeSize) { + throw new Error("Splay tree has wrong size"); + } + + // Verify that the splay tree has sorted, unique keys. + for (var i = 0; i < length - 1; i++) { + if (keys[i] >= keys[i + 1]) { + throw new Error("Splay tree not sorted"); + } + } +} + + +function SplayRun() { + // Replace a few nodes in the splay tree. + for (var i = 0; i < kSplayTreeModifications; i++) { + var key = InsertNewNode(); + var greatest = splayTree.findGreatestLessThan(key); + if (greatest == null) splayTree.remove(key); + else splayTree.remove(greatest.key); + } + SplayUpdateStats(performance.now()); +} + + +/** + * Constructs a Splay tree. A splay tree is a self-balancing binary + * search tree with the additional property that recently accessed + * elements are quick to access again. It performs basic operations + * such as insertion, look-up and removal in O(log(n)) amortized time. + * + * @constructor + */ +function SplayTree() { +}; + + +/** + * Pointer to the root node of the tree. + * + * @type {SplayTree.Node} + * @private + */ +SplayTree.prototype.root_ = null; + + +/** + * @return {boolean} Whether the tree is empty. + */ +SplayTree.prototype.isEmpty = function() { + return !this.root_; +}; + + +/** + * Inserts a node into the tree with the specified key and value if + * the tree does not already contain a node with the specified key. If + * the value is inserted, it becomes the root of the tree. + * + * @param {number} key Key to insert into the tree. + * @param {*} value Value to insert into the tree. + */ +SplayTree.prototype.insert = function(key, value) { + if (this.isEmpty()) { + this.root_ = new SplayTree.Node(key, value); + return; + } + // Splay on the key to move the last node on the search path for + // the key to the root of the tree. + this.splay_(key); + if (this.root_.key == key) { + return; + } + var node = new SplayTree.Node(key, value); + if (key > this.root_.key) { + node.left = this.root_; + node.right = this.root_.right; + this.root_.right = null; + } else { + node.right = this.root_; + node.left = this.root_.left; + this.root_.left = null; + } + this.root_ = node; +}; + + +/** + * Removes a node with the specified key from the tree if the tree + * contains a node with this key. The removed node is returned. If the + * key is not found, an exception is thrown. + * + * @param {number} key Key to find and remove from the tree. + * @return {SplayTree.Node} The removed node. + */ +SplayTree.prototype.remove = function(key) { + if (this.isEmpty()) { + throw Error('Key not found: ' + key); + } + this.splay_(key); + if (this.root_.key != key) { + throw Error('Key not found: ' + key); + } + var removed = this.root_; + if (!this.root_.left) { + this.root_ = this.root_.right; + } else { + var right = this.root_.right; + this.root_ = this.root_.left; + // Splay to make sure that the new root has an empty right child. + this.splay_(key); + // Insert the original right child as the right child of the new + // root. + this.root_.right = right; + } + return removed; +}; + + +/** + * Returns the node having the specified key or null if the tree doesn't contain + * a node with the specified key. + * + * @param {number} key Key to find in the tree. + * @return {SplayTree.Node} Node having the specified key. + */ +SplayTree.prototype.find = function(key) { + if (this.isEmpty()) { + return null; + } + this.splay_(key); + return this.root_.key == key ? this.root_ : null; +}; + + +/** + * @return {SplayTree.Node} Node having the maximum key value. + */ +SplayTree.prototype.findMax = function(opt_startNode) { + if (this.isEmpty()) { + return null; + } + var current = opt_startNode || this.root_; + while (current.right) { + current = current.right; + } + return current; +}; + + +/** + * @return {SplayTree.Node} Node having the maximum key value that + * is less than the specified key value. + */ +SplayTree.prototype.findGreatestLessThan = function(key) { + if (this.isEmpty()) { + return null; + } + // Splay on the key to move the node with the given key or the last + // node on the search path to the top of the tree. + this.splay_(key); + // Now the result is either the root node or the greatest node in + // the left subtree. + if (this.root_.key < key) { + return this.root_; + } else if (this.root_.left) { + return this.findMax(this.root_.left); + } else { + return null; + } +}; + + +/** + * @return {Array<*>} An array containing all the keys of tree's nodes. + */ +SplayTree.prototype.exportKeys = function() { + var result = []; + if (!this.isEmpty()) { + this.root_.traverse_(function(node) { result.push(node.key); }); + } + return result; +}; + + +/** + * Perform the splay operation for the given key. Moves the node with + * the given key to the top of the tree. If no node has the given + * key, the last node on the search path is moved to the top of the + * tree. This is the simplified top-down splaying algorithm from: + * "Self-adjusting Binary Search Trees" by Sleator and Tarjan + * + * @param {number} key Key to splay the tree on. + * @private + */ +SplayTree.prototype.splay_ = function(key) { + if (this.isEmpty()) { + return; + } + // Create a dummy node. The use of the dummy node is a bit + // counter-intuitive: The right child of the dummy node will hold + // the L tree of the algorithm. The left child of the dummy node + // will hold the R tree of the algorithm. Using a dummy node, left + // and right will always be nodes and we avoid special cases. + var dummy, left, right; + dummy = left = right = new SplayTree.Node(null, null); + var current = this.root_; + while (true) { + if (key < current.key) { + if (!current.left) { + break; + } + if (key < current.left.key) { + // Rotate right. + var tmp = current.left; + current.left = tmp.right; + tmp.right = current; + current = tmp; + if (!current.left) { + break; + } + } + // Link right. + right.left = current; + right = current; + current = current.left; + } else if (key > current.key) { + if (!current.right) { + break; + } + if (key > current.right.key) { + // Rotate left. + var tmp = current.right; + current.right = tmp.left; + tmp.left = current; + current = tmp; + if (!current.right) { + break; + } + } + // Link left. + left.right = current; + left = current; + current = current.right; + } else { + break; + } + } + // Assemble. + left.right = current.left; + right.left = current.right; + current.left = dummy.right; + current.right = dummy.left; + this.root_ = current; +}; + + +/** + * Constructs a Splay tree node. + * + * @param {number} key Key. + * @param {*} value Value. + */ +SplayTree.Node = function(key, value) { + this.key = key; + this.value = value; +}; + + +/** + * @type {SplayTree.Node} + */ +SplayTree.Node.prototype.left = null; + + +/** + * @type {SplayTree.Node} + */ +SplayTree.Node.prototype.right = null; + + +/** + * Performs an ordered traversal of the subtree starting at + * this SplayTree.Node. + * + * @param {function(SplayTree.Node)} f Visitor function. + * @private + */ +SplayTree.Node.prototype.traverse_ = function(f) { + var current = this; + while (current) { + var left = current.left; + if (left) left.traverse_(f); + f(current); + current = current.right; + } +}; diff --git a/js/src/octane/typescript-compiler.js b/js/src/octane/typescript-compiler.js new file mode 100644 index 0000000000..03ba71c97d --- /dev/null +++ b/js/src/octane/typescript-compiler.js @@ -0,0 +1,25745 @@ +var TypeScript; +(function (TypeScript) { + function hasFlag(val, flag) { + return (val & flag) != 0; + } + TypeScript.hasFlag = hasFlag; + (function (ErrorRecoverySet) { + ErrorRecoverySet._map = []; + ErrorRecoverySet.None = 0; + ErrorRecoverySet.Comma = 1; + ErrorRecoverySet.SColon = 1 << 1; + ErrorRecoverySet.Asg = 1 << 2; + ErrorRecoverySet.BinOp = 1 << 3; + ErrorRecoverySet.RBrack = 1 << 4; + ErrorRecoverySet.RCurly = 1 << 5; + ErrorRecoverySet.RParen = 1 << 6; + ErrorRecoverySet.Dot = 1 << 7; + ErrorRecoverySet.Colon = 1 << 8; + ErrorRecoverySet.PrimType = 1 << 9; + ErrorRecoverySet.AddOp = 1 << 10; + ErrorRecoverySet.LCurly = 1 << 11; + ErrorRecoverySet.PreOp = 1 << 12; + ErrorRecoverySet.RegExp = 1 << 13; + ErrorRecoverySet.LParen = 1 << 14; + ErrorRecoverySet.LBrack = 1 << 15; + ErrorRecoverySet.Scope = 1 << 16; + ErrorRecoverySet.In = 1 << 17; + ErrorRecoverySet.SCase = 1 << 18; + ErrorRecoverySet.Else = 1 << 19; + ErrorRecoverySet.Catch = 1 << 20; + ErrorRecoverySet.Var = 1 << 21; + ErrorRecoverySet.Stmt = 1 << 22; + ErrorRecoverySet.While = 1 << 23; + ErrorRecoverySet.ID = 1 << 24; + ErrorRecoverySet.Prefix = 1 << 25; + ErrorRecoverySet.Literal = 1 << 26; + ErrorRecoverySet.RLit = 1 << 27; + ErrorRecoverySet.Func = 1 << 28; + ErrorRecoverySet.EOF = 1 << 29; + ErrorRecoverySet.TypeScriptS = 1 << 30; + ErrorRecoverySet.ExprStart = ErrorRecoverySet.SColon | ErrorRecoverySet.AddOp | ErrorRecoverySet.LCurly | ErrorRecoverySet.PreOp | ErrorRecoverySet.RegExp | ErrorRecoverySet.LParen | ErrorRecoverySet.LBrack | ErrorRecoverySet.ID | ErrorRecoverySet.Prefix | ErrorRecoverySet.RLit | ErrorRecoverySet.Func | ErrorRecoverySet.Literal; + ErrorRecoverySet.StmtStart = ErrorRecoverySet.ExprStart | ErrorRecoverySet.SColon | ErrorRecoverySet.Var | ErrorRecoverySet.Stmt | ErrorRecoverySet.While | ErrorRecoverySet.TypeScriptS; + ErrorRecoverySet.Postfix = ErrorRecoverySet.Dot | ErrorRecoverySet.LParen | ErrorRecoverySet.LBrack; + })(TypeScript.ErrorRecoverySet || (TypeScript.ErrorRecoverySet = {})); + var ErrorRecoverySet = TypeScript.ErrorRecoverySet; + (function (AllowedElements) { + AllowedElements._map = []; + AllowedElements.None = 0; + AllowedElements.ModuleDeclarations = 1 << 2; + AllowedElements.ClassDeclarations = 1 << 3; + AllowedElements.InterfaceDeclarations = 1 << 4; + AllowedElements.AmbientDeclarations = 1 << 10; + AllowedElements.Properties = 1 << 11; + AllowedElements.Global = AllowedElements.ModuleDeclarations | AllowedElements.ClassDeclarations | AllowedElements.InterfaceDeclarations | AllowedElements.AmbientDeclarations; + AllowedElements.QuickParse = AllowedElements.Global | AllowedElements.Properties; + })(TypeScript.AllowedElements || (TypeScript.AllowedElements = {})); + var AllowedElements = TypeScript.AllowedElements; + (function (Modifiers) { + Modifiers._map = []; + Modifiers.None = 0; + Modifiers.Private = 1; + Modifiers.Public = 1 << 1; + Modifiers.Readonly = 1 << 2; + Modifiers.Ambient = 1 << 3; + Modifiers.Exported = 1 << 4; + Modifiers.Getter = 1 << 5; + Modifiers.Setter = 1 << 6; + Modifiers.Static = 1 << 7; + })(TypeScript.Modifiers || (TypeScript.Modifiers = {})); + var Modifiers = TypeScript.Modifiers; + (function (ASTFlags) { + ASTFlags._map = []; + ASTFlags.None = 0; + ASTFlags.ExplicitSemicolon = 1; + ASTFlags.AutomaticSemicolon = 1 << 1; + ASTFlags.Writeable = 1 << 2; + ASTFlags.Error = 1 << 3; + ASTFlags.DotLHSPartial = 1 << 4; + ASTFlags.DotLHS = 1 << 5; + ASTFlags.IsStatement = 1 << 6; + ASTFlags.StrictMode = 1 << 7; + ASTFlags.PossibleOptionalParameter = 1 << 8; + ASTFlags.ClassBaseConstructorCall = 1 << 9; + ASTFlags.OptionalName = 1 << 10; + ASTFlags.SkipNextRParen = 1 << 11; + })(TypeScript.ASTFlags || (TypeScript.ASTFlags = {})); + var ASTFlags = TypeScript.ASTFlags; + (function (DeclFlags) { + DeclFlags._map = []; + DeclFlags.None = 0; + DeclFlags.Exported = 1; + DeclFlags.Private = 1 << 1; + DeclFlags.Public = 1 << 2; + DeclFlags.Ambient = 1 << 3; + DeclFlags.Static = 1 << 4; + DeclFlags.LocalStatic = 1 << 5; + DeclFlags.GetAccessor = 1 << 6; + DeclFlags.SetAccessor = 1 << 7; + })(TypeScript.DeclFlags || (TypeScript.DeclFlags = {})); + var DeclFlags = TypeScript.DeclFlags; + (function (ModuleFlags) { + ModuleFlags._map = []; + ModuleFlags.None = 0; + ModuleFlags.Exported = 1; + ModuleFlags.Private = 1 << 1; + ModuleFlags.Public = 1 << 2; + ModuleFlags.Ambient = 1 << 3; + ModuleFlags.Static = 1 << 4; + ModuleFlags.LocalStatic = 1 << 5; + ModuleFlags.GetAccessor = 1 << 6; + ModuleFlags.SetAccessor = 1 << 7; + ModuleFlags.IsEnum = 1 << 8; + ModuleFlags.ShouldEmitModuleDecl = 1 << 9; + ModuleFlags.IsWholeFile = 1 << 10; + ModuleFlags.IsDynamic = 1 << 11; + ModuleFlags.MustCaptureThis = 1 << 12; + })(TypeScript.ModuleFlags || (TypeScript.ModuleFlags = {})); + var ModuleFlags = TypeScript.ModuleFlags; + (function (SymbolFlags) { + SymbolFlags._map = []; + SymbolFlags.None = 0; + SymbolFlags.Exported = 1; + SymbolFlags.Private = 1 << 1; + SymbolFlags.Public = 1 << 2; + SymbolFlags.Ambient = 1 << 3; + SymbolFlags.Static = 1 << 4; + SymbolFlags.LocalStatic = 1 << 5; + SymbolFlags.GetAccessor = 1 << 6; + SymbolFlags.SetAccessor = 1 << 7; + SymbolFlags.Property = 1 << 8; + SymbolFlags.Readonly = 1 << 9; + SymbolFlags.ModuleMember = 1 << 10; + SymbolFlags.InterfaceMember = 1 << 11; + SymbolFlags.ClassMember = 1 << 12; + SymbolFlags.BuiltIn = 1 << 13; + SymbolFlags.TypeSetDuringScopeAssignment = 1 << 14; + SymbolFlags.Constant = 1 << 15; + SymbolFlags.Optional = 1 << 16; + SymbolFlags.RecursivelyReferenced = 1 << 17; + SymbolFlags.Bound = 1 << 18; + SymbolFlags.CompilerGenerated = 1 << 19; + })(TypeScript.SymbolFlags || (TypeScript.SymbolFlags = {})); + var SymbolFlags = TypeScript.SymbolFlags; + (function (VarFlags) { + VarFlags._map = []; + VarFlags.None = 0; + VarFlags.Exported = 1; + VarFlags.Private = 1 << 1; + VarFlags.Public = 1 << 2; + VarFlags.Ambient = 1 << 3; + VarFlags.Static = 1 << 4; + VarFlags.LocalStatic = 1 << 5; + VarFlags.GetAccessor = 1 << 6; + VarFlags.SetAccessor = 1 << 7; + VarFlags.AutoInit = 1 << 8; + VarFlags.Property = 1 << 9; + VarFlags.Readonly = 1 << 10; + VarFlags.Class = 1 << 11; + VarFlags.ClassProperty = 1 << 12; + VarFlags.ClassBodyProperty = 1 << 13; + VarFlags.ClassConstructorProperty = 1 << 14; + VarFlags.ClassSuperMustBeFirstCallInConstructor = 1 << 15; + VarFlags.Constant = 1 << 16; + VarFlags.MustCaptureThis = 1 << 17; + })(TypeScript.VarFlags || (TypeScript.VarFlags = {})); + var VarFlags = TypeScript.VarFlags; + (function (FncFlags) { + FncFlags._map = []; + FncFlags.None = 0; + FncFlags.Exported = 1; + FncFlags.Private = 1 << 1; + FncFlags.Public = 1 << 2; + FncFlags.Ambient = 1 << 3; + FncFlags.Static = 1 << 4; + FncFlags.LocalStatic = 1 << 5; + FncFlags.GetAccessor = 1 << 6; + FncFlags.SetAccessor = 1 << 7; + FncFlags.Definition = 1 << 8; + FncFlags.Signature = 1 << 9; + FncFlags.Method = 1 << 10; + FncFlags.HasReturnExpression = 1 << 11; + FncFlags.CallMember = 1 << 12; + FncFlags.ConstructMember = 1 << 13; + FncFlags.HasSelfReference = 1 << 14; + FncFlags.IsFatArrowFunction = 1 << 15; + FncFlags.IndexerMember = 1 << 16; + FncFlags.IsFunctionExpression = 1 << 17; + FncFlags.ClassMethod = 1 << 18; + FncFlags.ClassPropertyMethodExported = 1 << 19; + FncFlags.HasSuperReferenceInFatArrowFunction = 1 << 20; + FncFlags.IsPropertyBound = 1 << 21; + })(TypeScript.FncFlags || (TypeScript.FncFlags = {})); + var FncFlags = TypeScript.FncFlags; + (function (SignatureFlags) { + SignatureFlags._map = []; + SignatureFlags.None = 0; + SignatureFlags.IsIndexer = 1; + SignatureFlags.IsStringIndexer = 1 << 1; + SignatureFlags.IsNumberIndexer = 1 << 2; + })(TypeScript.SignatureFlags || (TypeScript.SignatureFlags = {})); + var SignatureFlags = TypeScript.SignatureFlags; + function ToDeclFlags(fncOrVarOrSymbolOrModuleFlags) { + return fncOrVarOrSymbolOrModuleFlags; + } + TypeScript.ToDeclFlags = ToDeclFlags; + (function (TypeFlags) { + TypeFlags._map = []; + TypeFlags.None = 0; + TypeFlags.HasImplementation = 1; + TypeFlags.HasSelfReference = 1 << 1; + TypeFlags.MergeResult = 1 << 2; + TypeFlags.IsEnum = 1 << 3; + TypeFlags.BuildingName = 1 << 4; + TypeFlags.HasBaseType = 1 << 5; + TypeFlags.HasBaseTypeOfObject = 1 << 6; + TypeFlags.IsClass = 1 << 7; + })(TypeScript.TypeFlags || (TypeScript.TypeFlags = {})); + var TypeFlags = TypeScript.TypeFlags; + (function (TypeRelationshipFlags) { + TypeRelationshipFlags._map = []; + TypeRelationshipFlags.SuccessfulComparison = 0; + TypeRelationshipFlags.SourceIsNullTargetIsVoidOrUndefined = 1; + TypeRelationshipFlags.RequiredPropertyIsMissing = 1 << 1; + TypeRelationshipFlags.IncompatibleSignatures = 1 << 2; + TypeRelationshipFlags.SourceSignatureHasTooManyParameters = 3; + TypeRelationshipFlags.IncompatibleReturnTypes = 1 << 4; + TypeRelationshipFlags.IncompatiblePropertyTypes = 1 << 5; + TypeRelationshipFlags.IncompatibleParameterTypes = 1 << 6; + })(TypeScript.TypeRelationshipFlags || (TypeScript.TypeRelationshipFlags = {})); + var TypeRelationshipFlags = TypeScript.TypeRelationshipFlags; + (function (CodeGenTarget) { + CodeGenTarget._map = []; + CodeGenTarget.ES3 = 0; + CodeGenTarget.ES5 = 1; + })(TypeScript.CodeGenTarget || (TypeScript.CodeGenTarget = {})); + var CodeGenTarget = TypeScript.CodeGenTarget; + (function (ModuleGenTarget) { + ModuleGenTarget._map = []; + ModuleGenTarget.Synchronous = 0; + ModuleGenTarget.Asynchronous = 1; + ModuleGenTarget.Local = 1 << 1; + })(TypeScript.ModuleGenTarget || (TypeScript.ModuleGenTarget = {})); + var ModuleGenTarget = TypeScript.ModuleGenTarget; + TypeScript.codeGenTarget = CodeGenTarget.ES3; + TypeScript.moduleGenTarget = ModuleGenTarget.Synchronous; + TypeScript.optimizeModuleCodeGen = true; + function flagsToString(e, flags) { + var builder = ""; + for(var i = 1; i < (1 << 31); i = i << 1) { + if((flags & i) != 0) { + for(var k in e) { + if(e[k] == i) { + if(builder.length > 0) { + builder += "|"; + } + builder += k; + break; + } + } + } + } + return builder; + } + TypeScript.flagsToString = flagsToString; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + (function (NodeType) { + NodeType._map = []; + NodeType._map[0] = "None"; + NodeType.None = 0; + NodeType._map[1] = "Empty"; + NodeType.Empty = 1; + NodeType._map[2] = "EmptyExpr"; + NodeType.EmptyExpr = 2; + NodeType._map[3] = "True"; + NodeType.True = 3; + NodeType._map[4] = "False"; + NodeType.False = 4; + NodeType._map[5] = "This"; + NodeType.This = 5; + NodeType._map[6] = "Super"; + NodeType.Super = 6; + NodeType._map[7] = "QString"; + NodeType.QString = 7; + NodeType._map[8] = "Regex"; + NodeType.Regex = 8; + NodeType._map[9] = "Null"; + NodeType.Null = 9; + NodeType._map[10] = "ArrayLit"; + NodeType.ArrayLit = 10; + NodeType._map[11] = "ObjectLit"; + NodeType.ObjectLit = 11; + NodeType._map[12] = "Void"; + NodeType.Void = 12; + NodeType._map[13] = "Comma"; + NodeType.Comma = 13; + NodeType._map[14] = "Pos"; + NodeType.Pos = 14; + NodeType._map[15] = "Neg"; + NodeType.Neg = 15; + NodeType._map[16] = "Delete"; + NodeType.Delete = 16; + NodeType._map[17] = "Await"; + NodeType.Await = 17; + NodeType._map[18] = "In"; + NodeType.In = 18; + NodeType._map[19] = "Dot"; + NodeType.Dot = 19; + NodeType._map[20] = "From"; + NodeType.From = 20; + NodeType._map[21] = "Is"; + NodeType.Is = 21; + NodeType._map[22] = "InstOf"; + NodeType.InstOf = 22; + NodeType._map[23] = "Typeof"; + NodeType.Typeof = 23; + NodeType._map[24] = "NumberLit"; + NodeType.NumberLit = 24; + NodeType._map[25] = "Name"; + NodeType.Name = 25; + NodeType._map[26] = "TypeRef"; + NodeType.TypeRef = 26; + NodeType._map[27] = "Index"; + NodeType.Index = 27; + NodeType._map[28] = "Call"; + NodeType.Call = 28; + NodeType._map[29] = "New"; + NodeType.New = 29; + NodeType._map[30] = "Asg"; + NodeType.Asg = 30; + NodeType._map[31] = "AsgAdd"; + NodeType.AsgAdd = 31; + NodeType._map[32] = "AsgSub"; + NodeType.AsgSub = 32; + NodeType._map[33] = "AsgDiv"; + NodeType.AsgDiv = 33; + NodeType._map[34] = "AsgMul"; + NodeType.AsgMul = 34; + NodeType._map[35] = "AsgMod"; + NodeType.AsgMod = 35; + NodeType._map[36] = "AsgAnd"; + NodeType.AsgAnd = 36; + NodeType._map[37] = "AsgXor"; + NodeType.AsgXor = 37; + NodeType._map[38] = "AsgOr"; + NodeType.AsgOr = 38; + NodeType._map[39] = "AsgLsh"; + NodeType.AsgLsh = 39; + NodeType._map[40] = "AsgRsh"; + NodeType.AsgRsh = 40; + NodeType._map[41] = "AsgRs2"; + NodeType.AsgRs2 = 41; + NodeType._map[42] = "ConditionalExpression"; + NodeType.ConditionalExpression = 42; + NodeType._map[43] = "LogOr"; + NodeType.LogOr = 43; + NodeType._map[44] = "LogAnd"; + NodeType.LogAnd = 44; + NodeType._map[45] = "Or"; + NodeType.Or = 45; + NodeType._map[46] = "Xor"; + NodeType.Xor = 46; + NodeType._map[47] = "And"; + NodeType.And = 47; + NodeType._map[48] = "Eq"; + NodeType.Eq = 48; + NodeType._map[49] = "Ne"; + NodeType.Ne = 49; + NodeType._map[50] = "Eqv"; + NodeType.Eqv = 50; + NodeType._map[51] = "NEqv"; + NodeType.NEqv = 51; + NodeType._map[52] = "Lt"; + NodeType.Lt = 52; + NodeType._map[53] = "Le"; + NodeType.Le = 53; + NodeType._map[54] = "Gt"; + NodeType.Gt = 54; + NodeType._map[55] = "Ge"; + NodeType.Ge = 55; + NodeType._map[56] = "Add"; + NodeType.Add = 56; + NodeType._map[57] = "Sub"; + NodeType.Sub = 57; + NodeType._map[58] = "Mul"; + NodeType.Mul = 58; + NodeType._map[59] = "Div"; + NodeType.Div = 59; + NodeType._map[60] = "Mod"; + NodeType.Mod = 60; + NodeType._map[61] = "Lsh"; + NodeType.Lsh = 61; + NodeType._map[62] = "Rsh"; + NodeType.Rsh = 62; + NodeType._map[63] = "Rs2"; + NodeType.Rs2 = 63; + NodeType._map[64] = "Not"; + NodeType.Not = 64; + NodeType._map[65] = "LogNot"; + NodeType.LogNot = 65; + NodeType._map[66] = "IncPre"; + NodeType.IncPre = 66; + NodeType._map[67] = "DecPre"; + NodeType.DecPre = 67; + NodeType._map[68] = "IncPost"; + NodeType.IncPost = 68; + NodeType._map[69] = "DecPost"; + NodeType.DecPost = 69; + NodeType._map[70] = "TypeAssertion"; + NodeType.TypeAssertion = 70; + NodeType._map[71] = "FuncDecl"; + NodeType.FuncDecl = 71; + NodeType._map[72] = "Member"; + NodeType.Member = 72; + NodeType._map[73] = "VarDecl"; + NodeType.VarDecl = 73; + NodeType._map[74] = "ArgDecl"; + NodeType.ArgDecl = 74; + NodeType._map[75] = "Return"; + NodeType.Return = 75; + NodeType._map[76] = "Break"; + NodeType.Break = 76; + NodeType._map[77] = "Continue"; + NodeType.Continue = 77; + NodeType._map[78] = "Throw"; + NodeType.Throw = 78; + NodeType._map[79] = "For"; + NodeType.For = 79; + NodeType._map[80] = "ForIn"; + NodeType.ForIn = 80; + NodeType._map[81] = "If"; + NodeType.If = 81; + NodeType._map[82] = "While"; + NodeType.While = 82; + NodeType._map[83] = "DoWhile"; + NodeType.DoWhile = 83; + NodeType._map[84] = "Block"; + NodeType.Block = 84; + NodeType._map[85] = "Case"; + NodeType.Case = 85; + NodeType._map[86] = "Switch"; + NodeType.Switch = 86; + NodeType._map[87] = "Try"; + NodeType.Try = 87; + NodeType._map[88] = "TryCatch"; + NodeType.TryCatch = 88; + NodeType._map[89] = "TryFinally"; + NodeType.TryFinally = 89; + NodeType._map[90] = "Finally"; + NodeType.Finally = 90; + NodeType._map[91] = "Catch"; + NodeType.Catch = 91; + NodeType._map[92] = "List"; + NodeType.List = 92; + NodeType._map[93] = "Script"; + NodeType.Script = 93; + NodeType._map[94] = "ClassDeclaration"; + NodeType.ClassDeclaration = 94; + NodeType._map[95] = "InterfaceDeclaration"; + NodeType.InterfaceDeclaration = 95; + NodeType._map[96] = "ModuleDeclaration"; + NodeType.ModuleDeclaration = 96; + NodeType._map[97] = "ImportDeclaration"; + NodeType.ImportDeclaration = 97; + NodeType._map[98] = "With"; + NodeType.With = 98; + NodeType._map[99] = "Label"; + NodeType.Label = 99; + NodeType._map[100] = "LabeledStatement"; + NodeType.LabeledStatement = 100; + NodeType._map[101] = "EBStart"; + NodeType.EBStart = 101; + NodeType._map[102] = "GotoEB"; + NodeType.GotoEB = 102; + NodeType._map[103] = "EndCode"; + NodeType.EndCode = 103; + NodeType._map[104] = "Error"; + NodeType.Error = 104; + NodeType._map[105] = "Comment"; + NodeType.Comment = 105; + NodeType._map[106] = "Debugger"; + NodeType.Debugger = 106; + NodeType.GeneralNode = NodeType.FuncDecl; + NodeType.LastAsg = NodeType.AsgRs2; + })(TypeScript.NodeType || (TypeScript.NodeType = {})); + var NodeType = TypeScript.NodeType; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + var BlockIntrinsics = (function () { + function BlockIntrinsics() { + this.prototype = undefined; + this.toString = undefined; + this.toLocaleString = undefined; + this.valueOf = undefined; + this.hasOwnProperty = undefined; + this.propertyIsEnumerable = undefined; + this.isPrototypeOf = undefined; + this["constructor"] = undefined; + } + return BlockIntrinsics; + })(); + TypeScript.BlockIntrinsics = BlockIntrinsics; + var StringHashTable = (function () { + function StringHashTable() { + this.itemCount = 0; + this.table = (new BlockIntrinsics()); + } + StringHashTable.prototype.getAllKeys = function () { + var result = []; + for(var k in this.table) { + if(this.table[k] != undefined) { + result[result.length] = k; + } + } + return result; + }; + StringHashTable.prototype.add = function (key, data) { + if(this.table[key] != undefined) { + return false; + } + this.table[key] = data; + this.itemCount++; + return true; + }; + StringHashTable.prototype.addOrUpdate = function (key, data) { + if(this.table[key] != undefined) { + this.table[key] = data; + return false; + } + this.table[key] = data; + this.itemCount++; + return true; + }; + StringHashTable.prototype.map = function (fn, context) { + for(var k in this.table) { + var data = this.table[k]; + if(data != undefined) { + fn(k, this.table[k], context); + } + } + }; + StringHashTable.prototype.every = function (fn, context) { + for(var k in this.table) { + var data = this.table[k]; + if(data != undefined) { + if(!fn(k, this.table[k], context)) { + return false; + } + } + } + return true; + }; + StringHashTable.prototype.some = function (fn, context) { + for(var k in this.table) { + var data = this.table[k]; + if(data != undefined) { + if(fn(k, this.table[k], context)) { + return true; + } + } + } + return false; + }; + StringHashTable.prototype.count = function () { + return this.itemCount; + }; + StringHashTable.prototype.lookup = function (key) { + var data = this.table[key]; + if(data != undefined) { + return data; + } else { + return (null); + } + }; + return StringHashTable; + })(); + TypeScript.StringHashTable = StringHashTable; + var DualStringHashTable = (function () { + function DualStringHashTable(primaryTable, secondaryTable) { + this.primaryTable = primaryTable; + this.secondaryTable = secondaryTable; + this.insertPrimary = true; + } + DualStringHashTable.prototype.getAllKeys = function () { + return this.primaryTable.getAllKeys().concat(this.secondaryTable.getAllKeys()); + }; + DualStringHashTable.prototype.add = function (key, data) { + if(this.insertPrimary) { + return this.primaryTable.add(key, data); + } else { + return this.secondaryTable.add(key, data); + } + }; + DualStringHashTable.prototype.addOrUpdate = function (key, data) { + if(this.insertPrimary) { + return this.primaryTable.addOrUpdate(key, data); + } else { + return this.secondaryTable.addOrUpdate(key, data); + } + }; + DualStringHashTable.prototype.map = function (fn, context) { + this.primaryTable.map(fn, context); + this.secondaryTable.map(fn, context); + }; + DualStringHashTable.prototype.every = function (fn, context) { + return this.primaryTable.every(fn, context) && this.secondaryTable.every(fn, context); + }; + DualStringHashTable.prototype.some = function (fn, context) { + return this.primaryTable.some(fn, context) || this.secondaryTable.some(fn, context); + }; + DualStringHashTable.prototype.count = function () { + return this.primaryTable.count() + this.secondaryTable.count(); + }; + DualStringHashTable.prototype.lookup = function (key) { + var data = this.primaryTable.lookup(key); + if(data != undefined) { + return data; + } else { + return this.secondaryTable.lookup(key); + } + }; + return DualStringHashTable; + })(); + TypeScript.DualStringHashTable = DualStringHashTable; + function numberHashFn(key) { + var c2 = 668265261; + key = (key ^ 61) ^ (key >>> 16); + key = key + (key << 3); + key = key ^ (key >>> 4); + key = key * c2; + key = key ^ (key >>> 15); + return key; + } + TypeScript.numberHashFn = numberHashFn; + function combineHashes(key1, key2) { + return key2 ^ ((key1 >> 5) + key1); + } + TypeScript.combineHashes = combineHashes; + var HashEntry = (function () { + function HashEntry(key, data) { + this.key = key; + this.data = data; + } + return HashEntry; + })(); + TypeScript.HashEntry = HashEntry; + var HashTable = (function () { + function HashTable(size, hashFn, equalsFn) { + this.size = size; + this.hashFn = hashFn; + this.equalsFn = equalsFn; + this.itemCount = 0; + this.table = new Array(); + for(var i = 0; i < this.size; i++) { + this.table[i] = null; + } + } + HashTable.prototype.add = function (key, data) { + var current; + var entry = new HashEntry(key, data); + var val = this.hashFn(key); + val = val % this.size; + for(current = this.table[val]; current != null; current = current.next) { + if(this.equalsFn(key, current.key)) { + return false; + } + } + entry.next = this.table[val]; + this.table[val] = entry; + this.itemCount++; + return true; + }; + HashTable.prototype.remove = function (key) { + var current; + var val = this.hashFn(key); + val = val % this.size; + var result = null; + var prevEntry = null; + for(current = this.table[val]; current != null; current = current.next) { + if(this.equalsFn(key, current.key)) { + result = current.data; + this.itemCount--; + if(prevEntry) { + prevEntry.next = current.next; + } else { + this.table[val] = current.next; + } + break; + } + prevEntry = current; + } + return result; + }; + HashTable.prototype.count = function () { + return this.itemCount; + }; + HashTable.prototype.lookup = function (key) { + var current; + var val = this.hashFn(key); + val = val % this.size; + for(current = this.table[val]; current != null; current = current.next) { + if(this.equalsFn(key, current.key)) { + return (current.data); + } + } + return (null); + }; + return HashTable; + })(); + TypeScript.HashTable = HashTable; + var SimpleHashTable = (function () { + function SimpleHashTable() { + this.keys = []; + this.values = []; + } + SimpleHashTable.prototype.lookup = function (key, findValue) { + var searchArray = this.keys; + if(findValue) { + searchArray = this.values; + } + for(var i = 0; i < searchArray.length; i++) { + if(searchArray[i] == key) { + return { + key: this.keys[i], + data: this.values[i] + }; + } + } + return null; + }; + SimpleHashTable.prototype.add = function (key, data) { + var lookupData = this.lookup(key); + if(lookupData) { + return false; + } + this.keys[this.keys.length] = key; + this.values[this.values.length] = data; + return true; + }; + return SimpleHashTable; + })(); + TypeScript.SimpleHashTable = SimpleHashTable; +})(TypeScript || (TypeScript = {})); +var __extends = this.__extends || function (d, b) { + function __() { this.constructor = d; } + __.prototype = b.prototype; + d.prototype = new __(); +}; +var TypeScript; +(function (TypeScript) { + var ASTSpan = (function () { + function ASTSpan() { + this.minChar = -1; + this.limChar = -1; + } + return ASTSpan; + })(); + TypeScript.ASTSpan = ASTSpan; + var AST = (function (_super) { + __extends(AST, _super); + function AST(nodeType) { + _super.call(this); + this.nodeType = nodeType; + this.type = null; + this.flags = TypeScript.ASTFlags.Writeable; + this.passCreated = TypeScript.CompilerDiagnostics.analysisPass; + this.preComments = null; + this.postComments = null; + this.docComments = null; + this.isParenthesized = false; + } + AST.prototype.isExpression = function () { + return false; + }; + AST.prototype.isStatementOrExpression = function () { + return false; + }; + AST.prototype.isCompoundStatement = function () { + return false; + }; + AST.prototype.isLeaf = function () { + return this.isStatementOrExpression() && (!this.isCompoundStatement()); + }; + AST.prototype.isDeclaration = function () { + return false; + }; + AST.prototype.typeCheck = function (typeFlow) { + switch(this.nodeType) { + case TypeScript.NodeType.Error: + case TypeScript.NodeType.EmptyExpr: { + this.type = typeFlow.anyType; + break; + + } + case TypeScript.NodeType.This: { + return typeFlow.typeCheckThis(this); + + } + case TypeScript.NodeType.Null: { + this.type = typeFlow.nullType; + break; + + } + case TypeScript.NodeType.False: + case TypeScript.NodeType.True: { + this.type = typeFlow.booleanType; + break; + + } + case TypeScript.NodeType.Super: { + return typeFlow.typeCheckSuper(this); + + } + case TypeScript.NodeType.EndCode: + case TypeScript.NodeType.Empty: + case TypeScript.NodeType.Void: { + this.type = typeFlow.voidType; + break; + + } + default: { + throw new Error("please implement in derived class"); + + } + } + return this; + }; + AST.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + switch(this.nodeType) { + case TypeScript.NodeType.This: { + emitter.recordSourceMappingStart(this); + if(emitter.thisFnc && (TypeScript.hasFlag(emitter.thisFnc.fncFlags, TypeScript.FncFlags.IsFatArrowFunction))) { + emitter.writeToOutput("_this"); + } else { + emitter.writeToOutput("this"); + } + emitter.recordSourceMappingEnd(this); + break; + + } + case TypeScript.NodeType.Null: { + emitter.recordSourceMappingStart(this); + emitter.writeToOutput("null"); + emitter.recordSourceMappingEnd(this); + break; + + } + case TypeScript.NodeType.False: { + emitter.recordSourceMappingStart(this); + emitter.writeToOutput("false"); + emitter.recordSourceMappingEnd(this); + break; + + } + case TypeScript.NodeType.True: { + emitter.recordSourceMappingStart(this); + emitter.writeToOutput("true"); + emitter.recordSourceMappingEnd(this); + break; + + } + case TypeScript.NodeType.Super: { + emitter.recordSourceMappingStart(this); + emitter.emitSuperReference(); + emitter.recordSourceMappingEnd(this); + break; + + } + case TypeScript.NodeType.EndCode: + case TypeScript.NodeType.Error: + case TypeScript.NodeType.EmptyExpr: { + break; + + } + case TypeScript.NodeType.Empty: { + emitter.recordSourceMappingStart(this); + emitter.recordSourceMappingEnd(this); + break; + + } + case TypeScript.NodeType.Void: { + emitter.recordSourceMappingStart(this); + emitter.writeToOutput("void "); + emitter.recordSourceMappingEnd(this); + break; + + } + default: { + throw new Error("please implement in derived class"); + + } + } + emitter.emitParensAndCommentsInPlace(this, false); + }; + AST.prototype.print = function (context) { + context.startLine(); + var lineCol = { + line: -1, + col: -1 + }; + var limLineCol = { + line: -1, + col: -1 + }; + if(context.parser !== null) { + context.parser.getSourceLineCol(lineCol, this.minChar); + context.parser.getSourceLineCol(limLineCol, this.limChar); + context.write("(" + lineCol.line + "," + lineCol.col + ")--" + "(" + limLineCol.line + "," + limLineCol.col + "): "); + } + var lab = this.printLabel(); + if(TypeScript.hasFlag(this.flags, TypeScript.ASTFlags.Error)) { + lab += " (Error)"; + } + context.writeLine(lab); + }; + AST.prototype.printLabel = function () { + if(TypeScript.nodeTypeTable[this.nodeType] !== undefined) { + return TypeScript.nodeTypeTable[this.nodeType]; + } else { + return (TypeScript.NodeType)._map[this.nodeType]; + } + }; + AST.prototype.addToControlFlow = function (context) { + context.walker.options.goChildren = false; + context.addContent(this); + }; + AST.prototype.netFreeUses = function (container, freeUses) { + }; + AST.prototype.treeViewLabel = function () { + return (TypeScript.NodeType)._map[this.nodeType]; + }; + AST.getResolvedIdentifierName = function getResolvedIdentifierName(name) { + if(!name) { + return ""; + } + var resolved = ""; + var start = 0; + var i = 0; + while(i <= name.length - 6) { + if(name.charAt(i) == '\\' && name.charAt(i + 1) == 'u') { + var charCode = parseInt(name.substr(i + 2, 4), 16); + resolved += name.substr(start, i - start); + resolved += String.fromCharCode(charCode); + i += 6; + start = i; + continue; + } + i++; + } + resolved += name.substring(start); + return resolved; + } + AST.prototype.getDocComments = function () { + if(!this.isDeclaration() || !this.preComments || this.preComments.length == 0) { + return []; + } + if(!this.docComments) { + var preCommentsLength = this.preComments.length; + var docComments = []; + for(var i = preCommentsLength - 1; i >= 0; i--) { + if(this.preComments[i].isDocComment()) { + var prevDocComment = docComments.length > 0 ? docComments[docComments.length - 1] : null; + if(prevDocComment == null || (this.preComments[i].limLine == prevDocComment.minLine || this.preComments[i].limLine + 1 == prevDocComment.minLine)) { + docComments.push(this.preComments[i]); + continue; + } + } + break; + } + this.docComments = docComments.reverse(); + } + return this.docComments; + }; + return AST; + })(ASTSpan); + TypeScript.AST = AST; + var IncompleteAST = (function (_super) { + __extends(IncompleteAST, _super); + function IncompleteAST(min, lim) { + _super.call(this, TypeScript.NodeType.Error); + this.minChar = min; + this.limChar = lim; + } + return IncompleteAST; + })(AST); + TypeScript.IncompleteAST = IncompleteAST; + var ASTList = (function (_super) { + __extends(ASTList, _super); + function ASTList() { + _super.call(this, TypeScript.NodeType.List); + this.enclosingScope = null; + this.members = new Array(); + } + ASTList.prototype.addToControlFlow = function (context) { + var len = this.members.length; + for(var i = 0; i < len; i++) { + if(context.noContinuation) { + context.addUnreachable(this.members[i]); + break; + } else { + this.members[i] = context.walk(this.members[i], this); + } + } + context.walker.options.goChildren = false; + }; + ASTList.prototype.append = function (ast) { + this.members[this.members.length] = ast; + return this; + }; + ASTList.prototype.appendAll = function (ast) { + if(ast.nodeType == TypeScript.NodeType.List) { + var list = ast; + for(var i = 0, len = list.members.length; i < len; i++) { + this.append(list.members[i]); + } + } else { + this.append(ast); + } + return this; + }; + ASTList.prototype.emit = function (emitter, tokenId, startLine) { + emitter.recordSourceMappingStart(this); + emitter.emitJavascriptList(this, null, TypeScript.TokenID.Semicolon, startLine, false, false); + emitter.recordSourceMappingEnd(this); + }; + ASTList.prototype.typeCheck = function (typeFlow) { + var len = this.members.length; + typeFlow.nestingLevel++; + for(var i = 0; i < len; i++) { + if(this.members[i]) { + this.members[i] = this.members[i].typeCheck(typeFlow); + } + } + typeFlow.nestingLevel--; + return this; + }; + return ASTList; + })(AST); + TypeScript.ASTList = ASTList; + var Identifier = (function (_super) { + __extends(Identifier, _super); + function Identifier(actualText, hasEscapeSequence) { + _super.call(this, TypeScript.NodeType.Name); + this.actualText = actualText; + this.hasEscapeSequence = hasEscapeSequence; + this.sym = null; + this.cloId = -1; + this.setText(actualText, hasEscapeSequence); + } + Identifier.prototype.setText = function (actualText, hasEscapeSequence) { + this.actualText = actualText; + if(hasEscapeSequence) { + this.text = AST.getResolvedIdentifierName(actualText); + } else { + this.text = actualText; + } + }; + Identifier.prototype.isMissing = function () { + return false; + }; + Identifier.prototype.isLeaf = function () { + return true; + }; + Identifier.prototype.treeViewLabel = function () { + return "id: " + this.actualText; + }; + Identifier.prototype.printLabel = function () { + if(this.actualText) { + return "id: " + this.actualText; + } else { + return "name node"; + } + }; + Identifier.prototype.typeCheck = function (typeFlow) { + return typeFlow.typeCheckName(this); + }; + Identifier.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitJavascriptName(this, true); + }; + Identifier.fromToken = function fromToken(token) { + return new Identifier(token.getText(), (token).hasEscapeSequence); + } + return Identifier; + })(AST); + TypeScript.Identifier = Identifier; + var MissingIdentifier = (function (_super) { + __extends(MissingIdentifier, _super); + function MissingIdentifier() { + _super.call(this, "__missing"); + } + MissingIdentifier.prototype.isMissing = function () { + return true; + }; + MissingIdentifier.prototype.emit = function (emitter, tokenId, startLine) { + }; + return MissingIdentifier; + })(Identifier); + TypeScript.MissingIdentifier = MissingIdentifier; + var Label = (function (_super) { + __extends(Label, _super); + function Label(id) { + _super.call(this, TypeScript.NodeType.Label); + this.id = id; + } + Label.prototype.printLabel = function () { + return this.id.actualText + ":"; + }; + Label.prototype.typeCheck = function (typeFlow) { + this.type = typeFlow.voidType; + return this; + }; + Label.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + emitter.recordSourceMappingStart(this.id); + emitter.writeToOutput(this.id.actualText); + emitter.recordSourceMappingEnd(this.id); + emitter.writeLineToOutput(":"); + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + return Label; + })(AST); + TypeScript.Label = Label; + var Expression = (function (_super) { + __extends(Expression, _super); + function Expression(nodeType) { + _super.call(this, nodeType); + } + Expression.prototype.isExpression = function () { + return true; + }; + Expression.prototype.isStatementOrExpression = function () { + return true; + }; + return Expression; + })(AST); + TypeScript.Expression = Expression; + var UnaryExpression = (function (_super) { + __extends(UnaryExpression, _super); + function UnaryExpression(nodeType, operand) { + _super.call(this, nodeType); + this.operand = operand; + this.targetType = null; + this.castTerm = null; + } + UnaryExpression.prototype.addToControlFlow = function (context) { + _super.prototype.addToControlFlow.call(this, context); + if(this.nodeType == TypeScript.NodeType.Throw) { + context.returnStmt(); + } + }; + UnaryExpression.prototype.typeCheck = function (typeFlow) { + switch(this.nodeType) { + case TypeScript.NodeType.Not: { + return typeFlow.typeCheckBitNot(this); + + } + case TypeScript.NodeType.LogNot: { + return typeFlow.typeCheckLogNot(this); + + } + case TypeScript.NodeType.Pos: + case TypeScript.NodeType.Neg: { + return typeFlow.typeCheckUnaryNumberOperator(this); + + } + case TypeScript.NodeType.IncPost: + case TypeScript.NodeType.IncPre: + case TypeScript.NodeType.DecPost: + case TypeScript.NodeType.DecPre: { + return typeFlow.typeCheckIncOrDec(this); + + } + case TypeScript.NodeType.ArrayLit: { + typeFlow.typeCheckArrayLit(this); + return this; + + } + case TypeScript.NodeType.ObjectLit: { + typeFlow.typeCheckObjectLit(this); + return this; + + } + case TypeScript.NodeType.Throw: { + this.operand = typeFlow.typeCheck(this.operand); + this.type = typeFlow.voidType; + return this; + + } + case TypeScript.NodeType.Typeof: { + this.operand = typeFlow.typeCheck(this.operand); + this.type = typeFlow.stringType; + return this; + + } + case TypeScript.NodeType.Delete: { + this.operand = typeFlow.typeCheck(this.operand); + this.type = typeFlow.booleanType; + break; + + } + case TypeScript.NodeType.TypeAssertion: { + this.castTerm = typeFlow.typeCheck(this.castTerm); + var applyTargetType = !this.operand.isParenthesized; + var targetType = applyTargetType ? this.castTerm.type : null; + typeFlow.checker.typeCheckWithContextualType(targetType, typeFlow.checker.inProvisionalTypecheckMode(), true, this.operand); + typeFlow.castWithCoercion(this.operand, this.castTerm.type, false, true); + this.type = this.castTerm.type; + return this; + + } + case TypeScript.NodeType.Void: { + this.operand = typeFlow.typeCheck(this.operand); + this.type = typeFlow.checker.undefinedType; + break; + + } + default: { + throw new Error("please implement in derived class"); + + } + } + return this; + }; + UnaryExpression.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + switch(this.nodeType) { + case TypeScript.NodeType.IncPost: { + emitter.emitJavascript(this.operand, TypeScript.TokenID.PlusPlus, false); + emitter.writeToOutput("++"); + break; + + } + case TypeScript.NodeType.LogNot: { + emitter.writeToOutput("!"); + emitter.emitJavascript(this.operand, TypeScript.TokenID.Exclamation, false); + break; + + } + case TypeScript.NodeType.DecPost: { + emitter.emitJavascript(this.operand, TypeScript.TokenID.MinusMinus, false); + emitter.writeToOutput("--"); + break; + + } + case TypeScript.NodeType.ObjectLit: { + emitter.emitObjectLiteral(this.operand); + break; + + } + case TypeScript.NodeType.ArrayLit: { + emitter.emitArrayLiteral(this.operand); + break; + + } + case TypeScript.NodeType.Not: { + emitter.writeToOutput("~"); + emitter.emitJavascript(this.operand, TypeScript.TokenID.Tilde, false); + break; + + } + case TypeScript.NodeType.Neg: { + emitter.writeToOutput("-"); + if(this.operand.nodeType == TypeScript.NodeType.Neg) { + this.operand.isParenthesized = true; + } + emitter.emitJavascript(this.operand, TypeScript.TokenID.Minus, false); + break; + + } + case TypeScript.NodeType.Pos: { + emitter.writeToOutput("+"); + if(this.operand.nodeType == TypeScript.NodeType.Pos) { + this.operand.isParenthesized = true; + } + emitter.emitJavascript(this.operand, TypeScript.TokenID.Plus, false); + break; + + } + case TypeScript.NodeType.IncPre: { + emitter.writeToOutput("++"); + emitter.emitJavascript(this.operand, TypeScript.TokenID.PlusPlus, false); + break; + + } + case TypeScript.NodeType.DecPre: { + emitter.writeToOutput("--"); + emitter.emitJavascript(this.operand, TypeScript.TokenID.MinusMinus, false); + break; + + } + case TypeScript.NodeType.Throw: { + emitter.writeToOutput("throw "); + emitter.emitJavascript(this.operand, TypeScript.TokenID.Tilde, false); + emitter.writeToOutput(";"); + break; + + } + case TypeScript.NodeType.Typeof: { + emitter.writeToOutput("typeof "); + emitter.emitJavascript(this.operand, TypeScript.TokenID.Tilde, false); + break; + + } + case TypeScript.NodeType.Delete: { + emitter.writeToOutput("delete "); + emitter.emitJavascript(this.operand, TypeScript.TokenID.Tilde, false); + break; + + } + case TypeScript.NodeType.Void: { + emitter.writeToOutput("void "); + emitter.emitJavascript(this.operand, TypeScript.TokenID.Tilde, false); + break; + + } + case TypeScript.NodeType.TypeAssertion: { + emitter.emitJavascript(this.operand, TypeScript.TokenID.Tilde, false); + break; + + } + default: { + throw new Error("please implement in derived class"); + + } + } + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + return UnaryExpression; + })(Expression); + TypeScript.UnaryExpression = UnaryExpression; + var CallExpression = (function (_super) { + __extends(CallExpression, _super); + function CallExpression(nodeType, target, arguments) { + _super.call(this, nodeType); + this.target = target; + this.arguments = arguments; + this.signature = null; + this.minChar = this.target.minChar; + } + CallExpression.prototype.typeCheck = function (typeFlow) { + if(this.nodeType == TypeScript.NodeType.New) { + return typeFlow.typeCheckNew(this); + } else { + return typeFlow.typeCheckCall(this); + } + }; + CallExpression.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + if(this.nodeType == TypeScript.NodeType.New) { + emitter.emitNew(this.target, this.arguments); + } else { + emitter.emitCall(this, this.target, this.arguments); + } + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + return CallExpression; + })(Expression); + TypeScript.CallExpression = CallExpression; + var BinaryExpression = (function (_super) { + __extends(BinaryExpression, _super); + function BinaryExpression(nodeType, operand1, operand2) { + _super.call(this, nodeType); + this.operand1 = operand1; + this.operand2 = operand2; + } + BinaryExpression.prototype.typeCheck = function (typeFlow) { + switch(this.nodeType) { + case TypeScript.NodeType.Dot: { + return typeFlow.typeCheckDotOperator(this); + + } + case TypeScript.NodeType.Asg: { + return typeFlow.typeCheckAsgOperator(this); + + } + case TypeScript.NodeType.Add: + case TypeScript.NodeType.Sub: + case TypeScript.NodeType.Mul: + case TypeScript.NodeType.Div: + case TypeScript.NodeType.Mod: + case TypeScript.NodeType.Or: + case TypeScript.NodeType.And: { + return typeFlow.typeCheckArithmeticOperator(this, false); + + } + case TypeScript.NodeType.Xor: { + return typeFlow.typeCheckBitwiseOperator(this, false); + + } + case TypeScript.NodeType.Ne: + case TypeScript.NodeType.Eq: { + var text; + if(typeFlow.checker.styleSettings.eqeqeq) { + text = TypeScript.nodeTypeTable[this.nodeType]; + typeFlow.checker.errorReporter.styleError(this, "use of " + text); + } else { + if(typeFlow.checker.styleSettings.eqnull) { + text = TypeScript.nodeTypeTable[this.nodeType]; + if((this.operand2 !== null) && (this.operand2.nodeType == TypeScript.NodeType.Null)) { + typeFlow.checker.errorReporter.styleError(this, "use of " + text + " to compare with null"); + } + } + } + + } + case TypeScript.NodeType.Eqv: + case TypeScript.NodeType.NEqv: + case TypeScript.NodeType.Lt: + case TypeScript.NodeType.Le: + case TypeScript.NodeType.Ge: + case TypeScript.NodeType.Gt: { + return typeFlow.typeCheckBooleanOperator(this); + + } + case TypeScript.NodeType.Index: { + return typeFlow.typeCheckIndex(this); + + } + case TypeScript.NodeType.Member: { + this.type = typeFlow.voidType; + return this; + + } + case TypeScript.NodeType.LogOr: { + return typeFlow.typeCheckLogOr(this); + + } + case TypeScript.NodeType.LogAnd: { + return typeFlow.typeCheckLogAnd(this); + + } + case TypeScript.NodeType.AsgAdd: + case TypeScript.NodeType.AsgSub: + case TypeScript.NodeType.AsgMul: + case TypeScript.NodeType.AsgDiv: + case TypeScript.NodeType.AsgMod: + case TypeScript.NodeType.AsgOr: + case TypeScript.NodeType.AsgAnd: { + return typeFlow.typeCheckArithmeticOperator(this, true); + + } + case TypeScript.NodeType.AsgXor: { + return typeFlow.typeCheckBitwiseOperator(this, true); + + } + case TypeScript.NodeType.Lsh: + case TypeScript.NodeType.Rsh: + case TypeScript.NodeType.Rs2: { + return typeFlow.typeCheckShift(this, false); + + } + case TypeScript.NodeType.AsgLsh: + case TypeScript.NodeType.AsgRsh: + case TypeScript.NodeType.AsgRs2: { + return typeFlow.typeCheckShift(this, true); + + } + case TypeScript.NodeType.Comma: { + return typeFlow.typeCheckCommaOperator(this); + + } + case TypeScript.NodeType.InstOf: { + return typeFlow.typeCheckInstOf(this); + + } + case TypeScript.NodeType.In: { + return typeFlow.typeCheckInOperator(this); + + } + case TypeScript.NodeType.From: { + typeFlow.checker.errorReporter.simpleError(this, "Illegal use of 'from' keyword in binary expression"); + break; + + } + default: { + throw new Error("please implement in derived class"); + + } + } + return this; + }; + BinaryExpression.prototype.emit = function (emitter, tokenId, startLine) { + var binTokenId = TypeScript.nodeTypeToTokTable[this.nodeType]; + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + if(binTokenId != undefined) { + emitter.emitJavascript(this.operand1, binTokenId, false); + if(TypeScript.tokenTable[binTokenId].text == "instanceof") { + emitter.writeToOutput(" instanceof "); + } else { + if(TypeScript.tokenTable[binTokenId].text == "in") { + emitter.writeToOutput(" in "); + } else { + emitter.writeToOutputTrimmable(" " + TypeScript.tokenTable[binTokenId].text + " "); + } + } + emitter.emitJavascript(this.operand2, binTokenId, false); + } else { + switch(this.nodeType) { + case TypeScript.NodeType.Dot: { + if(!emitter.tryEmitConstant(this)) { + emitter.emitJavascript(this.operand1, TypeScript.TokenID.Dot, false); + emitter.writeToOutput("."); + emitter.emitJavascriptName(this.operand2, false); + } + break; + + } + case TypeScript.NodeType.Index: { + emitter.emitIndex(this.operand1, this.operand2); + break; + + } + case TypeScript.NodeType.Member: { + if(this.operand2.nodeType == TypeScript.NodeType.FuncDecl && (this.operand2).isAccessor()) { + var funcDecl = this.operand2; + if(TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.GetAccessor)) { + emitter.writeToOutput("get "); + } else { + emitter.writeToOutput("set "); + } + emitter.emitJavascript(this.operand1, TypeScript.TokenID.Colon, false); + } else { + emitter.emitJavascript(this.operand1, TypeScript.TokenID.Colon, false); + emitter.writeToOutputTrimmable(": "); + } + emitter.emitJavascript(this.operand2, TypeScript.TokenID.Comma, false); + break; + + } + case TypeScript.NodeType.Comma: { + emitter.emitJavascript(this.operand1, TypeScript.TokenID.Comma, false); + if(emitter.emitState.inObjectLiteral) { + emitter.writeLineToOutput(", "); + } else { + emitter.writeToOutput(","); + } + emitter.emitJavascript(this.operand2, TypeScript.TokenID.Comma, false); + break; + + } + case TypeScript.NodeType.Is: { + throw new Error("should be de-sugared during type check"); + + } + default: { + throw new Error("please implement in derived class"); + + } + } + } + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + return BinaryExpression; + })(Expression); + TypeScript.BinaryExpression = BinaryExpression; + var ConditionalExpression = (function (_super) { + __extends(ConditionalExpression, _super); + function ConditionalExpression(operand1, operand2, operand3) { + _super.call(this, TypeScript.NodeType.ConditionalExpression); + this.operand1 = operand1; + this.operand2 = operand2; + this.operand3 = operand3; + } + ConditionalExpression.prototype.typeCheck = function (typeFlow) { + return typeFlow.typeCheckQMark(this); + }; + ConditionalExpression.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + emitter.emitJavascript(this.operand1, TypeScript.TokenID.Question, false); + emitter.writeToOutput(" ? "); + emitter.emitJavascript(this.operand2, TypeScript.TokenID.Question, false); + emitter.writeToOutput(" : "); + emitter.emitJavascript(this.operand3, TypeScript.TokenID.Question, false); + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + return ConditionalExpression; + })(Expression); + TypeScript.ConditionalExpression = ConditionalExpression; + var NumberLiteral = (function (_super) { + __extends(NumberLiteral, _super); + function NumberLiteral(value, hasEmptyFraction) { + _super.call(this, TypeScript.NodeType.NumberLit); + this.value = value; + this.hasEmptyFraction = hasEmptyFraction; + this.isNegativeZero = false; + } + NumberLiteral.prototype.typeCheck = function (typeFlow) { + this.type = typeFlow.doubleType; + return this; + }; + NumberLiteral.prototype.treeViewLabel = function () { + return "num: " + this.printLabel(); + }; + NumberLiteral.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + if(this.isNegativeZero) { + emitter.writeToOutput("-"); + } + emitter.writeToOutput(this.value.toString()); + if(this.hasEmptyFraction) { + emitter.writeToOutput(".0"); + } + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + NumberLiteral.prototype.printLabel = function () { + if(Math.floor(this.value) != this.value) { + return this.value.toFixed(2).toString(); + } else { + if(this.hasEmptyFraction) { + return this.value.toString() + ".0"; + } else { + return this.value.toString(); + } + } + }; + return NumberLiteral; + })(Expression); + TypeScript.NumberLiteral = NumberLiteral; + var RegexLiteral = (function (_super) { + __extends(RegexLiteral, _super); + function RegexLiteral(regex) { + _super.call(this, TypeScript.NodeType.Regex); + this.regex = regex; + } + RegexLiteral.prototype.typeCheck = function (typeFlow) { + this.type = typeFlow.regexType; + return this; + }; + RegexLiteral.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + emitter.writeToOutput(this.regex.toString()); + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + return RegexLiteral; + })(Expression); + TypeScript.RegexLiteral = RegexLiteral; + var StringLiteral = (function (_super) { + __extends(StringLiteral, _super); + function StringLiteral(text) { + _super.call(this, TypeScript.NodeType.QString); + this.text = text; + } + StringLiteral.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + emitter.emitStringLiteral(this.text); + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + StringLiteral.prototype.typeCheck = function (typeFlow) { + this.type = typeFlow.stringType; + return this; + }; + StringLiteral.prototype.treeViewLabel = function () { + return "st: " + this.text; + }; + StringLiteral.prototype.printLabel = function () { + return this.text; + }; + return StringLiteral; + })(Expression); + TypeScript.StringLiteral = StringLiteral; + var ModuleElement = (function (_super) { + __extends(ModuleElement, _super); + function ModuleElement(nodeType) { + _super.call(this, nodeType); + } + return ModuleElement; + })(AST); + TypeScript.ModuleElement = ModuleElement; + var ImportDeclaration = (function (_super) { + __extends(ImportDeclaration, _super); + function ImportDeclaration(id, alias) { + _super.call(this, TypeScript.NodeType.ImportDeclaration); + this.id = id; + this.alias = alias; + this.varFlags = TypeScript.VarFlags.None; + this.isDynamicImport = false; + } + ImportDeclaration.prototype.isStatementOrExpression = function () { + return true; + }; + ImportDeclaration.prototype.isDeclaration = function () { + return true; + }; + ImportDeclaration.prototype.emit = function (emitter, tokenId, startLine) { + var mod = this.alias.type; + if(!this.isDynamicImport || (this.id.sym && !(this.id.sym).onlyReferencedAsTypeRef)) { + var prevModAliasId = emitter.modAliasId; + var prevFirstModAlias = emitter.firstModAlias; + emitter.recordSourceMappingStart(this); + emitter.emitParensAndCommentsInPlace(this, true); + emitter.writeToOutput("var " + this.id.actualText + " = "); + emitter.modAliasId = this.id.actualText; + emitter.firstModAlias = this.firstAliasedModToString(); + emitter.emitJavascript(this.alias, TypeScript.TokenID.Tilde, false); + if(!this.isDynamicImport) { + emitter.writeToOutput(";"); + } + emitter.emitParensAndCommentsInPlace(this, false); + emitter.recordSourceMappingEnd(this); + emitter.modAliasId = prevModAliasId; + emitter.firstModAlias = prevFirstModAlias; + } + }; + ImportDeclaration.prototype.typeCheck = function (typeFlow) { + return typeFlow.typeCheckImportDecl(this); + }; + ImportDeclaration.prototype.getAliasName = function (aliasAST) { + if (typeof aliasAST === "undefined") { aliasAST = this.alias; } + if(aliasAST.nodeType == TypeScript.NodeType.Name) { + return (aliasAST).actualText; + } else { + var dotExpr = aliasAST; + return this.getAliasName(dotExpr.operand1) + "." + this.getAliasName(dotExpr.operand2); + } + }; + ImportDeclaration.prototype.firstAliasedModToString = function () { + if(this.alias.nodeType == TypeScript.NodeType.Name) { + return (this.alias).actualText; + } else { + var dotExpr = this.alias; + var firstMod = dotExpr.operand1; + return firstMod.actualText; + } + }; + return ImportDeclaration; + })(ModuleElement); + TypeScript.ImportDeclaration = ImportDeclaration; + var BoundDecl = (function (_super) { + __extends(BoundDecl, _super); + function BoundDecl(id, nodeType, nestingLevel) { + _super.call(this, nodeType); + this.id = id; + this.nestingLevel = nestingLevel; + this.init = null; + this.typeExpr = null; + this.varFlags = TypeScript.VarFlags.None; + this.sym = null; + } + BoundDecl.prototype.isDeclaration = function () { + return true; + }; + BoundDecl.prototype.isStatementOrExpression = function () { + return true; + }; + BoundDecl.prototype.isPrivate = function () { + return TypeScript.hasFlag(this.varFlags, TypeScript.VarFlags.Private); + }; + BoundDecl.prototype.isPublic = function () { + return TypeScript.hasFlag(this.varFlags, TypeScript.VarFlags.Public); + }; + BoundDecl.prototype.isProperty = function () { + return TypeScript.hasFlag(this.varFlags, TypeScript.VarFlags.Property); + }; + BoundDecl.prototype.typeCheck = function (typeFlow) { + return typeFlow.typeCheckBoundDecl(this); + }; + BoundDecl.prototype.printLabel = function () { + return this.treeViewLabel(); + }; + return BoundDecl; + })(AST); + TypeScript.BoundDecl = BoundDecl; + var VarDecl = (function (_super) { + __extends(VarDecl, _super); + function VarDecl(id, nest) { + _super.call(this, id, TypeScript.NodeType.VarDecl, nest); + } + VarDecl.prototype.isAmbient = function () { + return TypeScript.hasFlag(this.varFlags, TypeScript.VarFlags.Ambient); + }; + VarDecl.prototype.isExported = function () { + return TypeScript.hasFlag(this.varFlags, TypeScript.VarFlags.Exported); + }; + VarDecl.prototype.isStatic = function () { + return TypeScript.hasFlag(this.varFlags, TypeScript.VarFlags.Static); + }; + VarDecl.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitJavascriptVarDecl(this, tokenId); + }; + VarDecl.prototype.treeViewLabel = function () { + return "var " + this.id.actualText; + }; + return VarDecl; + })(BoundDecl); + TypeScript.VarDecl = VarDecl; + var ArgDecl = (function (_super) { + __extends(ArgDecl, _super); + function ArgDecl(id) { + _super.call(this, id, TypeScript.NodeType.ArgDecl, 0); + this.isOptional = false; + this.parameterPropertySym = null; + } + ArgDecl.prototype.isOptionalArg = function () { + return this.isOptional || this.init; + }; + ArgDecl.prototype.treeViewLabel = function () { + return "arg: " + this.id.actualText; + }; + ArgDecl.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + emitter.writeToOutput(this.id.actualText); + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + return ArgDecl; + })(BoundDecl); + TypeScript.ArgDecl = ArgDecl; + var internalId = 0; + var FuncDecl = (function (_super) { + __extends(FuncDecl, _super); + function FuncDecl(name, bod, isConstructor, arguments, vars, scopes, statics, nodeType) { + _super.call(this, nodeType); + this.name = name; + this.bod = bod; + this.isConstructor = isConstructor; + this.arguments = arguments; + this.vars = vars; + this.scopes = scopes; + this.statics = statics; + this.hint = null; + this.fncFlags = TypeScript.FncFlags.None; + this.returnTypeAnnotation = null; + this.variableArgList = false; + this.jumpRefs = null; + this.internalNameCache = null; + this.tmp1Declared = false; + this.enclosingFnc = null; + this.freeVariables = []; + this.unitIndex = -1; + this.classDecl = null; + this.boundToProperty = null; + this.isOverload = false; + this.innerStaticFuncs = []; + this.isTargetTypedAsMethod = false; + this.isInlineCallLiteral = false; + this.accessorSymbol = null; + this.leftCurlyCount = 0; + this.rightCurlyCount = 0; + this.returnStatementsWithExpressions = []; + this.scopeType = null; + this.endingToken = null; + } + FuncDecl.prototype.isDeclaration = function () { + return true; + }; + FuncDecl.prototype.internalName = function () { + if(this.internalNameCache == null) { + var extName = this.getNameText(); + if(extName) { + this.internalNameCache = "_internal_" + extName; + } else { + this.internalNameCache = "_internal_" + internalId++; + } + } + return this.internalNameCache; + }; + FuncDecl.prototype.hasSelfReference = function () { + return TypeScript.hasFlag(this.fncFlags, TypeScript.FncFlags.HasSelfReference); + }; + FuncDecl.prototype.setHasSelfReference = function () { + this.fncFlags |= TypeScript.FncFlags.HasSelfReference; + }; + FuncDecl.prototype.hasSuperReferenceInFatArrowFunction = function () { + return TypeScript.hasFlag(this.fncFlags, TypeScript.FncFlags.HasSuperReferenceInFatArrowFunction); + }; + FuncDecl.prototype.setHasSuperReferenceInFatArrowFunction = function () { + this.fncFlags |= TypeScript.FncFlags.HasSuperReferenceInFatArrowFunction; + }; + FuncDecl.prototype.addCloRef = function (id, sym) { + if(this.envids == null) { + this.envids = new Array(); + } + this.envids[this.envids.length] = id; + var outerFnc = this.enclosingFnc; + if(sym) { + while(outerFnc && (outerFnc.type.symbol != sym.container)) { + outerFnc.addJumpRef(sym); + outerFnc = outerFnc.enclosingFnc; + } + } + return this.envids.length - 1; + }; + FuncDecl.prototype.addJumpRef = function (sym) { + if(this.jumpRefs == null) { + this.jumpRefs = new Array(); + } + var id = new Identifier(sym.name); + this.jumpRefs[this.jumpRefs.length] = id; + id.sym = sym; + id.cloId = this.addCloRef(id, null); + }; + FuncDecl.prototype.buildControlFlow = function () { + var entry = new TypeScript.BasicBlock(); + var exit = new TypeScript.BasicBlock(); + var context = new TypeScript.ControlFlowContext(entry, exit); + var controlFlowPrefix = function (ast, parent, walker) { + ast.addToControlFlow(walker.state); + return ast; + }; + var walker = TypeScript.getAstWalkerFactory().getWalker(controlFlowPrefix, null, null, context); + context.walker = walker; + walker.walk(this.bod, this); + return context; + }; + FuncDecl.prototype.typeCheck = function (typeFlow) { + return typeFlow.typeCheckFunction(this); + }; + FuncDecl.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitJavascriptFunction(this); + }; + FuncDecl.prototype.getNameText = function () { + if(this.name) { + return this.name.actualText; + } else { + return this.hint; + } + }; + FuncDecl.prototype.isMethod = function () { + return (this.fncFlags & TypeScript.FncFlags.Method) != TypeScript.FncFlags.None; + }; + FuncDecl.prototype.isCallMember = function () { + return TypeScript.hasFlag(this.fncFlags, TypeScript.FncFlags.CallMember); + }; + FuncDecl.prototype.isConstructMember = function () { + return TypeScript.hasFlag(this.fncFlags, TypeScript.FncFlags.ConstructMember); + }; + FuncDecl.prototype.isIndexerMember = function () { + return TypeScript.hasFlag(this.fncFlags, TypeScript.FncFlags.IndexerMember); + }; + FuncDecl.prototype.isSpecialFn = function () { + return this.isCallMember() || this.isIndexerMember() || this.isConstructMember(); + }; + FuncDecl.prototype.isAnonymousFn = function () { + return this.name === null; + }; + FuncDecl.prototype.isAccessor = function () { + return TypeScript.hasFlag(this.fncFlags, TypeScript.FncFlags.GetAccessor) || TypeScript.hasFlag(this.fncFlags, TypeScript.FncFlags.SetAccessor); + }; + FuncDecl.prototype.isGetAccessor = function () { + return TypeScript.hasFlag(this.fncFlags, TypeScript.FncFlags.GetAccessor); + }; + FuncDecl.prototype.isSetAccessor = function () { + return TypeScript.hasFlag(this.fncFlags, TypeScript.FncFlags.SetAccessor); + }; + FuncDecl.prototype.isAmbient = function () { + return TypeScript.hasFlag(this.fncFlags, TypeScript.FncFlags.Ambient); + }; + FuncDecl.prototype.isExported = function () { + return TypeScript.hasFlag(this.fncFlags, TypeScript.FncFlags.Exported); + }; + FuncDecl.prototype.isPrivate = function () { + return TypeScript.hasFlag(this.fncFlags, TypeScript.FncFlags.Private); + }; + FuncDecl.prototype.isPublic = function () { + return TypeScript.hasFlag(this.fncFlags, TypeScript.FncFlags.Public); + }; + FuncDecl.prototype.isStatic = function () { + return TypeScript.hasFlag(this.fncFlags, TypeScript.FncFlags.Static); + }; + FuncDecl.prototype.treeViewLabel = function () { + if(this.name == null) { + return "funcExpr"; + } else { + return "func: " + this.name.actualText; + } + }; + FuncDecl.prototype.ClearFlags = function () { + this.fncFlags = TypeScript.FncFlags.None; + }; + FuncDecl.prototype.isSignature = function () { + return (this.fncFlags & TypeScript.FncFlags.Signature) != TypeScript.FncFlags.None; + }; + return FuncDecl; + })(AST); + TypeScript.FuncDecl = FuncDecl; + var LocationInfo = (function () { + function LocationInfo(filename, lineMap, unitIndex) { + this.filename = filename; + this.lineMap = lineMap; + this.unitIndex = unitIndex; + } + return LocationInfo; + })(); + TypeScript.LocationInfo = LocationInfo; + TypeScript.unknownLocationInfo = new LocationInfo("unknown", null, -1); + var Script = (function (_super) { + __extends(Script, _super); + function Script(vars, scopes) { + _super.call(this, new Identifier("script"), null, false, null, vars, scopes, null, TypeScript.NodeType.Script); + this.locationInfo = null; + this.referencedFiles = []; + this.requiresGlobal = false; + this.requiresExtendsBlock = false; + this.isResident = false; + this.isDeclareFile = false; + this.hasBeenTypeChecked = false; + this.topLevelMod = null; + this.leftCurlyCount = 0; + this.rightCurlyCount = 0; + this.containsUnicodeChar = false; + this.containsUnicodeCharInComment = false; + this.externallyVisibleImportedSymbols = []; + this.vars = vars; + this.scopes = scopes; + } + Script.prototype.setCachedEmitRequired = function (value) { + this.cachedEmitRequired = value; + return this.cachedEmitRequired; + }; + Script.prototype.typeCheck = function (typeFlow) { + return typeFlow.typeCheckScript(this); + }; + Script.prototype.treeViewLabel = function () { + return "Script"; + }; + Script.prototype.emitRequired = function (emitOptions) { + if(this.cachedEmitRequired != undefined) { + return this.cachedEmitRequired; + } + if(!this.isDeclareFile && !this.isResident && this.bod) { + for(var i = 0, len = this.bod.members.length; i < len; i++) { + var stmt = this.bod.members[i]; + if(stmt.nodeType == TypeScript.NodeType.ModuleDeclaration) { + if(!TypeScript.hasFlag((stmt).modFlags, TypeScript.ModuleFlags.ShouldEmitModuleDecl | TypeScript.ModuleFlags.Ambient)) { + return this.setCachedEmitRequired(true); + } + } else { + if(stmt.nodeType == TypeScript.NodeType.ClassDeclaration) { + if(!TypeScript.hasFlag((stmt).varFlags, TypeScript.VarFlags.Ambient)) { + return this.setCachedEmitRequired(true); + } + } else { + if(stmt.nodeType == TypeScript.NodeType.VarDecl) { + if(!TypeScript.hasFlag((stmt).varFlags, TypeScript.VarFlags.Ambient)) { + return this.setCachedEmitRequired(true); + } + } else { + if(stmt.nodeType == TypeScript.NodeType.FuncDecl) { + if(!(stmt).isSignature()) { + return this.setCachedEmitRequired(true); + } + } else { + if(stmt.nodeType != TypeScript.NodeType.InterfaceDeclaration && stmt.nodeType != TypeScript.NodeType.Empty) { + return this.setCachedEmitRequired(true); + } + } + } + } + } + } + if(emitOptions.emitComments && ((this.bod.preComments && this.bod.preComments.length > 0) || (this.bod.postComments && this.bod.postComments.length > 0))) { + return this.setCachedEmitRequired(true); + } + } + return this.setCachedEmitRequired(false); + }; + Script.prototype.emit = function (emitter, tokenId, startLine) { + if(this.emitRequired(emitter.emitOptions)) { + emitter.emitParensAndCommentsInPlace(this.bod, true); + emitter.emitJavascriptList(this.bod, null, TypeScript.TokenID.Semicolon, true, false, false, true, this.requiresExtendsBlock); + emitter.emitParensAndCommentsInPlace(this.bod, false); + } + }; + Script.prototype.AddExternallyVisibleImportedSymbol = function (symbol, checker) { + if(this.isExternallyVisibleSymbol(symbol)) { + return; + } + if(!symbol.getType().symbol.isExternallyVisible(checker)) { + var quotes = ""; + var moduleName = symbol.getType().symbol.prettyName; + if(!TypeScript.isQuoted(moduleName)) { + quotes = "'"; + } + checker.errorReporter.simpleError(symbol.declAST, "Externally visible import statement uses non exported module " + quotes + moduleName + quotes); + } + this.externallyVisibleImportedSymbols.push(symbol); + }; + Script.prototype.isExternallyVisibleSymbol = function (symbol) { + for(var i = 0; i < this.externallyVisibleImportedSymbols.length; i++) { + if(this.externallyVisibleImportedSymbols[i] == symbol) { + return true; + } + } + return false; + }; + return Script; + })(FuncDecl); + TypeScript.Script = Script; + var NamedDeclaration = (function (_super) { + __extends(NamedDeclaration, _super); + function NamedDeclaration(nodeType, name, members) { + _super.call(this, nodeType); + this.name = name; + this.members = members; + this.leftCurlyCount = 0; + this.rightCurlyCount = 0; + } + NamedDeclaration.prototype.isDeclaration = function () { + return true; + }; + return NamedDeclaration; + })(ModuleElement); + TypeScript.NamedDeclaration = NamedDeclaration; + var ModuleDeclaration = (function (_super) { + __extends(ModuleDeclaration, _super); + function ModuleDeclaration(name, members, vars, scopes, endingToken) { + _super.call(this, TypeScript.NodeType.ModuleDeclaration, name, members); + this.endingToken = endingToken; + this.modFlags = TypeScript.ModuleFlags.ShouldEmitModuleDecl; + this.amdDependencies = []; + this.containsUnicodeChar = false; + this.containsUnicodeCharInComment = false; + this.vars = vars; + this.scopes = scopes; + this.prettyName = this.name.actualText; + } + ModuleDeclaration.prototype.isExported = function () { + return TypeScript.hasFlag(this.modFlags, TypeScript.ModuleFlags.Exported); + }; + ModuleDeclaration.prototype.isAmbient = function () { + return TypeScript.hasFlag(this.modFlags, TypeScript.ModuleFlags.Ambient); + }; + ModuleDeclaration.prototype.isEnum = function () { + return TypeScript.hasFlag(this.modFlags, TypeScript.ModuleFlags.IsEnum); + }; + ModuleDeclaration.prototype.recordNonInterface = function () { + this.modFlags &= ~TypeScript.ModuleFlags.ShouldEmitModuleDecl; + }; + ModuleDeclaration.prototype.typeCheck = function (typeFlow) { + return typeFlow.typeCheckModule(this); + }; + ModuleDeclaration.prototype.emit = function (emitter, tokenId, startLine) { + if(!TypeScript.hasFlag(this.modFlags, TypeScript.ModuleFlags.ShouldEmitModuleDecl)) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + emitter.emitJavascriptModule(this); + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + } + }; + return ModuleDeclaration; + })(NamedDeclaration); + TypeScript.ModuleDeclaration = ModuleDeclaration; + var TypeDeclaration = (function (_super) { + __extends(TypeDeclaration, _super); + function TypeDeclaration(nodeType, name, extendsList, implementsList, members) { + _super.call(this, nodeType, name, members); + this.extendsList = extendsList; + this.implementsList = implementsList; + this.varFlags = TypeScript.VarFlags.None; + } + TypeDeclaration.prototype.isExported = function () { + return TypeScript.hasFlag(this.varFlags, TypeScript.VarFlags.Exported); + }; + TypeDeclaration.prototype.isAmbient = function () { + return TypeScript.hasFlag(this.varFlags, TypeScript.VarFlags.Ambient); + }; + return TypeDeclaration; + })(NamedDeclaration); + TypeScript.TypeDeclaration = TypeDeclaration; + var ClassDeclaration = (function (_super) { + __extends(ClassDeclaration, _super); + function ClassDeclaration(name, members, extendsList, implementsList) { + _super.call(this, TypeScript.NodeType.ClassDeclaration, name, extendsList, implementsList, members); + this.knownMemberNames = { + }; + this.constructorDecl = null; + this.constructorNestingLevel = 0; + this.endingToken = null; + } + ClassDeclaration.prototype.typeCheck = function (typeFlow) { + return typeFlow.typeCheckClass(this); + }; + ClassDeclaration.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitJavascriptClass(this); + }; + return ClassDeclaration; + })(TypeDeclaration); + TypeScript.ClassDeclaration = ClassDeclaration; + var InterfaceDeclaration = (function (_super) { + __extends(InterfaceDeclaration, _super); + function InterfaceDeclaration(name, members, extendsList, implementsList) { + _super.call(this, TypeScript.NodeType.InterfaceDeclaration, name, extendsList, implementsList, members); + } + InterfaceDeclaration.prototype.typeCheck = function (typeFlow) { + return typeFlow.typeCheckInterface(this); + }; + InterfaceDeclaration.prototype.emit = function (emitter, tokenId, startLine) { + }; + return InterfaceDeclaration; + })(TypeDeclaration); + TypeScript.InterfaceDeclaration = InterfaceDeclaration; + var Statement = (function (_super) { + __extends(Statement, _super); + function Statement(nodeType) { + _super.call(this, nodeType); + this.flags |= TypeScript.ASTFlags.IsStatement; + } + Statement.prototype.isLoop = function () { + return false; + }; + Statement.prototype.isStatementOrExpression = function () { + return true; + }; + Statement.prototype.isCompoundStatement = function () { + return this.isLoop(); + }; + Statement.prototype.typeCheck = function (typeFlow) { + this.type = typeFlow.voidType; + return this; + }; + return Statement; + })(ModuleElement); + TypeScript.Statement = Statement; + var LabeledStatement = (function (_super) { + __extends(LabeledStatement, _super); + function LabeledStatement(labels, stmt) { + _super.call(this, TypeScript.NodeType.LabeledStatement); + this.labels = labels; + this.stmt = stmt; + } + LabeledStatement.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + if(this.labels) { + var labelsLen = this.labels.members.length; + for(var i = 0; i < labelsLen; i++) { + this.labels.members[i].emit(emitter, tokenId, startLine); + } + } + this.stmt.emit(emitter, tokenId, true); + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + LabeledStatement.prototype.typeCheck = function (typeFlow) { + typeFlow.typeCheck(this.labels); + this.stmt = this.stmt.typeCheck(typeFlow); + return this; + }; + LabeledStatement.prototype.addToControlFlow = function (context) { + var beforeBB = context.current; + var bb = new TypeScript.BasicBlock(); + context.current = bb; + beforeBB.addSuccessor(bb); + }; + return LabeledStatement; + })(Statement); + TypeScript.LabeledStatement = LabeledStatement; + var Block = (function (_super) { + __extends(Block, _super); + function Block(statements, isStatementBlock) { + _super.call(this, TypeScript.NodeType.Block); + this.statements = statements; + this.isStatementBlock = isStatementBlock; + } + Block.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + if(this.isStatementBlock) { + emitter.writeLineToOutput(" {"); + emitter.indenter.increaseIndent(); + } else { + emitter.setInVarBlock(this.statements.members.length); + } + var temp = emitter.setInObjectLiteral(false); + if(this.statements) { + emitter.emitJavascriptList(this.statements, null, TypeScript.TokenID.Semicolon, true, false, false); + } + if(this.isStatementBlock) { + emitter.indenter.decreaseIndent(); + emitter.emitIndent(); + emitter.writeToOutput("}"); + } + emitter.setInObjectLiteral(temp); + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + Block.prototype.addToControlFlow = function (context) { + var afterIfNeeded = new TypeScript.BasicBlock(); + context.pushStatement(this, context.current, afterIfNeeded); + if(this.statements) { + context.walk(this.statements, this); + } + context.walker.options.goChildren = false; + context.popStatement(); + if(afterIfNeeded.predecessors.length > 0) { + context.current.addSuccessor(afterIfNeeded); + context.current = afterIfNeeded; + } + }; + Block.prototype.typeCheck = function (typeFlow) { + if(!typeFlow.checker.styleSettings.emptyBlocks) { + if((this.statements === null) || (this.statements.members.length == 0)) { + typeFlow.checker.errorReporter.styleError(this, "empty block"); + } + } + typeFlow.typeCheck(this.statements); + return this; + }; + return Block; + })(Statement); + TypeScript.Block = Block; + var Jump = (function (_super) { + __extends(Jump, _super); + function Jump(nodeType) { + _super.call(this, nodeType); + this.target = null; + this.resolvedTarget = null; + } + Jump.prototype.hasExplicitTarget = function () { + return (this.target); + }; + Jump.prototype.setResolvedTarget = function (parser, stmt) { + if(stmt.isLoop()) { + this.resolvedTarget = stmt; + return true; + } + if(this.nodeType === TypeScript.NodeType.Continue) { + parser.reportParseError("continue statement applies only to loops"); + return false; + } else { + if((stmt.nodeType == TypeScript.NodeType.Switch) || this.hasExplicitTarget()) { + this.resolvedTarget = stmt; + return true; + } else { + parser.reportParseError("break statement with no label can apply only to a loop or switch statement"); + return false; + } + } + }; + Jump.prototype.addToControlFlow = function (context) { + _super.prototype.addToControlFlow.call(this, context); + context.unconditionalBranch(this.resolvedTarget, (this.nodeType == TypeScript.NodeType.Continue)); + }; + Jump.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + if(this.nodeType == TypeScript.NodeType.Break) { + emitter.writeToOutput("break"); + } else { + emitter.writeToOutput("continue"); + } + if(this.hasExplicitTarget()) { + emitter.writeToOutput(" " + this.target); + } + emitter.recordSourceMappingEnd(this); + emitter.writeToOutput(";"); + emitter.emitParensAndCommentsInPlace(this, false); + }; + return Jump; + })(Statement); + TypeScript.Jump = Jump; + var WhileStatement = (function (_super) { + __extends(WhileStatement, _super); + function WhileStatement(cond) { + _super.call(this, TypeScript.NodeType.While); + this.cond = cond; + this.body = null; + } + WhileStatement.prototype.isLoop = function () { + return true; + }; + WhileStatement.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + var temp = emitter.setInObjectLiteral(false); + emitter.writeToOutput("while("); + emitter.emitJavascript(this.cond, TypeScript.TokenID.While, false); + emitter.writeToOutput(")"); + emitter.emitJavascriptStatements(this.body, false); + emitter.setInObjectLiteral(temp); + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + WhileStatement.prototype.typeCheck = function (typeFlow) { + return typeFlow.typeCheckWhile(this); + }; + WhileStatement.prototype.addToControlFlow = function (context) { + var loopHeader = context.current; + var loopStart = new TypeScript.BasicBlock(); + var afterLoop = new TypeScript.BasicBlock(); + loopHeader.addSuccessor(loopStart); + context.current = loopStart; + context.addContent(this.cond); + var condBlock = context.current; + var targetInfo = null; + if(this.body) { + context.current = new TypeScript.BasicBlock(); + condBlock.addSuccessor(context.current); + context.pushStatement(this, loopStart, afterLoop); + context.walk(this.body, this); + targetInfo = context.popStatement(); + } + if(!(context.noContinuation)) { + var loopEnd = context.current; + loopEnd.addSuccessor(loopStart); + } + context.current = afterLoop; + condBlock.addSuccessor(afterLoop); + context.noContinuation = false; + context.walker.options.goChildren = false; + }; + return WhileStatement; + })(Statement); + TypeScript.WhileStatement = WhileStatement; + var DoWhileStatement = (function (_super) { + __extends(DoWhileStatement, _super); + function DoWhileStatement() { + _super.call(this, TypeScript.NodeType.DoWhile); + this.body = null; + this.whileAST = null; + this.cond = null; + } + DoWhileStatement.prototype.isLoop = function () { + return true; + }; + DoWhileStatement.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + var temp = emitter.setInObjectLiteral(false); + emitter.writeToOutput("do"); + emitter.emitJavascriptStatements(this.body, true); + emitter.recordSourceMappingStart(this.whileAST); + emitter.writeToOutput("while"); + emitter.recordSourceMappingEnd(this.whileAST); + emitter.writeToOutput('('); + emitter.emitJavascript(this.cond, TypeScript.TokenID.CloseParen, false); + emitter.writeToOutput(")"); + emitter.setInObjectLiteral(temp); + emitter.recordSourceMappingEnd(this); + emitter.writeToOutput(";"); + emitter.emitParensAndCommentsInPlace(this, false); + }; + DoWhileStatement.prototype.typeCheck = function (typeFlow) { + return typeFlow.typeCheckDoWhile(this); + }; + DoWhileStatement.prototype.addToControlFlow = function (context) { + var loopHeader = context.current; + var loopStart = new TypeScript.BasicBlock(); + var afterLoop = new TypeScript.BasicBlock(); + loopHeader.addSuccessor(loopStart); + context.current = loopStart; + var targetInfo = null; + if(this.body) { + context.pushStatement(this, loopStart, afterLoop); + context.walk(this.body, this); + targetInfo = context.popStatement(); + } + if(!(context.noContinuation)) { + var loopEnd = context.current; + loopEnd.addSuccessor(loopStart); + context.addContent(this.cond); + context.current = afterLoop; + loopEnd.addSuccessor(afterLoop); + } else { + context.addUnreachable(this.cond); + } + context.walker.options.goChildren = false; + }; + return DoWhileStatement; + })(Statement); + TypeScript.DoWhileStatement = DoWhileStatement; + var IfStatement = (function (_super) { + __extends(IfStatement, _super); + function IfStatement(cond) { + _super.call(this, TypeScript.NodeType.If); + this.cond = cond; + this.elseBod = null; + this.statement = new ASTSpan(); + } + IfStatement.prototype.isCompoundStatement = function () { + return true; + }; + IfStatement.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + var temp = emitter.setInObjectLiteral(false); + emitter.recordSourceMappingStart(this.statement); + emitter.writeToOutput("if("); + emitter.emitJavascript(this.cond, TypeScript.TokenID.If, false); + emitter.writeToOutput(")"); + emitter.recordSourceMappingEnd(this.statement); + emitter.emitJavascriptStatements(this.thenBod, true); + if(this.elseBod) { + if(this.elseBod.nodeType === TypeScript.NodeType.If) { + emitter.writeToOutput(" else "); + this.elseBod.emit(emitter, tokenId, false); + } else { + emitter.writeToOutput(" else"); + emitter.emitJavascriptStatements(this.elseBod, true); + } + } + emitter.setInObjectLiteral(temp); + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + IfStatement.prototype.typeCheck = function (typeFlow) { + return typeFlow.typeCheckIf(this); + }; + IfStatement.prototype.addToControlFlow = function (context) { + this.cond.addToControlFlow(context); + var afterIf = new TypeScript.BasicBlock(); + var beforeIf = context.current; + context.pushStatement(this, beforeIf, afterIf); + var hasContinuation = false; + context.current = new TypeScript.BasicBlock(); + beforeIf.addSuccessor(context.current); + context.walk(this.thenBod, this); + if(!context.noContinuation) { + hasContinuation = true; + context.current.addSuccessor(afterIf); + } + if(this.elseBod) { + context.current = new TypeScript.BasicBlock(); + context.noContinuation = false; + beforeIf.addSuccessor(context.current); + context.walk(this.elseBod, this); + if(!context.noContinuation) { + hasContinuation = true; + context.current.addSuccessor(afterIf); + } else { + if(hasContinuation) { + context.noContinuation = false; + } + } + } else { + beforeIf.addSuccessor(afterIf); + context.noContinuation = false; + hasContinuation = true; + } + var targetInfo = context.popStatement(); + if(afterIf.predecessors.length > 0) { + context.noContinuation = false; + hasContinuation = true; + } + if(hasContinuation) { + context.current = afterIf; + } + context.walker.options.goChildren = false; + }; + return IfStatement; + })(Statement); + TypeScript.IfStatement = IfStatement; + var ReturnStatement = (function (_super) { + __extends(ReturnStatement, _super); + function ReturnStatement() { + _super.call(this, TypeScript.NodeType.Return); + this.returnExpression = null; + } + ReturnStatement.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + var temp = emitter.setInObjectLiteral(false); + if(this.returnExpression) { + emitter.writeToOutput("return "); + emitter.emitJavascript(this.returnExpression, TypeScript.TokenID.Semicolon, false); + if(this.returnExpression.nodeType === TypeScript.NodeType.FuncDecl) { + emitter.writeToOutput(";"); + } + } else { + emitter.writeToOutput("return;"); + } + emitter.setInObjectLiteral(temp); + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + ReturnStatement.prototype.addToControlFlow = function (context) { + _super.prototype.addToControlFlow.call(this, context); + context.returnStmt(); + }; + ReturnStatement.prototype.typeCheck = function (typeFlow) { + return typeFlow.typeCheckReturn(this); + }; + return ReturnStatement; + })(Statement); + TypeScript.ReturnStatement = ReturnStatement; + var EndCode = (function (_super) { + __extends(EndCode, _super); + function EndCode() { + _super.call(this, TypeScript.NodeType.EndCode); + } + return EndCode; + })(AST); + TypeScript.EndCode = EndCode; + var ForInStatement = (function (_super) { + __extends(ForInStatement, _super); + function ForInStatement(lval, obj) { + _super.call(this, TypeScript.NodeType.ForIn); + this.lval = lval; + this.obj = obj; + this.statement = new ASTSpan(); + if(this.lval && (this.lval.nodeType == TypeScript.NodeType.VarDecl)) { + (this.lval).varFlags |= TypeScript.VarFlags.AutoInit; + } + } + ForInStatement.prototype.isLoop = function () { + return true; + }; + ForInStatement.prototype.isFiltered = function () { + if(this.body) { + var singleItem = null; + if(this.body.nodeType == TypeScript.NodeType.List) { + var stmts = this.body; + if(stmts.members.length == 1) { + singleItem = stmts.members[0]; + } + } else { + singleItem = this.body; + } + if(singleItem !== null) { + if(singleItem.nodeType == TypeScript.NodeType.Block) { + var block = singleItem; + if((block.statements !== null) && (block.statements.members.length == 1)) { + singleItem = block.statements.members[0]; + } + } + if(singleItem.nodeType == TypeScript.NodeType.If) { + var cond = (singleItem).cond; + if(cond.nodeType == TypeScript.NodeType.Call) { + var target = (cond).target; + if(target.nodeType == TypeScript.NodeType.Dot) { + var binex = target; + if((binex.operand1.nodeType == TypeScript.NodeType.Name) && (this.obj.nodeType == TypeScript.NodeType.Name) && ((binex.operand1).actualText == (this.obj).actualText)) { + var prop = binex.operand2; + if(prop.actualText == "hasOwnProperty") { + var args = (cond).arguments; + if((args !== null) && (args.members.length == 1)) { + var arg = args.members[0]; + if((arg.nodeType == TypeScript.NodeType.Name) && (this.lval.nodeType == TypeScript.NodeType.Name)) { + if(((this.lval).actualText) == (arg).actualText) { + return true; + } + } + } + } + } + } + } + } + } + } + return false; + }; + ForInStatement.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + var temp = emitter.setInObjectLiteral(false); + emitter.recordSourceMappingStart(this.statement); + emitter.writeToOutput("for("); + emitter.emitJavascript(this.lval, TypeScript.TokenID.For, false); + emitter.writeToOutput(" in "); + emitter.emitJavascript(this.obj, TypeScript.TokenID.For, false); + emitter.writeToOutput(")"); + emitter.recordSourceMappingEnd(this.statement); + emitter.emitJavascriptStatements(this.body, true); + emitter.setInObjectLiteral(temp); + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + ForInStatement.prototype.typeCheck = function (typeFlow) { + if(typeFlow.checker.styleSettings.forin) { + if(!this.isFiltered()) { + typeFlow.checker.errorReporter.styleError(this, "no hasOwnProperty filter"); + } + } + return typeFlow.typeCheckForIn(this); + }; + ForInStatement.prototype.addToControlFlow = function (context) { + if(this.lval) { + context.addContent(this.lval); + } + if(this.obj) { + context.addContent(this.obj); + } + var loopHeader = context.current; + var loopStart = new TypeScript.BasicBlock(); + var afterLoop = new TypeScript.BasicBlock(); + loopHeader.addSuccessor(loopStart); + context.current = loopStart; + if(this.body) { + context.pushStatement(this, loopStart, afterLoop); + context.walk(this.body, this); + context.popStatement(); + } + if(!(context.noContinuation)) { + var loopEnd = context.current; + loopEnd.addSuccessor(loopStart); + } + context.current = afterLoop; + context.noContinuation = false; + loopHeader.addSuccessor(afterLoop); + context.walker.options.goChildren = false; + }; + return ForInStatement; + })(Statement); + TypeScript.ForInStatement = ForInStatement; + var ForStatement = (function (_super) { + __extends(ForStatement, _super); + function ForStatement(init) { + _super.call(this, TypeScript.NodeType.For); + this.init = init; + } + ForStatement.prototype.isLoop = function () { + return true; + }; + ForStatement.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + var temp = emitter.setInObjectLiteral(false); + emitter.writeToOutput("for("); + if(this.init) { + if(this.init.nodeType != TypeScript.NodeType.List) { + emitter.emitJavascript(this.init, TypeScript.TokenID.For, false); + } else { + emitter.setInVarBlock((this.init).members.length); + emitter.emitJavascriptList(this.init, null, TypeScript.TokenID.For, false, false, false); + } + } + emitter.writeToOutput("; "); + emitter.emitJavascript(this.cond, TypeScript.TokenID.For, false); + emitter.writeToOutput("; "); + emitter.emitJavascript(this.incr, TypeScript.TokenID.For, false); + emitter.writeToOutput(")"); + emitter.emitJavascriptStatements(this.body, true); + emitter.setInObjectLiteral(temp); + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + ForStatement.prototype.typeCheck = function (typeFlow) { + return typeFlow.typeCheckFor(this); + }; + ForStatement.prototype.addToControlFlow = function (context) { + if(this.init) { + context.addContent(this.init); + } + var loopHeader = context.current; + var loopStart = new TypeScript.BasicBlock(); + var afterLoop = new TypeScript.BasicBlock(); + loopHeader.addSuccessor(loopStart); + context.current = loopStart; + var condBlock = null; + var continueTarget = loopStart; + var incrBB = null; + if(this.incr) { + incrBB = new TypeScript.BasicBlock(); + continueTarget = incrBB; + } + if(this.cond) { + condBlock = context.current; + context.addContent(this.cond); + context.current = new TypeScript.BasicBlock(); + condBlock.addSuccessor(context.current); + } + var targetInfo = null; + if(this.body) { + context.pushStatement(this, continueTarget, afterLoop); + context.walk(this.body, this); + targetInfo = context.popStatement(); + } + if(this.incr) { + if(context.noContinuation) { + if(incrBB.predecessors.length == 0) { + context.addUnreachable(this.incr); + } + } else { + context.current.addSuccessor(incrBB); + context.current = incrBB; + context.addContent(this.incr); + } + } + var loopEnd = context.current; + if(!(context.noContinuation)) { + loopEnd.addSuccessor(loopStart); + } + if(condBlock) { + condBlock.addSuccessor(afterLoop); + context.noContinuation = false; + } + if(afterLoop.predecessors.length > 0) { + context.noContinuation = false; + context.current = afterLoop; + } + context.walker.options.goChildren = false; + }; + return ForStatement; + })(Statement); + TypeScript.ForStatement = ForStatement; + var WithStatement = (function (_super) { + __extends(WithStatement, _super); + function WithStatement(expr) { + _super.call(this, TypeScript.NodeType.With); + this.expr = expr; + this.withSym = null; + } + WithStatement.prototype.isCompoundStatement = function () { + return true; + }; + WithStatement.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + emitter.writeToOutput("with ("); + if(this.expr) { + emitter.emitJavascript(this.expr, TypeScript.TokenID.With, false); + } + emitter.writeToOutput(")"); + emitter.emitJavascriptStatements(this.body, true); + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + WithStatement.prototype.typeCheck = function (typeFlow) { + return typeFlow.typeCheckWith(this); + }; + return WithStatement; + })(Statement); + TypeScript.WithStatement = WithStatement; + var SwitchStatement = (function (_super) { + __extends(SwitchStatement, _super); + function SwitchStatement(val) { + _super.call(this, TypeScript.NodeType.Switch); + this.val = val; + this.defaultCase = null; + this.statement = new ASTSpan(); + } + SwitchStatement.prototype.isCompoundStatement = function () { + return true; + }; + SwitchStatement.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + var temp = emitter.setInObjectLiteral(false); + emitter.recordSourceMappingStart(this.statement); + emitter.writeToOutput("switch("); + emitter.emitJavascript(this.val, TypeScript.TokenID.Identifier, false); + emitter.writeToOutput(")"); + emitter.recordSourceMappingEnd(this.statement); + emitter.writeLineToOutput(" {"); + emitter.indenter.increaseIndent(); + var casesLen = this.caseList.members.length; + for(var i = 0; i < casesLen; i++) { + var caseExpr = this.caseList.members[i]; + emitter.emitJavascript(caseExpr, TypeScript.TokenID.Case, true); + } + emitter.indenter.decreaseIndent(); + emitter.emitIndent(); + emitter.writeToOutput("}"); + emitter.setInObjectLiteral(temp); + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + SwitchStatement.prototype.typeCheck = function (typeFlow) { + var len = this.caseList.members.length; + this.val = typeFlow.typeCheck(this.val); + for(var i = 0; i < len; i++) { + this.caseList.members[i] = typeFlow.typeCheck(this.caseList.members[i]); + } + this.defaultCase = typeFlow.typeCheck(this.defaultCase); + this.type = typeFlow.voidType; + return this; + }; + SwitchStatement.prototype.addToControlFlow = function (context) { + var condBlock = context.current; + context.addContent(this.val); + var execBlock = new TypeScript.BasicBlock(); + var afterSwitch = new TypeScript.BasicBlock(); + condBlock.addSuccessor(execBlock); + context.pushSwitch(execBlock); + context.current = execBlock; + context.pushStatement(this, execBlock, afterSwitch); + context.walk(this.caseList, this); + context.popSwitch(); + var targetInfo = context.popStatement(); + var hasCondContinuation = (this.defaultCase == null); + if(this.defaultCase == null) { + condBlock.addSuccessor(afterSwitch); + } + if(afterSwitch.predecessors.length > 0) { + context.noContinuation = false; + context.current = afterSwitch; + } else { + context.noContinuation = true; + } + context.walker.options.goChildren = false; + }; + return SwitchStatement; + })(Statement); + TypeScript.SwitchStatement = SwitchStatement; + var CaseStatement = (function (_super) { + __extends(CaseStatement, _super); + function CaseStatement() { + _super.call(this, TypeScript.NodeType.Case); + this.expr = null; + } + CaseStatement.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + if(this.expr) { + emitter.writeToOutput("case "); + emitter.emitJavascript(this.expr, TypeScript.TokenID.Identifier, false); + } else { + emitter.writeToOutput("default"); + } + emitter.writeToOutput(":"); + if(this.body.members.length == 1 && this.body.members[0].nodeType == TypeScript.NodeType.Block) { + emitter.emitJavascriptStatements(this.body, false); + } else { + emitter.writeLineToOutput(""); + emitter.indenter.increaseIndent(); + emitter.emitBareJavascriptStatements(this.body); + emitter.indenter.decreaseIndent(); + } + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + CaseStatement.prototype.typeCheck = function (typeFlow) { + this.expr = typeFlow.typeCheck(this.expr); + typeFlow.typeCheck(this.body); + this.type = typeFlow.voidType; + return this; + }; + CaseStatement.prototype.addToControlFlow = function (context) { + var execBlock = new TypeScript.BasicBlock(); + var sw = context.currentSwitch[context.currentSwitch.length - 1]; + if(this.expr) { + var exprBlock = new TypeScript.BasicBlock(); + context.current = exprBlock; + sw.addSuccessor(exprBlock); + context.addContent(this.expr); + exprBlock.addSuccessor(execBlock); + } else { + sw.addSuccessor(execBlock); + } + context.current = execBlock; + if(this.body) { + context.walk(this.body, this); + } + context.noContinuation = false; + context.walker.options.goChildren = false; + }; + return CaseStatement; + })(Statement); + TypeScript.CaseStatement = CaseStatement; + var TypeReference = (function (_super) { + __extends(TypeReference, _super); + function TypeReference(term, arrayCount) { + _super.call(this, TypeScript.NodeType.TypeRef); + this.term = term; + this.arrayCount = arrayCount; + } + TypeReference.prototype.emit = function (emitter, tokenId, startLine) { + throw new Error("should not emit a type ref"); + }; + TypeReference.prototype.typeCheck = function (typeFlow) { + var prevInTCTR = typeFlow.inTypeRefTypeCheck; + typeFlow.inTypeRefTypeCheck = true; + var typeLink = TypeScript.getTypeLink(this, typeFlow.checker, true); + typeFlow.checker.resolveTypeLink(typeFlow.scope, typeLink, false); + if(this.term) { + typeFlow.typeCheck(this.term); + } + typeFlow.checkForVoidConstructor(typeLink.type, this); + this.type = typeLink.type; + if(this.term) { + this.term.type = this.type; + } + typeFlow.inTypeRefTypeCheck = prevInTCTR; + return this; + }; + return TypeReference; + })(AST); + TypeScript.TypeReference = TypeReference; + var TryFinally = (function (_super) { + __extends(TryFinally, _super); + function TryFinally(tryNode, finallyNode) { + _super.call(this, TypeScript.NodeType.TryFinally); + this.tryNode = tryNode; + this.finallyNode = finallyNode; + } + TryFinally.prototype.isCompoundStatement = function () { + return true; + }; + TryFinally.prototype.emit = function (emitter, tokenId, startLine) { + emitter.recordSourceMappingStart(this); + emitter.emitJavascript(this.tryNode, TypeScript.TokenID.Try, false); + emitter.emitJavascript(this.finallyNode, TypeScript.TokenID.Finally, false); + emitter.recordSourceMappingEnd(this); + }; + TryFinally.prototype.typeCheck = function (typeFlow) { + this.tryNode = typeFlow.typeCheck(this.tryNode); + this.finallyNode = typeFlow.typeCheck(this.finallyNode); + this.type = typeFlow.voidType; + return this; + }; + TryFinally.prototype.addToControlFlow = function (context) { + var afterFinally = new TypeScript.BasicBlock(); + context.walk(this.tryNode, this); + var finBlock = new TypeScript.BasicBlock(); + if(context.current) { + context.current.addSuccessor(finBlock); + } + context.current = finBlock; + context.pushStatement(this, null, afterFinally); + context.walk(this.finallyNode, this); + if(!context.noContinuation && context.current) { + context.current.addSuccessor(afterFinally); + } + if(afterFinally.predecessors.length > 0) { + context.current = afterFinally; + } else { + context.noContinuation = true; + } + context.popStatement(); + context.walker.options.goChildren = false; + }; + return TryFinally; + })(Statement); + TypeScript.TryFinally = TryFinally; + var TryCatch = (function (_super) { + __extends(TryCatch, _super); + function TryCatch(tryNode, catchNode) { + _super.call(this, TypeScript.NodeType.TryCatch); + this.tryNode = tryNode; + this.catchNode = catchNode; + } + TryCatch.prototype.isCompoundStatement = function () { + return true; + }; + TryCatch.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + emitter.emitJavascript(this.tryNode, TypeScript.TokenID.Try, false); + emitter.emitJavascript(this.catchNode, TypeScript.TokenID.Catch, false); + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + TryCatch.prototype.addToControlFlow = function (context) { + var beforeTry = context.current; + var tryBlock = new TypeScript.BasicBlock(); + beforeTry.addSuccessor(tryBlock); + context.current = tryBlock; + var afterTryCatch = new TypeScript.BasicBlock(); + context.pushStatement(this, null, afterTryCatch); + context.walk(this.tryNode, this); + if(!context.noContinuation) { + if(context.current) { + context.current.addSuccessor(afterTryCatch); + } + } + context.current = new TypeScript.BasicBlock(); + beforeTry.addSuccessor(context.current); + context.walk(this.catchNode, this); + context.popStatement(); + if(!context.noContinuation) { + if(context.current) { + context.current.addSuccessor(afterTryCatch); + } + } + context.current = afterTryCatch; + context.walker.options.goChildren = false; + }; + TryCatch.prototype.typeCheck = function (typeFlow) { + this.tryNode = typeFlow.typeCheck(this.tryNode); + this.catchNode = typeFlow.typeCheck(this.catchNode); + this.type = typeFlow.voidType; + return this; + }; + return TryCatch; + })(Statement); + TypeScript.TryCatch = TryCatch; + var Try = (function (_super) { + __extends(Try, _super); + function Try(body) { + _super.call(this, TypeScript.NodeType.Try); + this.body = body; + } + Try.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + emitter.writeToOutput("try "); + emitter.emitJavascript(this.body, TypeScript.TokenID.Try, false); + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + Try.prototype.typeCheck = function (typeFlow) { + this.body = typeFlow.typeCheck(this.body); + return this; + }; + Try.prototype.addToControlFlow = function (context) { + if(this.body) { + context.walk(this.body, this); + } + context.walker.options.goChildren = false; + context.noContinuation = false; + }; + return Try; + })(Statement); + TypeScript.Try = Try; + var Catch = (function (_super) { + __extends(Catch, _super); + function Catch(param, body) { + _super.call(this, TypeScript.NodeType.Catch); + this.param = param; + this.body = body; + this.statement = new ASTSpan(); + this.containedScope = null; + if(this.param) { + this.param.varFlags |= TypeScript.VarFlags.AutoInit; + } + } + Catch.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + emitter.writeToOutput(" "); + emitter.recordSourceMappingStart(this.statement); + emitter.writeToOutput("catch ("); + emitter.emitJavascript(this.param, TypeScript.TokenID.OpenParen, false); + emitter.writeToOutput(")"); + emitter.recordSourceMappingEnd(this.statement); + emitter.emitJavascript(this.body, TypeScript.TokenID.Catch, false); + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + Catch.prototype.addToControlFlow = function (context) { + if(this.param) { + context.addContent(this.param); + var bodBlock = new TypeScript.BasicBlock(); + context.current.addSuccessor(bodBlock); + context.current = bodBlock; + } + if(this.body) { + context.walk(this.body, this); + } + context.noContinuation = false; + context.walker.options.goChildren = false; + }; + Catch.prototype.typeCheck = function (typeFlow) { + var prevScope = typeFlow.scope; + typeFlow.scope = this.containedScope; + this.param = typeFlow.typeCheck(this.param); + var exceptVar = new TypeScript.ValueLocation(); + var varSym = new TypeScript.VariableSymbol((this.param).id.text, this.param.minChar, typeFlow.checker.locationInfo.unitIndex, exceptVar); + exceptVar.symbol = varSym; + exceptVar.typeLink = new TypeScript.TypeLink(); + exceptVar.typeLink.type = typeFlow.anyType; + var thisFnc = typeFlow.thisFnc; + if(thisFnc && thisFnc.type) { + exceptVar.symbol.container = thisFnc.type.symbol; + } else { + exceptVar.symbol.container = null; + } + this.param.sym = exceptVar.symbol; + typeFlow.scope.enter(exceptVar.symbol.container, this.param, exceptVar.symbol, typeFlow.checker.errorReporter, false, false, false); + this.body = typeFlow.typeCheck(this.body); + if(typeFlow.checker.inProvisionalTypecheckMode()) { + var table = typeFlow.scope.getTable(); + (table).secondaryTable.table[exceptVar.symbol.name] = undefined; + } + this.type = typeFlow.voidType; + typeFlow.scope = prevScope; + return this; + }; + return Catch; + })(Statement); + TypeScript.Catch = Catch; + var Finally = (function (_super) { + __extends(Finally, _super); + function Finally(body) { + _super.call(this, TypeScript.NodeType.Finally); + this.body = body; + } + Finally.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + emitter.writeToOutput("finally"); + emitter.emitJavascript(this.body, TypeScript.TokenID.Finally, false); + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + Finally.prototype.addToControlFlow = function (context) { + if(this.body) { + context.walk(this.body, this); + } + context.walker.options.goChildren = false; + context.noContinuation = false; + }; + Finally.prototype.typeCheck = function (typeFlow) { + this.body = typeFlow.typeCheck(this.body); + return this; + }; + return Finally; + })(Statement); + TypeScript.Finally = Finally; + var Comment = (function (_super) { + __extends(Comment, _super); + function Comment(content, isBlockComment, endsLine) { + _super.call(this, TypeScript.NodeType.Comment); + this.content = content; + this.isBlockComment = isBlockComment; + this.endsLine = endsLine; + this.text = null; + this.docCommentText = null; + } + Comment.prototype.getText = function () { + if(this.text == null) { + if(this.isBlockComment) { + this.text = this.content.split("\n"); + for(var i = 0; i < this.text.length; i++) { + this.text[i] = this.text[i].replace(/^\s+|\s+$/g, ''); + } + } else { + this.text = [ + (this.content.replace(/^\s+|\s+$/g, '')) + ]; + } + } + return this.text; + }; + Comment.prototype.isDocComment = function () { + if(this.isBlockComment) { + return this.content.charAt(2) == "*"; + } + return false; + }; + Comment.prototype.getDocCommentText = function () { + if(this.docCommentText == null) { + this.docCommentText = Comment.cleanJSDocComment(this.content); + } + return this.docCommentText; + }; + Comment.consumeLeadingSpace = function consumeLeadingSpace(line, startIndex, maxSpacesToRemove) { + var endIndex = line.length; + if(maxSpacesToRemove != undefined) { + endIndex = TypeScript.min(startIndex + maxSpacesToRemove, endIndex); + } + for(; startIndex < endIndex; startIndex++) { + var charCode = line.charCodeAt(startIndex); + if(charCode != TypeScript.LexCodeSpace && charCode != TypeScript.LexCodeTAB) { + return startIndex; + } + } + if(endIndex != line.length) { + return endIndex; + } + return -1; + } + Comment.isSpaceChar = function isSpaceChar(line, index) { + var length = line.length; + if(index < length) { + var charCode = line.charCodeAt(index); + return charCode == TypeScript.LexCodeSpace || charCode == TypeScript.LexCodeTAB; + } + return index == length; + } + Comment.cleanDocCommentLine = function cleanDocCommentLine(line, jsDocStyleComment, jsDocLineSpaceToRemove) { + var nonSpaceIndex = Comment.consumeLeadingSpace(line, 0); + if(nonSpaceIndex != -1) { + var jsDocSpacesRemoved = nonSpaceIndex; + if(jsDocStyleComment && line.charAt(nonSpaceIndex) == '*') { + var startIndex = nonSpaceIndex + 1; + nonSpaceIndex = Comment.consumeLeadingSpace(line, startIndex, jsDocLineSpaceToRemove); + if(nonSpaceIndex != -1) { + jsDocSpacesRemoved = nonSpaceIndex - startIndex; + } else { + return null; + } + } + return { + minChar: nonSpaceIndex, + limChar: line.charAt(line.length - 1) == "\r" ? line.length - 1 : line.length, + jsDocSpacesRemoved: jsDocSpacesRemoved + }; + } + return null; + } + Comment.cleanJSDocComment = function cleanJSDocComment(content, spacesToRemove) { + var docCommentLines = []; + content = content.replace("/**", ""); + if(content.length >= 2 && content.charAt(content.length - 1) == "/" && content.charAt(content.length - 2) == "*") { + content = content.substring(0, content.length - 2); + } + var lines = content.split("\n"); + var inParamTag = false; + for(var l = 0; l < lines.length; l++) { + var line = lines[l]; + var cleanLinePos = Comment.cleanDocCommentLine(line, true, spacesToRemove); + if(!cleanLinePos) { + continue; + } + var docCommentText = ""; + var prevPos = cleanLinePos.minChar; + for(var i = line.indexOf("@", cleanLinePos.minChar); 0 <= i && i < cleanLinePos.limChar; i = line.indexOf("@", i + 1)) { + var wasInParamtag = inParamTag; + if(line.indexOf("param", i + 1) == i + 1 && Comment.isSpaceChar(line, i + 6)) { + if(!wasInParamtag) { + docCommentText += line.substring(prevPos, i); + } + prevPos = i; + inParamTag = true; + } else { + if(wasInParamtag) { + prevPos = i; + inParamTag = false; + } + } + } + if(!inParamTag) { + docCommentText += line.substring(prevPos, cleanLinePos.limChar); + } + var newCleanPos = Comment.cleanDocCommentLine(docCommentText, false); + if(newCleanPos) { + if(spacesToRemove == undefined) { + spacesToRemove = cleanLinePos.jsDocSpacesRemoved; + } + docCommentLines.push(docCommentText); + } + } + return docCommentLines.join("\n"); + } + Comment.getDocCommentText = function getDocCommentText(comments) { + var docCommentText = []; + for(var c = 0; c < comments.length; c++) { + var commentText = comments[c].getDocCommentText(); + if(commentText != "") { + docCommentText.push(commentText); + } + } + return docCommentText.join("\n"); + } + Comment.getParameterDocCommentText = function getParameterDocCommentText(param, fncDocComments) { + if(fncDocComments.length == 0 || !fncDocComments[0].isBlockComment) { + return ""; + } + for(var i = 0; i < fncDocComments.length; i++) { + var commentContents = fncDocComments[i].content; + for(var j = commentContents.indexOf("@param", 0); 0 <= j; j = commentContents.indexOf("@param", j)) { + j += 6; + if(!Comment.isSpaceChar(commentContents, j)) { + continue; + } + j = Comment.consumeLeadingSpace(commentContents, j); + if(j == -1) { + break; + } + if(commentContents.charCodeAt(j) == TypeScript.LexCodeLC) { + j++; + var charCode = 0; + for(var curlies = 1; j < commentContents.length; j++) { + charCode = commentContents.charCodeAt(j); + if(charCode == TypeScript.LexCodeLC) { + curlies++; + continue; + } + if(charCode == TypeScript.LexCodeRC) { + curlies--; + if(curlies == 0) { + break; + } else { + continue; + } + } + if(charCode == TypeScript.LexCodeAtSign) { + break; + } + } + if(j == commentContents.length) { + break; + } + if(charCode == TypeScript.LexCodeAtSign) { + continue; + } + j = Comment.consumeLeadingSpace(commentContents, j + 1); + if(j == -1) { + break; + } + } + if(param != commentContents.substr(j, param.length) || !Comment.isSpaceChar(commentContents, j + param.length)) { + continue; + } + j = Comment.consumeLeadingSpace(commentContents, j + param.length); + if(j == -1) { + return ""; + } + var endOfParam = commentContents.indexOf("@", j); + var paramHelpString = commentContents.substring(j, endOfParam < 0 ? commentContents.length : endOfParam); + var paramSpacesToRemove = undefined; + var paramLineIndex = commentContents.substring(0, j).lastIndexOf("\n") + 1; + if(paramLineIndex != 0) { + if(paramLineIndex < j && commentContents.charAt(paramLineIndex + 1) == "\r") { + paramLineIndex++; + } + } + var startSpaceRemovalIndex = Comment.consumeLeadingSpace(commentContents, paramLineIndex); + if(startSpaceRemovalIndex != j && commentContents.charAt(startSpaceRemovalIndex) == "*") { + paramSpacesToRemove = j - startSpaceRemovalIndex - 1; + } + return Comment.cleanJSDocComment(paramHelpString, paramSpacesToRemove); + } + } + return ""; + } + Comment.getDocCommentTextOfSignatures = function getDocCommentTextOfSignatures(signatures) { + var comments = []; + for(var i = 0; i < signatures.length; i++) { + var signatureDocComment = TypeScript.Comment.getDocCommentText(signatures[i].declAST.getDocComments()); + if(signatureDocComment != "") { + comments.push(signatureDocComment); + } + } + return comments.join("\n"); + } + return Comment; + })(AST); + TypeScript.Comment = Comment; + var DebuggerStatement = (function (_super) { + __extends(DebuggerStatement, _super); + function DebuggerStatement() { + _super.call(this, TypeScript.NodeType.Debugger); + } + DebuggerStatement.prototype.emit = function (emitter, tokenId, startLine) { + emitter.emitParensAndCommentsInPlace(this, true); + emitter.recordSourceMappingStart(this); + emitter.writeLineToOutput("debugger;"); + emitter.recordSourceMappingEnd(this); + emitter.emitParensAndCommentsInPlace(this, false); + }; + return DebuggerStatement; + })(Statement); + TypeScript.DebuggerStatement = DebuggerStatement; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + var AstWalkOptions = (function () { + function AstWalkOptions() { + this.goChildren = true; + this.goNextSibling = true; + this.reverseSiblings = false; + } + AstWalkOptions.prototype.stopWalk = function (stop) { + if (typeof stop === "undefined") { stop = true; } + this.goChildren = !stop; + this.goNextSibling = !stop; + }; + return AstWalkOptions; + })(); + TypeScript.AstWalkOptions = AstWalkOptions; + var AstWalker = (function () { + function AstWalker(childrenWalkers, pre, post, options, state) { + this.childrenWalkers = childrenWalkers; + this.pre = pre; + this.post = post; + this.options = options; + this.state = state; + } + AstWalker.prototype.walk = function (ast, parent) { + var preAst = this.pre(ast, parent, this); + if(preAst === undefined) { + preAst = ast; + } + if(this.options.goChildren) { + var svGoSib = this.options.goNextSibling; + this.options.goNextSibling = true; + this.childrenWalkers[ast.nodeType](ast, parent, this); + this.options.goNextSibling = svGoSib; + } else { + this.options.goChildren = true; + } + if(this.post) { + var postAst = this.post(preAst, parent, this); + if(postAst === undefined) { + postAst = preAst; + } + return postAst; + } else { + return preAst; + } + }; + return AstWalker; + })(); + var AstWalkerFactory = (function () { + function AstWalkerFactory() { + this.childrenWalkers = []; + this.initChildrenWalkers(); + } + AstWalkerFactory.prototype.walk = function (ast, pre, post, options, state) { + return this.getWalker(pre, post, options, state).walk(ast, null); + }; + AstWalkerFactory.prototype.getWalker = function (pre, post, options, state) { + return this.getSlowWalker(pre, post, options, state); + }; + AstWalkerFactory.prototype.getSlowWalker = function (pre, post, options, state) { + if(!options) { + options = new AstWalkOptions(); + } + return new AstWalker(this.childrenWalkers, pre, post, options, state); + }; + AstWalkerFactory.prototype.initChildrenWalkers = function () { + this.childrenWalkers[TypeScript.NodeType.None] = ChildrenWalkers.walkNone; + this.childrenWalkers[TypeScript.NodeType.Empty] = ChildrenWalkers.walkNone; + this.childrenWalkers[TypeScript.NodeType.EmptyExpr] = ChildrenWalkers.walkNone; + this.childrenWalkers[TypeScript.NodeType.True] = ChildrenWalkers.walkNone; + this.childrenWalkers[TypeScript.NodeType.False] = ChildrenWalkers.walkNone; + this.childrenWalkers[TypeScript.NodeType.This] = ChildrenWalkers.walkNone; + this.childrenWalkers[TypeScript.NodeType.Super] = ChildrenWalkers.walkNone; + this.childrenWalkers[TypeScript.NodeType.QString] = ChildrenWalkers.walkNone; + this.childrenWalkers[TypeScript.NodeType.Regex] = ChildrenWalkers.walkNone; + this.childrenWalkers[TypeScript.NodeType.Null] = ChildrenWalkers.walkNone; + this.childrenWalkers[TypeScript.NodeType.ArrayLit] = ChildrenWalkers.walkUnaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.ObjectLit] = ChildrenWalkers.walkUnaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Void] = ChildrenWalkers.walkUnaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Comma] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Pos] = ChildrenWalkers.walkUnaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Neg] = ChildrenWalkers.walkUnaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Delete] = ChildrenWalkers.walkUnaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Await] = ChildrenWalkers.walkUnaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.In] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Dot] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.From] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Is] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.InstOf] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Typeof] = ChildrenWalkers.walkUnaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.NumberLit] = ChildrenWalkers.walkNone; + this.childrenWalkers[TypeScript.NodeType.Name] = ChildrenWalkers.walkNone; + this.childrenWalkers[TypeScript.NodeType.TypeRef] = ChildrenWalkers.walkTypeReferenceChildren; + this.childrenWalkers[TypeScript.NodeType.Index] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Call] = ChildrenWalkers.walkCallExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.New] = ChildrenWalkers.walkCallExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Asg] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.AsgAdd] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.AsgSub] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.AsgDiv] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.AsgMul] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.AsgMod] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.AsgAnd] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.AsgXor] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.AsgOr] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.AsgLsh] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.AsgRsh] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.AsgRs2] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.ConditionalExpression] = ChildrenWalkers.walkTrinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.LogOr] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.LogAnd] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Or] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Xor] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.And] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Eq] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Ne] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Eqv] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.NEqv] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Lt] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Le] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Gt] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Ge] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Add] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Sub] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Mul] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Div] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Mod] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Lsh] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Rsh] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Rs2] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.Not] = ChildrenWalkers.walkUnaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.LogNot] = ChildrenWalkers.walkUnaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.IncPre] = ChildrenWalkers.walkUnaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.DecPre] = ChildrenWalkers.walkUnaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.IncPost] = ChildrenWalkers.walkUnaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.DecPost] = ChildrenWalkers.walkUnaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.TypeAssertion] = ChildrenWalkers.walkUnaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.FuncDecl] = ChildrenWalkers.walkFuncDeclChildren; + this.childrenWalkers[TypeScript.NodeType.Member] = ChildrenWalkers.walkBinaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.VarDecl] = ChildrenWalkers.walkBoundDeclChildren; + this.childrenWalkers[TypeScript.NodeType.ArgDecl] = ChildrenWalkers.walkBoundDeclChildren; + this.childrenWalkers[TypeScript.NodeType.Return] = ChildrenWalkers.walkReturnStatementChildren; + this.childrenWalkers[TypeScript.NodeType.Break] = ChildrenWalkers.walkNone; + this.childrenWalkers[TypeScript.NodeType.Continue] = ChildrenWalkers.walkNone; + this.childrenWalkers[TypeScript.NodeType.Throw] = ChildrenWalkers.walkUnaryExpressionChildren; + this.childrenWalkers[TypeScript.NodeType.For] = ChildrenWalkers.walkForStatementChildren; + this.childrenWalkers[TypeScript.NodeType.ForIn] = ChildrenWalkers.walkForInStatementChildren; + this.childrenWalkers[TypeScript.NodeType.If] = ChildrenWalkers.walkIfStatementChildren; + this.childrenWalkers[TypeScript.NodeType.While] = ChildrenWalkers.walkWhileStatementChildren; + this.childrenWalkers[TypeScript.NodeType.DoWhile] = ChildrenWalkers.walkDoWhileStatementChildren; + this.childrenWalkers[TypeScript.NodeType.Block] = ChildrenWalkers.walkBlockChildren; + this.childrenWalkers[TypeScript.NodeType.Case] = ChildrenWalkers.walkCaseStatementChildren; + this.childrenWalkers[TypeScript.NodeType.Switch] = ChildrenWalkers.walkSwitchStatementChildren; + this.childrenWalkers[TypeScript.NodeType.Try] = ChildrenWalkers.walkTryChildren; + this.childrenWalkers[TypeScript.NodeType.TryCatch] = ChildrenWalkers.walkTryCatchChildren; + this.childrenWalkers[TypeScript.NodeType.TryFinally] = ChildrenWalkers.walkTryFinallyChildren; + this.childrenWalkers[TypeScript.NodeType.Finally] = ChildrenWalkers.walkFinallyChildren; + this.childrenWalkers[TypeScript.NodeType.Catch] = ChildrenWalkers.walkCatchChildren; + this.childrenWalkers[TypeScript.NodeType.List] = ChildrenWalkers.walkListChildren; + this.childrenWalkers[TypeScript.NodeType.Script] = ChildrenWalkers.walkScriptChildren; + this.childrenWalkers[TypeScript.NodeType.ClassDeclaration] = ChildrenWalkers.walkClassDeclChildren; + this.childrenWalkers[TypeScript.NodeType.InterfaceDeclaration] = ChildrenWalkers.walkTypeDeclChildren; + this.childrenWalkers[TypeScript.NodeType.ModuleDeclaration] = ChildrenWalkers.walkModuleDeclChildren; + this.childrenWalkers[TypeScript.NodeType.ImportDeclaration] = ChildrenWalkers.walkImportDeclChildren; + this.childrenWalkers[TypeScript.NodeType.With] = ChildrenWalkers.walkWithStatementChildren; + this.childrenWalkers[TypeScript.NodeType.Label] = ChildrenWalkers.walkLabelChildren; + this.childrenWalkers[TypeScript.NodeType.LabeledStatement] = ChildrenWalkers.walkLabeledStatementChildren; + this.childrenWalkers[TypeScript.NodeType.EBStart] = ChildrenWalkers.walkNone; + this.childrenWalkers[TypeScript.NodeType.GotoEB] = ChildrenWalkers.walkNone; + this.childrenWalkers[TypeScript.NodeType.EndCode] = ChildrenWalkers.walkNone; + this.childrenWalkers[TypeScript.NodeType.Error] = ChildrenWalkers.walkNone; + this.childrenWalkers[TypeScript.NodeType.Comment] = ChildrenWalkers.walkNone; + this.childrenWalkers[TypeScript.NodeType.Debugger] = ChildrenWalkers.walkNone; + for(var e in (TypeScript.NodeType)._map) { + if((this.childrenWalkers)[e] === undefined) { + throw new Error("initWalkers function is not up to date with enum content!"); + } + } + }; + return AstWalkerFactory; + })(); + TypeScript.AstWalkerFactory = AstWalkerFactory; + var globalAstWalkerFactory; + function getAstWalkerFactory() { + if(!globalAstWalkerFactory) { + globalAstWalkerFactory = new AstWalkerFactory(); + } + return globalAstWalkerFactory; + } + TypeScript.getAstWalkerFactory = getAstWalkerFactory; + var ChildrenWalkers; + (function (ChildrenWalkers) { + function walkNone(preAst, parent, walker) { + } + ChildrenWalkers.walkNone = walkNone; + function walkListChildren(preAst, parent, walker) { + var len = preAst.members.length; + if(walker.options.reverseSiblings) { + for(var i = len - 1; i >= 0; i--) { + if(walker.options.goNextSibling) { + preAst.members[i] = walker.walk(preAst.members[i], preAst); + } + } + } else { + for(var i = 0; i < len; i++) { + if(walker.options.goNextSibling) { + preAst.members[i] = walker.walk(preAst.members[i], preAst); + } + } + } + } + ChildrenWalkers.walkListChildren = walkListChildren; + function walkUnaryExpressionChildren(preAst, parent, walker) { + if(preAst.castTerm) { + preAst.castTerm = walker.walk(preAst.castTerm, preAst); + } + if(preAst.operand) { + preAst.operand = walker.walk(preAst.operand, preAst); + } + } + ChildrenWalkers.walkUnaryExpressionChildren = walkUnaryExpressionChildren; + function walkBinaryExpressionChildren(preAst, parent, walker) { + if(walker.options.reverseSiblings) { + if(preAst.operand2) { + preAst.operand2 = walker.walk(preAst.operand2, preAst); + } + if((preAst.operand1) && (walker.options.goNextSibling)) { + preAst.operand1 = walker.walk(preAst.operand1, preAst); + } + } else { + if(preAst.operand1) { + preAst.operand1 = walker.walk(preAst.operand1, preAst); + } + if((preAst.operand2) && (walker.options.goNextSibling)) { + preAst.operand2 = walker.walk(preAst.operand2, preAst); + } + } + } + ChildrenWalkers.walkBinaryExpressionChildren = walkBinaryExpressionChildren; + function walkTypeReferenceChildren(preAst, parent, walker) { + if(preAst.term) { + preAst.term = walker.walk(preAst.term, preAst); + } + } + ChildrenWalkers.walkTypeReferenceChildren = walkTypeReferenceChildren; + function walkCallExpressionChildren(preAst, parent, walker) { + if(!walker.options.reverseSiblings) { + preAst.target = walker.walk(preAst.target, preAst); + } + if(preAst.arguments && (walker.options.goNextSibling)) { + preAst.arguments = walker.walk(preAst.arguments, preAst); + } + if((walker.options.reverseSiblings) && (walker.options.goNextSibling)) { + preAst.target = walker.walk(preAst.target, preAst); + } + } + ChildrenWalkers.walkCallExpressionChildren = walkCallExpressionChildren; + function walkTrinaryExpressionChildren(preAst, parent, walker) { + if(preAst.operand1) { + preAst.operand1 = walker.walk(preAst.operand1, preAst); + } + if(preAst.operand2 && (walker.options.goNextSibling)) { + preAst.operand2 = walker.walk(preAst.operand2, preAst); + } + if(preAst.operand3 && (walker.options.goNextSibling)) { + preAst.operand3 = walker.walk(preAst.operand3, preAst); + } + } + ChildrenWalkers.walkTrinaryExpressionChildren = walkTrinaryExpressionChildren; + function walkFuncDeclChildren(preAst, parent, walker) { + if(preAst.name) { + preAst.name = walker.walk(preAst.name, preAst); + } + if(preAst.arguments && (preAst.arguments.members.length > 0) && (walker.options.goNextSibling)) { + preAst.arguments = walker.walk(preAst.arguments, preAst); + } + if(preAst.returnTypeAnnotation && (walker.options.goNextSibling)) { + preAst.returnTypeAnnotation = walker.walk(preAst.returnTypeAnnotation, preAst); + } + if(preAst.bod && (preAst.bod.members.length > 0) && (walker.options.goNextSibling)) { + preAst.bod = walker.walk(preAst.bod, preAst); + } + } + ChildrenWalkers.walkFuncDeclChildren = walkFuncDeclChildren; + function walkBoundDeclChildren(preAst, parent, walker) { + if(preAst.id) { + preAst.id = walker.walk(preAst.id, preAst); + } + if(preAst.init) { + preAst.init = walker.walk(preAst.init, preAst); + } + if((preAst.typeExpr) && (walker.options.goNextSibling)) { + preAst.typeExpr = walker.walk(preAst.typeExpr, preAst); + } + } + ChildrenWalkers.walkBoundDeclChildren = walkBoundDeclChildren; + function walkReturnStatementChildren(preAst, parent, walker) { + if(preAst.returnExpression) { + preAst.returnExpression = walker.walk(preAst.returnExpression, preAst); + } + } + ChildrenWalkers.walkReturnStatementChildren = walkReturnStatementChildren; + function walkForStatementChildren(preAst, parent, walker) { + if(preAst.init) { + preAst.init = walker.walk(preAst.init, preAst); + } + if(preAst.cond && walker.options.goNextSibling) { + preAst.cond = walker.walk(preAst.cond, preAst); + } + if(preAst.incr && walker.options.goNextSibling) { + preAst.incr = walker.walk(preAst.incr, preAst); + } + if(preAst.body && walker.options.goNextSibling) { + preAst.body = walker.walk(preAst.body, preAst); + } + } + ChildrenWalkers.walkForStatementChildren = walkForStatementChildren; + function walkForInStatementChildren(preAst, parent, walker) { + preAst.lval = walker.walk(preAst.lval, preAst); + if(walker.options.goNextSibling) { + preAst.obj = walker.walk(preAst.obj, preAst); + } + if(preAst.body && (walker.options.goNextSibling)) { + preAst.body = walker.walk(preAst.body, preAst); + } + } + ChildrenWalkers.walkForInStatementChildren = walkForInStatementChildren; + function walkIfStatementChildren(preAst, parent, walker) { + preAst.cond = walker.walk(preAst.cond, preAst); + if(preAst.thenBod && (walker.options.goNextSibling)) { + preAst.thenBod = walker.walk(preAst.thenBod, preAst); + } + if(preAst.elseBod && (walker.options.goNextSibling)) { + preAst.elseBod = walker.walk(preAst.elseBod, preAst); + } + } + ChildrenWalkers.walkIfStatementChildren = walkIfStatementChildren; + function walkWhileStatementChildren(preAst, parent, walker) { + preAst.cond = walker.walk(preAst.cond, preAst); + if(preAst.body && (walker.options.goNextSibling)) { + preAst.body = walker.walk(preAst.body, preAst); + } + } + ChildrenWalkers.walkWhileStatementChildren = walkWhileStatementChildren; + function walkDoWhileStatementChildren(preAst, parent, walker) { + preAst.cond = walker.walk(preAst.cond, preAst); + if(preAst.body && (walker.options.goNextSibling)) { + preAst.body = walker.walk(preAst.body, preAst); + } + } + ChildrenWalkers.walkDoWhileStatementChildren = walkDoWhileStatementChildren; + function walkBlockChildren(preAst, parent, walker) { + if(preAst.statements) { + preAst.statements = walker.walk(preAst.statements, preAst); + } + } + ChildrenWalkers.walkBlockChildren = walkBlockChildren; + function walkCaseStatementChildren(preAst, parent, walker) { + if(preAst.expr) { + preAst.expr = walker.walk(preAst.expr, preAst); + } + if(preAst.body && walker.options.goNextSibling) { + preAst.body = walker.walk(preAst.body, preAst); + } + } + ChildrenWalkers.walkCaseStatementChildren = walkCaseStatementChildren; + function walkSwitchStatementChildren(preAst, parent, walker) { + if(preAst.val) { + preAst.val = walker.walk(preAst.val, preAst); + } + if((preAst.caseList) && walker.options.goNextSibling) { + preAst.caseList = walker.walk(preAst.caseList, preAst); + } + } + ChildrenWalkers.walkSwitchStatementChildren = walkSwitchStatementChildren; + function walkTryChildren(preAst, parent, walker) { + if(preAst.body) { + preAst.body = walker.walk(preAst.body, preAst); + } + } + ChildrenWalkers.walkTryChildren = walkTryChildren; + function walkTryCatchChildren(preAst, parent, walker) { + if(preAst.tryNode) { + preAst.tryNode = walker.walk(preAst.tryNode, preAst); + } + if((preAst.catchNode) && walker.options.goNextSibling) { + preAst.catchNode = walker.walk(preAst.catchNode, preAst); + } + } + ChildrenWalkers.walkTryCatchChildren = walkTryCatchChildren; + function walkTryFinallyChildren(preAst, parent, walker) { + if(preAst.tryNode) { + preAst.tryNode = walker.walk(preAst.tryNode, preAst); + } + if(preAst.finallyNode && walker.options.goNextSibling) { + preAst.finallyNode = walker.walk(preAst.finallyNode, preAst); + } + } + ChildrenWalkers.walkTryFinallyChildren = walkTryFinallyChildren; + function walkFinallyChildren(preAst, parent, walker) { + if(preAst.body) { + preAst.body = walker.walk(preAst.body, preAst); + } + } + ChildrenWalkers.walkFinallyChildren = walkFinallyChildren; + function walkCatchChildren(preAst, parent, walker) { + if(preAst.param) { + preAst.param = walker.walk(preAst.param, preAst); + } + if((preAst.body) && walker.options.goNextSibling) { + preAst.body = walker.walk(preAst.body, preAst); + } + } + ChildrenWalkers.walkCatchChildren = walkCatchChildren; + function walkRecordChildren(preAst, parent, walker) { + preAst.name = walker.walk(preAst.name, preAst); + if(walker.options.goNextSibling && preAst.members) { + preAst.members = walker.walk(preAst.members, preAst); + } + } + ChildrenWalkers.walkRecordChildren = walkRecordChildren; + function walkNamedTypeChildren(preAst, parent, walker) { + walkRecordChildren(preAst, parent, walker); + } + ChildrenWalkers.walkNamedTypeChildren = walkNamedTypeChildren; + function walkClassDeclChildren(preAst, parent, walker) { + walkNamedTypeChildren(preAst, parent, walker); + if(walker.options.goNextSibling && preAst.extendsList) { + preAst.extendsList = walker.walk(preAst.extendsList, preAst); + } + if(walker.options.goNextSibling && preAst.implementsList) { + preAst.implementsList = walker.walk(preAst.implementsList, preAst); + } + } + ChildrenWalkers.walkClassDeclChildren = walkClassDeclChildren; + function walkScriptChildren(preAst, parent, walker) { + if(preAst.bod) { + preAst.bod = walker.walk(preAst.bod, preAst); + } + } + ChildrenWalkers.walkScriptChildren = walkScriptChildren; + function walkTypeDeclChildren(preAst, parent, walker) { + walkNamedTypeChildren(preAst, parent, walker); + if(walker.options.goNextSibling && preAst.extendsList) { + preAst.extendsList = walker.walk(preAst.extendsList, preAst); + } + if(walker.options.goNextSibling && preAst.implementsList) { + preAst.implementsList = walker.walk(preAst.implementsList, preAst); + } + } + ChildrenWalkers.walkTypeDeclChildren = walkTypeDeclChildren; + function walkModuleDeclChildren(preAst, parent, walker) { + walkRecordChildren(preAst, parent, walker); + } + ChildrenWalkers.walkModuleDeclChildren = walkModuleDeclChildren; + function walkImportDeclChildren(preAst, parent, walker) { + if(preAst.id) { + preAst.id = walker.walk(preAst.id, preAst); + } + if(preAst.alias) { + preAst.alias = walker.walk(preAst.alias, preAst); + } + } + ChildrenWalkers.walkImportDeclChildren = walkImportDeclChildren; + function walkWithStatementChildren(preAst, parent, walker) { + if(preAst.expr) { + preAst.expr = walker.walk(preAst.expr, preAst); + } + if(preAst.body && walker.options.goNextSibling) { + preAst.body = walker.walk(preAst.body, preAst); + } + } + ChildrenWalkers.walkWithStatementChildren = walkWithStatementChildren; + function walkLabelChildren(preAst, parent, walker) { + } + ChildrenWalkers.walkLabelChildren = walkLabelChildren; + function walkLabeledStatementChildren(preAst, parent, walker) { + preAst.labels = walker.walk(preAst.labels, preAst); + if(walker.options.goNextSibling) { + preAst.stmt = walker.walk(preAst.stmt, preAst); + } + } + ChildrenWalkers.walkLabeledStatementChildren = walkLabeledStatementChildren; + })(ChildrenWalkers || (ChildrenWalkers = {})); +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + (function (AstWalkerWithDetailCallback) { + function walk(script, callback) { + var pre = function (cur, parent) { + walker.options.goChildren = AstWalkerCallback(true, cur, callback); + return cur; + }; + var post = function (cur, parent) { + AstWalkerCallback(false, cur, callback); + return cur; + }; + var walker = TypeScript.getAstWalkerFactory().getWalker(pre, post); + walker.walk(script, null); + } + AstWalkerWithDetailCallback.walk = walk; + function AstWalkerCallback(pre, ast, callback) { + var nodeType = ast.nodeType; + var callbackString = (TypeScript.NodeType)._map[nodeType] + "Callback"; + if(callback[callbackString]) { + return callback[callbackString](pre, ast); + } + if(callback.DefaultCallback) { + return callback.DefaultCallback(pre, ast); + } + return true; + } + })(TypeScript.AstWalkerWithDetailCallback || (TypeScript.AstWalkerWithDetailCallback = {})); + var AstWalkerWithDetailCallback = TypeScript.AstWalkerWithDetailCallback; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + function lastOf(items) { + return (items === null || items.length === 0) ? null : items[items.length - 1]; + } + TypeScript.lastOf = lastOf; + function max(a, b) { + return a >= b ? a : b; + } + TypeScript.max = max; + function min(a, b) { + return a <= b ? a : b; + } + TypeScript.min = min; + var AstPath = (function () { + function AstPath() { + this.asts = []; + this.top = -1; + } + AstPath.reverseIndexOf = function reverseIndexOf(items, index) { + return (items === null || items.length <= index) ? null : items[items.length - index - 1]; + } + AstPath.prototype.clone = function () { + var clone = new AstPath(); + clone.asts = this.asts.map(function (value) { + return value; + }); + clone.top = this.top; + return clone; + }; + AstPath.prototype.pop = function () { + var head = this.ast(); + this.up(); + while(this.asts.length > this.count()) { + this.asts.pop(); + } + return head; + }; + AstPath.prototype.push = function (ast) { + while(this.asts.length > this.count()) { + this.asts.pop(); + } + this.top = this.asts.length; + this.asts.push(ast); + }; + AstPath.prototype.up = function () { + if(this.top <= -1) { + throw new Error("Invalid call to 'up'"); + } + this.top--; + }; + AstPath.prototype.down = function () { + if(this.top == this.ast.length - 1) { + throw new Error("Invalid call to 'down'"); + } + this.top++; + }; + AstPath.prototype.nodeType = function () { + if(this.ast() == null) { + return TypeScript.NodeType.None; + } + return this.ast().nodeType; + }; + AstPath.prototype.ast = function () { + return AstPath.reverseIndexOf(this.asts, this.asts.length - (this.top + 1)); + }; + AstPath.prototype.parent = function () { + return AstPath.reverseIndexOf(this.asts, this.asts.length - this.top); + }; + AstPath.prototype.count = function () { + return this.top + 1; + }; + AstPath.prototype.get = function (index) { + return this.asts[index]; + }; + AstPath.prototype.isNameOfClass = function () { + if(this.ast() === null || this.parent() === null) { + return false; + } + return (this.ast().nodeType === TypeScript.NodeType.Name) && (this.parent().nodeType === TypeScript.NodeType.ClassDeclaration) && ((this.parent()).name === this.ast()); + }; + AstPath.prototype.isNameOfInterface = function () { + if(this.ast() === null || this.parent() === null) { + return false; + } + return (this.ast().nodeType === TypeScript.NodeType.Name) && (this.parent().nodeType === TypeScript.NodeType.InterfaceDeclaration) && ((this.parent()).name === this.ast()); + }; + AstPath.prototype.isNameOfArgument = function () { + if(this.ast() === null || this.parent() === null) { + return false; + } + return (this.ast().nodeType === TypeScript.NodeType.Name) && (this.parent().nodeType === TypeScript.NodeType.ArgDecl) && ((this.parent()).id === this.ast()); + }; + AstPath.prototype.isNameOfVariable = function () { + if(this.ast() === null || this.parent() === null) { + return false; + } + return (this.ast().nodeType === TypeScript.NodeType.Name) && (this.parent().nodeType === TypeScript.NodeType.VarDecl) && ((this.parent()).id === this.ast()); + }; + AstPath.prototype.isNameOfModule = function () { + if(this.ast() === null || this.parent() === null) { + return false; + } + return (this.ast().nodeType === TypeScript.NodeType.Name) && (this.parent().nodeType === TypeScript.NodeType.ModuleDeclaration) && ((this.parent()).name === this.ast()); + }; + AstPath.prototype.isNameOfFunction = function () { + if(this.ast() === null || this.parent() === null) { + return false; + } + return (this.ast().nodeType === TypeScript.NodeType.Name) && (this.parent().nodeType === TypeScript.NodeType.FuncDecl) && ((this.parent()).name === this.ast()); + }; + AstPath.prototype.isChildOfScript = function () { + var ast = lastOf(this.asts); + return this.count() >= 3 && this.asts[this.top] === ast && this.asts[this.top - 1].nodeType === TypeScript.NodeType.List && this.asts[this.top - 2].nodeType === TypeScript.NodeType.Script; + }; + AstPath.prototype.isChildOfModule = function () { + var ast = lastOf(this.asts); + return this.count() >= 3 && this.asts[this.top] === ast && this.asts[this.top - 1].nodeType === TypeScript.NodeType.List && this.asts[this.top - 2].nodeType === TypeScript.NodeType.ModuleDeclaration; + }; + AstPath.prototype.isChildOfClass = function () { + var ast = lastOf(this.asts); + return this.count() >= 3 && this.asts[this.top] === ast && this.asts[this.top - 1].nodeType === TypeScript.NodeType.List && this.asts[this.top - 2].nodeType === TypeScript.NodeType.ClassDeclaration; + }; + AstPath.prototype.isArgumentOfClassConstructor = function () { + var ast = lastOf(this.asts); + return this.count() >= 5 && this.asts[this.top] === ast && this.asts[this.top - 1].nodeType === TypeScript.NodeType.List && this.asts[this.top - 2].nodeType === TypeScript.NodeType.FuncDecl && this.asts[this.top - 3].nodeType === TypeScript.NodeType.List && this.asts[this.top - 4].nodeType === TypeScript.NodeType.ClassDeclaration && ((this.asts[this.top - 2]).isConstructor) && ((this.asts[this.top - 2]).arguments === this.asts[this.top - 1]) && ((this.asts[this.top - 4]).constructorDecl === this.asts[this.top - 2]); + }; + AstPath.prototype.isChildOfInterface = function () { + var ast = lastOf(this.asts); + return this.count() >= 3 && this.asts[this.top] === ast && this.asts[this.top - 1].nodeType === TypeScript.NodeType.List && this.asts[this.top - 2].nodeType === TypeScript.NodeType.InterfaceDeclaration; + }; + AstPath.prototype.isTopLevelImplicitModule = function () { + return this.count() >= 1 && this.asts[this.top].nodeType === TypeScript.NodeType.ModuleDeclaration && TypeScript.hasFlag((this.asts[this.top]).modFlags, TypeScript.ModuleFlags.IsWholeFile); + }; + AstPath.prototype.isBodyOfTopLevelImplicitModule = function () { + return this.count() >= 2 && this.asts[this.top - 0].nodeType === TypeScript.NodeType.List && this.asts[this.top - 1].nodeType === TypeScript.NodeType.ModuleDeclaration && (this.asts[this.top - 1]).members == this.asts[this.top - 0] && TypeScript.hasFlag((this.asts[this.top - 1]).modFlags, TypeScript.ModuleFlags.IsWholeFile); + }; + AstPath.prototype.isBodyOfScript = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.Script && (this.asts[this.top - 1]).bod == this.asts[this.top - 0]; + }; + AstPath.prototype.isBodyOfSwitch = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.Switch && (this.asts[this.top - 1]).caseList == this.asts[this.top - 0]; + }; + AstPath.prototype.isBodyOfModule = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.ModuleDeclaration && (this.asts[this.top - 1]).members == this.asts[this.top - 0]; + }; + AstPath.prototype.isBodyOfClass = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.ClassDeclaration && (this.asts[this.top - 1]).members == this.asts[this.top - 0]; + }; + AstPath.prototype.isBodyOfFunction = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.FuncDecl && (this.asts[this.top - 1]).bod == this.asts[this.top - 0]; + }; + AstPath.prototype.isBodyOfInterface = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.InterfaceDeclaration && (this.asts[this.top - 1]).members == this.asts[this.top - 0]; + }; + AstPath.prototype.isBodyOfBlock = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.Block && (this.asts[this.top - 1]).statements == this.asts[this.top - 0]; + }; + AstPath.prototype.isBodyOfFor = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.For && (this.asts[this.top - 1]).body == this.asts[this.top - 0]; + }; + AstPath.prototype.isBodyOfCase = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.Case && (this.asts[this.top - 1]).body == this.asts[this.top - 0]; + }; + AstPath.prototype.isBodyOfTry = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.Try && (this.asts[this.top - 1]).body == this.asts[this.top - 0]; + }; + AstPath.prototype.isBodyOfCatch = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.Catch && (this.asts[this.top - 1]).body == this.asts[this.top - 0]; + }; + AstPath.prototype.isBodyOfDoWhile = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.DoWhile && (this.asts[this.top - 1]).body == this.asts[this.top - 0]; + }; + AstPath.prototype.isBodyOfWhile = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.While && (this.asts[this.top - 1]).body == this.asts[this.top - 0]; + }; + AstPath.prototype.isBodyOfForIn = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.ForIn && (this.asts[this.top - 1]).body == this.asts[this.top - 0]; + }; + AstPath.prototype.isBodyOfWith = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.With && (this.asts[this.top - 1]).body == this.asts[this.top - 0]; + }; + AstPath.prototype.isBodyOfFinally = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.Finally && (this.asts[this.top - 1]).body == this.asts[this.top - 0]; + }; + AstPath.prototype.isCaseOfSwitch = function () { + return this.count() >= 3 && this.asts[this.top - 2].nodeType === TypeScript.NodeType.Switch && this.asts[this.top - 1].nodeType === TypeScript.NodeType.List && (this.asts[this.top - 2]).caseList == this.asts[this.top - 1]; + }; + AstPath.prototype.isDefaultCaseOfSwitch = function () { + return this.count() >= 3 && this.asts[this.top - 2].nodeType === TypeScript.NodeType.Switch && this.asts[this.top - 1].nodeType === TypeScript.NodeType.List && (this.asts[this.top - 2]).caseList == this.asts[this.top - 1] && (this.asts[this.top - 2]).defaultCase == this.asts[this.top - 0]; + }; + AstPath.prototype.isListOfObjectLit = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.ObjectLit && this.asts[this.top - 0].nodeType === TypeScript.NodeType.List && (this.asts[this.top - 1]).operand == this.asts[this.top - 0]; + }; + AstPath.prototype.isBodyOfObjectLit = function () { + return this.isListOfObjectLit(); + }; + AstPath.prototype.isEmptyListOfObjectLit = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.ObjectLit && this.asts[this.top - 0].nodeType === TypeScript.NodeType.List && (this.asts[this.top - 1]).operand == this.asts[this.top - 0] && (this.asts[this.top - 0]).members.length == 0; + }; + AstPath.prototype.isMemberOfObjectLit = function () { + return this.count() >= 3 && this.asts[this.top - 2].nodeType === TypeScript.NodeType.ObjectLit && this.asts[this.top - 1].nodeType === TypeScript.NodeType.List && this.asts[this.top - 0].nodeType === TypeScript.NodeType.Member && (this.asts[this.top - 2]).operand == this.asts[this.top - 1]; + }; + AstPath.prototype.isNameOfMemberOfObjectLit = function () { + return this.count() >= 4 && this.asts[this.top - 3].nodeType === TypeScript.NodeType.ObjectLit && this.asts[this.top - 2].nodeType === TypeScript.NodeType.List && this.asts[this.top - 1].nodeType === TypeScript.NodeType.Member && this.asts[this.top - 0].nodeType === TypeScript.NodeType.Name && (this.asts[this.top - 3]).operand == this.asts[this.top - 2]; + }; + AstPath.prototype.isListOfArrayLit = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.ArrayLit && this.asts[this.top - 0].nodeType === TypeScript.NodeType.List && (this.asts[this.top - 1]).operand == this.asts[this.top - 0]; + }; + AstPath.prototype.isTargetOfMember = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.Member && (this.asts[this.top - 1]).operand1 === this.asts[this.top - 0]; + }; + AstPath.prototype.isMemberOfMember = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.Member && (this.asts[this.top - 1]).operand2 === this.asts[this.top - 0]; + }; + AstPath.prototype.isItemOfList = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.List; + }; + AstPath.prototype.isThenOfIf = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.If && (this.asts[this.top - 1]).thenBod == this.asts[this.top - 0]; + }; + AstPath.prototype.isElseOfIf = function () { + return this.count() >= 2 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.If && (this.asts[this.top - 1]).elseBod == this.asts[this.top - 0]; + }; + AstPath.prototype.isBodyOfDefaultCase = function () { + return this.isBodyOfCase(); + }; + AstPath.prototype.isSingleStatementList = function () { + return this.count() >= 1 && this.asts[this.top].nodeType === TypeScript.NodeType.List && (this.asts[this.top]).members.length === 1; + }; + AstPath.prototype.isArgumentListOfFunction = function () { + return this.count() >= 2 && this.asts[this.top - 0].nodeType === TypeScript.NodeType.List && this.asts[this.top - 1].nodeType === TypeScript.NodeType.FuncDecl && (this.asts[this.top - 1]).arguments === this.asts[this.top - 0]; + }; + AstPath.prototype.isArgumentOfFunction = function () { + return this.count() >= 3 && this.asts[this.top - 1].nodeType === TypeScript.NodeType.List && this.asts[this.top - 2].nodeType === TypeScript.NodeType.FuncDecl && (this.asts[this.top - 2]).arguments === this.asts[this.top - 1]; + }; + AstPath.prototype.isArgumentListOfCall = function () { + return this.count() >= 2 && this.asts[this.top - 0].nodeType === TypeScript.NodeType.List && this.asts[this.top - 1].nodeType === TypeScript.NodeType.Call && (this.asts[this.top - 1]).arguments === this.asts[this.top - 0]; + }; + AstPath.prototype.isArgumentListOfNew = function () { + return this.count() >= 2 && this.asts[this.top - 0].nodeType === TypeScript.NodeType.List && this.asts[this.top - 1].nodeType === TypeScript.NodeType.New && (this.asts[this.top - 1]).arguments === this.asts[this.top - 0]; + }; + AstPath.prototype.isSynthesizedBlock = function () { + return this.count() >= 1 && this.asts[this.top - 0].nodeType === TypeScript.NodeType.Block && (this.asts[this.top - 0]).isStatementBlock === false; + }; + return AstPath; + })(); + TypeScript.AstPath = AstPath; + function isValidAstNode(ast) { + if(ast === null) { + return false; + } + if(ast.minChar === -1 || ast.limChar === -1) { + return false; + } + return true; + } + TypeScript.isValidAstNode = isValidAstNode; + var AstPathContext = (function () { + function AstPathContext() { + this.path = new TypeScript.AstPath(); + } + return AstPathContext; + })(); + TypeScript.AstPathContext = AstPathContext; + (function (GetAstPathOptions) { + GetAstPathOptions._map = []; + GetAstPathOptions.Default = 0; + GetAstPathOptions.EdgeInclusive = 1; + GetAstPathOptions.DontPruneSearchBasedOnPosition = 1 << 1; + })(TypeScript.GetAstPathOptions || (TypeScript.GetAstPathOptions = {})); + var GetAstPathOptions = TypeScript.GetAstPathOptions; + function getAstPathToPosition(script, pos, options) { + if (typeof options === "undefined") { options = GetAstPathOptions.Default; } + var lookInComments = function (comments) { + if(comments && comments.length > 0) { + for(var i = 0; i < comments.length; i++) { + var minChar = comments[i].minChar; + var limChar = comments[i].limChar; + if(!comments[i].isBlockComment) { + limChar++; + } + if(pos >= minChar && pos < limChar) { + ctx.path.push(comments[i]); + } + } + } + }; + var pre = function (cur, parent, walker) { + if(isValidAstNode(cur)) { + var inclusive = TypeScript.hasFlag(options, GetAstPathOptions.EdgeInclusive) || cur.nodeType === TypeScript.NodeType.Name || pos === script.limChar; + var minChar = cur.minChar; + var limChar = cur.limChar + (inclusive ? 1 : 0); + if(pos >= minChar && pos < limChar) { + var previous = ctx.path.ast(); + if(previous == null || (cur.minChar >= previous.minChar && cur.limChar <= previous.limChar)) { + ctx.path.push(cur); + } else { + } + } + if(pos < limChar) { + lookInComments(cur.preComments); + } + if(pos >= minChar) { + lookInComments(cur.postComments); + } + if(!TypeScript.hasFlag(options, GetAstPathOptions.DontPruneSearchBasedOnPosition)) { + walker.options.goChildren = (minChar <= pos && pos <= limChar); + } + } + return cur; + }; + var ctx = new AstPathContext(); + TypeScript.getAstWalkerFactory().walk(script, pre, null, null, ctx); + return ctx.path; + } + TypeScript.getAstPathToPosition = getAstPathToPosition; + function getTokenizationOffset(script, position) { + var bestOffset = 0; + var pre = function (cur, parent, walker) { + if(TypeScript.isValidAstNode(cur)) { + if(cur.minChar <= position) { + bestOffset = max(bestOffset, cur.minChar); + } + if(cur.minChar > position || cur.limChar < bestOffset) { + walker.options.goChildren = false; + } + } + return cur; + }; + TypeScript.getAstWalkerFactory().walk(script, pre); + return bestOffset; + } + TypeScript.getTokenizationOffset = getTokenizationOffset; + function walkAST(ast, callback) { + var pre = function (cur, parent, walker) { + var path = walker.state; + path.push(cur); + callback(path, walker); + return cur; + }; + var post = function (cur, parent, walker) { + var path = walker.state; + path.pop(); + return cur; + }; + var path = new AstPath(); + TypeScript.getAstWalkerFactory().walk(ast, pre, post, null, path); + } + TypeScript.walkAST = walkAST; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + var AstLogger = (function () { + function AstLogger(logger) { + this.logger = logger; + } + AstLogger.prototype.logScript = function (script) { + var _this = this; + this.logLinemap(script.locationInfo.lineMap); + var stack = []; + var pre = function (cur, parent) { + stack.push(cur); + var indent = (stack.length - 1) * 2; + _this.logComments(script, cur.preComments, indent); + _this.logNode(script, cur, indent); + _this.logComments(script, cur.postComments, indent); + return cur; + }; + var post = function (cur, parent) { + stack.pop(); + return cur; + }; + TypeScript.getAstWalkerFactory().walk(script, pre, post); + }; + AstLogger.prototype.logNode = function (script, cur, indent) { + var msg = this.addPadding("", indent, "| ", true); + msg = msg.concat("+ " + cur.treeViewLabel()); + msg = this.addPadding(msg, 70, " ", false); + msg = msg + this.addLineColumn(script, cur.minChar); + msg = this.addPadding(msg, 80, " ", false); + msg = msg + "=> "; + msg = msg + this.addLineColumn(script, cur.limChar); + msg = this.addPadding(msg, 102, " ", false); + msg = msg.concat("[" + this.addPadding(cur.minChar.toString(), 1, " ", true) + ", " + this.addPadding(cur.limChar.toString(), 1, " ", true) + "]"); + msg = this.addPadding(msg, 115, " ", false); + msg = msg.concat("sym=" + (cur).sym); + msg = this.addPadding(msg, 135, " ", false); + msg = msg.concat("type=" + (cur.type === null ? "null" : cur.type.getTypeName())); + this.logger.log(msg); + }; + AstLogger.prototype.logComments = function (script, comments, indent) { + if(comments == null) { + return; + } + for(var i = 0; i < comments.length; i++) { + this.logNode(script, comments[i], indent); + } + }; + AstLogger.prototype.logLinemap = function (linemap) { + var result = "["; + for(var i = 0; i < linemap.length; i++) { + if(i > 0) { + result += ","; + } + result += linemap[i]; + } + result += "]"; + this.logger.log("linemap: " + result); + }; + AstLogger.prototype.addPadding = function (s, targetLength, paddingString, leftPadding) { + var result = (leftPadding ? "" : s); + for(var i = s.length; i < targetLength; i++) { + result = result + paddingString; + } + result = result + (leftPadding ? s : ""); + return result; + }; + AstLogger.prototype.addLineColumn = function (script, position) { + var lineInfo = { + line: -1, + col: -1 + }; + TypeScript.getSourceLineColFromMap(lineInfo, position, script.locationInfo.lineMap); + if(lineInfo.col !== -1) { + lineInfo.col++; + } + return "(" + lineInfo.line + ", " + lineInfo.col + ")"; + }; + return AstLogger; + })(); + TypeScript.AstLogger = AstLogger; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + var Binder = (function () { + function Binder(checker) { + this.checker = checker; + } + Binder.prototype.resolveBaseTypeLinks = function (typeLinks, scope) { + var extendsList = null; + if(typeLinks) { + extendsList = new Array(); + for(var i = 0, len = typeLinks.length; i < len; i++) { + extendsList[i] = this.checker.resolveBaseTypeLink(typeLinks[i], scope); + } + } + return extendsList; + }; + Binder.prototype.resolveBases = function (scope, type) { + type.extendsList = this.resolveBaseTypeLinks(type.extendsTypeLinks, scope); + var i = 0, len = type.extendsList.length; + var derivedIsClass = type.isClassInstance(); + for(; i < len; i++) { + var baseIsClass = type.extendsList[i].isClassInstance(); + if(type.extendsList[i] != this.checker.anyType) { + var baseRef = type.extendsTypeLinks[i].ast; + if(derivedIsClass) { + if(!baseIsClass) { + this.checker.errorReporter.simpleError(baseRef, "A class may only extend other classes, " + type.extendsList[i].symbol.fullName() + " is not a class."); + } + } else { + if(baseIsClass) { + this.checker.errorReporter.simpleError(baseRef, "An interface may only extend other interfaces, " + type.extendsList[i].symbol.fullName() + " is a class."); + } + } + } + } + type.implementsList = this.resolveBaseTypeLinks(type.implementsTypeLinks, scope); + if(type.implementsList) { + for(i = 0 , len = type.implementsList.length; i < len; i++) { + var iface = type.implementsList[i]; + var baseRef = type.implementsTypeLinks[i].ast; + if(iface.isClassInstance()) { + if(derivedIsClass) { + this.checker.errorReporter.simpleError(baseRef, "A class may only implement an interface; " + iface.symbol.fullName() + " is a class."); + } + } + } + } + }; + Binder.prototype.resolveSignatureGroup = function (signatureGroup, scope, instanceType) { + var supplyVar = !(signatureGroup.hasImplementation); + for(var i = 0, len = signatureGroup.signatures.length; i < len; i++) { + var signature = signatureGroup.signatures[i]; + if(instanceType) { + signature.returnType.type = instanceType; + } else { + this.checker.resolveTypeLink(scope, signature.returnType, supplyVar); + } + var paramLen = signature.parameters.length; + for(var j = 0; j < paramLen; j++) { + this.bindSymbol(scope, signature.parameters[j]); + } + if(signature.hasVariableArgList) { + var lastParam = signature.parameters[paramLen - 1]; + lastParam.argsOffset = paramLen - 1; + if(!lastParam.getType().isArray()) { + this.checker.errorReporter.simpleErrorFromSym(lastParam, "... parameter must have array type"); + lastParam.parameter.typeLink.type = this.checker.makeArrayType(lastParam.parameter.typeLink.type); + } + } + } + }; + Binder.prototype.bindType = function (scope, type, instanceType) { + if(instanceType) { + this.bindType(scope, instanceType, null); + } + if(type.hasMembers()) { + var members = type.members; + var ambientMembers = type.ambientMembers; + var typeMembers = type.getAllEnclosedTypes(); + var ambientTypeMembers = type.getAllAmbientEnclosedTypes(); + var memberScope = new TypeScript.SymbolTableScope(members, ambientMembers, typeMembers, ambientTypeMembers, type.symbol); + var agg = new TypeScript.SymbolAggregateScope(type.symbol); + var prevCurrentModDecl = this.checker.currentModDecl; + var prevBindStatus = this.checker.inBind; + agg.addParentScope(memberScope); + agg.addParentScope(scope); + if(type.isModuleType()) { + this.checker.currentModDecl = type.symbol.declAST; + this.checker.inBind = true; + } + if(members) { + this.bind(agg, type.members.allMembers); + } + if(typeMembers) { + this.bind(agg, typeMembers.allMembers); + } + if(ambientMembers) { + this.bind(agg, ambientMembers.allMembers); + } + if(ambientTypeMembers) { + this.bind(agg, ambientTypeMembers.allMembers); + } + this.checker.currentModDecl = prevCurrentModDecl; + this.checker.inBind = prevBindStatus; + } + if(type.extendsTypeLinks) { + this.resolveBases(scope, type); + } + if(type.construct) { + this.resolveSignatureGroup(type.construct, scope, instanceType); + } + if(type.call) { + this.resolveSignatureGroup(type.call, scope, null); + } + if(type.index) { + this.resolveSignatureGroup(type.index, scope, null); + } + if(type.elementType) { + this.bindType(scope, type.elementType, null); + } + }; + Binder.prototype.bindSymbol = function (scope, symbol) { + if(!symbol.bound) { + var prevLocationInfo = this.checker.locationInfo; + if((this.checker.units) && (symbol.unitIndex >= 0) && (symbol.unitIndex < this.checker.units.length)) { + this.checker.locationInfo = this.checker.units[symbol.unitIndex]; + } + switch(symbol.kind()) { + case TypeScript.SymbolKind.Type: { + if(symbol.flags & TypeScript.SymbolFlags.Bound) { + break; + } + var typeSymbol = symbol; + typeSymbol.flags |= TypeScript.SymbolFlags.Bound; + if(typeSymbol.aliasLink && !typeSymbol.type && typeSymbol.aliasLink.alias.nodeType == TypeScript.NodeType.Name) { + var modPath = (typeSymbol.aliasLink.alias).text; + var modSym = this.checker.findSymbolForDynamicModule(modPath, this.checker.locationInfo.filename, function (id) { + return scope.find(id, false, true); + }); + if(modSym) { + typeSymbol.type = modSym.getType(); + } + } + if(typeSymbol.type && typeSymbol.type != this.checker.gloModType) { + this.bindType(scope, typeSymbol.type, typeSymbol.instanceType); + if(typeSymbol.type.isModuleType()) { + for(var i = 0; i < typeSymbol.expansions.length; i++) { + this.bindType(scope, typeSymbol.expansions[i], typeSymbol.instanceType); + } + } + } + break; + + } + case TypeScript.SymbolKind.Field: { + this.checker.resolveTypeLink(scope, (symbol).field.typeLink, false); + break; + + } + case TypeScript.SymbolKind.Parameter: { + this.checker.resolveTypeLink(scope, (symbol).parameter.typeLink, true); + break; + + } + } + this.checker.locationInfo = prevLocationInfo; + } + symbol.bound = true; + }; + Binder.prototype.bind = function (scope, table) { + table.map(function (key, sym, binder) { + binder.bindSymbol(scope, sym); + }, this); + }; + return Binder; + })(); + TypeScript.Binder = Binder; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + var Base64Format = (function () { + function Base64Format() { } + Base64Format.encodedValues = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + Base64Format.encode = function encode(inValue) { + if(inValue < 64) { + return Base64Format.encodedValues.charAt(inValue); + } + throw TypeError(inValue + ": not a 64 based value"); + } + Base64Format.decodeChar = function decodeChar(inChar) { + if(inChar.length === 1) { + return Base64Format.encodedValues.indexOf(inChar); + } else { + throw TypeError('"' + inChar + '" must have length 1'); + } + } + return Base64Format; + })(); + var Base64VLQFormat = (function () { + function Base64VLQFormat() { } + Base64VLQFormat.encode = function encode(inValue) { + if(inValue < 0) { + inValue = ((-inValue) << 1) + 1; + } else { + inValue = inValue << 1; + } + var encodedStr = ""; + do { + var currentDigit = inValue & 31; + inValue = inValue >> 5; + if(inValue > 0) { + currentDigit = currentDigit | 32; + } + encodedStr = encodedStr + Base64Format.encode(currentDigit); + }while(inValue > 0) + return encodedStr; + } + Base64VLQFormat.decode = function decode(inString) { + var result = 0; + var negative = false; + var shift = 0; + for(var i = 0; i < inString.length; i++) { + var byte = Base64Format.decodeChar(inString[i]); + if(i === 0) { + if((byte & 1) === 1) { + negative = true; + } + result = (byte >> 1) & 15; + } else { + result = result | ((byte & 31) << shift); + } + shift += (i == 0) ? 4 : 5; + if((byte & 32) === 32) { + } else { + return { + value: negative ? -(result) : result, + rest: inString.substr(i + 1) + }; + } + } + throw new Error('Base64 value "' + inString + '" finished with a continuation bit'); + } + return Base64VLQFormat; + })(); + TypeScript.Base64VLQFormat = Base64VLQFormat; +})(TypeScript || (TypeScript = {})); +var JSON2 = { +}; +((function () { + 'use strict'; + function f(n) { + return n < 10 ? '0' + n : n; + } + if(typeof Date.prototype.toJSON !== 'function') { + Date.prototype.toJSON = function (key) { + return isFinite(this.valueOf()) ? this.getUTCFullYear() + '-' + f(this.getUTCMonth() + 1) + '-' + f(this.getUTCDate()) + 'T' + f(this.getUTCHours()) + ':' + f(this.getUTCMinutes()) + ':' + f(this.getUTCSeconds()) + 'Z' : null; + }; + var strProto = String.prototype; + var numProto = Number.prototype; + numProto.JSON = strProto.JSON = (Boolean).prototype.toJSON = function (key) { + return this.valueOf(); + }; + } + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, gap, indent, meta = { +'\b': '\\b', +'\t': '\\t', +'\n': '\\n', +'\f': '\\f', +'\r': '\\r', +'"': '\\"', +'\\': '\\\\' }, rep; + function quote(string) { + escapable.lastIndex = 0; + return escapable.test(string) ? '"' + string.replace(escapable, function (a) { + var c = meta[a]; + return typeof c === 'string' ? c : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"' : '"' + string + '"'; + } + function str(key, holder) { + var i, k = null, v, length, mind = gap, partial, value = holder[key]; + if(value && typeof value === 'object' && typeof value.toJSON === 'function') { + value = value.toJSON(key); + } + if(typeof rep === 'function') { + value = rep.call(holder, key, value); + } + switch(typeof value) { + case 'string': { + return quote(value); + + } + case 'number': { + return isFinite(value) ? String(value) : 'null'; + + } + case 'boolean': + case 'null': { + return String(value); + + } + case 'object': { + if(!value) { + return 'null'; + } + gap += indent; + partial = []; + if(Object.prototype.toString.apply(value, []) === '[object Array]') { + length = value.length; + for(i = 0; i < length; i += 1) { + partial[i] = str(i, value) || 'null'; + } + v = partial.length === 0 ? '[]' : gap ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : '[' + partial.join(',') + ']'; + gap = mind; + return v; + } + if(rep && typeof rep === 'object') { + length = rep.length; + for(i = 0; i < length; i += 1) { + if(typeof rep[i] === 'string') { + k = rep[i]; + v = str(k, value); + if(v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } else { + for(k in value) { + if(Object.prototype.hasOwnProperty.call(value, k)) { + v = str(k, value); + if(v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } + v = partial.length === 0 ? '{}' : gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : '{' + partial.join(',') + '}'; + gap = mind; + return v; + + } + } + } + if(typeof JSON2.stringify !== 'function') { + JSON2.stringify = function (value, replacer, space) { + var i; + gap = ''; + indent = ''; + if(typeof space === 'number') { + for(i = 0; i < space; i += 1) { + indent += ' '; + } + } else { + if(typeof space === 'string') { + indent = space; + } + } + rep = replacer; + if(replacer && typeof replacer !== 'function' && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) { + throw new Error('JSON.stringify'); + } + return str('', { + '': value + }); + }; + } + if(typeof JSON2.parse !== 'function') { + JSON2.parse = function (text, reviver) { + var j; + function walk(holder, key) { + var k = null, v, value = holder[key]; + if(value && typeof value === 'object') { + for(k in value) { + if(Object.prototype.hasOwnProperty.call(value, k)) { + v = walk(value, k); + if(v !== undefined) { + value[k] = v; + } else { + delete value[k]; + } + } + } + } + return reviver.call(holder, key, value); + } + text = String(text); + cx.lastIndex = 0; + if(cx.test(text)) { + text = text.replace(cx, function (a) { + return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }); + } + if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { + j = eval('(' + text + ')'); + return typeof reviver === 'function' ? walk({ + '': j + }, '') : j; + } + throw new SyntaxError('JSON.parse'); + }; + } +})()); +var TypeScript; +(function (TypeScript) { + var SourceMapPosition = (function () { + function SourceMapPosition() { } + return SourceMapPosition; + })(); + TypeScript.SourceMapPosition = SourceMapPosition; + var SourceMapping = (function () { + function SourceMapping() { + this.start = new SourceMapPosition(); + this.end = new SourceMapPosition(); + this.nameIndex = -1; + this.childMappings = []; + } + return SourceMapping; + })(); + TypeScript.SourceMapping = SourceMapping; + var SourceMapper = (function () { + function SourceMapper(tsFileName, jsFileName, jsFile, sourceMapOut, errorReporter) { + this.jsFile = jsFile; + this.sourceMapOut = sourceMapOut; + this.errorReporter = errorReporter; + this.sourceMappings = []; + this.currentMappings = []; + this.names = []; + this.currentNameIndex = []; + this.currentMappings.push(this.sourceMappings); + jsFileName = TypeScript.switchToForwardSlashes(jsFileName); + this.jsFileName = TypeScript.getPrettyName(jsFileName, false, true); + var removalIndex = jsFileName.lastIndexOf(this.jsFileName); + var fixedPath = jsFileName.substring(0, removalIndex); + this.tsFileName = TypeScript.getRelativePathToFixedPath(fixedPath, tsFileName); + } + SourceMapper.MapFileExtension = ".map"; + SourceMapper.EmitSourceMapping = function EmitSourceMapping(allSourceMappers) { + var sourceMapper = allSourceMappers[0]; + sourceMapper.jsFile.WriteLine("//@ sourceMappingURL=" + sourceMapper.jsFileName + SourceMapper.MapFileExtension); + var sourceMapOut = sourceMapper.sourceMapOut; + var mappingsString = ""; + var tsFiles = []; + var prevEmittedColumn = 0; + var prevEmittedLine = 0; + var prevSourceColumn = 0; + var prevSourceLine = 0; + var prevSourceIndex = 0; + var prevNameIndex = 0; + var namesList = []; + var namesCount = 0; + var emitComma = false; + var recordedPosition = null; + for(var sourceMapperIndex = 0; sourceMapperIndex < allSourceMappers.length; sourceMapperIndex++) { + sourceMapper = allSourceMappers[sourceMapperIndex]; + var currentSourceIndex = tsFiles.length; + tsFiles.push(sourceMapper.tsFileName); + if(sourceMapper.names.length > 0) { + namesList.push.apply(namesList, sourceMapper.names); + } + var recordSourceMapping = function (mappedPosition, nameIndex) { + if(recordedPosition != null && recordedPosition.emittedColumn == mappedPosition.emittedColumn && recordedPosition.emittedLine == mappedPosition.emittedLine) { + return; + } + if(prevEmittedLine !== mappedPosition.emittedLine) { + while(prevEmittedLine < mappedPosition.emittedLine) { + prevEmittedColumn = 0; + mappingsString = mappingsString + ";"; + prevEmittedLine++; + } + emitComma = false; + } else { + if(emitComma) { + mappingsString = mappingsString + ","; + } + } + mappingsString = mappingsString + TypeScript.Base64VLQFormat.encode(mappedPosition.emittedColumn - prevEmittedColumn); + prevEmittedColumn = mappedPosition.emittedColumn; + mappingsString = mappingsString + TypeScript.Base64VLQFormat.encode(currentSourceIndex - prevSourceIndex); + prevSourceIndex = currentSourceIndex; + mappingsString = mappingsString + TypeScript.Base64VLQFormat.encode(mappedPosition.sourceLine - 1 - prevSourceLine); + prevSourceLine = mappedPosition.sourceLine - 1; + mappingsString = mappingsString + TypeScript.Base64VLQFormat.encode(mappedPosition.sourceColumn - prevSourceColumn); + prevSourceColumn = mappedPosition.sourceColumn; + if(nameIndex >= 0) { + mappingsString = mappingsString + TypeScript.Base64VLQFormat.encode(namesCount + nameIndex - prevNameIndex); + prevNameIndex = namesCount + nameIndex; + } + emitComma = true; + recordedPosition = mappedPosition; + }; + var recordSourceMappingSiblings = function (sourceMappings) { + for(var i = 0; i < sourceMappings.length; i++) { + var sourceMapping = sourceMappings[i]; + recordSourceMapping(sourceMapping.start, sourceMapping.nameIndex); + recordSourceMappingSiblings(sourceMapping.childMappings); + recordSourceMapping(sourceMapping.end, sourceMapping.nameIndex); + } + }; + recordSourceMappingSiblings(sourceMapper.sourceMappings, -1); + namesCount = namesCount + sourceMapper.names.length; + } + if(mappingsString != "") { + sourceMapOut.Write(JSON2.stringify({ + version: 3, + file: sourceMapper.jsFileName, + sources: tsFiles, + names: namesList, + mappings: mappingsString + })); + } + try { + sourceMapOut.Close(); + } catch (ex) { + sourceMapper.errorReporter.emitterError(null, ex.message); + } + } + return SourceMapper; + })(); + TypeScript.SourceMapper = SourceMapper; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + (function (EmitContainer) { + EmitContainer._map = []; + EmitContainer._map[0] = "Prog"; + EmitContainer.Prog = 0; + EmitContainer._map[1] = "Module"; + EmitContainer.Module = 1; + EmitContainer._map[2] = "DynamicModule"; + EmitContainer.DynamicModule = 2; + EmitContainer._map[3] = "Class"; + EmitContainer.Class = 3; + EmitContainer._map[4] = "Constructor"; + EmitContainer.Constructor = 4; + EmitContainer._map[5] = "Function"; + EmitContainer.Function = 5; + EmitContainer._map[6] = "Args"; + EmitContainer.Args = 6; + EmitContainer._map[7] = "Interface"; + EmitContainer.Interface = 7; + })(TypeScript.EmitContainer || (TypeScript.EmitContainer = {})); + var EmitContainer = TypeScript.EmitContainer; + var EmitState = (function () { + function EmitState() { + this.column = 0; + this.line = 0; + this.pretty = false; + this.inObjectLiteral = false; + this.container = EmitContainer.Prog; + } + return EmitState; + })(); + TypeScript.EmitState = EmitState; + var EmitOptions = (function () { + function EmitOptions(settings) { + this.ioHost = null; + this.outputMany = true; + this.commonDirectoryPath = ""; + this.minWhitespace = settings.minWhitespace; + this.propagateConstants = settings.propagateConstants; + this.emitComments = settings.emitComments; + this.outputOption = settings.outputOption; + } + EmitOptions.prototype.mapOutputFileName = function (fileName, extensionChanger) { + if(this.outputMany) { + var updatedFileName = fileName; + if(this.outputOption != "") { + updatedFileName = fileName.replace(this.commonDirectoryPath, ""); + updatedFileName = this.outputOption + updatedFileName; + } + return extensionChanger(updatedFileName, false); + } else { + return extensionChanger(this.outputOption, true); + } + }; + return EmitOptions; + })(); + TypeScript.EmitOptions = EmitOptions; + var Indenter = (function () { + function Indenter() { + this.indentAmt = 0; + } + Indenter.indentStep = 4; + Indenter.indentStepString = " "; + Indenter.indentStrings = []; + Indenter.prototype.increaseIndent = function () { + this.indentAmt += Indenter.indentStep; + }; + Indenter.prototype.decreaseIndent = function () { + this.indentAmt -= Indenter.indentStep; + }; + Indenter.prototype.getIndent = function () { + var indentString = Indenter.indentStrings[this.indentAmt]; + if(indentString === undefined) { + indentString = ""; + for(var i = 0; i < this.indentAmt; i = i + Indenter.indentStep) { + indentString += Indenter.indentStepString; + } + Indenter.indentStrings[this.indentAmt] = indentString; + } + return indentString; + }; + return Indenter; + })(); + TypeScript.Indenter = Indenter; + var Emitter = (function () { + function Emitter(checker, emittingFileName, outfile, emitOptions, errorReporter) { + this.checker = checker; + this.emittingFileName = emittingFileName; + this.outfile = outfile; + this.emitOptions = emitOptions; + this.errorReporter = errorReporter; + this.prologueEmitted = false; + this.thisClassNode = null; + this.thisFnc = null; + this.moduleDeclList = []; + this.moduleName = ""; + this.emitState = new EmitState(); + this.indenter = new Indenter(); + this.ambientModule = false; + this.modAliasId = null; + this.firstModAlias = null; + this.allSourceMappers = []; + this.sourceMapper = null; + this.captureThisStmtString = "var _this = this;"; + this.varListCountStack = [ + 0 + ]; + } + Emitter.prototype.setSourceMappings = function (mapper) { + this.allSourceMappers.push(mapper); + this.sourceMapper = mapper; + }; + Emitter.prototype.writeToOutput = function (s) { + this.outfile.Write(s); + this.emitState.column += s.length; + }; + Emitter.prototype.writeToOutputTrimmable = function (s) { + if(this.emitOptions.minWhitespace) { + s = s.replace(/[\s]*/g, ''); + } + this.writeToOutput(s); + }; + Emitter.prototype.writeLineToOutput = function (s) { + if(this.emitOptions.minWhitespace) { + this.writeToOutput(s); + var c = s.charCodeAt(s.length - 1); + if(!((c == TypeScript.LexCodeSpace) || (c == TypeScript.LexCodeSMC) || (c == TypeScript.LexCodeLBR))) { + this.writeToOutput(' '); + } + } else { + this.outfile.WriteLine(s); + this.emitState.column = 0; + this.emitState.line++; + } + }; + Emitter.prototype.writeCaptureThisStatement = function (ast) { + this.emitIndent(); + this.recordSourceMappingStart(ast); + this.writeToOutput(this.captureThisStmtString); + this.recordSourceMappingEnd(ast); + this.writeLineToOutput(""); + }; + Emitter.prototype.setInVarBlock = function (count) { + this.varListCountStack[this.varListCountStack.length - 1] = count; + }; + Emitter.prototype.setInObjectLiteral = function (val) { + var temp = this.emitState.inObjectLiteral; + this.emitState.inObjectLiteral = val; + return temp; + }; + Emitter.prototype.setContainer = function (c) { + var temp = this.emitState.container; + this.emitState.container = c; + return temp; + }; + Emitter.prototype.getIndentString = function () { + if(this.emitOptions.minWhitespace) { + return ""; + } else { + return this.indenter.getIndent(); + } + }; + Emitter.prototype.emitIndent = function () { + this.writeToOutput(this.getIndentString()); + }; + Emitter.prototype.emitCommentInPlace = function (comment) { + this.recordSourceMappingStart(comment); + var text = comment.getText(); + var hadNewLine = false; + if(comment.isBlockComment) { + if(this.emitState.column == 0) { + this.emitIndent(); + } + this.writeToOutput(text[0]); + if(text.length > 1 || comment.endsLine) { + this.writeLineToOutput(""); + for(var i = 1; i < text.length; i++) { + this.emitIndent(); + this.writeLineToOutput(text[i]); + } + hadNewLine = true; + } + } else { + if(this.emitState.column == 0) { + this.emitIndent(); + } + this.writeLineToOutput(text[0]); + hadNewLine = true; + } + if(hadNewLine) { + this.emitIndent(); + } else { + this.writeToOutput(" "); + } + this.recordSourceMappingEnd(comment); + }; + Emitter.prototype.emitParensAndCommentsInPlace = function (ast, pre) { + var comments = pre ? ast.preComments : ast.postComments; + if(ast.isParenthesized && !pre) { + this.writeToOutput(")"); + } + if(this.emitOptions.emitComments && comments && comments.length != 0) { + for(var i = 0; i < comments.length; i++) { + this.emitCommentInPlace(comments[i]); + } + } + if(ast.isParenthesized && pre) { + this.writeToOutput("("); + } + }; + Emitter.prototype.emitObjectLiteral = function (content) { + this.writeLineToOutput("{"); + this.indenter.increaseIndent(); + var inObjectLiteral = this.setInObjectLiteral(true); + this.emitJavascriptList(content, ",", TypeScript.TokenID.Comma, true, false, false); + this.setInObjectLiteral(inObjectLiteral); + this.indenter.decreaseIndent(); + this.emitIndent(); + this.writeToOutput("}"); + }; + Emitter.prototype.emitArrayLiteral = function (content) { + this.writeToOutput("["); + if(content) { + this.writeLineToOutput(""); + this.indenter.increaseIndent(); + this.emitJavascriptList(content, ", ", TypeScript.TokenID.Comma, true, false, false); + this.indenter.decreaseIndent(); + this.emitIndent(); + } + this.writeToOutput("]"); + }; + Emitter.prototype.emitNew = function (target, args) { + this.writeToOutput("new "); + if(target.nodeType == TypeScript.NodeType.TypeRef) { + var typeRef = target; + if(typeRef.arrayCount) { + this.writeToOutput("Array()"); + } else { + this.emitJavascript(typeRef.term, TypeScript.TokenID.Tilde, false); + this.writeToOutput("()"); + } + } else { + this.emitJavascript(target, TypeScript.TokenID.Tilde, false); + this.recordSourceMappingStart(args); + this.writeToOutput("("); + this.emitJavascriptList(args, ", ", TypeScript.TokenID.Comma, false, false, false); + this.writeToOutput(")"); + this.recordSourceMappingEnd(args); + } + }; + Emitter.prototype.tryEmitConstant = function (dotExpr) { + if(!this.emitOptions.propagateConstants) { + return false; + } + var propertyName = dotExpr.operand2; + if(propertyName && propertyName.sym && propertyName.sym.isVariable()) { + if(TypeScript.hasFlag(propertyName.sym.flags, TypeScript.SymbolFlags.Constant)) { + if(propertyName.sym.declAST) { + var boundDecl = propertyName.sym.declAST; + if(boundDecl.init && (boundDecl.init.nodeType == TypeScript.NodeType.NumberLit)) { + var numLit = boundDecl.init; + this.writeToOutput(numLit.value.toString()); + var comment = " /* "; + comment += propertyName.actualText; + comment += " */ "; + this.writeToOutput(comment); + return true; + } + } + } + } + return false; + }; + Emitter.prototype.emitCall = function (callNode, target, args) { + if(!this.emitSuperCall(callNode)) { + if(!TypeScript.hasFlag(callNode.flags, TypeScript.ASTFlags.ClassBaseConstructorCall)) { + if(target.nodeType == TypeScript.NodeType.FuncDecl && !target.isParenthesized) { + this.writeToOutput("("); + } + if(callNode.target.nodeType == TypeScript.NodeType.Super && this.emitState.container == EmitContainer.Constructor) { + this.writeToOutput("_super.call"); + } else { + this.emitJavascript(target, TypeScript.TokenID.OpenParen, false); + } + if(target.nodeType == TypeScript.NodeType.FuncDecl && !target.isParenthesized) { + this.writeToOutput(")"); + } + this.recordSourceMappingStart(args); + this.writeToOutput("("); + if(callNode.target.nodeType == TypeScript.NodeType.Super && this.emitState.container == EmitContainer.Constructor) { + this.writeToOutput("this"); + if(args && args.members.length) { + this.writeToOutput(", "); + } + } + this.emitJavascriptList(args, ", ", TypeScript.TokenID.Comma, false, false, false); + this.writeToOutput(")"); + this.recordSourceMappingEnd(args); + } else { + this.indenter.decreaseIndent(); + this.indenter.decreaseIndent(); + var constructorCall = new TypeScript.ASTList(); + constructorCall.members[0] = callNode; + this.emitConstructorCalls(constructorCall, this.thisClassNode); + this.indenter.increaseIndent(); + this.indenter.increaseIndent(); + } + } + }; + Emitter.prototype.emitConstructorCalls = function (bases, classDecl) { + if(bases == null) { + return; + } + var basesLen = bases.members.length; + this.recordSourceMappingStart(classDecl); + for(var i = 0; i < basesLen; i++) { + var baseExpr = bases.members[i]; + var baseSymbol = null; + if(baseExpr.nodeType == TypeScript.NodeType.Call) { + baseSymbol = (baseExpr).target.type.symbol; + } else { + baseSymbol = baseExpr.type.symbol; + } + var baseName = baseSymbol.name; + if(baseSymbol.declModule != classDecl.type.symbol.declModule) { + baseName = baseSymbol.fullName(); + } + if(baseExpr.nodeType == TypeScript.NodeType.Call) { + this.emitIndent(); + this.writeToOutput("_super.call(this"); + var args = (baseExpr).arguments; + if(args && (args.members.length > 0)) { + this.writeToOutput(", "); + this.emitJavascriptList(args, ", ", TypeScript.TokenID.Comma, false, false, false); + } + this.writeToOutput(")"); + } else { + if(baseExpr.type && (baseExpr.type.isClassInstance())) { + this.emitIndent(); + this.writeToOutput(classDecl.name.actualText + "._super.constructor"); + this.writeToOutput(".call(this)"); + } + } + } + this.recordSourceMappingEnd(classDecl); + }; + Emitter.prototype.emitInnerFunction = function (funcDecl, printName, isMember, bases, hasSelfRef, classDecl) { + var isClassConstructor = funcDecl.isConstructor && TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.ClassMethod); + var hasNonObjectBaseType = isClassConstructor && TypeScript.hasFlag(this.thisClassNode.type.instanceType.typeFlags, TypeScript.TypeFlags.HasBaseType) && !TypeScript.hasFlag(this.thisClassNode.type.instanceType.typeFlags, TypeScript.TypeFlags.HasBaseTypeOfObject); + var classPropertiesMustComeAfterSuperCall = hasNonObjectBaseType && TypeScript.hasFlag((this.thisClassNode).varFlags, TypeScript.VarFlags.ClassSuperMustBeFirstCallInConstructor); + var shouldParenthesize = TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.IsFunctionExpression) && !funcDecl.isParenthesized && !funcDecl.isAccessor() && (TypeScript.hasFlag(funcDecl.flags, TypeScript.ASTFlags.ExplicitSemicolon) || TypeScript.hasFlag(funcDecl.flags, TypeScript.ASTFlags.AutomaticSemicolon)); + this.emitParensAndCommentsInPlace(funcDecl, true); + if(shouldParenthesize) { + this.writeToOutput("("); + } + this.recordSourceMappingStart(funcDecl); + if(!(funcDecl.isAccessor() && (funcDecl.accessorSymbol).isObjectLitField)) { + this.writeToOutput("function "); + } + if(printName) { + var id = funcDecl.getNameText(); + if(id && !funcDecl.isAccessor()) { + if(funcDecl.name) { + this.recordSourceMappingStart(funcDecl.name); + } + this.writeToOutput(id); + if(funcDecl.name) { + this.recordSourceMappingEnd(funcDecl.name); + } + } + } + this.writeToOutput("("); + var argsLen = 0; + var i = 0; + var arg; + var defaultArgs = []; + if(funcDecl.arguments) { + var tempContainer = this.setContainer(EmitContainer.Args); + argsLen = funcDecl.arguments.members.length; + var printLen = argsLen; + if(funcDecl.variableArgList) { + printLen--; + } + for(i = 0; i < printLen; i++) { + arg = funcDecl.arguments.members[i]; + if(arg.init) { + defaultArgs.push(arg); + } + this.emitJavascript(arg, TypeScript.TokenID.OpenParen, false); + if(i < (printLen - 1)) { + this.writeToOutput(", "); + } + } + this.setContainer(tempContainer); + } + this.writeLineToOutput(") {"); + if(funcDecl.isConstructor) { + this.recordSourceMappingNameStart("constructor"); + } else { + if(funcDecl.isGetAccessor()) { + this.recordSourceMappingNameStart("get_" + funcDecl.getNameText()); + } else { + if(funcDecl.isSetAccessor()) { + this.recordSourceMappingNameStart("set_" + funcDecl.getNameText()); + } else { + this.recordSourceMappingNameStart(funcDecl.getNameText()); + } + } + } + this.indenter.increaseIndent(); + for(i = 0; i < defaultArgs.length; i++) { + var arg = defaultArgs[i]; + this.emitIndent(); + this.recordSourceMappingStart(arg); + this.writeToOutput("if (typeof " + arg.id.actualText + " === \"undefined\") { "); + this.recordSourceMappingStart(arg.id); + this.writeToOutput(arg.id.actualText); + this.recordSourceMappingEnd(arg.id); + this.writeToOutput(" = "); + this.emitJavascript(arg.init, TypeScript.TokenID.OpenParen, false); + this.writeLineToOutput("; }"); + this.recordSourceMappingEnd(arg); + } + if(funcDecl.isConstructor && ((funcDecl.classDecl).varFlags & TypeScript.VarFlags.MustCaptureThis)) { + this.writeCaptureThisStatement(funcDecl); + } + if(funcDecl.isConstructor && !classPropertiesMustComeAfterSuperCall) { + if(funcDecl.arguments) { + argsLen = funcDecl.arguments.members.length; + for(i = 0; i < argsLen; i++) { + arg = funcDecl.arguments.members[i]; + if((arg.varFlags & TypeScript.VarFlags.Property) != TypeScript.VarFlags.None) { + this.emitIndent(); + this.recordSourceMappingStart(arg); + this.recordSourceMappingStart(arg.id); + this.writeToOutput("this." + arg.id.actualText); + this.recordSourceMappingEnd(arg.id); + this.writeToOutput(" = "); + this.recordSourceMappingStart(arg.id); + this.writeToOutput(arg.id.actualText); + this.recordSourceMappingEnd(arg.id); + this.writeLineToOutput(";"); + this.recordSourceMappingEnd(arg); + } + } + } + if(!TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.ClassMethod)) { + this.emitConstructorCalls(bases, classDecl); + } + } + if(hasSelfRef) { + this.writeCaptureThisStatement(funcDecl); + } + if(funcDecl.variableArgList) { + argsLen = funcDecl.arguments.members.length; + var lastArg = funcDecl.arguments.members[argsLen - 1]; + this.emitIndent(); + this.recordSourceMappingStart(lastArg); + this.writeToOutput("var "); + this.recordSourceMappingStart(lastArg.id); + this.writeToOutput(lastArg.id.actualText); + this.recordSourceMappingEnd(lastArg.id); + this.writeLineToOutput(" = [];"); + this.recordSourceMappingEnd(lastArg); + this.emitIndent(); + this.writeToOutput("for ("); + this.recordSourceMappingStart(lastArg); + this.writeToOutput("var _i = 0;"); + this.recordSourceMappingEnd(lastArg); + this.writeToOutput(" "); + this.recordSourceMappingStart(lastArg); + this.writeToOutput("_i < (arguments.length - " + (argsLen - 1) + ")"); + this.recordSourceMappingEnd(lastArg); + this.writeToOutput("; "); + this.recordSourceMappingStart(lastArg); + this.writeToOutput("_i++"); + this.recordSourceMappingEnd(lastArg); + this.writeLineToOutput(") {"); + this.indenter.increaseIndent(); + this.emitIndent(); + this.recordSourceMappingStart(lastArg); + this.writeToOutput(lastArg.id.actualText + "[_i] = arguments[_i + " + (argsLen - 1) + "];"); + this.recordSourceMappingEnd(lastArg); + this.writeLineToOutput(""); + this.indenter.decreaseIndent(); + this.emitIndent(); + this.writeLineToOutput("}"); + } + if(funcDecl.isConstructor && TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.ClassMethod) && !classPropertiesMustComeAfterSuperCall) { + var nProps = (this.thisClassNode.members).members.length; + for(var i = 0; i < nProps; i++) { + if((this.thisClassNode.members).members[i].nodeType == TypeScript.NodeType.VarDecl) { + var varDecl = (this.thisClassNode.members).members[i]; + if(!TypeScript.hasFlag(varDecl.varFlags, TypeScript.VarFlags.Static) && varDecl.init) { + this.emitIndent(); + this.emitJavascriptVarDecl(varDecl, TypeScript.TokenID.Tilde); + this.writeLineToOutput(""); + } + } + } + } + this.emitBareJavascriptStatements(funcDecl.bod, classPropertiesMustComeAfterSuperCall); + this.indenter.decreaseIndent(); + this.emitIndent(); + this.recordSourceMappingStart(funcDecl.endingToken); + this.writeToOutput("}"); + this.recordSourceMappingNameEnd(); + this.recordSourceMappingEnd(funcDecl.endingToken); + this.recordSourceMappingEnd(funcDecl); + if(shouldParenthesize) { + this.writeToOutput(")"); + } + this.recordSourceMappingEnd(funcDecl); + this.emitParensAndCommentsInPlace(funcDecl, false); + if(!isMember && !TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.IsFunctionExpression) && (TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Definition) || funcDecl.isConstructor)) { + this.writeLineToOutput(""); + } else { + if(TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.IsFunctionExpression)) { + if(TypeScript.hasFlag(funcDecl.flags, TypeScript.ASTFlags.ExplicitSemicolon) || TypeScript.hasFlag(funcDecl.flags, TypeScript.ASTFlags.AutomaticSemicolon)) { + this.writeLineToOutput(";"); + } + } + } + }; + Emitter.prototype.emitJavascriptModule = function (moduleDecl) { + var modName = moduleDecl.name.actualText; + if(TypeScript.isTSFile(modName)) { + moduleDecl.name.setText(modName.substring(0, modName.length - 3)); + } else { + if(TypeScript.isSTRFile(modName)) { + moduleDecl.name.setText(modName.substring(0, modName.length - 4)); + } + } + if(!TypeScript.hasFlag(moduleDecl.modFlags, TypeScript.ModuleFlags.Ambient)) { + var isDynamicMod = TypeScript.hasFlag(moduleDecl.modFlags, TypeScript.ModuleFlags.IsDynamic); + var prevOutFile = this.outfile; + var prevOutFileName = this.emittingFileName; + var prevAllSourceMappers = this.allSourceMappers; + var prevSourceMapper = this.sourceMapper; + var prevColumn = this.emitState.column; + var prevLine = this.emitState.line; + var temp = this.setContainer(EmitContainer.Module); + var svModuleName = this.moduleName; + var isExported = TypeScript.hasFlag(moduleDecl.modFlags, TypeScript.ModuleFlags.Exported); + this.moduleDeclList[this.moduleDeclList.length] = moduleDecl; + var isWholeFile = TypeScript.hasFlag(moduleDecl.modFlags, TypeScript.ModuleFlags.IsWholeFile); + this.moduleName = moduleDecl.name.actualText; + if(isDynamicMod) { + var tsModFileName = TypeScript.stripQuotes(moduleDecl.name.actualText); + var modFilePath = TypeScript.trimModName(tsModFileName) + ".js"; + modFilePath = this.emitOptions.mapOutputFileName(modFilePath, TypeScript.TypeScriptCompiler.mapToJSFileName); + if(this.emitOptions.ioHost) { + if(TypeScript.switchToForwardSlashes(modFilePath) != TypeScript.switchToForwardSlashes(this.emittingFileName)) { + this.emittingFileName = modFilePath; + var useUTF8InOutputfile = moduleDecl.containsUnicodeChar || (this.emitOptions.emitComments && moduleDecl.containsUnicodeCharInComment); + this.outfile = this.createFile(this.emittingFileName, useUTF8InOutputfile); + if(prevSourceMapper != null) { + this.allSourceMappers = []; + var sourceMappingFile = this.createFile(this.emittingFileName + TypeScript.SourceMapper.MapFileExtension, false); + this.setSourceMappings(new TypeScript.SourceMapper(tsModFileName, this.emittingFileName, this.outfile, sourceMappingFile, this.errorReporter)); + this.emitState.column = 0; + this.emitState.line = 0; + } + } else { + TypeScript.CompilerDiagnostics.assert(this.emitOptions.outputMany, "Cannot have dynamic modules compiling into single file"); + } + } + this.setContainer(EmitContainer.DynamicModule); + this.recordSourceMappingStart(moduleDecl); + if(TypeScript.moduleGenTarget == TypeScript.ModuleGenTarget.Asynchronous) { + var dependencyList = "[\"require\", \"exports\""; + var importList = "require, exports"; + var importStatement = null; + for(var i = 0; i < (moduleDecl.mod).importedModules.length; i++) { + importStatement = (moduleDecl.mod).importedModules[i]; + if(importStatement.id.sym && !(importStatement.id.sym).onlyReferencedAsTypeRef) { + if(i <= (moduleDecl.mod).importedModules.length - 1) { + dependencyList += ", "; + importList += ", "; + } + importList += "__" + importStatement.id.actualText + "__"; + dependencyList += importStatement.firstAliasedModToString(); + } + } + for(var i = 0; i < moduleDecl.amdDependencies.length; i++) { + dependencyList += ", \"" + moduleDecl.amdDependencies[i] + "\""; + } + dependencyList += "]"; + this.writeLineToOutput("define(" + dependencyList + "," + " function(" + importList + ") {"); + } else { + } + } else { + if(!isExported) { + this.recordSourceMappingStart(moduleDecl); + this.writeToOutput("var "); + this.recordSourceMappingStart(moduleDecl.name); + this.writeToOutput(this.moduleName); + this.recordSourceMappingEnd(moduleDecl.name); + this.writeLineToOutput(";"); + this.recordSourceMappingEnd(moduleDecl); + this.emitIndent(); + } + this.writeToOutput("("); + this.recordSourceMappingStart(moduleDecl); + this.writeToOutput("function ("); + this.recordSourceMappingStart(moduleDecl.name); + this.writeToOutput(this.moduleName); + this.recordSourceMappingEnd(moduleDecl.name); + this.writeLineToOutput(") {"); + } + if(!isWholeFile) { + this.recordSourceMappingNameStart(this.moduleName); + } + if(!isDynamicMod || TypeScript.moduleGenTarget == TypeScript.ModuleGenTarget.Asynchronous) { + this.indenter.increaseIndent(); + } + if(moduleDecl.modFlags & TypeScript.ModuleFlags.MustCaptureThis) { + this.writeCaptureThisStatement(moduleDecl); + } + this.emitJavascriptList(moduleDecl.members, null, TypeScript.TokenID.Semicolon, true, false, false); + if(!isDynamicMod || TypeScript.moduleGenTarget == TypeScript.ModuleGenTarget.Asynchronous) { + this.indenter.decreaseIndent(); + } + this.emitIndent(); + if(isDynamicMod) { + if(TypeScript.moduleGenTarget == TypeScript.ModuleGenTarget.Asynchronous) { + this.writeLineToOutput("})"); + } else { + } + if(!isWholeFile) { + this.recordSourceMappingNameEnd(); + } + this.recordSourceMappingEnd(moduleDecl); + if(this.outfile != prevOutFile) { + this.Close(); + if(prevSourceMapper != null) { + this.allSourceMappers = prevAllSourceMappers; + this.sourceMapper = prevSourceMapper; + this.emitState.column = prevColumn; + this.emitState.line = prevLine; + } + this.outfile = prevOutFile; + this.emittingFileName = prevOutFileName; + } + } else { + var containingMod = null; + if(moduleDecl.type && moduleDecl.type.symbol.container && moduleDecl.type.symbol.container.declAST) { + containingMod = moduleDecl.type.symbol.container.declAST; + } + var parentIsDynamic = containingMod && TypeScript.hasFlag(containingMod.modFlags, TypeScript.ModuleFlags.IsDynamic); + this.recordSourceMappingStart(moduleDecl.endingToken); + if(temp == EmitContainer.Prog && isExported) { + this.writeToOutput("}"); + if(!isWholeFile) { + this.recordSourceMappingNameEnd(); + } + this.recordSourceMappingEnd(moduleDecl.endingToken); + this.writeLineToOutput(")(this." + this.moduleName + " || (this." + this.moduleName + " = {}));"); + } else { + if(isExported || temp == EmitContainer.Prog) { + var dotMod = svModuleName != "" ? (parentIsDynamic ? "exports" : svModuleName) + "." : svModuleName; + this.writeToOutput("}"); + if(!isWholeFile) { + this.recordSourceMappingNameEnd(); + } + this.recordSourceMappingEnd(moduleDecl.endingToken); + this.writeLineToOutput(")(" + dotMod + this.moduleName + " || (" + dotMod + this.moduleName + " = {}));"); + } else { + if(!isExported && temp != EmitContainer.Prog) { + this.writeToOutput("}"); + if(!isWholeFile) { + this.recordSourceMappingNameEnd(); + } + this.recordSourceMappingEnd(moduleDecl.endingToken); + this.writeLineToOutput(")(" + this.moduleName + " || (" + this.moduleName + " = {}));"); + } else { + this.writeToOutput("}"); + if(!isWholeFile) { + this.recordSourceMappingNameEnd(); + } + this.recordSourceMappingEnd(moduleDecl.endingToken); + this.writeLineToOutput(")();"); + } + } + } + this.recordSourceMappingEnd(moduleDecl); + if(temp != EmitContainer.Prog && isExported) { + this.emitIndent(); + this.recordSourceMappingStart(moduleDecl); + if(parentIsDynamic) { + this.writeLineToOutput("var " + this.moduleName + " = exports." + this.moduleName + ";"); + } else { + this.writeLineToOutput("var " + this.moduleName + " = " + svModuleName + "." + this.moduleName + ";"); + } + this.recordSourceMappingEnd(moduleDecl); + } + } + this.setContainer(temp); + this.moduleName = svModuleName; + this.moduleDeclList.length--; + } + }; + Emitter.prototype.emitIndex = function (operand1, operand2) { + var temp = this.setInObjectLiteral(false); + this.emitJavascript(operand1, TypeScript.TokenID.Tilde, false); + this.writeToOutput("["); + this.emitJavascriptList(operand2, ", ", TypeScript.TokenID.Comma, false, false, false); + this.writeToOutput("]"); + this.setInObjectLiteral(temp); + }; + Emitter.prototype.emitStringLiteral = function (text) { + this.writeToOutput(text); + }; + Emitter.prototype.emitJavascriptFunction = function (funcDecl) { + if(TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Signature) || funcDecl.isOverload) { + return; + } + var temp; + var tempFnc = this.thisFnc; + this.thisFnc = funcDecl; + if(funcDecl.isConstructor) { + temp = this.setContainer(EmitContainer.Constructor); + } else { + temp = this.setContainer(EmitContainer.Function); + } + var bases = null; + var hasSelfRef = false; + var funcName = funcDecl.getNameText(); + if((this.emitState.inObjectLiteral || !funcDecl.isAccessor()) && ((temp != EmitContainer.Constructor) || ((funcDecl.fncFlags & TypeScript.FncFlags.Method) == TypeScript.FncFlags.None))) { + var tempLit = this.setInObjectLiteral(false); + if(this.thisClassNode) { + bases = this.thisClassNode.extendsList; + } + hasSelfRef = Emitter.shouldCaptureThis(funcDecl); + this.recordSourceMappingStart(funcDecl); + if(TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Exported | TypeScript.FncFlags.ClassPropertyMethodExported) && funcDecl.type.symbol.container == this.checker.gloMod && !funcDecl.isConstructor) { + this.writeToOutput("this." + funcName + " = "); + this.emitInnerFunction(funcDecl, false, false, bases, hasSelfRef, this.thisClassNode); + } else { + this.emitInnerFunction(funcDecl, (funcDecl.name && !funcDecl.name.isMissing()), false, bases, hasSelfRef, this.thisClassNode); + } + this.setInObjectLiteral(tempLit); + } + this.setContainer(temp); + this.thisFnc = tempFnc; + if(TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Definition)) { + if(TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Static)) { + if(this.thisClassNode) { + if(funcDecl.isAccessor()) { + this.emitPropertyAccessor(funcDecl, this.thisClassNode.name.actualText, false); + } else { + this.emitIndent(); + this.recordSourceMappingStart(funcDecl); + this.writeLineToOutput(this.thisClassNode.name.actualText + "." + funcName + " = " + funcName + ";"); + this.recordSourceMappingEnd(funcDecl); + } + } + } else { + if((this.emitState.container == EmitContainer.Module || this.emitState.container == EmitContainer.DynamicModule) && TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Exported | TypeScript.FncFlags.ClassPropertyMethodExported)) { + this.emitIndent(); + var modName = this.emitState.container == EmitContainer.Module ? this.moduleName : "exports"; + this.recordSourceMappingStart(funcDecl); + this.writeLineToOutput(modName + "." + funcName + " = " + funcName + ";"); + this.recordSourceMappingEnd(funcDecl); + } + } + } + }; + Emitter.prototype.emitAmbientVarDecl = function (varDecl) { + if(varDecl.init) { + this.emitParensAndCommentsInPlace(varDecl, true); + this.recordSourceMappingStart(varDecl); + this.recordSourceMappingStart(varDecl.id); + this.writeToOutput(varDecl.id.actualText); + this.recordSourceMappingEnd(varDecl.id); + this.writeToOutput(" = "); + this.emitJavascript(varDecl.init, TypeScript.TokenID.Comma, false); + this.recordSourceMappingEnd(varDecl); + this.writeToOutput(";"); + this.emitParensAndCommentsInPlace(varDecl, false); + } + }; + Emitter.prototype.varListCount = function () { + return this.varListCountStack[this.varListCountStack.length - 1]; + }; + Emitter.prototype.emitVarDeclVar = function () { + if(this.varListCount() >= 0) { + this.writeToOutput("var "); + this.setInVarBlock(-this.varListCount()); + } + return true; + }; + Emitter.prototype.onEmitVar = function () { + if(this.varListCount() > 0) { + this.setInVarBlock(this.varListCount() - 1); + } else { + if(this.varListCount() < 0) { + this.setInVarBlock(this.varListCount() + 1); + } + } + }; + Emitter.prototype.emitJavascriptVarDecl = function (varDecl, tokenId) { + if((varDecl.varFlags & TypeScript.VarFlags.Ambient) == TypeScript.VarFlags.Ambient) { + this.emitAmbientVarDecl(varDecl); + this.onEmitVar(); + } else { + var sym = varDecl.sym; + var hasInitializer = (varDecl.init != null); + this.emitParensAndCommentsInPlace(varDecl, true); + this.recordSourceMappingStart(varDecl); + if(sym && sym.isMember() && sym.container && (sym.container.kind() == TypeScript.SymbolKind.Type)) { + var type = (sym.container).type; + if(type.isClass() && (!TypeScript.hasFlag(sym.flags, TypeScript.SymbolFlags.ModuleMember))) { + if(this.emitState.container != EmitContainer.Args) { + if(TypeScript.hasFlag(sym.flags, TypeScript.SymbolFlags.Static)) { + this.writeToOutput(sym.container.name + "."); + } else { + this.writeToOutput("this."); + } + } + } else { + if(type.hasImplementation()) { + if(!TypeScript.hasFlag(sym.flags, TypeScript.SymbolFlags.Exported) && (sym.container == this.checker.gloMod || !TypeScript.hasFlag(sym.flags, TypeScript.SymbolFlags.Property))) { + this.emitVarDeclVar(); + } else { + if(TypeScript.hasFlag(varDecl.varFlags, TypeScript.VarFlags.LocalStatic)) { + this.writeToOutput("."); + } else { + if(this.emitState.container == EmitContainer.DynamicModule) { + this.writeToOutput("exports."); + } else { + this.writeToOutput(this.moduleName + "."); + } + } + } + } else { + if(tokenId != TypeScript.TokenID.OpenParen) { + if(TypeScript.hasFlag(sym.flags, TypeScript.SymbolFlags.Exported) && sym.container == this.checker.gloMod) { + this.writeToOutput("this."); + } else { + this.emitVarDeclVar(); + } + } + } + } + } else { + if(tokenId != TypeScript.TokenID.OpenParen) { + this.emitVarDeclVar(); + } + } + this.recordSourceMappingStart(varDecl.id); + this.writeToOutput(varDecl.id.actualText); + this.recordSourceMappingEnd(varDecl.id); + if(hasInitializer) { + this.writeToOutputTrimmable(" = "); + this.varListCountStack.push(0); + this.emitJavascript(varDecl.init, TypeScript.TokenID.Comma, false); + this.varListCountStack.pop(); + } + this.onEmitVar(); + if((tokenId != TypeScript.TokenID.OpenParen)) { + if(this.varListCount() < 0) { + this.writeToOutput(", "); + } else { + if(tokenId != TypeScript.TokenID.For) { + this.writeToOutputTrimmable(";"); + } + } + } + this.recordSourceMappingEnd(varDecl); + this.emitParensAndCommentsInPlace(varDecl, false); + } + }; + Emitter.prototype.declEnclosed = function (moduleDecl) { + if(moduleDecl == null) { + return true; + } + for(var i = 0, len = this.moduleDeclList.length; i < len; i++) { + if(this.moduleDeclList[i] == moduleDecl) { + return true; + } + } + return false; + }; + Emitter.prototype.emitJavascriptName = function (name, addThis) { + var sym = name.sym; + this.emitParensAndCommentsInPlace(name, true); + this.recordSourceMappingStart(name); + if(!name.isMissing()) { + if(addThis && (this.emitState.container != EmitContainer.Args) && sym) { + if(sym.container && (sym.container.name != TypeScript.globalId)) { + if(TypeScript.hasFlag(sym.flags, TypeScript.SymbolFlags.Static) && (TypeScript.hasFlag(sym.flags, TypeScript.SymbolFlags.Property))) { + if(sym.declModule && TypeScript.hasFlag(sym.declModule.modFlags, TypeScript.ModuleFlags.IsDynamic)) { + this.writeToOutput("exports."); + } else { + this.writeToOutput(sym.container.name + "."); + } + } else { + if(sym.kind() == TypeScript.SymbolKind.Field) { + var fieldSym = sym; + if(TypeScript.hasFlag(fieldSym.flags, TypeScript.SymbolFlags.ModuleMember)) { + if((sym.container != this.checker.gloMod) && ((TypeScript.hasFlag(sym.flags, TypeScript.SymbolFlags.Property)) || TypeScript.hasFlag(sym.flags, TypeScript.SymbolFlags.Exported))) { + if(TypeScript.hasFlag(sym.declModule.modFlags, TypeScript.ModuleFlags.IsDynamic)) { + this.writeToOutput("exports."); + } else { + this.writeToOutput(sym.container.name + "."); + } + } + } else { + if(sym.isInstanceProperty()) { + this.emitThis(); + this.writeToOutput("."); + } + } + } else { + if(sym.kind() == TypeScript.SymbolKind.Type) { + if(sym.isInstanceProperty()) { + var typeSym = sym; + var type = typeSym.type; + if(type.call && !TypeScript.hasFlag(sym.flags, TypeScript.SymbolFlags.ModuleMember)) { + this.emitThis(); + this.writeToOutput("."); + } + } else { + if((sym.unitIndex != this.checker.locationInfo.unitIndex) || (!this.declEnclosed(sym.declModule))) { + this.writeToOutput(sym.container.name + "."); + } + } + } + } + } + } else { + if(sym.container == this.checker.gloMod && TypeScript.hasFlag(sym.flags, TypeScript.SymbolFlags.Exported) && !TypeScript.hasFlag(sym.flags, TypeScript.SymbolFlags.Ambient) && !((sym.isType() || sym.isMember()) && sym.declModule && TypeScript.hasFlag(sym.declModule.modFlags, TypeScript.ModuleFlags.Ambient)) && this.emitState.container == EmitContainer.Prog && sym.declAST.nodeType != TypeScript.NodeType.FuncDecl) { + this.writeToOutput("this."); + } + } + } + if(sym && sym.declAST && sym.declAST.nodeType == TypeScript.NodeType.ModuleDeclaration && (TypeScript.hasFlag((sym.declAST).modFlags, TypeScript.ModuleFlags.IsDynamic))) { + var moduleDecl = sym.declAST; + if(TypeScript.moduleGenTarget == TypeScript.ModuleGenTarget.Asynchronous) { + this.writeLineToOutput("__" + this.modAliasId + "__;"); + } else { + var modPath = name.actualText; + var isAmbient = moduleDecl.mod.symbol.declAST && TypeScript.hasFlag((moduleDecl.mod.symbol.declAST).modFlags, TypeScript.ModuleFlags.Ambient); + modPath = isAmbient ? modPath : this.firstModAlias ? this.firstModAlias : TypeScript.quoteBaseName(modPath); + modPath = isAmbient ? modPath : (!TypeScript.isRelative(TypeScript.stripQuotes(modPath)) ? TypeScript.quoteStr("./" + TypeScript.stripQuotes(modPath)) : modPath); + this.writeToOutput("require(" + modPath + ")"); + } + } else { + this.writeToOutput(name.actualText); + } + } + this.recordSourceMappingEnd(name); + this.emitParensAndCommentsInPlace(name, false); + }; + Emitter.prototype.emitJavascriptStatements = function (stmts, emitEmptyBod) { + if(stmts) { + if(stmts.nodeType != TypeScript.NodeType.Block) { + var hasContents = (stmts && (stmts.nodeType != TypeScript.NodeType.List || ((stmts).members.length > 0))); + if(emitEmptyBod || hasContents) { + var hasOnlyBlockStatement = ((stmts.nodeType == TypeScript.NodeType.Block) || ((stmts.nodeType == TypeScript.NodeType.List) && ((stmts).members.length == 1) && ((stmts).members[0].nodeType == TypeScript.NodeType.Block))); + this.recordSourceMappingStart(stmts); + if(!hasOnlyBlockStatement) { + this.writeLineToOutput(" {"); + this.indenter.increaseIndent(); + } + this.emitJavascriptList(stmts, null, TypeScript.TokenID.Semicolon, true, false, false); + if(!hasOnlyBlockStatement) { + this.writeLineToOutput(""); + this.indenter.decreaseIndent(); + this.emitIndent(); + this.writeToOutput("}"); + } + this.recordSourceMappingEnd(stmts); + } + } else { + this.emitJavascript(stmts, TypeScript.TokenID.Semicolon, true); + } + } else { + if(emitEmptyBod) { + this.writeToOutput("{ }"); + } + } + }; + Emitter.prototype.emitBareJavascriptStatements = function (stmts, emitClassPropertiesAfterSuperCall) { + if (typeof emitClassPropertiesAfterSuperCall === "undefined") { emitClassPropertiesAfterSuperCall = false; } + if(stmts.nodeType != TypeScript.NodeType.Block) { + if(stmts.nodeType == TypeScript.NodeType.List) { + var stmtList = stmts; + if((stmtList.members.length == 2) && (stmtList.members[0].nodeType == TypeScript.NodeType.Block) && (stmtList.members[1].nodeType == TypeScript.NodeType.EndCode)) { + this.emitJavascript(stmtList.members[0], TypeScript.TokenID.Semicolon, true); + this.writeLineToOutput(""); + } else { + this.emitJavascriptList(stmts, null, TypeScript.TokenID.Semicolon, true, false, emitClassPropertiesAfterSuperCall); + } + } else { + this.emitJavascript(stmts, TypeScript.TokenID.Semicolon, true); + } + } else { + this.emitJavascript(stmts, TypeScript.TokenID.Semicolon, true); + } + }; + Emitter.prototype.recordSourceMappingNameStart = function (name) { + if(this.sourceMapper) { + var finalName = name; + if(!name) { + finalName = ""; + } else { + if(this.sourceMapper.currentNameIndex.length > 0) { + finalName = this.sourceMapper.names[this.sourceMapper.currentNameIndex.length - 1] + "." + name; + } + } + this.sourceMapper.names.push(finalName); + this.sourceMapper.currentNameIndex.push(this.sourceMapper.names.length - 1); + } + }; + Emitter.prototype.recordSourceMappingNameEnd = function () { + if(this.sourceMapper) { + this.sourceMapper.currentNameIndex.pop(); + } + }; + Emitter.prototype.recordSourceMappingStart = function (ast) { + if(this.sourceMapper && TypeScript.isValidAstNode(ast)) { + var lineCol = { + line: -1, + col: -1 + }; + var sourceMapping = new TypeScript.SourceMapping(); + sourceMapping.start.emittedColumn = this.emitState.column; + sourceMapping.start.emittedLine = this.emitState.line; + TypeScript.getSourceLineColFromMap(lineCol, ast.minChar, this.checker.locationInfo.lineMap); + sourceMapping.start.sourceColumn = lineCol.col; + sourceMapping.start.sourceLine = lineCol.line; + TypeScript.getSourceLineColFromMap(lineCol, ast.limChar, this.checker.locationInfo.lineMap); + sourceMapping.end.sourceColumn = lineCol.col; + sourceMapping.end.sourceLine = lineCol.line; + if(this.sourceMapper.currentNameIndex.length > 0) { + sourceMapping.nameIndex = this.sourceMapper.currentNameIndex[this.sourceMapper.currentNameIndex.length - 1]; + } + var siblings = this.sourceMapper.currentMappings[this.sourceMapper.currentMappings.length - 1]; + siblings.push(sourceMapping); + this.sourceMapper.currentMappings.push(sourceMapping.childMappings); + } + }; + Emitter.prototype.recordSourceMappingEnd = function (ast) { + if(this.sourceMapper && TypeScript.isValidAstNode(ast)) { + this.sourceMapper.currentMappings.pop(); + var siblings = this.sourceMapper.currentMappings[this.sourceMapper.currentMappings.length - 1]; + var sourceMapping = siblings[siblings.length - 1]; + sourceMapping.end.emittedColumn = this.emitState.column; + sourceMapping.end.emittedLine = this.emitState.line; + } + }; + Emitter.prototype.Close = function () { + if(this.sourceMapper != null) { + TypeScript.SourceMapper.EmitSourceMapping(this.allSourceMappers); + } + try { + this.outfile.Close(); + } catch (ex) { + this.errorReporter.emitterError(null, ex.message); + } + }; + Emitter.prototype.emitJavascriptList = function (ast, delimiter, tokenId, startLine, onlyStatics, emitClassPropertiesAfterSuperCall, emitPrologue, requiresExtendsBlock) { + if (typeof emitClassPropertiesAfterSuperCall === "undefined") { emitClassPropertiesAfterSuperCall = false; } + if (typeof emitPrologue === "undefined") { emitPrologue = false; } + if(ast == null) { + return; + } else { + if(ast.nodeType != TypeScript.NodeType.List) { + this.emitPrologue(emitPrologue); + this.emitJavascript(ast, tokenId, startLine); + } else { + var list = ast; + if(list.members.length == 0) { + return; + } + this.emitParensAndCommentsInPlace(ast, true); + var len = list.members.length; + for(var i = 0; i < len; i++) { + if(emitPrologue) { + if(i == 1 || !TypeScript.hasFlag(list.flags, TypeScript.ASTFlags.StrictMode)) { + this.emitPrologue(requiresExtendsBlock); + emitPrologue = false; + } + } + if(i == 1 && emitClassPropertiesAfterSuperCall) { + var constructorDecl = (this.thisClassNode).constructorDecl; + if(constructorDecl && constructorDecl.arguments) { + var argsLen = constructorDecl.arguments.members.length; + for(var iArg = 0; iArg < argsLen; iArg++) { + var arg = constructorDecl.arguments.members[iArg]; + if((arg.varFlags & TypeScript.VarFlags.Property) != TypeScript.VarFlags.None) { + this.emitIndent(); + this.recordSourceMappingStart(arg); + this.recordSourceMappingStart(arg.id); + this.writeToOutput("this." + arg.id.actualText); + this.recordSourceMappingEnd(arg.id); + this.writeToOutput(" = "); + this.recordSourceMappingStart(arg.id); + this.writeToOutput(arg.id.actualText); + this.recordSourceMappingEnd(arg.id); + this.writeLineToOutput(";"); + this.recordSourceMappingEnd(arg); + } + } + } + var nProps = (this.thisClassNode.members).members.length; + for(var iMember = 0; iMember < nProps; iMember++) { + if((this.thisClassNode.members).members[iMember].nodeType == TypeScript.NodeType.VarDecl) { + var varDecl = (this.thisClassNode.members).members[iMember]; + if(!TypeScript.hasFlag(varDecl.varFlags, TypeScript.VarFlags.Static) && varDecl.init) { + this.emitIndent(); + this.emitJavascriptVarDecl(varDecl, TypeScript.TokenID.Tilde); + this.writeLineToOutput(""); + } + } + } + } + var emitNode = list.members[i]; + var isStaticDecl = (emitNode.nodeType == TypeScript.NodeType.FuncDecl && TypeScript.hasFlag((emitNode).fncFlags, TypeScript.FncFlags.Static)) || (emitNode.nodeType == TypeScript.NodeType.VarDecl && TypeScript.hasFlag((emitNode).varFlags, TypeScript.VarFlags.Static)); + if(onlyStatics ? !isStaticDecl : isStaticDecl) { + continue; + } + this.emitJavascript(emitNode, tokenId, startLine); + if(delimiter && (i < (len - 1))) { + if(startLine) { + this.writeLineToOutput(delimiter); + } else { + this.writeToOutput(delimiter); + } + } else { + if(startLine && (emitNode.nodeType != TypeScript.NodeType.ModuleDeclaration) && (emitNode.nodeType != TypeScript.NodeType.InterfaceDeclaration) && (!((emitNode.nodeType == TypeScript.NodeType.VarDecl) && ((((emitNode).varFlags) & TypeScript.VarFlags.Ambient) == TypeScript.VarFlags.Ambient) && (((emitNode).init) == null)) && this.varListCount() >= 0) && (emitNode.nodeType != TypeScript.NodeType.Block || (emitNode).isStatementBlock) && (emitNode.nodeType != TypeScript.NodeType.EndCode) && (emitNode.nodeType != TypeScript.NodeType.FuncDecl)) { + this.writeLineToOutput(""); + } + } + } + this.emitParensAndCommentsInPlace(ast, false); + } + } + }; + Emitter.prototype.emitJavascript = function (ast, tokenId, startLine) { + if(ast == null) { + return; + } + if(startLine && (this.indenter.indentAmt > 0) && (ast.nodeType != TypeScript.NodeType.List) && (ast.nodeType != TypeScript.NodeType.Block)) { + if((ast.nodeType != TypeScript.NodeType.InterfaceDeclaration) && (!((ast.nodeType == TypeScript.NodeType.VarDecl) && ((((ast).varFlags) & TypeScript.VarFlags.Ambient) == TypeScript.VarFlags.Ambient) && (((ast).init) == null)) && this.varListCount() >= 0) && (ast.nodeType != TypeScript.NodeType.EndCode) && ((ast.nodeType != TypeScript.NodeType.FuncDecl) || (this.emitState.container != EmitContainer.Constructor))) { + this.emitIndent(); + } + } + ast.emit(this, tokenId, startLine); + if((tokenId == TypeScript.TokenID.Semicolon) && (ast.nodeType < TypeScript.NodeType.GeneralNode)) { + this.writeToOutput(";"); + } + }; + Emitter.prototype.emitPropertyAccessor = function (funcDecl, className, isProto) { + if(!(funcDecl.accessorSymbol).hasBeenEmitted) { + var accessorSymbol = funcDecl.accessorSymbol; + this.emitIndent(); + this.recordSourceMappingStart(funcDecl); + this.writeLineToOutput("Object.defineProperty(" + className + (isProto ? ".prototype, \"" : ", \"") + funcDecl.name.actualText + "\"" + ", {"); + this.indenter.increaseIndent(); + if(accessorSymbol.getter) { + var getter = accessorSymbol.getter.declAST; + this.emitIndent(); + this.recordSourceMappingStart(getter); + this.writeToOutput("get: "); + this.emitInnerFunction(getter, false, isProto, null, Emitter.shouldCaptureThis(getter), null); + this.writeLineToOutput(","); + } + if(accessorSymbol.setter) { + var setter = accessorSymbol.setter.declAST; + this.emitIndent(); + this.recordSourceMappingStart(setter); + this.writeToOutput("set: "); + this.emitInnerFunction(setter, false, isProto, null, Emitter.shouldCaptureThis(setter), null); + this.writeLineToOutput(","); + } + this.emitIndent(); + this.writeLineToOutput("enumerable: true,"); + this.emitIndent(); + this.writeLineToOutput("configurable: true"); + this.indenter.decreaseIndent(); + this.emitIndent(); + this.writeLineToOutput("});"); + this.recordSourceMappingEnd(funcDecl); + accessorSymbol.hasBeenEmitted = true; + } + }; + Emitter.prototype.emitPrototypeMember = function (member, className) { + if(member.nodeType == TypeScript.NodeType.FuncDecl) { + var funcDecl = member; + if(funcDecl.isAccessor()) { + this.emitPropertyAccessor(funcDecl, className, true); + } else { + this.emitIndent(); + this.recordSourceMappingStart(funcDecl); + this.writeToOutput(className + ".prototype." + funcDecl.getNameText() + " = "); + this.emitInnerFunction(funcDecl, false, true, null, Emitter.shouldCaptureThis(funcDecl), null); + this.writeLineToOutput(";"); + } + } else { + if(member.nodeType == TypeScript.NodeType.VarDecl) { + var varDecl = member; + if(varDecl.init) { + this.emitIndent(); + this.recordSourceMappingStart(varDecl); + this.recordSourceMappingStart(varDecl.id); + this.writeToOutput(className + ".prototype." + varDecl.id.actualText); + this.recordSourceMappingEnd(varDecl.id); + this.writeToOutput(" = "); + this.emitJavascript(varDecl.init, TypeScript.TokenID.Equals, false); + this.recordSourceMappingEnd(varDecl); + this.writeLineToOutput(";"); + } + } + } + }; + Emitter.prototype.emitAddBaseMethods = function (className, base, classDecl) { + if(base.members) { + var baseSymbol = base.symbol; + var baseName = baseSymbol.name; + if(baseSymbol.declModule != classDecl.type.symbol.declModule) { + baseName = baseSymbol.fullName(); + } + base.members.allMembers.map(function (key, s, c) { + var sym = s; + if((sym.kind() == TypeScript.SymbolKind.Type) && (sym).type.call) { + this.recordSourceMappingStart(sym.declAST); + this.writeLineToOutput(className + ".prototype." + sym.name + " = " + baseName + ".prototype." + sym.name + ";"); + this.recordSourceMappingEnd(sym.declAST); + } + }, null); + } + if(base.extendsList) { + for(var i = 0, len = base.extendsList.length; i < len; i++) { + this.emitAddBaseMethods(className, base.extendsList[i], classDecl); + } + } + }; + Emitter.prototype.emitJavascriptClass = function (classDecl) { + if(!TypeScript.hasFlag(classDecl.varFlags, TypeScript.VarFlags.Ambient)) { + var svClassNode = this.thisClassNode; + var i = 0; + this.thisClassNode = classDecl; + var className = classDecl.name.actualText; + this.emitParensAndCommentsInPlace(classDecl, true); + var temp = this.setContainer(EmitContainer.Class); + this.recordSourceMappingStart(classDecl); + if(TypeScript.hasFlag(classDecl.varFlags, TypeScript.VarFlags.Exported) && classDecl.type.symbol.container == this.checker.gloMod) { + this.writeToOutput("this." + className); + } else { + this.writeToOutput("var " + className); + } + var hasBaseClass = classDecl.extendsList && classDecl.extendsList.members.length; + var baseNameDecl = null; + var baseName = null; + if(hasBaseClass) { + this.writeLineToOutput(" = (function (_super) {"); + } else { + this.writeLineToOutput(" = (function () {"); + } + this.recordSourceMappingNameStart(className); + this.indenter.increaseIndent(); + if(hasBaseClass) { + baseNameDecl = classDecl.extendsList.members[0]; + baseName = baseNameDecl.nodeType == TypeScript.NodeType.Call ? (baseNameDecl).target : baseNameDecl; + this.emitIndent(); + this.writeLineToOutput("__extends(" + className + ", _super);"); + } + this.emitIndent(); + var constrDecl = classDecl.constructorDecl; + if(constrDecl) { + this.emitJavascript(classDecl.constructorDecl, TypeScript.TokenID.OpenParen, false); + } else { + var wroteProps = 0; + this.recordSourceMappingStart(classDecl); + this.indenter.increaseIndent(); + this.writeToOutput("function " + classDecl.name.actualText + "() {"); + this.recordSourceMappingNameStart("constructor"); + if(hasBaseClass) { + this.writeLineToOutput(""); + this.emitIndent(); + this.writeLineToOutput("_super.apply(this, arguments);"); + wroteProps++; + } + if(classDecl.varFlags & TypeScript.VarFlags.MustCaptureThis) { + this.writeCaptureThisStatement(classDecl); + } + var members = (this.thisClassNode.members).members; + for(var i = 0; i < members.length; i++) { + if(members[i].nodeType == TypeScript.NodeType.VarDecl) { + var varDecl = members[i]; + if(!TypeScript.hasFlag(varDecl.varFlags, TypeScript.VarFlags.Static) && varDecl.init) { + this.writeLineToOutput(""); + this.emitIndent(); + this.emitJavascriptVarDecl(varDecl, TypeScript.TokenID.Tilde); + wroteProps++; + } + } + } + if(wroteProps) { + this.writeLineToOutput(""); + this.indenter.decreaseIndent(); + this.emitIndent(); + this.writeLineToOutput("}"); + } else { + this.writeLineToOutput(" }"); + this.indenter.decreaseIndent(); + } + this.recordSourceMappingNameEnd(); + this.recordSourceMappingEnd(classDecl); + } + var membersLen = classDecl.members.members.length; + for(var j = 0; j < membersLen; j++) { + var memberDecl = classDecl.members.members[j]; + if(memberDecl.nodeType == TypeScript.NodeType.FuncDecl) { + var fn = memberDecl; + if(TypeScript.hasFlag(fn.fncFlags, TypeScript.FncFlags.Method) && !fn.isSignature()) { + if(!TypeScript.hasFlag(fn.fncFlags, TypeScript.FncFlags.Static)) { + this.emitPrototypeMember(fn, className); + } else { + if(fn.isAccessor()) { + this.emitPropertyAccessor(fn, this.thisClassNode.name.actualText, false); + } else { + this.emitIndent(); + this.recordSourceMappingStart(fn); + this.writeToOutput(classDecl.name.actualText + "." + fn.name.actualText + " = "); + this.emitInnerFunction(fn, (fn.name && !fn.name.isMissing()), true, null, Emitter.shouldCaptureThis(fn), null); + this.writeLineToOutput(";"); + } + } + } + } else { + if(memberDecl.nodeType == TypeScript.NodeType.VarDecl) { + var varDecl = memberDecl; + if(TypeScript.hasFlag(varDecl.varFlags, TypeScript.VarFlags.Static)) { + if(varDecl.init) { + this.emitIndent(); + this.recordSourceMappingStart(varDecl); + this.writeToOutput(classDecl.name.actualText + "." + varDecl.id.actualText + " = "); + this.emitJavascript(varDecl.init, TypeScript.TokenID.Equals, false); + this.writeLineToOutput(";"); + this.recordSourceMappingEnd(varDecl); + } + } + } else { + throw Error("We want to catch this"); + } + } + } + this.emitIndent(); + this.recordSourceMappingStart(classDecl.endingToken); + this.writeLineToOutput("return " + className + ";"); + this.recordSourceMappingEnd(classDecl.endingToken); + this.indenter.decreaseIndent(); + this.emitIndent(); + this.recordSourceMappingStart(classDecl.endingToken); + this.writeToOutput("}"); + this.recordSourceMappingNameEnd(); + this.recordSourceMappingEnd(classDecl.endingToken); + this.recordSourceMappingStart(classDecl); + this.writeToOutput(")("); + if(hasBaseClass) { + this.emitJavascript(baseName, TypeScript.TokenID.Tilde, false); + } + this.writeToOutput(");"); + this.recordSourceMappingEnd(classDecl); + if((temp == EmitContainer.Module || temp == EmitContainer.DynamicModule) && TypeScript.hasFlag(classDecl.varFlags, TypeScript.VarFlags.Exported)) { + this.writeLineToOutput(""); + this.emitIndent(); + var modName = temp == EmitContainer.Module ? this.moduleName : "exports"; + this.recordSourceMappingStart(classDecl); + this.writeToOutput(modName + "." + className + " = " + className + ";"); + this.recordSourceMappingEnd(classDecl); + } + this.emitIndent(); + this.recordSourceMappingEnd(classDecl); + this.emitParensAndCommentsInPlace(classDecl, false); + this.setContainer(temp); + this.thisClassNode = svClassNode; + } + }; + Emitter.prototype.emitPrologue = function (reqInherits) { + if(!this.prologueEmitted) { + if(reqInherits) { + this.prologueEmitted = true; + this.writeLineToOutput("var __extends = this.__extends || function (d, b) {"); + this.writeLineToOutput(" function __() { this.constructor = d; }"); + this.writeLineToOutput(" __.prototype = b.prototype;"); + this.writeLineToOutput(" d.prototype = new __();"); + this.writeLineToOutput("};"); + } + if(this.checker.mustCaptureGlobalThis) { + this.prologueEmitted = true; + this.writeLineToOutput(this.captureThisStmtString); + } + } + }; + Emitter.prototype.emitSuperReference = function () { + this.writeToOutput("_super.prototype"); + }; + Emitter.prototype.emitSuperCall = function (callEx) { + if(callEx.target.nodeType == TypeScript.NodeType.Dot) { + var dotNode = callEx.target; + if(dotNode.operand1.nodeType == TypeScript.NodeType.Super) { + this.emitJavascript(dotNode, TypeScript.TokenID.OpenParen, false); + this.writeToOutput(".call("); + this.emitThis(); + if(callEx.arguments && callEx.arguments.members.length > 0) { + this.writeToOutput(", "); + this.emitJavascriptList(callEx.arguments, ", ", TypeScript.TokenID.Comma, false, false, false); + } + this.writeToOutput(")"); + return true; + } + } + return false; + }; + Emitter.prototype.emitThis = function () { + if(this.thisFnc && !this.thisFnc.isMethod() && (!this.thisFnc.isConstructor)) { + this.writeToOutput("_this"); + } else { + this.writeToOutput("this"); + } + }; + Emitter.shouldCaptureThis = function shouldCaptureThis(func) { + return func.hasSelfReference() || func.hasSuperReferenceInFatArrowFunction(); + } + Emitter.prototype.createFile = function (fileName, useUTF8) { + try { + return this.emitOptions.ioHost.createFile(fileName, useUTF8); + } catch (ex) { + this.errorReporter.emitterError(null, ex.message); + } + }; + return Emitter; + })(); + TypeScript.Emitter = Emitter; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + var ErrorReporter = (function () { + function ErrorReporter(outfile) { + this.outfile = outfile; + this.parser = null; + this.checker = null; + this.lineCol = { + line: 0, + col: 0 + }; + this.emitAsComments = true; + this.hasErrors = false; + this.pushToErrorSink = false; + this.errorSink = []; + } + ErrorReporter.prototype.getCapturedErrors = function () { + return this.errorSink; + }; + ErrorReporter.prototype.freeCapturedErrors = function () { + this.errorSink = []; + }; + ErrorReporter.prototype.captureError = function (emsg) { + this.errorSink[this.errorSink.length] = emsg; + }; + ErrorReporter.prototype.setErrOut = function (outerr) { + this.outfile = outerr; + this.emitAsComments = false; + }; + ErrorReporter.prototype.emitPrefix = function () { + if(this.emitAsComments) { + this.outfile.Write("// "); + } + this.outfile.Write(this.checker.locationInfo.filename + "(" + this.lineCol.line + "," + this.lineCol.col + "): "); + }; + ErrorReporter.prototype.writePrefix = function (ast) { + if(ast) { + this.setError(ast); + } else { + this.lineCol.line = 0; + this.lineCol.col = 0; + } + this.emitPrefix(); + }; + ErrorReporter.prototype.writePrefixFromSym = function (symbol) { + if(symbol && this.checker.locationInfo.lineMap) { + TypeScript.getSourceLineColFromMap(this.lineCol, symbol.location, this.checker.locationInfo.lineMap); + } else { + this.lineCol.line = -1; + this.lineCol.col = -1; + } + this.emitPrefix(); + }; + ErrorReporter.prototype.setError = function (ast) { + if(ast) { + ast.flags |= TypeScript.ASTFlags.Error; + if(this.checker.locationInfo.lineMap) { + TypeScript.getSourceLineColFromMap(this.lineCol, ast.minChar, this.checker.locationInfo.lineMap); + } + } + }; + ErrorReporter.prototype.reportError = function (ast, message) { + if(this.pushToErrorSink) { + this.captureError(message); + return; + } + this.hasErrors = true; + if(ast && this.parser.errorRecovery && this.parser.errorCallback) { + var len = (ast.limChar - ast.minChar); + this.parser.errorCallback(ast.minChar, len, message, this.checker.locationInfo.unitIndex); + } else { + this.writePrefix(ast); + this.outfile.WriteLine(message); + } + }; + ErrorReporter.prototype.reportErrorFromSym = function (symbol, message) { + if(this.pushToErrorSink) { + this.captureError(message); + return; + } + this.hasErrors = true; + if(this.parser.errorRecovery && this.parser.errorCallback) { + this.parser.errorCallback(symbol.location, symbol.length, message, this.checker.locationInfo.unitIndex); + } else { + this.writePrefixFromSym(symbol); + this.outfile.WriteLine(message); + } + }; + ErrorReporter.prototype.emitterError = function (ast, message) { + this.reportError(ast, message); + throw Error("EmitError"); + }; + ErrorReporter.prototype.duplicateIdentifier = function (ast, name) { + this.reportError(ast, "Duplicate identifier '" + name + "'"); + }; + ErrorReporter.prototype.showRef = function (ast, text, symbol) { + var defLineCol = { + line: -1, + col: -1 + }; + this.parser.getSourceLineCol(defLineCol, symbol.location); + this.reportError(ast, "symbol " + text + " defined at (" + defLineCol.line + "," + defLineCol.col + ")"); + }; + ErrorReporter.prototype.unresolvedSymbol = function (ast, name) { + this.reportError(ast, "The name '" + name + "' does not exist in the current scope"); + }; + ErrorReporter.prototype.symbolDoesNotReferToAValue = function (ast, name) { + this.reportError(ast, "The name '" + name + "' does not refer to a value"); + }; + ErrorReporter.prototype.styleError = function (ast, msg) { + var bkThrow = this.pushToErrorSink; + this.pushToErrorSink = false; + this.reportError(ast, "STYLE: " + msg); + this.pushToErrorSink = bkThrow; + }; + ErrorReporter.prototype.simpleError = function (ast, msg) { + this.reportError(ast, msg); + }; + ErrorReporter.prototype.simpleErrorFromSym = function (sym, msg) { + this.reportErrorFromSym(sym, msg); + }; + ErrorReporter.prototype.invalidSuperReference = function (ast) { + this.simpleError(ast, "Keyword 'super' can only be used inside a class instance method"); + }; + ErrorReporter.prototype.valueCannotBeModified = function (ast) { + this.simpleError(ast, "The left-hand side of an assignment expression must be a variable, property or indexer"); + }; + ErrorReporter.prototype.invalidCall = function (ast, nodeType, scope) { + var targetType = ast.target.type; + var typeName = targetType.getScopedTypeName(scope); + if(targetType.construct && (nodeType == TypeScript.NodeType.Call)) { + this.reportError(ast, "Value of type '" + typeName + "' is not callable. Did you mean to include 'new'?"); + } else { + var catString = (nodeType == TypeScript.NodeType.Call) ? "callable" : "newable"; + this.reportError(ast, "Value of type '" + typeName + "' is not " + catString); + } + }; + ErrorReporter.prototype.indexLHS = function (ast, scope) { + var targetType = ast.operand1.type.getScopedTypeName(scope); + var indexType = ast.operand2.type.getScopedTypeName(scope); + this.simpleError(ast, "Value of type '" + targetType + "' is not indexable by type '" + indexType + "'"); + }; + ErrorReporter.prototype.incompatibleTypes = function (ast, t1, t2, op, scope, comparisonInfo) { + if(!t1) { + t1 = this.checker.anyType; + } + if(!t2) { + t2 = this.checker.anyType; + } + var reason = comparisonInfo ? comparisonInfo.message : ""; + if(op) { + this.reportError(ast, "Operator '" + op + "' cannot be applied to types '" + t1.getScopedTypeName(scope) + "' and '" + t2.getScopedTypeName(scope) + "'" + (reason ? ": " + reason : "")); + } else { + this.reportError(ast, "Cannot convert '" + t1.getScopedTypeName(scope) + "' to '" + t2.getScopedTypeName(scope) + "'" + (reason ? ": " + reason : "")); + } + }; + ErrorReporter.prototype.expectedClassOrInterface = function (ast) { + this.simpleError(ast, "Expected var, class, interface, or module"); + }; + ErrorReporter.prototype.unaryOperatorTypeError = function (ast, op, type) { + this.reportError(ast, "Operator '" + op + "' cannot be applied to type '" + type.getTypeName() + "'"); + }; + return ErrorReporter; + })(); + TypeScript.ErrorReporter = ErrorReporter; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + (function (TypeContext) { + TypeContext._map = []; + TypeContext.NoTypes = 0; + TypeContext.ArraySuffix = 1; + TypeContext.Primitive = 2; + TypeContext.Named = 4; + TypeContext.AllSimpleTypes = TypeContext.Primitive | TypeContext.Named; + TypeContext.AllTypes = TypeContext.Primitive | TypeContext.Named | TypeContext.ArraySuffix; + })(TypeScript.TypeContext || (TypeScript.TypeContext = {})); + var TypeContext = TypeScript.TypeContext; + (function (ParseState) { + ParseState._map = []; + ParseState._map[0] = "None"; + ParseState.None = 0; + ParseState._map[1] = "StartScript"; + ParseState.StartScript = 1; + ParseState._map[2] = "StartStatementList"; + ParseState.StartStatementList = 2; + ParseState._map[3] = "StartStatement"; + ParseState.StartStatement = 3; + ParseState._map[4] = "StartFncDecl"; + ParseState.StartFncDecl = 4; + ParseState._map[5] = "FncDeclName"; + ParseState.FncDeclName = 5; + ParseState._map[6] = "FncDeclArgs"; + ParseState.FncDeclArgs = 6; + ParseState._map[7] = "FncDeclReturnType"; + ParseState.FncDeclReturnType = 7; + ParseState._map[8] = "ForInit"; + ParseState.ForInit = 8; + ParseState._map[9] = "ForInitAfterVar"; + ParseState.ForInitAfterVar = 9; + ParseState._map[10] = "ForCondStart"; + ParseState.ForCondStart = 10; + ParseState._map[11] = "EndStmtList"; + ParseState.EndStmtList = 11; + ParseState._map[12] = "EndScript"; + ParseState.EndScript = 12; + })(TypeScript.ParseState || (TypeScript.ParseState = {})); + var ParseState = TypeScript.ParseState; + var QuickParseResult = (function () { + function QuickParseResult(Script, endLexState) { + this.Script = Script; + this.endLexState = endLexState; + } + return QuickParseResult; + })(); + TypeScript.QuickParseResult = QuickParseResult; + var Parser = (function () { + function Parser() { + this.varLists = []; + this.scopeLists = []; + this.staticsLists = []; + this.scanner = new TypeScript.Scanner(); + this.currentToken = null; + this.needTerminator = false; + this.inFunction = false; + this.inInterfaceDecl = false; + this.currentClassDecl = null; + this.inFncDecl = false; + this.anonId = new TypeScript.Identifier("_anonymous"); + this.style_requireSemi = false; + this.style_funcInLoop = true; + this.incremental = false; + this.errorRecovery = false; + this.outfile = undefined; + this.errorCallback = null; + this.state = ParseState.StartStatementList; + this.ambientModule = false; + this.ambientClass = false; + this.topLevel = true; + this.allowImportDeclaration = true; + this.currentUnitIndex = (-1); + this.prevIDTok = null; + this.statementInfoStack = new Array(); + this.hasTopLevelImportOrExport = false; + this.strictMode = false; + this.nestingLevel = 0; + this.prevExpr = null; + this.currentClassDefinition = null; + this.parsingClassConstructorDefinition = false; + this.parsingDeclareFile = false; + this.amdDependencies = []; + this.inferPropertiesFromThisAssignment = false; + this.requiresExtendsBlock = false; + this.fname = ""; + } + Parser.prototype.resetStmtStack = function () { + this.statementInfoStack = new Array(); + }; + Parser.prototype.inLoop = function () { + for(var j = this.statementInfoStack.length - 1; j >= 0; j--) { + if(this.statementInfoStack[j].stmt.isLoop()) { + return true; + } + } + return false; + }; + Parser.prototype.pushStmt = function (stmt, labels) { + var info = { + stmt: stmt, + labels: labels + }; + this.statementInfoStack.push(info); + }; + Parser.prototype.popStmt = function () { + return this.statementInfoStack.pop(); + }; + Parser.prototype.resolveJumpTarget = function (jump) { + var resolvedTarget = TypeScript.AST.getResolvedIdentifierName(jump.target); + var len = this.statementInfoStack.length; + for(var i = len - 1; i >= 0; i--) { + var info = this.statementInfoStack[i]; + if(jump.target) { + if(info.labels && (info.labels.members.length > 0)) { + for(var j = 0, labLen = info.labels.members.length; j < labLen; j++) { + var label = info.labels.members[j]; + if(label.id.text == resolvedTarget) { + jump.setResolvedTarget(this, info.stmt); + return; + } + } + } + } else { + if(info.stmt.isLoop()) { + jump.setResolvedTarget(this, info.stmt); + return; + } else { + if((info.stmt.nodeType == TypeScript.NodeType.Switch) && (jump.nodeType == TypeScript.NodeType.Break)) { + jump.setResolvedTarget(this, info.stmt); + return; + } + } + } + } + if(jump.target) { + this.reportParseError("could not find enclosing statement with label " + jump.target); + } else { + if(jump.nodeType == TypeScript.NodeType.Break) { + this.reportParseError("break statement requires enclosing loop or switch"); + } else { + this.reportParseError("continue statement requires enclosing loop"); + } + } + }; + Parser.prototype.setErrorRecovery = function (outfile) { + this.outfile = outfile; + this.errorRecovery = true; + }; + Parser.prototype.getSourceLineCol = function (lineCol, minChar) { + TypeScript.getSourceLineColFromMap(lineCol, minChar, this.scanner.lineMap); + }; + Parser.prototype.createRef = function (text, hasEscapeSequence, minChar) { + var id = new TypeScript.Identifier(text, hasEscapeSequence); + id.minChar = minChar; + return id; + }; + Parser.prototype.reportParseStyleError = function (message) { + this.reportParseError("STYLE: " + message); + }; + Parser.prototype.reportParseError = function (message, startPos, pos) { + if (typeof startPos === "undefined") { startPos = this.scanner.startPos; } + if (typeof pos === "undefined") { pos = this.scanner.pos; } + var len = Math.max(1, pos - startPos); + if(this.errorCallback) { + this.errorCallback(startPos, len, message, this.currentUnitIndex); + } else { + if(this.errorRecovery) { + var lineCol = { + line: -1, + col: -1 + }; + this.getSourceLineCol(lineCol, startPos); + if(this.outfile) { + this.outfile.WriteLine("// " + this.fname + " (" + lineCol.line + "," + lineCol.col + "): " + message); + } + } else { + throw new SyntaxError(this.fname + " (" + this.scanner.line + "," + this.scanner.col + "): " + message); + } + } + }; + Parser.prototype.checkNextToken = function (tokenId, errorRecoverySet, errorText) { + if (typeof errorText === "undefined") { errorText = null; } + this.currentToken = this.scanner.scan(); + this.checkCurrentToken(tokenId, errorRecoverySet, errorText); + }; + Parser.prototype.skip = function (errorRecoverySet) { + errorRecoverySet |= TypeScript.ErrorRecoverySet.EOF; + var ersTok = TypeScript.ErrorRecoverySet.None; + var tokenInfo = TypeScript.lookupToken(this.currentToken.tokenId); + if(tokenInfo != undefined) { + ersTok = tokenInfo.ers; + } + var pendingRightCurlies = 0; + while(((ersTok & errorRecoverySet) == TypeScript.ErrorRecoverySet.None) || (this.currentToken.tokenId == TypeScript.TokenID.CloseBrace) && (pendingRightCurlies > 0)) { + if(this.currentToken.tokenId == TypeScript.TokenID.OpenBrace) { + pendingRightCurlies++; + } else { + if(this.currentToken.tokenId == TypeScript.TokenID.CloseBrace) { + pendingRightCurlies--; + } + } + this.currentToken = this.scanner.scan(); + ersTok = TypeScript.ErrorRecoverySet.None; + tokenInfo = TypeScript.lookupToken(this.currentToken.tokenId); + if(tokenInfo != undefined) { + ersTok = tokenInfo.ers; + } + } + }; + Parser.prototype.checkCurrentToken = function (tokenId, errorRecoverySet, errorText) { + if (typeof errorText === "undefined") { errorText = null; } + if(this.currentToken.tokenId != tokenId) { + errorText = errorText == null ? ("Expected '" + TypeScript.tokenTable[tokenId].text + "'") : errorText; + this.reportParseError(errorText); + if(this.errorRecovery) { + this.skip(errorRecoverySet); + } + } else { + this.currentToken = this.scanner.scan(); + } + }; + Parser.prototype.pushDeclLists = function () { + this.staticsLists.push(new TypeScript.ASTList()); + this.varLists.push(new TypeScript.ASTList()); + this.scopeLists.push(new TypeScript.ASTList()); + }; + Parser.prototype.popDeclLists = function () { + this.staticsLists.pop(); + this.varLists.pop(); + this.scopeLists.pop(); + }; + Parser.prototype.topVarList = function () { + return this.varLists[this.varLists.length - 1]; + }; + Parser.prototype.topScopeList = function () { + return this.scopeLists[this.scopeLists.length - 1]; + }; + Parser.prototype.topStaticsList = function () { + return this.staticsLists[this.staticsLists.length - 1]; + }; + Parser.prototype.parseComment = function (comment) { + if(comment) { + var c = new TypeScript.Comment(comment.value, comment.isBlock, comment.endsLine); + c.minChar = comment.startPos; + c.limChar = comment.startPos + comment.value.length; + var lineCol = { + line: -1, + col: -1 + }; + this.getSourceLineCol(lineCol, c.minChar); + c.minLine = lineCol.line; + this.getSourceLineCol(lineCol, c.limChar); + c.limLine = lineCol.line; + if(!comment.isBlock && comment.value.length > 3 && comment.value.substring(0, 3) == "///") { + var dependencyPath = TypeScript.getAdditionalDependencyPath(comment.value); + if(dependencyPath) { + this.amdDependencies.push(dependencyPath); + } + if(TypeScript.getImplicitImport(comment.value)) { + this.hasTopLevelImportOrExport = true; + } + } + return c; + } else { + return null; + } + }; + Parser.prototype.parseCommentsInner = function (comments) { + if(comments) { + var commentASTs = new Array(); + for(var i = 0; i < comments.length; i++) { + commentASTs.push(this.parseComment(comments[i])); + } + return commentASTs; + } else { + return null; + } + }; + Parser.prototype.parseComments = function () { + var comments = this.scanner.getComments(); + return this.parseCommentsInner(comments); + }; + Parser.prototype.parseCommentsForLine = function (line) { + var comments = this.scanner.getCommentsForLine(line); + return this.parseCommentsInner(comments); + }; + Parser.prototype.combineComments = function (comment1, comment2) { + if(comment1 == null) { + return comment2; + } else { + if(comment2 == null) { + return comment1; + } else { + return comment1.concat(comment2); + } + } + }; + Parser.prototype.parseEnumDecl = function (errorRecoverySet, modifiers) { + var leftCurlyCount = this.scanner.leftCurlyCount; + var rightCurlyCount = this.scanner.rightCurlyCount; + var name = null; + if((this.currentToken.tokenId == TypeScript.TokenID.Identifier) || TypeScript.convertTokToID(this.currentToken, this.strictMode)) { + name = TypeScript.Identifier.fromToken(this.currentToken); + name.minChar = this.scanner.startPos; + name.limChar = this.scanner.pos; + this.currentToken = this.scanner.scan(); + } else { + this.reportParseError("Enum declaration requires identifier"); + if(this.errorRecovery) { + name = new TypeScript.MissingIdentifier(); + name.minChar = this.scanner.startPos; + name.limChar = this.scanner.startPos; + name.flags |= TypeScript.ASTFlags.Error; + } + } + var membersMinChar = this.scanner.startPos; + this.checkCurrentToken(TypeScript.TokenID.OpenBrace, errorRecoverySet | TypeScript.ErrorRecoverySet.ID); + this.pushDeclLists(); + var members = new TypeScript.ASTList(); + members.minChar = membersMinChar; + var mapDecl = new TypeScript.VarDecl(new TypeScript.Identifier("_map"), 0); + mapDecl.varFlags |= TypeScript.VarFlags.Exported; + mapDecl.varFlags |= TypeScript.VarFlags.Private; + mapDecl.varFlags |= (TypeScript.VarFlags.Property | TypeScript.VarFlags.Public); + mapDecl.init = new TypeScript.UnaryExpression(TypeScript.NodeType.ArrayLit, null); + members.append(mapDecl); + var lastValue = null; + for(; ; ) { + var minChar = this.scanner.startPos; + var limChar; + var memberName = null; + var memberValue = null; + var preComments = null; + var postComments = null; + if((this.currentToken.tokenId == TypeScript.TokenID.Identifier) || TypeScript.convertTokToIDName(this.currentToken)) { + memberName = TypeScript.Identifier.fromToken(this.currentToken); + memberName.minChar = this.scanner.startPos; + memberName.limChar = this.scanner.pos; + } else { + if(this.currentToken.tokenId == TypeScript.TokenID.CloseBrace) { + break; + } else { + this.reportParseError("Expected identifer of enum member"); + if(this.errorRecovery) { + memberName = new TypeScript.MissingIdentifier(); + memberName.minChar = this.scanner.startPos; + memberName.limChar = this.scanner.startPos; + memberName.flags |= TypeScript.ASTFlags.Error; + } + } + } + limChar = this.scanner.pos; + preComments = this.parseComments(); + this.currentToken = this.scanner.scan(); + postComments = this.parseComments(); + if(this.currentToken.tokenId == TypeScript.TokenID.Equals) { + this.currentToken = this.scanner.scan(); + memberValue = this.parseExpr(errorRecoverySet, TypeScript.OperatorPrecedence.Comma, true, TypeContext.NoTypes); + lastValue = memberValue; + limChar = memberValue.limChar; + } else { + if(lastValue == null) { + memberValue = new TypeScript.NumberLiteral(0); + lastValue = memberValue; + } else { + memberValue = new TypeScript.NumberLiteral(lastValue.value + 1); + lastValue = memberValue; + } + var map = new TypeScript.BinaryExpression(TypeScript.NodeType.Asg, new TypeScript.BinaryExpression(TypeScript.NodeType.Index, new TypeScript.Identifier("_map"), memberValue), new TypeScript.StringLiteral('"' + memberName.actualText + '"')); + members.append(map); + } + var member = new TypeScript.VarDecl(memberName, this.nestingLevel); + member.minChar = minChar; + member.limChar = limChar; + member.init = memberValue; + member.typeExpr = new TypeScript.TypeReference(this.createRef(name.actualText, name.hasEscapeSequence, -1), 0); + member.varFlags |= (TypeScript.VarFlags.Readonly | TypeScript.VarFlags.Property); + if(memberValue.nodeType == TypeScript.NodeType.NumberLit) { + member.varFlags |= TypeScript.VarFlags.Constant; + } + member.preComments = preComments; + members.append(member); + member.postComments = postComments; + member.varFlags |= TypeScript.VarFlags.Exported; + if(this.currentToken.tokenId == TypeScript.TokenID.Comma) { + this.currentToken = this.scanner.scan(); + member.postComments = this.combineComments(member.postComments, this.parseCommentsForLine(this.scanner.prevLine)); + if((this.currentToken.tokenId == TypeScript.TokenID.Identifier) || (TypeScript.convertTokToIDName(this.currentToken))) { + continue; + } + } + break; + } + var endingToken = new TypeScript.ASTSpan(); + endingToken.minChar = this.scanner.startPos; + endingToken.limChar = this.scanner.pos; + this.checkCurrentToken(TypeScript.TokenID.CloseBrace, errorRecoverySet); + members.limChar = this.scanner.lastTokenLimChar(); + var modDecl = new TypeScript.ModuleDeclaration(name, members, this.topVarList(), this.topScopeList(), endingToken); + modDecl.modFlags |= TypeScript.ModuleFlags.IsEnum; + this.popDeclLists(); + modDecl.leftCurlyCount = this.scanner.leftCurlyCount - leftCurlyCount; + modDecl.rightCurlyCount = this.scanner.rightCurlyCount - rightCurlyCount; + return modDecl; + }; + Parser.prototype.parseDottedName = function (enclosedList) { + this.currentToken = this.scanner.scan(); + if((this.currentToken.tokenId == TypeScript.TokenID.Identifier) || TypeScript.convertTokToID(this.currentToken, this.strictMode)) { + var id = TypeScript.Identifier.fromToken(this.currentToken); + id.preComments = this.parseComments(); + enclosedList[enclosedList.length] = id; + id.minChar = this.scanner.startPos; + id.limChar = this.scanner.pos; + this.currentToken = this.scanner.scan(); + if(this.currentToken.tokenId == TypeScript.TokenID.Dot) { + this.parseDottedName(enclosedList); + } + } else { + this.reportParseError("need identifier after '.'"); + } + }; + Parser.prototype.isValidImportPath = function (importPath) { + importPath = TypeScript.stripQuotes(importPath); + if(!importPath || importPath.indexOf(':') != -1 || importPath.indexOf('\\') != -1 || importPath.charAt(0) == '/') { + return false; + } + return true; + }; + Parser.prototype.parseImportDeclaration = function (errorRecoverySet, modifiers) { + var name = null; + var alias = null; + var importDecl = null; + var minChar = this.scanner.startPos; + var isDynamicImport = false; + this.currentToken = this.scanner.scan(); + if(this.currentToken.tokenId == TypeScript.TokenID.Identifier || TypeScript.convertTokToID(this.currentToken, this.strictMode)) { + name = TypeScript.Identifier.fromToken(this.currentToken); + } else { + this.reportParseError("Expected identifer after 'import'"); + name = new TypeScript.MissingIdentifier(); + } + name.minChar = this.scanner.startPos; + name.limChar = this.scanner.pos; + this.currentToken = this.scanner.scan(); + this.checkCurrentToken(TypeScript.TokenID.Equals, errorRecoverySet | TypeScript.ErrorRecoverySet.ID); + var aliasPreComments = this.parseComments(); + var limChar; + if(this.currentToken.tokenId == TypeScript.TokenID.Identifier || TypeScript.convertTokToID(this.currentToken, this.strictMode)) { + if(this.currentToken.tokenId == TypeScript.TokenID.Module) { + limChar = this.scanner.pos; + this.currentToken = this.scanner.scan(); + if(this.currentToken.tokenId == TypeScript.TokenID.OpenParen) { + this.currentToken = this.scanner.scan(); + if(this.currentToken.tokenId == TypeScript.TokenID.StringLiteral || this.currentToken.tokenId == TypeScript.TokenID.Identifier || TypeScript.convertTokToID(this.currentToken, this.strictMode)) { + if(this.currentToken.tokenId == TypeScript.TokenID.StringLiteral) { + if(this.topLevel) { + this.hasTopLevelImportOrExport = true; + } else { + if(!this.allowImportDeclaration) { + this.reportParseError("Import declaration of external module is permitted only in global or top level dynamic modules"); + } + } + var aliasText = this.currentToken.getText(); + alias = TypeScript.Identifier.fromToken(this.currentToken); + alias.minChar = this.scanner.startPos; + alias.limChar = this.scanner.pos; + if(!this.isValidImportPath((alias).text)) { + this.reportParseError("Invalid import path"); + } + isDynamicImport = true; + this.currentToken = this.scanner.scan(); + alias.preComments = aliasPreComments; + } else { + alias = this.parseExpr(errorRecoverySet | TypeScript.ErrorRecoverySet.SColon, TypeScript.OperatorPrecedence.Assignment, true, TypeContext.NoTypes); + alias.preComments = aliasPreComments; + } + } + limChar = this.scanner.pos; + this.checkCurrentToken(TypeScript.TokenID.CloseParen, errorRecoverySet | TypeScript.ErrorRecoverySet.ID); + if(alias) { + alias.postComments = this.parseComments(); + } + } + } else { + alias = this.parseExpr(errorRecoverySet | TypeScript.ErrorRecoverySet.SColon, TypeScript.OperatorPrecedence.Assignment, true, TypeContext.NoTypes); + limChar = this.scanner.pos; + } + } else { + this.reportParseError("Expected module name"); + alias = new TypeScript.MissingIdentifier(); + alias.minChar = this.scanner.startPos; + if(this.currentToken.tokenId == TypeScript.TokenID.Semicolon) { + alias.limChar = this.scanner.startPos; + } else { + alias.limChar = this.scanner.pos; + this.currentToken = this.scanner.scan(); + } + alias.flags |= TypeScript.ASTFlags.Error; + limChar = alias.limChar; + } + importDecl = new TypeScript.ImportDeclaration(name, alias); + importDecl.isDynamicImport = isDynamicImport; + importDecl.minChar = minChar; + importDecl.limChar = limChar; + return importDecl; + }; + Parser.prototype.parseModuleDecl = function (errorRecoverySet, modifiers, preComments) { + var leftCurlyCount = this.scanner.leftCurlyCount; + var rightCurlyCount = this.scanner.rightCurlyCount; + var svAmbient = this.ambientModule; + var svTopLevel = this.topLevel; + this.topLevel = false; + if(this.parsingDeclareFile || svAmbient || TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Ambient)) { + this.ambientModule = true; + } + this.currentToken = this.scanner.scan(); + var name = null; + var enclosedList = null; + this.pushDeclLists(); + var minChar = this.scanner.startPos; + var isDynamicMod = false; + if((this.currentToken.tokenId == TypeScript.TokenID.Identifier) || (this.currentToken.tokenId == TypeScript.TokenID.StringLiteral) || (!TypeScript.isPrimitiveTypeToken(this.currentToken) && TypeScript.convertTokToID(this.currentToken, this.strictMode))) { + var nameText = this.currentToken.getText(); + if(this.currentToken.tokenId == TypeScript.TokenID.StringLiteral) { + isDynamicMod = true; + if(!this.ambientModule) { + this.reportParseError("Only ambient dynamic modules may have string literal names"); + } + if(!svTopLevel) { + this.reportParseError("Dynamic modules may not be nested within other modules"); + } + } + name = TypeScript.Identifier.fromToken(this.currentToken); + name.minChar = this.scanner.startPos; + name.limChar = this.scanner.pos; + this.currentToken = this.scanner.scan(); + } else { + if(this.currentToken.tokenId == TypeScript.TokenID.OpenBrace) { + this.reportParseError("Module name missing"); + name = new TypeScript.Identifier(""); + name.minChar = minChar; + name.limChar = minChar; + } + } + if(this.currentToken.tokenId == TypeScript.TokenID.Dot) { + enclosedList = new Array(); + this.parseDottedName(enclosedList); + } + if(name == null) { + name = new TypeScript.MissingIdentifier(); + } + var moduleBody = new TypeScript.ASTList(); + var bodyMinChar = this.scanner.startPos; + this.checkCurrentToken(TypeScript.TokenID.OpenBrace, errorRecoverySet | TypeScript.ErrorRecoverySet.ID); + if(svTopLevel && isDynamicMod) { + this.allowImportDeclaration = true; + } else { + this.allowImportDeclaration = false; + } + this.parseStatementList(errorRecoverySet | TypeScript.ErrorRecoverySet.RCurly, moduleBody, true, true, TypeScript.AllowedElements.Global, modifiers); + moduleBody.minChar = bodyMinChar; + moduleBody.limChar = this.scanner.pos; + var endingToken = new TypeScript.ASTSpan(); + endingToken.minChar = this.scanner.startPos; + endingToken.limChar = this.scanner.pos; + this.checkCurrentToken(TypeScript.TokenID.CloseBrace, errorRecoverySet); + var limChar = this.scanner.lastTokenLimChar(); + var moduleDecl; + this.allowImportDeclaration = svTopLevel; + if(enclosedList && (enclosedList.length > 0)) { + var len = enclosedList.length; + var innerName = enclosedList[len - 1]; + var innerDecl = new TypeScript.ModuleDeclaration(innerName, moduleBody, this.topVarList(), this.topScopeList(), endingToken); + innerDecl.preComments = preComments; + if(this.parsingDeclareFile || TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Ambient)) { + innerDecl.modFlags |= TypeScript.ModuleFlags.Ambient; + } + innerDecl.modFlags |= TypeScript.ModuleFlags.Exported; + innerDecl.minChar = minChar; + innerDecl.limChar = limChar; + this.popDeclLists(); + var outerModBod; + for(var i = len - 2; i >= 0; i--) { + outerModBod = new TypeScript.ASTList(); + outerModBod.append(innerDecl); + innerName = enclosedList[i]; + innerDecl = new TypeScript.ModuleDeclaration(innerName, outerModBod, new TypeScript.ASTList(), new TypeScript.ASTList(), endingToken); + outerModBod.minChar = innerDecl.minChar = minChar; + outerModBod.limChar = innerDecl.limChar = limChar; + if(this.parsingDeclareFile || TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Ambient)) { + innerDecl.modFlags |= TypeScript.ModuleFlags.Ambient; + } + innerDecl.modFlags |= TypeScript.ModuleFlags.Exported; + } + outerModBod = new TypeScript.ASTList(); + outerModBod.append(innerDecl); + outerModBod.minChar = minChar; + outerModBod.limChar = limChar; + moduleDecl = new TypeScript.ModuleDeclaration(name, outerModBod, new TypeScript.ASTList(), new TypeScript.ASTList(), endingToken); + } else { + moduleDecl = new TypeScript.ModuleDeclaration(name, moduleBody, this.topVarList(), this.topScopeList(), endingToken); + moduleDecl.preComments = preComments; + this.popDeclLists(); + } + if(this.parsingDeclareFile || svAmbient || TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Ambient)) { + moduleDecl.modFlags |= TypeScript.ModuleFlags.Ambient; + } + if(svAmbient || TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Exported)) { + moduleDecl.modFlags |= TypeScript.ModuleFlags.Exported; + } + if(isDynamicMod) { + moduleDecl.modFlags |= TypeScript.ModuleFlags.IsDynamic; + } + this.ambientModule = svAmbient; + this.topLevel = svTopLevel; + moduleDecl.leftCurlyCount = this.scanner.leftCurlyCount - leftCurlyCount; + moduleDecl.rightCurlyCount = this.scanner.rightCurlyCount - rightCurlyCount; + moduleDecl.limChar = moduleBody.limChar; + return moduleDecl; + }; + Parser.prototype.parseTypeReferenceTail = function (errorRecoverySet, minChar, term) { + var result = new TypeScript.TypeReference(term, 0); + result.minChar = minChar; + while(this.currentToken.tokenId == TypeScript.TokenID.OpenBracket) { + this.currentToken = this.scanner.scan(); + result.arrayCount++; + this.checkCurrentToken(TypeScript.TokenID.CloseBracket, errorRecoverySet | TypeScript.ErrorRecoverySet.LBrack); + } + result.limChar = this.scanner.lastTokenLimChar(); + return result; + }; + Parser.prototype.parseNamedType = function (errorRecoverySet, minChar, term, tail) { + this.currentToken = this.scanner.scan(); + if(this.currentToken.tokenId == TypeScript.TokenID.Dot) { + var curpos = this.scanner.pos; + this.currentToken = this.scanner.scan(); + if((this.currentToken.tokenId == TypeScript.TokenID.Identifier) || ((!this.errorRecovery || !this.scanner.lastTokenHadNewline()) && TypeScript.convertTokToID(this.currentToken, this.strictMode))) { + var op2 = TypeScript.Identifier.fromToken(this.currentToken); + op2.minChar = this.scanner.startPos; + op2.limChar = this.scanner.pos; + var dotNode = new TypeScript.BinaryExpression(TypeScript.NodeType.Dot, term, op2); + dotNode.minChar = term.minChar; + dotNode.limChar = op2.limChar; + return this.parseNamedType(errorRecoverySet, minChar, dotNode, tail); + } else { + this.reportParseError("need identifier after '.'"); + if(this.errorRecovery) { + term.flags |= TypeScript.ASTFlags.DotLHS; + term.limChar = this.scanner.lastTokenLimChar(); + return term; + } else { + var eop2 = new TypeScript.MissingIdentifier(); + eop2.minChar = this.scanner.pos; + eop2.limChar = this.scanner.pos; + var edotNode = new TypeScript.BinaryExpression(TypeScript.NodeType.Dot, term, eop2); + edotNode.flags |= TypeScript.ASTFlags.Error; + edotNode.minChar = term.minChar; + edotNode.limChar = eop2.limChar; + return this.parseNamedType(errorRecoverySet, minChar, edotNode, tail); + } + } + } else { + if(tail) { + return this.parseTypeReferenceTail(errorRecoverySet, minChar, term); + } else { + return term; + } + } + }; + Parser.prototype.parseTypeReference = function (errorRecoverySet, allowVoid) { + var minChar = this.scanner.startPos; + var isConstructorMember = false; + switch(this.currentToken.tokenId) { + case TypeScript.TokenID.Void: { + if(!allowVoid) { + this.reportParseError("void not a valid type in this context"); + } + + } + case TypeScript.TokenID.Any: + case TypeScript.TokenID.Number: + case TypeScript.TokenID.Bool: + case TypeScript.TokenID.String: { + var text = TypeScript.tokenTable[this.currentToken.tokenId].text; + var predefinedIdentifier = new TypeScript.Identifier(text); + predefinedIdentifier.minChar = minChar; + predefinedIdentifier.limChar = this.scanner.pos; + this.currentToken = this.scanner.scan(); + return this.parseTypeReferenceTail(errorRecoverySet, minChar, predefinedIdentifier); + } + + case TypeScript.TokenID.Identifier: { + var ident = this.createRef(this.currentToken.getText(), (this.currentToken).hasEscapeSequence, minChar); + ident.limChar = this.scanner.pos; + return this.parseNamedType(errorRecoverySet, minChar, ident, true); + + } + case TypeScript.TokenID.OpenBrace: { + return this.parseObjectType(minChar, errorRecoverySet); + + } + case TypeScript.TokenID.New: { + this.currentToken = this.scanner.scan(); + if(this.currentToken.tokenId != TypeScript.TokenID.OpenParen) { + this.reportParseError("Expected '('"); + } else { + isConstructorMember = true; + } + + } + case TypeScript.TokenID.OpenParen: { + var formals = new TypeScript.ASTList(); + var variableArgList = this.parseFormalParameterList(errorRecoverySet | TypeScript.ErrorRecoverySet.RParen, formals, false, true, false, false, false, false, null, true); + this.checkCurrentToken(TypeScript.TokenID.EqualsGreaterThan, errorRecoverySet); + var returnType = this.parseTypeReference(errorRecoverySet, true); + var funcDecl = new TypeScript.FuncDecl(null, null, false, formals, null, null, null, TypeScript.NodeType.FuncDecl); + funcDecl.returnTypeAnnotation = returnType; + funcDecl.variableArgList = variableArgList; + funcDecl.fncFlags |= TypeScript.FncFlags.Signature; + if(isConstructorMember) { + funcDecl.fncFlags |= TypeScript.FncFlags.ConstructMember; + funcDecl.hint = "_construct"; + funcDecl.classDecl = null; + } + funcDecl.minChar = minChar; + return this.parseTypeReferenceTail(errorRecoverySet, minChar, funcDecl); + } + + default: { + this.reportParseError("Expected type name"); + var etr = new TypeScript.TypeReference(null, 0); + etr.flags |= TypeScript.ASTFlags.Error; + etr.minChar = this.scanner.pos; + etr.limChar = this.scanner.pos; + return etr; + + } + } + }; + Parser.prototype.parseObjectType = function (minChar, errorRecoverySet) { + this.currentToken = this.scanner.scan(); + var members = new TypeScript.ASTList(); + members.minChar = minChar; + var prevInInterfaceDecl = this.inInterfaceDecl; + this.inInterfaceDecl = true; + this.parseTypeMemberList(errorRecoverySet | TypeScript.ErrorRecoverySet.RCurly, members); + this.inInterfaceDecl = prevInInterfaceDecl; + this.checkCurrentToken(TypeScript.TokenID.CloseBrace, errorRecoverySet); + var interfaceDecl = new TypeScript.InterfaceDeclaration(this.anonId, members, null, null); + interfaceDecl.minChar = minChar; + interfaceDecl.limChar = members.limChar; + return this.parseTypeReferenceTail(errorRecoverySet, minChar, interfaceDecl); + }; + Parser.prototype.parseFunctionBlock = function (errorRecoverySet, allowedElements, parentModifiers, bod, bodMinChar) { + this.state = ParseState.StartStatementList; + this.checkCurrentToken(TypeScript.TokenID.OpenBrace, errorRecoverySet | TypeScript.ErrorRecoverySet.StmtStart); + var savedInFunction = this.inFunction; + this.inFunction = true; + this.parseStatementList(errorRecoverySet | TypeScript.ErrorRecoverySet.RCurly | TypeScript.ErrorRecoverySet.StmtStart, bod, true, false, allowedElements, parentModifiers); + bod.minChar = bodMinChar; + bod.limChar = this.scanner.pos; + this.inFunction = savedInFunction; + var ec = new TypeScript.EndCode(); + ec.minChar = bod.limChar; + ec.limChar = ec.minChar; + bod.append(ec); + }; + Parser.prototype.parseFunctionStatements = function (errorRecoverySet, name, isConstructor, isMethod, args, allowedElements, minChar, requiresSignature, parentModifiers) { + this.pushDeclLists(); + var svStmtStack = this.statementInfoStack; + this.resetStmtStack(); + var bod = null; + var wasShorthand = false; + var isAnonLambda = false; + var limChar; + if(requiresSignature) { + limChar = this.scanner.pos; + if(this.currentToken.tokenId === TypeScript.TokenID.OpenBrace) { + this.reportParseError("Function declarations are not permitted within interfaces, ambient modules or classes"); + bod = new TypeScript.ASTList(); + var bodMinChar = this.scanner.startPos; + this.parseFunctionBlock(errorRecoverySet, allowedElements, parentModifiers, bod, bodMinChar); + this.checkCurrentToken(TypeScript.TokenID.CloseBrace, errorRecoverySet); + if(this.currentToken.tokenId === TypeScript.TokenID.Semicolon) { + this.currentToken = this.scanner.scan(); + } + } else { + this.checkCurrentToken(TypeScript.TokenID.Semicolon, errorRecoverySet, "Expected ';'"); + } + } else { + bod = new TypeScript.ASTList(); + var bodMinChar = this.scanner.startPos; + if(this.currentToken.tokenId == TypeScript.TokenID.EqualsGreaterThan) { + if(isMethod) { + this.reportParseError("'=>' may not be used for class methods"); + } + wasShorthand = true; + this.currentToken = this.scanner.scan(); + } + if(wasShorthand && this.currentToken.tokenId != TypeScript.TokenID.OpenBrace) { + var retExpr = this.parseExpr(errorRecoverySet | TypeScript.ErrorRecoverySet.SColon, TypeScript.OperatorPrecedence.Assignment, true, TypeContext.NoTypes); + var retStmt = new TypeScript.ReturnStatement(); + retStmt.returnExpression = retExpr; + retStmt.minChar = retExpr.minChar; + retStmt.limChar = retExpr.limChar; + bod.minChar = bodMinChar; + bod.append(retStmt); + } else { + isAnonLambda = wasShorthand; + this.parseFunctionBlock(errorRecoverySet, allowedElements, parentModifiers, bod, bodMinChar); + } + limChar = this.scanner.pos; + } + var funcDecl = new TypeScript.FuncDecl(name, bod, isConstructor, args, this.topVarList(), this.topScopeList(), this.topStaticsList(), TypeScript.NodeType.FuncDecl); + this.popDeclLists(); + var scopeList = this.topScopeList(); + scopeList.append(funcDecl); + var staticFuncDecl = false; + if(!requiresSignature) { + if(!wasShorthand || isAnonLambda) { + funcDecl.endingToken = new TypeScript.ASTSpan(); + funcDecl.endingToken.minChar = this.scanner.startPos; + funcDecl.endingToken.limChar = this.scanner.pos; + this.checkCurrentToken(TypeScript.TokenID.CloseBrace, errorRecoverySet); + if(isAnonLambda) { + funcDecl.fncFlags |= TypeScript.FncFlags.IsFatArrowFunction; + } + } else { + funcDecl.fncFlags |= TypeScript.FncFlags.IsFatArrowFunction; + funcDecl.endingToken = new TypeScript.ASTSpan(); + funcDecl.endingToken.minChar = bod.members[0].minChar; + funcDecl.endingToken.limChar = bod.members[0].limChar; + } + } + funcDecl.minChar = minChar; + funcDecl.limChar = limChar; + if(!requiresSignature) { + funcDecl.fncFlags |= TypeScript.FncFlags.Definition; + } + this.statementInfoStack = svStmtStack; + return funcDecl; + }; + Parser.prototype.transformAnonymousArgsIntoFormals = function (formals, argList) { + var _this = this; + var translateBinExOperand = function (operand) { + if(operand.nodeType == TypeScript.NodeType.Comma) { + return _this.transformAnonymousArgsIntoFormals(formals, operand); + } else { + if(operand.nodeType == TypeScript.NodeType.Name || operand.nodeType == TypeScript.NodeType.Asg) { + var opArg = operand.nodeType == TypeScript.NodeType.Asg ? (operand).operand1 : operand; + var arg = new TypeScript.ArgDecl(opArg); + arg.preComments = opArg.preComments; + arg.postComments = opArg.postComments; + arg.minChar = operand.minChar; + arg.limChar = operand.limChar; + if(TypeScript.hasFlag(opArg.flags, TypeScript.ASTFlags.PossibleOptionalParameter)) { + arg.isOptional = true; + } + if(operand.nodeType == TypeScript.NodeType.Asg) { + arg.init = (operand).operand2; + } + formals.append(arg); + return arg.isOptional || arg.init; + } else { + _this.reportParseError("Invalid lambda argument"); + } + } + return false; + }; + if(argList) { + if(argList.nodeType == TypeScript.NodeType.Comma) { + var commaList = argList; + if(commaList.operand1.isParenthesized) { + this.reportParseError("Invalid lambda argument", commaList.operand1.minChar, commaList.operand1.limChar); + } + if(commaList.operand2.isParenthesized) { + this.reportParseError("Invalid lambda argument", commaList.operand2.minChar, commaList.operand2.limChar); + } + var isOptional = translateBinExOperand(commaList.operand1); + isOptional = translateBinExOperand(commaList.operand2) || isOptional; + return isOptional; + } else { + return translateBinExOperand(argList); + } + } + }; + Parser.prototype.parseFormalParameterList = function (errorRecoverySet, formals, isClassConstr, isSig, isIndexer, isGetter, isSetter, isLambda, preProcessedLambdaArgs, expectClosingRParen) { + formals.minChar = this.scanner.startPos; + if(isIndexer) { + this.currentToken = this.scanner.scan(); + } else { + if(!isLambda) { + this.checkCurrentToken(TypeScript.TokenID.OpenParen, errorRecoverySet | TypeScript.ErrorRecoverySet.RParen); + } + } + var sawEllipsis = false; + var firstArg = true; + var hasOptional = false; + var haveFirstArgID = false; + if(isLambda && preProcessedLambdaArgs && preProcessedLambdaArgs.nodeType != TypeScript.NodeType.EmptyExpr) { + hasOptional = this.transformAnonymousArgsIntoFormals(formals, preProcessedLambdaArgs); + haveFirstArgID = true; + } + while(true) { + var munchedArg = false; + var argFlags = TypeScript.VarFlags.None; + var argMinChar = this.scanner.startPos; + if(this.inferPropertiesFromThisAssignment && this.currentToken.tokenId == TypeScript.TokenID.This) { + if(!isClassConstr) { + this.reportParseError("Instance property declarations using 'this' may only be used in class constructors"); + } + this.currentToken = this.scanner.scan(); + argFlags |= (TypeScript.VarFlags.Public | TypeScript.VarFlags.Property); + if(this.currentClassDefinition) { + this.currentClassDefinition.varFlags |= TypeScript.VarFlags.ClassSuperMustBeFirstCallInConstructor; + } + } + if(this.currentToken.tokenId == TypeScript.TokenID.Public) { + argFlags |= (TypeScript.VarFlags.Public | TypeScript.VarFlags.Property); + if(this.currentClassDefinition) { + this.currentClassDefinition.varFlags |= TypeScript.VarFlags.ClassSuperMustBeFirstCallInConstructor; + } + } else { + if(this.currentToken.tokenId == TypeScript.TokenID.Private) { + argFlags |= (TypeScript.VarFlags.Private | TypeScript.VarFlags.Property); + if(this.currentClassDefinition) { + this.currentClassDefinition.varFlags |= TypeScript.VarFlags.ClassSuperMustBeFirstCallInConstructor; + } + } else { + if(this.currentToken.tokenId == TypeScript.TokenID.Static && isClassConstr) { + this.reportParseError("Static properties can not be declared as parameter properties"); + this.currentToken = this.scanner.scan(); + } + } + } + if(argFlags != TypeScript.VarFlags.None) { + if(!isClassConstr) { + this.reportParseError("only constructor parameters can be properties"); + } + this.currentToken = this.scanner.scan(); + if(TypeScript.isModifier(this.currentToken)) { + this.reportParseError("Multiple modifiers may not be applied to parameters"); + this.currentToken = this.scanner.scan(); + } + if(this.inferPropertiesFromThisAssignment && this.currentToken.tokenId == TypeScript.TokenID.This) { + if(!isClassConstr) { + this.reportParseError("Instance property declarations using 'this' may only be used in class constructors"); + } + this.currentToken = this.scanner.scan(); + this.currentToken = this.scanner.scan(); + } + } else { + if(this.currentToken.tokenId == TypeScript.TokenID.DotDotDot) { + sawEllipsis = true; + this.currentToken = this.scanner.scan(); + if(!(this.currentToken.tokenId == TypeScript.TokenID.Identifier) || TypeScript.convertTokToID(this.currentToken, this.strictMode)) { + this.reportParseError("'...' parameters require both a parameter name and an array type annotation to be specified"); + sawEllipsis = false; + } + } + } + var argId = null; + if(!haveFirstArgID && (this.currentToken.tokenId == TypeScript.TokenID.Identifier) || TypeScript.convertTokToID(this.currentToken, this.strictMode)) { + argId = TypeScript.Identifier.fromToken(this.currentToken); + argId.minChar = this.scanner.startPos; + argId.limChar = this.scanner.pos; + } + if(haveFirstArgID || argId) { + munchedArg = true; + var type = null; + var arg = null; + if(haveFirstArgID && formals.members.length) { + arg = formals.members[formals.members.length - 1]; + if(arg.isOptional) { + hasOptional = true; + } + } else { + arg = new TypeScript.ArgDecl(argId); + if(isGetter) { + this.reportParseError("Property getters may not take any arguments"); + } + if(isSetter && !firstArg) { + this.reportParseError("Property setters may only take one argument"); + } + arg.minChar = argMinChar; + arg.preComments = this.parseComments(); + this.currentToken = this.scanner.scan(); + } + if(this.currentToken.tokenId == TypeScript.TokenID.Question) { + arg.isOptional = true; + hasOptional = true; + this.currentToken = this.scanner.scan(); + } + if(this.currentToken.tokenId == TypeScript.TokenID.Colon) { + this.currentToken = this.scanner.scan(); + type = this.parseTypeReference(errorRecoverySet, false); + } + if(this.currentToken.tokenId == TypeScript.TokenID.Equals) { + if(isSig) { + this.reportParseError("Arguments in signatures may not have default values"); + } + hasOptional = true; + this.currentToken = this.scanner.scan(); + arg.init = this.parseExpr(TypeScript.ErrorRecoverySet.Comma | errorRecoverySet, TypeScript.OperatorPrecedence.Comma, false, TypeContext.NoTypes); + } + if(hasOptional && !arg.isOptionalArg() && !sawEllipsis) { + this.reportParseError("Optional parameters may only be followed by other optional parameters"); + } + if(sawEllipsis && arg.isOptionalArg()) { + this.reportParseError("Varargs may not be optional or have default parameters"); + } + if(sawEllipsis && !type) { + this.reportParseError("'...' parameters require both a parameter name and an array type annotation to be specified"); + } + arg.postComments = this.parseComments(); + arg.typeExpr = type; + arg.limChar = this.scanner.lastTokenLimChar(); + arg.varFlags |= argFlags; + if(!haveFirstArgID) { + formals.append(arg); + } else { + haveFirstArgID = false; + } + } + firstArg = false; + if(this.currentToken.tokenId == TypeScript.TokenID.Comma) { + if((munchedArg) && (!sawEllipsis)) { + this.currentToken = this.scanner.scan(); + continue; + } else { + this.reportParseError("Unexpected ',' in argument list"); + if(this.errorRecovery) { + this.currentToken = this.scanner.scan(); + continue; + } + } + } else { + break; + } + } + if(isIndexer) { + this.checkCurrentToken(TypeScript.TokenID.CloseBracket, errorRecoverySet | TypeScript.ErrorRecoverySet.LCurly | TypeScript.ErrorRecoverySet.SColon); + } else { + if(expectClosingRParen) { + this.checkCurrentToken(TypeScript.TokenID.CloseParen, errorRecoverySet | TypeScript.ErrorRecoverySet.LCurly | TypeScript.ErrorRecoverySet.SColon); + } + } + formals.limChar = this.scanner.lastTokenLimChar(); + return sawEllipsis; + }; + Parser.prototype.parseFncDecl = function (errorRecoverySet, isDecl, requiresSignature, isMethod, methodName, indexer, isStatic, markedAsAmbient, modifiers, lambdaArgContext, expectClosingRParen) { + var leftCurlyCount = this.scanner.leftCurlyCount; + var rightCurlyCount = this.scanner.rightCurlyCount; + var prevInConstr = this.parsingClassConstructorDefinition; + this.parsingClassConstructorDefinition = false; + var name = null; + var fnMin = this.scanner.startPos; + var minChar = this.scanner.pos; + var prevNestingLevel = this.nestingLevel; + var preComments = this.parseComments(); + var isLambda = !!lambdaArgContext; + this.nestingLevel = 0; + if((!this.style_funcInLoop) && this.inLoop()) { + this.reportParseStyleError("function declaration in loop"); + } + if(!isMethod && !isStatic && !indexer && !lambdaArgContext) { + this.currentToken = this.scanner.scan(); + this.state = ParseState.StartFncDecl; + if((this.currentToken.tokenId != TypeScript.TokenID.Identifier) && (!TypeScript.convertTokToID(this.currentToken, this.strictMode))) { + if(isDecl) { + this.reportParseError("Function declaration must include identifier"); + this.nestingLevel = prevNestingLevel; + return new TypeScript.IncompleteAST(fnMin, this.scanner.pos); + } + } else { + name = TypeScript.Identifier.fromToken(this.currentToken); + name.minChar = this.scanner.startPos; + name.limChar = this.scanner.pos; + this.currentToken = this.scanner.scan(); + } + } else { + if(methodName) { + name = methodName; + } + } + this.state = ParseState.FncDeclName; + var args = new TypeScript.ASTList(); + var variableArgList = false; + var isOverload = false; + var isGetter = TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Getter); + var isSetter = TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Setter); + if((this.currentToken.tokenId == TypeScript.TokenID.OpenParen) || (indexer && (this.currentToken.tokenId == TypeScript.TokenID.OpenBracket)) || (lambdaArgContext && (lambdaArgContext.preProcessedLambdaArgs || this.currentToken.tokenId == TypeScript.TokenID.DotDotDot))) { + variableArgList = this.parseFormalParameterList(errorRecoverySet, args, false, requiresSignature, indexer, isGetter, isSetter, isLambda, lambdaArgContext ? lambdaArgContext.preProcessedLambdaArgs : null, expectClosingRParen); + } + this.state = ParseState.FncDeclArgs; + var returnType = null; + if(this.currentToken.tokenId == TypeScript.TokenID.Colon) { + this.currentToken = this.scanner.scan(); + if(TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Setter)) { + this.reportParseError("Property setters may not declare a return type"); + } + returnType = this.parseTypeReference(errorRecoverySet, true); + } + if(indexer && args.members.length == 0) { + this.reportParseError("Index signatures require a parameter type to be specified"); + } + this.state = ParseState.FncDeclReturnType; + if(isLambda && this.currentToken.tokenId != TypeScript.TokenID.EqualsGreaterThan) { + this.reportParseError("Expected '=>'"); + } + if(isDecl && !(this.parsingDeclareFile || markedAsAmbient) && (!isMethod || !(this.ambientModule || this.ambientClass || this.inInterfaceDecl)) && this.currentToken.tokenId == TypeScript.TokenID.Semicolon) { + isOverload = true; + isDecl = false; + requiresSignature = true; + } + var svInFncDecl = this.inFncDecl; + this.inFncDecl = true; + var funcDecl = this.parseFunctionStatements(errorRecoverySet | TypeScript.ErrorRecoverySet.RCurly, name, false, isMethod, args, TypeScript.AllowedElements.None, minChar, requiresSignature, TypeScript.Modifiers.None); + this.inFncDecl = svInFncDecl; + funcDecl.variableArgList = variableArgList; + funcDecl.isOverload = isOverload; + if(!requiresSignature) { + funcDecl.fncFlags |= TypeScript.FncFlags.Definition; + } + if(isStatic) { + funcDecl.fncFlags |= TypeScript.FncFlags.Static; + } + if(requiresSignature) { + funcDecl.fncFlags |= TypeScript.FncFlags.Signature; + } + if(indexer) { + funcDecl.fncFlags |= TypeScript.FncFlags.IndexerMember; + } + funcDecl.returnTypeAnnotation = returnType; + if(isMethod) { + funcDecl.fncFlags |= TypeScript.FncFlags.Method; + funcDecl.fncFlags |= TypeScript.FncFlags.ClassPropertyMethodExported; + } + funcDecl.leftCurlyCount = this.scanner.leftCurlyCount - leftCurlyCount; + funcDecl.rightCurlyCount = this.scanner.rightCurlyCount - rightCurlyCount; + this.nestingLevel = prevNestingLevel; + this.parsingClassConstructorDefinition = prevInConstr; + funcDecl.preComments = preComments; + return funcDecl; + }; + Parser.prototype.convertToTypeReference = function (ast) { + var result; + switch(ast.nodeType) { + case TypeScript.NodeType.TypeRef: { + return ast; + + } + case TypeScript.NodeType.Name: { + result = new TypeScript.TypeReference(ast, 0); + result.minChar = ast.minChar; + result.limChar = ast.limChar; + return result; + + } + case TypeScript.NodeType.Index: { + var expr = ast; + result = this.convertToTypeReference(expr.operand1); + if(result) { + result.arrayCount++; + result.minChar = expr.minChar; + result.limChar = expr.limChar; + return result; + } else { + var etr = new TypeScript.AST(TypeScript.NodeType.Error); + return etr; + } + } + + } + return null; + }; + Parser.prototype.parseArgList = function (errorRecoverySet) { + var args = new TypeScript.ASTList(); + args.minChar = this.scanner.startPos; + this.currentToken = this.scanner.scan(); + if(this.currentToken.tokenId !== TypeScript.TokenID.CloseParen) { + while(true) { + if(args.members.length > 65535) { + this.reportParseError("max number of args exceeded"); + break; + } + var arg = this.parseExpr(TypeScript.ErrorRecoverySet.Comma | errorRecoverySet, TypeScript.OperatorPrecedence.Comma, true, TypeContext.NoTypes); + args.append(arg); + if(this.currentToken.tokenId != TypeScript.TokenID.Comma) { + break; + } + this.currentToken = this.scanner.scan(); + } + } + args.limChar = this.scanner.pos; + return args; + }; + Parser.prototype.parseBaseList = function (extendsList, implementsList, errorRecoverySet, isClass) { + var keyword = true; + var currentList = extendsList; + for(; ; ) { + if(keyword) { + if(this.currentToken.tokenId === TypeScript.TokenID.Implements) { + currentList = implementsList; + } else { + if(this.currentToken.tokenId == TypeScript.TokenID.Extends && !this.requiresExtendsBlock) { + this.requiresExtendsBlock = isClass; + } + } + this.currentToken = this.scanner.scan(); + keyword = false; + } + var baseName = null; + if((this.currentToken.tokenId == TypeScript.TokenID.Identifier) || TypeScript.convertTokToID(this.currentToken, this.strictMode)) { + var minChar = this.scanner.startPos; + baseName = TypeScript.Identifier.fromToken(this.currentToken); + baseName.minChar = minChar; + baseName.limChar = this.scanner.pos; + baseName = this.parseNamedType(errorRecoverySet | TypeScript.ErrorRecoverySet.LCurly, minChar, baseName, false); + } else { + this.reportParseError("Expected base name"); + if(this.errorRecovery) { + baseName = new TypeScript.MissingIdentifier(); + baseName.minChar = this.scanner.pos; + baseName.limChar = this.scanner.pos; + baseName.flags |= TypeScript.ASTFlags.Error; + } + } + if(this.currentToken.tokenId == TypeScript.TokenID.OpenParen) { + if(isClass) { + this.reportParseError("Base classes may only be initialized via a 'super' call within the constructor body"); + } else { + this.reportParseError("Interfaces may not be extended with a call expression"); + } + } else { + currentList.append(baseName); + } + if(isClass && currentList == extendsList && extendsList.members.length > 1) { + this.reportParseError("A class may only extend one other class"); + } + if(this.currentToken.tokenId == TypeScript.TokenID.Comma) { + this.currentToken = this.scanner.scan(); + continue; + } else { + if((this.currentToken.tokenId == TypeScript.TokenID.Extends) || (this.currentToken.tokenId == TypeScript.TokenID.Implements)) { + if(this.currentToken.tokenId == TypeScript.TokenID.Extends && !this.requiresExtendsBlock) { + this.requiresExtendsBlock = isClass; + } + currentList = extendsList; + keyword = true; + continue; + } + } + break; + } + }; + Parser.prototype.parseClassDecl = function (errorRecoverySet, minChar, modifiers) { + var leftCurlyCount = this.scanner.leftCurlyCount; + var rightCurlyCount = this.scanner.rightCurlyCount; + if((modifiers & TypeScript.Modifiers.Readonly) != TypeScript.Modifiers.None) { + this.reportParseError("const modifier is implicit for class"); + } + if(this.parsingDeclareFile || this.ambientModule) { + modifiers |= TypeScript.Modifiers.Ambient; + modifiers |= TypeScript.Modifiers.Exported; + } + var classIsMarkedAsAmbient = this.parsingDeclareFile || (modifiers & TypeScript.Modifiers.Ambient) != TypeScript.Modifiers.None; + var svAmbientClass = this.ambientClass; + this.ambientClass = classIsMarkedAsAmbient; + this.currentToken = this.scanner.scan(); + var name = null; + if((this.currentToken.tokenId == TypeScript.TokenID.Identifier) || (!TypeScript.isPrimitiveTypeToken(this.currentToken) && TypeScript.convertTokToID(this.currentToken, this.strictMode))) { + name = TypeScript.Identifier.fromToken(this.currentToken); + name.minChar = this.scanner.startPos; + name.limChar = this.scanner.pos; + this.currentToken = this.scanner.scan(); + } else { + this.reportParseError("class missing name"); + if(this.errorRecovery) { + name = new TypeScript.MissingIdentifier(); + name.minChar = this.scanner.pos; + name.limChar = this.scanner.pos; + name.flags |= TypeScript.ASTFlags.Error; + } + } + var extendsList = null; + var implementsList = null; + var requiresSignature = false; + if((this.currentToken.tokenId == TypeScript.TokenID.Extends) || (this.currentToken.tokenId == TypeScript.TokenID.Implements)) { + extendsList = new TypeScript.ASTList(); + implementsList = new TypeScript.ASTList(); + this.parseBaseList(extendsList, implementsList, errorRecoverySet, true); + } + var classDecl = new TypeScript.ClassDeclaration(name, new TypeScript.ASTList(), extendsList, implementsList); + this.currentClassDefinition = classDecl; + this.parseClassElements(classDecl, errorRecoverySet, modifiers); + if(this.ambientModule || this.parsingDeclareFile || TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Exported)) { + classDecl.varFlags |= TypeScript.VarFlags.Exported; + } + if(this.ambientModule || TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Ambient)) { + classDecl.varFlags |= TypeScript.VarFlags.Ambient; + } + classDecl.varFlags |= TypeScript.VarFlags.Class; + this.ambientClass = svAmbientClass; + classDecl.leftCurlyCount = this.scanner.leftCurlyCount - leftCurlyCount; + classDecl.rightCurlyCount = this.scanner.rightCurlyCount - rightCurlyCount; + return classDecl; + }; + Parser.prototype.parseClassElements = function (classDecl, errorRecoverySet, parentModifiers) { + var modifiers = parentModifiers; + var resetModifiers = false; + var membersMinChar = this.scanner.startPos; + this.checkCurrentToken(TypeScript.TokenID.OpenBrace, errorRecoverySet); + this.nestingLevel++; + var currentMemberMinChar = this.scanner.startPos; + var wasGetOrSetId = false; + while(!(this.currentToken.tokenId == TypeScript.TokenID.CloseBrace || this.currentToken.tokenId == TypeScript.TokenID.EndOfFile)) { + var scanNext = true; + var publicOrPrivateFlags = TypeScript.Modifiers.Public | TypeScript.Modifiers.Private; + if(this.currentToken.tokenId == TypeScript.TokenID.Get) { + if(modifiers & TypeScript.Modifiers.Getter) { + this.reportParseError("Duplicate 'get' declaration in class body"); + } + if(modifiers & TypeScript.Modifiers.Setter) { + this.reportParseError("Getter already marked as a setter"); + } + modifiers |= TypeScript.Modifiers.Getter; + } else { + if(this.currentToken.tokenId == TypeScript.TokenID.Set) { + if(modifiers & TypeScript.Modifiers.Setter) { + this.reportParseError("Duplicate 'set' declaration in class body"); + } + if(modifiers & TypeScript.Modifiers.Getter) { + this.reportParseError("Setter already marked as a getter"); + } + modifiers |= TypeScript.Modifiers.Setter; + } else { + if(this.currentToken.tokenId == TypeScript.TokenID.Private) { + if(modifiers & publicOrPrivateFlags) { + this.reportParseError("Multiple modifiers may not be applied to class members"); + } + modifiers |= TypeScript.Modifiers.Private; + } else { + if(this.currentToken.tokenId == TypeScript.TokenID.Public) { + if(modifiers & publicOrPrivateFlags) { + this.reportParseError("Multiple modifiers may not be applied to class members"); + } + modifiers |= TypeScript.Modifiers.Public; + } else { + if(this.currentToken.tokenId == TypeScript.TokenID.Static) { + if(modifiers & TypeScript.Modifiers.Static) { + this.reportParseError("Multiple modifiers may not be applied to class members"); + } + modifiers |= TypeScript.Modifiers.Static; + } else { + if(this.currentToken.tokenId == TypeScript.TokenID.Constructor) { + if(modifiers != parentModifiers) { + this.reportParseError("Constructors may not have modifiers"); + } + this.parseClassConstructorDeclaration(currentMemberMinChar, errorRecoverySet, modifiers); + scanNext = false; + resetModifiers = true; + } else { + if(wasGetOrSetId || this.currentToken.tokenId == TypeScript.TokenID.Identifier || TypeScript.convertTokToIDName(this.currentToken)) { + var idText = wasGetOrSetId ? ((modifiers & TypeScript.Modifiers.Getter) ? "get" : "set") : this.currentToken.getText(); + var id = wasGetOrSetId ? new TypeScript.Identifier(idText) : TypeScript.Identifier.fromToken(this.currentToken); + id.minChar = this.scanner.startPos; + id.limChar = this.scanner.pos; + if(wasGetOrSetId) { + modifiers = modifiers ^ ((modifiers & TypeScript.Modifiers.Getter) ? TypeScript.Modifiers.Getter : TypeScript.Modifiers.Setter); + wasGetOrSetId = false; + } else { + this.currentToken = this.scanner.scan(); + } + if(this.currentToken.tokenId == TypeScript.TokenID.OpenParen) { + this.parseClassMemberFunctionDeclaration(id, currentMemberMinChar, errorRecoverySet, modifiers); + scanNext = false; + } else { + if(modifiers & TypeScript.Modifiers.Getter || modifiers & TypeScript.Modifiers.Setter) { + this.reportParseError("Property accessors must be functions"); + } + var varDecl = this.parseClassMemberVariableDeclaration(id, currentMemberMinChar, false, errorRecoverySet, modifiers); + if(varDecl.init && varDecl.init.nodeType == TypeScript.NodeType.FuncDecl) { + if(this.currentToken.tokenId == TypeScript.TokenID.CloseBrace) { + scanNext = false; + } + } else { + if(varDecl.init && varDecl.init.nodeType == TypeScript.NodeType.ObjectLit && this.currentToken.tokenId != TypeScript.TokenID.Semicolon) { + scanNext = false; + varDecl.init.flags |= TypeScript.ASTFlags.AutomaticSemicolon; + } else { + if(this.currentToken.tokenId != TypeScript.TokenID.Semicolon) { + this.reportParseError("Expected ';'"); + scanNext = false; + } + } + } + } + resetModifiers = true; + } else { + if(this.currentToken.tokenId == TypeScript.TokenID.Super) { + this.reportParseError("Base class initializers must be the first statement in a class definition"); + } else { + if(!wasGetOrSetId && ((modifiers & TypeScript.Modifiers.Getter) || (modifiers & TypeScript.Modifiers.Setter)) && ((this.currentToken.tokenId == TypeScript.TokenID.OpenParen) || (this.currentToken.tokenId == TypeScript.TokenID.Equals) || (this.currentToken.tokenId == TypeScript.TokenID.Colon) || (this.currentToken.tokenId == TypeScript.TokenID.Semicolon))) { + wasGetOrSetId = true; + scanNext = false; + } else { + if(this.currentToken.tokenId != TypeScript.TokenID.Semicolon) { + this.reportParseError("Unexpected '" + this.currentToken.getText() + "' in class definition"); + resetModifiers = true; + } + } + } + } + } + } + } + } + } + } + if(scanNext) { + this.currentToken = this.scanner.scan(); + if (this.currentToken === undefined) this.currentToken = this.scanner.scan(); + } + if(resetModifiers) { + modifiers = parentModifiers; + currentMemberMinChar = this.scanner.startPos; + resetModifiers = false; + } + } + var membersLimChar = this.scanner.pos; + if(this.currentToken.tokenId == TypeScript.TokenID.CloseBrace) { + classDecl.endingToken = new TypeScript.ASTSpan(); + classDecl.endingToken.minChar = this.scanner.startPos; + classDecl.endingToken.limChar = this.scanner.pos; + if(!this.currentClassDefinition.members.members.length) { + this.currentClassDefinition.preComments = this.parseComments(); + } + this.currentToken = this.scanner.scan(); + } + this.nestingLevel--; + this.currentClassDefinition.members.minChar = membersMinChar; + this.currentClassDefinition.members.limChar = membersLimChar; + this.currentClassDefinition.limChar = membersLimChar; + this.currentClassDefinition = null; + }; + Parser.prototype.parseClassConstructorDeclaration = function (minChar, errorRecoverySet, modifiers) { + this.parsingClassConstructorDefinition = true; + var isAmbient = this.parsingDeclareFile || TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Ambient); + var args = new TypeScript.ASTList(); + var variableArgList = false; + var preComments = this.parseComments(); + this.currentToken = this.scanner.scan(); + if(this.currentToken.tokenId == TypeScript.TokenID.OpenParen) { + variableArgList = this.parseFormalParameterList(errorRecoverySet, args, true, isAmbient, false, false, false, false, null, true); + if(args.members.length > 0) { + var lastArg = args.members[args.members.length - 1]; + } + } + var requiresSignature = isAmbient || this.currentToken.tokenId == TypeScript.TokenID.Semicolon; + if(requiresSignature) { + for(var i = 0; i < args.members.length; i++) { + var arg = args.members[i]; + if(TypeScript.hasFlag(arg.varFlags, TypeScript.VarFlags.Property)) { + this.reportParseError("Overload or ambient signatures may not specify parameter properties", arg.minChar, arg.limChar); + } + } + } + if(!requiresSignature) { + this.currentClassDefinition.constructorNestingLevel = this.nestingLevel + 1; + } + var constructorFuncDecl = this.parseFunctionStatements(errorRecoverySet | TypeScript.ErrorRecoverySet.RCurly, this.currentClassDefinition.name, true, false, args, TypeScript.AllowedElements.Properties, minChar, requiresSignature, modifiers); + constructorFuncDecl.preComments = preComments; + if(requiresSignature && !isAmbient) { + constructorFuncDecl.isOverload = true; + } + constructorFuncDecl.variableArgList = variableArgList; + this.currentClassDecl = null; + constructorFuncDecl.returnTypeAnnotation = this.convertToTypeReference(this.currentClassDefinition.name); + constructorFuncDecl.classDecl = this.currentClassDefinition; + if(isAmbient) { + constructorFuncDecl.fncFlags |= TypeScript.FncFlags.Ambient; + } + if(requiresSignature) { + constructorFuncDecl.fncFlags |= TypeScript.FncFlags.Signature; + } + if(this.ambientModule || TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Exported)) { + constructorFuncDecl.fncFlags |= TypeScript.FncFlags.Exported; + } + if(this.currentClassDefinition.constructorDecl) { + if(!isAmbient && !this.currentClassDefinition.constructorDecl.isSignature() && !constructorFuncDecl.isSignature()) { + this.reportParseError("Duplicate constructor definition"); + } + } + if(isAmbient || !constructorFuncDecl.isSignature()) { + this.currentClassDefinition.constructorDecl = constructorFuncDecl; + } + constructorFuncDecl.fncFlags |= TypeScript.FncFlags.ClassMethod; + this.currentClassDefinition.members.members[this.currentClassDefinition.members.members.length] = constructorFuncDecl; + this.parsingClassConstructorDefinition = false; + return constructorFuncDecl; + }; + Parser.prototype.parseClassMemberVariableDeclaration = function (text, minChar, isDeclaredInConstructor, errorRecoverySet, modifiers) { + var varDecl = new TypeScript.VarDecl(text, this.nestingLevel); + varDecl.minChar = minChar; + var isStatic = false; + varDecl.preComments = this.parseComments(); + if(this.currentToken.tokenId == TypeScript.TokenID.Colon) { + this.currentToken = this.scanner.scan(); + varDecl.typeExpr = this.parseTypeReference(errorRecoverySet | TypeScript.ErrorRecoverySet.Asg | TypeScript.ErrorRecoverySet.Comma, false); + if(varDecl.typeExpr && varDecl.typeExpr.nodeType == TypeScript.NodeType.TypeRef) { + var typeExpr = (varDecl.typeExpr); + if(typeExpr.term && typeExpr.term.nodeType == TypeScript.NodeType.FuncDecl) { + typeExpr.term.preComments = varDecl.preComments; + } + } + } + if(this.currentToken.tokenId == TypeScript.TokenID.Equals) { + if(this.parsingDeclareFile || TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Ambient)) { + this.reportParseError("context does not permit variable initializer"); + if(this.errorRecovery) { + this.skip(errorRecoverySet); + varDecl.flags |= TypeScript.ASTFlags.Error; + varDecl.limChar = this.scanner.lastTokenLimChar(); + return varDecl; + } + } + this.currentToken = this.scanner.scan(); + varDecl.init = this.parseExpr(TypeScript.ErrorRecoverySet.Comma | errorRecoverySet, TypeScript.OperatorPrecedence.Comma, true, TypeContext.NoTypes); + varDecl.limChar = varDecl.init.limChar; + if(!(modifiers & TypeScript.Modifiers.Static)) { + this.currentClassDefinition.varFlags |= TypeScript.VarFlags.ClassSuperMustBeFirstCallInConstructor; + } + } else { + varDecl.limChar = this.scanner.pos; + } + if(modifiers & TypeScript.Modifiers.Static) { + varDecl.varFlags |= TypeScript.VarFlags.Static; + isStatic = true; + } + if((modifiers & TypeScript.Modifiers.Private) != TypeScript.Modifiers.None) { + varDecl.varFlags |= TypeScript.VarFlags.Private; + } else { + varDecl.varFlags |= TypeScript.VarFlags.Public; + } + varDecl.varFlags |= TypeScript.VarFlags.Property; + if(isDeclaredInConstructor) { + varDecl.varFlags |= TypeScript.VarFlags.ClassConstructorProperty; + } + if(!isDeclaredInConstructor && !isStatic) { + varDecl.varFlags |= TypeScript.VarFlags.ClassBodyProperty; + } + this.currentClassDefinition.knownMemberNames[text.actualText] = true; + if(!isDeclaredInConstructor) { + this.currentClassDefinition.members.members[this.currentClassDefinition.members.members.length] = varDecl; + } + varDecl.postComments = this.parseComments(); + return varDecl; + }; + Parser.prototype.parseClassMemberFunctionDeclaration = function (methodName, minChar, errorRecoverySet, modifiers) { + var wasAccessorID = this.prevIDTok != null; + var isAccessor = TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Getter) || TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Setter); + var isStatic = TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Static); + var isAmbient = this.ambientModule || TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Ambient); + errorRecoverySet |= TypeScript.ErrorRecoverySet.RParen; + if(isAccessor && (modifiers & TypeScript.Modifiers.Ambient)) { + this.reportParseError("Property accessors may not be declared in ambient classes"); + } + var ast = this.parseFncDecl(errorRecoverySet, true, isAmbient, true, methodName, false, isStatic, isAmbient, modifiers, null, true); + if(ast.nodeType == TypeScript.NodeType.Error) { + return ast; + } + var funcDecl = ast; + funcDecl.minChar = minChar; + if(funcDecl.bod !== null) { + funcDecl.limChar = funcDecl.bod.limChar; + } + if(modifiers & TypeScript.Modifiers.Private) { + funcDecl.fncFlags |= TypeScript.FncFlags.Private; + } else { + funcDecl.fncFlags |= TypeScript.FncFlags.Public; + } + if(isStatic) { + funcDecl.fncFlags |= TypeScript.FncFlags.Static; + } + if(isAccessor) { + if(TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Getter)) { + funcDecl.fncFlags |= TypeScript.FncFlags.GetAccessor; + funcDecl.hint = "get" + funcDecl.name.actualText; + } else { + funcDecl.fncFlags |= TypeScript.FncFlags.SetAccessor; + funcDecl.hint = "set" + funcDecl.name.actualText; + } + funcDecl.fncFlags |= TypeScript.FncFlags.IsFunctionExpression; + if(TypeScript.codeGenTarget < TypeScript.CodeGenTarget.ES5) { + this.reportParseError("Property accessors are only available when targeting ES5 or greater", funcDecl.minChar, funcDecl.limChar); + } + } + funcDecl.fncFlags |= TypeScript.FncFlags.ClassMethod; + this.currentClassDefinition.knownMemberNames[methodName.actualText] = true; + this.currentClassDefinition.members.members[this.currentClassDefinition.members.members.length] = funcDecl; + return funcDecl; + }; + Parser.prototype.parseTypeMember = function (errorRecoverySet) { + var minChar = this.scanner.startPos; + var propertyDecl = this.parsePropertyDeclaration(errorRecoverySet, TypeScript.Modifiers.Public, true, false); + if(propertyDecl) { + propertyDecl.minChar = minChar; + if(propertyDecl.nodeType == TypeScript.NodeType.VarDecl) { + this.checkCurrentToken(TypeScript.TokenID.Semicolon, errorRecoverySet); + } + } + return propertyDecl; + }; + Parser.prototype.parseTypeMemberList = function (errorRecoverySet, members) { + errorRecoverySet |= TypeScript.ErrorRecoverySet.TypeScriptS; + while(true) { + switch(this.currentToken.tokenId) { + case TypeScript.TokenID.CloseBrace: + case TypeScript.TokenID.EndOfFile: { + members.limChar = this.scanner.pos; + return; + + } + } + var element = this.parseTypeMember(errorRecoverySet); + if(element) { + members.append(element); + } + } + }; + Parser.prototype.parseInterfaceDecl = function (errorRecoverySet, modifiers) { + var leftCurlyCount = this.scanner.leftCurlyCount; + var rightCurlyCount = this.scanner.rightCurlyCount; + this.currentToken = this.scanner.scan(); + var minChar = this.scanner.pos; + var name = null; + if((this.currentToken.tokenId == TypeScript.TokenID.Identifier) || (!TypeScript.isPrimitiveTypeToken(this.currentToken) && TypeScript.convertTokToID(this.currentToken, this.strictMode))) { + name = TypeScript.Identifier.fromToken(this.currentToken); + name.minChar = this.scanner.startPos; + name.limChar = this.scanner.pos; + this.currentToken = this.scanner.scan(); + } else { + this.reportParseError("interface missing name"); + if(this.errorRecovery) { + name = new TypeScript.MissingIdentifier(); + name.minChar = this.scanner.pos; + name.limChar = this.scanner.pos; + name.flags |= TypeScript.ASTFlags.Error; + } + } + var extendsList = null; + var implementsList = null; + if(this.currentToken.tokenId === TypeScript.TokenID.Extends || this.currentToken.tokenId === TypeScript.TokenID.Implements) { + if(this.currentToken.tokenId === TypeScript.TokenID.Implements) { + this.reportParseError("Expected 'extends'"); + } + extendsList = new TypeScript.ASTList(); + implementsList = new TypeScript.ASTList(); + extendsList.minChar = this.scanner.startPos; + this.parseBaseList(extendsList, implementsList, errorRecoverySet, false); + } + var membersMinChar = this.scanner.startPos; + this.checkCurrentToken(TypeScript.TokenID.OpenBrace, errorRecoverySet | TypeScript.ErrorRecoverySet.TypeScriptS); + var members = new TypeScript.ASTList(); + members.minChar = membersMinChar; + var prevInInterfaceDecl = this.inInterfaceDecl; + this.inInterfaceDecl = true; + this.parseTypeMemberList(errorRecoverySet | TypeScript.ErrorRecoverySet.RCurly, members); + this.inInterfaceDecl = prevInInterfaceDecl; + this.checkCurrentToken(TypeScript.TokenID.CloseBrace, errorRecoverySet); + var interfaceDecl = new TypeScript.InterfaceDeclaration(name, members, extendsList, null); + if(TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Private)) { + interfaceDecl.varFlags |= TypeScript.VarFlags.Private; + } + if(TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Public)) { + interfaceDecl.varFlags |= TypeScript.VarFlags.Public; + } + if(this.parsingDeclareFile || this.ambientModule || TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Exported)) { + interfaceDecl.varFlags |= TypeScript.VarFlags.Exported; + } + interfaceDecl.limChar = members.limChar; + interfaceDecl.leftCurlyCount = this.scanner.leftCurlyCount - leftCurlyCount; + interfaceDecl.rightCurlyCount = this.scanner.rightCurlyCount - rightCurlyCount; + return interfaceDecl; + }; + Parser.prototype.makeVarDecl = function (id, nest) { + var varDecl = new TypeScript.VarDecl(id, nest); + var currentVarList = this.topVarList(); + if(currentVarList) { + currentVarList.append(varDecl); + } + return varDecl; + }; + Parser.prototype.parsePropertyDeclaration = function (errorRecoverySet, modifiers, requireSignature, isStatic) { + var text = null; + var minChar = this.scanner.startPos; + var nameLimChar = minChar; + var isNew = false; + var isIndexer = false; + var wasAccessorID = this.prevIDTok != null; + var isAccessor = TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Getter) || TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Setter); + if(this.parsingDeclareFile || this.ambientModule || TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Ambient)) { + requireSignature = true; + } + if(this.currentToken.tokenId == TypeScript.TokenID.OpenParen && !wasAccessorID) { + if(!requireSignature && !isStatic) { + this.reportParseError("Expected identifier in property declaration"); + if(this.errorRecovery) { + this.skip(errorRecoverySet); + text = new TypeScript.MissingIdentifier(); + } + } + } else { + if(this.currentToken.tokenId == TypeScript.TokenID.New) { + if(requireSignature) { + this.currentToken = this.scanner.scan(); + if(this.currentToken.tokenId == TypeScript.TokenID.OpenParen) { + isNew = true; + } + } + if(!isNew) { + if(!requireSignature) { + this.currentToken = this.scanner.scan(); + } + text = new TypeScript.Identifier("new"); + text.minChar = this.scanner.pos - 3; + text.limChar = this.scanner.pos; + nameLimChar = this.scanner.pos; + } + } else { + if((this.currentToken.tokenId == TypeScript.TokenID.OpenBracket) && requireSignature) { + isIndexer = true; + text = new TypeScript.Identifier("__item"); + } else { + if((this.currentToken.tokenId != TypeScript.TokenID.Identifier) && (!TypeScript.convertTokToIDName(this.currentToken)) && !wasAccessorID) { + this.reportParseError("Expected identifier in property declaration"); + if(this.errorRecovery) { + var eminChar = this.scanner.startPos; + var curpos = this.scanner.pos; + this.skip(errorRecoverySet & (~TypeScript.ErrorRecoverySet.Comma)); + if(this.scanner.pos == curpos) { + this.currentToken = this.scanner.scan(); + } + var epd = new TypeScript.VarDecl(new TypeScript.MissingIdentifier(), this.nestingLevel); + epd.flags |= TypeScript.ASTFlags.Error; + epd.minChar = eminChar; + epd.limChar = this.scanner.lastTokenLimChar(); + return epd; + } + } else { + if(wasAccessorID) { + text = TypeScript.Identifier.fromToken(this.prevIDTok); + text.minChar = this.scanner.lastTokenLimChar() - 3; + text.limChar = this.scanner.lastTokenLimChar(); + nameLimChar = text.limChar; + if(TypeScript.codeGenTarget < TypeScript.CodeGenTarget.ES5) { + this.reportParseError("Property accessors are only available when targeting ES5 or greater"); + } + if(this.currentToken.getText() == text.actualText && this.currentToken != this.prevIDTok) { + this.currentToken = this.scanner.scan(); + } + this.prevIDTok = null; + } else { + text = TypeScript.Identifier.fromToken(this.currentToken); + text.minChar = this.scanner.startPos; + text.limChar = this.scanner.pos; + nameLimChar = this.scanner.pos; + this.currentToken = this.scanner.scan(); + } + } + } + } + } + if(this.currentToken.tokenId == TypeScript.TokenID.Question) { + if(this.inInterfaceDecl && text) { + text.flags |= TypeScript.ASTFlags.OptionalName; + } else { + this.reportParseError("Optional properties may only be declared on interface or object types"); + } + this.currentToken = this.scanner.scan(); + } + if((this.currentToken.tokenId == TypeScript.TokenID.OpenParen) || (isIndexer && (this.currentToken.tokenId == TypeScript.TokenID.OpenBracket))) { + var ers = errorRecoverySet | TypeScript.ErrorRecoverySet.RParen; + if(isIndexer) { + ers = errorRecoverySet | TypeScript.ErrorRecoverySet.RBrack; + } + var ast = this.parseFncDecl(ers, true, requireSignature, !this.inFncDecl, text, isIndexer, isStatic, (this.parsingDeclareFile || TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Ambient)), modifiers, null, true); + var funcDecl; + if(ast.nodeType == TypeScript.NodeType.Error) { + return ast; + } else { + funcDecl = ast; + } + if(funcDecl.name) { + funcDecl.name.minChar = minChar; + funcDecl.name.limChar = nameLimChar; + } + if((modifiers & TypeScript.Modifiers.Public) != TypeScript.Modifiers.None) { + funcDecl.fncFlags |= TypeScript.FncFlags.Public; + } + if((modifiers & TypeScript.Modifiers.Private) != TypeScript.Modifiers.None) { + funcDecl.fncFlags |= TypeScript.FncFlags.Private; + } + if(isStatic) { + funcDecl.fncFlags |= TypeScript.FncFlags.Static; + } + if(this.parsingDeclareFile || TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Ambient)) { + funcDecl.fncFlags |= TypeScript.FncFlags.Ambient; + } + if(isAccessor) { + if(TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Getter)) { + funcDecl.fncFlags |= TypeScript.FncFlags.GetAccessor; + funcDecl.hint = "get" + funcDecl.name.actualText; + } else { + funcDecl.fncFlags |= TypeScript.FncFlags.SetAccessor; + funcDecl.hint = "set" + funcDecl.name.actualText; + } + funcDecl.fncFlags |= TypeScript.FncFlags.IsFunctionExpression; + if(modifiers & TypeScript.Modifiers.Ambient) { + this.reportParseError("Property accessors may not be declared in ambient types"); + } + } + if(text == null) { + if(isNew) { + funcDecl.fncFlags |= TypeScript.FncFlags.ConstructMember; + funcDecl.hint = "_construct"; + funcDecl.classDecl = this.currentClassDecl; + } else { + funcDecl.hint = "_call"; + funcDecl.fncFlags |= TypeScript.FncFlags.CallMember; + } + } + return funcDecl; + } else { + var varDecl = new TypeScript.VarDecl(text, this.nestingLevel); + varDecl.preComments = this.parseComments(); + varDecl.minChar = minChar; + if(this.currentToken.tokenId == TypeScript.TokenID.Colon) { + this.currentToken = this.scanner.scan(); + varDecl.typeExpr = this.parseTypeReference(errorRecoverySet | TypeScript.ErrorRecoverySet.Asg | TypeScript.ErrorRecoverySet.Comma, false); + if(varDecl.typeExpr && varDecl.typeExpr.nodeType == TypeScript.NodeType.TypeRef) { + var typeExpr = (varDecl.typeExpr); + if(typeExpr.term && typeExpr.term.nodeType == TypeScript.NodeType.FuncDecl) { + typeExpr.term.preComments = varDecl.preComments; + } + } + } + if(this.currentToken.tokenId == TypeScript.TokenID.Equals) { + if(requireSignature) { + this.reportParseError("context does not permit variable initializer"); + if(this.errorRecovery) { + this.skip(errorRecoverySet); + varDecl.flags |= TypeScript.ASTFlags.Error; + varDecl.limChar = this.scanner.lastTokenLimChar(); + return varDecl; + } + } + this.currentToken = this.scanner.scan(); + varDecl.init = this.parseExpr(TypeScript.ErrorRecoverySet.Comma | errorRecoverySet, TypeScript.OperatorPrecedence.Comma, true, TypeContext.NoTypes); + varDecl.limChar = varDecl.init.limChar; + if(varDecl.init.nodeType == TypeScript.NodeType.FuncDecl) { + var funcDecl = varDecl.init; + funcDecl.hint = varDecl.id.text; + funcDecl.boundToProperty = varDecl; + } else { + if(isAccessor) { + this.reportParseError("Accessors may only be functions"); + } + } + } else { + varDecl.limChar = this.scanner.pos; + } + if((modifiers & TypeScript.Modifiers.Readonly) != TypeScript.Modifiers.None) { + varDecl.varFlags |= TypeScript.VarFlags.Readonly; + } + if(isStatic) { + varDecl.varFlags |= TypeScript.VarFlags.Static; + } + if((modifiers & TypeScript.Modifiers.Public) != TypeScript.Modifiers.None) { + varDecl.varFlags |= TypeScript.VarFlags.Public; + } + if((modifiers & TypeScript.Modifiers.Private) != TypeScript.Modifiers.None) { + varDecl.varFlags |= TypeScript.VarFlags.Private; + } + varDecl.varFlags |= TypeScript.VarFlags.Property; + return varDecl; + } + }; + Parser.prototype.parseVariableDeclaration = function (errorRecoverySet, modifiers, allowIn, isStatic) { + var isConst = TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Readonly); + var minChar = this.scanner.startPos; + var varDecl = null; + var declList = null; + var multivar = false; + this.currentToken = this.scanner.scan(); + var varDeclPreComments = this.parseComments(); + while(true) { + if((this.currentToken.tokenId != TypeScript.TokenID.Identifier) && (!TypeScript.convertTokToID(this.currentToken, this.strictMode))) { + this.reportParseError("Expected identifier in variable declaration"); + if(this.errorRecovery) { + varDecl = new TypeScript.VarDecl(new TypeScript.MissingIdentifier(), this.nestingLevel); + varDecl.minChar = minChar; + this.skip(errorRecoverySet); + varDecl.flags |= TypeScript.ASTFlags.Error; + varDecl.limChar = this.scanner.lastTokenLimChar(); + return varDecl; + } + } + var varDeclName = TypeScript.Identifier.fromToken(this.currentToken); + if(this.strictMode && (varDeclName.text == "eval")) { + this.reportParseError("'eval' may not name a variable in strict mode"); + } + varDecl = this.makeVarDecl(varDeclName, this.nestingLevel); + varDecl.id.minChar = this.scanner.startPos; + varDecl.id.limChar = this.scanner.pos; + varDecl.preComments = varDeclPreComments; + if(isStatic) { + varDecl.varFlags |= TypeScript.VarFlags.Static; + } + if(TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Readonly)) { + varDecl.varFlags |= TypeScript.VarFlags.Readonly; + } + if(this.parsingDeclareFile || this.ambientModule || TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Ambient)) { + varDecl.varFlags |= TypeScript.VarFlags.Ambient; + } + if(this.parsingDeclareFile || this.ambientModule || TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Exported)) { + varDecl.varFlags |= TypeScript.VarFlags.Exported; + } + varDecl.minChar = minChar; + if(declList) { + declList.append(varDecl); + } + this.currentToken = this.scanner.scan(); + if(this.currentToken.tokenId == TypeScript.TokenID.Colon) { + this.currentToken = this.scanner.scan(); + var prevInFncDecl = this.inFncDecl; + this.inFncDecl = false; + varDecl.typeExpr = this.parseTypeReference(errorRecoverySet | TypeScript.ErrorRecoverySet.Asg | TypeScript.ErrorRecoverySet.Comma, false); + this.inFncDecl = prevInFncDecl; + } + if(this.currentToken.tokenId == TypeScript.TokenID.Equals) { + if(TypeScript.hasFlag(varDecl.varFlags, TypeScript.VarFlags.Ambient)) { + this.reportParseError("Ambient variable can not have an initializer"); + } + this.currentToken = this.scanner.scan(); + varDecl.init = this.parseExpr(TypeScript.ErrorRecoverySet.Comma | errorRecoverySet, TypeScript.OperatorPrecedence.Comma, allowIn, TypeContext.NoTypes); + varDecl.limChar = varDecl.init.limChar; + if(varDecl.init.nodeType == TypeScript.NodeType.FuncDecl) { + var funcDecl = varDecl.init; + funcDecl.hint = varDecl.id.actualText; + } + } else { + if(isConst) { + this.reportParseError("const declaration requires initializer"); + } + varDecl.limChar = this.scanner.pos; + } + varDecl.postComments = this.parseCommentsForLine(this.scanner.line); + if(this.currentToken.tokenId != TypeScript.TokenID.Comma) { + if(declList) { + declList.limChar = varDecl.limChar; + return declList; + } else { + return varDecl; + } + } + if(!multivar) { + declList = new TypeScript.ASTList(); + declList.minChar = varDecl.minChar; + declList.append(varDecl); + multivar = true; + } + this.currentToken = this.scanner.scan(); + minChar = this.scanner.startPos; + } + }; + Parser.prototype.parseMemberList = function (errorRecoverySet) { + var elements = new TypeScript.ASTList(); + if(this.currentToken.tokenId == TypeScript.TokenID.CloseBrace) { + return elements; + } + var idHint = null; + var memberName = null; + var memberExpr = null; + var member = null; + var minChar = this.scanner.startPos; + var isSet = false; + var skippedTokenForGetSetId = false; + var getSetTok = null; + var getSetStartPos = 0; + var getSetPos = 0; + for(; ; ) { + var accessorPattern = false; + if(this.currentToken.tokenId == TypeScript.TokenID.Get || this.currentToken.tokenId == TypeScript.TokenID.Set) { + isSet = this.currentToken.tokenId == TypeScript.TokenID.Set; + getSetTok = this.currentToken; + getSetStartPos = this.scanner.startPos; + getSetPos = this.scanner.pos; + this.currentToken = this.scanner.scan(); + if((this.currentToken.tokenId == TypeScript.TokenID.Identifier) || TypeScript.convertTokToIDName(this.currentToken)) { + idHint = isSet ? "set" : "get"; + idHint = idHint + this.currentToken.getText(); + memberName = TypeScript.Identifier.fromToken(this.currentToken); + memberName.minChar = this.scanner.startPos; + accessorPattern = true; + if(TypeScript.codeGenTarget < TypeScript.CodeGenTarget.ES5) { + this.reportParseError("Property accessors are only available when targeting ES5 or greater"); + } + } else { + if(this.currentToken.tokenId != TypeScript.TokenID.Colon) { + this.reportParseError("Expected identifier, string or number as accessor name"); + } else { + skippedTokenForGetSetId = true; + memberName = TypeScript.Identifier.fromToken(getSetTok); + memberName.minChar = getSetStartPos; + memberName.limChar = getSetPos; + } + } + } else { + if((this.currentToken.tokenId == TypeScript.TokenID.Identifier) || TypeScript.convertTokToIDName(this.currentToken)) { + idHint = this.currentToken.getText(); + memberName = TypeScript.Identifier.fromToken(this.currentToken); + memberName.minChar = this.scanner.startPos; + memberName.limChar = this.scanner.pos; + } else { + if(this.currentToken.tokenId == TypeScript.TokenID.StringLiteral) { + idHint = this.currentToken.getText(); + memberName = new TypeScript.StringLiteral(idHint); + memberName.minChar = this.scanner.startPos; + memberName.limChar = this.scanner.pos; + } else { + if(this.currentToken.tokenId == TypeScript.TokenID.NumberLiteral) { + var ntok = this.currentToken; + idHint = ntok.value.toString(); + memberName = new TypeScript.StringLiteral(idHint); + memberName.minChar = this.scanner.startPos; + memberName.limChar = this.scanner.pos; + } else { + this.reportParseError("Expected identifier, string or number as member name"); + if(this.errorRecovery) { + memberName = new TypeScript.MissingIdentifier(); + memberName.minChar = this.scanner.startPos; + memberName.flags |= TypeScript.ASTFlags.Error; + this.skip(errorRecoverySet | TypeScript.ErrorRecoverySet.Comma); + memberName.limChar = this.scanner.lastTokenLimChar(); + } + } + } + } + } + if(!skippedTokenForGetSetId) { + this.currentToken = this.scanner.scan(); + } else { + skippedTokenForGetSetId = false; + } + if(this.currentToken.tokenId == TypeScript.TokenID.Question) { + memberName.flags |= TypeScript.ASTFlags.OptionalName; + this.currentToken = this.scanner.scan(); + } + if(accessorPattern) { + var args = new TypeScript.ASTList(); + this.parseFormalParameterList(errorRecoverySet | TypeScript.ErrorRecoverySet.RParen, args, false, true, false, !isSet, isSet, false, null, true); + var funcDecl = this.parseFunctionStatements(errorRecoverySet | TypeScript.ErrorRecoverySet.RCurly, memberName, false, true, args, TypeScript.AllowedElements.None, this.scanner.startPos, false, TypeScript.Modifiers.None); + if(isSet && funcDecl.returnTypeAnnotation) { + this.reportParseError("Property setters may not declare a return type"); + } + funcDecl.fncFlags |= isSet ? TypeScript.FncFlags.SetAccessor : TypeScript.FncFlags.GetAccessor; + funcDecl.fncFlags |= TypeScript.FncFlags.IsFunctionExpression; + funcDecl.hint = idHint; + memberExpr = funcDecl; + member = new TypeScript.BinaryExpression(TypeScript.NodeType.Member, memberName, memberExpr); + member.minChar = memberName.minChar; + if(memberExpr.nodeType == TypeScript.NodeType.FuncDecl) { + var funcDecl = memberExpr; + funcDecl.hint = idHint; + } + } else { + if(this.currentToken.tokenId == TypeScript.TokenID.Colon) { + this.currentToken = this.scanner.scan(); + memberExpr = this.parseExpr(TypeScript.ErrorRecoverySet.Comma | errorRecoverySet, TypeScript.OperatorPrecedence.Comma, true, TypeContext.NoTypes); + if(memberExpr.nodeType == TypeScript.NodeType.TypeRef) { + this.reportParseError("Expected 'new' on array declaration in member definition"); + } + member = new TypeScript.BinaryExpression(TypeScript.NodeType.Member, memberName, memberExpr); + member.minChar = memberName.minChar; + if(memberExpr.nodeType == TypeScript.NodeType.FuncDecl) { + var funcDecl = memberExpr; + funcDecl.hint = idHint; + } + } else { + this.reportParseError("Expected ':' in member definition"); + if(this.errorRecovery) { + this.skip(errorRecoverySet); + elements.flags |= TypeScript.ASTFlags.Error; + elements.minChar = minChar; + elements.limChar = this.scanner.lastTokenLimChar(); + return elements; + } + } + } + idHint = null; + elements.append(member); + member.limChar = this.scanner.lastTokenLimChar(); + if(this.currentToken.tokenId != TypeScript.TokenID.Comma) { + break; + } else { + this.currentToken = this.scanner.scan(); + } + if(this.currentToken.tokenId == TypeScript.TokenID.CloseBrace) { + break; + } + } + if(member) { + elements.limChar = member.limChar; + } + elements.minChar = minChar; + return elements; + }; + Parser.prototype.parseArrayList = function (errorRecoverySet) { + var elements = null; + if(this.currentToken.tokenId == TypeScript.TokenID.CloseBracket) { + return elements; + } else { + elements = new TypeScript.ASTList(); + elements.minChar = this.scanner.startPos; + } + var arg; + for(; ; ) { + if((this.currentToken.tokenId == TypeScript.TokenID.Comma) || (this.currentToken.tokenId == TypeScript.TokenID.CloseBracket)) { + arg = new TypeScript.AST(TypeScript.NodeType.EmptyExpr); + } else { + arg = this.parseExpr(TypeScript.ErrorRecoverySet.Comma | errorRecoverySet, TypeScript.OperatorPrecedence.Comma, true, TypeContext.NoTypes); + } + elements.append(arg); + if(this.currentToken.tokenId != TypeScript.TokenID.Comma) { + break; + } + this.currentToken = this.scanner.scan(); + } + elements.limChar = this.scanner.lastTokenLimChar(); + return elements; + }; + Parser.prototype.parseArrayLiteral = function (errorRecoverySet) { + var arrayLiteral = null; + arrayLiteral = new TypeScript.UnaryExpression(TypeScript.NodeType.ArrayLit, this.parseArrayList(errorRecoverySet)); + return arrayLiteral; + }; + Parser.prototype.parseTerm = function (errorRecoverySet, allowCall, typeContext, inCast) { + var ast = null; + var sawId = false; + var inNew = false; + var minChar = this.scanner.startPos; + var limChar = this.scanner.pos; + var parseAsLambda = false; + var expectlambdaRParen = false; + switch(this.currentToken.tokenId) { + case TypeScript.TokenID.Number: + case TypeScript.TokenID.Bool: + case TypeScript.TokenID.Any: + case TypeScript.TokenID.String: { + var tid = new TypeScript.Identifier(TypeScript.tokenTable[this.currentToken.tokenId].text); + if(TypeScript.hasFlag(typeContext, TypeContext.Primitive)) { + ast = new TypeScript.TypeReference(tid, 0); + sawId = true; + } else { + ast = tid; + sawId = true; + } + ast.minChar = minChar; + this.currentToken = this.scanner.scan(); + limChar = this.scanner.lastTokenLimChar(); + break; + + } + case TypeScript.TokenID.This: { + ast = new TypeScript.AST(TypeScript.NodeType.This); + ast.minChar = minChar; + this.currentToken = this.scanner.scan(); + limChar = this.scanner.lastTokenLimChar(); + break; + + } + case TypeScript.TokenID.Super: { + ast = new TypeScript.AST(TypeScript.NodeType.Super); + ast.minChar = minChar; + this.currentToken = this.scanner.scan(); + limChar = this.scanner.lastTokenLimChar(); + break; + + } + case TypeScript.TokenID.True: { + ast = new TypeScript.AST(TypeScript.NodeType.True); + this.currentToken = this.scanner.scan(); + ast.minChar = minChar; + break; + + } + case TypeScript.TokenID.False: { + ast = new TypeScript.AST(TypeScript.NodeType.False); + this.currentToken = this.scanner.scan(); + ast.minChar = minChar; + break; + + } + case TypeScript.TokenID.Null: { + ast = new TypeScript.AST(TypeScript.NodeType.Null); + this.currentToken = this.scanner.scan(); + ast.minChar = minChar; + break; + + } + case TypeScript.TokenID.New: { + minChar = this.scanner.pos; + this.currentToken = this.scanner.scan(); + var target = this.parseTerm(errorRecoverySet, false, TypeContext.AllSimpleTypes, inCast); + if(target.nodeType == TypeScript.NodeType.Error || (target.nodeType == TypeScript.NodeType.Index && (target).operand1.nodeType == TypeScript.NodeType.TypeRef)) { + this.reportParseError("Cannot invoke 'new' on this expression"); + } else { + ast = new TypeScript.CallExpression(TypeScript.NodeType.New, target, null); + ast.minChar = minChar; + limChar = this.scanner.lastTokenLimChar(); + inNew = true; + } + break; + + } + case TypeScript.TokenID.Function: { + minChar = this.scanner.pos; + ast = this.parseFncDecl(errorRecoverySet, false, false, false, null, false, false, false, TypeScript.Modifiers.None, null, true); + (ast).fncFlags |= TypeScript.FncFlags.IsFunctionExpression; + ast.minChar = minChar; + limChar = this.scanner.lastTokenLimChar(); + ast.limChar = limChar; + break; + + } + } + if(ast == null) { + if((this.currentToken.tokenId == TypeScript.TokenID.Identifier) || TypeScript.convertTokToID(this.currentToken, this.strictMode)) { + var idText = this.currentToken.getText(); + ast = this.createRef(idText, (this.currentToken).hasEscapeSequence, minChar); + sawId = true; + ast.minChar = minChar; + this.currentToken = this.scanner.scan(); + if(this.currentToken.tokenId == TypeScript.TokenID.Question) { + ast.flags |= TypeScript.ASTFlags.PossibleOptionalParameter; + } + limChar = this.scanner.lastTokenLimChar(); + } + } + if(inCast) { + this.checkCurrentToken(TypeScript.TokenID.GreaterThan, errorRecoverySet); + } + if(ast == null) { + switch(this.currentToken.tokenId) { + case TypeScript.TokenID.OpenParen: { + minChar = this.scanner.pos; + var prevTokId = this.scanner.previousToken().tokenId; + this.currentToken = this.scanner.scan(); + var couldBeLambda = prevTokId == TypeScript.TokenID.OpenParen || prevTokId == TypeScript.TokenID.Comma || prevTokId == TypeScript.TokenID.EqualsEquals || prevTokId == TypeScript.TokenID.Colon; + if(couldBeLambda && this.currentToken.tokenId == TypeScript.TokenID.CloseParen) { + parseAsLambda = true; + expectlambdaRParen = false; + this.currentToken = this.scanner.scan(); + } else { + if(couldBeLambda && this.currentToken.tokenId == TypeScript.TokenID.DotDotDot) { + parseAsLambda = true; + expectlambdaRParen = true; + } else { + ast = this.parseExpr(errorRecoverySet | TypeScript.ErrorRecoverySet.RParen, TypeScript.OperatorPrecedence.None, true, TypeContext.NoTypes, couldBeLambda); + limChar = this.scanner.lastTokenLimChar(); + parseAsLambda = couldBeLambda && (ast.nodeType == TypeScript.NodeType.Name || ast.nodeType == TypeScript.NodeType.Comma) && (this.currentToken.tokenId == TypeScript.TokenID.Colon || this.currentToken.tokenId == TypeScript.TokenID.Question); + expectlambdaRParen = true; + } + } + if((ast && !parseAsLambda)) { + if(TypeScript.hasFlag(ast.flags, TypeScript.ASTFlags.SkipNextRParen)) { + ast.flags = ast.flags & (~(TypeScript.ASTFlags.SkipNextRParen)); + break; + } + this.checkCurrentToken(TypeScript.TokenID.CloseParen, errorRecoverySet); + ast.isParenthesized = true; + } + break; + + } + case TypeScript.TokenID.NumberLiteral: { + var numTok = this.currentToken; + this.currentToken = this.scanner.scan(); + ast = new TypeScript.NumberLiteral(numTok.value, numTok.hasEmptyFraction); + ast.minChar = minChar; + limChar = this.scanner.lastTokenLimChar(); + break; + } + + case TypeScript.TokenID.StringLiteral: { + ast = new TypeScript.StringLiteral(this.currentToken.getText()); + this.currentToken = this.scanner.scan(); + ast.minChar = minChar; + limChar = this.scanner.lastTokenLimChar(); + break; + + } + case TypeScript.TokenID.RegularExpressionLiteral: { + var rtok = this.currentToken; + ast = new TypeScript.RegexLiteral(rtok.regex); + this.currentToken = this.scanner.scan(); + ast.minChar = minChar; + limChar = this.scanner.lastTokenLimChar(); + break; + } + + case TypeScript.TokenID.OpenBracket: { + minChar = this.scanner.startPos; + this.currentToken = this.scanner.scan(); + ast = this.parseArrayLiteral(TypeScript.ErrorRecoverySet.RBrack | errorRecoverySet); + ast.minChar = minChar; + limChar = this.scanner.pos; + this.checkCurrentToken(TypeScript.TokenID.CloseBracket, errorRecoverySet); + break; + + } + case TypeScript.TokenID.OpenBrace: { + minChar = this.scanner.startPos; + this.currentToken = this.scanner.scan(); + var members = this.parseMemberList(TypeScript.ErrorRecoverySet.RCurly | errorRecoverySet); + this.checkCurrentToken(TypeScript.TokenID.CloseBrace, errorRecoverySet); + ast = new TypeScript.UnaryExpression(TypeScript.NodeType.ObjectLit, members); + ast.minChar = minChar; + limChar = this.scanner.lastTokenLimChar(); + members.minChar = minChar; + members.limChar = limChar; + break; + + } + case TypeScript.TokenID.LessThan: { + minChar = this.scanner.startPos; + this.currentToken = this.scanner.scan(); + var term = this.parseTypeReference(TypeScript.ErrorRecoverySet.BinOp, false); + this.checkCurrentToken(TypeScript.TokenID.GreaterThan, errorRecoverySet); + ast = new TypeScript.UnaryExpression(TypeScript.NodeType.TypeAssertion, this.parseExpr(errorRecoverySet, TypeScript.OperatorPrecedence.Unary, false, TypeContext.NoTypes)); + (ast).castTerm = term; + break; + + } + default: { + if(this.prevExpr && TypeScript.hasFlag(this.prevExpr.flags, TypeScript.ASTFlags.PossibleOptionalParameter)) { + parseAsLambda = true; + ast = this.prevExpr; + } else { + this.reportParseError("Check format of expression term"); + if(this.errorRecovery) { + var ident = new TypeScript.MissingIdentifier(); + ident.minChar = minChar; + ident.flags |= TypeScript.ASTFlags.Error; + this.skip(errorRecoverySet | TypeScript.ErrorRecoverySet.Postfix); + if((this.currentToken.tokenId == TypeScript.TokenID.Identifier) || TypeScript.convertTokToID(this.currentToken, this.strictMode)) { + ident.setText(this.currentToken.getText(), (this.currentToken).hasEscapeSequence); + this.currentToken = this.scanner.scan(); + limChar = this.scanner.lastTokenLimChar(); + } else { + limChar = this.scanner.lastTokenLimChar(); + } + ast = ident; + } + } + + } + } + } + if(parseAsLambda) { + if(this.currentToken.tokenId == TypeScript.TokenID.Colon || this.currentToken.tokenId == TypeScript.TokenID.Comma || this.currentToken.tokenId == TypeScript.TokenID.CloseParen || this.currentToken.tokenId == TypeScript.TokenID.DotDotDot) { + ast = this.parseLambdaExpr(errorRecoverySet, ast, true, expectlambdaRParen); + ast.minChar = minChar; + limChar = this.scanner.lastTokenLimChar(); + ast.limChar = limChar; + } else { + if(ast) { + ast.isParenthesized = true; + } + } + } + if(sawId && (typeContext != TypeContext.NoTypes)) { + typeContext |= TypeContext.ArraySuffix; + } + var postFix = this.parsePostfixOperators(errorRecoverySet, ast, allowCall, inNew, typeContext, minChar, limChar); + if(postFix) { + if(sawId && (postFix.nodeType == TypeScript.NodeType.Index)) { + var binExpr = postFix; + if(binExpr.operand2 == null) { + postFix = this.convertToTypeReference(postFix); + } + } + postFix.minChar = minChar; + postFix.limChar = TypeScript.max(postFix.limChar, this.scanner.lastTokenLimChar()); + return postFix; + } else { + return new TypeScript.AST(TypeScript.NodeType.Error); + } + }; + Parser.prototype.parseLambdaExpr = function (errorRecoverySet, lambdaArgs, skipNextRParen, expectClosingRParen) { + var ast = this.parseFncDecl(errorRecoverySet, false, false, false, null, false, false, false, TypeScript.Modifiers.None, { + preProcessedLambdaArgs: lambdaArgs + }, expectClosingRParen); + (ast).fncFlags |= TypeScript.FncFlags.IsFunctionExpression; + (ast).fncFlags |= TypeScript.FncFlags.IsFatArrowFunction; + if(!skipNextRParen) { + ast.flags |= TypeScript.ASTFlags.SkipNextRParen; + } + ast.limChar = this.scanner.lastTokenLimChar(); + ; ; + return ast; + }; + Parser.prototype.parseExpr = function (errorRecoverySet, minPrecedence, allowIn, typeContext, possiblyInLambda) { + if (typeof possiblyInLambda === "undefined") { possiblyInLambda = false; } + var ast = null; + var tokenInfo = TypeScript.lookupToken(this.currentToken.tokenId); + var canAssign = true; + var idHint = null; + var minChar = this.scanner.startPos; + var preComments = this.parseComments(); + var exprIsAnonLambda = false; + if((tokenInfo != undefined) && (tokenInfo.unopNodeType != TypeScript.NodeType.None)) { + canAssign = false; + this.currentToken = this.scanner.scan(); + var tempExpr = this.parseExpr(TypeScript.ErrorRecoverySet.BinOp | errorRecoverySet, tokenInfo.unopPrecedence, allowIn, TypeContext.NoTypes); + if((tokenInfo.unopNodeType == TypeScript.NodeType.Pos) && (tempExpr.nodeType == TypeScript.NodeType.NumberLit)) { + ast = tempExpr; + } else { + if((tokenInfo.unopNodeType == TypeScript.NodeType.Neg) && (tempExpr.nodeType == TypeScript.NodeType.NumberLit)) { + var numLit = tempExpr; + numLit.value = (-numLit.value); + if(numLit.value == 0) { + numLit.isNegativeZero = true; + } + ast = tempExpr; + } else { + ast = new TypeScript.UnaryExpression(tokenInfo.unopNodeType, tempExpr); + ast.limChar = tempExpr.limChar; + } + } + ast.minChar = minChar; + } else { + ast = this.parseTerm(TypeScript.ErrorRecoverySet.BinOp | TypeScript.ErrorRecoverySet.AddOp | errorRecoverySet, true, typeContext, false); + var id; + var temp; + if(ast.nodeType == TypeScript.NodeType.Name) { + id = ast; + idHint = id.actualText; + } else { + if(ast.nodeType == TypeScript.NodeType.Dot) { + var subsumedExpr = false; + if(this.inferPropertiesFromThisAssignment && (this.currentToken.tokenId == TypeScript.TokenID.Colon || this.currentToken.tokenId == TypeScript.TokenID.Equals) && this.parsingClassConstructorDefinition && this.nestingLevel == this.currentClassDefinition.constructorNestingLevel && (ast).operand1.nodeType == TypeScript.NodeType.This) { + if((ast).operand2.nodeType == TypeScript.NodeType.Name) { + var op2ID = ((ast).operand2); + if(!this.currentClassDefinition.knownMemberNames[op2ID.actualText]) { + ast = this.parseClassMemberVariableDeclaration(op2ID, ast.minChar, true, errorRecoverySet, TypeScript.Modifiers.Public); + subsumedExpr = true; + } + } + } + if(!subsumedExpr) { + temp = ast; + while(temp.nodeType == TypeScript.NodeType.Dot) { + var binExpr = temp; + temp = binExpr.operand2; + } + if(temp.nodeType == TypeScript.NodeType.Name) { + id = temp; + idHint = id.actualText; + } + } + } + } + if((!this.scanner.lastTokenHadNewline()) && ((this.currentToken.tokenId == TypeScript.TokenID.PlusPlus) || (this.currentToken.tokenId == TypeScript.TokenID.MinusMinus))) { + canAssign = false; + var operand = ast; + ast = new TypeScript.UnaryExpression((this.currentToken.tokenId == TypeScript.TokenID.PlusPlus) ? TypeScript.NodeType.IncPost : TypeScript.NodeType.DecPost, operand); + ast.limChar = this.scanner.pos; + ast.minChar = operand.minChar; + this.currentToken = this.scanner.scan(); + } + } + for(; ; ) { + tokenInfo = TypeScript.lookupToken(this.currentToken.tokenId); + if((tokenInfo == undefined) || (tokenInfo.binopNodeType == TypeScript.NodeType.None)) { + break; + } + if((!allowIn) && (tokenInfo.binopNodeType == TypeScript.NodeType.In)) { + break; + } + if(tokenInfo.binopPrecedence == TypeScript.OperatorPrecedence.Assignment) { + if(tokenInfo.binopPrecedence < minPrecedence) { + break; + } + if(!canAssign) { + this.reportParseError("illegal assignment"); + } + } else { + if(tokenInfo.binopPrecedence <= minPrecedence) { + break; + } + } + if(possiblyInLambda && this.currentToken.tokenId == TypeScript.TokenID.Comma && this.scanner.getLookAheadToken().tokenId == TypeScript.TokenID.DotDotDot) { + exprIsAnonLambda = true; + canAssign = false; + ast = this.parseLambdaExpr(errorRecoverySet, ast, false, true); + break; + } + this.currentToken = this.scanner.scan(); + canAssign = false; + if(tokenInfo.binopNodeType == TypeScript.NodeType.ConditionalExpression) { + if(possiblyInLambda && (this.currentToken.tokenId == TypeScript.TokenID.Equals || this.currentToken.tokenId == TypeScript.TokenID.Colon || this.currentToken.tokenId == TypeScript.TokenID.CloseParen || this.currentToken.tokenId == TypeScript.TokenID.Comma)) { + exprIsAnonLambda = true; + canAssign = true; + } else { + this.prevExpr = ast; + var whenTrue = this.parseExpr(errorRecoverySet | TypeScript.ErrorRecoverySet.Colon, TypeScript.OperatorPrecedence.Assignment, allowIn, TypeContext.NoTypes); + this.prevExpr = null; + this.checkCurrentToken(TypeScript.TokenID.Colon, errorRecoverySet | TypeScript.ErrorRecoverySet.ExprStart); + var whenFalse = this.parseExpr(errorRecoverySet | TypeScript.ErrorRecoverySet.BinOp, TypeScript.OperatorPrecedence.Assignment, allowIn, TypeContext.NoTypes); + ast = new TypeScript.ConditionalExpression(ast, whenTrue, whenFalse); + } + } else { + var tc = TypeContext.NoTypes; + var binExpr2; + binExpr2 = new TypeScript.BinaryExpression(tokenInfo.binopNodeType, ast, this.parseExpr(errorRecoverySet | TypeScript.ErrorRecoverySet.BinOp, tokenInfo.binopPrecedence, allowIn, TypeContext.NoTypes, possiblyInLambda)); + if(binExpr2.operand2.nodeType == TypeScript.NodeType.FuncDecl) { + var funcDecl = binExpr2.operand2; + funcDecl.hint = idHint; + } + binExpr2.minChar = ast.minChar; + binExpr2.limChar = this.scanner.lastTokenLimChar(); + idHint = null; + ast = binExpr2; + } + } + if(canAssign) { + ast.flags |= TypeScript.ASTFlags.Writeable; + } + if(!exprIsAnonLambda) { + ast.minChar = minChar; + ast.limChar = TypeScript.max(ast.limChar, this.scanner.lastTokenLimChar()); + ast.preComments = preComments; + ast.postComments = this.parseCommentsForLine(this.scanner.line); + } + return ast; + }; + Parser.prototype.parsePostfixOperators = function (errorRecoverySet, ast, allowCall, inNew, typeContext, lhsMinChar, lhsLimChar) { + var count = 0; + if(!ast) { + ast = new TypeScript.AST(TypeScript.NodeType.EmptyExpr); + ast.isParenthesized = true; + } + ast.minChar = lhsMinChar; + ast.limChar = lhsLimChar; + for(; ; ) { + switch(this.currentToken.tokenId) { + case TypeScript.TokenID.OpenParen: { + if(inNew) { + var callExpr = ast; + callExpr.arguments = this.parseArgList(errorRecoverySet); + inNew = false; + } else { + if(!allowCall) { + return ast; + } + ast = new TypeScript.CallExpression(TypeScript.NodeType.Call, ast, this.parseArgList(errorRecoverySet)); + ast.minChar = lhsMinChar; + } + ast.limChar = this.scanner.pos; + this.checkCurrentToken(TypeScript.TokenID.CloseParen, errorRecoverySet); + break; + + } + case TypeScript.TokenID.OpenBracket: { + this.currentToken = this.scanner.scan(); + if(this.currentToken.tokenId == TypeScript.TokenID.CloseBracket) { + if(TypeScript.hasFlag(typeContext, TypeContext.ArraySuffix)) { + this.currentToken = this.scanner.scan(); + if(ast.nodeType == TypeScript.NodeType.TypeRef) { + var typeRef = ast; + typeRef.arrayCount++; + } else { + ast = new TypeScript.BinaryExpression(TypeScript.NodeType.Index, ast, null); + } + ast.limChar = this.scanner.pos; + break; + } + } + ast = new TypeScript.BinaryExpression(TypeScript.NodeType.Index, ast, this.parseExpr(errorRecoverySet | TypeScript.ErrorRecoverySet.RBrack, TypeScript.OperatorPrecedence.None, true, TypeContext.NoTypes)); + ast.minChar = lhsMinChar; + ast.limChar = this.scanner.pos; + this.checkCurrentToken(TypeScript.TokenID.CloseBracket, errorRecoverySet); + break; + + } + case TypeScript.TokenID.Dot: { + var name = null; + var curpos = this.scanner.pos; + this.currentToken = this.scanner.scan(); + if (this.currentToken === undefined) { + this.currentToken = this.scanner.scan(); + continue; + } + if((this.currentToken.tokenId == TypeScript.TokenID.Identifier) || ((!this.errorRecovery || !this.scanner.lastTokenHadNewline()) && TypeScript.convertTokToIDName(this.currentToken))) { + ast.flags |= TypeScript.ASTFlags.DotLHS; + name = this.createRef(this.currentToken.getText(), (this.currentToken).hasEscapeSequence, this.scanner.startPos); + name.limChar = this.scanner.pos; + this.currentToken = this.scanner.scan(); + } else { + this.reportParseError("Expected identifier following dot"); + if(this.errorRecovery) { + this.skip(errorRecoverySet); + ast.flags |= (TypeScript.ASTFlags.Error | TypeScript.ASTFlags.DotLHS); + return ast; + } else { + name = new TypeScript.MissingIdentifier(); + } + } + ast = new TypeScript.BinaryExpression(TypeScript.NodeType.Dot, ast, name); + ast.minChar = lhsMinChar; + ast.limChar = this.scanner.lastTokenLimChar(); + break; + } + + case TypeScript.TokenID.EqualsGreaterThan: { + ast = this.parseFncDecl(errorRecoverySet, false, false, false, null, false, false, false, TypeScript.Modifiers.None, { + preProcessedLambdaArgs: ast + }, false); + (ast).fncFlags |= TypeScript.FncFlags.IsFunctionExpression; + ast.minChar = lhsMinChar; + ast.limChar = this.scanner.lastTokenLimChar(); + break; + + } + default: { + return ast; + + } + } + } + }; + Parser.prototype.parseTry = function (tryNode, errorRecoverySet, parentModifiers) { + var minChar = this.scanner.startPos; + var preComments = this.parseComments(); + this.currentToken = this.scanner.scan(); + if(this.currentToken.tokenId != TypeScript.TokenID.OpenBrace) { + this.reportParseError("Expected '{'"); + if(this.errorRecovery) { + var etryNode = tryNode; + etryNode.minChar = minChar; + etryNode.limChar = this.scanner.lastTokenLimChar(); + etryNode.flags |= TypeScript.ASTFlags.Error; + return etryNode; + } + } + tryNode.body = this.parseStatement(errorRecoverySet, TypeScript.AllowedElements.None, parentModifiers); + tryNode.minChar = minChar; + tryNode.limChar = tryNode.body.limChar; + tryNode.preComments = preComments; + tryNode.postComments = this.parseComments(); + return tryNode; + }; + Parser.prototype.parseCatch = function (errorRecoverySet, parentModifiers) { + var catchMinChar = this.scanner.startPos; + var preComments = this.parseComments(); + this.currentToken = this.scanner.scan(); + this.checkCurrentToken(TypeScript.TokenID.OpenParen, errorRecoverySet | TypeScript.ErrorRecoverySet.ExprStart); + if((this.currentToken.tokenId != TypeScript.TokenID.Identifier) || TypeScript.convertTokToID(this.currentToken, this.strictMode)) { + this.reportParseError("Expected identifier in catch header"); + if(this.errorRecovery) { + this.skip(errorRecoverySet); + var ecatch = new TypeScript.Catch(new TypeScript.VarDecl(new TypeScript.MissingIdentifier(), this.nestingLevel), new TypeScript.Statement(TypeScript.NodeType.Empty)); + ecatch.statement.minChar = catchMinChar; + ecatch.statement.limChar = this.scanner.pos; + ecatch.minChar = this.scanner.startPos; + ecatch.limChar = this.scanner.pos; + ecatch.flags |= TypeScript.ASTFlags.Error; + return ecatch; + } + } + var param = new TypeScript.VarDecl(TypeScript.Identifier.fromToken(this.currentToken), this.nestingLevel); + param.id.minChar = this.scanner.startPos; + param.id.limChar = this.scanner.pos; + param.minChar = param.id.minChar; + param.limChar = param.id.limChar; + this.currentToken = this.scanner.scan(); + var statementPos = this.scanner.pos; + this.checkCurrentToken(TypeScript.TokenID.CloseParen, errorRecoverySet | TypeScript.ErrorRecoverySet.StmtStart); + if(this.currentToken.tokenId != TypeScript.TokenID.OpenBrace) { + this.reportParseError("Expected '{' to start catch body"); + if(this.errorRecovery) { + this.skip(errorRecoverySet); + var ecatch = new TypeScript.Catch(new TypeScript.VarDecl(new TypeScript.MissingIdentifier(), this.nestingLevel), new TypeScript.Statement(TypeScript.NodeType.Empty)); + ecatch.statement.minChar = catchMinChar; + ecatch.statement.limChar = statementPos; + ecatch.minChar = this.scanner.startPos; + ecatch.limChar = this.scanner.pos; + ecatch.flags |= TypeScript.ASTFlags.Error; + return ecatch; + } + } + var catchStmt = this.parseStatement(errorRecoverySet, TypeScript.AllowedElements.None, parentModifiers); + var catchNode = new TypeScript.Catch(param, catchStmt); + catchNode.statement.minChar = catchMinChar; + catchNode.statement.limChar = statementPos; + catchNode.minChar = catchMinChar; + catchNode.limChar = catchStmt.limChar; + catchNode.preComments = preComments; + catchNode.postComments = this.parseComments(); + return catchNode; + }; + Parser.prototype.parseFinally = function (errorRecoverySet, parentModifiers) { + var finMinChar = this.scanner.startPos; + var preComments = this.parseComments(); + this.currentToken = this.scanner.scan(); + if(this.currentToken.tokenId != TypeScript.TokenID.OpenBrace) { + this.reportParseError("Expected '{' to start body of finally statement"); + if(this.errorRecovery) { + this.skip(errorRecoverySet); + var efin = new TypeScript.Finally(new TypeScript.Statement(TypeScript.NodeType.Empty)); + efin.flags |= TypeScript.ASTFlags.Error; + efin.minChar = this.scanner.startPos; + efin.limChar = this.scanner.pos; + return efin; + } + } + var finBody = this.parseStatement(errorRecoverySet, TypeScript.AllowedElements.None, parentModifiers); + var fin = new TypeScript.Finally(finBody); + fin.minChar = finMinChar; + fin.limChar = fin.body.limChar; + fin.preComments = preComments; + fin.postComments = this.parseComments(); + return fin; + }; + Parser.prototype.parseTryCatchFinally = function (errorRecoverySet, parentModifiers, labelList) { + var tryPart = new TypeScript.Try(null); + var tryMinChar = this.scanner.startPos; + this.pushStmt(tryPart, labelList); + this.parseTry(tryPart, errorRecoverySet | TypeScript.ErrorRecoverySet.Catch, parentModifiers); + this.popStmt(); + var tc = null; + var tf = null; + if(this.currentToken.tokenId == TypeScript.TokenID.Catch) { + var catchPart = this.parseCatch(errorRecoverySet | TypeScript.ErrorRecoverySet.Catch, parentModifiers); + tc = new TypeScript.TryCatch(tryPart, catchPart); + tc.minChar = tryPart.minChar; + tc.limChar = catchPart.limChar; + } + if(this.currentToken.tokenId != TypeScript.TokenID.Finally) { + if(tc == null) { + this.reportParseError("try with neither catch nor finally"); + if(this.errorRecovery) { + var etf = new TypeScript.TryFinally(tryPart, new TypeScript.Finally(new TypeScript.AST(TypeScript.NodeType.Empty))); + etf.flags |= TypeScript.ASTFlags.Error; + etf.minChar = this.scanner.startPos; + etf.limChar = this.scanner.pos; + return etf; + } + return new TypeScript.TryFinally(tryPart, new TypeScript.Finally(new TypeScript.AST(TypeScript.NodeType.Empty))); + } else { + return tc; + } + } else { + if(tc) { + tryPart = tc; + } + var finallyPart = this.parseFinally(errorRecoverySet, parentModifiers); + tf = new TypeScript.TryFinally(tryPart, finallyPart); + tf.minChar = tryMinChar; + tf.limChar = finallyPart.limChar; + return tf; + } + }; + Parser.prototype.parseStatement = function (errorRecoverySet, allowedElements, parentModifiers) { + var ast = null; + var labelList = null; + var astList = null; + var temp; + var modifiers = TypeScript.Modifiers.None; + var minChar = this.scanner.startPos; + var forInOk = false; + var needTerminator = false; + var fnOrVar = null; + var preComments = this.parseComments(); + this.state = ParseState.StartStatement; + function isAmbient() { + return TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Ambient) || TypeScript.hasFlag(parentModifiers, TypeScript.Modifiers.Ambient); + } + function mayNotBeExported() { + if(TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Exported)) { + this.reportError("Statement may not be exported"); + } + } + for(; ; ) { + switch(this.currentToken.tokenId) { + case TypeScript.TokenID.EndOfFile: { + ast = new TypeScript.AST(TypeScript.NodeType.Error); + ast.minChar = minChar; + ast.limChar = this.scanner.pos; + break; + + } + case TypeScript.TokenID.Function: { + if(this.parsingDeclareFile || isAmbient() || this.ambientModule) { + this.currentToken = this.scanner.scan(); + fnOrVar = this.parsePropertyDeclaration(errorRecoverySet | TypeScript.ErrorRecoverySet.SColon, modifiers, true, false); + if(fnOrVar.nodeType == TypeScript.NodeType.VarDecl) { + this.reportParseError("function keyword can only introduce function declaration"); + } else { + if((fnOrVar.nodeType == TypeScript.NodeType.FuncDecl) && ((fnOrVar).fncFlags , TypeScript.FncFlags.IsFatArrowFunction)) { + needTerminator = true; + } + } + ast = fnOrVar; + if(this.parsingDeclareFile || this.ambientModule && ast.nodeType == TypeScript.NodeType.FuncDecl) { + (ast).fncFlags |= TypeScript.FncFlags.Exported; + } + } else { + ast = this.parseFncDecl(errorRecoverySet, true, false, false, null, false, false, isAmbient(), modifiers, null, true); + if(TypeScript.hasFlag((ast).fncFlags, TypeScript.FncFlags.IsFatArrowFunction)) { + needTerminator = true; + } + if(this.ambientModule) { + this.reportParseError("function declaration not permitted within ambient module"); + } + if(TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Exported)) { + (ast).fncFlags |= TypeScript.FncFlags.Exported; + } + } + break; + + } + case TypeScript.TokenID.Module: { + if((allowedElements & TypeScript.AllowedElements.ModuleDeclarations) == TypeScript.AllowedElements.None) { + this.reportParseError("module not allowed in this context"); + this.currentToken = this.scanner.scan(); + ast = new TypeScript.AST(TypeScript.NodeType.Error); + ast.minChar = minChar; + ast.limChar = this.scanner.lastTokenLimChar(); + } else { + ast = this.parseModuleDecl(errorRecoverySet, modifiers, preComments); + preComments = null; + } + break; + + } + case TypeScript.TokenID.Import: { + if((allowedElements & TypeScript.AllowedElements.ModuleDeclarations) == TypeScript.AllowedElements.None) { + this.reportParseError("module not allowed in this context"); + this.currentToken = this.scanner.scan(); + ast = new TypeScript.AST(TypeScript.NodeType.Error); + ast.minChar = minChar; + ast.limChar = this.scanner.lastTokenLimChar(); + } else { + if(TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Exported)) { + this.reportParseError("export keyword not permitted on import declaration"); + } + ast = this.parseImportDeclaration(errorRecoverySet, modifiers); + needTerminator = true; + } + break; + + } + case TypeScript.TokenID.Export: { + if((allowedElements & TypeScript.AllowedElements.ModuleDeclarations) == TypeScript.AllowedElements.None) { + this.reportParseError("'export' statements are only allowed at the global and module levels"); + this.currentToken = this.scanner.scan(); + ast = new TypeScript.AST(TypeScript.NodeType.Error); + ast.minChar = minChar; + ast.limChar = this.scanner.lastTokenLimChar(); + } + if(this.topLevel) { + this.hasTopLevelImportOrExport = true; + } + modifiers |= TypeScript.Modifiers.Exported; + this.currentToken = this.scanner.scan(); + break; + + } + case TypeScript.TokenID.Private: { + modifiers |= TypeScript.Modifiers.Private; + this.currentToken = this.scanner.scan(); + if(this.parsingClassConstructorDefinition) { + if(!this.inferPropertiesFromThisAssignment) { + this.reportParseError("Property declarations are not permitted within constructor bodies"); + } + minChar = this.scanner.pos; + if(this.inferPropertiesFromThisAssignment && (this.currentToken.tokenId != TypeScript.TokenID.This || (this.currentToken = this.scanner.scan()).tokenId != TypeScript.TokenID.Dot)) { + this.reportParseError("Expected 'this.' for property declaration"); + this.currentToken = this.scanner.scan(); + ast = new TypeScript.AST(TypeScript.NodeType.Error); + ast.minChar = minChar; + ast.limChar = this.scanner.lastTokenLimChar(); + } else { + this.currentToken = this.scanner.scan(); + var id = TypeScript.Identifier.fromToken(this.currentToken); + id.minChar = this.scanner.startPos; + id.limChar = this.scanner.pos; + this.currentToken = this.scanner.scan(); + ast = this.parseClassMemberVariableDeclaration(id, minChar, this.parsingClassConstructorDefinition, errorRecoverySet, modifiers); + } + } else { + if(this.currentToken.tokenId != TypeScript.TokenID.Interface) { + if(this.currentToken.tokenId == TypeScript.TokenID.Get) { + this.prevIDTok = this.currentToken; + this.currentToken = this.scanner.scan(); + if(TypeScript.codeGenTarget < TypeScript.CodeGenTarget.ES5) { + this.reportParseError("Property accessors are only available when targeting ES5 or greater"); + } + if((this.currentToken.tokenId == TypeScript.TokenID.Identifier) || TypeScript.convertTokToID(this.currentToken, this.strictMode)) { + modifiers |= TypeScript.Modifiers.Getter; + this.prevIDTok = null; + } + } else { + if(this.currentToken.tokenId == TypeScript.TokenID.Set) { + this.prevIDTok = this.currentToken; + this.currentToken = this.scanner.scan(); + if(TypeScript.codeGenTarget < TypeScript.CodeGenTarget.ES5) { + this.reportParseError("Property accessors are only available when targeting ES5 or greater"); + } + if((this.currentToken.tokenId == TypeScript.TokenID.Identifier) || TypeScript.convertTokToID(this.currentToken, this.strictMode)) { + modifiers |= TypeScript.Modifiers.Setter; + this.prevIDTok = null; + } + } + } + fnOrVar = this.parsePropertyDeclaration(errorRecoverySet | TypeScript.ErrorRecoverySet.SColon, modifiers, isAmbient(), false); + if((fnOrVar.nodeType == TypeScript.NodeType.VarDecl) || ((fnOrVar.nodeType == TypeScript.NodeType.FuncDecl) && (TypeScript.hasFlag((fnOrVar).fncFlags, TypeScript.FncFlags.IsFatArrowFunction)))) { + needTerminator = true; + } + ast = fnOrVar; + } + } + break; + + } + case TypeScript.TokenID.Public: { + if(this.parsingClassConstructorDefinition) { + if(!this.inferPropertiesFromThisAssignment) { + this.reportParseError("Property declarations are not permitted within constructor bodies"); + } + this.currentToken = this.scanner.scan(); + minChar = this.scanner.pos; + modifiers |= TypeScript.Modifiers.Public; + if(this.inferPropertiesFromThisAssignment && (this.currentToken.tokenId != TypeScript.TokenID.This || (this.currentToken = this.scanner.scan()).tokenId != TypeScript.TokenID.Dot)) { + this.reportParseError("Expected 'this.' for property declaration"); + this.currentToken = this.scanner.scan(); + ast = new TypeScript.AST(TypeScript.NodeType.Error); + ast.minChar = minChar; + ast.limChar = this.scanner.lastTokenLimChar(); + } else { + this.currentToken = this.scanner.scan(); + var id = TypeScript.Identifier.fromToken(this.currentToken); + id.minChar = this.scanner.startPos; + id.limChar = this.scanner.pos; + this.currentToken = this.scanner.scan(); + ast = this.parseClassMemberVariableDeclaration(id, minChar, this.parsingClassConstructorDefinition, errorRecoverySet, modifiers); + } + } else { + if((allowedElements & TypeScript.AllowedElements.Properties) == TypeScript.AllowedElements.None) { + this.reportParseError("'property' statements are only allowed within classes"); + this.currentToken = this.scanner.scan(); + ast = new TypeScript.AST(TypeScript.NodeType.Error); + ast.minChar = minChar; + ast.limChar = this.scanner.lastTokenLimChar(); + } else { + modifiers |= TypeScript.Modifiers.Public; + this.currentToken = this.scanner.scan(); + if(this.currentToken.tokenId == TypeScript.TokenID.Get) { + this.prevIDTok = this.currentToken; + this.currentToken = this.scanner.scan(); + if(TypeScript.codeGenTarget < TypeScript.CodeGenTarget.ES5) { + this.reportParseError("Property accessors are only available when targeting ES5 or greater"); + } + if((this.currentToken.tokenId == TypeScript.TokenID.Identifier) || TypeScript.convertTokToID(this.currentToken, this.strictMode)) { + modifiers |= TypeScript.Modifiers.Getter; + this.prevIDTok = null; + } + } else { + if(this.currentToken.tokenId == TypeScript.TokenID.Set) { + this.prevIDTok = this.currentToken; + this.currentToken = this.scanner.scan(); + if(TypeScript.codeGenTarget < TypeScript.CodeGenTarget.ES5) { + this.reportParseError("Property accessors are only available when targeting ES5 or greater"); + } + if((this.currentToken.tokenId == TypeScript.TokenID.Identifier) || TypeScript.convertTokToID(this.currentToken, this.strictMode)) { + modifiers |= TypeScript.Modifiers.Setter; + this.prevIDTok = null; + } + } + } + fnOrVar = this.parsePropertyDeclaration(errorRecoverySet | TypeScript.ErrorRecoverySet.SColon, modifiers, isAmbient(), false); + if((fnOrVar.nodeType == TypeScript.NodeType.VarDecl) || ((fnOrVar.nodeType == TypeScript.NodeType.FuncDecl) && TypeScript.hasFlag((fnOrVar).fncFlags, TypeScript.FncFlags.IsFatArrowFunction))) { + needTerminator = true; + } + ast = fnOrVar; + } + } + break; + + } + case TypeScript.TokenID.Declare: { + if(!(allowedElements & TypeScript.AllowedElements.AmbientDeclarations)) { + this.reportParseError("Ambient declarations are only allowed at the top-level or module scopes"); + } + if(!this.parsingDeclareFile && TypeScript.hasFlag(parentModifiers, TypeScript.Modifiers.Ambient)) { + this.reportParseError("Duplicate ambient declaration in this context. (Is the enclosing module or class already ambient?)"); + } + modifiers |= TypeScript.Modifiers.Ambient; + this.currentToken = this.scanner.scan(); + break; + + } + case TypeScript.TokenID.Class: { + if((allowedElements & TypeScript.AllowedElements.ClassDeclarations) == TypeScript.AllowedElements.None) { + this.reportParseError("class not allowed in this context"); + this.currentToken = this.scanner.scan(); + ast = new TypeScript.AST(TypeScript.NodeType.Error); + ast.minChar = minChar; + ast.limChar = this.scanner.lastTokenLimChar(); + } else { + ast = this.parseClassDecl(errorRecoverySet, minChar, modifiers); + } + break; + + } + case TypeScript.TokenID.Interface: { + if((allowedElements & TypeScript.AllowedElements.InterfaceDeclarations) == TypeScript.AllowedElements.None) { + this.reportParseError("interface not allowed in this context"); + this.currentToken = this.scanner.scan(); + ast = new TypeScript.AST(TypeScript.NodeType.Error); + ast.minChar = minChar; + ast.limChar = this.scanner.lastTokenLimChar(); + } else { + ast = this.parseInterfaceDecl(errorRecoverySet, modifiers); + } + break; + + } + case TypeScript.TokenID.Var: { + var declAst = this.parseVariableDeclaration(errorRecoverySet | TypeScript.ErrorRecoverySet.StmtStart, modifiers, true, false); + if(declAst.nodeType == TypeScript.NodeType.VarDecl) { + ast = declAst; + } else { + ast = new TypeScript.Block(declAst, false); + } + needTerminator = true; + break; + + } + case TypeScript.TokenID.Static: { + if(this.currentClassDecl == null) { + this.reportParseError("Statics may only be class members"); + } + mayNotBeExported(); + modifiers |= TypeScript.Modifiers.Public; + this.currentToken = this.scanner.scan(); + if(this.currentToken.tokenId == TypeScript.TokenID.Get) { + this.prevIDTok = this.currentToken; + this.currentToken = this.scanner.scan(); + if(TypeScript.codeGenTarget < TypeScript.CodeGenTarget.ES5) { + this.reportParseError("Property accessors are only available when targeting ES5 or greater"); + } + if((this.currentToken.tokenId == TypeScript.TokenID.Identifier) || TypeScript.convertTokToID(this.currentToken, this.strictMode)) { + modifiers |= TypeScript.Modifiers.Getter; + this.prevIDTok = null; + } + } else { + if(this.currentToken.tokenId == TypeScript.TokenID.Set) { + this.currentToken = this.scanner.scan(); + if(TypeScript.codeGenTarget < TypeScript.CodeGenTarget.ES5) { + this.reportParseError("Property accessors are only available when targeting ES5 or greater"); + } + if((this.currentToken.tokenId == TypeScript.TokenID.Identifier) || TypeScript.convertTokToID(this.currentToken, this.strictMode)) { + modifiers |= TypeScript.Modifiers.Setter; + } + } + } + if(isAmbient()) { + modifiers |= TypeScript.Modifiers.Ambient; + } + fnOrVar = this.parsePropertyDeclaration(errorRecoverySet | TypeScript.ErrorRecoverySet.SColon, modifiers, this.parsingDeclareFile || (modifiers & TypeScript.Modifiers.Ambient) != TypeScript.Modifiers.None, true); + var staticsList = this.topStaticsList(); + if(staticsList && fnOrVar.nodeType == TypeScript.NodeType.VarDecl) { + staticsList.append(fnOrVar); + } + if(fnOrVar.nodeType == TypeScript.NodeType.VarDecl || ((fnOrVar.nodeType == TypeScript.NodeType.FuncDecl) && TypeScript.hasFlag((fnOrVar).fncFlags, TypeScript.FncFlags.IsFatArrowFunction))) { + needTerminator = true; + } + ast = fnOrVar; + break; + + } + case TypeScript.TokenID.For: { + mayNotBeExported(); + if(modifiers != TypeScript.Modifiers.None) { + this.reportParseError("syntax error: for statement does not take modifiers"); + } + minChar = this.scanner.startPos; + this.checkNextToken(TypeScript.TokenID.OpenParen, errorRecoverySet | TypeScript.ErrorRecoverySet.ExprStart | TypeScript.ErrorRecoverySet.Var); + this.state = ParseState.ForInit; + forInOk = true; + switch(this.currentToken.tokenId) { + case TypeScript.TokenID.Var: { + temp = this.parseVariableDeclaration(errorRecoverySet | TypeScript.ErrorRecoverySet.SColon | TypeScript.ErrorRecoverySet.In, TypeScript.Modifiers.None, false, false); + break; + + } + case TypeScript.TokenID.Semicolon: { + temp = null; + this.state = ParseState.ForCondStart; + break; + + } + default: { + temp = this.parseExpr(errorRecoverySet | TypeScript.ErrorRecoverySet.SColon | TypeScript.ErrorRecoverySet.In, TypeScript.OperatorPrecedence.None, false, TypeContext.NoTypes); + break; + + } + } + this.state = ParseState.ForInitAfterVar; + if(this.currentToken.tokenId == TypeScript.TokenID.In) { + if((temp == null) || (!forInOk)) { + this.reportParseError("malformed for statement"); + if(this.errorRecovery) { + this.skip(errorRecoverySet | TypeScript.ErrorRecoverySet.StmtStart); + ast = new TypeScript.AST(TypeScript.NodeType.Empty); + ast.flags |= TypeScript.ASTFlags.Error; + } + } else { + this.currentToken = this.scanner.scan(); + var forInStmt = new TypeScript.ForInStatement(temp, this.parseExpr(TypeScript.ErrorRecoverySet.RParen | errorRecoverySet, TypeScript.OperatorPrecedence.Comma, false, TypeContext.NoTypes)); + forInStmt.limChar = this.scanner.pos; + forInStmt.statement.minChar = minChar; + forInStmt.statement.limChar = this.scanner.pos; + this.checkCurrentToken(TypeScript.TokenID.CloseParen, TypeScript.ErrorRecoverySet.StmtStart | errorRecoverySet); + this.pushStmt(forInStmt, labelList); + forInStmt.body = this.parseStatement(errorRecoverySet, allowedElements, parentModifiers); + this.popStmt(); + forInStmt.minChar = minChar; + ast = forInStmt; + } + } else { + var forStmt = new TypeScript.ForStatement(temp); + forStmt.minChar = minChar; + this.checkCurrentToken(TypeScript.TokenID.Semicolon, errorRecoverySet); + if(this.currentToken.tokenId == TypeScript.TokenID.Semicolon) { + forStmt.cond = null; + } else { + forStmt.cond = this.parseExpr(errorRecoverySet | TypeScript.ErrorRecoverySet.SColon | TypeScript.ErrorRecoverySet.RParen, TypeScript.OperatorPrecedence.None, true, TypeContext.NoTypes); + if(this.currentToken.tokenId != TypeScript.TokenID.Semicolon) { + this.skip(errorRecoverySet | TypeScript.ErrorRecoverySet.StmtStart); + ast = forStmt; + ast.flags |= TypeScript.ASTFlags.Error; + } + } + this.currentToken = this.scanner.scan(); + if(this.currentToken.tokenId == TypeScript.TokenID.CloseParen) { + forStmt.incr = null; + } else { + forStmt.incr = this.parseExpr(errorRecoverySet | TypeScript.ErrorRecoverySet.SColon | TypeScript.ErrorRecoverySet.RParen, TypeScript.OperatorPrecedence.None, true, TypeContext.NoTypes); + } + this.checkCurrentToken(TypeScript.TokenID.CloseParen, errorRecoverySet | TypeScript.ErrorRecoverySet.LCurly); + this.pushStmt(forStmt, labelList); + forStmt.body = this.parseStatement(errorRecoverySet, allowedElements, parentModifiers); + this.popStmt(); + forStmt.limChar = forStmt.body.limChar; + ast = forStmt; + } + break; + + } + case TypeScript.TokenID.With: { + { + if(TypeScript.codeGenTarget < TypeScript.CodeGenTarget.ES5) { + this.reportParseError("'with' statements are only available in ES5 codegen mode or better"); + } + if(this.strictMode) { + this.reportParseError("'with' statements are not available in strict mode"); + } + mayNotBeExported(); + if(modifiers != TypeScript.Modifiers.None) { + this.reportParseError("'with' statement does not take modifiers"); + } + minChar = this.scanner.startPos; + this.checkNextToken(TypeScript.TokenID.OpenParen, errorRecoverySet | TypeScript.ErrorRecoverySet.ExprStart | TypeScript.ErrorRecoverySet.Var); + var expr = this.parseExpr(errorRecoverySet | TypeScript.ErrorRecoverySet.Colon, TypeScript.OperatorPrecedence.None, true, TypeContext.NoTypes); + this.checkCurrentToken(TypeScript.TokenID.CloseParen, errorRecoverySet | TypeScript.ErrorRecoverySet.LCurly); + var withStmt = new TypeScript.WithStatement(expr); + withStmt.body = this.parseStatement(errorRecoverySet, allowedElements, parentModifiers); + withStmt.minChar = minChar; + withStmt.limChar = withStmt.body.limChar; + ast = withStmt; + } + break; + + } + case TypeScript.TokenID.Switch: { + mayNotBeExported(); + if(modifiers != TypeScript.Modifiers.None) { + this.reportParseError("'switch' statement does not take modifiers"); + } + this.checkNextToken(TypeScript.TokenID.OpenParen, errorRecoverySet | TypeScript.ErrorRecoverySet.ExprStart); + var switchStmt = new TypeScript.SwitchStatement(this.parseExpr(errorRecoverySet | TypeScript.ErrorRecoverySet.RParen, TypeScript.OperatorPrecedence.None, true, TypeContext.NoTypes)); + switchStmt.statement.minChar = minChar; + switchStmt.statement.limChar = this.scanner.pos; + this.checkCurrentToken(TypeScript.TokenID.CloseParen, errorRecoverySet | TypeScript.ErrorRecoverySet.LCurly); + var caseListMinChar = this.scanner.startPos; + this.checkCurrentToken(TypeScript.TokenID.OpenBrace, errorRecoverySet | TypeScript.ErrorRecoverySet.SCase); + switchStmt.defaultCase = null; + switchStmt.caseList = new TypeScript.ASTList(); + var caseStmt = null; + this.pushStmt(switchStmt, labelList); + for(; ; ) { + if((this.currentToken.tokenId == TypeScript.TokenID.Case) || (this.currentToken.tokenId == TypeScript.TokenID.Default)) { + var isDefault = (this.currentToken.tokenId == TypeScript.TokenID.Default); + caseStmt = new TypeScript.CaseStatement(); + caseStmt.minChar = this.scanner.startPos; + this.currentToken = this.scanner.scan(); + if(isDefault) { + switchStmt.defaultCase = caseStmt; + } else { + caseStmt.expr = this.parseExpr(errorRecoverySet | TypeScript.ErrorRecoverySet.Colon, TypeScript.OperatorPrecedence.None, true, TypeContext.NoTypes); + } + this.checkCurrentToken(TypeScript.TokenID.Colon, errorRecoverySet | TypeScript.ErrorRecoverySet.StmtStart); + caseStmt.body = new TypeScript.ASTList(); + this.parseStatementList(errorRecoverySet | TypeScript.ErrorRecoverySet.RCurly, caseStmt.body, false, true, allowedElements, modifiers); + caseStmt.limChar = caseStmt.body.limChar; + switchStmt.caseList.append(caseStmt); + } else { + break; + } + } + switchStmt.caseList.minChar = caseListMinChar; + switchStmt.caseList.limChar = this.scanner.pos; + switchStmt.limChar = switchStmt.caseList.limChar; + this.checkCurrentToken(TypeScript.TokenID.CloseBrace, errorRecoverySet); + this.popStmt(); + ast = switchStmt; + break; + } + + case TypeScript.TokenID.While: { + mayNotBeExported(); + if(modifiers != TypeScript.Modifiers.None) { + this.reportParseError("'while' statement does not take modifiers"); + } + minChar = this.scanner.startPos; + this.checkNextToken(TypeScript.TokenID.OpenParen, TypeScript.ErrorRecoverySet.ExprStart | errorRecoverySet); + var whileStmt = new TypeScript.WhileStatement(this.parseExpr(errorRecoverySet | TypeScript.ErrorRecoverySet.RParen, TypeScript.OperatorPrecedence.None, true, TypeContext.NoTypes)); + whileStmt.minChar = minChar; + this.checkCurrentToken(TypeScript.TokenID.CloseParen, errorRecoverySet | TypeScript.ErrorRecoverySet.StmtStart); + this.pushStmt(whileStmt, labelList); + whileStmt.body = this.parseStatement(errorRecoverySet, allowedElements, parentModifiers); + whileStmt.limChar = whileStmt.body.limChar; + this.popStmt(); + ast = whileStmt; + break; + } + + case TypeScript.TokenID.Do: { + mayNotBeExported(); + if(modifiers != TypeScript.Modifiers.None) { + this.reportParseError("'do' statement does not take modifiers"); + } + minChar = this.scanner.startPos; + this.currentToken = this.scanner.scan(); + var doStmt = new TypeScript.DoWhileStatement(); + doStmt.minChar = minChar; + this.pushStmt(doStmt, labelList); + doStmt.body = this.parseStatement(errorRecoverySet | TypeScript.ErrorRecoverySet.While, allowedElements, parentModifiers); + this.popStmt(); + doStmt.whileAST = new TypeScript.Identifier("while"); + doStmt.whileAST.minChar = this.scanner.startPos; + this.checkCurrentToken(TypeScript.TokenID.While, errorRecoverySet | TypeScript.ErrorRecoverySet.LParen); + doStmt.whileAST.limChar = doStmt.whileAST.minChar + 5; + this.checkCurrentToken(TypeScript.TokenID.OpenParen, errorRecoverySet | TypeScript.ErrorRecoverySet.ExprStart); + doStmt.cond = this.parseExpr(errorRecoverySet | TypeScript.ErrorRecoverySet.RParen, TypeScript.OperatorPrecedence.None, true, TypeContext.NoTypes); + doStmt.limChar = this.scanner.pos; + this.checkCurrentToken(TypeScript.TokenID.CloseParen, errorRecoverySet); + ast = doStmt; + if(this.currentToken.tokenId == TypeScript.TokenID.Semicolon) { + this.currentToken = this.scanner.scan(); + } + break; + } + + case TypeScript.TokenID.If: { + mayNotBeExported(); + if(modifiers != TypeScript.Modifiers.None) { + this.reportParseError("if statement does not take modifiers"); + } + minChar = this.scanner.startPos; + this.checkNextToken(TypeScript.TokenID.OpenParen, errorRecoverySet | TypeScript.ErrorRecoverySet.ExprStart); + var ifStmt = new TypeScript.IfStatement(this.parseExpr(errorRecoverySet | TypeScript.ErrorRecoverySet.LParen, TypeScript.OperatorPrecedence.None, true, TypeContext.NoTypes)); + ifStmt.minChar = minChar; + ifStmt.statement.minChar = minChar; + ifStmt.statement.limChar = this.scanner.pos; + this.checkCurrentToken(TypeScript.TokenID.CloseParen, errorRecoverySet | TypeScript.ErrorRecoverySet.StmtStart); + this.pushStmt(ifStmt, labelList); + ifStmt.thenBod = this.parseStatement(TypeScript.ErrorRecoverySet.Else | errorRecoverySet, allowedElements, parentModifiers); + ifStmt.limChar = ifStmt.thenBod.limChar; + if(this.currentToken.tokenId == TypeScript.TokenID.Else) { + this.currentToken = this.scanner.scan(); + ifStmt.elseBod = this.parseStatement(errorRecoverySet, allowedElements, parentModifiers); + ifStmt.limChar = ifStmt.elseBod.limChar; + } + this.popStmt(); + ast = ifStmt; + break; + } + + case TypeScript.TokenID.Try: { + mayNotBeExported(); + if(modifiers != TypeScript.Modifiers.None) { + this.reportParseError("try statement does not take modifiers"); + } + minChar = this.scanner.startPos; + ast = this.parseTryCatchFinally(errorRecoverySet, parentModifiers, labelList); + break; + } + + case TypeScript.TokenID.OpenBrace: { + mayNotBeExported(); + if(modifiers != TypeScript.Modifiers.None) { + this.reportParseError("block does not take modifiers"); + } + minChar = this.scanner.startPos; + this.currentToken = this.scanner.scan(); + var block = new TypeScript.Block(new TypeScript.ASTList(), true); + this.pushStmt(block, labelList); + this.parseStatementList(errorRecoverySet | TypeScript.ErrorRecoverySet.RCurly, block.statements, false, false, TypeScript.AllowedElements.None, modifiers); + this.popStmt(); + block.statements.minChar = minChar; + block.statements.limChar = this.scanner.pos; + block.minChar = block.statements.minChar; + block.limChar = block.statements.limChar; + this.checkCurrentToken(TypeScript.TokenID.CloseBrace, errorRecoverySet); + ast = block; + break; + } + + case TypeScript.TokenID.Semicolon: { + mayNotBeExported(); + if(modifiers != TypeScript.Modifiers.None) { + this.reportParseError("modifier can not appear here"); + } + ast = new TypeScript.AST(TypeScript.NodeType.Empty); + this.currentToken = this.scanner.scan(); + break; + + } + case TypeScript.TokenID.Break: + case TypeScript.TokenID.Continue: { + mayNotBeExported(); + if(modifiers != TypeScript.Modifiers.None) { + this.reportParseError("modifiers can not appear before jump statement"); + } + var jump = new TypeScript.Jump((this.currentToken.tokenId == TypeScript.TokenID.Break) ? TypeScript.NodeType.Break : TypeScript.NodeType.Continue); + this.currentToken = this.scanner.scan(); + if((this.currentToken.tokenId == TypeScript.TokenID.Identifier) && (!this.scanner.lastTokenHadNewline())) { + jump.target = this.currentToken.getText(); + this.currentToken = this.scanner.scan(); + } + this.resolveJumpTarget(jump); + ast = jump; + needTerminator = true; + break; + } + + case TypeScript.TokenID.Return: { + mayNotBeExported(); + if(modifiers != TypeScript.Modifiers.None) { + this.reportParseError("modifiers can not appear before return statement"); + } + if(!this.inFunction) { + this.reportParseError("return statement outside of function body"); + } + minChar = this.scanner.startPos; + this.currentToken = this.scanner.scan(); + var retStmt = new TypeScript.ReturnStatement(); + retStmt.minChar = minChar; + if((this.currentToken.tokenId != TypeScript.TokenID.Semicolon) && (this.currentToken.tokenId != TypeScript.TokenID.CloseBrace) && (!(this.scanner.lastTokenHadNewline()))) { + retStmt.returnExpression = this.parseExpr(errorRecoverySet | TypeScript.ErrorRecoverySet.SColon, TypeScript.OperatorPrecedence.None, true, TypeContext.NoTypes); + } + needTerminator = true; + retStmt.limChar = this.scanner.lastTokenLimChar(); + ast = retStmt; + break; + } + + case TypeScript.TokenID.Throw: { + mayNotBeExported(); + if(modifiers != TypeScript.Modifiers.None) { + this.reportParseError("modifiers can not appear before a throw statement"); + } + minChar = this.scanner.startPos; + this.currentToken = this.scanner.scan(); + if((this.currentToken.tokenId != TypeScript.TokenID.Semicolon) && (this.currentToken.tokenId != TypeScript.TokenID.CloseBrace) && (!(this.scanner.lastTokenHadNewline()))) { + temp = this.parseExpr(errorRecoverySet | TypeScript.ErrorRecoverySet.SColon, TypeScript.OperatorPrecedence.None, true, TypeContext.NoTypes); + } else { + this.reportParseError("throw with no target"); + temp = null; + } + ast = new TypeScript.UnaryExpression(TypeScript.NodeType.Throw, temp); + ast.limChar = this.scanner.lastTokenLimChar(); + needTerminator = true; + break; + + } + case TypeScript.TokenID.Enum: { + this.currentToken = this.scanner.scan(); + ast = this.parseEnumDecl(errorRecoverySet, modifiers); + ast.minChar = minChar; + ast.limChar = this.scanner.lastTokenLimChar(); + if(this.parsingDeclareFile || this.ambientModule || TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Ambient)) { + (ast).modFlags |= TypeScript.ModuleFlags.Ambient; + } + if(this.parsingDeclareFile || this.ambientModule || TypeScript.hasFlag(modifiers, TypeScript.Modifiers.Exported)) { + (ast).modFlags |= TypeScript.ModuleFlags.Exported; + } + break; + + } + case TypeScript.TokenID.Debugger: { + mayNotBeExported(); + if(modifiers != TypeScript.Modifiers.None) { + this.reportParseError("modifiers can not appear before debugger statement"); + } + minChar = this.scanner.startPos; + this.currentToken = this.scanner.scan(); + var debuggerStmt = new TypeScript.DebuggerStatement(); + debuggerStmt.minChar = minChar; + needTerminator = true; + debuggerStmt.limChar = this.scanner.lastTokenLimChar(); + ast = debuggerStmt; + break; + + } + default: { + if(modifiers != TypeScript.Modifiers.None) { + this.reportParseError("modifiers can not appear before an expression statement or label"); + } + minChar = this.scanner.startPos; + var svPos = this.scanner.pos; + temp = this.parseExpr(TypeScript.ErrorRecoverySet.Colon | TypeScript.ErrorRecoverySet.StmtStart | errorRecoverySet, TypeScript.OperatorPrecedence.None, true, TypeContext.NoTypes); + if(this.scanner.pos == svPos) { + this.currentToken = this.scanner.scan(); + ast = temp; + } else { + if((this.currentToken.tokenId == TypeScript.TokenID.Colon) && (!this.scanner.lastTokenHadNewline()) && temp && (temp.nodeType == TypeScript.NodeType.Name)) { + if(labelList == null) { + labelList = new TypeScript.ASTList(); + } + labelList.append(new TypeScript.Label(temp)); + this.currentToken = this.scanner.scan(); + } else { + ast = temp; + needTerminator = true; + } + } + + } + } + if(ast) { + break; + } + } + if(needTerminator) { + switch(this.currentToken.tokenId) { + case TypeScript.TokenID.Semicolon: { + this.currentToken = this.scanner.scan(); + ast.flags |= TypeScript.ASTFlags.ExplicitSemicolon; + break; + + } + case TypeScript.TokenID.EndOfFile: { + ast.limChar = this.scanner.pos; + + } + case TypeScript.TokenID.CloseBrace: { + ast.flags |= TypeScript.ASTFlags.AutomaticSemicolon; + if(this.style_requireSemi) { + this.reportParseStyleError("no automatic semicolon"); + } + break; + + } + default: { + if(!this.scanner.lastTokenHadNewline()) { + this.reportParseError("Expected ';'"); + } else { + ast.flags |= TypeScript.ASTFlags.AutomaticSemicolon; + if(this.style_requireSemi) { + this.reportParseStyleError("no automatic semicolon"); + } + } + break; + + } + } + } + if(labelList) { + ast = new TypeScript.LabeledStatement(labelList, ast); + } + ast.minChar = minChar; + ast.limChar = TypeScript.max(ast.limChar, this.scanner.lastTokenLimChar()); + if(preComments) { + ast.preComments = preComments; + } + if(this.ambientModule && (!this.okAmbientModuleMember(ast))) { + this.reportParseError("statement not permitted within ambient module"); + } + ast.flags |= TypeScript.ASTFlags.IsStatement; + return ast; + }; + Parser.prototype.okAmbientModuleMember = function (ast) { + var nt = ast.nodeType; + return (nt == TypeScript.NodeType.ClassDeclaration) || (nt == TypeScript.NodeType.ImportDeclaration) || (nt == TypeScript.NodeType.InterfaceDeclaration) || (nt == TypeScript.NodeType.ModuleDeclaration) || (nt == TypeScript.NodeType.Empty) || (nt == TypeScript.NodeType.VarDecl) || ((nt == TypeScript.NodeType.Block) && !(ast).isStatementBlock) || ((nt == TypeScript.NodeType.FuncDecl) && ((ast).isMethod())); + }; + Parser.prototype.parseStatementList = function (errorRecoverySet, statements, sourceElms, noLeadingCase, allowedElements, parentModifiers) { + var directivePrologue = sourceElms; + statements.minChar = this.scanner.startPos; + var limChar = this.scanner.pos; + var innerStmts = (allowedElements & TypeScript.AllowedElements.ModuleDeclarations) == TypeScript.AllowedElements.None; + var classNope = (allowedElements & TypeScript.AllowedElements.ClassDeclarations) == TypeScript.AllowedElements.None; + errorRecoverySet |= TypeScript.ErrorRecoverySet.TypeScriptS | TypeScript.ErrorRecoverySet.RCurly; + this.state = ParseState.StartStatementList; + var oldStrictMode = this.strictMode; + this.nestingLevel++; + for(; ; ) { + if((this.currentToken.tokenId == TypeScript.TokenID.CloseBrace) || (noLeadingCase && ((this.currentToken.tokenId == TypeScript.TokenID.Case) || (this.currentToken.tokenId == TypeScript.TokenID.Default))) || (innerStmts && (this.currentToken.tokenId == TypeScript.TokenID.Export)) || (classNope && (this.currentToken.tokenId == TypeScript.TokenID.Class)) || (this.currentToken.tokenId == TypeScript.TokenID.EndOfFile)) { + this.state = ParseState.EndStmtList; + statements.limChar = limChar; + if(statements.members.length == 0) { + statements.preComments = this.parseComments(); + } else { + statements.postComments = this.parseComments(); + } + this.strictMode = oldStrictMode; + this.nestingLevel--; + return; + } + var stmt = this.parseStatement(errorRecoverySet & (~(TypeScript.ErrorRecoverySet.Else | TypeScript.ErrorRecoverySet.RParen | TypeScript.ErrorRecoverySet.Catch | TypeScript.ErrorRecoverySet.Colon)), allowedElements, parentModifiers); + if(stmt) { + stmt.postComments = this.combineComments(stmt.postComments, this.parseCommentsForLine(this.scanner.prevLine)); + statements.append(stmt); + limChar = stmt.limChar; + if(directivePrologue) { + if(stmt.nodeType == TypeScript.NodeType.QString) { + var qstring = stmt; + if(qstring.text == "\"use strict\"") { + statements.flags |= TypeScript.ASTFlags.StrictMode; + this.strictMode = true; + } else { + directivePrologue = false; + } + } else { + directivePrologue = false; + } + } + } + } + }; + Parser.prototype.quickParse = function (sourceText, filename, unitIndex) { + var svGenTarget = TypeScript.moduleGenTarget; + try { + TypeScript.moduleGenTarget = TypeScript.ModuleGenTarget.Local; + var script = this.parse(sourceText, filename, unitIndex, TypeScript.AllowedElements.QuickParse); + return new QuickParseResult(script, this.scanner.lexState); + }finally { + TypeScript.moduleGenTarget = svGenTarget; + } + }; + Parser.prototype.parse = function (sourceText, filename, unitIndex, allowedElements) { + if (typeof allowedElements === "undefined") { allowedElements = TypeScript.AllowedElements.Global; } + var _this = this; + this.ambientModule = false; + this.topLevel = true; + this.hasTopLevelImportOrExport = false; + this.requiresExtendsBlock = false; + this.fname = filename; + this.currentUnitIndex = unitIndex; + this.amdDependencies = []; + this.scanner.resetComments(); + this.scanner.setErrorHandler(function (message) { + return _this.reportParseError(message); + }); + this.scanner.setSourceText(sourceText, TypeScript.LexMode.File); + var leftCurlyCount = this.scanner.leftCurlyCount; + var rightCurlyCount = this.scanner.rightCurlyCount; + var minChar = this.scanner.pos; + this.currentToken = this.scanner.scan(); + this.pushDeclLists(); + var bod = new TypeScript.ASTList(); + bod.minChar = minChar; + this.state = ParseState.StartScript; + this.parsingDeclareFile = TypeScript.isDSTRFile(filename) || TypeScript.isDTSFile(filename); + while(true) { + this.parseStatementList(TypeScript.ErrorRecoverySet.EOF | TypeScript.ErrorRecoverySet.Func, bod, true, false, allowedElements, TypeScript.Modifiers.None); + if(this.currentToken.tokenId === TypeScript.TokenID.EndOfFile) { + break; + } + var badToken = TypeScript.tokenTable[this.currentToken.tokenId]; + this.reportParseError("Unexpected statement block terminator '" + badToken.text + "'"); + this.currentToken = this.scanner.scan(); + } + this.state = ParseState.EndScript; + bod.limChar = this.scanner.pos; + var topLevelMod = null; + if(TypeScript.moduleGenTarget != TypeScript.ModuleGenTarget.Local && this.hasTopLevelImportOrExport) { + var correctedFileName = TypeScript.switchToForwardSlashes(filename); + var id = new TypeScript.Identifier(correctedFileName); + topLevelMod = new TypeScript.ModuleDeclaration(id, bod, this.topVarList(), this.topScopeList(), null); + topLevelMod.modFlags |= TypeScript.ModuleFlags.IsDynamic; + topLevelMod.modFlags |= TypeScript.ModuleFlags.IsWholeFile; + topLevelMod.modFlags |= TypeScript.ModuleFlags.Exported; + if(this.parsingDeclareFile) { + topLevelMod.modFlags |= TypeScript.ModuleFlags.Ambient; + } + topLevelMod.minChar = minChar; + topLevelMod.limChar = this.scanner.pos; + topLevelMod.prettyName = TypeScript.getPrettyName(correctedFileName); + topLevelMod.containsUnicodeChar = this.scanner.seenUnicodeChar; + topLevelMod.containsUnicodeCharInComment = this.scanner.seenUnicodeCharInComment; + topLevelMod.amdDependencies = this.amdDependencies; + bod = new TypeScript.ASTList(); + bod.minChar = topLevelMod.minChar; + bod.limChar = topLevelMod.limChar; + bod.append(topLevelMod); + } + var script = new TypeScript.Script(this.topVarList(), this.topScopeList()); + script.bod = bod; + this.popDeclLists(); + script.minChar = minChar; + script.limChar = this.scanner.pos; + script.locationInfo = new TypeScript.LocationInfo(filename, this.scanner.lineMap, unitIndex); + script.leftCurlyCount = this.scanner.leftCurlyCount - leftCurlyCount; + script.rightCurlyCount = this.scanner.rightCurlyCount - rightCurlyCount; + script.isDeclareFile = this.parsingDeclareFile; + script.topLevelMod = topLevelMod; + script.containsUnicodeChar = this.scanner.seenUnicodeChar; + script.containsUnicodeCharInComment = this.scanner.seenUnicodeCharInComment; + script.requiresExtendsBlock = this.requiresExtendsBlock; + return script; + }; + return Parser; + })(); + TypeScript.Parser = Parser; + function quickParse(logger, scopeStartAST, sourceText, minChar, limChar, errorCapture) { + var fragment = sourceText.getText(minChar, limChar); + logger.log("Quick parse range (" + minChar + "," + limChar + "): \"" + TypeScript.stringToLiteral(fragment, 100) + "\""); + var quickParser = new Parser(); + quickParser.setErrorRecovery(null); + quickParser.errorCallback = errorCapture; + var quickClassDecl = new TypeScript.ClassDeclaration(null, null, null, null); + quickParser.currentClassDecl = quickClassDecl; + var result = quickParser.quickParse(new TypeScript.StringSourceText(fragment), "", 0); + return result; + } + TypeScript.quickParse = quickParse; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + var PrintContext = (function () { + function PrintContext(outfile, parser) { + this.outfile = outfile; + this.parser = parser; + this.builder = ""; + this.indent1 = " "; + this.indentStrings = []; + this.indentAmt = 0; + } + PrintContext.prototype.increaseIndent = function () { + this.indentAmt++; + }; + PrintContext.prototype.decreaseIndent = function () { + this.indentAmt--; + }; + PrintContext.prototype.startLine = function () { + if(this.builder.length > 0) { + TypeScript.CompilerDiagnostics.Alert(this.builder); + } + var indentString = this.indentStrings[this.indentAmt]; + if(indentString === undefined) { + indentString = ""; + for(var i = 0; i < this.indentAmt; i++) { + indentString += this.indent1; + } + this.indentStrings[this.indentAmt] = indentString; + } + this.builder += indentString; + }; + PrintContext.prototype.write = function (s) { + this.builder += s; + }; + PrintContext.prototype.writeLine = function (s) { + this.builder += s; + this.outfile.WriteLine(this.builder); + this.builder = ""; + }; + return PrintContext; + })(); + TypeScript.PrintContext = PrintContext; + function prePrintAST(ast, parent, walker) { + var pc = walker.state; + ast.print(pc); + pc.increaseIndent(); + return ast; + } + TypeScript.prePrintAST = prePrintAST; + function postPrintAST(ast, parent, walker) { + var pc = walker.state; + pc.decreaseIndent(); + return ast; + } + TypeScript.postPrintAST = postPrintAST; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + TypeScript.LexEOF = (-1); + TypeScript.LexCodeNWL = 10; + TypeScript.LexCodeRET = 13; + TypeScript.LexCodeLS = 8232; + TypeScript.LexCodePS = 8233; + TypeScript.LexCodeTAB = 9; + TypeScript.LexCodeVTAB = 11; + TypeScript.LexCode_e = 'e'.charCodeAt(0); + TypeScript.LexCode_E = 'E'.charCodeAt(0); + TypeScript.LexCode_x = 'x'.charCodeAt(0); + TypeScript.LexCode_X = 'X'.charCodeAt(0); + TypeScript.LexCode_a = 'a'.charCodeAt(0); + TypeScript.LexCode_A = 'A'.charCodeAt(0); + TypeScript.LexCode_f = 'f'.charCodeAt(0); + TypeScript.LexCode_F = 'F'.charCodeAt(0); + TypeScript.LexCode_g = 'g'.charCodeAt(0); + TypeScript.LexCode_m = 'm'.charCodeAt(0); + TypeScript.LexCode_i = 'i'.charCodeAt(0); + TypeScript.LexCode_u = 'u'.charCodeAt(0); + TypeScript.LexCode_0 = '0'.charCodeAt(0); + TypeScript.LexCode_9 = '9'.charCodeAt(0); + TypeScript.LexCode_8 = '8'.charCodeAt(0); + TypeScript.LexCode_7 = '7'.charCodeAt(0); + TypeScript.LexCodeBSL = '\\'.charCodeAt(0); + TypeScript.LexCodeSHP = '#'.charCodeAt(0); + TypeScript.LexCodeBNG = '!'.charCodeAt(0); + TypeScript.LexCodeQUO = '"'.charCodeAt(0); + TypeScript.LexCodeAPO = '\''.charCodeAt(0); + TypeScript.LexCodePCT = '%'.charCodeAt(0); + TypeScript.LexCodeAMP = '&'.charCodeAt(0); + TypeScript.LexCodeLPR = '('.charCodeAt(0); + TypeScript.LexCodeRPR = ')'.charCodeAt(0); + TypeScript.LexCodePLS = '+'.charCodeAt(0); + TypeScript.LexCodeMIN = '-'.charCodeAt(0); + TypeScript.LexCodeMUL = '*'.charCodeAt(0); + TypeScript.LexCodeSLH = '/'.charCodeAt(0); + TypeScript.LexCodeXOR = '^'.charCodeAt(0); + TypeScript.LexCodeCMA = ','.charCodeAt(0); + TypeScript.LexCodeDOT = '.'.charCodeAt(0); + TypeScript.LexCodeLT = '<'.charCodeAt(0); + TypeScript.LexCodeEQ = '='.charCodeAt(0); + TypeScript.LexCodeGT = '>'.charCodeAt(0); + TypeScript.LexCodeQUE = '?'.charCodeAt(0); + TypeScript.LexCodeLBR = '['.charCodeAt(0); + TypeScript.LexCodeRBR = ']'.charCodeAt(0); + TypeScript.LexCodeUSC = '_'.charCodeAt(0); + TypeScript.LexCodeLC = '{'.charCodeAt(0); + TypeScript.LexCodeRC = '}'.charCodeAt(0); + TypeScript.LexCodeBAR = '|'.charCodeAt(0); + TypeScript.LexCodeTIL = '~'.charCodeAt(0); + TypeScript.LexCodeCOL = ':'.charCodeAt(0); + TypeScript.LexCodeSMC = ';'.charCodeAt(0); + TypeScript.LexCodeUnderscore = '_'.charCodeAt(0); + TypeScript.LexCodeDollar = '$'.charCodeAt(0); + TypeScript.LexCodeSpace = 32; + TypeScript.LexCodeAtSign = '@'.charCodeAt(0); + TypeScript.LexCodeASCIIChars = 128; + TypeScript.LexKeywordTable = undefined; + var autoToken = new Array(TypeScript.LexCodeASCIIChars); + var lexIdStartTable = new Array(TypeScript.LexCodeASCIIChars); + var unicodeES3IdStart = [ + 170, + 170, + 181, + 181, + 186, + 186, + 192, + 214, + 216, + 246, + 248, + 543, + 546, + 563, + 592, + 685, + 688, + 696, + 699, + 705, + 720, + 721, + 736, + 740, + 750, + 750, + 890, + 890, + 902, + 902, + 904, + 906, + 908, + 908, + 910, + 929, + 931, + 974, + 976, + 983, + 986, + 1011, + 1024, + 1153, + 1164, + 1220, + 1223, + 1224, + 1227, + 1228, + 1232, + 1269, + 1272, + 1273, + 1329, + 1366, + 1369, + 1369, + 1377, + 1415, + 1488, + 1514, + 1520, + 1522, + 1569, + 1594, + 1600, + 1610, + 1649, + 1747, + 1749, + 1749, + 1765, + 1766, + 1786, + 1788, + 1808, + 1808, + 1810, + 1836, + 1920, + 1957, + 2309, + 2361, + 2365, + 2365, + 2384, + 2384, + 2392, + 2401, + 2437, + 2444, + 2447, + 2448, + 2451, + 2472, + 2474, + 2480, + 2482, + 2482, + 2486, + 2489, + 2524, + 2525, + 2527, + 2529, + 2544, + 2545, + 2565, + 2570, + 2575, + 2576, + 2579, + 2600, + 2602, + 2608, + 2610, + 2611, + 2613, + 2614, + 2616, + 2617, + 2649, + 2652, + 2654, + 2654, + 2674, + 2676, + 2693, + 2699, + 2701, + 2701, + 2703, + 2705, + 2707, + 2728, + 2730, + 2736, + 2738, + 2739, + 2741, + 2745, + 2749, + 2749, + 2768, + 2768, + 2784, + 2784, + 2821, + 2828, + 2831, + 2832, + 2835, + 2856, + 2858, + 2864, + 2866, + 2867, + 2870, + 2873, + 2877, + 2877, + 2908, + 2909, + 2911, + 2913, + 2949, + 2954, + 2958, + 2960, + 2962, + 2965, + 2969, + 2970, + 2972, + 2972, + 2974, + 2975, + 2979, + 2980, + 2984, + 2986, + 2990, + 2997, + 2999, + 3001, + 3077, + 3084, + 3086, + 3088, + 3090, + 3112, + 3114, + 3123, + 3125, + 3129, + 3168, + 3169, + 3205, + 3212, + 3214, + 3216, + 3218, + 3240, + 3242, + 3251, + 3253, + 3257, + 3294, + 3294, + 3296, + 3297, + 3333, + 3340, + 3342, + 3344, + 3346, + 3368, + 3370, + 3385, + 3424, + 3425, + 3461, + 3478, + 3482, + 3505, + 3507, + 3515, + 3517, + 3517, + 3520, + 3526, + 3585, + 3632, + 3634, + 3635, + 3648, + 3654, + 3713, + 3714, + 3716, + 3716, + 3719, + 3720, + 3722, + 3722, + 3725, + 3725, + 3732, + 3735, + 3737, + 3743, + 3745, + 3747, + 3749, + 3749, + 3751, + 3751, + 3754, + 3755, + 3757, + 3760, + 3762, + 3763, + 3773, + 3773, + 3776, + 3780, + 3782, + 3782, + 3804, + 3805, + 3840, + 3840, + 3904, + 3911, + 3913, + 3946, + 3976, + 3979, + 4096, + 4129, + 4131, + 4135, + 4137, + 4138, + 4176, + 4181, + 4256, + 4293, + 4304, + 4342, + 4352, + 4441, + 4447, + 4514, + 4520, + 4601, + 4608, + 4614, + 4616, + 4678, + 4680, + 4680, + 4682, + 4685, + 4688, + 4694, + 4696, + 4696, + 4698, + 4701, + 4704, + 4742, + 4744, + 4744, + 4746, + 4749, + 4752, + 4782, + 4784, + 4784, + 4786, + 4789, + 4792, + 4798, + 4800, + 4800, + 4802, + 4805, + 4808, + 4814, + 4816, + 4822, + 4824, + 4846, + 4848, + 4878, + 4880, + 4880, + 4882, + 4885, + 4888, + 4894, + 4896, + 4934, + 4936, + 4954, + 5024, + 5108, + 5121, + 5740, + 5743, + 5750, + 5761, + 5786, + 5792, + 5866, + 6016, + 6067, + 6176, + 6263, + 6272, + 6312, + 7680, + 7835, + 7840, + 7929, + 7936, + 7957, + 7960, + 7965, + 7968, + 8005, + 8008, + 8013, + 8016, + 8023, + 8025, + 8025, + 8027, + 8027, + 8029, + 8029, + 8031, + 8061, + 8064, + 8116, + 8118, + 8124, + 8126, + 8126, + 8130, + 8132, + 8134, + 8140, + 8144, + 8147, + 8150, + 8155, + 8160, + 8172, + 8178, + 8180, + 8182, + 8188, + 8319, + 8319, + 8450, + 8450, + 8455, + 8455, + 8458, + 8467, + 8469, + 8469, + 8473, + 8477, + 8484, + 8484, + 8486, + 8486, + 8488, + 8488, + 8490, + 8493, + 8495, + 8497, + 8499, + 8505, + 8544, + 8579, + 12293, + 12295, + 12321, + 12329, + 12337, + 12341, + 12344, + 12346, + 12353, + 12436, + 12445, + 12446, + 12449, + 12538, + 12540, + 12542, + 12549, + 12588, + 12593, + 12686, + 12704, + 12727, + 13312, + 13312, + 19893, + 19893, + 19968, + 19968, + 40869, + 40869, + 40960, + 42124, + 44032, + 44032, + 55203, + 55203, + 63744, + 64045, + 64256, + 64262, + 64275, + 64279, + 64285, + 64285, + 64287, + 64296, + 64298, + 64310, + 64312, + 64316, + 64318, + 64318, + 64320, + 64321, + 64323, + 64324, + 64326, + 64433, + 64467, + 64829, + 64848, + 64911, + 64914, + 64967, + 65008, + 65019, + 65136, + 65138, + 65140, + 65140, + 65142, + 65276, + 65313, + 65338, + 65345, + 65370, + 65382, + 65470, + 65474, + 65479, + 65482, + 65487, + 65490, + 65495, + 65498, + 65500 + ]; + var unicodeES3IdCont = [ + 768, + 846, + 864, + 866, + 1155, + 1158, + 1425, + 1441, + 1443, + 1465, + 1467, + 1469, + 1471, + 1471, + 1473, + 1474, + 1476, + 1476, + 1611, + 1621, + 1632, + 1641, + 1648, + 1648, + 1750, + 1756, + 1759, + 1764, + 1767, + 1768, + 1770, + 1773, + 1776, + 1785, + 1809, + 1809, + 1840, + 1866, + 1958, + 1968, + 2305, + 2307, + 2364, + 2364, + 2366, + 2381, + 2385, + 2388, + 2402, + 2403, + 2406, + 2415, + 2433, + 2435, + 2492, + 2492, + 2494, + 2500, + 2503, + 2504, + 2507, + 2509, + 2519, + 2519, + 2530, + 2531, + 2534, + 2543, + 2562, + 2562, + 2620, + 2620, + 2622, + 2626, + 2631, + 2632, + 2635, + 2637, + 2662, + 2673, + 2689, + 2691, + 2748, + 2748, + 2750, + 2757, + 2759, + 2761, + 2763, + 2765, + 2790, + 2799, + 2817, + 2819, + 2876, + 2876, + 2878, + 2883, + 2887, + 2888, + 2891, + 2893, + 2902, + 2903, + 2918, + 2927, + 2946, + 2947, + 3006, + 3010, + 3014, + 3016, + 3018, + 3021, + 3031, + 3031, + 3047, + 3055, + 3073, + 3075, + 3134, + 3140, + 3142, + 3144, + 3146, + 3149, + 3157, + 3158, + 3174, + 3183, + 3202, + 3203, + 3262, + 3268, + 3270, + 3272, + 3274, + 3277, + 3285, + 3286, + 3302, + 3311, + 3330, + 3331, + 3390, + 3395, + 3398, + 3400, + 3402, + 3405, + 3415, + 3415, + 3430, + 3439, + 3458, + 3459, + 3530, + 3530, + 3535, + 3540, + 3542, + 3542, + 3544, + 3551, + 3570, + 3571, + 3633, + 3633, + 3636, + 3642, + 3655, + 3662, + 3664, + 3673, + 3761, + 3761, + 3764, + 3769, + 3771, + 3772, + 3784, + 3789, + 3792, + 3801, + 3864, + 3865, + 3872, + 3881, + 3893, + 3893, + 3895, + 3895, + 3897, + 3897, + 3902, + 3903, + 3953, + 3972, + 3974, + 3975, + 3984, + 3991, + 3993, + 4028, + 4038, + 4038, + 4140, + 4146, + 4150, + 4153, + 4160, + 4169, + 4182, + 4185, + 4969, + 4977, + 6068, + 6099, + 6112, + 6121, + 6160, + 6169, + 6313, + 6313, + 8255, + 8256, + 8400, + 8412, + 8417, + 8417, + 12330, + 12335, + 12441, + 12442, + 12539, + 12539, + 64286, + 64286, + 65056, + 65059, + 65075, + 65076, + 65101, + 65103, + 65296, + 65305, + 65343, + 65343, + 65381, + 65381 + ]; + var unicodeES5IdStart = [ + 170, + 170, + 181, + 181, + 186, + 186, + 192, + 214, + 216, + 246, + 248, + 705, + 710, + 721, + 736, + 740, + 748, + 748, + 750, + 750, + 880, + 884, + 886, + 887, + 890, + 893, + 902, + 902, + 904, + 906, + 908, + 908, + 910, + 929, + 931, + 1013, + 1015, + 1153, + 1162, + 1319, + 1329, + 1366, + 1369, + 1369, + 1377, + 1415, + 1488, + 1514, + 1520, + 1522, + 1568, + 1610, + 1646, + 1647, + 1649, + 1747, + 1749, + 1749, + 1765, + 1766, + 1774, + 1775, + 1786, + 1788, + 1791, + 1791, + 1808, + 1808, + 1810, + 1839, + 1869, + 1957, + 1969, + 1969, + 1994, + 2026, + 2036, + 2037, + 2042, + 2042, + 2048, + 2069, + 2074, + 2074, + 2084, + 2084, + 2088, + 2088, + 2112, + 2136, + 2208, + 2208, + 2210, + 2220, + 2308, + 2361, + 2365, + 2365, + 2384, + 2384, + 2392, + 2401, + 2417, + 2423, + 2425, + 2431, + 2437, + 2444, + 2447, + 2448, + 2451, + 2472, + 2474, + 2480, + 2482, + 2482, + 2486, + 2489, + 2493, + 2493, + 2510, + 2510, + 2524, + 2525, + 2527, + 2529, + 2544, + 2545, + 2565, + 2570, + 2575, + 2576, + 2579, + 2600, + 2602, + 2608, + 2610, + 2611, + 2613, + 2614, + 2616, + 2617, + 2649, + 2652, + 2654, + 2654, + 2674, + 2676, + 2693, + 2701, + 2703, + 2705, + 2707, + 2728, + 2730, + 2736, + 2738, + 2739, + 2741, + 2745, + 2749, + 2749, + 2768, + 2768, + 2784, + 2785, + 2821, + 2828, + 2831, + 2832, + 2835, + 2856, + 2858, + 2864, + 2866, + 2867, + 2869, + 2873, + 2877, + 2877, + 2908, + 2909, + 2911, + 2913, + 2929, + 2929, + 2947, + 2947, + 2949, + 2954, + 2958, + 2960, + 2962, + 2965, + 2969, + 2970, + 2972, + 2972, + 2974, + 2975, + 2979, + 2980, + 2984, + 2986, + 2990, + 3001, + 3024, + 3024, + 3077, + 3084, + 3086, + 3088, + 3090, + 3112, + 3114, + 3123, + 3125, + 3129, + 3133, + 3133, + 3160, + 3161, + 3168, + 3169, + 3205, + 3212, + 3214, + 3216, + 3218, + 3240, + 3242, + 3251, + 3253, + 3257, + 3261, + 3261, + 3294, + 3294, + 3296, + 3297, + 3313, + 3314, + 3333, + 3340, + 3342, + 3344, + 3346, + 3386, + 3389, + 3389, + 3406, + 3406, + 3424, + 3425, + 3450, + 3455, + 3461, + 3478, + 3482, + 3505, + 3507, + 3515, + 3517, + 3517, + 3520, + 3526, + 3585, + 3632, + 3634, + 3635, + 3648, + 3654, + 3713, + 3714, + 3716, + 3716, + 3719, + 3720, + 3722, + 3722, + 3725, + 3725, + 3732, + 3735, + 3737, + 3743, + 3745, + 3747, + 3749, + 3749, + 3751, + 3751, + 3754, + 3755, + 3757, + 3760, + 3762, + 3763, + 3773, + 3773, + 3776, + 3780, + 3782, + 3782, + 3804, + 3807, + 3840, + 3840, + 3904, + 3911, + 3913, + 3948, + 3976, + 3980, + 4096, + 4138, + 4159, + 4159, + 4176, + 4181, + 4186, + 4189, + 4193, + 4193, + 4197, + 4198, + 4206, + 4208, + 4213, + 4225, + 4238, + 4238, + 4256, + 4293, + 4295, + 4295, + 4301, + 4301, + 4304, + 4346, + 4348, + 4680, + 4682, + 4685, + 4688, + 4694, + 4696, + 4696, + 4698, + 4701, + 4704, + 4744, + 4746, + 4749, + 4752, + 4784, + 4786, + 4789, + 4792, + 4798, + 4800, + 4800, + 4802, + 4805, + 4808, + 4822, + 4824, + 4880, + 4882, + 4885, + 4888, + 4954, + 4992, + 5007, + 5024, + 5108, + 5121, + 5740, + 5743, + 5759, + 5761, + 5786, + 5792, + 5866, + 5870, + 5872, + 5888, + 5900, + 5902, + 5905, + 5920, + 5937, + 5952, + 5969, + 5984, + 5996, + 5998, + 6000, + 6016, + 6067, + 6103, + 6103, + 6108, + 6108, + 6176, + 6263, + 6272, + 6312, + 6314, + 6314, + 6320, + 6389, + 6400, + 6428, + 6480, + 6509, + 6512, + 6516, + 6528, + 6571, + 6593, + 6599, + 6656, + 6678, + 6688, + 6740, + 6823, + 6823, + 6917, + 6963, + 6981, + 6987, + 7043, + 7072, + 7086, + 7087, + 7098, + 7141, + 7168, + 7203, + 7245, + 7247, + 7258, + 7293, + 7401, + 7404, + 7406, + 7409, + 7413, + 7414, + 7424, + 7615, + 7680, + 7957, + 7960, + 7965, + 7968, + 8005, + 8008, + 8013, + 8016, + 8023, + 8025, + 8025, + 8027, + 8027, + 8029, + 8029, + 8031, + 8061, + 8064, + 8116, + 8118, + 8124, + 8126, + 8126, + 8130, + 8132, + 8134, + 8140, + 8144, + 8147, + 8150, + 8155, + 8160, + 8172, + 8178, + 8180, + 8182, + 8188, + 8305, + 8305, + 8319, + 8319, + 8336, + 8348, + 8450, + 8450, + 8455, + 8455, + 8458, + 8467, + 8469, + 8469, + 8473, + 8477, + 8484, + 8484, + 8486, + 8486, + 8488, + 8488, + 8490, + 8493, + 8495, + 8505, + 8508, + 8511, + 8517, + 8521, + 8526, + 8526, + 8544, + 8584, + 11264, + 11310, + 11312, + 11358, + 11360, + 11492, + 11499, + 11502, + 11506, + 11507, + 11520, + 11557, + 11559, + 11559, + 11565, + 11565, + 11568, + 11623, + 11631, + 11631, + 11648, + 11670, + 11680, + 11686, + 11688, + 11694, + 11696, + 11702, + 11704, + 11710, + 11712, + 11718, + 11720, + 11726, + 11728, + 11734, + 11736, + 11742, + 11823, + 11823, + 12293, + 12295, + 12321, + 12329, + 12337, + 12341, + 12344, + 12348, + 12353, + 12438, + 12445, + 12447, + 12449, + 12538, + 12540, + 12543, + 12549, + 12589, + 12593, + 12686, + 12704, + 12730, + 12784, + 12799, + 13312, + 13312, + 19893, + 19893, + 19968, + 19968, + 40908, + 40908, + 40960, + 42124, + 42192, + 42237, + 42240, + 42508, + 42512, + 42527, + 42538, + 42539, + 42560, + 42606, + 42623, + 42647, + 42656, + 42735, + 42775, + 42783, + 42786, + 42888, + 42891, + 42894, + 42896, + 42899, + 42912, + 42922, + 43000, + 43009, + 43011, + 43013, + 43015, + 43018, + 43020, + 43042, + 43072, + 43123, + 43138, + 43187, + 43250, + 43255, + 43259, + 43259, + 43274, + 43301, + 43312, + 43334, + 43360, + 43388, + 43396, + 43442, + 43471, + 43471, + 43520, + 43560, + 43584, + 43586, + 43588, + 43595, + 43616, + 43638, + 43642, + 43642, + 43648, + 43695, + 43697, + 43697, + 43701, + 43702, + 43705, + 43709, + 43712, + 43712, + 43714, + 43714, + 43739, + 43741, + 43744, + 43754, + 43762, + 43764, + 43777, + 43782, + 43785, + 43790, + 43793, + 43798, + 43808, + 43814, + 43816, + 43822, + 43968, + 44002, + 44032, + 44032, + 55203, + 55203, + 55216, + 55238, + 55243, + 55291, + 63744, + 64109, + 64112, + 64217, + 64256, + 64262, + 64275, + 64279, + 64285, + 64285, + 64287, + 64296, + 64298, + 64310, + 64312, + 64316, + 64318, + 64318, + 64320, + 64321, + 64323, + 64324, + 64326, + 64433, + 64467, + 64829, + 64848, + 64911, + 64914, + 64967, + 65008, + 65019, + 65136, + 65140, + 65142, + 65276, + 65313, + 65338, + 65345, + 65370, + 65382, + 65470, + 65474, + 65479, + 65482, + 65487, + 65490, + 65495, + 65498, + 65500 + ]; + var unicodeES5IdCont = [ + 768, + 879, + 1155, + 1159, + 1425, + 1469, + 1471, + 1471, + 1473, + 1474, + 1476, + 1477, + 1479, + 1479, + 1552, + 1562, + 1611, + 1641, + 1648, + 1648, + 1750, + 1756, + 1759, + 1764, + 1767, + 1768, + 1770, + 1773, + 1776, + 1785, + 1809, + 1809, + 1840, + 1866, + 1958, + 1968, + 1984, + 1993, + 2027, + 2035, + 2070, + 2073, + 2075, + 2083, + 2085, + 2087, + 2089, + 2093, + 2137, + 2139, + 2276, + 2302, + 2304, + 2307, + 2362, + 2364, + 2366, + 2383, + 2385, + 2391, + 2402, + 2403, + 2406, + 2415, + 2433, + 2435, + 2492, + 2492, + 2494, + 2500, + 2503, + 2504, + 2507, + 2509, + 2519, + 2519, + 2530, + 2531, + 2534, + 2543, + 2561, + 2563, + 2620, + 2620, + 2622, + 2626, + 2631, + 2632, + 2635, + 2637, + 2641, + 2641, + 2662, + 2673, + 2677, + 2677, + 2689, + 2691, + 2748, + 2748, + 2750, + 2757, + 2759, + 2761, + 2763, + 2765, + 2786, + 2787, + 2790, + 2799, + 2817, + 2819, + 2876, + 2876, + 2878, + 2884, + 2887, + 2888, + 2891, + 2893, + 2902, + 2903, + 2914, + 2915, + 2918, + 2927, + 2946, + 2946, + 3006, + 3010, + 3014, + 3016, + 3018, + 3021, + 3031, + 3031, + 3046, + 3055, + 3073, + 3075, + 3134, + 3140, + 3142, + 3144, + 3146, + 3149, + 3157, + 3158, + 3170, + 3171, + 3174, + 3183, + 3202, + 3203, + 3260, + 3260, + 3262, + 3268, + 3270, + 3272, + 3274, + 3277, + 3285, + 3286, + 3298, + 3299, + 3302, + 3311, + 3330, + 3331, + 3390, + 3396, + 3398, + 3400, + 3402, + 3405, + 3415, + 3415, + 3426, + 3427, + 3430, + 3439, + 3458, + 3459, + 3530, + 3530, + 3535, + 3540, + 3542, + 3542, + 3544, + 3551, + 3570, + 3571, + 3633, + 3633, + 3636, + 3642, + 3655, + 3662, + 3664, + 3673, + 3761, + 3761, + 3764, + 3769, + 3771, + 3772, + 3784, + 3789, + 3792, + 3801, + 3864, + 3865, + 3872, + 3881, + 3893, + 3893, + 3895, + 3895, + 3897, + 3897, + 3902, + 3903, + 3953, + 3972, + 3974, + 3975, + 3981, + 3991, + 3993, + 4028, + 4038, + 4038, + 4139, + 4158, + 4160, + 4169, + 4182, + 4185, + 4190, + 4192, + 4194, + 4196, + 4199, + 4205, + 4209, + 4212, + 4226, + 4237, + 4239, + 4253, + 4957, + 4959, + 5906, + 5908, + 5938, + 5940, + 5970, + 5971, + 6002, + 6003, + 6068, + 6099, + 6109, + 6109, + 6112, + 6121, + 6155, + 6157, + 6160, + 6169, + 6313, + 6313, + 6432, + 6443, + 6448, + 6459, + 6470, + 6479, + 6576, + 6592, + 6600, + 6601, + 6608, + 6617, + 6679, + 6683, + 6741, + 6750, + 6752, + 6780, + 6783, + 6793, + 6800, + 6809, + 6912, + 6916, + 6964, + 6980, + 6992, + 7001, + 7019, + 7027, + 7040, + 7042, + 7073, + 7085, + 7088, + 7097, + 7142, + 7155, + 7204, + 7223, + 7232, + 7241, + 7248, + 7257, + 7376, + 7378, + 7380, + 7400, + 7405, + 7405, + 7410, + 7412, + 7616, + 7654, + 7676, + 7679, + 8204, + 8205, + 8255, + 8256, + 8276, + 8276, + 8400, + 8412, + 8417, + 8417, + 8421, + 8432, + 11503, + 11505, + 11647, + 11647, + 11744, + 11775, + 12330, + 12335, + 12441, + 12442, + 42528, + 42537, + 42607, + 42607, + 42612, + 42621, + 42655, + 42655, + 42736, + 42737, + 43010, + 43010, + 43014, + 43014, + 43019, + 43019, + 43043, + 43047, + 43136, + 43137, + 43188, + 43204, + 43216, + 43225, + 43232, + 43249, + 43264, + 43273, + 43302, + 43309, + 43335, + 43347, + 43392, + 43395, + 43443, + 43456, + 43472, + 43481, + 43561, + 43574, + 43587, + 43587, + 43596, + 43597, + 43600, + 43609, + 43643, + 43643, + 43696, + 43696, + 43698, + 43700, + 43703, + 43704, + 43710, + 43711, + 43713, + 43713, + 43755, + 43759, + 43765, + 43766, + 44003, + 44010, + 44012, + 44013, + 44016, + 44025, + 64286, + 64286, + 65024, + 65039, + 65056, + 65062, + 65075, + 65076, + 65101, + 65103, + 65296, + 65305, + 65343, + 65343 + ]; + function LexLookUpUnicodeMap(code, map) { + var lo = 0; + var hi = map.length; + var mid; + while(lo + 1 < hi) { + mid = lo + (hi - lo) / 2; + mid -= mid % 2; + if(map[mid] <= code && code <= map[mid + 1]) { + return true; + } + if(code < map[mid]) { + hi = mid; + } else { + lo = mid + 2; + } + } + return false; + } + TypeScript.LexLookUpUnicodeMap = LexLookUpUnicodeMap; + function LexIsUnicodeDigit(code) { + if(TypeScript.codeGenTarget == TypeScript.CodeGenTarget.ES3) { + return LexLookUpUnicodeMap(code, unicodeES3IdCont); + } else { + return LexLookUpUnicodeMap(code, unicodeES5IdCont); + } + } + TypeScript.LexIsUnicodeDigit = LexIsUnicodeDigit; + function LexIsUnicodeIdStart(code) { + if(TypeScript.codeGenTarget == TypeScript.CodeGenTarget.ES3) { + return LexLookUpUnicodeMap(code, unicodeES3IdStart); + } else { + return LexLookUpUnicodeMap(code, unicodeES5IdStart); + } + } + TypeScript.LexIsUnicodeIdStart = LexIsUnicodeIdStart; + function LexInitialize() { + TypeScript.initializeStaticTokens(); + autoToken[TypeScript.LexCodeLPR] = TypeScript.staticTokens[TypeScript.TokenID.OpenParen]; + autoToken[TypeScript.LexCodeRPR] = TypeScript.staticTokens[TypeScript.TokenID.CloseParen]; + autoToken[TypeScript.LexCodeCMA] = TypeScript.staticTokens[TypeScript.TokenID.Comma]; + autoToken[TypeScript.LexCodeSMC] = TypeScript.staticTokens[TypeScript.TokenID.Semicolon]; + autoToken[TypeScript.LexCodeLBR] = TypeScript.staticTokens[TypeScript.TokenID.OpenBracket]; + autoToken[TypeScript.LexCodeRBR] = TypeScript.staticTokens[TypeScript.TokenID.CloseBracket]; + autoToken[TypeScript.LexCodeTIL] = TypeScript.staticTokens[TypeScript.TokenID.Tilde]; + autoToken[TypeScript.LexCodeQUE] = TypeScript.staticTokens[TypeScript.TokenID.Question]; + autoToken[TypeScript.LexCodeLC] = TypeScript.staticTokens[TypeScript.TokenID.OpenBrace]; + autoToken[TypeScript.LexCodeRC] = TypeScript.staticTokens[TypeScript.TokenID.CloseBrace]; + autoToken[TypeScript.LexCodeCOL] = TypeScript.staticTokens[TypeScript.TokenID.Colon]; + TypeScript.LexKeywordTable = new TypeScript.StringHashTable(); + for(var i in (TypeScript.TokenID)._map) { + if((i) <= TypeScript.TokenID.LimKeyword) { + TypeScript.LexKeywordTable.add((TypeScript.TokenID)._map[i].toLowerCase(), i); + } + } + for(var j = 0; j < TypeScript.LexCodeASCIIChars; j++) { + if(LexIsIdentifierStartChar(j)) { + lexIdStartTable[j] = true; + } else { + lexIdStartTable[j] = false; + } + } + } + TypeScript.LexInitialize = LexInitialize; + function LexAdjustIndent(code, indentAmt) { + if((code == TypeScript.LexCodeLBR) || (code == TypeScript.LexCodeLC) || (code == TypeScript.LexCodeLPR)) { + return indentAmt + 1; + } else { + if((code == TypeScript.LexCodeRBR) || (code == TypeScript.LexCodeRC) || (code == TypeScript.LexCodeRPR)) { + return indentAmt - 1; + } else { + return indentAmt; + } + } + } + TypeScript.LexAdjustIndent = LexAdjustIndent; + function LexIsIdentifierStartChar(code) { + return (((code >= 97) && (code <= 122)) || ((code >= 65) && (code <= 90)) || (code == TypeScript.LexCodeDollar) || (code == TypeScript.LexCodeUnderscore)); + } + TypeScript.LexIsIdentifierStartChar = LexIsIdentifierStartChar; + function LexIsDigit(code) { + return ((code >= 48) && (code <= 57)); + } + TypeScript.LexIsDigit = LexIsDigit; + function LexIsIdentifierChar(code) { + return lexIdStartTable[code] || LexIsDigit(code); + } + TypeScript.LexIsIdentifierChar = LexIsIdentifierChar; + function LexMatchingOpen(code) { + if(code == TypeScript.LexCodeRBR) { + return TypeScript.LexCodeLBR; + } else { + if(code == TypeScript.LexCodeRC) { + return TypeScript.LexCodeLC; + } else { + if(code == TypeScript.LexCodeRPR) { + return TypeScript.LexCodeLPR; + } else { + return 0; + } + } + } + } + TypeScript.LexMatchingOpen = LexMatchingOpen; + (function (NumberScanState) { + NumberScanState._map = []; + NumberScanState._map[0] = "Start"; + NumberScanState.Start = 0; + NumberScanState._map[1] = "InFraction"; + NumberScanState.InFraction = 1; + NumberScanState._map[2] = "InEmptyFraction"; + NumberScanState.InEmptyFraction = 2; + NumberScanState._map[3] = "InExponent"; + NumberScanState.InExponent = 3; + })(TypeScript.NumberScanState || (TypeScript.NumberScanState = {})); + var NumberScanState = TypeScript.NumberScanState; + (function (LexState) { + LexState._map = []; + LexState._map[0] = "Start"; + LexState.Start = 0; + LexState._map[1] = "InMultilineComment"; + LexState.InMultilineComment = 1; + LexState._map[2] = "InMultilineSingleQuoteString"; + LexState.InMultilineSingleQuoteString = 2; + LexState._map[3] = "InMultilineDoubleQuoteString"; + LexState.InMultilineDoubleQuoteString = 3; + })(TypeScript.LexState || (TypeScript.LexState = {})); + var LexState = TypeScript.LexState; + (function (LexMode) { + LexMode._map = []; + LexMode._map[0] = "Line"; + LexMode.Line = 0; + LexMode._map[1] = "File"; + LexMode.File = 1; + })(TypeScript.LexMode || (TypeScript.LexMode = {})); + var LexMode = TypeScript.LexMode; + (function (CommentStyle) { + CommentStyle._map = []; + CommentStyle._map[0] = "Line"; + CommentStyle.Line = 0; + CommentStyle._map[1] = "Block"; + CommentStyle.Block = 1; + })(TypeScript.CommentStyle || (TypeScript.CommentStyle = {})); + var CommentStyle = TypeScript.CommentStyle; + var StringSourceText = (function () { + function StringSourceText(text) { + this.text = text; + } + StringSourceText.prototype.getText = function (start, end) { + return this.text.substring(start, end); + }; + StringSourceText.prototype.getLength = function () { + return this.text.length; + }; + return StringSourceText; + })(); + TypeScript.StringSourceText = StringSourceText; + var SourceTextSegment = (function () { + function SourceTextSegment(segmentStart, segmentEnd, segment) { + this.segmentStart = segmentStart; + this.segmentEnd = segmentEnd; + this.segment = segment; + } + SourceTextSegment.prototype.charCodeAt = function (index) { + return this.segment.charCodeAt(index - this.segmentStart); + }; + SourceTextSegment.prototype.substring = function (start, end) { + return this.segment.substring(start - this.segmentStart, end - this.segmentStart); + }; + return SourceTextSegment; + })(); + TypeScript.SourceTextSegment = SourceTextSegment; + var AggerateSourceTextSegment = (function () { + function AggerateSourceTextSegment(seg1, seg2) { + this.seg1 = seg1; + this.seg2 = seg2; + } + AggerateSourceTextSegment.prototype.charCodeAt = function (index) { + if(this.seg1.segmentStart <= index && index < this.seg1.segmentEnd) { + return this.seg1.segment.charCodeAt(index - this.seg1.segmentStart); + } + return this.seg2.segment.charCodeAt(index - this.seg2.segmentStart); + }; + AggerateSourceTextSegment.prototype.substring = function (start, end) { + if(this.seg1.segmentStart <= start && end <= this.seg1.segmentEnd) { + return this.seg1.segment.substring(start - this.seg1.segmentStart, end - this.seg1.segmentStart); + } + return this.seg2.segment.substring(start - this.seg2.segmentStart) + this.seg1.segment.substring(0, end - this.seg1.segmentStart); + }; + return AggerateSourceTextSegment; + })(); + TypeScript.AggerateSourceTextSegment = AggerateSourceTextSegment; + var ScannerTextStream = (function () { + function ScannerTextStream(sourceText) { + this.sourceText = sourceText; + this.agg = new AggerateSourceTextSegment(ScannerTextStream.emptySegment, ScannerTextStream.emptySegment); + this.len = this.sourceText.getLength(); + } + ScannerTextStream.emptySegment = new SourceTextSegment(0, 0, ""); + ScannerTextStream.prototype.max = function (a, b) { + return a >= b ? a : b; + }; + ScannerTextStream.prototype.min = function (a, b) { + return a <= b ? a : b; + }; + ScannerTextStream.prototype.fetchSegment = function (start, end) { + if(this.agg.seg1.segmentStart <= start && end <= this.agg.seg1.segmentEnd) { + return this.agg.seg1; + } + if(this.agg.seg2.segmentStart <= start && end <= this.agg.seg1.segmentEnd) { + return this.agg; + } + var prev = this.agg.seg1; + var s = prev.segmentEnd; + var e = TypeScript.max(s + 512, end); + e = TypeScript.min(e, this.len); + var src = this.sourceText.getText(s, e); + var newSeg = new SourceTextSegment(s, e, src); + this.agg.seg2 = prev; + this.agg.seg1 = newSeg; + return this.agg; + }; + ScannerTextStream.prototype.charCodeAt = function (index) { + return this.fetchSegment(index, index + 1).charCodeAt(index); + }; + ScannerTextStream.prototype.substring = function (start, end) { + return this.fetchSegment(start, end).substring(start, end); + }; + return ScannerTextStream; + })(); + TypeScript.ScannerTextStream = ScannerTextStream; + var SavedTokens = (function () { + function SavedTokens() { + this.prevToken = null; + this.curSavedToken = null; + this.prevSavedToken = null; + this.prevToken = null; + this.currentToken = 0; + this.tokens = new Array(); + this.seenUnicodeChar = false; + this.seenUnicodeCharInComment = false; + this.prevLine = 1; + this.line = 1; + this.col = 0; + this.lexState = LexState.Start; + this.commentStack = new Array(); + this.lineMap = []; + } + SavedTokens.prototype.previousToken = function () { + return this.prevToken; + }; + SavedTokens.prototype.close = function () { + this.currentToken = 0; + }; + SavedTokens.prototype.addToken = function (tok, scanner) { + this.tokens[this.currentToken++] = new TypeScript.SavedToken(tok, scanner.startPos, scanner.pos); + }; + SavedTokens.prototype.scan = function () { + this.startLine = this.line; + this.startPos = this.col; + if(this.currentTokenIndex == this.currentTokens.length) { + if(this.line < this.lineMap.length) { + this.line++; + this.col = 0; + this.currentTokenIndex = 0; + this.currentTokens = this.tokensByLine[this.line]; + } else { + return TypeScript.staticTokens[TypeScript.TokenID.EndOfFile]; + } + } + if(this.currentTokenIndex < this.currentTokens.length) { + this.prevToken = this.curSavedToken.tok; + this.prevSavedToken = this.curSavedToken; + this.curSavedToken = this.currentTokens[this.currentTokenIndex++]; + var curToken = this.curSavedToken.tok; + this.pos = this.curSavedToken.limChar; + this.col += (this.curSavedToken.limChar - this.curSavedToken.minChar); + this.startPos = this.curSavedToken.minChar; + this.prevLine = this.line; + return curToken; + } else { + return TypeScript.staticTokens[TypeScript.TokenID.EndOfFile]; + } + }; + SavedTokens.prototype.syncToTok = function (offset) { + this.line = getLineNumberFromPosition(this.lineMap, offset); + this.currentTokenIndex = 0; + var tmpCol = offset - this.lineMap[this.line]; + while((this.lexStateByLine[this.line] == LexState.InMultilineComment) && (this.line > 0)) { + this.line--; + tmpCol = 0; + } + var lenMin1 = this.lineMap.length - 1; + this.currentTokens = this.tokensByLine[this.line]; + while((this.currentTokens.length == 0) && (this.line < lenMin1)) { + this.line++; + this.currentTokens = this.tokensByLine[this.line]; + tmpCol = 0; + } + if(this.line <= lenMin1) { + while((this.currentTokenIndex < this.currentTokens.length) && (tmpCol > this.currentTokens[this.currentTokenIndex].limChar)) { + this.currentTokenIndex++; + } + if(this.currentTokenIndex < this.currentTokens.length) { + this.col = this.currentTokens[this.currentTokenIndex].minChar; + return this.col + this.lineMap[this.line]; + } + } + return -1; + }; + SavedTokens.prototype.lastTokenLimChar = function () { + if(this.prevSavedToken !== null) { + return this.prevSavedToken.limChar; + } else { + return 0; + } + }; + SavedTokens.prototype.lastTokenHadNewline = function () { + return this.prevLine != this.startLine; + }; + SavedTokens.prototype.pushComment = function (comment) { + this.commentStack.push(comment); + }; + SavedTokens.prototype.getComments = function () { + var stack = this.commentStack; + this.commentStack = []; + return stack; + }; + SavedTokens.prototype.getCommentsForLine = function (line) { + var comments = null; + while((this.commentStack.length > 0) && (this.commentStack[0].line == line)) { + if(comments == null) { + comments = [ + this.commentStack.shift() + ]; + } else { + comments = comments.concat([ + this.commentStack.shift() + ]); + } + } + return comments; + }; + SavedTokens.prototype.resetComments = function () { + this.commentStack = []; + }; + SavedTokens.prototype.setSourceText = function (newSrc, textMode) { + }; + SavedTokens.prototype.setErrorHandler = function (reportError) { + }; + SavedTokens.prototype.getLookAheadToken = function () { + throw new Error("Invalid operation."); + }; + return SavedTokens; + })(); + TypeScript.SavedTokens = SavedTokens; + var Scanner = (function () { + function Scanner() { + this.prevLine = 1; + this.line = 1; + this.col = 0; + this.pos = 0; + this.startPos = 0; + this.len = 0; + this.lineMap = []; + this.ch = TypeScript.LexEOF; + this.lexState = LexState.Start; + this.mode = LexMode.File; + this.scanComments = true; + this.interveningWhitespace = false; + this.interveningWhitespacePos = 0; + this.leftCurlyCount = 0; + this.rightCurlyCount = 0; + this.commentStack = new Array(); + this.saveScan = null; + this.seenUnicodeChar = false; + this.seenUnicodeCharInComment = false; + this.prevTok = TypeScript.staticTokens[TypeScript.TokenID.EndOfFile]; + this.startCol = this.col; + this.startLine = this.line; + this.lineMap[1] = 0; + if(!TypeScript.LexKeywordTable) { + LexInitialize(); + } + } + Scanner.prototype.previousToken = function () { + return this.prevTok; + }; + Scanner.prototype.setSourceText = function (newSrc, textMode) { + this.mode = textMode; + this.scanComments = (this.mode === LexMode.Line); + this.pos = 0; + this.interveningWhitespacePos = 0; + this.startPos = 0; + this.line = 1; + this.col = 0; + this.startCol = this.col; + this.startLine = this.line; + this.len = 0; + this.src = newSrc.getText(0, newSrc.getLength()); + this.len = this.src.length; + this.lineMap = []; + this.lineMap[1] = 0; + this.commentStack = []; + this.leftCurlyCount = 0; + this.rightCurlyCount = 0; + this.seenUnicodeChar = false; + this.seenUnicodeCharInComment = false; + }; + Scanner.prototype.setErrorHandler = function (reportError) { + this.reportError = reportError; + }; + Scanner.prototype.setSaveScan = function (savedTokens) { + this.saveScan = savedTokens; + }; + Scanner.prototype.setText = function (newSrc, textMode) { + this.setSourceText(new StringSourceText(newSrc), textMode); + }; + Scanner.prototype.setScanComments = function (value) { + this.scanComments = value; + }; + Scanner.prototype.getLexState = function () { + return this.lexState; + }; + Scanner.prototype.tokenStart = function () { + this.startPos = this.pos; + this.startLine = this.line; + this.startCol = this.col; + this.interveningWhitespace = false; + }; + Scanner.prototype.peekChar = function () { + if(this.pos < this.len) { + return this.src.charCodeAt(this.pos); + } else { + return TypeScript.LexEOF; + } + }; + Scanner.prototype.peekCharAt = function (index) { + if(index < this.len) { + return this.src.charCodeAt(index); + } else { + return TypeScript.LexEOF; + } + }; + Scanner.prototype.IsHexDigit = function (c) { + return ((c >= TypeScript.LexCode_0) && (c <= TypeScript.LexCode_9)) || ((c >= TypeScript.LexCode_A) && (c <= TypeScript.LexCode_F)) || ((c >= TypeScript.LexCode_a) && (c <= TypeScript.LexCode_f)); + }; + Scanner.prototype.IsOctalDigit = function (c) { + return ((c >= TypeScript.LexCode_0) && (c <= TypeScript.LexCode_7)) || ((c >= TypeScript.LexCode_a) && (c <= TypeScript.LexCode_f)); + }; + Scanner.prototype.scanHexDigits = function () { + var atLeastOneDigit = false; + for(; ; ) { + if(this.IsHexDigit(this.ch)) { + this.nextChar(); + atLeastOneDigit = true; + } else { + if(atLeastOneDigit) { + return new TypeScript.NumberLiteralToken(parseInt(this.src.substring(this.startPos, this.pos))); + } else { + return null; + } + } + } + }; + Scanner.prototype.scanOctalDigits = function () { + var atLeastOneDigit = false; + for(; ; ) { + if(this.IsOctalDigit(this.ch)) { + this.nextChar(); + atLeastOneDigit = true; + } else { + if(atLeastOneDigit) { + return new TypeScript.NumberLiteralToken(parseInt(this.src.substring(this.startPos, this.pos))); + } else { + return null; + } + } + } + }; + Scanner.prototype.scanDecimalNumber = function (state) { + var atLeastOneDigit = false; + var svPos = this.pos; + var svCol = this.col; + for(; ; ) { + if(LexIsDigit(this.ch)) { + atLeastOneDigit = true; + if(this.ch != TypeScript.LexCode_0 && state == NumberScanState.InEmptyFraction) { + state = NumberScanState.InFraction; + } + this.nextChar(); + } else { + if(this.ch == TypeScript.LexCodeDOT) { + if(state == NumberScanState.Start) { + this.nextChar(); + state = NumberScanState.InEmptyFraction; + } else { + if(atLeastOneDigit) { + return new TypeScript.NumberLiteralToken(parseFloat(this.src.substring(this.startPos, this.pos)), state == NumberScanState.InEmptyFraction); + } else { + this.pos = svPos; + this.col = svCol; + return null; + } + } + } else { + if((this.ch == TypeScript.LexCode_e) || (this.ch == TypeScript.LexCode_E)) { + if(state == NumberScanState.Start) { + if(atLeastOneDigit) { + atLeastOneDigit = false; + this.nextChar(); + state = NumberScanState.InExponent; + } else { + this.pos = svPos; + this.col = svCol; + return null; + } + } else { + if(state == NumberScanState.InFraction || state == NumberScanState.InEmptyFraction) { + this.nextChar(); + state = NumberScanState.InExponent; + atLeastOneDigit = false; + } else { + if(atLeastOneDigit) { + return new TypeScript.NumberLiteralToken(parseFloat(this.src.substring(this.startPos, this.pos))); + } else { + this.pos = svPos; + this.col = svCol; + return null; + } + } + } + } else { + if((this.ch == TypeScript.LexCodePLS) || (this.ch == TypeScript.LexCodeMIN)) { + if(state == NumberScanState.InExponent) { + if(!atLeastOneDigit) { + this.nextChar(); + } else { + this.pos = svPos; + this.col = svCol; + return null; + } + } else { + if(state == NumberScanState.InEmptyFraction || state == NumberScanState.InFraction) { + return new TypeScript.NumberLiteralToken(parseFloat(this.src.substring(this.startPos, this.pos)), state == NumberScanState.InEmptyFraction); + } else { + if(!atLeastOneDigit) { + this.pos = svPos; + this.col = svCol; + return null; + } else { + return new TypeScript.NumberLiteralToken(parseFloat(this.src.substring(this.startPos, this.pos))); + } + } + } + } else { + if(!atLeastOneDigit) { + this.pos = svPos; + this.col = svCol; + return null; + } else { + return new TypeScript.NumberLiteralToken(parseFloat(this.src.substring(this.startPos, this.pos)), state == NumberScanState.InEmptyFraction); + } + } + } + } + } + } + }; + Scanner.prototype.scanNumber = function () { + if(this.peekChar() == TypeScript.LexCode_0) { + switch(this.peekCharAt(this.pos + 1)) { + case TypeScript.LexCode_x: + case TypeScript.LexCode_X: { + this.advanceChar(2); + return this.scanHexDigits(); + + } + case TypeScript.LexCode_8: + case TypeScript.LexCode_9: + case TypeScript.LexCodeDOT: { + return this.scanDecimalNumber(NumberScanState.Start); + + } + default: { + return this.scanOctalDigits(); + + } + } + } else { + return this.scanDecimalNumber(NumberScanState.Start); + } + }; + Scanner.prototype.scanFraction = function () { + return this.scanDecimalNumber(NumberScanState.InFraction); + }; + Scanner.prototype.newLine = function () { + this.col = 0; + if(this.mode == LexMode.File) { + this.line++; + this.lineMap[this.line] = this.pos + 1; + } + }; + Scanner.prototype.finishMultilineComment = function () { + var ch2; + this.lexState = LexState.InMultilineComment; + while(this.pos < this.len) { + if(this.ch == TypeScript.LexCodeMUL) { + ch2 = this.peekCharAt(this.pos + 1); + if(ch2 == TypeScript.LexCodeSLH) { + this.advanceChar(2); + if(this.mode == LexMode.File) { + this.tokenStart(); + } + this.lexState = LexState.Start; + return true; + } + } else { + if(this.ch == TypeScript.LexCodeNWL) { + this.newLine(); + if(this.mode == LexMode.Line) { + this.nextChar(); + return false; + } + } else { + if(this.ch >= TypeScript.LexCodeASCIIChars) { + this.seenUnicodeCharInComment = true; + } + } + } + this.nextChar(); + } + return false; + }; + Scanner.prototype.pushComment = function (comment) { + this.commentStack.push(comment); + }; + Scanner.prototype.getComments = function () { + var stack = this.commentStack; + this.commentStack = []; + return stack; + }; + Scanner.prototype.getCommentsForLine = function (line) { + var comments = null; + while((this.commentStack.length > 0) && (this.commentStack[0].line == line)) { + if(comments == null) { + comments = [ + this.commentStack.shift() + ]; + } else { + comments = comments.concat([ + this.commentStack.shift() + ]); + } + } + return comments; + }; + Scanner.prototype.resetComments = function () { + this.commentStack = []; + }; + Scanner.prototype.endsLine = function (c) { + return (c == TypeScript.LexCodeNWL) || (c == TypeScript.LexCodeRET) || (c == TypeScript.LexCodeLS) || (c == TypeScript.LexCodePS); + }; + Scanner.prototype.finishSinglelineComment = function () { + while(this.pos < this.len) { + if(this.endsLine(this.ch)) { + break; + } + if(this.ch >= TypeScript.LexCodeASCIIChars) { + this.seenUnicodeCharInComment = true; + } + this.nextChar(); + } + if(this.mode == LexMode.File) { + this.tokenStart(); + } + }; + Scanner.prototype.tokenText = function () { + return this.src.substring(this.startPos, this.pos); + }; + Scanner.prototype.findClosingSLH = function () { + var index = this.pos; + var ch2 = this.src.charCodeAt(index); + var prevCh = 0; + var liveEsc = false; + while(!this.endsLine(ch2) && (index < this.len)) { + if((ch2 == TypeScript.LexCodeSLH) && (!liveEsc)) { + return index; + } + prevCh = ch2; + index++; + if(liveEsc) { + liveEsc = false; + } else { + liveEsc = (prevCh == TypeScript.LexCodeBSL); + } + ch2 = this.src.charCodeAt(index); + } + return -1; + }; + Scanner.prototype.speculateRegex = function () { + if(TypeScript.noRegexTable[this.prevTok.tokenId] != undefined) { + return null; + } + var svPos = this.pos; + var svCol = this.col; + var index = this.findClosingSLH(); + if(index > 0) { + var pattern = this.src.substring(svPos, index); + var flags = ""; + this.pos = index + 1; + this.ch = this.peekChar(); + var flagsStart = this.pos; + while((this.ch == TypeScript.LexCode_i) || (this.ch == TypeScript.LexCode_g) || (this.ch == TypeScript.LexCode_m)) { + this.nextChar(); + } + if((this.pos - flagsStart) > 3) { + return null; + } else { + flags = this.src.substring(flagsStart, this.pos); + } + var regex = undefined; + try { + regex = new RegExp(pattern, flags); + } catch (regexException) { + } + if(regex) { + this.col = svCol + (this.pos - this.startPos); + return new TypeScript.RegularExpressionLiteralToken(regex); + } + } + this.pos = svPos; + this.col = svCol; + return null; + }; + Scanner.prototype.lastTokenHadNewline = function () { + return this.prevLine != this.startLine; + }; + Scanner.prototype.lastTokenLimChar = function () { + return this.interveningWhitespace ? this.interveningWhitespacePos : this.startPos; + }; + Scanner.prototype.advanceChar = function (amt) { + this.pos += amt; + this.col += amt; + this.ch = this.peekChar(); + }; + Scanner.prototype.nextChar = function () { + this.pos++; + this.col++; + this.ch = this.peekChar(); + }; + Scanner.prototype.getLookAheadToken = function () { + var prevLine = this.prevLine; + var line = this.line; + var col = this.col; + var pos = this.pos; + var startPos = this.startPos; + var startCol = this.startCol; + var startLine = this.startLine; + var ch = this.ch; + var prevTok = this.prevTok; + var lexState = this.lexState; + var interveningWhitespace = this.interveningWhitespace; + var interveningWhitespacePos = this.interveningWhitespacePos; + var leftCurlyCount = this.leftCurlyCount; + var rightCurlyCount = this.rightCurlyCount; + var seenUnicodeChar = this.seenUnicodeChar; + var seenUnicodeCharInComment = this.seenUnicodeCharInComment; + var commentStackLength = this.commentStack.length; + var lookAheadToken = this.scan(); + this.prevLine = prevLine; + this.line = line; + this.col = col; + this.pos = pos; + this.startPos = startPos; + this.startCol = startCol; + this.startLine = startLine; + this.ch = ch; + this.prevTok = prevTok; + this.lexState = lexState; + this.interveningWhitespace = interveningWhitespace; + this.interveningWhitespacePos = interveningWhitespacePos; + this.leftCurlyCount = leftCurlyCount; + this.rightCurlyCount = rightCurlyCount; + this.seenUnicodeChar = seenUnicodeChar; + this.seenUnicodeCharInComment = seenUnicodeCharInComment; + this.commentStack.length = commentStackLength; + return lookAheadToken; + }; + Scanner.prototype.scanInLine = function () { + if((this.lexState == LexState.InMultilineComment) && (this.scanComments)) { + this.ch = this.peekChar(); + var commentLine = this.line; + this.finishMultilineComment(); + if(this.startPos < this.pos) { + var commentText = this.src.substring(this.startPos, this.pos); + this.tokenStart(); + return new TypeScript.CommentToken(TypeScript.TokenID.Comment, commentText, true, this.startPos, commentLine, true); + } else { + return TypeScript.staticTokens[TypeScript.TokenID.EndOfFile]; + } + } else { + if(this.lexState == LexState.InMultilineSingleQuoteString && this.pos < this.len) { + this.ch = TypeScript.LexCodeAPO; + this.lexState = LexState.Start; + return this.scanStringConstant(); + } else { + if(this.lexState == LexState.InMultilineDoubleQuoteString && this.pos < this.len) { + this.ch = TypeScript.LexCodeQUO; + this.lexState = LexState.Start; + return this.scanStringConstant(); + } + } + } + this.prevLine = this.line; + var prevTok = this.innerScan(); + if(prevTok.tokenId != TypeScript.TokenID.Whitespace) { + this.prevTok = prevTok; + } + return prevTok; + }; + Scanner.prototype.scan = function () { + this.prevLine = this.line; + this.prevTok = this.innerScan(); + if(this.saveScan) { + this.saveScan.addToken(this.prevTok, this); + } + return this.prevTok; + }; + Scanner.prototype.isValidUnicodeIdentifierChar = function () { + var valid = LexIsUnicodeIdStart(this.ch) || LexIsUnicodeDigit(this.ch); + this.seenUnicodeChar = this.seenUnicodeChar || valid; + return valid; + }; + Scanner.prototype.scanStringConstant = function () { + var endCode = this.ch; + this.nextChar(); + scanStringConstantLoop: +for(; ; ) { + switch(this.ch) { + case TypeScript.LexEOF: { + this.reportScannerError("Unterminated string constant"); + break scanStringConstantLoop; + + } + case TypeScript.LexCodeLS: + case TypeScript.LexCodePS: { + this.seenUnicodeChar = true; + + } + case TypeScript.LexCodeRET: + case TypeScript.LexCodeNWL: { + this.reportScannerError("Unterminated string constant"); + break scanStringConstantLoop; + + } + case TypeScript.LexCodeAPO: + case TypeScript.LexCodeQUO: { + if(this.ch == endCode) { + this.nextChar(); + break scanStringConstantLoop; + } + break; + + } + case TypeScript.LexCodeBSL: { + this.nextChar(); + switch(this.ch) { + case TypeScript.LexCodeAPO: + case TypeScript.LexCodeQUO: + case TypeScript.LexCodeBSL: { + this.nextChar(); + continue scanStringConstantLoop; + + } + case TypeScript.LexCodeLS: + case TypeScript.LexCodePS: { + this.seenUnicodeChar = true; + + } + case TypeScript.LexCodeRET: + case TypeScript.LexCodeNWL: { + if(this.ch == TypeScript.LexCodeRET && this.peekCharAt(this.pos + 1) == TypeScript.LexCodeNWL) { + this.nextChar(); + } + this.nextChar(); + this.newLine(); + if(this.mode == LexMode.Line) { + this.lexState = endCode == TypeScript.LexCodeAPO ? LexState.InMultilineSingleQuoteString : LexState.InMultilineDoubleQuoteString; + break scanStringConstantLoop; + } + break; + + } + case TypeScript.LexCode_x: + case TypeScript.LexCode_u: { + var expectedHexDigits = this.ch == TypeScript.LexCode_x ? 2 : 4; + this.nextChar(); + for(var i = 0; i < expectedHexDigits; i++) { + if(this.IsHexDigit(this.ch)) { + this.nextChar(); + } else { + this.reportScannerError("Invalid Unicode escape sequence"); + break; + } + } + continue scanStringConstantLoop; + + } + } + break; + + } + } + if(this.ch >= TypeScript.LexCodeASCIIChars) { + this.seenUnicodeChar = true; + } + this.nextChar(); + } + return new TypeScript.StringLiteralToken(this.src.substring(this.startPos, this.pos)); + }; + Scanner.prototype.scanIdentifier = function () { + var hasEscape = false; + var isFirstChar = (this.ch == TypeScript.LexCodeBSL); + var hasUnicode = false; + for(; ; ) { + while(lexIdStartTable[this.ch] || LexIsDigit(this.ch) || (this.ch >= TypeScript.LexCodeASCIIChars && this.isValidUnicodeIdentifierChar())) { + this.nextChar(); + } + if(this.ch == TypeScript.LexCodeBSL) { + this.nextChar(); + if(this.ch == TypeScript.LexCode_u) { + this.nextChar(); + for(var h = 0; h < 4; h++) { + if(this.IsHexDigit(this.ch)) { + this.nextChar(); + } else { + this.reportScannerError("Invalid Unicode escape sequence"); + return TypeScript.staticTokens[TypeScript.TokenID.Error]; + } + } + var hexChar = parseInt(this.src.substring(this.pos - 4, this.pos), 16); + if(lexIdStartTable[hexChar] || (!isFirstChar && LexIsDigit(hexChar)) || (hexChar >= TypeScript.LexCodeASCIIChars && (LexIsUnicodeIdStart(hexChar) || (!isFirstChar && LexIsUnicodeDigit(hexChar))))) { + } else { + this.reportScannerError("Invalid identifier character"); + return TypeScript.staticTokens[TypeScript.TokenID.Error]; + } + hasEscape = true; + isFirstChar = false; + continue; + } + this.reportScannerError("Invalid Unicode escape sequence"); + return TypeScript.staticTokens[TypeScript.TokenID.Error]; + } + break; + } + var id; + var text = this.src.substring(this.startPos, this.pos); + if(!hasEscape && (id = TypeScript.LexKeywordTable.lookup(text)) != null) { + return TypeScript.staticTokens[id]; + } else { + return new TypeScript.IdentifierToken(text, hasEscape); + } + }; + Scanner.prototype.innerScan = function () { + var rtok; + this.tokenStart(); + this.ch = this.peekChar(); + start: +while(this.pos < this.len) { + if(lexIdStartTable[this.ch] || this.ch == TypeScript.LexCodeBSL || (this.ch >= TypeScript.LexCodeASCIIChars && LexIsUnicodeIdStart(this.ch))) { + return this.scanIdentifier(); + } else { + if(this.ch == TypeScript.LexCodeSpace) { + if(!this.interveningWhitespace) { + this.interveningWhitespacePos = this.pos; + } + do { + this.nextChar(); + }while(this.ch == TypeScript.LexCodeSpace) + if(this.mode == LexMode.Line) { + var whitespaceText = this.src.substring(this.startPos, this.pos); + return new TypeScript.WhitespaceToken(TypeScript.TokenID.Whitespace, whitespaceText); + } else { + this.tokenStart(); + this.interveningWhitespace = true; + } + } else { + if(this.ch == TypeScript.LexCodeSLH) { + this.nextChar(); + var commentText; + if(this.ch == TypeScript.LexCodeSLH) { + if(!this.interveningWhitespace) { + this.interveningWhitespacePos = this.pos - 1; + } + var commentStartPos = this.pos - 1; + var commentStartLine = this.line; + this.finishSinglelineComment(); + var commentText = this.src.substring(commentStartPos, this.pos); + var commentToken = new TypeScript.CommentToken(TypeScript.TokenID.Comment, commentText, false, commentStartPos, commentStartLine, false); + if(this.scanComments) { + this.startPos = commentStartPos; + return commentToken; + } else { + this.pushComment(commentToken); + } + this.interveningWhitespace = true; + } else { + if(this.ch == TypeScript.LexCodeMUL) { + if(!this.interveningWhitespace) { + this.interveningWhitespacePos = this.pos - 1; + } + var commentStartPos = this.pos - 1; + var commentStartLine = this.line; + this.nextChar(); + this.finishMultilineComment(); + var commentText = this.src.substring(commentStartPos, this.pos); + var endsLine = this.endsLine(this.peekChar()); + var commentToken = new TypeScript.CommentToken(TypeScript.TokenID.Comment, commentText, true, commentStartPos, commentStartLine, endsLine); + if(this.scanComments) { + this.startPos = commentStartPos; + return commentToken; + } else { + this.pushComment(commentToken); + } + this.interveningWhitespace = true; + } else { + var regexTok = this.speculateRegex(); + if(regexTok) { + return regexTok; + } else { + if(this.peekCharAt(this.pos) == TypeScript.LexCodeEQ) { + this.nextChar(); + return TypeScript.staticTokens[TypeScript.TokenID.SlashEquals]; + } else { + return TypeScript.staticTokens[TypeScript.TokenID.Slash]; + } + } + } + } + } else { + if(this.ch == TypeScript.LexCodeSMC) { + this.nextChar(); + return TypeScript.staticTokens[TypeScript.TokenID.Semicolon]; + } else { + if((this.ch == TypeScript.LexCodeAPO) || (this.ch == TypeScript.LexCodeQUO)) { + return this.scanStringConstant(); + } else { + if(autoToken[this.ch]) { + var atok = autoToken[this.ch]; + if(atok.tokenId == TypeScript.TokenID.OpenBrace) { + this.leftCurlyCount++; + } else { + if(atok.tokenId == TypeScript.TokenID.CloseBrace) { + this.rightCurlyCount++; + } + } + this.nextChar(); + return atok; + } else { + if((this.ch >= TypeScript.LexCode_0) && (this.ch <= TypeScript.LexCode_9)) { + rtok = this.scanNumber(); + if(rtok) { + return rtok; + } else { + this.nextChar(); + return TypeScript.staticTokens[TypeScript.TokenID.Error]; + } + } else { + switch(this.ch) { + case TypeScript.LexCodeTAB: + case TypeScript.LexCodeVTAB: { + if(!this.interveningWhitespace) { + this.interveningWhitespacePos = this.pos; + } + if(this.mode == LexMode.Line) { + do { + this.nextChar(); + }while((this.ch == TypeScript.LexCodeSpace) || (this.ch == 9)) + var wsText = this.src.substring(this.startPos, this.pos); + return new TypeScript.WhitespaceToken(TypeScript.TokenID.Whitespace, wsText); + } else { + this.interveningWhitespace = true; + } + + } + case 255: + case 254: + case 239: + case 187: + case 191: + case TypeScript.LexCodeLS: + case TypeScript.LexCodePS: + case TypeScript.LexCodeNWL: + case TypeScript.LexCodeRET: { + if(this.ch == TypeScript.LexCodeNWL) { + this.newLine(); + if(this.mode == LexMode.Line) { + return TypeScript.staticTokens[TypeScript.TokenID.EndOfFile]; + } + } + if(!this.interveningWhitespace) { + this.interveningWhitespacePos = this.pos; + } + this.nextChar(); + this.tokenStart(); + this.interveningWhitespace = true; + break; + + } + case TypeScript.LexCodeDOT: { + if(this.peekCharAt(this.pos + 1) == TypeScript.LexCodeDOT) { + if(this.peekCharAt(this.pos + 2) == TypeScript.LexCodeDOT) { + this.advanceChar(3); + return TypeScript.staticTokens[TypeScript.TokenID.DotDotDot]; + } else { + this.nextChar(); + return TypeScript.staticTokens[TypeScript.TokenID.Dot]; + } + } else { + this.nextChar(); + rtok = this.scanFraction(); + if(rtok) { + return rtok; + } else { + return TypeScript.staticTokens[TypeScript.TokenID.Dot]; + } + } + } + + case TypeScript.LexCodeEQ: { + if(this.peekCharAt(this.pos + 1) == TypeScript.LexCodeEQ) { + if(this.peekCharAt(this.pos + 2) == TypeScript.LexCodeEQ) { + this.advanceChar(3); + return TypeScript.staticTokens[TypeScript.TokenID.EqualsEqualsEquals]; + } else { + this.advanceChar(2); + return TypeScript.staticTokens[TypeScript.TokenID.EqualsEquals]; + } + } else { + if(this.peekCharAt(this.pos + 1) == TypeScript.LexCodeGT) { + this.advanceChar(2); + return TypeScript.staticTokens[TypeScript.TokenID.EqualsGreaterThan]; + } else { + this.nextChar(); + return TypeScript.staticTokens[TypeScript.TokenID.Equals]; + } + } + + } + case TypeScript.LexCodeBNG: { + if(this.peekCharAt(this.pos + 1) == TypeScript.LexCodeEQ) { + if(this.peekCharAt(this.pos + 2) == TypeScript.LexCodeEQ) { + this.advanceChar(3); + return TypeScript.staticTokens[TypeScript.TokenID.ExclamationEqualsEquals]; + } else { + this.advanceChar(2); + return TypeScript.staticTokens[TypeScript.TokenID.ExclamationEquals]; + } + } else { + this.nextChar(); + return TypeScript.staticTokens[TypeScript.TokenID.Exclamation]; + } + + } + case TypeScript.LexCodePLS: { + if(this.peekCharAt(this.pos + 1) == TypeScript.LexCodeEQ) { + this.advanceChar(2); + return TypeScript.staticTokens[TypeScript.TokenID.PlusEquals]; + } else { + if(this.peekCharAt(this.pos + 1) == TypeScript.LexCodePLS) { + this.advanceChar(2); + return TypeScript.staticTokens[TypeScript.TokenID.PlusPlus]; + } else { + this.nextChar(); + return TypeScript.staticTokens[TypeScript.TokenID.Plus]; + } + } + + } + case TypeScript.LexCodeMIN: { + if(this.peekCharAt(this.pos + 1) == TypeScript.LexCodeEQ) { + this.advanceChar(2); + return TypeScript.staticTokens[TypeScript.TokenID.MinusEquals]; + } else { + if(this.peekCharAt(this.pos + 1) == TypeScript.LexCodeMIN) { + this.advanceChar(2); + return TypeScript.staticTokens[TypeScript.TokenID.MinusMinus]; + } else { + this.nextChar(); + return TypeScript.staticTokens[TypeScript.TokenID.Minus]; + } + } + + } + case TypeScript.LexCodeMUL: { + if(this.peekCharAt(this.pos + 1) == TypeScript.LexCodeEQ) { + this.advanceChar(2); + return TypeScript.staticTokens[TypeScript.TokenID.AsteriskEquals]; + } else { + this.nextChar(); + return TypeScript.staticTokens[TypeScript.TokenID.Asterisk]; + } + + } + case TypeScript.LexCodePCT: { + if(this.peekCharAt(this.pos + 1) == TypeScript.LexCodeEQ) { + this.advanceChar(2); + return TypeScript.staticTokens[TypeScript.TokenID.PercentEquals]; + } else { + this.nextChar(); + return TypeScript.staticTokens[TypeScript.TokenID.Percent]; + } + + } + case TypeScript.LexCodeLT: { + if(this.peekCharAt(this.pos + 1) == TypeScript.LexCodeLT) { + if(this.peekCharAt(this.pos + 2) == TypeScript.LexCodeEQ) { + this.advanceChar(3); + return TypeScript.staticTokens[TypeScript.TokenID.LessThanLessThanEquals]; + } else { + this.advanceChar(2); + return TypeScript.staticTokens[TypeScript.TokenID.LessThanLessThan]; + } + } else { + if(this.peekCharAt(this.pos + 1) == TypeScript.LexCodeEQ) { + this.advanceChar(2); + return TypeScript.staticTokens[TypeScript.TokenID.LessThanEquals]; + } else { + this.nextChar(); + return TypeScript.staticTokens[TypeScript.TokenID.LessThan]; + } + } + + } + case TypeScript.LexCodeGT: { + if(this.peekCharAt(this.pos + 1) == TypeScript.LexCodeGT) { + if(this.peekCharAt(this.pos + 2) == TypeScript.LexCodeEQ) { + this.advanceChar(3); + return TypeScript.staticTokens[TypeScript.TokenID.GreaterThanGreaterThanEquals]; + } else { + if(this.peekCharAt(this.pos + 2) == TypeScript.LexCodeGT) { + if(this.peekCharAt(this.pos + 3) == TypeScript.LexCodeEQ) { + this.advanceChar(4); + return TypeScript.staticTokens[TypeScript.TokenID.GreaterThanGreaterThanGreaterThanEquals]; + } else { + this.advanceChar(3); + return TypeScript.staticTokens[TypeScript.TokenID.GreaterThanGreaterThanGreaterThan]; + } + } else { + this.advanceChar(2); + return TypeScript.staticTokens[TypeScript.TokenID.GreaterThanGreaterThan]; + } + } + } else { + if(this.peekCharAt(this.pos + 1) == TypeScript.LexCodeEQ) { + this.advanceChar(2); + return TypeScript.staticTokens[TypeScript.TokenID.GreaterThanEquals]; + } else { + this.nextChar(); + return TypeScript.staticTokens[TypeScript.TokenID.GreaterThan]; + } + } + + } + case TypeScript.LexCodeXOR: { + if(this.peekCharAt(this.pos + 1) == TypeScript.LexCodeEQ) { + this.advanceChar(2); + return TypeScript.staticTokens[TypeScript.TokenID.CaretEquals]; + } else { + this.nextChar(); + return TypeScript.staticTokens[TypeScript.TokenID.Caret]; + } + + } + case TypeScript.LexCodeBAR: { + if(this.peekCharAt(this.pos + 1) == TypeScript.LexCodeEQ) { + this.advanceChar(2); + return TypeScript.staticTokens[TypeScript.TokenID.BarEquals]; + } else { + if(this.peekCharAt(this.pos + 1) == TypeScript.LexCodeBAR) { + this.advanceChar(2); + return TypeScript.staticTokens[TypeScript.TokenID.BarBar]; + } else { + this.nextChar(); + return TypeScript.staticTokens[TypeScript.TokenID.Bar]; + } + } + + } + case TypeScript.LexCodeAMP: { + if(this.peekCharAt(this.pos + 1) == TypeScript.LexCodeEQ) { + this.advanceChar(2); + return TypeScript.staticTokens[TypeScript.TokenID.AmpersandEquals]; + } else { + if(this.peekCharAt(this.pos + 1) == TypeScript.LexCodeAMP) { + this.advanceChar(2); + return TypeScript.staticTokens[TypeScript.TokenID.AmpersandAmpersand]; + } else { + this.nextChar(); + return TypeScript.staticTokens[TypeScript.TokenID.And]; + } + } + + } + default: { + this.reportScannerError("Invalid character"); + this.nextChar(); + continue start; + + } + } + } + } + } + } + } + } + } + } + return TypeScript.staticTokens[TypeScript.TokenID.EndOfFile]; + }; + Scanner.prototype.reportScannerError = function (message) { + if(this.reportError) { + this.reportError(message); + } + }; + return Scanner; + })(); + TypeScript.Scanner = Scanner; + function convertTokToIDName(tok) { + return convertTokToIDBase(tok, true, false); + } + TypeScript.convertTokToIDName = convertTokToIDName; + function convertTokToID(tok, strictMode) { + return convertTokToIDBase(tok, false, strictMode); + } + TypeScript.convertTokToID = convertTokToID; + function convertTokToIDBase(tok, identifierName, strictMode) { + if(tok.tokenId <= TypeScript.TokenID.LimKeyword) { + var tokInfo = TypeScript.lookupToken(tok.tokenId); + if(tokInfo != undefined) { + var resFlags = TypeScript.Reservation.Javascript | TypeScript.Reservation.JavascriptFuture; + if(strictMode) { + resFlags |= TypeScript.Reservation.JavascriptFutureStrict; + } + if(identifierName || !TypeScript.hasFlag(tokInfo.reservation, resFlags)) { + return true; + } + } else { + return false; + } + } else { + return false; + } + } + function getLineNumberFromPosition(lineMap, position) { + if(position === -1) { + return 0; + } + var min = 0; + var max = lineMap.length - 1; + while(min < max) { + var med = (min + max) >> 1; + if(position < lineMap[med]) { + max = med - 1; + } else { + if(position < lineMap[med + 1]) { + min = max = med; + } else { + min = med + 1; + } + } + } + return min; + } + TypeScript.getLineNumberFromPosition = getLineNumberFromPosition; + function getSourceLineColFromMap(lineCol, minChar, lineMap) { + var line = getLineNumberFromPosition(lineMap, minChar); + if(line > 0) { + lineCol.line = line; + lineCol.col = (minChar - lineMap[line]); + } + } + TypeScript.getSourceLineColFromMap = getSourceLineColFromMap; + function getLineColumnFromPosition(script, position) { + var result = { + line: -1, + col: -1 + }; + getSourceLineColFromMap(result, position, script.locationInfo.lineMap); + if(result.col >= 0) { + result.col++; + } + return result; + } + TypeScript.getLineColumnFromPosition = getLineColumnFromPosition; + function getPositionFromLineColumn(script, line, column) { + return script.locationInfo.lineMap[line] + (column - 1); + } + TypeScript.getPositionFromLineColumn = getPositionFromLineColumn; + function isPrimitiveTypeToken(token) { + switch(token.tokenId) { + case TypeScript.TokenID.Any: + case TypeScript.TokenID.Bool: + case TypeScript.TokenID.Number: + case TypeScript.TokenID.String: { + return true; + + } + } + return false; + } + TypeScript.isPrimitiveTypeToken = isPrimitiveTypeToken; + function isModifier(token) { + switch(token.tokenId) { + case TypeScript.TokenID.Public: + case TypeScript.TokenID.Private: + case TypeScript.TokenID.Static: { + return true; + + } + } + return false; + } + TypeScript.isModifier = isModifier; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + var AssignScopeContext = (function () { + function AssignScopeContext(scopeChain, typeFlow, modDeclChain) { + this.scopeChain = scopeChain; + this.typeFlow = typeFlow; + this.modDeclChain = modDeclChain; + } + return AssignScopeContext; + })(); + TypeScript.AssignScopeContext = AssignScopeContext; + function pushAssignScope(scope, context, type, classType, fnc) { + var chain = new TypeScript.ScopeChain(null, context.scopeChain, scope); + chain.thisType = type; + chain.classType = classType; + chain.fnc = fnc; + context.scopeChain = chain; + } + TypeScript.pushAssignScope = pushAssignScope; + function popAssignScope(context) { + context.scopeChain = context.scopeChain.previous; + } + TypeScript.popAssignScope = popAssignScope; + function instanceCompare(a, b) { + if(((a == null) || (!a.isInstanceProperty()))) { + return b; + } else { + return a; + } + } + TypeScript.instanceCompare = instanceCompare; + function instanceFilterStop(s) { + return s.isInstanceProperty(); + } + TypeScript.instanceFilterStop = instanceFilterStop; + var ScopeSearchFilter = (function () { + function ScopeSearchFilter(select, stop) { + this.select = select; + this.stop = stop; + this.result = null; + } + ScopeSearchFilter.prototype.reset = function () { + this.result = null; + }; + ScopeSearchFilter.prototype.update = function (b) { + this.result = this.select(this.result, b); + if(this.result) { + return this.stop(this.result); + } else { + return false; + } + }; + return ScopeSearchFilter; + })(); + TypeScript.ScopeSearchFilter = ScopeSearchFilter; + TypeScript.instanceFilter = new ScopeSearchFilter(instanceCompare, instanceFilterStop); + function preAssignModuleScopes(ast, context) { + var moduleDecl = ast; + var memberScope = null; + var aggScope = null; + if(moduleDecl.name && moduleDecl.mod) { + moduleDecl.name.sym = moduleDecl.mod.symbol; + } + var mod = moduleDecl.mod; + if(!mod) { + return; + } + memberScope = new TypeScript.SymbolTableScope(mod.members, mod.ambientMembers, mod.enclosedTypes, mod.ambientEnclosedTypes, mod.symbol); + mod.memberScope = memberScope; + context.modDeclChain.push(moduleDecl); + context.typeFlow.checker.currentModDecl = moduleDecl; + aggScope = new TypeScript.SymbolAggregateScope(mod.symbol); + aggScope.addParentScope(memberScope); + aggScope.addParentScope(context.scopeChain.scope); + pushAssignScope(aggScope, context, null, null, null); + mod.containedScope = aggScope; + if(mod.symbol) { + context.typeFlow.addLocalsFromScope(mod.containedScope, mod.symbol, moduleDecl.vars, mod.members.privateMembers, true); + } + } + TypeScript.preAssignModuleScopes = preAssignModuleScopes; + function preAssignClassScopes(ast, context) { + var classDecl = ast; + var memberScope = null; + var aggScope = null; + if(classDecl.name && classDecl.type) { + classDecl.name.sym = classDecl.type.symbol; + } + var classType = ast.type; + if(classType) { + var classSym = classType.symbol; + memberScope = context.typeFlow.checker.scopeOf(classType); + aggScope = new TypeScript.SymbolAggregateScope(classType.symbol); + aggScope.addParentScope(memberScope); + aggScope.addParentScope(context.scopeChain.scope); + classType.containedScope = aggScope; + classType.memberScope = memberScope; + var instanceType = classType.instanceType; + memberScope = context.typeFlow.checker.scopeOf(instanceType); + instanceType.memberScope = memberScope; + aggScope = new TypeScript.SymbolAggregateScope(instanceType.symbol); + aggScope.addParentScope(context.scopeChain.scope); + pushAssignScope(aggScope, context, instanceType, classType, null); + instanceType.containedScope = aggScope; + } else { + ast.type = context.typeFlow.anyType; + } + } + TypeScript.preAssignClassScopes = preAssignClassScopes; + function preAssignInterfaceScopes(ast, context) { + var interfaceDecl = ast; + var memberScope = null; + var aggScope = null; + if(interfaceDecl.name && interfaceDecl.type) { + interfaceDecl.name.sym = interfaceDecl.type.symbol; + } + var interfaceType = ast.type; + memberScope = context.typeFlow.checker.scopeOf(interfaceType); + interfaceType.memberScope = memberScope; + aggScope = new TypeScript.SymbolAggregateScope(interfaceType.symbol); + aggScope.addParentScope(memberScope); + aggScope.addParentScope(context.scopeChain.scope); + pushAssignScope(aggScope, context, null, null, null); + interfaceType.containedScope = aggScope; + } + TypeScript.preAssignInterfaceScopes = preAssignInterfaceScopes; + function preAssignWithScopes(ast, context) { + var withStmt = ast; + var withType = withStmt.type; + var members = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + var ambientMembers = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + var withType = new TypeScript.Type(); + var withSymbol = new TypeScript.WithSymbol(withStmt.minChar, context.typeFlow.checker.locationInfo.unitIndex, withType); + withType.members = members; + withType.ambientMembers = ambientMembers; + withType.symbol = withSymbol; + withType.setHasImplementation(); + withStmt.type = withType; + var withScope = new TypeScript.SymbolScopeBuilder(withType.members, withType.ambientMembers, null, null, context.scopeChain.scope, withType.symbol); + pushAssignScope(withScope, context, null, null, null); + withType.containedScope = withScope; + } + TypeScript.preAssignWithScopes = preAssignWithScopes; + function preAssignFuncDeclScopes(ast, context) { + var funcDecl = ast; + var container = null; + var localContainer = null; + if(funcDecl.type) { + localContainer = ast.type.symbol; + } + var isStatic = TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Static); + var isInnerStatic = isStatic && context.scopeChain.fnc != null; + var parentScope = isInnerStatic ? context.scopeChain.fnc.type.memberScope : context.scopeChain.scope; + if(context.scopeChain.thisType && (!funcDecl.isConstructor || TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.ClassMethod))) { + var instType = context.scopeChain.thisType; + if(!(instType.typeFlags & TypeScript.TypeFlags.IsClass) && !TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.ClassMethod)) { + if(!funcDecl.isMethod() || isStatic) { + parentScope = instType.constructorScope; + } else { + parentScope = instType.containedScope; + } + } else { + if(context.scopeChain.previous.scope.container && context.scopeChain.previous.scope.container.declAST && context.scopeChain.previous.scope.container.declAST.nodeType == TypeScript.NodeType.FuncDecl && (context.scopeChain.previous.scope.container.declAST).isConstructor) { + parentScope = instType.constructorScope; + } else { + if(isStatic && context.scopeChain.classType) { + parentScope = context.scopeChain.classType.containedScope; + } else { + parentScope = instType.containedScope; + } + } + } + container = instType.symbol; + } else { + if(funcDecl.isConstructor && context.scopeChain.thisType) { + container = context.scopeChain.thisType.symbol; + } + } + if(funcDecl.type == null || TypeScript.hasFlag(funcDecl.type.symbol.flags, TypeScript.SymbolFlags.TypeSetDuringScopeAssignment)) { + if(context.scopeChain.fnc && context.scopeChain.fnc.type) { + container = context.scopeChain.fnc.type.symbol; + } + var funcScope = null; + var outerFnc = context.scopeChain.fnc; + var nameText = funcDecl.name ? funcDecl.name.actualText : null; + var fgSym = null; + if(isStatic) { + if(outerFnc.type.members == null && container.getType().memberScope) { + outerFnc.type.members = ((container).type.memberScope).valueMembers; + } + funcScope = context.scopeChain.fnc.type.memberScope; + outerFnc.innerStaticFuncs[outerFnc.innerStaticFuncs.length] = funcDecl; + } else { + funcScope = context.scopeChain.scope; + } + if(nameText && nameText != "__missing" && !funcDecl.isAccessor()) { + if(isStatic) { + fgSym = funcScope.findLocal(nameText, false, false); + } else { + fgSym = funcScope.findLocal(nameText, false, false); + } + } + context.typeFlow.checker.createFunctionSignature(funcDecl, container, funcScope, fgSym, fgSym == null); + if(!funcDecl.accessorSymbol && (funcDecl.fncFlags & TypeScript.FncFlags.ClassMethod) && container && ((!fgSym || fgSym.declAST.nodeType != TypeScript.NodeType.FuncDecl) && funcDecl.isAccessor()) || (fgSym && fgSym.isAccessor())) { + funcDecl.accessorSymbol = context.typeFlow.checker.createAccessorSymbol(funcDecl, fgSym, container.getType(), (funcDecl.isMethod() && isStatic), true, funcScope, container); + } + funcDecl.type.symbol.flags |= TypeScript.SymbolFlags.TypeSetDuringScopeAssignment; + } + if(funcDecl.name && funcDecl.type) { + funcDecl.name.sym = funcDecl.type.symbol; + } + funcDecl.scopeType = funcDecl.type; + if(funcDecl.isOverload) { + return; + } + var funcTable = new TypeScript.StringHashTable(); + var funcMembers = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(funcTable, new TypeScript.StringHashTable())); + var ambientFuncTable = new TypeScript.StringHashTable(); + var ambientFuncMembers = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(ambientFuncTable, new TypeScript.StringHashTable())); + var funcStaticTable = new TypeScript.StringHashTable(); + var funcStaticMembers = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(funcStaticTable, new TypeScript.StringHashTable())); + var ambientFuncStaticTable = new TypeScript.StringHashTable(); + var ambientFuncStaticMembers = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(ambientFuncStaticTable, new TypeScript.StringHashTable())); + funcDecl.unitIndex = context.typeFlow.checker.locationInfo.unitIndex; + var locals = new TypeScript.SymbolScopeBuilder(funcMembers, ambientFuncMembers, null, null, parentScope, localContainer); + var statics = new TypeScript.SymbolScopeBuilder(funcStaticMembers, ambientFuncStaticMembers, null, null, parentScope, null); + if(funcDecl.isConstructor && context.scopeChain.thisType) { + context.scopeChain.thisType.constructorScope = locals; + } + funcDecl.symbols = funcTable; + if(!funcDecl.isSpecialFn()) { + var group = funcDecl.type; + var signature = funcDecl.signature; + if(!funcDecl.isConstructor) { + group.containedScope = locals; + locals.container = group.symbol; + group.memberScope = statics; + statics.container = group.symbol; + } + funcDecl.enclosingFnc = context.scopeChain.fnc; + group.enclosingType = isStatic ? context.scopeChain.classType : context.scopeChain.thisType; + var fgSym = ast.type.symbol; + if(((funcDecl.fncFlags & TypeScript.FncFlags.Signature) == TypeScript.FncFlags.None) && funcDecl.vars) { + context.typeFlow.addLocalsFromScope(locals, fgSym, funcDecl.vars, funcTable, false); + context.typeFlow.addLocalsFromScope(statics, fgSym, funcDecl.statics, funcStaticTable, false); + } + if(signature.parameters) { + var len = signature.parameters.length; + for(var i = 0; i < len; i++) { + var paramSym = signature.parameters[i]; + context.typeFlow.checker.resolveTypeLink(locals, paramSym.parameter.typeLink, true); + } + } + context.typeFlow.checker.resolveTypeLink(locals, signature.returnType, funcDecl.isSignature()); + } + if(!funcDecl.isConstructor || TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.ClassMethod)) { + var thisType = (funcDecl.isConstructor && TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.ClassMethod)) ? context.scopeChain.thisType : null; + pushAssignScope(locals, context, thisType, null, funcDecl); + } + if(funcDecl.name && TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.IsFunctionExpression)) { + if(funcDecl.name.sym) { + funcTable.add(funcDecl.name.actualText, funcDecl.name.sym); + } + } + } + TypeScript.preAssignFuncDeclScopes = preAssignFuncDeclScopes; + function preAssignCatchScopes(ast, context) { + var catchBlock = ast; + if(catchBlock.param) { + var catchTable = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + var catchLocals = new TypeScript.SymbolScopeBuilder(catchTable, null, null, null, context.scopeChain.scope, context.scopeChain.scope.container); + catchBlock.containedScope = catchLocals; + pushAssignScope(catchLocals, context, context.scopeChain.thisType, context.scopeChain.classType, context.scopeChain.fnc); + } + } + TypeScript.preAssignCatchScopes = preAssignCatchScopes; + function preAssignScopes(ast, parent, walker) { + var context = walker.state; + var go = true; + if(ast) { + if(ast.nodeType == TypeScript.NodeType.List) { + var list = ast; + list.enclosingScope = context.scopeChain.scope; + } else { + if(ast.nodeType == TypeScript.NodeType.ModuleDeclaration) { + preAssignModuleScopes(ast, context); + } else { + if(ast.nodeType == TypeScript.NodeType.ClassDeclaration) { + preAssignClassScopes(ast, context); + } else { + if(ast.nodeType == TypeScript.NodeType.InterfaceDeclaration) { + preAssignInterfaceScopes(ast, context); + } else { + if(ast.nodeType == TypeScript.NodeType.With) { + preAssignWithScopes(ast, context); + } else { + if(ast.nodeType == TypeScript.NodeType.FuncDecl) { + preAssignFuncDeclScopes(ast, context); + } else { + if(ast.nodeType == TypeScript.NodeType.Catch) { + preAssignCatchScopes(ast, context); + } else { + if(ast.nodeType == TypeScript.NodeType.TypeRef) { + go = false; + } + } + } + } + } + } + } + } + } + walker.options.goChildren = go; + return ast; + } + TypeScript.preAssignScopes = preAssignScopes; + function postAssignScopes(ast, parent, walker) { + var context = walker.state; + var go = true; + if(ast) { + if(ast.nodeType == TypeScript.NodeType.ModuleDeclaration) { + var prevModDecl = ast; + popAssignScope(context); + context.modDeclChain.pop(); + if(context.modDeclChain.length >= 1) { + context.typeFlow.checker.currentModDecl = context.modDeclChain[context.modDeclChain.length - 1]; + } + } else { + if(ast.nodeType == TypeScript.NodeType.ClassDeclaration) { + popAssignScope(context); + } else { + if(ast.nodeType == TypeScript.NodeType.InterfaceDeclaration) { + popAssignScope(context); + } else { + if(ast.nodeType == TypeScript.NodeType.With) { + popAssignScope(context); + } else { + if(ast.nodeType == TypeScript.NodeType.FuncDecl) { + var funcDecl = ast; + if((!funcDecl.isConstructor || TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.ClassMethod)) && !funcDecl.isOverload) { + popAssignScope(context); + } + } else { + if(ast.nodeType == TypeScript.NodeType.Catch) { + var catchBlock = ast; + if(catchBlock.param) { + popAssignScope(context); + } + } else { + go = false; + } + } + } + } + } + } + } + walker.options.goChildren = go; + return ast; + } + TypeScript.postAssignScopes = postAssignScopes; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + var TypeCollectionContext = (function () { + function TypeCollectionContext(scopeChain, checker) { + this.scopeChain = scopeChain; + this.checker = checker; + this.script = null; + } + return TypeCollectionContext; + })(); + TypeScript.TypeCollectionContext = TypeCollectionContext; + var MemberScopeContext = (function () { + function MemberScopeContext(flow, pos, matchFlag) { + this.flow = flow; + this.pos = pos; + this.matchFlag = matchFlag; + this.type = null; + this.ast = null; + this.options = new TypeScript.AstWalkOptions(); + } + return MemberScopeContext; + })(); + TypeScript.MemberScopeContext = MemberScopeContext; + var EnclosingScopeContext = (function () { + function EnclosingScopeContext(logger, script, text, pos, isMemberCompletion) { + this.logger = logger; + this.script = script; + this.text = text; + this.pos = pos; + this.isMemberCompletion = isMemberCompletion; + this.scopeGetter = null; + this.objectLiteralScopeGetter = null; + this.scopeStartAST = null; + this.skipNextFuncDeclForClass = false; + this.deepestModuleDecl = null; + this.enclosingClassDecl = null; + this.enclosingObjectLit = null; + this.publicsOnly = true; + this.useFullAst = false; + } + EnclosingScopeContext.prototype.getScope = function () { + return this.scopeGetter(); + }; + EnclosingScopeContext.prototype.getObjectLiteralScope = function () { + return this.objectLiteralScopeGetter(); + }; + EnclosingScopeContext.prototype.getScopeAST = function () { + return this.scopeStartAST; + }; + EnclosingScopeContext.prototype.getScopePosition = function () { + return this.scopeStartAST.minChar; + }; + EnclosingScopeContext.prototype.getScriptFragmentStartAST = function () { + return this.scopeStartAST; + }; + EnclosingScopeContext.prototype.getScriptFragmentPosition = function () { + return this.getScriptFragmentStartAST().minChar; + }; + EnclosingScopeContext.prototype.getScriptFragment = function () { + if(this.scriptFragment == null) { + var ast = this.getScriptFragmentStartAST(); + var minChar = ast.minChar; + var limChar = (this.isMemberCompletion ? this.pos : this.pos + 1); + this.scriptFragment = TypeScript.quickParse(this.logger, ast, this.text, minChar, limChar, null).Script; + } + return this.scriptFragment; + }; + return EnclosingScopeContext; + })(); + TypeScript.EnclosingScopeContext = EnclosingScopeContext; + function preFindMemberScope(ast, parent, walker) { + var memScope = walker.state; + if(TypeScript.hasFlag(ast.flags, memScope.matchFlag) && ((memScope.pos < 0) || (memScope.pos == ast.limChar))) { + memScope.ast = ast; + if((ast.type == null) && (memScope.pos >= 0)) { + memScope.flow.inScopeTypeCheck(ast, memScope.scope); + } + memScope.type = ast.type; + memScope.options.stopWalk(); + } + return ast; + } + TypeScript.preFindMemberScope = preFindMemberScope; + function pushTypeCollectionScope(container, valueMembers, ambientValueMembers, enclosedTypes, ambientEnclosedTypes, context, thisType, classType, moduleDecl) { + var builder = new TypeScript.SymbolScopeBuilder(valueMembers, ambientValueMembers, enclosedTypes, ambientEnclosedTypes, null, container); + var chain = new TypeScript.ScopeChain(container, context.scopeChain, builder); + chain.thisType = thisType; + chain.classType = classType; + chain.moduleDecl = moduleDecl; + context.scopeChain = chain; + } + TypeScript.pushTypeCollectionScope = pushTypeCollectionScope; + function popTypeCollectionScope(context) { + context.scopeChain = context.scopeChain.previous; + } + TypeScript.popTypeCollectionScope = popTypeCollectionScope; + function preFindEnclosingScope(ast, parent, walker) { + var context = walker.state; + var minChar = ast.minChar; + var limChar = ast.limChar; + if(ast.nodeType == TypeScript.NodeType.Script && context.pos > limChar) { + limChar = context.pos; + } + if((minChar <= context.pos) && (limChar >= context.pos)) { + switch(ast.nodeType) { + case TypeScript.NodeType.Script: { + var script = ast; + context.scopeGetter = function () { + return script.bod === null ? null : script.bod.enclosingScope; + }; + context.scopeStartAST = script; + break; + + } + case TypeScript.NodeType.ClassDeclaration: { + context.scopeGetter = function () { + return (ast.type === null || ast.type.instanceType.containedScope === null) ? null : ast.type.instanceType.containedScope; + }; + context.scopeStartAST = ast; + context.enclosingClassDecl = ast; + break; + + } + case TypeScript.NodeType.ObjectLit: { + var objectLit = ast; + if(objectLit.targetType) { + context.scopeGetter = function () { + return objectLit.targetType.containedScope; + }; + context.objectLiteralScopeGetter = function () { + return objectLit.targetType.memberScope; + }; + context.enclosingObjectLit = objectLit; + } + break; + + } + case TypeScript.NodeType.ModuleDeclaration: { + context.deepestModuleDecl = ast; + context.scopeGetter = function () { + return ast.type === null ? null : ast.type.containedScope; + }; + context.scopeStartAST = ast; + break; + + } + case TypeScript.NodeType.InterfaceDeclaration: { + context.scopeGetter = function () { + return (ast.type === null) ? null : ast.type.containedScope; + }; + context.scopeStartAST = ast; + break; + + } + case TypeScript.NodeType.FuncDecl: { + { + var funcDecl = ast; + if(context.skipNextFuncDeclForClass) { + context.skipNextFuncDeclForClass = false; + } else { + context.scopeGetter = function () { + if(funcDecl.isConstructor && TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.ClassMethod)) { + if(ast.type && ast.type.enclosingType) { + return ast.type.enclosingType.constructorScope; + } + } + if(funcDecl.scopeType) { + return funcDecl.scopeType.containedScope; + } + if(funcDecl.type) { + return funcDecl.type.containedScope; + } + return null; + }; + context.scopeStartAST = ast; + } + } + break; + + } + } + walker.options.goChildren = true; + } else { + walker.options.goChildren = false; + } + return ast; + } + TypeScript.preFindEnclosingScope = preFindEnclosingScope; + function findEnclosingScopeAt(logger, script, text, pos, isMemberCompletion) { + var context = new EnclosingScopeContext(logger, script, text, pos, isMemberCompletion); + TypeScript.getAstWalkerFactory().walk(script, preFindEnclosingScope, null, null, context); + if(context.scopeStartAST === null) { + return null; + } + return context; + } + TypeScript.findEnclosingScopeAt = findEnclosingScopeAt; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + var Signature = (function () { + function Signature() { + this.hasVariableArgList = false; + this.parameters = null; + this.declAST = null; + this.typeCheckStatus = TypeScript.TypeCheckStatus.NotStarted; + this.nonOptionalParameterCount = 0; + } + Signature.prototype.specializeType = function (pattern, replacement, checker) { + var result = new Signature(); + if(this.hasVariableArgList) { + result.hasVariableArgList = true; + } + result.returnType = new TypeScript.TypeLink(); + if(this.returnType.type) { + result.returnType.type = this.returnType.type.specializeType(pattern, replacement, checker, false); + } else { + result.returnType.type = checker.anyType; + } + if(this.parameters) { + result.parameters = []; + for(var i = 0, len = this.parameters.length; i < len; i++) { + var oldSym = this.parameters[i]; + var paramDef = new TypeScript.ValueLocation(); + var paramSym = new TypeScript.ParameterSymbol(oldSym.name, oldSym.location, checker.locationInfo.unitIndex, paramDef); + paramSym.declAST = this.declAST; + paramDef.symbol = paramSym; + paramDef.typeLink = new TypeScript.TypeLink(); + result.parameters[i] = paramSym; + var oldType = oldSym.getType(); + if(oldType) { + paramDef.typeLink.type = oldType.specializeType(pattern, replacement, checker, false); + paramSym.declAST.type = paramDef.typeLink.type; + } else { + paramDef.typeLink.type = checker.anyType; + } + } + } + result.nonOptionalParameterCount = this.nonOptionalParameterCount; + result.declAST = this.declAST; + return result; + }; + Signature.prototype.toString = function () { + return this.toStringHelper(false, false, null); + }; + Signature.prototype.toStringHelper = function (shortform, brackets, scope) { + return this.toStringHelperEx(shortform, brackets, scope).toString(); + }; + Signature.prototype.toStringHelperEx = function (shortform, brackets, scope, prefix) { + if (typeof prefix === "undefined") { prefix = ""; } + var builder = new TypeScript.MemberNameArray(); + if(brackets) { + builder.prefix = prefix + "["; + } else { + builder.prefix = prefix + "("; + } + var paramLen = this.parameters.length; + var len = this.hasVariableArgList ? paramLen - 1 : paramLen; + for(var i = 0; i < len; i++) { + builder.add(TypeScript.MemberName.create(this.parameters[i].name + (this.parameters[i].isOptional() ? "?" : "") + ": ")); + builder.add(this.parameters[i].getType().getScopedTypeNameEx(scope)); + if(i < paramLen - 1) { + builder.add(TypeScript.MemberName.create(", ")); + } + } + if(this.hasVariableArgList) { + builder.add(TypeScript.MemberName.create("..." + this.parameters[i].name + ": ")); + builder.add(this.parameters[i].getType().getScopedTypeNameEx(scope)); + } + if(shortform) { + if(brackets) { + builder.add(TypeScript.MemberName.create("] => ")); + } else { + builder.add(TypeScript.MemberName.create(") => ")); + } + } else { + if(brackets) { + builder.add(TypeScript.MemberName.create("]: ")); + } else { + builder.add(TypeScript.MemberName.create("): ")); + } + } + if(this.returnType.type) { + builder.add(this.returnType.type.getScopedTypeNameEx(scope)); + } else { + builder.add(TypeScript.MemberName.create("any")); + } + return builder; + }; + return Signature; + })(); + TypeScript.Signature = Signature; + var SignatureGroup = (function () { + function SignatureGroup() { + this.signatures = []; + this.hasImplementation = true; + this.definitionSignature = null; + this.hasBeenTypechecked = false; + this.flags = TypeScript.SignatureFlags.None; + } + SignatureGroup.prototype.addSignature = function (signature) { + if(this.signatures == null) { + this.signatures = new Array(); + } + this.signatures[this.signatures.length] = signature; + if(signature.declAST && !signature.declAST.isOverload && !signature.declAST.isSignature() && !TypeScript.hasFlag(signature.declAST.fncFlags, TypeScript.FncFlags.Ambient) && TypeScript.hasFlag(signature.declAST.fncFlags, TypeScript.FncFlags.Definition)) { + this.definitionSignature = signature; + } + }; + SignatureGroup.prototype.toString = function () { + return this.signatures.toString(); + }; + SignatureGroup.prototype.toStrings = function (prefix, shortform, scope) { + var result = []; + var len = this.signatures.length; + if(len > 1) { + shortform = false; + } + for(var i = 0; i < len; i++) { + if(len > 1 && this.signatures[i] == this.definitionSignature) { + continue; + } + if(this.flags & TypeScript.SignatureFlags.IsIndexer) { + result.push(this.signatures[i].toStringHelperEx(shortform, true, scope)); + } else { + result.push(this.signatures[i].toStringHelperEx(shortform, false, scope, prefix)); + } + } + return result; + }; + SignatureGroup.prototype.specializeType = function (pattern, replacement, checker) { + var result = new SignatureGroup(); + if(this.signatures) { + for(var i = 0, len = this.signatures.length; i < len; i++) { + result.addSignature(this.signatures[i].specializeType(pattern, replacement, checker)); + } + } + return result; + }; + SignatureGroup.prototype.verifySignatures = function (checker) { + var len = 0; + if(this.signatures && ((len = this.signatures.length) > 0)) { + for(var i = 0; i < len; i++) { + for(var j = i + 1; j < len; j++) { + if(this.signatures[i].declAST && this.signatures[j].declAST && (!TypeScript.hasFlag(this.signatures[i].declAST.fncFlags, TypeScript.FncFlags.Definition) && !TypeScript.hasFlag(this.signatures[j].declAST.fncFlags, TypeScript.FncFlags.Definition)) && checker.signaturesAreIdentical(this.signatures[i], this.signatures[j])) { + checker.errorReporter.simpleError(this.signatures[i].declAST, (this.signatures[i].declAST && this.signatures[i].declAST.name) ? "Signature for '" + this.signatures[i].declAST.name.actualText + "' is duplicated" : "Signature is duplicated"); + } + } + if(this.definitionSignature) { + if(!checker.signatureIsAssignableToTarget(this.definitionSignature, this.signatures[i])) { + checker.errorReporter.simpleError(this.signatures[i].declAST, "Overload signature is not compatible with function definition"); + } + } + } + } + }; + SignatureGroup.prototype.typeCheck = function (checker, ast, hasConstruct) { + if(this.hasBeenTypechecked) { + return; + } + this.hasBeenTypechecked = true; + var len = 0; + if(this.signatures && ((len = this.signatures.length) > 0)) { + for(var i = 0; i < len; i++) { + if(!hasConstruct && !this.definitionSignature && this.signatures[i].declAST && this.signatures[i].declAST.isOverload && !TypeScript.hasFlag(this.signatures[i].declAST.fncFlags, TypeScript.FncFlags.Ambient)) { + checker.errorReporter.simpleError(this.signatures[i].declAST, "Overload declaration lacks definition"); + } + if(this.signatures[i].declAST && this.signatures[i].declAST.isConstructor && this.signatures[i].declAST.classDecl && this.signatures[i].declAST.classDecl.type.symbol.typeCheckStatus == TypeScript.TypeCheckStatus.NotStarted) { + checker.typeFlow.typeCheck(this.signatures[i].declAST.classDecl); + } + checker.typeFlow.typeCheck(this.signatures[i].declAST); + } + this.verifySignatures(checker); + } + }; + return SignatureGroup; + })(); + TypeScript.SignatureGroup = SignatureGroup; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + (function (TypeCheckStatus) { + TypeCheckStatus._map = []; + TypeCheckStatus._map[0] = "NotStarted"; + TypeCheckStatus.NotStarted = 0; + TypeCheckStatus._map[1] = "Started"; + TypeCheckStatus.Started = 1; + TypeCheckStatus._map[2] = "Finished"; + TypeCheckStatus.Finished = 2; + })(TypeScript.TypeCheckStatus || (TypeScript.TypeCheckStatus = {})); + var TypeCheckStatus = TypeScript.TypeCheckStatus; + function aLexicallyEnclosesB(a, b) { + if(a.declAST && b && b.declAST && a.declAST.nodeType == TypeScript.NodeType.FuncDecl) { + return a.declAST.minChar <= b.declAST.minChar && a.declAST.limChar >= b.declAST.limChar; + } else { + return false; + } + } + TypeScript.aLexicallyEnclosesB = aLexicallyEnclosesB; + function aEnclosesB(a, b) { + while(a.container) { + if(a == b || aLexicallyEnclosesB(a.container, b)) { + return true; + } + a = a.container; + } + return false; + } + TypeScript.aEnclosesB = aEnclosesB; + var Symbol = (function () { + function Symbol(name, location, length, unitIndex) { + this.name = name; + this.location = location; + this.length = length; + this.unitIndex = unitIndex; + this.bound = false; + this.flags = TypeScript.SymbolFlags.None; + this.isObjectLitField = false; + this.declAST = null; + this.declModule = null; + this.passSymbolCreated = TypeScript.CompilerDiagnostics.analysisPass; + } + Symbol.prototype.instanceScope = function () { + return null; + }; + Symbol.prototype.isVariable = function () { + return false; + }; + Symbol.prototype.isMember = function () { + return false; + }; + Symbol.prototype.isInferenceSymbol = function () { + return false; + }; + Symbol.prototype.isWith = function () { + return false; + }; + Symbol.prototype.writeable = function () { + return false; + }; + Symbol.prototype.isType = function () { + return false; + }; + Symbol.prototype.getType = function () { + return null; + }; + Symbol.prototype.isAccessor = function () { + return false; + }; + Symbol.prototype.isInstanceProperty = function () { + return TypeScript.hasFlag(this.flags, TypeScript.SymbolFlags.Property) && (!TypeScript.hasFlag(this.flags, TypeScript.SymbolFlags.ModuleMember)); + }; + Symbol.prototype.getTypeName = function (scope) { + return this.getTypeNameEx(scope).toString(); + }; + Symbol.prototype.getTypeNameEx = function (scope) { + return TypeScript.MemberName.create(this.toString()); + }; + Symbol.prototype.getOptionalNameString = function () { + return TypeScript.hasFlag(this.flags, TypeScript.SymbolFlags.Optional) ? "?" : ""; + }; + Symbol.prototype.pathToRoot = function () { + var path = new Array(); + var node = this; + while(node && (node.name != TypeScript.globalId)) { + path[path.length] = node; + node = node.container; + } + return path; + }; + Symbol.prototype.findCommonAncestorPath = function (b) { + if(this.container == null) { + return new Array(); + } + var aPath = this.container.pathToRoot(); + var bPath; + if(b) { + bPath = b.pathToRoot(); + } else { + bPath = new Array(); + } + var commonNodeIndex = -1; + for(var i = 0, aLen = aPath.length; i < aLen; i++) { + var aNode = aPath[i]; + for(var j = 0, bLen = bPath.length; j < bLen; j++) { + var bNode = bPath[j]; + if(aNode == bNode) { + commonNodeIndex = i; + break; + } + } + if(commonNodeIndex >= 0) { + break; + } + } + if(commonNodeIndex >= 0) { + return aPath.slice(0, commonNodeIndex); + } else { + return aPath; + } + }; + Symbol.prototype.getPrettyName = function (scopeSymbol) { + return this.name; + }; + Symbol.prototype.scopeRelativeName = function (scope) { + if(scope == null) { + return this.getPrettyName(null) + this.getOptionalNameString(); + } + var lca = this.findCommonAncestorPath(scope.container); + var builder = ""; + for(var i = 0, len = lca.length; i < len; i++) { + var prettyName = lca[i].getPrettyName(i == len - 1 ? scope.container : lca[i + 1]); + builder = prettyName + "." + builder; + } + builder += this.getPrettyName(len == 0 ? scope.container : lca[0]) + this.getOptionalNameString(); + return builder; + }; + Symbol.prototype.fullName = function () { + var builder = this.name; + var ancestor = this.container; + while(ancestor && (ancestor.name != TypeScript.globalId)) { + builder = ancestor.name + "." + builder; + ancestor = ancestor.container; + } + return builder; + }; + Symbol.prototype.isExternallyVisible = function (checker) { + if(this == checker.gloMod) { + return true; + } + if(TypeScript.hasFlag(this.flags, TypeScript.SymbolFlags.Private)) { + return false; + } + if(!TypeScript.hasFlag(this.flags, TypeScript.SymbolFlags.Exported)) { + return this.container == checker.gloMod; + } + return this.container.isExternallyVisible(checker); + }; + Symbol.prototype.visible = function (scope, checker) { + if(checker == null || this.container == checker.gloMod) { + return true; + } + if(TypeScript.hasFlag(this.flags, TypeScript.SymbolFlags.ModuleMember)) { + if(TypeScript.hasFlag(this.flags, TypeScript.SymbolFlags.Exported)) { + if(!TypeScript.hasFlag(this.flags, TypeScript.SymbolFlags.Private)) { + return true; + } else { + return aEnclosesB(this, scope.container); + } + } else { + return checker && (checker.currentModDecl == this.declModule) || (checker.currentModDecl && checker.currentModDecl.mod && checker.currentModDecl.mod.symbol && this.declModule && this.declModule.mod && this.declModule.mod.symbol && aEnclosesB(checker.currentModDecl.mod.symbol, this.declModule.mod.symbol)); + } + } else { + var isFunction = this.declAST && this.declAST.nodeType == TypeScript.NodeType.FuncDecl; + var isMethod = isFunction && (this.declAST).isMethod(); + var isStaticFunction = isFunction && TypeScript.hasFlag((this.declAST).fncFlags, TypeScript.FncFlags.Static); + var isPrivateMethod = isMethod && TypeScript.hasFlag((this.declAST).fncFlags, TypeScript.FncFlags.Private); + var isAlias = this.isType() && (this).aliasLink; + if(this.isMember() || isMethod || isStaticFunction || isAlias) { + if(TypeScript.hasFlag(this.flags, TypeScript.SymbolFlags.Private) || isPrivateMethod) { + if(scope.container == null && this.container != scope.container) { + return false; + } else { + return this.container == null ? true : aEnclosesB(scope.container, this.container); + } + } else { + return true; + } + } else { + if(this.container) { + return aEnclosesB(this, scope.container); + } else { + return true; + } + } + } + }; + Symbol.prototype.addRef = function (identifier) { + if(!this.refs) { + this.refs = []; + } + this.refs[this.refs.length] = identifier; + }; + Symbol.prototype.toString = function () { + if(this.name) { + return this.name; + } else { + return "_anonymous"; + } + }; + Symbol.prototype.print = function (outfile) { + outfile.Write(this.toString()); + }; + Symbol.prototype.specializeType = function (pattern, replacement, checker) { + throw new Error("please implement in derived class"); + }; + Symbol.prototype.setType = function (type) { + throw new Error("please implement in derived class"); + }; + Symbol.prototype.kind = function () { + throw new Error("please implement in derived class"); + }; + Symbol.prototype.getInterfaceDeclFromSymbol = function (checker) { + if(this.declAST != null) { + if(this.declAST.nodeType == TypeScript.NodeType.InterfaceDeclaration) { + return this.declAST; + } else { + if(this.container != null && this.container != checker.gloMod && this.container.declAST.nodeType == TypeScript.NodeType.InterfaceDeclaration) { + return this.container.declAST; + } + } + } + return null; + }; + Symbol.prototype.getVarDeclFromSymbol = function () { + if(this.declAST != null && this.declAST.nodeType == TypeScript.NodeType.VarDecl) { + return this.declAST; + } + return null; + }; + Symbol.prototype.getDocComments = function () { + if(this.declAST != null) { + return this.declAST.getDocComments(); + } + return []; + }; + Symbol.prototype.isStatic = function () { + return TypeScript.hasFlag(this.flags, TypeScript.SymbolFlags.Static); + }; + return Symbol; + })(); + TypeScript.Symbol = Symbol; + var ValueLocation = (function () { + function ValueLocation() { } + return ValueLocation; + })(); + TypeScript.ValueLocation = ValueLocation; + var InferenceSymbol = (function (_super) { + __extends(InferenceSymbol, _super); + function InferenceSymbol(name, location, length, unitIndex) { + _super.call(this, name, location, length, unitIndex); + this.typeCheckStatus = TypeCheckStatus.NotStarted; + } + InferenceSymbol.prototype.isInferenceSymbol = function () { + return true; + }; + InferenceSymbol.prototype.transferVarFlags = function (varFlags) { + if(TypeScript.hasFlag(varFlags, TypeScript.VarFlags.Ambient)) { + this.flags |= TypeScript.SymbolFlags.Ambient; + } + if(TypeScript.hasFlag(varFlags, TypeScript.VarFlags.Constant)) { + this.flags |= TypeScript.SymbolFlags.Constant; + } + if(TypeScript.hasFlag(varFlags, TypeScript.VarFlags.Static)) { + this.flags |= TypeScript.SymbolFlags.Static; + } + if(TypeScript.hasFlag(varFlags, TypeScript.VarFlags.Property)) { + this.flags |= TypeScript.SymbolFlags.Property; + } + if(TypeScript.hasFlag(varFlags, TypeScript.VarFlags.Private)) { + this.flags |= TypeScript.SymbolFlags.Private; + } + if(TypeScript.hasFlag(varFlags, TypeScript.VarFlags.Public)) { + this.flags |= TypeScript.SymbolFlags.Public; + } + if(TypeScript.hasFlag(varFlags, TypeScript.VarFlags.Readonly)) { + this.flags |= TypeScript.SymbolFlags.Readonly; + } + if(TypeScript.hasFlag(varFlags, TypeScript.VarFlags.Exported)) { + this.flags |= TypeScript.SymbolFlags.Exported; + } + }; + return InferenceSymbol; + })(Symbol); + TypeScript.InferenceSymbol = InferenceSymbol; + var TypeSymbol = (function (_super) { + __extends(TypeSymbol, _super); + function TypeSymbol(locName, location, length, unitIndex, type) { + _super.call(this, locName, location, length, unitIndex); + this.type = type; + this.expansions = []; + this.expansionsDeclAST = []; + this.isDynamic = false; + this.isMethod = false; + this.aliasLink = null; + this.onlyReferencedAsTypeRef = TypeScript.optimizeModuleCodeGen; + this.prettyName = this.name; + } + TypeSymbol.prototype.addLocation = function (loc) { + if(this.additionalLocations == null) { + this.additionalLocations = []; + } + this.additionalLocations[this.additionalLocations.length] = loc; + }; + TypeSymbol.prototype.kind = function () { + return TypeScript.SymbolKind.Type; + }; + TypeSymbol.prototype.isType = function () { + return true; + }; + TypeSymbol.prototype.getType = function () { + return this.type; + }; + TypeSymbol.prototype.getTypeNameEx = function (scope) { + return this.type.getMemberTypeNameEx(this.name ? this.name + this.getOptionalNameString() : "", false, false, scope); + }; + TypeSymbol.prototype.instanceScope = function () { + if(!(this.type.typeFlags & TypeScript.TypeFlags.IsClass) && this.type.isClass()) { + return this.type.instanceType.constructorScope; + } else { + return this.type.containedScope; + } + }; + TypeSymbol.prototype.toString = function () { + var result = this.type.getTypeName(); + if(this.name) { + result = this.name + ":" + result; + } + return result; + }; + TypeSymbol.prototype.isClass = function () { + return this.instanceType != null; + }; + TypeSymbol.prototype.isFunction = function () { + return this.declAST != null && this.declAST.nodeType == TypeScript.NodeType.FuncDecl; + }; + TypeSymbol.prototype.specializeType = function (pattern, replacement, checker) { + if(this.type == pattern) { + return replacement.symbol; + } else { + var replType = this.type.specializeType(pattern, replacement, checker, false); + if(replType != this.type) { + var result = new TypeSymbol(this.name, -1, 0, -1, replType); + return result; + } else { + return this; + } + } + }; + TypeSymbol.prototype.getPrettyName = function (scopeSymbol) { + if(!!scopeSymbol && TypeScript.isQuoted(this.prettyName) && this.type.isModuleType()) { + var symbolPath = scopeSymbol.pathToRoot(); + var prettyName = this.getPrettyNameOfDynamicModule(symbolPath); + if(prettyName != null) { + return prettyName.name; + } + } + return this.prettyName; + }; + TypeSymbol.prototype.getPrettyNameOfDynamicModule = function (scopeSymbolPath) { + var scopeSymbolPathLength = scopeSymbolPath.length; + var externalSymbol = null; + if(scopeSymbolPath.length > 0 && scopeSymbolPath[scopeSymbolPathLength - 1].getType().isModuleType() && (scopeSymbolPath[scopeSymbolPathLength - 1]).isDynamic) { + if(scopeSymbolPathLength > 1 && scopeSymbolPath[scopeSymbolPathLength - 2].getType().isModuleType() && (scopeSymbolPath[scopeSymbolPathLength - 2]).isDynamic) { + var moduleType = scopeSymbolPath[scopeSymbolPathLength - 2].getType(); + externalSymbol = moduleType.findDynamicModuleName(this.type); + } + if(externalSymbol == null) { + var moduleType = scopeSymbolPath[scopeSymbolPathLength - 1].getType(); + externalSymbol = moduleType.findDynamicModuleName(this.type); + } + } + return externalSymbol; + }; + TypeSymbol.prototype.getDocComments = function () { + var comments = []; + if(this.declAST != null) { + comments = comments.concat(this.declAST.getDocComments()); + } + for(var i = 0; i < this.expansionsDeclAST.length; i++) { + comments = comments.concat(this.expansionsDeclAST[i].getDocComments()); + } + return comments; + }; + return TypeSymbol; + })(InferenceSymbol); + TypeScript.TypeSymbol = TypeSymbol; + var WithSymbol = (function (_super) { + __extends(WithSymbol, _super); + function WithSymbol(location, unitIndex, withType) { + _super.call(this, "with", location, 4, unitIndex, withType); + } + WithSymbol.prototype.isWith = function () { + return true; + }; + return WithSymbol; + })(TypeSymbol); + TypeScript.WithSymbol = WithSymbol; + var FieldSymbol = (function (_super) { + __extends(FieldSymbol, _super); + function FieldSymbol(name, location, unitIndex, canWrite, field) { + _super.call(this, name, location, name.length, unitIndex); + this.canWrite = canWrite; + this.field = field; + this.getter = null; + this.setter = null; + this.hasBeenEmitted = false; + this.name = name; + this.location = location; + } + FieldSymbol.prototype.kind = function () { + return TypeScript.SymbolKind.Field; + }; + FieldSymbol.prototype.writeable = function () { + return this.isAccessor() ? this.setter != null : this.canWrite; + }; + FieldSymbol.prototype.getType = function () { + return this.field.typeLink.type; + }; + FieldSymbol.prototype.getTypeNameEx = function (scope) { + return TypeScript.MemberName.create(this.field.typeLink.type.getScopedTypeNameEx(scope), this.name + this.getOptionalNameString() + ": ", ""); + }; + FieldSymbol.prototype.isMember = function () { + return true; + }; + FieldSymbol.prototype.setType = function (type) { + this.field.typeLink.type = type; + }; + FieldSymbol.prototype.isAccessor = function () { + return this.getter != null || this.setter != null; + }; + FieldSymbol.prototype.isVariable = function () { + return true; + }; + FieldSymbol.prototype.toString = function () { + return this.getTypeNameEx(null).toString(); + }; + FieldSymbol.prototype.specializeType = function (pattern, replacement, checker) { + var rType = this.field.typeLink.type.specializeType(pattern, replacement, checker, false); + if(rType != this.field.typeLink.type) { + var fieldDef = new ValueLocation(); + var result = new FieldSymbol(this.name, 0, checker.locationInfo.unitIndex, this.canWrite, fieldDef); + result.flags = this.flags; + fieldDef.symbol = result; + fieldDef.typeLink = new TypeScript.TypeLink(); + result.setType(rType); + result.typeCheckStatus = TypeCheckStatus.Finished; + return result; + } else { + return this; + } + }; + FieldSymbol.prototype.getDocComments = function () { + if(this.getter != null || this.setter != null) { + var comments = []; + if(this.getter != null) { + comments = comments.concat(this.getter.getDocComments()); + } + if(this.setter != null) { + comments = comments.concat(this.setter.getDocComments()); + } + return comments; + } else { + if(this.declAST != null) { + return this.declAST.getDocComments(); + } + } + return []; + }; + return FieldSymbol; + })(InferenceSymbol); + TypeScript.FieldSymbol = FieldSymbol; + var ParameterSymbol = (function (_super) { + __extends(ParameterSymbol, _super); + function ParameterSymbol(name, location, unitIndex, parameter) { + _super.call(this, name, location, name.length, unitIndex); + this.parameter = parameter; + this.paramDocComment = null; + this.funcDecl = null; + this.argsOffset = (-1); + this.name = name; + this.location = location; + } + ParameterSymbol.prototype.kind = function () { + return TypeScript.SymbolKind.Parameter; + }; + ParameterSymbol.prototype.writeable = function () { + return true; + }; + ParameterSymbol.prototype.getType = function () { + return this.parameter.typeLink.type; + }; + ParameterSymbol.prototype.setType = function (type) { + this.parameter.typeLink.type = type; + }; + ParameterSymbol.prototype.isVariable = function () { + return true; + }; + ParameterSymbol.prototype.isOptional = function () { + if(this.parameter && this.parameter.symbol && this.parameter.symbol.declAST) { + return (this.parameter.symbol.declAST).isOptional; + } else { + return false; + } + }; + ParameterSymbol.prototype.getTypeNameEx = function (scope) { + return TypeScript.MemberName.create(this.getType().getScopedTypeNameEx(scope), this.name + (this.isOptional() ? "?" : "") + ": ", ""); + }; + ParameterSymbol.prototype.toString = function () { + return this.getTypeNameEx(null).toString(); + }; + ParameterSymbol.prototype.specializeType = function (pattern, replacement, checker) { + var rType = this.parameter.typeLink.type.specializeType(pattern, replacement, checker, false); + if(this.parameter.typeLink.type != rType) { + var paramDef = new ValueLocation(); + var result = new ParameterSymbol(this.name, 0, checker.locationInfo.unitIndex, paramDef); + paramDef.symbol = result; + result.setType(rType); + return result; + } else { + return this; + } + }; + ParameterSymbol.prototype.getParameterDocComments = function () { + if(!this.paramDocComment) { + var parameterComments = []; + if(this.funcDecl) { + var fncDocComments = this.funcDecl.getDocComments(); + var paramComment = TypeScript.Comment.getParameterDocCommentText(this.name, fncDocComments); + if(paramComment != "") { + parameterComments.push(paramComment); + } + } + var docComments = TypeScript.Comment.getDocCommentText(this.getDocComments()); + if(docComments != "") { + parameterComments.push(docComments); + } + this.paramDocComment = parameterComments.join("\n"); + } + return this.paramDocComment; + }; + return ParameterSymbol; + })(InferenceSymbol); + TypeScript.ParameterSymbol = ParameterSymbol; + var VariableSymbol = (function (_super) { + __extends(VariableSymbol, _super); + function VariableSymbol(name, location, unitIndex, variable) { + _super.call(this, name, location, name.length, unitIndex); + this.variable = variable; + } + VariableSymbol.prototype.kind = function () { + return TypeScript.SymbolKind.Variable; + }; + VariableSymbol.prototype.writeable = function () { + return true; + }; + VariableSymbol.prototype.getType = function () { + return this.variable.typeLink.type; + }; + VariableSymbol.prototype.getTypeNameEx = function (scope) { + return TypeScript.MemberName.create(this.getType().getScopedTypeNameEx(scope), this.name + ": ", ""); + }; + VariableSymbol.prototype.setType = function (type) { + this.variable.typeLink.type = type; + }; + VariableSymbol.prototype.isVariable = function () { + return true; + }; + return VariableSymbol; + })(InferenceSymbol); + TypeScript.VariableSymbol = VariableSymbol; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + var ScopedMembers = (function () { + function ScopedMembers(dualMembers) { + this.dualMembers = dualMembers; + this.allMembers = this.dualMembers; + this.publicMembers = this.dualMembers.primaryTable; + this.privateMembers = this.dualMembers.secondaryTable; + } + ScopedMembers.prototype.addPublicMember = function (key, data) { + return this.dualMembers.primaryTable.add(key, data); + }; + ScopedMembers.prototype.addPrivateMember = function (key, data) { + return this.dualMembers.secondaryTable.add(key, data); + }; + return ScopedMembers; + })(); + TypeScript.ScopedMembers = ScopedMembers; + (function (SymbolKind) { + SymbolKind._map = []; + SymbolKind._map[0] = "None"; + SymbolKind.None = 0; + SymbolKind._map[1] = "Type"; + SymbolKind.Type = 1; + SymbolKind._map[2] = "Field"; + SymbolKind.Field = 2; + SymbolKind._map[3] = "Parameter"; + SymbolKind.Parameter = 3; + SymbolKind._map[4] = "Variable"; + SymbolKind.Variable = 4; + })(TypeScript.SymbolKind || (TypeScript.SymbolKind = {})); + var SymbolKind = TypeScript.SymbolKind; + var SymbolScope = (function () { + function SymbolScope(container) { + this.container = container; + } + SymbolScope.prototype.printLabel = function () { + return "base"; + }; + SymbolScope.prototype.getAllSymbolNames = function (members) { + return [ + "please", + "implement", + "in", + "derived", + "classes" + ]; + }; + SymbolScope.prototype.getAllTypeSymbolNames = function (members) { + return [ + "please", + "implement", + "in", + "derived", + "classes" + ]; + }; + SymbolScope.prototype.getAllValueSymbolNames = function (members) { + return [ + "please", + "implement", + "in", + "derived", + "classes" + ]; + }; + SymbolScope.prototype.search = function (filter, name, publicOnly, typespace) { + return null; + }; + SymbolScope.prototype.findLocal = function (name, publicOnly, typespace) { + return null; + }; + SymbolScope.prototype.find = function (name, publicOnly, typespace) { + return null; + }; + SymbolScope.prototype.findImplementation = function (name, publicOnly, typespace) { + return null; + }; + SymbolScope.prototype.findAmbient = function (name, publicOnly, typespace) { + return null; + }; + SymbolScope.prototype.print = function (outfile) { + if(this.container) { + outfile.WriteLine(this.printLabel() + " scope with container: " + this.container.name + "..."); + } else { + outfile.WriteLine(this.printLabel() + " scope..."); + } + }; + SymbolScope.prototype.enter = function (container, ast, symbol, errorReporter, publicOnly, typespace, ambient) { + throw new Error("please implement in derived class"); + }; + SymbolScope.prototype.getTable = function () { + throw new Error("please implement in derived class"); + }; + return SymbolScope; + })(); + TypeScript.SymbolScope = SymbolScope; + function symbolCanBeUsed(sym, publicOnly) { + return publicOnly ? !(TypeScript.hasFlag(sym.flags, TypeScript.SymbolFlags.Private) || (sym.declAST && sym.declAST.nodeType == TypeScript.NodeType.FuncDecl && TypeScript.hasFlag((sym.declAST).fncFlags, TypeScript.FncFlags.Private))) : true; + } + var SymbolAggregateScope = (function (_super) { + __extends(SymbolAggregateScope, _super); + function SymbolAggregateScope(container) { + _super.call(this, container); + this.valueCache = null; + this.valueImplCache = null; + this.valueAmbientCache = null; + this.typeCache = null; + this.typeImplCache = null; + this.typeAmbientCache = null; + this.parents = null; + this.container = container; + } + SymbolAggregateScope.prototype.printLabel = function () { + return "agg"; + }; + SymbolAggregateScope.prototype.search = function (filter, name, publicOnly, typespace) { + if(this.parents) { + for(var i = 0; i < this.parents.length; i++) { + var sym = this.parents[i].search(filter, name, publicOnly, typespace); + if(sym) { + if(filter.update(sym)) { + return sym; + } + } + } + } + return filter.result; + }; + SymbolAggregateScope.prototype.getAllSymbolNames = function (members) { + var result = []; + if(this.parents) { + for(var i = 0; i < this.parents.length; i++) { + var parentResult = this.parents[i].getAllSymbolNames(members); + if(parentResult) { + result = result.concat(parentResult); + } + } + } + return result; + }; + SymbolAggregateScope.prototype.getAllTypeSymbolNames = function (members) { + var result = []; + if(this.parents) { + for(var i = 0; i < this.parents.length; i++) { + var parentResult = this.parents[i].getAllTypeSymbolNames(members); + if(parentResult) { + result = result.concat(parentResult); + } + } + } + return result; + }; + SymbolAggregateScope.prototype.getAllValueSymbolNames = function (members) { + var result = []; + if(this.parents) { + for(var i = 0; i < this.parents.length; i++) { + var parentResult = this.parents[i].getAllValueSymbolNames(members); + if(parentResult) { + result = result.concat(parentResult); + } + } + } + return result; + }; + SymbolAggregateScope.prototype.print = function (outfile) { + _super.prototype.print.call(this, outfile); + if(this.parents) { + for(var i = 0; i < this.parents.length; i++) { + this.parents[i].print(outfile); + } + } + }; + SymbolAggregateScope.prototype.findImplementation = function (name, publicOnly, typespace) { + var sym = null; + var i = 0; + var implCache = this.valueImplCache; + if(typespace) { + implCache = this.typeImplCache; + } + if(implCache && ((sym = implCache.lookup(name)) != null) && (publicOnly ? !(TypeScript.hasFlag(sym.flags, TypeScript.SymbolFlags.Private) || (sym.declAST && sym.declAST.nodeType == TypeScript.NodeType.FuncDecl && TypeScript.hasFlag((sym.declAST).fncFlags, TypeScript.FncFlags.Private))) : true)) { + return sym; + } + if(this.parents) { + for(i = 0; i < this.parents.length; i++) { + sym = this.parents[i].findImplementation(name, publicOnly, typespace); + if(sym) { + break; + } + } + } + if(implCache) { + if(typespace) { + this.typeImplCache = new TypeScript.StringHashTable(); + implCache = this.typeImplCache; + } else { + this.valueImplCache = new TypeScript.StringHashTable(); + implCache = this.valueImplCache; + } + } + implCache.add(name, sym); + return sym; + }; + SymbolAggregateScope.prototype.find = function (name, publicOnly, typespace) { + var sym = null; + var i = 0; + var cache = this.valueCache; + if(typespace) { + cache = this.typeCache; + } + if(cache && ((sym = cache.lookup(name)) != null) && (publicOnly ? !(TypeScript.hasFlag(sym.flags, TypeScript.SymbolFlags.Private) || (sym.declAST && sym.declAST.nodeType == TypeScript.NodeType.FuncDecl && TypeScript.hasFlag((sym.declAST).fncFlags, TypeScript.FncFlags.Private))) : true)) { + return sym; + } + if(this.parents) { + for(i = 0; i < this.parents.length; i++) { + sym = this.parents[i].find(name, publicOnly, typespace); + if(sym) { + break; + } + } + } + if(cache == null) { + if(typespace) { + this.typeCache = new TypeScript.StringHashTable(); + cache = this.typeCache; + } else { + this.valueCache = new TypeScript.StringHashTable(); + cache = this.valueCache; + } + } + cache.add(name, sym); + return sym; + }; + SymbolAggregateScope.prototype.findAmbient = function (name, publicOnly, typespace) { + var sym = null; + var i = 0; + var cache = this.valueAmbientCache; + if(typespace) { + cache = this.typeAmbientCache; + } + if(cache && ((sym = cache.lookup(name)) != null)) { + return sym; + } + if(this.parents) { + for(i = 0; i < this.parents.length; i++) { + sym = this.parents[i].findAmbient(name, publicOnly, typespace); + if(sym) { + break; + } + } + } + if(cache == null) { + if(typespace) { + this.typeAmbientCache = new TypeScript.StringHashTable(); + cache = this.typeAmbientCache; + } else { + this.valueAmbientCache = new TypeScript.StringHashTable(); + cache = this.valueAmbientCache; + } + } + cache.add(name, sym); + return sym; + }; + SymbolAggregateScope.prototype.addParentScope = function (parent) { + if(this.parents == null) { + this.parents = new Array(); + } + this.parents[this.parents.length] = parent; + }; + return SymbolAggregateScope; + })(SymbolScope); + TypeScript.SymbolAggregateScope = SymbolAggregateScope; + var SymbolTableScope = (function (_super) { + __extends(SymbolTableScope, _super); + function SymbolTableScope(valueMembers, ambientValueMembers, enclosedTypes, ambientEnclosedTypes, container) { + _super.call(this, container); + this.valueMembers = valueMembers; + this.ambientValueMembers = ambientValueMembers; + this.enclosedTypes = enclosedTypes; + this.ambientEnclosedTypes = ambientEnclosedTypes; + this.container = container; + } + SymbolTableScope.prototype.printLabel = function () { + return "table"; + }; + SymbolTableScope.prototype.getAllSymbolNames = function (members) { + var result = this.getAllTypeSymbolNames(members); + return result.concat(this.getAllValueSymbolNames(members)); + }; + SymbolTableScope.prototype.getAllTypeSymbolNames = function (members) { + var result = []; + if(this.ambientEnclosedTypes) { + result = result.concat(this.ambientEnclosedTypes.allMembers.getAllKeys()); + } + if(this.enclosedTypes) { + result = result.concat(this.enclosedTypes.allMembers.getAllKeys()); + } + return result; + }; + SymbolTableScope.prototype.getAllValueSymbolNames = function (members) { + var result = []; + if(this.ambientValueMembers) { + result = result.concat(this.ambientValueMembers.allMembers.getAllKeys()); + } + if(this.valueMembers) { + result = result.concat(this.valueMembers.allMembers.getAllKeys()); + } + return result; + }; + SymbolTableScope.prototype.search = function (filter, name, publicOnly, typespace) { + var sym = this.find(name, publicOnly, typespace); + filter.update(sym); + return filter.result; + }; + SymbolTableScope.prototype.find = function (name, publicOnly, typespace) { + var table = null; + var ambientTable = null; + if(typespace) { + table = (this.enclosedTypes == null) ? null : publicOnly ? this.enclosedTypes.publicMembers : this.enclosedTypes.allMembers; + ambientTable = (this.ambientEnclosedTypes == null) ? null : publicOnly ? this.ambientEnclosedTypes.publicMembers : this.ambientEnclosedTypes.allMembers; + } else { + table = (this.valueMembers == null) ? null : publicOnly ? this.valueMembers.publicMembers : this.valueMembers.allMembers; + ambientTable = (this.ambientValueMembers == null) ? null : publicOnly ? this.ambientValueMembers.publicMembers : this.ambientValueMembers.allMembers; + } + if(ambientTable) { + var s = ambientTable.lookup(name); + if(s) { + return s; + } + } + if(table) { + var s = table.lookup(name); + if(s) { + return s; + } + } + return null; + }; + SymbolTableScope.prototype.findAmbient = function (name, publicOnly, typespace) { + var ambientTable = (this.ambientValueMembers == null) ? null : publicOnly ? this.ambientValueMembers.publicMembers : this.ambientValueMembers.allMembers; + if(typespace) { + ambientTable = (this.ambientEnclosedTypes == null) ? null : publicOnly ? this.ambientEnclosedTypes.publicMembers : this.ambientEnclosedTypes.allMembers; + } + if(ambientTable) { + var s = ambientTable.lookup(name); + if(s) { + return s; + } + } + return null; + }; + SymbolTableScope.prototype.print = function (outfile) { + _super.prototype.print.call(this, outfile); + if(this.ambientValueMembers) { + this.ambientValueMembers.allMembers.map(function (key, sym, context) { + outfile.WriteLine(" " + key); + }, null); + } + if(this.valueMembers) { + this.valueMembers.allMembers.map(function (key, sym, context) { + outfile.WriteLine(" " + key); + }, null); + } + if(this.ambientEnclosedTypes) { + this.ambientEnclosedTypes.allMembers.map(function (key, sym, context) { + outfile.WriteLine(" " + key); + }, null); + } + if(this.enclosedTypes) { + this.enclosedTypes.allMembers.map(function (key, sym, context) { + outfile.WriteLine(" " + key); + }, null); + } + }; + SymbolTableScope.prototype.findImplementation = function (name, publicOnly, typespace) { + var sym = this.find(name, publicOnly, typespace); + if(sym) { + if(sym.kind() == SymbolKind.Type) { + var typeSym = sym; + if(!typeSym.type.hasImplementation()) { + sym = null; + } + } else { + if(sym.container) { + if(sym.container.kind() == SymbolKind.Type) { + var ctypeSym = sym.container; + if(!ctypeSym.type.hasImplementation()) { + sym = null; + } + } + } + } + } + return sym; + }; + SymbolTableScope.prototype.getTable = function () { + return this.valueMembers.publicMembers; + }; + return SymbolTableScope; + })(SymbolScope); + TypeScript.SymbolTableScope = SymbolTableScope; + var SymbolScopeBuilder = (function (_super) { + __extends(SymbolScopeBuilder, _super); + function SymbolScopeBuilder(valueMembers, ambientValueMembers, enclosedTypes, ambientEnclosedTypes, parent, container) { + _super.call(this, container); + this.valueMembers = valueMembers; + this.ambientValueMembers = ambientValueMembers; + this.enclosedTypes = enclosedTypes; + this.ambientEnclosedTypes = ambientEnclosedTypes; + this.parent = parent; + this.container = container; + } + SymbolScopeBuilder.prototype.printLabel = function () { + return "builder"; + }; + SymbolScopeBuilder.prototype.getAllSymbolNames = function (members) { + var result = this.getAllTypeSymbolNames(members); + return result.concat(this.getAllValueSymbolNames(members)); + }; + SymbolScopeBuilder.prototype.getAllTypeSymbolNames = function (members) { + var result = []; + if(this.ambientEnclosedTypes) { + result = result.concat(this.ambientEnclosedTypes.allMembers.getAllKeys()); + } + if(this.enclosedTypes) { + result = result.concat(this.enclosedTypes.allMembers.getAllKeys()); + } + if(!members && this.parent) { + var parentResult = this.parent.getAllTypeSymbolNames(members); + if(parentResult) { + result = result.concat(parentResult); + } + } + return result; + }; + SymbolScopeBuilder.prototype.getAllValueSymbolNames = function (members) { + var result = []; + if(this.ambientValueMembers) { + result = result.concat(this.ambientValueMembers.allMembers.getAllKeys()); + } + if(this.valueMembers) { + result = result.concat(this.valueMembers.allMembers.getAllKeys()); + } + if(!members && this.parent) { + var parentResult = this.parent.getAllValueSymbolNames(members); + if(parentResult) { + result = result.concat(parentResult); + } + } + return result; + }; + SymbolScopeBuilder.prototype.search = function (filter, name, publicOnly, typespace) { + var sym = null; + var table = (this.valueMembers == null) ? null : publicOnly ? this.valueMembers.publicMembers : this.valueMembers.allMembers; + var ambientTable = (this.ambientValueMembers == null) ? null : publicOnly ? this.ambientValueMembers.publicMembers : this.ambientValueMembers.allMembers; + if(typespace) { + table = (this.enclosedTypes == null) ? null : publicOnly ? this.enclosedTypes.publicMembers : this.enclosedTypes.allMembers; + ambientTable = (this.ambientEnclosedTypes == null) ? null : publicOnly ? this.ambientEnclosedTypes.publicMembers : this.ambientEnclosedTypes.allMembers; + } + if(ambientTable) { + if((sym = ambientTable.lookup(name)) != null) { + if(filter.update(sym)) { + return sym; + } + } + } + if(table) { + if((sym = table.lookup(name)) != null) { + if(filter.update(sym)) { + return sym; + } + } + } + if(this.parent) { + sym = this.parent.search(filter, name, publicOnly, typespace); + if(sym) { + if(filter.update(sym)) { + return sym; + } + } + } + return filter.result; + }; + SymbolScopeBuilder.prototype.print = function (outfile) { + _super.prototype.print.call(this, outfile); + if(this.ambientValueMembers) { + this.ambientValueMembers.allMembers.map(function (key, s, context) { + var sym = s; + outfile.WriteLine(" " + key); + }, null); + } + if(this.valueMembers) { + this.valueMembers.allMembers.map(function (key, s, context) { + var sym = s; + outfile.WriteLine(" " + key); + }, null); + } + if(this.ambientEnclosedTypes) { + this.ambientEnclosedTypes.allMembers.map(function (key, s, context) { + var sym = s; + outfile.WriteLine(" " + key); + }, null); + } + if(this.enclosedTypes) { + this.enclosedTypes.allMembers.map(function (key, s, context) { + var sym = s; + outfile.WriteLine(" " + key); + }, null); + } + if(this.parent) { + this.parent.print(outfile); + } + }; + SymbolScopeBuilder.prototype.find = function (name, publicOnly, typespace) { + var sym = null; + var table = (this.valueMembers == null) ? null : publicOnly ? this.valueMembers.publicMembers : this.valueMembers.allMembers; + var ambientTable = (this.ambientValueMembers == null) ? null : publicOnly ? this.ambientValueMembers.publicMembers : this.ambientValueMembers.allMembers; + if(typespace) { + table = (this.enclosedTypes == null) ? null : publicOnly ? this.enclosedTypes.publicMembers : this.enclosedTypes.allMembers; + ambientTable = (this.ambientEnclosedTypes == null) ? null : publicOnly ? this.ambientEnclosedTypes.publicMembers : this.ambientEnclosedTypes.allMembers; + } + if(ambientTable && ((sym = ambientTable.lookup(name)) != null)) { + return sym; + } + if(table && ((sym = table.lookup(name)) != null)) { + return sym; + } + if(this.parent) { + return this.parent.find(name, publicOnly, typespace); + } + return null; + }; + SymbolScopeBuilder.prototype.findAmbient = function (name, publicOnly, typespace) { + var sym = null; + var ambientTable = (this.ambientValueMembers == null) ? null : publicOnly ? this.ambientValueMembers.publicMembers : this.ambientValueMembers.allMembers; + if(typespace) { + ambientTable = (this.ambientEnclosedTypes == null) ? null : publicOnly ? this.ambientEnclosedTypes.publicMembers : this.ambientEnclosedTypes.allMembers; + } + if(ambientTable && ((sym = ambientTable.lookup(name)) != null)) { + return sym; + } + if(this.parent) { + return this.parent.findAmbient(name, publicOnly, typespace); + } + return null; + }; + SymbolScopeBuilder.prototype.findLocal = function (name, publicOnly, typespace) { + var sym = null; + var table = (this.valueMembers == null) ? null : publicOnly ? this.valueMembers.publicMembers : this.valueMembers.allMembers; + var ambientTable = (this.ambientValueMembers == null) ? null : publicOnly ? this.ambientValueMembers.publicMembers : this.ambientValueMembers.allMembers; + if(typespace) { + table = (this.enclosedTypes == null) ? null : publicOnly ? this.enclosedTypes.publicMembers : this.enclosedTypes.allMembers; + ambientTable = (this.ambientEnclosedTypes == null) ? null : publicOnly ? this.ambientEnclosedTypes.publicMembers : this.ambientEnclosedTypes.allMembers; + } + if(table) { + if((sym = table.lookup(name)) != null) { + if(sym) { + return sym; + } + } + } + if(ambientTable) { + if((sym = ambientTable.lookup(name)) != null) { + if(sym) { + return sym; + } + } + } + return null; + }; + SymbolScopeBuilder.prototype.enter = function (container, ast, symbol, errorReporter, insertAsPublic, typespace, ambient) { + var table = null; + if(ambient) { + if(typespace) { + table = (this.ambientEnclosedTypes == null) ? null : insertAsPublic ? this.ambientEnclosedTypes.publicMembers : this.ambientEnclosedTypes.privateMembers; + } else { + table = (this.ambientValueMembers == null) ? null : insertAsPublic ? this.ambientValueMembers.publicMembers : this.ambientValueMembers.privateMembers; + } + } else { + if(typespace) { + table = (this.enclosedTypes == null) ? null : insertAsPublic ? this.enclosedTypes.publicMembers : this.enclosedTypes.privateMembers; + } else { + table = (this.valueMembers == null) ? null : insertAsPublic ? this.valueMembers.publicMembers : this.valueMembers.privateMembers; + } + } + if(table) { + if(!table.add(symbol.name, symbol)) { + errorReporter.duplicateIdentifier(ast, symbol.name); + } + } else { + TypeScript.CompilerDiagnostics.Alert("YYYYY"); + } + symbol.container = container; + }; + SymbolScopeBuilder.prototype.getTable = function () { + return this.valueMembers.allMembers; + }; + return SymbolScopeBuilder; + })(SymbolScope); + TypeScript.SymbolScopeBuilder = SymbolScopeBuilder; + var FilteredSymbolScope = (function (_super) { + __extends(FilteredSymbolScope, _super); + function FilteredSymbolScope(scope, container, filter) { + _super.call(this, container); + this.scope = scope; + this.filter = filter; + } + FilteredSymbolScope.prototype.print = function (outfile) { + this.scope.print(outfile); + }; + FilteredSymbolScope.prototype.find = function (name, publicOnly, typespace) { + this.filter.reset(); + return this.scope.search(this.filter, name, publicOnly, typespace); + }; + FilteredSymbolScope.prototype.findLocal = function (name, publicOnly, typespace) { + return this.scope.findLocal(name, publicOnly, typespace); + }; + return FilteredSymbolScope; + })(SymbolScope); + TypeScript.FilteredSymbolScope = FilteredSymbolScope; + var FilteredSymbolScopeBuilder = (function (_super) { + __extends(FilteredSymbolScopeBuilder, _super); + function FilteredSymbolScopeBuilder(valueMembers, parent, container, filter) { + _super.call(this, valueMembers, null, null, null, parent, container); + this.filter = filter; + } + FilteredSymbolScopeBuilder.prototype.findLocal = function (name, publicOnly, typespace) { + var sym = _super.prototype.findLocal.call(this, name, publicOnly, typespace); + if(sym) { + if(!this.filter(sym)) { + return null; + } + } + return sym; + }; + FilteredSymbolScopeBuilder.prototype.search = function (filter, name, publicOnly, typespace) { + throw new Error("please implement"); + }; + FilteredSymbolScopeBuilder.prototype.find = function (name, publicOnly, typespace) { + var sym = _super.prototype.findLocal.call(this, name, publicOnly, typespace); + if(sym) { + if(!this.filter(sym)) { + return null; + } + } + return _super.prototype.find.call(this, name, publicOnly, typespace); + }; + return FilteredSymbolScopeBuilder; + })(SymbolScopeBuilder); + TypeScript.FilteredSymbolScopeBuilder = FilteredSymbolScopeBuilder; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + (function (TokenID) { + TokenID._map = []; + TokenID._map[0] = "Any"; + TokenID.Any = 0; + TokenID._map[1] = "Bool"; + TokenID.Bool = 1; + TokenID._map[2] = "Break"; + TokenID.Break = 2; + TokenID._map[3] = "Case"; + TokenID.Case = 3; + TokenID._map[4] = "Catch"; + TokenID.Catch = 4; + TokenID._map[5] = "Class"; + TokenID.Class = 5; + TokenID._map[6] = "Const"; + TokenID.Const = 6; + TokenID._map[7] = "Continue"; + TokenID.Continue = 7; + TokenID._map[8] = "Debugger"; + TokenID.Debugger = 8; + TokenID._map[9] = "Default"; + TokenID.Default = 9; + TokenID._map[10] = "Delete"; + TokenID.Delete = 10; + TokenID._map[11] = "Do"; + TokenID.Do = 11; + TokenID._map[12] = "Else"; + TokenID.Else = 12; + TokenID._map[13] = "Enum"; + TokenID.Enum = 13; + TokenID._map[14] = "Export"; + TokenID.Export = 14; + TokenID._map[15] = "Extends"; + TokenID.Extends = 15; + TokenID._map[16] = "Declare"; + TokenID.Declare = 16; + TokenID._map[17] = "False"; + TokenID.False = 17; + TokenID._map[18] = "Finally"; + TokenID.Finally = 18; + TokenID._map[19] = "For"; + TokenID.For = 19; + TokenID._map[20] = "Function"; + TokenID.Function = 20; + TokenID._map[21] = "Constructor"; + TokenID.Constructor = 21; + TokenID._map[22] = "Get"; + TokenID.Get = 22; + TokenID._map[23] = "If"; + TokenID.If = 23; + TokenID._map[24] = "Implements"; + TokenID.Implements = 24; + TokenID._map[25] = "Import"; + TokenID.Import = 25; + TokenID._map[26] = "In"; + TokenID.In = 26; + TokenID._map[27] = "InstanceOf"; + TokenID.InstanceOf = 27; + TokenID._map[28] = "Interface"; + TokenID.Interface = 28; + TokenID._map[29] = "Let"; + TokenID.Let = 29; + TokenID._map[30] = "Module"; + TokenID.Module = 30; + TokenID._map[31] = "New"; + TokenID.New = 31; + TokenID._map[32] = "Number"; + TokenID.Number = 32; + TokenID._map[33] = "Null"; + TokenID.Null = 33; + TokenID._map[34] = "Package"; + TokenID.Package = 34; + TokenID._map[35] = "Private"; + TokenID.Private = 35; + TokenID._map[36] = "Protected"; + TokenID.Protected = 36; + TokenID._map[37] = "Public"; + TokenID.Public = 37; + TokenID._map[38] = "Return"; + TokenID.Return = 38; + TokenID._map[39] = "Set"; + TokenID.Set = 39; + TokenID._map[40] = "Static"; + TokenID.Static = 40; + TokenID._map[41] = "String"; + TokenID.String = 41; + TokenID._map[42] = "Super"; + TokenID.Super = 42; + TokenID._map[43] = "Switch"; + TokenID.Switch = 43; + TokenID._map[44] = "This"; + TokenID.This = 44; + TokenID._map[45] = "Throw"; + TokenID.Throw = 45; + TokenID._map[46] = "True"; + TokenID.True = 46; + TokenID._map[47] = "Try"; + TokenID.Try = 47; + TokenID._map[48] = "TypeOf"; + TokenID.TypeOf = 48; + TokenID._map[49] = "Var"; + TokenID.Var = 49; + TokenID._map[50] = "Void"; + TokenID.Void = 50; + TokenID._map[51] = "With"; + TokenID.With = 51; + TokenID._map[52] = "While"; + TokenID.While = 52; + TokenID._map[53] = "Yield"; + TokenID.Yield = 53; + TokenID._map[54] = "Semicolon"; + TokenID.Semicolon = 54; + TokenID._map[55] = "OpenParen"; + TokenID.OpenParen = 55; + TokenID._map[56] = "CloseParen"; + TokenID.CloseParen = 56; + TokenID._map[57] = "OpenBracket"; + TokenID.OpenBracket = 57; + TokenID._map[58] = "CloseBracket"; + TokenID.CloseBracket = 58; + TokenID._map[59] = "OpenBrace"; + TokenID.OpenBrace = 59; + TokenID._map[60] = "CloseBrace"; + TokenID.CloseBrace = 60; + TokenID._map[61] = "Comma"; + TokenID.Comma = 61; + TokenID._map[62] = "Equals"; + TokenID.Equals = 62; + TokenID._map[63] = "PlusEquals"; + TokenID.PlusEquals = 63; + TokenID._map[64] = "MinusEquals"; + TokenID.MinusEquals = 64; + TokenID._map[65] = "AsteriskEquals"; + TokenID.AsteriskEquals = 65; + TokenID._map[66] = "SlashEquals"; + TokenID.SlashEquals = 66; + TokenID._map[67] = "PercentEquals"; + TokenID.PercentEquals = 67; + TokenID._map[68] = "AmpersandEquals"; + TokenID.AmpersandEquals = 68; + TokenID._map[69] = "CaretEquals"; + TokenID.CaretEquals = 69; + TokenID._map[70] = "BarEquals"; + TokenID.BarEquals = 70; + TokenID._map[71] = "LessThanLessThanEquals"; + TokenID.LessThanLessThanEquals = 71; + TokenID._map[72] = "GreaterThanGreaterThanEquals"; + TokenID.GreaterThanGreaterThanEquals = 72; + TokenID._map[73] = "GreaterThanGreaterThanGreaterThanEquals"; + TokenID.GreaterThanGreaterThanGreaterThanEquals = 73; + TokenID._map[74] = "Question"; + TokenID.Question = 74; + TokenID._map[75] = "Colon"; + TokenID.Colon = 75; + TokenID._map[76] = "BarBar"; + TokenID.BarBar = 76; + TokenID._map[77] = "AmpersandAmpersand"; + TokenID.AmpersandAmpersand = 77; + TokenID._map[78] = "Bar"; + TokenID.Bar = 78; + TokenID._map[79] = "Caret"; + TokenID.Caret = 79; + TokenID._map[80] = "And"; + TokenID.And = 80; + TokenID._map[81] = "EqualsEquals"; + TokenID.EqualsEquals = 81; + TokenID._map[82] = "ExclamationEquals"; + TokenID.ExclamationEquals = 82; + TokenID._map[83] = "EqualsEqualsEquals"; + TokenID.EqualsEqualsEquals = 83; + TokenID._map[84] = "ExclamationEqualsEquals"; + TokenID.ExclamationEqualsEquals = 84; + TokenID._map[85] = "LessThan"; + TokenID.LessThan = 85; + TokenID._map[86] = "LessThanEquals"; + TokenID.LessThanEquals = 86; + TokenID._map[87] = "GreaterThan"; + TokenID.GreaterThan = 87; + TokenID._map[88] = "GreaterThanEquals"; + TokenID.GreaterThanEquals = 88; + TokenID._map[89] = "LessThanLessThan"; + TokenID.LessThanLessThan = 89; + TokenID._map[90] = "GreaterThanGreaterThan"; + TokenID.GreaterThanGreaterThan = 90; + TokenID._map[91] = "GreaterThanGreaterThanGreaterThan"; + TokenID.GreaterThanGreaterThanGreaterThan = 91; + TokenID._map[92] = "Plus"; + TokenID.Plus = 92; + TokenID._map[93] = "Minus"; + TokenID.Minus = 93; + TokenID._map[94] = "Asterisk"; + TokenID.Asterisk = 94; + TokenID._map[95] = "Slash"; + TokenID.Slash = 95; + TokenID._map[96] = "Percent"; + TokenID.Percent = 96; + TokenID._map[97] = "Tilde"; + TokenID.Tilde = 97; + TokenID._map[98] = "Exclamation"; + TokenID.Exclamation = 98; + TokenID._map[99] = "PlusPlus"; + TokenID.PlusPlus = 99; + TokenID._map[100] = "MinusMinus"; + TokenID.MinusMinus = 100; + TokenID._map[101] = "Dot"; + TokenID.Dot = 101; + TokenID._map[102] = "DotDotDot"; + TokenID.DotDotDot = 102; + TokenID._map[103] = "Error"; + TokenID.Error = 103; + TokenID._map[104] = "EndOfFile"; + TokenID.EndOfFile = 104; + TokenID._map[105] = "EqualsGreaterThan"; + TokenID.EqualsGreaterThan = 105; + TokenID._map[106] = "Identifier"; + TokenID.Identifier = 106; + TokenID._map[107] = "StringLiteral"; + TokenID.StringLiteral = 107; + TokenID._map[108] = "RegularExpressionLiteral"; + TokenID.RegularExpressionLiteral = 108; + TokenID._map[109] = "NumberLiteral"; + TokenID.NumberLiteral = 109; + TokenID._map[110] = "Whitespace"; + TokenID.Whitespace = 110; + TokenID._map[111] = "Comment"; + TokenID.Comment = 111; + TokenID._map[112] = "Lim"; + TokenID.Lim = 112; + TokenID.LimFixed = TokenID.EqualsGreaterThan; + TokenID.LimKeyword = TokenID.Yield; + })(TypeScript.TokenID || (TypeScript.TokenID = {})); + var TokenID = TypeScript.TokenID; + TypeScript.tokenTable = new Array(); + TypeScript.nodeTypeTable = new Array(); + TypeScript.nodeTypeToTokTable = new Array(); + TypeScript.noRegexTable = new Array(); + TypeScript.noRegexTable[TokenID.Identifier] = true; + TypeScript.noRegexTable[TokenID.StringLiteral] = true; + TypeScript.noRegexTable[TokenID.NumberLiteral] = true; + TypeScript.noRegexTable[TokenID.RegularExpressionLiteral] = true; + TypeScript.noRegexTable[TokenID.This] = true; + TypeScript.noRegexTable[TokenID.PlusPlus] = true; + TypeScript.noRegexTable[TokenID.MinusMinus] = true; + TypeScript.noRegexTable[TokenID.CloseParen] = true; + TypeScript.noRegexTable[TokenID.CloseBracket] = true; + TypeScript.noRegexTable[TokenID.CloseBrace] = true; + TypeScript.noRegexTable[TokenID.True] = true; + TypeScript.noRegexTable[TokenID.False] = true; + (function (OperatorPrecedence) { + OperatorPrecedence._map = []; + OperatorPrecedence._map[0] = "None"; + OperatorPrecedence.None = 0; + OperatorPrecedence._map[1] = "Comma"; + OperatorPrecedence.Comma = 1; + OperatorPrecedence._map[2] = "Assignment"; + OperatorPrecedence.Assignment = 2; + OperatorPrecedence._map[3] = "Conditional"; + OperatorPrecedence.Conditional = 3; + OperatorPrecedence._map[4] = "LogicalOr"; + OperatorPrecedence.LogicalOr = 4; + OperatorPrecedence._map[5] = "LogicalAnd"; + OperatorPrecedence.LogicalAnd = 5; + OperatorPrecedence._map[6] = "BitwiseOr"; + OperatorPrecedence.BitwiseOr = 6; + OperatorPrecedence._map[7] = "BitwiseExclusiveOr"; + OperatorPrecedence.BitwiseExclusiveOr = 7; + OperatorPrecedence._map[8] = "BitwiseAnd"; + OperatorPrecedence.BitwiseAnd = 8; + OperatorPrecedence._map[9] = "Equality"; + OperatorPrecedence.Equality = 9; + OperatorPrecedence._map[10] = "Relational"; + OperatorPrecedence.Relational = 10; + OperatorPrecedence._map[11] = "Shift"; + OperatorPrecedence.Shift = 11; + OperatorPrecedence._map[12] = "Additive"; + OperatorPrecedence.Additive = 12; + OperatorPrecedence._map[13] = "Multiplicative"; + OperatorPrecedence.Multiplicative = 13; + OperatorPrecedence._map[14] = "Unary"; + OperatorPrecedence.Unary = 14; + OperatorPrecedence._map[15] = "Lim"; + OperatorPrecedence.Lim = 15; + })(TypeScript.OperatorPrecedence || (TypeScript.OperatorPrecedence = {})); + var OperatorPrecedence = TypeScript.OperatorPrecedence; + (function (Reservation) { + Reservation._map = []; + Reservation.None = 0; + Reservation.Javascript = 1; + Reservation.JavascriptFuture = 2; + Reservation.TypeScript = 4; + Reservation.JavascriptFutureStrict = 8; + Reservation.TypeScriptAndJS = Reservation.Javascript | Reservation.TypeScript; + Reservation.TypeScriptAndJSFuture = Reservation.JavascriptFuture | Reservation.TypeScript; + Reservation.TypeScriptAndJSFutureStrict = Reservation.JavascriptFutureStrict | Reservation.TypeScript; + })(TypeScript.Reservation || (TypeScript.Reservation = {})); + var Reservation = TypeScript.Reservation; + var TokenInfo = (function () { + function TokenInfo(tokenId, reservation, binopPrecedence, binopNodeType, unopPrecedence, unopNodeType, text, ers) { + this.tokenId = tokenId; + this.reservation = reservation; + this.binopPrecedence = binopPrecedence; + this.binopNodeType = binopNodeType; + this.unopPrecedence = unopPrecedence; + this.unopNodeType = unopNodeType; + this.text = text; + this.ers = ers; + } + return TokenInfo; + })(); + TypeScript.TokenInfo = TokenInfo; + function setTokenInfo(tokenId, reservation, binopPrecedence, binopNodeType, unopPrecedence, unopNodeType, text, ers) { + if(tokenId !== undefined) { + TypeScript.tokenTable[tokenId] = new TokenInfo(tokenId, reservation, binopPrecedence, binopNodeType, unopPrecedence, unopNodeType, text, ers); + if(binopNodeType != TypeScript.NodeType.None) { + TypeScript.nodeTypeTable[binopNodeType] = text; + TypeScript.nodeTypeToTokTable[binopNodeType] = tokenId; + } + if(unopNodeType != TypeScript.NodeType.None) { + TypeScript.nodeTypeTable[unopNodeType] = text; + } + } + } + setTokenInfo(TokenID.Any, Reservation.TypeScript, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "any", TypeScript.ErrorRecoverySet.PrimType); + setTokenInfo(TokenID.Bool, Reservation.TypeScript, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "bool", TypeScript.ErrorRecoverySet.PrimType); + setTokenInfo(TokenID.Break, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "break", TypeScript.ErrorRecoverySet.Stmt); + setTokenInfo(TokenID.Case, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "case", TypeScript.ErrorRecoverySet.SCase); + setTokenInfo(TokenID.Catch, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "catch", TypeScript.ErrorRecoverySet.Catch); + setTokenInfo(TokenID.Class, Reservation.TypeScriptAndJSFuture, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "class", TypeScript.ErrorRecoverySet.TypeScriptS); + setTokenInfo(TokenID.Const, Reservation.TypeScriptAndJSFuture, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "const", TypeScript.ErrorRecoverySet.Var); + setTokenInfo(TokenID.Continue, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "continue", TypeScript.ErrorRecoverySet.Stmt); + setTokenInfo(TokenID.Debugger, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.Debugger, "debugger", TypeScript.ErrorRecoverySet.Stmt); + setTokenInfo(TokenID.Default, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "default", TypeScript.ErrorRecoverySet.SCase); + setTokenInfo(TokenID.Delete, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.Unary, TypeScript.NodeType.Delete, "delete", TypeScript.ErrorRecoverySet.Prefix); + setTokenInfo(TokenID.Do, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "do", TypeScript.ErrorRecoverySet.Stmt); + setTokenInfo(TokenID.Else, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "else", TypeScript.ErrorRecoverySet.Else); + setTokenInfo(TokenID.Enum, Reservation.TypeScriptAndJSFuture, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "enum", TypeScript.ErrorRecoverySet.TypeScriptS); + setTokenInfo(TokenID.Export, Reservation.TypeScriptAndJSFuture, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "export", TypeScript.ErrorRecoverySet.TypeScriptS); + setTokenInfo(TokenID.Extends, Reservation.TypeScriptAndJSFuture, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "extends", TypeScript.ErrorRecoverySet.None); + setTokenInfo(TokenID.Declare, Reservation.TypeScript, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "declare", TypeScript.ErrorRecoverySet.Stmt); + setTokenInfo(TokenID.False, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "false", TypeScript.ErrorRecoverySet.RLit); + setTokenInfo(TokenID.Finally, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "finally", TypeScript.ErrorRecoverySet.Catch); + setTokenInfo(TokenID.For, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "for", TypeScript.ErrorRecoverySet.Stmt); + setTokenInfo(TokenID.Function, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "function", TypeScript.ErrorRecoverySet.Func); + setTokenInfo(TokenID.Constructor, Reservation.TypeScriptAndJSFutureStrict, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "constructor", TypeScript.ErrorRecoverySet.Func); + setTokenInfo(TokenID.Get, Reservation.TypeScript, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "get", TypeScript.ErrorRecoverySet.Func); + setTokenInfo(TokenID.Set, Reservation.TypeScript, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "set", TypeScript.ErrorRecoverySet.Func); + setTokenInfo(TokenID.If, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "if", TypeScript.ErrorRecoverySet.Stmt); + setTokenInfo(TokenID.Implements, Reservation.TypeScriptAndJSFutureStrict, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "implements", TypeScript.ErrorRecoverySet.None); + setTokenInfo(TokenID.Import, Reservation.TypeScriptAndJSFuture, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "import", TypeScript.ErrorRecoverySet.TypeScriptS); + setTokenInfo(TokenID.In, Reservation.TypeScriptAndJS, OperatorPrecedence.Relational, TypeScript.NodeType.In, OperatorPrecedence.None, TypeScript.NodeType.None, "in", TypeScript.ErrorRecoverySet.None); + setTokenInfo(TokenID.InstanceOf, Reservation.TypeScriptAndJS, OperatorPrecedence.Relational, TypeScript.NodeType.InstOf, OperatorPrecedence.None, TypeScript.NodeType.None, "instanceof", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.Interface, Reservation.TypeScriptAndJSFutureStrict, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "interface", TypeScript.ErrorRecoverySet.TypeScriptS); + setTokenInfo(TokenID.Let, Reservation.JavascriptFutureStrict, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "let", TypeScript.ErrorRecoverySet.None); + setTokenInfo(TokenID.Module, Reservation.TypeScript, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "module", TypeScript.ErrorRecoverySet.TypeScriptS); + setTokenInfo(TokenID.New, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "new", TypeScript.ErrorRecoverySet.PreOp); + setTokenInfo(TokenID.Number, Reservation.TypeScript, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "number", TypeScript.ErrorRecoverySet.PrimType); + setTokenInfo(TokenID.Null, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "null", TypeScript.ErrorRecoverySet.RLit); + setTokenInfo(TokenID.Package, Reservation.JavascriptFutureStrict, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "package", TypeScript.ErrorRecoverySet.None); + setTokenInfo(TokenID.Private, Reservation.TypeScriptAndJSFutureStrict, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "private", TypeScript.ErrorRecoverySet.TypeScriptS); + setTokenInfo(TokenID.Protected, Reservation.JavascriptFutureStrict, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "protected", TypeScript.ErrorRecoverySet.None); + setTokenInfo(TokenID.Public, Reservation.TypeScriptAndJSFutureStrict, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "public", TypeScript.ErrorRecoverySet.TypeScriptS); + setTokenInfo(TokenID.Return, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "return", TypeScript.ErrorRecoverySet.Stmt); + setTokenInfo(TokenID.Static, Reservation.TypeScriptAndJSFutureStrict, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "static", TypeScript.ErrorRecoverySet.None); + setTokenInfo(TokenID.String, Reservation.TypeScript, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "string", TypeScript.ErrorRecoverySet.PrimType); + setTokenInfo(TokenID.Super, Reservation.TypeScriptAndJSFuture, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "super", TypeScript.ErrorRecoverySet.RLit); + setTokenInfo(TokenID.Switch, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "switch", TypeScript.ErrorRecoverySet.Stmt); + setTokenInfo(TokenID.This, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "this", TypeScript.ErrorRecoverySet.RLit); + setTokenInfo(TokenID.Throw, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "throw", TypeScript.ErrorRecoverySet.Stmt); + setTokenInfo(TokenID.True, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "true", TypeScript.ErrorRecoverySet.RLit); + setTokenInfo(TokenID.Try, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "try", TypeScript.ErrorRecoverySet.Stmt); + setTokenInfo(TokenID.TypeOf, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.Unary, TypeScript.NodeType.Typeof, "typeof", TypeScript.ErrorRecoverySet.Prefix); + setTokenInfo(TokenID.Var, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "var", TypeScript.ErrorRecoverySet.Var); + setTokenInfo(TokenID.Void, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.Unary, TypeScript.NodeType.Void, "void", TypeScript.ErrorRecoverySet.Prefix); + setTokenInfo(TokenID.With, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.With, "with", TypeScript.ErrorRecoverySet.Stmt); + setTokenInfo(TokenID.While, Reservation.TypeScriptAndJS, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "while", TypeScript.ErrorRecoverySet.While); + setTokenInfo(TokenID.Yield, Reservation.JavascriptFutureStrict, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "yield", TypeScript.ErrorRecoverySet.None); + setTokenInfo(TokenID.Identifier, Reservation.None, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "identifier", TypeScript.ErrorRecoverySet.ID); + setTokenInfo(TokenID.NumberLiteral, Reservation.None, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "numberLiteral", TypeScript.ErrorRecoverySet.Literal); + setTokenInfo(TokenID.RegularExpressionLiteral, Reservation.None, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "regex", TypeScript.ErrorRecoverySet.RegExp); + setTokenInfo(TokenID.StringLiteral, Reservation.None, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "qstring", TypeScript.ErrorRecoverySet.Literal); + setTokenInfo(TokenID.Semicolon, Reservation.None, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, ";", TypeScript.ErrorRecoverySet.SColon); + setTokenInfo(TokenID.CloseParen, Reservation.None, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, ")", TypeScript.ErrorRecoverySet.RParen); + setTokenInfo(TokenID.CloseBracket, Reservation.None, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "]", TypeScript.ErrorRecoverySet.RBrack); + setTokenInfo(TokenID.OpenBrace, Reservation.None, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "{", TypeScript.ErrorRecoverySet.LCurly); + setTokenInfo(TokenID.CloseBrace, Reservation.None, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "}", TypeScript.ErrorRecoverySet.RCurly); + setTokenInfo(TokenID.DotDotDot, Reservation.None, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "...", TypeScript.ErrorRecoverySet.None); + setTokenInfo(TokenID.Comma, Reservation.None, OperatorPrecedence.Comma, TypeScript.NodeType.Comma, OperatorPrecedence.None, TypeScript.NodeType.None, ",", TypeScript.ErrorRecoverySet.Comma); + setTokenInfo(TokenID.Equals, Reservation.None, OperatorPrecedence.Assignment, TypeScript.NodeType.Asg, OperatorPrecedence.None, TypeScript.NodeType.None, "=", TypeScript.ErrorRecoverySet.Asg); + setTokenInfo(TokenID.PlusEquals, Reservation.None, OperatorPrecedence.Assignment, TypeScript.NodeType.AsgAdd, OperatorPrecedence.None, TypeScript.NodeType.None, "+=", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.MinusEquals, Reservation.None, OperatorPrecedence.Assignment, TypeScript.NodeType.AsgSub, OperatorPrecedence.None, TypeScript.NodeType.None, "-=", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.AsteriskEquals, Reservation.None, OperatorPrecedence.Assignment, TypeScript.NodeType.AsgMul, OperatorPrecedence.None, TypeScript.NodeType.None, "*=", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.SlashEquals, Reservation.None, OperatorPrecedence.Assignment, TypeScript.NodeType.AsgDiv, OperatorPrecedence.None, TypeScript.NodeType.None, "/=", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.PercentEquals, Reservation.None, OperatorPrecedence.Assignment, TypeScript.NodeType.AsgMod, OperatorPrecedence.None, TypeScript.NodeType.None, "%=", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.AmpersandEquals, Reservation.None, OperatorPrecedence.Assignment, TypeScript.NodeType.AsgAnd, OperatorPrecedence.None, TypeScript.NodeType.None, "&=", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.CaretEquals, Reservation.None, OperatorPrecedence.Assignment, TypeScript.NodeType.AsgXor, OperatorPrecedence.None, TypeScript.NodeType.None, "^=", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.BarEquals, Reservation.None, OperatorPrecedence.Assignment, TypeScript.NodeType.AsgOr, OperatorPrecedence.None, TypeScript.NodeType.None, "|=", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.LessThanLessThanEquals, Reservation.None, OperatorPrecedence.Assignment, TypeScript.NodeType.AsgLsh, OperatorPrecedence.None, TypeScript.NodeType.None, "<<=", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.GreaterThanGreaterThanEquals, Reservation.None, OperatorPrecedence.Assignment, TypeScript.NodeType.AsgRsh, OperatorPrecedence.None, TypeScript.NodeType.None, ">>=", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.GreaterThanGreaterThanGreaterThanEquals, Reservation.None, OperatorPrecedence.Assignment, TypeScript.NodeType.AsgRs2, OperatorPrecedence.None, TypeScript.NodeType.None, ">>>=", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.Question, Reservation.None, OperatorPrecedence.Conditional, TypeScript.NodeType.ConditionalExpression, OperatorPrecedence.None, TypeScript.NodeType.None, "?", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.Colon, Reservation.None, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, ":", TypeScript.ErrorRecoverySet.Colon); + setTokenInfo(TokenID.BarBar, Reservation.None, OperatorPrecedence.LogicalOr, TypeScript.NodeType.LogOr, OperatorPrecedence.None, TypeScript.NodeType.None, "||", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.AmpersandAmpersand, Reservation.None, OperatorPrecedence.LogicalAnd, TypeScript.NodeType.LogAnd, OperatorPrecedence.None, TypeScript.NodeType.None, "&&", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.Bar, Reservation.None, OperatorPrecedence.BitwiseOr, TypeScript.NodeType.Or, OperatorPrecedence.None, TypeScript.NodeType.None, "|", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.Caret, Reservation.None, OperatorPrecedence.BitwiseExclusiveOr, TypeScript.NodeType.Xor, OperatorPrecedence.None, TypeScript.NodeType.None, "^", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.And, Reservation.None, OperatorPrecedence.BitwiseAnd, TypeScript.NodeType.And, OperatorPrecedence.None, TypeScript.NodeType.None, "&", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.EqualsEquals, Reservation.None, OperatorPrecedence.Equality, TypeScript.NodeType.Eq, OperatorPrecedence.None, TypeScript.NodeType.None, "==", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.ExclamationEquals, Reservation.None, OperatorPrecedence.Equality, TypeScript.NodeType.Ne, OperatorPrecedence.None, TypeScript.NodeType.None, "!=", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.EqualsEqualsEquals, Reservation.None, OperatorPrecedence.Equality, TypeScript.NodeType.Eqv, OperatorPrecedence.None, TypeScript.NodeType.None, "===", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.ExclamationEqualsEquals, Reservation.None, OperatorPrecedence.Equality, TypeScript.NodeType.NEqv, OperatorPrecedence.None, TypeScript.NodeType.None, "!==", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.LessThan, Reservation.None, OperatorPrecedence.Relational, TypeScript.NodeType.Lt, OperatorPrecedence.None, TypeScript.NodeType.None, "<", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.LessThanEquals, Reservation.None, OperatorPrecedence.Relational, TypeScript.NodeType.Le, OperatorPrecedence.None, TypeScript.NodeType.None, "<=", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.GreaterThan, Reservation.None, OperatorPrecedence.Relational, TypeScript.NodeType.Gt, OperatorPrecedence.None, TypeScript.NodeType.None, ">", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.GreaterThanEquals, Reservation.None, OperatorPrecedence.Relational, TypeScript.NodeType.Ge, OperatorPrecedence.None, TypeScript.NodeType.None, ">=", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.LessThanLessThan, Reservation.None, OperatorPrecedence.Shift, TypeScript.NodeType.Lsh, OperatorPrecedence.None, TypeScript.NodeType.None, "<<", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.GreaterThanGreaterThan, Reservation.None, OperatorPrecedence.Shift, TypeScript.NodeType.Rsh, OperatorPrecedence.None, TypeScript.NodeType.None, ">>", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.GreaterThanGreaterThanGreaterThan, Reservation.None, OperatorPrecedence.Shift, TypeScript.NodeType.Rs2, OperatorPrecedence.None, TypeScript.NodeType.None, ">>>", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.Plus, Reservation.None, OperatorPrecedence.Additive, TypeScript.NodeType.Add, OperatorPrecedence.Unary, TypeScript.NodeType.Pos, "+", TypeScript.ErrorRecoverySet.AddOp); + setTokenInfo(TokenID.Minus, Reservation.None, OperatorPrecedence.Additive, TypeScript.NodeType.Sub, OperatorPrecedence.Unary, TypeScript.NodeType.Neg, "-", TypeScript.ErrorRecoverySet.AddOp); + setTokenInfo(TokenID.Asterisk, Reservation.None, OperatorPrecedence.Multiplicative, TypeScript.NodeType.Mul, OperatorPrecedence.None, TypeScript.NodeType.None, "*", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.Slash, Reservation.None, OperatorPrecedence.Multiplicative, TypeScript.NodeType.Div, OperatorPrecedence.None, TypeScript.NodeType.None, "/", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.Percent, Reservation.None, OperatorPrecedence.Multiplicative, TypeScript.NodeType.Mod, OperatorPrecedence.None, TypeScript.NodeType.None, "%", TypeScript.ErrorRecoverySet.BinOp); + setTokenInfo(TokenID.Tilde, Reservation.None, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.Unary, TypeScript.NodeType.Not, "~", TypeScript.ErrorRecoverySet.PreOp); + setTokenInfo(TokenID.Exclamation, Reservation.None, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.Unary, TypeScript.NodeType.LogNot, "!", TypeScript.ErrorRecoverySet.PreOp); + setTokenInfo(TokenID.PlusPlus, Reservation.None, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.Unary, TypeScript.NodeType.IncPre, "++", TypeScript.ErrorRecoverySet.PreOp); + setTokenInfo(TokenID.MinusMinus, Reservation.None, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.Unary, TypeScript.NodeType.DecPre, "--", TypeScript.ErrorRecoverySet.PreOp); + setTokenInfo(TokenID.OpenParen, Reservation.None, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "(", TypeScript.ErrorRecoverySet.LParen); + setTokenInfo(TokenID.OpenBracket, Reservation.None, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "[", TypeScript.ErrorRecoverySet.LBrack); + setTokenInfo(TokenID.Dot, Reservation.None, OperatorPrecedence.Unary, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, ".", TypeScript.ErrorRecoverySet.Dot); + setTokenInfo(TokenID.EndOfFile, Reservation.None, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "", TypeScript.ErrorRecoverySet.EOF); + setTokenInfo(TokenID.EqualsGreaterThan, Reservation.None, OperatorPrecedence.None, TypeScript.NodeType.None, OperatorPrecedence.None, TypeScript.NodeType.None, "=>", TypeScript.ErrorRecoverySet.None); + function lookupToken(tokenId) { + return TypeScript.tokenTable[tokenId]; + } + TypeScript.lookupToken = lookupToken; + (function (TokenClass) { + TokenClass._map = []; + TokenClass._map[0] = "Punctuation"; + TokenClass.Punctuation = 0; + TokenClass._map[1] = "Keyword"; + TokenClass.Keyword = 1; + TokenClass._map[2] = "Operator"; + TokenClass.Operator = 2; + TokenClass._map[3] = "Comment"; + TokenClass.Comment = 3; + TokenClass._map[4] = "Whitespace"; + TokenClass.Whitespace = 4; + TokenClass._map[5] = "Identifier"; + TokenClass.Identifier = 5; + TokenClass._map[6] = "NumberLiteral"; + TokenClass.NumberLiteral = 6; + TokenClass._map[7] = "StringLiteral"; + TokenClass.StringLiteral = 7; + TokenClass._map[8] = "RegExpLiteral"; + TokenClass.RegExpLiteral = 8; + })(TypeScript.TokenClass || (TypeScript.TokenClass = {})); + var TokenClass = TypeScript.TokenClass; + var SavedToken = (function () { + function SavedToken(tok, minChar, limChar) { + this.tok = tok; + this.minChar = minChar; + this.limChar = limChar; + } + return SavedToken; + })(); + TypeScript.SavedToken = SavedToken; + var Token = (function () { + function Token(tokenId) { + this.tokenId = tokenId; + } + Token.prototype.toString = function () { + return "token: " + this.tokenId + " " + this.getText() + " (" + (TokenID)._map[this.tokenId] + ")"; + }; + Token.prototype.print = function (line, outfile) { + outfile.WriteLine(this.toString() + ",on line" + line); + }; + Token.prototype.getText = function () { + return TypeScript.tokenTable[this.tokenId].text; + }; + Token.prototype.classification = function () { + if(this.tokenId <= TokenID.LimKeyword) { + return TokenClass.Keyword; + } else { + var tokenInfo = lookupToken(this.tokenId); + if(tokenInfo != undefined) { + if((tokenInfo.unopNodeType != TypeScript.NodeType.None) || (tokenInfo.binopNodeType != TypeScript.NodeType.None)) { + return TokenClass.Operator; + } + } + } + return TokenClass.Punctuation; + }; + return Token; + })(); + TypeScript.Token = Token; + var NumberLiteralToken = (function (_super) { + __extends(NumberLiteralToken, _super); + function NumberLiteralToken(value, hasEmptyFraction) { + _super.call(this, TokenID.NumberLiteral); + this.value = value; + this.hasEmptyFraction = hasEmptyFraction; + } + NumberLiteralToken.prototype.getText = function () { + return this.hasEmptyFraction ? this.value.toString() + ".0" : this.value.toString(); + }; + NumberLiteralToken.prototype.classification = function () { + return TokenClass.NumberLiteral; + }; + return NumberLiteralToken; + })(Token); + TypeScript.NumberLiteralToken = NumberLiteralToken; + var StringLiteralToken = (function (_super) { + __extends(StringLiteralToken, _super); + function StringLiteralToken(value) { + _super.call(this, TokenID.StringLiteral); + this.value = value; + } + StringLiteralToken.prototype.getText = function () { + return this.value; + }; + StringLiteralToken.prototype.classification = function () { + return TokenClass.StringLiteral; + }; + return StringLiteralToken; + })(Token); + TypeScript.StringLiteralToken = StringLiteralToken; + var IdentifierToken = (function (_super) { + __extends(IdentifierToken, _super); + function IdentifierToken(value, hasEscapeSequence) { + _super.call(this, TokenID.Identifier); + this.value = value; + this.hasEscapeSequence = hasEscapeSequence; + } + IdentifierToken.prototype.getText = function () { + return this.value; + }; + IdentifierToken.prototype.classification = function () { + return TokenClass.Identifier; + }; + return IdentifierToken; + })(Token); + TypeScript.IdentifierToken = IdentifierToken; + var WhitespaceToken = (function (_super) { + __extends(WhitespaceToken, _super); + function WhitespaceToken(tokenId, value) { + _super.call(this, tokenId); + this.value = value; + } + WhitespaceToken.prototype.getText = function () { + return this.value; + }; + WhitespaceToken.prototype.classification = function () { + return TokenClass.Whitespace; + }; + return WhitespaceToken; + })(Token); + TypeScript.WhitespaceToken = WhitespaceToken; + var CommentToken = (function (_super) { + __extends(CommentToken, _super); + function CommentToken(tokenID, value, isBlock, startPos, line, endsLine) { + _super.call(this, tokenID); + this.value = value; + this.isBlock = isBlock; + this.startPos = startPos; + this.line = line; + this.endsLine = endsLine; + } + CommentToken.prototype.getText = function () { + return this.value; + }; + CommentToken.prototype.classification = function () { + return TokenClass.Comment; + }; + return CommentToken; + })(Token); + TypeScript.CommentToken = CommentToken; + var RegularExpressionLiteralToken = (function (_super) { + __extends(RegularExpressionLiteralToken, _super); + function RegularExpressionLiteralToken(regex) { + _super.call(this, TokenID.RegularExpressionLiteral); + this.regex = regex; + } + RegularExpressionLiteralToken.prototype.getText = function () { + return this.regex.toString(); + }; + RegularExpressionLiteralToken.prototype.classification = function () { + return TokenClass.RegExpLiteral; + }; + return RegularExpressionLiteralToken; + })(Token); + TypeScript.RegularExpressionLiteralToken = RegularExpressionLiteralToken; + TypeScript.staticTokens = new Array(); + function initializeStaticTokens() { + for(var i = 0; i <= TokenID.LimFixed; i++) { + TypeScript.staticTokens[i] = new Token(i); + } + } + TypeScript.initializeStaticTokens = initializeStaticTokens; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + var ArrayCache = (function () { + function ArrayCache() { + this.arrayBase = null; + } + ArrayCache.prototype.specialize = function (arrInstType, checker) { + if(this.arrayBase == null) { + this.arrayBase = arrInstType.specializeType(checker.wildElm.type, this.arrayType.elementType, checker, true); + } + return this.arrayBase; + }; + return ArrayCache; + })(); + TypeScript.ArrayCache = ArrayCache; + var TypeComparisonInfo = (function () { + function TypeComparisonInfo() { + this.onlyCaptureFirstError = false; + this.flags = TypeScript.TypeRelationshipFlags.SuccessfulComparison; + this.message = ""; + } + TypeComparisonInfo.prototype.addMessageToFront = function (message) { + if(!this.onlyCaptureFirstError) { + this.message = this.message ? message + ":\n\t" + this.message : message; + } else { + this.setMessage(message); + } + }; + TypeComparisonInfo.prototype.setMessage = function (message) { + this.message = message; + }; + return TypeComparisonInfo; + })(); + TypeScript.TypeComparisonInfo = TypeComparisonInfo; + (function (TypeCheckCollectionMode) { + TypeCheckCollectionMode._map = []; + TypeCheckCollectionMode._map[0] = "Resident"; + TypeCheckCollectionMode.Resident = 0; + TypeCheckCollectionMode._map[1] = "Transient"; + TypeCheckCollectionMode.Transient = 1; + })(TypeScript.TypeCheckCollectionMode || (TypeScript.TypeCheckCollectionMode = {})); + var TypeCheckCollectionMode = TypeScript.TypeCheckCollectionMode; + var PersistentGlobalTypeState = (function () { + function PersistentGlobalTypeState(errorReporter) { + this.errorReporter = errorReporter; + this.importedGlobalsTable = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + this.importedGlobalsTypeTable = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + this.globals = null; + this.globalTypes = null; + this.ambientGlobals = null; + this.ambientGlobalTypes = null; + this.residentGlobalValues = new TypeScript.StringHashTable(); + this.residentGlobalTypes = new TypeScript.StringHashTable(); + this.residentGlobalAmbientValues = new TypeScript.StringHashTable(); + this.residentGlobalAmbientTypes = new TypeScript.StringHashTable(); + this.residentTypeCheck = true; + this.mod = null; + this.gloMod = null; + this.wildElm = null; + this.importedGlobals = new TypeScript.SymbolScopeBuilder(null, this.importedGlobalsTable, null, this.importedGlobalsTypeTable, null, null); + this.dualGlobalValues = new TypeScript.DualStringHashTable(this.residentGlobalValues, new TypeScript.StringHashTable()); + this.dualGlobalTypes = new TypeScript.DualStringHashTable(this.residentGlobalTypes, new TypeScript.StringHashTable()); + this.dualAmbientGlobalValues = new TypeScript.DualStringHashTable(this.residentGlobalAmbientValues, new TypeScript.StringHashTable()); + this.dualAmbientGlobalTypes = new TypeScript.DualStringHashTable(this.residentGlobalAmbientTypes, new TypeScript.StringHashTable()); + var dualGlobalScopedMembers = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(this.dualGlobalValues, new TypeScript.StringHashTable())); + var dualGlobalScopedAmbientMembers = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(this.dualAmbientGlobalValues, new TypeScript.StringHashTable())); + var dualGlobalScopedEnclosedTypes = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(this.dualGlobalTypes, new TypeScript.StringHashTable())); + var dualGlobalScopedAmbientEnclosedTypes = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(this.dualAmbientGlobalTypes, new TypeScript.StringHashTable())); + this.globalScope = new TypeScript.SymbolScopeBuilder(dualGlobalScopedMembers, dualGlobalScopedAmbientMembers, dualGlobalScopedEnclosedTypes, dualGlobalScopedAmbientEnclosedTypes, this.importedGlobals, null); + this.voidType = this.enterPrimitive(TypeScript.Primitive.Void, "void"); + this.booleanType = this.enterPrimitive(TypeScript.Primitive.Boolean, "bool"); + this.doubleType = this.enterPrimitive(TypeScript.Primitive.Double, "number"); + this.importedGlobals.ambientEnclosedTypes.addPublicMember("number", this.doubleType.symbol); + this.stringType = this.enterPrimitive(TypeScript.Primitive.String, "string"); + this.anyType = this.enterPrimitive(TypeScript.Primitive.Any, "any"); + this.nullType = this.enterPrimitive(TypeScript.Primitive.Null, "null"); + this.undefinedType = this.enterPrimitive(TypeScript.Primitive.Undefined, "undefined"); + this.setCollectionMode(TypeCheckCollectionMode.Resident); + this.wildElm = new TypeScript.TypeSymbol("_element", -1, 0, -1, new TypeScript.Type()); + this.importedGlobalsTypeTable.addPublicMember(this.wildElm.name, this.wildElm); + this.mod = new TypeScript.ModuleType(dualGlobalScopedEnclosedTypes, dualGlobalScopedAmbientEnclosedTypes); + this.mod.members = dualGlobalScopedMembers; + this.mod.ambientMembers = dualGlobalScopedAmbientMembers; + this.mod.containedScope = this.globalScope; + this.gloMod = new TypeScript.TypeSymbol(TypeScript.globalId, -1, 0, -1, this.mod); + this.mod.members.addPublicMember(this.gloMod.name, this.gloMod); + this.defineGlobalValue("undefined", this.undefinedType); + } + PersistentGlobalTypeState.prototype.enterPrimitive = function (flags, name) { + var primitive = new TypeScript.Type(); + primitive.primitiveTypeClass = flags; + var symbol = new TypeScript.TypeSymbol(name, -1, name.length, -1, primitive); + symbol.typeCheckStatus = TypeScript.TypeCheckStatus.Finished; + primitive.symbol = symbol; + this.importedGlobals.enter(null, null, symbol, this.errorReporter, true, true, true); + return primitive; + }; + PersistentGlobalTypeState.prototype.setCollectionMode = function (mode) { + this.residentTypeCheck = this.dualGlobalValues.insertPrimary = this.dualGlobalTypes.insertPrimary = this.dualAmbientGlobalValues.insertPrimary = this.dualAmbientGlobalTypes.insertPrimary = mode == TypeCheckCollectionMode.Resident; + }; + PersistentGlobalTypeState.prototype.refreshPersistentState = function () { + this.globals = new TypeScript.StringHashTable(); + this.globalTypes = new TypeScript.StringHashTable(); + this.ambientGlobals = new TypeScript.StringHashTable(); + this.ambientGlobalTypes = new TypeScript.StringHashTable(); + this.globalTypes.add(this.voidType.symbol.name, this.voidType.symbol); + this.globalTypes.add(this.booleanType.symbol.name, this.booleanType.symbol); + this.globalTypes.add(this.doubleType.symbol.name, this.doubleType.symbol); + this.globalTypes.add("number", this.doubleType.symbol); + this.globalTypes.add(this.stringType.symbol.name, this.stringType.symbol); + this.globalTypes.add(this.anyType.symbol.name, this.anyType.symbol); + this.globalTypes.add(this.nullType.symbol.name, this.nullType.symbol); + this.globalTypes.add(this.undefinedType.symbol.name, this.undefinedType.symbol); + this.dualGlobalValues.secondaryTable = this.globals; + this.dualGlobalTypes.secondaryTable = this.globalTypes; + this.dualAmbientGlobalValues.secondaryTable = this.ambientGlobals; + this.dualAmbientGlobalTypes.secondaryTable = this.ambientGlobalTypes; + }; + PersistentGlobalTypeState.prototype.defineGlobalValue = function (name, type) { + var valueLocation = new TypeScript.ValueLocation(); + valueLocation.typeLink = new TypeScript.TypeLink(); + var sym = new TypeScript.VariableSymbol(name, 0, -1, valueLocation); + sym.setType(type); + sym.typeCheckStatus = TypeScript.TypeCheckStatus.Finished; + sym.container = this.gloMod; + this.importedGlobalsTable.addPublicMember(name, sym); + }; + return PersistentGlobalTypeState; + })(); + TypeScript.PersistentGlobalTypeState = PersistentGlobalTypeState; + var ContextualTypeContext = (function () { + function ContextualTypeContext(contextualType, provisional, contextID) { + this.contextualType = contextualType; + this.provisional = provisional; + this.contextID = contextID; + this.targetSig = null; + this.targetThis = null; + this.targetAccessorType = null; + } + return ContextualTypeContext; + })(); + TypeScript.ContextualTypeContext = ContextualTypeContext; + var ContextualTypingContextStack = (function () { + function ContextualTypingContextStack(checker) { + this.checker = checker; + this.contextStack = []; + this.hadProvisionalErrors = false; + } + ContextualTypingContextStack.contextID = TypeScript.TypeCheckStatus.Finished + 1; + ContextualTypingContextStack.prototype.pushContextualType = function (type, provisional) { + this.contextStack.push(new ContextualTypeContext(type, provisional, ContextualTypingContextStack.contextID++)); + this.checker.errorReporter.pushToErrorSink = provisional; + }; + ContextualTypingContextStack.prototype.popContextualType = function () { + var tc = this.contextStack.pop(); + this.checker.errorReporter.pushToErrorSink = this.isProvisional(); + this.hadProvisionalErrors = this.hadProvisionalErrors || (tc.provisional && (this.checker.errorReporter.getCapturedErrors().length)); + this.checker.errorReporter.freeCapturedErrors(); + return tc; + }; + ContextualTypingContextStack.prototype.getContextualType = function () { + return (!this.contextStack.length ? null : this.contextStack[this.contextStack.length - 1]); + }; + ContextualTypingContextStack.prototype.getContextID = function () { + return (!this.contextStack.length ? TypeScript.TypeCheckStatus.Finished : this.contextStack[this.contextStack.length - 1].contextID); + }; + ContextualTypingContextStack.prototype.isProvisional = function () { + return (!this.contextStack.length ? false : this.contextStack[this.contextStack.length - 1].provisional); + }; + return ContextualTypingContextStack; + })(); + TypeScript.ContextualTypingContextStack = ContextualTypingContextStack; + var TypeChecker = (function () { + function TypeChecker(persistentState) { + this.persistentState = persistentState; + this.errorReporter = null; + this.checkControlFlow = false; + this.printControlFlowGraph = false; + this.checkControlFlowUseDef = false; + this.styleSettings = null; + this.units = null; + this.anon = "_anonymous"; + this.locationInfo = null; + this.typeFlow = null; + this.currentCompareA = null; + this.currentCompareB = null; + this.currentModDecl = null; + this.inBind = false; + this.inWith = false; + this.errorsOnWith = true; + this.currentContextualTypeContext = null; + this.resolvingBases = false; + this.canCallDefinitionSignature = false; + this.assignableCache = { + }; + this.subtypeCache = { + }; + this.identicalCache = { + }; + this.provisionalStartedTypecheckObjects = []; + this.mustCaptureGlobalThis = false; + this.voidType = this.persistentState.voidType; + this.booleanType = this.persistentState.booleanType; + this.numberType = this.persistentState.doubleType; + this.stringType = this.persistentState.stringType; + this.anyType = this.persistentState.anyType; + this.nullType = this.persistentState.nullType; + this.undefinedType = this.persistentState.undefinedType; + this.globals = this.persistentState.dualGlobalValues; + this.globalTypes = this.persistentState.dualGlobalTypes; + this.ambientGlobals = this.persistentState.dualAmbientGlobalValues; + this.ambientGlobalTypes = this.persistentState.dualAmbientGlobalTypes; + this.gloModType = this.persistentState.mod; + this.gloMod = this.persistentState.gloMod; + this.wildElm = this.persistentState.wildElm; + this.globalScope = this.persistentState.globalScope; + this.typingContextStack = new ContextualTypingContextStack(this); + } + TypeChecker.prototype.setStyleOptions = function (style) { + this.styleSettings = style; + }; + TypeChecker.prototype.setContextualType = function (type, provisional) { + this.typingContextStack.pushContextualType(type, provisional); + this.currentContextualTypeContext = this.typingContextStack.getContextualType(); + }; + TypeChecker.prototype.unsetContextualType = function () { + var lastTC = this.typingContextStack.popContextualType(); + this.currentContextualTypeContext = this.typingContextStack.getContextualType(); + return lastTC; + }; + TypeChecker.prototype.hadProvisionalErrors = function () { + return this.typingContextStack.hadProvisionalErrors; + }; + TypeChecker.prototype.resetProvisionalErrors = function () { + if(!this.typingContextStack.getContextualType()) { + this.typingContextStack.hadProvisionalErrors = false; + } + }; + TypeChecker.prototype.typeCheckWithContextualType = function (contextType, provisional, condition, ast) { + if(condition) { + this.setContextualType(contextType, this.typingContextStack.isProvisional() || provisional); + } + this.typeFlow.typeCheck(ast); + if(condition) { + this.unsetContextualType(); + } + }; + TypeChecker.prototype.resetTargetType = function () { + this.currentContextualTypeContext = this.typingContextStack.getContextualType(); + }; + TypeChecker.prototype.killCurrentContextualType = function () { + this.currentContextualTypeContext = null; + this.errorReporter.pushToErrorSink = false; + }; + TypeChecker.prototype.hasTargetType = function () { + return this.currentContextualTypeContext && this.currentContextualTypeContext.contextualType; + }; + TypeChecker.prototype.getTargetTypeContext = function () { + return this.currentContextualTypeContext; + }; + TypeChecker.prototype.inProvisionalTypecheckMode = function () { + return this.typingContextStack.isProvisional(); + }; + TypeChecker.prototype.getTypeCheckFinishedStatus = function () { + if(this.inProvisionalTypecheckMode()) { + return this.typingContextStack.getContextID(); + } + return TypeScript.TypeCheckStatus.Finished; + }; + TypeChecker.prototype.typeStatusIsFinished = function (status) { + return status == TypeScript.TypeCheckStatus.Finished || (this.inProvisionalTypecheckMode() && status == this.typingContextStack.getContextID()); + }; + TypeChecker.prototype.addStartedPTO = function (pto) { + if(this.inProvisionalTypecheckMode()) { + this.provisionalStartedTypecheckObjects[this.provisionalStartedTypecheckObjects.length] = pto; + } + }; + TypeChecker.prototype.cleanStartedPTO = function () { + for(var i = 0; i < this.provisionalStartedTypecheckObjects.length; i++) { + if(this.provisionalStartedTypecheckObjects[i].typeCheckStatus >= this.typingContextStack.getContextID()) { + this.provisionalStartedTypecheckObjects[i].typeCheckStatus = TypeScript.TypeCheckStatus.NotStarted; + } + } + this.provisionalStartedTypecheckObjects = []; + }; + TypeChecker.prototype.collectTypes = function (ast) { + if(ast.nodeType == TypeScript.NodeType.Script) { + var script = ast; + this.locationInfo = script.locationInfo; + } + var globalChain = new TypeScript.ScopeChain(this.gloMod, null, this.globalScope); + var context = new TypeScript.TypeCollectionContext(globalChain, this); + TypeScript.getAstWalkerFactory().walk(ast, TypeScript.preCollectTypes, TypeScript.postCollectTypes, null, context); + }; + TypeChecker.prototype.makeArrayType = function (type) { + if(type.arrayCache == null) { + type.arrayCache = new ArrayCache(); + type.arrayCache.arrayType = new TypeScript.Type(); + type.arrayCache.arrayType.elementType = type; + type.arrayCache.arrayType.symbol = type.symbol; + } + return type.arrayCache.arrayType; + }; + TypeChecker.prototype.getParameterList = function (funcDecl, container) { + var args = funcDecl.arguments; + var parameterTable = null; + var parameterBuilder = null; + var len = args.members.length; + var nonOptionalParams = 0; + var result = []; + if(len > 0) { + parameterTable = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + parameterBuilder = new TypeScript.SymbolScopeBuilder(parameterTable, null, null, null, null, container); + for(var i = 0; i < len; i++) { + var parameter = args.members[i]; + var paramDef = new TypeScript.ValueLocation(); + var parameterSymbol = new TypeScript.ParameterSymbol(parameter.id.text, parameter.minChar, this.locationInfo.unitIndex, paramDef); + parameterSymbol.declAST = parameter; + parameterSymbol.funcDecl = funcDecl; + parameter.id.sym = parameterSymbol; + parameter.sym = parameterSymbol; + paramDef.symbol = parameterSymbol; + paramDef.typeLink = TypeScript.getTypeLink(parameter.typeExpr, this, false); + parameterBuilder.enter(null, parameter, parameterSymbol, this.errorReporter, true, false, false); + result[result.length] = parameterSymbol; + if(!parameter.isOptionalArg()) { + nonOptionalParams++; + } + } + } + return { + parameters: result, + nonOptionalParameterCount: nonOptionalParams + }; + }; + TypeChecker.prototype.createFunctionSignature = function (funcDecl, container, scope, overloadGroupSym, addToScope) { + var isExported = TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Exported | TypeScript.FncFlags.ClassPropertyMethodExported) || container == this.gloMod; + var isStatic = TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Static); + var isPrivate = TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Private); + var isDefinition = TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Definition); + var isAmbient = TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Ambient); + var isConstructor = funcDecl.isConstructMember() || funcDecl.isConstructor; + var isGlobal = container == this.gloMod; + var signature = new TypeScript.Signature(); + var isLambda = funcDecl.fncFlags & TypeScript.FncFlags.IsFunctionExpression; + if(funcDecl.returnTypeAnnotation || isDefinition) { + signature.returnType = TypeScript.getTypeLink(funcDecl.returnTypeAnnotation, this, false); + } else { + signature.returnType = new TypeScript.TypeLink(); + signature.returnType.type = this.anyType; + } + signature.hasVariableArgList = funcDecl.variableArgList; + var sigData = this.getParameterList(funcDecl, container); + signature.parameters = sigData.parameters; + signature.nonOptionalParameterCount = sigData.nonOptionalParameterCount; + funcDecl.signature = signature; + signature.declAST = funcDecl; + var useOverloadGroupSym = overloadGroupSym && overloadGroupSym.getType() && !overloadGroupSym.isAccessor() && (funcDecl.isSignature() || (isAmbient == TypeScript.hasFlag(overloadGroupSym.flags, TypeScript.SymbolFlags.Ambient))); + if(useOverloadGroupSym && isPrivate != TypeScript.hasFlag(overloadGroupSym.flags, TypeScript.SymbolFlags.Private)) { + this.errorReporter.simpleError(funcDecl, "Public/Private visibility of overloads does not agree"); + } + var groupType = useOverloadGroupSym ? overloadGroupSym.getType() : new TypeScript.Type(); + if(isConstructor) { + if(groupType.construct == null) { + groupType.construct = new TypeScript.SignatureGroup(); + } + groupType.construct.addSignature(signature); + groupType.construct.hasImplementation = !(funcDecl.isSignature()); + if(groupType.construct.hasImplementation) { + groupType.setHasImplementation(); + } + } else { + if(funcDecl.isIndexerMember()) { + if(groupType.index == null) { + groupType.index = new TypeScript.SignatureGroup(); + groupType.index.flags |= TypeScript.SignatureFlags.IsIndexer; + } + groupType.index.addSignature(signature); + groupType.index.hasImplementation = !(funcDecl.isSignature()); + if(groupType.index.hasImplementation) { + groupType.setHasImplementation(); + } + } else { + if(groupType.call == null) { + groupType.call = new TypeScript.SignatureGroup(); + } + groupType.call.addSignature(signature); + groupType.call.hasImplementation = !(funcDecl.isSignature()); + if(groupType.call.hasImplementation) { + groupType.setHasImplementation(); + } + } + } + var instanceType = groupType.instanceType; + var funcName = null; + var usedHint = false; + if(funcDecl.name && !funcDecl.name.isMissing()) { + funcName = funcDecl.name.text; + } else { + if(funcDecl.hint) { + funcName = funcDecl.hint; + usedHint = true; + } + } + if(groupType.symbol == null) { + groupType.symbol = new TypeScript.TypeSymbol(funcName ? funcName : this.anon, funcDecl.minChar, funcDecl.limChar - funcDecl.minChar, this.locationInfo.unitIndex, groupType); + if(!useOverloadGroupSym) { + groupType.symbol.declAST = funcDecl; + } + } + if(isStatic) { + groupType.symbol.flags |= TypeScript.SymbolFlags.Static; + } + if(isAmbient) { + groupType.symbol.flags |= TypeScript.SymbolFlags.Ambient; + } + if(isPrivate) { + groupType.symbol.flags |= TypeScript.SymbolFlags.Private; + } + groupType.symbol.isMethod = funcDecl.isMethod(); + if(groupType.symbol.isMethod) { + groupType.symbol.flags |= TypeScript.SymbolFlags.Property; + } + funcDecl.type = groupType; + if(!isConstructor) { + if(funcName && !isLambda && !funcDecl.isAccessor() && !usedHint) { + if(addToScope) { + if(funcDecl.isMethod() && isStatic) { + if(!(container).type.members.publicMembers.add(funcName, groupType.symbol)) { + this.errorReporter.duplicateIdentifier(funcDecl, funcName); + } + groupType.symbol.container = container; + } else { + if(overloadGroupSym == null || (overloadGroupSym.declAST && !(overloadGroupSym.declAST).isOverload && (container.isType()))) { + scope.enter(container, funcDecl, groupType.symbol, this.errorReporter, !isPrivate && (isExported || isStatic || isGlobal), false, isAmbient); + } + } + } else { + if(!funcDecl.isSpecialFn()) { + groupType.symbol.container = container; + } + } + } else { + if(!funcDecl.isSpecialFn()) { + groupType.symbol.container = container; + } + } + } + if(useOverloadGroupSym) { + var overloadGroupType = overloadGroupSym ? overloadGroupSym.getType() : null; + var classType = groupType; + if(classType != overloadGroupType) { + if(classType.construct == null) { + if(overloadGroupType && overloadGroupType.construct) { + classType.construct = overloadGroupType.construct; + } else { + classType.construct = new TypeScript.SignatureGroup(); + } + } else { + if(overloadGroupType) { + if(overloadGroupType.construct) { + classType.construct.signatures.concat(overloadGroupType.construct.signatures); + } + } + } + if(overloadGroupType) { + if(classType.call == null) { + classType.call = overloadGroupType.call; + } else { + if(overloadGroupType.call) { + classType.call.signatures.concat(overloadGroupType.call.signatures); + } + } + if(!isStatic) { + if(classType.instanceType == null) { + classType.instanceType = overloadGroupType.instanceType; + } + var instanceType = classType.instanceType; + if(instanceType) { + if(instanceType.call == null) { + instanceType.call = overloadGroupType.call; + } else { + if(overloadGroupType.call) { + instanceType.call.signatures.concat(overloadGroupType.call.signatures); + } + } + } + } + if(classType.index == null) { + classType.index = overloadGroupType.index; + } else { + if(overloadGroupType.index) { + classType.index.signatures.concat(overloadGroupType.index.signatures); + } + } + } + } + } + return signature; + }; + TypeChecker.prototype.createAccessorSymbol = function (funcDecl, fgSym, enclosingClass, addToMembers, isClassProperty, scope, container) { + var accessorSym = null; + var sig = funcDecl.signature; + var nameText = funcDecl.name.text; + var isStatic = TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Static); + var isPrivate = TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Private); + if(fgSym == null) { + var field = new TypeScript.ValueLocation(); + accessorSym = new TypeScript.FieldSymbol(nameText, funcDecl.minChar, this.locationInfo.unitIndex, false, field); + field.symbol = accessorSym; + accessorSym.declAST = funcDecl; + if(TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.GetAccessor)) { + if(accessorSym.getter) { + this.errorReporter.simpleError(funcDecl, "Redeclaration of property getter"); + } + accessorSym.getter = sig.declAST.type.symbol; + } else { + if(accessorSym.setter) { + this.errorReporter.simpleError(funcDecl, "Redeclaration of property setter"); + } + accessorSym.setter = sig.declAST.type.symbol; + } + field.typeLink = TypeScript.getTypeLink(null, this, false); + if(addToMembers) { + if(enclosingClass) { + if(!enclosingClass.members.publicMembers.add(nameText, accessorSym)) { + this.errorReporter.duplicateIdentifier(funcDecl, accessorSym.name); + } + accessorSym.container = enclosingClass.symbol; + } else { + this.errorReporter.simpleError(funcDecl, "Accessor property may not be added in this context"); + } + } else { + scope.enter(container, funcDecl, accessorSym, this.errorReporter, !isPrivate || isStatic, false, false); + } + if(isClassProperty) { + accessorSym.flags |= TypeScript.SymbolFlags.Property; + } + if(isStatic) { + accessorSym.flags |= TypeScript.SymbolFlags.Static; + } + if(isPrivate) { + accessorSym.flags |= TypeScript.SymbolFlags.Private; + } else { + accessorSym.flags |= TypeScript.SymbolFlags.Public; + } + } else { + accessorSym = (fgSym); + if(isPrivate != TypeScript.hasFlag(accessorSym.flags, TypeScript.SymbolFlags.Private)) { + this.errorReporter.simpleError(funcDecl, "Getter and setter accessors do not agree in visibility"); + } + if(TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.GetAccessor)) { + if(accessorSym.getter) { + this.errorReporter.simpleError(funcDecl, "Redeclaration of property getter"); + } + accessorSym.getter = funcDecl.type.symbol; + } else { + if(accessorSym.setter) { + this.errorReporter.simpleError(funcDecl, "Redeclaration of property setter"); + } + accessorSym.setter = funcDecl.type.symbol; + } + } + return accessorSym; + }; + TypeChecker.prototype.addBases = function (resultScope, type, baseContext) { + resultScope.addParentScope(new TypeScript.SymbolTableScope(type.members, type.ambientMembers, type.getAllEnclosedTypes(), type.getAllAmbientEnclosedTypes(), type.symbol)); + var i = 0; + var parent; + if(type.extendsList) { + for(var len = type.extendsList.length; i < len; i++) { + parent = type.extendsList[i]; + if(baseContext.baseId == parent.typeID) { + this.errorReporter.reportErrorFromSym(parent.symbol, "Type '" + baseContext.base + "' is recursively referenced as a base class of itself"); + parent.symbol.flags |= TypeScript.SymbolFlags.RecursivelyReferenced; + break; + } + this.addBases(resultScope, parent, baseContext); + } + } + }; + TypeChecker.prototype.scopeOf = function (type) { + var resultScope = new TypeScript.SymbolAggregateScope(type.symbol); + var baseContext = { + base: type.symbol && type.symbol.name ? type.symbol.name : "{}", + baseId: type.typeID + }; + this.addBases(resultScope, type, baseContext); + return resultScope; + }; + TypeChecker.prototype.lookupMemberTypeSymbol = function (containingType, name) { + var symbol = null; + if(containingType.containedScope) { + symbol = containingType.containedScope.find(name, false, true); + } else { + if(containingType.members) { + symbol = containingType.members.allMembers.lookup(name); + if(symbol == null && containingType.ambientMembers) { + symbol = containingType.ambientMembers.allMembers.lookup(name); + } + } + } + if(symbol == null) { + var typeMembers = containingType.getAllEnclosedTypes(); + var ambientTypeMembers = containingType.getAllAmbientEnclosedTypes(); + if(typeMembers) { + symbol = typeMembers.allMembers.lookup(name); + if(symbol == null && ambientTypeMembers) { + symbol = ambientTypeMembers.allMembers.lookup(name); + } + } + } + if(symbol && symbol.isType()) { + return symbol; + } else { + return null; + } + }; + TypeChecker.prototype.findSymbolForDynamicModule = function (idText, currentFileName, search) { + var originalIdText = idText; + var symbol = search(idText); + if(symbol == null) { + if(!symbol) { + idText = TypeScript.swapQuotes(originalIdText); + symbol = search(idText); + } + if(!symbol) { + idText = TypeScript.stripQuotes(originalIdText) + ".ts"; + symbol = search(idText); + } + if(!symbol) { + idText = TypeScript.stripQuotes(originalIdText) + ".str"; + symbol = search(idText); + } + if(!symbol) { + idText = TypeScript.stripQuotes(originalIdText) + ".d.ts"; + symbol = search(idText); + } + if(!symbol) { + idText = TypeScript.stripQuotes(originalIdText) + ".d.str"; + symbol = search(idText); + } + if(!symbol && !TypeScript.isRelative(originalIdText)) { + idText = originalIdText; + var strippedIdText = TypeScript.stripQuotes(idText); + var path = TypeScript.getRootFilePath(TypeScript.switchToForwardSlashes(currentFileName)); + while(symbol == null && path != "") { + idText = TypeScript.normalizePath(path + strippedIdText + ".ts"); + symbol = search(idText); + if(symbol == null) { + idText = TypeScript.changePathToSTR(idText); + symbol = search(idText); + } + if(symbol == null) { + idText = TypeScript.changePathToDTS(idText); + symbol = search(idText); + } + if(symbol == null) { + idText = TypeScript.changePathToDSTR(idText); + symbol = search(idText); + } + if(symbol == null) { + if(path === '/') { + path = ''; + } else { + path = TypeScript.normalizePath(path + ".."); + path = path && path != '/' ? path + '/' : path; + } + } + } + } + } + return symbol; + }; + TypeChecker.prototype.resolveTypeMember = function (scope, dotNode) { + var lhs = dotNode.operand1; + var rhs = dotNode.operand2; + var resultType = this.anyType; + var lhsType = this.anyType; + if(lhs && rhs && (rhs.nodeType == TypeScript.NodeType.Name)) { + if(lhs.nodeType == TypeScript.NodeType.Dot) { + lhsType = this.resolveTypeMember(scope, lhs); + } else { + if(lhs.nodeType == TypeScript.NodeType.Name) { + var identifier = lhs; + var symbol = scope.find(identifier.text, false, true); + if(symbol == null) { + this.errorReporter.unresolvedSymbol(identifier, identifier.actualText); + } else { + if(symbol.isType()) { + var typeSymbol = symbol; + if(typeSymbol.aliasLink && !typeSymbol.type && typeSymbol.aliasLink.alias.nodeType == TypeScript.NodeType.Name) { + var modPath = (typeSymbol.aliasLink.alias).text; + var modSym = this.findSymbolForDynamicModule(modPath, this.locationInfo.filename, function (id) { + return scope.find(id, false, true); + }); + if(modSym) { + typeSymbol.type = modSym.getType(); + } + } + if(TypeScript.optimizeModuleCodeGen && symbol) { + var symType = symbol.getType(); + if(symType && typeSymbol.aliasLink && typeSymbol.onlyReferencedAsTypeRef) { + var modDecl = symType.symbol.declAST; + if(modDecl && TypeScript.hasFlag(modDecl.modFlags, TypeScript.ModuleFlags.IsDynamic)) { + typeSymbol.onlyReferencedAsTypeRef = !this.resolvingBases; + } + } + } + if(!symbol.visible(scope, this)) { + this.errorReporter.simpleError(lhs, "The symbol '" + identifier.actualText + "' is not visible at this point"); + } + lhsType = symbol.getType(); + identifier.sym = symbol; + } else { + this.errorReporter.simpleError(lhs, "Expected type"); + } + } + } + } + if(!lhsType) { + lhsType = this.anyType; + } + if(lhsType != this.anyType) { + var rhsIdentifier = rhs; + var resultSymbol = this.lookupMemberTypeSymbol(lhsType, rhsIdentifier.text); + if(resultSymbol == null) { + resultType = this.anyType; + this.errorReporter.simpleError(dotNode, "Expected type"); + } else { + resultType = resultSymbol.getType(); + if(!resultSymbol.visible(scope, this)) { + this.errorReporter.simpleError(lhs, "The symbol '" + (rhs).actualText + "' is not visible at this point"); + } + } + rhsIdentifier.sym = resultType.symbol; + } + } + if(resultType.isClass()) { + resultType = resultType.instanceType; + } + return resultType; + }; + TypeChecker.prototype.resolveFuncDecl = function (funcDecl, scope, fgSym) { + var functionGroupSymbol = this.createFunctionSignature(funcDecl, scope.container, scope, fgSym, false).declAST.type.symbol; + var signatures; + if(funcDecl.isConstructMember()) { + signatures = functionGroupSymbol.type.construct.signatures; + } else { + if(funcDecl.isIndexerMember()) { + signatures = functionGroupSymbol.type.getInstanceType().index.signatures; + } else { + signatures = functionGroupSymbol.type.call.signatures; + } + } + var signature = signatures[signatures.length - 1]; + var len = signature.parameters.length; + for(var i = 0; i < len; i++) { + var paramSym = signature.parameters[i]; + this.resolveTypeLink(scope, paramSym.parameter.typeLink, true); + } + if(len && funcDecl.variableArgList) { + if(!signature.parameters[len - 1].parameter.typeLink.type.elementType) { + this.errorReporter.simpleErrorFromSym(signature.parameters[len - 1].parameter.symbol, "... parameter must have array type"); + signature.parameters[len - 1].parameter.typeLink.type = this.makeArrayType(signature.parameters[len - 1].parameter.typeLink.type); + } + } + this.resolveTypeLink(scope, signature.returnType, funcDecl.isSignature()); + return functionGroupSymbol; + }; + TypeChecker.prototype.resolveVarDecl = function (varDecl, scope) { + var field = new TypeScript.ValueLocation(); + var fieldSymbol = new TypeScript.FieldSymbol(varDecl.id.text, varDecl.minChar, this.locationInfo.unitIndex, (varDecl.varFlags & TypeScript.VarFlags.Readonly) == TypeScript.VarFlags.None, field); + fieldSymbol.transferVarFlags(varDecl.varFlags); + field.symbol = fieldSymbol; + fieldSymbol.declAST = varDecl; + field.typeLink = TypeScript.getTypeLink(varDecl.typeExpr, this, varDecl.init == null); + this.resolveTypeLink(scope, field.typeLink, true); + varDecl.sym = fieldSymbol; + varDecl.type = field.typeLink.type; + return fieldSymbol; + }; + TypeChecker.prototype.resolveTypeLink = function (scope, typeLink, supplyVar) { + var arrayCount = 0; + if(typeLink.type == null) { + var ast = typeLink.ast; + if(ast) { + while(typeLink.type == null) { + switch(ast.nodeType) { + case TypeScript.NodeType.Name: { + var identifier = ast; + var symbol = scope.find(identifier.text, false, true); + if(symbol == null) { + typeLink.type = this.anyType; + this.errorReporter.unresolvedSymbol(identifier, identifier.actualText); + } else { + if(symbol.isType()) { + if(!symbol.visible(scope, this)) { + this.errorReporter.simpleError(ast, "The symbol '" + identifier.actualText + "' is not visible at this point"); + } + identifier.sym = symbol; + typeLink.type = symbol.getType(); + if(typeLink.type) { + if(typeLink.type.isClass()) { + typeLink.type = typeLink.type.instanceType; + } + } else { + typeLink.type = this.anyType; + } + } else { + typeLink.type = this.anyType; + this.errorReporter.simpleError(ast, "Expected type"); + } + } + break; + + } + case TypeScript.NodeType.Dot: { + typeLink.type = this.resolveTypeMember(scope, ast); + break; + + } + case TypeScript.NodeType.TypeRef: { + var typeRef = ast; + arrayCount = typeRef.arrayCount; + ast = typeRef.term; + if(ast == null) { + typeLink.type = this.anyType; + } + break; + + } + case TypeScript.NodeType.InterfaceDeclaration: { + var interfaceDecl = ast; + var interfaceType = new TypeScript.Type(); + var interfaceSymbol = new TypeScript.TypeSymbol((interfaceDecl.name).text, ast.minChar, ast.limChar - ast.minChar, this.locationInfo.unitIndex, interfaceType); + interfaceType.symbol = interfaceSymbol; + interfaceType.members = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + interfaceType.containedScope = new TypeScript.SymbolTableScope(interfaceType.members, null, null, null, interfaceSymbol); + interfaceType.containedScope.container = interfaceSymbol; + interfaceType.memberScope = interfaceType.containedScope; + var memberList = interfaceDecl.members; + var props = memberList.members; + var propsLen = props.length; + for(var j = 0; j < propsLen; j++) { + var propDecl = props[j]; + var propSym = null; + var addMember = true; + var id = null; + if(propDecl.nodeType == TypeScript.NodeType.FuncDecl) { + var funcDecl = propDecl; + id = funcDecl.name; + propSym = interfaceType.members.allMembers.lookup(funcDecl.getNameText()); + addMember = (propSym == null); + if(funcDecl.isSpecialFn()) { + addMember = false; + propSym = this.resolveFuncDecl(funcDecl, scope, interfaceSymbol); + } else { + propSym = this.resolveFuncDecl(funcDecl, scope, propSym); + } + funcDecl.type = (propSym).type; + } else { + id = (propDecl).id; + propSym = this.resolveVarDecl(propDecl, scope); + addMember = !id.isMissing(); + } + if(addMember) { + if(id && TypeScript.hasFlag(id.flags, TypeScript.ASTFlags.OptionalName)) { + propSym.flags |= TypeScript.SymbolFlags.Optional; + } + if(!interfaceType.members.allMembers.add(propSym.name, propSym)) { + this.errorReporter.duplicateIdentifier(ast, propSym.name); + } + } + } + ast.type = interfaceType; + typeLink.type = interfaceType; + break; + + } + case TypeScript.NodeType.FuncDecl: { + var tsym = this.resolveFuncDecl(ast, scope, null); + typeLink.type = tsym.type; + break; + + } + default: { + typeLink.type = this.anyType; + this.errorReporter.simpleError(ast, "Expected type"); + break; + + } + } + } + } + for(var count = arrayCount; count > 0; count--) { + typeLink.type = this.makeArrayType(typeLink.type); + } + if(supplyVar && (typeLink.type == null)) { + typeLink.type = this.anyType; + } + if(typeLink.ast) { + typeLink.ast.type = typeLink.type; + } + } + }; + TypeChecker.prototype.resolveBaseTypeLink = function (typeLink, scope) { + this.resolvingBases = true; + this.resolveTypeLink(scope, typeLink, true); + this.resolvingBases = false; + var extendsType = null; + if(typeLink.type.isClass()) { + extendsType = typeLink.type.instanceType; + } else { + extendsType = typeLink.type; + } + return extendsType; + }; + TypeChecker.prototype.findMostApplicableSignature = function (signatures, args) { + if(signatures.length == 1) { + return { + sig: signatures[0].signature, + ambiguous: false + }; + } + var best = signatures[0]; + var Q = null; + var AType = null; + var PType = null; + var QType = null; + var ambiguous = false; + for(var qSig = 1; qSig < signatures.length; qSig++) { + Q = signatures[qSig]; + var i = 0; + for(i = 0; args && i < args.members.length; i++) { + AType = args.members[i].type; + PType = i < best.signature.parameters.length ? best.signature.parameters[i].getType() : best.signature.parameters[best.signature.parameters.length - 1].getType().elementType; + QType = i < Q.signature.parameters.length ? Q.signature.parameters[i].getType() : Q.signature.parameters[Q.signature.parameters.length - 1].getType().elementType; + if(this.typesAreIdentical(PType, QType)) { + continue; + } else { + if(this.typesAreIdentical(AType, PType)) { + break; + } else { + if(this.typesAreIdentical(AType, QType)) { + best = Q; + break; + } else { + if(this.sourceIsSubtypeOfTarget(PType, QType)) { + break; + } else { + if(this.sourceIsSubtypeOfTarget(QType, PType)) { + best = Q; + break; + } else { + if(Q.hadProvisionalErrors) { + break; + } else { + if(best.hadProvisionalErrors) { + best = Q; + break; + } + } + } + } + } + } + } + } + if(!args || i == args.members.length) { + var collection = { + getLength: function () { + return 2; + }, + setTypeAtIndex: function (index, type) { + }, + getTypeAtIndex: function (index) { + return index ? Q.signature.returnType.type : best.signature.returnType.type; + } + }; + var bct = this.findBestCommonType(best.signature.returnType.type, null, collection, true); + ambiguous = !bct; + } else { + ambiguous = false; + } + } + return { + sig: best.signature, + ambiguous: ambiguous + }; + }; + TypeChecker.prototype.getApplicableSignatures = function (signatures, args, comparisonInfo) { + var applicableSigs = []; + var memberType = null; + var miss = false; + var cxt = null; + var hadProvisionalErrors = false; + for(var i = 0; i < signatures.length; i++) { + miss = false; + for(var j = 0; j < args.members.length; j++) { + if(j >= signatures[i].parameters.length) { + continue; + } + memberType = signatures[i].parameters[j].getType(); + if(signatures[i].declAST.variableArgList && (j >= signatures[i].nonOptionalParameterCount - 1) && memberType.isArray()) { + memberType = memberType.elementType; + } + if(memberType == this.anyType) { + continue; + } else { + if(args.members[j].nodeType == TypeScript.NodeType.FuncDecl) { + if(this.typeFlow.functionInterfaceType && memberType == this.typeFlow.functionInterfaceType) { + continue; + } + if(!this.canContextuallyTypeFunction(memberType, args.members[j], true)) { + if(this.canContextuallyTypeFunction(memberType, args.members[j], false)) { + this.typeFlow.typeCheck(args.members[j]); + if(!this.sourceIsAssignableToTarget(args.members[j].type, memberType, comparisonInfo)) { + break; + } + } else { + break; + } + } else { + this.typeCheckWithContextualType(memberType, true, true, args.members[j]); + this.cleanStartedPTO(); + hadProvisionalErrors = this.hadProvisionalErrors(); + if(!this.sourceIsAssignableToTarget(args.members[j].type, memberType, comparisonInfo)) { + if(comparisonInfo) { + comparisonInfo.setMessage("Could not apply type '" + memberType.getTypeName() + "' to argument " + (j + 1) + ", which is of type '" + args.members[j].type.getTypeName() + "'"); + } + miss = true; + } + this.resetProvisionalErrors(); + if(miss) { + break; + } + } + } else { + if(args.members[j].nodeType == TypeScript.NodeType.ObjectLit) { + if(this.typeFlow.objectInterfaceType && memberType == this.typeFlow.objectInterfaceType) { + continue; + } + this.typeCheckWithContextualType(memberType, true, true, args.members[j]); + this.cleanStartedPTO(); + hadProvisionalErrors = this.hadProvisionalErrors(); + if(!this.sourceIsAssignableToTarget(args.members[j].type, memberType, comparisonInfo)) { + if(comparisonInfo) { + comparisonInfo.setMessage("Could not apply type '" + memberType.getTypeName() + "' to argument " + (j + 1) + ", which is of type '" + args.members[j].type.getTypeName() + "'"); + } + miss = true; + } + this.resetProvisionalErrors(); + if(miss) { + break; + } + } else { + if(args.members[j].nodeType == TypeScript.NodeType.ArrayLit) { + if(this.typeFlow.arrayInterfaceType && memberType == this.typeFlow.arrayInterfaceType) { + continue; + } + this.typeCheckWithContextualType(memberType, true, true, args.members[j]); + this.cleanStartedPTO(); + hadProvisionalErrors = this.hadProvisionalErrors(); + if(!this.sourceIsAssignableToTarget(args.members[j].type, memberType, comparisonInfo)) { + if(comparisonInfo) { + comparisonInfo.setMessage("Could not apply type '" + memberType.getTypeName() + "' to argument " + (j + 1) + ", which is of type '" + args.members[j].type.getTypeName() + "'"); + } + break; + } + this.resetProvisionalErrors(); + if(miss) { + break; + } + } + } + } + } + } + if(j == args.members.length) { + applicableSigs[applicableSigs.length] = { + signature: signatures[i], + hadProvisionalErrors: hadProvisionalErrors + }; + } + hadProvisionalErrors = false; + } + return applicableSigs; + }; + TypeChecker.prototype.canContextuallyTypeFunction = function (candidateType, funcDecl, beStringent) { + if(funcDecl.isParenthesized || funcDecl.isMethod() || beStringent && funcDecl.returnTypeAnnotation || funcDecl.isInlineCallLiteral) { + return false; + } + beStringent = beStringent || (this.typeFlow.functionInterfaceType == candidateType); + if(!beStringent) { + return true; + } + if(!funcDecl.signature) { + this.createFunctionSignature(funcDecl, this.typeFlow.scope.container, this.typeFlow.scope, null, null); + this.typeFlow.typeCheck(funcDecl); + } + var signature = funcDecl.signature; + var paramLen = signature.parameters.length; + for(var i = 0; i < paramLen; i++) { + var param = signature.parameters[i]; + var symbol = param; + var argDecl = symbol.declAST; + if(beStringent && argDecl.typeExpr) { + return false; + } + } + if(candidateType.construct && candidateType.call) { + return false; + } + var candidateSigs = candidateType.construct ? candidateType.construct : candidateType.call; + if(!candidateSigs || candidateSigs.signatures.length > 1) { + return false; + } + return true; + }; + TypeChecker.prototype.canContextuallyTypeObjectLiteral = function (targetType, objectLit) { + if(targetType == this.typeFlow.objectInterfaceType) { + return true; + } + var memberDecls = objectLit.operand; + if(!(memberDecls && targetType.memberScope)) { + return false; + } + var id = null; + var targetMember = null; + var text = ""; + var foundSyms = { + }; + for(var i = 0; i < memberDecls.members.length; i++) { + id = (memberDecls.members[i]).operand1; + if(id.nodeType == TypeScript.NodeType.Name) { + text = (id).text; + } else { + if(id.nodeType == TypeScript.NodeType.QString) { + var idText = (id).text; + text = idText.substring(1, idText.length - 1); + } else { + return false; + } + } + targetMember = targetType.memberScope.find(text, true, false); + if(!targetMember) { + return false; + } + foundSyms[text] = true; + } + var targetMembers = targetType.memberScope.getAllValueSymbolNames(true); + for(var i = 0; i < targetMembers.length; i++) { + var memberName = targetMembers[i]; + var memberSym = targetType.memberScope.find(memberName, true, false); + if(!foundSyms[targetMembers[i]] && !TypeScript.hasFlag(memberSym.flags, TypeScript.SymbolFlags.Optional)) { + return false; + } + } + return true; + }; + TypeChecker.prototype.widenType = function (t) { + if(t == this.undefinedType || t == this.nullType) { + return this.anyType; + } + return t; + }; + TypeChecker.prototype.isNullOrUndefinedType = function (t) { + return t == this.undefinedType || t == this.nullType; + }; + TypeChecker.prototype.findBestCommonType = function (initialType, targetType, collection, acceptVoid, comparisonInfo) { + var i = 0; + var len = collection.getLength(); + var nlastChecked = 0; + var bestCommonType = initialType; + if(targetType) { + bestCommonType = bestCommonType ? bestCommonType.mergeOrdered(targetType, this, acceptVoid) : targetType; + } + var convergenceType = bestCommonType; + while(nlastChecked < len) { + for(i = 0; i < len; i++) { + if(i == nlastChecked) { + continue; + } + if(convergenceType && (bestCommonType = convergenceType.mergeOrdered(collection.getTypeAtIndex(i), this, acceptVoid, comparisonInfo))) { + convergenceType = bestCommonType; + } + if(bestCommonType == this.anyType || bestCommonType == null) { + break; + } else { + if(targetType) { + collection.setTypeAtIndex(i, targetType); + } + } + } + if(convergenceType && bestCommonType) { + break; + } + nlastChecked++; + if(nlastChecked < len) { + convergenceType = collection.getTypeAtIndex(nlastChecked); + } + } + return acceptVoid ? bestCommonType : (bestCommonType == this.voidType ? null : bestCommonType); + }; + TypeChecker.prototype.typesAreIdentical = function (t1, t2) { + if(t1 == t2) { + return true; + } + if(!t1 || !t2) { + return false; + } + if(t1.isClass() || t1.isClassInstance()) { + return false; + } + var comboId = (t2.typeID << 16) | t1.typeID; + if(this.identicalCache[comboId]) { + return true; + } + if((t1.typeFlags & TypeScript.TypeFlags.IsEnum) || (t2.typeFlags & TypeScript.TypeFlags.IsEnum)) { + return false; + } + if(t1.isArray() || t2.isArray()) { + if(!(t1.isArray() && t2.isArray())) { + return false; + } + this.identicalCache[comboId] = false; + var ret = this.typesAreIdentical(t1.elementType, t2.elementType); + if(ret) { + this.subtypeCache[comboId] = true; + } else { + this.subtypeCache[comboId] = undefined; + } + return ret; + } + if(t1.primitiveTypeClass != t2.primitiveTypeClass) { + return false; + } + this.identicalCache[comboId] = false; + if(t1.memberScope && t2.memberScope) { + var t1MemberKeys = t1.memberScope.getAllValueSymbolNames(true).sort(); + var t2MemberKeys = t2.memberScope.getAllValueSymbolNames(true).sort(); + if(t1MemberKeys.length != t2MemberKeys.length) { + this.identicalCache[comboId] = undefined; + return false; + } + var t1MemberSymbol = null; + var t2MemberSymbol = null; + var t1MemberType = null; + var t2MemberType = null; + for(var iMember = 0; iMember < t1MemberKeys.length; iMember++) { + if(t1MemberKeys[iMember] != t2MemberKeys[iMember]) { + this.identicalCache[comboId] = undefined; + return false; + } + t1MemberSymbol = t1.memberScope.find(t1MemberKeys[iMember], false, false); + t2MemberSymbol = t2.memberScope.find(t2MemberKeys[iMember], false, false); + if((t1MemberSymbol.flags & TypeScript.SymbolFlags.Optional) != (t2MemberSymbol.flags & TypeScript.SymbolFlags.Optional)) { + this.identicalCache[comboId] = undefined; + return false; + } + t1MemberType = t1MemberSymbol.getType(); + t2MemberType = t2MemberSymbol.getType(); + if(t1MemberType && t2MemberType && (this.identicalCache[(t2MemberType.typeID << 16) | t1MemberType.typeID] != undefined)) { + continue; + } + if(!this.typesAreIdentical(t1MemberType, t2MemberType)) { + this.identicalCache[comboId] = undefined; + return false; + } + } + } else { + if(t1.memberScope || t2.memberScope) { + this.identicalCache[comboId] = undefined; + return false; + } + } + if(!this.signatureGroupsAreIdentical(t1.call, t2.call)) { + this.identicalCache[comboId] = undefined; + return false; + } + if(!this.signatureGroupsAreIdentical(t1.construct, t2.construct)) { + this.identicalCache[comboId] = undefined; + return false; + } + if(!this.signatureGroupsAreIdentical(t1.index, t2.index)) { + this.identicalCache[comboId] = undefined; + return false; + } + this.identicalCache[comboId] = true; + return true; + }; + TypeChecker.prototype.signatureGroupsAreIdentical = function (sg1, sg2) { + if(sg1 == sg2) { + return true; + } + if(!sg1 || !sg2) { + return false; + } + if(sg1.signatures.length != sg2.signatures.length) { + return false; + } + var sig1 = null; + var sig2 = null; + var sigsMatch = false; + for(var iSig1 = 0; iSig1 < sg1.signatures.length; iSig1++) { + sig1 = sg1.signatures[iSig1]; + for(var iSig2 = 0; iSig2 < sg2.signatures.length; iSig2++) { + sig2 = sg2.signatures[iSig2]; + if(this.signaturesAreIdentical(sig1, sig2)) { + sigsMatch = true; + break; + } + } + if(sigsMatch) { + sigsMatch = false; + continue; + } + return false; + } + return true; + }; + TypeChecker.prototype.signaturesAreIdentical = function (s1, s2) { + if(s1.hasVariableArgList != s2.hasVariableArgList) { + return false; + } + if(s1.nonOptionalParameterCount != s2.nonOptionalParameterCount) { + return false; + } + if(s1.parameters.length != s2.parameters.length) { + return false; + } + if(!this.typesAreIdentical(s1.returnType.type, s2.returnType.type)) { + return false; + } + for(var iParam = 0; iParam < s1.parameters.length; iParam++) { + if(!this.typesAreIdentical(s1.parameters[iParam].parameter.typeLink.type, s2.parameters[iParam].parameter.typeLink.type)) { + return false; + } + } + return true; + }; + TypeChecker.prototype.sourceIsSubtypeOfTarget = function (source, target, comparisonInfo) { + return this.sourceIsRelatableToTarget(source, target, false, this.subtypeCache, comparisonInfo); + }; + TypeChecker.prototype.signatureGroupIsSubtypeOfTarget = function (sg1, sg2, comparisonInfo) { + return this.signatureGroupIsRelatableToTarget(sg1, sg2, false, this.subtypeCache, comparisonInfo); + }; + TypeChecker.prototype.signatureIsSubtypeOfTarget = function (s1, s2, comparisonInfo) { + return this.signatureIsRelatableToTarget(s1, s2, false, this.subtypeCache, comparisonInfo); + }; + TypeChecker.prototype.sourceIsAssignableToTarget = function (source, target, comparisonInfo) { + return this.sourceIsRelatableToTarget(source, target, true, this.assignableCache, comparisonInfo); + }; + TypeChecker.prototype.signatureGroupIsAssignableToTarget = function (sg1, sg2, comparisonInfo) { + return this.signatureGroupIsRelatableToTarget(sg1, sg2, true, this.assignableCache, comparisonInfo); + }; + TypeChecker.prototype.signatureIsAssignableToTarget = function (s1, s2, comparisonInfo) { + return this.signatureIsRelatableToTarget(s1, s2, true, this.assignableCache, comparisonInfo); + }; + TypeChecker.prototype.sourceIsRelatableToTarget = function (source, target, assignableTo, comparisonCache, comparisonInfo) { + if(source == target) { + return true; + } + if(!(source && target)) { + return true; + } + var comboId = (source.typeID << 16) | target.typeID; + if(comparisonCache[comboId] != undefined) { + return true; + } + if(assignableTo) { + if(source == this.anyType || target == this.anyType) { + return true; + } + } else { + if(target == this.anyType) { + return true; + } + } + if(source == this.undefinedType) { + return true; + } + if((source == this.nullType) && (target != this.undefinedType && target != this.voidType)) { + return true; + } + if(target == this.numberType && (source.typeFlags & TypeScript.TypeFlags.IsEnum)) { + return true; + } + if(source == this.numberType && (target.typeFlags & TypeScript.TypeFlags.IsEnum)) { + return true; + } + if((source.typeFlags & TypeScript.TypeFlags.IsEnum) || (target.typeFlags & TypeScript.TypeFlags.IsEnum)) { + return false; + } + if(source.isArray() || target.isArray()) { + if(!(source.isArray() && target.isArray())) { + return false; + } + comparisonCache[comboId] = false; + var ret = this.sourceIsRelatableToTarget(source.elementType, target.elementType, assignableTo, comparisonCache, comparisonInfo); + if(ret) { + comparisonCache[comboId] = true; + } else { + comparisonCache[comboId] = undefined; + } + return ret; + } + if(source.primitiveTypeClass != target.primitiveTypeClass) { + if(target.primitiveTypeClass == TypeScript.Primitive.None) { + if(source == this.numberType && this.typeFlow.numberInterfaceType) { + source = this.typeFlow.numberInterfaceType; + } else { + if(source == this.stringType && this.typeFlow.stringInterfaceType) { + source = this.typeFlow.stringInterfaceType; + } else { + if(source == this.booleanType && this.typeFlow.booleanInterfaceType) { + source = this.typeFlow.booleanInterfaceType; + } else { + return false; + } + } + } + } else { + return false; + } + } + comparisonCache[comboId] = false; + if(source.hasBase(target)) { + comparisonCache[comboId] = true; + return true; + } + if(this.typeFlow.objectInterfaceType && target == this.typeFlow.objectInterfaceType) { + return true; + } + if(this.typeFlow.functionInterfaceType && (source.call || source.construct) && target == this.typeFlow.functionInterfaceType) { + return true; + } + if(target.isClass() || target.isClassInstance()) { + comparisonCache[comboId] = undefined; + return false; + } + if(target.memberScope && source.memberScope) { + var mPropKeys = target.memberScope.getAllValueSymbolNames(true); + var mProp = null; + var nProp = null; + var mPropType = null; + var nPropType = null; + var inferenceSymbol = null; + for(var iMProp = 0; iMProp < mPropKeys.length; iMProp++) { + mProp = target.memberScope.find(mPropKeys[iMProp], false, false); + nProp = source.memberScope.find(mPropKeys[iMProp], false, false); + if(mProp.name == "arguments" && this.typeFlow.iargumentsInterfaceType && (this.typeFlow.iargumentsInterfaceType.symbol.flags & TypeScript.SymbolFlags.CompilerGenerated) && mProp.kind() == TypeScript.SymbolKind.Variable && (mProp).variable.typeLink.type == this.typeFlow.iargumentsInterfaceType) { + continue; + } + if(mProp.isInferenceSymbol()) { + inferenceSymbol = mProp; + if(inferenceSymbol.typeCheckStatus == TypeScript.TypeCheckStatus.NotStarted) { + this.typeFlow.typeCheck(mProp.declAST); + } + } + mPropType = mProp.getType(); + if(!nProp) { + if(this.typeFlow.objectInterfaceType) { + nProp = this.typeFlow.objectInterfaceType.memberScope.find(mPropKeys[iMProp], false, false); + } + if(!nProp) { + if(this.typeFlow.functionInterfaceType && (mPropType.call || mPropType.construct)) { + nProp = this.typeFlow.functionInterfaceType.memberScope.find(mPropKeys[iMProp], false, false); + } + if(!nProp) { + if(!(mProp.flags & TypeScript.SymbolFlags.Optional)) { + comparisonCache[comboId] = undefined; + if(comparisonInfo) { + comparisonInfo.flags |= TypeScript.TypeRelationshipFlags.RequiredPropertyIsMissing; + comparisonInfo.addMessageToFront("Type '" + source.getTypeName() + "' is missing property '" + mPropKeys[iMProp] + "' from type '" + target.getTypeName() + "'"); + } + return false; + } else { + continue; + } + } + } + } + if(nProp.isInferenceSymbol()) { + inferenceSymbol = nProp; + if(inferenceSymbol.typeCheckStatus == TypeScript.TypeCheckStatus.NotStarted) { + this.typeFlow.typeCheck(nProp.declAST); + } + } + nPropType = nProp.getType(); + if(mPropType && nPropType && (comparisonCache[(nPropType.typeID << 16) | mPropType.typeID] != undefined)) { + continue; + } + if(!this.sourceIsRelatableToTarget(nPropType, mPropType, assignableTo, comparisonCache, comparisonInfo)) { + comparisonCache[comboId] = undefined; + if(comparisonInfo) { + comparisonInfo.flags |= TypeScript.TypeRelationshipFlags.IncompatiblePropertyTypes; + comparisonInfo.addMessageToFront("Types of property '" + mProp.name + "' of types '" + source.getTypeName() + "' and '" + target.getTypeName() + "' are incompatible"); + } + return false; + } + } + } + if(source.call || target.call) { + if(!this.signatureGroupIsRelatableToTarget(source.call, target.call, assignableTo, comparisonCache, comparisonInfo)) { + if(comparisonInfo) { + if(source.call && target.call) { + comparisonInfo.addMessageToFront("Call signatures of types '" + source.getTypeName() + "' and '" + target.getTypeName() + "' are incompatible"); + } else { + var hasSig = target.call ? target.getTypeName() : source.getTypeName(); + var lacksSig = !target.call ? target.getTypeName() : source.getTypeName(); + comparisonInfo.setMessage("Type '" + hasSig + "' requires a call signature, but Type '" + lacksSig + "' lacks one"); + } + comparisonInfo.flags |= TypeScript.TypeRelationshipFlags.IncompatibleSignatures; + } + comparisonCache[comboId] = undefined; + return false; + } + } + if(source.construct || target.construct) { + if(!this.signatureGroupIsRelatableToTarget(source.construct, target.construct, assignableTo, comparisonCache, comparisonInfo)) { + if(comparisonInfo) { + if(source.construct && target.construct) { + comparisonInfo.addMessageToFront("Construct signatures of types '" + source.getTypeName() + "' and '" + target.getTypeName() + "' are incompatible"); + } else { + var hasSig = target.construct ? target.getTypeName() : source.getTypeName(); + var lacksSig = !target.construct ? target.getTypeName() : source.getTypeName(); + comparisonInfo.setMessage("Type '" + hasSig + "' requires a construct signature, but Type '" + lacksSig + "' lacks one"); + } + comparisonInfo.flags |= TypeScript.TypeRelationshipFlags.IncompatibleSignatures; + } + comparisonCache[comboId] = undefined; + return false; + } + } + if(target.index) { + var targetIndex = !target.index && this.typeFlow.objectInterfaceType ? this.typeFlow.objectInterfaceType.index : target.index; + var sourceIndex = !source.index && this.typeFlow.objectInterfaceType ? this.typeFlow.objectInterfaceType.index : source.index; + if(!this.signatureGroupIsRelatableToTarget(sourceIndex, targetIndex, assignableTo, comparisonCache, comparisonInfo)) { + if(comparisonInfo) { + comparisonInfo.addMessageToFront("Index signatures of types '" + source.getTypeName() + "' and '" + target.getTypeName() + "' are incompatible"); + comparisonInfo.flags |= TypeScript.TypeRelationshipFlags.IncompatibleSignatures; + } + comparisonCache[comboId] = undefined; + return false; + } + } + comparisonCache[comboId] = true; + return true; + }; + TypeChecker.prototype.signatureGroupIsRelatableToTarget = function (sourceSG, targetSG, assignableTo, comparisonCache, comparisonInfo) { + if(sourceSG == targetSG) { + return true; + } + if(!(sourceSG && targetSG)) { + return false; + } + var mSig = null; + var nSig = null; + var foundMatch = false; + for(var iMSig = 0; iMSig < targetSG.signatures.length; iMSig++) { + mSig = targetSG.signatures[iMSig]; + for(var iNSig = 0; iNSig < sourceSG.signatures.length; iNSig++) { + nSig = sourceSG.signatures[iNSig]; + if(this.signatureIsRelatableToTarget(nSig, mSig, assignableTo, comparisonCache, comparisonInfo)) { + foundMatch = true; + break; + } + } + if(foundMatch) { + foundMatch = false; + continue; + } + return false; + } + return true; + }; + TypeChecker.prototype.signatureIsRelatableToTarget = function (sourceSig, targetSig, assignableTo, comparisonCache, comparisonInfo) { + if(!sourceSig.parameters || !targetSig.parameters) { + return false; + } + var targetVarArgCount = targetSig.hasVariableArgList ? targetSig.nonOptionalParameterCount - 1 : targetSig.nonOptionalParameterCount; + var sourceVarArgCount = sourceSig.hasVariableArgList ? sourceSig.nonOptionalParameterCount - 1 : sourceSig.nonOptionalParameterCount; + if(sourceVarArgCount > targetVarArgCount && !targetSig.hasVariableArgList) { + if(comparisonInfo) { + comparisonInfo.flags |= TypeScript.TypeRelationshipFlags.SourceSignatureHasTooManyParameters; + comparisonInfo.addMessageToFront("Call signature expects " + targetVarArgCount + " or fewer parameters"); + } + return false; + } + var sourceReturnType = sourceSig.returnType.type; + var targetReturnType = targetSig.returnType.type; + if(targetReturnType != this.voidType) { + if(!this.sourceIsRelatableToTarget(sourceReturnType, targetReturnType, assignableTo, comparisonCache, comparisonInfo)) { + if(comparisonInfo) { + comparisonInfo.flags |= TypeScript.TypeRelationshipFlags.IncompatibleReturnTypes; + } + return false; + } + } + var len = (sourceVarArgCount < targetVarArgCount && sourceSig.hasVariableArgList) ? targetVarArgCount : sourceVarArgCount; + var sourceParamType = null; + var targetParamType = null; + var sourceParamName = ""; + var targetParamName = ""; + for(var iSource = 0, iTarget = 0; iSource < len; iSource++ , iTarget++) { + if(!sourceSig.hasVariableArgList || iSource < sourceVarArgCount) { + sourceParamType = (sourceSig.parameters[iSource]).parameter.typeLink.type; + sourceParamName = (sourceSig.parameters[iSource]).parameter.symbol.name; + } else { + if(iSource == sourceVarArgCount) { + sourceParamType = (sourceSig.parameters[iSource]).parameter.typeLink.type; + if(sourceParamType.elementType) { + sourceParamType = sourceParamType.elementType; + } + sourceParamName = (sourceSig.parameters[iSource]).parameter.symbol.name; + } + } + if(iTarget < targetSig.parameters.length && iTarget < targetVarArgCount) { + targetParamType = (targetSig.parameters[iTarget]).parameter.typeLink.type; + targetParamName = (targetSig.parameters[iTarget]).parameter.symbol.name; + } else { + if(targetSig.hasVariableArgList && iTarget == targetVarArgCount) { + targetParamType = (targetSig.parameters[iTarget]).parameter.typeLink.type; + if(targetParamType.elementType) { + targetParamType = targetParamType.elementType; + } + targetParamName = (targetSig.parameters[iTarget]).parameter.symbol.name; + } + } + if(!(this.sourceIsRelatableToTarget(sourceParamType, targetParamType, assignableTo, comparisonCache, comparisonInfo) || this.sourceIsRelatableToTarget(targetParamType, sourceParamType, assignableTo, comparisonCache, comparisonInfo))) { + if(comparisonInfo) { + comparisonInfo.flags |= TypeScript.TypeRelationshipFlags.IncompatibleParameterTypes; + } + return false; + } + } + return true; + }; + return TypeChecker; + })(); + TypeScript.TypeChecker = TypeChecker; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + var Continuation = (function () { + function Continuation(normalBlock) { + this.normalBlock = normalBlock; + this.exceptionBlock = -1; + } + return Continuation; + })(); + TypeScript.Continuation = Continuation; + function getBaseTypeLinks(bases, baseTypeLinks) { + if(bases) { + var len = bases.members.length; + if(baseTypeLinks == null) { + baseTypeLinks = new Array(); + } + for(var i = 0; i < len; i++) { + var baseExpr = bases.members[i]; + var name = baseExpr; + var typeLink = new TypeScript.TypeLink(); + typeLink.ast = name; + baseTypeLinks[baseTypeLinks.length] = typeLink; + } + } + return baseTypeLinks; + } + function getBases(type, typeDecl) { + type.extendsTypeLinks = getBaseTypeLinks(typeDecl.extendsList, type.extendsTypeLinks); + type.implementsTypeLinks = getBaseTypeLinks(typeDecl.implementsList, type.implementsTypeLinks); + } + function addPrototypeField(classType, ast, context) { + var field = new TypeScript.ValueLocation(); + field.typeLink = new TypeScript.TypeLink(); + field.typeLink.ast = ast; + field.typeLink.type = classType.instanceType; + var fieldSymbol = new TypeScript.FieldSymbol("prototype", ast.minChar, context.checker.locationInfo.unitIndex, true, field); + fieldSymbol.flags |= (TypeScript.SymbolFlags.Property | TypeScript.SymbolFlags.BuiltIn); + field.symbol = fieldSymbol; + fieldSymbol.declAST = ast; + classType.members.addPublicMember("prototype", fieldSymbol); + } + function createNewConstructGroupForType(type) { + var signature = new TypeScript.Signature(); + signature.returnType = new TypeScript.TypeLink(); + signature.returnType.type = type.instanceType; + signature.parameters = []; + type.construct = new TypeScript.SignatureGroup(); + type.construct.addSignature(signature); + } + TypeScript.createNewConstructGroupForType = createNewConstructGroupForType; + function cloneParentConstructGroupForChildType(child, parent) { + child.construct = new TypeScript.SignatureGroup(); + var sig = null; + if(!parent.construct) { + createNewConstructGroupForType(parent); + } + for(var i = 0; i < parent.construct.signatures.length; i++) { + sig = new TypeScript.Signature(); + sig.parameters = parent.construct.signatures[i].parameters; + sig.nonOptionalParameterCount = parent.construct.signatures[i].nonOptionalParameterCount; + sig.typeCheckStatus = parent.construct.signatures[i].typeCheckStatus; + sig.declAST = parent.construct.signatures[i].declAST; + sig.returnType = new TypeScript.TypeLink(); + sig.returnType.type = child.instanceType; + child.construct.addSignature(sig); + } + } + TypeScript.cloneParentConstructGroupForChildType = cloneParentConstructGroupForChildType; + TypeScript.globalId = "__GLO"; + function findTypeSymbolInScopeChain(name, scopeChain) { + var symbol = scopeChain.scope.find(name, false, true); + if(symbol == null && scopeChain.previous) { + symbol = findTypeSymbolInScopeChain(name, scopeChain.previous); + } + return symbol; + } + function findSymbolFromAlias(alias, context) { + var symbol = null; + switch(alias.nodeType) { + case TypeScript.NodeType.Name: { + var name = (alias).text; + var isDynamic = TypeScript.isQuoted(name); + var findSym = function (id) { + if(context.members) { + return context.members.lookup(name); + } else { + return findTypeSymbolInScopeChain(name, context.topLevelScope); + } + }; + if(isDynamic) { + symbol = context.tcContext.checker.findSymbolForDynamicModule(name, context.tcContext.script.locationInfo.filename, findSym); + } else { + symbol = findSym(name); + } + break; + + } + case TypeScript.NodeType.Dot: { + var dottedExpr = alias; + var op1Sym = findSymbolFromAlias(dottedExpr.operand1, context); + if(op1Sym && op1Sym.getType()) { + symbol = findSymbolFromAlias(dottedExpr.operand2, context); + } + break; + + } + default: { + break; + + } + } + if(symbol) { + var symType = symbol.getType(); + if(symType) { + var members = symType.members; + if(members) { + context.members = members.publicMembers; + } + } + } + return symbol; + } + function preCollectImportTypes(ast, parent, context) { + var scopeChain = context.scopeChain; + var typeSymbol = null; + var modType = null; + var importDecl = ast; + var aliasedModSymbol = findSymbolFromAlias(importDecl.alias, { + topLevelScope: scopeChain, + members: null, + tcContext: context + }); + var isGlobal = context.scopeChain.container == context.checker.gloMod; + if(aliasedModSymbol) { + var aliasedModType = aliasedModSymbol.getType(); + if(aliasedModType) { + modType = aliasedModType; + } + } + typeSymbol = new TypeScript.TypeSymbol(importDecl.id.text, importDecl.id.minChar, importDecl.limChar - importDecl.minChar, context.checker.locationInfo.unitIndex, modType); + typeSymbol.aliasLink = importDecl; + if(context.scopeChain.moduleDecl) { + typeSymbol.flags |= TypeScript.SymbolFlags.ModuleMember; + typeSymbol.declModule = context.scopeChain.moduleDecl; + } + typeSymbol.declAST = importDecl; + importDecl.id.sym = typeSymbol; + scopeChain.scope.enter(scopeChain.container, ast, typeSymbol, context.checker.errorReporter, isGlobal, true, false); + scopeChain.scope.enter(scopeChain.container, ast, typeSymbol, context.checker.errorReporter, isGlobal, false, false); + return true; + } + TypeScript.preCollectImportTypes = preCollectImportTypes; + function preCollectModuleTypes(ast, parent, context) { + var scopeChain = context.scopeChain; + var moduleDecl = ast; + var isAmbient = TypeScript.hasFlag(moduleDecl.modFlags, TypeScript.ModuleFlags.Ambient); + var isEnum = TypeScript.hasFlag(moduleDecl.modFlags, TypeScript.ModuleFlags.IsEnum); + var isGlobal = context.scopeChain.container == context.checker.gloMod; + var isExported = TypeScript.hasFlag(moduleDecl.modFlags, TypeScript.ModuleFlags.Exported); + var modName = (moduleDecl.name).text; + var isDynamic = TypeScript.isQuoted(modName); + var symbol = scopeChain.scope.findLocal(modName, false, false); + var typeSymbol = null; + var modType = null; + if((symbol == null) || (symbol.kind() != TypeScript.SymbolKind.Type)) { + if(modType == null) { + var enclosedTypes = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + var ambientEnclosedTypes = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + modType = new TypeScript.ModuleType(enclosedTypes, ambientEnclosedTypes); + if(isEnum) { + modType.typeFlags |= TypeScript.TypeFlags.IsEnum; + } + modType.members = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + modType.ambientMembers = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + modType.setHasImplementation(); + } + typeSymbol = new TypeScript.TypeSymbol(modName, moduleDecl.name.minChar, modName.length, context.checker.locationInfo.unitIndex, modType); + typeSymbol.isDynamic = TypeScript.isQuoted(moduleDecl.prettyName); + if(context.scopeChain.moduleDecl) { + typeSymbol.declModule = context.scopeChain.moduleDecl; + } + typeSymbol.declAST = moduleDecl; + typeSymbol.prettyName = moduleDecl.prettyName; + scopeChain.scope.enter(scopeChain.container, ast, typeSymbol, context.checker.errorReporter, isExported || isGlobal, true, isAmbient); + scopeChain.scope.enter(scopeChain.container, ast, typeSymbol, context.checker.errorReporter, isExported || isGlobal, false, isAmbient); + modType.symbol = typeSymbol; + } else { + if(symbol && symbol.declAST && symbol.declAST.nodeType != TypeScript.NodeType.ModuleDeclaration) { + context.checker.errorReporter.simpleError(moduleDecl, "Conflicting symbol name for module '" + modName + "'"); + } + typeSymbol = symbol; + var publicEnclosedTypes = typeSymbol.type.getAllEnclosedTypes().publicMembers; + var publicEnclosedTypesTable = (publicEnclosedTypes == null) ? new TypeScript.StringHashTable() : publicEnclosedTypes; + var enclosedTypes = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(publicEnclosedTypesTable, new TypeScript.StringHashTable())); + var publicEnclosedAmbientTypes = typeSymbol.type.getAllAmbientEnclosedTypes().publicMembers; + var publicAmbientEnclosedTypesTable = (publicEnclosedAmbientTypes == null) ? new TypeScript.StringHashTable() : publicEnclosedAmbientTypes; + var ambientEnclosedTypes = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(publicAmbientEnclosedTypesTable, new TypeScript.StringHashTable())); + var publicMembers = typeSymbol.type.members.publicMembers; + var publicMembersTable = (publicMembers == null) ? new TypeScript.StringHashTable() : publicMembers; + var members = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(publicMembersTable, new TypeScript.StringHashTable())); + var publicAmbientMembers = typeSymbol.type.ambientMembers.publicMembers; + var publicAmbientMembersTable = (publicAmbientMembers == null) ? new TypeScript.StringHashTable() : publicAmbientMembers; + var ambientMembers = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(publicAmbientMembersTable, new TypeScript.StringHashTable())); + modType = new TypeScript.ModuleType(enclosedTypes, ambientEnclosedTypes); + if(isEnum) { + modType.typeFlags |= TypeScript.TypeFlags.IsEnum; + } + modType.members = members; + modType.ambientMembers = ambientMembers; + modType.setHasImplementation(); + modType.symbol = typeSymbol; + typeSymbol.addLocation(moduleDecl.minChar); + typeSymbol.expansions.push(modType); + typeSymbol.expansionsDeclAST.push(moduleDecl); + } + if(context.scopeChain.moduleDecl) { + context.scopeChain.moduleDecl.recordNonInterface(); + } + if(isExported) { + typeSymbol.flags |= TypeScript.SymbolFlags.Exported; + } + if((context.scopeChain.moduleDecl) || (context.scopeChain.container == context.checker.gloMod)) { + typeSymbol.flags |= TypeScript.SymbolFlags.ModuleMember; + } + moduleDecl.mod = modType; + TypeScript.pushTypeCollectionScope(typeSymbol, modType.members, modType.ambientMembers, modType.enclosedTypes, modType.ambientEnclosedTypes, context, null, null, moduleDecl); + return true; + } + TypeScript.preCollectModuleTypes = preCollectModuleTypes; + function preCollectClassTypes(ast, parent, context) { + var scopeChain = context.scopeChain; + var classDecl = ast; + var classType; + var instanceType; + var typeSymbol = null; + var className = (classDecl.name).text; + var alreadyInScope = false; + var isAmbient = TypeScript.hasFlag(classDecl.varFlags, TypeScript.VarFlags.Ambient); + var isExported = TypeScript.hasFlag(classDecl.varFlags, TypeScript.VarFlags.Exported); + var isGlobal = context.scopeChain.container == context.checker.gloMod; + var containerMod = scopeChain.container; + var foundValSymbol = false; + typeSymbol = scopeChain.scope.findLocal(className, false, true); + if(!typeSymbol) { + var valTypeSymbol = scopeChain.scope.findLocal(className, false, false); + if(valTypeSymbol && valTypeSymbol.isType() && valTypeSymbol.declAST && valTypeSymbol.declAST.nodeType == TypeScript.NodeType.FuncDecl && (valTypeSymbol.declAST).isSignature()) { + typeSymbol = valTypeSymbol; + foundValSymbol = true; + if(isExported) { + typeSymbol.flags |= TypeScript.SymbolFlags.Exported; + } + if(isAmbient) { + typeSymbol.flags |= TypeScript.SymbolFlags.Ambient; + } + context.scopeChain.scope.enter(context.scopeChain.container, ast, typeSymbol, context.checker.errorReporter, isExported || isGlobal, true, isAmbient); + } + } + if(typeSymbol && !foundValSymbol && (typeSymbol.declAST != classDecl)) { + typeSymbol = null; + } + if(typeSymbol == null) { + var valueSymbol = scopeChain.scope.findLocal(className, false, false); + classType = new TypeScript.Type(); + classType.setHasImplementation(); + instanceType = new TypeScript.Type(); + instanceType.setHasImplementation(); + classType.instanceType = instanceType; + classType.members = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + classType.ambientMembers = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + addPrototypeField(classType, classDecl, context); + instanceType.members = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + instanceType.ambientMembers = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + typeSymbol = new TypeScript.TypeSymbol(className, classDecl.name.minChar, className.length, context.checker.locationInfo.unitIndex, classType); + typeSymbol.declAST = classDecl; + typeSymbol.instanceType = instanceType; + classType.symbol = typeSymbol; + instanceType.symbol = typeSymbol; + if(context.scopeChain.moduleDecl) { + context.scopeChain.moduleDecl.recordNonInterface(); + typeSymbol.declModule = context.scopeChain.moduleDecl; + typeSymbol.flags |= TypeScript.SymbolFlags.ModuleMember; + } + if(isExported) { + typeSymbol.flags |= TypeScript.SymbolFlags.Exported; + } + if(isAmbient) { + typeSymbol.flags |= TypeScript.SymbolFlags.Ambient; + } + ast.type = classType; + context.scopeChain.scope.enter(context.scopeChain.container, ast, typeSymbol, context.checker.errorReporter, isExported || isGlobal, true, isAmbient); + if(valueSymbol == null) { + context.scopeChain.scope.enter(context.scopeChain.container, ast, typeSymbol, context.checker.errorReporter, isExported || isGlobal, false, isAmbient); + } + } else { + classType = typeSymbol.type; + if(classType.instanceType == null) { + classType.instanceType = new TypeScript.Type(); + classType.instanceType.setHasImplementation(); + classType.instanceType.members = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + classType.instanceType.symbol = classType.symbol; + classType.members = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + classType.ambientMembers = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + } + instanceType = classType.instanceType; + ast.type = classType; + } + if(!classDecl.constructorDecl) { + if(typeSymbol && typeSymbol.declAST && typeSymbol.declAST.type && typeSymbol.declAST.type.call && !(typeSymbol.declAST).isOverload) { + context.checker.errorReporter.duplicateIdentifier(typeSymbol.declAST, typeSymbol.name); + } + createNewConstructGroupForType(classDecl.type); + } + classType.typeFlags |= TypeScript.TypeFlags.IsClass; + instanceType.typeFlags |= TypeScript.TypeFlags.IsClass; + getBases(instanceType, classDecl); + TypeScript.pushTypeCollectionScope(typeSymbol, instanceType.members, instanceType.ambientMembers, null, null, context, instanceType, classType, null); + return true; + } + TypeScript.preCollectClassTypes = preCollectClassTypes; + function preCollectInterfaceTypes(ast, parent, context) { + var scopeChain = context.scopeChain; + var interfaceDecl = ast; + var interfaceSymbol = null; + var interfaceType = null; + var isExported = TypeScript.hasFlag(interfaceDecl.varFlags, TypeScript.VarFlags.Exported); + var isGlobal = context.scopeChain.container == context.checker.gloMod; + var alreadyInScope = true; + alreadyInScope = false; + var interfaceName = (interfaceDecl.name).text; + interfaceSymbol = scopeChain.scope.findLocal(interfaceName, false, true); + if(interfaceSymbol == null) { + interfaceType = new TypeScript.Type(); + interfaceSymbol = new TypeScript.TypeSymbol(interfaceName, interfaceDecl.name.minChar, interfaceName.length, context.checker.locationInfo.unitIndex, interfaceType); + interfaceType.symbol = interfaceSymbol; + interfaceType.members = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + interfaceType.ambientMembers = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + interfaceSymbol.declAST = interfaceDecl; + interfaceSymbol.declModule = context.scopeChain.moduleDecl; + } else { + alreadyInScope = true; + interfaceType = interfaceSymbol.type; + } + if(!interfaceType) { + interfaceType = context.checker.anyType; + } + ast.type = interfaceType; + getBases(interfaceType, interfaceDecl); + if(isExported) { + interfaceSymbol.flags |= TypeScript.SymbolFlags.Exported; + } + if(context.scopeChain.moduleDecl) { + interfaceSymbol.flags |= TypeScript.SymbolFlags.ModuleMember; + } + if(!alreadyInScope) { + context.scopeChain.scope.enter(context.scopeChain.container, ast, interfaceSymbol, context.checker.errorReporter, isGlobal || isExported, true, false); + } + TypeScript.pushTypeCollectionScope(interfaceSymbol, interfaceType.members, interfaceType.ambientMembers, null, null, context, interfaceType, null, null); + return true; + } + TypeScript.preCollectInterfaceTypes = preCollectInterfaceTypes; + function preCollectArgDeclTypes(ast, parent, context) { + var scopeChain = context.scopeChain; + var argDecl = ast; + if(TypeScript.hasFlag(argDecl.varFlags, TypeScript.VarFlags.Public | TypeScript.VarFlags.Private)) { + var field = new TypeScript.ValueLocation(); + var isPrivate = TypeScript.hasFlag(argDecl.varFlags, TypeScript.VarFlags.Private); + var fieldSymbol = new TypeScript.FieldSymbol(argDecl.id.text, argDecl.id.minChar, context.checker.locationInfo.unitIndex, !TypeScript.hasFlag(argDecl.varFlags, TypeScript.VarFlags.Readonly), field); + fieldSymbol.transferVarFlags(argDecl.varFlags); + field.symbol = fieldSymbol; + fieldSymbol.declAST = ast; + argDecl.parameterPropertySym = fieldSymbol; + context.scopeChain.scope.enter(context.scopeChain.container, ast, fieldSymbol, context.checker.errorReporter, !isPrivate, false, false); + field.typeLink = TypeScript.getTypeLink(argDecl.typeExpr, context.checker, argDecl.init == null); + argDecl.sym = fieldSymbol; + } + return false; + } + TypeScript.preCollectArgDeclTypes = preCollectArgDeclTypes; + function preCollectVarDeclTypes(ast, parent, context) { + var scopeChain = context.scopeChain; + var varDecl = ast; + var isAmbient = TypeScript.hasFlag(varDecl.varFlags, TypeScript.VarFlags.Ambient); + var isExported = TypeScript.hasFlag(varDecl.varFlags, TypeScript.VarFlags.Exported); + var isGlobal = context.scopeChain.container == context.checker.gloMod; + var isProperty = TypeScript.hasFlag(varDecl.varFlags, TypeScript.VarFlags.Property); + var isStatic = TypeScript.hasFlag(varDecl.varFlags, TypeScript.VarFlags.Static); + var isPrivate = TypeScript.hasFlag(varDecl.varFlags, TypeScript.VarFlags.Private); + var isOptional = TypeScript.hasFlag(varDecl.id.flags, TypeScript.ASTFlags.OptionalName); + if(context.scopeChain.moduleDecl) { + context.scopeChain.moduleDecl.recordNonInterface(); + } + if(isProperty || isExported || (context.scopeChain.container == context.checker.gloMod) || context.scopeChain.moduleDecl) { + if(isAmbient) { + var existingSym = scopeChain.scope.findLocal(varDecl.id.text, false, false); + if(existingSym) { + varDecl.sym = existingSym; + return false; + } + } + if(varDecl.id == null) { + context.checker.errorReporter.simpleError(varDecl, "Expected variable identifier at this location"); + return false; + } + var field = new TypeScript.ValueLocation(); + var fieldSymbol = new TypeScript.FieldSymbol(varDecl.id.text, varDecl.id.minChar, context.checker.locationInfo.unitIndex, (varDecl.varFlags & TypeScript.VarFlags.Readonly) == TypeScript.VarFlags.None, field); + fieldSymbol.transferVarFlags(varDecl.varFlags); + if(isOptional) { + fieldSymbol.flags |= TypeScript.SymbolFlags.Optional; + } + field.symbol = fieldSymbol; + fieldSymbol.declAST = ast; + if((context.scopeChain.moduleDecl) || (context.scopeChain.container == context.checker.gloMod)) { + fieldSymbol.flags |= TypeScript.SymbolFlags.ModuleMember; + fieldSymbol.declModule = context.scopeChain.moduleDecl; + } + if(TypeScript.hasFlag(varDecl.varFlags, TypeScript.VarFlags.Property) && isStatic && context.scopeChain.classType) { + if(!context.scopeChain.classType.members.publicMembers.add(varDecl.id.text, fieldSymbol)) { + context.checker.errorReporter.duplicateIdentifier(ast, fieldSymbol.name); + } + fieldSymbol.container = context.scopeChain.classType.symbol; + } else { + context.scopeChain.scope.enter(context.scopeChain.container, ast, fieldSymbol, context.checker.errorReporter, !isPrivate && (isProperty || isExported || isGlobal || isStatic), false, isAmbient); + } + if(TypeScript.hasFlag(varDecl.varFlags, TypeScript.VarFlags.Exported)) { + fieldSymbol.flags |= TypeScript.SymbolFlags.Exported; + } + field.typeLink = TypeScript.getTypeLink(varDecl.typeExpr, context.checker, varDecl.init == null); + varDecl.sym = fieldSymbol; + } + return false; + } + TypeScript.preCollectVarDeclTypes = preCollectVarDeclTypes; + function preCollectFuncDeclTypes(ast, parent, context) { + var scopeChain = context.scopeChain; + if(context.scopeChain.moduleDecl) { + context.scopeChain.moduleDecl.recordNonInterface(); + } + var funcDecl = ast; + var fgSym = null; + var nameText = funcDecl.getNameText(); + var isExported = TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Exported | TypeScript.FncFlags.ClassPropertyMethodExported); + var isStatic = TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Static); + var isPrivate = TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Private); + var isConstructor = funcDecl.isConstructMember() || funcDecl.isConstructor; + var containerSym = (((funcDecl.isMethod() && isStatic) || funcDecl.isAccessor()) && context.scopeChain.classType ? context.scopeChain.classType.symbol : context.scopeChain.container); + var containerScope = context.scopeChain.scope; + var isGlobal = containerSym == context.checker.gloMod; + var isOptional = funcDecl.name && TypeScript.hasFlag(funcDecl.name.flags, TypeScript.ASTFlags.OptionalName); + var go = false; + var foundSymbol = false; + if(isConstructor && TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.ClassMethod)) { + containerSym = containerSym.container; + containerScope = scopeChain.previous.scope; + } + funcDecl.unitIndex = context.checker.locationInfo.unitIndex; + if(!funcDecl.isConstructor && containerSym && containerSym.declAST && containerSym.declAST.nodeType == TypeScript.NodeType.FuncDecl && (containerSym.declAST).isConstructor && !funcDecl.isMethod()) { + return go; + } + if(TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Signature)) { + var instType = context.scopeChain.thisType; + if(nameText && nameText != "__missing") { + if(isStatic) { + fgSym = containerSym.type.members.allMembers.lookup(nameText); + } else { + fgSym = containerScope.findLocal(nameText, false, false); + if(fgSym == null) { + fgSym = containerScope.findLocal(nameText, false, true); + } + } + if(fgSym) { + foundSymbol = true; + if(!funcDecl.isSignature() && (TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Ambient) != TypeScript.hasFlag(fgSym.flags, TypeScript.SymbolFlags.Ambient))) { + fgSym = null; + } + } + } + if(fgSym == null) { + if(!(funcDecl.isSpecialFn())) { + fgSym = context.checker.createFunctionSignature(funcDecl, containerSym, containerScope, null, !foundSymbol).declAST.type.symbol; + } else { + fgSym = context.checker.createFunctionSignature(funcDecl, containerSym, containerScope, containerSym, false).declAST.type.symbol; + } + if(fgSym.declAST == null || !funcDecl.isSpecialFn()) { + fgSym.declAST = ast; + } + } else { + if((fgSym.kind() == TypeScript.SymbolKind.Type)) { + fgSym = context.checker.createFunctionSignature(funcDecl, containerSym, containerScope, fgSym, false).declAST.type.symbol; + } else { + context.checker.errorReporter.simpleError(funcDecl, "Function or method '" + funcDecl.name.actualText + "' already declared as a property"); + } + } + if(funcDecl.isSpecialFn() && !isStatic) { + funcDecl.type = instType ? instType : fgSym.type; + } else { + funcDecl.type = fgSym.type; + } + } else { + if(nameText) { + if(isStatic) { + fgSym = containerSym.type.members.allMembers.lookup(nameText); + } else { + if(funcDecl.isConstructor && context.scopeChain.previous) { + fgSym = context.scopeChain.previous.scope.findLocal(nameText, false, false); + } + if(fgSym == null) { + fgSym = containerScope.findLocal(nameText, false, false); + } + } + if(fgSym) { + foundSymbol = true; + if(!isConstructor && fgSym.declAST.nodeType == TypeScript.NodeType.FuncDecl && !(fgSym.declAST).isAccessor() && !(fgSym.declAST).isSignature()) { + fgSym = null; + foundSymbol = false; + } + } + } + if(fgSym && !fgSym.isAccessor() && fgSym.type && fgSym.type.construct && fgSym.type.construct.signatures != [] && (fgSym.type.construct.signatures[0].declAST == null || !TypeScript.hasFlag(fgSym.type.construct.signatures[0].declAST.fncFlags, TypeScript.FncFlags.Ambient)) && !funcDecl.isConstructor) { + context.checker.errorReporter.simpleError(funcDecl, "Functions may not have class overloads"); + } + if(fgSym && !(fgSym.kind() == TypeScript.SymbolKind.Type) && funcDecl.isMethod() && !funcDecl.isAccessor() && !funcDecl.isConstructor) { + context.checker.errorReporter.simpleError(funcDecl, "Function or method '" + funcDecl.name.actualText + "' already declared as a property"); + fgSym.type = context.checker.anyType; + } + var sig = context.checker.createFunctionSignature(funcDecl, containerSym, containerScope, fgSym, !foundSymbol); + if(((!fgSym || fgSym.declAST.nodeType != TypeScript.NodeType.FuncDecl) && funcDecl.isAccessor()) || (fgSym && fgSym.isAccessor())) { + funcDecl.accessorSymbol = context.checker.createAccessorSymbol(funcDecl, fgSym, containerSym.type, (funcDecl.isMethod() && isStatic), true, containerScope, containerSym); + } + funcDecl.type.symbol.declAST = ast; + if(funcDecl.isConstructor) { + go = true; + } + ; ; + } + if(isExported) { + if(funcDecl.type.call) { + funcDecl.type.symbol.flags |= TypeScript.SymbolFlags.Exported; + } + if(fgSym && !fgSym.isAccessor() && fgSym.kind() == TypeScript.SymbolKind.Type && fgSym.type.call) { + fgSym.flags |= TypeScript.SymbolFlags.Exported; + } + } + if(context.scopeChain.moduleDecl && !funcDecl.isSpecialFn()) { + funcDecl.type.symbol.flags |= TypeScript.SymbolFlags.ModuleMember; + funcDecl.type.symbol.declModule = context.scopeChain.moduleDecl; + } + if(fgSym && isOptional) { + fgSym.flags |= TypeScript.SymbolFlags.Optional; + } + return go; + } + TypeScript.preCollectFuncDeclTypes = preCollectFuncDeclTypes; + function preCollectTypes(ast, parent, walker) { + var context = walker.state; + var go = false; + var scopeChain = context.scopeChain; + if(ast.nodeType == TypeScript.NodeType.Script) { + var script = ast; + context.script = script; + go = true; + } else { + if(ast.nodeType == TypeScript.NodeType.List) { + go = true; + } else { + if(ast.nodeType == TypeScript.NodeType.ImportDeclaration) { + go = preCollectImportTypes(ast, parent, context); + } else { + if(ast.nodeType == TypeScript.NodeType.With) { + go = false; + } else { + if(ast.nodeType == TypeScript.NodeType.ModuleDeclaration) { + go = preCollectModuleTypes(ast, parent, context); + } else { + if(ast.nodeType == TypeScript.NodeType.ClassDeclaration) { + go = preCollectClassTypes(ast, parent, context); + } else { + if(ast.nodeType == TypeScript.NodeType.Block) { + go = true; + } else { + if(ast.nodeType == TypeScript.NodeType.InterfaceDeclaration) { + go = preCollectInterfaceTypes(ast, parent, context); + } else { + if(ast.nodeType == TypeScript.NodeType.ArgDecl) { + go = preCollectArgDeclTypes(ast, parent, context); + } else { + if(ast.nodeType == TypeScript.NodeType.VarDecl) { + go = preCollectVarDeclTypes(ast, parent, context); + } else { + if(ast.nodeType == TypeScript.NodeType.FuncDecl) { + go = preCollectFuncDeclTypes(ast, parent, context); + } else { + if(ast.isStatementOrExpression() && context.scopeChain.moduleDecl) { + context.scopeChain.moduleDecl.recordNonInterface(); + } + } + } + } + } + } + } + } + } + } + } + } + walker.options.goChildren = go; + return ast; + } + TypeScript.preCollectTypes = preCollectTypes; + function postCollectTypes(ast, parent, walker) { + var context = walker.state; + if(ast.nodeType == TypeScript.NodeType.ModuleDeclaration) { + TypeScript.popTypeCollectionScope(context); + } else { + if(ast.nodeType == TypeScript.NodeType.ClassDeclaration) { + TypeScript.popTypeCollectionScope(context); + } else { + if(ast.nodeType == TypeScript.NodeType.InterfaceDeclaration) { + TypeScript.popTypeCollectionScope(context); + } + } + } + return ast; + } + TypeScript.postCollectTypes = postCollectTypes; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + var ScopeChain = (function () { + function ScopeChain(container, previous, scope) { + this.container = container; + this.previous = previous; + this.scope = scope; + } + return ScopeChain; + })(); + TypeScript.ScopeChain = ScopeChain; + var BBUseDefInfo = (function () { + function BBUseDefInfo(bb) { + this.bb = bb; + this.defsBySymbol = new Array(); + this.useIndexBySymbol = new Array(); + } + BBUseDefInfo.prototype.updateTop = function () { + var temp = new BitVector(this.top.bitCount); + for(var i = 0, succLen = this.bb.successors.length; i < succLen; i++) { + var succ = this.bb.successors[i]; + if(succ.useDef) { + temp.union(succ.useDef.top); + } + } + temp.difference(this.kill); + temp.union(this.gen); + var changed = temp.notEq(this.top); + this.top = temp; + return changed; + }; + BBUseDefInfo.prototype.initialize = function (useDefContext) { + var _this = this; + var defSym = function (sym, context) { + if(context.isLocalSym(sym)) { + var index = context.getSymbolIndex(sym); + _this.useIndexBySymbol[index] = new Array(); + _this.defsBySymbol[index] = true; + } + }; + var useSym = function (sym, context, ast) { + if(context.isLocalSym(sym)) { + var symIndex = context.getSymbolIndex(sym); + if(_this.useIndexBySymbol[symIndex] == undefined) { + _this.useIndexBySymbol[symIndex] = new Array(); + } + var symUses = _this.useIndexBySymbol[symIndex]; + var astIndex = context.getUseIndex(ast); + context.addUse(symIndex, astIndex); + symUses.push(astIndex); + } + }; + function initUseDefPre(cur, parent, walker) { + var context = walker.state; + if(cur == null) { + cur = null; + } + if(cur.nodeType == TypeScript.NodeType.VarDecl) { + var varDecl = cur; + if(varDecl.init || TypeScript.hasFlag(varDecl.varFlags, TypeScript.VarFlags.AutoInit)) { + defSym(varDecl.sym, context); + } + } else { + if(cur.nodeType == TypeScript.NodeType.Name) { + if(parent) { + if(parent.nodeType == TypeScript.NodeType.Asg) { + var asg = parent; + if(asg.operand1 == cur) { + return cur; + } + } else { + if(parent.nodeType == TypeScript.NodeType.VarDecl) { + var parentDecl = parent; + if(parentDecl.id == cur) { + return cur; + } + } + } + } + var id = cur; + useSym(id.sym, context, cur); + } else { + if((cur.nodeType >= TypeScript.NodeType.Asg) && (cur.nodeType <= TypeScript.NodeType.LastAsg)) { + var asg = cur; + if(asg.operand1 && (asg.operand1.nodeType == TypeScript.NodeType.Name)) { + var id = asg.operand1; + defSym(id.sym, context); + } + } else { + if(cur.nodeType == TypeScript.NodeType.FuncDecl) { + walker.options.goChildren = false; + } + } + } + } + return cur; + } + var options = new TypeScript.AstWalkOptions(); + options.reverseSiblings = true; + TypeScript.getAstWalkerFactory().walk(this.bb.content, initUseDefPre, null, options, useDefContext); + }; + BBUseDefInfo.prototype.initializeGen = function (useDefContext) { + var symbolLen = this.useIndexBySymbol.length; + var bitCount = useDefContext.uses.length; + this.gen = new BitVector(bitCount); + for(var s = 0; s < symbolLen; s++) { + var symUses = this.useIndexBySymbol[s]; + if((symUses != undefined) && (symUses.length > 0)) { + for(var u = 0, uLen = symUses.length; u < uLen; u++) { + this.gen.set(symUses[u], true); + } + } + } + this.top = this.gen; + }; + BBUseDefInfo.prototype.initializeKill = function (useDefContext) { + this.kill = new BitVector(this.gen.bitCount); + for(var s = 0, symbolLen = this.defsBySymbol.length; s < symbolLen; s++) { + if(this.defsBySymbol[s]) { + var globalSymUses = useDefContext.useIndexBySymbol[s]; + if(globalSymUses) { + for(var u = 0, useLen = globalSymUses.length; u < useLen; u++) { + this.kill.set(globalSymUses[u], true); + } + } + } + } + }; + return BBUseDefInfo; + })(); + TypeScript.BBUseDefInfo = BBUseDefInfo; + var UseDefContext = (function () { + function UseDefContext() { + this.useIndexBySymbol = new Array(); + this.uses = new Array(); + this.symbols = new Array(); + this.symbolMap = new TypeScript.StringHashTable(); + this.symbolCount = 0; + } + UseDefContext.prototype.getSymbolIndex = function (sym) { + var name = sym.name; + var index = (this.symbolMap.lookup(name)); + if(index == null) { + index = this.symbolCount++; + this.symbols[index] = sym; + this.symbolMap.add(name, index); + } + return index; + }; + UseDefContext.prototype.addUse = function (symIndex, astIndex) { + var useBySym = this.useIndexBySymbol[symIndex]; + if(useBySym == undefined) { + useBySym = new Array(); + this.useIndexBySymbol[symIndex] = useBySym; + } + useBySym[useBySym.length] = astIndex; + }; + UseDefContext.prototype.getUseIndex = function (ast) { + this.uses[this.uses.length] = ast; + return this.uses.length - 1; + }; + UseDefContext.prototype.isLocalSym = function (sym) { + return (sym && (sym.container == this.func) && (sym.kind() == TypeScript.SymbolKind.Variable)); + }; + UseDefContext.prototype.killSymbol = function (sym, bbUses) { + var index = this.symbolMap.lookup(sym.name); + var usesOfSym = this.useIndexBySymbol[index]; + for(var k = 0, len = usesOfSym.length; k < len; k++) { + bbUses.set(usesOfSym[k], true); + } + }; + return UseDefContext; + })(); + TypeScript.UseDefContext = UseDefContext; + var BitVector = (function () { + function BitVector(bitCount) { + this.bitCount = bitCount; + this.firstBits = 0; + this.restOfBits = null; + if(this.bitCount > BitVector.packBits) { + this.restOfBits = new Array(); + var len = Math.floor(this.bitCount / BitVector.packBits); + for(var i = 0; i < len; i++) { + this.restOfBits[i] = 0; + } + } + } + BitVector.packBits = 30; + BitVector.prototype.set = function (bitIndex, value) { + if(bitIndex < BitVector.packBits) { + if(value) { + this.firstBits |= (1 << bitIndex); + } else { + this.firstBits &= (~(1 << bitIndex)); + } + } else { + var offset = Math.floor(bitIndex / BitVector.packBits) - 1; + var localIndex = bitIndex % BitVector.packBits; + if(value) { + this.restOfBits[offset] |= (1 << localIndex); + } else { + this.restOfBits[offset] &= (~(1 << localIndex)); + } + } + }; + BitVector.prototype.map = function (fn) { + var k; + for(k = 0; k < BitVector.packBits; k++) { + if(k == this.bitCount) { + return; + } + if(((1 << k) & this.firstBits) != 0) { + fn(k); + } + } + if(this.restOfBits) { + var len; + var cumu = BitVector.packBits; + for(k = 0 , len = this.restOfBits.length; k < len; k++) { + var myBits = this.restOfBits[k]; + for(var j = 0; j < BitVector.packBits; j++) { + if(((1 << j) & myBits) != 0) { + fn(cumu); + } + cumu++; + if(cumu == this.bitCount) { + return; + } + } + } + } + }; + BitVector.prototype.union = function (b) { + this.firstBits |= b.firstBits; + if(this.restOfBits) { + for(var k = 0, len = this.restOfBits.length; k < len; k++) { + var myBits = this.restOfBits[k]; + var bBits = b.restOfBits[k]; + this.restOfBits[k] = myBits | bBits; + } + } + }; + BitVector.prototype.intersection = function (b) { + this.firstBits &= b.firstBits; + if(this.restOfBits) { + for(var k = 0, len = this.restOfBits.length; k < len; k++) { + var myBits = this.restOfBits[k]; + var bBits = b.restOfBits[k]; + this.restOfBits[k] = myBits & bBits; + } + } + }; + BitVector.prototype.notEq = function (b) { + if(this.firstBits != b.firstBits) { + return true; + } + if(this.restOfBits) { + for(var k = 0, len = this.restOfBits.length; k < len; k++) { + var myBits = this.restOfBits[k]; + var bBits = b.restOfBits[k]; + if(myBits != bBits) { + return true; + } + } + } + return false; + }; + BitVector.prototype.difference = function (b) { + var oldFirstBits = this.firstBits; + this.firstBits &= (~b.firstBits); + if(this.restOfBits) { + for(var k = 0, len = this.restOfBits.length; k < len; k++) { + var myBits = this.restOfBits[k]; + var bBits = b.restOfBits[k]; + this.restOfBits[k] &= (~bBits); + } + } + }; + return BitVector; + })(); + TypeScript.BitVector = BitVector; + var BasicBlock = (function () { + function BasicBlock() { + this.predecessors = new Array(); + this.index = -1; + this.markValue = 0; + this.successors = new Array(); + this.useDef = null; + this.content = new TypeScript.ASTList(); + } + BasicBlock.prototype.marked = function (markBase) { + return this.markValue > markBase; + }; + BasicBlock.prototype.mark = function () { + this.markValue++; + }; + BasicBlock.prototype.addSuccessor = function (successor) { + this.successors[this.successors.length] = successor; + successor.predecessors[successor.predecessors.length] = this; + }; + return BasicBlock; + })(); + TypeScript.BasicBlock = BasicBlock; + var ControlFlowContext = (function () { + function ControlFlowContext(current, exit) { + this.current = current; + this.exit = exit; + this.entry = null; + this.unreachable = null; + this.noContinuation = false; + this.statementStack = new Array(); + this.currentSwitch = new Array(); + this.markBase = 0; + this.linearBBs = new Array(); + this.entry = this.current; + } + ControlFlowContext.prototype.walk = function (ast, parent) { + return this.walker.walk(ast, parent); + }; + ControlFlowContext.prototype.pushSwitch = function (bb) { + this.currentSwitch.push(bb); + }; + ControlFlowContext.prototype.popSwitch = function () { + return this.currentSwitch.pop(); + }; + ControlFlowContext.prototype.reportUnreachable = function (er) { + if(this.unreachable && (this.unreachable.length > 0)) { + var len = this.unreachable.length; + for(var i = 0; i < len; i++) { + var unreachableAST = this.unreachable[i]; + if(unreachableAST.nodeType != TypeScript.NodeType.EndCode) { + er.simpleError(unreachableAST, "unreachable code"); + } + } + } + }; + ControlFlowContext.prototype.printAST = function (ast, outfile) { + var printContext = new TypeScript.PrintContext(outfile, null); + printContext.increaseIndent(); + TypeScript.getAstWalkerFactory().walk(ast, TypeScript.prePrintAST, TypeScript.postPrintAST, null, printContext); + printContext.decreaseIndent(); + }; + ControlFlowContext.prototype.printBlockContent = function (bb, outfile) { + var content = bb.content; + for(var i = 0, len = content.members.length; i < len; i++) { + var ast = content.members[i]; + this.printAST(ast, outfile); + } + }; + ControlFlowContext.prototype.bfs = function (nodeFunc, edgeFunc, preEdges, postEdges) { + var markValue = this.markBase++; + var q = new Array(); + q[q.length] = this.entry; + while(q.length > 0) { + var bb = q.pop(); + if(!(bb.marked(markValue))) { + bb.mark(); + if(nodeFunc) { + nodeFunc(bb); + } + var succLen = bb.successors.length; + if(succLen > 0) { + if(preEdges) { + preEdges(); + } + for(var j = succLen - 1; j >= 0; j--) { + var successor = bb.successors[j]; + if(!(successor.marked(this.markBase))) { + if(edgeFunc) { + edgeFunc(bb, successor); + } + q[q.length] = successor; + } + } + if(postEdges) { + postEdges(); + } + } + } + } + }; + ControlFlowContext.prototype.useDef = function (er, funcSym) { + var _this = this; + var useDefContext = new UseDefContext(); + useDefContext.func = funcSym; + var useDefInit = function (bb) { + bb.useDef = new BBUseDefInfo(bb); + bb.useDef.initialize(useDefContext); + _this.linearBBs[_this.linearBBs.length] = bb; + }; + this.bfs(useDefInit, null, null, null); + var i, bbLen; + for(i = 0 , bbLen = this.linearBBs.length; i < bbLen; i++) { + this.linearBBs[i].useDef.initializeGen(useDefContext); + this.linearBBs[i].useDef.initializeKill(useDefContext); + } + var changed = true; + while(changed) { + changed = false; + for(i = 0; i < bbLen; i++) { + changed = this.linearBBs[i].useDef.updateTop() || changed; + } + } + var top = this.entry.useDef.top; + top.map(function (index) { + var ast = useDefContext.uses[index]; + er.simpleError(ast, "use of variable '" + ast.actualText + "' that is not definitely assigned"); + }); + }; + ControlFlowContext.prototype.print = function (outfile) { + var _this = this; + var index = 0; + var node = function (bb) { + if(bb.index < 0) { + bb.index = index++; + } + if(bb == _this.exit) { + outfile.WriteLine("Exit block with index " + bb.index); + } else { + outfile.WriteLine("Basic block with index " + bb.index); + _this.printBlockContent(bb, outfile); + } + }; + function preEdges() { + outfile.Write(" Branches to "); + } + function postEdges() { + outfile.WriteLine(""); + } + function edge(node1, node2) { + if(node2.index < 0) { + node2.index = index++; + } + outfile.Write(node2.index + " "); + } + this.bfs(node, edge, preEdges, postEdges); + if(this.unreachable != null) { + for(var i = 0, len = this.unreachable.length; i < len; i++) { + outfile.WriteLine("Unreachable basic block ..."); + this.printAST(this.unreachable[i], outfile); + } + } + }; + ControlFlowContext.prototype.pushStatement = function (stmt, continueBB, breakBB) { + this.statementStack.push({ + stmt: stmt, + continueBB: continueBB, + breakBB: breakBB + }); + }; + ControlFlowContext.prototype.popStatement = function () { + return this.statementStack.pop(); + }; + ControlFlowContext.prototype.returnStmt = function () { + this.current.addSuccessor(this.exit); + this.setUnreachable(); + }; + ControlFlowContext.prototype.setUnreachable = function () { + this.current = null; + this.noContinuation = true; + }; + ControlFlowContext.prototype.addUnreachable = function (ast) { + if(this.unreachable === null) { + this.unreachable = new Array(); + } + this.unreachable[this.unreachable.length] = ast; + }; + ControlFlowContext.prototype.unconditionalBranch = function (target, isContinue) { + var targetBB = null; + for(var i = 0, len = this.statementStack.length; i < len; i++) { + var targetInfo = this.statementStack[i]; + if(targetInfo.stmt == target) { + if(isContinue) { + targetBB = targetInfo.continueBB; + } else { + targetBB = targetInfo.breakBB; + } + break; + } + } + if(targetBB) { + this.current.addSuccessor(targetBB); + } + this.setUnreachable(); + }; + ControlFlowContext.prototype.addContent = function (ast) { + if(this.current) { + this.current.content.append(ast); + } + }; + return ControlFlowContext; + })(); + TypeScript.ControlFlowContext = ControlFlowContext; + var ResolutionDataCache = (function () { + function ResolutionDataCache() { + this.cacheSize = 16; + this.rdCache = []; + this.nextUp = 0; + for(var i = 0; i < this.cacheSize; i++) { + this.rdCache[i] = { + actuals: new Array(), + exactCandidates: new Array(), + conversionCandidates: new Array(), + id: i + }; + } + } + ResolutionDataCache.prototype.getResolutionData = function () { + var rd = null; + if(this.nextUp < this.cacheSize) { + rd = this.rdCache[this.nextUp]; + } + if(rd == null) { + this.cacheSize++; + rd = { + actuals: new Array(), + exactCandidates: new Array(), + conversionCandidates: new Array(), + id: this.cacheSize + }; + this.rdCache[this.cacheSize] = rd; + } + this.nextUp++; + return rd; + }; + ResolutionDataCache.prototype.returnResolutionData = function (rd) { + rd.actuals.length = 0; + rd.exactCandidates.length = 0; + rd.conversionCandidates.length = 0; + this.nextUp = rd.id; + }; + return ResolutionDataCache; + })(); + TypeScript.ResolutionDataCache = ResolutionDataCache; + var TypeFlow = (function () { + function TypeFlow(logger, initScope, parser, checker) { + this.logger = logger; + this.initScope = initScope; + this.parser = parser; + this.checker = checker; + this.thisFnc = null; + this.thisClassNode = null; + this.enclosingFncIsMethod = false; + this.arrayInterfaceType = null; + this.stringInterfaceType = null; + this.objectInterfaceType = null; + this.functionInterfaceType = null; + this.numberInterfaceType = null; + this.booleanInterfaceType = null; + this.iargumentsInterfaceType = null; + this.currentScript = null; + this.inImportTypeCheck = false; + this.inTypeRefTypeCheck = false; + this.inArrayElementTypeCheck = false; + this.resolutionDataCache = new ResolutionDataCache(); + this.nestingLevel = 0; + this.inSuperCall = false; + this.checker.typeFlow = this; + this.scope = this.initScope; + this.globalScope = this.initScope; + this.doubleType = this.checker.numberType; + this.booleanType = this.checker.booleanType; + this.stringType = this.checker.stringType; + this.anyType = this.checker.anyType; + this.regexType = this.anyType; + this.nullType = this.checker.nullType; + this.voidType = this.checker.voidType; + this.arrayAnyType = this.checker.makeArrayType(this.anyType); + } + TypeFlow.prototype.initLibs = function () { + var arraySym = this.globalScope.find("Array", false, true); + if(arraySym && (arraySym.kind() == TypeScript.SymbolKind.Type)) { + this.arrayInterfaceType = (arraySym).type; + } + var stringSym = this.globalScope.find("String", false, true); + if(stringSym && (stringSym.kind() == TypeScript.SymbolKind.Type)) { + this.stringInterfaceType = (stringSym).type; + } + var objectSym = this.globalScope.find("Object", false, true); + if(objectSym && (objectSym.kind() == TypeScript.SymbolKind.Type)) { + this.objectInterfaceType = (objectSym).type; + } + var fnSym = this.globalScope.find("Function", false, true); + if(fnSym && (fnSym.kind() == TypeScript.SymbolKind.Type)) { + this.functionInterfaceType = (fnSym).type; + } + var numberSym = this.globalScope.find("Number", false, true); + if(numberSym && (numberSym.kind() == TypeScript.SymbolKind.Type)) { + this.numberInterfaceType = (numberSym).type; + } + var booleanSym = this.globalScope.find("Boolean", false, true); + if(booleanSym && (booleanSym.kind() == TypeScript.SymbolKind.Type)) { + this.booleanInterfaceType = (booleanSym).type; + } + var regexSym = this.globalScope.find("RegExp", false, true); + if(regexSym && (regexSym.kind() == TypeScript.SymbolKind.Type)) { + this.regexType = (regexSym).type; + } + }; + TypeFlow.prototype.cast = function (ast, type) { + return this.castWithCoercion(ast, type, true, false); + }; + TypeFlow.prototype.castWithCoercion = function (ast, type, applyCoercion, typeAssertion) { + var comparisonInfo = new TypeScript.TypeComparisonInfo(); + if(this.checker.sourceIsAssignableToTarget(ast.type, type, comparisonInfo) || (typeAssertion && this.checker.sourceIsAssignableToTarget(type, ast.type, comparisonInfo))) { + if(applyCoercion) { + if(type == null) { + ast.type = this.anyType; + } else { + if(type.isClass()) { + ast.type = type.instanceType; + } else { + ast.type = type; + } + } + } + return ast; + } else { + this.checker.errorReporter.incompatibleTypes(ast, ast.type, type, null, this.scope, comparisonInfo); + return ast; + } + }; + TypeFlow.prototype.inScopeTypeCheck = function (ast, enclosingScope) { + var prevScope = this.scope; + this.scope = enclosingScope; + var svThisFnc = this.thisFnc; + var svThisType = this.thisType; + var svThisClassNode = this.thisClassNode; + var svCurrentModDecl = this.checker.currentModDecl; + var prevMethodStatus = this.enclosingFncIsMethod; + var container = this.scope.container; + var fnc = null; + while(container) { + if(container.kind() == TypeScript.SymbolKind.Type) { + var typeSym = container; + var type = typeSym.type; + if(type.call) { + if(fnc == null) { + this.enclosingFncIsMethod = typeSym.isMethod; + fnc = container.declAST; + } + } + if(type.isClass()) { + this.thisType = type.instanceType; + if(typeSym.declAST && (typeSym.declAST.nodeType == TypeScript.NodeType.ClassDeclaration)) { + this.thisClassNode = typeSym.declAST; + } + break; + } + if(type.isModuleType()) { + this.checker.currentModDecl = typeSym.declAST; + break; + } + } + container = container.container; + } + this.thisFnc = fnc; + var updated = this.typeCheck(ast); + this.thisFnc = svThisFnc; + this.thisType = svThisType; + this.thisClassNode = svThisClassNode; + this.checker.currentModDecl = svCurrentModDecl; + this.enclosingFncIsMethod = prevMethodStatus; + this.scope = prevScope; + return updated; + }; + TypeFlow.prototype.typeCheck = function (ast) { + if(ast) { + return ast.typeCheck(this); + } else { + return null; + } + }; + TypeFlow.prototype.inScopeTypeCheckDecl = function (ast) { + if(ast.nodeType == TypeScript.NodeType.VarDecl || ast.nodeType == TypeScript.NodeType.ArgDecl) { + this.inScopeTypeCheckBoundDecl(ast); + } else { + if(ast.nodeType == TypeScript.NodeType.FuncDecl) { + var funcDecl = ast; + if(funcDecl.isAccessor()) { + this.typeCheckFunction(funcDecl); + } + } + } + }; + TypeFlow.prototype.inScopeTypeCheckBoundDecl = function (varDecl) { + var sym = varDecl.sym; + var svThisFnc = this.thisFnc; + var svThisType = this.thisType; + var prevMethodStatus = this.enclosingFncIsMethod; + var prevLocationInfo = this.checker.locationInfo; + if(sym && sym.container) { + var instanceScope = TypeScript.hasFlag(varDecl.varFlags, TypeScript.VarFlags.ClassConstructorProperty) ? sym.container.getType().constructorScope : sym.container.instanceScope(); + if(TypeScript.hasFlag(varDecl.varFlags, TypeScript.VarFlags.Property) && sym.container.declAST.nodeType == TypeScript.NodeType.FuncDecl) { + this.thisFnc = sym.container.declAST; + } + if(instanceScope) { + var prevScope = this.scope; + this.scope = instanceScope; + var container = sym.container; + if(this.checker.units && (sym.unitIndex >= 0) && (sym.unitIndex < this.checker.units.length)) { + this.checker.locationInfo = this.checker.units[sym.unitIndex]; + } else { + this.checker.locationInfo = TypeScript.unknownLocationInfo; + } + while(container) { + if(container.kind() == TypeScript.SymbolKind.Type) { + var typeSym = container; + var type = typeSym.type; + if(type.call) { + this.enclosingFncIsMethod = typeSym.isMethod; + } + if(type.isClass()) { + this.thisType = type.instanceType; + break; + } + } + container = container.container; + } + this.typeCheckBoundDecl(varDecl); + this.scope = prevScope; + } + } + this.thisFnc = svThisFnc; + this.thisType = svThisType; + this.checker.locationInfo = prevLocationInfo; + this.enclosingFncIsMethod = prevMethodStatus; + }; + TypeFlow.prototype.resolveBoundDecl = function (varDecl) { + if(varDecl.typeExpr) { + if(varDecl.typeExpr.type == null || (varDecl.typeExpr.type && varDecl.typeExpr.type == this.anyType && this.scope) || varDecl.typeExpr.type.symbol == null || !this.checker.typeStatusIsFinished(varDecl.typeExpr.type.symbol.typeCheckStatus)) { + this.typeCheck(varDecl.typeExpr); + } + varDecl.type = varDecl.typeExpr.type; + if(varDecl.sym) { + varDecl.sym.setType(varDecl.type); + } + } else { + if(varDecl.init == null) { + if(this.checker.styleSettings.implicitAny) { + this.checker.errorReporter.styleError(varDecl, "type implicitly set to 'any'"); + } + varDecl.type = this.anyType; + if(varDecl.sym) { + if(varDecl.sym.isType()) { + var tsym = varDecl.sym; + if(tsym.isMethod) { + this.checker.errorReporter.simpleError(varDecl, "Cannot bind method group to variable. (Did you mean to use 'declare function' instead of 'declare var'?)"); + return; + } else { + this.checker.errorReporter.simpleError(varDecl, "Cannot bind type to variable"); + return; + } + } + varDecl.sym.setType(varDecl.type); + } + } + } + }; + TypeFlow.prototype.typeCheckBoundDecl = function (varDecl) { + var _this = this; + var infSym = varDecl.sym; + if(infSym == null) { + if(varDecl.init) { + varDecl.init = this.typeCheck(varDecl.init); + varDecl.type = this.checker.widenType(varDecl.init.type); + } else { + if(this.checker.styleSettings.implicitAny) { + this.checker.errorReporter.styleError(varDecl, "type implicitly set to 'any'"); + } + varDecl.type = this.anyType; + } + } else { + if(infSym.typeCheckStatus == TypeScript.TypeCheckStatus.Started) { + if(this.checker.styleSettings.implicitAny) { + this.checker.errorReporter.styleError(varDecl, "type implicitly set to 'any'"); + } + varDecl.type = this.anyType; + infSym.setType(this.anyType); + } else { + if(infSym.typeCheckStatus == TypeScript.TypeCheckStatus.NotStarted) { + infSym.typeCheckStatus = TypeScript.TypeCheckStatus.Started; + this.checker.addStartedPTO(infSym); + var resolved = false; + if(varDecl.type == null) { + if(varDecl.typeExpr) { + this.resolveBoundDecl(varDecl); + resolved = true; + varDecl.type = varDecl.typeExpr.type; + infSym.typeCheckStatus = this.checker.getTypeCheckFinishedStatus(); + } + } + if(varDecl.init) { + var isLocalStatic = TypeScript.hasFlag(varDecl.varFlags, TypeScript.VarFlags.LocalStatic); + var prevScope = this.scope; + var applyTargetType = !varDecl.init.isParenthesized; + if(isLocalStatic) { + this.scope = varDecl.sym.container.getType().memberScope; + } + if(TypeScript.hasFlag(varDecl.varFlags, TypeScript.VarFlags.Property) && this.thisClassNode) { + TypeScript.getAstWalkerFactory().walk(varDecl.init, function (ast, parent, walker) { + if(ast && ast.nodeType == TypeScript.NodeType.FuncDecl) { + if(TypeScript.hasFlag((ast).fncFlags, TypeScript.FncFlags.IsFatArrowFunction)) { + (ast).fncFlags |= TypeScript.FncFlags.IsPropertyBound; + } + walker.options.goChildren = false; + } + return ast; + }); + } + this.checker.typeCheckWithContextualType(varDecl.type, this.checker.inProvisionalTypecheckMode(), applyTargetType, varDecl.init); + this.scope = prevScope; + if(varDecl.type) { + var preserveScope = false; + var preservedContainedScope = null; + if(varDecl.init.type) { + preservedContainedScope = varDecl.init.type.containedScope; + preserveScope = true; + if(varDecl.init.type == this.voidType) { + this.checker.errorReporter.simpleError(varDecl, "Cannot assign type 'void' to variable '" + varDecl.id.actualText + "'"); + } + } + varDecl.init = this.castWithCoercion(varDecl.init, varDecl.type, applyTargetType && !this.checker.inProvisionalTypecheckMode(), false); + if(preserveScope && varDecl.init.type.containedScope == null) { + varDecl.init.type.containedScope = preservedContainedScope; + } + } else { + varDecl.type = this.checker.widenType(varDecl.init.type); + if(varDecl.type == this.voidType) { + this.checker.errorReporter.simpleError(varDecl, "Cannot assign type 'void' to variable '" + varDecl.id.actualText + "'"); + varDecl.type = this.anyType; + } + } + infSym.setType(varDecl.type); + } else { + if(!resolved) { + this.resolveBoundDecl(varDecl); + } + } + infSym.typeCheckStatus = this.checker.getTypeCheckFinishedStatus(); + } else { + if(this.checker.typeStatusIsFinished(infSym.typeCheckStatus) && (infSym.declAST != varDecl)) { + if(varDecl.init) { + varDecl.init = this.typeCheck(varDecl.init); + varDecl.type = infSym.getType(); + varDecl.init = this.cast(varDecl.init, varDecl.type); + } + } + } + } + } + if(varDecl.id && varDecl.sym) { + varDecl.id.sym = varDecl.sym; + } + if(varDecl.sym && varDecl.sym.container) { + this.checkTypePrivacy(varDecl.sym.getType(), varDecl.sym, function (typeName, isModuleName) { + return _this.varPrivacyErrorReporter(varDecl, typeName, isModuleName); + }); + } + return varDecl; + }; + TypeFlow.prototype.varPrivacyErrorReporter = function (varDecl, typeName, isModuleName) { + var typestring = ""; + if(isModuleName) { + var quotestring = ""; + if(!TypeScript.isQuoted(typeName)) { + quotestring = "'"; + } + typestring = " is using inaccessible module " + quotestring + typeName + quotestring; + } else { + typestring = " has or is using private type '" + typeName + "'"; + } + if(TypeScript.hasFlag(varDecl.varFlags, TypeScript.VarFlags.Public)) { + if(varDecl.sym.container.declAST.nodeType == TypeScript.NodeType.InterfaceDeclaration) { + this.checker.errorReporter.simpleError(varDecl, "property '" + varDecl.sym.name + "' of exported interface" + typestring); + } else { + this.checker.errorReporter.simpleError(varDecl, "public member '" + varDecl.sym.name + "' of exported class" + typestring); + } + } else { + this.checker.errorReporter.simpleError(varDecl, "exported variable '" + varDecl.sym.name + "'" + typestring); + } + }; + TypeFlow.prototype.typeCheckSuper = function (ast) { + if(this.thisType && (this.enclosingFncIsMethod && !this.thisFnc.isStatic()) && this.thisType.baseClass()) { + ast.type = this.thisType.baseClass(); + } else { + if(!this.enclosingFncIsMethod && this.thisType && this.thisType.baseClass() && this.thisFnc && TypeScript.hasFlag(this.thisFnc.fncFlags, TypeScript.FncFlags.IsFatArrowFunction)) { + var enclosingFnc = this.thisFnc.enclosingFnc; + while(TypeScript.hasFlag(enclosingFnc.fncFlags, TypeScript.FncFlags.IsFatArrowFunction)) { + enclosingFnc = enclosingFnc.enclosingFnc; + } + if(enclosingFnc && (enclosingFnc.isMethod() || enclosingFnc.isConstructor) && !enclosingFnc.isStatic()) { + ast.type = this.thisType.baseClass(); + enclosingFnc.setHasSuperReferenceInFatArrowFunction(); + return ast; + } + } + ast.type = this.anyType; + this.checker.errorReporter.invalidSuperReference(ast); + } + return ast; + }; + TypeFlow.prototype.typeCheckThis = function (ast) { + ast.type = this.anyType; + var illegalThisRef = false; + if(this.thisFnc == null) { + if(this.thisType) { + if(this.thisClassNode && this.thisClassNode.nodeType == TypeScript.NodeType.ClassDeclaration) { + illegalThisRef = true; + } else { + ast.type = this.thisType; + } + } else { + if(this.checker.currentModDecl) { + this.checker.errorReporter.simpleError(ast, "'this' may not be referenced within module bodies"); + } + } + } else { + if(this.thisClassNode && (TypeScript.hasFlag(this.thisFnc.fncFlags, TypeScript.FncFlags.IsPropertyBound) || (this.inSuperCall && TypeScript.hasFlag((this.thisClassNode).varFlags, TypeScript.VarFlags.ClassSuperMustBeFirstCallInConstructor)))) { + illegalThisRef = true; + } + if(this.thisFnc.isMethod() || this.thisFnc.isConstructor || this.thisFnc.isTargetTypedAsMethod) { + if(this.thisType && !(this.thisFnc.fncFlags & TypeScript.FncFlags.Static)) { + ast.type = this.thisType; + } + } + } + if(!this.enclosingFncIsMethod && this.thisFnc && TypeScript.hasFlag(this.thisFnc.fncFlags, TypeScript.FncFlags.IsFatArrowFunction)) { + if(this.thisFnc.boundToProperty) { + var container = this.thisFnc.boundToProperty.sym.container; + if(container.declAST.nodeType == TypeScript.NodeType.FuncDecl) { + (container.declAST).setHasSelfReference(); + } + } else { + var encFnc = this.thisFnc.enclosingFnc; + var firstEncFnc = encFnc; + while(encFnc) { + if(this.thisClassNode && TypeScript.hasFlag(encFnc.fncFlags, TypeScript.FncFlags.IsPropertyBound)) { + illegalThisRef = true; + } + if(!TypeScript.hasFlag(encFnc.fncFlags, TypeScript.FncFlags.IsFatArrowFunction) || encFnc.hasSelfReference()) { + encFnc.setHasSelfReference(); + break; + } + encFnc = encFnc.enclosingFnc; + } + if(!encFnc && firstEncFnc) { + encFnc = firstEncFnc; + encFnc.setHasSelfReference(); + } else { + if(!encFnc) { + if(this.thisClassNode) { + (this.thisClassNode).varFlags |= TypeScript.VarFlags.MustCaptureThis; + } else { + if(this.checker.currentModDecl) { + this.checker.currentModDecl.modFlags |= TypeScript.ModuleFlags.MustCaptureThis; + } else { + this.checker.mustCaptureGlobalThis = true; + } + } + } + } + if(encFnc && (encFnc.isMethod() || encFnc.isConstructor) && this.thisType && !TypeScript.hasFlag(encFnc.fncFlags, TypeScript.FncFlags.Static)) { + ast.type = this.thisType; + } + } + } + if(illegalThisRef) { + this.checker.errorReporter.simpleError(ast, "Keyword 'this' cannot be referenced in initializers in a class body, or in super constructor calls"); + } + return ast; + }; + TypeFlow.prototype.setTypeFromSymbol = function (ast, symbol) { + if(symbol.isVariable()) { + if(symbol.isInferenceSymbol()) { + var infSym = symbol; + if(infSym.declAST && !this.checker.typeStatusIsFinished(infSym.typeCheckStatus)) { + this.inScopeTypeCheckDecl(infSym.declAST); + } + if(!this.checker.styleSettings.innerScopeDeclEscape) { + if(infSym.declAST && (infSym.declAST.nodeType == TypeScript.NodeType.VarDecl)) { + if(this.nestingLevel < (infSym.declAST).nestingLevel) { + this.checker.errorReporter.styleError(ast, "Illegal reference to a variable defined in more nested scope"); + } + } + } + } + ast.type = symbol.getType(); + if(!symbol.writeable()) { + ast.flags = ast.flags & (~(TypeScript.ASTFlags.Writeable)); + } + } else { + if(symbol.isType()) { + ast.type = symbol.getType(); + ast.flags = ast.flags & (~(TypeScript.ASTFlags.Writeable)); + } else { + ast.type = this.anyType; + this.checker.errorReporter.symbolDoesNotReferToAValue(ast, symbol.name); + } + } + }; + TypeFlow.prototype.typeCheckName = function (ast) { + var _this = this; + var identifier = ast; + if(this.checker.inWith) { + identifier.type = this.anyType; + } else { + var typespace = this.inTypeRefTypeCheck; + var idText = identifier.text; + var originalIdText = idText; + var isDynamicModuleName = TypeScript.isQuoted(identifier.text); + var symbol = this.scope.find(idText, false, typespace); + if(symbol == null && isDynamicModuleName) { + symbol = this.checker.findSymbolForDynamicModule(idText, this.currentScript.locationInfo.filename, function (id) { + return _this.scope.find(id, false, typespace); + }); + } + if(!symbol) { + if(!identifier.isMissing()) { + this.checker.errorReporter.unresolvedSymbol(identifier, identifier.text); + } + identifier.type = this.anyType; + } else { + if(TypeScript.optimizeModuleCodeGen && symbol && symbol.isType()) { + var symType = symbol.getType(); + if(symType && (symbol).aliasLink && (symbol).onlyReferencedAsTypeRef) { + var modDecl = symType.symbol.declAST; + if(modDecl && TypeScript.hasFlag(modDecl.modFlags, TypeScript.ModuleFlags.IsDynamic)) { + (symbol).onlyReferencedAsTypeRef = this.inTypeRefTypeCheck; + } + } + } + if(symbol.declAST && symbol.declAST.nodeType == TypeScript.NodeType.FuncDecl && !(symbol.declAST).returnTypeAnnotation && (symbol.declAST).signature.typeCheckStatus == TypeScript.TypeCheckStatus.Started) { + (symbol.declAST).type.symbol.flags |= TypeScript.SymbolFlags.RecursivelyReferenced; + (symbol.declAST).signature.returnType.type = this.anyType; + } + this.setTypeFromSymbol(ast, symbol); + identifier.sym = symbol; + if(this.thisFnc) { + if(this.thisFnc.type && symbol.container != this.thisFnc.type.symbol) { + this.thisFnc.freeVariables[this.thisFnc.freeVariables.length] = symbol; + } + } + } + } + return ast; + }; + TypeFlow.prototype.typeCheckScript = function (script) { + this.checker.locationInfo = script.locationInfo; + this.scope = this.checker.globalScope; + if(!script.topLevelMod) { + this.addLocalsFromScope(this.scope, this.checker.gloMod, script.vars, this.checker.globals, true); + } + this.currentScript = script; + script.bod = this.typeCheck(script.bod); + this.currentScript = null; + return script; + }; + TypeFlow.prototype.typeCheckBitNot = function (ast) { + var unex = ast; + unex.operand = this.typeCheck(unex.operand); + unex.type = this.doubleType; + return unex; + }; + TypeFlow.prototype.typeCheckUnaryNumberOperator = function (ast) { + var unex = ast; + unex.operand = this.typeCheck(unex.operand); + unex.type = this.doubleType; + return ast; + }; + TypeFlow.prototype.typeCheckLogNot = function (ast) { + var unex = ast; + unex.operand = this.typeCheck(unex.operand); + unex.type = this.booleanType; + return unex; + }; + TypeFlow.prototype.astIsWriteable = function (ast) { + return TypeScript.hasFlag(ast.flags, TypeScript.ASTFlags.Writeable); + }; + TypeFlow.prototype.typeCheckIncOrDec = function (ast) { + var unex = ast; + var lval = unex.operand; + if(!this.astIsWriteable(unex)) { + this.checker.errorReporter.valueCannotBeModified(unex); + unex.type = this.doubleType; + } else { + unex = this.typeCheckUnaryNumberOperator(ast); + if(unex.operand.type != this.checker.numberType && unex.operand.type != this.checker.anyType && !(unex.operand.type.typeFlags & TypeScript.TypeFlags.IsEnum)) { + this.checker.errorReporter.simpleError(ast, "'++' and '--' may only be applied to operands of type 'number' or 'any'"); + } + } + return unex; + }; + TypeFlow.prototype.typeCheckBitwiseOperator = function (ast, assignment) { + var binex = ast; + var resultType = null; + binex.operand1 = this.typeCheck(binex.operand1); + binex.operand2 = this.typeCheck(binex.operand2); + var leftType = binex.operand1.type; + var rightType = binex.operand2.type; + if(assignment && (!this.astIsWriteable(binex))) { + this.checker.errorReporter.valueCannotBeModified(binex); + } + if(this.checker.styleSettings.bitwise) { + this.checker.errorReporter.styleError(ast, "use of " + TypeScript.nodeTypeTable[binex.nodeType]); + } + if(this.checker.sourceIsSubtypeOfTarget(leftType, this.doubleType) && (this.checker.sourceIsSubtypeOfTarget(rightType, this.doubleType))) { + resultType = this.doubleType; + } else { + if((leftType == this.booleanType) && (rightType == this.booleanType)) { + resultType = this.booleanType; + } else { + if(leftType == this.anyType) { + if((rightType == this.anyType) || (rightType == this.doubleType) || (rightType == this.booleanType)) { + resultType = this.anyType; + } + } else { + if(rightType == this.anyType) { + if((leftType == this.anyType) || (leftType == this.doubleType) || (leftType == this.booleanType)) { + resultType = this.anyType; + } + } + } + } + } + if(resultType == null) { + resultType = this.anyType; + this.checker.errorReporter.incompatibleTypes(binex, leftType, rightType, binex.printLabel(), this.scope); + } + binex.type = resultType; + return binex; + }; + TypeFlow.prototype.typeCheckArithmeticOperator = function (ast, assignment) { + var binex = ast; + binex.operand1 = this.typeCheck(binex.operand1); + binex.operand2 = this.typeCheck(binex.operand2); + var leftType = binex.operand1.type; + var rightType = binex.operand2.type; + if(assignment && (!this.astIsWriteable(binex.operand1))) { + this.checker.errorReporter.valueCannotBeModified(binex); + } + if(this.checker.styleSettings.bitwise && ((binex.nodeType == TypeScript.NodeType.And) || (binex.nodeType == TypeScript.NodeType.Or) || (binex.nodeType == TypeScript.NodeType.AsgAnd) || (binex.nodeType == TypeScript.NodeType.AsgOr))) { + this.checker.errorReporter.styleError(ast, "use of " + TypeScript.nodeTypeTable[binex.nodeType]); + } + if(leftType == null || rightType == null) { + this.checker.errorReporter.simpleError(binex, "Could not typecheck arithmetic operation. Possible recursive typecheck error?"); + binex.type = this.anyType; + return binex; + } + var nodeType = binex.nodeType; + if(this.checker.isNullOrUndefinedType(leftType)) { + leftType = rightType; + } + if(this.checker.isNullOrUndefinedType(rightType)) { + rightType = leftType; + } + leftType = this.checker.widenType(leftType); + rightType = this.checker.widenType(rightType); + if(nodeType == TypeScript.NodeType.Add || nodeType == TypeScript.NodeType.AsgAdd) { + if(leftType == this.checker.stringType || rightType == this.checker.stringType) { + binex.type = this.checker.stringType; + } else { + if(leftType == this.checker.numberType && rightType == this.checker.numberType) { + binex.type = this.checker.numberType; + } else { + if(this.checker.sourceIsSubtypeOfTarget(leftType, this.checker.numberType) && this.checker.sourceIsSubtypeOfTarget(rightType, this.checker.numberType)) { + binex.type = this.checker.numberType; + } else { + if(leftType == this.checker.anyType || rightType == this.checker.anyType) { + binex.type = this.checker.anyType; + } else { + binex.type = this.anyType; + this.checker.errorReporter.incompatibleTypes(binex, leftType, rightType, binex.printLabel(), this.scope); + } + } + } + } + } else { + if(leftType == this.checker.numberType && rightType == this.checker.numberType) { + binex.type = this.checker.numberType; + } else { + if(this.checker.sourceIsSubtypeOfTarget(leftType, this.checker.numberType) && this.checker.sourceIsSubtypeOfTarget(rightType, this.checker.numberType)) { + binex.type = this.checker.numberType; + } else { + if(leftType == this.checker.anyType || rightType == this.checker.anyType) { + binex.type = this.checker.numberType; + } else { + binex.type = this.anyType; + this.checker.errorReporter.incompatibleTypes(binex, leftType, rightType, binex.printLabel(), this.scope); + } + } + } + } + return binex; + }; + TypeFlow.prototype.typeCheckDotOperator = function (ast) { + var binex = ast; + var leftIsFnc = false; + binex.operand1 = this.typeCheck(binex.operand1); + var leftType = binex.operand1.type; + var leftScope = null; + if(leftType) { + if(leftType == this.anyType) { + binex.type = this.anyType; + return binex; + } else { + if(leftType == this.stringType) { + if(this.stringInterfaceType) { + leftScope = this.stringInterfaceType.memberScope; + } else { + binex.type = this.anyType; + return binex; + } + } else { + if(leftType == this.doubleType) { + if(this.numberInterfaceType) { + leftScope = this.numberInterfaceType.memberScope; + } else { + binex.type = this.anyType; + return binex; + } + } else { + if(leftType == this.booleanType) { + if(this.booleanInterfaceType) { + leftScope = this.booleanInterfaceType.memberScope; + } else { + binex.type = this.anyType; + return binex; + } + } else { + if((leftType.call || leftType.construct) && leftType.members == null) { + if(this.functionInterfaceType) { + leftScope = this.functionInterfaceType.memberScope; + } else { + binex.type = this.anyType; + return binex; + } + } else { + if(leftType.elementType) { + if(this.arrayInterfaceType) { + var arrInstType = leftType.elementType.getArrayBase(this.arrayInterfaceType, this.checker); + leftScope = arrInstType.memberScope; + } else { + binex.type = this.anyType; + return binex; + } + } else { + leftScope = leftType.memberScope; + } + } + } + } + } + } + } + if(leftScope == null) { + this.checker.errorReporter.expectedClassOrInterface(binex); + binex.type = this.anyType; + } else { + var propertyName = binex.operand2; + var lhsIsEnclosingType = (this.thisClassNode && binex.operand1.type == this.thisClassNode.type.instanceType) || this.inTypeRefTypeCheck; + var symbol = leftScope.find(propertyName.text, !lhsIsEnclosingType, this.inTypeRefTypeCheck); + if(!symbol) { + if(this.objectInterfaceType && leftType) { + if(leftType.isReferenceType()) { + symbol = this.objectInterfaceType.memberScope.find(propertyName.text, false, this.inTypeRefTypeCheck); + } + if(!symbol) { + if(this.functionInterfaceType && (leftType.call || leftType.construct)) { + symbol = this.functionInterfaceType.memberScope.find(propertyName.text, false, this.inTypeRefTypeCheck); + } + } + } + } + if(!symbol || (!symbol.visible(leftScope, this.checker))) { + binex.type = this.anyType; + if(symbol == null) { + this.checker.errorReporter.simpleError(propertyName, "The property '" + propertyName.actualText + "' does not exist on value of type '" + leftType.getScopedTypeName(this.scope) + "'"); + } else { + if(!this.inTypeRefTypeCheck) { + this.checker.errorReporter.simpleError(binex, "The property '" + propertyName.actualText + " on type '" + leftType.getScopedTypeName(this.scope) + "' is not visible"); + } + } + } else { + if(symbol.isVariable()) { + if(symbol.isInferenceSymbol()) { + var infSym = symbol; + if(infSym.declAST && !this.checker.typeStatusIsFinished(infSym.typeCheckStatus)) { + this.inScopeTypeCheckDecl(infSym.declAST); + } + } + } + propertyName.sym = symbol; + binex.type = symbol.getType(); + } + } + if(binex.type == null) { + binex.type = this.anyType; + } + return binex; + }; + TypeFlow.prototype.typeCheckBooleanOperator = function (ast) { + var binex = ast; + binex.operand1 = this.typeCheck(binex.operand1); + binex.operand2 = this.typeCheck(binex.operand2); + var leftType = binex.operand1.type; + var rightType = binex.operand2.type; + if((!(this.checker.sourceIsAssignableToTarget(leftType, rightType))) && (!(this.checker.sourceIsAssignableToTarget(rightType, leftType)))) { + this.checker.errorReporter.incompatibleTypes(binex, leftType, rightType, binex.printLabel(), this.scope); + } + binex.type = this.booleanType; + return binex; + }; + TypeFlow.prototype.typeCheckAsgOperator = function (ast) { + var binex = ast; + var applyTargetType = !binex.operand2.isParenthesized; + binex.operand1 = this.typeCheck(binex.operand1); + this.checker.typeCheckWithContextualType(binex.operand1.type, this.checker.inProvisionalTypecheckMode(), applyTargetType, binex.operand2); + var leftType = binex.operand1.type; + var rightType = binex.operand2.type; + if(!(this.astIsWriteable(binex.operand1))) { + this.checker.errorReporter.valueCannotBeModified(binex); + } + if(binex.operand1.nodeType == TypeScript.NodeType.Call) { + var callEx = binex.operand1; + } + var preserveScope = false; + var preservedContainedScope = null; + if(binex.operand2.type) { + preservedContainedScope = binex.operand2.type.containedScope; + preserveScope = true; + } + binex.operand2 = this.castWithCoercion(binex.operand2, leftType, applyTargetType && !this.checker.inProvisionalTypecheckMode(), false); + if(preserveScope && binex.operand2.type.containedScope == null) { + binex.operand2.type.containedScope = preservedContainedScope; + } + binex.type = rightType; + return binex; + }; + TypeFlow.prototype.typeCheckIndex = function (ast) { + var binex = ast; + binex.operand1 = this.typeCheck(binex.operand1); + binex.operand2 = this.typeCheck(binex.operand2); + if(!this.checker.styleSettings.literalSubscript) { + if(binex.operand2.nodeType == TypeScript.NodeType.QString) { + this.checker.errorReporter.styleError(ast, "use literal subscript ('.') notation instead)"); + } + } + var objExprType = binex.operand1.type; + var indexExprType = binex.operand2.type; + if(objExprType.elementType) { + if(indexExprType == this.checker.anyType || indexExprType == this.checker.numberType || TypeScript.hasFlag(indexExprType.typeFlags, TypeScript.TypeFlags.IsEnum)) { + binex.type = objExprType.elementType; + } else { + if(indexExprType == this.checker.stringType) { + binex.type = this.checker.anyType; + } else { + this.checker.errorReporter.simpleError(binex, "Illegal property access"); + binex.type = this.checker.anyType; + } + } + } else { + if(objExprType.index) { + if(indexExprType == this.checker.anyType || !((objExprType.index.flags & TypeScript.SignatureFlags.IsStringIndexer) || (objExprType.index.flags & TypeScript.SignatureFlags.IsNumberIndexer)) || ((objExprType.index.flags & TypeScript.SignatureFlags.IsStringIndexer) && indexExprType == this.checker.stringType) || ((objExprType.index.flags & TypeScript.SignatureFlags.IsNumberIndexer) && (indexExprType == this.checker.numberType || TypeScript.hasFlag(indexExprType.typeFlags, TypeScript.TypeFlags.IsEnum)))) { + var sig = this.resolveOverload(ast, objExprType.index); + if(sig) { + binex.type = sig.returnType.type; + } else { + binex.type = this.checker.anyType; + } + } else { + if(indexExprType == this.checker.stringType) { + binex.type = this.checker.anyType; + } else { + this.checker.errorReporter.simpleError(binex, "Illegal property access"); + binex.type = this.checker.anyType; + } + } + } else { + if((objExprType == this.checker.anyType || objExprType == this.checker.stringType || objExprType == this.checker.numberType || objExprType == this.checker.booleanType || objExprType.isReferenceType()) && (indexExprType == this.checker.anyType || indexExprType == this.checker.stringType || (indexExprType == this.checker.numberType || TypeScript.hasFlag(indexExprType.typeFlags, TypeScript.TypeFlags.IsEnum)))) { + binex.type = this.checker.anyType; + } else { + this.checker.errorReporter.simpleError(binex, "Illegal property access"); + binex.type = this.checker.anyType; + } + } + } + return binex; + }; + TypeFlow.prototype.typeCheckInOperator = function (binex) { + binex.operand1 = this.cast(this.typeCheck(binex.operand1), this.stringType); + binex.operand2 = this.typeCheck(binex.operand2); + if(!((binex.operand1.type == this.checker.anyType || binex.operand1.type == this.checker.stringType) && (binex.operand2.type == this.anyType || this.checker.sourceIsSubtypeOfTarget(binex.operand2.type, this.objectInterfaceType)))) { + this.checker.errorReporter.simpleError(binex, "The in operator requires the left operand to be of type Any or the String primitive type, and the right operand to be of type Any or an object type"); + } + binex.type = this.booleanType; + return binex; + }; + TypeFlow.prototype.typeCheckShift = function (binex, assignment) { + binex.operand1 = this.cast(this.typeCheck(binex.operand1), this.doubleType); + binex.operand2 = this.cast(this.typeCheck(binex.operand2), this.doubleType); + if(assignment && (!(this.astIsWriteable(binex.operand1)))) { + this.checker.errorReporter.valueCannotBeModified(binex); + } + binex.type = this.doubleType; + return binex; + }; + TypeFlow.prototype.typeCheckQMark = function (trinex) { + trinex.operand1 = this.typeCheck(trinex.operand1); + trinex.operand2 = this.typeCheck(trinex.operand2); + trinex.operand3 = this.typeCheck(trinex.operand3); + var leftType = trinex.operand2.type; + var rightType = trinex.operand3.type; + if(leftType == rightType) { + trinex.type = leftType; + } else { + if(this.checker.sourceIsSubtypeOfTarget(leftType, rightType)) { + trinex.type = rightType; + } else { + if(this.checker.sourceIsSubtypeOfTarget(rightType, leftType)) { + trinex.type = leftType; + } else { + trinex.type = this.anyType; + this.checker.errorReporter.incompatibleTypes(trinex, leftType, rightType, trinex.printLabel(), this.scope); + } + } + } + return trinex; + }; + TypeFlow.prototype.addFormals = function (container, signature, table) { + var len = signature.parameters.length; + for(var i = 0; i < len; i++) { + var symbol = signature.parameters[i]; + symbol.container = container; + table.add(symbol.name, symbol); + } + }; + TypeFlow.prototype.addLocalsFromScope = function (scope, container, vars, table, isModContainer) { + var len = vars.members.length; + var hasArgsDef = false; + for(var i = 0; i < len; i++) { + var local = vars.members[i]; + if(((local.sym == null) || (local.sym.kind() != TypeScript.SymbolKind.Field))) { + var result = null; + if((result = table.lookup(local.id.text)) == null) { + var localVar = new TypeScript.ValueLocation(); + localVar.typeLink = new TypeScript.TypeLink(); + var varSym = null; + if(TypeScript.hasFlag(local.varFlags, TypeScript.VarFlags.Static)) { + local.varFlags |= TypeScript.VarFlags.LocalStatic; + varSym = new TypeScript.FieldSymbol(local.id.text, local.minChar, this.checker.locationInfo.unitIndex, true, localVar); + } else { + varSym = new TypeScript.VariableSymbol(local.id.text, local.minChar, this.checker.locationInfo.unitIndex, localVar); + } + varSym.transferVarFlags(local.varFlags); + localVar.symbol = varSym; + varSym.declAST = local; + localVar.typeLink.ast = local.typeExpr; + this.checker.resolveTypeLink(scope, localVar.typeLink, false); + if((local.type == null) && (local.init == null)) { + local.type = this.anyType; + } + localVar.typeLink.type = local.type; + localVar.symbol.container = container; + local.sym = localVar.symbol; + table.add(local.id.text, varSym); + if(local.id.text == "arguments") { + hasArgsDef = true; + } + } else { + local.type = result.getType(); + local.sym = result; + } + } + } + if(!isModContainer) { + if(!hasArgsDef) { + var argLoc = new TypeScript.ValueLocation(); + argLoc.typeLink = new TypeScript.TypeLink(); + var theArgSym = new TypeScript.VariableSymbol("arguments", vars.minChar, this.checker.locationInfo.unitIndex, argLoc); + if(!this.iargumentsInterfaceType) { + var argumentsSym = scope.find("IArguments", false, true); + if(argumentsSym) { + argumentsSym.flags |= TypeScript.SymbolFlags.CompilerGenerated; + this.iargumentsInterfaceType = argumentsSym.getType(); + } else { + this.iargumentsInterfaceType = this.anyType; + } + } + argLoc.typeLink.type = this.iargumentsInterfaceType; + table.add("arguments", theArgSym); + } + } + }; + TypeFlow.prototype.addConstructorLocalArgs = function (container, args, table, isClass) { + if(args) { + var len = args.members.length; + for(var i = 0; i < len; i++) { + var local = args.members[i]; + if((local.sym == null) || (isClass || (local.sym.kind() != TypeScript.SymbolKind.Field))) { + var result = null; + if((result = table.lookup(local.id.text)) == null) { + this.resolveBoundDecl(local); + var localVar = new TypeScript.ValueLocation(); + localVar.typeLink = new TypeScript.TypeLink(); + var varSym = new TypeScript.ParameterSymbol(local.id.text, local.minChar, this.checker.locationInfo.unitIndex, localVar); + varSym.declAST = local; + localVar.symbol = varSym; + localVar.typeLink.type = local.type; + localVar.symbol.container = container; + local.sym = localVar.symbol; + table.add(local.id.text, varSym); + } else { + local.type = result.getType(); + local.sym = result; + } + } + } + } + }; + TypeFlow.prototype.checkInitSelf = function (funcDecl) { + if(!funcDecl.isMethod()) { + var freeVars = funcDecl.freeVariables; + for(var k = 0, len = freeVars.length; k < len; k++) { + var sym = freeVars[k]; + if(sym.isInstanceProperty()) { + return true; + } + } + } + var fns = funcDecl.scopes; + var fnsLen = fns.members.length; + for(var j = 0; j < fnsLen; j++) { + var fn = fns.members[j]; + if(this.checkInitSelf(fn)) { + return true; + } + } + return false; + }; + TypeFlow.prototype.checkPromoteFreeVars = function (funcDecl, constructorSym) { + var freeVars = funcDecl.freeVariables; + for(var k = 0, len = freeVars.length; k < len; k++) { + var sym = freeVars[k]; + if((!sym.isInstanceProperty()) && (sym.container == constructorSym)) { + TypeScript.instanceFilter.reset(); + if(this.scope.search(TypeScript.instanceFilter, sym.name, false, false)) { + this.checker.errorReporter.simpleError(funcDecl, "Constructor-local variable shadows class property '" + sym.name + "'. To access the class property, use 'self." + sym.name + "'"); + } + this.checker.errorReporter.simpleError(funcDecl, "Constructor-local variables may not be accessed from instance method bodies. Consider changing local variable '" + sym.name + "' to a class property"); + } + } + }; + TypeFlow.prototype.allReturnsAreVoid = function (funcDecl) { + var allReturnsAreVoid = true; + if(funcDecl.signature.returnType.type == null) { + var preFindReturnExpressionTypes = function (ast, parent, walker) { + var go = true; + switch(ast.nodeType) { + case TypeScript.NodeType.FuncDecl: { + go = false; + break; + + } + case TypeScript.NodeType.Return: { + var returnStmt = ast; + if(returnStmt.returnExpression) { + allReturnsAreVoid = false; + go = false; + } + + } + default: { + break; + + } + } + walker.options.goChildren = go; + walker.options.goNextSibling = go; + return ast; + }; + TypeScript.getAstWalkerFactory().walk(funcDecl.bod, preFindReturnExpressionTypes); + } + return allReturnsAreVoid; + }; + TypeFlow.prototype.classConstructorHasSuperCall = function (funcDecl) { + var foundSuper = false; + var preFindSuperCall = function (ast, parent, walker) { + var go = true; + switch(ast.nodeType) { + case TypeScript.NodeType.FuncDecl: { + go = false; + break; + + } + case TypeScript.NodeType.Call: { + var call = ast; + if(call.target.nodeType == TypeScript.NodeType.Super) { + go = false; + foundSuper = true; + break; + } + break; + + } + default: { + break; + + } + } + walker.options.goChildren = go; + return ast; + }; + TypeScript.getAstWalkerFactory().walk(funcDecl.bod, preFindSuperCall); + return foundSuper; + }; + TypeFlow.prototype.baseListPrivacyErrorReporter = function (bases, i, declSymbol, extendsList, typeName, isModuleName) { + var baseSymbol = bases.members[i].type.symbol; + var declTypeString = (declSymbol.declAST.nodeType == TypeScript.NodeType.InterfaceDeclaration) ? "interface" : "class"; + var baseListTypeString = extendsList ? "extends" : "implements"; + var baseTypeString = (baseSymbol.declAST.nodeType == TypeScript.NodeType.InterfaceDeclaration) ? "interface" : "class"; + var typestring = ""; + if(isModuleName) { + var quotestring = ""; + if(!TypeScript.isQuoted(typeName)) { + quotestring = "'"; + } + typestring = " is using inaccessible module "; + baseTypeString = " " + baseTypeString + " from private module " + quotestring + typeName + quotestring; + } else { + baseTypeString = " private " + baseTypeString + " '" + typeName + "'"; + } + this.checker.errorReporter.simpleError(bases.members[i], "exported " + declTypeString + " '" + declSymbol.name + "' " + baseListTypeString + baseTypeString); + }; + TypeFlow.prototype.typeCheckBaseListPrivacy = function (bases, declSymbol, extendsList) { + var _this = this; + if(bases) { + var basesLen = bases.members.length; + for(var i = 0; i < basesLen; i++) { + if(!bases.members[i].type || bases.members[i].type == this.checker.anyType) { + continue; + } + this.checkSymbolPrivacy(bases.members[i].type.symbol, declSymbol, function (typeName, isModuleName) { + return _this.baseListPrivacyErrorReporter(bases, i, declSymbol, extendsList, typeName, isModuleName); + }); + } + } + }; + TypeFlow.prototype.checkSymbolPrivacy = function (typeSymbol, declSymbol, errorCallback) { + var externalModuleSymbol = null; + var declSymbolPath = null; + if(typeSymbol.isExternallyVisible(this.checker)) { + var typeSymbolPath = typeSymbol.pathToRoot(); + declSymbolPath = declSymbol.pathToRoot(); + var typeSymbolLength = typeSymbolPath.length; + var declSymbolPathLength = declSymbolPath.length; + if(typeSymbolLength > 0) { + if(typeSymbolPath[typeSymbolLength - 1].getType().isModuleType() && (typeSymbolPath[typeSymbolLength - 1]).isDynamic && typeSymbolPath[typeSymbolLength - 1] != declSymbolPath[declSymbolPathLength - 1]) { + externalModuleSymbol = typeSymbolPath[typeSymbolLength - 1]; + } else { + if(typeSymbolLength > 1) { + if(typeSymbolPath[typeSymbolLength - 2].getType().isModuleType() && (typeSymbolPath[typeSymbolLength - 2]).isDynamic && (declSymbolPathLength == 1 || typeSymbolPath[typeSymbolLength - 2] != declSymbolPath[declSymbolPathLength - 2])) { + externalModuleSymbol = typeSymbolPath[typeSymbolLength - 2]; + } + } + } + } + if(externalModuleSymbol == null) { + return; + } + } + var interfaceDecl = declSymbol.getInterfaceDeclFromSymbol(this.checker); + if(interfaceDecl && !TypeScript.hasFlag(interfaceDecl.varFlags, TypeScript.VarFlags.Exported)) { + return; + } + var checkVisibilitySymbol = declSymbol; + var varDecl = declSymbol.getVarDeclFromSymbol(); + if(varDecl) { + if(TypeScript.hasFlag(varDecl.varFlags, TypeScript.VarFlags.Private)) { + return; + } else { + if(TypeScript.hasFlag(varDecl.varFlags, TypeScript.VarFlags.Public)) { + checkVisibilitySymbol = declSymbol.container; + } + } + } + if(checkVisibilitySymbol.isExternallyVisible(this.checker)) { + var privateSymbolName = typeSymbol.name; + if(externalModuleSymbol != null) { + var prettyName = externalModuleSymbol.getPrettyNameOfDynamicModule(declSymbolPath); + if(prettyName != null) { + this.currentScript.AddExternallyVisibleImportedSymbol(prettyName.symbol, this.checker); + return; + } else { + privateSymbolName = externalModuleSymbol.prettyName; + } + } + errorCallback(privateSymbolName, typeSymbol.name != privateSymbolName); + } + }; + TypeFlow.prototype.checkTypePrivacy = function (type, declSymbol, errorCallback) { + var _this = this; + if(!(type && type.primitiveTypeClass == TypeScript.Primitive.None)) { + return; + } + if(type.isArray()) { + return this.checkTypePrivacy(type.elementType, declSymbol, errorCallback); + } + if(type.symbol && type.symbol.name && type.symbol.name != "_anonymous" && (((type.call == null) && (type.construct == null) && (type.index == null)) || (type.members && (!type.isClass())))) { + return this.checkSymbolPrivacy(type.symbol, declSymbol, errorCallback); + } + if(type.members) { + type.members.allMembers.map(function (key, s, unused) { + var sym = s; + if(!TypeScript.hasFlag(sym.flags, TypeScript.SymbolFlags.BuiltIn)) { + _this.checkTypePrivacy(sym.getType(), declSymbol, errorCallback); + } + }, null); + } + this.checkSignatureGroupPrivacy(type.call, declSymbol, errorCallback); + this.checkSignatureGroupPrivacy(type.construct, declSymbol, errorCallback); + this.checkSignatureGroupPrivacy(type.index, declSymbol, errorCallback); + }; + TypeFlow.prototype.checkSignatureGroupPrivacy = function (sgroup, declSymbol, errorCallback) { + if(sgroup) { + var len = sgroup.signatures.length; + for(var i = 0; i < sgroup.signatures.length; i++) { + var signature = sgroup.signatures[i]; + if(len > 1 && signature == sgroup.definitionSignature) { + continue; + } + if(signature.returnType) { + this.checkTypePrivacy(signature.returnType.type, declSymbol, errorCallback); + } + var paramLen = signature.parameters.length; + for(var j = 0; j < paramLen; j++) { + var param = signature.parameters[j]; + this.checkTypePrivacy(param.getType(), declSymbol, errorCallback); + } + } + } + }; + TypeFlow.prototype.functionArgumentPrivacyErrorReporter = function (funcDecl, p, paramSymbol, typeName, isModuleName) { + var isGetter = funcDecl.isAccessor() && TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.GetAccessor); + var isSetter = funcDecl.isAccessor() && TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.SetAccessor); + var isPublicFunc = TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Public); + var isContainerInterface = funcDecl.type.symbol.getInterfaceDeclFromSymbol(this.checker) != null; + var typestring = ""; + if(isModuleName) { + var quotestring = ""; + if(!TypeScript.isQuoted(typeName)) { + quotestring = "'"; + } + typestring = " is using inaccessible module " + quotestring + typeName + quotestring; + } else { + typestring = " has or is using private type '" + typeName + "'"; + } + if(!isContainerInterface) { + if(funcDecl.isConstructor) { + this.checker.errorReporter.simpleError(funcDecl.arguments.members[p], "exported class's constructor parameter '" + paramSymbol.name + "'" + typestring); + } else { + if(isSetter) { + this.checker.errorReporter.simpleError(funcDecl.arguments.members[p], (isPublicFunc ? "public" : "exported") + " setter parameter '" + paramSymbol.name + "'" + typestring); + } else { + if(!isGetter) { + this.checker.errorReporter.simpleError(funcDecl.arguments.members[p], (isPublicFunc ? "public" : "exported") + " function parameter '" + paramSymbol.name + "'" + typestring); + } + } + } + } else { + if(funcDecl.isConstructMember()) { + this.checker.errorReporter.simpleError(funcDecl.arguments.members[p], "exported interface's constructor parameter '" + paramSymbol.name + "'" + typestring); + } else { + if(funcDecl.isCallMember()) { + this.checker.errorReporter.simpleError(funcDecl.arguments.members[p], "exported interface's call parameter '" + paramSymbol.name + "'" + typestring); + } else { + if(!funcDecl.isIndexerMember()) { + this.checker.errorReporter.simpleError(funcDecl.arguments.members[p], "exported interface's function parameter '" + paramSymbol.name + "'" + typestring); + } + } + } + } + }; + TypeFlow.prototype.returnTypePrivacyError = function (astError, funcDecl, typeName, isModuleName) { + var isGetter = funcDecl.isAccessor() && TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.GetAccessor); + var isSetter = funcDecl.isAccessor() && TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.SetAccessor); + var isPublicFunc = TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Public); + var isContainerInterface = funcDecl.type.symbol.getInterfaceDeclFromSymbol(this.checker) != null; + var typestring = ""; + if(isModuleName) { + var quotestring = ""; + if(!TypeScript.isQuoted(typeName)) { + quotestring = "'"; + } + typestring = " is using inaccessible module " + quotestring + typeName + quotestring; + } else { + typestring = " has or is using private type '" + typeName + "'"; + } + if(!isContainerInterface) { + if(isGetter) { + this.checker.errorReporter.simpleError(astError, (isPublicFunc ? "public" : "exported") + " getter return type" + typestring); + } else { + if(!isSetter) { + this.checker.errorReporter.simpleError(astError, (isPublicFunc ? "public" : "exported") + " function return type" + typestring); + } + } + } else { + if(funcDecl.isConstructMember()) { + this.checker.errorReporter.simpleError(astError, "exported interface's constructor return type" + typestring); + } else { + if(funcDecl.isCallMember()) { + this.checker.errorReporter.simpleError(astError, "exported interface's call return type" + typestring); + } else { + if(funcDecl.isIndexerMember()) { + this.checker.errorReporter.simpleError(astError, "exported interface's indexer return type" + typestring); + } else { + this.checker.errorReporter.simpleError(astError, "exported interface's function return type" + typestring); + } + } + } + } + }; + TypeFlow.prototype.functionReturnTypePrivacyErrorReporter = function (funcDecl, signature, typeName, isModuleName) { + var reportOnFuncDecl = false; + if(funcDecl.returnTypeAnnotation != null && funcDecl.returnTypeAnnotation.type == signature.returnType.type) { + this.returnTypePrivacyError(funcDecl.returnTypeAnnotation, funcDecl, typeName, isModuleName); + } + for(var i = 0; i < funcDecl.returnStatementsWithExpressions.length; i++) { + if(funcDecl.returnStatementsWithExpressions[i].type == signature.returnType.type) { + this.returnTypePrivacyError(funcDecl.returnStatementsWithExpressions[i], funcDecl, typeName, isModuleName); + } else { + reportOnFuncDecl = true; + } + } + if(reportOnFuncDecl) { + this.returnTypePrivacyError(funcDecl, funcDecl, typeName, isModuleName); + } + }; + TypeFlow.prototype.typeCheckFunction = function (funcDecl) { + var _this = this; + this.nestingLevel = 0; + var fnType = funcDecl.type; + var fgSym = fnType.symbol; + var signature = funcDecl.signature; + if(this.checker.typeStatusIsFinished(signature.typeCheckStatus)) { + return funcDecl; + } else { + if(signature.typeCheckStatus == TypeScript.TypeCheckStatus.Started) { + if(!funcDecl.returnTypeAnnotation && funcDecl.bod && !funcDecl.isSignature() && !(funcDecl.isConstructor) && this.allReturnsAreVoid(funcDecl)) { + signature.returnType.type = this.voidType; + return funcDecl; + } else { + if(funcDecl.returnTypeAnnotation == null) { + if(this.checker.styleSettings.implicitAny) { + this.checker.errorReporter.styleError(funcDecl, "type implicitly set to 'any'"); + } + signature.returnType.type = this.anyType; + fgSym.flags |= TypeScript.SymbolFlags.RecursivelyReferenced; + } + return funcDecl; + } + } + } + signature.typeCheckStatus = TypeScript.TypeCheckStatus.Started; + this.checker.addStartedPTO(signature); + var prevScope = this.scope; + var prevFnc = this.thisFnc; + var prevMethodStatus = this.enclosingFncIsMethod; + var prevClassNode = this.thisClassNode; + this.enclosingFncIsMethod = funcDecl.isMethod() || funcDecl.isConstructor; + this.thisFnc = funcDecl; + var container = funcDecl.type.symbol; + var prevThisType = this.thisType; + var prevLocationInfo = this.checker.locationInfo; + var funcTable = null; + var acceptedContextualType = false; + var targetParams = null; + var targetReturnType = null; + var isGetter = funcDecl.isAccessor() && TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.GetAccessor); + var isSetter = funcDecl.isAccessor() && TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.SetAccessor); + var accessorType = (isGetter || isSetter) && funcDecl.accessorSymbol ? funcDecl.accessorSymbol.getType() : null; + var prevModDecl = this.checker.currentModDecl; + if(funcDecl.isConstructor && !funcDecl.isOverload) { + if(fnType.instanceType == null) { + this.checker.errorReporter.simpleError(funcDecl, "Malformed function body (is this a class named the same as an existing interface?)"); + return funcDecl; + } + this.scope = fnType.instanceType.constructorScope; + var ssb = this.scope; + funcTable = ssb.valueMembers.allMembers; + } else { + if((funcDecl.isSpecialFn() && !(funcDecl.fncFlags & TypeScript.FncFlags.Signature)) || funcDecl.isOverload) { + funcTable = funcDecl.symbols; + if(!TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Static) && fnType.containedScope) { + this.scope = fnType.containedScope; + } + } else { + if(funcDecl.bod) { + this.scope = fnType.containedScope; + } + var ssb = this.scope; + if(ssb && ssb.valueMembers) { + funcTable = ssb.valueMembers.allMembers; + } + } + } + if(funcDecl.isConstructor && funcDecl.bod && TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.ClassMethod)) { + var hasBaseType = TypeScript.hasFlag(funcDecl.classDecl.type.instanceType.typeFlags, TypeScript.TypeFlags.HasBaseType); + var noSuperCallAllowed = !hasBaseType || TypeScript.hasFlag(funcDecl.classDecl.type.instanceType.typeFlags, TypeScript.TypeFlags.HasBaseTypeOfObject); + var superCallMustBeFirst = TypeScript.hasFlag((funcDecl.classDecl).varFlags, TypeScript.VarFlags.ClassSuperMustBeFirstCallInConstructor); + if(noSuperCallAllowed && this.classConstructorHasSuperCall(funcDecl)) { + this.checker.errorReporter.simpleError(funcDecl, "Calls to 'super' constructor are not allowed in classes that either inherit directly from 'Object' or have no base class"); + } else { + if(hasBaseType) { + if(superCallMustBeFirst) { + if(!funcDecl.bod || !funcDecl.bod.members.length || !((funcDecl.bod.members[0].nodeType == TypeScript.NodeType.Call && (funcDecl.bod.members[0]).target.nodeType == TypeScript.NodeType.Super) || (TypeScript.hasFlag(funcDecl.bod.flags, TypeScript.ASTFlags.StrictMode) && funcDecl.bod.members.length > 1 && funcDecl.bod.members[1].nodeType == TypeScript.NodeType.Call && (funcDecl.bod.members[1]).target.nodeType == TypeScript.NodeType.Super))) { + this.checker.errorReporter.simpleError(funcDecl, "If a derived class contains initialized properties or constructor parameter properties, the first statement in the constructor body must be a call to the super constructor"); + } + } else { + if(!this.classConstructorHasSuperCall(funcDecl)) { + this.checker.errorReporter.simpleError(funcDecl, "Constructors for derived classes must contain a call to the class's 'super' constructor"); + } + } + } + } + } + if(funcDecl.isMethod() && funcDecl.type.enclosingType) { + var enclosingClassNode = null; + if(funcDecl.type.enclosingType.symbol.declAST.nodeType == TypeScript.NodeType.FuncDecl) { + enclosingClassNode = (funcDecl.type.enclosingType.symbol.declAST).classDecl; + } else { + if(funcDecl.type.enclosingType.symbol.declAST.nodeType == TypeScript.NodeType.ClassDeclaration) { + enclosingClassNode = funcDecl.type.enclosingType.symbol.declAST; + } + } + if(enclosingClassNode) { + this.thisClassNode = enclosingClassNode; + } + } + if(fnType.enclosingType) { + ; ; + var enclosingSym = fnType.symbol.container; + if(enclosingSym && enclosingSym.isType() && enclosingSym.getType().isClass()) { + enclosingSym = enclosingSym.container; + } + if(enclosingSym && enclosingSym.declAST && enclosingSym.declAST.nodeType == TypeScript.NodeType.ModuleDeclaration) { + this.checker.currentModDecl = enclosingSym.declAST; + } + } + if(funcDecl.unitIndex > 0) { + if(this.checker.units && (funcDecl.unitIndex < this.checker.units.length)) { + this.checker.locationInfo = this.checker.units[funcDecl.unitIndex]; + } else { + this.checker.locationInfo = TypeScript.unknownLocationInfo; + } + } + if(fnType.enclosingType) { + this.thisType = fnType.enclosingType; + } else { + this.thisType = prevThisType; + } + var paramLen = signature.parameters.length; + if(!funcDecl.isConstructor && funcDecl.bod && !funcDecl.isSignature()) { + var tmpParamScope = this.scope; + var ssb = this.scope; + if(!funcDecl.isMethod() && funcDecl.returnTypeAnnotation == null) { + if(prevScope && funcDecl.name && !funcDecl.name.isMissing()) { + var considerSym = prevScope.findAmbient(funcDecl.name.text, false, false); + if(considerSym && considerSym.declAST && considerSym.declAST.type) { + this.checker.setContextualType(considerSym.declAST.type, false); + } + } + if(this.checker.hasTargetType()) { + var candidateTypeContext = this.checker.getTargetTypeContext(); + var candidateType = candidateTypeContext.contextualType; + if(this.checker.canContextuallyTypeFunction(candidateType, funcDecl, true)) { + var candidateSigs = candidateType.construct ? candidateType.construct : candidateType.call; + candidateTypeContext.targetSig = candidateSigs.signatures[0]; + var candidateParams = candidateTypeContext.targetSig.parameters; + targetParams = candidateParams; + targetReturnType = candidateTypeContext.targetSig.returnType.type; + if(candidateTypeContext.targetSig.declAST) { + if(candidateTypeContext.targetSig.declAST.isConstructor) { + funcDecl.isTargetTypedAsMethod = true; + } else { + if(candidateTypeContext.targetSig.declAST.isMethod()) { + funcDecl.isTargetTypedAsMethod = true; + } + } + } + fgSym.type = candidateTypeContext.contextualType; + acceptedContextualType = true; + } else { + if(candidateType && funcDecl.isAccessor()) { + accessorType = candidateType; + candidateTypeContext.targetAccessorType = accessorType; + } else { + this.checker.killCurrentContextualType(); + } + } + } + } + var paramTable = ssb.valueMembers; + this.scope = new TypeScript.SymbolScopeBuilder(paramTable, null, null, null, prevScope, container); + for(var p = 0; p < paramLen; p++) { + var symbol = signature.parameters[p]; + var ast = symbol.declAST; + if(this.checker.hasTargetType() && (targetParams && (this.checker.getTargetTypeContext().targetSig.hasVariableArgList || p < targetParams.length))) { + var candidateTypeContext = this.checker.getTargetTypeContext(); + var hasVarArgList = candidateTypeContext.targetSig.hasVariableArgList; + ast.type = hasVarArgList && p >= targetParams.length - 1 ? targetParams[targetParams.length - 1].getType().elementType : targetParams[p].getType(); + ast.sym.setType(ast.type); + (ast.sym).typeCheckStatus = this.checker.getTypeCheckFinishedStatus(); + } else { + this.typeCheck(ast); + } + if(isSetter && accessorType) { + ast = this.cast(ast, accessorType); + } + symbol.container = container; + this.checkTypePrivacy(symbol.getType(), container, function (typeName, isModuleName) { + return _this.functionArgumentPrivacyErrorReporter(funcDecl, p, symbol, typeName, isModuleName); + }); + paramTable.publicMembers.add(symbol.name, symbol); + } + this.scope = tmpParamScope; + } else { + this.typeCheck(funcDecl.arguments); + for(var p = 0; p < paramLen; p++) { + signature.parameters[p].parameter.typeLink.type = funcDecl.arguments.members[p].type; + this.checkTypePrivacy(signature.parameters[p].getType(), container, function (typeName, isModuleName) { + return _this.functionArgumentPrivacyErrorReporter(funcDecl, p, signature.parameters[p], typeName, isModuleName); + }); + if((funcDecl.arguments.members[p]).parameterPropertySym) { + (funcDecl.arguments.members[p]).parameterPropertySym.setType(funcDecl.arguments.members[p].type); + } + } + if((funcDecl.fncFlags & TypeScript.FncFlags.IndexerMember)) { + if(!paramLen || paramLen > 1) { + this.checker.errorReporter.simpleError(funcDecl, "Index signatures may take one and only one parameter"); + } else { + if(funcDecl.arguments.members[0].type == this.checker.numberType) { + fnType.index.flags |= TypeScript.SignatureFlags.IsNumberIndexer; + } else { + if(funcDecl.arguments.members[0].type == this.checker.stringType) { + fnType.index.flags |= TypeScript.SignatureFlags.IsStringIndexer; + } else { + this.checker.errorReporter.simpleError(funcDecl.arguments.members[0], "Index signatures may only take 'string' or 'number' as their parameter"); + } + } + } + } + } + if(funcDecl.bod && (!funcDecl.isSignature())) { + if(!(funcDecl.isConstructor)) { + this.addFormals(container, signature, funcTable); + } else { + this.addConstructorLocalArgs(funcDecl.type.symbol, funcDecl.arguments, funcTable, TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.ClassMethod)); + if(this.thisClassNode && this.thisClassNode.extendsList) { + var tmpScope = this.scope; + var funcMembers = new TypeScript.ScopedMembers(funcTable); + this.scope = new TypeScript.FilteredSymbolScopeBuilder(funcMembers, prevScope, funcDecl.type.symbol, function (sym) { + return sym.kind() == TypeScript.SymbolKind.Parameter; + }); + this.typeCheckBaseCalls(this.thisClassNode.extendsList); + this.scope = tmpScope; + } + } + var prevMod = this.checker.currentModDecl; + if(funcDecl.type && funcDecl.type.symbol && !funcDecl.isMethod() && funcDecl.type.symbol.declModule) { + this.checker.currentModDecl = funcDecl.type.symbol.declModule; + } + if(acceptedContextualType) { + this.checker.setContextualType(null, this.checker.inProvisionalTypecheckMode()); + } + this.typeCheck(funcDecl.bod); + if(acceptedContextualType) { + this.checker.unsetContextualType(); + } + this.checker.currentModDecl = prevMod; + if(this.checker.checkControlFlow) { + var cfg = funcDecl.buildControlFlow(); + if(this.checker.printControlFlowGraph) { + cfg.print(this.checker.errorReporter.outfile); + } + cfg.reportUnreachable(this.checker.errorReporter); + if(this.checker.checkControlFlowUseDef) { + cfg.useDef(this.checker.errorReporter, funcDecl.type.symbol); + } + } + if(funcDecl.isConstructor) { + var fns = funcDecl.scopes; + var fnsLen = fns.members.length; + var freeVars; + var sym; + var j = 0; + for(; j < fnsLen; j++) { + var fn = fns.members[j]; + if(!fn.isSignature()) { + if(TypeScript.hasFlag(fn.fncFlags, TypeScript.FncFlags.Method) && (!TypeScript.hasFlag(fn.fncFlags, TypeScript.FncFlags.Static))) { + this.checkPromoteFreeVars(fn, funcDecl.type.symbol); + } + } + } + } + } + this.scope = prevScope; + this.thisFnc = prevFnc; + this.thisClassNode = prevClassNode; + this.enclosingFncIsMethod = prevMethodStatus; + this.thisType = prevThisType; + this.checker.locationInfo = prevLocationInfo; + this.checker.currentModDecl = prevModDecl; + signature.typeCheckStatus = this.checker.getTypeCheckFinishedStatus(); + if(funcDecl.returnTypeAnnotation) { + this.checkForVoidConstructor(funcDecl.returnTypeAnnotation.type, funcDecl.returnTypeAnnotation); + if(signature.returnType.type == null) { + this.checker.resolveTypeLink(this.scope, signature.returnType, false); + } + } else { + if(targetReturnType) { + signature.returnType.type = targetReturnType; + } + } + if(!(fgSym.flags & TypeScript.SymbolFlags.RecursivelyReferenced) && funcDecl.returnStatementsWithExpressions.length > 0) { + var collection = { + getLength: function () { + return funcDecl.returnStatementsWithExpressions.length; + }, + setTypeAtIndex: function (index, type) { + funcDecl.returnStatementsWithExpressions[index].type = type; + }, + getTypeAtIndex: function (index) { + return funcDecl.returnStatementsWithExpressions[index].type; + } + }; + var bestCommonReturnType = funcDecl.returnStatementsWithExpressions[0].type; + bestCommonReturnType = this.checker.findBestCommonType(bestCommonReturnType, null, collection, true); + if(bestCommonReturnType) { + signature.returnType.type = this.checker.widenType(bestCommonReturnType); + } else { + for(var i = 0; i < funcDecl.returnStatementsWithExpressions.length; i++) { + this.checker.errorReporter.simpleError(funcDecl.returnStatementsWithExpressions[i], "Incompatible return type"); + } + signature.returnType.type = this.anyType; + } + } + var onlyHasThrow = false; + if(signature.returnType.type == null) { + if(TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.HasReturnExpression)) { + if(this.checker.styleSettings.implicitAny) { + this.checker.errorReporter.styleError(funcDecl, "type implicitly set to 'any'"); + } + signature.returnType.type = this.anyType; + } else { + signature.returnType.type = this.voidType; + } + } else { + if(signature.returnType.type == this.nullType || signature.returnType.type == this.checker.undefinedType) { + signature.returnType.type = this.anyType; + } else { + if((signature.returnType.type != this.voidType && signature.returnType.type != this.checker.undefinedType && signature.returnType.type != this.anyType)) { + if(!funcDecl.isSignature() && !funcDecl.isConstructor && !TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.HasReturnExpression) && !TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.IsFatArrowFunction)) { + onlyHasThrow = (funcDecl.bod.members.length > 0) && (funcDecl.bod.members[0].nodeType == TypeScript.NodeType.Throw); + if(!onlyHasThrow) { + this.checker.errorReporter.simpleError(funcDecl.returnTypeAnnotation || funcDecl, "Function declared a non-void return type, but has no return expression"); + } + } + this.checkTypePrivacy(signature.returnType.type, container, function (typeName, isModuleName) { + return _this.functionReturnTypePrivacyErrorReporter(funcDecl, signature, typeName, isModuleName); + }); + } + } + } + if(funcDecl.accessorSymbol) { + var accessorType = funcDecl.accessorSymbol.getType(); + if(!onlyHasThrow && TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.GetAccessor) && !TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.HasReturnExpression)) { + this.checker.errorReporter.simpleError(funcDecl, "Getters must return a value"); + } + if(accessorType) { + if((TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.GetAccessor) && accessorType != signature.returnType.type) || (funcDecl.arguments.members.length > 0 && accessorType != funcDecl.arguments.members[0].type)) { + this.checker.errorReporter.simpleError(funcDecl, "Getter and setter types do not agree"); + } + } else { + if(TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.GetAccessor)) { + funcDecl.accessorSymbol.setType(signature.returnType.type); + } else { + if(funcDecl.arguments.members.length != 1) { + this.checker.errorReporter.simpleError(funcDecl, "Setters may have one and only one argument"); + } else { + funcDecl.accessorSymbol.setType(funcDecl.arguments.members[0].type); + } + } + } + } + this.typeCheckOverloadSignatures(fnType, funcDecl); + return funcDecl; + }; + TypeFlow.prototype.typeCheckBases = function (type) { + var seenInterface = false; + var bases = type.extendsList; + var baseLinks = type.extendsTypeLinks; + if(bases) { + var len = bases.length; + if(len > 0) { + type.typeFlags |= TypeScript.TypeFlags.HasBaseType; + } + for(var i = 0; i < len; i++) { + if(bases[i] == this.checker.anyType) { + baseLinks[i].type = null; + var oldErrors = this.checker.errorReporter.getCapturedErrors(); + TypeScript.CompilerDiagnostics.assert(oldErrors.length == 0, "There shouldnt be any contextual errors when typechecking base type names"); + this.checker.errorReporter.pushToErrorSink = true; + bases[i] = this.checker.resolveBaseTypeLink(baseLinks[i], type.containedScope); + this.checker.errorReporter.pushToErrorSink = false; + this.checker.errorReporter.freeCapturedErrors(); + } + var base = bases[i]; + var baseRef = baseLinks[i].ast; + var baseTypeOfObject = base.symbol && base.symbol.name == "Object" && base.symbol.container == this.checker.gloMod; + if(baseTypeOfObject) { + type.typeFlags |= TypeScript.TypeFlags.HasBaseTypeOfObject; + } + if(base.isClassInstance()) { + if(!(type.isClassInstance())) { + this.checker.errorReporter.simpleError(baseRef, "Interface base type must be interface"); + } else { + if(seenInterface) { + this.checker.errorReporter.simpleError(baseRef, "Class may not follow interface as base type"); + } + } + } else { + if(base.isModuleType()) { + this.checker.errorReporter.simpleError(baseRef, "Types may not be derived from module types"); + } else { + if(base.members) { + if(!seenInterface) { + seenInterface = true; + } + } else { + if(!(type.isClassInstance())) { + this.checker.errorReporter.simpleError(baseRef, "Interface base type must be interface"); + } else { + this.checker.errorReporter.simpleError(baseRef, "Base type must be interface or class"); + } + break; + } + } + } + } + } + }; + TypeFlow.prototype.checkMembersImplementInterfaces = function (implementingType) { + var instanceType = implementingType.getInstanceType(); + if(instanceType.implementsList) { + var len = instanceType.implementsList.length; + for(var i = 0; i < len; i++) { + var interfaceType = instanceType.implementsList[i]; + var comparisonInfo = new TypeScript.TypeComparisonInfo(); + if(!this.checker.sourceIsSubtypeOfTarget(instanceType, interfaceType, comparisonInfo)) { + var emsg = "Class '" + instanceType.getTypeName() + "' declares interface '" + interfaceType.getTypeName() + "' but does not implement it"; + if(!comparisonInfo.message) { + this.checker.errorReporter.simpleErrorFromSym(instanceType.symbol, emsg); + } else { + this.checker.errorReporter.simpleErrorFromSym(instanceType.symbol, emsg + ": " + comparisonInfo.message); + } + } + } + } + }; + TypeFlow.prototype.typeCheckBaseCalls = function (bases) { + if(bases == null) { + return; + } + var basesLen = bases.members.length; + for(var i = 0; i < basesLen; i++) { + var baseExpr = bases.members[i]; + var baseSymbol = null; + if(baseExpr.nodeType == TypeScript.NodeType.Call) { + this.typeCheckNew(baseExpr); + } + } + }; + TypeFlow.prototype.assertUniqueNamesInBaseTypes = function (names, type, classDecl, checkUnique) { + var _this = this; + if(type) { + if(type.members) { + type.members.publicMembers.map(function (key, s, c) { + var sym = s; + var dup = names.lookup(sym.name); + if(dup) { + if(checkUnique) { + _this.checker.errorReporter.simpleError(classDecl, "duplicate member name in bases for " + classDecl.name.actualText + ": " + type.symbol.name + " and " + dup.container.name + " both contain member with name " + sym.name); + } + } else { + names.add(sym.name, sym); + } + }, null); + } + if(type.extendsList) { + var len = type.extendsList.length; + for(var i = 0; i < len; i++) { + if(!(type.extendsList[i].symbol.flags & TypeScript.SymbolFlags.RecursivelyReferenced)) { + this.assertUniqueNamesInBaseTypes(names, type.extendsList[i], classDecl, checkUnique); + } + } + } + } + }; + TypeFlow.prototype.checkBaseTypeMemberInheritance = function (derivedType, derivedTypeDecl) { + var _this = this; + var instanceType = derivedType.getInstanceType(); + if(instanceType.extendsList == null) { + return; + } + var len = instanceType.extendsList.length; + if(len > 0) { + var names = new TypeScript.StringHashTable(); + if(instanceType.isClassInstance()) { + for(var i = 0; i < len; i++) { + this.assertUniqueNamesInBaseTypes(names, instanceType.extendsList[i], derivedTypeDecl, i > 0); + } + } + if(instanceType.members) { + instanceType.members.publicMembers.map(function (key, s, c) { + var sym = s; + for(var j = 0; j < len; j++) { + var base = instanceType.extendsList[j]; + if(base.memberScope == null) { + _this.checker.errorReporter.simpleError(derivedTypeDecl, "Base type '" + base.symbol.name + "' lacks an implementation."); + } else { + var bSym = base.memberScope.find(sym.name, false, false); + if(bSym) { + var aType = sym.getType(); + var bType = bSym.getType(); + if(!(_this.checker.sourceIsSubtypeOfTarget(aType, bType))) { + _this.checker.errorReporter.simpleErrorFromSym(sym, "Type of overridden member '" + sym.name + "' is not subtype of original member defined by type '" + bSym.container.name + "'"); + } else { + if((sym.kind() == TypeScript.SymbolKind.Type) && (bSym.kind() == TypeScript.SymbolKind.Field)) { + _this.checker.errorReporter.simpleErrorFromSym(sym, "Cannot override field '" + sym.name + "' with method"); + } + } + } + } + } + }, null); + } + } + }; + TypeFlow.prototype.typeCheckClass = function (classDecl) { + var typeSymbol = classDecl.type.symbol; + if(typeSymbol.typeCheckStatus == TypeScript.TypeCheckStatus.Finished) { + return classDecl; + } else { + if(typeSymbol.typeCheckStatus == TypeScript.TypeCheckStatus.Started) { + return classDecl; + } else { + typeSymbol.typeCheckStatus = TypeScript.TypeCheckStatus.Started; + this.checker.addStartedPTO(typeSymbol); + } + } + var prevScope = this.scope; + var svClassNode = this.thisClassNode; + this.thisClassNode = classDecl; + var classType = classDecl.type; + this.typeCheckBases(classType.instanceType); + this.typeCheckBaseListPrivacy(classDecl.extendsList, typeSymbol, true); + this.typeCheckBaseListPrivacy(classDecl.implementsList, typeSymbol, false); + var prevThisType = this.thisType; + this.thisType = classType.instanceType; + this.scope = classType.instanceType.containedScope; + if(classDecl.constructorDecl) { + this.scope = classType.instanceType.constructorScope; + var ssb = this.scope; + var funcTable = ssb.valueMembers.allMembers; + this.addConstructorLocalArgs(classDecl.constructorDecl.type.symbol, classDecl.constructorDecl.arguments, funcTable, true); + } + this.typeCheck(classDecl.members); + typeSymbol.typeCheckStatus = TypeScript.TypeCheckStatus.Finished; + this.checkBaseTypeMemberInheritance(classType, classDecl); + this.checkMembersImplementInterfaces(classType); + this.typeCheckOverloadSignatures(classType, classDecl); + this.typeCheckOverloadSignatures(classType.instanceType, classDecl); + if(!classDecl.constructorDecl) { + if(classDecl.extendsList && classDecl.extendsList.members.length && classDecl.extendsList.members[0].type && classDecl.extendsList.members[0].type.symbol.type.isClass()) { + TypeScript.cloneParentConstructGroupForChildType(classDecl.type, classDecl.extendsList.members[0].type.symbol.type); + } + } + this.thisType = prevThisType; + this.thisClassNode = svClassNode; + this.scope = prevScope; + return classDecl; + }; + TypeFlow.prototype.typeCheckOverloadSignatures = function (type, ast) { + if(type.call) { + type.call.typeCheck(this.checker, ast, type.construct != null); + } + if(type.construct) { + type.construct.typeCheck(this.checker, ast, false); + } + if(type.index) { + type.index.typeCheck(this.checker, ast, false); + } + }; + TypeFlow.prototype.typeCheckInterface = function (interfaceDecl) { + this.typeCheckBases(interfaceDecl.type); + this.typeCheckBaseListPrivacy(interfaceDecl.extendsList, interfaceDecl.type.symbol, true); + this.typeCheck(interfaceDecl.members); + this.checkBaseTypeMemberInheritance(interfaceDecl.type, interfaceDecl); + if(interfaceDecl.extendsList) { + for(var i = 0; i < interfaceDecl.extendsList.members.length; i++) { + if(interfaceDecl.extendsList.members[i].type.call) { + if(interfaceDecl.type.call) { + interfaceDecl.type.call.signatures = interfaceDecl.type.call.signatures.concat(interfaceDecl.extendsList.members[i].type.call.signatures); + } else { + interfaceDecl.type.call = interfaceDecl.extendsList.members[i].type.call; + } + } + if(interfaceDecl.extendsList.members[i].type.construct) { + if(interfaceDecl.type.construct) { + interfaceDecl.type.construct.signatures = interfaceDecl.type.construct.signatures.concat(interfaceDecl.extendsList.members[i].type.construct.signatures); + } else { + interfaceDecl.type.construct = interfaceDecl.extendsList.members[i].type.construct; + } + } + if(interfaceDecl.extendsList.members[i].type.index) { + if(interfaceDecl.type.index) { + interfaceDecl.type.index.signatures = interfaceDecl.type.index.signatures.concat(interfaceDecl.extendsList.members[i].type.index.signatures); + } else { + interfaceDecl.type.index = interfaceDecl.extendsList.members[i].type.index; + } + } + } + } + return interfaceDecl; + }; + TypeFlow.prototype.typeCheckImportDecl = function (importDecl) { + var mod = importDecl.alias.type; + var sym = null; + var prevInImportTC = this.inImportTypeCheck; + this.inImportTypeCheck = true; + this.typeCheck(importDecl.alias); + mod = importDecl.alias.type; + if(mod == null) { + this.checker.errorReporter.simpleError(importDecl.alias, "Could not resolve module alias '" + importDecl.id.actualText + "'"); + mod = this.checker.anyType; + (importDecl.id.sym).type = mod; + } + importDecl.id.type = mod; + sym = mod.symbol; + if(!mod.isModuleType()) { + this.checker.errorReporter.simpleError(importDecl.alias, "A module cannot be aliased to a non-module type"); + } else { + sym.type = mod; + if(this.checker.typeFlow.currentScript && this.checker.typeFlow.currentScript.topLevelMod && this.checker.typeFlow.currentScript.topLevelMod.mod) { + this.checker.typeFlow.currentScript.topLevelMod.mod.importedModules.push(importDecl); + } + (importDecl.id.sym).type = mod; + if(mod.symbol && mod.symbol.declAST) { + (mod.symbol.declAST).modFlags &= ~TypeScript.ModuleFlags.ShouldEmitModuleDecl; + } + } + this.inImportTypeCheck = prevInImportTC; + return importDecl; + }; + TypeFlow.prototype.typeCheckModule = function (moduleDecl) { + if(!moduleDecl.mod) { + return moduleDecl; + } + if(this.currentScript) { + this.currentScript.requiresGlobal = true; + } + var mod = moduleDecl.mod; + var sym = null; + var prevScope = this.scope; + var prevThisType = this.thisType; + var prevCurrentModDecl = this.checker.currentModDecl; + this.checker.currentModDecl = moduleDecl; + this.thisType = null; + this.scope = mod.containedScope; + this.typeCheck(moduleDecl.members); + sym = mod.symbol; + this.checker.currentModDecl = prevCurrentModDecl; + this.thisType = prevThisType; + this.scope = prevScope; + moduleDecl.type = mod; + if(sym) { + sym.typeCheckStatus = TypeScript.TypeCheckStatus.Finished; + } + return moduleDecl; + }; + TypeFlow.prototype.typeCheckFor = function (forStmt) { + forStmt.init = this.typeCheck(forStmt.init); + this.nestingLevel++; + forStmt.cond = this.typeCheck(forStmt.cond); + this.typeCheckCondExpr(forStmt.cond); + forStmt.incr = this.typeCheck(forStmt.incr); + this.nestingLevel--; + forStmt.body = this.typeCheck(forStmt.body); + this.typeCheckCompoundStmtBlock(forStmt.body, "for statement"); + forStmt.type = this.voidType; + return forStmt; + }; + TypeFlow.prototype.typeCheckWith = function (withStmt) { + if(this.checker.errorsOnWith) { + this.checker.errorReporter.simpleError(withStmt.expr, "All symbols within a 'with' block will be typed as 'any'"); + } + withStmt.expr = this.typeCheck(withStmt.expr); + this.checker.inWith = true; + withStmt.body = this.typeCheck(withStmt.body); + this.typeCheckCompoundStmtBlock(withStmt.body, "with statement"); + this.checker.inWith = false; + return withStmt; + }; + TypeFlow.prototype.typeCheckForIn = function (forInStmt) { + forInStmt.obj = this.typeCheck(forInStmt.obj); + forInStmt.lval = this.cast(this.typeCheck(forInStmt.lval), this.checker.stringType); + if(forInStmt.lval.nodeType == TypeScript.NodeType.VarDecl) { + var varDecl = forInStmt.lval; + if(varDecl.typeExpr) { + this.checker.errorReporter.simpleError(varDecl, "Variable declarations for for/in expressions may not contain a type annotation"); + } + if(varDecl.sym) { + varDecl.sym.setType(this.checker.stringType); + } + } + forInStmt.body = this.typeCheck(forInStmt.body); + this.typeCheckCompoundStmtBlock(forInStmt.body, "for in statement"); + return forInStmt; + }; + TypeFlow.prototype.typeCheckWhile = function (whileStmt) { + whileStmt.cond = this.typeCheck(whileStmt.cond); + this.typeCheckCondExpr(whileStmt.cond); + whileStmt.body = this.typeCheck(whileStmt.body); + this.typeCheckCompoundStmtBlock(whileStmt.body, "while statement"); + whileStmt.type = this.voidType; + return whileStmt; + }; + TypeFlow.prototype.typeCheckDoWhile = function (doWhileStmt) { + doWhileStmt.cond = this.typeCheck(doWhileStmt.cond); + this.typeCheckCondExpr(doWhileStmt.cond); + doWhileStmt.body = this.typeCheck(doWhileStmt.body); + this.typeCheckCompoundStmtBlock(doWhileStmt.body, "do while statement"); + doWhileStmt.type = this.voidType; + return doWhileStmt; + }; + TypeFlow.prototype.typeCheckCondExpr = function (cond) { + if(this.checker.styleSettings.assignmentInCond) { + if((cond !== null) && (cond.nodeType >= TypeScript.NodeType.Asg) && (cond.nodeType <= TypeScript.NodeType.LastAsg)) { + this.checker.errorReporter.simpleError(cond, "top-level assignment statement in conditional expression"); + } + } + }; + TypeFlow.prototype.typeCheckCompoundStmtBlock = function (stmts, stmtType) { + if(this.checker.styleSettings.blockInCompoundStmt && stmts) { + if(stmts.nodeType != TypeScript.NodeType.Block) { + this.checker.errorReporter.styleError(stmts, stmtType + " requires a block"); + } + } + }; + TypeFlow.prototype.typeCheckIf = function (ifStmt) { + ifStmt.cond = this.typeCheck(ifStmt.cond); + this.typeCheckCondExpr(ifStmt.cond); + ifStmt.thenBod = this.typeCheck(ifStmt.thenBod); + ifStmt.elseBod = this.typeCheck(ifStmt.elseBod); + this.typeCheckCompoundStmtBlock(ifStmt.thenBod, "if statement"); + this.typeCheckCompoundStmtBlock(ifStmt.elseBod, "if statement"); + ifStmt.type = this.voidType; + return ifStmt; + }; + TypeFlow.prototype.typeFromAccessorFuncDecl = function (funcDecl) { + if(!funcDecl.isAccessor()) { + return null; + } + if(TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.GetAccessor)) { + return funcDecl.type.call.signatures[0].returnType.type; + } else { + return funcDecl.type.call.signatures[0].parameters[0].getType(); + } + }; + TypeFlow.prototype.typeCheckObjectLit = function (objectLit) { + var resultType = new TypeScript.Type(); + resultType.symbol = new TypeScript.TypeSymbol(this.checker.anon, objectLit.minChar, objectLit.limChar - objectLit.minChar, this.checker.locationInfo.unitIndex, resultType); + resultType.members = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + resultType.memberScope = new TypeScript.SymbolTableScope(resultType.members, null, null, null, null); + var aggScope = new TypeScript.SymbolAggregateScope(resultType.symbol); + aggScope.addParentScope(resultType.memberScope); + aggScope.addParentScope(this.scope); + resultType.containedScope = aggScope; + var memberDecls = objectLit.operand; + var prevThisType = this.thisType; + var acceptTargetType = false; + var targetType = null; + if(this.checker.hasTargetType()) { + targetType = this.checker.getTargetTypeContext().contextualType; + if(targetType && targetType.symbol && !this.checker.typeStatusIsFinished(targetType.symbol.typeCheckStatus)) { + if(targetType.symbol.declAST) { + this.typeCheck(targetType.symbol.declAST); + } + } + acceptTargetType = true; + } + if(memberDecls) { + for(var i = 0, len = memberDecls.members.length; i < len; i++) { + var binex = memberDecls.members[i]; + var id = binex.operand1; + var text; + var targetMember = null; + var fieldSymbol = null; + if(id.nodeType == TypeScript.NodeType.Name) { + text = (id).text; + } else { + if(id.nodeType == TypeScript.NodeType.QString) { + var idText = (id).text; + text = idText.substring(1, idText.length - 1); + } else { + this.checker.errorReporter.simpleError(objectLit, "malformed object literal"); + resultType = this.anyType; + break; + } + } + if(acceptTargetType && targetType.memberScope) { + targetMember = targetType.memberScope.find(text, false, false); + } + if(binex.operand2.nodeType == TypeScript.NodeType.FuncDecl && (binex.operand2).isAccessor()) { + var funcDecl = binex.operand2; + var accessorSym = resultType.members.publicMembers.lookup(text); + accessorSym = this.checker.createAccessorSymbol(funcDecl, accessorSym, resultType, true, false, resultType.memberScope, null); + funcDecl.accessorSymbol = accessorSym; + fieldSymbol = accessorSym; + if(id.nodeType == TypeScript.NodeType.Name) { + (id).sym = accessorSym; + } + } + this.checker.typeCheckWithContextualType(acceptTargetType && targetMember ? targetMember.getType() : null, false, acceptTargetType, binex.operand2); + if(acceptTargetType && targetMember) { + if((binex.operand2.type == this.anyType || this.checker.sourceIsAssignableToTarget(binex.operand2.type, targetMember.getType())) || (binex.operand2.nodeType == TypeScript.NodeType.FuncDecl && (binex.operand2).isAccessor() && this.typeFromAccessorFuncDecl(binex.operand2) == targetMember.getType())) { + binex.operand1.type = targetMember.getType(); + } + } else { + binex.operand2.type = binex.operand2.type == this.checker.undefinedType ? this.anyType : binex.operand2.type; + } + if(fieldSymbol == null) { + var memberType = binex.operand2.type; + var field = new TypeScript.ValueLocation(); + fieldSymbol = new TypeScript.FieldSymbol(text, id.minChar, this.checker.locationInfo.unitIndex, true, field); + fieldSymbol.flags |= TypeScript.SymbolFlags.Property; + field.symbol = fieldSymbol; + fieldSymbol.typeCheckStatus = this.checker.getTypeCheckFinishedStatus(); + field.typeLink = new TypeScript.TypeLink(); + field.typeLink.type = memberType; + resultType.members.publicMembers.add(text, fieldSymbol); + } + fieldSymbol.isObjectLitField = true; + } + } + this.thisType = prevThisType; + objectLit.type = resultType; + if(targetType) { + objectLit.targetType = targetType; + } + }; + TypeFlow.prototype.typeCheckArrayLit = function (arrayLit) { + var elements = arrayLit.operand; + var elementType = this.anyType; + var targetElementType = null; + var comparisonInfo = new TypeScript.TypeComparisonInfo(); + comparisonInfo.onlyCaptureFirstError = true; + if(this.checker.hasTargetType()) { + var targetType = this.checker.getTargetTypeContext().contextualType; + if(targetType.elementType) { + targetElementType = targetType.elementType; + } + } + if(elements) { + var prevInArrayElemTypeCheck = this.inArrayElementTypeCheck; + this.inArrayElementTypeCheck = true; + this.checker.typeCheckWithContextualType(targetElementType, this.checker.inProvisionalTypecheckMode(), targetElementType != null, elements); + this.inArrayElementTypeCheck = prevInArrayElemTypeCheck; + elementType = elements.members[0].type; + var collection = { + getLength: function () { + return elements.members.length; + }, + setTypeAtIndex: function (index, type) { + elements.members[index].type = type; + }, + getTypeAtIndex: function (index) { + return elements.members[index].type; + } + }; + elementType = this.checker.findBestCommonType(elementType, targetElementType, collection, false, comparisonInfo); + if(elementType == this.checker.undefinedType || (!prevInArrayElemTypeCheck && elementType == this.nullType)) { + elementType = this.anyType; + } + } + if(!elementType) { + var emsg = "Incompatible types in array literal expression"; + if(!comparisonInfo.message) { + this.checker.errorReporter.simpleError(arrayLit, emsg); + } else { + this.checker.errorReporter.simpleError(arrayLit, emsg + ": " + comparisonInfo.message); + } + elementType = this.anyType; + } else { + if(targetElementType) { + if(this.checker.sourceIsAssignableToTarget(elementType, targetElementType)) { + elementType = targetElementType; + } + } + } + arrayLit.type = this.checker.makeArrayType(elementType); + }; + TypeFlow.prototype.checkForVoidConstructor = function (type, ast) { + if(type && type.construct && type.construct.signatures.length > 0) { + for(var i = 0; i < type.construct.signatures.length; i++) { + if(type.construct.signatures[i].returnType.type == this.checker.voidType) { + this.checker.errorReporter.simpleError(ast, "Constructors may not have a return type of 'void'"); + break; + } + } + } + }; + TypeFlow.prototype.typeCheckReturn = function (returnStmt) { + if(this.thisFnc) { + var targetType = null; + if(this.checker.hasTargetType()) { + var tcContext = this.checker.getTargetTypeContext(); + var accessorType = tcContext.targetAccessorType; + if(accessorType) { + targetType = accessorType; + } else { + var targetSig = this.checker.getTargetTypeContext().targetSig; + if(targetSig && targetSig.returnType.type != this.voidType) { + targetType = targetSig.returnType.type; + } + } + } + if(returnStmt.returnExpression) { + this.thisFnc.fncFlags |= TypeScript.FncFlags.HasReturnExpression; + if(targetType == null && this.thisFnc.returnTypeAnnotation && this.thisFnc.returnTypeAnnotation.type && this.thisFnc.returnTypeAnnotation.type != this.voidType) { + targetType = this.thisFnc.returnTypeAnnotation.type; + } + this.checker.typeCheckWithContextualType(targetType, this.checker.inProvisionalTypecheckMode(), targetType != null, returnStmt.returnExpression); + var expectedReturnType = (this.thisFnc.returnTypeAnnotation && this.thisFnc.returnTypeAnnotation.type) ? this.thisFnc.returnTypeAnnotation.type : targetType; + if(expectedReturnType) { + if(expectedReturnType == this.voidType && returnStmt.returnExpression.type != this.voidType) { + this.checker.errorReporter.simpleError(returnStmt, "Return with value expression in void function"); + returnStmt.type = returnStmt.returnExpression.type; + } else { + returnStmt.returnExpression = this.cast(returnStmt.returnExpression, expectedReturnType); + returnStmt.type = expectedReturnType; + } + } else { + if(targetType) { + if(returnStmt.returnExpression.type != this.voidType) { + returnStmt.returnExpression = this.cast(returnStmt.returnExpression, targetType); + } else { + returnStmt.returnExpression.type = targetType; + } + } + returnStmt.type = returnStmt.returnExpression.type; + } + this.thisFnc.returnStatementsWithExpressions[this.thisFnc.returnStatementsWithExpressions.length] = returnStmt; + } else { + returnStmt.type = targetType == null ? this.checker.voidType : targetType; + } + } + return returnStmt; + }; + TypeFlow.prototype.typeCheckInstOf = function (ast) { + var binex = ast; + binex.operand1 = this.typeCheck(binex.operand1); + binex.operand2 = this.typeCheck(binex.operand2); + if(!((binex.operand1.type == this.checker.anyType || this.checker.sourceIsSubtypeOfTarget(binex.operand1.type, this.objectInterfaceType)) && (binex.operand2.type == this.anyType || this.checker.sourceIsSubtypeOfTarget(binex.operand2.type, this.functionInterfaceType)))) { + this.checker.errorReporter.simpleError(ast, "The instanceof operator requires the left operand to be of type Any or an object type, and the right operand to be of type Any or a subtype of the Function interface type"); + } + binex.type = this.booleanType; + return binex; + }; + TypeFlow.prototype.typeCheckCommaOperator = function (ast) { + var binex = ast; + binex.operand1 = this.typeCheck(binex.operand1); + binex.operand2 = this.typeCheck(binex.operand2); + binex.type = binex.operand2.type; + return binex; + }; + TypeFlow.prototype.typeCheckLogOr = function (binex) { + binex.operand1 = this.typeCheck(binex.operand1); + binex.operand2 = this.typeCheck(binex.operand2); + var leftType = binex.operand1.type; + var rightType = binex.operand2.type; + if(leftType == this.checker.anyType || rightType == this.checker.anyType) { + binex.type = this.checker.anyType; + } else { + if(leftType == this.checker.booleanType) { + if(rightType == this.checker.booleanType) { + binex.type = this.checker.booleanType; + } else { + binex.type = this.checker.anyType; + } + } else { + if(leftType == this.checker.numberType) { + if(rightType == this.checker.numberType) { + binex.type = this.checker.numberType; + } else { + binex.type = this.checker.anyType; + } + } else { + if(leftType == this.checker.stringType) { + if(rightType == this.checker.stringType) { + binex.type = this.checker.stringType; + } else { + binex.type = this.checker.anyType; + } + } else { + if(this.checker.sourceIsSubtypeOfTarget(leftType, rightType)) { + binex.type = rightType; + } else { + if(this.checker.sourceIsSubtypeOfTarget(rightType, leftType)) { + binex.type = leftType; + } else { + binex.type = this.checker.anyType; + } + } + } + } + } + } + return binex; + }; + TypeFlow.prototype.typeCheckLogAnd = function (binex) { + binex.operand1 = this.typeCheck(binex.operand1); + binex.operand2 = this.typeCheck(binex.operand2); + binex.type = binex.operand2.type; + return binex; + }; + TypeFlow.prototype.tryAddCandidates = function (signature, actuals, exactCandidates, conversionCandidates, comparisonInfo) { + var lowerBound = signature.nonOptionalParameterCount; + var upperBound = signature.parameters.length; + var formalLen = lowerBound; + var acceptable = false; + if((actuals.length >= lowerBound) && (signature.hasVariableArgList || actuals.length <= upperBound)) { + formalLen = (signature.hasVariableArgList ? signature.parameters.length : actuals.length); + acceptable = true; + } + var repeatType = null; + if(acceptable || signature.hasVariableArgList) { + if(signature.hasVariableArgList) { + formalLen -= 1; + repeatType = (signature.parameters[formalLen]).parameter.typeLink.type; + repeatType = repeatType.elementType; + acceptable = actuals.length >= formalLen; + } + var len = actuals.length; + var exact = acceptable; + var convert = acceptable; + for(var i = 0; i < len; i++) { + var typeA; + if(i < formalLen) { + typeA = (signature.parameters[i]).parameter.typeLink.type; + } else { + typeA = repeatType; + } + var typeB = actuals[i]; + if(!typeA || !typeB || !(this.checker.typesAreIdentical(typeA, typeB))) { + exact = false; + } + if(!this.checker.sourceIsAssignableToTarget(typeB, typeA, comparisonInfo)) { + convert = false; + } + if(!(exact || convert)) { + break; + } + } + if(exact) { + exactCandidates[exactCandidates.length] = signature; + } else { + if(convert && (exactCandidates.length == 0)) { + conversionCandidates[conversionCandidates.length] = signature; + } + } + } + }; + TypeFlow.prototype.resolveOverload = function (application, group) { + var rd = this.resolutionDataCache.getResolutionData(); + var actuals = rd.actuals; + var exactCandidates = rd.exactCandidates; + var conversionCandidates = rd.conversionCandidates; + var candidate = null; + var hasOverloads = group.signatures.length > 1; + var comparisonInfo = new TypeScript.TypeComparisonInfo(); + var args = null; + var target = null; + if(application.nodeType == TypeScript.NodeType.Call || application.nodeType == TypeScript.NodeType.New) { + var callEx = application; + args = callEx.arguments; + target = callEx.target; + if(callEx.arguments) { + var len = callEx.arguments.members.length; + for(var i = 0; i < len; i++) { + actuals[i] = callEx.arguments.members[i].type; + } + } + } else { + if(application.nodeType == TypeScript.NodeType.Index) { + var binExp = application; + target = binExp.operand1; + args = new TypeScript.ASTList(); + args.members[0] = binExp.operand2; + actuals[0] = binExp.operand2.type; + } + } + for(var j = 0, groupLen = group.signatures.length; j < groupLen; j++) { + var signature = group.signatures[j]; + if(hasOverloads && signature == group.definitionSignature && !this.checker.canCallDefinitionSignature) { + continue; + } + if(!signature.returnType.type && signature.declAST && (signature.typeCheckStatus != TypeScript.TypeCheckStatus.Finished)) { + this.typeCheckFunction(signature.declAST); + } + this.tryAddCandidates(signature, actuals, exactCandidates, conversionCandidates, comparisonInfo); + } + if(exactCandidates.length == 0) { + var applicableCandidates = this.checker.getApplicableSignatures(conversionCandidates, args, comparisonInfo); + if(applicableCandidates.length > 0) { + var candidateInfo = this.checker.findMostApplicableSignature(applicableCandidates, args); + if(candidateInfo.ambiguous) { + this.checker.errorReporter.simpleError(target, "Ambiguous call expression - could not choose overload"); + } + candidate = candidateInfo.sig; + } else { + var emsg = "Supplied parameters do not match any signature of call target"; + if(comparisonInfo.message) { + this.checker.errorReporter.simpleError(target, emsg + ":\n\t" + comparisonInfo.message); + } else { + this.checker.errorReporter.simpleError(target, emsg); + } + } + } else { + if(exactCandidates.length > 1) { + var applicableSigs = []; + for(var i = 0; i < exactCandidates.length; i++) { + applicableSigs[i] = { + signature: exactCandidates[i], + hadProvisionalErrors: false + }; + } + var candidateInfo = this.checker.findMostApplicableSignature(applicableSigs, args); + if(candidateInfo.ambiguous) { + this.checker.errorReporter.simpleError(target, "Ambiguous call expression - could not choose overload"); + } + candidate = candidateInfo.sig; + } else { + candidate = exactCandidates[0]; + } + } + this.resolutionDataCache.returnResolutionData(rd); + return candidate; + }; + TypeFlow.prototype.typeCheckNew = function (ast) { + var callEx = ast; + callEx.target = this.typeCheck(callEx.target); + var target = callEx.target; + if(target.type.construct || target.type.call) { + this.preTypeCheckCallArgs(callEx.arguments); + } else { + callEx.arguments = this.typeCheck(callEx.arguments); + } + if(target.type == this.anyType) { + callEx.type = this.anyType; + callEx.arguments = this.typeCheck(callEx.arguments); + } else { + if(target.type.construct) { + var signature = this.resolveOverload(callEx, target.type.construct); + if(signature == null) { + callEx.type = this.anyType; + } else { + if(signature.returnType.type == this.voidType) { + callEx.type = this.anyType; + callEx.signature = signature; + } else { + callEx.type = signature.returnType.type; + callEx.signature = signature; + } + } + } else { + if(target.type.call) { + var signature = this.resolveOverload(callEx, target.type.call); + if(signature == null) { + callEx.type = this.anyType; + } else { + if((signature.returnType.type == this.voidType) || (signature.returnType.type == this.anyType)) { + callEx.type = this.anyType; + callEx.signature = signature; + } else { + this.checker.errorReporter.simpleError(callEx.target, "new expression only valid on constructors"); + } + } + } else { + if(target.type.elementType) { + callEx.type = target.type; + } else { + this.checker.errorReporter.invalidCall(callEx, callEx.nodeType, this.scope); + callEx.type = this.anyType; + } + } + } + } + this.postTypeCheckCallArgs(callEx); + return callEx; + }; + TypeFlow.prototype.preTypeCheckCallArgs = function (args) { + if(!args) { + return; + } + for(var i = 0; i < args.members.length; i++) { + switch(args.members[i].nodeType) { + case TypeScript.NodeType.FuncDecl: + case TypeScript.NodeType.ObjectLit: + case TypeScript.NodeType.ArrayLit: { + continue; + + } + default: { + this.typeCheck(args.members[i]); + break; + + } + } + } + }; + TypeFlow.prototype.postTypeCheckCallArgs = function (callEx) { + var acceptedTargetType = false; + var i = 0; + if(callEx.target && callEx.target.type && callEx.signature && callEx.arguments) { + var sig = callEx.signature; + if(sig && callEx.arguments.members.length >= sig.nonOptionalParameterCount) { + acceptedTargetType = true; + var targetType = null; + var nonVarArgFormalParamLength = sig.hasVariableArgList ? sig.parameters.length - 1 : sig.parameters.length; + var nonVarArgActualParamLength = callEx.arguments.members.length < nonVarArgFormalParamLength ? callEx.arguments.members.length : nonVarArgFormalParamLength; + for(i = 0; i < nonVarArgActualParamLength; i++) { + targetType = sig.parameters[i].getType(); + switch(callEx.arguments.members[i].nodeType) { + case TypeScript.NodeType.FuncDecl: + case TypeScript.NodeType.ObjectLit: + case TypeScript.NodeType.ArrayLit: { + this.checker.typeCheckWithContextualType(targetType, this.checker.inProvisionalTypecheckMode(), !sig.parameters[i].declAST.isParenthesized, callEx.arguments.members[i]); + break; + + } + } + } + if(sig.hasVariableArgList) { + var varArgParamIndex = sig.nonOptionalParameterCount - 1; + targetType = sig.parameters[varArgParamIndex].getType(); + if(targetType) { + targetType = targetType.elementType; + } + var isParenthesized = !sig.parameters[varArgParamIndex].declAST.isParenthesized; + for(i = nonVarArgActualParamLength; i < callEx.arguments.members.length; i++) { + switch(callEx.arguments.members[i].nodeType) { + case TypeScript.NodeType.FuncDecl: + case TypeScript.NodeType.ObjectLit: + case TypeScript.NodeType.ArrayLit: { + this.checker.typeCheckWithContextualType(targetType, this.checker.inProvisionalTypecheckMode(), isParenthesized, callEx.arguments.members[i]); + break; + + } + } + } + } + } + } + if(!acceptedTargetType && callEx.arguments) { + this.checker.killCurrentContextualType(); + for(i = 0; i < callEx.arguments.members.length; i++) { + switch(callEx.arguments.members[i].nodeType) { + case TypeScript.NodeType.FuncDecl: + case TypeScript.NodeType.ObjectLit: + case TypeScript.NodeType.ArrayLit: { + this.typeCheck(callEx.arguments.members[i]); + break; + + } + default: { + continue; + + } + } + } + } + }; + TypeFlow.prototype.typeCheckCall = function (ast) { + var callEx = ast; + if(this.checker.styleSettings.newMustBeUsed && (ast.nodeType == TypeScript.NodeType.New)) { + if(TypeScript.hasFlag(ast.flags, TypeScript.ASTFlags.IsStatement)) { + this.checker.errorReporter.styleError(ast, "use of new expression as a statement"); + } + } else { + if((!this.checker.styleSettings.evalOK) && (ast.nodeType == TypeScript.NodeType.Call)) { + if((callEx.target.nodeType == TypeScript.NodeType.Name) && ((callEx.target).text == "eval")) { + this.checker.errorReporter.styleError(callEx, "eval not permitted"); + } + } + } + if(callEx.target.nodeType == TypeScript.NodeType.FuncDecl) { + (callEx.target).isInlineCallLiteral = true; + } + var prevInSuperCall = this.inSuperCall; + if(callEx.target.nodeType == TypeScript.NodeType.Super) { + this.inSuperCall = true; + } + callEx.target = this.typeCheck(callEx.target); + this.preTypeCheckCallArgs(callEx.arguments); + var target = callEx.target; + if((target.type == null) || (target.type == this.anyType) || (this.functionInterfaceType && target.type == this.functionInterfaceType)) { + callEx.type = this.anyType; + } else { + var fnType = target.type; + if(fnType.call) { + var signature = this.resolveOverload(callEx, fnType.call); + if(signature == null) { + callEx.type = this.anyType; + } else { + callEx.type = signature.returnType.type; + callEx.signature = signature; + } + } else { + if(callEx.target.nodeType == TypeScript.NodeType.Super && this.thisFnc && this.thisFnc.isConstructor && TypeScript.hasFlag(this.thisFnc.fncFlags, TypeScript.FncFlags.ClassMethod)) { + var signature = fnType.symbol.type.construct ? this.resolveOverload(callEx, fnType.symbol.type.construct) : null; + if(signature == null) { + callEx.type = this.anyType; + } else { + callEx.flags |= TypeScript.ASTFlags.ClassBaseConstructorCall; + callEx.type = signature.returnType.type; + callEx.signature = signature; + } + } else { + callEx.type = this.anyType; + this.checker.errorReporter.invalidCall(callEx, callEx.nodeType, this.scope); + } + } + } + this.postTypeCheckCallArgs(callEx); + this.inSuperCall = prevInSuperCall; + return callEx; + }; + TypeFlow.prototype.assignScopes = function (ast) { + var script = ast; + this.checker.locationInfo = script.locationInfo; + var globalChain = new ScopeChain(this.checker.gloMod, null, this.globalScope); + var context = new TypeScript.AssignScopeContext(globalChain, this, [ + this.checker.currentModDecl + ]); + TypeScript.getAstWalkerFactory().walk(ast, TypeScript.preAssignScopes, TypeScript.postAssignScopes, null, context); + }; + TypeFlow.prototype.findMemberScope = function (enclosingScopeContext, matchFlag) { + var enclosingScope = enclosingScopeContext.getScope(); + var pos = enclosingScopeContext.pos - enclosingScopeContext.getScriptFragmentPosition(); + var scriptFragment = enclosingScopeContext.getScriptFragment(); + var memContext = new TypeScript.MemberScopeContext(this, pos, matchFlag); + memContext.scope = enclosingScope; + if(scriptFragment.nodeType == TypeScript.NodeType.Name) { + return scriptFragment.type.getMemberScope(this); + } else { + TypeScript.getAstWalkerFactory().walk(scriptFragment, TypeScript.preFindMemberScope, null, null, memContext); + if(memContext.ast && enclosingScopeContext.enclosingClassDecl && memContext.ast.type == enclosingScopeContext.enclosingClassDecl.type.instanceType) { + enclosingScopeContext.publicsOnly = false; + } + if(memContext.type) { + return memContext.type.getMemberScope(this); + } else { + return null; + } + } + }; + TypeFlow.prototype.findMemberScopeAt = function (enclosingScopeContext) { + return this.findMemberScope(enclosingScopeContext, TypeScript.ASTFlags.DotLHS); + }; + TypeFlow.prototype.findMemberScopeAtFullAst = function (enclosingScopeContext) { + var matchFlag = TypeScript.ASTFlags.DotLHS; + var pos = enclosingScopeContext.pos; + var astResult = null; + var preFindMemberScopeFullAst = function (ast, parent, walker) { + if(TypeScript.isValidAstNode(ast)) { + if(TypeScript.hasFlag(ast.flags, matchFlag) && (pos == ast.limChar || (pos - 1) == ast.limChar)) { + astResult = ast; + walker.options.stopWalk(); + } + walker.options.goChildren = (ast.minChar <= pos) && (pos <= ast.limChar); + } + return ast; + }; + var preFindMemberScopeFullAstFuzy = function (ast, parent, walker) { + if(TypeScript.isValidAstNode(ast)) { + if(TypeScript.hasFlag(ast.flags, matchFlag) && ((ast.minChar < pos) && (pos <= ast.limChar))) { + astResult = ast; + } + walker.options.goChildren = (ast.minChar <= pos) && (pos <= ast.limChar); + } + return ast; + }; + TypeScript.getAstWalkerFactory().walk(enclosingScopeContext.script, preFindMemberScopeFullAst); + if(astResult == null) { + TypeScript.getAstWalkerFactory().walk(enclosingScopeContext.script, preFindMemberScopeFullAstFuzy); + } + if(astResult && enclosingScopeContext.enclosingClassDecl && astResult.type == enclosingScopeContext.enclosingClassDecl.type.instanceType) { + enclosingScopeContext.publicsOnly = false; + } + if(astResult && astResult.type) { + return astResult.type.getMemberScope(this); + } else { + return null; + } + }; + return TypeFlow; + })(); + TypeScript.TypeFlow = TypeFlow; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + (function (Primitive) { + Primitive._map = []; + Primitive.None = 0; + Primitive.Void = 1; + Primitive.Double = 2; + Primitive.String = 4; + Primitive.Boolean = 8; + Primitive.Any = 16; + Primitive.Null = 32; + Primitive.Undefined = 64; + })(TypeScript.Primitive || (TypeScript.Primitive = {})); + var Primitive = TypeScript.Primitive; + var MemberName = (function () { + function MemberName() { + this.prefix = ""; + this.suffix = ""; + } + MemberName.prototype.isString = function () { + return false; + }; + MemberName.prototype.isArray = function () { + return false; + }; + MemberName.prototype.toString = function () { + return MemberName.memberNameToString(this); + }; + MemberName.memberNameToString = function memberNameToString(memberName) { + var result = memberName.prefix; + if(memberName.isString()) { + result += (memberName).text; + } else { + var ar = memberName; + for(var index = 0; index < ar.entries.length; index++) { + result += MemberName.memberNameToString(ar.entries[index]); + result += ar.delim; + } + } + result += memberName.suffix; + return result; + } + MemberName.create = function create(arg1, arg2, arg3) { + if(typeof arg1 == "string") { + return new MemberNameString(arg1); + } else { + var result = new MemberNameArray(); + if(arg2) { + result.prefix = arg2; + } + if(arg3) { + result.suffix = arg3; + } + result.entries.push(arg1); + return result; + } + } + return MemberName; + })(); + TypeScript.MemberName = MemberName; + var MemberNameString = (function (_super) { + __extends(MemberNameString, _super); + function MemberNameString(text) { + _super.call(this); + this.text = text; + } + MemberNameString.prototype.isString = function () { + return true; + }; + return MemberNameString; + })(MemberName); + TypeScript.MemberNameString = MemberNameString; + var MemberNameArray = (function (_super) { + __extends(MemberNameArray, _super); + function MemberNameArray() { + _super.apply(this, arguments); + + this.delim = ""; + this.entries = []; + } + MemberNameArray.prototype.isArray = function () { + return true; + }; + MemberNameArray.prototype.add = function (entry) { + this.entries.push(entry); + }; + MemberNameArray.prototype.addAll = function (entries) { + for(var i = 0; i < entries.length; i++) { + this.entries.push(entries[i]); + } + }; + return MemberNameArray; + })(MemberName); + TypeScript.MemberNameArray = MemberNameArray; + var currentTypeID = -1; + var Type = (function () { + function Type() { + this.typeID = currentTypeID++; + this.construct = null; + this.call = null; + this.index = null; + this.passTypeCreated = TypeScript.CompilerDiagnostics.analysisPass; + this.primitiveTypeClass = Primitive.None; + this.typeFlags = TypeScript.TypeFlags.None; + } + Type.prototype.baseClass = function () { + if(this.extendsList && (this.extendsList.length > 0)) { + return this.extendsList[0]; + } else { + return null; + } + }; + Type.prototype.getArrayBase = function (arrInstType, checker) { + return this.arrayCache.specialize(arrInstType, checker); + }; + Type.prototype.isClass = function () { + return this.instanceType != null; + }; + Type.prototype.isArray = function () { + return this.elementType != null; + }; + Type.prototype.isClassInstance = function () { + return this.symbol && !this.elementType && (this.symbol).type.isClass(); + }; + Type.prototype.getInstanceType = function () { + if(this.isClass()) { + return this.instanceType; + } else { + return this; + } + }; + Type.prototype.hasImplementation = function () { + return TypeScript.hasFlag(this.typeFlags, TypeScript.TypeFlags.HasImplementation); + }; + Type.prototype.setHasImplementation = function () { + this.typeFlags |= TypeScript.TypeFlags.HasImplementation; + }; + Type.prototype.isDouble = function () { + return TypeScript.hasFlag(this.primitiveTypeClass, Primitive.Double); + }; + Type.prototype.isString = function () { + return TypeScript.hasFlag(this.primitiveTypeClass, Primitive.String); + }; + Type.prototype.isBoolean = function () { + return TypeScript.hasFlag(this.primitiveTypeClass, Primitive.Boolean); + }; + Type.prototype.isNull = function () { + return TypeScript.hasFlag(this.primitiveTypeClass, Primitive.Null); + }; + Type.prototype.getTypeName = function () { + return this.getMemberTypeName("", true, false, null); + }; + Type.prototype.getScopedTypeName = function (scope) { + return this.getMemberTypeName("", true, false, scope); + }; + Type.prototype.getScopedTypeNameEx = function (scope) { + return this.getMemberTypeNameEx("", true, false, scope); + }; + Type.prototype.callCount = function () { + var total = 0; + if(this.call) { + total += this.call.signatures.length; + } + if(this.construct) { + total += this.construct.signatures.length; + } + if(this.index) { + total += this.index.signatures.length; + } + return total; + }; + Type.prototype.getMemberTypeName = function (prefix, topLevel, isElementType, scope) { + var memberName = this.getMemberTypeNameEx(prefix, topLevel, isElementType, scope); + return memberName.toString(); + }; + Type.prototype.getMemberTypeNameEx = function (prefix, topLevel, isElementType, scope) { + if(this.elementType) { + return MemberName.create(this.elementType.getMemberTypeNameEx(prefix, false, true, scope), "", "[]"); + } else { + if(this.symbol && this.symbol.name && this.symbol.name != "_anonymous" && (((this.call == null) && (this.construct == null) && (this.index == null)) || (TypeScript.hasFlag(this.typeFlags, TypeScript.TypeFlags.BuildingName)) || (this.members && (!this.isClass())))) { + var tn = this.symbol.scopeRelativeName(scope); + return MemberName.create(tn == "null" ? "any" : tn); + } else { + if(this.members || this.call || this.construct) { + if(TypeScript.hasFlag(this.typeFlags, TypeScript.TypeFlags.BuildingName)) { + return MemberName.create("this"); + } + this.typeFlags |= TypeScript.TypeFlags.BuildingName; + var builder = ""; + var allMemberNames = new MemberNameArray(); + var curlies = isElementType || this.index != null; + var memCount = 0; + var delim = "; "; + if(this.members) { + this.members.allMembers.map(function (key, s, unused) { + var sym = s; + if(!TypeScript.hasFlag(sym.flags, TypeScript.SymbolFlags.BuiltIn)) { + var typeNameMember = sym.getTypeNameEx(scope); + if(typeNameMember.isArray() && (typeNameMember).delim == delim) { + allMemberNames.addAll((typeNameMember).entries); + } else { + allMemberNames.add(typeNameMember); + } + memCount++; + curlies = true; + } + }, null); + } + var signatureCount = this.callCount(); + var j; + var len = 0; + var shortform = !curlies && signatureCount == 1 && topLevel; + if(this.call) { + allMemberNames.addAll(this.call.toStrings(prefix, shortform, scope)); + } + if(this.construct) { + allMemberNames.addAll(this.construct.toStrings("new", shortform, scope)); + } + if(this.index) { + allMemberNames.addAll(this.index.toStrings("", shortform, scope)); + } + if((curlies) || ((signatureCount > 1) && topLevel)) { + allMemberNames.prefix = "{ "; + allMemberNames.suffix = "}"; + allMemberNames.delim = delim; + } else { + if(allMemberNames.entries.length > 1) { + allMemberNames.delim = delim; + } + } + this.typeFlags &= (~TypeScript.TypeFlags.BuildingName); + if((signatureCount == 0) && (memCount == 0)) { + return MemberName.create("{}"); + } else { + return allMemberNames; + } + } else { + return MemberName.create("{}"); + } + } + } + }; + Type.prototype.checkDecl = function (checker) { + if(this.isClassInstance() || this.isClass()) { + if(this.symbol.declAST) { + checker.typeFlow.inScopeTypeCheckDecl(this.symbol.declAST); + } + } + }; + Type.prototype.getMemberScope = function (flow) { + if(this == flow.anyType) { + return null; + } else { + if(this.isDouble()) { + if(flow.numberInterfaceType) { + return flow.numberInterfaceType.memberScope; + } else { + return null; + } + } else { + if(this.isBoolean()) { + if(flow.booleanInterfaceType) { + return flow.booleanInterfaceType.memberScope; + } else { + return null; + } + } else { + if(this == flow.stringType) { + if(flow.stringInterfaceType) { + return flow.stringInterfaceType.memberScope; + } else { + return null; + } + } else { + if(this.elementType) { + if(flow.arrayInterfaceType) { + var arrInstType = this.elementType.getArrayBase(flow.arrayInterfaceType, flow.checker); + return arrInstType.memberScope; + } else { + return null; + } + } else { + return this.memberScope; + } + } + } + } + } + }; + Type.prototype.isReferenceType = function () { + return this.members || this.extendsList || this.construct || this.call || this.index || this.elementType; + }; + Type.prototype.specializeType = function (pattern, replacement, checker, membersOnly) { + if(pattern == this) { + return replacement; + } + var result = this; + if(membersOnly) { + if(this.isReferenceType()) { + result = new Type(); + if(this.members) { + result.members = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + this.members.publicMembers.map(function (key, s, unused) { + var sym = s; + var bSym = sym.specializeType(pattern, replacement, checker); + result.members.addPublicMember(bSym.name, bSym); + }, null); + this.members.privateMembers.map(function (key, s, unused) { + var sym = s; + var bSym = sym.specializeType(pattern, replacement, checker); + result.members.addPrivateMember(bSym.name, bSym); + }, null); + } + if(this.ambientMembers) { + result.ambientMembers = new TypeScript.ScopedMembers(new TypeScript.DualStringHashTable(new TypeScript.StringHashTable(), new TypeScript.StringHashTable())); + this.ambientMembers.publicMembers.map(function (key, s, unused) { + var sym = s; + var bSym = sym.specializeType(pattern, replacement, checker); + result.ambientMembers.addPublicMember(bSym.name, bSym); + }, null); + this.ambientMembers.privateMembers.map(function (key, s, unused) { + var sym = s; + var bSym = sym.specializeType(pattern, replacement, checker); + result.ambientMembers.addPrivateMember(bSym.name, bSym); + }, null); + } + result.containedScope = checker.scopeOf(result); + result.memberScope = result.containedScope; + } + } else { + if(this.elementType) { + if(this.elementType == pattern) { + result = checker.makeArrayType(replacement); + } else { + if(this.elementType.elementType == pattern) { + result = checker.makeArrayType(checker.makeArrayType(replacement)); + } + } + } else { + if(this.call) { + result = new Type(); + result.call = this.call.specializeType(pattern, replacement, checker); + } + } + } + return result; + }; + Type.prototype.hasBase = function (baseType) { + if(baseType == this) { + return true; + } else { + if(this.extendsList) { + for(var i = 0, len = this.extendsList.length; i < len; i++) { + if(this.extendsList[i].hasBase(baseType)) { + return true; + } + } + } + } + return false; + }; + Type.prototype.mergeOrdered = function (b, checker, acceptVoid, comparisonInfo) { + if((this == checker.anyType) || (b == checker.anyType)) { + return checker.anyType; + } else { + if(this == b) { + return this; + } else { + if((b == checker.nullType) && this != checker.nullType) { + return this; + } else { + if((this == checker.nullType) && (b != checker.nullType)) { + return b; + } else { + if(acceptVoid && (b == checker.voidType) && this != checker.voidType) { + return this; + } else { + if(acceptVoid && (this == checker.voidType) && (b != checker.voidType)) { + return b; + } else { + if((b == checker.undefinedType) && this != checker.undefinedType) { + return this; + } else { + if((this == checker.undefinedType) && (b != checker.undefinedType)) { + return b; + } else { + if(this.elementType && b.elementType) { + if(this.elementType == b.elementType) { + return this; + } else { + var mergedET = this.elementType.mergeOrdered(b.elementType, checker, acceptVoid, comparisonInfo); + if(mergedET == null) { + return checker.makeArrayType(checker.anyType); + } else { + return checker.makeArrayType(mergedET); + } + } + } else { + if(checker.sourceIsSubtypeOfTarget(this, b, comparisonInfo)) { + return b; + } else { + if(checker.sourceIsSubtypeOfTarget(b, this, comparisonInfo)) { + return this; + } else { + return null; + } + } + } + } + } + } + } + } + } + } + } + }; + Type.prototype.isModuleType = function () { + return false; + }; + Type.prototype.hasMembers = function () { + return this.members != null; + }; + Type.prototype.getAllEnclosedTypes = function () { + return null; + }; + Type.prototype.getAllAmbientEnclosedTypes = function () { + return null; + }; + Type.prototype.getPublicEnclosedTypes = function () { + return null; + }; + Type.prototype.getpublicAmbientEnclosedTypes = function () { + return null; + }; + Type.prototype.getDocComments = function () { + if(this.elementType || !this.symbol) { + return []; + } + if(this.isClassInstance() || this.isClass()) { + if(this.symbol.declAST.nodeType == TypeScript.NodeType.FuncDecl) { + return (this.symbol.declAST).classDecl.getDocComments(); + } else { + return this.symbol.getDocComments(); + } + } + if(this.symbol.name && this.symbol.name != "_anonymous" && (((this.call == null) && (this.construct == null) && (this.index == null)) || this.members)) { + return this.symbol.getDocComments(); + } + return []; + }; + return Type; + })(); + TypeScript.Type = Type; + var ModuleType = (function (_super) { + __extends(ModuleType, _super); + function ModuleType(enclosedTypes, ambientEnclosedTypes) { + _super.call(this); + this.enclosedTypes = enclosedTypes; + this.ambientEnclosedTypes = ambientEnclosedTypes; + this.importedModules = []; + } + ModuleType.prototype.isModuleType = function () { + return true; + }; + ModuleType.prototype.hasMembers = function () { + return this.members != null || this.enclosedTypes != null; + }; + ModuleType.prototype.getAllEnclosedTypes = function () { + return this.enclosedTypes; + }; + ModuleType.prototype.getAllAmbientEnclosedTypes = function () { + return this.ambientEnclosedTypes; + }; + ModuleType.prototype.getPublicEnclosedTypes = function () { + return null; + }; + ModuleType.prototype.getpublicAmbientEnclosedTypes = function () { + return null; + }; + ModuleType.findDynamicModuleNameInHashTable = function findDynamicModuleNameInHashTable(moduleType, members) { + var moduleName = null; + members.map(function (key, s, c) { + if(moduleName == null && !TypeScript.isQuoted(key)) { + var symbol = s; + var type = symbol.getType(); + if(type == moduleType) { + moduleName = { + name: key, + symbol: symbol + }; + } + } + }, null); + return moduleName; + } + ModuleType.prototype.findDynamicModuleName = function (moduleType) { + var moduleName = null; + moduleName = ModuleType.findDynamicModuleNameInHashTable(moduleType, this.members.allMembers); + if(moduleName == null) { + moduleName = ModuleType.findDynamicModuleNameInHashTable(moduleType, this.ambientMembers.allMembers); + } + return moduleName; + }; + return ModuleType; + })(Type); + TypeScript.ModuleType = ModuleType; + var TypeLink = (function () { + function TypeLink() { + this.type = null; + this.ast = null; + } + return TypeLink; + })(); + TypeScript.TypeLink = TypeLink; + function getTypeLink(ast, checker, autoVar) { + var result = new TypeLink(); + result.ast = ast; + if((ast == null) && (autoVar)) { + result.type = checker.anyType; + } else { + result.type = null; + } + return result; + } + TypeScript.getTypeLink = getTypeLink; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + function stripQuotes(str) { + return str.replace("\"", "").replace("'", "").replace("'", "").replace("\"", ""); + } + TypeScript.stripQuotes = stripQuotes; + function isQuoted(str) { + return str.indexOf("\"") != -1 || str.indexOf("'") != -1 || str.indexOf("'") != -1 || str.indexOf("\"") != -1; + } + TypeScript.isQuoted = isQuoted; + function quoteStr(str) { + return "\"" + str + "\""; + } + TypeScript.quoteStr = quoteStr; + function swapQuotes(str) { + if(str.indexOf("\"") != -1) { + str = str.replace("\"", "'"); + str = str.replace("\"", "'"); + } else { + str = str.replace("'", "\""); + str = str.replace("'", "\""); + } + return str; + } + TypeScript.swapQuotes = swapQuotes; + function switchToForwardSlashes(path) { + return path.replace(/\\/g, "/"); + } + TypeScript.switchToForwardSlashes = switchToForwardSlashes; + function trimModName(modName) { + if(modName.length > 6 && modName.substring(modName.length - 6, modName.length) == ".d.str") { + return modName.substring(0, modName.length - 6); + } + if(modName.length > 4 && modName.substring(modName.length - 4, modName.length) == ".str") { + return modName.substring(0, modName.length - 4); + } + if(modName.length > 5 && modName.substring(modName.length - 5, modName.length) == ".d.ts") { + return modName.substring(0, modName.length - 5); + } + if(modName.length > 3 && modName.substring(modName.length - 3, modName.length) == ".ts") { + return modName.substring(0, modName.length - 3); + } + if(modName.length > 3 && modName.substring(modName.length - 3, modName.length) == ".js") { + return modName.substring(0, modName.length - 3); + } + return modName; + } + TypeScript.trimModName = trimModName; + function getDeclareFilePath(fname) { + return isSTRFile(fname) ? changePathToDSTR(fname) : isTSFile(fname) ? changePathToDTS(fname) : changePathToDTS(fname); + } + TypeScript.getDeclareFilePath = getDeclareFilePath; + function isFileOfExtension(fname, ext) { + var invariantFname = fname.toLocaleUpperCase(); + var invariantExt = ext.toLocaleUpperCase(); + var extLength = invariantExt.length; + return invariantFname.length > extLength && invariantFname.substring(invariantFname.length - extLength, invariantFname.length) == invariantExt; + } + function isJSFile(fname) { + return isFileOfExtension(fname, ".js"); + } + TypeScript.isJSFile = isJSFile; + function isSTRFile(fname) { + return isFileOfExtension(fname, ".str"); + } + TypeScript.isSTRFile = isSTRFile; + function isTSFile(fname) { + return isFileOfExtension(fname, ".ts"); + } + TypeScript.isTSFile = isTSFile; + function isDSTRFile(fname) { + return isFileOfExtension(fname, ".d.str"); + } + TypeScript.isDSTRFile = isDSTRFile; + function isDTSFile(fname) { + return isFileOfExtension(fname, ".d.ts"); + } + TypeScript.isDTSFile = isDTSFile; + function getPrettyName(modPath, quote, treatAsFileName) { + if (typeof quote === "undefined") { quote = true; } + if (typeof treatAsFileName === "undefined") { treatAsFileName = false; } + var modName = treatAsFileName ? switchToForwardSlashes(modPath) : trimModName(stripQuotes(modPath)); + var components = this.getPathComponents(modName); + return components.length ? (quote ? quoteStr(components[components.length - 1]) : components[components.length - 1]) : modPath; + } + TypeScript.getPrettyName = getPrettyName; + function getPathComponents(path) { + return path.split("/"); + } + TypeScript.getPathComponents = getPathComponents; + function getRelativePathToFixedPath(fixedModFilePath, absoluteModPath) { + absoluteModPath = switchToForwardSlashes(absoluteModPath); + var modComponents = this.getPathComponents(absoluteModPath); + var fixedModComponents = this.getPathComponents(fixedModFilePath); + var joinStartIndex = 0; + for(; joinStartIndex < modComponents.length && joinStartIndex < fixedModComponents.length; joinStartIndex++) { + if(fixedModComponents[joinStartIndex] != modComponents[joinStartIndex]) { + break; + } + } + if(joinStartIndex != 0) { + var relativePath = ""; + var relativePathComponents = modComponents.slice(joinStartIndex, modComponents.length); + for(; joinStartIndex < fixedModComponents.length; joinStartIndex++) { + if(fixedModComponents[joinStartIndex] != "") { + relativePath = relativePath + "../"; + } + } + return relativePath + relativePathComponents.join("/"); + } + return absoluteModPath; + } + TypeScript.getRelativePathToFixedPath = getRelativePathToFixedPath; + function quoteBaseName(modPath) { + var modName = trimModName(stripQuotes(modPath)); + var path = getRootFilePath(modName); + if(path == "") { + return modPath; + } else { + var components = modName.split(path); + var fileIndex = components.length > 1 ? 1 : 0; + return quoteStr(components[fileIndex]); + } + } + TypeScript.quoteBaseName = quoteBaseName; + function changePathToSTR(modPath) { + return trimModName(stripQuotes(modPath)) + ".str"; + } + TypeScript.changePathToSTR = changePathToSTR; + function changePathToDSTR(modPath) { + return trimModName(stripQuotes(modPath)) + ".d.str"; + } + TypeScript.changePathToDSTR = changePathToDSTR; + function changePathToTS(modPath) { + return trimModName(stripQuotes(modPath)) + ".ts"; + } + TypeScript.changePathToTS = changePathToTS; + function changePathToDTS(modPath) { + return trimModName(stripQuotes(modPath)) + ".d.ts"; + } + TypeScript.changePathToDTS = changePathToDTS; + function isRelative(path) { + return path.charAt(0) == "."; + } + TypeScript.isRelative = isRelative; + function isRooted(path) { + return path.charAt(0) == "\\" || path.charAt(0) == "/" || (path.indexOf(":\\") != -1) || (path.indexOf(":/") != -1); + } + TypeScript.isRooted = isRooted; + function getRootFilePath(outFname) { + if(outFname == "") { + return outFname; + } else { + var isPath = outFname.indexOf("/") != -1; + return isPath ? filePath(outFname) : ""; + } + } + TypeScript.getRootFilePath = getRootFilePath; + function filePathComponents(fullPath) { + fullPath = switchToForwardSlashes(fullPath); + var components = getPathComponents(fullPath); + return components.slice(0, components.length - 1); + } + TypeScript.filePathComponents = filePathComponents; + function filePath(fullPath) { + var path = filePathComponents(fullPath); + return path.join("/") + "/"; + } + TypeScript.filePath = filePath; + function normalizeURL(url) { + var hostDomainAndPortRegex = /^(https?:\/\/[\-\w\.]+(:\d+)?\/)(.*)$/i; + var matches = hostDomainAndPortRegex.exec(url); + if(matches) { + var hostDomainAndPort = matches[1]; + var actualPath = matches[3]; + return hostDomainAndPort + normalizePath(actualPath); + } + return normalizePath(url); + } + TypeScript.normalizeURL = normalizeURL; + TypeScript.pathNormalizeRegExp = /\//g; + function normalizePath(path) { + path = switchToForwardSlashes(path); + var startedWithSep = path.charAt(0) === "/"; + var parts = this.getPathComponents(path); + for(var i = 0; i < parts.length; i++) { + if(parts[i] === "." || parts[i] === "") { + parts.splice(i, 1); + i--; + } + if(i > 0 && parts[i] === ".." && parts[i - 1] !== "..") { + parts.splice(i - 1, 2); + i -= 2; + } + } + return (startedWithSep ? "/" : "") + parts.join("/"); + } + TypeScript.normalizePath = normalizePath; + function normalizeImportPath(path) { + return normalizePath(path); + } + TypeScript.normalizeImportPath = normalizeImportPath; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + var SourceUnit = (function () { + function SourceUnit(path, content) { + this.path = path; + this.content = content; + this.referencedFiles = null; + } + SourceUnit.prototype.getText = function (start, end) { + return this.content.substring(start, end); + }; + SourceUnit.prototype.getLength = function () { + return this.content.length; + }; + return SourceUnit; + })(); + TypeScript.SourceUnit = SourceUnit; + var CompilationEnvironment = (function () { + function CompilationEnvironment(compilationSettings, ioHost) { + this.compilationSettings = compilationSettings; + this.ioHost = ioHost; + this.residentCode = []; + this.code = []; + } + return CompilationEnvironment; + })(); + TypeScript.CompilationEnvironment = CompilationEnvironment; + var CodeResolver = (function () { + function CodeResolver(environment) { + this.environment = environment; + this.visited = { + }; + } + CodeResolver.prototype.resolveCode = function (referencePath, parentPath, performSearch, resolutionDispatcher) { + var resolvedFile = { + content: "", + path: referencePath + }; + var ioHost = this.environment.ioHost; + var isRelativePath = TypeScript.isRelative(referencePath); + var isRootedPath = isRelativePath ? false : TypeScript.isRooted(referencePath); + var normalizedPath = isRelativePath ? ioHost.resolvePath(parentPath + "/" + referencePath) : (isRootedPath || !parentPath || performSearch ? referencePath : parentPath + "/" + referencePath); + if(!TypeScript.isSTRFile(normalizedPath) && !TypeScript.isTSFile(normalizedPath)) { + normalizedPath += ".ts"; + } + normalizedPath = TypeScript.switchToForwardSlashes(TypeScript.stripQuotes(normalizedPath)); + var absoluteModuleID = this.environment.compilationSettings.useCaseSensitiveFileResolution ? normalizedPath : normalizedPath.toLocaleUpperCase(); + if(!this.visited[absoluteModuleID]) { + if(isRelativePath || isRootedPath || !performSearch) { + try { + TypeScript.CompilerDiagnostics.debugPrint(" Reading code from " + normalizedPath); + try { + resolvedFile.content = ioHost.readFile(normalizedPath); + } catch (err) { + try { + if(TypeScript.isSTRFile(normalizedPath)) { + normalizedPath = TypeScript.changePathToTS(normalizedPath); + } else { + if(TypeScript.isTSFile(normalizedPath)) { + normalizedPath = TypeScript.changePathToSTR(normalizedPath); + } + } + TypeScript.CompilerDiagnostics.debugPrint(" Reading code from " + normalizedPath); + resolvedFile.content = ioHost.readFile(normalizedPath); + } catch (err) { + normalizedPath = TypeScript.changePathToDSTR(normalizedPath); + TypeScript.CompilerDiagnostics.debugPrint(" Reading code from " + normalizedPath); + try { + resolvedFile.content = ioHost.readFile(normalizedPath); + } catch (err) { + normalizedPath = TypeScript.changePathToDTS(normalizedPath); + TypeScript.CompilerDiagnostics.debugPrint(" Reading code from " + normalizedPath); + resolvedFile.content = ioHost.readFile(normalizedPath); + } + } + } + TypeScript.CompilerDiagnostics.debugPrint(" Found code at " + normalizedPath); + resolvedFile.path = normalizedPath; + this.visited[absoluteModuleID] = true; + } catch (err) { + TypeScript.CompilerDiagnostics.debugPrint(" Did not find code for " + referencePath); + } + } else { + resolvedFile = ioHost.findFile(parentPath, normalizedPath); + if(!resolvedFile) { + if(TypeScript.isSTRFile(normalizedPath)) { + normalizedPath = TypeScript.changePathToTS(normalizedPath); + } else { + if(TypeScript.isTSFile(normalizedPath)) { + normalizedPath = TypeScript.changePathToSTR(normalizedPath); + } + } + resolvedFile = ioHost.findFile(parentPath, normalizedPath); + } + if(!resolvedFile) { + normalizedPath = TypeScript.changePathToDTS(normalizedPath); + resolvedFile = ioHost.findFile(parentPath, normalizedPath); + if(!resolvedFile) { + normalizedPath = TypeScript.changePathToDSTR(normalizedPath); + resolvedFile = ioHost.findFile(parentPath, normalizedPath); + } + } + if(resolvedFile) { + resolvedFile.path = TypeScript.switchToForwardSlashes(TypeScript.stripQuotes(resolvedFile.path)); + TypeScript.CompilerDiagnostics.debugPrint(referencePath + " resolved to: " + resolvedFile.path); + resolvedFile.content = resolvedFile.content; + this.visited[absoluteModuleID] = true; + } else { + TypeScript.CompilerDiagnostics.debugPrint("Could not find " + referencePath); + } + } + if(resolvedFile && resolvedFile.content) { + var rootDir = ioHost.dirName(resolvedFile.path); + var sourceUnit = new SourceUnit(resolvedFile.path, resolvedFile.content); + var preProcessedFileInfo = TypeScript.preProcessFile(sourceUnit, this.environment.compilationSettings); + sourceUnit.referencedFiles = preProcessedFileInfo.referencedFiles; + for(var i = 0; i < preProcessedFileInfo.referencedFiles.length; i++) { + var referencedFile = preProcessedFileInfo.referencedFiles[i]; + var normalizedPath = TypeScript.isRooted(referencedFile.path) ? referencedFile.path : rootDir + "/" + referencedFile.path; + normalizedPath = ioHost.resolvePath(normalizedPath); + if(referencePath == normalizedPath) { + resolutionDispatcher.postResolutionError(normalizedPath, "File contains reference to itself", null); + continue; + } + this.resolveCode(referencedFile.path, rootDir, false, resolutionDispatcher); + } + for(var i = 0; i < preProcessedFileInfo.importedFiles.length; i++) { + this.resolveCode(preProcessedFileInfo.importedFiles[i].path, rootDir, true, resolutionDispatcher); + } + resolutionDispatcher.postResolution(sourceUnit.path, sourceUnit); + } + } + }; + return CodeResolver; + })(); + TypeScript.CodeResolver = CodeResolver; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + var StyleSettings = (function () { + function StyleSettings() { + this.bitwise = false; + this.blockInCompoundStmt = false; + this.eqeqeq = false; + this.forin = false; + this.emptyBlocks = true; + this.newMustBeUsed = false; + this.requireSemi = false; + this.assignmentInCond = false; + this.eqnull = false; + this.evalOK = true; + this.innerScopeDeclEscape = true; + this.funcInLoop = true; + this.reDeclareLocal = true; + this.literalSubscript = true; + this.implicitAny = false; + } + StyleSettings.prototype.setOption = function (opt, val) { + var optExists = this[opt]; + if(optExists !== undefined) { + this[opt] = val; + return true; + } else { + return false; + } + }; + StyleSettings.prototype.parseOptions = function (str) { + var opts = str.split(";"); + for(var i = 0, len = opts.length; i < len; i++) { + var opt = opts[i]; + var val = true; + var colonIndex = opt.lastIndexOf(":"); + if(colonIndex >= 0) { + var valStr = opt.substring(colonIndex + 1); + opt = opt.substring(0, colonIndex); + if(valStr == "off") { + val = false; + } + } + if(!this.setOption(opt, val)) { + return false; + } + } + return true; + }; + return StyleSettings; + })(); + TypeScript.StyleSettings = StyleSettings; + var CompilationSettings = (function () { + function CompilationSettings() { + this.styleSettings = new StyleSettings(); + this.propagateConstants = false; + this.minWhitespace = false; + this.parseOnly = false; + this.errorRecovery = false; + this.emitComments = false; + this.watch = false; + this.exec = false; + this.resolve = true; + this.controlFlow = false; + this.printControlFlow = false; + this.controlFlowUseDef = false; + this.errorOnWith = true; + this.preprocess = true; + this.canCallDefinitionSignature = false; + this.inferPropertiesFromThisAssignment = false; + this.useDefaultLib = true; + this.codeGenTarget = TypeScript.CodeGenTarget.ES3; + this.moduleGenTarget = TypeScript.ModuleGenTarget.Synchronous; + this.outputOption = ""; + this.mapSourceFiles = false; + this.generateDeclarationFiles = false; + this.useCaseSensitiveFileResolution = false; + } + CompilationSettings.prototype.setStyleOptions = function (str) { + this.styleSettings.parseOptions(str); + }; + return CompilationSettings; + })(); + TypeScript.CompilationSettings = CompilationSettings; + function getFileReferenceFromReferencePath(comment) { + var referencesRegEx = /^(\/\/\/\s*/igm; + var match = referencesRegEx.exec(comment); + if(match) { + var path = TypeScript.normalizePath(match[3]); + var adjustedPath = TypeScript.normalizePath(path); + var isResident = match.length >= 7 && match[6] == "true"; + if(isResident) { + TypeScript.CompilerDiagnostics.debugPrint(path + " is resident"); + } + return { + minChar: 0, + limChar: 0, + path: TypeScript.switchToForwardSlashes(adjustedPath), + isResident: isResident + }; + } else { + return null; + } + } + function getAdditionalDependencyPath(comment) { + var amdDependencyRegEx = /^(\/\/\/\s*/igm; + var match = amdDependencyRegEx.exec(comment); + if(match) { + var path = match[3]; + return path; + } else { + return null; + } + } + TypeScript.getAdditionalDependencyPath = getAdditionalDependencyPath; + function getImplicitImport(comment) { + var implicitImportRegEx = /^(\/\/\/\s*/igm; + var match = implicitImportRegEx.exec(comment); + if(match) { + return true; + } + return false; + } + TypeScript.getImplicitImport = getImplicitImport; + function getStyleSettings(comment, styleSettings) { + var styleRegEx = /^(\/\/\/\s*/igm; + var settings = styleRegEx.exec(comment); + if(settings) { + var settingsRegEx = /^([a-zA-Z]+=['"]on['|"])/igm; + settings = settingsRegEx.exec(settings[2]); + if(settings) { + for(var i = 0; i < settings.length; i++) { + var setting = (settings[i]).split("="); + var on = "\"on\""; + switch(setting[0]) { + case "blockInCompoundStmt": { + styleSettings.blockInCompoundStmt = setting[1] == on; + break; + + } + case "eqeqeq": { + styleSettings.eqeqeq = setting[1] == on; + break; + + } + case "forin": { + styleSettings.forin = setting[1] == on; + break; + + } + case "emptyBlocks": { + styleSettings.emptyBlocks = setting[1] == on; + break; + + } + case "newMustBeUsed": { + styleSettings.newMustBeUsed = setting[1] == on; + break; + + } + case "requireSemi": { + styleSettings.requireSemi = setting[1] == on; + break; + + } + case "assignmentInCond": { + styleSettings.assignmentInCond = setting[1] == on; + break; + + } + case "eqnull": { + styleSettings.eqnull = setting[1] == on; + break; + + } + case "evalOK": { + styleSettings.evalOK = setting[1] == on; + break; + + } + case "innerScopeDeclEscape": { + styleSettings.innerScopeDeclEscape = setting[1] == on; + break; + + } + case "funcInLoop": { + styleSettings.funcInLoop = setting[1] == on; + break; + + } + case "reDeclareLocal": { + styleSettings.reDeclareLocal = setting[1] == on; + break; + + } + case "literalSubscript": { + styleSettings.literalSubscript = setting[1] == on; + break; + + } + case "implicitAny": { + styleSettings.implicitAny = setting[1] == on; + break; + + } + } + } + } + } + } + TypeScript.getStyleSettings = getStyleSettings; + function getReferencedFiles(sourceText) { + var preProcessInfo = preProcessFile(sourceText, null, false); + return preProcessInfo.referencedFiles; + } + TypeScript.getReferencedFiles = getReferencedFiles; + function preProcessFile(sourceText, options, readImportFiles) { + if (typeof options === "undefined") { options = new CompilationSettings(); } + if (typeof readImportFiles === "undefined") { readImportFiles = true; } + var scanner = new TypeScript.Scanner(); + scanner.resetComments(); + scanner.setSourceText(sourceText, TypeScript.LexMode.File); + var tok = scanner.scan(); + var comments = []; + var comment = null; + var leftCurlies = []; + var settings = options; + var referencedFiles = []; + var importedFiles = []; + var isLibFile = false; + while(tok.tokenId != TypeScript.TokenID.EndOfFile) { + if(readImportFiles && tok.tokenId == TypeScript.TokenID.Import) { + tok = scanner.scan(); + if(tok.tokenId == TypeScript.TokenID.Identifier || TypeScript.convertTokToID(tok, false)) { + tok = scanner.scan(); + if(tok.tokenId == TypeScript.TokenID.Equals) { + tok = scanner.scan(); + if(tok.tokenId == TypeScript.TokenID.Module) { + tok = scanner.scan(); + if(tok.tokenId == TypeScript.TokenID.OpenParen) { + tok = scanner.scan(); + if(tok.tokenId == TypeScript.TokenID.StringLiteral) { + var ref = { + minChar: scanner.startPos, + limChar: scanner.pos, + path: TypeScript.stripQuotes(TypeScript.switchToForwardSlashes(tok.getText())), + isResident: false + }; + importedFiles.push(ref); + } + } + } + } + } + } + if(tok.tokenId == TypeScript.TokenID.OpenBrace) { + leftCurlies.push(tok); + } + if(tok.tokenId == TypeScript.TokenID.CloseBrace) { + leftCurlies.pop(); + } + tok = scanner.scan(); + } + comments = scanner.getComments(); + for(var iComment = 0; iComment < comments.length; iComment++) { + comment = comments[iComment]; + if(!comment.isBlock) { + var referencedCode = getFileReferenceFromReferencePath(comment.getText()); + if(referencedCode) { + referencedCode.minChar = comment.startPos; + referencedCode.limChar = referencedCode.minChar + comment.value.length; + referencedFiles.push(referencedCode); + } + if(settings) { + getStyleSettings(comment.getText(), settings.styleSettings); + var isNoLibRegex = /^(\/\/\/\s*/igm; + var isNoLibMatch = isNoLibRegex.exec(comment.getText()); + if(isNoLibMatch) { + isLibFile = (isNoLibMatch[3] == "true"); + } + } + } + } + return { + settings: settings, + referencedFiles: referencedFiles, + importedFiles: importedFiles, + isLibFile: isLibFile + }; + } + TypeScript.preProcessFile = preProcessFile; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + var IncrementalParser = (function () { + function IncrementalParser(logger) { + this.logger = logger; + this.astLogger = new TypeScript.AstLogger(this.logger); + } + IncrementalParser.prototype.getEnclosingScopeContextIfSingleScopeEdit = function (previousScript, scriptId, newSourceText, editRange) { + this.logger.log("checkEditsInsideSingleScope(\"" + scriptId + "\")"); + if(editRange === null) { + throw new Error("editRange should be valid"); + } + if(editRange.isUnknown()) { + this.logger.log(" Bailing out because edit range is unknown"); + return null; + } + var scope1 = TypeScript.findEnclosingScopeAt(this.logger, previousScript, newSourceText, editRange.minChar, false); + var scope2 = TypeScript.findEnclosingScopeAt(this.logger, previousScript, newSourceText, editRange.limChar, false); + if(scope1 == null || scope2 == null) { + this.logger.log(" Bailing out because containing scopes cannot be determined"); + return null; + } + if(scope1.scopeStartAST !== scope2.scopeStartAST) { + this.logger.log(" Bailing out because edit overlaps 2 disctint scopes"); + return null; + } + var newScopeLength = scope1.scopeStartAST.limChar - scope1.scopeStartAST.minChar + editRange.delta; + if(newScopeLength <= 0) { + this.logger.log(" Bailing out because scope has been entirely removed from new source text"); + return null; + } + return scope1; + }; + IncrementalParser.prototype.attemptIncrementalUpdateUnit = function (previousScript, scriptId, newSourceText, editRange) { + this.logger.log("attemptIncrementalUpdateUnit(\"" + scriptId + "\")"); + if(editRange === null) { + throw new Error("editRange should be valid"); + } + var scope1 = this.getEnclosingScopeContextIfSingleScopeEdit(previousScript, scriptId, newSourceText, editRange); + if(scope1 === null) { + return null; + } + var newScopeLength = scope1.scopeStartAST.limChar - scope1.scopeStartAST.minChar + editRange.delta; + if(newScopeLength >= newSourceText.getLength() / 2) { + this.logger.log(" Bailing out because range of scope to reparse (" + newScopeLength + " characters) is greater than half the size of the source text"); + return null; + } + var parseErrors = []; + var errorCapture = function (minChar, charLen, message, unitIndex) { + parseErrors.push(new TypeScript.ErrorEntry(unitIndex, minChar, minChar + charLen, message)); + }; + var quickParseResult = TypeScript.quickParse(this.logger, scope1.scopeStartAST, newSourceText, scope1.scopeStartAST.minChar, scope1.scopeStartAST.minChar + newScopeLength, errorCapture); + if(quickParseResult.endLexState != TypeScript.LexState.Start) { + this.logger.log(" Bailing out because scope contains unterminated comment"); + return null; + } + var scriptFragment = quickParseResult.Script; + if(scriptFragment.vars.members.length !== 0) { + this.logger.log(" Bailing out because new source text defines variables"); + return null; + } + if(scriptFragment.bod.members.length !== 1) { + this.logger.log(" Bailing out because new source text defines more than one scope (or none)"); + return null; + } + var oldScope = scope1.scopeStartAST; + var newScope = scriptFragment.bod.members[0]; + if(oldScope.nodeType != newScope.nodeType) { + this.logger.log(" Bailing out because new source text does not define the same scope type as the existing scope"); + return null; + } + if(!(oldScope).leftCurlyCount || !(oldScope).rightCurlyCount) { + this.logger.log(" Bailing out because sopce doesn't have left/right curly count"); + return null; + } + if((oldScope).leftCurlyCount !== (newScope).leftCurlyCount) { + this.logger.log(" Bailing out because new source text contains more (or fewer) left curly braces"); + return null; + } + if((oldScope).rightCurlyCount !== (newScope).rightCurlyCount) { + this.logger.log(" Bailing out because new source text contains more (or fewer) right curly braces"); + return null; + } + if(newScope.minChar !== 0) { + this.logger.log(" Bailing out because new function declaration does not start at position 0"); + return null; + } + if(newScope.limChar !== newScopeLength) { + this.logger.log(" Bailing out because new function declaration does not end at the new end position"); + return null; + } + return TypeScript.UpdateUnitResult.singleScopeEdits(previousScript, scriptFragment, oldScope, newScope, editRange, parseErrors); + }; + IncrementalParser.prototype.mergeTrees = function (updateResult) { + var _this = this; + TypeScript.timeFunction(this.logger, "mergeTrees()", function () { + var editRange = new TypeScript.ScriptEditRange(updateResult.scope1.minChar, updateResult.scope1.limChar, updateResult.editRange.delta); + _this.applyDeltaPosition(updateResult.script1, editRange.limChar, editRange.delta); + _this.applyDeltaPosition(updateResult.script2, 0, editRange.minChar); + _this.mergeLocationInfo(updateResult.script1, updateResult.script2, editRange); + _this.replaceAST(updateResult.script1, updateResult.scope1, updateResult.scope2); + }); + }; + IncrementalParser.prototype.replaceAST = function (script, oldAst, newAst) { + var _this = this; + var pre = function (cur, parent, walker) { + if(cur === oldAst) { + newAst.preComments = cur.preComments; + newAst.postComments = cur.postComments; + _this.logger.log("replaced old AST node with new one in script AST"); + walker.options.stopWalk(); + return newAst; + } + if(TypeScript.isValidAstNode(cur)) { + if(cur.limChar < oldAst.minChar || cur.minChar > oldAst.limChar) { + walker.options.goChildren = false; + } + } + return cur; + }; + TypeScript.getAstWalkerFactory().walk(script, pre); + }; + IncrementalParser.prototype.mergeLocationInfo = function (script, partial, editRange) { + var lineMap1 = script.locationInfo.lineMap; + var lineMap2 = partial.locationInfo.lineMap; + if(this.logger.information()) { + this.logger.log("lineMap1 (before):"); + this.astLogger.logLinemap(lineMap1); + this.logger.log("lineMap2 (quick parse):"); + this.astLogger.logLinemap(lineMap2); + this.logger.log("EditRange=" + editRange); + } + var i1 = 2; + var i2 = 2; + var len1 = lineMap1.length; + var len2 = lineMap2.length; + while(i1 < len1) { + if(lineMap1[i1] <= editRange.minChar) { + i1++; + } else { + if(lineMap1[i1] >= editRange.limChar) { + lineMap1[i1] += editRange.delta; + i1++; + } else { + if(i2 < len2) { + lineMap1.splice(i1, 0, lineMap2[i2] + editRange.minChar); + i1++; + len1++; + i2++; + } else { + lineMap1.splice(i1, 1); + len1--; + } + } + } + } + if(i2 < len2) { + if(lineMap1[len1 - 1] >= (lineMap2[i2] + editRange.minChar)) { + i1 = 2; + while(i1 < len1 && i2 < len2) { + if(lineMap1[i1] < (lineMap2[i2] + editRange.minChar)) { + i1++; + } else { + lineMap1.splice(i1, 0, lineMap2[i2] + editRange.minChar); + i1++; + len1++; + i2++; + } + } + } + for(; i2 < len2; i2++) { + lineMap1.push(lineMap2[i2] + editRange.minChar); + } + } + if(this.logger.information()) { + this.logger.log("lineMap1 (after merge):"); + this.astLogger.logLinemap(lineMap1); + } + }; + IncrementalParser.prototype.applyDeltaPosition = function (ast, start, delta) { + var applyDelta = function (ast) { + if(ast.minChar !== -1 && ast.minChar >= start) { + ast.minChar += delta; + } + if(ast.limChar !== -1 && ast.limChar >= start) { + ast.limChar += delta; + } + }; + var applyDeltaToComments = function (comments) { + if(comments && comments.length > 0) { + for(var i = 0; i < comments.length; i++) { + applyDelta(comments[i]); + } + } + }; + var pre = function (cur, parent, walker) { + if(cur.limChar !== -1 && cur.limChar < start) { + walker.options.goChildren = false; + } + applyDelta(cur); + applyDeltaToComments(cur.preComments); + applyDeltaToComments(cur.postComments); + return cur; + }; + TypeScript.getAstWalkerFactory().walk(ast, pre); + }; + return IncrementalParser; + })(); + TypeScript.IncrementalParser = IncrementalParser; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + var DeclFileWriter = (function () { + function DeclFileWriter(declFile) { + this.declFile = declFile; + this.onNewLine = true; + } + DeclFileWriter.prototype.Write = function (s) { + this.declFile.Write(s); + this.onNewLine = false; + }; + DeclFileWriter.prototype.WriteLine = function (s) { + this.declFile.WriteLine(s); + this.onNewLine = true; + }; + DeclFileWriter.prototype.Close = function () { + this.declFile.Close(); + }; + return DeclFileWriter; + })(); + TypeScript.DeclFileWriter = DeclFileWriter; + var DeclarationEmitter = (function () { + function DeclarationEmitter(checker, emitOptions, errorReporter) { + this.checker = checker; + this.emitOptions = emitOptions; + this.errorReporter = errorReporter; + this.declFile = null; + this.indenter = new TypeScript.Indenter(); + this.declarationContainerStack = []; + this.isDottedModuleName = []; + this.ignoreCallbackAst = null; + this.singleDeclFile = null; + this.varListCount = 0; + } + DeclarationEmitter.prototype.getAstDeclarationContainer = function () { + return this.declarationContainerStack[this.declarationContainerStack.length - 1]; + }; + DeclarationEmitter.prototype.emitDottedModuleName = function () { + return (this.isDottedModuleName.length == 0) ? false : this.isDottedModuleName[this.isDottedModuleName.length - 1]; + }; + DeclarationEmitter.prototype.setDeclarationFile = function (file) { + this.declFile = new DeclFileWriter(file); + }; + DeclarationEmitter.prototype.Close = function () { + try { + this.declFile.Close(); + } catch (ex) { + this.errorReporter.emitterError(null, ex.message); + } + }; + DeclarationEmitter.prototype.emitDeclarations = function (script) { + TypeScript.AstWalkerWithDetailCallback.walk(script, this); + }; + DeclarationEmitter.prototype.getIndentString = function (declIndent) { + if (typeof declIndent === "undefined") { declIndent = false; } + if(this.emitOptions.minWhitespace) { + return ""; + } else { + return this.indenter.getIndent(); + } + }; + DeclarationEmitter.prototype.emitIndent = function () { + this.declFile.Write(this.getIndentString()); + }; + DeclarationEmitter.prototype.canEmitSignature = function (declFlags, canEmitGlobalAmbientDecl, useDeclarationContainerTop) { + if (typeof canEmitGlobalAmbientDecl === "undefined") { canEmitGlobalAmbientDecl = true; } + if (typeof useDeclarationContainerTop === "undefined") { useDeclarationContainerTop = true; } + var container; + if(useDeclarationContainerTop) { + container = this.getAstDeclarationContainer(); + } else { + container = this.declarationContainerStack[this.declarationContainerStack.length - 2]; + } + if(container.nodeType == TypeScript.NodeType.ModuleDeclaration && !TypeScript.hasFlag(declFlags, TypeScript.DeclFlags.Exported)) { + return false; + } + if(!canEmitGlobalAmbientDecl && container.nodeType == TypeScript.NodeType.Script && TypeScript.hasFlag(declFlags, TypeScript.DeclFlags.Ambient)) { + return false; + } + return true; + }; + DeclarationEmitter.prototype.canEmitPrePostAstSignature = function (declFlags, astWithPrePostCallback, preCallback) { + if(this.ignoreCallbackAst) { + TypeScript.CompilerDiagnostics.assert(this.ignoreCallbackAst != astWithPrePostCallback, "Ignore Callback AST mismatch"); + this.ignoreCallbackAst = null; + return false; + } else { + if(preCallback && !this.canEmitSignature(declFlags, true, preCallback)) { + this.ignoreCallbackAst = astWithPrePostCallback; + return false; + } + } + return true; + }; + DeclarationEmitter.prototype.getDeclFlagsString = function (declFlags, typeString) { + var result = this.getIndentString(); + var accessorString = ""; + if(TypeScript.hasFlag(declFlags, TypeScript.DeclFlags.GetAccessor)) { + accessorString = "get "; + } else { + if(TypeScript.hasFlag(declFlags, TypeScript.DeclFlags.SetAccessor)) { + accessorString = "set "; + } + } + var container = this.getAstDeclarationContainer(); + if(container.nodeType == TypeScript.NodeType.ModuleDeclaration && TypeScript.hasFlag((container).modFlags, TypeScript.ModuleFlags.IsWholeFile) && TypeScript.hasFlag(declFlags, TypeScript.DeclFlags.Exported)) { + result += "export "; + } + if(TypeScript.hasFlag(declFlags, TypeScript.DeclFlags.LocalStatic) || TypeScript.hasFlag(declFlags, TypeScript.DeclFlags.Static)) { + result += "static " + accessorString; + } else { + if(TypeScript.hasFlag(declFlags, TypeScript.DeclFlags.Private)) { + result += "private " + accessorString; + } else { + if(TypeScript.hasFlag(declFlags, TypeScript.DeclFlags.Public)) { + result += "public " + accessorString; + } else { + if(accessorString == "") { + result += typeString + " "; + } else { + result += accessorString; + } + } + } + } + return result; + }; + DeclarationEmitter.prototype.emitDeclFlags = function (declFlags, typeString) { + this.declFile.Write(this.getDeclFlagsString(declFlags, typeString)); + }; + DeclarationEmitter.prototype.canEmitTypeAnnotationSignature = function (declFlag) { + if (typeof declFlag === "undefined") { declFlag = TypeScript.DeclFlags.None; } + return !TypeScript.hasFlag(declFlag, TypeScript.DeclFlags.Private); + }; + DeclarationEmitter.prototype.pushDeclarationContainer = function (ast) { + this.declarationContainerStack.push(ast); + }; + DeclarationEmitter.prototype.popDeclarationContainer = function (ast) { + TypeScript.CompilerDiagnostics.assert(ast != this.getAstDeclarationContainer(), 'Declaration container mismatch'); + this.declarationContainerStack.pop(); + }; + DeclarationEmitter.prototype.emitTypeNamesMember = function (memberName, emitIndent) { + if (typeof emitIndent === "undefined") { emitIndent = false; } + if(memberName.prefix == "{ ") { + if(emitIndent) { + this.emitIndent(); + } + this.declFile.WriteLine("{"); + this.indenter.increaseIndent(); + emitIndent = true; + } else { + if(memberName.prefix != "") { + if(emitIndent) { + this.emitIndent(); + } + this.declFile.Write(memberName.prefix); + emitIndent = false; + } + } + if(memberName.isString()) { + if(emitIndent) { + this.emitIndent(); + } + this.declFile.Write((memberName).text); + } else { + var ar = memberName; + for(var index = 0; index < ar.entries.length; index++) { + this.emitTypeNamesMember(ar.entries[index], emitIndent); + if(ar.delim == "; ") { + this.declFile.WriteLine(";"); + } + } + } + if(memberName.suffix == "}") { + this.indenter.decreaseIndent(); + this.emitIndent(); + this.declFile.Write(memberName.suffix); + } else { + this.declFile.Write(memberName.suffix); + } + }; + DeclarationEmitter.prototype.emitTypeSignature = function (type) { + var containingScope = null; + var declarationContainerAst = this.getAstDeclarationContainer(); + switch(declarationContainerAst.nodeType) { + case TypeScript.NodeType.ModuleDeclaration: + case TypeScript.NodeType.InterfaceDeclaration: + case TypeScript.NodeType.FuncDecl: { + if(declarationContainerAst.type) { + containingScope = declarationContainerAst.type.containedScope; + } + break; + + } + case TypeScript.NodeType.Script: { + var script = declarationContainerAst; + if(script.bod) { + containingScope = script.bod.enclosingScope; + } + break; + + } + case TypeScript.NodeType.ClassDeclaration: { + if(declarationContainerAst.type) { + containingScope = declarationContainerAst.type.instanceType.containedScope; + } + break; + + } + default: { + TypeScript.CompilerDiagnostics.debugPrint("Unknown containing scope"); + + } + } + var typeNameMembers = type.getScopedTypeNameEx(containingScope); + this.emitTypeNamesMember(typeNameMembers); + }; + DeclarationEmitter.prototype.emitComment = function (comment) { + var text = comment.getText(); + if(this.declFile.onNewLine) { + this.emitIndent(); + } else { + if(!comment.isBlockComment) { + this.declFile.WriteLine(""); + this.emitIndent(); + } + } + this.declFile.Write(text[0]); + for(var i = 1; i < text.length; i++) { + this.declFile.WriteLine(""); + this.emitIndent(); + this.declFile.Write(text[i]); + } + if(comment.endsLine || !comment.isBlockComment) { + this.declFile.WriteLine(""); + } else { + this.declFile.Write(" "); + } + }; + DeclarationEmitter.prototype.emitDeclarationComments = function (astOrSymbol, endLine) { + if (typeof endLine === "undefined") { endLine = true; } + if(!this.emitOptions.emitComments) { + return; + } + var declComments = astOrSymbol.getDocComments(); + if(declComments.length > 0) { + for(var i = 0; i < declComments.length; i++) { + this.emitComment(declComments[i]); + } + if(endLine) { + if(!this.declFile.onNewLine) { + this.declFile.WriteLine(""); + } + } else { + if(this.declFile.onNewLine) { + this.emitIndent(); + } + } + } + }; + DeclarationEmitter.prototype.VarDeclCallback = function (pre, varDecl) { + if(pre && this.canEmitSignature(TypeScript.ToDeclFlags(varDecl.varFlags), false)) { + var interfaceMember = (this.getAstDeclarationContainer().nodeType == TypeScript.NodeType.InterfaceDeclaration); + this.emitDeclarationComments(varDecl); + if(!interfaceMember) { + if(this.varListCount >= 0) { + this.emitDeclFlags(TypeScript.ToDeclFlags(varDecl.varFlags), "var"); + this.varListCount = -this.varListCount; + } + this.declFile.Write(varDecl.id.text); + } else { + this.emitIndent(); + this.declFile.Write(varDecl.id.text); + if(TypeScript.hasFlag(varDecl.id.flags, TypeScript.ASTFlags.OptionalName)) { + this.declFile.Write("?"); + } + } + var type = null; + if(varDecl.typeExpr && varDecl.typeExpr.type) { + type = varDecl.typeExpr.type; + } else { + if(varDecl.sym) { + type = (varDecl.sym).getType(); + if(type == this.checker.anyType) { + type = null; + } + } + } + if(type && this.canEmitTypeAnnotationSignature(TypeScript.ToDeclFlags(varDecl.varFlags))) { + this.declFile.Write(": "); + this.emitTypeSignature(type); + } + if(this.varListCount > 0) { + this.varListCount--; + } else { + if(this.varListCount < 0) { + this.varListCount++; + } + } + if(this.varListCount < 0) { + this.declFile.Write(", "); + } else { + this.declFile.WriteLine(";"); + } + } + return false; + }; + DeclarationEmitter.prototype.BlockCallback = function (pre, block) { + if(!block.isStatementBlock) { + if(pre) { + this.varListCount = block.statements.members.length; + } else { + this.varListCount = 0; + } + return true; + } + return false; + }; + DeclarationEmitter.prototype.emitArgDecl = function (argDecl, funcDecl) { + this.emitDeclarationComments(argDecl, false); + this.declFile.Write(argDecl.id.text); + if(argDecl.isOptionalArg()) { + this.declFile.Write("?"); + } + if((argDecl.typeExpr || argDecl.type != this.checker.anyType) && this.canEmitTypeAnnotationSignature(TypeScript.ToDeclFlags(funcDecl.fncFlags))) { + this.declFile.Write(": "); + this.emitTypeSignature(argDecl.type); + } + }; + DeclarationEmitter.prototype.FuncDeclCallback = function (pre, funcDecl) { + if(!pre) { + return false; + } + if(funcDecl.isAccessor()) { + return this.emitPropertyAccessorSignature(funcDecl); + } + var isInterfaceMember = (this.getAstDeclarationContainer().nodeType == TypeScript.NodeType.InterfaceDeclaration); + if(funcDecl.bod) { + if(funcDecl.isConstructor) { + if(funcDecl.type.construct && funcDecl.type.construct.signatures.length > 1) { + return false; + } + } else { + if(funcDecl.type.call && funcDecl.type.call.signatures.length > 1) { + return false; + } + } + } else { + if(!isInterfaceMember && TypeScript.hasFlag(funcDecl.fncFlags, TypeScript.FncFlags.Private) && funcDecl.type.call && funcDecl.type.call.signatures.length > 1) { + var signatures = funcDecl.type.call.signatures; + var firstSignature = signatures[0].declAST; + if(firstSignature.bod) { + firstSignature = signatures[1].declAST; + } + if(firstSignature != funcDecl) { + return false; + } + } + } + if(!this.canEmitSignature(TypeScript.ToDeclFlags(funcDecl.fncFlags), false)) { + return false; + } + this.emitDeclarationComments(funcDecl); + if(funcDecl.isConstructor) { + this.emitIndent(); + this.declFile.Write("constructor"); + } else { + var id = funcDecl.getNameText(); + if(!isInterfaceMember) { + this.emitDeclFlags(TypeScript.ToDeclFlags(funcDecl.fncFlags), "function"); + this.declFile.Write(id); + } else { + this.emitIndent(); + if(funcDecl.isConstructMember()) { + this.declFile.Write("new"); + } else { + if(!funcDecl.isCallMember() && !funcDecl.isIndexerMember()) { + this.declFile.Write(id); + if(TypeScript.hasFlag(funcDecl.name.flags, TypeScript.ASTFlags.OptionalName)) { + this.declFile.Write("? "); + } + } + } + } + } + if(!funcDecl.isIndexerMember()) { + this.declFile.Write("("); + } else { + this.declFile.Write("["); + } + this.indenter.increaseIndent(); + if(funcDecl.arguments) { + var argsLen = funcDecl.arguments.members.length; + if(funcDecl.variableArgList) { + argsLen--; + } + for(var i = 0; i < argsLen; i++) { + var argDecl = funcDecl.arguments.members[i]; + this.emitArgDecl(argDecl, funcDecl); + if(i < (argsLen - 1)) { + this.declFile.Write(", "); + } + } + } + if(funcDecl.variableArgList) { + var lastArg = funcDecl.arguments.members[funcDecl.arguments.members.length - 1]; + if(funcDecl.arguments.members.length > 1) { + this.declFile.Write(", ..."); + } else { + this.declFile.Write("..."); + } + this.emitArgDecl(lastArg, funcDecl); + } + this.indenter.decreaseIndent(); + if(!funcDecl.isIndexerMember()) { + this.declFile.Write(")"); + } else { + this.declFile.Write("]"); + } + if(!funcDecl.isConstructor && (funcDecl.returnTypeAnnotation || funcDecl.signature.returnType.type != this.checker.anyType) && this.canEmitTypeAnnotationSignature(TypeScript.ToDeclFlags(funcDecl.fncFlags))) { + this.declFile.Write(": "); + this.emitTypeSignature(funcDecl.signature.returnType.type); + } + this.declFile.WriteLine(";"); + return false; + }; + DeclarationEmitter.prototype.emitBaseList = function (bases, qual) { + if(bases && (bases.members.length > 0)) { + this.declFile.Write(" " + qual + " "); + var basesLen = bases.members.length; + for(var i = 0; i < basesLen; i++) { + var baseExpr = bases.members[i]; + var baseSymbol = baseExpr.type.symbol; + var baseType = baseExpr.type; + if(i > 0) { + this.declFile.Write(", "); + } + this.emitTypeSignature(baseType); + } + } + }; + DeclarationEmitter.prototype.emitPropertyAccessorSignature = function (funcDecl) { + var accessorSymbol = funcDecl.accessorSymbol; + if(accessorSymbol.getter && accessorSymbol.getter.declAST != funcDecl) { + return false; + } + this.emitDeclarationComments(accessorSymbol); + this.emitDeclFlags(TypeScript.ToDeclFlags(accessorSymbol.flags), "var"); + this.declFile.Write(funcDecl.name.text); + var propertyType = accessorSymbol.getType(); + if(this.canEmitTypeAnnotationSignature(TypeScript.ToDeclFlags(accessorSymbol.flags))) { + this.declFile.Write(" : "); + this.emitTypeSignature(propertyType); + } + this.declFile.WriteLine(";"); + return false; + }; + DeclarationEmitter.prototype.emitClassMembersFromConstructorDefinition = function (funcDecl) { + if(funcDecl.arguments) { + var argsLen = funcDecl.arguments.members.length; + if(funcDecl.variableArgList) { + argsLen--; + } + for(var i = 0; i < argsLen; i++) { + var argDecl = funcDecl.arguments.members[i]; + if(TypeScript.hasFlag(argDecl.varFlags, TypeScript.VarFlags.Property)) { + this.emitDeclarationComments(argDecl); + this.emitDeclFlags(TypeScript.ToDeclFlags(argDecl.varFlags), "var"); + this.declFile.Write(argDecl.id.text); + if(argDecl.typeExpr && this.canEmitTypeAnnotationSignature(TypeScript.ToDeclFlags(argDecl.varFlags))) { + this.declFile.Write(": "); + this.emitTypeSignature(argDecl.type); + } + this.declFile.WriteLine(";"); + } + } + } + }; + DeclarationEmitter.prototype.ClassDeclarationCallback = function (pre, classDecl) { + if(!this.canEmitPrePostAstSignature(TypeScript.ToDeclFlags(classDecl.varFlags), classDecl, pre)) { + return false; + } + if(pre) { + var className = classDecl.name.text; + this.emitDeclarationComments(classDecl); + this.emitDeclFlags(TypeScript.ToDeclFlags(classDecl.varFlags), "class"); + this.declFile.Write(className); + this.emitBaseList(classDecl.extendsList, "extends"); + this.emitBaseList(classDecl.implementsList, "implements"); + this.declFile.WriteLine(" {"); + this.pushDeclarationContainer(classDecl); + this.indenter.increaseIndent(); + if(classDecl.constructorDecl) { + this.emitClassMembersFromConstructorDefinition(classDecl.constructorDecl); + } + } else { + this.indenter.decreaseIndent(); + this.popDeclarationContainer(classDecl); + this.emitIndent(); + this.declFile.WriteLine("}"); + } + return true; + }; + DeclarationEmitter.prototype.InterfaceDeclarationCallback = function (pre, interfaceDecl) { + if(!this.canEmitPrePostAstSignature(TypeScript.ToDeclFlags(interfaceDecl.varFlags), interfaceDecl, pre)) { + return false; + } + if(pre) { + var interfaceName = interfaceDecl.name.text; + this.emitDeclarationComments(interfaceDecl); + this.emitDeclFlags(TypeScript.ToDeclFlags(interfaceDecl.varFlags), "interface"); + this.declFile.Write(interfaceName); + this.emitBaseList(interfaceDecl.extendsList, "extends"); + this.declFile.WriteLine(" {"); + this.indenter.increaseIndent(); + this.pushDeclarationContainer(interfaceDecl); + } else { + this.indenter.decreaseIndent(); + this.popDeclarationContainer(interfaceDecl); + this.emitIndent(); + this.declFile.WriteLine("}"); + } + return true; + }; + DeclarationEmitter.prototype.ImportDeclarationCallback = function (pre, importDecl) { + if(pre) { + if((this.declarationContainerStack[0]).isExternallyVisibleSymbol(importDecl.id.sym)) { + this.emitDeclarationComments(importDecl); + this.emitIndent(); + this.declFile.Write("import "); + this.declFile.Write(importDecl.id.text + " = "); + if(importDecl.isDynamicImport) { + this.declFile.WriteLine("module (" + importDecl.getAliasName() + ");"); + } else { + this.declFile.WriteLine(importDecl.getAliasName() + ";"); + } + } + } + return false; + }; + DeclarationEmitter.prototype.emitEnumSignature = function (moduleDecl) { + if(!this.canEmitSignature(TypeScript.ToDeclFlags(moduleDecl.modFlags))) { + return false; + } + this.emitDeclarationComments(moduleDecl); + this.emitDeclFlags(TypeScript.ToDeclFlags(moduleDecl.modFlags), "enum"); + this.declFile.WriteLine(moduleDecl.name.text + " {"); + this.indenter.increaseIndent(); + var membersLen = moduleDecl.members.members.length; + for(var j = 1; j < membersLen; j++) { + var memberDecl = moduleDecl.members.members[j]; + if(memberDecl.nodeType == TypeScript.NodeType.VarDecl) { + this.emitDeclarationComments(memberDecl); + this.emitIndent(); + this.declFile.WriteLine((memberDecl).id.text + ","); + } else { + TypeScript.CompilerDiagnostics.assert(memberDecl.nodeType != TypeScript.NodeType.Asg, "We want to catch this"); + } + } + this.indenter.decreaseIndent(); + this.emitIndent(); + this.declFile.WriteLine("}"); + return false; + }; + DeclarationEmitter.prototype.ModuleDeclarationCallback = function (pre, moduleDecl) { + if(TypeScript.hasFlag(moduleDecl.modFlags, TypeScript.ModuleFlags.IsWholeFile)) { + if(TypeScript.hasFlag(moduleDecl.modFlags, TypeScript.ModuleFlags.IsDynamic)) { + if(pre) { + if(!this.emitOptions.outputMany) { + this.singleDeclFile = this.declFile; + TypeScript.CompilerDiagnostics.assert(this.indenter.indentAmt == 0, "Indent has to be 0 when outputing new file"); + var declareFileName = this.emitOptions.mapOutputFileName(TypeScript.stripQuotes(moduleDecl.name.sym.name), TypeScript.TypeScriptCompiler.mapToDTSFileName); + var useUTF8InOutputfile = moduleDecl.containsUnicodeChar || (this.emitOptions.emitComments && moduleDecl.containsUnicodeCharInComment); + try { + this.declFile = new DeclFileWriter(this.emitOptions.ioHost.createFile(declareFileName, useUTF8InOutputfile)); + } catch (ex) { + this.errorReporter.emitterError(null, ex.message); + } + } + this.pushDeclarationContainer(moduleDecl); + } else { + if(!this.emitOptions.outputMany) { + TypeScript.CompilerDiagnostics.assert(this.singleDeclFile != this.declFile, "singleDeclFile cannot be null as we are going to revert back to it"); + TypeScript.CompilerDiagnostics.assert(this.indenter.indentAmt == 0, "Indent has to be 0 when outputing new file"); + try { + this.declFile.Close(); + } catch (ex) { + this.errorReporter.emitterError(null, ex.message); + } + this.declFile = this.singleDeclFile; + } + this.popDeclarationContainer(moduleDecl); + } + } + return true; + } + if(moduleDecl.isEnum()) { + if(pre) { + this.emitEnumSignature(moduleDecl); + } + return false; + } + if(!this.canEmitPrePostAstSignature(TypeScript.ToDeclFlags(moduleDecl.modFlags), moduleDecl, pre)) { + return false; + } + if(pre) { + if(this.emitDottedModuleName()) { + this.dottedModuleEmit += "."; + } else { + this.dottedModuleEmit = this.getDeclFlagsString(TypeScript.ToDeclFlags(moduleDecl.modFlags), "module"); + } + this.dottedModuleEmit += moduleDecl.name.text; + var isCurrentModuleDotted = (moduleDecl.members.members.length == 1 && moduleDecl.members.members[0].nodeType == TypeScript.NodeType.ModuleDeclaration && !(moduleDecl.members.members[0]).isEnum() && TypeScript.hasFlag((moduleDecl.members.members[0]).modFlags, TypeScript.ModuleFlags.Exported)); + var moduleDeclComments = moduleDecl.getDocComments(); + isCurrentModuleDotted = isCurrentModuleDotted && (moduleDeclComments == null || moduleDeclComments.length == 0); + this.isDottedModuleName.push(isCurrentModuleDotted); + this.pushDeclarationContainer(moduleDecl); + if(!isCurrentModuleDotted) { + this.emitDeclarationComments(moduleDecl); + this.declFile.Write(this.dottedModuleEmit); + this.declFile.WriteLine(" {"); + this.indenter.increaseIndent(); + } + } else { + if(!this.emitDottedModuleName()) { + this.indenter.decreaseIndent(); + this.emitIndent(); + this.declFile.WriteLine("}"); + } + this.popDeclarationContainer(moduleDecl); + this.isDottedModuleName.pop(); + } + return true; + }; + DeclarationEmitter.prototype.ScriptCallback = function (pre, script) { + if(pre) { + if(this.emitOptions.outputMany) { + for(var i = 0; i < script.referencedFiles.length; i++) { + var referencePath = script.referencedFiles[i].path; + var declareFileName; + if(TypeScript.isRooted(referencePath)) { + declareFileName = this.emitOptions.mapOutputFileName(referencePath, TypeScript.TypeScriptCompiler.mapToDTSFileName); + } else { + declareFileName = TypeScript.getDeclareFilePath(script.referencedFiles[i].path); + } + this.declFile.WriteLine('/// '); + } + } + this.pushDeclarationContainer(script); + } else { + this.popDeclarationContainer(script); + } + return true; + }; + DeclarationEmitter.prototype.DefaultCallback = function (pre, ast) { + return !TypeScript.hasFlag(ast.flags, TypeScript.ASTFlags.IsStatement); + }; + return DeclarationEmitter; + })(); + TypeScript.DeclarationEmitter = DeclarationEmitter; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + (function (UpdateUnitKind) { + UpdateUnitKind._map = []; + UpdateUnitKind._map[0] = "Unknown"; + UpdateUnitKind.Unknown = 0; + UpdateUnitKind._map[1] = "NoEdits"; + UpdateUnitKind.NoEdits = 1; + UpdateUnitKind._map[2] = "EditsInsideSingleScope"; + UpdateUnitKind.EditsInsideSingleScope = 2; + })(TypeScript.UpdateUnitKind || (TypeScript.UpdateUnitKind = {})); + var UpdateUnitKind = TypeScript.UpdateUnitKind; + var ScriptEditRange = (function () { + function ScriptEditRange(minChar, limChar, delta) { + this.minChar = minChar; + this.limChar = limChar; + this.delta = delta; + } + ScriptEditRange.unknown = function unknown() { + return new ScriptEditRange(-1, -1, -1); + } + ScriptEditRange.prototype.isUnknown = function () { + return this.minChar === -1 && this.limChar === -1 && this.delta === -1; + }; + ScriptEditRange.prototype.containsPosition = function (pos) { + return (this.minChar <= pos && pos < this.limChar) || (this.minChar <= pos && pos < this.limChar + this.delta); + }; + ScriptEditRange.prototype.toString = function () { + return "editRange(minChar=" + this.minChar + ", limChar=" + this.limChar + ", delta=" + this.delta + ")"; + }; + return ScriptEditRange; + })(); + TypeScript.ScriptEditRange = ScriptEditRange; + var UpdateUnitResult = (function () { + function UpdateUnitResult(kind, unitIndex, script1, script2) { + this.kind = kind; + this.unitIndex = unitIndex; + this.script1 = script1; + this.script2 = script2; + this.scope1 = null; + this.scope2 = null; + this.editRange = null; + this.parseErrors = []; + } + UpdateUnitResult.noEdits = function noEdits(unitIndex) { + return new UpdateUnitResult(UpdateUnitKind.NoEdits, unitIndex, null, null); + } + UpdateUnitResult.unknownEdits = function unknownEdits(script1, script2, parseErrors) { + var result = new UpdateUnitResult(UpdateUnitKind.Unknown, script1.locationInfo.unitIndex, script1, script2); + result.parseErrors = parseErrors; + return result; + } + UpdateUnitResult.singleScopeEdits = function singleScopeEdits(script1, script2, scope1, scope2, editRange, parseErrors) { + var result = new UpdateUnitResult(UpdateUnitKind.EditsInsideSingleScope, script1.locationInfo.unitIndex, script1, script2); + result.scope1 = scope1; + result.scope2 = scope2; + result.editRange = editRange; + result.parseErrors = parseErrors; + return result; + } + return UpdateUnitResult; + })(); + TypeScript.UpdateUnitResult = UpdateUnitResult; + var ErrorEntry = (function () { + function ErrorEntry(unitIndex, minChar, limChar, message) { + this.unitIndex = unitIndex; + this.minChar = minChar; + this.limChar = limChar; + this.message = message; + } + return ErrorEntry; + })(); + TypeScript.ErrorEntry = ErrorEntry; + TypeScript.defaultSettings = new TypeScript.CompilationSettings(); + var TypeScriptCompiler = (function () { + function TypeScriptCompiler(errorOutput, logger, settings) { + if (typeof logger === "undefined") { logger = new TypeScript.NullLogger(); } + if (typeof settings === "undefined") { settings = TypeScript.defaultSettings; } + this.errorOutput = errorOutput; + this.logger = logger; + this.settings = settings; + this.parser = new TypeScript.Parser(); + this.typeFlow = null; + this.scripts = new TypeScript.ASTList(); + this.units = new Array(); + this.errorReporter = new TypeScript.ErrorReporter(this.errorOutput); + this.persistentTypeState = new TypeScript.PersistentGlobalTypeState(this.errorReporter); + this.errorReporter.parser = this.parser; + this.initTypeChecker(this.errorOutput); + this.parser.style_requireSemi = this.settings.styleSettings.requireSemi; + this.parser.style_funcInLoop = this.settings.styleSettings.funcInLoop; + this.parser.inferPropertiesFromThisAssignment = this.settings.inferPropertiesFromThisAssignment; + this.emitSettings = new TypeScript.EmitOptions(this.settings); + TypeScript.codeGenTarget = settings.codeGenTarget; + } + TypeScriptCompiler.prototype.timeFunction = function (funcDescription, func) { + return TypeScript.timeFunction(this.logger, funcDescription, func); + }; + TypeScriptCompiler.prototype.initTypeChecker = function (errorOutput) { + this.persistentTypeState.refreshPersistentState(); + this.typeChecker = new TypeScript.TypeChecker(this.persistentTypeState); + this.typeChecker.errorReporter = this.errorReporter; + this.typeChecker.checkControlFlow = this.settings.controlFlow; + this.typeChecker.checkControlFlowUseDef = this.settings.controlFlowUseDef; + this.typeChecker.printControlFlowGraph = this.settings.printControlFlow; + this.typeChecker.errorsOnWith = this.settings.errorOnWith; + this.typeChecker.styleSettings = this.settings.styleSettings; + this.typeChecker.canCallDefinitionSignature = this.settings.canCallDefinitionSignature; + this.errorReporter.checker = this.typeChecker; + this.setErrorOutput(this.errorOutput); + }; + TypeScriptCompiler.prototype.setErrorOutput = function (outerr) { + this.errorOutput = outerr; + this.errorReporter.setErrOut(outerr); + this.parser.outfile = outerr; + }; + TypeScriptCompiler.prototype.emitCommentsToOutput = function () { + this.emitSettings = new TypeScript.EmitOptions(this.settings); + }; + TypeScriptCompiler.prototype.setErrorCallback = function (fn) { + this.parser.errorCallback = fn; + }; + TypeScriptCompiler.prototype.updateUnit = function (prog, filename, setRecovery) { + return this.updateSourceUnit(new TypeScript.StringSourceText(prog), filename, setRecovery); + }; + TypeScriptCompiler.prototype.updateSourceUnit = function (sourceText, filename, setRecovery) { + var _this = this; + return this.timeFunction("updateSourceUnit(" + filename + ")", function () { + var updateResult = _this.partialUpdateUnit(sourceText, filename, setRecovery); + return _this.applyUpdateResult(updateResult); + }); + }; + TypeScriptCompiler.prototype.applyUpdateResult = function (updateResult) { + switch(updateResult.kind) { + case UpdateUnitKind.NoEdits: { + return false; + + } + case UpdateUnitKind.Unknown: { + this.scripts.members[updateResult.unitIndex] = updateResult.script2; + this.units[updateResult.unitIndex] = updateResult.script2.locationInfo; + for(var i = 0, len = updateResult.parseErrors.length; i < len; i++) { + var e = updateResult.parseErrors[i]; + if(this.parser.errorCallback) { + this.parser.errorCallback(e.minChar, e.limChar - e.minChar, e.message, e.unitIndex); + } + } + return true; + + } + case UpdateUnitKind.EditsInsideSingleScope: { + new TypeScript.IncrementalParser(this.logger).mergeTrees(updateResult); + return true; + + } + } + }; + TypeScriptCompiler.prototype.partialUpdateUnit = function (sourceText, filename, setRecovery) { + var _this = this; + return this.timeFunction("partialUpdateUnit(" + filename + ")", function () { + for(var i = 0, len = _this.units.length; i < len; i++) { + if(_this.units[i].filename == filename) { + if((_this.scripts.members[i]).isResident) { + return UpdateUnitResult.noEdits(i); + } + if(setRecovery) { + _this.parser.setErrorRecovery(null); + } + var updateResult; + var parseErrors = []; + var errorCapture = function (minChar, charLen, message, unitIndex) { + parseErrors.push(new ErrorEntry(unitIndex, minChar, minChar + charLen, message)); + }; + var svErrorCallback = _this.parser.errorCallback; + if(svErrorCallback) { + _this.parser.errorCallback = errorCapture; + } + var oldScript = _this.scripts.members[i]; + var newScript = _this.parser.parse(sourceText, filename, i); + if(svErrorCallback) { + _this.parser.errorCallback = svErrorCallback; + } + updateResult = UpdateUnitResult.unknownEdits(oldScript, newScript, parseErrors); + return updateResult; + } + } + throw new Error("Unknown file \"" + filename + "\""); + }); + }; + TypeScriptCompiler.prototype.addUnit = function (prog, filename, keepResident, referencedFiles) { + if (typeof keepResident === "undefined") { keepResident = false; } + if (typeof referencedFiles === "undefined") { referencedFiles = []; } + return this.addSourceUnit(new TypeScript.StringSourceText(prog), filename, keepResident, referencedFiles); + }; + TypeScriptCompiler.prototype.addSourceUnit = function (sourceText, filename, keepResident, referencedFiles) { + if (typeof referencedFiles === "undefined") { referencedFiles = []; } + var _this = this; + return this.timeFunction("addSourceUnit(" + filename + ", " + keepResident + ")", function () { + var script = _this.parser.parse(sourceText, filename, _this.units.length, TypeScript.AllowedElements.Global); + script.referencedFiles = referencedFiles; + script.isResident = keepResident; + _this.persistentTypeState.setCollectionMode(keepResident ? TypeScript.TypeCheckCollectionMode.Resident : TypeScript.TypeCheckCollectionMode.Transient); + var index = _this.units.length; + _this.units[index] = script.locationInfo; + _this.typeChecker.collectTypes(script); + _this.scripts.append(script); + return script; + }); + }; + TypeScriptCompiler.prototype.parseUnit = function (prog, filename) { + return this.parseSourceUnit(new TypeScript.StringSourceText(prog), filename); + }; + TypeScriptCompiler.prototype.parseSourceUnit = function (sourceText, filename) { + this.parser.setErrorRecovery(this.errorOutput); + var script = this.parser.parse(sourceText, filename, 0); + var index = this.units.length; + this.units[index] = script.locationInfo; + this.typeChecker.collectTypes(script); + this.scripts.append(script); + }; + TypeScriptCompiler.prototype.typeCheck = function () { + var _this = this; + return this.timeFunction("typeCheck()", function () { + var binder = new TypeScript.Binder(_this.typeChecker); + _this.typeChecker.units = _this.units; + binder.bind(_this.typeChecker.globalScope, _this.typeChecker.globals); + binder.bind(_this.typeChecker.globalScope, _this.typeChecker.ambientGlobals); + binder.bind(_this.typeChecker.globalScope, _this.typeChecker.globalTypes); + binder.bind(_this.typeChecker.globalScope, _this.typeChecker.ambientGlobalTypes); + _this.typeFlow = new TypeScript.TypeFlow(_this.logger, _this.typeChecker.globalScope, _this.parser, _this.typeChecker); + var i = 0; + var script = null; + var len = _this.scripts.members.length; + _this.persistentTypeState.setCollectionMode(TypeScript.TypeCheckCollectionMode.Resident); + for(i = 0; i < len; i++) { + script = _this.scripts.members[i]; + if(!script.isResident || script.hasBeenTypeChecked) { + continue; + } + _this.typeFlow.assignScopes(script); + _this.typeFlow.initLibs(); + } + for(i = 0; i < len; i++) { + script = _this.scripts.members[i]; + if(!script.isResident || script.hasBeenTypeChecked) { + continue; + } + _this.typeFlow.typeCheck(script); + script.hasBeenTypeChecked = true; + } + _this.persistentTypeState.setCollectionMode(TypeScript.TypeCheckCollectionMode.Transient); + len = _this.scripts.members.length; + for(i = 0; i < len; i++) { + script = _this.scripts.members[i]; + if(script.isResident) { + continue; + } + _this.typeFlow.assignScopes(script); + _this.typeFlow.initLibs(); + } + for(i = 0; i < len; i++) { + script = _this.scripts.members[i]; + if(script.isResident) { + continue; + } + _this.typeFlow.typeCheck(script); + } + return null; + }); + }; + TypeScriptCompiler.prototype.cleanASTTypesForReTypeCheck = function (ast) { + function cleanASTType(ast, parent) { + ast.type = null; + if(ast.nodeType == TypeScript.NodeType.VarDecl) { + var vardecl = ast; + vardecl.sym = null; + } else { + if(ast.nodeType == TypeScript.NodeType.ArgDecl) { + var argdecl = ast; + argdecl.sym = null; + } else { + if(ast.nodeType == TypeScript.NodeType.Name) { + var name = ast; + name.sym = null; + } else { + if(ast.nodeType == TypeScript.NodeType.FuncDecl) { + var funcdecl = ast; + funcdecl.signature = null; + funcdecl.freeVariables = new Array(); + funcdecl.symbols = null; + funcdecl.accessorSymbol = null; + funcdecl.scopeType = null; + } else { + if(ast.nodeType == TypeScript.NodeType.ModuleDeclaration) { + var modDecl = ast; + modDecl.mod = null; + } else { + if(ast.nodeType == TypeScript.NodeType.With) { + (ast).withSym = null; + } else { + if(ast.nodeType == TypeScript.NodeType.Catch) { + (ast).containedScope = null; + } + } + } + } + } + } + } + return ast; + } + TypeScript.getAstWalkerFactory().walk(ast, cleanASTType); + }; + TypeScriptCompiler.prototype.cleanTypesForReTypeCheck = function () { + var _this = this; + return this.timeFunction("cleanTypesForReTypeCheck()", function () { + for(var i = 0, len = _this.scripts.members.length; i < len; i++) { + var script = _this.scripts.members[i]; + if((script).isResident) { + continue; + } + _this.cleanASTTypesForReTypeCheck(script); + _this.typeChecker.collectTypes(script); + } + return null; + }); + }; + TypeScriptCompiler.prototype.attemptIncrementalTypeCheck = function (updateResult) { + return this.timeFunction("attemptIncrementalTypeCheck()", function () { + return false; + }); + }; + TypeScriptCompiler.prototype.reTypeCheck = function () { + var _this = this; + return this.timeFunction("reTypeCheck()", function () { + TypeScript.CompilerDiagnostics.analysisPass++; + _this.initTypeChecker(_this.errorOutput); + _this.persistentTypeState.setCollectionMode(TypeScript.TypeCheckCollectionMode.Transient); + _this.cleanTypesForReTypeCheck(); + return _this.typeCheck(); + }); + }; + TypeScriptCompiler.prototype.isDynamicModuleCompilation = function () { + for(var i = 0, len = this.scripts.members.length; i < len; i++) { + var script = this.scripts.members[i]; + if(!script.isDeclareFile && script.topLevelMod != null) { + return true; + } + } + return false; + }; + TypeScriptCompiler.prototype.updateCommonDirectoryPath = function () { + var commonComponents = []; + var commonComponentsLength = -1; + for(var i = 0, len = this.scripts.members.length; i < len; i++) { + var script = this.scripts.members[i]; + if(script.emitRequired(this.emitSettings)) { + var fileName = script.locationInfo.filename; + var fileComponents = TypeScript.filePathComponents(fileName); + if(commonComponentsLength == -1) { + commonComponents = fileComponents; + commonComponentsLength = commonComponents.length; + } else { + var updatedPath = false; + for(var j = 0; j < commonComponentsLength && j < fileComponents.length; j++) { + if(commonComponents[j] != fileComponents[j]) { + commonComponentsLength = j; + updatedPath = true; + if(j == 0) { + this.errorReporter.emitterError(null, "Cannot find the common subdirectory path for the input files"); + return; + } + break; + } + } + if(!updatedPath && fileComponents.length < commonComponentsLength) { + commonComponentsLength = fileComponents.length; + } + } + } + } + this.emitSettings.commonDirectoryPath = commonComponents.slice(0, commonComponentsLength).join("/") + "/"; + if(this.emitSettings.outputOption.charAt(this.emitSettings.outputOption.length - 1) != "/") { + this.emitSettings.outputOption += "/"; + } + }; + TypeScriptCompiler.prototype.parseEmitOption = function (ioHost) { + this.emitSettings.ioHost = ioHost; + if(this.emitSettings.outputOption == "") { + this.emitSettings.outputMany = true; + this.emitSettings.commonDirectoryPath = ""; + return; + } + this.emitSettings.outputOption = TypeScript.switchToForwardSlashes(this.emitSettings.ioHost.resolvePath(this.emitSettings.outputOption)); + if(this.emitSettings.ioHost.directoryExists(this.emitSettings.outputOption)) { + this.emitSettings.outputMany = true; + } else { + if(this.emitSettings.ioHost.fileExists(this.emitSettings.outputOption)) { + this.emitSettings.outputMany = false; + } else { + this.emitSettings.outputMany = !TypeScript.isJSFile(this.emitSettings.outputOption); + } + } + if(this.isDynamicModuleCompilation() && !this.emitSettings.outputMany) { + this.errorReporter.emitterError(null, "Cannot compile dynamic modules when emitting into single file"); + } + if(this.emitSettings.outputMany) { + this.updateCommonDirectoryPath(); + } + }; + TypeScriptCompiler.prototype.useUTF8ForFile = function (script) { + if(this.emitSettings.outputMany) { + return this.outputScriptToUTF8(script); + } else { + return this.outputScriptsToUTF8((this.scripts.members)); + } + }; + TypeScriptCompiler.mapToDTSFileName = function mapToDTSFileName(fileName, wholeFileNameReplaced) { + return TypeScript.getDeclareFilePath(fileName); + } + TypeScriptCompiler.prototype.canEmitDeclarations = function (script) { + if(!this.settings.generateDeclarationFiles) { + return false; + } + if(!!script && (script.isDeclareFile || script.isResident || script.bod == null)) { + return false; + } + return true; + }; + TypeScriptCompiler.prototype.emitDeclarationsUnit = function (script, reuseEmitter, declarationEmitter) { + if(!this.canEmitDeclarations(script)) { + return null; + } + if(!declarationEmitter) { + var declareFileName = this.emitSettings.mapOutputFileName(script.locationInfo.filename, TypeScriptCompiler.mapToDTSFileName); + var declareFile = this.createFile(declareFileName, this.useUTF8ForFile(script)); + declarationEmitter = new TypeScript.DeclarationEmitter(this.typeChecker, this.emitSettings, this.errorReporter); + declarationEmitter.setDeclarationFile(declareFile); + } + declarationEmitter.emitDeclarations(script); + if(!reuseEmitter) { + declarationEmitter.Close(); + return null; + } else { + return declarationEmitter; + } + }; + TypeScriptCompiler.prototype.emitDeclarations = function () { + if(!this.canEmitDeclarations()) { + return; + } + if(this.errorReporter.hasErrors) { + return; + } + if(this.scripts.members.length == 0) { + return; + } + var declarationEmitter = null; + for(var i = 0, len = this.scripts.members.length; i < len; i++) { + var script = this.scripts.members[i]; + if(this.emitSettings.outputMany || declarationEmitter == null) { + declarationEmitter = this.emitDeclarationsUnit(script, !this.emitSettings.outputMany); + } else { + this.emitDeclarationsUnit(script, true, declarationEmitter); + } + } + if(declarationEmitter) { + declarationEmitter.Close(); + } + }; + TypeScriptCompiler.mapToFileNameExtension = function mapToFileNameExtension(extension, fileName, wholeFileNameReplaced) { + if(wholeFileNameReplaced) { + return fileName; + } else { + var splitFname = fileName.split("."); + splitFname.pop(); + return splitFname.join(".") + extension; + } + } + TypeScriptCompiler.mapToJSFileName = function mapToJSFileName(fileName, wholeFileNameReplaced) { + return TypeScriptCompiler.mapToFileNameExtension(".js", fileName, wholeFileNameReplaced); + } + TypeScriptCompiler.prototype.emitUnit = function (script, reuseEmitter, emitter) { + if(!script.emitRequired(this.emitSettings)) { + return null; + } + var fname = script.locationInfo.filename; + if(!emitter) { + var outFname = this.emitSettings.mapOutputFileName(fname, TypeScriptCompiler.mapToJSFileName); + var outFile = this.createFile(outFname, this.useUTF8ForFile(script)); + emitter = new TypeScript.Emitter(this.typeChecker, outFname, outFile, this.emitSettings, this.errorReporter); + if(this.settings.mapSourceFiles) { + emitter.setSourceMappings(new TypeScript.SourceMapper(fname, outFname, outFile, this.createFile(outFname + TypeScript.SourceMapper.MapFileExtension, false), this.errorReporter)); + } + } else { + if(this.settings.mapSourceFiles) { + emitter.setSourceMappings(new TypeScript.SourceMapper(fname, emitter.emittingFileName, emitter.outfile, emitter.sourceMapper.sourceMapOut, this.errorReporter)); + } + } + this.typeChecker.locationInfo = script.locationInfo; + emitter.emitJavascript(script, TypeScript.TokenID.Comma, false); + if(!reuseEmitter) { + emitter.Close(); + return null; + } else { + return emitter; + } + }; + TypeScriptCompiler.prototype.emit = function (ioHost) { + this.parseEmitOption(ioHost); + var emitter = null; + for(var i = 0, len = this.scripts.members.length; i < len; i++) { + var script = this.scripts.members[i]; + if(this.emitSettings.outputMany || emitter == null) { + emitter = this.emitUnit(script, !this.emitSettings.outputMany); + } else { + this.emitUnit(script, true, emitter); + } + } + if(emitter) { + emitter.Close(); + } + }; + TypeScriptCompiler.prototype.emitToOutfile = function (outputFile) { + if(this.settings.mapSourceFiles) { + throw Error("Cannot generate source map"); + } + if(this.settings.generateDeclarationFiles) { + throw Error("Cannot generate declaration files"); + } + if(this.settings.outputOption != "") { + throw Error("Cannot parse output option"); + } + var emitter = emitter = new TypeScript.Emitter(this.typeChecker, "stdout", outputFile, this.emitSettings, this.errorReporter); + ; ; + for(var i = 0, len = this.scripts.members.length; i < len; i++) { + var script = this.scripts.members[i]; + this.typeChecker.locationInfo = script.locationInfo; + emitter.emitJavascript(script, TypeScript.TokenID.Comma, false); + } + }; + TypeScriptCompiler.prototype.emitAST = function (ioHost) { + this.parseEmitOption(ioHost); + var outFile = null; + var context = null; + for(var i = 0, len = this.scripts.members.length; i < len; i++) { + var script = this.scripts.members[i]; + if(this.emitSettings.outputMany || context == null) { + var fname = this.units[i].filename; + var mapToTxtFileName = function (fileName, wholeFileNameReplaced) { + return TypeScriptCompiler.mapToFileNameExtension(".txt", fileName, wholeFileNameReplaced); + }; + var outFname = this.emitSettings.mapOutputFileName(fname, mapToTxtFileName); + outFile = this.createFile(outFname, this.useUTF8ForFile(script)); + context = new TypeScript.PrintContext(outFile, this.parser); + } + TypeScript.getAstWalkerFactory().walk(script, TypeScript.prePrintAST, TypeScript.postPrintAST, null, context); + if(this.emitSettings.outputMany) { + try { + outFile.Close(); + } catch (e) { + this.errorReporter.emitterError(null, e.message); + } + } + } + if(!this.emitSettings.outputMany) { + try { + outFile.Close(); + } catch (e) { + this.errorReporter.emitterError(null, e.message); + } + } + }; + TypeScriptCompiler.prototype.outputScriptToUTF8 = function (script) { + return script.containsUnicodeChar || (this.emitSettings.emitComments && script.containsUnicodeCharInComment); + }; + TypeScriptCompiler.prototype.outputScriptsToUTF8 = function (scripts) { + for(var i = 0, len = scripts.length; i < len; i++) { + var script = scripts[i]; + if(this.outputScriptToUTF8(script)) { + return true; + } + } + return false; + }; + TypeScriptCompiler.prototype.createFile = function (fileName, useUTF8) { + try { + return this.emitSettings.ioHost.createFile(fileName, useUTF8); + } catch (ex) { + this.errorReporter.emitterError(null, ex.message); + } + }; + return TypeScriptCompiler; + })(); + TypeScript.TypeScriptCompiler = TypeScriptCompiler; + var ScopeEntry = (function () { + function ScopeEntry(name, type, sym) { + this.name = name; + this.type = type; + this.sym = sym; + } + return ScopeEntry; + })(); + TypeScript.ScopeEntry = ScopeEntry; + var ScopeTraversal = (function () { + function ScopeTraversal(compiler) { + this.compiler = compiler; + } + ScopeTraversal.prototype.getScope = function (enclosingScopeContext) { + if(enclosingScopeContext.enclosingObjectLit && enclosingScopeContext.isMemberCompletion) { + return enclosingScopeContext.getObjectLiteralScope(); + } else { + if(enclosingScopeContext.isMemberCompletion) { + if(enclosingScopeContext.useFullAst) { + return this.compiler.typeFlow.findMemberScopeAtFullAst(enclosingScopeContext); + } else { + return this.compiler.typeFlow.findMemberScopeAt(enclosingScopeContext); + } + } else { + return enclosingScopeContext.getScope(); + } + } + }; + ScopeTraversal.prototype.getScopeEntries = function (enclosingScopeContext) { + var scope = this.getScope(enclosingScopeContext); + if(scope == null) { + return []; + } + var inScopeNames = new TypeScript.StringHashTable(); + var allSymbolNames = scope.getAllSymbolNames(enclosingScopeContext.isMemberCompletion); + for(var i = 0; i < allSymbolNames.length; i++) { + var name = allSymbolNames[i]; + if(name == TypeScript.globalId || name == "_Core" || name == "_element") { + continue; + } + inScopeNames.add(name, ""); + } + var svModuleDecl = this.compiler.typeChecker.currentModDecl; + this.compiler.typeChecker.currentModDecl = enclosingScopeContext.deepestModuleDecl; + var result = this.getTypeNamesForNames(enclosingScopeContext, inScopeNames.getAllKeys(), scope); + this.compiler.typeChecker.currentModDecl = svModuleDecl; + return result; + }; + ScopeTraversal.prototype.getTypeNamesForNames = function (enclosingScopeContext, allNames, scope) { + var result = []; + var enclosingScope = enclosingScopeContext.getScope(); + for(var i = 0; i < allNames.length; i++) { + var name = allNames[i]; + var publicsOnly = enclosingScopeContext.publicsOnly && enclosingScopeContext.isMemberCompletion; + var symbol = scope.find(name, publicsOnly, false); + if(symbol == null) { + symbol = scope.find(name, publicsOnly, true); + } + var displayThisMember = symbol && symbol.flags & TypeScript.SymbolFlags.Private ? symbol.container == scope.container : true; + if(symbol) { + if(displayThisMember && !TypeScript.isQuoted(symbol.name) && !TypeScript.isRelative(symbol.name)) { + var typeName = symbol.getType().getScopedTypeName(enclosingScope); + result.push(new ScopeEntry(name, typeName, symbol)); + } + } else { + if(name == "true" || name == "false") { + result.push(new ScopeEntry(name, "bool", this.compiler.typeChecker.booleanType.symbol)); + } + } + } + return result; + }; + return ScopeTraversal; + })(); + TypeScript.ScopeTraversal = ScopeTraversal; +})(TypeScript || (TypeScript = {})); +var TypeScript; +(function (TypeScript) { + (function (CompilerDiagnostics) { + CompilerDiagnostics.debug = false; + CompilerDiagnostics.diagnosticWriter = null; + CompilerDiagnostics.analysisPass = 0; + function Alert(output) { + if(CompilerDiagnostics.diagnosticWriter) { + CompilerDiagnostics.diagnosticWriter.Alert(output); + } + } + CompilerDiagnostics.Alert = Alert; + function debugPrint(s) { + if(CompilerDiagnostics.debug) { + Alert(s); + } + } + CompilerDiagnostics.debugPrint = debugPrint; + function assert(condition, s) { + if(CompilerDiagnostics.debug) { + if(!condition) { + Alert(s); + } + } + } + CompilerDiagnostics.assert = assert; + })(TypeScript.CompilerDiagnostics || (TypeScript.CompilerDiagnostics = {})); + var CompilerDiagnostics = TypeScript.CompilerDiagnostics; + var NullLogger = (function () { + function NullLogger() { } + NullLogger.prototype.information = function () { + return false; + }; + NullLogger.prototype.debug = function () { + return false; + }; + NullLogger.prototype.warning = function () { + return false; + }; + NullLogger.prototype.error = function () { + return false; + }; + NullLogger.prototype.fatal = function () { + return false; + }; + NullLogger.prototype.log = function (s) { + }; + return NullLogger; + })(); + TypeScript.NullLogger = NullLogger; + var LoggerAdapter = (function () { + function LoggerAdapter(logger) { + this.logger = logger; + this._information = this.logger.information(); + this._debug = this.logger.debug(); + this._warning = this.logger.warning(); + this._error = this.logger.error(); + this._fatal = this.logger.fatal(); + } + LoggerAdapter.prototype.information = function () { + return this._information; + }; + LoggerAdapter.prototype.debug = function () { + return this._debug; + }; + LoggerAdapter.prototype.warning = function () { + return this._warning; + }; + LoggerAdapter.prototype.error = function () { + return this._error; + }; + LoggerAdapter.prototype.fatal = function () { + return this._fatal; + }; + LoggerAdapter.prototype.log = function (s) { + this.logger.log(s); + }; + return LoggerAdapter; + })(); + TypeScript.LoggerAdapter = LoggerAdapter; + var BufferedLogger = (function () { + function BufferedLogger() { + this.logContents = []; + } + BufferedLogger.prototype.information = function () { + return false; + }; + BufferedLogger.prototype.debug = function () { + return false; + }; + BufferedLogger.prototype.warning = function () { + return false; + }; + BufferedLogger.prototype.error = function () { + return false; + }; + BufferedLogger.prototype.fatal = function () { + return false; + }; + BufferedLogger.prototype.log = function (s) { + this.logContents.push(s); + }; + return BufferedLogger; + })(); + TypeScript.BufferedLogger = BufferedLogger; + function timeFunction(logger, funcDescription, func) { + var start = +new Date(); + var result = func(); + var end = +new Date(); + logger.log(funcDescription + " completed in " + (end - start) + " msec"); + return result; + } + TypeScript.timeFunction = timeFunction; + function stringToLiteral(value, length) { + var result = ""; + var addChar = function (index) { + var ch = value.charCodeAt(index); + switch(ch) { + case 9: { + result += "\\t"; + break; + + } + case 10: { + result += "\\n"; + break; + + } + case 11: { + result += "\\v"; + break; + + } + case 12: { + result += "\\f"; + break; + + } + case 13: { + result += "\\r"; + break; + + } + case 34: { + result += "\\\""; + break; + + } + case 39: { + result += "\\\'"; + break; + + } + case 92: { + result += "\\"; + break; + + } + default: { + result += value.charAt(index); + + } + } + }; + var tooLong = (value.length > length); + if(tooLong) { + var mid = length >> 1; + for(var i = 0; i < mid; i++) { + addChar(i); + } + result += "(...)"; + for(var i = value.length - mid; i < value.length; i++) { + addChar(i); + } + } else { + length = value.length; + for(var i = 0; i < length; i++) { + addChar(i); + } + } + return result; + } + TypeScript.stringToLiteral = stringToLiteral; +})(TypeScript || (TypeScript = {})); +var IOUtils; +(function (IOUtils) { + function createDirectoryStructure(ioHost, dirName) { + if(ioHost.directoryExists(dirName)) { + return; + } + var parentDirectory = ioHost.dirName(dirName); + if(parentDirectory != "") { + createDirectoryStructure(ioHost, parentDirectory); + } + ioHost.createDirectory(dirName); + } + function createFileAndFolderStructure(ioHost, fileName, useUTF8) { + var path = ioHost.resolvePath(fileName); + var dirName = ioHost.dirName(path); + createDirectoryStructure(ioHost, dirName); + return ioHost.createFile(path, useUTF8); + } + IOUtils.createFileAndFolderStructure = createFileAndFolderStructure; + function throwIOError(message, error) { + var errorMessage = message; + if(error && error.message) { + errorMessage += (" " + error.message); + } + throw new Error(errorMessage); + } + IOUtils.throwIOError = throwIOError; +})(IOUtils || (IOUtils = {})); + +var IO = (function () { + function getWindowsScriptHostIO() { + var fso = new ActiveXObject("Scripting.FileSystemObject"); + var streamObjectPool = []; + function getStreamObject() { + if(streamObjectPool.length > 0) { + return streamObjectPool.pop(); + } else { + return new ActiveXObject("ADODB.Stream"); + } + } + function releaseStreamObject(obj) { + streamObjectPool.push(obj); + } + var args = []; + for(var i = 0; i < WScript.Arguments.length; i++) { + args[i] = WScript.Arguments.Item(i); + } + return { + readFile: function (path) { + try { + var streamObj = getStreamObject(); + streamObj.Open(); + streamObj.Type = 2; + streamObj.Charset = 'x-ansi'; + streamObj.LoadFromFile(path); + var bomChar = streamObj.ReadText(2); + streamObj.Position = 0; + if((bomChar.charCodeAt(0) == 254 && bomChar.charCodeAt(1) == 255) || (bomChar.charCodeAt(0) == 255 && bomChar.charCodeAt(1) == 254)) { + streamObj.Charset = 'unicode'; + } else { + if(bomChar.charCodeAt(0) == 239 && bomChar.charCodeAt(1) == 187) { + streamObj.Charset = 'utf-8'; + } + } + var str = streamObj.ReadText(-1); + streamObj.Close(); + releaseStreamObject(streamObj); + return str; + } catch (err) { + IOUtils.throwIOError("Error reading file \"" + path + "\".", err); + } + }, + writeFile: function (path, contents) { + var file = this.createFile(path); + file.Write(contents); + file.Close(); + }, + fileExists: function (path) { + return fso.FileExists(path); + }, + resolvePath: function (path) { + return fso.GetAbsolutePathName(path); + }, + dirName: function (path) { + return fso.GetParentFolderName(path); + }, + findFile: function (rootPath, partialFilePath) { + var path = fso.GetAbsolutePathName(rootPath) + "/" + partialFilePath; + while(true) { + if(fso.FileExists(path)) { + try { + var content = this.readFile(path); + return { + content: content, + path: path + }; + } catch (err) { + } + } else { + rootPath = fso.GetParentFolderName(fso.GetAbsolutePathName(rootPath)); + if(rootPath == "") { + return null; + } else { + path = fso.BuildPath(rootPath, partialFilePath); + } + } + } + }, + deleteFile: function (path) { + try { + if(fso.FileExists(path)) { + fso.DeleteFile(path, true); + } + } catch (e) { + IOUtils.throwIOError("Couldn't delete file '" + path + "'.", e); + } + }, + createFile: function (path, useUTF8) { + try { + var streamObj = getStreamObject(); + streamObj.Charset = useUTF8 ? 'utf-8' : 'x-ansi'; + streamObj.Open(); + return { + Write: function (str) { + streamObj.WriteText(str, 0); + }, + WriteLine: function (str) { + streamObj.WriteText(str, 1); + }, + Close: function () { + try { + streamObj.SaveToFile(path, 2); + } catch (saveError) { + IOUtils.throwIOError("Couldn't write to file '" + path + "'.", saveError); + }finally { + if(streamObj.State != 0) { + streamObj.Close(); + } + releaseStreamObject(streamObj); + } + } + }; + } catch (creationError) { + IOUtils.throwIOError("Couldn't write to file '" + path + "'.", creationError); + } + }, + directoryExists: function (path) { + return fso.FolderExists(path); + }, + createDirectory: function (path) { + try { + if(!this.directoryExists(path)) { + fso.CreateFolder(path); + } + } catch (e) { + IOUtils.throwIOError("Couldn't create directory '" + path + "'.", e); + } + }, + dir: function (path, spec, options) { + options = options || { + }; + function filesInFolder(folder, root) { + var paths = []; + var fc; + if(options.recursive) { + fc = new Enumerator(folder.subfolders); + for(; !fc.atEnd(); fc.moveNext()) { + paths = paths.concat(filesInFolder(fc.item(), root + "/" + fc.item().Name)); + } + } + fc = new Enumerator(folder.files); + for(; !fc.atEnd(); fc.moveNext()) { + if(!spec || fc.item().Name.match(spec)) { + paths.push(root + "/" + fc.item().Name); + } + } + return paths; + } + var folder = fso.GetFolder(path); + var paths = []; + return filesInFolder(folder, path); + }, + print: function (str) { + WScript.StdOut.Write(str); + }, + printLine: function (str) { + WScript.Echo(str); + }, + arguments: args, + stderr: WScript.StdErr, + stdout: WScript.StdOut, + watchFile: null, + run: function (source, filename) { + try { + eval(source); + } catch (e) { + IOUtils.throwIOError("Error while executing file '" + filename + "'.", e); + } + }, + getExecutingFilePath: function () { + return WScript.ScriptFullName; + }, + quit: function (exitCode) { + if (typeof exitCode === "undefined") { exitCode = 0; } + try { + WScript.Quit(exitCode); + } catch (e) { + } + } + }; + } + ; ; + function getNodeIO() { + var _fs = require('fs'); + var _path = require('path'); + var _module = require('module'); + return { + readFile: function (file) { + try { + var buffer = _fs.readFileSync(file); + switch(buffer[0]) { + case 254: { + if(buffer[1] == 255) { + var i = 0; + while((i + 1) < buffer.length) { + var temp = buffer[i]; + buffer[i] = buffer[i + 1]; + buffer[i + 1] = temp; + i += 2; + } + return buffer.toString("ucs2", 2); + } + break; + + } + case 255: { + if(buffer[1] == 254) { + return buffer.toString("ucs2", 2); + } + break; + + } + case 239: { + if(buffer[1] == 187) { + return buffer.toString("utf8", 3); + } + + } + } + return buffer.toString(); + } catch (e) { + IOUtils.throwIOError("Error reading file \"" + file + "\".", e); + } + }, + writeFile: _fs.writeFileSync, + deleteFile: function (path) { + try { + _fs.unlinkSync(path); + } catch (e) { + IOUtils.throwIOError("Couldn't delete file '" + path + "'.", e); + } + }, + fileExists: function (path) { + return _fs.existsSync(path); + }, + createFile: function (path, useUTF8) { + function mkdirRecursiveSync(path) { + var stats = _fs.statSync(path); + if(stats.isFile()) { + IOUtils.throwIOError("\"" + path + "\" exists but isn't a directory.", null); + } else { + if(stats.isDirectory()) { + return; + } else { + mkdirRecursiveSync(_path.dirname(path)); + _fs.mkdirSync(path, 509); + } + } + } + mkdirRecursiveSync(_path.dirname(path)); + try { + var fd = _fs.openSync(path, 'w'); + } catch (e) { + IOUtils.throwIOError("Couldn't write to file '" + path + "'.", e); + } + return { + Write: function (str) { + _fs.writeSync(fd, str); + }, + WriteLine: function (str) { + _fs.writeSync(fd, str + '\r\n'); + }, + Close: function () { + _fs.closeSync(fd); + fd = null; + } + }; + }, + dir: function dir(path, spec, options) { + options = options || { + }; + function filesInFolder(folder) { + var paths = []; + var files = _fs.readdirSync(folder); + for(var i = 0; i < files.length; i++) { + var stat = _fs.statSync(folder + "/" + files[i]); + if(options.recursive && stat.isDirectory()) { + paths = paths.concat(filesInFolder(folder + "/" + files[i])); + } else { + if(stat.isFile() && (!spec || files[i].match(spec))) { + paths.push(folder + "/" + files[i]); + } + } + } + return paths; + } + return filesInFolder(path); + }, + createDirectory: function (path) { + try { + if(!this.directoryExists(path)) { + _fs.mkdirSync(path); + } + } catch (e) { + IOUtils.throwIOError("Couldn't create directory '" + path + "'.", e); + } + }, + directoryExists: function (path) { + return _fs.existsSync(path) && _fs.lstatSync(path).isDirectory(); + }, + resolvePath: function (path) { + return _path.resolve(path); + }, + dirName: function (path) { + return _path.dirname(path); + }, + findFile: function (rootPath, partialFilePath) { + var path = rootPath + "/" + partialFilePath; + while(true) { + if(_fs.existsSync(path)) { + try { + var content = this.readFile(path); + return { + content: content, + path: path + }; + } catch (err) { + } + } else { + var parentPath = _path.resolve(rootPath, ".."); + if(rootPath === parentPath) { + return null; + } else { + rootPath = parentPath; + path = _path.resolve(rootPath, partialFilePath); + } + } + } + }, + print: function (str) { + process.stdout.write(str); + }, + printLine: function (str) { + process.stdout.write(str + '\n'); + }, + arguments: process.argv.slice(2), + stderr: { + Write: function (str) { + process.stderr.write(str); + }, + WriteLine: function (str) { + process.stderr.write(str + '\n'); + }, + Close: function () { + } + }, + stdout: { + Write: function (str) { + process.stdout.write(str); + }, + WriteLine: function (str) { + process.stdout.write(str + '\n'); + }, + Close: function () { + } + }, + watchFile: function (filename, callback) { + var firstRun = true; + var processingChange = false; + var fileChanged = function (curr, prev) { + if(!firstRun) { + if(curr.mtime < prev.mtime) { + return; + } + _fs.unwatchFile(filename, fileChanged); + if(!processingChange) { + processingChange = true; + callback(filename); + setTimeout(function () { + processingChange = false; + }, 100); + } + } + firstRun = false; + _fs.watchFile(filename, { + persistent: true, + interval: 500 + }, fileChanged); + }; + fileChanged(); + return { + filename: filename, + close: function () { + _fs.unwatchFile(filename, fileChanged); + } + }; + }, + run: function (source, filename) { + require.main.filename = filename; + require.main.paths = _module._nodeModulePaths(_path.dirname(_fs.realpathSync(filename))); + require.main._compile(source, filename); + }, + getExecutingFilePath: function () { + return process.mainModule.filename; + }, + quit: process.exit + }; + } + ; ; + if(typeof ActiveXObject === "function") { + return getWindowsScriptHostIO(); + } else { + if(typeof require === "function") { + return getNodeIO(); + } else { + return null; + } + } +})(); +var OptionsParser = (function () { + function OptionsParser(host) { + this.host = host; + this.DEFAULT_SHORT_FLAG = "-"; + this.DEFAULT_LONG_FLAG = "--"; + this.unnamed = []; + this.options = []; + } + OptionsParser.prototype.findOption = function (arg) { + for(var i = 0; i < this.options.length; i++) { + if(arg === this.options[i].short || arg === this.options[i].name) { + return this.options[i]; + } + } + return null; + }; + OptionsParser.prototype.printUsage = function () { + this.host.printLine("Syntax: tsc [options] [file ..]"); + this.host.printLine(""); + this.host.printLine("Examples: tsc hello.ts"); + this.host.printLine(" tsc --out foo.js foo.ts"); + this.host.printLine(" tsc @args.txt"); + this.host.printLine(""); + this.host.printLine("Options:"); + var output = []; + var maxLength = 0; + this.options = this.options.sort(function (a, b) { + var aName = a.name.toLowerCase(); + var bName = b.name.toLowerCase(); + if(aName > bName) { + return 1; + } else { + if(aName < bName) { + return -1; + } else { + return 0; + } + } + }); + for(var i = 0; i < this.options.length; i++) { + var option = this.options[i]; + if(option.experimental) { + continue; + } + if(!option.usage) { + break; + } + var usageString = " "; + var type = option.type ? " " + option.type.toUpperCase() : ""; + if(option.short) { + usageString += this.DEFAULT_SHORT_FLAG + option.short + type + ", "; + } + usageString += this.DEFAULT_LONG_FLAG + option.name + type; + output.push([ + usageString, + option.usage + ]); + if(usageString.length > maxLength) { + maxLength = usageString.length; + } + } + output.push([ + " @", + "Insert command line options and files from a file." + ]); + for(var i = 0; i < output.length; i++) { + this.host.printLine(output[i][0] + (new Array(maxLength - output[i][0].length + 3)).join(" ") + output[i][1]); + } + }; + OptionsParser.prototype.option = function (name, config, short) { + if(!config) { + config = short; + short = null; + } + config.name = name; + config.short = short; + config.flag = false; + this.options.push(config); + }; + OptionsParser.prototype.flag = function (name, config, short) { + if(!config) { + config = short; + short = null; + } + config.name = name; + config.short = short; + config.flag = true; + this.options.push(config); + }; + OptionsParser.prototype.parseString = function (argString) { + var position = 0; + var tokens = argString.match(/\s+|"|[^\s"]+/g); + function peek() { + return tokens[position]; + } + function consume() { + return tokens[position++]; + } + function consumeQuotedString() { + var value = ''; + consume(); + var token = peek(); + while(token && token !== '"') { + consume(); + value += token; + token = peek(); + } + consume(); + return value; + } + var args = []; + var currentArg = ''; + while(position < tokens.length) { + var token = peek(); + if(token === '"') { + currentArg += consumeQuotedString(); + } else { + if(token.match(/\s/)) { + if(currentArg.length > 0) { + args.push(currentArg); + currentArg = ''; + } + consume(); + } else { + consume(); + currentArg += token; + } + } + } + if(currentArg.length > 0) { + args.push(currentArg); + } + this.parse(args); + }; + OptionsParser.prototype.parse = function (args) { + var position = 0; + function consume() { + return args[position++]; + } + while(position < args.length) { + var current = consume(); + var match = current.match(/^(--?|@)(.*)/); + var value = null; + if(match) { + if(match[1] === '@') { + this.parseString(this.host.readFile(match[2])); + } else { + var arg = match[2]; + var option = this.findOption(arg); + if(option === null) { + this.host.printLine("Unknown option '" + arg + "'"); + this.host.printLine("Use the '--help' flag to see options"); + } else { + if(!option.flag) { + value = consume(); + } + option.set(value); + } + } + } else { + this.unnamed.push(current); + } + } + }; + return OptionsParser; +})(); +var CommandLineHost = (function () { + function CommandLineHost(compilationSettings) { + this.compilationSettings = compilationSettings; + this.pathMap = { + }; + this.resolvedPaths = { + }; + } + CommandLineHost.prototype.getPathIdentifier = function (path) { + return this.compilationSettings.useCaseSensitiveFileResolution ? path : path.toLocaleUpperCase(); + }; + CommandLineHost.prototype.isResolved = function (path) { + return this.resolvedPaths[this.getPathIdentifier(this.pathMap[path])] != undefined; + }; + CommandLineHost.prototype.resolveCompilationEnvironment = function (preEnv, resolver, traceDependencies) { + var _this = this; + var resolvedEnv = new TypeScript.CompilationEnvironment(preEnv.compilationSettings, preEnv.ioHost); + var nCode = preEnv.code.length; + var path = ""; + var postResolutionError = function (errorFile, errorMessage) { + TypeScript.CompilerDiagnostics.debugPrint("Could not resolve file '" + errorFile + "'" + (errorMessage == "" ? "" : ": " + errorMessage)); + }; + var resolutionDispatcher = { + postResolutionError: postResolutionError, + postResolution: function (path, code) { + var pathId = _this.getPathIdentifier(path); + if(!_this.resolvedPaths[pathId]) { + resolvedEnv.code.push(code); + _this.resolvedPaths[pathId] = true; + } + } + }; + for(var i = 0; i < nCode; i++) { + path = TypeScript.switchToForwardSlashes(preEnv.ioHost.resolvePath(preEnv.code[i].path)); + this.pathMap[preEnv.code[i].path] = path; + resolver.resolveCode(path, "", false, resolutionDispatcher); + } + return resolvedEnv; + }; + return CommandLineHost; +})(); +var BatchCompiler = (function () { + function BatchCompiler(ioHost) { + this.ioHost = ioHost; + this.resolvedEnvironment = null; + this.hasResolveErrors = false; + this.compilerVersion = "0.8.2.0"; + this.printedVersion = false; + this.compilationSettings = new TypeScript.CompilationSettings(); + this.compilationEnvironment = new TypeScript.CompilationEnvironment(this.compilationSettings, this.ioHost); + } + BatchCompiler.prototype.resolve = function () { + var resolver = new TypeScript.CodeResolver(this.compilationEnvironment); + var commandLineHost = new CommandLineHost(this.compilationSettings); + var ret = commandLineHost.resolveCompilationEnvironment(this.compilationEnvironment, resolver, true); + this.hasResolveErrors = false; + for(var i = 0; i < this.compilationEnvironment.code.length; i++) { + if(!commandLineHost.isResolved(this.compilationEnvironment.code[i].path)) { + this.hasResolveErrors = true; + var path = this.compilationEnvironment.code[i].path; + if(!TypeScript.isSTRFile(path) && !TypeScript.isDSTRFile(path) && !TypeScript.isTSFile(path) && !TypeScript.isDTSFile(path)) { + this.ioHost.stderr.WriteLine("Unknown extension for file: \"" + path + "\". Only .ts and .d.ts extensions are allowed."); + } else { + this.ioHost.stderr.WriteLine("Error reading file \"" + path + "\": File not found"); + } + } + } + return ret; + }; + BatchCompiler.prototype.compile = function () { + var _this = this; + var compiler; + compiler = new TypeScript.TypeScriptCompiler(this.ioHost.stderr, new TypeScript.NullLogger(), this.compilationSettings); + compiler.setErrorOutput(this.ioHost.stderr); + compiler.setErrorCallback(function (minChar, charLen, message, unitIndex) { + compiler.errorReporter.hasErrors = true; + var fname = _this.resolvedEnvironment.code[unitIndex].path; + var lineCol = { + line: -1, + col: -1 + }; + compiler.parser.getSourceLineCol(lineCol, minChar); + var msg = fname + " (" + lineCol.line + "," + (lineCol.col + 1) + "): " + message; + if(_this.compilationSettings.errorRecovery) { + _this.ioHost.stderr.WriteLine(msg); + } else { + throw new SyntaxError(msg); + } + }); + if(this.compilationSettings.emitComments) { + compiler.emitCommentsToOutput(); + } + var consumeUnit = function (code, addAsResident) { + try { + if(!_this.compilationSettings.resolve) { + code.content = _this.ioHost.readFile(code.path); + if(_this.compilationSettings.generateDeclarationFiles) { + TypeScript.CompilerDiagnostics.assert(code.referencedFiles == null, "With no resolve option, referenced files need to null"); + code.referencedFiles = TypeScript.getReferencedFiles(code); + } + } + if(code.content) { + if(_this.compilationSettings.parseOnly) { + compiler.parseUnit(code.content, code.path); + } else { + if(_this.compilationSettings.errorRecovery) { + compiler.parser.setErrorRecovery(_this.ioHost.stderr); + } + compiler.addUnit(code.content, code.path, addAsResident, code.referencedFiles); + } + } + } catch (err) { + compiler.errorReporter.hasErrors = true; + _this.ioHost.stderr.WriteLine(err.message); + } + }; + for(var iCode = 0; iCode < this.resolvedEnvironment.code.length; iCode++) { + if(!this.compilationSettings.parseOnly || (iCode > 0)) { + consumeUnit(this.resolvedEnvironment.code[iCode], false); + } + } + var emitterIOHost = { + createFile: function (fileName, useUTF8) { + return IOUtils.createFileAndFolderStructure(_this.ioHost, fileName, useUTF8); + }, + directoryExists: this.ioHost.directoryExists, + fileExists: this.ioHost.fileExists, + resolvePath: this.ioHost.resolvePath + }; + try { + if(!this.compilationSettings.parseOnly) { + compiler.typeCheck(); + compiler.emit(emitterIOHost); + compiler.emitDeclarations(); + } else { + compiler.emitAST(emitterIOHost); + } + } catch (err) { + compiler.errorReporter.hasErrors = true; + if(err.message != "EmitError") { + throw err; + } + } + return compiler.errorReporter.hasErrors; + }; + BatchCompiler.prototype.run = function () { + for(var i = 0; i < this.compilationEnvironment.code.length; i++) { + var unit = this.compilationEnvironment.code[i]; + var outputFileName = unit.path; + if(TypeScript.isTSFile(outputFileName)) { + outputFileName = outputFileName.replace(/\.ts$/, ".js"); + } else { + if(TypeScript.isSTRFile(outputFileName)) { + outputFileName = outputFileName.replace(/\.str$/, ".js"); + } + } + if(this.ioHost.fileExists(outputFileName)) { + var unitRes = this.ioHost.readFile(outputFileName); + this.ioHost.run(unitRes, outputFileName); + } + } + }; + BatchCompiler.prototype.batchCompile = function () { + var _this = this; + TypeScript.CompilerDiagnostics.diagnosticWriter = { + Alert: function (s) { + _this.ioHost.printLine(s); + } + }; + var code; + var opts = new OptionsParser(this.ioHost); + opts.option('out', { + usage: 'Concatenate and emit output to single file | Redirect output structure to the directory', + type: 'file|directory', + set: function (str) { + _this.compilationSettings.outputOption = str; + } + }); + opts.option('style', { + usage: 'Select style checking options (examples --style requireSemi:off or --style "eqeqeq;bitwise:off")', + experimental: true, + set: function (str) { + _this.compilationSettings.setStyleOptions(str); + } + }); + opts.flag('sourcemap', { + usage: 'Generates corresponding .map file', + set: function () { + _this.compilationSettings.mapSourceFiles = true; + } + }); + opts.flag('declaration', { + usage: 'Generates corresponding .d.ts file', + set: function () { + _this.compilationSettings.generateDeclarationFiles = true; + } + }); + if(this.ioHost.watchFile) { + opts.flag('watch', { + usage: 'Watch output files', + set: function () { + _this.compilationSettings.watch = true; + } + }, 'w'); + } + opts.flag('exec', { + usage: 'Execute the script after compilation', + set: function () { + _this.compilationSettings.exec = true; + } + }, 'e'); + opts.flag('parse', { + usage: 'Parse only', + experimental: true, + set: function () { + _this.compilationSettings.parseOnly = true; + } + }); + opts.flag('minw', { + usage: 'Minimize whitespace', + experimental: true, + set: function () { + _this.compilationSettings.minWhitespace = true; + } + }, 'mw'); + opts.flag('const', { + usage: 'Propagate constants to emitted code', + experimental: true, + set: function () { + _this.compilationSettings.propagateConstants = true; + } + }); + opts.flag('errorrecovery', { + usage: 'Enable error recovery', + experimental: true, + set: function () { + _this.compilationSettings.errorRecovery = true; + } + }, 'er'); + opts.flag('comments', { + usage: 'Emit comments to output', + set: function () { + _this.compilationSettings.emitComments = true; + } + }, 'c'); + opts.flag('cflow', { + usage: 'Control flow', + experimental: true, + set: function () { + _this.compilationSettings.controlFlow = true; + } + }); + opts.flag('cflowp', { + usage: 'Print control flow', + experimental: true, + set: function () { + _this.compilationSettings.controlFlow = true; + _this.compilationSettings.printControlFlow = true; + } + }); + opts.flag('cflowu', { + usage: 'Print Use Def control flow', + experimental: true, + set: function () { + _this.compilationSettings.controlFlow = true; + _this.compilationSettings.controlFlowUseDef = true; + } + }); + opts.flag('noerroronwith', { + usage: 'Allow with statements', + experimental: true, + set: function () { + _this.compilationSettings.errorOnWith = false; + } + }); + opts.flag('noresolve', { + usage: 'Skip resolution and preprocessing', + experimental: true, + set: function () { + _this.compilationSettings.resolve = false; + _this.compilationSettings.preprocess = false; + } + }); + opts.flag('debug', { + usage: 'Print debug output', + experimental: true, + set: function () { + TypeScript.CompilerDiagnostics.debug = true; + } + }); + opts.flag('canCallDefinitionSignature', { + usage: 'Allows you to call the definition signature of an overload group', + experimental: true, + set: function () { + _this.compilationSettings.canCallDefinitionSignature = true; + } + }); + opts.flag('nooptimizemodules', { + usage: 'Do not optimize module codegen', + experimental: true, + set: function () { + TypeScript.optimizeModuleCodeGen = false; + } + }); + opts.flag('nolib', { + usage: 'Do not include a default lib.d.ts with global declarations', + set: function () { + _this.compilationSettings.useDefaultLib = false; + } + }); + opts.flag('inferProperties', { + usage: 'Infer class properties from top-level assignments to \'this\'', + experimental: true, + set: function () { + _this.compilationSettings.inferPropertiesFromThisAssignment = true; + } + }); + opts.option('target', { + usage: 'Specify ECMAScript target version: "ES3" (default), or "ES5"', + type: 'VER', + set: function (type) { + type = type.toLowerCase(); + if(type === 'es3') { + _this.compilationSettings.codeGenTarget = TypeScript.CodeGenTarget.ES3; + } else { + if(type === 'es5') { + _this.compilationSettings.codeGenTarget = TypeScript.CodeGenTarget.ES5; + } else { + _this.ioHost.printLine("ECMAScript target version '" + type + "' not supported. Using default 'ES3' code generation"); + } + } + } + }); + opts.option('module', { + usage: 'Specify module code generation: "commonjs" (default) or "amd"', + type: 'kind', + set: function (type) { + type = type.toLowerCase(); + if(type === 'commonjs' || type === 'node') { + TypeScript.moduleGenTarget = TypeScript.ModuleGenTarget.Synchronous; + } else { + if(type === 'amd') { + TypeScript.moduleGenTarget = TypeScript.ModuleGenTarget.Asynchronous; + } else { + _this.ioHost.printLine("Module code generation '" + type + "' not supported. Using default 'commonjs' code generation"); + } + } + } + }); + var printedUsage = false; + opts.flag('help', { + usage: 'Print this message', + set: function () { + _this.printVersion(); + opts.printUsage(); + printedUsage = true; + } + }, 'h'); + opts.flag('useCaseSensitiveFileResolution', { + usage: 'Force file resolution to be case sensitive', + experimental: true, + set: function () { + _this.compilationSettings.useCaseSensitiveFileResolution = true; + } + }); + opts.flag('version', { + usage: 'Print the compiler\'s version: ' + this.compilerVersion, + set: function () { + _this.printVersion(); + } + }, 'v'); + opts.parse(this.ioHost.arguments); + if(this.compilationSettings.useDefaultLib) { + var compilerFilePath = this.ioHost.getExecutingFilePath(); + var binDirPath = this.ioHost.dirName(compilerFilePath); + var libStrPath = this.ioHost.resolvePath(binDirPath + "/lib.d.ts"); + code = new TypeScript.SourceUnit(libStrPath, null); + this.compilationEnvironment.code.push(code); + } + for(var i = 0; i < opts.unnamed.length; i++) { + code = new TypeScript.SourceUnit(opts.unnamed[i], null); + this.compilationEnvironment.code.push(code); + } + if(this.compilationEnvironment.code.length == (this.compilationSettings.useDefaultLib ? 1 : 0)) { + if(!printedUsage && !this.printedVersion) { + this.printVersion(); + opts.printUsage(); + this.ioHost.quit(1); + } + return; + } + var sourceFiles = []; + if(this.compilationSettings.watch) { + sourceFiles = this.compilationEnvironment.code.slice(0); + } + this.resolvedEnvironment = this.compilationSettings.resolve ? this.resolve() : this.compilationEnvironment; + var hasCompileErrors = this.compile(); + var hasErrors = hasCompileErrors || this.hasResolveErrors; + if(!hasErrors) { + if(this.compilationSettings.exec) { + this.run(); + } + } + if(this.compilationSettings.watch) { + this.watchFiles(sourceFiles); + } else { + this.ioHost.quit(hasErrors ? 1 : 0); + } + }; + BatchCompiler.prototype.printVersion = function () { + if(!this.printedVersion) { + this.ioHost.printLine("Version " + this.compilerVersion); + this.printedVersion = true; + } + }; + BatchCompiler.prototype.watchFiles = function (soruceFiles) { + var _this = this; + if(!this.ioHost.watchFile) { + this.ioHost.printLine("Error: Current host does not support -w[atch] option"); + return; + } + var resolvedFiles = []; + var watchers = { + }; + var addWatcher = function (filename) { + if(!watchers[filename]) { + var watcher = _this.ioHost.watchFile(filename, onWatchedFileChange); + watchers[filename] = watcher; + } else { + throw new Error("Cannot watch file, it is already watched."); + } + }; + var removeWatcher = function (filename) { + if(watchers[filename]) { + watchers[filename].close(); + delete watchers[filename]; + } else { + throw new Error("Cannot stop watching file, it is not being watched."); + } + }; + var onWatchedFileChange = function () { + _this.compilationEnvironment.code = soruceFiles; + _this.resolvedEnvironment = _this.compilationSettings.resolve ? _this.resolve() : _this.compilationEnvironment; + var oldFiles = resolvedFiles; + var newFiles = []; + _this.resolvedEnvironment.code.forEach(function (sf) { + return newFiles.push(sf.path); + }); + newFiles = newFiles.sort(); + var i = 0, j = 0; + while(i < oldFiles.length && j < newFiles.length) { + var compareResult = oldFiles[i].localeCompare(newFiles[j]); + if(compareResult == 0) { + i++; + j++; + } else { + if(compareResult < 0) { + removeWatcher(oldFiles[i]); + i++; + } else { + addWatcher(newFiles[j]); + j++; + } + } + } + for(var k = i; k < oldFiles.length; k++) { + removeWatcher(oldFiles[k]); + } + for(var k = j; k < newFiles.length; k++) { + addWatcher(newFiles[k]); + } + resolvedFiles = newFiles; + ; ; + _this.ioHost.printLine(""); + _this.ioHost.printLine("Recompiling (" + new Date() + "): "); + resolvedFiles.forEach(function (f) { + return _this.ioHost.printLine(" " + f); + }); + var hasCompileErrors = _this.compile(); + var hasErrors = hasCompileErrors || _this.hasResolveErrors; + if(!hasErrors) { + if(_this.compilationSettings.exec) { + _this.run(); + } + } + }; + this.ioHost.stderr = this.ioHost.stdout; + this.resolvedEnvironment.code.forEach(function (sf) { + resolvedFiles.push(sf.path); + addWatcher(sf.path); + }); + resolvedFiles.sort(); + }; + return BatchCompiler; +})(); + diff --git a/js/src/octane/typescript.js b/js/src/octane/typescript.js new file mode 100644 index 0000000000..2dba23d3de --- /dev/null +++ b/js/src/octane/typescript.js @@ -0,0 +1,172 @@ +// Copyright 2013 the Octane Benchmark project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +var typescript = new BenchmarkSuite('Typescript', [255011322], [ + new Benchmark("Typescript", + false, + true, + 5, + runTypescript, + setupTypescript, + tearDownTypescript, + null, + 1) +]); + + +function setupTypescript() { +} + + +function tearDownTypescript() { + compiler_input = null; +} + + +var parseErrors = []; + + +function runTypescript() { + var compiler = createCompiler(); + compiler.addUnit(compiler_input, "compiler_input.ts"); + parseErrors = []; + compiler.reTypeCheck(); + compiler.emit({ + createFile: function (fileName) { return outfile; }, + fileExists: function (path) { return false; }, + directoryExists: function (path) { return false; }, + resolvePath: function (path) { return path; } + }); + + if (parseErrors.length != 192 && parseErrors.length != 193) { + throw new Error("Parse errors."); + } + compiler = null; +} + +var outfile = { + checksum: -412589664, + cumulative_checksum: 0, + Write: function (s) { this.Verify(s); }, + WriteLine: function (s) { this.Verify(s + "\n"); }, + Close: function () { + if (this.checksum != this.cumulative_checksum) { + throw new Error("Wrong checksum."); + } + this.cumulative_checksum = 0; + }, + Verify: function (s) { + for(var i = 0; i < s.length; i++) { + var c = s.charCodeAt(i); + this.cumulative_checksum = (this.cumulative_checksum << 1) ^ c; + } + } +}; + + +var outerr = { + checksum: 0, + cumulative_checksum: 0, + Write: function (s) { this.Verify(s); }, + WriteLine: function (s) { this.Verify(s + "\n"); }, + Close: function () { + if (this.checksum != this.cumulative_checksum) { + throw new Error("Wrong checksum."); + } + this.cumulative_checksum = 0; + }, + Verify: function (s) { + for(var i = 0; i < s.length; i++) { + var c = s.charCodeAt(i); + this.cumulative_checksum = (this.cumulative_checksum << 1) ^ c; + } + } +}; + + +function createCompiler() { + var settings = new TypeScript.CompilationSettings(); + settings.codeGenTarget = TypeScript.CodeGenTarget.ES5; + var compiler = new TypeScript.TypeScriptCompiler( + outerr, new TypeScript.NullLogger, settings); + compiler.setErrorCallback(function (start, len, message) { + parseErrors.push({ start: start, len: len, message: message }); + }); + compiler.parser.errorRecovery = true; + compiler.typeCheck(); + return compiler +} + + +// The two files accompanying this benchmark contain a modified version of the +// Typescript compiler. They can be generated using the following instructions +// with the code available at: +// http://typescript.codeplex.com/SourceControl/changeset/view/258e00903a9e +// +// 1) Copy the compiler from $TYPESCRIPT/bin/tsc.js to typescript-compiler.js +// 2) Remove the call to the batch compiler from the last line of tsc.js +// 3) Add this code after line 7963 (fix for Mozilla Firefox): +// if (this.currentToken === undefined) +// this.currentToken = this.scanner.scan(); +// 4) Add this code after line 9142 (fix for Mozilla Firefox): +// if (this.currentToken === undefined) { +// this.currentToken = this.scanner.scan(); +// continue; +// } +// 5) Generate the Typescript compiler input using the following command: +// $ cat $TYPESCRIPT/src/compiler/*.ts | iconv -c -f utf8 -t ascii \ +// | dos2unix > /tmp/compiler_input +// 6) Run the following Python script to generate the reformatted input: +// $ python script.py > typescript-input.js +// +// #!/usr/bin/env python +// import re; +// def escape_and_format(data, varname): +// data = data.replace("\\", "\\\\").replace("\"", "\\\"") +// .replace("\n", "\\n"); +// data = "var " + varname + " = \"" + data + "\"" +// print data; +// result = open("/tmp/compiler_input", 'r'); +// escape_and_format(result.read(), "compiler_input") +// +// The following is the original copyright notice present in the Typescript +// compiler source at the time this benchmark was generated: +// +/* ***************************************************************************** +Copyright (c) Microsoft Corporation. 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 + +THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ diff --git a/js/src/octane/zlib-data.js b/js/src/octane/zlib-data.js new file mode 100644 index 0000000000..a8d28050d1 --- /dev/null +++ b/js/src/octane/zlib-data.js @@ -0,0 +1,2409 @@ +// This file is generated by the Python script below. It contains code from +// https://github.com/dvander/arewefastyet/blob/master/benchmarks/asmjs-apps/zlib.js +// which is basically a trivial driver in C from +// https://github.com/kripken/emscripten/blob/master/tests/zlib/benchmark.c +// plus the zlib library from +// http://www.zlib.net/ +// (which is Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler) compiled +// via Emscripten. +// The script applies a few changes to avoid any output and to not start +// the benchmark directly. + +/* +# ---------------------- BEGIN GENERATOR SCRIPT -------------------- +#!/usr/bin/env python + +import urllib2 + +url = "https://github.com/dvander/arewefastyet/raw/master/benchmarks/asmjs-apps/zlib.js" + +def do_replacements(data): + # Update the *_original patterns if generated identifier names change: + printf_original = "_printf:function(a,b){return Cb(L[W>> 2],a,b)}" + printf_neutered = "_printf:function(a,b){}" + puts_original = ("_puts:function(a){var b=L[W>>2],a=Gb(a,b);" + + "return 0>a?a:0>Hb(10,b)?-1:a+1}") + puts_neutered = "_puts:function(a){}" + runner_original = "Ya([].concat(Module.arguments));" + runner_neutered = "" + assert printf_original in data + assert puts_original in data + assert runner_original in data + + data = data.replace("\\", "\\\\").replace("\'", "\\\'") + data = data.replace(printf_original, printf_neutered) + data = data.replace(puts_original, puts_neutered) + data = data.replace(runner_original, runner_neutered) + +def format_80col(data): + while len(data) > 0: + cutoff = min(79, len(data)) + while data[cutoff-1] == '\\': + cutoff -= 1 + line = data[0:cutoff] + data = data[cutoff:] + if len(data) > 0: + line += '\\' + print line + +download = urllib2.urlopen(url) +data = "" +for line in download: + line = line.strip() + if line.startswith("//"): continue + data += line + " " + +data = do_replacements(data) +format_80col("function InitializeZlibBenchmark() {" + + "zlibEval('" + + data + + "');" + + "}") +# ----------------------- END GENERATOR SCRIPT --------------------- +*/ + +function InitializeZlibBenchmark() {zlibEval('function j(a){throw a;}var k=\ +void 0,n=!0,r=null,t=!1;function u(){return function(){}}try{this.Module=Module\ +,Module.test}catch(aa){this.Module=Module={}}var ba="object"===typeof process&&\ +"function"===typeof require,ca="object"===typeof window,v="function"===typeof i\ +mportScripts,da=!ca&&!ba&&!v;"object"===typeof module&&(module.T=Module); if(ba\ +){Module.print=function(a){process.stdout.write(a+"\\n")};Module.printErr=funct\ +ion(a){process.stderr.write(a+"\\n")};var ea=require("fs"),fa=require("path");M\ +odule.read=function(a,b){var a=fa.normalize(a),c=ea.readFileSync(a);!c&&a!=fa.r\ +esolve(a)&&(a=path.join(__dirname,"..","src",a),c=ea.readFileSync(a));c&&!b&&(c\ +=c.toString());return c};Module.readBinary=function(a){return Module.read(a,n)}\ +;Module.load=function(a){ga(read(a))};Module.arguments||(Module.arguments=proce\ +ss.argv.slice(2))} da&&(Module.print=print,"undefined"!=typeof printErr&&(Modul\ +e.printErr=printErr),Module.read=read,Module.readBinary=function(a){return read\ +(a,"binary")},Module.arguments||("undefined"!=typeof scriptArgs?Module.argument\ +s=scriptArgs:"undefined"!=typeof arguments&&(Module.arguments=arguments)));ca&&\ +!v&&(Module.print||(Module.print=function(a){console.log(a)}),Module.printErr||\ +(Module.printErr=function(a){console.log(a)})); if(ca||v)Module.read=function(a\ +){var b=new XMLHttpRequest;b.open("GET",a,t);b.send(r);return b.responseText},M\ +odule.arguments||"undefined"!=typeof arguments&&(Module.arguments=arguments);v&\ +&(Module.print||(Module.print=u()),Module.load=importScripts);!v&&(!ca&&!ba&&!d\ +a)&&j("Unknown runtime environment. Where are we?");function ga(a){eval.call(r,\ +a)}"undefined"==!Module.load&&Module.read&&(Module.load=function(a){ga(Module.r\ +ead(a))});Module.print||(Module.print=u()); Module.printErr||(Module.printErr=M\ +odule.print);Module.arguments||(Module.arguments=[]);Module.print=Module.print;\ +Module.g=Module.printErr;Module.preRun||(Module.preRun=[]);Module.postRun||(Mod\ +ule.postRun=[]);function ha(){return w}function ia(a){w=a}function ja(a){if(1==\ +x)return 1;var b={"%i1":1,"%i8":1,"%i16":2,"%i32":4,"%i64":8,"%float":4,"%doubl\ +e":8}["%"+a];b||("*"==a.charAt(a.length-1)?b=x:"i"==a[0]&&(a=parseInt(a.substr(\ +1)),z(0==a%8),b=a/8));return b} function ka(a,b,c){c&&c.length?(c.splice||(c=Ar\ +ray.prototype.slice.call(c)),c.splice(0,0,b),Module["dynCall_"+a].apply(r,c)):M\ +odule["dynCall_"+a].call(r,b)}var la; function ma(){var a=[],b=0;this.B=functio\ +n(c){c&=255;b&&(a.push(c),b--);if(0==a.length){if(128>c)return String.fromCharC\ +ode(c);a.push(c);b=191c?1:2;return""}if(0c?String.fromCharCode((c&31)<<6|d&63):String.fromCharCode((\ +c&15)<<12|(d&63)<<6|e&63);a.length=0;return c};this.O=function(a){for(var a=une\ +scape(encodeURIComponent(a)),b=[],e=0;e>3<<3;return b} function oa(a){var\ + b=C;C=C+a|0;C=C+7>>3<<3;return b}function pa(a){var b=D;D=D+a|0;D=D+7>>3<<3;D>\ +=qa&&F("Cannot enlarge memory arrays in asm.js. Either (1) compile with -s TOTA\ +L_MEMORY=X with X higher than the current value, or (2) set Module.TOTAL_MEMORY\ + before the program runs.");return b}function ra(a,b){return Math.ceil(a/(b?b:8\ +))*(b?b:8)}var x=4,sa={},G=t,ta;function F(a){Module.print(a+":\\n"+Error().sta\ +ck);G=n;j("Assertion: "+a)}function z(a,b){a||F("Assertion failed: "+b)}var ua=\ +this; Module.ccall=function(a,b,c,d){return va(wa(a),b,c,d)};function wa(a){try\ +{var b=ua.Module["_"+a];b||(b=eval("_"+a))}catch(c){}z(b,"Cannot call unknown f\ +unction "+a+" (perhaps LLVM optimizations or closure removed it?)");return b} f\ +unction va(a,b,c,d){function e(a,b){if("string"==b){if(a===r||a===k||0===a)retu\ +rn 0;f||(f=ha());var c=na(a.length+1);xa(a,c);return c}return"array"==b?(f||(f=\ +ha()),c=na(a.length),ya(a,c),c):a}var f=0,g=0,d=d?d.map(function(a){return e(a,\ +c[g++])}):[];a=a.apply(r,d);"string"==b?b=I(a):(z("array"!=b),b=a);f&&ia(f);ret\ +urn b}Module.cwrap=function(a,b,c){var d=wa(a);return function(){return va(d,b,\ +c,Array.prototype.slice.call(arguments))}}; function za(a,b,c){c=c||"i8";"*"===\ +c.charAt(c.length-1)&&(c="i32");switch(c){case "i1":J[a]=b;break;case "i8":J[a]\ +=b;break;case "i16":Aa[a>>1]=b;break;case "i32":L[a>>2]=b;break;case "i64":ta=[\ +b>>>0,(Math.min(+Math.floor(b/4294967296),4294967295)|0)>>>0];L[a>>2]=ta[0];L[a\ ++4>>2]=ta[1];break;case "float":Ba[a>>2]=b;break;case "double":N[a>>3]=b;break;\ +default:F("invalid type for setValue: "+c)}}Module.setValue=za; Module.getValue\ +=function(a,b){b=b||"i8";"*"===b.charAt(b.length-1)&&(b="i32");switch(b){case "\ +i1":return J[a];case "i8":return J[a];case "i16":return Aa[a>>1];case "i32":ret\ +urn L[a>>2];case "i64":return L[a>>2];case "float":return Ba[a>>2];case "double\ +":return N[a>>3];default:F("invalid type for setValue: "+b)}return r};var Ca=1,\ +O=2,Da=4;Module.ALLOC_NORMAL=0;Module.ALLOC_STACK=Ca;Module.ALLOC_STATIC=O;Modu\ +le.ALLOC_DYNAMIC=3;Module.ALLOC_NONE=Da; function P(a,b,c,d){var e,f;"number"==\ +=typeof a?(e=n,f=a):(e=t,f=a.length);var g="string"===typeof b?b:r,c=c==Da?d:[E\ +a,na,oa,pa][c===k?O:c](Math.max(f,g?1:b.length));if(e){d=c;z(0==(c&3));for(a=c+\ +(f&-4);d>2]=0;for(a=c+f;d=b?2*Math.abs(1<=a)return\ + a;var c=32>=b?Math.abs(1<=c&&(32>=b||a>c))a=-2*c+a;\ +return a}Math.imul||(Math.imul=function(a,b){var c=a&65535,d=b&65535;return c*d\ ++((a>>>16)*d+c*(b>>>16)<<16)|0}); var T=0,Sa={},Ta=t,Ua=r;function Va(a){T++;Mo\ +dule.monitorRunDependencies&&Module.monitorRunDependencies(T);a?(z(!Sa[a]),Sa[a\ +]=1):Module.g("warning: run dependency added without ID")}Module.addRunDependen\ +cy=Va;function Wa(a){T--;Module.monitorRunDependencies&&Module.monitorRunDepend\ +encies(T);a?(z(Sa[a]),delete Sa[a]):Module.g("warning: run dependency removed w\ +ithout ID");0==T&&(Ua!==r&&(clearInterval(Ua),Ua=r),!Ta&&Xa&&Ya([].concat(Modul\ +e.arguments)))}Module.removeRunDependency=Wa; Module.preloadedImages={};Module.\ +preloadedAudios={};Ha=8;C=Ha+14192; P([111,107,46,0,0,0,0,0,12,0,8,0,140,0,8,0,\ +76,0,8,0,204,0,8,0,44,0,8,0,172,0,8,0,108,0,8,0,236,0,8,0,28,0,8,0,156,0,8,0,92\ +,0,8,0,220,0,8,0,60,0,8,0,188,0,8,0,124,0,8,0,252,0,8,0,2,0,8,0,130,0,8,0,66,0,\ +8,0,194,0,8,0,34,0,8,0,162,0,8,0,98,0,8,0,226,0,8,0,18,0,8,0,146,0,8,0,82,0,8,0\ +,210,0,8,0,50,0,8,0,178,0,8,0,114,0,8,0,242,0,8,0,10,0,8,0,138,0,8,0,74,0,8,0,2\ +02,0,8,0,42,0,8,0,170,0,8,0,106,0,8,0,234,0,8,0,26,0,8,0,154,0,8,0,90,0,8,0,218\ +,0,8,0,58,0,8,0,186,0,8,0,122,0,8,0,250,0,8,0,6,0,8,0,134,0,8,0, 70,0,8,0,198,0\ +,8,0,38,0,8,0,166,0,8,0,102,0,8,0,230,0,8,0,22,0,8,0,150,0,8,0,86,0,8,0,214,0,8\ +,0,54,0,8,0,182,0,8,0,118,0,8,0,246,0,8,0,14,0,8,0,142,0,8,0,78,0,8,0,206,0,8,0\ +,46,0,8,0,174,0,8,0,110,0,8,0,238,0,8,0,30,0,8,0,158,0,8,0,94,0,8,0,222,0,8,0,6\ +2,0,8,0,190,0,8,0,126,0,8,0,254,0,8,0,1,0,8,0,129,0,8,0,65,0,8,0,193,0,8,0,33,0\ +,8,0,161,0,8,0,97,0,8,0,225,0,8,0,17,0,8,0,145,0,8,0,81,0,8,0,209,0,8,0,49,0,8,\ +0,177,0,8,0,113,0,8,0,241,0,8,0,9,0,8,0,137,0,8,0,73,0,8,0,201,0,8,0,41,0,8,0,1\ +69,0,8,0,105, 0,8,0,233,0,8,0,25,0,8,0,153,0,8,0,89,0,8,0,217,0,8,0,57,0,8,0,18\ +5,0,8,0,121,0,8,0,249,0,8,0,5,0,8,0,133,0,8,0,69,0,8,0,197,0,8,0,37,0,8,0,165,0\ +,8,0,101,0,8,0,229,0,8,0,21,0,8,0,149,0,8,0,85,0,8,0,213,0,8,0,53,0,8,0,181,0,8\ +,0,117,0,8,0,245,0,8,0,13,0,8,0,141,0,8,0,77,0,8,0,205,0,8,0,45,0,8,0,173,0,8,0\ +,109,0,8,0,237,0,8,0,29,0,8,0,157,0,8,0,93,0,8,0,221,0,8,0,61,0,8,0,189,0,8,0,1\ +25,0,8,0,253,0,8,0,19,0,9,0,19,1,9,0,147,0,9,0,147,1,9,0,83,0,9,0,83,1,9,0,211,\ +0,9,0,211,1,9,0,51,0,9,0,51,1,9,0,179,0,9, 0,179,1,9,0,115,0,9,0,115,1,9,0,243,\ +0,9,0,243,1,9,0,11,0,9,0,11,1,9,0,139,0,9,0,139,1,9,0,75,0,9,0,75,1,9,0,203,0,9\ +,0,203,1,9,0,43,0,9,0,43,1,9,0,171,0,9,0,171,1,9,0,107,0,9,0,107,1,9,0,235,0,9,\ +0,235,1,9,0,27,0,9,0,27,1,9,0,155,0,9,0,155,1,9,0,91,0,9,0,91,1,9,0,219,0,9,0,2\ +19,1,9,0,59,0,9,0,59,1,9,0,187,0,9,0,187,1,9,0,123,0,9,0,123,1,9,0,251,0,9,0,25\ +1,1,9,0,7,0,9,0,7,1,9,0,135,0,9,0,135,1,9,0,71,0,9,0,71,1,9,0,199,0,9,0,199,1,9\ +,0,39,0,9,0,39,1,9,0,167,0,9,0,167,1,9,0,103,0,9,0,103,1,9,0,231,0,9,0, 231,1,9\ +,0,23,0,9,0,23,1,9,0,151,0,9,0,151,1,9,0,87,0,9,0,87,1,9,0,215,0,9,0,215,1,9,0,\ +55,0,9,0,55,1,9,0,183,0,9,0,183,1,9,0,119,0,9,0,119,1,9,0,247,0,9,0,247,1,9,0,1\ +5,0,9,0,15,1,9,0,143,0,9,0,143,1,9,0,79,0,9,0,79,1,9,0,207,0,9,0,207,1,9,0,47,0\ +,9,0,47,1,9,0,175,0,9,0,175,1,9,0,111,0,9,0,111,1,9,0,239,0,9,0,239,1,9,0,31,0,\ +9,0,31,1,9,0,159,0,9,0,159,1,9,0,95,0,9,0,95,1,9,0,223,0,9,0,223,1,9,0,63,0,9,0\ +,63,1,9,0,191,0,9,0,191,1,9,0,127,0,9,0,127,1,9,0,255,0,9,0,255,1,9,0,0,0,7,0,6\ +4,0,7,0,32,0,7,0,96, 0,7,0,16,0,7,0,80,0,7,0,48,0,7,0,112,0,7,0,8,0,7,0,72,0,7,\ +0,40,0,7,0,104,0,7,0,24,0,7,0,88,0,7,0,56,0,7,0,120,0,7,0,4,0,7,0,68,0,7,0,36,0\ +,7,0,100,0,7,0,20,0,7,0,84,0,7,0,52,0,7,0,116,0,7,0,3,0,8,0,131,0,8,0,67,0,8,0,\ +195,0,8,0,35,0,8,0,163,0,8,0,99,0,8,0,227,0,8,0,16,0,0,0,16,15,0,0,1,1,0,0,30,1\ +,0,0,15,0,0,0,0,0,0,0,0,0,5,0,16,0,5,0,8,0,5,0,24,0,5,0,4,0,5,0,20,0,5,0,12,0,5\ +,0,28,0,5,0,2,0,5,0,18,0,5,0,10,0,5,0,26,0,5,0,6,0,5,0,22,0,5,0,14,0,5,0,30,0,5\ +,0,1,0,5,0,17,0,5,0,9,0,5,0,25,0,5,0,5,0,5,0,21, 0,5,0,13,0,5,0,29,0,5,0,3,0,5,\ +0,19,0,5,0,11,0,5,0,27,0,5,0,7,0,5,0,23,0,5,0,168,4,0,0,136,15,0,0,0,0,0,0,30,0\ +,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,19,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0\ +,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,\ +0,17,0,17,0,17,0,17,0,18,0,18,0,18,0,18,0,19,0,19,0,19,0,19,0,20,0,20,0,20,0,20\ +,0,21,0,21,0,21,0,21,0,16,0,73,0,195,0,0,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,\ +0,13,0,15,0,17,0,19,0,23,0,27,0,31,0,35,0,43,0,51,0,59,0,67,0,83,0,99,0,115, 0,\ +131,0,163,0,195,0,227,0,2,1,0,0,0,0,0,0,16,0,16,0,16,0,16,0,17,0,17,0,18,0,18,0\ +,19,0,19,0,20,0,20,0,21,0,21,0,22,0,22,0,23,0,23,0,24,0,24,0,25,0,25,0,26,0,26,\ +0,27,0,27,0,28,0,28,0,29,0,29,0,64,0,64,0,1,0,2,0,3,0,4,0,5,0,7,0,9,0,13,0,17,0\ +,25,0,33,0,49,0,65,0,97,0,129,0,193,0,1,1,129,1,1,2,1,3,1,4,1,6,1,8,1,12,1,16,1\ +,24,1,32,1,48,1,64,1,96,0,0,0,0,16,0,17,0,18,0,0,0,8,0,7,0,9,0,6,0,10,0,5,0,11,\ +0,4,0,12,0,3,0,13,0,2,0,14,0,1,0,15,0,0,0,96,7,0,0,0,8,80,0,0,8,16,0,20,8,115,0\ +,18,7,31,0,0,8,112,0,0,8, 48,0,0,9,192,0,16,7,10,0,0,8,96,0,0,8,32,0,0,9,160,0,\ +0,8,0,0,0,8,128,0,0,8,64,0,0,9,224,0,16,7,6,0,0,8,88,0,0,8,24,0,0,9,144,0,19,7,\ +59,0,0,8,120,0,0,8,56,0,0,9,208,0,17,7,17,0,0,8,104,0,0,8,40,0,0,9,176,0,0,8,8,\ +0,0,8,136,0,0,8,72,0,0,9,240,0,16,7,4,0,0,8,84,0,0,8,20,0,21,8,227,0,19,7,43,0,\ +0,8,116,0,0,8,52,0,0,9,200,0,17,7,13,0,0,8,100,0,0,8,36,0,0,9,168,0,0,8,4,0,0,8\ +,132,0,0,8,68,0,0,9,232,0,16,7,8,0,0,8,92,0,0,8,28,0,0,9,152,0,20,7,83,0,0,8,12\ +4,0,0,8,60,0,0,9,216,0,18,7,23,0,0,8,108,0,0,8,44,0,0, 9,184,0,0,8,12,0,0,8,140\ +,0,0,8,76,0,0,9,248,0,16,7,3,0,0,8,82,0,0,8,18,0,21,8,163,0,19,7,35,0,0,8,114,0\ +,0,8,50,0,0,9,196,0,17,7,11,0,0,8,98,0,0,8,34,0,0,9,164,0,0,8,2,0,0,8,130,0,0,8\ +,66,0,0,9,228,0,16,7,7,0,0,8,90,0,0,8,26,0,0,9,148,0,20,7,67,0,0,8,122,0,0,8,58\ +,0,0,9,212,0,18,7,19,0,0,8,106,0,0,8,42,0,0,9,180,0,0,8,10,0,0,8,138,0,0,8,74,0\ +,0,9,244,0,16,7,5,0,0,8,86,0,0,8,22,0,64,8,0,0,19,7,51,0,0,8,118,0,0,8,54,0,0,9\ +,204,0,17,7,15,0,0,8,102,0,0,8,38,0,0,9,172,0,0,8,6,0,0,8,134,0,0,8,70,0,0,9,23\ +6,0, 16,7,9,0,0,8,94,0,0,8,30,0,0,9,156,0,20,7,99,0,0,8,126,0,0,8,62,0,0,9,220,\ +0,18,7,27,0,0,8,110,0,0,8,46,0,0,9,188,0,0,8,14,0,0,8,142,0,0,8,78,0,0,9,252,0,\ +96,7,0,0,0,8,81,0,0,8,17,0,21,8,131,0,18,7,31,0,0,8,113,0,0,8,49,0,0,9,194,0,16\ +,7,10,0,0,8,97,0,0,8,33,0,0,9,162,0,0,8,1,0,0,8,129,0,0,8,65,0,0,9,226,0,16,7,6\ +,0,0,8,89,0,0,8,25,0,0,9,146,0,19,7,59,0,0,8,121,0,0,8,57,0,0,9,210,0,17,7,17,0\ +,0,8,105,0,0,8,41,0,0,9,178,0,0,8,9,0,0,8,137,0,0,8,73,0,0,9,242,0,16,7,4,0,0,8\ +,85,0,0,8,21,0,16,8,2,1,19,7,43, 0,0,8,117,0,0,8,53,0,0,9,202,0,17,7,13,0,0,8,1\ +01,0,0,8,37,0,0,9,170,0,0,8,5,0,0,8,133,0,0,8,69,0,0,9,234,0,16,7,8,0,0,8,93,0,\ +0,8,29,0,0,9,154,0,20,7,83,0,0,8,125,0,0,8,61,0,0,9,218,0,18,7,23,0,0,8,109,0,0\ +,8,45,0,0,9,186,0,0,8,13,0,0,8,141,0,0,8,77,0,0,9,250,0,16,7,3,0,0,8,83,0,0,8,1\ +9,0,21,8,195,0,19,7,35,0,0,8,115,0,0,8,51,0,0,9,198,0,17,7,11,0,0,8,99,0,0,8,35\ +,0,0,9,166,0,0,8,3,0,0,8,131,0,0,8,67,0,0,9,230,0,16,7,7,0,0,8,91,0,0,8,27,0,0,\ +9,150,0,20,7,67,0,0,8,123,0,0,8,59,0,0,9,214,0,18,7,19,0,0,8, 107,0,0,8,43,0,0,\ +9,182,0,0,8,11,0,0,8,139,0,0,8,75,0,0,9,246,0,16,7,5,0,0,8,87,0,0,8,23,0,64,8,0\ +,0,19,7,51,0,0,8,119,0,0,8,55,0,0,9,206,0,17,7,15,0,0,8,103,0,0,8,39,0,0,9,174,\ +0,0,8,7,0,0,8,135,0,0,8,71,0,0,9,238,0,16,7,9,0,0,8,95,0,0,8,31,0,0,9,158,0,20,\ +7,99,0,0,8,127,0,0,8,63,0,0,9,222,0,18,7,27,0,0,8,111,0,0,8,47,0,0,9,190,0,0,8,\ +15,0,0,8,143,0,0,8,79,0,0,9,254,0,96,7,0,0,0,8,80,0,0,8,16,0,20,8,115,0,18,7,31\ +,0,0,8,112,0,0,8,48,0,0,9,193,0,16,7,10,0,0,8,96,0,0,8,32,0,0,9,161,0,0,8,0,0,0\ +,8,128,0,0, 8,64,0,0,9,225,0,16,7,6,0,0,8,88,0,0,8,24,0,0,9,145,0,19,7,59,0,0,8\ +,120,0,0,8,56,0,0,9,209,0,17,7,17,0,0,8,104,0,0,8,40,0,0,9,177,0,0,8,8,0,0,8,13\ +6,0,0,8,72,0,0,9,241,0,16,7,4,0,0,8,84,0,0,8,20,0,21,8,227,0,19,7,43,0,0,8,116,\ +0,0,8,52,0,0,9,201,0,17,7,13,0,0,8,100,0,0,8,36,0,0,9,169,0,0,8,4,0,0,8,132,0,0\ +,8,68,0,0,9,233,0,16,7,8,0,0,8,92,0,0,8,28,0,0,9,153,0,20,7,83,0,0,8,124,0,0,8,\ +60,0,0,9,217,0,18,7,23,0,0,8,108,0,0,8,44,0,0,9,185,0,0,8,12,0,0,8,140,0,0,8,76\ +,0,0,9,249,0,16,7,3,0,0,8,82,0,0,8,18,0, 21,8,163,0,19,7,35,0,0,8,114,0,0,8,50,\ +0,0,9,197,0,17,7,11,0,0,8,98,0,0,8,34,0,0,9,165,0,0,8,2,0,0,8,130,0,0,8,66,0,0,\ +9,229,0,16,7,7,0,0,8,90,0,0,8,26,0,0,9,149,0,20,7,67,0,0,8,122,0,0,8,58,0,0,9,2\ +13,0,18,7,19,0,0,8,106,0,0,8,42,0,0,9,181,0,0,8,10,0,0,8,138,0,0,8,74,0,0,9,245\ +,0,16,7,5,0,0,8,86,0,0,8,22,0,64,8,0,0,19,7,51,0,0,8,118,0,0,8,54,0,0,9,205,0,1\ +7,7,15,0,0,8,102,0,0,8,38,0,0,9,173,0,0,8,6,0,0,8,134,0,0,8,70,0,0,9,237,0,16,7\ +,9,0,0,8,94,0,0,8,30,0,0,9,157,0,20,7,99,0,0,8,126,0,0,8,62,0,0,9,221, 0,18,7,2\ +7,0,0,8,110,0,0,8,46,0,0,9,189,0,0,8,14,0,0,8,142,0,0,8,78,0,0,9,253,0,96,7,0,0\ +,0,8,81,0,0,8,17,0,21,8,131,0,18,7,31,0,0,8,113,0,0,8,49,0,0,9,195,0,16,7,10,0,\ +0,8,97,0,0,8,33,0,0,9,163,0,0,8,1,0,0,8,129,0,0,8,65,0,0,9,227,0,16,7,6,0,0,8,8\ +9,0,0,8,25,0,0,9,147,0,19,7,59,0,0,8,121,0,0,8,57,0,0,9,211,0,17,7,17,0,0,8,105\ +,0,0,8,41,0,0,9,179,0,0,8,9,0,0,8,137,0,0,8,73,0,0,9,243,0,16,7,4,0,0,8,85,0,0,\ +8,21,0,16,8,2,1,19,7,43,0,0,8,117,0,0,8,53,0,0,9,203,0,17,7,13,0,0,8,101,0,0,8,\ +37,0,0,9,171,0,0,8, 5,0,0,8,133,0,0,8,69,0,0,9,235,0,16,7,8,0,0,8,93,0,0,8,29,0\ +,0,9,155,0,20,7,83,0,0,8,125,0,0,8,61,0,0,9,219,0,18,7,23,0,0,8,109,0,0,8,45,0,\ +0,9,187,0,0,8,13,0,0,8,141,0,0,8,77,0,0,9,251,0,16,7,3,0,0,8,83,0,0,8,19,0,21,8\ +,195,0,19,7,35,0,0,8,115,0,0,8,51,0,0,9,199,0,17,7,11,0,0,8,99,0,0,8,35,0,0,9,1\ +67,0,0,8,3,0,0,8,131,0,0,8,67,0,0,9,231,0,16,7,7,0,0,8,91,0,0,8,27,0,0,9,151,0,\ +20,7,67,0,0,8,123,0,0,8,59,0,0,9,215,0,18,7,19,0,0,8,107,0,0,8,43,0,0,9,183,0,0\ +,8,11,0,0,8,139,0,0,8,75,0,0,9,247,0,16,7,5,0,0, 8,87,0,0,8,23,0,64,8,0,0,19,7,\ +51,0,0,8,119,0,0,8,55,0,0,9,207,0,17,7,15,0,0,8,103,0,0,8,39,0,0,9,175,0,0,8,7,\ +0,0,8,135,0,0,8,71,0,0,9,239,0,16,7,9,0,0,8,95,0,0,8,31,0,0,9,159,0,20,7,99,0,0\ +,8,127,0,0,8,63,0,0,9,223,0,18,7,27,0,0,8,111,0,0,8,47,0,0,9,191,0,0,8,15,0,0,8\ +,143,0,0,8,79,0,0,9,255,0,16,5,1,0,23,5,1,1,19,5,17,0,27,5,1,16,17,5,5,0,25,5,1\ +,4,21,5,65,0,29,5,1,64,16,5,3,0,24,5,1,2,20,5,33,0,28,5,1,32,18,5,9,0,26,5,1,8,\ +22,5,129,0,64,5,0,0,16,5,2,0,23,5,129,1,19,5,25,0,27,5,1,24,17,5,7,0,25,5,1, 6,\ +21,5,97,0,29,5,1,96,16,5,4,0,24,5,1,3,20,5,49,0,28,5,1,48,18,5,13,0,26,5,1,12,2\ +2,5,193,0,64,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ +0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0\ +,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,\ +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2\ +,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,\ +7,0,0,0,8,0,0,0,8,0,0,0,9, 0,0,0,9,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,11,0,0,0,12\ +,0,0,0,12,0,0,0,13,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\ +,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ +0,0,2,0,0,0,3,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150\ +,48,7,119,44,97,14,238,186,81,9,153,25,196,109,7,143,244,106,112,53,165,99,233,\ +163,149,100,158,50,136,219,14,164,184,220,121,30,233,213,224,136,217,210,151,43\ +,76,182,9,189,124,177,126,7,45,184,231,145,29,191,144, 100,16,183,29,242,32,176\ +,106,72,113,185,243,222,65,190,132,125,212,218,26,235,228,221,109,81,181,212,24\ +4,199,133,211,131,86,152,108,19,192,168,107,100,122,249,98,253,236,201,101,138,\ +79,92,1,20,217,108,6,99,99,61,15,250,245,13,8,141,200,32,110,59,94,16,105,76,22\ +8,65,96,213,114,113,103,162,209,228,3,60,71,212,4,75,253,133,13,210,107,181,10,\ +165,250,168,181,53,108,152,178,66,214,201,187,219,64,249,188,172,227,108,216,50\ +,117,92,223,69,207,13,214,220,89,61,209,171,172,48,217,38,58,0,222,81,128,81,21\ +5,200, 22,97,208,191,181,244,180,33,35,196,179,86,153,149,186,207,15,165,189,18\ +4,158,184,2,40,8,136,5,95,178,217,12,198,36,233,11,177,135,124,111,47,17,76,104\ +,88,171,29,97,193,61,45,102,182,144,65,220,118,6,113,219,1,188,32,210,152,42,16\ +,213,239,137,133,177,113,31,181,182,6,165,228,191,159,51,212,184,232,162,201,7,\ +120,52,249,0,15,142,168,9,150,24,152,14,225,187,13,106,127,45,61,109,8,151,108,\ +100,145,1,92,99,230,244,81,107,107,98,97,108,28,216,48,101,133,78,0,98,242,237,\ +149,6,108,123,165,1,27,193,244,8,130, 87,196,15,245,198,217,176,101,80,233,183,\ +18,234,184,190,139,124,136,185,252,223,29,221,98,73,45,218,21,243,124,211,140,1\ +01,76,212,251,88,97,178,77,206,81,181,58,116,0,188,163,226,48,187,212,65,165,22\ +3,74,215,149,216,61,109,196,209,164,251,244,214,211,106,233,105,67,252,217,110,\ +52,70,136,103,173,208,184,96,218,115,45,4,68,229,29,3,51,95,76,10,170,201,124,1\ +3,221,60,113,5,80,170,65,2,39,16,16,11,190,134,32,12,201,37,181,104,87,179,133,\ +111,32,9,212,102,185,159,228,97,206,14,249,222,94,152,201,217,41, 34,152,208,17\ +6,180,168,215,199,23,61,179,89,129,13,180,46,59,92,189,183,173,108,186,192,32,1\ +31,184,237,182,179,191,154,12,226,182,3,154,210,177,116,57,71,213,234,175,119,2\ +10,157,21,38,219,4,131,22,220,115,18,11,99,227,132,59,100,148,62,106,109,13,168\ +,90,106,122,11,207,14,228,157,255,9,147,39,174,0,10,177,158,7,125,68,147,15,240\ +,210,163,8,135,104,242,1,30,254,194,6,105,93,87,98,247,203,103,101,128,113,54,1\ +08,25,231,6,107,110,118,27,212,254,224,43,211,137,90,122,218,16,204,74,221,103,\ +111,223,185,249, 249,239,190,142,67,190,183,23,213,142,176,96,232,163,214,214,1\ +26,147,209,161,196,194,216,56,82,242,223,79,241,103,187,209,103,87,188,166,221,\ +6,181,63,75,54,178,72,218,43,13,216,76,27,10,175,246,74,3,54,96,122,4,65,195,23\ +9,96,223,85,223,103,168,239,142,110,49,121,190,105,70,140,179,97,203,26,131,102\ +,188,160,210,111,37,54,226,104,82,149,119,12,204,3,71,11,187,185,22,2,34,47,38,\ +5,85,190,59,186,197,40,11,189,178,146,90,180,43,4,106,179,92,167,255,215,194,49\ +,207,208,181,139,158,217,44,29,174,222,91,176, 194,100,155,38,242,99,236,156,16\ +3,106,117,10,147,109,2,169,6,9,156,63,54,14,235,133,103,7,114,19,87,0,5,130,74,\ +191,149,20,122,184,226,174,43,177,123,56,27,182,12,155,142,210,146,13,190,213,2\ +29,183,239,220,124,33,223,219,11,212,210,211,134,66,226,212,241,248,179,221,104\ +,110,131,218,31,205,22,190,129,91,38,185,246,225,119,176,111,119,71,183,24,230,\ +90,8,136,112,106,15,255,202,59,6,102,92,11,1,17,255,158,101,143,105,174,98,248,\ +211,255,107,97,69,207,108,22,120,226,10,160,238,210,13,215,84,131,4,78,194, 179\ +,3,57,97,38,103,167,247,22,96,208,77,71,105,73,219,119,110,62,74,106,209,174,22\ +0,90,214,217,102,11,223,64,240,59,216,55,83,174,188,169,197,158,187,222,127,207\ +,178,71,233,255,181,48,28,242,189,189,138,194,186,202,48,147,179,83,166,163,180\ +,36,5,54,208,186,147,6,215,205,41,87,222,84,191,103,217,35,46,122,102,179,184,7\ +4,97,196,2,27,104,93,148,43,111,42,55,190,11,180,161,142,12,195,27,223,5,90,141\ +,239,2,45,0,0,0,0,65,49,27,25,130,98,54,50,195,83,45,43,4,197,108,100,69,244,11\ +9,125,134,167,90,86,199, 150,65,79,8,138,217,200,73,187,194,209,138,232,239,250\ +,203,217,244,227,12,79,181,172,77,126,174,181,142,45,131,158,207,28,152,135,81,\ +18,194,74,16,35,217,83,211,112,244,120,146,65,239,97,85,215,174,46,20,230,181,5\ +5,215,181,152,28,150,132,131,5,89,152,27,130,24,169,0,155,219,250,45,176,154,20\ +3,54,169,93,93,119,230,28,108,108,255,223,63,65,212,158,14,90,205,162,36,132,14\ +9,227,21,159,140,32,70,178,167,97,119,169,190,166,225,232,241,231,208,243,232,3\ +6,131,222,195,101,178,197,218,170,174,93,93,235,159, 70,68,40,204,107,111,105,2\ +53,112,118,174,107,49,57,239,90,42,32,44,9,7,11,109,56,28,18,243,54,70,223,178,\ +7,93,198,113,84,112,237,48,101,107,244,247,243,42,187,182,194,49,162,117,145,28\ +,137,52,160,7,144,251,188,159,23,186,141,132,14,121,222,169,37,56,239,178,60,25\ +5,121,243,115,190,72,232,106,125,27,197,65,60,42,222,88,5,79,121,240,68,126,98,\ +233,135,45,79,194,198,28,84,219,1,138,21,148,64,187,14,141,131,232,35,166,194,2\ +17,56,191,13,197,160,56,76,244,187,33,143,167,150,10,206,150,141,19,9,0,204,92,\ +72, 49,215,69,139,98,250,110,202,83,225,119,84,93,187,186,21,108,160,163,214,63\ +,141,136,151,14,150,145,80,152,215,222,17,169,204,199,210,250,225,236,147,203,2\ +50,245,92,215,98,114,29,230,121,107,222,181,84,64,159,132,79,89,88,18,14,22,25,\ +35,21,15,218,112,56,36,155,65,35,61,167,107,253,101,230,90,230,124,37,9,203,87,\ +100,56,208,78,163,174,145,1,226,159,138,24,33,204,167,51,96,253,188,42,175,225,\ +36,173,238,208,63,180,45,131,18,159,108,178,9,134,171,36,72,201,234,21,83,208,4\ +1,70,126,251,104,119,101,226,246, 121,63,47,183,72,36,54,116,27,9,29,53,42,18,4\ +,242,188,83,75,179,141,72,82,112,222,101,121,49,239,126,96,254,243,230,231,191,\ +194,253,254,124,145,208,213,61,160,203,204,250,54,138,131,187,7,145,154,120,84,\ +188,177,57,101,167,168,75,152,131,59,10,169,152,34,201,250,181,9,136,203,174,16\ +,79,93,239,95,14,108,244,70,205,63,217,109,140,14,194,116,67,18,90,243,2,35,65,\ +234,193,112,108,193,128,65,119,216,71,215,54,151,6,230,45,142,197,181,0,165,132\ +,132,27,188,26,138,65,113,91,187,90,104,152,232,119,67,217,217, 108,90,30,79,45\ +,21,95,126,54,12,156,45,27,39,221,28,0,62,18,0,152,185,83,49,131,160,144,98,174\ +,139,209,83,181,146,22,197,244,221,87,244,239,196,148,167,194,239,213,150,217,2\ +46,233,188,7,174,168,141,28,183,107,222,49,156,42,239,42,133,237,121,107,202,17\ +2,72,112,211,111,27,93,248,46,42,70,225,225,54,222,102,160,7,197,127,99,84,232,\ +84,34,101,243,77,229,243,178,2,164,194,169,27,103,145,132,48,38,160,159,41,184,\ +174,197,228,249,159,222,253,58,204,243,214,123,253,232,207,188,107,169,128,253,\ +90,178,153,62, 9,159,178,127,56,132,171,176,36,28,44,241,21,7,53,50,70,42,30,11\ +5,119,49,7,180,225,112,72,245,208,107,81,54,131,70,122,119,178,93,99,78,215,250\ +,203,15,230,225,210,204,181,204,249,141,132,215,224,74,18,150,175,11,35,141,182\ +,200,112,160,157,137,65,187,132,70,93,35,3,7,108,56,26,196,63,21,49,133,14,14,4\ +0,66,152,79,103,3,169,84,126,192,250,121,85,129,203,98,76,31,197,56,129,94,244,\ +35,152,157,167,14,179,220,150,21,170,27,0,84,229,90,49,79,252,153,98,98,215,216\ +,83,121,206,23,79,225,73,86,126,250,80,149, 45,215,123,212,28,204,98,19,138,141\ +,45,82,187,150,52,145,232,187,31,208,217,160,6,236,243,126,94,173,194,101,71,11\ +0,145,72,108,47,160,83,117,232,54,18,58,169,7,9,35,106,84,36,8,43,101,63,17,228\ +,121,167,150,165,72,188,143,102,27,145,164,39,42,138,189,224,188,203,242,161,14\ +1,208,235,98,222,253,192,35,239,230,217,189,225,188,20,252,208,167,13,63,131,13\ +8,38,126,178,145,63,185,36,208,112,248,21,203,105,59,70,230,66,122,119,253,91,1\ +81,107,101,220,244,90,126,197,55,9,83,238,118,56,72,247,177,174,9,184,240, 159,\ +18,161,51,204,63,138,114,253,36,147,0,0,0,0,55,106,194,1,110,212,132,3,89,190,7\ +0,2,220,168,9,7,235,194,203,6,178,124,141,4,133,22,79,5,184,81,19,14,143,59,209\ +,15,214,133,151,13,225,239,85,12,100,249,26,9,83,147,216,8,10,45,158,10,61,71,9\ +2,11,112,163,38,28,71,201,228,29,30,119,162,31,41,29,96,30,172,11,47,27,155,97,\ +237,26,194,223,171,24,245,181,105,25,200,242,53,18,255,152,247,19,166,38,177,17\ +,145,76,115,16,20,90,60,21,35,48,254,20,122,142,184,22,77,228,122,23,224,70,77,\ +56,215,44,143,57,142,146, 201,59,185,248,11,58,60,238,68,63,11,132,134,62,82,58\ +,192,60,101,80,2,61,88,23,94,54,111,125,156,55,54,195,218,53,1,169,24,52,132,19\ +1,87,49,179,213,149,48,234,107,211,50,221,1,17,51,144,229,107,36,167,143,169,37\ +,254,49,239,39,201,91,45,38,76,77,98,35,123,39,160,34,34,153,230,32,21,243,36,3\ +3,40,180,120,42,31,222,186,43,70,96,252,41,113,10,62,40,244,28,113,45,195,118,1\ +79,44,154,200,245,46,173,162,55,47,192,141,154,112,247,231,88,113,174,89,30,115\ +,153,51,220,114,28,37,147,119,43,79,81,118,114,241,23, 116,69,155,213,117,120,2\ +20,137,126,79,182,75,127,22,8,13,125,33,98,207,124,164,116,128,121,147,30,66,12\ +0,202,160,4,122,253,202,198,123,176,46,188,108,135,68,126,109,222,250,56,111,23\ +3,144,250,110,108,134,181,107,91,236,119,106,2,82,49,104,53,56,243,105,8,127,17\ +5,98,63,21,109,99,102,171,43,97,81,193,233,96,212,215,166,101,227,189,100,100,1\ +86,3,34,102,141,105,224,103,32,203,215,72,23,161,21,73,78,31,83,75,121,117,145,\ +74,252,99,222,79,203,9,28,78,146,183,90,76,165,221,152,77,152,154,196,70,175,24\ +0,6, 71,246,78,64,69,193,36,130,68,68,50,205,65,115,88,15,64,42,230,73,66,29,14\ +0,139,67,80,104,241,84,103,2,51,85,62,188,117,87,9,214,183,86,140,192,248,83,18\ +7,170,58,82,226,20,124,80,213,126,190,81,232,57,226,90,223,83,32,91,134,237,102\ +,89,177,135,164,88,52,145,235,93,3,251,41,92,90,69,111,94,109,47,173,95,128,27,\ +53,225,183,113,247,224,238,207,177,226,217,165,115,227,92,179,60,230,107,217,25\ +4,231,50,103,184,229,5,13,122,228,56,74,38,239,15,32,228,238,86,158,162,236,97,\ +244,96,237,228,226,47,232,211,136, 237,233,138,54,171,235,189,92,105,234,240,18\ +4,19,253,199,210,209,252,158,108,151,254,169,6,85,255,44,16,26,250,27,122,216,2\ +51,66,196,158,249,117,174,92,248,72,233,0,243,127,131,194,242,38,61,132,240,17,\ +87,70,241,148,65,9,244,163,43,203,245,250,149,141,247,205,255,79,246,96,93,120,\ +217,87,55,186,216,14,137,252,218,57,227,62,219,188,245,113,222,139,159,179,223,\ +210,33,245,221,229,75,55,220,216,12,107,215,239,102,169,214,182,216,239,212,129\ +,178,45,213,4,164,98,208,51,206,160,209,106,112,230,211,93,26, 36,210,16,254,94\ +,197,39,148,156,196,126,42,218,198,73,64,24,199,204,86,87,194,251,60,149,195,16\ +2,130,211,193,149,232,17,192,168,175,77,203,159,197,143,202,198,123,201,200,241\ +,17,11,201,116,7,68,204,67,109,134,205,26,211,192,207,45,185,2,206,64,150,175,1\ +45,119,252,109,144,46,66,43,146,25,40,233,147,156,62,166,150,171,84,100,151,242\ +,234,34,149,197,128,224,148,248,199,188,159,207,173,126,158,150,19,56,156,161,1\ +21,250,157,36,111,181,152,19,5,119,153,74,187,49,155,125,209,243,154,48,53,137,\ +141,7,95,75, 140,94,225,13,142,105,139,207,143,236,157,128,138,219,247,66,139,1\ +30,73,4,137,181,35,198,136,136,100,154,131,191,14,88,130,230,176,30,128,209,218\ +,220,129,84,204,147,132,99,166,81,133,58,24,23,135,13,114,213,134,160,208,226,1\ +69,151,186,32,168,206,4,102,170,249,110,164,171,124,120,235,174,75,18,41,175,18\ +,172,111,173,37,198,173,172,24,129,241,167,47,235,51,166,118,85,117,164,65,63,1\ +83,165,196,41,248,160,243,67,58,161,170,253,124,163,157,151,190,162,208,115,196\ +,181,231,25,6,180,190,167,64,182,137,205, 130,183,12,219,205,178,59,177,15,179,\ +98,15,73,177,85,101,139,176,104,34,215,187,95,72,21,186,6,246,83,184,49,156,145\ +,185,180,138,222,188,131,224,28,189,218,94,90,191,237,52,152,190,0,0,0,0,101,10\ +3,188,184,139,200,9,170,238,175,181,18,87,151,98,143,50,240,222,55,220,95,107,3\ +7,185,56,215,157,239,40,180,197,138,79,8,125,100,224,189,111,1,135,1,215,184,19\ +1,214,74,221,216,106,242,51,119,223,224,86,16,99,88,159,87,25,80,250,48,165,232\ +,20,159,16,250,113,248,172,66,200,192,123,223,173,167,199,103,67,8,114, 117,38,\ +111,206,205,112,127,173,149,21,24,17,45,251,183,164,63,158,208,24,135,39,232,20\ +7,26,66,143,115,162,172,32,198,176,201,71,122,8,62,175,50,160,91,200,142,24,181\ +,103,59,10,208,0,135,178,105,56,80,47,12,95,236,151,226,240,89,133,135,151,229,\ +61,209,135,134,101,180,224,58,221,90,79,143,207,63,40,51,119,134,16,228,234,227\ +,119,88,82,13,216,237,64,104,191,81,248,161,248,43,240,196,159,151,72,42,48,34,\ +90,79,87,158,226,246,111,73,127,147,8,245,199,125,167,64,213,24,192,252,109,78,\ +208,159,53,43,183,35, 141,197,24,150,159,160,127,42,39,25,71,253,186,124,32,65,\ +2,146,143,244,16,247,232,72,168,61,88,20,155,88,63,168,35,182,144,29,49,211,247\ +,161,137,106,207,118,20,15,168,202,172,225,7,127,190,132,96,195,6,210,112,160,9\ +4,183,23,28,230,89,184,169,244,60,223,21,76,133,231,194,209,224,128,126,105,14,\ +47,203,123,107,72,119,195,162,15,13,203,199,104,177,115,41,199,4,97,76,160,184,\ +217,245,152,111,68,144,255,211,252,126,80,102,238,27,55,218,86,77,39,185,14,40,\ +64,5,182,198,239,176,164,163,136,12,28,26,176,219, 129,127,215,103,57,145,120,2\ +10,43,244,31,110,147,3,247,38,59,102,144,154,131,136,63,47,145,237,88,147,41,84\ +,96,68,180,49,7,248,12,223,168,77,30,186,207,241,166,236,223,146,254,137,184,46\ +,70,103,23,155,84,2,112,39,236,187,72,240,113,222,47,76,201,48,128,249,219,85,2\ +31,69,99,156,160,63,107,249,199,131,211,23,104,54,193,114,15,138,121,203,55,93,\ +228,174,80,225,92,64,255,84,78,37,152,232,246,115,136,139,174,22,239,55,22,248,\ +64,130,4,157,39,62,188,36,31,233,33,65,120,85,153,175,215,224,139,202,176,92,51\ +, 59,182,89,237,94,209,229,85,176,126,80,71,213,25,236,255,108,33,59,98,9,70,13\ +5,218,231,233,50,200,130,142,142,112,212,158,237,40,177,249,81,144,95,86,228,13\ +0,58,49,88,58,131,9,143,167,230,110,51,31,8,193,134,13,109,166,58,181,164,225,6\ +4,189,193,134,252,5,47,41,73,23,74,78,245,175,243,118,34,50,150,17,158,138,120,\ +190,43,152,29,217,151,32,75,201,244,120,46,174,72,192,192,1,253,210,165,102,65,\ +106,28,94,150,247,121,57,42,79,151,150,159,93,242,241,35,229,5,25,107,77,96,126\ +,215,245,142,209,98,231,235,182, 222,95,82,142,9,194,55,233,181,122,217,70,0,10\ +4,188,33,188,208,234,49,223,136,143,86,99,48,97,249,214,34,4,158,106,154,189,16\ +6,189,7,216,193,1,191,54,110,180,173,83,9,8,21,154,78,114,29,255,41,206,165,17,\ +134,123,183,116,225,199,15,205,217,16,146,168,190,172,42,70,17,25,56,35,118,165\ +,128,117,102,198,216,16,1,122,96,254,174,207,114,155,201,115,202,34,241,164,87,\ +71,150,24,239,169,57,173,253,204,94,17,69,6,238,77,118,99,137,241,206,141,38,68\ +,220,232,65,248,100,81,121,47,249,52,30,147,65,218,177,38,83, 191,214,154,235,2\ +33,198,249,179,140,161,69,11,98,14,240,25,7,105,76,161,190,81,155,60,219,54,39,\ +132,53,153,146,150,80,254,46,46,153,185,84,38,252,222,232,158,18,113,93,140,119\ +,22,225,52,206,46,54,169,171,73,138,17,69,230,63,3,32,129,131,187,118,145,224,2\ +27,19,246,92,91,253,89,233,73,152,62,85,241,33,6,130,108,68,97,62,212,170,206,1\ +39,198,207,169,55,126,56,65,127,214,93,38,195,110,179,137,118,124,214,238,202,1\ +96,111,214,29,89,10,177,161,225,228,30,20,243,129,121,168,75,215,105,203,19,178\ +,14,119,171, 92,161,194,185,57,198,126,1,128,254,169,156,229,153,21,36,11,54,16\ +0,54,110,81,28,142,167,22,102,134,194,113,218,62,44,222,111,44,73,185,211,148,2\ +40,129,4,9,149,230,184,177,123,73,13,163,30,46,177,27,72,62,210,67,45,89,110,25\ +1,195,246,219,233,166,145,103,81,31,169,176,204,122,206,12,116,148,97,185,102,2\ +41,6,5,222,0,0,0,0,119,7,48,150,238,14,97,44,153,9,81,186,7,109,196,25,112,106,\ +244,143,233,99,165,53,158,100,149,163,14,219,136,50,121,220,184,164,224,213,233\ +,30,151,210,217,136,9,182,76,43,126,177, 124,189,231,184,45,7,144,191,29,145,29\ +,183,16,100,106,176,32,242,243,185,113,72,132,190,65,222,26,218,212,125,109,221\ +,228,235,244,212,181,81,131,211,133,199,19,108,152,86,100,107,168,192,253,98,24\ +9,122,138,101,201,236,20,1,92,79,99,6,108,217,250,15,61,99,141,8,13,245,59,110,\ +32,200,76,105,16,94,213,96,65,228,162,103,113,114,60,3,228,209,75,4,212,71,210,\ +13,133,253,165,10,181,107,53,181,168,250,66,178,152,108,219,187,201,214,172,188\ +,249,64,50,216,108,227,69,223,92,117,220,214,13,207,171,209,61,89,38, 217,48,17\ +2,81,222,0,58,200,215,81,128,191,208,97,22,33,180,244,181,86,179,196,35,207,186\ +,149,153,184,189,165,15,40,2,184,158,95,5,136,8,198,12,217,178,177,11,233,36,47\ +,111,124,135,88,104,76,17,193,97,29,171,182,102,45,61,118,220,65,144,1,219,113,\ +6,152,210,32,188,239,213,16,42,113,177,133,137,6,182,181,31,159,191,228,165,232\ +,184,212,51,120,7,201,162,15,0,249,52,150,9,168,142,225,14,152,24,127,106,13,18\ +7,8,109,61,45,145,100,108,151,230,99,92,1,107,107,81,244,28,108,97,98,133,101,4\ +8,216,242,98,0,78, 108,6,149,237,27,1,165,123,130,8,244,193,245,15,196,87,101,1\ +76,217,198,18,183,233,80,139,190,184,234,252,185,136,124,98,221,29,223,21,218,4\ +5,73,140,211,124,243,251,212,76,101,77,178,97,88,58,181,81,206,163,188,0,116,21\ +2,187,48,226,74,223,165,65,61,216,149,215,164,209,196,109,211,214,244,251,67,10\ +5,233,106,52,110,217,252,173,103,136,70,218,96,184,208,68,4,45,115,51,3,29,229,\ +170,10,76,95,221,13,124,201,80,5,113,60,39,2,65,170,190,11,16,16,201,12,32,134,\ +87,104,181,37,32,111,133,179,185,102,212,9,206, 97,228,159,94,222,249,14,41,217\ +,201,152,176,208,152,34,199,215,168,180,89,179,61,23,46,180,13,129,183,189,92,5\ +9,192,186,108,173,237,184,131,32,154,191,179,182,3,182,226,12,116,177,210,154,2\ +34,213,71,57,157,210,119,175,4,219,38,21,115,220,22,131,227,99,11,18,148,100,59\ +,132,13,109,106,62,122,106,90,168,228,14,207,11,147,9,255,157,10,0,174,39,125,7\ +,158,177,240,15,147,68,135,8,163,210,30,1,242,104,105,6,194,254,247,98,87,93,12\ +8,101,103,203,25,108,54,113,110,107,6,231,254,212,27,118,137,211,43,224,16, 218\ +,122,90,103,221,74,204,249,185,223,111,142,190,239,249,23,183,190,67,96,176,142\ +,213,214,214,163,232,161,209,147,126,56,216,194,196,79,223,242,82,209,187,103,2\ +41,166,188,87,103,63,181,6,221,72,178,54,75,216,13,43,218,175,10,27,76,54,3,74,\ +246,65,4,122,96,223,96,239,195,168,103,223,85,49,110,142,239,70,105,190,121,203\ +,97,179,140,188,102,131,26,37,111,210,160,82,104,226,54,204,12,119,149,187,11,7\ +1,3,34,2,22,185,85,5,38,47,197,186,59,190,178,189,11,40,43,180,90,146,92,179,10\ +6,4,194,215,255,167,181, 208,207,49,44,217,158,139,91,222,174,29,155,100,194,17\ +6,236,99,242,38,117,106,163,156,2,109,147,10,156,9,6,169,235,14,54,63,114,7,103\ +,133,5,0,87,19,149,191,74,130,226,184,122,20,123,177,43,174,12,182,27,56,146,21\ +0,142,155,229,213,190,13,124,220,239,183,11,219,223,33,134,211,210,212,241,212,\ +226,66,104,221,179,248,31,218,131,110,129,190,22,205,246,185,38,91,111,176,119,\ +225,24,183,71,119,136,8,90,230,255,15,106,112,102,6,59,202,17,1,11,92,143,101,1\ +58,255,248,98,174,105,97,107,255,211,22,108,207,69,160, 10,226,120,215,13,210,2\ +38,78,4,131,84,57,3,179,194,167,103,38,97,208,96,22,247,73,105,71,77,62,110,119\ +,219,174,209,106,74,217,214,90,220,64,223,11,102,55,216,59,240,169,188,174,83,2\ +22,187,158,197,71,178,207,127,48,181,255,233,189,189,242,28,202,186,194,138,83,\ +179,147,48,36,180,163,166,186,208,54,5,205,215,6,147,84,222,87,41,35,217,103,19\ +1,179,102,122,46,196,97,74,184,93,104,27,2,42,111,43,148,180,11,190,55,195,12,1\ +42,161,90,5,223,27,45,2,239,141,0,0,0,0,25,27,49,65,50,54,98,130,43,45,83,195,1\ +00,108, 197,4,125,119,244,69,86,90,167,134,79,65,150,199,200,217,138,8,209,194,\ +187,73,250,239,232,138,227,244,217,203,172,181,79,12,181,174,126,77,158,131,45,\ +142,135,152,28,207,74,194,18,81,83,217,35,16,120,244,112,211,97,239,65,146,46,1\ +74,215,85,55,181,230,20,28,152,181,215,5,131,132,150,130,27,152,89,155,0,169,24\ +,176,45,250,219,169,54,203,154,230,119,93,93,255,108,108,28,212,65,63,223,205,9\ +0,14,158,149,132,36,162,140,159,21,227,167,178,70,32,190,169,119,97,241,232,225\ +,166,232,243,208,231,195,222,131,36, 218,197,178,101,93,93,174,170,68,70,159,23\ +5,111,107,204,40,118,112,253,105,57,49,107,174,32,42,90,239,11,7,9,44,18,28,56,\ +109,223,70,54,243,198,93,7,178,237,112,84,113,244,107,101,48,187,42,243,247,162\ +,49,194,182,137,28,145,117,144,7,160,52,23,159,188,251,14,132,141,186,37,169,22\ +2,121,60,178,239,56,115,243,121,255,106,232,72,190,65,197,27,125,88,222,42,60,2\ +40,121,79,5,233,98,126,68,194,79,45,135,219,84,28,198,148,21,138,1,141,14,187,6\ +4,166,35,232,131,191,56,217,194,56,160,197,13,33,187,244,76,10,150, 167,143,19,\ +141,150,206,92,204,0,9,69,215,49,72,110,250,98,139,119,225,83,202,186,187,93,84\ +,163,160,108,21,136,141,63,214,145,150,14,151,222,215,152,80,199,204,169,17,236\ +,225,250,210,245,250,203,147,114,98,215,92,107,121,230,29,64,84,181,222,89,79,1\ +32,159,22,14,18,88,15,21,35,25,36,56,112,218,61,35,65,155,101,253,107,167,124,2\ +30,90,230,87,203,9,37,78,208,56,100,1,145,174,163,24,138,159,226,51,167,204,33,\ +42,188,253,96,173,36,225,175,180,63,208,238,159,18,131,45,134,9,178,108,201,72,\ +36,171,208,83,21, 234,251,126,70,41,226,101,119,104,47,63,121,246,54,36,72,183,\ +29,9,27,116,4,18,42,53,75,83,188,242,82,72,141,179,121,101,222,112,96,126,239,4\ +9,231,230,243,254,254,253,194,191,213,208,145,124,204,203,160,61,131,138,54,250\ +,154,145,7,187,177,188,84,120,168,167,101,57,59,131,152,75,34,152,169,10,9,181,\ +250,201,16,174,203,136,95,239,93,79,70,244,108,14,109,217,63,205,116,194,14,140\ +,243,90,18,67,234,65,35,2,193,108,112,193,216,119,65,128,151,54,215,71,142,45,2\ +30,6,165,0,181,197,188,27,132,132,113,65,138, 26,104,90,187,91,67,119,232,152,9\ +0,108,217,217,21,45,79,30,12,54,126,95,39,27,45,156,62,0,28,221,185,152,0,18,16\ +0,131,49,83,139,174,98,144,146,181,83,209,221,244,197,22,196,239,244,87,239,194\ +,167,148,246,217,150,213,174,7,188,233,183,28,141,168,156,49,222,107,133,42,239\ +,42,202,107,121,237,211,112,72,172,248,93,27,111,225,70,42,46,102,222,54,225,12\ +7,197,7,160,84,232,84,99,77,243,101,34,2,178,243,229,27,169,194,164,48,132,145,\ +103,41,159,160,38,228,197,174,184,253,222,159,249,214,243,204,58,207,232, 253,1\ +23,128,169,107,188,153,178,90,253,178,159,9,62,171,132,56,127,44,28,36,176,53,7\ +,21,241,30,42,70,50,7,49,119,115,72,112,225,180,81,107,208,245,122,70,131,54,99\ +,93,178,119,203,250,215,78,210,225,230,15,249,204,181,204,224,215,132,141,175,1\ +50,18,74,182,141,35,11,157,160,112,200,132,187,65,137,3,35,93,70,26,56,108,7,49\ +,21,63,196,40,14,14,133,103,79,152,66,126,84,169,3,85,121,250,192,76,98,203,129\ +,129,56,197,31,152,35,244,94,179,14,167,157,170,21,150,220,229,84,0,27,252,79,4\ +9,90,215,98,98,153,206, 121,83,216,73,225,79,23,80,250,126,86,123,215,45,149,98\ +,204,28,212,45,141,138,19,52,150,187,82,31,187,232,145,6,160,217,208,94,126,243\ +,236,71,101,194,173,108,72,145,110,117,83,160,47,58,18,54,232,35,9,7,169,8,36,8\ +4,106,17,63,101,43,150,167,121,228,143,188,72,165].concat([164,145,27,102,189,1\ +38,42,39,242,203,188,224,235,208,141,161,192,253,222,98,217,230,239,35,20,188,2\ +25,189,13,167,208,252,38,138,131,63,63,145,178,126,112,208,36,185,105,203,21,24\ +8,66,230,70,59,91,253,119,122,220,101,107,181,197,126, 90,244,238,83,9,55,247,7\ +2,56,118,184,9,174,177,161,18,159,240,138,63,204,51,147,36,253,114,0,0,0,0,1,19\ +4,106,55,3,132,212,110,2,70,190,89,7,9,168,220,6,203,194,235,4,141,124,178,5,79\ +,22,133,14,19,81,184,15,209,59,143,13,151,133,214,12,85,239,225,9,26,249,100,8,\ +216,147,83,10,158,45,10,11,92,71,61,28,38,163,112,29,228,201,71,31,162,119,30,3\ +0,96,29,41,27,47,11,172,26,237,97,155,24,171,223,194,25,105,181,245,18,53,242,2\ +00,19,247,152,255,17,177,38,166,16,115,76,145,21,60,90,20,20,254,48,35,22,184,1\ +42, 122,23,122,228,77,56,77,70,224,57,143,44,215,59,201,146,142,58,11,248,185,6\ +3,68,238,60,62,134,132,11,60,192,58,82,61,2,80,101,54,94,23,88,55,156,125,111,5\ +3,218,195,54,52,24,169,1,49,87,191,132,48,149,213,179,50,211,107,234,51,17,1,22\ +1,36,107,229,144,37,169,143,167,39,239,49,254,38,45,91,201,35,98,77,76,34,160,3\ +9,123,32,230,153,34,33,36,243,21,42,120,180,40,43,186,222,31,41,252,96,70,40,62\ +,10,113,45,113,28,244,44,179,118,195,46,245,200,154,47,55,162,173,112,154,141,1\ +92,113,88,231,247,115,30,89,174, 114,220,51,153,119,147,37,28,118,81,79,43,116,\ +23,241,114,117,213,155,69,126,137,220,120,127,75,182,79,125,13,8,22,124,207,98,\ +33,121,128,116,164,120,66,30,147,122,4,160,202,123,198,202,253,108,188,46,176,1\ +09,126,68,135,111,56,250,222,110,250,144,233,107,181,134,108,106,119,236,91,104\ +,49,82,2,105,243,56,53,98,175,127,8,99,109,21,63,97,43,171,102,96,233,193,81,10\ +1,166,215,212,100,100,189,227,102,34,3,186,103,224,105,141,72,215,203,32,73,21,\ +161,23,75,83,31,78,74,145,117,121,79,222,99,252,78,28,9,203, 76,90,183,146,77,1\ +52,221,165,70,196,154,152,71,6,240,175,69,64,78,246,68,130,36,193,65,205,50,68,\ +64,15,88,115,66,73,230,42,67,139,140,29,84,241,104,80,85,51,2,103,87,117,188,62\ +,86,183,214,9,83,248,192,140,82,58,170,187,80,124,20,226,81,190,126,213,90,226,\ +57,232,91,32,83,223,89,102,237,134,88,164,135,177,93,235,145,52,92,41,251,3,94,\ +111,69,90,95,173,47,109,225,53,27,128,224,247,113,183,226,177,207,238,227,115,1\ +65,217,230,60,179,92,231,254,217,107,229,184,103,50,228,122,13,5,239,38,74,56,2\ +38,228,32, 15,236,162,158,86,237,96,244,97,232,47,226,228,233,237,136,211,235,1\ +71,54,138,234,105,92,189,253,19,184,240,252,209,210,199,254,151,108,158,255,85,\ +6,169,250,26,16,44,251,216,122,27,249,158,196,66,248,92,174,117,243,0,233,72,24\ +2,194,131,127,240,132,61,38,241,70,87,17,244,9,65,148,245,203,43,163,247,141,14\ +9,250,246,79,255,205,217,120,93,96,216,186,55,87,218,252,137,14,219,62,227,57,2\ +22,113,245,188,223,179,159,139,221,245,33,210,220,55,75,229,215,107,12,216,214,\ +169,102,239,212,239,216,182,213,45,178, 129,208,98,164,4,209,160,206,51,211,230\ +,112,106,210,36,26,93,197,94,254,16,196,156,148,39,198,218,42,126,199,24,64,73,\ +194,87,86,204,195,149,60,251,193,211,130,162,192,17,232,149,203,77,175,168,202,\ +143,197,159,200,201,123,198,201,11,17,241,204,68,7,116,205,134,109,67,207,192,2\ +11,26,206,2,185,45,145,175,150,64,144,109,252,119,146,43,66,46,147,233,40,25,15\ +0,166,62,156,151,100,84,171,149,34,234,242,148,224,128,197,159,188,199,248,158,\ +126,173,207,156,56,19,150,157,250,121,161,152,181,111,36,153,119,5, 19,155,49,1\ +87,74,154,243,209,125,141,137,53,48,140,75,95,7,142,13,225,94,143,207,139,105,1\ +38,128,157,236,139,66,247,219,137,4,73,130,136,198,35,181,131,154,100,136,130,8\ +8,14,191,128,30,176,230,129,220,218,209,132,147,204,84,133,81,166,99,135,23,24,\ +58,134,213,114,13,169,226,208,160,168,32,186,151,170,102,4,206,171,164,110,249,\ +174,235,120,124,175,41,18,75,173,111,172,18,172,173,198,37,167,241,129,24,166,5\ +1,235,47,164,117,85,118,165,183,63,65,160,248,41,196,161,58,67,243,163,124,253,\ +170,162,190,151, 157,181,196,115,208,180,6,25,231,182,64,167,190,183,130,205,13\ +7,178,205,219,12,179,15,177,59,177,73,15,98,176,139,101,85,187,215,34,104,186,2\ +1,72,95,184,83,246,6,185,145,156,49,188,222,138,180,189,28,224,131,191,90,94,21\ +8,190,152,52,237,0,0,0,0,184,188,103,101,170,9,200,139,18,181,175,238,143,98,15\ +1,87,55,222,240,50,37,107,95,220,157,215,56,185,197,180,40,239,125,8,79,138,111\ +,189,224,100,215,1,135,1,74,214,191,184,242,106,216,221,224,223,119,51,88,99,16\ +,86,80,25,87,159,232,165,48,250,250,16,159,20, 66,172,248,113,223,123,192,200,1\ +03,199,167,173,117,114,8,67,205,206,111,38,149,173,127,112,45,17,24,21,63,164,1\ +83,251,135,24,208,158,26,207,232,39,162,115,143,66,176,198,32,172,8,122,71,201,\ +160,50,175,62,24,142,200,91,10,59,103,181,178,135,0,208,47,80,56,105,151,236,95\ +,12,133,89,240,226,61,229,151,135,101,134,135,209,221,58,224,180,207,143,79,90,\ +119,51,40,63,234,228,16,134,82,88,119,227,64,237,216,13,248,81,191,104,240,43,2\ +48,161,72,151,159,196,90,34,48,42,226,158,87,79,127,73,111,246,199,245,8,147, 2\ +13,64,167,125,109,252,192,24,53,159,208,78,141,35,183,43,159,150,24,197,39,42,1\ +27,160,186,253,71,25,2,65,32,124,16,244,143,146,168,72,232,247,155,20,88,61,35,\ +168,63,88,49,29,144,182,137,161,247,211,20,118,207,106,172,202,168,15,190,127,7\ +,225,6,195,96,132,94,160,112,210,230,28,23,183,244,169,184,89,76,21,223,60,209,\ +194,231,133,105,126,128,224,123,203,47,14,195,119,72,107,203,13,15,162,115,177,\ +104,199,97,4,199,41,217,184,160,76,68,111,152,245,252,211,255,144,238,102,80,12\ +6,86,218,55,27,14,185,39,77, 182,5,64,40,164,176,239,198,28,12,136,163,129,219,\ +176,26,57,103,215,127,43,210,120,145,147,110,31,244,59,38,247,3,131,154,144,102\ +,145,47,63,136,41,147,88,237,180,68,96,84,12,248,7,49,30,77,168,223,166,241,207\ +,186,254,146,223,236,70,46,184,137,84,155,23,103,236,39,112,2,113,240,72,187,20\ +1,76,47,222,219,249,128,48,99,69,231,85,107,63,160,156,211,131,199,249,193,54,1\ +04,23,121,138,15,114,228,93,55,203,92,225,80,174,78,84,255,64,246,232,152,37,17\ +4,139,136,115,22,55,239,22,4,130,64,248,188,62,39,157,33, 233,31,36,153,85,120,\ +65,139,224,215,175,51,92,176,202,237,89,182,59,85,229,209,94,71,80,126,176,255,\ +236,25,213,98,59,33,108,218,135,70,9,200,50,233,231,112,142,142,130,40,237,158,\ +212,144,81,249,177,130,228,86,95,58,88,49,58,167,143,9,131,31,51,110,230,13,134\ +,193,8,181,58,166,109,189,64,225,164,5,252,134,193,23,73,41,47,175,245,78,74,50\ +,34,118,243,138,158,17,150,152,43,190,120,32,151,217,29,120,244,201,75,192,72,1\ +74,46,210,253,1,192,106,65,102,165,247,150,94,28,79,42,57,121,93,159,150,151,22\ +9,35,241, 242,77,107,25,5,245,215,126,96,231,98,209,142,95,222,182,235,194,9,14\ +2,82,122,181,233,55,104,0,70,217,208,188,33,188,136,223,49,234,48,99,86,143,34,\ +214,249,97,154,106,158,4,7,189,166,189,191,1,193,216,173,180,110,54,21,8,9,83,2\ +9,114,78,154,165,206,41,255,183,123,134,17,15,199,225,116,146,16,217,205,42,172\ +,190,168,56,25,17,70,128,165,118,35,216,198,102,117,96,122,1,16,114,207,174,254\ +,202,115,201,155,87,164,241,34,239,24,150,71,253,173,57,169,69,17,94,204,118,77\ +,238,6,206,241,137,99,220,68,38,141,100, 248,65,232,249,47,121,81,65,147,30,52,\ +83,38,177,218,235,154,214,191,179,249,198,233,11,69,161,140,25,240,14,98,161,76\ +,105,7,60,155,81,190,132,39,54,219,150,146,153,53,46,46,254,80,38,84,185,153,15\ +8,232,222,252,140,93,113,18,52,225,22,119,169,54,46,206,17,138,73,171,3,63,230,\ +69,187,131,129,32,227,224,145,118,91,92,246,19,73,233,89,253,241,85,62,152,108,\ +130,6,33,212,62,97,68,198,139,206,170,126,55,169,207,214,127,65,56,110,195,38,9\ +3,124,118,137,179,196,202,238,214,89,29,214,111,225,161,177,10,243,20, 30,228,7\ +5,168,121,129,19,203,105,215,171,119,14,178,185,194,161,92,1,126,198,57,156,169\ +,254,128,36,21,153,229,54,160,54,11,142,28,81,110,134,102,22,167,62,218,113,194\ +,44,111,222,44,148,211,185,73,9,4,129,240,177,184,230,149,163,13,73,123,27,177,\ +46,30,67,210,62,72,251,110,89,45,233,219,246,195,81,103,145,166,204,176,169,31,\ +116,12,206,122,102,185,97,148,222,5,6,241,0,0,0,0,0,0,0,0,6,0,0,0,4,0,4,0,8,0,4\ +,0,2,0,0,0,4,0,5,0,16,0,8,0,2,0,0,0,4,0,6,0,32,0,32,0,2,0,0,0,4,0,4,0,16,0,16,0\ +,4,0,0,0,8,0,16,0,32, 0,32,0,4,0,0,0,8,0,16,0,128,0,128,0,4,0,0,0,8,0,32,0,128,\ +0,0,1,4,0,0,0,32,0,128,0,2,1,0,4,4,0,0,0,32,0,2,1,2,1,0,16,4,0,0,0,16,17,18,0,8\ +,7,9,6,10,5,11,4,12,3,13,2,14,1,15,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,\ +0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,10,0,0,0,12,0,0,0,14,0,0,0,16,0,0,0,20,0,\ +0,0,24,0,0,0,28,0,0,0,32,0,0,0,40,0,0,0,48,0,0,0,56,0,0,0,64,0,0,0,80,0,0,0,96,\ +0,0,0,112,0,0,0,128,0,0,0,160,0,0,0,192,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\ +,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,6,0,0,0,8,0,0,0, 12,0,0,0,16,0,0,0,24,0,0,0,32\ +,0,0,0,48,0,0,0,64,0,0,0,96,0,0,0,128,0,0,0,192,0,0,0,0,1,0,0,128,1,0,0,0,2,0,0\ +,0,3,0,0,0,4,0,0,0,6,0,0,0,8,0,0,0,12,0,0,0,16,0,0,0,24,0,0,0,32,0,0,0,48,0,0,0\ +,64,0,0,0,96,0,0,98,117,102,102,101,114,32,101,114,114,111,114,0,0,0,0,105,110,\ +115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,0,0,0,0,0,115\ +,116,114,101,97,109,32,101,114,114,111,114,0,0,0,0,101,114,114,111,114,58,32,37\ +,100,92,110,0,0,0,0,0,115,116,114,99,109,112,40,98,117,102,102,101,114,44,32, 9\ +8,117,102,102,101,114,51,41,32,61,61,32,48,0,0,0,0,100,101,99,111,109,112,114,1\ +01,115,115,101,100,83,105,122,101,32,61,61,32,115,105,122,101,0,0,0,0,0,0,0,0,4\ +7,116,109,112,47,101,109,115,99,114,105,112,116,101,110,95,116,101,109,112,47,1\ +22,108,105,98,46,99,0,0,0,0,0,115,105,122,101,115,58,32,37,100,44,37,100,10,0,0\ +,0,0,1,2,3,4,5,6,7,8,8,9,9,10,10,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,1\ +5,15,15,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18\ +,19,19,19,19,19,19,19,19,20, 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21\ +,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,\ +22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,2\ +4,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25\ +,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,\ +25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,2\ +6,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27, 27,27,27,27,27,27,27,2\ +7,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\ +,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\ +,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\ +,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ +0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\ +,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\ +,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\ +,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7\ +,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,1\ +0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12\ +,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,\ +13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,1\ +3,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14\ +,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, 14,14,14,14,14\ +,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,\ +15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,1\ +5,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,1\ +6,17,18,18,19,19,20,20,20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,23,23,23\ +,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,\ +25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,2\ +6,26,26,26,26, 26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,2\ +7,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28\ +,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,\ +28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,2\ +8,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29\ +,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,\ +29,29,29,29,29,29,29,29,29,29,29,29,29,29, 29,29,29,100,111,105,116,0,0,0,0]),"\ +i8",Da,8);var Za=ra(P(12,"i8",O),8);z(0==Za%8);var $a=5,ab=6,bb=9,U=13,cb=21,db\ +=22,eb=0;function V(a){return L[eb>>2]=a}var fb=P(1,"i32*",O),W=P(1,"i32*",O),g\ +b=P(1,"i32*",O),hb=P(1,"i32*",O),ib=2,X=[r],jb=n;function kb(a,b){if("string"!=\ +=typeof a)return r;b===k&&(b="/");a&&"/"==a[0]&&(b="");for(var c=(b+"/"+a).spli\ +t("/").reverse(),d=[""];c.length;){var e=c.pop();""==e||"."==e||(".."==e?1c||\ +0>d)return V(db),-1;for(var e=a.object.a;e.lengthc)return V(db),-1;if(d.object.b){if(d.object.d){for(a=0;aa||0===a&&-Infinity===1/a} function Bb(a,b){function c(a){var c;"doubl\ +e"===a?c=N[b+e>>3]:"i64"==a?(c=[L[b+e>>2],L[b+(e+8)>>2]],e+=8):(a="i32",c=L[b+e\ +>>2]);e+=Math.max(Math.max(ja(a),x),8);return c}for(var d=a,e=0,f=[],g,i;;){var\ + l=d;g=J[d];if(0===g)break;i=J[d+1|0];if(37==g){var y=t,E=t,A=t,q=t;a:for(;;){s\ +witch(i){case 43:y=n;break;case 45:E=n;break;case 35:A=n;break;case 48:if(q)bre\ +ak a;else{q=n;break}default:break a}d++;i=J[d+1|0]}var B=0;if(42==i)B=c("i32"),\ +d++,i=J[d+1|0];else for(;48<=i&&57>=i;)B=10*B+(i-48),d++,i=J[d+ 1|0];var K=t;if\ +(46==i){var m=0,K=n;d++;i=J[d+1|0];if(42==i)m=c("i32"),d++;else for(;;){i=J[d+1\ +|0];if(48>i||57>>0)+4294967296*\ ++(g[1]>>>0):+(g[0]>>>0)+4294967296*+(g[1]|0));4>=p&&(g=(l?Ra:Qa)(g&Math.pow(256\ +,p)-1,8*p));var H=Math.abs(g),l="";if(100==i||105==i)h=Ra(g,8*p).toString(10);e\ +lse if(117==i)h=Qa(g,8*p).toString(10),g=Math.abs(g);else if(111==i)h=(A?"0":""\ +)+H.toString(8);else if(120==i||88==i){l=A&&0!=g?"0x":"";if(0>g){g=-g;h=(H-1).t\ +oString(16);H=[];for(A=0;Ag?"-"+l:"+"+l);l.length+h.\ +lengthp&&-4<=p?(i=(103==i?"f":"F").charCodeAt(0),m-=p+1):(i=(103==i?"e":"E").char\ +CodeAt(0),m--),p=Math.min(m,20);if(101==i||69==i)h=g.toExponential(p),/[eE][-+]\ +\\d$/.test(h)&&(h=h.slice(0,-1)+"0"+h.slice(-1));else if(102==i||70==i)h=g.toFi\ +xed(p),0===g&&Ab(g)&&(h="-"+h);l=h.split("e");if(K&&!A)for(;1p++;)l[0]+="0";h=l[0]+(1g?\ +"-":"")+"inf",q=t;for(;h.lengthi&&(h=h.toUpperCase());h.split("").forEach(functio\ +n(a){f.push(a.charCodeAt(0))});break;case "s":q=(y=c("i8*"))?zb(y):6;K&&(q=Math\ +.min(q,m));if(!E)for(;q>2]=f.length;break;case "%":f.push(g);break;default:for(A=l;\ +Af?1:-1}return 0}Module._memset=Eb\ +;Module._memcpy=Fb; function Z(a){Z.J||(D=D+4095>>12<<12,Z.J=n,z(pa),Z.I=pa,pa=\ +function(){F("cannot dynamically allocate, sbrk now has control")});var b=D;0!=\ +a&&Z.I(a);return b}function Gb(a,b){return xb(b,a,zb(a))}function Hb(a,b){var c\ +=Qa(a&255);J[Hb.D|0]=c;return-1==xb(b,Hb.D,1)?(X[b]&&(X[b].error=n),-1):c}var I\ +b=t,Jb=t,Kb=t,Lb=t,Mb=k,Nb=k,Ob=[];function Pb(){var a=Module.canvas;Ob.forEach\ +(function(b){b(a.width,a.height)})} function Qb(){var a=Module.canvas;this.S=a.\ +width;this.R=a.height;a.width=screen.width;a.height=screen.height;a=Ga[SDL.scre\ +en+0*x>>2];L[SDL.screen+0*x>>2]=a|8388608;Pb()}function Rb(){var a=Module.canva\ +s;a.width=this.S;a.height=this.R;a=Ga[SDL.screen+0*x>>2];L[SDL.screen+0*x>>2]=a\ +&-8388609;Pb()}var Sb,Tb,Ub,Vb; Ma.unshift({l:function(){if(!Module.noFSInit&&!\ +ub){var a,b,c,d=function(a){a===r||10===a?(b.h(b.buffer.join("")),b.buffer=[]):\ +b.buffer.push(i.B(a))};z(!ub,"FS.init was previously called. If you want to ini\ +tialize later with custom parameters, remove any earlier calls (note that one i\ +s automatically added to the generated code)");ub=n;ob();a=a||Module.stdin;b=b|\ +|Module.stdout;c=c||Module.stderr;var e=n,f=n,g=n;a||(e=t,a=function(){if(!a.j|\ +|!a.j.length){var b;"undefined"!=typeof window&&"function"== typeof window.prom\ +pt?(b=window.prompt("Input: "),b===r&&(b=String.fromCharCode(0))):"function"==t\ +ypeof readline&&(b=readline());b||(b="");a.j=S(b+"\\n",n)}return a.j.shift()});\ +var i=new ma;b||(f=t,b=d);b.h||(b.h=Module.print);b.buffer||(b.buffer=[]);c||(g\ +=t,c=d);c.h||(c.h=Module.print);c.buffer||(c.buffer=[]);try{qb("/","tmp",n,n)}c\ +atch(l){}var d=qb("/","dev",n,n),y=Y(d,"stdin",a),E=Y(d,"stdout",r,b);c=Y(d,"st\ +derr",r,c);Y(d,"tty",a,b);Y(d,"null",u(),u());X[1]={path:"/dev/stdin",object:y,\ +position:0, u:n,f:t,t:t,v:!e,error:t,q:t,F:[]};X[2]={path:"/dev/stdout",object:\ +E,position:0,u:t,f:n,t:t,v:!f,error:t,q:t,F:[]};X[3]={path:"/dev/stderr",object\ +:c,position:0,u:t,f:n,t:t,v:!g,error:t,q:t,F:[]};L[fb>>2]=1;L[W>>2]=2;L[gb>>2]=\ +3;rb("/","dev/shm/tmp",n,n);for(e=X.length;e>f-6&63,f=f-6,c=c+"ABCDEFGHIJKLMNOPQRSTUVWXYZabc\ +defghijklmnopqrstuvwxyz0123456789+/"[h]}2==f?(c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabc\ +defghijklmnopqrstuvwxyz0123456789+/"[(d&3)<<4],c+="=="):4==f&&(c+="ABCDEFGHIJKL\ +MNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(d& 15)<<2],c+="=");l.src\ +="data:audio/x-"+b.substr(-3)+";base64,"+c;e(l)}};l.src=i;setTimeout(function()\ +{G||e(l)},1E4)}else return f()}});var q=Module.canvas;q.n=q.requestPointerLock|\ +|q.mozRequestPointerLock||q.webkitRequestPointerLock;q.r=document.exitPointerLo\ +ck||document.mozExitPointerLock||document.webkitExitPointerLock||u();q.r=q.r.bi\ +nd(document);document.addEventListener("pointerlockchange",l,t);document.addEve\ +ntListener("mozpointerlockchange",l,t);document.addEventListener("webkitpointer\ +lockchange", l,t);Module.elementPointerLock&&q.addEventListener("click",functio\ +n(a){!Kb&&q.n&&(q.n(),a.preventDefault())},t)}for(var B,K=[a,b],m=K[0],p=1;pthis.length-1||0>a))\ +{var b=a%this.K;return this.L(Math.floor(a/this.K))[b]}};f.prototype.Q=function\ +(a){this.L=a};f.prototype.o=function(){var a=new XMLHttpRequest;a.open("HEAD",c\ +,t);a.send(r);200<=a.status&&300>a.status|| 304===a.status||j(Error("Couldn\'t \ +load "+c+". Status: "+a.status));var b=Number(a.getResponseHeader("Content-leng\ +th")),d,e=1048576;if(!((d=a.getResponseHeader("Accept-Ranges"))&&"bytes"===d))e\ +=b;var f=this;f.Q(function(a){var d=a*e,g=(a+1)*e-1,g=Math.min(g,b-1);if("undef\ +ined"===typeof f.e[a]){var l=f.e;d>g&&j(Error("invalid range ("+d+", "+g+") or \ +no bytes requested!"));g>b-1&&j(Error("only "+b+" bytes available! programmer e\ +rror!"));var m=new XMLHttpRequest;m.open("GET",c,t);b!==e&&m.setRequestHeader("\ +Range", "bytes="+d+"-"+g);"undefined"!=typeof Uint8Array&&(m.responseType="arra\ +ybuffer");m.overrideMimeType&&m.overrideMimeType("text/plain; charset=x-user-de\ +fined");m.send(r);200<=m.status&&300>m.status||304===m.status||j(Error("Couldn\ +\'t load "+c+". Status: "+m.status));d=m.response!==k?new Uint8Array(m.response\ +||[]):S(m.responseText||"",n);l[a]=d}"undefined"===typeof f.e[a]&&j(Error("doXH\ +R failed!"));return f.e[a]});this.H=b;this.G=e;this.m=n};f=new f;Object.defineP\ +roperty(f,"length",{get:function(){this.m|| this.o();return this.H}});Object.de\ +fineProperty(f,"chunkSize",{get:function(){this.m||this.o();return this.G}});f=\ +{b:t,a:f}}else f={b:t,url:c};return sb(a,b,f,d,e)};Module.FS_createLink=functio\ +n(a,b,c,d,e){return sb(a,b,{b:t,link:c},d,e)};Module.FS_createDevice=Y;eb=oa(4)\ +;L[eb>>2]=0;Hb.D=P([0],"i8",O); Module.requestFullScreen=function(a,b){function\ + c(){Jb=t;(document.webkitFullScreenElement||document.webkitFullscreenElement||\ +document.mozFullScreenElement||document.mozFullscreenElement||document.fullScre\ +enElement||document.fullscreenElement)===d?(d.p=document.cancelFullScreen||docu\ +ment.mozCancelFullScreen||document.webkitCancelFullScreen,d.p=d.p.bind(document\ +),Mb&&d.n(),Jb=n,Nb&&Qb()):Nb&&Rb();if(Module.onFullScreen)Module.onFullScreen(\ +Jb)}Mb=a;Nb=b;"undefined"===typeof Mb&&(Mb=n);"undefined"=== typeof Nb&&(Nb=t);\ +var d=Module.canvas;Lb||(Lb=n,document.addEventListener("fullscreenchange",c,t)\ +,document.addEventListener("mozfullscreenchange",c,t),document.addEventListener\ +("webkitfullscreenchange",c,t));d.P=d.requestFullScreen||d.mozRequestFullScreen\ +||(d.webkitRequestFullScreen?function(){d.webkitRequestFullScreen(Element.ALLOW\ +_KEYBOARD_INPUT)}:r);d.P()}; Module.requestAnimationFrame=function(a){window.re\ +questAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame\ +||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.m\ +sRequestAnimationFrame||window.oRequestAnimationFrame||window.setTimeout);windo\ +w.requestAnimationFrame(a)};Module.pauseMainLoop=u();Module.resumeMainLoop=func\ +tion(){Ib&&(Ib=t,r())};Module.getUserMedia=function(){window.s||(window.s=navig\ +ator.getUserMedia||navigator.mozGetUserMedia);window.s(k)}; Ia=w=ra(C);Ja=Ia+52\ +42880;Ka=D=ra(Ja);z(Ka>3<<3;return b|0}function aO\ +(){return i|0}function aP(a){a=a|0;i=a}function aQ(a,b){a=a|0;b=b|0;if((o|0)==0\ +){o=a;p=b}}function aR(b){b=b|0;a[k]=a[b];a[k+1|0]=a[b+1|0];a[k+2|0]=a[b+2|0];a\ +[k+3|0]=a[b+3|0]}function aS(b){b=b|0;a[k]=a[b];a[k+1|0]=a[b+1|0];a[k+2|0]=a[b+\ +2|0];a[k+3|0]=a[b+3|0];a[k+4|0]=a[b+4|0];a[k+5|0]=a[b+5|0];a[k+6|0]=a[b+6|0];a[\ +k+7|0]=a[b+7|0]}function aT(a){a=a|0;B=a}function aU(a){a=a|0;C=a}function aV(a\ +){a=a|0;D=a}function aW(a){a=a|0;E=a}function aX(a){a=a|0;F=a}function aY(a){a=\ +a|0;G=a}function aZ(a){a=a|0;H=a}function a_(a){a=a|0;I=a}function a$(a){a=a|0;\ +J=a}function a0(a){a=a|0;K=a}function a1(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m\ +=0,n=0,o=0,p=0,q=0,r=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,\ +H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0\ +,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ap=0\ +,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,aA=0,aB=0,aC=0,aD=0,aF=0,aH=0,aI=\ +0,aL=0,aN=0,aO=0,aP=0,aQ=0,aR=0,aS=0,aT=0,aU=0,aV=0,aW=0,aX=0,aY=0,aZ=0,a_=0,a$\ +=0,a0=0,a1=0,a2=0,a4=0,a5=0,a6=0,a8=0,bb=0,bc=0,bd=0,be=0,bl=0,bo=0,bp=0,bq=0,b\ +r=0,bs=0,bt=0,bu=0,bv=0,bw=0,bx=0,by=0,bz=0,bA=0,bB=0,bC=0,bD=0,bE=0,bF=0,bG=0,\ +bH=0,bI=0,bJ=0,bK=0,bL=0,bM=0,bN=0,bO=0,bP=0,bQ=0,bR=0,bS=0,bT=0,bU=0,bV=0,bW=0\ +,bX=0,bY=0,bZ=0,b_=0,b$=0,b0=0,b1=0,b2=0,b3=0,b4=0,b5=0,b6=0,b7=0,b8=0,b9=0,ca=\ +0,cb=0,cc=0,cd=0,ce=0,cf=0,cg=0,ch=0,ci=0,cj=0,ck=0,cl=0,cm=0,cn=0,co=0,cp=0,cq\ +=0,cr=0,cs=0,ct=0,cu=0,cv=0,cw=0,cx=0,cy=0,cz=0,cA=0,cB=0,cC=0,cD=0,cE=0,cF=0,c\ +G=0,cH=0,cI=0,cJ=0,cK=0,cL=0,cM=0,cN=0,cO=0,cP=0,cQ=0,cR=0,cS=0,cT=0,cU=0,cV=0,\ +cW=0,cX=0,cY=0,cZ=0,c_=0,c$=0,c0=0,c1=0,c2=0,c3=0,c4=0,c5=0,c6=0,c7=0,c8=0,c9=0\ +,da=0,db=0,dc=0,dd=0,de=0,df=0,dg=0,dh=0,di=0,dj=0,dk=0,dl=0,dm=0,dn=0,dp=0,dq=\ +0,dr=0,ds=0,dt=0,du=0,dv=0,dw=0,dx=0,dy=0,dz=0,dA=0,dB=0,dC=0,dD=0,dE=0,dF=0,dG\ +=0,dH=0,dI=0,dJ=0,dK=0,dL=0,dM=0,dN=0,dO=0,dP=0,dQ=0,dR=0,dS=0,dT=0,dU=0,dV=0,d\ +W=0,dX=0,dY=0,dZ=0,d_=0,d$=0,d0=0,d1=0,d2=0,d3=0,d4=0,d5=0,d6=0,d7=0,d8=0,d9=0,\ +ea=0,eb=0,ec=0,ed=0,ee=0,ef=0,eg=0,eh=0,ei=0,ej=0,ek=0,el=0,em=0,en=0,eo=0,ep=0\ +,eq=0,er=0,es=0,et=0,eu=0,ev=0,ew=0,ex=0,ey=0,ez=0,eA=0,eB=0,eC=0,eD=0,eE=0,eF=\ +0,eG=0,eH=0,eI=0,eJ=0,eK=0,eL=0,eM=0,eN=0,eO=0,eP=0,eQ=0,eR=0,eS=0,eT=0,eU=0,eV\ +=0,eW=0,eX=0,eY=0,eZ=0,e_=0,e$=0,e0=0,e1=0,e2=0,e3=0,e4=0,e5=0,e6=0,e7=0,e8=0,e\ +9=0,fa=0,fb=0,fc=0,fd=0,fe=0,ff=0,fg=0,fh=0,fi=0,fj=0,fk=0,fl=0,fm=0,fn=0,fo=0,\ +fp=0,fq=0,fr=0,fs=0,ft=0,fu=0,fv=0,fw=0,fx=0,fy=0,fz=0,fA=0,fB=0,fC=0,fD=0,fE=0\ +,fF=0,fG=0,fH=0,fI=0,fJ=0,fK=0,fL=0,fM=0,fN=0,fO=0,fP=0,fQ=0,fR=0,fS=0,fT=0,fU=\ +0,fV=0,fW=0,fX=0,fY=0,fZ=0,f_=0,f$=0,f0=0,f1=0,f2=0,f3=0,f4=0,f5=0,f6=0,f7=0,f8\ +=0,f9=0,ga=0,gb=0,gc=0,gd=0,ge=0,gf=0,gg=0,gh=0,gi=0,gj=0,gk=0,gl=0,gm=0,gn=0,g\ +o=0,gp=0,gq=0,gr=0,gs=0,gt=0,gu=0,gv=0,gw=0,gx=0,gy=0,gz=0,gA=0,gB=0,gC=0,gD=0,\ +gE=0,gF=0,gG=0,gH=0,gI=0,gJ=0,gK=0,gL=0,gM=0,gN=0,gO=0,gP=0,gQ=0,gR=0,gS=0,gT=0\ +,gU=0,gV=0,gW=0,gX=0,gY=0,gZ=0,g_=0,g$=0,g0=0,g1=0,g2=0,g3=0,g4=0,g5=0,g6=0,g7=\ +0,g8=0,g9=0,ha=0;h=i;i=i+64|0;j=h|0;k=h+8|0;l=c[1046]|0;if((l|0)==0){m=bk(10004\ +3)|0;c[1046]=m;n=m}else{n=l}if((c[1044]|0)==0){c[1044]=bk(1e5)|0;o=c[1046]|0}el\ +se{o=n}n=k|0;c[n>>2]=f;l=k+4|0;c[l>>2]=1e5;m=k+12|0;c[m>>2]=o;o=k+16|0;c[o>>2]=\ +100043;p=k+32|0;c[p>>2]=0;q=k+36|0;c[q>>2]=0;r=k+40|0;c[r>>2]=0;t=k+24|0;c[t>>2\ +]=0;c[p>>2]=2;c[r>>2]=0;c[q>>2]=2;u=bf(0,1,5828)|0;L7:do{if((u|0)==0){v=100043}\ +else{w=k+28|0;c[w>>2]=u;c[u>>2]=k;c[u+24>>2]=1;c[u+28>>2]=0;c[u+48>>2]=15;x=u+4\ +4|0;c[x>>2]=32768;c[u+52>>2]=32767;c[u+80>>2]=15;y=u+76|0;c[y>>2]=32768;c[u+84>\ +>2]=32767;c[u+88>>2]=5;z=u+56|0;c[z>>2]=aK[c[p>>2]&3](c[r>>2]|0,32768,2)|0;A=aK\ +[c[p>>2]&3](c[r>>2]|0,c[x>>2]|0,2)|0;B=u+64|0;c[B>>2]=A;bm(A|0,0,c[x>>2]<<1|0);\ +x=u+68|0;c[x>>2]=aK[c[p>>2]&3](c[r>>2]|0,c[y>>2]|0,2)|0;c[u+5824>>2]=0;y=u+5788\ +|0;c[y>>2]=16384;A=aK[c[p>>2]&3](c[r>>2]|0,16384,4)|0;C=A;c[u+8>>2]=A;D=c[y>>2]\ +|0;c[u+12>>2]=D<<2;do{if((c[z>>2]|0)!=0){if((c[B>>2]|0)==0){break}if((c[x>>2]|0\ +)==0|(A|0)==0){break}c[u+5796>>2]=C+(D>>>1<<1);c[u+5784>>2]=A+(D*3&-1);c[u+132>\ +>2]=6;c[u+136>>2]=0;a[u+36|0]=8;y=c[w>>2]|0;if((y|0)==0){v=100043;break L7}if((\ +c[p>>2]|0)==0){v=100043;break L7}if((c[q>>2]|0)==0){v=100043;break L7}E=k+20|0;\ +c[E>>2]=0;F=k+8|0;c[F>>2]=0;c[t>>2]=0;c[k+44>>2]=2;c[y+20>>2]=0;c[y+16>>2]=c[y+\ +8>>2];G=y+24|0;H=c[G>>2]|0;if((H|0)<0){I=-H|0;c[G>>2]=I;J=I}else{J=H}c[y+4>>2]=\ +(J|0)!=0?42:113;H=k+48|0;c[H>>2]=(J|0)!=2&1;c[y+40>>2]=0;c[y+2840>>2]=y+148;c[y\ ++2848>>2]=1168;c[y+2852>>2]=y+2440;c[y+2860>>2]=1312;c[y+2864>>2]=y+2684;c[y+28\ +72>>2]=1336;b[y+5816>>1]=0;c[y+5820>>2]=0;c[y+5812>>2]=8;a7(y);c[y+60>>2]=c[y+4\ +4>>2]<<1;I=y+76|0;G=y+68|0;b[(c[G>>2]|0)+((c[I>>2]|0)-1<<1)>>1]=0;bm(c[G>>2]|0,\ +0,(c[I>>2]<<1)-2|0);I=c[y+132>>2]|0;c[y+128>>2]=e[12386+(I*12&-1)>>1]|0;c[y+140\ +>>2]=e[12384+(I*12&-1)>>1]|0;c[y+144>>2]=e[12388+(I*12&-1)>>1]|0;c[y+124>>2]=e[\ +12390+(I*12&-1)>>1]|0;c[y+108>>2]=0;c[y+92>>2]=0;c[y+116>>2]=0;c[y+120>>2]=2;c[\ +y+96>>2]=2;c[y+112>>2]=0;c[y+104>>2]=0;c[y+72>>2]=0;y=c[w>>2]|0;I=y;if((y|0)==0\ +){v=100043;break L7}L20:do{if((c[m>>2]|0)==0){K=30}else{if((c[n>>2]|0)==0){if((\ +c[l>>2]|0)!=0){K=30;break}}G=y+4|0;L=c[G>>2]|0;if((c[o>>2]|0)==0){c[t>>2]=12768\ +;break}M=y;c[y>>2]=k;N=y+40|0;c[N>>2]=4;do{if((L|0)==42){if((c[y+24>>2]|0)!=2){\ +O=(c[y+48>>2]<<12)-30720|0;do{if((c[y+136>>2]|0)>1){P=0}else{Q=c[y+132>>2]|0;if\ +((Q|0)<2){P=0;break}if((Q|0)<6){P=64;break}P=(Q|0)==6?128:192}}while(0);Q=P|O;R\ +=y+108|0;S=(c[R>>2]|0)==0?Q:Q|32;Q=(S|(S>>>0)%31>>>0)^31;c[G>>2]=113;S=y+20|0;T\ +=c[S>>2]|0;c[S>>2]=T+1;U=y+8|0;a[(c[U>>2]|0)+T|0]=Q>>>8&255;T=c[S>>2]|0;c[S>>2]\ +=T+1;a[(c[U>>2]|0)+T|0]=Q&255;if((c[R>>2]|0)!=0){R=c[H>>2]|0;Q=c[S>>2]|0;c[S>>2\ +]=Q+1;a[(c[U>>2]|0)+Q|0]=R>>>24&255;Q=c[S>>2]|0;c[S>>2]=Q+1;a[(c[U>>2]|0)+Q|0]=\ +R>>>16&255;R=c[H>>2]|0;Q=c[S>>2]|0;c[S>>2]=Q+1;a[(c[U>>2]|0)+Q|0]=R>>>8&255;Q=c\ +[S>>2]|0;c[S>>2]=Q+1;a[(c[U>>2]|0)+Q|0]=R&255}c[H>>2]=1;V=c[G>>2]|0;K=54;break}\ +c[H>>2]=0;R=y+20|0;Q=c[R>>2]|0;c[R>>2]=Q+1;U=y+8|0;a[(c[U>>2]|0)+Q|0]=31;Q=c[R>\ +>2]|0;c[R>>2]=Q+1;a[(c[U>>2]|0)+Q|0]=-117;Q=c[R>>2]|0;c[R>>2]=Q+1;a[(c[U>>2]|0)\ ++Q|0]=8;Q=y+28|0;S=c[Q>>2]|0;if((S|0)==0){T=c[R>>2]|0;c[R>>2]=T+1;a[(c[U>>2]|0)\ ++T|0]=0;T=c[R>>2]|0;c[R>>2]=T+1;a[(c[U>>2]|0)+T|0]=0;T=c[R>>2]|0;c[R>>2]=T+1;a[\ +(c[U>>2]|0)+T|0]=0;T=c[R>>2]|0;c[R>>2]=T+1;a[(c[U>>2]|0)+T|0]=0;T=c[R>>2]|0;c[R\ +>>2]=T+1;a[(c[U>>2]|0)+T|0]=0;T=c[y+132>>2]|0;do{if((T|0)==9){W=2}else{if((c[y+\ +136>>2]|0)>1){W=4;break}W=(T|0)<2?4:0}}while(0);T=c[R>>2]|0;c[R>>2]=T+1;a[(c[U>\ +>2]|0)+T|0]=W;T=c[R>>2]|0;c[R>>2]=T+1;a[(c[U>>2]|0)+T|0]=3;c[G>>2]=113;break}T=\ +((c[S+44>>2]|0)!=0?2:0)|(c[S>>2]|0)!=0&1|((c[S+16>>2]|0)==0?0:4)|((c[S+28>>2]|0\ +)==0?0:8)|((c[S+36>>2]|0)==0?0:16);O=c[R>>2]|0;c[R>>2]=O+1;a[(c[U>>2]|0)+O|0]=T\ +;T=c[(c[Q>>2]|0)+4>>2]&255;O=c[R>>2]|0;c[R>>2]=O+1;a[(c[U>>2]|0)+O|0]=T;T=(c[(c\ +[Q>>2]|0)+4>>2]|0)>>>8&255;O=c[R>>2]|0;c[R>>2]=O+1;a[(c[U>>2]|0)+O|0]=T;T=(c[(c\ +[Q>>2]|0)+4>>2]|0)>>>16&255;O=c[R>>2]|0;c[R>>2]=O+1;a[(c[U>>2]|0)+O|0]=T;T=(c[(\ +c[Q>>2]|0)+4>>2]|0)>>>24&255;O=c[R>>2]|0;c[R>>2]=O+1;a[(c[U>>2]|0)+O|0]=T;T=c[y\ ++132>>2]|0;do{if((T|0)==9){X=2}else{if((c[y+136>>2]|0)>1){X=4;break}X=(T|0)<2?4\ +:0}}while(0);T=c[R>>2]|0;c[R>>2]=T+1;a[(c[U>>2]|0)+T|0]=X;T=c[(c[Q>>2]|0)+12>>2\ +]&255;S=c[R>>2]|0;c[R>>2]=S+1;a[(c[U>>2]|0)+S|0]=T;T=c[Q>>2]|0;if((c[T+16>>2]|0\ +)==0){Y=T}else{S=c[T+20>>2]&255;T=c[R>>2]|0;c[R>>2]=T+1;a[(c[U>>2]|0)+T|0]=S;S=\ +(c[(c[Q>>2]|0)+20>>2]|0)>>>8&255;T=c[R>>2]|0;c[R>>2]=T+1;a[(c[U>>2]|0)+T|0]=S;Y\ +=c[Q>>2]|0}if((c[Y+44>>2]|0)!=0){c[H>>2]=bi(c[H>>2]|0,c[U>>2]|0,c[R>>2]|0)|0}c[\ +y+32>>2]=0;c[G>>2]=69;Z=Q;K=56}else{V=L;K=54}}while(0);do{if((K|0)==54){if((V|0\ +)!=69){_=V;K=77;break}Z=y+28|0;K=56}}while(0);do{if((K|0)==56){L=c[Z>>2]|0;if((\ +c[L+16>>2]|0)==0){c[G>>2]=73;$=L;K=79;break}S=y+20|0;T=c[S>>2]|0;O=y+32|0;aa=c[\ +O>>2]|0;L66:do{if(aa>>>0<(c[L+20>>2]&65535)>>>0){ab=y+12|0;ac=y+8|0;ad=T;ae=L;a\ +f=T;ag=aa;while(1){if((af|0)==(c[ab>>2]|0)){if((c[ae+44>>2]|0)!=0&af>>>0>ad>>>0\ +){c[H>>2]=bi(c[H>>2]|0,(c[ac>>2]|0)+ad|0,af-ad|0)|0}ah=c[w>>2]|0;ai=c[ah+20>>2]\ +|0;aj=c[o>>2]|0;ak=ai>>>0>aj>>>0?aj:ai;do{if((ak|0)!=0){ai=c[m>>2]|0;aj=c[ah+16\ +>>2]|0;bn(ai|0,aj|0,ak)|0;c[m>>2]=(c[m>>2]|0)+ak;aj=(c[w>>2]|0)+16|0;c[aj>>2]=(\ +c[aj>>2]|0)+ak;c[E>>2]=(c[E>>2]|0)+ak;c[o>>2]=(c[o>>2]|0)-ak;aj=(c[w>>2]|0)+20|\ +0;c[aj>>2]=(c[aj>>2]|0)-ak;aj=c[w>>2]|0;if((c[aj+20>>2]|0)!=0){break}c[aj+16>>2\ +]=c[aj+8>>2]}}while(0);al=c[S>>2]|0;if((al|0)==(c[ab>>2]|0)){break}am=al;an=al;\ +ap=c[O>>2]|0;aq=c[Z>>2]|0}else{am=ad;an=af;ap=ag;aq=ae}ak=a[(c[aq+16>>2]|0)+ap|\ +0]|0;c[S>>2]=an+1;a[(c[ac>>2]|0)+an|0]=ak;ak=(c[O>>2]|0)+1|0;c[O>>2]=ak;ah=c[Z>\ +>2]|0;if(ak>>>0>=(c[ah+20>>2]&65535)>>>0){ar=am;as=ah;break L66}ad=am;ae=ah;af=\ +c[S>>2]|0;ag=ak}ar=al;as=c[Z>>2]|0}else{ar=T;as=L}}while(0);do{if((c[as+44>>2]|\ +0)==0){at=as}else{L=c[S>>2]|0;if(L>>>0<=ar>>>0){at=as;break}c[H>>2]=bi(c[H>>2]|\ +0,(c[y+8>>2]|0)+ar|0,L-ar|0)|0;at=c[Z>>2]|0}}while(0);if((c[O>>2]|0)==(c[at+20>\ +>2]|0)){c[O>>2]=0;c[G>>2]=73;$=at;K=79;break}else{_=c[G>>2]|0;K=77;break}}}whil\ +e(0);do{if((K|0)==77){if((_|0)!=73){au=_;K=97;break}$=c[y+28>>2]|0;K=79}}while(\ +0);do{if((K|0)==79){S=y+28|0;if((c[$+28>>2]|0)==0){c[G>>2]=91;av=S;K=99;break}L\ +=y+20|0;T=c[L>>2]|0;aa=y+12|0;Q=y+8|0;R=y+32|0;U=T;ag=T;while(1){if((ag|0)==(c[\ +aa>>2]|0)){if((c[(c[S>>2]|0)+44>>2]|0)!=0&ag>>>0>U>>>0){c[H>>2]=bi(c[H>>2]|0,(c\ +[Q>>2]|0)+U|0,ag-U|0)|0}T=c[w>>2]|0;af=c[T+20>>2]|0;ae=c[o>>2]|0;ad=af>>>0>ae>>\ +>0?ae:af;do{if((ad|0)!=0){af=c[m>>2]|0;ae=c[T+16>>2]|0;bn(af|0,ae|0,ad)|0;c[m>>\ +2]=(c[m>>2]|0)+ad;ae=(c[w>>2]|0)+16|0;c[ae>>2]=(c[ae>>2]|0)+ad;c[E>>2]=(c[E>>2]\ +|0)+ad;c[o>>2]=(c[o>>2]|0)-ad;ae=(c[w>>2]|0)+20|0;c[ae>>2]=(c[ae>>2]|0)-ad;ae=c\ +[w>>2]|0;if((c[ae+20>>2]|0)!=0){break}c[ae+16>>2]=c[ae+8>>2]}}while(0);ad=c[L>>\ +2]|0;if((ad|0)==(c[aa>>2]|0)){aw=1;ax=ad;break}else{ay=ad;aA=ad}}else{ay=U;aA=a\ +g}ad=c[R>>2]|0;c[R>>2]=ad+1;T=a[(c[(c[S>>2]|0)+28>>2]|0)+ad|0]|0;c[L>>2]=aA+1;a\ +[(c[Q>>2]|0)+aA|0]=T;if(T<<24>>24==0){aw=0;ax=ay;break}U=ay;ag=c[L>>2]|0}do{if(\ +(c[(c[S>>2]|0)+44>>2]|0)!=0){ag=c[L>>2]|0;if(ag>>>0<=ax>>>0){break}c[H>>2]=bi(c\ +[H>>2]|0,(c[Q>>2]|0)+ax|0,ag-ax|0)|0}}while(0);if((aw|0)==0){c[R>>2]=0;c[G>>2]=\ +91;av=S;K=99;break}else{au=c[G>>2]|0;K=97;break}}}while(0);do{if((K|0)==97){if(\ +(au|0)!=91){aB=au;K=117;break}av=y+28|0;K=99}}while(0);do{if((K|0)==99){if((c[(\ +c[av>>2]|0)+36>>2]|0)==0){c[G>>2]=103;aC=av;K=119;break}Q=y+20|0;L=c[Q>>2]|0;ag\ +=y+12|0;U=y+8|0;aa=y+32|0;O=L;T=L;while(1){if((T|0)==(c[ag>>2]|0)){if((c[(c[av>\ +>2]|0)+44>>2]|0)!=0&T>>>0>O>>>0){c[H>>2]=bi(c[H>>2]|0,(c[U>>2]|0)+O|0,T-O|0)|0}\ +L=c[w>>2]|0;ad=c[L+20>>2]|0;ae=c[o>>2]|0;af=ad>>>0>ae>>>0?ae:ad;do{if((af|0)!=0\ +){ad=c[m>>2]|0;ae=c[L+16>>2]|0;bn(ad|0,ae|0,af)|0;c[m>>2]=(c[m>>2]|0)+af;ae=(c[\ +w>>2]|0)+16|0;c[ae>>2]=(c[ae>>2]|0)+af;c[E>>2]=(c[E>>2]|0)+af;c[o>>2]=(c[o>>2]|\ +0)-af;ae=(c[w>>2]|0)+20|0;c[ae>>2]=(c[ae>>2]|0)-af;ae=c[w>>2]|0;if((c[ae+20>>2]\ +|0)!=0){break}c[ae+16>>2]=c[ae+8>>2]}}while(0);af=c[Q>>2]|0;if((af|0)==(c[ag>>2\ +]|0)){aD=1;aF=af;break}else{aH=af;aI=af}}else{aH=O;aI=T}af=c[aa>>2]|0;c[aa>>2]=\ +af+1;L=a[(c[(c[av>>2]|0)+36>>2]|0)+af|0]|0;c[Q>>2]=aI+1;a[(c[U>>2]|0)+aI|0]=L;i\ +f(L<<24>>24==0){aD=0;aF=aH;break}O=aH;T=c[Q>>2]|0}do{if((c[(c[av>>2]|0)+44>>2]|\ +0)!=0){T=c[Q>>2]|0;if(T>>>0<=aF>>>0){break}c[H>>2]=bi(c[H>>2]|0,(c[U>>2]|0)+aF|\ +0,T-aF|0)|0}}while(0);if((aD|0)==0){c[G>>2]=103;aC=av;K=119;break}else{aB=c[G>>\ +2]|0;K=117;break}}}while(0);do{if((K|0)==117){if((aB|0)!=103){break}aC=y+28|0;K\ +=119}}while(0);do{if((K|0)==119){if((c[(c[aC>>2]|0)+44>>2]|0)==0){c[G>>2]=113;b\ +reak}U=y+20|0;Q=y+12|0;do{if(((c[U>>2]|0)+2|0)>>>0>(c[Q>>2]|0)>>>0){T=c[w>>2]|0\ +;O=c[T+20>>2]|0;aa=c[o>>2]|0;ag=O>>>0>aa>>>0?aa:O;if((ag|0)==0){break}O=c[m>>2]\ +|0;aa=c[T+16>>2]|0;bn(O|0,aa|0,ag)|0;c[m>>2]=(c[m>>2]|0)+ag;aa=(c[w>>2]|0)+16|0\ +;c[aa>>2]=(c[aa>>2]|0)+ag;c[E>>2]=(c[E>>2]|0)+ag;c[o>>2]=(c[o>>2]|0)-ag;aa=(c[w\ +>>2]|0)+20|0;c[aa>>2]=(c[aa>>2]|0)-ag;ag=c[w>>2]|0;if((c[ag+20>>2]|0)!=0){break\ +}c[ag+16>>2]=c[ag+8>>2]}}while(0);ag=c[U>>2]|0;if((ag+2|0)>>>0>(c[Q>>2]|0)>>>0)\ +{break}aa=c[H>>2]&255;c[U>>2]=ag+1;O=y+8|0;a[(c[O>>2]|0)+ag|0]=aa;aa=(c[H>>2]|0\ +)>>>8&255;ag=c[U>>2]|0;c[U>>2]=ag+1;a[(c[O>>2]|0)+ag|0]=aa;c[H>>2]=0;c[G>>2]=11\ +3}}while(0);aa=y+20|0;do{if((c[aa>>2]|0)==0){ag=c[l>>2]|0;aL=(ag|0)==0?0:ag}els\ +e{ag=c[w>>2]|0;O=c[ag+20>>2]|0;T=c[o>>2]|0;S=O>>>0>T>>>0?T:O;if((S|0)==0){aN=T}\ +else{T=c[m>>2]|0;O=c[ag+16>>2]|0;bn(T|0,O|0,S)|0;c[m>>2]=(c[m>>2]|0)+S;O=(c[w>>\ +2]|0)+16|0;c[O>>2]=(c[O>>2]|0)+S;c[E>>2]=(c[E>>2]|0)+S;c[o>>2]=(c[o>>2]|0)-S;O=\ +(c[w>>2]|0)+20|0;c[O>>2]=(c[O>>2]|0)-S;S=c[w>>2]|0;if((c[S+20>>2]|0)==0){c[S+16\ +>>2]=c[S+8>>2]}aN=c[o>>2]|0}if((aN|0)==0){c[N>>2]=-1;break L20}else{aL=c[l>>2]|\ +0;break}}}while(0);S=(c[G>>2]|0)==666;O=(aL|0)==0;do{if(S){if(O){K=140;break}c[\ +t>>2]=12768;break L20}else{if(O){K=140}else{K=141}}}while(0);if((K|0)==140){if(\ +(c[y+116>>2]|0)==0^1|S^1){K=141}}L183:do{if((K|0)==141){O=c[y+136>>2]|0;L185:do\ +{if((O|0)==2){T=y+116|0;ag=y+96|0;R=y+108|0;L=y+56|0;af=y+5792|0;ae=y+5796|0;ad\ +=y+5784|0;ac=y+5788|0;ab=y+92|0;ak=y;while(1){if((c[T>>2]|0)==0){a3(I);if((c[T>\ +>2]|0)==0){break}}c[ag>>2]=0;ah=a[(c[L>>2]|0)+(c[R>>2]|0)|0]|0;b[(c[ae>>2]|0)+(\ +c[af>>2]<<1)>>1]=0;aj=c[af>>2]|0;c[af>>2]=aj+1;a[(c[ad>>2]|0)+aj|0]=ah;aj=I+148\ ++((ah&255)<<2)|0;b[aj>>1]=(b[aj>>1]|0)+1&65535;aj=(c[af>>2]|0)==((c[ac>>2]|0)-1\ +|0);c[T>>2]=(c[T>>2]|0)-1;ah=(c[R>>2]|0)+1|0;c[R>>2]=ah;if(!aj){continue}aj=c[a\ +b>>2]|0;if((aj|0)>-1){aO=(c[L>>2]|0)+aj|0}else{aO=0}ba(ak,aO,ah-aj|0,0);c[ab>>2\ +]=c[R>>2];aj=c[M>>2]|0;ah=aj+28|0;ai=c[ah>>2]|0;aP=c[ai+20>>2]|0;aQ=aj+16|0;aR=\ +c[aQ>>2]|0;aS=aP>>>0>aR>>>0?aR:aP;do{if((aS|0)!=0){aP=aj+12|0;aR=c[aP>>2]|0;aT=\ +c[ai+16>>2]|0;bn(aR|0,aT|0,aS)|0;c[aP>>2]=(c[aP>>2]|0)+aS;aP=(c[ah>>2]|0)+16|0;\ +c[aP>>2]=(c[aP>>2]|0)+aS;aP=aj+20|0;c[aP>>2]=(c[aP>>2]|0)+aS;c[aQ>>2]=(c[aQ>>2]\ +|0)-aS;aP=(c[ah>>2]|0)+20|0;c[aP>>2]=(c[aP>>2]|0)-aS;aP=c[ah>>2]|0;if((c[aP+20>\ +>2]|0)!=0){break}c[aP+16>>2]=c[aP+8>>2]}}while(0);if((c[(c[M>>2]|0)+16>>2]|0)==\ +0){break L185}}T=c[ab>>2]|0;if((T|0)>-1){aU=(c[L>>2]|0)+T|0}else{aU=0}ba(ak,aU,\ +(c[R>>2]|0)-T|0,1);c[ab>>2]=c[R>>2];T=c[M>>2]|0;ac=T+28|0;af=c[ac>>2]|0;ad=c[af\ ++20>>2]|0;ae=T+16|0;ag=c[ae>>2]|0;ah=ad>>>0>ag>>>0?ag:ad;do{if((ah|0)!=0){ad=T+\ +12|0;ag=c[ad>>2]|0;aS=c[af+16>>2]|0;bn(ag|0,aS|0,ah)|0;c[ad>>2]=(c[ad>>2]|0)+ah\ +;ad=(c[ac>>2]|0)+16|0;c[ad>>2]=(c[ad>>2]|0)+ah;ad=T+20|0;c[ad>>2]=(c[ad>>2]|0)+\ +ah;c[ae>>2]=(c[ae>>2]|0)-ah;ad=(c[ac>>2]|0)+20|0;c[ad>>2]=(c[ad>>2]|0)-ah;ad=c[\ +ac>>2]|0;if((c[ad+20>>2]|0)!=0){break}c[ad+16>>2]=c[ad+8>>2]}}while(0);aV=(c[(c\ +[M>>2]|0)+16>>2]|0)==0?2:3;K=193}else if((O|0)==3){ac=y+116|0;ah=y+96|0;ae=y+10\ +8|0;T=y+5792|0;af=y+5796|0;R=y+5784|0;ab=y+2440|0;ak=y+5788|0;L=y+56|0;ad=y+92|\ +0;aS=y;L209:while(1){ag=c[ac>>2]|0;do{if(ag>>>0<258){a3(I);aQ=c[ac>>2]|0;if((aQ\ +|0)==0){break L209}c[ah>>2]=0;if(aQ>>>0>2){aW=aQ;K=164;break}aX=c[ae>>2]|0;K=17\ +9}else{c[ah>>2]=0;aW=ag;K=164}}while(0);do{if((K|0)==164){K=0;ag=c[ae>>2]|0;if(\ +(ag|0)==0){aX=0;K=179;break}aQ=c[L>>2]|0;aj=a[aQ+(ag-1)|0]|0;if(aj<<24>>24!=(a[\ +aQ+ag|0]|0)){aX=ag;K=179;break}if(aj<<24>>24!=(a[aQ+(ag+1)|0]|0)){aX=ag;K=179;b\ +reak}ai=aQ+(ag+2)|0;if(aj<<24>>24!=(a[ai]|0)){aX=ag;K=179;break}aP=aQ+(ag+258)|\ +0;aQ=ai;while(1){ai=aQ+1|0;if(aj<<24>>24!=(a[ai]|0)){aY=ai;break}ai=aQ+2|0;if(a\ +j<<24>>24!=(a[ai]|0)){aY=ai;break}ai=aQ+3|0;if(aj<<24>>24!=(a[ai]|0)){aY=ai;bre\ +ak}ai=aQ+4|0;if(aj<<24>>24!=(a[ai]|0)){aY=ai;break}ai=aQ+5|0;if(aj<<24>>24!=(a[\ +ai]|0)){aY=ai;break}ai=aQ+6|0;if(aj<<24>>24!=(a[ai]|0)){aY=ai;break}ai=aQ+7|0;i\ +f(aj<<24>>24!=(a[ai]|0)){aY=ai;break}ai=aQ+8|0;if(aj<<24>>24==(a[ai]|0)&ai>>>0<\ +aP>>>0){aQ=ai}else{aY=ai;break}}aQ=aY-aP+258|0;aj=aQ>>>0>aW>>>0?aW:aQ;c[ah>>2]=\ +aj;if(aj>>>0<=2){aX=ag;K=179;break}aQ=aj+253|0;b[(c[af>>2]|0)+(c[T>>2]<<1)>>1]=\ +1;aj=c[T>>2]|0;c[T>>2]=aj+1;a[(c[R>>2]|0)+aj|0]=aQ&255;aj=I+148+((d[12952+(aQ&2\ +55)|0]|256)+1<<2)|0;b[aj>>1]=(b[aj>>1]|0)+1&65535;b[ab>>1]=(b[ab>>1]|0)+1&65535\ +;aj=(c[T>>2]|0)==((c[ak>>2]|0)-1|0);aQ=c[ah>>2]|0;c[ac>>2]=(c[ac>>2]|0)-aQ;ai=(\ +c[ae>>2]|0)+aQ|0;c[ae>>2]=ai;c[ah>>2]=0;if(aj){aZ=ai}else{continue L209}}}while\ +(0);if((K|0)==179){K=0;ai=a[(c[L>>2]|0)+aX|0]|0;b[(c[af>>2]|0)+(c[T>>2]<<1)>>1]\ +=0;aj=c[T>>2]|0;c[T>>2]=aj+1;a[(c[R>>2]|0)+aj|0]=ai;aj=I+148+((ai&255)<<2)|0;b[\ +aj>>1]=(b[aj>>1]|0)+1&65535;aj=(c[T>>2]|0)==((c[ak>>2]|0)-1|0);c[ac>>2]=(c[ac>>\ +2]|0)-1;ai=(c[ae>>2]|0)+1|0;c[ae>>2]=ai;if(aj){aZ=ai}else{continue}}ai=c[ad>>2]\ +|0;if((ai|0)>-1){a_=(c[L>>2]|0)+ai|0}else{a_=0}ba(aS,a_,aZ-ai|0,0);c[ad>>2]=c[a\ +e>>2];ai=c[M>>2]|0;aj=ai+28|0;aQ=c[aj>>2]|0;aT=c[aQ+20>>2]|0;aR=ai+16|0;a$=c[aR\ +>>2]|0;a0=aT>>>0>a$>>>0?a$:aT;do{if((a0|0)!=0){aT=ai+12|0;a$=c[aT>>2]|0;a1=c[aQ\ ++16>>2]|0;bn(a$|0,a1|0,a0)|0;c[aT>>2]=(c[aT>>2]|0)+a0;aT=(c[aj>>2]|0)+16|0;c[aT\ +>>2]=(c[aT>>2]|0)+a0;aT=ai+20|0;c[aT>>2]=(c[aT>>2]|0)+a0;c[aR>>2]=(c[aR>>2]|0)-\ +a0;aT=(c[aj>>2]|0)+20|0;c[aT>>2]=(c[aT>>2]|0)-a0;aT=c[aj>>2]|0;if((c[aT+20>>2]|\ +0)!=0){break}c[aT+16>>2]=c[aT+8>>2]}}while(0);if((c[(c[M>>2]|0)+16>>2]|0)==0){b\ +reak L185}}ac=c[ad>>2]|0;if((ac|0)>-1){a2=(c[L>>2]|0)+ac|0}else{a2=0}ba(aS,a2,(\ +c[ae>>2]|0)-ac|0,1);c[ad>>2]=c[ae>>2];ac=c[M>>2]|0;ak=ac+28|0;T=c[ak>>2]|0;R=c[\ +T+20>>2]|0;af=ac+16|0;ah=c[af>>2]|0;ab=R>>>0>ah>>>0?ah:R;do{if((ab|0)!=0){R=ac+\ +12|0;ah=c[R>>2]|0;aj=c[T+16>>2]|0;bn(ah|0,aj|0,ab)|0;c[R>>2]=(c[R>>2]|0)+ab;R=(\ +c[ak>>2]|0)+16|0;c[R>>2]=(c[R>>2]|0)+ab;R=ac+20|0;c[R>>2]=(c[R>>2]|0)+ab;c[af>>\ +2]=(c[af>>2]|0)-ab;R=(c[ak>>2]|0)+20|0;c[R>>2]=(c[R>>2]|0)-ab;R=c[ak>>2]|0;if((\ +c[R+20>>2]|0)!=0){break}c[R+16>>2]=c[R+8>>2]}}while(0);aV=(c[(c[M>>2]|0)+16>>2]\ +|0)==0?2:3;K=193}else{ak=aM[c[12392+((c[y+132>>2]|0)*12&-1)>>2]&7](I,4)|0;if((a\ +k-2|0)>>>0<2){aV=ak;K=193}else{a4=ak;K=194}}}while(0);if((K|0)==193){c[G>>2]=66\ +6;a4=aV;K=194}do{if((K|0)==194){if((a4|0)==2|(a4|0)==0){break}else if((a4|0)!=1\ +){break L183}a9(y,0,0,0);O=c[w>>2]|0;U=c[O+20>>2]|0;Q=c[o>>2]|0;ak=U>>>0>Q>>>0?\ +Q:U;if((ak|0)==0){a5=Q}else{Q=c[m>>2]|0;U=c[O+16>>2]|0;bn(Q|0,U|0,ak)|0;c[m>>2]\ +=(c[m>>2]|0)+ak;U=(c[w>>2]|0)+16|0;c[U>>2]=(c[U>>2]|0)+ak;c[E>>2]=(c[E>>2]|0)+a\ +k;c[o>>2]=(c[o>>2]|0)-ak;U=(c[w>>2]|0)+20|0;c[U>>2]=(c[U>>2]|0)-ak;ak=c[w>>2]|0\ +;if((c[ak+20>>2]|0)==0){c[ak+16>>2]=c[ak+8>>2]}a5=c[o>>2]|0}if((a5|0)!=0){break\ + L183}c[N>>2]=-1;break L20}}while(0);if((c[o>>2]|0)!=0){break L20}c[N>>2]=-1;br\ +eak L20}}while(0);N=y+24|0;G=c[N>>2]|0;if((G|0)>=1){M=c[H>>2]|0;if((G|0)==2){G=\ +c[aa>>2]|0;c[aa>>2]=G+1;S=y+8|0;a[(c[S>>2]|0)+G|0]=M&255;G=(c[H>>2]|0)>>>8&255;\ +ak=c[aa>>2]|0;c[aa>>2]=ak+1;a[(c[S>>2]|0)+ak|0]=G;G=(c[H>>2]|0)>>>16&255;ak=c[a\ +a>>2]|0;c[aa>>2]=ak+1;a[(c[S>>2]|0)+ak|0]=G;G=(c[H>>2]|0)>>>24&255;ak=c[aa>>2]|\ +0;c[aa>>2]=ak+1;a[(c[S>>2]|0)+ak|0]=G;G=c[F>>2]&255;ak=c[aa>>2]|0;c[aa>>2]=ak+1\ +;a[(c[S>>2]|0)+ak|0]=G;G=(c[F>>2]|0)>>>8&255;ak=c[aa>>2]|0;c[aa>>2]=ak+1;a[(c[S\ +>>2]|0)+ak|0]=G;G=(c[F>>2]|0)>>>16&255;ak=c[aa>>2]|0;c[aa>>2]=ak+1;a[(c[S>>2]|0\ +)+ak|0]=G;G=(c[F>>2]|0)>>>24&255;ak=c[aa>>2]|0;c[aa>>2]=ak+1;a[(c[S>>2]|0)+ak|0\ +]=G}else{G=c[aa>>2]|0;c[aa>>2]=G+1;ak=y+8|0;a[(c[ak>>2]|0)+G|0]=M>>>24&255;G=c[\ +aa>>2]|0;c[aa>>2]=G+1;a[(c[ak>>2]|0)+G|0]=M>>>16&255;M=c[H>>2]|0;G=c[aa>>2]|0;c\ +[aa>>2]=G+1;a[(c[ak>>2]|0)+G|0]=M>>>8&255;G=c[aa>>2]|0;c[aa>>2]=G+1;a[(c[ak>>2]\ +|0)+G|0]=M&255}M=c[w>>2]|0;G=c[M+20>>2]|0;ak=c[o>>2]|0;S=G>>>0>ak>>>0?ak:G;do{i\ +f((S|0)!=0){G=c[m>>2]|0;ak=c[M+16>>2]|0;bn(G|0,ak|0,S)|0;c[m>>2]=(c[m>>2]|0)+S;\ +ak=(c[w>>2]|0)+16|0;c[ak>>2]=(c[ak>>2]|0)+S;c[E>>2]=(c[E>>2]|0)+S;c[o>>2]=(c[o>\ +>2]|0)-S;ak=(c[w>>2]|0)+20|0;c[ak>>2]=(c[ak>>2]|0)-S;ak=c[w>>2]|0;if((c[ak+20>>\ +2]|0)!=0){break}c[ak+16>>2]=c[ak+8>>2]}}while(0);S=c[N>>2]|0;if((S|0)>0){c[N>>2\ +]=-S}if((c[aa>>2]|0)!=0){break}}S=c[E>>2]|0;M=c[w>>2]|0;if((M|0)==0){v=S;break \ +L7}ak=c[M+4>>2]|0;if(!((ak|0)==666|(ak|0)==113|(ak|0)==103|(ak|0)==91|(ak|0)==7\ +3|(ak|0)==69|(ak|0)==42)){v=S;break L7}ak=c[M+8>>2]|0;if((ak|0)==0){a6=M}else{a\ +J[c[q>>2]&3](c[r>>2]|0,ak);a6=c[w>>2]|0}ak=c[a6+68>>2]|0;if((ak|0)==0){a8=a6}el\ +se{aJ[c[q>>2]&3](c[r>>2]|0,ak);a8=c[w>>2]|0}ak=c[a8+64>>2]|0;if((ak|0)==0){bb=a\ +8}else{aJ[c[q>>2]&3](c[r>>2]|0,ak);bb=c[w>>2]|0}ak=c[bb+56>>2]|0;if((ak|0)==0){\ +bc=bb}else{aJ[c[q>>2]&3](c[r>>2]|0,ak);bc=c[w>>2]|0}aJ[c[q>>2]&3](c[r>>2]|0,bc)\ +;c[w>>2]=0;v=S;break L7}}while(0);if((K|0)==30){c[t>>2]=12808}E=c[w>>2]|0;if((E\ +|0)==0){v=100043;break L7}H=c[E+4>>2]|0;if(!((H|0)==666|(H|0)==113|(H|0)==103|(\ +H|0)==91|(H|0)==73|(H|0)==69|(H|0)==42)){v=100043;break L7}H=c[E+8>>2]|0;if((H|\ +0)==0){bd=E}else{aJ[c[q>>2]&3](c[r>>2]|0,H);bd=c[w>>2]|0}H=c[bd+68>>2]|0;if((H|\ +0)==0){be=bd}else{aJ[c[q>>2]&3](c[r>>2]|0,H);be=c[w>>2]|0}H=c[be+64>>2]|0;if((H\ +|0)==0){bl=be}else{aJ[c[q>>2]&3](c[r>>2]|0,H);bl=c[w>>2]|0}H=c[bl+56>>2]|0;if((\ +H|0)==0){bo=bl}else{aJ[c[q>>2]&3](c[r>>2]|0,H);bo=c[w>>2]|0}aJ[c[q>>2]&3](c[r>>\ +2]|0,bo);c[w>>2]=0;v=100043;break L7}}while(0);c[u+4>>2]=666;c[t>>2]=12784;D=c[\ +w>>2]|0;if((D|0)==0){v=100043;break}A=c[D+4>>2]|0;if(!((A|0)==666|(A|0)==113|(A\ +|0)==103|(A|0)==91|(A|0)==73|(A|0)==69|(A|0)==42)){v=100043;break}A=c[D+8>>2]|0\ +;if((A|0)==0){bp=D}else{aJ[c[q>>2]&3](c[r>>2]|0,A);bp=c[w>>2]|0}A=c[bp+68>>2]|0\ +;if((A|0)==0){bq=bp}else{aJ[c[q>>2]&3](c[r>>2]|0,A);bq=c[w>>2]|0}A=c[bq+64>>2]|\ +0;if((A|0)==0){br=bq}else{aJ[c[q>>2]&3](c[r>>2]|0,A);br=c[w>>2]|0}A=c[br+56>>2]\ +|0;if((A|0)==0){bs=br}else{aJ[c[q>>2]&3](c[r>>2]|0,A);bs=c[w>>2]|0}aJ[c[q>>2]&3\ +](c[r>>2]|0,bs);c[w>>2]=0;v=100043}}while(0);bs=(g|0)==0;if(bs){ao(12936,(s=i,i\ +=i+16|0,c[s>>2]=1e5,c[s+8>>2]=v,s)|0)|0}g=c[1044]|0;r=c[1046]|0;q=bf(0,1,7116)|\ +0;L331:do{if((q|0)!=0){c[q+52>>2]=0;br=q+52|0;bq=br;bp=q+36|0;t=q+8|0;c[t>>2]=1\ +;c[bp>>2]=15;u=q+28|0;c[u>>2]=0;bo=q;c[bo>>2]=0;bl=q+4|0;c[bl>>2]=0;be=q+12|0;c\ +[be>>2]=0;bd=q+20|0;c[bd>>2]=32768;c[q+32>>2]=0;bc=q+40|0;c[bc>>2]=0;bb=q+44|0;\ +c[bb>>2]=0;a8=q+48|0;c[a8>>2]=0;a6=q+56|0;c[a6>>2]=0;o=q+60|0;c[o>>2]=0;m=q+132\ +8|0;c[q+108>>2]=m;a5=q+80|0;c[a5>>2]=m;a4=q+76|0;c[a4>>2]=m;aV=q+7104|0;c[aV>>2\ +]=1;a2=q+7108|0;c[a2>>2]=-1;aZ=j|0;L333:do{if((g|0)!=0){if(!((r|0)!=0|(v|0)==0)\ +){break}a_=q+24|0;aX=j+1|0;aW=q+16|0;aY=q+32|0;aU=q+64|0;aO=q+84|0;aL=q+88|0;l=\ +q+76|0;aN=q+72|0;aC=q+7112|0;aB=q+68|0;av=q+96|0;aD=q+100|0;aF=q+92|0;aH=q+104|\ +0;aI=q+108|0;au=aI;aw=aI;aI=q+112|0;ax=aI;ay=q+752|0;aA=aI;aI=q+624|0;$=q+80|0;\ +_=j+2|0;at=j+3|0;Z=0;ar=1e5;as=0;al=0;am=1e5;an=v;ap=g;aq=r;V=0;Y=v;X=0;L336:wh\ +ile(1){L338:do{if((V|0)==27){bt=ar;bu=as;bv=al;bw=an;bx=aq;by=X;bz=c[t>>2]|0;K=\ +571}else if((V|0)==6){bA=as;bB=al;bC=an;bD=aq;bE=c[aW>>2]|0;K=317}else if((V|0)\ +==21){bF=Z;bG=as;bH=al;bI=an;bJ=aq;bK=c[aN>>2]|0;K=515}else if((V|0)==23){bL=Z;\ +bM=as;bN=al;bO=an;bP=aq;bQ=c[aN>>2]|0;K=534}else if((V|0)==18){bR=Z;bS=as;bT=al\ +;bU=an;bV=aq;bW=c[aH>>2]|0;K=395}else if((V|0)==1){if(as>>>0<16){W=aq;P=an;k=al\ +;n=as;while(1){if((P|0)==0){bX=Z;bY=ar;bZ=n;b_=k;b$=am;b0=X;break L336}J=P-1|0;\ +p=W+1|0;A=(d[W]<>>0<16){W=p;P=J;k=A;n=D}else{b1=p;b2=J;b3=\ +A;b4=D;break}}}else{b1=aq;b2=an;b3=al;b4=as}c[aW>>2]=b3;if((b3&255|0)!=8){c[bo>\ +>2]=29;b5=Z;b6=ar;b7=b4;b8=b3;b9=am;ca=b2;cb=ap;cc=b1;cd=Y;ce=X;break}if((b3&57\ +344|0)!=0){c[bo>>2]=29;b5=Z;b6=ar;b7=b4;b8=b3;b9=am;ca=b2;cb=ap;cc=b1;cd=Y;ce=X\ +;break}n=c[aY>>2]|0;if((n|0)==0){cf=b3}else{c[n>>2]=b3>>>8&1;cf=c[aW>>2]|0}if((\ +cf&512|0)!=0){a[aZ]=b3&255;a[aX]=b3>>>8&255;c[a_>>2]=bi(c[a_>>2]|0,aZ,2)|0}c[bo\ +>>2]=2;cg=b1;ch=b2;ci=0;cj=0;K=281}else if((V|0)==9){if(as>>>0<32){n=aq;k=an;P=\ +al;W=as;while(1){if((k|0)==0){bX=Z;bY=ar;bZ=W;b_=P;b$=am;b0=X;break L336}D=k-1|\ +0;A=n+1|0;J=(d[n]<>>0<32){n=A;k=D;P=J;W=p}else{ck=A;cl=D;c\ +m=J;break}}}else{ck=aq;cl=an;cm=al}c[a_>>2]=aE(cm|0)|0;c[bo>>2]=10;cn=0;co=0;cp\ +=cl;cq=ck;K=355}else if((V|0)==16){if(as>>>0<14){W=aq;P=an;k=al;n=as;while(1){i\ +f((P|0)==0){bX=Z;bY=ar;bZ=n;b_=k;b$=am;b0=X;break L336}J=P-1|0;D=W+1|0;A=(d[W]<\ +>>0<14){W=D;P=J;k=A;n=p}else{cr=D;cs=J;ct=A;cu=p;break}}}e\ +lse{cr=aq;cs=an;ct=al;cu=as}n=(ct&31)+257|0;c[av>>2]=n;k=(ct>>>5&31)+1|0;c[aD>>\ +2]=k;c[aF>>2]=(ct>>>10&15)+4;P=ct>>>14;W=cu-14|0;if(n>>>0>286|k>>>0>30){c[bo>>2\ +]=29;b5=Z;b6=ar;b7=W;b8=P;b9=am;ca=cs;cb=ap;cc=cr;cd=Y;ce=X;break}else{c[aH>>2]\ +=0;c[bo>>2]=17;cv=cr;cw=cs;cx=P;cy=W;cz=0;K=386;break}}else if((V|0)==0){W=c[t>\ +>2]|0;if((W|0)==0){c[bo>>2]=12;b5=Z;b6=ar;b7=as;b8=al;b9=am;ca=an;cb=ap;cc=aq;c\ +d=Y;ce=X;break}if(as>>>0<16){P=aq;k=an;n=al;p=as;while(1){if((k|0)==0){bX=Z;bY=\ +ar;bZ=p;b_=n;b$=am;b0=X;break L336}A=k-1|0;J=P+1|0;D=(d[P]<>>0<16){P=J;k=A;n=D;p=C}else{cA=J;cB=A;cC=D;cD=C;break}}}else{cA=aq;cB=an;cC=a\ +l;cD=as}if((W&2|0)!=0&(cC|0)==35615){c[a_>>2]=0;a[aZ]=31;a[aX]=-117;c[a_>>2]=bi\ +(c[a_>>2]|0,aZ,2)|0;c[bo>>2]=1;b5=Z;b6=ar;b7=0;b8=0;b9=am;ca=cB;cb=ap;cc=cA;cd=\ +Y;ce=X;break}c[aW>>2]=0;p=c[aY>>2]|0;if((p|0)==0){cE=W}else{c[p+48>>2]=-1;cE=c[\ +t>>2]|0}do{if((cE&1|0)!=0){if(((((cC<<8&65280)+(cC>>>8)|0)>>>0)%31>>>0|0)!=0){b\ +reak}if((cC&15|0)!=8){c[bo>>2]=29;b5=Z;b6=ar;b7=cD;b8=cC;b9=am;ca=cB;cb=ap;cc=c\ +A;cd=Y;ce=X;break L338}p=cC>>>4;n=cD-4|0;k=(p&15)+8|0;P=c[bp>>2]|0;do{if((P|0)=\ +=0){c[bp>>2]=k}else{if(k>>>0<=P>>>0){break}c[bo>>2]=29;b5=Z;b6=ar;b7=n;b8=p;b9=\ +am;ca=cB;cb=ap;cc=cA;cd=Y;ce=X;break L338}}while(0);c[bd>>2]=1<>2]=1;c[\ +bo>>2]=cC>>>12&2^11;b5=Z;b6=ar;b7=0;b8=0;b9=am;ca=cB;cb=ap;cc=cA;cd=Y;ce=X;brea\ +k L338}}while(0);c[bo>>2]=29;b5=Z;b6=ar;b7=cD;b8=cC;b9=am;ca=cB;cb=ap;cc=cA;cd=\ +Y;ce=X}else if((V|0)==2){if(as>>>0<32){cg=aq;ch=an;ci=al;cj=as;K=281}else{cF=aq\ +;cG=an;cH=al;K=283}}else if((V|0)==3){if(as>>>0<16){cI=aq;cJ=an;cK=al;cL=as;K=2\ +89}else{cM=aq;cN=an;cO=al;K=291}}else if((V|0)==4){cP=as;cQ=al;cR=an;cS=aq;K=29\ +6}else if((V|0)==5){cT=as;cU=al;cV=an;cW=aq;K=307}else if((V|0)==7){cX=as;cY=al\ +;cZ=an;c_=aq;K=330}else if((V|0)==8){c$=as;c0=al;c1=an;c2=aq;K=343}else if((V|0\ +)==10){cn=as;co=al;cp=an;cq=aq;K=355}else if((V|0)==11|(V|0)==12){c3=as;c4=al;c\ +5=an;c6=aq;K=358}else if((V|0)==13){W=as&7;p=al>>>(W>>>0);n=as-W|0;if(n>>>0<32)\ +{W=aq;P=an;C=p;D=n;while(1){if((P|0)==0){bX=Z;bY=ar;bZ=D;b_=C;b$=am;b0=X;break \ +L336}A=P-1|0;J=W+1|0;x=(d[W]<>>0<32){W=J;P=A;C=x;D=B}else{\ +c7=J;c8=A;c9=x;da=B;break}}}else{c7=aq;c8=an;c9=p;da=n}D=c9&65535;if((D|0)==(c9\ +>>>16^65535|0)){c[aU>>2]=D;c[bo>>2]=14;db=0;dc=0;dd=c8;de=c7;K=375;break}else{c\ +[bo>>2]=29;b5=Z;b6=ar;b7=da;b8=c9;b9=am;ca=c8;cb=ap;cc=c7;cd=Y;ce=X;break}}else\ + if((V|0)==14){db=as;dc=al;dd=an;de=aq;K=375}else if((V|0)==15){df=as;dg=al;dh=\ +an;di=aq;K=376}else if((V|0)==17){D=c[aH>>2]|0;if(D>>>0<(c[aF>>2]|0)>>>0){cv=aq\ +;cw=an;cx=al;cy=as;cz=D;K=386}else{dj=aq;dk=an;dl=al;dm=as;dn=D;K=390}}else if(\ +(V|0)==19){dp=Z;dq=as;dr=al;ds=an;dt=aq;K=432}else if((V|0)==20){du=Z;dv=as;dw=\ +al;dx=an;dy=aq;K=433}else if((V|0)==22){dz=Z;dA=as;dB=al;dC=an;dD=aq;K=522}else\ + if((V|0)==24){dE=Z;dF=as;dG=al;dH=an;dI=aq;K=540}else if((V|0)==25){if((am|0)=\ +=0){bX=Z;bY=ar;bZ=as;b_=al;b$=0;b0=X;break L336}a[ap]=c[aU>>2]&255;c[bo>>2]=20;\ +b5=Z;b6=ar;b7=as;b8=al;b9=am-1|0;ca=an;cb=ap+1|0;cc=aq;cd=Y;ce=X}else if((V|0)=\ +=26){D=c[t>>2]|0;do{if((D|0)==0){dJ=ar;dK=as;dL=al;dM=an;dN=aq;dO=X}else{if(as>\ +>>0<32){C=aq;P=an;W=al;B=as;while(1){if((P|0)==0){bX=Z;bY=ar;bZ=B;b_=W;b$=am;b0\ +=X;break L336}x=P-1|0;A=C+1|0;J=(d[C]<>>0<32){C=A;P=x;W=J;\ +B=z}else{dP=A;dQ=x;dR=J;dS=z;break}}}else{dP=aq;dQ=an;dR=al;dS=as}B=ar-am|0;W=X\ ++B|0;c[u>>2]=(c[u>>2]|0)+B;P=c[aW>>2]|0;if((ar|0)==(am|0)){dT=P}else{C=c[a_>>2]\ +|0;k=ap+(-B|0)|0;if((P|0)==0){dU=bh(C,k,B)|0}else{dU=bi(C,k,B)|0}c[a_>>2]=dU;dT\ +=P}if((dT|0)==0){dV=aE(dR|0)|0}else{dV=dR}if((dV|0)==(c[a_>>2]|0)){dJ=am;dK=0;d\ +L=0;dM=dQ;dN=dP;dO=W;break}c[bo>>2]=29;b5=Z;b6=am;b7=dS;b8=dR;b9=am;ca=dQ;cb=ap\ +;cc=dP;cd=Y;ce=W;break L338}}while(0);c[bo>>2]=27;bt=dJ;bu=dK;bv=dL;bw=dM;bx=dN\ +;by=dO;bz=D;K=571}else if((V|0)==29){K=579;break L336}else if((V|0)==28){bX=1;b\ +Y=ar;bZ=as;b_=al;b$=am;b0=X;break L336}else{break L333}}while(0);if((K|0)==281)\ +{while(1){K=0;if((ch|0)==0){bX=Z;bY=ar;bZ=cj;b_=ci;b$=am;b0=X;break L336}aa=ch-\ +1|0;N=cg+1|0;n=(d[cg]<>>0<32){cg=N;ch=aa;ci=n;cj=p;K=28\ +1}else{cF=N;cG=aa;cH=n;K=283;break}}}else if((K|0)==355){K=0;if((c[be>>2]|0)==0\ +){K=356;break}c[a_>>2]=1;c[bo>>2]=11;c3=cn;c4=co;c5=cp;c6=cq;K=358}else if((K|0\ +)==375){K=0;c[bo>>2]=15;df=db;dg=dc;dh=dd;di=de;K=376}else if((K|0)==386){while\ +(1){K=0;if(cy>>>0<3){n=cv;aa=cw;N=cx;p=cy;while(1){if((aa|0)==0){bX=Z;bY=ar;bZ=\ +p;b_=N;b$=am;b0=X;break L336}W=aa-1|0;P=n+1|0;B=(d[n]<>>0<\ +3){n=P;aa=W;N=B;p=k}else{dW=P;dX=W;dY=B;dZ=k;break}}}else{dW=cv;dX=cw;dY=cx;dZ=\ +cy}c[aH>>2]=cz+1;b[aA+(e[1640+(cz<<1)>>1]<<1)>>1]=dY&7;p=dY>>>3;N=dZ-3|0;aa=c[a\ +H>>2]|0;if(aa>>>0<(c[aF>>2]|0)>>>0){cv=dW;cw=dX;cx=p;cy=N;cz=aa;K=386}else{dj=d\ +W;dk=dX;dl=p;dm=N;dn=aa;K=390;break}}}else if((K|0)==571){K=0;if((bz|0)==0){d_=\ +bu;d$=bv;K=578;break}if((c[aW>>2]|0)==0){d_=bu;d$=bv;K=578;break}if(bu>>>0<32){\ +aa=bx;N=bw;p=bv;n=bu;while(1){if((N|0)==0){bX=Z;bY=bt;bZ=n;b_=p;b$=am;b0=by;bre\ +ak L336}D=N-1|0;k=aa+1|0;B=(d[aa]<>>0<32){aa=k;N=D;p=B;n=W\ +}else{d0=k;d1=D;d2=B;d3=W;break}}}else{d0=bx;d1=bw;d2=bv;d3=bu}if((d2|0)==(c[u>\ +>2]|0)){d_=0;d$=0;K=578;break}c[bo>>2]=29;b5=Z;b6=bt;b7=d3;b8=d2;b9=am;ca=d1;cb\ +=ap;cc=d0;cd=Y;ce=by}do{if((K|0)==283){K=0;n=c[aY>>2]|0;if((n|0)!=0){c[n+4>>2]=\ +cH}if((c[aW>>2]&512|0)!=0){a[aZ]=cH&255;a[aX]=cH>>>8&255;a[_]=cH>>>16&255;a[at]\ +=cH>>>24&255;c[a_>>2]=bi(c[a_>>2]|0,aZ,4)|0}c[bo>>2]=3;cI=cF;cJ=cG;cK=0;cL=0;K=\ +289}else if((K|0)==358){K=0;if((c[bl>>2]|0)!=0){n=c3&7;c[bo>>2]=26;b5=Z;b6=ar;b\ +7=c3-n|0;b8=c4>>>(n>>>0);b9=am;ca=c5;cb=ap;cc=c6;cd=Y;ce=X;break}if(c3>>>0<3){n\ +=c6;p=c5;N=c4;aa=c3;while(1){if((p|0)==0){bX=Z;bY=ar;bZ=aa;b_=N;b$=am;b0=X;brea\ +k L336}W=p-1|0;B=n+1|0;D=(d[n]<>>0<3){n=B;p=W;N=D;aa=k}e\ +lse{d4=B;d5=W;d6=D;d7=k;break}}}else{d4=c6;d5=c5;d6=c4;d7=c3}c[bl>>2]=d6&1;aa=d\ +6>>>1&3;if((aa|0)==0){c[bo>>2]=13}else if((aa|0)==1){c[a4>>2]=1680;c[aO>>2]=9;c\ +[a5>>2]=3728;c[aL>>2]=5;c[bo>>2]=19}else if((aa|0)==2){c[bo>>2]=16}else if((aa|\ +0)==3){c[bo>>2]=29}b5=Z;b6=ar;b7=d7-3|0;b8=d6>>>3;b9=am;ca=d5;cb=ap;cc=d4;cd=Y;\ +ce=X}else if((K|0)==376){K=0;aa=c[aU>>2]|0;if((aa|0)==0){c[bo>>2]=11;b5=Z;b6=ar\ +;b7=df;b8=dg;b9=am;ca=dh;cb=ap;cc=di;cd=Y;ce=X;break}N=aa>>>0>dh>>>0?dh:aa;aa=N\ +>>>0>am>>>0?am:N;if((aa|0)==0){bX=Z;bY=ar;bZ=df;b_=dg;b$=am;b0=X;break L336}bn(\ +ap|0,di|0,aa)|0;c[aU>>2]=(c[aU>>2]|0)-aa;b5=Z;b6=ar;b7=df;b8=dg;b9=am-aa|0;ca=d\ +h-aa|0;cb=ap+aa|0;cc=di+aa|0;cd=Y;ce=X}else if((K|0)==390){K=0;if(dn>>>0<19){aa\ +=dn;do{c[aH>>2]=aa+1;b[aA+(e[1640+(aa<<1)>>1]<<1)>>1]=0;aa=c[aH>>2]|0;}while(aa\ +>>>0<19)}c[aw>>2]=m;c[a4>>2]=m;c[aO>>2]=7;aa=bj(0,ax,19,au,aO,ay)|0;if((aa|0)==\ +0){c[aH>>2]=0;c[bo>>2]=18;bR=0;bS=dm;bT=dl;bU=dk;bV=dj;bW=0;K=395;break}else{c[\ +bo>>2]=29;b5=aa;b6=ar;b7=dm;b8=dl;b9=am;ca=dk;cb=ap;cc=dj;cd=Y;ce=X;break}}}whi\ +le(0);L497:do{if((K|0)==289){while(1){K=0;if((cJ|0)==0){bX=Z;bY=ar;bZ=cL;b_=cK;\ +b$=am;b0=X;break L336}aa=cJ-1|0;N=cI+1|0;p=(d[cI]<>>0<1\ +6){cI=N;cJ=aa;cK=p;cL=n;K=289}else{cM=N;cN=aa;cO=p;K=291;break}}}else if((K|0)=\ +=395){K=0;p=c[av>>2]|0;aa=c[aD>>2]|0;do{if(bW>>>0<(aa+p|0)>>>0){N=bV;n=bU;k=bT;\ +D=bS;W=bW;B=p;P=aa;L503:while(1){C=(1<>2])-1|0;z=C&k;J=c[l>>2]|0;x=d[J+(z\ +<<2)+1|0]|0;if(x>>>0>D>>>0){A=N;H=n;E=k;y=D;while(1){if((H|0)==0){bX=bR;bY=ar;b\ +Z=y;b_=E;b$=am;b0=X;break L336}F=H-1|0;I=A+1|0;S=(d[A]<>>0>ak>>>0){A=I;H=F;E=S;y=ak}else{d8=I;d9=F;ea=S;eb=ak;\ +ec=M;ed=G;break}}}else{d8=N;d9=n;ea=k;eb=D;ec=z;ed=x}y=b[J+(ec<<2)+2>>1]|0;L510\ +:do{if((y&65535)<16){if(eb>>>0>>0){E=d8;H=d9;A=ea;C=eb;while(1){if((H|0)==0\ +){bX=bR;bY=ar;bZ=C;b_=A;b$=am;b0=X;break L336}G=H-1|0;M=E+1|0;ak=(d[E]<>>0>>0){E=M;H=G;A=ak;C=S}else{ee=M;ef=G;eg=ak;eh=S;break}}}els\ +e{ee=d8;ef=d9;eg=ea;eh=eb}c[aH>>2]=W+1;b[aA+(W<<1)>>1]=y;ei=eh-ed|0;ej=eg>>>(ed\ +>>>0);ek=ef;el=ee}else{if((y<<16>>16|0)==16){C=ed+2|0;if(eb>>>0>>0){A=d8;H=d\ +9;E=ea;ag=eb;while(1){if((H|0)==0){bX=bR;bY=ar;bZ=ag;b_=E;b$=am;b0=X;break L336\ +}aP=H-1|0;S=A+1|0;ak=(d[A]<>>0>>0){A=S;H=aP;E=ak;ag=G\ +}else{em=S;en=aP;eo=ak;ep=G;break}}}else{em=d8;en=d9;eo=ea;ep=eb}eq=eo>>>(ed>>>\ +0);er=ep-ed|0;if((W|0)==0){K=412;break L503}es=b[aA+(W-1<<1)>>1]|0;et=(eq&3)+3|\ +0;eu=er-2|0;ev=eq>>>2;ew=en;ex=em}else if((y<<16>>16|0)==17){ag=ed+3|0;if(eb>>>\ +0>>0){E=d8;H=d9;A=ea;C=eb;while(1){if((H|0)==0){bX=bR;bY=ar;bZ=C;b_=A;b$=am\ +;b0=X;break L336}G=H-1|0;ak=E+1|0;aP=(d[E]<>>0>>0){E=a\ +k;H=G;A=aP;C=S}else{ey=ak;ez=G;eA=aP;eB=S;break}}}else{ey=d8;ez=d9;eA=ea;eB=eb}\ +C=eA>>>(ed>>>0);es=0;et=(C&7)+3|0;eu=-3-ed+eB|0;ev=C>>>3;ew=ez;ex=ey}else{C=ed+\ +7|0;if(eb>>>0>>0){A=d8;H=d9;E=ea;ag=eb;while(1){if((H|0)==0){bX=bR;bY=ar;bZ=\ +ag;b_=E;b$=am;b0=X;break L336}S=H-1|0;aP=A+1|0;G=(d[A]<>>0>>0){A=aP;H=S;E=G;ag=ak}else{eC=aP;eD=S;eE=G;eF=ak;break}}}else{eC=d8;eD\ +=d9;eE=ea;eF=eb}ag=eE>>>(ed>>>0);es=0;et=(ag&127)+11|0;eu=-7-ed+eF|0;ev=ag>>>7;\ +ew=eD;ex=eC}if((W+et|0)>>>0>(P+B|0)>>>0){K=421;break L503}else{eG=et;eH=W}while\ +(1){ag=eG-1|0;c[aH>>2]=eH+1;b[aA+(eH<<1)>>1]=es;if((ag|0)==0){ei=eu;ej=ev;ek=ew\ +;el=ex;break L510}eG=ag;eH=c[aH>>2]|0}}}while(0);y=c[aH>>2]|0;eI=c[av>>2]|0;J=c\ +[aD>>2]|0;if(y>>>0<(J+eI|0)>>>0){N=el;n=ek;k=ej;D=ei;W=y;B=eI;P=J}else{K=424;br\ +eak}}if((K|0)==412){K=0;c[bo>>2]=29;b5=bR;b6=ar;b7=er;b8=eq;b9=am;ca=en;cb=ap;c\ +c=em;cd=Y;ce=X;break L497}else if((K|0)==421){K=0;c[bo>>2]=29;b5=bR;b6=ar;b7=eu\ +;b8=ev;b9=am;ca=ew;cb=ap;cc=ex;cd=Y;ce=X;break L497}else if((K|0)==424){K=0;if(\ +(c[bo>>2]|0)==29){b5=bR;b6=ar;b7=ei;b8=ej;b9=am;ca=ek;cb=ap;cc=el;cd=Y;ce=X;bre\ +ak L497}else{eJ=eI;eK=ei;eL=ej;eM=ek;eN=el;break}}}else{eJ=p;eK=bS;eL=bT;eM=bU;\ +eN=bV}}while(0);if((b[aI>>1]|0)==0){c[bo>>2]=29;b5=bR;b6=ar;b7=eK;b8=eL;b9=am;c\ +a=eM;cb=ap;cc=eN;cd=Y;ce=X;break}c[aw>>2]=m;c[a4>>2]=m;c[aO>>2]=9;p=bj(1,ax,eJ,\ +au,aO,ay)|0;if((p|0)!=0){c[bo>>2]=29;b5=p;b6=ar;b7=eK;b8=eL;b9=am;ca=eM;cb=ap;c\ +c=eN;cd=Y;ce=X;break}c[a5>>2]=c[au>>2];c[aL>>2]=6;p=bj(2,ax+(c[av>>2]<<1)|0,c[a\ +D>>2]|0,au,aL,ay)|0;if((p|0)==0){c[bo>>2]=19;dp=0;dq=eK;dr=eL;ds=eM;dt=eN;K=432\ +;break}else{c[bo>>2]=29;b5=p;b6=ar;b7=eK;b8=eL;b9=am;ca=eM;cb=ap;cc=eN;cd=Y;ce=\ +X;break}}}while(0);if((K|0)==291){K=0;p=c[aY>>2]|0;if((p|0)!=0){c[p+8>>2]=cO&25\ +5;c[(c[aY>>2]|0)+12>>2]=cO>>>8}if((c[aW>>2]&512|0)!=0){a[aZ]=cO&255;a[aX]=cO>>>\ +8&255;c[a_>>2]=bi(c[a_>>2]|0,aZ,2)|0}c[bo>>2]=4;cP=0;cQ=0;cR=cN;cS=cM;K=296}els\ +e if((K|0)==432){K=0;c[bo>>2]=20;du=dp;dv=dq;dw=dr;dx=ds;dy=dt;K=433}do{if((K|0\ +)==296){K=0;p=c[aW>>2]|0;do{if((p&1024|0)==0){aa=c[aY>>2]|0;if((aa|0)==0){eO=cP\ +;eP=cQ;eQ=cR;eR=cS;break}c[aa+16>>2]=0;eO=cP;eP=cQ;eQ=cR;eR=cS}else{if(cP>>>0<1\ +6){aa=cS;P=cR;B=cQ;W=cP;while(1){if((P|0)==0){bX=Z;bY=ar;bZ=W;b_=B;b$=am;b0=X;b\ +reak L336}D=P-1|0;k=aa+1|0;n=(d[aa]<>>0<16){aa=k;P=D;B=n;W\ +=N}else{eS=k;eT=D;eU=n;break}}}else{eS=cS;eT=cR;eU=cQ}c[aU>>2]=eU;W=c[aY>>2]|0;\ +if((W|0)==0){eV=p}else{c[W+20>>2]=eU;eV=c[aW>>2]|0}if((eV&512|0)==0){eO=0;eP=0;\ +eQ=eT;eR=eS;break}a[aZ]=eU&255;a[aX]=eU>>>8&255;c[a_>>2]=bi(c[a_>>2]|0,aZ,2)|0;\ +eO=0;eP=0;eQ=eT;eR=eS}}while(0);c[bo>>2]=5;cT=eO;cU=eP;cV=eQ;cW=eR;K=307}else i\ +f((K|0)==433){K=0;if(!(dx>>>0>5&am>>>0>257)){c[a2>>2]=0;p=(1<>2])-1|0;W=p\ +&dw;B=c[l>>2]|0;P=a[B+(W<<2)+1|0]|0;aa=P&255;if(aa>>>0>dv>>>0){n=dy;D=dx;k=dw;N\ +=dv;while(1){if((D|0)==0){bX=du;bY=ar;bZ=N;b_=k;b$=am;b0=X;break L336}J=D-1|0;y\ +=n+1|0;x=(d[n]<>>0>z>>\ +>0){n=y;D=J;k=x;N=z}else{eW=y;eX=J;eY=x;eZ=z;e_=E;e$=ag;e0=H;break}}}else{eW=dy\ +;eX=dx;eY=dw;eZ=dv;e_=P;e$=W;e0=aa}N=a[B+(e$<<2)|0]|0;k=b[B+(e$<<2)+2>>1]|0;D=N\ +&255;do{if(N<<24>>24==0){e1=0;e2=e_;e3=k;e4=eZ;e5=eY;e6=eX;e7=eW;e8=0}else{if((\ +D&240|0)!=0){e1=N;e2=e_;e3=k;e4=eZ;e5=eY;e6=eX;e7=eW;e8=0;break}n=k&65535;p=(1<\ +>>(e0>>>0))+n|0;ag=a[B+(H<<2)+1|0]|0;if(((ag&255)+e0|0)>>>\ +0>eZ>>>0){E=eW;z=eX;x=eY;J=eZ;while(1){if((z|0)==0){bX=du;bY=ar;bZ=J;b_=x;b$=am\ +;b0=X;break L336}y=z-1|0;A=E+1|0;C=(d[E]<>>(e0>>>0))+\ +n|0;S=a[B+(G<<2)+1|0]|0;if(((S&255)+e0|0)>>>0>ak>>>0){E=A;z=y;x=C;J=ak}else{e9=\ +A;fa=y;fb=C;fc=ak;fd=G;fe=S;break}}}else{e9=eW;fa=eX;fb=eY;fc=eZ;fd=H;fe=ag}J=b\ +[B+(fd<<2)+2>>1]|0;x=a[B+(fd<<2)|0]|0;c[a2>>2]=e0;e1=x;e2=fe;e3=J;e4=fc-e0|0;e5\ +=fb>>>(e0>>>0);e6=fa;e7=e9;e8=e0}}while(0);B=e2&255;D=e5>>>(B>>>0);k=e4-B|0;c[a\ +2>>2]=e8+B;c[aU>>2]=e3&65535;B=e1&255;if(e1<<24>>24==0){c[bo>>2]=25;b5=du;b6=ar\ +;b7=k;b8=D;b9=am;ca=e6;cb=ap;cc=e7;cd=Y;ce=X;break}if((B&32|0)!=0){c[a2>>2]=-1;\ +c[bo>>2]=11;b5=du;b6=ar;b7=k;b8=D;b9=am;ca=e6;cb=ap;cc=e7;cd=Y;ce=X;break}if((B\ +&64|0)==0){N=B&15;c[aN>>2]=N;c[bo>>2]=21;bF=du;bG=k;bH=D;bI=e6;bJ=e7;bK=N;K=515\ +;break}else{c[bo>>2]=29;b5=du;b6=ar;b7=k;b8=D;b9=am;ca=e6;cb=ap;cc=e7;cd=Y;ce=X\ +;break}}c[a6>>2]=dw;c[o>>2]=dv;D=dy+(dx-6)|0;k=ap+(am-258)|0;N=c[bb>>2]|0;B=c[a\ +8>>2]|0;aa=c[bq>>2]|0;W=c[l>>2]|0;P=c[$>>2]|0;J=(1<>2])-1|0;x=(1<>2\ +])-1|0;z=ap+(am+(ar^-1))|0;E=aa-1|0;n=(B|0)==0;p=(c[bc>>2]|0)-1|0;S=p+B|0;G=B-1\ +|0;ak=z-1|0;C=z-B|0;y=dy-1|0;A=ap-1|0;aP=dw;M=dv;L609:while(1){if(M>>>0<15){F=y\ ++2|0;ff=F;fg=(d[y+1|0]<>1]|0;Q=d[W+(F<<2)+1|0]|0;F=fg>>>(Q>>>0);O=\ +fh-Q|0;do{if(I<<24>>24==0){fi=U&255;fj=F;fk=O;K=439}else{Q=U;fl=F;fm=O;ab=I;whi\ +le(1){fn=ab&255;if((fn&16|0)!=0){break}if((fn&64|0)!=0){K=487;break L609}af=(fl\ +&(1<>1]|0;T=d[W+(af<<2\ +)+1|0]|0;fp=fl>>>(T>>>0);fq=fm-T|0;if(ac<<24>>24==0){K=438;break}else{Q=fo;fl=f\ +p;fm=fq;ab=ac}}if((K|0)==438){K=0;fi=fo&255;fj=fp;fk=fq;K=439;break}ab=Q&65535;\ +ac=fn&15;if((ac|0)==0){fr=ab;fs=ff;ft=fl;fu=fm}else{if(fm>>>0>>0){T=ff+1|0;\ +fv=T;fw=(d[T]<>>(ac>>>0);fu=fx-ac|0}if(fu>>>0<15){ac=fs+2|0;fy=ac;fz=(d[fs+1|0]<\ +>1]|0;T=d[P+(ac<<2)+1|0]|0;af=fz>>>(T>>>0);ae=fA-T|0;T=d[P+(ac<<2)|0]|0;if(\ +(T&16|0)==0){ac=ab;fB=af;fC=ae;ad=T;while(1){if((ad&64|0)!=0){K=484;break L609}\ +aS=(fB&(1<>1]|0;R=d[P+(aS<<2)+1|0]|0;aj=fB\ +>>>(R>>>0);ah=fC-R|0;R=d[P+(aS<<2)|0]|0;if((R&16|0)==0){ac=L;fB=aj;fC=ah;ad=R}e\ +lse{fD=L;fE=aj;fF=ah;fG=R;break}}}else{fD=ab;fE=af;fF=ae;fG=T}ad=fD&65535;ac=fG\ +&15;do{if(fF>>>0>>0){Q=fy+1|0;R=(d[Q]<>>0>=ac>>>0\ +){fH=Q;fI=R;fJ=ah;break}Q=fy+2|0;fH=Q;fI=(d[Q]<>>(ac>>>0);fL=fJ-ac|0;ae=A;af=\ +ae-z|0;if(T>>>0<=af>>>0){ab=A+(-T|0)|0;R=fr;ah=A;while(1){a[ah+1|0]=a[ab+1|0]|0\ +;a[ah+2|0]=a[ab+2|0]|0;Q=ab+3|0;fM=ah+3|0;a[fM]=a[Q]|0;fN=R-3|0;if(fN>>>0>2){ab\ +=Q;R=fN;ah=fM}else{break}}if((fN|0)==0){fO=fH;fP=fM;fQ=fK;fR=fL;break}R=ah+4|0;\ +a[R]=a[ab+4|0]|0;if(fN>>>0<=1){fO=fH;fP=R;fQ=fK;fR=fL;break}R=ah+5|0;a[R]=a[ab+\ +5|0]|0;fO=fH;fP=R;fQ=fK;fR=fL;break}R=T-af|0;if(R>>>0>N>>>0){if((c[aV>>2]|0)!=0\ +){K=454;break L609}}do{if(n){ac=aa+(p-R)|0;if(R>>>0>=fr>>>0){fS=ac;fT=fr;fU=A;b\ +reak}ad=fr-R|0;Q=T-ae|0;aj=ac;ac=R;L=A;do{aj=aj+1|0;L=L+1|0;a[L]=a[aj]|0;ac=ac-\ +1|0;}while((ac|0)!=0);fS=A+(ak+Q+(1-T))|0;fT=ad;fU=A+(z+Q)|0}else{if(B>>>0>=R>>\ +>0){ac=aa+(G-R)|0;if(R>>>0>=fr>>>0){fS=ac;fT=fr;fU=A;break}aj=fr-R|0;L=T-ae|0;a\ +S=ac;ac=R;a0=A;do{aS=aS+1|0;a0=a0+1|0;a[a0]=a[aS]|0;ac=ac-1|0;}while((ac|0)!=0)\ +;fS=A+(ak+L+(1-T))|0;fT=aj;fU=A+(z+L)|0;break}ac=aa+(S-R)|0;aS=R-B|0;if(aS>>>0>\ +=fr>>>0){fS=ac;fT=fr;fU=A;break}a0=fr-aS|0;Q=T-ae|0;ad=ac;ac=aS;aS=A;do{ad=ad+1\ +|0;aS=aS+1|0;a[aS]=a[ad]|0;ac=ac-1|0;}while((ac|0)!=0);ac=A+(C+Q)|0;if(B>>>0>=a\ +0>>>0){fS=E;fT=a0;fU=ac;break}ad=a0-B|0;aS=E;L=B;aj=ac;do{aS=aS+1|0;aj=aj+1|0;a\ +[aj]=a[aS]|0;L=L-1|0;}while((L|0)!=0);fS=A+(ak+Q+(1-T))|0;fT=ad;fU=A+(z+Q)|0}}w\ +hile(0);if(fT>>>0>2){T=fU;ae=fT;R=fS;while(1){a[T+1|0]=a[R+1|0]|0;a[T+2|0]=a[R+\ +2|0]|0;af=R+3|0;ab=T+3|0;a[ab]=a[af]|0;ah=ae-3|0;if(ah>>>0>2){T=ab;ae=ah;R=af}e\ +lse{fV=ab;fW=ah;fX=af;break}}}else{fV=fU;fW=fT;fX=fS}if((fW|0)==0){fO=fH;fP=fV;\ +fQ=fK;fR=fL;break}R=fV+1|0;a[R]=a[fX+1|0]|0;if(fW>>>0<=1){fO=fH;fP=R;fQ=fK;fR=f\ +L;break}R=fV+2|0;a[R]=a[fX+2|0]|0;fO=fH;fP=R;fQ=fK;fR=fL}}while(0);if((K|0)==43\ +9){K=0;I=A+1|0;a[I]=fi;fO=ff;fP=I;fQ=fj;fR=fk}if(fO>>>0>>0&fP>>>0>>0){y=f\ +O;A=fP;aP=fQ;M=fR}else{fY=fO;fZ=fP;f_=fQ;f$=fR;break}}do{if((K|0)==454){K=0;c[b\ +o>>2]=29;fY=fH;fZ=A;f_=fK;f$=fL}else if((K|0)==484){K=0;c[bo>>2]=29;fY=fy;fZ=A;\ +f_=fB;f$=fC}else if((K|0)==487){K=0;if((fn&32|0)==0){c[bo>>2]=29;fY=ff;fZ=A;f_=\ +fl;f$=fm;break}else{c[bo>>2]=11;fY=ff;fZ=A;f_=fl;f$=fm;break}}}while(0);A=f$>>>\ +3;M=fY+(-A|0)|0;aP=f$-(A<<3)|0;y=(1<>>0\ +>>0){f0=D-M|0}else{f0=D-M|0}M=f0+5|0;if(fZ>>>0>>0){f1=k-fZ|0}else{f1=k-fZ|0}\ +ak=f1+257|0;c[a6>>2]=y;c[o>>2]=aP;if((c[bo>>2]|0)!=11){b5=du;b6=ar;b7=aP;b8=y;b\ +9=ak;ca=M;cb=A;cc=z;cd=M;ce=X;break}c[a2>>2]=-1;b5=du;b6=ar;b7=aP;b8=y;b9=ak;ca\ +=M;cb=A;cc=z;cd=M;ce=X}}while(0);if((K|0)==307){K=0;M=c[aW>>2]|0;if((M&1024|0)=\ +=0){f2=cV;f3=cW;f4=M}else{z=c[aU>>2]|0;A=z>>>0>cV>>>0?cV:z;if((A|0)==0){f5=cV;f\ +6=cW;f7=z;f8=M}else{ak=c[aY>>2]|0;do{if((ak|0)==0){f9=M}else{y=c[ak+16>>2]|0;if\ +((y|0)==0){f9=M;break}aP=(c[ak+20>>2]|0)-z|0;B=y+aP|0;y=c[ak+24>>2]|0;E=(aP+A|0\ +)>>>0>y>>>0?y-aP|0:A;bn(B|0,cW|0,E)|0;f9=c[aW>>2]|0}}while(0);if((f9&512|0)!=0)\ +{c[a_>>2]=bi(c[a_>>2]|0,cW,A)|0}ak=(c[aU>>2]|0)-A|0;c[aU>>2]=ak;f5=cV-A|0;f6=cW\ ++A|0;f7=ak;f8=f9}if((f7|0)==0){f2=f5;f3=f6;f4=f8}else{bX=Z;bY=ar;bZ=cT;b_=cU;b$\ +=am;b0=X;break}}c[aU>>2]=0;c[bo>>2]=6;bA=cT;bB=cU;bC=f2;bD=f3;bE=f4;K=317}else \ +if((K|0)==515){K=0;if((bK|0)==0){ga=bG;gb=bH;gc=bI;gd=bJ;ge=c[aU>>2]|0}else{if(\ +bG>>>0>>0){ak=bJ;z=bI;M=bH;E=bG;while(1){if((z|0)==0){bX=bF;bY=ar;bZ=E;b_=M\ +;b$=am;b0=X;break L336}B=z-1|0;aP=ak+1|0;y=(d[ak]<>>0>\ +>0){ak=aP;z=B;M=y;E=C}else{gf=aP;gg=B;gh=y;gi=C;break}}}else{gf=bJ;gg=bI;gh=bH;\ +gi=bG}E=(c[aU>>2]|0)+((1<>2]=E;c[a2>>2]=(c[a2>>2]|0)+bK;ga=gi\ +-bK|0;gb=gh>>>(bK>>>0);gc=gg;gd=gf;ge=E}c[aC>>2]=ge;c[bo>>2]=22;dz=bF;dA=ga;dB=\ +gb;dC=gc;dD=gd;K=522}do{if((K|0)==317){K=0;do{if((bE&2048|0)==0){E=c[aY>>2]|0;i\ +f((E|0)==0){gj=bC;gk=bD;break}c[E+28>>2]=0;gj=bC;gk=bD}else{if((bC|0)==0){bX=Z;\ +bY=ar;bZ=bA;b_=bB;b$=am;b0=X;break L336}else{gl=0}while(1){gm=gl+1|0;E=a[bD+gl|\ +0]|0;M=c[aY>>2]|0;do{if((M|0)!=0){z=M+28|0;if((c[z>>2]|0)==0){break}ak=c[aU>>2]\ +|0;if(ak>>>0>=(c[M+32>>2]|0)>>>0){break}c[aU>>2]=ak+1;a[(c[z>>2]|0)+ak|0]=E}}wh\ +ile(0);gn=E<<24>>24!=0;if(gn&gm>>>0>>0){gl=gm}else{break}}if((c[aW>>2]&512|\ +0)!=0){c[a_>>2]=bi(c[a_>>2]|0,bD,gm)|0}if(gn){bX=Z;bY=ar;bZ=bA;b_=bB;b$=am;b0=X\ +;break L336}else{gj=bC-gm|0;gk=bD+gm|0}}}while(0);c[aU>>2]=0;c[bo>>2]=7;cX=bA;c\ +Y=bB;cZ=gj;c_=gk;K=330}else if((K|0)==522){K=0;k=(1<>2])-1|0;D=k&dB;M=c[$\ +>>2]|0;ak=a[M+(D<<2)+1|0]|0;z=ak&255;if(z>>>0>dA>>>0){A=dD;C=dC;y=dB;B=dA;while\ +(1){if((C|0)==0){bX=dz;bY=ar;bZ=B;b_=y;b$=am;b0=X;break L336}aP=C-1|0;S=A+1|0;a\ +a=(d[A]<>>0>G>>>0){A=S;\ +C=aP;y=aa;B=G}else{go=S;gp=aP;gq=aa;gr=G;gs=n;gt=p;gu=N;break}}}else{go=dD;gp=d\ +C;gq=dB;gr=dA;gs=ak;gt=D;gu=z}B=a[M+(gt<<2)|0]|0;y=b[M+(gt<<2)+2>>1]|0;C=B&255;\ +if((C&240|0)==0){A=y&65535;k=(1<>>(gu>>>0))+A|0;N=a[M+(C<<\ +2)+1|0]|0;if(((N&255)+gu|0)>>>0>gr>>>0){p=go;n=gp;G=gq;aa=gr;while(1){if((n|0)=\ +=0){bX=dz;bY=ar;bZ=aa;b_=G;b$=am;b0=X;break L336}aP=n-1|0;S=p+1|0;P=(d[p]<>>(gu>>>0))+A|0;J=a[M+(W<<2)+1|0]|0;if(((J&255)+gu|0)>>>0\ +>x>>>0){p=S;n=aP;G=P;aa=x}else{gv=S;gw=aP;gx=P;gy=x;gz=W;gA=J;break}}}else{gv=g\ +o;gw=gp;gx=gq;gy=gr;gz=C;gA=N}aa=b[M+(gz<<2)+2>>1]|0;G=a[M+(gz<<2)|0]|0;n=(c[a2\ +>>2]|0)+gu|0;c[a2>>2]=n;gB=G;gC=gA;gD=aa;gE=gy-gu|0;gF=gx>>>(gu>>>0);gG=gw;gH=g\ +v;gI=n}else{gB=B;gC=gs;gD=y;gE=gr;gF=gq;gG=gp;gH=go;gI=c[a2>>2]|0}n=gC&255;aa=g\ +F>>>(n>>>0);G=gE-n|0;c[a2>>2]=gI+n;n=gB&255;if((n&64|0)==0){c[aB>>2]=gD&65535;p\ +=n&15;c[aN>>2]=p;c[bo>>2]=23;bL=dz;bM=G;bN=aa;bO=gG;bP=gH;bQ=p;K=534;break}else\ +{c[bo>>2]=29;b5=dz;b6=ar;b7=G;b8=aa;b9=am;ca=gG;cb=ap;cc=gH;cd=Y;ce=X;break}}}w\ +hile(0);if((K|0)==330){K=0;do{if((c[aW>>2]&4096|0)==0){aa=c[aY>>2]|0;if((aa|0)=\ +=0){gJ=cZ;gK=c_;break}c[aa+36>>2]=0;gJ=cZ;gK=c_}else{if((cZ|0)==0){bX=Z;bY=ar;b\ +Z=cX;b_=cY;b$=am;b0=X;break L336}else{gL=0}while(1){gM=gL+1|0;aa=a[c_+gL|0]|0;G\ +=c[aY>>2]|0;do{if((G|0)!=0){p=G+36|0;if((c[p>>2]|0)==0){break}n=c[aU>>2]|0;if(n\ +>>>0>=(c[G+40>>2]|0)>>>0){break}c[aU>>2]=n+1;a[(c[p>>2]|0)+n|0]=aa}}while(0);gN\ +=aa<<24>>24!=0;if(gN&gM>>>0>>0){gL=gM}else{break}}if((c[aW>>2]&512|0)!=0){c\ +[a_>>2]=bi(c[a_>>2]|0,c_,gM)|0}if(gN){bX=Z;bY=ar;bZ=cX;b_=cY;b$=am;b0=X;break L\ +336}else{gJ=cZ-gM|0;gK=c_+gM|0}}}while(0);c[bo>>2]=8;c$=cX;c0=cY;c1=gJ;c2=gK;K=\ +343}else if((K|0)==534){K=0;if((bQ|0)==0){gO=bM;gP=bN;gQ=bO;gR=bP}else{if(bM>>>\ +0>>0){y=bP;B=bO;M=bN;N=bM;while(1){if((B|0)==0){bX=bL;bY=ar;bZ=N;b_=M;b$=am\ +;b0=X;break L336}C=B-1|0;G=y+1|0;n=(d[y]<>>0>>0){y=G;B\ +=C;M=n;N=p}else{gS=G;gT=C;gU=n;gV=p;break}}}else{gS=bP;gT=bO;gU=bN;gV=bM}c[aB>>\ +2]=(c[aB>>2]|0)+((1<>2]=(c[a2>>2]|0)+bQ;gO=gV-bQ|0;gP=gU>>>(bQ>\ +>>0);gQ=gT;gR=gS}c[bo>>2]=24;dE=bL;dF=gO;dG=gP;dH=gQ;dI=gR;K=540}L788:do{if((K|\ +0)==343){K=0;N=c[aW>>2]|0;do{if((N&512|0)==0){gW=c$;gX=c0;gY=c1;gZ=c2}else{if(c\ +$>>>0<16){M=c2;B=c1;y=c0;p=c$;while(1){if((B|0)==0){bX=Z;bY=ar;bZ=p;b_=y;b$=am;\ +b0=X;break L336}n=B-1|0;C=M+1|0;G=(d[M]<>>0<16){M=C;B=n;y=\ +G;p=A}else{g_=C;g$=n;g0=G;g1=A;break}}}else{g_=c2;g$=c1;g0=c0;g1=c$}if((g0|0)==\ +(c[a_>>2]&65535|0)){gW=0;gX=0;gY=g$;gZ=g_;break}c[bo>>2]=29;b5=Z;b6=ar;b7=g1;b8\ +=g0;b9=am;ca=g$;cb=ap;cc=g_;cd=Y;ce=X;break L788}}while(0);p=c[aY>>2]|0;if((p|0\ +)!=0){c[p+44>>2]=N>>>9&1;c[(c[aY>>2]|0)+48>>2]=1}c[a_>>2]=0;c[bo>>2]=11;b5=Z;b6\ +=ar;b7=gW;b8=gX;b9=am;ca=gY;cb=ap;cc=gZ;cd=Y;ce=X}else if((K|0)==540){K=0;if((a\ +m|0)==0){bX=dE;bY=ar;bZ=dF;b_=dG;b$=0;b0=X;break L336}p=ar-am|0;y=c[aB>>2]|0;if\ +(y>>>0>p>>>0){B=y-p|0;do{if(B>>>0>(c[bb>>2]|0)>>>0){if((c[aV>>2]|0)==0){break}c\ +[bo>>2]=29;b5=dE;b6=ar;b7=dF;b8=dG;b9=am;ca=dH;cb=ap;cc=dI;cd=Y;ce=X;break L788\ +}}while(0);N=c[a8>>2]|0;if(B>>>0>N>>>0){p=B-N|0;g2=(c[bq>>2]|0)+((c[bc>>2]|0)-p\ +)|0;g3=p}else{g2=(c[bq>>2]|0)+(N-B)|0;g3=B}N=c[aU>>2]|0;g4=g2;g5=g3>>>0>N>>>0?N\ +:g3;g6=N}else{N=c[aU>>2]|0;g4=ap+(-y|0)|0;g5=N;g6=N}N=g5>>>0>am>>>0?am:g5;c[aU>\ +>2]=g6-N;p=am^-1;M=g5^-1;aa=p>>>0>M>>>0?p:M;M=g4;p=N;A=ap;while(1){a[A]=a[M]|0;\ +G=p-1|0;if((G|0)==0){break}else{M=M+1|0;p=G;A=A+1|0}}A=am-N|0;p=ap+(aa^-1)|0;if\ +((c[aU>>2]|0)!=0){b5=dE;b6=ar;b7=dF;b8=dG;b9=A;ca=dH;cb=p;cc=dI;cd=Y;ce=X;break\ +}c[bo>>2]=20;b5=dE;b6=ar;b7=dF;b8=dG;b9=A;ca=dH;cb=p;cc=dI;cd=Y;ce=X}}while(0);\ +Z=b5;ar=b6;as=b7;al=b8;am=b9;an=ca;ap=cb;aq=cc;V=c[bo>>2]|0;Y=cd;X=ce}if((K|0)=\ +=356){c[a6>>2]=co;c[o>>2]=cn;break}else if((K|0)==578){c[bo>>2]=28;bX=1;bY=bt;b\ +Z=d_;b_=d$;b$=am;b0=by}else if((K|0)==579){bX=-3;bY=ar;bZ=as;b_=al;b$=am;b0=X}c\ +[a6>>2]=b_;c[o>>2]=bZ;Y=c[bc>>2]|0;if((Y|0)==0){if(!((c[bo>>2]|0)>>>0>=26|(bY|0\ +)==(b$|0))){K=582}}else{K=582}do{if((K|0)==582){V=c[bq>>2]|0;do{if((V|0)==0){aq\ +=bf(0,1<>2],1)|0;c[br>>2]=aq;if((aq|0)==0){c[bo>>2]=30;break L333}else{g7\ +=aq;g8=c[bc>>2]|0;break}}else{g7=V;g8=Y}}while(0);if((g8|0)==0){V=1<>2];c\ +[bc>>2]=V;c[a8>>2]=0;c[bb>>2]=0;g9=V}else{g9=g8}V=bY-b$|0;if(V>>>0>=g9>>>0){aq=\ +ap+(-g9|0)|0;bn(g7|0,aq|0,g9)|0;c[a8>>2]=0;c[bb>>2]=c[bc>>2];break}aq=c[a8>>2]|\ +0;an=g9-aq|0;Z=an>>>0>V>>>0?V:an;an=g7+aq|0;aq=ap+(-V|0)|0;bn(an|0,aq|0,Z)|0;aq\ +=V-Z|0;if((V|0)!=(Z|0)){Z=c[bq>>2]|0;an=ap+(-aq|0)|0;bn(Z|0,an|0,aq)|0;c[a8>>2]\ +=aq;c[bb>>2]=c[bc>>2];break}aq=(c[a8>>2]|0)+V|0;c[a8>>2]=aq;an=c[bc>>2]|0;if((a\ +q|0)==(an|0)){c[a8>>2]=0}aq=c[bb>>2]|0;if(aq>>>0>=an>>>0){break}c[bb>>2]=aq+V}}\ +while(0);Y=bY-b$|0;X=b0+Y|0;c[u>>2]=(c[u>>2]|0)+Y;if(!((c[t>>2]|0)==0|(bY|0)==(\ +b$|0))){am=c[a_>>2]|0;al=ap+(-Y|0)|0;if((c[aW>>2]|0)==0){ha=bh(am,al,Y)|0}else{\ +ha=bi(am,al,Y)|0}c[a_>>2]=ha}if((((bX|0)==0?-5:bX)|0)!=1){break}Y=c[bq>>2]|0;if\ +((Y|0)!=0){bg(0,Y)}bg(0,q);if((X|0)==1e5){break L331}az(12904,24,14192,12872)}}\ +while(0);t=c[bq>>2]|0;if((t|0)!=0){bg(0,t)}bg(0,q)}}while(0);if(!bs){i=h;return\ +}if((aG(f|0,c[1044]|0)|0)==0){i=h;return}else{az(12904,25,14192,12840)}}functio\ +n a2(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;do{if((b|0)>1\ +){f=a[c[d+4>>2]|0]|0;if((f|0)==50){g=250;break}else if((f|0)==51){h=618;break}e\ +lse if((f|0)==52){g=2500;break}else if((f|0)==53){g=5e3;break}else if((f|0)==49\ +){g=60;break}else if((f|0)==48){j=0;i=e;return j|0}else{ao(12824,(s=i,i=i+8|0,c\ +[s>>2]=f-48,s)|0)|0;j=-1;i=e;return j|0}}else{h=618}}while(0);if((h|0)==618){g=\ +500}h=bk(1e5)|0;d=0;b=0;f=17;while(1){do{if((b|0)>0){k=f;l=b-1|0}else{if((d&7|0\ +)==0){k=0;l=d&31;break}else{k=((Z(d,d)|0)>>>0)%6714>>>0&255;l=b;break}}}while(0\ +);a[h+d|0]=k;m=d+1|0;if((m|0)<1e5){d=m;b=l;f=k}else{n=0;break}}do{a1(h,n);n=n+1\ +|0;}while((n|0)<(g|0));ar(8)|0;j=0;i=e;return j|0}function a3(a){a=a|0;var f=0,\ +g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0\ +,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;f=a+44|0;g=c[f>>2]|0;h=a+60|0;\ +i=a+116|0;j=a+108|0;k=g-262|0;l=a|0;m=a+56|0;n=a+72|0;o=a+88|0;p=a+84|0;q=a+112\ +|0;r=a+92|0;s=a+76|0;t=a+68|0;u=a+64|0;v=c[i>>2]|0;w=g;while(1){x=c[j>>2]|0;y=(\ +c[h>>2]|0)-v-x|0;if(x>>>0<(k+w|0)>>>0){z=y}else{x=c[m>>2]|0;A=x+g|0;bn(x|0,A|0,\ +g)|0;c[q>>2]=(c[q>>2]|0)-g;c[j>>2]=(c[j>>2]|0)-g;c[r>>2]=(c[r>>2]|0)-g;A=c[s>>2\ +]|0;x=A;B=(c[t>>2]|0)+(A<<1)|0;do{B=B-2|0;A=e[B>>1]|0;if(A>>>0>>0){C=0}else{\ +C=A-g&65535}b[B>>1]=C;x=x-1|0;}while((x|0)!=0);x=g;B=(c[u>>2]|0)+(g<<1)|0;do{B=\ +B-2|0;A=e[B>>1]|0;if(A>>>0>>0){D=0}else{D=A-g&65535}b[B>>1]=D;x=x-1|0;}while\ +((x|0)!=0);z=y+g|0}x=c[l>>2]|0;B=x+4|0;A=c[B>>2]|0;if((A|0)==0){E=663;break}F=c\ +[i>>2]|0;G=(c[m>>2]|0)+(F+(c[j>>2]|0))|0;H=A>>>0>z>>>0?z:A;if((H|0)==0){I=0;J=F\ +}else{c[B>>2]=A-H;A=c[(c[x+28>>2]|0)+24>>2]|0;if((A|0)==1){B=x+48|0;F=c[x>>2]|0\ +;c[B>>2]=bh(c[B>>2]|0,F,H)|0;K=F}else if((A|0)==2){A=x+48|0;F=c[x>>2]|0;c[A>>2]\ +=bi(c[A>>2]|0,F,H)|0;K=F}else{K=c[x>>2]|0}F=x|0;bn(G|0,K|0,H)|0;c[F>>2]=(c[F>>2\ +]|0)+H;F=x+8|0;c[F>>2]=(c[F>>2]|0)+H;I=H;J=c[i>>2]|0}L=J+I|0;c[i>>2]=L;if(L>>>0\ +>2){H=c[j>>2]|0;F=c[m>>2]|0;x=d[F+H|0]|0;c[n>>2]=x;c[n>>2]=((d[F+(H+1)|0]|0)^x<\ +>2])&c[p>>2];if(L>>>0>=262){break}}if((c[(c[l>>2]|0)+4>>2]|0)==0){break}v=\ +L;w=c[f>>2]|0}if((E|0)==663){return}E=a+5824|0;a=c[E>>2]|0;f=c[h>>2]|0;if(a>>>0\ +>=f>>>0){return}h=L+(c[j>>2]|0)|0;if(a>>>0>>0){j=f-h|0;L=j>>>0>258?258:j;bm(\ +(c[m>>2]|0)+h|0,0,L|0);c[E>>2]=L+h;return}L=h+258|0;if(a>>>0>=L>>>0){return}h=L\ +-a|0;L=f-a|0;f=h>>>0>L>>>0?L:h;bm((c[m>>2]|0)+a|0,0,f|0);c[E>>2]=(c[E>>2]|0)+f;\ +return}function a4(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0\ +,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;d=(c[a+12>>2]|0)-5|0;e\ +=d>>>0<65535?d:65535;d=a+116|0;f=a+108|0;g=a+92|0;h=a+44|0;i=a+56|0;j=a;k=a|0;w\ +hile(1){l=c[d>>2]|0;if(l>>>0<2){a3(a);m=c[d>>2]|0;if((m|b|0)==0){n=0;o=696;brea\ +k}if((m|0)==0){o=687;break}else{p=m}}else{p=l}l=(c[f>>2]|0)+p|0;c[f>>2]=l;c[d>>\ +2]=0;m=c[g>>2]|0;q=m+e|0;if((l|0)!=0&l>>>0>>0){r=l;s=m}else{c[d>>2]=l-q;c[f>\ +>2]=q;if((m|0)>-1){t=(c[i>>2]|0)+m|0}else{t=0}ba(j,t,e,0);c[g>>2]=c[f>>2];m=c[k\ +>>2]|0;q=m+28|0;l=c[q>>2]|0;u=c[l+20>>2]|0;v=m+16|0;w=c[v>>2]|0;x=u>>>0>w>>>0?w\ +:u;do{if((x|0)!=0){u=m+12|0;w=c[u>>2]|0;y=c[l+16>>2]|0;bn(w|0,y|0,x)|0;c[u>>2]=\ +(c[u>>2]|0)+x;u=(c[q>>2]|0)+16|0;c[u>>2]=(c[u>>2]|0)+x;u=m+20|0;c[u>>2]=(c[u>>2\ +]|0)+x;c[v>>2]=(c[v>>2]|0)-x;u=(c[q>>2]|0)+20|0;c[u>>2]=(c[u>>2]|0)-x;u=c[q>>2]\ +|0;if((c[u+20>>2]|0)!=0){break}c[u+16>>2]=c[u+8>>2]}}while(0);if((c[(c[k>>2]|0)\ ++16>>2]|0)==0){n=0;o=697;break}r=c[f>>2]|0;s=c[g>>2]|0}q=r-s|0;if(q>>>0<((c[h>>\ +2]|0)-262|0)>>>0){continue}if((s|0)>-1){z=(c[i>>2]|0)+s|0}else{z=0}ba(j,z,q,0);\ +c[g>>2]=c[f>>2];q=c[k>>2]|0;x=q+28|0;v=c[x>>2]|0;m=c[v+20>>2]|0;l=q+16|0;u=c[l>\ +>2]|0;y=m>>>0>u>>>0?u:m;do{if((y|0)!=0){m=q+12|0;u=c[m>>2]|0;w=c[v+16>>2]|0;bn(\ +u|0,w|0,y)|0;c[m>>2]=(c[m>>2]|0)+y;m=(c[x>>2]|0)+16|0;c[m>>2]=(c[m>>2]|0)+y;m=q\ ++20|0;c[m>>2]=(c[m>>2]|0)+y;c[l>>2]=(c[l>>2]|0)-y;m=(c[x>>2]|0)+20|0;c[m>>2]=(c\ +[m>>2]|0)-y;m=c[x>>2]|0;if((c[m+20>>2]|0)!=0){break}c[m+16>>2]=c[m+8>>2]}}while\ +(0);if((c[(c[k>>2]|0)+16>>2]|0)==0){n=0;o=698;break}}if((o|0)==687){z=c[g>>2]|0\ +;if((z|0)>-1){A=(c[i>>2]|0)+z|0}else{A=0}i=(b|0)==4;ba(j,A,(c[f>>2]|0)-z|0,i&1)\ +;c[g>>2]=c[f>>2];f=c[k>>2]|0;g=f+28|0;z=c[g>>2]|0;A=c[z+20>>2]|0;j=f+16|0;b=c[j\ +>>2]|0;s=A>>>0>b>>>0?b:A;do{if((s|0)!=0){A=f+12|0;b=c[A>>2]|0;h=c[z+16>>2]|0;bn\ +(b|0,h|0,s)|0;c[A>>2]=(c[A>>2]|0)+s;A=(c[g>>2]|0)+16|0;c[A>>2]=(c[A>>2]|0)+s;A=\ +f+20|0;c[A>>2]=(c[A>>2]|0)+s;c[j>>2]=(c[j>>2]|0)-s;A=(c[g>>2]|0)+20|0;c[A>>2]=(\ +c[A>>2]|0)-s;A=c[g>>2]|0;if((c[A+20>>2]|0)!=0){break}c[A+16>>2]=c[A+8>>2]}}whil\ +e(0);if((c[(c[k>>2]|0)+16>>2]|0)==0){n=i?2:0;return n|0}else{n=i?3:1;return n|0\ +}}else if((o|0)==696){return n|0}else if((o|0)==697){return n|0}else if((o|0)==\ +698){return n|0}return 0}function a5(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l\ +=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,\ +F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;g=e+116|0;h=(f|0)==0;i=e+72\ +|0;j=e+88|0;k=e+108|0;l=e+56|0;m=e+84|0;n=e+68|0;o=e+52|0;p=e+64|0;q=e+44|0;r=e\ ++96|0;s=e+112|0;t=e+5792|0;u=e+5796|0;v=e+5784|0;w=e+5788|0;x=e+128|0;y=e+92|0;\ +z=e;A=e|0;while(1){if((c[g>>2]|0)>>>0<262){a3(e);B=c[g>>2]|0;if(B>>>0<262&h){C=\ +0;D=735;break}if((B|0)==0){D=726;break}if(B>>>0>2){D=706}else{D=709}}else{D=706\ +}do{if((D|0)==706){D=0;B=c[k>>2]|0;E=((d[(c[l>>2]|0)+(B+2)|0]|0)^c[i>>2]<>\ +2])&c[m>>2];c[i>>2]=E;F=b[(c[n>>2]|0)+(E<<1)>>1]|0;b[(c[p>>2]|0)+((c[o>>2]&B)<<\ +1)>>1]=F;B=F&65535;b[(c[n>>2]|0)+(c[i>>2]<<1)>>1]=c[k>>2]&65535;if(F<<16>>16==0\ +){D=709;break}if(((c[k>>2]|0)-B|0)>>>0>((c[q>>2]|0)-262|0)>>>0){D=709;break}F=a\ +6(e,B)|0;c[r>>2]=F;G=F}}while(0);if((D|0)==709){D=0;G=c[r>>2]|0}do{if(G>>>0>2){\ +F=G+253|0;B=(c[k>>2]|0)-(c[s>>2]|0)&65535;b[(c[u>>2]|0)+(c[t>>2]<<1)>>1]=B;E=c[\ +t>>2]|0;c[t>>2]=E+1;a[(c[v>>2]|0)+E|0]=F&255;E=B-1&65535;B=e+148+((d[12952+(F&2\ +55)|0]|0|256)+1<<2)|0;b[B>>1]=(b[B>>1]|0)+1&65535;B=E&65535;if((E&65535)<256){H\ +=B}else{H=(B>>>7)+256|0}B=e+2440+((d[H+13680|0]|0)<<2)|0;b[B>>1]=(b[B>>1]|0)+1&\ +65535;B=(c[t>>2]|0)==((c[w>>2]|0)-1|0)&1;E=c[r>>2]|0;F=(c[g>>2]|0)-E|0;c[g>>2]=\ +F;if(!(E>>>0<=(c[x>>2]|0)>>>0&F>>>0>2)){F=(c[k>>2]|0)+E|0;c[k>>2]=F;c[r>>2]=0;I\ +=c[l>>2]|0;J=d[I+F|0]|0;c[i>>2]=J;c[i>>2]=((d[I+(F+1)|0]|0)^J<>2])&c[m>>2]\ +;K=B;L=F;break}c[r>>2]=E-1;do{E=c[k>>2]|0;F=E+1|0;c[k>>2]=F;J=((d[(c[l>>2]|0)+(\ +E+3)|0]|0)^c[i>>2]<>2])&c[m>>2];c[i>>2]=J;b[(c[p>>2]|0)+((c[o>>2]&F)<<1)>>\ +1]=b[(c[n>>2]|0)+(J<<1)>>1]|0;b[(c[n>>2]|0)+(c[i>>2]<<1)>>1]=c[k>>2]&65535;J=(c\ +[r>>2]|0)-1|0;c[r>>2]=J;}while((J|0)!=0);J=(c[k>>2]|0)+1|0;c[k>>2]=J;K=B;L=J}el\ +se{J=a[(c[l>>2]|0)+(c[k>>2]|0)|0]|0;b[(c[u>>2]|0)+(c[t>>2]<<1)>>1]=0;F=c[t>>2]|\ +0;c[t>>2]=F+1;a[(c[v>>2]|0)+F|0]=J;F=e+148+((J&255)<<2)|0;b[F>>1]=(b[F>>1]|0)+1\ +&65535;F=(c[t>>2]|0)==((c[w>>2]|0)-1|0)&1;c[g>>2]=(c[g>>2]|0)-1;J=(c[k>>2]|0)+1\ +|0;c[k>>2]=J;K=F;L=J}}while(0);if((K|0)==0){continue}J=c[y>>2]|0;if((J|0)>-1){M\ +=(c[l>>2]|0)+J|0}else{M=0}ba(z,M,L-J|0,0);c[y>>2]=c[k>>2];J=c[A>>2]|0;F=J+28|0;\ +E=c[F>>2]|0;I=c[E+20>>2]|0;N=J+16|0;O=c[N>>2]|0;P=I>>>0>O>>>0?O:I;do{if((P|0)!=\ +0){I=J+12|0;O=c[I>>2]|0;Q=c[E+16>>2]|0;bn(O|0,Q|0,P)|0;c[I>>2]=(c[I>>2]|0)+P;I=\ +(c[F>>2]|0)+16|0;c[I>>2]=(c[I>>2]|0)+P;I=J+20|0;c[I>>2]=(c[I>>2]|0)+P;c[N>>2]=(\ +c[N>>2]|0)-P;I=(c[F>>2]|0)+20|0;c[I>>2]=(c[I>>2]|0)-P;I=c[F>>2]|0;if((c[I+20>>2\ +]|0)!=0){break}c[I+16>>2]=c[I+8>>2]}}while(0);if((c[(c[A>>2]|0)+16>>2]|0)==0){C\ +=0;D=736;break}}if((D|0)==726){L=c[y>>2]|0;if((L|0)>-1){R=(c[l>>2]|0)+L|0}else{\ +R=0}l=(f|0)==4;ba(z,R,(c[k>>2]|0)-L|0,l&1);c[y>>2]=c[k>>2];k=c[A>>2]|0;y=k+28|0\ +;L=c[y>>2]|0;R=c[L+20>>2]|0;z=k+16|0;f=c[z>>2]|0;M=R>>>0>f>>>0?f:R;do{if((M|0)!\ +=0){R=k+12|0;f=c[R>>2]|0;K=c[L+16>>2]|0;bn(f|0,K|0,M)|0;c[R>>2]=(c[R>>2]|0)+M;R\ +=(c[y>>2]|0)+16|0;c[R>>2]=(c[R>>2]|0)+M;R=k+20|0;c[R>>2]=(c[R>>2]|0)+M;c[z>>2]=\ +(c[z>>2]|0)-M;R=(c[y>>2]|0)+20|0;c[R>>2]=(c[R>>2]|0)-M;R=c[y>>2]|0;if((c[R+20>>\ +2]|0)!=0){break}c[R+16>>2]=c[R+8>>2]}}while(0);if((c[(c[A>>2]|0)+16>>2]|0)==0){\ +C=l?2:0;return C|0}else{C=l?3:1;return C|0}}else if((D|0)==735){return C|0}else\ + if((D|0)==736){return C|0}return 0}function a6(b,d){b=b|0;d=d|0;var f=0,g=0,h=\ +0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B\ +=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;f=c[b+124>>2]|0;g=c[b+56>>2]|0;h=c[b+108>>2]|0;i\ +=g+h|0;j=c[b+120>>2]|0;k=c[b+144>>2]|0;l=(c[b+44>>2]|0)-262|0;m=h>>>0>l>>>0?h-l\ +|0:0;l=c[b+64>>2]|0;n=c[b+52>>2]|0;o=g+(h+258)|0;p=c[b+116>>2]|0;q=k>>>0>p>>>0?\ +p:k;k=b+112|0;r=g+(h+1)|0;s=g+(h+2)|0;t=o;u=h+257|0;v=a[g+(j+h)|0]|0;w=a[g+(h-1\ ++j)|0]|0;x=d;d=j>>>0<(c[b+140>>2]|0)>>>0?f:f>>>2;f=j;L1039:while(1){j=g+x|0;do{\ +if((a[g+(x+f)|0]|0)==v<<24>>24){if((a[g+(f-1+x)|0]|0)!=w<<24>>24){y=v;z=w;A=f;b\ +reak}if((a[j]|0)!=(a[i]|0)){y=v;z=w;A=f;break}if((a[g+(x+1)|0]|0)!=(a[r]|0)){y=\ +v;z=w;A=f;break}b=s;B=g+(x+2)|0;while(1){C=b+1|0;if((a[C]|0)!=(a[B+1|0]|0)){D=C\ +;break}C=b+2|0;if((a[C]|0)!=(a[B+2|0]|0)){D=C;break}C=b+3|0;if((a[C]|0)!=(a[B+3\ +|0]|0)){D=C;break}C=b+4|0;if((a[C]|0)!=(a[B+4|0]|0)){D=C;break}C=b+5|0;if((a[C]\ +|0)!=(a[B+5|0]|0)){D=C;break}C=b+6|0;if((a[C]|0)!=(a[B+6|0]|0)){D=C;break}C=b+7\ +|0;if((a[C]|0)!=(a[B+7|0]|0)){D=C;break}C=b+8|0;E=B+8|0;if((a[C]|0)==(a[E]|0)&C\ +>>>0>>0){b=C;B=E}else{D=C;break}}B=D-t|0;b=B+258|0;if((b|0)<=(f|0)){y=v;z=w;\ +A=f;break}c[k>>2]=x;if((b|0)>=(q|0)){F=b;G=759;break L1039}y=a[g+(b+h)|0]|0;z=a\ +[g+(u+B)|0]|0;A=b}else{y=v;z=w;A=f}}while(0);j=e[l+((x&n)<<1)>>1]|0;if(j>>>0<=m\ +>>>0){F=A;G=760;break}b=d-1|0;if((b|0)==0){F=A;G=761;break}else{v=y;w=z;x=j;d=b\ +;f=A}}if((G|0)==759){H=F>>>0>p>>>0;I=H?p:F;return I|0}else if((G|0)==760){H=F>>\ +>0>p>>>0;I=H?p:F;return I|0}else if((G|0)==761){H=F>>>0>p>>>0;I=H?p:F;return I|\ +0}return 0}function a7(a){a=a|0;var d=0;d=0;do{b[a+148+(d<<2)>>1]=0;d=d+1|0;}wh\ +ile((d|0)<286);b[a+2440>>1]=0;b[a+2444>>1]=0;b[a+2448>>1]=0;b[a+2452>>1]=0;b[a+\ +2456>>1]=0;b[a+2460>>1]=0;b[a+2464>>1]=0;b[a+2468>>1]=0;b[a+2472>>1]=0;b[a+2476\ +>>1]=0;b[a+2480>>1]=0;b[a+2484>>1]=0;b[a+2488>>1]=0;b[a+2492>>1]=0;b[a+2496>>1]\ +=0;b[a+2500>>1]=0;b[a+2504>>1]=0;b[a+2508>>1]=0;b[a+2512>>1]=0;b[a+2516>>1]=0;b\ +[a+2520>>1]=0;b[a+2524>>1]=0;b[a+2528>>1]=0;b[a+2532>>1]=0;b[a+2536>>1]=0;b[a+2\ +540>>1]=0;b[a+2544>>1]=0;b[a+2548>>1]=0;b[a+2552>>1]=0;b[a+2556>>1]=0;b[a+2684>\ +>1]=0;b[a+2688>>1]=0;b[a+2692>>1]=0;b[a+2696>>1]=0;b[a+2700>>1]=0;b[a+2704>>1]=\ +0;b[a+2708>>1]=0;b[a+2712>>1]=0;b[a+2716>>1]=0;b[a+2720>>1]=0;b[a+2724>>1]=0;b[\ +a+2728>>1]=0;b[a+2732>>1]=0;b[a+2736>>1]=0;b[a+2740>>1]=0;b[a+2744>>1]=0;b[a+27\ +48>>1]=0;b[a+2752>>1]=0;b[a+2756>>1]=0;b[a+1172>>1]=1;c[a+5804>>2]=0;c[a+5800>>\ +2]=0;c[a+5808>>2]=0;c[a+5792>>2]=0;return}function a8(e,f){e=e|0;f=f|0;var g=0,\ +h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0\ +,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=\ +0,V=0,W=0,X=0,Y=0;g=e+116|0;h=(f|0)==0;i=e+72|0;j=e+88|0;k=e+108|0;l=e+56|0;m=e\ ++84|0;n=e+68|0;o=e+52|0;p=e+64|0;q=e+96|0;r=e+120|0;s=e+112|0;t=e+100|0;u=e+579\ +2|0;v=e+5796|0;w=e+5784|0;x=e+5788|0;y=e+104|0;z=e+92|0;A=e;B=e|0;C=e+128|0;D=e\ ++44|0;E=e+136|0;L1069:while(1){F=c[g>>2]|0;while(1){do{if(F>>>0<262){a3(e);G=c[\ +g>>2]|0;if(G>>>0<262&h){H=0;I=815;break L1069}if((G|0)==0){I=804;break L1069}if\ +(G>>>0>2){I=772;break}c[r>>2]=c[q>>2];c[t>>2]=c[s>>2];c[q>>2]=2;J=2;I=780}else{\ +I=772}}while(0);do{if((I|0)==772){I=0;G=c[k>>2]|0;K=((d[(c[l>>2]|0)+(G+2)|0]|0)\ +^c[i>>2]<>2])&c[m>>2];c[i>>2]=K;L=b[(c[n>>2]|0)+(K<<1)>>1]|0;b[(c[p>>2]|0)\ ++((c[o>>2]&G)<<1)>>1]=L;G=L&65535;b[(c[n>>2]|0)+(c[i>>2]<<1)>>1]=c[k>>2]&65535;\ +K=c[q>>2]|0;c[r>>2]=K;c[t>>2]=c[s>>2];c[q>>2]=2;if(L<<16>>16==0){J=2;I=780;brea\ +k}if(K>>>0>=(c[C>>2]|0)>>>0){M=K;N=2;break}if(((c[k>>2]|0)-G|0)>>>0>((c[D>>2]|0\ +)-262|0)>>>0){J=2;I=780;break}K=a6(e,G)|0;c[q>>2]=K;if(K>>>0>=6){J=K;I=780;brea\ +k}if((c[E>>2]|0)!=1){if((K|0)!=3){J=K;I=780;break}if(((c[k>>2]|0)-(c[s>>2]|0)|0\ +)>>>0<=4096){J=3;I=780;break}}c[q>>2]=2;J=2;I=780}}while(0);if((I|0)==780){I=0;\ +M=c[r>>2]|0;N=J}if(!(M>>>0<3|N>>>0>M>>>0)){break}if((c[y>>2]|0)==0){c[y>>2]=1;c\ +[k>>2]=(c[k>>2]|0)+1;K=(c[g>>2]|0)-1|0;c[g>>2]=K;F=K;continue}K=a[(c[l>>2]|0)+(\ +(c[k>>2]|0)-1)|0]|0;b[(c[v>>2]|0)+(c[u>>2]<<1)>>1]=0;G=c[u>>2]|0;c[u>>2]=G+1;a[\ +(c[w>>2]|0)+G|0]=K;G=e+148+((K&255)<<2)|0;b[G>>1]=(b[G>>1]|0)+1&65535;do{if((c[\ +u>>2]|0)==((c[x>>2]|0)-1|0)){G=c[z>>2]|0;if((G|0)>-1){O=(c[l>>2]|0)+G|0}else{O=\ +0}ba(A,O,(c[k>>2]|0)-G|0,0);c[z>>2]=c[k>>2];G=c[B>>2]|0;K=G+28|0;L=c[K>>2]|0;P=\ +c[L+20>>2]|0;Q=G+16|0;R=c[Q>>2]|0;S=P>>>0>R>>>0?R:P;if((S|0)==0){break}P=G+12|0\ +;R=c[P>>2]|0;T=c[L+16>>2]|0;bn(R|0,T|0,S)|0;c[P>>2]=(c[P>>2]|0)+S;P=(c[K>>2]|0)\ ++16|0;c[P>>2]=(c[P>>2]|0)+S;P=G+20|0;c[P>>2]=(c[P>>2]|0)+S;c[Q>>2]=(c[Q>>2]|0)-\ +S;Q=(c[K>>2]|0)+20|0;c[Q>>2]=(c[Q>>2]|0)-S;S=c[K>>2]|0;if((c[S+20>>2]|0)!=0){br\ +eak}c[S+16>>2]=c[S+8>>2]}}while(0);c[k>>2]=(c[k>>2]|0)+1;S=(c[g>>2]|0)-1|0;c[g>\ +>2]=S;if((c[(c[B>>2]|0)+16>>2]|0)==0){H=0;I=817;break L1069}else{F=S}}F=c[k>>2]\ +|0;S=F-3+(c[g>>2]|0)|0;K=M+253|0;Q=F+65535-(c[t>>2]|0)&65535;b[(c[v>>2]|0)+(c[u\ +>>2]<<1)>>1]=Q;F=c[u>>2]|0;c[u>>2]=F+1;a[(c[w>>2]|0)+F|0]=K&255;F=Q-1&65535;Q=e\ ++148+((d[12952+(K&255)|0]|0|256)+1<<2)|0;b[Q>>1]=(b[Q>>1]|0)+1&65535;Q=F&65535;\ +if((F&65535)<256){U=Q}else{U=(Q>>>7)+256|0}Q=e+2440+((d[U+13680|0]|0)<<2)|0;b[Q\ +>>1]=(b[Q>>1]|0)+1&65535;Q=c[u>>2]|0;F=(c[x>>2]|0)-1|0;K=c[r>>2]|0;c[g>>2]=1-K+\ +(c[g>>2]|0);P=K-2|0;c[r>>2]=P;K=P;do{P=c[k>>2]|0;G=P+1|0;c[k>>2]=G;if(G>>>0>S>>\ +>0){V=K}else{T=((d[(c[l>>2]|0)+(P+3)|0]|0)^c[i>>2]<>2])&c[m>>2];c[i>>2]=T;\ +b[(c[p>>2]|0)+((c[o>>2]&G)<<1)>>1]=b[(c[n>>2]|0)+(T<<1)>>1]|0;b[(c[n>>2]|0)+(c[\ +i>>2]<<1)>>1]=c[k>>2]&65535;V=c[r>>2]|0}K=V-1|0;c[r>>2]=K;}while((K|0)!=0);c[y>\ +>2]=0;c[q>>2]=2;K=(c[k>>2]|0)+1|0;c[k>>2]=K;if((Q|0)!=(F|0)){continue}S=c[z>>2]\ +|0;if((S|0)>-1){W=(c[l>>2]|0)+S|0}else{W=0}ba(A,W,K-S|0,0);c[z>>2]=c[k>>2];S=c[\ +B>>2]|0;K=S+28|0;T=c[K>>2]|0;G=c[T+20>>2]|0;P=S+16|0;R=c[P>>2]|0;L=G>>>0>R>>>0?\ +R:G;do{if((L|0)!=0){G=S+12|0;R=c[G>>2]|0;X=c[T+16>>2]|0;bn(R|0,X|0,L)|0;c[G>>2]\ +=(c[G>>2]|0)+L;G=(c[K>>2]|0)+16|0;c[G>>2]=(c[G>>2]|0)+L;G=S+20|0;c[G>>2]=(c[G>>\ +2]|0)+L;c[P>>2]=(c[P>>2]|0)-L;G=(c[K>>2]|0)+20|0;c[G>>2]=(c[G>>2]|0)-L;G=c[K>>2\ +]|0;if((c[G+20>>2]|0)!=0){break}c[G+16>>2]=c[G+8>>2]}}while(0);if((c[(c[B>>2]|0\ +)+16>>2]|0)==0){H=0;I=816;break}}if((I|0)==804){if((c[y>>2]|0)!=0){W=a[(c[l>>2]\ +|0)+((c[k>>2]|0)-1)|0]|0;b[(c[v>>2]|0)+(c[u>>2]<<1)>>1]=0;v=c[u>>2]|0;c[u>>2]=v\ ++1;a[(c[w>>2]|0)+v|0]=W;v=e+148+((W&255)<<2)|0;b[v>>1]=(b[v>>1]|0)+1&65535;c[y>\ +>2]=0}y=c[z>>2]|0;if((y|0)>-1){Y=(c[l>>2]|0)+y|0}else{Y=0}l=(f|0)==4;ba(A,Y,(c[\ +k>>2]|0)-y|0,l&1);c[z>>2]=c[k>>2];k=c[B>>2]|0;z=k+28|0;y=c[z>>2]|0;Y=c[y+20>>2]\ +|0;A=k+16|0;f=c[A>>2]|0;v=Y>>>0>f>>>0?f:Y;do{if((v|0)!=0){Y=k+12|0;f=c[Y>>2]|0;\ +W=c[y+16>>2]|0;bn(f|0,W|0,v)|0;c[Y>>2]=(c[Y>>2]|0)+v;Y=(c[z>>2]|0)+16|0;c[Y>>2]\ +=(c[Y>>2]|0)+v;Y=k+20|0;c[Y>>2]=(c[Y>>2]|0)+v;c[A>>2]=(c[A>>2]|0)-v;Y=(c[z>>2]|\ +0)+20|0;c[Y>>2]=(c[Y>>2]|0)-v;Y=c[z>>2]|0;if((c[Y+20>>2]|0)!=0){break}c[Y+16>>2\ +]=c[Y+8>>2]}}while(0);if((c[(c[B>>2]|0)+16>>2]|0)==0){H=l?2:0;return H|0}else{H\ +=l?3:1;return H|0}}else if((I|0)==815){return H|0}else if((I|0)==816){return H|\ +0}else if((I|0)==817){return H|0}return 0}function a9(d,f,g,h){d=d|0;f=f|0;g=g|\ +0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;i=d+5820|0;\ +j=c[i>>2]|0;k=h&65535;h=d+5816|0;l=e[h>>1]|0|k<>1]=l&65535;if((j|0)>13){\ +m=d+20|0;n=c[m>>2]|0;c[m>>2]=n+1;o=d+8|0;a[(c[o>>2]|0)+n|0]=l&255;n=(e[h>>1]|0)\ +>>>8&255;p=c[m>>2]|0;c[m>>2]=p+1;a[(c[o>>2]|0)+p|0]=n;n=c[i>>2]|0;p=k>>>((16-n|\ +0)>>>0);b[h>>1]=p&65535;q=n-13|0;r=p}else{q=j+3|0;r=l}l=r&255;c[i>>2]=q;do{if((\ +q|0)>8){r=d+20|0;j=c[r>>2]|0;c[r>>2]=j+1;p=d+8|0;a[(c[p>>2]|0)+j|0]=l;j=(e[h>>1\ +]|0)>>>8&255;n=c[r>>2]|0;c[r>>2]=n+1;a[(c[p>>2]|0)+n|0]=j;s=r;t=p}else{p=d+20|0\ +;if((q|0)>0){r=c[p>>2]|0;c[p>>2]=r+1;j=d+8|0;a[(c[j>>2]|0)+r|0]=l;s=p;t=j;break\ +}else{s=p;t=d+8|0;break}}}while(0);b[h>>1]=0;c[i>>2]=0;c[d+5812>>2]=8;d=c[s>>2]\ +|0;c[s>>2]=d+1;a[(c[t>>2]|0)+d|0]=g&255;d=c[s>>2]|0;c[s>>2]=d+1;a[(c[t>>2]|0)+d\ +|0]=g>>>8&255;d=g&65535^65535;i=c[s>>2]|0;c[s>>2]=i+1;a[(c[t>>2]|0)+i|0]=d&255;\ +i=c[s>>2]|0;c[s>>2]=i+1;a[(c[t>>2]|0)+i|0]=d>>>8&255;if((g|0)==0){return}else{u\ +=g;v=f}while(1){f=u-1|0;g=a[v]|0;d=c[s>>2]|0;c[s>>2]=d+1;a[(c[t>>2]|0)+d|0]=g;i\ +f((f|0)==0){break}else{u=f;v=v+1|0}}return}function ba(f,g,h,i){f=f|0;g=g|0;h=h\ +|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=\ +0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;if((c[f+132>>2]|0)>0){j=(c[f>\ +>2]|0)+44|0;if((c[j>>2]|0)==2){k=-201342849;l=0;while(1){if((k&1|0)!=0){if((b[f\ ++148+(l<<2)>>1]|0)!=0){m=0;break}}n=l+1|0;if((n|0)<32){k=k>>>1;l=n}else{o=838;b\ +reak}}L1167:do{if((o|0)==838){if((b[f+184>>1]|0)!=0){m=1;break}if((b[f+188>>1]|\ +0)!=0){m=1;break}if((b[f+200>>1]|0)==0){p=32}else{m=1;break}while(1){if((p|0)>=\ +256){m=0;break L1167}if((b[f+148+(p<<2)>>1]|0)==0){p=p+1|0}else{m=1;break}}}}wh\ +ile(0);c[j>>2]=m}bb(f,f+2840|0);bb(f,f+2852|0);be(f,f+148|0,c[f+2844>>2]|0);be(\ +f,f+2440|0,c[f+2856>>2]|0);bb(f,f+2864|0);m=18;while(1){if((m|0)<=2){break}if((\ +b[f+2684+(d[m+12504|0]<<2)+2>>1]|0)==0){m=m-1|0}else{break}}j=f+5800|0;p=(m*3&-\ +1)+17+(c[j>>2]|0)|0;c[j>>2]=p;j=(p+10|0)>>>3;p=((c[f+5804>>2]|0)+10|0)>>>3;q=p>\ +>>0>j>>>0?j:p;r=p;s=m}else{m=h+5|0;q=m;r=m;s=0}do{if((h+4|0)>>>0>q>>>0|(g|0)==0\ +){m=f+5820|0;p=c[m>>2]|0;j=(p|0)>13;if((c[f+136>>2]|0)==4|(r|0)==(q|0)){o=i+2&6\ +5535;l=f+5816|0;k=e[l>>1]|o<>1]=k&65535;if(j){n=f+20|0;t=c[n>>2]|0;c[n>>\ +2]=t+1;u=f+8|0;a[(c[u>>2]|0)+t|0]=k&255;k=(e[l>>1]|0)>>>8&255;t=c[n>>2]|0;c[n>>\ +2]=t+1;a[(c[u>>2]|0)+t|0]=k;k=c[m>>2]|0;b[l>>1]=o>>>((16-k|0)>>>0)&65535;v=k-13\ +|0}else{v=p+3|0}c[m>>2]=v;bc(f,16,1192);break}k=i+4&65535;o=f+5816|0;l=e[o>>1]|\ +k<>1]=t;if(j){j=f+20|0;u=c[j>>2]|0;c[j>>2]=u+1;n=f+8|0;a[(c[n>\ +>2]|0)+u|0]=l&255;l=(e[o>>1]|0)>>>8&255;u=c[j>>2]|0;c[j>>2]=u+1;a[(c[n>>2]|0)+u\ +|0]=l;l=c[m>>2]|0;u=k>>>((16-l|0)>>>0)&65535;b[o>>1]=u;w=l-13|0;x=u}else{w=p+3|\ +0;x=t}c[m>>2]=w;t=c[f+2844>>2]|0;p=c[f+2856>>2]|0;u=s+1|0;l=t+65280&65535;k=x&6\ +5535|l<>1]=n;if((w|0)>11){j=f+20|0;y=c[j>>2]|0;c[j>>2]=y+1;z=f\ ++8|0;a[(c[z>>2]|0)+y|0]=k&255;k=(e[o>>1]|0)>>>8&255;y=c[j>>2]|0;c[j>>2]=y+1;a[(\ +c[z>>2]|0)+y|0]=k;k=c[m>>2]|0;y=l>>>((16-k|0)>>>0)&65535;b[o>>1]=y;A=k-11|0;B=y\ +}else{A=w+5|0;B=n}c[m>>2]=A;n=p&65535;y=n<>1]=k;if((A|\ +0)>11){l=f+20|0;z=c[l>>2]|0;c[l>>2]=z+1;j=f+8|0;a[(c[j>>2]|0)+z|0]=y&255;y=(e[o\ +>>1]|0)>>>8&255;z=c[l>>2]|0;c[l>>2]=z+1;a[(c[j>>2]|0)+z|0]=y;y=c[m>>2]|0;z=n>>>\ +((16-y|0)>>>0)&65535;b[o>>1]=z;C=y-11|0;D=z}else{C=A+5|0;D=k}c[m>>2]=C;k=s+6553\ +3&65535;z=k<>1]=y;if((C|0)>12){n=f+20|0;j=c[n>>2]|0;c[\ +n>>2]=j+1;l=f+8|0;a[(c[l>>2]|0)+j|0]=z&255;z=(e[o>>1]|0)>>>8&255;j=c[n>>2]|0;c[\ +n>>2]=j+1;a[(c[l>>2]|0)+j|0]=z;z=c[m>>2]|0;j=k>>>((16-z|0)>>>0)&65535;b[o>>1]=j\ +;E=z-12|0;F=j}else{E=C+4|0;F=y}c[m>>2]=E;if((u|0)>0){y=f+20|0;j=f+8|0;z=0;k=E;l\ +=F;while(1){n=e[f+2684+(d[z+12504|0]<<2)+2>>1]|0;G=n<>\ +1]=H;if((k|0)>13){I=c[y>>2]|0;c[y>>2]=I+1;a[(c[j>>2]|0)+I|0]=G&255;G=(e[o>>1]|0\ +)>>>8&255;I=c[y>>2]|0;c[y>>2]=I+1;a[(c[j>>2]|0)+I|0]=G;G=c[m>>2]|0;I=n>>>((16-G\ +|0)>>>0)&65535;b[o>>1]=I;J=G-13|0;K=I}else{J=k+3|0;K=H}c[m>>2]=J;H=z+1|0;if((H|\ +0)<(u|0)){z=H;k=J;l=K}else{break}}}l=f+148|0;bd(f,l,t);k=f+2440|0;bd(f,k,p);bc(\ +f,l,k)}else{a9(f,g,h,i)}}while(0);a7(f);if((i|0)==0){return}i=f+5820|0;h=c[i>>2\ +]|0;do{if((h|0)>8){g=f+5816|0;K=b[g>>1]&255;J=f+20|0;F=c[J>>2]|0;c[J>>2]=F+1;E=\ +f+8|0;a[(c[E>>2]|0)+F|0]=K;K=(e[g>>1]|0)>>>8&255;F=c[J>>2]|0;c[J>>2]=F+1;a[(c[E\ +>>2]|0)+F|0]=K;L=g}else{g=f+5816|0;if((h|0)<=0){L=g;break}K=b[g>>1]&255;F=f+20|\ +0;E=c[F>>2]|0;c[F>>2]=E+1;a[(c[f+8>>2]|0)+E|0]=K;L=g}}while(0);b[L>>1]=0;c[i>>2\ +]=0;return}function bb(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0\ +,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=\ +0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,_=0;h=i;i=i+32|0;j=h|\ +0;k=g|0;l=c[k>>2]|0;m=g+8|0;n=c[m>>2]|0;o=c[n>>2]|0;p=c[n+12>>2]|0;n=f+5200|0;c\ +[n>>2]=0;q=f+5204|0;c[q>>2]=573;if((p|0)>0){r=0;s=-1;while(1){if((b[l+(r<<2)>>1\ +]|0)==0){b[l+(r<<2)+2>>1]=0;t=s}else{u=(c[n>>2]|0)+1|0;c[n>>2]=u;c[f+2908+(u<<2\ +)>>2]=r;a[r+(f+5208)|0]=0;t=r}u=r+1|0;if((u|0)<(p|0)){r=u;s=t}else{break}}s=c[n\ +>>2]|0;if((s|0)<2){v=s;w=t;x=886}else{y=t}}else{v=0;w=-1;x=886}if((x|0)==886){x\ +=f+5800|0;t=f+5804|0;if((o|0)==0){s=w;r=v;while(1){u=(s|0)<2;z=s+1|0;A=u?z:s;B=\ +u?z:0;z=r+1|0;c[n>>2]=z;c[f+2908+(z<<2)>>2]=B;b[l+(B<<2)>>1]=1;a[B+(f+5208)|0]=\ +0;c[x>>2]=(c[x>>2]|0)-1;B=c[n>>2]|0;if((B|0)<2){s=A;r=B}else{y=A;break}}}else{r\ +=w;w=v;while(1){v=(r|0)<2;s=r+1|0;A=v?s:r;B=v?s:0;s=w+1|0;c[n>>2]=s;c[f+2908+(s\ +<<2)>>2]=B;b[l+(B<<2)>>1]=1;a[B+(f+5208)|0]=0;c[x>>2]=(c[x>>2]|0)-1;c[t>>2]=(c[\ +t>>2]|0)-(e[o+(B<<2)+2>>1]|0);B=c[n>>2]|0;if((B|0)<2){r=A;w=B}else{y=A;break}}}\ +}w=g+4|0;c[w>>2]=y;g=c[n>>2]|0;if((g|0)>1){r=(g|0)/2&-1;o=g;while(1){t=c[f+2908\ ++(r<<2)>>2]|0;x=t+(f+5208)|0;A=r<<1;L1248:do{if((A|0)>(o|0)){C=r}else{B=l+(t<<2\ +)|0;s=r;v=A;z=o;while(1){do{if((v|0)<(z|0)){u=v|1;D=c[f+2908+(u<<2)>>2]|0;E=b[l\ ++(D<<2)>>1]|0;F=c[f+2908+(v<<2)>>2]|0;G=b[l+(F<<2)>>1]|0;if((E&65535)>=(G&65535\ +)){if(E<<16>>16!=G<<16>>16){H=v;break}if((d[D+(f+5208)|0]|0)>(d[F+(f+5208)|0]|0\ +)){H=v;break}}H=u}else{H=v}}while(0);u=b[B>>1]|0;F=c[f+2908+(H<<2)>>2]|0;D=b[l+\ +(F<<2)>>1]|0;if((u&65535)<(D&65535)){C=s;break L1248}if(u<<16>>16==D<<16>>16){i\ +f((d[x]|0)<=(d[F+(f+5208)|0]|0)){C=s;break L1248}}c[f+2908+(s<<2)>>2]=F;F=H<<1;\ +D=c[n>>2]|0;if((F|0)>(D|0)){C=H;break}else{s=H;v=F;z=D}}}}while(0);c[f+2908+(C<\ +<2)>>2]=t;x=r-1|0;A=c[n>>2]|0;if((x|0)>0){r=x;o=A}else{I=A;break}}}else{I=g}g=f\ ++2912|0;o=p;p=I;while(1){I=c[g>>2]|0;r=p-1|0;c[n>>2]=r;C=c[f+2908+(p<<2)>>2]|0;\ +c[g>>2]=C;H=C+(f+5208)|0;L1267:do{if((r|0)<2){J=1}else{A=l+(C<<2)|0;x=1;z=2;v=r\ +;while(1){do{if((z|0)<(v|0)){s=z|1;B=c[f+2908+(s<<2)>>2]|0;D=b[l+(B<<2)>>1]|0;F\ +=c[f+2908+(z<<2)>>2]|0;u=b[l+(F<<2)>>1]|0;if((D&65535)>=(u&65535)){if(D<<16>>16\ +!=u<<16>>16){K=z;break}if((d[B+(f+5208)|0]|0)>(d[F+(f+5208)|0]|0)){K=z;break}}K\ +=s}else{K=z}}while(0);s=b[A>>1]|0;F=c[f+2908+(K<<2)>>2]|0;B=b[l+(F<<2)>>1]|0;if\ +((s&65535)<(B&65535)){J=x;break L1267}if(s<<16>>16==B<<16>>16){if((d[H]|0)<=(d[\ +F+(f+5208)|0]|0)){J=x;break L1267}}c[f+2908+(x<<2)>>2]=F;F=K<<1;B=c[n>>2]|0;if(\ +(F|0)>(B|0)){J=K;break}else{x=K;z=F;v=B}}}}while(0);c[f+2908+(J<<2)>>2]=C;H=c[g\ +>>2]|0;r=(c[q>>2]|0)-1|0;c[q>>2]=r;c[f+2908+(r<<2)>>2]=I;r=(c[q>>2]|0)-1|0;c[q>\ +>2]=r;c[f+2908+(r<<2)>>2]=H;r=l+(o<<2)|0;b[r>>1]=(b[l+(H<<2)>>1]|0)+(b[l+(I<<2)\ +>>1]|0)&65535;t=a[I+(f+5208)|0]|0;v=a[H+(f+5208)|0]|0;z=o+(f+5208)|0;a[z]=((t&2\ +55)<(v&255)?v:t)+1&255;t=o&65535;b[l+(H<<2)+2>>1]=t;b[l+(I<<2)+2>>1]=t;t=o+1|0;\ +c[g>>2]=o;H=c[n>>2]|0;L1283:do{if((H|0)<2){L=1}else{v=1;x=2;A=H;while(1){do{if(\ +(x|0)<(A|0)){B=x|1;F=c[f+2908+(B<<2)>>2]|0;s=b[l+(F<<2)>>1]|0;u=c[f+2908+(x<<2)\ +>>2]|0;D=b[l+(u<<2)>>1]|0;if((s&65535)>=(D&65535)){if(s<<16>>16!=D<<16>>16){M=x\ +;break}if((d[F+(f+5208)|0]|0)>(d[u+(f+5208)|0]|0)){M=x;break}}M=B}else{M=x}}whi\ +le(0);B=b[r>>1]|0;u=c[f+2908+(M<<2)>>2]|0;F=b[l+(u<<2)>>1]|0;if((B&65535)<(F&65\ +535)){L=v;break L1283}if(B<<16>>16==F<<16>>16){if((d[z]|0)<=(d[u+(f+5208)|0]|0)\ +){L=v;break L1283}}c[f+2908+(v<<2)>>2]=u;u=M<<1;F=c[n>>2]|0;if((u|0)>(F|0)){L=M\ +;break}else{v=M;x=u;A=F}}}}while(0);c[f+2908+(L<<2)>>2]=o;z=c[n>>2]|0;if((z|0)>\ +1){o=t;p=z}else{break}}p=c[g>>2]|0;g=(c[q>>2]|0)-1|0;c[q>>2]=g;c[f+2908+(g<<2)>\ +>2]=p;p=c[k>>2]|0;k=c[w>>2]|0;w=c[m>>2]|0;m=c[w>>2]|0;g=c[w+4>>2]|0;o=c[w+8>>2]\ +|0;n=c[w+16>>2]|0;w=f+2876|0;bm(w|0,0,32);b[p+(c[f+2908+(c[q>>2]<<2)>>2]<<2)+2>\ +>1]=0;L=(c[q>>2]|0)+1|0;L1299:do{if((L|0)<573){q=f+5800|0;M=f+5804|0;if((m|0)==\ +0){J=0;K=L;while(1){z=c[f+2908+(K<<2)>>2]|0;r=p+(z<<2)+2|0;H=(e[p+(e[r>>1]<<2)+\ +2>>1]|0)+1|0;I=(H|0)>(n|0);C=I?n:H;H=(I&1)+J|0;b[r>>1]=C&65535;if((z|0)<=(k|0))\ +{r=f+2876+(C<<1)|0;b[r>>1]=(b[r>>1]|0)+1&65535;if((z|0)<(o|0)){N=0}else{N=c[g+(\ +z-o<<2)>>2]|0}r=Z(e[p+(z<<2)>>1]|0,N+C|0)|0;c[q>>2]=r+(c[q>>2]|0)}r=K+1|0;if((r\ +|0)<573){J=H;K=r}else{O=H;break}}}else{K=0;J=L;while(1){t=c[f+2908+(J<<2)>>2]|0\ +;H=p+(t<<2)+2|0;r=(e[p+(e[H>>1]<<2)+2>>1]|0)+1|0;C=(r|0)>(n|0);z=C?n:r;r=(C&1)+\ +K|0;b[H>>1]=z&65535;if((t|0)<=(k|0)){H=f+2876+(z<<1)|0;b[H>>1]=(b[H>>1]|0)+1&65\ +535;if((t|0)<(o|0)){P=0}else{P=c[g+(t-o<<2)>>2]|0}H=e[p+(t<<2)>>1]|0;C=Z(H,P+z|\ +0)|0;c[q>>2]=C+(c[q>>2]|0);C=Z((e[m+(t<<2)+2>>1]|0)+P|0,H)|0;c[M>>2]=C+(c[M>>2]\ +|0)}C=J+1|0;if((C|0)<573){K=r;J=C}else{O=r;break}}}if((O|0)==0){break}J=f+2876+\ +(n<<1)|0;K=O;do{M=n;while(1){r=M-1|0;Q=f+2876+(r<<1)|0;R=b[Q>>1]|0;if(R<<16>>16\ +==0){M=r}else{break}}b[Q>>1]=R-1&65535;r=f+2876+(M<<1)|0;b[r>>1]=(b[r>>1]|0)+2&\ +65535;S=(b[J>>1]|0)-1&65535;b[J>>1]=S;K=K-2|0;}while((K|0)>0);if((n|0)==0){brea\ +k}else{T=n;U=573;V=S}while(1){K=T&65535;if(V<<16>>16==0){W=U}else{J=V&65535;r=U\ +;while(1){C=r;do{C=C-1|0;X=c[f+2908+(C<<2)>>2]|0;}while((X|0)>(k|0));H=p+(X<<2)\ ++2|0;t=e[H>>1]|0;if((t|0)!=(T|0)){z=Z(e[p+(X<<2)>>1]|0,T-t|0)|0;c[q>>2]=z+(c[q>\ +>2]|0);b[H>>1]=K}H=J-1|0;if((H|0)==0){W=C;break}else{J=H;r=C}}}r=T-1|0;if((r|0)\ +==0){break L1299}T=r;U=W;V=b[f+2876+(r<<1)>>1]|0}}}while(0);V=b[w>>1]<<1;b[j+2>\ +>1]=V;w=((b[f+2878>>1]|0)+V&65535)<<1;b[j+4>>1]=w;V=(w+(b[f+2880>>1]|0)&65535)<\ +<1;b[j+6>>1]=V;w=(V+(b[f+2882>>1]|0)&65535)<<1;b[j+8>>1]=w;V=(w+(b[f+2884>>1]|0\ +)&65535)<<1;b[j+10>>1]=V;w=(V+(b[f+2886>>1]|0)&65535)<<1;b[j+12>>1]=w;V=(w+(b[f\ ++2888>>1]|0)&65535)<<1;b[j+14>>1]=V;w=(V+(b[f+2890>>1]|0)&65535)<<1;b[j+16>>1]=\ +w;V=(w+(b[f+2892>>1]|0)&65535)<<1;b[j+18>>1]=V;w=(V+(b[f+2894>>1]|0)&65535)<<1;\ +b[j+20>>1]=w;V=(w+(b[f+2896>>1]|0)&65535)<<1;b[j+22>>1]=V;w=(V+(b[f+2898>>1]|0)\ +&65535)<<1;b[j+24>>1]=w;V=(w+(b[f+2900>>1]|0)&65535)<<1;b[j+26>>1]=V;w=(V+(b[f+\ +2902>>1]|0)&65535)<<1;b[j+28>>1]=w;b[j+30>>1]=(w+(b[f+2904>>1]|0)&65535)<<1;if(\ +(y|0)<0){i=h;return}else{Y=0}do{f=b[l+(Y<<2)+2>>1]|0;w=f&65535;if(f<<16>>16!=0)\ +{f=j+(w<<1)|0;V=b[f>>1]|0;b[f>>1]=V+1&65535;f=0;W=w;w=V&65535;while(1){_=f|w&1;\ +V=W-1|0;if((V|0)>0){f=_<<1;W=V;w=w>>>1}else{break}}b[l+(Y<<2)>>1]=_&65535}Y=Y+1\ +|0;}while((Y|0)<=(y|0));i=h;return}function bc(f,g,h){f=f|0;g=g|0;h=h|0;var i=0\ +,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=\ +0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;i=f+5792|0;if((c[i>>2]|0)\ +==0){j=c[f+5820>>2]|0;k=b[f+5816>>1]|0}else{l=f+5796|0;m=f+5784|0;n=f+5820|0;o=\ +f+5816|0;p=f+20|0;q=f+8|0;r=0;while(1){s=b[(c[l>>2]|0)+(r<<1)>>1]|0;t=s&65535;u\ +=r+1|0;v=d[(c[m>>2]|0)+r|0]|0;do{if(s<<16>>16==0){w=e[g+(v<<2)+2>>1]|0;x=c[n>>2\ +]|0;y=e[g+(v<<2)>>1]|0;z=e[o>>1]|0|y<>1]=A;if((x|0)>(16-w|0)){\ +B=c[p>>2]|0;c[p>>2]=B+1;a[(c[q>>2]|0)+B|0]=z&255;z=(e[o>>1]|0)>>>8&255;B=c[p>>2\ +]|0;c[p>>2]=B+1;a[(c[q>>2]|0)+B|0]=z;z=c[n>>2]|0;B=y>>>((16-z|0)>>>0)&65535;b[o\ +>>1]=B;y=w-16+z|0;c[n>>2]=y;C=y;D=B;break}else{B=x+w|0;c[n>>2]=B;C=B;D=A;break}\ +}else{A=d[v+12952|0]|0;B=(A|256)+1|0;w=e[g+(B<<2)+2>>1]|0;x=c[n>>2]|0;y=e[g+(B<\ +<2)>>1]|0;B=e[o>>1]|0|y<>1]=z;if((x|0)>(16-w|0)){E=c[p>>2]|0;c\ +[p>>2]=E+1;a[(c[q>>2]|0)+E|0]=B&255;B=(e[o>>1]|0)>>>8&255;E=c[p>>2]|0;c[p>>2]=E\ ++1;a[(c[q>>2]|0)+E|0]=B;B=c[n>>2]|0;E=y>>>((16-B|0)>>>0)&65535;b[o>>1]=E;F=w-16\ ++B|0;G=E}else{F=x+w|0;G=z}c[n>>2]=F;z=c[3856+(A<<2)>>2]|0;do{if((A-8|0)>>>0<20)\ +{w=v-(c[12528+(A<<2)>>2]|0)&65535;x=w<>1]=E;if((F|0)>(\ +16-z|0)){B=c[p>>2]|0;c[p>>2]=B+1;a[(c[q>>2]|0)+B|0]=x&255;x=(e[o>>1]|0)>>>8&255\ +;B=c[p>>2]|0;c[p>>2]=B+1;a[(c[q>>2]|0)+B|0]=x;x=c[n>>2]|0;B=w>>>((16-x|0)>>>0)&\ +65535;b[o>>1]=B;w=z-16+x|0;c[n>>2]=w;H=w;I=B;break}else{B=F+z|0;c[n>>2]=B;H=B;I\ +=E;break}}else{H=F;I=G}}while(0);z=t-1|0;if(z>>>0<256){J=z}else{J=(z>>>7)+256|0\ +}A=d[J+13680|0]|0;E=e[h+(A<<2)+2>>1]|0;B=e[h+(A<<2)>>1]|0;w=I&65535|B<>1]=x;if((H|0)>(16-E|0)){y=c[p>>2]|0;c[p>>2]=y+1;a[(c[q>>2]|0)+y|0]=w&2\ +55;w=(e[o>>1]|0)>>>8&255;y=c[p>>2]|0;c[p>>2]=y+1;a[(c[q>>2]|0)+y|0]=w;w=c[n>>2]\ +|0;y=B>>>((16-w|0)>>>0)&65535;b[o>>1]=y;K=E-16+w|0;L=y}else{K=H+E|0;L=x}c[n>>2]\ +=K;x=c[3976+(A<<2)>>2]|0;if((A-4|0)>>>0>=26){C=K;D=L;break}E=z-(c[12648+(A<<2)>\ +>2]|0)&65535;A=E<>1]=z;if((K|0)>(16-x|0)){y=c[p>>2]|0;\ +c[p>>2]=y+1;a[(c[q>>2]|0)+y|0]=A&255;A=(e[o>>1]|0)>>>8&255;y=c[p>>2]|0;c[p>>2]=\ +y+1;a[(c[q>>2]|0)+y|0]=A;A=c[n>>2]|0;y=E>>>((16-A|0)>>>0)&65535;b[o>>1]=y;E=x-1\ +6+A|0;c[n>>2]=E;C=E;D=y;break}else{y=K+x|0;c[n>>2]=y;C=y;D=z;break}}}while(0);i\ +f(u>>>0<(c[i>>2]|0)>>>0){r=u}else{j=C;k=D;break}}}D=g+1026|0;C=e[D>>1]|0;r=f+58\ +20|0;i=e[g+1024>>1]|0;g=f+5816|0;n=k&65535|i<>1]=n&65535;if((j|0)>(16-C|\ +0)){k=f+20|0;K=c[k>>2]|0;c[k>>2]=K+1;o=f+8|0;a[(c[o>>2]|0)+K|0]=n&255;n=(e[g>>1\ +]|0)>>>8&255;K=c[k>>2]|0;c[k>>2]=K+1;a[(c[o>>2]|0)+K|0]=n;n=c[r>>2]|0;b[g>>1]=i\ +>>>((16-n|0)>>>0)&65535;M=C-16+n|0;c[r>>2]=M;N=b[D>>1]|0;O=N&65535;P=f+5812|0;c\ +[P>>2]=O;return}else{M=j+C|0;c[r>>2]=M;N=b[D>>1]|0;O=N&65535;P=f+5812|0;c[P>>2]\ +=O;return}}function bd(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0\ +,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=\ +0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;h=b[f+2>>\ +1]|0;i=h<<16>>16==0;j=d+2754|0;k=d+5820|0;l=d+2752|0;m=d+5816|0;n=d+20|0;o=d+8|\ +0;p=d+2758|0;q=d+2756|0;r=d+2750|0;s=d+2748|0;t=0;u=-1;v=h&65535;h=i?138:7;w=i?\ +3:4;L1393:while(1){i=t;x=0;while(1){if((i|0)>(g|0)){break L1393}y=i+1|0;z=b[f+(\ +y<<2)+2>>1]|0;A=z&65535;B=x+1|0;C=(v|0)==(A|0);if((B|0)<(h|0)&C){i=y;x=B}else{b\ +reak}}do{if((B|0)<(w|0)){i=d+2684+(v<<2)+2|0;D=d+2684+(v<<2)|0;E=B;F=c[k>>2]|0;\ +G=b[m>>1]|0;while(1){H=e[i>>1]|0;I=e[D>>1]|0;J=G&65535|I<>1]=K\ +;if((F|0)>(16-H|0)){L=c[n>>2]|0;c[n>>2]=L+1;a[(c[o>>2]|0)+L|0]=J&255;J=(e[m>>1]\ +|0)>>>8&255;L=c[n>>2]|0;c[n>>2]=L+1;a[(c[o>>2]|0)+L|0]=J;J=c[k>>2]|0;L=I>>>((16\ +-J|0)>>>0)&65535;b[m>>1]=L;M=H-16+J|0;N=L}else{M=F+H|0;N=K}c[k>>2]=M;K=E-1|0;if\ +((K|0)==0){break}else{E=K;F=M;G=N}}}else{if((v|0)!=0){if((v|0)==(u|0)){O=B;P=c[\ +k>>2]|0;Q=b[m>>1]|0}else{G=e[d+2684+(v<<2)+2>>1]|0;F=c[k>>2]|0;E=e[d+2684+(v<<2\ +)>>1]|0;D=e[m>>1]|0|E<>1]=i;if((F|0)>(16-G|0)){K=c[n>>2]|0;c[n\ +>>2]=K+1;a[(c[o>>2]|0)+K|0]=D&255;D=(e[m>>1]|0)>>>8&255;K=c[n>>2]|0;c[n>>2]=K+1\ +;a[(c[o>>2]|0)+K|0]=D;D=c[k>>2]|0;K=E>>>((16-D|0)>>>0)&65535;b[m>>1]=K;R=G-16+D\ +|0;S=K}else{R=F+G|0;S=i}c[k>>2]=R;O=x;P=R;Q=S}i=e[r>>1]|0;G=e[s>>1]|0;F=Q&65535\ +|G<>1]=K;if((P|0)>(16-i|0)){D=c[n>>2]|0;c[n>>2]=D+1;a[(c[o>>2]\ +|0)+D|0]=F&255;F=(e[m>>1]|0)>>>8&255;D=c[n>>2]|0;c[n>>2]=D+1;a[(c[o>>2]|0)+D|0]\ +=F;F=c[k>>2]|0;D=G>>>((16-F|0)>>>0)&65535;b[m>>1]=D;T=i-16+F|0;U=D}else{T=P+i|0\ +;U=K}c[k>>2]=T;K=O+65533&65535;i=U&65535|K<>1]=i&65535;if((T|0)>14){D=c[\ +n>>2]|0;c[n>>2]=D+1;a[(c[o>>2]|0)+D|0]=i&255;i=(e[m>>1]|0)>>>8&255;D=c[n>>2]|0;\ +c[n>>2]=D+1;a[(c[o>>2]|0)+D|0]=i;i=c[k>>2]|0;b[m>>1]=K>>>((16-i|0)>>>0)&65535;c\ +[k>>2]=i-14;break}else{c[k>>2]=T+2;break}}if((B|0)<11){i=e[j>>1]|0;K=c[k>>2]|0;\ +D=e[l>>1]|0;F=e[m>>1]|0|D<>1]=G;if((K|0)>(16-i|0)){E=c[n>>2]|0\ +;c[n>>2]=E+1;a[(c[o>>2]|0)+E|0]=F&255;F=(e[m>>1]|0)>>>8&255;E=c[n>>2]|0;c[n>>2]\ +=E+1;a[(c[o>>2]|0)+E|0]=F;F=c[k>>2]|0;E=D>>>((16-F|0)>>>0)&65535;b[m>>1]=E;V=i-\ +16+F|0;W=E}else{V=K+i|0;W=G}c[k>>2]=V;G=x+65534&65535;i=W&65535|G<>1]=i&\ +65535;if((V|0)>13){K=c[n>>2]|0;c[n>>2]=K+1;a[(c[o>>2]|0)+K|0]=i&255;i=(e[m>>1]|\ +0)>>>8&255;K=c[n>>2]|0;c[n>>2]=K+1;a[(c[o>>2]|0)+K|0]=i;i=c[k>>2]|0;b[m>>1]=G>>\ +>((16-i|0)>>>0)&65535;c[k>>2]=i-13;break}else{c[k>>2]=V+3;break}}else{i=e[p>>1]\ +|0;G=c[k>>2]|0;K=e[q>>1]|0;E=e[m>>1]|0|K<>1]=F;if((G|0)>(16-i|\ +0)){D=c[n>>2]|0;c[n>>2]=D+1;a[(c[o>>2]|0)+D|0]=E&255;E=(e[m>>1]|0)>>>8&255;D=c[\ +n>>2]|0;c[n>>2]=D+1;a[(c[o>>2]|0)+D|0]=E;E=c[k>>2]|0;D=K>>>((16-E|0)>>>0)&65535\ +;b[m>>1]=D;X=i-16+E|0;Y=D}else{X=G+i|0;Y=F}c[k>>2]=X;F=x+65526&65535;i=Y&65535|\ +F<>1]=i&65535;if((X|0)>9){G=c[n>>2]|0;c[n>>2]=G+1;a[(c[o>>2]|0)+G|0]=i&2\ +55;i=(e[m>>1]|0)>>>8&255;G=c[n>>2]|0;c[n>>2]=G+1;a[(c[o>>2]|0)+G|0]=i;i=c[k>>2]\ +|0;b[m>>1]=F>>>((16-i|0)>>>0)&65535;c[k>>2]=i-9;break}else{c[k>>2]=X+7;break}}}\ +}while(0);if(z<<16>>16==0){t=y;u=v;v=A;h=138;w=3;continue}t=y;u=v;v=A;h=C?6:7;w\ +=C?3:4}return}function be(a,c,d){a=a|0;c=c|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,\ +l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=b[c+2>>1]|0;g=f<<16>>16==0;b[c+(d+1<<2)+2>>1]\ +=-1;h=a+2752|0;i=a+2756|0;j=a+2748|0;k=g?3:4;l=g?138:7;g=f&65535;f=0;m=-1;L1447\ +:while(1){n=0;o=f;do{if((o|0)>(d|0)){break L1447}o=o+1|0;p=b[c+(o<<2)+2>>1]|0;q\ +=p&65535;n=n+1|0;r=(g|0)==(q|0);}while((n|0)<(l|0)&r);do{if((n|0)<(k|0)){s=a+26\ +84+(g<<2)|0;b[s>>1]=(e[s>>1]|0)+n&65535}else{if((g|0)==0){if((n|0)<11){b[h>>1]=\ +(b[h>>1]|0)+1&65535;break}else{b[i>>1]=(b[i>>1]|0)+1&65535;break}}else{if((g|0)\ +!=(m|0)){s=a+2684+(g<<2)|0;b[s>>1]=(b[s>>1]|0)+1&65535}b[j>>1]=(b[j>>1]|0)+1&65\ +535;break}}}while(0);if(p<<16>>16==0){k=3;l=138;m=g;g=q;f=o;continue}k=r?3:4;l=\ +r?6:7;m=g;g=q;f=o}return}function bf(a,b,c){a=a|0;b=b|0;c=c|0;return bk(Z(c,b)|\ +0)|0}function bg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n\ +=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,\ +H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;if((b|0)==0){return}a=b-8|0;d=a;e=c[330\ +6]|0;if(a>>>0>>0){am()}f=c[b-4>>2]|0;g=f&3;if((g|0)==1){am()}h=f&-8;i=b+(h-8\ +)|0;j=i;L1479:do{if((f&1|0)==0){k=c[a>>2]|0;if((g|0)==0){return}l=-8-k|0;m=b+l|\ +0;n=m;o=k+h|0;if(m>>>0>>0){am()}if((n|0)==(c[3307]|0)){p=b+(h-4)|0;if((c[p>>\ +2]&3|0)!=3){q=n;r=o;break}c[3304]=o;c[p>>2]=c[p>>2]&-2;c[b+(l+4)>>2]=o|1;c[i>>2\ +]=o;return}p=k>>>3;if(k>>>0<256){k=c[b+(l+8)>>2]|0;s=c[b+(l+12)>>2]|0;t=13248+(\ +p<<1<<2)|0;do{if((k|0)!=(t|0)){if(k>>>0>>0){am()}if((c[k+12>>2]|0)==(n|0)){b\ +reak}am()}}while(0);if((s|0)==(k|0)){c[3302]=c[3302]&(1<>>0>>0){am()}v=s+8|0;if((c[v>>2]|0)==(n|\ +0)){u=v;break}am()}}while(0);c[k+12>>2]=s;c[u>>2]=k;q=n;r=o;break}t=m;p=c[b+(l+\ +24)>>2]|0;v=c[b+(l+12)>>2]|0;do{if((v|0)==(t|0)){w=b+(l+20)|0;x=c[w>>2]|0;if((x\ +|0)==0){y=b+(l+16)|0;z=c[y>>2]|0;if((z|0)==0){A=0;break}else{B=z;C=y}}else{B=x;\ +C=w}while(1){w=B+20|0;x=c[w>>2]|0;if((x|0)!=0){B=x;C=w;continue}w=B+16|0;x=c[w>\ +>2]|0;if((x|0)==0){break}else{B=x;C=w}}if(C>>>0>>0){am()}else{c[C>>2]=0;A=B;\ +break}}else{w=c[b+(l+8)>>2]|0;if(w>>>0>>0){am()}x=w+12|0;if((c[x>>2]|0)!=(t|\ +0)){am()}y=v+8|0;if((c[y>>2]|0)==(t|0)){c[x>>2]=v;c[y>>2]=w;A=v;break}else{am()\ +}}}while(0);if((p|0)==0){q=n;r=o;break}v=b+(l+28)|0;m=13512+(c[v>>2]<<2)|0;do{i\ +f((t|0)==(c[m>>2]|0)){c[m>>2]=A;if((A|0)!=0){break}c[3303]=c[3303]&(1<>2]^\ +-1);q=n;r=o;break L1479}else{if(p>>>0<(c[3306]|0)>>>0){am()}k=p+16|0;if((c[k>>2\ +]|0)==(t|0)){c[k>>2]=A}else{c[p+20>>2]=A}if((A|0)==0){q=n;r=o;break L1479}}}whi\ +le(0);if(A>>>0<(c[3306]|0)>>>0){am()}c[A+24>>2]=p;t=c[b+(l+16)>>2]|0;do{if((t|0\ +)!=0){if(t>>>0<(c[3306]|0)>>>0){am()}else{c[A+16>>2]=t;c[t+24>>2]=A;break}}}whi\ +le(0);t=c[b+(l+20)>>2]|0;if((t|0)==0){q=n;r=o;break}if(t>>>0<(c[3306]|0)>>>0){a\ +m()}else{c[A+20>>2]=t;c[t+24>>2]=A;q=n;r=o;break}}else{q=d;r=h}}while(0);d=q;if\ +(d>>>0>=i>>>0){am()}A=b+(h-4)|0;e=c[A>>2]|0;if((e&1|0)==0){am()}do{if((e&2|0)==\ +0){if((j|0)==(c[3308]|0)){B=(c[3305]|0)+r|0;c[3305]=B;c[3308]=q;c[q+4>>2]=B|1;i\ +f((q|0)==(c[3307]|0)){c[3307]=0;c[3304]=0}if(B>>>0<=(c[3309]|0)>>>0){return}do{\ +if((c[340]|0)==0){B=al(8)|0;if((B-1&B|0)==0){c[342]=B;c[341]=B;c[343]=-1;c[344]\ +=2097152;c[345]=0;c[3413]=0;c[340]=(aF(0)|0)&-16^1431655768;break}else{am()}}}w\ +hile(0);o=c[3308]|0;if((o|0)==0){return}n=c[3305]|0;do{if(n>>>0>40){l=c[342]|0;\ +B=Z((((n-41+l|0)>>>0)/(l>>>0)>>>0)-1|0,l)|0;C=o;u=13656;while(1){g=c[u>>2]|0;if\ +(g>>>0<=C>>>0){if((g+(c[u+4>>2]|0)|0)>>>0>C>>>0){D=u;break}}g=c[u+8>>2]|0;if((g\ +|0)==0){D=0;break}else{u=g}}if((c[D+12>>2]&8|0)!=0){break}u=aB(0)|0;C=D+4|0;if(\ +(u|0)!=((c[D>>2]|0)+(c[C>>2]|0)|0)){break}g=aB(-(B>>>0>2147483646?-2147483648-l\ +|0:B)|0)|0;a=aB(0)|0;if(!((g|0)!=-1&a>>>0>>0)){break}g=u-a|0;if((u|0)==(a|0)\ +){break}c[C>>2]=(c[C>>2]|0)-g;c[3410]=(c[3410]|0)-g;C=c[3308]|0;a=(c[3305]|0)-g\ +|0;g=C;u=C+8|0;if((u&7|0)==0){E=0}else{E=-u&7}u=a-E|0;c[3308]=g+E;c[3305]=u;c[g\ ++(E+4)>>2]=u|1;c[g+(a+4)>>2]=40;c[3309]=c[344];return}}while(0);if((c[3305]|0)>\ +>>0<=(c[3309]|0)>>>0){return}c[3309]=-1;return}if((j|0)==(c[3307]|0)){o=(c[3304\ +]|0)+r|0;c[3304]=o;c[3307]=q;c[q+4>>2]=o|1;c[d+o>>2]=o;return}o=(e&-8)+r|0;n=e>\ +>>3;L1613:do{if(e>>>0<256){a=c[b+h>>2]|0;g=c[b+(h|4)>>2]|0;u=13248+(n<<1<<2)|0;\ +do{if((a|0)!=(u|0)){if(a>>>0<(c[3306]|0)>>>0){am()}if((c[a+12>>2]|0)==(j|0)){br\ +eak}am()}}while(0);if((g|0)==(a|0)){c[3302]=c[3302]&(1<>>0<(c[3306]|0)>>>0){am()}B=g+8|0;if((c[B>>2]|0)==(j\ +|0)){F=B;break}am()}}while(0);c[a+12>>2]=g;c[F>>2]=a}else{u=i;B=c[b+(h+16)>>2]|\ +0;l=c[b+(h|4)>>2]|0;do{if((l|0)==(u|0)){C=b+(h+12)|0;f=c[C>>2]|0;if((f|0)==0){t\ +=b+(h+8)|0;p=c[t>>2]|0;if((p|0)==0){G=0;break}else{H=p;I=t}}else{H=f;I=C}while(\ +1){C=H+20|0;f=c[C>>2]|0;if((f|0)!=0){H=f;I=C;continue}C=H+16|0;f=c[C>>2]|0;if((\ +f|0)==0){break}else{H=f;I=C}}if(I>>>0<(c[3306]|0)>>>0){am()}else{c[I>>2]=0;G=H;\ +break}}else{C=c[b+h>>2]|0;if(C>>>0<(c[3306]|0)>>>0){am()}f=C+12|0;if((c[f>>2]|0\ +)!=(u|0)){am()}t=l+8|0;if((c[t>>2]|0)==(u|0)){c[f>>2]=l;c[t>>2]=C;G=l;break}els\ +e{am()}}}while(0);if((B|0)==0){break}l=b+(h+20)|0;a=13512+(c[l>>2]<<2)|0;do{if(\ +(u|0)==(c[a>>2]|0)){c[a>>2]=G;if((G|0)!=0){break}c[3303]=c[3303]&(1<>2]^-1\ +);break L1613}else{if(B>>>0<(c[3306]|0)>>>0){am()}g=B+16|0;if((c[g>>2]|0)==(u|0\ +)){c[g>>2]=G}else{c[B+20>>2]=G}if((G|0)==0){break L1613}}}while(0);if(G>>>0<(c[\ +3306]|0)>>>0){am()}c[G+24>>2]=B;u=c[b+(h+8)>>2]|0;do{if((u|0)!=0){if(u>>>0<(c[3\ +306]|0)>>>0){am()}else{c[G+16>>2]=u;c[u+24>>2]=G;break}}}while(0);u=c[b+(h+12)>\ +>2]|0;if((u|0)==0){break}if(u>>>0<(c[3306]|0)>>>0){am()}else{c[G+20>>2]=u;c[u+2\ +4>>2]=G;break}}}while(0);c[q+4>>2]=o|1;c[d+o>>2]=o;if((q|0)!=(c[3307]|0)){J=o;b\ +reak}c[3304]=o;return}else{c[A>>2]=e&-2;c[q+4>>2]=r|1;c[d+r>>2]=r;J=r}}while(0)\ +;r=J>>>3;if(J>>>0<256){d=r<<1;e=13248+(d<<2)|0;A=c[3302]|0;G=1<>2]|0;if(\ +h>>>0>=(c[3306]|0)>>>0){K=h;L=r;break}am()}}while(0);c[L>>2]=q;c[K+12>>2]=q;c[q\ ++8>>2]=K;c[q+12>>2]=e;return}e=q;K=J>>>8;do{if((K|0)==0){M=0}else{if(J>>>0>1677\ +7215){M=31;break}L=(K+1048320|0)>>>16&8;d=K<>>16&4;A=d<>>16&2;r=14-(G|L|d)+(A<>>15)|0;M=J>>>((r+7|0)>>>0)&1|r<<1}}while\ +(0);K=13512+(M<<2)|0;c[q+28>>2]=M;c[q+20>>2]=0;c[q+16>>2]=0;r=c[3303]|0;d=1<>2]=e;c[q+24>>2]=K;c[q+12>>2]=q;c[q+8>>2]=q}e\ +lse{if((M|0)==31){N=0}else{N=25-(M>>>1)|0}A=J<>2]|0;while(1){if((c[L+4\ +>>2]&-8|0)==(J|0)){break}O=L+16+(A>>>31<<2)|0;G=c[O>>2]|0;if((G|0)==0){P=1200;b\ +reak}else{A=A<<1;L=G}}if((P|0)==1200){if(O>>>0<(c[3306]|0)>>>0){am()}else{c[O>>\ +2]=e;c[q+24>>2]=L;c[q+12>>2]=q;c[q+8>>2]=q;break}}A=L+8|0;o=c[A>>2]|0;G=c[3306]\ +|0;if(L>>>0>>0){am()}if(o>>>0>>0){am()}else{c[o+12>>2]=e;c[A>>2]=e;c[q+8>\ +>2]=o;c[q+12>>2]=L;c[q+24>>2]=0;break}}}while(0);q=(c[3310]|0)-1|0;c[3310]=q;if\ +((q|0)==0){Q=13664}else{return}while(1){q=c[Q>>2]|0;if((q|0)==0){break}else{Q=q\ ++8|0}}c[3310]=-1;return}function bh(a,b,c){a=a|0;b=b|0;c=c|0;var e=0,f=0,g=0,h=\ +0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B\ +=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,\ +V=0;e=a>>>16;f=a&65535;if((c|0)==1){a=(d[b]|0)+f|0;g=a>>>0>65520?a-65521|0:a;a=\ +g+e|0;h=(a>>>0>65520?a+15|0:a)<<16|g;return h|0}if((b|0)==0){h=1;return h|0}if(\ +c>>>0<16){if((c|0)==0){i=f;j=e}else{g=f;a=b;k=c;l=e;while(1){m=k-1|0;n=(d[a]|0)\ ++g|0;o=n+l|0;if((m|0)==0){i=n;j=o;break}else{g=n;a=a+1|0;k=m;l=o}}}h=(j>>>0)%65\ +521>>>0<<16|(i>>>0>65520?i-65521|0:i);return h|0}do{if(c>>>0>5551){i=f;j=b;l=c;\ +k=e;do{l=l-5552|0;a=347;g=k;o=j;m=i;while(1){n=(d[o]|0)+m|0;p=n+(d[o+1|0]|0)|0;\ +q=p+(d[o+2|0]|0)|0;r=q+(d[o+3|0]|0)|0;s=r+(d[o+4|0]|0)|0;t=s+(d[o+5|0]|0)|0;u=t\ ++(d[o+6|0]|0)|0;v=u+(d[o+7|0]|0)|0;w=v+(d[o+8|0]|0)|0;x=w+(d[o+9|0]|0)|0;y=x+(d\ +[o+10|0]|0)|0;z=y+(d[o+11|0]|0)|0;A=z+(d[o+12|0]|0)|0;B=A+(d[o+13|0]|0)|0;C=B+(\ +d[o+14|0]|0)|0;D=C+(d[o+15|0]|0)|0;E=n+g+p+q+r+s+t+u+v+w+x+y+z+A+B+C+D|0;C=a-1|\ +0;if((C|0)==0){break}else{a=C;g=E;o=o+16|0;m=D}}j=j+5552|0;i=(D>>>0)%65521>>>0;\ +k=(E>>>0)%65521>>>0;}while(l>>>0>5551);if((l|0)==0){F=k;G=i;break}if(l>>>0>15){\ +H=i;I=j;J=l;K=k;L=1260}else{M=i;N=j;O=l;P=k;L=1261}}else{H=f;I=b;J=c;K=e;L=1260\ +}}while(0);if((L|0)==1260){while(1){L=0;Q=J-16|0;e=(d[I]|0)+H|0;c=e+(d[I+1|0]|0\ +)|0;b=c+(d[I+2|0]|0)|0;f=b+(d[I+3|0]|0)|0;E=f+(d[I+4|0]|0)|0;D=E+(d[I+5|0]|0)|0\ +;m=D+(d[I+6|0]|0)|0;o=m+(d[I+7|0]|0)|0;g=o+(d[I+8|0]|0)|0;a=g+(d[I+9|0]|0)|0;C=\ +a+(d[I+10|0]|0)|0;B=C+(d[I+11|0]|0)|0;A=B+(d[I+12|0]|0)|0;z=A+(d[I+13|0]|0)|0;y\ +=z+(d[I+14|0]|0)|0;R=y+(d[I+15|0]|0)|0;S=e+K+c+b+f+E+D+m+o+g+a+C+B+A+z+y+R|0;T=\ +I+16|0;if(Q>>>0>15){H=R;I=T;J=Q;K=S;L=1260}else{break}}if((Q|0)==0){U=R;V=S;L=1\ +262}else{M=R;N=T;O=Q;P=S;L=1261}}if((L|0)==1261){while(1){L=0;S=O-1|0;Q=(d[N]|0\ +)+M|0;T=Q+P|0;if((S|0)==0){U=Q;V=T;L=1262;break}else{M=Q;N=N+1|0;O=S;P=T;L=1261\ +}}}if((L|0)==1262){F=(V>>>0)%65521>>>0;G=(U>>>0)%65521>>>0}h=F<<16|G;return h|0\ +}function bi(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o\ +=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;if((b|0)==0){f=0;return f|0}g=a^-1;L1767:do{\ +if((e|0)==0){h=g}else{a=b;i=e;j=g;while(1){if((a&3|0)==0){break}k=c[4192+(((d[a\ +]|0)^j&255)<<2)>>2]^j>>>8;l=i-1|0;if((l|0)==0){h=k;break L1767}else{a=a+1|0;i=l\ +;j=k}}k=a;if(i>>>0>31){l=i;m=j;n=k;while(1){o=c[n>>2]^m;p=c[6240+((o>>>8&255)<<\ +2)>>2]^c[7264+((o&255)<<2)>>2]^c[5216+((o>>>16&255)<<2)>>2]^c[4192+(o>>>24<<2)>\ +>2]^c[n+4>>2];o=c[6240+((p>>>8&255)<<2)>>2]^c[7264+((p&255)<<2)>>2]^c[5216+((p>\ +>>16&255)<<2)>>2]^c[4192+(p>>>24<<2)>>2]^c[n+8>>2];p=c[6240+((o>>>8&255)<<2)>>2\ +]^c[7264+((o&255)<<2)>>2]^c[5216+((o>>>16&255)<<2)>>2]^c[4192+(o>>>24<<2)>>2]^c\ +[n+12>>2];o=c[6240+((p>>>8&255)<<2)>>2]^c[7264+((p&255)<<2)>>2]^c[5216+((p>>>16\ +&255)<<2)>>2]^c[4192+(p>>>24<<2)>>2]^c[n+16>>2];p=c[6240+((o>>>8&255)<<2)>>2]^c\ +[7264+((o&255)<<2)>>2]^c[5216+((o>>>16&255)<<2)>>2]^c[4192+(o>>>24<<2)>>2]^c[n+\ +20>>2];o=c[6240+((p>>>8&255)<<2)>>2]^c[7264+((p&255)<<2)>>2]^c[5216+((p>>>16&25\ +5)<<2)>>2]^c[4192+(p>>>24<<2)>>2]^c[n+24>>2];p=n+32|0;q=c[6240+((o>>>8&255)<<2)\ +>>2]^c[7264+((o&255)<<2)>>2]^c[5216+((o>>>16&255)<<2)>>2]^c[4192+(o>>>24<<2)>>2\ +]^c[n+28>>2];o=c[6240+((q>>>8&255)<<2)>>2]^c[7264+((q&255)<<2)>>2]^c[5216+((q>>\ +>16&255)<<2)>>2]^c[4192+(q>>>24<<2)>>2];q=l-32|0;if(q>>>0>31){l=q;m=o;n=p}else{\ +r=q;s=o;t=p;break}}}else{r=i;s=j;t=k}if(r>>>0>3){n=r;m=s;l=t;while(1){a=l+4|0;p\ +=c[l>>2]^m;o=c[6240+((p>>>8&255)<<2)>>2]^c[7264+((p&255)<<2)>>2]^c[5216+((p>>>1\ +6&255)<<2)>>2]^c[4192+(p>>>24<<2)>>2];p=n-4|0;if(p>>>0>3){n=p;m=o;l=a}else{u=p;\ +v=o;w=a;break}}}else{u=r;v=s;w=t}if((u|0)==0){h=v;break}l=v;m=u;n=w;while(1){k=\ +c[4192+(((d[n]|0)^l&255)<<2)>>2]^l>>>8;j=m-1|0;if((j|0)==0){h=k;break}else{l=k;\ +m=j;n=n+1|0}}}}while(0);f=h^-1;return f|0}function bj(d,f,g,h,j,k){d=d|0;f=f|0;\ +g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0\ +,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=\ +0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;l=i;i=i+32|0;m=l|0;n=i;i=i+32|0;bm(m|0,0,\ +32);o=(g|0)==0;if(!o){p=0;do{q=m+(e[f+(p<<1)>>1]<<1)|0;b[q>>1]=(b[q>>1]|0)+1&65\ +535;p=p+1|0;}while(p>>>0>>0)}p=c[j>>2]|0;q=15;while(1){if((q|0)==0){r=1290;b\ +reak}if((b[m+(q<<1)>>1]|0)==0){q=q-1|0}else{break}}if((r|0)==1290){s=c[h>>2]|0;\ +c[h>>2]=s+4;a[s|0]=64;a[s+1|0]=1;b[s+2>>1]=0;s=c[h>>2]|0;c[h>>2]=s+4;a[s|0]=64;\ +a[s+1|0]=1;b[s+2>>1]=0;c[j>>2]=1;t=0;i=l;return t|0}s=p>>>0>q>>>0?q:p;p=1;while\ +(1){if(p>>>0>=q>>>0){break}if((b[m+(p<<1)>>1]|0)==0){p=p+1|0}else{break}}u=s>>>\ +0

>>0?p:s;s=1;v=1;while(1){if(v>>>0>=16){break}w=(s<<1)-(e[m+(v<<1)>>1]|0)|0;\ +if((w|0)<0){t=-1;r=1339;break}else{s=w;v=v+1|0}}if((r|0)==1339){i=l;return t|0}\ +do{if((s|0)>0){if((d|0)!=0&(q|0)==1){break}else{t=-1}i=l;return t|0}}while(0);b\ +[n+2>>1]=0;s=b[m+2>>1]|0;b[n+4>>1]=s;v=(b[m+4>>1]|0)+s&65535;b[n+6>>1]=v;s=(b[m\ ++6>>1]|0)+v&65535;b[n+8>>1]=s;v=(b[m+8>>1]|0)+s&65535;b[n+10>>1]=v;s=(b[m+10>>1\ +]|0)+v&65535;b[n+12>>1]=s;v=(b[m+12>>1]|0)+s&65535;b[n+14>>1]=v;s=(b[m+14>>1]|0\ +)+v&65535;b[n+16>>1]=s;v=(b[m+16>>1]|0)+s&65535;b[n+18>>1]=v;s=(b[m+18>>1]|0)+v\ +&65535;b[n+20>>1]=s;v=(b[m+20>>1]|0)+s&65535;b[n+22>>1]=v;s=(b[m+22>>1]|0)+v&65\ +535;b[n+24>>1]=s;v=(b[m+24>>1]|0)+s&65535;b[n+26>>1]=v;s=(b[m+26>>1]|0)+v&65535\ +;b[n+28>>1]=s;b[n+30>>1]=(b[m+28>>1]|0)+s&65535;if(!o){o=0;do{s=b[f+(o<<1)>>1]|\ +0;if(s<<16>>16!=0){v=n+((s&65535)<<1)|0;s=b[v>>1]|0;b[v>>1]=s+1&65535;b[k+((s&6\ +5535)<<1)>>1]=o&65535}o=o+1|0;}while(o>>>0>>0)}do{if((d|0)==0){x=0;y=1<>>0>851){t=1}else{x=1;y=g;z=256;A=\ +870;B=934;C=0;break}i=l;return t|0}else{g=1<>>0>591){t=1}e\ +lse{x=0;y=g;z=-1;A=1512;B=1576;C=o;break}i=l;return t|0}}while(0);d=y-1|0;o=u&2\ +55;g=c[h>>2]|0;n=-1;s=0;v=y;y=0;w=u;D=0;E=p;L1825:while(1){p=1<>1]|0;L=K&65535;do{if((L|0)<(z|0)){M=0;N=K\ +}else{if((L|0)<=(z|0)){M=96;N=0;break}M=b[A+(L<<1)>>1]&255;N=b[B+(L<<1)>>1]|0}}\ +while(0);L=1<>>(y>>>0);O=p;while(1){P=O-L|0;Q=P+K|0;a[g+(Q<<2)|0]=M;a[g+\ +(Q<<2)+1|0]=J;b[g+(Q<<2)+2>>1]=N;if((O|0)==(L|0)){break}else{O=P}}O=1<>>1}}if((O|0)==0){R=0}else{R=(O-1&F)+O|0}S=G\ ++1|0;L=m+(H<<1)|0;K=(b[L>>1]|0)-1&65535;b[L>>1]=K;if(K<<16>>16==0){if((H|0)==(q\ +|0)){break L1825}T=e[f+(e[k+(S<<1)>>1]<<1)>>1]|0}else{T=H}if(T>>>0<=u>>>0){F=R;\ +G=S;H=T;continue}U=R&d;if((U|0)==(n|0)){F=R;G=S;H=T}else{break}}H=(y|0)==0?u:y;\ +G=g+(p<<2)|0;F=T-H|0;L1848:do{if(T>>>0>>0){K=F;L=1<>1]|0)|0;if((P|0)<1){V=K;break L1848}Q=K+1|0;W=Q+H|0;if(W>>>0>>0){K=Q\ +;L=P<<1;I=W}else{V=Q;break}}}else{V=F}}while(0);F=(1<>>0>851|C&F\ +>>>0>591){t=1;r=1343;break}a[(c[h>>2]|0)+(U<<2)|0]=V&255;a[(c[h>>2]|0)+(U<<2)+1\ +|0]=o;p=c[h>>2]|0;b[p+(U<<2)+2>>1]=(G-p|0)>>>2&65535;g=G;n=U;s=R;v=F;y=H;w=V;D=\ +S;E=T}if((r|0)==1343){i=l;return t|0}L1858:do{if((R|0)!=0){r=q;T=y;E=R;S=J;D=g;\ +while(1){do{if((T|0)==0){X=D;Y=S;Z=0;_=r}else{if((E&d|0)==(n|0)){X=D;Y=S;Z=T;_=\ +r;break}X=c[h>>2]|0;Y=o;Z=0;_=u}}while(0);V=E>>>(Z>>>0);a[X+(V<<2)|0]=64;a[X+(V\ +<<2)+1|0]=Y;b[X+(V<<2)+2>>1]=0;V=1<<_-1;while(1){if((V&E|0)==0){break}else{V=V>\ +>>1}}if((V|0)==0){break L1858}w=(V-1&E)+V|0;if((w|0)==0){break}else{r=_;T=Z;E=w\ +;S=Y;D=X}}}}while(0);c[h>>2]=(c[h>>2]|0)+(v<<2);c[j>>2]=u;t=0;i=l;return t|0}fu\ +nction bk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,\ +q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0\ +,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,a\ +b=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,\ +at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aD=0,aE=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aL=0\ +;do{if(a>>>0<245){if(a>>>0<11){b=16}else{b=a+11&-8}d=b>>>3;e=c[3302]|0;f=e>>>(d\ +>>>0);if((f&3|0)!=0){g=(f&1^1)+d|0;h=g<<1;i=13248+(h<<2)|0;j=13248+(h+2<<2)|0;h\ +=c[j>>2]|0;k=h+8|0;l=c[k>>2]|0;do{if((i|0)==(l|0)){c[3302]=e&(1<>>0<(c[3306]|0)>>>0){am();return 0;return 0}m=l+12|0;if((c[m>>2]|0)==(h|0)){c\ +[m>>2]=i;c[j>>2]=l;break}else{am();return 0;return 0}}}while(0);l=g<<3;c[h+4>>2\ +]=l|3;j=h+(l|4)|0;c[j>>2]=c[j>>2]|1;n=k;return n|0}if(b>>>0<=(c[3304]|0)>>>0){o\ +=b;break}if((f|0)!=0){j=2<>>12&16;i=j>>>(l>>>\ +0);j=i>>>5&8;m=i>>>(j>>>0);i=m>>>2&4;p=m>>>(i>>>0);m=p>>>1&2;q=p>>>(m>>>0);p=q>\ +>>1&1;r=(j|l|i|m|p)+(q>>>(p>>>0))|0;p=r<<1;q=13248+(p<<2)|0;m=13248+(p+2<<2)|0;\ +p=c[m>>2]|0;i=p+8|0;l=c[i>>2]|0;do{if((q|0)==(l|0)){c[3302]=e&(1<>>0<(c[3306]|0)>>>0){am();return 0;return 0}j=l+12|0;if((c[j>>2]|0)==(p|0)){\ +c[j>>2]=q;c[m>>2]=l;break}else{am();return 0;return 0}}}while(0);l=r<<3;m=l-b|0\ +;c[p+4>>2]=b|3;q=p;e=q+b|0;c[q+(b|4)>>2]=m|1;c[q+l>>2]=m;l=c[3304]|0;if((l|0)!=\ +0){q=c[3307]|0;d=l>>>3;l=d<<1;f=13248+(l<<2)|0;k=c[3302]|0;h=1<>2]|0;if(\ +g>>>0>=(c[3306]|0)>>>0){s=g;t=d;break}am();return 0;return 0}}while(0);c[t>>2]=\ +q;c[s+12>>2]=q;c[q+8>>2]=s;c[q+12>>2]=f}c[3304]=m;c[3307]=e;n=i;return n|0}l=c[\ +3303]|0;if((l|0)==0){o=b;break}h=(l&-l)-1|0;l=h>>>12&16;k=h>>>(l>>>0);h=k>>>5&8\ +;p=k>>>(h>>>0);k=p>>>2&4;r=p>>>(k>>>0);p=r>>>1&2;d=r>>>(p>>>0);r=d>>>1&1;g=c[13\ +512+((h|l|k|p|r)+(d>>>(r>>>0))<<2)>>2]|0;r=g;d=g;p=(c[g+4>>2]&-8)-b|0;while(1){\ +g=c[r+16>>2]|0;if((g|0)==0){k=c[r+20>>2]|0;if((k|0)==0){break}else{u=k}}else{u=\ +g}g=(c[u+4>>2]&-8)-b|0;k=g>>>0

>>0;r=u;d=k?u:d;p=k?g:p}r=d;i=c[3306]|0;if(r>>\ +>0>>0){am();return 0;return 0}e=r+b|0;m=e;if(r>>>0>=e>>>0){am();return 0;ret\ +urn 0}e=c[d+24>>2]|0;f=c[d+12>>2]|0;do{if((f|0)==(d|0)){q=d+20|0;g=c[q>>2]|0;if\ +((g|0)==0){k=d+16|0;l=c[k>>2]|0;if((l|0)==0){v=0;break}else{w=l;x=k}}else{w=g;x\ +=q}while(1){q=w+20|0;g=c[q>>2]|0;if((g|0)!=0){w=g;x=q;continue}q=w+16|0;g=c[q>>\ +2]|0;if((g|0)==0){break}else{w=g;x=q}}if(x>>>0>>0){am();return 0;return 0}el\ +se{c[x>>2]=0;v=w;break}}else{q=c[d+8>>2]|0;if(q>>>0>>0){am();return 0;return\ + 0}g=q+12|0;if((c[g>>2]|0)!=(d|0)){am();return 0;return 0}k=f+8|0;if((c[k>>2]|0\ +)==(d|0)){c[g>>2]=f;c[k>>2]=q;v=f;break}else{am();return 0;return 0}}}while(0);\ +L1949:do{if((e|0)!=0){f=d+28|0;i=13512+(c[f>>2]<<2)|0;do{if((d|0)==(c[i>>2]|0))\ +{c[i>>2]=v;if((v|0)!=0){break}c[3303]=c[3303]&(1<>2]^-1);break L1949}else{\ +if(e>>>0<(c[3306]|0)>>>0){am();return 0;return 0}q=e+16|0;if((c[q>>2]|0)==(d|0)\ +){c[q>>2]=v}else{c[e+20>>2]=v}if((v|0)==0){break L1949}}}while(0);if(v>>>0<(c[3\ +306]|0)>>>0){am();return 0;return 0}c[v+24>>2]=e;f=c[d+16>>2]|0;do{if((f|0)!=0)\ +{if(f>>>0<(c[3306]|0)>>>0){am();return 0;return 0}else{c[v+16>>2]=f;c[f+24>>2]=\ +v;break}}}while(0);f=c[d+20>>2]|0;if((f|0)==0){break}if(f>>>0<(c[3306]|0)>>>0){\ +am();return 0;return 0}else{c[v+20>>2]=f;c[f+24>>2]=v;break}}}while(0);if(p>>>0\ +<16){e=p+b|0;c[d+4>>2]=e|3;f=r+(e+4)|0;c[f>>2]=c[f>>2]|1}else{c[d+4>>2]=b|3;c[r\ ++(b|4)>>2]=p|1;c[r+(p+b)>>2]=p;f=c[3304]|0;if((f|0)!=0){e=c[3307]|0;i=f>>>3;f=i\ +<<1;q=13248+(f<<2)|0;k=c[3302]|0;g=1<>2]|0;if(l>>>0>=(c[3306]|0)>>>0){y=\ +l;z=i;break}am();return 0;return 0}}while(0);c[z>>2]=e;c[y+12>>2]=e;c[e+8>>2]=y\ +;c[e+12>>2]=q}c[3304]=p;c[3307]=m}f=d+8|0;if((f|0)==0){o=b;break}else{n=f}retur\ +n n|0}else{if(a>>>0>4294967231){o=-1;break}f=a+11|0;g=f&-8;k=c[3303]|0;if((k|0)\ +==0){o=g;break}r=-g|0;i=f>>>8;do{if((i|0)==0){A=0}else{if(g>>>0>16777215){A=31;\ +break}f=(i+1048320|0)>>>16&8;l=i<>>16&4;j=l<>>16&2;B=14-(h|f|l)+(j<>>15)|0;A=g>>>((B+7|0)>>>0)&1|B<<1}}while(0);i=c[135\ +12+(A<<2)>>2]|0;L1997:do{if((i|0)==0){C=0;D=r;E=0}else{if((A|0)==31){F=0}else{F\ +=25-(A>>>1)|0}d=0;m=r;p=i;q=g<>2]&-8;l=B-g|0;if(l>>>0>>0){if((B|0)==(g|0)){C=p;D=l;E=p;break L1997}else{G=p;H=l}}else{G=d;H=m}l=c[p\ ++20>>2]|0;B=c[p+16+(q>>>31<<2)>>2]|0;j=(l|0)==0|(l|0)==(B|0)?e:l;if((B|0)==0){C\ +=G;D=H;E=j;break}else{d=G;m=H;p=B;q=q<<1;e=j}}}}while(0);if((E|0)==0&(C|0)==0){\ +i=2<>>12&16;e=i>>>(r>>>0)\ +;i=e>>>5&8;q=e>>>(i>>>0);e=q>>>2&4;p=q>>>(e>>>0);q=p>>>1&2;m=p>>>(q>>>0);p=m>>>\ +1&1;I=c[13512+((i|r|e|q|p)+(m>>>(p>>>0))<<2)>>2]|0}else{I=E}if((I|0)==0){J=D;K=\ +C}else{p=I;m=D;q=C;while(1){e=(c[p+4>>2]&-8)-g|0;r=e>>>0>>0;i=r?e:m;e=r?p:q;\ +r=c[p+16>>2]|0;if((r|0)!=0){p=r;m=i;q=e;continue}r=c[p+20>>2]|0;if((r|0)==0){J=\ +i;K=e;break}else{p=r;m=i;q=e}}}if((K|0)==0){o=g;break}if(J>>>0>=((c[3304]|0)-g|\ +0)>>>0){o=g;break}q=K;m=c[3306]|0;if(q>>>0>>0){am();return 0;return 0}p=q+g|\ +0;k=p;if(q>>>0>=p>>>0){am();return 0;return 0}e=c[K+24>>2]|0;i=c[K+12>>2]|0;do{\ +if((i|0)==(K|0)){r=K+20|0;d=c[r>>2]|0;if((d|0)==0){j=K+16|0;B=c[j>>2]|0;if((B|0\ +)==0){L=0;break}else{M=B;N=j}}else{M=d;N=r}while(1){r=M+20|0;d=c[r>>2]|0;if((d|\ +0)!=0){M=d;N=r;continue}r=M+16|0;d=c[r>>2]|0;if((d|0)==0){break}else{M=d;N=r}}i\ +f(N>>>0>>0){am();return 0;return 0}else{c[N>>2]=0;L=M;break}}else{r=c[K+8>>2\ +]|0;if(r>>>0>>0){am();return 0;return 0}d=r+12|0;if((c[d>>2]|0)!=(K|0)){am()\ +;return 0;return 0}j=i+8|0;if((c[j>>2]|0)==(K|0)){c[d>>2]=i;c[j>>2]=r;L=i;break\ +}else{am();return 0;return 0}}}while(0);L2047:do{if((e|0)!=0){i=K+28|0;m=13512+\ +(c[i>>2]<<2)|0;do{if((K|0)==(c[m>>2]|0)){c[m>>2]=L;if((L|0)!=0){break}c[3303]=c\ +[3303]&(1<>2]^-1);break L2047}else{if(e>>>0<(c[3306]|0)>>>0){am();return 0\ +;return 0}r=e+16|0;if((c[r>>2]|0)==(K|0)){c[r>>2]=L}else{c[e+20>>2]=L}if((L|0)=\ +=0){break L2047}}}while(0);if(L>>>0<(c[3306]|0)>>>0){am();return 0;return 0}c[L\ ++24>>2]=e;i=c[K+16>>2]|0;do{if((i|0)!=0){if(i>>>0<(c[3306]|0)>>>0){am();return \ +0;return 0}else{c[L+16>>2]=i;c[i+24>>2]=L;break}}}while(0);i=c[K+20>>2]|0;if((i\ +|0)==0){break}if(i>>>0<(c[3306]|0)>>>0){am();return 0;return 0}else{c[L+20>>2]=\ +i;c[i+24>>2]=L;break}}}while(0);do{if(J>>>0<16){e=J+g|0;c[K+4>>2]=e|3;i=q+(e+4)\ +|0;c[i>>2]=c[i>>2]|1}else{c[K+4>>2]=g|3;c[q+(g|4)>>2]=J|1;c[q+(J+g)>>2]=J;i=J>>\ +>3;if(J>>>0<256){e=i<<1;m=13248+(e<<2)|0;r=c[3302]|0;j=1<>2]|0;if(d>>>0>\ +=(c[3306]|0)>>>0){O=d;P=i;break}am();return 0;return 0}}while(0);c[P>>2]=k;c[O+\ +12>>2]=k;c[q+(g+8)>>2]=O;c[q+(g+12)>>2]=m;break}e=p;j=J>>>8;do{if((j|0)==0){Q=0\ +}else{if(J>>>0>16777215){Q=31;break}r=(j+1048320|0)>>>16&8;i=j<>>16&4;B=i<>>16&2;l=14-(d|r|i)+(B<>>15)|0;Q=J>>>((l+7|0)\ +>>>0)&1|l<<1}}while(0);j=13512+(Q<<2)|0;c[q+(g+28)>>2]=Q;c[q+(g+20)>>2]=0;c[q+(\ +g+16)>>2]=0;m=c[3303]|0;l=1<>2]=e;c[q+(g+24)>\ +>2]=j;c[q+(g+12)>>2]=e;c[q+(g+8)>>2]=e;break}if((Q|0)==31){R=0}else{R=25-(Q>>>1\ +)|0}l=J<>2]|0;while(1){if((c[m+4>>2]&-8|0)==(J|0)){break}S=m+16+(l>>>3\ +1<<2)|0;j=c[S>>2]|0;if((j|0)==0){T=1495;break}else{l=l<<1;m=j}}if((T|0)==1495){\ +if(S>>>0<(c[3306]|0)>>>0){am();return 0;return 0}else{c[S>>2]=e;c[q+(g+24)>>2]=\ +m;c[q+(g+12)>>2]=e;c[q+(g+8)>>2]=e;break}}l=m+8|0;j=c[l>>2]|0;i=c[3306]|0;if(m>\ +>>0>>0){am();return 0;return 0}if(j>>>0>>0){am();return 0;return 0}else{c\ +[j+12>>2]=e;c[l>>2]=e;c[q+(g+8)>>2]=j;c[q+(g+12)>>2]=m;c[q+(g+24)>>2]=0;break}}\ +}while(0);q=K+8|0;if((q|0)==0){o=g;break}else{n=q}return n|0}}while(0);K=c[3304\ +]|0;if(o>>>0<=K>>>0){S=K-o|0;J=c[3307]|0;if(S>>>0>15){R=J;c[3307]=R+o;c[3304]=S\ +;c[R+(o+4)>>2]=S|1;c[R+K>>2]=S;c[J+4>>2]=o|3}else{c[3304]=0;c[3307]=0;c[J+4>>2]\ +=K|3;S=J+(K+4)|0;c[S>>2]=c[S>>2]|1}n=J+8|0;return n|0}J=c[3305]|0;if(o>>>0>>\ +0){S=J-o|0;c[3305]=S;J=c[3308]|0;K=J;c[3308]=K+o;c[K+(o+4)>>2]=S|1;c[J+4>>2]=o|\ +3;n=J+8|0;return n|0}do{if((c[340]|0)==0){J=al(8)|0;if((J-1&J|0)==0){c[342]=J;c\ +[341]=J;c[343]=-1;c[344]=2097152;c[345]=0;c[3413]=0;c[340]=(aF(0)|0)&-16^143165\ +5768;break}else{am();return 0;return 0}}}while(0);J=o+48|0;S=c[342]|0;K=o+47|0;\ +R=S+K|0;Q=-S|0;S=R&Q;if(S>>>0<=o>>>0){n=0;return n|0}O=c[3412]|0;do{if((O|0)!=0\ +){P=c[3410]|0;L=P+S|0;if(L>>>0<=P>>>0|L>>>0>O>>>0){n=0}else{break}return n|0}}w\ +hile(0);L2139:do{if((c[3413]&4|0)==0){O=c[3308]|0;L2141:do{if((O|0)==0){T=1525}\ +else{L=O;P=13656;while(1){U=P|0;M=c[U>>2]|0;if(M>>>0<=L>>>0){V=P+4|0;if((M+(c[V\ +>>2]|0)|0)>>>0>L>>>0){break}}M=c[P+8>>2]|0;if((M|0)==0){T=1525;break L2141}else\ +{P=M}}if((P|0)==0){T=1525;break}L=R-(c[3305]|0)&Q;if(L>>>0>=2147483647){W=0;bre\ +ak}m=aB(L|0)|0;e=(m|0)==((c[U>>2]|0)+(c[V>>2]|0)|0);X=e?m:-1;Y=e?L:0;Z=m;_=L;T=\ +1534}}while(0);do{if((T|0)==1525){O=aB(0)|0;if((O|0)==-1){W=0;break}g=O;L=c[341\ +]|0;m=L-1|0;if((m&g|0)==0){$=S}else{$=S-g+(m+g&-L)|0}L=c[3410]|0;g=L+$|0;if(!($\ +>>>0>o>>>0&$>>>0<2147483647)){W=0;break}m=c[3412]|0;if((m|0)!=0){if(g>>>0<=L>>>\ +0|g>>>0>m>>>0){W=0;break}}m=aB($|0)|0;g=(m|0)==(O|0);X=g?O:-1;Y=g?$:0;Z=m;_=$;T\ +=1534}}while(0);L2161:do{if((T|0)==1534){m=-_|0;if((X|0)!=-1){aa=Y;ab=X;T=1545;\ +break L2139}do{if((Z|0)!=-1&_>>>0<2147483647&_>>>0>>0){g=c[342]|0;O=K-_+g&-g\ +;if(O>>>0>=2147483647){ac=_;break}if((aB(O|0)|0)==-1){aB(m|0)|0;W=Y;break L2161\ +}else{ac=O+_|0;break}}else{ac=_}}while(0);if((Z|0)==-1){W=Y}else{aa=ac;ab=Z;T=1\ +545;break L2139}}}while(0);c[3413]=c[3413]|4;ad=W;T=1542}else{ad=0;T=1542}}whil\ +e(0);do{if((T|0)==1542){if(S>>>0>=2147483647){break}W=aB(S|0)|0;Z=aB(0)|0;if(!(\ +(Z|0)!=-1&(W|0)!=-1&W>>>0>>0)){break}ac=Z-W|0;Z=ac>>>0>(o+40|0)>>>0;Y=Z?W:-1\ +;if((Y|0)!=-1){aa=Z?ac:ad;ab=Y;T=1545}}}while(0);do{if((T|0)==1545){ad=(c[3410]\ +|0)+aa|0;c[3410]=ad;if(ad>>>0>(c[3411]|0)>>>0){c[3411]=ad}ad=c[3308]|0;L2181:do\ +{if((ad|0)==0){S=c[3306]|0;if((S|0)==0|ab>>>0>>0){c[3306]=ab}c[3414]=ab;c[34\ +15]=aa;c[3417]=0;c[3311]=c[340];c[3310]=-1;S=0;do{Y=S<<1;ac=13248+(Y<<2)|0;c[13\ +248+(Y+3<<2)>>2]=ac;c[13248+(Y+2<<2)>>2]=ac;S=S+1|0;}while(S>>>0<32);S=ab+8|0;i\ +f((S&7|0)==0){ae=0}else{ae=-S&7}S=aa-40-ae|0;c[3308]=ab+ae;c[3305]=S;c[ab+(ae+4\ +)>>2]=S|1;c[ab+(aa-36)>>2]=40;c[3309]=c[344]}else{S=13656;while(1){af=c[S>>2]|0\ +;ag=S+4|0;ah=c[ag>>2]|0;if((ab|0)==(af+ah|0)){T=1557;break}ac=c[S+8>>2]|0;if((a\ +c|0)==0){break}else{S=ac}}do{if((T|0)==1557){if((c[S+12>>2]&8|0)!=0){break}ac=a\ +d;if(!(ac>>>0>=af>>>0&ac>>>0>>0)){break}c[ag>>2]=ah+aa;ac=c[3308]|0;Y=(c[33\ +05]|0)+aa|0;Z=ac;W=ac+8|0;if((W&7|0)==0){ai=0}else{ai=-W&7}W=Y-ai|0;c[3308]=Z+a\ +i;c[3305]=W;c[Z+(ai+4)>>2]=W|1;c[Z+(Y+4)>>2]=40;c[3309]=c[344];break L2181}}whi\ +le(0);if(ab>>>0<(c[3306]|0)>>>0){c[3306]=ab}S=ab+aa|0;Y=13656;while(1){aj=Y|0;i\ +f((c[aj>>2]|0)==(S|0)){T=1567;break}Z=c[Y+8>>2]|0;if((Z|0)==0){break}else{Y=Z}}\ +do{if((T|0)==1567){if((c[Y+12>>2]&8|0)!=0){break}c[aj>>2]=ab;S=Y+4|0;c[S>>2]=(c\ +[S>>2]|0)+aa;S=ab+8|0;if((S&7|0)==0){ak=0}else{ak=-S&7}S=ab+(aa+8)|0;if((S&7|0)\ +==0){an=0}else{an=-S&7}S=ab+(an+aa)|0;Z=S;W=ak+o|0;ac=ab+W|0;_=ac;K=S-(ab+ak)-o\ +|0;c[ab+(ak+4)>>2]=o|3;do{if((Z|0)==(c[3308]|0)){J=(c[3305]|0)+K|0;c[3305]=J;c[\ +3308]=_;c[ab+(W+4)>>2]=J|1}else{if((Z|0)==(c[3307]|0)){J=(c[3304]|0)+K|0;c[3304\ +]=J;c[3307]=_;c[ab+(W+4)>>2]=J|1;c[ab+(J+W)>>2]=J;break}J=aa+4|0;X=c[ab+(J+an)>\ +>2]|0;if((X&3|0)==1){$=X&-8;V=X>>>3;L2226:do{if(X>>>0<256){U=c[ab+((an|8)+aa)>>\ +2]|0;Q=c[ab+(aa+12+an)>>2]|0;R=13248+(V<<1<<2)|0;do{if((U|0)!=(R|0)){if(U>>>0<(\ +c[3306]|0)>>>0){am();return 0;return 0}if((c[U+12>>2]|0)==(Z|0)){break}am();ret\ +urn 0;return 0}}while(0);if((Q|0)==(U|0)){c[3302]=c[3302]&(1<>>0<(c[3306]|0)>>>0){am();return 0;return 0}m\ +=Q+8|0;if((c[m>>2]|0)==(Z|0)){ao=m;break}am();return 0;return 0}}while(0);c[U+1\ +2>>2]=Q;c[ao>>2]=U}else{R=S;m=c[ab+((an|24)+aa)>>2]|0;P=c[ab+(aa+12+an)>>2]|0;d\ +o{if((P|0)==(R|0)){O=an|16;g=ab+(J+O)|0;L=c[g>>2]|0;if((L|0)==0){e=ab+(O+aa)|0;\ +O=c[e>>2]|0;if((O|0)==0){ap=0;break}else{aq=O;ar=e}}else{aq=L;ar=g}while(1){g=a\ +q+20|0;L=c[g>>2]|0;if((L|0)!=0){aq=L;ar=g;continue}g=aq+16|0;L=c[g>>2]|0;if((L|\ +0)==0){break}else{aq=L;ar=g}}if(ar>>>0<(c[3306]|0)>>>0){am();return 0;return 0}\ +else{c[ar>>2]=0;ap=aq;break}}else{g=c[ab+((an|8)+aa)>>2]|0;if(g>>>0<(c[3306]|0)\ +>>>0){am();return 0;return 0}L=g+12|0;if((c[L>>2]|0)!=(R|0)){am();return 0;retu\ +rn 0}e=P+8|0;if((c[e>>2]|0)==(R|0)){c[L>>2]=P;c[e>>2]=g;ap=P;break}else{am();re\ +turn 0;return 0}}}while(0);if((m|0)==0){break}P=ab+(aa+28+an)|0;U=13512+(c[P>>2\ +]<<2)|0;do{if((R|0)==(c[U>>2]|0)){c[U>>2]=ap;if((ap|0)!=0){break}c[3303]=c[3303\ +]&(1<>2]^-1);break L2226}else{if(m>>>0<(c[3306]|0)>>>0){am();return 0;retu\ +rn 0}Q=m+16|0;if((c[Q>>2]|0)==(R|0)){c[Q>>2]=ap}else{c[m+20>>2]=ap}if((ap|0)==0\ +){break L2226}}}while(0);if(ap>>>0<(c[3306]|0)>>>0){am();return 0;return 0}c[ap\ ++24>>2]=m;R=an|16;P=c[ab+(R+aa)>>2]|0;do{if((P|0)!=0){if(P>>>0<(c[3306]|0)>>>0)\ +{am();return 0;return 0}else{c[ap+16>>2]=P;c[P+24>>2]=ap;break}}}while(0);P=c[a\ +b+(J+R)>>2]|0;if((P|0)==0){break}if(P>>>0<(c[3306]|0)>>>0){am();return 0;return\ + 0}else{c[ap+20>>2]=P;c[P+24>>2]=ap;break}}}while(0);as=ab+(($|an)+aa)|0;at=$+K\ +|0}else{as=Z;at=K}J=as+4|0;c[J>>2]=c[J>>2]&-2;c[ab+(W+4)>>2]=at|1;c[ab+(at+W)>>\ +2]=at;J=at>>>3;if(at>>>0<256){V=J<<1;X=13248+(V<<2)|0;P=c[3302]|0;m=1<\ +>2]|0;if(U>>>0>=(c[3306]|0)>>>0){au=U;av=J;break}am();return 0;return 0}}while(\ +0);c[av>>2]=_;c[au+12>>2]=_;c[ab+(W+8)>>2]=au;c[ab+(W+12)>>2]=X;break}V=ac;m=at\ +>>>8;do{if((m|0)==0){aw=0}else{if(at>>>0>16777215){aw=31;break}P=(m+1048320|0)>\ +>>16&8;$=m<>>16&4;U=$<>>16&2;Q=14-(J|P|$)+(\ +U<<$>>>15)|0;aw=at>>>((Q+7|0)>>>0)&1|Q<<1}}while(0);m=13512+(aw<<2)|0;c[ab+(W+2\ +8)>>2]=aw;c[ab+(W+20)>>2]=0;c[ab+(W+16)>>2]=0;X=c[3303]|0;Q=1<>2]=V;c[ab+(W+24)>>2]=m;c[ab+(W+12)>>2]=V;c[ab+(W+8)>>2]=V;br\ +eak}if((aw|0)==31){ax=0}else{ax=25-(aw>>>1)|0}Q=at<>2]|0;while(1){if(\ +(c[X+4>>2]&-8|0)==(at|0)){break}ay=X+16+(Q>>>31<<2)|0;m=c[ay>>2]|0;if((m|0)==0)\ +{T=1640;break}else{Q=Q<<1;X=m}}if((T|0)==1640){if(ay>>>0<(c[3306]|0)>>>0){am();\ +return 0;return 0}else{c[ay>>2]=V;c[ab+(W+24)>>2]=X;c[ab+(W+12)>>2]=V;c[ab+(W+8\ +)>>2]=V;break}}Q=X+8|0;m=c[Q>>2]|0;$=c[3306]|0;if(X>>>0<$>>>0){am();return 0;re\ +turn 0}if(m>>>0<$>>>0){am();return 0;return 0}else{c[m+12>>2]=V;c[Q>>2]=V;c[ab+\ +(W+8)>>2]=m;c[ab+(W+12)>>2]=X;c[ab+(W+24)>>2]=0;break}}}while(0);n=ab+(ak|8)|0;\ +return n|0}}while(0);Y=ad;W=13656;while(1){az=c[W>>2]|0;if(az>>>0<=Y>>>0){aA=c[\ +W+4>>2]|0;aD=az+aA|0;if(aD>>>0>Y>>>0){break}}W=c[W+8>>2]|0}W=az+(aA-39)|0;if((W\ +&7|0)==0){aE=0}else{aE=-W&7}W=az+(aA-47+aE)|0;ac=W>>>0<(ad+16|0)>>>0?Y:W;W=ac+8\ +|0;_=ab+8|0;if((_&7|0)==0){aG=0}else{aG=-_&7}_=aa-40-aG|0;c[3308]=ab+aG;c[3305]\ +=_;c[ab+(aG+4)>>2]=_|1;c[ab+(aa-36)>>2]=40;c[3309]=c[344];c[ac+4>>2]=27;c[W>>2]\ +=c[3414];c[W+4>>2]=c[13660>>2];c[W+8>>2]=c[13664>>2];c[W+12>>2]=c[13668>>2];c[3\ +414]=ab;c[3415]=aa;c[3417]=0;c[3416]=W;W=ac+28|0;c[W>>2]=7;if((ac+32|0)>>>0\ +>>0){_=W;while(1){W=_+4|0;c[W>>2]=7;if((_+8|0)>>>0>>0){_=W}else{break}}}if(\ +(ac|0)==(Y|0)){break}_=ac-ad|0;W=Y+(_+4)|0;c[W>>2]=c[W>>2]&-2;c[ad+4>>2]=_|1;c[\ +Y+_>>2]=_;W=_>>>3;if(_>>>0<256){K=W<<1;Z=13248+(K<<2)|0;S=c[3302]|0;m=1<>2]|0;if(Q>>>0>=(c[3306]|0)>>>0){aH=Q;aI=W;break}am();return 0;return 0}}whil\ +e(0);c[aI>>2]=ad;c[aH+12>>2]=ad;c[ad+8>>2]=aH;c[ad+12>>2]=Z;break}K=ad;m=_>>>8;\ +do{if((m|0)==0){aJ=0}else{if(_>>>0>16777215){aJ=31;break}S=(m+1048320|0)>>>16&8\ +;Y=m<>>16&4;W=Y<>>16&2;Q=14-(ac|S|Y)+(W<<\ +Y>>>15)|0;aJ=_>>>((Q+7|0)>>>0)&1|Q<<1}}while(0);m=13512+(aJ<<2)|0;c[ad+28>>2]=a\ +J;c[ad+20>>2]=0;c[ad+16>>2]=0;Z=c[3303]|0;Q=1<>2]=K;c[ad+24>>2]=m;c[ad+12>>2]=ad;c[ad+8>>2]=ad;break}if((aJ|0)==31){aK=0}el\ +se{aK=25-(aJ>>>1)|0}Q=_<>2]|0;while(1){if((c[Z+4>>2]&-8|0)==(_|0)){br\ +eak}aL=Z+16+(Q>>>31<<2)|0;m=c[aL>>2]|0;if((m|0)==0){T=1675;break}else{Q=Q<<1;Z=\ +m}}if((T|0)==1675){if(aL>>>0<(c[3306]|0)>>>0){am();return 0;return 0}else{c[aL>\ +>2]=K;c[ad+24>>2]=Z;c[ad+12>>2]=ad;c[ad+8>>2]=ad;break}}Q=Z+8|0;_=c[Q>>2]|0;m=c\ +[3306]|0;if(Z>>>0>>0){am();return 0;return 0}if(_>>>0>>0){am();return 0;r\ +eturn 0}else{c[_+12>>2]=K;c[Q>>2]=K;c[ad+8>>2]=_;c[ad+12>>2]=Z;c[ad+24>>2]=0;br\ +eak}}}while(0);ad=c[3305]|0;if(ad>>>0<=o>>>0){break}_=ad-o|0;c[3305]=_;ad=c[330\ +8]|0;Q=ad;c[3308]=Q+o;c[Q+(o+4)>>2]=_|1;c[ad+4>>2]=o|3;n=ad+8|0;return n|0}}whi\ +le(0);c[(aC()|0)>>2]=12;n=0;return n|0}function bl(b){b=b|0;var c=0;c=b;while(a\ +[c]|0){c=c+1|0}return c-b|0}function bm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=\ +0;f=b+e|0;if((e|0)>=20){d=d&255;e=b&3;g=d|d<<8|d<<16|d<<24;h=f&~3;if(e){e=b+4-e\ +|0;while((b|0)<(e|0)){a[b]=d;b=b+1|0}}while((b|0)<(h|0)){c[b>>2]=g;b=b+4|0}}whi\ +le((b|0)<(f|0)){a[b]=d;b=b+1|0}}function bn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=\ +b|0;if((b&3)==(d&3)){while(b&3){if((e|0)==0)return f|0;a[b]=a[d]|0;b=b+1|0;d=d+\ +1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0\ +)>0){a[b]=a[d]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function bo(a,b){a=a|0;b=b|\ +0;return aH[a&1](b|0)|0}function bp(a,b){a=a|0;b=b|0;aI[a&1](b|0)}function bq(a\ +,b,c){a=a|0;b=b|0;c=c|0;aJ[a&3](b|0,c|0)}function br(a,b,c,d){a=a|0;b=b|0;c=c|0\ +;d=d|0;return aK[a&3](b|0,c|0,d|0)|0}function bs(a){a=a|0;aL[a&1]()}function bt\ +(a,b,c){a=a|0;b=b|0;c=c|0;return aM[a&7](b|0,c|0)|0}function bu(a){a=a|0;_(0);r\ +eturn 0}function bv(a){a=a|0;_(1)}function bw(a,b){a=a|0;b=b|0;_(2)}function bx\ +(a,b,c){a=a|0;b=b|0;c=c|0;_(3);return 0}function by(){_(4)}function bz(a,b){a=a\ +|0;b=b|0;_(5);return 0} var aH=[bu,bu];var aI=[bv,bv];var aJ=[bw,bw,bg,bw];var \ +aK=[bx,bx,bf,bx];var aL=[by,by];var aM=[bz,bz,a5,bz,a8,bz,a4,bz];return{_malloc\ +:bk,_strlen:bl,_memcpy:bn,_main:a2,_memset:bm,stackAlloc:aN,stackSave:aO,stackR\ +estore:aP,setThrew:aQ,setTempRet0:aT,setTempRet1:aU,setTempRet2:aV,setTempRet3:\ +aW,setTempRet4:aX,setTempRet5:aY,setTempRet6:aZ,setTempRet7:a_,setTempRet8:a$,s\ +etTempRet9:a0,dynCall_ii:bo,dynCall_vi:bp,dynCall_vii:bq,dynCall_iiii:br,dynCal\ +l_v:bs,dynCall_iii:bt} })({Math:Math,Int8Array:Int8Array,Int16Array:Int16Array,\ +Int32Array:Int32Array,Uint8Array:Uint8Array,Uint16Array:Uint16Array,Uint32Array\ +:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array},{abort:F,asse\ +rt:z,asmPrintInt:function(a,b){Module.print("int "+a+","+b)},asmPrintFloat:func\ +tion(a,b){Module.print("float "+a+","+b)},min:Wb,invoke_ii:function(a,b){try{re\ +turn Module.dynCall_ii(a,b)}catch(c){"number"!==typeof c&&"longjmp"!==c&&j(c),$\ +.setThrew(1,0)}}, invoke_vi:function(a,b){try{Module.dynCall_vi(a,b)}catch(c){"\ +number"!==typeof c&&"longjmp"!==c&&j(c),$.setThrew(1,0)}},invoke_vii:function(a\ +,b,c){try{Module.dynCall_vii(a,b,c)}catch(d){"number"!==typeof d&&"longjmp"!==d\ +&&j(d),$.setThrew(1,0)}},invoke_iiii:function(a,b,c,d){try{return Module.dynCal\ +l_iiii(a,b,c,d)}catch(e){"number"!==typeof e&&"longjmp"!==e&&j(e),$.setThrew(1,\ +0)}},invoke_v:function(a){try{Module.dynCall_v(a)}catch(b){"number"!==typeof b&\ +&"longjmp"!==b&&j(b),$.setThrew(1,0)}},invoke_iii:function(a, b,c){try{return M\ +odule.dynCall_iii(a,b,c)}catch(d){"number"!==typeof d&&"longjmp"!==d&&j(d),$.se\ +tThrew(1,0)}},_strncmp:Db,_llvm_lifetime_end:u(),_sysconf:function(a){switch(a)\ +{case 8:return 4096;case 54:case 56:case 21:case 61:case 63:case 22:case 67:cas\ +e 23:case 24:case 25:case 26:case 27:case 69:case 28:case 101:case 70:case 71:c\ +ase 29:case 30:case 199:case 75:case 76:case 32:case 43:case 44:case 80:case 46\ +:case 47:case 45:case 48:case 49:case 42:case 82:case 33:case 7:case 108:case 1\ +09:case 107:case 112:case 119:case 121:return 200809; case 13:case 104:case 94:\ +case 95:case 34:case 35:case 77:case 81:case 83:case 84:case 85:case 86:case 87\ +:case 88:case 89:case 90:case 91:case 94:case 95:case 110:case 111:case 113:cas\ +e 114:case 115:case 116:case 117:case 118:case 120:case 40:case 16:case 79:case\ + 19:return-1;case 92:case 93:case 5:case 72:case 6:case 74:case 92:case 93:case\ + 96:case 97:case 98:case 99:case 102:case 103:case 105:return 1;case 38:case 66\ +:case 50:case 51:case 4:return 1024;case 15:case 64:case 41:return 32;case 55:c\ +ase 37:case 17:return 2147483647; case 18:case 1:return 47839;case 59:case 57:r\ +eturn 99;case 68:case 58:return 2048;case 0:return 2097152;case 3:return 65536;\ +case 14:return 32768;case 73:return 32767;case 39:return 16384;case 60:return 1\ +E3;case 106:return 700;case 52:return 256;case 62:return 255;case 2:return 100;\ +case 65:return 64;case 36:return 20;case 100:return 16;case 20:return 6;case 53\ +:return 4;case 10:return 1}V(db);return-1},_abort:function(){G=n;j("abort() at \ +"+Error().stack)},_fprintf:Cb,_printf:function(a,b){},__reallyNegative:Ab,_fput\ +c:Hb,_puts:function(a){},___setErrNo:V,_fwrite:yb,_send:vb,_write:xb,_fputs:Gb,\ +__formatString:Bb,_free:u(),___assert_func:function(a,b,c,d){j("Assertion faile\ +d: "+(d?I(d):"unknown condition")+", at: "+[a?I(a):"unknown filename",b,c?I(c):\ +"unknown function"]+" at "+Error().stack)},_pwrite:wb,_sbrk:Z,___errno_location\ +:function(){return eb},_llvm_lifetime_start:u(),_llvm_bswap_i32:function(a){ret\ +urn(a&255)<<24|(a>> 8&255)<<16|(a>>16&255)<<8|a>>>24},_time:function(a){var b=M\ +ath.floor(Date.now()/1E3);a&&(L[a>>2]=b);return b},_strcmp:function(a,b){return\ + Db(a,b,qa)},STACKTOP:w,STACK_MAX:Ja,tempDoublePtr:Za,ABORT:G,NaN:NaN,Infinity:\ +Infinity},R),Ea=Module._malloc=$._malloc,zb=Module._strlen=$._strlen,Fb=Module.\ +_memcpy=$._memcpy;Module._main=$._main;var Eb=Module._memset=$._memset;Module.d\ +ynCall_ii=$.dynCall_ii;Module.dynCall_vi=$.dynCall_vi;Module.dynCall_vii=$.dynC\ +all_vii;Module.dynCall_iiii=$.dynCall_iiii; Module.dynCall_v=$.dynCall_v;Module\ +.dynCall_iii=$.dynCall_iii;na=function(a){return $.stackAlloc(a)};ha=function()\ +{return $.stackSave()};ia=function(a){$.stackRestore(a)}; Module.callMain=funct\ +ion(a){function b(){for(var a=0;3>a;a++)d.push(0)}z(0==T,"cannot call main when\ + async dependencies remain! (listen on __ATMAIN__)");z(!Module.preRun||0==Modul\ +e.preRun.length,"cannot call main when preRun functions remain to be called");a\ +=a||[];Pa||(Pa=n,La(Ma));var c=a.length+1,d=[P(S("/bin/this.program"),"i8",0)];\ +b();for(var e=0;e