Repository: gokulkrishh/qrcodescan.in
Branch: master
Commit: 7418a18ef48e
Files: 24
Total size: 3.4 MB
Directory structure:
gitextract_rj_io85i/
├── .editorconfig
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ └── feature_request.md
│ └── workflows/
│ └── deploy.yml
├── .gitignore
├── .prettierignore
├── .prettierrc
├── LICENSE
├── README.md
├── package.json
├── public/
│ ├── CNAME
│ ├── ads.txt
│ ├── decoder.js
│ ├── index.html
│ ├── manifest.json
│ ├── robots.txt
│ └── sitemap.xml
├── rollup.config.js
└── src/
├── css/
│ └── styles.css
└── js/
├── index.js
├── snackbar.js
├── utils.js
└── vendor/
└── qrscan.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
root = true
[*]
indent_style = tab
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.json]
indent_style = space
indent_size = 2
================================================
FILE: .github/FUNDING.yml
================================================
github: [gokulkrishh]
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/workflows/deploy.yml
================================================
name: github pages
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: Setup Node
uses: actions/setup-node@v2.1.2
with:
node-version: "12.x"
- name: Cache dependencies
uses: actions/cache@v2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- run: npm ci
- run: npm run build
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public
================================================
FILE: .gitignore
================================================
logs
*.log
npm-debug.log*
node_modules
.DS_Store
dist
.env
public/bundle.js
public/bundle.css
public/service-worker.js
public/service-worker.js.map
public/workbox-*.js
================================================
FILE: .prettierignore
================================================
*.json
/dist
app/decoder.js
================================================
FILE: .prettierrc
================================================
{
"printWidth": 140,
"singleQuote": true,
"parser": "babel"
}
================================================
FILE: LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2016 code-kotis
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.
================================================
FILE: README.md
================================================
###
# [QR Code Scanner](https://qrcodescan.in)
*QR Code Scanner - a simple, fast and useful progressive web application*
### [Live](https://qrcodescan.in)
## Features
- App Shell
- Offline
- Secure via https
- Responsive
- Add to home screen & Splash screen
- Supported Browser (Mobile & Desktop) - Google Chrome, Firefox, Safari, Opera, Microsoft Edge and now supports iOS as well.
## Installation
1. Clone this repo
```bash
git clone https://github.com/code-kotis/qr-code-scanner
```
2. Installation
```bash
npm install
```
3. Run
```bash
npm run start
```
4. Build
```bash
npm run build
```
### Contributions
If you find a bug, please file an issue. PR's are most welcome ;)
#### MIT Licensed
================================================
FILE: package.json
================================================
{
"name": "qr-code-scanner",
"description": "QR Code Scanner is the fastest and most user-friendly progressive web application.",
"version": "1.0.2",
"scripts": {
"build": "NODE_ENV=production rollup -c",
"watch": "rollup -c -w",
"start": "npm-run-all --parallel serve watch",
"serve": "rollup -c && serve public",
"precommit": "lint-staged",
"pretty": "prettier --write 'src'"
},
"lint-staged": {
"*.{js,css,html}": [
"npm run pretty",
"git add"
]
},
"engines": {
"node": ">=14.0.0"
},
"devDependencies": {
"cross-env": "^7.0.3",
"gh-pages": "^3.2.1",
"husky": "^6.0.0",
"lint-staged": "^11.0.0",
"npm-run-all": "^4.1.5",
"prettier": "^2.3.1",
"rollup": "^2.52.1",
"rollup-plugin-css-only": "^3.1.0",
"rollup-plugin-delete": "^2.0.0",
"rollup-plugin-sizes": "^1.0.4",
"rollup-plugin-terser": "^7.0.2",
"rollup-plugin-workbox": "^6.1.1",
"serve": "^12.0.0"
}
}
================================================
FILE: public/CNAME
================================================
qrcodescan.in
================================================
FILE: public/ads.txt
================================================
google.com, pub-8317178183177647, DIRECT, f08c47fec0942fa0
================================================
FILE: public/decoder.js
================================================
// The main barcode scanning processing function.
// Compiled from zbar.sf.net using emscripten.
//
// Copyright (C) 2013 Yury Delendik
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library 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
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
self.onmessage = function(imgData) {
postMessage(zbarProcessImageData(imgData.data));
};
function zbarProcessImageData(imgData) {
var result = [];
var Module = {};
Module['imageWidth'] = imgData.width;
Module['imageHeight'] = imgData.height;
Module['getImageData'] = function(grayData) {
var d = imgData.data;
for (var i = 0, j = 0; i < d.length; i += 4, j++) {
grayData[j] = (d[i] * 66 + d[i + 1] * 129 + d[i + 2] * 25 + 4096) >> 8;
}
};
Module['outputResult'] = function(symbol, addon, data) {
result.push([symbol, addon, data]);
};
/* EMSCRIPTEN_CODE */
// The Module object: Our interface to the outside world. We import
// and export values on it, and do the work to get that through
// closure compiler if necessary. There are various ways Module can be used:
// 1. Not defined. We create it here
// 2. A function parameter, function(Module) { ..generated code.. }
// 3. pre-run appended it, var Module = {}; ..generated code..
// 4. External script tag defines var Module.
// We need to do an eval in order to handle the closure compiler
// case, where this code here is minified but Module was defined
// elsewhere (e.g. case 4 above). We also need to check if Module
// already exists (e.g. case 3 above).
// Note that if you want to run closure, and also to use Module
// after the generated code, you will need to define var Module = {};
// before the code. Then that object will be used in the code, and you
// can continue to use Module afterwards as well.
var Module;
if (!Module) Module = (typeof Module !== 'undefined' ? Module : null) || {};
// Sometimes an existing Module object exists with properties
// meant to overwrite the default module functionality. Here
// we collect those properties and reapply _after_ we configure
// the current environment's defaults to avoid having to be so
// defensive during initialization.
var moduleOverrides = {};
for (var key in Module) {
if (Module.hasOwnProperty(key)) {
moduleOverrides[key] = Module[key];
}
}
// The environment setup code below is customized to use Module.
// *** Environment setup code ***
var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function';
var ENVIRONMENT_IS_WEB = typeof window === 'object';
var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function';
var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
if (ENVIRONMENT_IS_NODE) {
// Expose functionality in the same simple way that the shells work
// Note that we pollute the global namespace here, otherwise we break in node
if (!Module['print'])
Module['print'] = function print(x) {
process['stdout'].write(x + '\n');
};
if (!Module['printErr'])
Module['printErr'] = function printErr(x) {
process['stderr'].write(x + '\n');
};
var nodeFS = require('fs');
var nodePath = require('path');
Module['read'] = function read(filename, binary) {
filename = nodePath['normalize'](filename);
var ret = nodeFS['readFileSync'](filename);
// The path is absolute if the normalized version is the same as the resolved.
if (!ret && filename != nodePath['resolve'](filename)) {
filename = path.join(__dirname, '..', 'src', filename);
ret = nodeFS['readFileSync'](filename);
}
if (ret && !binary) ret = ret.toString();
return ret;
};
Module['readBinary'] = function readBinary(filename) {
return Module['read'](filename, true);
};
Module['load'] = function load(f) {
globalEval(read(f));
};
Module['thisProgram'] = process['argv'][1].replace(/\\/g, '/');
Module['arguments'] = process['argv'].slice(2);
if (typeof module !== 'undefined') {
module['exports'] = Module;
}
process['on']('uncaughtException', function(ex) {
// suppress ExitStatus exceptions from showing an error
if (!(ex instanceof ExitStatus)) {
throw ex;
}
});
} else if (ENVIRONMENT_IS_SHELL) {
if (!Module['print']) Module['print'] = print;
if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm
if (typeof read != 'undefined') {
Module['read'] = read;
} else {
Module['read'] = function read() {
throw 'no read() available (jsc?)';
};
}
Module['readBinary'] = function readBinary(f) {
if (typeof readbuffer === 'function') {
return new Uint8Array(readbuffer(f));
}
var data = read(f, 'binary');
assert(typeof data === 'object');
return data;
};
if (typeof scriptArgs != 'undefined') {
Module['arguments'] = scriptArgs;
} else if (typeof arguments != 'undefined') {
Module['arguments'] = arguments;
}
this['Module'] = Module;
} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
Module['read'] = function read(url) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, false);
xhr.send(null);
return xhr.responseText;
};
if (typeof arguments != 'undefined') {
Module['arguments'] = arguments;
}
if (typeof console !== 'undefined') {
if (!Module['print'])
Module['print'] = function print(x) {
console.log(x);
};
if (!Module['printErr'])
Module['printErr'] = function printErr(x) {
console.log(x);
};
} else {
// Probably a worker, and without console.log. We can do very little here...
var TRY_USE_DUMP = false;
if (!Module['print'])
Module['print'] =
TRY_USE_DUMP && typeof dump !== 'undefined'
? function(x) {
dump(x);
}
: function(x) {
// self.postMessage(x); // enable this if you want stdout to be sent as messages
};
}
if (ENVIRONMENT_IS_WEB) {
window['Module'] = Module;
} else {
Module['load'] = importScripts;
}
} else {
// Unreachable because SHELL is dependant on the others
throw 'Unknown runtime environment. Where are we?';
}
function globalEval(x) {
eval.call(null, x);
}
if (!Module['load'] && Module['read']) {
Module['load'] = function load(f) {
globalEval(Module['read'](f));
};
}
if (!Module['print']) {
Module['print'] = function() {};
}
if (!Module['printErr']) {
Module['printErr'] = Module['print'];
}
if (!Module['arguments']) {
Module['arguments'] = [];
}
if (!Module['thisProgram']) {
Module['thisProgram'] = './this.program';
}
// *** Environment setup code ***
// Closure helpers
Module.print = Module['print'];
Module.printErr = Module['printErr'];
// Callbacks
Module['preRun'] = [];
Module['postRun'] = [];
// Merge back in the overrides
for (var key in moduleOverrides) {
if (moduleOverrides.hasOwnProperty(key)) {
Module[key] = moduleOverrides[key];
}
}
// === Preamble library stuff ===
// Documentation for the public APIs defined in this file must be updated in:
// site/source/docs/api_reference/preamble.js.rst
// A prebuilt local version of the documentation is available at:
// site/build/text/docs/api_reference/preamble.js.txt
// You can also build docs locally as HTML or other formats in site/
// An online HTML version (which may be of a different version of Emscripten)
// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html
//========================================
// Runtime code shared with compiler
//========================================
var Runtime = {
setTempRet0: function(value) {
tempRet0 = value;
},
getTempRet0: function() {
return tempRet0;
},
stackSave: function() {
return STACKTOP;
},
stackRestore: function(stackTop) {
STACKTOP = stackTop;
},
getNativeTypeSize: function(type) {
switch (type) {
case 'i1':
case 'i8':
return 1;
case 'i16':
return 2;
case 'i32':
return 4;
case 'i64':
return 8;
case 'float':
return 4;
case 'double':
return 8;
default: {
if (type[type.length - 1] === '*') {
return Runtime.QUANTUM_SIZE; // A pointer
} else if (type[0] === 'i') {
var bits = parseInt(type.substr(1));
assert(bits % 8 === 0);
return bits / 8;
} else {
return 0;
}
}
}
},
getNativeFieldSize: function(type) {
return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE);
},
STACK_ALIGN: 16,
getAlignSize: function(type, size, vararg) {
// we align i64s and doubles on 64-bit boundaries, unlike x86
if (!vararg && (type == 'i64' || type == 'double')) return 8;
if (!type) return Math.min(size, 8); // align structures internally to 64 bits
return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE);
},
dynCall: function(sig, ptr, args) {
if (args && args.length) {
if (!args.splice) args = Array.prototype.slice.call(args);
args.splice(0, 0, ptr);
return Module['dynCall_' + sig].apply(null, args);
} else {
return Module['dynCall_' + sig].call(null, ptr);
}
},
functionPointers: [],
addFunction: function(func) {
for (var i = 0; i < Runtime.functionPointers.length; i++) {
if (!Runtime.functionPointers[i]) {
Runtime.functionPointers[i] = func;
return 2 * (1 + i);
}
}
throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.';
},
removeFunction: function(index) {
Runtime.functionPointers[(index - 2) / 2] = null;
},
getAsmConst: function(code, numArgs) {
// code is a constant string on the heap, so we can cache these
if (!Runtime.asmConstCache) Runtime.asmConstCache = {};
var func = Runtime.asmConstCache[code];
if (func) return func;
var args = [];
for (var i = 0; i < numArgs; i++) {
args.push(String.fromCharCode(36) + i); // $0, $1 etc
}
var source = Pointer_stringify(code);
if (source[0] === '"') {
// tolerate EM_ASM("..code..") even though EM_ASM(..code..) is correct
if (source.indexOf('"', 1) === source.length - 1) {
source = source.substr(1, source.length - 2);
} else {
// something invalid happened, e.g. EM_ASM("..code($0)..", input)
abort(
'invalid EM_ASM input |' +
source +
'|. Please use EM_ASM(..code..) (no quotes) or EM_ASM({ ..code($0).. }, input) (to input values)'
);
}
}
try {
// Module is the only 'upvar', which we provide directly. We also provide FS for legacy support.
var evalled = eval('(function(Module, FS) { return function(' + args.join(',') + '){ ' + source + ' } })')(
Module,
typeof FS !== 'undefined' ? FS : null
);
} catch (e) {
Module.printErr(
'error in executing inline EM_ASM code: ' +
e +
' on: \n\n' +
source +
'\n\nwith args |' +
args +
'| (make sure to use the right one out of EM_ASM, EM_ASM_ARGS, etc.)'
);
throw e;
}
return (Runtime.asmConstCache[code] = evalled);
},
warnOnce: function(text) {
if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {};
if (!Runtime.warnOnce.shown[text]) {
Runtime.warnOnce.shown[text] = 1;
Module.printErr(text);
}
},
funcWrappers: {},
getFuncWrapper: function(func, sig) {
assert(sig);
if (!Runtime.funcWrappers[sig]) {
Runtime.funcWrappers[sig] = {};
}
var sigCache = Runtime.funcWrappers[sig];
if (!sigCache[func]) {
sigCache[func] = function dynCall_wrapper() {
return Runtime.dynCall(sig, func, arguments);
};
}
return sigCache[func];
},
UTF8Processor: function() {
var buffer = [];
var needed = 0;
this.processCChar = function(code) {
code = code & 0xff;
if (buffer.length == 0) {
if ((code & 0x80) == 0x00) {
// 0xxxxxxx
return String.fromCharCode(code);
}
buffer.push(code);
if ((code & 0xe0) == 0xc0) {
// 110xxxxx
needed = 1;
} else if ((code & 0xf0) == 0xe0) {
// 1110xxxx
needed = 2;
} else {
// 11110xxx
needed = 3;
}
return '';
}
if (needed) {
buffer.push(code);
needed--;
if (needed > 0) return '';
}
var c1 = buffer[0];
var c2 = buffer[1];
var c3 = buffer[2];
var c4 = buffer[3];
var ret;
if (buffer.length == 2) {
ret = String.fromCharCode(((c1 & 0x1f) << 6) | (c2 & 0x3f));
} else if (buffer.length == 3) {
ret = String.fromCharCode(((c1 & 0x0f) << 12) | ((c2 & 0x3f) << 6) | (c3 & 0x3f));
} else {
// http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
var codePoint = ((c1 & 0x07) << 18) | ((c2 & 0x3f) << 12) | ((c3 & 0x3f) << 6) | (c4 & 0x3f);
ret = String.fromCharCode((((codePoint - 0x10000) / 0x400) | 0) + 0xd800, ((codePoint - 0x10000) % 0x400) + 0xdc00);
}
buffer.length = 0;
return ret;
};
this.processJSString = function processJSString(string) {
/* TODO: use TextEncoder when present,
var encoder = new TextEncoder();
encoder['encoding'] = "utf-8";
var utf8Array = encoder['encode'](aMsg.data);
*/
string = unescape(encodeURIComponent(string));
var ret = [];
for (var i = 0; i < string.length; i++) {
ret.push(string.charCodeAt(i));
}
return ret;
};
},
getCompilerSetting: function(name) {
throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work';
},
stackAlloc: function(size) {
var ret = STACKTOP;
STACKTOP = (STACKTOP + size) | 0;
STACKTOP = (STACKTOP + 15) & -16;
return ret;
},
staticAlloc: function(size) {
var ret = STATICTOP;
STATICTOP = (STATICTOP + size) | 0;
STATICTOP = (STATICTOP + 15) & -16;
return ret;
},
dynamicAlloc: function(size) {
var ret = DYNAMICTOP;
DYNAMICTOP = (DYNAMICTOP + size) | 0;
DYNAMICTOP = (DYNAMICTOP + 15) & -16;
if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();
return ret;
},
alignMemory: function(size, quantum) {
var ret = (size = Math.ceil(size / (quantum ? quantum : 16)) * (quantum ? quantum : 16));
return ret;
},
makeBigInt: function(low, high, unsigned) {
var ret = unsigned ? +(low >>> 0) + +(high >>> 0) * 4294967296.0 : +(low >>> 0) + +(high | 0) * 4294967296.0;
return ret;
},
GLOBAL_BASE: 8,
QUANTUM_SIZE: 4,
__dummy__: 0
};
Module['Runtime'] = Runtime;
//========================================
// Runtime essentials
//========================================
var __THREW__ = 0; // Used in checking for thrown exceptions.
var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort()
var EXITSTATUS = 0;
var undef = 0;
// tempInt is used for 32-bit signed values or smaller. tempBigInt is used
// for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt
var tempValue,
tempInt,
tempBigInt,
tempInt2,
tempBigInt2,
tempPair,
tempBigIntI,
tempBigIntR,
tempBigIntS,
tempBigIntP,
tempBigIntD,
tempDouble,
tempFloat;
var tempI64, tempI64b;
var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9;
function assert(condition, text) {
if (!condition) {
abort('Assertion failed: ' + text);
}
}
var globalScope = this;
// Returns the C function with a specified identifier (for C++, you need to do manual name mangling)
function getCFunc(ident) {
var func = Module['_' + ident]; // closure exported function
if (!func) {
try {
func = eval('_' + ident); // explicit lookup
} catch (e) {}
}
assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)');
return func;
}
var cwrap, ccall;
(function() {
var stack = 0;
var JSfuncs = {
stackSave: function() {
stack = Runtime.stackSave();
},
stackRestore: function() {
Runtime.stackRestore(stack);
},
// type conversion from js to c
arrayToC: function(arr) {
var ret = Runtime.stackAlloc(arr.length);
writeArrayToMemory(arr, ret);
return ret;
},
stringToC: function(str) {
var ret = 0;
if (str !== null && str !== undefined && str !== 0) {
// null string
// at most 4 bytes per UTF-8 code point, +1 for the trailing '\0'
ret = Runtime.stackAlloc((str.length << 2) + 1);
writeStringToMemory(str, ret);
}
return ret;
}
};
// For fast lookup of conversion functions
var toC = { string: JSfuncs['stringToC'], array: JSfuncs['arrayToC'] };
// C calling interface.
ccall = function ccallFunc(ident, returnType, argTypes, args) {
var func = getCFunc(ident);
var cArgs = [];
if (args) {
for (var i = 0; i < args.length; i++) {
var converter = toC[argTypes[i]];
if (converter) {
if (stack === 0) stack = Runtime.stackSave();
cArgs[i] = converter(args[i]);
} else {
cArgs[i] = args[i];
}
}
}
var ret = func.apply(null, cArgs);
if (returnType === 'string') ret = Pointer_stringify(ret);
if (stack !== 0) JSfuncs['stackRestore']();
return ret;
};
var sourceRegex = /^function\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;
function parseJSFunc(jsfunc) {
// Match the body and the return value of a javascript function source
var parsed = jsfunc
.toString()
.match(sourceRegex)
.slice(1);
return { arguments: parsed[0], body: parsed[1], returnValue: parsed[2] };
}
var JSsource = {};
for (var fun in JSfuncs) {
if (JSfuncs.hasOwnProperty(fun)) {
// Elements of toCsource are arrays of three items:
// the code, and the return value
JSsource[fun] = parseJSFunc(JSfuncs[fun]);
}
}
cwrap = function cwrap(ident, returnType, argTypes) {
argTypes = argTypes || [];
var cfunc = getCFunc(ident);
// When the function takes numbers and returns a number, we can just return
// the original function
var numericArgs = argTypes.every(function(type) {
return type === 'number';
});
var numericRet = returnType !== 'string';
if (numericRet && numericArgs) {
return cfunc;
}
// Creation of the arguments list (["$1","$2",...,"$nargs"])
var argNames = argTypes.map(function(x, i) {
return '$' + i;
});
var funcstr = '(function(' + argNames.join(',') + ') {';
var nargs = argTypes.length;
if (!numericArgs) {
// Generate the code needed to convert the arguments from javascript
// values to pointers
funcstr += JSsource['stackSave'].body + ';';
for (var i = 0; i < nargs; i++) {
var arg = argNames[i],
type = argTypes[i];
if (type === 'number') continue;
var convertCode = JSsource[type + 'ToC']; // [code, return]
funcstr += 'var ' + convertCode.arguments + ' = ' + arg + ';';
funcstr += convertCode.body + ';';
funcstr += arg + '=' + convertCode.returnValue + ';';
}
}
// When the code is compressed, the name of cfunc is not literally 'cfunc' anymore
var cfuncname = parseJSFunc(function() {
return cfunc;
}).returnValue;
// Call the function
funcstr += 'var ret = ' + cfuncname + '(' + argNames.join(',') + ');';
if (!numericRet) {
// Return type can only by 'string' or 'number'
// Convert the result to a string
var strgfy = parseJSFunc(function() {
return Pointer_stringify;
}).returnValue;
funcstr += 'ret = ' + strgfy + '(ret);';
}
if (!numericArgs) {
// If we had a stack, restore it
funcstr += JSsource['stackRestore'].body + ';';
}
funcstr += 'return ret})';
return eval(funcstr);
};
})();
Module['cwrap'] = cwrap;
Module['ccall'] = ccall;
function setValue(ptr, value, type, noSafe) {
type = type || 'i8';
if (type.charAt(type.length - 1) === '*') type = 'i32'; // pointers are 32-bit
switch (type) {
case 'i1':
HEAP8[ptr >> 0] = value;
break;
case 'i8':
HEAP8[ptr >> 0] = value;
break;
case 'i16':
HEAP16[ptr >> 1] = value;
break;
case 'i32':
HEAP32[ptr >> 2] = value;
break;
case 'i64':
(tempI64 = [
value >>> 0,
((tempDouble = value),
+Math_abs(tempDouble) >= 1.0
? tempDouble > 0.0
? (Math_min(+Math_floor(tempDouble / 4294967296.0), 4294967295.0) | 0) >>> 0
: ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296.0) >>> 0
: 0)
]),
(HEAP32[ptr >> 2] = tempI64[0]),
(HEAP32[(ptr + 4) >> 2] = tempI64[1]);
break;
case 'float':
HEAPF32[ptr >> 2] = value;
break;
case 'double':
HEAPF64[ptr >> 3] = value;
break;
default:
abort('invalid type for setValue: ' + type);
}
}
Module['setValue'] = setValue;
function getValue(ptr, type, noSafe) {
type = type || 'i8';
if (type.charAt(type.length - 1) === '*') type = 'i32'; // pointers are 32-bit
switch (type) {
case 'i1':
return HEAP8[ptr >> 0];
case 'i8':
return HEAP8[ptr >> 0];
case 'i16':
return HEAP16[ptr >> 1];
case 'i32':
return HEAP32[ptr >> 2];
case 'i64':
return HEAP32[ptr >> 2];
case 'float':
return HEAPF32[ptr >> 2];
case 'double':
return HEAPF64[ptr >> 3];
default:
abort('invalid type for setValue: ' + type);
}
return null;
}
Module['getValue'] = getValue;
var ALLOC_NORMAL = 0; // Tries to use _malloc()
var ALLOC_STACK = 1; // Lives for the duration of the current function call
var ALLOC_STATIC = 2; // Cannot be freed
var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk
var ALLOC_NONE = 4; // Do not allocate
Module['ALLOC_NORMAL'] = ALLOC_NORMAL;
Module['ALLOC_STACK'] = ALLOC_STACK;
Module['ALLOC_STATIC'] = ALLOC_STATIC;
Module['ALLOC_DYNAMIC'] = ALLOC_DYNAMIC;
Module['ALLOC_NONE'] = ALLOC_NONE;
// allocate(): This is for internal use. You can use it yourself as well, but the interface
// is a little tricky (see docs right below). The reason is that it is optimized
// for multiple syntaxes to save space in generated code. So you should
// normally not use allocate(), and instead allocate memory using _malloc(),
// initialize it with setValue(), and so forth.
// @slab: An array of data, or a number. If a number, then the size of the block to allocate,
// in *bytes* (note that this is sometimes confusing: the next parameter does not
// affect this!)
// @types: Either an array of types, one for each byte (or 0 if no type at that position),
// or a single type which is used for the entire block. This only matters if there
// is initial data - if @slab is a number, then this does not matter at all and is
// ignored.
// @allocator: How to allocate memory, see ALLOC_*
function allocate(slab, types, allocator, ptr) {
var zeroinit, size;
if (typeof slab === 'number') {
zeroinit = true;
size = slab;
} else {
zeroinit = false;
size = slab.length;
}
var singleType = typeof types === 'string' ? types : null;
var ret;
if (allocator == ALLOC_NONE) {
ret = ptr;
} else {
ret = [_malloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](
Math.max(size, singleType ? 1 : types.length)
);
}
if (zeroinit) {
var ptr = ret,
stop;
assert((ret & 3) == 0);
stop = ret + (size & ~3);
for (; ptr < stop; ptr += 4) {
HEAP32[ptr >> 2] = 0;
}
stop = ret + size;
while (ptr < stop) {
HEAP8[ptr++ >> 0] = 0;
}
return ret;
}
if (singleType === 'i8') {
if (slab.subarray || slab.slice) {
HEAPU8.set(slab, ret);
} else {
HEAPU8.set(new Uint8Array(slab), ret);
}
return ret;
}
var i = 0,
type,
typeSize,
previousType;
while (i < size) {
var curr = slab[i];
if (typeof curr === 'function') {
curr = Runtime.getFunctionIndex(curr);
}
type = singleType || types[i];
if (type === 0) {
i++;
continue;
}
if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later
setValue(ret + i, curr, type);
// no need to look up size unless type changes, so cache it
if (previousType !== type) {
typeSize = Runtime.getNativeTypeSize(type);
previousType = type;
}
i += typeSize;
}
return ret;
}
Module['allocate'] = allocate;
function Pointer_stringify(ptr, /* optional */ length) {
if (length === 0) return '';
// TODO: use TextDecoder
// Find the length, and check for UTF while doing so
var hasUtf = false;
var t;
var i = 0;
while (1) {
t = HEAPU8[(ptr + i) >> 0];
if (t >= 128) hasUtf = true;
else if (t == 0 && !length) break;
i++;
if (length && i == length) break;
}
if (!length) length = i;
var ret = '';
if (!hasUtf) {
var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack
var curr;
while (length > 0) {
curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));
ret = ret ? ret + curr : curr;
ptr += MAX_CHUNK;
length -= MAX_CHUNK;
}
return ret;
}
var utf8 = new Runtime.UTF8Processor();
for (i = 0; i < length; i++) {
t = HEAPU8[(ptr + i) >> 0];
ret += utf8.processCChar(t);
}
return ret;
}
Module['Pointer_stringify'] = Pointer_stringify;
function UTF16ToString(ptr) {
var i = 0;
var str = '';
while (1) {
var codeUnit = HEAP16[(ptr + i * 2) >> 1];
if (codeUnit == 0) return str;
++i;
// fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through.
str += String.fromCharCode(codeUnit);
}
}
Module['UTF16ToString'] = UTF16ToString;
function stringToUTF16(str, outPtr) {
for (var i = 0; i < str.length; ++i) {
// charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP.
var codeUnit = str.charCodeAt(i); // possibly a lead surrogate
HEAP16[(outPtr + i * 2) >> 1] = codeUnit;
}
// Null-terminate the pointer to the HEAP.
HEAP16[(outPtr + str.length * 2) >> 1] = 0;
}
Module['stringToUTF16'] = stringToUTF16;
function UTF32ToString(ptr) {
var i = 0;
var str = '';
while (1) {
var utf32 = HEAP32[(ptr + i * 4) >> 2];
if (utf32 == 0) return str;
++i;
// Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing.
if (utf32 >= 0x10000) {
var ch = utf32 - 0x10000;
str += String.fromCharCode(0xd800 | (ch >> 10), 0xdc00 | (ch & 0x3ff));
} else {
str += String.fromCharCode(utf32);
}
}
}
Module['UTF32ToString'] = UTF32ToString;
function stringToUTF32(str, outPtr) {
var iChar = 0;
for (var iCodeUnit = 0; iCodeUnit < str.length; ++iCodeUnit) {
// Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap.
var codeUnit = str.charCodeAt(iCodeUnit); // possibly a lead surrogate
if (codeUnit >= 0xd800 && codeUnit <= 0xdfff) {
var trailSurrogate = str.charCodeAt(++iCodeUnit);
codeUnit = (0x10000 + ((codeUnit & 0x3ff) << 10)) | (trailSurrogate & 0x3ff);
}
HEAP32[(outPtr + iChar * 4) >> 2] = codeUnit;
++iChar;
}
// Null-terminate the pointer to the HEAP.
HEAP32[(outPtr + iChar * 4) >> 2] = 0;
}
Module['stringToUTF32'] = stringToUTF32;
function demangle(func) {
var hasLibcxxabi = !!Module['___cxa_demangle'];
if (hasLibcxxabi) {
try {
var buf = _malloc(func.length);
writeStringToMemory(func.substr(1), buf);
var status = _malloc(4);
var ret = Module['___cxa_demangle'](buf, 0, 0, status);
if (getValue(status, 'i32') === 0 && ret) {
return Pointer_stringify(ret);
}
// otherwise, libcxxabi failed, we can try ours which may return a partial result
} catch (e) {
// failure when using libcxxabi, we can try ours which may return a partial result
} finally {
if (buf) _free(buf);
if (status) _free(status);
if (ret) _free(ret);
}
}
var i = 3;
// params, etc.
var basicTypes = {
v: 'void',
b: 'bool',
c: 'char',
s: 'short',
i: 'int',
l: 'long',
f: 'float',
d: 'double',
w: 'wchar_t',
a: 'signed char',
h: 'unsigned char',
t: 'unsigned short',
j: 'unsigned int',
m: 'unsigned long',
x: 'long long',
y: 'unsigned long long',
z: '...'
};
var subs = [];
var first = true;
function dump(x) {
//return;
if (x) Module.print(x);
Module.print(func);
var pre = '';
for (var a = 0; a < i; a++) pre += ' ';
Module.print(pre + '^');
}
function parseNested() {
i++;
if (func[i] === 'K') i++; // ignore const
var parts = [];
while (func[i] !== 'E') {
if (func[i] === 'S') {
// substitution
i++;
var next = func.indexOf('_', i);
var num = func.substring(i, next) || 0;
parts.push(subs[num] || '?');
i = next + 1;
continue;
}
if (func[i] === 'C') {
// constructor
parts.push(parts[parts.length - 1]);
i += 2;
continue;
}
var size = parseInt(func.substr(i));
var pre = size.toString().length;
if (!size || !pre) {
i--;
break;
} // counter i++ below us
var curr = func.substr(i + pre, size);
parts.push(curr);
subs.push(curr);
i += pre + size;
}
i++; // skip E
return parts;
}
function parse(rawList, limit, allowVoid) {
// main parser
limit = limit || Infinity;
var ret = '',
list = [];
function flushList() {
return '(' + list.join(', ') + ')';
}
var name;
if (func[i] === 'N') {
// namespaced N-E
name = parseNested().join('::');
limit--;
if (limit === 0) return rawList ? [name] : name;
} else {
// not namespaced
if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L'
var size = parseInt(func.substr(i));
if (size) {
var pre = size.toString().length;
name = func.substr(i + pre, size);
i += pre + size;
}
}
first = false;
if (func[i] === 'I') {
i++;
var iList = parse(true);
var iRet = parse(true, 1, true);
ret += iRet[0] + ' ' + name + '<' + iList.join(', ') + '>';
} else {
ret = name;
}
paramLoop: while (i < func.length && limit-- > 0) {
//dump('paramLoop');
var c = func[i++];
if (c in basicTypes) {
list.push(basicTypes[c]);
} else {
switch (c) {
case 'P':
list.push(parse(true, 1, true)[0] + '*');
break; // pointer
case 'R':
list.push(parse(true, 1, true)[0] + '&');
break; // reference
case 'L': {
// literal
i++; // skip basic type
var end = func.indexOf('E', i);
var size = end - i;
list.push(func.substr(i, size));
i += size + 2; // size + 'EE'
break;
}
case 'A': {
// array
var size = parseInt(func.substr(i));
i += size.toString().length;
if (func[i] !== '_') throw '?';
i++; // skip _
list.push(parse(true, 1, true)[0] + ' [' + size + ']');
break;
}
case 'E':
break paramLoop;
default:
ret += '?' + c;
break paramLoop;
}
}
}
if (!allowVoid && list.length === 1 && list[0] === 'void') list = []; // avoid (void)
if (rawList) {
if (ret) {
list.push(ret + '?');
}
return list;
} else {
return ret + flushList();
}
}
var final = func;
try {
// Special-case the entry point, since its name differs from other name mangling.
if (func == 'Object._main' || func == '_main') {
return 'main()';
}
if (typeof func === 'number') func = Pointer_stringify(func);
if (func[0] !== '_') return func;
if (func[1] !== '_') return func; // C function
if (func[2] !== 'Z') return func;
switch (func[3]) {
case 'n':
return 'operator new()';
case 'd':
return 'operator delete()';
}
final = parse();
} catch (e) {
final += '?';
}
if (final.indexOf('?') >= 0 && !hasLibcxxabi) {
Runtime.warnOnce(
'warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling'
);
}
return final;
}
function demangleAll(text) {
return text.replace(/__Z[\w\d_]+/g, function(x) {
var y = demangle(x);
return x === y ? x : x + ' [' + y + ']';
});
}
function jsStackTrace() {
var err = new Error();
if (!err.stack) {
// IE10+ special cases: It does have callstack info, but it is only populated if an Error object is thrown,
// so try that as a special-case.
try {
throw new Error(0);
} catch (e) {
err = e;
}
if (!err.stack) {
return '(no stack trace available)';
}
}
return err.stack.toString();
}
function stackTrace() {
return demangleAll(jsStackTrace());
}
Module['stackTrace'] = stackTrace;
// Memory management
var PAGE_SIZE = 4096;
function alignMemoryPage(x) {
return (x + 4095) & -4096;
}
var HEAP;
var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
var STATIC_BASE = 0,
STATICTOP = 0,
staticSealed = false; // static area
var STACK_BASE = 0,
STACKTOP = 0,
STACK_MAX = 0; // stack area
var DYNAMIC_BASE = 0,
DYNAMICTOP = 0; // dynamic area handled by sbrk
function enlargeMemory() {
abort(
'Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value ' +
TOTAL_MEMORY +
', (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.'
);
}
var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880;
var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 16777216;
var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152;
var totalMemory = 64 * 1024;
while (totalMemory < TOTAL_MEMORY || totalMemory < 2 * TOTAL_STACK) {
if (totalMemory < 16 * 1024 * 1024) {
totalMemory *= 2;
} else {
totalMemory += 16 * 1024 * 1024;
}
}
if (totalMemory !== TOTAL_MEMORY) {
Module.printErr('increasing TOTAL_MEMORY to ' + totalMemory + ' to be compliant with the asm.js spec');
TOTAL_MEMORY = totalMemory;
}
// Initialize the runtime's memory
// check for full engine support (use string 'subarray' to avoid closure compiler confusion)
assert(
typeof Int32Array !== 'undefined' &&
typeof Float64Array !== 'undefined' &&
!!new Int32Array(1)['subarray'] &&
!!new Int32Array(1)['set'],
'JS engine does not provide full typed array support'
);
var buffer = new ArrayBuffer(TOTAL_MEMORY);
HEAP8 = new Int8Array(buffer);
HEAP16 = new Int16Array(buffer);
HEAP32 = new Int32Array(buffer);
HEAPU8 = new Uint8Array(buffer);
HEAPU16 = new Uint16Array(buffer);
HEAPU32 = new Uint32Array(buffer);
HEAPF32 = new Float32Array(buffer);
HEAPF64 = new Float64Array(buffer);
// Endianness check (note: assumes compiler arch was little-endian)
HEAP32[0] = 255;
assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system');
Module['HEAP'] = HEAP;
Module['buffer'] = buffer;
Module['HEAP8'] = HEAP8;
Module['HEAP16'] = HEAP16;
Module['HEAP32'] = HEAP32;
Module['HEAPU8'] = HEAPU8;
Module['HEAPU16'] = HEAPU16;
Module['HEAPU32'] = HEAPU32;
Module['HEAPF32'] = HEAPF32;
Module['HEAPF64'] = HEAPF64;
function callRuntimeCallbacks(callbacks) {
while (callbacks.length > 0) {
var callback = callbacks.shift();
if (typeof callback == 'function') {
callback();
continue;
}
var func = callback.func;
if (typeof func === 'number') {
if (callback.arg === undefined) {
Runtime.dynCall('v', func);
} else {
Runtime.dynCall('vi', func, [callback.arg]);
}
} else {
func(callback.arg === undefined ? null : callback.arg);
}
}
}
var __ATPRERUN__ = []; // functions called before the runtime is initialized
var __ATINIT__ = []; // functions called during startup
var __ATMAIN__ = []; // functions called when main() is to be run
var __ATEXIT__ = []; // functions called during shutdown
var __ATPOSTRUN__ = []; // functions called after the runtime has exited
var runtimeInitialized = false;
var runtimeExited = false;
function preRun() {
// compatibility - merge in anything from Module['preRun'] at this time
if (Module['preRun']) {
if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];
while (Module['preRun'].length) {
addOnPreRun(Module['preRun'].shift());
}
}
callRuntimeCallbacks(__ATPRERUN__);
}
function ensureInitRuntime() {
if (runtimeInitialized) return;
runtimeInitialized = true;
callRuntimeCallbacks(__ATINIT__);
}
function preMain() {
callRuntimeCallbacks(__ATMAIN__);
}
function exitRuntime() {
callRuntimeCallbacks(__ATEXIT__);
runtimeExited = true;
}
function postRun() {
// compatibility - merge in anything from Module['postRun'] at this time
if (Module['postRun']) {
if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];
while (Module['postRun'].length) {
addOnPostRun(Module['postRun'].shift());
}
}
callRuntimeCallbacks(__ATPOSTRUN__);
}
function addOnPreRun(cb) {
__ATPRERUN__.unshift(cb);
}
Module['addOnPreRun'] = Module.addOnPreRun = addOnPreRun;
function addOnInit(cb) {
__ATINIT__.unshift(cb);
}
Module['addOnInit'] = Module.addOnInit = addOnInit;
function addOnPreMain(cb) {
__ATMAIN__.unshift(cb);
}
Module['addOnPreMain'] = Module.addOnPreMain = addOnPreMain;
function addOnExit(cb) {
__ATEXIT__.unshift(cb);
}
Module['addOnExit'] = Module.addOnExit = addOnExit;
function addOnPostRun(cb) {
__ATPOSTRUN__.unshift(cb);
}
Module['addOnPostRun'] = Module.addOnPostRun = addOnPostRun;
// Tools
function intArrayFromString(stringy, dontAddNull, length /* optional */) {
var ret = new Runtime.UTF8Processor().processJSString(stringy);
if (length) {
ret.length = length;
}
if (!dontAddNull) {
ret.push(0);
}
return ret;
}
Module['intArrayFromString'] = intArrayFromString;
function intArrayToString(array) {
var ret = [];
for (var i = 0; i < array.length; i++) {
var chr = array[i];
if (chr > 0xff) {
chr &= 0xff;
}
ret.push(String.fromCharCode(chr));
}
return ret.join('');
}
Module['intArrayToString'] = intArrayToString;
function writeStringToMemory(string, buffer, dontAddNull) {
var array = intArrayFromString(string, dontAddNull);
var i = 0;
while (i < array.length) {
var chr = array[i];
HEAP8[(buffer + i) >> 0] = chr;
i = i + 1;
}
}
Module['writeStringToMemory'] = writeStringToMemory;
function writeArrayToMemory(array, buffer) {
for (var i = 0; i < array.length; i++) {
HEAP8[(buffer + i) >> 0] = array[i];
}
}
Module['writeArrayToMemory'] = writeArrayToMemory;
function writeAsciiToMemory(str, buffer, dontAddNull) {
for (var i = 0; i < str.length; i++) {
HEAP8[(buffer + i) >> 0] = str.charCodeAt(i);
}
if (!dontAddNull) HEAP8[(buffer + str.length) >> 0] = 0;
}
Module['writeAsciiToMemory'] = writeAsciiToMemory;
function unSign(value, bits, ignore) {
if (value >= 0) {
return value;
}
return bits <= 32
? 2 * Math.abs(1 << (bits - 1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts
: Math.pow(2, bits) + value;
}
function reSign(value, bits, ignore) {
if (value <= 0) {
return value;
}
var half =
bits <= 32
? Math.abs(1 << (bits - 1)) // abs is needed if bits == 32
: Math.pow(2, bits - 1);
if (value >= half && (bits <= 32 || value > half)) {
// for huge values, we can hit the precision limit and always get true here. so don't do that
// but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors
// TODO: In i64 mode 1, resign the two parts separately and safely
value = -2 * half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts
}
return value;
}
// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 )
if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5)
Math['imul'] = function imul(a, b) {
var ah = a >>> 16;
var al = a & 0xffff;
var bh = b >>> 16;
var bl = b & 0xffff;
return (al * bl + ((ah * bl + al * bh) << 16)) | 0;
};
Math.imul = Math['imul'];
var Math_abs = Math.abs;
var Math_cos = Math.cos;
var Math_sin = Math.sin;
var Math_tan = Math.tan;
var Math_acos = Math.acos;
var Math_asin = Math.asin;
var Math_atan = Math.atan;
var Math_atan2 = Math.atan2;
var Math_exp = Math.exp;
var Math_log = Math.log;
var Math_sqrt = Math.sqrt;
var Math_ceil = Math.ceil;
var Math_floor = Math.floor;
var Math_pow = Math.pow;
var Math_imul = Math.imul;
var Math_fround = Math.fround;
var Math_min = Math.min;
// A counter of dependencies for calling run(). If we need to
// do asynchronous work before running, increment this and
// decrement it. Incrementing must happen in a place like
// PRE_RUN_ADDITIONS (used by emcc to add file preloading).
// Note that you can add dependencies in preRun, even though
// it happens right before run - run will be postponed until
// the dependencies are met.
var runDependencies = 0;
var runDependencyWatcher = null;
var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled
function addRunDependency(id) {
runDependencies++;
if (Module['monitorRunDependencies']) {
Module['monitorRunDependencies'](runDependencies);
}
}
Module['addRunDependency'] = addRunDependency;
function removeRunDependency(id) {
runDependencies--;
if (Module['monitorRunDependencies']) {
Module['monitorRunDependencies'](runDependencies);
}
if (runDependencies == 0) {
if (runDependencyWatcher !== null) {
clearInterval(runDependencyWatcher);
runDependencyWatcher = null;
}
if (dependenciesFulfilled) {
var callback = dependenciesFulfilled;
dependenciesFulfilled = null;
callback(); // can add another dependenciesFulfilled
}
}
}
Module['removeRunDependency'] = removeRunDependency;
Module['preloadedImages'] = {}; // maps url to image data
Module['preloadedAudios'] = {}; // maps url to audio data
var memoryInitializer = null;
// === Body ===
STATIC_BASE = 8;
STATICTOP = STATIC_BASE + 134416;
/* global initializers */ __ATINIT__.push();
/* memory initializer */ allocate(
[
0,
0,
0,
0,
0,
0,
0,
0,
112,
114,
111,
99,
101,
115,
115,
111,
114,
0,
0,
0,
0,
0,
0,
0,
46,
46,
47,
116,
101,
109,
112,
108,
97,
116,
101,
115,
47,
122,
98,
97,
114,
45,
109,
97,
105,
110,
46,
99,
0,
0,
0,
0,
0,
0,
0,
0,
109,
97,
105,
110,
0,
0,
0,
0,
122,
105,
109,
97,
103,
101,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
101,
114,
114,
45,
62,
109,
97,
103,
105,
99,
32,
61,
61,
32,
69,
82,
82,
73,
78,
70,
79,
95,
77,
65,
71,
73,
67,
0,
0,
0,
0,
0,
122,
98,
97,
114,
47,
101,
114,
114,
111,
114,
46,
99,
0,
0,
0,
0,
95,
122,
98,
97,
114,
95,
101,
114,
114,
111,
114,
95,
115,
112,
101,
119,
0,
0,
0,
0,
0,
0,
0,
0,
37,
115,
0,
0,
0,
0,
0,
0,
37,
115,
58,
32,
122,
98,
97,
114,
32,
37,
115,
32,
105,
110,
32,
37,
115,
40,
41,
58,
10,
32,
32,
32,
32,
37,
115,
58,
32,
0,
0,
0,
95,
122,
98,
97,
114,
95,
101,
114,
114,
111,
114,
95,
115,
116,
114,
105,
110,
103,
0,
0,
0,
0,
0,
0,
184,
2,
0,
0,
200,
2,
0,
0,
208,
2,
0,
0,
216,
2,
0,
0,
224,
2,
0,
0,
0,
0,
0,
0,
136,
2,
0,
0,
152,
2,
0,
0,
160,
2,
0,
0,
168,
2,
0,
0,
16,
1,
0,
0,
0,
0,
0,
0,
60,
117,
110,
107,
110,
111,
119,
110,
62,
0,
0,
0,
0,
0,
0,
0,
128,
1,
0,
0,
144,
1,
0,
0,
160,
1,
0,
0,
184,
1,
0,
0,
208,
1,
0,
0,
224,
1,
0,
0,
240,
1,
0,
0,
0,
2,
0,
0,
24,
2,
0,
0,
48,
2,
0,
0,
72,
2,
0,
0,
96,
2,
0,
0,
120,
2,
0,
0,
0,
0,
0,
0,
60,
63,
62,
0,
0,
0,
0,
0,
37,
100,
0,
0,
0,
0,
0,
0,
37,
120,
0,
0,
0,
0,
0,
0,
58,
32,
37,
115,
32,
40,
37,
100,
41,
10,
0,
0,
0,
0,
0,
0,
110,
111,
32,
101,
114,
114,
111,
114,
0,
0,
0,
0,
0,
0,
0,
0,
111,
117,
116,
32,
111,
102,
32,
109,
101,
109,
111,
114,
121,
0,
0,
0,
105,
110,
116,
101,
114,
110,
97,
108,
32,
108,
105,
98,
114,
97,
114,
121,
32,
101,
114,
114,
111,
114,
0,
0,
117,
110,
115,
117,
112,
112,
111,
114,
116,
101,
100,
32,
114,
101,
113,
117,
101,
115,
116,
0,
0,
0,
0,
0,
105,
110,
118,
97,
108,
105,
100,
32,
114,
101,
113,
117,
101,
115,
116,
0,
115,
121,
115,
116,
101,
109,
32,
101,
114,
114,
111,
114,
0,
0,
0,
0,
108,
111,
99,
107,
105,
110,
103,
32,
101,
114,
114,
111,
114,
0,
0,
0,
97,
108,
108,
32,
114,
101,
115,
111,
117,
114,
99,
101,
115,
32,
98,
117,
115,
121,
0,
0,
0,
0,
0,
0,
88,
49,
49,
32,
100,
105,
115,
112,
108,
97,
121,
32,
101,
114,
114,
111,
114,
0,
0,
0,
0,
0,
0,
0,
88,
49,
49,
32,
112,
114,
111,
116,
111,
99,
111,
108,
32,
101,
114,
114,
111,
114,
0,
0,
0,
0,
0,
0,
111,
117,
116,
112,
117,
116,
32,
119,
105,
110,
100,
111,
119,
32,
105,
115,
32,
99,
108,
111,
115,
101,
100,
0,
119,
105,
110,
100,
111,
119,
115,
32,
115,
121,
115,
116,
101,
109,
32,
101,
114,
114,
111,
114,
0,
0,
0,
0,
117,
110,
107,
110,
111,
119,
110,
32,
101,
114,
114,
111,
114,
0,
0,
0,
112,
114,
111,
99,
101,
115,
115,
111,
114,
0,
0,
0,
0,
0,
0,
0,
118,
105,
100,
101,
111,
0,
0,
0,
119,
105,
110,
100,
111,
119,
0,
0,
105,
109,
97,
103,
101,
32,
115,
99,
97,
110,
110,
101,
114,
0,
0,
0,
70,
65,
84,
65,
76,
32,
69,
82,
82,
79,
82,
0,
0,
0,
0,
0,
69,
82,
82,
79,
82,
0,
0,
0,
79,
75,
0,
0,
0,
0,
0,
0,
87,
65,
82,
78,
73,
78,
71,
0,
78,
79,
84,
69,
0,
0,
0,
0,
105,
109,
103,
45,
62,
114,
101,
102,
99,
110,
116,
0,
0,
0,
0,
0,
122,
98,
97,
114,
47,
105,
109,
97,
103,
101,
46,
99,
0,
0,
0,
0,
122,
98,
97,
114,
95,
105,
109,
97,
103,
101,
95,
102,
114,
101,
101,
95,
100,
97,
116,
97,
0,
0,
0,
0,
37,
115,
46,
37,
46,
52,
115,
46,
122,
105,
109,
103,
0,
0,
0,
0,
37,
115,
46,
37,
48,
56,
120,
46,
122,
105,
109,
103,
0,
0,
0,
0,
110,
32,
60,
32,
108,
101,
110,
32,
45,
32,
49,
0,
0,
0,
0,
0,
122,
98,
97,
114,
95,
105,
109,
97,
103,
101,
95,
119,
114,
105,
116,
101,
0,
0,
0,
0,
0,
0,
0,
0,
37,
115,
58,
32,
100,
117,
109,
112,
105,
110,
103,
32,
37,
46,
52,
115,
40,
37,
48,
56,
120,
41,
32,
105,
109,
97,
103,
101,
32,
116,
111,
32,
37,
115,
10,
0,
0,
0,
0,
0,
119,
0,
0,
0,
0,
0,
0,
0,
37,
115,
58,
32,
69,
82,
82,
79,
82,
32,
111,
112,
101,
110,
105,
110,
103,
32,
37,
115,
58,
32,
37,
115,
10,
0,
0,
0,
0,
0,
0,
0,
37,
115,
58,
32,
69,
82,
82,
79,
82,
32,
119,
114,
105,
116,
105,
110,
103,
32,
37,
115,
58,
32,
37,
115,
10,
0,
0,
0,
0,
0,
0,
0,
114,
99,
32,
62,
61,
32,
48,
0,
46,
47,
122,
98,
97,
114,
47,
114,
101,
102,
99,
110,
116,
46,
104,
0,
95,
122,
98,
97,
114,
95,
114,
101,
102,
99,
110,
116,
0,
0,
0,
0,
122,
98,
97,
114,
0,
0,
0,
0,
37,
115,
58,
32,
112,
114,
111,
99,
101,
115,
115,
105,
110,
103,
58,
32,
37,
46,
52,
115,
40,
37,
48,
56,
120,
41,
32,
37,
100,
120,
37,
100,
32,
64,
37,
112,
10,
0,
0,
0,
95,
122,
98,
97,
114,
95,
112,
114,
111,
99,
101,
115,
115,
95,
105,
109,
97,
103,
101,
0,
0,
0,
0,
0,
37,
115,
58,
32,
37,
115,
58,
32,
37,
115,
32,
40,
37,
100,
32,
112,
116,
115,
41,
32,
40,
100,
105,
114,
61,
37,
100,
41,
32,
40,
113,
61,
37,
100,
41,
32,
40,
37,
115,
41,
10,
0,
0,
0,
0,
0,
0,
0,
117,
110,
99,
101,
114,
116,
97,
105,
110,
0,
0,
0,
0,
0,
0,
0,
100,
117,
112,
108,
105,
99,
97,
116,
101,
0,
0,
0,
0,
0,
0,
0,
110,
101,
119,
0,
0,
0,
0,
0,
117,
110,
107,
110,
111,
119,
110,
32,
105,
109,
97,
103,
101,
32,
102,
111,
114,
109,
97,
116,
0,
0,
0,
0,
33,
112,
114,
111,
99,
45,
62,
119,
97,
105,
116,
95,
104,
101,
97,
100,
0,
0,
0,
0,
0,
0,
0,
0,
122,
98,
97,
114,
47,
112,
114,
111,
99,
101,
115,
115,
111,
114,
46,
99,
0,
0,
0,
0,
0,
0,
0,
0,
122,
98,
97,
114,
95,
112,
114,
111,
99,
101,
115,
115,
111,
114,
95,
100,
101,
115,
116,
114,
111,
121,
0,
0,
33,
112,
114,
111,
99,
45,
62,
119,
97,
105,
116,
95,
116,
97,
105,
108,
0,
0,
0,
0,
0,
0,
0,
0,
33,
112,
114,
111,
99,
45,
62,
119,
97,
105,
116,
95,
110,
101,
120,
116,
0,
0,
0,
0,
0,
0,
0,
0,
122,
98,
97,
114,
95,
112,
114,
111,
99,
101,
115,
115,
111,
114,
95,
105,
110,
105,
116,
0,
0,
0,
0,
0,
97,
108,
108,
111,
99,
97,
116,
105,
110,
103,
32,
119,
105,
110,
100,
111,
119,
32,
114,
101,
115,
111,
117,
114,
99,
101,
115,
0,
0,
0,
0,
0,
97,
108,
108,
111,
99,
97,
116,
105,
110,
103,
32,
118,
105,
100,
101,
111,
32,
114,
101,
115,
111,
117,
114,
99,
101,
115,
0,
0,
0,
0,
0,
0,
115,
112,
97,
119,
110,
105,
110,
103,
32,
118,
105,
100,
101,
111,
32,
116,
104,
114,
101,
97,
100,
0,
0,
0,
115,
112,
97,
119,
110,
105,
110,
103,
32,
105,
110,
112,
117,
116,
32,
116,
104,
114,
101,
97,
100,
0,
0,
0,
87,
65,
82,
78,
73,
78,
71,
58,
32,
110,
111,
32,
99,
111,
109,
112,
97,
116,
105,
98,
108,
101,
32,
105,
110,
112,
117,
116,
32,
116,
111,
32,
111,
117,
116,
112,
117,
116,
32,
102,
111,
114,
109,
97,
116,
10,
46,
46,
46,
116,
114,
121,
105,
110,
103,
32,
97,
103,
97,
105,
110,
32,
119,
105,
116,
104,
32,
111,
117,
116,
112,
117,
116,
32,
100,
105,
115,
97,
98,
108,
101,
100,
10,
0,
0,
0,
0,
0,
37,
115,
58,
32,
69,
82,
82,
79,
82,
58,
32,
110,
111,
32,
99,
111,
109,
112,
97,
116,
105,
98,
108,
101,
32,
37,
115,
32,
102,
111,
114,
109,
97,
116,
10,
0,
0,
0,
0,
0,
118,
105,
100,
101,
111,
32,
105,
110,
112,
117,
116,
0,
0,
0,
0,
0,
119,
105,
110,
100,
111,
119,
32,
111,
117,
116,
112,
117,
116,
0,
0,
0,
110,
111,
32,
99,
111,
109,
112,
97,
116,
105,
98,
108,
101,
32,
105,
109,
97,
103,
101,
32,
102,
111,
114,
109,
97,
116,
0,
0,
0,
0,
0,
0,
122,
98,
97,
114,
95,
112,
114,
111,
99,
101,
115,
115,
111,
114,
95,
117,
115,
101,
114,
95,
119,
97,
105,
116,
0,
0,
0,
0,
0,
0,
0,
0,
100,
105,
115,
112,
108,
97,
121,
32,
119,
105,
110,
100,
111,
119,
32,
110,
111,
116,
32,
97,
118,
97,
105,
108,
97,
98,
108,
101,
32,
102,
111,
114,
32,
105,
110,
112,
117,
116,
0,
0,
122,
98,
97,
114,
95,
112,
114,
111,
99,
101,
115,
115,
111,
114,
95,
115,
101,
116,
95,
97,
99,
116,
105,
118,
101,
0,
0,
0,
0,
0,
0,
0,
118,
105,
100,
101,
111,
32,
105,
110,
112,
117,
116,
32,
110,
111,
116,
32,
105,
110,
105,
116,
105,
97,
108,
105,
122,
101,
100,
0,
0,
0,
0,
0,
122,
98,
97,
114,
32,
98,
97,
114,
99,
111,
100,
101,
32,
114,
101,
97,
100,
101,
114,
0,
0,
0,
0,
0,
101,
114,
114,
45,
62,
109,
97,
103,
105,
99,
32,
61,
61,
32,
69,
82,
82,
73,
78,
70,
79,
95,
77,
65,
71,
73,
67,
0,
0,
0,
0,
0,
46,
47,
122,
98,
97,
114,
47,
101,
114,
114,
111,
114,
46,
104,
0,
0,
101,
114,
114,
95,
99,
108,
101,
97,
110,
117,
112,
0,
0,
0,
0,
0,
101,
114,
114,
95,
99,
97,
112,
116,
117,
114,
101,
0,
0,
0,
0,
0,
100,
115,
116,
45,
62,
109,
97,
103,
105,
99,
32,
61,
61,
32,
69,
82,
82,
73,
78,
70,
79,
95,
77,
65,
71,
73,
67,
0,
0,
0,
0,
0,
101,
114,
114,
95,
99,
111,
112,
121,
0,
0,
0,
0,
0,
0,
0,
0,
115,
114,
99,
45,
62,
109,
97,
103,
105,
99,
32,
61,
61,
32,
69,
82,
82,
73,
78,
70,
79,
95,
77,
65,
71,
73,
67,
0,
0,
0,
0,
0,
69,
65,
78,
45,
50,
0,
0,
0,
69,
65,
78,
45,
53,
0,
0,
0,
69,
65,
78,
45,
56,
0,
0,
0,
85,
80,
67,
45,
69,
0,
0,
0,
73,
83,
66,
78,
45,
49,
48,
0,
85,
80,
67,
45,
65,
0,
0,
0,
69,
65,
78,
45,
49,
51,
0,
0,
73,
83,
66,
78,
45,
49,
51,
0,
67,
79,
77,
80,
79,
83,
73,
84,
69,
0,
0,
0,
0,
0,
0,
0,
73,
50,
47,
53,
0,
0,
0,
0,
68,
97,
116,
97,
66,
97,
114,
0,
68,
97,
116,
97,
66,
97,
114,
45,
69,
120,
112,
0,
0,
0,
0,
0,
67,
111,
100,
97,
98,
97,
114,
0,
67,
79,
68,
69,
45,
51,
57,
0,
67,
79,
68,
69,
45,
57,
51,
0,
67,
79,
68,
69,
45,
49,
50,
56,
0,
0,
0,
0,
0,
0,
0,
0,
80,
68,
70,
52,
49,
55,
0,
0,
81,
82,
45,
67,
111,
100,
101,
0,
85,
78,
75,
78,
79,
87,
78,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
16,
17,
255,
17,
22,
12,
5,
6,
8,
255,
4,
3,
7,
18,
255,
255,
255,
255,
255,
255,
255,
2,
255,
0,
18,
12,
11,
29,
10,
0,
103,
48,
32,
62,
61,
32,
48,
32,
38,
38,
32,
103,
49,
32,
62,
61,
32,
48,
0,
0,
0,
0,
0,
0,
122,
98,
97,
114,
47,
115,
121,
109,
98,
111,
108,
46,
99,
0,
0,
0,
95,
122,
98,
97,
114,
95,
103,
101,
116,
95,
115,
121,
109,
98,
111,
108,
95,
104,
97,
115,
104,
0,
0,
0,
114,
99,
32,
62,
61,
32,
48,
0,
46,
47,
122,
98,
97,
114,
47,
114,
101,
102,
99,
110,
116,
46,
104,
0,
95,
122,
98,
97,
114,
95,
114,
101,
102,
99,
110,
116,
0,
0,
0,
0,
37,
115,
58,
32,
99,
108,
111,
115,
101,
100,
32,
99,
97,
109,
101,
114,
97,
32,
40,
102,
100,
61,
37,
100,
41,
10,
0,
0,
0,
0,
0,
0,
122,
98,
97,
114,
95,
118,
105,
100,
101,
111,
95,
111,
112,
101,
110,
0,
47,
100,
101,
118,
47,
118,
105,
100,
101,
111,
48,
0,
0,
0,
0,
0,
122,
98,
97,
114,
95,
118,
105,
100,
101,
111,
95,
103,
101,
116,
95,
102,
100,
0,
0,
0,
0,
0,
0,
0,
118,
105,
100,
101,
111,
32,
100,
101,
118,
105,
99,
101,
32,
110,
111,
116,
32,
111,
112,
101,
110,
101,
100,
0,
118,
105,
100,
101,
111,
32,
100,
114,
105,
118,
101,
114,
32,
100,
111,
101,
115,
32,
110,
111,
116,
32,
115,
117,
112,
112,
111,
114,
116,
32,
112,
111,
108,
108,
105,
110,
103,
0,
0,
0,
122,
98,
97,
114,
95,
118,
105,
100,
101,
111,
95,
114,
101,
113,
117,
101,
115,
116,
95,
115,
105,
122,
101,
0,
97,
108,
114,
101,
97,
100,
121,
32,
105,
110,
105,
116,
105,
97,
108,
105,
122,
101,
100,
44,
32,
117,
110,
97,
98,
108,
101,
32,
116,
111,
32,
114,
101,
115,
105,
122,
101,
0,
0,
0,
37,
115,
58,
32,
114,
101,
113,
117,
101,
115,
116,
32,
115,
105,
122,
101,
58,
32,
37,
100,
32,
120,
32,
37,
100,
10,
0,
0,
0,
0,
0,
0,
122,
98,
97,
114,
95,
118,
105,
100,
101,
111,
95,
114,
101,
113,
117,
101,
115,
116,
95,
105,
110,
116,
101,
114,
102,
97,
99,
101,
0,
0,
0,
0,
100,
101,
118,
105,
99,
101,
32,
97,
108,
114,
101,
97,
100,
121,
32,
111,
112,
101,
110,
101,
100,
44,
32,
117,
110,
97,
98,
108,
101,
32,
116,
111,
32,
99,
104,
97,
110,
103,
101,
32,
105,
110,
116,
101,
114,
102,
97,
99,
101,
0,
0,
0,
0,
0,
0,
0,
37,
115,
58,
32,
114,
101,
113,
117,
101,
115,
116,
32,
105,
110,
116,
101,
114,
102,
97,
99,
101,
32,
118,
101,
114,
115,
105,
111,
110,
32,
37,
100,
10,
0,
0,
0,
0,
0,
0,
0,
122,
98,
97,
114,
95,
118,
105,
100,
101,
111,
95,
114,
101,
113,
117,
101,
115,
116,
95,
105,
111,
109,
111,
100,
101,
0,
0,
0,
0,
0,
0,
0,
100,
101,
118,
105,
99,
101,
32,
97,
108,
114,
101,
97,
100,
121,
32,
111,
112,
101,
110,
101,
100,
44,
32,
117,
110,
97,
98,
108,
101,
32,
116,
111,
32,
99,
104,
97,
110,
103,
101,
32,
105,
111,
109,
111,
100,
101,
0,
0,
105,
110,
118,
97,
108,
105,
100,
32,
105,
111,
109,
111,
100,
101,
32,
114,
101,
113,
117,
101,
115,
116,
101,
100,
0,
0,
0,
0,
0,
0,
0,
0,
122,
98,
97,
114,
95,
118,
105,
100,
101,
111,
95,
105,
110,
105,
116,
0,
97,
108,
114,
101,
97,
100,
121,
32,
105,
110,
105,
116,
105,
97,
108,
105,
122,
101,
100,
44,
32,
114,
101,
45,
105,
110,
105,
116,
32,
117,
110,
105,
109,
112,
108,
101,
109,
101,
110,
116,
101,
100,
0,
0,
0,
0,
0,
0,
122,
98,
97,
114,
95,
118,
105,
100,
101,
111,
95,
101,
110,
97,
98,
108,
101,
0,
0,
0,
0,
0,
0,
0,
105,
109,
103,
0,
0,
0,
0,
0,
122,
98,
97,
114,
47,
118,
105,
100,
101,
111,
46,
99,
0,
0,
0,
0,
122,
98,
97,
114,
95,
118,
105,
100,
101,
111,
95,
110,
101,
120,
116,
95,
105,
109,
97,
103,
101,
0,
0,
0,
114,
99,
32,
62,
61,
32,
48,
0,
46,
47,
122,
98,
97,
114,
47,
114,
101,
102,
99,
110,
116,
46,
104,
0,
95,
122,
98,
97,
114,
95,
114,
101,
102,
99,
110,
116,
0,
0,
0,
0,
118,
100,
111,
0,
0,
0,
0,
0,
95,
122,
98,
97,
114,
95,
118,
105,
100,
101,
111,
95,
114,
101,
99,
121,
99,
108,
101,
95,
115,
104,
97,
100,
111,
119,
0,
0,
0,
0,
0,
0,
105,
109,
103,
45,
62,
115,
114,
99,
105,
100,
120,
32,
61,
61,
32,
45,
49,
0,
0,
0,
0,
0,
0,
0,
118,
100,
111,
45,
62,
100,
97,
116,
97,
108,
101,
110,
0,
0,
0,
0,
118,
105,
100,
101,
111,
95,
105,
110,
105,
116,
95,
105,
109,
97,
103,
101,
115,
0,
0,
0,
0,
0,
0,
0,
33,
118,
100,
111,
45,
62,
98,
117,
102,
0,
0,
0,
0,
0,
0,
0,
117,
110,
97,
98,
108,
101,
32,
116,
111,
32,
97,
108,
108,
111,
99,
97,
116,
101,
32,
105,
109,
97,
103,
101,
32,
98,
117,
102,
102,
101,
114,
115,
0,
0,
0,
0,
0,
0,
0,
0,
37,
115,
58,
32,
112,
114,
101,
45,
97,
108,
108,
111,
99,
97,
116,
101,
100,
32,
37,
100,
32,
37,
115,
32,
98,
117,
102,
102,
101,
114,
115,
32,
115,
105,
122,
101,
61,
48,
120,
37,
108,
120,
10,
0,
0,
0,
0,
0,
82,
69,
65,
68,
0,
0,
0,
0,
85,
83,
69,
82,
80,
84,
82,
0,
37,
115,
58,
32,
32,
32,
32,
32,
91,
37,
48,
50,
100,
93,
32,
64,
37,
48,
56,
108,
120,
10,
0,
0,
101,
114,
114,
45,
62,
109,
97,
103,
105,
99,
32,
61,
61,
32,
69,
82,
82,
73,
78,
70,
79,
95,
77,
65,
71,
73,
67,
0,
0,
0,
0,
0,
46,
47,
122,
98,
97,
114,
47,
101,
114,
114,
111,
114,
46,
104,
0,
0,
101,
114,
114,
95,
99,
97,
112,
116,
117,
114,
101,
0,
0,
0,
0,
0,
101,
114,
114,
95,
99,
108,
101,
97,
110,
117,
112,
0,
0,
0,
0,
0,
95,
122,
98,
97,
114,
95,
118,
105,
100,
101,
111,
95,
114,
101,
99,
121,
99,
108,
101,
95,
105,
109,
97,
103,
101,
0,
0,
0,
0,
0,
0,
0,
105,
109,
103,
45,
62,
115,
114,
99,
105,
100,
120,
32,
62,
61,
32,
48,
0,
0,
0,
0,
0,
0,
0,
0,
114,
99,
32,
62,
61,
32,
48,
0,
46,
47,
122,
98,
97,
114,
47,
114,
101,
102,
99,
110,
116,
46,
104,
0,
95,
122,
98,
97,
114,
95,
114,
101,
102,
99,
110,
116,
0,
0,
0,
0,
101,
114,
114,
45,
62,
109,
97,
103,
105,
99,
32,
61,
61,
32,
69,
82,
82,
73,
78,
70,
79,
95,
77,
65,
71,
73,
67,
0,
0,
0,
0,
0,
46,
47,
122,
98,
97,
114,
47,
101,
114,
114,
111,
114,
46,
104,
0,
0,
101,
114,
114,
95,
99,
108,
101,
97,
110,
117,
112,
0,
0,
0,
0,
0,
95,
122,
98,
97,
114,
95,
112,
114,
111,
99,
101,
115,
115,
111,
114,
95,
111,
112,
101,
110,
0,
0,
0,
0,
95,
122,
98,
97,
114,
95,
112,
114,
111,
99,
101,
115,
115,
111,
114,
95,
99,
108,
111,
115,
101,
0,
0,
0,
95,
122,
98,
97,
114,
95,
112,
114,
111,
99,
101,
115,
115,
111,
114,
95,
115,
101,
116,
95,
115,
105,
122,
101,
0,
0,
0,
0,
0,
0,
0,
0,
95,
122,
98,
97,
114,
95,
112,
114,
111,
99,
101,
115,
115,
111,
114,
95,
105,
110,
118,
97,
108,
105,
100,
97,
116,
101,
0,
0,
0,
0,
0,
0,
110,
111,
116,
32,
99,
111,
109,
112,
105,
108,
101,
100,
32,
119,
105,
116,
104,
32,
111,
117,
116,
112,
117,
116,
32,
119,
105,
110,
100,
111,
119,
32,
115,
117,
112,
112,
111,
114,
116,
0,
101,
114,
114,
45,
62,
109,
97,
103,
105,
99,
32,
61,
61,
32,
69,
82,
82,
73,
78,
70,
79,
95,
77,
65,
71,
73,
67,
0,
0,
0,
0,
0,
46,
47,
122,
98,
97,
114,
47,
101,
114,
114,
111,
114,
46,
104,
0,
0,
101,
114,
114,
95,
99,
97,
112,
116,
117,
114,
101,
0,
0,
0,
0,
0,
95,
122,
98,
97,
114,
95,
119,
105,
110,
100,
111,
119,
95,
97,
116,
116,
97,
99,
104,
0,
0,
0,
0,
0,
110,
111,
116,
32,
99,
111,
109,
112,
105,
108,
101,
100,
32,
119,
105,
116,
104,
32,
111,
117,
116,
112,
117,
116,
32,
119,
105,
110,
100,
111,
119,
32,
115,
117,
112,
112,
111,
114,
116,
0,
101,
114,
114,
45,
62,
109,
97,
103,
105,
99,
32,
61,
61,
32,
69,
82,
82,
73,
78,
70,
79,
95,
77,
65,
71,
73,
67,
0,
0,
0,
0,
0,
46,
47,
122,
98,
97,
114,
47,
101,
114,
114,
111,
114,
46,
104,
0,
0,
101,
114,
114,
95,
99,
97,
112,
116,
117,
114,
101,
0,
0,
0,
0,
0,
112,
114,
111,
99,
45,
62,
108,
111,
99,
107,
95,
108,
101,
118,
101,
108,
32,
62,
32,
48,
0,
0,
0,
0,
122,
98,
97,
114,
47,
112,
114,
111,
99,
101,
115,
115,
111,
114,
47,
108,
111,
99,
107,
46,
99,
0,
0,
0,
95,
122,
98,
97,
114,
95,
112,
114,
111,
99,
101,
115,
115,
111,
114,
95,
117,
110,
108,
111,
99,
107,
0,
0,
119,
32,
61,
61,
32,
119,
97,
105,
116,
101,
114,
0,
0,
0,
0,
0,
95,
122,
98,
97,
114,
95,
112,
114,
111,
99,
101,
115,
115,
111,
114,
95,
119,
97,
105,
116,
0,
0,
0,
0,
112,
114,
111,
99,
45,
62,
108,
111,
99,
107,
95,
108,
101,
118,
101,
108,
32,
61,
61,
32,
49,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
95,
122,
98,
97,
114,
95,
112,
114,
111,
99,
101,
115,
115,
111,
114,
95,
105,
110,
105,
116,
0,
0,
0,
0,
102,
97,
105,
108,
101,
100,
32,
116,
111,
32,
111,
112,
101,
110,
32,
112,
105,
112,
101,
0,
0,
0,
0,
0,
37,
115,
58,
32,
91,
37,
100,
93,
32,
102,
100,
61,
37,
100,
32,
110,
61,
37,
100,
10,
0,
0,
0,
0,
114,
101,
109,
111,
118,
101,
95,
112,
111,
108,
108,
0,
0,
0,
0,
0,
37,
115,
58,
32,
107,
105,
99,
107,
105,
110,
103,
32,
37,
100,
32,
102,
100,
115,
10,
0,
0,
0,
0,
0,
112,
114,
111,
99,
95,
107,
105,
99,
107,
95,
104,
97,
110,
100,
108,
101,
114,
0,
0,
0,
0,
0,
0,
0,
112,
114,
111,
99,
45,
62,
116,
104,
114,
101,
97,
100,
101,
100,
0,
0,
122,
98,
97,
114,
47,
112,
114,
111,
99,
101,
115,
115,
111,
114,
47,
112,
111,
115,
105,
120,
46,
99,
0,
0,
37,
115,
58,
32,
91,
37,
100,
93,
32,
102,
100,
61,
37,
100,
32,
104,
97,
110,
100,
108,
101,
114,
61,
37,
112,
10,
0,
0,
0,
0,
0,
0,
97,
100,
100,
95,
112,
111,
108,
108,
0,
0,
0,
0,
0,
0,
0,
0,
115,
116,
97,
116,
101,
45,
62,
107,
105,
99,
107,
95,
102,
100,
115,
91,
49,
93,
32,
62,
61,
32,
48,
0,
122,
98,
97,
114,
47,
112,
114,
111,
99,
101,
115,
115,
111,
114,
47,
112,
111,
115,
105,
120,
46,
104,
0,
0,
101,
114,
114,
45,
62,
109,
97,
103,
105,
99,
32,
61,
61,
32,
69,
82,
82,
73,
78,
70,
79,
95,
77,
65,
71,
73,
67,
0,
0,
0,
0,
0,
46,
47,
122,
98,
97,
114,
47,
101,
114,
114,
111,
114,
46,
104,
0,
0,
101,
114,
114,
95,
99,
97,
112,
116,
117,
114,
101,
0,
0,
0,
0,
0,
112,
45,
62,
110,
117,
109,
0,
0,
112,
114,
111,
99,
95,
112,
111,
108,
108,
95,
105,
110,
112,
117,
116,
115,
0,
0,
0,
0,
0,
0,
0,
0,
33,
114,
99,
0,
0,
0,
0,
0,
116,
105,
109,
101,
111,
117,
116,
32,
62,
32,
48,
0,
0,
0,
0,
0,
112,
114,
111,
99,
95,
115,
108,
101,
101,
112,
0,
0,
0,
0,
0,
0,
95,
122,
98,
97,
114,
95,
118,
105,
100,
101,
111,
95,
111,
112,
101,
110,
0,
0,
0,
0,
0,
0,
0,
0,
110,
111,
116,
32,
99,
111,
109,
112,
105,
108,
101,
100,
32,
119,
105,
116,
104,
32,
118,
105,
100,
101,
111,
32,
105,
110,
112,
117,
116,
32,
115,
117,
112,
112,
111,
114,
116,
0,
0,
0,
101,
114,
114,
45,
62,
109,
97,
103,
105,
99,
32,
61,
61,
32,
69,
82,
82,
73,
78,
70,
79,
95,
77,
65,
71,
73,
67,
0,
0,
0,
0,
0,
46,
47,
122,
98,
97,
114,
47,
101,
114,
114,
111,
114,
46,
104,
0,
0,
101,
114,
114,
95,
99,
97,
112,
116,
117,
114,
101,
0,
0,
0,
0,
0,
52,
50,
50,
80,
73,
52,
50,
48,
89,
85,
49,
50,
89,
86,
49,
50,
52,
49,
49,
80,
78,
86,
49,
50,
78,
86,
50,
49,
89,
85,
89,
86,
85,
89,
86,
89,
89,
85,
89,
50,
89,
85,
86,
52,
82,
71,
66,
51,
3,
0,
0,
0,
66,
71,
82,
51,
82,
71,
66,
52,
66,
71,
82,
52,
82,
71,
66,
80,
82,
71,
66,
79,
82,
71,
66,
82,
82,
71,
66,
81,
89,
85,
86,
57,
89,
86,
85,
57,
71,
82,
69,
89,
89,
56,
48,
48,
89,
56,
32,
32,
89,
56,
0,
0,
82,
71,
66,
49,
82,
52,
52,
52,
66,
65,
56,
49,
89,
52,
49,
80,
89,
52,
52,
52,
89,
85,
86,
79,
72,
77,
49,
50,
72,
73,
50,
52,
74,
80,
69,
71,
77,
74,
80,
71,
77,
80,
69,
71,
0,
0,
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
8,
0,
0,
0,
2,
0,
0,
0,
24,
0,
0,
0,
3,
0,
0,
0,
32,
0,
0,
0,
4,
0,
0,
0,
8,
0,
0,
0,
2,
0,
0,
0,
255,
255,
255,
255,
0,
0,
0,
0,
1,
0,
0,
0,
1,
0,
0,
0,
48,
0,
0,
0,
5,
0,
0,
0,
64,
0,
0,
0,
3,
0,
0,
0,
128,
0,
0,
0,
4,
0,
0,
0,
40,
0,
0,
0,
2,
0,
0,
0,
255,
255,
255,
255,
0,
0,
0,
0,
24,
0,
0,
0,
6,
0,
0,
0,
52,
0,
0,
0,
6,
0,
0,
0,
20,
0,
0,
0,
7,
0,
0,
0,
144,
0,
0,
0,
8,
0,
0,
0,
18,
0,
0,
0,
6,
0,
0,
0,
255,
255,
255,
255,
0,
0,
0,
0,
112,
0,
0,
0,
9,
0,
0,
0,
160,
0,
0,
0,
9,
0,
0,
0,
144,
0,
0,
0,
10,
0,
0,
0,
120,
0,
0,
0,
11,
0,
0,
0,
152,
0,
0,
0,
9,
0,
0,
0,
255,
255,
255,
255,
0,
0,
0,
0,
1,
0,
0,
0,
1,
0,
0,
0,
8,
0,
0,
0,
2,
0,
0,
0,
24,
0,
0,
0,
3,
0,
0,
0,
32,
0,
0,
0,
4,
0,
0,
0,
8,
0,
0,
0,
2,
0,
0,
0,
255,
255,
255,
255,
0,
0,
0,
0,
255,
255,
255,
255,
0,
0,
0,
0,
255,
255,
255,
255,
0,
0,
0,
0,
255,
255,
255,
255,
0,
0,
0,
0,
255,
255,
255,
255,
0,
0,
0,
0,
255,
255,
255,
255,
0,
0,
0,
0,
255,
255,
255,
255,
0,
0,
0,
0,
37,
115,
58,
32,
115,
104,
97,
114,
101,
100,
32,
102,
111,
114,
109,
97,
116,
58,
32,
37,
52,
46,
52,
115,
10,
0,
0,
0,
0,
0,
0,
0,
95,
122,
98,
97,
114,
95,
98,
101,
115,
116,
95,
102,
111,
114,
109,
97,
116,
0,
0,
0,
0,
0,
0,
0,
37,
115,
58,
32,
102,
114,
111,
109,
32,
37,
46,
52,
115,
40,
37,
48,
56,
120,
41,
32,
116,
111,
0,
0,
32,
37,
46,
52,
115,
40,
37,
48,
56,
120,
41,
61,
37,
100,
0,
0,
89,
56,
48,
48,
0,
0,
0,
0,
122,
98,
97,
114,
95,
110,
101,
103,
111,
116,
105,
97,
116,
101,
95,
102,
111,
114,
109,
97,
116,
0,
0,
0,
105,
109,
97,
103,
101,
32,
102,
111,
114,
109,
97,
116,
32,
108,
105,
115,
116,
32,
105,
115,
32,
110,
111,
116,
32,
115,
111,
114,
116,
101,
100,
33,
63,
0,
0,
0,
0,
0,
0,
0,
110,
111,
32,
105,
110,
112,
117,
116,
32,
111,
114,
32,
111,
117,
116,
112,
117,
116,
32,
102,
111,
114,
109,
97,
116,
115,
32,
97,
118,
97,
105,
108,
97,
98,
108,
101,
0,
0,
0,
0,
37,
115,
58,
32,
37,
46,
52,
115,
40,
37,
48,
56,
120,
41,
32,
45,
62,
32,
63,
32,
40,
117,
110,
115,
117,
112,
112,
111,
114,
116,
101,
100,
41,
10,
0,
0,
0,
0,
0,
0,
37,
115,
58,
32,
37,
46,
52,
115,
40,
37,
48,
56,
120,
41,
32,
45,
62,
32,
37,
46,
52,
115,
40,
37,
48,
56,
120,
41,
32,
40,
37,
100,
41,
10,
0,
0,
0,
0,
0,
0,
110,
111,
32,
115,
117,
112,
112,
111,
114,
116,
101,
100,
32,
105,
109,
97,
103,
101,
32,
102,
111,
114,
109,
97,
116,
115,
32,
97,
118,
97,
105,
108,
97,
98,
108,
101,
0,
0,
0,
0,
37,
115,
58,
32,
115,
101,
116,
116,
105,
110,
103,
32,
98,
101,
115,
116,
32,
102,
111,
114,
109,
97,
116,
32,
37,
46,
52,
115,
40,
37,
48,
56,
120,
41,
32,
40,
37,
100,
41,
10,
0,
0,
0,
0,
0,
0,
0,
0,
101,
114,
114,
45,
62,
109,
97,
103,
105,
99,
32,
61,
61,
32,
69,
82,
82,
73,
78,
70,
79,
95,
77,
65,
71,
73,
67,
0,
0,
0,
0,
0,
46,
47,
122,
98,
97,
114,
47,
101,
114,
114,
111,
114,
46,
104,
0,
0,
101,
114,
114,
95,
99,
97,
112,
116,
117,
114,
101,
0,
0,
0,
0,
0,
69,
82,
82,
79,
82,
58,
32,
105,
109,
97,
103,
101,
32,
102,
111,
114,
109,
97,
116,
32,
108,
105,
115,
116,
32,
105,
115,
32,
110,
111,
116,
32,
115,
111,
114,
116,
101,
100,
33,
63,
10,
0,
0,
0,
0,
0,
0,
0,
115,
114,
99,
45,
62,
100,
97,
116,
97,
108,
101,
110,
32,
62,
61,
32,
40,
115,
114,
99,
45,
62,
119,
105,
100,
116,
104,
32,
42,
32,
115,
114,
99,
45,
62,
104,
101,
105,
103,
104,
116,
32,
42,
32,
115,
114,
99,
102,
109,
116,
45,
62,
112,
46,
114,
103,
98,
46,
98,
112,
112,
41,
0,
0,
122,
98,
97,
114,
47,
99,
111,
110,
118,
101,
114,
116,
46,
99,
0,
0,
99,
111,
110,
118,
101,
114,
116,
95,
114,
103,
98,
95,
114,
101,
115,
97,
109,
112,
108,
101,
0,
0,
0,
0,
99,
111,
110,
118,
101,
114,
116,
95,
114,
103,
98,
95,
116,
111,
95,
121,
117,
118,
0,
0,
0,
0,
0,
0,
99,
111,
110,
118,
101,
114,
116,
95,
114,
103,
98,
95,
116,
111,
95,
121,
117,
118,
112,
0,
0,
0,
0,
0,
115,
114,
99,
45,
62,
100,
97,
116,
97,
108,
101,
110,
32,
62,
61,
32,
40,
115,
114,
99,
45,
62,
119,
105,
100,
116,
104,
32,
42,
32,
115,
114,
99,
45,
62,
104,
101,
105,
103,
104,
116,
32,
43,
32,
117,
118,
112,
95,
115,
105,
122,
101,
40,
115,
114,
99,
44,
32,
115,
114,
99,
102,
109,
116,
41,
32,
42,
32,
50,
41,
0,
0,
99,
111,
110,
118,
101,
114,
116,
95,
121,
117,
118,
95,
116,
111,
95,
114,
103,
98,
0,
0,
0,
0,
0,
0,
115,
114,
99,
102,
109,
116,
45,
62,
112,
46,
121,
117,
118,
46,
120,
115,
117,
98,
50,
32,
61,
61,
32,
49,
0,
0,
0,
0,
0,
0,
0,
0,
115,
114,
99,
45,
62,
100,
97,
116,
97,
108,
101,
110,
32,
62,
61,
32,
115,
114,
99,
110,
32,
43,
32,
50,
32,
42,
32,
115,
114,
99,
109,
0,
99,
111,
110,
118,
101,
114,
116,
95,
121,
117,
118,
112,
95,
116,
111,
95,
114,
103,
98,
0,
0,
0,
0,
0,
115,
114,
99,
45,
62,
100,
97,
116,
97,
108,
101,
110,
32,
62,
61,
32,
115,
114,
99,
110,
32,
43,
32,
50,
32,
42,
32,
115,
114,
99,
110,
0,
99,
111,
110,
118,
101,
114,
116,
95,
121,
117,
118,
95,
112,
97,
99,
107,
0,
0,
0,
0,
0,
0,
0,
0,
115,
114,
99,
45,
62,
100,
97,
116,
97,
108,
101,
110,
32,
62,
61,
32,
115,
114,
99,
45,
62,
119,
105,
100,
116,
104,
32,
42,
32,
115,
114,
99,
45,
62,
104,
101,
105,
103,
104,
116,
0,
0,
0,
0,
0,
0,
0,
0,
99,
111,
110,
118,
101,
114,
116,
95,
117,
118,
112,
95,
97,
112,
112,
101,
110,
100,
0,
0,
0,
0,
0,
0,
37,
115,
58,
32,
100,
115,
116,
61,
37,
100,
120,
37,
100,
32,
40,
37,
108,
120,
41,
32,
37,
108,
120,
32,
115,
114,
99,
61,
37,
100,
120,
37,
100,
32,
37,
108,
120,
10,
0,
0,
114,
99,
32,
62,
61,
32,
48,
0,
46,
47,
122,
98,
97,
114,
47,
114,
101,
102,
99,
110,
116,
46,
104,
0,
95,
122,
98,
97,
114,
95,
114,
101,
102,
99,
110,
116,
0,
0,
0,
0,
82,
71,
66,
52,
3,
0,
0,
0,
4,
8,
16,
24,
66,
71,
82,
49,
3,
0,
0,
0,
1,
160,
163,
198,
52,
50,
50,
80,
1,
0,
0,
0,
1,
0,
0,
0,
89,
56,
48,
48,
0,
0,
0,
0,
0,
0,
0,
0,
89,
85,
89,
50,
2,
0,
0,
0,
1,
0,
0,
0,
74,
80,
69,
71,
5,
0,
0,
0,
0,
0,
0,
0,
89,
86,
89,
85,
2,
0,
0,
0,
1,
0,
1,
0,
89,
56,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
78,
86,
50,
49,
4,
0,
0,
0,
1,
1,
1,
0,
78,
86,
49,
50,
4,
0,
0,
0,
1,
1,
0,
0,
66,
71,
82,
51,
3,
0,
0,
0,
3,
16,
8,
0,
89,
86,
85,
57,
1,
0,
0,
0,
2,
2,
1,
0,
82,
71,
66,
79,
3,
0,
0,
0,
2,
106,
101,
96,
82,
71,
66,
81,
3,
0,
0,
0,
2,
98,
109,
104,
71,
82,
69,
89,
0,
0,
0,
0,
0,
0,
0,
0,
3,
0,
0,
0,
3,
0,
0,
0,
4,
16,
8,
0,
89,
56,
32,
32,
0,
0,
0,
0,
0,
0,
0,
0,
73,
52,
50,
48,
1,
0,
0,
0,
1,
1,
0,
0,
82,
71,
66,
49,
3,
0,
0,
0,
1,
165,
162,
192,
89,
85,
49,
50,
1,
0,
0,
0,
1,
1,
0,
0,
89,
86,
49,
50,
1,
0,
0,
0,
1,
1,
1,
0,
82,
71,
66,
51,
3,
0,
0,
0,
3,
0,
8,
16,
82,
52,
52,
52,
3,
0,
0,
0,
2,
136,
132,
128,
66,
71,
82,
52,
3,
0,
0,
0,
4,
16,
8,
0,
89,
85,
86,
57,
1,
0,
0,
0,
2,
2,
0,
0,
77,
74,
80,
71,
5,
0,
0,
0,
0,
0,
0,
0,
52,
49,
49,
80,
1,
0,
0,
0,
2,
0,
0,
0,
82,
71,
66,
80,
3,
0,
0,
0,
2,
107,
69,
96,
82,
71,
66,
82,
3,
0,
0,
0,
2,
99,
77,
104,
89,
85,
89,
86,
2,
0,
0,
0,
1,
0,
0,
0,
85,
89,
86,
89,
2,
0,
0,
0,
1,
0,
2,
0,
0,
0,
0,
0,
115,
121,
109,
45,
62,
100,
97,
116,
97,
95,
97,
108,
108,
111,
99,
0,
122,
98,
97,
114,
47,
105,
109,
103,
95,
115,
99,
97,
110,
110,
101,
114,
46,
99,
0,
0,
0,
0,
0,
0,
95,
122,
98,
97,
114,
95,
105,
109,
97,
103,
101,
95,
115,
99,
97,
110,
110,
101,
114,
95,
114,
101,
99,
121,
99,
108,
101,
95,
115,
121,
109,
115,
0,
0,
0,
0,
0,
0,
0,
0,
48,
0,
0,
0,
0,
0,
0,
0,
115,
121,
109,
45,
62,
100,
97,
116,
97,
0,
0,
0,
0,
0,
0,
0,
105,
115,
99,
110,
45,
62,
114,
101,
99,
121,
99,
108,
101,
91,
105,
93,
46,
110,
115,
121,
109,
115,
0,
0,
95,
122,
98,
97,
114,
95,
105,
109,
97,
103,
101,
95,
115,
99,
97,
110,
110,
101,
114,
95,
97,
108,
108,
111,
99,
95,
115,
121,
109,
0,
0,
0,
33,
115,
121,
109,
45,
62,
115,
121,
109,
115,
0,
0,
0,
0,
0,
0,
99,
120,
49,
32,
60,
61,
32,
119,
0,
0,
0,
0,
0,
0,
0,
0,
122,
98,
97,
114,
95,
115,
99,
97,
110,
95,
105,
109,
97,
103,
101,
0,
99,
121,
49,
32,
60,
61,
32,
104,
0,
0,
0,
0,
0,
0,
0,
0,
98,
111,
114,
100,
101,
114,
32,
60,
61,
32,
104,
0,
0,
0,
0,
0,
37,
115,
58,
32,
105,
109,
103,
95,
120,
43,
58,
32,
37,
48,
52,
100,
44,
37,
48,
52,
100,
32,
64,
37,
112,
10,
0,
0,
0,
0,
0,
0,
112,
32,
61,
61,
32,
100,
97,
116,
97,
32,
43,
32,
120,
32,
43,
32,
121,
32,
42,
32,
40,
105,
110,
116,
112,
116,
114,
95,
116,
41,
119,
0,
37,
115,
58,
32,
105,
109,
103,
95,
120,
45,
58,
32,
37,
48,
52,
100,
44,
37,
48,
52,
100,
32,
64,
37,
112,
10,
0,
0,
0,
0,
0,
0,
98,
111,
114,
100,
101,
114,
32,
60,
61,
32,
119,
0,
0,
0,
0,
0,
37,
115,
58,
32,
105,
109,
103,
95,
121,
43,
58,
32,
37,
48,
52,
100,
44,
37,
48,
52,
100,
32,
64,
37,
112,
10,
0,
0,
0,
0,
0,
0,
37,
115,
58,
32,
105,
109,
103,
95,
121,
45,
58,
32,
37,
48,
52,
100,
44,
37,
48,
52,
100,
32,
64,
37,
112,
10,
0,
0,
0,
0,
0,
0,
101,
97,
110,
0,
0,
0,
0,
0,
97,
100,
100,
111,
110,
0,
0,
0,
37,
115,
58,
32,
115,
121,
109,
98,
111,
108,
32,
115,
101,
116,
115,
32,
97,
108,
108,
111,
99,
97,
116,
101,
100,
32,
32,
32,
61,
32,
37,
45,
52,
100,
10,
0,
0,
0,
0,
0,
100,
117,
109,
112,
95,
115,
116,
97,
116,
115,
0,
0,
0,
0,
0,
0,
37,
115,
58,
32,
32,
32,
32,
32,
115,
99,
97,
110,
110,
101,
114,
32,
115,
121,
109,
115,
32,
105,
110,
32,
117,
115,
101,
32,
61,
32,
37,
45,
52,
100,
9,
114,
101,
99,
121,
99,
108,
101,
100,
32,
32,
61,
32,
37,
45,
52,
100,
10,
0,
0,
0,
0,
37,
115,
58,
32,
32,
32,
32,
32,
105,
109,
97,
103,
101,
32,
115,
121,
109,
115,
32,
105,
110,
32,
117,
115,
101,
32,
32,
32,
61,
32,
37,
45,
52,
100,
9,
114,
101,
99,
121,
99,
108,
101,
100,
32,
32,
61,
32,
37,
45,
52,
100,
10,
0,
0,
0,
0,
37,
115,
58,
32,
115,
121,
109,
98,
111,
108,
115,
32,
97,
108,
108,
111,
99,
97,
116,
101,
100,
32,
32,
32,
32,
32,
32,
32,
61,
32,
37,
45,
52,
100,
10,
0,
0,
0,
0,
0,
37,
115,
58,
32,
32,
32,
32,
32,
32,
114,
101,
99,
121,
99,
108,
101,
100,
91,
37,
100,
93,
32,
32,
32,
32,
32,
32,
32,
32,
61,
32,
37,
45,
52,
100,
10,
0,
0,
0,
0,
37,
115,
58,
32,
112,
97,
114,
116,
105,
97,
108,
32,
115,
121,
109,
98,
111,
108,
32,
64,
40,
37,
100,
44,
37,
100,
41,
10,
0,
0,
0,
0,
115,
121,
109,
98,
111,
108,
95,
104,
97,
110,
100,
108,
101,
114,
0,
0,
37,
115,
58,
32,
100,
117,
112,
32,
115,
121,
109,
98,
111,
108,
32,
64,
40,
37,
100,
44,
37,
100,
41,
58,
32,
100,
117,
112,
32,
37,
115,
58,
32,
37,
46,
50,
48,
115,
10,
0,
37,
115,
58,
32,
110,
101,
119,
32,
115,
121,
109,
98,
111,
108,
32,
64,
40,
37,
100,
44,
37,
100,
41,
58,
32,
37,
115,
58,
32,
37,
46,
50,
48,
115,
10,
0,
0,
0,
0,
0,
108,
105,
110,
101,
0,
0,
0,
0,
113,
114,
95,
104,
97,
110,
100,
108,
101,
114,
0,
0,
0,
0,
0,
0,
114,
99,
32,
62,
61,
32,
48,
0,
46,
47,
122,
98,
97,
114,
47,
114,
101,
102,
99,
110,
116,
46,
104,
0,
95,
122,
98,
97,
114,
95,
114,
101,
102,
99,
110,
116,
0,
0,
0,
0,
37,
115,
58,
32,
109,
97,
120,
32,
102,
105,
110,
100,
101,
114,
32,
108,
105,
110,
101,
115,
32,
61,
32,
37,
100,
120,
37,
100,
10,
0,
0,
0,
95,
122,
98,
97,
114,
95,
113,
114,
95,
100,
101,
115,
116,
114,
111,
121,
0,
0,
0,
0,
0,
0,
0,
0,
37,
115,
58,
32,
37,
100,
120,
37,
100,
32,
102,
105,
110,
100,
101,
114,
115,
44,
32,
37,
100,
32,
99,
101,
110,
116,
101,
114,
115,
58,
10,
0,
95,
122,
98,
97,
114,
95,
113,
114,
95,
100,
101,
99,
111,
100,
101,
0,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
2,
2,
1,
2,
2,
4,
1,
2,
4,
4,
2,
4,
4,
4,
2,
4,
6,
5,
2,
4,
6,
6,
2,
5,
8,
8,
4,
5,
8,
8,
4,
5,
8,
11,
4,
8,
10,
11,
4,
9,
12,
16,
4,
9,
16,
16,
6,
10,
12,
18,
6,
10,
17,
16,
6,
11,
16,
19,
6,
13,
18,
21,
7,
14,
21,
25,
8,
16,
20,
25,
8,
17,
23,
25,
9,
17,
23,
34,
9,
18,
25,
30,
10,
20,
27,
32,
12,
21,
29,
35,
12,
23,
34,
37,
12,
25,
34,
40,
13,
26,
35,
42,
14,
28,
38,
45,
15,
29,
40,
48,
16,
31,
43,
51,
17,
33,
45,
54,
18,
35,
48,
57,
19,
37,
51,
60,
19,
38,
53,
63,
20,
40,
56,
66,
21,
43,
59,
70,
22,
45,
62,
74,
24,
47,
65,
77,
25,
49,
68,
81,
7,
10,
13,
17,
10,
16,
22,
28,
26,
26,
26,
22,
24,
22,
22,
26,
24,
18,
22,
15,
26,
18,
22,
24,
30,
24,
20,
24,
18,
16,
24,
28,
28,
28,
28,
30,
24,
20,
18,
18,
26,
24,
28,
24,
30,
26,
28,
28,
26,
28,
30,
30,
22,
20,
24,
20,
18,
26,
16,
20,
30,
28,
24,
22,
26,
28,
26,
30,
28,
30,
30,
0,
0,
4,
19,
55,
15,
28,
37,
12,
51,
39,
59,
62,
10,
24,
22,
41,
31,
44,
7,
65,
47,
33,
67,
67,
48,
32,
67,
67,
67,
67,
67,
67,
67,
67,
67,
67,
67,
67,
67,
67,
10,
9,
8,
8,
12,
11,
16,
10,
14,
13,
16,
12,
0,
0,
0,
0,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
32,
36,
37,
42,
43,
45,
46,
47,
58,
0,
0,
0,
16,
18,
20,
22,
24,
26,
28,
20,
22,
24,
24,
26,
28,
28,
22,
24,
24,
26,
26,
28,
28,
24,
24,
26,
26,
26,
28,
28,
24,
26,
26,
26,
28,
28,
0,
0,
0,
0,
0,
0,
65,
0,
4,
1,
1,
0,
0,
1,
64,
16,
4,
0,
0,
16,
0,
0,
16,
1,
17,
0,
16,
0,
16,
0,
0,
17,
1,
0,
0,
16,
0,
0,
132,
0,
66,
0,
4,
0,
64,
0,
128,
16,
2,
0,
0,
16,
0,
0,
0,
108,
0,
0,
0,
68,
0,
0,
0,
56,
0,
0,
0,
16,
0,
0,
0,
0,
1,
1,
4,
0,
3,
1,
2,
0,
2,
1,
0,
2,
1,
2,
148,
124,
0,
0,
188,
133,
0,
0,
153,
154,
0,
0,
211,
164,
0,
0,
246,
187,
0,
0,
98,
199,
0,
0,
71,
216,
0,
0,
13,
230,
0,
0,
40,
249,
0,
0,
120,
11,
1,
0,
93,
20,
1,
0,
23,
42,
1,
0,
50,
53,
1,
0,
166,
73,
1,
0,
131,
86,
1,
0,
201,
104,
1,
0,
236,
119,
1,
0,
196,
142,
1,
0,
225,
145,
1,
0,
171,
175,
1,
0,
142,
176,
1,
0,
26,
204,
1,
0,
63,
211,
1,
0,
117,
237,
1,
0,
80,
242,
1,
0,
213,
9,
2,
0,
240,
22,
2,
0,
186,
40,
2,
0,
159,
55,
2,
0,
11,
75,
2,
0,
46,
84,
2,
0,
100,
106,
2,
0,
65,
117,
2,
0,
105,
140,
2,
0,
85,
84,
70,
45,
56,
0,
0,
0,
73,
83,
79,
56,
56,
53,
57,
45,
49,
0,
0,
0,
0,
0,
0,
0,
83,
74,
73,
83,
0,
0,
0,
0,
73,
83,
79,
56,
56,
53,
57,
45,
37,
105,
0,
0,
0,
0,
0,
0,
67,
80,
52,
51,
55,
0,
0,
0,
110,
101,
120,
116,
32,
62,
32,
115,
121,
109,
115,
45,
62,
100,
97,
116,
97,
108,
101,
110,
0,
0,
0,
0,
122,
98,
97,
114,
47,
113,
114,
99,
111,
100,
101,
47,
113,
114,
100,
101,
99,
116,
120,
116,
46,
99,
0,
0,
113,
114,
95,
99,
111,
100,
101,
95,
100,
97,
116,
97,
95,
108,
105,
115,
116,
95,
101,
120,
116,
114,
97,
99,
116,
95,
116,
101,
120,
116,
0,
0,
114,
99,
32,
62,
61,
32,
48,
0,
46,
47,
122,
98,
97,
114,
47,
114,
101,
102,
99,
110,
116,
46,
104,
0,
95,
122,
98,
97,
114,
95,
114,
101,
102,
99,
110,
116,
0,
0,
0,
0,
87,
65,
82,
78,
73,
78,
71,
58,
32,
37,
115,
58,
37,
100,
58,
32,
37,
115,
58,
32,
65,
115,
115,
101,
114,
116,
105,
111,
110,
32,
34,
37,
115,
34,
32,
102,
97,
105,
108,
101,
100,
46,
10,
9,
108,
111,
99,
107,
61,
37,
100,
32,
114,
101,
113,
61,
37,
100,
10,
0,
0,
0,
0,
0,
46,
47,
122,
98,
97,
114,
47,
100,
101,
99,
111,
100,
101,
114,
46,
104,
0,
0,
0,
0,
0,
0,
0,
0,
114,
101,
108,
101,
97,
115,
101,
95,
108,
111,
99,
107,
0,
0,
0,
0,
100,
99,
111,
100,
101,
45,
62,
108,
111,
99,
107,
32,
61,
61,
32,
114,
101,
113,
0,
0,
0,
0,
0,
0,
255,
0,
1,
4,
2,
8,
5,
10,
3,
14,
9,
7,
6,
13,
11,
12,
1,
2,
4,
8,
3,
6,
12,
11,
5,
10,
7,
14,
15,
13,
9,
1,
2,
4,
8,
3,
6,
12,
11,
5,
10,
7,
14,
15,
13,
9,
1,
0,
11,
2,
8,
16,
10,
4,
8,
9,
117,
116,
102,
56,
0,
0,
200,
119,
99,
104,
97,
114,
116,
0,
0,
198,
117,
99,
115,
50,
0,
117,
99,
115,
50,
98,
101,
0,
0,
196,
117,
99,
115,
50,
108,
101,
0,
0,
197,
117,
116,
102,
49,
54,
0,
117,
116,
102,
49,
54,
98,
101,
0,
0,
194,
117,
116,
102,
49,
54,
108,
101,
0,
0,
193,
117,
99,
115,
52,
0,
117,
99,
115,
52,
98,
101,
0,
117,
116,
102,
51,
50,
0,
117,
116,
102,
51,
50,
98,
101,
0,
0,
192,
117,
99,
115,
52,
108,
101,
0,
117,
116,
102,
51,
50,
108,
101,
0,
0,
195,
97,
115,
99,
105,
105,
0,
117,
115,
97,
115,
99,
105,
105,
0,
105,
115,
111,
54,
52,
54,
0,
105,
115,
111,
54,
52,
54,
117,
115,
0,
0,
199,
101,
117,
99,
106,
112,
0,
0,
208,
115,
104,
105,
102,
116,
106,
105,
115,
0,
115,
106,
105,
115,
0,
0,
209,
103,
98,
49,
56,
48,
51,
48,
0,
0,
216,
103,
98,
107,
0,
0,
217,
103,
98,
50,
51,
49,
50,
0,
0,
218,
98,
105,
103,
53,
0,
98,
105,
103,
102,
105,
118,
101,
0,
99,
112,
57,
53,
48,
0,
98,
105,
103,
53,
104,
107,
115,
99,
115,
0,
0,
224,
101,
117,
99,
107,
114,
0,
107,
115,
99,
53,
54,
48,
49,
0,
107,
115,
120,
49,
48,
48,
49,
0,
99,
112,
57,
52,
57,
0,
0,
232,
105,
115,
111,
56,
56,
53,
57,
49,
0,
108,
97,
116,
105,
110,
49,
0,
0,
128,
105,
115,
111,
56,
56,
53,
57,
50,
0,
0,
32,
0,
84,
0,
137,
18,
0,
32,
1,
6,
0,
0,
152,
65,
134,
26,
127,
0,
48,
72,
32,
0,
88,
32,
201,
18,
0,
36,
17,
198,
35,
0,
156,
81,
198,
26,
128,
80,
66,
136,
32,
90,
0,
0,
192,
4,
0,
16,
113,
1,
0,
29,
0,
112,
2,
0,
41,
0,
0,
192,
7,
33,
48,
1,
5,
0,
0,
88,
1,
0,
0,
94,
208,
1,
128,
29,
0,
0,
128,
6,
0,
91,
0,
0,
0,
5,
0,
20,
129,
1,
0,
30,
0,
128,
2,
0,
42,
0,
0,
0,
8,
34,
52,
17,
5,
0,
0,
92,
1,
0,
0,
95,
212,
1,
192,
29,
0,
0,
144,
70,
36,
105,
115,
111,
56,
56,
53,
57,
51,
0,
0,
32,
0,
212,
0,
9,
0,
0,
4,
48,
3,
0,
0,
244,
64,
70,
11,
63,
0,
16,
64,
32,
0,
216,
0,
0,
0,
0,
0,
64,
3,
0,
0,
248,
80,
134,
11,
64,
0,
16,
128,
32,
0,
0,
0,
64,
0,
0,
108,
144,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
0,
188,
0,
0,
0,
43,
0,
0,
0,
0,
0,
200,
33,
6,
0,
0,
0,
0,
64,
0,
0,
112,
160,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
0,
192,
0,
0,
0,
44,
0,
0,
0,
0,
0,
204,
49,
70,
36,
105,
115,
111,
56,
56,
53,
57,
52,
0,
0,
32,
0,
84,
48,
4,
23,
0,
220,
96,
4,
0,
0,
152,
49,
66,
12,
108,
0,
48,
8,
0,
0,
88,
32,
73,
23,
0,
224,
112,
196,
35,
0,
156,
65,
130,
12,
109,
72,
65,
200,
20,
17,
0,
0,
0,
0,
0,
0,
0,
192,
14,
29,
0,
112,
2,
0,
37,
0,
0,
64,
14,
33,
56,
65,
69,
16,
0,
0,
0,
0,
0,
0,
224,
1,
0,
0,
0,
184,
1,
7,
0,
18,
0,
0,
0,
0,
0,
0,
0,
0,
15,
30,
0,
128,
2,
0,
38,
0,
0,
128,
14,
34,
60,
81,
133,
16,
0,
0,
0,
0,
0,
0,
228,
1,
0,
0,
0,
188,
17,
71,
36,
105,
115,
111,
56,
56,
53,
57,
53,
0,
0,
32,
0,
136,
51,
14,
57,
229,
152,
115,
14,
58,
233,
168,
179,
14,
59,
237,
0,
224,
206,
59,
240,
196,
35,
207,
60,
244,
212,
99,
207,
61,
248,
228,
163,
207,
62,
252,
244,
227,
207,
63,
0,
5,
36,
208,
64,
4,
21,
100,
208,
65,
8,
37,
164,
208,
66,
12,
53,
228,
208,
67,
16,
69,
36,
209,
68,
20,
85,
100,
209,
69,
24,
101,
164,
209,
70,
28,
117,
228,
209,
71,
32,
133,
36,
210,
72,
36,
149,
100,
210,
73,
40,
165,
164,
210,
74,
44,
181,
228,
210,
75,
53,
194,
20,
147,
76,
51,
209,
84,
147,
77,
55,
225,
148,
147,
78,
59,
13,
192,
83,
79,
105,
115,
111,
56,
56,
53,
57,
54,
0,
0,
32,
0,
4,
16,
64,
0,
0,
4,
16,
64,
0,
1,
4,
16,
64,
0,
115,
1,
16,
64,
0,
1,
4,
16,
64,
0,
1,
4,
16,
64,
0,
1,
4,
16,
0,
93,
1,
4,
16,
64,
93,
1,
216,
117,
23,
94,
121,
233,
181,
23,
95,
125,
249,
245,
23,
96,
129,
9,
54,
24,
97,
133,
25,
118,
24,
98,
137,
41,
182,
24,
99,
141,
57,
246,
88,
0,
1,
4,
16,
64,
0,
144,
69,
38,
217,
100,
148,
85,
102,
217,
101,
152,
101,
166,
217,
102,
156,
117,
230,
217,
103,
160,
133,
38,
90,
0,
1,
4,
16,
64,
0,
1,
4,
16,
64,
0,
1,
4,
16,
64,
0,
105,
115,
111,
56,
56,
53,
57,
55,
0,
0,
32,
0,
144,
88,
34,
0,
51,
210,
8,
0,
0,
0,
0,
160,
9,
0,
0,
0,
16,
128,
136,
0,
0,
0,
0,
0,
155,
112,
210,
9,
0,
158,
124,
2,
10,
0,
161,
0,
32,
202,
40,
164,
148,
98,
202,
41,
168,
164,
162,
202,
42,
172,
180,
226,
202,
43,
176,
196,
34,
203,
44,
180,
212,
18,
128,
45,
183,
224,
146,
139,
46,
187,
240,
210,
139,
47,
191,
0,
19,
140,
48,
195,
16,
83,
140,
49,
199,
32,
147,
140,
50,
203,
48,
211,
140,
51,
207,
64,
19,
141,
52,
211,
80,
83,
141,
53,
215,
96,
147,
141,
54,
219,
112,
211,
141,
55,
223,
128,
19,
78,
0,
105,
115,
111,
56,
56,
53,
57,
56,
0,
0,
32,
0,
4,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
192,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
240,
0,
0,
0,
0,
0,
64,
0,
1,
4,
16,
64,
0,
1,
4,
16,
64,
0,
1,
4,
16,
64,
0,
1,
4,
16,
64,
0,
1,
4,
16,
64,
0,
1,
4,
16,
64,
0,
1,
4,
16,
64,
0,
1,
4,
16,
192,
136,
83,
81,
85,
149,
85,
87,
97,
149,
149,
86,
91,
113,
213,
149,
87,
95,
129,
21,
150,
88,
99,
145,
85,
150,
89,
103,
161,
149,
150,
90,
107,
177,
213,
86,
0,
1,
120,
248,
97,
0,
105,
115,
111,
56,
56,
53,
57,
57,
0,
0,
80,
45,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
244,
64,
6,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
46,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
248,
80,
6,
0,
105,
115,
111,
56,
56,
53,
57,
49,
48,
0,
0,
32,
0,
84,
48,
66,
12,
57,
220,
16,
4,
0,
70,
132,
96,
6,
27,
131,
0,
0,
135,
20,
0,
88,
64,
130,
12,
58,
224,
32,
4,
0,
71,
136,
112,
70,
27,
132,
136,
24,
199,
20,
17,
0,
0,
0,
0,
0,
0,
0,
192,
14,
29,
0,
112,
2,
0,
37,
0,
0,
0,
0,
0,
56,
65,
5,
0,
0,
0,
0,
128,
27,
0,
224,
1,
0,
0,
0,
0,
0,
0,
0,
18,
0,
0,
0,
0,
0,
0,
0,
0,
15,
30,
0,
128,
2,
0,
38,
0,
0,
0,
0,
0,
60,
81,
5,
0,
0,
0,
0,
192,
27,
0,
228,
1,
0,
0,
0,
0,
0,
192,
16,
105,
115,
111,
56,
56,
53,
57,
49,
49,
0,
116,
105,
115,
54,
50,
48,
0,
0,
32,
0,
188,
6,
91,
108,
178,
205,
70,
91,
109,
182,
221,
134,
91,
110,
186,
237,
198,
91,
111,
190,
253,
6,
92,
112,
194,
13,
71,
92,
113,
198,
29,
135,
92,
114,
202,
45,
199,
92,
115,
206,
61,
7,
93,
116,
210,
77,
71,
93,
117,
214,
93,
135,
93,
118,
218,
109,
199,
93,
119,
222,
125,
7,
94,
120,
226,
141,
71,
94,
121,
230,
157,
135,
94,
0,
1,
4,
16,
64,
122,
234,
173,
199,
94,
123,
238,
189,
7,
95,
124,
242,
205,
71,
95,
125,
246,
221,
135,
95,
126,
250,
237,
199,
95,
127,
254,
253,
7,
96,
128,
2,
14,
72,
96,
129,
1,
4,
16,
64,
0,
105,
115,
111,
56,
56,
53,
57,
49,
51,
0,
0,
32,
0,
160,
8,
0,
0,
0,
164,
8,
0,
0,
13,
0,
192,
5,
0,
0,
0,
0,
192,
2,
0,
0,
0,
0,
0,
39,
2,
0,
0,
0,
16,
0,
208,
5,
0,
0,
0,
0,
128,
3,
21,
236,
16,
193,
5,
0,
0,
112,
194,
8,
29,
0,
240,
71,
9,
49,
4,
145,
131,
17,
102,
48,
225,
4,
0,
84,
0,
0,
0,
0,
120,
40,
1,
6,
28,
0,
4,
50,
8,
0,
22,
240,
32,
1,
6,
0,
0,
128,
2,
9,
30,
0,
0,
136,
9,
50,
8,
161,
195,
17,
103,
52,
241,
4,
0,
85,
0,
0,
0,
0,
121,
44,
17,
70,
28,
0,
8,
66,
72,
137,
105,
115,
111,
56,
56,
53,
57,
49,
52,
0,
0,
32,
0,
24,
120,
32,
0,
27,
112,
128,
32,
0,
20,
2,
96,
97,
130,
26,
2,
0,
128,
31,
10,
46,
248,
2,
12,
12,
54,
8,
128,
131,
21,
62,
120,
33,
132,
27,
98,
152,
97,
132,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
122,
0,
0,
0,
0,
0,
0,
0,
128,
132,
0,
0,
0,
0,
0,
0,
0,
192,
7,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
123,
0,
0,
0,
0,
0,
0,
0,
192,
132,
0,
0,
0,
0,
0,
0,
0,
208,
7,
0,
105,
115,
111,
56,
56,
53,
57,
49,
53,
0,
108,
97,
116,
105,
110,
57,
0,
0,
36,
51,
2,
96,
6,
0,
103,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
131,
0,
0,
0,
0,
132,
0,
0,
0,
0,
88,
100,
225,
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,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
105,
115,
111,
56,
56,
53,
57,
49,
54,
0,
0,
32,
0,
84,
96,
129,
18,
51,
166,
104,
6,
0,
103,
0,
160,
8,
0,
127,
0,
0,
72,
32,
0,
0,
208,
193,
18,
131,
160,
8,
0,
0,
132,
120,
176,
8,
0,
88,
100,
225,
135,
32,
0,
0,
0,
192,
4,
0,
92,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
33
],
'i8',
ALLOC_NONE,
Runtime.GLOBAL_BASE
);
/* memory initializer */ allocate(
[
48,
1,
0,
0,
0,
88,
1,
0,
24,
118,
0,
0,
0,
0,
0,
156,
192,
8,
0,
0,
0,
0,
0,
5,
0,
96,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
34,
52,
1,
0,
0,
0,
92,
1,
64,
24,
119,
0,
0,
0,
0,
0,
160,
208,
8,
0,
99,
112,
49,
50,
53,
48,
0,
119,
105,
110,
100,
111,
119,
115,
49,
50,
53,
48,
0,
0,
0,
51,
6,
96,
98,
0,
41,
182,
168,
226,
138,
1,
184,
104,
198,
139,
96,
168,
49,
200,
31,
1,
144,
88,
226,
137,
40,
178,
8,
98,
136,
1,
216,
120,
6,
140,
97,
172,
65,
8,
32,
0,
60,
2,
137,
18,
0,
84,
0,
0,
0,
0,
0,
64,
6,
0,
0,
0,
0,
64,
32,
0,
0,
32,
201,
18,
0,
0,
0,
0,
0,
0,
88,
80,
6,
0,
72,
80,
146,
132,
32,
90,
0,
0,
192,
4,
0,
16,
113,
1,
0,
29,
0,
112,
2,
0,
41,
0,
0,
192,
7,
33,
48,
1,
5,
0,
0,
88,
1,
0,
0,
94,
208,
1,
128,
29,
0,
0,
128,
6,
0,
91,
0,
0,
0,
5,
0,
20,
129,
1,
0,
30,
0,
128,
2,
0,
42,
0,
0,
0,
8,
34,
52,
17,
5,
0,
0,
92,
1,
0,
0,
95,
212,
1,
192,
29,
0,
0,
144,
70,
36,
99,
112,
49,
50,
53,
49,
0,
119,
105,
110,
100,
111,
119,
115,
49,
50,
53,
49,
0,
0,
0,
227,
144,
99,
162,
76,
41,
182,
168,
226,
138,
51,
186,
168,
206,
139,
235,
180,
195,
206,
59,
49,
145,
88,
226,
137,
40,
178,
8,
98,
136,
1,
216,
136,
19,
140,
57,
237,
164,
83,
79,
0,
184,
195,
83,
58,
0,
248,
4,
0,
0,
226,
0,
80,
14,
0,
0,
0,
0,
0,
58,
0,
0,
112,
78,
77,
63,
1,
0,
0,
0,
48,
213,
56,
19,
0,
55,
153,
67,
147,
77,
240,
196,
35,
207,
60,
244,
212,
99,
207,
61,
248,
228,
163,
207,
62,
252,
244,
227,
207,
63,
0,
5,
36,
208,
64,
4,
21,
100,
208,
65,
8,
37,
164,
208,
66,
12,
53,
228,
208,
67,
16,
69,
36,
209,
68,
20,
85,
100,
209,
69,
24,
101,
164,
209,
70,
28,
117,
228,
209,
71,
32,
133,
36,
210,
72,
36,
149,
100,
210,
73,
40,
165,
164,
210,
74,
44,
181,
228,
210,
75,
99,
112,
49,
50,
53,
50,
0,
119,
105,
110,
100,
111,
119,
115,
49,
50,
53,
50,
0,
0,
0,
51,
6,
96,
98,
33,
41,
182,
168,
226,
138,
142,
184,
104,
198,
139,
88,
4,
48,
72,
0,
1,
144,
88,
226,
137,
40,
178,
8,
98,
136,
147,
216,
120,
6,
140,
89,
4,
64,
136,
31,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
99,
112,
49,
50,
53,
51,
0,
119,
105,
110,
100,
111,
119,
115,
49,
50,
53,
51,
0,
0,
0,
51,
6,
96,
98,
33,
41,
182,
168,
226,
138,
1,
184,
24,
192,
139,
1,
4,
16,
64,
0,
1,
144,
88,
226,
137,
40,
178,
8,
98,
136,
1,
216,
24,
0,
140,
1,
4,
16,
64,
0,
0,
112,
210,
9,
0,
0,
0,
0,
0,
0,
0,
0,
16,
0,
0,
0,
0,
0,
128,
136,
0,
0,
0,
0,
0,
155,
0,
0,
0,
0,
158,
124,
2,
10,
0,
161,
0,
32,
202,
40,
164,
148,
98,
202,
41,
168,
164,
162,
202,
42,
172,
180,
226,
202,
43,
176,
196,
34,
203,
44,
180,
212,
18,
128,
45,
183,
224,
146,
139,
46,
187,
240,
210,
139,
47,
191,
0,
19,
140,
48,
195,
16,
83,
140,
49,
199,
32,
147,
140,
50,
203,
48,
211,
140,
51,
207,
64,
19,
141,
52,
211,
80,
83,
141,
53,
215,
96,
147,
141,
54,
219,
112,
211,
141,
55,
223,
128,
19,
78,
0,
99,
112,
49,
50,
53,
52,
0,
119,
105,
110,
100,
111,
119,
115,
49,
50,
53,
52,
0,
0,
0,
51,
6,
96,
98,
33,
41,
182,
168,
226,
138,
142,
184,
104,
198,
139,
88,
4,
16,
64,
0,
1,
144,
88,
226,
137,
40,
178,
8,
98,
136,
147,
216,
120,
6,
140,
89,
4,
16,
128,
31,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
45,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
244,
64,
6,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
46,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
248,
80,
6,
0,
99,
112,
49,
50,
53,
53,
0,
119,
105,
110,
100,
111,
119,
115,
49,
50,
53,
53,
0,
0,
0,
51,
6,
96,
98,
33,
41,
182,
168,
226,
138,
142,
184,
24,
192,
139,
1,
4,
16,
64,
0,
1,
144,
88,
226,
137,
40,
178,
8,
98,
136,
147,
216,
24,
0,
140,
1,
4,
16,
64,
0,
0,
0,
0,
0,
0,
49,
2,
0,
0,
0,
0,
0,
192,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
240,
0,
0,
0,
0,
0,
0,
0,
64,
5,
37,
212,
80,
68,
21,
101,
212,
81,
72,
37,
21,
128,
82,
75,
49,
213,
148,
83,
79,
65,
21,
149,
84,
110,
189,
5,
87,
92,
114,
5,
16,
64,
0,
1,
4,
16,
64,
0,
83,
81,
85,
149,
85,
87,
97,
149,
149,
86,
91,
113,
213,
149,
87,
95,
129,
21,
150,
88,
99,
145,
85,
150,
89,
103,
161,
149,
150,
90,
107,
177,
213,
86,
0,
1,
120,
248,
97,
0,
99,
112,
49,
50,
53,
54,
0,
119,
105,
110,
100,
111,
119,
115,
49,
50,
53,
54,
0,
0,
0,
51,
146,
102,
98,
33,
41,
182,
168,
226,
138,
142,
184,
56,
218,
139,
88,
148,
134,
154,
105,
170,
145,
88,
226,
137,
40,
178,
8,
98,
136,
169,
217,
120,
26,
140,
89,
112,
216,
225,
106,
0,
204,
5,
0,
0,
0,
0,
0,
0,
0,
0,
0,
192,
26,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
64,
23,
0,
0,
0,
0,
64,
93,
173,
217,
117,
23,
94,
121,
233,
181,
23,
95,
125,
249,
245,
23,
96,
129,
9,
54,
24,
97,
133,
25,
118,
24,
98,
137,
41,
182,
24,
0,
140,
53,
230,
216,
99,
144,
69,
38,
217,
100,
0,
80,
6,
64,
101,
150,
93,
134,
25,
0,
0,
0,
0,
0,
0,
153,
105,
6,
0,
0,
155,
113,
214,
153,
103,
0,
124,
6,
26,
0,
161,
1,
32,
26,
0,
0,
120,
248,
161,
107,
99,
112,
49,
50,
53,
55,
0,
119,
105,
110,
100,
111,
119,
115,
49,
50,
53,
55,
0,
0,
0,
51,
6,
96,
98,
0,
41,
182,
168,
226,
138,
1,
184,
24,
192,
139,
1,
16,
240,
136,
2,
1,
144,
88,
226,
137,
40,
178,
8,
98,
136,
1,
216,
24,
0,
140,
1,
24,
32,
73,
0,
0,
4,
0,
0,
0,
0,
4,
0,
0,
0,
13,
0,
192,
5,
0,
0,
0,
0,
192,
2,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
16,
0,
208,
5,
0,
0,
0,
0,
128,
3,
21,
236,
16,
193,
5,
0,
0,
112,
194,
8,
29,
0,
240,
71,
9,
49,
4,
145,
131,
17,
102,
48,
225,
4,
0,
84,
0,
0,
0,
0,
120,
40,
1,
6,
28,
0,
4,
50,
8,
0,
22,
240,
32,
1,
6,
0,
0,
128,
2,
9,
30,
0,
0,
136,
9,
50,
8,
161,
195,
17,
103,
52,
241,
4,
0,
85,
0,
0,
0,
0,
121,
44,
17,
70,
28,
0,
8,
66,
72,
36,
99,
112,
49,
50,
53,
56,
0,
119,
105,
110,
100,
111,
119,
115,
49,
50,
53,
56,
0,
0,
0,
51,
6,
96,
98,
33,
41,
182,
168,
226,
138,
142,
184,
24,
192,
139,
88,
4,
16,
64,
0,
1,
144,
88,
226,
137,
40,
178,
8,
98,
136,
147,
216,
24,
0,
140,
89,
4,
16,
128,
31,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
192,
4,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
149,
0,
0,
0,
0,
33,
0,
128,
9,
0,
0,
24,
2,
0,
0,
0,
0,
0,
0,
0,
0,
32,
114,
9,
0,
0,
0,
0,
0,
5,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
150,
0,
0,
0,
0,
34,
0,
144,
9,
0,
0,
28,
2,
0,
0,
0,
0,
0,
0,
0,
0,
36,
34,
35,
0,
107,
111,
105,
56,
114,
0,
0,
0,
62,
254,
8,
100,
144,
66,
14,
73,
100,
145,
70,
30,
137,
164,
153,
103,
162,
153,
166,
154,
107,
178,
217,
38,
143,
110,
222,
136,
99,
142,
58,
238,
40,
64,
143,
7,
32,
144,
192,
3,
73,
42,
185,
36,
76,
76,
54,
233,
228,
147,
80,
70,
41,
229,
148,
84,
86,
105,
229,
149,
88,
102,
169,
165,
56,
91,
114,
217,
165,
151,
95,
130,
25,
166,
152,
99,
146,
89,
102,
1,
46,
65,
20,
145,
73,
20,
85,
68,
210,
68,
37,
97,
148,
145,
70,
27,
113,
212,
145,
71,
31,
189,
4,
82,
72,
34,
141,
100,
145,
68,
44,
173,
116,
17,
74,
45,
165,
116,
146,
74,
14,
193,
19,
143,
65,
244,
212,
67,
208,
60,
5,
225,
147,
143,
62,
251,
240,
211,
143,
63,
255,
60,
4,
80,
64,
2,
13,
100,
143,
60,
12,
45,
116,
15,
66,
13,
37,
116,
144,
66,
107,
111,
105,
56,
117,
0,
0,
0,
62,
254,
8,
100,
144,
66,
14,
73,
100,
145,
70,
30,
137,
164,
153,
103,
162,
153,
166,
154,
107,
178,
217,
38,
143,
110,
222,
136,
99,
142,
58,
238,
40,
64,
143,
7,
32,
144,
192,
3,
73,
42,
185,
36,
76,
51,
53,
89,
147,
77,
80,
70,
41,
229,
148,
84,
254,
100,
229,
149,
88,
102,
169,
165,
56,
229,
112,
121,
14,
58,
95,
130,
25,
166,
152,
99,
250,
84,
102,
1,
46,
65,
20,
145,
73,
20,
85,
68,
210,
68,
37,
97,
148,
145,
70,
27,
113,
212,
145,
71,
31,
189,
4,
82,
72,
34,
141,
100,
145,
68,
44,
173,
116,
17,
74,
45,
165,
116,
146,
74,
14,
193,
19,
143,
65,
244,
212,
67,
208,
60,
5,
225,
147,
143,
62,
251,
240,
211,
143,
63,
255,
60,
4,
80,
64,
2,
13,
100,
143,
60,
12,
45,
116,
15,
66,
13,
37,
116,
144,
66,
0,
0,
0,
0,
0,
0,
0,
0,
0,
48,
1,
48,
2,
48,
12,
255,
14,
255,
251,
48,
26,
255,
27,
255,
31,
255,
1,
255,
155,
48,
156,
48,
180,
0,
64,
255,
168,
0,
62,
255,
227,
255,
63,
255,
253,
48,
254,
48,
157,
48,
158,
48,
3,
48,
221,
78,
5,
48,
6,
48,
7,
48,
252,
48,
21,
32,
16,
32,
15,
255,
92,
0,
28,
48,
22,
32,
92,
255,
38,
32,
37,
32,
24,
32,
25,
32,
28,
32,
29,
32,
8,
255,
9,
255,
20,
48,
21,
48,
59,
255,
61,
255,
91,
255,
93,
255,
8,
48,
9,
48,
10,
48,
11,
48,
12,
48,
13,
48,
14,
48,
15,
48,
16,
48,
17,
48,
11,
255,
18,
34,
177,
0,
215,
0,
247,
0,
29,
255,
96,
34,
28,
255,
30,
255,
102,
34,
103,
34,
30,
34,
52,
34,
66,
38,
64,
38,
176,
0,
50,
32,
51,
32,
3,
33,
229,
255,
4,
255,
162,
0,
163,
0,
5,
255,
3,
255,
6,
255,
10,
255,
32,
255,
167,
0,
6,
38,
5,
38,
203,
37,
207,
37,
206,
37,
199,
37,
198,
37,
161,
37,
160,
37,
179,
37,
178,
37,
189,
37,
188,
37,
59,
32,
18,
48,
146,
33,
144,
33,
145,
33,
147,
33,
19,
48,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
8,
34,
11,
34,
134,
34,
135,
34,
130,
34,
131,
34,
42,
34,
41,
34,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
39,
34,
40,
34,
172,
0,
210,
33,
212,
33,
0,
34,
3,
34,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
32,
34,
165,
34,
18,
35,
2,
34,
7,
34,
97,
34,
82,
34,
106,
34,
107,
34,
26,
34,
61,
34,
29,
34,
53,
34,
43,
34,
44,
34,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
43,
33,
48,
32,
111,
38,
109,
38,
106,
38,
32,
32,
33,
32,
182,
0,
0,
0,
0,
0,
0,
0,
0,
0,
239,
37,
0,
0,
0,
0,
0,
0,
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,
255,
17,
255,
18,
255,
19,
255,
20,
255,
21,
255,
22,
255,
23,
255,
24,
255,
25,
255,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
33,
255,
34,
255,
35,
255,
36,
255,
37,
255,
38,
255,
39,
255,
40,
255,
41,
255,
42,
255,
43,
255,
44,
255,
45,
255,
46,
255,
47,
255,
48,
255,
49,
255,
50,
255,
51,
255,
52,
255,
53,
255,
54,
255,
55,
255,
56,
255,
57,
255,
58,
255,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
65,
255,
66,
255,
67,
255,
68,
255,
69,
255,
70,
255,
71,
255,
72,
255,
73,
255,
74,
255,
75,
255,
76,
255,
77,
255,
78,
255,
79,
255,
80,
255,
81,
255,
82,
255,
83,
255,
84,
255,
85,
255,
86,
255,
87,
255,
88,
255,
89,
255,
90,
255,
0,
0,
0,
0,
0,
0,
0,
0,
65,
48,
66,
48,
67,
48,
68,
48,
69,
48,
70,
48,
71,
48,
72,
48,
73,
48,
74,
48,
75,
48,
76,
48,
77,
48,
78,
48,
79,
48,
80,
48,
81,
48,
82,
48,
83,
48,
84,
48,
85,
48,
86,
48,
87,
48,
88,
48,
89,
48,
90,
48,
91,
48,
92,
48,
93,
48,
94,
48,
95,
48,
96,
48,
97,
48,
98,
48,
99,
48,
100,
48,
101,
48,
102,
48,
103,
48,
104,
48,
105,
48,
106,
48,
107,
48,
108,
48,
109,
48,
110,
48,
111,
48,
112,
48,
113,
48,
114,
48,
115,
48,
116,
48,
117,
48,
118,
48,
119,
48,
120,
48,
121,
48,
122,
48,
123,
48,
124,
48,
125,
48,
126,
48,
127,
48,
128,
48,
129,
48,
130,
48,
131,
48,
132,
48,
133,
48,
134,
48,
135,
48,
136,
48,
137,
48,
138,
48,
139,
48,
140,
48,
141,
48,
142,
48,
143,
48,
144,
48,
145,
48,
146,
48,
147,
48,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
161,
48,
162,
48,
163,
48,
164,
48,
165,
48,
166,
48,
167,
48,
168,
48,
169,
48,
170,
48,
171,
48,
172,
48,
173,
48,
174,
48,
175,
48,
176,
48,
177,
48,
178,
48,
179,
48,
180,
48,
181,
48,
182,
48,
183,
48,
184,
48,
185,
48,
186,
48,
187,
48,
188,
48,
189,
48,
190,
48,
191,
48,
192,
48,
193,
48,
194,
48,
195,
48,
196,
48,
197,
48,
198,
48,
199,
48,
200,
48,
201,
48,
202,
48,
203,
48,
204,
48,
205,
48,
206,
48,
207,
48,
208,
48,
209,
48,
210,
48,
211,
48,
212,
48,
213,
48,
214,
48,
215,
48,
216,
48,
217,
48,
218,
48,
219,
48,
220,
48,
221,
48,
222,
48,
223,
48,
224,
48,
225,
48,
226,
48,
227,
48,
228,
48,
229,
48,
230,
48,
231,
48,
232,
48,
233,
48,
234,
48,
235,
48,
236,
48,
237,
48,
238,
48,
239,
48,
240,
48,
241,
48,
242,
48,
243,
48,
244,
48,
245,
48,
246,
48,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
145,
3,
146,
3,
147,
3,
148,
3,
149,
3,
150,
3,
151,
3,
152,
3,
153,
3,
154,
3,
155,
3,
156,
3,
157,
3,
158,
3,
159,
3,
160,
3,
161,
3,
163,
3,
164,
3,
165,
3,
166,
3,
167,
3,
168,
3,
169,
3,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
177,
3,
178,
3,
179,
3,
180,
3,
181,
3,
182,
3,
183,
3,
184,
3,
185,
3,
186,
3,
187,
3,
188,
3,
189,
3,
190,
3,
191,
3,
192,
3,
193,
3,
195,
3,
196,
3,
197,
3,
198,
3,
199,
3,
200,
3,
201,
3,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
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,
4,
17,
4,
18,
4,
19,
4,
20,
4,
21,
4,
1,
4,
22,
4,
23,
4,
24,
4,
25,
4,
26,
4,
27,
4,
28,
4,
29,
4,
30,
4,
31,
4,
32,
4,
33,
4,
34,
4,
35,
4,
36,
4,
37,
4,
38,
4,
39,
4,
40,
4,
41,
4,
42,
4,
43,
4,
44,
4,
45,
4,
46,
4,
47,
4,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
48,
4,
49,
4,
50,
4,
51,
4,
52,
4,
53,
4,
81,
4,
54,
4,
55,
4,
56,
4,
57,
4,
58,
4,
59,
4,
60,
4,
61,
4,
62,
4,
63,
4,
64,
4,
65,
4,
66,
4,
67,
4,
68,
4,
69,
4,
70,
4,
71,
4,
72,
4,
73,
4,
74,
4,
75,
4,
76,
4,
77,
4,
78,
4,
79,
4,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
37,
2,
37,
12,
37,
16,
37,
24,
37,
20,
37,
28,
37,
44,
37,
36,
37,
52,
37,
60,
37,
1,
37,
3,
37,
15,
37,
19,
37,
27,
37,
23,
37,
35,
37,
51,
37,
43,
37,
59,
37,
75,
37,
32,
37,
47,
37,
40,
37,
55,
37,
63,
37,
29,
37,
48,
37,
37,
37,
56,
37,
66,
37
],
'i8',
ALLOC_NONE,
Runtime.GLOBAL_BASE + 10240
);
/* memory initializer */ allocate(
[
156,
78,
22,
85,
3,
90,
63,
150,
192,
84,
27,
97,
40,
99,
246,
89,
34,
144,
117,
132,
28,
131,
80,
122,
170,
96,
225,
99,
37,
110,
237,
101,
102,
132,
166,
130,
245,
155,
147,
104,
39,
87,
161,
101,
113,
98,
155,
91,
208,
89,
123,
134,
244,
152,
98,
125,
190,
125,
142,
155,
22,
98,
159,
124,
183,
136,
137,
91,
181,
94,
9,
99,
151,
102,
72,
104,
199,
149,
141,
151,
79,
103,
229,
78,
10,
79,
77,
79,
157,
79,
73,
80,
242,
86,
55,
89,
212,
89,
1,
90,
9,
92,
223,
96,
15,
97,
112,
97,
19,
102,
5,
105,
186,
112,
79,
117,
112,
117,
251,
121,
173,
125,
239,
125,
195,
128,
14,
132,
99,
136,
2,
139,
85,
144,
122,
144,
59,
83,
149,
78,
165,
78,
223,
87,
178,
128,
193,
144,
239,
120,
0,
78,
241,
88,
162,
110,
56,
144,
50,
122,
40,
131,
139,
130,
47,
156,
65,
81,
112,
83,
189,
84,
225,
84,
224,
86,
251,
89,
21,
95,
242,
152,
235,
109,
228,
128,
45,
133,
98,
150,
112,
150,
160,
150,
251,
151,
11,
84,
243,
83,
135,
91,
207,
112,
189,
127,
194,
143,
232,
150,
111,
83,
92,
157,
186,
122,
17,
78,
147,
120,
252,
129,
38,
110,
24,
86,
4,
85,
29,
107,
26,
133,
59,
156,
229,
89,
169,
83,
102,
109,
220,
116,
143,
149,
66,
86,
145,
78,
75,
144,
242,
150,
79,
131,
12,
153,
225,
83,
182,
85,
48,
91,
113,
95,
32,
102,
243,
102,
4,
104,
56,
108,
243,
108,
41,
109,
91,
116,
200,
118,
78,
122,
52,
152,
241,
130,
91,
136,
96,
138,
237,
146,
178,
109,
171,
117,
202,
118,
197,
153,
166,
96,
1,
139,
138,
141,
178,
149,
142,
105,
173,
83,
134,
81,
18,
87,
48,
88,
68,
89,
180,
91,
246,
94,
40,
96,
169,
99,
244,
99,
191,
108,
20,
111,
142,
112,
20,
113,
89,
113,
213,
113,
63,
115,
1,
126,
118,
130,
209,
130,
151,
133,
96,
144,
91,
146,
27,
157,
105,
88,
188,
101,
90,
108,
37,
117,
249,
81,
46,
89,
101,
89,
128,
95,
220,
95,
188,
98,
250,
101,
42,
106,
39,
107,
180,
107,
139,
115,
193,
127,
86,
137,
44,
157,
14,
157,
196,
158,
161,
92,
150,
108,
123,
131,
4,
81,
75,
92,
182,
97,
198,
129,
118,
104,
97,
114,
89,
78,
250,
79,
120,
83,
105,
96,
41,
110,
79,
122,
243,
151,
11,
78,
22,
83,
238,
78,
85,
79,
61,
79,
161,
79,
115,
79,
160,
82,
239,
83,
9,
86,
15,
89,
193,
90,
182,
91,
225,
91,
209,
121,
135,
102,
156,
103,
182,
103,
76,
107,
179,
108,
107,
112,
194,
115,
141,
121,
190,
121,
60,
122,
135,
123,
177,
130,
219,
130,
4,
131,
119,
131,
239,
131,
211,
131,
102,
135,
178,
138,
41,
86,
168,
140,
230,
143,
78,
144,
30,
151,
138,
134,
196,
79,
232,
92,
17,
98,
89,
114,
59,
117,
229,
129,
189,
130,
254,
134,
192,
140,
197,
150,
19,
153,
213,
153,
203,
78,
26,
79,
227,
137,
222,
86,
74,
88,
202,
88,
251,
94,
235,
95,
42,
96,
148,
96,
98,
96,
208,
97,
18,
98,
208,
98,
57,
101,
65,
155,
102,
102,
176,
104,
119,
109,
112,
112,
76,
117,
134,
118,
117,
125,
165,
130,
249,
135,
139,
149,
142,
150,
157,
140,
241,
81,
190,
82,
22,
89,
179,
84,
179,
91,
22,
93,
104,
97,
130,
105,
175,
109,
141,
120,
203,
132,
87,
136,
114,
138,
167,
147,
184,
154,
108,
109,
168,
153,
217,
134,
163,
87,
255,
103,
206,
134,
14,
146,
131,
82,
135,
86,
4,
84,
211,
94,
225,
98,
185,
100,
60,
104,
56,
104,
187,
107,
114,
115,
186,
120,
107,
122,
154,
137,
210,
137,
107,
141,
3,
143,
237,
144,
163,
149,
148,
150,
105,
151,
102,
91,
179,
92,
125,
105,
77,
152,
78,
152,
155,
99,
32,
123,
43,
106,
127,
106,
182,
104,
13,
156,
95,
111,
114,
82,
157,
85,
112,
96,
236,
98,
59,
109,
7,
110,
209,
110,
91,
132,
16,
137,
68,
143,
20,
78,
57,
156,
246,
83,
27,
105,
58,
106,
132,
151,
42,
104,
92,
81,
195,
122,
178,
132,
220,
145,
140,
147,
91,
86,
40,
157,
34,
104,
5,
131,
49,
132,
165,
124,
8,
82,
197,
130,
230,
116,
126,
78,
131,
79,
160,
81,
210,
91,
10,
82,
216,
82,
231,
82,
251,
93,
154,
85,
42,
88,
230,
89,
140,
91,
152,
91,
219,
91,
114,
94,
121,
94,
163,
96,
31,
97,
99,
97,
190,
97,
219,
99,
98,
101,
209,
103,
83,
104,
250,
104,
62,
107,
83,
107,
87,
108,
34,
111,
151,
111,
69,
111,
176,
116,
24,
117,
227,
118,
11,
119,
255,
122,
161,
123,
33,
124,
233,
125,
54,
127,
240,
127,
157,
128,
102,
130,
158,
131,
179,
137,
204,
138,
171,
140,
132,
144,
81,
148,
147,
149,
145,
149,
162,
149,
101,
150,
211,
151,
40,
153,
24,
130,
56,
78,
43,
84,
184,
92,
204,
93,
169,
115,
76,
118,
60,
119,
169,
92,
235,
127,
11,
141,
193,
150,
17,
152,
84,
152,
88,
152,
1,
79,
14,
79,
113,
83,
156,
85,
104,
86,
250,
87,
71,
89,
9,
91,
196,
91,
144,
92,
12,
94,
126,
94,
204,
95,
238,
99,
58,
103,
215,
101,
226,
101,
31,
103,
203,
104,
196,
104,
95,
106,
48,
94,
197,
107,
23,
108,
125,
108,
127,
117,
72,
121,
99,
91,
0,
122,
0,
125,
189,
95,
143,
137,
24,
138,
180,
140,
119,
141,
204,
142,
29,
143,
226,
152,
14,
154,
60,
155,
128,
78,
125,
80,
0,
81,
147,
89,
156,
91,
47,
98,
128,
98,
236,
100,
58,
107,
160,
114,
145,
117,
71,
121,
169,
127,
251,
135,
188,
138,
112,
139,
172,
99,
202,
131,
160,
151,
9,
84,
3,
84,
171,
85,
84,
104,
88,
106,
112,
138,
39,
120,
117,
103,
205,
158,
116,
83,
162,
91,
26,
129,
80,
134,
6,
144,
24,
78,
69,
78,
199,
78,
17,
79,
202,
83,
56,
84,
174,
91,
19,
95,
37,
96,
81,
101,
61,
103,
66,
108,
114,
108,
227,
108,
120,
112,
3,
116,
118,
122,
174,
122,
8,
123,
26,
125,
254,
124,
102,
125,
231,
101,
91,
114,
187,
83,
69,
92,
232,
93,
210,
98,
224,
98,
25,
99,
32,
110,
90,
134,
49,
138,
221,
141,
248,
146,
1,
111,
166,
121,
90,
155,
168,
78,
171,
78,
172,
78,
155,
79,
160,
79,
209,
80,
71,
81,
246,
122,
113,
81,
246,
81,
84,
83,
33,
83,
127,
83,
235,
83,
172,
85,
131,
88,
225,
92,
55,
95,
74,
95,
47,
96,
80,
96,
109,
96,
31,
99,
89,
101,
75,
106,
193,
108,
194,
114,
237,
114,
239,
119,
248,
128,
5,
129,
8,
130,
78,
133,
247,
144,
225,
147,
255,
151,
87,
153,
90,
154,
240,
78,
221,
81,
45,
92,
129,
102,
109,
105,
64,
92,
242,
102,
117,
105,
137,
115,
80,
104,
129,
124,
197,
80,
228,
82,
71,
87,
254,
93,
38,
147,
164,
101,
35,
107,
61,
107,
52,
116,
129,
121,
189,
121,
75,
123,
202,
125,
185,
130,
204,
131,
127,
136,
95,
137,
57,
139,
209,
143,
209,
145,
31,
84,
128,
146,
93,
78,
54,
80,
229,
83,
58,
83,
215,
114,
150,
115,
233,
119,
230,
130,
175,
142,
198,
153,
200,
153,
210,
153,
119,
81,
26,
97,
94,
134,
176,
85,
122,
122,
118,
80,
211,
91,
71,
144,
133,
150,
50,
78,
219,
106,
231,
145,
81,
92,
72,
92,
152,
99,
159,
122,
147,
108,
116,
151,
97,
143,
170,
122,
138,
113,
136,
150,
130,
124,
23,
104,
112,
126,
81,
104,
108,
147,
242,
82,
27,
84,
171,
133,
19,
138,
164,
127,
205,
142,
225,
144,
102,
83,
136,
136,
65,
121,
194,
79,
190,
80,
17,
82,
68,
81,
83,
85,
45,
87,
234,
115,
139,
87,
81,
89,
98,
95,
132,
95,
117,
96,
118,
97,
103,
97,
169,
97,
178,
99,
58,
100,
108,
101,
111,
102,
66,
104,
19,
110,
102,
117,
61,
122,
251,
124,
76,
125,
153,
125,
75,
126,
107,
127,
14,
131,
74,
131,
205,
134,
8,
138,
99,
138,
102,
139,
253,
142,
26,
152,
143,
157,
184,
130,
206,
143,
232,
155,
135,
82,
31,
98,
131,
100,
192,
111,
153,
150,
65,
104,
145,
80,
32,
107,
122,
108,
84,
111,
116,
122,
80,
125,
64,
136,
35,
138,
8,
103,
246,
78,
57,
80,
38,
80,
101,
80,
124,
81,
56,
82,
99,
82,
167,
85,
15,
87,
5,
88,
204,
90,
250,
94,
178,
97,
248,
97,
243,
98,
114,
99,
28,
105,
41,
106,
125,
114,
172,
114,
46,
115,
20,
120,
111,
120,
121,
125,
12,
119,
169,
128,
139,
137,
25,
139,
226,
140,
210,
142,
99,
144,
117,
147,
122,
150,
85,
152,
19,
154,
120,
158,
67,
81,
159,
83,
179,
83,
123,
94,
38,
95,
27,
110,
144,
110,
132,
115,
254,
115,
67,
125,
55,
130,
0,
138,
250,
138,
80,
150,
78,
78,
11,
80,
228,
83,
124,
84,
250,
86,
209,
89,
100,
91,
241,
93,
171,
94,
39,
95,
56,
98,
69,
101,
175,
103,
86,
110,
208,
114,
202,
124,
180,
136,
161,
128,
225,
128,
240,
131,
78,
134,
135,
138,
232,
141,
55,
146,
199,
150,
103,
152,
19,
159,
148,
78,
146,
78,
13,
79,
72,
83,
73,
84,
62,
84,
47,
90,
140,
95,
161,
95,
159,
96,
167,
104,
142,
106,
90,
116,
129,
120,
158,
138,
164,
138,
119,
139,
144,
145,
94,
78,
201,
155,
164,
78,
124,
79,
175,
79,
25,
80,
22,
80,
73,
81,
108,
81,
159,
82,
185,
82,
254,
82,
154,
83,
227,
83,
17,
84,
14,
84,
137,
85,
81,
87,
162,
87,
125,
89,
84,
91,
93,
91,
143,
91,
229,
93,
231,
93,
247,
93,
120,
94,
131,
94,
154,
94,
183,
94,
24,
95,
82,
96,
76,
97,
151,
98,
216,
98,
167,
99,
59,
101,
2,
102,
67,
102,
244,
102,
109,
103,
33,
104,
151,
104,
203,
105,
95,
108,
42,
109,
105,
109,
47,
110,
157,
110,
50,
117,
135,
118,
108,
120,
63,
122,
224,
124,
5,
125,
24,
125,
94,
125,
177,
125,
21,
128,
3,
128,
175,
128,
177,
128,
84,
129,
143,
129,
42,
130,
82,
131,
76,
136,
97,
136,
27,
139,
162,
140,
252,
140,
202,
144,
117,
145,
113,
146,
63,
120,
252,
146,
164,
149,
77,
150,
5,
152,
153,
153,
216,
154,
59,
157,
91,
82,
171,
82,
247,
83,
8,
84,
213,
88,
247,
98,
224,
111,
106,
140,
95,
143,
185,
158,
75,
81,
59,
82,
74,
84,
253,
86,
64,
122,
119,
145,
96,
157,
210,
158,
68,
115,
9,
111,
112,
129,
17,
117,
253,
95,
218,
96,
168,
154,
219,
114,
188,
143,
100,
107,
3,
152,
202,
78,
240,
86,
100,
87,
190,
88,
90,
90,
104,
96,
199,
97,
15,
102,
6,
102,
57,
104,
177,
104,
247,
109,
213,
117,
58,
125,
110,
130,
66,
155,
155,
78,
80,
79,
201,
83,
6,
85,
111,
93,
230,
93,
238,
93,
251,
103,
153,
108,
115,
116,
2,
120,
80,
138,
150,
147,
223,
136,
80,
87,
167,
94,
43,
99,
181,
80,
172,
80,
141,
81,
0,
103,
201,
84,
94,
88,
187,
89,
176,
91,
105,
95,
77,
98,
161,
99,
61,
104,
115,
107,
8,
110,
125,
112,
199,
145,
128,
114,
21,
120,
38,
120,
109,
121,
142,
101,
48,
125,
220,
131,
193,
136,
9,
143,
155,
150,
100,
82,
40,
87,
80,
103,
106,
127,
161,
140,
180,
81,
66,
87,
42,
150,
58,
88,
138,
105,
180,
128,
178,
84,
14,
93,
252,
87,
149,
120,
250,
157,
92,
79,
74,
82,
139,
84,
62,
100,
40,
102,
20,
103,
245,
103,
132,
122,
86,
123,
34,
125,
47,
147,
92,
104,
173,
155,
57,
123,
25,
83,
138,
81,
55,
82,
223,
91,
246,
98,
174,
100,
230,
100,
45,
103,
186,
107,
169,
133,
209,
150,
144,
118,
214,
155,
76,
99,
6,
147,
171,
155,
191,
118,
82,
102,
9,
78,
152,
80,
194,
83,
113,
92,
232,
96,
146,
100,
99,
101,
95,
104,
230,
113,
202,
115,
35,
117,
151,
123,
130,
126,
149,
134,
131,
139,
219,
140,
120,
145,
16,
153,
172,
101,
171,
102,
139,
107,
213,
78,
212,
78,
58,
79,
127,
79,
58,
82,
248,
83,
242,
83,
227,
85,
219,
86,
235,
88,
203,
89,
201,
89,
255,
89,
80,
91,
77,
92,
2,
94,
43,
94,
215,
95,
29,
96,
7,
99,
47,
101,
92,
91,
175,
101,
189,
101,
232,
101,
157,
103,
98,
107,
123,
107,
15,
108,
69,
115,
73,
121,
193,
121,
248,
124,
25,
125,
43,
125,
162,
128,
2,
129,
243,
129,
150,
137,
94,
138,
105,
138,
102,
138,
140,
138,
238,
138,
199,
140,
220,
140,
204,
150,
252,
152,
111,
107,
139,
78,
60,
79,
141,
79,
80,
81,
87,
91,
250,
91,
72,
97,
1,
99,
66,
102,
33,
107,
203,
110,
187,
108,
62,
114,
189,
116,
212,
117,
193,
120,
58,
121,
12,
128,
51,
128,
234,
129,
148,
132,
158,
143,
80,
108,
127,
158,
15,
95,
88,
139,
43,
157,
250,
122,
248,
142,
141,
91,
235,
150,
3,
78,
241,
83,
247,
87,
49,
89,
201,
90,
164,
91,
137,
96,
127,
110,
6,
111,
190,
117,
234,
140,
159,
91,
0,
133,
224,
123,
114,
80,
244,
103,
157,
130,
97,
92,
74,
133,
30,
126,
14,
130,
153,
81,
4,
92,
104,
99,
102,
141,
156,
101,
110,
113,
62,
121,
23,
125,
5,
128,
29,
139,
202,
142,
110,
144,
199,
134,
170,
144,
31,
80,
250,
82,
58,
92,
83,
103,
124,
112,
53,
114,
76,
145,
200,
145,
43,
147,
229,
130,
194,
91,
49,
95,
249,
96,
59,
78,
214,
83,
136,
91,
75,
98,
49,
103,
138,
107,
233,
114,
224,
115,
46,
122,
107,
129,
163,
141,
82,
145,
150,
153,
18,
81,
215,
83,
106,
84,
255,
91,
136,
99,
57,
106,
172,
125,
0,
151,
218,
86,
206,
83,
104,
84,
151,
91,
49,
92,
222,
93,
238,
79,
1,
97,
254,
98,
50,
109,
192,
121,
203,
121,
66,
125,
77,
126,
210,
127,
237,
129,
31,
130,
144,
132,
70,
136,
114,
137,
144,
139,
116,
142,
47,
143,
49,
144,
75,
145,
108,
145,
198,
150,
156,
145,
192,
78,
79,
79,
69,
81,
65,
83,
147,
95,
14,
98,
212,
103,
65,
108,
11,
110,
99,
115,
38,
126,
205,
145,
131,
146,
212,
83,
25,
89,
191,
91,
209,
109,
93,
121,
46,
126,
155,
124,
126,
88,
159,
113,
250,
81,
83,
136,
240,
143,
202,
79,
251,
92,
37,
102,
172,
119,
227,
122,
28,
130,
255,
153,
198,
81,
170,
95,
236,
101,
111,
105,
137,
107,
243,
109,
150,
110,
100,
111,
254,
118,
20,
125,
225,
93,
117,
144,
135,
145,
6,
152,
230,
81,
29,
82,
64,
98,
145,
102,
217,
102,
26,
110,
182,
94,
210,
125,
114,
127,
248,
102,
175,
133,
247,
133,
248,
138,
169,
82,
217,
83,
115,
89,
143,
94,
144,
95,
85,
96,
228,
146,
100,
150,
183,
80,
31,
81,
221,
82,
32,
83,
71,
83,
236,
83,
232,
84,
70,
85,
49,
85,
23,
86,
104,
89,
190,
89,
60,
90,
181,
91,
6,
92,
15,
92,
17,
92,
26,
92,
132,
94,
138,
94,
224,
94,
112,
95,
127,
98,
132,
98,
219,
98,
140,
99,
119,
99,
7,
102,
12,
102,
45,
102,
118,
102,
126,
103,
162,
104,
31,
106,
53,
106,
188,
108,
136,
109,
9,
110,
88,
110,
60,
113,
38,
113,
103,
113,
199,
117,
1,
119,
93,
120,
1,
121,
101,
121,
240,
121,
224,
122,
17,
123,
167,
124,
57,
125,
150,
128,
214,
131,
139,
132,
73,
133,
93,
136,
243,
136,
31,
138,
60,
138,
84,
138,
115,
138,
97,
140,
222,
140,
164,
145,
102,
146,
126,
147,
24,
148,
156,
150,
152,
151,
10,
78,
8,
78,
30,
78,
87,
78,
151,
81,
112,
82,
206,
87,
52,
88,
204,
88,
34,
91,
56,
94,
197,
96,
254,
100,
97,
103,
86,
103,
68,
109,
182,
114,
115,
117,
99,
122,
184,
132,
114,
139,
184,
145,
32,
147,
49,
86,
244,
87,
254,
152,
237,
98,
13,
105,
150,
107,
237,
113,
84,
126,
119,
128,
114,
130,
230,
137,
223,
152,
85,
135,
177,
143,
59,
92,
56,
79,
225,
79,
181,
79,
7,
85,
32,
90,
221,
91,
233,
91,
195,
95,
78,
97,
47,
99,
176,
101,
75,
102,
238,
104,
155,
105,
120,
109,
241,
109,
51,
117,
185,
117,
31,
119,
94,
121,
230,
121,
51,
125,
227,
129,
175,
130,
170,
133,
170,
137,
58,
138,
171,
142,
155,
143,
50,
144,
221,
145,
7,
151,
186,
78,
193,
78,
3,
82,
117,
88,
236,
88,
11,
92,
26,
117,
61,
92,
78,
129,
10,
138,
197,
143,
99,
150,
109,
151,
37,
123,
207,
138,
8,
152,
98,
145,
243,
86,
168,
83,
23,
144,
57,
84,
130,
87,
37,
94,
168,
99,
52,
108,
138,
112,
97,
119,
139,
124,
224,
127,
112,
136,
66,
144,
84,
145,
16,
147,
24,
147,
143,
150,
94,
116,
196,
154,
7,
93,
105,
93,
112,
101,
162,
103,
168,
141,
219,
150,
110,
99,
73,
103,
25,
105,
197,
131,
23,
152,
192,
150,
254,
136,
132,
111,
122,
100,
248,
91,
22,
78,
44,
112,
93,
117,
47,
102,
196,
81,
54,
82,
226,
82,
211,
89,
129,
95,
39,
96,
16,
98,
63,
101,
116,
101,
31,
102,
116,
102,
242,
104,
22,
104,
99,
107,
5,
110,
114,
114,
31,
117,
219,
118,
190,
124,
86,
128,
240,
88,
253,
136,
127,
137,
160,
138,
147,
138,
203,
138,
29,
144,
146,
145,
82,
151,
89,
151,
137,
101,
14,
122,
6,
129,
187,
150,
45,
94,
220,
96,
26,
98,
165,
101,
20,
102,
144,
103,
243,
119,
77,
122,
77,
124,
62,
126,
10,
129,
172,
140,
100,
141,
225,
141,
95,
142,
169,
120,
7,
82,
217,
98,
165,
99,
66,
100,
152,
98,
45,
138,
131,
122,
192,
123,
172,
138,
234,
150,
118,
125,
12,
130,
73,
135,
217,
78,
72,
81,
67,
83,
96,
83,
163,
91,
2,
92,
22,
92,
221,
93,
38,
98,
71,
98,
176,
100,
19,
104,
52,
104,
201,
108,
69,
109,
23,
109,
211,
103,
92,
111,
78,
113,
125,
113,
203,
101,
127,
122,
173,
123,
218,
125,
74,
126,
168,
127,
122,
129,
27,
130,
57,
130,
166,
133,
110,
138,
206,
140,
245,
141,
120,
144,
119,
144,
173,
146,
145,
146,
131,
149,
174,
155,
77,
82,
132,
85,
56,
111,
54,
113,
104,
81,
133,
121,
85,
126,
179,
129,
206,
124,
76,
86,
81,
88,
168,
92,
170,
99,
254,
102,
253,
102,
90,
105,
217,
114,
143,
117,
142,
117,
14,
121,
86,
121,
223,
121,
151,
124,
32,
125,
68,
125,
7,
134,
52,
138,
59,
150,
97,
144,
32,
159,
231,
80,
117,
82,
204,
83,
226,
83,
9,
80,
170,
85,
238,
88,
79,
89,
61,
114,
139,
91,
100,
92,
29,
83,
227,
96,
243,
96,
92,
99,
131,
99,
63,
99,
187,
99,
205,
100,
233,
101,
249,
102,
227,
93,
205,
105,
253,
105,
21,
111,
229,
113,
137,
78,
233,
117,
248,
118,
147,
122,
223,
124,
207,
125,
156,
125,
97,
128,
73,
131,
88,
131,
108,
132,
188,
132,
251,
133,
197,
136,
112,
141,
1,
144,
109,
144,
151,
147,
28,
151,
18,
154,
207,
80,
151,
88,
142,
97,
211,
129,
53,
133,
8,
141,
32,
144,
195,
79,
116,
80,
71,
82,
115,
83,
111,
96,
73,
99,
95,
103,
44,
110,
179,
141,
31,
144,
215,
79,
94,
92,
202,
140,
207,
101,
154,
125,
82,
83,
150,
136,
118,
81,
195,
99,
88,
91,
107,
91,
10,
92,
13,
100,
81,
103,
92,
144,
214,
78,
26,
89,
42,
89,
112,
108,
81,
138,
62,
85,
21,
88,
165,
89,
240,
96,
83,
98,
193,
103,
53,
130,
85,
105,
64,
150,
196,
153,
40,
154,
83,
79,
6,
88,
254,
91,
16,
128,
177,
92,
47,
94,
133,
95,
32,
96,
75,
97,
52,
98,
255,
102,
240,
108,
222,
110,
206,
128,
127,
129,
212,
130,
139,
136,
184,
140,
0,
144,
46,
144,
138,
150,
219,
158,
219,
155,
227,
78,
240,
83,
39,
89,
44,
123,
141,
145,
76,
152,
249,
157,
221,
110,
39,
112,
83,
83,
68,
85,
133,
91,
88,
98,
158,
98,
211,
98,
162,
108,
239,
111,
34,
116,
23,
138,
56,
148,
193,
111,
254,
138,
56,
131,
231,
81,
248,
134,
234,
83,
233,
83,
70,
79,
84,
144,
176,
143,
106,
89,
49,
129,
253,
93,
234,
122,
191,
143,
218,
104,
55,
140,
248,
114,
72,
156,
61,
106,
176,
138,
57,
78,
88,
83,
6,
86,
102,
87,
197,
98,
162,
99,
230,
101,
78,
107,
225,
109,
91,
110,
173,
112,
237,
119,
239,
122,
170,
123,
187,
125,
61,
128,
198,
128,
203,
134,
149,
138,
91,
147,
227,
86,
199,
88,
62,
95,
173,
101,
150,
102,
128,
106,
181,
107,
55,
117,
199,
138,
36,
80,
229,
119,
48,
87,
27,
95,
101,
96,
122,
102,
96,
108,
244,
117,
26,
122,
110,
127,
244,
129,
24,
135,
69,
144,
179,
153,
201,
123,
92,
117,
249,
122,
81,
123,
196,
132,
16,
144,
233,
121,
146,
122,
54,
131,
225,
90,
64,
119,
45,
78,
242,
78,
153,
91,
224,
95,
189,
98,
60,
102,
241,
103,
232,
108,
107,
134,
119,
136,
59,
138,
78,
145,
243,
146,
208,
153,
23,
106,
38,
112,
42,
115,
231,
130,
87,
132,
175,
140,
1,
78,
70,
81,
203,
81,
139,
85,
245,
91,
22,
94,
51,
94,
129,
94,
20,
95,
53,
95,
107,
95,
180,
95,
242,
97,
17,
99,
162,
102,
29,
103,
110,
111,
82,
114,
58,
117,
58,
119,
116,
128,
57,
129,
120,
129,
118,
135,
191,
138,
220,
138,
133,
141,
243,
141,
154,
146,
119,
149,
2,
152,
229,
156,
197,
82,
87,
99,
244,
118,
21,
103,
136,
108,
205,
115,
195,
140,
174,
147,
115,
150,
37,
109,
156,
88,
14,
105,
204,
105,
253,
143,
154,
147,
219,
117,
26,
144,
90,
88,
2,
104,
180,
99,
251,
105,
67,
79,
44,
111,
216,
103,
187,
143,
38,
133,
180,
125,
84,
147,
63,
105,
112,
111,
106,
87,
247,
88,
44,
91,
44,
125,
42,
114,
10,
84,
227,
145,
180,
157,
173,
78,
78,
79,
92,
80,
117,
80,
67,
82,
158,
140,
72,
84,
36,
88,
154,
91,
29,
94,
149,
94,
173,
94,
247,
94,
31,
95,
140,
96,
181,
98,
58,
99,
208,
99,
175,
104,
64,
108,
135,
120,
142,
121,
11,
122,
224,
125,
71,
130,
2,
138,
230,
138,
68,
142,
19,
144,
184,
144,
45,
145,
216,
145,
14,
159,
229,
108,
88,
100,
226,
100,
117,
101,
244,
110,
132,
118,
27,
123,
105,
144,
209,
147,
186,
110,
242,
84,
185,
95,
164,
100,
77,
143,
237,
143,
68,
146,
120,
81,
107,
88,
41,
89,
85,
92,
151,
94,
251,
109,
143,
126,
28,
117,
188,
140,
226,
142,
91,
152,
185,
112,
29,
79,
191,
107,
177,
111,
48,
117,
251,
150,
78,
81,
16,
84,
53,
88,
87,
88,
172,
89,
96,
92,
146,
95,
151,
101,
92,
103,
33,
110,
123,
118,
223,
131,
237,
140,
20,
144,
253,
144,
77,
147,
37,
120,
58,
120,
170,
82,
166,
94,
31,
87,
116,
89,
18,
96,
18,
80,
90,
81,
172,
81,
205,
81,
0,
82,
16,
85,
84,
88,
88,
88,
87,
89,
149,
91,
246,
92,
139,
93,
188,
96,
149,
98,
45,
100,
113,
103,
67,
104,
188,
104,
223,
104,
215,
118,
216,
109,
111,
110,
155,
109,
111,
112,
200,
113,
83,
95,
216,
117,
119,
121,
73,
123,
84,
123,
82,
123,
214,
124,
113,
125,
48,
82,
99,
132,
105,
133,
228,
133,
14,
138,
4,
139,
70,
140,
15,
142,
3,
144,
15,
144,
25,
148,
118,
150,
45,
152,
48,
154,
216,
149,
205,
80,
213,
82,
12,
84,
2,
88,
14,
92,
167,
97,
158,
100,
30,
109,
179,
119,
229,
122,
244,
128,
4,
132,
83,
144,
133,
146,
224,
92,
7,
157,
63,
83,
151,
95,
179,
95,
156,
109,
121,
114,
99,
119,
191,
121,
228,
123,
210,
107,
236,
114,
173,
138,
3,
104,
97,
106,
248,
81,
129,
122,
52,
105,
74,
92,
246,
156,
235,
130,
197,
91,
73,
145,
30,
112,
120,
86,
111,
92,
199,
96,
102,
101,
140,
108,
90,
140,
65,
144,
19,
152,
81,
84,
199,
102,
13,
146,
72,
89,
163,
144,
133,
81,
77,
78,
234,
81,
153,
133,
14,
139,
88,
112,
122,
99,
75,
147,
98,
105,
180,
153,
4,
126,
119,
117,
87,
83,
96,
105,
223,
142,
227,
150,
93,
108,
140,
78,
60,
92,
16,
95,
233,
143,
2,
83,
209,
140,
137,
128,
121,
134,
255,
94,
229,
101,
115,
78,
101,
81,
130,
89,
63,
92,
238,
151,
251,
78,
138,
89,
205,
95,
141,
138,
225,
111,
176,
121,
98,
121,
231,
91,
113,
132,
43,
115,
177,
113,
116,
94,
245,
95,
123,
99,
154,
100,
195,
113,
152,
124,
67,
78,
252,
94,
75,
78,
220,
87,
162,
86,
169,
96,
195,
111,
13,
125,
253,
128,
51,
129,
191,
129,
178,
143,
151,
137,
164,
134,
244,
93,
138,
98,
173,
100,
135,
137,
119,
103,
226,
108,
62,
109,
54,
116,
52,
120,
70,
90,
117,
127,
173,
130,
172,
153,
243,
79,
195,
94,
221,
98,
146,
99,
87,
101,
111,
103,
195,
118,
76,
114,
204,
128,
186,
128,
41,
143,
77,
145,
13,
80,
249,
87,
146,
90,
133,
104,
115,
105,
100,
113,
253,
114,
183,
140,
242,
88,
224,
140,
106,
150,
25,
144,
127,
135,
228,
121,
231,
119,
41,
132,
47,
79,
101,
82,
90,
83,
205,
98,
207,
103,
202,
108,
125,
118,
148,
123,
149,
124,
54,
130,
132,
133,
235,
143,
221,
102,
32,
111,
6,
114,
27,
126,
171,
131,
193,
153,
166,
158,
253,
81,
177,
123,
114,
120,
184,
123,
135,
128,
72,
123,
232,
106,
97,
94,
140,
128,
81,
117,
96,
117,
107,
81,
98,
146,
140,
110,
122,
118,
151,
145,
234,
154,
16,
79,
112,
127,
156,
98,
79,
123,
165,
149,
233,
156,
122,
86,
89,
88,
228,
134,
188,
150,
52,
79,
36,
82,
74,
83,
205,
83,
219,
83,
6,
94,
44,
100,
145,
101,
127,
103,
62,
108,
78,
108,
72,
114,
175,
114,
237,
115,
84,
117,
65,
126,
44,
130,
233,
133,
169,
140,
196,
123,
198,
145,
105,
113,
18,
152,
239,
152,
61,
99,
105,
102,
106,
117,
228,
118,
208,
120,
67,
133,
238,
134,
42,
83,
81,
83,
38,
84,
131,
89,
135,
94,
124,
95,
178,
96,
73,
98,
121,
98,
171,
98,
144,
101,
212,
107,
204,
108,
178,
117,
174,
118,
145,
120,
216,
121,
203,
125,
119,
127,
165,
128,
171,
136,
185,
138,
187,
140,
127,
144,
94,
151,
219,
152,
11,
106,
56,
124,
153,
80,
62,
92,
174,
95,
135,
103,
216,
107,
53,
116,
9,
119,
142,
127,
59,
159,
202,
103,
23,
122,
57,
83,
139,
117,
237,
154,
102,
95,
157,
129,
241,
131,
152,
128,
60,
95,
197,
95,
98,
117,
70,
123,
60,
144,
103,
104,
235,
89,
155,
90,
16,
125,
126,
118,
44,
139,
245,
79,
106,
95,
25,
106,
55,
108,
2,
111,
226,
116,
104,
121,
104,
136,
85,
138,
121,
140,
223,
94,
207,
99,
197,
117,
210,
121,
215,
130,
40,
147,
242,
146,
156,
132,
237,
134,
45,
156,
193,
84,
108,
95,
140,
101,
92,
109,
21,
112,
167,
140,
211,
140,
59,
152,
79,
101,
246,
116,
13,
78,
216,
78,
224,
87,
43,
89,
102,
90,
204,
91,
168,
81,
3,
94,
156,
94,
22,
96,
118,
98,
119,
101,
167,
101,
110,
102,
110,
109,
54,
114,
38,
123,
80,
129,
154,
129,
153,
130,
92,
139,
160,
140,
230,
140,
116,
141,
28,
150,
68,
150,
174,
79,
171,
100,
102,
107,
30,
130,
97,
132,
106,
133,
232,
144,
1,
92,
83,
105,
168,
152,
122,
132,
87,
133,
15,
79,
111,
82,
169,
95,
69,
94,
13,
103,
143,
121,
121,
129,
7,
137,
134,
137,
245,
109,
23,
95,
85,
98,
184,
108,
207,
78,
105,
114,
146,
155,
6,
82,
59,
84,
116,
86,
179,
88,
164,
97,
110,
98,
26,
113,
110,
89,
137,
124,
222,
124,
27,
125,
240,
150,
135,
101,
94,
128,
25,
78,
117,
79,
117,
81,
64,
88,
99,
94,
115,
94,
10,
95,
196,
103,
38,
78,
61,
133,
137,
149,
91,
150,
115,
124,
1,
152,
251,
80,
193,
88,
86,
118,
167,
120,
37,
82,
165,
119,
17,
133,
134,
123,
79,
80,
9,
89,
71,
114,
199,
123,
232,
125,
186,
143,
212,
143,
77,
144,
191,
79,
201,
82,
41,
90,
1,
95,
173,
151,
221,
79,
23,
130,
234,
146,
3,
87,
85,
99,
105,
107,
43,
117,
220,
136,
20,
143,
66,
122,
223,
82,
147,
88,
85,
97,
10,
98,
174,
102,
205,
107,
63,
124,
233,
131,
35,
80,
248,
79,
5,
83,
70,
84,
49,
88,
73,
89,
157,
91,
240,
92,
239,
92,
41,
93,
150,
94,
177,
98,
103,
99,
62,
101,
185,
101,
11,
103,
213,
108,
225,
108,
249,
112,
50,
120,
43,
126,
222,
128,
179,
130,
12,
132,
236,
132,
2,
135,
18,
137,
42,
138,
74,
140,
166,
144,
210,
146,
253,
152,
243,
156,
108,
157,
79,
78,
161,
78,
141,
80,
86,
82,
74,
87,
168,
89,
61,
94,
216,
95,
217,
95,
63,
98,
180,
102,
27,
103,
208,
103,
210,
104,
146,
81,
33,
125,
170,
128,
168,
129,
0,
139,
140,
140,
191,
140,
126,
146,
50,
150,
32,
84,
44,
152,
23,
83,
213,
80,
92,
83,
168,
88,
178,
100,
52,
103,
103,
114,
102,
119,
70,
122,
230,
145,
195,
82,
161,
108,
134,
107,
0,
88,
76,
94,
84,
89,
44,
103,
251,
127,
225,
81,
198,
118,
105,
100,
232,
120,
84,
155,
187,
158,
203,
87,
185,
89,
39,
102,
154,
103,
206,
107,
233,
84,
217,
105,
85,
94,
156,
129,
149,
103,
170,
155,
254,
103,
82,
156,
93,
104,
166,
78,
227,
79,
200,
83,
185,
98,
43,
103,
171,
108,
196,
143,
173,
79,
109,
126,
191,
158,
7,
78,
98,
97,
128,
110,
43,
111,
19,
133,
115,
84,
42,
103,
69,
155,
243,
93,
149,
123,
172,
92,
198,
91,
28,
135,
74,
110,
209,
132,
20,
122,
8,
129,
153,
89,
141,
124,
17,
108,
32,
119,
217,
82,
34,
89,
33,
113,
95,
114,
219,
119,
39,
151,
97,
157,
11,
105,
127,
90,
24,
90,
165,
81,
13,
84,
125,
84,
14,
102,
223,
118,
247,
143,
152,
146,
244,
156,
234,
89,
93,
114,
197,
110,
77,
81,
201,
104,
191,
125,
236,
125,
98,
151,
186,
158,
120,
100,
33,
106,
2,
131,
132,
89,
95,
91,
219,
107,
27,
115,
242,
118,
178,
125,
23,
128,
153,
132,
50,
81,
40,
103,
217,
158,
238,
118,
98,
103,
255,
82,
5,
153,
36,
92,
59,
98,
126,
124,
176,
140,
79,
85,
182,
96,
11,
125,
128,
149,
1,
83,
95,
78,
182,
81,
28,
89,
58,
114,
54,
128,
206,
145,
37,
95,
226,
119,
132,
83,
121,
95,
4,
125,
172,
133,
51,
138,
141,
142,
86,
151,
243,
103,
174,
133,
83,
148,
9,
97,
8,
97,
185,
108,
82,
118,
237,
138,
56,
143,
47,
85,
81,
79,
42,
81,
199,
82,
203,
83,
165,
91,
125,
94,
160,
96,
130,
97,
214,
99,
9,
103,
218,
103,
103,
110,
140,
109,
54,
115,
55,
115,
49,
117,
80,
121,
213,
136,
152,
138,
74,
144,
145,
144,
245,
144,
196,
150,
141,
135,
21,
89,
136,
78,
89,
79,
14,
78,
137,
138,
63,
143,
16,
152,
173,
80,
124,
94,
150,
89,
185,
91,
184,
94,
218,
99,
250,
99,
193,
100,
220,
102,
74,
105,
216,
105,
11,
109,
182,
110,
148,
113,
40,
117,
175,
122,
138,
127,
0,
128,
73,
132,
201,
132,
129,
137,
33,
139,
10,
142,
101,
144,
125,
150,
10,
153,
126,
97,
145,
98,
50,
107,
131,
108,
116,
109,
204,
127,
252,
127,
192,
109,
133,
127,
186,
135,
248,
136,
101,
103,
177,
131,
60,
152,
247,
150,
27,
109,
97,
125,
61,
132,
106,
145,
113,
78,
117,
83,
80,
93,
4,
107,
235,
111,
205,
133,
45,
134,
167,
137,
41,
82,
15,
84,
101,
92,
78,
103,
168,
104,
6,
116,
131,
116,
226,
117,
207,
136,
225,
136,
204,
145,
226,
150,
120,
150,
139,
95,
135,
115,
203,
122,
78,
132,
160,
99,
101,
117,
137,
82,
65,
109,
156,
110,
9,
116,
89,
117,
107,
120,
146,
124,
134,
150,
220,
122,
141,
159,
182,
79,
110,
97,
197,
101,
92,
134,
134,
78,
174,
78,
218,
80,
33,
78,
204,
81,
238,
91,
153,
101,
129,
104,
188,
109,
31,
115,
66,
118,
173,
119,
28,
122,
231,
124,
111,
130,
210,
138,
124,
144,
207,
145,
117,
150,
24,
152,
155,
82,
209,
125,
43,
80,
152,
83,
151,
103,
203,
109,
208,
113,
51,
116,
232,
129,
42,
143,
163,
150,
87,
156,
159,
158,
96,
116,
65,
88,
153,
109,
47,
125,
94,
152,
228,
78,
54,
79,
139,
79,
183,
81,
177,
82,
186,
93,
28,
96,
178,
115,
60,
121,
211,
130,
52,
146,
183,
150,
246,
150,
10,
151,
151,
158,
98,
159,
166,
102,
116,
107,
23,
82,
163,
82,
200,
112,
194,
136,
201,
94,
75,
96,
144,
97,
35,
111,
73,
113,
62,
124,
244,
125,
111,
128,
238,
132,
35,
144,
44,
147,
66,
84,
111,
155,
211,
106,
137,
112,
194,
140,
239,
141,
50,
151,
180,
82,
65,
90,
202,
94,
4,
95,
23,
103,
124,
105,
148,
105,
106,
109,
15,
111,
98,
114,
252,
114,
237,
123,
1,
128,
126,
128,
75,
135,
206,
144,
109,
81,
147,
158,
132,
121,
139,
128,
50,
147,
214,
138,
45,
80,
140,
84,
113,
138,
106,
107,
196,
140,
7,
129,
209,
96,
160,
103,
242,
157,
153,
78,
152,
78,
16,
156,
107,
138,
193,
133,
104,
133,
0,
105,
126,
110,
151,
120,
85,
129,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
12,
95,
16,
78,
21,
78,
42,
78,
49,
78,
54,
78,
60,
78,
63,
78,
66,
78,
86,
78,
88,
78,
130,
78,
133,
78,
107,
140,
138,
78,
18,
130,
13,
95,
142,
78,
158,
78,
159,
78,
160,
78,
162,
78,
176,
78,
179,
78,
182,
78,
206,
78,
205,
78,
196,
78,
198,
78,
194,
78,
215,
78,
222,
78,
237,
78,
223,
78,
247,
78,
9,
79,
90,
79,
48,
79,
91,
79,
93,
79,
87,
79,
71,
79,
118,
79,
136,
79,
143,
79,
152,
79,
123,
79,
105,
79,
112,
79,
145,
79,
111,
79,
134,
79,
150,
79,
24,
81,
212,
79,
223,
79,
206,
79,
216,
79,
219,
79,
209,
79,
218,
79,
208,
79,
228,
79,
229,
79,
26,
80,
40,
80,
20,
80,
42,
80,
37,
80,
5,
80,
28,
79,
246,
79,
33,
80,
41,
80,
44,
80,
254,
79,
239,
79,
17,
80,
6,
80,
67,
80,
71,
80,
3,
103,
85,
80,
80,
80,
72,
80,
90,
80,
86,
80,
108,
80,
120,
80,
128,
80,
154,
80,
133,
80,
180,
80,
178,
80,
201,
80,
202,
80,
179,
80,
194,
80,
214,
80,
222,
80,
229,
80,
237,
80,
227,
80,
238,
80,
249,
80,
245,
80,
9,
81,
1,
81,
2,
81,
22,
81,
21,
81,
20,
81,
26,
81,
33,
81,
58,
81,
55,
81,
60,
81,
59,
81,
63,
81,
64,
81,
82,
81,
76,
81,
84,
81,
98,
81,
248,
122,
105,
81,
106,
81,
110,
81,
128,
81,
130,
81,
216,
86,
140,
81,
137,
81,
143,
81,
145,
81,
147,
81,
149,
81,
150,
81,
164,
81,
166,
81,
162,
81,
169,
81,
170,
81,
171,
81,
179,
81,
177,
81,
178,
81,
176,
81,
181,
81,
189,
81,
197,
81,
201,
81,
219,
81,
224,
81,
85,
134,
233,
81,
237,
81,
240,
81,
245,
81,
254,
81,
4,
82,
11,
82,
20,
82,
14,
82,
39,
82,
42,
82,
46,
82,
51,
82,
57,
82,
79,
82,
68,
82,
75,
82,
76,
82,
94,
82,
84,
82,
106,
82,
116,
82,
105,
82,
115,
82,
127,
82,
125,
82,
141,
82,
148,
82,
146,
82,
113,
82,
136,
82,
145,
82,
168,
143,
167,
143,
172,
82,
173,
82,
188,
82,
181,
82,
193,
82,
205,
82,
215,
82,
222,
82,
227,
82,
230,
82,
237,
152,
224,
82,
243,
82,
245,
82,
248,
82,
249,
82,
6,
83,
8,
83,
56,
117,
13,
83,
16,
83,
15,
83,
21,
83,
26,
83,
35,
83,
47,
83,
49,
83,
51,
83,
56,
83,
64,
83,
70,
83,
69,
83,
23,
78,
73,
83,
77,
83,
214,
81,
94,
83,
105,
83,
110,
83,
24,
89,
123,
83,
119,
83,
130,
83,
150,
83,
160,
83,
166,
83,
165,
83,
174,
83,
176,
83,
182,
83,
195,
83,
18,
124,
217,
150,
223,
83,
252,
102,
238,
113,
238,
83,
232,
83,
237,
83,
250,
83,
1,
84,
61,
84,
64,
84,
44,
84,
45,
84,
60,
84,
46,
84,
54,
84,
41,
84,
29,
84,
78,
84,
143,
84,
117,
84,
142,
84,
95,
84,
113,
84,
119,
84,
112,
84,
146,
84,
123,
84,
128,
84,
118,
84,
132,
84,
144,
84,
134,
84,
199,
84,
162,
84,
184,
84,
165,
84,
172,
84,
196,
84,
200,
84,
168,
84,
171,
84,
194,
84,
164,
84,
190,
84,
188,
84,
216,
84,
229,
84,
230,
84,
15,
85,
20,
85,
253,
84,
238,
84,
237,
84,
250,
84,
226,
84,
57,
85,
64,
85,
99,
85,
76,
85,
46,
85,
92,
85,
69,
85,
86,
85,
87,
85,
56,
85,
51,
85,
93,
85,
153,
85,
128,
85,
175,
84,
138,
85,
159,
85,
123,
85,
126,
85,
152,
85,
158,
85,
174,
85,
124,
85,
131,
85,
169,
85,
135,
85,
168,
85,
218,
85,
197,
85,
223,
85,
196,
85,
220,
85,
228,
85,
212,
85,
20,
86,
247,
85,
22,
86,
254,
85,
253,
85,
27,
86,
249,
85,
78,
86,
80,
86,
223,
113,
52,
86,
54,
86,
50,
86,
56,
86,
107,
86,
100,
86,
47,
86,
108,
86,
106,
86,
134,
86,
128,
86,
138,
86,
160,
86,
148,
86,
143,
86,
165,
86,
174,
86,
182,
86,
180,
86,
194,
86,
188,
86,
193,
86,
195,
86,
192,
86,
200,
86,
206,
86,
209,
86,
211,
86,
215,
86,
238,
86,
249,
86,
0,
87,
255,
86,
4,
87,
9,
87,
8,
87,
11,
87,
13,
87,
19,
87,
24,
87,
22,
87,
199,
85,
28,
87,
38,
87,
55,
87,
56,
87,
78,
87,
59,
87,
64,
87,
79,
87,
105,
87,
192,
87,
136,
87,
97,
87,
127,
87,
137,
87,
147,
87,
160,
87,
179,
87,
164,
87,
170,
87,
176,
87,
195,
87,
198,
87,
212,
87,
210,
87,
211,
87,
10,
88,
214,
87,
227,
87,
11,
88,
25,
88,
29,
88,
114,
88,
33,
88,
98,
88,
75,
88,
112,
88,
192,
107,
82,
88,
61,
88,
121,
88,
133,
88,
185,
88,
159,
88,
171,
88,
186,
88,
222,
88,
187,
88,
184,
88,
174,
88,
197,
88,
211,
88,
209,
88,
215,
88,
217,
88,
216,
88,
229,
88,
220,
88,
228,
88,
223,
88,
239,
88,
250,
88,
249,
88,
251,
88,
252,
88,
253,
88,
2,
89,
10,
89,
16,
89,
27,
89,
166,
104,
37,
89,
44,
89,
45,
89,
50,
89,
56,
89,
62,
89,
210,
122,
85,
89,
80,
89,
78,
89,
90,
89,
88,
89,
98,
89,
96,
89,
103,
89,
108,
89,
105,
89,
120,
89,
129,
89,
157,
89,
94,
79,
171,
79,
163,
89,
178,
89,
198,
89,
232,
89,
220,
89,
141,
89,
217,
89,
218,
89,
37,
90,
31,
90,
17,
90,
28,
90,
9,
90,
26,
90,
64,
90,
108,
90,
73,
90,
53,
90,
54,
90,
98,
90,
106,
90,
154,
90,
188,
90,
190,
90,
203,
90,
194,
90,
189,
90,
227,
90,
215,
90,
230,
90,
233,
90,
214,
90,
250,
90,
251,
90,
12,
91,
11,
91,
22,
91,
50,
91,
208,
90,
42,
91,
54,
91,
62,
91,
67,
91,
69,
91,
64,
91,
81,
91,
85,
91,
90,
91,
91,
91,
101,
91,
105,
91,
112,
91,
115,
91,
117,
91,
120,
91,
136,
101,
122,
91,
128,
91,
131,
91,
166,
91,
184,
91,
195,
91,
199,
91,
201,
91,
212,
91,
208,
91,
228,
91,
230,
91,
226,
91,
222,
91,
229,
91,
235,
91,
240,
91,
246,
91,
243,
91,
5,
92,
7,
92,
8,
92,
13,
92,
19,
92,
32,
92,
34,
92,
40,
92,
56,
92,
57,
92,
65,
92,
70,
92,
78,
92,
83,
92,
80,
92,
79,
92,
113,
91,
108,
92,
110,
92,
98,
78,
118,
92,
121,
92,
140,
92,
145,
92,
148,
92,
155,
89,
171,
92,
187,
92,
182,
92,
188,
92,
183,
92,
197,
92,
190,
92,
199,
92,
217,
92,
233,
92,
253,
92,
250,
92,
237,
92,
140,
93,
234,
92,
11,
93,
21,
93,
23,
93,
92,
93,
31,
93,
27,
93,
17,
93,
20,
93,
34,
93,
26,
93,
25,
93,
24,
93,
76,
93,
82,
93,
78,
93,
75,
93,
108,
93,
115,
93,
118,
93,
135,
93,
132,
93,
130,
93,
162,
93,
157,
93,
172,
93,
174,
93,
189,
93,
144,
93,
183,
93,
188,
93,
201,
93,
205,
93,
211,
93,
210,
93,
214,
93,
219,
93,
235,
93,
242,
93,
245,
93,
11,
94,
26,
94,
25,
94,
17,
94,
27,
94,
54,
94,
55,
94,
68,
94,
67,
94,
64,
94,
78,
94,
87,
94,
84,
94,
95,
94,
98,
94,
100,
94,
71,
94,
117,
94,
118,
94,
122,
94,
188,
158,
127,
94,
160,
94,
193,
94,
194,
94,
200,
94,
208,
94,
207,
94,
214,
94,
227,
94,
221,
94,
218,
94,
219,
94,
226,
94,
225,
94,
232,
94,
233,
94,
236,
94,
241,
94,
243,
94,
240,
94,
244,
94,
248,
94,
254,
94,
3,
95,
9,
95,
93,
95,
92,
95,
11,
95,
17,
95,
22,
95,
41,
95,
45,
95,
56,
95,
65,
95,
72,
95,
76,
95,
78,
95,
47,
95,
81,
95,
86,
95,
87,
95,
89,
95,
97,
95,
109,
95,
115,
95,
119,
95,
131,
95,
130,
95,
127,
95,
138,
95,
136,
95,
145,
95,
135,
95,
158,
95,
153,
95,
152,
95,
160,
95,
168,
95,
173,
95,
188,
95,
214,
95,
251,
95,
228,
95,
248,
95,
241,
95,
221,
95,
179,
96,
255,
95,
33,
96,
96,
96,
25,
96,
16,
96,
41,
96,
14,
96,
49,
96,
27,
96,
21,
96,
43,
96,
38,
96,
15,
96,
58,
96,
90,
96,
65,
96,
106,
96,
119,
96,
95,
96,
74,
96,
70,
96,
77,
96,
99,
96,
67,
96,
100,
96,
66,
96,
108,
96,
107,
96,
89,
96,
129,
96,
141,
96,
231,
96,
131,
96,
154,
96,
132,
96,
155,
96,
150,
96,
151,
96,
146,
96,
167,
96,
139,
96,
225,
96,
184,
96,
224,
96,
211,
96,
180,
96,
240,
95,
189,
96,
198,
96,
181,
96,
216,
96,
77,
97,
21,
97,
6,
97,
246,
96,
247,
96,
0,
97,
244,
96,
250,
96,
3,
97,
33,
97,
251,
96,
241,
96,
13,
97,
14,
97,
71,
97,
62,
97,
40,
97,
39,
97,
74,
97,
63,
97,
60,
97,
44,
97,
52,
97,
61,
97,
66,
97,
68,
97,
115,
97,
119,
97,
88,
97,
89,
97,
90,
97,
107,
97,
116,
97,
111,
97,
101,
97,
113,
97,
95,
97,
93,
97,
83,
97,
117,
97,
153,
97,
150,
97,
135,
97,
172,
97,
148,
97,
154,
97,
138,
97,
145,
97,
171,
97,
174,
97,
204,
97,
202,
97,
201,
97,
247,
97,
200,
97,
195,
97,
198,
97,
186,
97,
203,
97,
121,
127,
205,
97,
230,
97,
227,
97,
246,
97,
250,
97,
244,
97,
255,
97,
253,
97,
252,
97,
254,
97,
0,
98,
8,
98,
9,
98,
13,
98,
12,
98,
20,
98,
27,
98,
30,
98,
33,
98,
42,
98,
46,
98,
48,
98,
50,
98,
51,
98,
65,
98,
78,
98,
94,
98,
99,
98,
91,
98,
96,
98,
104,
98,
124,
98,
130,
98,
137,
98,
126,
98,
146,
98,
147,
98,
150,
98,
212,
98,
131,
98,
148,
98,
215,
98,
209,
98,
187,
98,
207,
98,
255,
98,
198,
98,
212,
100,
200,
98,
220,
98,
204,
98,
202,
98,
194,
98,
199,
98,
155,
98,
201,
98,
12,
99,
238,
98,
241,
98,
39,
99,
2,
99,
8,
99,
239,
98,
245,
98,
80,
99,
62,
99,
77,
99,
28,
100,
79,
99,
150,
99,
142,
99,
128,
99,
171,
99,
118,
99,
163,
99,
143,
99,
137,
99,
159,
99,
181,
99,
107,
99,
105,
99,
190,
99,
233,
99,
192,
99,
198,
99,
227,
99,
201,
99,
210,
99,
246,
99,
196,
99,
22,
100,
52,
100,
6,
100,
19,
100,
38,
100,
54,
100,
29,
101,
23,
100,
40,
100,
15,
100,
103,
100,
111,
100,
118,
100,
78,
100,
42,
101,
149,
100,
147,
100,
165,
100,
169,
100,
136,
100,
188,
100,
218,
100,
210,
100,
197,
100,
199,
100,
187,
100,
216,
100,
194,
100,
241,
100,
231,
100,
9,
130,
224,
100,
225,
100,
172,
98,
227,
100,
239,
100,
44,
101,
246,
100,
244,
100,
242,
100,
250,
100,
0,
101,
253,
100,
24,
101,
28,
101,
5,
101,
36,
101,
35,
101,
43,
101,
52,
101,
53,
101,
55,
101,
54,
101,
56,
101,
75,
117,
72,
101,
86,
101,
85,
101,
77,
101,
88,
101,
94,
101,
93,
101,
114,
101,
120,
101,
130,
101,
131,
101,
138,
139,
155,
101,
159,
101,
171,
101,
183,
101,
195,
101,
198,
101,
193,
101,
196,
101,
204,
101,
210,
101,
219,
101,
217,
101,
224,
101,
225,
101,
241,
101,
114,
103,
10,
102,
3,
102,
251,
101,
115,
103,
53,
102,
54,
102,
52,
102,
28,
102,
79,
102,
68,
102,
73,
102,
65,
102,
94,
102,
93,
102,
100,
102,
103,
102,
104,
102,
95,
102,
98,
102,
112,
102,
131,
102,
136,
102,
142,
102,
137,
102,
132,
102,
152,
102,
157,
102,
193,
102,
185,
102,
201,
102,
190,
102,
188,
102,
196,
102,
184,
102,
214,
102,
218,
102,
224,
102,
63,
102,
230,
102,
233,
102,
240,
102,
245,
102,
247,
102,
15,
103,
22,
103,
30,
103,
38,
103,
39,
103,
56,
151,
46,
103,
63,
103,
54,
103,
65,
103,
56,
103,
55,
103,
70,
103,
94,
103,
96,
103,
89,
103,
99,
103,
100,
103,
137,
103,
112,
103,
169,
103,
124,
103,
106,
103,
140,
103,
139,
103,
166,
103,
161,
103,
133,
103,
183,
103,
239,
103,
180,
103,
236,
103,
179,
103,
233,
103,
184,
103,
228,
103,
222,
103,
221,
103,
226,
103,
238,
103,
185,
103,
206,
103,
198,
103,
231,
103,
156,
106,
30,
104,
70,
104,
41,
104,
64,
104,
77,
104,
50,
104,
78,
104,
179,
104,
43,
104,
89,
104,
99,
104,
119,
104,
127,
104,
159,
104,
143,
104,
173,
104,
148,
104,
157,
104,
155,
104,
131,
104,
174,
106,
185,
104,
116,
104,
181,
104,
160,
104,
186,
104,
15,
105,
141,
104,
126,
104,
1,
105,
202,
104,
8,
105,
216,
104,
34,
105,
38,
105,
225,
104,
12,
105,
205,
104,
212,
104,
231,
104,
213,
104,
54,
105,
18,
105,
4,
105,
215,
104,
227,
104,
37,
105,
249,
104,
224,
104,
239,
104,
40,
105,
42,
105,
26,
105,
35,
105,
33,
105,
198,
104,
121,
105,
119,
105,
92,
105,
120,
105,
107,
105,
84,
105,
126,
105,
110,
105,
57,
105,
116,
105,
61,
105,
89,
105,
48,
105,
97,
105,
94,
105,
93,
105,
129,
105,
106,
105,
178,
105,
174,
105,
208,
105,
191,
105,
193,
105,
211,
105,
190,
105,
206,
105,
232,
91,
202,
105,
221,
105,
187,
105,
195,
105,
167,
105,
46,
106,
145,
105,
160,
105,
156,
105,
149,
105,
180,
105,
222,
105,
232,
105,
2,
106,
27,
106,
255,
105,
10,
107,
249,
105,
242,
105,
231,
105,
5,
106,
177,
105,
30,
106,
237,
105,
20,
106,
235,
105,
10,
106,
18,
106,
193,
106,
35,
106,
19,
106,
68,
106,
12,
106,
114,
106,
54,
106,
120,
106,
71,
106,
98,
106,
89,
106,
102,
106,
72,
106,
56,
106,
34,
106,
144,
106,
141,
106,
160,
106,
132,
106,
162,
106,
163,
106,
151,
106,
23,
134,
187,
106,
195,
106,
194,
106,
184,
106,
179,
106,
172,
106,
222,
106,
209,
106,
223,
106,
170,
106,
218,
106,
234,
106,
251,
106,
5,
107,
22,
134,
250,
106,
18,
107,
22,
107,
49,
155,
31,
107,
56,
107,
55,
107,
220,
118,
57,
107,
238,
152,
71,
107,
67,
107,
73,
107,
80,
107,
89,
107,
84,
107,
91,
107,
95,
107,
97,
107,
120,
107,
121,
107,
127,
107,
128,
107,
132,
107,
131,
107,
141,
107,
152,
107,
149,
107,
158,
107,
164,
107,
170,
107,
171,
107,
175,
107,
178,
107,
177,
107,
179,
107,
183,
107,
188,
107,
198,
107,
203,
107,
211,
107,
223,
107,
236,
107,
235,
107,
243,
107,
239,
107,
190,
158,
8,
108,
19,
108,
20,
108,
27,
108,
36,
108,
35,
108,
94,
108,
85,
108,
98,
108,
106,
108,
130,
108,
141,
108,
154,
108,
129,
108,
155,
108,
126,
108,
104,
108,
115,
108,
146,
108,
144,
108,
196,
108,
241,
108,
211,
108,
189,
108,
215,
108,
197,
108,
221,
108,
174,
108,
177,
108,
190,
108,
186,
108,
219,
108,
239,
108,
217,
108,
234,
108,
31,
109,
77,
136,
54,
109,
43,
109,
61,
109,
56,
109,
25,
109,
53,
109,
51,
109,
18,
109,
12,
109,
99,
109,
147,
109,
100,
109,
90,
109,
121,
109,
89,
109,
142,
109,
149,
109,
228,
111,
133,
109,
249,
109,
21,
110,
10,
110,
181,
109,
199,
109,
230,
109,
184,
109,
198,
109,
236,
109,
222,
109,
204,
109,
232,
109,
210,
109,
197,
109,
250,
109,
217,
109,
228,
109,
213,
109,
234,
109,
238,
109,
45,
110,
110,
110,
46,
110,
25,
110,
114,
110,
95,
110,
62,
110,
35,
110,
107,
110,
43,
110,
118,
110,
77,
110,
31,
110,
67,
110,
58,
110,
78,
110,
36,
110,
255,
110,
29,
110,
56,
110,
130,
110,
170,
110,
152,
110,
201,
110,
183,
110,
211,
110,
189,
110,
175,
110,
196,
110,
178,
110,
212,
110,
213,
110,
143,
110,
165,
110,
194,
110,
159,
110,
65,
111,
17,
111,
76,
112,
236,
110,
248,
110,
254,
110,
63,
111,
242,
110,
49,
111,
239,
110,
50,
111,
204,
110,
62,
111,
19,
111,
247,
110,
134,
111,
122,
111,
120,
111,
129,
111,
128,
111,
111,
111,
91,
111,
243,
111,
109,
111,
130,
111,
124,
111,
88,
111,
142,
111,
145,
111,
194,
111,
102,
111,
179,
111,
163,
111,
161,
111,
164,
111,
185,
111,
198,
111,
170,
111,
223,
111,
213,
111,
236,
111,
212,
111,
216,
111,
241,
111,
238,
111,
219,
111,
9,
112,
11,
112,
250,
111,
17,
112,
1,
112,
15,
112,
254,
111,
27,
112,
26,
112,
116,
111,
29,
112,
24,
112,
31,
112,
48,
112,
62,
112,
50,
112,
81,
112,
99,
112,
153,
112,
146,
112,
175,
112,
241,
112,
172,
112,
184,
112,
179,
112,
174,
112,
223,
112,
203,
112,
221,
112,
217,
112,
9,
113,
253,
112,
28,
113,
25,
113,
101,
113,
85,
113,
136,
113,
102,
113,
98,
113,
76,
113,
86,
113,
108,
113,
143,
113,
251,
113,
132,
113,
149,
113,
168,
113,
172,
113,
215,
113,
185,
113,
190,
113,
210,
113,
201,
113,
212,
113,
206,
113,
224,
113,
236,
113,
231,
113,
245,
113,
252,
113,
249,
113,
255,
113,
13,
114,
16,
114,
27,
114,
40,
114,
45,
114,
44,
114,
48,
114,
50,
114,
59,
114,
60,
114,
63,
114,
64,
114,
70,
114,
75,
114,
88,
114,
116,
114,
126,
114,
130,
114,
129,
114,
135,
114,
146,
114,
150,
114,
162,
114,
167,
114,
185,
114,
178,
114,
195,
114,
198,
114,
196,
114,
206,
114,
210,
114,
226,
114,
224,
114,
225,
114,
249,
114,
247,
114,
15,
80,
23,
115,
10,
115,
28,
115,
22,
115,
29,
115,
52,
115,
47,
115,
41,
115,
37,
115,
62,
115,
78,
115,
79,
115,
216,
158,
87,
115,
106,
115,
104,
115,
112,
115,
120,
115,
117,
115,
123,
115,
122,
115,
200,
115,
179,
115,
206,
115,
187,
115,
192,
115,
229,
115,
238,
115,
222,
115,
162,
116,
5,
116,
111,
116,
37,
116,
248,
115,
50,
116,
58,
116,
85,
116,
63,
116,
95,
116,
89,
116,
65,
116,
92,
116,
105,
116,
112,
116,
99,
116,
106,
116,
118,
116,
126,
116,
139,
116,
158,
116,
167,
116,
202,
116,
207,
116,
212,
116,
241,
115,
224,
116,
227,
116,
231,
116,
233,
116,
238,
116,
242,
116,
240,
116,
241,
116,
248,
116,
247,
116,
4,
117,
3,
117,
5,
117,
12,
117,
14,
117,
13,
117,
21,
117,
19,
117,
30,
117,
38,
117,
44,
117,
60,
117,
68,
117,
77,
117,
74,
117,
73,
117,
91,
117,
70,
117,
90,
117,
105,
117,
100,
117,
103,
117,
107,
117,
109,
117,
120,
117,
118,
117,
134,
117,
135,
117,
116,
117,
138,
117,
137,
117,
130,
117,
148,
117,
154,
117,
157,
117,
165,
117,
163,
117,
194,
117,
179,
117,
195,
117,
181,
117,
189,
117,
184,
117,
188,
117,
177,
117,
205,
117,
202,
117,
210,
117,
217,
117,
227,
117,
222,
117,
254,
117,
255,
117,
252,
117,
1,
118,
240,
117,
250,
117,
242,
117,
243,
117,
11,
118,
13,
118,
9,
118,
31,
118,
39,
118,
32,
118,
33,
118,
34,
118,
36,
118,
52,
118,
48,
118,
59,
118,
71,
118,
72,
118,
70,
118,
92,
118,
88,
118,
97,
118,
98,
118,
104,
118,
105,
118,
106,
118,
103,
118,
108,
118,
112,
118,
114,
118,
118,
118,
120,
118,
124,
118,
128,
118,
131,
118,
136,
118,
139,
118,
142,
118,
150,
118,
147,
118,
153,
118,
154,
118,
176,
118,
180,
118,
184,
118,
185,
118,
186,
118,
194,
118,
205,
118,
214,
118,
210,
118,
222,
118,
225,
118,
229,
118,
231,
118,
234,
118,
47,
134,
251,
118,
8,
119,
7,
119,
4,
119,
41,
119,
36,
119,
30,
119,
37,
119,
38,
119,
27,
119,
55,
119,
56,
119,
71,
119,
90,
119,
104,
119,
107,
119,
91,
119,
101,
119,
127,
119,
126,
119,
121,
119,
142,
119,
139,
119,
145,
119,
160,
119,
158,
119,
176,
119,
182,
119,
185,
119,
191,
119,
188,
119,
189,
119,
187,
119,
199,
119,
205,
119,
215,
119,
218,
119,
220,
119,
227,
119,
238,
119,
252,
119,
12,
120,
18,
120,
38,
121,
32,
120,
42,
121,
69,
120,
142,
120,
116,
120,
134,
120,
124,
120,
154,
120,
140,
120,
163,
120,
181,
120,
170,
120,
175,
120,
209,
120,
198,
120,
203,
120,
212,
120,
190,
120,
188,
120,
197,
120,
202,
120,
236,
120,
231,
120,
218,
120,
253,
120,
244,
120,
7,
121,
18,
121,
17,
121,
25,
121,
44,
121,
43,
121,
64,
121,
96,
121,
87,
121,
95,
121,
90,
121,
85,
121,
83,
121,
122,
121,
127,
121,
138,
121,
157,
121,
167,
121,
75,
159,
170,
121,
174,
121,
179,
121,
185,
121,
186,
121,
201,
121,
213,
121,
231,
121,
236,
121,
225,
121,
227,
121,
8,
122,
13,
122,
24,
122,
25,
122,
32,
122,
31,
122,
128,
121,
49,
122,
59,
122,
62,
122,
55,
122,
67,
122,
87,
122,
73,
122,
97,
122,
98,
122,
105,
122,
157,
159,
112,
122,
121,
122,
125,
122,
136,
122,
151,
122,
149,
122,
152,
122,
150,
122,
169,
122,
200,
122,
176,
122,
182,
122,
197,
122,
196,
122,
191,
122,
131,
144,
199,
122,
202,
122,
205,
122,
207,
122,
213,
122,
211,
122,
217,
122,
218,
122,
221,
122,
225,
122,
226,
122,
230,
122,
237,
122,
240,
122,
2,
123,
15,
123,
10,
123,
6,
123,
51,
123,
24,
123,
25,
123,
30,
123,
53,
123,
40,
123,
54,
123,
80,
123,
122,
123,
4,
123,
77,
123,
11,
123,
76,
123,
69,
123,
117,
123,
101,
123,
116,
123,
103,
123,
112,
123,
113,
123,
108,
123,
110,
123,
157,
123,
152,
123,
159,
123,
141,
123,
156,
123,
154,
123,
139,
123,
146,
123,
143,
123,
93,
123,
153,
123,
203,
123,
193,
123,
204,
123,
207,
123,
180,
123,
198,
123,
221,
123,
233,
123,
17,
124,
20,
124,
230,
123,
229,
123,
96,
124,
0,
124,
7,
124,
19,
124,
243,
123,
247,
123,
23,
124,
13,
124,
246,
123,
35,
124,
39,
124,
42,
124,
31,
124,
55,
124,
43,
124,
61,
124,
76,
124,
67,
124,
84,
124,
79,
124,
64,
124,
80,
124,
88,
124,
95,
124,
100,
124,
86,
124,
101,
124,
108,
124,
117,
124,
131,
124,
144,
124,
164,
124,
173,
124,
162,
124,
171,
124,
161,
124,
168,
124,
179,
124,
178,
124,
177,
124,
174,
124,
185,
124,
189,
124,
192,
124,
197,
124,
194,
124,
216,
124,
210,
124,
220,
124,
226,
124,
59,
155,
239,
124,
242,
124,
244,
124,
246,
124,
250,
124,
6,
125,
2,
125,
28,
125,
21,
125,
10,
125,
69,
125,
75,
125,
46,
125,
50,
125,
63,
125,
53,
125,
70,
125,
115,
125,
86,
125,
78,
125,
114,
125,
104,
125,
110,
125,
79,
125,
99,
125,
147,
125,
137,
125,
91,
125,
143,
125,
125,
125,
155,
125,
186,
125,
174,
125,
163,
125,
181,
125,
199,
125,
189,
125,
171,
125,
61,
126,
162,
125,
175,
125,
220,
125,
184,
125,
159,
125,
176,
125,
216,
125,
221,
125,
228,
125,
222,
125,
251,
125,
242,
125,
225,
125,
5,
126,
10,
126,
35,
126,
33,
126,
18,
126,
49,
126,
31,
126,
9,
126,
11,
126,
34,
126,
70,
126,
102,
126,
59,
126,
53,
126,
57,
126,
67,
126,
55,
126,
50,
126,
58,
126,
103,
126,
93,
126,
86,
126,
94,
126,
89,
126,
90,
126,
121,
126,
106,
126,
105,
126,
124,
126,
123,
126,
131,
126,
213,
125,
125,
126,
174,
143,
127,
126,
136,
126,
137,
126,
140,
126,
146,
126,
144,
126,
147,
126,
148,
126,
150,
126,
142,
126,
155,
126,
156,
126,
56,
127,
58,
127,
69,
127,
76,
127,
77,
127,
78,
127,
80,
127,
81,
127,
85,
127,
84,
127,
88,
127,
95,
127,
96,
127,
104,
127,
105,
127,
103,
127,
120,
127,
130,
127,
134,
127,
131,
127,
136,
127,
135,
127,
140,
127,
148,
127,
158,
127,
157,
127,
154,
127,
163,
127,
175,
127,
178,
127,
185,
127,
174,
127,
182,
127,
184,
127,
113,
139,
197,
127,
198,
127,
202,
127,
213,
127,
212,
127,
225,
127,
230,
127,
233,
127,
243,
127,
249,
127,
220,
152
],
'i8',
ALLOC_NONE,
Runtime.GLOBAL_BASE + 15092
);
/* memory initializer */ allocate(
[
6,
128,
4,
128,
11,
128,
18,
128,
24,
128,
25,
128,
28,
128,
33,
128,
40,
128,
63,
128,
59,
128,
74,
128,
70,
128,
82,
128,
88,
128,
90,
128,
95,
128,
98,
128,
104,
128,
115,
128,
114,
128,
112,
128,
118,
128,
121,
128,
125,
128,
127,
128,
132,
128,
134,
128,
133,
128,
155,
128,
147,
128,
154,
128,
173,
128,
144,
81,
172,
128,
219,
128,
229,
128,
217,
128,
221,
128,
196,
128,
218,
128,
214,
128,
9,
129,
239,
128,
241,
128,
27,
129,
41,
129,
35,
129,
47,
129,
75,
129,
139,
150,
70,
129,
62,
129,
83,
129,
81,
129,
252,
128,
113,
129,
110,
129,
101,
129,
102,
129,
116,
129,
131,
129,
136,
129,
138,
129,
128,
129,
130,
129,
160,
129,
149,
129,
164,
129,
163,
129,
95,
129,
147,
129,
169,
129,
176,
129,
181,
129,
190,
129,
184,
129,
189,
129,
192,
129,
194,
129,
186,
129,
201,
129,
205,
129,
209,
129,
217,
129,
216,
129,
200,
129,
218,
129,
223,
129,
224,
129,
231,
129,
250,
129,
251,
129,
254,
129,
1,
130,
2,
130,
5,
130,
7,
130,
10,
130,
13,
130,
16,
130,
22,
130,
41,
130,
43,
130,
56,
130,
51,
130,
64,
130,
89,
130,
88,
130,
93,
130,
90,
130,
95,
130,
100,
130,
98,
130,
104,
130,
106,
130,
107,
130,
46,
130,
113,
130,
119,
130,
120,
130,
126,
130,
141,
130,
146,
130,
171,
130,
159,
130,
187,
130,
172,
130,
225,
130,
227,
130,
223,
130,
210,
130,
244,
130,
243,
130,
250,
130,
147,
131,
3,
131,
251,
130,
249,
130,
222,
130,
6,
131,
220,
130,
9,
131,
217,
130,
53,
131,
52,
131,
22,
131,
50,
131,
49,
131,
64,
131,
57,
131,
80,
131,
69,
131,
47,
131,
43,
131,
23,
131,
24,
131,
133,
131,
154,
131,
170,
131,
159,
131,
162,
131,
150,
131,
35,
131,
142,
131,
135,
131,
138,
131,
124,
131,
181,
131,
115,
131,
117,
131,
160,
131,
137,
131,
168,
131,
244,
131,
19,
132,
235,
131,
206,
131,
253,
131,
3,
132,
216,
131,
11,
132,
193,
131,
247,
131,
7,
132,
224,
131,
242,
131,
13,
132,
34,
132,
32,
132,
189,
131,
56,
132,
6,
133,
251,
131,
109,
132,
42,
132,
60,
132,
90,
133,
132,
132,
119,
132,
107,
132,
173,
132,
110,
132,
130,
132,
105,
132,
70,
132,
44,
132,
111,
132,
121,
132,
53,
132,
202,
132,
98,
132,
185,
132,
191,
132,
159,
132,
217,
132,
205,
132,
187,
132,
218,
132,
208,
132,
193,
132,
198,
132,
214,
132,
161,
132,
33,
133,
255,
132,
244,
132,
23,
133,
24,
133,
44,
133,
31,
133,
21,
133,
20,
133,
252,
132,
64,
133,
99,
133,
88,
133,
72,
133,
65,
133,
2,
134,
75,
133,
85,
133,
128,
133,
164,
133,
136,
133,
145,
133,
138,
133,
168,
133,
109,
133,
148,
133,
155,
133,
234,
133,
135,
133,
156,
133,
119,
133,
126,
133,
144,
133,
201,
133,
186,
133,
207,
133,
185,
133,
208,
133,
213,
133,
221,
133,
229,
133,
220,
133,
249,
133,
10,
134,
19,
134,
11,
134,
254,
133,
250,
133,
6,
134,
34,
134,
26,
134,
48,
134,
63,
134,
77,
134,
85,
78,
84,
134,
95,
134,
103,
134,
113,
134,
147,
134,
163,
134,
169,
134,
170,
134,
139,
134,
140,
134,
182,
134,
175,
134,
196,
134,
198,
134,
176,
134,
201,
134,
35,
136,
171,
134,
212,
134,
222,
134,
233,
134,
236,
134,
223,
134,
219,
134,
239,
134,
18,
135,
6,
135,
8,
135,
0,
135,
3,
135,
251,
134,
17,
135,
9,
135,
13,
135,
249,
134,
10,
135,
52,
135,
63,
135,
55,
135,
59,
135,
37,
135,
41,
135,
26,
135,
96,
135,
95,
135,
120,
135,
76,
135,
78,
135,
116,
135,
87,
135,
104,
135,
110,
135,
89,
135,
83,
135,
99,
135,
106,
135,
5,
136,
162,
135,
159,
135,
130,
135,
175,
135,
203,
135,
189,
135,
192,
135,
208,
135,
214,
150,
171,
135,
196,
135,
179,
135,
199,
135,
198,
135,
187,
135,
239,
135,
242,
135,
224,
135,
15,
136,
13,
136,
254,
135,
246,
135,
247,
135,
14,
136,
210,
135,
17,
136,
22,
136,
21,
136,
34,
136,
33,
136,
49,
136,
54,
136,
57,
136,
39,
136,
59,
136,
68,
136,
66,
136,
82,
136,
89,
136,
94,
136,
98,
136,
107,
136,
129,
136,
126,
136,
158,
136,
117,
136,
125,
136,
181,
136,
114,
136,
130,
136,
151,
136,
146,
136,
174,
136,
153,
136,
162,
136,
141,
136,
164,
136,
176,
136,
191,
136,
177,
136,
195,
136,
196,
136,
212,
136,
216,
136,
217,
136,
221,
136,
249,
136,
2,
137,
252,
136,
244,
136,
232,
136,
242,
136,
4,
137,
12,
137,
10,
137,
19,
137,
67,
137,
30,
137,
37,
137,
42,
137,
43,
137,
65,
137,
68,
137,
59,
137,
54,
137,
56,
137,
76,
137,
29,
137,
96,
137,
94,
137,
102,
137,
100,
137,
109,
137,
106,
137,
111,
137,
116,
137,
119,
137,
126,
137,
131,
137,
136,
137,
138,
137,
147,
137,
152,
137,
161,
137,
169,
137,
166,
137,
172,
137,
175,
137,
178,
137,
186,
137,
189,
137,
191,
137,
192,
137,
218,
137,
220,
137,
221,
137,
231,
137,
244,
137,
248,
137,
3,
138,
22,
138,
16,
138,
12,
138,
27,
138,
29,
138,
37,
138,
54,
138,
65,
138,
91,
138,
82,
138,
70,
138,
72,
138,
124,
138,
109,
138,
108,
138,
98,
138,
133,
138,
130,
138,
132,
138,
168,
138,
161,
138,
145,
138,
165,
138,
166,
138,
154,
138,
163,
138,
196,
138,
205,
138,
194,
138,
218,
138,
235,
138,
243,
138,
231,
138,
228,
138,
241,
138,
20,
139,
224,
138,
226,
138,
247,
138,
222,
138,
219,
138,
12,
139,
7,
139,
26,
139,
225,
138,
22,
139,
16,
139,
23,
139,
32,
139,
51,
139,
171,
151,
38,
139,
43,
139,
62,
139,
40,
139,
65,
139,
76,
139,
79,
139,
78,
139,
73,
139,
86,
139,
91,
139,
90,
139,
107,
139,
95,
139,
108,
139,
111,
139,
116,
139,
125,
139,
128,
139,
140,
139,
142,
139,
146,
139,
147,
139,
150,
139,
153,
139,
154,
139,
58,
140,
65,
140,
63,
140,
72,
140,
76,
140,
78,
140,
80,
140,
85,
140,
98,
140,
108,
140,
120,
140,
122,
140,
130,
140,
137,
140,
133,
140,
138,
140,
141,
140,
142,
140,
148,
140,
124,
140,
152,
140,
29,
98,
173,
140,
170,
140,
189,
140,
178,
140,
179,
140,
174,
140,
182,
140,
200,
140,
193,
140,
228,
140,
227,
140,
218,
140,
253,
140,
250,
140,
251,
140,
4,
141,
5,
141,
10,
141,
7,
141,
15,
141,
13,
141,
16,
141,
78,
159,
19,
141,
205,
140,
20,
141,
22,
141,
103,
141,
109,
141,
113,
141,
115,
141,
129,
141,
153,
141,
194,
141,
190,
141,
186,
141,
207,
141,
218,
141,
214,
141,
204,
141,
219,
141,
203,
141,
234,
141,
235,
141,
223,
141,
227,
141,
252,
141,
8,
142,
9,
142,
255,
141,
29,
142,
30,
142,
16,
142,
31,
142,
66,
142,
53,
142,
48,
142,
52,
142,
74,
142,
71,
142,
73,
142,
76,
142,
80,
142,
72,
142,
89,
142,
100,
142,
96,
142,
42,
142,
99,
142,
85,
142,
118,
142,
114,
142,
124,
142,
129,
142,
135,
142,
133,
142,
132,
142,
139,
142,
138,
142,
147,
142,
145,
142,
148,
142,
153,
142,
170,
142,
161,
142,
172,
142,
176,
142,
198,
142,
177,
142,
190,
142,
197,
142,
200,
142,
203,
142,
219,
142,
227,
142,
252,
142,
251,
142,
235,
142,
254,
142,
10,
143,
5,
143,
21,
143,
18,
143,
25,
143,
19,
143,
28,
143,
31,
143,
27,
143,
12,
143,
38,
143,
51,
143,
59,
143,
57,
143,
69,
143,
66,
143,
62,
143,
76,
143,
73,
143,
70,
143,
78,
143,
87,
143,
92,
143,
98,
143,
99,
143,
100,
143,
156,
143,
159,
143,
163,
143,
173,
143,
175,
143,
183,
143,
218,
143,
229,
143,
226,
143,
234,
143,
239,
143,
135,
144,
244,
143,
5,
144,
249,
143,
250,
143,
17,
144,
21,
144,
33,
144,
13,
144,
30,
144,
22,
144,
11,
144,
39,
144,
54,
144,
53,
144,
57,
144,
248,
143,
79,
144,
80,
144,
81,
144,
82,
144,
14,
144,
73,
144,
62,
144,
86,
144,
88,
144,
94,
144,
104,
144,
111,
144,
118,
144,
168,
150,
114,
144,
130,
144,
125,
144,
129,
144,
128,
144,
138,
144,
137,
144,
143,
144,
168,
144,
175,
144,
177,
144,
181,
144,
226,
144,
228,
144,
72,
98,
219,
144,
2,
145,
18,
145,
25,
145,
50,
145,
48,
145,
74,
145,
86,
145,
88,
145,
99,
145,
101,
145,
105,
145,
115,
145,
114,
145,
139,
145,
137,
145,
130,
145,
162,
145,
171,
145,
175,
145,
170,
145,
181,
145,
180,
145,
186,
145,
192,
145,
193,
145,
201,
145,
203,
145,
208,
145,
214,
145,
223,
145,
225,
145,
219,
145,
252,
145,
245,
145,
246,
145,
30,
146,
255,
145,
20,
146,
44,
146,
21,
146,
17,
146,
94,
146,
87,
146,
69,
146,
73,
146,
100,
146,
72,
146,
149,
146,
63,
146,
75,
146,
80,
146,
156,
146,
150,
146,
147,
146,
155,
146,
90,
146,
207,
146,
185,
146,
183,
146,
233,
146,
15,
147,
250,
146,
68,
147,
46,
147,
25,
147,
34,
147,
26,
147,
35,
147,
58,
147,
53,
147,
59,
147,
92,
147,
96,
147,
124,
147,
110,
147,
86,
147,
176,
147,
172,
147,
173,
147,
148,
147,
185,
147,
214,
147,
215,
147,
232,
147,
229,
147,
216,
147,
195,
147,
221,
147,
208,
147,
200,
147,
228,
147,
26,
148,
20,
148,
19,
148,
3,
148,
7,
148,
16,
148,
54,
148,
43,
148,
53,
148,
33,
148,
58,
148,
65,
148,
82,
148,
68,
148,
91,
148,
96,
148,
98,
148,
94,
148,
106,
148,
41,
146,
112,
148,
117,
148,
119,
148,
125,
148,
90,
148,
124,
148,
126,
148,
129,
148,
127,
148,
130,
149,
135,
149,
138,
149,
148,
149,
150,
149,
152,
149,
153,
149,
160,
149,
168,
149,
167,
149,
173,
149,
188,
149,
187,
149,
185,
149,
190,
149,
202,
149,
246,
111,
195,
149,
205,
149,
204,
149,
213,
149,
212,
149,
214,
149,
220,
149,
225,
149,
229,
149,
226,
149,
33,
150,
40,
150,
46,
150,
47,
150,
66,
150,
76,
150,
79,
150,
75,
150,
119,
150,
92,
150,
94,
150,
93,
150,
95,
150,
102,
150,
114,
150,
108,
150,
141,
150,
152,
150,
149,
150,
151,
150,
170,
150,
167,
150,
177,
150,
178,
150,
176,
150,
180,
150,
182,
150,
184,
150,
185,
150,
206,
150,
203,
150,
201,
150,
205,
150,
77,
137,
220,
150,
13,
151,
213,
150,
249,
150,
4,
151,
6,
151,
8,
151,
19,
151,
14,
151,
17,
151,
15,
151,
22,
151,
25,
151,
36,
151,
42,
151,
48,
151,
57,
151,
61,
151,
62,
151,
68,
151,
70,
151,
72,
151,
66,
151,
73,
151,
92,
151,
96,
151,
100,
151,
102,
151,
104,
151,
210,
82,
107,
151,
113,
151,
121,
151,
133,
151,
124,
151,
129,
151,
122,
151,
134,
151,
139,
151,
143,
151,
144,
151,
156,
151,
168,
151,
166,
151,
163,
151,
179,
151,
180,
151,
195,
151,
198,
151,
200,
151,
203,
151,
220,
151,
237,
151,
79,
159,
242,
151,
223,
122,
246,
151,
245,
151,
15,
152,
12,
152,
56,
152,
36,
152,
33,
152,
55,
152,
61,
152,
70,
152,
79,
152,
75,
152,
107,
152,
111,
152,
112,
152,
113,
152,
116,
152,
115,
152,
170,
152,
175,
152,
177,
152,
182,
152,
196,
152,
195,
152,
198,
152,
233,
152,
235,
152,
3,
153,
9,
153,
18,
153,
20,
153,
24,
153,
33,
153,
29,
153,
30,
153,
36,
153,
32,
153,
44,
153,
46,
153,
61,
153,
62,
153,
66,
153,
73,
153,
69,
153,
80,
153,
75,
153,
81,
153,
82,
153,
76,
153,
85,
153,
151,
153,
152,
153,
165,
153,
173,
153,
174,
153,
188,
153,
223,
153,
219,
153,
221,
153,
216,
153,
209,
153,
237,
153,
238,
153,
241,
153,
242,
153,
251,
153,
248,
153,
1,
154,
15,
154,
5,
154,
226,
153,
25,
154,
43,
154,
55,
154,
69,
154,
66,
154,
64,
154,
67,
154,
62,
154,
85,
154,
77,
154,
91,
154,
87,
154,
95,
154,
98,
154,
101,
154,
100,
154,
105,
154,
107,
154,
106,
154,
173,
154,
176,
154,
188,
154,
192,
154,
207,
154,
209,
154,
211,
154,
212,
154,
222,
154,
223,
154,
226,
154,
227,
154,
230,
154,
239,
154,
235,
154,
238,
154,
244,
154,
241,
154,
247,
154,
251,
154,
6,
155,
24,
155,
26,
155,
31,
155,
34,
155,
35,
155,
37,
155,
39,
155,
40,
155,
41,
155,
42,
155,
46,
155,
47,
155,
50,
155,
68,
155,
67,
155,
79,
155,
77,
155,
78,
155,
81,
155,
88,
155,
116,
155,
147,
155,
131,
155,
145,
155,
150,
155,
151,
155,
159,
155,
160,
155,
168,
155,
180,
155,
192,
155,
202,
155,
185,
155,
198,
155,
207,
155,
209,
155,
210,
155,
227,
155,
226,
155,
228,
155,
212,
155,
225,
155,
58,
156,
242,
155,
241,
155,
240,
155,
21,
156,
20,
156,
9,
156,
19,
156,
12,
156,
6,
156,
8,
156,
18,
156,
10,
156,
4,
156,
46,
156,
27,
156,
37,
156,
36,
156,
33,
156,
48,
156,
71,
156,
50,
156,
70,
156,
62,
156,
90,
156,
96,
156,
103,
156,
118,
156,
120,
156,
231,
156,
236,
156,
240,
156,
9,
157,
8,
157,
235,
156,
3,
157,
6,
157,
42,
157,
38,
157,
175,
157,
35,
157,
31,
157,
68,
157,
21,
157,
18,
157,
65,
157,
63,
157,
62,
157,
70,
157,
72,
157,
93,
157,
94,
157,
100,
157,
81,
157,
80,
157,
89,
157,
114,
157,
137,
157,
135,
157,
171,
157,
111,
157,
122,
157,
154,
157,
164,
157,
169,
157,
178,
157,
196,
157,
193,
157,
187,
157,
184,
157,
186,
157,
198,
157,
207,
157,
194,
157,
217,
157,
211,
157,
248,
157,
230,
157,
237,
157,
239,
157,
253,
157,
26,
158,
27,
158,
30,
158,
117,
158,
121,
158,
125,
158,
129,
158,
136,
158,
139,
158,
140,
158,
146,
158,
149,
158,
145,
158,
157,
158,
165,
158,
169,
158,
184,
158,
170,
158,
173,
158,
97,
151,
204,
158,
206,
158,
207,
158,
208,
158,
212,
158,
220,
158,
222,
158,
221,
158,
224,
158,
229,
158,
232,
158,
239,
158,
244,
158,
246,
158,
247,
158,
249,
158,
251,
158,
252,
158,
253,
158,
7,
159,
8,
159,
183,
118,
21,
159,
33,
159,
44,
159,
62,
159,
74,
159,
82,
159,
84,
159,
99,
159,
95,
159,
96,
159,
97,
159,
102,
159,
103,
159,
108,
159,
106,
159,
119,
159,
114,
159,
118,
159,
149,
159,
156,
159,
160,
159,
47,
88,
199,
105,
89,
144,
100,
116,
220,
81,
153,
113,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
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,
78,
4,
78,
5,
78,
6,
78,
15,
78,
18,
78,
23,
78,
31,
78,
32,
78,
33,
78,
35,
78,
38,
78,
41,
78,
46,
78,
47,
78,
49,
78,
51,
78,
53,
78,
55,
78,
60,
78,
64,
78,
65,
78,
66,
78,
68,
78,
70,
78,
74,
78,
81,
78,
85,
78,
87,
78,
90,
78,
91,
78,
98,
78,
99,
78,
100,
78,
101,
78,
103,
78,
104,
78,
106,
78,
107,
78,
108,
78,
109,
78,
110,
78,
111,
78,
114,
78,
116,
78,
117,
78,
118,
78,
119,
78,
120,
78,
121,
78,
122,
78,
123,
78,
124,
78,
125,
78,
127,
78,
128,
78,
129,
78,
130,
78,
131,
78,
132,
78,
133,
78,
135,
78,
138,
78,
144,
78,
150,
78,
151,
78,
153,
78,
156,
78,
157,
78,
158,
78,
163,
78,
170,
78,
175,
78,
176,
78,
177,
78,
180,
78,
182,
78,
183,
78,
184,
78,
185,
78,
188,
78,
189,
78,
190,
78,
200,
78,
204,
78,
207,
78,
208,
78,
210,
78,
218,
78,
219,
78,
220,
78,
224,
78,
226,
78,
230,
78,
231,
78,
233,
78,
237,
78,
238,
78,
239,
78,
241,
78,
244,
78,
248,
78,
249,
78,
250,
78,
252,
78,
254,
78,
0,
79,
2,
79,
3,
79,
4,
79,
5,
79,
6,
79,
7,
79,
8,
79,
11,
79,
12,
79,
18,
79,
19,
79,
20,
79,
21,
79,
22,
79,
28,
79,
29,
79,
33,
79,
35,
79,
40,
79,
41,
79,
44,
79,
45,
79,
46,
79,
49,
79,
51,
79,
53,
79,
55,
79,
57,
79,
59,
79,
62,
79,
63,
79,
64,
79,
65,
79,
66,
79,
68,
79,
69,
79,
71,
79,
72,
79,
73,
79,
74,
79,
75,
79,
76,
79,
82,
79,
84,
79,
86,
79,
97,
79,
98,
79,
102,
79,
104,
79,
106,
79,
107,
79,
109,
79,
110,
79,
113,
79,
114,
79,
117,
79,
119,
79,
120,
79,
121,
79,
122,
79,
125,
79,
128,
79,
129,
79,
130,
79,
133,
79,
134,
79,
135,
79,
138,
79,
140,
79,
142,
79,
144,
79,
146,
79,
147,
79,
149,
79,
150,
79,
152,
79,
153,
79,
154,
79,
156,
79,
158,
79,
159,
79,
161,
79,
162,
79,
164,
79,
171,
79,
173,
79,
176,
79,
177,
79,
178,
79,
179,
79,
180,
79,
182,
79,
183,
79,
184,
79,
185,
79,
186,
79,
187,
79,
188,
79,
189,
79,
190,
79,
192,
79,
193,
79,
194,
79,
198,
79,
199,
79,
200,
79,
201,
79,
203,
79,
204,
79,
205,
79,
210,
79,
211,
79,
212,
79,
213,
79,
214,
79,
217,
79,
219,
79,
224,
79,
226,
79,
228,
79,
229,
79,
231,
79,
235,
79,
236,
79,
240,
79,
242,
79,
244,
79,
245,
79,
246,
79,
247,
79,
249,
79,
251,
79,
252,
79,
253,
79,
255,
79,
0,
80,
1,
80,
2,
80,
3,
80,
4,
80,
5,
80,
6,
80,
7,
80,
8,
80,
9,
80,
10,
80,
11,
80,
14,
80,
16,
80,
17,
80,
19,
80,
21,
80,
22,
80,
23,
80,
27,
80,
29,
80,
30,
80,
32,
80,
34,
80,
35,
80,
36,
80,
39,
80,
43,
80,
47,
80,
48,
80,
49,
80,
50,
80,
51,
80,
52,
80,
53,
80,
54,
80,
55,
80,
56,
80,
57,
80,
59,
80,
61,
80,
63,
80,
64,
80,
65,
80,
66,
80,
68,
80,
69,
80,
70,
80,
73,
80,
74,
80,
75,
80,
77,
80,
80,
80,
81,
80,
82,
80,
83,
80,
84,
80,
86,
80,
87,
80,
88,
80,
89,
80,
91,
80,
93,
80,
94,
80,
95,
80,
96,
80,
97,
80,
98,
80,
99,
80,
100,
80,
102,
80,
103,
80,
104,
80,
105,
80,
106,
80,
107,
80,
109,
80,
110,
80,
111,
80,
112,
80,
113,
80,
114,
80,
115,
80,
116,
80,
117,
80,
120,
80,
121,
80,
122,
80,
124,
80,
125,
80,
129,
80,
130,
80,
131,
80,
132,
80,
134,
80,
135,
80,
137,
80,
138,
80,
139,
80,
140,
80,
142,
80,
143,
80,
144,
80,
145,
80,
146,
80,
147,
80,
148,
80,
149,
80,
150,
80,
151,
80,
152,
80,
153,
80,
154,
80,
155,
80,
156,
80,
157,
80,
158,
80,
159,
80,
160,
80,
161,
80,
162,
80,
164,
80,
166,
80,
170,
80,
171,
80,
173,
80,
174,
80,
175,
80,
176,
80,
177,
80,
179,
80,
180,
80,
181,
80,
182,
80,
183,
80,
184,
80,
185,
80,
188,
80,
189,
80,
190,
80,
191,
80,
192,
80,
193,
80,
194,
80,
195,
80,
196,
80,
197,
80,
198,
80,
199,
80,
200,
80,
201,
80,
202,
80,
203,
80,
204,
80,
205,
80,
206,
80,
208,
80,
209,
80,
210,
80,
211,
80,
212,
80,
213,
80,
215,
80,
216,
80,
217,
80,
219,
80,
220,
80,
221,
80,
222,
80,
223,
80,
224,
80,
225,
80,
226,
80,
227,
80,
228,
80,
229,
80,
232,
80,
233,
80,
234,
80,
235,
80,
239,
80,
240,
80,
241,
80,
242,
80,
244,
80,
246,
80,
247,
80,
248,
80,
249,
80,
250,
80,
252,
80,
253,
80,
254,
80,
255,
80,
0,
81,
1,
81,
2,
81,
3,
81,
4,
81,
5,
81,
8,
81,
9,
81,
10,
81,
12,
81,
13,
81,
14,
81,
15,
81,
16,
81,
17,
81,
19,
81,
20,
81,
21,
81,
22,
81,
23,
81,
24,
81,
25,
81,
26,
81,
27,
81,
28,
81,
29,
81,
30,
81,
31,
81,
32,
81,
34,
81,
35,
81,
36,
81,
37,
81,
38,
81,
39,
81,
40,
81,
41,
81,
42,
81,
43,
81,
44,
81,
45,
81,
46,
81,
47,
81,
48,
81,
49,
81,
50,
81,
51,
81,
52,
81,
53,
81,
54,
81,
55,
81,
56,
81,
57,
81,
58,
81,
59,
81,
60,
81,
61,
81,
62,
81,
66,
81,
71,
81,
74,
81,
76,
81,
78,
81,
79,
81,
80,
81,
82,
81,
83,
81,
87,
81,
88,
81,
89,
81,
91,
81,
93,
81,
94,
81,
95,
81,
96,
81,
97,
81,
99,
81,
100,
81,
102,
81,
103,
81,
105,
81,
106,
81,
111,
81,
114,
81,
122,
81,
126,
81,
127,
81,
131,
81,
132,
81,
134,
81,
135,
81,
138,
81,
139,
81,
142,
81,
143,
81,
144,
81,
145,
81,
147,
81,
148,
81,
152,
81,
154,
81,
157,
81,
158,
81,
159,
81,
161,
81,
163,
81,
166,
81,
167,
81,
168,
81,
169,
81,
170,
81,
173,
81,
174,
81,
180,
81,
184,
81,
185,
81,
186,
81,
190,
81,
191,
81,
193,
81,
194,
81,
195,
81,
197,
81,
200,
81,
202,
81,
205,
81,
206,
81,
208,
81,
210,
81,
211,
81,
212,
81,
213,
81,
214,
81,
215,
81,
216,
81,
217,
81,
218,
81,
220,
81,
222,
81,
223,
81,
226,
81,
227,
81,
229,
81,
230,
81,
231,
81,
232,
81,
233,
81,
234,
81,
236,
81,
238,
81,
241,
81,
242,
81,
244,
81,
247,
81,
254,
81,
4,
82,
5,
82,
9,
82,
11,
82,
12,
82,
15,
82,
16,
82,
19,
82,
20,
82,
21,
82,
28,
82,
30,
82,
31,
82,
33,
82,
34,
82,
35,
82,
37,
82,
38,
82,
39,
82,
42,
82,
44,
82,
47,
82,
49,
82,
50,
82,
52,
82,
53,
82,
60,
82,
62,
82,
68,
82,
69,
82,
70,
82,
71,
82,
72,
82,
73,
82,
75,
82,
78,
82,
79,
82,
82,
82,
83,
82,
85,
82,
87,
82,
88,
82,
89,
82,
90,
82,
91,
82,
93,
82,
95,
82,
96,
82,
98,
82,
99,
82,
100,
82,
102,
82,
104,
82,
107,
82,
108,
82,
109,
82,
110,
82,
112,
82,
113,
82,
115,
82,
116,
82,
117,
82,
118,
82,
119,
82,
120,
82,
121,
82,
122,
82,
123,
82,
124,
82,
126,
82,
128,
82,
131,
82,
132,
82,
133,
82,
134,
82,
135,
82,
137,
82,
138,
82,
139,
82,
140,
82,
141,
82,
142,
82,
143,
82,
145,
82,
146,
82,
148,
82,
149,
82,
150,
82,
151,
82,
152,
82,
153,
82,
154,
82,
156,
82,
164,
82,
165,
82,
166,
82,
167,
82,
174,
82,
175,
82,
176,
82,
180,
82,
181,
82,
182,
82,
183,
82,
184,
82,
185,
82,
186,
82,
187,
82,
188,
82,
189,
82,
192,
82,
193,
82,
194,
82,
196,
82,
197,
82,
198,
82,
200,
82,
202,
82,
204,
82,
205,
82,
206,
82,
207,
82,
209,
82,
211,
82,
212,
82,
213,
82,
215,
82,
217,
82,
218,
82,
219,
82,
220,
82,
221,
82,
222,
82,
224,
82,
225,
82,
226,
82,
227,
82,
229,
82,
230,
82,
231,
82,
232,
82,
233,
82,
234,
82,
235,
82,
236,
82,
237,
82,
238,
82,
239,
82,
241,
82,
242,
82,
243,
82,
244,
82,
245,
82,
246,
82,
247,
82,
248,
82,
251,
82,
252,
82,
253,
82,
1,
83,
2,
83,
3,
83,
4,
83,
7,
83,
9,
83,
10,
83,
11,
83,
12,
83,
14,
83,
17,
83,
18,
83,
19,
83,
20,
83,
24,
83,
27,
83,
28,
83,
30,
83,
31,
83,
34,
83,
36,
83,
37,
83,
39,
83,
40,
83,
41,
83,
43,
83,
44,
83,
45,
83,
47,
83,
48,
83,
49,
83,
50,
83,
51,
83,
52,
83,
53,
83,
54,
83,
55,
83,
56,
83,
60,
83,
61,
83,
64,
83,
66,
83,
68,
83,
70,
83,
75,
83,
76,
83,
77,
83,
80,
83,
84,
83,
88,
83,
89,
83,
91,
83,
93,
83,
101,
83,
104,
83,
106,
83,
108,
83,
109,
83,
114,
83,
118,
83,
121,
83,
123,
83,
124,
83,
125,
83,
126,
83,
128,
83,
129,
83,
131,
83,
135,
83,
136,
83,
138,
83,
142,
83,
143,
83,
144,
83,
145,
83,
146,
83,
147,
83,
148,
83,
150,
83,
151,
83,
153,
83,
155,
83,
156,
83,
158,
83,
160,
83,
161,
83,
164,
83,
167,
83,
170,
83,
171,
83,
172,
83,
173,
83,
175,
83,
176,
83,
177,
83,
178,
83,
179,
83,
180,
83,
181,
83,
183,
83,
184,
83,
185,
83,
186,
83,
188,
83,
189,
83,
190,
83,
192,
83,
195,
83,
196,
83,
197,
83,
198,
83,
199,
83,
206,
83,
207,
83,
208,
83,
210,
83,
211,
83,
213,
83,
218,
83,
220,
83,
221,
83,
222,
83,
225,
83,
226,
83,
231,
83,
244,
83,
250,
83,
254,
83,
255,
83,
0,
84,
2,
84,
5,
84,
7,
84,
11,
84,
20,
84,
24,
84,
25,
84,
26,
84,
28,
84,
34,
84,
36,
84,
37,
84,
42,
84,
48,
84,
51,
84,
54,
84,
55,
84,
58,
84,
61,
84,
63,
84,
65,
84,
66,
84,
68,
84,
69,
84,
71,
84,
73,
84,
76,
84,
77,
84,
78,
84,
79,
84,
81,
84,
90,
84,
93,
84,
94,
84,
95,
84,
96,
84,
97,
84,
99,
84,
101,
84,
103,
84,
105,
84,
106,
84,
107,
84,
108,
84,
109,
84,
110,
84,
111,
84,
112,
84,
116,
84,
121,
84,
122,
84,
126,
84,
127,
84,
129,
84,
131,
84,
133,
84,
135,
84,
136,
84,
137,
84,
138,
84,
141,
84,
145,
84,
147,
84,
151,
84,
152,
84,
156,
84,
158,
84,
159,
84,
160,
84,
161,
84,
162,
84,
165,
84,
174,
84,
176,
84,
178,
84,
181,
84,
182,
84,
183,
84,
185,
84,
186,
84,
188,
84,
190,
84,
195,
84,
197,
84,
202,
84,
203,
84,
214,
84,
216,
84,
219,
84,
224,
84,
225,
84,
226,
84,
227,
84,
228,
84,
235,
84,
236,
84,
239,
84,
240,
84,
241,
84,
244,
84,
245,
84,
246,
84,
247,
84,
248,
84,
249,
84,
251,
84,
254,
84,
0,
85,
2,
85,
3,
85,
4,
85,
5,
85,
8,
85,
10,
85,
11,
85,
12,
85,
13,
85,
14,
85,
18,
85,
19,
85,
21,
85,
22,
85,
23,
85,
24,
85,
25,
85,
26,
85,
28,
85,
29,
85,
30,
85,
31,
85,
33,
85,
37,
85,
38,
85,
40,
85,
41,
85,
43,
85,
45,
85,
50,
85,
52,
85,
53,
85,
54,
85,
56,
85,
57,
85,
58,
85,
59,
85,
61,
85,
64,
85,
66,
85,
69,
85,
71,
85,
72,
85,
75,
85,
76,
85,
77,
85,
78,
85,
79,
85,
81,
85,
82,
85,
83,
85,
84,
85,
87,
85,
88,
85,
89,
85,
90,
85,
91,
85,
93,
85,
94,
85,
95,
85,
96,
85,
98,
85,
99,
85,
104,
85,
105,
85,
107,
85,
111,
85,
112,
85,
113,
85,
114,
85,
115,
85,
116,
85,
121,
85,
122,
85,
125,
85,
127,
85,
133,
85,
134,
85,
140,
85,
141,
85,
142,
85,
144,
85,
146,
85,
147,
85,
149,
85,
150,
85,
151,
85,
154,
85,
155,
85,
158,
85,
160,
85,
161,
85,
162,
85,
163,
85,
164,
85,
165,
85,
166,
85,
168,
85,
169,
85,
170,
85,
171,
85,
172,
85,
173,
85,
174,
85,
175,
85,
176,
85,
178,
85,
180,
85,
182,
85,
184,
85,
186,
85,
188,
85,
191,
85,
192,
85,
193,
85,
194,
85,
195,
85,
198,
85,
199,
85,
200,
85,
202,
85,
203,
85,
206,
85,
207,
85,
208,
85,
213,
85,
215,
85,
216,
85,
217,
85,
218,
85,
219,
85,
222,
85,
224,
85,
226,
85,
231,
85,
233,
85,
237,
85,
238,
85,
240,
85,
241,
85,
244,
85,
246,
85,
248,
85,
249,
85,
250,
85,
251,
85,
252,
85,
255,
85,
2,
86,
3,
86,
4,
86,
5,
86,
6,
86,
7,
86,
10,
86,
11,
86,
13,
86,
16,
86,
17,
86,
18,
86,
19,
86,
20,
86,
21,
86,
22,
86,
23,
86,
25,
86,
26,
86,
28,
86,
29,
86,
32,
86,
33,
86,
34,
86,
37,
86,
38,
86,
40,
86,
41,
86,
42,
86,
43,
86,
46,
86,
47,
86,
48,
86,
51,
86,
53,
86,
55,
86,
56,
86,
58,
86,
60,
86,
61,
86,
62,
86,
64,
86,
65,
86,
66,
86,
67,
86,
68,
86,
69,
86,
70,
86,
71,
86,
72,
86,
73,
86,
74,
86,
75,
86,
79,
86,
80,
86,
81,
86,
82,
86,
83,
86,
85,
86,
86,
86,
90,
86,
91,
86,
93,
86,
94,
86,
95,
86,
96,
86,
97,
86,
99,
86,
101,
86,
102,
86,
103,
86,
109,
86,
110,
86,
111,
86,
112,
86,
114,
86,
115,
86,
116,
86,
117,
86,
119,
86,
120,
86,
121,
86,
122,
86,
125,
86,
126,
86,
127,
86,
128,
86,
129,
86,
130,
86,
131,
86,
132,
86,
135,
86,
136,
86,
137,
86,
138,
86,
139,
86,
140,
86,
141,
86,
144,
86,
145,
86,
146,
86,
148,
86,
149,
86,
150,
86,
151,
86,
152,
86,
153,
86,
154,
86,
155,
86,
156,
86,
157,
86,
158,
86,
159,
86,
160,
86,
161,
86,
162,
86,
164,
86,
165,
86,
166,
86,
167,
86,
168,
86,
169,
86,
170,
86,
171,
86,
172,
86,
173,
86,
174,
86,
176,
86,
177,
86,
178,
86,
179,
86,
180,
86,
181,
86,
182,
86,
184,
86,
185,
86,
186,
86,
187,
86,
189,
86,
190,
86,
191,
86,
192,
86,
193,
86,
194,
86,
195,
86,
196,
86,
197,
86,
198,
86,
199,
86,
200,
86,
201,
86,
203,
86,
204,
86,
205,
86,
206,
86,
207,
86,
208,
86,
209,
86,
210,
86,
211,
86,
213,
86,
214,
86,
216,
86,
217,
86,
220,
86,
227,
86,
229,
86,
230,
86,
231,
86,
232,
86,
233,
86,
234,
86,
236,
86,
238,
86,
239,
86,
242,
86,
243,
86,
246,
86,
247,
86,
248,
86,
251,
86,
252,
86,
0,
87,
1,
87,
2,
87,
5,
87,
7,
87,
11,
87,
12,
87,
13,
87,
14,
87,
15,
87,
16,
87,
17,
87,
18,
87,
19,
87,
20,
87,
21,
87,
22,
87,
23,
87,
24,
87,
25,
87,
26,
87,
27,
87,
29,
87,
30,
87,
32,
87,
33,
87,
34,
87,
36,
87,
37,
87,
38,
87,
39,
87,
43,
87,
49,
87,
50,
87,
52,
87,
53,
87,
54,
87,
55,
87,
56,
87,
60,
87,
61,
87,
63,
87,
65,
87,
67,
87,
68,
87,
69,
87,
70,
87,
72,
87,
73,
87,
75,
87,
82,
87,
83,
87,
84,
87,
85,
87,
86,
87,
88,
87,
89,
87,
98,
87,
99,
87,
101,
87,
103,
87,
108,
87,
110,
87,
112,
87,
113,
87,
114,
87,
116,
87,
117,
87,
120,
87,
121,
87,
122,
87,
125,
87,
126,
87,
127,
87,
128,
87,
129,
87,
135,
87,
136,
87,
137,
87,
138,
87,
141,
87,
142,
87,
143,
87,
144,
87,
145,
87,
148,
87,
149,
87,
150,
87,
151,
87,
152,
87,
153,
87,
154,
87,
156,
87,
157,
87,
158,
87,
159,
87,
165,
87,
168,
87,
170,
87,
172,
87,
175,
87,
176,
87,
177,
87,
179,
87,
181,
87,
182,
87,
183,
87,
185,
87,
186,
87,
187,
87,
188,
87,
189,
87,
190,
87,
191,
87,
192,
87,
193,
87,
196,
87,
197,
87,
198,
87,
199,
87,
200,
87,
201,
87,
202,
87,
204,
87,
205,
87,
208,
87,
209,
87,
211,
87,
214,
87,
215,
87,
219,
87,
220,
87,
222,
87,
225,
87,
226,
87,
227,
87,
229,
87,
230,
87,
231,
87,
232,
87,
233,
87,
234,
87,
235,
87,
236,
87,
238,
87,
240,
87,
241,
87,
242,
87,
243,
87,
245,
87,
246,
87,
247,
87,
251,
87,
252,
87,
254,
87,
255,
87,
1,
88,
3,
88,
4,
88,
5,
88,
8,
88,
9,
88,
10,
88,
12,
88,
14,
88,
15,
88,
16,
88,
18,
88,
19,
88,
20,
88,
22,
88,
23,
88,
24,
88,
26,
88,
27,
88,
28,
88,
29,
88,
31,
88,
34,
88,
35,
88,
37,
88,
38,
88,
39,
88,
40,
88,
41,
88,
43,
88,
44,
88,
45,
88,
46,
88,
47,
88,
49,
88,
50,
88,
51,
88,
52,
88,
54,
88,
55,
88,
56,
88,
57,
88,
58,
88,
59,
88,
60,
88,
61,
88,
62,
88,
63,
88,
64,
88,
65,
88,
66,
88,
67,
88,
69,
88,
70,
88,
71,
88,
72,
88,
73,
88,
74,
88,
75,
88,
78,
88,
79,
88,
80,
88,
82,
88,
83,
88,
85,
88,
86,
88,
87,
88,
89,
88,
90,
88,
91,
88,
92,
88,
93,
88,
95,
88,
96,
88,
97,
88,
98,
88,
99,
88,
100,
88,
102,
88,
103,
88,
104,
88,
105,
88,
106,
88,
109,
88,
110,
88,
111,
88,
112,
88,
113,
88,
114,
88,
115,
88,
116,
88,
117,
88,
118,
88,
119,
88,
120,
88,
121,
88,
122,
88,
123,
88,
124,
88,
125,
88,
127,
88,
130,
88,
132,
88,
134,
88,
135,
88,
136,
88,
138,
88,
139,
88,
140,
88,
141,
88,
142,
88,
143,
88,
144,
88,
145,
88,
148,
88,
149,
88,
150,
88,
151,
88,
152,
88,
155,
88,
156,
88,
157,
88,
160,
88,
161,
88,
162,
88,
163,
88,
164,
88,
165,
88,
166,
88,
167,
88,
170,
88,
171,
88,
172,
88,
173,
88,
174,
88,
175,
88,
176,
88,
177,
88,
178,
88,
179,
88,
180,
88,
181,
88,
182,
88,
183,
88,
184,
88,
185,
88,
186,
88,
187,
88,
189,
88,
190,
88,
191,
88,
192,
88,
194,
88,
195,
88,
196,
88,
198,
88,
199,
88,
200,
88,
201,
88,
202,
88,
203,
88,
204,
88,
205,
88,
206,
88,
207,
88,
208,
88,
210,
88,
211,
88,
212,
88,
214,
88,
215,
88,
216,
88,
217,
88,
218,
88,
219,
88,
220,
88,
221,
88,
222,
88,
223,
88,
224,
88,
225,
88,
226,
88,
227,
88,
229,
88,
230,
88,
231,
88,
232,
88,
233,
88,
234,
88,
237,
88,
239,
88,
241,
88,
242,
88,
244,
88,
245,
88,
247,
88,
248,
88,
250,
88,
251,
88,
252,
88,
253,
88,
254,
88,
255,
88,
0,
89,
1,
89,
3,
89,
5,
89,
6,
89,
8,
89,
9,
89,
10,
89,
11,
89,
12,
89,
14,
89,
16,
89,
17,
89,
18,
89,
19,
89,
23,
89,
24,
89,
27,
89,
29,
89,
30,
89,
32,
89,
33,
89,
34,
89,
35,
89,
38,
89,
40,
89,
44,
89,
48,
89,
50,
89,
51,
89,
53,
89,
54,
89,
59,
89,
61,
89,
62,
89,
63,
89,
64,
89,
67,
89,
69,
89,
70,
89,
74,
89,
76,
89,
77,
89,
80,
89,
82,
89,
83,
89,
89,
89,
91,
89,
92,
89,
93,
89,
94,
89,
95,
89,
97,
89,
99,
89,
100,
89,
102,
89,
103,
89,
104,
89,
105,
89,
106,
89,
107,
89,
108,
89,
109,
89,
110,
89,
111,
89,
112,
89,
113,
89,
114,
89,
117,
89,
119,
89,
122,
89,
123,
89,
124,
89,
126,
89,
127,
89,
128,
89,
133,
89,
137,
89,
139,
89,
140,
89,
142,
89,
143,
89,
144,
89,
145,
89,
148,
89,
149,
89,
152,
89,
154,
89,
155,
89,
156,
89,
157,
89,
159,
89,
160,
89,
161,
89,
162,
89,
166,
89,
167,
89,
172,
89,
173,
89,
176,
89,
177,
89,
179,
89,
180,
89,
181,
89,
182,
89,
183,
89,
184,
89,
186,
89,
188,
89,
189,
89,
191,
89,
192,
89,
193,
89,
194,
89,
195,
89,
196,
89,
197,
89,
199,
89,
200,
89,
201,
89,
204,
89,
205,
89,
206,
89,
207,
89,
213,
89,
214,
89,
217,
89,
219,
89,
222,
89,
223,
89,
224,
89,
225,
89,
226,
89,
228,
89,
230,
89,
231,
89,
233,
89,
234,
89,
235,
89,
237,
89,
238,
89,
239,
89,
240,
89,
241,
89,
242,
89,
243,
89,
244,
89,
245,
89,
246,
89,
247,
89,
248,
89,
250,
89,
252,
89,
253,
89,
254,
89,
0,
90,
2,
90,
10,
90,
11,
90,
13,
90,
14,
90,
15,
90,
16,
90,
18,
90,
20,
90,
21,
90,
22,
90,
23,
90,
25,
90,
26,
90,
27,
90,
29,
90,
30,
90,
33,
90,
34,
90,
36,
90,
38,
90,
39,
90,
40,
90,
42,
90,
43,
90,
44,
90,
45,
90,
46,
90,
47,
90,
48,
90,
51,
90,
53,
90,
55,
90,
56,
90,
57,
90,
58,
90,
59,
90,
61,
90,
62,
90,
63,
90,
65,
90,
66,
90,
67,
90,
68,
90,
69,
90,
71,
90,
72,
90,
75,
90,
76,
90,
77,
90,
78,
90,
79,
90,
80,
90,
81,
90,
82,
90,
83,
90,
84,
90,
86,
90,
87,
90,
88,
90,
89,
90,
91,
90,
92,
90,
93,
90,
94,
90,
95,
90,
96,
90,
97,
90,
99,
90,
100,
90,
101,
90,
102,
90,
104,
90,
105,
90,
107,
90,
108,
90,
109,
90,
110,
90,
111,
90,
112,
90,
113,
90,
114,
90,
115,
90,
120,
90,
121,
90,
123,
90,
124,
90,
125,
90,
126,
90,
128,
90,
129,
90,
130,
90,
131,
90,
132,
90,
133,
90,
134,
90,
135,
90,
136,
90,
137,
90,
138,
90,
139,
90,
140,
90,
141,
90,
142,
90,
143,
90,
144,
90,
145,
90,
147,
90,
148,
90,
149,
90,
150,
90,
151,
90,
152,
90,
153,
90,
156,
90,
157,
90,
158,
90,
159,
90,
160,
90,
161,
90,
162,
90,
163,
90,
164,
90,
165,
90,
166,
90,
167,
90,
168,
90,
169,
90,
171,
90,
172,
90,
173,
90,
174,
90,
175,
90,
176,
90,
177,
90,
180,
90,
182,
90,
183,
90,
185,
90,
186,
90,
187,
90,
188,
90,
189,
90,
191,
90,
192,
90,
195,
90,
196,
90,
197,
90,
198,
90,
199,
90,
200,
90,
202,
90,
203,
90,
205,
90,
206,
90,
207,
90,
208,
90,
209,
90,
211,
90,
213,
90,
215,
90,
217,
90,
218,
90,
219,
90,
221,
90,
222,
90,
223,
90,
226,
90,
228,
90,
229,
90,
231,
90,
232,
90,
234,
90,
236,
90,
237,
90,
238,
90,
239,
90,
240,
90,
242,
90,
243,
90,
244,
90,
245,
90,
246,
90,
247,
90,
248,
90,
249,
90,
250,
90,
251,
90,
252,
90,
253,
90,
254,
90,
255,
90,
0,
91,
1,
91,
2,
91,
3,
91,
4,
91,
5,
91,
6,
91,
7,
91,
8,
91,
10,
91,
11,
91,
12,
91,
13,
91,
14,
91,
15,
91,
16,
91,
17,
91,
18,
91,
19,
91,
20,
91,
21,
91,
24,
91,
25,
91,
26,
91,
27,
91,
28,
91,
29,
91,
30,
91,
31,
91,
32,
91,
33,
91,
34,
91,
35,
91,
36,
91,
37,
91,
38,
91,
39,
91,
40,
91,
41,
91,
42,
91,
43,
91,
44,
91,
45,
91,
46,
91,
47,
91,
48,
91,
49,
91,
51,
91,
53,
91,
54,
91,
56,
91,
57,
91,
58,
91,
59,
91,
60,
91,
61,
91,
62,
91,
63,
91,
65,
91,
66,
91,
67,
91,
68,
91,
69,
91,
70,
91,
71,
91,
72,
91,
73,
91,
74,
91,
75,
91,
76,
91,
77,
91,
78,
91,
79,
91,
82,
91,
86,
91,
94,
91,
96,
91,
97,
91,
103,
91,
104,
91,
107,
91,
109,
91,
110,
91,
111,
91,
114,
91,
116,
91,
118,
91,
119,
91,
120,
91,
121,
91,
123,
91,
124,
91,
126,
91,
127,
91,
130,
91,
134,
91,
138,
91,
141,
91,
142,
91,
144,
91,
145,
91,
146,
91,
148,
91,
150,
91,
159,
91,
167,
91,
168,
91,
169,
91,
172,
91,
173,
91,
174,
91,
175,
91,
177,
91,
178,
91,
183,
91,
186,
91,
187,
91,
188,
91,
192,
91,
193,
91,
195,
91,
200,
91,
201,
91,
202,
91,
203,
91,
205,
91,
206,
91,
207,
91,
209,
91,
212,
91,
213,
91,
214,
91,
215,
91,
216,
91,
217,
91,
218,
91,
219,
91,
220,
91,
224,
91,
226,
91,
227,
91,
230,
91,
231,
91,
233,
91,
234,
91,
235,
91,
236,
91,
237,
91,
239,
91,
241,
91,
242,
91,
243,
91,
244,
91,
245,
91,
246,
91,
247,
91,
253,
91,
254,
91,
0,
92,
2,
92,
3,
92,
5,
92,
7,
92,
8,
92,
11,
92,
12,
92,
13,
92,
14,
92,
16,
92,
18,
92,
19,
92,
23,
92,
25,
92,
27,
92,
30,
92,
31,
92,
32,
92,
33,
92,
35,
92,
38,
92,
40,
92,
41,
92,
42,
92,
43,
92,
45,
92,
46,
92,
47,
92,
48,
92,
50,
92,
51,
92,
53,
92,
54,
92,
55,
92,
67,
92,
68,
92,
70,
92,
71,
92,
76,
92,
77,
92,
82,
92,
83,
92,
84,
92,
86,
92,
87,
92,
88,
92,
90,
92,
91,
92,
92,
92,
93,
92,
95,
92,
98,
92,
100,
92,
103,
92,
104,
92,
105,
92,
106,
92,
107,
92,
108,
92,
109,
92,
112,
92,
114,
92,
115,
92,
116,
92,
117,
92,
118,
92,
119,
92,
120,
92,
123,
92,
124,
92,
125,
92,
126,
92,
128,
92,
131,
92,
132,
92,
133,
92,
134,
92,
135,
92,
137,
92,
138,
92,
139,
92,
142,
92,
143,
92,
146,
92,
147,
92,
149,
92,
157,
92,
158,
92,
159,
92,
160,
92,
161,
92,
164,
92,
165,
92,
166,
92,
167,
92,
168,
92,
170,
92,
174,
92,
175,
92,
176,
92,
178,
92,
180,
92,
182,
92,
185,
92,
186,
92,
187,
92,
188,
92,
190,
92,
192,
92,
194,
92,
195,
92,
197,
92,
198,
92,
199,
92,
200,
92,
201,
92,
202,
92,
204,
92,
205,
92,
206,
92,
207,
92,
208,
92,
209,
92,
211,
92,
212,
92,
213,
92,
214,
92,
215,
92,
216,
92,
218,
92,
219,
92,
220,
92,
221,
92,
222,
92,
223,
92,
224,
92,
226,
92,
227,
92,
231,
92,
233,
92,
235,
92,
236,
92,
238,
92,
239,
92,
241,
92,
242,
92,
243,
92,
244,
92,
245,
92,
246,
92,
247,
92,
248,
92,
249,
92,
250,
92,
252,
92,
253,
92,
254,
92,
255,
92,
0,
93,
1,
93,
4,
93,
5,
93,
8,
93,
9,
93,
10,
93,
11,
93,
12,
93,
13,
93,
15,
93,
16,
93,
17,
93,
18,
93,
19,
93,
21,
93,
23,
93,
24,
93,
25,
93,
26,
93,
28,
93,
29,
93,
31,
93,
32,
93,
33,
93,
34,
93,
35,
93,
37,
93,
40,
93,
42,
93,
43,
93,
44,
93,
47,
93,
48,
93,
49,
93,
50,
93,
51,
93,
53,
93,
54,
93,
55,
93,
56,
93,
57,
93,
58,
93,
59,
93,
60,
93,
63,
93,
64,
93,
65,
93,
66,
93,
67,
93,
68,
93,
69,
93,
70,
93,
72,
93,
73,
93,
77,
93,
78,
93,
79,
93,
80,
93,
81,
93,
82,
93,
83,
93,
84,
93,
85,
93,
86,
93,
87,
93,
89,
93,
90,
93,
92,
93,
94,
93,
95,
93,
96,
93,
97,
93,
98,
93,
99,
93,
100,
93,
101,
93,
102,
93,
103,
93,
104,
93,
106,
93,
109,
93,
110,
93,
112,
93,
113,
93,
114,
93,
115,
93,
117,
93,
118,
93,
119,
93,
120,
93,
121,
93,
122,
93,
123,
93,
124,
93,
125,
93,
126,
93,
127,
93,
128,
93,
129,
93,
131,
93,
132,
93,
133,
93,
134,
93,
135,
93,
136,
93,
137,
93,
138,
93,
139,
93,
140,
93,
141,
93,
142,
93,
143,
93,
144,
93,
145,
93,
146,
93,
147,
93,
148,
93,
149,
93,
150,
93,
151,
93,
152,
93,
154,
93,
155,
93,
156,
93,
158,
93,
159,
93,
160,
93,
161,
93,
162,
93,
163,
93,
164,
93,
165,
93,
166,
93,
167,
93,
168,
93,
169,
93,
170,
93,
171,
93,
172,
93,
173,
93,
174,
93,
175,
93,
176,
93,
177,
93,
178,
93,
179,
93,
180,
93,
181,
93,
182,
93,
184,
93,
185,
93,
186,
93,
187,
93,
188,
93,
189,
93,
190,
93,
191,
93,
192,
93,
193,
93,
194,
93,
195,
93,
196,
93,
198,
93,
199,
93,
200,
93,
201,
93,
202,
93,
203,
93,
204,
93,
206,
93,
207,
93,
208,
93,
209,
93,
210,
93,
211,
93,
212,
93,
213,
93,
214,
93,
215,
93,
216,
93,
217,
93,
218,
93,
220,
93,
223,
93,
224,
93,
227,
93,
228,
93,
234,
93,
236,
93,
237,
93,
240,
93,
245,
93,
246,
93,
248,
93,
249,
93,
250,
93,
251,
93,
252,
93,
255,
93,
0,
94,
4,
94,
7,
94,
9,
94,
10,
94,
11,
94,
13,
94,
14,
94,
18,
94,
19,
94,
23,
94,
30,
94,
31,
94,
32,
94,
33,
94,
34,
94,
35,
94,
36,
94,
37,
94,
40,
94,
41,
94,
42,
94,
43,
94,
44,
94,
47,
94,
48,
94,
50,
94,
51,
94,
52,
94,
53,
94,
54,
94,
57,
94,
58,
94,
62,
94,
63,
94,
64,
94,
65,
94,
67,
94,
70,
94,
71,
94,
72,
94,
73,
94,
74,
94,
75,
94,
77,
94,
78,
94,
79,
94,
80,
94,
81,
94,
82,
94,
83,
94,
86,
94,
87,
94,
88,
94,
89,
94,
90,
94,
92,
94,
93,
94,
95,
94,
96,
94,
99,
94,
100,
94,
101,
94,
102,
94,
103,
94,
104,
94,
105,
94,
106,
94,
107,
94,
108,
94,
109,
94,
110,
94,
111,
94,
112,
94,
113,
94,
117,
94,
119,
94,
121,
94,
126,
94,
129,
94,
130,
94,
131,
94,
133,
94,
136,
94,
137,
94,
140,
94,
141,
94,
142,
94,
146,
94,
152,
94,
155,
94,
157,
94,
161,
94,
162,
94,
163,
94,
164,
94,
168,
94,
169,
94,
170,
94,
171,
94,
172,
94,
174,
94,
175,
94,
176,
94,
177,
94,
178,
94,
180,
94,
186,
94,
187,
94,
188,
94,
189,
94,
191,
94,
192,
94,
193,
94,
194,
94,
195,
94,
196,
94,
197,
94,
198,
94,
199,
94,
200,
94,
203,
94,
204,
94,
205,
94,
206,
94,
207,
94,
208,
94,
212,
94,
213,
94,
215,
94,
216,
94,
217,
94,
218,
94,
220,
94,
221,
94,
222,
94,
223,
94,
224,
94,
225,
94,
226,
94,
227,
94,
228,
94,
229,
94,
230,
94,
231,
94,
233,
94,
235,
94,
236,
94,
237,
94,
238,
94,
239,
94,
240,
94,
241,
94,
242,
94,
243,
94,
245,
94,
248,
94,
249,
94,
251,
94,
252,
94,
253,
94,
5,
95,
6,
95,
7,
95,
9,
95,
12,
95,
13,
95,
14,
95,
16,
95,
18,
95,
20,
95,
22,
95,
25,
95,
26,
95,
28,
95,
29,
95,
30,
95,
33,
95,
34,
95,
35,
95,
36,
95,
40,
95,
43,
95,
44,
95,
46,
95,
48,
95,
50,
95,
51,
95,
52,
95,
53,
95,
54,
95,
55,
95,
56,
95,
59,
95,
61,
95,
62,
95,
63,
95,
65,
95,
66,
95,
67,
95,
68,
95,
69,
95,
70,
95,
71,
95,
72,
95,
73,
95,
74,
95,
75,
95,
76,
95,
77,
95,
78,
95,
79,
95,
81,
95,
84,
95,
89,
95,
90,
95,
91,
95,
92,
95,
94,
95,
95,
95,
96,
95,
99,
95,
101,
95,
103,
95,
104,
95,
107,
95,
110,
95,
111,
95,
114,
95,
116,
95,
117,
95,
118,
95,
120,
95,
122,
95,
125,
95,
126,
95,
127,
95,
131,
95,
134,
95,
141,
95,
142,
95,
143,
95,
145,
95,
147,
95,
148,
95,
150,
95,
154,
95,
155,
95,
157,
95,
158,
95,
159,
95,
160,
95,
162,
95,
163,
95,
164,
95,
165,
95,
166,
95,
167,
95,
169,
95,
171,
95,
172,
95,
175,
95,
176,
95,
177,
95,
178,
95,
179,
95,
180,
95,
182,
95,
184,
95,
185,
95,
186,
95,
187,
95,
190,
95,
191,
95,
192,
95,
193,
95,
194,
95,
199,
95,
200,
95,
202,
95,
203,
95,
206,
95,
211,
95,
212,
95,
213,
95,
218,
95,
219,
95,
220,
95,
222,
95,
223,
95,
226,
95,
227,
95,
229,
95,
230,
95,
232,
95,
233,
95,
236,
95,
239,
95,
240,
95,
242,
95,
243,
95,
244,
95,
246,
95,
247,
95,
249,
95,
250,
95,
252,
95,
7,
96,
8,
96,
9,
96,
11,
96,
12,
96,
16,
96,
17,
96,
19,
96,
23,
96,
24,
96,
26,
96,
30,
96,
31,
96,
34,
96,
35,
96,
36,
96,
44,
96,
45,
96,
46,
96,
48,
96,
49,
96,
50,
96,
51,
96,
52,
96,
54,
96,
55,
96,
56,
96,
57,
96,
58,
96,
61,
96,
62,
96,
64,
96,
68,
96,
69,
96,
70,
96,
71,
96,
72,
96,
73,
96,
74,
96,
76,
96,
78,
96,
79,
96,
81,
96,
83,
96,
84,
96,
86,
96,
87,
96,
88,
96,
91,
96,
92,
96,
94,
96,
95,
96,
96,
96,
97,
96,
101,
96,
102,
96,
110,
96,
113,
96,
114,
96,
116,
96,
117,
96,
119,
96,
126,
96,
128,
96,
129,
96,
130,
96,
133,
96,
134,
96,
135,
96,
136,
96,
138,
96,
139,
96,
142,
96,
143,
96,
144,
96,
145,
96,
147,
96,
149,
96,
151,
96,
152,
96,
153,
96,
156,
96,
158,
96,
161,
96,
162,
96,
164,
96,
165,
96,
167,
96,
169,
96,
170,
96,
174,
96,
176,
96,
179,
96,
181,
96,
182,
96,
183,
96,
185,
96,
186,
96,
189,
96,
190,
96,
191,
96,
192,
96,
193,
96,
194,
96,
195,
96,
196,
96,
199,
96,
200,
96,
201,
96,
204,
96,
205,
96,
206,
96,
207,
96,
208,
96,
210,
96,
211,
96,
212,
96,
214,
96,
215,
96,
217,
96,
219,
96,
222,
96,
225,
96,
226,
96,
227,
96,
228,
96,
229,
96,
234,
96,
241,
96,
242,
96,
245,
96,
247,
96,
248,
96,
251,
96,
252,
96,
253,
96,
254,
96,
255,
96,
2,
97,
3,
97,
4,
97,
5,
97,
7,
97,
10,
97,
11,
97,
12,
97,
16,
97,
17,
97,
18,
97,
19,
97,
20,
97,
22,
97,
23,
97,
24,
97,
25,
97,
27,
97,
28,
97,
29,
97,
30,
97,
33,
97,
34,
97,
37,
97,
40,
97,
41,
97,
42,
97,
44,
97,
45,
97,
46,
97,
47,
97,
48,
97,
49,
97,
50,
97,
51,
97,
52,
97,
53,
97,
54,
97,
55,
97,
56,
97,
57,
97,
58,
97,
59,
97,
60,
97,
61,
97,
62,
97,
64,
97,
65,
97,
66,
97,
67,
97,
68,
97,
69,
97,
70,
97,
71,
97,
73,
97,
75,
97,
77,
97,
79,
97,
80,
97,
82,
97,
83,
97,
84,
97,
86,
97,
87,
97,
88,
97,
89,
97,
90,
97,
91,
97,
92,
97,
94,
97,
95,
97,
96,
97,
97,
97,
99,
97,
100,
97,
101,
97,
102,
97,
105,
97,
106,
97,
107,
97,
108,
97,
109,
97,
110,
97,
111,
97,
113,
97,
114,
97,
115,
97,
116,
97,
118,
97,
120,
97,
121,
97,
122,
97,
123,
97,
124,
97,
125,
97,
126,
97,
127,
97,
128,
97,
129,
97,
130,
97,
131,
97,
132,
97,
133,
97,
134,
97,
135,
97,
136,
97,
137,
97,
138,
97,
140,
97,
141,
97,
143,
97,
144,
97,
145,
97,
146,
97,
147,
97,
149,
97,
150,
97,
151,
97,
152,
97,
153,
97,
154,
97,
155,
97,
156,
97,
158,
97,
159,
97,
160,
97,
161,
97,
162,
97,
163,
97,
164,
97,
165,
97,
166,
97,
170,
97,
171,
97,
173,
97,
174,
97,
175,
97,
176,
97,
177,
97,
178,
97,
179,
97,
180,
97,
181,
97,
182,
97,
184,
97,
185,
97,
186,
97,
187,
97,
188,
97,
189,
97,
191,
97,
192,
97,
193,
97,
195,
97,
196,
97,
197,
97,
198,
97,
199,
97,
201,
97,
204,
97,
205,
97,
206,
97,
207,
97,
208,
97,
211,
97,
213,
97,
214,
97,
215,
97,
216,
97,
217,
97,
218,
97,
219,
97,
220,
97,
221,
97,
222,
97,
223,
97,
224,
97,
225,
97,
226,
97,
227,
97,
228,
97,
229,
97,
231,
97,
232,
97,
233,
97,
234,
97,
235,
97,
236,
97,
237,
97,
238,
97,
239,
97,
240,
97,
241,
97,
242,
97,
243,
97,
244,
97,
246,
97,
247,
97,
248,
97,
249,
97,
250,
97,
251,
97,
252,
97,
253,
97,
254,
97,
0,
98,
1,
98,
2,
98,
3,
98,
4,
98,
5,
98,
7,
98,
9,
98,
19,
98,
20,
98,
25,
98,
28,
98,
29,
98,
30,
98,
32,
98,
35,
98,
38,
98,
39,
98,
40,
98,
41,
98,
43,
98,
45,
98,
47,
98,
48,
98,
49,
98,
50,
98,
53,
98,
54,
98,
56,
98,
57,
98,
58,
98,
59,
98,
60,
98,
66,
98,
68,
98,
69,
98,
70,
98,
74,
98,
79,
98,
80,
98,
85,
98,
86,
98,
87,
98,
89,
98,
90,
98,
92,
98,
93,
98,
94,
98,
95,
98,
96,
98,
97,
98,
98,
98,
100,
98,
101,
98,
104,
98,
113,
98,
114,
98,
116,
98,
117,
98,
119,
98,
120,
98,
122,
98,
123,
98,
125,
98,
129,
98,
130,
98,
131,
98,
133,
98,
134,
98,
135,
98,
136,
98,
139,
98,
140,
98,
141,
98,
142,
98,
143,
98,
144,
98,
148,
98,
153,
98,
156,
98,
157,
98,
158,
98,
163,
98,
166,
98,
167,
98,
169,
98,
170,
98,
173,
98,
174,
98,
175,
98,
176,
98,
178,
98,
179,
98,
180,
98,
182,
98,
183,
98,
184,
98,
186,
98,
190,
98,
192,
98,
193,
98,
195,
98,
203,
98,
207,
98,
209,
98,
213,
98,
221,
98,
222,
98,
224,
98,
225,
98,
228,
98,
234,
98,
235,
98,
240,
98,
242,
98,
245,
98,
248,
98,
249,
98,
250,
98,
251,
98,
0,
99,
3,
99,
4,
99,
5,
99,
6,
99,
10,
99,
11,
99,
12,
99,
13,
99,
15,
99,
16,
99,
18,
99,
19,
99,
20,
99,
21,
99,
23,
99,
24,
99,
25,
99,
28,
99,
38,
99,
39,
99,
41,
99,
44,
99,
45,
99,
46,
99,
48,
99,
49,
99,
51,
99,
52,
99,
53,
99,
54,
99,
55,
99,
56,
99,
59,
99,
60,
99,
62,
99,
63,
99,
64,
99,
65,
99,
68,
99,
71,
99,
72,
99,
74,
99,
81,
99,
82,
99,
83,
99,
84,
99,
86,
99,
87,
99,
88,
99,
89,
99,
90,
99,
91,
99,
92,
99,
93,
99,
96,
99,
100,
99,
101,
99,
102,
99,
104,
99,
106,
99,
107,
99,
108,
99,
111,
99,
112,
99,
114,
99,
115,
99,
116,
99,
117,
99,
120,
99,
121,
99,
124,
99,
125,
99,
126,
99,
127,
99,
129,
99,
131,
99,
132,
99,
133,
99,
134,
99,
139,
99,
141,
99,
145,
99,
147,
99,
148,
99,
149,
99,
151,
99,
153,
99,
154,
99,
155,
99,
156,
99,
157,
99,
158,
99,
159,
99,
161,
99,
164,
99,
166,
99,
171,
99,
175,
99,
177,
99,
178,
99,
181,
99,
182,
99,
185,
99,
187,
99,
189,
99,
191,
99,
192,
99,
193,
99,
194,
99,
195,
99,
197,
99,
199,
99,
200,
99,
202,
99,
203,
99,
204,
99,
209,
99,
211,
99,
212,
99,
213,
99,
215,
99,
216,
99,
217,
99,
218,
99,
219,
99,
220,
99,
221,
99,
223,
99,
226,
99,
228,
99,
229,
99,
230,
99,
231,
99,
232,
99,
235,
99,
236,
99,
238,
99,
239,
99,
240,
99,
241,
99,
243,
99,
245,
99,
247,
99,
249,
99,
250,
99,
251,
99,
252,
99,
254,
99,
3,
100,
4,
100,
6,
100,
7,
100,
8,
100,
9,
100,
10,
100,
13,
100,
14,
100,
17,
100,
18,
100,
21,
100,
22,
100,
23,
100,
24,
100,
25,
100,
26,
100,
29,
100,
31,
100,
34,
100,
35,
100,
36,
100,
37,
100,
39,
100,
40,
100,
41,
100,
43,
100,
46,
100,
47,
100,
48,
100,
49,
100,
50,
100,
51,
100,
53,
100,
54,
100,
55,
100,
56,
100,
57,
100,
59,
100,
60,
100,
62,
100,
64,
100,
66,
100,
67,
100,
73,
100,
75,
100,
76,
100,
77,
100,
78,
100,
79,
100,
80,
100,
81,
100,
83,
100,
85,
100,
86,
100,
87,
100,
89,
100,
90,
100,
91,
100,
92,
100,
93,
100,
95,
100,
96,
100,
97,
100,
98,
100,
99,
100,
100,
100,
101,
100,
102,
100,
104,
100,
106,
100,
107,
100,
108,
100,
110,
100,
111,
100,
112,
100,
113,
100,
114,
100,
115,
100,
116,
100,
117,
100,
118,
100,
119,
100,
123,
100,
124,
100,
125,
100,
126,
100,
127,
100,
128,
100,
129,
100,
131,
100,
134,
100,
136,
100,
137,
100,
138,
100,
139,
100,
140,
100,
141,
100,
142,
100,
143,
100,
144,
100,
147,
100,
148,
100,
151,
100,
152,
100,
154,
100,
155,
100,
156,
100,
157,
100,
159,
100,
160,
100,
161,
100,
162,
100,
163,
100,
165,
100,
166,
100,
167,
100,
168,
100,
170,
100,
171,
100,
175,
100,
177,
100,
178,
100,
179,
100,
180,
100,
182,
100,
185,
100,
187,
100,
189,
100,
190,
100,
191,
100,
193,
100,
195,
100,
196,
100,
198,
100,
199,
100,
200,
100,
201,
100,
202,
100,
203,
100,
204,
100,
207,
100,
209,
100,
211,
100,
212,
100,
213,
100,
214,
100,
217,
100,
218,
100,
219,
100,
220,
100,
221,
100,
223,
100,
224,
100,
225,
100,
227,
100,
229,
100,
231,
100,
232,
100,
233,
100,
234,
100,
235,
100,
236,
100,
237,
100,
238,
100,
239,
100,
240,
100,
241,
100,
242,
100,
243,
100,
244,
100,
245,
100,
246,
100,
247,
100,
248,
100,
249,
100,
250,
100,
251,
100,
252,
100,
253,
100,
254,
100,
255,
100,
1,
101,
2,
101,
3,
101,
4,
101,
5,
101,
6,
101,
7,
101,
8,
101,
10,
101,
11,
101,
12,
101,
13,
101,
14,
101,
15,
101,
16,
101,
17,
101,
19,
101,
20,
101,
21,
101,
22,
101,
23,
101,
25,
101,
26,
101,
27,
101,
28,
101,
29,
101,
30,
101,
31,
101,
32,
101,
33,
101,
34,
101,
35,
101,
36,
101,
38,
101,
39,
101,
40,
101,
41,
101,
42,
101,
44,
101,
45,
101,
48,
101,
49,
101,
50,
101,
51,
101,
55,
101,
58,
101,
60,
101,
61,
101,
64,
101,
65,
101,
66,
101,
67,
101,
68,
101,
70,
101,
71,
101,
74,
101,
75,
101,
77,
101,
78,
101,
80,
101,
82,
101,
83,
101,
84,
101,
87,
101,
88,
101,
90,
101,
92,
101,
95,
101,
96,
101,
97,
101,
100,
101,
101,
101,
103,
101,
104,
101,
105,
101,
106,
101,
109,
101,
110,
101,
111,
101,
113,
101,
115,
101,
117,
101,
118,
101,
120,
101,
121,
101,
122,
101,
123,
101,
124,
101,
125,
101,
126,
101,
127,
101,
128,
101,
129,
101,
130,
101,
131,
101,
132,
101,
133,
101,
134,
101,
136,
101,
137,
101,
138,
101,
141,
101,
142,
101,
143,
101,
146,
101,
148,
101,
149,
101,
150,
101,
152,
101,
154,
101,
157,
101
],
'i8',
ALLOC_NONE,
Runtime.GLOBAL_BASE + 25332
);
/* memory initializer */ allocate(
[
158,
101,
160,
101,
162,
101,
163,
101,
166,
101,
168,
101,
170,
101,
172,
101,
174,
101,
177,
101,
178,
101,
179,
101,
180,
101,
181,
101,
182,
101,
183,
101,
184,
101,
186,
101,
187,
101,
190,
101,
191,
101,
192,
101,
194,
101,
199,
101,
200,
101,
201,
101,
202,
101,
205,
101,
208,
101,
209,
101,
211,
101,
212,
101,
213,
101,
216,
101,
217,
101,
218,
101,
219,
101,
220,
101,
221,
101,
222,
101,
223,
101,
225,
101,
227,
101,
228,
101,
234,
101,
235,
101,
242,
101,
243,
101,
244,
101,
245,
101,
248,
101,
249,
101,
251,
101,
252,
101,
253,
101,
254,
101,
255,
101,
1,
102,
4,
102,
5,
102,
7,
102,
8,
102,
9,
102,
11,
102,
13,
102,
16,
102,
17,
102,
18,
102,
22,
102,
23,
102,
24,
102,
26,
102,
27,
102,
28,
102,
30,
102,
33,
102,
34,
102,
35,
102,
36,
102,
38,
102,
41,
102,
42,
102,
43,
102,
44,
102,
46,
102,
48,
102,
50,
102,
51,
102,
55,
102,
56,
102,
57,
102,
58,
102,
59,
102,
61,
102,
63,
102,
64,
102,
66,
102,
68,
102,
69,
102,
70,
102,
71,
102,
72,
102,
73,
102,
74,
102,
77,
102,
78,
102,
80,
102,
81,
102,
88,
102,
89,
102,
91,
102,
92,
102,
93,
102,
94,
102,
96,
102,
98,
102,
99,
102,
101,
102,
103,
102,
105,
102,
106,
102,
107,
102,
108,
102,
109,
102,
113,
102,
114,
102,
115,
102,
117,
102,
120,
102,
121,
102,
123,
102,
124,
102,
125,
102,
127,
102,
128,
102,
129,
102,
131,
102,
133,
102,
134,
102,
136,
102,
137,
102,
138,
102,
139,
102,
141,
102,
142,
102,
143,
102,
144,
102,
146,
102,
147,
102,
148,
102,
149,
102,
152,
102,
153,
102,
154,
102,
155,
102,
156,
102,
158,
102,
159,
102,
160,
102,
161,
102,
162,
102,
163,
102,
164,
102,
165,
102,
166,
102,
169,
102,
170,
102,
171,
102,
172,
102,
173,
102,
175,
102,
176,
102,
177,
102,
178,
102,
179,
102,
181,
102,
182,
102,
183,
102,
184,
102,
186,
102,
187,
102,
188,
102,
189,
102,
191,
102,
192,
102,
193,
102,
194,
102,
195,
102,
196,
102,
197,
102,
198,
102,
199,
102,
200,
102,
201,
102,
202,
102,
203,
102,
204,
102,
205,
102,
206,
102,
207,
102,
208,
102,
209,
102,
210,
102,
211,
102,
212,
102,
213,
102,
214,
102,
215,
102,
216,
102,
218,
102,
222,
102,
223,
102,
224,
102,
225,
102,
226,
102,
227,
102,
228,
102,
229,
102,
231,
102,
232,
102,
234,
102,
235,
102,
236,
102,
237,
102,
238,
102,
239,
102,
241,
102,
245,
102,
246,
102,
248,
102,
250,
102,
251,
102,
253,
102,
1,
103,
2,
103,
3,
103,
4,
103,
5,
103,
6,
103,
7,
103,
12,
103,
14,
103,
15,
103,
17,
103,
18,
103,
19,
103,
22,
103,
24,
103,
25,
103,
26,
103,
28,
103,
30,
103,
32,
103,
33,
103,
34,
103,
35,
103,
36,
103,
37,
103,
39,
103,
41,
103,
46,
103,
48,
103,
50,
103,
51,
103,
54,
103,
55,
103,
56,
103,
57,
103,
59,
103,
60,
103,
62,
103,
63,
103,
65,
103,
68,
103,
69,
103,
71,
103,
74,
103,
75,
103,
77,
103,
82,
103,
84,
103,
85,
103,
87,
103,
88,
103,
89,
103,
90,
103,
91,
103,
93,
103,
98,
103,
99,
103,
100,
103,
102,
103,
103,
103,
107,
103,
108,
103,
110,
103,
113,
103,
116,
103,
118,
103,
120,
103,
121,
103,
122,
103,
123,
103,
125,
103,
128,
103,
130,
103,
131,
103,
133,
103,
134,
103,
136,
103,
138,
103,
140,
103,
141,
103,
142,
103,
143,
103,
145,
103,
146,
103,
147,
103,
148,
103,
150,
103,
153,
103,
155,
103,
159,
103,
160,
103,
161,
103,
164,
103,
166,
103,
169,
103,
172,
103,
174,
103,
177,
103,
178,
103,
180,
103,
185,
103,
186,
103,
187,
103,
188,
103,
189,
103,
190,
103,
191,
103,
192,
103,
194,
103,
197,
103,
198,
103,
199,
103,
200,
103,
201,
103,
202,
103,
203,
103,
204,
103,
205,
103,
206,
103,
213,
103,
214,
103,
215,
103,
219,
103,
223,
103,
225,
103,
227,
103,
228,
103,
230,
103,
231,
103,
232,
103,
234,
103,
235,
103,
237,
103,
238,
103,
242,
103,
245,
103,
246,
103,
247,
103,
248,
103,
249,
103,
250,
103,
251,
103,
252,
103,
254,
103,
1,
104,
2,
104,
3,
104,
4,
104,
6,
104,
13,
104,
16,
104,
18,
104,
20,
104,
21,
104,
24,
104,
25,
104,
26,
104,
27,
104,
28,
104,
30,
104,
31,
104,
32,
104,
34,
104,
35,
104,
36,
104,
37,
104,
38,
104,
39,
104,
40,
104,
43,
104,
44,
104,
45,
104,
46,
104,
47,
104,
48,
104,
49,
104,
52,
104,
53,
104,
54,
104,
58,
104,
59,
104,
63,
104,
71,
104,
75,
104,
77,
104,
79,
104,
82,
104,
86,
104,
87,
104,
88,
104,
89,
104,
90,
104,
91,
104,
92,
104,
93,
104,
94,
104,
95,
104,
106,
104,
108,
104,
109,
104,
110,
104,
111,
104,
112,
104,
113,
104,
114,
104,
115,
104,
117,
104,
120,
104,
121,
104,
122,
104,
123,
104,
124,
104,
125,
104,
126,
104,
127,
104,
128,
104,
130,
104,
132,
104,
135,
104,
136,
104,
137,
104,
138,
104,
139,
104,
140,
104,
141,
104,
142,
104,
144,
104,
145,
104,
146,
104,
148,
104,
149,
104,
150,
104,
152,
104,
153,
104,
154,
104,
155,
104,
156,
104,
157,
104,
158,
104,
159,
104,
160,
104,
161,
104,
163,
104,
164,
104,
165,
104,
169,
104,
170,
104,
171,
104,
172,
104,
174,
104,
177,
104,
178,
104,
180,
104,
182,
104,
183,
104,
184,
104,
185,
104,
186,
104,
187,
104,
188,
104,
189,
104,
190,
104,
191,
104,
193,
104,
195,
104,
196,
104,
197,
104,
198,
104,
199,
104,
200,
104,
202,
104,
204,
104,
206,
104,
207,
104,
208,
104,
209,
104,
211,
104,
212,
104,
214,
104,
215,
104,
217,
104,
219,
104,
220,
104,
221,
104,
222,
104,
223,
104,
225,
104,
226,
104,
228,
104,
229,
104,
230,
104,
231,
104,
232,
104,
233,
104,
234,
104,
235,
104,
236,
104,
237,
104,
239,
104,
242,
104,
243,
104,
244,
104,
246,
104,
247,
104,
248,
104,
251,
104,
253,
104,
254,
104,
255,
104,
0,
105,
2,
105,
3,
105,
4,
105,
6,
105,
7,
105,
8,
105,
9,
105,
10,
105,
12,
105,
15,
105,
17,
105,
19,
105,
20,
105,
21,
105,
22,
105,
23,
105,
24,
105,
25,
105,
26,
105,
27,
105,
28,
105,
29,
105,
30,
105,
33,
105,
34,
105,
35,
105,
37,
105,
38,
105,
39,
105,
40,
105,
41,
105,
42,
105,
43,
105,
44,
105,
46,
105,
47,
105,
49,
105,
50,
105,
51,
105,
53,
105,
54,
105,
55,
105,
56,
105,
58,
105,
59,
105,
60,
105,
62,
105,
64,
105,
65,
105,
67,
105,
68,
105,
69,
105,
70,
105,
71,
105,
72,
105,
73,
105,
74,
105,
75,
105,
76,
105,
77,
105,
78,
105,
79,
105,
80,
105,
81,
105,
82,
105,
83,
105,
85,
105,
86,
105,
88,
105,
89,
105,
91,
105,
92,
105,
95,
105,
97,
105,
98,
105,
100,
105,
101,
105,
103,
105,
104,
105,
105,
105,
106,
105,
108,
105,
109,
105,
111,
105,
112,
105,
114,
105,
115,
105,
116,
105,
117,
105,
118,
105,
122,
105,
123,
105,
125,
105,
126,
105,
127,
105,
129,
105,
131,
105,
133,
105,
138,
105,
139,
105,
140,
105,
142,
105,
143,
105,
144,
105,
145,
105,
146,
105,
147,
105,
150,
105,
151,
105,
153,
105,
154,
105,
157,
105,
158,
105,
159,
105,
160,
105,
161,
105,
162,
105,
163,
105,
164,
105,
165,
105,
166,
105,
169,
105,
170,
105,
172,
105,
174,
105,
175,
105,
176,
105,
178,
105,
179,
105,
181,
105,
182,
105,
184,
105,
185,
105,
186,
105,
188,
105,
189,
105,
190,
105,
191,
105,
192,
105,
194,
105,
195,
105,
196,
105,
197,
105,
198,
105,
199,
105,
200,
105,
201,
105,
203,
105,
205,
105,
207,
105,
209,
105,
210,
105,
211,
105,
213,
105,
214,
105,
215,
105,
216,
105,
217,
105,
218,
105,
220,
105,
221,
105,
222,
105,
225,
105,
226,
105,
227,
105,
228,
105,
229,
105,
230,
105,
231,
105,
232,
105,
233,
105,
234,
105,
235,
105,
236,
105,
238,
105,
239,
105,
240,
105,
241,
105,
243,
105,
244,
105,
245,
105,
246,
105,
247,
105,
248,
105,
249,
105,
250,
105,
251,
105,
252,
105,
254,
105,
0,
106,
1,
106,
2,
106,
3,
106,
4,
106,
5,
106,
6,
106,
7,
106,
8,
106,
9,
106,
11,
106,
12,
106,
13,
106,
14,
106,
15,
106,
16,
106,
17,
106,
18,
106,
19,
106,
20,
106,
21,
106,
22,
106,
25,
106,
26,
106,
27,
106,
28,
106,
29,
106,
30,
106,
32,
106,
34,
106,
35,
106,
36,
106,
37,
106,
38,
106,
39,
106,
41,
106,
43,
106,
44,
106,
45,
106,
46,
106,
48,
106,
50,
106,
51,
106,
52,
106,
54,
106,
55,
106,
56,
106,
57,
106,
58,
106,
59,
106,
60,
106,
63,
106,
64,
106,
65,
106,
66,
106,
67,
106,
69,
106,
70,
106,
72,
106,
73,
106,
74,
106,
75,
106,
76,
106,
77,
106,
78,
106,
79,
106,
81,
106,
82,
106,
83,
106,
84,
106,
85,
106,
86,
106,
87,
106,
90,
106,
92,
106,
93,
106,
94,
106,
95,
106,
96,
106,
98,
106,
99,
106,
100,
106,
102,
106,
103,
106,
104,
106,
105,
106,
106,
106,
107,
106,
108,
106,
109,
106,
110,
106,
111,
106,
112,
106,
114,
106,
115,
106,
116,
106,
117,
106,
118,
106,
119,
106,
120,
106,
122,
106,
123,
106,
125,
106,
126,
106,
127,
106,
129,
106,
130,
106,
131,
106,
133,
106,
134,
106,
135,
106,
136,
106,
137,
106,
138,
106,
139,
106,
140,
106,
141,
106,
143,
106,
146,
106,
147,
106,
148,
106,
149,
106,
150,
106,
152,
106,
153,
106,
154,
106,
155,
106,
156,
106,
157,
106,
158,
106,
159,
106,
161,
106,
162,
106,
163,
106,
164,
106,
165,
106,
166,
106,
167,
106,
168,
106,
170,
106,
173,
106,
174,
106,
175,
106,
176,
106,
177,
106,
178,
106,
179,
106,
180,
106,
181,
106,
182,
106,
183,
106,
184,
106,
185,
106,
186,
106,
187,
106,
188,
106,
189,
106,
190,
106,
191,
106,
192,
106,
193,
106,
194,
106,
195,
106,
196,
106,
197,
106,
198,
106,
199,
106,
200,
106,
201,
106,
202,
106,
203,
106,
204,
106,
205,
106,
206,
106,
207,
106,
208,
106,
209,
106,
210,
106,
211,
106,
212,
106,
213,
106,
214,
106,
215,
106,
216,
106,
217,
106,
218,
106,
219,
106,
220,
106,
221,
106,
222,
106,
223,
106,
224,
106,
225,
106,
226,
106,
227,
106,
228,
106,
229,
106,
230,
106,
231,
106,
232,
106,
233,
106,
234,
106,
235,
106,
236,
106,
237,
106,
238,
106,
239,
106,
240,
106,
241,
106,
242,
106,
243,
106,
244,
106,
245,
106,
246,
106,
247,
106,
248,
106,
249,
106,
250,
106,
251,
106,
252,
106,
253,
106,
254,
106,
255,
106,
0,
107,
1,
107,
2,
107,
3,
107,
4,
107,
5,
107,
6,
107,
7,
107,
8,
107,
9,
107,
10,
107,
11,
107,
12,
107,
13,
107,
14,
107,
15,
107,
16,
107,
17,
107,
18,
107,
19,
107,
20,
107,
21,
107,
22,
107,
23,
107,
24,
107,
25,
107,
26,
107,
27,
107,
28,
107,
29,
107,
30,
107,
31,
107,
37,
107,
38,
107,
40,
107,
41,
107,
42,
107,
43,
107,
44,
107,
45,
107,
46,
107,
47,
107,
48,
107,
49,
107,
51,
107,
52,
107,
53,
107,
54,
107,
56,
107,
59,
107,
60,
107,
61,
107,
63,
107,
64,
107,
65,
107,
66,
107,
68,
107,
69,
107,
72,
107,
74,
107,
75,
107,
77,
107,
78,
107,
79,
107,
80,
107,
81,
107,
82,
107,
83,
107,
84,
107,
85,
107,
86,
107,
87,
107,
88,
107,
90,
107,
91,
107,
92,
107,
93,
107,
94,
107,
95,
107,
96,
107,
97,
107,
104,
107,
105,
107,
107,
107,
108,
107,
109,
107,
110,
107,
111,
107,
112,
107,
113,
107,
114,
107,
115,
107,
116,
107,
117,
107,
118,
107,
119,
107,
120,
107,
122,
107,
125,
107,
126,
107,
127,
107,
128,
107,
133,
107,
136,
107,
140,
107,
142,
107,
143,
107,
144,
107,
145,
107,
148,
107,
149,
107,
151,
107,
152,
107,
153,
107,
156,
107,
157,
107,
158,
107,
159,
107,
160,
107,
162,
107,
163,
107,
164,
107,
165,
107,
166,
107,
167,
107,
168,
107,
169,
107,
171,
107,
172,
107,
173,
107,
174,
107,
175,
107,
176,
107,
177,
107,
178,
107,
182,
107,
184,
107,
185,
107,
186,
107,
187,
107,
188,
107,
189,
107,
190,
107,
192,
107,
195,
107,
196,
107,
198,
107,
199,
107,
200,
107,
201,
107,
202,
107,
204,
107,
206,
107,
208,
107,
209,
107,
216,
107,
218,
107,
220,
107,
221,
107,
222,
107,
223,
107,
224,
107,
226,
107,
227,
107,
228,
107,
229,
107,
230,
107,
231,
107,
232,
107,
233,
107,
236,
107,
237,
107,
238,
107,
240,
107,
241,
107,
242,
107,
244,
107,
246,
107,
247,
107,
248,
107,
250,
107,
251,
107,
252,
107,
254,
107,
255,
107,
0,
108,
1,
108,
2,
108,
3,
108,
4,
108,
8,
108,
9,
108,
10,
108,
11,
108,
12,
108,
14,
108,
18,
108,
23,
108,
28,
108,
29,
108,
30,
108,
32,
108,
35,
108,
37,
108,
43,
108,
44,
108,
45,
108,
49,
108,
51,
108,
54,
108,
55,
108,
57,
108,
58,
108,
59,
108,
60,
108,
62,
108,
63,
108,
67,
108,
68,
108,
69,
108,
72,
108,
75,
108,
76,
108,
77,
108,
78,
108,
79,
108,
81,
108,
82,
108,
83,
108,
86,
108,
88,
108,
89,
108,
90,
108,
98,
108,
99,
108,
101,
108,
102,
108,
103,
108,
107,
108,
108,
108,
109,
108,
110,
108,
111,
108,
113,
108,
115,
108,
117,
108,
119,
108,
120,
108,
122,
108,
123,
108,
124,
108,
127,
108,
128,
108,
132,
108,
135,
108,
138,
108,
139,
108,
141,
108,
142,
108,
145,
108,
146,
108,
149,
108,
150,
108,
151,
108,
152,
108,
154,
108,
156,
108,
157,
108,
158,
108,
160,
108,
162,
108,
168,
108,
172,
108,
175,
108,
176,
108,
180,
108,
181,
108,
182,
108,
183,
108,
186,
108,
192,
108,
193,
108,
194,
108,
195,
108,
198,
108,
199,
108,
200,
108,
203,
108,
205,
108,
206,
108,
207,
108,
209,
108,
210,
108,
216,
108,
217,
108,
218,
108,
220,
108,
221,
108,
223,
108,
228,
108,
230,
108,
231,
108,
233,
108,
236,
108,
237,
108,
242,
108,
244,
108,
249,
108,
255,
108,
0,
109,
2,
109,
3,
109,
5,
109,
6,
109,
8,
109,
9,
109,
10,
109,
13,
109,
15,
109,
16,
109,
17,
109,
19,
109,
20,
109,
21,
109,
22,
109,
24,
109,
28,
109,
29,
109,
31,
109,
32,
109,
33,
109,
34,
109,
35,
109,
36,
109,
38,
109,
40,
109,
41,
109,
44,
109,
45,
109,
47,
109,
48,
109,
52,
109,
54,
109,
55,
109,
56,
109,
58,
109,
63,
109,
64,
109,
66,
109,
68,
109,
73,
109,
76,
109,
80,
109,
85,
109,
86,
109,
87,
109,
88,
109,
91,
109,
93,
109,
95,
109,
97,
109,
98,
109,
100,
109,
101,
109,
103,
109,
104,
109,
107,
109,
108,
109,
109,
109,
112,
109,
113,
109,
114,
109,
115,
109,
117,
109,
118,
109,
121,
109,
122,
109,
123,
109,
125,
109,
126,
109,
127,
109,
128,
109,
129,
109,
131,
109,
132,
109,
134,
109,
135,
109,
138,
109,
139,
109,
141,
109,
143,
109,
144,
109,
146,
109,
150,
109,
151,
109,
152,
109,
153,
109,
154,
109,
156,
109,
162,
109,
165,
109,
172,
109,
173,
109,
176,
109,
177,
109,
179,
109,
180,
109,
182,
109,
183,
109,
185,
109,
186,
109,
187,
109,
188,
109,
189,
109,
190,
109,
193,
109,
194,
109,
195,
109,
200,
109,
201,
109,
202,
109,
205,
109,
206,
109,
207,
109,
208,
109,
210,
109,
211,
109,
212,
109,
213,
109,
215,
109,
218,
109,
219,
109,
220,
109,
223,
109,
226,
109,
227,
109,
229,
109,
231,
109,
232,
109,
233,
109,
234,
109,
237,
109,
239,
109,
240,
109,
242,
109,
244,
109,
245,
109,
246,
109,
248,
109,
250,
109,
253,
109,
254,
109,
255,
109,
0,
110,
1,
110,
2,
110,
3,
110,
4,
110,
6,
110,
7,
110,
8,
110,
9,
110,
11,
110,
15,
110,
18,
110,
19,
110,
21,
110,
24,
110,
25,
110,
27,
110,
28,
110,
30,
110,
31,
110,
34,
110,
38,
110,
39,
110,
40,
110,
42,
110,
44,
110,
46,
110,
48,
110,
49,
110,
51,
110,
53,
110,
54,
110,
55,
110,
57,
110,
59,
110,
60,
110,
61,
110,
62,
110,
63,
110,
64,
110,
65,
110,
66,
110,
69,
110,
70,
110,
71,
110,
72,
110,
73,
110,
74,
110,
75,
110,
76,
110,
79,
110,
80,
110,
81,
110,
82,
110,
85,
110,
87,
110,
89,
110,
90,
110,
92,
110,
93,
110,
94,
110,
96,
110,
97,
110,
98,
110,
99,
110,
100,
110,
101,
110,
102,
110,
103,
110,
104,
110,
105,
110,
106,
110,
108,
110,
109,
110,
111,
110,
112,
110,
113,
110,
114,
110,
115,
110,
116,
110,
117,
110,
118,
110,
119,
110,
120,
110,
121,
110,
122,
110,
123,
110,
124,
110,
125,
110,
128,
110,
129,
110,
130,
110,
132,
110,
135,
110,
136,
110,
138,
110,
139,
110,
140,
110,
141,
110,
142,
110,
145,
110,
146,
110,
147,
110,
148,
110,
149,
110,
150,
110,
151,
110,
153,
110,
154,
110,
155,
110,
157,
110,
158,
110,
160,
110,
161,
110,
163,
110,
164,
110,
166,
110,
168,
110,
169,
110,
171,
110,
172,
110,
173,
110,
174,
110,
176,
110,
179,
110,
181,
110,
184,
110,
185,
110,
188,
110,
190,
110,
191,
110,
192,
110,
195,
110,
196,
110,
197,
110,
198,
110,
200,
110,
201,
110,
202,
110,
204,
110,
205,
110,
206,
110,
208,
110,
210,
110,
214,
110,
216,
110,
217,
110,
219,
110,
220,
110,
221,
110,
227,
110,
231,
110,
234,
110,
235,
110,
236,
110,
237,
110,
238,
110,
239,
110,
240,
110,
241,
110,
242,
110,
243,
110,
245,
110,
246,
110,
247,
110,
248,
110,
250,
110,
251,
110,
252,
110,
253,
110,
254,
110,
255,
110,
0,
111,
1,
111,
3,
111,
4,
111,
5,
111,
7,
111,
8,
111,
10,
111,
11,
111,
12,
111,
13,
111,
14,
111,
16,
111,
17,
111,
18,
111,
22,
111,
23,
111,
24,
111,
25,
111,
26,
111,
27,
111,
28,
111,
29,
111,
30,
111,
31,
111,
33,
111,
34,
111,
35,
111,
37,
111,
38,
111,
39,
111,
40,
111,
44,
111,
46,
111,
48,
111,
50,
111,
52,
111,
53,
111,
55,
111,
56,
111,
57,
111,
58,
111,
59,
111,
60,
111,
61,
111,
63,
111,
64,
111,
65,
111,
66,
111,
67,
111,
68,
111,
69,
111,
72,
111,
73,
111,
74,
111,
76,
111,
78,
111,
79,
111,
80,
111,
81,
111,
82,
111,
83,
111,
84,
111,
85,
111,
86,
111,
87,
111,
89,
111,
90,
111,
91,
111,
93,
111,
95,
111,
96,
111,
97,
111,
99,
111,
100,
111,
101,
111,
103,
111,
104,
111,
105,
111,
106,
111,
107,
111,
108,
111,
111,
111,
112,
111,
113,
111,
115,
111,
117,
111,
118,
111,
119,
111,
121,
111,
123,
111,
125,
111,
126,
111,
127,
111,
128,
111,
129,
111,
130,
111,
131,
111,
133,
111,
134,
111,
135,
111,
138,
111,
139,
111,
143,
111,
144,
111,
145,
111,
146,
111,
147,
111,
148,
111,
149,
111,
150,
111,
151,
111,
152,
111,
153,
111,
154,
111,
155,
111,
157,
111,
158,
111,
159,
111,
160,
111,
162,
111,
163,
111,
164,
111,
165,
111,
166,
111,
168,
111,
169,
111,
170,
111,
171,
111,
172,
111,
173,
111,
174,
111,
175,
111,
176,
111,
177,
111,
178,
111,
180,
111,
181,
111,
183,
111,
184,
111,
186,
111,
187,
111,
188,
111,
189,
111,
190,
111,
191,
111,
193,
111,
195,
111,
196,
111,
197,
111,
198,
111,
199,
111,
200,
111,
202,
111,
203,
111,
204,
111,
205,
111,
206,
111,
207,
111,
208,
111,
211,
111,
212,
111,
213,
111,
214,
111,
215,
111,
216,
111,
217,
111,
218,
111,
219,
111,
220,
111,
221,
111,
223,
111,
226,
111,
227,
111,
228,
111,
229,
111,
230,
111,
231,
111,
232,
111,
233,
111,
234,
111,
235,
111,
236,
111,
237,
111,
240,
111,
241,
111,
242,
111,
243,
111,
244,
111,
245,
111,
246,
111,
247,
111,
248,
111,
249,
111,
250,
111,
251,
111,
252,
111,
253,
111,
254,
111,
255,
111,
0,
112,
1,
112,
2,
112,
3,
112,
4,
112,
5,
112,
6,
112,
7,
112,
8,
112,
9,
112,
10,
112,
11,
112,
12,
112,
13,
112,
14,
112,
15,
112,
16,
112,
18,
112,
19,
112,
20,
112,
21,
112,
22,
112,
23,
112,
24,
112,
25,
112,
28,
112,
29,
112,
30,
112,
31,
112,
32,
112,
33,
112,
34,
112,
36,
112,
37,
112,
38,
112,
39,
112,
40,
112,
41,
112,
42,
112,
43,
112,
44,
112,
45,
112,
46,
112,
47,
112,
48,
112,
49,
112,
50,
112,
51,
112,
52,
112,
54,
112,
55,
112,
56,
112,
58,
112,
59,
112,
60,
112,
61,
112,
62,
112,
63,
112,
64,
112,
65,
112,
66,
112,
67,
112,
68,
112,
69,
112,
70,
112,
71,
112,
72,
112,
73,
112,
74,
112,
75,
112,
77,
112,
78,
112,
80,
112,
81,
112,
82,
112,
83,
112,
84,
112,
85,
112,
86,
112,
87,
112,
88,
112,
89,
112,
90,
112,
91,
112,
92,
112,
93,
112,
95,
112,
96,
112,
97,
112,
98,
112,
99,
112,
100,
112,
101,
112,
102,
112,
103,
112,
104,
112,
105,
112,
106,
112,
110,
112,
113,
112,
114,
112,
115,
112,
116,
112,
119,
112,
121,
112,
122,
112,
123,
112,
125,
112,
129,
112,
130,
112,
131,
112,
132,
112,
134,
112,
135,
112,
136,
112,
139,
112,
140,
112,
141,
112,
143,
112,
144,
112,
145,
112,
147,
112,
151,
112,
152,
112,
154,
112,
155,
112,
158,
112,
159,
112,
160,
112,
161,
112,
162,
112,
163,
112,
164,
112,
165,
112,
166,
112,
167,
112,
168,
112,
169,
112,
170,
112,
176,
112,
178,
112,
180,
112,
181,
112,
182,
112,
186,
112,
190,
112,
191,
112,
196,
112,
197,
112,
198,
112,
199,
112,
201,
112,
203,
112,
204,
112,
205,
112,
206,
112,
207,
112,
208,
112,
209,
112,
210,
112,
211,
112,
212,
112,
213,
112,
214,
112,
215,
112,
218,
112,
220,
112,
221,
112,
222,
112,
224,
112,
225,
112,
226,
112,
227,
112,
229,
112,
234,
112,
238,
112,
240,
112,
241,
112,
242,
112,
243,
112,
244,
112,
245,
112,
246,
112,
248,
112,
250,
112,
251,
112,
252,
112,
254,
112,
255,
112,
0,
113,
1,
113,
2,
113,
3,
113,
4,
113,
5,
113,
6,
113,
7,
113,
8,
113,
11,
113,
12,
113,
13,
113,
14,
113,
15,
113,
17,
113,
18,
113,
20,
113,
23,
113,
27,
113,
28,
113,
29,
113,
30,
113,
31,
113,
32,
113,
33,
113,
34,
113,
35,
113,
36,
113,
37,
113,
39,
113,
40,
113,
41,
113,
42,
113,
43,
113,
44,
113,
45,
113,
46,
113,
50,
113,
51,
113,
52,
113,
53,
113,
55,
113,
56,
113,
57,
113,
58,
113,
59,
113,
60,
113,
61,
113,
62,
113,
63,
113,
64,
113,
65,
113,
66,
113,
67,
113,
68,
113,
70,
113,
71,
113,
72,
113,
73,
113,
75,
113,
77,
113,
79,
113,
80,
113,
81,
113,
82,
113,
83,
113,
84,
113,
85,
113,
86,
113,
87,
113,
88,
113,
89,
113,
90,
113,
91,
113,
93,
113,
95,
113,
96,
113,
97,
113,
98,
113,
99,
113,
101,
113,
105,
113,
106,
113,
107,
113,
108,
113,
109,
113,
111,
113,
112,
113,
113,
113,
116,
113,
117,
113,
118,
113,
119,
113,
121,
113,
123,
113,
124,
113,
126,
113,
127,
113,
128,
113,
129,
113,
130,
113,
131,
113,
133,
113,
134,
113,
135,
113,
136,
113,
137,
113,
139,
113,
140,
113,
141,
113,
142,
113,
144,
113,
145,
113,
146,
113,
147,
113,
149,
113,
150,
113,
151,
113,
154,
113,
155,
113,
156,
113,
157,
113,
158,
113,
161,
113,
162,
113,
163,
113,
164,
113,
165,
113,
166,
113,
167,
113,
169,
113,
170,
113,
171,
113,
173,
113,
174,
113,
175,
113,
176,
113,
177,
113,
178,
113,
180,
113,
182,
113,
183,
113,
184,
113,
186,
113,
187,
113,
188,
113,
189,
113,
190,
113,
191,
113,
192,
113,
193,
113,
194,
113,
196,
113,
197,
113,
198,
113,
199,
113,
200,
113,
201,
113,
202,
113,
203,
113,
204,
113,
205,
113,
207,
113,
208,
113,
209,
113,
210,
113,
211,
113,
214,
113,
215,
113,
216,
113,
217,
113,
218,
113,
219,
113,
220,
113,
221,
113,
222,
113,
223,
113,
225,
113,
226,
113,
227,
113,
228,
113,
230,
113,
232,
113,
233,
113,
234,
113,
235,
113,
236,
113,
237,
113,
239,
113,
240,
113,
241,
113,
242,
113,
243,
113,
244,
113,
245,
113,
246,
113,
247,
113,
248,
113,
250,
113,
251,
113,
252,
113,
253,
113,
254,
113,
255,
113,
0,
114,
1,
114,
2,
114,
3,
114,
4,
114,
5,
114,
7,
114,
8,
114,
9,
114,
10,
114,
11,
114,
12,
114,
13,
114,
14,
114,
15,
114,
16,
114,
17,
114,
18,
114,
19,
114,
20,
114,
21,
114,
22,
114,
23,
114,
24,
114,
25,
114,
26,
114,
27,
114,
28,
114,
30,
114,
31,
114,
32,
114,
33,
114,
34,
114,
35,
114,
36,
114,
37,
114,
38,
114,
39,
114,
41,
114,
43,
114,
45,
114,
46,
114,
47,
114,
50,
114,
51,
114,
52,
114,
58,
114,
60,
114,
62,
114,
64,
114,
65,
114,
66,
114,
67,
114,
68,
114,
69,
114,
70,
114,
73,
114,
74,
114,
75,
114,
78,
114,
79,
114,
80,
114,
81,
114,
83,
114,
84,
114,
85,
114,
87,
114,
88,
114,
90,
114,
92,
114,
94,
114,
96,
114,
99,
114,
100,
114,
101,
114,
104,
114,
106,
114,
107,
114,
108,
114,
109,
114,
112,
114,
113,
114,
115,
114,
116,
114,
118,
114,
119,
114,
120,
114,
123,
114,
124,
114,
125,
114,
130,
114,
131,
114,
133,
114,
134,
114,
135,
114,
136,
114,
137,
114,
140,
114,
142,
114,
144,
114,
145,
114,
147,
114,
148,
114,
149,
114,
150,
114,
151,
114,
152,
114,
153,
114,
154,
114,
155,
114,
156,
114,
157,
114,
158,
114,
160,
114,
161,
114,
162,
114,
163,
114,
164,
114,
165,
114,
166,
114,
167,
114,
168,
114,
169,
114,
170,
114,
171,
114,
174,
114,
177,
114,
178,
114,
179,
114,
181,
114,
186,
114,
187,
114,
188,
114,
189,
114,
190,
114,
191,
114,
192,
114,
197,
114,
198,
114,
199,
114,
201,
114,
202,
114,
203,
114,
204,
114,
207,
114,
209,
114,
211,
114,
212,
114,
213,
114,
214,
114,
216,
114,
218,
114,
219,
114,
198,
228,
199,
228,
200,
228,
201,
228,
202,
228,
203,
228,
204,
228,
205,
228,
206,
228,
207,
228,
208,
228,
209,
228,
210,
228,
211,
228,
212,
228,
213,
228,
214,
228,
215,
228,
216,
228,
217,
228,
218,
228,
219,
228,
220,
228,
221,
228,
222,
228,
223,
228,
224,
228,
225,
228,
226,
228,
227,
228,
228,
228,
229,
228,
230,
228,
231,
228,
232,
228,
233,
228,
234,
228,
235,
228,
236,
228,
237,
228,
238,
228,
239,
228,
240,
228,
241,
228,
242,
228,
243,
228,
244,
228,
245,
228,
246,
228,
247,
228,
248,
228,
249,
228,
250,
228,
251,
228,
252,
228,
253,
228,
254,
228,
255,
228,
0,
229,
1,
229,
2,
229,
3,
229,
4,
229,
5,
229,
6,
229,
7,
229,
8,
229,
9,
229,
10,
229,
11,
229,
12,
229,
13,
229,
14,
229,
15,
229,
16,
229,
17,
229,
18,
229,
19,
229,
20,
229,
21,
229,
22,
229,
23,
229,
24,
229,
25,
229,
26,
229,
27,
229,
28,
229,
29,
229,
30,
229,
31,
229,
32,
229,
33,
229,
34,
229,
35,
229,
36,
229,
37,
229,
0,
48,
1,
48,
2,
48,
183,
0,
201,
2,
199,
2,
168,
0,
3,
48,
5,
48,
20,
32,
94,
255,
22,
32,
38,
32,
24,
32,
25,
32,
28,
32,
29,
32,
20,
48,
21,
48,
8,
48,
9,
48,
10,
48,
11,
48,
12,
48,
13,
48,
14,
48,
15,
48,
22,
48,
23,
48,
16,
48,
17,
48,
177,
0,
215,
0,
247,
0,
54,
34,
39,
34,
40,
34,
17,
34,
15,
34,
42,
34,
41,
34,
8,
34,
55,
34,
26,
34,
165,
34,
37,
34,
32,
34,
18,
35,
153,
34,
43,
34,
46,
34,
97,
34,
76,
34,
72,
34,
61,
34,
29,
34,
96,
34,
110,
34,
111,
34,
100,
34,
101,
34,
30,
34,
53,
34,
52,
34,
66,
38,
64,
38,
176,
0,
50,
32,
51,
32,
3,
33,
4,
255,
164,
0,
224,
255,
225,
255,
48,
32,
167,
0,
22,
33,
6,
38,
5,
38,
203,
37,
207,
37,
206,
37,
199,
37,
198,
37,
161,
37,
160,
37,
179,
37,
178,
37,
59,
32,
146,
33,
144,
33,
145,
33,
147,
33,
19,
48,
38,
229,
39,
229,
40,
229,
41,
229,
42,
229,
43,
229,
44,
229,
45,
229,
46,
229,
47,
229,
48,
229,
49,
229,
50,
229,
51,
229,
52,
229,
53,
229,
54,
229,
55,
229,
56,
229,
57,
229,
58,
229,
59,
229,
60,
229,
61,
229,
62,
229,
63,
229,
64,
229,
65,
229,
66,
229,
67,
229,
68,
229,
69,
229,
70,
229,
71,
229,
72,
229,
73,
229,
74,
229,
75,
229,
76,
229,
77,
229,
78,
229,
79,
229,
80,
229,
81,
229,
82,
229,
83,
229,
84,
229,
85,
229,
86,
229,
87,
229,
88,
229,
89,
229,
90,
229,
91,
229,
92,
229,
93,
229,
94,
229,
95,
229,
96,
229,
97,
229,
98,
229,
99,
229,
100,
229,
101,
229,
102,
229,
103,
229,
104,
229,
105,
229,
106,
229,
107,
229,
108,
229,
109,
229,
110,
229,
111,
229,
112,
229,
113,
229,
114,
229,
115,
229,
116,
229,
117,
229,
118,
229,
119,
229,
120,
229,
121,
229,
122,
229,
123,
229,
124,
229,
125,
229,
126,
229,
127,
229,
128,
229,
129,
229,
130,
229,
131,
229,
132,
229,
133,
229,
112,
33,
113,
33,
114,
33,
115,
33,
116,
33,
117,
33,
118,
33,
119,
33,
120,
33,
121,
33,
102,
231,
103,
231,
104,
231,
105,
231,
106,
231,
107,
231,
136,
36,
137,
36,
138,
36,
139,
36,
140,
36,
141,
36,
142,
36,
143,
36,
144,
36,
145,
36,
146,
36,
147,
36,
148,
36,
149,
36,
150,
36,
151,
36,
152,
36,
153,
36,
154,
36,
155,
36,
116,
36,
117,
36,
118,
36,
119,
36,
120,
36,
121,
36,
122,
36,
123,
36,
124,
36,
125,
36,
126,
36,
127,
36,
128,
36,
129,
36,
130,
36,
131,
36,
132,
36,
133,
36,
134,
36,
135,
36,
96,
36,
97,
36,
98,
36,
99,
36,
100,
36,
101,
36,
102,
36,
103,
36,
104,
36,
105,
36,
172,
32,
109,
231,
32,
50,
33,
50,
34,
50,
35,
50,
36,
50,
37,
50,
38,
50,
39,
50,
40,
50,
41,
50,
110,
231,
111,
231,
96,
33,
97,
33,
98,
33,
99,
33,
100,
33,
101,
33,
102,
33,
103,
33,
104,
33,
105,
33,
106,
33,
107,
33,
112,
231,
113,
231,
134,
229,
135,
229,
136,
229,
137,
229,
138,
229,
139,
229,
140,
229,
141,
229,
142,
229,
143,
229,
144,
229,
145,
229,
146,
229,
147,
229,
148,
229,
149,
229,
150,
229,
151,
229,
152,
229,
153,
229,
154,
229,
155,
229,
156,
229,
157,
229,
158,
229,
159,
229,
160,
229,
161,
229,
162,
229,
163,
229,
164,
229,
165,
229,
166,
229,
167,
229,
168,
229,
169,
229,
170,
229,
171,
229,
172,
229,
173,
229,
174,
229,
175,
229,
176,
229,
177,
229,
178,
229,
179,
229,
180,
229,
181,
229,
182,
229,
183,
229,
184,
229,
185,
229,
186,
229,
187,
229,
188,
229,
189,
229,
190,
229,
191,
229,
192,
229,
193,
229,
194,
229,
195,
229,
196,
229,
197,
229,
198,
229,
199,
229,
200,
229,
201,
229,
202,
229,
203,
229,
204,
229,
205,
229,
206,
229,
207,
229,
208,
229,
209,
229,
210,
229,
211,
229,
212,
229,
213,
229,
214,
229,
215,
229,
216,
229,
217,
229,
218,
229,
219,
229,
220,
229,
221,
229,
222,
229,
223,
229,
224,
229,
225,
229,
226,
229,
227,
229,
228,
229,
229,
229,
1,
255,
2,
255,
3,
255,
229,
255,
5,
255,
6,
255,
7,
255,
8,
255,
9,
255,
10,
255,
11,
255,
12,
255,
13,
255,
14,
255,
15,
255,
16,
255,
17,
255,
18,
255,
19,
255,
20,
255,
21,
255,
22,
255,
23,
255,
24,
255,
25,
255,
26,
255,
27,
255,
28,
255,
29,
255,
30,
255,
31,
255,
32,
255,
33,
255,
34,
255,
35,
255,
36,
255,
37,
255,
38,
255,
39,
255,
40,
255,
41,
255,
42,
255,
43,
255,
44,
255,
45,
255,
46,
255,
47,
255,
48,
255,
49,
255,
50,
255,
51,
255,
52,
255,
53,
255,
54,
255,
55,
255,
56,
255,
57,
255,
58,
255,
59,
255,
60,
255,
61,
255,
62,
255,
63,
255,
64,
255,
65,
255,
66,
255,
67,
255,
68,
255,
69,
255,
70,
255,
71,
255,
72,
255,
73,
255,
74,
255,
75,
255,
76,
255,
77,
255,
78,
255,
79,
255,
80,
255,
81,
255,
82,
255,
83,
255,
84,
255,
85,
255,
86,
255,
87,
255,
88,
255,
89,
255,
90,
255,
91,
255,
92,
255,
93,
255,
227,
255,
230,
229,
231,
229,
232,
229,
233,
229,
234,
229,
235,
229,
236,
229,
237,
229,
238,
229,
239,
229,
240,
229,
241,
229,
242,
229,
243,
229,
244,
229,
245,
229,
246,
229,
247,
229,
248,
229,
249,
229,
250,
229,
251,
229,
252,
229,
253,
229,
254,
229,
255,
229,
0,
230,
1,
230,
2,
230,
3,
230,
4,
230,
5,
230,
6,
230,
7,
230,
8,
230,
9,
230,
10,
230,
11,
230,
12,
230,
13,
230,
14,
230,
15,
230,
16,
230,
17,
230,
18,
230,
19,
230,
20,
230,
21,
230,
22,
230,
23,
230,
24,
230,
25,
230,
26,
230,
27,
230,
28,
230,
29,
230,
30,
230,
31,
230,
32,
230,
33,
230,
34,
230,
35,
230,
36,
230,
37,
230,
38,
230,
39,
230,
40,
230,
41,
230,
42,
230,
43,
230,
44,
230,
45,
230,
46,
230,
47,
230,
48,
230,
49,
230,
50,
230,
51,
230,
52,
230,
53,
230,
54,
230,
55,
230,
56,
230,
57,
230,
58,
230,
59,
230,
60,
230,
61,
230,
62,
230,
63,
230,
64,
230,
65,
230,
66,
230,
67,
230,
68,
230,
69,
230,
65,
48,
66,
48,
67,
48,
68,
48,
69,
48,
70,
48,
71,
48,
72,
48,
73,
48,
74,
48,
75,
48,
76,
48,
77,
48,
78,
48,
79,
48,
80,
48,
81,
48,
82,
48,
83,
48,
84,
48,
85,
48,
86,
48,
87,
48,
88,
48,
89,
48,
90,
48,
91,
48,
92,
48,
93,
48,
94,
48,
95,
48,
96,
48,
97,
48,
98,
48,
99,
48,
100,
48,
101,
48,
102,
48,
103,
48,
104,
48,
105,
48,
106,
48,
107,
48,
108,
48,
109,
48,
110,
48,
111,
48,
112,
48,
113,
48,
114,
48,
115,
48,
116,
48,
117,
48,
118,
48,
119,
48,
120,
48,
121,
48,
122,
48,
123,
48,
124,
48,
125,
48,
126,
48,
127,
48,
128,
48,
129,
48,
130,
48,
131,
48,
132,
48,
133,
48,
134,
48,
135,
48,
136,
48,
137,
48,
138,
48,
139,
48,
140,
48,
141,
48,
142,
48,
143,
48,
144,
48,
145,
48,
146,
48,
147,
48,
114,
231,
115,
231,
116,
231,
117,
231,
118,
231,
119,
231,
120,
231,
121,
231,
122,
231,
123,
231,
124,
231,
70,
230,
71,
230,
72,
230,
73,
230,
74,
230,
75,
230,
76,
230,
77,
230,
78,
230,
79,
230,
80,
230,
81,
230,
82,
230,
83,
230,
84,
230,
85,
230,
86,
230,
87,
230,
88,
230,
89,
230,
90,
230,
91,
230,
92,
230,
93,
230,
94,
230,
95,
230,
96,
230,
97,
230,
98,
230,
99,
230,
100,
230,
101,
230,
102,
230,
103,
230,
104,
230,
105,
230,
106,
230,
107,
230,
108,
230,
109,
230,
110,
230,
111,
230,
112,
230,
113,
230,
114,
230,
115,
230,
116,
230,
117,
230,
118,
230,
119,
230,
120,
230,
121,
230,
122,
230,
123,
230,
124,
230,
125,
230,
126,
230,
127,
230,
128,
230,
129,
230,
130,
230,
131,
230,
132,
230,
133,
230,
134,
230,
135,
230,
136,
230,
137,
230,
138,
230,
139,
230,
140,
230,
141,
230,
142,
230,
143,
230,
144,
230,
145,
230,
146,
230,
147,
230,
148,
230,
149,
230,
150,
230,
151,
230,
152,
230,
153,
230,
154,
230,
155,
230,
156,
230,
157,
230,
158,
230,
159,
230,
160,
230,
161,
230,
162,
230,
163,
230,
164,
230,
165,
230,
161,
48,
162,
48,
163,
48,
164,
48,
165,
48,
166,
48,
167,
48,
168,
48,
169,
48,
170,
48,
171,
48,
172,
48,
173,
48,
174,
48,
175,
48,
176,
48,
177,
48,
178,
48,
179,
48,
180,
48,
181,
48,
182,
48,
183,
48,
184,
48,
185,
48,
186,
48,
187,
48,
188,
48,
189,
48,
190,
48,
191,
48,
192,
48,
193,
48,
194,
48,
195,
48,
196,
48,
197,
48,
198,
48,
199,
48,
200,
48,
201,
48,
202,
48,
203,
48,
204,
48,
205,
48,
206,
48,
207,
48,
208,
48,
209,
48,
210,
48,
211,
48,
212,
48,
213,
48,
214,
48,
215,
48,
216,
48,
217,
48,
218,
48,
219,
48,
220,
48,
221,
48,
222,
48,
223,
48,
224,
48,
225,
48,
226,
48,
227,
48,
228,
48,
229,
48,
230,
48,
231,
48,
232,
48,
233,
48,
234,
48,
235,
48,
236,
48,
237,
48,
238,
48,
239,
48,
240,
48,
241,
48,
242,
48,
243,
48,
244,
48,
245,
48,
246,
48,
125,
231,
126,
231,
127,
231,
128,
231,
129,
231,
130,
231,
131,
231,
132,
231,
166,
230,
167,
230,
168,
230,
169,
230,
170,
230,
171,
230,
172,
230,
173,
230,
174,
230,
175,
230,
176,
230,
177,
230,
178,
230,
179,
230,
180,
230,
181,
230,
182,
230,
183,
230,
184,
230,
185,
230,
186,
230,
187,
230,
188,
230,
189,
230,
190,
230,
191,
230,
192,
230,
193,
230,
194,
230,
195,
230,
196,
230,
197,
230,
198,
230,
199,
230,
200,
230,
201,
230,
202,
230,
203,
230,
204,
230,
205,
230,
206,
230,
207,
230,
208,
230,
209,
230,
210,
230,
211,
230,
212,
230,
213,
230,
214,
230,
215,
230,
216,
230,
217,
230,
218,
230,
219,
230,
220,
230,
221,
230,
222,
230,
223,
230,
224,
230,
225,
230,
226,
230,
227,
230,
228,
230,
229,
230,
230,
230,
231,
230,
232,
230,
233,
230,
234,
230,
235,
230,
236,
230,
237,
230,
238,
230,
239,
230,
240,
230,
241,
230,
242,
230,
243,
230,
244,
230,
245,
230,
246,
230,
247,
230,
248,
230,
249,
230,
250,
230,
251,
230,
252,
230,
253,
230,
254,
230,
255,
230,
0,
231,
1,
231,
2,
231,
3,
231,
4,
231,
5,
231,
145,
3,
146,
3,
147,
3,
148,
3,
149,
3,
150,
3,
151,
3,
152,
3,
153,
3,
154,
3,
155,
3,
156,
3,
157,
3,
158,
3,
159,
3,
160,
3,
161,
3,
163,
3,
164,
3,
165,
3,
166,
3,
167,
3,
168,
3,
169,
3,
133,
231,
134,
231,
135,
231,
136,
231,
137,
231,
138,
231,
139,
231,
140,
231,
177,
3,
178,
3,
179,
3,
180,
3,
181,
3,
182,
3,
183,
3,
184,
3,
185,
3,
186,
3,
187,
3,
188,
3,
189,
3,
190,
3,
191,
3,
192,
3,
193,
3,
195,
3,
196,
3,
197,
3,
198,
3,
199,
3,
200,
3,
201,
3,
141,
231,
142,
231,
143,
231,
144,
231,
145,
231,
146,
231,
147,
231,
53,
254,
54,
254,
57,
254,
58,
254,
63,
254,
64,
254,
61,
254,
62,
254,
65,
254,
66,
254,
67,
254,
68,
254,
148,
231,
149,
231,
59,
254,
60,
254,
55,
254,
56,
254,
49,
254,
150,
231,
51,
254,
52,
254,
151,
231,
152,
231,
153,
231,
154,
231,
155,
231,
156,
231,
157,
231,
158,
231,
159,
231,
6,
231,
7,
231,
8,
231,
9,
231,
10,
231,
11,
231,
12,
231,
13,
231,
14,
231,
15,
231,
16,
231,
17,
231,
18,
231,
19,
231,
20,
231,
21,
231,
22,
231,
23,
231,
24,
231,
25,
231,
26,
231,
27,
231,
28,
231,
29,
231,
30,
231,
31,
231,
32,
231,
33,
231,
34,
231,
35,
231,
36,
231,
37,
231,
38,
231,
39,
231,
40,
231,
41,
231,
42,
231,
43,
231,
44,
231,
45,
231,
46,
231,
47,
231,
48,
231,
49,
231,
50,
231,
51,
231,
52,
231,
53,
231,
54,
231,
55,
231,
56,
231,
57,
231,
58,
231,
59,
231,
60,
231,
61,
231,
62,
231,
63,
231,
64,
231,
65,
231,
66,
231,
67,
231,
68,
231,
69,
231,
70,
231,
71,
231,
72,
231,
73,
231,
74,
231,
75,
231,
76,
231,
77,
231,
78,
231,
79,
231,
80,
231,
81,
231,
82,
231,
83,
231,
84,
231,
85,
231,
86,
231,
87,
231,
88,
231,
89,
231,
90,
231,
91,
231,
92,
231,
93,
231,
94,
231,
95,
231,
96,
231,
97,
231,
98,
231,
99,
231,
100,
231,
101,
231,
16,
4,
17,
4,
18,
4,
19,
4,
20,
4,
21,
4,
1,
4,
22,
4,
23,
4,
24,
4,
25,
4,
26,
4,
27,
4,
28,
4,
29,
4,
30,
4,
31,
4,
32,
4,
33,
4,
34,
4,
35,
4,
36,
4,
37,
4,
38,
4,
39,
4,
40,
4,
41,
4,
42,
4,
43,
4,
44,
4,
45,
4,
46,
4,
47,
4,
160,
231,
161,
231,
162,
231,
163,
231,
164,
231,
165,
231,
166,
231,
167,
231,
168,
231,
169,
231,
170,
231,
171,
231,
172,
231,
173,
231,
174,
231,
48,
4,
49,
4,
50,
4,
51,
4,
52,
4,
53,
4,
81,
4,
54,
4,
55,
4,
56,
4,
57,
4,
58,
4,
59,
4,
60,
4,
61,
4,
62,
4,
63,
4,
64,
4,
65,
4,
66,
4,
67,
4,
68,
4,
69,
4,
70,
4,
71,
4,
72,
4,
73,
4,
74,
4,
75,
4,
76,
4,
77,
4,
78,
4,
79,
4,
175,
231,
176,
231,
177,
231,
178,
231,
179,
231,
180,
231,
181,
231,
182,
231,
183,
231,
184,
231,
185,
231,
186,
231,
187,
231,
202,
2,
203,
2,
217,
2,
19,
32,
21,
32,
37,
32,
53,
32,
5,
33,
9,
33,
150,
33,
151,
33,
152,
33,
153,
33,
21,
34,
31,
34,
35,
34,
82,
34,
102,
34,
103,
34,
191,
34,
80,
37,
81,
37,
82,
37,
83,
37,
84,
37,
85,
37,
86,
37,
87,
37,
88,
37,
89,
37,
90,
37,
91,
37,
92,
37,
93,
37,
94,
37,
95,
37,
96,
37,
97,
37,
98,
37,
99,
37,
100,
37,
101,
37,
102,
37,
103,
37,
104,
37,
105,
37,
106,
37,
107,
37,
108,
37,
109,
37,
110,
37,
111,
37,
112,
37,
113,
37,
114,
37,
115,
37,
129,
37,
130,
37,
131,
37,
132,
37,
133,
37,
134,
37,
135,
37,
136,
37,
137,
37,
138,
37,
139,
37,
140,
37,
141,
37,
142,
37,
143,
37,
147,
37,
148,
37,
149,
37,
188,
37,
189,
37,
226,
37,
227,
37,
228,
37,
229,
37,
9,
38,
149,
34,
18,
48,
29,
48,
30,
48,
188,
231,
189,
231,
190,
231,
191,
231,
192,
231,
193,
231,
194,
231,
195,
231,
196,
231,
197,
231,
198,
231,
1,
1,
225,
0,
206,
1,
224,
0,
19,
1,
233,
0,
27,
1,
232,
0,
43,
1,
237,
0,
208,
1,
236,
0,
77,
1,
243,
0,
210,
1,
242,
0,
107,
1,
250,
0,
212,
1,
249,
0,
214,
1,
216,
1,
218,
1,
220,
1,
252,
0,
234,
0,
81,
2,
199,
231,
68,
1,
72,
1,
249,
1,
97,
2,
201,
231,
202,
231,
203,
231,
204,
231,
5,
49,
6,
49,
7,
49,
8,
49,
9,
49,
10,
49,
11,
49,
12,
49,
13,
49,
14,
49,
15,
49,
16,
49,
17,
49,
18,
49,
19,
49,
20,
49,
21,
49,
22,
49,
23,
49,
24,
49,
25,
49,
26,
49,
27,
49,
28,
49,
29,
49,
30,
49,
31,
49,
32,
49,
33,
49,
34,
49,
35,
49,
36,
49,
37,
49,
38,
49,
39,
49,
40,
49,
41,
49,
205,
231,
206,
231,
207,
231,
208,
231,
209,
231,
210,
231,
211,
231,
212,
231,
213,
231,
214,
231,
215,
231,
216,
231,
217,
231,
218,
231,
219,
231,
220,
231,
221,
231,
222,
231,
223,
231,
224,
231,
225,
231,
33,
48,
34,
48,
35,
48,
36,
48,
37,
48,
38,
48,
39,
48,
40,
48,
41,
48,
163,
50,
142,
51,
143,
51,
156,
51,
157,
51,
158,
51,
161,
51,
196,
51,
206,
51,
209,
51,
210,
51,
213,
51,
48,
254,
226,
255,
228,
255,
226,
231,
33,
33,
49,
50,
227,
231,
16,
32,
228,
231,
229,
231,
230,
231,
252,
48,
155,
48,
156,
48,
253,
48,
254,
48,
6,
48,
157,
48,
158,
48,
73,
254,
74,
254,
75,
254,
76,
254,
77,
254,
78,
254,
79,
254,
80,
254,
81,
254,
82,
254,
84,
254,
85,
254,
86,
254,
87,
254,
89,
254,
90,
254,
91,
254,
92,
254,
93,
254,
94,
254,
95,
254,
96,
254,
97,
254,
98,
254,
99,
254,
100,
254,
101,
254,
102,
254,
104,
254,
105,
254,
106,
254,
107,
254,
62,
48,
240,
47,
241,
47,
242,
47,
243,
47,
244,
47,
245,
47,
246,
47,
247,
47,
248,
47,
249,
47,
250,
47,
251,
47,
7,
48,
244,
231,
245,
231,
246,
231,
247,
231,
248,
231,
249,
231,
250,
231,
251,
231,
252,
231,
253,
231,
254,
231,
255,
231,
0,
232,
0,
37,
1,
37,
2,
37,
3,
37,
4,
37,
5,
37,
6,
37,
7,
37,
8,
37,
9,
37,
10,
37,
11,
37,
12,
37,
13,
37,
14,
37,
15,
37,
16,
37,
17,
37,
18,
37,
19,
37,
20,
37,
21,
37,
22,
37,
23,
37,
24,
37,
25,
37,
26,
37,
27,
37,
28,
37,
29,
37,
30,
37,
31,
37,
32,
37,
33,
37,
34,
37,
35,
37,
36,
37,
37,
37,
38,
37,
39,
37,
40,
37,
41,
37,
42,
37,
43,
37,
44,
37,
45,
37,
46,
37,
47,
37,
48,
37,
49,
37,
50,
37,
51,
37,
52,
37,
53,
37,
54,
37,
55,
37,
56,
37,
57,
37,
58,
37,
59,
37,
60,
37,
61,
37,
62,
37,
63,
37,
64,
37,
65,
37,
66,
37,
67,
37,
68,
37,
69,
37,
70,
37,
71,
37,
72,
37,
73,
37,
74,
37,
75,
37,
1,
232,
2,
232,
3,
232,
4,
232,
5,
232,
6,
232,
7,
232,
8,
232,
9,
232,
10,
232,
11,
232,
12,
232,
13,
232,
14,
232,
15,
232,
220,
114,
221,
114,
223,
114,
226,
114,
227,
114,
228,
114,
229,
114,
230,
114,
231,
114,
234,
114,
235,
114,
245,
114,
246,
114,
249,
114,
253,
114,
254,
114,
255,
114,
0,
115,
2,
115,
4,
115,
5,
115,
6,
115,
7,
115,
8,
115,
9,
115,
11,
115,
12,
115,
13,
115,
15,
115,
16,
115,
17,
115,
18,
115,
20,
115,
24,
115,
25,
115,
26,
115,
31,
115,
32,
115,
35,
115,
36,
115,
38,
115,
39,
115,
40,
115,
45,
115,
47,
115,
48,
115,
50,
115,
51,
115,
53,
115,
54,
115,
58,
115,
59,
115,
60,
115,
61,
115,
64,
115,
65,
115,
66,
115,
67,
115,
68,
115,
69,
115,
70,
115,
71,
115,
72,
115,
73,
115,
74,
115,
75,
115,
76,
115,
78,
115,
79,
115,
81,
115,
83,
115,
84,
115,
85,
115,
86,
115,
88,
115,
89,
115,
90,
115,
91,
115,
92,
115,
93,
115,
94,
115,
95,
115,
97,
115,
98,
115,
99,
115,
100,
115,
101,
115,
102,
115,
103,
115,
104,
115,
105,
115,
106,
115,
107,
115,
110,
115,
112,
115,
113,
115,
0,
224,
1,
224,
2,
224,
3,
224,
4,
224,
5,
224,
6,
224,
7,
224,
8,
224,
9,
224,
10,
224,
11,
224,
12,
224,
13,
224,
14,
224,
15,
224,
16,
224,
17,
224,
18,
224,
19,
224,
20,
224,
21,
224,
22,
224,
23,
224,
24,
224,
25,
224,
26,
224,
27,
224,
28,
224,
29,
224,
30,
224,
31,
224,
32,
224,
33,
224,
34,
224,
35,
224,
36,
224,
37,
224,
38,
224,
39,
224,
40,
224,
41,
224,
42,
224,
43,
224,
44,
224,
45,
224,
46,
224,
47,
224,
48,
224,
49,
224,
50,
224,
51,
224,
52,
224,
53,
224,
54,
224,
55,
224,
56,
224,
57,
224,
58,
224,
59,
224,
60,
224,
61,
224,
62,
224,
63,
224,
64,
224,
65,
224,
66,
224,
67,
224,
68,
224,
69,
224,
70,
224,
71,
224,
72,
224,
73,
224,
74,
224,
75,
224,
76,
224,
77,
224,
78,
224,
79,
224,
80,
224,
81,
224,
82,
224,
83,
224,
84,
224,
85,
224,
86,
224,
87,
224,
88,
224,
89,
224,
90,
224,
91,
224,
92,
224,
93,
224,
114,
115,
115,
115,
116,
115,
117,
115,
118,
115,
119,
115,
120,
115,
121,
115,
122,
115,
123,
115,
124,
115,
125,
115,
127,
115,
128,
115,
129,
115,
130,
115,
131,
115,
133,
115,
134,
115,
136,
115,
138,
115,
140,
115,
141,
115,
143,
115,
144,
115,
146,
115,
147,
115,
148,
115,
149,
115,
151,
115,
152,
115,
153,
115,
154,
115,
156,
115,
157,
115,
158,
115,
160,
115,
161,
115,
163,
115,
164,
115,
165,
115,
166,
115,
167,
115,
168,
115,
170,
115,
172,
115,
173,
115,
177,
115,
180,
115,
181,
115,
182,
115,
184,
115,
185,
115,
188,
115,
189,
115,
190,
115,
191,
115,
193,
115,
195,
115,
196,
115,
197,
115,
198,
115,
199,
115,
203,
115,
204,
115,
206,
115,
210,
115,
211,
115,
212,
115,
213,
115,
214,
115,
215,
115,
216,
115,
218,
115,
219,
115,
220,
115,
221,
115,
223,
115,
225,
115,
226,
115,
227,
115,
228,
115,
230,
115,
232,
115,
234,
115,
235,
115,
236,
115,
238,
115,
239,
115,
240,
115,
241,
115,
243,
115,
244,
115,
245,
115,
246,
115,
247,
115,
94,
224,
95,
224,
96,
224,
97,
224,
98,
224,
99,
224,
100,
224,
101,
224,
102,
224,
103,
224,
104,
224,
105,
224,
106,
224,
107,
224,
108,
224,
109,
224,
110,
224,
111,
224,
112,
224,
113,
224,
114,
224,
115,
224,
116,
224,
117,
224,
118,
224,
119,
224,
120,
224,
121,
224,
122,
224,
123,
224,
124,
224,
125,
224,
126,
224,
127,
224,
128,
224,
129,
224,
130,
224,
131,
224,
132,
224,
133,
224,
134,
224,
135,
224,
136,
224,
137,
224,
138,
224,
139,
224,
140,
224,
141,
224,
142,
224,
143,
224,
144,
224,
145,
224,
146,
224,
147,
224,
148,
224,
149,
224,
150,
224,
151,
224,
152,
224,
153,
224,
154,
224,
155,
224,
156,
224,
157,
224,
158,
224,
159,
224,
160,
224,
161,
224,
162,
224,
163,
224,
164,
224,
165,
224,
166,
224,
167,
224,
168,
224,
169,
224,
170,
224,
171,
224,
172,
224,
173,
224,
174,
224,
175,
224,
176,
224,
177,
224,
178,
224,
179,
224,
180,
224,
181,
224,
182,
224,
183,
224,
184,
224,
185,
224,
186,
224,
187,
224,
248,
115,
249,
115,
250,
115,
251,
115,
252,
115,
253,
115,
254,
115,
255,
115,
0,
116,
1,
116,
2,
116,
4,
116,
7,
116,
8,
116,
11,
116,
12,
116,
13,
116,
14,
116,
17,
116,
18,
116,
19,
116,
20,
116,
21,
116,
22,
116,
23,
116,
24,
116,
25,
116,
28,
116,
29,
116,
30,
116,
31,
116,
32,
116,
33,
116,
35,
116,
36,
116,
39,
116,
41,
116,
43,
116,
45,
116,
47,
116,
49,
116,
50,
116,
55,
116,
56,
116,
57,
116,
58,
116,
59,
116,
61,
116,
62,
116,
63,
116,
64,
116,
66,
116,
67,
116,
68,
116,
69,
116,
70,
116,
71,
116,
72,
116,
73,
116,
74,
116,
75,
116,
76,
116,
77,
116,
78,
116,
79,
116,
80,
116,
81,
116,
82,
116,
83,
116,
84,
116,
86,
116,
88,
116,
93,
116,
96,
116,
97,
116,
98,
116,
99,
116,
100,
116,
101,
116,
102,
116,
103,
116,
104,
116,
105,
116,
106,
116,
107,
116,
108,
116,
110,
116,
111,
116,
113,
116,
114,
116,
115,
116,
116,
116,
117,
116,
120,
116,
121,
116,
122,
116,
188,
224,
189,
224,
190,
224,
191,
224,
192,
224,
193,
224,
194,
224,
195,
224,
196,
224,
197,
224,
198,
224,
199,
224,
200,
224,
201,
224,
202,
224,
203,
224,
204,
224,
205,
224,
206,
224,
207,
224,
208,
224,
209,
224,
210,
224,
211,
224,
212,
224,
213,
224,
214,
224,
215,
224,
216,
224,
217,
224,
218,
224,
219,
224,
220,
224,
221,
224,
222,
224,
223,
224,
224,
224,
225,
224,
226,
224,
227,
224,
228,
224,
229,
224,
230,
224,
231,
224,
232,
224,
233,
224,
234,
224,
235,
224,
236,
224,
237,
224,
238,
224,
239,
224,
240,
224,
241,
224,
242,
224,
243,
224,
244,
224,
245,
224,
246,
224,
247,
224,
248,
224,
249,
224,
250,
224,
251,
224,
252,
224,
253,
224,
254,
224,
255,
224,
0,
225,
1,
225,
2,
225,
3,
225,
4,
225,
5,
225,
6,
225,
7,
225,
8,
225,
9,
225,
10,
225,
11,
225,
12,
225,
13,
225,
14,
225,
15,
225,
16,
225,
17,
225,
18,
225,
19,
225,
20,
225,
21,
225,
22,
225,
23,
225,
24,
225,
25,
225,
123,
116,
124,
116,
125,
116,
127,
116,
130,
116,
132,
116,
133,
116,
134,
116,
136,
116,
137,
116,
138,
116,
140,
116,
141,
116,
143,
116,
145,
116,
146,
116,
147,
116,
148,
116,
149,
116,
150,
116,
151,
116,
152,
116,
153,
116,
154,
116,
155,
116,
157,
116,
159,
116,
160,
116,
161,
116,
162,
116,
163,
116,
164,
116,
165,
116,
166,
116,
170,
116,
171,
116,
172,
116,
173,
116,
174,
116,
175,
116,
176,
116,
177,
116,
178,
116,
179,
116,
180,
116,
181,
116,
182,
116,
183,
116,
184,
116,
185,
116,
187,
116,
188,
116,
189,
116,
190,
116,
191,
116,
192,
116,
193,
116,
194,
116,
195,
116,
196,
116,
197,
116,
198,
116,
199,
116,
200,
116,
201,
116,
202,
116,
203,
116,
204,
116,
205,
116,
206,
116,
207,
116,
208,
116,
209,
116,
211,
116,
212,
116,
213,
116,
214,
116,
215,
116,
216,
116,
217,
116,
218,
116,
219,
116,
221,
116,
223,
116,
225,
116,
229,
116,
231,
116,
232,
116,
233,
116,
234,
116,
235,
116,
236,
116,
237,
116,
240,
116,
241,
116,
242,
116,
26,
225,
27,
225,
28,
225,
29,
225,
30,
225,
31,
225,
32,
225,
33,
225,
34,
225,
35,
225,
36,
225,
37,
225,
38,
225,
39,
225,
40,
225,
41,
225,
42,
225,
43,
225,
44,
225,
45,
225,
46,
225,
47,
225,
48,
225,
49,
225,
50,
225,
51,
225,
52,
225,
53,
225,
54,
225,
55,
225,
56,
225,
57,
225,
58,
225,
59,
225,
60,
225,
61,
225,
62,
225,
63,
225,
64,
225,
65,
225,
66,
225,
67,
225,
68,
225,
69,
225,
70,
225,
71,
225,
72,
225,
73,
225,
74,
225,
75,
225,
76,
225,
77,
225,
78,
225,
79,
225,
80,
225,
81,
225,
82,
225,
83,
225,
84,
225,
85,
225,
86,
225,
87,
225,
88,
225,
89,
225,
90,
225,
91,
225,
92,
225,
93,
225,
94,
225,
95,
225,
96,
225,
97,
225,
98,
225,
99,
225,
100,
225,
101,
225,
102,
225,
103,
225,
104,
225,
105,
225,
106,
225,
107,
225,
108,
225,
109,
225,
110,
225,
111,
225,
112,
225,
113,
225,
114,
225,
115,
225,
116,
225,
117,
225,
118,
225,
119,
225,
243,
116,
245,
116,
248,
116,
249,
116,
250,
116,
251,
116,
252,
116,
253,
116,
254,
116,
0,
117,
1,
117,
2,
117,
3,
117,
5,
117,
6,
117,
7,
117,
8,
117,
9,
117,
10,
117,
11,
117,
12,
117,
14,
117,
16,
117,
18,
117,
20,
117,
21,
117,
22,
117,
23,
117,
27,
117,
29,
117,
30,
117,
32,
117,
33,
117,
34,
117,
35,
117,
36,
117,
38,
117,
39,
117,
42,
117,
46,
117,
52,
117,
54,
117,
57,
117,
60,
117,
61,
117,
63,
117,
65,
117,
66,
117,
67,
117,
68,
117,
70,
117,
71,
117,
73,
117,
74,
117,
77,
117,
80,
117,
81,
117,
82,
117,
83,
117,
85,
117,
86,
117,
87,
117,
88,
117,
93,
117,
94,
117,
95,
117,
96,
117,
97,
117,
98,
117,
99,
117,
100,
117,
103,
117,
104,
117,
105,
117,
107,
117,
108,
117,
109,
117,
110,
117,
111,
117,
112,
117,
113,
117,
115,
117,
117,
117,
118,
117,
119,
117,
122,
117,
123,
117,
124,
117,
125,
117,
126,
117,
128,
117,
129,
117,
130,
117,
132,
117,
133,
117,
135,
117,
120,
225,
121,
225,
122,
225,
123,
225,
124,
225,
125,
225,
126,
225,
127,
225,
128,
225,
129,
225,
130,
225,
131,
225,
132,
225,
133,
225,
134,
225,
135,
225,
136,
225,
137,
225,
138,
225,
139,
225,
140,
225,
141,
225,
142,
225,
143,
225,
144,
225,
145,
225,
146,
225,
147,
225,
148,
225,
149,
225,
150,
225,
151,
225,
152,
225,
153,
225,
154,
225,
155,
225,
156,
225,
157,
225,
158,
225,
159,
225,
160,
225,
161,
225,
162,
225,
163,
225,
164,
225,
165,
225,
166,
225,
167,
225,
168,
225,
169,
225,
170,
225,
171,
225,
172,
225,
173,
225,
174,
225,
175,
225,
176,
225,
177,
225,
178,
225,
179,
225,
180,
225,
181,
225,
182,
225,
183,
225,
184,
225,
185,
225,
186,
225,
187,
225,
188,
225,
189,
225,
190,
225,
191,
225,
192,
225,
193,
225,
194,
225,
195,
225,
196,
225,
197,
225,
198,
225,
199,
225,
200,
225,
201,
225,
202,
225,
203,
225,
204,
225,
205,
225,
206,
225,
207,
225,
208,
225,
209,
225,
210,
225,
211,
225,
212,
225,
213,
225,
136,
117,
137,
117,
138,
117,
140,
117,
141,
117,
142,
117,
144,
117,
147,
117,
149,
117,
152,
117,
155,
117,
156,
117,
158,
117,
162,
117,
166,
117,
167,
117,
168,
117,
169,
117,
170,
117,
173,
117,
182,
117,
183,
117,
186,
117,
187,
117,
191,
117,
192,
117,
193,
117,
198,
117,
203,
117,
204,
117,
206,
117,
207,
117,
208,
117,
209,
117,
211,
117,
215,
117,
217,
117,
218,
117,
220,
117,
221,
117,
223,
117,
224,
117,
225,
117,
229,
117,
233,
117,
236,
117,
237,
117,
238,
117,
239,
117,
242,
117,
243,
117,
245,
117,
246,
117,
247,
117,
248,
117,
250,
117,
251,
117,
253,
117,
254,
117,
2,
118,
4,
118,
6,
118,
7,
118,
8,
118,
9,
118,
11,
118,
13,
118,
14,
118,
15,
118,
17,
118,
18,
118,
19,
118,
20,
118,
22,
118,
26,
118,
28,
118,
29,
118,
30,
118,
33,
118,
35,
118,
39,
118,
40,
118,
44,
118,
46,
118,
47,
118,
49,
118,
50,
118,
54,
118,
55,
118,
57,
118,
58,
118,
59,
118,
61,
118,
65,
118,
66,
118,
68,
118,
214,
225,
215,
225,
216,
225,
217,
225,
218,
225,
219,
225,
220,
225,
221,
225,
222,
225,
223,
225,
224,
225,
225,
225,
226,
225,
227,
225,
228,
225,
229,
225,
230,
225,
231,
225,
232,
225,
233,
225,
234,
225,
235,
225,
236,
225,
237,
225,
238,
225,
239,
225,
240,
225,
241,
225,
242,
225,
243,
225,
244,
225,
245,
225,
246,
225,
247,
225,
248,
225,
249,
225,
250,
225,
251,
225
],
'i8',
ALLOC_NONE,
Runtime.GLOBAL_BASE + 35572
);
/* memory initializer */ allocate(
[
252,
225,
253,
225,
254,
225,
255,
225,
0,
226,
1,
226,
2,
226,
3,
226,
4,
226,
5,
226,
6,
226,
7,
226,
8,
226,
9,
226,
10,
226,
11,
226,
12,
226,
13,
226,
14,
226,
15,
226,
16,
226,
17,
226,
18,
226,
19,
226,
20,
226,
21,
226,
22,
226,
23,
226,
24,
226,
25,
226,
26,
226,
27,
226,
28,
226,
29,
226,
30,
226,
31,
226,
32,
226,
33,
226,
34,
226,
35,
226,
36,
226,
37,
226,
38,
226,
39,
226,
40,
226,
41,
226,
42,
226,
43,
226,
44,
226,
45,
226,
46,
226,
47,
226,
48,
226,
49,
226,
50,
226,
51,
226,
69,
118,
70,
118,
71,
118,
72,
118,
73,
118,
74,
118,
75,
118,
78,
118,
79,
118,
80,
118,
81,
118,
82,
118,
83,
118,
85,
118,
87,
118,
88,
118,
89,
118,
90,
118,
91,
118,
93,
118,
95,
118,
96,
118,
97,
118,
98,
118,
100,
118,
101,
118,
102,
118,
103,
118,
104,
118,
105,
118,
106,
118,
108,
118,
109,
118,
110,
118,
112,
118,
113,
118,
114,
118,
115,
118,
116,
118,
117,
118,
118,
118,
119,
118,
121,
118,
122,
118,
124,
118,
127,
118,
128,
118,
129,
118,
131,
118,
133,
118,
137,
118,
138,
118,
140,
118,
141,
118,
143,
118,
144,
118,
146,
118,
148,
118,
149,
118,
151,
118,
152,
118,
154,
118,
155,
118,
156,
118,
157,
118,
158,
118,
159,
118,
160,
118,
161,
118,
162,
118,
163,
118,
165,
118,
166,
118,
167,
118,
168,
118,
169,
118,
170,
118,
171,
118,
172,
118,
173,
118,
175,
118,
176,
118,
179,
118,
181,
118,
182,
118,
183,
118,
184,
118,
185,
118,
186,
118,
187,
118,
188,
118,
189,
118,
190,
118,
192,
118,
193,
118,
195,
118,
74,
85,
63,
150,
195,
87,
40,
99,
206,
84,
9,
85,
192,
84,
145,
118,
76,
118,
60,
133,
238,
119,
126,
130,
141,
120,
49,
114,
152,
150,
141,
151,
40,
108,
137,
91,
250,
79,
9,
99,
151,
102,
184,
92,
250,
128,
72,
104,
174,
128,
2,
102,
206,
118,
249,
81,
86,
101,
172,
113,
241,
127,
132,
136,
178,
80,
101,
89,
202,
97,
179,
111,
173,
130,
76,
99,
82,
98,
237,
83,
39,
84,
6,
123,
107,
81,
164,
117,
244,
93,
212,
98,
203,
141,
118,
151,
138,
98,
25,
128,
93,
87,
56,
151,
98,
127,
56,
114,
125,
118,
207,
103,
126,
118,
70,
100,
112,
79,
37,
141,
220,
98,
23,
122,
145,
101,
237,
115,
44,
100,
115,
98,
44,
130,
129,
152,
127,
103,
72,
114,
110,
98,
204,
98,
52,
79,
227,
116,
74,
83,
158,
82,
202,
126,
166,
144,
46,
94,
134,
104,
156,
105,
128,
129,
209,
126,
210,
104,
197,
120,
140,
134,
81,
149,
141,
80,
36,
140,
222,
130,
222,
128,
5,
83,
18,
137,
101,
82,
196,
118,
199,
118,
201,
118,
203,
118,
204,
118,
211,
118,
213,
118,
217,
118,
218,
118,
220,
118,
221,
118,
222,
118,
224,
118,
225,
118,
226,
118,
227,
118,
228,
118,
230,
118,
231,
118,
232,
118,
233,
118,
234,
118,
235,
118,
236,
118,
237,
118,
240,
118,
243,
118,
245,
118,
246,
118,
247,
118,
250,
118,
251,
118,
253,
118,
255,
118,
0,
119,
2,
119,
3,
119,
5,
119,
6,
119,
10,
119,
12,
119,
14,
119,
15,
119,
16,
119,
17,
119,
18,
119,
19,
119,
20,
119,
21,
119,
22,
119,
23,
119,
24,
119,
27,
119,
28,
119,
29,
119,
30,
119,
33,
119,
35,
119,
36,
119,
37,
119,
39,
119,
42,
119,
43,
119,
44,
119,
46,
119,
48,
119,
49,
119,
50,
119,
51,
119,
52,
119,
57,
119,
59,
119,
61,
119,
62,
119,
63,
119,
66,
119,
68,
119,
69,
119,
70,
119,
72,
119,
73,
119,
74,
119,
75,
119,
76,
119,
77,
119,
78,
119,
79,
119,
82,
119,
83,
119,
84,
119,
85,
119,
86,
119,
87,
119,
88,
119,
89,
119,
92,
119,
132,
133,
249,
150,
221,
79,
33,
88,
113,
153,
157,
91,
177,
98,
165,
98,
180,
102,
121,
140,
141,
156,
6,
114,
111,
103,
145,
120,
178,
96,
81,
83,
23,
83,
136,
143,
204,
128,
29,
141,
161,
148,
13,
80,
200,
114,
7,
89,
235,
96,
25,
113,
171,
136,
84,
89,
239,
130,
44,
103,
40,
123,
41,
93,
247,
126,
45,
117,
245,
108,
102,
142,
248,
143,
60,
144,
59,
159,
212,
107,
25,
145,
20,
123,
124,
95,
167,
120,
214,
132,
61,
133,
213,
107,
217,
107,
214,
107,
1,
94,
135,
94,
249,
117,
237,
149,
93,
101,
10,
95,
197,
95,
159,
143,
193,
88,
194,
129,
127,
144,
91,
150,
173,
151,
185,
143,
22,
127,
44,
141,
65,
98,
191,
79,
216,
83,
94,
83,
168,
143,
169,
143,
171,
143,
77,
144,
7,
104,
106,
95,
152,
129,
104,
136,
214,
156,
139,
97,
43,
82,
42,
118,
108,
95,
140,
101,
210,
111,
232,
110,
190,
91,
72,
100,
117,
81,
176,
81,
196,
103,
25,
78,
201,
121,
124,
153,
179,
112,
93,
119,
94,
119,
95,
119,
96,
119,
100,
119,
103,
119,
105,
119,
106,
119,
109,
119,
110,
119,
111,
119,
112,
119,
113,
119,
114,
119,
115,
119,
116,
119,
117,
119,
118,
119,
119,
119,
120,
119,
122,
119,
123,
119,
124,
119,
129,
119,
130,
119,
131,
119,
134,
119,
135,
119,
136,
119,
137,
119,
138,
119,
139,
119,
143,
119,
144,
119,
147,
119,
148,
119,
149,
119,
150,
119,
151,
119,
152,
119,
153,
119,
154,
119,
155,
119,
156,
119,
157,
119,
158,
119,
161,
119,
163,
119,
164,
119,
166,
119,
168,
119,
171,
119,
173,
119,
174,
119,
175,
119,
177,
119,
178,
119,
180,
119,
182,
119,
183,
119,
184,
119,
185,
119,
186,
119,
188,
119,
190,
119,
192,
119,
193,
119,
194,
119,
195,
119,
196,
119,
197,
119,
198,
119,
199,
119,
200,
119,
201,
119,
202,
119,
203,
119,
204,
119,
206,
119,
207,
119,
208,
119,
209,
119,
210,
119,
211,
119,
212,
119,
213,
119,
214,
119,
216,
119,
217,
119,
218,
119,
221,
119,
222,
119,
223,
119,
224,
119,
225,
119,
228,
119,
197,
117,
118,
94,
187,
115,
224,
131,
173,
100,
232,
98,
181,
148,
226,
108,
90,
83,
195,
82,
15,
100,
194,
148,
148,
123,
47,
79,
27,
94,
54,
130,
22,
129,
138,
129,
36,
110,
202,
108,
115,
154,
85,
99,
92,
83,
250,
84,
101,
136,
224,
87,
13,
78,
3,
94,
101,
107,
63,
124,
232,
144,
22,
96,
230,
100,
28,
115,
193,
136,
80,
103,
77,
98,
34,
141,
108,
119,
41,
142,
199,
145,
105,
95,
220,
131,
33,
133,
16,
153,
194,
83,
149,
134,
139,
107,
237,
96,
232,
96,
127,
112,
205,
130,
49,
130,
211,
78,
167,
108,
207,
133,
205,
100,
217,
124,
253,
105,
249,
102,
73,
131,
149,
83,
86,
123,
167,
79,
140,
81,
75,
109,
66,
92,
109,
142,
210,
99,
201,
83,
44,
131,
54,
131,
229,
103,
180,
120,
61,
100,
223,
91,
148,
92,
238,
93,
231,
139,
198,
98,
244,
103,
122,
140,
0,
100,
186,
99,
73,
135,
139,
153,
23,
140,
32,
127,
242,
148,
167,
78,
16,
150,
164,
152,
12,
102,
22,
115,
230,
119,
232,
119,
234,
119,
239,
119,
240,
119,
241,
119,
242,
119,
244,
119,
245,
119,
247,
119,
249,
119,
250,
119,
251,
119,
252,
119,
3,
120,
4,
120,
5,
120,
6,
120,
7,
120,
8,
120,
10,
120,
11,
120,
14,
120,
15,
120,
16,
120,
19,
120,
21,
120,
25,
120,
27,
120,
30,
120,
32,
120,
33,
120,
34,
120,
36,
120,
40,
120,
42,
120,
43,
120,
46,
120,
47,
120,
49,
120,
50,
120,
51,
120,
53,
120,
54,
120,
61,
120,
63,
120,
65,
120,
66,
120,
67,
120,
68,
120,
70,
120,
72,
120,
73,
120,
74,
120,
75,
120,
77,
120,
79,
120,
81,
120,
83,
120,
84,
120,
88,
120,
89,
120,
90,
120,
91,
120,
92,
120,
94,
120,
95,
120,
96,
120,
97,
120,
98,
120,
99,
120,
100,
120,
101,
120,
102,
120,
103,
120,
104,
120,
105,
120,
111,
120,
112,
120,
113,
120,
114,
120,
115,
120,
116,
120,
117,
120,
118,
120,
120,
120,
121,
120,
122,
120,
123,
120,
125,
120,
126,
120,
127,
120,
128,
120,
129,
120,
130,
120,
131,
120,
58,
87,
29,
92,
56,
94,
127,
149,
127,
80,
160,
128,
130,
83,
94,
101,
69,
117,
49,
85,
33,
80,
133,
141,
132,
98,
158,
148,
29,
103,
50,
86,
110,
111,
226,
93,
53,
84,
146,
112,
102,
143,
111,
98,
164,
100,
163,
99,
123,
95,
136,
111,
244,
144,
227,
129,
176,
143,
24,
92,
104,
102,
241,
95,
137,
108,
72,
150,
129,
141,
108,
136,
145,
100,
240,
121,
206,
87,
89,
106,
16,
98,
72,
84,
88,
78,
11,
122,
233,
96,
132,
111,
218,
139,
127,
98,
30,
144,
139,
154,
228,
121,
3,
84,
244,
117,
1,
99,
25,
83,
96,
108,
223,
143,
27,
95,
112,
154,
59,
128,
127,
159,
136,
79,
58,
92,
100,
141,
197,
127,
165,
101,
189,
112,
69,
81,
178,
81,
107,
134,
7,
93,
160,
91,
189,
98,
108,
145,
116,
117,
12,
142,
32,
122,
1,
97,
121,
123,
199,
78,
248,
126,
133,
119,
17,
78,
237,
129,
29,
82,
250,
81,
113,
106,
168,
83,
135,
142,
4,
149,
207,
150,
193,
110,
100,
150,
90,
105,
132,
120,
133,
120,
134,
120,
136,
120,
138,
120,
139,
120,
143,
120,
144,
120,
146,
120,
148,
120,
149,
120,
150,
120,
153,
120,
157,
120,
158,
120,
160,
120,
162,
120,
164,
120,
166,
120,
168,
120,
169,
120,
170,
120,
171,
120,
172,
120,
173,
120,
174,
120,
175,
120,
181,
120,
182,
120,
183,
120,
184,
120,
186,
120,
187,
120,
188,
120,
189,
120,
191,
120,
192,
120,
194,
120,
195,
120,
196,
120,
198,
120,
199,
120,
200,
120,
204,
120,
205,
120,
206,
120,
207,
120,
209,
120,
210,
120,
211,
120,
214,
120,
215,
120,
216,
120,
218,
120,
219,
120,
220,
120,
221,
120,
222,
120,
223,
120,
224,
120,
225,
120,
226,
120,
227,
120,
228,
120,
229,
120,
230,
120,
231,
120,
233,
120,
234,
120,
235,
120,
237,
120,
238,
120,
239,
120,
240,
120,
241,
120,
243,
120,
245,
120,
246,
120,
248,
120,
249,
120,
251,
120,
252,
120,
253,
120,
254,
120,
255,
120,
0,
121,
2,
121,
3,
121,
4,
121,
6,
121,
7,
121,
8,
121,
9,
121,
10,
121,
11,
121,
12,
121,
64,
120,
168,
80,
215,
119,
16,
100,
230,
137,
4,
89,
227,
99,
221,
93,
127,
122,
61,
105,
32,
79,
57,
130,
152,
85,
50,
78,
174,
117,
151,
122,
98,
94,
138,
94,
239,
149,
27,
82,
57,
84,
138,
112,
118,
99,
36,
149,
130,
87,
37,
102,
63,
105,
135,
145,
7,
85,
243,
109,
175,
126,
34,
136,
51,
98,
240,
126,
181,
117,
40,
131,
193,
120,
204,
150,
158,
143,
72,
97,
247,
116,
205,
139,
100,
107,
58,
82,
80,
141,
33,
107,
106,
128,
113,
132,
241,
86,
6,
83,
206,
78,
27,
78,
209,
81,
151,
124,
139,
145,
7,
124,
195,
79,
127,
142,
225,
123,
156,
122,
103,
100,
20,
93,
172,
80,
6,
129,
1,
118,
185,
124,
236,
109,
224,
127,
81,
103,
88,
91,
248,
91,
203,
120,
174,
100,
19,
100,
170,
99,
43,
99,
25,
149,
45,
100,
190,
143,
84,
123,
41,
118,
83,
98,
39,
89,
70,
84,
121,
107,
163,
80,
52,
98,
38,
94,
134,
107,
227,
78,
55,
141,
139,
136,
133,
95,
46,
144,
13,
121,
14,
121,
15,
121,
16,
121,
17,
121,
18,
121,
20,
121,
21,
121,
22,
121,
23,
121,
24,
121,
25,
121,
26,
121,
27,
121,
28,
121,
29,
121,
31,
121,
32,
121,
33,
121,
34,
121,
35,
121,
37,
121,
38,
121,
39,
121,
40,
121,
41,
121,
42,
121,
43,
121,
44,
121,
45,
121,
46,
121,
47,
121,
48,
121,
49,
121,
50,
121,
51,
121,
53,
121,
54,
121,
55,
121,
56,
121,
57,
121,
61,
121,
63,
121,
66,
121,
67,
121,
68,
121,
69,
121,
71,
121,
74,
121,
75,
121,
76,
121,
77,
121,
78,
121,
79,
121,
80,
121,
81,
121,
82,
121,
84,
121,
85,
121,
88,
121,
89,
121,
97,
121,
99,
121,
100,
121,
102,
121,
105,
121,
106,
121,
107,
121,
108,
121,
110,
121,
112,
121,
113,
121,
114,
121,
115,
121,
116,
121,
117,
121,
118,
121,
121,
121,
123,
121,
124,
121,
125,
121,
126,
121,
127,
121,
130,
121,
131,
121,
134,
121,
135,
121,
136,
121,
137,
121,
139,
121,
140,
121,
141,
121,
142,
121,
144,
121,
145,
121,
146,
121,
32,
96,
61,
128,
197,
98,
57,
78,
85,
83,
248,
144,
184,
99,
198,
128,
230,
101,
46,
108,
70,
79,
238,
96,
225,
109,
222,
139,
57,
95,
203,
134,
83,
95,
33,
99,
90,
81,
97,
131,
99,
104,
0,
82,
99,
99,
72,
142,
18,
80,
155,
92,
119,
121,
252,
91,
48,
82,
59,
122,
188,
96,
83,
144,
215,
118,
183,
95,
151,
95,
132,
118,
108,
142,
111,
112,
123,
118,
73,
123,
170,
119,
243,
81,
147,
144,
36,
88,
78,
79,
244,
110,
234,
143,
76,
101,
27,
123,
196,
114,
164,
109,
223,
127,
225,
90,
181,
98,
149,
94,
48,
87,
130,
132,
44,
123,
29,
94,
31,
95,
18,
144,
20,
127,
160,
152,
130,
99,
199,
110,
152,
120,
185,
112,
120,
81,
91,
151,
171,
87,
53,
117,
67,
79,
56,
117,
151,
94,
230,
96,
96,
89,
192,
109,
191,
107,
137,
120,
252,
83,
213,
150,
203,
81,
1,
82,
137,
99,
10,
84,
147,
148,
3,
140,
204,
141,
57,
114,
159,
120,
118,
135,
237,
143,
13,
140,
224,
83,
147,
121,
148,
121,
149,
121,
150,
121,
151,
121,
152,
121,
153,
121,
155,
121,
156,
121,
157,
121,
158,
121,
159,
121,
160,
121,
161,
121,
162,
121,
163,
121,
164,
121,
165,
121,
166,
121,
168,
121,
169,
121,
170,
121,
171,
121,
172,
121,
173,
121,
174,
121,
175,
121,
176,
121,
177,
121,
178,
121,
180,
121,
181,
121,
182,
121,
183,
121,
184,
121,
188,
121,
191,
121,
194,
121,
196,
121,
197,
121,
199,
121,
200,
121,
202,
121,
204,
121,
206,
121,
207,
121,
208,
121,
211,
121,
212,
121,
214,
121,
215,
121,
217,
121,
218,
121,
219,
121,
220,
121,
221,
121,
222,
121,
224,
121,
225,
121,
226,
121,
229,
121,
232,
121,
234,
121,
236,
121,
238,
121,
241,
121,
242,
121,
243,
121,
244,
121,
245,
121,
246,
121,
247,
121,
249,
121,
250,
121,
252,
121,
254,
121,
255,
121,
1,
122,
4,
122,
5,
122,
7,
122,
8,
122,
9,
122,
10,
122,
12,
122,
15,
122,
16,
122,
17,
122,
18,
122,
19,
122,
21,
122,
22,
122,
24,
122,
25,
122,
27,
122,
28,
122,
1,
78,
239,
118,
238,
83,
137,
148,
118,
152,
14,
159,
45,
149,
154,
91,
162,
139,
34,
78,
28,
78,
172,
81,
99,
132,
194,
97,
168,
82,
11,
104,
151,
79,
107,
96,
187,
81,
30,
109,
92,
81,
150,
98,
151,
101,
97,
150,
70,
140,
23,
144,
216,
117,
253,
144,
99,
119,
210,
107,
138,
114,
236,
114,
251,
139,
53,
88,
121,
119,
76,
141,
92,
103,
64,
149,
154,
128,
166,
94,
33,
110,
146,
89,
239,
122,
237,
119,
59,
149,
181,
107,
173,
101,
14,
127,
6,
88,
81,
81,
31,
150,
249,
91,
169,
88,
40,
84,
114,
142,
102,
101,
127,
152,
228,
86,
157,
148,
254,
118,
65,
144,
135,
99,
198,
84,
26,
89,
58,
89,
155,
87,
178,
142,
53,
103,
250,
141,
53,
130,
65,
82,
240,
96,
21,
88,
254,
134,
232,
92,
69,
158,
196,
79,
157,
152,
185,
139,
37,
90,
118,
96,
132,
83,
124,
98,
79,
144,
2,
145,
127,
153,
105,
96,
12,
128,
63,
81,
51,
128,
20,
92,
117,
153,
49,
109,
140,
78,
29,
122,
31,
122,
33,
122,
34,
122,
36,
122,
37,
122,
38,
122,
39,
122,
40,
122,
41,
122,
42,
122,
43,
122,
44,
122,
45,
122,
46,
122,
47,
122,
48,
122,
49,
122,
50,
122,
52,
122,
53,
122,
54,
122,
56,
122,
58,
122,
62,
122,
64,
122,
65,
122,
66,
122,
67,
122,
68,
122,
69,
122,
71,
122,
72,
122,
73,
122,
74,
122,
75,
122,
76,
122,
77,
122,
78,
122,
79,
122,
80,
122,
82,
122,
83,
122,
84,
122,
85,
122,
86,
122,
88,
122,
89,
122,
90,
122,
91,
122,
92,
122,
93,
122,
94,
122,
95,
122,
96,
122,
97,
122,
98,
122,
99,
122,
100,
122,
101,
122,
102,
122,
103,
122,
104,
122,
105,
122,
106,
122,
107,
122,
108,
122,
109,
122,
110,
122,
111,
122,
113,
122,
114,
122,
115,
122,
117,
122,
123,
122,
124,
122,
125,
122,
126,
122,
130,
122,
133,
122,
135,
122,
137,
122,
138,
122,
139,
122,
140,
122,
142,
122,
143,
122,
144,
122,
147,
122,
148,
122,
153,
122,
154,
122,
155,
122,
158,
122,
161,
122,
162,
122,
48,
141,
209,
83,
90,
127,
79,
123,
16,
79,
79,
78,
0,
150,
213,
108,
208,
115,
233,
133,
6,
94,
106,
117,
251,
127,
10,
106,
254,
119,
146,
148,
65,
126,
225,
81,
230,
112,
205,
83,
212,
143,
3,
131,
41,
141,
175,
114,
109,
153,
219,
108,
74,
87,
179,
130,
185,
101,
170,
128,
63,
98,
50,
150,
168,
89,
255,
78,
191,
139,
186,
126,
62,
101,
242,
131,
94,
151,
97,
85,
222,
152,
165,
128,
42,
83,
253,
139,
32,
84,
186,
128,
159,
94,
184,
108,
57,
141,
172,
130,
90,
145,
41,
84,
27,
108,
6,
82,
183,
126,
95,
87,
26,
113,
126,
108,
137,
124,
75,
89,
253,
78,
255,
95,
36,
97,
170,
124,
48,
78,
1,
92,
171,
103,
2,
135,
240,
92,
11,
149,
206,
152,
175,
117,
253,
112,
34,
144,
175,
81,
29,
127,
189,
139,
73,
89,
228,
81,
91,
79,
38,
84,
43,
89,
119,
101,
164,
128,
117,
91,
118,
98,
194,
98,
144,
143,
69,
94,
31,
108,
38,
123,
15,
79,
216,
79,
13,
103,
163,
122,
164,
122,
167,
122,
169,
122,
170,
122,
171,
122,
174,
122,
175,
122,
176,
122,
177,
122,
178,
122,
180,
122,
181,
122,
182,
122,
183,
122,
184,
122,
185,
122,
186,
122,
187,
122,
188,
122,
189,
122,
190,
122,
192,
122,
193,
122,
194,
122,
195,
122,
196,
122,
197,
122,
198,
122,
199,
122,
200,
122,
201,
122,
202,
122,
204,
122,
205,
122,
206,
122,
207,
122,
208,
122,
209,
122,
210,
122,
211,
122,
212,
122,
213,
122,
215,
122,
216,
122,
218,
122,
219,
122,
220,
122,
221,
122,
225,
122,
226,
122,
228,
122,
231,
122,
232,
122,
233,
122,
234,
122,
235,
122,
236,
122,
238,
122,
240,
122,
241,
122,
242,
122,
243,
122,
244,
122,
245,
122,
246,
122,
247,
122,
248,
122,
251,
122,
252,
122,
254,
122,
0,
123,
1,
123,
2,
123,
5,
123,
7,
123,
9,
123,
12,
123,
13,
123,
14,
123,
16,
123,
18,
123,
19,
123,
22,
123,
23,
123,
24,
123,
26,
123,
28,
123,
29,
123,
31,
123,
33,
123,
34,
123,
35,
123,
39,
123,
41,
123,
45,
123,
110,
109,
170,
109,
143,
121,
177,
136,
23,
95,
43,
117,
154,
98,
133,
143,
239,
79,
220,
145,
167,
101,
47,
129,
81,
129,
156,
94,
80,
129,
116,
141,
111,
82,
134,
137,
75,
141,
13,
89,
133,
80,
216,
78,
28,
150,
54,
114,
121,
129,
31,
141,
204,
91,
163,
139,
68,
150,
135,
89,
26,
127,
144,
84,
118,
86,
14,
86,
229,
139,
57,
101,
130,
105,
153,
148,
214,
118,
137,
110,
114,
94,
24,
117,
70,
103,
209,
103,
255,
122,
157,
128,
118,
141,
31,
97,
198,
121,
98,
101,
99,
141,
136,
81,
26,
82,
162,
148,
56,
127,
155,
128,
178,
126,
151,
92,
47,
110,
96,
103,
217,
123,
139,
118,
216,
154,
143,
129,
148,
127,
213,
124,
30,
100,
80,
149,
63,
122,
74,
84,
229,
84,
76,
107,
1,
100,
8,
98,
61,
158,
243,
128,
153,
117,
114,
82,
105,
151,
91,
132,
60,
104,
228,
134,
1,
150,
148,
150,
236,
148,
42,
78,
4,
84,
217,
126,
57,
104,
223,
141,
21,
128,
244,
102,
154,
94,
185,
127,
47,
123,
48,
123,
50,
123,
52,
123,
53,
123,
54,
123,
55,
123,
57,
123,
59,
123,
61,
123,
63,
123,
64,
123,
65,
123,
66,
123,
67,
123,
68,
123,
70,
123,
72,
123,
74,
123,
77,
123,
78,
123,
83,
123,
85,
123,
87,
123,
89,
123,
92,
123,
94,
123,
95,
123,
97,
123,
99,
123,
100,
123,
101,
123,
102,
123,
103,
123,
104,
123,
105,
123,
106,
123,
107,
123,
108,
123,
109,
123,
111,
123,
112,
123,
115,
123,
116,
123,
118,
123,
120,
123,
122,
123,
124,
123,
125,
123,
127,
123,
129,
123,
130,
123,
131,
123,
132,
123,
134,
123,
135,
123,
136,
123,
137,
123,
138,
123,
139,
123,
140,
123,
142,
123,
143,
123,
145,
123,
146,
123,
147,
123,
150,
123,
152,
123,
153,
123,
154,
123,
155,
123,
158,
123,
159,
123,
160,
123,
163,
123,
164,
123,
165,
123,
174,
123,
175,
123,
176,
123,
178,
123,
179,
123,
181,
123,
182,
123,
183,
123,
185,
123,
186,
123,
187,
123,
188,
123,
189,
123,
190,
123,
191,
123,
192,
123,
194,
123,
195,
123,
196,
123,
194,
87,
63,
128,
151,
104,
229,
93,
59,
101,
159,
82,
109,
96,
154,
159,
155,
79,
172,
142,
108,
81,
171,
91,
19,
95,
233,
93,
94,
108,
241,
98,
33,
141,
113,
81,
169,
148,
254,
82,
159,
108,
223,
130,
215,
114,
162,
87,
132,
103,
45,
141,
31,
89,
156,
143,
199,
131,
149,
84,
141,
123,
48,
79,
189,
108,
100,
91,
209,
89,
19,
159,
228,
83,
202,
134,
168,
154,
55,
140,
161,
128,
69,
101,
126,
152,
250,
86,
199,
150,
46,
82,
220,
116,
80,
82,
225,
91,
2,
99,
2,
137,
86,
78,
208,
98,
42,
96,
250,
104,
115,
81,
152,
91,
160,
81,
194,
137,
161,
123,
134,
153,
80,
127,
239,
96,
76,
112,
47,
141,
73,
81,
127,
94,
27,
144,
112,
116,
196,
137,
45,
87,
69,
120,
82,
95,
159,
159,
250,
149,
104,
143,
60,
155,
225,
139,
120,
118,
66,
104,
220,
103,
234,
141,
53,
141,
61,
82,
138,
143,
218,
110,
205,
104,
5,
149,
237,
144,
253,
86,
156,
103,
249,
136,
199,
143,
200,
84,
197,
123,
200,
123,
201,
123,
202,
123,
203,
123,
205,
123,
206,
123,
207,
123,
208,
123,
210,
123,
212,
123,
213,
123,
214,
123,
215,
123,
216,
123,
219,
123,
220,
123,
222,
123,
223,
123,
224,
123,
226,
123,
227,
123,
228,
123,
231,
123,
232,
123,
233,
123,
235,
123,
236,
123,
237,
123,
239,
123,
240,
123,
242,
123,
243,
123,
244,
123,
245,
123,
246,
123,
248,
123,
249,
123,
250,
123,
251,
123,
253,
123,
255,
123,
0,
124,
1,
124,
2,
124,
3,
124,
4,
124,
5,
124,
6,
124,
8,
124,
9,
124,
10,
124,
13,
124,
14,
124,
16,
124,
17,
124,
18,
124,
19,
124,
20,
124,
21,
124,
23,
124,
24,
124,
25,
124,
26,
124,
27,
124,
28,
124,
29,
124,
30,
124,
32,
124,
33,
124,
34,
124,
35,
124,
36,
124,
37,
124,
40,
124,
41,
124,
43,
124,
44,
124,
45,
124,
46,
124,
47,
124,
48,
124,
49,
124,
50,
124,
51,
124,
52,
124,
53,
124,
54,
124,
55,
124,
57,
124,
58,
124,
59,
124,
60,
124,
61,
124,
62,
124,
66,
124,
184,
154,
105,
91,
119,
109,
38,
108,
165,
78,
179,
91,
135,
154,
99,
145,
168,
97,
175,
144,
233,
151,
43,
84,
181,
109,
210,
91,
253,
81,
138,
85,
85,
127,
240,
127,
188,
100,
77,
99,
241,
101,
190,
97,
141,
96,
10,
113,
87,
108,
73,
108,
47,
89,
109,
103,
42,
130,
213,
88,
142,
86,
106,
140,
235,
107,
221,
144,
125,
89,
23,
128,
247,
83,
105,
109,
117,
84,
157,
85,
119,
131,
207,
131,
56,
104,
190,
121,
140,
84,
85,
79,
8,
84,
210,
118,
137,
140,
2,
150,
179,
108,
184,
109,
107,
141,
16,
137,
100,
158,
58,
141,
63,
86,
209,
158,
213,
117,
136,
95,
224,
114,
104,
96,
252,
84,
168,
78,
42,
106,
97,
136,
82,
96,
112,
143,
196,
84,
216,
112,
121,
134,
63,
158,
42,
109,
143,
91,
24,
95,
162,
126,
137,
85,
175,
79,
52,
115,
60,
84,
154,
83,
25,
80,
14,
84,
124,
84,
78,
78,
253,
95,
90,
116,
246,
88,
107,
132,
225,
128,
116,
135,
208,
114,
202,
124,
86,
110,
67,
124,
68,
124,
69,
124,
70,
124,
71,
124,
72,
124,
73,
124,
74,
124,
75,
124,
76,
124,
78,
124,
79,
124,
80,
124,
81,
124,
82,
124,
83,
124,
84,
124,
85,
124,
86,
124,
87,
124,
88,
124,
89,
124,
90,
124,
91,
124,
92,
124,
93,
124,
94,
124,
95,
124,
96,
124,
97,
124,
98,
124,
99,
124,
100,
124,
101,
124,
102,
124,
103,
124,
104,
124,
105,
124,
106,
124,
107,
124,
108,
124,
109,
124,
110,
124,
111,
124,
112,
124,
113,
124,
114,
124,
117,
124,
118,
124,
119,
124,
120,
124,
121,
124,
122,
124,
126,
124,
127,
124,
128,
124,
129,
124,
130,
124,
131,
124,
132,
124,
133,
124,
134,
124,
135,
124,
136,
124,
138,
124,
139,
124,
140,
124,
141,
124,
142,
124,
143,
124,
144,
124,
147,
124,
148,
124,
150,
124,
153,
124,
154,
124,
155,
124,
160,
124,
161,
124,
163,
124,
166,
124,
167,
124,
168,
124,
169,
124,
171,
124,
172,
124,
173,
124,
175,
124,
176,
124,
180,
124,
181,
124,
182,
124,
183,
124,
184,
124,
186,
124,
187,
124,
39,
95,
78,
134,
44,
85,
164,
98,
146,
78,
170,
108,
55,
98,
177,
130,
215,
84,
78,
83,
62,
115,
209,
110,
59,
117,
18,
82,
22,
83,
221,
139,
208,
105,
138,
95,
0,
96,
238,
109,
79,
87,
34,
107,
175,
115,
83,
104,
216,
143,
19,
127,
98,
99,
163,
96,
36,
85,
234,
117,
98,
140,
21,
113,
163,
109,
166,
91,
123,
94,
82,
131,
76,
97,
196,
158,
250,
120,
87,
135,
39,
124,
135,
118,
240,
81,
246,
96,
76,
113,
67,
102,
76,
94,
77,
96,
14,
140,
112,
112,
37,
99,
137,
143,
189,
95,
98,
96,
212,
134,
222,
86,
193,
107,
148,
96,
103,
97,
73,
83,
224,
96,
102,
102,
63,
141,
253,
121,
26,
79,
233,
112,
71,
108,
179,
139,
242,
139,
216,
126,
100,
131,
15,
102,
90,
90,
66,
155,
81,
109,
247,
109,
65,
140,
59,
109,
25,
79,
107,
112,
183,
131,
22,
98,
209,
96,
13,
151,
39,
141,
120,
121,
251,
81,
62,
87,
250,
87,
58,
103,
120,
117,
61,
122,
239,
121,
149,
123,
191,
124,
192,
124,
194,
124,
195,
124,
196,
124,
198,
124,
201,
124,
203,
124,
206,
124,
207,
124,
208,
124,
209,
124,
210,
124,
211,
124,
212,
124,
216,
124,
218,
124,
219,
124,
221,
124,
222,
124,
225,
124,
226,
124,
227,
124,
228,
124,
229,
124,
230,
124,
231,
124,
233,
124,
234,
124,
235,
124,
236,
124,
237,
124,
238,
124,
240,
124,
241,
124,
242,
124,
243,
124,
244,
124,
245,
124,
246,
124,
247,
124,
249,
124,
250,
124,
252,
124,
253,
124,
254,
124,
255,
124,
0,
125,
1,
125,
2,
125,
3,
125,
4,
125,
5,
125,
6,
125,
7,
125,
8,
125,
9,
125,
11,
125,
12,
125,
13,
125,
14,
125,
15,
125,
16,
125,
17,
125,
18,
125,
19,
125,
20,
125,
21,
125,
22,
125,
23,
125,
24,
125,
25,
125,
26,
125,
27,
125,
28,
125,
29,
125,
30,
125,
31,
125,
33,
125,
35,
125,
36,
125,
37,
125,
38,
125,
40,
125,
41,
125,
42,
125,
44,
125,
45,
125,
46,
125,
48,
125,
49,
125,
50,
125,
51,
125,
52,
125,
53,
125,
54,
125,
140,
128,
101,
153,
249,
143,
192,
111,
165,
139,
33,
158,
236,
89,
233,
126,
9,
127,
9,
84,
129,
103,
216,
104,
145,
143,
77,
124,
198,
150,
202,
83,
37,
96,
190,
117,
114,
108,
115,
83,
201,
90,
167,
126,
36,
99,
224,
81,
10,
129,
241,
93,
223,
132,
128,
98,
128,
81,
99,
91,
14,
79,
109,
121,
66,
82,
184,
96,
78,
109,
196,
91,
194,
91,
161,
139,
176,
139,
226,
101,
204,
95,
69,
150,
147,
89,
231,
126,
170,
126,
9,
86,
183,
103,
57,
89,
115,
79,
182,
91,
160,
82,
90,
131,
138,
152,
62,
141,
50,
117,
190,
148,
71,
80,
60,
122,
247,
78,
182,
103,
126,
154,
193,
90,
124,
107,
209,
118,
90,
87,
22,
92,
58,
123,
244,
149,
78,
113,
124,
81,
169,
128,
112,
130,
120,
89,
4,
127,
39,
131,
192,
104,
236,
103,
177,
120,
119,
120,
227,
98,
97,
99,
128,
123,
237,
79,
106,
82,
207,
81,
80,
131,
219,
105,
116,
146,
245,
141,
49,
141,
193,
137,
46,
149,
173,
123,
246,
78,
55,
125,
56,
125,
57,
125,
58,
125,
59,
125,
60,
125,
61,
125,
62,
125,
63,
125,
64,
125,
65,
125,
66,
125,
67,
125,
68,
125,
69,
125,
70,
125,
71,
125,
72,
125,
73,
125,
74,
125,
75,
125,
76,
125,
77,
125,
78,
125,
79,
125,
80,
125,
81,
125,
82,
125,
83,
125,
84,
125,
85,
125,
86,
125,
87,
125,
88,
125,
89,
125,
90,
125,
91,
125,
92,
125,
93,
125,
94,
125,
95,
125,
96,
125,
97,
125,
98,
125,
99,
125,
100,
125,
101,
125,
102,
125,
103,
125,
104,
125,
105,
125,
106,
125,
107,
125,
108,
125,
109,
125,
111,
125,
112,
125,
113,
125,
114,
125,
115,
125,
116,
125,
117,
125,
118,
125,
120,
125,
121,
125,
122,
125,
123,
125,
124,
125,
125,
125,
126,
125,
127,
125,
128,
125,
129,
125,
130,
125,
131,
125,
132,
125,
133,
125,
134,
125,
135,
125,
136,
125,
137,
125,
138,
125,
139,
125,
140,
125,
141,
125,
142,
125,
143,
125,
144,
125,
145,
125,
146,
125,
147,
125,
148,
125,
149,
125,
150,
125,
151,
125,
152,
125,
101,
80,
48,
130,
81,
82,
111,
153,
16,
110,
133,
110,
167,
109,
250,
94,
245,
80,
220,
89,
6,
92,
70,
109,
95,
108,
134,
117,
139,
132,
104,
104,
86,
89,
178,
139,
32,
83,
113,
145,
77,
150,
73,
133,
18,
105,
1,
121,
38,
113,
246,
128,
164,
78,
202,
144,
71,
109,
132,
154,
7,
90,
188,
86,
5,
100,
240,
148,
235,
119,
165,
79,
26,
129,
225,
114,
210,
137,
122,
153,
52,
127,
222,
126,
127,
82,
89,
101,
117,
145,
127,
143,
131,
143,
235,
83,
150,
122,
237,
99,
165,
99,
134,
118,
248,
121,
87,
136,
54,
150,
42,
98,
171,
82,
130,
130,
84,
104,
112,
103,
119,
99,
107,
119,
237,
122,
1,
109,
211,
126,
227,
137,
208,
89,
18,
98,
201,
133,
165,
130,
76,
117,
31,
80,
203,
78,
165,
117,
235,
139,
74,
92,
254,
93,
75,
123,
164,
101,
209,
145,
202,
78,
37,
109,
95,
137,
39,
125,
38,
149,
197,
78,
40,
140,
219,
143,
115,
151,
75,
102,
129,
121,
209,
143,
236,
112,
120,
109,
153,
125,
154,
125,
155,
125,
156,
125,
157,
125,
158,
125,
159,
125,
160,
125,
161,
125,
162,
125,
163,
125,
164,
125,
165,
125,
167,
125,
168,
125,
169,
125,
170,
125,
171,
125,
172,
125,
173,
125,
175,
125,
176,
125,
177,
125,
178,
125,
179,
125,
180,
125,
181,
125,
182,
125,
183,
125,
184,
125,
185,
125,
186,
125,
187,
125,
188,
125,
189,
125,
190,
125,
191,
125,
192,
125,
193,
125,
194,
125,
195,
125,
196,
125,
197,
125,
198,
125,
199,
125,
200,
125,
201,
125,
202,
125,
203,
125,
204,
125,
205,
125,
206,
125,
207,
125,
208,
125,
209,
125,
210,
125,
211,
125,
212,
125,
213,
125,
214,
125,
215,
125,
216,
125,
217,
125,
218,
125,
219,
125,
220,
125,
221,
125,
222,
125,
223,
125,
224,
125,
225,
125,
226,
125,
227,
125,
228,
125,
229,
125,
230,
125,
231,
125,
232,
125,
233,
125,
234,
125,
235,
125,
236,
125,
237,
125,
238,
125,
239,
125,
240,
125,
241,
125,
242,
125,
243,
125,
244,
125,
245,
125,
246,
125,
247,
125,
248,
125,
249,
125,
250,
125,
61,
92,
178,
82,
70,
131,
98,
81,
14,
131,
91,
119,
118,
102,
184,
156,
172,
78,
202,
96,
190,
124,
179,
124,
207,
126,
149,
78,
102,
139,
111,
102,
136,
152,
89,
151,
131,
88,
108,
101,
92,
149,
132,
95,
201,
117,
86,
151,
223,
122,
222,
122,
192,
81,
175,
112,
152,
122,
234,
99,
118,
122,
160,
126,
150,
115,
237,
151,
69,
78,
120,
112,
93,
78,
82,
145,
169,
83,
81,
101,
231,
101,
252,
129,
5,
130,
142,
84,
49,
92,
154,
117,
160,
151,
216,
98,
217,
114,
189,
117,
69,
92,
121,
154,
202,
131,
64,
92,
128,
84,
233,
119,
62,
78,
174,
108,
90,
128,
210,
98,
110,
99,
232,
93,
119,
81,
221,
141,
30,
142,
47,
149,
241,
79,
229,
83,
231,
96,
172,
112,
103,
82,
80,
99,
67,
158,
31,
90,
38,
80,
55,
119,
119,
83,
226,
126,
133,
100,
43,
101,
137,
98,
152,
99,
20,
80,
53,
114,
201,
137,
179,
81,
192,
139,
221,
126,
71,
87,
204,
131,
167,
148,
155,
81,
27,
84,
251,
92,
251,
125,
252,
125,
253,
125,
254,
125,
255,
125,
0,
126,
1,
126,
2,
126,
3,
126,
4,
126,
5,
126,
6,
126,
7,
126,
8,
126,
9,
126,
10,
126,
11,
126,
12,
126,
13,
126,
14,
126,
15,
126,
16,
126,
17,
126,
18,
126,
19,
126,
20,
126,
21,
126,
22,
126,
23,
126,
24,
126,
25,
126,
26,
126,
27,
126,
28,
126,
29,
126,
30,
126,
31,
126,
32,
126,
33,
126,
34,
126,
35,
126,
36,
126,
37,
126,
38,
126,
39,
126,
40,
126,
41,
126,
42,
126,
43,
126,
44,
126,
45,
126,
46,
126,
47,
126,
48,
126,
49,
126,
50,
126,
51,
126,
52,
126,
53,
126,
54,
126,
55,
126,
56,
126,
57,
126,
58,
126,
60,
126,
61,
126,
62,
126,
63,
126,
64,
126,
66,
126,
67,
126,
68,
126,
69,
126,
70,
126,
72,
126,
73,
126,
74,
126,
75,
126,
76,
126,
77,
126,
78,
126,
79,
126,
80,
126,
81,
126,
82,
126,
83,
126,
84,
126,
85,
126,
86,
126,
87,
126,
88,
126,
89,
126,
90,
126,
91,
126,
92,
126,
93,
126,
202,
79,
227,
122,
90,
109,
225,
144,
143,
154,
128,
85,
150,
84,
97,
83,
175,
84,
0,
95,
233,
99,
119,
105,
239,
81,
104,
97,
10,
82,
42,
88,
216,
82,
78,
87,
13,
120,
11,
119,
183,
94,
119,
97,
224,
124,
91,
98,
151,
98,
162,
78,
149,
112,
3,
128,
247,
98,
228,
112,
96,
151,
119,
87,
219,
130,
239,
103,
245,
104,
213,
120,
151,
152,
209,
121,
243,
88,
179,
84,
239,
83,
52,
110,
75,
81,
59,
82,
162,
91,
254,
139,
175,
128,
67,
85,
166,
87,
115,
96,
81,
87,
45,
84,
122,
122,
80,
96,
84,
91,
167,
99,
160,
98,
227,
83,
99,
98,
199,
91,
175,
103,
237,
84,
159,
122,
230,
130,
119,
145,
147,
94,
228,
136,
56,
89,
174,
87,
14,
99,
232,
141,
239,
128,
87,
87,
119,
123,
169,
79,
235,
95,
189,
91,
62,
107,
33,
83,
80,
123,
194,
114,
70,
104,
255,
119,
54,
119,
247,
101,
181,
81,
143,
78,
212,
118,
191,
92,
165,
122,
117,
132,
78,
89,
65,
155,
128,
80,
94,
126,
95,
126,
96,
126,
97,
126,
98,
126,
99,
126,
100,
126,
101,
126,
102,
126,
103,
126,
104,
126,
105,
126,
106,
126,
107,
126,
108,
126,
109,
126,
110,
126,
111,
126,
112,
126,
113,
126,
114,
126,
115,
126,
116,
126,
117,
126,
118,
126,
119,
126,
120,
126,
121,
126,
122,
126,
123,
126,
124,
126,
125,
126,
126,
126,
127,
126,
128,
126,
129,
126,
131,
126,
132,
126,
133,
126,
134,
126,
135,
126,
136,
126,
137,
126,
138,
126,
139,
126,
140,
126,
141,
126,
142,
126,
143,
126,
144,
126,
145,
126,
146,
126,
147,
126,
148,
126,
149,
126,
150,
126,
151,
126,
152,
126,
153,
126,
154,
126,
156,
126,
157,
126,
158,
126,
174,
126,
180,
126,
187,
126,
188,
126,
214,
126,
228,
126,
236,
126,
249,
126,
10,
127,
16,
127,
30,
127,
55,
127,
57,
127,
59,
127,
60,
127,
61,
127,
62,
127,
63,
127,
64,
127,
65,
127,
67,
127,
70,
127,
71,
127,
72,
127,
73,
127,
74,
127,
75,
127,
76,
127,
77,
127,
78,
127,
79,
127,
82,
127,
83,
127,
136,
153,
39,
97,
131,
110,
100,
87,
6,
102,
70,
99,
240,
86,
236,
98,
105,
98,
211,
94,
20,
150,
131,
87,
201,
98,
135,
85,
33,
135,
74,
129,
163,
143,
102,
85,
177,
131,
101,
103,
86,
141,
221,
132,
106,
90,
15,
104,
230,
98,
238,
123,
17,
150,
112,
81,
156,
111,
48,
140,
253,
99,
200,
137,
210,
97,
6,
127,
194,
112,
229,
110,
5,
116,
148,
105,
252,
114,
202,
94,
206,
144,
23,
103,
106,
109,
94,
99,
179,
82,
98,
114,
1,
128,
108,
79,
229,
89,
106,
145,
217,
112,
157,
109,
210,
82,
80,
78,
247,
150,
109,
149,
126,
133,
202,
120,
47,
125,
33,
81,
146,
87,
194,
100,
139,
128,
123,
124,
234,
108,
241,
104,
94,
105,
183,
81,
152,
83,
168,
104,
129,
114,
206,
158,
241,
123,
248,
114,
187,
121,
19,
111,
6,
116,
78,
103,
204,
145,
164,
156,
60,
121,
137,
131,
84,
131,
15,
84,
23,
104,
61,
78,
137,
83,
177,
82,
62,
120,
134,
83,
41,
82,
136,
80,
139,
79,
208,
79,
86,
127,
89,
127,
91,
127,
92,
127,
93,
127,
94,
127,
96,
127,
99,
127,
100,
127,
101,
127,
102,
127,
103,
127,
107,
127,
108,
127,
109,
127,
111,
127,
112,
127,
115,
127,
117,
127,
118,
127,
119,
127,
120,
127,
122,
127,
123,
127,
124,
127,
125,
127,
127,
127,
128,
127,
130,
127,
131,
127,
132,
127,
133,
127,
134,
127,
135,
127,
136,
127,
137,
127,
139,
127,
141,
127,
143,
127,
144,
127,
145,
127,
146,
127,
147,
127,
149,
127,
150,
127,
151,
127,
152,
127,
153,
127,
155,
127,
156,
127,
160,
127,
162,
127,
163,
127,
165,
127,
166,
127,
168,
127,
169,
127,
170,
127,
171,
127,
172,
127,
173,
127,
174,
127,
177,
127,
179,
127,
180,
127,
181,
127,
182,
127,
183,
127,
186,
127,
187,
127,
190,
127,
192,
127,
194,
127,
195,
127,
196,
127,
198,
127,
199,
127,
200,
127,
201,
127,
203,
127,
205,
127,
207,
127,
208,
127,
209,
127,
210,
127,
211,
127,
214,
127,
215,
127,
217,
127,
218,
127,
219,
127,
220,
127,
221,
127,
222,
127,
226,
127,
227,
127,
226,
117,
203,
122,
146,
124,
165,
108,
182,
150,
155,
82,
131,
116,
233,
84,
233,
79,
84,
128,
178,
131,
222,
143,
112,
149,
201,
94,
28,
96,
159,
109,
24,
94,
91,
101,
56,
129,
254,
148,
75,
96,
188,
112,
195,
126,
174,
124,
201,
81,
129,
104,
177,
124,
111,
130,
36,
78,
134,
143,
207,
145,
126,
102,
174,
78,
5,
140,
169,
100,
74,
128,
218,
80,
151,
117,
206,
113,
229,
91,
189,
143,
102,
111,
134,
78,
130,
100,
99,
149,
214,
94,
153,
101,
23,
82,
194,
136,
200,
112,
163,
82,
14,
115,
51,
116,
151,
103,
247,
120,
22,
151,
52,
78,
187,
144,
222,
156,
203,
109,
219,
81,
65,
141,
29,
84,
206,
98,
178,
115,
241,
131,
246,
150,
132,
159,
195,
148,
54,
79,
154,
127,
204,
81,
117,
112,
117,
150,
173,
92,
134,
152,
230,
83,
228,
78,
156,
110,
9,
116,
180,
105,
107,
120,
143,
153,
89,
117,
24,
82,
36,
118,
65,
109,
243,
103,
109,
81,
153,
159,
75,
128,
153,
84,
60,
123,
191,
122,
228,
127,
231,
127,
232,
127,
234,
127,
235,
127,
236,
127,
237,
127,
239,
127,
242,
127,
244,
127,
245,
127,
246,
127,
247,
127,
248,
127,
249,
127,
250,
127,
253,
127,
254,
127,
255,
127,
2,
128,
7,
128,
8,
128,
9,
128,
10,
128,
14,
128,
15,
128,
17,
128,
19,
128,
26,
128,
27,
128,
29,
128,
30,
128,
31,
128,
33,
128,
35,
128,
36,
128,
43,
128,
44,
128,
45,
128,
46,
128,
47,
128,
48,
128,
50,
128,
52,
128,
57,
128,
58,
128,
60,
128,
62,
128,
64,
128,
65,
128,
68,
128,
69,
128,
71,
128,
72,
128,
73,
128,
78,
128,
79,
128,
80,
128,
81,
128,
83,
128,
85,
128,
86,
128,
87,
128,
89,
128,
91,
128,
92,
128,
93,
128,
94,
128,
95,
128,
96,
128,
97,
128,
98,
128,
99,
128,
100,
128,
101,
128,
102,
128,
103,
128,
104,
128,
107,
128,
108,
128,
109,
128,
110,
128,
111,
128,
112,
128,
114,
128,
115,
128,
116,
128,
117,
128,
118,
128,
119,
128,
120,
128,
121,
128,
122,
128,
123,
128,
124,
128,
125,
128,
134,
150,
132,
87,
226,
98,
71,
150,
124,
105,
4,
90,
2,
100,
211,
123,
15,
111,
75,
150,
166,
130,
98,
83,
133,
152,
144,
94,
137,
112,
179,
99,
100,
83,
79,
134,
129,
156,
147,
158,
140,
120,
50,
151,
239,
141,
66,
141,
127,
158,
94,
111,
132,
121,
85,
95,
70,
150,
46,
98,
116,
154,
21,
84,
221,
148,
163,
79,
197,
101,
101,
92,
97,
92,
21,
127,
81,
134,
47,
108,
139,
95,
135,
115,
228,
110,
255,
126,
230,
92,
27,
99,
106,
91,
230,
110,
117,
83,
113,
78,
160,
99,
101,
117,
161,
98,
110,
143,
38,
79,
209,
78,
166,
108,
182,
126,
186,
139,
29,
132,
186,
135,
87,
127,
59,
144,
35,
149,
169,
123,
161,
154,
248,
136,
61,
132,
27,
109,
134,
154,
220,
126,
136,
89,
187,
158,
155,
115,
1,
120,
130,
134,
108,
154,
130,
154,
27,
86,
23,
84,
203,
87,
112,
78,
166,
158,
86,
83,
200,
143,
9,
129,
146,
119,
146,
153,
238,
134,
225,
110,
19,
133,
252,
102,
98,
97,
43,
111,
126,
128,
129,
128,
130,
128,
133,
128,
136,
128,
138,
128,
141,
128,
142,
128,
143,
128,
144,
128,
145,
128,
146,
128,
148,
128,
149,
128,
151,
128,
153,
128,
158,
128,
163,
128,
166,
128,
167,
128,
168,
128,
172,
128,
176,
128,
179,
128,
181,
128,
182,
128,
184,
128,
185,
128,
187,
128,
197,
128,
199,
128,
200,
128,
201,
128,
202,
128,
203,
128,
207,
128,
208,
128,
209,
128,
210,
128,
211,
128,
212,
128,
213,
128,
216,
128,
223,
128,
224,
128,
226,
128,
227,
128,
230,
128,
238,
128,
245,
128,
247,
128,
249,
128,
251,
128,
254,
128,
255,
128,
0,
129,
1,
129,
3,
129,
4,
129,
5,
129,
7,
129,
8,
129,
11,
129,
12,
129,
21,
129,
23,
129,
25,
129,
27,
129,
28,
129,
29,
129,
31,
129,
32,
129,
33,
129,
34,
129,
35,
129,
36,
129,
37,
129,
38,
129,
39,
129,
40,
129,
41,
129,
42,
129,
43,
129,
45,
129,
46,
129,
48,
129,
51,
129,
52,
129,
53,
129,
55,
129,
57,
129,
58,
129,
59,
129,
60,
129,
61,
129,
63,
129,
41,
140,
146,
130,
43,
131,
242,
118,
19,
108,
217,
95,
189,
131,
43,
115,
5,
131,
26,
149,
219,
107,
219,
119,
198,
148,
111,
83,
2,
131,
146,
81,
61,
94,
140,
140,
56,
141,
72,
78,
171,
115,
154,
103,
133,
104,
118,
145,
9,
151,
100,
113,
161,
108,
9,
119,
146,
90,
65,
149,
207,
107,
142,
127,
39,
102,
208,
91,
185,
89,
154,
90,
232,
149,
247,
149,
236,
78,
12,
132,
153,
132,
172,
106,
223,
118,
48,
149,
27,
115,
166,
104,
95,
91,
47,
119,
154,
145,
97,
151,
220,
124,
247,
143,
28,
140,
37,
95,
115,
124,
216,
121,
197,
137,
204,
108,
28,
135,
198,
91,
66,
94,
201,
104,
32,
119,
245,
126,
149,
81,
77,
81,
201,
82,
41,
90,
5,
127,
98,
151,
215,
130,
207,
99,
132,
119,
208,
133,
210,
121,
58,
110,
153,
94,
153,
89,
17,
133,
109,
112,
17,
108,
191,
98,
191,
118,
79,
101,
175,
96,
253,
149,
14,
102,
159,
135,
35,
158,
237,
148,
13,
84,
125,
84,
44,
140,
120,
100,
64,
129,
65,
129,
66,
129,
67,
129,
68,
129,
69,
129,
71,
129,
73,
129,
77,
129,
78,
129,
79,
129,
82,
129,
86,
129,
87,
129,
88,
129,
91,
129,
92,
129,
93,
129,
94,
129,
95,
129,
97,
129,
98,
129,
99,
129,
100,
129,
102,
129,
104,
129,
106,
129,
107,
129,
108,
129,
111,
129,
114,
129,
115,
129,
117,
129,
118,
129,
119,
129,
120,
129,
129,
129,
131,
129,
132,
129,
133,
129,
134,
129,
135,
129,
137,
129,
139,
129,
140,
129,
141,
129,
142,
129,
144,
129,
146,
129,
147,
129,
148,
129,
149,
129,
150,
129,
151,
129,
153,
129,
154,
129,
158,
129,
159,
129,
160,
129,
161,
129,
162,
129,
164,
129,
165,
129,
167,
129,
169,
129,
171,
129,
172,
129,
173,
129,
174,
129,
175,
129,
176,
129,
177,
129,
178,
129,
180,
129,
181,
129,
182,
129,
183,
129,
184,
129,
185,
129,
188,
129,
189,
129,
190,
129,
191,
129,
196,
129,
197,
129,
199,
129,
200,
129,
201,
129,
203,
129,
205,
129,
206,
129,
207,
129,
208,
129,
209,
129,
210,
129,
211,
129,
121,
100,
17,
134,
33,
106,
156,
129,
232,
120,
105,
100,
84,
155,
185,
98,
43,
103,
171,
131,
168,
88,
216,
158,
171,
108,
32,
111,
222,
91,
76,
150,
11,
140,
95,
114,
208,
103,
199,
98,
97,
114,
169,
78,
198,
89,
205,
107,
147,
88,
174,
102,
85,
94,
223,
82,
85,
97,
40,
103,
238,
118,
102,
119,
103,
114,
70,
122,
255,
98,
234,
84,
80,
84,
160,
148,
163,
144,
28,
90,
179,
126,
22,
108,
67,
78,
118,
89,
16,
128,
72,
89,
87,
83,
55,
117,
190,
150,
202,
86,
32,
99,
17,
129,
124,
96,
249,
149,
214,
109,
98,
84,
129,
153,
133,
81,
233,
90,
253,
128,
174,
89,
19,
151,
42,
80,
229,
108,
60,
92,
223,
98,
96,
79,
63,
83,
123,
129,
6,
144,
186,
110,
43,
133,
200,
98,
116,
94,
190,
120,
181,
100,
123,
99,
245,
95,
24,
90,
127,
145,
31,
158,
63,
92,
79,
99,
66,
128,
125,
91,
110,
85,
74,
149,
77,
149,
133,
109,
168,
96,
224,
103,
222,
114,
221,
81,
129,
91,
212,
129,
213,
129,
214,
129,
215,
129,
216,
129,
217,
129,
218,
129,
219,
129,
220,
129,
221,
129,
222,
129,
223,
129,
224,
129,
225,
129,
226,
129,
228,
129,
229,
129,
230,
129,
232,
129,
233,
129,
235,
129,
238,
129,
239,
129,
240,
129,
241,
129,
242,
129,
245,
129,
246,
129,
247,
129,
248,
129,
249,
129,
250,
129,
253,
129,
255,
129,
3,
130,
7,
130,
8,
130,
9,
130,
10,
130,
11,
130,
14,
130,
15,
130,
17,
130,
19,
130,
21,
130,
22,
130,
23,
130,
24,
130,
25,
130,
26,
130,
29,
130,
32,
130,
36,
130,
37,
130,
38,
130,
39,
130,
41,
130,
46,
130,
50,
130,
58,
130,
60,
130,
61,
130,
63,
130,
64,
130,
65,
130,
66,
130,
67,
130,
69,
130,
70,
130,
72,
130,
74,
130,
76,
130,
77,
130,
78,
130,
80,
130,
81,
130,
82,
130,
83,
130,
84,
130,
85,
130,
86,
130,
87,
130,
89,
130,
91,
130,
92,
130,
93,
130,
94,
130,
96,
130,
97,
130,
98,
130,
99,
130,
100,
130,
101,
130,
102,
130,
103,
130,
105,
130,
231,
98,
222,
108,
91,
114,
109,
98,
174,
148,
189,
126,
19,
129,
83,
109,
156,
81,
4,
95,
116,
89,
170,
82,
18,
96,
115,
89,
150,
102,
80,
134,
159,
117,
42,
99,
230,
97,
239,
124,
250,
139,
230,
84,
39,
107,
37,
158,
180,
107,
213,
133,
85,
84,
118,
80,
164,
108,
106,
85,
180,
141,
44,
114,
21,
94,
21,
96,
54,
116,
205,
98,
146,
99,
76,
114,
152,
95,
67,
110,
62,
109,
0,
101,
88,
111,
216,
118,
208,
120,
252,
118,
84,
117,
36,
82,
219,
83,
83,
78,
158,
94,
193,
101,
42,
128,
214,
128,
155,
98,
134,
84,
40,
82,
174,
112,
141,
136,
209,
141,
225,
108,
120,
84,
218,
128,
249,
87,
244,
136,
84,
141,
106,
150,
77,
145,
105,
79,
155,
108,
183,
85,
198,
118,
48,
120,
168,
98,
249,
112,
142,
111,
109,
95,
236,
132,
218,
104,
124,
120,
247,
123,
168,
129,
11,
103,
79,
158,
103,
99,
176,
120,
111,
87,
18,
120,
57,
151,
121,
98,
171,
98,
136,
82,
53,
116,
215,
107,
106,
130,
107,
130,
108,
130,
109,
130,
113,
130,
117,
130,
118,
130,
119,
130,
120,
130,
123,
130,
124,
130,
128,
130,
129,
130,
131,
130,
133,
130,
134,
130,
135,
130,
137,
130,
140,
130,
144,
130,
147,
130,
148,
130,
149,
130,
150,
130,
154,
130,
155,
130,
158,
130,
160,
130,
162,
130,
163,
130,
167,
130,
178,
130,
181,
130,
182,
130,
186,
130,
187,
130,
188,
130,
191,
130,
192,
130,
194,
130,
195,
130,
197,
130,
198,
130,
201,
130,
208,
130,
214,
130,
217,
130,
218,
130,
221,
130,
226,
130,
231,
130,
232,
130,
233,
130,
234,
130,
236,
130,
237,
130,
238,
130,
240,
130,
242,
130,
243,
130,
245,
130,
246,
130,
248,
130,
250,
130,
252,
130,
253,
130,
254,
130,
255,
130,
0,
131,
10,
131,
11,
131,
13,
131,
16,
131,
18,
131,
19,
131,
22,
131,
24,
131,
25,
131,
29,
131,
30,
131,
31,
131,
32,
131,
33,
131,
34,
131,
35,
131,
36,
131,
37,
131,
38,
131,
41,
131,
42,
131,
46,
131,
48,
131,
50,
131,
55,
131,
59,
131,
61,
131,
100,
85,
62,
129,
178,
117,
174,
118,
57,
83,
222,
117,
251,
80,
65,
92,
108,
139,
199,
123,
79,
80,
71,
114,
151,
154,
216,
152,
2,
111,
226,
116,
104,
121,
135,
100,
165,
119,
252,
98,
145,
152,
43,
141,
193,
84,
88,
128,
82,
78,
106,
87,
249,
130,
13,
132,
115,
94,
237,
81,
246,
116,
196,
139,
79,
92,
97,
87,
252,
108,
135,
152,
70,
90,
52,
120,
68,
155,
235,
143,
149,
124,
86,
82,
81,
98,
250,
148,
198,
78,
134,
131,
97,
132,
233,
131,
178,
132,
212,
87,
52,
103,
3,
87,
110,
102,
102,
109,
49,
140,
221,
102,
17,
112,
31,
103,
58,
107,
22,
104,
26,
98,
187,
89,
3,
78,
196,
81,
6,
111,
210,
103,
143,
108,
118,
81,
203,
104,
71,
89,
103,
107,
102,
117,
14,
93,
16,
129,
80,
159,
215,
101,
72,
121,
65,
121,
145,
154,
119,
141,
130,
92,
94,
78,
1,
79,
47,
84,
81,
89,
12,
120,
104,
86,
20,
108,
196,
143,
3,
95,
125,
108,
227,
108,
171,
139,
144,
99,
62,
131,
63,
131,
65,
131,
66,
131,
68,
131,
69,
131,
72,
131,
74,
131,
75,
131,
76,
131,
77,
131,
78,
131,
83,
131,
85,
131,
86,
131,
87,
131,
88,
131,
89,
131,
93,
131,
98,
131,
112,
131,
113,
131,
114,
131,
115,
131,
116,
131,
117,
131,
118,
131,
121,
131,
122,
131,
126,
131,
127,
131,
128,
131,
129,
131,
130,
131,
131,
131,
132,
131,
135,
131,
136,
131,
138,
131,
139,
131,
140,
131,
141,
131,
143,
131,
144,
131,
145,
131,
148,
131,
149,
131,
150,
131,
151,
131,
153,
131,
154,
131,
157,
131,
159,
131,
161,
131,
162,
131,
163,
131,
164,
131,
165,
131,
166,
131,
167,
131,
172,
131,
173,
131,
174,
131,
175,
131,
181,
131,
187,
131,
190,
131,
191,
131,
194,
131,
195,
131,
196,
131,
198,
131,
200,
131,
201,
131,
203,
131,
205,
131,
206,
131,
208,
131,
209,
131,
210,
131,
211,
131,
213,
131,
215,
131,
217,
131,
218,
131,
219,
131,
222,
131,
226,
131,
227,
131,
228,
131,
230,
131,
231,
131,
232,
131,
235,
131,
236,
131,
237,
131,
112,
96,
61,
109,
117,
114,
102,
98,
142,
148,
197,
148,
67,
83,
193,
143,
126,
123,
223,
78,
38,
140,
126,
78,
212,
158,
177,
148,
179,
148,
77,
82,
92,
111,
99,
144,
69,
109,
52,
140,
17,
88,
76,
93,
32,
107,
73,
107,
170,
103,
91,
84,
84,
129,
140,
127,
153,
88,
55,
133,
58,
95,
162,
98,
71,
106,
57,
149,
114,
101,
132,
96,
101,
104,
167,
119,
84,
78,
168,
79,
231,
93,
152,
151,
172,
100,
216,
127,
237,
92,
207,
79,
141,
122,
7,
82,
4,
131,
20,
78,
47,
96,
131,
122,
166,
148,
181,
79,
178,
78,
230,
121,
52,
116,
228,
82,
185,
130,
210,
100,
189,
121,
221,
91,
129,
108,
82,
151,
123,
143,
34,
108,
62,
80,
127,
83,
5,
110,
206,
100,
116,
102,
48,
108,
197,
96,
119,
152,
247,
139,
134,
94,
60,
116,
119,
122,
203,
121,
24,
78,
177,
144,
3,
116,
66,
108,
218,
86,
75,
145,
197,
108,
139,
141,
58,
83,
198,
134,
242,
102,
175,
142,
72,
92,
113,
154,
32,
110,
238,
131,
239,
131,
243,
131,
244,
131,
245,
131,
246,
131,
247,
131,
250,
131,
251,
131,
252,
131,
254,
131,
255,
131,
0,
132,
2,
132,
5,
132,
7,
132,
8,
132,
9,
132,
10,
132,
16,
132,
18,
132,
19,
132,
20,
132,
21,
132,
22,
132,
23,
132,
25,
132,
26,
132,
27,
132,
30,
132,
31,
132,
32,
132,
33,
132,
34,
132,
35,
132,
41,
132,
42,
132,
43,
132,
44,
132,
45,
132,
46,
132,
47,
132,
48,
132,
50,
132,
51,
132,
52,
132,
53,
132,
54,
132,
55,
132,
57,
132,
58,
132,
59,
132,
62,
132,
63,
132,
64,
132,
65,
132,
66,
132,
67,
132,
68,
132,
69,
132,
71,
132,
72,
132,
73,
132,
74,
132,
75,
132,
76,
132,
77,
132,
78,
132,
79,
132,
80,
132,
82,
132,
83,
132,
84,
132,
85,
132,
86,
132,
88,
132,
93,
132,
94,
132,
95,
132,
96,
132,
98,
132,
100,
132,
101,
132,
102,
132,
103,
132,
104,
132,
106,
132,
110,
132,
111,
132,
112,
132,
114,
132,
116,
132,
119,
132,
121,
132,
123,
132,
124,
132,
214,
83,
54,
90,
139,
159,
163,
141,
187,
83,
8,
87,
167,
152,
67,
103,
155,
145,
201,
108,
104,
81,
202,
117,
243,
98,
172,
114,
56,
82,
157,
82,
58,
127,
148,
112,
56,
118,
116,
83,
74,
158,
183,
105,
110,
120,
192,
150,
217,
136,
164,
127,
54,
113,
195,
113,
137,
81,
211,
103,
228,
116,
228,
88,
24,
101,
183,
86,
169,
139,
118,
153,
112,
98,
213,
126,
249,
96,
237,
112,
236,
88,
193,
78,
186,
78,
205,
95,
231,
151,
251,
78,
164,
139,
3,
82,
138,
89,
171,
126,
84,
98,
205,
78,
229,
101,
14,
98,
56,
131,
201,
132,
99,
131,
141,
135,
148,
113,
182,
110,
185,
91,
210,
126,
151,
81,
201,
99,
212,
103,
137,
128,
57,
131,
21,
136,
18,
81,
122,
91,
130,
89,
177,
143,
115,
78,
93,
108,
101,
81,
37,
137,
111,
143,
46,
150,
74,
133,
94,
116,
16,
149,
240,
149,
166,
109,
229,
130,
49,
95,
146,
100,
18,
109,
40,
132,
110,
129,
195,
156,
94,
88,
91,
141,
9,
78,
193,
83,
125,
132,
126,
132,
127,
132,
128,
132,
129,
132,
131,
132,
132,
132,
133,
132,
134,
132,
138,
132,
141,
132,
143,
132,
144,
132,
145,
132,
146,
132,
147,
132,
148,
132,
149,
132,
150,
132,
152,
132,
154,
132,
155,
132,
157,
132,
158,
132,
159,
132,
160,
132,
162,
132,
163,
132,
164,
132,
165,
132,
166,
132,
167,
132,
168,
132,
169,
132,
170,
132,
171,
132,
172,
132,
173,
132,
174,
132,
176,
132,
177,
132,
179,
132,
181,
132,
182,
132,
183,
132,
187,
132,
188,
132,
190,
132,
192,
132,
194,
132,
195,
132,
197,
132,
198,
132,
199,
132,
200,
132,
203,
132,
204,
132,
206,
132,
207,
132,
210,
132,
212,
132,
213,
132,
215,
132,
216,
132,
217,
132,
218,
132,
219,
132,
220,
132,
222,
132,
225,
132,
226,
132,
228,
132,
231,
132,
232,
132,
233,
132,
234,
132,
235,
132,
237,
132,
238,
132,
239,
132,
241,
132,
242,
132,
243,
132,
244,
132,
245,
132,
246,
132,
247,
132,
248,
132,
249,
132,
250,
132,
251,
132,
253,
132,
254,
132,
0,
133,
1,
133,
2,
133,
30,
79,
99,
101,
81,
104,
211,
85,
39,
78,
20,
100,
154,
154,
107,
98,
194,
90,
95,
116,
114,
130,
169,
109,
238,
104,
231,
80,
142,
131,
2,
120,
64,
103,
57,
82,
153,
108,
177,
126,
187,
80,
101,
85,
94,
113,
91,
123,
82,
102,
202,
115,
235,
130,
73,
103,
113,
92,
32,
82,
125,
113,
107,
136,
234,
149,
85,
150,
197,
100,
97,
141,
179,
129,
132,
85,
85,
108,
71,
98,
46,
127,
146,
88,
36,
79,
70,
85,
79,
141,
76,
102,
10,
78,
26,
92,
243,
136,
162,
104,
78,
99,
13,
122,
231,
112,
141,
130,
250,
82,
246,
151,
17,
92,
232,
84,
181,
144,
205,
126,
98,
89,
74,
141,
199,
134,
12,
130,
13,
130,
102,
141,
68,
100,
4,
92,
81,
97,
137,
109,
62,
121,
190,
139,
55,
120,
51,
117,
123,
84,
56,
79,
171,
142,
241,
109,
32,
90,
197,
126,
94,
121,
136,
108,
161,
91,
118,
90,
26,
117,
190,
128,
78,
97,
23,
110,
240,
88,
31,
117,
37,
117,
114,
114,
71,
83,
243,
126,
3,
133,
4,
133,
5,
133,
6,
133,
7,
133,
8,
133,
9,
133,
10,
133,
11,
133,
13,
133,
14,
133,
15,
133,
16,
133,
18,
133,
20,
133,
21,
133,
22,
133,
24,
133,
25,
133,
27,
133,
28,
133,
29,
133,
30,
133,
32,
133,
34,
133,
35,
133,
36,
133,
37,
133,
38,
133,
39,
133,
40,
133,
41,
133,
42,
133,
45,
133,
46,
133,
47,
133,
48,
133,
49,
133,
50,
133,
51,
133,
52,
133,
53,
133,
54,
133,
62,
133,
63,
133,
64,
133,
65,
133,
66,
133,
68,
133,
69,
133,
70,
133,
71,
133,
75,
133,
76,
133,
77,
133,
78,
133,
79,
133,
80,
133,
81,
133,
82,
133,
83,
133,
84,
133,
85,
133,
87,
133,
88,
133,
90,
133,
91,
133,
92,
133,
93,
133,
95,
133,
96,
133,
97,
133,
98,
133,
99,
133,
101,
133,
102,
133,
103,
133,
105,
133,
106,
133,
107,
133,
108,
133,
109,
133,
110,
133,
111,
133,
112,
133,
113,
133,
115,
133,
117,
133,
118,
133,
119,
133,
120,
133,
124,
133,
125,
133,
127,
133,
128,
133,
129,
133,
1,
119,
219,
118,
105,
82,
220,
128,
35,
87,
8,
94,
49,
89,
238,
114,
189,
101,
127,
110,
215,
139,
56,
92,
113,
134,
65,
83,
243,
119,
254,
98,
246,
101,
192,
78,
223,
152,
128,
134,
158,
91,
198,
139,
242,
83,
226,
119,
127,
79,
78,
92,
118,
154,
203,
89
],
'i8',
ALLOC_NONE,
Runtime.GLOBAL_BASE + 45812
);
/* memory initializer */ allocate(
[
15,
95,
58,
121,
235,
88,
22,
78,
255,
103,
139,
78,
237,
98,
147,
138,
29,
144,
191,
82,
47,
102,
220,
85,
108,
86,
2,
144,
213,
78,
141,
79,
202,
145,
112,
153,
15,
108,
2,
94,
67,
96,
164,
91,
198,
137,
213,
139,
54,
101,
75,
98,
150,
153,
136,
91,
255,
91,
136,
99,
46,
85,
215,
83,
38,
118,
125,
81,
44,
133,
162,
103,
179,
104,
138,
107,
146,
98,
147,
143,
212,
83,
18,
130,
209,
109,
143,
117,
102,
78,
78,
141,
112,
91,
159,
113,
175,
133,
145,
102,
217,
102,
114,
127,
0,
135,
205,
158,
32,
159,
94,
92,
47,
103,
240,
143,
17,
104,
95,
103,
13,
98,
214,
122,
133,
88,
182,
94,
112,
101,
49,
111,
130,
133,
131,
133,
134,
133,
136,
133,
137,
133,
138,
133,
139,
133,
140,
133,
141,
133,
142,
133,
144,
133,
145,
133,
146,
133,
147,
133,
148,
133,
149,
133,
150,
133,
151,
133,
152,
133,
153,
133,
154,
133,
157,
133,
158,
133,
159,
133,
160,
133,
161,
133,
162,
133,
163,
133,
165,
133,
166,
133,
167,
133,
169,
133,
171,
133,
172,
133,
173,
133,
177,
133,
178,
133,
179,
133,
180,
133,
181,
133,
182,
133,
184,
133,
186,
133,
187,
133,
188,
133,
189,
133,
190,
133,
191,
133,
192,
133,
194,
133,
195,
133,
196,
133,
197,
133,
198,
133,
199,
133,
200,
133,
202,
133,
203,
133,
204,
133,
205,
133,
206,
133,
209,
133,
210,
133,
212,
133,
214,
133,
215,
133,
216,
133,
217,
133,
218,
133,
219,
133,
221,
133,
222,
133,
223,
133,
224,
133,
225,
133,
226,
133,
227,
133,
229,
133,
230,
133,
231,
133,
232,
133,
234,
133,
235,
133,
236,
133,
237,
133,
238,
133,
239,
133,
240,
133,
241,
133,
242,
133,
243,
133,
244,
133,
245,
133,
246,
133,
247,
133,
248,
133,
85,
96,
55,
82,
13,
128,
84,
100,
112,
136,
41,
117,
5,
94,
19,
104,
244,
98,
28,
151,
204,
83,
61,
114,
1,
140,
52,
108,
97,
119,
14,
122,
46,
84,
172,
119,
122,
152,
28,
130,
244,
139,
85,
120,
20,
103,
193,
112,
175,
101,
149,
100,
54,
86,
29,
96,
193,
121,
248,
83,
29,
78,
123,
107,
134,
128,
250,
91,
227,
85,
219,
86,
58,
79,
60,
79,
114,
153,
243,
93,
126,
103,
56,
128,
2,
96,
130,
152,
1,
144,
139,
91,
188,
139,
245,
139,
28,
100,
88,
130,
222,
100,
253,
85,
207,
130,
101,
145,
215,
79,
32,
125,
31,
144,
159,
124,
243,
80,
81,
88,
175,
110,
191,
91,
201,
139,
131,
128,
120,
145,
156,
132,
151,
123,
125,
134,
139,
150,
143,
150,
229,
126,
211,
154,
142,
120,
129,
92,
87,
122,
66,
144,
167,
150,
95,
121,
89,
91,
95,
99,
11,
123,
209,
132,
173,
104,
6,
85,
41,
127,
16,
116,
34,
125,
1,
149,
64,
98,
76,
88,
214,
78,
131,
91,
121,
89,
84,
88,
249,
133,
250,
133,
252,
133,
253,
133,
254,
133,
0,
134,
1,
134,
2,
134,
3,
134,
4,
134,
6,
134,
7,
134,
8,
134,
9,
134,
10,
134,
11,
134,
12,
134,
13,
134,
14,
134,
15,
134,
16,
134,
18,
134,
19,
134,
20,
134,
21,
134,
23,
134,
24,
134,
25,
134,
26,
134,
27,
134,
28,
134,
29,
134,
30,
134,
31,
134,
32,
134,
33,
134,
34,
134,
35,
134,
36,
134,
37,
134,
38,
134,
40,
134,
42,
134,
43,
134,
44,
134,
45,
134,
46,
134,
47,
134,
48,
134,
49,
134,
50,
134,
51,
134,
52,
134,
53,
134,
54,
134,
55,
134,
57,
134,
58,
134,
59,
134,
61,
134,
62,
134,
63,
134,
64,
134,
65,
134,
66,
134,
67,
134,
68,
134,
69,
134,
70,
134,
71,
134,
72,
134,
73,
134,
74,
134,
75,
134,
76,
134,
82,
134,
83,
134,
85,
134,
86,
134,
87,
134,
88,
134,
89,
134,
91,
134,
92,
134,
93,
134,
95,
134,
96,
134,
97,
134,
99,
134,
100,
134,
101,
134,
102,
134,
103,
134,
104,
134,
105,
134,
106,
134,
109,
115,
30,
99,
75,
142,
15,
142,
206,
128,
212,
130,
172,
98,
240,
83,
240,
108,
94,
145,
42,
89,
1,
96,
112,
108,
77,
87,
74,
100,
42,
141,
43,
118,
233,
110,
91,
87,
128,
106,
240,
117,
109,
111,
45,
140,
8,
140,
102,
87,
239,
107,
146,
136,
179,
120,
162,
99,
249,
83,
173,
112,
100,
108,
88,
88,
42,
100,
2,
88,
224,
104,
155,
129,
16,
85,
214,
124,
24,
80,
186,
142,
204,
109,
159,
141,
235,
112,
143,
99,
155,
109,
212,
110,
230,
126,
4,
132,
67,
104,
3,
144,
216,
109,
118,
150,
168,
139,
87,
89,
121,
114,
228,
133,
126,
129,
188,
117,
138,
138,
175,
104,
84,
82,
34,
142,
17,
149,
208,
99,
152,
152,
68,
142,
124,
85,
83,
79,
255,
102,
143,
86,
213,
96,
149,
109,
67,
82,
73,
92,
41,
89,
251,
109,
107,
88,
48,
117,
28,
117,
108,
96,
20,
130,
70,
129,
17,
99,
97,
103,
226,
143,
58,
119,
243,
141,
52,
141,
193,
148,
22,
94,
133,
83,
44,
84,
195,
112,
109,
134,
111,
134,
112,
134,
114,
134,
115,
134,
116,
134,
117,
134,
118,
134,
119,
134,
120,
134,
131,
134,
132,
134,
133,
134,
134,
134,
135,
134,
136,
134,
137,
134,
142,
134,
143,
134,
144,
134,
145,
134,
146,
134,
148,
134,
150,
134,
151,
134,
152,
134,
153,
134,
154,
134,
155,
134,
158,
134,
159,
134,
160,
134,
161,
134,
162,
134,
165,
134,
166,
134,
171,
134,
173,
134,
174,
134,
178,
134,
179,
134,
183,
134,
184,
134,
185,
134,
187,
134,
188,
134,
189,
134,
190,
134,
191,
134,
193,
134,
194,
134,
195,
134,
197,
134,
200,
134,
204,
134,
205,
134,
210,
134,
211,
134,
213,
134,
214,
134,
215,
134,
218,
134,
220,
134,
221,
134,
224,
134,
225,
134,
226,
134,
227,
134,
229,
134,
230,
134,
231,
134,
232,
134,
234,
134,
235,
134,
236,
134,
239,
134,
245,
134,
246,
134,
247,
134,
250,
134,
251,
134,
252,
134,
253,
134,
255,
134,
1,
135,
4,
135,
5,
135,
6,
135,
11,
135,
12,
135,
14,
135,
15,
135,
16,
135,
17,
135,
20,
135,
22,
135,
64,
108,
247,
94,
92,
80,
173,
78,
173,
94,
58,
99,
71,
130,
26,
144,
80,
104,
110,
145,
179,
119,
12,
84,
220,
148,
100,
95,
229,
122,
118,
104,
69,
99,
82,
123,
223,
126,
219,
117,
119,
80,
149,
98,
52,
89,
15,
144,
248,
81,
195,
121,
129,
122,
254,
86,
146,
95,
20,
144,
130,
109,
96,
92,
31,
87,
16,
84,
84,
81,
77,
110,
226,
86,
168,
99,
147,
152,
127,
129,
21,
135,
42,
137,
0,
144,
30,
84,
111,
92,
192,
129,
214,
98,
88,
98,
49,
129,
53,
158,
64,
150,
110,
154,
124,
154,
45,
105,
165,
89,
211,
98,
62,
85,
22,
99,
199,
84,
217,
134,
60,
109,
3,
90,
230,
116,
156,
136,
106,
107,
22,
89,
76,
140,
47,
95,
126,
110,
169,
115,
125,
152,
56,
78,
247,
112,
140,
91,
151,
120,
61,
99,
90,
102,
150,
118,
203,
96,
155,
91,
73,
90,
7,
78,
85,
129,
106,
108,
139,
115,
161,
78,
137,
103,
81,
127,
128,
95,
250,
101,
27,
103,
216,
95,
132,
89,
1,
90,
25,
135,
27,
135,
29,
135,
31,
135,
32,
135,
36,
135,
38,
135,
39,
135,
40,
135,
42,
135,
43,
135,
44,
135,
45,
135,
47,
135,
48,
135,
50,
135,
51,
135,
53,
135,
54,
135,
56,
135,
57,
135,
58,
135,
60,
135,
61,
135,
64,
135,
65,
135,
66,
135,
67,
135,
68,
135,
69,
135,
70,
135,
74,
135,
75,
135,
77,
135,
79,
135,
80,
135,
81,
135,
82,
135,
84,
135,
85,
135,
86,
135,
88,
135,
90,
135,
91,
135,
92,
135,
93,
135,
94,
135,
95,
135,
97,
135,
98,
135,
102,
135,
103,
135,
104,
135,
105,
135,
106,
135,
107,
135,
108,
135,
109,
135,
111,
135,
113,
135,
114,
135,
115,
135,
117,
135,
119,
135,
120,
135,
121,
135,
122,
135,
127,
135,
128,
135,
129,
135,
132,
135,
134,
135,
135,
135,
137,
135,
138,
135,
140,
135,
142,
135,
143,
135,
144,
135,
145,
135,
146,
135,
148,
135,
149,
135,
150,
135,
152,
135,
153,
135,
154,
135,
155,
135,
156,
135,
157,
135,
158,
135,
160,
135,
161,
135,
162,
135,
163,
135,
164,
135,
205,
93,
174,
95,
113,
83,
230,
151,
221,
143,
69,
104,
244,
86,
47,
85,
223,
96,
58,
78,
77,
111,
244,
126,
199,
130,
14,
132,
212,
89,
31,
79,
42,
79,
62,
92,
172,
126,
42,
103,
26,
133,
115,
84,
79,
117,
195,
128,
130,
85,
79,
155,
77,
79,
45,
110,
19,
140,
9,
92,
112,
97,
107,
83,
31,
118,
41,
110,
138,
134,
135,
101,
251,
149,
185,
126,
59,
84,
51,
122,
10,
125,
238,
149,
225,
85,
193,
127,
238,
116,
29,
99,
23,
135,
161,
109,
157,
122,
17,
98,
161,
101,
103,
83,
225,
99,
131,
108,
235,
93,
92,
84,
168,
148,
76,
78,
97,
108,
236,
139,
75,
92,
224,
101,
156,
130,
167,
104,
62,
84,
52,
84,
203,
107,
102,
107,
148,
78,
66,
99,
72,
83,
30,
130,
13,
79,
174,
79,
94,
87,
10,
98,
254,
150,
100,
102,
105,
114,
255,
82,
161,
82,
159,
96,
239,
139,
20,
102,
153,
113,
144,
103,
127,
137,
82,
120,
253,
119,
112,
102,
59,
86,
56,
84,
33,
149,
122,
114,
165,
135,
166,
135,
167,
135,
169,
135,
170,
135,
174,
135,
176,
135,
177,
135,
178,
135,
180,
135,
182,
135,
183,
135,
184,
135,
185,
135,
187,
135,
188,
135,
190,
135,
191,
135,
193,
135,
194,
135,
195,
135,
196,
135,
197,
135,
199,
135,
200,
135,
201,
135,
204,
135,
205,
135,
206,
135,
207,
135,
208,
135,
212,
135,
213,
135,
214,
135,
215,
135,
216,
135,
217,
135,
218,
135,
220,
135,
221,
135,
222,
135,
223,
135,
225,
135,
226,
135,
227,
135,
228,
135,
230,
135,
231,
135,
232,
135,
233,
135,
235,
135,
236,
135,
237,
135,
239,
135,
240,
135,
241,
135,
242,
135,
243,
135,
244,
135,
245,
135,
246,
135,
247,
135,
248,
135,
250,
135,
251,
135,
252,
135,
253,
135,
255,
135,
0,
136,
1,
136,
2,
136,
4,
136,
5,
136,
6,
136,
7,
136,
8,
136,
9,
136,
11,
136,
12,
136,
13,
136,
14,
136,
15,
136,
16,
136,
17,
136,
18,
136,
20,
136,
23,
136,
24,
136,
25,
136,
26,
136,
28,
136,
29,
136,
30,
136,
31,
136,
32,
136,
35,
136,
0,
122,
111,
96,
12,
94,
137,
96,
157,
129,
21,
89,
220,
96,
132,
113,
239,
112,
170,
110,
80,
108,
128,
114,
132,
106,
173,
136,
45,
94,
96,
78,
179,
90,
156,
85,
227,
148,
23,
109,
251,
124,
153,
150,
15,
98,
198,
126,
142,
119,
126,
134,
35,
83,
30,
151,
150,
143,
135,
102,
225,
92,
160,
79,
237,
114,
11,
78,
166,
83,
15,
89,
19,
84,
128,
99,
40,
149,
72,
81,
217,
78,
156,
156,
164,
126,
184,
84,
36,
141,
84,
136,
55,
130,
242,
149,
142,
109,
38,
95,
204,
90,
62,
102,
105,
150,
176,
115,
46,
115,
191,
83,
122,
129,
133,
153,
161,
127,
170,
91,
119,
150,
80,
150,
191,
126,
248,
118,
162,
83,
118,
149,
153,
153,
177,
123,
68,
137,
88,
110,
97,
78,
212,
127,
101,
121,
230,
139,
243,
96,
205,
84,
171,
78,
121,
152,
247,
93,
97,
106,
207,
80,
17,
84,
97,
140,
39,
132,
93,
120,
4,
151,
74,
82,
238,
84,
163,
86,
0,
149,
136,
109,
181,
91,
198,
109,
83,
102,
36,
136,
37,
136,
38,
136,
39,
136,
40,
136,
41,
136,
42,
136,
43,
136,
44,
136,
45,
136,
46,
136,
47,
136,
48,
136,
49,
136,
51,
136,
52,
136,
53,
136,
54,
136,
55,
136,
56,
136,
58,
136,
59,
136,
61,
136,
62,
136,
63,
136,
65,
136,
66,
136,
67,
136,
70,
136,
71,
136,
72,
136,
73,
136,
74,
136,
75,
136,
78,
136,
79,
136,
80,
136,
81,
136,
82,
136,
83,
136,
85,
136,
86,
136,
88,
136,
90,
136,
91,
136,
92,
136,
93,
136,
94,
136,
95,
136,
96,
136,
102,
136,
103,
136,
106,
136,
109,
136,
111,
136,
113,
136,
115,
136,
116,
136,
117,
136,
118,
136,
120,
136,
121,
136,
122,
136,
123,
136,
124,
136,
128,
136,
131,
136,
134,
136,
135,
136,
137,
136,
138,
136,
140,
136,
142,
136,
143,
136,
144,
136,
145,
136,
147,
136,
148,
136,
149,
136,
151,
136,
152,
136,
153,
136,
154,
136,
155,
136,
157,
136,
158,
136,
159,
136,
160,
136,
161,
136,
163,
136,
165,
136,
166,
136,
167,
136,
168,
136,
169,
136,
170,
136,
15,
92,
93,
91,
33,
104,
150,
128,
120,
85,
17,
123,
72,
101,
84,
105,
155,
78,
71,
107,
78,
135,
139,
151,
79,
83,
31,
99,
58,
100,
170,
144,
156,
101,
193,
128,
16,
140,
153,
81,
176,
104,
120,
83,
249,
135,
200,
97,
196,
108,
251,
108,
34,
140,
81,
92,
170,
133,
175,
130,
12,
149,
35,
107,
155,
143,
176,
101,
251,
95,
195,
95,
225,
79,
69,
136,
31,
102,
101,
129,
41,
115,
250,
96,
116,
81,
17,
82,
139,
87,
98,
95,
162,
144,
76,
136,
146,
145,
120,
94,
79,
103,
39,
96,
211,
89,
68,
81,
246,
81,
248,
128,
8,
83,
121,
108,
196,
150,
138,
113,
17,
79,
238,
79,
158,
127,
61,
103,
197,
85,
8,
149,
192,
121,
150,
136,
227,
126,
159,
88,
12,
98,
0,
151,
90,
134,
24,
86,
123,
152,
144,
95,
184,
139,
196,
132,
87,
145,
217,
83,
237,
101,
143,
94,
92,
117,
100,
96,
110,
125,
127,
90,
234,
126,
237,
126,
105,
143,
167,
85,
163,
91,
172,
96,
203,
101,
132,
115,
172,
136,
174,
136,
175,
136,
176,
136,
178,
136,
179,
136,
180,
136,
181,
136,
182,
136,
184,
136,
185,
136,
186,
136,
187,
136,
189,
136,
190,
136,
191,
136,
192,
136,
195,
136,
196,
136,
199,
136,
200,
136,
202,
136,
203,
136,
204,
136,
205,
136,
207,
136,
208,
136,
209,
136,
211,
136,
214,
136,
215,
136,
218,
136,
219,
136,
220,
136,
221,
136,
222,
136,
224,
136,
225,
136,
230,
136,
231,
136,
233,
136,
234,
136,
235,
136,
236,
136,
237,
136,
238,
136,
239,
136,
242,
136,
245,
136,
246,
136,
247,
136,
250,
136,
251,
136,
253,
136,
255,
136,
0,
137,
1,
137,
3,
137,
4,
137,
5,
137,
6,
137,
7,
137,
8,
137,
9,
137,
11,
137,
12,
137,
13,
137,
14,
137,
15,
137,
17,
137,
20,
137,
21,
137,
22,
137,
23,
137,
24,
137,
28,
137,
29,
137,
30,
137,
31,
137,
32,
137,
34,
137,
35,
137,
36,
137,
38,
137,
39,
137,
40,
137,
41,
137,
44,
137,
45,
137,
46,
137,
47,
137,
49,
137,
50,
137,
51,
137,
53,
137,
55,
137,
9,
144,
99,
118,
41,
119,
218,
126,
116,
151,
155,
133,
102,
91,
116,
122,
234,
150,
64,
136,
203,
82,
143,
113,
170,
95,
236,
101,
226,
139,
251,
91,
111,
154,
225,
93,
137,
107,
91,
108,
173,
139,
175,
139,
10,
144,
197,
143,
139,
83,
188,
98,
38,
158,
45,
158,
64,
84,
43,
78,
189,
130,
89,
114,
156,
134,
22,
93,
89,
136,
175,
109,
197,
150,
209,
84,
154,
78,
182,
139,
9,
113,
189,
84,
9,
150,
223,
112,
249,
109,
208,
118,
37,
78,
20,
120,
18,
135,
169,
92,
246,
94,
0,
138,
156,
152,
14,
150,
142,
112,
191,
108,
68,
89,
169,
99,
60,
119,
77,
136,
20,
111,
115,
130,
48,
88,
213,
113,
140,
83,
26,
120,
193,
150,
1,
85,
102,
95,
48,
113,
180,
91,
26,
140,
140,
154,
131,
107,
46,
89,
47,
158,
231,
121,
104,
103,
108,
98,
111,
79,
161,
117,
138,
127,
11,
109,
51,
150,
39,
108,
240,
78,
210,
117,
123,
81,
55,
104,
62,
111,
128,
144,
112,
129,
150,
89,
118,
116,
56,
137,
57,
137,
58,
137,
59,
137,
60,
137,
61,
137,
62,
137,
63,
137,
64,
137,
66,
137,
67,
137,
69,
137,
70,
137,
71,
137,
72,
137,
73,
137,
74,
137,
75,
137,
76,
137,
77,
137,
78,
137,
79,
137,
80,
137,
81,
137,
82,
137,
83,
137,
84,
137,
85,
137,
86,
137,
87,
137,
88,
137,
89,
137,
90,
137,
91,
137,
92,
137,
93,
137,
96,
137,
97,
137,
98,
137,
99,
137,
100,
137,
101,
137,
103,
137,
104,
137,
105,
137,
106,
137,
107,
137,
108,
137,
109,
137,
110,
137,
111,
137,
112,
137,
113,
137,
114,
137,
115,
137,
116,
137,
117,
137,
118,
137,
119,
137,
120,
137,
121,
137,
122,
137,
124,
137,
125,
137,
126,
137,
128,
137,
130,
137,
132,
137,
133,
137,
135,
137,
136,
137,
137,
137,
138,
137,
139,
137,
140,
137,
141,
137,
142,
137,
143,
137,
144,
137,
145,
137,
146,
137,
147,
137,
148,
137,
149,
137,
150,
137,
151,
137,
152,
137,
153,
137,
154,
137,
155,
137,
156,
137,
157,
137,
158,
137,
159,
137,
160,
137,
161,
137,
71,
100,
39,
92,
101,
144,
145,
122,
35,
140,
218,
89,
172,
84,
0,
130,
111,
131,
129,
137,
0,
128,
48,
105,
78,
86,
54,
128,
55,
114,
206,
145,
182,
81,
95,
78,
117,
152,
150,
99,
26,
78,
246,
83,
243,
102,
75,
129,
28,
89,
178,
109,
0,
78,
249,
88,
59,
83,
214,
99,
241,
148,
157,
79,
10,
79,
99,
136,
144,
152,
55,
89,
87,
144,
251,
121,
234,
78,
240,
128,
145,
117,
130,
108,
156,
91,
232,
89,
93,
95,
5,
105,
129,
134,
26,
80,
242,
93,
89,
78,
227,
119,
229,
78,
122,
130,
145,
98,
19,
102,
145,
144,
121,
92,
191,
78,
121,
95,
198,
129,
56,
144,
132,
128,
171,
117,
166,
78,
212,
136,
15,
97,
197,
107,
198,
95,
73,
78,
202,
118,
162,
110,
227,
139,
174,
139,
10,
140,
209,
139,
2,
95,
252,
127,
204,
127,
206,
126,
53,
131,
107,
131,
224,
86,
183,
107,
243,
151,
52,
150,
251,
89,
31,
84,
246,
148,
235,
109,
197,
91,
110,
153,
57,
92,
21,
95,
144,
150,
162,
137,
163,
137,
164,
137,
165,
137,
166,
137,
167,
137,
168,
137,
169,
137,
170,
137,
171,
137,
172,
137,
173,
137,
174,
137,
175,
137,
176,
137,
177,
137,
178,
137,
179,
137,
180,
137,
181,
137,
182,
137,
183,
137,
184,
137,
185,
137,
186,
137,
187,
137,
188,
137,
189,
137,
190,
137,
191,
137,
192,
137,
195,
137,
205,
137,
211,
137,
212,
137,
213,
137,
215,
137,
216,
137,
217,
137,
219,
137,
221,
137,
223,
137,
224,
137,
225,
137,
226,
137,
228,
137,
231,
137,
232,
137,
233,
137,
234,
137,
236,
137,
237,
137,
238,
137,
240,
137,
241,
137,
242,
137,
244,
137,
245,
137,
246,
137,
247,
137,
248,
137,
249,
137,
250,
137,
251,
137,
252,
137,
253,
137,
254,
137,
255,
137,
1,
138,
2,
138,
3,
138,
4,
138,
5,
138,
6,
138,
8,
138,
9,
138,
10,
138,
11,
138,
12,
138,
13,
138,
14,
138,
15,
138,
16,
138,
17,
138,
18,
138,
19,
138,
20,
138,
21,
138,
22,
138,
23,
138,
24,
138,
25,
138,
26,
138,
27,
138,
28,
138,
29,
138,
112,
83,
241,
130,
49,
106,
116,
90,
112,
158,
148,
94,
40,
127,
185,
131,
36,
132,
37,
132,
103,
131,
71,
135,
206,
143,
98,
141,
200,
118,
113,
95,
150,
152,
108,
120,
32,
102,
223,
84,
229,
98,
99,
79,
195,
129,
200,
117,
184,
94,
205,
150,
10,
142,
249,
134,
143,
84,
243,
108,
140,
109,
56,
108,
127,
96,
199,
82,
40,
117,
125,
94,
24,
79,
160,
96,
231,
95,
36,
92,
49,
117,
174,
144,
192,
148,
185,
114,
185,
108,
56,
110,
73,
145,
9,
103,
203,
83,
243,
83,
81,
79,
201,
145,
241,
139,
200,
83,
124,
94,
194,
143,
228,
109,
142,
78,
194,
118,
134,
105,
94,
134,
26,
97,
6,
130,
89,
79,
222,
79,
62,
144,
124,
156,
9,
97,
29,
110,
20,
110,
133,
150,
136,
78,
49,
90,
232,
150,
14,
78,
127,
92,
185,
121,
135,
91,
237,
139,
189,
127,
137,
115,
223,
87,
139,
130,
193,
144,
1,
84,
71,
144,
187,
85,
234,
92,
161,
95,
8,
97,
50,
107,
241,
114,
178,
128,
137,
138,
30,
138,
31,
138,
32,
138,
33,
138,
34,
138,
35,
138,
36,
138,
37,
138,
38,
138,
39,
138,
40,
138,
41,
138,
42,
138,
43,
138,
44,
138,
45,
138,
46,
138,
47,
138,
48,
138,
49,
138,
50,
138,
51,
138,
52,
138,
53,
138,
54,
138,
55,
138,
56,
138,
57,
138,
58,
138,
59,
138,
60,
138,
61,
138,
63,
138,
64,
138,
65,
138,
66,
138,
67,
138,
68,
138,
69,
138,
70,
138,
71,
138,
73,
138,
74,
138,
75,
138,
76,
138,
77,
138,
78,
138,
79,
138,
80,
138,
81,
138,
82,
138,
83,
138,
84,
138,
85,
138,
86,
138,
87,
138,
88,
138,
89,
138,
90,
138,
91,
138,
92,
138,
93,
138,
94,
138,
95,
138,
96,
138,
97,
138,
98,
138,
99,
138,
100,
138,
101,
138,
102,
138,
103,
138,
104,
138,
105,
138,
106,
138,
107,
138,
108,
138,
109,
138,
110,
138,
111,
138,
112,
138,
113,
138,
114,
138,
115,
138,
116,
138,
117,
138,
118,
138,
119,
138,
120,
138,
122,
138,
123,
138,
124,
138,
125,
138,
126,
138,
127,
138,
128,
138,
116,
109,
211,
91,
213,
136,
132,
152,
107,
140,
109,
154,
51,
158,
10,
110,
164,
81,
67,
81,
163,
87,
129,
136,
159,
83,
244,
99,
149,
143,
237,
86,
88,
84,
6,
87,
63,
115,
144,
110,
24,
127,
220,
143,
209,
130,
63,
97,
40,
96,
98,
150,
240,
102,
166,
126,
138,
141,
195,
141,
165,
148,
179,
92,
164,
124,
8,
103,
166,
96,
5,
150,
24,
128,
145,
78,
231,
144,
0,
83,
104,
150,
65,
81,
208,
143,
116,
133,
93,
145,
85,
102,
245,
151,
85,
91,
29,
83,
56,
120,
66,
103,
61,
104,
201,
84,
126,
112,
176,
91,
125,
143,
141,
81,
40,
87,
177,
84,
18,
101,
130,
102,
94,
141,
67,
141,
15,
129,
108,
132,
109,
144,
223,
124,
255,
81,
251,
133,
163,
103,
233,
101,
161,
111,
164,
134,
129,
142,
106,
86,
32,
144,
130,
118,
118,
112,
229,
113,
35,
141,
233,
98,
25,
82,
253,
108,
60,
141,
14,
96,
158,
88,
142,
97,
254,
102,
96,
141,
78,
98,
179,
85,
35,
110,
45,
103,
103,
143,
129,
138,
130,
138,
131,
138,
132,
138,
133,
138,
134,
138,
135,
138,
136,
138,
139,
138,
140,
138,
141,
138,
142,
138,
143,
138,
144,
138,
145,
138,
146,
138,
148,
138,
149,
138,
150,
138,
151,
138,
152,
138,
153,
138,
154,
138,
155,
138,
156,
138,
157,
138,
158,
138,
159,
138,
160,
138,
161,
138,
162,
138,
163,
138,
164,
138,
165,
138,
166,
138,
167,
138,
168,
138,
169,
138,
170,
138,
171,
138,
172,
138,
173,
138,
174,
138,
175,
138,
176,
138,
177,
138,
178,
138,
179,
138,
180,
138,
181,
138,
182,
138,
183,
138,
184,
138,
185,
138,
186,
138,
187,
138,
188,
138,
189,
138,
190,
138,
191,
138,
192,
138,
193,
138,
194,
138,
195,
138,
196,
138,
197,
138,
198,
138,
199,
138,
200,
138,
201,
138,
202,
138,
203,
138,
204,
138,
205,
138,
206,
138,
207,
138,
208,
138,
209,
138,
210,
138,
211,
138,
212,
138,
213,
138,
214,
138,
215,
138,
216,
138,
217,
138,
218,
138,
219,
138,
220,
138,
221,
138,
222,
138,
223,
138,
224,
138,
225,
138,
226,
138,
227,
138,
225,
148,
248,
149,
40,
119,
5,
104,
168,
105,
139,
84,
77,
78,
184,
112,
200,
139,
88,
100,
139,
101,
133,
91,
132,
122,
58,
80,
232,
91,
187,
119,
225,
107,
121,
138,
152,
124,
190,
108,
207,
118,
169,
101,
151,
143,
45,
93,
85,
92,
56,
134,
8,
104,
96,
83,
24,
98,
217,
122,
91,
110,
253,
126,
31,
106,
224,
122,
112,
95,
51,
111,
32,
95,
140,
99,
168,
109,
86,
103,
8,
78,
16,
94,
38,
141,
215,
78,
192,
128,
52,
118,
156,
150,
219,
98,
45,
102,
126,
98,
188,
108,
117,
141,
103,
113,
105,
127,
70,
81,
135,
128,
236,
83,
110,
144,
152,
98,
242,
84,
240,
134,
153,
143,
5,
128,
23,
149,
23,
133,
217,
143,
89,
109,
205,
115,
159,
101,
31,
119,
4,
117,
39,
120,
251,
129,
30,
141,
136,
148,
166,
79,
149,
103,
185,
117,
202,
139,
7,
151,
47,
99,
71,
149,
53,
150,
184,
132,
35,
99,
65,
119,
129,
95,
240,
114,
137,
78,
20,
96,
116,
101,
239,
98,
99,
107,
63,
101,
228,
138,
229,
138,
230,
138,
231,
138,
232,
138,
233,
138,
234,
138,
235,
138,
236,
138,
237,
138,
238,
138,
239,
138,
240,
138,
241,
138,
242,
138,
243,
138,
244,
138,
245,
138,
246,
138,
247,
138,
248,
138,
249,
138,
250,
138,
251,
138,
252,
138,
253,
138,
254,
138,
255,
138,
0,
139,
1,
139,
2,
139,
3,
139,
4,
139,
5,
139,
6,
139,
8,
139,
9,
139,
10,
139,
11,
139,
12,
139,
13,
139,
14,
139,
15,
139,
16,
139,
17,
139,
18,
139,
19,
139,
20,
139,
21,
139,
22,
139,
23,
139,
24,
139,
25,
139,
26,
139,
27,
139,
28,
139,
29,
139,
30,
139,
31,
139,
32,
139,
33,
139,
34,
139,
35,
139,
36,
139,
37,
139,
39,
139,
40,
139,
41,
139,
42,
139,
43,
139,
44,
139,
45,
139,
46,
139,
47,
139,
48,
139,
49,
139,
50,
139,
51,
139,
52,
139,
53,
139,
54,
139,
55,
139,
56,
139,
57,
139,
58,
139,
59,
139,
60,
139,
61,
139,
62,
139,
63,
139,
64,
139,
65,
139,
66,
139,
67,
139,
68,
139,
69,
139,
39,
94,
199,
117,
209,
144,
193,
139,
157,
130,
157,
103,
47,
101,
49,
84,
24,
135,
229,
119,
162,
128,
2,
129,
65,
108,
75,
78,
199,
126,
76,
128,
244,
118,
13,
105,
150,
107,
103,
98,
60,
80,
132,
79,
64,
87,
7,
99,
98,
107,
190,
141,
234,
83,
232,
101,
184,
126,
215,
95,
26,
99,
183,
99,
243,
129,
244,
129,
110,
127,
28,
94,
217,
92,
54,
82,
122,
102,
233,
121,
26,
122,
40,
141,
153,
112,
212,
117,
222,
110,
187,
108,
146,
122,
45,
78,
197,
118,
224,
95,
159,
148,
119,
136,
200,
126,
205,
121,
191,
128,
205,
145,
242,
78,
23,
79,
31,
130,
104,
84,
222,
93,
50,
109,
204,
139,
165,
124,
116,
143,
152,
128,
26,
94,
146,
84,
177,
118,
153,
91,
60,
102,
164,
154,
224,
115,
42,
104,
219,
134,
49,
103,
42,
115,
248,
139,
219,
139,
16,
144,
249,
122,
219,
112,
110,
113,
196,
98,
169,
119,
49,
86,
59,
78,
87,
132,
241,
103,
169,
82,
192,
134,
46,
141,
248,
148,
81,
123,
70,
139,
71,
139,
72,
139,
73,
139,
74,
139,
75,
139,
76,
139,
77,
139,
78,
139,
79,
139,
80,
139,
81,
139,
82,
139,
83,
139,
84,
139,
85,
139,
86,
139,
87,
139,
88,
139,
89,
139,
90,
139,
91,
139,
92,
139,
93,
139,
94,
139,
95,
139,
96,
139,
97,
139,
98,
139,
99,
139,
100,
139,
101,
139,
103,
139,
104,
139,
105,
139,
106,
139,
107,
139,
109,
139,
110,
139,
111,
139,
112,
139,
113,
139,
114,
139,
115,
139,
116,
139,
117,
139,
118,
139,
119,
139,
120,
139,
121,
139,
122,
139,
123,
139,
124,
139,
125,
139,
126,
139,
127,
139,
128,
139,
129,
139,
130,
139,
131,
139,
132,
139,
133,
139,
134,
139,
135,
139,
136,
139,
137,
139,
138,
139,
139,
139,
140,
139,
141,
139,
142,
139,
143,
139,
144,
139,
145,
139,
146,
139,
147,
139,
148,
139,
149,
139,
150,
139,
151,
139,
152,
139,
153,
139,
154,
139,
155,
139,
156,
139,
157,
139,
158,
139,
159,
139,
172,
139,
177,
139,
187,
139,
199,
139,
208,
139,
234,
139,
9,
140,
30,
140,
79,
79,
232,
108,
93,
121,
123,
154,
147,
98,
42,
114,
253,
98,
19,
78,
22,
120,
108,
143,
176,
100,
90,
141,
198,
123,
105,
104,
132,
94,
197,
136,
134,
89,
158,
100,
238,
88,
182,
114,
14,
105,
37,
149,
253,
143,
88,
141,
96,
87,
0,
127,
6,
140,
198,
81,
73,
99,
217,
98,
83,
83,
76,
104,
34,
116,
1,
131,
76,
145,
68,
85,
64,
119,
124,
112,
74,
109,
121,
81,
168,
84,
68,
141,
255,
89,
203,
110,
196,
109,
92,
91,
43,
125,
212,
78,
125,
124,
211,
110,
80,
91,
234,
129,
13,
110,
87,
91,
3,
155,
213,
104,
42,
142,
151,
91,
252,
126,
59,
96,
181,
126,
185,
144,
112,
141,
79,
89,
205,
99,
223,
121,
179,
141,
82,
83,
207,
101,
86,
121,
197,
139,
59,
150,
196,
126,
187,
148,
130,
126,
52,
86,
137,
145,
0,
103,
106,
127,
10,
92,
117,
144,
40,
102,
230,
93,
80,
79,
222,
103,
90,
80,
92,
79,
80,
87,
167,
94,
16,
232,
17,
232,
18,
232,
19,
232,
20,
232,
56,
140,
57,
140,
58,
140,
59,
140,
60,
140,
61,
140,
62,
140,
63,
140,
64,
140,
66,
140,
67,
140,
68,
140,
69,
140,
72,
140,
74,
140,
75,
140,
77,
140,
78,
140,
79,
140,
80,
140,
81,
140,
82,
140,
83,
140,
84,
140,
86,
140,
87,
140,
88,
140,
89,
140,
91,
140,
92,
140,
93,
140,
94,
140,
95,
140,
96,
140,
99,
140,
100,
140,
101,
140,
102,
140,
103,
140,
104,
140,
105,
140,
108,
140,
109,
140,
110,
140,
111,
140,
112,
140,
113,
140,
114,
140,
116,
140,
117,
140,
118,
140,
119,
140,
123,
140,
124,
140,
125,
140,
126,
140,
127,
140,
128,
140,
129,
140,
131,
140,
132,
140,
134,
140,
135,
140,
136,
140,
139,
140,
141,
140,
142,
140,
143,
140,
144,
140,
145,
140,
146,
140,
147,
140,
149,
140,
150,
140,
151,
140,
153,
140,
154,
140,
155,
140,
156,
140,
157,
140,
158,
140,
159,
140,
160,
140,
161,
140,
162,
140,
163,
140,
164,
140,
165,
140,
166,
140,
167,
140,
168,
140,
169,
140,
170,
140,
171,
140,
172,
140,
173,
140,
141,
78,
12,
78,
64,
81,
16,
78,
255,
94,
69,
83,
21,
78,
152,
78,
30,
78,
50,
155,
108,
91,
105,
86,
40,
78,
186,
121,
63,
78,
21,
83,
71,
78,
45,
89,
59,
114,
110,
83,
16,
108,
223,
86,
228,
128,
151,
153,
211,
107,
126,
119,
23,
159,
54,
78,
159,
78,
16,
159,
92,
78,
105,
78,
147,
78,
136,
130,
91,
91,
108,
85,
15,
86,
196,
78,
141,
83,
157,
83,
163,
83,
165,
83,
174,
83,
101,
151,
93,
141,
26,
83,
245,
83,
38,
83,
46,
83,
62,
83,
92,
141,
102,
83,
99,
83,
2,
82,
8,
82,
14,
82,
45,
82,
51,
82,
63,
82,
64,
82,
76,
82,
94,
82,
97,
82,
92,
82,
175,
132,
125,
82,
130,
82,
129,
82,
144,
82,
147,
82,
130,
81,
84,
127,
187,
78,
195,
78,
201,
78,
194,
78,
232,
78,
225,
78,
235,
78,
222,
78,
27,
79,
243,
78,
34,
79,
100,
79,
245,
78,
37,
79,
39,
79,
9,
79,
43,
79,
94,
79,
103,
79,
56,
101,
90,
79,
93,
79,
174,
140,
175,
140,
176,
140,
177,
140,
178,
140,
179,
140,
180,
140,
181,
140,
182,
140,
183,
140,
184,
140,
185,
140,
186,
140,
187,
140,
188,
140,
189,
140,
190,
140,
191,
140,
192,
140,
193,
140,
194,
140,
195,
140,
196,
140,
197,
140,
198,
140,
199,
140,
200,
140,
201,
140,
202,
140,
203,
140,
204,
140,
205,
140,
206,
140,
207,
140,
208,
140,
209,
140,
210,
140,
211,
140,
212,
140,
213,
140,
214,
140,
215,
140,
216,
140,
217,
140,
218,
140,
219,
140,
220,
140,
221,
140,
222,
140,
223,
140,
224,
140,
225,
140,
226,
140,
227,
140,
228,
140,
229,
140,
230,
140,
231,
140,
232,
140,
233,
140,
234,
140,
235,
140,
236,
140,
237,
140,
238,
140,
239,
140,
240,
140,
241,
140,
242,
140,
243,
140,
244,
140,
245,
140,
246,
140,
247,
140,
248,
140,
249,
140,
250,
140,
251,
140,
252,
140,
253,
140,
254,
140,
255,
140,
0,
141,
1,
141,
2,
141,
3,
141,
4,
141,
5,
141,
6,
141,
7,
141,
8,
141,
9,
141,
10,
141,
11,
141,
12,
141,
13,
141,
95,
79,
87,
79,
50,
79,
61,
79,
118,
79,
116,
79,
145,
79,
137,
79,
131,
79,
143,
79,
126,
79,
123,
79,
170,
79,
124,
79,
172,
79,
148,
79,
230,
79,
232,
79,
234,
79,
197,
79,
218,
79,
227,
79,
220,
79,
209,
79,
223,
79,
248,
79,
41,
80,
76,
80,
243,
79,
44,
80,
15,
80,
46,
80,
45,
80,
254,
79,
28,
80,
12,
80,
37,
80,
40,
80,
126,
80,
67,
80,
85,
80,
72,
80,
78,
80,
108,
80,
123,
80,
165,
80,
167,
80,
169,
80,
186,
80,
214,
80,
6,
81,
237,
80,
236,
80,
230,
80,
238,
80,
7,
81,
11,
81,
221,
78,
61,
108,
88,
79,
101,
79,
206,
79,
160,
159,
70,
108,
116,
124,
110,
81,
253,
93,
201,
158,
152,
153,
129,
81,
20,
89,
249,
82,
13,
83,
7,
138,
16,
83,
235,
81,
25,
89,
85,
81,
160,
78,
86,
81,
179,
78,
110,
136,
164,
136,
181,
78,
20,
129,
210,
136,
128,
121,
52,
91,
3,
136,
184,
127,
171,
81,
177,
81,
189,
81,
188,
81,
14,
141,
15,
141,
16,
141,
17,
141,
18,
141,
19,
141,
20,
141,
21,
141,
22,
141,
23,
141,
24,
141,
25,
141,
26,
141,
27,
141,
28,
141,
32,
141,
81,
141,
82,
141,
87,
141,
95,
141,
101,
141,
104,
141,
105,
141,
106,
141,
108,
141,
110,
141,
111,
141,
113,
141,
114,
141,
120,
141,
121,
141,
122,
141,
123,
141,
124,
141,
125,
141,
126,
141,
127,
141,
128,
141,
130,
141,
131,
141,
134,
141,
135,
141,
136,
141,
137,
141,
140,
141,
141,
141,
142,
141,
143,
141,
144,
141,
146,
141,
147,
141,
149,
141,
150,
141,
151,
141,
152,
141,
153,
141,
154,
141,
155,
141,
156,
141,
157,
141,
158,
141,
160,
141,
161,
141,
162,
141,
164,
141,
165,
141,
166,
141,
167,
141,
168,
141,
169,
141,
170,
141,
171,
141,
172,
141,
173,
141,
174,
141,
175,
141,
176,
141,
178,
141,
182,
141,
183,
141,
185,
141,
187,
141,
189,
141,
192,
141,
193,
141,
194,
141,
197,
141,
199,
141,
200,
141,
201,
141,
202,
141,
205,
141,
208,
141,
210,
141,
211,
141,
212,
141,
199,
81,
150,
81,
162,
81,
165,
81,
160,
139,
166,
139,
167,
139,
170,
139,
180,
139,
181,
139,
183,
139,
194,
139,
195,
139,
203,
139,
207,
139,
206,
139,
210,
139,
211,
139,
212,
139,
214,
139,
216,
139,
217,
139,
220,
139,
223,
139,
224,
139,
228,
139,
232,
139,
233,
139,
238,
139,
240,
139,
243,
139,
246,
139,
249,
139,
252,
139,
255,
139,
0,
140,
2,
140,
4,
140,
7,
140,
12,
140,
15,
140,
17,
140,
18,
140,
20,
140,
21,
140,
22,
140,
25,
140,
27,
140,
24,
140,
29,
140,
31,
140,
32,
140,
33,
140,
37,
140,
39,
140,
42,
140,
43,
140,
46,
140,
47,
140,
50,
140,
51,
140,
53,
140,
54,
140,
105,
83,
122,
83,
29,
150,
34,
150,
33,
150,
49,
150,
42,
150,
61,
150,
60,
150,
66,
150,
73,
150,
84,
150,
95,
150,
103,
150,
108,
150,
114,
150,
116,
150,
136,
150,
141,
150,
151,
150,
176,
150,
151,
144,
155,
144,
157,
144,
153,
144,
172,
144,
161,
144,
180,
144,
179,
144,
182,
144,
186,
144,
213,
141,
216,
141,
217,
141,
220,
141,
224,
141,
225,
141,
226,
141,
229,
141,
230,
141,
231,
141,
233,
141,
237,
141,
238,
141,
240,
141,
241,
141,
242,
141,
244,
141,
246,
141,
252,
141,
254,
141,
255,
141,
0,
142,
1,
142,
2,
142,
3,
142,
4,
142,
6,
142,
7,
142,
8,
142,
11,
142,
13,
142,
14,
142,
16,
142,
17,
142,
18,
142,
19,
142,
21,
142,
22,
142,
23,
142,
24,
142,
25,
142,
26,
142,
27,
142,
28,
142,
32,
142,
33,
142,
36,
142,
37,
142,
38,
142,
39,
142,
40,
142,
43,
142,
45,
142,
48,
142,
50,
142,
51,
142,
52,
142,
54,
142,
55,
142,
56,
142,
59,
142,
60,
142,
62,
142,
63,
142,
67,
142,
69,
142,
70,
142,
76,
142,
77,
142,
78,
142,
79,
142,
80,
142,
83,
142,
84,
142,
85,
142,
86,
142,
87,
142,
88,
142,
90,
142,
91,
142,
92,
142,
93,
142,
94,
142,
95,
142,
96,
142,
97,
142,
98,
142,
99,
142,
100,
142,
101,
142,
103,
142,
104,
142,
106,
142,
107,
142,
110,
142,
113,
142,
184,
144,
176,
144,
207,
144,
197,
144,
190,
144,
208,
144,
196,
144,
199,
144,
211,
144,
230,
144,
226,
144,
220,
144,
215,
144,
219,
144,
235,
144,
239,
144,
254,
144,
4,
145,
34,
145,
30,
145,
35,
145,
49,
145,
47,
145,
57,
145,
67,
145,
70,
145,
13,
82,
66,
89,
162,
82,
172,
82,
173,
82,
190,
82,
255,
84,
208,
82,
214,
82,
240,
82,
223,
83,
238,
113,
205,
119,
244,
94,
245,
81,
252,
81,
47,
155,
182,
83,
1,
95,
90,
117,
239,
93,
76,
87,
169,
87,
161,
87,
126,
88,
188,
88,
197,
88,
209,
88,
41,
87,
44,
87,
42,
87,
51,
87,
57,
87,
46,
87,
47,
87,
92,
87,
59,
87,
66,
87,
105,
87,
133,
87,
107,
87,
134,
87,
124,
87,
123,
87,
104,
87,
109,
87,
118,
87,
115,
87,
173,
87,
164,
87,
140,
87,
178,
87,
207,
87,
167,
87,
180,
87,
147,
87,
160,
87,
213,
87,
216,
87,
218,
87,
217,
87,
210,
87,
184,
87,
244,
87,
239,
87,
248,
87,
228,
87,
221,
87,
115,
142,
117,
142,
119,
142,
120,
142,
121,
142,
122,
142,
123,
142,
125,
142,
126,
142,
128,
142,
130,
142,
131,
142,
132,
142,
134,
142,
136,
142,
137,
142,
138,
142,
139,
142,
140,
142,
141,
142,
142,
142,
145,
142,
146,
142,
147,
142,
149,
142,
150,
142,
151,
142,
152,
142,
153,
142,
154,
142,
155,
142,
157,
142,
159,
142,
160,
142,
161,
142,
162,
142,
163,
142,
164,
142,
165,
142,
166,
142,
167,
142,
168,
142,
169,
142,
170,
142,
173,
142,
174,
142,
176,
142,
177,
142,
179,
142,
180,
142,
181,
142,
182,
142,
183,
142,
184,
142,
185,
142,
187,
142,
188,
142,
189,
142,
190,
142,
191,
142,
192,
142,
193,
142,
194,
142,
195,
142,
196,
142,
197,
142,
198,
142,
199,
142,
200,
142,
201,
142,
202,
142,
203,
142,
204,
142,
205,
142,
207,
142,
208,
142,
209,
142,
210,
142,
211,
142,
212,
142,
213,
142,
214,
142,
215,
142,
216,
142,
217,
142,
218,
142,
219,
142,
220,
142,
221,
142,
222,
142,
223,
142,
224,
142,
225,
142,
226,
142,
227,
142,
228,
142,
11,
88,
13,
88,
253,
87,
237,
87,
0,
88,
30,
88,
25,
88,
68,
88,
32,
88,
101,
88,
108,
88,
129,
88,
137,
88,
154,
88,
128,
88,
168,
153,
25,
159,
255,
97,
121,
130,
125,
130,
127,
130,
143,
130,
138,
130,
168,
130,
132,
130,
142,
130,
145,
130,
151,
130,
153,
130,
171,
130,
184,
130,
190,
130,
176,
130,
200,
130,
202,
130,
227,
130,
152,
130,
183,
130,
174,
130,
203,
130,
204,
130,
193,
130,
169,
130,
180,
130,
161,
130,
170,
130,
159,
130,
196,
130,
206,
130,
164,
130,
225,
130,
9,
131,
247,
130,
228,
130,
15,
131,
7,
131,
220,
130,
244,
130,
210,
130,
216,
130,
12,
131,
251,
130,
211,
130,
17,
131,
26,
131,
6,
131,
20,
131,
21,
131,
224,
130,
213,
130,
28,
131,
81,
131,
91,
131,
92,
131,
8,
131,
146,
131,
60,
131,
52,
131,
49,
131,
155,
131,
94,
131,
47,
131,
79,
131,
71,
131,
67,
131,
95,
131,
64,
131,
23,
131,
96,
131,
45,
131,
58,
131,
51,
131,
102,
131,
101,
131,
229,
142,
230,
142,
231,
142,
232,
142,
233,
142,
234,
142,
235,
142,
236,
142,
237,
142,
238,
142,
239,
142,
240,
142,
241,
142,
242,
142,
243,
142,
244,
142,
245,
142,
246,
142,
247,
142,
248,
142,
249,
142,
250,
142,
251,
142,
252,
142,
253,
142,
254,
142,
255,
142,
0,
143,
1,
143,
2,
143,
3,
143,
4,
143,
5,
143,
6,
143,
7,
143,
8,
143,
9,
143,
10,
143,
11,
143,
12,
143,
13,
143,
14,
143,
15,
143,
16,
143,
17,
143,
18,
143,
19,
143,
20,
143,
21,
143,
22,
143,
23,
143,
24,
143,
25,
143,
26,
143,
27,
143,
28,
143,
29,
143,
30,
143,
31,
143,
32,
143,
33,
143,
34,
143,
35,
143,
36,
143,
37,
143,
38,
143,
39,
143,
40,
143,
41,
143,
42,
143,
43,
143,
44,
143,
45,
143,
46,
143,
47,
143,
48,
143,
49,
143,
50,
143,
51,
143,
52,
143,
53,
143,
54,
143,
55,
143,
56,
143,
57,
143,
58,
143,
59,
143,
60,
143,
61,
143,
62,
143,
63,
143,
64,
143,
65,
143,
66,
143,
67,
143,
68,
143,
104,
131,
27,
131,
105,
131,
108,
131,
106,
131,
109,
131,
110,
131,
176,
131,
120,
131,
179,
131,
180,
131,
160,
131,
170,
131,
147,
131,
156,
131,
133,
131,
124,
131,
182,
131,
169,
131,
125,
131,
184,
131,
123,
131,
152,
131,
158,
131,
168,
131,
186,
131,
188,
131,
193,
131,
1,
132,
229,
131,
216,
131,
7,
88,
24,
132,
11,
132,
221,
131,
253,
131,
214,
131,
28,
132,
56,
132,
17,
132,
6,
132,
212,
131,
223,
131,
15,
132,
3,
132,
248,
131,
249,
131,
234,
131,
197,
131,
192,
131,
38,
132,
240,
131,
225,
131,
92,
132,
81,
132,
90,
132,
89,
132,
115,
132,
135,
132,
136,
132,
122,
132,
137,
132,
120,
132,
60,
132,
70,
132,
105,
132,
118,
132,
140,
132,
142,
132,
49,
132,
109,
132,
193,
132,
205,
132,
208,
132,
230,
132,
189,
132,
211,
132,
202,
132,
191,
132,
186,
132,
224,
132,
161,
132,
185,
132,
180,
132,
151,
132,
229,
132,
227,
132,
12,
133,
13,
117,
56,
133,
240,
132,
57,
133,
31,
133,
58,
133,
69,
143,
70,
143,
71,
143,
72,
143,
73,
143,
74,
143,
75,
143,
76,
143,
77,
143,
78,
143,
79,
143,
80,
143,
81,
143,
82,
143,
83,
143,
84,
143,
85,
143,
86,
143,
87,
143,
88,
143,
89,
143,
90,
143,
91,
143,
92,
143,
93,
143,
94,
143,
95,
143,
96,
143,
97,
143,
98,
143,
99,
143,
100,
143,
101,
143,
106,
143,
128,
143,
140,
143,
146,
143,
157,
143,
160,
143,
161,
143,
162,
143,
164,
143,
165,
143,
166,
143,
167,
143,
170,
143,
172,
143,
173,
143,
174,
143,
175,
143,
178,
143,
179,
143,
180,
143,
181,
143,
183,
143,
184,
143,
186,
143,
187,
143,
188,
143,
191,
143,
192,
143,
195,
143,
198,
143,
201,
143,
202,
143,
203,
143,
204,
143,
205,
143,
207,
143,
210,
143,
214,
143,
215,
143,
218,
143,
224,
143,
225,
143,
227,
143,
231,
143,
236,
143,
239,
143,
241,
143,
242,
143,
244,
143,
245,
143,
246,
143,
250,
143,
251,
143,
252,
143,
254,
143,
255,
143,
7,
144,
8,
144,
12,
144,
14,
144,
19,
144,
21,
144,
24,
144,
86,
133,
59,
133,
255,
132,
252,
132,
89,
133,
72,
133,
104,
133,
100,
133,
94,
133,
122,
133,
162,
119,
67,
133,
114,
133,
123,
133,
164,
133,
168,
133,
135,
133,
143,
133,
121,
133,
174,
133,
156,
133,
133,
133,
185,
133,
183,
133,
176,
133,
211,
133,
193,
133,
220,
133,
255,
133,
39,
134,
5,
134,
41,
134,
22,
134,
60,
134,
254,
94,
8,
95,
60,
89,
65,
89,
55,
128,
85,
89,
90,
89,
88,
89,
15,
83,
34,
92,
37,
92,
44,
92,
52,
92,
76,
98,
106,
98,
159,
98,
187,
98,
202,
98,
218,
98,
215,
98,
238,
98,
34,
99,
246,
98,
57,
99,
75,
99,
67,
99,
173,
99,
246,
99,
113,
99,
122,
99,
142,
99,
180,
99,
109,
99,
172,
99,
138,
99,
105,
99,
174,
99,
188,
99,
242,
99,
248,
99,
224,
99,
255,
99,
196,
99,
222,
99,
206,
99,
82,
100,
198,
99,
190,
99,
69,
100,
65,
100,
11,
100,
27,
100,
32,
100,
12,
100,
38,
100,
33,
100,
94,
100,
132,
100,
109,
100,
150,
100,
25,
144,
28,
144,
35,
144,
36,
144,
37,
144,
39,
144,
40,
144,
41,
144,
42,
144,
43,
144,
44,
144,
48,
144,
49,
144,
50,
144,
51,
144,
52,
144,
55,
144,
57,
144,
58,
144,
61,
144,
63,
144,
64,
144,
67,
144,
69,
144,
70,
144,
72,
144,
73,
144,
74,
144,
75,
144,
76,
144,
78,
144,
84,
144,
85,
144,
86,
144,
89,
144,
90,
144,
92,
144,
93,
144,
94,
144,
95,
144,
96,
144,
97,
144,
100,
144,
102,
144,
103,
144,
105,
144,
106,
144,
107,
144,
108,
144,
111,
144,
112,
144,
113,
144,
114,
144,
115,
144,
118,
144,
119,
144,
120,
144,
121,
144,
122,
144,
123,
144,
124,
144,
126,
144,
129,
144,
132,
144,
133,
144,
134,
144,
135,
144,
137,
144,
138,
144,
140,
144,
141,
144,
142,
144,
143,
144,
144,
144,
146,
144,
148,
144,
150,
144,
152,
144,
154,
144,
156,
144,
158,
144,
159,
144,
160,
144,
164,
144,
165,
144,
167,
144,
168,
144,
169,
144,
171,
144,
173,
144,
178,
144,
183,
144,
188,
144,
189,
144,
191,
144,
192,
144,
122,
100,
183,
100,
184,
100,
153,
100,
186,
100,
192,
100,
208,
100,
215,
100,
228,
100,
226,
100,
9,
101,
37,
101,
46,
101,
11,
95,
210,
95,
25,
117,
17,
95,
95,
83,
241,
83,
253,
83,
233,
83,
232,
83,
251,
83,
18,
84,
22,
84,
6,
84,
75,
84,
82,
84,
83,
84,
84,
84,
86,
84,
67,
84,
33,
84,
87,
84,
89,
84,
35,
84,
50,
84,
130,
84,
148,
84,
119,
84,
113,
84,
100,
84,
154,
84,
155,
84,
132,
84,
118,
84,
102,
84,
157,
84,
208,
84,
173,
84,
194,
84,
180,
84,
210,
84,
167,
84,
166,
84,
211,
84,
212,
84,
114,
84,
163,
84,
213,
84,
187,
84,
191,
84,
204,
84,
217,
84,
218,
84,
220,
84,
169,
84,
170,
84,
164,
84,
221,
84,
207,
84,
222,
84,
27,
85,
231,
84,
32,
85,
253,
84,
20,
85,
243,
84,
34,
85,
35,
85,
15,
85,
17,
85,
39,
85,
42,
85,
103,
85,
143,
85,
181,
85,
73,
85,
109,
85,
65,
85,
85,
85,
63,
85,
80,
85,
60,
85,
194,
144,
195,
144,
198,
144,
200,
144,
201,
144,
203,
144,
204,
144,
205,
144,
210,
144,
212,
144,
213,
144,
214,
144,
216,
144,
217,
144,
218,
144,
222,
144,
223,
144,
224,
144,
227,
144,
228,
144,
229,
144,
233,
144,
234,
144,
236,
144,
238,
144,
240,
144,
241,
144,
242,
144,
243,
144,
245,
144,
246,
144,
247,
144,
249,
144,
250,
144,
251,
144,
252,
144,
255,
144,
0,
145,
1,
145,
3,
145,
5,
145,
6,
145,
7,
145,
8,
145,
9,
145,
10,
145,
11,
145,
12,
145,
13,
145,
14,
145,
15,
145,
16,
145,
17,
145,
18,
145,
19,
145,
20,
145,
21,
145,
22,
145,
23,
145,
24,
145,
26,
145,
27,
145,
28,
145,
29,
145,
31,
145,
32,
145,
33,
145,
36,
145,
37,
145,
38,
145,
39,
145,
40,
145,
41,
145,
42,
145,
43,
145,
44,
145,
45,
145,
46,
145,
48,
145,
50,
145,
51,
145,
52,
145,
53,
145,
54,
145,
55,
145,
56,
145,
58,
145,
59,
145,
60,
145,
61,
145,
62,
145,
63,
145,
64,
145,
65,
145,
66,
145,
68,
145,
55,
85,
86,
85,
117,
85,
118,
85,
119,
85,
51,
85,
48,
85,
92,
85,
139,
85,
210,
85,
131,
85,
177,
85,
185,
85,
136,
85,
129,
85,
159,
85,
126,
85,
214,
85,
145,
85,
123,
85,
223,
85,
189,
85,
190,
85,
148,
85,
153,
85,
234,
85,
247,
85,
201,
85,
31,
86,
209,
85,
235,
85,
236,
85,
212,
85,
230,
85,
221,
85,
196,
85,
239,
85,
229,
85,
242,
85,
243,
85,
204,
85,
205,
85,
232,
85,
245,
85,
228,
85,
148,
143,
30,
86,
8,
86,
12,
86,
1,
86,
36,
86,
35,
86,
254,
85,
0,
86,
39,
86,
45,
86,
88,
86,
57,
86,
87,
86,
44,
86,
77,
86,
98,
86,
89,
86,
92,
86,
76,
86,
84,
86,
134,
86,
100,
86,
113,
86,
107,
86,
123,
86,
124,
86,
133,
86,
147,
86,
175,
86,
212,
86,
215,
86,
221,
86,
225,
86,
245,
86,
235,
86,
249,
86,
255,
86,
4,
87,
10,
87,
9,
87,
28,
87,
15,
94,
25,
94,
20,
94,
17,
94,
49,
94,
59,
94,
60,
94,
69,
145,
71,
145,
72,
145,
81,
145,
83,
145,
84,
145,
85,
145,
86,
145,
88,
145,
89,
145,
91,
145,
92,
145,
95,
145,
96,
145,
102,
145,
103,
145,
104,
145,
107,
145,
109,
145,
115,
145,
122,
145,
123,
145,
124,
145,
128,
145,
129,
145,
130,
145,
131,
145,
132,
145,
134,
145,
136,
145,
138,
145,
142,
145,
143,
145,
147,
145,
148,
145,
149,
145,
150,
145,
151,
145,
152,
145,
153,
145,
156,
145,
157,
145,
158,
145,
159,
145,
160,
145,
161,
145,
164,
145,
165,
145,
166,
145,
167,
145,
168,
145,
169,
145,
171,
145,
172,
145,
176,
145,
177,
145,
178,
145,
179,
145,
182,
145,
183,
145,
184,
145,
185,
145,
187,
145,
188,
145,
189,
145,
190,
145,
191,
145,
192,
145,
193,
145,
194,
145,
195,
145,
196,
145,
197,
145,
198,
145,
200,
145,
203,
145,
208,
145,
210,
145,
211,
145,
212,
145,
213,
145,
214,
145,
215,
145,
216,
145,
217,
145,
218,
145,
219,
145,
221,
145,
222,
145,
223,
145,
224,
145,
225,
145,
226,
145,
227,
145,
228,
145,
229,
145,
55,
94,
68,
94,
84,
94,
91,
94,
94,
94,
97,
94,
140,
92,
122,
92,
141,
92,
144,
92,
150,
92,
136,
92,
152,
92,
153,
92,
145,
92,
154,
92,
156,
92,
181,
92,
162,
92,
189,
92,
172,
92,
171,
92,
177,
92,
163,
92,
193,
92,
183,
92,
196,
92,
210,
92,
228,
92,
203,
92,
229,
92,
2,
93,
3,
93,
39,
93,
38,
93,
46,
93,
36,
93,
30,
93,
6,
93,
27,
93,
88,
93,
62,
93,
52,
93,
61,
93,
108,
93,
91,
93,
111,
93,
93,
93,
107,
93,
75,
93,
74,
93,
105,
93,
116,
93,
130,
93,
153,
93,
157,
93,
115,
140,
183,
93,
197,
93,
115,
95,
119,
95,
130,
95,
135,
95,
137,
95,
140,
95,
149,
95,
153,
95,
156,
95,
168,
95,
173,
95,
181,
95,
188,
95,
98,
136,
97,
95,
173,
114,
176,
114,
180,
114,
183,
114,
184,
114,
195,
114,
193,
114,
206,
114,
205,
114,
210,
114,
232,
114,
239,
114,
233,
114,
242,
114,
244,
114,
247,
114,
1,
115,
243,
114,
3,
115,
250,
114,
230,
145,
231,
145,
232,
145,
233,
145,
234,
145,
235,
145,
236,
145,
237,
145,
238,
145,
239,
145,
240,
145,
241,
145,
242,
145,
243,
145,
244,
145,
245,
145,
246,
145,
247,
145,
248,
145,
249,
145,
250,
145,
251,
145,
252,
145,
253,
145,
254,
145,
255,
145,
0,
146,
1,
146,
2,
146,
3,
146,
4,
146,
5,
146,
6,
146,
7,
146,
8,
146,
9,
146,
10,
146,
11,
146,
12,
146,
13,
146,
14,
146,
15,
146,
16,
146,
17,
146,
18,
146,
19,
146,
20,
146,
21,
146,
22,
146,
23,
146,
24,
146,
25,
146,
26,
146,
27,
146,
28,
146,
29,
146,
30,
146,
31,
146,
32,
146,
33,
146,
34,
146,
35,
146,
36,
146,
37,
146,
38,
146,
39,
146,
40,
146,
41,
146,
42,
146,
43,
146,
44,
146,
45,
146,
46,
146,
47,
146,
48,
146,
49,
146,
50,
146,
51,
146,
52,
146,
53,
146,
54,
146,
55,
146,
56,
146,
57,
146,
58,
146,
59,
146,
60,
146,
61,
146,
62,
146,
63,
146,
64,
146,
65,
146,
66,
146,
67,
146,
68,
146,
69,
146,
251,
114,
23,
115,
19,
115,
33,
115,
10,
115,
30,
115,
29,
115,
21,
115,
34,
115,
57,
115,
37,
115,
44,
115,
56,
115,
49,
115,
80,
115,
77,
115,
87,
115,
96,
115,
108,
115,
111,
115,
126,
115,
27,
130,
37,
89,
231,
152,
36,
89,
2,
89,
99,
153,
103,
153,
104,
153,
105,
153,
106,
153,
107,
153,
108,
153,
116,
153,
119,
153,
125,
153,
128,
153,
132,
153,
135,
153,
138,
153,
141,
153,
144,
153,
145,
153,
147,
153,
148,
153,
149,
153,
128,
94,
145,
94,
139,
94,
150,
94,
165,
94,
160,
94,
185,
94,
181,
94,
190,
94,
179,
94,
83,
141,
210,
94,
209,
94,
219,
94,
232,
94,
234,
94,
186,
129,
196,
95,
201,
95,
214,
95,
207,
95,
3,
96,
238,
95,
4,
96,
225,
95,
228,
95,
254,
95,
5,
96,
6,
96,
234,
95,
237,
95,
248,
95,
25,
96,
53,
96,
38,
96,
27,
96,
15,
96,
13,
96,
41,
96,
43,
96,
10,
96,
63,
96,
33,
96,
120,
96,
121,
96,
123,
96,
122,
96,
66,
96,
70,
146,
71,
146,
72,
146,
73,
146,
74,
146,
75,
146,
76,
146,
77,
146,
78,
146,
79,
146,
80,
146,
81,
146,
82,
146,
83,
146,
84,
146,
85,
146,
86,
146,
87,
146,
88,
146,
89,
146,
90,
146,
91,
146,
92,
146,
93,
146,
94,
146,
95,
146,
96,
146,
97,
146,
98,
146,
99,
146,
100,
146,
101,
146,
102,
146,
103,
146,
104,
146,
105,
146,
106,
146,
107,
146,
108,
146,
109,
146,
110,
146,
111,
146,
112,
146,
113,
146,
114,
146,
115,
146,
117,
146,
118,
146,
119,
146,
120,
146,
121,
146,
122,
146,
123,
146,
124,
146,
125,
146,
126,
146,
127,
146,
128,
146,
129,
146,
130,
146,
131,
146,
132,
146,
133,
146,
134,
146,
135,
146,
136,
146,
137,
146,
138,
146,
139,
146,
140,
146,
141,
146,
143,
146,
144,
146,
145,
146,
146,
146,
147,
146,
148,
146,
149,
146,
150,
146,
151,
146,
152,
146,
153,
146,
154,
146,
155,
146,
156,
146,
157,
146,
158,
146,
159,
146,
160,
146,
161,
146,
162,
146,
163,
146,
164,
146,
165,
146,
166,
146,
167,
146,
106,
96,
125,
96,
150,
96,
154,
96,
173,
96,
157,
96,
131,
96,
146,
96,
140,
96,
155,
96,
236,
96,
187,
96,
177,
96,
221,
96,
216,
96,
198,
96,
218,
96,
180,
96,
32,
97,
38,
97,
21,
97,
35,
97,
244,
96,
0,
97,
14,
97,
43,
97,
74,
97,
117,
97,
172,
97,
148,
97,
167,
97,
183,
97,
212,
97,
245,
97,
221,
95,
179,
150,
233,
149,
235,
149,
241,
149,
243,
149,
245,
149,
246,
149,
252,
149,
254,
149,
3,
150,
4,
150,
6,
150,
8,
150,
10,
150,
11,
150,
12,
150,
13,
150,
15,
150,
18,
150,
21,
150,
22,
150,
23,
150,
25,
150,
26,
150,
44,
78,
63,
114,
21,
98,
53,
108,
84,
108,
92,
108,
74,
108,
163,
108,
133,
108,
144,
108,
148,
108,
140,
108,
104,
108,
105,
108,
116,
108,
118,
108,
134,
108,
169,
108,
208,
108,
212,
108,
173,
108,
247,
108,
248,
108,
241,
108,
215,
108,
178,
108,
224,
108,
214,
108,
250,
108,
235,
108,
238,
108,
177,
108,
211,
108,
239,
108,
254,
108,
168,
146,
169,
146,
170,
146,
171,
146,
172,
146,
173,
146,
175,
146,
176,
146,
177,
146,
178,
146,
179,
146,
180,
146,
181,
146,
182,
146,
183,
146,
184,
146,
185,
146,
186,
146,
187,
146,
188,
146,
189,
146,
190,
146,
191,
146,
192,
146,
193,
146,
194,
146,
195,
146,
196,
146,
197,
146,
198,
146,
199,
146,
201,
146,
202,
146,
203,
146,
204,
146,
205,
146,
206,
146,
207,
146,
208,
146,
209,
146,
210,
146,
211,
146,
212,
146,
213,
146,
214,
146,
215,
146,
216,
146,
217,
146,
218,
146,
219,
146,
220,
146,
221,
146,
222,
146,
223,
146,
224,
146,
225,
146,
226,
146,
227,
146,
228,
146,
229,
146,
230,
146,
231,
146,
232,
146,
233,
146,
234,
146,
235,
146,
236,
146,
237,
146,
238,
146,
239,
146,
240,
146,
241,
146,
242,
146,
243,
146,
244,
146,
245,
146,
246,
146,
247,
146,
248,
146,
249,
146,
250,
146,
251,
146,
252,
146,
253,
146,
254,
146,
255,
146,
0,
147,
1,
147,
2,
147,
3,
147,
4,
147,
5,
147,
6,
147,
7,
147,
8,
147,
9,
147,
57,
109,
39,
109,
12,
109,
67,
109,
72,
109,
7,
109,
4,
109,
25,
109,
14,
109,
43,
109,
77,
109,
46,
109,
53,
109,
26,
109,
79,
109,
82,
109,
84,
109,
51,
109,
145,
109,
111,
109,
158,
109,
160,
109,
94,
109,
147,
109,
148,
109,
92,
109,
96,
109,
124,
109,
99,
109,
26,
110,
199,
109,
197,
109,
222,
109,
14,
110,
191,
109,
224,
109,
17,
110,
230,
109,
221,
109,
217,
109,
22,
110,
171,
109,
12,
110,
174,
109,
43,
110,
110,
110,
78,
110,
107,
110,
178,
110,
95,
110,
134,
110,
83,
110,
84,
110,
50,
110,
37,
110,
68,
110,
223,
110,
177,
110,
152,
110,
224,
110,
45,
111,
226,
110,
165,
110,
167,
110,
189,
110,
187,
110,
183,
110,
215,
110,
180,
110,
207,
110,
143,
110,
194,
110,
159,
110,
98,
111,
70,
111,
71,
111,
36,
111,
21,
111,
249,
110,
47,
111,
54,
111,
75,
111,
116,
111,
42,
111,
9,
111,
41,
111,
137,
111,
141,
111,
140,
111,
120,
111,
114,
111,
124,
111,
122,
111,
209,
111,
10,
147,
11,
147,
12,
147,
13,
147,
14,
147,
15,
147,
16,
147,
17,
147,
18,
147,
19,
147,
20,
147,
21,
147,
22,
147,
23,
147,
24,
147,
25,
147,
26,
147,
27,
147,
28,
147,
29,
147,
30,
147,
31,
147,
32,
147,
33,
147,
34,
147,
35,
147,
36,
147,
37,
147,
38,
147,
39,
147,
40,
147,
41,
147,
42,
147,
43,
147,
44,
147,
45,
147,
46,
147,
47,
147,
48,
147,
49,
147,
50,
147,
51,
147,
52,
147,
53,
147,
54,
147,
55,
147,
56,
147,
57,
147,
58,
147,
59,
147,
60,
147,
61,
147,
63,
147,
64,
147,
65,
147,
66,
147,
67,
147,
68,
147,
69,
147,
70,
147,
71,
147,
72,
147,
73,
147,
74,
147,
75,
147,
76,
147,
77,
147,
78,
147,
79,
147,
80,
147,
81,
147,
82,
147,
83,
147,
84,
147,
85,
147,
86,
147,
87,
147,
88,
147,
89,
147,
90,
147,
91,
147,
92,
147,
93,
147,
94,
147,
95,
147,
96,
147,
97,
147,
98,
147,
99,
147,
100,
147,
101,
147,
102,
147,
103,
147,
104,
147,
105,
147,
107,
147,
201,
111,
167,
111,
185,
111,
182,
111,
194,
111,
225,
111,
238,
111,
222,
111,
224,
111,
239,
111,
26,
112,
35,
112,
27,
112,
57,
112,
53,
112,
79,
112,
94,
112,
128,
91
],
'i8',
ALLOC_NONE,
Runtime.GLOBAL_BASE + 56052
);
/* memory initializer */ allocate(
[
132,
91,
149,
91,
147,
91,
165,
91,
184,
91,
47,
117,
158,
154,
52,
100,
228,
91,
238,
91,
48,
137,
240,
91,
71,
142,
7,
139,
182,
143,
211,
143,
213,
143,
229,
143,
238,
143,
228,
143,
233,
143,
230,
143,
243,
143,
232,
143,
5,
144,
4,
144,
11,
144,
38,
144,
17,
144,
13,
144,
22,
144,
33,
144,
53,
144,
54,
144,
45,
144,
47,
144,
68,
144,
81,
144,
82,
144,
80,
144,
104,
144,
88,
144,
98,
144,
91,
144,
185,
102,
116,
144,
125,
144,
130,
144,
136,
144,
131,
144,
139,
144,
80,
95,
87,
95,
86,
95,
88,
95,
59,
92,
171,
84,
80,
92,
89,
92,
113,
91,
99,
92,
102,
92,
188,
127,
42,
95,
41,
95,
45,
95,
116,
130,
60,
95,
59,
155,
110,
92,
129,
89,
131,
89,
141,
89,
169,
89,
170,
89,
163,
89,
108,
147,
109,
147,
110,
147,
111,
147,
112,
147,
113,
147,
114,
147,
115,
147,
116,
147,
117,
147,
118,
147,
119,
147,
120,
147,
121,
147,
122,
147,
123,
147,
124,
147,
125,
147,
126,
147,
127,
147,
128,
147,
129,
147,
130,
147,
131,
147,
132,
147,
133,
147,
134,
147,
135,
147,
136,
147,
137,
147,
138,
147,
139,
147,
140,
147,
141,
147,
142,
147,
144,
147,
145,
147,
146,
147,
147,
147,
148,
147,
149,
147,
150,
147,
151,
147,
152,
147,
153,
147,
154,
147,
155,
147,
156,
147,
157,
147,
158,
147,
159,
147,
160,
147,
161,
147,
162,
147,
163,
147,
164,
147,
165,
147,
166,
147,
167,
147,
168,
147,
169,
147,
170,
147,
171,
147,
172,
147,
173,
147,
174,
147,
175,
147,
176,
147,
177,
147,
178,
147,
179,
147,
180,
147,
181,
147,
182,
147,
183,
147,
184,
147,
185,
147,
186,
147,
187,
147,
188,
147,
189,
147,
190,
147,
191,
147,
192,
147,
193,
147,
194,
147,
195,
147,
196,
147,
197,
147,
198,
147,
199,
147,
200,
147,
201,
147,
203,
147,
204,
147,
205,
147,
151,
89,
202,
89,
171,
89,
158,
89,
164,
89,
210,
89,
178,
89,
175,
89,
215,
89,
190,
89,
5,
90,
6,
90,
221,
89,
8,
90,
227,
89,
216,
89,
249,
89,
12,
90,
9,
90,
50,
90,
52,
90,
17,
90,
35,
90,
19,
90,
64,
90,
103,
90,
74,
90,
85,
90,
60,
90,
98,
90,
117,
90,
236,
128,
170,
90,
155,
90,
119,
90,
122,
90,
190,
90,
235,
90,
178,
90,
210,
90,
212,
90,
184,
90,
224,
90,
227,
90,
241,
90,
214,
90,
230,
90,
216,
90,
220,
90,
9,
91,
23,
91,
22,
91,
50,
91,
55,
91,
64,
91,
21,
92,
28,
92,
90,
91,
101,
91,
115,
91,
81,
91,
83,
91,
98,
91,
117,
154,
119,
154,
120,
154,
122,
154,
127,
154,
125,
154,
128,
154,
129,
154,
133,
154,
136,
154,
138,
154,
144,
154,
146,
154,
147,
154,
150,
154,
152,
154,
155,
154,
156,
154,
157,
154,
159,
154,
160,
154,
162,
154,
163,
154,
165,
154,
167,
154,
159,
126,
161,
126,
163,
126,
165,
126,
168,
126,
169,
126,
206,
147,
207,
147,
208,
147,
209,
147,
210,
147,
211,
147,
212,
147,
213,
147,
215,
147,
216,
147,
217,
147,
218,
147,
219,
147,
220,
147,
221,
147,
222,
147,
223,
147,
224,
147,
225,
147,
226,
147,
227,
147,
228,
147,
229,
147,
230,
147,
231,
147,
232,
147,
233,
147,
234,
147,
235,
147,
236,
147,
237,
147,
238,
147,
239,
147,
240,
147,
241,
147,
242,
147,
243,
147,
244,
147,
245,
147,
246,
147,
247,
147,
248,
147,
249,
147,
250,
147,
251,
147,
252,
147,
253,
147,
254,
147,
255,
147,
0,
148,
1,
148,
2,
148,
3,
148,
4,
148,
5,
148,
6,
148,
7,
148,
8,
148,
9,
148,
10,
148,
11,
148,
12,
148,
13,
148,
14,
148,
15,
148,
16,
148,
17,
148,
18,
148,
19,
148,
20,
148,
21,
148,
22,
148,
23,
148,
24,
148,
25,
148,
26,
148,
27,
148,
28,
148,
29,
148,
30,
148,
31,
148,
32,
148,
33,
148,
34,
148,
35,
148,
36,
148,
37,
148,
38,
148,
39,
148,
40,
148,
41,
148,
42,
148,
43,
148,
44,
148,
45,
148,
46,
148,
173,
126,
176,
126,
190,
126,
192,
126,
193,
126,
194,
126,
201,
126,
203,
126,
204,
126,
208,
126,
212,
126,
215,
126,
219,
126,
224,
126,
225,
126,
232,
126,
235,
126,
238,
126,
239,
126,
241,
126,
242,
126,
13,
127,
246,
126,
250,
126,
251,
126,
254,
126,
1,
127,
2,
127,
3,
127,
7,
127,
8,
127,
11,
127,
12,
127,
15,
127,
17,
127,
18,
127,
23,
127,
25,
127,
28,
127,
27,
127,
31,
127,
33,
127,
34,
127,
35,
127,
36,
127,
37,
127,
38,
127,
39,
127,
42,
127,
43,
127,
44,
127,
45,
127,
47,
127,
48,
127,
49,
127,
50,
127,
51,
127,
53,
127,
122,
94,
127,
117,
219,
93,
62,
117,
149,
144,
142,
115,
145,
115,
174,
115,
162,
115,
159,
115,
207,
115,
194,
115,
209,
115,
183,
115,
179,
115,
192,
115,
201,
115,
200,
115,
229,
115,
217,
115,
124,
152,
10,
116,
233,
115,
231,
115,
222,
115,
186,
115,
242,
115,
15,
116,
42,
116,
91,
116,
38,
116,
37,
116,
40,
116,
48,
116,
46,
116,
44,
116,
47,
148,
48,
148,
49,
148,
50,
148,
51,
148,
52,
148,
53,
148,
54,
148,
55,
148,
56,
148,
57,
148,
58,
148,
59,
148,
60,
148,
61,
148,
63,
148,
64,
148,
65,
148,
66,
148,
67,
148,
68,
148,
69,
148,
70,
148,
71,
148,
72,
148,
73,
148,
74,
148,
75,
148,
76,
148,
77,
148,
78,
148,
79,
148,
80,
148,
81,
148,
82,
148,
83,
148,
84,
148,
85,
148,
86,
148,
87,
148,
88,
148,
89,
148,
90,
148,
91,
148,
92,
148,
93,
148,
94,
148,
95,
148,
96,
148,
97,
148,
98,
148,
99,
148,
100,
148,
101,
148,
102,
148,
103,
148,
104,
148,
105,
148,
106,
148,
108,
148,
109,
148,
110,
148,
111,
148,
112,
148,
113,
148,
114,
148,
115,
148,
116,
148,
117,
148,
118,
148,
119,
148,
120,
148,
121,
148,
122,
148,
123,
148,
124,
148,
125,
148,
126,
148,
127,
148,
128,
148,
129,
148,
130,
148,
131,
148,
132,
148,
145,
148,
150,
148,
152,
148,
199,
148,
207,
148,
211,
148,
212,
148,
218,
148,
230,
148,
251,
148,
28,
149,
32,
149,
27,
116,
26,
116,
65,
116,
92,
116,
87,
116,
85,
116,
89,
116,
119,
116,
109,
116,
126,
116,
156,
116,
142,
116,
128,
116,
129,
116,
135,
116,
139,
116,
158,
116,
168,
116,
169,
116,
144,
116,
167,
116,
210,
116,
186,
116,
234,
151,
235,
151,
236,
151,
76,
103,
83,
103,
94,
103,
72,
103,
105,
103,
165,
103,
135,
103,
106,
103,
115,
103,
152,
103,
167,
103,
117,
103,
168,
103,
158,
103,
173,
103,
139,
103,
119,
103,
124,
103,
240,
103,
9,
104,
216,
103,
10,
104,
233,
103,
176,
103,
12,
104,
217,
103,
181,
103,
218,
103,
179,
103,
221,
103,
0,
104,
195,
103,
184,
103,
226,
103,
14,
104,
193,
103,
253,
103,
50,
104,
51,
104,
96,
104,
97,
104,
78,
104,
98,
104,
68,
104,
100,
104,
131,
104,
29,
104,
85,
104,
102,
104,
65,
104,
103,
104,
64,
104,
62,
104,
74,
104,
73,
104,
41,
104,
181,
104,
143,
104,
116,
104,
119,
104,
147,
104,
107,
104,
194,
104,
110,
105,
252,
104,
31,
105,
32,
105,
249,
104,
39,
149,
51,
149,
61,
149,
67,
149,
72,
149,
75,
149,
85,
149,
90,
149,
96,
149,
110,
149,
116,
149,
117,
149,
119,
149,
120,
149,
121,
149,
122,
149,
123,
149,
124,
149,
125,
149,
126,
149,
128,
149,
129,
149,
130,
149,
131,
149,
132,
149,
133,
149,
134,
149,
135,
149,
136,
149,
137,
149,
138,
149,
139,
149,
140,
149,
141,
149,
142,
149,
143,
149,
144,
149,
145,
149,
146,
149,
147,
149,
148,
149,
149,
149,
150,
149,
151,
149,
152,
149,
153,
149,
154,
149,
155,
149,
156,
149,
157,
149,
158,
149,
159,
149,
160,
149,
161,
149,
162,
149,
163,
149,
164,
149,
165,
149,
166,
149,
167,
149,
168,
149,
169,
149,
170,
149,
171,
149,
172,
149,
173,
149,
174,
149,
175,
149,
176,
149,
177,
149,
178,
149,
179,
149,
180,
149,
181,
149,
182,
149,
183,
149,
184,
149,
185,
149,
186,
149,
187,
149,
188,
149,
189,
149,
190,
149,
191,
149,
192,
149,
193,
149,
194,
149,
195,
149,
196,
149,
197,
149,
198,
149,
199,
149,
200,
149,
201,
149,
202,
149,
203,
149,
36,
105,
240,
104,
11,
105,
1,
105,
87,
105,
227,
104,
16,
105,
113,
105,
57,
105,
96,
105,
66,
105,
93,
105,
132,
105,
107,
105,
128,
105,
152,
105,
120,
105,
52,
105,
204,
105,
135,
105,
136,
105,
206,
105,
137,
105,
102,
105,
99,
105,
121,
105,
155,
105,
167,
105,
187,
105,
171,
105,
173,
105,
212,
105,
177,
105,
193,
105,
202,
105,
223,
105,
149,
105,
224,
105,
141,
105,
255,
105,
47,
106,
237,
105,
23,
106,
24,
106,
101,
106,
242,
105,
68,
106,
62,
106,
160,
106,
80,
106,
91,
106,
53,
106,
142,
106,
121,
106,
61,
106,
40,
106,
88,
106,
124,
106,
145,
106,
144,
106,
169,
106,
151,
106,
171,
106,
55,
115,
82,
115,
129,
107,
130,
107,
135,
107,
132,
107,
146,
107,
147,
107,
141,
107,
154,
107,
155,
107,
161,
107,
170,
107,
107,
143,
109,
143,
113,
143,
114,
143,
115,
143,
117,
143,
118,
143,
120,
143,
119,
143,
121,
143,
122,
143,
124,
143,
126,
143,
129,
143,
130,
143,
132,
143,
135,
143,
139,
143,
204,
149,
205,
149,
206,
149,
207,
149,
208,
149,
209,
149,
210,
149,
211,
149,
212,
149,
213,
149,
214,
149,
215,
149,
216,
149,
217,
149,
218,
149,
219,
149,
220,
149,
221,
149,
222,
149,
223,
149,
224,
149,
225,
149,
226,
149,
227,
149,
228,
149,
229,
149,
230,
149,
231,
149,
236,
149,
255,
149,
7,
150,
19,
150,
24,
150,
27,
150,
30,
150,
32,
150,
35,
150,
36,
150,
37,
150,
38,
150,
39,
150,
40,
150,
41,
150,
43,
150,
44,
150,
45,
150,
47,
150,
48,
150,
55,
150,
56,
150,
57,
150,
58,
150,
62,
150,
65,
150,
67,
150,
74,
150,
78,
150,
79,
150,
81,
150,
82,
150,
83,
150,
86,
150,
87,
150,
88,
150,
89,
150,
90,
150,
92,
150,
93,
150,
94,
150,
96,
150,
99,
150,
101,
150,
102,
150,
107,
150,
109,
150,
110,
150,
111,
150,
112,
150,
113,
150,
115,
150,
120,
150,
121,
150,
122,
150,
123,
150,
124,
150,
125,
150,
126,
150,
127,
150,
128,
150,
129,
150,
130,
150,
131,
150,
132,
150,
135,
150,
137,
150,
138,
150,
141,
143,
142,
143,
143,
143,
152,
143,
154,
143,
206,
142,
11,
98,
23,
98,
27,
98,
31,
98,
34,
98,
33,
98,
37,
98,
36,
98,
44,
98,
231,
129,
239,
116,
244,
116,
255,
116,
15,
117,
17,
117,
19,
117,
52,
101,
238,
101,
239,
101,
240,
101,
10,
102,
25,
102,
114,
103,
3,
102,
21,
102,
0,
102,
133,
112,
247,
102,
29,
102,
52,
102,
49,
102,
54,
102,
53,
102,
6,
128,
95,
102,
84,
102,
65,
102,
79,
102,
86,
102,
97,
102,
87,
102,
119,
102,
132,
102,
140,
102,
167,
102,
157,
102,
190,
102,
219,
102,
220,
102,
230,
102,
233,
102,
50,
141,
51,
141,
54,
141,
59,
141,
61,
141,
64,
141,
69,
141,
70,
141,
72,
141,
73,
141,
71,
141,
77,
141,
85,
141,
89,
141,
199,
137,
202,
137,
203,
137,
204,
137,
206,
137,
207,
137,
208,
137,
209,
137,
110,
114,
159,
114,
93,
114,
102,
114,
111,
114,
126,
114,
127,
114,
132,
114,
139,
114,
141,
114,
143,
114,
146,
114,
8,
99,
50,
99,
176,
99,
140,
150,
142,
150,
145,
150,
146,
150,
147,
150,
149,
150,
150,
150,
154,
150,
155,
150,
157,
150,
158,
150,
159,
150,
160,
150,
161,
150,
162,
150,
163,
150,
164,
150,
165,
150,
166,
150,
168,
150,
169,
150,
170,
150,
171,
150,
172,
150,
173,
150,
174,
150,
175,
150,
177,
150,
178,
150,
180,
150,
181,
150,
183,
150,
184,
150,
186,
150,
187,
150,
191,
150,
194,
150,
195,
150,
200,
150,
202,
150,
203,
150,
208,
150,
209,
150,
211,
150,
212,
150,
214,
150,
215,
150,
216,
150,
217,
150,
218,
150,
219,
150,
220,
150,
221,
150,
222,
150,
223,
150,
225,
150,
226,
150,
227,
150,
228,
150,
229,
150,
230,
150,
231,
150,
235,
150,
236,
150,
237,
150,
238,
150,
240,
150,
241,
150,
242,
150,
244,
150,
245,
150,
248,
150,
250,
150,
251,
150,
252,
150,
253,
150,
255,
150,
2,
151,
3,
151,
5,
151,
10,
151,
11,
151,
12,
151,
16,
151,
17,
151,
18,
151,
20,
151,
21,
151,
23,
151,
24,
151,
25,
151,
26,
151,
27,
151,
29,
151,
31,
151,
32,
151,
63,
100,
216,
100,
4,
128,
234,
107,
243,
107,
253,
107,
245,
107,
249,
107,
5,
108,
7,
108,
6,
108,
13,
108,
21,
108,
24,
108,
25,
108,
26,
108,
33,
108,
41,
108,
36,
108,
42,
108,
50,
108,
53,
101,
85,
101,
107,
101,
77,
114,
82,
114,
86,
114,
48,
114,
98,
134,
22,
82,
159,
128,
156,
128,
147,
128,
188,
128,
10,
103,
189,
128,
177,
128,
171,
128,
173,
128,
180,
128,
183,
128,
231,
128,
232,
128,
233,
128,
234,
128,
219,
128,
194,
128,
196,
128,
217,
128,
205,
128,
215,
128,
16,
103,
221,
128,
235,
128,
241,
128,
244,
128,
237,
128,
13,
129,
14,
129,
242,
128,
252,
128,
21,
103,
18,
129,
90,
140,
54,
129,
30,
129,
44,
129,
24,
129,
50,
129,
72,
129,
76,
129,
83,
129,
116,
129,
89,
129,
90,
129,
113,
129,
96,
129,
105,
129,
124,
129,
125,
129,
109,
129,
103,
129,
77,
88,
181,
90,
136,
129,
130,
129,
145,
129,
213,
110,
163,
129,
170,
129,
204,
129,
38,
103,
202,
129,
187,
129,
33,
151,
34,
151,
35,
151,
36,
151,
37,
151,
38,
151,
39,
151,
40,
151,
41,
151,
43,
151,
44,
151,
46,
151,
47,
151,
49,
151,
51,
151,
52,
151,
53,
151,
54,
151,
55,
151,
58,
151,
59,
151,
60,
151,
61,
151,
63,
151,
64,
151,
65,
151,
66,
151,
67,
151,
68,
151,
69,
151,
70,
151,
71,
151,
72,
151,
73,
151,
74,
151,
75,
151,
76,
151,
77,
151,
78,
151,
79,
151,
80,
151,
81,
151,
84,
151,
85,
151,
87,
151,
88,
151,
90,
151,
92,
151,
93,
151,
95,
151,
99,
151,
100,
151,
102,
151,
103,
151,
104,
151,
106,
151,
107,
151,
108,
151,
109,
151,
110,
151,
111,
151,
112,
151,
113,
151,
114,
151,
117,
151,
119,
151,
120,
151,
121,
151,
122,
151,
123,
151,
125,
151,
126,
151,
127,
151,
128,
151,
129,
151,
130,
151,
131,
151,
132,
151,
134,
151,
135,
151,
136,
151,
137,
151,
138,
151,
140,
151,
142,
151,
143,
151,
144,
151,
147,
151,
149,
151,
150,
151,
151,
151,
153,
151,
154,
151,
155,
151,
156,
151,
157,
151,
193,
129,
166,
129,
36,
107,
55,
107,
57,
107,
67,
107,
70,
107,
89,
107,
209,
152,
210,
152,
211,
152,
213,
152,
217,
152,
218,
152,
179,
107,
64,
95,
194,
107,
243,
137,
144,
101,
81,
159,
147,
101,
188,
101,
198,
101,
196,
101,
195,
101,
204,
101,
206,
101,
210,
101,
214,
101,
128,
112,
156,
112,
150,
112,
157,
112,
187,
112,
192,
112,
183,
112,
171,
112,
177,
112,
232,
112,
202,
112,
16,
113,
19,
113,
22,
113,
47,
113,
49,
113,
115,
113,
92,
113,
104,
113,
69,
113,
114,
113,
74,
113,
120,
113,
122,
113,
152,
113,
179,
113,
181,
113,
168,
113,
160,
113,
224,
113,
212,
113,
231,
113,
249,
113,
29,
114,
40,
114,
108,
112,
24,
113,
102,
113,
185,
113,
62,
98,
61,
98,
67,
98,
72,
98,
73,
98,
59,
121,
64,
121,
70,
121,
73,
121,
91,
121,
92,
121,
83,
121,
90,
121,
98,
121,
87,
121,
96,
121,
111,
121,
103,
121,
122,
121,
133,
121,
138,
121,
154,
121,
167,
121,
179,
121,
209,
95,
208,
95,
158,
151,
159,
151,
161,
151,
162,
151,
164,
151,
165,
151,
166,
151,
167,
151,
168,
151,
169,
151,
170,
151,
172,
151,
174,
151,
176,
151,
177,
151,
179,
151,
181,
151,
182,
151,
183,
151,
184,
151,
185,
151,
186,
151,
187,
151,
188,
151,
189,
151,
190,
151,
191,
151,
192,
151,
193,
151,
194,
151,
195,
151,
196,
151,
197,
151,
198,
151,
199,
151,
200,
151,
201,
151,
202,
151,
203,
151,
204,
151,
205,
151,
206,
151,
207,
151,
208,
151,
209,
151,
210,
151,
211,
151,
212,
151,
213,
151,
214,
151,
215,
151,
216,
151,
217,
151,
218,
151,
219,
151,
220,
151,
221,
151,
222,
151,
223,
151,
224,
151,
225,
151,
226,
151,
227,
151,
228,
151,
229,
151,
232,
151,
238,
151,
239,
151,
240,
151,
241,
151,
242,
151,
244,
151,
247,
151,
248,
151,
249,
151,
250,
151,
251,
151,
252,
151,
253,
151,
254,
151,
255,
151,
0,
152,
1,
152,
2,
152,
3,
152,
4,
152,
5,
152,
6,
152,
7,
152,
8,
152,
9,
152,
10,
152,
11,
152,
12,
152,
13,
152,
14,
152,
60,
96,
93,
96,
90,
96,
103,
96,
65,
96,
89,
96,
99,
96,
171,
96,
6,
97,
13,
97,
93,
97,
169,
97,
157,
97,
203,
97,
209,
97,
6,
98,
128,
128,
127,
128,
147,
108,
246,
108,
252,
109,
246,
119,
248,
119,
0,
120,
9,
120,
23,
120,
24,
120,
17,
120,
171,
101,
45,
120,
28,
120,
29,
120,
57,
120,
58,
120,
59,
120,
31,
120,
60,
120,
37,
120,
44,
120,
35,
120,
41,
120,
78,
120,
109,
120,
86,
120,
87,
120,
38,
120,
80,
120,
71,
120,
76,
120,
106,
120,
155,
120,
147,
120,
154,
120,
135,
120,
156,
120,
161,
120,
163,
120,
178,
120,
185,
120,
165,
120,
212,
120,
217,
120,
201,
120,
236,
120,
242,
120,
5,
121,
244,
120,
19,
121,
36,
121,
30,
121,
52,
121,
155,
159,
249,
158,
251,
158,
252,
158,
241,
118,
4,
119,
13,
119,
249,
118,
7,
119,
8,
119,
26,
119,
34,
119,
25,
119,
45,
119,
38,
119,
53,
119,
56,
119,
80,
119,
81,
119,
71,
119,
67,
119,
90,
119,
104,
119,
15,
152,
16,
152,
17,
152,
18,
152,
19,
152,
20,
152,
21,
152,
22,
152,
23,
152,
24,
152,
25,
152,
26,
152,
27,
152,
28,
152,
29,
152,
30,
152,
31,
152,
32,
152,
33,
152,
34,
152,
35,
152,
36,
152,
37,
152,
38,
152,
39,
152,
40,
152,
41,
152,
42,
152,
43,
152,
44,
152,
45,
152,
46,
152,
47,
152,
48,
152,
49,
152,
50,
152,
51,
152,
52,
152,
53,
152,
54,
152,
55,
152,
56,
152,
57,
152,
58,
152,
59,
152,
60,
152,
61,
152,
62,
152,
63,
152,
64,
152,
65,
152,
66,
152,
67,
152,
68,
152,
69,
152,
70,
152,
71,
152,
72,
152,
73,
152,
74,
152,
75,
152,
76,
152,
77,
152,
78,
152,
79,
152,
80,
152,
81,
152,
82,
152,
83,
152,
84,
152,
85,
152,
86,
152,
87,
152,
88,
152,
89,
152,
90,
152,
91,
152,
92,
152,
93,
152,
94,
152,
95,
152,
96,
152,
97,
152,
98,
152,
99,
152,
100,
152,
101,
152,
102,
152,
103,
152,
104,
152,
105,
152,
106,
152,
107,
152,
108,
152,
109,
152,
110,
152,
98,
119,
101,
119,
127,
119,
141,
119,
125,
119,
128,
119,
140,
119,
145,
119,
159,
119,
160,
119,
176,
119,
181,
119,
189,
119,
58,
117,
64,
117,
78,
117,
75,
117,
72,
117,
91,
117,
114,
117,
121,
117,
131,
117,
88,
127,
97,
127,
95,
127,
72,
138,
104,
127,
116,
127,
113,
127,
121,
127,
129,
127,
126,
127,
205,
118,
229,
118,
50,
136,
133,
148,
134,
148,
135,
148,
139,
148,
138,
148,
140,
148,
141,
148,
143,
148,
144,
148,
148,
148,
151,
148,
149,
148,
154,
148,
155,
148,
156,
148,
163,
148,
164,
148,
171,
148,
170,
148,
173,
148,
172,
148,
175,
148,
176,
148,
178,
148,
180,
148,
182,
148,
183,
148,
184,
148,
185,
148,
186,
148,
188,
148,
189,
148,
191,
148,
196,
148,
200,
148,
201,
148,
202,
148,
203,
148,
204,
148,
205,
148,
206,
148,
208,
148,
209,
148,
210,
148,
213,
148,
214,
148,
215,
148,
217,
148,
216,
148,
219,
148,
222,
148,
223,
148,
224,
148,
226,
148,
228,
148,
229,
148,
231,
148,
232,
148,
234,
148,
111,
152,
112,
152,
113,
152,
114,
152,
115,
152,
116,
152,
139,
152,
142,
152,
146,
152,
149,
152,
153,
152,
163,
152,
168,
152,
169,
152,
170,
152,
171,
152,
172,
152,
173,
152,
174,
152,
175,
152,
176,
152,
177,
152,
178,
152,
179,
152,
180,
152,
181,
152,
182,
152,
183,
152,
184,
152,
185,
152,
186,
152,
187,
152,
188,
152,
189,
152,
190,
152,
191,
152,
192,
152,
193,
152,
194,
152,
195,
152,
196,
152,
197,
152,
198,
152,
199,
152,
200,
152,
201,
152,
202,
152,
203,
152,
204,
152,
205,
152,
207,
152,
208,
152,
212,
152,
214,
152,
215,
152,
219,
152,
220,
152,
221,
152,
224,
152,
225,
152,
226,
152,
227,
152,
228,
152,
229,
152,
230,
152,
233,
152,
234,
152,
235,
152,
236,
152,
237,
152,
238,
152,
239,
152,
240,
152,
241,
152,
242,
152,
243,
152,
244,
152,
245,
152,
246,
152,
247,
152,
248,
152,
249,
152,
250,
152,
251,
152,
252,
152,
253,
152,
254,
152,
255,
152,
0,
153,
1,
153,
2,
153,
3,
153,
4,
153,
5,
153,
6,
153,
7,
153,
233,
148,
235,
148,
238,
148,
239,
148,
243,
148,
244,
148,
245,
148,
247,
148,
249,
148,
252,
148,
253,
148,
255,
148,
3,
149,
2,
149,
6,
149,
7,
149,
9,
149,
10,
149,
13,
149,
14,
149,
15,
149,
18,
149,
19,
149,
20,
149,
21,
149,
22,
149,
24,
149,
27,
149,
29,
149,
30,
149,
31,
149,
34,
149,
42,
149,
43,
149,
41,
149,
44,
149,
49,
149,
50,
149,
52,
149,
54,
149,
55,
149,
56,
149,
60,
149,
62,
149,
63,
149,
66,
149,
53,
149,
68,
149,
69,
149,
70,
149,
73,
149,
76,
149,
78,
149,
79,
149,
82,
149,
83,
149,
84,
149,
86,
149,
87,
149,
88,
149,
89,
149,
91,
149,
94,
149,
95,
149,
93,
149,
97,
149,
98,
149,
100,
149,
101,
149,
102,
149,
103,
149,
104,
149,
105,
149,
106,
149,
107,
149,
108,
149,
111,
149,
113,
149,
114,
149,
115,
149,
58,
149,
231,
119,
236,
119,
201,
150,
213,
121,
237,
121,
227,
121,
235,
121,
6,
122,
71,
93,
3,
122,
2,
122,
30,
122,
20,
122,
8,
153,
9,
153,
10,
153,
11,
153,
12,
153,
14,
153,
15,
153,
17,
153,
18,
153,
19,
153,
20,
153,
21,
153,
22,
153,
23,
153,
24,
153,
25,
153,
26,
153,
27,
153,
28,
153,
29,
153,
30,
153,
31,
153,
32,
153,
33,
153,
34,
153,
35,
153,
36,
153,
37,
153,
38,
153,
39,
153,
40,
153,
41,
153,
42,
153,
43,
153,
44,
153,
45,
153,
47,
153,
48,
153,
49,
153,
50,
153,
51,
153,
52,
153,
53,
153,
54,
153,
55,
153,
56,
153,
57,
153,
58,
153,
59,
153,
60,
153,
61,
153,
62,
153,
63,
153,
64,
153,
65,
153,
66,
153,
67,
153,
68,
153,
69,
153,
70,
153,
71,
153,
72,
153,
73,
153,
74,
153,
75,
153,
76,
153,
77,
153,
78,
153,
79,
153,
80,
153,
81,
153,
82,
153,
83,
153,
86,
153,
87,
153,
88,
153,
89,
153,
90,
153,
91,
153,
92,
153,
93,
153,
94,
153,
95,
153,
96,
153,
97,
153,
98,
153,
100,
153,
102,
153,
115,
153,
120,
153,
121,
153,
123,
153,
126,
153,
130,
153,
131,
153,
137,
153,
57,
122,
55,
122,
81,
122,
207,
158,
165,
153,
112,
122,
136,
118,
142,
118,
147,
118,
153,
118,
164,
118,
222,
116,
224,
116,
44,
117,
32,
158,
34,
158,
40,
158,
41,
158,
42,
158,
43,
158,
44,
158,
50,
158,
49,
158,
54,
158,
56,
158,
55,
158,
57,
158,
58,
158,
62,
158,
65,
158,
66,
158,
68,
158,
70,
158,
71,
158,
72,
158,
73,
158,
75,
158,
76,
158,
78,
158,
81,
158,
85,
158,
87,
158,
90,
158,
91,
158,
92,
158,
94,
158,
99,
158,
102,
158,
103,
158,
104,
158,
105,
158,
106,
158,
107,
158,
108,
158,
113,
158,
109,
158,
115,
158,
146,
117,
148,
117,
150,
117,
160,
117,
157,
117,
172,
117,
163,
117,
179,
117,
180,
117,
184,
117,
196,
117,
177,
117,
176,
117,
195,
117,
194,
117,
214,
117,
205,
117,
227,
117,
232,
117,
230,
117,
228,
117,
235,
117,
231,
117,
3,
118,
241,
117,
252,
117,
255,
117,
16,
118,
0,
118,
5,
118,
12,
118,
23,
118,
10,
118,
37,
118,
24,
118,
21,
118,
25,
118,
140,
153,
142,
153,
154,
153,
155,
153,
156,
153,
157,
153,
158,
153,
159,
153,
160,
153,
161,
153,
162,
153,
163,
153,
164,
153,
166,
153,
167,
153,
169,
153,
170,
153,
171,
153,
172,
153,
173,
153,
174,
153,
175,
153,
176,
153,
177,
153,
178,
153,
179,
153,
180,
153,
181,
153,
182,
153,
183,
153,
184,
153,
185,
153,
186,
153,
187,
153,
188,
153,
189,
153,
190,
153,
191,
153,
192,
153,
193,
153,
194,
153,
195,
153,
196,
153,
197,
153,
198,
153,
199,
153,
200,
153,
201,
153,
202,
153,
203,
153,
204,
153,
205,
153,
206,
153,
207,
153,
208,
153,
209,
153,
210,
153,
211,
153,
212,
153,
213,
153,
214,
153,
215,
153,
216,
153,
217,
153,
218,
153,
219,
153,
220,
153,
221,
153,
222,
153,
223,
153,
224,
153,
225,
153,
226,
153,
227,
153,
228,
153,
229,
153,
230,
153,
231,
153,
232,
153,
233,
153,
234,
153,
235,
153,
236,
153,
237,
153,
238,
153,
239,
153,
240,
153,
241,
153,
242,
153,
243,
153,
244,
153,
245,
153,
246,
153,
247,
153,
248,
153,
249,
153,
27,
118,
60,
118,
34,
118,
32,
118,
64,
118,
45,
118,
48,
118,
63,
118,
53,
118,
67,
118,
62,
118,
51,
118,
77,
118,
94,
118,
84,
118,
92,
118,
86,
118,
107,
118,
111,
118,
202,
127,
230,
122,
120,
122,
121,
122,
128,
122,
134,
122,
136,
122,
149,
122,
166,
122,
160,
122,
172,
122,
168,
122,
173,
122,
179,
122,
100,
136,
105,
136,
114,
136,
125,
136,
127,
136,
130,
136,
162,
136,
198,
136,
183,
136,
188,
136,
201,
136,
226,
136,
206,
136,
227,
136,
229,
136,
241,
136,
26,
137,
252,
136,
232,
136,
254,
136,
240,
136,
33,
137,
25,
137,
19,
137,
27,
137,
10,
137,
52,
137,
43,
137,
54,
137,
65,
137,
102,
137,
123,
137,
139,
117,
229,
128,
178,
118,
180,
118,
220,
119,
18,
128,
20,
128,
22,
128,
28,
128,
32,
128,
34,
128,
37,
128,
38,
128,
39,
128,
41,
128,
40,
128,
49,
128,
11,
128,
53,
128,
67,
128,
70,
128,
77,
128,
82,
128,
105,
128,
113,
128,
131,
137,
120,
152,
128,
152,
131,
152,
250,
153,
251,
153,
252,
153,
253,
153,
254,
153,
255,
153,
0,
154,
1,
154,
2,
154,
3,
154,
4,
154,
5,
154,
6,
154,
7,
154,
8,
154,
9,
154,
10,
154,
11,
154,
12,
154,
13,
154,
14,
154,
15,
154,
16,
154,
17,
154,
18,
154,
19,
154,
20,
154,
21,
154,
22,
154,
23,
154,
24,
154,
25,
154,
26,
154,
27,
154,
28,
154,
29,
154,
30,
154,
31,
154,
32,
154,
33,
154,
34,
154,
35,
154,
36,
154,
37,
154,
38,
154,
39,
154,
40,
154,
41,
154,
42,
154,
43,
154,
44,
154,
45,
154,
46,
154,
47,
154,
48,
154,
49,
154,
50,
154,
51,
154,
52,
154,
53,
154,
54,
154,
55,
154,
56,
154,
57,
154,
58,
154,
59,
154,
60,
154,
61,
154,
62,
154,
63,
154,
64,
154,
65,
154,
66,
154,
67,
154,
68,
154,
69,
154,
70,
154,
71,
154,
72,
154,
73,
154,
74,
154,
75,
154,
76,
154,
77,
154,
78,
154,
79,
154,
80,
154,
81,
154,
82,
154,
83,
154,
84,
154,
85,
154,
86,
154,
87,
154,
88,
154,
89,
154,
137,
152,
140,
152,
141,
152,
143,
152,
148,
152,
154,
152,
155,
152,
158,
152,
159,
152,
161,
152,
162,
152,
165,
152,
166,
152,
77,
134,
84,
134,
108,
134,
110,
134,
127,
134,
122,
134,
124,
134,
123,
134,
168,
134,
141,
134,
139,
134,
172,
134,
157,
134,
167,
134,
163,
134,
170,
134,
147,
134,
169,
134,
182,
134,
196,
134,
181,
134,
206,
134,
176,
134,
186,
134,
177,
134,
175,
134,
201,
134,
207,
134,
180,
134,
233,
134,
241,
134,
242,
134,
237,
134,
243,
134,
208,
134,
19,
135,
222,
134,
244,
134,
223,
134,
216,
134,
209,
134,
3,
135,
7,
135,
248,
134,
8,
135,
10,
135,
13,
135,
9,
135,
35,
135,
59,
135,
30,
135,
37,
135,
46,
135,
26,
135,
62,
135,
72,
135,
52,
135,
49,
135,
41,
135,
55,
135,
63,
135,
130,
135,
34,
135,
125,
135,
126,
135,
123,
135,
96,
135,
112,
135,
76,
135,
110,
135,
139,
135,
83,
135,
99,
135,
124,
135,
100,
135,
89,
135,
101,
135,
147,
135,
175,
135,
168,
135,
210,
135,
90,
154,
91,
154,
92,
154,
93,
154,
94,
154,
95,
154,
96,
154,
97,
154,
98,
154,
99,
154,
100,
154,
101,
154,
102,
154,
103,
154,
104,
154,
105,
154,
106,
154,
107,
154,
114,
154,
131,
154,
137,
154,
141,
154,
142,
154,
148,
154,
149,
154,
153,
154,
166,
154,
169,
154,
170,
154,
171,
154,
172,
154,
173,
154,
174,
154,
175,
154,
178,
154,
179,
154,
180,
154,
181,
154,
185,
154,
187,
154,
189,
154,
190,
154,
191,
154,
195,
154,
196,
154,
198,
154,
199,
154,
200,
154,
201,
154,
202,
154,
205,
154,
206,
154,
207,
154,
208,
154,
210,
154,
212,
154,
213,
154,
214,
154,
215,
154,
217,
154,
218,
154,
219,
154,
220,
154,
221,
154,
222,
154,
224,
154,
226,
154,
227,
154,
228,
154,
229,
154,
231,
154,
232,
154,
233,
154,
234,
154,
236,
154,
238,
154,
240,
154,
241,
154,
242,
154,
243,
154,
244,
154,
245,
154,
246,
154,
247,
154,
248,
154,
250,
154,
252,
154,
253,
154,
254,
154,
255,
154,
0,
155,
1,
155,
2,
155,
4,
155,
5,
155,
6,
155,
198,
135,
136,
135,
133,
135,
173,
135,
151,
135,
131,
135,
171,
135,
229,
135,
172,
135,
181,
135,
179,
135,
203,
135,
211,
135,
189,
135,
209,
135,
192,
135,
202,
135,
219,
135,
234,
135,
224,
135,
238,
135,
22,
136,
19,
136,
254,
135,
10,
136,
27,
136,
33,
136,
57,
136,
60,
136,
54,
127,
66,
127,
68,
127,
69,
127,
16,
130,
250,
122,
253,
122,
8,
123,
3,
123,
4,
123,
21,
123,
10,
123,
43,
123,
15,
123,
71,
123,
56,
123,
42,
123,
25,
123,
46,
123,
49,
123,
32,
123,
37,
123,
36,
123,
51,
123,
62,
123,
30,
123,
88,
123,
90,
123,
69,
123,
117,
123,
76,
123,
93,
123,
96,
123,
110,
123,
123,
123,
98,
123,
114,
123,
113,
123,
144,
123,
166,
123,
167,
123,
184,
123,
172,
123,
157,
123,
168,
123,
133,
123,
170,
123,
156,
123,
162,
123,
171,
123,
180,
123,
209,
123,
193,
123,
204,
123,
221,
123,
218,
123,
229,
123,
230,
123,
234,
123,
12,
124,
254,
123,
252,
123,
15,
124,
22,
124,
11,
124,
7,
155,
9,
155,
10,
155,
11,
155,
12,
155,
13,
155,
14,
155,
16,
155,
17,
155,
18,
155,
20,
155,
21,
155,
22,
155,
23,
155,
24,
155,
25,
155,
26,
155,
27,
155,
28,
155,
29,
155,
30,
155,
32,
155,
33,
155,
34,
155,
36,
155,
37,
155,
38,
155,
39,
155,
40,
155,
41,
155,
42,
155,
43,
155,
44,
155,
45,
155,
46,
155,
48,
155,
49,
155,
51,
155,
52,
155,
53,
155,
54,
155,
55,
155,
56,
155,
57,
155,
58,
155,
61,
155,
62,
155,
63,
155,
64,
155,
70,
155,
74,
155,
75,
155,
76,
155,
78,
155,
80,
155,
82,
155,
83,
155,
85,
155,
86,
155,
87,
155,
88,
155,
89,
155,
90,
155,
91,
155,
92,
155,
93,
155,
94,
155,
95,
155,
96,
155,
97,
155,
98,
155,
99,
155,
100,
155,
101,
155,
102,
155,
103,
155,
104,
155,
105,
155,
106,
155,
107,
155,
108,
155,
109,
155,
110,
155,
111,
155,
112,
155,
113,
155,
114,
155,
115,
155,
116,
155,
117,
155,
118,
155,
119,
155,
120,
155,
121,
155,
122,
155,
123,
155,
31,
124,
42,
124,
38,
124,
56,
124,
65,
124,
64,
124,
254,
129,
1,
130,
2,
130,
4,
130,
236,
129,
68,
136,
33,
130,
34,
130,
35,
130,
45,
130,
47,
130,
40,
130,
43,
130,
56,
130,
59,
130,
51,
130,
52,
130,
62,
130,
68,
130,
73,
130,
75,
130,
79,
130,
90,
130,
95,
130,
104,
130,
126,
136,
133,
136,
136,
136,
216,
136,
223,
136,
94,
137,
157,
127,
159,
127,
167,
127,
175,
127,
176,
127,
178,
127,
124,
124,
73,
101,
145,
124,
157,
124,
156,
124,
158,
124,
162,
124,
178,
124,
188,
124,
189,
124,
193,
124,
199,
124,
204,
124,
205,
124,
200,
124,
197,
124,
215,
124,
232,
124,
110,
130,
168,
102,
191,
127,
206,
127,
213,
127,
229,
127,
225,
127,
230,
127,
233,
127,
238,
127,
243,
127,
248,
124,
119,
125,
166,
125,
174,
125,
71,
126,
155,
126,
184,
158,
180,
158,
115,
141,
132,
141,
148,
141,
145,
141,
177,
141,
103,
141,
109,
141,
71,
140,
73,
140,
74,
145,
80,
145,
78,
145,
79,
145,
100,
145,
124,
155,
125,
155,
126,
155,
127,
155,
128,
155,
129,
155,
130,
155,
131,
155,
132,
155,
133,
155,
134,
155,
135,
155,
136,
155,
137,
155,
138,
155,
139,
155,
140,
155,
141,
155,
142,
155,
143,
155,
144,
155,
145,
155,
146,
155,
147,
155,
148,
155,
149,
155,
150,
155,
151,
155,
152,
155,
153,
155,
154,
155,
155,
155,
156,
155,
157,
155,
158,
155,
159,
155,
160,
155,
161,
155,
162,
155,
163,
155,
164,
155,
165,
155,
166,
155,
167,
155,
168,
155,
169,
155,
170,
155,
171,
155,
172,
155,
173,
155,
174,
155,
175,
155,
176,
155,
177,
155,
178,
155,
179,
155,
180,
155,
181,
155,
182,
155,
183,
155,
184,
155,
185,
155,
186,
155,
187,
155,
188,
155,
189,
155,
190,
155,
191,
155,
192,
155,
193,
155,
194,
155,
195,
155,
196,
155,
197,
155,
198,
155,
199,
155,
200,
155,
201,
155,
202,
155,
203,
155,
204,
155,
205,
155,
206,
155,
207,
155,
208,
155,
209,
155,
210,
155,
211,
155,
212,
155,
213,
155,
214,
155,
215,
155,
216,
155,
217,
155,
218,
155,
219,
155,
98,
145,
97,
145,
112,
145,
105,
145,
111,
145,
125,
145,
126,
145,
114,
145,
116,
145,
121,
145,
140,
145,
133,
145,
144,
145,
141,
145,
145,
145,
162,
145,
163,
145,
170,
145,
173,
145,
174,
145,
175,
145,
181,
145,
180,
145,
186,
145,
85,
140,
126,
158,
184,
141,
235,
141,
5,
142,
89,
142,
105,
142,
181,
141,
191,
141,
188,
141,
186,
141,
196,
141,
214,
141,
215,
141,
218,
141,
222,
141,
206,
141,
207,
141,
219,
141,
198,
141,
236,
141,
247,
141,
248,
141,
227,
141,
249,
141,
251,
141,
228,
141,
9,
142,
253,
141,
20,
142,
29,
142,
31,
142,
44,
142,
46,
142,
35,
142,
47,
142,
58,
142,
64,
142,
57,
142,
53,
142,
61,
142,
49,
142,
73,
142,
65,
142,
66,
142,
81,
142,
82,
142,
74,
142,
112,
142,
118,
142,
124,
142,
111,
142,
116,
142,
133,
142,
143,
142,
148,
142,
144,
142,
156,
142,
158,
142,
120,
140,
130,
140,
138,
140,
133,
140,
152,
140,
148,
140,
155,
101,
214,
137,
222,
137,
218,
137,
220,
137,
220,
155,
221,
155,
222,
155,
223,
155,
224,
155,
225,
155,
226,
155,
227,
155,
228,
155,
229,
155,
230,
155,
231,
155,
232,
155,
233,
155,
234,
155,
235,
155,
236,
155,
237,
155,
238,
155,
239,
155,
240,
155,
241,
155,
242,
155,
243,
155,
244,
155,
245,
155,
246,
155,
247,
155,
248,
155,
249,
155,
250,
155,
251,
155,
252,
155,
253,
155,
254,
155,
255,
155,
0,
156,
1,
156,
2,
156,
3,
156,
4,
156,
5,
156,
6,
156,
7,
156,
8,
156,
9,
156,
10,
156,
11,
156,
12,
156,
13,
156,
14,
156,
15,
156,
16,
156,
17,
156,
18,
156,
19,
156,
20,
156,
21,
156,
22,
156,
23,
156,
24,
156,
25,
156,
26,
156,
27,
156,
28,
156,
29,
156,
30,
156,
31,
156,
32,
156,
33,
156,
34,
156,
35,
156,
36,
156,
37,
156,
38,
156,
39,
156,
40,
156,
41,
156,
42,
156,
43,
156,
44,
156,
45,
156,
46,
156,
47,
156,
48,
156,
49,
156,
50,
156,
51,
156,
52,
156,
53,
156,
54,
156,
55,
156,
56,
156,
57,
156,
58,
156,
59,
156,
229,
137,
235,
137,
239,
137,
62,
138,
38,
139,
83,
151,
233,
150,
243,
150,
239,
150,
6,
151,
1,
151,
8,
151,
15,
151,
14,
151,
42,
151,
45,
151,
48,
151,
62,
151,
128,
159,
131,
159,
133,
159,
134,
159,
135,
159,
136,
159,
137,
159,
138,
159,
140,
159,
254,
158,
11,
159,
13,
159,
185,
150,
188,
150,
189,
150,
206,
150,
210,
150,
191,
119,
224,
150,
142,
146,
174,
146,
200,
146,
62,
147,
106,
147,
202,
147,
143,
147,
62,
148,
107,
148,
127,
156,
130,
156,
133,
156,
134,
156,
135,
156,
136,
156,
35,
122,
139,
156,
142,
156,
144,
156,
145,
156,
146,
156,
148,
156,
149,
156,
154,
156,
155,
156,
158,
156,
159,
156,
160,
156,
161,
156,
162,
156,
163,
156,
165,
156,
166,
156,
167,
156,
168,
156,
169,
156,
171,
156,
173,
156,
174,
156,
176,
156,
177,
156,
178,
156,
179,
156,
180,
156,
181,
156,
182,
156,
183,
156,
186,
156,
187,
156,
188,
156,
189,
156,
196,
156,
197,
156,
198,
156,
199,
156,
202,
156,
203,
156,
60,
156,
61,
156,
62,
156,
63,
156,
64,
156,
65,
156,
66,
156,
67,
156,
68,
156,
69,
156,
70,
156,
71,
156,
72,
156,
73,
156,
74,
156,
75,
156,
76,
156,
77,
156,
78,
156,
79,
156,
80,
156,
81,
156,
82,
156,
83,
156,
84,
156,
85,
156,
86,
156,
87,
156,
88,
156,
89,
156,
90,
156,
91,
156,
92,
156,
93,
156,
94,
156,
95,
156,
96,
156,
97,
156,
98,
156,
99,
156,
100,
156,
101,
156,
102,
156,
103,
156,
104,
156,
105,
156,
106,
156,
107,
156,
108,
156,
109,
156,
110,
156,
111,
156,
112,
156,
113,
156,
114,
156,
115,
156,
116,
156,
117,
156,
118,
156,
119,
156,
120,
156,
121,
156,
122,
156,
123,
156,
125,
156,
126,
156,
128,
156,
131,
156,
132,
156,
137,
156,
138,
156,
140,
156,
143,
156,
147,
156,
150,
156,
151,
156,
152,
156,
153,
156,
157,
156,
170,
156,
172,
156,
175,
156,
185,
156,
190,
156,
191,
156,
192,
156,
193,
156,
194,
156,
200,
156,
201,
156,
209,
156,
210,
156,
218,
156,
219,
156,
224,
156,
225,
156,
204,
156,
205,
156,
206,
156,
207,
156,
208,
156,
211,
156,
212,
156,
213,
156,
215,
156,
216,
156,
217,
156,
220,
156,
221,
156,
223,
156,
226,
156,
124,
151,
133,
151,
145,
151,
146,
151,
148,
151,
175,
151,
171,
151,
163,
151,
178,
151,
180,
151,
177,
154,
176,
154,
183,
154,
88,
158,
182,
154,
186,
154,
188,
154,
193,
154,
192,
154,
197,
154,
194,
154,
203,
154,
204,
154,
209,
154,
69,
155,
67,
155,
71,
155,
73,
155,
72,
155,
77,
155,
81,
155,
232,
152,
13,
153,
46,
153,
85,
153,
84,
153,
223,
154,
225,
154,
230,
154,
239,
154,
235,
154,
251,
154,
237,
154,
249,
154,
8,
155,
15,
155,
19,
155,
31,
155,
35,
155,
189,
158,
190,
158,
59,
126,
130,
158,
135,
158,
136,
158,
139,
158,
146,
158,
214,
147,
157,
158,
159,
158,
219,
158,
220,
158,
221,
158,
224,
158,
223,
158,
226,
158,
233,
158,
231,
158,
229,
158,
234,
158,
239,
158,
34,
159,
44,
159,
47,
159,
57,
159,
55,
159,
61,
159,
62,
159,
68,
159,
227,
156,
228,
156,
229,
156,
230,
156,
231,
156,
232,
156,
233,
156,
234,
156,
235,
156,
236,
156,
237,
156,
238,
156,
239,
156,
240,
156,
241,
156,
242,
156,
243,
156,
244,
156,
245,
156,
246,
156,
247,
156,
248,
156,
249,
156,
250,
156,
251,
156,
252,
156,
253,
156,
254,
156,
255,
156,
0,
157,
1,
157,
2,
157,
3,
157,
4,
157,
5,
157,
6,
157,
7,
157,
8,
157,
9,
157,
10,
157,
11,
157,
12,
157,
13,
157,
14,
157,
15,
157,
16,
157,
17,
157,
18,
157,
19,
157,
20,
157,
21,
157,
22,
157,
23,
157,
24,
157,
25,
157,
26,
157,
27,
157,
28,
157,
29,
157,
30,
157,
31,
157,
32,
157,
33,
157,
34,
157,
35,
157,
36,
157,
37,
157,
38,
157,
39,
157,
40,
157,
41,
157,
42,
157,
43,
157,
44,
157,
45,
157,
46,
157,
47,
157,
48,
157,
49,
157,
50,
157,
51,
157,
52,
157,
53,
157,
54,
157,
55,
157,
56,
157,
57,
157,
58,
157,
59,
157,
60,
157,
61,
157,
62,
157,
63,
157,
64,
157,
65,
157,
66,
157,
52,
226,
53,
226,
54,
226,
55,
226,
56,
226,
57,
226,
58,
226,
59,
226,
60,
226,
61,
226,
62,
226,
63,
226,
64,
226,
65,
226,
66,
226,
67,
226,
68,
226,
69,
226,
70,
226,
71,
226,
72,
226,
73,
226,
74,
226,
75,
226,
76,
226,
77,
226,
78,
226,
79,
226,
80,
226,
81,
226,
82,
226,
83,
226,
84,
226,
85,
226,
86,
226,
87,
226,
88,
226,
89,
226,
90,
226,
91,
226,
92,
226,
93,
226,
94,
226,
95,
226,
96,
226,
97,
226,
98,
226,
99,
226,
100,
226,
101,
226,
102,
226,
103,
226,
104,
226,
105,
226,
106,
226,
107,
226,
108,
226,
109,
226,
110,
226,
111,
226,
112,
226,
113,
226,
114,
226,
115,
226,
116,
226,
117,
226,
118,
226,
119,
226,
120,
226,
121,
226,
122,
226,
123,
226,
124,
226,
125,
226,
126,
226,
127,
226,
128,
226,
129,
226,
130,
226,
131,
226,
132,
226,
133,
226,
134,
226,
135,
226,
136,
226,
137,
226,
138,
226,
139,
226,
140,
226,
141,
226,
142,
226,
143,
226,
144,
226,
145,
226,
67,
157,
68,
157,
69,
157,
70,
157,
71,
157,
72,
157,
73,
157,
74,
157,
75,
157,
76,
157,
77,
157,
78,
157,
79,
157,
80,
157,
81,
157,
82,
157,
83,
157,
84,
157,
85,
157,
86,
157,
87,
157,
88,
157,
89,
157,
90,
157,
91,
157,
92,
157,
93,
157,
94,
157,
95,
157,
96,
157,
97,
157,
98,
157,
99,
157,
100,
157,
101,
157,
102,
157,
103,
157,
104,
157,
105,
157,
106,
157,
107,
157,
108,
157,
109,
157,
110,
157,
111,
157,
112,
157,
113,
157,
114,
157,
115,
157,
116,
157,
117,
157,
118,
157,
119,
157,
120,
157,
121,
157,
122,
157,
123,
157,
124,
157,
125,
157,
126,
157,
127,
157,
128,
157,
129,
157,
130,
157,
131,
157,
132,
157,
133,
157,
134,
157,
135,
157,
136,
157,
137,
157,
138,
157,
139,
157,
140,
157,
141,
157,
142,
157,
143,
157,
144,
157,
145,
157,
146,
157,
147,
157,
148,
157,
149,
157,
150,
157,
151,
157,
152,
157,
153,
157,
154,
157,
155,
157,
156,
157,
157,
157,
158,
157,
159,
157,
160,
157,
161,
157,
162,
157,
146,
226,
147,
226,
148,
226,
149,
226,
150,
226,
151,
226,
152,
226,
153,
226,
154,
226,
155,
226,
156,
226,
157,
226,
158,
226,
159,
226,
160,
226,
161,
226,
162,
226,
163,
226,
164,
226,
165,
226,
166,
226,
167,
226,
168,
226,
169,
226,
170,
226,
171,
226,
172,
226,
173,
226,
174,
226,
175,
226,
176,
226,
177,
226,
178,
226,
179,
226,
180,
226,
181,
226,
182,
226,
183,
226,
184,
226,
185,
226,
186,
226,
187,
226,
188,
226,
189,
226,
190,
226,
191,
226,
192,
226,
193,
226,
194,
226,
195,
226,
196,
226,
197,
226,
198,
226,
199,
226,
200,
226,
201,
226,
202,
226,
203,
226,
204,
226,
205,
226,
206,
226,
207,
226,
208,
226,
209,
226,
210,
226,
211,
226,
212,
226,
213,
226,
214,
226,
215,
226,
216,
226,
217,
226,
218,
226,
219,
226,
220,
226,
221,
226,
222,
226,
223,
226,
224,
226,
225,
226,
226,
226,
227,
226,
228,
226,
229,
226,
230,
226,
231,
226,
232,
226,
233,
226,
234,
226,
235,
226,
236,
226,
237,
226,
238,
226,
239,
226,
163,
157,
164,
157,
165,
157,
166,
157,
167,
157,
168,
157,
169,
157,
170,
157,
171,
157,
172,
157,
173,
157,
174,
157,
175,
157,
176,
157,
177,
157,
178,
157,
179,
157,
180,
157,
181,
157,
182,
157,
183,
157,
184,
157,
185,
157,
186,
157,
187,
157,
188,
157,
189,
157,
190,
157,
191,
157,
192,
157,
193,
157,
194,
157,
195,
157,
196,
157,
197,
157,
198,
157,
199,
157,
200,
157,
201,
157,
202,
157,
203,
157,
204,
157,
205,
157,
206,
157,
207,
157,
208,
157,
209,
157,
210,
157,
211,
157,
212,
157,
213,
157,
214,
157,
215,
157,
216,
157,
217,
157,
218,
157,
219,
157,
220,
157,
221,
157,
222,
157,
223,
157,
224,
157,
225,
157,
226,
157,
227,
157,
228,
157,
229,
157,
230,
157,
231,
157,
232,
157,
233,
157,
234,
157,
235,
157,
236,
157,
237,
157,
238,
157,
239,
157,
240,
157,
241,
157,
242,
157,
243,
157,
244,
157,
245,
157,
246,
157,
247,
157,
248,
157,
249,
157,
250,
157,
251,
157,
252,
157,
253,
157,
254,
157,
255,
157,
0,
158,
1,
158,
2,
158,
240,
226,
241,
226,
242,
226,
243,
226,
244,
226,
245,
226,
246,
226,
247,
226,
248,
226,
249,
226,
250,
226,
251,
226,
252,
226,
253,
226,
254,
226,
255,
226,
0,
227,
1,
227,
2,
227,
3,
227,
4,
227,
5,
227,
6,
227,
7,
227,
8,
227,
9,
227,
10,
227,
11,
227,
12,
227,
13,
227,
14,
227,
15,
227,
16,
227,
17,
227,
18,
227,
19,
227,
20,
227,
21,
227,
22,
227,
23,
227,
24,
227,
25,
227,
26,
227,
27,
227,
28,
227,
29,
227,
30,
227,
31,
227,
32,
227,
33,
227,
34,
227,
35,
227,
36,
227,
37,
227,
38,
227,
39,
227,
40,
227,
41,
227,
42,
227,
43,
227,
44,
227,
45,
227,
46,
227,
47,
227,
48,
227,
49,
227,
50,
227,
51,
227,
52,
227,
53,
227,
54,
227,
55,
227,
56,
227,
57,
227,
58,
227,
59,
227,
60,
227,
61,
227,
62,
227,
63,
227,
64,
227,
65,
227,
66,
227,
67,
227,
68,
227,
69,
227,
70,
227,
71,
227,
72,
227,
73,
227,
74,
227,
75,
227,
76,
227,
77,
227,
3,
158,
4,
158,
5,
158,
6,
158,
7,
158,
8,
158,
9,
158,
10,
158,
11,
158,
12,
158,
13,
158,
14,
158,
15,
158,
16,
158,
17,
158,
18,
158,
19,
158,
20,
158,
21,
158,
22,
158,
23,
158,
24,
158,
25,
158,
26,
158,
27,
158,
28,
158,
29,
158,
30,
158,
36,
158,
39,
158,
46,
158,
48,
158,
52,
158,
59,
158,
60,
158,
64,
158,
77,
158,
80,
158,
82,
158,
83,
158,
84,
158,
86,
158,
89,
158,
93,
158,
95,
158,
96,
158,
97,
158,
98,
158,
101,
158,
110,
158,
111,
158,
114,
158,
116,
158,
117,
158,
118,
158,
119,
158,
120,
158,
121,
158,
122,
158,
123,
158,
124,
158,
125,
158,
128,
158,
129,
158,
131,
158,
132,
158,
133,
158,
134,
158,
137,
158,
138,
158,
140,
158,
141,
158,
142,
158,
143,
158,
144,
158,
145,
158,
148,
158,
149,
158,
150,
158,
151,
158,
152,
158,
153,
158,
154,
158,
155,
158,
156,
158,
158,
158,
160,
158,
161,
158,
162,
158,
163,
158,
164,
158,
165,
158,
167,
158,
168,
158,
169,
158,
170,
158,
78,
227,
79,
227,
80,
227,
81,
227,
82,
227,
83,
227,
84,
227,
85,
227,
86,
227,
87,
227,
88,
227,
89,
227,
90,
227,
91,
227,
92,
227,
93,
227,
94,
227,
95,
227,
96,
227,
97,
227,
98,
227,
99,
227,
100,
227,
101,
227,
102,
227,
103,
227,
104,
227,
105,
227,
106,
227,
107,
227,
108,
227,
109,
227,
110,
227,
111,
227,
112,
227,
113,
227,
114,
227,
115,
227,
116,
227,
117,
227,
118,
227,
119,
227,
120,
227,
121,
227,
122,
227,
123,
227,
124,
227,
125,
227,
126,
227,
127,
227,
128,
227,
129,
227,
130,
227,
131,
227,
132,
227,
133,
227,
134,
227,
135,
227,
136,
227,
137,
227,
138,
227,
139,
227,
140,
227,
141,
227,
142,
227,
143,
227,
144,
227,
145,
227,
146,
227,
147,
227,
148,
227,
149,
227,
150,
227,
151,
227,
152,
227,
153,
227,
154,
227,
155,
227,
156,
227,
157,
227,
158,
227,
159,
227,
160,
227,
161,
227,
162,
227,
163,
227,
164,
227,
165,
227,
166,
227,
167,
227,
168,
227,
169,
227,
170,
227,
171,
227,
171,
158,
172,
158,
173,
158,
174,
158,
175,
158,
176,
158,
177,
158,
178,
158,
179,
158,
181,
158,
182,
158,
183,
158,
185,
158,
186,
158,
188,
158,
191,
158,
192,
158,
193,
158,
194,
158,
195,
158,
197,
158,
198,
158,
199,
158,
200,
158,
202,
158,
203,
158,
204,
158,
208,
158,
210,
158,
211,
158,
213,
158,
214,
158,
215,
158,
217,
158,
218,
158,
222,
158,
225,
158,
227,
158,
228,
158,
230,
158,
232,
158,
235,
158,
236,
158,
237,
158,
238,
158,
240,
158,
241,
158,
242,
158,
243,
158,
244,
158,
245,
158,
246,
158,
247,
158,
248,
158,
250,
158,
253,
158,
255,
158,
0,
159,
1,
159,
2,
159,
3,
159,
4,
159,
5,
159,
6,
159,
7,
159,
8,
159,
9,
159,
10,
159,
12,
159,
15,
159,
17,
159,
18,
159,
20,
159,
21,
159,
22,
159,
24,
159,
26,
159,
27,
159,
28,
159,
29,
159,
30,
159,
31,
159,
33,
159,
35,
159,
36,
159,
37,
159,
38,
159,
39,
159,
40,
159,
41,
159,
42,
159,
43,
159,
45,
159,
46,
159,
48,
159,
49,
159,
172,
227,
173,
227,
174,
227,
175,
227,
176,
227,
177,
227,
178,
227,
179,
227,
180,
227,
181,
227,
182,
227,
183,
227,
184,
227,
185,
227,
186,
227,
187,
227,
188,
227,
189,
227,
190,
227,
191,
227,
192,
227,
193,
227,
194,
227,
195,
227,
196,
227,
197,
227,
198,
227,
199,
227,
200,
227,
201,
227,
202,
227,
203,
227,
204,
227,
205,
227,
206,
227,
207,
227,
208,
227,
209,
227,
210,
227,
211,
227,
212,
227,
213,
227,
214,
227,
215,
227,
216,
227,
217,
227,
218,
227,
219,
227,
220,
227,
221,
227,
222,
227,
223,
227,
224,
227,
225,
227,
226,
227,
227,
227,
228,
227,
229,
227,
230,
227,
231,
227,
232,
227,
233,
227,
234,
227,
235,
227,
236,
227,
237,
227,
238,
227,
239,
227,
240,
227,
241,
227,
242,
227,
243,
227,
244,
227,
245,
227,
246,
227,
247,
227,
248,
227,
249,
227,
250,
227,
251,
227,
252,
227,
253,
227,
254,
227,
255,
227,
0,
228,
1,
228,
2,
228,
3,
228,
4,
228,
5,
228,
6,
228,
7,
228,
8,
228,
9,
228,
50,
159,
51,
159,
52,
159,
53,
159,
54,
159,
56,
159,
58,
159,
60,
159,
63,
159,
64,
159,
65,
159,
66,
159,
67,
159,
69,
159,
70,
159,
71,
159,
72,
159,
73,
159,
74,
159,
75,
159,
76,
159,
77,
159,
78,
159,
79,
159,
82,
159,
83,
159,
84,
159,
85,
159,
86,
159,
87,
159,
88,
159,
89,
159,
90,
159,
91,
159,
92,
159,
93,
159,
94,
159,
95,
159,
96,
159,
97,
159,
98,
159,
99,
159,
100,
159,
101,
159,
102,
159,
103,
159,
104,
159,
105,
159,
106,
159,
107,
159,
108,
159,
109,
159,
110,
159,
111,
159,
112,
159,
113,
159,
114,
159,
115,
159,
116,
159,
117,
159,
118,
159,
119,
159,
120,
159,
121,
159,
122,
159,
123,
159,
124,
159,
125,
159,
126,
159,
129,
159,
130,
159,
141,
159,
142,
159,
143,
159,
144,
159,
145,
159,
146,
159,
147,
159,
148,
159,
149,
159,
150,
159,
151,
159,
152,
159,
156,
159,
157,
159,
158,
159,
161,
159,
162,
159,
163,
159,
164,
159,
165,
159,
44,
249,
121,
249,
149,
249,
231,
249,
241,
249,
10,
228,
11,
228,
12,
228,
13,
228,
14,
228,
15,
228,
16,
228,
17,
228,
18,
228,
19,
228,
20,
228,
21,
228,
22,
228,
23,
228,
24,
228,
25,
228,
26,
228,
27,
228,
28,
228,
29,
228,
30,
228,
31,
228,
32,
228,
33,
228,
34,
228,
35,
228,
36,
228,
37,
228,
38,
228,
39,
228,
40,
228,
41,
228,
42,
228,
43,
228,
44,
228,
45,
228,
46,
228,
47,
228,
48,
228,
49,
228,
50,
228,
51,
228,
52,
228,
53,
228,
54,
228,
55,
228,
56,
228,
57,
228,
58,
228,
59,
228,
60,
228,
61,
228,
62,
228,
63,
228,
64,
228,
65,
228,
66,
228,
67,
228,
68,
228,
69,
228,
70,
228,
71,
228,
72,
228,
73,
228,
74,
228,
75,
228,
76,
228,
77,
228,
78,
228,
79,
228,
80,
228,
81,
228,
82,
228,
83,
228,
84,
228,
85,
228,
86,
228,
87,
228,
88,
228,
89,
228,
90,
228,
91,
228,
92,
228,
93,
228,
94,
228,
95,
228,
96,
228,
97,
228,
98,
228,
99,
228,
100,
228,
101,
228,
102,
228,
103,
228,
12,
250,
13,
250,
14,
250,
15,
250,
17,
250,
19,
250,
20,
250,
24,
250,
31,
250,
32,
250,
33,
250,
35,
250,
36,
250,
39,
250,
40,
250,
41,
250,
129,
46,
22,
232,
23,
232,
24,
232,
132,
46,
115,
52,
71,
52,
136,
46,
139,
46,
30,
232,
158,
53,
26,
54,
14,
54,
140,
46,
151,
46,
110,
57,
24,
57,
38,
232,
207,
57,
223,
57,
115,
58,
208,
57,
43,
232,
44,
232,
78,
59,
110,
60,
224,
60,
167,
46,
49,
232,
50,
232,
170,
46,
86,
64,
95,
65,
174,
46,
55,
67,
179,
46,
182,
46,
183,
46,
59,
232,
177,
67,
172,
67,
187,
46,
221,
67,
214,
68,
97,
70,
76,
70,
67,
232,
35,
71,
41,
71,
124,
71,
141,
71,
202,
46,
71,
73,
122,
73,
125,
73,
130,
73,
131,
73,
133,
73,
134,
73,
159,
73,
155,
73,
183,
73,
182,
73,
84,
232,
85,
232,
163,
76,
159,
76,
160,
76,
161,
76,
119,
76,
162,
76,
19,
77,
20,
77,
21,
77,
22,
77,
23,
77,
24,
77,
25,
77,
174,
77,
100,
232,
104,
228,
105,
228,
106,
228,
107,
228,
108,
228,
109,
228,
110,
228,
111,
228,
112,
228,
113,
228,
114,
228,
115,
228,
116,
228,
117,
228,
118,
228,
119,
228,
120,
228,
121,
228,
122,
228,
123,
228,
124,
228,
125,
228,
126,
228,
127,
228,
128,
228,
129,
228,
130,
228,
131,
228,
132,
228,
133,
228,
134,
228,
135,
228,
136,
228,
137,
228,
138,
228,
139,
228,
140,
228,
141,
228,
142,
228,
143,
228,
144,
228,
145,
228,
146,
228,
147,
228,
148,
228,
149,
228,
150,
228,
151,
228,
152,
228,
153,
228,
154,
228,
155,
228,
156,
228,
157,
228,
158,
228,
159,
228,
160,
228,
161,
228,
162,
228,
163,
228,
164,
228,
165,
228,
166,
228,
167,
228,
168,
228,
169,
228,
170,
228,
171,
228,
172,
228,
173,
228,
174,
228,
175,
228,
176,
228,
177,
228,
178,
228,
179,
228,
180,
228,
181,
228,
182,
228,
183,
228,
184,
228,
185,
228,
186,
228,
187,
228,
188,
228,
189,
228,
190,
228,
191,
228,
192,
228,
193,
228,
194,
228,
195,
228,
196,
228,
197,
228,
240,
67,
50,
76,
3,
70,
166,
69,
120,
69,
103,
114,
119,
77,
179,
69,
177,
124,
226,
76,
197,
124,
149,
59,
54,
71,
68,
71,
71,
76,
64,
76,
191,
66,
23,
54,
82,
115,
139,
110,
210,
112,
87,
76,
81,
163,
79,
71,
218,
69,
133,
76,
108,
124,
7,
77,
164,
74,
161,
70,
35,
107,
37,
114,
84,
90,
99,
26,
6,
62,
97,
63,
77,
102,
251,
86,
0,
0,
149,
125,
29,
89,
185,
139,
244,
61,
52,
151,
239,
123,
219,
91,
94,
29,
164,
90,
37,
54,
176,
158,
209,
90,
183,
91,
252,
92,
110,
103,
147,
133,
69,
153,
97,
116,
157,
116,
117,
56,
83,
29,
158,
54,
33,
96,
236,
62,
222,
88,
245,
58,
252,
122,
151,
159,
97,
65,
13,
137,
234,
49,
138,
10,
94,
50,
10,
67,
132,
132,
150,
159,
47,
148,
48,
73,
19,
134,
150,
88,
74,
151,
24,
146,
208,
121,
50,
122,
96,
102,
41,
106,
157,
136,
76,
116,
197,
123,
130,
103,
44,
122,
79,
82,
70,
144,
230,
52,
196,
115,
185,
93,
198,
116,
199,
159,
179,
87,
47,
73,
76,
84,
49,
65,
142,
54,
24,
88,
114,
122,
101,
123,
143,
139,
174,
70,
136,
110,
129,
65,
153,
93,
174,
123,
188,
36,
200,
159,
193,
36,
201,
36,
204,
36,
201,
159,
4,
133,
187,
53,
180,
64,
202,
159,
225,
68,
255,
173,
193,
98,
110,
112,
203,
159,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
192,
49,
193,
49,
194,
49,
195,
49,
196,
49,
12,
1,
197,
49,
209,
0,
205,
0,
198,
49,
199,
49,
203,
0,
232,
31,
200,
49,
202,
0,
201,
49,
202,
49,
203,
49,
204,
49,
14,
1,
205,
49,
206,
49,
0,
1,
193,
0,
205,
1,
192,
0,
18,
1,
201,
0,
26,
1,
200,
0,
76,
1,
211,
0,
209,
1,
210,
0,
0,
220,
190,
30,
4,
220,
192,
30,
202,
0,
1,
1,
225,
0,
206,
1,
224,
0,
81,
2,
19,
1,
233,
0,
27,
1,
232,
0,
43,
1,
237,
0,
208,
1,
236,
0,
77,
1,
243,
0,
210,
1,
242,
0,
107,
1,
250,
0,
212,
1,
249,
0,
214,
1,
216,
1,
218,
1,
220,
1,
252,
0,
8,
220,
191,
30,
12,
220,
193,
30,
234,
0,
97,
2,
218,
35,
219,
35
],
'i8',
ALLOC_NONE,
Runtime.GLOBAL_BASE + 66292
);
/* memory initializer */ allocate(
[
169,
163,
69,
17,
0,
0,
10,
101,
0,
0,
0,
0,
61,
78,
221,
110,
78,
157,
223,
145,
0,
0,
0,
0,
53,
119,
145,
100,
26,
79,
40,
79,
168,
79,
86,
81,
116,
81,
156,
81,
228,
81,
161,
82,
168,
82,
59,
83,
78,
83,
209,
83,
216,
83,
226,
86,
240,
88,
4,
89,
7,
89,
50,
89,
52,
89,
102,
91,
158,
91,
159,
91,
154,
92,
134,
94,
59,
96,
137,
101,
254,
103,
4,
104,
101,
104,
78,
109,
188,
112,
53,
117,
164,
126,
172,
126,
186,
126,
199,
126,
207,
126,
223,
126,
6,
127,
55,
127,
122,
130,
207,
130,
111,
131,
198,
137,
190,
139,
226,
139,
102,
143,
103,
143,
110,
143,
17,
116,
252,
124,
205,
125,
70,
105,
201,
122,
39,
82,
0,
0,
0,
0,
0,
0,
0,
0,
140,
145,
184,
120,
94,
145,
188,
128,
0,
0,
11,
141,
246,
128,
231,
9,
0,
0,
0,
0,
159,
128,
199,
158,
205,
76,
201,
157,
12,
158,
62,
76,
246,
157,
14,
112,
10,
158,
51,
161,
193,
53,
0,
0,
154,
110,
62,
130,
25,
117,
0,
0,
17,
73,
108,
154,
143,
154,
153,
159,
135,
121,
108,
132,
202,
29,
208,
5,
230,
42,
36,
78,
129,
78,
128,
78,
135,
78,
191,
78,
235,
78,
55,
79,
76,
52,
189,
79,
72,
62,
3,
80,
136,
80,
125,
52,
147,
52,
165,
52,
134,
81,
5,
89,
219,
81,
252,
81,
5,
82,
137,
78,
121,
82,
144,
82,
39,
83,
199,
53,
169,
83,
81,
53,
176,
83,
83,
53,
194,
83,
35,
84,
109,
53,
114,
53,
129,
54,
147,
84,
163,
84,
180,
84,
185,
84,
208,
84,
239,
84,
24,
85,
35,
85,
40,
85,
152,
53,
63,
85,
165,
53,
191,
53,
215,
85,
197,
53,
132,
125,
37,
85,
0,
0,
66,
12,
21,
13,
43,
81,
144,
85,
198,
44,
236,
57,
65,
3,
70,
142,
184,
77,
229,
148,
83,
64,
190,
128,
122,
119,
56,
44,
52,
58,
213,
71,
93,
129,
242,
105,
234,
77,
221,
100,
124,
13,
180,
15,
213,
12,
244,
16,
141,
100,
126,
142,
150,
14,
11,
12,
100,
15,
169,
44,
86,
130,
211,
68,
0,
0,
70,
13,
77,
154,
233,
128,
244,
71,
167,
78,
194,
44,
178,
154,
103,
58,
244,
149,
237,
63,
6,
53,
199,
82,
212,
151,
200,
120,
68,
45,
110,
157,
21,
152,
0,
0,
217,
67,
165,
96,
180,
100,
227,
84,
76,
45,
202,
43,
119,
16,
251,
57,
111,
16,
218,
102,
22,
103,
160,
121,
234,
100,
82,
80,
67,
12,
104,
142,
161,
33,
76,
139,
49,
7,
0,
0,
11,
72,
169,
1,
250,
63,
115,
88,
141,
45,
0,
0,
200,
69,
252,
4,
151,
96,
76,
15,
150,
13,
121,
85,
187,
64,
186,
67,
0,
0,
180,
74,
102,
42,
157,
16,
170,
129,
245,
152,
156,
13,
121,
99,
254,
57,
117,
39,
192,
141,
161,
86,
124,
100,
67,
62,
0,
0,
1,
166,
9,
14,
207,
42,
201,
44,
0,
0,
200,
16,
194,
57,
146,
57,
6,
58,
155,
130,
120,
53,
73,
94,
199,
32,
82,
86,
49,
15,
178,
44,
32,
151,
188,
52,
61,
108,
59,
78,
0,
0,
0,
0,
116,
117,
139,
46,
8,
34,
91,
166,
205,
140,
122,
14,
52,
12,
28,
104,
147,
127,
207,
16,
3,
40,
57,
41,
251,
53,
227,
81,
140,
14,
141,
15,
170,
14,
147,
63,
48,
15,
71,
13,
79,
17,
76,
14,
0,
0,
171,
14,
169,
11,
72,
13,
192,
16,
61,
17,
249,
63,
150,
38,
50,
100,
173,
15,
244,
51,
57,
118,
206,
43,
126,
13,
127,
13,
81,
44,
85,
44,
24,
58,
152,
14,
199,
16,
46,
15,
50,
166,
80,
107,
210,
140,
153,
141,
202,
140,
170,
149,
204,
84,
196,
130,
185,
85,
0,
0,
195,
158,
38,
156,
182,
154,
94,
119,
238,
45,
64,
113,
109,
129,
236,
128,
28,
92,
114,
101,
52,
129,
151,
55,
95,
83,
189,
128,
182,
145,
250,
14,
15,
14,
119,
14,
251,
14,
221,
53,
235,
77,
9,
54,
214,
12,
175,
86,
181,
39,
201,
16,
16,
14,
120,
14,
120,
16,
72,
17,
7,
130,
85,
20,
121,
14,
80,
78,
164,
45,
84,
90,
29,
16,
30,
16,
245,
16,
246,
16,
156,
87,
17,
14,
148,
118,
205,
130,
181,
15,
123,
14,
126,
81,
3,
55,
182,
15,
128,
17,
216,
82,
189,
162,
218,
73,
58,
24,
119,
65,
124,
130,
153,
88,
104,
82,
26,
54,
61,
87,
178,
123,
104,
91,
0,
72,
44,
75,
39,
159,
231,
73,
31,
156,
141,
155,
116,
91,
61,
49,
251,
85,
242,
53,
137,
86,
40,
78,
2,
89,
193,
27,
120,
248,
81,
151,
134,
0,
91,
78,
187,
78,
62,
53,
35,
92,
81,
95,
196,
95,
250,
56,
76,
98,
53,
101,
122,
107,
53,
108,
58,
108,
108,
112,
43,
114,
44,
78,
173,
114,
233,
72,
82,
127,
59,
121,
249,
124,
83,
127,
106,
98,
193,
52,
0,
0,
75,
99,
2,
128,
128,
128,
18,
102,
81,
105,
93,
83,
100,
136,
193,
137,
178,
120,
160,
139,
29,
141,
133,
148,
120,
149,
127,
149,
232,
149,
15,
142,
230,
151,
117,
152,
206,
152,
222,
152,
99,
153,
16,
152,
124,
156,
31,
158,
196,
158,
111,
107,
7,
249,
55,
78,
135,
0,
29,
150,
55,
98,
162,
148,
0,
0,
59,
80,
254,
109,
115,
156,
166,
159,
201,
61,
143,
136,
78,
65,
119,
112,
245,
92,
32,
75,
205,
81,
89,
53,
48,
93,
34,
97,
50,
138,
167,
143,
246,
145,
145,
113,
25,
103,
186,
115,
129,
50,
7,
161,
139,
60,
128,
25,
16,
75,
228,
120,
2,
116,
174,
81,
15,
135,
9,
64,
99,
106,
186,
162,
35,
66,
15,
134,
111,
10,
42,
122,
71,
153,
234,
138,
85,
151,
77,
112,
36,
83,
126,
32,
244,
147,
217,
118,
227,
137,
167,
159,
221,
119,
163,
78,
240,
79,
188,
80,
47,
78,
23,
79,
168,
159,
52,
84,
139,
125,
146,
88,
208,
88,
182,
29,
146,
94,
153,
94,
194,
95,
18,
39,
139,
101,
249,
51,
25,
105,
67,
106,
99,
60,
255,
108,
0,
0,
0,
114,
5,
69,
140,
115,
219,
62,
19,
74,
21,
91,
185,
116,
131,
139,
164,
92,
149,
86,
147,
122,
236,
123,
195,
124,
108,
126,
248,
130,
151,
133,
169,
159,
144,
136,
170,
159,
185,
142,
171,
159,
207,
143,
95,
133,
224,
153,
33,
146,
172,
159,
185,
141,
63,
20,
113,
64,
162,
66,
26,
90,
0,
0,
0,
0,
0,
0,
104,
152,
107,
103,
118,
66,
61,
87,
0,
0,
214,
133,
123,
73,
191,
130,
13,
113,
129,
76,
116,
109,
123,
93,
21,
107,
190,
111,
173,
159,
174,
159,
150,
91,
175,
159,
231,
102,
91,
126,
87,
110,
202,
121,
136,
61,
195,
68,
86,
50,
150,
39,
154,
67,
54,
69,
0,
0,
213,
92,
26,
59,
249,
138,
120,
92,
18,
61,
81,
53,
120,
93,
178,
159,
87,
113,
88,
69,
236,
64,
35,
30,
119,
76,
120,
57,
74,
52,
164,
1,
65,
108,
204,
138,
180,
79,
57,
2,
191,
89,
108,
129,
86,
152,
250,
152,
59,
95,
159,
11,
0,
0,
193,
33,
109,
137,
2,
65,
187,
70,
121,
144,
7,
63,
179,
159,
181,
161,
248,
64,
214,
55,
247,
70,
70,
108,
124,
65,
178,
134,
255,
115,
109,
69,
212,
56,
154,
84,
97,
69,
27,
69,
137,
77,
123,
76,
118,
77,
234,
69,
200,
63,
15,
75,
97,
54,
222,
68,
189,
68,
237,
65,
62,
93,
72,
93,
86,
93,
252,
61,
15,
56,
164,
93,
185,
93,
32,
56,
56,
56,
66,
94,
189,
94,
37,
95,
131,
95,
8,
57,
20,
57,
63,
57,
77,
57,
215,
96,
61,
97,
229,
92,
137,
57,
183,
97,
185,
97,
207,
97,
184,
57,
44,
98,
144,
98,
229,
98,
24,
99,
248,
57,
177,
86,
3,
58,
226,
99,
251,
99,
7,
100,
90,
100,
75,
58,
192,
100,
21,
93,
33,
86,
159,
159,
151,
58,
134,
101,
189,
58,
255,
101,
83,
102,
242,
58,
146,
102,
34,
59,
22,
103,
66,
59,
164,
103,
0,
104,
88,
59,
74,
104,
132,
104,
114,
59,
113,
59,
123,
59,
9,
105,
67,
105,
92,
114,
100,
105,
159,
105,
133,
105,
188,
59,
214,
105,
221,
59,
101,
106,
116,
106,
113,
106,
130,
106,
236,
59,
153,
106,
242,
59,
171,
106,
181,
106,
212,
106,
246,
106,
129,
107,
193,
107,
234,
107,
117,
108,
170,
108,
203,
60,
2,
109,
6,
109,
38,
109,
129,
109,
239,
60,
164,
109,
177,
109,
21,
110,
24,
110,
41,
110,
134,
110,
192,
137,
187,
110,
226,
110,
218,
110,
127,
159,
232,
110,
233,
110,
36,
111,
52,
111,
70,
61,
65,
63,
129,
111,
190,
111,
106,
61,
117,
61,
183,
113,
153,
92,
138,
61,
44,
112,
145,
61,
80,
112,
84,
112,
111,
112,
127,
112,
137,
112,
37,
3,
193,
67,
241,
53,
216,
14,
215,
62,
190,
87,
211,
110,
62,
113,
224,
87,
78,
54,
162,
105,
233,
139,
116,
91,
73,
122,
225,
88,
217,
148,
101,
122,
125,
122,
172,
89,
187,
122,
176,
122,
194,
122,
195,
122,
209,
113,
141,
100,
202,
65,
218,
122,
221,
122,
234,
122,
239,
65,
178,
84,
1,
92,
11,
123,
85,
123,
41,
123,
14,
83,
254,
92,
162,
123,
111,
123,
156,
131,
180,
91,
127,
108,
208,
123,
33,
132,
146,
123,
0,
0,
32,
93,
173,
61,
101,
92,
146,
132,
250,
123,
0,
0,
53,
124,
193,
92,
68,
124,
131,
124,
130,
72,
166,
124,
125,
102,
120,
69,
201,
124,
199,
124,
230,
124,
116,
124,
243,
124,
245,
124,
0,
0,
103,
126,
29,
69,
68,
110,
93,
125,
214,
110,
141,
116,
137,
125,
171,
125,
53,
113,
179,
125,
0,
0,
87,
64,
41,
96,
228,
125,
19,
61,
245,
125,
249,
23,
229,
125,
109,
131,
0,
0,
33,
97,
90,
97,
110,
126,
146,
126,
43,
67,
108,
148,
39,
126,
64,
127,
65,
127,
71,
127,
54,
121,
208,
98,
225,
153,
151,
127,
81,
99,
163,
127,
97,
22,
104,
0,
92,
69,
102,
55,
3,
69,
58,
131,
250,
127,
137,
100,
0,
0,
8,
128,
29,
128,
0,
0,
47,
128,
135,
160,
195,
108,
59,
128,
60,
128,
97,
128,
20,
39,
137,
73,
38,
102,
227,
61,
232,
102,
37,
103,
167,
128,
72,
138,
7,
129,
26,
129,
176,
88,
246,
38,
127,
108,
152,
100,
184,
79,
231,
100,
138,
20,
24,
130,
94,
24,
83,
106,
101,
74,
149,
74,
122,
68,
41,
130,
13,
11,
82,
106,
126,
61,
249,
79,
253,
20,
226,
132,
98,
131,
10,
107,
167,
73,
48,
53,
115,
23,
248,
61,
170,
130,
27,
105,
148,
249,
219,
65,
75,
133,
208,
130,
26,
131,
22,
14,
180,
23,
193,
54,
125,
49,
90,
53,
123,
130,
226,
130,
24,
131,
139,
62,
163,
109,
5,
107,
151,
107,
206,
53,
191,
61,
29,
131,
236,
85,
133,
131,
11,
69,
165,
109,
172,
131,
0,
0,
211,
131,
126,
52,
212,
110,
87,
106,
90,
133,
150,
52,
66,
110,
239,
46,
88,
132,
228,
91,
113,
132,
211,
61,
228,
68,
167,
106,
74,
132,
181,
60,
88,
121,
0,
0,
150,
107,
119,
110,
67,
110,
222,
132,
0,
0,
145,
131,
160,
68,
147,
132,
228,
132,
145,
92,
64,
66,
192,
92,
67,
69,
52,
133,
242,
90,
153,
110,
39,
69,
115,
133,
22,
69,
191,
103,
22,
134,
37,
134,
59,
134,
193,
133,
136,
112,
2,
134,
130,
21,
205,
112,
178,
249,
106,
69,
40,
134,
72,
54,
162,
24,
247,
83,
154,
115,
126,
134,
113,
135,
248,
160,
238,
135,
39,
44,
177,
135,
218,
135,
15,
136,
97,
86,
108,
134,
86,
104,
15,
70,
69,
136,
70,
136,
224,
117,
185,
61,
228,
117,
94,
136,
156,
136,
91,
70,
180,
136,
181,
136,
193,
99,
197,
136,
119,
119,
15,
119,
135,
137,
138,
137,
0,
0,
0,
0,
167,
137,
188,
137,
37,
138,
231,
137,
36,
121,
189,
122,
156,
138,
147,
119,
254,
145,
144,
138,
89,
122,
233,
122,
58,
123,
143,
63,
19,
71,
56,
123,
124,
113,
12,
139,
31,
139,
48,
84,
101,
85,
63,
139,
76,
139,
77,
139,
169,
138,
122,
74,
144,
139,
155,
139,
175,
138,
223,
22,
21,
70,
79,
136,
155,
140,
84,
125,
143,
125,
212,
249,
37,
55,
83,
125,
214,
140,
152,
125,
189,
125,
18,
141,
3,
141,
16,
25,
219,
140,
92,
112,
17,
141,
201,
76,
208,
62,
0,
0,
169,
141,
2,
128,
20,
16,
138,
73,
124,
59,
188,
129,
12,
113,
231,
122,
173,
142,
182,
142,
195,
142,
212,
146,
25,
143,
45,
143,
101,
131,
18,
132,
165,
143,
3,
147,
159,
162,
80,
10,
179,
143,
42,
73,
222,
137,
61,
133,
187,
61,
248,
94,
98,
50,
249,
143,
20,
160,
188,
134,
1,
133,
37,
35,
128,
57,
215,
110,
55,
144,
60,
133,
190,
122,
97,
144,
108,
133,
11,
134,
168,
144,
19,
135,
196,
144,
230,
134,
174,
144,
0,
0,
103,
145,
240,
58,
169,
145,
196,
145,
172,
124,
51,
137,
137,
30,
14,
146,
159,
108,
65,
146,
98,
146,
185,
85,
0,
0,
198,
138,
155,
60,
12,
139,
219,
85,
49,
13,
44,
147,
107,
147,
225,
138,
235,
139,
143,
112,
195,
90,
226,
138,
229,
138,
101,
73,
68,
146,
236,
139,
57,
140,
255,
139,
115,
147,
91,
148,
188,
142,
133,
149,
166,
149,
38,
148,
160,
149,
246,
111,
185,
66,
122,
38,
216,
134,
124,
18,
46,
62,
223,
73,
28,
108,
123,
150,
150,
150,
108,
65,
163,
150,
213,
110,
218,
97,
182,
150,
245,
120,
224,
138,
189,
150,
204,
83,
161,
73,
184,
108,
116,
2,
16,
100,
175,
144,
229,
144,
209,
74,
21,
25,
10,
51,
49,
151,
66,
134,
54,
151,
15,
74,
61,
69,
133,
69,
233,
74,
117,
112,
65,
91,
27,
151,
0,
0,
213,
145,
87,
151,
74,
91,
235,
145,
95,
151,
37,
148,
208,
80,
183,
48,
188,
48,
137,
151,
159,
151,
177,
151,
190,
151,
192,
151,
210,
151,
224,
151,
108,
84,
238,
151,
28,
116,
51,
148,
0,
0,
245,
151,
29,
148,
122,
121,
209,
74,
52,
152,
51,
152,
75,
152,
102,
152,
14,
59,
117,
113,
81,
61,
48,
6,
92,
65,
6,
87,
202,
152,
183,
152,
200,
152,
199,
152,
255,
74,
39,
109,
211,
22,
176,
85,
225,
152,
230,
152,
236,
152,
120,
147,
57,
153,
41,
74,
114,
75,
87,
152,
5,
153,
245,
153,
12,
154,
59,
154,
16,
154,
88,
154,
37,
87,
196,
54,
177,
144,
213,
155,
224,
154,
226,
154,
5,
155,
244,
154,
14,
76,
20,
155,
45,
155,
0,
134,
52,
80,
52,
155,
168,
105,
195,
56,
125,
48,
80,
155,
64,
155,
62,
157,
69,
90,
99,
24,
142,
155,
75,
66,
2,
156,
255,
155,
12,
156,
104,
158,
212,
157,
183,
159,
146,
161,
171,
161,
225,
160,
35,
161,
223,
161,
126,
157,
131,
157,
52,
161,
14,
158,
136,
104,
196,
157,
91,
33,
147,
161,
32,
162,
59,
25,
51,
162,
57,
157,
185,
160,
180,
162,
144,
158,
149,
158,
158,
158,
162,
158,
52,
77,
170,
158,
175,
158,
100,
67,
193,
158,
96,
59,
229,
57,
29,
61,
50,
79,
190,
55,
43,
140,
2,
159,
8,
159,
150,
75,
36,
148,
162,
109,
23,
159,
0,
0,
57,
159,
159,
86,
138,
86,
69,
159,
184,
153,
139,
144,
242,
151,
127,
132,
98,
159,
105,
159,
220,
122,
142,
159,
22,
114,
190,
75,
117,
73,
187,
73,
119,
113,
248,
73,
72,
67,
81,
74,
158,
115,
218,
139,
250,
24,
159,
121,
126,
137,
54,
142,
105,
147,
243,
147,
68,
138,
236,
146,
129,
147,
203,
147,
108,
137,
185,
68,
23,
114,
235,
62,
114,
119,
67,
122,
208,
112,
115,
68,
248,
67,
126,
113,
239,
23,
163,
112,
190,
24,
153,
53,
199,
62,
133,
24,
47,
84,
248,
23,
34,
55,
251,
22,
57,
24,
225,
54,
116,
23,
209,
24,
75,
95,
35,
55,
192,
22,
91,
87,
37,
74,
254,
19,
168,
18,
198,
19,
182,
20,
3,
133,
166,
54,
0,
0,
85,
132,
148,
73,
101,
113,
49,
62,
92,
85,
251,
62,
82,
112,
244,
68,
238,
54,
157,
153,
38,
111,
249,
103,
51,
55,
21,
60,
231,
61,
108,
88,
34,
25,
16,
104,
87,
64,
63,
55,
225,
64,
139,
64,
15,
65,
33,
108,
203,
84,
158,
86,
177,
102,
146,
86,
223,
15,
168,
11,
13,
14,
198,
147,
19,
139,
156,
147,
248,
78,
43,
81,
25,
56,
54,
68,
188,
78,
101,
4,
127,
3,
75,
79,
138,
79,
81,
86,
104,
90,
171,
1,
203,
3,
153,
57,
10,
3,
20,
4,
53,
52,
41,
79,
192,
2,
179,
142,
117,
2,
218,
138,
12,
2,
152,
78,
205,
80,
13,
81,
162,
79,
3,
79,
14,
74,
138,
62,
66,
79,
46,
80,
108,
80,
129,
80,
204,
79,
229,
79,
88,
80,
252,
80,
0,
0,
0,
0,
0,
0,
0,
0,
118,
110,
149,
53,
57,
62,
191,
62,
114,
109,
132,
24,
137,
62,
168,
81,
195,
81,
224,
5,
221,
68,
163,
4,
146,
4,
145,
4,
122,
141,
156,
138,
14,
7,
89,
82,
164,
82,
115,
8,
225,
82,
0,
0,
122,
70,
140,
113,
140,
67,
32,
12,
172,
73,
228,
16,
209,
105,
29,
14,
0,
0,
222,
62,
153,
116,
20,
116,
86,
116,
152,
115,
142,
75,
188,
74,
141,
64,
208,
83,
132,
53,
15,
114,
201,
64,
180,
85,
69,
3,
205,
84,
198,
11,
29,
87,
93,
146,
244,
150,
102,
147,
221,
87,
141,
87,
127,
87,
62,
54,
203,
88,
153,
90,
70,
138,
250,
22,
111,
23,
16,
23,
44,
90,
184,
89,
143,
146,
126,
90,
207,
90,
18,
90,
70,
89,
243,
25,
97,
24,
149,
66,
245,
54,
5,
109,
67,
116,
33,
90,
131,
94,
129,
90,
215,
139,
19,
4,
224,
147,
140,
116,
3,
19,
5,
113,
114,
73,
8,
148,
251,
137,
189,
147,
160,
55,
30,
92,
158,
92,
94,
94,
72,
94,
150,
25,
124,
25,
238,
58,
205,
94,
79,
91,
3,
25,
4,
25,
1,
55,
160,
24,
221,
54,
254,
22,
211,
54,
42,
129,
71,
138,
186,
29,
114,
52,
168,
137,
12,
95,
14,
95,
39,
25,
171,
23,
107,
90,
59,
23,
68,
91,
20,
134,
253,
117,
96,
136,
126,
96,
96,
40,
43,
38,
219,
95,
184,
62,
175,
37,
190,
37,
136,
144,
115,
111,
192,
97,
62,
0,
70,
0,
27,
38,
153,
97,
152,
97,
117,
96,
155,
44,
7,
45,
212,
70,
77,
145,
113,
100,
101,
70,
106,
43,
41,
58,
34,
43,
80,
52,
234,
152,
120,
46,
55,
99,
91,
164,
182,
100,
49,
99,
209,
99,
227,
73,
103,
45,
164,
98,
161,
44,
59,
100,
107,
101,
114,
105,
244,
59,
142,
48,
173,
50,
137,
73,
171,
50,
13,
85,
224,
50,
217,
24,
63,
148,
206,
102,
137,
50,
179,
49,
224,
58,
144,
65,
132,
85,
34,
139,
143,
85,
252,
22,
91,
85,
37,
84,
238,
120,
3,
49,
42,
24,
52,
50,
100,
52,
15,
50,
130,
49,
201,
66,
142,
102,
36,
109,
107,
102,
147,
75,
48,
102,
112,
120,
235,
29,
99,
102,
210,
50,
225,
50,
30,
102,
114,
88,
209,
56,
58,
56,
188,
55,
153,
59,
162,
55,
254,
51,
208,
116,
150,
59,
143,
103,
42,
70,
182,
104,
30,
104,
196,
59,
190,
106,
99,
56,
213,
55,
135,
68,
51,
106,
82,
106,
201,
106,
5,
107,
18,
25,
17,
101,
152,
104,
76,
106,
215,
59,
122,
106,
87,
107,
192,
63,
154,
60,
160,
147,
242,
146,
234,
139,
203,
138,
137,
146,
30,
128,
220,
137,
103,
148,
165,
109,
11,
111,
236,
73,
0,
0,
127,
63,
143,
61,
4,
110,
60,
64,
61,
90,
10,
110,
71,
88,
36,
109,
66,
120,
59,
113,
26,
67,
118,
66,
241,
112,
80,
114,
135,
114,
148,
114,
143,
71,
37,
71,
121,
81,
164,
74,
235,
5,
122,
116,
248,
62,
95,
54,
74,
74,
23,
73,
225,
95,
6,
63,
177,
62,
223,
74,
35,
140,
53,
63,
167,
96,
243,
62,
204,
116,
60,
116,
135,
147,
55,
116,
159,
68,
234,
109,
81,
69,
131,
117,
99,
63,
217,
76,
6,
77,
88,
63,
85,
117,
115,
118,
198,
165,
25,
59,
104,
116,
204,
138,
171,
73,
142,
73,
251,
58,
205,
61,
78,
74,
255,
62,
197,
73,
243,
72,
250,
145,
50,
87,
66,
147,
227,
138,
100,
24,
223,
80,
33,
82,
231,
81,
120,
119,
50,
50,
14,
119,
15,
119,
123,
119,
151,
70,
129,
55,
94,
58,
240,
72,
56,
116,
155,
116,
191,
62,
186,
74,
199,
74,
200,
64,
150,
74,
174,
97,
7,
147,
129,
85,
30,
120,
141,
120,
136,
120,
210,
120,
208,
115,
89,
121,
65,
119,
227,
86,
14,
65,
0,
0,
150,
132,
165,
121,
45,
106,
250,
62,
58,
122,
244,
121,
110,
65,
230,
22,
50,
65,
53,
146,
241,
121,
76,
13,
140,
73,
153,
2,
186,
61,
110,
23,
151,
53,
107,
85,
112,
53,
170,
54,
212,
1,
13,
12,
226,
122,
89,
90,
245,
38,
175,
90,
156,
90,
13,
90,
91,
2,
240,
120,
42,
90,
198,
91,
254,
122,
249,
65,
93,
124,
109,
124,
17,
66,
179,
91,
188,
94,
166,
94,
205,
124,
249,
73,
176,
23,
142,
124,
124,
124,
174,
124,
178,
106,
220,
125,
7,
126,
211,
125,
78,
127,
97,
98,
92,
97,
72,
123,
151,
125,
130,
94,
106,
66,
117,
107,
22,
9,
214,
103,
78,
0,
207,
53,
196,
87,
18,
100,
248,
99,
98,
73,
221,
127,
39,
123,
44,
8,
233,
90,
67,
93,
12,
123,
14,
94,
230,
153,
69,
134,
99,
154,
28,
106,
63,
52,
226,
57,
247,
73,
173,
101,
31,
154,
160,
101,
128,
132,
39,
113,
209,
108,
234,
68,
55,
129,
2,
68,
198,
128,
9,
129,
66,
129,
180,
103,
195,
152,
66,
106,
98,
130,
101,
130,
81,
106,
83,
132,
167,
109,
16,
134,
27,
114,
134,
90,
127,
65,
64,
24,
43,
91,
161,
24,
228,
90,
216,
24,
160,
134,
188,
249,
143,
61,
45,
136,
34,
116,
2,
90,
110,
136,
69,
79,
135,
136,
191,
136,
230,
136,
101,
137,
77,
137,
131,
86,
84,
137,
133,
119,
132,
119,
245,
139,
217,
139,
156,
139,
249,
137,
173,
62,
163,
132,
245,
70,
207,
70,
242,
55,
61,
138,
28,
138,
72,
148,
77,
95,
43,
146,
132,
66,
212,
101,
41,
113,
196,
112,
69,
24,
109,
157,
159,
140,
233,
140,
220,
125,
154,
89,
195,
119,
240,
89,
110,
67,
212,
54,
42,
142,
167,
142,
9,
76,
48,
143,
74,
143,
244,
66,
88,
108,
187,
111,
33,
35,
155,
72,
121,
111,
139,
110,
218,
23,
233,
155,
181,
54,
47,
73,
187,
144,
0,
0,
113,
85,
6,
73,
187,
145,
4,
148,
75,
138,
98,
64,
252,
138,
39,
148,
29,
140,
59,
140,
229,
132,
43,
138,
153,
149,
167,
149,
151,
149,
150,
149,
52,
141,
69,
116,
194,
62,
255,
72,
66,
74,
234,
67,
231,
62,
37,
50,
143,
150,
231,
142,
102,
142,
101,
142,
204,
62,
237,
73,
120,
74,
238,
63,
18,
116,
107,
116,
252,
62,
65,
151,
176,
144,
71,
104,
29,
74,
147,
144,
223,
87,
0,
0,
104,
147,
137,
137,
38,
140,
47,
139,
190,
99,
186,
146,
17,
91,
105,
139,
60,
73,
249,
115,
27,
66,
155,
151,
113,
151,
56,
153,
38,
15,
193,
93,
197,
139,
178,
74,
31,
152,
218,
148,
246,
146,
215,
149,
229,
145,
192,
68,
80,
139,
103,
74,
100,
139,
220,
152,
69,
138,
0,
63,
42,
146,
37,
73,
20,
132,
59,
153,
77,
153,
6,
123,
253,
61,
155,
153,
111,
75,
170,
153,
92,
154,
101,
139,
200,
88,
143,
106,
33,
154,
254,
90,
47,
154,
241,
152,
144,
75,
72,
153,
188,
153,
189,
75,
151,
75,
125,
147,
114,
88,
2,
19,
34,
88,
184,
73,
232,
20,
68,
120,
31,
39,
184,
61,
197,
104,
125,
61,
88,
148,
39,
57,
80,
97,
129,
39,
107,
41,
7,
97,
79,
156,
83,
156,
123,
156,
53,
156,
16,
156,
127,
155,
207,
155,
45,
158,
159,
155,
245,
161,
254,
160,
33,
157,
174,
76,
4,
65,
24,
158,
176,
76,
12,
157,
180,
161,
237,
160,
243,
160,
47,
153,
165,
157,
189,
132,
18,
110,
223,
111,
130,
107,
252,
133,
51,
69,
164,
109,
132,
110,
240,
109,
32,
132,
238,
133,
0,
110,
215,
55,
100,
96,
226,
121,
156,
53,
64,
54,
45,
73,
222,
73,
98,
61,
219,
147,
190,
146,
72,
147,
191,
2,
185,
120,
119,
146,
77,
148,
228,
79,
64,
52,
100,
144,
93,
85,
61,
120,
84,
120,
182,
120,
75,
120,
87,
23,
201,
49,
65,
73,
154,
54,
114,
79,
218,
111,
217,
111,
0,
0,
30,
112,
20,
84,
181,
65,
187,
87,
243,
88,
138,
87,
22,
157,
215,
87,
52,
113,
175,
52,
172,
65,
235,
113,
64,
108,
151,
79,
0,
0,
181,
23,
73,
138,
12,
97,
206,
90,
11,
90,
188,
66,
136,
68,
44,
55,
123,
75,
252,
137,
187,
147,
184,
147,
214,
24,
29,
15,
114,
132,
192,
108,
19,
20,
250,
66,
38,
44,
193,
67,
148,
89,
183,
61,
65,
103,
168,
125,
91,
97,
164,
96,
185,
73,
139,
73,
250,
137,
229,
146,
226,
115,
233,
62,
180,
116,
99,
139,
159,
24,
225,
62,
179,
74,
216,
106,
243,
115,
251,
115,
214,
62,
62,
74,
148,
74,
217,
23,
102,
74,
167,
3,
36,
20,
229,
73,
72,
116,
22,
73,
165,
112,
118,
73,
132,
146,
230,
115,
95,
147,
254,
4,
49,
147,
206,
138,
22,
138,
134,
147,
231,
139,
213,
85,
53,
73,
130,
138,
107,
113,
67,
73,
255,
12,
164,
86,
26,
6,
235,
11,
184,
12,
2,
85,
196,
121,
250,
23,
254,
125,
194,
22,
80,
74,
82,
24,
46,
69,
1,
148,
10,
55,
192,
138,
173,
73,
176,
89,
191,
24,
131,
24,
132,
116,
161,
90,
226,
54,
91,
61,
176,
54,
95,
146,
121,
90,
129,
138,
98,
24,
116,
147,
205,
60,
180,
10,
150,
74,
138,
57,
244,
80,
105,
61,
76,
61,
156,
19,
117,
113,
251,
66,
24,
130,
15,
110,
228,
144,
235,
68,
87,
109,
79,
126,
103,
112,
175,
108,
214,
60,
237,
63,
45,
62,
2,
110,
12,
111,
111,
61,
245,
3,
81,
117,
188,
54,
200,
52,
128,
70,
218,
62,
113,
72,
196,
89,
110,
146,
62,
73,
65,
143,
28,
140,
192,
107,
18,
88,
200,
87,
214,
54,
82,
20,
254,
112,
98,
67,
113,
74,
227,
47,
176,
18,
189,
35,
185,
104,
103,
105,
152,
19,
229,
52,
244,
123,
223,
54,
131,
138,
214,
55,
250,
51,
159,
76,
26,
106,
173,
54,
183,
108,
62,
132,
223,
68,
206,
68,
38,
109,
81,
109,
130,
108,
222,
111,
23,
111,
9,
113,
61,
131,
58,
23,
237,
131,
128,
108,
83,
112,
219,
23,
137,
89,
130,
90,
179,
23,
97,
90,
113,
90,
5,
25,
252,
65,
45,
55,
239,
89,
60,
23,
199,
54,
142,
113,
144,
147,
154,
102,
165,
66,
110,
90,
43,
90,
147,
66,
43,
106,
249,
62,
54,
119,
91,
68,
202,
66,
29,
113,
89,
66,
225,
137,
176,
79,
40,
109,
194,
92,
206,
68,
77,
126,
189,
67,
12,
106,
86,
66,
4,
19,
166,
112,
51,
113,
233,
67,
165,
61,
223,
108,
37,
248,
79,
74,
101,
126,
235,
89,
47,
93,
243,
61,
92,
95,
93,
74,
223,
23,
164,
125,
38,
132,
133,
84,
250,
58,
0,
51,
20,
2,
126,
87,
213,
8,
25,
6,
229,
63,
158,
31,
182,
162,
3,
112,
91,
145,
112,
93,
143,
115,
211,
124,
89,
138,
32,
148,
200,
79,
231,
127,
205,
114,
16,
115,
244,
122,
56,
115,
57,
115,
246,
86,
65,
115,
72,
115,
169,
62,
24,
123,
108,
144,
245,
113,
242,
72,
225,
115,
246,
129,
202,
62,
12,
119,
209,
62,
162,
108,
253,
86,
25,
116,
30,
116,
31,
116,
226,
62,
240,
62,
244,
62,
250,
62,
211,
116,
14,
63,
83,
63,
66,
117,
109,
117,
114,
117,
141,
117,
124,
63,
200,
117,
220,
117,
192,
63,
77,
118,
215,
63,
116,
118,
220,
63,
122,
118,
92,
79,
136,
113,
35,
86,
128,
137,
105,
88,
29,
64,
67,
119,
57,
64,
97,
103,
69,
64,
219,
53,
152,
119,
106,
64,
111,
64,
94,
92,
190,
119,
203,
119,
242,
88,
24,
120,
185,
112,
28,
120,
168,
64,
57,
120,
71,
120,
81,
120,
102,
120,
72,
132,
53,
85,
51,
121,
3,
104,
50,
121,
3,
65,
9,
65,
145,
121,
153,
121,
187,
143,
6,
122,
188,
143,
103,
65,
145,
122,
178,
65,
188,
122,
121,
130,
196,
65,
207,
122,
219,
122,
207,
65,
33,
78,
98,
123,
108,
123,
123,
123,
18,
124,
27,
124,
96,
66,
122,
66,
123,
124,
156,
124,
140,
66,
184,
124,
148,
66,
237,
124,
147,
143,
192,
112,
207,
12,
207,
125,
212,
125,
208,
125,
253,
125,
174,
127,
180,
127,
159,
114,
151,
67,
32,
128,
37,
128,
57,
123,
46,
128,
49,
128,
84,
128,
204,
61,
180,
87,
160,
112,
183,
128,
233,
128,
237,
67,
12,
129,
42,
115,
14,
129,
18,
129,
96,
117,
20,
129,
1,
68,
57,
59,
86,
129,
89,
129,
90,
129,
19,
68,
58,
88,
124,
129,
132,
129,
37,
68,
147,
129,
45,
68,
165,
129,
239,
87,
193,
129,
228,
129,
84,
130,
143,
68,
166,
130,
118,
130,
202,
130,
216,
130,
255,
130,
176,
68,
87,
131,
105,
150,
138,
105,
5,
132,
245,
112,
100,
132,
227,
96,
136,
132,
4,
69,
190,
132,
225,
132,
248,
132,
16,
133,
56,
133,
82,
133,
59,
69,
111,
133,
112,
133,
224,
133,
119,
69,
114,
134,
146,
134,
178,
134,
239,
134,
69,
150,
139,
135,
6,
70,
23,
70,
174,
136,
255,
136,
36,
137,
71,
137,
145,
137,
103,
121,
41,
138,
56,
138,
148,
138,
180,
138,
81,
140,
212,
140,
242,
140,
28,
141,
152,
71,
95,
88,
195,
141,
237,
71,
238,
78,
58,
142,
216,
85,
84,
87,
113,
142,
245,
85,
176,
142,
55,
72,
206,
142,
226,
142,
228,
142,
237,
142,
242,
142,
183,
143,
193,
143,
202,
143,
204,
143,
51,
144,
196,
153,
173,
72,
224,
152,
19,
146,
30,
73,
40,
146,
88,
146,
107,
146,
177,
146,
174,
146,
191,
146,
227,
146,
235,
146,
243,
146,
244,
146,
253,
146,
67,
147,
132,
147,
173,
147,
69,
73,
81,
73,
191,
158,
23,
148,
1,
83,
29,
148,
45,
148,
62,
148,
106,
73,
84,
148,
121,
148,
45,
149,
162,
149,
167,
73,
244,
149,
51,
150,
229,
73,
160,
103,
36,
74,
64,
151,
53,
74,
178,
151,
194,
151,
84,
86,
228,
74,
232,
96,
185,
152,
25,
75,
241,
152,
68,
88,
14,
153,
25,
153,
180,
81,
28,
153,
55,
153,
66,
153,
93,
153,
98,
153,
112,
75,
197,
153,
157,
75,
60,
154,
15,
155,
131,
122,
105,
155,
129,
155,
221,
155,
241,
155,
244,
155,
109,
76,
32,
156,
111,
55,
194,
27,
73,
157,
58,
156,
254,
158,
80,
86,
147,
157,
189,
157,
192,
157,
252,
157,
246,
148,
182,
143,
123,
158,
172,
158,
177,
158,
189,
158,
198,
158,
220,
148,
226,
158,
241,
158,
248,
158,
200,
122,
68,
159,
148,
0,
183,
2,
160,
3,
26,
105,
195,
148,
172,
89,
215,
4,
64,
88,
193,
148,
185,
55,
213,
5,
21,
6,
118,
6,
186,
22,
87,
87,
115,
113,
194,
10,
205,
10,
191,
11,
106,
84,
59,
248,
203,
11,
158,
84,
251,
11,
59,
12,
83,
12,
101,
12,
124,
12,
231,
96,
141,
12,
122,
86,
181,
12,
221,
12,
237,
12,
111,
13,
178,
13,
200,
13,
85,
105,
47,
156,
165,
135,
4,
14,
14,
14,
215,
14,
144,
15,
45,
15,
115,
14,
32,
92,
188,
15,
11,
94,
92,
16,
79,
16,
118,
16,
30,
103,
123,
16,
136,
16,
150,
16,
71,
54,
191,
16,
211,
16,
47,
17,
59,
17,
100,
83,
173,
132,
227,
18,
117,
19,
54,
19,
129,
139,
119,
21,
25,
22,
195,
23,
199,
23,
120,
78,
187,
112,
45,
24,
106,
25,
45,
26,
69,
26,
42,
28,
112,
28,
172,
28,
200,
30,
195,
98,
213,
30,
21,
31,
152,
113,
85,
104,
69,
32,
233,
105,
200,
54,
124,
34,
215,
35,
250,
35,
42,
39,
113,
40,
79,
41,
253,
130,
103,
41,
147,
41,
213,
42,
165,
137,
232,
42,
160,
143,
14,
43,
184,
151,
63,
43,
71,
152,
189,
154,
76,
44,
0,
0,
136,
44,
183,
44,
232,
91,
8,
45,
18,
45,
183,
45,
149,
45,
66,
46,
116,
47,
204,
47,
51,
48,
102,
48,
31,
51,
222,
51,
177,
95,
72,
102,
191,
102,
121,
122,
103,
53,
243,
53,
0,
0,
186,
73,
0,
0,
26,
54,
22,
55,
0,
0,
70,
3,
181,
88,
14,
103,
24,
105,
167,
58,
87,
118,
226,
95,
17,
62,
185,
62,
254,
117,
154,
32,
208,
72,
184,
74,
25,
65,
154,
138,
238,
66,
13,
67,
59,
64,
52,
67,
150,
67,
69,
74,
202,
5,
210,
81,
17,
6,
159,
89,
168,
30,
190,
59,
255,
60,
4,
68,
214,
68,
136,
87,
116,
70,
155,
57,
47,
71,
232,
133,
201,
153,
98,
55,
195,
33,
94,
139,
78,
139,
0,
0,
18,
72,
251,
72,
21,
74,
9,
114,
192,
74,
120,
12,
101,
89,
165,
78,
134,
79,
121,
7,
218,
142,
44,
80,
143,
82,
63,
87,
113,
113,
153,
82,
25,
84,
74,
63,
167,
74,
188,
85,
70,
84,
110,
84,
82,
107,
0,
0,
115,
52,
63,
85,
50,
118,
94,
85,
24,
71,
98,
85,
102,
85,
199,
87,
63,
73,
93,
88,
102,
80,
251,
52,
204,
51,
0,
0,
3,
89,
124,
71,
72,
137,
174,
90,
137,
91,
6,
92,
144,
29,
161,
87,
81,
113,
0,
0,
2,
97,
18,
124,
86,
144,
178,
97,
154,
79,
98,
139,
2,
100,
74,
100,
91,
93,
247,
107,
0,
0,
132,
100,
28,
25,
234,
138,
246,
73,
136,
100,
239,
63,
18,
101,
192,
75,
191,
101,
181,
102,
27,
39,
101,
148,
225,
87,
149,
97,
39,
90,
205,
248,
0,
0,
185,
86,
33,
69,
252,
102,
106,
78,
52,
73,
86,
150,
143,
109,
189,
108,
24,
54,
119,
137,
153,
103,
110,
104,
17,
100,
94,
104,
0,
0,
199,
104,
66,
123,
192,
144,
17,
10,
38,
105,
0,
0,
57,
105,
69,
122,
0,
0,
250,
105,
38,
154,
45,
106,
95,
54,
105,
100,
33,
0,
131,
121,
52,
106,
91,
107,
44,
93,
25,
53,
0,
0,
157,
107,
208,
70,
164,
108,
59,
117,
101,
136,
174,
109,
182,
88,
28,
55,
141,
37,
75,
112,
205,
113,
84,
60,
128,
114,
133,
114,
129,
146,
122,
33,
139,
114,
48,
147,
230,
114,
208,
73,
57,
108,
159,
148,
80,
116,
248,
14,
39,
136,
245,
136,
38,
41,
115,
132,
177,
23,
184,
110,
42,
74,
32,
24,
164,
57,
185,
54,
0,
0,
0,
0,
63,
69,
182,
102,
173,
156,
164,
152,
67,
137,
204,
119,
88,
120,
214,
86,
223,
64,
10,
22,
161,
57,
47,
55,
232,
128,
197,
19,
173,
113,
102,
131,
221,
121,
168,
145,
0,
0,
183,
76,
175,
112,
171,
137,
253,
121,
10,
122,
11,
123,
102,
125,
122,
65,
67,
123,
126,
121,
9,
128,
181,
111,
223,
162,
3,
106,
24,
131,
162,
83,
7,
110,
191,
147,
54,
104,
93,
151,
111,
129,
35,
128,
181,
105,
237,
19,
47,
50,
72,
128,
133,
93,
48,
140,
131,
128,
21,
87,
35,
152,
73,
137,
171,
93,
136,
73,
190,
101,
213,
105,
210,
83,
165,
74,
129,
63,
17,
60,
54,
103,
144,
128,
244,
128,
46,
129,
161,
31,
79,
129,
137,
129,
175,
129,
26,
130,
6,
131,
47,
131,
138,
131,
202,
53,
104,
132,
170,
134,
250,
72,
230,
99,
86,
137,
8,
120,
85,
146,
184,
137,
242,
67,
231,
137,
223,
67,
232,
137,
70,
139,
212,
139,
248,
89,
9,
140,
0,
0,
197,
143,
236,
144,
0,
0,
16,
145,
60,
145,
247,
61,
94,
145,
202,
74,
208,
143,
143,
114,
139,
86,
231,
148,
233,
149,
176,
149,
184,
149,
50,
151,
209,
152,
73,
153,
106,
153,
195,
153,
40,
154,
14,
155,
90,
157,
155,
157,
159,
126,
248,
158,
35,
159,
164,
76,
71,
149,
147,
162,
162,
113,
255,
162,
145,
77,
18,
144,
203,
165,
156,
77,
156,
12,
190,
143,
193,
85,
186,
143,
176,
36,
185,
143,
147,
74,
9,
69,
127,
126,
86,
111,
177,
106,
234,
78,
228,
52,
44,
139,
157,
120,
58,
55,
128,
142,
245,
23,
36,
128,
108,
139,
153,
139,
62,
122,
175,
102,
235,
61,
85,
118,
183,
60,
53,
86,
86,
89,
154,
78,
129,
94,
88,
98,
191,
86,
109,
14,
14,
142,
109,
91,
136,
62,
158,
76,
222,
99,
0,
0,
246,
23,
123,
24,
48,
101,
45,
86,
74,
92,
26,
84,
17,
83,
198,
61,
152,
157,
125,
76,
34,
86,
30,
86,
73,
127,
216,
94,
117,
89,
64,
61,
112,
135,
28,
78,
234,
15,
73,
13,
186,
54,
23,
129,
94,
157,
24,
141,
59,
118,
69,
156,
78,
118,
185,
119,
69,
147,
50,
84,
72,
129,
247,
130,
37,
86,
50,
129,
24,
132,
189,
128,
234,
85,
98,
121,
67,
86,
22,
84,
157,
14,
206,
53,
5,
86,
241,
85,
241,
102,
226,
130,
45,
54,
52,
117,
240,
85,
186,
85,
151,
84,
114,
85,
65,
12,
150,
12,
208,
94,
72,
81,
118,
14,
98,
44,
162,
14,
171,
158,
90,
125,
222,
85,
117,
16,
157,
98,
109,
151,
148,
84,
205,
140,
246,
113,
118,
145,
252,
99,
185,
99,
254,
99,
105,
85,
67,
43,
114,
156,
179,
46,
154,
81,
223,
52,
167,
13,
167,
81,
77,
84,
30,
85,
19,
85,
102,
118,
45,
142,
138,
104,
177,
117,
182,
128,
4,
136,
134,
135,
199,
136,
182,
129,
28,
132,
193,
16,
236,
68,
4,
115,
6,
71,
144,
91,
11,
131,
147,
104,
123,
86,
244,
38,
47,
125,
163,
65,
115,
125,
208,
110,
182,
114,
112,
145,
217,
17,
8,
146,
252,
60,
169,
166,
172,
14,
249,
14,
102,
114,
162,
28,
78,
71,
194,
79,
249,
127,
235,
15,
250,
64,
93,
156,
31,
101,
160,
45,
243,
72,
224,
71,
124,
157,
236,
15,
10,
14,
0,
0,
163,
117,
237,
15,
0,
0,
72,
96,
135,
17,
163,
113,
142,
126,
80,
157,
26,
78,
4,
78,
119,
53,
13,
91,
178,
108,
103,
83,
172,
54,
220,
57,
125,
83,
165,
54,
24,
70,
154,
88,
110,
75,
45,
130,
75,
84,
170,
87,
149,
90,
121,
9,
0,
0,
82,
58,
101,
36,
116,
115,
172,
158,
9,
77,
237,
155,
254,
60,
48,
159,
91,
76,
169,
79,
158,
149,
222,
159,
92,
132,
182,
61,
178,
114,
179,
103,
32,
55,
46,
99,
37,
125,
247,
62,
44,
62,
42,
58,
8,
144,
204,
82,
116,
62,
122,
54,
233,
69,
142,
4,
64,
118,
240,
90,
182,
14,
122,
120,
46,
127,
167,
88,
191,
64,
124,
86,
139,
155,
116,
93,
84,
118,
52,
164,
133,
158,
225,
76,
0,
0,
251,
55,
25,
97,
218,
48,
242,
67,
0,
0,
93,
86,
169,
18,
167,
87,
99,
73,
6,
158,
52,
82,
174,
112,
173,
53,
0,
0,
124,
157,
86,
124,
57,
155,
222,
87,
108,
23,
83,
92,
211,
100,
208,
148,
53,
99,
100,
113,
173,
134,
40,
13,
34,
109,
226,
74,
113,
13,
0,
0,
254,
81,
15,
31,
142,
93,
3,
151,
209,
29,
129,
158,
76,
144,
31,
123,
2,
155,
209,
92,
163,
123,
104,
98,
53,
99,
255,
154,
207,
123,
42,
155,
126,
124,
0,
0,
66,
124,
134,
124,
21,
156,
252,
123,
9,
155,
0,
0,
27,
156,
62,
73,
90,
159,
115,
85,
195,
91,
253,
79,
152,
158,
242,
79,
96,
82,
6,
62,
209,
82,
103,
87,
86,
80,
183,
89,
18,
94,
200,
151,
171,
157,
92,
143,
105,
84,
180,
151,
64,
153,
186,
151,
44,
83,
48,
97,
44,
105,
218,
83,
10,
156,
2,
157,
59,
76,
65,
150,
128,
105,
166,
80,
70,
117,
109,
23,
218,
153,
115,
82,
0,
0,
89,
145,
129,
150,
92,
145,
0,
0,
81,
145,
151,
142,
127,
99,
35,
109,
202,
106,
17,
86,
142,
145,
122,
117,
133,
98,
252,
3,
79,
115,
112,
124,
33,
92,
253,
60,
0,
0,
25,
73,
214,
118,
157,
155,
42,
78,
212,
12,
190,
131,
66,
136,
0,
0,
74,
92,
192,
105,
0,
0,
122,
87,
31,
82,
245,
93,
206,
78,
49,
108,
242,
1,
57,
79,
156,
84,
218,
84,
154,
82,
130,
141,
254,
53,
0,
0,
243,
53,
0,
0,
82,
107,
124,
145,
165,
159,
151,
155,
46,
152,
180,
152,
186,
154,
168,
158,
132,
158,
122,
113,
20,
123,
0,
0,
250,
107,
24,
136,
120,
127,
0,
0,
32,
86,
74,
166,
119,
142,
83,
159,
0,
0,
212,
141,
79,
142,
28,
158,
1,
142,
130,
98,
125,
131,
40,
142,
117,
142,
211,
122,
119,
74,
62,
122,
216,
120,
234,
108,
103,
138,
7,
118,
90,
138,
38,
159,
206,
108,
214,
135,
195,
117,
178,
162,
83,
120,
64,
248,
12,
141,
226,
114,
113,
115,
45,
139,
2,
115,
241,
116,
235,
140,
187,
74,
47,
134,
186,
95,
160,
136,
183,
68,
0,
0,
59,
24,
5,
110,
0,
0,
126,
138,
27,
37,
0,
0,
253,
96,
103,
118,
215,
154,
68,
157,
110,
147,
143,
155,
245,
135,
0,
0,
0,
0,
247,
140,
44,
115,
33,
151,
176,
155,
214,
53,
178,
114,
7,
76,
81,
124,
74,
153,
89,
97,
89,
97,
4,
76,
150,
158,
125,
97,
0,
0,
95,
87,
111,
97,
166,
98,
57,
98,
0,
0,
92,
58,
226,
97,
170,
83,
245,
51,
100,
99,
2,
104,
210,
53,
87,
93,
194,
139,
218,
143,
57,
142,
0,
0,
217,
80,
70,
29,
6,
121,
50,
83,
56,
150,
59,
15,
101,
64,
0,
0,
254,
119,
0,
0,
194,
124,
26,
95,
218,
124,
45,
122,
102,
128,
99,
128,
77,
125,
5,
117,
242,
116,
148,
137,
26,
130,
12,
103,
98,
128,
134,
116,
91,
128,
240,
116,
3,
129,
36,
119,
137,
137,
204,
103,
83,
117,
209,
110,
169,
135,
206,
135,
200,
129,
140,
135,
73,
138,
173,
140,
67,
139,
43,
119,
248,
116,
218,
132,
53,
54,
178,
105,
166,
141,
0,
0,
169,
137,
0,
0,
185,
109,
193,
135,
17,
64,
231,
116,
219,
61,
118,
113,
164,
96,
156,
97,
209,
60,
0,
0,
119,
96,
0,
0,
113,
127,
45,
139,
0,
0,
233,
96,
126,
75,
32,
82,
24,
60,
199,
60,
215,
94,
86,
118,
49,
85,
68,
25,
254,
18,
3,
153,
220,
109,
173,
112,
193,
92,
173,
97,
15,
138,
119,
54,
238,
0,
70,
104,
14,
79,
98,
69,
31,
91,
76,
99,
80,
159,
166,
158,
107,
98,
71,
5,
219,
146,
223,
5,
197,
63,
76,
133,
181,
66,
239,
115,
181,
81,
73,
54,
66,
73,
228,
137,
68,
147,
219,
25,
238,
130,
200,
60,
60,
120,
68,
103,
223,
98,
51,
73,
170,
137,
160,
2,
179,
107,
5,
19,
171,
79,
237,
36,
8,
80,
41,
109,
132,
122,
0,
54,
177,
74,
19,
37,
0,
0,
126,
3,
164,
95,
128,
3,
71,
3,
219,
110,
31,
4,
0,
0,
1,
81,
122,
52,
14,
81,
108,
152,
67,
55,
22,
132,
164,
73,
135,
4,
96,
81,
180,
51,
106,
81,
255,
11,
252,
32,
229,
2,
48,
37,
142,
5,
51,
50,
131,
25,
130,
91,
125,
135,
179,
5,
153,
60,
178,
81,
184,
81,
52,
157,
201,
81,
207,
81,
209,
81,
220,
60,
211,
81,
166,
74,
179,
81,
226,
81,
66,
83,
237,
81,
205,
131,
62,
105,
45,
55,
123,
95,
11,
82,
38,
82,
60,
82,
181,
82,
87,
82,
148,
82,
185,
82,
197,
82,
21,
124,
66,
133,
224,
82,
13,
134,
19,
107,
0,
0,
222,
138,
73,
85,
217,
110,
128,
63,
84,
9,
236,
63,
51,
83,
0,
0,
226,
11,
203,
108,
38,
23,
27,
104,
213,
115,
74,
96,
170,
62,
204,
56,
232,
22,
221,
113,
162,
68,
109,
83,
116,
83,
171,
134,
126,
83,
0,
0,
150,
21,
19,
22,
230,
119,
147,
83,
155,
138,
160,
83,
171,
83,
174,
83,
167,
115,
114,
87,
89,
63,
156,
115,
193,
83,
197,
83,
73,
108,
73,
78,
254,
87,
217,
83,
171,
58,
143,
11,
224,
83,
235,
63,
163,
45,
246,
83,
119,
12,
19,
84,
121,
112,
43,
85,
87,
102,
91,
109,
109,
84,
83,
107,
116,
13,
93,
85,
143,
84,
164,
84,
166,
71,
13,
23,
221,
14,
180,
61,
77,
13,
188,
137,
152,
38,
71,
85,
237,
76,
47,
84,
23,
116,
134,
85,
169,
85,
0,
0,
215,
24,
58,
64,
82,
69,
53,
68,
179,
102,
180,
16,
55,
86,
205,
102,
138,
50,
164,
102,
173,
102,
77,
86,
79,
86,
241,
120,
241,
86,
135,
151,
254,
83,
0,
87,
239,
86,
237,
86,
102,
139,
35,
54,
79,
18,
70,
87,
165,
65,
110,
108,
139,
112,
66,
87,
177,
54,
126,
108,
230,
87,
22,
20,
3,
88,
84,
20,
99,
67,
38,
88,
245,
75,
92,
88,
170,
88,
97,
53,
224,
88,
220,
88,
60,
18,
251,
88,
255,
91,
67,
87,
80,
161,
120,
66,
211,
147,
161,
53,
31,
89,
166,
104,
195,
54,
89,
110,
62,
22,
36,
90,
83,
85,
146,
22,
5,
133,
201,
89,
78,
13,
129,
108,
42,
109,
220,
23,
217,
89,
251,
23,
178,
23,
166,
109,
113,
109,
40,
24,
213,
22,
249,
89,
69,
110,
171,
90,
99,
90,
230,
54,
169,
73,
0,
0,
8,
55,
150,
90,
101,
116,
211,
90,
161,
111,
84,
37,
133,
61,
17,
25,
50,
55,
184,
22,
131,
94,
208,
82,
118,
91,
136,
101,
124,
91,
14,
122,
4,
64,
93,
72,
4,
2,
213,
91,
96,
97,
52,
26,
204,
89,
165,
5,
243,
91,
157,
91,
16,
77,
5,
92,
68,
27,
19,
92,
206,
115,
20,
92,
165,
28,
40,
107,
73,
92,
221,
72,
133,
92,
233,
92,
239,
92,
139,
93,
249,
29,
55,
30,
16,
93,
24,
93,
70,
93,
164,
30,
186,
92,
215,
93,
252,
130,
45,
56,
1,
73,
73,
32,
115,
33,
135,
130,
54,
56,
194,
59,
46,
94,
138,
106,
0,
0,
122,
94,
188,
68,
211,
12,
166,
83,
183,
78,
0,
0,
168,
83,
113,
23,
9,
94,
244,
94,
130,
132,
249,
94,
251,
94,
160,
56,
252,
94,
62,
104,
27,
148,
13,
95,
193,
1,
148,
248,
222,
58,
174,
72,
58,
19,
58,
95,
136,
104,
208,
35,
0,
0,
113,
36,
99,
95,
189,
151,
110,
110,
114,
95,
64,
147,
54,
138,
167,
95,
182,
93,
95,
61,
80,
82,
106,
31,
248,
112,
104,
38,
214,
145,
158,
2,
41,
138,
49,
96,
133,
102,
119,
24,
99,
57,
199,
61,
57,
54,
144,
87,
180,
39,
113,
121,
64,
62,
158,
96,
0,
0,
179,
96,
130,
73,
143,
73,
83,
122,
164,
116,
225,
80,
160,
90,
100,
97,
36,
132,
66,
97,
166,
248,
210,
110,
129,
97,
244,
81,
86,
6,
135,
97,
170,
91,
183,
63,
95,
40,
211,
97,
157,
139,
93,
153,
208,
97,
50,
57,
128,
41,
193,
40,
35,
96,
92,
97,
30,
101,
139,
99,
24,
1,
197,
98,
112,
23,
213,
98,
13,
46,
108,
99,
223,
73,
23,
58,
56,
100,
248,
99,
142,
19,
252,
23,
0,
0,
138,
111,
54,
46,
20,
152,
140,
64,
29,
87,
225,
100,
229,
100,
123,
148,
102,
58,
58,
100,
87,
58,
77,
101,
22,
111,
40,
74,
35,
74,
133,
101,
109,
101,
95,
101,
126,
48,
181,
101,
64,
73,
55,
75,
209,
101,
216,
64,
41,
24,
224,
101,
227,
101,
223,
95,
0,
52,
24,
102,
247,
49,
248,
49,
68,
102,
164,
49,
165,
49,
75,
102,
117,
14,
103,
102,
230,
81,
115,
102,
0,
0,
61,
30,
49,
50,
244,
133,
200,
49,
19,
83,
197,
119,
247,
40,
164,
153,
2,
103,
156,
67,
33,
74,
43,
59,
250,
105,
194,
55,
0,
0,
103,
103,
98,
103,
205,
65,
237,
144,
215,
103,
233,
68,
34,
104,
80,
110,
60,
146,
1,
104,
230,
51,
160,
109,
93,
104,
111,
52,
225,
105,
11,
106,
223,
138,
115,
105,
195,
104,
205,
53,
1,
105,
0,
105,
50,
61,
1,
58,
60,
54,
128,
59,
172,
103,
97,
105,
74,
138,
252,
66,
54,
105,
152,
105,
161,
59,
201,
3,
99,
131,
144,
80,
249,
105,
89,
54,
42,
33,
69,
106,
3,
55,
157,
106,
243,
59,
177,
103,
200,
106,
156,
145,
13,
60,
29,
107,
35,
9,
222,
96,
53,
107,
116,
107,
205,
39,
181,
110,
219,
58,
181,
3,
88,
25,
64,
55,
33,
84,
90,
59,
225,
107,
252,
62,
220,
107,
55,
108,
139,
36,
241,
72,
81,
107,
90,
108,
38,
130,
121,
108,
188,
61,
197,
68,
189,
61,
164,
65,
12,
73,
0,
73,
201,
60,
229,
54,
235,
60,
50,
13,
131,
155,
249,
49,
145,
36,
143,
127,
55,
104,
37,
109,
161,
109,
235,
109,
150,
109,
92,
109,
124,
110,
4,
111,
127,
73,
133,
64,
114,
110,
51,
133,
116,
111,
199,
81,
0,
0,
0,
0,
46,
132,
33,
139,
0,
0,
47,
62,
83,
116,
130,
63,
204,
121,
79,
110,
145,
90,
75,
48,
248,
111,
13,
55,
157,
111,
48,
62,
250,
110,
151,
20,
61,
64,
85,
69,
240,
147,
68,
111,
92,
111,
78,
61,
116,
111,
112,
145,
59,
61,
159,
111,
68,
65,
211,
111,
145,
64,
85,
65,
57,
64,
240,
63,
180,
63,
63,
65,
223,
81,
86,
65,
87,
65,
64,
65,
221,
97,
75,
112,
126,
112,
167,
112,
129,
112,
204,
112,
213,
112,
214,
112,
223,
112,
4,
65,
232,
61,
180,
113,
150,
113,
119,
66,
43,
113,
69,
113,
136,
90,
74,
113,
0,
0,
156,
92,
101,
67,
79,
113,
98,
147,
193,
66,
44,
113,
90,
68,
39,
74,
34,
74,
186,
113,
232,
139,
189,
112,
14,
114,
66,
148,
21,
114,
17,
89,
67,
148,
36,
114,
65,
147,
5,
86,
46,
114,
64,
114,
116,
73,
189,
104,
85,
114,
87,
114,
85,
62,
68,
48,
13,
104,
61,
111,
130,
114,
0,
0,
43,
115,
35,
72,
43,
136,
237,
72,
4,
136,
40,
115,
46,
115,
207,
115,
170,
115,
58,
12,
46,
106,
201,
115,
73,
116,
226,
65,
231,
22,
36,
74,
35,
102,
197,
54,
183,
73,
141,
73,
251,
73,
247,
115,
21,
116,
3,
105,
38,
74,
57,
116,
195,
5,
215,
62,
0,
0,
173,
40,
96,
116,
178,
142,
71,
116,
228,
115,
118,
116,
185,
131,
108,
116,
48,
55,
116,
116,
241,
147,
44,
106,
130,
116,
83,
73,
140,
74,
95,
65,
121,
74,
143,
139,
70,
91,
3,
140,
158,
24,
200,
116,
136,
25,
14,
117,
0,
0,
30,
117,
217,
142,
75,
26,
215,
91,
172,
142,
133,
147,
77,
117,
74,
117,
103,
117,
110,
117,
130,
79,
4,
63,
19,
77,
142,
117,
93,
116,
158,
117,
180,
117,
2,
118,
44,
118,
81,
118,
79,
118,
111,
118,
118,
118,
245,
99,
144,
118,
239,
129,
248,
55,
17,
105,
14,
105,
161,
118,
165,
118,
183,
118,
204,
118,
159,
111,
98,
132,
157,
80,
125,
81,
28,
30,
30,
119,
38,
119,
64,
119,
175,
100,
32,
82,
88,
119,
172,
50,
175,
119,
100,
137,
104,
137,
193,
22,
244,
119,
0,
0,
118,
19,
18,
74,
202,
104,
175,
120,
199,
120,
211,
120,
165,
150,
46,
121,
224,
85,
215,
120,
52,
121,
177,
120,
12,
118,
184,
143,
132,
136,
43,
139,
131,
96,
28,
38,
134,
121,
0,
137,
2,
105,
128,
121,
87,
88,
157,
121,
57,
123,
60,
121,
169,
121,
42,
110,
38,
113,
168,
62,
198,
121,
13,
145,
212,
121,
32,
5,
95,
68,
15,
82,
130,
184,
248,
0,
0,
64,
32,
169,
78,
4,
0,
0,
0,
0,
52,
11,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
12,
64,
0,
0,
0,
0,
0,
0,
0,
0,
4,
88,
0,
60,
0,
0,
0,
0,
0,
128,
92,
173,
220,
243,
187,
201,
67,
238,
237,
164,
15,
38,
193,
155,
118,
242,
239,
222,
251,
250,
247,
15,
50,
68,
175,
254,
239,
253,
254,
17,
96,
176,
0,
0,
33,
25,
129,
32,
16,
136,
168,
96,
33,
105,
36,
0,
68,
137,
196,
0,
0,
3,
64,
53,
0,
67,
132,
49,
81,
147,
104,
2,
2,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
64,
0,
1,
128,
172,
100,
130,
64,
140,
161,
144,
4,
80,
96,
212,
0,
210,
42,
24,
157,
104,
53,
151,
79,
216,
248,
32,
196,
130,
28,
40,
130,
117,
148,
2,
56,
64,
160,
161,
197,
16,
113,
77,
196,
13,
152,
185,
94,
91,
1,
67,
159,
153,
3,
120,
32,
226,
31,
8,
137,
1,
201,
64,
7,
3,
13,
154,
144,
82,
209,
79,
124,
3,
2,
33,
32,
192,
110,
19,
131,
181,
219,
245,
229,
119,
144,
79,
23,
154,
54,
23,
12,
0,
110,
186,
9,
47,
96,
84,
0,
30,
120,
104,
34,
112,
86,
158,
37,
243,
142,
183,
23,
11,
239,
230,
119,
23,
91,
27,
193,
16,
152,
141,
18,
24,
182,
207,
1,
49,
114,
26,
91,
44,
182,
192,
32,
226,
195,
92,
130,
27,
224,
218,
206,
133,
214,
64,
169,
84,
11,
208,
15,
72,
68,
64,
16,
9,
212,
64,
174,
59,
100,
30,
68,
43,
23,
8,
134,
130,
54,
24,
160,
137,
231,
156,
91,
8,
132,
3,
2,
218,
144,
236,
219,
135,
133,
191,
162,
173,
157,
142,
157,
152,
32,
37,
70,
0,
70,
159,
127,
227,
213,
201,
132,
244,
214,
77,
6,
227,
182,
24,
18,
9,
0,
0,
0,
4,
0,
0,
32,
0,
0,
0,
0,
2,
0,
0,
0,
0,
0,
0,
0,
0,
0,
32,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
8,
0,
0,
142,
120,
110,
95,
63,
126,
221,
61,
247,
252,
155,
252,
174,
210,
255,
143,
107,
241,
231,
191,
186,
174,
110,
23,
239,
220,
167,
62,
182,
181,
119,
201,
146,
215,
165,
182,
74,
110,
155,
185,
129,
77,
103,
254,
84,
241,
155,
98,
254,
111,
82,
215,
54,
254,
191,
41,
69,
129,
249,
189,
101,
166,
66,
57,
0,
0,
66,
96,
143,
0,
148,
64,
64,
210,
175,
215,
209,
219,
0,
160,
152,
178,
123,
6,
82,
32,
152,
22,
200,
61,
9,
0,
0,
1,
0,
0,
0,
1,
10,
178,
8,
128,
0,
0,
0,
4,
136,
32,
20,
16,
76,
0,
0,
4,
0,
161,
68,
16,
0,
65,
1,
0,
8,
64,
240,
223,
79,
54,
88,
241,
245,
181,
128,
245,
103,
128,
64,
0,
80,
78,
65,
200,
132,
0,
90,
96,
216,
1,
43,
1,
80,
161,
22,
196,
64,
242,
110,
17,
172,
32,
57,
196,
192,
8,
7,
12,
9,
152,
150,
196,
155,
16,
28,
152,
108,
134,
42,
166,
1,
70,
17,
109,
229,
203,
196,
192,
146,
16,
33,
22,
18,
157,
114,
244,
105,
14,
23,
42,
162,
129,
244,
123,
0,
8,
164,
11,
144,
16,
44,
204,
57,
74,
1,
240,
22,
11,
10,
64,
12,
29,
234,
12,
68,
14,
69,
2,
0,
8,
4,
4,
8,
4,
4,
8,
2,
4,
0,
0,
0,
0,
0,
0,
0,
195,
138,
204,
132,
195,
138,
204,
140,
195,
170,
204,
132,
195,
170,
204,
140,
0,
0,
0,
0,
0,
0,
0,
0,
0,
48,
12,
255,
1,
48,
2,
48,
14,
255,
39,
32,
27,
255,
26,
255,
31,
255,
1,
255,
48,
254,
38,
32,
37,
32,
80,
254,
81,
254,
82,
254,
183,
0,
84,
254,
85,
254,
86,
254,
87,
254,
92,
255,
19,
32,
49,
254,
20,
32,
51,
254,
116,
37,
52,
254,
79,
254,
8,
255,
9,
255,
53,
254,
54,
254,
91,
255,
93,
255,
55,
254,
56,
254,
20,
48,
21,
48,
57,
254,
58,
254,
16,
48,
17,
48,
59,
254,
60,
254,
10,
48,
11,
48,
61,
254,
62,
254,
8,
48,
9,
48,
63,
254,
64,
254,
12,
48,
13,
48,
65,
254,
66,
254,
14,
48,
15,
48,
67,
254,
68,
254,
89,
254,
90,
254,
91,
254,
92,
254,
93,
254,
94,
254,
24,
32,
25,
32,
28,
32,
29,
32,
29,
48,
30,
48,
53,
32,
50,
32,
3,
255,
6,
255,
10,
255,
59,
32,
167,
0,
3,
48,
203,
37,
207,
37,
179,
37,
178,
37,
206,
37,
6,
38,
5,
38,
199,
37,
198,
37,
161,
37,
160,
37,
189,
37,
188,
37,
163,
50,
5,
33,
175,
0,
227,
255,
63,
255,
205,
2,
73,
254,
74,
254,
77,
254,
78,
254,
75,
254,
76,
254,
95,
254,
96,
254,
97,
254,
11,
255,
13,
255,
215,
0,
247,
0,
177,
0,
26,
34,
28,
255,
30,
255,
29,
255,
102,
34,
103,
34,
96,
34,
30,
34,
82,
34,
97,
34,
98,
254,
99,
254,
100,
254,
101,
254,
102,
254,
94,
255,
41,
34,
42,
34,
165,
34,
32,
34,
31,
34,
191,
34,
210,
51,
209,
51,
43,
34,
46,
34,
53,
34,
52,
34,
64,
38,
66,
38,
149,
34,
153,
34,
145,
33,
147,
33,
144,
33,
146,
33,
150,
33,
151,
33,
153,
33,
152,
33,
37,
34,
35,
34,
15,
255,
60,
255,
21,
34,
104,
254,
4,
255,
229,
255,
18,
48,
224,
255,
225,
255,
5,
255,
32,
255,
3,
33,
9,
33,
105,
254,
106,
254,
107,
254,
213,
51,
156,
51,
157,
51,
158,
51,
206,
51,
161,
51,
142,
51,
143,
51,
196,
51,
176,
0,
89,
81,
91,
81,
94,
81,
93,
81,
97,
81,
99,
81,
231,
85,
233,
116,
206,
124,
129,
37,
130,
37,
131,
37,
132,
37,
133,
37,
134,
37,
135,
37,
136,
37,
143,
37,
142,
37,
141,
37,
140,
37,
139,
37,
138,
37,
137,
37,
60,
37,
52,
37,
44,
37,
36,
37,
28,
37,
148,
37,
0,
37,
2,
37,
149,
37,
12,
37,
16,
37,
20,
37,
24,
37,
109,
37,
110,
37,
112,
37,
111,
37,
80,
37,
94,
37,
106,
37,
97,
37,
226,
37,
227,
37,
229,
37,
228,
37,
113,
37,
114,
37,
115,
37,
16,
255,
17,
255,
18,
255,
19,
255,
20,
255,
21,
255,
22,
255,
23,
255
],
'i8',
ALLOC_NONE,
Runtime.GLOBAL_BASE + 76572
);
/* memory initializer */ allocate(
[
24,
255,
25,
255,
96,
33,
97,
33,
98,
33,
99,
33,
100,
33,
101,
33,
102,
33,
103,
33,
104,
33,
105,
33,
33,
48,
34,
48,
35,
48,
36,
48,
37,
48,
38,
48,
39,
48,
40,
48,
41,
48,
65,
83,
68,
83,
69,
83,
33,
255,
34,
255,
35,
255,
36,
255,
37,
255,
38,
255,
39,
255,
40,
255,
41,
255,
42,
255,
43,
255,
44,
255,
45,
255,
46,
255,
47,
255,
48,
255,
49,
255,
50,
255,
51,
255,
52,
255,
53,
255,
54,
255,
55,
255,
56,
255,
57,
255,
58,
255,
65,
255,
66,
255,
67,
255,
68,
255,
69,
255,
70,
255,
71,
255,
72,
255,
73,
255,
74,
255,
75,
255,
76,
255,
77,
255,
78,
255,
79,
255,
80,
255,
81,
255,
82,
255,
83,
255,
84,
255,
85,
255,
86,
255,
87,
255,
88,
255,
89,
255,
90,
255,
145,
3,
146,
3,
147,
3,
148,
3,
149,
3,
150,
3,
151,
3,
152,
3,
153,
3,
154,
3,
155,
3,
156,
3,
157,
3,
158,
3,
159,
3,
160,
3,
161,
3,
163,
3,
164,
3,
165,
3,
166,
3,
167,
3,
168,
3,
169,
3,
177,
3,
178,
3,
179,
3,
180,
3,
181,
3,
182,
3,
183,
3,
184,
3,
185,
3,
186,
3,
187,
3,
188,
3,
189,
3,
190,
3,
191,
3,
192,
3,
193,
3,
195,
3,
196,
3,
197,
3,
198,
3,
199,
3,
200,
3,
201,
3,
5,
49,
6,
49,
7,
49,
8,
49,
9,
49,
10,
49,
11,
49,
12,
49,
13,
49,
14,
49,
15,
49,
16,
49,
17,
49,
18,
49,
19,
49,
20,
49,
21,
49,
22,
49,
23,
49,
24,
49,
25,
49,
26,
49,
27,
49,
28,
49,
29,
49,
30,
49,
31,
49,
32,
49,
33,
49,
34,
49,
35,
49,
36,
49,
37,
49,
38,
49,
39,
49,
40,
49,
41,
49,
217,
2,
201,
2,
202,
2,
199,
2,
203,
2,
0,
36,
1,
36,
2,
36,
3,
36,
4,
36,
5,
36,
6,
36,
7,
36,
8,
36,
9,
36,
10,
36,
11,
36,
12,
36,
13,
36,
14,
36,
15,
36,
16,
36,
17,
36,
18,
36,
19,
36,
20,
36,
21,
36,
22,
36,
23,
36,
24,
36,
25,
36,
26,
36,
27,
36,
28,
36,
29,
36,
30,
36,
31,
36,
33,
36,
172,
32,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
78,
89,
78,
1,
78,
3,
78,
67,
78,
93,
78,
134,
78,
140,
78,
186,
78,
63,
81,
101,
81,
107,
81,
224,
81,
0,
82,
1,
82,
155,
82,
21,
83,
65,
83,
92,
83,
200,
83,
9,
78,
11,
78,
8,
78,
10,
78,
43,
78,
56,
78,
225,
81,
69,
78,
72,
78,
95,
78,
94,
78,
142,
78,
161,
78,
64,
81,
3,
82,
250,
82,
67,
83,
201,
83,
227,
83,
31,
87,
235,
88,
21,
89,
39,
89,
115,
89,
80,
91,
81,
91,
83,
91,
248,
91,
15,
92,
34,
92,
56,
92,
113,
92,
221,
93,
229,
93,
241,
93,
242,
93,
243,
93,
254,
93,
114,
94,
254,
94,
11,
95,
19,
95,
77,
98,
17,
78,
16,
78,
13,
78,
45,
78,
48,
78,
57,
78,
75,
78,
57,
92,
136,
78,
145,
78,
149,
78,
146,
78,
148,
78,
162,
78,
193,
78,
192,
78,
195,
78,
198,
78,
199,
78,
205,
78,
202,
78,
203,
78,
196,
78,
67,
81,
65,
81,
103,
81,
109,
81,
110,
81,
108,
81,
151,
81,
246,
81,
6,
82,
7,
82,
8,
82,
251,
82,
254,
82,
255,
82,
22,
83,
57,
83,
72,
83,
71,
83,
69,
83,
94,
83,
132,
83,
203,
83,
202,
83,
205,
83,
236,
88,
41,
89,
43,
89,
42,
89,
45,
89,
84,
91,
17,
92,
36,
92,
58,
92,
111,
92,
244,
93,
123,
94,
255,
94,
20,
95,
21,
95,
195,
95,
8,
98,
54,
98,
75,
98,
78,
98,
47,
101,
135,
101,
151,
101,
164,
101,
185,
101,
229,
101,
240,
102,
8,
103,
40,
103,
32,
107,
98,
107,
121,
107,
203,
107,
212,
107,
219,
107,
15,
108,
52,
108,
107,
112,
42,
114,
54,
114,
59,
114,
71,
114,
89,
114,
91,
114,
172,
114,
139,
115,
25,
78,
22,
78,
21,
78,
20,
78,
24,
78,
59,
78,
77,
78,
79,
78,
78,
78,
229,
78,
216,
78,
212,
78,
213,
78,
214,
78,
215,
78,
227,
78,
228,
78,
217,
78,
222,
78,
69,
81,
68,
81,
137,
81,
138,
81,
172,
81,
249,
81,
250,
81,
248,
81,
10,
82,
160,
82,
159,
82,
5,
83,
6,
83,
23,
83,
29,
83,
223,
78,
74,
83,
73,
83,
97,
83,
96,
83,
111,
83,
110,
83,
187,
83,
239,
83,
228,
83,
243,
83,
236,
83,
238,
83,
233,
83,
232,
83,
252,
83,
248,
83,
245,
83,
235,
83,
230,
83,
234,
83,
242,
83,
241,
83,
240,
83,
229,
83,
237,
83,
251,
83,
219,
86,
218,
86,
22,
89,
46,
89,
49,
89,
116,
89,
118,
89,
85,
91,
131,
91,
60,
92,
232,
93,
231,
93,
230,
93,
2,
94,
3,
94,
115,
94,
124,
94,
1,
95,
24,
95,
23,
95,
197,
95,
10,
98,
83,
98,
84,
98,
82,
98,
81,
98,
165,
101,
230,
101,
46,
103,
44,
103,
42,
103,
43,
103,
45,
103,
99,
107,
205,
107,
17,
108,
16,
108,
56,
108,
65,
108,
64,
108,
62,
108,
175,
114,
132,
115,
137,
115,
220,
116,
230,
116,
24,
117,
31,
117,
40,
117,
41,
117,
48,
117,
49,
117,
50,
117,
51,
117,
139,
117,
125,
118,
174,
118,
191,
118,
238,
118,
219,
119,
226,
119,
243,
119,
58,
121,
190,
121,
116,
122,
203,
122,
30,
78,
31,
78,
82,
78,
83,
78,
105,
78,
153,
78,
164,
78,
166,
78,
165,
78,
255,
78,
9,
79,
25,
79,
10,
79,
21,
79,
13,
79,
16,
79,
17,
79,
15,
79,
242,
78,
246,
78,
251,
78,
240,
78,
243,
78,
253,
78,
1,
79,
11,
79,
73,
81,
71,
81,
70,
81,
72,
81,
104,
81,
113,
81,
141,
81,
176,
81,
23,
82,
17,
82,
18,
82,
14,
82,
22,
82,
163,
82,
8,
83,
33,
83,
32,
83,
112,
83,
113,
83,
9,
84,
15,
84,
12,
84,
10,
84,
16,
84,
1,
84,
11,
84,
4,
84,
17,
84,
13,
84,
8,
84,
3,
84,
14,
84,
6,
84,
18,
84,
224,
86,
222,
86,
221,
86,
51,
87,
48,
87,
40,
87,
45,
87,
44,
87,
47,
87,
41,
87,
25,
89,
26,
89,
55,
89,
56,
89,
132,
89,
120,
89,
131,
89,
125,
89,
121,
89,
130,
89,
129,
89,
87,
91,
88,
91,
135,
91,
136,
91,
133,
91,
137,
91,
250,
91,
22,
92,
121,
92,
222,
93,
6,
94,
118,
94,
116,
94,
15,
95,
27,
95,
217,
95,
214,
95,
14,
98,
12,
98,
13,
98,
16,
98,
99,
98,
91,
98,
88,
98,
54,
101,
233,
101,
232,
101,
236,
101,
237,
101,
242,
102,
243,
102,
9,
103,
61,
103,
52,
103,
49,
103,
53,
103,
33,
107,
100,
107,
123,
107,
22,
108,
93,
108,
87,
108,
89,
108,
95,
108,
96,
108,
80,
108,
85,
108,
97,
108,
91,
108,
77,
108,
78,
108,
112,
112,
95,
114,
93,
114,
126,
118,
249,
122,
115,
124,
248,
124,
54,
127,
138,
127,
189,
127,
1,
128,
3,
128,
12,
128,
18,
128,
51,
128,
127,
128,
137,
128,
139,
128,
140,
128,
227,
129,
234,
129,
243,
129,
252,
129,
12,
130,
27,
130,
31,
130,
110,
130,
114,
130,
126,
130,
107,
134,
64,
136,
76,
136,
99,
136,
127,
137,
33,
150,
50,
78,
168,
78,
77,
79,
79,
79,
71,
79,
87,
79,
94,
79,
52,
79,
91,
79,
85,
79,
48,
79,
80,
79,
81,
79,
61,
79,
58,
79,
56,
79,
67,
79,
84,
79,
60,
79,
70,
79,
99,
79,
92,
79,
96,
79,
47,
79,
78,
79,
54,
79,
89,
79,
93,
79,
72,
79,
90,
79,
76,
81,
75,
81,
77,
81,
117,
81,
182,
81,
183,
81,
37,
82,
36,
82,
41,
82,
42,
82,
40,
82,
171,
82,
169,
82,
170,
82,
172,
82,
35,
83,
115,
83,
117,
83,
29,
84,
45,
84,
30,
84,
62,
84,
38,
84,
78,
84,
39,
84,
70,
84,
67,
84,
51,
84,
72,
84,
66,
84,
27,
84,
41,
84,
74,
84,
57,
84,
59,
84,
56,
84,
46,
84,
53,
84,
54,
84,
32,
84,
60,
84,
64,
84,
49,
84,
43,
84,
31,
84,
44,
84,
234,
86,
240,
86,
228,
86,
235,
86,
74,
87,
81,
87,
64,
87,
77,
87,
71,
87,
78,
87,
62,
87,
80,
87,
79,
87,
59,
87,
239,
88,
62,
89,
157,
89,
146,
89,
168,
89,
158,
89,
163,
89,
153,
89,
150,
89,
141,
89,
164,
89,
147,
89,
138,
89,
165,
89,
93,
91,
92,
91,
90,
91,
91,
91,
140,
91,
139,
91,
143,
91,
44,
92,
64,
92,
65,
92,
63,
92,
62,
92,
144,
92,
145,
92,
148,
92,
140,
92,
235,
93,
12,
94,
143,
94,
135,
94,
138,
94,
247,
94,
4,
95,
31,
95,
100,
95,
98,
95,
119,
95,
121,
95,
216,
95,
204,
95,
215,
95,
205,
95,
241,
95,
235,
95,
248,
95,
234,
95,
18,
98,
17,
98,
132,
98,
151,
98,
150,
98,
128,
98,
118,
98,
137,
98,
109,
98,
138,
98,
124,
98,
126,
98,
121,
98,
115,
98,
146,
98,
111,
98,
152,
98,
110,
98,
149,
98,
147,
98,
145,
98,
134,
98,
57,
101,
59,
101,
56,
101,
241,
101,
244,
102,
95,
103,
78,
103,
79,
103,
80,
103,
81,
103,
92,
103,
86,
103,
94,
103,
73,
103,
70,
103,
96,
103,
83,
103,
87,
103,
101,
107,
207,
107,
66,
108,
94,
108,
153,
108,
129,
108,
136,
108,
137,
108,
133,
108,
155,
108,
106,
108,
122,
108,
144,
108,
112,
108,
140,
108,
104,
108,
150,
108,
146,
108,
125,
108,
131,
108,
114,
108,
126,
108,
116,
108,
134,
108,
118,
108,
141,
108,
148,
108,
152,
108,
130,
108,
118,
112,
124,
112,
125,
112,
120,
112,
98,
114,
97,
114,
96,
114,
196,
114,
194,
114,
150,
115,
44,
117,
43,
117,
55,
117,
56,
117,
130,
118,
239,
118,
227,
119,
193,
121,
192,
121,
191,
121,
118,
122,
251,
124,
85,
127,
150,
128,
147,
128,
157,
128,
152,
128,
155,
128,
154,
128,
178,
128,
111,
130,
146,
130,
139,
130,
141,
130,
139,
137,
210,
137,
0,
138,
55,
140,
70,
140,
85,
140,
157,
140,
100,
141,
112,
141,
179,
141,
171,
142,
202,
142,
155,
143,
176,
143,
194,
143,
198,
143,
197,
143,
196,
143,
225,
93,
145,
144,
162,
144,
170,
144,
166,
144,
163,
144,
73,
145,
198,
145,
204,
145,
50,
150,
46,
150,
49,
150,
42,
150,
44,
150,
38,
78,
86,
78,
115,
78,
139,
78,
155,
78,
158,
78,
171,
78,
172,
78,
111,
79,
157,
79,
141,
79,
115,
79,
127,
79,
108,
79,
155,
79,
139,
79,
134,
79,
131,
79,
112,
79,
117,
79,
136,
79,
105,
79,
123,
79,
150,
79,
126,
79,
143,
79,
145,
79,
122,
79,
84,
81,
82,
81,
85,
81,
105,
81,
119,
81,
118,
81,
120,
81,
189,
81,
253,
81,
59,
82,
56,
82,
55,
82,
58,
82,
48,
82,
46,
82,
54,
82,
65,
82,
190,
82,
187,
82,
82,
83,
84,
83,
83,
83,
81,
83,
102,
83,
119,
83,
120,
83,
121,
83,
214,
83,
212,
83,
215,
83,
115,
84,
117,
84,
150,
84,
120,
84,
149,
84,
128,
84,
123,
84,
119,
84,
132,
84,
146,
84,
134,
84,
124,
84,
144,
84,
113,
84,
118,
84,
140,
84,
154,
84,
98,
84,
104,
84,
139,
84,
125,
84,
142,
84,
250,
86,
131,
87,
119,
87,
106,
87,
105,
87,
97,
87,
102,
87,
100,
87,
124,
87,
28,
89,
73,
89,
71,
89,
72,
89,
68,
89,
84,
89,
190,
89,
187,
89,
212,
89,
185,
89,
174,
89,
209,
89,
198,
89,
208,
89,
205,
89,
203,
89,
211,
89,
202,
89,
175,
89,
179,
89,
210,
89,
197,
89,
95,
91,
100,
91,
99,
91,
151,
91,
154,
91,
152,
91,
156,
91,
153,
91,
155,
91,
26,
92,
72,
92,
69,
92,
70,
92,
183,
92,
161,
92,
184,
92,
169,
92,
171,
92,
177,
92,
179,
92,
24,
94,
26,
94,
22,
94,
21,
94,
27,
94,
17,
94,
120,
94,
154,
94,
151,
94,
156,
94,
149,
94,
150,
94,
246,
94,
38,
95,
39,
95,
41,
95,
128,
95,
129,
95,
127,
95,
124,
95,
221,
95,
224,
95,
253,
95,
245,
95,
255,
95,
15,
96,
20,
96,
47,
96,
53,
96,
22,
96,
42,
96,
21,
96,
33,
96,
39,
96,
41,
96,
43,
96,
27,
96,
22,
98,
21,
98,
63,
98,
62,
98,
64,
98,
127,
98,
201,
98,
204,
98,
196,
98,
191,
98,
194,
98,
185,
98,
210,
98,
219,
98,
171,
98,
211,
98,
212,
98,
203,
98,
200,
98,
168,
98,
189,
98,
188,
98,
208,
98,
217,
98,
199,
98,
205,
98,
181,
98,
218,
98,
177,
98,
216,
98,
214,
98,
215,
98,
198,
98,
172,
98,
206,
98,
62,
101,
167,
101,
188,
101,
250,
101,
20,
102,
19,
102,
12,
102,
6,
102,
2,
102,
14,
102,
0,
102,
15,
102,
21,
102,
10,
102,
7,
102,
13,
103,
11,
103,
109,
103,
139,
103,
149,
103,
113,
103,
156,
103,
115,
103,
119,
103,
135,
103,
157,
103,
151,
103,
111,
103,
112,
103,
127,
103,
137,
103,
126,
103,
144,
103,
117,
103,
154,
103,
147,
103,
124,
103,
106,
103,
114,
103,
35,
107,
102,
107,
103,
107,
127,
107,
19,
108,
27,
108,
227,
108,
232,
108,
243,
108,
177,
108,
204,
108,
229,
108,
179,
108,
189,
108,
190,
108,
188,
108,
226,
108,
171,
108,
213,
108,
211,
108,
184,
108,
196,
108,
185,
108,
193,
108,
174,
108,
215,
108,
197,
108,
241,
108,
191,
108,
187,
108,
225,
108,
219,
108,
202,
108,
172,
108,
239,
108,
220,
108,
214,
108,
224,
108,
149,
112,
142,
112,
146,
112,
138,
112,
153,
112,
44,
114,
45,
114,
56,
114,
72,
114,
103,
114,
105,
114,
192,
114,
206,
114,
217,
114,
215,
114,
208,
114,
169,
115,
168,
115,
159,
115,
171,
115,
165,
115,
61,
117,
157,
117,
153,
117,
154,
117,
132,
118,
194,
118,
242,
118,
244,
118,
229,
119,
253,
119,
62,
121,
64,
121,
65,
121,
201,
121,
200,
121,
122,
122,
121,
122,
250,
122,
254,
124,
84,
127,
140,
127,
139,
127,
5,
128,
186,
128,
165,
128,
162,
128,
177,
128,
161,
128,
171,
128,
169,
128,
180,
128,
170,
128,
175,
128,
229,
129,
254,
129,
13,
130,
179,
130,
157,
130,
153,
130,
173,
130,
189,
130,
159,
130,
185,
130,
177,
130,
172,
130,
165,
130,
175,
130,
184,
130,
163,
130,
176,
130,
190,
130,
183,
130,
78,
134,
113,
134,
29,
82,
104,
136,
203,
142,
206,
143,
212,
143,
209,
143,
181,
144,
184,
144,
177,
144,
182,
144,
199,
145,
209,
145,
119,
149,
128,
149,
28,
150,
64,
150,
63,
150,
59,
150,
68,
150,
66,
150,
185,
150,
232,
150,
82,
151,
94,
151,
159,
78,
173,
78,
174,
78,
225,
79,
181,
79,
175,
79,
191,
79,
224,
79,
209,
79,
207,
79,
221,
79,
195,
79,
182,
79,
216,
79,
223,
79,
202,
79,
215,
79,
174,
79,
208,
79,
196,
79,
194,
79,
218,
79,
206,
79,
222,
79,
183,
79,
87,
81,
146,
81,
145,
81,
160,
81,
78,
82,
67,
82,
74,
82,
77,
82,
76,
82,
75,
82,
71,
82,
199,
82,
201,
82,
195,
82,
193,
82,
13,
83,
87,
83,
123,
83,
154,
83,
219,
83,
172,
84,
192,
84,
168,
84,
206,
84,
201,
84,
184,
84,
166,
84,
179,
84,
199,
84,
194,
84,
189,
84,
170,
84,
193,
84,
196,
84,
200,
84,
175,
84,
171,
84,
177,
84,
187,
84,
169,
84,
167,
84,
191,
84,
255,
86,
130,
87,
139,
87,
160,
87,
163,
87,
162,
87,
206,
87,
174,
87,
147,
87,
85,
89,
81,
89,
79,
89,
78,
89,
80,
89,
220,
89,
216,
89,
255,
89,
227,
89,
232,
89,
3,
90,
229,
89,
234,
89,
218,
89,
230,
89,
1,
90,
251,
89,
105,
91,
163,
91,
166,
91,
164,
91,
162,
91,
165,
91,
1,
92,
78,
92,
79,
92,
77,
92,
75,
92,
217,
92,
210,
92,
247,
93,
29,
94,
37,
94,
31,
94,
125,
94,
160,
94,
166,
94,
250,
94,
8,
95,
45,
95,
101,
95,
136,
95,
133,
95,
138,
95,
139,
95,
135,
95,
140,
95,
137,
95,
18,
96,
29,
96,
32,
96,
37,
96,
14,
96,
40,
96,
77,
96,
112,
96,
104,
96,
98,
96,
70,
96,
67,
96,
108,
96,
107,
96,
106,
96,
100,
96,
65,
98,
220,
98,
22,
99,
9,
99,
252,
98,
237,
98,
1,
99,
238,
98,
253,
98,
7,
99,
241,
98,
247,
98,
239,
98,
236,
98,
254,
98,
244,
98,
17,
99,
2,
99,
63,
101,
69,
101,
171,
101,
189,
101,
226,
101,
37,
102,
45,
102,
32,
102,
39,
102,
47,
102,
31,
102,
40,
102,
49,
102,
36,
102,
247,
102,
255,
103,
211,
103,
241,
103,
212,
103,
208,
103,
236,
103,
182,
103,
175,
103,
245,
103,
233,
103,
239,
103,
196,
103,
209,
103,
180,
103,
218,
103,
229,
103,
184,
103,
207,
103,
222,
103,
243,
103,
176,
103,
217,
103,
226,
103,
221,
103,
210,
103,
106,
107,
131,
107,
134,
107,
181,
107,
210,
107,
215,
107,
31,
108,
201,
108,
11,
109,
50,
109,
42,
109,
65,
109,
37,
109,
12,
109,
49,
109,
30,
109,
23,
109,
59,
109,
61,
109,
62,
109,
54,
109,
27,
109,
245,
108,
57,
109,
39,
109,
56,
109,
41,
109,
46,
109,
53,
109,
14,
109,
43,
109,
171,
112,
186,
112,
179,
112,
172,
112,
175,
112,
173,
112,
184,
112,
174,
112,
164,
112,
48,
114,
114,
114,
111,
114,
116,
114,
233,
114,
224,
114,
225,
114,
183,
115,
202,
115,
187,
115,
178,
115,
205,
115,
192,
115,
179,
115,
26,
117,
45,
117,
79,
117,
76,
117,
78,
117,
75,
117,
171,
117,
164,
117,
165,
117,
162,
117,
163,
117,
120,
118,
134,
118,
135,
118,
136,
118,
200,
118,
198,
118,
195,
118,
197,
118,
1,
119,
249,
118,
248,
118,
9,
119,
11,
119,
254,
118,
252,
118,
7,
119,
220,
119,
2,
120,
20,
120,
12,
120,
13,
120,
70,
121,
73,
121,
72,
121,
71,
121,
185,
121,
186,
121,
209,
121,
210,
121,
203,
121,
127,
122,
129,
122,
255,
122,
253,
122,
125,
124,
2,
125,
5,
125,
0,
125,
9,
125,
7,
125,
4,
125,
6,
125,
56,
127,
142,
127,
191,
127,
4,
128,
16,
128,
13,
128,
17,
128,
54,
128,
214,
128,
229,
128,
218,
128,
195,
128,
196,
128,
204,
128,
225,
128,
219,
128,
206,
128,
222,
128,
228,
128,
221,
128,
244,
129,
34,
130,
231,
130,
3,
131,
5,
131,
227,
130,
219,
130,
230,
130,
4,
131,
229,
130,
2,
131,
9,
131,
210,
130,
215,
130,
241,
130,
1,
131,
220,
130,
212,
130,
209,
130,
222,
130,
211,
130,
223,
130,
239,
130,
6,
131,
80,
134,
121,
134,
123,
134,
122,
134,
77,
136,
107,
136,
129,
137,
212,
137,
8,
138,
2,
138,
3,
138,
158,
140,
160,
140,
116,
141,
115,
141,
180,
141,
205,
142,
204,
142,
240,
143,
230,
143,
226,
143,
234,
143,
229,
143,
237,
143,
235,
143,
228,
143,
232,
143,
202,
144,
206,
144,
193,
144,
195,
144,
75,
145,
74,
145,
205,
145,
130,
149,
80,
150,
75,
150,
76,
150,
77,
150,
98,
151,
105,
151,
203,
151,
237,
151,
243,
151,
1,
152,
168,
152,
219,
152,
223,
152,
150,
153,
153,
153,
88,
78,
179,
78,
12,
80,
13,
80,
35,
80,
239,
79,
38,
80,
37,
80,
248,
79,
41,
80,
22,
80,
6,
80,
60,
80,
31,
80,
26,
80,
18,
80,
17,
80,
250,
79,
0,
80,
20,
80,
40,
80,
241,
79,
33,
80,
11,
80,
25,
80,
24,
80,
243,
79,
238,
79,
45,
80,
42,
80,
254,
79,
43,
80,
9,
80,
124,
81,
164,
81,
165,
81,
162,
81,
205,
81,
204,
81,
198,
81,
203,
81,
86,
82,
92,
82,
84,
82,
91,
82,
93,
82,
42,
83,
127,
83,
159,
83,
157,
83,
223,
83,
232,
84,
16,
85,
1,
85,
55,
85,
252,
84,
229,
84,
242,
84,
6,
85,
250,
84,
20,
85,
233,
84,
237,
84,
225,
84,
9,
85,
238,
84,
234,
84,
230,
84,
39,
85,
7,
85,
253,
84,
15,
85,
3,
87,
4,
87,
194,
87,
212,
87,
203,
87,
195,
87,
9,
88,
15,
89,
87,
89,
88,
89,
90,
89,
17,
90,
24,
90,
28,
90,
31,
90,
27,
90,
19,
90,
236,
89,
32,
90,
35,
90,
41,
90,
37,
90,
12,
90,
9,
90,
107,
91,
88,
92,
176,
91,
179,
91,
182,
91,
180,
91,
174,
91,
181,
91,
185,
91,
184,
91,
4,
92,
81,
92,
85,
92,
80,
92,
237,
92,
253,
92,
251,
92,
234,
92,
232,
92,
240,
92,
246,
92,
1,
93,
244,
92,
238,
93,
45,
94,
43,
94,
171,
94,
173,
94,
167,
94,
49,
95,
146,
95,
145,
95,
144,
95,
89,
96,
99,
96,
101,
96,
80,
96,
85,
96,
109,
96,
105,
96,
111,
96,
132,
96,
159,
96,
154,
96,
141,
96,
148,
96,
140,
96,
133,
96,
150,
96,
71,
98,
243,
98,
8,
99,
255,
98,
78,
99,
62,
99,
47,
99,
85,
99,
66,
99,
70,
99,
79,
99,
73,
99,
58,
99,
80,
99,
61,
99,
42,
99,
43,
99,
40,
99,
77,
99,
76,
99,
72,
101,
73,
101,
153,
101,
193,
101,
197,
101,
66,
102,
73,
102,
79,
102,
67,
102,
82,
102,
76,
102,
69,
102,
65,
102,
248,
102,
20,
103,
21,
103,
23,
103,
33,
104,
56,
104,
72,
104,
70,
104,
83,
104,
57,
104,
66,
104,
84,
104,
41,
104,
179,
104,
23,
104,
76,
104,
81,
104,
61,
104,
244,
103,
80,
104,
64,
104,
60,
104,
67,
104,
42,
104,
69,
104,
19,
104,
24,
104,
65,
104,
138,
107,
137,
107,
183,
107,
35,
108,
39,
108,
40,
108,
38,
108,
36,
108,
240,
108,
106,
109,
149,
109,
136,
109,
135,
109,
102,
109,
120,
109,
119,
109,
89,
109,
147,
109,
108,
109,
137,
109,
110,
109,
90,
109,
116,
109,
105,
109,
140,
109,
138,
109,
121,
109,
133,
109,
101,
109,
148,
109,
202,
112,
216,
112,
228,
112,
217,
112,
200,
112,
207,
112,
57,
114,
121,
114,
252,
114,
249,
114,
253,
114,
248,
114,
247,
114,
134,
115,
237,
115,
9,
116,
238,
115,
224,
115,
234,
115,
222,
115,
84,
117,
93,
117,
92,
117,
90,
117,
89,
117,
190,
117,
197,
117,
199,
117,
178,
117,
179,
117,
189,
117,
188,
117,
185,
117,
194,
117,
184,
117,
139,
118,
176,
118,
202,
118,
205,
118,
206,
118,
41,
119,
31,
119,
32,
119,
40,
119,
233,
119,
48,
120,
39,
120,
56,
120,
29,
120,
52,
120,
55,
120,
37,
120,
45,
120,
32,
120,
31,
120,
50,
120,
85,
121,
80,
121,
96,
121,
95,
121,
86,
121,
94,
121,
93,
121,
87,
121,
90,
121,
228,
121,
227,
121,
231,
121,
223,
121,
230,
121,
233,
121,
216,
121,
132,
122,
136,
122,
217,
122,
6,
123,
17,
123,
137,
124,
33,
125,
23,
125,
11,
125,
10,
125,
32,
125,
34,
125,
20,
125,
16,
125,
21,
125,
26,
125,
28,
125,
13,
125,
25,
125,
27,
125,
58,
127,
95,
127,
148,
127,
197,
127,
193,
127,
6,
128,
24,
128,
21,
128,
25,
128,
23,
128,
61,
128,
63,
128,
241,
128,
2,
129,
240,
128,
5,
129,
237,
128,
244,
128,
6,
129,
248,
128,
243,
128,
8,
129,
253,
128,
10,
129,
252,
128,
239,
128,
237,
129,
236,
129,
0,
130,
16,
130,
42,
130,
43,
130,
40,
130,
44,
130,
187,
130,
43,
131,
82,
131,
84,
131,
74,
131,
56,
131,
80,
131,
73,
131,
53,
131,
52,
131,
79,
131,
50,
131,
57,
131,
54,
131,
23,
131,
64,
131,
49,
131,
40,
131,
67,
131,
84,
134,
138,
134,
170,
134,
147,
134,
164,
134,
169,
134,
140,
134,
163,
134,
156,
134,
112,
136,
119,
136,
129,
136,
130,
136,
125,
136,
121,
136,
24,
138,
16,
138,
14,
138,
12,
138,
21,
138,
10,
138,
23,
138,
19,
138,
22,
138,
15,
138,
17,
138,
72,
140,
122,
140,
121,
140,
161,
140,
162,
140,
119,
141,
172,
142,
210,
142,
212,
142,
207,
142,
177,
143,
1,
144,
6,
144,
247,
143,
0,
144,
250,
143,
244,
143,
3,
144,
253,
143,
5,
144,
248,
143,
149,
144,
225,
144,
221,
144,
226,
144,
82,
145,
77,
145,
76,
145,
216,
145,
221,
145,
215,
145,
220,
145,
217,
145,
131,
149,
98,
150,
99,
150,
97,
150,
91,
150,
93,
150,
100,
150,
88,
150,
94,
150,
187,
150,
226,
152,
172,
153,
168,
154,
216,
154,
37,
155,
50,
155,
60,
155,
126,
78,
122,
80,
125,
80,
92,
80,
71,
80,
67,
80,
76,
80,
90,
80,
73,
80,
101,
80,
118,
80,
78,
80,
85,
80,
117,
80,
116,
80,
119,
80,
79,
80,
15,
80,
111,
80,
109,
80,
92,
81,
149,
81,
240,
81,
106,
82,
111,
82,
210,
82,
217,
82,
216,
82,
213,
82,
16,
83,
15,
83,
25,
83,
63,
83,
64,
83,
62,
83,
195,
83,
252,
102,
70,
85,
106,
85,
102,
85,
68,
85,
94,
85,
97,
85,
67,
85,
74,
85,
49,
85,
86,
85,
79,
85,
85,
85,
47,
85,
100,
85,
56,
85,
46,
85,
92,
85,
44,
85,
99,
85,
51,
85,
65,
85,
87,
85,
8,
87,
11,
87,
9,
87,
223,
87,
5,
88,
10,
88,
6,
88,
224,
87,
228,
87,
250,
87,
2,
88,
53,
88,
247,
87,
249,
87,
32,
89,
98,
89,
54,
90,
65,
90,
73,
90,
102,
90,
106,
90,
64,
90,
60,
90,
98,
90,
90,
90,
70,
90,
74,
90,
112,
91,
199,
91,
197,
91,
196,
91,
194,
91,
191,
91,
198,
91,
9,
92,
8,
92,
7,
92,
96,
92,
92,
92,
93,
92,
7,
93,
6,
93,
14,
93,
27,
93,
22,
93,
34,
93,
17,
93,
41,
93,
20,
93,
25,
93,
36,
93,
39,
93,
23,
93,
226,
93,
56,
94,
54,
94,
51,
94,
55,
94,
183,
94,
184,
94,
182,
94,
181,
94,
190,
94,
53,
95,
55,
95,
87,
95,
108,
95,
105,
95,
107,
95,
151,
95,
153,
95,
158,
95,
152,
95,
161,
95,
160,
95,
156,
95,
127,
96,
163,
96,
137,
96,
160,
96,
168,
96,
203,
96,
180,
96,
230,
96,
189,
96,
197,
96,
187,
96,
181,
96,
220,
96,
188,
96,
216,
96,
213,
96,
198,
96,
223,
96,
184,
96,
218,
96,
199,
96,
26,
98,
27,
98,
72,
98,
160,
99,
167,
99,
114,
99,
150,
99,
162,
99,
165,
99,
119,
99,
103,
99,
152,
99,
170,
99,
113,
99,
169,
99,
137,
99,
131,
99,
155,
99,
107,
99,
168,
99,
132,
99,
136,
99,
153,
99,
161,
99,
172,
99,
146,
99,
143,
99,
128,
99,
123,
99,
105,
99,
104,
99,
122,
99,
93,
101,
86,
101,
81,
101,
89,
101,
87,
101,
95,
85,
79,
101,
88,
101,
85,
101,
84,
101,
156,
101,
155,
101,
172,
101,
207,
101,
203,
101,
204,
101,
206,
101,
93,
102,
90,
102,
100,
102,
104,
102,
102,
102,
94,
102,
249,
102,
215,
82,
27,
103,
129,
104,
175,
104,
162,
104,
147,
104,
181,
104,
127,
104,
118,
104,
177,
104,
167,
104,
151,
104,
176,
104,
131,
104,
196,
104,
173,
104,
134,
104,
133,
104,
148,
104,
157,
104,
168,
104,
159,
104,
161,
104,
130,
104,
50,
107,
186,
107,
235,
107,
236,
107,
43,
108,
142,
109,
188,
109,
243,
109,
217,
109,
178,
109,
225,
109,
204,
109,
228,
109,
251,
109,
250,
109,
5,
110,
199,
109,
203,
109,
175,
109,
209,
109,
174,
109,
222,
109,
249,
109,
184,
109,
247,
109,
245,
109,
197,
109,
210,
109,
26,
110,
181,
109,
218,
109,
235,
109,
216,
109,
234,
109,
241,
109,
238,
109,
232,
109,
198,
109,
196,
109,
170,
109,
236,
109,
191,
109,
230,
109,
249,
112,
9,
113,
10,
113,
253,
112,
239,
112,
61,
114,
125,
114,
129,
114,
28,
115,
27,
115,
22,
115,
19,
115,
25,
115,
135,
115,
5,
116,
10,
116,
3,
116,
6,
116,
254,
115,
13,
116,
224,
116,
246,
116,
247,
116,
28,
117,
34,
117,
101,
117,
102,
117,
98,
117,
112,
117,
143,
117,
212,
117,
213,
117,
181,
117,
202,
117,
205,
117,
142,
118,
212,
118,
210,
118,
219,
118,
55,
119,
62,
119,
60,
119,
54,
119,
56,
119,
58,
119,
107,
120,
67,
120,
78,
120,
101,
121,
104,
121,
109,
121,
251,
121,
146,
122,
149,
122,
32,
123,
40,
123,
27,
123,
44,
123,
38,
123,
25,
123,
30,
123,
46,
123,
146,
124,
151,
124,
149,
124,
70,
125,
67,
125,
113,
125,
46,
125,
57,
125,
60,
125,
64,
125,
48,
125,
51,
125,
68,
125,
47,
125,
66,
125,
50,
125,
49,
125,
61,
127,
158,
127,
154,
127,
204,
127,
206,
127,
210,
127,
28,
128,
74,
128,
70,
128,
47,
129,
22,
129,
35,
129,
43,
129,
41,
129,
48,
129,
36,
129,
2,
130,
53,
130,
55,
130,
54,
130,
57,
130,
142,
131,
158,
131,
152,
131,
120,
131,
162,
131,
150,
131,
189,
131,
171,
131,
146,
131,
138,
131,
147,
131,
137,
131,
160,
131,
119,
131,
123,
131,
124,
131,
134,
131,
167,
131,
85,
134,
106,
95,
199,
134,
192,
134,
182,
134,
196,
134,
181,
134,
198,
134,
203,
134,
177,
134,
175,
134,
201,
134,
83,
136,
158,
136,
136,
136,
171,
136,
146,
136,
150,
136,
141,
136,
139,
136,
147,
137,
143,
137,
42,
138,
29,
138,
35,
138,
37,
138,
49,
138,
45,
138,
31,
138,
27,
138,
34,
138,
73,
140,
90,
140,
169,
140,
172,
140,
171,
140,
168,
140,
170,
140,
167,
140,
103,
141,
102,
141,
190,
141,
186,
141,
219,
142,
223,
142,
25,
144,
13,
144,
26,
144,
23,
144,
35,
144,
31,
144,
29,
144,
16,
144,
21,
144,
30,
144,
32,
144,
15,
144,
34,
144,
22,
144,
27,
144,
20,
144,
232,
144,
237,
144,
253,
144,
87,
145,
206,
145,
245,
145,
230,
145,
227,
145,
231,
145,
237,
145,
233,
145,
137,
149,
106,
150,
117,
150,
115,
150,
120,
150,
112,
150,
116,
150,
118,
150,
119,
150,
108,
150,
192,
150,
234,
150,
233,
150,
224,
122,
223,
122,
2,
152,
3,
152,
90,
155,
229,
156,
117,
158,
127,
158,
165,
158,
187,
158,
162,
80,
141,
80,
133,
80,
153,
80,
145,
80,
128,
80,
150,
80,
152,
80,
154,
80,
0,
103,
241,
81,
114,
82,
116,
82,
117,
82,
105,
82,
222,
82,
221,
82,
219,
82,
90,
83,
165,
83,
123,
85,
128,
85,
167,
85,
124,
85,
138,
85,
157,
85,
152,
85,
130,
85,
156,
85,
170,
85,
148,
85,
135,
85,
139,
85,
131,
85,
179,
85,
174,
85,
159,
85,
62,
85,
178,
85,
154,
85,
187,
85,
172,
85,
177,
85,
126,
85,
137,
85,
171,
85,
153,
85,
13,
87,
47,
88,
42,
88,
52,
88,
36,
88,
48,
88,
49,
88,
33,
88,
29,
88,
32,
88,
249,
88,
250,
88,
96,
89,
119,
90,
154,
90,
127,
90,
146,
90,
155,
90,
167,
90,
115,
91,
113,
91,
210,
91,
204,
91,
211,
91,
208,
91,
10,
92,
11,
92,
49,
92,
76,
93,
80,
93,
52,
93,
71,
93,
253,
93,
69,
94,
61,
94,
64,
94,
67,
94,
126,
94,
202,
94,
193,
94,
194,
94,
196,
94,
60,
95,
109,
95,
169,
95,
170,
95,
168,
95,
209,
96,
225,
96,
178,
96,
182,
96,
224,
96,
28,
97,
35,
97,
250,
96,
21,
97,
240,
96,
251,
96,
244,
96,
104,
97,
241,
96,
14,
97,
246,
96,
9,
97,
0,
97,
18,
97,
31,
98,
73,
98,
163,
99,
140,
99,
207,
99,
192,
99,
233,
99,
201,
99,
198,
99,
205,
99,
210,
99,
227,
99,
208,
99,
225,
99,
214,
99,
237,
99,
238,
99,
118,
99,
244,
99,
234,
99,
219,
99,
82,
100,
218,
99,
249,
99,
94,
101,
102,
101,
98,
101,
99,
101,
145,
101,
144,
101,
175,
101,
110,
102,
112,
102,
116,
102,
118,
102,
111,
102,
145,
102,
122,
102,
126,
102,
119,
102,
254,
102,
255,
102,
31,
103,
29,
103,
250,
104,
213,
104,
224,
104,
216,
104,
215,
104,
5,
105,
223,
104,
245,
104,
238,
104,
231,
104,
249,
104,
210,
104,
242,
104,
227,
104,
203,
104,
205,
104,
13,
105,
18,
105,
14,
105,
201,
104,
218,
104,
110,
105,
251,
104,
62,
107,
58,
107,
61,
107,
152,
107,
150,
107,
188,
107,
239,
107,
46,
108,
47,
108,
44,
108,
47,
110,
56,
110,
84,
110,
33,
110,
50,
110,
103,
110,
74,
110,
32,
110,
37,
110,
35,
110,
27,
110,
91,
110,
88,
110,
36,
110,
86,
110,
110,
110,
45,
110,
38,
110,
111,
110,
52,
110,
77,
110,
58,
110,
44,
110,
67,
110,
29,
110,
62,
110,
203,
110,
137,
110,
25,
110,
78,
110,
99,
110,
68,
110,
114,
110,
105,
110,
95,
110,
25,
113,
26,
113,
38,
113,
48,
113,
33,
113,
54,
113,
110,
113,
28,
113,
76,
114,
132,
114,
128,
114,
54,
115,
37,
115,
52,
115,
41,
115,
58,
116,
42,
116,
51,
116,
34,
116,
37,
116,
53,
116,
54,
116,
52,
116,
47,
116,
27,
116,
38,
116,
40,
116,
37,
117,
38,
117,
107,
117,
106,
117,
226,
117,
219,
117,
227,
117,
217,
117,
216,
117,
222,
117,
224,
117,
123,
118,
124,
118,
150,
118,
147,
118,
180,
118,
220,
118,
79,
119,
237,
119,
93,
120,
108,
120,
111,
120,
13,
122,
8,
122,
11,
122,
5,
122,
0,
122,
152,
122,
151,
122,
150,
122,
229,
122,
227,
122,
73,
123,
86,
123,
70,
123,
80,
123,
82,
123,
84,
123,
77,
123,
75,
123,
79,
123,
81,
123,
159,
124,
165,
124,
94,
125,
80,
125,
104,
125,
85,
125,
43,
125,
110,
125,
114,
125,
97,
125,
102,
125,
98,
125,
112,
125,
115,
125,
132,
85,
212,
127,
213,
127,
11,
128,
82,
128,
133,
128,
85,
129,
84,
129,
75,
129,
81,
129,
78,
129,
57,
129,
70,
129,
62,
129,
76,
129,
83,
129,
116,
129,
18,
130,
28,
130,
233,
131,
3,
132,
248,
131,
13,
132,
224,
131,
197,
131,
11,
132,
193,
131,
239,
131,
241,
131,
244,
131,
87,
132,
10,
132,
240,
131,
12,
132,
204,
131,
253,
131,
242,
131,
202,
131,
56,
132,
14,
132,
4,
132,
220,
131,
7,
132,
212,
131,
223,
131,
91,
134,
223,
134,
217,
134,
237,
134,
212,
134,
219,
134,
228,
134,
208,
134,
222,
134,
87,
136,
193,
136,
194,
136,
177,
136,
131,
137,
150,
137,
59,
138,
96,
138,
85,
138,
94,
138,
60,
138,
65,
138,
84,
138,
91,
138,
80,
138,
70,
138,
52,
138,
58,
138,
54,
138,
86,
138,
97,
140,
130,
140,
175,
140,
188,
140,
179,
140,
189,
140,
193,
140,
187,
140,
192,
140,
180,
140,
183,
140,
182,
140,
191,
140,
184,
140,
138,
141,
133,
141,
129,
141,
206,
141,
221,
141,
203,
141,
218,
141,
209,
141,
204,
141,
219,
141,
198,
141,
251,
142,
248,
142,
252,
142,
156,
143,
46,
144,
53,
144,
49,
144,
56,
144,
50,
144,
54,
144,
2,
145,
245,
144,
9,
145,
254,
144,
99,
145,
101,
145,
207,
145,
20,
146,
21,
146,
35,
146,
9,
146,
30,
146,
13,
146,
16,
146,
7,
146,
17,
146,
148,
149,
143,
149,
139,
149,
145,
149,
147,
149,
146,
149,
142,
149,
138,
150,
142,
150,
139,
150,
125,
150,
133,
150,
134,
150,
141,
150,
114,
150,
132,
150,
193,
150,
197,
150,
196,
150,
198,
150,
199,
150,
239,
150,
242,
150,
204,
151,
5,
152,
6,
152,
8,
152,
231,
152,
234,
152,
239,
152,
233,
152,
242,
152,
237,
152,
174,
153,
173,
153,
195,
158,
205,
158,
209,
158,
130,
78,
173,
80,
181,
80,
178,
80,
179,
80,
197,
80,
190,
80,
172,
80,
183,
80,
187,
80,
175,
80,
199,
80,
127,
82,
119,
82,
125,
82,
223,
82,
230,
82,
228,
82,
226,
82,
227,
82,
47,
83,
223,
85,
232,
85,
211,
85,
230,
85,
206,
85,
220,
85,
199,
85,
209,
85,
227,
85,
228,
85,
239,
85,
218,
85,
225,
85,
197,
85,
198,
85,
229,
85,
201,
85,
18,
87,
19,
87,
94,
88,
81,
88,
88,
88,
87,
88,
90,
88,
84,
88,
107,
88,
76,
88,
109,
88,
74,
88,
98,
88,
82,
88,
75,
88,
103,
89,
193,
90,
201,
90,
204,
90,
190,
90,
189,
90,
188,
90,
179,
90,
194,
90,
178,
90,
105,
93,
111,
93,
76,
94,
121,
94,
201,
94,
200,
94,
18,
95,
89,
95,
172,
95,
174,
95,
26,
97,
15,
97,
72,
97,
31,
97,
243,
96,
27,
97,
249,
96,
1,
97,
8,
97,
78,
97,
76,
97,
68,
97,
77,
97,
62,
97,
52,
97,
39,
97,
13,
97,
6,
97,
55,
97,
33,
98,
34,
98,
19,
100,
62,
100,
30,
100,
42,
100,
45,
100,
61,
100,
44,
100,
15,
100,
28,
100,
20,
100,
13,
100,
54,
100,
22,
100,
23,
100,
6,
100,
108,
101,
159,
101,
176,
101,
151,
102,
137,
102,
135,
102,
136,
102,
150,
102,
132,
102,
152,
102,
141,
102,
3,
103,
148,
105,
109,
105,
90,
105,
119,
105,
96,
105,
84,
105,
117,
105,
48,
105,
130,
105,
74,
105,
104,
105,
107,
105,
94,
105,
83,
105,
121,
105,
134,
105,
93,
105,
99,
105,
91,
105,
71,
107,
114,
107,
192,
107,
191,
107,
211,
107,
253,
107,
162,
110,
175,
110,
211,
110,
182,
110,
194,
110,
144,
110,
157,
110,
199,
110,
197,
110,
165,
110,
152,
110,
188,
110,
186,
110,
171,
110,
209,
110,
150,
110,
156,
110,
196,
110,
212,
110,
170,
110,
167,
110,
180,
110,
78,
113,
89,
113,
105,
113,
100,
113,
73,
113,
103,
113,
92,
113,
108,
113,
102,
113,
76,
113,
101,
113,
94,
113,
70,
113,
104,
113,
86,
113,
58,
114,
82,
114,
55,
115,
69,
115,
63,
115,
62,
115,
111,
116,
90,
116,
85,
116,
95,
116,
94,
116,
65,
116,
63,
116,
89,
116,
91,
116,
92,
116,
118,
117,
120,
117,
0,
118,
240,
117,
1,
118,
242,
117,
241,
117,
250,
117,
255,
117,
244,
117,
243,
117,
222,
118,
223,
118,
91,
119,
107,
119,
102,
119,
94,
119,
99,
119,
121,
119,
106,
119,
108,
119,
92,
119,
101,
119,
104,
119,
98,
119,
238,
119,
142,
120,
176,
120,
151,
120,
152,
120,
140,
120,
137,
120,
124,
120,
145,
120,
147,
120,
127,
120,
122,
121,
127,
121,
129,
121,
44,
132,
189,
121,
28,
122,
26,
122,
32,
122,
20,
122,
31,
122,
30,
122,
159,
122,
160,
122,
119,
123,
192,
123,
96,
123,
110,
123,
103,
123,
177,
124,
179,
124,
181,
124,
147,
125,
121,
125,
145,
125,
129,
125,
143,
125,
91,
125,
110,
127,
105,
127,
106,
127,
114,
127,
169,
127,
168,
127,
164,
127,
86,
128,
88,
128,
134,
128,
132,
128,
113,
129,
112,
129,
120,
129,
101,
129,
110,
129,
115,
129,
107,
129,
121,
129,
122,
129,
102,
129,
5,
130,
71,
130,
130,
132,
119,
132,
61,
132,
49,
132,
117,
132,
102,
132,
107,
132,
73,
132,
108,
132,
91,
132,
60,
132,
53,
132,
97,
132,
99,
132,
105,
132,
109,
132,
70,
132,
94,
134,
92,
134,
95,
134,
249,
134,
19,
135,
8,
135,
7,
135,
0,
135,
254,
134,
251,
134,
2,
135,
3,
135,
6,
135,
10,
135,
89,
136,
223,
136,
212,
136,
217,
136,
220,
136,
216,
136,
221,
136,
225,
136,
202,
136,
213,
136,
210,
136,
156,
137,
227,
137,
107,
138,
114,
138,
115,
138,
102,
138,
105,
138,
112,
138,
135,
138,
124,
138,
99,
138,
160,
138,
113,
138,
133,
138,
109,
138,
98,
138,
110,
138,
108,
138,
121,
138,
123,
138,
62,
138,
104,
138,
98,
140,
138,
140,
137,
140,
202,
140,
199,
140,
200,
140,
196,
140,
178,
140,
195,
140,
194,
140,
197,
140,
225,
141,
223,
141,
232,
141,
239,
141,
243,
141,
250,
141,
234,
141,
228,
141,
230,
141,
178,
142,
3,
143,
9,
143,
254,
142,
10,
143,
159,
143,
178,
143,
75,
144,
74,
144,
83,
144,
66,
144,
84,
144,
60,
144,
85,
144,
80,
144,
71,
144,
79,
144,
78,
144,
77,
144,
81,
144,
62,
144,
65,
144,
18,
145,
23,
145,
108,
145,
106,
145,
105,
145,
201,
145,
55,
146,
87,
146,
56,
146,
61,
146,
64,
146,
62,
146,
91,
146,
75,
146,
100,
146,
81,
146,
52,
146,
73,
146,
77,
146,
69,
146,
57,
146,
63,
146,
90,
146,
152,
149,
152,
150,
148,
150,
149,
150,
205,
150,
203,
150,
201,
150,
202,
150,
247,
150,
251,
150,
249,
150,
246,
150,
86,
151,
116,
151,
118,
151,
16,
152,
17,
152,
19,
152,
10,
152,
18,
152,
12,
152,
252,
152,
244,
152,
253,
152,
254,
152,
179,
153,
177,
153,
180,
153,
225,
154,
233,
156,
130,
158,
14,
159,
19,
159,
32,
159,
231,
80,
238,
80,
229,
80,
214,
80,
237,
80,
218,
80,
213,
80,
207,
80,
209,
80,
241,
80,
206,
80,
233,
80,
98,
81,
243,
81,
131,
82,
130,
82,
49,
83,
173,
83,
254,
85,
0,
86,
27,
86,
23,
86,
253,
85,
20,
86,
6,
86,
9,
86,
13,
86,
14,
86,
247,
85,
22,
86,
31,
86,
8,
86,
16,
86,
246,
85,
24,
87,
22,
87,
117,
88,
126,
88,
131,
88,
147,
88,
138,
88,
121,
88,
133,
88,
125,
88,
253,
88,
37,
89,
34,
89,
36,
89,
106,
89,
105,
89,
225,
90,
230,
90,
233,
90,
215,
90,
214,
90,
216,
90,
227,
90,
117,
91,
222,
91,
231,
91,
225,
91,
229,
91,
230,
91,
232,
91,
226,
91,
228,
91,
223,
91,
13,
92,
98,
92,
132,
93,
135,
93,
91,
94,
99,
94,
85,
94,
87,
94,
84,
94,
211,
94,
214,
94,
10,
95,
70,
95,
112,
95,
185,
95,
71,
97,
63,
97,
75,
97,
119,
97,
98,
97,
99,
97,
95,
97,
90,
97,
88,
97,
117,
97,
42,
98,
135,
100,
88,
100,
84,
100,
164,
100,
120,
100,
95,
100,
122,
100,
81,
100,
103,
100,
52,
100,
109,
100,
123,
100,
114,
101,
161,
101,
215,
101,
214,
101,
162,
102,
168,
102,
157,
102,
156,
105,
168,
105,
149,
105,
193,
105,
174,
105,
211,
105,
203,
105,
155,
105,
183,
105,
187,
105,
171,
105,
180,
105,
208,
105,
205,
105,
173,
105,
204,
105,
166,
105,
195,
105,
163,
105,
73,
107,
76,
107,
51,
108,
51,
111,
20,
111,
254,
110,
19,
111,
244,
110,
41,
111,
62,
111,
32,
111,
44,
111,
15,
111,
2,
111,
34,
111,
255,
110,
239,
110,
6,
111,
49,
111,
56,
111,
50,
111,
35,
111,
21,
111,
43,
111,
47,
111,
136,
111,
42,
111,
236,
110,
1,
111,
242,
110,
204,
110,
247,
110,
148,
113,
153,
113,
125,
113,
138,
113,
132,
113,
146,
113,
62,
114,
146,
114,
150,
114,
68,
115,
80,
115,
100,
116,
99,
116,
106,
116,
112,
116,
109,
116,
4,
117,
145,
117,
39,
118,
13,
118,
11,
118,
9,
118,
19,
118,
225,
118,
227,
118,
132,
119,
125,
119,
127,
119,
97,
119,
193,
120,
159,
120,
167,
120,
179,
120,
169,
120,
163,
120,
142,
121,
143,
121,
141,
121,
46,
122,
49,
122,
170,
122,
169,
122,
237,
122,
239,
122,
161,
123,
149,
123,
139,
123,
117,
123,
151,
123,
157,
123,
148,
123,
143,
123,
184,
123,
135,
123,
132,
123,
185,
124,
189,
124,
190,
124,
187,
125,
176,
125,
156,
125,
189,
125,
190,
125,
160,
125,
202,
125,
180,
125,
178,
125,
177,
125,
186,
125,
162,
125,
191,
125,
181,
125,
184,
125,
173,
125,
210,
125,
199,
125,
172,
125,
112,
127,
224,
127,
225,
127,
223,
127,
94,
128,
90,
128,
135,
128,
80,
129,
128,
129,
143,
129,
136,
129,
138,
129,
127,
129,
130,
129,
231,
129,
250,
129,
7,
130,
20,
130,
30,
130,
75,
130,
201,
132,
191,
132,
198,
132,
196,
132,
153,
132,
158,
132,
178,
132,
156,
132,
203,
132,
184,
132,
192,
132,
211,
132,
144,
132,
188,
132,
209,
132,
202,
132,
63,
135,
28,
135,
59,
135,
34,
135,
37,
135,
52,
135,
24,
135,
85,
135,
55,
135,
41,
135,
243,
136,
2,
137,
244,
136,
249,
136,
248,
136,
253,
136,
232,
136,
26,
137,
239,
136,
166,
138,
140,
138,
158,
138,
163,
138,
141,
138,
161,
138,
147,
138,
164,
138,
170,
138,
165,
138,
168,
138,
152,
138,
145,
138,
154,
138,
167,
138,
106,
140,
141,
140,
140,
140,
211,
140,
209,
140,
210,
140,
107,
141,
153,
141,
149,
141,
252,
141,
20,
143,
18,
143,
21,
143,
19,
143,
163,
143,
96,
144,
88,
144,
92,
144,
99,
144,
89,
144,
94,
144,
98,
144,
93,
144,
91,
144,
25,
145,
24,
145,
30,
145,
117,
145,
120,
145,
119,
145,
116,
145,
120,
146,
128,
146,
133,
146,
152,
146,
150,
146,
123,
146,
147,
146,
156,
146,
168,
146,
124,
146,
145,
146,
161,
149,
168,
149,
169,
149,
163,
149,
165,
149,
164,
149,
153,
150,
156,
150,
155,
150,
204,
150,
210,
150,
0,
151,
124,
151,
133,
151,
246,
151,
23,
152,
24,
152,
175,
152,
177,
152,
3,
153,
5,
153,
12,
153,
9,
153,
193,
153,
175,
154,
176,
154,
230,
154,
65,
155,
66,
155,
244,
156,
246,
156,
243,
156,
188,
158,
59,
159,
74,
159,
4,
81,
0,
81,
251,
80,
245,
80,
249,
80,
2,
81,
8,
81,
9,
81,
5,
81,
220,
81,
135,
82,
136,
82,
137,
82,
141,
82,
138,
82,
240,
82,
178,
83,
46,
86,
59,
86,
57,
86,
50,
86,
63,
86,
52,
86,
41,
86,
83,
86,
78,
86,
87,
86,
116,
86,
54,
86,
47,
86,
48,
86,
128,
88,
159,
88,
158,
88,
179,
88,
156,
88,
174,
88,
169,
88,
166,
88,
109,
89,
9,
91,
251,
90,
11,
91,
245,
90,
12,
91,
8,
91,
238,
91,
236,
91,
233,
91,
235,
91,
100,
92,
101,
92,
157,
93,
148,
93,
98,
94,
95,
94,
97,
94,
226,
94,
218,
94,
223,
94,
221,
94,
227,
94,
224,
94,
72,
95,
113,
95,
183,
95,
181,
95,
118,
97,
103,
97,
110,
97,
93,
97,
85,
97,
130,
97,
124,
97,
112,
97,
107,
97,
126,
97,
167,
97,
144,
97,
171,
97,
142,
97,
172,
97,
154,
97,
164,
97,
148,
97,
174,
97,
46,
98,
105,
100,
111,
100,
121,
100,
158,
100,
178,
100,
136,
100,
144,
100,
176,
100,
165,
100,
147,
100,
149,
100,
169,
100,
146,
100,
174,
100,
173,
100,
171,
100,
154,
100,
172,
100,
153,
100,
162,
100,
179,
100,
117,
101,
119,
101,
120,
101,
174,
102,
171,
102,
180,
102,
177,
102,
35,
106,
31,
106,
232,
105,
1,
106,
30,
106,
25,
106,
253,
105,
33,
106,
19,
106,
10,
106,
243,
105,
2,
106,
5,
106,
237,
105,
17,
106,
80,
107,
78,
107,
164,
107,
197,
107,
198,
107,
63,
111,
124,
111,
132,
111,
81,
111,
102,
111,
84,
111,
134,
111,
109,
111,
91,
111,
120,
111,
110,
111,
142,
111,
122,
111,
112,
111,
100,
111,
151,
111,
88,
111,
213,
110,
111,
111,
96,
111,
95,
111,
159,
113,
172,
113,
177,
113,
168,
113,
86,
114,
155,
114,
78,
115,
87,
115,
105,
116,
139,
116,
131,
116,
126,
116,
128,
116,
127,
117,
32,
118,
41,
118,
31,
118,
36,
118,
38,
118,
33,
118,
34,
118,
154,
118,
186,
118,
228,
118,
142,
119,
135,
119,
140,
119,
145,
119,
139,
119,
203,
120,
197,
120,
186,
120,
202,
120,
190,
120,
213,
120,
188,
120,
208,
120,
63,
122,
60,
122,
64,
122,
61,
122,
55,
122,
59,
122,
175,
122,
174,
122,
173,
123,
177,
123,
196,
123,
180,
123,
198,
123,
199,
123,
193,
123,
160,
123,
204,
123,
202,
124,
224,
125,
244,
125,
239,
125,
251,
125,
216,
125,
236,
125,
221,
125,
232,
125,
227,
125,
218,
125,
222,
125,
233,
125,
158,
125,
217,
125,
242,
125,
249,
125,
117,
127,
119,
127,
175,
127,
233,
127,
38,
128,
155,
129,
156,
129,
157,
129,
160,
129,
154,
129,
152,
129,
23,
133,
61,
133,
26,
133,
238,
132,
44,
133,
45,
133,
19,
133,
17,
133,
35,
133,
33,
133,
20,
133,
236,
132,
37,
133,
255,
132,
6,
133,
130,
135,
116,
135,
118,
135,
96,
135,
102,
135,
120,
135,
104,
135,
89,
135,
87,
135,
76,
135,
83,
135,
91,
136,
93,
136,
16,
137,
7,
137,
18,
137,
19,
137,
21,
137,
10,
137,
188,
138,
210,
138,
199,
138,
196,
138,
149,
138,
203,
138,
248,
138,
178,
138,
201,
138,
194,
138,
191,
138,
176,
138,
214,
138,
205,
138,
182,
138,
185,
138,
219,
138,
76,
140,
78,
140,
108,
140,
224,
140,
222,
140,
230,
140,
228,
140,
236,
140,
237,
140,
226,
140,
227,
140,
220,
140,
234,
140,
225,
140,
109,
141,
159,
141,
163,
141,
43,
142,
16,
142,
29,
142,
34,
142,
15,
142,
41,
142,
31,
142,
33,
142,
30,
142,
186,
142,
29,
143,
27,
143,
31,
143,
41,
143,
38,
143,
42,
143,
28,
143,
30,
143,
37,
143,
105,
144,
110,
144,
104,
144,
109,
144,
119,
144,
48,
145,
45,
145,
39,
145,
49,
145,
135,
145,
137,
145,
139,
145,
131,
145,
197,
146,
187,
146,
183,
146,
234,
146,
172,
146,
228,
146,
193,
146,
179,
146,
188,
146,
210,
146,
199,
146,
240,
146,
178,
146,
173,
149,
177,
149,
4,
151,
6,
151,
7,
151,
9,
151,
96,
151,
141,
151,
139,
151,
143,
151,
33,
152,
43,
152,
28,
152,
179,
152,
10,
153,
19,
153,
18,
153,
24,
153,
221,
153,
208,
153,
223,
153,
219,
153,
209,
153,
213,
153,
210,
153,
217,
153,
183,
154,
238,
154,
239,
154,
39,
155,
69,
155,
68,
155,
119,
155,
111,
155,
6,
157,
9,
157,
3,
157,
169,
158,
190,
158,
206,
158,
168,
88,
82,
159,
18,
81,
24,
81,
20,
81,
16,
81,
21,
81,
128,
81,
170,
81,
221,
81,
145,
82,
147,
82,
243,
82,
89,
86,
107,
86,
121,
86,
105,
86,
100,
86,
120,
86,
106,
86,
104,
86,
101,
86,
113,
86,
111,
86,
108,
86,
98,
86,
118,
86,
193,
88,
190,
88,
199,
88,
197,
88,
110,
89,
29,
91,
52,
91,
120,
91,
240,
91,
14,
92,
74,
95,
178,
97,
145,
97,
169,
97,
138,
97,
205,
97,
182,
97,
190,
97,
202,
97,
200,
97,
48,
98,
197,
100,
193,
100,
203,
100,
187,
100,
188,
100,
218,
100,
196,
100,
199,
100,
194,
100,
205,
100,
191,
100,
210,
100,
212,
100,
190,
100,
116,
101,
198,
102,
201,
102,
185,
102,
196,
102,
199,
102,
184,
102,
61,
106,
56,
106,
58,
106,
89,
106,
107,
106,
88,
106,
57,
106,
68,
106,
98,
106,
97,
106,
75,
106,
71,
106,
53,
106,
95,
106,
72,
106,
89,
107,
119,
107,
5,
108,
194,
111,
177,
111,
161,
111,
195,
111,
164,
111,
193,
111,
167,
111,
179,
111,
192,
111,
185,
111,
182,
111,
166,
111,
160,
111,
180,
111,
190,
113,
201,
113,
208,
113,
210,
113,
200,
113,
213,
113,
185,
113,
206,
113,
217,
113,
220,
113,
195,
113,
196,
113,
104,
115,
156,
116,
163,
116,
152,
116,
159,
116,
158,
116,
226,
116,
12,
117,
13,
117,
52,
118,
56,
118,
58,
118,
231,
118,
229,
118,
160,
119,
158,
119,
159,
119,
165,
119,
232,
120,
218,
120,
236,
120,
231,
120,
166,
121,
77,
122,
78,
122,
70,
122,
76,
122,
75,
122,
186,
122,
217,
123,
17,
124,
201,
123,
228,
123,
219,
123,
225,
123,
233,
123,
230,
123,
213,
124,
214,
124,
10,
126,
17,
126,
8,
126,
27,
126,
35,
126,
30,
126,
29,
126,
9,
126,
16,
126,
121,
127,
178,
127,
240,
127,
241,
127,
238,
127,
40,
128,
179,
129,
169,
129,
168,
129,
251,
129,
8,
130,
88,
130,
89,
130,
74,
133,
89,
133,
72,
133,
104,
133,
105,
133,
67,
133,
73,
133,
109,
133,
106,
133,
94,
133,
131,
135,
159,
135,
158,
135,
162,
135,
141,
135,
97,
136,
42,
137,
50,
137,
37,
137,
43,
137,
33,
137,
170,
137,
166,
137,
230,
138,
250,
138,
235,
138,
241,
138,
0,
139,
220,
138,
231,
138,
238,
138,
254,
138,
1,
139,
2,
139,
247,
138,
237,
138,
243,
138,
246,
138,
252,
138,
107,
140,
109,
140,
147,
140,
244,
140,
68,
142,
49,
142,
52,
142,
66,
142,
57,
142,
53,
142,
59,
143,
47,
143,
56,
143,
51,
143,
168,
143,
166,
143,
117,
144,
116,
144,
120,
144,
114,
144,
124,
144,
122,
144,
52,
145,
146,
145,
32,
147,
54,
147,
248,
146,
51,
147,
47,
147,
34,
147,
252,
146,
43,
147,
4,
147,
26,
147,
16,
147,
38,
147,
33,
147,
21,
147,
46,
147,
25,
147,
187,
149,
167,
150,
168,
150,
170,
150,
213,
150,
14,
151,
17,
151,
22,
151,
13,
151,
19,
151,
15,
151,
91,
151,
92,
151,
102,
151,
152,
151,
48,
152,
56,
152,
59,
152,
55,
152,
45,
152,
57,
152,
36,
152,
16,
153,
40,
153,
30,
153,
27,
153,
33,
153,
26,
153,
237,
153,
226,
153,
241,
153,
184,
154,
188,
154,
251,
154,
237,
154,
40,
155,
145,
155,
21,
157,
35,
157,
38,
157,
40,
157,
18,
157,
27,
157,
216,
158,
212,
158,
141,
159,
156,
159,
42,
81,
31,
81,
33,
81,
50,
81,
245,
82,
142,
86,
128,
86,
144,
86,
133,
86,
135,
86,
143,
86,
213,
88,
211,
88,
209,
88,
206,
88,
48,
91,
42,
91,
36,
91,
122,
91,
55,
92,
104,
92,
188,
93,
186,
93,
189,
93,
184,
93,
107,
94,
76,
95,
189,
95,
201,
97,
194,
97,
199,
97,
230,
97,
203,
97,
50,
98,
52,
98,
206,
100,
202,
100,
216,
100,
224,
100,
240,
100,
230,
100,
236,
100,
241,
100,
226,
100,
237,
100,
130,
101,
131,
101,
217,
102,
214,
102,
128,
106,
148,
106,
132,
106,
162,
106,
156,
106,
219,
106,
163,
106,
126,
106,
151,
106,
144,
106,
160,
106,
92,
107,
174,
107,
218,
107,
8,
108,
216,
111,
241,
111,
223,
111,
224,
111,
219,
111,
228,
111,
235,
111,
239,
111,
128,
111,
236,
111,
225,
111,
233,
111,
213,
111,
238,
111,
240,
111,
231,
113,
223,
113,
238,
113,
230,
113,
229,
113,
237,
113,
236,
113,
244,
113,
224,
113,
53,
114,
70,
114,
112,
115,
114,
115,
169,
116,
176,
116,
166,
116,
168,
116,
70,
118,
66,
118,
76,
118,
234,
118,
179,
119,
170,
119,
176,
119,
172,
119,
167,
119,
173,
119,
239,
119,
247,
120,
250,
120,
244,
120,
239,
120,
1,
121,
167,
121,
170,
121,
87,
122,
191,
122,
7,
124,
13,
124,
254,
123,
247,
123,
12,
124,
224,
123,
224,
124,
220,
124,
222,
124,
226,
124,
223,
124,
217,
124,
221,
124,
46,
126,
62,
126,
70,
126,
55,
126,
50,
126,
67,
126,
43,
126,
61,
126,
49,
126,
69,
126,
65,
126,
52,
126,
57,
126,
72,
126,
53,
126,
63,
126,
47,
126,
68,
127,
243,
127,
252,
127,
113,
128,
114,
128,
112,
128,
111,
128,
115,
128,
198,
129,
195,
129,
186,
129,
194,
129,
192,
129,
191,
129,
189,
129,
201,
129,
190,
129,
232,
129,
9,
130,
113,
130,
170,
133,
132,
133,
126,
133,
156,
133,
145,
133,
148,
133,
175,
133,
155,
133,
135,
133,
168,
133,
138,
133,
103,
134,
192,
135,
209,
135,
179,
135,
210,
135,
198,
135,
171,
135,
187,
135,
186,
135,
200,
135,
203,
135,
59,
137,
54,
137,
68,
137,
56,
137,
61,
137,
172,
137,
14,
139,
23,
139,
25,
139,
27,
139,
10,
139,
32,
139,
29,
139,
4,
139,
16,
139,
65,
140,
63,
140,
115,
140,
250,
140,
253,
140,
252,
140,
248,
140,
251,
140,
168,
141,
73,
142,
75,
142,
72,
142,
74,
142,
68,
143,
62,
143,
66,
143,
69,
143,
63,
143,
127,
144,
125,
144,
132,
144,
129,
144,
130,
144,
128,
144,
57,
145,
163,
145,
158,
145,
156,
145,
77,
147,
130,
147,
40,
147,
117,
147,
74,
147,
101,
147,
75,
147,
24,
147,
126,
147,
108,
147,
91,
147,
112,
147,
90,
147,
84,
147,
202,
149,
203,
149,
204,
149,
200,
149,
198,
149,
177,
150,
184,
150,
214,
150,
28,
151,
30,
151,
160,
151,
211,
151,
70,
152,
182,
152,
53,
153,
1,
154,
255,
153,
174,
155,
171,
155,
170,
155,
173,
155,
59,
157,
63,
157,
139,
158,
207,
158,
222,
158,
220,
158,
221,
158,
219,
158,
62,
159,
75,
159,
226,
83,
149,
86,
174,
86,
217,
88,
216,
88,
56,
91,
93,
95,
227,
97,
51,
98,
244,
100,
242,
100,
254,
100,
6,
101,
250,
100,
251,
100,
247,
100,
183,
101,
220,
102,
38,
103,
179,
106,
172,
106,
195,
106,
187,
106,
184,
106,
194,
106,
174,
106,
175,
106,
95,
107,
120,
107,
175,
107,
9,
112,
11,
112,
254,
111,
6,
112,
250,
111,
17,
112,
15,
112,
251,
113,
252,
113,
254,
113,
248,
113,
119,
115,
117,
115,
167,
116,
191,
116,
21,
117,
86,
118,
88,
118,
82,
118,
189,
119,
191,
119,
187,
119,
188,
119,
14,
121,
174,
121,
97,
122,
98,
122,
96,
122,
196,
122,
197,
122,
43,
124,
39,
124,
42,
124,
30,
124,
35,
124,
33,
124,
231,
124,
84,
126,
85,
126,
94,
126,
90,
126,
97,
126,
82,
126,
89,
126,
72,
127,
249,
127,
251,
127,
119,
128,
118,
128,
205,
129,
207,
129,
10,
130,
207,
133,
169,
133,
205,
133,
208,
133,
201,
133,
176,
133,
186,
133,
185,
133,
166,
133,
239,
135,
236,
135,
242,
135,
224,
135,
134,
137,
178,
137,
244,
137,
40,
139,
57,
139,
44,
139,
43,
139,
80,
140,
5,
141,
89,
142,
99,
142,
102,
142,
100,
142,
95,
142,
85,
142,
192,
142,
73,
143,
77,
143,
135,
144,
131,
144,
136,
144,
171,
145,
172,
145,
208,
145,
148,
147,
138,
147,
150,
147,
162,
147,
179,
147,
174,
147,
172,
147,
176,
147,
152,
147,
154,
147,
151,
147,
212,
149,
214,
149,
208,
149,
213,
149,
226,
150,
220,
150,
217,
150,
219,
150,
222,
150,
36,
151,
163,
151,
166,
151,
173,
151,
249,
151,
77,
152,
79,
152,
76,
152,
78,
152,
83,
152,
186,
152,
62,
153,
63,
153,
61,
153,
46,
153,
165,
153,
14,
154,
193,
154,
3,
155,
6,
155,
79,
155,
78,
155,
77,
155,
202,
155,
201,
155,
253,
155,
200,
155
],
'i8',
ALLOC_NONE,
Runtime.GLOBAL_BASE + 86812
);
/* memory initializer */ allocate(
[
192,
155,
81,
157,
93,
157,
96,
157,
224,
158,
21,
159,
44,
159,
51,
81,
165,
86,
222,
88,
223,
88,
226,
88,
245,
91,
144,
159,
236,
94,
242,
97,
247,
97,
246,
97,
245,
97,
0,
101,
15,
101,
224,
102,
221,
102,
229,
106,
221,
106,
218,
106,
211,
106,
27,
112,
31,
112,
40,
112,
26,
112,
29,
112,
21,
112,
24,
112,
6,
114,
13,
114,
88,
114,
162,
114,
120,
115,
122,
115,
189,
116,
202,
116,
227,
116,
135,
117,
134,
117,
95,
118,
97,
118,
199,
119,
25,
121,
177,
121,
107,
122,
105,
122,
62,
124,
63,
124,
56,
124,
61,
124,
55,
124,
64,
124,
107,
126,
109,
126,
121,
126,
105,
126,
106,
126,
133,
127,
115,
126,
182,
127,
185,
127,
184,
127,
216,
129,
233,
133,
221,
133,
234,
133,
213,
133,
228,
133,
229,
133,
247,
133,
251,
135,
5,
136,
13,
136,
249,
135,
254,
135,
96,
137,
95,
137,
86,
137,
94,
137,
65,
139,
92,
139,
88,
139,
73,
139,
90,
139,
78,
139,
79,
139,
70,
139,
89,
139,
8,
141,
10,
141,
124,
142,
114,
142,
135,
142,
118,
142,
108,
142,
122,
142,
116,
142,
84,
143,
78,
143,
173,
143,
138,
144,
139,
144,
177,
145,
174,
145,
225,
147,
209,
147,
223,
147,
195,
147,
200,
147,
220,
147,
221,
147,
214,
147,
226,
147,
205,
147,
216,
147,
228,
147,
215,
147,
232,
147,
220,
149,
180,
150,
227,
150,
42,
151,
39,
151,
97,
151,
220,
151,
251,
151,
94,
152,
88,
152,
91,
152,
188,
152,
69,
153,
73,
153,
22,
154,
25,
154,
13,
155,
232,
155,
231,
155,
214,
155,
219,
155,
137,
157,
97,
157,
114,
157,
106,
157,
108,
157,
146,
158,
151,
158,
147,
158,
180,
158,
248,
82,
168,
86,
183,
86,
182,
86,
180,
86,
188,
86,
228,
88,
64,
91,
67,
91,
125,
91,
246,
91,
201,
93,
248,
97,
250,
97,
24,
101,
20,
101,
25,
101,
230,
102,
39,
103,
236,
106,
62,
112,
48,
112,
50,
112,
16,
114,
123,
115,
207,
116,
98,
118,
101,
118,
38,
121,
42,
121,
44,
121,
43,
121,
199,
122,
246,
122,
76,
124,
67,
124,
77,
124,
239,
124,
240,
124,
174,
143,
125,
126,
124,
126,
130,
126,
76,
127,
0,
128,
218,
129,
102,
130,
251,
133,
249,
133,
17,
134,
250,
133,
6,
134,
11,
134,
7,
134,
10,
134,
20,
136,
21,
136,
100,
137,
186,
137,
248,
137,
112,
139,
108,
139,
102,
139,
111,
139,
95,
139,
107,
139,
15,
141,
13,
141,
137,
142,
129,
142,
133,
142,
130,
142,
180,
145,
203,
145,
24,
148,
3,
148,
253,
147,
225,
149,
48,
151,
196,
152,
82,
153,
81,
153,
168,
153,
43,
154,
48,
154,
55,
154,
53,
154,
19,
156,
13,
156,
121,
158,
181,
158,
232,
158,
47,
159,
95,
159,
99,
159,
97,
159,
55,
81,
56,
81,
193,
86,
192,
86,
194,
86,
20,
89,
108,
92,
205,
93,
252,
97,
254,
97,
29,
101,
28,
101,
149,
101,
233,
102,
251,
106,
4,
107,
250,
106,
178,
107,
76,
112,
27,
114,
167,
114,
214,
116,
212,
116,
105,
118,
211,
119,
80,
124,
143,
126,
140,
126,
188,
127,
23,
134,
45,
134,
26,
134,
35,
136,
34,
136,
33,
136,
31,
136,
106,
137,
108,
137,
189,
137,
116,
139,
119,
139,
125,
139,
19,
141,
138,
142,
141,
142,
139,
142,
95,
143,
175,
143,
186,
145,
46,
148,
51,
148,
53,
148,
58,
148,
56,
148,
50,
148,
43,
148,
226,
149,
56,
151,
57,
151,
50,
151,
255,
151,
103,
152,
101,
152,
87,
153,
69,
154,
67,
154,
64,
154,
62,
154,
207,
154,
84,
155,
81,
155,
45,
156,
37,
156,
175,
157,
180,
157,
194,
157,
184,
157,
157,
158,
239,
158,
25,
159,
92,
159,
102,
159,
103,
159,
60,
81,
59,
81,
200,
86,
202,
86,
201,
86,
127,
91,
212,
93,
210,
93,
78,
95,
255,
97,
36,
101,
10,
107,
97,
107,
81,
112,
88,
112,
128,
115,
228,
116,
138,
117,
110,
118,
108,
118,
179,
121,
96,
124,
95,
124,
126,
128,
125,
128,
223,
129,
114,
137,
111,
137,
252,
137,
128,
139,
22,
141,
23,
141,
145,
142,
147,
142,
97,
143,
72,
145,
68,
148,
81,
148,
82,
148,
61,
151,
62,
151,
195,
151,
193,
151,
107,
152,
85,
153,
85,
154,
77,
154,
210,
154,
26,
155,
73,
156,
49,
156,
62,
156,
59,
156,
211,
157,
215,
157,
52,
159,
108,
159,
106,
159,
148,
159,
204,
86,
214,
93,
0,
98,
35,
101,
43,
101,
42,
101,
236,
102,
16,
107,
218,
116,
202,
122,
100,
124,
99,
124,
101,
124,
147,
126,
150,
126,
148,
126,
226,
129,
56,
134,
63,
134,
49,
136,
138,
139,
144,
144,
143,
144,
99,
148,
96,
148,
100,
148,
104,
151,
111,
152,
92,
153,
90,
154,
91,
154,
87,
154,
211,
154,
212,
154,
209,
154,
84,
156,
87,
156,
86,
156,
229,
157,
159,
158,
244,
158,
209,
86,
233,
88,
44,
101,
94,
112,
113,
118,
114,
118,
215,
119,
80,
127,
136,
127,
54,
136,
57,
136,
98,
136,
147,
139,
146,
139,
150,
139,
119,
130,
27,
141,
192,
145,
106,
148,
66,
151,
72,
151,
68,
151,
198,
151,
112,
152,
95,
154,
34,
155,
88,
155,
95,
156,
249,
157,
250,
157,
124,
158,
125,
158,
7,
159,
119,
159,
114,
159,
243,
94,
22,
107,
99,
112,
108,
124,
110,
124,
59,
136,
192,
137,
161,
142,
193,
145,
114,
148,
112,
148,
113,
152,
94,
153,
214,
154,
35,
155,
204,
158,
100,
112,
218,
119,
154,
139,
119,
148,
201,
151,
98,
154,
101,
154,
156,
126,
156,
139,
170,
142,
197,
145,
125,
148,
126,
148,
124,
148,
119,
156,
120,
156,
247,
158,
84,
140,
127,
148,
26,
158,
40,
114,
106,
154,
49,
155,
27,
158,
30,
158,
114,
124,
96,
36,
97,
36,
98,
36,
99,
36,
100,
36,
101,
36,
102,
36,
103,
36,
104,
36,
105,
36,
116,
36,
117,
36,
118,
36,
119,
36,
120,
36,
121,
36,
122,
36,
123,
36,
124,
36,
125,
36,
112,
33,
113,
33,
114,
33,
115,
33,
116,
33,
117,
33,
118,
33,
119,
33,
120,
33,
121,
33,
54,
78,
63,
78,
133,
78,
160,
78,
130,
81,
150,
81,
171,
81,
249,
82,
56,
83,
105,
83,
182,
83,
10,
89,
128,
91,
219,
93,
122,
94,
127,
94,
244,
94,
80,
95,
97,
95,
52,
101,
224,
101,
146,
117,
118,
118,
181,
143,
182,
150,
168,
0,
198,
2,
253,
48,
254,
48,
157,
48,
158,
48,
0,
0,
0,
0,
5,
48,
6,
48,
7,
48,
252,
48,
59,
255,
61,
255,
61,
39,
65,
48,
66,
48,
67,
48,
68,
48,
69,
48,
70,
48,
71,
48,
72,
48,
73,
48,
74,
48,
75,
48,
76,
48,
77,
48,
78,
48,
79,
48,
80,
48,
81,
48,
82,
48,
83,
48,
84,
48,
85,
48,
86,
48,
87,
48,
88,
48,
89,
48,
90,
48,
91,
48,
92,
48,
93,
48,
94,
48,
95,
48,
96,
48,
97,
48,
98,
48,
99,
48,
100,
48,
101,
48,
102,
48,
103,
48,
104,
48,
105,
48,
106,
48,
107,
48,
108,
48,
109,
48,
110,
48,
111,
48,
112,
48,
113,
48,
114,
48,
115,
48,
116,
48,
117,
48,
118,
48,
119,
48,
120,
48,
121,
48,
122,
48,
123,
48,
124,
48,
125,
48,
126,
48,
127,
48,
128,
48,
129,
48,
130,
48,
131,
48,
132,
48,
133,
48,
134,
48,
135,
48,
136,
48,
137,
48,
138,
48,
139,
48,
140,
48,
141,
48,
142,
48,
143,
48,
144,
48,
145,
48,
146,
48,
147,
48,
161,
48,
162,
48,
163,
48,
164,
48,
165,
48,
166,
48,
167,
48,
168,
48,
169,
48,
170,
48,
171,
48,
172,
48,
173,
48,
174,
48,
175,
48,
176,
48,
177,
48,
178,
48,
179,
48,
180,
48,
181,
48,
182,
48,
183,
48,
184,
48,
185,
48,
186,
48,
187,
48,
188,
48,
189,
48,
190,
48,
191,
48,
192,
48,
193,
48,
194,
48,
195,
48,
196,
48,
197,
48,
198,
48,
199,
48,
200,
48,
201,
48,
202,
48,
203,
48,
204,
48,
205,
48,
206,
48,
207,
48,
208,
48,
209,
48,
210,
48,
211,
48,
212,
48,
213,
48,
214,
48,
215,
48,
216,
48,
217,
48,
218,
48,
219,
48,
220,
48,
221,
48,
222,
48,
223,
48,
224,
48,
225,
48,
226,
48,
227,
48,
228,
48,
229,
48,
230,
48,
231,
48,
232,
48,
233,
48,
234,
48,
235,
48,
236,
48,
237,
48,
238,
48,
239,
48,
240,
48,
241,
48,
242,
48,
243,
48,
244,
48,
245,
48,
246,
48,
16,
4,
17,
4,
18,
4,
19,
4,
20,
4,
21,
4,
1,
4,
22,
4,
23,
4,
24,
4,
25,
4,
26,
4,
27,
4,
28,
4,
29,
4,
30,
4,
31,
4,
32,
4,
33,
4,
34,
4,
35,
4,
36,
4,
37,
4,
38,
4,
39,
4,
40,
4,
41,
4,
42,
4,
43,
4,
44,
4,
45,
4,
46,
4,
47,
4,
48,
4,
49,
4,
50,
4,
51,
4,
52,
4,
53,
4,
81,
4,
54,
4,
55,
4,
56,
4,
57,
4,
58,
4,
59,
4,
60,
4,
61,
4,
62,
4,
63,
4,
64,
4,
65,
4,
66,
4,
67,
4,
68,
4,
69,
4,
70,
4,
71,
4,
72,
4,
73,
4,
74,
4,
75,
4,
76,
4,
77,
4,
78,
4,
79,
4,
231,
33,
184,
33,
185,
33,
207,
49,
204,
0,
90,
78,
138,
0,
2,
82,
145,
68,
176,
159,
136,
81,
177,
159,
7,
118,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
226,
255,
228,
255,
7,
255,
2,
255,
49,
50,
22,
33,
33,
33,
155,
48,
156,
48,
128,
46,
132,
46,
134,
46,
135,
46,
136,
46,
138,
46,
140,
46,
141,
46,
149,
46,
156,
46,
157,
46,
165,
46,
167,
46,
170,
46,
172,
46,
174,
46,
182,
46,
188,
46,
190,
46,
198,
46,
202,
46,
204,
46,
205,
46,
207,
46,
214,
46,
215,
46,
222,
46,
227,
46,
0,
0,
0,
0,
0,
0,
131,
2,
80,
2,
91,
2,
84,
2,
117,
2,
83,
1,
248,
0,
75,
1,
138,
2,
106,
2,
66,
78,
92,
78,
245,
81,
26,
83,
130,
83,
7,
78,
12,
78,
71,
78,
141,
78,
215,
86,
12,
250,
110,
92,
115,
95,
15,
78,
135,
81,
14,
78,
46,
78,
147,
78,
194,
78,
201,
78,
200,
78,
152,
81,
252,
82,
108,
83,
185,
83,
32,
87,
3,
89,
44,
89,
16,
92,
255,
93,
225,
101,
179,
107,
204,
107,
20,
108,
63,
114,
49,
78,
60,
78,
232,
78,
220,
78,
233,
78,
225,
78,
221,
78,
218,
78,
12,
82,
28,
83,
76,
83,
34,
87,
35,
87,
23,
89,
47,
89,
129,
91,
132,
91,
18,
92,
59,
92,
116,
92,
115,
92,
4,
94,
128,
94,
130,
94,
201,
95,
9,
98,
80,
98,
21,
108,
54,
108,
67,
108,
63,
108,
59,
108,
174,
114,
176,
114,
138,
115,
184,
121,
138,
128,
30,
150,
14,
79,
24,
79,
44,
79,
245,
78,
20,
79,
241,
78,
0,
79,
247,
78,
8,
79,
29,
79,
2,
79,
5,
79,
34,
79,
19,
79,
4,
79,
244,
78,
18,
79,
177,
81,
19,
82,
9,
82,
16,
82,
166,
82,
34,
83,
31,
83,
77,
83,
138,
83,
7,
84,
225,
86,
223,
86,
46,
87,
42,
87,
52,
87,
60,
89,
128,
89,
124,
89,
133,
89,
123,
89,
126,
89,
119,
89,
127,
89,
86,
91,
21,
92,
37,
92,
124,
92,
122,
92,
123,
92,
126,
92,
223,
93,
117,
94,
132,
94,
2,
95,
26,
95,
116,
95,
213,
95,
212,
95,
207,
95,
92,
98,
94,
98,
100,
98,
97,
98,
102,
98,
98,
98,
89,
98,
96,
98,
90,
98,
101,
98,
239,
101,
238,
101,
62,
103,
57,
103,
56,
103,
59,
103,
58,
103,
63,
103,
60,
103,
51,
103,
24,
108,
70,
108,
82,
108,
92,
108,
79,
108,
74,
108,
84,
108,
75,
108,
76,
108,
113,
112,
94,
114,
180,
114,
181,
114,
142,
115,
42,
117,
127,
118,
117,
122,
81,
127,
120,
130,
124,
130,
128,
130,
125,
130,
127,
130,
77,
134,
126,
137,
153,
144,
151,
144,
152,
144,
155,
144,
148,
144,
34,
150,
36,
150,
32,
150,
35,
150,
86,
79,
59,
79,
98,
79,
73,
79,
83,
79,
100,
79,
62,
79,
103,
79,
82,
79,
95,
79,
65,
79,
88,
79,
45,
79,
51,
79,
63,
79,
97,
79,
143,
81,
185,
81,
28,
82,
30,
82,
33,
82,
173,
82,
174,
82,
9,
83,
99,
83,
114,
83,
142,
83,
143,
83,
48,
84,
55,
84,
42,
84,
84,
84,
69,
84,
25,
84,
28,
84,
37,
84,
24,
84,
61,
84,
79,
84,
65,
84,
40,
84,
36,
84,
71,
84,
238,
86,
231,
86,
229,
86,
65,
87,
69,
87,
76,
87,
73,
87,
75,
87,
82,
87,
6,
89,
64,
89,
166,
89,
152,
89,
160,
89,
151,
89,
142,
89,
162,
89,
144,
89,
143,
89,
167,
89,
161,
89,
142,
91,
146,
91,
40,
92,
42,
92,
141,
92,
143,
92,
136,
92,
139,
92,
137,
92,
146,
92,
138,
92,
134,
92,
147,
92,
149,
92,
224,
93,
10,
94,
14,
94,
139,
94,
137,
94,
140,
94,
136,
94,
141,
94,
5,
95,
29,
95,
120,
95,
118,
95,
210,
95,
209,
95,
208,
95,
237,
95,
232,
95,
238,
95,
243,
95,
225,
95,
228,
95,
227,
95,
250,
95,
239,
95,
247,
95,
251,
95,
0,
96,
244,
95,
58,
98,
131,
98,
140,
98,
142,
98,
143,
98,
148,
98,
135,
98,
113,
98,
123,
98,
122,
98,
112,
98,
129,
98,
136,
98,
119,
98,
125,
98,
114,
98,
116,
98,
55,
101,
240,
101,
244,
101,
243,
101,
242,
101,
245,
101,
69,
103,
71,
103,
89,
103,
85,
103,
76,
103,
72,
103,
93,
103,
77,
103,
90,
103,
75,
103,
208,
107,
25,
108,
26,
108,
120,
108,
103,
108,
107,
108,
132,
108,
139,
108,
143,
108,
113,
108,
111,
108,
105,
108,
154,
108,
109,
108,
135,
108,
149,
108,
156,
108,
102,
108,
115,
108,
101,
108,
123,
108,
142,
108,
116,
112,
122,
112,
99,
114,
191,
114,
189,
114,
195,
114,
198,
114,
193,
114,
186,
114,
197,
114,
149,
115,
151,
115,
147,
115,
148,
115,
146,
115,
58,
117,
57,
117,
148,
117,
149,
117,
129,
118,
61,
121,
52,
128,
149,
128,
153,
128,
144,
128,
146,
128,
156,
128,
144,
130,
143,
130,
133,
130,
142,
130,
145,
130,
147,
130,
138,
130,
131,
130,
132,
130,
120,
140,
201,
143,
191,
143,
159,
144,
161,
144,
165,
144,
158,
144,
167,
144,
160,
144,
48,
150,
40,
150,
47,
150,
45,
150,
51,
78,
152,
79,
124,
79,
133,
79,
125,
79,
128,
79,
135,
79,
118,
79,
116,
79,
137,
79,
132,
79,
119,
79,
76,
79,
151,
79,
106,
79,
154,
79,
121,
79,
129,
79,
120,
79,
144,
79,
156,
79,
148,
79,
158,
79,
146,
79,
130,
79,
149,
79,
107,
79,
110,
79,
158,
81,
188,
81,
190,
81,
53,
82,
50,
82,
51,
82,
70,
82,
49,
82,
188,
82,
10,
83,
11,
83,
60,
83,
146,
83,
148,
83,
135,
84,
127,
84,
129,
84,
145,
84,
130,
84,
136,
84,
107,
84,
122,
84,
126,
84,
101,
84,
108,
84,
116,
84,
102,
84,
141,
84,
111,
84,
97,
84,
96,
84,
152,
84,
99,
84,
103,
84,
100,
84,
247,
86,
249,
86,
111,
87,
114,
87,
109,
87,
107,
87,
113,
87,
112,
87,
118,
87,
128,
87,
117,
87,
123,
87,
115,
87,
116,
87,
98,
87,
104,
87,
125,
87,
12,
89,
69,
89,
181,
89,
186,
89,
207,
89,
206,
89,
178,
89,
204,
89,
193,
89,
182,
89,
188,
89,
195,
89,
214,
89,
177,
89,
189,
89,
192,
89,
200,
89,
180,
89,
199,
89,
98,
91,
101,
91,
147,
91,
149,
91,
68,
92,
71,
92,
174,
92,
164,
92,
160,
92,
181,
92,
175,
92,
168,
92,
172,
92,
159,
92,
163,
92,
173,
92,
162,
92,
170,
92,
167,
92,
157,
92,
165,
92,
182,
92,
176,
92,
166,
92,
23,
94,
20,
94,
25,
94,
40,
95,
34,
95,
35,
95,
36,
95,
84,
95,
130,
95,
126,
95,
125,
95,
222,
95,
229,
95,
45,
96,
38,
96,
25,
96,
50,
96,
11,
96,
52,
96,
10,
96,
23,
96,
51,
96,
26,
96,
30,
96,
44,
96,
34,
96,
13,
96,
16,
96,
46,
96,
19,
96,
17,
96,
12,
96,
9,
96,
28,
96,
20,
98,
61,
98,
173,
98,
180,
98,
209,
98,
190,
98,
170,
98,
182,
98,
202,
98,
174,
98,
179,
98,
175,
98,
187,
98,
169,
98,
176,
98,
184,
98,
61,
101,
168,
101,
187,
101,
9,
102,
252,
101,
4,
102,
18,
102,
8,
102,
251,
101,
3,
102,
11,
102,
13,
102,
5,
102,
253,
101,
17,
102,
16,
102,
246,
102,
10,
103,
133,
103,
108,
103,
142,
103,
146,
103,
118,
103,
123,
103,
152,
103,
134,
103,
132,
103,
116,
103,
141,
103,
140,
103,
122,
103,
159,
103,
145,
103,
153,
103,
131,
103,
125,
103,
129,
103,
120,
103,
121,
103,
148,
103,
37,
107,
128,
107,
126,
107,
222,
107,
29,
108,
147,
108,
236,
108,
235,
108,
238,
108,
217,
108,
182,
108,
212,
108,
173,
108,
231,
108,
183,
108,
208,
108,
194,
108,
186,
108,
195,
108,
198,
108,
237,
108,
242,
108,
210,
108,
221,
108,
180,
108,
138,
108,
157,
108,
128,
108,
222,
108,
192,
108,
48,
109,
205,
108,
199,
108,
176,
108,
249,
108,
207,
108,
233,
108,
209,
108,
148,
112,
152,
112,
133,
112,
147,
112,
134,
112,
132,
112,
145,
112,
150,
112,
130,
112,
154,
112,
131,
112,
106,
114,
214,
114,
203,
114,
216,
114,
201,
114,
220,
114,
210,
114,
212,
114,
218,
114,
204,
114,
209,
114,
164,
115,
161,
115,
173,
115,
166,
115,
162,
115,
160,
115,
172,
115,
157,
115,
221,
116,
232,
116,
63,
117,
64,
117,
62,
117,
140,
117,
152,
117,
175,
118,
243,
118,
241,
118,
240,
118,
245,
118,
248,
119,
252,
119,
249,
119,
251,
119,
250,
119,
247,
119,
66,
121,
63,
121,
197,
121,
120,
122,
123,
122,
251,
122,
117,
124,
253,
124,
53,
128,
143,
128,
174,
128,
163,
128,
184,
128,
181,
128,
173,
128,
32,
130,
160,
130,
192,
130,
171,
130,
154,
130,
152,
130,
155,
130,
181,
130,
167,
130,
174,
130,
188,
130,
158,
130,
186,
130,
180,
130,
168,
130,
161,
130,
169,
130,
194,
130,
164,
130,
195,
130,
182,
130,
162,
130,
112,
134,
111,
134,
109,
134,
110,
134,
86,
140,
210,
143,
203,
143,
211,
143,
205,
143,
214,
143,
213,
143,
215,
143,
178,
144,
180,
144,
175,
144,
179,
144,
176,
144,
57,
150,
61,
150,
60,
150,
58,
150,
67,
150,
205,
79,
197,
79,
211,
79,
178,
79,
201,
79,
203,
79,
193,
79,
212,
79,
220,
79,
217,
79,
187,
79,
179,
79,
219,
79,
199,
79,
214,
79,
186,
79,
192,
79,
185,
79,
236,
79,
68,
82,
73,
82,
192,
82,
194,
82,
61,
83,
124,
83,
151,
83,
150,
83,
153,
83,
152,
83,
186,
84,
161,
84,
173,
84,
165,
84,
207,
84,
195,
84,
13,
131,
183,
84,
174,
84,
214,
84,
182,
84,
197,
84,
198,
84,
160,
84,
112,
84,
188,
84,
162,
84,
190,
84,
114,
84,
222,
84,
176,
84,
181,
87,
158,
87,
159,
87,
164,
87,
140,
87,
151,
87,
157,
87,
155,
87,
148,
87,
152,
87,
143,
87,
153,
87,
165,
87,
154,
87,
149,
87,
244,
88,
13,
89,
83,
89,
225,
89,
222,
89,
238,
89,
0,
90,
241,
89,
221,
89,
250,
89,
253,
89,
252,
89,
246,
89,
228,
89,
242,
89,
247,
89,
219,
89,
233,
89,
243,
89,
245,
89,
224,
89,
254,
89,
244,
89,
237,
89,
168,
91,
76,
92,
208,
92,
216,
92,
204,
92,
215,
92,
203,
92,
219,
92,
222,
92,
218,
92,
201,
92,
199,
92,
202,
92,
214,
92,
211,
92,
212,
92,
207,
92,
200,
92,
198,
92,
206,
92,
223,
92,
248,
92,
249,
93,
33,
94,
34,
94,
35,
94,
32,
94,
36,
94,
176,
94,
164,
94,
162,
94,
155,
94,
163,
94,
165,
94,
7,
95,
46,
95,
86,
95,
134,
95,
55,
96,
57,
96,
84,
96,
114,
96,
94,
96,
69,
96,
83,
96,
71,
96,
73,
96,
91,
96,
76,
96,
64,
96,
66,
96,
95,
96,
36,
96,
68,
96,
88,
96,
102,
96,
110,
96,
66,
98,
67,
98,
207,
98,
13,
99,
11,
99,
245,
98,
14,
99,
3,
99,
235,
98,
249,
98,
15,
99,
12,
99,
248,
98,
246,
98,
0,
99,
19,
99,
20,
99,
250,
98,
21,
99,
251,
98,
240,
98,
65,
101,
67,
101,
170,
101,
191,
101,
54,
102,
33,
102,
50,
102,
53,
102,
28,
102,
38,
102,
34,
102,
51,
102,
43,
102,
58,
102,
29,
102,
52,
102,
57,
102,
46,
102,
15,
103,
16,
103,
193,
103,
242,
103,
200,
103,
186,
103,
220,
103,
187,
103,
248,
103,
216,
103,
192,
103,
183,
103,
197,
103,
235,
103,
228,
103,
223,
103,
181,
103,
205,
103,
179,
103,
247,
103,
246,
103,
238,
103,
227,
103,
194,
103,
185,
103,
206,
103,
231,
103,
240,
103,
178,
103,
252,
103,
198,
103,
237,
103,
204,
103,
174,
103,
230,
103,
219,
103,
250,
103,
201,
103,
202,
103,
195,
103,
234,
103,
203,
103,
40,
107,
130,
107,
132,
107,
182,
107,
214,
107,
216,
107,
224,
107,
32,
108,
33,
108,
40,
109,
52,
109,
45,
109,
31,
109,
60,
109,
63,
109,
18,
109,
10,
109,
218,
108,
51,
109,
4,
109,
25,
109,
58,
109,
26,
109,
17,
109,
0,
109,
29,
109,
66,
109,
1,
109,
24,
109,
55,
109,
3,
109,
15,
109,
64,
109,
7,
109,
32,
109,
44,
109,
8,
109,
34,
109,
9,
109,
16,
109,
183,
112,
159,
112,
190,
112,
177,
112,
176,
112,
161,
112,
180,
112,
181,
112,
169,
112,
65,
114,
73,
114,
74,
114,
108,
114,
112,
114,
115,
114,
110,
114,
202,
114,
228,
114,
232,
114,
235,
114,
223,
114,
234,
114,
230,
114,
227,
114,
133,
115,
204,
115,
194,
115,
200,
115,
197,
115,
185,
115,
182,
115,
181,
115,
180,
115,
235,
115,
191,
115,
199,
115,
190,
115,
195,
115,
198,
115,
184,
115,
203,
115,
236,
116,
238,
116,
46,
117,
71,
117,
72,
117,
167,
117,
170,
117,
121,
118,
196,
118,
8,
119,
3,
119,
4,
119,
5,
119,
10,
119,
247,
118,
251,
118,
250,
118,
231,
119,
232,
119,
6,
120,
17,
120,
18,
120,
5,
120,
16,
120,
15,
120,
14,
120,
9,
120,
3,
120,
19,
120,
74,
121,
76,
121,
75,
121,
69,
121,
68,
121,
213,
121,
205,
121,
207,
121,
214,
121,
206,
121,
128,
122,
126,
122,
209,
122,
0,
123,
1,
123,
122,
124,
120,
124,
121,
124,
127,
124,
128,
124,
129,
124,
3,
125,
8,
125,
1,
125,
88,
127,
145,
127,
141,
127,
190,
127,
7,
128,
14,
128,
15,
128,
20,
128,
55,
128,
216,
128,
199,
128,
224,
128,
209,
128,
200,
128,
194,
128,
208,
128,
197,
128,
227,
128,
217,
128,
220,
128,
202,
128,
213,
128,
201,
128,
207,
128,
215,
128,
230,
128,
205,
128,
255,
129,
33,
130,
148,
130,
217,
130,
254,
130,
249,
130,
7,
131,
232,
130,
0,
131,
213,
130,
58,
131,
235,
130,
214,
130,
244,
130,
236,
130,
225,
130,
242,
130,
245,
130,
12,
131,
251,
130,
246,
130,
240,
130,
234,
130,
228,
130,
224,
130,
250,
130,
243,
130,
237,
130,
119,
134,
116,
134,
124,
134,
115,
134,
65,
136,
78,
136,
103,
136,
106,
136,
105,
136,
211,
137,
4,
138,
7,
138,
114,
141,
227,
143,
225,
143,
238,
143,
224,
143,
241,
144,
189,
144,
191,
144,
213,
144,
197,
144,
190,
144,
199,
144,
203,
144,
200,
144,
212,
145,
211,
145,
84,
150,
79,
150,
81,
150,
83,
150,
74,
150,
78,
150,
30,
80,
5,
80,
7,
80,
19,
80,
34,
80,
48,
80,
27,
80,
245,
79,
244,
79,
51,
80,
55,
80,
44,
80,
246,
79,
247,
79,
23,
80,
28,
80,
32,
80,
39,
80,
53,
80,
47,
80,
49,
80,
14,
80,
90,
81,
148,
81,
147,
81,
202,
81,
196,
81,
197,
81,
200,
81,
206,
81,
97,
82,
90,
82,
82,
82,
94,
82,
95,
82,
85,
82,
98,
82,
205,
82,
14,
83,
158,
83,
38,
85,
226,
84,
23,
85,
18,
85,
231,
84,
243,
84,
228,
84,
26,
85,
255,
84,
4,
85,
8,
85,
235,
84,
17,
85,
5,
85,
241,
84,
10,
85,
251,
84,
247,
84,
248,
84,
224,
84,
14,
85,
3,
85,
11,
85,
1,
87,
2,
87,
204,
87,
50,
88,
213,
87,
210,
87,
186,
87,
198,
87,
189,
87,
188,
87,
184,
87,
182,
87,
191,
87,
199,
87,
208,
87,
185,
87,
193,
87,
14,
89,
74,
89,
25,
90,
22,
90,
45,
90,
46,
90,
21,
90,
15,
90,
23,
90,
10,
90,
30,
90,
51,
90,
108,
91,
167,
91,
173,
91,
172,
91,
3,
92,
86,
92,
84,
92,
236,
92,
255,
92,
238,
92,
241,
92,
247,
92,
0,
93,
249,
92,
41,
94,
40,
94,
168,
94,
174,
94,
170,
94,
172,
94,
51,
95,
48,
95,
103,
95,
93,
96,
90,
96,
103,
96,
65,
96,
162,
96,
136,
96,
128,
96,
146,
96,
129,
96,
157,
96,
131,
96,
149,
96,
155,
96,
151,
96,
135,
96,
156,
96,
142,
96,
25,
98,
70,
98,
242,
98,
16,
99,
86,
99,
44,
99,
68,
99,
69,
99,
54,
99,
67,
99,
228,
99,
57,
99,
75,
99,
74,
99,
60,
99,
41,
99,
65,
99,
52,
99,
88,
99,
84,
99,
89,
99,
45,
99,
71,
99,
51,
99,
90,
99,
81,
99,
56,
99,
87,
99,
64,
99,
72,
99,
74,
101,
70,
101,
198,
101,
195,
101,
196,
101,
194,
101,
74,
102,
95,
102,
71,
102,
81,
102,
18,
103,
19,
103,
31,
104,
26,
104,
73,
104,
50,
104,
51,
104,
59,
104,
75,
104,
79,
104,
22,
104,
49,
104,
28,
104,
53,
104,
43,
104,
45,
104,
47,
104,
78,
104,
68,
104,
52,
104,
29,
104,
18,
104,
20,
104,
38,
104,
40,
104,
46,
104,
77,
104,
58,
104,
37,
104,
32,
104,
44,
107,
47,
107,
45,
107,
49,
107,
52,
107,
109,
107,
130,
128,
136,
107,
230,
107,
228,
107,
232,
107,
227,
107,
226,
107,
231,
107,
37,
108,
122,
109,
99,
109,
100,
109,
118,
109,
13,
109,
97,
109,
146,
109,
88,
109,
98,
109,
109,
109,
111,
109,
145,
109,
141,
109,
239,
109,
127,
109,
134,
109,
94,
109,
103,
109,
96,
109,
151,
109,
112,
109,
124,
109,
95,
109,
130,
109,
152,
109,
47,
109,
104,
109,
139,
109,
126,
109,
128,
109,
132,
109,
22,
109,
131,
109,
123,
109,
125,
109,
117,
109,
144,
109,
220,
112,
211,
112,
209,
112,
221,
112,
203,
112,
57,
127,
226,
112,
215,
112,
210,
112,
222,
112,
224,
112,
212,
112,
205,
112,
197,
112,
198,
112,
199,
112,
218,
112,
206,
112,
225,
112,
66,
114,
120,
114,
119,
114,
118,
114,
0,
115,
250,
114,
244,
114,
254,
114,
246,
114,
243,
114,
251,
114,
1,
115,
211,
115,
217,
115,
229,
115,
214,
115,
188,
115,
231,
115,
227,
115,
233,
115,
220,
115,
210,
115,
219,
115,
212,
115,
221,
115,
218,
115,
215,
115,
216,
115,
232,
115,
222,
116,
223,
116,
244,
116,
245,
116,
33,
117,
91,
117,
95,
117,
176,
117,
193,
117,
187,
117,
196,
117,
192,
117,
191,
117,
182,
117,
186,
117,
138,
118,
201,
118,
29,
119,
27,
119,
16,
119,
19,
119,
18,
119,
35,
119,
17,
119,
21,
119,
25,
119,
26,
119,
34,
119,
39,
119,
35,
120,
44,
120,
34,
120,
53,
120,
47,
120,
40,
120,
46,
120,
43,
120,
33,
120,
41,
120,
51,
120,
42,
120,
49,
120,
84,
121,
91,
121,
79,
121,
92,
121,
83,
121,
82,
121,
81,
121,
235,
121,
236,
121,
224,
121,
238,
121,
237,
121,
234,
121,
220,
121,
222,
121,
221,
121,
134,
122,
137,
122,
133,
122,
139,
122,
140,
122,
138,
122,
135,
122,
216,
122,
16,
123,
4,
123,
19,
123,
5,
123,
15,
123,
8,
123,
10,
123,
14,
123,
9,
123,
18,
123,
132,
124,
145,
124,
138,
124,
140,
124,
136,
124,
141,
124,
133,
124,
30,
125,
29,
125,
17,
125,
14,
125,
24,
125,
22,
125,
19,
125,
31,
125,
18,
125,
15,
125,
12,
125,
92,
127,
97,
127,
94,
127,
96,
127,
93,
127,
91,
127,
150,
127,
146,
127,
195,
127,
194,
127,
192,
127,
22,
128,
62,
128,
57,
128,
250,
128,
242,
128,
249,
128,
245,
128,
1,
129,
251,
128,
0,
129,
1,
130,
47,
130,
37,
130,
51,
131,
45,
131,
68,
131,
25,
131,
81,
131,
37,
131,
86,
131,
63,
131,
65,
131,
38,
131,
28,
131,
34,
131,
66,
131,
78,
131,
27,
131,
42,
131,
8,
131,
60,
131,
77,
131,
22,
131,
36,
131,
32,
131,
55,
131,
47,
131,
41,
131,
71,
131,
69,
131,
76,
131,
83,
131,
30,
131,
44,
131,
75,
131,
39,
131,
72,
131,
83,
134,
82,
134,
162,
134,
168,
134,
150,
134,
141,
134,
145,
134,
158,
134,
135,
134,
151,
134,
134,
134,
139,
134,
154,
134,
133,
134,
165,
134,
153,
134,
161,
134,
167,
134,
149,
134,
152,
134,
142,
134,
157,
134,
144,
134,
148,
134,
67,
136,
68,
136,
109,
136,
117,
136,
118,
136,
114,
136,
128,
136,
113,
136,
127,
136,
111,
136,
131,
136,
126,
136,
116,
136,
124,
136,
18,
138,
71,
140,
87,
140,
123,
140,
164,
140,
163,
140,
118,
141,
120,
141,
181,
141,
183,
141,
182,
141,
209,
142,
211,
142,
254,
143,
245,
143,
2,
144,
255,
143,
251,
143,
4,
144,
252,
143,
246,
143,
214,
144,
224,
144,
217,
144,
218,
144,
227,
144,
223,
144,
229,
144,
216,
144,
219,
144,
215,
144,
220,
144,
228,
144,
80,
145,
78,
145,
79,
145,
213,
145,
226,
145,
218,
145,
92,
150,
95,
150,
188,
150,
227,
152,
223,
154,
47,
155,
127,
78,
112,
80,
106,
80,
97,
80,
94,
80,
96,
80,
83,
80,
75,
80,
93,
80,
114,
80,
72,
80,
77,
80,
65,
80,
91,
80,
74,
80,
98,
80,
21,
80,
69,
80,
95,
80,
105,
80,
107,
80,
99,
80,
100,
80,
70,
80,
64,
80,
110,
80,
115,
80,
87,
80,
81,
80,
208,
81,
107,
82,
109,
82,
108,
82,
110,
82,
214,
82,
211,
82,
45,
83,
156,
83,
117,
85,
118,
85,
60,
85,
77,
85,
80,
85,
52,
85,
42,
85,
81,
85,
98,
85,
54,
85,
53,
85,
48,
85,
82,
85,
69,
85,
12,
85,
50,
85,
101,
85,
78,
85,
57,
85,
72,
85,
45,
85,
59,
85,
64,
85,
75,
85,
10,
87,
7,
87,
251,
87,
20,
88,
226,
87,
246,
87,
220,
87,
244,
87,
0,
88,
237,
87,
253,
87,
8,
88,
248,
87,
11,
88,
243,
87,
207,
87,
7,
88,
238,
87,
227,
87,
242,
87,
229,
87,
236,
87,
225,
87,
14,
88,
252,
87,
16,
88,
231,
87,
1,
88,
12,
88,
241,
87,
233,
87,
240,
87,
13,
88,
4,
88,
92,
89,
96,
90,
88,
90,
85,
90,
103,
90,
94,
90,
56,
90,
53,
90,
109,
90,
80,
90,
95,
90,
101,
90,
108,
90,
83,
90,
100,
90,
87,
90,
67,
90,
93,
90,
82,
90,
68,
90,
91,
90,
72,
90,
142,
90,
62,
90,
77,
90,
57,
90,
76,
90,
112,
90,
105,
90,
71,
90,
81,
90,
86,
90,
66,
90,
92,
90,
114,
91,
110,
91,
193,
91,
192,
91,
89,
92,
30,
93,
11,
93,
29,
93,
26,
93,
32,
93,
12,
93,
40,
93,
13,
93,
38,
93,
37,
93,
15,
93,
48,
93,
18,
93,
35,
93,
31,
93,
46,
93,
62,
94,
52,
94,
177,
94,
180,
94,
185,
94,
178,
94,
179,
94,
54,
95,
56,
95,
155,
95,
150,
95,
159,
95,
138,
96,
144,
96,
134,
96,
190,
96,
176,
96,
186,
96,
211,
96,
212,
96,
207,
96,
228,
96,
217,
96,
221,
96,
200,
96,
177,
96,
219,
96,
183,
96,
202,
96,
191,
96,
195,
96,
205,
96,
192,
96,
50,
99,
101,
99,
138,
99,
130,
99,
125,
99,
189,
99,
158,
99,
173,
99,
157,
99,
151,
99,
171,
99,
142,
99,
111,
99,
135,
99,
144,
99,
110,
99,
175,
99,
117,
99,
156,
99,
109,
99,
174,
99,
124,
99,
164,
99,
59,
99,
159,
99,
120,
99,
133,
99,
129,
99,
145,
99,
141,
99,
112,
99,
83,
101,
205,
101,
101,
102,
97,
102,
91,
102,
89,
102,
92,
102,
98,
102,
24,
103,
121,
104,
135,
104,
144,
104,
156,
104,
109,
104,
110,
104,
174,
104,
171,
104,
86,
105,
111,
104,
163,
104,
172,
104,
169,
104,
117,
104,
116,
104,
178,
104,
143,
104,
119,
104,
146,
104,
124,
104,
107,
104,
114,
104,
170,
104,
128,
104,
113,
104,
126,
104,
155,
104,
150,
104,
139,
104,
160,
104,
137,
104,
164,
104,
120,
104,
123,
104,
145,
104,
140,
104,
138,
104,
125,
104,
54,
107,
51,
107,
55,
107,
56,
107,
145,
107,
143,
107,
141,
107,
142,
107,
140,
107,
42,
108,
192,
109,
171,
109,
180,
109,
179,
109,
116,
110,
172,
109,
233,
109,
226,
109,
183,
109,
246,
109,
212,
109,
0,
110,
200,
109,
224,
109,
223,
109,
214,
109,
190,
109,
229,
109,
220,
109,
221,
109,
219,
109,
244,
109,
202,
109,
189,
109,
237,
109,
240,
109,
186,
109,
213,
109,
194,
109,
207,
109,
201,
109,
208,
109,
242,
109,
211,
109,
253,
109,
215,
109,
205,
109,
227,
109,
187,
109,
250,
112,
13,
113,
247,
112,
23,
113,
244,
112,
12,
113,
240,
112,
4,
113,
243,
112,
16,
113,
252,
112,
255,
112,
6,
113,
19,
113,
0,
113,
248,
112,
246,
112,
11,
113,
2,
113,
14,
113,
126,
114,
123,
114,
124,
114,
127,
114,
29,
115,
23,
115,
7,
115,
17,
115,
24,
115,
10,
115,
8,
115,
255,
114,
15,
115,
30,
115,
136,
115,
246,
115,
248,
115,
245,
115,
4,
116,
1,
116,
253,
115,
7,
116,
0,
116,
250,
115,
252,
115,
255,
115,
12,
116,
11,
116,
244,
115,
8,
116,
100,
117,
99,
117,
206,
117,
210,
117,
207,
117,
203,
117,
204,
117,
209,
117,
208,
117,
143,
118,
137,
118,
211,
118,
57,
119,
47,
119,
45,
119,
49,
119,
50,
119,
52,
119,
51,
119,
61,
119,
37,
119,
59,
119,
53,
119,
72,
120,
82,
120,
73,
120,
77,
120,
74,
120,
76,
120,
38,
120,
69,
120,
80,
120,
100,
121,
103,
121,
105,
121,
106,
121,
99,
121,
107,
121,
97,
121,
187,
121,
250,
121,
248,
121,
246,
121,
247,
121,
143,
122,
148,
122,
144,
122,
53,
123,
71,
123,
52,
123,
37,
123,
48,
123,
34,
123,
36,
123,
51,
123,
24,
123,
42,
123,
29,
123,
49,
123,
43,
123,
45,
123,
47,
123,
50,
123,
56,
123,
26,
123,
35,
123,
148,
124,
152,
124,
150,
124,
163,
124,
53,
125,
61,
125,
56,
125,
54,
125,
58,
125,
69,
125,
44,
125,
41,
125,
65,
125,
71,
125,
62,
125,
63,
125,
74,
125,
59,
125,
40,
125,
99,
127,
149,
127,
156,
127,
157,
127,
155,
127,
202,
127,
203,
127,
205,
127,
208,
127,
209,
127,
199,
127,
207,
127,
201,
127,
31,
128,
30,
128,
27,
128,
71,
128,
67,
128,
72,
128,
24,
129,
37,
129,
25,
129,
27,
129,
45,
129,
31,
129,
44,
129,
30,
129,
33,
129,
21,
129,
39,
129,
29,
129,
34,
129,
17,
130,
56,
130,
51,
130,
58,
130,
52,
130,
50,
130,
116,
130,
144,
131,
163,
131,
168,
131,
141,
131,
122,
131,
115,
131,
164,
131,
116,
131,
143,
131,
129,
131,
149,
131,
153,
131,
117,
131,
148,
131,
169,
131,
125,
131,
131,
131,
140,
131,
157,
131,
155,
131,
170,
131,
139,
131,
126,
131,
165,
131,
175,
131,
136,
131,
151,
131,
176,
131,
127,
131,
166,
131,
135,
131,
174,
131,
118,
131,
154,
131,
89,
134,
86,
134,
191,
134,
183,
134,
194,
134,
193,
134,
197,
134,
186,
134,
176,
134,
200,
134,
185,
134,
179,
134,
184,
134,
204,
134,
180,
134,
187,
134,
188,
134,
195,
134,
189,
134,
190,
134,
82,
136,
137,
136,
149,
136,
168,
136,
162,
136,
170,
136,
154,
136,
145,
136,
161,
136,
159,
136,
152,
136,
167,
136,
153,
136,
155,
136,
151,
136,
164,
136,
172,
136,
140,
136,
147,
136,
142,
136,
130,
137,
214,
137,
217,
137,
213,
137,
48,
138,
39,
138,
44,
138,
30,
138,
57,
140,
59,
140,
92,
140,
93,
140,
125,
140,
165,
140,
125,
141,
123,
141,
121,
141,
188,
141,
194,
141,
185,
141,
191,
141,
193,
141,
216,
142,
222,
142,
221,
142,
220,
142,
215,
142,
224,
142,
225,
142,
36,
144,
11,
144,
17,
144,
28,
144,
12,
144,
33,
144,
239,
144,
234,
144,
240,
144,
244,
144,
242,
144,
243,
144,
212,
144,
235,
144,
236,
144,
233,
144,
86,
145,
88,
145,
90,
145,
83,
145,
85,
145,
236,
145,
244,
145,
241,
145,
243,
145,
248,
145,
228,
145,
249,
145,
234,
145,
235,
145,
247,
145,
232,
145,
238,
145,
122,
149,
134,
149,
136,
149,
124,
150,
109,
150,
107,
150,
113,
150,
111,
150,
191,
150,
106,
151,
4,
152,
229,
152,
151,
153,
155,
80,
149,
80,
148,
80,
158,
80,
139,
80,
163,
80,
131,
80,
140,
80,
142,
80,
157,
80,
104,
80,
156,
80,
146,
80,
130,
80,
135,
80,
95,
81,
212,
81,
18,
83,
17,
83,
164,
83,
167,
83,
145,
85,
168,
85,
165,
85,
173,
85,
119,
85,
69,
86,
162,
85,
147,
85,
136,
85,
143,
85,
181,
85,
129,
85,
163,
85,
146,
85,
164,
85,
125,
85,
140,
85,
166,
85,
127,
85,
149,
85,
161,
85,
142,
85,
12,
87,
41,
88,
55,
88,
25,
88,
30,
88,
39,
88,
35,
88,
40,
88,
245,
87,
72,
88,
37,
88,
28,
88,
27,
88,
51,
88,
63,
88,
54,
88,
46,
88,
57,
88,
56,
88,
45,
88,
44,
88,
59,
88,
97,
89,
175,
90,
148,
90,
159,
90,
122,
90,
162,
90,
158,
90,
120,
90,
166,
90,
124,
90,
165,
90,
172,
90,
149,
90,
174,
90,
55,
90,
132,
90,
138,
90,
151,
90,
131,
90,
139,
90,
169,
90,
123,
90,
125,
90,
140,
90,
156,
90,
143,
90,
147,
90,
157,
90,
234,
91,
205,
91,
203,
91,
212,
91,
209,
91,
202,
91,
206,
91,
12,
92,
48,
92,
55,
93,
67,
93,
107,
93,
65,
93,
75,
93,
63,
93,
53,
93,
81,
93,
78,
93,
85,
93,
51,
93,
58,
93,
82,
93,
61,
93,
49,
93,
89,
93,
66,
93,
57,
93,
73,
93,
56,
93,
60,
93,
50,
93,
54,
93,
64,
93,
69,
93,
68,
94,
65,
94,
88,
95,
166,
95,
165,
95,
171,
95,
201,
96,
185,
96,
204,
96,
226,
96,
206,
96,
196,
96,
20,
97,
242,
96,
10,
97,
22,
97,
5,
97,
245,
96,
19,
97,
248,
96,
252,
96,
254,
96,
193,
96,
3,
97,
24,
97,
29,
97,
16,
97,
255,
96,
4,
97,
11,
97,
74,
98,
148,
99,
177,
99,
176,
99,
206,
99,
229,
99,
232,
99,
239,
99,
195,
99,
157,
100,
243,
99,
202,
99,
224,
99,
246,
99,
213,
99,
242,
99,
245,
99,
97,
100,
223,
99,
190,
99,
221,
99,
220,
99,
196,
99,
216,
99,
211,
99,
194,
99,
199,
99,
204,
99,
203,
99,
200,
99,
240,
99,
215,
99,
217,
99,
50,
101,
103,
101,
106,
101,
100,
101,
92,
101,
104,
101,
101,
101,
140,
101,
157,
101,
158,
101,
174,
101,
208,
101,
210,
101,
124,
102,
108,
102,
123,
102,
128,
102,
113,
102,
121,
102,
106,
102,
114,
102,
1,
103,
12,
105,
211,
104,
4,
105,
220,
104,
42,
105,
236,
104,
234,
104,
241,
104,
15,
105,
214,
104,
247,
104,
235,
104,
228,
104,
246,
104,
19,
105,
16,
105,
243,
104,
225,
104,
7,
105,
204,
104,
8,
105,
112,
105,
180,
104,
17,
105,
239,
104,
198,
104,
20,
105,
248,
104,
208,
104,
253,
104,
252,
104,
232,
104,
11,
105,
10,
105,
23,
105,
206,
104,
200,
104,
221,
104,
222,
104,
230,
104,
244,
104,
209,
104,
6,
105,
212,
104,
233,
104,
21,
105,
37,
105,
199,
104,
57,
107,
59,
107,
63,
107,
60,
107,
148,
107,
151,
107,
153,
107,
149,
107,
189,
107,
240,
107,
242,
107,
243,
107,
48,
108,
252,
109,
70,
110,
71,
110,
31,
110,
73,
110,
136,
110,
60,
110,
61,
110,
69,
110,
98,
110,
43,
110,
63,
110,
65,
110,
93,
110,
115,
110,
28,
110,
51,
110,
75,
110,
64,
110,
81,
110,
59,
110,
3,
110,
46,
110,
94,
110,
104,
110,
92,
110,
97,
110,
49,
110,
40,
110,
96,
110,
113,
110,
107,
110,
57,
110,
34,
110,
48,
110,
83,
110,
101,
110,
39,
110,
120,
110,
100,
110,
119,
110,
85,
110,
121,
110,
82,
110,
102,
110,
53,
110,
54,
110,
90,
110,
32,
113,
30,
113,
47,
113,
251,
112,
46,
113,
49,
113,
35,
113,
37,
113,
34,
113,
50,
113,
31,
113,
40,
113,
58,
113,
27,
113,
75,
114,
90,
114,
136,
114,
137,
114,
134,
114,
133,
114,
139,
114,
18,
115,
11,
115,
48,
115,
34,
115,
49,
115,
51,
115,
39,
115,
50,
115,
45,
115,
38,
115,
35,
115,
53,
115,
12,
115,
46,
116,
44,
116,
48,
116,
43,
116,
22,
116,
26,
116,
33,
116,
45,
116,
49,
116,
36,
116,
35,
116,
29,
116,
41,
116,
32,
116,
50,
116,
251,
116,
47,
117,
111,
117,
108,
117,
231,
117,
218,
117,
225,
117,
230,
117,
221,
117,
223,
117,
228,
117,
215,
117,
149,
118,
146,
118,
218,
118,
70,
119,
71,
119,
68,
119,
77,
119,
69,
119,
74,
119,
78,
119,
75,
119,
76,
119,
222,
119,
236,
119,
96,
120,
100,
120,
101,
120,
92,
120,
109,
120,
113,
120,
106,
120,
110,
120,
112,
120,
105,
120,
104,
120,
94,
120,
98,
120,
116,
121,
115,
121,
114,
121,
112,
121,
2,
122,
10,
122,
3,
122,
12,
122,
4,
122,
153,
122,
230,
122,
228,
122,
74,
123,
59,
123,
68,
123,
72,
123,
76,
123,
78,
123,
64,
123,
88,
123,
69,
123,
162,
124,
158,
124,
168,
124,
161,
124,
88,
125,
111,
125,
99,
125,
83,
125,
86,
125,
103,
125,
106,
125,
79,
125,
109,
125,
92,
125,
107,
125,
82,
125,
84,
125,
105,
125,
81,
125,
95,
125,
78,
125,
62,
127,
63,
127,
101,
127,
102,
127,
162,
127,
160,
127,
161,
127,
215,
127,
81,
128,
79,
128,
80,
128,
254,
128,
212,
128,
67,
129,
74,
129,
82,
129,
79,
129,
71,
129,
61,
129,
77,
129,
58,
129,
230,
129,
238,
129,
247,
129,
248,
129,
249,
129,
4,
130,
60,
130,
61,
130,
63,
130,
117,
130,
59,
131,
207,
131,
249,
131,
35,
132,
192,
131,
232,
131,
18,
132,
231,
131,
228,
131,
252,
131,
246,
131,
16,
132,
198,
131,
200,
131,
235,
131,
227,
131,
191,
131,
1,
132,
221,
131,
229,
131,
216,
131,
255,
131,
225,
131,
203,
131,
206,
131,
214,
131,
245,
131,
201,
131,
9,
132,
15,
132,
222,
131,
17,
132,
6,
132,
194,
131,
243,
131,
213,
131,
250,
131,
199,
131,
209,
131,
234,
131,
19,
132,
195,
131,
236,
131,
238,
131,
196,
131,
251,
131,
215,
131,
226,
131,
27,
132,
219,
131,
254,
131,
216,
134,
226,
134,
230,
134,
211,
134,
227,
134,
218,
134,
234,
134,
221,
134,
235,
134,
220,
134,
236,
134,
233,
134,
215,
134,
232,
134,
209,
134,
72,
136,
86,
136,
85,
136,
186,
136,
215,
136,
185,
136,
184,
136,
192,
136,
190,
136,
182,
136,
188,
136,
183,
136,
189,
136,
178,
136,
1,
137,
201,
136,
149,
137,
152,
137,
151,
137,
221,
137,
218,
137,
219,
137,
78,
138,
77,
138,
57,
138,
89,
138,
64,
138,
87,
138,
88,
138,
68,
138,
69,
138,
82,
138,
72,
138,
81,
138,
74,
138,
76,
138,
79,
138,
95,
140,
129,
140,
128,
140,
186,
140,
190,
140,
176,
140,
185,
140,
181,
140,
132,
141,
128,
141,
137,
141,
216,
141,
211,
141,
205,
141,
199,
141,
214,
141,
220,
141,
207,
141,
213,
141,
217,
141,
200,
141,
215,
141,
197,
141,
239,
142,
247,
142,
250,
142,
249,
142,
230,
142,
238,
142,
229,
142,
245,
142,
231,
142,
232,
142,
246,
142,
235,
142,
241,
142,
236,
142,
244,
142,
233,
142,
45,
144,
52,
144,
47,
144,
6,
145,
44,
145,
4,
145,
255,
144,
252,
144,
8,
145,
249,
144,
251,
144,
1,
145,
0,
145,
7,
145,
5,
145,
3,
145,
97,
145,
100,
145,
95,
145,
98,
145,
96,
145,
1,
146,
10,
146,
37,
146,
3,
146,
26,
146,
38,
146,
15,
146,
12,
146,
0,
146,
18,
146,
255,
145,
253,
145,
6,
146,
4,
146,
39,
146,
2,
146,
28,
146,
36,
146,
25,
146,
23,
146,
5,
146,
22,
146,
123,
149,
141,
149,
140,
149,
144,
149,
135,
150,
126,
150,
136,
150,
137,
150,
131,
150,
128,
150,
194,
150,
200,
150,
195,
150,
241,
150,
240,
150,
108,
151,
112,
151,
110,
151,
7,
152,
169,
152,
235,
152,
230,
156,
249,
158,
131,
78,
132,
78,
182,
78,
189,
80,
191,
80,
198,
80,
174,
80,
196,
80,
202,
80,
180,
80,
200,
80,
194,
80,
176,
80,
193,
80,
186,
80,
177,
80,
203,
80,
201,
80,
182,
80,
184,
80,
215,
81,
122,
82,
120,
82,
123,
82,
124,
82,
195,
85,
219,
85,
204,
85,
208,
85,
203,
85,
202,
85,
221,
85,
192,
85,
212,
85,
196,
85,
233,
85,
191,
85,
210,
85,
141,
85,
207,
85,
213,
85,
226,
85,
214,
85,
200,
85,
242,
85,
205,
85,
217,
85,
194,
85,
20,
87,
83,
88,
104,
88,
100,
88,
79,
88,
77,
88,
73,
88,
111,
88,
85,
88,
78,
88,
93,
88,
89,
88,
101,
88,
91,
88,
61,
88,
99,
88,
113,
88,
252,
88,
199,
90,
196,
90,
203,
90,
186,
90,
184,
90,
177,
90,
181,
90,
176,
90,
191,
90,
200,
90,
187,
90,
198,
90,
183,
90,
192,
90,
202,
90,
180,
90,
182,
90,
205,
90,
185,
90,
144,
90,
214,
91,
216,
91,
217,
91,
31,
92,
51,
92,
113,
93,
99,
93,
74,
93,
101,
93,
114,
93,
108,
93,
94,
93,
104,
93,
103,
93,
98,
93,
240,
93,
79,
94,
78,
94,
74,
94,
77,
94,
75,
94,
197,
94,
204,
94,
198,
94,
203,
94,
199,
94,
64,
95,
175,
95,
173,
95,
247,
96,
73,
97,
74,
97,
43,
97,
69,
97,
54,
97,
50,
97,
46,
97,
70,
97,
47,
97,
79,
97,
41,
97,
64,
97,
32,
98,
104,
145,
35,
98,
37,
98,
36,
98,
197,
99,
241,
99,
235,
99,
16,
100,
18,
100,
9,
100,
32,
100,
36,
100,
51,
100,
67,
100,
31,
100,
21,
100,
24,
100,
57,
100,
55,
100,
34,
100,
35,
100,
12,
100,
38,
100,
48,
100,
40,
100,
65,
100,
53,
100,
47,
100,
10,
100,
26,
100,
64,
100,
37,
100,
39,
100,
11,
100,
231,
99,
27,
100,
46,
100,
33,
100,
14,
100,
111,
101,
146,
101,
211,
101,
134,
102,
140,
102,
149,
102,
144,
102,
139,
102,
138,
102,
153,
102,
148,
102,
120,
102,
32,
103,
102,
105,
95,
105,
56,
105,
78,
105,
98,
105,
113,
105,
63,
105,
69,
105,
106,
105,
57,
105,
66,
105,
87,
105,
89,
105,
122,
105,
72,
105,
73,
105,
53,
105,
108,
105,
51,
105,
61,
105,
101,
105,
240,
104,
120,
105,
52,
105,
105,
105,
64,
105,
111,
105,
68,
105,
118,
105,
88,
105,
65,
105,
116,
105,
76,
105,
59,
105,
75,
105,
55,
105,
92,
105,
79,
105,
81,
105,
50,
105,
82,
105,
47,
105,
123,
105,
60,
105,
70,
107,
69,
107,
67,
107,
66,
107,
72,
107,
65,
107,
155,
107,
13,
250,
251,
107,
252,
107,
249,
107,
247,
107,
248,
107,
155,
110,
214,
110,
200,
110,
143,
110,
192,
110,
159,
110,
147,
110,
148,
110,
160,
110,
177,
110,
185,
110,
198,
110,
210,
110,
189,
110,
193,
110,
158,
110,
201,
110,
183,
110,
176,
110,
205,
110,
166,
110,
207,
110,
178,
110,
190,
110,
195,
110,
220,
110,
216,
110,
153,
110,
146,
110,
142,
110,
141,
110,
164,
110,
161,
110,
191,
110,
179,
110,
208,
110,
202,
110,
151,
110,
174,
110,
163,
110,
71,
113,
84,
113,
82,
113,
99,
113,
96,
113,
65,
113,
93,
113,
98,
113,
114,
113,
120,
113,
106,
113,
97,
113,
66,
113,
88,
113,
67,
113,
75,
113,
112,
113,
95,
113,
80,
113,
83,
113,
68,
113,
77,
113,
90,
113,
79,
114,
141,
114,
140,
114,
145,
114,
144,
114,
142,
114,
60,
115,
66,
115,
59,
115,
58,
115,
64,
115,
74,
115,
73,
115,
68,
116,
74,
116,
75,
116,
82,
116,
81,
116,
87,
116,
64,
116,
79,
116,
80,
116,
78,
116,
66,
116,
70,
116,
77,
116,
84,
116,
225,
116,
255,
116,
254,
116,
253,
116,
29,
117,
121,
117,
119,
117,
131,
105,
239,
117,
15,
118,
3,
118,
247,
117,
254,
117,
252,
117,
249,
117,
248,
117,
16,
118,
251,
117,
246,
117,
237,
117,
245,
117,
253,
117,
153,
118,
181,
118,
221,
118,
85,
119,
95,
119,
96,
119,
82,
119,
86,
119,
90,
119,
105,
119,
103,
119,
84,
119,
89,
119,
109,
119,
224,
119,
135,
120,
154,
120,
148,
120,
143,
120,
132,
120,
149,
120,
133,
120,
134,
120,
161,
120,
131,
120,
121,
120,
153,
120,
128,
120,
150,
120,
123,
120,
124,
121,
130,
121,
125,
121,
121,
121,
17,
122,
24,
122,
25,
122,
18,
122,
23,
122,
21,
122,
34,
122,
19,
122,
27,
122,
16,
122,
163,
122,
162,
122,
158,
122,
235,
122,
102,
123,
100,
123,
109,
123,
116,
123,
105,
123,
114,
123,
101,
123,
115,
123,
113,
123,
112,
123,
97,
123,
120,
123,
118,
123,
99,
123,
178,
124,
180,
124,
175,
124,
136,
125,
134,
125,
128,
125,
141,
125,
127,
125,
133,
125,
122,
125,
142,
125,
123,
125,
131,
125,
124,
125,
140,
125,
148,
125,
132,
125,
125,
125,
146,
125,
109,
127,
107,
127,
103,
127,
104,
127,
108,
127,
166,
127,
165,
127,
167,
127,
219,
127,
220,
127,
33,
128,
100,
129,
96,
129,
119,
129,
92,
129,
105,
129,
91,
129,
98,
129,
114,
129,
33,
103,
94,
129,
118,
129,
103,
129,
111,
129,
68,
129,
97,
129,
29,
130,
73,
130,
68,
130,
64,
130,
66,
130,
69,
130,
241,
132,
63,
132,
86,
132,
118,
132,
121,
132,
143,
132,
141,
132,
101,
132,
81,
132,
64,
132,
134,
132,
103,
132,
48,
132,
77,
132,
125,
132,
90,
132,
89,
132,
116,
132,
115,
132,
93,
132,
7,
133,
94,
132,
55,
132,
58,
132,
52,
132,
122,
132,
67,
132,
120,
132,
50,
132,
69,
132,
41,
132,
217,
131,
75,
132,
47,
132,
66,
132,
45,
132,
95,
132,
112,
132,
57,
132,
78,
132,
76,
132,
82,
132,
111,
132,
197,
132,
142,
132,
59,
132,
71,
132,
54,
132,
51,
132,
104,
132,
126,
132,
68,
132,
43,
132,
96,
132,
84,
132,
110,
132,
80,
132,
11,
135,
4,
135,
247,
134,
12,
135,
250,
134,
214,
134,
245,
134,
77,
135,
248,
134,
14,
135,
9,
135,
1,
135,
246,
134,
13,
135,
5,
135,
214,
136,
203,
136,
205,
136,
206,
136,
222,
136,
219,
136,
218,
136,
204,
136,
208,
136,
133,
137,
155,
137,
223,
137,
229,
137,
228,
137,
225,
137,
224,
137,
226,
137,
220,
137,
230,
137,
118,
138,
134,
138,
127,
138,
97,
138,
63,
138,
119,
138,
130,
138,
132,
138,
117,
138,
131,
138,
129,
138,
116,
138,
122,
138,
60,
140,
75,
140,
74,
140,
101,
140,
100,
140,
102,
140,
134,
140,
132,
140,
133,
140,
204,
140,
104,
141,
105,
141,
145,
141,
140,
141,
142,
141,
143,
141,
141,
141,
147,
141,
148,
141,
144,
141,
146,
141,
240,
141,
224,
141,
236,
141,
241,
141,
238,
141,
208,
141,
233,
141,
227,
141,
226,
141,
231,
141,
242,
141,
235,
141,
244,
141,
6,
143,
255,
142,
1,
143,
0,
143,
5,
143,
7,
143,
8,
143,
2,
143,
11,
143,
82,
144,
63,
144,
68,
144,
73,
144,
61,
144,
16,
145,
13,
145,
15,
145,
17,
145,
22,
145,
20,
145,
11,
145,
14,
145,
110,
145,
111,
145,
72,
146,
82,
146,
48,
146,
58,
146,
102,
146,
51,
146,
101,
146,
94,
146,
131,
146,
46,
146,
74,
146,
70,
146,
109,
146,
108,
146,
79,
146,
96,
146,
103,
146,
111,
146,
54,
146,
97,
146,
112,
146,
49,
146,
84,
146,
99,
146,
80,
146,
114,
146,
78,
146,
83,
146,
76,
146,
86,
146,
50,
146,
159,
149,
156,
149,
158,
149,
155,
149,
146,
150,
147,
150,
145,
150,
151,
150,
206,
150,
250,
150,
253,
150,
248,
150,
245,
150,
115,
151,
119,
151,
120,
151,
114,
151,
15,
152,
13,
152,
14,
152,
172,
152,
246,
152,
249,
152,
175,
153,
178,
153,
176,
153,
181,
153,
173,
154,
171,
154,
91,
155,
234,
156,
237,
156,
231,
156,
128,
158,
253,
158,
230,
80,
212,
80,
215,
80,
232,
80,
243,
80,
219,
80,
234,
80,
221,
80,
228,
80,
211,
80,
236,
80,
240,
80,
239,
80,
227,
80,
224,
80,
216,
81,
128,
82,
129,
82,
233,
82,
235,
82,
48,
83,
172,
83,
39,
86,
21,
86,
12,
86,
18,
86,
252,
85,
15,
86,
28,
86,
1,
86,
19,
86,
2,
86,
250,
85,
29,
86,
4,
86,
255,
85,
249,
85,
137,
88,
124,
88,
144,
88,
152,
88,
134,
88,
129,
88,
127,
88,
116,
88,
139,
88,
122,
88,
135,
88,
145,
88,
142,
88,
118,
88,
130,
88,
136,
88,
123,
88,
148,
88,
143,
88,
254,
88,
107,
89,
220,
90,
238,
90,
229,
90,
213,
90,
234,
90,
218,
90,
237,
90,
235,
90,
243,
90,
226,
90,
224,
90,
219,
90,
236,
90,
222,
90,
221,
90,
217,
90,
232,
90,
223,
90,
119,
91,
224,
91,
227,
91,
99,
92,
130,
93,
128,
93,
125,
93,
134,
93,
122,
93,
129,
93,
119,
93,
138,
93,
137,
93,
136,
93,
126,
93,
124,
93,
141,
93,
121,
93,
127,
93,
88,
94,
89,
94,
83,
94,
216,
94,
209,
94,
215,
94,
206,
94,
220,
94,
213,
94,
217,
94,
210,
94,
212,
94,
68,
95,
67,
95,
111,
95,
182,
95,
44,
97,
40,
97,
65,
97,
94,
97,
113,
97,
115,
97,
82,
97,
83,
97,
114,
97,
108,
97,
128,
97,
116,
97,
84,
97,
122,
97,
91,
97,
101,
97,
59,
97,
106,
97,
97,
97,
86,
97,
41,
98,
39,
98,
43,
98,
43,
100,
77,
100,
91,
100,
93,
100,
116,
100,
118,
100,
114,
100,
115,
100,
125,
100,
117,
100,
102,
100,
166,
100,
78,
100,
130,
100,
94,
100,
92,
100,
75,
100,
83,
100,
96,
100,
80,
100,
127,
100,
63,
100,
108,
100,
107,
100,
89,
100,
101,
100,
119,
100,
115,
101,
160,
101,
161,
102,
160,
102,
159,
102,
5,
103,
4,
103,
34,
103,
177,
105,
182,
105,
201,
105,
160,
105,
206,
105,
150,
105,
176,
105,
172,
105,
188,
105,
145,
105,
153,
105,
142,
105,
167,
105,
141,
105,
169,
105,
190,
105,
175,
105,
191,
105,
196,
105,
189,
105,
164,
105,
212,
105,
185,
105,
202,
105,
154,
105,
207,
105,
179,
105,
147,
105,
170,
105,
161,
105,
158,
105,
217,
105,
151,
105,
144,
105,
194,
105,
181,
105,
165,
105,
198,
105,
74,
107,
77,
107,
75,
107,
158,
107,
159,
107,
160,
107,
195,
107,
196,
107,
254,
107,
206,
110,
245,
110,
241,
110,
3,
111,
37,
111,
248,
110,
55,
111,
251,
110,
46,
111,
9,
111,
78,
111,
25,
111,
26,
111,
39,
111,
24,
111,
59,
111,
18,
111,
237,
110,
10,
111,
54,
111,
115,
111,
249,
110,
238,
110,
45,
111,
64,
111,
48,
111,
60,
111,
53,
111,
235,
110,
7,
111,
14,
111,
67,
111,
5,
111,
253,
110,
246,
110,
57,
111,
28,
111,
252,
110,
58,
111,
31,
111,
13,
111,
30,
111,
8,
111,
33,
111,
135,
113,
144,
113,
137,
113,
128,
113,
133,
113,
130,
113,
143,
113,
123,
113,
134,
113,
129,
113,
151,
113,
68,
114,
83,
114,
151,
114,
149,
114,
147,
114,
67,
115,
77,
115,
81,
115,
76,
115,
98,
116,
115,
116,
113,
116,
117,
116,
114,
116,
103,
116,
110,
116,
0,
117,
2,
117,
3,
117,
125,
117,
144,
117,
22,
118,
8,
118,
12,
118,
21,
118,
17,
118,
10,
118,
20,
118,
184,
118,
129,
119,
124,
119,
133,
119,
130,
119,
110,
119,
128,
119,
111,
119,
126,
119,
131,
119,
178,
120,
170,
120,
180,
120,
173,
120,
168,
120,
126,
120,
171,
120,
158,
120,
165,
120,
160,
120,
172,
120,
162,
120,
164,
120,
152,
121,
138,
121,
139,
121,
150,
121,
149,
121,
148,
121,
147,
121,
151,
121,
136,
121,
146,
121,
144,
121,
43,
122,
74,
122,
48,
122,
47,
122,
40,
122,
38,
122,
168,
122,
171,
122,
172,
122,
238,
122,
136,
123,
156,
123,
138,
123,
145,
123,
144,
123,
150,
123,
141,
123,
140,
123,
155,
123,
142,
123,
133,
123,
152,
123,
132,
82,
153,
123,
164,
123,
130,
123,
187,
124,
191,
124,
188,
124,
186,
124,
167,
125,
183,
125,
194,
125,
163,
125,
170,
125,
193,
125,
192,
125,
197,
125,
157,
125,
206,
125,
196,
125,
198,
125,
203,
125,
204,
125,
175,
125,
185,
125,
150,
125,
188,
125,
159,
125,
166,
125,
174,
125,
169,
125,
161,
125,
201,
125,
115,
127,
226,
127,
227,
127,
229,
127,
222,
127,
36,
128,
93,
128,
92,
128,
137,
129,
134,
129,
131,
129,
135,
129,
141,
129,
140,
129,
139,
129,
21,
130,
151,
132,
164,
132,
161,
132,
159,
132,
186,
132,
206,
132,
194,
132,
172,
132,
174,
132,
171,
132,
185,
132,
180,
132,
193,
132,
205,
132,
170,
132,
154,
132,
177,
132,
208,
132,
157,
132,
167,
132,
187,
132,
162,
132,
148,
132,
199,
132,
204,
132,
155,
132,
169,
132,
175,
132,
168,
132,
214,
132,
152,
132,
182,
132,
207,
132,
160,
132,
215,
132,
212,
132,
210,
132,
219,
132,
176,
132,
145,
132,
97,
134,
51,
135,
35,
135,
40,
135,
107,
135,
64,
135
],
'i8',
ALLOC_NONE,
Runtime.GLOBAL_BASE + 97052
);
/* memory initializer */ allocate(
[
46,
135,
30,
135,
33,
135,
25,
135,
27,
135,
67,
135,
44,
135,
65,
135,
62,
135,
70,
135,
32,
135,
50,
135,
42,
135,
45,
135,
60,
135,
18,
135,
58,
135,
49,
135,
53,
135,
66,
135,
38,
135,
39,
135,
56,
135,
36,
135,
26,
135,
48,
135,
17,
135,
247,
136,
231,
136,
241,
136,
242,
136,
250,
136,
254,
136,
238,
136,
252,
136,
246,
136,
251,
136,
240,
136,
236,
136,
235,
136,
157,
137,
161,
137,
159,
137,
158,
137,
233,
137,
235,
137,
232,
137,
171,
138,
153,
138,
139,
138,
146,
138,
143,
138,
150,
138,
61,
140,
104,
140,
105,
140,
213,
140,
207,
140,
215,
140,
150,
141,
9,
142,
2,
142,
255,
141,
13,
142,
253,
141,
10,
142,
3,
142,
7,
142,
6,
142,
5,
142,
254,
141,
0,
142,
4,
142,
16,
143,
17,
143,
14,
143,
13,
143,
35,
145,
28,
145,
32,
145,
34,
145,
31,
145,
29,
145,
26,
145,
36,
145,
33,
145,
27,
145,
122,
145,
114,
145,
121,
145,
115,
145,
165,
146,
164,
146,
118,
146,
155,
146,
122,
146,
160,
146,
148,
146,
170,
146,
141,
146,
166,
146,
154,
146,
171,
146,
121,
146,
151,
146,
127,
146,
163,
146,
238,
146,
142,
146,
130,
146,
149,
146,
162,
146,
125,
146,
136,
146,
161,
146,
138,
146,
134,
146,
140,
146,
153,
146,
167,
146,
126,
146,
135,
146,
169,
146,
157,
146,
139,
146,
45,
146,
158,
150,
161,
150,
255,
150,
88,
151,
125,
151,
122,
151,
126,
151,
131,
151,
128,
151,
130,
151,
123,
151,
132,
151,
129,
151,
127,
151,
206,
151,
205,
151,
22,
152,
173,
152,
174,
152,
2,
153,
0,
153,
7,
153,
157,
153,
156,
153,
195,
153,
185,
153,
187,
153,
186,
153,
194,
153,
189,
153,
199,
153,
177,
154,
227,
154,
231,
154,
62,
155,
63,
155,
96,
155,
97,
155,
95,
155,
241,
156,
242,
156,
245,
156,
167,
158,
255,
80,
3,
81,
48,
81,
248,
80,
6,
81,
7,
81,
246,
80,
254,
80,
11,
81,
12,
81,
253,
80,
10,
81,
139,
82,
140,
82,
241,
82,
239,
82,
72,
86,
66,
86,
76,
86,
53,
86,
65,
86,
74,
86,
73,
86,
70,
86,
88,
86,
90,
86,
64,
86,
51,
86,
61,
86,
44,
86,
62,
86,
56,
86,
42,
86,
58,
86,
26,
87,
171,
88,
157,
88,
177,
88,
160,
88,
163,
88,
175,
88,
172,
88,
165,
88,
161,
88,
255,
88,
255,
90,
244,
90,
253,
90,
247,
90,
246,
90,
3,
91,
248,
90,
2,
91,
249,
90,
1,
91,
7,
91,
5,
91,
15,
91,
103,
92,
153,
93,
151,
93,
159,
93,
146,
93,
162,
93,
147,
93,
149,
93,
160,
93,
156,
93,
161,
93,
154,
93,
158,
93,
105,
94,
93,
94,
96,
94,
92,
94,
243,
125,
219,
94,
222,
94,
225,
94,
73,
95,
178,
95,
139,
97,
131,
97,
121,
97,
177,
97,
176,
97,
162,
97,
137,
97,
155,
97,
147,
97,
175,
97,
173,
97,
159,
97,
146,
97,
170,
97,
161,
97,
141,
97,
102,
97,
179,
97,
45,
98,
110,
100,
112,
100,
150,
100,
160,
100,
133,
100,
151,
100,
156,
100,
143,
100,
139,
100,
138,
100,
140,
100,
163,
100,
159,
100,
104,
100,
177,
100,
152,
100,
118,
101,
122,
101,
121,
101,
123,
101,
178,
101,
179,
101,
181,
102,
176,
102,
169,
102,
178,
102,
183,
102,
170,
102,
175,
102,
0,
106,
6,
106,
23,
106,
229,
105,
248,
105,
21,
106,
241,
105,
228,
105,
32,
106,
255,
105,
236,
105,
226,
105,
27,
106,
29,
106,
254,
105,
39,
106,
242,
105,
238,
105,
20,
106,
247,
105,
231,
105,
64,
106,
8,
106,
230,
105,
251,
105,
13,
106,
252,
105,
235,
105,
9,
106,
4,
106,
24,
106,
37,
106,
15,
106,
246,
105,
38,
106,
7,
106,
244,
105,
22,
106,
81,
107,
165,
107,
163,
107,
162,
107,
166,
107,
1,
108,
0,
108,
255,
107,
2,
108,
65,
111,
38,
111,
126,
111,
135,
111,
198,
111,
146,
111,
141,
111,
137,
111,
140,
111,
98,
111,
79,
111,
133,
111,
90,
111,
150,
111,
118,
111,
108,
111,
130,
111,
85,
111,
114,
111,
82,
111,
80,
111,
87,
111,
148,
111,
147,
111,
93,
111,
0,
111,
97,
111,
107,
111,
125,
111,
103,
111,
144,
111,
83,
111,
139,
111,
105,
111,
127,
111,
149,
111,
99,
111,
119,
111,
106,
111,
123,
111,
178,
113,
175,
113,
155,
113,
176,
113,
160,
113,
154,
113,
169,
113,
181,
113,
157,
113,
165,
113,
158,
113,
164,
113,
161,
113,
170,
113,
156,
113,
167,
113,
179,
113,
152,
114,
154,
114,
88,
115,
82,
115,
94,
115,
95,
115,
96,
115,
93,
115,
91,
115,
97,
115,
90,
115,
89,
115,
98,
115,
135,
116,
137,
116,
138,
116,
134,
116,
129,
116,
125,
116,
133,
116,
136,
116,
124,
116,
121,
116,
8,
117,
7,
117,
126,
117,
37,
118,
30,
118,
25,
118,
29,
118,
28,
118,
35,
118,
26,
118,
40,
118,
27,
118,
156,
118,
157,
118,
158,
118,
155,
118,
141,
119,
143,
119,
137,
119,
136,
119,
205,
120,
187,
120,
207,
120,
204,
120,
209,
120,
206,
120,
212,
120,
200,
120,
195,
120,
196,
120,
201,
120,
154,
121,
161,
121,
160,
121,
156,
121,
162,
121,
155,
121,
118,
107,
57,
122,
178,
122,
180,
122,
179,
122,
183,
123,
203,
123,
190,
123,
172,
123,
206,
123,
175,
123,
185,
123,
202,
123,
181,
123,
197,
124,
200,
124,
204,
124,
203,
124,
247,
125,
219,
125,
234,
125,
231,
125,
215,
125,
225,
125,
3,
126,
250,
125,
230,
125,
246,
125,
241,
125,
240,
125,
238,
125,
223,
125,
118,
127,
172,
127,
176,
127,
173,
127,
237,
127,
235,
127,
234,
127,
236,
127,
230,
127,
232,
127,
100,
128,
103,
128,
163,
129,
159,
129,
158,
129,
149,
129,
162,
129,
153,
129,
151,
129,
22,
130,
79,
130,
83,
130,
82,
130,
80,
130,
78,
130,
81,
130,
36,
133,
59,
133,
15,
133,
0,
133,
41,
133,
14,
133,
9,
133,
13,
133,
31,
133,
10,
133,
39,
133,
28,
133,
251,
132,
43,
133,
250,
132,
8,
133,
12,
133,
244,
132,
42,
133,
242,
132,
21,
133,
247,
132,
235,
132,
243,
132,
252,
132,
18,
133,
234,
132,
233,
132,
22,
133,
254,
132,
40,
133,
29,
133,
46,
133,
2,
133,
253,
132,
30,
133,
246,
132,
49,
133,
38,
133,
231,
132,
232,
132,
240,
132,
239,
132,
249,
132,
24,
133,
32,
133,
48,
133,
11,
133,
25,
133,
47,
133,
98,
134,
86,
135,
99,
135,
100,
135,
119,
135,
225,
135,
115,
135,
88,
135,
84,
135,
91,
135,
82,
135,
97,
135,
90,
135,
81,
135,
94,
135,
109,
135,
106,
135,
80,
135,
78,
135,
95,
135,
93,
135,
111,
135,
108,
135,
122,
135,
110,
135,
92,
135,
101,
135,
79,
135,
123,
135,
117,
135,
98,
135,
103,
135,
105,
135,
90,
136,
5,
137,
12,
137,
20,
137,
11,
137,
23,
137,
24,
137,
25,
137,
6,
137,
22,
137,
17,
137,
14,
137,
9,
137,
162,
137,
164,
137,
163,
137,
237,
137,
240,
137,
236,
137,
207,
138,
198,
138,
184,
138,
211,
138,
209,
138,
212,
138,
213,
138,
187,
138,
215,
138,
190,
138,
192,
138,
197,
138,
216,
138,
195,
138,
186,
138,
189,
138,
217,
138,
62,
140,
77,
140,
143,
140,
229,
140,
223,
140,
217,
140,
232,
140,
218,
140,
221,
140,
231,
140,
160,
141,
156,
141,
161,
141,
155,
141,
32,
142,
35,
142,
37,
142,
36,
142,
46,
142,
21,
142,
27,
142,
22,
142,
17,
142,
25,
142,
38,
142,
39,
142,
20,
142,
18,
142,
24,
142,
19,
142,
28,
142,
23,
142,
26,
142,
44,
143,
36,
143,
24,
143,
26,
143,
32,
143,
35,
143,
22,
143,
23,
143,
115,
144,
112,
144,
111,
144,
103,
144,
107,
144,
47,
145,
43,
145,
41,
145,
42,
145,
50,
145,
38,
145,
46,
145,
133,
145,
134,
145,
138,
145,
129,
145,
130,
145,
132,
145,
128,
145,
208,
146,
195,
146,
196,
146,
192,
146,
217,
146,
182,
146,
207,
146,
241,
146,
223,
146,
216,
146,
233,
146,
215,
146,
221,
146,
204,
146,
239,
146,
194,
146,
232,
146,
202,
146,
200,
146,
206,
146,
230,
146,
205,
146,
213,
146,
201,
146,
224,
146,
222,
146,
231,
146,
209,
146,
211,
146,
181,
146,
225,
146,
198,
146,
180,
146,
124,
149,
172,
149,
171,
149,
174,
149,
176,
149,
164,
150,
162,
150,
211,
150,
5,
151,
8,
151,
2,
151,
90,
151,
138,
151,
142,
151,
136,
151,
208,
151,
207,
151,
30,
152,
29,
152,
38,
152,
41,
152,
40,
152,
32,
152,
27,
152,
39,
152,
178,
152,
8,
153,
250,
152,
17,
153,
20,
153,
22,
153,
23,
153,
21,
153,
220,
153,
205,
153,
207,
153,
211,
153,
212,
153,
206,
153,
201,
153,
214,
153,
216,
153,
203,
153,
215,
153,
204,
153,
179,
154,
236,
154,
235,
154,
243,
154,
242,
154,
241,
154,
70,
155,
67,
155,
103,
155,
116,
155,
113,
155,
102,
155,
118,
155,
117,
155,
112,
155,
104,
155,
100,
155,
108,
155,
252,
156,
250,
156,
253,
156,
255,
156,
247,
156,
7,
157,
0,
157,
249,
156,
251,
156,
8,
157,
5,
157,
4,
157,
131,
158,
211,
158,
15,
159,
16,
159,
28,
81,
19,
81,
23,
81,
26,
81,
17,
81,
222,
81,
52,
83,
225,
83,
112,
86,
96,
86,
110,
86,
115,
86,
102,
86,
99,
86,
109,
86,
114,
86,
94,
86,
119,
86,
28,
87,
27,
87,
200,
88,
189,
88,
201,
88,
191,
88,
186,
88,
194,
88,
188,
88,
198,
88,
23,
91,
25,
91,
27,
91,
33,
91,
20,
91,
19,
91,
16,
91,
22,
91,
40,
91,
26,
91,
32,
91,
30,
91,
239,
91,
172,
93,
177,
93,
169,
93,
167,
93,
181,
93,
176,
93,
174,
93,
170,
93,
168,
93,
178,
93,
173,
93,
175,
93,
180,
93,
103,
94,
104,
94,
102,
94,
111,
94,
233,
94,
231,
94,
230,
94,
232,
94,
229,
94,
75,
95,
188,
95,
157,
97,
168,
97,
150,
97,
197,
97,
180,
97,
198,
97,
193,
97,
204,
97,
186,
97,
191,
97,
184,
97,
140,
97,
215,
100,
214,
100,
208,
100,
207,
100,
201,
100,
189,
100,
137,
100,
195,
100,
219,
100,
243,
100,
217,
100,
51,
101,
127,
101,
124,
101,
162,
101,
200,
102,
190,
102,
192,
102,
202,
102,
203,
102,
207,
102,
189,
102,
187,
102,
186,
102,
204,
102,
35,
103,
52,
106,
102,
106,
73,
106,
103,
106,
50,
106,
104,
106,
62,
106,
93,
106,
109,
106,
118,
106,
91,
106,
81,
106,
40,
106,
90,
106,
59,
106,
63,
106,
65,
106,
106,
106,
100,
106,
80,
106,
79,
106,
84,
106,
111,
106,
105,
106,
96,
106,
60,
106,
94,
106,
86,
106,
85,
106,
77,
106,
78,
106,
70,
106,
85,
107,
84,
107,
86,
107,
167,
107,
170,
107,
171,
107,
200,
107,
199,
107,
4,
108,
3,
108,
6,
108,
173,
111,
203,
111,
163,
111,
199,
111,
188,
111,
206,
111,
200,
111,
94,
111,
196,
111,
189,
111,
158,
111,
202,
111,
168,
111,
4,
112,
165,
111,
174,
111,
186,
111,
172,
111,
170,
111,
207,
111,
191,
111,
184,
111,
162,
111,
201,
111,
171,
111,
205,
111,
175,
111,
178,
111,
176,
111,
197,
113,
194,
113,
191,
113,
184,
113,
214,
113,
192,
113,
193,
113,
203,
113,
212,
113,
202,
113,
199,
113,
207,
113,
189,
113,
216,
113,
188,
113,
198,
113,
218,
113,
219,
113,
157,
114,
158,
114,
105,
115,
102,
115,
103,
115,
108,
115,
101,
115,
107,
115,
106,
115,
127,
116,
154,
116,
160,
116,
148,
116,
146,
116,
149,
116,
161,
116,
11,
117,
128,
117,
47,
118,
45,
118,
49,
118,
61,
118,
51,
118,
60,
118,
53,
118,
50,
118,
48,
118,
187,
118,
230,
118,
154,
119,
157,
119,
161,
119,
156,
119,
155,
119,
162,
119,
163,
119,
149,
119,
153,
119,
151,
119,
221,
120,
233,
120,
229,
120,
234,
120,
222,
120,
227,
120,
219,
120,
225,
120,
226,
120,
237,
120,
223,
120,
224,
120,
164,
121,
68,
122,
72,
122,
71,
122,
182,
122,
184,
122,
181,
122,
177,
122,
183,
122,
222,
123,
227,
123,
231,
123,
221,
123,
213,
123,
229,
123,
218,
123,
232,
123,
249,
123,
212,
123,
234,
123,
226,
123,
220,
123,
235,
123,
216,
123,
223,
123,
210,
124,
212,
124,
215,
124,
208,
124,
209,
124,
18,
126,
33,
126,
23,
126,
12,
126,
31,
126,
32,
126,
19,
126,
14,
126,
28,
126,
21,
126,
26,
126,
34,
126,
11,
126,
15,
126,
22,
126,
13,
126,
20,
126,
37,
126,
36,
126,
67,
127,
123,
127,
124,
127,
122,
127,
177,
127,
239,
127,
42,
128,
41,
128,
108,
128,
177,
129,
166,
129,
174,
129,
185,
129,
181,
129,
171,
129,
176,
129,
172,
129,
180,
129,
178,
129,
183,
129,
167,
129,
242,
129,
85,
130,
86,
130,
87,
130,
86,
133,
69,
133,
107,
133,
77,
133,
83,
133,
97,
133,
88,
133,
64,
133,
70,
133,
100,
133,
65,
133,
98,
133,
68,
133,
81,
133,
71,
133,
99,
133,
62,
133,
91,
133,
113,
133,
78,
133,
110,
133,
117,
133,
85,
133,
103,
133,
96,
133,
140,
133,
102,
133,
93,
133,
84,
133,
101,
133,
108,
133,
99,
134,
101,
134,
100,
134,
155,
135,
143,
135,
151,
135,
147,
135,
146,
135,
136,
135,
129,
135,
150,
135,
152,
135,
121,
135,
135,
135,
163,
135,
133,
135,
144,
135,
145,
135,
157,
135,
132,
135,
148,
135,
156,
135,
154,
135,
137,
135,
30,
137,
38,
137,
48,
137,
45,
137,
46,
137,
39,
137,
49,
137,
34,
137,
41,
137,
35,
137,
47,
137,
44,
137,
31,
137,
241,
137,
224,
138,
226,
138,
242,
138,
244,
138,
245,
138,
221,
138,
20,
139,
228,
138,
223,
138,
240,
138,
200,
138,
222,
138,
225,
138,
232,
138,
255,
138,
239,
138,
251,
138,
145,
140,
146,
140,
144,
140,
245,
140,
238,
140,
241,
140,
240,
140,
243,
140,
108,
141,
110,
141,
165,
141,
167,
141,
51,
142,
62,
142,
56,
142,
64,
142,
69,
142,
54,
142,
60,
142,
61,
142,
65,
142,
48,
142,
63,
142,
189,
142,
54,
143,
46,
143,
53,
143,
50,
143,
57,
143,
55,
143,
52,
143,
118,
144,
121,
144,
123,
144,
134,
144,
250,
144,
51,
145,
53,
145,
54,
145,
147,
145,
144,
145,
145,
145,
141,
145,
143,
145,
39,
147,
30,
147,
8,
147,
31,
147,
6,
147,
15,
147,
122,
147,
56,
147,
60,
147,
27,
147,
35,
147,
18,
147,
1,
147,
70,
147,
45,
147,
14,
147,
13,
147,
203,
146,
29,
147,
250,
146,
37,
147,
19,
147,
249,
146,
247,
146,
52,
147,
2,
147,
36,
147,
255,
146,
41,
147,
57,
147,
53,
147,
42,
147,
20,
147,
12,
147,
11,
147,
254,
146,
9,
147,
0,
147,
251,
146,
22,
147,
188,
149,
205,
149,
190,
149,
185,
149,
186,
149,
182,
149,
191,
149,
181,
149,
189,
149,
169,
150,
212,
150,
11,
151,
18,
151,
16,
151,
153,
151,
151,
151,
148,
151,
240,
151,
248,
151,
53,
152,
47,
152,
50,
152,
36,
153,
31,
153,
39,
153,
41,
153,
158,
153,
238,
153,
236,
153,
229,
153,
228,
153,
240,
153,
227,
153,
234,
153,
233,
153,
231,
153,
185,
154,
191,
154,
180,
154,
187,
154,
246,
154,
250,
154,
249,
154,
247,
154,
51,
155,
128,
155,
133,
155,
135,
155,
124,
155,
126,
155,
123,
155,
130,
155,
147,
155,
146,
155,
144,
155,
122,
155,
149,
155,
125,
155,
136,
155,
37,
157,
23,
157,
32,
157,
30,
157,
20,
157,
41,
157,
29,
157,
24,
157,
34,
157,
16,
157,
25,
157,
31,
157,
136,
158,
134,
158,
135,
158,
174,
158,
173,
158,
213,
158,
214,
158,
250,
158,
18,
159,
61,
159,
38,
81,
37,
81,
34,
81,
36,
81,
32,
81,
41,
81,
244,
82,
147,
86,
140,
86,
141,
86,
134,
86,
132,
86,
131,
86,
126,
86,
130,
86,
127,
86,
129,
86,
214,
88,
212,
88,
207,
88,
210,
88,
45,
91,
37,
91,
50,
91,
35,
91,
44,
91,
39,
91,
38,
91,
47,
91,
46,
91,
123,
91,
241,
91,
242,
91,
183,
93,
108,
94,
106,
94,
190,
95,
187,
95,
195,
97,
181,
97,
188,
97,
231,
97,
224,
97,
229,
97,
228,
97,
232,
97,
222,
97,
239,
100,
233,
100,
227,
100,
235,
100,
228,
100,
232,
100,
129,
101,
128,
101,
182,
101,
218,
101,
210,
102,
141,
106,
150,
106,
129,
106,
165,
106,
137,
106,
159,
106,
155,
106,
161,
106,
158,
106,
135,
106,
147,
106,
142,
106,
149,
106,
131,
106,
168,
106,
164,
106,
145,
106,
127,
106,
166,
106,
154,
106,
133,
106,
140,
106,
146,
106,
91,
107,
173,
107,
9,
108,
204,
111,
169,
111,
244,
111,
212,
111,
227,
111,
220,
111,
237,
111,
231,
111,
230,
111,
222,
111,
242,
111,
221,
111,
226,
111,
232,
111,
225,
113,
241,
113,
232,
113,
242,
113,
228,
113,
240,
113,
226,
113,
115,
115,
110,
115,
111,
115,
151,
116,
178,
116,
171,
116,
144,
116,
170,
116,
173,
116,
177,
116,
165,
116,
175,
116,
16,
117,
17,
117,
18,
117,
15,
117,
132,
117,
67,
118,
72,
118,
73,
118,
71,
118,
164,
118,
233,
118,
181,
119,
171,
119,
178,
119,
183,
119,
182,
119,
180,
119,
177,
119,
168,
119,
240,
119,
243,
120,
253,
120,
2,
121,
251,
120,
252,
120,
242,
120,
5,
121,
249,
120,
254,
120,
4,
121,
171,
121,
168,
121,
92,
122,
91,
122,
86,
122,
88,
122,
84,
122,
90,
122,
190,
122,
192,
122,
193,
122,
5,
124,
15,
124,
242,
123,
0,
124,
255,
123,
251,
123,
14,
124,
244,
123,
11,
124,
243,
123,
2,
124,
9,
124,
3,
124,
1,
124,
248,
123,
253,
123,
6,
124,
240,
123,
241,
123,
16,
124,
10,
124,
232,
124,
45,
126,
60,
126,
66,
126,
51,
126,
72,
152,
56,
126,
42,
126,
73,
126,
64,
126,
71,
126,
41,
126,
76,
126,
48,
126,
59,
126,
54,
126,
68,
126,
58,
126,
69,
127,
127,
127,
126,
127,
125,
127,
244,
127,
242,
127,
44,
128,
187,
129,
196,
129,
204,
129,
202,
129,
197,
129,
199,
129,
188,
129,
233,
129,
91,
130,
90,
130,
92,
130,
131,
133,
128,
133,
143,
133,
167,
133,
149,
133,
160,
133,
139,
133,
163,
133,
123,
133,
164,
133,
154,
133,
158,
133,
119,
133,
124,
133,
137,
133,
161,
133,
122,
133,
120,
133,
87,
133,
142,
133,
150,
133,
134,
133,
141,
133,
153,
133,
157,
133,
129,
133,
162,
133,
130,
133,
136,
133,
133,
133,
121,
133,
118,
133,
152,
133,
144,
133,
159,
133,
104,
134,
190,
135,
170,
135,
173,
135,
197,
135,
176,
135,
172,
135,
185,
135,
181,
135,
188,
135,
174,
135,
201,
135,
195,
135,
194,
135,
204,
135,
183,
135,
175,
135,
196,
135,
202,
135,
180,
135,
182,
135,
191,
135,
184,
135,
189,
135,
222,
135,
178,
135,
53,
137,
51,
137,
60,
137,
62,
137,
65,
137,
82,
137,
55,
137,
66,
137,
173,
137,
175,
137,
174,
137,
242,
137,
243,
137,
30,
139,
24,
139,
22,
139,
17,
139,
5,
139,
11,
139,
34,
139,
15,
139,
18,
139,
21,
139,
7,
139,
13,
139,
8,
139,
6,
139,
28,
139,
19,
139,
26,
139,
79,
140,
112,
140,
114,
140,
113,
140,
111,
140,
149,
140,
148,
140,
249,
140,
111,
141,
78,
142,
77,
142,
83,
142,
80,
142,
76,
142,
71,
142,
67,
143,
64,
143,
133,
144,
126,
144,
56,
145,
154,
145,
162,
145,
155,
145,
153,
145,
159,
145,
161,
145,
157,
145,
160,
145,
161,
147,
131,
147,
175,
147,
100,
147,
86,
147,
71,
147,
124,
147,
88,
147,
92,
147,
118,
147,
73,
147,
80,
147,
81,
147,
96,
147,
109,
147,
143,
147,
76,
147,
106,
147,
121,
147,
87,
147,
85,
147,
82,
147,
79,
147,
113,
147,
119,
147,
123,
147,
97,
147,
94,
147,
99,
147,
103,
147,
128,
147,
78,
147,
89,
147,
199,
149,
192,
149,
201,
149,
195,
149,
197,
149,
183,
149,
174,
150,
176,
150,
172,
150,
32,
151,
31,
151,
24,
151,
29,
151,
25,
151,
154,
151,
161,
151,
156,
151,
158,
151,
157,
151,
213,
151,
212,
151,
241,
151,
65,
152,
68,
152,
74,
152,
73,
152,
69,
152,
67,
152,
37,
153,
43,
153,
44,
153,
42,
153,
51,
153,
50,
153,
47,
153,
45,
153,
49,
153,
48,
153,
152,
153,
163,
153,
161,
153,
2,
154,
250,
153,
244,
153,
247,
153,
249,
153,
248,
153,
246,
153,
251,
153,
253,
153,
254,
153,
252,
153,
3,
154,
190,
154,
254,
154,
253,
154,
1,
155,
252,
154,
72,
155,
154,
155,
168,
155,
158,
155,
155,
155,
166,
155,
161,
155,
165,
155,
164,
155,
134,
155,
162,
155,
160,
155,
175,
155,
51,
157,
65,
157,
103,
157,
54,
157,
46,
157,
47,
157,
49,
157,
56,
157,
48,
157,
69,
157,
66,
157,
67,
157,
62,
157,
55,
157,
64,
157,
61,
157,
245,
127,
45,
157,
138,
158,
137,
158,
141,
158,
176,
158,
200,
158,
218,
158,
251,
158,
255,
158,
36,
159,
35,
159,
34,
159,
84,
159,
160,
159,
49,
81,
45,
81,
46,
81,
152,
86,
156,
86,
151,
86,
154,
86,
157,
86,
153,
86,
112,
89,
60,
91,
105,
92,
106,
92,
192,
93,
109,
94,
110,
94,
216,
97,
223,
97,
237,
97,
238,
97,
241,
97,
234,
97,
240,
97,
235,
97,
214,
97,
233,
97,
255,
100,
4,
101,
253,
100,
248,
100,
1,
101,
3,
101,
252,
100,
148,
101,
219,
101,
218,
102,
219,
102,
216,
102,
197,
106,
185,
106,
189,
106,
225,
106,
198,
106,
186,
106,
182,
106,
183,
106,
199,
106,
180,
106,
173,
106,
94,
107,
201,
107,
11,
108,
7,
112,
12,
112,
13,
112,
1,
112,
5,
112,
20,
112,
14,
112,
255,
111,
0,
112,
251,
111,
38,
112,
252,
111,
247,
111,
10,
112,
1,
114,
255,
113,
249,
113,
3,
114,
253,
113,
118,
115,
184,
116,
192,
116,
181,
116,
193,
116,
190,
116,
182,
116,
187,
116,
194,
116,
20,
117,
19,
117,
92,
118,
100,
118,
89,
118,
80,
118,
83,
118,
87,
118,
90,
118,
166,
118,
189,
118,
236,
118,
194,
119,
186,
119,
255,
120,
12,
121,
19,
121,
20,
121,
9,
121,
16,
121,
18,
121,
17,
121,
173,
121,
172,
121,
95,
122,
28,
124,
41,
124,
25,
124,
32,
124,
31,
124,
45,
124,
29,
124,
38,
124,
40,
124,
34,
124,
37,
124,
48,
124,
92,
126,
80,
126,
86,
126,
99,
126,
88,
126,
98,
126,
95,
126,
81,
126,
96,
126,
87,
126,
83,
126,
181,
127,
179,
127,
247,
127,
248,
127,
117,
128,
209,
129,
210,
129,
208,
129,
95,
130,
94,
130,
180,
133,
198,
133,
192,
133,
195,
133,
194,
133,
179,
133,
181,
133,
189,
133,
199,
133,
196,
133,
191,
133,
203,
133,
206,
133,
200,
133,
197,
133,
177,
133,
182,
133,
210,
133,
36,
134,
184,
133,
183,
133,
190,
133,
105,
134,
231,
135,
230,
135,
226,
135,
219,
135,
235,
135,
234,
135,
229,
135,
223,
135,
243,
135,
228,
135,
212,
135,
220,
135,
211,
135,
237,
135,
216,
135,
227,
135,
164,
135,
215,
135,
217,
135,
1,
136,
244,
135,
232,
135,
221,
135,
83,
137,
75,
137,
79,
137,
76,
137,
70,
137,
80,
137,
81,
137,
73,
137,
42,
139,
39,
139,
35,
139,
51,
139,
48,
139,
53,
139,
71,
139,
47,
139,
60,
139,
62,
139,
49,
139,
37,
139,
55,
139,
38,
139,
54,
139,
46,
139,
36,
139,
59,
139,
61,
139,
58,
139,
66,
140,
117,
140,
153,
140,
152,
140,
151,
140,
254,
140,
4,
141,
2,
141,
0,
141,
92,
142,
98,
142,
96,
142,
87,
142,
86,
142,
94,
142,
101,
142,
103,
142,
91,
142,
90,
142,
97,
142,
93,
142,
105,
142,
84,
142,
70,
143,
71,
143,
72,
143,
75,
143,
40,
145,
58,
145,
59,
145,
62,
145,
168,
145,
165,
145,
167,
145,
175,
145,
170,
145,
181,
147,
140,
147,
146,
147,
183,
147,
155,
147,
157,
147,
137,
147,
167,
147,
142,
147,
170,
147,
158,
147,
166,
147,
149,
147,
136,
147,
153,
147,
159,
147,
141,
147,
177,
147,
145,
147,
178,
147,
164,
147,
168,
147,
180,
147,
163,
147,
165,
147,
210,
149,
211,
149,
209,
149,
179,
150,
215,
150,
218,
150,
194,
93,
223,
150,
216,
150,
221,
150,
35,
151,
34,
151,
37,
151,
172,
151,
174,
151,
168,
151,
171,
151,
164,
151,
170,
151,
162,
151,
165,
151,
215,
151,
217,
151,
214,
151,
216,
151,
250,
151,
80,
152,
81,
152,
82,
152,
184,
152,
65,
153,
60,
153,
58,
153,
15,
154,
11,
154,
9,
154,
13,
154,
4,
154,
17,
154,
10,
154,
5,
154,
7,
154,
6,
154,
192,
154,
220,
154,
8,
155,
4,
155,
5,
155,
41,
155,
53,
155,
74,
155,
76,
155,
75,
155,
199,
155,
198,
155,
195,
155,
191,
155,
193,
155,
181,
155,
184,
155,
211,
155,
182,
155,
196,
155,
185,
155,
189,
155,
92,
157,
83,
157,
79,
157,
74,
157,
91,
157,
75,
157,
89,
157,
86,
157,
76,
157,
87,
157,
82,
157,
84,
157,
95,
157,
88,
157,
90,
157,
142,
158,
140,
158,
223,
158,
1,
159,
0,
159,
22,
159,
37,
159,
43,
159,
42,
159,
41,
159,
40,
159,
76,
159,
85,
159,
52,
81,
53,
81,
150,
82,
247,
82,
180,
83,
171,
86,
173,
86,
166,
86,
167,
86,
170,
86,
172,
86,
218,
88,
221,
88,
219,
88,
18,
89,
61,
91,
62,
91,
63,
91,
195,
93,
112,
94,
191,
95,
251,
97,
7,
101,
16,
101,
13,
101,
9,
101,
12,
101,
14,
101,
132,
101,
222,
101,
221,
101,
222,
102,
231,
106,
224,
106,
204,
106,
209,
106,
217,
106,
203,
106,
223,
106,
220,
106,
208,
106,
235,
106,
207,
106,
205,
106,
222,
106,
96,
107,
176,
107,
12,
108,
25,
112,
39,
112,
32,
112,
22,
112,
43,
112,
33,
112,
34,
112,
35,
112,
41,
112,
23,
112,
36,
112,
28,
112,
42,
112,
12,
114,
10,
114,
7,
114,
2,
114,
5,
114,
165,
114,
166,
114,
164,
114,
163,
114,
161,
114,
203,
116,
197,
116,
183,
116,
195,
116,
22,
117,
96,
118,
201,
119,
202,
119,
196,
119,
241,
119,
29,
121,
27,
121,
33,
121,
28,
121,
23,
121,
30,
121,
176,
121,
103,
122,
104,
122,
51,
124,
60,
124,
57,
124,
44,
124,
59,
124,
236,
124,
234,
124,
118,
126,
117,
126,
120,
126,
112,
126,
119,
126,
111,
126,
122,
126,
114,
126,
116,
126,
104,
126,
75,
127,
74,
127,
131,
127,
134,
127,
183,
127,
253,
127,
254,
127,
120,
128,
215,
129,
213,
129,
100,
130,
97,
130,
99,
130,
235,
133,
241,
133,
237,
133,
217,
133,
225,
133,
232,
133,
218,
133,
215,
133,
236,
133,
242,
133,
248,
133,
216,
133,
223,
133,
227,
133,
220,
133,
209,
133,
240,
133,
230,
133,
239,
133,
222,
133,
226,
133,
0,
136,
250,
135,
3,
136,
246,
135,
247,
135,
9,
136,
12,
136,
11,
136,
6,
136,
252,
135,
8,
136,
255,
135,
10,
136,
2,
136,
98,
137,
90,
137,
91,
137,
87,
137,
97,
137,
92,
137,
88,
137,
93,
137,
89,
137,
136,
137,
183,
137,
182,
137,
246,
137,
80,
139,
72,
139,
74,
139,
64,
139,
83,
139,
86,
139,
84,
139,
75,
139,
85,
139,
81,
139,
66,
139,
82,
139,
87,
139,
67,
140,
119,
140,
118,
140,
154,
140,
6,
141,
7,
141,
9,
141,
172,
141,
170,
141,
173,
141,
171,
141,
109,
142,
120,
142,
115,
142,
106,
142,
111,
142,
123,
142,
194,
142,
82,
143,
81,
143,
79,
143,
80,
143,
83,
143,
180,
143,
64,
145,
63,
145,
176,
145,
173,
145,
222,
147,
199,
147,
207,
147,
194,
147,
218,
147,
208,
147,
249,
147,
236,
147,
204,
147,
217,
147,
169,
147,
230,
147,
202,
147,
212,
147,
238,
147,
227,
147,
213,
147,
196,
147,
206,
147,
192,
147,
210,
147,
231,
147,
125,
149,
218,
149,
219,
149,
225,
150,
41,
151,
43,
151,
44,
151,
40,
151,
38,
151,
179,
151,
183,
151,
182,
151,
221,
151,
222,
151,
223,
151,
92,
152,
89,
152,
93,
152,
87,
152,
191,
152,
189,
152,
187,
152,
190,
152,
72,
153,
71,
153,
67,
153,
166,
153,
167,
153,
26,
154,
21,
154,
37,
154,
29,
154,
36,
154,
27,
154,
34,
154,
32,
154,
39,
154,
35,
154,
30,
154,
28,
154,
20,
154,
194,
154,
11,
155,
10,
155,
14,
155,
12,
155,
55,
155,
234,
155,
235,
155,
224,
155,
222,
155,
228,
155,
230,
155,
226,
155,
240,
155,
212,
155,
215,
155,
236,
155,
220,
155,
217,
155,
229,
155,
213,
155,
225,
155,
218,
155,
119,
157,
129,
157,
138,
157,
132,
157,
136,
157,
113,
157,
128,
157,
120,
157,
134,
157,
139,
157,
140,
157,
125,
157,
107,
157,
116,
157,
117,
157,
112,
157,
105,
157,
133,
157,
115,
157,
123,
157,
130,
157,
111,
157,
121,
157,
127,
157,
135,
157,
104,
157,
148,
158,
145,
158,
192,
158,
252,
158,
45,
159,
64,
159,
65,
159,
77,
159,
86,
159,
87,
159,
88,
159,
55,
83,
178,
86,
181,
86,
179,
86,
227,
88,
69,
91,
198,
93,
199,
93,
238,
94,
239,
94,
192,
95,
193,
95,
249,
97,
23,
101,
22,
101,
21,
101,
19,
101,
223,
101,
232,
102,
227,
102,
228,
102,
243,
106,
240,
106,
234,
106,
232,
106,
249,
106,
241,
106,
238,
106,
239,
106,
60,
112,
53,
112,
47,
112,
55,
112,
52,
112,
49,
112,
66,
112,
56,
112,
63,
112,
58,
112,
57,
112,
64,
112,
59,
112,
51,
112,
65,
112,
19,
114,
20,
114,
168,
114,
125,
115,
124,
115,
186,
116,
171,
118,
170,
118,
190,
118,
237,
118,
204,
119,
206,
119,
207,
119,
205,
119,
242,
119,
37,
121,
35,
121,
39,
121,
40,
121,
36,
121,
41,
121,
178,
121,
110,
122,
108,
122,
109,
122,
247,
122,
73,
124,
72,
124,
74,
124,
71,
124,
69,
124,
238,
124,
123,
126,
126,
126,
129,
126,
128,
126,
186,
127,
255,
127,
121,
128,
219,
129,
217,
129,
11,
130,
104,
130,
105,
130,
34,
134,
255,
133,
1,
134,
254,
133,
27,
134,
0,
134,
246,
133,
4,
134,
9,
134,
5,
134,
12,
134,
253,
133,
25,
136,
16,
136,
17,
136,
23,
136,
19,
136,
22,
136,
99,
137,
102,
137,
185,
137,
247,
137,
96,
139,
106,
139,
93,
139,
104,
139,
99,
139,
101,
139,
103,
139,
109,
139,
174,
141,
134,
142,
136,
142,
132,
142,
89,
143,
86,
143,
87,
143,
85,
143,
88,
143,
90,
143,
141,
144,
67,
145,
65,
145,
183,
145,
181,
145,
178,
145,
179,
145,
11,
148,
19,
148,
251,
147,
32,
148,
15,
148,
20,
148,
254,
147,
21,
148,
16,
148,
40,
148,
25,
148,
13,
148,
245,
147,
0,
148,
247,
147,
7,
148,
14,
148,
22,
148,
18,
148,
250,
147,
9,
148,
248,
147,
10,
148,
255,
147,
252,
147,
12,
148,
246,
147,
17,
148,
6,
148,
222,
149,
224,
149,
223,
149,
46,
151,
47,
151,
185,
151,
187,
151,
253,
151,
254,
151,
96,
152,
98,
152,
99,
152,
95,
152,
193,
152,
194,
152,
80,
153,
78,
153,
89,
153,
76,
153,
75,
153,
83,
153,
50,
154,
52,
154,
49,
154,
44,
154,
42,
154,
54,
154,
41,
154,
46,
154,
56,
154,
45,
154,
199,
154,
202,
154,
198,
154,
16,
155,
18,
155,
17,
155,
11,
156,
8,
156,
247,
155,
5,
156,
18,
156,
248,
155,
64,
156,
7,
156,
14,
156,
6,
156,
23,
156,
20,
156,
9,
156,
159,
157,
153,
157,
164,
157,
157,
157,
146,
157,
152,
157,
144,
157,
155,
157,
160,
157,
148,
157,
156,
157,
170,
157,
151,
157,
161,
157,
154,
157,
162,
157,
168,
157,
158,
157,
163,
157,
191,
157,
169,
157,
150,
157,
166,
157,
167,
157,
153,
158,
155,
158,
154,
158,
229,
158,
228,
158,
231,
158,
230,
158,
48,
159,
46,
159,
91,
159,
96,
159,
94,
159,
93,
159,
89,
159,
145,
159,
58,
81,
57,
81,
152,
82,
151,
82,
195,
86,
189,
86,
190,
86,
72,
91,
71,
91,
203,
93,
207,
93,
241,
94,
253,
97,
27,
101,
2,
107,
252,
106,
3,
107,
248,
106,
0,
107,
67,
112,
68,
112,
74,
112,
72,
112,
73,
112,
69,
112,
70,
112,
29,
114,
26,
114,
25,
114,
126,
115,
23,
117,
106,
118,
208,
119,
45,
121,
49,
121,
47,
121,
84,
124,
83,
124,
242,
124,
138,
126,
135,
126,
136,
126,
139,
126,
134,
126,
141,
126,
77,
127,
187,
127,
48,
128,
221,
129,
24,
134,
42,
134,
38,
134,
31,
134,
35,
134,
28,
134,
25,
134,
39,
134,
46,
134,
33,
134,
32,
134,
41,
134,
30,
134,
37,
134,
41,
136,
29,
136,
27,
136,
32,
136,
36,
136,
28,
136,
43,
136,
74,
136,
109,
137,
105,
137,
110,
137,
107,
137,
250,
137,
121,
139,
120,
139,
69,
139,
122,
139,
123,
139,
16,
141,
20,
141,
175,
141,
142,
142,
140,
142,
94,
143,
91,
143,
93,
143,
70,
145,
68,
145,
69,
145,
185,
145,
63,
148,
59,
148,
54,
148,
41,
148,
61,
148,
60,
148,
48,
148,
57,
148,
42,
148,
55,
148,
44,
148,
64,
148,
49,
148,
229,
149,
228,
149,
227,
149,
53,
151,
58,
151,
191,
151,
225,
151,
100,
152,
201,
152,
198,
152,
192,
152,
88,
153,
86,
153,
57,
154,
61,
154,
70,
154,
68,
154,
66,
154,
65,
154,
58,
154,
63,
154,
205,
154,
21,
155,
23,
155,
24,
155,
22,
155,
58,
155,
82,
155,
43,
156,
29,
156,
28,
156,
44,
156,
35,
156,
40,
156,
41,
156,
36,
156,
33,
156,
183,
157,
182,
157,
188,
157,
193,
157,
199,
157,
202,
157,
207,
157,
190,
157,
197,
157,
195,
157,
187,
157,
181,
157,
206,
157,
185,
157,
186,
157,
172,
157,
200,
157,
177,
157,
173,
157,
204,
157,
179,
157,
205,
157,
178,
157,
122,
158,
156,
158,
235,
158,
238,
158,
237,
158,
27,
159,
24,
159,
26,
159,
49,
159,
78,
159,
101,
159,
100,
159,
146,
159,
185,
78,
198,
86,
197,
86,
203,
86,
113,
89,
75,
91,
76,
91,
213,
93,
209,
93,
242,
94,
33,
101,
32,
101,
38,
101,
34,
101,
11,
107,
8,
107,
9,
107,
13,
108,
85,
112,
86,
112,
87,
112,
82,
112,
30,
114,
31,
114,
169,
114,
127,
115,
216,
116,
213,
116,
217,
116,
215,
116,
109,
118,
173,
118,
53,
121,
180,
121,
112,
122,
113,
122,
87,
124,
92,
124,
89,
124,
91,
124,
90,
124,
244,
124,
241,
124,
145,
126,
79,
127,
135,
127,
222,
129,
107,
130,
52,
134,
53,
134,
51,
134,
44,
134,
50,
134,
54,
134,
44,
136,
40,
136,
38,
136,
42,
136,
37,
136,
113,
137,
191,
137,
190,
137,
251,
137,
126,
139,
132,
139,
130,
139,
134,
139,
133,
139,
127,
139,
21,
141,
149,
142,
148,
142,
154,
142,
146,
142,
144,
142,
150,
142,
151,
142,
96,
143,
98,
143,
71,
145,
76,
148,
80,
148,
74,
148,
75,
148,
79,
148,
71,
148,
69,
148,
72,
148,
73,
148,
70,
148,
63,
151,
227,
151,
106,
152,
105,
152,
203,
152,
84,
153,
91,
153,
78,
154,
83,
154,
84,
154,
76,
154,
79,
154,
72,
154,
74,
154,
73,
154,
82,
154,
80,
154,
208,
154,
25,
155,
43,
155,
59,
155,
86,
155,
85,
155,
70,
156,
72,
156,
63,
156,
68,
156,
57,
156,
51,
156,
65,
156,
60,
156,
55,
156,
52,
156,
50,
156,
61,
156,
54,
156,
219,
157,
210,
157,
222,
157,
218,
157,
203,
157,
208,
157,
220,
157,
209,
157,
223,
157,
233,
157,
217,
157,
216,
157,
214,
157,
245,
157,
213,
157,
221,
157,
182,
158,
240,
158,
53,
159,
51,
159,
50,
159,
66,
159,
107,
159,
149,
159,
162,
159,
61,
81,
153,
82,
232,
88,
231,
88,
114,
89,
77,
91,
216,
93,
47,
136,
79,
95,
1,
98,
3,
98,
4,
98,
41,
101,
37,
101,
150,
101,
235,
102,
17,
107,
18,
107,
15,
107,
202,
107,
91,
112,
90,
112,
34,
114,
130,
115,
129,
115,
131,
115,
112,
118,
212,
119,
103,
124,
102,
124,
149,
126,
108,
130,
58,
134,
64,
134,
57,
134,
60,
134,
49,
134,
59,
134,
62,
134,
48,
136,
50,
136,
46,
136,
51,
136,
118,
137,
116,
137,
115,
137,
254,
137,
140,
139,
142,
139,
139,
139,
136,
139,
69,
140,
25,
141,
152,
142,
100,
143,
99,
143,
188,
145,
98,
148,
85,
148,
93,
148,
87,
148,
94,
148,
196,
151,
197,
151,
0,
152,
86,
154,
89,
154,
30,
155,
31,
155,
32,
155,
82,
156,
88,
156,
80,
156,
74,
156,
77,
156,
75,
156,
85,
156,
89,
156,
76,
156,
78,
156,
251,
157,
247,
157,
239,
157,
227,
157,
235,
157,
248,
157,
228,
157,
246,
157,
225,
157,
238,
157,
230,
157,
242,
157,
240,
157,
226,
157,
236,
157,
244,
157,
243,
157,
232,
157,
237,
157,
194,
158,
208,
158,
242,
158,
243,
158,
6,
159,
28,
159,
56,
159,
55,
159,
54,
159,
67,
159,
79,
159,
113,
159,
112,
159,
110,
159,
111,
159,
211,
86,
205,
86,
78,
91,
109,
92,
45,
101,
237,
102,
238,
102,
19,
107,
95,
112,
97,
112,
93,
112,
96,
112,
35,
114,
219,
116,
229,
116,
213,
119,
56,
121,
183,
121,
182,
121,
106,
124,
151,
126,
137,
127,
109,
130,
67,
134,
56,
136,
55,
136,
53,
136,
75,
136,
148,
139,
149,
139,
158,
142,
159,
142,
160,
142,
157,
142,
190,
145,
189,
145,
194,
145,
107,
148,
104,
148,
105,
148,
229,
150,
70,
151,
67,
151,
71,
151,
199,
151,
229,
151,
94,
154,
213,
154,
89,
155,
99,
156,
103,
156,
102,
156,
98,
156,
94,
156,
96,
156,
2,
158,
254,
157,
7,
158,
3,
158,
6,
158,
5,
158,
0,
158,
1,
158,
9,
158,
255,
157,
253,
157,
4,
158,
160,
158,
30,
159,
70,
159,
116,
159,
117,
159,
118,
159,
212,
86,
46,
101,
184,
101,
24,
107,
25,
107,
23,
107,
26,
107,
98,
112,
38,
114,
170,
114,
216,
119,
217,
119,
57,
121,
105,
124,
107,
124,
246,
124,
154,
126,
152,
126,
155,
126,
153,
126,
224,
129,
225,
129,
70,
134,
71,
134,
72,
134,
121,
137,
122,
137,
124,
137,
123,
137,
255,
137,
152,
139,
153,
139,
165,
142,
164,
142,
163,
142,
110,
148,
109,
148,
111,
148,
113,
148,
115,
148,
73,
151,
114,
152,
95,
153,
104,
156,
110,
156,
109,
156,
11,
158,
13,
158,
16,
158,
15,
158,
18,
158,
17,
158,
161,
158,
245,
158,
9,
159,
71,
159,
120,
159,
123,
159,
122,
159,
121,
159,
30,
87,
102,
112,
111,
124,
60,
136,
178,
141,
166,
142,
195,
145,
116,
148,
120,
148,
118,
148,
117,
148,
96,
154,
116,
156,
115,
156,
113,
156,
117,
156,
20,
158,
19,
158,
246,
158,
10,
159,
164,
159,
104,
112,
101,
112,
247,
124,
106,
134,
62,
136,
61,
136,
63,
136,
158,
139,
156,
140,
169,
142,
201,
142,
75,
151,
115,
152,
116,
152,
204,
152,
97,
153,
171,
153,
100,
154,
102,
154,
103,
154,
36,
155,
21,
158,
23,
158,
72,
159,
7,
98,
30,
107,
39,
114,
76,
134,
168,
142,
130,
148,
128,
148,
129,
148,
105,
154,
104,
154,
46,
155,
25,
158,
41,
114,
75,
134,
159,
139,
131,
148,
121,
156,
183,
158,
117,
118,
107,
154,
122,
156,
29,
158,
105,
112,
106,
112,
164,
158,
126,
159,
73,
159,
152,
159,
129,
120,
185,
146,
207,
136,
187,
88,
82,
96,
167,
124,
250,
90,
84,
37,
102,
37,
87,
37,
96,
37,
108,
37,
99,
37,
90,
37,
105,
37,
93,
37,
82,
37,
100,
37,
85,
37,
94,
37,
106,
37,
97,
37,
88,
37,
103,
37,
91,
37,
83,
37,
101,
37,
86,
37,
95,
37,
107,
37,
98,
37,
89,
37,
104,
37,
92,
37,
81,
37,
80,
37,
109,
37,
110,
37,
112,
37,
111,
37,
147,
37,
0,
0,
0,
0,
0,
0,
0,
48,
1,
48,
2,
48,
183,
0,
37,
32,
38,
32,
168,
0,
3,
48,
173,
0,
21,
32,
37,
34,
60,
255,
60,
34,
24,
32,
25,
32,
28,
32,
29,
32,
20,
48,
21,
48,
8,
48,
9,
48,
10,
48,
11,
48,
12,
48,
13,
48,
14,
48,
15,
48,
16,
48,
17,
48,
177,
0,
215,
0,
247,
0,
96,
34,
100,
34,
101,
34,
30,
34,
52,
34,
176,
0,
50,
32,
51,
32,
3,
33,
43,
33,
224,
255,
225,
255,
229,
255,
66,
38,
64,
38,
32,
34,
165,
34,
18,
35,
2,
34,
7,
34,
97,
34,
82,
34,
167,
0,
59,
32,
6,
38,
5,
38,
203,
37,
207,
37,
206,
37,
199,
37,
198,
37,
161,
37,
160,
37,
179,
37,
178,
37,
189,
37,
188,
37,
146,
33,
144,
33,
145,
33,
147,
33,
148,
33,
19,
48,
106,
34,
107,
34,
26,
34,
61,
34,
29,
34,
53,
34,
43,
34,
44,
34,
8,
34,
11,
34,
134,
34,
135,
34,
130,
34,
131,
34,
42,
34,
41,
34,
39,
34,
40,
34,
226,
255,
210,
33,
212,
33,
0,
34,
3,
34,
180,
0,
94,
255,
199,
2,
216,
2,
221,
2,
218,
2,
217,
2,
184,
0,
219,
2,
161,
0,
191,
0,
208,
2,
46,
34,
17,
34,
15,
34,
164,
0,
9,
33,
48,
32,
193,
37,
192,
37,
183,
37,
182,
37,
100,
38,
96,
38,
97,
38,
101,
38,
103,
38,
99,
38,
153,
34,
200,
37,
163,
37,
208,
37,
209,
37,
146,
37,
164,
37,
165,
37,
168,
37,
167,
37,
166,
37,
169,
37,
104,
38,
15,
38,
14,
38,
28,
38,
30,
38,
182,
0,
32,
32,
33,
32,
149,
33,
151,
33,
153,
33,
150,
33,
152,
33,
109,
38,
105,
38,
106,
38,
108,
38,
127,
50,
28,
50,
22,
33,
199,
51,
34,
33,
194,
51,
216,
51,
33,
33,
172,
32,
174,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
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,
255,
2,
255,
3,
255,
4,
255,
5,
255,
6,
255,
7,
255,
8,
255,
9,
255,
10,
255,
11,
255,
12,
255,
13,
255,
14,
255,
15,
255,
16,
255,
17,
255,
18,
255,
19,
255,
20,
255,
21,
255,
22,
255,
23,
255,
24,
255,
25,
255,
26,
255,
27,
255,
28,
255,
29,
255,
30,
255,
31,
255,
32,
255,
33,
255,
34,
255,
35,
255,
36,
255,
37,
255,
38,
255,
39,
255,
40,
255,
41,
255,
42,
255,
43,
255,
44,
255,
45,
255,
46,
255,
47,
255,
48,
255,
49,
255,
50,
255,
51,
255,
52,
255,
53,
255,
54,
255,
55,
255,
56,
255,
57,
255,
58,
255,
59,
255,
230,
255,
61,
255,
62,
255,
63,
255,
64,
255,
65,
255,
66,
255,
67,
255,
68,
255,
69,
255,
70,
255,
71,
255,
72,
255,
73,
255,
74,
255,
75,
255,
76,
255,
77,
255,
78,
255,
79,
255,
80,
255,
81,
255,
82,
255,
83,
255,
84,
255,
85,
255,
86,
255,
87,
255,
88,
255,
89,
255,
90,
255,
91,
255,
92,
255,
93,
255,
227,
255,
49,
49,
50,
49,
51,
49,
52,
49,
53,
49,
54,
49,
55,
49,
56,
49,
57,
49,
58,
49,
59,
49,
60,
49,
61,
49,
62,
49,
63,
49,
64,
49,
65,
49,
66,
49,
67,
49,
68,
49,
69,
49,
70,
49,
71,
49,
72,
49,
73,
49,
74,
49,
75,
49,
76,
49,
77,
49,
78,
49,
79,
49,
80,
49,
81,
49,
82,
49,
83,
49,
84,
49,
85,
49,
86,
49,
87,
49,
88,
49,
89,
49,
90,
49,
91,
49,
92,
49,
93,
49,
94,
49,
95,
49,
96,
49,
97,
49,
98,
49,
99,
49,
100,
49,
101,
49,
102,
49,
103,
49,
104,
49,
105,
49,
106,
49,
107,
49,
108,
49,
109,
49,
110,
49,
111,
49,
112,
49,
113,
49,
114,
49,
115,
49,
116,
49,
117,
49,
118,
49,
119,
49,
120,
49,
121,
49,
122,
49,
123,
49,
124,
49,
125,
49,
126,
49,
127,
49,
128,
49,
129,
49,
130,
49,
131,
49,
132,
49,
133,
49,
134,
49,
135,
49,
136,
49,
137,
49,
138,
49,
139,
49,
140,
49,
141,
49,
142,
49,
112,
33,
113,
33,
114,
33,
115,
33,
116,
33,
117,
33,
118,
33,
119,
33,
120,
33,
121,
33,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
96,
33,
97,
33,
98,
33,
99,
33,
100,
33,
101,
33,
102,
33,
103,
33,
104,
33,
105,
33,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
145,
3,
146,
3,
147,
3,
148,
3,
149,
3,
150,
3,
151,
3,
152,
3,
153,
3,
154,
3,
155,
3,
156,
3,
157,
3,
158,
3,
159,
3,
160,
3,
161,
3,
163,
3,
164,
3,
165,
3,
166,
3,
167,
3,
168,
3,
169,
3,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
177,
3,
178,
3,
179,
3,
180,
3,
181,
3,
182,
3,
183,
3,
184,
3,
185,
3,
186,
3,
187,
3,
188,
3,
189,
3,
190,
3,
191,
3,
192,
3,
193,
3,
195,
3,
196,
3,
197,
3,
198,
3,
199,
3,
200,
3,
201,
3,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
37,
2,
37,
12,
37,
16,
37,
24,
37,
20,
37,
28,
37,
44,
37,
36,
37,
52,
37,
60,
37,
1,
37,
3,
37,
15,
37,
19,
37,
27,
37,
23,
37,
35,
37,
51,
37,
43,
37,
59,
37,
75,
37,
32,
37,
47,
37,
40,
37,
55,
37,
63,
37,
29,
37,
48,
37,
37,
37,
56,
37,
66,
37,
18,
37,
17,
37,
26,
37,
25,
37,
22,
37,
21,
37,
14,
37,
13,
37,
30,
37,
31,
37,
33,
37,
34,
37,
38,
37,
39,
37,
41,
37,
42,
37,
45,
37,
46,
37,
49,
37,
50,
37,
53,
37,
54,
37,
57,
37,
58,
37,
61,
37,
62,
37,
64,
37,
65,
37,
67,
37,
68,
37,
69,
37,
70,
37,
71,
37,
72,
37,
73,
37,
74,
37,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
149,
51,
150,
51,
151,
51,
19,
33,
152,
51,
196,
51,
163,
51,
164,
51,
165,
51,
166,
51,
153,
51,
154,
51,
155,
51,
156,
51,
157,
51,
158,
51,
159,
51,
160,
51,
161,
51,
162,
51,
202,
51,
141,
51,
142,
51,
143,
51,
207,
51,
136,
51,
137,
51,
200,
51,
167,
51,
168,
51,
176,
51,
177,
51,
178,
51,
179,
51,
180,
51,
181,
51,
182,
51,
183,
51,
184,
51,
185,
51,
128,
51,
129,
51,
130,
51,
131,
51,
132,
51,
186,
51,
187,
51,
188,
51,
189,
51,
190,
51,
191,
51,
144,
51,
145,
51,
146,
51,
147,
51,
148,
51,
38,
33,
192,
51,
193,
51,
138,
51,
139,
51,
140,
51,
214,
51,
197,
51,
173,
51,
174,
51,
175,
51,
219,
51,
169,
51,
170,
51,
171,
51,
172,
51,
221,
51,
208,
51,
211,
51,
195,
51,
201,
51,
220,
51,
198,
51,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
198,
0,
208,
0,
170,
0,
38,
1,
0,
0,
50,
1,
0,
0,
63,
1,
65,
1,
216,
0,
82,
1,
186,
0,
222,
0,
102,
1,
74,
1,
0,
0,
96,
50,
97,
50,
98,
50,
99,
50,
100,
50,
101,
50,
102,
50,
103,
50,
104,
50,
105,
50,
106,
50,
107,
50,
108,
50,
109,
50,
110,
50,
111,
50,
112,
50,
113,
50,
114,
50,
115,
50,
116,
50,
117,
50,
118,
50,
119,
50,
120,
50,
121,
50,
122,
50,
123,
50,
208,
36,
209,
36,
210,
36,
211,
36,
212,
36,
213,
36,
214,
36,
215,
36,
216,
36,
217,
36,
218,
36,
219,
36,
220,
36,
221,
36,
222,
36,
223,
36,
224,
36,
225,
36,
226,
36,
227,
36,
228,
36,
229,
36,
230,
36,
231,
36,
232,
36,
233,
36,
96,
36,
97,
36,
98,
36,
99,
36,
100,
36,
101,
36,
102,
36,
103,
36,
104,
36,
105,
36,
106,
36,
107,
36,
108,
36,
109,
36,
110,
36,
189,
0,
83,
33,
84,
33,
188,
0,
190,
0,
91,
33,
92,
33,
93,
33,
94,
33,
230,
0,
17,
1,
240,
0,
39,
1,
49,
1,
51,
1,
56,
1,
64,
1,
66,
1,
248,
0,
83,
1,
223,
0,
254,
0,
103,
1,
75,
1,
73,
1,
0,
50,
1,
50,
2,
50,
3,
50,
4,
50,
5,
50,
6,
50,
7,
50,
8,
50,
9,
50,
10,
50,
11,
50,
12,
50,
13,
50,
14,
50,
15,
50,
16,
50,
17,
50,
18,
50,
19,
50,
20,
50,
21,
50,
22,
50,
23,
50,
24,
50,
25,
50,
26,
50,
27,
50,
156,
36,
157,
36,
158,
36,
159,
36,
160,
36,
161,
36,
162,
36,
163,
36,
164,
36,
165,
36,
166,
36,
167,
36,
168,
36,
169,
36,
170,
36,
171,
36,
172,
36,
173,
36,
174,
36,
175,
36,
176,
36,
177,
36,
178,
36,
179,
36,
180,
36,
181,
36,
116,
36,
117,
36,
118,
36,
119,
36,
120,
36,
121,
36,
122,
36,
123,
36,
124,
36,
125,
36,
126,
36,
127,
36,
128,
36,
129,
36,
130,
36,
185,
0,
178,
0,
179,
0,
116,
32,
127,
32,
129,
32,
130,
32,
131,
32,
132,
32,
65,
48,
66,
48,
67,
48,
68,
48,
69,
48,
70,
48,
71,
48,
72,
48,
73,
48,
74,
48,
75,
48,
76,
48,
77,
48,
78,
48,
79,
48,
80,
48,
81,
48,
82,
48,
83,
48,
84,
48,
85,
48,
86,
48,
87,
48,
88,
48,
89,
48,
90,
48,
91,
48,
92,
48,
93,
48,
94,
48,
95,
48,
96,
48,
97,
48,
98,
48,
99,
48,
100,
48,
101,
48,
102,
48,
103,
48,
104,
48,
105,
48,
106,
48,
107,
48,
108,
48,
109,
48,
110,
48,
111,
48,
112,
48,
113,
48,
114,
48,
115,
48,
116,
48,
117,
48,
118,
48,
119,
48,
120,
48,
121,
48,
122,
48,
123,
48,
124,
48,
125,
48,
126,
48,
127,
48,
128,
48,
129,
48,
130,
48,
131,
48,
132,
48,
133,
48,
134,
48,
135,
48,
136,
48,
137,
48,
138,
48,
139,
48,
140,
48,
141,
48,
142,
48,
143,
48,
144,
48,
145,
48,
146,
48,
147,
48,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
161,
48,
162,
48,
163,
48,
164,
48,
165,
48,
166,
48,
167,
48,
168,
48,
169,
48,
170,
48,
171,
48,
172,
48,
173,
48,
174,
48,
175,
48,
176,
48,
177,
48,
178,
48,
179,
48,
180,
48,
181,
48,
182,
48,
183,
48,
184,
48,
185,
48,
186,
48,
187,
48,
188,
48,
189,
48,
190,
48,
191,
48,
192,
48,
193,
48,
194,
48,
195,
48,
196,
48,
197,
48,
198,
48,
199,
48,
200,
48,
201,
48,
202,
48,
203,
48,
204,
48,
205,
48,
206,
48,
207,
48,
208,
48,
209,
48,
210,
48,
211,
48,
212,
48,
213,
48,
214,
48,
215,
48,
216,
48,
217,
48,
218,
48,
219,
48,
220,
48,
221,
48,
222,
48,
223,
48,
224,
48,
225,
48,
226,
48,
227,
48,
228,
48,
229,
48,
230,
48,
231,
48,
232,
48,
233,
48,
234,
48,
235,
48,
236,
48,
237,
48,
238,
48,
239,
48,
240,
48,
241,
48,
242,
48,
243,
48,
244,
48,
245,
48,
246,
48,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
16,
4,
17,
4,
18,
4,
19,
4,
20,
4,
21,
4,
1,
4,
22,
4,
23,
4,
24,
4,
25,
4,
26,
4,
27,
4,
28,
4,
29,
4,
30,
4,
31,
4,
32,
4,
33,
4,
34,
4,
35,
4,
36,
4,
37,
4,
38,
4,
39,
4,
40,
4,
41,
4,
42,
4,
43,
4,
44,
4,
45,
4,
46,
4,
47,
4,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
48,
4,
49,
4,
50,
4,
51,
4,
52,
4,
53,
4,
81,
4,
54,
4,
55,
4,
56,
4,
57,
4,
58,
4,
59,
4,
60,
4,
61,
4,
62,
4,
63,
4,
64,
4,
65,
4,
66,
4,
67,
4,
68,
4,
69,
4,
70,
4,
71,
4,
72,
4,
73,
4,
74,
4,
75,
4,
76,
4,
77,
4,
78,
4,
79,
4,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
172,
1,
172,
4,
172,
7,
172,
8,
172,
9,
172,
10,
172,
16,
172,
17,
172,
18,
172,
19,
172,
20,
172,
21,
172,
22,
172,
23,
172,
25,
172,
26,
172,
27,
172,
28,
172,
29,
172,
32,
172,
36,
172,
44,
172,
45,
172,
47,
172,
48,
172,
49,
172,
56,
172,
57,
172,
60,
172,
64,
172,
75,
172,
77,
172,
84,
172,
88,
172,
92,
172,
112,
172,
113,
172,
116,
172,
119,
172,
120,
172,
122,
172,
128,
172,
129,
172,
131,
172,
132,
172,
133,
172,
134,
172,
137,
172,
138,
172,
139,
172,
140,
172,
144,
172,
148,
172,
156,
172,
157,
172,
159,
172,
160,
172,
161,
172,
168,
172,
169,
172,
170,
172,
172,
172,
175,
172,
176,
172,
184,
172,
185,
172,
187,
172,
188,
172,
189,
172,
193,
172,
196,
172,
200,
172,
204,
172,
213,
172,
215,
172,
224,
172,
225,
172,
228,
172,
231,
172,
232,
172,
234,
172,
236,
172,
239,
172,
240,
172,
241,
172,
243,
172,
245,
172,
246,
172,
252,
172,
253,
172,
0,
173,
4,
173,
6,
173,
12,
173,
13,
173,
15,
173,
17,
173,
24,
173,
28,
173,
32,
173,
41,
173,
44,
173,
45,
173,
52,
173,
53,
173,
56,
173,
60,
173,
68,
173,
69,
173,
71,
173,
73,
173,
80,
173,
84,
173,
88,
173,
97,
173,
99,
173,
108,
173,
109,
173,
112,
173,
115,
173,
116,
173,
117,
173,
118,
173,
123,
173,
124,
173,
125,
173,
127,
173,
129,
173,
130,
173,
136,
173,
137,
173,
140,
173,
144,
173,
156,
173,
157,
173,
164,
173,
183,
173,
192,
173,
193,
173,
196,
173,
200,
173,
208,
173,
209,
173,
211,
173,
220,
173,
224,
173,
228,
173,
248,
173,
249,
173,
252,
173,
255,
173,
0,
174,
1,
174,
8,
174,
9,
174,
11,
174,
13,
174,
20,
174,
48,
174,
49,
174,
52,
174,
55,
174,
56,
174,
58,
174,
64,
174,
65,
174,
67,
174,
69,
174,
70,
174,
74,
174,
76,
174,
77,
174,
78,
174,
80,
174,
84,
174,
86,
174,
92,
174,
93,
174,
95,
174,
96,
174,
97,
174,
101,
174,
104,
174,
105,
174,
108,
174,
112,
174,
120,
174,
121,
174,
123,
174,
124,
174,
125,
174,
132,
174,
133,
174,
140,
174,
188,
174,
189,
174,
190,
174,
192,
174,
196,
174,
204,
174,
205,
174,
207,
174,
208,
174,
209,
174,
216,
174,
217,
174,
220,
174,
232,
174,
235,
174,
237,
174,
244,
174,
248,
174,
252,
174,
7,
175,
8,
175
],
'i8',
ALLOC_NONE,
Runtime.GLOBAL_BASE + 107292
);
/* memory initializer */ allocate(
[
13,
175,
16,
175,
44,
175,
45,
175,
48,
175,
50,
175,
52,
175,
60,
175,
61,
175,
63,
175,
65,
175,
66,
175,
67,
175,
72,
175,
73,
175,
80,
175,
92,
175,
93,
175,
100,
175,
101,
175,
121,
175,
128,
175,
132,
175,
136,
175,
144,
175,
145,
175,
149,
175,
156,
175,
184,
175,
185,
175,
188,
175,
192,
175,
199,
175,
200,
175,
201,
175,
203,
175,
205,
175,
206,
175,
212,
175,
220,
175,
232,
175,
233,
175,
240,
175,
241,
175,
244,
175,
248,
175,
0,
176,
1,
176,
4,
176,
12,
176,
16,
176,
20,
176,
28,
176,
29,
176,
40,
176,
68,
176,
69,
176,
72,
176,
74,
176,
76,
176,
78,
176,
83,
176,
84,
176,
85,
176,
87,
176,
89,
176,
93,
176,
124,
176,
125,
176,
128,
176,
132,
176,
140,
176,
141,
176,
143,
176,
145,
176,
152,
176,
153,
176,
154,
176,
156,
176,
159,
176,
160,
176,
161,
176,
162,
176,
168,
176,
169,
176,
171,
176,
172,
176,
173,
176,
174,
176,
175,
176,
177,
176,
179,
176,
180,
176,
181,
176,
184,
176,
188,
176,
196,
176,
197,
176,
199,
176,
200,
176,
201,
176,
208,
176,
209,
176,
212,
176,
216,
176,
224,
176,
229,
176,
8,
177,
9,
177,
11,
177,
12,
177,
16,
177,
18,
177,
19,
177,
24,
177,
25,
177,
27,
177,
28,
177,
29,
177,
35,
177,
36,
177,
37,
177,
40,
177,
44,
177,
52,
177,
53,
177,
55,
177,
56,
177,
57,
177,
64,
177,
65,
177,
68,
177,
72,
177,
80,
177,
81,
177,
84,
177,
85,
177,
88,
177,
92,
177,
96,
177,
120,
177,
121,
177,
124,
177,
128,
177,
130,
177,
136,
177,
137,
177,
139,
177,
141,
177,
146,
177,
147,
177,
148,
177,
152,
177,
156,
177,
168,
177,
204,
177,
208,
177,
212,
177,
220,
177,
221,
177,
223,
177,
232,
177,
233,
177,
236,
177,
240,
177,
249,
177,
251,
177,
253,
177,
4,
178,
5,
178,
8,
178,
11,
178,
12,
178,
20,
178,
21,
178,
23,
178,
25,
178,
32,
178,
52,
178,
60,
178,
88,
178,
92,
178,
96,
178,
104,
178,
105,
178,
116,
178,
117,
178,
124,
178,
132,
178,
133,
178,
137,
178,
144,
178,
145,
178,
148,
178,
152,
178,
153,
178,
154,
178,
160,
178,
161,
178,
163,
178,
165,
178,
166,
178,
170,
178,
172,
178,
176,
178,
180,
178,
200,
178,
201,
178,
204,
178,
208,
178,
210,
178,
216,
178,
217,
178,
219,
178,
221,
178,
226,
178,
228,
178,
229,
178,
230,
178,
232,
178,
235,
178,
236,
178,
237,
178,
238,
178,
239,
178,
243,
178,
244,
178,
245,
178,
247,
178,
248,
178,
249,
178,
250,
178,
251,
178,
255,
178,
0,
179,
1,
179,
4,
179,
8,
179,
16,
179,
17,
179,
19,
179,
20,
179,
21,
179,
28,
179,
84,
179,
85,
179,
86,
179,
88,
179,
91,
179,
92,
179,
94,
179,
95,
179,
100,
179,
101,
179,
103,
179,
105,
179,
107,
179,
110,
179,
112,
179,
113,
179,
116,
179,
120,
179,
128,
179,
129,
179,
131,
179,
132,
179,
133,
179,
140,
179,
144,
179,
148,
179,
160,
179,
161,
179,
168,
179,
172,
179,
196,
179,
197,
179,
200,
179,
203,
179,
204,
179,
206,
179,
208,
179,
212,
179,
213,
179,
215,
179,
217,
179,
219,
179,
221,
179,
224,
179,
228,
179,
232,
179,
252,
179,
16,
180,
24,
180,
28,
180,
32,
180,
40,
180,
41,
180,
43,
180,
52,
180,
80,
180,
81,
180,
84,
180,
88,
180,
96,
180,
97,
180,
99,
180,
101,
180,
108,
180,
128,
180,
136,
180,
157,
180,
164,
180,
168,
180,
172,
180,
181,
180,
183,
180,
185,
180,
192,
180,
196,
180,
200,
180,
208,
180,
213,
180,
220,
180,
221,
180,
224,
180,
227,
180,
228,
180,
230,
180,
236,
180,
237,
180,
239,
180,
241,
180,
248,
180,
20,
181,
21,
181,
24,
181,
27,
181,
28,
181,
36,
181,
37,
181,
39,
181,
40,
181,
41,
181,
42,
181,
48,
181,
49,
181,
52,
181,
56,
181,
64,
181,
65,
181,
67,
181,
68,
181,
69,
181,
75,
181,
76,
181,
77,
181,
80,
181,
84,
181,
92,
181,
93,
181,
95,
181,
96,
181,
97,
181,
160,
181,
161,
181,
164,
181,
168,
181,
170,
181,
171,
181,
176,
181,
177,
181,
179,
181,
180,
181,
181,
181,
187,
181,
188,
181,
189,
181,
192,
181,
196,
181,
204,
181,
205,
181,
207,
181,
208,
181,
209,
181,
216,
181,
236,
181,
16,
182,
17,
182,
20,
182,
24,
182,
37,
182,
44,
182,
52,
182,
72,
182,
100,
182,
104,
182,
156,
182,
157,
182,
160,
182,
164,
182,
171,
182,
172,
182,
177,
182,
212,
182,
240,
182,
244,
182,
248,
182,
0,
183,
1,
183,
5,
183,
40,
183,
41,
183,
44,
183,
47,
183,
48,
183,
56,
183,
57,
183,
59,
183,
68,
183,
72,
183,
76,
183,
84,
183,
85,
183,
96,
183,
100,
183,
104,
183,
112,
183,
113,
183,
115,
183,
117,
183,
124,
183,
125,
183,
128,
183,
132,
183,
140,
183,
141,
183,
143,
183,
144,
183,
145,
183,
146,
183,
150,
183,
151,
183,
152,
183,
153,
183,
156,
183,
160,
183,
168,
183,
169,
183,
171,
183,
172,
183,
173,
183,
180,
183,
181,
183,
184,
183,
199,
183,
201,
183,
236,
183,
237,
183,
240,
183,
244,
183,
252,
183,
253,
183,
255,
183,
0,
184,
1,
184,
7,
184,
8,
184,
9,
184,
12,
184,
16,
184,
24,
184,
25,
184,
27,
184,
29,
184,
36,
184,
37,
184,
40,
184,
44,
184,
52,
184,
53,
184,
55,
184,
56,
184,
57,
184,
64,
184,
68,
184,
81,
184,
83,
184,
92,
184,
93,
184,
96,
184,
100,
184,
108,
184,
109,
184,
111,
184,
113,
184,
120,
184,
124,
184,
141,
184,
168,
184,
176,
184,
180,
184,
184,
184,
192,
184,
193,
184,
195,
184,
197,
184,
204,
184,
208,
184,
212,
184,
221,
184,
223,
184,
225,
184,
232,
184,
233,
184,
236,
184,
240,
184,
248,
184,
249,
184,
251,
184,
253,
184,
4,
185,
24,
185,
32,
185,
60,
185,
61,
185,
64,
185,
68,
185,
76,
185,
79,
185,
81,
185,
88,
185,
89,
185,
92,
185,
96,
185,
104,
185,
105,
185,
107,
185,
109,
185,
116,
185,
117,
185,
120,
185,
124,
185,
132,
185,
133,
185,
135,
185,
137,
185,
138,
185,
141,
185,
142,
185,
172,
185,
173,
185,
176,
185,
180,
185,
188,
185,
189,
185,
191,
185,
193,
185,
200,
185,
201,
185,
204,
185,
206,
185,
207,
185,
208,
185,
209,
185,
210,
185,
216,
185,
217,
185,
219,
185,
221,
185,
222,
185,
225,
185,
227,
185,
228,
185,
229,
185,
232,
185,
236,
185,
244,
185,
245,
185,
247,
185,
248,
185,
249,
185,
250,
185,
0,
186,
1,
186,
8,
186,
21,
186,
56,
186,
57,
186,
60,
186,
64,
186,
66,
186,
72,
186,
73,
186,
75,
186,
77,
186,
78,
186,
83,
186,
84,
186,
85,
186,
88,
186,
92,
186,
100,
186,
101,
186,
103,
186,
104,
186,
105,
186,
112,
186,
113,
186,
116,
186,
120,
186,
131,
186,
132,
186,
133,
186,
135,
186,
140,
186,
168,
186,
169,
186,
171,
186,
172,
186,
176,
186,
178,
186,
184,
186,
185,
186,
187,
186,
189,
186,
196,
186,
200,
186,
216,
186,
217,
186,
252,
186,
0,
187,
4,
187,
13,
187,
15,
187,
17,
187,
24,
187,
28,
187,
32,
187,
41,
187,
43,
187,
52,
187,
53,
187,
54,
187,
56,
187,
59,
187,
60,
187,
61,
187,
62,
187,
68,
187,
69,
187,
71,
187,
73,
187,
77,
187,
79,
187,
80,
187,
84,
187,
88,
187,
97,
187,
99,
187,
108,
187,
136,
187,
140,
187,
144,
187,
164,
187,
168,
187,
172,
187,
180,
187,
183,
187,
192,
187,
196,
187,
200,
187,
208,
187,
211,
187,
248,
187,
249,
187,
252,
187,
255,
187,
0,
188,
2,
188,
8,
188,
9,
188,
11,
188,
12,
188,
13,
188,
15,
188,
17,
188,
20,
188,
21,
188,
22,
188,
23,
188,
24,
188,
27,
188,
28,
188,
29,
188,
30,
188,
31,
188,
36,
188,
37,
188,
39,
188,
41,
188,
45,
188,
48,
188,
49,
188,
52,
188,
56,
188,
64,
188,
65,
188,
67,
188,
68,
188,
69,
188,
73,
188,
76,
188,
77,
188,
80,
188,
93,
188,
132,
188,
133,
188,
136,
188,
139,
188,
140,
188,
142,
188,
148,
188,
149,
188,
151,
188,
153,
188,
154,
188,
160,
188,
161,
188,
164,
188,
167,
188,
168,
188,
176,
188,
177,
188,
179,
188,
180,
188,
181,
188,
188,
188,
189,
188,
192,
188,
196,
188,
205,
188,
207,
188,
208,
188,
209,
188,
213,
188,
216,
188,
220,
188,
244,
188,
245,
188,
246,
188,
248,
188,
252,
188,
4,
189,
5,
189,
7,
189,
9,
189,
16,
189,
20,
189,
36,
189,
44,
189,
64,
189,
72,
189,
73,
189,
76,
189,
80,
189,
88,
189,
89,
189,
100,
189,
104,
189,
128,
189,
129,
189,
132,
189,
135,
189,
136,
189,
137,
189,
138,
189,
144,
189,
145,
189,
147,
189,
149,
189,
153,
189,
154,
189,
156,
189,
164,
189,
176,
189,
184,
189,
212,
189,
213,
189,
216,
189,
220,
189,
233,
189,
240,
189,
244,
189,
248,
189,
0,
190,
3,
190,
5,
190,
12,
190,
13,
190,
16,
190,
20,
190,
28,
190,
29,
190,
31,
190,
68,
190,
69,
190,
72,
190,
76,
190,
78,
190,
84,
190,
85,
190,
87,
190,
89,
190,
90,
190,
91,
190,
96,
190,
97,
190,
100,
190,
104,
190,
106,
190,
112,
190,
113,
190,
115,
190,
116,
190,
117,
190,
123,
190,
124,
190,
125,
190,
128,
190,
132,
190,
140,
190,
141,
190,
143,
190,
144,
190,
145,
190,
152,
190,
153,
190,
168,
190,
208,
190,
209,
190,
212,
190,
215,
190,
216,
190,
224,
190,
227,
190,
228,
190,
229,
190,
236,
190,
1,
191,
8,
191,
9,
191,
24,
191,
25,
191,
27,
191,
28,
191,
29,
191,
64,
191,
65,
191,
68,
191,
72,
191,
80,
191,
81,
191,
85,
191,
148,
191,
176,
191,
197,
191,
204,
191,
205,
191,
208,
191,
212,
191,
220,
191,
223,
191,
225,
191,
60,
192,
81,
192,
88,
192,
92,
192,
96,
192,
104,
192,
105,
192,
144,
192,
145,
192,
148,
192,
152,
192,
160,
192,
161,
192,
163,
192,
165,
192,
172,
192,
173,
192,
175,
192,
176,
192,
179,
192,
180,
192,
181,
192,
182,
192,
188,
192,
189,
192,
191,
192,
192,
192,
193,
192,
197,
192,
200,
192,
201,
192,
204,
192,
208,
192,
216,
192,
217,
192,
219,
192,
220,
192,
221,
192,
228,
192,
229,
192,
232,
192,
236,
192,
244,
192,
245,
192,
247,
192,
249,
192,
0,
193,
4,
193,
8,
193,
16,
193,
21,
193,
28,
193,
29,
193,
30,
193,
31,
193,
32,
193,
35,
193,
36,
193,
38,
193,
39,
193,
44,
193,
45,
193,
47,
193,
48,
193,
49,
193,
54,
193,
56,
193,
57,
193,
60,
193,
64,
193,
72,
193,
73,
193,
75,
193,
76,
193,
77,
193,
84,
193,
85,
193,
88,
193,
92,
193,
100,
193,
101,
193,
103,
193,
104,
193,
105,
193,
112,
193,
116,
193,
120,
193,
133,
193,
140,
193,
141,
193,
142,
193,
144,
193,
148,
193,
150,
193,
156,
193,
157,
193,
159,
193,
161,
193,
165,
193,
168,
193,
169,
193,
172,
193,
176,
193,
189,
193,
196,
193,
200,
193,
204,
193,
212,
193,
215,
193,
216,
193,
224,
193,
228,
193,
232,
193,
240,
193,
241,
193,
243,
193,
252,
193,
253,
193,
0,
194,
4,
194,
12,
194,
13,
194,
15,
194,
17,
194,
24,
194,
25,
194,
28,
194,
31,
194,
32,
194,
40,
194,
41,
194,
43,
194,
45,
194,
47,
194,
49,
194,
50,
194,
52,
194,
72,
194,
80,
194,
81,
194,
84,
194,
88,
194,
96,
194,
101,
194,
108,
194,
109,
194,
112,
194,
116,
194,
124,
194,
125,
194,
127,
194,
129,
194,
136,
194,
137,
194,
144,
194,
152,
194,
155,
194,
157,
194,
164,
194,
165,
194,
168,
194,
172,
194,
173,
194,
180,
194,
181,
194,
183,
194,
185,
194,
220,
194,
221,
194,
224,
194,
227,
194,
228,
194,
235,
194,
236,
194,
237,
194,
239,
194,
241,
194,
246,
194,
248,
194,
249,
194,
251,
194,
252,
194,
0,
195,
8,
195,
9,
195,
12,
195,
13,
195,
19,
195,
20,
195,
21,
195,
24,
195,
28,
195,
36,
195,
37,
195,
40,
195,
41,
195,
69,
195,
104,
195,
105,
195,
108,
195,
112,
195,
114,
195,
120,
195,
121,
195,
124,
195,
125,
195,
132,
195,
136,
195,
140,
195,
192,
195,
216,
195,
217,
195,
220,
195,
223,
195,
224,
195,
226,
195,
232,
195,
233,
195,
237,
195,
244,
195,
245,
195,
248,
195,
8,
196,
16,
196,
36,
196,
44,
196,
48,
196,
52,
196,
60,
196,
61,
196,
72,
196,
100,
196,
101,
196,
104,
196,
108,
196,
116,
196,
117,
196,
121,
196,
128,
196,
148,
196,
156,
196,
184,
196,
188,
196,
233,
196,
240,
196,
241,
196,
244,
196,
248,
196,
250,
196,
255,
196,
0,
197,
1,
197,
12,
197,
16,
197,
20,
197,
28,
197,
40,
197,
41,
197,
44,
197,
48,
197,
56,
197,
57,
197,
59,
197,
61,
197,
68,
197,
69,
197,
72,
197,
73,
197,
74,
197,
76,
197,
77,
197,
78,
197,
83,
197,
84,
197,
85,
197,
87,
197,
88,
197,
89,
197,
93,
197,
94,
197,
96,
197,
97,
197,
100,
197,
104,
197,
112,
197,
113,
197,
115,
197,
116,
197,
117,
197,
124,
197,
125,
197,
128,
197,
132,
197,
135,
197,
140,
197,
141,
197,
143,
197,
145,
197,
149,
197,
151,
197,
152,
197,
156,
197,
160,
197,
169,
197,
180,
197,
181,
197,
184,
197,
185,
197,
187,
197,
188,
197,
189,
197,
190,
197,
196,
197,
197,
197,
198,
197,
199,
197,
200,
197,
201,
197,
202,
197,
204,
197,
206,
197,
208,
197,
209,
197,
212,
197,
216,
197,
224,
197,
225,
197,
227,
197,
229,
197,
236,
197,
237,
197,
238,
197,
240,
197,
244,
197,
246,
197,
247,
197,
252,
197,
253,
197,
254,
197,
255,
197,
0,
198,
1,
198,
5,
198,
6,
198,
7,
198,
8,
198,
12,
198,
16,
198,
24,
198,
25,
198,
27,
198,
28,
198,
36,
198,
37,
198,
40,
198,
44,
198,
45,
198,
46,
198,
48,
198,
51,
198,
52,
198,
53,
198,
55,
198,
57,
198,
59,
198,
64,
198,
65,
198,
68,
198,
72,
198,
80,
198,
81,
198,
83,
198,
84,
198,
85,
198,
92,
198,
93,
198,
96,
198,
108,
198,
111,
198,
113,
198,
120,
198,
121,
198,
124,
198,
128,
198,
136,
198,
137,
198,
139,
198,
141,
198,
148,
198,
149,
198,
152,
198,
156,
198,
164,
198,
165,
198,
167,
198,
169,
198,
176,
198,
177,
198,
180,
198,
184,
198,
185,
198,
186,
198,
192,
198,
193,
198,
195,
198,
197,
198,
204,
198,
205,
198,
208,
198,
212,
198,
220,
198,
221,
198,
224,
198,
225,
198,
232,
198,
233,
198,
236,
198,
240,
198,
248,
198,
249,
198,
253,
198,
4,
199,
5,
199,
8,
199,
12,
199,
20,
199,
21,
199,
23,
199,
25,
199,
32,
199,
33,
199,
36,
199,
40,
199,
48,
199,
49,
199,
51,
199,
53,
199,
55,
199,
60,
199,
61,
199,
64,
199,
68,
199,
74,
199,
76,
199,
77,
199,
79,
199,
81,
199,
82,
199,
83,
199,
84,
199,
85,
199,
86,
199,
87,
199,
88,
199,
92,
199,
96,
199,
104,
199,
107,
199,
116,
199,
117,
199,
120,
199,
124,
199,
125,
199,
126,
199,
131,
199,
132,
199,
133,
199,
135,
199,
136,
199,
137,
199,
138,
199,
142,
199,
144,
199,
145,
199,
148,
199,
150,
199,
151,
199,
152,
199,
154,
199,
160,
199,
161,
199,
163,
199,
164,
199,
165,
199,
166,
199,
172,
199,
173,
199,
176,
199,
180,
199,
188,
199,
189,
199,
191,
199,
192,
199,
193,
199,
200,
199,
201,
199,
204,
199,
206,
199,
208,
199,
216,
199,
221,
199,
228,
199,
232,
199,
236,
199,
0,
200,
1,
200,
4,
200,
8,
200,
10,
200,
16,
200,
17,
200,
19,
200,
21,
200,
22,
200,
28,
200,
29,
200,
32,
200,
36,
200,
44,
200,
45,
200,
47,
200,
49,
200,
56,
200,
60,
200,
64,
200,
72,
200,
73,
200,
76,
200,
77,
200,
84,
200,
112,
200,
113,
200,
116,
200,
120,
200,
122,
200,
128,
200,
129,
200,
131,
200,
133,
200,
134,
200,
135,
200,
139,
200,
140,
200,
141,
200,
148,
200,
157,
200,
159,
200,
161,
200,
168,
200,
188,
200,
189,
200,
196,
200,
200,
200,
204,
200,
212,
200,
213,
200,
215,
200,
217,
200,
224,
200,
225,
200,
228,
200,
245,
200,
252,
200,
253,
200,
0,
201,
4,
201,
5,
201,
6,
201,
12,
201,
13,
201,
15,
201,
17,
201,
24,
201,
44,
201,
52,
201,
80,
201,
81,
201,
84,
201,
88,
201,
96,
201,
97,
201,
99,
201,
108,
201,
112,
201,
116,
201,
124,
201,
136,
201,
137,
201,
140,
201,
144,
201,
152,
201,
153,
201,
155,
201,
157,
201,
192,
201,
193,
201,
196,
201,
199,
201,
200,
201,
202,
201,
208,
201,
209,
201,
211,
201,
213,
201,
214,
201,
217,
201,
218,
201,
220,
201,
221,
201,
224,
201,
226,
201,
228,
201,
231,
201,
236,
201,
237,
201,
239,
201,
240,
201,
241,
201,
248,
201,
249,
201,
252,
201,
0,
202,
8,
202,
9,
202,
11,
202,
12,
202,
13,
202,
20,
202,
24,
202,
41,
202,
76,
202,
77,
202,
80,
202,
84,
202,
92,
202,
93,
202,
95,
202,
96,
202,
97,
202,
104,
202,
125,
202,
132,
202,
152,
202,
188,
202,
189,
202,
192,
202,
196,
202,
204,
202,
205,
202,
207,
202,
209,
202,
211,
202,
216,
202,
217,
202,
224,
202,
236,
202,
244,
202,
8,
203,
16,
203,
20,
203,
24,
203,
32,
203,
33,
203,
65,
203,
72,
203,
73,
203,
76,
203,
80,
203,
88,
203,
89,
203,
93,
203,
100,
203,
120,
203,
121,
203,
156,
203,
184,
203,
212,
203,
228,
203,
231,
203,
233,
203,
12,
204,
13,
204,
16,
204,
20,
204,
28,
204,
29,
204,
33,
204,
34,
204,
39,
204,
40,
204,
41,
204,
44,
204,
46,
204,
48,
204,
56,
204,
57,
204,
59,
204,
60,
204,
61,
204,
62,
204,
68,
204,
69,
204,
72,
204,
76,
204,
84,
204,
85,
204,
87,
204,
88,
204,
89,
204,
96,
204,
100,
204,
102,
204,
104,
204,
112,
204,
117,
204,
152,
204,
153,
204,
156,
204,
160,
204,
168,
204,
169,
204,
171,
204,
172,
204,
173,
204,
180,
204,
181,
204,
184,
204,
188,
204,
196,
204,
197,
204,
199,
204,
201,
204,
208,
204,
212,
204,
228,
204,
236,
204,
240,
204,
1,
205,
8,
205,
9,
205,
12,
205,
16,
205,
24,
205,
25,
205,
27,
205,
29,
205,
36,
205,
40,
205,
44,
205,
57,
205,
92,
205,
96,
205,
100,
205,
108,
205,
109,
205,
111,
205,
113,
205,
120,
205,
136,
205,
148,
205,
149,
205,
152,
205,
156,
205,
164,
205,
165,
205,
167,
205,
169,
205,
176,
205,
196,
205,
204,
205,
208,
205,
232,
205,
236,
205,
240,
205,
248,
205,
249,
205,
251,
205,
253,
205,
4,
206,
8,
206,
12,
206,
20,
206,
25,
206,
32,
206,
33,
206,
36,
206,
40,
206,
48,
206,
49,
206,
51,
206,
53,
206,
88,
206,
89,
206,
92,
206,
95,
206,
96,
206,
97,
206,
104,
206,
105,
206,
107,
206,
109,
206,
116,
206,
117,
206,
120,
206,
124,
206,
132,
206,
133,
206,
135,
206,
137,
206,
144,
206,
145,
206,
148,
206,
152,
206,
160,
206,
161,
206,
163,
206,
164,
206,
165,
206,
172,
206,
173,
206,
193,
206,
228,
206,
229,
206,
232,
206,
235,
206,
236,
206,
244,
206,
245,
206,
247,
206,
248,
206,
249,
206,
0,
207,
1,
207,
4,
207,
8,
207,
16,
207,
17,
207,
19,
207,
21,
207,
28,
207,
32,
207,
36,
207,
44,
207,
45,
207,
47,
207,
48,
207,
49,
207,
56,
207,
84,
207,
85,
207,
88,
207,
92,
207,
100,
207,
101,
207,
103,
207,
105,
207,
112,
207,
113,
207,
116,
207,
120,
207,
128,
207,
133,
207,
140,
207,
161,
207,
168,
207,
176,
207,
196,
207,
224,
207,
225,
207,
228,
207,
232,
207,
240,
207,
241,
207,
243,
207,
245,
207,
252,
207,
0,
208,
4,
208,
17,
208,
24,
208,
45,
208,
52,
208,
53,
208,
56,
208,
60,
208,
68,
208,
69,
208,
71,
208,
73,
208,
80,
208,
84,
208,
88,
208,
96,
208,
108,
208,
109,
208,
112,
208,
116,
208,
124,
208,
125,
208,
129,
208,
164,
208,
165,
208,
168,
208,
172,
208,
180,
208,
181,
208,
183,
208,
185,
208,
192,
208,
193,
208,
196,
208,
200,
208,
201,
208,
208,
208,
209,
208,
211,
208,
212,
208,
213,
208,
220,
208,
221,
208,
224,
208,
228,
208,
236,
208,
237,
208,
239,
208,
240,
208,
241,
208,
248,
208,
13,
209,
48,
209,
49,
209,
52,
209,
56,
209,
58,
209,
64,
209,
65,
209,
67,
209,
68,
209,
69,
209,
76,
209,
77,
209,
80,
209,
84,
209,
92,
209,
93,
209,
95,
209,
97,
209,
104,
209,
108,
209,
124,
209,
132,
209,
136,
209,
160,
209,
161,
209,
164,
209,
168,
209,
176,
209,
177,
209,
179,
209,
181,
209,
186,
209,
188,
209,
192,
209,
216,
209,
244,
209,
248,
209,
7,
210,
9,
210,
16,
210,
44,
210,
45,
210,
48,
210,
52,
210,
60,
210,
61,
210,
63,
210,
65,
210,
72,
210,
92,
210,
100,
210,
128,
210,
129,
210,
132,
210,
136,
210,
144,
210,
145,
210,
149,
210,
156,
210,
160,
210,
164,
210,
172,
210,
177,
210,
184,
210,
185,
210,
188,
210,
191,
210,
192,
210,
194,
210,
200,
210,
201,
210,
203,
210,
212,
210,
216,
210,
220,
210,
228,
210,
229,
210,
240,
210,
241,
210,
244,
210,
248,
210,
0,
211,
1,
211,
3,
211,
5,
211,
12,
211,
13,
211,
14,
211,
16,
211,
20,
211,
22,
211,
28,
211,
29,
211,
31,
211,
32,
211,
33,
211,
37,
211,
40,
211,
41,
211,
44,
211,
48,
211,
56,
211,
57,
211,
59,
211,
60,
211,
61,
211,
68,
211,
69,
211,
124,
211,
125,
211,
128,
211,
132,
211,
140,
211,
141,
211,
143,
211,
144,
211,
145,
211,
152,
211,
153,
211,
156,
211,
160,
211,
168,
211,
169,
211,
171,
211,
173,
211,
180,
211,
184,
211,
188,
211,
196,
211,
197,
211,
200,
211,
201,
211,
208,
211,
216,
211,
225,
211,
227,
211,
236,
211,
237,
211,
240,
211,
244,
211,
252,
211,
253,
211,
255,
211,
1,
212,
8,
212,
29,
212,
64,
212,
68,
212,
92,
212,
96,
212,
100,
212,
109,
212,
111,
212,
120,
212,
121,
212,
124,
212,
127,
212,
128,
212,
130,
212,
136,
212,
137,
212,
139,
212,
141,
212,
148,
212,
169,
212,
204,
212,
208,
212,
212,
212,
220,
212,
223,
212,
232,
212,
236,
212,
240,
212,
248,
212,
251,
212,
253,
212,
4,
213,
8,
213,
12,
213,
20,
213,
21,
213,
23,
213,
60,
213,
61,
213,
64,
213,
68,
213,
76,
213,
77,
213,
79,
213,
81,
213,
88,
213,
89,
213,
92,
213,
96,
213,
101,
213,
104,
213,
105,
213,
107,
213,
109,
213,
116,
213,
117,
213,
120,
213,
124,
213,
132,
213,
133,
213,
135,
213,
136,
213,
137,
213,
144,
213,
165,
213,
200,
213,
201,
213,
204,
213,
208,
213,
210,
213,
216,
213,
217,
213,
219,
213,
221,
213,
228,
213,
229,
213,
232,
213,
236,
213,
244,
213,
245,
213,
247,
213,
249,
213,
0,
214,
1,
214,
4,
214,
8,
214,
16,
214,
17,
214,
19,
214,
20,
214,
21,
214,
28,
214,
32,
214,
36,
214,
45,
214,
56,
214,
57,
214,
60,
214,
64,
214,
69,
214,
72,
214,
73,
214,
75,
214,
77,
214,
81,
214,
84,
214,
85,
214,
88,
214,
92,
214,
103,
214,
105,
214,
112,
214,
113,
214,
116,
214,
131,
214,
133,
214,
140,
214,
141,
214,
144,
214,
148,
214,
157,
214,
159,
214,
161,
214,
168,
214,
172,
214,
176,
214,
185,
214,
187,
214,
196,
214,
197,
214,
200,
214,
204,
214,
209,
214,
212,
214,
215,
214,
217,
214,
224,
214,
228,
214,
232,
214,
240,
214,
245,
214,
252,
214,
253,
214,
0,
215,
4,
215,
17,
215,
24,
215,
25,
215,
28,
215,
32,
215,
40,
215,
41,
215,
43,
215,
45,
215,
52,
215,
53,
215,
56,
215,
60,
215,
68,
215,
71,
215,
73,
215,
80,
215,
81,
215,
84,
215,
86,
215,
87,
215,
88,
215,
89,
215,
96,
215,
97,
215,
99,
215,
101,
215,
105,
215,
108,
215,
112,
215,
116,
215,
124,
215,
125,
215,
129,
215,
136,
215,
137,
215,
140,
215,
144,
215,
152,
215,
153,
215,
155,
215,
157,
215,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
61,
79,
115,
79,
71,
80,
249,
80,
160,
82,
239,
83,
117,
84,
229,
84,
9,
86,
193,
90,
182,
91,
135,
102,
182,
103,
183,
103,
239,
103,
76,
107,
194,
115,
194,
117,
60,
122,
219,
130,
4,
131,
87,
136,
136,
136,
54,
138,
200,
140,
207,
141,
251,
142,
230,
143,
213,
153,
59,
82,
116,
83,
4,
84,
106,
96,
100,
97,
188,
107,
207,
115,
26,
129,
186,
137,
210,
137,
163,
149,
131,
79,
10,
82,
190,
88,
120,
89,
230,
89,
114,
94,
121,
94,
199,
97,
192,
99,
70,
103,
236,
103,
127,
104,
151,
111,
78,
118,
11,
119,
245,
120,
8,
122,
255,
122,
33,
124,
157,
128,
110,
130,
113,
130,
235,
138,
147,
149,
107,
78,
157,
85,
247,
102,
52,
110,
163,
120,
237,
122,
91,
132,
16,
137,
78,
135,
168,
151,
216,
82,
78,
87,
42,
88,
76,
93,
31,
97,
190,
97,
33,
98,
98,
101,
209,
103,
68,
106,
27,
110,
24,
117,
179,
117,
227,
118,
176,
119,
58,
125,
175,
144,
81,
148,
82,
148,
149,
159,
35,
83,
172,
92,
50,
117,
219,
128,
64,
146,
152,
149,
91,
82,
8,
88,
220,
89,
161,
92,
23,
93,
183,
94,
58,
95,
74,
95,
119,
97,
95,
108,
122,
117,
134,
117,
224,
124,
115,
125,
177,
125,
140,
127,
84,
129,
33,
130,
145,
133,
65,
137,
27,
139,
252,
146,
77,
150,
71,
156,
203,
78,
247,
78,
11,
80,
241,
81,
79,
88,
55,
97,
62,
97,
104,
97,
57,
101,
234,
105,
17,
111,
165,
117,
134,
118,
214,
118,
135,
123,
165,
130,
203,
132,
0,
249,
167,
147,
139,
149,
128,
85,
162,
91,
81,
87,
1,
249,
179,
124,
185,
127,
181,
145,
40,
80,
187,
83,
69,
92,
232,
93,
210,
98,
110,
99,
218,
100,
231,
100,
32,
110,
172,
112,
91,
121,
221,
141,
30,
142,
2,
249,
125,
144,
69,
146,
248,
146,
126,
78,
246,
78,
101,
80,
254,
93,
250,
94,
6,
97,
87,
105,
113,
129,
84,
134,
71,
142,
117,
147,
43,
154,
94,
78,
145,
80,
112,
103,
64,
104,
9,
81,
141,
82,
146,
82,
162,
106,
188,
119,
16,
146,
212,
158,
171,
82,
47,
96,
242,
143,
72,
80,
169,
97,
237,
99,
202,
100,
60,
104,
132,
106,
192,
111,
136,
129,
161,
137,
148,
150,
5,
88,
125,
114,
172,
114,
4,
117,
121,
125,
109,
126,
169,
128,
139,
137,
116,
139,
99,
144,
81,
157,
137,
98,
122,
108,
84,
111,
80,
125,
58,
127,
35,
138,
124,
81,
74,
97,
157,
123,
25,
139,
87,
146,
140,
147,
172,
78,
211,
79,
30,
80,
190,
80,
6,
81,
193,
82,
205,
82,
127,
83,
112,
87,
131,
88,
154,
94,
145,
95,
118,
97,
172,
97,
206,
100,
108,
101,
111,
102,
187,
102,
244,
102,
151,
104,
135,
109,
133,
112,
241,
112,
159,
116,
165,
116,
202,
116,
217,
117,
108,
120,
236,
120,
223,
122,
246,
122,
69,
125,
147,
125,
21,
128,
63,
128,
27,
129,
150,
131,
102,
139,
21,
143,
21,
144,
225,
147,
3,
152,
56,
152,
90,
154,
232,
155,
194,
79,
83,
85,
58,
88,
81,
89,
99,
91,
70,
92,
184,
96,
18,
98,
66,
104,
176,
104,
232,
104,
170,
110,
76,
117,
120,
118,
206,
120,
61,
122,
251,
124,
107,
126,
124,
126,
8,
138,
161,
138,
63,
140,
142,
150,
196,
157,
228,
83,
233,
83,
74,
84,
113,
84,
250,
86,
209,
89,
100,
91,
59,
92,
171,
94,
247,
98,
55,
101,
69,
101,
114,
101,
160,
102,
175,
103,
193,
105,
189,
108,
252,
117,
144,
118,
126,
119,
63,
122,
148,
127,
3,
128,
161,
128,
143,
129,
230,
130,
253,
130,
240,
131,
193,
133,
49,
136,
180,
136,
165,
138,
3,
249,
156,
143,
46,
147,
199,
150,
103,
152,
216,
154,
19,
159,
237,
84,
155,
101,
242,
102,
143,
104,
64,
122,
55,
140,
96,
157,
240,
86,
100,
87,
17,
93,
6,
102,
177,
104,
205,
104,
254,
110,
40,
116,
158,
136,
228,
155,
104,
108,
4,
249,
168,
154,
155,
79,
108,
81,
113,
81,
159,
82,
84,
91,
229,
93,
80,
96,
109,
96,
241,
98,
167,
99,
59,
101,
217,
115,
122,
122,
163,
134,
162,
140,
143,
151,
50,
78,
225,
91,
8,
98,
156,
103,
220,
116,
209,
121,
211,
131,
135,
138,
178,
138,
232,
141,
78,
144,
75,
147,
70,
152,
211,
94,
232,
105,
255,
133,
237,
144,
5,
249,
160,
81,
152,
91,
236,
91,
99,
97,
250,
104,
62,
107,
76,
112,
47,
116,
216,
116,
161,
123,
80,
127,
197,
131,
192,
137,
171,
140,
220,
149,
40,
153,
46,
82,
93,
96,
236,
98,
2,
144,
138,
79,
73,
81,
33,
83,
217,
88,
227,
94,
224,
102,
56,
109,
154,
112,
194,
114,
214,
115,
80,
123,
241,
128,
91,
148,
102,
83,
155,
99,
107,
127,
86,
78,
128,
80,
74,
88,
222,
88,
42,
96,
39,
97,
208,
98,
208,
105,
65,
155,
143,
91,
24,
125,
177,
128,
95,
143,
164,
78,
209,
80,
172,
84,
172,
85,
12,
91,
160,
93,
231,
93,
42,
101,
78,
101,
33,
104,
75,
106,
225,
114,
142,
118,
239,
119,
94,
125,
249,
127,
160,
129,
78,
133,
223,
134,
3,
143,
78,
143,
202,
144,
3,
153,
85,
154,
171,
155,
24,
78,
69,
78,
93,
78,
199,
78,
241,
79,
119,
81,
254,
82,
64,
83,
227,
83,
229,
83,
142,
84,
20,
86,
117,
87,
162,
87,
199,
91,
135,
93,
208,
94,
252,
97,
216,
98,
81,
101,
184,
103,
233,
103,
203,
105,
80,
107,
198,
107,
236,
107,
66,
108,
157,
110,
120,
112,
215,
114,
150,
115,
3,
116,
191,
119,
233,
119,
118,
122,
127,
125,
9,
128,
252,
129,
5,
130,
10,
130,
223,
130,
98,
136,
51,
139,
252,
140,
192,
142,
17,
144,
177,
144,
100,
146,
182,
146,
210,
153,
69,
154,
233,
156,
215,
157,
156,
159,
11,
87,
64,
92,
202,
131,
160,
151,
171,
151,
180,
158,
27,
84,
152,
122,
164,
127,
217,
136,
205,
142,
225,
144,
0,
88,
72,
92,
152,
99,
159,
122,
174,
91,
19,
95,
121,
122,
174,
122,
142,
130,
172,
142,
38,
80,
56,
82,
248,
82,
119,
83,
8,
87,
243,
98,
114,
99,
10,
107,
195,
109,
55,
119,
165,
83,
87,
115,
104,
133,
118,
142,
213,
149,
58,
103,
195,
106,
112,
111,
109,
138,
204,
142,
75,
153,
6,
249,
119,
102,
120,
107,
180,
140,
60,
155,
7,
249,
235,
83,
45,
87,
78,
89,
198,
99,
251,
105,
234,
115,
69,
120,
186,
122,
197,
122,
254,
124,
117,
132,
143,
137,
115,
141,
53,
144,
168,
149,
251,
82,
71,
87,
71,
117,
96,
123,
204,
131,
30,
146,
8,
249,
88,
106,
75,
81,
75,
82,
135,
82,
31,
98,
216,
104,
117,
105,
153,
150,
197,
80,
164,
82,
228,
82,
195,
97,
164,
101,
57,
104,
255,
105,
126,
116,
75,
123,
185,
130,
235,
131,
178,
137,
57,
139,
209,
143,
73,
153,
9,
249,
202,
78,
151,
89,
210,
100,
17,
102,
142,
106,
52,
116,
129,
121,
189,
121,
169,
130,
126,
136,
127,
136,
95,
137,
10,
249,
38,
147,
11,
79,
202,
83,
37,
96,
113,
98,
114,
108,
26,
125,
102,
125,
152,
78,
98,
81,
220,
119,
175,
128,
1,
79,
14,
79,
118,
81,
128,
81,
220,
85,
104,
86,
59,
87,
250,
87,
252,
87,
20,
89,
71,
89,
147,
89,
196,
91,
144,
92,
14,
93,
241,
93,
126,
94,
204,
95,
128,
98,
215,
101,
227,
101,
30,
103,
31,
103,
94,
103,
203,
104,
196,
104,
95,
106,
58,
107,
35,
108,
125,
108,
130,
108,
199,
109,
152,
115,
38,
116,
42,
116,
130,
116,
163,
116,
120,
117,
127,
117,
129,
120,
239,
120,
65,
121,
71,
121,
72,
121,
122,
121,
149,
123,
0,
125,
186,
125,
136,
127,
6,
128,
45,
128,
140,
128,
24,
138,
79,
139,
72,
140,
119,
141,
33,
147,
36,
147,
226,
152,
81,
153,
14,
154,
15,
154,
101,
154,
146,
158,
202,
125,
118,
79,
9,
84,
238,
98,
84,
104,
209,
145,
171,
85,
58,
81,
11,
249,
12,
249,
28,
90,
230,
97,
13,
249,
207,
98,
255,
98,
14,
249,
15,
249,
16,
249,
17,
249,
18,
249,
19,
249,
163,
144,
20,
249,
21,
249,
22,
249,
23,
249,
24,
249,
254,
138,
25,
249,
26,
249,
27,
249,
28,
249,
150,
102,
29,
249,
86,
113,
30,
249,
31,
249,
227,
150,
32,
249,
79,
99,
122,
99,
87,
83,
33,
249,
143,
103,
96,
105,
115,
110,
34,
249,
55,
117,
35,
249,
36,
249,
37,
249,
13,
125,
38,
249,
39,
249,
114,
136,
202,
86,
24,
90,
40,
249,
41,
249,
42,
249,
43,
249,
44,
249,
67,
78,
45,
249,
103,
81,
72,
89,
240,
103,
16,
128,
46,
249,
115,
89,
116,
94,
154,
100,
202,
121,
245,
95,
108,
96,
200,
98,
123,
99,
231,
91,
215,
91,
170,
82,
47,
249,
116,
89,
41,
95,
18,
96,
48,
249,
49,
249,
50,
249,
89,
116,
51,
249,
52,
249,
53,
249,
54,
249,
55,
249,
56,
249,
209,
153,
57,
249,
58,
249,
59,
249,
60,
249,
61,
249,
62,
249,
63,
249,
64,
249,
65,
249,
66,
249,
67,
249,
195,
111,
68,
249,
69,
249,
191,
129,
178,
143,
241,
96,
70,
249,
71,
249,
102,
129,
72,
249,
73,
249,
63,
92,
74,
249,
75,
249,
76,
249,
77,
249,
78,
249,
79,
249,
80,
249,
81,
249,
233,
90,
37,
138,
123,
103,
16,
125,
82,
249,
83,
249,
84,
249,
85,
249,
86,
249,
87,
249,
253,
128,
88,
249,
89,
249,
60,
92,
229,
108,
63,
83,
186,
110,
26,
89,
54,
131,
57,
78,
182,
78,
70,
79,
174,
85,
24,
87,
199,
88,
86,
95,
183,
101,
230,
101,
128,
106,
181,
107,
77,
110,
237,
119,
239,
122,
30,
124,
222,
125,
203,
134,
146,
136,
50,
145,
91,
147,
187,
100,
190,
111,
122,
115,
184,
117,
84,
144,
86,
85,
77,
87,
186,
97,
212,
100,
199,
102,
225,
109,
91,
110,
109,
111,
185,
111,
240,
117,
67,
128,
189,
129,
65,
133,
131,
137,
199,
138,
90,
139,
31,
147,
147,
108,
83,
117,
84,
123,
15,
142,
93,
144,
16,
85,
2,
88,
88,
88,
98,
94,
7,
98,
158,
100,
224,
104,
118,
117,
214,
124,
179,
135,
232,
158,
227,
78,
136,
87,
110,
87,
39,
89,
13,
92,
177,
92,
54,
94,
133,
95,
52,
98,
225,
100,
179,
115,
250,
129,
139,
136,
184,
140,
138,
150,
219,
158,
133,
91,
183,
95,
179,
96,
18,
80,
0,
82,
48,
82,
22,
87,
53,
88,
87,
88,
14,
92,
96,
92,
246,
92,
139,
93,
166,
94,
146,
95,
188,
96,
17,
99,
137,
99,
23,
100,
67,
104,
249,
104,
194,
106,
216,
109,
33,
110,
212,
110,
228,
111,
254,
113,
220,
118,
121,
119,
177,
121,
59,
122,
4,
132,
169,
137,
237,
140,
243,
141,
72,
142,
3,
144,
20,
144,
83,
144,
253,
144,
77,
147,
118,
150,
220,
151,
210,
107,
6,
112,
88,
114,
162,
114,
104,
115,
99,
119,
191,
121,
228,
123,
155,
126,
128,
139,
169,
88,
199,
96,
102,
101,
253,
101,
190,
102,
140,
108,
30,
113,
201,
113,
90,
140,
19,
152,
109,
78,
129,
122,
221,
78,
172,
81,
205,
81,
213,
82,
12,
84,
167,
97,
113,
103,
80,
104,
223,
104,
30,
109,
124,
111,
188,
117,
179,
119,
229,
122,
244,
128,
99,
132,
133,
146,
92,
81,
151,
101,
92,
103,
147,
103,
216,
117,
199,
122,
115,
131,
90,
249,
70,
140,
23,
144,
45,
152,
111,
92,
192,
129,
154,
130,
65,
144,
111,
144,
13,
146,
151,
95,
157,
93,
89,
106,
200,
113,
123,
118,
73,
123,
228,
133,
4,
139,
39,
145,
48,
154,
135,
85,
246,
97,
91,
249,
105,
118,
133,
127,
63,
134,
186,
135,
248,
136,
143,
144,
92,
249,
27,
109,
217,
112,
222,
115,
97,
125,
61,
132,
93,
249,
106,
145,
241,
153,
94,
249,
130,
78,
117,
83,
4,
107,
18,
107,
62,
112,
27,
114,
45,
134,
30,
158,
76,
82,
163,
143,
80,
93,
229,
100,
44,
101,
22,
107,
235,
111,
67,
124,
156,
126,
205,
133,
100,
137,
189,
137,
201,
98,
216,
129,
31,
136,
202,
94,
23,
103,
106,
109,
252,
114,
5,
116,
111,
116,
130,
135,
222,
144,
134,
79,
13,
93,
160,
95,
10,
132,
183,
81,
160,
99,
101,
117,
174,
78,
6,
80,
105,
81,
201,
81,
129,
104,
17,
106,
174,
124,
177,
124,
231,
124,
111,
130,
210,
138,
27,
143,
207,
145,
182,
79,
55,
81,
245,
82,
66,
84,
236,
94,
110,
97,
62,
98,
197,
101,
218,
106,
254,
111,
42,
121,
220,
133,
35,
136,
173,
149,
98,
154,
106,
154,
151,
158,
206,
158,
155,
82,
198,
102,
119,
107,
29,
112,
43,
121,
98,
143,
66,
151,
144,
97,
0,
98,
35,
101,
35,
111,
73,
113,
137,
116,
244,
125,
111,
128,
238,
132,
38,
143,
35,
144,
74,
147,
189,
81,
23,
82,
163,
82,
12,
109,
200,
112,
194,
136,
201,
94,
130,
101,
174,
107,
194,
111,
62,
124,
117,
115,
228,
78,
54,
79,
249,
86,
95,
249,
186,
92,
186,
93,
28,
96,
178,
115,
45,
123,
154,
127,
206,
127,
70,
128,
30,
144,
52,
146,
246,
150,
72,
151,
24,
152,
97,
159,
139,
79,
167,
111,
174,
121,
180,
145,
183,
150,
222,
82,
96,
249,
136,
100,
196,
100,
211,
106,
94,
111,
24,
112,
16,
114,
231,
118,
1,
128,
6,
134,
92,
134,
239,
141,
5,
143,
50,
151,
111,
155,
250,
157,
117,
158,
140,
120,
127,
121,
160,
125,
201,
131,
4,
147,
127,
158,
147,
158,
214,
138,
223,
88,
4,
95,
39,
103,
39,
112,
207,
116,
96,
124,
126,
128,
33,
81,
40,
112,
98,
114,
202,
120,
194,
140,
218,
140,
244,
140,
247,
150,
134,
78,
218,
80,
238,
91,
214,
94,
153,
101,
206,
113,
66,
118,
173,
119,
74,
128,
252,
132,
124,
144,
39,
155,
141,
159,
216,
88,
65,
90,
98,
92,
19,
106,
218,
109,
15,
111,
59,
118,
47,
125,
55,
126,
30,
133,
56,
137,
228,
147,
75,
150,
137,
82,
210,
101,
243,
103,
180,
105,
65,
109,
156,
110,
15,
112,
9,
116,
96,
116,
89,
117,
36,
118,
107,
120,
44,
139,
94,
152,
109,
81,
46,
98,
120,
150,
150,
79,
43,
80,
25,
93,
234,
109,
184,
125,
42,
143,
139,
95,
68,
97,
23,
104,
97,
249,
134,
150,
210,
82,
139,
128,
220,
81,
204,
81,
94,
105,
28,
122,
190,
125,
241,
131,
117,
150,
218,
79,
41,
82,
152,
83,
15,
84,
14,
85,
101,
92,
167,
96,
78,
103,
168,
104,
108,
109,
129,
114,
248,
114,
6,
116,
131,
116,
98,
249,
226,
117,
108,
124,
121,
127,
184,
127,
137,
131,
207,
136,
225,
136,
204,
145,
208,
145,
226,
150,
201,
155,
29,
84,
126,
111,
208,
113,
152,
116,
250,
133,
170,
142,
163,
150,
87,
156,
159,
158,
151,
103,
203,
109,
51,
116,
232,
129,
22,
151,
44,
120,
203,
122,
32,
123,
146,
124,
105,
100,
106,
116,
242,
117,
188,
120,
232,
120,
172,
153,
84,
155,
187,
158,
222,
91,
85,
94,
32,
111,
156,
129,
171,
131,
136,
144,
7,
78,
77,
83,
41,
90,
210,
93,
78,
95,
98,
97,
61,
99,
105,
102,
252,
102,
255,
110,
43,
111,
99,
112,
158,
119,
44,
132,
19,
133,
59,
136,
19,
143,
69,
153,
59,
156,
28,
85,
185,
98,
43,
103,
171,
108,
9,
131,
106,
137,
122,
151,
161,
78,
132,
89,
216,
95,
217,
95,
27,
103,
178,
125,
84,
127,
146,
130,
43,
131,
189,
131,
30,
143,
153,
144,
203,
87,
185,
89,
146,
90,
208,
91,
39,
102,
154,
103,
133,
104,
207,
107,
100,
113,
117,
127,
183,
140,
227,
140,
129,
144,
69,
155,
8,
129,
138,
140,
76,
150,
64,
154,
165,
158,
95,
91,
19,
108,
27,
115,
242,
118,
223,
118,
12,
132,
170,
81,
147,
137,
77,
81,
149,
81,
201,
82,
201,
104,
148,
108,
4,
119,
32,
119,
191,
125,
236,
125,
98,
151,
181,
158,
197,
110,
17,
133,
165,
81,
13,
84,
125,
84,
14,
102,
157,
102,
39,
105,
159,
110,
191,
118,
145,
119,
23,
131,
194,
132,
159,
135,
105,
145,
152,
146,
244,
156,
130,
136,
174,
79,
146,
81,
223,
82,
198,
89,
61,
94,
85,
97,
120,
100,
121,
100,
174,
102,
208,
103,
33,
106,
205,
107,
219,
107,
95,
114,
97,
114,
65,
116,
56,
119,
219,
119,
23,
128,
188,
130,
5,
131,
0,
139,
40,
139,
140,
140,
40,
103,
144,
108,
103,
114,
238,
118,
102,
119,
70,
122,
169,
157,
127,
107,
146,
108,
34,
89,
38,
103,
153,
132,
111,
83,
147,
88,
153,
89,
223,
94,
207,
99,
52,
102,
115,
103,
58,
110,
43,
115,
215,
122,
215,
130,
40,
147,
217,
82,
235,
93,
174,
97,
203,
97,
10,
98,
199,
98,
171,
100,
224,
101,
89,
105,
102,
107,
203,
107,
33,
113,
247,
115,
93,
117,
70,
126,
30,
130,
2,
131,
106,
133,
163,
138,
191,
140,
39,
151,
97,
157,
168,
88,
216,
158,
17,
80,
14,
82,
59,
84,
79,
85,
135,
101,
118,
108,
10,
125,
11,
125,
94,
128,
138,
134,
128,
149,
239,
150,
255,
82,
149,
108,
105,
114,
115,
84,
154,
90,
62,
92,
75,
93,
76,
95,
174,
95,
42,
103,
182,
104,
99,
105,
60,
110,
68,
110,
9,
119,
115,
124,
142,
127,
135,
133,
14,
139,
247,
143,
97,
151,
244,
158,
183,
92,
182,
96,
13,
97,
171,
97,
79,
101,
251,
101,
252,
101,
17,
108,
239,
108,
159,
115,
201,
115,
225,
125,
148,
149,
198,
91,
28,
135,
16,
139,
93,
82,
90,
83,
205,
98,
15,
100,
178,
100,
52,
103,
56,
106,
202,
108,
192,
115,
158,
116,
148,
123,
149,
124,
27,
126,
138,
129,
54,
130,
132,
133,
235,
143,
249,
150,
193,
153,
52,
79,
74,
83,
205,
83,
219,
83,
204,
98,
44,
100,
0,
101,
145,
101,
195,
105,
238,
108,
88,
111,
237,
115,
84,
117,
34,
118,
228,
118,
252,
118,
208,
120,
251,
120,
44,
121,
70,
125,
44,
130,
224,
135,
212,
143,
18,
152,
239,
152,
195,
82,
212,
98,
165,
100,
36,
110,
81,
111,
124,
118,
203,
141,
177,
145,
98,
146,
238,
154,
67,
155,
35,
80,
141,
80,
74,
87,
168,
89,
40,
92,
71,
94,
119,
95,
63,
98,
62,
101,
185,
101,
193,
101,
9,
102,
139,
103,
156,
105,
194,
110,
197,
120,
33,
125,
170,
128,
128,
129,
43,
130,
179,
130,
161,
132,
140,
134,
42,
138,
23,
139,
166,
144,
50,
150,
144,
159,
13,
80,
243,
79,
99,
249,
249,
87,
152,
95,
220,
98,
146,
99,
111,
103,
67,
110,
25,
113,
195,
118,
204,
128,
218,
128,
244,
136,
245,
136,
25,
137,
224,
140,
41,
143,
77,
145,
106,
150,
47,
79,
112,
79,
27,
94,
207,
103,
34,
104,
125,
118,
126,
118,
68,
155,
97,
94,
10,
106,
105,
113,
212,
113,
106,
117,
100,
249,
65,
126,
67,
133,
233,
133,
220,
152,
16,
79,
79,
123,
112,
127,
165,
149,
225,
81,
6,
94,
181,
104,
62,
108,
78,
108,
219,
108,
175,
114,
196,
123,
3,
131,
213,
108,
58,
116,
251,
80,
136,
82,
193,
88,
216,
100,
151,
106,
167,
116,
86,
118,
167,
120,
23,
134,
226,
149,
57,
151,
101,
249,
94,
83,
1,
95,
138,
139,
168,
143,
175,
143,
138,
144,
37,
82,
165,
119,
73,
156,
8,
159,
25,
78,
2,
80,
117,
81,
91,
92,
119,
94,
30,
102,
58,
102,
196,
103,
197,
104,
179,
112,
1,
117,
197,
117,
201,
121,
221,
122,
39,
143,
32,
153,
8,
154,
221,
79,
33,
88,
49,
88,
246,
91,
110,
102,
101,
107,
17,
109,
122,
110,
125,
111,
228,
115,
43,
117,
233,
131,
220,
136,
19,
137,
92,
139,
20,
143,
15,
79,
213,
80,
16,
83,
92,
83,
147,
91,
169,
95,
13,
103,
143,
121,
121,
129,
47,
131,
20,
133,
7,
137,
134,
137,
57,
143,
59,
143,
165,
153,
18,
156,
44,
103,
118,
78,
248,
79,
73,
89,
1,
92,
239,
92,
240,
92,
103,
99,
210,
104,
253,
112,
162,
113,
43,
116,
43,
126,
236,
132,
2,
135,
34,
144,
210,
146,
243,
156,
13,
78,
216,
78,
239,
79,
133,
80,
86,
82,
111,
82,
38,
84,
144,
84,
224,
87,
43,
89,
102,
90,
90,
91,
117,
91,
204,
91,
156,
94,
102,
249,
118,
98,
119,
101,
167,
101,
110,
109,
165,
110,
54,
114,
38,
123,
63,
124,
54,
127,
80,
129,
81,
129,
154,
129,
64,
130,
153,
130,
169,
131,
3,
138,
160,
140,
230,
140,
251,
140,
116,
141,
186,
141,
232,
144,
220,
145,
28,
150,
68,
150,
217,
153,
231,
156,
23,
83,
6,
82,
41,
84,
116,
86,
179,
88,
84,
89,
110,
89,
255,
95,
164,
97,
110,
98,
16,
102,
126,
108,
26,
113,
198,
118,
137,
124,
222,
124,
27,
125,
172,
130,
193,
140,
240,
150,
103,
249,
91,
79,
23,
95,
127,
95,
194,
98,
41,
93,
11,
103,
218,
104,
124,
120,
67,
126,
108,
157,
21,
78,
153,
80,
21,
83,
42,
83,
81,
83,
131,
89,
98,
90,
135,
94,
178,
96,
138,
97,
73,
98,
121,
98,
144,
101,
135,
103,
167,
105,
212,
107,
214,
107,
215,
107,
216,
107,
184,
108,
104,
249,
53,
116,
250,
117,
18,
120,
145,
120,
213,
121,
216,
121,
131,
124,
203,
125,
225,
127,
165,
128,
62,
129,
194,
129,
242,
131,
26,
135,
232,
136,
185,
138,
108,
139,
187,
140,
25,
145,
94,
151,
219,
152,
59,
159,
172,
86,
42,
91,
108,
95,
140,
101,
179,
106,
175,
107,
92,
109,
241,
111,
21,
112,
93,
114,
173,
115,
167,
140,
211,
140,
59,
152,
145,
97,
55,
108,
88,
128,
1,
154,
77,
78,
139,
78,
155,
78,
213,
78,
58,
79,
60,
79,
127,
79,
223,
79,
255,
80,
242,
83,
248,
83,
6,
85,
227,
85,
219,
86,
235,
88,
98,
89,
17,
90,
235,
91,
250,
91,
4,
92,
243,
93,
43,
94,
153,
95,
29,
96,
104,
99,
156,
101,
175,
101,
246,
103,
251,
103,
173,
104,
123,
107,
153,
108,
215,
108,
35,
110,
9,
112,
69,
115,
2,
120,
62,
121,
64,
121,
96,
121,
193,
121,
233,
123,
23,
125,
114,
125,
134,
128,
13,
130,
142,
131,
209,
132,
199,
134,
223,
136,
80,
138,
94,
138,
29,
139,
220,
140,
102,
141,
173,
143,
170,
144,
252,
152,
223,
153,
157,
158,
74,
82,
105,
249,
20,
103,
106,
249,
152,
80,
42,
82,
113,
92,
99,
101,
85,
108,
202,
115,
35,
117,
157,
117,
151,
123,
156,
132,
120,
145,
48,
151,
119,
78,
146,
100,
186,
107,
94,
113,
169,
133,
9,
78,
107,
249,
73,
103,
238,
104,
23,
110,
159,
130,
24,
133,
107,
136,
247,
99,
129,
111,
18,
146,
175,
152,
10,
78,
183,
80,
207,
80,
31,
81,
70,
85,
170,
85,
23,
86,
64,
91,
25,
92,
224,
92,
56,
94,
138,
94,
160,
94,
194,
94,
243,
96,
81,
104,
97,
106,
88,
110,
61,
114,
64,
114,
192,
114,
248,
118,
101,
121,
177,
123,
212,
127,
243,
136,
244,
137,
115,
138,
97,
140,
222,
140,
28,
151,
94,
88,
189,
116,
253,
140,
199,
85,
108,
249,
97,
122,
34,
125,
114,
130,
114,
114,
31,
117,
37,
117,
109,
249,
25,
123,
133,
88,
251,
88,
188,
93,
143,
94,
182,
94,
144,
95,
85,
96,
146,
98,
127,
99,
77,
101,
145,
102,
217,
102,
248,
102,
22,
104,
242,
104,
128,
114,
94,
116,
110,
123,
110,
125,
214,
125,
114,
127,
229,
128,
18,
130,
175,
133,
127,
137,
147,
138,
29,
144,
228,
146,
205,
158,
32,
159,
21,
89,
109,
89,
45,
94,
220,
96,
20,
102,
115,
102,
144,
103,
80,
108,
197,
109,
95,
111,
243,
119,
169,
120,
198,
132,
203,
145,
43,
147,
217,
78,
202,
80,
72,
81,
132,
85,
11,
91,
163,
91,
71,
98,
126,
101,
203,
101,
50,
110,
125,
113,
1,
116,
68,
116,
135,
116,
191,
116,
108,
118,
170,
121,
218,
125,
85,
126,
168,
127,
122,
129,
179,
129,
57,
130,
26,
134,
236,
135,
117,
138,
227,
141,
120,
144,
145,
146,
37,
148,
77,
153,
174,
155,
104,
83,
81,
92,
84,
105,
196,
108,
41,
109,
43,
110,
12,
130,
155,
133,
59,
137,
45,
138,
170,
138,
234,
150,
103,
159,
97,
82,
185,
102,
178,
107,
150,
126,
254,
135,
13,
141,
131,
149,
93,
150,
29,
101,
137,
109,
238,
113,
110,
249,
206,
87,
211,
89,
172,
91,
39,
96,
250,
96,
16,
98,
31,
102,
95,
102,
41,
115,
249,
115,
219,
118,
1,
119,
108,
123,
86,
128,
114,
128,
101,
129,
160,
138,
146,
145,
22,
78,
226,
82,
114,
107,
23,
109,
5,
122,
57,
123,
48,
125,
111,
249,
176,
140,
236,
83,
47,
86,
81,
88,
181,
91,
15,
92,
17,
92,
226,
93,
64,
98,
131,
99,
20,
100,
45,
102,
179,
104,
188,
108,
136,
109,
175,
110,
31,
112,
164,
112,
210,
113,
38,
117,
143,
117,
142,
117,
25,
118,
17,
123,
224,
123,
43,
124,
32,
125,
57,
125,
44,
133,
109,
133,
7,
134,
52,
138,
13,
144,
97,
144,
181,
144,
183,
146,
246,
151,
55,
154,
215,
79,
108,
92,
95,
103,
145,
109,
159,
124,
140,
126,
22,
139,
22,
141,
31,
144,
107,
91,
253,
93,
13,
100,
192,
132,
92,
144,
225,
152,
135,
115,
139,
91,
154,
96,
126,
103,
222,
109,
31,
138,
166,
138,
1,
144,
12,
152,
55,
82,
112,
249,
81,
112,
142,
120,
150,
147,
112,
136,
215,
145,
238,
79,
215,
83,
253,
85,
218,
86,
130,
87,
253,
88,
194,
90,
136,
91,
171,
92,
192,
92,
37,
94,
1,
97,
13,
98,
75,
98,
136,
99,
28,
100,
54,
101,
120,
101,
57,
106,
138,
107,
52,
108,
25,
109,
49,
111,
231,
113,
233,
114,
120,
115,
7,
116,
178,
116,
38,
118,
97,
119,
192,
121,
87,
122,
234,
122,
185,
124,
143,
125,
172,
125,
97,
126,
158,
127,
41,
129,
49,
131,
144,
132,
218,
132,
234,
133,
150,
136,
176,
138,
144,
139,
56,
143,
66,
144,
131,
144,
108,
145,
150,
146,
185,
146,
139,
150,
167,
150,
168,
150,
214,
150,
0,
151,
8,
152,
150,
153,
211,
154,
26,
155,
212,
83,
126,
88,
25,
89,
112,
91,
191,
91,
209,
109,
90,
111,
159,
113,
33,
116,
185,
116,
133,
128,
253,
131,
225,
93,
135,
95,
170,
95,
66,
96,
236,
101,
18,
104,
111,
105,
83,
106,
137,
107,
53,
109,
243,
109,
227,
115,
254,
118,
172,
119,
77,
123,
20,
125,
35,
129,
28,
130,
64,
131,
244,
132,
99,
133,
98,
138,
196,
138,
135,
145,
30,
147,
6,
152,
180,
153,
12,
98,
83,
136,
240,
143,
101,
146,
7,
93,
39,
93,
105,
93,
95,
116,
157,
129,
104,
135,
213,
111,
254,
98,
210,
127,
54,
137,
114,
137,
30,
78,
88,
78,
231,
80,
221,
82,
71,
83,
127,
98,
7,
102,
105,
126,
5,
136,
94,
150,
141,
79,
25,
83,
54,
86,
203,
89,
164,
90,
56,
92,
78,
92,
77,
92,
2,
94,
17,
95,
67,
96,
189,
101,
47,
102,
66,
102,
190,
103,
244,
103,
28,
115,
226,
119,
58,
121,
197,
127,
148,
132,
205,
132,
150,
137,
102,
138,
105,
138,
225,
138,
85,
140,
122,
140,
244,
87,
212,
91,
15,
95,
111,
96,
237,
98,
13,
105,
150,
107,
92,
110,
132,
113,
210,
123,
85,
135,
88,
139,
254,
142,
223,
152,
254,
152,
56,
79,
129,
79,
225,
79,
123,
84,
32,
90,
184,
91,
60,
97,
176,
101,
104,
102,
252,
113,
51,
117,
94,
121,
51,
125,
78,
129,
227,
129,
152,
131,
170,
133,
206,
133,
3,
135,
10,
138,
171,
142,
155,
143,
113,
249,
197,
143,
49,
89,
164,
91,
230,
91,
137,
96,
233,
91,
11,
92,
195,
95,
129,
108,
114,
249,
241,
109,
11,
112,
26,
117,
175,
130,
246,
138,
192,
78,
65,
83,
115,
249,
217,
150,
15,
108,
158,
78,
196,
79,
82,
81,
94,
85,
37,
90,
232,
92,
17,
98,
89,
114,
189,
130,
170,
131,
254,
134,
89,
136,
29,
138,
63,
150,
197,
150,
19,
153,
9,
157,
93,
157,
10,
88,
179,
92,
189,
93,
68,
94,
225,
96,
21,
97,
225,
99,
2,
106,
37,
110,
2,
145,
84,
147,
78,
152,
16,
156,
119,
159,
137,
91,
184,
92,
9,
99,
79,
102,
72,
104,
60,
119,
193,
150,
141,
151,
84,
152,
159,
155,
161,
101,
1,
139,
203,
142,
188,
149,
53,
85,
169,
92,
214,
93,
181,
94,
151,
102,
76,
118,
244,
131,
199,
149,
211,
88,
188,
98,
206,
114,
40,
157,
240,
78,
46,
89,
15,
96,
59,
102,
131,
107,
231,
121,
38,
157,
147,
83,
192,
84,
195,
87,
22,
93,
27,
97,
214,
102,
175,
109,
141,
120,
126,
130,
152,
150,
68,
151,
132,
83,
124,
98,
150,
99,
178,
109,
10,
126,
75,
129,
77,
152,
251,
106,
76,
127,
175,
157,
26,
158,
95,
78,
59,
80,
182,
81,
28,
89,
249,
96,
246,
99,
48,
105,
58,
114,
54,
128,
116,
249,
206,
145,
49,
95,
117,
249,
118,
249,
4,
125,
229,
130,
111,
132,
187,
132,
229,
133,
141,
142,
119,
249,
111,
79,
120,
249,
121,
249,
228,
88,
67,
91,
89,
96,
218,
99,
24,
101,
109,
101,
152,
102,
122,
249,
74,
105,
35,
106,
11,
109,
1,
112,
108,
113,
210,
117,
13,
118,
179,
121,
112,
122,
123,
249,
138,
127,
124,
249,
68,
137,
125,
249,
147,
139,
192,
145,
125,
150,
126,
249,
10,
153,
4,
87,
161,
95,
188,
101,
1,
111,
0,
118,
166,
121,
158,
138,
173,
153,
90,
155,
108,
159,
4,
81,
182,
97,
145,
98,
141,
106,
198,
129,
67,
80,
48,
88,
102,
95,
9,
113,
0,
138,
250,
138,
124,
91,
22,
134,
250,
79,
60,
81,
180,
86,
68,
89,
169,
99,
249,
109,
170,
93,
109,
105,
134,
81,
136,
78,
89,
79,
127,
249,
128,
249,
129,
249,
130,
89,
130,
249,
131,
249,
95,
107,
93,
108,
132,
249,
181,
116,
22,
121,
133,
249,
7,
130,
69,
130,
57,
131,
63,
143,
93,
143,
134,
249,
24,
153,
135,
249,
136,
249,
137,
249,
166,
78,
138,
249,
223,
87,
121,
95,
19,
102,
139,
249,
140,
249,
171,
117,
121,
126,
111,
139,
141,
249,
6,
144,
91,
154,
165,
86,
39,
88,
248,
89,
31,
90,
180,
91,
142,
249,
246,
94,
143,
249,
144,
249,
80,
99,
59,
99,
145,
249,
61,
105,
135,
108,
191,
108,
142,
109,
147,
109,
245,
109,
20,
111,
146,
249,
223,
112,
54,
113,
89,
113,
147,
249,
195,
113,
213,
113,
148,
249,
79,
120,
111,
120,
149,
249,
117,
123,
227,
125,
150,
249,
47,
126,
151,
249,
77,
136,
223,
142,
152,
249,
153,
249,
154,
249,
91,
146,
155,
249,
246,
156,
156,
249,
157,
249,
158,
249,
133,
96,
133,
109,
159,
249,
177,
113,
160,
249,
161,
249,
177,
149,
173,
83,
162,
249,
163,
249,
164,
249,
211,
103,
165,
249,
142,
112,
48,
113,
48,
116,
118,
130,
210,
130,
166,
249,
187,
149,
229,
154,
125,
158,
196,
102,
167,
249,
193,
113,
73,
132,
168,
249,
169,
249,
75,
88,
170,
249,
171,
249,
184,
93,
113,
95,
172,
249,
32,
102,
142,
102,
121,
105,
174,
105,
56,
108,
243,
108,
54,
110,
65,
111,
218,
111,
27,
112,
47,
112,
80,
113,
223,
113,
112,
115,
173,
249,
91,
116,
174,
249,
212,
116,
200,
118,
78,
122,
147,
126,
175,
249,
176,
249,
241,
130,
96,
138,
206,
143,
177,
249,
72,
147,
178,
249,
25,
151,
179,
249,
180,
249,
66,
78,
42,
80,
181,
249,
8,
82,
225,
83,
243,
102,
109,
108,
202,
111,
10,
115,
127,
119,
98,
122,
174,
130,
221,
133,
2,
134,
182,
249,
212,
136,
99,
138,
125,
139,
107,
140,
183,
249,
179,
146,
184,
249,
19,
151,
16,
152,
148,
78,
13,
79,
201,
79,
178,
80,
72,
83,
62,
84,
51,
84,
218,
85,
98,
88,
186,
88,
103,
89,
27,
90,
228,
91,
159,
96,
185,
249,
202,
97,
86,
101,
255,
101,
100,
102,
167,
104,
90,
108,
179,
111,
207,
112,
172,
113,
82,
115,
125,
123,
8,
135,
164,
138,
50,
156,
7,
159,
75,
92,
131,
108,
68,
115,
137,
115,
58,
146,
171,
110,
101,
116,
31,
118,
105,
122,
21,
126,
10,
134,
64,
81,
197,
88,
193,
100,
238,
116,
21,
117,
112,
118,
193,
127,
149,
144,
205,
150,
84,
153,
38,
110,
230,
116,
169,
122,
170,
122,
229,
129,
217,
134,
120,
135,
27,
138,
73,
90,
140,
91,
155,
91,
161,
104,
0,
105,
99,
109,
169,
115,
19,
116,
44,
116,
151,
120,
233,
125,
235,
127,
24,
129,
85,
129,
158,
131,
76,
140,
46,
150,
17,
152,
240,
102,
128,
95,
250,
101,
137,
103,
106,
108,
139,
115,
45,
80,
3,
90,
106,
107,
238,
119,
22,
89,
108,
93,
205,
93,
37,
115,
79,
117,
186,
249,
187,
249
],
'i8',
ALLOC_NONE,
Runtime.GLOBAL_BASE + 117532
);
/* memory initializer */ allocate(
[
229,
80,
249,
81,
47,
88,
45,
89,
150,
89,
218,
89,
229,
91,
188,
249,
189,
249,
162,
93,
215,
98,
22,
100,
147,
100,
254,
100,
190,
249,
220,
102,
191,
249,
72,
106,
192,
249,
255,
113,
100,
116,
193,
249,
136,
122,
175,
122,
71,
126,
94,
126,
0,
128,
112,
129,
194,
249,
239,
135,
129,
137,
32,
139,
89,
144,
195,
249,
128,
144,
82,
153,
126,
97,
50,
107,
116,
109,
31,
126,
37,
137,
177,
143,
209,
79,
173,
80,
151,
81,
199,
82,
199,
87,
137,
88,
185,
91,
184,
94,
66,
97,
149,
105,
140,
109,
103,
110,
182,
110,
148,
113,
98,
116,
40,
117,
44,
117,
115,
128,
56,
131,
201,
132,
10,
142,
148,
147,
222,
147,
196,
249,
142,
78,
81,
79,
118,
80,
42,
81,
200,
83,
203,
83,
243,
83,
135,
91,
211,
91,
36,
92,
26,
97,
130,
97,
244,
101,
91,
114,
151,
115,
64,
116,
194,
118,
80,
121,
145,
121,
185,
121,
6,
125,
189,
127,
139,
130,
213,
133,
94,
134,
194,
143,
71,
144,
245,
144,
234,
145,
133,
150,
232,
150,
233,
150,
214,
82,
103,
95,
237,
101,
49,
102,
47,
104,
92,
113,
54,
122,
193,
144,
10,
152,
145,
78,
197,
249,
82,
106,
158,
107,
144,
111,
137,
113,
24,
128,
184,
130,
83,
133,
75,
144,
149,
150,
242,
150,
251,
151,
26,
133,
49,
155,
144,
78,
138,
113,
196,
150,
67,
81,
159,
83,
225,
84,
19,
87,
18,
87,
163,
87,
155,
90,
196,
90,
195,
91,
40,
96,
63,
97,
244,
99,
133,
108,
57,
109,
114,
110,
144,
110,
48,
114,
63,
115,
87,
116,
209,
130,
129,
136,
69,
143,
96,
144,
198,
249,
98,
150,
88,
152,
27,
157,
8,
103,
138,
141,
94,
146,
77,
79,
73,
80,
222,
80,
113,
83,
13,
87,
212,
89,
1,
90,
9,
92,
112,
97,
144,
102,
45,
110,
50,
114,
75,
116,
239,
125,
195,
128,
14,
132,
102,
132,
63,
133,
95,
135,
91,
136,
24,
137,
2,
139,
85,
144,
203,
151,
79,
155,
115,
78,
145,
79,
18,
81,
106,
81,
199,
249,
47,
85,
169,
85,
122,
91,
165,
91,
124,
94,
125,
94,
190,
94,
160,
96,
223,
96,
8,
97,
9,
97,
196,
99,
56,
101,
9,
103,
200,
249,
212,
103,
218,
103,
201,
249,
97,
105,
98,
105,
185,
108,
39,
109,
202,
249,
56,
110,
203,
249,
225,
111,
54,
115,
55,
115,
204,
249,
92,
116,
49,
117,
205,
249,
82,
118,
206,
249,
207,
249,
173,
125,
254,
129,
56,
132,
213,
136,
152,
138,
219,
138,
237,
138,
48,
142,
66,
142,
74,
144,
62,
144,
122,
144,
73,
145,
201,
145,
110,
147,
208,
249,
209,
249,
9,
88,
210,
249,
211,
107,
137,
128,
178,
128,
211,
249,
212,
249,
65,
81,
107,
89,
57,
92,
213,
249,
214,
249,
100,
111,
167,
115,
228,
128,
7,
141,
215,
249,
23,
146,
143,
149,
216,
249,
217,
249,
218,
249,
219,
249,
127,
128,
14,
98,
28,
112,
104,
125,
141,
135,
220,
249,
160,
87,
105,
96,
71,
97,
183,
107,
190,
138,
128,
146,
177,
150,
89,
78,
31,
84,
235,
109,
45,
133,
112,
150,
243,
151,
238,
152,
214,
99,
227,
108,
145,
144,
221,
81,
201,
97,
186,
129,
249,
157,
157,
79,
26,
80,
0,
81,
156,
91,
15,
97,
255,
97,
236,
100,
5,
105,
197,
107,
145,
117,
227,
119,
169,
127,
100,
130,
143,
133,
251,
135,
99,
136,
188,
138,
112,
139,
171,
145,
140,
78,
229,
78,
10,
79,
221,
249,
222,
249,
55,
89,
232,
89,
223,
249,
242,
93,
27,
95,
91,
95,
33,
96,
224,
249,
225,
249,
226,
249,
227,
249,
62,
114,
229,
115,
228,
249,
112,
117,
205,
117,
229,
249,
251,
121,
230,
249,
12,
128,
51,
128,
132,
128,
225,
130,
81,
131,
231,
249,
232,
249,
189,
140,
179,
140,
135,
144,
233,
249,
234,
249,
244,
152,
12,
153,
235,
249,
236,
249,
55,
112,
202,
118,
202,
127,
204,
127,
252,
127,
26,
139,
186,
78,
193,
78,
3,
82,
112,
83,
237,
249,
189,
84,
224,
86,
251,
89,
197,
91,
21,
95,
205,
95,
110,
110,
238,
249,
239,
249,
106,
125,
53,
131,
240,
249,
147,
134,
141,
138,
241,
249,
109,
151,
119,
151,
242,
249,
243,
249,
0,
78,
90,
79,
126,
79,
249,
88,
229,
101,
162,
110,
56,
144,
176,
147,
185,
153,
251,
78,
236,
88,
138,
89,
217,
89,
65,
96,
244,
249,
245,
249,
20,
122,
246,
249,
79,
131,
195,
140,
101,
81,
68,
83,
247,
249,
248,
249,
249,
249,
205,
78,
105,
82,
85,
91,
191,
130,
212,
78,
58,
82,
168,
84,
201,
89,
255,
89,
80,
91,
87,
91,
92,
91,
99,
96,
72,
97,
203,
110,
153,
112,
110,
113,
134,
115,
247,
116,
181,
117,
193,
120,
43,
125,
5,
128,
234,
129,
40,
131,
23,
133,
201,
133,
238,
138,
199,
140,
204,
150,
92,
79,
250,
82,
188,
86,
171,
101,
40,
102,
124,
112,
184,
112,
53,
114,
189,
125,
141,
130,
76,
145,
192,
150,
114,
157,
113,
91,
231,
104,
152,
107,
122,
111,
222,
118,
145,
92,
171,
102,
91,
111,
180,
123,
42,
124,
54,
136,
220,
150,
8,
78,
215,
78,
32,
83,
52,
88,
187,
88,
239,
88,
108,
89,
7,
92,
51,
94,
132,
94,
53,
95,
140,
99,
178,
102,
86,
103,
31,
106,
163,
106,
12,
107,
63,
111,
70,
114,
250,
249,
80,
115,
139,
116,
224,
122,
167,
124,
120,
129,
223,
129,
231,
129,
138,
131,
108,
132,
35,
133,
148,
133,
207,
133,
221,
136,
19,
141,
172,
145,
119,
149,
156,
150,
141,
81,
201,
84,
40,
87,
176,
91,
77,
98,
80,
103,
61,
104,
147,
104,
61,
110,
211,
110,
125,
112,
33,
126,
193,
136,
161,
140,
9,
143,
75,
159,
78,
159,
45,
114,
143,
123,
205,
138,
26,
147,
71,
79,
78,
79,
50,
81,
128,
84,
208,
89,
149,
94,
181,
98,
117,
103,
110,
105,
23,
106,
174,
108,
26,
110,
217,
114,
42,
115,
189,
117,
184,
123,
53,
125,
231,
130,
249,
131,
87,
132,
247,
133,
91,
138,
175,
140,
135,
142,
25,
144,
184,
144,
206,
150,
95,
159,
227,
82,
10,
84,
225,
90,
194,
91,
88,
100,
117,
101,
244,
110,
196,
114,
251,
249,
132,
118,
77,
122,
27,
123,
77,
124,
62,
126,
223,
127,
123,
131,
43,
139,
202,
140,
100,
141,
225,
141,
95,
142,
234,
143,
249,
143,
105,
144,
209,
147,
67,
79,
122,
79,
179,
80,
104,
81,
120,
81,
77,
82,
106,
82,
97,
88,
124,
88,
96,
89,
8,
92,
85,
92,
219,
94,
155,
96,
48,
98,
19,
104,
191,
107,
8,
108,
177,
111,
78,
113,
32,
116,
48,
117,
56,
117,
81,
117,
114,
118,
76,
123,
139,
123,
173,
123,
198,
123,
143,
126,
110,
138,
62,
143,
73,
143,
63,
146,
147,
146,
34,
147,
43,
148,
251,
150,
90,
152,
107,
152,
30,
153,
7,
82,
42,
98,
152,
98,
89,
109,
100,
118,
202,
122,
192,
123,
118,
125,
96,
83,
190,
92,
151,
94,
56,
111,
185,
112,
152,
124,
17,
151,
142,
155,
222,
158,
165,
99,
122,
100,
118,
135,
1,
78,
149,
78,
173,
78,
92,
80,
117,
80,
72,
84,
195,
89,
154,
91,
64,
94,
173,
94,
247,
94,
129,
95,
197,
96,
58,
99,
63,
101,
116,
101,
204,
101,
118,
102,
120,
102,
254,
103,
104,
105,
137,
106,
99,
107,
64,
108,
192,
109,
232,
109,
31,
110,
94,
110,
30,
112,
161,
112,
142,
115,
253,
115,
58,
117,
91,
119,
135,
120,
142,
121,
11,
122,
125,
122,
190,
124,
142,
125,
71,
130,
2,
138,
234,
138,
158,
140,
45,
145,
74,
145,
216,
145,
102,
146,
204,
146,
32,
147,
6,
151,
86,
151,
92,
151,
2,
152,
14,
159,
54,
82,
145,
82,
124,
85,
36,
88,
29,
94,
31,
95,
140,
96,
208,
99,
175,
104,
223,
111,
109,
121,
44,
123,
205,
129,
186,
133,
253,
136,
248,
138,
68,
142,
141,
145,
100,
150,
155,
150,
61,
151,
76,
152,
74,
159,
206,
79,
70,
81,
203,
81,
169,
82,
50,
86,
20,
95,
107,
95,
170,
99,
205,
100,
233,
101,
65,
102,
250,
102,
249,
102,
29,
103,
157,
104,
215,
104,
253,
105,
21,
111,
110,
111,
103,
113,
229,
113,
42,
114,
170,
116,
58,
119,
86,
121,
90,
121,
223,
121,
32,
122,
149,
122,
151,
124,
223,
124,
68,
125,
112,
126,
135,
128,
251,
133,
164,
134,
84,
138,
191,
138,
153,
141,
129,
142,
32,
144,
109,
144,
227,
145,
59,
150,
213,
150,
229,
156,
207,
101,
7,
124,
179,
141,
195,
147,
88,
91,
10,
92,
82,
83,
217,
98,
29,
115,
39,
80,
151,
91,
158,
95,
176,
96,
107,
97,
213,
104,
217,
109,
46,
116,
46,
122,
66,
125,
156,
125,
49,
126,
107,
129,
42,
142,
53,
142,
126,
147,
24,
148,
80,
79,
80,
87,
230,
93,
167,
94,
43,
99,
106,
127,
59,
78,
79,
79,
143,
79,
90,
80,
221,
89,
196,
128,
106,
84,
104,
84,
254,
85,
79,
89,
153,
91,
222,
93,
218,
94,
93,
102,
49,
103,
241,
103,
42,
104,
232,
108,
50,
109,
74,
110,
141,
111,
183,
112,
224,
115,
135,
117,
76,
124,
2,
125,
44,
125,
162,
125,
31,
130,
219,
134,
59,
138,
133,
138,
112,
141,
138,
142,
51,
143,
49,
144,
78,
145,
82,
145,
68,
148,
208,
153,
249,
122,
165,
124,
202,
79,
1,
81,
198,
81,
200,
87,
239,
91,
251,
92,
89,
102,
61,
106,
90,
109,
150,
110,
236,
111,
12,
113,
111,
117,
227,
122,
34,
136,
33,
144,
117,
144,
203,
150,
255,
153,
1,
131,
45,
78,
242,
78,
70,
136,
205,
145,
125,
83,
219,
106,
107,
105,
65,
108,
122,
132,
158,
88,
142,
97,
254,
102,
239,
98,
221,
112,
17,
117,
199,
117,
82,
126,
184,
132,
73,
139,
8,
141,
75,
78,
234,
83,
171,
84,
48,
87,
64,
87,
215,
95,
1,
99,
7,
99,
111,
100,
47,
101,
232,
101,
122,
102,
157,
103,
179,
103,
98,
107,
96,
108,
154,
108,
44,
111,
229,
119,
37,
120,
73,
121,
87,
121,
25,
125,
162,
128,
2,
129,
243,
129,
157,
130,
183,
130,
24,
135,
140,
138,
252,
249,
4,
141,
190,
141,
114,
144,
244,
118,
25,
122,
55,
122,
84,
126,
119,
128,
7,
85,
212,
85,
117,
88,
47,
99,
34,
100,
73,
102,
75,
102,
109,
104,
155,
105,
132,
107,
37,
109,
177,
110,
205,
115,
104,
116,
161,
116,
91,
117,
185,
117,
225,
118,
30,
119,
139,
119,
230,
121,
9,
126,
29,
126,
251,
129,
47,
133,
151,
136,
58,
138,
209,
140,
235,
142,
176,
143,
50,
144,
173,
147,
99,
150,
115,
150,
7,
151,
132,
79,
241,
83,
234,
89,
201,
90,
25,
94,
78,
104,
198,
116,
190,
117,
233,
121,
146,
122,
163,
129,
237,
134,
234,
140,
204,
141,
237,
143,
159,
101,
21,
103,
253,
249,
247,
87,
87,
111,
221,
125,
47,
143,
246,
147,
198,
150,
181,
95,
242,
97,
132,
111,
20,
78,
152,
79,
31,
80,
201,
83,
223,
85,
111,
93,
238,
93,
33,
107,
100,
107,
203,
120,
154,
123,
254,
249,
73,
142,
202,
142,
110,
144,
73,
99,
62,
100,
64,
119,
132,
122,
47,
147,
127,
148,
106,
159,
176,
100,
175,
111,
230,
113,
168,
116,
218,
116,
196,
122,
18,
124,
130,
126,
178,
124,
152,
126,
154,
139,
10,
141,
125,
148,
16,
153,
76,
153,
57,
82,
223,
91,
230,
100,
45,
103,
46,
125,
237,
80,
195,
83,
121,
88,
88,
97,
89,
97,
250,
97,
172,
101,
217,
122,
146,
139,
150,
139,
9,
80,
33,
80,
117,
82,
49,
85,
60,
90,
224,
94,
112,
95,
52,
97,
94,
101,
12,
102,
54,
102,
162,
102,
205,
105,
196,
110,
50,
111,
22,
115,
33,
118,
147,
122,
57,
129,
89,
130,
214,
131,
188,
132,
181,
80,
240,
87,
192,
91,
232,
91,
105,
95,
161,
99,
38,
120,
181,
125,
220,
131,
33,
133,
199,
145,
245,
145,
138,
81,
245,
103,
86,
123,
172,
140,
196,
81,
187,
89,
189,
96,
85,
134,
28,
80,
255,
249,
84,
82,
58,
92,
125,
97,
26,
98,
211,
98,
242,
100,
165,
101,
204,
110,
32,
118,
10,
129,
96,
142,
95,
150,
187,
150,
223,
78,
67,
83,
152,
85,
41,
89,
221,
93,
197,
100,
201,
108,
250,
109,
148,
115,
127,
122,
27,
130,
166,
133,
228,
140,
16,
142,
119,
144,
231,
145,
225,
149,
33,
150,
198,
151,
248,
81,
242,
84,
134,
85,
185,
95,
164,
100,
136,
111,
180,
125,
31,
143,
77,
143,
53,
148,
201,
80,
22,
92,
190,
108,
251,
109,
27,
117,
187,
119,
61,
124,
100,
124,
121,
138,
194,
138,
30,
88,
190,
89,
22,
94,
119,
99,
82,
114,
138,
117,
107,
119,
220,
138,
188,
140,
18,
143,
243,
94,
116,
102,
248,
109,
125,
128,
193,
131,
203,
138,
81,
151,
214,
155,
0,
250,
67,
82,
255,
102,
149,
109,
239,
110,
224,
125,
230,
138,
46,
144,
94,
144,
212,
154,
29,
82,
127,
82,
232,
84,
148,
97,
132,
98,
219,
98,
162,
104,
18,
105,
90,
105,
53,
106,
146,
112,
38,
113,
93,
120,
1,
121,
14,
121,
210,
121,
13,
122,
150,
128,
120,
130,
213,
130,
73,
131,
73,
133,
130,
140,
133,
141,
98,
145,
139,
145,
174,
145,
195,
79,
209,
86,
237,
113,
215,
119,
0,
135,
248,
137,
248,
91,
214,
95,
81,
103,
168,
144,
226,
83,
90,
88,
245,
91,
164,
96,
129,
97,
96,
100,
61,
126,
112,
128,
37,
133,
131,
146,
174,
100,
172,
80,
20,
93,
0,
103,
156,
88,
189,
98,
168,
99,
14,
105,
120,
105,
30,
106,
107,
110,
186,
118,
203,
121,
187,
130,
41,
132,
207,
138,
168,
141,
253,
143,
18,
145,
75,
145,
156,
145,
16,
147,
24,
147,
154,
147,
219,
150,
54,
154,
13,
156,
17,
78,
92,
117,
93,
121,
250,
122,
81,
123,
201,
123,
46,
126,
196,
132,
89,
142,
116,
142,
248,
142,
16,
144,
37,
102,
63,
105,
67,
116,
250,
81,
46,
103,
220,
158,
69,
81,
224,
95,
150,
108,
242,
135,
93,
136,
119,
136,
180,
96,
181,
129,
3,
132,
5,
141,
214,
83,
57,
84,
52,
86,
54,
90,
49,
92,
138,
112,
224,
127,
90,
128,
6,
129,
237,
129,
163,
141,
137,
145,
95,
154,
242,
157,
116,
80,
196,
78,
160,
83,
251,
96,
44,
110,
100,
92,
136,
79,
36,
80,
228,
85,
217,
92,
95,
94,
101,
96,
148,
104,
187,
108,
196,
109,
190,
113,
212,
117,
244,
117,
97,
118,
26,
122,
73,
122,
199,
125,
251,
125,
110,
127,
244,
129,
169,
134,
28,
143,
201,
150,
179,
153,
82,
159,
71,
82,
197,
82,
237,
152,
170,
137,
3,
78,
210,
103,
6,
111,
181,
79,
226,
91,
149,
103,
136,
108,
120,
109,
27,
116,
39,
120,
221,
145,
124,
147,
196,
135,
228,
121,
49,
122,
235,
95,
214,
78,
164,
84,
62,
85,
174,
88,
165,
89,
240,
96,
83,
98,
214,
98,
54,
103,
85,
105,
53,
130,
64,
150,
177,
153,
221,
153,
44,
80,
83,
83,
68,
85,
124,
87,
1,
250,
88,
98,
2,
250,
226,
100,
107,
102,
221,
103,
193,
111,
239,
111,
34,
116,
56,
116,
23,
138,
56,
148,
81,
84,
6,
86,
102,
87,
72,
95,
154,
97,
78,
107,
88,
112,
173,
112,
187,
125,
149,
138,
106,
89,
43,
129,
162,
99,
8,
119,
61,
128,
170,
140,
84,
88,
45,
100,
187,
105,
149,
91,
17,
94,
111,
110,
3,
250,
105,
133,
76,
81,
240,
83,
42,
89,
32,
96,
75,
97,
134,
107,
112,
108,
240,
108,
30,
123,
206,
128,
212,
130,
198,
141,
176,
144,
177,
152,
4,
250,
199,
100,
164,
111,
145,
100,
4,
101,
78,
81,
16,
84,
31,
87,
14,
138,
95,
97,
118,
104,
5,
250,
219,
117,
82,
123,
113,
125,
26,
144,
6,
88,
204,
105,
127,
129,
42,
137,
0,
144,
57,
152,
120,
80,
87,
89,
172,
89,
149,
98,
15,
144,
42,
155,
93,
97,
121,
114,
214,
149,
97,
87,
70,
90,
244,
93,
138,
98,
173,
100,
250,
100,
119,
103,
226,
108,
62,
109,
44,
114,
54,
116,
52,
120,
119,
127,
173,
130,
219,
141,
23,
152,
36,
82,
66,
87,
127,
103,
72,
114,
227,
116,
169,
140,
166,
143,
17,
146,
42,
150,
107,
81,
237,
83,
76,
99,
105,
79,
4,
85,
150,
96,
87,
101,
155,
108,
127,
109,
76,
114,
253,
114,
23,
122,
135,
137,
157,
140,
109,
95,
142,
111,
249,
112,
168,
129,
14,
97,
191,
79,
79,
80,
65,
98,
71,
114,
199,
123,
232,
125,
233,
127,
77,
144,
173,
151,
25,
154,
182,
140,
106,
87,
115,
94,
176,
103,
13,
132,
85,
138,
32,
84,
22,
91,
99,
94,
226,
94,
10,
95,
131,
101,
186,
128,
61,
133,
137,
149,
91,
150,
72,
79,
5,
83,
13,
83,
15,
83,
134,
84,
250,
84,
3,
87,
3,
94,
22,
96,
155,
98,
177,
98,
85,
99,
6,
250,
225,
108,
102,
109,
177,
117,
50,
120,
222,
128,
47,
129,
222,
130,
97,
132,
178,
132,
141,
136,
18,
137,
11,
144,
234,
146,
253,
152,
145,
155,
69,
94,
180,
102,
221,
102,
17,
112,
6,
114,
7,
250,
245,
79,
125,
82,
106,
95,
83,
97,
83,
103,
25,
106,
2,
111,
226,
116,
104,
121,
104,
136,
121,
140,
199,
152,
196,
152,
67,
154,
193,
84,
31,
122,
83,
105,
247,
138,
74,
140,
168,
152,
174,
153,
124,
95,
171,
98,
178,
117,
174,
118,
171,
136,
127,
144,
66,
150,
57,
83,
60,
95,
197,
95,
204,
108,
204,
115,
98,
117,
139,
117,
70,
123,
254,
130,
157,
153,
79,
78,
60,
144,
11,
78,
85,
79,
166,
83,
15,
89,
200,
94,
48,
102,
179,
108,
85,
116,
119,
131,
102,
135,
192,
140,
80,
144,
30,
151,
21,
156,
209,
88,
120,
91,
80,
134,
20,
139,
180,
157,
210,
91,
104,
96,
141,
96,
241,
101,
87,
108,
34,
111,
163,
111,
26,
112,
85,
127,
240,
127,
145,
149,
146,
149,
80,
150,
211,
151,
114,
82,
68,
143,
253,
81,
43,
84,
184,
84,
99,
85,
138,
85,
187,
106,
181,
109,
216,
125,
102,
130,
156,
146,
119,
150,
121,
158,
8,
84,
200,
84,
210,
118,
228,
134,
164,
149,
212,
149,
92,
150,
162,
78,
9,
79,
238,
89,
230,
90,
247,
93,
82,
96,
151,
98,
109,
103,
65,
104,
134,
108,
47,
110,
56,
127,
155,
128,
42,
130,
8,
250,
9,
250,
5,
152,
165,
78,
85,
80,
179,
84,
147,
87,
90,
89,
105,
91,
179,
91,
200,
97,
119,
105,
119,
109,
35,
112,
249,
135,
227,
137,
114,
138,
231,
138,
130,
144,
237,
153,
184,
154,
190,
82,
56,
104,
22,
80,
120,
94,
79,
103,
71,
131,
76,
136,
171,
78,
17,
84,
174,
86,
230,
115,
21,
145,
255,
151,
9,
153,
87,
153,
153,
153,
83,
86,
159,
88,
91,
134,
49,
138,
178,
97,
246,
106,
123,
115,
210,
142,
71,
107,
170,
150,
87,
154,
85,
89,
0,
114,
107,
141,
105,
151,
212,
79,
244,
92,
38,
95,
248,
97,
91,
102,
235,
108,
171,
112,
132,
115,
185,
115,
254,
115,
41,
119,
77,
119,
67,
125,
98,
125,
35,
126,
55,
130,
82,
136,
10,
250,
226,
140,
73,
146,
111,
152,
81,
91,
116,
122,
64,
136,
1,
152,
204,
90,
224,
79,
84,
83,
62,
89,
253,
92,
62,
99,
121,
109,
249,
114,
5,
129,
7,
129,
162,
131,
207,
146,
48,
152,
168,
78,
68,
81,
17,
82,
139,
87,
98,
95,
194,
108,
206,
110,
5,
112,
80,
112,
175,
112,
146,
113,
233,
115,
105,
116,
74,
131,
162,
135,
97,
136,
8,
144,
162,
144,
163,
147,
168,
153,
110,
81,
87,
95,
224,
96,
103,
97,
179,
102,
89,
133,
74,
142,
175,
145,
139,
151,
78,
78,
146,
78,
124,
84,
213,
88,
250,
88,
125,
89,
181,
92,
39,
95,
54,
98,
72,
98,
10,
102,
103,
102,
235,
107,
105,
109,
207,
109,
86,
110,
248,
110,
148,
111,
224,
111,
233,
111,
93,
112,
208,
114,
37,
116,
90,
116,
224,
116,
147,
118,
92,
121,
202,
124,
30,
126,
225,
128,
166,
130,
107,
132,
191,
132,
78,
134,
95,
134,
116,
135,
119,
139,
106,
140,
172,
147,
0,
152,
101,
152,
209,
96,
22,
98,
119,
145,
90,
90,
15,
102,
247,
109,
62,
110,
63,
116,
66,
155,
253,
95,
218,
96,
15,
123,
196,
84,
24,
95,
94,
108,
211,
108,
42,
109,
216,
112,
5,
125,
121,
134,
12,
138,
59,
157,
22,
83,
140,
84,
5,
91,
58,
106,
107,
112,
117,
117,
141,
121,
190,
121,
177,
130,
239,
131,
113,
138,
65,
139,
168,
140,
116,
151,
11,
250,
244,
100,
43,
101,
186,
120,
187,
120,
107,
122,
56,
78,
154,
85,
80,
89,
166,
91,
123,
94,
163,
96,
219,
99,
97,
107,
101,
102,
83,
104,
25,
110,
101,
113,
176,
116,
8,
125,
132,
144,
105,
154,
37,
156,
59,
109,
209,
110,
62,
115,
65,
140,
202,
149,
240,
81,
76,
94,
168,
95,
77,
96,
246,
96,
48,
97,
76,
97,
67,
102,
68,
102,
165,
105,
193,
108,
95,
110,
201,
110,
98,
111,
76,
113,
156,
116,
135,
118,
193,
123,
39,
124,
82,
131,
87,
135,
81,
144,
141,
150,
195,
158,
47,
83,
222,
86,
251,
94,
138,
95,
98,
96,
148,
96,
247,
97,
102,
102,
3,
103,
156,
106,
238,
109,
174,
111,
112,
112,
106,
115,
106,
126,
190,
129,
52,
131,
212,
134,
168,
138,
196,
140,
131,
82,
114,
115,
150,
91,
107,
106,
4,
148,
238,
84,
134,
86,
93,
91,
72,
101,
133,
101,
201,
102,
159,
104,
141,
109,
198,
109,
59,
114,
180,
128,
117,
145,
77,
154,
175,
79,
25,
80,
154,
83,
14,
84,
60,
84,
137,
85,
197,
85,
63,
94,
140,
95,
61,
103,
102,
113,
221,
115,
5,
144,
219,
82,
243,
82,
100,
88,
206,
88,
4,
113,
143,
113,
251,
113,
176,
133,
19,
138,
136,
102,
168,
133,
167,
85,
132,
102,
74,
113,
49,
132,
73,
83,
153,
85,
193,
107,
89,
95,
189,
95,
238,
99,
137,
102,
71,
113,
241,
138,
29,
143,
190,
158,
17,
79,
58,
100,
203,
112,
102,
117,
103,
134,
100,
96,
78,
139,
248,
157,
71,
81,
246,
81,
8,
83,
54,
109,
248,
128,
209,
158,
21,
102,
35,
107,
152,
112,
213,
117,
3,
84,
121,
92,
7,
125,
22,
138,
32,
107,
61,
107,
70,
107,
56,
84,
112,
96,
61,
109,
213,
127,
8,
130,
214,
80,
222,
81,
156,
85,
107,
86,
205,
86,
236,
89,
9,
91,
12,
94,
153,
97,
152,
97,
49,
98,
94,
102,
230,
102,
153,
113,
185,
113,
186,
113,
167,
114,
167,
121,
0,
122,
178,
127,
112,
138,
0,
0,
0,
0,
0,
0,
1,
0,
160,
0,
167,
0,
168,
0,
169,
0,
175,
0,
176,
0,
178,
0,
183,
0,
184,
0,
198,
0,
215,
0,
216,
0,
230,
0,
247,
0,
248,
0,
0,
1,
1,
1,
2,
1,
3,
1,
4,
1,
5,
1,
6,
1,
7,
1,
8,
1,
9,
1,
10,
1,
11,
1,
12,
1,
13,
1,
14,
1,
15,
1,
16,
1,
17,
1,
18,
1,
19,
1,
22,
1,
23,
1,
24,
1,
25,
1,
26,
1,
27,
1,
28,
1,
29,
1,
30,
1,
31,
1,
32,
1,
33,
1,
34,
1,
35,
1,
36,
1,
37,
1,
38,
1,
39,
1,
40,
1,
41,
1,
42,
1,
43,
1,
46,
1,
47,
1,
48,
1,
49,
1,
52,
1,
53,
1,
54,
1,
55,
1,
56,
1,
57,
1,
58,
1,
59,
1,
60,
1,
61,
1,
62,
1,
65,
1,
66,
1,
67,
1,
68,
1,
69,
1,
70,
1,
71,
1,
72,
1,
74,
1,
75,
1,
76,
1,
77,
1,
80,
1,
81,
1,
82,
1,
83,
1,
84,
1,
85,
1,
86,
1,
87,
1,
88,
1,
89,
1,
90,
1,
91,
1,
92,
1,
93,
1,
94,
1,
95,
1,
96,
1,
97,
1,
98,
1,
99,
1,
100,
1,
101,
1,
102,
1,
103,
1,
104,
1,
105,
1,
106,
1,
107,
1,
108,
1,
109,
1,
110,
1,
111,
1,
112,
1,
113,
1,
114,
1,
115,
1,
116,
1,
117,
1,
118,
1,
119,
1,
120,
1,
121,
1,
122,
1,
123,
1,
124,
1,
125,
1,
126,
1,
146,
1,
160,
1,
161,
1,
175,
1,
176,
1,
24,
2,
25,
2,
26,
2,
27,
2,
198,
2,
199,
2,
216,
2,
217,
2,
219,
2,
220,
2,
221,
2,
0,
3,
1,
3,
3,
3,
9,
3,
35,
3,
122,
3,
132,
3,
133,
3,
134,
3,
136,
3,
137,
3,
138,
3,
140,
3,
142,
3,
143,
3,
144,
3,
145,
3,
146,
3,
147,
3,
148,
3,
149,
3,
150,
3,
151,
3,
152,
3,
153,
3,
154,
3,
155,
3,
156,
3,
157,
3,
158,
3,
159,
3,
160,
3,
161,
3,
163,
3,
164,
3,
165,
3,
166,
3,
167,
3,
168,
3,
169,
3,
170,
3,
171,
3,
172,
3,
173,
3,
174,
3,
175,
3,
176,
3,
177,
3,
178,
3,
179,
3,
180,
3,
181,
3,
182,
3,
183,
3,
184,
3,
185,
3,
186,
3,
187,
3,
188,
3,
189,
3,
190,
3,
191,
3,
192,
3,
193,
3,
194,
3,
195,
3,
196,
3,
197,
3,
198,
3,
199,
3,
200,
3,
201,
3,
202,
3,
203,
3,
204,
3,
205,
3,
206,
3,
1,
4,
2,
4,
3,
4,
4,
4,
5,
4,
6,
4,
7,
4,
8,
4,
9,
4,
10,
4,
11,
4,
12,
4,
14,
4,
15,
4,
16,
4,
17,
4,
18,
4,
19,
4,
20,
4,
21,
4,
22,
4,
23,
4,
24,
4,
25,
4,
26,
4,
27,
4,
28,
4,
29,
4,
30,
4,
31,
4,
32,
4,
33,
4,
34,
4,
35,
4,
36,
4,
37,
4,
38,
4,
39,
4,
40,
4,
41,
4,
42,
4,
43,
4,
44,
4,
45,
4,
46,
4,
47,
4,
48,
4,
49,
4,
50,
4,
51,
4,
52,
4,
53,
4,
54,
4,
55,
4,
56,
4,
57,
4,
58,
4,
59,
4,
60,
4,
61,
4,
62,
4,
63,
4,
64,
4,
65,
4,
66,
4,
67,
4,
68,
4,
69,
4,
70,
4,
71,
4,
72,
4,
73,
4,
74,
4,
75,
4,
76,
4,
77,
4,
78,
4,
79,
4,
81,
4,
82,
4,
83,
4,
84,
4,
85,
4,
86,
4,
87,
4,
88,
4,
89,
4,
90,
4,
91,
4,
92,
4,
94,
4,
95,
4,
144,
4,
145,
4,
176,
5,
177,
5,
178,
5,
179,
5,
180,
5,
181,
5,
182,
5,
183,
5,
184,
5,
185,
5,
187,
5,
188,
5,
189,
5,
190,
5,
191,
5,
192,
5,
193,
5,
194,
5,
195,
5,
208,
5,
209,
5,
210,
5,
211,
5,
212,
5,
213,
5,
214,
5,
215,
5,
216,
5,
217,
5,
218,
5,
219,
5,
220,
5,
221,
5,
222,
5,
223,
5,
224,
5,
225,
5,
226,
5,
227,
5,
228,
5,
229,
5,
230,
5,
231,
5,
232,
5,
233,
5,
234,
5,
240,
5,
241,
5,
242,
5,
243,
5,
244,
5,
12,
6,
27,
6,
31,
6,
33,
6,
34,
6,
35,
6,
36,
6,
37,
6,
38,
6,
39,
6,
40,
6,
41,
6,
42,
6,
43,
6,
44,
6,
45,
6,
46,
6,
47,
6,
48,
6,
49,
6,
50,
6,
51,
6,
52,
6,
53,
6,
54,
6,
55,
6,
56,
6,
57,
6,
58,
6,
64,
6,
65,
6,
66,
6,
67,
6,
68,
6,
69,
6,
70,
6,
71,
6,
72,
6,
73,
6,
74,
6,
75,
6,
76,
6,
77,
6,
78,
6,
79,
6,
80,
6,
81,
6,
82,
6,
121,
6,
126,
6,
134,
6,
136,
6,
145,
6,
152,
6,
169,
6,
175,
6,
186,
6,
190,
6,
193,
6,
210,
6,
1,
14,
2,
14,
3,
14,
4,
14,
5,
14,
6,
14,
7,
14,
8,
14,
9,
14,
10,
14,
11,
14,
12,
14,
13,
14,
14,
14,
15,
14,
16,
14,
17,
14,
18,
14,
19,
14,
20,
14,
21,
14,
22,
14,
23,
14,
24,
14,
25,
14,
26,
14,
27,
14,
28,
14,
29,
14,
30,
14,
31,
14,
32,
14,
33,
14,
34,
14,
35,
14,
36,
14,
37,
14,
38,
14,
39,
14,
40,
14,
41,
14,
42,
14,
43,
14,
44,
14,
45,
14,
46,
14,
47,
14,
48,
14,
49,
14,
50,
14,
51,
14,
52,
14,
53,
14,
54,
14,
55,
14,
56,
14,
57,
14,
58,
14,
63,
14,
64,
14,
65,
14,
66,
14,
67,
14,
68,
14,
69,
14,
70,
14,
71,
14,
72,
14,
73,
14,
74,
14,
75,
14,
76,
14,
77,
14,
78,
14,
79,
14,
80,
14,
81,
14,
82,
14,
83,
14,
84,
14,
85,
14,
86,
14,
87,
14,
88,
14,
89,
14,
90,
14,
91,
14,
2,
30,
3,
30,
10,
30,
11,
30,
30,
30,
31,
30,
64,
30,
65,
30,
86,
30,
87,
30,
96,
30,
97,
30,
106,
30,
107,
30,
128,
30,
129,
30,
130,
30,
131,
30,
132,
30,
133,
30,
242,
30,
243,
30,
12,
32,
13,
32,
14,
32,
15,
32,
19,
32,
20,
32,
21,
32,
23,
32,
24,
32,
25,
32,
26,
32,
28,
32,
29,
32,
30,
32,
32,
32,
33,
32,
34,
32,
38,
32,
48,
32,
57,
32,
58,
32,
170,
32,
171,
32,
172,
32,
175,
32,
22,
33,
34,
33,
25,
34,
26,
34,
72,
34,
100,
34,
101,
34,
32,
35,
33,
35,
0,
37,
2,
37,
12,
37,
16,
37,
20,
37,
24,
37,
28,
37,
36,
37,
44,
37,
52,
37,
60,
37,
80,
37,
81,
37,
82,
37,
83,
37,
84,
37,
85,
37,
86,
37,
87,
37,
88,
37,
89,
37,
90,
37,
91,
37,
92,
37,
93,
37,
94,
37,
95,
37,
96,
37,
97,
37,
98,
37,
99,
37,
100,
37,
101,
37,
102,
37,
103,
37,
104,
37,
105,
37,
106,
37,
107,
37,
108,
37,
128,
37,
132,
37,
136,
37,
140,
37,
144,
37,
145,
37,
146,
37,
147,
37,
160,
37,
0,
0,
2,
0,
0,
192,
3,
0,
0,
192,
4,
0,
0,
192,
5,
0,
0,
192,
6,
0,
0,
192,
7,
0,
0,
192,
8,
0,
0,
192,
9,
0,
0,
192,
10,
0,
0,
192,
11,
0,
0,
192,
12,
0,
0,
192,
13,
0,
0,
192,
14,
0,
0,
192,
15,
0,
0,
192,
16,
0,
0,
192,
17,
0,
0,
192,
18,
0,
0,
192,
19,
0,
0,
192,
20,
0,
0,
192,
21,
0,
0,
192,
22,
0,
0,
192,
23,
0,
0,
192,
24,
0,
0,
192,
25,
0,
0,
192,
26,
0,
0,
192,
27,
0,
0,
192,
28,
0,
0,
192,
29,
0,
0,
192,
30,
0,
0,
192,
31,
0,
0,
192,
0,
0,
0,
179,
1,
0,
0,
195,
2,
0,
0,
195,
3,
0,
0,
195,
4,
0,
0,
195,
5,
0,
0,
195,
6,
0,
0,
195,
7,
0,
0,
195,
8,
0,
0,
195,
9,
0,
0,
195,
10,
0,
0,
195,
11,
0,
0,
195,
12,
0,
0,
195,
13,
0,
0,
211,
14,
0,
0,
195,
15,
0,
0,
195,
0,
0,
12,
187,
1,
0,
12,
195,
2,
0,
12,
195,
3,
0,
12,
195,
4,
0,
12,
211,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
17,
0,
10,
0,
17,
17,
17,
0,
0,
0,
0,
5,
0,
0,
0,
0,
0,
0,
9,
0,
0,
0,
0,
11,
0,
0,
0,
0,
0,
0,
0,
0,
17,
0,
15,
10,
17,
17,
17,
3,
10,
7,
0,
1,
19,
9,
11,
11,
0,
0,
9,
6,
11,
0,
0,
11,
0,
6,
17,
0,
0,
0,
17,
17,
17,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
11,
0,
0,
0,
0,
0,
0,
0,
0,
17,
0,
10,
10,
17,
17,
17,
0,
10,
0,
0,
2,
0,
9,
11,
0,
0,
0,
9,
0,
11,
0,
0,
11,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
12,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
12,
0,
0,
0,
0,
12,
0,
0,
0,
0,
9,
12,
0,
0,
0,
0,
0,
12,
0,
0,
12,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
14,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
13,
0,
0,
0,
4,
13,
0,
0,
0,
0,
9,
14,
0,
0,
0,
0,
0,
14,
0,
0,
14,
0,
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,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
15,
0,
0,
0,
0,
15,
0,
0,
0,
0,
9,
16,
0,
0,
0,
0,
0,
16,
0,
0,
16,
0,
0,
18,
0,
0,
0,
18,
18,
18,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
18,
0,
0,
0,
18,
18,
18,
0,
0,
0,
0,
0,
0,
9,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
11,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
10,
0,
0,
0,
0,
10,
0,
0,
0,
0,
9,
11,
0,
0,
0,
0,
0,
11,
0,
0,
11,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
12,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
12,
0,
0,
0,
0,
12,
0,
0,
0,
0,
9,
12,
0,
0,
0,
0,
0,
12,
0,
0,
12,
0,
0,
45,
43,
32,
32,
32,
48,
88,
48,
120,
0,
0,
0,
0,
0,
0,
0,
40,
110,
117,
108,
108,
41,
0,
0,
45,
48,
88,
43,
48,
88,
32,
48,
88,
45,
48,
120,
43,
48,
120,
32,
48,
120,
0,
0,
0,
0,
0,
0,
105,
110,
102,
0,
0,
0,
0,
0,
73,
78,
70,
0,
0,
0,
0,
0,
110,
97,
110,
0,
0,
0,
0,
0,
78,
65,
78,
0,
0,
0,
0,
0,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
65,
66,
67,
68,
69,
70,
46,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
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,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
255,
255,
255,
255,
255,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
'i8',
ALLOC_NONE,
Runtime.GLOBAL_BASE + 127772
);
var tempDoublePtr = Runtime.alignMemory(allocate(12, 'i8', ALLOC_STATIC), 8);
assert(tempDoublePtr % 8 == 0);
function copyTempFloat(ptr) {
// functions, because inlining this code increases code size too much
HEAP8[tempDoublePtr] = HEAP8[ptr];
HEAP8[tempDoublePtr + 1] = HEAP8[ptr + 1];
HEAP8[tempDoublePtr + 2] = HEAP8[ptr + 2];
HEAP8[tempDoublePtr + 3] = HEAP8[ptr + 3];
}
function copyTempDouble(ptr) {
HEAP8[tempDoublePtr] = HEAP8[ptr];
HEAP8[tempDoublePtr + 1] = HEAP8[ptr + 1];
HEAP8[tempDoublePtr + 2] = HEAP8[ptr + 2];
HEAP8[tempDoublePtr + 3] = HEAP8[ptr + 3];
HEAP8[tempDoublePtr + 4] = HEAP8[ptr + 4];
HEAP8[tempDoublePtr + 5] = HEAP8[ptr + 5];
HEAP8[tempDoublePtr + 6] = HEAP8[ptr + 6];
HEAP8[tempDoublePtr + 7] = HEAP8[ptr + 7];
}
function _emscripten_get_now() {
if (!_emscripten_get_now.actual) {
if (ENVIRONMENT_IS_NODE) {
_emscripten_get_now.actual = function _emscripten_get_now_actual() {
var t = process['hrtime']();
return t[0] * 1e3 + t[1] / 1e6;
};
} else if (typeof dateNow !== 'undefined') {
_emscripten_get_now.actual = dateNow;
} else if (ENVIRONMENT_IS_WEB && window['performance'] && window['performance']['now']) {
_emscripten_get_now.actual = function _emscripten_get_now_actual() {
return window['performance']['now']();
};
} else {
_emscripten_get_now.actual = Date.now;
}
}
return _emscripten_get_now.actual();
}
function _emscripten_get_now_is_monotonic() {
// return whether emscripten_get_now is guaranteed monotonic; the Date.now
// implementation is not :(
return (
ENVIRONMENT_IS_NODE || typeof dateNow !== 'undefined' || (ENVIRONMENT_IS_WEB && window['performance'] && window['performance']['now'])
);
}
var ERRNO_CODES = {
EPERM: 1,
ENOENT: 2,
ESRCH: 3,
EINTR: 4,
EIO: 5,
ENXIO: 6,
E2BIG: 7,
ENOEXEC: 8,
EBADF: 9,
ECHILD: 10,
EAGAIN: 11,
EWOULDBLOCK: 11,
ENOMEM: 12,
EACCES: 13,
EFAULT: 14,
ENOTBLK: 15,
EBUSY: 16,
EEXIST: 17,
EXDEV: 18,
ENODEV: 19,
ENOTDIR: 20,
EISDIR: 21,
EINVAL: 22,
ENFILE: 23,
EMFILE: 24,
ENOTTY: 25,
ETXTBSY: 26,
EFBIG: 27,
ENOSPC: 28,
ESPIPE: 29,
EROFS: 30,
EMLINK: 31,
EPIPE: 32,
EDOM: 33,
ERANGE: 34,
ENOMSG: 42,
EIDRM: 43,
ECHRNG: 44,
EL2NSYNC: 45,
EL3HLT: 46,
EL3RST: 47,
ELNRNG: 48,
EUNATCH: 49,
ENOCSI: 50,
EL2HLT: 51,
EDEADLK: 35,
ENOLCK: 37,
EBADE: 52,
EBADR: 53,
EXFULL: 54,
ENOANO: 55,
EBADRQC: 56,
EBADSLT: 57,
EDEADLOCK: 35,
EBFONT: 59,
ENOSTR: 60,
ENODATA: 61,
ETIME: 62,
ENOSR: 63,
ENONET: 64,
ENOPKG: 65,
EREMOTE: 66,
ENOLINK: 67,
EADV: 68,
ESRMNT: 69,
ECOMM: 70,
EPROTO: 71,
EMULTIHOP: 72,
EDOTDOT: 73,
EBADMSG: 74,
ENOTUNIQ: 76,
EBADFD: 77,
EREMCHG: 78,
ELIBACC: 79,
ELIBBAD: 80,
ELIBSCN: 81,
ELIBMAX: 82,
ELIBEXEC: 83,
ENOSYS: 38,
ENOTEMPTY: 39,
ENAMETOOLONG: 36,
ELOOP: 40,
EOPNOTSUPP: 95,
EPFNOSUPPORT: 96,
ECONNRESET: 104,
ENOBUFS: 105,
EAFNOSUPPORT: 97,
EPROTOTYPE: 91,
ENOTSOCK: 88,
ENOPROTOOPT: 92,
ESHUTDOWN: 108,
ECONNREFUSED: 111,
EADDRINUSE: 98,
ECONNABORTED: 103,
ENETUNREACH: 101,
ENETDOWN: 100,
ETIMEDOUT: 110,
EHOSTDOWN: 112,
EHOSTUNREACH: 113,
EINPROGRESS: 115,
EALREADY: 114,
EDESTADDRREQ: 89,
EMSGSIZE: 90,
EPROTONOSUPPORT: 93,
ESOCKTNOSUPPORT: 94,
EADDRNOTAVAIL: 99,
ENETRESET: 102,
EISCONN: 106,
ENOTCONN: 107,
ETOOMANYREFS: 109,
EUSERS: 87,
EDQUOT: 122,
ESTALE: 116,
ENOTSUP: 95,
ENOMEDIUM: 123,
EILSEQ: 84,
EOVERFLOW: 75,
ECANCELED: 125,
ENOTRECOVERABLE: 131,
EOWNERDEAD: 130,
ESTRPIPE: 86
};
var ___errno_state = 0;
function ___setErrNo(value) {
// For convenient setting and returning of errno.
HEAP32[___errno_state >> 2] = value;
return value;
}
function _clock_gettime(clk_id, tp) {
// int clock_gettime(clockid_t clk_id, struct timespec *tp);
var now;
if (clk_id === 0) {
now = Date.now();
} else if (clk_id === 1 && _emscripten_get_now_is_monotonic()) {
now = _emscripten_get_now();
} else {
___setErrNo(ERRNO_CODES.EINVAL);
return -1;
}
HEAP32[tp >> 2] = (now / 1000) | 0; // seconds
HEAP32[(tp + 4) >> 2] = ((now % 1000) * 1000 * 1000) | 0; // nanoseconds
return 0;
}
Module['_i64Subtract'] = _i64Subtract;
function ___assert_fail(condition, filename, line, func) {
ABORT = true;
throw 'Assertion failed: ' +
Pointer_stringify(condition) +
', at: ' +
[filename ? Pointer_stringify(filename) : 'unknown filename', line, func ? Pointer_stringify(func) : 'unknown function'] +
' at ' +
stackTrace();
}
Module['_memset'] = _memset;
var ERRNO_MESSAGES = {
0: 'Success',
1: 'Not super-user',
2: 'No such file or directory',
3: 'No such process',
4: 'Interrupted system call',
5: 'I/O error',
6: 'No such device or address',
7: 'Arg list too long',
8: 'Exec format error',
9: 'Bad file number',
10: 'No children',
11: 'No more processes',
12: 'Not enough core',
13: 'Permission denied',
14: 'Bad address',
15: 'Block device required',
16: 'Mount device busy',
17: 'File exists',
18: 'Cross-device link',
19: 'No such device',
20: 'Not a directory',
21: 'Is a directory',
22: 'Invalid argument',
23: 'Too many open files in system',
24: 'Too many open files',
25: 'Not a typewriter',
26: 'Text file busy',
27: 'File too large',
28: 'No space left on device',
29: 'Illegal seek',
30: 'Read only file system',
31: 'Too many links',
32: 'Broken pipe',
33: 'Math arg out of domain of func',
34: 'Math result not representable',
35: 'File locking deadlock error',
36: 'File or path name too long',
37: 'No record locks available',
38: 'Function not implemented',
39: 'Directory not empty',
40: 'Too many symbolic links',
42: 'No message of desired type',
43: 'Identifier removed',
44: 'Channel number out of range',
45: 'Level 2 not synchronized',
46: 'Level 3 halted',
47: 'Level 3 reset',
48: 'Link number out of range',
49: 'Protocol driver not attached',
50: 'No CSI structure available',
51: 'Level 2 halted',
52: 'Invalid exchange',
53: 'Invalid request descriptor',
54: 'Exchange full',
55: 'No anode',
56: 'Invalid request code',
57: 'Invalid slot',
59: 'Bad font file fmt',
60: 'Device not a stream',
61: 'No data (for no delay io)',
62: 'Timer expired',
63: 'Out of streams resources',
64: 'Machine is not on the network',
65: 'Package not installed',
66: 'The object is remote',
67: 'The link has been severed',
68: 'Advertise error',
69: 'Srmount error',
70: 'Communication error on send',
71: 'Protocol error',
72: 'Multihop attempted',
73: 'Cross mount point (not really error)',
74: 'Trying to read unreadable message',
75: 'Value too large for defined data type',
76: 'Given log. name not unique',
77: 'f.d. invalid for this operation',
78: 'Remote address changed',
79: 'Can access a needed shared lib',
80: 'Accessing a corrupted shared lib',
81: '.lib section in a.out corrupted',
82: 'Attempting to link in too many libs',
83: 'Attempting to exec a shared library',
84: 'Illegal byte sequence',
86: 'Streams pipe error',
87: 'Too many users',
88: 'Socket operation on non-socket',
89: 'Destination address required',
90: 'Message too long',
91: 'Protocol wrong type for socket',
92: 'Protocol not available',
93: 'Unknown protocol',
94: 'Socket type not supported',
95: 'Not supported',
96: 'Protocol family not supported',
97: 'Address family not supported by protocol family',
98: 'Address already in use',
99: 'Address not available',
100: 'Network interface is not configured',
101: 'Network is unreachable',
102: 'Connection reset by network',
103: 'Connection aborted',
104: 'Connection reset by peer',
105: 'No buffer space available',
106: 'Socket is already connected',
107: 'Socket is not connected',
108: "Can't send after socket shutdown",
109: 'Too many references',
110: 'Connection timed out',
111: 'Connection refused',
112: 'Host is down',
113: 'Host is unreachable',
114: 'Socket already connected',
115: 'Connection already in progress',
116: 'Stale file handle',
122: 'Quota exceeded',
123: 'No medium (in tape drive)',
125: 'Operation canceled',
130: 'Previous owner died',
131: 'State not recoverable'
};
var PATH = {
splitPath: function(filename) {
var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
return splitPathRe.exec(filename).slice(1);
},
normalizeArray: function(parts, allowAboveRoot) {
// if the path tries to go above the root, `up` ends up > 0
var up = 0;
for (var i = parts.length - 1; i >= 0; i--) {
var last = parts[i];
if (last === '.') {
parts.splice(i, 1);
} else if (last === '..') {
parts.splice(i, 1);
up++;
} else if (up) {
parts.splice(i, 1);
up--;
}
}
// if the path is allowed to go above the root, restore leading ..s
if (allowAboveRoot) {
for (; up--; up) {
parts.unshift('..');
}
}
return parts;
},
normalize: function(path) {
var isAbsolute = path.charAt(0) === '/',
trailingSlash = path.substr(-1) === '/';
// Normalize the path
path = PATH.normalizeArray(
path.split('/').filter(function(p) {
return !!p;
}),
!isAbsolute
).join('/');
if (!path && !isAbsolute) {
path = '.';
}
if (path && trailingSlash) {
path += '/';
}
return (isAbsolute ? '/' : '') + path;
},
dirname: function(path) {
var result = PATH.splitPath(path),
root = result[0],
dir = result[1];
if (!root && !dir) {
// No dirname whatsoever
return '.';
}
if (dir) {
// It has a dirname, strip trailing slash
dir = dir.substr(0, dir.length - 1);
}
return root + dir;
},
basename: function(path) {
// EMSCRIPTEN return '/'' for '/', not an empty string
if (path === '/') return '/';
var lastSlash = path.lastIndexOf('/');
if (lastSlash === -1) return path;
return path.substr(lastSlash + 1);
},
extname: function(path) {
return PATH.splitPath(path)[3];
},
join: function() {
var paths = Array.prototype.slice.call(arguments, 0);
return PATH.normalize(paths.join('/'));
},
join2: function(l, r) {
return PATH.normalize(l + '/' + r);
},
resolve: function() {
var resolvedPath = '',
resolvedAbsolute = false;
for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
var path = i >= 0 ? arguments[i] : FS.cwd();
// Skip empty and invalid entries
if (typeof path !== 'string') {
throw new TypeError('Arguments to path.resolve must be strings');
} else if (!path) {
return ''; // an invalid portion invalidates the whole thing
}
resolvedPath = path + '/' + resolvedPath;
resolvedAbsolute = path.charAt(0) === '/';
}
// At this point the path should be resolved to a full absolute path, but
// handle relative paths to be safe (might happen when process.cwd() fails)
resolvedPath = PATH.normalizeArray(
resolvedPath.split('/').filter(function(p) {
return !!p;
}),
!resolvedAbsolute
).join('/');
return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';
},
relative: function(from, to) {
from = PATH.resolve(from).substr(1);
to = PATH.resolve(to).substr(1);
function trim(arr) {
var start = 0;
for (; start < arr.length; start++) {
if (arr[start] !== '') break;
}
var end = arr.length - 1;
for (; end >= 0; end--) {
if (arr[end] !== '') break;
}
if (start > end) return [];
return arr.slice(start, end - start + 1);
}
var fromParts = trim(from.split('/'));
var toParts = trim(to.split('/'));
var length = Math.min(fromParts.length, toParts.length);
var samePartsLength = length;
for (var i = 0; i < length; i++) {
if (fromParts[i] !== toParts[i]) {
samePartsLength = i;
break;
}
}
var outputParts = [];
for (var i = samePartsLength; i < fromParts.length; i++) {
outputParts.push('..');
}
outputParts = outputParts.concat(toParts.slice(samePartsLength));
return outputParts.join('/');
}
};
var TTY = {
ttys: [],
init: function() {
// https://github.com/kripken/emscripten/pull/1555
// if (ENVIRONMENT_IS_NODE) {
// // currently, FS.init does not distinguish if process.stdin is a file or TTY
// // device, it always assumes it's a TTY device. because of this, we're forcing
// // process.stdin to UTF8 encoding to at least make stdin reading compatible
// // with text files until FS.init can be refactored.
// process['stdin']['setEncoding']('utf8');
// }
},
shutdown: function() {
// https://github.com/kripken/emscripten/pull/1555
// if (ENVIRONMENT_IS_NODE) {
// // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)?
// // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation
// // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists?
// // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle
// // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call
// process['stdin']['pause']();
// }
},
register: function(dev, ops) {
TTY.ttys[dev] = { input: [], output: [], ops: ops };
FS.registerDevice(dev, TTY.stream_ops);
},
stream_ops: {
open: function(stream) {
var tty = TTY.ttys[stream.node.rdev];
if (!tty) {
throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
}
stream.tty = tty;
stream.seekable = false;
},
close: function(stream) {
// flush any pending line data
if (stream.tty.output.length) {
stream.tty.ops.put_char(stream.tty, 10);
}
},
read: function(stream, buffer, offset, length, pos /* ignored */) {
if (!stream.tty || !stream.tty.ops.get_char) {
throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
}
var bytesRead = 0;
for (var i = 0; i < length; i++) {
var result;
try {
result = stream.tty.ops.get_char(stream.tty);
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES.EIO);
}
if (result === undefined && bytesRead === 0) {
throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
}
if (result === null || result === undefined) break;
bytesRead++;
buffer[offset + i] = result;
}
if (bytesRead) {
stream.node.timestamp = Date.now();
}
return bytesRead;
},
write: function(stream, buffer, offset, length, pos) {
if (!stream.tty || !stream.tty.ops.put_char) {
throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
}
for (var i = 0; i < length; i++) {
try {
stream.tty.ops.put_char(stream.tty, buffer[offset + i]);
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES.EIO);
}
}
if (length) {
stream.node.timestamp = Date.now();
}
return i;
}
},
default_tty_ops: {
get_char: function(tty) {
if (!tty.input.length) {
var result = null;
if (ENVIRONMENT_IS_NODE) {
result = process['stdin']['read']();
if (!result) {
if (process['stdin']['_readableState'] && process['stdin']['_readableState']['ended']) {
return null; // EOF
}
return undefined; // no data available
}
} else if (typeof window != 'undefined' && typeof window.prompt == 'function') {
// Browser.
result = window.prompt('Input: '); // returns null on cancel
if (result !== null) {
result += '\n';
}
} else if (typeof readline == 'function') {
// Command line.
result = readline();
if (result !== null) {
result += '\n';
}
}
if (!result) {
return null;
}
tty.input = intArrayFromString(result, true);
}
return tty.input.shift();
},
put_char: function(tty, val) {
if (val === null || val === 10) {
Module['print'](tty.output.join(''));
tty.output = [];
} else {
tty.output.push(TTY.utf8.processCChar(val));
}
}
},
default_tty1_ops: {
put_char: function(tty, val) {
if (val === null || val === 10) {
Module['printErr'](tty.output.join(''));
tty.output = [];
} else {
tty.output.push(TTY.utf8.processCChar(val));
}
}
}
};
var MEMFS = {
ops_table: null,
mount: function(mount) {
return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0);
},
createNode: function(parent, name, mode, dev) {
if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
// no supported
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
if (!MEMFS.ops_table) {
MEMFS.ops_table = {
dir: {
node: {
getattr: MEMFS.node_ops.getattr,
setattr: MEMFS.node_ops.setattr,
lookup: MEMFS.node_ops.lookup,
mknod: MEMFS.node_ops.mknod,
rename: MEMFS.node_ops.rename,
unlink: MEMFS.node_ops.unlink,
rmdir: MEMFS.node_ops.rmdir,
readdir: MEMFS.node_ops.readdir,
symlink: MEMFS.node_ops.symlink
},
stream: {
llseek: MEMFS.stream_ops.llseek
}
},
file: {
node: {
getattr: MEMFS.node_ops.getattr,
setattr: MEMFS.node_ops.setattr
},
stream: {
llseek: MEMFS.stream_ops.llseek,
read: MEMFS.stream_ops.read,
write: MEMFS.stream_ops.write,
allocate: MEMFS.stream_ops.allocate,
mmap: MEMFS.stream_ops.mmap
}
},
link: {
node: {
getattr: MEMFS.node_ops.getattr,
setattr: MEMFS.node_ops.setattr,
readlink: MEMFS.node_ops.readlink
},
stream: {}
},
chrdev: {
node: {
getattr: MEMFS.node_ops.getattr,
setattr: MEMFS.node_ops.setattr
},
stream: FS.chrdev_stream_ops
}
};
}
var node = FS.createNode(parent, name, mode, dev);
if (FS.isDir(node.mode)) {
node.node_ops = MEMFS.ops_table.dir.node;
node.stream_ops = MEMFS.ops_table.dir.stream;
node.contents = {};
} else if (FS.isFile(node.mode)) {
node.node_ops = MEMFS.ops_table.file.node;
node.stream_ops = MEMFS.ops_table.file.stream;
node.usedBytes = 0; // The actual number of bytes used in the typed array, as opposed to contents.buffer.byteLength which gives the whole capacity.
// When the byte data of the file is populated, this will point to either a typed array, or a normal JS array. Typed arrays are preferred
// for performance, and used by default. However, typed arrays are not resizable like normal JS arrays are, so there is a small disk size
// penalty involved for appending file writes that continuously grow a file similar to std::vector capacity vs used -scheme.
node.contents = null;
} else if (FS.isLink(node.mode)) {
node.node_ops = MEMFS.ops_table.link.node;
node.stream_ops = MEMFS.ops_table.link.stream;
} else if (FS.isChrdev(node.mode)) {
node.node_ops = MEMFS.ops_table.chrdev.node;
node.stream_ops = MEMFS.ops_table.chrdev.stream;
}
node.timestamp = Date.now();
// add the new node to the parent
if (parent) {
parent.contents[name] = node;
}
return node;
},
getFileDataAsRegularArray: function(node) {
if (node.contents && node.contents.subarray) {
var arr = [];
for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]);
return arr; // Returns a copy of the original data.
}
return node.contents; // No-op, the file contents are already in a JS array. Return as-is.
},
getFileDataAsTypedArray: function(node) {
if (!node.contents) return new Uint8Array();
if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); // Make sure to not return excess unused bytes.
return new Uint8Array(node.contents);
},
expandFileStorage: function(node, newCapacity) {
// If we are asked to expand the size of a file that already exists, revert to using a standard JS array to store the file
// instead of a typed array. This makes resizing the array more flexible because we can just .push() elements at the back to
// increase the size.
if (node.contents && node.contents.subarray && newCapacity > node.contents.length) {
node.contents = MEMFS.getFileDataAsRegularArray(node);
node.usedBytes = node.contents.length; // We might be writing to a lazy-loaded file which had overridden this property, so force-reset it.
}
if (!node.contents || node.contents.subarray) {
// Keep using a typed array if creating a new storage, or if old one was a typed array as well.
var prevCapacity = node.contents ? node.contents.buffer.byteLength : 0;
if (prevCapacity >= newCapacity) return; // No need to expand, the storage was already large enough.
// Don't expand strictly to the given requested limit if it's only a very small increase, but instead geometrically grow capacity.
// For small filesizes (<1MB), perform size*2 geometric increase, but for large sizes, do a much more conservative size*1.125 increase to
// avoid overshooting the allocation cap by a very large margin.
var CAPACITY_DOUBLING_MAX = 1024 * 1024;
newCapacity = Math.max(newCapacity, (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2.0 : 1.125)) | 0);
if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); // At minimum allocate 256b for each file when expanding.
var oldContents = node.contents;
node.contents = new Uint8Array(newCapacity); // Allocate new storage.
if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); // Copy old data over to the new storage.
return;
}
// Not using a typed array to back the file storage. Use a standard JS array instead.
if (!node.contents && newCapacity > 0) node.contents = [];
while (node.contents.length < newCapacity) node.contents.push(0);
},
resizeFileStorage: function(node, newSize) {
if (node.usedBytes == newSize) return;
if (newSize == 0) {
node.contents = null; // Fully decommit when requesting a resize to zero.
node.usedBytes = 0;
return;
}
if (!node.contents || node.contents.subarray) {
// Resize a typed array if that is being used as the backing store.
var oldContents = node.contents;
node.contents = new Uint8Array(new ArrayBuffer(newSize)); // Allocate new storage.
if (oldContents) {
node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); // Copy old data over to the new storage.
}
node.usedBytes = newSize;
return;
}
// Backing with a JS array.
if (!node.contents) node.contents = [];
if (node.contents.length > newSize) node.contents.length = newSize;
else while (node.contents.length < newSize) node.contents.push(0);
node.usedBytes = newSize;
},
node_ops: {
getattr: function(node) {
var attr = {};
// device numbers reuse inode numbers.
attr.dev = FS.isChrdev(node.mode) ? node.id : 1;
attr.ino = node.id;
attr.mode = node.mode;
attr.nlink = 1;
attr.uid = 0;
attr.gid = 0;
attr.rdev = node.rdev;
if (FS.isDir(node.mode)) {
attr.size = 4096;
} else if (FS.isFile(node.mode)) {
attr.size = node.usedBytes;
} else if (FS.isLink(node.mode)) {
attr.size = node.link.length;
} else {
attr.size = 0;
}
attr.atime = new Date(node.timestamp);
attr.mtime = new Date(node.timestamp);
attr.ctime = new Date(node.timestamp);
// NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize),
// but this is not required by the standard.
attr.blksize = 4096;
attr.blocks = Math.ceil(attr.size / attr.blksize);
return attr;
},
setattr: function(node, attr) {
if (attr.mode !== undefined) {
node.mode = attr.mode;
}
if (attr.timestamp !== undefined) {
node.timestamp = attr.timestamp;
}
if (attr.size !== undefined) {
MEMFS.resizeFileStorage(node, attr.size);
}
},
lookup: function(parent, name) {
throw FS.genericErrors[ERRNO_CODES.ENOENT];
},
mknod: function(parent, name, mode, dev) {
return MEMFS.createNode(parent, name, mode, dev);
},
rename: function(old_node, new_dir, new_name) {
// if we're overwriting a directory at new_name, make sure it's empty.
if (FS.isDir(old_node.mode)) {
var new_node;
try {
new_node = FS.lookupNode(new_dir, new_name);
} catch (e) {}
if (new_node) {
for (var i in new_node.contents) {
throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
}
}
}
// do the internal rewiring
delete old_node.parent.contents[old_node.name];
old_node.name = new_name;
new_dir.contents[new_name] = old_node;
old_node.parent = new_dir;
},
unlink: function(parent, name) {
delete parent.contents[name];
},
rmdir: function(parent, name) {
var node = FS.lookupNode(parent, name);
for (var i in node.contents) {
throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
}
delete parent.contents[name];
},
readdir: function(node) {
var entries = ['.', '..'];
for (var key in node.contents) {
if (!node.contents.hasOwnProperty(key)) {
continue;
}
entries.push(key);
}
return entries;
},
symlink: function(parent, newname, oldpath) {
var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0);
node.link = oldpath;
return node;
},
readlink: function(node) {
if (!FS.isLink(node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
return node.link;
}
},
stream_ops: {
read: function(stream, buffer, offset, length, position) {
var contents = stream.node.contents;
if (position >= stream.node.usedBytes) return 0;
var size = Math.min(stream.node.usedBytes - position, length);
assert(size >= 0);
if (size > 8 && contents.subarray) {
// non-trivial, and typed array
buffer.set(contents.subarray(position, position + size), offset);
} else {
for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];
}
return size;
},
write: function(stream, buffer, offset, length, position, canOwn) {
if (!length) return 0;
var node = stream.node;
node.timestamp = Date.now();
if (buffer.subarray && (!node.contents || node.contents.subarray)) {
// This write is from a typed array to a typed array?
if (canOwn) {
// Can we just reuse the buffer we are given?
node.contents = buffer.subarray(offset, offset + length);
node.usedBytes = length;
return length;
} else if (node.usedBytes === 0 && position === 0) {
// If this is a simple first write to an empty file, do a fast set since we don't need to care about old data.
node.contents = new Uint8Array(buffer.subarray(offset, offset + length));
node.usedBytes = length;
return length;
} else if (position + length <= node.usedBytes) {
// Writing to an already allocated and used subrange of the file?
node.contents.set(buffer.subarray(offset, offset + length), position);
return length;
}
}
// Appending to an existing file and we need to reallocate, or source data did not come as a typed array.
MEMFS.expandFileStorage(node, position + length);
if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position);
// Use typed array write if available.
else
for (var i = 0; i < length; i++) {
node.contents[position + i] = buffer[offset + i]; // Or fall back to manual write if not.
}
node.usedBytes = Math.max(node.usedBytes, position + length);
return length;
},
llseek: function(stream, offset, whence) {
var position = offset;
if (whence === 1) {
// SEEK_CUR.
position += stream.position;
} else if (whence === 2) {
// SEEK_END.
if (FS.isFile(stream.node.mode)) {
position += stream.node.usedBytes;
}
}
if (position < 0) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
stream.ungotten = [];
stream.position = position;
return position;
},
allocate: function(stream, offset, length) {
MEMFS.expandFileStorage(stream.node, offset + length);
stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);
},
mmap: function(stream, buffer, offset, length, position, prot, flags) {
if (!FS.isFile(stream.node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
}
var ptr;
var allocated;
var contents = stream.node.contents;
// Only make a new copy when MAP_PRIVATE is specified.
if (!(flags & 2) && (contents.buffer === buffer || contents.buffer === buffer.buffer)) {
// We can't emulate MAP_SHARED when the file is not backed by the buffer
// we're mapping to (e.g. the HEAP buffer).
allocated = false;
ptr = contents.byteOffset;
} else {
// Try to avoid unnecessary slices.
if (position > 0 || position + length < stream.node.usedBytes) {
if (contents.subarray) {
contents = contents.subarray(position, position + length);
} else {
contents = Array.prototype.slice.call(contents, position, position + length);
}
}
allocated = true;
ptr = _malloc(length);
if (!ptr) {
throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);
}
buffer.set(contents, ptr);
}
return { ptr: ptr, allocated: allocated };
}
}
};
var IDBFS = {
dbs: {},
indexedDB: function() {
if (typeof indexedDB !== 'undefined') return indexedDB;
var ret = null;
if (typeof window === 'object') ret = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
assert(ret, 'IDBFS used, but indexedDB not supported');
return ret;
},
DB_VERSION: 21,
DB_STORE_NAME: 'FILE_DATA',
mount: function(mount) {
// reuse all of the core MEMFS functionality
return MEMFS.mount.apply(null, arguments);
},
syncfs: function(mount, populate, callback) {
IDBFS.getLocalSet(mount, function(err, local) {
if (err) return callback(err);
IDBFS.getRemoteSet(mount, function(err, remote) {
if (err) return callback(err);
var src = populate ? remote : local;
var dst = populate ? local : remote;
IDBFS.reconcile(src, dst, callback);
});
});
},
getDB: function(name, callback) {
// check the cache first
var db = IDBFS.dbs[name];
if (db) {
return callback(null, db);
}
var req;
try {
req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION);
} catch (e) {
return callback(e);
}
req.onupgradeneeded = function(e) {
var db = e.target.result;
var transaction = e.target.transaction;
var fileStore;
if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) {
fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME);
} else {
fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME);
}
fileStore.createIndex('timestamp', 'timestamp', { unique: false });
};
req.onsuccess = function() {
db = req.result;
// add to the cache
IDBFS.dbs[name] = db;
callback(null, db);
};
req.onerror = function() {
callback(this.error);
};
},
getLocalSet: function(mount, callback) {
var entries = {};
function isRealDir(p) {
return p !== '.' && p !== '..';
}
function toAbsolute(root) {
return function(p) {
return PATH.join2(root, p);
};
}
var check = FS.readdir(mount.mountpoint)
.filter(isRealDir)
.map(toAbsolute(mount.mountpoint));
while (check.length) {
var path = check.pop();
var stat;
try {
stat = FS.stat(path);
} catch (e) {
return callback(e);
}
if (FS.isDir(stat.mode)) {
check.push.apply(
check,
FS.readdir(path)
.filter(isRealDir)
.map(toAbsolute(path))
);
}
entries[path] = { timestamp: stat.mtime };
}
return callback(null, { type: 'local', entries: entries });
},
getRemoteSet: function(mount, callback) {
var entries = {};
IDBFS.getDB(mount.mountpoint, function(err, db) {
if (err) return callback(err);
var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly');
transaction.onerror = function() {
callback(this.error);
};
var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
var index = store.index('timestamp');
index.openKeyCursor().onsuccess = function(event) {
var cursor = event.target.result;
if (!cursor) {
return callback(null, { type: 'remote', db: db, entries: entries });
}
entries[cursor.primaryKey] = { timestamp: cursor.key };
cursor.continue();
};
});
},
loadLocalEntry: function(path, callback) {
var stat, node;
try {
var lookup = FS.lookupPath(path);
node = lookup.node;
stat = FS.stat(path);
} catch (e) {
return callback(e);
}
if (FS.isDir(stat.mode)) {
return callback(null, { timestamp: stat.mtime, mode: stat.mode });
} else if (FS.isFile(stat.mode)) {
// Performance consideration: storing a normal JavaScript array to a IndexedDB is much slower than storing a typed array.
// Therefore always convert the file contents to a typed array first before writing the data to IndexedDB.
node.contents = MEMFS.getFileDataAsTypedArray(node);
return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents });
} else {
return callback(new Error('node type not supported'));
}
},
storeLocalEntry: function(path, entry, callback) {
try {
if (FS.isDir(entry.mode)) {
FS.mkdir(path, entry.mode);
} else if (FS.isFile(entry.mode)) {
FS.writeFile(path, entry.contents, { encoding: 'binary', canOwn: true });
} else {
return callback(new Error('node type not supported'));
}
FS.chmod(path, entry.mode);
FS.utime(path, entry.timestamp, entry.timestamp);
} catch (e) {
return callback(e);
}
callback(null);
},
removeLocalEntry: function(path, callback) {
try {
var lookup = FS.lookupPath(path);
var stat = FS.stat(path);
if (FS.isDir(stat.mode)) {
FS.rmdir(path);
} else if (FS.isFile(stat.mode)) {
FS.unlink(path);
}
} catch (e) {
return callback(e);
}
callback(null);
},
loadRemoteEntry: function(store, path, callback) {
var req = store.get(path);
req.onsuccess = function(event) {
callback(null, event.target.result);
};
req.onerror = function() {
callback(this.error);
};
},
storeRemoteEntry: function(store, path, entry, callback) {
var req = store.put(entry, path);
req.onsuccess = function() {
callback(null);
};
req.onerror = function() {
callback(this.error);
};
},
removeRemoteEntry: function(store, path, callback) {
var req = store.delete(path);
req.onsuccess = function() {
callback(null);
};
req.onerror = function() {
callback(this.error);
};
},
reconcile: function(src, dst, callback) {
var total = 0;
var create = [];
Object.keys(src.entries).forEach(function(key) {
var e = src.entries[key];
var e2 = dst.entries[key];
if (!e2 || e.timestamp > e2.timestamp) {
create.push(key);
total++;
}
});
var remove = [];
Object.keys(dst.entries).forEach(function(key) {
var e = dst.entries[key];
var e2 = src.entries[key];
if (!e2) {
remove.push(key);
total++;
}
});
if (!total) {
return callback(null);
}
var errored = false;
var completed = 0;
var db = src.type === 'remote' ? src.db : dst.db;
var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite');
var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
function done(err) {
if (err) {
if (!done.errored) {
done.errored = true;
return callback(err);
}
return;
}
if (++completed >= total) {
return callback(null);
}
}
transaction.onerror = function() {
done(this.error);
};
// sort paths in ascending order so directory entries are created
// before the files inside them
create.sort().forEach(function(path) {
if (dst.type === 'local') {
IDBFS.loadRemoteEntry(store, path, function(err, entry) {
if (err) return done(err);
IDBFS.storeLocalEntry(path, entry, done);
});
} else {
IDBFS.loadLocalEntry(path, function(err, entry) {
if (err) return done(err);
IDBFS.storeRemoteEntry(store, path, entry, done);
});
}
});
// sort paths in descending order so files are deleted before their
// parent directories
remove
.sort()
.reverse()
.forEach(function(path) {
if (dst.type === 'local') {
IDBFS.removeLocalEntry(path, done);
} else {
IDBFS.removeRemoteEntry(store, path, done);
}
});
}
};
var NODEFS = {
isWindows: false,
staticInit: function() {
NODEFS.isWindows = !!process.platform.match(/^win/);
},
mount: function(mount) {
assert(ENVIRONMENT_IS_NODE);
return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0);
},
createNode: function(parent, name, mode, dev) {
if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
var node = FS.createNode(parent, name, mode);
node.node_ops = NODEFS.node_ops;
node.stream_ops = NODEFS.stream_ops;
return node;
},
getMode: function(path) {
var stat;
try {
stat = fs.lstatSync(path);
if (NODEFS.isWindows) {
// On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so
// propagate write bits to execute bits.
stat.mode = stat.mode | ((stat.mode & 146) >> 1);
}
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
return stat.mode;
},
realPath: function(node) {
var parts = [];
while (node.parent !== node) {
parts.push(node.name);
node = node.parent;
}
parts.push(node.mount.opts.root);
parts.reverse();
return PATH.join.apply(null, parts);
},
flagsToPermissionStringMap: {
0: 'r',
1: 'r+',
2: 'r+',
64: 'r',
65: 'r+',
66: 'r+',
129: 'rx+',
193: 'rx+',
514: 'w+',
577: 'w',
578: 'w+',
705: 'wx',
706: 'wx+',
1024: 'a',
1025: 'a',
1026: 'a+',
1089: 'a',
1090: 'a+',
1153: 'ax',
1154: 'ax+',
1217: 'ax',
1218: 'ax+',
4096: 'rs',
4098: 'rs+'
},
flagsToPermissionString: function(flags) {
if (flags in NODEFS.flagsToPermissionStringMap) {
return NODEFS.flagsToPermissionStringMap[flags];
} else {
return flags;
}
},
node_ops: {
getattr: function(node) {
var path = NODEFS.realPath(node);
var stat;
try {
stat = fs.lstatSync(path);
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
// node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096.
// See http://support.microsoft.com/kb/140365
if (NODEFS.isWindows && !stat.blksize) {
stat.blksize = 4096;
}
if (NODEFS.isWindows && !stat.blocks) {
stat.blocks = ((stat.size + stat.blksize - 1) / stat.blksize) | 0;
}
return {
dev: stat.dev,
ino: stat.ino,
mode: stat.mode,
nlink: stat.nlink,
uid: stat.uid,
gid: stat.gid,
rdev: stat.rdev,
size: stat.size,
atime: stat.atime,
mtime: stat.mtime,
ctime: stat.ctime,
blksize: stat.blksize,
blocks: stat.blocks
};
},
setattr: function(node, attr) {
var path = NODEFS.realPath(node);
try {
if (attr.mode !== undefined) {
fs.chmodSync(path, attr.mode);
// update the common node structure mode as well
node.mode = attr.mode;
}
if (attr.timestamp !== undefined) {
var date = new Date(attr.timestamp);
fs.utimesSync(path, date, date);
}
if (attr.size !== undefined) {
fs.truncateSync(path, attr.size);
}
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
},
lookup: function(parent, name) {
var path = PATH.join2(NODEFS.realPath(parent), name);
var mode = NODEFS.getMode(path);
return NODEFS.createNode(parent, name, mode);
},
mknod: function(parent, name, mode, dev) {
var node = NODEFS.createNode(parent, name, mode, dev);
// create the backing node for this in the fs root as well
var path = NODEFS.realPath(node);
try {
if (FS.isDir(node.mode)) {
fs.mkdirSync(path, node.mode);
} else {
fs.writeFileSync(path, '', { mode: node.mode });
}
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
return node;
},
rename: function(oldNode, newDir, newName) {
var oldPath = NODEFS.realPath(oldNode);
var newPath = PATH.join2(NODEFS.realPath(newDir), newName);
try {
fs.renameSync(oldPath, newPath);
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
},
unlink: function(parent, name) {
var path = PATH.join2(NODEFS.realPath(parent), name);
try {
fs.unlinkSync(path);
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
},
rmdir: function(parent, name) {
var path = PATH.join2(NODEFS.realPath(parent), name);
try {
fs.rmdirSync(path);
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
},
readdir: function(node) {
var path = NODEFS.realPath(node);
try {
return fs.readdirSync(path);
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
},
symlink: function(parent, newName, oldPath) {
var newPath = PATH.join2(NODEFS.realPath(parent), newName);
try {
fs.symlinkSync(oldPath, newPath);
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
},
readlink: function(node) {
var path = NODEFS.realPath(node);
try {
return fs.readlinkSync(path);
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
}
},
stream_ops: {
open: function(stream) {
var path = NODEFS.realPath(stream.node);
try {
if (FS.isFile(stream.node.mode)) {
stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags));
}
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
},
close: function(stream) {
try {
if (FS.isFile(stream.node.mode) && stream.nfd) {
fs.closeSync(stream.nfd);
}
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
},
read: function(stream, buffer, offset, length, position) {
// FIXME this is terrible.
var nbuffer = new Buffer(length);
var res;
try {
res = fs.readSync(stream.nfd, nbuffer, 0, length, position);
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
if (res > 0) {
for (var i = 0; i < res; i++) {
buffer[offset + i] = nbuffer[i];
}
}
return res;
},
write: function(stream, buffer, offset, length, position) {
// FIXME this is terrible.
var nbuffer = new Buffer(buffer.subarray(offset, offset + length));
var res;
try {
res = fs.writeSync(stream.nfd, nbuffer, 0, length, position);
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
return res;
},
llseek: function(stream, offset, whence) {
var position = offset;
if (whence === 1) {
// SEEK_CUR.
position += stream.position;
} else if (whence === 2) {
// SEEK_END.
if (FS.isFile(stream.node.mode)) {
try {
var stat = fs.fstatSync(stream.nfd);
position += stat.size;
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
}
}
if (position < 0) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
stream.position = position;
return position;
}
}
};
var _stdin = allocate(1, 'i32*', ALLOC_STATIC);
var _stdout = allocate(1, 'i32*', ALLOC_STATIC);
var _stderr = allocate(1, 'i32*', ALLOC_STATIC);
function _fflush(stream) {
// int fflush(FILE *stream);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html
// we don't currently perform any user-space buffering of data
}
var FS = {
root: null,
mounts: [],
devices: [null],
streams: [],
nextInode: 1,
nameTable: null,
currentPath: '/',
initialized: false,
ignorePermissions: true,
trackingDelegate: {},
tracking: { openFlags: { READ: 1, WRITE: 2 } },
ErrnoError: null,
genericErrors: {},
handleFSError: function(e) {
if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace();
return ___setErrNo(e.errno);
},
lookupPath: function(path, opts) {
path = PATH.resolve(FS.cwd(), path);
opts = opts || {};
if (!path) return { path: '', node: null };
var defaults = {
follow_mount: true,
recurse_count: 0
};
for (var key in defaults) {
if (opts[key] === undefined) {
opts[key] = defaults[key];
}
}
if (opts.recurse_count > 8) {
// max recursive lookup of 8
throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
}
// split the path
var parts = PATH.normalizeArray(
path.split('/').filter(function(p) {
return !!p;
}),
false
);
// start at the root
var current = FS.root;
var current_path = '/';
for (var i = 0; i < parts.length; i++) {
var islast = i === parts.length - 1;
if (islast && opts.parent) {
// stop resolving
break;
}
current = FS.lookupNode(current, parts[i]);
current_path = PATH.join2(current_path, parts[i]);
// jump to the mount's root node if this is a mountpoint
if (FS.isMountpoint(current)) {
if (!islast || (islast && opts.follow_mount)) {
current = current.mounted.root;
}
}
// by default, lookupPath will not follow a symlink if it is the final path component.
// setting opts.follow = true will override this behavior.
if (!islast || opts.follow) {
var count = 0;
while (FS.isLink(current.mode)) {
var link = FS.readlink(current_path);
current_path = PATH.resolve(PATH.dirname(current_path), link);
var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count });
current = lookup.node;
if (count++ > 40) {
// limit max consecutive symlinks to 40 (SYMLOOP_MAX).
throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
}
}
}
}
return { path: current_path, node: current };
},
getPath: function(node) {
var path;
while (true) {
if (FS.isRoot(node)) {
var mount = node.mount.mountpoint;
if (!path) return mount;
return mount[mount.length - 1] !== '/' ? mount + '/' + path : mount + path;
}
path = path ? node.name + '/' + path : node.name;
node = node.parent;
}
},
hashName: function(parentid, name) {
var hash = 0;
for (var i = 0; i < name.length; i++) {
hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0;
}
return ((parentid + hash) >>> 0) % FS.nameTable.length;
},
hashAddNode: function(node) {
var hash = FS.hashName(node.parent.id, node.name);
node.name_next = FS.nameTable[hash];
FS.nameTable[hash] = node;
},
hashRemoveNode: function(node) {
var hash = FS.hashName(node.parent.id, node.name);
if (FS.nameTable[hash] === node) {
FS.nameTable[hash] = node.name_next;
} else {
var current = FS.nameTable[hash];
while (current) {
if (current.name_next === node) {
current.name_next = node.name_next;
break;
}
current = current.name_next;
}
}
},
lookupNode: function(parent, name) {
var err = FS.mayLookup(parent);
if (err) {
throw new FS.ErrnoError(err, parent);
}
var hash = FS.hashName(parent.id, name);
for (var node = FS.nameTable[hash]; node; node = node.name_next) {
var nodeName = node.name;
if (node.parent.id === parent.id && nodeName === name) {
return node;
}
}
// if we failed to find it in the cache, call into the VFS
return FS.lookup(parent, name);
},
createNode: function(parent, name, mode, rdev) {
if (!FS.FSNode) {
FS.FSNode = function(parent, name, mode, rdev) {
if (!parent) {
parent = this; // root node sets parent to itself
}
this.parent = parent;
this.mount = parent.mount;
this.mounted = null;
this.id = FS.nextInode++;
this.name = name;
this.mode = mode;
this.node_ops = {};
this.stream_ops = {};
this.rdev = rdev;
};
FS.FSNode.prototype = {};
// compatibility
var readMode = 292 | 73;
var writeMode = 146;
// NOTE we must use Object.defineProperties instead of individual calls to
// Object.defineProperty in order to make closure compiler happy
Object.defineProperties(FS.FSNode.prototype, {
read: {
get: function() {
return (this.mode & readMode) === readMode;
},
set: function(val) {
val ? (this.mode |= readMode) : (this.mode &= ~readMode);
}
},
write: {
get: function() {
return (this.mode & writeMode) === writeMode;
},
set: function(val) {
val ? (this.mode |= writeMode) : (this.mode &= ~writeMode);
}
},
isFolder: {
get: function() {
return FS.isDir(this.mode);
}
},
isDevice: {
get: function() {
return FS.isChrdev(this.mode);
}
}
});
}
var node = new FS.FSNode(parent, name, mode, rdev);
FS.hashAddNode(node);
return node;
},
destroyNode: function(node) {
FS.hashRemoveNode(node);
},
isRoot: function(node) {
return node === node.parent;
},
isMountpoint: function(node) {
return !!node.mounted;
},
isFile: function(mode) {
return (mode & 61440) === 32768;
},
isDir: function(mode) {
return (mode & 61440) === 16384;
},
isLink: function(mode) {
return (mode & 61440) === 40960;
},
isChrdev: function(mode) {
return (mode & 61440) === 8192;
},
isBlkdev: function(mode) {
return (mode & 61440) === 24576;
},
isFIFO: function(mode) {
return (mode & 61440) === 4096;
},
isSocket: function(mode) {
return (mode & 49152) === 49152;
},
flagModes: {
r: 0,
rs: 1052672,
'r+': 2,
w: 577,
wx: 705,
xw: 705,
'w+': 578,
'wx+': 706,
'xw+': 706,
a: 1089,
ax: 1217,
xa: 1217,
'a+': 1090,
'ax+': 1218,
'xa+': 1218
},
modeStringToFlags: function(str) {
var flags = FS.flagModes[str];
if (typeof flags === 'undefined') {
throw new Error('Unknown file open mode: ' + str);
}
return flags;
},
flagsToPermissionString: function(flag) {
var accmode = flag & 2097155;
var perms = ['r', 'w', 'rw'][accmode];
if (flag & 512) {
perms += 'w';
}
return perms;
},
nodePermissions: function(node, perms) {
if (FS.ignorePermissions) {
return 0;
}
// return 0 if any user, group or owner bits are set.
if (perms.indexOf('r') !== -1 && !(node.mode & 292)) {
return ERRNO_CODES.EACCES;
} else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) {
return ERRNO_CODES.EACCES;
} else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) {
return ERRNO_CODES.EACCES;
}
return 0;
},
mayLookup: function(dir) {
var err = FS.nodePermissions(dir, 'x');
if (err) return err;
if (!dir.node_ops.lookup) return ERRNO_CODES.EACCES;
return 0;
},
mayCreate: function(dir, name) {
try {
var node = FS.lookupNode(dir, name);
return ERRNO_CODES.EEXIST;
} catch (e) {}
return FS.nodePermissions(dir, 'wx');
},
mayDelete: function(dir, name, isdir) {
var node;
try {
node = FS.lookupNode(dir, name);
} catch (e) {
return e.errno;
}
var err = FS.nodePermissions(dir, 'wx');
if (err) {
return err;
}
if (isdir) {
if (!FS.isDir(node.mode)) {
return ERRNO_CODES.ENOTDIR;
}
if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {
return ERRNO_CODES.EBUSY;
}
} else {
if (FS.isDir(node.mode)) {
return ERRNO_CODES.EISDIR;
}
}
return 0;
},
mayOpen: function(node, flags) {
if (!node) {
return ERRNO_CODES.ENOENT;
}
if (FS.isLink(node.mode)) {
return ERRNO_CODES.ELOOP;
} else if (FS.isDir(node.mode)) {
if (
(flags & 2097155) !== 0 || // opening for write
flags & 512
) {
return ERRNO_CODES.EISDIR;
}
}
return FS.nodePermissions(node, FS.flagsToPermissionString(flags));
},
MAX_OPEN_FDS: 4096,
nextfd: function(fd_start, fd_end) {
fd_start = fd_start || 0;
fd_end = fd_end || FS.MAX_OPEN_FDS;
for (var fd = fd_start; fd <= fd_end; fd++) {
if (!FS.streams[fd]) {
return fd;
}
}
throw new FS.ErrnoError(ERRNO_CODES.EMFILE);
},
getStream: function(fd) {
return FS.streams[fd];
},
createStream: function(stream, fd_start, fd_end) {
if (!FS.FSStream) {
FS.FSStream = function() {};
FS.FSStream.prototype = {};
// compatibility
Object.defineProperties(FS.FSStream.prototype, {
object: {
get: function() {
return this.node;
},
set: function(val) {
this.node = val;
}
},
isRead: {
get: function() {
return (this.flags & 2097155) !== 1;
}
},
isWrite: {
get: function() {
return (this.flags & 2097155) !== 0;
}
},
isAppend: {
get: function() {
return this.flags & 1024;
}
}
});
}
// clone it, so we can return an instance of FSStream
var newStream = new FS.FSStream();
for (var p in stream) {
newStream[p] = stream[p];
}
stream = newStream;
var fd = FS.nextfd(fd_start, fd_end);
stream.fd = fd;
FS.streams[fd] = stream;
return stream;
},
closeStream: function(fd) {
FS.streams[fd] = null;
},
getStreamFromPtr: function(ptr) {
return FS.streams[ptr - 1];
},
getPtrForStream: function(stream) {
return stream ? stream.fd + 1 : 0;
},
chrdev_stream_ops: {
open: function(stream) {
var device = FS.getDevice(stream.node.rdev);
// override node's stream ops with the device's
stream.stream_ops = device.stream_ops;
// forward the open call
if (stream.stream_ops.open) {
stream.stream_ops.open(stream);
}
},
llseek: function() {
throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
}
},
major: function(dev) {
return dev >> 8;
},
minor: function(dev) {
return dev & 0xff;
},
makedev: function(ma, mi) {
return (ma << 8) | mi;
},
registerDevice: function(dev, ops) {
FS.devices[dev] = { stream_ops: ops };
},
getDevice: function(dev) {
return FS.devices[dev];
},
getMounts: function(mount) {
var mounts = [];
var check = [mount];
while (check.length) {
var m = check.pop();
mounts.push(m);
check.push.apply(check, m.mounts);
}
return mounts;
},
syncfs: function(populate, callback) {
if (typeof populate === 'function') {
callback = populate;
populate = false;
}
var mounts = FS.getMounts(FS.root.mount);
var completed = 0;
function done(err) {
if (err) {
if (!done.errored) {
done.errored = true;
return callback(err);
}
return;
}
if (++completed >= mounts.length) {
callback(null);
}
}
// sync all mounts
mounts.forEach(function(mount) {
if (!mount.type.syncfs) {
return done(null);
}
mount.type.syncfs(mount, populate, done);
});
},
mount: function(type, opts, mountpoint) {
var root = mountpoint === '/';
var pseudo = !mountpoint;
var node;
if (root && FS.root) {
throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
} else if (!root && !pseudo) {
var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
mountpoint = lookup.path; // use the absolute path
node = lookup.node;
if (FS.isMountpoint(node)) {
throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
}
if (!FS.isDir(node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
}
}
var mount = {
type: type,
opts: opts,
mountpoint: mountpoint,
mounts: []
};
// create a root node for the fs
var mountRoot = type.mount(mount);
mountRoot.mount = mount;
mount.root = mountRoot;
if (root) {
FS.root = mountRoot;
} else if (node) {
// set as a mountpoint
node.mounted = mount;
// add the new mount to the current mount's children
if (node.mount) {
node.mount.mounts.push(mount);
}
}
return mountRoot;
},
unmount: function(mountpoint) {
var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
if (!FS.isMountpoint(lookup.node)) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
// destroy the nodes for this mount, and all its child mounts
var node = lookup.node;
var mount = node.mounted;
var mounts = FS.getMounts(mount);
Object.keys(FS.nameTable).forEach(function(hash) {
var current = FS.nameTable[hash];
while (current) {
var next = current.name_next;
if (mounts.indexOf(current.mount) !== -1) {
FS.destroyNode(current);
}
current = next;
}
});
// no longer a mountpoint
node.mounted = null;
// remove this mount from the child mounts
var idx = node.mount.mounts.indexOf(mount);
assert(idx !== -1);
node.mount.mounts.splice(idx, 1);
},
lookup: function(parent, name) {
return parent.node_ops.lookup(parent, name);
},
mknod: function(path, mode, dev) {
var lookup = FS.lookupPath(path, { parent: true });
var parent = lookup.node;
var name = PATH.basename(path);
if (!name || name === '.' || name === '..') {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
var err = FS.mayCreate(parent, name);
if (err) {
throw new FS.ErrnoError(err);
}
if (!parent.node_ops.mknod) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
return parent.node_ops.mknod(parent, name, mode, dev);
},
create: function(path, mode) {
mode = mode !== undefined ? mode : 438 /* 0666 */;
mode &= 4095;
mode |= 32768;
return FS.mknod(path, mode, 0);
},
mkdir: function(path, mode) {
mode = mode !== undefined ? mode : 511 /* 0777 */;
mode &= 511 | 512;
mode |= 16384;
return FS.mknod(path, mode, 0);
},
mkdev: function(path, mode, dev) {
if (typeof dev === 'undefined') {
dev = mode;
mode = 438 /* 0666 */;
}
mode |= 8192;
return FS.mknod(path, mode, dev);
},
symlink: function(oldpath, newpath) {
if (!PATH.resolve(oldpath)) {
throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
}
var lookup = FS.lookupPath(newpath, { parent: true });
var parent = lookup.node;
if (!parent) {
throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
}
var newname = PATH.basename(newpath);
var err = FS.mayCreate(parent, newname);
if (err) {
throw new FS.ErrnoError(err);
}
if (!parent.node_ops.symlink) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
return parent.node_ops.symlink(parent, newname, oldpath);
},
rename: function(old_path, new_path) {
var old_dirname = PATH.dirname(old_path);
var new_dirname = PATH.dirname(new_path);
var old_name = PATH.basename(old_path);
var new_name = PATH.basename(new_path);
// parents must exist
var lookup, old_dir, new_dir;
try {
lookup = FS.lookupPath(old_path, { parent: true });
old_dir = lookup.node;
lookup = FS.lookupPath(new_path, { parent: true });
new_dir = lookup.node;
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
}
if (!old_dir || !new_dir) throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
// need to be part of the same mount
if (old_dir.mount !== new_dir.mount) {
throw new FS.ErrnoError(ERRNO_CODES.EXDEV);
}
// source must exist
var old_node = FS.lookupNode(old_dir, old_name);
// old path should not be an ancestor of the new path
var relative = PATH.relative(old_path, new_dirname);
if (relative.charAt(0) !== '.') {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
// new path should not be an ancestor of the old path
relative = PATH.relative(new_path, old_dirname);
if (relative.charAt(0) !== '.') {
throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
}
// see if the new path already exists
var new_node;
try {
new_node = FS.lookupNode(new_dir, new_name);
} catch (e) {
// not fatal
}
// early out if nothing needs to change
if (old_node === new_node) {
return;
}
// we'll need to delete the old entry
var isdir = FS.isDir(old_node.mode);
var err = FS.mayDelete(old_dir, old_name, isdir);
if (err) {
throw new FS.ErrnoError(err);
}
// need delete permissions if we'll be overwriting.
// need create permissions if new doesn't already exist.
err = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);
if (err) {
throw new FS.ErrnoError(err);
}
if (!old_dir.node_ops.rename) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) {
throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
}
// if we are going to change the parent, check write permissions
if (new_dir !== old_dir) {
err = FS.nodePermissions(old_dir, 'w');
if (err) {
throw new FS.ErrnoError(err);
}
}
try {
if (FS.trackingDelegate['willMovePath']) {
FS.trackingDelegate['willMovePath'](old_path, new_path);
}
} catch (e) {
console.log("FS.trackingDelegate['willMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message);
}
// remove the node from the lookup hash
FS.hashRemoveNode(old_node);
// do the underlying fs rename
try {
old_dir.node_ops.rename(old_node, new_dir, new_name);
} catch (e) {
throw e;
} finally {
// add the node back to the hash (in case node_ops.rename
// changed its name)
FS.hashAddNode(old_node);
}
try {
if (FS.trackingDelegate['onMovePath']) FS.trackingDelegate['onMovePath'](old_path, new_path);
} catch (e) {
console.log("FS.trackingDelegate['onMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message);
}
},
rmdir: function(path) {
var lookup = FS.lookupPath(path, { parent: true });
var parent = lookup.node;
var name = PATH.basename(path);
var node = FS.lookupNode(parent, name);
var err = FS.mayDelete(parent, name, true);
if (err) {
throw new FS.ErrnoError(err);
}
if (!parent.node_ops.rmdir) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
if (FS.isMountpoint(node)) {
throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
}
try {
if (FS.trackingDelegate['willDeletePath']) {
FS.trackingDelegate['willDeletePath'](path);
}
} catch (e) {
console.log("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message);
}
parent.node_ops.rmdir(parent, name);
FS.destroyNode(node);
try {
if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path);
} catch (e) {
console.log("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message);
}
},
readdir: function(path) {
var lookup = FS.lookupPath(path, { follow: true });
var node = lookup.node;
if (!node.node_ops.readdir) {
throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
}
return node.node_ops.readdir(node);
},
unlink: function(path) {
var lookup = FS.lookupPath(path, { parent: true });
var parent = lookup.node;
var name = PATH.basename(path);
var node = FS.lookupNode(parent, name);
var err = FS.mayDelete(parent, name, false);
if (err) {
// POSIX says unlink should set EPERM, not EISDIR
if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM;
throw new FS.ErrnoError(err);
}
if (!parent.node_ops.unlink) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
if (FS.isMountpoint(node)) {
throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
}
try {
if (FS.trackingDelegate['willDeletePath']) {
FS.trackingDelegate['willDeletePath'](path);
}
} catch (e) {
console.log("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message);
}
parent.node_ops.unlink(parent, name);
FS.destroyNode(node);
try {
if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path);
} catch (e) {
console.log("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message);
}
},
readlink: function(path) {
var lookup = FS.lookupPath(path);
var link = lookup.node;
if (!link) {
throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
}
if (!link.node_ops.readlink) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
return link.node_ops.readlink(link);
},
stat: function(path, dontFollow) {
var lookup = FS.lookupPath(path, { follow: !dontFollow });
var node = lookup.node;
if (!node) {
throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
}
if (!node.node_ops.getattr) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
return node.node_ops.getattr(node);
},
lstat: function(path) {
return FS.stat(path, true);
},
chmod: function(path, mode, dontFollow) {
var node;
if (typeof path === 'string') {
var lookup = FS.lookupPath(path, { follow: !dontFollow });
node = lookup.node;
} else {
node = path;
}
if (!node.node_ops.setattr) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
node.node_ops.setattr(node, {
mode: (mode & 4095) | (node.mode & ~4095),
timestamp: Date.now()
});
},
lchmod: function(path, mode) {
FS.chmod(path, mode, true);
},
fchmod: function(fd, mode) {
var stream = FS.getStream(fd);
if (!stream) {
throw new FS.ErrnoError(ERRNO_CODES.EBADF);
}
FS.chmod(stream.node, mode);
},
chown: function(path, uid, gid, dontFollow) {
var node;
if (typeof path === 'string') {
var lookup = FS.lookupPath(path, { follow: !dontFollow });
node = lookup.node;
} else {
node = path;
}
if (!node.node_ops.setattr) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
node.node_ops.setattr(node, {
timestamp: Date.now()
// we ignore the uid / gid for now
});
},
lchown: function(path, uid, gid) {
FS.chown(path, uid, gid, true);
},
fchown: function(fd, uid, gid) {
var stream = FS.getStream(fd);
if (!stream) {
throw new FS.ErrnoError(ERRNO_CODES.EBADF);
}
FS.chown(stream.node, uid, gid);
},
truncate: function(path, len) {
if (len < 0) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
var node;
if (typeof path === 'string') {
var lookup = FS.lookupPath(path, { follow: true });
node = lookup.node;
} else {
node = path;
}
if (!node.node_ops.setattr) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
if (FS.isDir(node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
}
if (!FS.isFile(node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
var err = FS.nodePermissions(node, 'w');
if (err) {
throw new FS.ErrnoError(err);
}
node.node_ops.setattr(node, {
size: len,
timestamp: Date.now()
});
},
ftruncate: function(fd, len) {
var stream = FS.getStream(fd);
if (!stream) {
throw new FS.ErrnoError(ERRNO_CODES.EBADF);
}
if ((stream.flags & 2097155) === 0) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
FS.truncate(stream.node, len);
},
utime: function(path, atime, mtime) {
var lookup = FS.lookupPath(path, { follow: true });
var node = lookup.node;
node.node_ops.setattr(node, {
timestamp: Math.max(atime, mtime)
});
},
open: function(path, flags, mode, fd_start, fd_end) {
if (path === '') {
throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
}
flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags;
mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode;
if (flags & 64) {
mode = (mode & 4095) | 32768;
} else {
mode = 0;
}
var node;
if (typeof path === 'object') {
node = path;
} else {
path = PATH.normalize(path);
try {
var lookup = FS.lookupPath(path, {
follow: !(flags & 131072)
});
node = lookup.node;
} catch (e) {
// ignore
}
}
// perhaps we need to create the node
var created = false;
if (flags & 64) {
if (node) {
// if O_CREAT and O_EXCL are set, error out if the node already exists
if (flags & 128) {
throw new FS.ErrnoError(ERRNO_CODES.EEXIST);
}
} else {
// node doesn't exist, try to create it
node = FS.mknod(path, mode, 0);
created = true;
}
}
if (!node) {
throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
}
// can't truncate a device
if (FS.isChrdev(node.mode)) {
flags &= ~512;
}
// check permissions, if this is not a file we just created now (it is ok to
// create and write to a file with read-only permissions; it is read-only
// for later use)
if (!created) {
var err = FS.mayOpen(node, flags);
if (err) {
throw new FS.ErrnoError(err);
}
}
// do truncation if necessary
if (flags & 512) {
FS.truncate(node, 0);
}
// we've already handled these, don't pass down to the underlying vfs
flags &= ~(128 | 512);
// register the stream with the filesystem
var stream = FS.createStream(
{
node: node,
path: FS.getPath(node), // we want the absolute path to the node
flags: flags,
seekable: true,
position: 0,
stream_ops: node.stream_ops,
// used by the file family libc calls (fopen, fwrite, ferror, etc.)
ungotten: [],
error: false
},
fd_start,
fd_end
);
// call the new stream's open function
if (stream.stream_ops.open) {
stream.stream_ops.open(stream);
}
if (Module['logReadFiles'] && !(flags & 1)) {
if (!FS.readFiles) FS.readFiles = {};
if (!(path in FS.readFiles)) {
FS.readFiles[path] = 1;
Module['printErr']('read file: ' + path);
}
}
try {
if (FS.trackingDelegate['onOpenFile']) {
var trackingFlags = 0;
if ((flags & 2097155) !== 1) {
trackingFlags |= FS.tracking.openFlags.READ;
}
if ((flags & 2097155) !== 0) {
trackingFlags |= FS.tracking.openFlags.WRITE;
}
FS.trackingDelegate['onOpenFile'](path, trackingFlags);
}
} catch (e) {
console.log("FS.trackingDelegate['onOpenFile']('" + path + "', flags) threw an exception: " + e.message);
}
return stream;
},
close: function(stream) {
try {
if (stream.stream_ops.close) {
stream.stream_ops.close(stream);
}
} catch (e) {
throw e;
} finally {
FS.closeStream(stream.fd);
}
},
llseek: function(stream, offset, whence) {
if (!stream.seekable || !stream.stream_ops.llseek) {
throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
}
return stream.stream_ops.llseek(stream, offset, whence);
},
read: function(stream, buffer, offset, length, position) {
if (length < 0 || position < 0) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
if ((stream.flags & 2097155) === 1) {
throw new FS.ErrnoError(ERRNO_CODES.EBADF);
}
if (FS.isDir(stream.node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
}
if (!stream.stream_ops.read) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
var seeking = true;
if (typeof position === 'undefined') {
position = stream.position;
seeking = false;
} else if (!stream.seekable) {
throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
}
var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);
if (!seeking) stream.position += bytesRead;
return bytesRead;
},
write: function(stream, buffer, offset, length, position, canOwn) {
if (length < 0 || position < 0) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
if ((stream.flags & 2097155) === 0) {
throw new FS.ErrnoError(ERRNO_CODES.EBADF);
}
if (FS.isDir(stream.node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
}
if (!stream.stream_ops.write) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
if (stream.flags & 1024) {
// seek to the end before writing in append mode
FS.llseek(stream, 0, 2);
}
var seeking = true;
if (typeof position === 'undefined') {
position = stream.position;
seeking = false;
} else if (!stream.seekable) {
throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
}
var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);
if (!seeking) stream.position += bytesWritten;
try {
if (stream.path && FS.trackingDelegate['onWriteToFile']) FS.trackingDelegate['onWriteToFile'](stream.path);
} catch (e) {
console.log("FS.trackingDelegate['onWriteToFile']('" + path + "') threw an exception: " + e.message);
}
return bytesWritten;
},
allocate: function(stream, offset, length) {
if (offset < 0 || length <= 0) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
if ((stream.flags & 2097155) === 0) {
throw new FS.ErrnoError(ERRNO_CODES.EBADF);
}
if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
}
if (!stream.stream_ops.allocate) {
throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
}
stream.stream_ops.allocate(stream, offset, length);
},
mmap: function(stream, buffer, offset, length, position, prot, flags) {
// TODO if PROT is PROT_WRITE, make sure we have write access
if ((stream.flags & 2097155) === 1) {
throw new FS.ErrnoError(ERRNO_CODES.EACCES);
}
if (!stream.stream_ops.mmap) {
throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
}
return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags);
},
ioctl: function(stream, cmd, arg) {
if (!stream.stream_ops.ioctl) {
throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);
}
return stream.stream_ops.ioctl(stream, cmd, arg);
},
readFile: function(path, opts) {
opts = opts || {};
opts.flags = opts.flags || 'r';
opts.encoding = opts.encoding || 'binary';
if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {
throw new Error('Invalid encoding type "' + opts.encoding + '"');
}
var ret;
var stream = FS.open(path, opts.flags);
var stat = FS.stat(path);
var length = stat.size;
var buf = new Uint8Array(length);
FS.read(stream, buf, 0, length, 0);
if (opts.encoding === 'utf8') {
ret = '';
var utf8 = new Runtime.UTF8Processor();
for (var i = 0; i < length; i++) {
ret += utf8.processCChar(buf[i]);
}
} else if (opts.encoding === 'binary') {
ret = buf;
}
FS.close(stream);
return ret;
},
writeFile: function(path, data, opts) {
opts = opts || {};
opts.flags = opts.flags || 'w';
opts.encoding = opts.encoding || 'utf8';
if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {
throw new Error('Invalid encoding type "' + opts.encoding + '"');
}
var stream = FS.open(path, opts.flags, opts.mode);
if (opts.encoding === 'utf8') {
var utf8 = new Runtime.UTF8Processor();
var buf = new Uint8Array(utf8.processJSString(data));
FS.write(stream, buf, 0, buf.length, 0, opts.canOwn);
} else if (opts.encoding === 'binary') {
FS.write(stream, data, 0, data.length, 0, opts.canOwn);
}
FS.close(stream);
},
cwd: function() {
return FS.currentPath;
},
chdir: function(path) {
var lookup = FS.lookupPath(path, { follow: true });
if (!FS.isDir(lookup.node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
}
var err = FS.nodePermissions(lookup.node, 'x');
if (err) {
throw new FS.ErrnoError(err);
}
FS.currentPath = lookup.path;
},
createDefaultDirectories: function() {
FS.mkdir('/tmp');
FS.mkdir('/home');
FS.mkdir('/home/web_user');
},
createDefaultDevices: function() {
// create /dev
FS.mkdir('/dev');
// setup /dev/null
FS.registerDevice(FS.makedev(1, 3), {
read: function() {
return 0;
},
write: function() {
return 0;
}
});
FS.mkdev('/dev/null', FS.makedev(1, 3));
// setup /dev/tty and /dev/tty1
// stderr needs to print output using Module['printErr']
// so we register a second tty just for it.
TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
FS.mkdev('/dev/tty', FS.makedev(5, 0));
FS.mkdev('/dev/tty1', FS.makedev(6, 0));
// setup /dev/[u]random
var random_device;
if (typeof crypto !== 'undefined') {
// for modern web browsers
var randomBuffer = new Uint8Array(1);
random_device = function() {
crypto.getRandomValues(randomBuffer);
return randomBuffer[0];
};
} else if (ENVIRONMENT_IS_NODE) {
// for nodejs
random_device = function() {
return require('crypto').randomBytes(1)[0];
};
} else {
// default for ES5 platforms
random_device = function() {
return (Math.random() * 256) | 0;
};
}
FS.createDevice('/dev', 'random', random_device);
FS.createDevice('/dev', 'urandom', random_device);
// we're not going to emulate the actual shm device,
// just create the tmp dirs that reside in it commonly
FS.mkdir('/dev/shm');
FS.mkdir('/dev/shm/tmp');
},
createStandardStreams: function() {
// TODO deprecate the old functionality of a single
// input / output callback and that utilizes FS.createDevice
// and instead require a unique set of stream ops
// by default, we symlink the standard streams to the
// default tty devices. however, if the standard streams
// have been overwritten we create a unique device for
// them instead.
if (Module['stdin']) {
FS.createDevice('/dev', 'stdin', Module['stdin']);
} else {
FS.symlink('/dev/tty', '/dev/stdin');
}
if (Module['stdout']) {
FS.createDevice('/dev', 'stdout', null, Module['stdout']);
} else {
FS.symlink('/dev/tty', '/dev/stdout');
}
if (Module['stderr']) {
FS.createDevice('/dev', 'stderr', null, Module['stderr']);
} else {
FS.symlink('/dev/tty1', '/dev/stderr');
}
// open default streams for the stdin, stdout and stderr devices
var stdin = FS.open('/dev/stdin', 'r');
HEAP32[_stdin >> 2] = FS.getPtrForStream(stdin);
assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')');
var stdout = FS.open('/dev/stdout', 'w');
HEAP32[_stdout >> 2] = FS.getPtrForStream(stdout);
assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')');
var stderr = FS.open('/dev/stderr', 'w');
HEAP32[_stderr >> 2] = FS.getPtrForStream(stderr);
assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')');
},
ensureErrnoError: function() {
if (FS.ErrnoError) return;
FS.ErrnoError = function ErrnoError(errno, node) {
this.node = node;
this.setErrno = function(errno) {
this.errno = errno;
for (var key in ERRNO_CODES) {
if (ERRNO_CODES[key] === errno) {
this.code = key;
break;
}
}
};
this.setErrno(errno);
this.message = ERRNO_MESSAGES[errno];
};
FS.ErrnoError.prototype = new Error();
FS.ErrnoError.prototype.constructor = FS.ErrnoError;
// Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info)
[ERRNO_CODES.ENOENT].forEach(function(code) {
FS.genericErrors[code] = new FS.ErrnoError(code);
FS.genericErrors[code].stack = '';
});
},
staticInit: function() {
FS.ensureErrnoError();
FS.nameTable = new Array(4096);
FS.mount(MEMFS, {}, '/');
FS.createDefaultDirectories();
FS.createDefaultDevices();
},
init: function(input, output, error) {
assert(
!FS.init.initialized,
'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'
);
FS.init.initialized = true;
FS.ensureErrnoError();
// Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here
Module['stdin'] = input || Module['stdin'];
Module['stdout'] = output || Module['stdout'];
Module['stderr'] = error || Module['stderr'];
FS.createStandardStreams();
},
quit: function() {
FS.init.initialized = false;
for (var i = 0; i < FS.streams.length; i++) {
var stream = FS.streams[i];
if (!stream) {
continue;
}
FS.close(stream);
}
},
getMode: function(canRead, canWrite) {
var mode = 0;
if (canRead) mode |= 292 | 73;
if (canWrite) mode |= 146;
return mode;
},
joinPath: function(parts, forceRelative) {
var path = PATH.join.apply(null, parts);
if (forceRelative && path[0] == '/') path = path.substr(1);
return path;
},
absolutePath: function(relative, base) {
return PATH.resolve(base, relative);
},
standardizePath: function(path) {
return PATH.normalize(path);
},
findObject: function(path, dontResolveLastLink) {
var ret = FS.analyzePath(path, dontResolveLastLink);
if (ret.exists) {
return ret.object;
} else {
___setErrNo(ret.error);
return null;
}
},
analyzePath: function(path, dontResolveLastLink) {
// operate from within the context of the symlink's target
try {
var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
path = lookup.path;
} catch (e) {}
var ret = {
isRoot: false,
exists: false,
error: 0,
name: null,
path: null,
object: null,
parentExists: false,
parentPath: null,
parentObject: null
};
try {
var lookup = FS.lookupPath(path, { parent: true });
ret.parentExists = true;
ret.parentPath = lookup.path;
ret.parentObject = lookup.node;
ret.name = PATH.basename(path);
lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
ret.exists = true;
ret.path = lookup.path;
ret.object = lookup.node;
ret.name = lookup.node.name;
ret.isRoot = lookup.path === '/';
} catch (e) {
ret.error = e.errno;
}
return ret;
},
createFolder: function(parent, name, canRead, canWrite) {
var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
var mode = FS.getMode(canRead, canWrite);
return FS.mkdir(path, mode);
},
createPath: function(parent, path, canRead, canWrite) {
parent = typeof parent === 'string' ? parent : FS.getPath(parent);
var parts = path.split('/').reverse();
while (parts.length) {
var part = parts.pop();
if (!part) continue;
var current = PATH.join2(parent, part);
try {
FS.mkdir(current);
} catch (e) {
// ignore EEXIST
}
parent = current;
}
return current;
},
createFile: function(parent, name, properties, canRead, canWrite) {
var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
var mode = FS.getMode(canRead, canWrite);
return FS.create(path, mode);
},
createDataFile: function(parent, name, data, canRead, canWrite, canOwn) {
var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent;
var mode = FS.getMode(canRead, canWrite);
var node = FS.create(path, mode);
if (data) {
if (typeof data === 'string') {
var arr = new Array(data.length);
for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);
data = arr;
}
// make sure we can write to the file
FS.chmod(node, mode | 146);
var stream = FS.open(node, 'w');
FS.write(stream, data, 0, data.length, 0, canOwn);
FS.close(stream);
FS.chmod(node, mode);
}
return node;
},
createDevice: function(parent, name, input, output) {
var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
var mode = FS.getMode(!!input, !!output);
if (!FS.createDevice.major) FS.createDevice.major = 64;
var dev = FS.makedev(FS.createDevice.major++, 0);
// Create a fake device that a set of stream ops to emulate
// the old behavior.
FS.registerDevice(dev, {
open: function(stream) {
stream.seekable = false;
},
close: function(stream) {
// flush any pending line data
if (output && output.buffer && output.buffer.length) {
output(10);
}
},
read: function(stream, buffer, offset, length, pos /* ignored */) {
var bytesRead = 0;
for (var i = 0; i < length; i++) {
var result;
try {
result = input();
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES.EIO);
}
if (result === undefined && bytesRead === 0) {
throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
}
if (result === null || result === undefined) break;
bytesRead++;
buffer[offset + i] = result;
}
if (bytesRead) {
stream.node.timestamp = Date.now();
}
return bytesRead;
},
write: function(stream, buffer, offset, length, pos) {
for (var i = 0; i < length; i++) {
try {
output(buffer[offset + i]);
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES.EIO);
}
}
if (length) {
stream.node.timestamp = Date.now();
}
return i;
}
});
return FS.mkdev(path, mode, dev);
},
createLink: function(parent, name, target, canRead, canWrite) {
var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
return FS.symlink(target, path);
},
forceLoadFile: function(obj) {
if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;
var success = true;
if (typeof XMLHttpRequest !== 'undefined') {
throw new Error(
'Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.'
);
} else if (Module['read']) {
// Command-line.
try {
// WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as
// read() will try to parse UTF8.
obj.contents = intArrayFromString(Module['read'](obj.url), true);
obj.usedBytes = obj.contents.length;
} catch (e) {
success = false;
}
} else {
throw new Error('Cannot load without read() or XMLHttpRequest.');
}
if (!success) ___setErrNo(ERRNO_CODES.EIO);
return success;
},
createLazyFile: function(parent, name, url, canRead, canWrite) {
// Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse.
function LazyUint8Array() {
this.lengthKnown = false;
this.chunks = []; // Loaded chunks. Index is the chunk number
}
LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {
if (idx > this.length - 1 || idx < 0) {
return undefined;
}
var chunkOffset = idx % this.chunkSize;
var chunkNum = (idx / this.chunkSize) | 0;
return this.getter(chunkNum)[chunkOffset];
};
LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {
this.getter = getter;
};
LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {
// Find length
var xhr = new XMLHttpRequest();
xhr.open('HEAD', url, false);
xhr.send(null);
if (!((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304))
throw new Error("Couldn't load " + url + '. Status: ' + xhr.status);
var datalength = Number(xhr.getResponseHeader('Content-length'));
var header;
var hasByteServing = (header = xhr.getResponseHeader('Accept-Ranges')) && header === 'bytes';
var chunkSize = 1024 * 1024; // Chunk size in bytes
if (!hasByteServing) chunkSize = datalength;
// Function to get a range from the remote URL.
var doXHR = function(from, to) {
if (from > to) throw new Error('invalid range (' + from + ', ' + to + ') or no bytes requested!');
if (to > datalength - 1) throw new Error('only ' + datalength + ' bytes available! programmer error!');
// TODO: Use mozResponseArrayBuffer, responseStream, etc. if available.
var xhr = new XMLHttpRequest();
xhr.open('GET', url, false);
if (datalength !== chunkSize) xhr.setRequestHeader('Range', 'bytes=' + from + '-' + to);
// Some hints to the browser that we want binary data.
if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer';
if (xhr.overrideMimeType) {
xhr.overrideMimeType('text/plain; charset=x-user-defined');
}
xhr.send(null);
if (!((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304))
throw new Error("Couldn't load " + url + '. Status: ' + xhr.status);
if (xhr.response !== undefined) {
return new Uint8Array(xhr.response || []);
} else {
return intArrayFromString(xhr.responseText || '', true);
}
};
var lazyArray = this;
lazyArray.setDataGetter(function(chunkNum) {
var start = chunkNum * chunkSize;
var end = (chunkNum + 1) * chunkSize - 1; // including this byte
end = Math.min(end, datalength - 1); // if datalength-1 is selected, this is the last block
if (typeof lazyArray.chunks[chunkNum] === 'undefined') {
lazyArray.chunks[chunkNum] = doXHR(start, end);
}
if (typeof lazyArray.chunks[chunkNum] === 'undefined') throw new Error('doXHR failed!');
return lazyArray.chunks[chunkNum];
});
this._length = datalength;
this._chunkSize = chunkSize;
this.lengthKnown = true;
};
if (typeof XMLHttpRequest !== 'undefined') {
if (!ENVIRONMENT_IS_WORKER)
throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc';
var lazyArray = new LazyUint8Array();
Object.defineProperty(lazyArray, 'length', {
get: function() {
if (!this.lengthKnown) {
this.cacheLength();
}
return this._length;
}
});
Object.defineProperty(lazyArray, 'chunkSize', {
get: function() {
if (!this.lengthKnown) {
this.cacheLength();
}
return this._chunkSize;
}
});
var properties = { isDevice: false, contents: lazyArray };
} else {
var properties = { isDevice: false, url: url };
}
var node = FS.createFile(parent, name, properties, canRead, canWrite);
// This is a total hack, but I want to get this lazy file code out of the
// core of MEMFS. If we want to keep this lazy file concept I feel it should
// be its own thin LAZYFS proxying calls to MEMFS.
if (properties.contents) {
node.contents = properties.contents;
} else if (properties.url) {
node.contents = null;
node.url = properties.url;
}
// Add a function that defers querying the file size until it is asked the first time.
Object.defineProperty(node, 'usedBytes', {
get: function() {
return this.contents.length;
}
});
// override each stream op with one that tries to force load the lazy file first
var stream_ops = {};
var keys = Object.keys(node.stream_ops);
keys.forEach(function(key) {
var fn = node.stream_ops[key];
stream_ops[key] = function forceLoadLazyFile() {
if (!FS.forceLoadFile(node)) {
throw new FS.ErrnoError(ERRNO_CODES.EIO);
}
return fn.apply(null, arguments);
};
});
// use a custom read function
stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) {
if (!FS.forceLoadFile(node)) {
throw new FS.ErrnoError(ERRNO_CODES.EIO);
}
var contents = stream.node.contents;
if (position >= contents.length) return 0;
var size = Math.min(contents.length - position, length);
assert(size >= 0);
if (contents.slice) {
// normal array
for (var i = 0; i < size; i++) {
buffer[offset + i] = contents[position + i];
}
} else {
for (var i = 0; i < size; i++) {
// LazyUint8Array from sync binary XHR
buffer[offset + i] = contents.get(position + i);
}
}
return size;
};
node.stream_ops = stream_ops;
return node;
},
createPreloadedFile: function(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn) {
Browser.init();
// TODO we should allow people to just pass in a complete filename instead
// of parent and name being that we just join them anyways
var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent;
function processData(byteArray) {
function finish(byteArray) {
if (!dontCreateFile) {
FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);
}
if (onload) onload();
removeRunDependency('cp ' + fullname);
}
var handled = false;
Module['preloadPlugins'].forEach(function(plugin) {
if (handled) return;
if (plugin['canHandle'](fullname)) {
plugin['handle'](byteArray, fullname, finish, function() {
if (onerror) onerror();
removeRunDependency('cp ' + fullname);
});
handled = true;
}
});
if (!handled) finish(byteArray);
}
addRunDependency('cp ' + fullname);
if (typeof url == 'string') {
Browser.asyncLoad(
url,
function(byteArray) {
processData(byteArray);
},
onerror
);
} else {
processData(url);
}
},
indexedDB: function() {
return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
},
DB_NAME: function() {
return 'EM_FS_' + window.location.pathname;
},
DB_VERSION: 20,
DB_STORE_NAME: 'FILE_DATA',
saveFilesToDB: function(paths, onload, onerror) {
onload = onload || function() {};
onerror = onerror || function() {};
var indexedDB = FS.indexedDB();
try {
var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
} catch (e) {
return onerror(e);
}
openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {
console.log('creating db');
var db = openRequest.result;
db.createObjectStore(FS.DB_STORE_NAME);
};
openRequest.onsuccess = function openRequest_onsuccess() {
var db = openRequest.result;
var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite');
var files = transaction.objectStore(FS.DB_STORE_NAME);
var ok = 0,
fail = 0,
total = paths.length;
function finish() {
if (fail == 0) onload();
else onerror();
}
paths.forEach(function(path) {
var putRequest = files.put(FS.analyzePath(path).object.contents, path);
putRequest.onsuccess = function putRequest_onsuccess() {
ok++;
if (ok + fail == total) finish();
};
putRequest.onerror = function putRequest_onerror() {
fail++;
if (ok + fail == total) finish();
};
});
transaction.onerror = onerror;
};
openRequest.onerror = onerror;
},
loadFilesFromDB: function(paths, onload, onerror) {
onload = onload || function() {};
onerror = onerror || function() {};
var indexedDB = FS.indexedDB();
try {
var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
} catch (e) {
return onerror(e);
}
openRequest.onupgradeneeded = onerror; // no database to load from
openRequest.onsuccess = function openRequest_onsuccess() {
var db = openRequest.result;
try {
var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly');
} catch (e) {
onerror(e);
return;
}
var files = transaction.objectStore(FS.DB_STORE_NAME);
var ok = 0,
fail = 0,
total = paths.length;
function finish() {
if (fail == 0) onload();
else onerror();
}
paths.forEach(function(path) {
var getRequest = files.get(path);
getRequest.onsuccess = function getRequest_onsuccess() {
if (FS.analyzePath(path).exists) {
FS.unlink(path);
}
FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);
ok++;
if (ok + fail == total) finish();
};
getRequest.onerror = function getRequest_onerror() {
fail++;
if (ok + fail == total) finish();
};
});
transaction.onerror = onerror;
};
openRequest.onerror = onerror;
}
};
function _close(fildes) {
// int close(int fildes);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/close.html
var stream = FS.getStream(fildes);
if (!stream) {
___setErrNo(ERRNO_CODES.EBADF);
return -1;
}
try {
FS.close(stream);
return 0;
} catch (e) {
FS.handleFSError(e);
return -1;
}
}
function _fsync(fildes) {
// int fsync(int fildes);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/fsync.html
var stream = FS.getStream(fildes);
if (stream) {
// We write directly to the file system, so there's nothing to do here.
return 0;
} else {
___setErrNo(ERRNO_CODES.EBADF);
return -1;
}
}
function _fileno(stream) {
// int fileno(FILE *stream);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/fileno.html
stream = FS.getStreamFromPtr(stream);
if (!stream) return -1;
return stream.fd;
}
function _fclose(stream) {
// int fclose(FILE *stream);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/fclose.html
var fd = _fileno(stream);
_fsync(fd);
return _close(fd);
}
function _strerror_r(errnum, strerrbuf, buflen) {
if (errnum in ERRNO_MESSAGES) {
if (ERRNO_MESSAGES[errnum].length > buflen - 1) {
return ___setErrNo(ERRNO_CODES.ERANGE);
} else {
var msg = ERRNO_MESSAGES[errnum];
writeAsciiToMemory(msg, strerrbuf);
return 0;
}
} else {
return ___setErrNo(ERRNO_CODES.EINVAL);
}
}
function _strerror(errnum) {
if (!_strerror.buffer) _strerror.buffer = _malloc(256);
_strerror_r(errnum, _strerror.buffer, 256);
return _strerror.buffer;
}
Module['_bitshift64Shl'] = _bitshift64Shl;
function _abort() {
Module['abort']();
}
function _mkport() {
throw 'TODO';
}
var SOCKFS = {
mount: function(mount) {
// If Module['websocket'] has already been defined (e.g. for configuring
// the subprotocol/url) use that, if not initialise it to a new object.
Module['websocket'] = Module['websocket'] && 'object' === typeof Module['websocket'] ? Module['websocket'] : {};
// Add the Event registration mechanism to the exported websocket configuration
// object so we can register network callbacks from native JavaScript too.
// For more documentation see system/include/emscripten/emscripten.h
Module['websocket']._callbacks = {};
Module['websocket']['on'] = function(event, callback) {
if ('function' === typeof callback) {
this._callbacks[event] = callback;
}
return this;
};
Module['websocket'].emit = function(event, param) {
if ('function' === typeof this._callbacks[event]) {
this._callbacks[event].call(this, param);
}
};
// If debug is enabled register simple default logging callbacks for each Event.
return FS.createNode(null, '/', 16384 | 511 /* 0777 */, 0);
},
createSocket: function(family, type, protocol) {
var streaming = type == 1;
if (protocol) {
assert(streaming == (protocol == 6)); // if SOCK_STREAM, must be tcp
}
// create our internal socket structure
var sock = {
family: family,
type: type,
protocol: protocol,
server: null,
error: null, // Used in getsockopt for SOL_SOCKET/SO_ERROR test
peers: {},
pending: [],
recv_queue: [],
sock_ops: SOCKFS.websocket_sock_ops
};
// create the filesystem node to store the socket structure
var name = SOCKFS.nextname();
var node = FS.createNode(SOCKFS.root, name, 49152, 0);
node.sock = sock;
// and the wrapping stream that enables library functions such
// as read and write to indirectly interact with the socket
var stream = FS.createStream({
path: name,
node: node,
flags: FS.modeStringToFlags('r+'),
seekable: false,
stream_ops: SOCKFS.stream_ops
});
// map the new stream to the socket structure (sockets have a 1:1
// relationship with a stream)
sock.stream = stream;
return sock;
},
getSocket: function(fd) {
var stream = FS.getStream(fd);
if (!stream || !FS.isSocket(stream.node.mode)) {
return null;
}
return stream.node.sock;
},
stream_ops: {
poll: function(stream) {
var sock = stream.node.sock;
return sock.sock_ops.poll(sock);
},
ioctl: function(stream, request, varargs) {
var sock = stream.node.sock;
return sock.sock_ops.ioctl(sock, request, varargs);
},
read: function(stream, buffer, offset, length, position /* ignored */) {
var sock = stream.node.sock;
var msg = sock.sock_ops.recvmsg(sock, length);
if (!msg) {
// socket is closed
return 0;
}
buffer.set(msg.buffer, offset);
return msg.buffer.length;
},
write: function(stream, buffer, offset, length, position /* ignored */) {
var sock = stream.node.sock;
return sock.sock_ops.sendmsg(sock, buffer, offset, length);
},
close: function(stream) {
var sock = stream.node.sock;
sock.sock_ops.close(sock);
}
},
nextname: function() {
if (!SOCKFS.nextname.current) {
SOCKFS.nextname.current = 0;
}
return 'socket[' + SOCKFS.nextname.current++ + ']';
},
websocket_sock_ops: {
createPeer: function(sock, addr, port) {
var ws;
if (typeof addr === 'object') {
ws = addr;
addr = null;
port = null;
}
if (ws) {
// for sockets that've already connected (e.g. we're the server)
// we can inspect the _socket property for the address
if (ws._socket) {
addr = ws._socket.remoteAddress;
port = ws._socket.remotePort;
}
// if we're just now initializing a connection to the remote,
// inspect the url property
else {
var result = /ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);
if (!result) {
throw new Error('WebSocket URL must be in the format ws(s)://address:port');
}
addr = result[1];
port = parseInt(result[2], 10);
}
} else {
// create the actual websocket object and connect
try {
// runtimeConfig gets set to true if WebSocket runtime configuration is available.
var runtimeConfig = Module['websocket'] && 'object' === typeof Module['websocket'];
// The default value is 'ws://' the replace is needed because the compiler replaces '//' comments with '#'
// comments without checking context, so we'd end up with ws:#, the replace swaps the '#' for '//' again.
var url = 'ws:#'.replace('#', '//');
if (runtimeConfig) {
if ('string' === typeof Module['websocket']['url']) {
url = Module['websocket']['url']; // Fetch runtime WebSocket URL config.
}
}
if (url === 'ws://' || url === 'wss://') {
// Is the supplied URL config just a prefix, if so complete it.
var parts = addr.split('/');
url = url + parts[0] + ':' + port + '/' + parts.slice(1).join('/');
}
// Make the WebSocket subprotocol (Sec-WebSocket-Protocol) default to binary if no configuration is set.
var subProtocols = 'binary'; // The default value is 'binary'
if (runtimeConfig) {
if ('string' === typeof Module['websocket']['subprotocol']) {
subProtocols = Module['websocket']['subprotocol']; // Fetch runtime WebSocket subprotocol config.
}
}
// The regex trims the string (removes spaces at the beginning and end, then splits the string by
// , into an Array. Whitespace removal is important for Websockify and ws.
subProtocols = subProtocols.replace(/^ +| +$/g, '').split(/ *, */);
// The node ws library API for specifying optional subprotocol is slightly different than the browser's.
var opts = ENVIRONMENT_IS_NODE ? { protocol: subProtocols.toString() } : subProtocols;
// If node we use the ws library.
var WebSocket = ENVIRONMENT_IS_NODE ? require('ws') : window['WebSocket'];
ws = new WebSocket(url, opts);
ws.binaryType = 'arraybuffer';
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH);
}
}
var peer = {
addr: addr,
port: port,
socket: ws,
dgram_send_queue: []
};
SOCKFS.websocket_sock_ops.addPeer(sock, peer);
SOCKFS.websocket_sock_ops.handlePeerEvents(sock, peer);
// if this is a bound dgram socket, send the port number first to allow
// us to override the ephemeral port reported to us by remotePort on the
// remote end.
if (sock.type === 2 && typeof sock.sport !== 'undefined') {
peer.dgram_send_queue.push(
new Uint8Array([
255,
255,
255,
255,
'p'.charCodeAt(0),
'o'.charCodeAt(0),
'r'.charCodeAt(0),
't'.charCodeAt(0),
(sock.sport & 0xff00) >> 8,
sock.sport & 0xff
])
);
}
return peer;
},
getPeer: function(sock, addr, port) {
return sock.peers[addr + ':' + port];
},
addPeer: function(sock, peer) {
sock.peers[peer.addr + ':' + peer.port] = peer;
},
removePeer: function(sock, peer) {
delete sock.peers[peer.addr + ':' + peer.port];
},
handlePeerEvents: function(sock, peer) {
var first = true;
var handleOpen = function() {
Module['websocket'].emit('open', sock.stream.fd);
try {
var queued = peer.dgram_send_queue.shift();
while (queued) {
peer.socket.send(queued);
queued = peer.dgram_send_queue.shift();
}
} catch (e) {
// not much we can do here in the way of proper error handling as we've already
// lied and said this data was sent. shut it down.
peer.socket.close();
}
};
function handleMessage(data) {
assert(typeof data !== 'string' && data.byteLength !== undefined); // must receive an ArrayBuffer
data = new Uint8Array(data); // make a typed array view on the array buffer
// if this is the port message, override the peer's port with it
var wasfirst = first;
first = false;
if (
wasfirst &&
data.length === 10 &&
data[0] === 255 &&
data[1] === 255 &&
data[2] === 255 &&
data[3] === 255 &&
data[4] === 'p'.charCodeAt(0) &&
data[5] === 'o'.charCodeAt(0) &&
data[6] === 'r'.charCodeAt(0) &&
data[7] === 't'.charCodeAt(0)
) {
// update the peer's port and it's key in the peer map
var newport = (data[8] << 8) | data[9];
SOCKFS.websocket_sock_ops.removePeer(sock, peer);
peer.port = newport;
SOCKFS.websocket_sock_ops.addPeer(sock, peer);
return;
}
sock.recv_queue.push({ addr: peer.addr, port: peer.port, data: data });
Module['websocket'].emit('message', sock.stream.fd);
}
if (ENVIRONMENT_IS_NODE) {
peer.socket.on('open', handleOpen);
peer.socket.on('message', function(data, flags) {
if (!flags.binary) {
return;
}
handleMessage(new Uint8Array(data).buffer); // copy from node Buffer -> ArrayBuffer
});
peer.socket.on('close', function() {
Module['websocket'].emit('close', sock.stream.fd);
});
peer.socket.on('error', function(error) {
// Although the ws library may pass errors that may be more descriptive than
// ECONNREFUSED they are not necessarily the expected error code e.g.
// ENOTFOUND on getaddrinfo seems to be node.js specific, so using ECONNREFUSED
// is still probably the most useful thing to do.
sock.error = ERRNO_CODES.ECONNREFUSED; // Used in getsockopt for SOL_SOCKET/SO_ERROR test.
Module['websocket'].emit('error', [sock.stream.fd, sock.error, 'ECONNREFUSED: Connection refused']);
// don't throw
});
} else {
peer.socket.onopen = handleOpen;
peer.socket.onclose = function() {
Module['websocket'].emit('close', sock.stream.fd);
};
peer.socket.onmessage = function peer_socket_onmessage(event) {
handleMessage(event.data);
};
peer.socket.onerror = function(error) {
// The WebSocket spec only allows a 'simple event' to be thrown on error,
// so we only really know as much as ECONNREFUSED.
sock.error = ERRNO_CODES.ECONNREFUSED; // Used in getsockopt for SOL_SOCKET/SO_ERROR test.
Module['websocket'].emit('error', [sock.stream.fd, sock.error, 'ECONNREFUSED: Connection refused']);
};
}
},
poll: function(sock) {
if (sock.type === 1 && sock.server) {
// listen sockets should only say they're available for reading
// if there are pending clients.
return sock.pending.length ? 64 | 1 : 0;
}
var mask = 0;
var dest =
sock.type === 1 // we only care about the socket state for connection-based sockets
? SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport)
: null;
if (
sock.recv_queue.length ||
!dest || // connection-less sockets are always ready to read
(dest && dest.socket.readyState === dest.socket.CLOSING) ||
(dest && dest.socket.readyState === dest.socket.CLOSED)
) {
// let recv return 0 once closed
mask |= 64 | 1;
}
if (
!dest || // connection-less sockets are always ready to write
(dest && dest.socket.readyState === dest.socket.OPEN)
) {
mask |= 4;
}
if ((dest && dest.socket.readyState === dest.socket.CLOSING) || (dest && dest.socket.readyState === dest.socket.CLOSED)) {
mask |= 16;
}
return mask;
},
ioctl: function(sock, request, arg) {
switch (request) {
case 21531:
var bytes = 0;
if (sock.recv_queue.length) {
bytes = sock.recv_queue[0].data.length;
}
HEAP32[arg >> 2] = bytes;
return 0;
default:
return ERRNO_CODES.EINVAL;
}
},
close: function(sock) {
// if we've spawned a listen server, close it
if (sock.server) {
try {
sock.server.close();
} catch (e) {}
sock.server = null;
}
// close any peer connections
var peers = Object.keys(sock.peers);
for (var i = 0; i < peers.length; i++) {
var peer = sock.peers[peers[i]];
try {
peer.socket.close();
} catch (e) {}
SOCKFS.websocket_sock_ops.removePeer(sock, peer);
}
return 0;
},
bind: function(sock, addr, port) {
if (typeof sock.saddr !== 'undefined' || typeof sock.sport !== 'undefined') {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already bound
}
sock.saddr = addr;
sock.sport = port || _mkport();
// in order to emulate dgram sockets, we need to launch a listen server when
// binding on a connection-less socket
// note: this is only required on the server side
if (sock.type === 2) {
// close the existing server if it exists
if (sock.server) {
sock.server.close();
sock.server = null;
}
// swallow error operation not supported error that occurs when binding in the
// browser where this isn't supported
try {
sock.sock_ops.listen(sock, 0);
} catch (e) {
if (!(e instanceof FS.ErrnoError)) throw e;
if (e.errno !== ERRNO_CODES.EOPNOTSUPP) throw e;
}
}
},
connect: function(sock, addr, port) {
if (sock.server) {
throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
}
// TODO autobind
// if (!sock.addr && sock.type == 2) {
// }
// early out if we're already connected / in the middle of connecting
if (typeof sock.daddr !== 'undefined' && typeof sock.dport !== 'undefined') {
var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport);
if (dest) {
if (dest.socket.readyState === dest.socket.CONNECTING) {
throw new FS.ErrnoError(ERRNO_CODES.EALREADY);
} else {
throw new FS.ErrnoError(ERRNO_CODES.EISCONN);
}
}
}
// add the socket to our peer list and set our
// destination address / port to match
var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port);
sock.daddr = peer.addr;
sock.dport = peer.port;
// always "fail" in non-blocking mode
throw new FS.ErrnoError(ERRNO_CODES.EINPROGRESS);
},
listen: function(sock, backlog) {
if (!ENVIRONMENT_IS_NODE) {
throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
}
if (sock.server) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already listening
}
var WebSocketServer = require('ws').Server;
var host = sock.saddr;
sock.server = new WebSocketServer({
host: host,
port: sock.sport
// TODO support backlog
});
Module['websocket'].emit('listen', sock.stream.fd); // Send Event with listen fd.
sock.server.on('connection', function(ws) {
if (sock.type === 1) {
var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol);
// create a peer on the new socket
var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws);
newsock.daddr = peer.addr;
newsock.dport = peer.port;
// push to queue for accept to pick up
sock.pending.push(newsock);
Module['websocket'].emit('connection', newsock.stream.fd);
} else {
// create a peer on the listen socket so calling sendto
// with the listen socket and an address will resolve
// to the correct client
SOCKFS.websocket_sock_ops.createPeer(sock, ws);
Module['websocket'].emit('connection', sock.stream.fd);
}
});
sock.server.on('closed', function() {
Module['websocket'].emit('close', sock.stream.fd);
sock.server = null;
});
sock.server.on('error', function(error) {
// Although the ws library may pass errors that may be more descriptive than
// ECONNREFUSED they are not necessarily the expected error code e.g.
// ENOTFOUND on getaddrinfo seems to be node.js specific, so using EHOSTUNREACH
// is still probably the most useful thing to do. This error shouldn't
// occur in a well written app as errors should get trapped in the compiled
// app's own getaddrinfo call.
sock.error = ERRNO_CODES.EHOSTUNREACH; // Used in getsockopt for SOL_SOCKET/SO_ERROR test.
Module['websocket'].emit('error', [sock.stream.fd, sock.error, 'EHOSTUNREACH: Host is unreachable']);
// don't throw
});
},
accept: function(listensock) {
if (!listensock.server) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
var newsock = listensock.pending.shift();
newsock.stream.flags = listensock.stream.flags;
return newsock;
},
getname: function(sock, peer) {
var addr, port;
if (peer) {
if (sock.daddr === undefined || sock.dport === undefined) {
throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);
}
addr = sock.daddr;
port = sock.dport;
} else {
// TODO saddr and sport will be set for bind()'d UDP sockets, but what
// should we be returning for TCP sockets that've been connect()'d?
addr = sock.saddr || 0;
port = sock.sport || 0;
}
return { addr: addr, port: port };
},
sendmsg: function(sock, buffer, offset, length, addr, port) {
if (sock.type === 2) {
// connection-less sockets will honor the message address,
// and otherwise fall back to the bound destination address
if (addr === undefined || port === undefined) {
addr = sock.daddr;
port = sock.dport;
}
// if there was no address to fall back to, error out
if (addr === undefined || port === undefined) {
throw new FS.ErrnoError(ERRNO_CODES.EDESTADDRREQ);
}
} else {
// connection-based sockets will only use the bound
addr = sock.daddr;
port = sock.dport;
}
// find the peer for the destination address
var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr, port);
// early out if not connected with a connection-based socket
if (sock.type === 1) {
if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {
throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);
} else if (dest.socket.readyState === dest.socket.CONNECTING) {
throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
}
}
// create a copy of the incoming data to send, as the WebSocket API
// doesn't work entirely with an ArrayBufferView, it'll just send
// the entire underlying buffer
var data;
if (buffer instanceof Array || buffer instanceof ArrayBuffer) {
data = buffer.slice(offset, offset + length);
} else {
// ArrayBufferView
data = buffer.buffer.slice(buffer.byteOffset + offset, buffer.byteOffset + offset + length);
}
// if we're emulating a connection-less dgram socket and don't have
// a cached connection, queue the buffer to send upon connect and
// lie, saying the data was sent now.
if (sock.type === 2) {
if (!dest || dest.socket.readyState !== dest.socket.OPEN) {
// if we're not connected, open a new connection
if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {
dest = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port);
}
dest.dgram_send_queue.push(data);
return length;
}
}
try {
// send the actual data
dest.socket.send(data);
return length;
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
},
recvmsg: function(sock, length) {
// http://pubs.opengroup.org/onlinepubs/7908799/xns/recvmsg.html
if (sock.type === 1 && sock.server) {
// tcp servers should not be recv()'ing on the listen socket
throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);
}
var queued = sock.recv_queue.shift();
if (!queued) {
if (sock.type === 1) {
var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport);
if (!dest) {
// if we have a destination address but are not connected, error out
throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);
} else if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {
// return null if the socket has closed
return null;
} else {
// else, our socket is in a valid state but truly has nothing available
throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
}
} else {
throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
}
}
// queued.data will be an ArrayBuffer if it's unadulterated, but if it's
// requeued TCP data it'll be an ArrayBufferView
var queuedLength = queued.data.byteLength || queued.data.length;
var queuedOffset = queued.data.byteOffset || 0;
var queuedBuffer = queued.data.buffer || queued.data;
var bytesRead = Math.min(length, queuedLength);
var res = {
buffer: new Uint8Array(queuedBuffer, queuedOffset, bytesRead),
addr: queued.addr,
port: queued.port
};
// push back any unread data for TCP connections
if (sock.type === 1 && bytesRead < queuedLength) {
var bytesRemaining = queuedLength - bytesRead;
queued.data = new Uint8Array(queuedBuffer, queuedOffset + bytesRead, bytesRemaining);
sock.recv_queue.unshift(queued);
}
return res;
}
}
};
function _send(fd, buf, len, flags) {
var sock = SOCKFS.getSocket(fd);
if (!sock) {
___setErrNo(ERRNO_CODES.EBADF);
return -1;
}
// TODO honor flags
return _write(fd, buf, len);
}
function _pwrite(fildes, buf, nbyte, offset) {
// ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html
var stream = FS.getStream(fildes);
if (!stream) {
___setErrNo(ERRNO_CODES.EBADF);
return -1;
}
try {
var slab = HEAP8;
return FS.write(stream, slab, buf, nbyte, offset);
} catch (e) {
FS.handleFSError(e);
return -1;
}
}
function _write(fildes, buf, nbyte) {
// ssize_t write(int fildes, const void *buf, size_t nbyte);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html
var stream = FS.getStream(fildes);
if (!stream) {
___setErrNo(ERRNO_CODES.EBADF);
return -1;
}
try {
var slab = HEAP8;
return FS.write(stream, slab, buf, nbyte);
} catch (e) {
FS.handleFSError(e);
return -1;
}
}
function _fwrite(ptr, size, nitems, stream) {
// size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/fwrite.html
var bytesToWrite = nitems * size;
if (bytesToWrite == 0) return 0;
var fd = _fileno(stream);
var bytesWritten = _write(fd, ptr, bytesToWrite);
if (bytesWritten == -1) {
var streamObj = FS.getStreamFromPtr(stream);
if (streamObj) streamObj.error = true;
return 0;
} else {
return (bytesWritten / size) | 0;
}
}
Module['_strlen'] = _strlen;
function __reallyNegative(x) {
return x < 0 || (x === 0 && 1 / x === -Infinity);
}
function __formatString(format, varargs) {
var textIndex = format;
var argIndex = 0;
function getNextArg(type) {
// NOTE: Explicitly ignoring type safety. Otherwise this fails:
// int x = 4; printf("%c\n", (char)x);
var ret;
if (type === 'double') {
ret = ((HEAP32[tempDoublePtr >> 2] = HEAP32[(varargs + argIndex) >> 2]),
(HEAP32[(tempDoublePtr + 4) >> 2] = HEAP32[(varargs + (argIndex + 4)) >> 2]),
+HEAPF64[tempDoublePtr >> 3]);
} else if (type == 'i64') {
ret = [HEAP32[(varargs + argIndex) >> 2], HEAP32[(varargs + (argIndex + 4)) >> 2]];
} else {
type = 'i32'; // varargs are always i32, i64, or double
ret = HEAP32[(varargs + argIndex) >> 2];
}
argIndex += Runtime.getNativeFieldSize(type);
return ret;
}
var ret = [];
var curr, next, currArg;
while (1) {
var startTextIndex = textIndex;
curr = HEAP8[textIndex >> 0];
if (curr === 0) break;
next = HEAP8[(textIndex + 1) >> 0];
if (curr == 37) {
// Handle flags.
var flagAlwaysSigned = false;
var flagLeftAlign = false;
var flagAlternative = false;
var flagZeroPad = false;
var flagPadSign = false;
flagsLoop: while (1) {
switch (next) {
case 43:
flagAlwaysSigned = true;
break;
case 45:
flagLeftAlign = true;
break;
case 35:
flagAlternative = true;
break;
case 48:
if (flagZeroPad) {
break flagsLoop;
} else {
flagZeroPad = true;
break;
}
case 32:
flagPadSign = true;
break;
default:
break flagsLoop;
}
textIndex++;
next = HEAP8[(textIndex + 1) >> 0];
}
// Handle width.
var width = 0;
if (next == 42) {
width = getNextArg('i32');
textIndex++;
next = HEAP8[(textIndex + 1) >> 0];
} else {
while (next >= 48 && next <= 57) {
width = width * 10 + (next - 48);
textIndex++;
next = HEAP8[(textIndex + 1) >> 0];
}
}
// Handle precision.
var precisionSet = false,
precision = -1;
if (next == 46) {
precision = 0;
precisionSet = true;
textIndex++;
next = HEAP8[(textIndex + 1) >> 0];
if (next == 42) {
precision = getNextArg('i32');
textIndex++;
} else {
while (1) {
var precisionChr = HEAP8[(textIndex + 1) >> 0];
if (precisionChr < 48 || precisionChr > 57) break;
precision = precision * 10 + (precisionChr - 48);
textIndex++;
}
}
next = HEAP8[(textIndex + 1) >> 0];
}
if (precision < 0) {
precision = 6; // Standard default.
precisionSet = false;
}
// Handle integer sizes. WARNING: These assume a 32-bit architecture!
var argSize;
switch (String.fromCharCode(next)) {
case 'h':
var nextNext = HEAP8[(textIndex + 2) >> 0];
if (nextNext == 104) {
textIndex++;
argSize = 1; // char (actually i32 in varargs)
} else {
argSize = 2; // short (actually i32 in varargs)
}
break;
case 'l':
var nextNext = HEAP8[(textIndex + 2) >> 0];
if (nextNext == 108) {
textIndex++;
argSize = 8; // long long
} else {
argSize = 4; // long
}
break;
case 'L': // long long
case 'q': // int64_t
case 'j': // intmax_t
argSize = 8;
break;
case 'z': // size_t
case 't': // ptrdiff_t
case 'I': // signed ptrdiff_t or unsigned size_t
argSize = 4;
break;
default:
argSize = null;
}
if (argSize) textIndex++;
next = HEAP8[(textIndex + 1) >> 0];
// Handle type specifier.
switch (String.fromCharCode(next)) {
case 'd':
case 'i':
case 'u':
case 'o':
case 'x':
case 'X':
case 'p': {
// Integer.
var signed = next == 100 || next == 105;
argSize = argSize || 4;
var currArg = getNextArg('i' + argSize * 8);
var origArg = currArg;
var argText;
// Flatten i64-1 [low, high] into a (slightly rounded) double
if (argSize == 8) {
currArg = Runtime.makeBigInt(currArg[0], currArg[1], next == 117);
}
// Truncate to requested size.
if (argSize <= 4) {
var limit = Math.pow(256, argSize) - 1;
currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8);
}
// Format the number.
var currAbsArg = Math.abs(currArg);
var prefix = '';
if (next == 100 || next == 105) {
if (argSize == 8 && i64Math) argText = i64Math.stringify(origArg[0], origArg[1], null);
else argText = reSign(currArg, 8 * argSize, 1).toString(10);
} else if (next == 117) {
if (argSize == 8 && i64Math) argText = i64Math.stringify(origArg[0], origArg[1], true);
else argText = unSign(currArg, 8 * argSize, 1).toString(10);
currArg = Math.abs(currArg);
} else if (next == 111) {
argText = (flagAlternative ? '0' : '') + currAbsArg.toString(8);
} else if (next == 120 || next == 88) {
prefix = flagAlternative && currArg != 0 ? '0x' : '';
if (argSize == 8 && i64Math) {
if (origArg[1]) {
argText = (origArg[1] >>> 0).toString(16);
var lower = (origArg[0] >>> 0).toString(16);
while (lower.length < 8) lower = '0' + lower;
argText += lower;
} else {
argText = (origArg[0] >>> 0).toString(16);
}
} else if (currArg < 0) {
// Represent negative numbers in hex as 2's complement.
currArg = -currArg;
argText = (currAbsArg - 1).toString(16);
var buffer = [];
for (var i = 0; i < argText.length; i++) {
buffer.push((0xf - parseInt(argText[i], 16)).toString(16));
}
argText = buffer.join('');
while (argText.length < argSize * 2) argText = 'f' + argText;
} else {
argText = currAbsArg.toString(16);
}
if (next == 88) {
prefix = prefix.toUpperCase();
argText = argText.toUpperCase();
}
} else if (next == 112) {
if (currAbsArg === 0) {
argText = '(nil)';
} else {
prefix = '0x';
argText = currAbsArg.toString(16);
}
}
if (precisionSet) {
while (argText.length < precision) {
argText = '0' + argText;
}
}
// Add sign if needed
if (currArg >= 0) {
if (flagAlwaysSigned) {
prefix = '+' + prefix;
} else if (flagPadSign) {
prefix = ' ' + prefix;
}
}
// Move sign to prefix so we zero-pad after the sign
if (argText.charAt(0) == '-') {
prefix = '-' + prefix;
argText = argText.substr(1);
}
// Add padding.
while (prefix.length + argText.length < width) {
if (flagLeftAlign) {
argText += ' ';
} else {
if (flagZeroPad) {
argText = '0' + argText;
} else {
prefix = ' ' + prefix;
}
}
}
// Insert the result into the buffer.
argText = prefix + argText;
argText.split('').forEach(function(chr) {
ret.push(chr.charCodeAt(0));
});
break;
}
case 'f':
case 'F':
case 'e':
case 'E':
case 'g':
case 'G': {
// Float.
var currArg = getNextArg('double');
var argText;
if (isNaN(currArg)) {
argText = 'nan';
flagZeroPad = false;
} else if (!isFinite(currArg)) {
argText = (currArg < 0 ? '-' : '') + 'inf';
flagZeroPad = false;
} else {
var isGeneral = false;
var effectivePrecision = Math.min(precision, 20);
// Convert g/G to f/F or e/E, as per:
// http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html
if (next == 103 || next == 71) {
isGeneral = true;
precision = precision || 1;
var exponent = parseInt(currArg.toExponential(effectivePrecision).split('e')[1], 10);
if (precision > exponent && exponent >= -4) {
next = (next == 103 ? 'f' : 'F').charCodeAt(0);
precision -= exponent + 1;
} else {
next = (next == 103 ? 'e' : 'E').charCodeAt(0);
precision--;
}
effectivePrecision = Math.min(precision, 20);
}
if (next == 101 || next == 69) {
argText = currArg.toExponential(effectivePrecision);
// Make sure the exponent has at least 2 digits.
if (/[eE][-+]\d$/.test(argText)) {
argText = argText.slice(0, -1) + '0' + argText.slice(-1);
}
} else if (next == 102 || next == 70) {
argText = currArg.toFixed(effectivePrecision);
if (currArg === 0 && __reallyNegative(currArg)) {
argText = '-' + argText;
}
}
var parts = argText.split('e');
if (isGeneral && !flagAlternative) {
// Discard trailing zeros and periods.
while (parts[0].length > 1 && parts[0].indexOf('.') != -1 && (parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) {
parts[0] = parts[0].slice(0, -1);
}
} else {
// Make sure we have a period in alternative mode.
if (flagAlternative && argText.indexOf('.') == -1) parts[0] += '.';
// Zero pad until required precision.
while (precision > effectivePrecision++) parts[0] += '0';
}
argText = parts[0] + (parts.length > 1 ? 'e' + parts[1] : '');
// Capitalize 'E' if needed.
if (next == 69) argText = argText.toUpperCase();
// Add sign.
if (currArg >= 0) {
if (flagAlwaysSigned) {
argText = '+' + argText;
} else if (flagPadSign) {
argText = ' ' + argText;
}
}
}
// Add padding.
while (argText.length < width) {
if (flagLeftAlign) {
argText += ' ';
} else {
if (flagZeroPad && (argText[0] == '-' || argText[0] == '+')) {
argText = argText[0] + '0' + argText.slice(1);
} else {
argText = (flagZeroPad ? '0' : ' ') + argText;
}
}
}
// Adjust case.
if (next < 97) argText = argText.toUpperCase();
// Insert the result into the buffer.
argText.split('').forEach(function(chr) {
ret.push(chr.charCodeAt(0));
});
break;
}
case 's': {
// String.
var arg = getNextArg('i8*');
var argLength = arg ? _strlen(arg) : '(null)'.length;
if (precisionSet) argLength = Math.min(argLength, precision);
if (!flagLeftAlign) {
while (argLength < width--) {
ret.push(32);
}
}
if (arg) {
for (var i = 0; i < argLength; i++) {
ret.push(HEAPU8[arg++ >> 0]);
}
} else {
ret = ret.concat(intArrayFromString('(null)'.substr(0, argLength), true));
}
if (flagLeftAlign) {
while (argLength < width--) {
ret.push(32);
}
}
break;
}
case 'c': {
// Character.
if (flagLeftAlign) ret.push(getNextArg('i8'));
while (--width > 0) {
ret.push(32);
}
if (!flagLeftAlign) ret.push(getNextArg('i8'));
break;
}
case 'n': {
// Write the length written so far to the next parameter.
var ptr = getNextArg('i32*');
HEAP32[ptr >> 2] = ret.length;
break;
}
case '%': {
// Literal percent sign.
ret.push(curr);
break;
}
default: {
// Unknown specifiers remain untouched.
for (var i = startTextIndex; i < textIndex + 2; i++) {
ret.push(HEAP8[i >> 0]);
}
}
}
textIndex += 2;
// TODO: Support a/A (hex float) and m (last error) specifiers.
// TODO: Support %1${specifier} for arg selection.
} else {
ret.push(curr);
textIndex += 1;
}
}
return ret;
}
function _fprintf(stream, format, varargs) {
// int fprintf(FILE *restrict stream, const char *restrict format, ...);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html
var result = __formatString(format, varargs);
var stack = Runtime.stackSave();
var ret = _fwrite(allocate(result, 'i8', ALLOC_STACK), 1, result.length, stream);
Runtime.stackRestore(stack);
return ret;
}
function _open(path, oflag, varargs) {
// int open(const char *path, int oflag, ...);
// http://pubs.opengroup.org/onlinepubs/009695399/functions/open.html
var mode = HEAP32[varargs >> 2];
path = Pointer_stringify(path);
try {
var stream = FS.open(path, oflag, mode);
return stream.fd;
} catch (e) {
FS.handleFSError(e);
return -1;
}
}
function _fopen(filename, mode) {
// FILE *fopen(const char *restrict filename, const char *restrict mode);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/fopen.html
var flags;
mode = Pointer_stringify(mode);
if (mode[0] == 'r') {
if (mode.indexOf('+') != -1) {
flags = 2;
} else {
flags = 0;
}
} else if (mode[0] == 'w') {
if (mode.indexOf('+') != -1) {
flags = 2;
} else {
flags = 1;
}
flags |= 64;
flags |= 512;
} else if (mode[0] == 'a') {
if (mode.indexOf('+') != -1) {
flags = 2;
} else {
flags = 1;
}
flags |= 64;
flags |= 1024;
} else {
___setErrNo(ERRNO_CODES.EINVAL);
return 0;
}
var fd = _open(filename, flags, allocate([0x1ff, 0, 0, 0], 'i32', ALLOC_STACK)); // All creation permissions.
return fd === -1 ? 0 : FS.getPtrForStream(FS.getStream(fd));
}
function _fputc(c, stream) {
// int fputc(int c, FILE *stream);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/fputc.html
var chr = unSign(c & 0xff);
HEAP8[_fputc.ret >> 0] = chr;
var fd = _fileno(stream);
var ret = _write(fd, _fputc.ret, 1);
if (ret == -1) {
var streamObj = FS.getStreamFromPtr(stream);
if (streamObj) streamObj.error = true;
return -1;
} else {
return chr;
}
}
var ___DEFAULT_POLLMASK = 5;
function _poll(fds, nfds, timeout) {
// int poll(struct pollfd fds[], nfds_t nfds, int timeout);
// http://pubs.opengroup.org/onlinepubs/009695399/functions/poll.html
var nonzero = 0;
for (var i = 0; i < nfds; i++) {
var pollfd = fds + 8 * i;
var fd = HEAP32[pollfd >> 2];
var events = HEAP16[(pollfd + 4) >> 1];
var mask = 32;
var stream = FS.getStream(fd);
if (stream) {
mask = ___DEFAULT_POLLMASK;
if (stream.stream_ops.poll) {
mask = stream.stream_ops.poll(stream);
}
}
mask &= events | 8 | 16;
if (mask) nonzero++;
HEAP16[(pollfd + 6) >> 1] = mask;
}
return nonzero;
}
Module['_i64Add'] = _i64Add;
function _js_read_image(dataPtr, len) {
var HEAPU8 = Module['HEAPU8'];
var array = HEAPU8.subarray(dataPtr, dataPtr + len);
Module['getImageData'](array);
return array.length;
}
function _usleep(useconds) {
// int usleep(useconds_t useconds);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/usleep.html
// We're single-threaded, so use a busy loop. Super-ugly.
var msec = useconds / 1000;
if (ENVIRONMENT_IS_WEB && window['performance'] && window['performance']['now']) {
var start = window['performance']['now']();
while (window['performance']['now']() - start < msec) {
// Do nothing.
}
} else {
var start = Date.now();
while (Date.now() - start < msec) {
// Do nothing.
}
}
return 0;
}
function _nanosleep(rqtp, rmtp) {
// int nanosleep(const struct timespec *rqtp, struct timespec *rmtp);
var seconds = HEAP32[rqtp >> 2];
var nanoseconds = HEAP32[(rqtp + 4) >> 2];
if (rmtp !== 0) {
HEAP32[rmtp >> 2] = 0;
HEAP32[(rmtp + 4) >> 2] = 0;
}
return _usleep(seconds * 1e6 + nanoseconds / 1000);
}
function _fputs(s, stream) {
// int fputs(const char *restrict s, FILE *restrict stream);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/fputs.html
var fd = _fileno(stream);
return _write(fd, s, _strlen(s));
}
function _emscripten_set_main_loop_timing(mode, value) {
Browser.mainLoop.timingMode = mode;
Browser.mainLoop.timingValue = value;
if (!Browser.mainLoop.func) {
return 1; // Return non-zero on failure, can't set timing mode when there is no main loop.
}
if (mode == 0 /*EM_TIMING_SETTIMEOUT*/) {
Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler() {
setTimeout(Browser.mainLoop.runner, value); // doing this each time means that on exception, we stop
};
Browser.mainLoop.method = 'timeout';
} else if (mode == 1 /*EM_TIMING_RAF*/) {
Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler() {
Browser.requestAnimationFrame(Browser.mainLoop.runner);
};
Browser.mainLoop.method = 'rAF';
}
return 0;
}
function _emscripten_set_main_loop(func, fps, simulateInfiniteLoop, arg) {
Module['noExitRuntime'] = true;
assert(
!Browser.mainLoop.func,
'emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.'
);
Browser.mainLoop.func = func;
Browser.mainLoop.arg = arg;
var thisMainLoopId = Browser.mainLoop.currentlyRunningMainloop;
Browser.mainLoop.runner = function Browser_mainLoop_runner() {
if (ABORT) return;
if (Browser.mainLoop.queue.length > 0) {
var start = Date.now();
var blocker = Browser.mainLoop.queue.shift();
blocker.func(blocker.arg);
if (Browser.mainLoop.remainingBlockers) {
var remaining = Browser.mainLoop.remainingBlockers;
var next = remaining % 1 == 0 ? remaining - 1 : Math.floor(remaining);
if (blocker.counted) {
Browser.mainLoop.remainingBlockers = next;
} else {
// not counted, but move the progress along a tiny bit
next = next + 0.5; // do not steal all the next one's progress
Browser.mainLoop.remainingBlockers = (8 * remaining + next) / 9;
}
}
console.log('main loop blocker "' + blocker.name + '" took ' + (Date.now() - start) + ' ms'); //, left: ' + Browser.mainLoop.remainingBlockers);
Browser.mainLoop.updateStatus();
setTimeout(Browser.mainLoop.runner, 0);
return;
}
// catch pauses from non-main loop sources
if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;
// Implement very basic swap interval control
Browser.mainLoop.currentFrameNumber = (Browser.mainLoop.currentFrameNumber + 1) | 0;
if (
Browser.mainLoop.timingMode == 1 /*EM_TIMING_RAF*/ &&
Browser.mainLoop.timingValue > 1 &&
Browser.mainLoop.currentFrameNumber % Browser.mainLoop.timingValue != 0
) {
// Not the scheduled time to render this frame - skip.
Browser.mainLoop.scheduler();
return;
}
// Signal GL rendering layer that processing of a new frame is about to start. This helps it optimize
// VBO double-buffering and reduce GPU stalls.
if (Browser.mainLoop.method === 'timeout' && Module.ctx) {
Module.printErr(
'Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!'
);
Browser.mainLoop.method = ''; // just warn once per call to set main loop
}
Browser.mainLoop.runIter(function() {
if (typeof arg !== 'undefined') {
Runtime.dynCall('vi', func, [arg]);
} else {
Runtime.dynCall('v', func);
}
});
// catch pauses from the main loop itself
if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;
// Queue new audio data. This is important to be right after the main loop invocation, so that we will immediately be able
// to queue the newest produced audio samples.
// TODO: Consider adding pre- and post- rAF callbacks so that GL.newRenderingFrameStarted() and SDL.audio.queueNewAudioData()
// do not need to be hardcoded into this function, but can be more generic.
if (typeof SDL === 'object' && SDL.audio && SDL.audio.queueNewAudioData) SDL.audio.queueNewAudioData();
Browser.mainLoop.scheduler();
};
if (fps && fps > 0) _emscripten_set_main_loop_timing(0 /*EM_TIMING_SETTIMEOUT*/, 1000.0 / fps);
else _emscripten_set_main_loop_timing(1 /*EM_TIMING_RAF*/, 1); // Do rAF by rendering each frame (no decimating)
Browser.mainLoop.scheduler();
if (simulateInfiniteLoop) {
throw 'SimulateInfiniteLoop';
}
}
var Browser = {
mainLoop: {
scheduler: null,
method: '',
currentlyRunningMainloop: 0,
func: null,
arg: 0,
timingMode: 0,
timingValue: 0,
currentFrameNumber: 0,
queue: [],
pause: function() {
Browser.mainLoop.scheduler = null;
Browser.mainLoop.currentlyRunningMainloop++; // Incrementing this signals the previous main loop that it's now become old, and it must return.
},
resume: function() {
Browser.mainLoop.currentlyRunningMainloop++;
var timingMode = Browser.mainLoop.timingMode;
var timingValue = Browser.mainLoop.timingValue;
var func = Browser.mainLoop.func;
Browser.mainLoop.func = null;
_emscripten_set_main_loop(func, 0, false, Browser.mainLoop.arg);
_emscripten_set_main_loop_timing(timingMode, timingValue);
},
updateStatus: function() {
if (Module['setStatus']) {
var message = Module['statusMessage'] || 'Please wait...';
var remaining = Browser.mainLoop.remainingBlockers;
var expected = Browser.mainLoop.expectedBlockers;
if (remaining) {
if (remaining < expected) {
Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')');
} else {
Module['setStatus'](message);
}
} else {
Module['setStatus']('');
}
}
},
runIter: function(func) {
if (ABORT) return;
if (Module['preMainLoop']) {
var preRet = Module['preMainLoop']();
if (preRet === false) {
return; // |return false| skips a frame
}
}
try {
func();
} catch (e) {
if (e instanceof ExitStatus) {
return;
} else {
if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]);
throw e;
}
}
if (Module['postMainLoop']) Module['postMainLoop']();
}
},
isFullScreen: false,
pointerLock: false,
moduleContextCreatedCallbacks: [],
workers: [],
init: function() {
if (!Module['preloadPlugins']) Module['preloadPlugins'] = []; // needs to exist even in workers
if (Browser.initted) return;
Browser.initted = true;
try {
new Blob();
Browser.hasBlobConstructor = true;
} catch (e) {
Browser.hasBlobConstructor = false;
console.log('warning: no blob constructor, cannot create blobs with mimetypes');
}
Browser.BlobBuilder =
typeof MozBlobBuilder != 'undefined'
? MozBlobBuilder
: typeof WebKitBlobBuilder != 'undefined'
? WebKitBlobBuilder
: !Browser.hasBlobConstructor
? console.log('warning: no BlobBuilder')
: null;
Browser.URLObject = typeof window != 'undefined' ? (window.URL ? window.URL : window.webkitURL) : undefined;
if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') {
console.log('warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.');
Module.noImageDecoding = true;
}
// Support for plugins that can process preloaded files. You can add more of these to
// your app by creating and appending to Module.preloadPlugins.
//
// Each plugin is asked if it can handle a file based on the file's name. If it can,
// it is given the file's raw data. When it is done, it calls a callback with the file's
// (possibly modified) data. For example, a plugin might decompress a file, or it
// might create some side data structure for use later (like an Image element, etc.).
var imagePlugin = {};
imagePlugin['canHandle'] = function imagePlugin_canHandle(name) {
return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name);
};
imagePlugin['handle'] = function imagePlugin_handle(byteArray, name, onload, onerror) {
var b = null;
if (Browser.hasBlobConstructor) {
try {
b = new Blob([byteArray], { type: Browser.getMimetype(name) });
if (b.size !== byteArray.length) {
// Safari bug #118630
// Safari's Blob can only take an ArrayBuffer
b = new Blob([new Uint8Array(byteArray).buffer], { type: Browser.getMimetype(name) });
}
} catch (e) {
Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder');
}
}
if (!b) {
var bb = new Browser.BlobBuilder();
bb.append(new Uint8Array(byteArray).buffer); // we need to pass a buffer, and must copy the array to get the right data range
b = bb.getBlob();
}
var url = Browser.URLObject.createObjectURL(b);
var img = new Image();
img.onload = function img_onload() {
assert(img.complete, 'Image ' + name + ' could not be decoded');
var canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0);
Module['preloadedImages'][name] = canvas;
Browser.URLObject.revokeObjectURL(url);
if (onload) onload(byteArray);
};
img.onerror = function img_onerror(event) {
console.log('Image ' + url + ' could not be decoded');
if (onerror) onerror();
};
img.src = url;
};
Module['preloadPlugins'].push(imagePlugin);
var audioPlugin = {};
audioPlugin['canHandle'] = function audioPlugin_canHandle(name) {
return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 };
};
audioPlugin['handle'] = function audioPlugin_handle(byteArray, name, onload, onerror) {
var done = false;
function finish(audio) {
if (done) return;
done = true;
Module['preloadedAudios'][name] = audio;
if (onload) onload(byteArray);
}
function fail() {
if (done) return;
done = true;
Module['preloadedAudios'][name] = new Audio(); // empty shim
if (onerror) onerror();
}
if (Browser.hasBlobConstructor) {
try {
var b = new Blob([byteArray], { type: Browser.getMimetype(name) });
} catch (e) {
return fail();
}
var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this!
var audio = new Audio();
audio.addEventListener(
'canplaythrough',
function() {
finish(audio);
},
false
); // use addEventListener due to chromium bug 124926
audio.onerror = function audio_onerror(event) {
if (done) return;
console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach');
function encode64(data) {
var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
var PAD = '=';
var ret = '';
var leftchar = 0;
var leftbits = 0;
for (var i = 0; i < data.length; i++) {
leftchar = (leftchar << 8) | data[i];
leftbits += 8;
while (leftbits >= 6) {
var curr = (leftchar >> (leftbits - 6)) & 0x3f;
leftbits -= 6;
ret += BASE[curr];
}
}
if (leftbits == 2) {
ret += BASE[(leftchar & 3) << 4];
ret += PAD + PAD;
} else if (leftbits == 4) {
ret += BASE[(leftchar & 0xf) << 2];
ret += PAD;
}
return ret;
}
audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray);
finish(audio); // we don't wait for confirmation this worked - but it's worth trying
};
audio.src = url;
// workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror
Browser.safeSetTimeout(function() {
finish(audio); // try to use it even though it is not necessarily ready to play
}, 10000);
} else {
return fail();
}
};
Module['preloadPlugins'].push(audioPlugin);
// Canvas event setup
var canvas = Module['canvas'];
function pointerLockChange() {
Browser.pointerLock =
document['pointerLockElement'] === canvas ||
document['mozPointerLockElement'] === canvas ||
document['webkitPointerLockElement'] === canvas ||
document['msPointerLockElement'] === canvas;
}
if (canvas) {
// forced aspect ratio can be enabled by defining 'forcedAspectRatio' on Module
// Module['forcedAspectRatio'] = 4 / 3;
canvas.requestPointerLock =
canvas['requestPointerLock'] ||
canvas['mozRequestPointerLock'] ||
canvas['webkitRequestPointerLock'] ||
canvas['msRequestPointerLock'] ||
function() {};
canvas.exitPointerLock =
document['exitPointerLock'] ||
document['mozExitPointerLock'] ||
document['webkitExitPointerLock'] ||
document['msExitPointerLock'] ||
function() {}; // no-op if function does not exist
canvas.exitPointerLock = canvas.exitPointerLock.bind(document);
document.addEventListener('pointerlockchange', pointerLockChange, false);
document.addEventListener('mozpointerlockchange', pointerLockChange, false);
document.addEventListener('webkitpointerlockchange', pointerLockChange, false);
document.addEventListener('mspointerlockchange', pointerLockChange, false);
if (Module['elementPointerLock']) {
canvas.addEventListener(
'click',
function(ev) {
if (!Browser.pointerLock && canvas.requestPointerLock) {
canvas.requestPointerLock();
ev.preventDefault();
}
},
false
);
}
}
},
createContext: function(canvas, useWebGL, setInModule, webGLContextAttributes) {
if (useWebGL && Module.ctx && canvas == Module.canvas) return Module.ctx; // no need to recreate GL context if it's already been created for this canvas.
var ctx;
var contextHandle;
if (useWebGL) {
// For GLES2/desktop GL compatibility, adjust a few defaults to be different to WebGL defaults, so that they align better with the desktop defaults.
var contextAttributes = {
antialias: false,
alpha: false
};
if (webGLContextAttributes) {
for (var attribute in webGLContextAttributes) {
contextAttributes[attribute] = webGLContextAttributes[attribute];
}
}
contextHandle = GL.createContext(canvas, contextAttributes);
if (contextHandle) {
ctx = GL.getContext(contextHandle).GLctx;
}
// Set the background of the WebGL canvas to black
canvas.style.backgroundColor = 'black';
} else {
ctx = canvas.getContext('2d');
}
if (!ctx) return null;
if (setInModule) {
if (!useWebGL)
assert(typeof GLctx === 'undefined', 'cannot set in module if GLctx is used, but we are a non-GL context that would replace it');
Module.ctx = ctx;
if (useWebGL) GL.makeContextCurrent(contextHandle);
Module.useWebGL = useWebGL;
Browser.moduleContextCreatedCallbacks.forEach(function(callback) {
callback();
});
Browser.init();
}
return ctx;
},
destroyContext: function(canvas, useWebGL, setInModule) {},
fullScreenHandlersInstalled: false,
lockPointer: undefined,
resizeCanvas: undefined,
requestFullScreen: function(lockPointer, resizeCanvas) {
Browser.lockPointer = lockPointer;
Browser.resizeCanvas = resizeCanvas;
if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true;
if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false;
var canvas = Module['canvas'];
function fullScreenChange() {
Browser.isFullScreen = false;
var canvasContainer = canvas.parentNode;
if (
(document['webkitFullScreenElement'] ||
document['webkitFullscreenElement'] ||
document['mozFullScreenElement'] ||
document['mozFullscreenElement'] ||
document['fullScreenElement'] ||
document['fullscreenElement'] ||
document['msFullScreenElement'] ||
document['msFullscreenElement'] ||
document['webkitCurrentFullScreenElement']) === canvasContainer
) {
canvas.cancelFullScreen =
document['cancelFullScreen'] ||
document['mozCancelFullScreen'] ||
document['webkitCancelFullScreen'] ||
document['msExitFullscreen'] ||
document['exitFullscreen'] ||
function() {};
canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document);
if (Browser.lockPointer) canvas.requestPointerLock();
Browser.isFullScreen = true;
if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize();
} else {
// remove the full screen specific parent of the canvas again to restore the HTML structure from before going full screen
canvasContainer.parentNode.insertBefore(canvas, canvasContainer);
canvasContainer.parentNode.removeChild(canvasContainer);
if (Browser.resizeCanvas) Browser.setWindowedCanvasSize();
}
if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen);
Browser.updateCanvasDimensions(canvas);
}
if (!Browser.fullScreenHandlersInstalled) {
Browser.fullScreenHandlersInstalled = true;
document.addEventListener('fullscreenchange', fullScreenChange, false);
document.addEventListener('mozfullscreenchange', fullScreenChange, false);
document.addEventListener('webkitfullscreenchange', fullScreenChange, false);
document.addEventListener('MSFullscreenChange', fullScreenChange, false);
}
// create a new parent to ensure the canvas has no siblings. this allows browsers to optimize full screen performance when its parent is the full screen root
var canvasContainer = document.createElement('div');
canvas.parentNode.insertBefore(canvasContainer, canvas);
canvasContainer.appendChild(canvas);
// use parent of canvas as full screen root to allow aspect ratio correction (Firefox stretches the root to screen size)
canvasContainer.requestFullScreen =
canvasContainer['requestFullScreen'] ||
canvasContainer['mozRequestFullScreen'] ||
canvasContainer['msRequestFullscreen'] ||
(canvasContainer['webkitRequestFullScreen']
? function() {
canvasContainer['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']);
}
: null);
canvasContainer.requestFullScreen();
},
nextRAF: 0,
fakeRequestAnimationFrame: function(func) {
// try to keep 60fps between calls to here
var now = Date.now();
if (Browser.nextRAF === 0) {
Browser.nextRAF = now + 1000 / 60;
} else {
while (now + 2 >= Browser.nextRAF) {
// fudge a little, to avoid timer jitter causing us to do lots of delay:0
Browser.nextRAF += 1000 / 60;
}
}
var delay = Math.max(Browser.nextRAF - now, 0);
setTimeout(func, delay);
},
requestAnimationFrame: function requestAnimationFrame(func) {
if (typeof window === 'undefined') {
// Provide fallback to setTimeout if window is undefined (e.g. in Node.js)
Browser.fakeRequestAnimationFrame(func);
} else {
if (!window.requestAnimationFrame) {
window.requestAnimationFrame =
window['requestAnimationFrame'] ||
window['mozRequestAnimationFrame'] ||
window['webkitRequestAnimationFrame'] ||
window['msRequestAnimationFrame'] ||
window['oRequestAnimationFrame'] ||
Browser.fakeRequestAnimationFrame;
}
window.requestAnimationFrame(func);
}
},
safeCallback: function(func) {
return function() {
if (!ABORT) return func.apply(null, arguments);
};
},
safeRequestAnimationFrame: function(func) {
return Browser.requestAnimationFrame(function() {
if (!ABORT) func();
});
},
safeSetTimeout: function(func, timeout) {
Module['noExitRuntime'] = true;
return setTimeout(function() {
if (!ABORT) func();
}, timeout);
},
safeSetInterval: function(func, timeout) {
Module['noExitRuntime'] = true;
return setInterval(function() {
if (!ABORT) func();
}, timeout);
},
getMimetype: function(name) {
return {
jpg: 'image/jpeg',
jpeg: 'image/jpeg',
png: 'image/png',
bmp: 'image/bmp',
ogg: 'audio/ogg',
wav: 'audio/wav',
mp3: 'audio/mpeg'
}[name.substr(name.lastIndexOf('.') + 1)];
},
getUserMedia: function(func) {
if (!window.getUserMedia) {
window.getUserMedia = navigator['getUserMedia'] || navigator['mozGetUserMedia'];
}
window.getUserMedia(func);
},
getMovementX: function(event) {
return event['movementX'] || event['mozMovementX'] || event['webkitMovementX'] || 0;
},
getMovementY: function(event) {
return event['movementY'] || event['mozMovementY'] || event['webkitMovementY'] || 0;
},
getMouseWheelDelta: function(event) {
var delta = 0;
switch (event.type) {
case 'DOMMouseScroll':
delta = event.detail;
break;
case 'mousewheel':
delta = event.wheelDelta;
break;
case 'wheel':
delta = event['deltaY'];
break;
default:
throw 'unrecognized mouse wheel event: ' + event.type;
}
return delta;
},
mouseX: 0,
mouseY: 0,
mouseMovementX: 0,
mouseMovementY: 0,
touches: {},
lastTouches: {},
calculateMouseEvent: function(event) {
// event should be mousemove, mousedown or mouseup
if (Browser.pointerLock) {
// When the pointer is locked, calculate the coordinates
// based on the movement of the mouse.
// Workaround for Firefox bug 764498
if (event.type != 'mousemove' && 'mozMovementX' in event) {
Browser.mouseMovementX = Browser.mouseMovementY = 0;
} else {
Browser.mouseMovementX = Browser.getMovementX(event);
Browser.mouseMovementY = Browser.getMovementY(event);
}
// check if SDL is available
if (typeof SDL != 'undefined') {
Browser.mouseX = SDL.mouseX + Browser.mouseMovementX;
Browser.mouseY = SDL.mouseY + Browser.mouseMovementY;
} else {
// just add the mouse delta to the current absolut mouse position
// FIXME: ideally this should be clamped against the canvas size and zero
Browser.mouseX += Browser.mouseMovementX;
Browser.mouseY += Browser.mouseMovementY;
}
} else {
// Otherwise, calculate the movement based on the changes
// in the coordinates.
var rect = Module['canvas'].getBoundingClientRect();
var cw = Module['canvas'].width;
var ch = Module['canvas'].height;
// Neither .scrollX or .pageXOffset are defined in a spec, but
// we prefer .scrollX because it is currently in a spec draft.
// (see: http://www.w3.org/TR/2013/WD-cssom-view-20131217/)
var scrollX = typeof window.scrollX !== 'undefined' ? window.scrollX : window.pageXOffset;
var scrollY = typeof window.scrollY !== 'undefined' ? window.scrollY : window.pageYOffset;
if (event.type === 'touchstart' || event.type === 'touchend' || event.type === 'touchmove') {
var touch = event.touch;
if (touch === undefined) {
return; // the "touch" property is only defined in SDL
}
var adjustedX = touch.pageX - (scrollX + rect.left);
var adjustedY = touch.pageY - (scrollY + rect.top);
adjustedX = adjustedX * (cw / rect.width);
adjustedY = adjustedY * (ch / rect.height);
var coords = { x: adjustedX, y: adjustedY };
if (event.type === 'touchstart') {
Browser.lastTouches[touch.identifier] = coords;
Browser.touches[touch.identifier] = coords;
} else if (event.type === 'touchend' || event.type === 'touchmove') {
Browser.lastTouches[touch.identifier] = Browser.touches[touch.identifier];
Browser.touches[touch.identifier] = { x: adjustedX, y: adjustedY };
}
return;
}
var x = event.pageX - (scrollX + rect.left);
var y = event.pageY - (scrollY + rect.top);
// the canvas might be CSS-scaled compared to its backbuffer;
// SDL-using content will want mouse coordinates in terms
// of backbuffer units.
x = x * (cw / rect.width);
y = y * (ch / rect.height);
Browser.mouseMovementX = x - Browser.mouseX;
Browser.mouseMovementY = y - Browser.mouseY;
Browser.mouseX = x;
Browser.mouseY = y;
}
},
xhrLoad: function(url, onload, onerror) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'arraybuffer';
xhr.onload = function xhr_onload() {
if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) {
// file URLs can return 0
onload(xhr.response);
} else {
onerror();
}
};
xhr.onerror = onerror;
xhr.send(null);
},
asyncLoad: function(url, onload, onerror, noRunDep) {
Browser.xhrLoad(
url,
function(arrayBuffer) {
assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).');
onload(new Uint8Array(arrayBuffer));
if (!noRunDep) removeRunDependency('al ' + url);
},
function(event) {
if (onerror) {
onerror();
} else {
throw 'Loading data file "' + url + '" failed.';
}
}
);
if (!noRunDep) addRunDependency('al ' + url);
},
resizeListeners: [],
updateResizeListeners: function() {
var canvas = Module['canvas'];
Browser.resizeListeners.forEach(function(listener) {
listener(canvas.width, canvas.height);
});
},
setCanvasSize: function(width, height, noUpdates) {
var canvas = Module['canvas'];
Browser.updateCanvasDimensions(canvas, width, height);
if (!noUpdates) Browser.updateResizeListeners();
},
windowedWidth: 0,
windowedHeight: 0,
setFullScreenCanvasSize: function() {
// check if SDL is available
if (typeof SDL != 'undefined') {
var flags = HEAPU32[(SDL.screen + Runtime.QUANTUM_SIZE * 0) >> 2];
flags = flags | 0x00800000; // set SDL_FULLSCREEN flag
HEAP32[(SDL.screen + Runtime.QUANTUM_SIZE * 0) >> 2] = flags;
}
Browser.updateResizeListeners();
},
setWindowedCanvasSize: function() {
// check if SDL is available
if (typeof SDL != 'undefined') {
var flags = HEAPU32[(SDL.screen + Runtime.QUANTUM_SIZE * 0) >> 2];
flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag
HEAP32[(SDL.screen + Runtime.QUANTUM_SIZE * 0) >> 2] = flags;
}
Browser.updateResizeListeners();
},
updateCanvasDimensions: function(canvas, wNative, hNative) {
if (wNative && hNative) {
canvas.widthNative = wNative;
canvas.heightNative = hNative;
} else {
wNative = canvas.widthNative;
hNative = canvas.heightNative;
}
var w = wNative;
var h = hNative;
if (Module['forcedAspectRatio'] && Module['forcedAspectRatio'] > 0) {
if (w / h < Module['forcedAspectRatio']) {
w = Math.round(h * Module['forcedAspectRatio']);
} else {
h = Math.round(w / Module['forcedAspectRatio']);
}
}
if (
(document['webkitFullScreenElement'] ||
document['webkitFullscreenElement'] ||
document['mozFullScreenElement'] ||
document['mozFullscreenElement'] ||
document['fullScreenElement'] ||
document['fullscreenElement'] ||
document['msFullScreenElement'] ||
document['msFullscreenElement'] ||
document['webkitCurrentFullScreenElement']) === canvas.parentNode &&
typeof screen != 'undefined'
) {
var factor = Math.min(screen.width / w, screen.height / h);
w = Math.round(w * factor);
h = Math.round(h * factor);
}
if (Browser.resizeCanvas) {
if (canvas.width != w) canvas.width = w;
if (canvas.height != h) canvas.height = h;
if (typeof canvas.style != 'undefined') {
canvas.style.removeProperty('width');
canvas.style.removeProperty('height');
}
} else {
if (canvas.width != wNative) canvas.width = wNative;
if (canvas.height != hNative) canvas.height = hNative;
if (typeof canvas.style != 'undefined') {
if (w != wNative || h != hNative) {
canvas.style.setProperty('width', w + 'px', 'important');
canvas.style.setProperty('height', h + 'px', 'important');
} else {
canvas.style.removeProperty('width');
canvas.style.removeProperty('height');
}
}
}
},
wgetRequests: {},
nextWgetRequestHandle: 0,
getNextWgetRequestHandle: function() {
var handle = Browser.nextWgetRequestHandle;
Browser.nextWgetRequestHandle++;
return handle;
}
};
function _time(ptr) {
var ret = (Date.now() / 1000) | 0;
if (ptr) {
HEAP32[ptr >> 2] = ret;
}
return ret;
}
function _js_get_height() {
return Module['imageHeight'];
}
Module['_bitshift64Ashr'] = _bitshift64Ashr;
Module['_bitshift64Lshr'] = _bitshift64Lshr;
function _recv(fd, buf, len, flags) {
var sock = SOCKFS.getSocket(fd);
if (!sock) {
___setErrNo(ERRNO_CODES.EBADF);
return -1;
}
// TODO honor flags
return _read(fd, buf, len);
}
function _pread(fildes, buf, nbyte, offset) {
// ssize_t pread(int fildes, void *buf, size_t nbyte, off_t offset);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/read.html
var stream = FS.getStream(fildes);
if (!stream) {
___setErrNo(ERRNO_CODES.EBADF);
return -1;
}
try {
var slab = HEAP8;
return FS.read(stream, slab, buf, nbyte, offset);
} catch (e) {
FS.handleFSError(e);
return -1;
}
}
function _read(fildes, buf, nbyte) {
// ssize_t read(int fildes, void *buf, size_t nbyte);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/read.html
var stream = FS.getStream(fildes);
if (!stream) {
___setErrNo(ERRNO_CODES.EBADF);
return -1;
}
try {
var slab = HEAP8;
return FS.read(stream, slab, buf, nbyte);
} catch (e) {
FS.handleFSError(e);
return -1;
}
}
var _BDtoILow = true;
var _BDtoIHigh = true;
function _js_output_result(symbol, addon, data) {
var Pointer_stringify = Module['Pointer_stringify'];
Module['outputResult'](Pointer_stringify(symbol), Pointer_stringify(addon), Pointer_stringify(data));
}
function _emscripten_memcpy_big(dest, src, num) {
HEAPU8.set(HEAPU8.subarray(src, src + num), dest);
return dest;
}
Module['_memcpy'] = _memcpy;
function _js_get_width() {
return Module['imageWidth'];
}
function _puts(s) {
// int puts(const char *s);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/puts.html
// NOTE: puts() always writes an extra newline.
var stdout = HEAP32[_stdout >> 2];
var ret = _fputs(s, stdout);
if (ret < 0) {
return ret;
} else {
var newlineRet = _fputc(10, stdout);
return newlineRet < 0 ? -1 : ret + 1;
}
}
function ___errno_location() {
return ___errno_state;
}
function _perror(s) {
// void perror(const char *s);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/perror.html
var stdout = HEAP32[_stdout >> 2];
if (s) {
_fputs(s, stdout);
_fputc(58, stdout);
_fputc(32, stdout);
}
var errnum = HEAP32[___errno_location() >> 2];
_puts(_strerror(errnum));
}
function _sbrk(bytes) {
// Implement a Linux-like 'memory area' for our 'process'.
// Changes the size of the memory area by |bytes|; returns the
// address of the previous top ('break') of the memory area
// We control the "dynamic" memory - DYNAMIC_BASE to DYNAMICTOP
var self = _sbrk;
if (!self.called) {
DYNAMICTOP = alignMemoryPage(DYNAMICTOP); // make sure we start out aligned
self.called = true;
assert(Runtime.dynamicAlloc);
self.alloc = Runtime.dynamicAlloc;
Runtime.dynamicAlloc = function() {
abort('cannot dynamically allocate, sbrk now has control');
};
}
var ret = DYNAMICTOP;
if (bytes != 0) self.alloc(bytes);
return ret; // Previous break location.
}
Module['_memmove'] = _memmove;
var _BItoD = true;
function _pipe(fildes) {
// int pipe(int fildes[2]);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/pipe.html
// It is possible to implement this using two device streams, but pipes make
// little sense in a single-threaded environment, so we do not support them.
___setErrNo(ERRNO_CODES.ENOSYS);
return -1;
}
Module['_strcpy'] = _strcpy;
function _sysconf(name) {
// long sysconf(int name);
// http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html
switch (name) {
case 30:
return PAGE_SIZE;
case 132:
case 133:
case 12:
case 137:
case 138:
case 15:
case 235:
case 16:
case 17:
case 18:
case 19:
case 20:
case 149:
case 13:
case 10:
case 236:
case 153:
case 9:
case 21:
case 22:
case 159:
case 154:
case 14:
case 77:
case 78:
case 139:
case 80:
case 81:
case 79:
case 82:
case 68:
case 67:
case 164:
case 11:
case 29:
case 47:
case 48:
case 95:
case 52:
case 51:
case 46:
return 200809;
case 27:
case 246:
case 127:
case 128:
case 23:
case 24:
case 160:
case 161:
case 181:
case 182:
case 242:
case 183:
case 184:
case 243:
case 244:
case 245:
case 165:
case 178:
case 179:
case 49:
case 50:
case 168:
case 169:
case 175:
case 170:
case 171:
case 172:
case 97:
case 76:
case 32:
case 173:
case 35:
return -1;
case 176:
case 177:
case 7:
case 155:
case 8:
case 157:
case 125:
case 126:
case 92:
case 93:
case 129:
case 130:
case 131:
case 94:
case 91:
return 1;
case 74:
case 60:
case 69:
case 70:
case 4:
return 1024;
case 31:
case 42:
case 72:
return 32;
case 87:
case 26:
case 33:
return 2147483647;
case 34:
case 1:
return 47839;
case 38:
case 36:
return 99;
case 43:
case 37:
return 2048;
case 0:
return 2097152;
case 3:
return 65536;
case 28:
return 32768;
case 44:
return 32767;
case 75:
return 16384;
case 39:
return 1000;
case 89:
return 700;
case 71:
return 256;
case 40:
return 255;
case 2:
return 100;
case 180:
return 64;
case 25:
return 20;
case 5:
return 16;
case 6:
return 6;
case 73:
return 4;
case 84: {
if (typeof navigator === 'object') return navigator['hardwareConcurrency'] || 1;
return 1;
}
}
___setErrNo(ERRNO_CODES.EINVAL);
return -1;
}
___errno_state = Runtime.staticAlloc(4);
HEAP32[___errno_state >> 2] = 0;
FS.staticInit();
__ATINIT__.unshift({
func: function() {
if (!Module['noFSInit'] && !FS.init.initialized) FS.init();
}
});
__ATMAIN__.push({
func: function() {
FS.ignorePermissions = false;
}
});
__ATEXIT__.push({
func: function() {
FS.quit();
}
});
Module['FS_createFolder'] = FS.createFolder;
Module['FS_createPath'] = FS.createPath;
Module['FS_createDataFile'] = FS.createDataFile;
Module['FS_createPreloadedFile'] = FS.createPreloadedFile;
Module['FS_createLazyFile'] = FS.createLazyFile;
Module['FS_createLink'] = FS.createLink;
Module['FS_createDevice'] = FS.createDevice;
__ATINIT__.unshift({
func: function() {
TTY.init();
}
});
__ATEXIT__.push({
func: function() {
TTY.shutdown();
}
});
TTY.utf8 = new Runtime.UTF8Processor();
if (ENVIRONMENT_IS_NODE) {
var fs = require('fs');
NODEFS.staticInit();
}
__ATINIT__.push({
func: function() {
SOCKFS.root = FS.mount(SOCKFS, {}, null);
}
});
_fputc.ret = allocate([0], 'i8', ALLOC_STATIC);
Module['requestFullScreen'] = function Module_requestFullScreen(lockPointer, resizeCanvas) {
Browser.requestFullScreen(lockPointer, resizeCanvas);
};
Module['requestAnimationFrame'] = function Module_requestAnimationFrame(func) {
Browser.requestAnimationFrame(func);
};
Module['setCanvasSize'] = function Module_setCanvasSize(width, height, noUpdates) {
Browser.setCanvasSize(width, height, noUpdates);
};
Module['pauseMainLoop'] = function Module_pauseMainLoop() {
Browser.mainLoop.pause();
};
Module['resumeMainLoop'] = function Module_resumeMainLoop() {
Browser.mainLoop.resume();
};
Module['getUserMedia'] = function Module_getUserMedia() {
Browser.getUserMedia();
};
STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
staticSealed = true; // seal the static portion of memory
STACK_MAX = STACK_BASE + TOTAL_STACK;
DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX);
assert(DYNAMIC_BASE < TOTAL_MEMORY, 'TOTAL_MEMORY not big enough for stack');
var ctlz_i8 = allocate(
[
8,
7,
6,
6,
5,
5,
5,
5,
4,
4,
4,
4,
4,
4,
4,
4,
3,
3,
3,
3,
3,
3,
3,
3,
3,
3,
3,
3,
3,
3,
3,
3,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
'i8',
ALLOC_DYNAMIC
);
var cttz_i8 = allocate(
[
8,
0,
1,
0,
2,
0,
1,
0,
3,
0,
1,
0,
2,
0,
1,
0,
4,
0,
1,
0,
2,
0,
1,
0,
3,
0,
1,
0,
2,
0,
1,
0,
5,
0,
1,
0,
2,
0,
1,
0,
3,
0,
1,
0,
2,
0,
1,
0,
4,
0,
1,
0,
2,
0,
1,
0,
3,
0,
1,
0,
2,
0,
1,
0,
6,
0,
1,
0,
2,
0,
1,
0,
3,
0,
1,
0,
2,
0,
1,
0,
4,
0,
1,
0,
2,
0,
1,
0,
3,
0,
1,
0,
2,
0,
1,
0,
5,
0,
1,
0,
2,
0,
1,
0,
3,
0,
1,
0,
2,
0,
1,
0,
4,
0,
1,
0,
2,
0,
1,
0,
3,
0,
1,
0,
2,
0,
1,
0,
7,
0,
1,
0,
2,
0,
1,
0,
3,
0,
1,
0,
2,
0,
1,
0,
4,
0,
1,
0,
2,
0,
1,
0,
3,
0,
1,
0,
2,
0,
1,
0,
5,
0,
1,
0,
2,
0,
1,
0,
3,
0,
1,
0,
2,
0,
1,
0,
4,
0,
1,
0,
2,
0,
1,
0,
3,
0,
1,
0,
2,
0,
1,
0,
6,
0,
1,
0,
2,
0,
1,
0,
3,
0,
1,
0,
2,
0,
1,
0,
4,
0,
1,
0,
2,
0,
1,
0,
3,
0,
1,
0,
2,
0,
1,
0,
5,
0,
1,
0,
2,
0,
1,
0,
3,
0,
1,
0,
2,
0,
1,
0,
4,
0,
1,
0,
2,
0,
1,
0,
3,
0,
1,
0,
2,
0,
1,
0
],
'i8',
ALLOC_DYNAMIC
);
function invoke_iiii(index, a1, a2, a3) {
try {
return Module['dynCall_iiii'](index, a1, a2, a3);
} catch (e) {
if (typeof e !== 'number' && e !== 'longjmp') throw e;
asm['setThrew'](1, 0);
}
}
function invoke_vi(index, a1) {
try {
Module['dynCall_vi'](index, a1);
} catch (e) {
if (typeof e !== 'number' && e !== 'longjmp') throw e;
asm['setThrew'](1, 0);
}
}
function invoke_vii(index, a1, a2) {
try {
Module['dynCall_vii'](index, a1, a2);
} catch (e) {
if (typeof e !== 'number' && e !== 'longjmp') throw e;
asm['setThrew'](1, 0);
}
}
function invoke_ii(index, a1) {
try {
return Module['dynCall_ii'](index, a1);
} catch (e) {
if (typeof e !== 'number' && e !== 'longjmp') throw e;
asm['setThrew'](1, 0);
}
}
function invoke_iii(index, a1, a2) {
try {
return Module['dynCall_iii'](index, a1, a2);
} catch (e) {
if (typeof e !== 'number' && e !== 'longjmp') throw e;
asm['setThrew'](1, 0);
}
}
function invoke_viiii(index, a1, a2, a3, a4) {
try {
Module['dynCall_viiii'](index, a1, a2, a3, a4);
} catch (e) {
if (typeof e !== 'number' && e !== 'longjmp') throw e;
asm['setThrew'](1, 0);
}
}
Module.asmGlobalArg = {
Math: Math,
Int8Array: Int8Array,
Int16Array: Int16Array,
Int32Array: Int32Array,
Uint8Array: Uint8Array,
Uint16Array: Uint16Array,
Uint32Array: Uint32Array,
Float32Array: Float32Array,
Float64Array: Float64Array
};
Module.asmLibraryArg = {
abort: abort,
assert: assert,
min: Math_min,
invoke_iiii: invoke_iiii,
invoke_vi: invoke_vi,
invoke_vii: invoke_vii,
invoke_ii: invoke_ii,
invoke_iii: invoke_iii,
invoke_viiii: invoke_viiii,
_emscripten_get_now_is_monotonic: _emscripten_get_now_is_monotonic,
_send: _send,
_pipe: _pipe,
_emscripten_set_main_loop_timing: _emscripten_set_main_loop_timing,
___assert_fail: ___assert_fail,
_js_get_height: _js_get_height,
_usleep: _usleep,
_fflush: _fflush,
_clock_gettime: _clock_gettime,
_pwrite: _pwrite,
_strerror_r: _strerror_r,
_open: _open,
_sbrk: _sbrk,
_strerror: _strerror,
_emscripten_get_now: _emscripten_get_now,
_emscripten_memcpy_big: _emscripten_memcpy_big,
_fileno: _fileno,
_perror: _perror,
_sysconf: _sysconf,
_close: _close,
_nanosleep: _nanosleep,
_js_read_image: _js_read_image,
_pread: _pread,
_puts: _puts,
_mkport: _mkport,
_fclose: _fclose,
_poll: _poll,
__reallyNegative: __reallyNegative,
_write: _write,
_fsync: _fsync,
___errno_location: ___errno_location,
_js_get_width: _js_get_width,
_recv: _recv,
_fputc: _fputc,
_read: _read,
_emscripten_set_main_loop: _emscripten_set_main_loop,
_abort: _abort,
_fwrite: _fwrite,
_time: _time,
_fprintf: _fprintf,
_js_output_result: _js_output_result,
__formatString: __formatString,
_fputs: _fputs,
_fopen: _fopen,
___setErrNo: ___setErrNo,
STACKTOP: STACKTOP,
STACK_MAX: STACK_MAX,
tempDoublePtr: tempDoublePtr,
ABORT: ABORT,
cttz_i8: cttz_i8,
ctlz_i8: ctlz_i8,
NaN: NaN,
Infinity: Infinity,
_stderr: _stderr
};
// EMSCRIPTEN_START_ASM
var asm = (function(global, env, buffer) {
'use asm';
var HEAP8 = new global.Int8Array(buffer);
var HEAP16 = new global.Int16Array(buffer);
var HEAP32 = new global.Int32Array(buffer);
var HEAPU8 = new global.Uint8Array(buffer);
var HEAPU16 = new global.Uint16Array(buffer);
var HEAPU32 = new global.Uint32Array(buffer);
var HEAPF32 = new global.Float32Array(buffer);
var HEAPF64 = new global.Float64Array(buffer);
var STACKTOP = env.STACKTOP | 0;
var STACK_MAX = env.STACK_MAX | 0;
var tempDoublePtr = env.tempDoublePtr | 0;
var ABORT = env.ABORT | 0;
var cttz_i8 = env.cttz_i8 | 0;
var ctlz_i8 = env.ctlz_i8 | 0;
var _stderr = env._stderr | 0;
var __THREW__ = 0;
var threwValue = 0;
var setjmpId = 0;
var undef = 0;
var nan = +env.NaN,
inf = +env.Infinity;
var tempInt = 0,
tempBigInt = 0,
tempBigIntP = 0,
tempBigIntS = 0,
tempBigIntR = 0.0,
tempBigIntI = 0,
tempBigIntD = 0,
tempValue = 0,
tempDouble = 0.0;
var tempRet0 = 0;
var tempRet1 = 0;
var tempRet2 = 0;
var tempRet3 = 0;
var tempRet4 = 0;
var tempRet5 = 0;
var tempRet6 = 0;
var tempRet7 = 0;
var tempRet8 = 0;
var tempRet9 = 0;
var Math_floor = global.Math.floor;
var Math_abs = global.Math.abs;
var Math_sqrt = global.Math.sqrt;
var Math_pow = global.Math.pow;
var Math_cos = global.Math.cos;
var Math_sin = global.Math.sin;
var Math_tan = global.Math.tan;
var Math_acos = global.Math.acos;
var Math_asin = global.Math.asin;
var Math_atan = global.Math.atan;
var Math_atan2 = global.Math.atan2;
var Math_exp = global.Math.exp;
var Math_log = global.Math.log;
var Math_ceil = global.Math.ceil;
var Math_imul = global.Math.imul;
var abort = env.abort;
var assert = env.assert;
var Math_min = env.min;
var invoke_iiii = env.invoke_iiii;
var invoke_vi = env.invoke_vi;
var invoke_vii = env.invoke_vii;
var invoke_ii = env.invoke_ii;
var invoke_iii = env.invoke_iii;
var invoke_viiii = env.invoke_viiii;
var _emscripten_get_now_is_monotonic = env._emscripten_get_now_is_monotonic;
var _send = env._send;
var _pipe = env._pipe;
var _emscripten_set_main_loop_timing = env._emscripten_set_main_loop_timing;
var ___assert_fail = env.___assert_fail;
var _js_get_height = env._js_get_height;
var _usleep = env._usleep;
var _fflush = env._fflush;
var _clock_gettime = env._clock_gettime;
var _pwrite = env._pwrite;
var _strerror_r = env._strerror_r;
var _open = env._open;
var _sbrk = env._sbrk;
var _strerror = env._strerror;
var _emscripten_get_now = env._emscripten_get_now;
var _emscripten_memcpy_big = env._emscripten_memcpy_big;
var _fileno = env._fileno;
var _perror = env._perror;
var _sysconf = env._sysconf;
var _close = env._close;
var _nanosleep = env._nanosleep;
var _js_read_image = env._js_read_image;
var _pread = env._pread;
var _puts = env._puts;
var _mkport = env._mkport;
var _fclose = env._fclose;
var _poll = env._poll;
var __reallyNegative = env.__reallyNegative;
var _write = env._write;
var _fsync = env._fsync;
var ___errno_location = env.___errno_location;
var _js_get_width = env._js_get_width;
var _recv = env._recv;
var _fputc = env._fputc;
var _read = env._read;
var _emscripten_set_main_loop = env._emscripten_set_main_loop;
var _abort = env._abort;
var _fwrite = env._fwrite;
var _time = env._time;
var _fprintf = env._fprintf;
var _js_output_result = env._js_output_result;
var __formatString = env.__formatString;
var _fputs = env._fputs;
var _fopen = env._fopen;
var ___setErrNo = env.___setErrNo;
var tempFloat = 0.0;
// EMSCRIPTEN_START_FUNCS
function stackAlloc(size) {
size = size | 0;
var ret = 0;
ret = STACKTOP;
STACKTOP = (STACKTOP + size) | 0;
STACKTOP = (STACKTOP + 15) & -16;
return ret | 0;
}
function stackSave() {
return STACKTOP | 0;
}
function stackRestore(top) {
top = top | 0;
STACKTOP = top;
}
function setThrew(threw, value) {
threw = threw | 0;
value = value | 0;
if ((__THREW__ | 0) == 0) {
__THREW__ = threw;
threwValue = value;
}
}
function copyTempFloat(ptr) {
ptr = ptr | 0;
HEAP8[tempDoublePtr >> 0] = HEAP8[ptr >> 0];
HEAP8[(tempDoublePtr + 1) >> 0] = HEAP8[(ptr + 1) >> 0];
HEAP8[(tempDoublePtr + 2) >> 0] = HEAP8[(ptr + 2) >> 0];
HEAP8[(tempDoublePtr + 3) >> 0] = HEAP8[(ptr + 3) >> 0];
}
function copyTempDouble(ptr) {
ptr = ptr | 0;
HEAP8[tempDoublePtr >> 0] = HEAP8[ptr >> 0];
HEAP8[(tempDoublePtr + 1) >> 0] = HEAP8[(ptr + 1) >> 0];
HEAP8[(tempDoublePtr + 2) >> 0] = HEAP8[(ptr + 2) >> 0];
HEAP8[(tempDoublePtr + 3) >> 0] = HEAP8[(ptr + 3) >> 0];
HEAP8[(tempDoublePtr + 4) >> 0] = HEAP8[(ptr + 4) >> 0];
HEAP8[(tempDoublePtr + 5) >> 0] = HEAP8[(ptr + 5) >> 0];
HEAP8[(tempDoublePtr + 6) >> 0] = HEAP8[(ptr + 6) >> 0];
HEAP8[(tempDoublePtr + 7) >> 0] = HEAP8[(ptr + 7) >> 0];
}
function setTempRet0(value) {
value = value | 0;
tempRet0 = value;
}
function getTempRet0() {
return tempRet0 | 0;
}
function _main($argc, $argv) {
$argc = $argc | 0;
$argv = $argv | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0;
var $3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$sym$01 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = _zbar_processor_create(0) | 0;
HEAP32[8 >> 2] = $0;
$1 = ($0 | 0) == (0 | 0);
if ($1) {
___assert_fail(16 | 0, 32 | 0, 33, 64 | 0);
// unreachable;
}
$2 = _zbar_processor_init($0, 0, 0) | 0;
$3 = ($2 | 0) == 0;
if (!$3) {
$4 = HEAP32[8 >> 2] | 0;
_zbar_processor_error_spew($4);
$$0 = 1;
STACKTOP = sp;
return $$0 | 0;
}
$5 = _zbar_image_create() | 0;
$6 = ($5 | 0) == (0 | 0);
if ($6) {
___assert_fail(72 | 0, 32 | 0, 40, 64 | 0);
// unreachable;
}
_zbar_image_set_format($5, 808466521);
$7 = _js_get_width() | 0;
$8 = _js_get_height() | 0;
_zbar_image_set_size($5, $7, $8);
$9 = Math_imul($8, $7) | 0;
$10 = _malloc($9) | 0;
_zbar_image_set_data($5, $10, $9, 1);
_js_read_image($10 | 0, $9 | 0) | 0;
$11 = HEAP32[8 >> 2] | 0;
_zbar_process_image($11, $5) | 0;
$12 = _zbar_image_first_symbol($5) | 0;
$13 = ($12 | 0) == (0 | 0);
if (!$13) {
$sym$01 = $12;
while (1) {
$14 = _zbar_symbol_get_type($sym$01) | 0;
$15 = ($14 | 0) == 1;
if (!$15) {
$16 = _zbar_get_symbol_name($14) | 0;
$17 = _zbar_get_addon_name($14) | 0;
$18 = _zbar_symbol_get_data($sym$01) | 0;
_js_output_result($16 | 0, $17 | 0, $18 | 0);
}
$19 = _zbar_symbol_next($sym$01) | 0;
$20 = ($19 | 0) == (0 | 0);
if ($20) {
break;
} else {
$sym$01 = $19;
}
}
}
_zbar_image_destroy($5);
$21 = HEAP32[8 >> 2] | 0;
$22 = _zbar_processor_is_visible($21) | 0;
$23 = ($22 | 0) == 0;
if (!$23) {
$24 = HEAP32[8 >> 2] | 0;
_zbar_processor_user_wait($24, -1) | 0;
}
$25 = HEAP32[8 >> 2] | 0;
_zbar_processor_destroy($25);
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
function _zbar_processor_error_spew($processor) {
$processor = $processor | 0;
var label = 0,
sp = 0;
sp = STACKTOP;
__zbar_error_spew($processor, 0) | 0;
STACKTOP = sp;
return;
}
function __zbar_error_spew($container, $verbosity) {
$container = $container | 0;
$verbosity = $verbosity | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP32[$container >> 2] | 0;
$1 = ($0 | 0) == 1381123450;
if ($1) {
$2 = HEAP32[_stderr >> 2] | 0;
$3 = __zbar_error_string($container, 0) | 0;
_fputs($3 | 0, $2 | 0) | 0;
$4 = ($container + 16) | 0;
$5 = HEAP32[$4 >> 2] | 0;
$6 = (0 - $5) | 0;
STACKTOP = sp;
return $6 | 0;
} else {
___assert_fail(88 | 0, 120 | 0, 83, 136 | 0);
// unreachable;
}
return 0 | 0;
}
function __zbar_error_string($container, $verbosity) {
$container = $container | 0;
$verbosity = $verbosity | 0;
var $$ = 0,
$$0 = 0,
$$off = 0,
$$pn = 0,
$$pre = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0;
var $22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0;
var $40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0;
var $59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0;
var $77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$9 = 0,
$len$0 = 0,
$len$1 = 0,
$leninc = 0,
$mod$0 = 0,
$sev$0 = 0,
$strlen = 0,
$type$0 = 0,
$vararg_buffer10 = 0,
$vararg_ptr1 = 0,
$vararg_ptr13 = 0,
$vararg_ptr2 = 0,
$vararg_ptr3 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$vararg_buffer10 = sp;
$0 = HEAP32[$container >> 2] | 0;
$1 = ($0 | 0) == 1381123450;
if (!$1) {
___assert_fail(88 | 0, 120 | 0, 107, 200 | 0);
// unreachable;
}
$2 = ($container + 16) | 0;
$3 = HEAP32[$2 >> 2] | 0;
$$off = ($3 + 2) | 0;
$4 = $$off >>> 0 < 5;
if ($4) {
$5 = (224 + ($$off << 2)) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$sev$0 = $6;
} else {
$sev$0 = 712;
}
$7 = ($container + 4) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = $8 >>> 0 < 4;
if ($9) {
$10 = (248 + ($8 << 2)) | 0;
$11 = HEAP32[$10 >> 2] | 0;
$mod$0 = $11;
} else {
$mod$0 = 272;
}
$12 = ($container + 24) | 0;
$13 = HEAP32[$12 >> 2] | 0;
$14 = ($13 | 0) == (0 | 0);
$$ = $14 ? 272 : $13;
$15 = ($container + 20) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = $16 >>> 0 < 12;
if ($17) {
$18 = (288 + ($16 << 2)) | 0;
$19 = HEAP32[$18 >> 2] | 0;
$type$0 = $19;
} else {
$type$0 = 632;
}
$20 = _strlen($$ | 0) | 0;
$21 = ($20 + 77) | 0;
$22 = ($container + 8) | 0;
$23 = HEAP32[$22 >> 2] | 0;
$24 = _realloc($23, $21) | 0;
HEAP32[$22 >> 2] = $24;
HEAP32[$vararg_buffer10 >> 2] = $sev$0;
$vararg_ptr1 = ($vararg_buffer10 + 4) | 0;
HEAP32[$vararg_ptr1 >> 2] = $mod$0;
$vararg_ptr2 = ($vararg_buffer10 + 8) | 0;
HEAP32[$vararg_ptr2 >> 2] = $$;
$vararg_ptr3 = ($vararg_buffer10 + 12) | 0;
HEAP32[$vararg_ptr3 >> 2] = $type$0;
$25 = _sprintf($24, 168, $vararg_buffer10) | 0;
$26 = ($25 | 0) < 1;
if ($26) {
$$0 = 272;
STACKTOP = sp;
return $$0 | 0;
}
$27 = ($container + 28) | 0;
$28 = HEAP32[$27 >> 2] | 0;
$29 = ($28 | 0) == (0 | 0);
if ($29) {
$len$1 = $25;
} else {
$30 = _strlen($28 | 0) | 0;
$31 = ($30 + $25) | 0;
$32 = ($31 + 1) | 0;
$33 = _strstr($28, 160) | 0;
$34 = ($33 | 0) == (0 | 0);
do {
if ($34) {
$48 = _strstr($28, 352) | 0;
$49 = ($48 | 0) == (0 | 0);
if ($49) {
$50 = _strstr($28, 360) | 0;
$51 = ($50 | 0) == (0 | 0);
if ($51) {
$60 = HEAP32[$22 >> 2] | 0;
$61 = _realloc($60, $32) | 0;
HEAP32[$22 >> 2] = $61;
$62 = ($61 + $25) | 0;
$63 = HEAP32[$27 >> 2] | 0;
$strlen = _strlen($63 | 0) | 0;
$leninc = ($strlen + 1) | 0;
_memcpy($62 | 0, $63 | 0, $leninc | 0) | 0;
$$pn = $strlen;
break;
}
}
$52 = HEAP32[$22 >> 2] | 0;
$53 = ($31 + 33) | 0;
$54 = _realloc($52, $53) | 0;
HEAP32[$22 >> 2] = $54;
$55 = ($54 + $25) | 0;
$56 = HEAP32[$27 >> 2] | 0;
$57 = ($container + 36) | 0;
$58 = HEAP32[$57 >> 2] | 0;
HEAP32[$vararg_buffer10 >> 2] = $58;
$59 = _sprintf($55, $56, $vararg_buffer10) | 0;
$$pn = $59;
} else {
$35 = ($container + 32) | 0;
$36 = HEAP32[$35 >> 2] | 0;
$37 = ($36 | 0) == (0 | 0);
if ($37) {
$38 = ___strdup(344) | 0;
HEAP32[$35 >> 2] = $38;
$40 = $38;
} else {
$40 = $36;
}
$39 = HEAP32[$22 >> 2] | 0;
$41 = _strlen($40 | 0) | 0;
$42 = ($41 + $32) | 0;
$43 = _realloc($39, $42) | 0;
HEAP32[$22 >> 2] = $43;
$44 = ($43 + $25) | 0;
$45 = HEAP32[$27 >> 2] | 0;
$46 = HEAP32[$35 >> 2] | 0;
HEAP32[$vararg_buffer10 >> 2] = $46;
$47 = _sprintf($44, $45, $vararg_buffer10) | 0;
$$pn = $47;
}
} while (0);
$len$0 = ($$pn + $25) | 0;
$64 = ($len$0 | 0) < 1;
if ($64) {
$$0 = 272;
STACKTOP = sp;
return $$0 | 0;
} else {
$len$1 = $len$0;
}
}
$65 = HEAP32[$15 >> 2] | 0;
$66 = ($65 | 0) == 5;
if ($66) {
$67 = ($container + 12) | 0;
$68 = HEAP32[$67 >> 2] | 0;
$69 = _strerror($68 | 0) | 0;
$70 = HEAP32[$22 >> 2] | 0;
$71 = ($len$1 + 10) | 0;
$72 = _strlen($69 | 0) | 0;
$73 = ($71 + $72) | 0;
$74 = _realloc($70, $73) | 0;
HEAP32[$22 >> 2] = $74;
$75 = ($74 + $len$1) | 0;
$76 = HEAP32[$67 >> 2] | 0;
HEAP32[$vararg_buffer10 >> 2] = $69;
$vararg_ptr13 = ($vararg_buffer10 + 4) | 0;
HEAP32[$vararg_ptr13 >> 2] = $76;
_sprintf($75, 368, $vararg_buffer10) | 0;
$$pre = HEAP32[$22 >> 2] | 0;
$$0 = $$pre;
STACKTOP = sp;
return $$0 | 0;
} else {
$77 = HEAP32[$22 >> 2] | 0;
$78 = ($len$1 + 2) | 0;
$79 = _realloc($77, $78) | 0;
HEAP32[$22 >> 2] = $79;
$80 = ($79 + $len$1) | 0;
HEAP8[$80 >> 0] = 10 & 255;
HEAP8[($80 + 1) >> 0] = 10 >> 8;
$$0 = $79;
STACKTOP = sp;
return $$0 | 0;
}
return 0 | 0;
}
function _zbar_image_create() {
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = _calloc(1, 68) | 0;
$1 = ($0 + 44) | 0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($2 + 1) | 0;
HEAP32[$1 >> 2] = $3;
$4 = ($2 | 0) > -2;
if ($4) {
$5 = ($0 + 52) | 0;
HEAP32[$5 >> 2] = -1;
STACKTOP = sp;
return $0 | 0;
} else {
___assert_fail(984 | 0, 992 | 0, 87, 1008 | 0);
// unreachable;
}
return 0 | 0;
}
function __zbar_image_free($img) {
$img = $img | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($img + 64) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == (0 | 0);
if (!$2) {
_zbar_symbol_set_ref($1, -1);
}
_free($img);
STACKTOP = sp;
return;
}
function _zbar_image_destroy($img) {
$img = $img | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($img + 44) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 + -1) | 0;
HEAP32[$0 >> 2] = $2;
$3 = ($1 | 0) > 0;
if (!$3) {
___assert_fail(984 | 0, 992 | 0, 87, 1008 | 0);
// unreachable;
}
$4 = ($2 | 0) == 0;
if (!$4) {
STACKTOP = sp;
return;
}
$5 = ($img + 40) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($6 | 0) == (0 | 0);
if (!$7) {
FUNCTION_TABLE_vi[$6 & 7]($img);
}
$8 = ($img + 48) | 0;
$9 = HEAP32[$8 >> 2] | 0;
$10 = ($9 | 0) == (0 | 0);
if (!$10) {
STACKTOP = sp;
return;
}
$11 = ($img + 64) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($12 | 0) == (0 | 0);
if (!$13) {
_zbar_symbol_set_ref($12, -1);
}
_free($img);
STACKTOP = sp;
return;
}
function _zbar_image_get_format($img) {
$img = $img | 0;
var $0 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP32[$img >> 2] | 0;
STACKTOP = sp;
return $0 | 0;
}
function _zbar_image_get_width($img) {
$img = $img | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($img + 4) | 0;
$1 = HEAP32[$0 >> 2] | 0;
STACKTOP = sp;
return $1 | 0;
}
function _zbar_image_get_height($img) {
$img = $img | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($img + 8) | 0;
$1 = HEAP32[$0 >> 2] | 0;
STACKTOP = sp;
return $1 | 0;
}
function _zbar_image_get_data($img) {
$img = $img | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($img + 12) | 0;
$1 = HEAP32[$0 >> 2] | 0;
STACKTOP = sp;
return $1 | 0;
}
function _zbar_image_set_format($img, $fmt) {
$img = $img | 0;
$fmt = $fmt | 0;
var label = 0,
sp = 0;
sp = STACKTOP;
HEAP32[$img >> 2] = $fmt;
STACKTOP = sp;
return;
}
function _zbar_image_set_size($img, $w, $h) {
$img = $img | 0;
$w = $w | 0;
$h = $h | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($img + 24) | 0;
HEAP32[$0 >> 2] = 0;
$1 = ($img + 20) | 0;
HEAP32[$1 >> 2] = 0;
$2 = ($img + 28) | 0;
HEAP32[$2 >> 2] = $w;
$3 = ($img + 4) | 0;
HEAP32[$3 >> 2] = $w;
$4 = ($img + 32) | 0;
HEAP32[$4 >> 2] = $h;
$5 = ($img + 8) | 0;
HEAP32[$5 >> 2] = $h;
STACKTOP = sp;
return;
}
function _zbar_image_set_crop($img, $x, $y, $w, $h) {
$img = $img | 0;
$x = $x | 0;
$y = $y | 0;
$w = $w | 0;
$h = $h | 0;
var $$02 = 0,
$$03 = 0,
$$x = 0,
$$y = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0;
var label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($img + 4) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = $1 >>> 0 < $x >>> 0;
$$x = $2 ? $1 : $x;
$3 = ($$x + $w) | 0;
$4 = $3 >>> 0 > $1 >>> 0;
$5 = ($1 - $$x) | 0;
$$03 = $4 ? $5 : $w;
$6 = ($img + 20) | 0;
HEAP32[$6 >> 2] = $$x;
$7 = ($img + 28) | 0;
HEAP32[$7 >> 2] = $$03;
$8 = ($img + 8) | 0;
$9 = HEAP32[$8 >> 2] | 0;
$10 = $9 >>> 0 < $y >>> 0;
$$y = $10 ? $9 : $y;
$11 = ($$y + $h) | 0;
$12 = $11 >>> 0 > $9 >>> 0;
$13 = ($9 - $$y) | 0;
$$02 = $12 ? $13 : $h;
$14 = ($img + 24) | 0;
HEAP32[$14 >> 2] = $$y;
$15 = ($img + 32) | 0;
HEAP32[$15 >> 2] = $$02;
STACKTOP = sp;
return;
}
function _zbar_image_free_data($img) {
$img = $img | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$3 = 0,
$4 = 0,
$5 = 0;
var $6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
dest = 0,
label = 0,
sp = 0,
src = 0,
stop = 0;
sp = STACKTOP;
$0 = ($img | 0) == (0 | 0);
if ($0) {
STACKTOP = sp;
return;
}
$1 = ($img + 48) | 0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($2 | 0) == (0 | 0);
do {
if ($3) {
$16 = ($img + 40) | 0;
$17 = HEAP32[$16 >> 2] | 0;
$18 = ($17 | 0) == (0 | 0);
if (!$18) {
$19 = ($img + 12) | 0;
$20 = HEAP32[$19 >> 2] | 0;
$21 = ($20 | 0) == (0 | 0);
if (!$21) {
$22 = ($17 | 0) == (1 | 0);
if ($22) {
_free($20);
break;
} else {
HEAP32[$16 >> 2] = 1;
FUNCTION_TABLE_vi[$17 & 7]($img);
break;
}
}
}
} else {
$4 = ($img + 44) | 0;
$5 = HEAP32[$4 >> 2] | 0;
$6 = ($5 | 0) == 0;
if ($6) {
___assert_fail(744 | 0, 760 | 0, 154, 776 | 0);
// unreachable;
}
$7 = _calloc(1, 68) | 0;
$8 = ($7 + 44) | 0;
$9 = HEAP32[$8 >> 2] | 0;
$10 = ($9 + 1) | 0;
HEAP32[$8 >> 2] = $10;
$11 = ($9 | 0) > -2;
if ($11) {
dest = ($7 + 0) | 0;
src = ($img + 0) | 0;
stop = (dest + 68) | 0;
do {
HEAP32[dest >> 2] = HEAP32[src >> 2] | 0;
dest = (dest + 4) | 0;
src = (src + 4) | 0;
} while ((dest | 0) < (stop | 0));
$12 = ($7 + 40) | 0;
$13 = HEAP32[$12 >> 2] | 0;
FUNCTION_TABLE_vi[$13 & 7]($7);
$14 = ($img + 40) | 0;
HEAP32[$14 >> 2] = 0;
HEAP32[$1 >> 2] = 0;
$15 = ($img + 52) | 0;
HEAP32[$15 >> 2] = -1;
break;
} else {
___assert_fail(984 | 0, 992 | 0, 87, 1008 | 0);
// unreachable;
}
}
} while (0);
$23 = ($img + 12) | 0;
HEAP32[$23 >> 2] = 0;
STACKTOP = sp;
return;
}
function _zbar_image_set_data($img, $data, $len, $cleanup) {
$img = $img | 0;
$data = $data | 0;
$len = $len | 0;
$cleanup = $cleanup | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
_zbar_image_free_data($img);
$0 = ($img + 12) | 0;
HEAP32[$0 >> 2] = $data;
$1 = ($img + 16) | 0;
HEAP32[$1 >> 2] = $len;
$2 = ($img + 40) | 0;
HEAP32[$2 >> 2] = $cleanup;
STACKTOP = sp;
return;
}
function _zbar_image_first_symbol($img) {
$img = $img | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($img + 64) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == (0 | 0);
if ($2) {
$5 = 0;
} else {
$3 = ($1 + 8) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = $4;
}
STACKTOP = sp;
return $5 | 0;
}
function _zbar_image_write($img, $filebase) {
$img = $img | 0;
$filebase = $filebase | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0;
var $45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$hdr = 0,
$n$0 = 0,
$rc$0 = 0,
$vararg_buffer17 = 0,
$vararg_ptr1 = 0,
$vararg_ptr10 = 0,
$vararg_ptr11 = 0,
$vararg_ptr15 = 0,
$vararg_ptr16 = 0;
var $vararg_ptr20 = 0,
$vararg_ptr21 = 0,
$vararg_ptr5 = 0,
$vararg_ptr9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 32) | 0;
$vararg_buffer17 = sp;
$hdr = (sp + 16) | 0;
$0 = _strlen($filebase | 0) | 0;
$1 = ($0 + 16) | 0;
$2 = _malloc($1) | 0;
_strcpy($2 | 0, $filebase | 0) | 0;
$3 = HEAP32[$img >> 2] | 0;
$4 = $3 & 224;
$5 = $4 >>> 0 > 31;
if ($5) {
HEAP32[$vararg_buffer17 >> 2] = $filebase;
$vararg_ptr1 = ($vararg_buffer17 + 4) | 0;
HEAP32[$vararg_ptr1 >> 2] = $img;
$6 = _snprintf($2, $1, 800, $vararg_buffer17) | 0;
$n$0 = $6;
} else {
HEAP32[$vararg_buffer17 >> 2] = $filebase;
$vararg_ptr5 = ($vararg_buffer17 + 4) | 0;
HEAP32[$vararg_ptr5 >> 2] = $3;
$7 = _snprintf($2, $1, 816, $vararg_buffer17) | 0;
$n$0 = $7;
}
$8 = ($0 + 15) | 0;
$9 = ($n$0 | 0) < ($8 | 0);
if (!$9) {
___assert_fail(832 | 0, 760 | 0, 256, 848 | 0);
// unreachable;
}
$10 = ($2 + $8) | 0;
HEAP8[$10 >> 0] = 0;
$11 = HEAP32[80 >> 2] | 0;
$12 = ($11 | 0) > 0;
if ($12) {
$13 = HEAP32[_stderr >> 2] | 0;
$14 = HEAP32[$img >> 2] | 0;
HEAP32[$vararg_buffer17 >> 2] = 848;
$vararg_ptr9 = ($vararg_buffer17 + 4) | 0;
HEAP32[$vararg_ptr9 >> 2] = $img;
$vararg_ptr10 = ($vararg_buffer17 + 8) | 0;
HEAP32[$vararg_ptr10 >> 2] = $14;
$vararg_ptr11 = ($vararg_buffer17 + 12) | 0;
HEAP32[$vararg_ptr11 >> 2] = $2;
_fprintf($13 | 0, 872 | 0, $vararg_buffer17 | 0) | 0;
}
$15 = _fopen($2 | 0, 912 | 0) | 0;
$16 = ($15 | 0) == (0 | 0);
if ($16) {
$17 = ___errno_location() | 0;
$18 = HEAP32[$17 >> 2] | 0;
$19 = HEAP32[80 >> 2] | 0;
$20 = ($19 | 0) > 0;
if (!$20) {
$rc$0 = $18;
_free($2);
STACKTOP = sp;
return $rc$0 | 0;
}
$21 = HEAP32[_stderr >> 2] | 0;
$22 = _strerror($18 | 0) | 0;
HEAP32[$vararg_buffer17 >> 2] = 848;
$vararg_ptr15 = ($vararg_buffer17 + 4) | 0;
HEAP32[$vararg_ptr15 >> 2] = $2;
$vararg_ptr16 = ($vararg_buffer17 + 8) | 0;
HEAP32[$vararg_ptr16 >> 2] = $22;
_fprintf($21 | 0, 920 | 0, $vararg_buffer17 | 0) | 0;
$rc$0 = $18;
_free($2);
STACKTOP = sp;
return $rc$0 | 0;
}
HEAP32[$hdr >> 2] = 1735223674;
$23 = HEAP32[$img >> 2] | 0;
$24 = ($hdr + 4) | 0;
HEAP32[$24 >> 2] = $23;
$25 = ($img + 4) | 0;
$26 = HEAP32[$25 >> 2] | 0;
$27 = $26 & 65535;
$28 = ($hdr + 8) | 0;
HEAP16[$28 >> 1] = $27;
$29 = ($img + 8) | 0;
$30 = HEAP32[$29 >> 2] | 0;
$31 = $30 & 65535;
$32 = ($hdr + 10) | 0;
HEAP16[$32 >> 1] = $31;
$33 = ($img + 16) | 0;
$34 = HEAP32[$33 >> 2] | 0;
$35 = ($hdr + 12) | 0;
HEAP32[$35 >> 2] = $34;
$36 = _fwrite($hdr | 0, 16, 1, $15 | 0) | 0;
$37 = ($36 | 0) == 1;
if ($37) {
$38 = ($img + 12) | 0;
$39 = HEAP32[$38 >> 2] | 0;
$40 = HEAP32[$33 >> 2] | 0;
$41 = _fwrite($39 | 0, 1, $40 | 0, $15 | 0) | 0;
$42 = HEAP32[$33 >> 2] | 0;
$43 = ($41 | 0) == ($42 | 0);
if ($43) {
$50 = _fclose($15 | 0) | 0;
$rc$0 = $50;
_free($2);
STACKTOP = sp;
return $rc$0 | 0;
}
}
$44 = ___errno_location() | 0;
$45 = HEAP32[$44 >> 2] | 0;
$46 = HEAP32[80 >> 2] | 0;
$47 = ($46 | 0) > 0;
if ($47) {
$48 = HEAP32[_stderr >> 2] | 0;
$49 = _strerror($45 | 0) | 0;
HEAP32[$vararg_buffer17 >> 2] = 848;
$vararg_ptr20 = ($vararg_buffer17 + 4) | 0;
HEAP32[$vararg_ptr20 >> 2] = $2;
$vararg_ptr21 = ($vararg_buffer17 + 8) | 0;
HEAP32[$vararg_ptr21 >> 2] = $49;
_fprintf($48 | 0, 952 | 0, $vararg_buffer17 | 0) | 0;
}
_fclose($15 | 0) | 0;
$rc$0 = $45;
_free($2);
STACKTOP = sp;
return $rc$0 | 0;
}
function __zbar_process_image($proc, $img) {
$proc = $proc | 0;
$img = $img | 0;
var $$0 = 0,
$$01 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0;
var $2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0;
var $38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0;
var $56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0;
var $74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0;
var $92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$format = 0,
$or$cond = 0,
$rc$0 = 0,
$sym$02 = 0,
$vararg_buffer6 = 0,
$vararg_ptr1 = 0,
$vararg_ptr10 = 0,
$vararg_ptr11 = 0,
$vararg_ptr12 = 0,
$vararg_ptr13 = 0,
$vararg_ptr14 = 0,
$vararg_ptr2 = 0;
var $vararg_ptr3 = 0,
$vararg_ptr4 = 0,
$vararg_ptr5 = 0,
$vararg_ptr9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 32) | 0;
$vararg_buffer6 = sp;
$format = (sp + 28) | 0;
$0 = ($proc + 80) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($img | 0) == (0 | 0);
do {
if ($2) {
$$01 = 0;
} else {
$3 = ($proc + 100) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($4 | 0) == 0;
if (!$5) {
$6 = ($proc + 48) | 0;
$7 = HEAP32[$6 >> 2] | 0;
$8 = ($7 + 40) | 0;
$9 = HEAP32[$8 >> 2] | 0;
_zbar_image_write($9, 1024) | 0;
HEAP32[$3 >> 2] = 0;
}
$10 = _zbar_image_get_format($img) | 0;
HEAP32[$format >> 2] = $10;
$11 = HEAP32[80 >> 2] | 0;
$12 = ($11 | 0) > 15;
if ($12) {
$13 = HEAP32[_stderr >> 2] | 0;
$14 = _zbar_image_get_width($img) | 0;
$15 = _zbar_image_get_height($img) | 0;
$16 = _zbar_image_get_data($img) | 0;
HEAP32[$vararg_buffer6 >> 2] = 1072;
$vararg_ptr1 = ($vararg_buffer6 + 4) | 0;
HEAP32[$vararg_ptr1 >> 2] = $format;
$vararg_ptr2 = ($vararg_buffer6 + 8) | 0;
HEAP32[$vararg_ptr2 >> 2] = $10;
$vararg_ptr3 = ($vararg_buffer6 + 12) | 0;
HEAP32[$vararg_ptr3 >> 2] = $14;
$vararg_ptr4 = ($vararg_buffer6 + 16) | 0;
HEAP32[$vararg_ptr4 >> 2] = $15;
$vararg_ptr5 = ($vararg_buffer6 + 20) | 0;
HEAP32[$vararg_ptr5 >> 2] = $16;
_fprintf($13 | 0, 1032 | 0, $vararg_buffer6 | 0) | 0;
}
$17 = _zbar_image_convert($img, 808466521) | 0;
$18 = ($17 | 0) == (0 | 0);
if (!$18) {
$19 = ($proc + 168) | 0;
$20 = HEAP32[$19 >> 2] | 0;
$21 = ($20 | 0) == (0 | 0);
if (!$21) {
_zbar_symbol_set_ref($20, -1);
HEAP32[$19 >> 2] = 0;
}
$22 = ($proc + 52) | 0;
$23 = HEAP32[$22 >> 2] | 0;
_zbar_image_scanner_recycle_image($23, $img);
$24 = HEAP32[$22 >> 2] | 0;
$25 = _zbar_scan_image($24, $17) | 0;
$26 = ($img + 64) | 0;
$27 = HEAP32[$26 >> 2] | 0;
$28 = ($17 + 64) | 0;
$29 = HEAP32[$28 >> 2] | 0;
HEAP32[$26 >> 2] = $29;
HEAP32[$28 >> 2] = $27;
_zbar_image_destroy($17);
$30 = ($25 | 0) < 0;
if (!$30) {
$31 = HEAP32[$22 >> 2] | 0;
$32 = _zbar_image_scanner_get_results($31) | 0;
HEAP32[$19 >> 2] = $32;
$33 = ($32 | 0) == (0 | 0);
if (!$33) {
_zbar_symbol_set_ref($32, 1);
}
$34 = HEAP32[80 >> 2] | 0;
$35 = ($34 | 0) > 7;
if ($35) {
$36 = _zbar_image_first_symbol($img) | 0;
$37 = ($36 | 0) == (0 | 0);
if (!$37) {
$38 = HEAP32[_stderr >> 2] | 0;
$sym$02 = $36;
while (1) {
$39 = _zbar_symbol_get_type($sym$02) | 0;
$40 = _zbar_symbol_get_count($sym$02) | 0;
$41 = HEAP32[80 >> 2] | 0;
$42 = ($41 | 0) > 7;
if ($42) {
$43 = _zbar_get_symbol_name($39) | 0;
$44 = _zbar_symbol_get_data($sym$02) | 0;
$45 = _zbar_symbol_get_loc_size($sym$02) | 0;
$46 = _zbar_symbol_get_orientation($sym$02) | 0;
$47 = _zbar_symbol_get_quality($sym$02) | 0;
$48 = ($40 | 0) < 0;
if ($48) {
$51 = 1144;
} else {
$49 = ($40 | 0) > 0;
$50 = $49 ? 1160 : 1176;
$51 = $50;
}
HEAP32[$vararg_buffer6 >> 2] = 1072;
$vararg_ptr9 = ($vararg_buffer6 + 4) | 0;
HEAP32[$vararg_ptr9 >> 2] = $43;
$vararg_ptr10 = ($vararg_buffer6 + 8) | 0;
HEAP32[$vararg_ptr10 >> 2] = $44;
$vararg_ptr11 = ($vararg_buffer6 + 12) | 0;
HEAP32[$vararg_ptr11 >> 2] = $45;
$vararg_ptr12 = ($vararg_buffer6 + 16) | 0;
HEAP32[$vararg_ptr12 >> 2] = $46;
$vararg_ptr13 = ($vararg_buffer6 + 20) | 0;
HEAP32[$vararg_ptr13 >> 2] = $47;
$vararg_ptr14 = ($vararg_buffer6 + 24) | 0;
HEAP32[$vararg_ptr14 >> 2] = $51;
_fprintf($38 | 0, 1096 | 0, $vararg_buffer6 | 0) | 0;
}
$52 = _zbar_symbol_next($sym$02) | 0;
$53 = ($52 | 0) == (0 | 0);
if ($53) {
break;
} else {
$sym$02 = $52;
}
}
}
}
$54 = ($25 | 0) == 0;
if (!$54) {
__zbar_processor_notify($proc, 2);
$55 = ($proc + 56) | 0;
$56 = HEAP32[$55 >> 2] | 0;
$57 = ($56 | 0) == (0 | 0);
if (!$57) {
$58 = ($proc + 40) | 0;
$59 = HEAP32[$58 >> 2] | 0;
FUNCTION_TABLE_vii[$56 & 0]($img, $59);
}
}
$60 = ($1 | 0) == 0;
if ($60) {
$$01 = $img;
break;
}
$61 = HEAP32[$26 >> 2] | 0;
$62 = _zbar_image_convert($img, $1) | 0;
$63 = ($62 | 0) == (0 | 0);
if (!$63) {
$64 = ($62 + 64) | 0;
HEAP32[$64 >> 2] = $61;
_zbar_symbol_set_ref($61, 1);
$$01 = $62;
break;
}
}
}
$98 = HEAP32[$proc >> 2] | 0;
$99 = ($98 | 0) == 1381123450;
if (!$99) {
___assert_fail(1816 | 0, 1848 | 0, 150, 1880 | 0);
// unreachable;
}
$100 = ($proc + 16) | 0;
HEAP32[$100 >> 2] = -1;
$101 = ($proc + 20) | 0;
HEAP32[$101 >> 2] = 3;
$102 = ($proc + 24) | 0;
HEAP32[$102 >> 2] = 1072;
$103 = ($proc + 28) | 0;
HEAP32[$103 >> 2] = 1184;
$104 = HEAP32[80 >> 2] | 0;
$105 = ($104 | 0) > 0;
if (!$105) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
__zbar_error_spew($proc, 0) | 0;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
} while (0);
$65 = ($proc + 48) | 0;
$66 = HEAP32[$65 >> 2] | 0;
$67 = ($66 | 0) == (0 | 0);
if ($67) {
$rc$0 = 0;
} else {
$68 = _zbar_window_draw($66, $$01) | 0;
$69 = ($68 | 0) == 0;
do {
if (!$69) {
$70 = HEAP32[$65 >> 2] | 0;
$71 = HEAP32[$proc >> 2] | 0;
$72 = ($71 | 0) == 1381123450;
if (!$72) {
___assert_fail(1896 | 0, 1848 | 0, 129, 1928 | 0);
// unreachable;
}
$73 = HEAP32[$70 >> 2] | 0;
$74 = ($73 | 0) == 1381123450;
if ($74) {
$75 = ($70 + 12) | 0;
$76 = HEAP32[$75 >> 2] | 0;
$77 = ($proc + 12) | 0;
HEAP32[$77 >> 2] = $76;
$78 = ($70 + 16) | 0;
$79 = HEAP32[$78 >> 2] | 0;
$80 = ($proc + 16) | 0;
HEAP32[$80 >> 2] = $79;
$81 = ($70 + 20) | 0;
$82 = HEAP32[$81 >> 2] | 0;
$83 = ($proc + 20) | 0;
HEAP32[$83 >> 2] = $82;
$84 = ($70 + 24) | 0;
$85 = HEAP32[$84 >> 2] | 0;
$86 = ($proc + 24) | 0;
HEAP32[$86 >> 2] = $85;
$87 = ($70 + 28) | 0;
$88 = HEAP32[$87 >> 2] | 0;
$89 = ($proc + 28) | 0;
HEAP32[$89 >> 2] = $88;
$90 = ($70 + 32) | 0;
$91 = HEAP32[$90 >> 2] | 0;
$92 = ($proc + 32) | 0;
HEAP32[$92 >> 2] = $91;
HEAP32[$90 >> 2] = 0;
$93 = ($70 + 36) | 0;
$94 = HEAP32[$93 >> 2] | 0;
$95 = ($proc + 36) | 0;
HEAP32[$95 >> 2] = $94;
break;
} else {
___assert_fail(1944 | 0, 1848 | 0, 130, 1928 | 0);
// unreachable;
}
}
} while (0);
__zbar_processor_invalidate($proc) | 0;
$rc$0 = $68;
}
$96 = ($1 | 0) == 0;
$97 = ($$01 | 0) == (0 | 0);
$or$cond = $96 | $97;
if ($or$cond) {
$$0 = $rc$0;
STACKTOP = sp;
return $$0 | 0;
}
_zbar_image_destroy($$01);
$$0 = $rc$0;
STACKTOP = sp;
return $$0 | 0;
}
function _zbar_processor_create($threaded) {
$threaded = $threaded | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = _calloc(1, 200) | 0;
$1 = ($0 | 0) == (0 | 0);
if ($1) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
HEAP32[$0 >> 2] = 1381123450;
$2 = ($0 + 4) | 0;
HEAP32[$2 >> 2] = 0;
$3 = _zbar_image_scanner_create() | 0;
$4 = ($0 + 52) | 0;
HEAP32[$4 >> 2] = $3;
$5 = ($3 | 0) == (0 | 0);
if ($5) {
_free($0);
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
} else {
$6 = ($0 + 88) | 0;
HEAP32[$6 >> 2] = 0;
__zbar_processor_init($0) | 0;
$$0 = $0;
STACKTOP = sp;
return $$0 | 0;
}
return 0 | 0;
}
function _zbar_processor_destroy($proc) {
$proc = $proc | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$28 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$w$01 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
_zbar_processor_init($proc, 0, 0) | 0;
$0 = ($proc + 168) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == (0 | 0);
if (!$2) {
_zbar_symbol_set_ref($1, -1);
HEAP32[$0 >> 2] = 0;
}
$3 = ($proc + 52) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($4 | 0) == (0 | 0);
if (!$5) {
_zbar_image_scanner_destroy($4);
HEAP32[$3 >> 2] = 0;
}
__zbar_processor_cleanup($proc) | 0;
$6 = ($proc + 180) | 0;
$7 = HEAP32[$6 >> 2] | 0;
$8 = ($7 | 0) == (0 | 0);
if (!$8) {
___assert_fail(1208 | 0, 1232 | 0, 303, 1256 | 0);
// unreachable;
}
$9 = ($proc + 184) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($10 | 0) == (0 | 0);
if (!$11) {
___assert_fail(1280 | 0, 1232 | 0, 304, 1256 | 0);
// unreachable;
}
$12 = ($proc + 188) | 0;
$13 = HEAP32[$12 >> 2] | 0;
$14 = ($13 | 0) == (0 | 0);
if (!$14) {
___assert_fail(1304 | 0, 1232 | 0, 305, 1256 | 0);
// unreachable;
}
$15 = ($proc + 192) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = ($16 | 0) == (0 | 0);
if (!$17) {
$w$01 = $16;
while (1) {
$18 = HEAP32[$w$01 >> 2] | 0;
$19 = ($w$01 + 4) | 0;
__zbar_event_destroy($19);
_free($w$01);
$20 = ($18 | 0) == (0 | 0);
if ($20) {
break;
} else {
$w$01 = $18;
}
}
}
$21 = HEAP32[$proc >> 2] | 0;
$22 = ($21 | 0) == 1381123450;
if (!$22) {
___assert_fail(1816 | 0, 1848 | 0, 218, 1864 | 0);
// unreachable;
}
$23 = ($proc + 8) | 0;
$24 = HEAP32[$23 >> 2] | 0;
$25 = ($24 | 0) == (0 | 0);
if (!$25) {
_free($24);
HEAP32[$23 >> 2] = 0;
}
$26 = ($proc + 32) | 0;
$27 = HEAP32[$26 >> 2] | 0;
$28 = ($27 | 0) == (0 | 0);
if ($28) {
_free($proc);
STACKTOP = sp;
return;
}
_free($27);
_free($proc);
STACKTOP = sp;
return;
}
function _zbar_processor_init($proc, $dev, $enable_display) {
$proc = $proc | 0;
$dev = $dev | 0;
$enable_display = $enable_display | 0;
var $$not = 0,
$$pr13$pre = 0,
$$pre = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0;
var $113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0;
var $131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0;
var $15 = 0,
$150 = 0,
$151 = 0,
$152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0;
var $168 = 0,
$169 = 0,
$17 = 0,
$170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0;
var $45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0;
var $63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0;
var $81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0;
var $height$0$i = 0,
$not$ = 0,
$or$cond = 0,
$rc$1 = 0,
$vararg_buffer = 0,
$vararg_ptr1 = 0,
$width$0$i = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$vararg_buffer = sp;
$0 = ($proc + 44) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == (0 | 0);
if (!$2) {
_zbar_processor_set_active($proc, 0) | 0;
}
$3 = ($proc + 48) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($4 | 0) == (0 | 0);
if (!$5) {
$6 = ($proc + 116) | 0;
$7 = HEAP32[$6 >> 2] | 0;
$8 = ($7 | 0) == 0;
if ($8) {
__zbar_processor_close($proc) | 0;
}
}
__zbar_processor_lock($proc) | 0;
$9 = HEAP32[$3 >> 2] | 0;
$10 = ($9 | 0) == (0 | 0);
if (!$10) {
_zbar_window_destroy($9);
HEAP32[$3 >> 2] = 0;
}
$11 = HEAP32[$0 >> 2] | 0;
$12 = ($11 | 0) == (0 | 0);
if (!$12) {
_zbar_video_destroy($11);
HEAP32[$0 >> 2] = 0;
}
$13 = ($dev | 0) != (0 | 0);
$$not = $13 ^ 1;
$14 = ($enable_display | 0) == 0;
$or$cond = $14 & $$not;
if ($or$cond) {
$rc$1 = 0;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$1 | 0;
}
if (!$14) {
$15 = _zbar_window_create() | 0;
HEAP32[$3 >> 2] = $15;
$16 = ($15 | 0) == (0 | 0);
if ($16) {
$17 = HEAP32[$proc >> 2] | 0;
$18 = ($17 | 0) == 1381123450;
if (!$18) {
___assert_fail(1816 | 0, 1848 | 0, 150, 1880 | 0);
// unreachable;
}
$19 = ($proc + 16) | 0;
HEAP32[$19 >> 2] = -2;
$20 = ($proc + 20) | 0;
HEAP32[$20 >> 2] = 1;
$21 = ($proc + 24) | 0;
HEAP32[$21 >> 2] = 1328;
$22 = ($proc + 28) | 0;
HEAP32[$22 >> 2] = 1352;
$23 = HEAP32[80 >> 2] | 0;
$24 = ($23 | 0) > 0;
if (!$24) {
$rc$1 = -1;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$1 | 0;
}
__zbar_error_spew($proc, 0) | 0;
$rc$1 = -1;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$1 | 0;
}
}
do {
if ($13) {
$25 = _zbar_video_create() | 0;
HEAP32[$0 >> 2] = $25;
$26 = ($25 | 0) == (0 | 0);
if ($26) {
$27 = HEAP32[$proc >> 2] | 0;
$28 = ($27 | 0) == 1381123450;
if (!$28) {
___assert_fail(1816 | 0, 1848 | 0, 150, 1880 | 0);
// unreachable;
}
$29 = ($proc + 16) | 0;
HEAP32[$29 >> 2] = -2;
$30 = ($proc + 20) | 0;
HEAP32[$30 >> 2] = 1;
$31 = ($proc + 24) | 0;
HEAP32[$31 >> 2] = 1328;
$32 = ($proc + 28) | 0;
HEAP32[$32 >> 2] = 1384;
$33 = HEAP32[80 >> 2] | 0;
$34 = ($33 | 0) > 0;
if (!$34) {
$rc$1 = -1;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$1 | 0;
}
__zbar_error_spew($proc, 0) | 0;
$rc$1 = -1;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$1 | 0;
}
$35 = ($proc + 60) | 0;
$36 = HEAP32[$35 >> 2] | 0;
$37 = ($proc + 64) | 0;
$38 = HEAP32[$37 >> 2] | 0;
$39 = $36 | $38;
$40 = ($39 | 0) == 0;
if (!$40) {
_zbar_video_request_size($25, $36, $38) | 0;
}
$41 = ($proc + 68) | 0;
$42 = HEAP32[$41 >> 2] | 0;
$43 = ($42 | 0) == 0;
if (!$43) {
$44 = HEAP32[$0 >> 2] | 0;
_zbar_video_request_interface($44, $42) | 0;
}
$45 = ($proc + 72) | 0;
$46 = HEAP32[$45 >> 2] | 0;
$47 = ($46 | 0) == 0;
if ($47) {
label = 29;
} else {
$48 = HEAP32[$0 >> 2] | 0;
$49 = _zbar_video_request_iomode($48, $46) | 0;
$50 = ($49 | 0) == 0;
if ($50) {
label = 29;
}
}
if ((label | 0) == 29) {
$51 = HEAP32[$0 >> 2] | 0;
$52 = _zbar_video_open($51, $dev) | 0;
$53 = ($52 | 0) == 0;
if ($53) {
break;
}
}
$54 = HEAP32[$0 >> 2] | 0;
$55 = HEAP32[$proc >> 2] | 0;
$56 = ($55 | 0) == 1381123450;
if (!$56) {
___assert_fail(1896 | 0, 1848 | 0, 129, 1928 | 0);
// unreachable;
}
$57 = HEAP32[$54 >> 2] | 0;
$58 = ($57 | 0) == 1381123450;
if (!$58) {
___assert_fail(1944 | 0, 1848 | 0, 130, 1928 | 0);
// unreachable;
}
$59 = ($54 + 12) | 0;
$60 = HEAP32[$59 >> 2] | 0;
$61 = ($proc + 12) | 0;
HEAP32[$61 >> 2] = $60;
$62 = ($54 + 16) | 0;
$63 = HEAP32[$62 >> 2] | 0;
$64 = ($proc + 16) | 0;
HEAP32[$64 >> 2] = $63;
$65 = ($54 + 20) | 0;
$66 = HEAP32[$65 >> 2] | 0;
$67 = ($proc + 20) | 0;
HEAP32[$67 >> 2] = $66;
$68 = ($54 + 24) | 0;
$69 = HEAP32[$68 >> 2] | 0;
$70 = ($proc + 24) | 0;
HEAP32[$70 >> 2] = $69;
$71 = ($54 + 28) | 0;
$72 = HEAP32[$71 >> 2] | 0;
$73 = ($proc + 28) | 0;
HEAP32[$73 >> 2] = $72;
$74 = ($54 + 32) | 0;
$75 = HEAP32[$74 >> 2] | 0;
$76 = ($proc + 32) | 0;
HEAP32[$76 >> 2] = $75;
HEAP32[$74 >> 2] = 0;
$77 = ($54 + 36) | 0;
$78 = HEAP32[$77 >> 2] | 0;
$79 = ($proc + 36) | 0;
HEAP32[$79 >> 2] = $78;
$rc$1 = -1;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$1 | 0;
}
} while (0);
$80 = ($proc + 88) | 0;
$81 = HEAP32[$80 >> 2] | 0;
$82 = ($81 | 0) == 0;
L59: do {
if (!$82) {
$83 = HEAP32[$0 >> 2] | 0;
$84 = ($83 | 0) == (0 | 0);
do {
if (!$84) {
$85 = _zbar_video_get_fd($83) | 0;
$86 = ($85 | 0) < 0;
if (!$86) {
$$pr13$pre = HEAP32[$80 >> 2] | 0;
$98 = ($$pr13$pre | 0) == 0;
if ($98) {
break L59;
} else {
break;
}
}
$87 = HEAP32[$proc >> 2] | 0;
$88 = ($87 | 0) == 1381123450;
if (!$88) {
___assert_fail(1816 | 0, 1848 | 0, 150, 1880 | 0);
// unreachable;
}
$89 = ___errno_location() | 0;
$90 = HEAP32[$89 >> 2] | 0;
$91 = ($proc + 12) | 0;
HEAP32[$91 >> 2] = $90;
$92 = ($proc + 16) | 0;
HEAP32[$92 >> 2] = -1;
$93 = ($proc + 20) | 0;
HEAP32[$93 >> 2] = 5;
$94 = ($proc + 24) | 0;
HEAP32[$94 >> 2] = 1328;
$95 = ($proc + 28) | 0;
HEAP32[$95 >> 2] = 1416;
$96 = HEAP32[80 >> 2] | 0;
$97 = ($96 | 0) > 0;
if (!$97) {
$rc$1 = -1;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$1 | 0;
}
__zbar_error_spew($proc, 0) | 0;
$rc$1 = -1;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$1 | 0;
}
} while (0);
$99 = HEAP32[$3 >> 2] | 0;
$100 = ($99 | 0) == (0 | 0);
if ($100) {
$101 = HEAP32[$0 >> 2] | 0;
$not$ = ($101 | 0) == (0 | 0);
if ($not$) {
break;
}
}
$102 = HEAP32[$proc >> 2] | 0;
$103 = ($102 | 0) == 1381123450;
if (!$103) {
___assert_fail(1816 | 0, 1848 | 0, 150, 1880 | 0);
// unreachable;
}
$104 = ___errno_location() | 0;
$105 = HEAP32[$104 >> 2] | 0;
$106 = ($proc + 12) | 0;
HEAP32[$106 >> 2] = $105;
$107 = ($proc + 16) | 0;
HEAP32[$107 >> 2] = -1;
$108 = ($proc + 20) | 0;
HEAP32[$108 >> 2] = 5;
$109 = ($proc + 24) | 0;
HEAP32[$109 >> 2] = 1328;
$110 = ($proc + 28) | 0;
HEAP32[$110 >> 2] = 1440;
$111 = HEAP32[80 >> 2] | 0;
$112 = ($111 | 0) > 0;
if (!$112) {
$rc$1 = -1;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$1 | 0;
}
__zbar_error_spew($proc, 0) | 0;
$rc$1 = -1;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$1 | 0;
}
} while (0);
$113 = HEAP32[$3 >> 2] | 0;
$114 = ($113 | 0) == (0 | 0);
if (!$114) {
$115 = HEAP32[$0 >> 2] | 0;
$116 = ($115 | 0) == (0 | 0);
if ($116) {
$height$0$i = 480;
$width$0$i = 640;
} else {
$117 = _zbar_video_get_width($115) | 0;
$118 = HEAP32[$0 >> 2] | 0;
$119 = _zbar_video_get_height($118) | 0;
$height$0$i = $119;
$width$0$i = $117;
}
$120 = __zbar_processor_open($proc, 1792, $width$0$i, $height$0$i) | 0;
$121 = ($120 | 0) == 0;
if (!$121) {
$rc$1 = $120;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$1 | 0;
}
}
$122 = HEAP32[$0 >> 2] | 0;
$123 = ($122 | 0) == (0 | 0);
if ($123) {
$rc$1 = 0;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$1 | 0;
}
$124 = ($proc + 76) | 0;
$125 = HEAP32[$124 >> 2] | 0;
$126 = ($125 | 0) == 0;
if (!$126) {
$127 = _zbar_video_init($122, $125) | 0;
$128 = ($127 | 0) == 0;
if ($128) {
$rc$1 = 0;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$1 | 0;
}
$129 = HEAP32[$0 >> 2] | 0;
$130 = HEAP32[$proc >> 2] | 0;
$131 = ($130 | 0) == 1381123450;
if (!$131) {
___assert_fail(1896 | 0, 1848 | 0, 129, 1928 | 0);
// unreachable;
}
$132 = HEAP32[$129 >> 2] | 0;
$133 = ($132 | 0) == 1381123450;
if (!$133) {
___assert_fail(1944 | 0, 1848 | 0, 130, 1928 | 0);
// unreachable;
}
$134 = ($129 + 12) | 0;
$135 = HEAP32[$134 >> 2] | 0;
$136 = ($proc + 12) | 0;
HEAP32[$136 >> 2] = $135;
$137 = ($129 + 16) | 0;
$138 = HEAP32[$137 >> 2] | 0;
$139 = ($proc + 16) | 0;
HEAP32[$139 >> 2] = $138;
$140 = ($129 + 20) | 0;
$141 = HEAP32[$140 >> 2] | 0;
$142 = ($proc + 20) | 0;
HEAP32[$142 >> 2] = $141;
$143 = ($129 + 24) | 0;
$144 = HEAP32[$143 >> 2] | 0;
$145 = ($proc + 24) | 0;
HEAP32[$145 >> 2] = $144;
$146 = ($129 + 28) | 0;
$147 = HEAP32[$146 >> 2] | 0;
$148 = ($proc + 28) | 0;
HEAP32[$148 >> 2] = $147;
$149 = ($129 + 32) | 0;
$150 = HEAP32[$149 >> 2] | 0;
$151 = ($proc + 32) | 0;
HEAP32[$151 >> 2] = $150;
HEAP32[$149 >> 2] = 0;
$152 = ($129 + 36) | 0;
$153 = HEAP32[$152 >> 2] | 0;
$154 = ($proc + 36) | 0;
HEAP32[$154 >> 2] = $153;
$rc$1 = -1;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$1 | 0;
}
$155 = HEAP32[$3 >> 2] | 0;
$156 = ($155 | 0) == (0 | 0);
do {
if ($156) {
$160 = $122;
} else {
$157 = _zbar_negotiate_format($122, $155) | 0;
$158 = ($157 | 0) == 0;
if ($158) {
$rc$1 = 0;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$1 | 0;
} else {
$159 = HEAP32[_stderr >> 2] | 0;
_fwrite(1464 | 0, 83, 1, $159 | 0) | 0;
$$pre = HEAP32[$0 >> 2] | 0;
$160 = $$pre;
break;
}
}
} while (0);
$161 = _zbar_negotiate_format($160, 0) | 0;
$162 = ($161 | 0) == 0;
if ($162) {
$rc$1 = 0;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$1 | 0;
}
$163 = HEAP32[80 >> 2] | 0;
$164 = ($163 | 0) > 0;
if ($164) {
$165 = HEAP32[_stderr >> 2] | 0;
$166 = HEAP32[$0 >> 2] | 0;
$167 = ($166 | 0) != (0 | 0);
$168 = $167 ? 1592 : 1608;
HEAP32[$vararg_buffer >> 2] = 1328;
$vararg_ptr1 = ($vararg_buffer + 4) | 0;
HEAP32[$vararg_ptr1 >> 2] = $168;
_fprintf($165 | 0, 1552 | 0, $vararg_buffer | 0) | 0;
}
$169 = HEAP32[$proc >> 2] | 0;
$170 = ($169 | 0) == 1381123450;
if (!$170) {
___assert_fail(1816 | 0, 1848 | 0, 150, 1880 | 0);
// unreachable;
}
$171 = ($proc + 16) | 0;
HEAP32[$171 >> 2] = -1;
$172 = ($proc + 20) | 0;
HEAP32[$172 >> 2] = 3;
$173 = ($proc + 24) | 0;
HEAP32[$173 >> 2] = 1328;
$174 = ($proc + 28) | 0;
HEAP32[$174 >> 2] = 1624;
$175 = HEAP32[80 >> 2] | 0;
$176 = ($175 | 0) > 0;
if (!$176) {
$rc$1 = -1;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$1 | 0;
}
__zbar_error_spew($proc, 0) | 0;
$rc$1 = -1;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$1 | 0;
}
function _zbar_processor_set_active($proc, $active) {
$proc = $proc | 0;
$active = $active | 0;
var $$pre = 0,
$$pre$phiZ2D = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0;
var $25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0;
var $43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0;
var $61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0;
var $8 = 0,
$80 = 0,
$81 = 0,
$9 = 0,
$or$cond = 0,
$rc$0 = 0,
$rc$1 = 0,
$rc$2 = 0,
$rc$3 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
__zbar_processor_lock($proc) | 0;
$0 = ($proc + 44) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == (0 | 0);
if ($2) {
$3 = HEAP32[$proc >> 2] | 0;
$4 = ($3 | 0) == 1381123450;
if (!$4) {
___assert_fail(1816 | 0, 1848 | 0, 150, 1880 | 0);
// unreachable;
}
$5 = ($proc + 16) | 0;
HEAP32[$5 >> 2] = -1;
$6 = ($proc + 20) | 0;
HEAP32[$6 >> 2] = 4;
$7 = ($proc + 24) | 0;
HEAP32[$7 >> 2] = 1728;
$8 = ($proc + 28) | 0;
HEAP32[$8 >> 2] = 1760;
$9 = HEAP32[80 >> 2] | 0;
$10 = ($9 | 0) > 0;
if (!$10) {
$rc$3 = -1;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$3 | 0;
}
__zbar_error_spew($proc, 0) | 0;
$rc$3 = -1;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$3 | 0;
}
$11 = ($proc + 52) | 0;
$12 = HEAP32[$11 >> 2] | 0;
_zbar_image_scanner_enable_cache($12, $active);
$13 = HEAP32[$0 >> 2] | 0;
$14 = _zbar_video_enable($13, $active) | 0;
$15 = ($14 | 0) == 0;
do {
if ($15) {
$16 = ($proc + 96) | 0;
HEAP32[$16 >> 2] = $active;
$17 = __zbar_processor_enable($proc) | 0;
$$pre$phiZ2D = $16;
$rc$0 = $17;
} else {
$18 = HEAP32[$0 >> 2] | 0;
$19 = HEAP32[$proc >> 2] | 0;
$20 = ($19 | 0) == 1381123450;
if (!$20) {
___assert_fail(1896 | 0, 1848 | 0, 129, 1928 | 0);
// unreachable;
}
$21 = HEAP32[$18 >> 2] | 0;
$22 = ($21 | 0) == 1381123450;
if ($22) {
$23 = ($18 + 12) | 0;
$24 = HEAP32[$23 >> 2] | 0;
$25 = ($proc + 12) | 0;
HEAP32[$25 >> 2] = $24;
$26 = ($18 + 16) | 0;
$27 = HEAP32[$26 >> 2] | 0;
$28 = ($proc + 16) | 0;
HEAP32[$28 >> 2] = $27;
$29 = ($18 + 20) | 0;
$30 = HEAP32[$29 >> 2] | 0;
$31 = ($proc + 20) | 0;
HEAP32[$31 >> 2] = $30;
$32 = ($18 + 24) | 0;
$33 = HEAP32[$32 >> 2] | 0;
$34 = ($proc + 24) | 0;
HEAP32[$34 >> 2] = $33;
$35 = ($18 + 28) | 0;
$36 = HEAP32[$35 >> 2] | 0;
$37 = ($proc + 28) | 0;
HEAP32[$37 >> 2] = $36;
$38 = ($18 + 32) | 0;
$39 = HEAP32[$38 >> 2] | 0;
$40 = ($proc + 32) | 0;
HEAP32[$40 >> 2] = $39;
HEAP32[$38 >> 2] = 0;
$41 = ($18 + 36) | 0;
$42 = HEAP32[$41 >> 2] | 0;
$43 = ($proc + 36) | 0;
HEAP32[$43 >> 2] = $42;
$$pre = ($proc + 96) | 0;
$$pre$phiZ2D = $$pre;
$rc$0 = $14;
break;
} else {
___assert_fail(1944 | 0, 1848 | 0, 130, 1928 | 0);
// unreachable;
}
}
} while (0);
$44 = HEAP32[$$pre$phiZ2D >> 2] | 0;
$45 = ($44 | 0) == 0;
if ($45) {
$46 = ($proc + 48) | 0;
$47 = HEAP32[$46 >> 2] | 0;
$48 = ($47 | 0) == (0 | 0);
if ($48) {
$rc$2 = $rc$0;
} else {
$49 = _zbar_window_draw($47, 0) | 0;
$50 = ($49 | 0) != 0;
$51 = ($rc$0 | 0) == 0;
$or$cond = $50 & $51;
do {
if ($or$cond) {
$52 = HEAP32[$46 >> 2] | 0;
$53 = HEAP32[$proc >> 2] | 0;
$54 = ($53 | 0) == 1381123450;
if (!$54) {
___assert_fail(1896 | 0, 1848 | 0, 129, 1928 | 0);
// unreachable;
}
$55 = HEAP32[$52 >> 2] | 0;
$56 = ($55 | 0) == 1381123450;
if ($56) {
$57 = ($52 + 12) | 0;
$58 = HEAP32[$57 >> 2] | 0;
$59 = ($proc + 12) | 0;
HEAP32[$59 >> 2] = $58;
$60 = ($52 + 16) | 0;
$61 = HEAP32[$60 >> 2] | 0;
$62 = ($proc + 16) | 0;
HEAP32[$62 >> 2] = $61;
$63 = ($52 + 20) | 0;
$64 = HEAP32[$63 >> 2] | 0;
$65 = ($proc + 20) | 0;
HEAP32[$65 >> 2] = $64;
$66 = ($52 + 24) | 0;
$67 = HEAP32[$66 >> 2] | 0;
$68 = ($proc + 24) | 0;
HEAP32[$68 >> 2] = $67;
$69 = ($52 + 28) | 0;
$70 = HEAP32[$69 >> 2] | 0;
$71 = ($proc + 28) | 0;
HEAP32[$71 >> 2] = $70;
$72 = ($52 + 32) | 0;
$73 = HEAP32[$72 >> 2] | 0;
$74 = ($proc + 32) | 0;
HEAP32[$74 >> 2] = $73;
HEAP32[$72 >> 2] = 0;
$75 = ($52 + 36) | 0;
$76 = HEAP32[$75 >> 2] | 0;
$77 = ($proc + 36) | 0;
HEAP32[$77 >> 2] = $76;
$rc$1 = -1;
break;
} else {
___assert_fail(1944 | 0, 1848 | 0, 130, 1928 | 0);
// unreachable;
}
} else {
$rc$1 = $rc$0;
}
} while (0);
__zbar_processor_invalidate($proc) | 0;
$rc$2 = $rc$1;
}
} else {
$rc$2 = $rc$0;
}
$78 = ($proc + 144) | 0;
$79 = HEAP32[$78 >> 2] | 0;
$80 = ($79 | 0) == 0;
if ($80) {
$rc$3 = $rc$2;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$3 | 0;
}
$81 = ($proc + 152) | 0;
__zbar_event_trigger($81);
$rc$3 = $rc$2;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$3 | 0;
}
function _zbar_processor_is_visible($proc) {
$proc = $proc | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
__zbar_processor_lock($proc) | 0;
$0 = ($proc + 48) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == (0 | 0);
if ($2) {
$7 = 0;
} else {
$3 = ($proc + 92) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($4 | 0) != 0;
$7 = $5;
}
$6 = $7 & 1;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $6 | 0;
}
function _zbar_processor_user_wait($proc, $timeout) {
$proc = $proc | 0;
$timeout = $timeout | 0;
var $$0$i = 0,
$$pre = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0;
var $25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$or$cond = 0,
$phitmp = 0,
$rc$2 = 0,
$timer = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$timer = sp;
__zbar_processor_lock($proc) | 0;
$0 = ($proc + 92) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == 0;
if ($2) {
$3 = ($proc + 96) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($4 | 0) != 0;
$6 = ($timeout | 0) > -1;
$or$cond = $5 | $6;
if ($or$cond) {
label = 3;
}
} else {
label = 3;
}
if ((label | 0) == 3) {
$7 = ($timeout | 0) < 0;
if ($7) {
$$0$i = 0;
} else {
_clock_gettime(0, $timer | 0) | 0;
$8 = ($timeout | 0) % 1000 & -1;
$9 = ($8 * 1000000) | 0;
$10 = ($timer + 4) | 0;
$11 = HEAP32[$10 >> 2] | 0;
$12 = ($11 + $9) | 0;
$13 = (($timeout | 0) / 1000) & -1;
$14 = (($12 | 0) / 1000000000) & -1;
$15 = ($14 + $13) | 0;
$16 = HEAP32[$timer >> 2] | 0;
$17 = ($15 + $16) | 0;
HEAP32[$timer >> 2] = $17;
$18 = ($12 | 0) % 1000000000 & -1;
HEAP32[$10 >> 2] = $18;
$$0$i = $timer;
}
$19 = __zbar_processor_wait($proc, 1, $$0$i) | 0;
$$pre = HEAP32[$0 >> 2] | 0;
$phitmp = ($$pre | 0) == 0;
if (!$phitmp) {
$28 = ($19 | 0) > 0;
if (!$28) {
$rc$2 = $19;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$2 | 0;
}
$29 = ($proc + 84) | 0;
$30 = HEAP32[$29 >> 2] | 0;
$rc$2 = $30;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$2 | 0;
}
}
$20 = HEAP32[$proc >> 2] | 0;
$21 = ($20 | 0) == 1381123450;
if (!$21) {
___assert_fail(1816 | 0, 1848 | 0, 150, 1880 | 0);
// unreachable;
}
$22 = ($proc + 16) | 0;
HEAP32[$22 >> 2] = 1;
$23 = ($proc + 20) | 0;
HEAP32[$23 >> 2] = 10;
$24 = ($proc + 24) | 0;
HEAP32[$24 >> 2] = 1656;
$25 = ($proc + 28) | 0;
HEAP32[$25 >> 2] = 1688;
$26 = HEAP32[80 >> 2] | 0;
$27 = ($26 | 0) > 0;
if (!$27) {
$rc$2 = -1;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$2 | 0;
}
__zbar_error_spew($proc, 0) | 0;
$rc$2 = -1;
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$2 | 0;
}
function _zbar_process_image($proc, $img) {
$proc = $proc | 0;
$img = $img | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$rc$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
__zbar_processor_lock($proc) | 0;
$0 = ($img | 0) == (0 | 0);
if ($0) {
label = 4;
} else {
$1 = ($proc + 48) | 0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($2 | 0) == (0 | 0);
if ($3) {
label = 4;
} else {
$4 = _zbar_image_get_width($img) | 0;
$5 = _zbar_image_get_height($img) | 0;
$6 = __zbar_processor_set_size($proc, $4, $5) | 0;
$7 = ($6 | 0) == 0;
if ($7) {
label = 4;
} else {
$rc$1 = $6;
}
}
}
if ((label | 0) == 4) {
$8 = ($proc + 52) | 0;
$9 = HEAP32[$8 >> 2] | 0;
_zbar_image_scanner_enable_cache($9, 0);
$10 = __zbar_process_image($proc, $img) | 0;
$11 = ($proc + 96) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($12 | 0) == 0;
if ($13) {
$rc$1 = $10;
} else {
$14 = HEAP32[$8 >> 2] | 0;
_zbar_image_scanner_enable_cache($14, 1);
$rc$1 = $10;
}
}
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return $rc$1 | 0;
}
function __zbar_refcnt_init() {
var label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = sp;
return;
}
function _zbar_get_symbol_name($sym) {
$sym = $sym | 0;
var $$0 = 0,
$0 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = $sym & 255;
do {
switch ($0 | 0) {
case 34: {
$$0 = 2064;
break;
}
case 10: {
$$0 = 2008;
break;
}
case 15: {
$$0 = 2040;
break;
}
case 5: {
$$0 = 1984;
break;
}
case 64: {
$$0 = 2136;
break;
}
case 8: {
$$0 = 1992;
break;
}
case 14: {
$$0 = 2032;
break;
}
case 38: {
$$0 = 2088;
break;
}
case 35: {
$$0 = 2072;
break;
}
case 25: {
$$0 = 2056;
break;
}
case 12: {
$$0 = 2016;
break;
}
case 9: {
$$0 = 2000;
break;
}
case 93: {
$$0 = 2104;
break;
}
case 13: {
$$0 = 2024;
break;
}
case 39: {
$$0 = 2096;
break;
}
case 2: {
$$0 = 1976;
break;
}
case 128: {
$$0 = 2112;
break;
}
case 57: {
$$0 = 2128;
break;
}
default: {
$$0 = 2144;
}
}
} while (0);
STACKTOP = sp;
return $$0 | 0;
}
function _zbar_get_addon_name($sym) {
$sym = $sym | 0;
var label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = sp;
return 2152 | 0;
}
function __zbar_get_symbol_hash($sym) {
$sym = $sym | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$3 = 0,
$4 = 0;
var $5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = $sym & 31;
$1 = (2160 + $0) | 0;
$2 = HEAP8[$1 >> 0] | 0;
$3 = $2 & 255;
$4 = $sym >>> 4;
$5 = $4 & 31;
$6 = $5 ^ 31;
$7 = (2160 + $6) | 0;
$8 = HEAP8[$7 >> 0] | 0;
$9 = $8 & 255;
$10 = -25102353 >>> $0;
$11 = $10 & 1;
$12 = ($11 | 0) == 0;
if ($12) {
___assert_fail(2192 | 0, 2216 | 0, 109, 2232 | 0);
// unreachable;
}
$13 = -25102353 >>> $6;
$14 = $13 & 1;
$15 = ($14 | 0) == 0;
if ($15) {
___assert_fail(2192 | 0, 2216 | 0, 109, 2232 | 0);
// unreachable;
}
$16 = 25102352 >>> $0;
$17 = $16 & 1;
$18 = ($17 | 0) == 0;
if (!$18) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$19 = 25102352 >>> $6;
$20 = $19 & 1;
$21 = ($20 | 0) == 0;
if (!$21) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$22 = ($9 + $3) | 0;
$23 = $22 & 31;
$$0 = $23;
STACKTOP = sp;
return $$0 | 0;
}
function __zbar_symbol_free($sym) {
$sym = $sym | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($sym + 48) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == (0 | 0);
if (!$2) {
_zbar_symbol_set_ref($1, -1);
HEAP32[$0 >> 2] = 0;
}
$3 = ($sym + 32) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($4 | 0) == (0 | 0);
if (!$5) {
_free($4);
}
$6 = ($sym + 12) | 0;
$7 = HEAP32[$6 >> 2] | 0;
$8 = ($7 | 0) == 0;
if ($8) {
_free($sym);
STACKTOP = sp;
return;
}
$9 = ($sym + 20) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($10 | 0) == (0 | 0);
if ($11) {
_free($sym);
STACKTOP = sp;
return;
}
_free($10);
_free($sym);
STACKTOP = sp;
return;
}
function _zbar_symbol_set_ref($syms, $delta) {
$syms = $syms | 0;
$delta = $delta | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$or$cond = 0,
$sym$0$i2 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP32[$syms >> 2] | 0;
$1 = ($0 + $delta) | 0;
HEAP32[$syms >> 2] = $1;
$2 = ($1 | 0) > -1;
if (!$2) {
___assert_fail(2256 | 0, 2264 | 0, 87, 2280 | 0);
// unreachable;
}
$3 = ($1 | 0) == 0;
$4 = ($delta | 0) < 1;
$or$cond = $3 & $4;
if (!$or$cond) {
STACKTOP = sp;
return;
}
$5 = ($syms + 8) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($6 | 0) == (0 | 0);
L7: do {
if (!$7) {
$sym$0$i2 = $6;
while (1) {
$8 = ($sym$0$i2 + 44) | 0;
$9 = HEAP32[$8 >> 2] | 0;
HEAP32[$8 >> 2] = 0;
$10 = ($sym$0$i2 + 40) | 0;
$11 = HEAP32[$10 >> 2] | 0;
$12 = ($11 + -1) | 0;
HEAP32[$10 >> 2] = $12;
$13 = ($11 | 0) > 0;
if (!$13) {
break;
}
$14 = ($12 | 0) == 0;
if ($14) {
$15 = ($sym$0$i2 + 48) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = ($16 | 0) == (0 | 0);
if (!$17) {
_zbar_symbol_set_ref($16, -1);
HEAP32[$15 >> 2] = 0;
}
$18 = ($sym$0$i2 + 32) | 0;
$19 = HEAP32[$18 >> 2] | 0;
$20 = ($19 | 0) == (0 | 0);
if (!$20) {
_free($19);
}
$21 = ($sym$0$i2 + 12) | 0;
$22 = HEAP32[$21 >> 2] | 0;
$23 = ($22 | 0) == 0;
if (!$23) {
$24 = ($sym$0$i2 + 20) | 0;
$25 = HEAP32[$24 >> 2] | 0;
$26 = ($25 | 0) == (0 | 0);
if (!$26) {
_free($25);
}
}
_free($sym$0$i2);
}
$27 = ($9 | 0) == (0 | 0);
if ($27) {
break L7;
} else {
$sym$0$i2 = $9;
}
}
___assert_fail(2256 | 0, 2264 | 0, 87, 2280 | 0);
// unreachable;
}
} while (0);
_free($syms);
STACKTOP = sp;
return;
}
function _zbar_symbol_get_type($sym) {
$sym = $sym | 0;
var $0 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP32[$sym >> 2] | 0;
STACKTOP = sp;
return $0 | 0;
}
function _zbar_symbol_get_data($sym) {
$sym = $sym | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($sym + 20) | 0;
$1 = HEAP32[$0 >> 2] | 0;
STACKTOP = sp;
return $1 | 0;
}
function _zbar_symbol_get_count($sym) {
$sym = $sym | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($sym + 56) | 0;
$1 = HEAP32[$0 >> 2] | 0;
STACKTOP = sp;
return $1 | 0;
}
function _zbar_symbol_get_quality($sym) {
$sym = $sym | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($sym + 60) | 0;
$1 = HEAP32[$0 >> 2] | 0;
STACKTOP = sp;
return $1 | 0;
}
function _zbar_symbol_get_loc_size($sym) {
$sym = $sym | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($sym + 28) | 0;
$1 = HEAP32[$0 >> 2] | 0;
STACKTOP = sp;
return $1 | 0;
}
function _zbar_symbol_get_orientation($sym) {
$sym = $sym | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($sym + 36) | 0;
$1 = HEAP32[$0 >> 2] | 0;
STACKTOP = sp;
return $1 | 0;
}
function _zbar_symbol_next($sym) {
$sym = $sym | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($sym | 0) == (0 | 0);
if ($0) {
$3 = 0;
} else {
$1 = ($sym + 44) | 0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = $2;
}
STACKTOP = sp;
return $3 | 0;
}
function __zbar_symbol_set_create() {
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = _calloc(1, 16) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 + 1) | 0;
HEAP32[$0 >> 2] = $2;
$3 = ($1 | 0) > -2;
if ($3) {
STACKTOP = sp;
return $0 | 0;
} else {
___assert_fail(2256 | 0, 2264 | 0, 87, 2280 | 0);
// unreachable;
}
return 0 | 0;
}
function __zbar_symbol_set_free($syms) {
$syms = $syms | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0;
var $7 = 0,
$8 = 0,
$9 = 0,
$sym$01 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($syms + 8) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == (0 | 0);
if ($2) {
_free($syms);
STACKTOP = sp;
return;
} else {
$sym$01 = $1;
}
while (1) {
$3 = ($sym$01 + 44) | 0;
$4 = HEAP32[$3 >> 2] | 0;
HEAP32[$3 >> 2] = 0;
$5 = ($sym$01 + 40) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($6 + -1) | 0;
HEAP32[$5 >> 2] = $7;
$8 = ($6 | 0) > 0;
if (!$8) {
label = 3;
break;
}
$9 = ($7 | 0) == 0;
if ($9) {
$11 = ($sym$01 + 48) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($12 | 0) == (0 | 0);
if (!$13) {
_zbar_symbol_set_ref($12, -1);
HEAP32[$11 >> 2] = 0;
}
$14 = ($sym$01 + 32) | 0;
$15 = HEAP32[$14 >> 2] | 0;
$16 = ($15 | 0) == (0 | 0);
if (!$16) {
_free($15);
}
$17 = ($sym$01 + 12) | 0;
$18 = HEAP32[$17 >> 2] | 0;
$19 = ($18 | 0) == 0;
if (!$19) {
$20 = ($sym$01 + 20) | 0;
$21 = HEAP32[$20 >> 2] | 0;
$22 = ($21 | 0) == (0 | 0);
if (!$22) {
_free($21);
}
}
_free($sym$01);
}
$10 = ($4 | 0) == (0 | 0);
if ($10) {
label = 14;
break;
} else {
$sym$01 = $4;
}
}
if ((label | 0) == 3) {
___assert_fail(2256 | 0, 2264 | 0, 87, 2280 | 0);
// unreachable;
} else if ((label | 0) == 14) {
_free($syms);
STACKTOP = sp;
return;
}
}
function _zbar_video_create() {
var $$0 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$i$01 = 0;
var label = 0,
sp = 0;
sp = STACKTOP;
$0 = _calloc(1, 140) | 0;
$1 = ($0 | 0) == (0 | 0);
if ($1) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
HEAP32[$0 >> 2] = 1381123450;
$2 = ($0 + 4) | 0;
HEAP32[$2 >> 2] = 1;
$3 = ($0 + 40) | 0;
HEAP32[$3 >> 2] = -1;
$4 = ($0 + 92) | 0;
HEAP32[$4 >> 2] = 4;
$5 = _calloc(4, 4) | 0;
$6 = ($0 + 96) | 0;
HEAP32[$6 >> 2] = $5;
$7 = ($5 | 0) == (0 | 0);
if ($7) {
_zbar_video_destroy($0);
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
} else {
$i$01 = 0;
}
while (1) {
$8 = _zbar_image_create() | 0;
$9 = HEAP32[$6 >> 2] | 0;
$10 = ($9 + ($i$01 << 2)) | 0;
HEAP32[$10 >> 2] = $8;
$11 = ($8 | 0) == (0 | 0);
if ($11) {
break;
}
$12 = ($8 + 44) | 0;
HEAP32[$12 >> 2] = 0;
$13 = ($8 + 40) | 0;
HEAP32[$13 >> 2] = 2;
$14 = ($8 + 52) | 0;
HEAP32[$14 >> 2] = $i$01;
$15 = ($8 + 48) | 0;
HEAP32[$15 >> 2] = $0;
$16 = ($i$01 + 1) | 0;
$17 = ($16 | 0) < 4;
if ($17) {
$i$01 = $16;
} else {
$$0 = $0;
label = 7;
break;
}
}
if ((label | 0) == 7) {
STACKTOP = sp;
return $$0 | 0;
}
_zbar_video_destroy($0);
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
function _zbar_video_destroy($vdo) {
$vdo = $vdo | 0;
var $$pre = 0,
$$pre3 = 0,
$$pre4 = 0,
$$pre5 = 0,
$$pre6 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0;
var $22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0;
var $40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0;
var $59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$8 = 0,
$9 = 0,
$exitcond$i = 0,
$i1$03$i$i = 0,
$vararg_buffer = 0;
var $vararg_ptr1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$vararg_buffer = sp;
$0 = ($vdo + 52) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == 0;
do {
if (!$2) {
$3 = ($vdo + 60) | 0;
$4 = HEAP8[$3 >> 0] | 0;
$5 = $4 & 2;
$6 = ($5 << 24) >> 24 == 0;
if (!$6) {
$7 = $4 & -3;
HEAP8[$3 >> 0] = $7;
$8 = ($vdo + 92) | 0;
$9 = HEAP32[$8 >> 2] | 0;
$10 = ($9 | 0) > 0;
if ($10) {
$11 = ($vdo + 96) | 0;
$i1$03$i$i = 0;
while (1) {
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($12 + ($i1$03$i$i << 2)) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = ($14 + 56) | 0;
HEAP32[$15 >> 2] = 0;
$16 = ($i1$03$i$i + 1) | 0;
$exitcond$i = ($16 | 0) == ($9 | 0);
if ($exitcond$i) {
break;
} else {
$i1$03$i$i = $16;
}
}
}
$17 = ($vdo + 104) | 0;
HEAP32[$17 >> 2] = 0;
$18 = ($vdo + 100) | 0;
HEAP32[$18 >> 2] = 0;
$19 = ($vdo + 128) | 0;
$20 = HEAP32[$19 >> 2] | 0;
FUNCTION_TABLE_ii[$20 & 0]($vdo) | 0;
$$pre6 = HEAP32[$0 >> 2] | 0;
$21 = ($$pre6 | 0) == 0;
if ($21) {
break;
}
}
$22 = ($vdo + 120) | 0;
$23 = HEAP32[$22 >> 2] | 0;
$24 = ($23 | 0) == (0 | 0);
if (!$24) {
FUNCTION_TABLE_ii[$23 & 0]($vdo) | 0;
HEAP32[$22 >> 2] = 0;
}
$25 = HEAP32[80 >> 2] | 0;
$26 = ($25 | 0) > 0;
if ($26) {
$27 = HEAP32[_stderr >> 2] | 0;
$28 = ($vdo + 40) | 0;
$29 = HEAP32[$28 >> 2] | 0;
HEAP32[$vararg_buffer >> 2] = 2328;
$vararg_ptr1 = ($vararg_buffer + 4) | 0;
HEAP32[$vararg_ptr1 >> 2] = $29;
_fprintf($27 | 0, 2296 | 0, $vararg_buffer | 0) | 0;
}
HEAP32[$0 >> 2] = 0;
}
} while (0);
$30 = ($vdo + 96) | 0;
$31 = HEAP32[$30 >> 2] | 0;
$32 = ($31 | 0) == (0 | 0);
if (!$32) {
$33 = HEAP32[$31 >> 2] | 0;
$34 = ($33 | 0) == (0 | 0);
if ($34) {
$36 = $31;
} else {
__zbar_image_free($33);
$$pre = HEAP32[$30 >> 2] | 0;
$36 = $$pre;
}
$35 = ($36 + 4) | 0;
$37 = HEAP32[$35 >> 2] | 0;
$38 = ($37 | 0) == (0 | 0);
if ($38) {
$64 = $36;
} else {
__zbar_image_free($37);
$$pre3 = HEAP32[$30 >> 2] | 0;
$64 = $$pre3;
}
$63 = ($64 + 8) | 0;
$65 = HEAP32[$63 >> 2] | 0;
$66 = ($65 | 0) == (0 | 0);
if ($66) {
$68 = $64;
} else {
__zbar_image_free($65);
$$pre4 = HEAP32[$30 >> 2] | 0;
$68 = $$pre4;
}
$67 = ($68 + 12) | 0;
$69 = HEAP32[$67 >> 2] | 0;
$70 = ($69 | 0) == (0 | 0);
if ($70) {
$71 = $68;
} else {
__zbar_image_free($69);
$$pre5 = HEAP32[$30 >> 2] | 0;
$71 = $$pre5;
}
_free($71);
}
$39 = ($vdo + 108) | 0;
$40 = HEAP32[$39 >> 2] | 0;
$41 = ($40 | 0) == (0 | 0);
if (!$41) {
$43 = $40;
while (1) {
$42 = ($43 + 56) | 0;
$44 = HEAP32[$42 >> 2] | 0;
HEAP32[$39 >> 2] = $44;
$45 = ($43 + 12) | 0;
$46 = HEAP32[$45 >> 2] | 0;
_free($46);
_free($43);
$47 = HEAP32[$39 >> 2] | 0;
$48 = ($47 | 0) == (0 | 0);
if ($48) {
break;
} else {
$43 = $47;
}
}
}
$49 = ($vdo + 84) | 0;
$50 = HEAP32[$49 >> 2] | 0;
$51 = ($50 | 0) == (0 | 0);
if (!$51) {
_free($50);
}
$52 = ($vdo + 72) | 0;
$53 = HEAP32[$52 >> 2] | 0;
$54 = ($53 | 0) == (0 | 0);
if (!$54) {
_free($53);
}
$55 = HEAP32[$vdo >> 2] | 0;
$56 = ($55 | 0) == 1381123450;
if (!$56) {
___assert_fail(3208 | 0, 3240 | 0, 218, 3272 | 0);
// unreachable;
}
$57 = ($vdo + 8) | 0;
$58 = HEAP32[$57 >> 2] | 0;
$59 = ($58 | 0) == (0 | 0);
if (!$59) {
_free($58);
HEAP32[$57 >> 2] = 0;
}
$60 = ($vdo + 32) | 0;
$61 = HEAP32[$60 >> 2] | 0;
$62 = ($61 | 0) == (0 | 0);
if ($62) {
_free($vdo);
STACKTOP = sp;
return;
}
_free($61);
_free($vdo);
STACKTOP = sp;
return;
}
function __zbar_video_recycle_image($img) {
$img = $img | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($img + 48) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == (0 | 0);
if ($2) {
___assert_fail(2960 | 0, 2880 | 0, 36, 3288 | 0);
// unreachable;
}
$3 = ($img + 52) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($4 | 0) > -1;
if (!$5) {
___assert_fail(3320 | 0, 2880 | 0, 37, 3288 | 0);
// unreachable;
}
$6 = ($1 + 96) | 0;
$7 = HEAP32[$6 >> 2] | 0;
$8 = ($7 + ($4 << 2)) | 0;
$9 = HEAP32[$8 >> 2] | 0;
$10 = ($9 | 0) == ($img | 0);
if (!$10) {
HEAP32[$8 >> 2] = $img;
}
$11 = ($1 + 60) | 0;
$12 = HEAP8[$11 >> 0] | 0;
$13 = $12 & 2;
$14 = ($13 << 24) >> 24 == 0;
if ($14) {
STACKTOP = sp;
return;
}
$15 = ($1 + 132) | 0;
$16 = HEAP32[$15 >> 2] | 0;
FUNCTION_TABLE_iii[$16 & 7]($1, $img) | 0;
STACKTOP = sp;
return;
}
function _zbar_video_open($vdo, $dev) {
$vdo = $vdo | 0;
$dev = $dev | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0;
var $26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0;
var $9 = 0,
$exitcond = 0,
$i1$03$i = 0,
$vararg_buffer = 0,
$vararg_ptr1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$vararg_buffer = sp;
$0 = ($vdo + 60) | 0;
$1 = HEAP8[$0 >> 0] | 0;
$2 = $1 & 2;
$3 = ($2 << 24) >> 24 == 0;
if (!$3) {
$4 = $1 & -3;
HEAP8[$0 >> 0] = $4;
$5 = ($vdo + 92) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($6 | 0) > 0;
if ($7) {
$8 = ($vdo + 96) | 0;
$i1$03$i = 0;
while (1) {
$9 = HEAP32[$8 >> 2] | 0;
$10 = ($9 + ($i1$03$i << 2)) | 0;
$11 = HEAP32[$10 >> 2] | 0;
$12 = ($11 + 56) | 0;
HEAP32[$12 >> 2] = 0;
$13 = ($i1$03$i + 1) | 0;
$exitcond = ($13 | 0) == ($6 | 0);
if ($exitcond) {
break;
} else {
$i1$03$i = $13;
}
}
}
$14 = ($vdo + 104) | 0;
HEAP32[$14 >> 2] = 0;
$15 = ($vdo + 100) | 0;
HEAP32[$15 >> 2] = 0;
$16 = ($vdo + 128) | 0;
$17 = HEAP32[$16 >> 2] | 0;
FUNCTION_TABLE_ii[$17 & 0]($vdo) | 0;
}
$18 = ($vdo + 52) | 0;
$19 = HEAP32[$18 >> 2] | 0;
$20 = ($19 | 0) == 0;
if (!$20) {
$21 = ($vdo + 120) | 0;
$22 = HEAP32[$21 >> 2] | 0;
$23 = ($22 | 0) == (0 | 0);
if (!$23) {
FUNCTION_TABLE_ii[$22 & 0]($vdo) | 0;
HEAP32[$21 >> 2] = 0;
}
$24 = HEAP32[80 >> 2] | 0;
$25 = ($24 | 0) > 0;
if ($25) {
$26 = HEAP32[_stderr >> 2] | 0;
$27 = ($vdo + 40) | 0;
$28 = HEAP32[$27 >> 2] | 0;
HEAP32[$vararg_buffer >> 2] = 2328;
$vararg_ptr1 = ($vararg_buffer + 4) | 0;
HEAP32[$vararg_ptr1 >> 2] = $28;
_fprintf($26 | 0, 2296 | 0, $vararg_buffer | 0) | 0;
}
HEAP32[$18 >> 2] = 0;
}
$29 = ($dev | 0) == (0 | 0);
if ($29) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$30 = HEAP8[$dev >> 0] | 0;
$31 = ($30 & 255) < 16;
if (!$31) {
$32 = __zbar_video_open($vdo, $dev) | 0;
$$0 = $32;
STACKTOP = sp;
return $$0 | 0;
}
$33 = $30 & 255;
$34 = ___strdup(2344) | 0;
$35 = ($33 + 48) | 0;
$36 = $35 & 255;
$37 = ($34 + 10) | 0;
HEAP8[$37 >> 0] = $36;
$38 = __zbar_video_open($vdo, $34) | 0;
$39 = ($34 | 0) == (0 | 0);
if ($39) {
$$0 = $38;
STACKTOP = sp;
return $$0 | 0;
}
_free($34);
$$0 = $38;
STACKTOP = sp;
return $$0 | 0;
}
function _zbar_video_enable($vdo, $enable) {
$vdo = $vdo | 0;
$enable = $enable | 0;
var $$0 = 0,
$$pre = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0;
var $25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0;
var $43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0;
var $7 = 0,
$8 = 0,
$9 = 0,
$i$01 = 0,
$i1$03 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($vdo + 60) | 0;
$1 = HEAP8[$0 >> 0] | 0;
$2 = ($1 & 255) >>> 1;
$3 = $2 & 1;
$4 = $3 & 255;
$5 = ($4 | 0) == ($enable | 0);
if ($5) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$6 = ($enable | 0) == 0;
if ($6) {
$45 = $1 & -3;
HEAP8[$0 >> 0] = $45;
$46 = ($vdo + 92) | 0;
$47 = HEAP32[$46 >> 2] | 0;
$48 = ($47 | 0) > 0;
if ($48) {
$49 = ($vdo + 96) | 0;
$i1$03 = 0;
while (1) {
$50 = HEAP32[$49 >> 2] | 0;
$51 = ($50 + ($i1$03 << 2)) | 0;
$52 = HEAP32[$51 >> 2] | 0;
$53 = ($52 + 56) | 0;
HEAP32[$53 >> 2] = 0;
$54 = ($i1$03 + 1) | 0;
$55 = ($54 | 0) < ($47 | 0);
if ($55) {
$i1$03 = $54;
} else {
break;
}
}
}
$56 = ($vdo + 104) | 0;
HEAP32[$56 >> 2] = 0;
$57 = ($vdo + 100) | 0;
HEAP32[$57 >> 2] = 0;
$58 = ($vdo + 128) | 0;
$59 = HEAP32[$58 >> 2] | 0;
$60 = FUNCTION_TABLE_ii[$59 & 0]($vdo) | 0;
$$0 = $60;
STACKTOP = sp;
return $$0 | 0;
}
$7 = ($vdo + 52) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($8 | 0) == 0;
if ($9) {
$10 = HEAP32[$vdo >> 2] | 0;
$11 = ($10 | 0) == 1381123450;
if (!$11) {
___assert_fail(3208 | 0, 3240 | 0, 150, 3256 | 0);
// unreachable;
}
$12 = ($vdo + 16) | 0;
HEAP32[$12 >> 2] = -1;
$13 = ($vdo + 20) | 0;
HEAP32[$13 >> 2] = 4;
$14 = ($vdo + 24) | 0;
HEAP32[$14 >> 2] = 2848;
$15 = ($vdo + 28) | 0;
HEAP32[$15 >> 2] = 2384;
$16 = HEAP32[80 >> 2] | 0;
$17 = ($16 | 0) > 0;
if (!$17) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
__zbar_error_spew($vdo, 0) | 0;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
$18 = $1 & 1;
$19 = ($18 << 24) >> 24 == 0;
do {
if ($19) {
$20 = _zbar_negotiate_format($vdo, 0) | 0;
$21 = ($20 | 0) == 0;
if ($21) {
$$pre = HEAP8[$0 >> 0] | 0;
$26 = $$pre;
break;
} else {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
} else {
$26 = $1;
}
} while (0);
$22 = $enable & 255;
$23 = ($22 << 1) & 255;
$24 = $23 & 2;
$25 = $26 & -3;
$27 = $25 | $24;
HEAP8[$0 >> 0] = $27;
$28 = ($vdo + 92) | 0;
$29 = HEAP32[$28 >> 2] | 0;
$30 = ($29 | 0) > 0;
L29: do {
if ($30) {
$31 = ($vdo + 132) | 0;
$32 = ($vdo + 96) | 0;
$i$01 = 0;
while (1) {
$36 = HEAP32[$31 >> 2] | 0;
$37 = HEAP32[$32 >> 2] | 0;
$38 = ($37 + ($i$01 << 2)) | 0;
$39 = HEAP32[$38 >> 2] | 0;
$40 = FUNCTION_TABLE_iii[$36 & 7]($vdo, $39) | 0;
$41 = ($40 | 0) == 0;
$34 = ($i$01 + 1) | 0;
if (!$41) {
$$0 = -1;
break;
}
$33 = HEAP32[$28 >> 2] | 0;
$35 = ($34 | 0) < ($33 | 0);
if ($35) {
$i$01 = $34;
} else {
break L29;
}
}
STACKTOP = sp;
return $$0 | 0;
}
} while (0);
$42 = ($vdo + 124) | 0;
$43 = HEAP32[$42 >> 2] | 0;
$44 = FUNCTION_TABLE_ii[$43 & 0]($vdo) | 0;
$$0 = $44;
STACKTOP = sp;
return $$0 | 0;
}
function _zbar_video_get_fd($vdo) {
$vdo = $vdo | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0;
var $9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($vdo + 52) | 0;
$1 = HEAP32[$0 >> 2] | 0;
if (($1 | 0) == 0) {
$2 = HEAP32[$vdo >> 2] | 0;
$3 = ($2 | 0) == 1381123450;
if (!$3) {
___assert_fail(3208 | 0, 3240 | 0, 150, 3256 | 0);
// unreachable;
}
$4 = ($vdo + 16) | 0;
HEAP32[$4 >> 2] = -1;
$5 = ($vdo + 20) | 0;
HEAP32[$5 >> 2] = 4;
$6 = ($vdo + 24) | 0;
HEAP32[$6 >> 2] = 2360;
$7 = ($vdo + 28) | 0;
HEAP32[$7 >> 2] = 2384;
$8 = HEAP32[80 >> 2] | 0;
$9 = ($8 | 0) > 0;
if (!$9) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
__zbar_error_spew($vdo, 0) | 0;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
} else if (($1 | 0) == 2) {
$18 = ($vdo + 40) | 0;
$19 = HEAP32[$18 >> 2] | 0;
$$0 = $19;
STACKTOP = sp;
return $$0 | 0;
} else {
$10 = HEAP32[$vdo >> 2] | 0;
$11 = ($10 | 0) == 1381123450;
if (!$11) {
___assert_fail(3208 | 0, 3240 | 0, 150, 3256 | 0);
// unreachable;
}
$12 = ($vdo + 16) | 0;
HEAP32[$12 >> 2] = 1;
$13 = ($vdo + 20) | 0;
HEAP32[$13 >> 2] = 3;
$14 = ($vdo + 24) | 0;
HEAP32[$14 >> 2] = 2360;
$15 = ($vdo + 28) | 0;
HEAP32[$15 >> 2] = 2408;
$16 = HEAP32[80 >> 2] | 0;
$17 = ($16 | 0) > 0;
if (!$17) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
__zbar_error_spew($vdo, 0) | 0;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
return 0 | 0;
}
function _zbar_video_request_size($vdo, $width, $height) {
$vdo = $vdo | 0;
$width = $width | 0;
$height = $height | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$vararg_buffer = 0,
$vararg_ptr1 = 0;
var $vararg_ptr2 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$vararg_buffer = sp;
$0 = ($vdo + 60) | 0;
$1 = HEAP8[$0 >> 0] | 0;
$2 = $1 & 1;
$3 = ($2 << 24) >> 24 == 0;
if ($3) {
$12 = ($vdo + 44) | 0;
HEAP32[$12 >> 2] = $width;
$13 = ($vdo + 48) | 0;
HEAP32[$13 >> 2] = $height;
$14 = HEAP32[80 >> 2] | 0;
$15 = ($14 | 0) > 0;
if (!$15) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$16 = HEAP32[_stderr >> 2] | 0;
HEAP32[$vararg_buffer >> 2] = 2448;
$vararg_ptr1 = ($vararg_buffer + 4) | 0;
HEAP32[$vararg_ptr1 >> 2] = $width;
$vararg_ptr2 = ($vararg_buffer + 8) | 0;
HEAP32[$vararg_ptr2 >> 2] = $height;
_fprintf($16 | 0, 2512 | 0, $vararg_buffer | 0) | 0;
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$4 = HEAP32[$vdo >> 2] | 0;
$5 = ($4 | 0) == 1381123450;
if (!$5) {
___assert_fail(3208 | 0, 3240 | 0, 150, 3256 | 0);
// unreachable;
}
$6 = ($vdo + 16) | 0;
HEAP32[$6 >> 2] = -1;
$7 = ($vdo + 20) | 0;
HEAP32[$7 >> 2] = 4;
$8 = ($vdo + 24) | 0;
HEAP32[$8 >> 2] = 2448;
$9 = ($vdo + 28) | 0;
HEAP32[$9 >> 2] = 2472;
$10 = HEAP32[80 >> 2] | 0;
$11 = ($10 | 0) > 0;
if (!$11) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
__zbar_error_spew($vdo, 0) | 0;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
function _zbar_video_request_interface($vdo, $ver) {
$vdo = $vdo | 0;
$ver = $ver | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$vararg_buffer = 0,
$vararg_ptr1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$vararg_buffer = sp;
$0 = ($vdo + 52) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == 0;
if ($2) {
HEAP32[$0 >> 2] = $ver;
$11 = HEAP32[80 >> 2] | 0;
$12 = ($11 | 0) > 0;
if (!$12) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$13 = HEAP32[_stderr >> 2] | 0;
HEAP32[$vararg_buffer >> 2] = 2544;
$vararg_ptr1 = ($vararg_buffer + 4) | 0;
HEAP32[$vararg_ptr1 >> 2] = $ver;
_fprintf($13 | 0, 2632 | 0, $vararg_buffer | 0) | 0;
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$3 = HEAP32[$vdo >> 2] | 0;
$4 = ($3 | 0) == 1381123450;
if (!$4) {
___assert_fail(3208 | 0, 3240 | 0, 150, 3256 | 0);
// unreachable;
}
$5 = ($vdo + 16) | 0;
HEAP32[$5 >> 2] = -1;
$6 = ($vdo + 20) | 0;
HEAP32[$6 >> 2] = 4;
$7 = ($vdo + 24) | 0;
HEAP32[$7 >> 2] = 2544;
$8 = ($vdo + 28) | 0;
HEAP32[$8 >> 2] = 2576;
$9 = HEAP32[80 >> 2] | 0;
$10 = ($9 | 0) > 0;
if (!$10) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
__zbar_error_spew($vdo, 0) | 0;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
function _zbar_video_request_iomode($vdo, $iomode) {
$vdo = $vdo | 0;
$iomode = $iomode | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0;
var $8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($vdo + 52) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == 0;
if (!$2) {
$3 = HEAP32[$vdo >> 2] | 0;
$4 = ($3 | 0) == 1381123450;
if (!$4) {
___assert_fail(3208 | 0, 3240 | 0, 150, 3256 | 0);
// unreachable;
}
$5 = ($vdo + 16) | 0;
HEAP32[$5 >> 2] = -1;
$6 = ($vdo + 20) | 0;
HEAP32[$6 >> 2] = 4;
$7 = ($vdo + 24) | 0;
HEAP32[$7 >> 2] = 2672;
$8 = ($vdo + 28) | 0;
HEAP32[$8 >> 2] = 2704;
$9 = HEAP32[80 >> 2] | 0;
$10 = ($9 | 0) > 0;
if (!$10) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
__zbar_error_spew($vdo, 0) | 0;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
$11 = $iomode >>> 0 > 3;
if (!$11) {
$20 = ($vdo + 56) | 0;
HEAP32[$20 >> 2] = $iomode;
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$12 = HEAP32[$vdo >> 2] | 0;
$13 = ($12 | 0) == 1381123450;
if (!$13) {
___assert_fail(3208 | 0, 3240 | 0, 150, 3256 | 0);
// unreachable;
}
$14 = ($vdo + 16) | 0;
HEAP32[$14 >> 2] = -1;
$15 = ($vdo + 20) | 0;
HEAP32[$15 >> 2] = 4;
$16 = ($vdo + 24) | 0;
HEAP32[$16 >> 2] = 2672;
$17 = ($vdo + 28) | 0;
HEAP32[$17 >> 2] = 2752;
$18 = HEAP32[80 >> 2] | 0;
$19 = ($18 | 0) > 0;
if (!$19) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
__zbar_error_spew($vdo, 0) | 0;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
function _zbar_video_get_width($vdo) {
$vdo = $vdo | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($vdo + 44) | 0;
$1 = HEAP32[$0 >> 2] | 0;
STACKTOP = sp;
return $1 | 0;
}
function _zbar_video_get_height($vdo) {
$vdo = $vdo | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($vdo + 48) | 0;
$1 = HEAP32[$0 >> 2] | 0;
STACKTOP = sp;
return $1 | 0;
}
function _zbar_video_init($vdo, $fmt) {
$vdo = $vdo | 0;
$fmt = $fmt | 0;
var $$0 = 0,
$$pre$i = 0,
$$pre$phi$iZ2D = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0;
var $24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0;
var $42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0;
var $60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$8 = 0,
$9 = 0,
$i$01$i = 0,
$vararg_buffer4 = 0,
$vararg_ptr1 = 0,
$vararg_ptr2 = 0;
var $vararg_ptr3 = 0,
$vararg_ptr7 = 0,
$vararg_ptr8 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$vararg_buffer4 = sp;
$0 = ($vdo + 60) | 0;
$1 = HEAP8[$0 >> 0] | 0;
$2 = $1 & 1;
$3 = ($2 << 24) >> 24 == 0;
if (!$3) {
$4 = HEAP32[$vdo >> 2] | 0;
$5 = ($4 | 0) == 1381123450;
if (!$5) {
___assert_fail(3208 | 0, 3240 | 0, 150, 3256 | 0);
// unreachable;
}
$6 = ($vdo + 16) | 0;
HEAP32[$6 >> 2] = -1;
$7 = ($vdo + 20) | 0;
HEAP32[$7 >> 2] = 4;
$8 = ($vdo + 24) | 0;
HEAP32[$8 >> 2] = 2784;
$9 = ($vdo + 28) | 0;
HEAP32[$9 >> 2] = 2800;
$10 = HEAP32[80 >> 2] | 0;
$11 = ($10 | 0) > 0;
if (!$11) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
__zbar_error_spew($vdo, 0) | 0;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
$12 = ($vdo + 116) | 0;
$13 = HEAP32[$12 >> 2] | 0;
$14 = FUNCTION_TABLE_iii[$13 & 7]($vdo, $fmt) | 0;
$15 = ($14 | 0) == 0;
if (!$15) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
$16 = ($vdo + 64) | 0;
HEAP32[$16 >> 2] = $fmt;
$17 = ($vdo + 76) | 0;
$18 = HEAP32[$17 >> 2] | 0;
$19 = ($18 | 0) == 0;
if ($19) {
___assert_fail(3024 | 0, 2880 | 0, 232, 3040 | 0);
// unreachable;
}
$20 = ($vdo + 56) | 0;
$21 = HEAP32[$20 >> 2] | 0;
$22 = ($21 | 0) == 2;
do {
if ($22) {
$$pre$i = ($vdo + 92) | 0;
$$pre$phi$iZ2D = $$pre$i;
} else {
$23 = ($vdo + 84) | 0;
$24 = HEAP32[$23 >> 2] | 0;
$25 = ($24 | 0) == (0 | 0);
if (!$25) {
___assert_fail(3064 | 0, 2880 | 0, 234, 3040 | 0);
// unreachable;
}
$26 = ($vdo + 92) | 0;
$27 = HEAP32[$26 >> 2] | 0;
$28 = Math_imul($27, $18) | 0;
$29 = ($vdo + 80) | 0;
HEAP32[$29 >> 2] = $28;
$30 = _calloc(1, $28) | 0;
HEAP32[$23 >> 2] = $30;
$31 = ($30 | 0) == (0 | 0);
if (!$31) {
$40 = HEAP32[80 >> 2] | 0;
$41 = ($40 | 0) > 0;
if (!$41) {
$$pre$phi$iZ2D = $26;
break;
}
$42 = HEAP32[_stderr >> 2] | 0;
$43 = ($21 | 0) == 1;
$44 = $43 ? 3168 : 3176;
HEAP32[$vararg_buffer4 >> 2] = 3040;
$vararg_ptr1 = ($vararg_buffer4 + 4) | 0;
HEAP32[$vararg_ptr1 >> 2] = $27;
$vararg_ptr2 = ($vararg_buffer4 + 8) | 0;
HEAP32[$vararg_ptr2 >> 2] = $44;
$vararg_ptr3 = ($vararg_buffer4 + 12) | 0;
HEAP32[$vararg_ptr3 >> 2] = $28;
_fprintf($42 | 0, 3120 | 0, $vararg_buffer4 | 0) | 0;
$$pre$phi$iZ2D = $26;
break;
}
$32 = HEAP32[$vdo >> 2] | 0;
$33 = ($32 | 0) == 1381123450;
if (!$33) {
___assert_fail(3208 | 0, 3240 | 0, 150, 3256 | 0);
// unreachable;
}
$34 = ($vdo + 16) | 0;
HEAP32[$34 >> 2] = -2;
$35 = ($vdo + 20) | 0;
HEAP32[$35 >> 2] = 1;
$36 = ($vdo + 24) | 0;
HEAP32[$36 >> 2] = 3040;
$37 = ($vdo + 28) | 0;
HEAP32[$37 >> 2] = 3080;
$38 = HEAP32[80 >> 2] | 0;
$39 = ($38 | 0) > 0;
if (!$39) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
__zbar_error_spew($vdo, 0) | 0;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
} while (0);
$45 = HEAP32[$$pre$phi$iZ2D >> 2] | 0;
$46 = ($45 | 0) > 0;
if ($46) {
$47 = ($vdo + 96) | 0;
$48 = ($vdo + 44) | 0;
$49 = ($vdo + 48) | 0;
$50 = ($vdo + 84) | 0;
$51 = HEAP32[_stderr >> 2] | 0;
$i$01$i = 0;
while (1) {
$52 = HEAP32[$47 >> 2] | 0;
$53 = ($52 + ($i$01$i << 2)) | 0;
$54 = HEAP32[$53 >> 2] | 0;
$55 = HEAP32[$16 >> 2] | 0;
HEAP32[$54 >> 2] = $55;
$56 = HEAP32[$48 >> 2] | 0;
$57 = HEAP32[$49 >> 2] | 0;
_zbar_image_set_size($54, $56, $57);
$58 = HEAP32[$20 >> 2] | 0;
$59 = ($58 | 0) == 2;
if (!$59) {
$60 = HEAP32[$17 >> 2] | 0;
$61 = Math_imul($60, $i$01$i) | 0;
$62 = ($54 + 16) | 0;
HEAP32[$62 >> 2] = $60;
$63 = HEAP32[$50 >> 2] | 0;
$64 = ($63 + $61) | 0;
$65 = ($54 + 12) | 0;
HEAP32[$65 >> 2] = $64;
$66 = HEAP32[80 >> 2] | 0;
$67 = ($66 | 0) > 1;
if ($67) {
HEAP32[$vararg_buffer4 >> 2] = 3040;
$vararg_ptr7 = ($vararg_buffer4 + 4) | 0;
HEAP32[$vararg_ptr7 >> 2] = $i$01$i;
$vararg_ptr8 = ($vararg_buffer4 + 8) | 0;
HEAP32[$vararg_ptr8 >> 2] = $61;
_fprintf($51 | 0, 3184 | 0, $vararg_buffer4 | 0) | 0;
}
}
$68 = ($i$01$i + 1) | 0;
$69 = HEAP32[$$pre$phi$iZ2D >> 2] | 0;
$70 = ($68 | 0) < ($69 | 0);
if ($70) {
$i$01$i = $68;
} else {
break;
}
}
}
$71 = HEAP8[$0 >> 0] | 0;
$72 = $71 | 1;
HEAP8[$0 >> 0] = $72;
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
function _zbar_video_next_image($vdo) {
$vdo = $vdo | 0;
var $$0 = 0,
$$phi$trans$insert = 0,
$$pre = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0;
var $24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0;
var $42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0;
var $60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$img$0 = 0,
$img$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($vdo + 60) | 0;
$1 = HEAP8[$0 >> 0] | 0;
$2 = $1 & 2;
$3 = ($2 << 24) >> 24 == 0;
if ($3) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$4 = ($vdo + 88) | 0;
$5 = HEAP32[$4 >> 2] | 0;
$6 = ($5 + 1) | 0;
HEAP32[$4 >> 2] = $6;
$7 = ($vdo + 136) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = FUNCTION_TABLE_ii[$8 & 0]($vdo) | 0;
$10 = ($9 | 0) == (0 | 0);
if ($10) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$11 = ($9 + 60) | 0;
HEAP32[$11 >> 2] = $5;
$12 = ($vdo + 92) | 0;
$13 = HEAP32[$12 >> 2] | 0;
$14 = ($13 | 0) < 2;
if ($14) {
$15 = ($vdo + 108) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = ($16 | 0) == (0 | 0);
do {
if ($17) {
HEAP32[$15 >> 2] = 0;
$20 = _zbar_image_create() | 0;
$21 = ($20 | 0) == (0 | 0);
if ($21) {
___assert_fail(2872 | 0, 2880 | 0, 364, 2896 | 0);
// unreachable;
} else {
$22 = ($20 + 44) | 0;
HEAP32[$22 >> 2] = 0;
$23 = ($20 + 48) | 0;
HEAP32[$23 >> 2] = $vdo;
$24 = ($vdo + 64) | 0;
$25 = HEAP32[$24 >> 2] | 0;
HEAP32[$20 >> 2] = $25;
$26 = ($vdo + 44) | 0;
$27 = HEAP32[$26 >> 2] | 0;
$28 = ($vdo + 48) | 0;
$29 = HEAP32[$28 >> 2] | 0;
_zbar_image_set_size($20, $27, $29);
$30 = ($vdo + 76) | 0;
$31 = HEAP32[$30 >> 2] | 0;
$32 = ($20 + 16) | 0;
HEAP32[$32 >> 2] = $31;
$33 = HEAP32[$30 >> 2] | 0;
$34 = _malloc($33) | 0;
$35 = ($20 + 12) | 0;
HEAP32[$35 >> 2] = $34;
$42 = $34;
$img$0 = $20;
break;
}
} else {
$18 = ($16 + 56) | 0;
$19 = HEAP32[$18 >> 2] | 0;
HEAP32[$15 >> 2] = $19;
$$phi$trans$insert = ($16 + 12) | 0;
$$pre = HEAP32[$$phi$trans$insert >> 2] | 0;
$42 = $$pre;
$img$0 = $16;
}
} while (0);
$36 = ($img$0 + 40) | 0;
HEAP32[$36 >> 2] = 3;
$37 = ($img$0 + 60) | 0;
HEAP32[$37 >> 2] = $5;
$38 = ($9 + 12) | 0;
$39 = HEAP32[$38 >> 2] | 0;
$40 = ($img$0 + 16) | 0;
$41 = HEAP32[$40 >> 2] | 0;
_memcpy($42 | 0, $39 | 0, $41 | 0) | 0;
$43 = ($9 + 48) | 0;
$44 = HEAP32[$43 >> 2] | 0;
$45 = ($44 | 0) == (0 | 0);
if ($45) {
___assert_fail(2960 | 0, 2880 | 0, 36, 3288 | 0);
// unreachable;
}
$46 = ($9 + 52) | 0;
$47 = HEAP32[$46 >> 2] | 0;
$48 = ($47 | 0) > -1;
if (!$48) {
___assert_fail(3320 | 0, 2880 | 0, 37, 3288 | 0);
// unreachable;
}
$49 = ($44 + 96) | 0;
$50 = HEAP32[$49 >> 2] | 0;
$51 = ($50 + ($47 << 2)) | 0;
$52 = HEAP32[$51 >> 2] | 0;
$53 = ($52 | 0) == ($9 | 0);
if (!$53) {
HEAP32[$51 >> 2] = $9;
}
$54 = ($44 + 60) | 0;
$55 = HEAP8[$54 >> 0] | 0;
$56 = $55 & 2;
$57 = ($56 << 24) >> 24 == 0;
if ($57) {
$img$1 = $img$0;
} else {
$58 = ($44 + 132) | 0;
$59 = HEAP32[$58 >> 2] | 0;
FUNCTION_TABLE_iii[$59 & 7]($44, $9) | 0;
$img$1 = $img$0;
}
} else {
$60 = ($9 + 40) | 0;
HEAP32[$60 >> 2] = 2;
$img$1 = $9;
}
$61 = ($img$1 + 44) | 0;
$62 = HEAP32[$61 >> 2] | 0;
$63 = ($62 + 1) | 0;
HEAP32[$61 >> 2] = $63;
$64 = ($62 | 0) > -2;
if ($64) {
$$0 = $img$1;
STACKTOP = sp;
return $$0 | 0;
} else {
___assert_fail(2920 | 0, 2928 | 0, 87, 2944 | 0);
// unreachable;
}
return 0 | 0;
}
function __zbar_video_recycle_shadow($img) {
$img = $img | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($img + 48) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == (0 | 0);
if ($2) {
___assert_fail(2960 | 0, 2880 | 0, 50, 2968 | 0);
// unreachable;
}
$3 = ($img + 52) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($4 | 0) == -1;
if ($5) {
$6 = ($1 + 108) | 0;
$7 = HEAP32[$6 >> 2] | 0;
$8 = ($img + 56) | 0;
HEAP32[$8 >> 2] = $7;
HEAP32[$6 >> 2] = $img;
STACKTOP = sp;
return;
} else {
___assert_fail(3000 | 0, 2880 | 0, 51, 2968 | 0);
// unreachable;
}
}
function _zbar_window_create() {
var $$0 = 0,
$0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = _calloc(1, 148) | 0;
$1 = ($0 | 0) == (0 | 0);
if ($1) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
HEAP32[$0 >> 2] = 1381123450;
$2 = ($0 + 4) | 0;
HEAP32[$2 >> 2] = 2;
$3 = ($0 + 44) | 0;
HEAP32[$3 >> 2] = 1;
$$0 = $0;
STACKTOP = sp;
return $$0 | 0;
}
function _zbar_window_destroy($w) {
$w = $w | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0;
var $8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
_zbar_window_draw($w, 0) | 0;
$0 = ($w + 144) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == (0 | 0);
if (!$2) {
FUNCTION_TABLE_ii[$1 & 0]($w) | 0;
HEAP32[$0 >> 2] = 0;
$3 = ($w + 140) | 0;
HEAP32[$3 >> 2] = 0;
}
$4 = ($w + 112) | 0;
$5 = HEAP32[$4 >> 2] | 0;
$6 = ($5 | 0) == (0 | 0);
if (!$6) {
_free($5);
HEAP32[$4 >> 2] = 0;
}
$7 = ($w + 68) | 0;
$8 = ($w + 108) | 0;
HEAP32[$8 >> 2] = 0;
$9 = ($w + 104) | 0;
HEAP32[$9 >> 2] = 0;
$10 = ($w + 64) | 0;
HEAP32[($7 + 0) >> 2] = 0 | 0;
HEAP32[($7 + 4) >> 2] = 0 | 0;
HEAP32[($7 + 8) >> 2] = 0 | 0;
HEAP32[($7 + 12) >> 2] = 0 | 0;
HEAP32[($7 + 16) >> 2] = 0 | 0;
HEAP32[$10 >> 2] = 32768;
$11 = ($w + 60) | 0;
HEAP32[$11 >> 2] = 32768;
$12 = ($w + 92) | 0;
HEAP32[$12 >> 2] = 1;
$13 = ($w + 88) | 0;
HEAP32[$13 >> 2] = 1;
__zbar_window_attach($w, 0, 0) | 0;
$14 = HEAP32[$w >> 2] | 0;
$15 = ($14 | 0) == 1381123450;
if (!$15) {
___assert_fail(3384 | 0, 3416 | 0, 218, 3432 | 0);
// unreachable;
}
$16 = ($w + 8) | 0;
$17 = HEAP32[$16 >> 2] | 0;
$18 = ($17 | 0) == (0 | 0);
if (!$18) {
_free($17);
HEAP32[$16 >> 2] = 0;
}
$19 = ($w + 32) | 0;
$20 = HEAP32[$19 >> 2] | 0;
$21 = ($20 | 0) == (0 | 0);
if ($21) {
_free($w);
STACKTOP = sp;
return;
}
_free($20);
_free($w);
STACKTOP = sp;
return;
}
function _zbar_window_draw($w, $img) {
$w = $w | 0;
$img = $img | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0;
var $26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($w + 140) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == (0 | 0);
$$0 = $2 ? 0 : $img;
$3 = ($$0 | 0) == (0 | 0);
do {
if (!$3) {
$4 = ($$0 + 44) | 0;
$5 = HEAP32[$4 >> 2] | 0;
$6 = ($5 + 1) | 0;
HEAP32[$4 >> 2] = $6;
$7 = ($5 | 0) > -2;
if (!$7) {
___assert_fail(3344 | 0, 3352 | 0, 87, 3368 | 0);
// unreachable;
}
$8 = ($$0 + 4) | 0;
$9 = HEAP32[$8 >> 2] | 0;
$10 = ($w + 72) | 0;
$11 = HEAP32[$10 >> 2] | 0;
$12 = ($9 | 0) == ($11 | 0);
if ($12) {
$13 = ($$0 + 8) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = ($w + 76) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = ($14 | 0) == ($16 | 0);
if ($17) {
break;
}
}
$18 = ($w + 80) | 0;
HEAP32[$18 >> 2] = 0;
}
} while (0);
$19 = ($w + 40) | 0;
$20 = HEAP32[$19 >> 2] | 0;
$21 = ($20 | 0) == (0 | 0);
if ($21) {
HEAP32[$19 >> 2] = $$0;
STACKTOP = sp;
return 0;
}
$22 = ($20 + 44) | 0;
$23 = HEAP32[$22 >> 2] | 0;
$24 = ($23 + -1) | 0;
HEAP32[$22 >> 2] = $24;
$25 = ($23 | 0) > 0;
if (!$25) {
___assert_fail(3344 | 0, 3352 | 0, 87, 3368 | 0);
// unreachable;
}
$26 = ($24 | 0) == 0;
if (!$26) {
HEAP32[$19 >> 2] = $$0;
STACKTOP = sp;
return 0;
}
$27 = ($20 + 40) | 0;
$28 = HEAP32[$27 >> 2] | 0;
$29 = ($28 | 0) == (0 | 0);
if (!$29) {
FUNCTION_TABLE_vi[$28 & 7]($20);
}
$30 = ($20 + 48) | 0;
$31 = HEAP32[$30 >> 2] | 0;
$32 = ($31 | 0) == (0 | 0);
if (!$32) {
HEAP32[$19 >> 2] = $$0;
STACKTOP = sp;
return 0;
}
__zbar_image_free($20);
HEAP32[$19 >> 2] = $$0;
STACKTOP = sp;
return 0;
}
function __zbar_processor_open($proc, $name, $w, $h) {
$proc = $proc | 0;
$name = $name | 0;
$w = $w | 0;
$h = $h | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP32[$proc >> 2] | 0;
$1 = ($0 | 0) == 1381123450;
if (!$1) {
___assert_fail(3600 | 0, 3632 | 0, 150, 3648 | 0);
// unreachable;
}
$2 = ($proc + 16) | 0;
HEAP32[$2 >> 2] = -1;
$3 = ($proc + 20) | 0;
HEAP32[$3 >> 2] = 3;
$4 = ($proc + 24) | 0;
HEAP32[$4 >> 2] = 3448;
$5 = ($proc + 28) | 0;
HEAP32[$5 >> 2] = 3560;
$6 = HEAP32[80 >> 2] | 0;
$7 = ($6 | 0) > 0;
if (!$7) {
STACKTOP = sp;
return -1;
}
__zbar_error_spew($proc, 0) | 0;
STACKTOP = sp;
return -1;
}
function __zbar_processor_close($proc) {
$proc = $proc | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP32[$proc >> 2] | 0;
$1 = ($0 | 0) == 1381123450;
if (!$1) {
___assert_fail(3600 | 0, 3632 | 0, 150, 3648 | 0);
// unreachable;
}
$2 = ($proc + 16) | 0;
HEAP32[$2 >> 2] = -1;
$3 = ($proc + 20) | 0;
HEAP32[$3 >> 2] = 3;
$4 = ($proc + 24) | 0;
HEAP32[$4 >> 2] = 3472;
$5 = ($proc + 28) | 0;
HEAP32[$5 >> 2] = 3560;
$6 = HEAP32[80 >> 2] | 0;
$7 = ($6 | 0) > 0;
if (!$7) {
STACKTOP = sp;
return -1;
}
__zbar_error_spew($proc, 0) | 0;
STACKTOP = sp;
return -1;
}
function __zbar_processor_set_size($proc, $width, $height) {
$proc = $proc | 0;
$width = $width | 0;
$height = $height | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP32[$proc >> 2] | 0;
$1 = ($0 | 0) == 1381123450;
if (!$1) {
___assert_fail(3600 | 0, 3632 | 0, 150, 3648 | 0);
// unreachable;
}
$2 = ($proc + 16) | 0;
HEAP32[$2 >> 2] = -1;
$3 = ($proc + 20) | 0;
HEAP32[$3 >> 2] = 3;
$4 = ($proc + 24) | 0;
HEAP32[$4 >> 2] = 3496;
$5 = ($proc + 28) | 0;
HEAP32[$5 >> 2] = 3560;
$6 = HEAP32[80 >> 2] | 0;
$7 = ($6 | 0) > 0;
if (!$7) {
STACKTOP = sp;
return -1;
}
__zbar_error_spew($proc, 0) | 0;
STACKTOP = sp;
return -1;
}
function __zbar_processor_invalidate($proc) {
$proc = $proc | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP32[$proc >> 2] | 0;
$1 = ($0 | 0) == 1381123450;
if (!$1) {
___assert_fail(3600 | 0, 3632 | 0, 150, 3648 | 0);
// unreachable;
}
$2 = ($proc + 16) | 0;
HEAP32[$2 >> 2] = -1;
$3 = ($proc + 20) | 0;
HEAP32[$3 >> 2] = 3;
$4 = ($proc + 24) | 0;
HEAP32[$4 >> 2] = 3528;
$5 = ($proc + 28) | 0;
HEAP32[$5 >> 2] = 3560;
$6 = HEAP32[80 >> 2] | 0;
$7 = ($6 | 0) > 0;
if (!$7) {
STACKTOP = sp;
return -1;
}
__zbar_error_spew($proc, 0) | 0;
STACKTOP = sp;
return -1;
}
function __zbar_window_attach($w, $display, $win) {
$w = $w | 0;
$display = $display | 0;
$win = $win | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP32[$w >> 2] | 0;
$1 = ($0 | 0) == 1381123450;
if (!$1) {
___assert_fail(3728 | 0, 3760 | 0, 150, 3776 | 0);
// unreachable;
}
$2 = ($w + 16) | 0;
HEAP32[$2 >> 2] = -1;
$3 = ($w + 20) | 0;
HEAP32[$3 >> 2] = 3;
$4 = ($w + 24) | 0;
HEAP32[$4 >> 2] = 3664;
$5 = ($w + 28) | 0;
HEAP32[$5 >> 2] = 3688;
$6 = HEAP32[80 >> 2] | 0;
$7 = ($6 | 0) > 0;
if (!$7) {
STACKTOP = sp;
return -1;
}
__zbar_error_spew($w, 0) | 0;
STACKTOP = sp;
return -1;
}
function __zbar_processor_lock($proc) {
$proc = $proc | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$storemerge = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($proc + 172) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == 0;
if ($2) {
$3 = ($proc + 176) | 0;
HEAP32[$3 >> 2] = 0;
$storemerge = 1;
} else {
$4 = ($1 + 1) | 0;
$storemerge = $4;
}
HEAP32[$0 >> 2] = $storemerge;
STACKTOP = sp;
return 0;
}
function __zbar_processor_unlock($proc, $all) {
$proc = $proc | 0;
$all = $all | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$3 = 0;
var $4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$prev$06$i = 0,
$prev$06$i$phi = 0,
$storemerge = 0,
$waiter$0$i = 0,
$waiter$0$in$ph$i = 0,
$waiter$05$i = 0,
$waiter$07$i = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($proc + 172) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) > 0;
if (!$2) {
___assert_fail(3792 | 0, 3816 | 0, 126, 3840 | 0);
// unreachable;
}
$3 = ($all | 0) == 0;
$4 = ($1 + -1) | 0;
$storemerge = $3 ? $4 : 0;
HEAP32[$0 >> 2] = $storemerge;
$5 = ($storemerge | 0) == 0;
if (!$5) {
STACKTOP = sp;
return 0;
}
$6 = ($proc + 188) | 0;
$7 = HEAP32[$6 >> 2] | 0;
$8 = ($7 | 0) == (0 | 0);
$9 = ($proc + 180) | 0;
$waiter$0$in$ph$i = $8 ? $9 : $7;
$waiter$05$i = HEAP32[$waiter$0$in$ph$i >> 2] | 0;
$10 = ($waiter$05$i | 0) == (0 | 0);
if ($10) {
STACKTOP = sp;
return 0;
} else {
$prev$06$i = $7;
$waiter$07$i = $waiter$05$i;
}
while (1) {
$11 = ($waiter$07$i + 16) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = $12 & 3;
$14 = ($13 | 0) == 0;
if ($14) {
break;
}
HEAP32[$6 >> 2] = $waiter$07$i;
$waiter$0$i = HEAP32[$waiter$07$i >> 2] | 0;
$15 = ($waiter$0$i | 0) == (0 | 0);
if ($15) {
label = 14;
break;
} else {
$prev$06$i$phi = $waiter$07$i;
$waiter$07$i = $waiter$0$i;
$prev$06$i = $prev$06$i$phi;
}
}
if ((label | 0) == 14) {
STACKTOP = sp;
return 0;
}
$16 = ($prev$06$i | 0) == (0 | 0);
$17 = HEAP32[$waiter$07$i >> 2] | 0;
if ($16) {
HEAP32[$9 >> 2] = $17;
} else {
HEAP32[$prev$06$i >> 2] = $17;
}
$18 = HEAP32[$waiter$07$i >> 2] | 0;
$19 = ($18 | 0) == (0 | 0);
if ($19) {
$20 = ($proc + 184) | 0;
HEAP32[$20 >> 2] = $prev$06$i;
}
HEAP32[$waiter$07$i >> 2] = 0;
HEAP32[$0 >> 2] = 1;
$21 = ($waiter$07$i + 12) | 0;
$22 = HEAP32[$21 >> 2] | 0;
$23 = ($proc + 176) | 0;
HEAP32[$23 >> 2] = $22;
$24 = ($waiter$07$i | 0) == (0 | 0);
if ($24) {
STACKTOP = sp;
return 0;
}
$25 = ($waiter$07$i + 4) | 0;
__zbar_event_trigger($25);
STACKTOP = sp;
return 0;
}
function __zbar_processor_notify($proc, $events) {
$proc = $proc | 0;
$events = $events | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$28 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$prev$06$i = 0,
$prev$06$i$phi = 0,
$waiter$0 = 0,
$waiter$0$i = 0,
$waiter$03 = 0,
$waiter$04 = 0,
$waiter$05$i = 0,
$waiter$07$i = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($proc + 188) | 0;
HEAP32[$0 >> 2] = 0;
$1 = ($proc + 180) | 0;
$waiter$03 = HEAP32[$1 >> 2] | 0;
$2 = ($waiter$03 | 0) == (0 | 0);
if (!$2) {
$3 = $events ^ -1;
$4 = $events & 128;
$waiter$04 = $waiter$03;
while (1) {
$5 = ($waiter$04 + 16) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = $6 & $3;
$8 = $7 | $4;
HEAP32[$5 >> 2] = $8;
$waiter$0 = HEAP32[$waiter$04 >> 2] | 0;
$9 = ($waiter$0 | 0) == (0 | 0);
if ($9) {
break;
} else {
$waiter$04 = $waiter$0;
}
}
}
$10 = ($proc + 172) | 0;
$11 = HEAP32[$10 >> 2] | 0;
$12 = ($11 | 0) == 0;
if (!$12) {
STACKTOP = sp;
return;
}
$waiter$05$i = HEAP32[$1 >> 2] | 0;
$13 = ($waiter$05$i | 0) == (0 | 0);
if ($13) {
STACKTOP = sp;
return;
} else {
$prev$06$i = 0;
$waiter$07$i = $waiter$05$i;
}
while (1) {
$14 = ($waiter$07$i + 16) | 0;
$15 = HEAP32[$14 >> 2] | 0;
$16 = $15 & 3;
$17 = ($16 | 0) == 0;
if ($17) {
break;
}
HEAP32[$0 >> 2] = $waiter$07$i;
$waiter$0$i = HEAP32[$waiter$07$i >> 2] | 0;
$18 = ($waiter$0$i | 0) == (0 | 0);
if ($18) {
label = 15;
break;
} else {
$prev$06$i$phi = $waiter$07$i;
$waiter$07$i = $waiter$0$i;
$prev$06$i = $prev$06$i$phi;
}
}
if ((label | 0) == 15) {
STACKTOP = sp;
return;
}
$19 = ($prev$06$i | 0) == (0 | 0);
$20 = HEAP32[$waiter$07$i >> 2] | 0;
if ($19) {
HEAP32[$1 >> 2] = $20;
} else {
HEAP32[$prev$06$i >> 2] = $20;
}
$21 = HEAP32[$waiter$07$i >> 2] | 0;
$22 = ($21 | 0) == (0 | 0);
if ($22) {
$23 = ($proc + 184) | 0;
HEAP32[$23 >> 2] = $prev$06$i;
}
HEAP32[$waiter$07$i >> 2] = 0;
HEAP32[$10 >> 2] = 1;
$24 = ($waiter$07$i + 12) | 0;
$25 = HEAP32[$24 >> 2] | 0;
$26 = ($proc + 176) | 0;
HEAP32[$26 >> 2] = $25;
$27 = ($waiter$07$i | 0) == (0 | 0);
if ($27) {
STACKTOP = sp;
return;
}
$28 = ($waiter$07$i + 4) | 0;
__zbar_event_trigger($28);
STACKTOP = sp;
return;
}
function __zbar_processor_wait($proc, $events, $timeout) {
$proc = $proc | 0;
$events = $events | 0;
$timeout = $timeout | 0;
var $$pre$i = 0,
$$pre$phi$iZ2D = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0;
var $114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0;
var $21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0;
var $4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0;
var $58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0;
var $76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0;
var $94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$now$i$i = 0,
$prev$06$i = 0,
$prev$06$i$phi = 0,
$rc$0$ = 0,
$rc$02 = 0,
$rc$02$i = 0,
$rc$02$us$i = 0,
$rc$02$us$i$us = 0,
$rc$02$us3$i = 0,
$rc$03 = 0,
$rc$07 = 0,
$rc$1 = 0,
$reltime$0$us$i = 0,
$waiter$0$i = 0;
var $waiter$0$i1 = 0,
$waiter$04$i = 0,
$waiter$05$i = 0,
$waiter$07$i = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$now$i$i = sp;
$0 = ($proc + 172) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($proc + 192) | 0;
$3 = HEAP32[$2 >> 2] | 0;
$4 = ($3 | 0) == (0 | 0);
if ($4) {
$7 = _calloc(1, 20) | 0;
$8 = ($7 + 4) | 0;
__zbar_event_init($8) | 0;
$waiter$0$i = $7;
} else {
$5 = HEAP32[$3 >> 2] | 0;
HEAP32[$2 >> 2] = $5;
$6 = ($3 + 16) | 0;
HEAP32[$6 >> 2] = 0;
$waiter$0$i = $3;
}
HEAP32[$waiter$0$i >> 2] = 0;
$9 = ($waiter$0$i + 12) | 0;
HEAP32[$9 >> 2] = 0;
$10 = ($proc + 180) | 0;
$11 = HEAP32[$10 >> 2] | 0;
$12 = ($11 | 0) == (0 | 0);
if ($12) {
HEAP32[$10 >> 2] = $waiter$0$i;
$$pre$i = ($proc + 184) | 0;
$$pre$phi$iZ2D = $$pre$i;
} else {
$13 = ($proc + 184) | 0;
$14 = HEAP32[$13 >> 2] | 0;
HEAP32[$14 >> 2] = $waiter$0$i;
$$pre$phi$iZ2D = $13;
}
HEAP32[$$pre$phi$iZ2D >> 2] = $waiter$0$i;
$15 = $events & 3;
$16 = ($waiter$0$i + 16) | 0;
HEAP32[$16 >> 2] = $15;
__zbar_processor_unlock($proc, 1) | 0;
$17 = ($proc + 88) | 0;
$18 = HEAP32[$17 >> 2] | 0;
$19 = ($18 | 0) == 0;
L9: do {
if ($19) {
$20 = ($proc + 96) | 0;
$21 = HEAP32[$20 >> 2] | 0;
$22 = ($21 | 0) == 0;
do {
if ($22) {
$23 = ($timeout | 0) == (0 | 0);
$24 = ($timeout + 4) | 0;
$25 = ($now$i$i + 4) | 0;
if ($23) {
$122 = $now$i$i;
label = 20;
} else {
$123 = $now$i$i;
$70 = $timeout;
$72 = $now$i$i;
$76 = $24;
$78 = $25;
label = 19;
}
} else {
$26 = ($proc + 44) | 0;
$27 = HEAP32[$26 >> 2] | 0;
$28 = _zbar_video_get_fd($27) | 0;
$29 = ($28 | 0) < 0;
$30 = ($timeout | 0) == (0 | 0);
$31 = ($timeout + 4) | 0;
$32 = ($now$i$i + 4) | 0;
if (!$29) {
if ($30) {
$122 = $now$i$i;
label = 20;
break;
} else {
$123 = $now$i$i;
$70 = $timeout;
$72 = $now$i$i;
$76 = $31;
$78 = $32;
label = 19;
break;
}
}
if ($30) {
$rc$02$us$i$us = 1;
while (1) {
$33 = HEAP32[$16 >> 2] | 0;
$34 = $33 & 3;
$35 = ($34 | 0) == 0;
if ($35) {
$rc$07 = $rc$02$us$i$us;
label = 26;
break L9;
}
$36 = HEAP32[$26 >> 2] | 0;
$37 = _zbar_video_next_image($36) | 0;
$38 = ($37 | 0) == (0 | 0);
if ($38) {
$rc$03 = -1;
label = 27;
break L9;
}
__zbar_process_image($proc, $37) | 0;
_zbar_image_destroy($37);
$39 = __zbar_processor_input_wait($proc, 0, 15) | 0;
$40 = ($39 | 0) > 0;
if ($40) {
$rc$02$us$i$us = $39;
} else {
$rc$03 = $39;
label = 27;
break L9;
}
}
} else {
$rc$02$us$i = 1;
while (1) {
$41 = HEAP32[$16 >> 2] | 0;
$42 = $41 & 3;
$43 = ($42 | 0) == 0;
if ($43) {
$rc$07 = $rc$02$us$i;
label = 26;
break L9;
}
$44 = HEAP32[$26 >> 2] | 0;
$45 = _zbar_video_next_image($44) | 0;
$46 = ($45 | 0) == (0 | 0);
if ($46) {
$rc$03 = -1;
label = 27;
break L9;
}
__zbar_process_image($proc, $45) | 0;
_zbar_image_destroy($45);
_clock_gettime(0, $now$i$i | 0) | 0;
$47 = HEAP32[$timeout >> 2] | 0;
$48 = HEAP32[$now$i$i >> 2] | 0;
$49 = ($47 - $48) | 0;
$50 = ($49 * 1000) | 0;
$51 = HEAP32[$31 >> 2] | 0;
$52 = HEAP32[$32 >> 2] | 0;
$53 = ($51 - $52) | 0;
$54 = (($53 | 0) / 1000000) & -1;
$55 = ($54 + $50) | 0;
$56 = ($55 | 0) < 0;
$57 = $56 ? 0 : $55;
$58 = $57 >>> 0 > 15;
$reltime$0$us$i = $58 ? 15 : $57;
$59 = __zbar_processor_input_wait($proc, 0, $reltime$0$us$i) | 0;
$60 = ($59 | 0) > 0;
if ($60) {
$rc$02$us$i = $59;
} else {
$rc$03 = $59;
label = 27;
break L9;
}
}
}
}
} while (0);
if ((label | 0) == 19) {
$rc$02$i = 1;
while (1) {
$66 = HEAP32[$16 >> 2] | 0;
$67 = $66 & 3;
$68 = ($67 | 0) == 0;
if ($68) {
$rc$07 = $rc$02$i;
label = 26;
break L9;
}
_clock_gettime(0, $now$i$i | 0) | 0;
$69 = HEAP32[$70 >> 2] | 0;
$71 = HEAP32[$72 >> 2] | 0;
$73 = ($69 - $71) | 0;
$74 = ($73 * 1000) | 0;
$75 = HEAP32[$76 >> 2] | 0;
$77 = HEAP32[$78 >> 2] | 0;
$79 = ($75 - $77) | 0;
$80 = (($79 | 0) / 1000000) & -1;
$81 = ($80 + $74) | 0;
$82 = ($81 | 0) < 0;
$83 = $82 ? 0 : $81;
$84 = __zbar_processor_input_wait($proc, 0, $83) | 0;
$85 = ($84 | 0) > 0;
if ($85) {
$rc$02$i = $84;
} else {
$rc$03 = $84;
label = 27;
break;
}
}
} else if ((label | 0) == 20) {
$rc$02$us3$i = 1;
while (1) {
$61 = HEAP32[$16 >> 2] | 0;
$62 = $61 & 3;
$63 = ($62 | 0) == 0;
if ($63) {
$rc$07 = $rc$02$us3$i;
label = 26;
break L9;
}
$64 = __zbar_processor_input_wait($proc, 0, -1) | 0;
$65 = ($64 | 0) > 0;
if ($65) {
$rc$02$us3$i = $64;
} else {
$rc$03 = $64;
label = 27;
break;
}
}
}
} else {
$86 = ($waiter$0$i + 4) | 0;
$87 = ($proc + 172) | 0;
$88 = __zbar_event_wait($86, $87, $timeout) | 0;
$89 = ($88 | 0) < 1;
if ($89) {
$rc$03 = $88;
label = 27;
} else {
$rc$07 = $88;
label = 26;
}
}
} while (0);
if ((label | 0) == 26) {
$90 = HEAP32[$17 >> 2] | 0;
$91 = ($90 | 0) == 0;
if ($91) {
$rc$03 = $rc$07;
label = 27;
} else {
$rc$02 = $rc$07;
}
}
do {
if ((label | 0) == 27) {
$92 = HEAP32[$16 >> 2] | 0;
$93 = $92 & 128;
HEAP32[$16 >> 2] = $93;
$94 = ($proc + 188) | 0;
HEAP32[$94 >> 2] = 0;
$95 = HEAP32[$0 >> 2] | 0;
$96 = ($95 | 0) == 0;
if (!$96) {
$112 = ($waiter$0$i + 4) | 0;
$113 = ($proc + 172) | 0;
__zbar_event_wait($112, $113, 0) | 0;
$rc$02 = $rc$03;
break;
}
$waiter$05$i = HEAP32[$10 >> 2] | 0;
$97 = ($waiter$05$i | 0) == (0 | 0);
L43: do {
if ($97) {
$waiter$04$i = 0;
} else {
$prev$06$i = 0;
$waiter$07$i = $waiter$05$i;
while (1) {
$98 = ($waiter$07$i + 16) | 0;
$99 = HEAP32[$98 >> 2] | 0;
$100 = $99 & 3;
$101 = ($100 | 0) == 0;
if ($101) {
break;
}
HEAP32[$94 >> 2] = $waiter$07$i;
$waiter$0$i1 = HEAP32[$waiter$07$i >> 2] | 0;
$102 = ($waiter$0$i1 | 0) == (0 | 0);
if ($102) {
$waiter$04$i = 0;
break L43;
} else {
$prev$06$i$phi = $waiter$07$i;
$waiter$07$i = $waiter$0$i1;
$prev$06$i = $prev$06$i$phi;
}
}
$103 = ($prev$06$i | 0) == (0 | 0);
$104 = HEAP32[$waiter$07$i >> 2] | 0;
if ($103) {
HEAP32[$10 >> 2] = $104;
} else {
HEAP32[$prev$06$i >> 2] = $104;
}
$105 = HEAP32[$waiter$07$i >> 2] | 0;
$106 = ($105 | 0) == (0 | 0);
if ($106) {
$107 = ($proc + 184) | 0;
HEAP32[$107 >> 2] = $prev$06$i;
}
HEAP32[$waiter$07$i >> 2] = 0;
HEAP32[$0 >> 2] = 1;
$108 = ($waiter$07$i + 12) | 0;
$109 = HEAP32[$108 >> 2] | 0;
$110 = ($proc + 176) | 0;
HEAP32[$110 >> 2] = $109;
$waiter$04$i = $waiter$07$i;
}
} while (0);
$111 = ($waiter$04$i | 0) == ($waiter$0$i | 0);
if ($111) {
$rc$02 = $rc$03;
} else {
___assert_fail(3864 | 0, 3816 | 0, 212, 3880 | 0);
// unreachable;
}
}
} while (0);
$114 = ($rc$02 | 0) > 0;
if ($114) {
$115 = HEAP32[$16 >> 2] | 0;
$116 = $115 & 128;
$117 = ($116 | 0) == 0;
$rc$0$ = $117 ? $rc$02 : -1;
$rc$1 = $rc$0$;
} else {
$rc$1 = $rc$02;
}
$118 = HEAP32[$0 >> 2] | 0;
$119 = ($118 | 0) == 1;
if (!$119) {
___assert_fail(3904 | 0, 3816 | 0, 220, 3880 | 0);
// unreachable;
}
HEAP32[$0 >> 2] = $1;
$120 = ($waiter$0$i | 0) == (0 | 0);
if ($120) {
STACKTOP = sp;
return $rc$1 | 0;
}
$121 = HEAP32[$2 >> 2] | 0;
HEAP32[$waiter$0$i >> 2] = $121;
HEAP32[$2 >> 2] = $waiter$0$i;
STACKTOP = sp;
return $rc$1 | 0;
}
function __zbar_event_init($event) {
$event = $event | 0;
var $0 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
HEAP32[$event >> 2] = 0;
$0 = ($event + 4) | 0;
HEAP32[$0 >> 2] = -1;
STACKTOP = sp;
return 0;
}
function __zbar_event_destroy($event) {
$event = $event | 0;
var $0 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
HEAP32[$event >> 2] = -1;
$0 = ($event + 4) | 0;
HEAP32[$0 >> 2] = -1;
STACKTOP = sp;
return;
}
function __zbar_event_trigger($event) {
$event = $event | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$i = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$i = sp;
HEAP32[$event >> 2] = 1;
$0 = ($event + 4) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) > -1;
if (!$2) {
STACKTOP = sp;
return;
}
HEAP32[$i >> 2] = 0;
$3 = _write($1 | 0, $i | 0, 4) | 0;
$4 = ($3 | 0) < 0;
if ($4) {
_perror(3928 | 0);
}
HEAP32[$0 >> 2] = -1;
STACKTOP = sp;
return;
}
function __zbar_event_wait($event, $lock, $timeout) {
$event = $event | 0;
$lock = $lock | 0;
$timeout = $timeout | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0;
var $26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$5 = 0,
$6 = 0;
var $7 = 0,
$8 = 0,
$9 = 0,
$remns$i = 0,
$sleepns$i = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$sleepns$i = (sp + 8) | 0;
$remns$i = sp;
$0 = HEAP32[$event >> 2] | 0;
$1 = ($0 | 0) == 0;
L1: do {
if ($1) {
$2 = ($timeout | 0) == (0 | 0);
if ($2) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
_clock_gettime(0, $sleepns$i | 0) | 0;
$3 = HEAP32[$timeout >> 2] | 0;
$4 = HEAP32[$sleepns$i >> 2] | 0;
$5 = ($3 - $4) | 0;
$6 = ($5 * 1000) | 0;
$7 = ($timeout + 4) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($sleepns$i + 4) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($8 - $10) | 0;
$12 = (($11 | 0) / 1000000) & -1;
$13 = ($12 + $6) | 0;
$14 = ($13 | 0) < 0;
$15 = $14 ? 0 : $13;
$16 = ($15 | 0) == 0;
if (!$16) {
$17 = ($15 | 0) > 0;
if (!$17) {
___assert_fail(4312 | 0, 4088 | 0, 33, 4328 | 0);
// unreachable;
}
$18 = (($15 | 0) / 1000) & -1;
HEAP32[$sleepns$i >> 2] = $18;
$19 = ($15 | 0) % 1000 & -1;
$20 = ($19 * 1000000) | 0;
$21 = ($sleepns$i + 4) | 0;
HEAP32[$21 >> 2] = $20;
$22 = _nanosleep($sleepns$i | 0, $remns$i | 0) | 0;
$23 = ($22 | 0) == 0;
if (!$23) {
$24 = ___errno_location() | 0;
while (1) {
$25 = HEAP32[$24 >> 2] | 0;
$26 = ($25 | 0) == 4;
if (!$26) {
break L1;
}
$27 = $remns$i;
$28 = $27;
$29 = HEAP32[$28 >> 2] | 0;
$30 = ($27 + 4) | 0;
$31 = $30;
$32 = HEAP32[$31 >> 2] | 0;
$33 = $sleepns$i;
$34 = $33;
HEAP32[$34 >> 2] = $29;
$35 = ($33 + 4) | 0;
$36 = $35;
HEAP32[$36 >> 2] = $32;
$37 = _nanosleep($sleepns$i | 0, $remns$i | 0) | 0;
$38 = ($37 | 0) == 0;
if ($38) {
break;
}
}
}
}
}
} while (0);
$39 = HEAP32[$event >> 2] | 0;
$40 = ($39 | 0) == 0;
$41 = $40 & 1;
HEAP32[$event >> 2] = 0;
$$0 = $41;
STACKTOP = sp;
return $$0 | 0;
}
function __zbar_processor_input_wait($proc, $event, $timeout) {
$proc = $proc | 0;
$event = $event | 0;
$timeout = $timeout | 0;
var $$0 = 0,
$$pre$i = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0;
var $25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0;
var $43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$i$0$i = 0,
$i$0$in$i = 0;
var $i$0$in$ph$i = 0,
$rc$0$ph$i = 0,
$remns$i = 0,
$sleepns$i = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$sleepns$i = (sp + 8) | 0;
$remns$i = sp;
$0 = ($proc + 196) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 + 12) | 0;
$3 = HEAP32[$2 >> 2] | 0;
$4 = ($3 | 0) == 0;
if ($4) {
$33 = ($timeout | 0) == 0;
if ($33) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
$34 = ($timeout | 0) > 0;
if (!$34) {
___assert_fail(4312 | 0, 4088 | 0, 33, 4328 | 0);
// unreachable;
}
$35 = (($timeout | 0) / 1000) & -1;
HEAP32[$sleepns$i >> 2] = $35;
$36 = ($timeout | 0) % 1000 & -1;
$37 = ($36 * 1000000) | 0;
$38 = ($sleepns$i + 4) | 0;
HEAP32[$38 >> 2] = $37;
$39 = _nanosleep($sleepns$i | 0, $remns$i | 0) | 0;
$40 = ($39 | 0) == 0;
if ($40) {
$$0 = 1;
STACKTOP = sp;
return $$0 | 0;
}
$41 = ___errno_location() | 0;
while (1) {
$42 = HEAP32[$41 >> 2] | 0;
$43 = ($42 | 0) == 4;
if (!$43) {
$$0 = 1;
label = 25;
break;
}
$44 = $remns$i;
$45 = $44;
$46 = HEAP32[$45 >> 2] | 0;
$47 = ($44 + 4) | 0;
$48 = $47;
$49 = HEAP32[$48 >> 2] | 0;
$50 = $sleepns$i;
$51 = $50;
HEAP32[$51 >> 2] = $46;
$52 = ($50 + 4) | 0;
$53 = $52;
HEAP32[$53 >> 2] = $49;
$54 = _nanosleep($sleepns$i | 0, $remns$i | 0) | 0;
$55 = ($54 | 0) == 0;
if ($55) {
$$0 = 1;
label = 25;
break;
}
}
if ((label | 0) == 25) {
STACKTOP = sp;
return $$0 | 0;
}
}
$5 = ($event | 0) == (0 | 0);
if (!$5) {
$6 = ($1 + 28) | 0;
$7 = HEAP32[$6 >> 2] | 0;
$8 = ($event + 4) | 0;
HEAP32[$8 >> 2] = $7;
}
$9 = ($1 + 32) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($10 | 0) == (0 | 0);
if (!$11) {
FUNCTION_TABLE_iii[$10 & 7]($proc, -1) | 0;
}
$12 = HEAP32[$2 >> 2] | 0;
$13 = ($12 | 0) == 0;
if ($13) {
___assert_fail(4272 | 0, 4088 | 0, 240, 4280 | 0);
// unreachable;
}
$14 = ($1 + 16) | 0;
$15 = HEAP32[$14 >> 2] | 0;
$16 = _poll($15 | 0, $12 | 0, $timeout | 0) | 0;
$17 = ($16 | 0) < 1;
if ($17) {
$$0 = $16;
STACKTOP = sp;
return $$0 | 0;
}
$18 = HEAP32[$2 >> 2] | 0;
$19 = ($1 + 20) | 0;
$i$0$in$ph$i = $18;
$rc$0$ph$i = $16;
L31: while (1) {
$i$0$in$i = $i$0$in$ph$i;
while (1) {
$i$0$i = ($i$0$in$i + -1) | 0;
$20 = ($i$0$in$i | 0) > 0;
if (!$20) {
break L31;
}
$21 = HEAP32[$14 >> 2] | 0;
$22 = ((($21 + ($i$0$i << 3)) | 0) + 6) | 0;
$23 = HEAP16[$22 >> 1] | 0;
$24 = ($23 << 16) >> 16 == 0;
if ($24) {
$i$0$in$i = $i$0$i;
} else {
break;
}
}
$25 = HEAP32[$19 >> 2] | 0;
$26 = ($25 + ($i$0$i << 2)) | 0;
$27 = HEAP32[$26 >> 2] | 0;
$28 = ($27 | 0) == (0 | 0);
if ($28) {
$30 = $21;
} else {
FUNCTION_TABLE_iii[$27 & 7]($proc, $i$0$i) | 0;
$$pre$i = HEAP32[$14 >> 2] | 0;
$30 = $$pre$i;
}
$29 = ((($30 + ($i$0$i << 3)) | 0) + 6) | 0;
HEAP16[$29 >> 1] = 0;
$31 = ($rc$0$ph$i + -1) | 0;
$i$0$in$ph$i = $i$0$i;
$rc$0$ph$i = $31;
}
$32 = ($rc$0$ph$i | 0) == 0;
if ($32) {
$$0 = 1;
STACKTOP = sp;
return $$0 | 0;
} else {
___assert_fail(4304 | 0, 4088 | 0, 253, 4280 | 0);
// unreachable;
}
return 0 | 0;
}
function __zbar_processor_init($proc) {
$proc = $proc | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0;
var $26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$5 = 0,
$6 = 0;
var $7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = _calloc(1, 36) | 0;
$1 = ($proc + 196) | 0;
HEAP32[$1 >> 2] = $0;
$2 = ($0 + 24) | 0;
$3 = ($0 + 28) | 0;
HEAP32[$3 >> 2] = -1;
HEAP32[$2 >> 2] = -1;
$4 = ($proc + 88) | 0;
$5 = HEAP32[$4 >> 2] | 0;
$6 = ($5 | 0) == 0;
if ($6) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$7 = _pipe($2 | 0) | 0;
$8 = ($7 | 0) == 0;
if ($8) {
$20 = HEAP32[$2 >> 2] | 0;
_add_poll($proc, $20, 1);
$21 = HEAP32[$1 >> 2] | 0;
$22 = HEAP32[$21 >> 2] | 0;
$23 = ($21 + 12) | 0;
HEAP32[$23 >> 2] = $22;
$24 = ($21 + 16) | 0;
$25 = HEAP32[$24 >> 2] | 0;
$26 = HEAP32[$23 >> 2] | 0;
$27 = $26 << 3;
$28 = _realloc($25, $27) | 0;
HEAP32[$24 >> 2] = $28;
$29 = ($21 + 20) | 0;
$30 = HEAP32[$29 >> 2] | 0;
$31 = HEAP32[$23 >> 2] | 0;
$32 = $31 << 2;
$33 = _realloc($30, $32) | 0;
HEAP32[$29 >> 2] = $33;
$34 = HEAP32[$24 >> 2] | 0;
$35 = ($21 + 4) | 0;
$36 = HEAP32[$35 >> 2] | 0;
$37 = $22 << 3;
_memcpy($34 | 0, $36 | 0, $37 | 0) | 0;
$38 = HEAP32[$29 >> 2] | 0;
$39 = ($21 + 8) | 0;
$40 = HEAP32[$39 >> 2] | 0;
$41 = $22 << 2;
_memcpy($38 | 0, $40 | 0, $41 | 0) | 0;
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$9 = HEAP32[$proc >> 2] | 0;
$10 = ($9 | 0) == 1381123450;
if (!$10) {
___assert_fail(4208 | 0, 4240 | 0, 150, 4256 | 0);
// unreachable;
}
$11 = ___errno_location() | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($proc + 12) | 0;
HEAP32[$13 >> 2] = $12;
$14 = ($proc + 16) | 0;
HEAP32[$14 >> 2] = -2;
$15 = ($proc + 20) | 0;
HEAP32[$15 >> 2] = 5;
$16 = ($proc + 24) | 0;
HEAP32[$16 >> 2] = 3936;
$17 = ($proc + 28) | 0;
HEAP32[$17 >> 2] = 3960;
$18 = HEAP32[80 >> 2] | 0;
$19 = ($18 | 0) > 0;
if (!$19) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
__zbar_error_spew($proc, 0) | 0;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
function _add_poll($proc, $fd, $handler) {
$proc = $proc | 0;
$fd = $fd | 0;
$handler = $handler | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$5 = 0;
var $6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$i = 0,
$vararg_buffer = 0,
$vararg_ptr1 = 0,
$vararg_ptr2 = 0,
$vararg_ptr3 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 32) | 0;
$vararg_buffer = sp;
$i = (sp + 16) | 0;
$0 = ($proc + 196) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($2 + 1) | 0;
HEAP32[$1 >> 2] = $3;
HEAP32[$i >> 2] = $2;
$4 = HEAP32[80 >> 2] | 0;
$5 = ($4 | 0) > 4;
if ($5) {
$6 = HEAP32[_stderr >> 2] | 0;
HEAP32[$vararg_buffer >> 2] = 4144;
$vararg_ptr1 = ($vararg_buffer + 4) | 0;
HEAP32[$vararg_ptr1 >> 2] = $2;
$vararg_ptr2 = ($vararg_buffer + 8) | 0;
HEAP32[$vararg_ptr2 >> 2] = $fd;
$vararg_ptr3 = ($vararg_buffer + 12) | 0;
HEAP32[$vararg_ptr3 >> 2] = $handler;
_fprintf($6 | 0, 4112 | 0, $vararg_buffer | 0) | 0;
}
$7 = ($1 + 4) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = HEAP32[$1 >> 2] | 0;
$10 = $9 << 3;
$11 = _realloc($8, $10) | 0;
HEAP32[$7 >> 2] = $11;
$12 = ($1 + 8) | 0;
$13 = HEAP32[$12 >> 2] | 0;
$14 = HEAP32[$1 >> 2] | 0;
$15 = $14 << 2;
$16 = _realloc($13, $15) | 0;
HEAP32[$12 >> 2] = $16;
$17 = HEAP32[$i >> 2] | 0;
$18 = HEAP32[$7 >> 2] | 0;
$19 = ($18 + ($17 << 3)) | 0;
$20 = $19;
$21 = $20;
HEAP32[$21 >> 2] = 0;
$22 = ($20 + 4) | 0;
$23 = $22;
HEAP32[$23 >> 2] = 0;
$24 = HEAP32[$7 >> 2] | 0;
$25 = ($24 + ($17 << 3)) | 0;
HEAP32[$25 >> 2] = $fd;
$26 = ((($24 + ($17 << 3)) | 0) + 4) | 0;
HEAP16[$26 >> 1] = 1;
$27 = HEAP32[$12 >> 2] | 0;
$28 = ($27 + ($17 << 2)) | 0;
HEAP32[$28 >> 2] = $handler;
$29 = ($proc + 116) | 0;
$30 = HEAP32[$29 >> 2] | 0;
$31 = ($30 | 0) == 0;
if (!$31) {
$32 = ($1 + 28) | 0;
$33 = HEAP32[$32 >> 2] | 0;
$34 = ($33 | 0) > -1;
if ($34) {
_write($33 | 0, $i | 0, 4) | 0;
STACKTOP = sp;
return;
} else {
___assert_fail(4160 | 0, 4184 | 0, 85, 4144 | 0);
// unreachable;
}
}
$35 = ($proc + 88) | 0;
$36 = HEAP32[$35 >> 2] | 0;
$37 = ($36 | 0) == 0;
if (!$37) {
STACKTOP = sp;
return;
}
$38 = HEAP32[$1 >> 2] | 0;
$39 = ($1 + 12) | 0;
HEAP32[$39 >> 2] = $38;
$40 = HEAP32[$7 >> 2] | 0;
$41 = ($1 + 16) | 0;
HEAP32[$41 >> 2] = $40;
$42 = HEAP32[$12 >> 2] | 0;
$43 = ($1 + 20) | 0;
HEAP32[$43 >> 2] = $42;
STACKTOP = sp;
return;
}
function _proc_kick_handler($proc, $i) {
$proc = $proc | 0;
$i = $i | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$junk = 0,
$vararg_buffer = 0,
$vararg_ptr1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$vararg_buffer = sp;
$junk = (sp + 8) | 0;
$0 = ($proc + 196) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = HEAP32[80 >> 2] | 0;
$3 = ($2 | 0) > 4;
if ($3) {
$4 = HEAP32[_stderr >> 2] | 0;
$5 = HEAP32[$1 >> 2] | 0;
HEAP32[$vararg_buffer >> 2] = 4048;
$vararg_ptr1 = ($vararg_buffer + 4) | 0;
HEAP32[$vararg_ptr1 >> 2] = $5;
_fprintf($4 | 0, 4024 | 0, $vararg_buffer | 0) | 0;
}
$6 = ($1 + 24) | 0;
$7 = HEAP32[$6 >> 2] | 0;
$8 = _read($7 | 0, $junk | 0, 8) | 0;
$9 = ($proc + 88) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($10 | 0) == 0;
if ($11) {
___assert_fail(4072 | 0, 4088 | 0, 225, 4048 | 0);
// unreachable;
} else {
$12 = HEAP32[$0 >> 2] | 0;
$13 = HEAP32[$12 >> 2] | 0;
$14 = ($12 + 12) | 0;
HEAP32[$14 >> 2] = $13;
$15 = ($12 + 16) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = HEAP32[$14 >> 2] | 0;
$18 = $17 << 3;
$19 = _realloc($16, $18) | 0;
HEAP32[$15 >> 2] = $19;
$20 = ($12 + 20) | 0;
$21 = HEAP32[$20 >> 2] | 0;
$22 = HEAP32[$14 >> 2] | 0;
$23 = $22 << 2;
$24 = _realloc($21, $23) | 0;
HEAP32[$20 >> 2] = $24;
$25 = HEAP32[$15 >> 2] | 0;
$26 = ($12 + 4) | 0;
$27 = HEAP32[$26 >> 2] | 0;
$28 = $13 << 3;
_memcpy($25 | 0, $27 | 0, $28 | 0) | 0;
$29 = HEAP32[$20 >> 2] | 0;
$30 = ($12 + 8) | 0;
$31 = HEAP32[$30 >> 2] | 0;
$32 = $13 << 2;
_memcpy($29 | 0, $31 | 0, $32 | 0) | 0;
STACKTOP = sp;
return $8 | 0;
}
return 0 | 0;
}
function __zbar_processor_cleanup($proc) {
$proc = $proc | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($proc + 196) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($proc + 88) | 0;
$3 = HEAP32[$2 >> 2] | 0;
$4 = ($3 | 0) == 0;
if (!$4) {
$5 = ($1 + 24) | 0;
$6 = HEAP32[$5 >> 2] | 0;
_close($6 | 0) | 0;
$7 = ($1 + 28) | 0;
$8 = HEAP32[$7 >> 2] | 0;
_close($8 | 0) | 0;
HEAP32[$7 >> 2] = -1;
HEAP32[$5 >> 2] = -1;
}
$9 = ($1 + 4) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($10 | 0) == (0 | 0);
if (!$11) {
_free($10);
HEAP32[$9 >> 2] = 0;
$12 = HEAP32[$2 >> 2] | 0;
$13 = ($12 | 0) == 0;
if ($13) {
$14 = ($1 + 16) | 0;
HEAP32[$14 >> 2] = 0;
}
}
$15 = ($1 + 8) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = ($16 | 0) == (0 | 0);
if (!$17) {
_free($16);
HEAP32[$15 >> 2] = 0;
$18 = HEAP32[$2 >> 2] | 0;
$19 = ($18 | 0) == 0;
if ($19) {
$20 = ($1 + 20) | 0;
HEAP32[$20 >> 2] = 0;
}
}
$21 = ($1 + 16) | 0;
$22 = HEAP32[$21 >> 2] | 0;
$23 = ($22 | 0) == (0 | 0);
if (!$23) {
_free($22);
HEAP32[$21 >> 2] = 0;
}
$24 = ($1 + 20) | 0;
$25 = HEAP32[$24 >> 2] | 0;
$26 = ($25 | 0) == (0 | 0);
if ($26) {
$27 = HEAP32[$0 >> 2] | 0;
_free($27);
HEAP32[$0 >> 2] = 0;
STACKTOP = sp;
return 0;
}
_free($25);
HEAP32[$24 >> 2] = 0;
$27 = HEAP32[$0 >> 2] | 0;
_free($27);
HEAP32[$0 >> 2] = 0;
STACKTOP = sp;
return 0;
}
function __zbar_processor_enable($proc) {
$proc = $proc | 0;
var $$lcssa = 0,
$$pre$i = 0,
$$pre$phi$iZ2D = 0,
$$pre1$i = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0;
var $23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0;
var $41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0;
var $i$i = 0,
$storemerge$i = 0,
$storemerge$in$i = 0,
$vararg_buffer = 0,
$vararg_ptr1 = 0,
$vararg_ptr2 = 0,
$vararg_ptr3 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 32) | 0;
$vararg_buffer = sp;
$i$i = (sp + 16) | 0;
$0 = ($proc + 44) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = _zbar_video_get_fd($1) | 0;
$3 = ($2 | 0) < 0;
if ($3) {
STACKTOP = sp;
return 0;
}
$4 = ($proc + 96) | 0;
$5 = HEAP32[$4 >> 2] | 0;
$6 = ($5 | 0) == 0;
if (!$6) {
_add_poll($proc, $2, 2);
STACKTOP = sp;
return 0;
}
$7 = ($proc + 196) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = HEAP32[$8 >> 2] | 0;
$10 = ($8 + 4) | 0;
$storemerge$in$i = $9;
while (1) {
$storemerge$i = ($storemerge$in$i + -1) | 0;
$11 = ($storemerge$in$i | 0) > 0;
if (!$11) {
$$lcssa = 0;
break;
}
$12 = HEAP32[$10 >> 2] | 0;
$13 = ($12 + ($storemerge$i << 3)) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = ($14 | 0) == ($2 | 0);
if ($15) {
$$lcssa = 1;
break;
} else {
$storemerge$in$i = $storemerge$i;
}
}
HEAP32[$i$i >> 2] = $storemerge$i;
$16 = HEAP32[80 >> 2] | 0;
$17 = ($16 | 0) > 4;
if ($17) {
$18 = HEAP32[_stderr >> 2] | 0;
HEAP32[$vararg_buffer >> 2] = 4008;
$vararg_ptr1 = ($vararg_buffer + 4) | 0;
HEAP32[$vararg_ptr1 >> 2] = $storemerge$i;
$vararg_ptr2 = ($vararg_buffer + 8) | 0;
HEAP32[$vararg_ptr2 >> 2] = $2;
$vararg_ptr3 = ($vararg_buffer + 12) | 0;
HEAP32[$vararg_ptr3 >> 2] = $9;
_fprintf($18 | 0, 3984 | 0, $vararg_buffer | 0) | 0;
}
if ($$lcssa) {
$19 = HEAP32[$8 >> 2] | 0;
$20 = ($storemerge$in$i | 0) < ($19 | 0);
if ($20) {
$21 = ($19 - $storemerge$i) | 0;
$22 = ($21 + -1) | 0;
$23 = HEAP32[$10 >> 2] | 0;
$24 = ($23 + ($storemerge$i << 3)) | 0;
$25 = ($23 + ($storemerge$in$i << 3)) | 0;
$26 = $22 << 3;
_memmove($24 | 0, $25 | 0, $26 | 0) | 0;
$27 = ($8 + 8) | 0;
$28 = HEAP32[$27 >> 2] | 0;
$29 = ($28 + ($storemerge$i << 2)) | 0;
$30 = ($28 + ($storemerge$in$i << 2)) | 0;
_memmove($29 | 0, $30 | 0, $22 | 0) | 0;
$$pre$i = HEAP32[$8 >> 2] | 0;
$$pre$phi$iZ2D = $27;
$32 = $$pre$i;
} else {
$$pre1$i = ($8 + 8) | 0;
$$pre$phi$iZ2D = $$pre1$i;
$32 = $19;
}
$31 = ($32 + -1) | 0;
HEAP32[$8 >> 2] = $31;
$33 = HEAP32[$10 >> 2] | 0;
$34 = HEAP32[$8 >> 2] | 0;
$35 = $34 << 3;
$36 = _realloc($33, $35) | 0;
HEAP32[$10 >> 2] = $36;
$37 = HEAP32[$$pre$phi$iZ2D >> 2] | 0;
$38 = HEAP32[$8 >> 2] | 0;
$39 = $38 << 2;
$40 = _realloc($37, $39) | 0;
HEAP32[$$pre$phi$iZ2D >> 2] = $40;
HEAP32[$i$i >> 2] = 0;
}
$41 = ($proc + 116) | 0;
$42 = HEAP32[$41 >> 2] | 0;
$43 = ($42 | 0) == 0;
if (!$43) {
$44 = ($8 + 28) | 0;
$45 = HEAP32[$44 >> 2] | 0;
_write($45 | 0, $i$i | 0, 4) | 0;
STACKTOP = sp;
return 0;
}
$46 = ($proc + 88) | 0;
$47 = HEAP32[$46 >> 2] | 0;
$48 = ($47 | 0) == 0;
if (!$48) {
STACKTOP = sp;
return 0;
}
$49 = HEAP32[$8 >> 2] | 0;
$50 = ($8 + 12) | 0;
HEAP32[$50 >> 2] = $49;
$51 = HEAP32[$10 >> 2] | 0;
$52 = ($8 + 16) | 0;
HEAP32[$52 >> 2] = $51;
$53 = ($8 + 8) | 0;
$54 = HEAP32[$53 >> 2] | 0;
$55 = ($8 + 20) | 0;
HEAP32[$55 >> 2] = $54;
STACKTOP = sp;
return 0;
}
function _proc_video_handler($proc, $i) {
$proc = $proc | 0;
$i = $i | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
__zbar_processor_lock($proc) | 0;
$0 = ($proc + 96) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == 0;
if (!$2) {
$3 = ($proc + 44) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = _zbar_video_next_image($4) | 0;
$6 = ($5 | 0) == (0 | 0);
if (!$6) {
__zbar_process_image($proc, $5) | 0;
__zbar_processor_unlock($proc, 0) | 0;
_zbar_image_destroy($5);
STACKTOP = sp;
return 0;
}
}
__zbar_processor_unlock($proc, 0) | 0;
STACKTOP = sp;
return 0;
}
function __zbar_video_open($vdo, $device) {
$vdo = $vdo | 0;
$device = $device | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP32[$vdo >> 2] | 0;
$1 = ($0 | 0) == 1381123450;
if (!$1) {
___assert_fail(4408 | 0, 4440 | 0, 150, 4456 | 0);
// unreachable;
}
$2 = ($vdo + 16) | 0;
HEAP32[$2 >> 2] = -1;
$3 = ($vdo + 20) | 0;
HEAP32[$3 >> 2] = 3;
$4 = ($vdo + 24) | 0;
HEAP32[$4 >> 2] = 4344;
$5 = ($vdo + 28) | 0;
HEAP32[$5 >> 2] = 4368;
$6 = HEAP32[80 >> 2] | 0;
$7 = ($6 | 0) > 0;
if (!$7) {
STACKTOP = sp;
return -1;
}
__zbar_error_spew($vdo, 0) | 0;
STACKTOP = sp;
return -1;
}
function _zbar_image_convert_resize($src, $fmt, $width, $height) {
$src = $src | 0;
$fmt = $fmt | 0;
$width = $width | 0;
$height = $height | 0;
var $$$i = 0,
$$$i2 = 0,
$$0 = 0,
$$0$i = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0;
var $23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0;
var $41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0;
var $6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0;
var $78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$i$01$i = 0,
$i$01$i1 = 0;
var $or$cond = 0,
$or$cond10 = 0,
$or$cond11 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = _zbar_image_create() | 0;
HEAP32[$0 >> 2] = $fmt;
$1 = ($0 + 4) | 0;
HEAP32[$1 >> 2] = $width;
$2 = ($0 + 8) | 0;
HEAP32[$2 >> 2] = $height;
$3 = ($src + 20) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($src + 24) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($src + 28) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($src + 32) | 0;
$10 = HEAP32[$9 >> 2] | 0;
_zbar_image_set_crop($0, $4, $6, $8, $10);
$11 = HEAP32[$src >> 2] | 0;
$12 = ($11 | 0) == ($fmt | 0);
if ($12) {
$13 = ($src + 4) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = ($14 | 0) == ($width | 0);
if ($15) {
$16 = ($src + 8) | 0;
$17 = HEAP32[$16 >> 2] | 0;
$18 = ($17 | 0) == ($height | 0);
if ($18) {
$19 = HEAP32[$1 >> 2] | 0;
$20 = ($19 | 0) == ($width | 0);
$21 = HEAP32[$2 >> 2] | 0;
$22 = ($21 | 0) == ($height | 0);
$or$cond10 = $20 & $22;
if (!$or$cond10) {
$35 = Math_imul($21, $19) | 0;
_convert_y_resize($0, $src, $35);
$$0 = $0;
STACKTOP = sp;
return $$0 | 0;
}
$23 = ($src + 12) | 0;
$24 = HEAP32[$23 >> 2] | 0;
$25 = ($0 + 12) | 0;
HEAP32[$25 >> 2] = $24;
$26 = ($src + 16) | 0;
$27 = HEAP32[$26 >> 2] | 0;
$28 = ($0 + 16) | 0;
HEAP32[$28 >> 2] = $27;
$29 = ($0 + 40) | 0;
HEAP32[$29 >> 2] = 4;
$30 = ($0 + 56) | 0;
HEAP32[$30 >> 2] = $src;
$31 = ($src + 44) | 0;
$32 = HEAP32[$31 >> 2] | 0;
$33 = ($32 + 1) | 0;
HEAP32[$31 >> 2] = $33;
$34 = ($32 | 0) > -2;
if ($34) {
$$0 = $0;
STACKTOP = sp;
return $$0 | 0;
} else {
___assert_fail(5904 | 0, 5912 | 0, 87, 5928 | 0);
// unreachable;
}
} else {
$i$01$i = 0;
}
} else {
$i$01$i = 0;
}
} else {
$i$01$i = 0;
}
while (1) {
$36 = (5944 + (($i$01$i * 12) | 0)) | 0;
$37 = HEAP32[$36 >> 2] | 0;
$38 = ($37 | 0) == ($11 | 0);
if ($38) {
$$0$i = $36;
break;
}
$39 = $i$01$i << 1;
$40 = $39 | 1;
$41 = $37 >>> 0 < $11 >>> 0;
$42 = $41 & 1;
$$$i = ($42 + $40) | 0;
$43 = ($$$i | 0) < 31;
if ($43) {
$i$01$i = $$$i;
} else {
$$0$i = 0;
break;
}
}
$44 = HEAP32[$0 >> 2] | 0;
$i$01$i1 = 0;
while (1) {
$45 = (5944 + (($i$01$i1 * 12) | 0)) | 0;
$46 = HEAP32[$45 >> 2] | 0;
$47 = ($46 | 0) == ($44 | 0);
if ($47) {
break;
}
$48 = $i$01$i1 << 1;
$49 = $48 | 1;
$50 = $46 >>> 0 < $44 >>> 0;
$51 = $50 & 1;
$$$i2 = ($51 + $49) | 0;
$52 = ($$$i2 | 0) < 31;
if ($52) {
$i$01$i1 = $$$i2;
} else {
$$0 = 0;
label = 24;
break;
}
}
if ((label | 0) == 24) {
STACKTOP = sp;
return $$0 | 0;
}
$53 = ($$0$i | 0) == (0 | 0);
$54 = ($45 | 0) == (0 | 0);
$or$cond = $53 | $54;
if ($or$cond) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$55 = ($$0$i + 4) | 0;
$56 = HEAP32[$55 >> 2] | 0;
$57 = (((5944 + (($i$01$i1 * 12) | 0)) | 0) + 4) | 0;
$58 = HEAP32[$57 >> 2] | 0;
$59 = ($56 | 0) == ($58 | 0);
if ($59) {
$60 = ($$0$i + 8) | 0;
$61 = HEAP32[$60 >> 2] | 0;
$62 = (((5944 + (($i$01$i1 * 12) | 0)) | 0) + 8) | 0;
$63 = HEAP32[$62 >> 2] | 0;
$64 = ($61 | 0) == ($63 | 0);
if ($64) {
$65 = ($src + 4) | 0;
$66 = HEAP32[$65 >> 2] | 0;
$67 = ($66 | 0) == ($width | 0);
if ($67) {
$68 = ($src + 8) | 0;
$69 = HEAP32[$68 >> 2] | 0;
$70 = ($69 | 0) == ($height | 0);
if ($70) {
$71 = HEAP32[$1 >> 2] | 0;
$72 = ($71 | 0) == ($width | 0);
$73 = HEAP32[$2 >> 2] | 0;
$74 = ($73 | 0) == ($height | 0);
$or$cond11 = $72 & $74;
if (!$or$cond11) {
$87 = Math_imul($73, $71) | 0;
_convert_y_resize($0, $src, $87);
$$0 = $0;
STACKTOP = sp;
return $$0 | 0;
}
$75 = ($src + 12) | 0;
$76 = HEAP32[$75 >> 2] | 0;
$77 = ($0 + 12) | 0;
HEAP32[$77 >> 2] = $76;
$78 = ($src + 16) | 0;
$79 = HEAP32[$78 >> 2] | 0;
$80 = ($0 + 16) | 0;
HEAP32[$80 >> 2] = $79;
$81 = ($0 + 40) | 0;
HEAP32[$81 >> 2] = 4;
$82 = ($0 + 56) | 0;
HEAP32[$82 >> 2] = $src;
$83 = ($src + 44) | 0;
$84 = HEAP32[$83 >> 2] | 0;
$85 = ($84 + 1) | 0;
HEAP32[$83 >> 2] = $85;
$86 = ($84 | 0) > -2;
if ($86) {
$$0 = $0;
STACKTOP = sp;
return $$0 | 0;
} else {
___assert_fail(5904 | 0, 5912 | 0, 87, 5928 | 0);
// unreachable;
}
}
}
}
}
$88 = (((((4624 + (($56 * 48) | 0)) | 0) + ($58 << 3)) | 0) + 4) | 0;
$89 = HEAP32[$88 >> 2] | 0;
$90 = ($0 + 40) | 0;
HEAP32[$90 >> 2] = 1;
FUNCTION_TABLE_viiii[$89 & 15]($0, $45, $src, $$0$i);
$91 = ($0 + 12) | 0;
$92 = HEAP32[$91 >> 2] | 0;
$93 = ($92 | 0) == (0 | 0);
if (!$93) {
$$0 = $0;
STACKTOP = sp;
return $$0 | 0;
}
_zbar_image_destroy($0);
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
function _convert_copy($dst, $dstfmt, $src, $srcfmt) {
$dst = $dst | 0;
$dstfmt = $dstfmt | 0;
$src = $src | 0;
$srcfmt = $srcfmt | 0;
var $$phi$trans$insert = 0,
$$pre = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$3 = 0;
var $4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($src + 4) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($dst + 4) | 0;
$3 = HEAP32[$2 >> 2] | 0;
$4 = ($1 | 0) == ($3 | 0);
if ($4) {
$5 = ($src + 8) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($dst + 8) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($6 | 0) == ($8 | 0);
if ($9) {
$10 = ($src + 12) | 0;
$11 = HEAP32[$10 >> 2] | 0;
$12 = ($dst + 12) | 0;
HEAP32[$12 >> 2] = $11;
$13 = ($src + 16) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = ($dst + 16) | 0;
HEAP32[$15 >> 2] = $14;
$16 = ($dst + 40) | 0;
HEAP32[$16 >> 2] = 4;
$17 = ($dst + 56) | 0;
HEAP32[$17 >> 2] = $src;
$18 = ($src + 44) | 0;
$19 = HEAP32[$18 >> 2] | 0;
$20 = ($19 + 1) | 0;
HEAP32[$18 >> 2] = $20;
$21 = ($19 | 0) > -2;
if ($21) {
STACKTOP = sp;
return;
} else {
___assert_fail(5904 | 0, 5912 | 0, 87, 5928 | 0);
// unreachable;
}
} else {
$23 = $8;
}
} else {
$$phi$trans$insert = ($dst + 8) | 0;
$$pre = HEAP32[$$phi$trans$insert >> 2] | 0;
$23 = $$pre;
}
$22 = Math_imul($23, $3) | 0;
_convert_y_resize($dst, $src, $22);
STACKTOP = sp;
return;
}
function _zbar_image_convert($src, $fmt) {
$src = $src | 0;
$fmt = $fmt | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($src + 4) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($src + 8) | 0;
$3 = HEAP32[$2 >> 2] | 0;
$4 = _zbar_image_convert_resize($src, $fmt, $1, $3) | 0;
STACKTOP = sp;
return $4 | 0;
}
function __zbar_best_format($src, $dst, $dsts) {
$src = $src | 0;
$dst = $dst | 0;
$dsts = $dsts | 0;
var $$$i = 0,
$$$i$us = 0,
$$$i3 = 0,
$$0 = 0,
$$0110 = 0,
$$0110$us = 0,
$$02$i = 0,
$$pre = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0;
var $2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0;
var $38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0;
var $56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0;
var $74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$9 = 0,
$cost$0 = 0,
$cost$0$us = 0,
$i$01$i = 0,
$i$01$i$us = 0,
$i$01$i2 = 0,
$min_cost$0$lcssa = 0,
$min_cost$0$mux = 0;
var $min_cost$0$mux$us = 0,
$min_cost$012 = 0,
$min_cost$012$us = 0,
$min_cost$1 = 0,
$min_cost$1$us = 0,
$notlhs = 0,
$notlhs$us = 0,
$notrhs = 0,
$notrhs$us = 0,
$or$cond$not = 0,
$or$cond$not$us = 0,
$vararg_buffer12 = 0,
$vararg_ptr1 = 0,
$vararg_ptr10 = 0,
$vararg_ptr11 = 0,
$vararg_ptr15 = 0,
$vararg_ptr16 = 0,
$vararg_ptr5 = 0,
$vararg_ptr6 = 0,
label = 0;
var sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$vararg_buffer12 = sp;
$0 = (sp + 12) | 0;
HEAP32[$0 >> 2] = $src;
$1 = ($dst | 0) != (0 | 0);
if ($1) {
HEAP32[$dst >> 2] = 0;
}
$2 = ($dsts | 0) == (0 | 0);
if ($2) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
$3 = HEAP32[$dsts >> 2] | 0;
$4 = ($3 | 0) == 0;
L7: do {
if ($4) {
$i$01$i2 = 0;
} else {
$$02$i = $dsts;
$8 = $3;
while (1) {
$9 = ($8 | 0) == ($src | 0);
$6 = ($$02$i + 4) | 0;
if ($9) {
break;
}
$5 = HEAP32[$6 >> 2] | 0;
$7 = ($5 | 0) == 0;
if ($7) {
$i$01$i2 = 0;
break L7;
} else {
$$02$i = $6;
$8 = $5;
}
}
$10 = HEAP32[80 >> 2] | 0;
$11 = ($10 | 0) > 7;
if ($11) {
$12 = HEAP32[_stderr >> 2] | 0;
HEAP32[$vararg_buffer12 >> 2] = 4944;
$vararg_ptr1 = ($vararg_buffer12 + 4) | 0;
HEAP32[$vararg_ptr1 >> 2] = $0;
_fprintf($12 | 0, 4912 | 0, $vararg_buffer12 | 0) | 0;
}
if (!$1) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$13 = HEAP32[$0 >> 2] | 0;
HEAP32[$dst >> 2] = $13;
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
} while (0);
while (1) {
$14 = (5944 + (($i$01$i2 * 12) | 0)) | 0;
$15 = HEAP32[$14 >> 2] | 0;
$16 = ($15 | 0) == ($src | 0);
if ($16) {
break;
}
$17 = $i$01$i2 << 1;
$18 = $17 | 1;
$19 = $15 >>> 0 < $src >>> 0;
$20 = $19 & 1;
$$$i3 = ($20 + $18) | 0;
$21 = ($$$i3 | 0) < 31;
if ($21) {
$i$01$i2 = $$$i3;
} else {
$$0 = -1;
label = 43;
break;
}
}
if ((label | 0) == 43) {
STACKTOP = sp;
return $$0 | 0;
}
$22 = ($14 | 0) == (0 | 0);
if ($22) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
$23 = HEAP32[80 >> 2] | 0;
$24 = ($23 | 0) > 7;
if ($24) {
$25 = HEAP32[_stderr >> 2] | 0;
HEAP32[$vararg_buffer12 >> 2] = 4944;
$vararg_ptr5 = ($vararg_buffer12 + 4) | 0;
HEAP32[$vararg_ptr5 >> 2] = $0;
$vararg_ptr6 = ($vararg_buffer12 + 8) | 0;
HEAP32[$vararg_ptr6 >> 2] = $src;
_fprintf($25 | 0, 4968 | 0, $vararg_buffer12 | 0) | 0;
$$pre = HEAP32[$dsts >> 2] | 0;
$26 = $$pre;
} else {
$26 = $3;
}
$27 = ($26 | 0) == 0;
L31: do {
if ($27) {
$min_cost$0$lcssa = -1;
} else {
$28 = (((5944 + (($i$01$i2 * 12) | 0)) | 0) + 4) | 0;
$29 = (((5944 + (($i$01$i2 * 12) | 0)) | 0) + 8) | 0;
$30 = HEAP32[_stderr >> 2] | 0;
if ($1) {
$$0110 = $dsts;
$59 = $26;
$min_cost$012 = -1;
} else {
$$0110$us = $dsts;
$34 = $26;
$min_cost$012$us = -1;
while (1) {
$i$01$i$us = 0;
while (1) {
$31 = (5944 + (($i$01$i$us * 12) | 0)) | 0;
$32 = HEAP32[$31 >> 2] | 0;
$33 = ($32 | 0) == ($34 | 0);
if ($33) {
label = 21;
break;
}
$35 = $i$01$i$us << 1;
$36 = $35 | 1;
$37 = $32 >>> 0 < $34 >>> 0;
$38 = $37 & 1;
$$$i$us = ($38 + $36) | 0;
$39 = ($$$i$us | 0) < 31;
if ($39) {
$i$01$i$us = $$$i$us;
} else {
$min_cost$1$us = $min_cost$012$us;
break;
}
}
if ((label | 0) == 21) {
label = 0;
$40 = ($31 | 0) == (0 | 0);
if ($40) {
$min_cost$1$us = $min_cost$012$us;
} else {
$41 = HEAP32[$28 >> 2] | 0;
$42 = (((5944 + (($i$01$i$us * 12) | 0)) | 0) + 4) | 0;
$43 = HEAP32[$42 >> 2] | 0;
$44 = ($41 | 0) == ($43 | 0);
if ($44) {
$45 = HEAP32[$29 >> 2] | 0;
$46 = (((5944 + (($i$01$i$us * 12) | 0)) | 0) + 8) | 0;
$47 = HEAP32[$46 >> 2] | 0;
$48 = ($45 | 0) == ($47 | 0);
if ($48) {
$cost$0$us = 0;
} else {
label = 24;
}
} else {
label = 24;
}
if ((label | 0) == 24) {
label = 0;
$49 = (((4624 + (($41 * 48) | 0)) | 0) + ($43 << 3)) | 0;
$50 = HEAP32[$49 >> 2] | 0;
$cost$0$us = $50;
}
$51 = HEAP32[80 >> 2] | 0;
$52 = ($51 | 0) > 7;
if ($52) {
HEAP32[$vararg_buffer12 >> 2] = $$0110$us;
$vararg_ptr10 = ($vararg_buffer12 + 4) | 0;
HEAP32[$vararg_ptr10 >> 2] = $34;
$vararg_ptr11 = ($vararg_buffer12 + 8) | 0;
HEAP32[$vararg_ptr11 >> 2] = $cost$0$us;
_fprintf($30 | 0, 4992 | 0, $vararg_buffer12 | 0) | 0;
}
$notlhs$us = ($cost$0$us | 0) < 0;
$notrhs$us = $min_cost$012$us >>> 0 <= $cost$0$us >>> 0;
$or$cond$not$us = $notrhs$us | $notlhs$us;
$min_cost$0$mux$us = $or$cond$not$us ? $min_cost$012$us : $cost$0$us;
$min_cost$1$us = $min_cost$0$mux$us;
}
}
$53 = ($$0110$us + 4) | 0;
$54 = HEAP32[$53 >> 2] | 0;
$55 = ($54 | 0) == 0;
if ($55) {
$min_cost$0$lcssa = $min_cost$1$us;
break L31;
} else {
$$0110$us = $53;
$34 = $54;
$min_cost$012$us = $min_cost$1$us;
}
}
}
while (1) {
$i$01$i = 0;
while (1) {
$56 = (5944 + (($i$01$i * 12) | 0)) | 0;
$57 = HEAP32[$56 >> 2] | 0;
$58 = ($57 | 0) == ($59 | 0);
if ($58) {
label = 32;
break;
}
$60 = $i$01$i << 1;
$61 = $60 | 1;
$62 = $57 >>> 0 < $59 >>> 0;
$63 = $62 & 1;
$$$i = ($63 + $61) | 0;
$64 = ($$$i | 0) < 31;
if ($64) {
$i$01$i = $$$i;
} else {
$min_cost$1 = $min_cost$012;
break;
}
}
if ((label | 0) == 32) {
label = 0;
$65 = ($56 | 0) == (0 | 0);
if ($65) {
$min_cost$1 = $min_cost$012;
} else {
$66 = HEAP32[$28 >> 2] | 0;
$67 = (((5944 + (($i$01$i * 12) | 0)) | 0) + 4) | 0;
$68 = HEAP32[$67 >> 2] | 0;
$69 = ($66 | 0) == ($68 | 0);
if ($69) {
$70 = HEAP32[$29 >> 2] | 0;
$71 = (((5944 + (($i$01$i * 12) | 0)) | 0) + 8) | 0;
$72 = HEAP32[$71 >> 2] | 0;
$73 = ($70 | 0) == ($72 | 0);
if ($73) {
$cost$0 = 0;
} else {
label = 35;
}
} else {
label = 35;
}
if ((label | 0) == 35) {
label = 0;
$74 = (((4624 + (($66 * 48) | 0)) | 0) + ($68 << 3)) | 0;
$75 = HEAP32[$74 >> 2] | 0;
$cost$0 = $75;
}
$76 = HEAP32[80 >> 2] | 0;
$77 = ($76 | 0) > 7;
if ($77) {
HEAP32[$vararg_buffer12 >> 2] = $$0110;
$vararg_ptr15 = ($vararg_buffer12 + 4) | 0;
HEAP32[$vararg_ptr15 >> 2] = $59;
$vararg_ptr16 = ($vararg_buffer12 + 8) | 0;
HEAP32[$vararg_ptr16 >> 2] = $cost$0;
_fprintf($30 | 0, 4992 | 0, $vararg_buffer12 | 0) | 0;
}
$notlhs = ($cost$0 | 0) < 0;
$notrhs = $min_cost$012 >>> 0 <= $cost$0 >>> 0;
$or$cond$not = $notrhs | $notlhs;
$min_cost$0$mux = $or$cond$not ? $min_cost$012 : $cost$0;
if ($or$cond$not) {
$min_cost$1 = $min_cost$0$mux;
} else {
$78 = HEAP32[$$0110 >> 2] | 0;
HEAP32[$dst >> 2] = $78;
$min_cost$1 = $cost$0;
}
}
}
$79 = ($$0110 + 4) | 0;
$80 = HEAP32[$79 >> 2] | 0;
$81 = ($80 | 0) == 0;
if ($81) {
$min_cost$0$lcssa = $min_cost$1;
break;
} else {
$$0110 = $79;
$59 = $80;
$min_cost$012 = $min_cost$1;
}
}
}
} while (0);
$82 = HEAP32[80 >> 2] | 0;
$83 = ($82 | 0) > 7;
if (!$83) {
$$0 = $min_cost$0$lcssa;
STACKTOP = sp;
return $$0 | 0;
}
$84 = HEAP32[_stderr >> 2] | 0;
_fputc(10, $84 | 0) | 0;
$$0 = $min_cost$0$lcssa;
STACKTOP = sp;
return $$0 | 0;
}
function _zbar_negotiate_format($vdo, $win) {
$vdo = $vdo | 0;
$win = $win | 0;
var $$0 = 0,
$$02$i = 0,
$$not = 0,
$$pre = 0,
$$pre7 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0;
var $22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0;
var $40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0;
var $59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0;
var $77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$9 = 0,
$fmt$05 = 0,
$i$0$lcssa$i = 0,
$i$02$i = 0,
$min_cost$04 = 0,
$min_cost$1 = 0,
$min_cost$2 = 0,
$min_fmt = 0,
$or$cond = 0;
var $vararg_buffer11 = 0,
$vararg_ptr1 = 0,
$vararg_ptr10 = 0,
$vararg_ptr14 = 0,
$vararg_ptr15 = 0,
$vararg_ptr16 = 0,
$vararg_ptr2 = 0,
$vararg_ptr6 = 0,
$vararg_ptr7 = 0,
$vararg_ptr8 = 0,
$vararg_ptr9 = 0,
$win_fmt = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 32) | 0;
$vararg_buffer11 = sp;
$min_fmt = (sp + 28) | 0;
$win_fmt = (sp + 24) | 0;
HEAP32[$min_fmt >> 2] = 0;
$0 = ($vdo | 0) != (0 | 0);
$$not = $0 ^ 1;
$1 = ($win | 0) == (0 | 0);
$or$cond = $1 & $$not;
if ($or$cond) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$2 = ($win | 0) != (0 | 0);
$3 = $0 ? $vdo : $win;
$i$02$i = 0;
while (1) {
$4 = $i$02$i << 1;
$5 = $4 | 1;
$6 = ($5 | 0) < 31;
if ($6) {
$7 = (5944 + (($i$02$i * 12) | 0)) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = (5944 + (($5 * 12) | 0)) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = $8 >>> 0 < $10 >>> 0;
if ($11) {
break;
}
}
$12 = ($5 + 1) | 0;
$13 = ($12 | 0) < 31;
if ($13) {
$14 = (5944 + (($12 * 12) | 0)) | 0;
$15 = HEAP32[$14 >> 2] | 0;
$16 = (5944 + (($i$02$i * 12) | 0)) | 0;
$17 = HEAP32[$16 >> 2] | 0;
$18 = $15 >>> 0 < $17 >>> 0;
if ($18) {
$i$0$lcssa$i = $i$02$i;
label = 8;
break;
}
}
$19 = ($i$02$i + 1) | 0;
$20 = ($19 | 0) < 31;
if ($20) {
$i$02$i = $19;
} else {
$i$0$lcssa$i = $19;
label = 8;
break;
}
}
if ((label | 0) == 8) {
$21 = ($i$0$lcssa$i | 0) == 31;
if ($21) {
if ($0) {
$31 = ($vdo + 72) | 0;
$32 = HEAP32[$31 >> 2] | 0;
$33 = ($32 | 0) == (0 | 0);
if (!$33) {
label = 15;
}
} else {
label = 15;
}
do {
if ((label | 0) == 15) {
if ($2) {
$34 = ($win + 112) | 0;
$35 = HEAP32[$34 >> 2] | 0;
$36 = ($35 | 0) == (0 | 0);
if ($36) {
break;
}
}
if ($0) {
$45 = ($vdo + 72) | 0;
$46 = HEAP32[$45 >> 2] | 0;
$52 = $46;
} else {
$52 = 5008;
}
if ($2) {
$47 = ($win + 112) | 0;
$48 = HEAP32[$47 >> 2] | 0;
$59 = $48;
} else {
$59 = 5008;
}
$49 = HEAP32[_stderr >> 2] | 0;
$fmt$05 = 4472;
$min_cost$04 = -1;
L28: while (1) {
HEAP32[$win_fmt >> 2] = 0;
$50 = HEAP32[$fmt$05 >> 2] | 0;
$51 = HEAP32[$52 >> 2] | 0;
$53 = ($51 | 0) == 0;
L30: do {
if ($53) {
$min_cost$1 = $min_cost$04;
} else {
$$02$i = $52;
$57 = $51;
while (1) {
$58 = ($57 | 0) == ($50 | 0);
$55 = ($$02$i + 4) | 0;
if ($58) {
break;
}
$54 = HEAP32[$55 >> 2] | 0;
$56 = ($54 | 0) == 0;
if ($56) {
$min_cost$1 = $min_cost$04;
break L30;
} else {
$$02$i = $55;
$57 = $54;
}
}
$60 = __zbar_best_format($50, $win_fmt, $59) | 0;
$61 = ($60 | 0) < 0;
$62 = HEAP32[80 >> 2] | 0;
$63 = ($62 | 0) > 3;
if ($61) {
if (!$63) {
$min_cost$1 = $min_cost$04;
break;
}
$64 = HEAP32[$fmt$05 >> 2] | 0;
HEAP32[$vararg_buffer11 >> 2] = 5016;
$vararg_ptr1 = ($vararg_buffer11 + 4) | 0;
HEAP32[$vararg_ptr1 >> 2] = $fmt$05;
$vararg_ptr2 = ($vararg_buffer11 + 8) | 0;
HEAP32[$vararg_ptr2 >> 2] = $64;
_fprintf($49 | 0, 5120 | 0, $vararg_buffer11 | 0) | 0;
$min_cost$1 = $min_cost$04;
break;
}
if ($63) {
$65 = HEAP32[$fmt$05 >> 2] | 0;
$66 = HEAP32[$win_fmt >> 2] | 0;
HEAP32[$vararg_buffer11 >> 2] = 5016;
$vararg_ptr6 = ($vararg_buffer11 + 4) | 0;
HEAP32[$vararg_ptr6 >> 2] = $fmt$05;
$vararg_ptr7 = ($vararg_buffer11 + 8) | 0;
HEAP32[$vararg_ptr7 >> 2] = $65;
$vararg_ptr8 = ($vararg_buffer11 + 12) | 0;
HEAP32[$vararg_ptr8 >> 2] = $win_fmt;
$vararg_ptr9 = ($vararg_buffer11 + 16) | 0;
HEAP32[$vararg_ptr9 >> 2] = $66;
$vararg_ptr10 = ($vararg_buffer11 + 20) | 0;
HEAP32[$vararg_ptr10 >> 2] = $60;
_fprintf($49 | 0, 5160 | 0, $vararg_buffer11 | 0) | 0;
}
$67 = $min_cost$04 >>> 0 > $60 >>> 0;
if ($67) {
$68 = HEAP32[$fmt$05 >> 2] | 0;
HEAP32[$min_fmt >> 2] = $68;
$69 = ($60 | 0) == 0;
if ($69) {
$73 = $68;
$min_cost$2 = 0;
break L28;
} else {
$min_cost$1 = $60;
}
} else {
$min_cost$1 = $min_cost$04;
}
}
} while (0);
$70 = ($fmt$05 + 4) | 0;
$71 = HEAP32[$70 >> 2] | 0;
$72 = ($71 | 0) == 0;
if ($72) {
label = 37;
break;
} else {
$fmt$05 = $70;
$min_cost$04 = $min_cost$1;
}
}
if ((label | 0) == 37) {
$$pre7 = HEAP32[$min_fmt >> 2] | 0;
$73 = $$pre7;
$min_cost$2 = $min_cost$1;
}
$74 = ($73 | 0) == 0;
if ($74) {
$75 = HEAP32[$3 >> 2] | 0;
$76 = ($75 | 0) == 1381123450;
if (!$76) {
___assert_fail(5288 | 0, 5320 | 0, 150, 5336 | 0);
// unreachable;
}
$77 = ($3 + 16) | 0;
HEAP32[$77 >> 2] = -1;
$78 = ($3 + 20) | 0;
HEAP32[$78 >> 2] = 3;
$79 = ($3 + 24) | 0;
HEAP32[$79 >> 2] = 5016;
$80 = ($3 + 28) | 0;
HEAP32[$80 >> 2] = 5200;
$81 = HEAP32[80 >> 2] | 0;
$82 = ($81 | 0) > 0;
if (!$82) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
__zbar_error_spew($3, 0) | 0;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
} else {
if (!$0) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$83 = HEAP32[80 >> 2] | 0;
$84 = ($83 | 0) > 1;
if ($84) {
HEAP32[$vararg_buffer11 >> 2] = 5016;
$vararg_ptr14 = ($vararg_buffer11 + 4) | 0;
HEAP32[$vararg_ptr14 >> 2] = $min_fmt;
$vararg_ptr15 = ($vararg_buffer11 + 8) | 0;
HEAP32[$vararg_ptr15 >> 2] = $73;
$vararg_ptr16 = ($vararg_buffer11 + 12) | 0;
HEAP32[$vararg_ptr16 >> 2] = $min_cost$2;
_fprintf($49 | 0, 5240 | 0, $vararg_buffer11 | 0) | 0;
$$pre = HEAP32[$min_fmt >> 2] | 0;
$85 = $$pre;
} else {
$85 = $73;
}
$86 = _zbar_video_init($vdo, $85) | 0;
$$0 = $86;
STACKTOP = sp;
return $$0 | 0;
}
}
} while (0);
$37 = HEAP32[$3 >> 2] | 0;
$38 = ($37 | 0) == 1381123450;
if (!$38) {
___assert_fail(5288 | 0, 5320 | 0, 150, 5336 | 0);
// unreachable;
}
$39 = ($3 + 16) | 0;
HEAP32[$39 >> 2] = -1;
$40 = ($3 + 20) | 0;
HEAP32[$40 >> 2] = 3;
$41 = ($3 + 24) | 0;
HEAP32[$41 >> 2] = 5016;
$42 = ($3 + 28) | 0;
HEAP32[$42 >> 2] = 5080;
$43 = HEAP32[80 >> 2] | 0;
$44 = ($43 | 0) > 0;
if (!$44) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
__zbar_error_spew($3, 0) | 0;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
}
$22 = HEAP32[_stderr >> 2] | 0;
_fwrite(5352 | 0, 41, 1, $22 | 0) | 0;
$23 = HEAP32[$3 >> 2] | 0;
$24 = ($23 | 0) == 1381123450;
if (!$24) {
___assert_fail(5288 | 0, 5320 | 0, 150, 5336 | 0);
// unreachable;
}
$25 = ($3 + 16) | 0;
HEAP32[$25 >> 2] = -2;
$26 = ($3 + 20) | 0;
HEAP32[$26 >> 2] = 2;
$27 = ($3 + 24) | 0;
HEAP32[$27 >> 2] = 5016;
$28 = ($3 + 28) | 0;
HEAP32[$28 >> 2] = 5040;
$29 = HEAP32[80 >> 2] | 0;
$30 = ($29 | 0) > 0;
if (!$30) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
__zbar_error_spew($3, 0) | 0;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
function _convert_uvp_append($dst, $dstfmt, $src, $srcfmt) {
$dst = $dst | 0;
$dstfmt = $dstfmt | 0;
$src = $src | 0;
$srcfmt = $srcfmt | 0;
var $$0$i = 0,
$$phi$trans$insert = 0,
$$phi$trans$insert2 = 0,
$$pre = 0,
$$pre1 = 0,
$$pre3 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0;
var $21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0;
var $4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0;
var $58 = 0,
$59 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$phitmp = 0,
$vararg_buffer = 0,
$vararg_ptr1 = 0,
$vararg_ptr2 = 0,
$vararg_ptr3 = 0,
$vararg_ptr4 = 0,
$vararg_ptr5 = 0,
$vararg_ptr6 = 0,
$vararg_ptr7 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 32) | 0;
$vararg_buffer = sp;
$0 = ($dstfmt + 4) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == 0;
if ($2) {
$$phi$trans$insert = ($dst + 4) | 0;
$$pre1 = HEAP32[$$phi$trans$insert >> 2] | 0;
$$phi$trans$insert2 = ($dst + 8) | 0;
$$pre3 = HEAP32[$$phi$trans$insert2 >> 2] | 0;
$$0$i = 0;
$38 = $$pre1;
$39 = $$pre3;
} else {
$3 = ($dstfmt + 8) | 0;
$4 = HEAP8[$3 >> 0] | 0;
$5 = $4 & 255;
$6 = 1 << $5;
$7 = ($6 + -1) | 0;
$8 = ($dst + 4) | 0;
$9 = HEAP32[$8 >> 2] | 0;
$10 = $7 & $9;
$11 = ($10 | 0) == 0;
if ($11) {
$30 = $9;
} else {
$12 = ($7 + $9) | 0;
$13 = (0 - $6) | 0;
$14 = $12 & $13;
HEAP32[$8 >> 2] = $14;
$30 = $14;
}
$15 = ($3 + 1) | 0;
$16 = HEAP8[$15 >> 0] | 0;
$17 = $16 & 255;
$18 = 1 << $17;
$19 = ($18 + -1) | 0;
$20 = ($dst + 8) | 0;
$21 = HEAP32[$20 >> 2] | 0;
$22 = $19 & $21;
$23 = ($22 | 0) == 0;
if ($23) {
$34 = $21;
} else {
$24 = ($19 + $21) | 0;
$25 = (0 - $18) | 0;
$26 = $24 & $25;
HEAP32[$20 >> 2] = $26;
$34 = $26;
}
$27 = HEAP8[$3 >> 0] | 0;
$28 = $27 & 255;
$29 = $30 >>> $28;
$31 = HEAP8[$15 >> 0] | 0;
$32 = $31 & 255;
$33 = $34 >>> $32;
$35 = $29 << 1;
$phitmp = Math_imul($35, $33) | 0;
$$0$i = $phitmp;
$38 = $30;
$39 = $34;
}
$36 = ($dst + 16) | 0;
$37 = Math_imul($39, $38) | 0;
$40 = ($37 + $$0$i) | 0;
HEAP32[$36 >> 2] = $40;
$41 = ($src + 16) | 0;
$42 = HEAP32[$41 >> 2] | 0;
$43 = ($src + 4) | 0;
$44 = HEAP32[$43 >> 2] | 0;
$45 = ($src + 8) | 0;
$46 = HEAP32[$45 >> 2] | 0;
$47 = Math_imul($46, $44) | 0;
$48 = $42 >>> 0 < $47 >>> 0;
if ($48) {
___assert_fail(5792 | 0, 5464 | 0, 373, 5840 | 0);
// unreachable;
}
$49 = HEAP32[80 >> 2] | 0;
$50 = ($49 | 0) > 23;
if ($50) {
$51 = HEAP32[_stderr >> 2] | 0;
HEAP32[$vararg_buffer >> 2] = 5840;
$vararg_ptr1 = ($vararg_buffer + 4) | 0;
HEAP32[$vararg_ptr1 >> 2] = $38;
$vararg_ptr2 = ($vararg_buffer + 8) | 0;
HEAP32[$vararg_ptr2 >> 2] = $39;
$vararg_ptr3 = ($vararg_buffer + 12) | 0;
HEAP32[$vararg_ptr3 >> 2] = $37;
$vararg_ptr4 = ($vararg_buffer + 16) | 0;
HEAP32[$vararg_ptr4 >> 2] = $40;
$vararg_ptr5 = ($vararg_buffer + 20) | 0;
HEAP32[$vararg_ptr5 >> 2] = $44;
$vararg_ptr6 = ($vararg_buffer + 24) | 0;
HEAP32[$vararg_ptr6 >> 2] = $46;
$vararg_ptr7 = ($vararg_buffer + 28) | 0;
HEAP32[$vararg_ptr7 >> 2] = $42;
_fprintf($51 | 0, 5864 | 0, $vararg_buffer | 0) | 0;
$$pre = HEAP32[$36 >> 2] | 0;
$52 = $$pre;
} else {
$52 = $40;
}
$53 = _malloc($52) | 0;
$54 = ($dst + 12) | 0;
HEAP32[$54 >> 2] = $53;
$55 = ($53 | 0) == (0 | 0);
if ($55) {
STACKTOP = sp;
return;
}
_convert_y_resize($dst, $src, $37);
$56 = HEAP32[$54 >> 2] | 0;
$57 = ($56 + $37) | 0;
$58 = HEAP32[$36 >> 2] | 0;
$59 = ($58 - $37) | 0;
_memset($57 | 0, -128, $59 | 0) | 0;
STACKTOP = sp;
return;
}
function _convert_yuv_pack($dst, $dstfmt, $src, $srcfmt) {
$dst = $dst | 0;
$dstfmt = $dstfmt | 0;
$src = $src | 0;
$srcfmt = $srcfmt | 0;
var $$ = 0,
$$0$i = 0,
$$0$i3 = 0,
$$2 = 0,
$$phi$trans$insert = 0,
$$phi$trans$insert46 = 0,
$$pre = 0,
$$pre45 = 0,
$$pre47 = 0,
$$sum = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0;
var $107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0;
var $125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0;
var $143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0;
var $29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0;
var $47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0;
var $65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0;
var $83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$dstp$033 = 0,
$dstp$1$lcssa = 0;
var $dstp$17 = 0,
$dstp$2 = 0,
$phitmp = 0,
$srcu$131 = 0,
$srcu$3$lcssa = 0,
$srcu$3$ph = 0,
$srcu$35 = 0,
$srcu$4 = 0,
$srcu$5$lcssa = 0,
$srcu$522 = 0,
$srcu$6 = 0,
$srcv$132 = 0,
$srcv$3$lcssa = 0,
$srcv$3$ph = 0,
$srcv$36 = 0,
$srcv$4 = 0,
$srcv$5$lcssa = 0,
$srcv$523 = 0,
$srcv$6 = 0,
$srcy$034 = 0;
var $srcy$2$lcssa = 0,
$srcy$2$ph = 0,
$srcy$28 = 0,
$srcy$3 = 0,
$srcy$4$lcssa = 0,
$srcy$424 = 0,
$u$038 = 0,
$u$1$lcssa = 0,
$u$112 = 0,
$u$2 = 0,
$v$039 = 0,
$v$1$lcssa = 0,
$v$113 = 0,
$v$2 = 0,
$x$0$lcssa = 0,
$x$09 = 0,
$x$125 = 0,
$y$035 = 0,
$y0$036 = 0,
$y0$1$lcssa = 0;
var $y0$110 = 0,
$y0$2 = 0,
$y1$037 = 0,
$y1$1$lcssa = 0,
$y1$111 = 0,
$y1$2 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($dstfmt + 4) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == 0;
if ($2) {
$3 = ($dst + 4) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($dst + 8) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = Math_imul($6, $4) | 0;
$$0$i3 = 0;
$111 = $3;
$43 = $7;
$93 = $5;
} else {
$8 = ($dstfmt + 8) | 0;
$9 = HEAP8[$8 >> 0] | 0;
$10 = $9 & 255;
$11 = 1 << $10;
$12 = ($11 + -1) | 0;
$13 = ($dst + 4) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = $12 & $14;
$16 = ($15 | 0) == 0;
if ($16) {
$33 = $14;
} else {
$17 = ($12 + $14) | 0;
$18 = (0 - $11) | 0;
$19 = $17 & $18;
HEAP32[$13 >> 2] = $19;
$33 = $19;
}
$20 = ($8 + 1) | 0;
$21 = HEAP8[$20 >> 0] | 0;
$22 = $21 & 255;
$23 = 1 << $22;
$24 = ($23 + -1) | 0;
$25 = ($dst + 8) | 0;
$26 = HEAP32[$25 >> 2] | 0;
$27 = $24 & $26;
$28 = ($27 | 0) == 0;
if ($28) {
$34 = $26;
} else {
$29 = ($24 + $26) | 0;
$30 = (0 - $23) | 0;
$31 = $29 & $30;
HEAP32[$25 >> 2] = $31;
$34 = $31;
}
$32 = Math_imul($34, $33) | 0;
$35 = HEAP8[$8 >> 0] | 0;
$36 = $35 & 255;
$37 = $33 >>> $36;
$38 = HEAP8[$20 >> 0] | 0;
$39 = $38 & 255;
$40 = $34 >>> $39;
$41 = $37 << 1;
$phitmp = Math_imul($41, $40) | 0;
$$0$i3 = $phitmp;
$111 = $13;
$43 = $32;
$93 = $25;
}
$42 = ($$0$i3 + $43) | 0;
$44 = ($dst + 16) | 0;
HEAP32[$44 >> 2] = $42;
$45 = _malloc($42) | 0;
$46 = ($dst + 12) | 0;
HEAP32[$46 >> 2] = $45;
$47 = ($45 | 0) == (0 | 0);
if ($47) {
STACKTOP = sp;
return;
}
$48 = ($srcfmt + 4) | 0;
$49 = HEAP32[$48 >> 2] | 0;
$50 = ($49 | 0) == 0;
$$phi$trans$insert = ($src + 4) | 0;
$$pre45 = HEAP32[$$phi$trans$insert >> 2] | 0;
if ($50) {
$$phi$trans$insert46 = ($src + 8) | 0;
$$pre47 = HEAP32[$$phi$trans$insert46 >> 2] | 0;
$$0$i = 0;
$65 = $$pre47;
} else {
$51 = ($srcfmt + 8) | 0;
$52 = HEAP8[$51 >> 0] | 0;
$53 = $52 & 255;
$54 = $$pre45 >>> $53;
$55 = ($src + 8) | 0;
$56 = HEAP32[$55 >> 2] | 0;
$57 = ($51 + 1) | 0;
$58 = HEAP8[$57 >> 0] | 0;
$59 = $58 & 255;
$60 = $56 >>> $59;
$61 = Math_imul($60, $54) | 0;
$$0$i = $61;
$65 = $56;
}
$62 = ($src + 4) | 0;
$63 = ($src + 8) | 0;
$64 = Math_imul($65, $$pre45) | 0;
$66 = ($src + 16) | 0;
$67 = HEAP32[$66 >> 2] | 0;
$68 = ($64 * 3) | 0;
$69 = $67 >>> 0 < $68 >>> 0;
if ($69) {
___assert_fail(5736 | 0, 5464 | 0, 403, 5768 | 0);
// unreachable;
}
$70 = ($dstfmt + 8) | 0;
$71 = ($70 + 2) | 0;
$72 = HEAP8[$71 >> 0] | 0;
$73 = ($srcfmt + 8) | 0;
$74 = ($73 + 2) | 0;
$75 = HEAP8[$74 >> 0] | 0;
$76 = $75 ^ $72;
$77 = ($src + 12) | 0;
$78 = HEAP32[$77 >> 2] | 0;
$79 = $76 & 1;
$80 = ($79 << 24) >> 24 == 0;
$81 = ($78 + $64) | 0;
$$sum = ($64 + $$0$i) | 0;
$82 = ($78 + $$sum) | 0;
$83 = HEAP8[$73 >> 0] | 0;
$84 = $83 & 255;
$85 = 1 << $84;
$86 = ($85 + -1) | 0;
$87 = ($73 + 1) | 0;
$88 = HEAP8[$87 >> 0] | 0;
$89 = $88 & 255;
$90 = 1 << $89;
$91 = ($90 + -1) | 0;
$92 = HEAP32[$93 >> 2] | 0;
$94 = $92 >>> 0 > 3;
if (!$94) {
STACKTOP = sp;
return;
}
$95 = $$pre45 >>> $84;
$$2 = $80 ? $82 : $81;
$$ = $80 ? $81 : $82;
$96 = (0 - $95) | 0;
$97 = $72 & 2;
$98 = ($97 << 24) >> 24 == 0;
$102 = $$pre45;
$dstp$033 = $45;
$srcu$131 = $$;
$srcv$132 = $$2;
$srcy$034 = $78;
$u$038 = -128;
$v$039 = -128;
$y$035 = 0;
$y0$036 = 0;
$y1$037 = 0;
while (1) {
$99 = HEAP32[$63 >> 2] | 0;
$100 = $y$035 >>> 0 < $99 >>> 0;
if ($100) {
$106 = $y$035 & $91;
$107 = ($106 | 0) == 0;
if ($107) {
$srcu$3$ph = $srcu$131;
$srcv$3$ph = $srcv$132;
$srcy$2$ph = $srcy$034;
} else {
$108 = ($srcu$131 + $96) | 0;
$109 = ($srcv$132 + $96) | 0;
$srcu$3$ph = $108;
$srcv$3$ph = $109;
$srcy$2$ph = $srcy$034;
}
} else {
$101 = (0 - $102) | 0;
$103 = ($srcy$034 + $101) | 0;
$104 = ($srcu$131 + $96) | 0;
$105 = ($srcv$132 + $96) | 0;
$srcu$3$ph = $104;
$srcv$3$ph = $105;
$srcy$2$ph = $103;
}
$110 = HEAP32[$111 >> 2] | 0;
$112 = $110 >>> 0 > 3;
if ($112) {
$dstp$17 = $dstp$033;
$srcu$35 = $srcu$3$ph;
$srcv$36 = $srcv$3$ph;
$srcy$28 = $srcy$2$ph;
$u$112 = $u$038;
$v$113 = $v$039;
$x$09 = 0;
$y0$110 = $y0$036;
$y1$111 = $y1$037;
while (1) {
$113 = HEAP32[$62 >> 2] | 0;
$114 = $x$09 >>> 0 < $113 >>> 0;
if ($114) {
$115 = ($srcy$28 + 1) | 0;
$116 = HEAP8[$srcy$28 >> 0] | 0;
$117 = ($srcy$28 + 2) | 0;
$118 = HEAP8[$115 >> 0] | 0;
$119 = $x$09 & $86;
$120 = ($119 | 0) == 0;
if ($120) {
$121 = ($srcu$35 + 1) | 0;
$122 = HEAP8[$srcu$35 >> 0] | 0;
$123 = ($srcv$36 + 1) | 0;
$124 = HEAP8[$srcv$36 >> 0] | 0;
$srcu$4 = $121;
$srcv$4 = $123;
$srcy$3 = $117;
$u$2 = $122;
$v$2 = $124;
$y0$2 = $116;
$y1$2 = $118;
} else {
$srcu$4 = $srcu$35;
$srcv$4 = $srcv$36;
$srcy$3 = $117;
$u$2 = $u$112;
$v$2 = $v$113;
$y0$2 = $116;
$y1$2 = $118;
}
} else {
$srcu$4 = $srcu$35;
$srcv$4 = $srcv$36;
$srcy$3 = $srcy$28;
$u$2 = $u$112;
$v$2 = $v$113;
$y0$2 = $y0$110;
$y1$2 = $y1$111;
}
$125 = ($dstp$17 + 1) | 0;
if ($98) {
HEAP8[$dstp$17 >> 0] = $y0$2;
$128 = ($dstp$17 + 2) | 0;
HEAP8[$125 >> 0] = $u$2;
$129 = ($dstp$17 + 3) | 0;
HEAP8[$128 >> 0] = $y1$2;
HEAP8[$129 >> 0] = $v$2;
} else {
HEAP8[$dstp$17 >> 0] = $u$2;
$126 = ($dstp$17 + 2) | 0;
HEAP8[$125 >> 0] = $y0$2;
$127 = ($dstp$17 + 3) | 0;
HEAP8[$126 >> 0] = $v$2;
HEAP8[$127 >> 0] = $y1$2;
}
$dstp$2 = ($dstp$17 + 4) | 0;
$130 = ($x$09 + 2) | 0;
$131 = HEAP32[$111 >> 2] | 0;
$132 = $131 & -4;
$133 = $130 >>> 0 < $132 >>> 0;
if ($133) {
$dstp$17 = $dstp$2;
$srcu$35 = $srcu$4;
$srcv$36 = $srcv$4;
$srcy$28 = $srcy$3;
$u$112 = $u$2;
$v$113 = $v$2;
$x$09 = $130;
$y0$110 = $y0$2;
$y1$111 = $y1$2;
} else {
break;
}
}
$$pre = HEAP32[$62 >> 2] | 0;
$135 = $$pre;
$dstp$1$lcssa = $dstp$2;
$srcu$3$lcssa = $srcu$4;
$srcv$3$lcssa = $srcv$4;
$srcy$2$lcssa = $srcy$3;
$u$1$lcssa = $u$2;
$v$1$lcssa = $v$2;
$x$0$lcssa = $130;
$y0$1$lcssa = $y0$2;
$y1$1$lcssa = $y1$2;
} else {
$135 = $102;
$dstp$1$lcssa = $dstp$033;
$srcu$3$lcssa = $srcu$3$ph;
$srcv$3$lcssa = $srcv$3$ph;
$srcy$2$lcssa = $srcy$2$ph;
$u$1$lcssa = $u$038;
$v$1$lcssa = $v$039;
$x$0$lcssa = 0;
$y0$1$lcssa = $y0$036;
$y1$1$lcssa = $y1$037;
}
$134 = $135 & -4;
$136 = $x$0$lcssa >>> 0 < $134 >>> 0;
if ($136) {
$srcu$522 = $srcu$3$lcssa;
$srcv$523 = $srcv$3$lcssa;
$srcy$424 = $srcy$2$lcssa;
$x$125 = $x$0$lcssa;
while (1) {
$137 = ($srcy$424 + 2) | 0;
$138 = $x$125 & $86;
$139 = ($138 | 0) == 0;
if ($139) {
$140 = ($srcu$522 + 1) | 0;
$141 = ($srcv$523 + 1) | 0;
$srcu$6 = $140;
$srcv$6 = $141;
} else {
$srcu$6 = $srcu$522;
$srcv$6 = $srcv$523;
}
$142 = ($x$125 + 2) | 0;
$143 = $142 >>> 0 < $134 >>> 0;
if ($143) {
$srcu$522 = $srcu$6;
$srcv$523 = $srcv$6;
$srcy$424 = $137;
$x$125 = $142;
} else {
$srcu$5$lcssa = $srcu$6;
$srcv$5$lcssa = $srcv$6;
$srcy$4$lcssa = $137;
break;
}
}
} else {
$srcu$5$lcssa = $srcu$3$lcssa;
$srcv$5$lcssa = $srcv$3$lcssa;
$srcy$4$lcssa = $srcy$2$lcssa;
}
$144 = ($y$035 + 1) | 0;
$145 = HEAP32[$93 >> 2] | 0;
$146 = $145 & -4;
$147 = $144 >>> 0 < $146 >>> 0;
if ($147) {
$102 = $135;
$dstp$033 = $dstp$1$lcssa;
$srcu$131 = $srcu$5$lcssa;
$srcv$132 = $srcv$5$lcssa;
$srcy$034 = $srcy$4$lcssa;
$u$038 = $u$1$lcssa;
$v$039 = $v$1$lcssa;
$y$035 = $144;
$y0$036 = $y0$1$lcssa;
$y1$037 = $y1$1$lcssa;
} else {
break;
}
}
STACKTOP = sp;
return;
}
function _convert_yuvp_to_rgb($dst, $dstfmt, $src, $srcfmt) {
$dst = $dst | 0;
$dstfmt = $dstfmt | 0;
$src = $src | 0;
$srcfmt = $srcfmt | 0;
var $$0$i = 0,
$$lcssa1 = 0,
$$phi$trans$insert = 0,
$$phi$trans$insert24 = 0,
$$pre = 0,
$$pre25 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0;
var $20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0;
var $39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0;
var $57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0;
var $75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0;
var $93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$dstp$014 = 0,
$dstp$1$lcssa = 0,
$dstp$15 = 0,
$p$013 = 0,
$p$1$lcssa = 0,
$p$14 = 0,
$p$2 = 0,
$phitmp = 0,
$srcy$011 = 0,
$srcy$2$lcssa = 0,
$srcy$2$ph = 0,
$srcy$22 = 0,
$srcy$3 = 0;
var $srcy$4 = 0,
$x$0$lcssa = 0,
$x$03 = 0,
$y$012 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($dst + 4) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($dst + 8) | 0;
$3 = HEAP32[$2 >> 2] | 0;
$4 = Math_imul($3, $1) | 0;
$5 = ($dstfmt + 8) | 0;
$6 = HEAP8[$5 >> 0] | 0;
$7 = $6 & 255;
$8 = Math_imul($4, $7) | 0;
$9 = ($dst + 16) | 0;
HEAP32[$9 >> 2] = $8;
$10 = _malloc($8) | 0;
$11 = ($dst + 12) | 0;
HEAP32[$11 >> 2] = $10;
$12 = ($10 | 0) == (0 | 0);
if ($12) {
STACKTOP = sp;
return;
}
$13 = ($5 + 1) | 0;
$14 = HEAP8[$13 >> 0] | 0;
$15 = $14 & 255;
$16 = $15 >>> 5;
$17 = $15 & 31;
$18 = ($5 + 2) | 0;
$19 = HEAP8[$18 >> 0] | 0;
$20 = $19 & 255;
$21 = $20 >>> 5;
$22 = $20 & 31;
$23 = ($5 + 3) | 0;
$24 = HEAP8[$23 >> 0] | 0;
$25 = $24 & 255;
$26 = $25 >>> 5;
$27 = $25 & 31;
$28 = ($srcfmt + 4) | 0;
$29 = HEAP32[$28 >> 2] | 0;
$30 = ($29 | 0) == 0;
$$phi$trans$insert = ($src + 4) | 0;
$$pre = HEAP32[$$phi$trans$insert >> 2] | 0;
if ($30) {
$$phi$trans$insert24 = ($src + 8) | 0;
$$pre25 = HEAP32[$$phi$trans$insert24 >> 2] | 0;
$$0$i = 0;
$45 = $$pre25;
} else {
$31 = ($srcfmt + 8) | 0;
$32 = HEAP8[$31 >> 0] | 0;
$33 = $32 & 255;
$34 = $$pre >>> $33;
$35 = ($src + 8) | 0;
$36 = HEAP32[$35 >> 2] | 0;
$37 = ($31 + 1) | 0;
$38 = HEAP8[$37 >> 0] | 0;
$39 = $38 & 255;
$40 = $36 >>> $39;
$41 = $34 << 1;
$phitmp = Math_imul($41, $40) | 0;
$$0$i = $phitmp;
$45 = $36;
}
$42 = ($src + 4) | 0;
$43 = ($src + 8) | 0;
$44 = Math_imul($45, $$pre) | 0;
$46 = ($src + 16) | 0;
$47 = HEAP32[$46 >> 2] | 0;
$48 = ($44 + $$0$i) | 0;
$49 = $47 >>> 0 < $48 >>> 0;
if ($49) {
___assert_fail(5680 | 0, 5464 | 0, 599, 5712 | 0);
// unreachable;
}
$50 = $3 >>> 0 > 3;
if (!$50) {
STACKTOP = sp;
return;
}
$51 = ($src + 12) | 0;
$52 = HEAP32[$51 >> 2] | 0;
$56 = $$pre;
$58 = $1;
$dstp$014 = $10;
$p$013 = 0;
$srcy$011 = $52;
$y$012 = 0;
while (1) {
$53 = HEAP32[$43 >> 2] | 0;
$54 = $y$012 >>> 0 < $53 >>> 0;
if ($54) {
$srcy$2$ph = $srcy$011;
} else {
$55 = (0 - $56) | 0;
$57 = ($srcy$011 + $55) | 0;
$srcy$2$ph = $57;
}
$59 = $58 >>> 0 > 3;
$60 = ($56 | 0) != 0;
if ($59) {
$99 = $60;
$dstp$15 = $dstp$014;
$p$14 = $p$013;
$srcy$22 = $srcy$2$ph;
$x$03 = 0;
while (1) {
if ($99) {
$61 = ($srcy$22 + 1) | 0;
$62 = HEAP8[$srcy$22 >> 0] | 0;
$63 = $62 & 255;
$64 = $63 >>> $16;
$65 = $64 << $17;
$66 = $63 >>> $21;
$67 = $66 << $22;
$68 = $65 | $67;
$69 = $63 >>> $26;
$70 = $69 << $27;
$71 = $68 | $70;
$p$2 = $71;
$srcy$3 = $61;
} else {
$p$2 = $p$14;
$srcy$3 = $srcy$22;
}
$72 = HEAP8[$5 >> 0] | 0;
$73 = $72 & 255;
if (($73 | 0) == 4) {
HEAP32[$dstp$15 >> 2] = $p$2;
} else if (($73 | 0) == 3) {
$74 = $p$2 & 255;
HEAP8[$dstp$15 >> 0] = $74;
$75 = $p$2 >>> 8;
$76 = $75 & 255;
$77 = ($dstp$15 + 1) | 0;
HEAP8[$77 >> 0] = $76;
$78 = $p$2 >>> 16;
$79 = $78 & 255;
$80 = ($dstp$15 + 2) | 0;
HEAP8[$80 >> 0] = $79;
} else if (($73 | 0) == 2) {
$81 = $p$2 & 65535;
HEAP16[$dstp$15 >> 1] = $81;
} else {
$82 = $p$2 & 255;
HEAP8[$dstp$15 >> 0] = $82;
}
$83 = HEAP8[$5 >> 0] | 0;
$84 = $83 & 255;
$85 = ($dstp$15 + $84) | 0;
$86 = ($x$03 + 1) | 0;
$87 = HEAP32[$0 >> 2] | 0;
$88 = $87 & -4;
$89 = $86 >>> 0 < $88 >>> 0;
$90 = HEAP32[$42 >> 2] | 0;
$91 = $86 >>> 0 < $90 >>> 0;
if ($89) {
$99 = $91;
$dstp$15 = $85;
$p$14 = $p$2;
$srcy$22 = $srcy$3;
$x$03 = $86;
} else {
$$lcssa1 = $91;
$100 = $87;
$93 = $90;
$dstp$1$lcssa = $85;
$p$1$lcssa = $p$2;
$srcy$2$lcssa = $srcy$3;
$x$0$lcssa = $86;
break;
}
}
} else {
$$lcssa1 = $60;
$100 = $58;
$93 = $56;
$dstp$1$lcssa = $dstp$014;
$p$1$lcssa = $p$013;
$srcy$2$lcssa = $srcy$2$ph;
$x$0$lcssa = 0;
}
if ($$lcssa1) {
$92 = ($93 - $x$0$lcssa) | 0;
$94 = ($srcy$2$lcssa + $92) | 0;
$srcy$4 = $94;
} else {
$srcy$4 = $srcy$2$lcssa;
}
$95 = ($y$012 + 1) | 0;
$96 = HEAP32[$2 >> 2] | 0;
$97 = $96 & -4;
$98 = $95 >>> 0 < $97 >>> 0;
if ($98) {
$56 = $93;
$58 = $100;
$dstp$014 = $dstp$1$lcssa;
$p$013 = $p$1$lcssa;
$srcy$011 = $srcy$4;
$y$012 = $95;
} else {
break;
}
}
STACKTOP = sp;
return;
}
function _convert_uvp_resample($dst, $dstfmt, $src, $srcfmt) {
$dst = $dst | 0;
$dstfmt = $dstfmt | 0;
$src = $src | 0;
$srcfmt = $srcfmt | 0;
var $$0$i = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0;
var $26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0;
var $44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$phitmp = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($dstfmt + 4) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == 0;
if ($2) {
$3 = ($dst + 4) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($dst + 8) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = Math_imul($6, $4) | 0;
$$0$i = 0;
$43 = $7;
} else {
$8 = ($dstfmt + 8) | 0;
$9 = HEAP8[$8 >> 0] | 0;
$10 = $9 & 255;
$11 = 1 << $10;
$12 = ($11 + -1) | 0;
$13 = ($dst + 4) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = $12 & $14;
$16 = ($15 | 0) == 0;
if ($16) {
$33 = $14;
} else {
$17 = ($12 + $14) | 0;
$18 = (0 - $11) | 0;
$19 = $17 & $18;
HEAP32[$13 >> 2] = $19;
$33 = $19;
}
$20 = ($8 + 1) | 0;
$21 = HEAP8[$20 >> 0] | 0;
$22 = $21 & 255;
$23 = 1 << $22;
$24 = ($23 + -1) | 0;
$25 = ($dst + 8) | 0;
$26 = HEAP32[$25 >> 2] | 0;
$27 = $24 & $26;
$28 = ($27 | 0) == 0;
if ($28) {
$34 = $26;
} else {
$29 = ($24 + $26) | 0;
$30 = (0 - $23) | 0;
$31 = $29 & $30;
HEAP32[$25 >> 2] = $31;
$34 = $31;
}
$32 = Math_imul($34, $33) | 0;
$35 = HEAP8[$8 >> 0] | 0;
$36 = $35 & 255;
$37 = $33 >>> $36;
$38 = HEAP8[$20 >> 0] | 0;
$39 = $38 & 255;
$40 = $34 >>> $39;
$41 = $37 << 1;
$phitmp = Math_imul($41, $40) | 0;
$$0$i = $phitmp;
$43 = $32;
}
$42 = ($$0$i + $43) | 0;
$44 = ($dst + 16) | 0;
HEAP32[$44 >> 2] = $42;
$45 = _malloc($42) | 0;
$46 = ($dst + 12) | 0;
HEAP32[$46 >> 2] = $45;
$47 = ($45 | 0) == (0 | 0);
if ($47) {
STACKTOP = sp;
return;
}
_convert_y_resize($dst, $src, $43);
$48 = ($$0$i | 0) == 0;
if ($48) {
STACKTOP = sp;
return;
}
$49 = HEAP32[$46 >> 2] | 0;
$50 = ($49 + $43) | 0;
_memset($50 | 0, -128, $$0$i | 0) | 0;
STACKTOP = sp;
return;
}
function _convert_yuv_unpack($dst, $dstfmt, $src, $srcfmt) {
$dst = $dst | 0;
$dstfmt = $dstfmt | 0;
$src = $src | 0;
$srcfmt = $srcfmt | 0;
var $$ = 0,
$$0$i = 0,
$$lcssa1 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0;
var $22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0;
var $40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0;
var $59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0;
var $77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0;
var $95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$dsty$014 = 0,
$dsty$1$lcssa = 0,
$dsty$13 = 0,
$phitmp = 0,
$srcp$113 = 0,
$srcp$3$lcssa = 0,
$srcp$3$ph = 0,
$srcp$32 = 0,
$srcp$4 = 0,
$srcp$5 = 0,
$x$0$lcssa = 0,
$x$04 = 0,
$y$015 = 0,
$y0$016 = 0,
$y0$1$lcssa = 0;
var $y0$15 = 0,
$y0$2 = 0,
$y1$017 = 0,
$y1$1$lcssa = 0,
$y1$16 = 0,
$y1$2 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($dstfmt + 4) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == 0;
if ($2) {
$3 = ($dst + 4) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($dst + 8) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = Math_imul($6, $4) | 0;
$$0$i = 0;
$43 = $7;
$56 = $5;
$77 = $3;
} else {
$8 = ($dstfmt + 8) | 0;
$9 = HEAP8[$8 >> 0] | 0;
$10 = $9 & 255;
$11 = 1 << $10;
$12 = ($11 + -1) | 0;
$13 = ($dst + 4) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = $12 & $14;
$16 = ($15 | 0) == 0;
if ($16) {
$33 = $14;
} else {
$17 = ($12 + $14) | 0;
$18 = (0 - $11) | 0;
$19 = $17 & $18;
HEAP32[$13 >> 2] = $19;
$33 = $19;
}
$20 = ($8 + 1) | 0;
$21 = HEAP8[$20 >> 0] | 0;
$22 = $21 & 255;
$23 = 1 << $22;
$24 = ($23 + -1) | 0;
$25 = ($dst + 8) | 0;
$26 = HEAP32[$25 >> 2] | 0;
$27 = $24 & $26;
$28 = ($27 | 0) == 0;
if ($28) {
$34 = $26;
} else {
$29 = ($24 + $26) | 0;
$30 = (0 - $23) | 0;
$31 = $29 & $30;
HEAP32[$25 >> 2] = $31;
$34 = $31;
}
$32 = Math_imul($34, $33) | 0;
$35 = HEAP8[$8 >> 0] | 0;
$36 = $35 & 255;
$37 = $33 >>> $36;
$38 = HEAP8[$20 >> 0] | 0;
$39 = $38 & 255;
$40 = $34 >>> $39;
$41 = $37 << 1;
$phitmp = Math_imul($41, $40) | 0;
$$0$i = $phitmp;
$43 = $32;
$56 = $25;
$77 = $13;
}
$42 = ($$0$i + $43) | 0;
$44 = ($dst + 16) | 0;
HEAP32[$44 >> 2] = $42;
$45 = _malloc($42) | 0;
$46 = ($dst + 12) | 0;
HEAP32[$46 >> 2] = $45;
$47 = ($45 | 0) == (0 | 0);
if ($47) {
STACKTOP = sp;
return;
}
$48 = ($$0$i | 0) == 0;
if (!$48) {
$49 = ($45 + $43) | 0;
_memset($49 | 0, -128, $$0$i | 0) | 0;
}
$50 = ($srcfmt + 8) | 0;
$51 = ($src + 12) | 0;
$52 = HEAP32[$51 >> 2] | 0;
$53 = ($src + 4) | 0;
$54 = HEAP32[$53 >> 2] | 0;
$55 = HEAP32[$56 >> 2] | 0;
$57 = $55 >>> 0 > 3;
if (!$57) {
STACKTOP = sp;
return;
}
$58 = ($dstfmt + 8) | 0;
$59 = ($58 + 2) | 0;
$60 = ($50 + 2) | 0;
$61 = HEAP8[$59 >> 0] | 0;
$62 = HEAP8[$60 >> 0] | 0;
$63 = HEAP8[$50 >> 0] | 0;
$64 = $61 ^ $62;
$65 = $63 & 255;
$66 = $64 & 2;
$67 = $54 >>> $65;
$68 = ($52 + 1) | 0;
$69 = ($66 << 24) >> 24 == 0;
$70 = ($54 + $67) | 0;
$$ = $69 ? $52 : $68;
$71 = ($src + 8) | 0;
$72 = (0 - $70) | 0;
$79 = $54;
$dsty$014 = $45;
$srcp$113 = $$;
$y$015 = 0;
$y0$016 = 0;
$y1$017 = 0;
while (1) {
$73 = HEAP32[$71 >> 2] | 0;
$74 = $y$015 >>> 0 < $73 >>> 0;
if ($74) {
$srcp$3$ph = $srcp$113;
} else {
$75 = ($srcp$113 + $72) | 0;
$srcp$3$ph = $75;
}
$76 = HEAP32[$77 >> 2] | 0;
$78 = $76 >>> 0 > 3;
$80 = ($79 | 0) != 0;
if ($78) {
$101 = $80;
$dsty$13 = $dsty$014;
$srcp$32 = $srcp$3$ph;
$x$04 = 0;
$y0$15 = $y0$016;
$y1$16 = $y1$017;
while (1) {
if ($101) {
$81 = HEAP8[$srcp$32 >> 0] | 0;
$82 = ($srcp$32 + 2) | 0;
$83 = HEAP8[$82 >> 0] | 0;
$84 = ($srcp$32 + 4) | 0;
$srcp$4 = $84;
$y0$2 = $81;
$y1$2 = $83;
} else {
$srcp$4 = $srcp$32;
$y0$2 = $y0$15;
$y1$2 = $y1$16;
}
$85 = ($dsty$13 + 1) | 0;
HEAP8[$dsty$13 >> 0] = $y0$2;
$86 = ($dsty$13 + 2) | 0;
HEAP8[$85 >> 0] = $y1$2;
$87 = ($x$04 + 2) | 0;
$88 = HEAP32[$77 >> 2] | 0;
$89 = $88 & -4;
$90 = $87 >>> 0 < $89 >>> 0;
$91 = HEAP32[$53 >> 2] | 0;
$92 = $87 >>> 0 < $91 >>> 0;
if ($90) {
$101 = $92;
$dsty$13 = $86;
$srcp$32 = $srcp$4;
$x$04 = $87;
$y0$15 = $y0$2;
$y1$16 = $y1$2;
} else {
$$lcssa1 = $92;
$94 = $91;
$dsty$1$lcssa = $86;
$srcp$3$lcssa = $srcp$4;
$x$0$lcssa = $87;
$y0$1$lcssa = $y0$2;
$y1$1$lcssa = $y1$2;
break;
}
}
} else {
$$lcssa1 = $80;
$94 = $79;
$dsty$1$lcssa = $dsty$014;
$srcp$3$lcssa = $srcp$3$ph;
$x$0$lcssa = 0;
$y0$1$lcssa = $y0$016;
$y1$1$lcssa = $y1$017;
}
if ($$lcssa1) {
$93 = ($94 - $x$0$lcssa) | 0;
$95 = $93 << 1;
$96 = ($srcp$3$lcssa + $95) | 0;
$srcp$5 = $96;
} else {
$srcp$5 = $srcp$3$lcssa;
}
$97 = ($y$015 + 1) | 0;
$98 = HEAP32[$56 >> 2] | 0;
$99 = $98 & -4;
$100 = $97 >>> 0 < $99 >>> 0;
if ($100) {
$79 = $94;
$dsty$014 = $dsty$1$lcssa;
$srcp$113 = $srcp$5;
$y$015 = $97;
$y0$016 = $y0$1$lcssa;
$y1$017 = $y1$1$lcssa;
} else {
break;
}
}
STACKTOP = sp;
return;
}
function _convert_uv_resample($dst, $dstfmt, $src, $srcfmt) {
$dst = $dst | 0;
$dstfmt = $dstfmt | 0;
$src = $src | 0;
$srcfmt = $srcfmt | 0;
var $$ = 0,
$$0$i = 0,
$$1 = 0,
$$2 = 0,
$$2$v$2 = 0,
$$3 = 0,
$$lcssa4 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$11 = 0;
var $12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0;
var $30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0;
var $49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0;
var $67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0;
var $85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$dstp$026 = 0,
$dstp$1$lcssa = 0,
$dstp$111 = 0,
$dstp$2 = 0;
var $phitmp = 0,
$srcp$020 = 0,
$srcp$2$lcssa = 0,
$srcp$2$ph = 0,
$srcp$25 = 0,
$srcp$3 = 0,
$srcp$4 = 0,
$srcp$5 = 0,
$u$024 = 0,
$u$1$lcssa = 0,
$u$19 = 0,
$u$3 = 0,
$v$025 = 0,
$v$1$lcssa = 0,
$v$110 = 0,
$v$2 = 0,
$v$2$$2 = 0,
$v$3 = 0,
$x$0$lcssa = 0,
$x$06 = 0;
var $y$021 = 0,
$y0$022 = 0,
$y0$1$lcssa = 0,
$y0$17 = 0,
$y0$3 = 0,
$y1$023 = 0,
$y1$1$lcssa = 0,
$y1$18 = 0,
$y1$2 = 0,
$y1$3 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($dstfmt + 4) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == 0;
if ($2) {
$3 = ($dst + 4) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($dst + 8) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = Math_imul($6, $4) | 0;
$$0$i = 0;
$43 = $7;
$55 = $5;
$74 = $3;
} else {
$8 = ($dstfmt + 8) | 0;
$9 = HEAP8[$8 >> 0] | 0;
$10 = $9 & 255;
$11 = 1 << $10;
$12 = ($11 + -1) | 0;
$13 = ($dst + 4) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = $12 & $14;
$16 = ($15 | 0) == 0;
if ($16) {
$33 = $14;
} else {
$17 = ($12 + $14) | 0;
$18 = (0 - $11) | 0;
$19 = $17 & $18;
HEAP32[$13 >> 2] = $19;
$33 = $19;
}
$20 = ($8 + 1) | 0;
$21 = HEAP8[$20 >> 0] | 0;
$22 = $21 & 255;
$23 = 1 << $22;
$24 = ($23 + -1) | 0;
$25 = ($dst + 8) | 0;
$26 = HEAP32[$25 >> 2] | 0;
$27 = $24 & $26;
$28 = ($27 | 0) == 0;
if ($28) {
$34 = $26;
} else {
$29 = ($24 + $26) | 0;
$30 = (0 - $23) | 0;
$31 = $29 & $30;
HEAP32[$25 >> 2] = $31;
$34 = $31;
}
$32 = Math_imul($34, $33) | 0;
$35 = HEAP8[$8 >> 0] | 0;
$36 = $35 & 255;
$37 = $33 >>> $36;
$38 = HEAP8[$20 >> 0] | 0;
$39 = $38 & 255;
$40 = $34 >>> $39;
$41 = $37 << 1;
$phitmp = Math_imul($41, $40) | 0;
$$0$i = $phitmp;
$43 = $32;
$55 = $25;
$74 = $13;
}
$42 = ($$0$i + $43) | 0;
$44 = ($dst + 16) | 0;
HEAP32[$44 >> 2] = $42;
$45 = _malloc($42) | 0;
$46 = ($dst + 12) | 0;
HEAP32[$46 >> 2] = $45;
$47 = ($45 | 0) == (0 | 0);
if ($47) {
STACKTOP = sp;
return;
}
$48 = ($srcfmt + 8) | 0;
$49 = ($48 + 2) | 0;
$50 = ($dstfmt + 8) | 0;
$51 = ($50 + 2) | 0;
$52 = ($src + 4) | 0;
$53 = HEAP32[$52 >> 2] | 0;
$54 = HEAP32[$55 >> 2] | 0;
$56 = $54 >>> 0 > 3;
if (!$56) {
STACKTOP = sp;
return;
}
$57 = HEAP8[$48 >> 0] | 0;
$58 = $57 & 255;
$59 = $53 >>> $58;
$60 = ($src + 12) | 0;
$61 = HEAP8[$51 >> 0] | 0;
$62 = HEAP8[$49 >> 0] | 0;
$63 = ($53 + $59) | 0;
$64 = HEAP32[$60 >> 2] | 0;
$65 = $61 ^ $62;
$66 = ($src + 8) | 0;
$67 = (0 - $63) | 0;
$68 = $65 & 1;
$69 = ($68 << 24) >> 24 == 0;
$76 = $53;
$dstp$026 = $45;
$srcp$020 = $64;
$u$024 = -128;
$v$025 = -128;
$y$021 = 0;
$y0$022 = 0;
$y1$023 = 0;
while (1) {
$70 = HEAP32[$66 >> 2] | 0;
$71 = $y$021 >>> 0 < $70 >>> 0;
if ($71) {
$srcp$2$ph = $srcp$020;
} else {
$72 = ($srcp$020 + $67) | 0;
$srcp$2$ph = $72;
}
$73 = HEAP32[$74 >> 2] | 0;
$75 = $73 >>> 0 > 3;
$77 = ($76 | 0) != 0;
if ($75) {
$108 = $77;
$dstp$111 = $dstp$026;
$srcp$25 = $srcp$2$ph;
$u$19 = $u$024;
$v$110 = $v$025;
$x$06 = 0;
$y0$17 = $y0$022;
$y1$18 = $y1$023;
while (1) {
if ($108) {
$78 = HEAP8[$49 >> 0] | 0;
$79 = $78 & 2;
$80 = ($79 << 24) >> 24 == 0;
$81 = ($srcp$25 + 1) | 0;
$82 = HEAP8[$srcp$25 >> 0] | 0;
$83 = ($srcp$25 + 2) | 0;
$84 = HEAP8[$81 >> 0] | 0;
$85 = ($srcp$25 + 3) | 0;
$$ = $80 ? $82 : $84;
$$1 = $80 ? $83 : $85;
$$2 = $80 ? $84 : $82;
$$3 = $80 ? $85 : $83;
$srcp$3 = ($srcp$25 + 4) | 0;
$v$2 = HEAP8[$$3 >> 0] | 0;
$y1$2 = HEAP8[$$1 >> 0] | 0;
$$2$v$2 = $69 ? $$2 : $v$2;
$v$2$$2 = $69 ? $v$2 : $$2;
$srcp$4 = $srcp$3;
$u$3 = $$2$v$2;
$v$3 = $v$2$$2;
$y0$3 = $$;
$y1$3 = $y1$2;
} else {
$srcp$4 = $srcp$25;
$u$3 = $u$19;
$v$3 = $v$110;
$y0$3 = $y0$17;
$y1$3 = $y1$18;
}
$86 = HEAP8[$51 >> 0] | 0;
$87 = $86 & 2;
$88 = ($87 << 24) >> 24 == 0;
$89 = ($dstp$111 + 1) | 0;
if ($88) {
HEAP8[$dstp$111 >> 0] = $y0$3;
$90 = ($dstp$111 + 2) | 0;
HEAP8[$89 >> 0] = $u$3;
$91 = ($dstp$111 + 3) | 0;
HEAP8[$90 >> 0] = $y1$3;
HEAP8[$91 >> 0] = $v$3;
} else {
HEAP8[$dstp$111 >> 0] = $u$3;
$92 = ($dstp$111 + 2) | 0;
HEAP8[$89 >> 0] = $y0$3;
$93 = ($dstp$111 + 3) | 0;
HEAP8[$92 >> 0] = $v$3;
HEAP8[$93 >> 0] = $y1$3;
}
$dstp$2 = ($dstp$111 + 4) | 0;
$94 = ($x$06 + 2) | 0;
$95 = HEAP32[$74 >> 2] | 0;
$96 = $95 & -4;
$97 = $94 >>> 0 < $96 >>> 0;
$98 = HEAP32[$52 >> 2] | 0;
$99 = $94 >>> 0 < $98 >>> 0;
if ($97) {
$108 = $99;
$dstp$111 = $dstp$2;
$srcp$25 = $srcp$4;
$u$19 = $u$3;
$v$110 = $v$3;
$x$06 = $94;
$y0$17 = $y0$3;
$y1$18 = $y1$3;
} else {
$$lcssa4 = $99;
$101 = $98;
$dstp$1$lcssa = $dstp$2;
$srcp$2$lcssa = $srcp$4;
$u$1$lcssa = $u$3;
$v$1$lcssa = $v$3;
$x$0$lcssa = $94;
$y0$1$lcssa = $y0$3;
$y1$1$lcssa = $y1$3;
break;
}
}
} else {
$$lcssa4 = $77;
$101 = $76;
$dstp$1$lcssa = $dstp$026;
$srcp$2$lcssa = $srcp$2$ph;
$u$1$lcssa = $u$024;
$v$1$lcssa = $v$025;
$x$0$lcssa = 0;
$y0$1$lcssa = $y0$022;
$y1$1$lcssa = $y1$023;
}
if ($$lcssa4) {
$100 = ($101 - $x$0$lcssa) | 0;
$102 = $100 << 1;
$103 = ($srcp$2$lcssa + $102) | 0;
$srcp$5 = $103;
} else {
$srcp$5 = $srcp$2$lcssa;
}
$104 = ($y$021 + 1) | 0;
$105 = HEAP32[$55 >> 2] | 0;
$106 = $105 & -4;
$107 = $104 >>> 0 < $106 >>> 0;
if ($107) {
$76 = $101;
$dstp$026 = $dstp$1$lcssa;
$srcp$020 = $srcp$5;
$u$024 = $u$1$lcssa;
$v$025 = $v$1$lcssa;
$y$021 = $104;
$y0$022 = $y0$1$lcssa;
$y1$023 = $y1$1$lcssa;
} else {
break;
}
}
STACKTOP = sp;
return;
}
function _convert_yuv_to_rgb($dst, $dstfmt, $src, $srcfmt) {
$dst = $dst | 0;
$dstfmt = $dstfmt | 0;
$src = $src | 0;
$srcfmt = $srcfmt | 0;
var $$ = 0,
$$0$i = 0,
$$lcssa2 = 0,
$$pre = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0;
var $112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0;
var $26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0;
var $44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0;
var $62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0;
var $80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0;
var $99 = 0,
$dstp$013 = 0,
$dstp$1$lcssa = 0,
$dstp$14 = 0,
$p$015 = 0,
$p$1$lcssa = 0,
$p$16 = 0,
$p$2 = 0,
$phitmp = 0,
$phitmp1 = 0,
$srcp$112 = 0,
$srcp$3$lcssa = 0,
$srcp$3$ph = 0,
$srcp$33 = 0,
$srcp$4 = 0,
$srcp$5 = 0,
$x$0$lcssa = 0,
$x$05 = 0,
$y$014 = 0,
$y0$0 = 0;
var label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($dst + 4) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($dst + 8) | 0;
$3 = HEAP32[$2 >> 2] | 0;
$4 = Math_imul($3, $1) | 0;
$5 = ($dstfmt + 8) | 0;
$6 = HEAP8[$5 >> 0] | 0;
$7 = $6 & 255;
$8 = Math_imul($4, $7) | 0;
$9 = ($dst + 16) | 0;
HEAP32[$9 >> 2] = $8;
$10 = _malloc($8) | 0;
$11 = ($dst + 12) | 0;
HEAP32[$11 >> 2] = $10;
$12 = ($10 | 0) == (0 | 0);
if ($12) {
STACKTOP = sp;
return;
}
$13 = ($5 + 1) | 0;
$14 = HEAP8[$13 >> 0] | 0;
$15 = $14 & 255;
$16 = $15 >>> 5;
$17 = $15 & 31;
$18 = ($5 + 2) | 0;
$19 = HEAP8[$18 >> 0] | 0;
$20 = $19 & 255;
$21 = $20 >>> 5;
$22 = $20 & 31;
$23 = ($5 + 3) | 0;
$24 = HEAP8[$23 >> 0] | 0;
$25 = $24 & 255;
$26 = $25 >>> 5;
$27 = $25 & 31;
$28 = ($src + 16) | 0;
$29 = HEAP32[$28 >> 2] | 0;
$30 = ($src + 4) | 0;
$31 = HEAP32[$30 >> 2] | 0;
$32 = ($src + 8) | 0;
$33 = HEAP32[$32 >> 2] | 0;
$34 = Math_imul($33, $31) | 0;
$35 = ($srcfmt + 4) | 0;
$36 = HEAP32[$35 >> 2] | 0;
$37 = ($36 | 0) == 0;
if ($37) {
$$0$i = 0;
} else {
$38 = ($srcfmt + 8) | 0;
$39 = HEAP8[$38 >> 0] | 0;
$40 = $39 & 255;
$41 = $31 >>> $40;
$42 = ($38 + 1) | 0;
$43 = HEAP8[$42 >> 0] | 0;
$44 = $43 & 255;
$45 = $33 >>> $44;
$46 = $41 << 1;
$phitmp1 = Math_imul($46, $45) | 0;
$$0$i = $phitmp1;
}
$47 = ($$0$i + $34) | 0;
$48 = $29 >>> 0 < $47 >>> 0;
if ($48) {
___assert_fail(5552 | 0, 5464 | 0, 707, 5624 | 0);
// unreachable;
}
$49 = ($src + 12) | 0;
$50 = HEAP32[$49 >> 2] | 0;
$51 = ($srcfmt + 8) | 0;
$52 = HEAP8[$51 >> 0] | 0;
$53 = ($52 << 24) >> 24 == 1;
if (!$53) {
___assert_fail(5648 | 0, 5464 | 0, 712, 5624 | 0);
// unreachable;
}
$54 = $3 >>> 0 > 3;
if (!$54) {
STACKTOP = sp;
return;
}
$55 = ($51 + 2) | 0;
$56 = HEAP8[$55 >> 0] | 0;
$57 = $56 & 2;
$58 = $31 >>> 1;
$59 = ($57 << 24) >> 24 == 0;
$60 = ($50 + 1) | 0;
$61 = ($31 + $58) | 0;
$$ = $59 ? $50 : $60;
$62 = (0 - $61) | 0;
$64 = $33;
$66 = $1;
$68 = $31;
$dstp$013 = $10;
$p$015 = 0;
$srcp$112 = $$;
$y$014 = 0;
while (1) {
$63 = $y$014 >>> 0 < $64 >>> 0;
if ($63) {
$srcp$3$ph = $srcp$112;
} else {
$65 = ($srcp$112 + $62) | 0;
$srcp$3$ph = $65;
}
$67 = $66 >>> 0 > 3;
$69 = ($68 | 0) != 0;
if ($67) {
$115 = $69;
$dstp$14 = $dstp$013;
$p$16 = $p$015;
$srcp$33 = $srcp$3$ph;
$x$05 = 0;
while (1) {
if ($115) {
$70 = HEAP8[$srcp$33 >> 0] | 0;
$71 = ($srcp$33 + 2) | 0;
$72 = $70 & 255;
$73 = ($70 & 255) < 17;
if ($73) {
$y0$0 = 0;
} else {
$74 = ($70 & 255) > 234;
if ($74) {
$y0$0 = 255;
} else {
$75 = ($72 + 65520) | 0;
$76 = $75 & 65535;
$77 = ($76 * 255) | 0;
$78 = (($77 >>> 0) / 219) & -1;
$phitmp = $78 & 255;
$y0$0 = $phitmp;
}
}
$79 = $y0$0 >>> $16;
$80 = $79 << $17;
$81 = $y0$0 >>> $21;
$82 = $81 << $22;
$83 = $80 | $82;
$84 = $y0$0 >>> $26;
$85 = $84 << $27;
$86 = $83 | $85;
$p$2 = $86;
$srcp$4 = $71;
} else {
$p$2 = $p$16;
$srcp$4 = $srcp$33;
}
$87 = HEAP8[$5 >> 0] | 0;
$88 = $87 & 255;
if (($88 | 0) == 3) {
$89 = $p$2 & 255;
HEAP8[$dstp$14 >> 0] = $89;
$90 = $p$2 >>> 8;
$91 = $90 & 255;
$92 = ($dstp$14 + 1) | 0;
HEAP8[$92 >> 0] = $91;
$93 = $p$2 >>> 16;
$94 = $93 & 255;
$95 = ($dstp$14 + 2) | 0;
HEAP8[$95 >> 0] = $94;
} else if (($88 | 0) == 4) {
HEAP32[$dstp$14 >> 2] = $p$2;
} else if (($88 | 0) == 2) {
$96 = $p$2 & 65535;
HEAP16[$dstp$14 >> 1] = $96;
} else {
$97 = $p$2 & 255;
HEAP8[$dstp$14 >> 0] = $97;
}
$98 = HEAP8[$5 >> 0] | 0;
$99 = $98 & 255;
$100 = ($dstp$14 + $99) | 0;
$101 = ($x$05 + 1) | 0;
$102 = HEAP32[$0 >> 2] | 0;
$103 = $102 & -4;
$104 = $101 >>> 0 < $103 >>> 0;
$105 = HEAP32[$30 >> 2] | 0;
$106 = $101 >>> 0 < $105 >>> 0;
if ($104) {
$115 = $106;
$dstp$14 = $100;
$p$16 = $p$2;
$srcp$33 = $srcp$4;
$x$05 = $101;
} else {
$$lcssa2 = $106;
$108 = $105;
$116 = $102;
$dstp$1$lcssa = $100;
$p$1$lcssa = $p$2;
$srcp$3$lcssa = $srcp$4;
$x$0$lcssa = $101;
break;
}
}
} else {
$$lcssa2 = $69;
$108 = $68;
$116 = $66;
$dstp$1$lcssa = $dstp$013;
$p$1$lcssa = $p$015;
$srcp$3$lcssa = $srcp$3$ph;
$x$0$lcssa = 0;
}
if ($$lcssa2) {
$107 = ($108 - $x$0$lcssa) | 0;
$109 = $107 << 1;
$110 = ($srcp$3$lcssa + $109) | 0;
$srcp$5 = $110;
} else {
$srcp$5 = $srcp$3$lcssa;
}
$111 = ($y$014 + 1) | 0;
$112 = HEAP32[$2 >> 2] | 0;
$113 = $112 & -4;
$114 = $111 >>> 0 < $113 >>> 0;
if (!$114) {
break;
}
$$pre = HEAP32[$32 >> 2] | 0;
$64 = $$pre;
$66 = $116;
$68 = $108;
$dstp$013 = $dstp$1$lcssa;
$p$015 = $p$1$lcssa;
$srcp$112 = $srcp$5;
$y$014 = $111;
}
STACKTOP = sp;
return;
}
function _convert_rgb_to_yuvp($dst, $dstfmt, $src, $srcfmt) {
$dst = $dst | 0;
$dstfmt = $dstfmt | 0;
$src = $src | 0;
$srcfmt = $srcfmt | 0;
var $$0$i = 0,
$$lcssa5 = 0,
$$pre = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0;
var $113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0;
var $131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0;
var $19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0;
var $37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0;
var $55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0;
var $73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0;
var $91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$dsty$018 = 0,
$dsty$1$lcssa = 0,
$dsty$19 = 0,
$extract$t = 0,
$p$0$i = 0,
$phitmp = 0,
$srcp$017 = 0,
$srcp$2$lcssa = 0,
$srcp$2$ph = 0,
$srcp$28 = 0,
$srcp$3 = 0;
var $srcp$4 = 0,
$x$0$lcssa = 0,
$x$07 = 0,
$y$016 = 0,
$y0$0$off015 = 0,
$y0$1$off0$lcssa = 0,
$y0$1$off06 = 0,
$y0$2$off0 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($dstfmt + 4) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == 0;
if ($2) {
$3 = ($dst + 4) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($dst + 8) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = Math_imul($6, $4) | 0;
$$0$i = 0;
$43 = $7;
$78 = $5;
$88 = $3;
} else {
$8 = ($dstfmt + 8) | 0;
$9 = HEAP8[$8 >> 0] | 0;
$10 = $9 & 255;
$11 = 1 << $10;
$12 = ($11 + -1) | 0;
$13 = ($dst + 4) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = $12 & $14;
$16 = ($15 | 0) == 0;
if ($16) {
$33 = $14;
} else {
$17 = ($12 + $14) | 0;
$18 = (0 - $11) | 0;
$19 = $17 & $18;
HEAP32[$13 >> 2] = $19;
$33 = $19;
}
$20 = ($8 + 1) | 0;
$21 = HEAP8[$20 >> 0] | 0;
$22 = $21 & 255;
$23 = 1 << $22;
$24 = ($23 + -1) | 0;
$25 = ($dst + 8) | 0;
$26 = HEAP32[$25 >> 2] | 0;
$27 = $24 & $26;
$28 = ($27 | 0) == 0;
if ($28) {
$34 = $26;
} else {
$29 = ($24 + $26) | 0;
$30 = (0 - $23) | 0;
$31 = $29 & $30;
HEAP32[$25 >> 2] = $31;
$34 = $31;
}
$32 = Math_imul($34, $33) | 0;
$35 = HEAP8[$8 >> 0] | 0;
$36 = $35 & 255;
$37 = $33 >>> $36;
$38 = HEAP8[$20 >> 0] | 0;
$39 = $38 & 255;
$40 = $34 >>> $39;
$41 = $37 << 1;
$phitmp = Math_imul($41, $40) | 0;
$$0$i = $phitmp;
$43 = $32;
$78 = $25;
$88 = $13;
}
$42 = ($$0$i + $43) | 0;
$44 = ($dst + 16) | 0;
HEAP32[$44 >> 2] = $42;
$45 = _malloc($42) | 0;
$46 = ($dst + 12) | 0;
HEAP32[$46 >> 2] = $45;
$47 = ($45 | 0) == (0 | 0);
if ($47) {
STACKTOP = sp;
return;
}
$48 = ($$0$i | 0) == 0;
if (!$48) {
$49 = ($45 + $43) | 0;
_memset($49 | 0, -128, $$0$i | 0) | 0;
}
$50 = ($src + 16) | 0;
$51 = HEAP32[$50 >> 2] | 0;
$52 = ($src + 4) | 0;
$53 = HEAP32[$52 >> 2] | 0;
$54 = ($src + 8) | 0;
$55 = HEAP32[$54 >> 2] | 0;
$56 = Math_imul($55, $53) | 0;
$57 = ($srcfmt + 8) | 0;
$58 = HEAP8[$57 >> 0] | 0;
$59 = $58 & 255;
$60 = Math_imul($56, $59) | 0;
$61 = $51 >>> 0 < $60 >>> 0;
if ($61) {
___assert_fail(5400 | 0, 5464 | 0, 646, 5528 | 0);
// unreachable;
}
$62 = ($57 + 1) | 0;
$63 = HEAP8[$62 >> 0] | 0;
$64 = $63 & 255;
$65 = $64 >>> 5;
$66 = $64 & 31;
$67 = ($57 + 2) | 0;
$68 = HEAP8[$67 >> 0] | 0;
$69 = $68 & 255;
$70 = $69 >>> 5;
$71 = $69 & 31;
$72 = ($57 + 3) | 0;
$73 = HEAP8[$72 >> 0] | 0;
$74 = $73 & 255;
$75 = $74 >>> 5;
$76 = $74 & 31;
$77 = HEAP32[$78 >> 2] | 0;
$79 = $77 >>> 0 > 3;
if (!$79) {
STACKTOP = sp;
return;
}
$80 = ($src + 12) | 0;
$81 = HEAP32[$80 >> 2] | 0;
$82 = (0 - $53) | 0;
$83 = Math_imul($59, $82) | 0;
$85 = $55;
$90 = $53;
$dsty$018 = $45;
$srcp$017 = $81;
$y$016 = 0;
$y0$0$off015 = 0;
while (1) {
$84 = $y$016 >>> 0 < $85 >>> 0;
if ($84) {
$srcp$2$ph = $srcp$017;
} else {
$86 = ($srcp$017 + $83) | 0;
$srcp$2$ph = $86;
}
$87 = HEAP32[$88 >> 2] | 0;
$89 = $87 >>> 0 > 3;
$91 = ($90 | 0) != 0;
if ($89) {
$145 = $91;
$dsty$19 = $dsty$018;
$srcp$28 = $srcp$2$ph;
$x$07 = 0;
$y0$1$off06 = $y0$0$off015;
while (1) {
if ($145) {
$92 = HEAP8[$57 >> 0] | 0;
$93 = $92 & 255;
if (($93 | 0) == 3) {
$94 = HEAP8[$srcp$28 >> 0] | 0;
$95 = $94 & 255;
$96 = ($srcp$28 + 1) | 0;
$97 = HEAP8[$96 >> 0] | 0;
$98 = $97 & 255;
$99 = $98 << 8;
$100 = $99 | $95;
$101 = ($srcp$28 + 2) | 0;
$102 = HEAP8[$101 >> 0] | 0;
$103 = $102 & 255;
$104 = $103 << 16;
$105 = $100 | $104;
$p$0$i = $105;
} else if (($93 | 0) == 2) {
$107 = HEAP16[$srcp$28 >> 1] | 0;
$108 = $107 & 65535;
$p$0$i = $108;
} else if (($93 | 0) == 4) {
$106 = HEAP32[$srcp$28 >> 2] | 0;
$p$0$i = $106;
} else {
$109 = HEAP8[$srcp$28 >> 0] | 0;
$110 = $109 & 255;
$p$0$i = $110;
}
$111 = ($srcp$28 + $93) | 0;
$112 = $p$0$i >>> $66;
$113 = $112 << $65;
$114 = $p$0$i >>> $71;
$115 = $114 << $70;
$116 = $p$0$i >>> $76;
$117 = $116 << $75;
$118 = $113 & 255;
$119 = ($118 * 77) | 0;
$120 = $115 & 255;
$121 = ($120 * 150) | 0;
$122 = $117 & 255;
$123 = ($122 * 29) | 0;
$124 = ($121 + 128) | 0;
$125 = ($124 + $119) | 0;
$126 = ($125 + $123) | 0;
$127 = $126 >>> 8;
$extract$t = $127 & 255;
$srcp$3 = $111;
$y0$2$off0 = $extract$t;
} else {
$srcp$3 = $srcp$28;
$y0$2$off0 = $y0$1$off06;
}
$128 = ($dsty$19 + 1) | 0;
HEAP8[$dsty$19 >> 0] = $y0$2$off0;
$129 = ($x$07 + 1) | 0;
$130 = HEAP32[$88 >> 2] | 0;
$131 = $130 & -4;
$132 = $129 >>> 0 < $131 >>> 0;
$133 = HEAP32[$52 >> 2] | 0;
$134 = $129 >>> 0 < $133 >>> 0;
if ($132) {
$145 = $134;
$dsty$19 = $128;
$srcp$28 = $srcp$3;
$x$07 = $129;
$y0$1$off06 = $y0$2$off0;
} else {
$$lcssa5 = $134;
$136 = $133;
$dsty$1$lcssa = $128;
$srcp$2$lcssa = $srcp$3;
$x$0$lcssa = $129;
$y0$1$off0$lcssa = $y0$2$off0;
break;
}
}
} else {
$$lcssa5 = $91;
$136 = $90;
$dsty$1$lcssa = $dsty$018;
$srcp$2$lcssa = $srcp$2$ph;
$x$0$lcssa = 0;
$y0$1$off0$lcssa = $y0$0$off015;
}
if ($$lcssa5) {
$135 = ($136 - $x$0$lcssa) | 0;
$137 = HEAP8[$57 >> 0] | 0;
$138 = $137 & 255;
$139 = Math_imul($138, $135) | 0;
$140 = ($srcp$2$lcssa + $139) | 0;
$srcp$4 = $140;
} else {
$srcp$4 = $srcp$2$lcssa;
}
$141 = ($y$016 + 1) | 0;
$142 = HEAP32[$78 >> 2] | 0;
$143 = $142 & -4;
$144 = $141 >>> 0 < $143 >>> 0;
if (!$144) {
break;
}
$$pre = HEAP32[$54 >> 2] | 0;
$85 = $$pre;
$90 = $136;
$dsty$018 = $dsty$1$lcssa;
$srcp$017 = $srcp$4;
$y$016 = $141;
$y0$0$off015 = $y0$1$off0$lcssa;
}
STACKTOP = sp;
return;
}
function _convert_rgb_to_yuv($dst, $dstfmt, $src, $srcfmt) {
$dst = $dst | 0;
$dstfmt = $dstfmt | 0;
$src = $src | 0;
$srcfmt = $srcfmt | 0;
var $$0$i = 0,
$$lcssa6 = 0,
$$pre = 0,
$$y0$2$off0 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0;
var $112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0;
var $130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0;
var $15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0;
var $33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0;
var $51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0;
var $7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0;
var $88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$dstp$019 = 0,
$dstp$1$lcssa = 0,
$dstp$110 = 0,
$dstp$2 = 0,
$extract$t = 0,
$p$0$i = 0,
$phitmp = 0;
var $srcp$018 = 0,
$srcp$2$lcssa = 0,
$srcp$2$ph = 0,
$srcp$29 = 0,
$srcp$3 = 0,
$srcp$4 = 0,
$x$0$lcssa = 0,
$x$08 = 0,
$y$017 = 0,
$y0$0$off016 = 0,
$y0$1$off0$lcssa = 0,
$y0$1$off07 = 0,
$y0$2$off0 = 0,
$y0$2$off0$ = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($dstfmt + 4) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == 0;
if ($2) {
$3 = ($dst + 4) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($dst + 8) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = Math_imul($6, $4) | 0;
$$0$i = 0;
$43 = $7;
$79 = $5;
$91 = $3;
} else {
$8 = ($dstfmt + 8) | 0;
$9 = HEAP8[$8 >> 0] | 0;
$10 = $9 & 255;
$11 = 1 << $10;
$12 = ($11 + -1) | 0;
$13 = ($dst + 4) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = $12 & $14;
$16 = ($15 | 0) == 0;
if ($16) {
$33 = $14;
} else {
$17 = ($12 + $14) | 0;
$18 = (0 - $11) | 0;
$19 = $17 & $18;
HEAP32[$13 >> 2] = $19;
$33 = $19;
}
$20 = ($8 + 1) | 0;
$21 = HEAP8[$20 >> 0] | 0;
$22 = $21 & 255;
$23 = 1 << $22;
$24 = ($23 + -1) | 0;
$25 = ($dst + 8) | 0;
$26 = HEAP32[$25 >> 2] | 0;
$27 = $24 & $26;
$28 = ($27 | 0) == 0;
if ($28) {
$34 = $26;
} else {
$29 = ($24 + $26) | 0;
$30 = (0 - $23) | 0;
$31 = $29 & $30;
HEAP32[$25 >> 2] = $31;
$34 = $31;
}
$32 = Math_imul($34, $33) | 0;
$35 = HEAP8[$8 >> 0] | 0;
$36 = $35 & 255;
$37 = $33 >>> $36;
$38 = HEAP8[$20 >> 0] | 0;
$39 = $38 & 255;
$40 = $34 >>> $39;
$41 = $37 << 1;
$phitmp = Math_imul($41, $40) | 0;
$$0$i = $phitmp;
$43 = $32;
$79 = $25;
$91 = $13;
}
$42 = ($$0$i + $43) | 0;
$44 = ($dst + 16) | 0;
HEAP32[$44 >> 2] = $42;
$45 = _malloc($42) | 0;
$46 = ($dst + 12) | 0;
HEAP32[$46 >> 2] = $45;
$47 = ($45 | 0) == (0 | 0);
if ($47) {
STACKTOP = sp;
return;
}
$48 = ($dstfmt + 8) | 0;
$49 = ($48 + 2) | 0;
$50 = HEAP8[$49 >> 0] | 0;
$51 = ($src + 16) | 0;
$52 = HEAP32[$51 >> 2] | 0;
$53 = ($src + 4) | 0;
$54 = HEAP32[$53 >> 2] | 0;
$55 = ($src + 8) | 0;
$56 = HEAP32[$55 >> 2] | 0;
$57 = Math_imul($56, $54) | 0;
$58 = ($srcfmt + 8) | 0;
$59 = HEAP8[$58 >> 0] | 0;
$60 = $59 & 255;
$61 = Math_imul($57, $60) | 0;
$62 = $52 >>> 0 < $61 >>> 0;
if ($62) {
___assert_fail(5400 | 0, 5464 | 0, 762, 5504 | 0);
// unreachable;
}
$63 = ($58 + 1) | 0;
$64 = HEAP8[$63 >> 0] | 0;
$65 = $64 & 255;
$66 = $65 >>> 5;
$67 = $65 & 31;
$68 = ($58 + 2) | 0;
$69 = HEAP8[$68 >> 0] | 0;
$70 = $69 & 255;
$71 = $70 >>> 5;
$72 = $70 & 31;
$73 = ($58 + 3) | 0;
$74 = HEAP8[$73 >> 0] | 0;
$75 = $74 & 255;
$76 = $75 >>> 5;
$77 = $75 & 31;
$78 = HEAP32[$79 >> 2] | 0;
$80 = $78 >>> 0 > 3;
if (!$80) {
STACKTOP = sp;
return;
}
$81 = ($src + 12) | 0;
$82 = HEAP32[$81 >> 2] | 0;
$83 = (0 - $54) | 0;
$84 = Math_imul($60, $83) | 0;
$85 = $50 & 2;
$86 = ($85 << 24) >> 24 == 0;
$88 = $56;
$93 = $54;
$dstp$019 = $45;
$srcp$018 = $82;
$y$017 = 0;
$y0$0$off016 = 0;
while (1) {
$87 = $y$017 >>> 0 < $88 >>> 0;
if ($87) {
$srcp$2$ph = $srcp$018;
} else {
$89 = ($srcp$018 + $84) | 0;
$srcp$2$ph = $89;
}
$90 = HEAP32[$91 >> 2] | 0;
$92 = $90 >>> 0 > 3;
$94 = ($93 | 0) != 0;
if ($92) {
$148 = $94;
$dstp$110 = $dstp$019;
$srcp$29 = $srcp$2$ph;
$x$08 = 0;
$y0$1$off07 = $y0$0$off016;
while (1) {
if ($148) {
$95 = HEAP8[$58 >> 0] | 0;
$96 = $95 & 255;
if (($96 | 0) == 2) {
$110 = HEAP16[$srcp$29 >> 1] | 0;
$111 = $110 & 65535;
$p$0$i = $111;
} else if (($96 | 0) == 4) {
$109 = HEAP32[$srcp$29 >> 2] | 0;
$p$0$i = $109;
} else if (($96 | 0) == 3) {
$97 = HEAP8[$srcp$29 >> 0] | 0;
$98 = $97 & 255;
$99 = ($srcp$29 + 1) | 0;
$100 = HEAP8[$99 >> 0] | 0;
$101 = $100 & 255;
$102 = $101 << 8;
$103 = $102 | $98;
$104 = ($srcp$29 + 2) | 0;
$105 = HEAP8[$104 >> 0] | 0;
$106 = $105 & 255;
$107 = $106 << 16;
$108 = $103 | $107;
$p$0$i = $108;
} else {
$112 = HEAP8[$srcp$29 >> 0] | 0;
$113 = $112 & 255;
$p$0$i = $113;
}
$114 = ($srcp$29 + $96) | 0;
$115 = $p$0$i >>> $67;
$116 = $115 << $66;
$117 = $p$0$i >>> $72;
$118 = $117 << $71;
$119 = $p$0$i >>> $77;
$120 = $119 << $76;
$121 = $116 & 255;
$122 = ($121 * 77) | 0;
$123 = $118 & 255;
$124 = ($123 * 150) | 0;
$125 = $120 & 255;
$126 = ($125 * 29) | 0;
$127 = ($124 + 128) | 0;
$128 = ($127 + $122) | 0;
$129 = ($128 + $126) | 0;
$130 = $129 >>> 8;
$extract$t = $130 & 255;
$srcp$3 = $114;
$y0$2$off0 = $extract$t;
} else {
$srcp$3 = $srcp$29;
$y0$2$off0 = $y0$1$off07;
}
$131 = ($dstp$110 + 1) | 0;
$y0$2$off0$ = $86 ? $y0$2$off0 : -128;
$$y0$2$off0 = $86 ? -128 : $y0$2$off0;
HEAP8[$dstp$110 >> 0] = $y0$2$off0$;
HEAP8[$131 >> 0] = $$y0$2$off0;
$dstp$2 = ($dstp$110 + 2) | 0;
$132 = ($x$08 + 1) | 0;
$133 = HEAP32[$91 >> 2] | 0;
$134 = $133 & -4;
$135 = $132 >>> 0 < $134 >>> 0;
$136 = HEAP32[$53 >> 2] | 0;
$137 = $132 >>> 0 < $136 >>> 0;
if ($135) {
$148 = $137;
$dstp$110 = $dstp$2;
$srcp$29 = $srcp$3;
$x$08 = $132;
$y0$1$off07 = $y0$2$off0;
} else {
$$lcssa6 = $137;
$139 = $136;
$dstp$1$lcssa = $dstp$2;
$srcp$2$lcssa = $srcp$3;
$x$0$lcssa = $132;
$y0$1$off0$lcssa = $y0$2$off0;
break;
}
}
} else {
$$lcssa6 = $94;
$139 = $93;
$dstp$1$lcssa = $dstp$019;
$srcp$2$lcssa = $srcp$2$ph;
$x$0$lcssa = 0;
$y0$1$off0$lcssa = $y0$0$off016;
}
if ($$lcssa6) {
$138 = ($139 - $x$0$lcssa) | 0;
$140 = HEAP8[$58 >> 0] | 0;
$141 = $140 & 255;
$142 = Math_imul($141, $138) | 0;
$143 = ($srcp$2$lcssa + $142) | 0;
$srcp$4 = $143;
} else {
$srcp$4 = $srcp$2$lcssa;
}
$144 = ($y$017 + 1) | 0;
$145 = HEAP32[$79 >> 2] | 0;
$146 = $145 & -4;
$147 = $144 >>> 0 < $146 >>> 0;
if (!$147) {
break;
}
$$pre = HEAP32[$55 >> 2] | 0;
$88 = $$pre;
$93 = $139;
$dstp$019 = $dstp$1$lcssa;
$srcp$018 = $srcp$4;
$y$017 = $144;
$y0$0$off016 = $y0$1$off0$lcssa;
}
STACKTOP = sp;
return;
}
function _convert_rgb_resample($dst, $dstfmt, $src, $srcfmt) {
$dst = $dst | 0;
$dstfmt = $dstfmt | 0;
$src = $src | 0;
$srcfmt = $srcfmt | 0;
var $$lcssa1 = 0,
$$neg = 0,
$$op = 0,
$$pre = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0;
var $112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0;
var $130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0;
var $29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0;
var $47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0;
var $65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0;
var $83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$dstp$014 = 0,
$dstp$1$lcssa = 0;
var $dstp$15 = 0,
$p$0$i = 0,
$p$012 = 0,
$p$1$lcssa = 0,
$p$12 = 0,
$p$2 = 0,
$srcp$013 = 0,
$srcp$1$lcssa = 0,
$srcp$14 = 0,
$srcp$2 = 0,
$srcp$3 = 0,
$x$0$lcssa = 0,
$x$03 = 0,
$y$0$ = 0,
$y$011 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($dst + 4) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($dst + 8) | 0;
$3 = HEAP32[$2 >> 2] | 0;
$4 = Math_imul($3, $1) | 0;
$5 = ($dstfmt + 8) | 0;
$6 = HEAP8[$5 >> 0] | 0;
$7 = $6 & 255;
$8 = Math_imul($4, $7) | 0;
$9 = ($dst + 16) | 0;
HEAP32[$9 >> 2] = $8;
$10 = _malloc($8) | 0;
$11 = ($dst + 12) | 0;
HEAP32[$11 >> 2] = $10;
$12 = ($10 | 0) == (0 | 0);
if ($12) {
STACKTOP = sp;
return;
}
$13 = ($5 + 1) | 0;
$14 = HEAP8[$13 >> 0] | 0;
$15 = $14 & 255;
$16 = $15 >>> 5;
$17 = $15 & 31;
$18 = ($5 + 2) | 0;
$19 = HEAP8[$18 >> 0] | 0;
$20 = $19 & 255;
$21 = $20 >>> 5;
$22 = $20 & 31;
$23 = ($5 + 3) | 0;
$24 = HEAP8[$23 >> 0] | 0;
$25 = $24 & 255;
$26 = $25 >>> 5;
$27 = $25 & 31;
$28 = ($src + 16) | 0;
$29 = HEAP32[$28 >> 2] | 0;
$30 = ($src + 4) | 0;
$31 = HEAP32[$30 >> 2] | 0;
$32 = ($src + 8) | 0;
$33 = HEAP32[$32 >> 2] | 0;
$34 = Math_imul($33, $31) | 0;
$35 = ($srcfmt + 8) | 0;
$36 = HEAP8[$35 >> 0] | 0;
$37 = $36 & 255;
$38 = Math_imul($34, $37) | 0;
$39 = $29 >>> 0 < $38 >>> 0;
if ($39) {
___assert_fail(5400 | 0, 5464 | 0, 828, 5480 | 0);
// unreachable;
}
$40 = ($35 + 1) | 0;
$41 = HEAP8[$40 >> 0] | 0;
$42 = $41 & 255;
$43 = $42 >>> 5;
$44 = $42 & 31;
$45 = ($35 + 2) | 0;
$46 = HEAP8[$45 >> 0] | 0;
$47 = $46 & 255;
$48 = $47 >>> 5;
$49 = $47 & 31;
$50 = ($35 + 3) | 0;
$51 = HEAP8[$50 >> 0] | 0;
$52 = $51 & 255;
$53 = $52 >>> 5;
$54 = $52 & 31;
$55 = Math_imul($37, $31) | 0;
$56 = $3 >>> 0 > 3;
if (!$56) {
STACKTOP = sp;
return;
}
$57 = ($src + 12) | 0;
$58 = HEAP32[$57 >> 2] | 0;
$60 = $33;
$61 = $1;
$63 = $31;
$dstp$014 = $10;
$p$012 = 0;
$srcp$013 = $58;
$y$011 = 0;
while (1) {
$59 = $y$011 >>> 0 < $60 >>> 0;
$$op = (0 - $55) | 0;
$$neg = $59 ? 0 : $$op;
$62 = $61 >>> 0 > 3;
$64 = ($63 | 0) != 0;
if ($62) {
$132 = $64;
$dstp$15 = $dstp$014;
$p$12 = $p$012;
$srcp$14 = $srcp$013;
$x$03 = 0;
while (1) {
if ($132) {
$65 = HEAP8[$35 >> 0] | 0;
$66 = $65 & 255;
if (($66 | 0) == 3) {
$67 = HEAP8[$srcp$14 >> 0] | 0;
$68 = $67 & 255;
$69 = ($srcp$14 + 1) | 0;
$70 = HEAP8[$69 >> 0] | 0;
$71 = $70 & 255;
$72 = $71 << 8;
$73 = $72 | $68;
$74 = ($srcp$14 + 2) | 0;
$75 = HEAP8[$74 >> 0] | 0;
$76 = $75 & 255;
$77 = $76 << 16;
$78 = $73 | $77;
$p$0$i = $78;
} else if (($66 | 0) == 4) {
$79 = HEAP32[$srcp$14 >> 2] | 0;
$p$0$i = $79;
} else if (($66 | 0) == 2) {
$80 = HEAP16[$srcp$14 >> 1] | 0;
$81 = $80 & 65535;
$p$0$i = $81;
} else {
$82 = HEAP8[$srcp$14 >> 0] | 0;
$83 = $82 & 255;
$p$0$i = $83;
}
$84 = ($srcp$14 + $66) | 0;
$85 = $p$0$i >>> $44;
$86 = $85 << $43;
$87 = $p$0$i >>> $49;
$88 = $87 << $48;
$89 = $p$0$i >>> $54;
$90 = $89 << $53;
$91 = $86 & 255;
$92 = $91 >>> $16;
$93 = $92 << $17;
$94 = $88 & 255;
$95 = $94 >>> $21;
$96 = $95 << $22;
$97 = $93 | $96;
$98 = $90 & 255;
$99 = $98 >>> $26;
$100 = $99 << $27;
$101 = $97 | $100;
$p$2 = $101;
$srcp$2 = $84;
} else {
$p$2 = $p$12;
$srcp$2 = $srcp$14;
}
$102 = HEAP8[$5 >> 0] | 0;
$103 = $102 & 255;
if (($103 | 0) == 2) {
$111 = $p$2 & 65535;
HEAP16[$dstp$15 >> 1] = $111;
} else if (($103 | 0) == 4) {
HEAP32[$dstp$15 >> 2] = $p$2;
} else if (($103 | 0) == 3) {
$104 = $p$2 & 255;
HEAP8[$dstp$15 >> 0] = $104;
$105 = $p$2 >>> 8;
$106 = $105 & 255;
$107 = ($dstp$15 + 1) | 0;
HEAP8[$107 >> 0] = $106;
$108 = $p$2 >>> 16;
$109 = $108 & 255;
$110 = ($dstp$15 + 2) | 0;
HEAP8[$110 >> 0] = $109;
} else {
$112 = $p$2 & 255;
HEAP8[$dstp$15 >> 0] = $112;
}
$113 = HEAP8[$5 >> 0] | 0;
$114 = $113 & 255;
$115 = ($dstp$15 + $114) | 0;
$116 = ($x$03 + 1) | 0;
$117 = HEAP32[$0 >> 2] | 0;
$118 = $117 & -4;
$119 = $116 >>> 0 < $118 >>> 0;
$120 = HEAP32[$30 >> 2] | 0;
$121 = $116 >>> 0 < $120 >>> 0;
if ($119) {
$132 = $121;
$dstp$15 = $115;
$p$12 = $p$2;
$srcp$14 = $srcp$2;
$x$03 = $116;
} else {
$$lcssa1 = $121;
$123 = $120;
$133 = $117;
$dstp$1$lcssa = $115;
$p$1$lcssa = $p$2;
$srcp$1$lcssa = $srcp$2;
$x$0$lcssa = $116;
break;
}
}
} else {
$$lcssa1 = $64;
$123 = $63;
$133 = $61;
$dstp$1$lcssa = $dstp$014;
$p$1$lcssa = $p$012;
$srcp$1$lcssa = $srcp$013;
$x$0$lcssa = 0;
}
if ($$lcssa1) {
$122 = ($123 - $x$0$lcssa) | 0;
$124 = HEAP8[$35 >> 0] | 0;
$125 = $124 & 255;
$126 = Math_imul($125, $122) | 0;
$127 = ($srcp$1$lcssa + $126) | 0;
$srcp$3 = $127;
} else {
$srcp$3 = $srcp$1$lcssa;
}
$y$0$ = ($y$011 + 1) | 0;
$128 = ($y$0$ + $$neg) | 0;
$129 = HEAP32[$2 >> 2] | 0;
$130 = $129 & -4;
$131 = $128 >>> 0 < $130 >>> 0;
if (!$131) {
break;
}
$$pre = HEAP32[$32 >> 2] | 0;
$60 = $$pre;
$61 = $133;
$63 = $123;
$dstp$014 = $dstp$1$lcssa;
$p$012 = $p$1$lcssa;
$srcp$013 = $srcp$3;
$y$011 = $128;
}
STACKTOP = sp;
return;
}
function _convert_y_resize($dst, $src, $n) {
$dst = $dst | 0;
$src = $src | 0;
$n = $n | 0;
var $$ = 0,
$$4 = 0,
$$pre = 0,
$$pre$pre = 0,
$$pre17 = 0,
$$sum = 0,
$$sum1 = 0,
$$sum2 = 0,
$$sum3 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0;
var $19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0;
var $37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0;
var $55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$exitcond = 0,
$exitcond16 = 0,
$or$cond = 0,
$pdst$0$lcssa = 0,
$pdst$07 = 0,
$pdst$07$us = 0;
var $pdst$25 = 0,
$pdst$25$us = 0,
$psrc$0$lcssa = 0,
$psrc$08 = 0,
$psrc$08$us = 0,
$scevgep = 0,
$split11 = 0,
$split12 = 0,
$umax = 0,
$y$0$lcssa = 0,
$y$09 = 0,
$y$09$us = 0,
$y$16 = 0,
$y$16$us = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($dst + 4) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($src + 4) | 0;
$3 = HEAP32[$2 >> 2] | 0;
$4 = ($1 | 0) == ($3 | 0);
$5 = ($dst + 8) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($src + 8) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($6 | 0) == ($8 | 0);
$or$cond = $4 & $9;
if ($or$cond) {
$10 = ($dst + 12) | 0;
$11 = HEAP32[$10 >> 2] | 0;
$12 = ($src + 12) | 0;
$13 = HEAP32[$12 >> 2] | 0;
_memcpy($11 | 0, $13 | 0, $n | 0) | 0;
STACKTOP = sp;
return;
}
$14 = ($src + 12) | 0;
$15 = HEAP32[$14 >> 2] | 0;
$16 = ($dst + 12) | 0;
$17 = HEAP32[$16 >> 2] | 0;
$18 = $1 >>> 0 > $3 >>> 0;
$$ = $18 ? $3 : $1;
$19 = ($1 - $3) | 0;
$20 = $18 ? $19 : 0;
$21 = ($dst + 8) | 0;
$22 = $6 >>> 0 > $8 >>> 0;
$$4 = $22 ? $8 : $6;
$23 = $$4 & -4;
$24 = ($23 | 0) == 0;
if ($24) {
$46 = $3;
$49 = $6;
$pdst$0$lcssa = $17;
$psrc$0$lcssa = $15;
$y$0$lcssa = 0;
} else {
$25 = ($20 | 0) == 0;
$$sum3 = ($$ + $20) | 0;
if ($25) {
$26 = ($23 + -1) | 0;
$27 = $3 ^ -1;
$28 = $1 ^ -1;
$29 = $27 >>> 0 > $28 >>> 0;
$umax = $29 ? $27 : $28;
$30 = $umax ^ -1;
$31 = Math_imul($26, $30) | 0;
$32 = ($31 + -1) | 0;
$33 = ($32 - $umax) | 0;
$pdst$07$us = $17;
$psrc$08$us = $15;
$y$09$us = 0;
while (1) {
_memcpy($pdst$07$us | 0, $psrc$08$us | 0, $$ | 0) | 0;
$34 = ($pdst$07$us + $$) | 0;
$35 = HEAP32[$2 >> 2] | 0;
$36 = ($psrc$08$us + $35) | 0;
$37 = ($y$09$us + 1) | 0;
$exitcond16 = ($37 | 0) == ($23 | 0);
if ($exitcond16) {
break;
} else {
$pdst$07$us = $34;
$psrc$08$us = $36;
$y$09$us = $37;
}
}
$scevgep = ($17 + $33) | 0;
$$pre = $35;
$split11 = $36;
$split12 = $scevgep;
} else {
$pdst$07 = $17;
$psrc$08 = $15;
$y$09 = 0;
while (1) {
_memcpy($pdst$07 | 0, $psrc$08 | 0, $$ | 0) | 0;
$38 = ($pdst$07 + $$) | 0;
$39 = HEAP32[$2 >> 2] | 0;
$40 = ($psrc$08 + $39) | 0;
$$sum2 = ($39 + -1) | 0;
$41 = ($psrc$08 + $$sum2) | 0;
$42 = HEAP8[$41 >> 0] | 0;
_memset($38 | 0, $42 | 0, $20 | 0) | 0;
$43 = ($pdst$07 + $$sum3) | 0;
$44 = ($y$09 + 1) | 0;
$exitcond = ($44 | 0) == ($23 | 0);
if ($exitcond) {
break;
} else {
$pdst$07 = $43;
$psrc$08 = $40;
$y$09 = $44;
}
}
$$pre$pre = HEAP32[$2 >> 2] | 0;
$$pre = $$pre$pre;
$split11 = $40;
$split12 = $43;
}
$$pre17 = HEAP32[$21 >> 2] | 0;
$46 = $$pre;
$49 = $$pre17;
$pdst$0$lcssa = $split12;
$psrc$0$lcssa = $split11;
$y$0$lcssa = $23;
}
$45 = (0 - $46) | 0;
$47 = ($psrc$0$lcssa + $45) | 0;
$48 = $49 & -4;
$50 = $y$0$lcssa >>> 0 < $48 >>> 0;
if (!$50) {
STACKTOP = sp;
return;
}
$51 = ($20 | 0) == 0;
$$sum = $46 ^ -1;
$52 = ($psrc$0$lcssa + $$sum) | 0;
$$sum1 = ($$ + $20) | 0;
if ($51) {
$pdst$25$us = $pdst$0$lcssa;
$y$16$us = $y$0$lcssa;
while (1) {
_memcpy($pdst$25$us | 0, $47 | 0, $$ | 0) | 0;
$53 = ($pdst$25$us + $$) | 0;
$54 = ($y$16$us + 1) | 0;
$55 = HEAP32[$21 >> 2] | 0;
$56 = $55 & -4;
$57 = $54 >>> 0 < $56 >>> 0;
if ($57) {
$pdst$25$us = $53;
$y$16$us = $54;
} else {
break;
}
}
STACKTOP = sp;
return;
} else {
$pdst$25 = $pdst$0$lcssa;
$y$16 = $y$0$lcssa;
while (1) {
_memcpy($pdst$25 | 0, $47 | 0, $$ | 0) | 0;
$58 = ($pdst$25 + $$) | 0;
$59 = HEAP8[$52 >> 0] | 0;
_memset($58 | 0, $59 | 0, $20 | 0) | 0;
$60 = ($pdst$25 + $$sum1) | 0;
$61 = ($y$16 + 1) | 0;
$62 = HEAP32[$21 >> 2] | 0;
$63 = $62 & -4;
$64 = $61 >>> 0 < $63 >>> 0;
if ($64) {
$pdst$25 = $60;
$y$16 = $61;
} else {
break;
}
}
STACKTOP = sp;
return;
}
}
function _cleanup_ref($img) {
$img = $img | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($img + 56) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == (0 | 0);
if ($2) {
STACKTOP = sp;
return;
}
$3 = ($1 + 44) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($4 + -1) | 0;
HEAP32[$3 >> 2] = $5;
$6 = ($4 | 0) > 0;
if (!$6) {
___assert_fail(5904 | 0, 5912 | 0, 87, 5928 | 0);
// unreachable;
}
$7 = ($5 | 0) == 0;
if (!$7) {
STACKTOP = sp;
return;
}
$8 = ($1 + 40) | 0;
$9 = HEAP32[$8 >> 2] | 0;
$10 = ($9 | 0) == (0 | 0);
if (!$10) {
FUNCTION_TABLE_vi[$9 & 7]($1);
}
$11 = ($1 + 48) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($12 | 0) == (0 | 0);
if (!$13) {
STACKTOP = sp;
return;
}
__zbar_image_free($1);
STACKTOP = sp;
return;
}
function __zbar_image_scanner_recycle_syms($iscn, $sym) {
$iscn = $iscn | 0;
$sym = $sym | 0;
var $$03 = 0,
$$pre = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0;
var $25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0;
var $43 = 0,
$44 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$i$0$lcssa = 0,
$i$02 = 0,
$i$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($sym | 0) == (0 | 0);
if ($0) {
STACKTOP = sp;
return;
} else {
$$03 = $sym;
}
while (1) {
$1 = ($$03 + 44) | 0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($$03 + 40) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($4 | 0) == 0;
if ($5) {
label = 10;
} else {
$6 = ($4 + -1) | 0;
HEAP32[$3 >> 2] = $6;
$7 = ($4 | 0) > 0;
if (!$7) {
label = 4;
break;
}
$8 = ($6 | 0) == 0;
if ($8) {
label = 10;
} else {
$9 = ($$03 + 12) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($10 | 0) == 0;
if ($11) {
label = 7;
break;
}
HEAP32[$1 >> 2] = 0;
}
}
if ((label | 0) == 10) {
label = 0;
$13 = ($$03 + 12) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = ($14 | 0) == 0;
if ($15) {
$16 = ($$03 + 20) | 0;
HEAP32[$16 >> 2] = 0;
$17 = ($$03 + 16) | 0;
HEAP32[$17 >> 2] = 0;
}
$18 = ($$03 + 48) | 0;
$19 = HEAP32[$18 >> 2] | 0;
$20 = ($19 | 0) == (0 | 0);
if ($20) {
$34 = $14;
} else {
$21 = HEAP32[$19 >> 2] | 0;
$22 = ($21 + -1) | 0;
HEAP32[$19 >> 2] = $22;
$23 = ($21 | 0) > 0;
if (!$23) {
label = 14;
break;
}
$24 = ($22 | 0) == 0;
if (!$24) {
label = 16;
break;
}
$25 = ($19 + 8) | 0;
$26 = HEAP32[$25 >> 2] | 0;
__zbar_image_scanner_recycle_syms($iscn, $26);
$27 = HEAP32[$18 >> 2] | 0;
$28 = ($27 + 8) | 0;
HEAP32[$28 >> 2] = 0;
$29 = HEAP32[$18 >> 2] | 0;
__zbar_symbol_set_free($29);
HEAP32[$18 >> 2] = 0;
$$pre = HEAP32[$13 >> 2] | 0;
$34 = $$pre;
}
$i$02 = 0;
while (1) {
$32 = $i$02 << 1;
$33 = 1 << $32;
$35 = $34 >>> 0 < $33 >>> 0;
$30 = ($i$02 + 1) | 0;
if ($35) {
$i$0$lcssa = $i$02;
break;
}
$31 = ($30 | 0) < 5;
if ($31) {
$i$02 = $30;
} else {
$i$0$lcssa = $30;
break;
}
}
$36 = ($i$0$lcssa | 0) == 5;
if ($36) {
$37 = ($$03 + 20) | 0;
$38 = HEAP32[$37 >> 2] | 0;
$39 = ($38 | 0) == (0 | 0);
if ($39) {
label = 23;
break;
}
_free($38);
HEAP32[$37 >> 2] = 0;
HEAP32[$13 >> 2] = 0;
$i$1 = 0;
} else {
$i$1 = $i$0$lcssa;
}
$40 = ((($iscn + ($i$1 << 3)) | 0) + 52) | 0;
$41 = HEAP32[$40 >> 2] | 0;
$42 = ($41 + 1) | 0;
HEAP32[$40 >> 2] = $42;
$43 = ((($iscn + ($i$1 << 3)) | 0) + 56) | 0;
$44 = HEAP32[$43 >> 2] | 0;
HEAP32[$1 >> 2] = $44;
HEAP32[$43 >> 2] = $$03;
}
$12 = ($2 | 0) == (0 | 0);
if ($12) {
label = 26;
break;
} else {
$$03 = $2;
}
}
if ((label | 0) == 4) {
___assert_fail(7152 | 0, 7160 | 0, 87, 7176 | 0);
// unreachable;
} else if ((label | 0) == 7) {
___assert_fail(6320 | 0, 6336 | 0, 133, 6360 | 0);
// unreachable;
} else if ((label | 0) == 14) {
___assert_fail(7152 | 0, 7160 | 0, 87, 7176 | 0);
// unreachable;
} else if ((label | 0) == 16) {
___assert_fail(6400 | 0, 6336 | 0, 146, 6360 | 0);
// unreachable;
} else if ((label | 0) == 23) {
___assert_fail(6408 | 0, 6336 | 0, 156, 6360 | 0);
// unreachable;
} else if ((label | 0) == 26) {
STACKTOP = sp;
return;
}
}
function _zbar_image_scanner_recycle_image($iscn, $img) {
$iscn = $iscn | 0;
$img = $img | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($iscn + 48) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == (0 | 0);
do {
if (!$2) {
$3 = HEAP32[$1 >> 2] | 0;
$4 = ($3 | 0) == 0;
if (!$4) {
$5 = ($3 + -1) | 0;
HEAP32[$1 >> 2] = $5;
$6 = ($3 | 0) > 0;
if (!$6) {
___assert_fail(7152 | 0, 7160 | 0, 87, 7176 | 0);
// unreachable;
}
$7 = ($5 | 0) == 0;
if ($7) {
$11 = ($1 + 8) | 0;
$12 = HEAP32[$11 >> 2] | 0;
__zbar_image_scanner_recycle_syms($iscn, $12);
$13 = ($1 + 12) | 0;
HEAP32[$13 >> 2] = 0;
HEAP32[$11 >> 2] = 0;
$14 = ($1 + 4) | 0;
HEAP32[$14 >> 2] = 0;
$15 = ($iscn + 204) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = ($16 + 1) | 0;
HEAP32[$15 >> 2] = $17;
break;
} else {
$8 = ($iscn + 200) | 0;
$9 = HEAP32[$8 >> 2] | 0;
$10 = ($9 + 1) | 0;
HEAP32[$8 >> 2] = $10;
HEAP32[$0 >> 2] = 0;
break;
}
}
}
} while (0);
$18 = ($img + 64) | 0;
$19 = HEAP32[$18 >> 2] | 0;
HEAP32[$18 >> 2] = 0;
$20 = ($19 | 0) == (0 | 0);
if ($20) {
STACKTOP = sp;
return;
}
$21 = HEAP32[$19 >> 2] | 0;
$22 = ($21 + -1) | 0;
HEAP32[$19 >> 2] = $22;
$23 = ($21 | 0) > 0;
if (!$23) {
___assert_fail(7152 | 0, 7160 | 0, 87, 7176 | 0);
// unreachable;
}
$24 = ($22 | 0) == 0;
if (!$24) {
$25 = ($iscn + 208) | 0;
$26 = HEAP32[$25 >> 2] | 0;
$27 = ($26 + 1) | 0;
HEAP32[$25 >> 2] = $27;
STACKTOP = sp;
return;
}
$28 = ($19 + 8) | 0;
$29 = HEAP32[$28 >> 2] | 0;
__zbar_image_scanner_recycle_syms($iscn, $29);
$30 = ($19 + 12) | 0;
HEAP32[$30 >> 2] = 0;
HEAP32[$28 >> 2] = 0;
$31 = ($19 + 4) | 0;
HEAP32[$31 >> 2] = 0;
$32 = ($iscn + 212) | 0;
$33 = HEAP32[$32 >> 2] | 0;
$34 = ($33 + 1) | 0;
HEAP32[$32 >> 2] = $34;
$35 = HEAP32[$0 >> 2] | 0;
$36 = ($35 | 0) == (0 | 0);
if ($36) {
HEAP32[$0 >> 2] = $19;
STACKTOP = sp;
return;
} else {
__zbar_symbol_set_free($19);
STACKTOP = sp;
return;
}
}
function __zbar_image_scanner_alloc_sym($iscn, $type, $datalen) {
$iscn = $iscn | 0;
$type = $type | 0;
$datalen = $datalen | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0;
var $45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$i$04 = 0,
$i$13 = 0,
$sym$2 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$i$04 = 0;
while (1) {
$2 = $i$04 << 1;
$3 = 1 << $2;
$4 = ($3 | 0) < ($datalen | 0);
$0 = ($i$04 + 1) | 0;
if (!$4) {
label = 4;
break;
}
$1 = ($0 | 0) < 4;
if ($1) {
$i$04 = $0;
} else {
$i$13 = $0;
label = 6;
break;
}
}
if ((label | 0) == 4) {
$5 = ($i$04 | 0) > 0;
if ($5) {
$i$13 = $i$04;
label = 6;
} else {
label = 10;
}
}
L6: do {
if ((label | 0) == 6) {
while (1) {
label = 0;
$8 = ((($iscn + ($i$13 << 3)) | 0) + 56) | 0;
$9 = HEAP32[$8 >> 2] | 0;
$10 = ($9 | 0) == (0 | 0);
$6 = ($i$13 + -1) | 0;
if (!$10) {
break;
}
$7 = ($6 | 0) > 0;
if ($7) {
$i$13 = $6;
label = 6;
} else {
label = 10;
break L6;
}
}
$11 = ((($iscn + ($i$13 << 2)) | 0) + 220) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($12 + 1) | 0;
HEAP32[$11 >> 2] = $13;
$14 = ($9 + 44) | 0;
$15 = HEAP32[$14 >> 2] | 0;
HEAP32[$8 >> 2] = $15;
HEAP32[$14 >> 2] = 0;
$16 = ((($iscn + ($i$13 << 3)) | 0) + 52) | 0;
$17 = HEAP32[$16 >> 2] | 0;
$18 = ($17 | 0) == 0;
if ($18) {
___assert_fail(6424 | 0, 6336 | 0, 232, 6448 | 0);
// unreachable;
} else {
$19 = ($17 + -1) | 0;
HEAP32[$16 >> 2] = $19;
$sym$2 = $9;
break;
}
}
} while (0);
if ((label | 0) == 10) {
$20 = _calloc(1, 64) | 0;
$21 = ($iscn + 216) | 0;
$22 = HEAP32[$21 >> 2] | 0;
$23 = ($22 + 1) | 0;
HEAP32[$21 >> 2] = $23;
$sym$2 = $20;
}
HEAP32[$sym$2 >> 2] = $type;
$24 = ($sym$2 + 60) | 0;
HEAP32[$24 >> 2] = 1;
$25 = ($sym$2 + 28) | 0;
HEAP32[$25 >> 2] = 0;
$26 = ($sym$2 + 36) | 0;
HEAP32[$26 >> 2] = -1;
$27 = ($sym$2 + 56) | 0;
HEAP32[$27 >> 2] = 0;
$28 = ($iscn + 20) | 0;
$29 = HEAP32[$28 >> 2] | 0;
$30 = ($sym$2 + 52) | 0;
HEAP32[$30 >> 2] = $29;
$31 = ($sym$2 + 48) | 0;
$32 = HEAP32[$31 >> 2] | 0;
$33 = ($32 | 0) == (0 | 0);
if (!$33) {
___assert_fail(6480 | 0, 6336 | 0, 247, 6448 | 0);
// unreachable;
}
$34 = ($datalen | 0) > 0;
if (!$34) {
$44 = ($sym$2 + 20) | 0;
$45 = HEAP32[$44 >> 2] | 0;
$46 = ($45 | 0) == (0 | 0);
if (!$46) {
_free($45);
}
HEAP32[$44 >> 2] = 0;
$47 = ($sym$2 + 12) | 0;
HEAP32[$47 >> 2] = 0;
$48 = ($sym$2 + 16) | 0;
HEAP32[$48 >> 2] = 0;
STACKTOP = sp;
return $sym$2 | 0;
}
$35 = ($datalen + -1) | 0;
$36 = ($sym$2 + 16) | 0;
HEAP32[$36 >> 2] = $35;
$37 = ($sym$2 + 12) | 0;
$38 = HEAP32[$37 >> 2] | 0;
$39 = $38 >>> 0 < $datalen >>> 0;
if (!$39) {
STACKTOP = sp;
return $sym$2 | 0;
}
$40 = ($sym$2 + 20) | 0;
$41 = HEAP32[$40 >> 2] | 0;
$42 = ($41 | 0) == (0 | 0);
if (!$42) {
_free($41);
}
HEAP32[$37 >> 2] = $datalen;
$43 = _malloc($datalen) | 0;
HEAP32[$40 >> 2] = $43;
STACKTOP = sp;
return $sym$2 | 0;
}
function __zbar_image_scanner_add_sym($iscn, $sym) {
$iscn = $iscn | 0;
$sym = $sym | 0;
var $$phi$trans$insert$i = 0,
$$phi$trans$insert17$i = 0,
$$pre$i = 0,
$$pre18$i = 0,
$$pre20$i = 0,
$$pre22$i = 0,
$$pre24$i = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0;
var $20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0;
var $39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0;
var $57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0;
var $75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0;
var $93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$brmerge$not$i = 0,
$brmerge$not$i$demorgan = 0,
$brmerge$not$i$demorgan15 = 0,
$brmerge1$i = 0,
$entry$0$i = 0,
$entry$0$ph4$i$i = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($iscn + 92) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == 0;
if ($2) {
$65 = ($sym + 56) | 0;
HEAP32[$65 >> 2] = 0;
$66 = ($iscn + 48) | 0;
$67 = HEAP32[$66 >> 2] | 0;
$80 = $67;
label = 20;
} else {
$3 = ($iscn + 96) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($4 | 0) == (0 | 0);
$$pre20$i = ($sym + 16) | 0;
$$pre22$i = ($sym + 20) | 0;
$$pre24$i = ($sym + 52) | 0;
L4: do {
if ($5) {
label = 12;
} else {
$98 = $4;
$entry$0$ph4$i$i = $3;
L5: while (1) {
$9 = $98;
while (1) {
$8 = HEAP32[$9 >> 2] | 0;
$10 = HEAP32[$sym >> 2] | 0;
$11 = ($8 | 0) == ($10 | 0);
if ($11) {
$12 = ($9 + 16) | 0;
$13 = HEAP32[$12 >> 2] | 0;
$14 = HEAP32[$$pre20$i >> 2] | 0;
$15 = ($13 | 0) == ($14 | 0);
if ($15) {
$16 = ($9 + 20) | 0;
$17 = HEAP32[$16 >> 2] | 0;
$18 = HEAP32[$$pre22$i >> 2] | 0;
$19 = _memcmp($17, $18, $13) | 0;
$20 = ($19 | 0) == 0;
if ($20) {
break L5;
}
}
}
$21 = HEAP32[$$pre24$i >> 2] | 0;
$22 = ($9 + 52) | 0;
$23 = HEAP32[$22 >> 2] | 0;
$24 = ($21 - $23) | 0;
$25 = $24 >>> 0 > 4000;
$26 = ($9 + 44) | 0;
$6 = HEAP32[$26 >> 2] | 0;
if (!$25) {
break;
}
HEAP32[$26 >> 2] = 0;
$27 = HEAP32[$entry$0$ph4$i$i >> 2] | 0;
__zbar_image_scanner_recycle_syms($iscn, $27);
HEAP32[$entry$0$ph4$i$i >> 2] = $6;
$28 = ($6 | 0) == (0 | 0);
if ($28) {
label = 12;
break L4;
} else {
$9 = $6;
}
}
$7 = ($6 | 0) == (0 | 0);
if ($7) {
label = 12;
break L4;
} else {
$98 = $6;
$entry$0$ph4$i$i = $26;
}
}
$29 = ($9 | 0) == (0 | 0);
if ($29) {
label = 12;
} else {
$$phi$trans$insert$i = ($9 + 52) | 0;
$$pre$i = HEAP32[$$phi$trans$insert$i >> 2] | 0;
$$phi$trans$insert17$i = ($9 + 56) | 0;
$$pre18$i = HEAP32[$$phi$trans$insert17$i >> 2] | 0;
$53 = $$pre$i;
$57 = $$pre18$i;
$entry$0$i = $9;
}
}
} while (0);
if ((label | 0) == 12) {
$30 = HEAP32[$sym >> 2] | 0;
$31 = HEAP32[$$pre20$i >> 2] | 0;
$32 = ($31 + 1) | 0;
$33 = __zbar_image_scanner_alloc_sym($iscn, $30, $32) | 0;
$34 = ($sym + 4) | 0;
$35 = HEAP32[$34 >> 2] | 0;
$36 = ($33 + 4) | 0;
HEAP32[$36 >> 2] = $35;
$37 = ($sym + 8) | 0;
$38 = HEAP32[$37 >> 2] | 0;
$39 = ($33 + 8) | 0;
HEAP32[$39 >> 2] = $38;
$40 = ($33 + 20) | 0;
$41 = HEAP32[$40 >> 2] | 0;
$42 = HEAP32[$$pre22$i >> 2] | 0;
$43 = HEAP32[$$pre20$i >> 2] | 0;
_memcpy($41 | 0, $42 | 0, $43 | 0) | 0;
$44 = HEAP32[$$pre24$i >> 2] | 0;
$45 = ($44 + -2000) | 0;
$46 = ($33 + 52) | 0;
HEAP32[$46 >> 2] = $45;
$47 = ($33 + 56) | 0;
HEAP32[$47 >> 2] = 0;
$48 = HEAP32[$3 >> 2] | 0;
$49 = ($33 + 44) | 0;
HEAP32[$49 >> 2] = $48;
HEAP32[$3 >> 2] = $33;
$53 = $45;
$57 = 0;
$entry$0$i = $33;
}
$50 = HEAP32[$$pre24$i >> 2] | 0;
$51 = ($entry$0$i + 52) | 0;
$52 = ($50 - $53) | 0;
HEAP32[$51 >> 2] = $50;
$54 = $52 >>> 0 < 1000;
$55 = $52 >>> 0 > 1999;
$56 = ($entry$0$i + 56) | 0;
$58 = ($57 | 0) > -1;
$brmerge$not$i$demorgan15 = $58 | $54;
$brmerge$not$i = $brmerge$not$i$demorgan15 ^ 1;
$brmerge1$i = $55 | $brmerge$not$i;
if ($brmerge1$i) {
$59 = HEAP32[$sym >> 2] | 0;
$60 = __zbar_get_symbol_hash($59) | 0;
$61 = ((($iscn + ($60 << 2)) | 0) + 116) | 0;
$62 = HEAP32[$61 >> 2] | 0;
$63 = (0 - $62) | 0;
HEAP32[$56 >> 2] = $63;
$69 = $63;
} else {
$brmerge$not$i$demorgan = $58 | $54;
if ($brmerge$not$i$demorgan) {
$64 = ($57 + 1) | 0;
HEAP32[$56 >> 2] = $64;
$69 = $64;
} else {
$69 = $57;
}
}
$68 = ($sym + 56) | 0;
HEAP32[$68 >> 2] = $69;
$70 = ($iscn + 48) | 0;
$71 = HEAP32[$70 >> 2] | 0;
$72 = ($69 | 0) == 0;
if ($72) {
$80 = $71;
label = 20;
} else {
$73 = ($71 + 8) | 0;
$74 = HEAP32[$73 >> 2] | 0;
$75 = ($sym + 44) | 0;
HEAP32[$75 >> 2] = $74;
HEAP32[$73 >> 2] = $sym;
$76 = ($71 + 12) | 0;
$77 = HEAP32[$76 >> 2] | 0;
$78 = ($77 | 0) == (0 | 0);
if ($78) {
HEAP32[$76 >> 2] = $sym;
}
}
}
if ((label | 0) == 20) {
$79 = ($80 + 12) | 0;
$81 = HEAP32[$79 >> 2] | 0;
$82 = ($81 | 0) == (0 | 0);
if ($82) {
$83 = ($80 + 8) | 0;
$84 = HEAP32[$83 >> 2] | 0;
$85 = ($sym + 44) | 0;
HEAP32[$85 >> 2] = $84;
HEAP32[$83 >> 2] = $sym;
} else {
$86 = ($81 + 44) | 0;
$87 = HEAP32[$86 >> 2] | 0;
$88 = ($sym + 44) | 0;
HEAP32[$88 >> 2] = $87;
$89 = HEAP32[$79 >> 2] | 0;
$90 = ($89 + 44) | 0;
HEAP32[$90 >> 2] = $sym;
}
$91 = ($80 + 4) | 0;
$92 = HEAP32[$91 >> 2] | 0;
$93 = ($92 + 1) | 0;
HEAP32[$91 >> 2] = $93;
}
$94 = ($sym + 40) | 0;
$95 = HEAP32[$94 >> 2] | 0;
$96 = ($95 + 1) | 0;
HEAP32[$94 >> 2] = $96;
$97 = ($95 | 0) > -2;
if ($97) {
STACKTOP = sp;
return;
} else {
___assert_fail(7152 | 0, 7160 | 0, 87, 7176 | 0);
// unreachable;
}
}
function _zbar_image_scanner_create() {
var $$0 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0;
var $26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0;
var $44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$or$cond = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = _calloc(1, 240) | 0;
$1 = ($0 | 0) == (0 | 0);
if ($1) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$2 = _zbar_decoder_create() | 0;
$3 = ($0 + 4) | 0;
HEAP32[$3 >> 2] = $2;
$4 = _zbar_scanner_create($2) | 0;
HEAP32[$0 >> 2] = $4;
$5 = HEAP32[$3 >> 2] | 0;
$6 = ($5 | 0) == (0 | 0);
$7 = ($4 | 0) == (0 | 0);
$or$cond = $6 | $7;
if ($or$cond) {
_zbar_image_scanner_destroy($0);
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
} else {
_zbar_decoder_set_userdata($5, $0);
$8 = HEAP32[$3 >> 2] | 0;
_zbar_decoder_set_handler($8, 5) | 0;
$9 = __zbar_qr_create() | 0;
$10 = ($0 + 8) | 0;
HEAP32[$10 >> 2] = $9;
$11 = ($0 + 108) | 0;
HEAP32[$11 >> 2] = 1;
$12 = ($0 + 112) | 0;
HEAP32[$12 >> 2] = 1;
$13 = ($0 + 100) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = $14 | 1;
HEAP32[$13 >> 2] = $15;
$16 = ($0 + 116) | 0;
HEAP32[$16 >> 2] = 2;
$17 = ($0 + 120) | 0;
HEAP32[$17 >> 2] = 2;
$18 = ($0 + 124) | 0;
HEAP32[$18 >> 2] = 2;
$19 = ($0 + 128) | 0;
HEAP32[$19 >> 2] = 2;
$20 = ($0 + 132) | 0;
HEAP32[$20 >> 2] = 2;
$21 = ($0 + 136) | 0;
HEAP32[$21 >> 2] = 2;
$22 = ($0 + 140) | 0;
HEAP32[$22 >> 2] = 2;
$23 = ($0 + 144) | 0;
HEAP32[$23 >> 2] = 2;
$24 = ($0 + 148) | 0;
HEAP32[$24 >> 2] = 2;
$25 = ($0 + 152) | 0;
HEAP32[$25 >> 2] = 2;
$26 = ($0 + 156) | 0;
HEAP32[$26 >> 2] = 2;
$27 = ($0 + 160) | 0;
HEAP32[$27 >> 2] = 2;
$28 = ($0 + 164) | 0;
HEAP32[$28 >> 2] = 2;
$29 = ($0 + 168) | 0;
HEAP32[$29 >> 2] = 2;
$30 = ($0 + 172) | 0;
HEAP32[$30 >> 2] = 2;
$31 = ($0 + 176) | 0;
HEAP32[$31 >> 2] = 2;
$32 = ($0 + 180) | 0;
HEAP32[$32 >> 2] = 2;
$33 = ($0 + 184) | 0;
HEAP32[$33 >> 2] = 2;
$34 = ($0 + 188) | 0;
HEAP32[$34 >> 2] = 2;
$35 = ($0 + 192) | 0;
HEAP32[$35 >> 2] = 2;
$36 = __zbar_get_symbol_hash(64) | 0;
$37 = ((($0 + ($36 << 2)) | 0) + 116) | 0;
HEAP32[$37 >> 2] = 0;
$38 = __zbar_get_symbol_hash(128) | 0;
$39 = ((($0 + ($38 << 2)) | 0) + 116) | 0;
HEAP32[$39 >> 2] = 0;
$40 = __zbar_get_symbol_hash(93) | 0;
$41 = ((($0 + ($40 << 2)) | 0) + 116) | 0;
HEAP32[$41 >> 2] = 0;
$42 = __zbar_get_symbol_hash(39) | 0;
$43 = ((($0 + ($42 << 2)) | 0) + 116) | 0;
HEAP32[$43 >> 2] = 0;
$44 = __zbar_get_symbol_hash(38) | 0;
$45 = ((($0 + ($44 << 2)) | 0) + 116) | 0;
HEAP32[$45 >> 2] = 1;
$46 = __zbar_get_symbol_hash(15) | 0;
$47 = ((($0 + ($46 << 2)) | 0) + 116) | 0;
HEAP32[$47 >> 2] = 0;
$$0 = $0;
STACKTOP = sp;
return $$0 | 0;
}
return 0 | 0;
}
function _zbar_image_scanner_destroy($iscn) {
$iscn = $iscn | 0;
var $$pr$i = 0,
$$pr1$pr$i = 0,
$$pr3$pr$i = 0,
$$pre$i = 0,
$$pre6$i = 0,
$$pre7$i = 0,
$$pre8$i = 0,
$$pre9$i = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0;
var $2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0;
var $38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0;
var $56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0;
var $74 = 0,
$75 = 0,
$8 = 0,
$9 = 0,
$sym$01 = 0,
$sym$01$1 = 0,
$sym$01$2 = 0,
$sym$01$3 = 0,
$sym$01$4 = 0,
$vararg_buffer36 = 0,
$vararg_ptr1 = 0,
$vararg_ptr10 = 0,
$vararg_ptr11 = 0,
$vararg_ptr15 = 0,
$vararg_ptr19 = 0,
$vararg_ptr20 = 0,
$vararg_ptr24 = 0,
$vararg_ptr25 = 0,
$vararg_ptr29 = 0,
$vararg_ptr30 = 0;
var $vararg_ptr34 = 0,
$vararg_ptr35 = 0,
$vararg_ptr39 = 0,
$vararg_ptr40 = 0,
$vararg_ptr5 = 0,
$vararg_ptr6 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$vararg_buffer36 = sp;
$0 = HEAP32[80 >> 2] | 0;
$1 = ($0 | 0) > 0;
if ($1) {
$2 = HEAP32[_stderr >> 2] | 0;
$3 = ($iscn + 196) | 0;
$4 = HEAP32[$3 >> 2] | 0;
HEAP32[$vararg_buffer36 >> 2] = 6792;
$vararg_ptr1 = ($vararg_buffer36 + 4) | 0;
HEAP32[$vararg_ptr1 >> 2] = $4;
_fprintf($2 | 0, 6752 | 0, $vararg_buffer36 | 0) | 0;
$$pr$i = HEAP32[80 >> 2] | 0;
$5 = ($$pr$i | 0) > 0;
if ($5) {
$6 = ($iscn + 200) | 0;
$7 = HEAP32[$6 >> 2] | 0;
$8 = ($iscn + 204) | 0;
$9 = HEAP32[$8 >> 2] | 0;
HEAP32[$vararg_buffer36 >> 2] = 6792;
$vararg_ptr5 = ($vararg_buffer36 + 4) | 0;
HEAP32[$vararg_ptr5 >> 2] = $7;
$vararg_ptr6 = ($vararg_buffer36 + 8) | 0;
HEAP32[$vararg_ptr6 >> 2] = $9;
_fprintf($2 | 0, 6808 | 0, $vararg_buffer36 | 0) | 0;
$$pr1$pr$i = HEAP32[80 >> 2] | 0;
$10 = ($$pr1$pr$i | 0) > 0;
if ($10) {
$11 = ($iscn + 208) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($iscn + 212) | 0;
$14 = HEAP32[$13 >> 2] | 0;
HEAP32[$vararg_buffer36 >> 2] = 6792;
$vararg_ptr10 = ($vararg_buffer36 + 4) | 0;
HEAP32[$vararg_ptr10 >> 2] = $12;
$vararg_ptr11 = ($vararg_buffer36 + 8) | 0;
HEAP32[$vararg_ptr11 >> 2] = $14;
_fprintf($2 | 0, 6864 | 0, $vararg_buffer36 | 0) | 0;
$$pr3$pr$i = HEAP32[80 >> 2] | 0;
$15 = ($$pr3$pr$i | 0) > 0;
if ($15) {
$16 = ($iscn + 216) | 0;
$17 = HEAP32[$16 >> 2] | 0;
HEAP32[$vararg_buffer36 >> 2] = 6792;
$vararg_ptr15 = ($vararg_buffer36 + 4) | 0;
HEAP32[$vararg_ptr15 >> 2] = $17;
_fprintf($2 | 0, 6920 | 0, $vararg_buffer36 | 0) | 0;
$$pre$i = HEAP32[80 >> 2] | 0;
$18 = ($$pre$i | 0) > 0;
if ($18) {
$19 = ($iscn + 220) | 0;
$20 = HEAP32[$19 >> 2] | 0;
HEAP32[$vararg_buffer36 >> 2] = 6792;
$vararg_ptr19 = ($vararg_buffer36 + 4) | 0;
HEAP32[$vararg_ptr19 >> 2] = 0;
$vararg_ptr20 = ($vararg_buffer36 + 8) | 0;
HEAP32[$vararg_ptr20 >> 2] = $20;
_fprintf($2 | 0, 6960 | 0, $vararg_buffer36 | 0) | 0;
$$pre6$i = HEAP32[80 >> 2] | 0;
$21 = ($$pre6$i | 0) > 0;
if ($21) {
$22 = ($iscn + 224) | 0;
$23 = HEAP32[$22 >> 2] | 0;
HEAP32[$vararg_buffer36 >> 2] = 6792;
$vararg_ptr24 = ($vararg_buffer36 + 4) | 0;
HEAP32[$vararg_ptr24 >> 2] = 1;
$vararg_ptr25 = ($vararg_buffer36 + 8) | 0;
HEAP32[$vararg_ptr25 >> 2] = $23;
_fprintf($2 | 0, 6960 | 0, $vararg_buffer36 | 0) | 0;
$$pre7$i = HEAP32[80 >> 2] | 0;
$24 = ($$pre7$i | 0) > 0;
if ($24) {
$25 = ($iscn + 228) | 0;
$26 = HEAP32[$25 >> 2] | 0;
HEAP32[$vararg_buffer36 >> 2] = 6792;
$vararg_ptr29 = ($vararg_buffer36 + 4) | 0;
HEAP32[$vararg_ptr29 >> 2] = 2;
$vararg_ptr30 = ($vararg_buffer36 + 8) | 0;
HEAP32[$vararg_ptr30 >> 2] = $26;
_fprintf($2 | 0, 6960 | 0, $vararg_buffer36 | 0) | 0;
$$pre8$i = HEAP32[80 >> 2] | 0;
$27 = ($$pre8$i | 0) > 0;
if ($27) {
$28 = ($iscn + 232) | 0;
$29 = HEAP32[$28 >> 2] | 0;
HEAP32[$vararg_buffer36 >> 2] = 6792;
$vararg_ptr34 = ($vararg_buffer36 + 4) | 0;
HEAP32[$vararg_ptr34 >> 2] = 3;
$vararg_ptr35 = ($vararg_buffer36 + 8) | 0;
HEAP32[$vararg_ptr35 >> 2] = $29;
_fprintf($2 | 0, 6960 | 0, $vararg_buffer36 | 0) | 0;
$$pre9$i = HEAP32[80 >> 2] | 0;
$30 = ($$pre9$i | 0) > 0;
if ($30) {
$31 = ($iscn + 236) | 0;
$32 = HEAP32[$31 >> 2] | 0;
HEAP32[$vararg_buffer36 >> 2] = 6792;
$vararg_ptr39 = ($vararg_buffer36 + 4) | 0;
HEAP32[$vararg_ptr39 >> 2] = 4;
$vararg_ptr40 = ($vararg_buffer36 + 8) | 0;
HEAP32[$vararg_ptr40 >> 2] = $32;
_fprintf($2 | 0, 6960 | 0, $vararg_buffer36 | 0) | 0;
}
}
}
}
}
}
}
}
}
$33 = ($iscn + 48) | 0;
$34 = HEAP32[$33 >> 2] | 0;
$35 = ($34 | 0) == (0 | 0);
if (!$35) {
$36 = HEAP32[$34 >> 2] | 0;
$37 = ($36 | 0) == 0;
if ($37) {
__zbar_symbol_set_free($34);
} else {
_zbar_symbol_set_ref($34, -1);
}
HEAP32[$33 >> 2] = 0;
}
$38 = HEAP32[$iscn >> 2] | 0;
$39 = ($38 | 0) == (0 | 0);
if (!$39) {
_zbar_scanner_destroy($38);
}
HEAP32[$iscn >> 2] = 0;
$40 = ($iscn + 4) | 0;
$41 = HEAP32[$40 >> 2] | 0;
$42 = ($41 | 0) == (0 | 0);
if (!$42) {
_zbar_decoder_destroy($41);
}
HEAP32[$40 >> 2] = 0;
$43 = ($iscn + 56) | 0;
$44 = HEAP32[$43 >> 2] | 0;
$45 = ($44 | 0) == (0 | 0);
if (!$45) {
$sym$01 = $44;
while (1) {
$46 = ($sym$01 + 44) | 0;
$47 = HEAP32[$46 >> 2] | 0;
__zbar_symbol_free($sym$01);
$48 = ($47 | 0) == (0 | 0);
if ($48) {
break;
} else {
$sym$01 = $47;
}
}
}
$49 = ($iscn + 64) | 0;
$50 = HEAP32[$49 >> 2] | 0;
$51 = ($50 | 0) == (0 | 0);
if (!$51) {
$sym$01$1 = $50;
while (1) {
$53 = ($sym$01$1 + 44) | 0;
$54 = HEAP32[$53 >> 2] | 0;
__zbar_symbol_free($sym$01$1);
$55 = ($54 | 0) == (0 | 0);
if ($55) {
break;
} else {
$sym$01$1 = $54;
}
}
}
$56 = ($iscn + 72) | 0;
$57 = HEAP32[$56 >> 2] | 0;
$58 = ($57 | 0) == (0 | 0);
if (!$58) {
$sym$01$2 = $57;
while (1) {
$59 = ($sym$01$2 + 44) | 0;
$60 = HEAP32[$59 >> 2] | 0;
__zbar_symbol_free($sym$01$2);
$61 = ($60 | 0) == (0 | 0);
if ($61) {
break;
} else {
$sym$01$2 = $60;
}
}
}
$62 = ($iscn + 80) | 0;
$63 = HEAP32[$62 >> 2] | 0;
$64 = ($63 | 0) == (0 | 0);
if (!$64) {
$sym$01$3 = $63;
while (1) {
$65 = ($sym$01$3 + 44) | 0;
$66 = HEAP32[$65 >> 2] | 0;
__zbar_symbol_free($sym$01$3);
$67 = ($66 | 0) == (0 | 0);
if ($67) {
break;
} else {
$sym$01$3 = $66;
}
}
}
$68 = ($iscn + 88) | 0;
$69 = HEAP32[$68 >> 2] | 0;
$70 = ($69 | 0) == (0 | 0);
if (!$70) {
$sym$01$4 = $69;
while (1) {
$71 = ($sym$01$4 + 44) | 0;
$72 = HEAP32[$71 >> 2] | 0;
__zbar_symbol_free($sym$01$4);
$73 = ($72 | 0) == (0 | 0);
if ($73) {
break;
} else {
$sym$01$4 = $72;
}
}
}
$74 = ($iscn + 8) | 0;
$52 = HEAP32[$74 >> 2] | 0;
$75 = ($52 | 0) == (0 | 0);
if ($75) {
_free($iscn);
STACKTOP = sp;
return;
}
__zbar_qr_destroy($52);
_free($iscn);
STACKTOP = sp;
return;
}
function _symbol_handler($dcode) {
$dcode = $dcode | 0;
var $$ = 0,
$$1 = 0,
$$phi$trans$insert$i = 0,
$$phi$trans$insert$i2 = 0,
$$pre$i = 0,
$$pre$i3 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0;
var $110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0;
var $129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0;
var $147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0;
var $30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0;
var $49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0;
var $67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0;
var $85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$sym$0 = 0,
$sym$06 = 0,
$sym$07 = 0,
$u$0$i = 0;
var $vararg_buffer10 = 0,
$vararg_ptr1 = 0,
$vararg_ptr13 = 0,
$vararg_ptr14 = 0,
$vararg_ptr15 = 0,
$vararg_ptr16 = 0,
$vararg_ptr2 = 0,
$vararg_ptr6 = 0,
$vararg_ptr7 = 0,
$vararg_ptr8 = 0,
$vararg_ptr9 = 0,
$x$0 = 0,
$y$0 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 32) | 0;
$vararg_buffer10 = sp;
$0 = _zbar_decoder_get_userdata($dcode) | 0;
$1 = _zbar_decoder_get_type($dcode) | 0;
$2 = ($1 | 0) == 64;
if ($2) {
$3 = ($0 + 4) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = __zbar_decoder_get_qr_finder_line($4) | 0;
$6 = ($5 | 0) == (0 | 0);
if ($6) {
___assert_fail(7128 | 0, 6336 | 0, 367, 7136 | 0);
// unreachable;
}
$7 = HEAP32[$0 >> 2] | 0;
$8 = HEAP32[$5 >> 2] | 0;
$9 = _zbar_scanner_get_edge($7, $8, 2) | 0;
$10 = HEAP32[$0 >> 2] | 0;
$11 = ($5 + 12) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = _zbar_scanner_get_edge($10, $12, 2) | 0;
$14 = ($9 - $13) | 0;
HEAP32[$11 >> 2] = $14;
$15 = HEAP32[$0 >> 2] | 0;
$16 = ($5 + 8) | 0;
$17 = HEAP32[$16 >> 2] | 0;
$18 = _zbar_scanner_get_edge($15, $17, 2) | 0;
HEAP32[$16 >> 2] = $18;
$19 = HEAP32[$0 >> 2] | 0;
$20 = ($5 + 16) | 0;
$21 = HEAP32[$20 >> 2] | 0;
$22 = _zbar_scanner_get_edge($19, $21, 2) | 0;
$23 = HEAP32[$16 >> 2] | 0;
$24 = ($22 - $23) | 0;
HEAP32[$20 >> 2] = $24;
$25 = ($23 - $9) | 0;
HEAP32[$16 >> 2] = $25;
$26 = ($0 + 40) | 0;
$27 = HEAP32[$26 >> 2] | 0;
$28 = $27 << 2;
$29 = ($0 + 36) | 0;
$30 = HEAP32[$29 >> 2] | 0;
$31 = Math_imul($30, $9) | 0;
$32 = ($31 + $28) | 0;
$33 = ($30 | 0) < 0;
if ($33) {
$34 = HEAP32[$11 >> 2] | 0;
HEAP32[$11 >> 2] = $24;
HEAP32[$20 >> 2] = $34;
$35 = ($32 - $25) | 0;
$u$0$i = $35;
} else {
$u$0$i = $32;
}
$36 = ($0 + 28) | 0;
$37 = HEAP32[$36 >> 2] | 0;
$38 = ($37 | 0) != 0;
$39 = $38 & 1;
$40 = $39 ^ 1;
$41 = ($5 + ($40 << 2)) | 0;
HEAP32[$41 >> 2] = $u$0$i;
$42 = ($0 + 44) | 0;
$43 = HEAP32[$42 >> 2] | 0;
$44 = $43 << 2;
$45 = $44 | 2;
$46 = ($5 + ($39 << 2)) | 0;
HEAP32[$46 >> 2] = $45;
$47 = ($0 + 8) | 0;
$48 = HEAP32[$47 >> 2] | 0;
__zbar_qr_found_line($48, $40, $5) | 0;
STACKTOP = sp;
return;
}
$49 = ($0 + 100) | 0;
$50 = HEAP32[$49 >> 2] | 0;
$51 = $50 & 1;
$52 = ($51 | 0) == 0;
if ($52) {
$x$0 = 0;
$y$0 = 0;
} else {
$53 = HEAP32[$0 >> 2] | 0;
$54 = _zbar_scanner_get_width($53) | 0;
$55 = ($0 + 40) | 0;
$56 = HEAP32[$55 >> 2] | 0;
$57 = ($0 + 36) | 0;
$58 = HEAP32[$57 >> 2] | 0;
$59 = HEAP32[$0 >> 2] | 0;
$60 = _zbar_scanner_get_edge($59, $54, 0) | 0;
$61 = Math_imul($60, $58) | 0;
$62 = ($61 + $56) | 0;
$63 = ($0 + 28) | 0;
$64 = HEAP32[$63 >> 2] | 0;
$65 = ($64 | 0) == 0;
$66 = ($0 + 44) | 0;
$67 = HEAP32[$66 >> 2] | 0;
$$ = $65 ? $62 : $67;
$$1 = $65 ? $67 : $62;
$x$0 = $$1;
$y$0 = $$;
}
$68 = $1 >>> 0 < 2;
if ($68) {
$69 = HEAP32[80 >> 2] | 0;
$70 = ($69 | 0) > 255;
if (!$70) {
STACKTOP = sp;
return;
}
$71 = HEAP32[_stderr >> 2] | 0;
HEAP32[$vararg_buffer10 >> 2] = 7032;
$vararg_ptr1 = ($vararg_buffer10 + 4) | 0;
HEAP32[$vararg_ptr1 >> 2] = $x$0;
$vararg_ptr2 = ($vararg_buffer10 + 8) | 0;
HEAP32[$vararg_ptr2 >> 2] = $y$0;
_fprintf($71 | 0, 7000 | 0, $vararg_buffer10 | 0) | 0;
STACKTOP = sp;
return;
}
$72 = _zbar_decoder_get_data($dcode) | 0;
$73 = _zbar_decoder_get_data_length($dcode) | 0;
$74 = ($0 + 48) | 0;
$75 = HEAP32[$74 >> 2] | 0;
$76 = ($75 + 8) | 0;
$sym$06 = HEAP32[$76 >> 2] | 0;
$77 = ($sym$06 | 0) == (0 | 0);
L21: do {
if (!$77) {
$sym$07 = $sym$06;
while (1) {
$78 = HEAP32[$sym$07 >> 2] | 0;
$79 = ($78 | 0) == ($1 | 0);
if ($79) {
$80 = ($sym$07 + 16) | 0;
$81 = HEAP32[$80 >> 2] | 0;
$82 = ($81 | 0) == ($73 | 0);
if ($82) {
$83 = ($sym$07 + 20) | 0;
$84 = HEAP32[$83 >> 2] | 0;
$85 = _memcmp($84, $72, $73) | 0;
$86 = ($85 | 0) == 0;
if ($86) {
break;
}
}
}
$109 = ($sym$07 + 44) | 0;
$sym$0 = HEAP32[$109 >> 2] | 0;
$110 = ($sym$0 | 0) == (0 | 0);
if ($110) {
break L21;
} else {
$sym$07 = $sym$0;
}
}
$87 = ($sym$07 + 60) | 0;
$88 = HEAP32[$87 >> 2] | 0;
$89 = ($88 + 1) | 0;
HEAP32[$87 >> 2] = $89;
$90 = HEAP32[80 >> 2] | 0;
$91 = ($90 | 0) > 223;
if ($91) {
$92 = HEAP32[_stderr >> 2] | 0;
$93 = _zbar_get_symbol_name($1) | 0;
HEAP32[$vararg_buffer10 >> 2] = 7032;
$vararg_ptr6 = ($vararg_buffer10 + 4) | 0;
HEAP32[$vararg_ptr6 >> 2] = $x$0;
$vararg_ptr7 = ($vararg_buffer10 + 8) | 0;
HEAP32[$vararg_ptr7 >> 2] = $y$0;
$vararg_ptr8 = ($vararg_buffer10 + 12) | 0;
HEAP32[$vararg_ptr8 >> 2] = $93;
$vararg_ptr9 = ($vararg_buffer10 + 16) | 0;
HEAP32[$vararg_ptr9 >> 2] = $72;
_fprintf($92 | 0, 7048 | 0, $vararg_buffer10 | 0) | 0;
}
$94 = HEAP32[$49 >> 2] | 0;
$95 = $94 & 1;
$96 = ($95 | 0) == 0;
if ($96) {
STACKTOP = sp;
return;
}
$97 = ($sym$07 + 28) | 0;
$98 = HEAP32[$97 >> 2] | 0;
$99 = ($98 + 1) | 0;
HEAP32[$97 >> 2] = $99;
$100 = ($sym$07 + 24) | 0;
$101 = HEAP32[$100 >> 2] | 0;
$102 = $99 >>> 0 < $101 >>> 0;
$$phi$trans$insert$i = ($sym$07 + 32) | 0;
$$pre$i = HEAP32[$$phi$trans$insert$i >> 2] | 0;
if ($102) {
$107 = $$pre$i;
} else {
$103 = ($101 + 1) | 0;
HEAP32[$100 >> 2] = $103;
$104 = $103 << 3;
$105 = _realloc($$pre$i, $104) | 0;
HEAP32[$$phi$trans$insert$i >> 2] = $105;
$107 = $105;
}
$106 = ($107 + ($98 << 3)) | 0;
HEAP32[$106 >> 2] = $x$0;
$108 = ((($107 + ($98 << 3)) | 0) + 4) | 0;
HEAP32[$108 >> 2] = $y$0;
STACKTOP = sp;
return;
}
} while (0);
$111 = ($73 + 1) | 0;
$112 = __zbar_image_scanner_alloc_sym($0, $1, $111) | 0;
$113 = _zbar_decoder_get_configs($dcode, $1) | 0;
$114 = ($112 + 4) | 0;
HEAP32[$114 >> 2] = $113;
$115 = _zbar_decoder_get_modifiers($dcode) | 0;
$116 = ($112 + 8) | 0;
HEAP32[$116 >> 2] = $115;
$117 = ($112 + 20) | 0;
$118 = HEAP32[$117 >> 2] | 0;
_memcpy($118 | 0, $72 | 0, $111 | 0) | 0;
$119 = HEAP32[$49 >> 2] | 0;
$120 = $119 & 1;
$121 = ($120 | 0) == 0;
if (!$121) {
$122 = HEAP32[80 >> 2] | 0;
$123 = ($122 | 0) > 191;
if ($123) {
$124 = HEAP32[_stderr >> 2] | 0;
$125 = _zbar_get_symbol_name($1) | 0;
HEAP32[$vararg_buffer10 >> 2] = 7032;
$vararg_ptr13 = ($vararg_buffer10 + 4) | 0;
HEAP32[$vararg_ptr13 >> 2] = $x$0;
$vararg_ptr14 = ($vararg_buffer10 + 8) | 0;
HEAP32[$vararg_ptr14 >> 2] = $y$0;
$vararg_ptr15 = ($vararg_buffer10 + 12) | 0;
HEAP32[$vararg_ptr15 >> 2] = $125;
$vararg_ptr16 = ($vararg_buffer10 + 16) | 0;
HEAP32[$vararg_ptr16 >> 2] = $72;
_fprintf($124 | 0, 7088 | 0, $vararg_buffer10 | 0) | 0;
}
$126 = ($112 + 28) | 0;
$127 = HEAP32[$126 >> 2] | 0;
$128 = ($127 + 1) | 0;
HEAP32[$126 >> 2] = $128;
$129 = ($112 + 24) | 0;
$130 = HEAP32[$129 >> 2] | 0;
$131 = $128 >>> 0 < $130 >>> 0;
$$phi$trans$insert$i2 = ($112 + 32) | 0;
$$pre$i3 = HEAP32[$$phi$trans$insert$i2 >> 2] | 0;
if ($131) {
$136 = $$pre$i3;
} else {
$132 = ($130 + 1) | 0;
HEAP32[$129 >> 2] = $132;
$133 = $132 << 3;
$134 = _realloc($$pre$i3, $133) | 0;
HEAP32[$$phi$trans$insert$i2 >> 2] = $134;
$136 = $134;
}
$135 = ($136 + ($127 << 3)) | 0;
HEAP32[$135 >> 2] = $x$0;
$137 = ((($136 + ($127 << 3)) | 0) + 4) | 0;
HEAP32[$137 >> 2] = $y$0;
}
$138 = _zbar_decoder_get_direction($dcode) | 0;
$139 = ($138 | 0) == 0;
if (!$139) {
$140 = ($0 + 32) | 0;
$141 = HEAP32[$140 >> 2] | 0;
$142 = ($141 | 0) != 0;
$143 = $142 & 1;
$144 = ($0 + 36) | 0;
$145 = HEAP32[$144 >> 2] | 0;
$146 = $145 ^ $138;
$147 = $146 & 2;
$148 = $147 | $143;
$149 = ($112 + 36) | 0;
HEAP32[$149 >> 2] = $148;
}
__zbar_image_scanner_add_sym($0, $112);
STACKTOP = sp;
return;
}
function _zbar_image_scanner_enable_cache($iscn, $enable) {
$iscn = $iscn | 0;
$enable = $enable | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($iscn + 96) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == (0 | 0);
if (!$2) {
__zbar_image_scanner_recycle_syms($iscn, $1);
HEAP32[$0 >> 2] = 0;
}
$3 = ($enable | 0) != 0;
$4 = $3 & 1;
$5 = ($iscn + 92) | 0;
HEAP32[$5 >> 2] = $4;
STACKTOP = sp;
return;
}
function _zbar_image_scanner_get_results($iscn) {
$iscn = $iscn | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($iscn + 48) | 0;
$1 = HEAP32[$0 >> 2] | 0;
STACKTOP = sp;
return $1 | 0;
}
function _zbar_scan_image($iscn, $img) {
$iscn = $iscn | 0;
$img = $img | 0;
var $$ = 0,
$$0 = 0,
$$5 = 0,
$$addon$0 = 0,
$$off = 0,
$$off$us = 0,
$$off15 = 0,
$$pr14 = 0,
$$pre = 0,
$$pre222 = 0,
$$pre223 = 0,
$$sum = 0,
$$sum1 = 0,
$$sum224 = 0,
$$sum3 = 0,
$$sum4 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0;
var $101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0;
var $12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0;
var $138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0,
$152 = 0,
$153 = 0,
$154 = 0,
$155 = 0;
var $156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0,
$170 = 0,
$171 = 0,
$172 = 0,
$173 = 0;
var $174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0,
$189 = 0,
$19 = 0,
$190 = 0,
$191 = 0;
var $192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0,
$206 = 0,
$207 = 0,
$208 = 0,
$209 = 0;
var $21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0,
$224 = 0,
$225 = 0,
$226 = 0,
$227 = 0;
var $228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0,
$242 = 0,
$243 = 0,
$244 = 0,
$245 = 0;
var $246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0,
$260 = 0,
$261 = 0,
$262 = 0,
$263 = 0;
var $264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0,
$279 = 0,
$28 = 0,
$280 = 0,
$281 = 0;
var $282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0,
$297 = 0,
$298 = 0,
$299 = 0,
$3 = 0;
var $30 = 0,
$300 = 0,
$301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0,
$306 = 0,
$307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0,
$313 = 0,
$314 = 0,
$315 = 0,
$316 = 0,
$317 = 0;
var $318 = 0,
$319 = 0,
$32 = 0,
$320 = 0,
$321 = 0,
$322 = 0,
$323 = 0,
$324 = 0,
$325 = 0,
$326 = 0,
$327 = 0,
$328 = 0,
$329 = 0,
$33 = 0,
$330 = 0,
$331 = 0,
$332 = 0,
$333 = 0,
$334 = 0,
$335 = 0;
var $336 = 0,
$337 = 0,
$338 = 0,
$339 = 0,
$34 = 0,
$340 = 0,
$341 = 0,
$342 = 0,
$343 = 0,
$344 = 0,
$345 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0;
var $43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0;
var $61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0;
var $8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0;
var $98 = 0,
$99 = 0,
$addon$0$lcssa = 0,
$addon$0$ph96 = 0,
$addon$019 = 0,
$cond = 0,
$ean$0$ = 0,
$ean$0$lcssa = 0,
$ean$0$ph95 = 0,
$ean$018 = 0,
$entry$0$ph4$i = 0,
$entry$0$ph4$i$us = 0,
$exitcond = 0,
$exitcond210 = 0,
$iscn$idx$val = 0,
$iscn$idx10$val = 0,
$iscn$idx11$val = 0,
$iscn$idx12$val = 0,
$naddon$0$ph118 = 0,
$naddon$0$ph125 = 0;
var $naddon$1 = 0,
$nean$0$ph108 = 0,
$nean$0$ph120 = 0,
$nean$1 = 0,
$or$cond7 = 0,
$or$cond8 = 0,
$p$088 = 0,
$p$1$lcssa = 0,
$p$172 = 0,
$p$2$lcssa = 0,
$p$279 = 0,
$p2$068 = 0,
$p2$1$lcssa = 0,
$p2$152 = 0,
$p2$2$lcssa = 0,
$p2$259 = 0,
$phitmp = 0,
$scevgep = 0,
$scevgep204$sum = 0,
$scevgep205 = 0;
var $scevgep208$sum = 0,
$scevgep209 = 0,
$scevgep214 = 0,
$storemerge286 = 0,
$storemerge66 = 0,
$symp$0$ph130 = 0,
$symp$1$ph94 = 0,
$syms$0 = 0,
$vararg_buffer16 = 0,
$vararg_ptr1 = 0,
$vararg_ptr13 = 0,
$vararg_ptr14 = 0,
$vararg_ptr15 = 0,
$vararg_ptr19 = 0,
$vararg_ptr2 = 0,
$vararg_ptr20 = 0,
$vararg_ptr21 = 0,
$vararg_ptr3 = 0,
$vararg_ptr7 = 0,
$vararg_ptr8 = 0;
var $vararg_ptr9 = 0,
$x$087 = 0,
$x$1$lcssa = 0,
$x$171 = 0,
$x$2$lcssa = 0,
$x$278 = 0,
$y4$067 = 0,
$y4$1$lcssa = 0,
$y4$151 = 0,
$y4$2$lcssa = 0,
$y4$258 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$vararg_buffer16 = sp;
$0 = HEAP32[$iscn >> 2] | 0;
_clock_gettime(0, $vararg_buffer16 | 0) | 0;
$1 = HEAP32[$vararg_buffer16 >> 2] | 0;
$2 = ($1 * 1000) | 0;
$3 = ($vararg_buffer16 + 4) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = (($4 | 0) / 1000000) & -1;
$6 = ($5 + $2) | 0;
$7 = ($iscn + 20) | 0;
HEAP32[$7 >> 2] = $6;
$8 = ($iscn + 8) | 0;
$9 = HEAP32[$8 >> 2] | 0;
__zbar_qr_reset($9);
$10 = HEAP32[$img >> 2] | 0;
if (!((($10 | 0) == 1497715271) | (($10 | 0) == 808466521))) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
$11 = ($iscn + 24) | 0;
HEAP32[$11 >> 2] = $img;
_zbar_image_scanner_recycle_image($iscn, $img);
$12 = ($iscn + 48) | 0;
$13 = HEAP32[$12 >> 2] | 0;
$14 = ($13 | 0) == (0 | 0);
if ($14) {
$15 = __zbar_symbol_set_create() | 0;
HEAP32[$12 >> 2] = $15;
$16 = ($iscn + 196) | 0;
$17 = HEAP32[$16 >> 2] | 0;
$18 = ($17 + 1) | 0;
HEAP32[$16 >> 2] = $18;
_zbar_symbol_set_ref($15, 1);
$syms$0 = $15;
} else {
_zbar_symbol_set_ref($13, 2);
$syms$0 = $13;
}
$19 = ($img + 64) | 0;
HEAP32[$19 >> 2] = $syms$0;
$20 = ($img + 4) | 0;
$21 = HEAP32[$20 >> 2] | 0;
$22 = ($img + 8) | 0;
$23 = HEAP32[$22 >> 2] | 0;
$24 = ($img + 20) | 0;
$25 = HEAP32[$24 >> 2] | 0;
$26 = ($img + 28) | 0;
$27 = HEAP32[$26 >> 2] | 0;
$28 = ($27 + $25) | 0;
$29 = $28 >>> 0 > $21 >>> 0;
if ($29) {
___assert_fail(6496 | 0, 6336 | 0, 683, 6512 | 0);
// unreachable;
}
$30 = ($img + 24) | 0;
$31 = HEAP32[$30 >> 2] | 0;
$32 = ($img + 32) | 0;
$33 = HEAP32[$32 >> 2] | 0;
$34 = ($33 + $31) | 0;
$35 = $34 >>> 0 > $23 >>> 0;
if ($35) {
___assert_fail(6528 | 0, 6336 | 0, 685, 6512 | 0);
// unreachable;
}
$36 = ($img + 12) | 0;
$37 = HEAP32[$36 >> 2] | 0;
_zbar_scanner_new_scan($0) | 0;
$38 = ($iscn + 112) | 0;
$39 = HEAP32[$38 >> 2] | 0;
$40 = ($39 | 0) > 0;
L14: do {
if ($40) {
$41 = HEAP32[$32 >> 2] | 0;
$42 = ($41 + -1) | 0;
$43 = ($42 >>> 0) % ($39 >>> 0) & -1;
$44 = ($43 + 1) | 0;
$45 = $44 >>> 1;
$46 = $41 >>> 1;
$47 = $45 >>> 0 > $46 >>> 0;
$$ = $47 ? $46 : $45;
$48 = HEAP32[$30 >> 2] | 0;
$49 = ($$ + $48) | 0;
$50 = $49 >>> 0 > $23 >>> 0;
if ($50) {
___assert_fail(6544 | 0, 6336 | 0, 703, 6512 | 0);
// unreachable;
}
$51 = ($iscn + 32) | 0;
HEAP32[$51 >> 2] = 0;
$52 = HEAP32[$24 >> 2] | 0;
$53 = ($iscn + 44) | 0;
HEAP32[$53 >> 2] = $49;
$54 = $49 >>> 0 < $34 >>> 0;
if ($54) {
$55 = Math_imul($49, $21) | 0;
$56 = ($52 + $55) | 0;
$57 = ($37 + $56) | 0;
$58 = HEAP32[_stderr >> 2] | 0;
$59 = ($iscn + 36) | 0;
$60 = ($iscn + 28) | 0;
$61 = ($iscn + 40) | 0;
$62 = Math_imul($39, $21) | 0;
$63 = ($62 + -1) | 0;
$64 = ($62 + 1) | 0;
$p$088 = $57;
$storemerge286 = $49;
$x$087 = $52;
while (1) {
$65 = HEAP32[$24 >> 2] | 0;
$66 = HEAP32[80 >> 2] | 0;
$67 = ($66 | 0) > 127;
if ($67) {
HEAP32[$vararg_buffer16 >> 2] = 6512;
$vararg_ptr1 = ($vararg_buffer16 + 4) | 0;
HEAP32[$vararg_ptr1 >> 2] = $x$087;
$vararg_ptr2 = ($vararg_buffer16 + 8) | 0;
HEAP32[$vararg_ptr2 >> 2] = $storemerge286;
$vararg_ptr3 = ($vararg_buffer16 + 12) | 0;
HEAP32[$vararg_ptr3 >> 2] = $p$088;
_fprintf($58 | 0, 6560 | 0, $vararg_buffer16 | 0) | 0;
}
HEAP32[$59 >> 2] = 1;
HEAP32[$60 >> 2] = 1;
HEAP32[$61 >> 2] = $65;
$68 = $x$087 >>> 0 < $28 >>> 0;
if ($68) {
$p$172 = $p$088;
$x$171 = $x$087;
while (1) {
$69 = HEAP8[$p$172 >> 0] | 0;
$70 = ($x$171 + 1) | 0;
$71 = ($p$172 + 1) | 0;
$72 = $69 & 255;
_zbar_scan_y($0, $72) | 0;
$exitcond210 = ($70 | 0) == ($28 | 0);
if ($exitcond210) {
break;
} else {
$p$172 = $71;
$x$171 = $70;
}
}
$scevgep208$sum = ($28 - $x$087) | 0;
$scevgep209 = ($p$088 + $scevgep208$sum) | 0;
$p$1$lcssa = $scevgep209;
$x$1$lcssa = $28;
} else {
$p$1$lcssa = $p$088;
$x$1$lcssa = $x$087;
}
$73 = Math_imul($storemerge286, $21) | 0;
$$sum3 = ($x$1$lcssa + $73) | 0;
$74 = ($37 + $$sum3) | 0;
$75 = ($p$1$lcssa | 0) == ($74 | 0);
if (!$75) {
label = 20;
break;
}
$iscn$idx12$val = HEAP32[$iscn >> 2] | 0;
_zbar_scanner_flush($iscn$idx12$val) | 0;
_zbar_scanner_flush($iscn$idx12$val) | 0;
_zbar_scanner_new_scan($iscn$idx12$val) | 0;
$76 = ($x$1$lcssa + -1) | 0;
$77 = ($storemerge286 + $39) | 0;
$78 = ($p$1$lcssa + $63) | 0;
HEAP32[$53 >> 2] = $77;
$79 = $77 >>> 0 < $34 >>> 0;
if (!$79) {
break L14;
}
$80 = HEAP32[80 >> 2] | 0;
$81 = ($80 | 0) > 127;
if ($81) {
HEAP32[$vararg_buffer16 >> 2] = 6512;
$vararg_ptr7 = ($vararg_buffer16 + 4) | 0;
HEAP32[$vararg_ptr7 >> 2] = $76;
$vararg_ptr8 = ($vararg_buffer16 + 8) | 0;
HEAP32[$vararg_ptr8 >> 2] = $77;
$vararg_ptr9 = ($vararg_buffer16 + 12) | 0;
HEAP32[$vararg_ptr9 >> 2] = $78;
_fprintf($58 | 0, 6624 | 0, $vararg_buffer16 | 0) | 0;
}
HEAP32[$59 >> 2] = -1;
HEAP32[$60 >> 2] = -1;
HEAP32[$61 >> 2] = $28;
$82 = ($x$1$lcssa | 0) > ($65 | 0);
if ($82) {
$83 = ($65 - $x$1$lcssa) | 0;
$$sum224 = ($63 + $83) | 0;
$scevgep214 = ($p$1$lcssa + $$sum224) | 0;
$p$279 = $78;
$x$278 = $76;
while (1) {
$84 = HEAP8[$p$279 >> 0] | 0;
$85 = ($x$278 + -1) | 0;
$86 = ($p$279 + -1) | 0;
$87 = $84 & 255;
_zbar_scan_y($0, $87) | 0;
$88 = ($x$278 | 0) > ($65 | 0);
if ($88) {
$p$279 = $86;
$x$278 = $85;
} else {
break;
}
}
$89 = ($65 + -1) | 0;
$p$2$lcssa = $scevgep214;
$x$2$lcssa = $89;
} else {
$p$2$lcssa = $78;
$x$2$lcssa = $76;
}
$90 = Math_imul($77, $21) | 0;
$$sum4 = ($x$2$lcssa + $90) | 0;
$91 = ($37 + $$sum4) | 0;
$92 = ($p$2$lcssa | 0) == ($91 | 0);
if (!$92) {
label = 29;
break;
}
$iscn$idx11$val = HEAP32[$iscn >> 2] | 0;
_zbar_scanner_flush($iscn$idx11$val) | 0;
_zbar_scanner_flush($iscn$idx11$val) | 0;
_zbar_scanner_new_scan($iscn$idx11$val) | 0;
$93 = ($x$2$lcssa + 1) | 0;
$94 = ($77 + $39) | 0;
$95 = ($p$2$lcssa + $64) | 0;
HEAP32[$53 >> 2] = $94;
$96 = $94 >>> 0 < $34 >>> 0;
if ($96) {
$p$088 = $95;
$storemerge286 = $94;
$x$087 = $93;
} else {
break L14;
}
}
if ((label | 0) == 20) {
___assert_fail(6592 | 0, 6336 | 0, 721, 6512 | 0);
// unreachable;
} else if ((label | 0) == 29) {
___assert_fail(6592 | 0, 6336 | 0, 739, 6512 | 0);
// unreachable;
}
}
}
} while (0);
$97 = ($iscn + 28) | 0;
HEAP32[$97 >> 2] = 0;
$98 = ($iscn + 108) | 0;
$99 = HEAP32[$98 >> 2] | 0;
$100 = ($99 | 0) > 0;
L46: do {
if ($100) {
$101 = HEAP32[$26 >> 2] | 0;
$102 = ($101 + -1) | 0;
$103 = ($102 >>> 0) % ($99 >>> 0) & -1;
$104 = ($103 + 1) | 0;
$105 = $104 >>> 1;
$106 = $101 >>> 1;
$107 = $105 >>> 0 > $106 >>> 0;
$$5 = $107 ? $106 : $105;
$108 = HEAP32[$24 >> 2] | 0;
$109 = ($$5 + $108) | 0;
$110 = $109 >>> 0 > $21 >>> 0;
if ($110) {
___assert_fail(6656 | 0, 6336 | 0, 759, 6512 | 0);
// unreachable;
}
$111 = HEAP32[$30 >> 2] | 0;
$112 = ($iscn + 44) | 0;
HEAP32[$112 >> 2] = $109;
$113 = $109 >>> 0 < $28 >>> 0;
if ($113) {
$114 = Math_imul($111, $21) | 0;
$115 = ($114 + $109) | 0;
$116 = ($37 + $115) | 0;
$117 = HEAP32[_stderr >> 2] | 0;
$118 = ($iscn + 36) | 0;
$119 = ($iscn + 32) | 0;
$120 = ($iscn + 40) | 0;
$121 = (0 - $21) | 0;
$122 = ($99 - $21) | 0;
$123 = ($99 + $21) | 0;
$p2$068 = $116;
$storemerge66 = $109;
$y4$067 = $111;
while (1) {
$124 = HEAP32[$30 >> 2] | 0;
$125 = HEAP32[80 >> 2] | 0;
$126 = ($125 | 0) > 127;
if ($126) {
HEAP32[$vararg_buffer16 >> 2] = 6512;
$vararg_ptr13 = ($vararg_buffer16 + 4) | 0;
HEAP32[$vararg_ptr13 >> 2] = $storemerge66;
$vararg_ptr14 = ($vararg_buffer16 + 8) | 0;
HEAP32[$vararg_ptr14 >> 2] = $y4$067;
$vararg_ptr15 = ($vararg_buffer16 + 12) | 0;
HEAP32[$vararg_ptr15 >> 2] = $p2$068;
_fprintf($117 | 0, 6672 | 0, $vararg_buffer16 | 0) | 0;
}
HEAP32[$118 >> 2] = 1;
HEAP32[$119 >> 2] = 1;
HEAP32[$120 >> 2] = $124;
$127 = $y4$067 >>> 0 < $34 >>> 0;
if ($127) {
$128 = ($34 - $y4$067) | 0;
$129 = Math_imul($21, $128) | 0;
$p2$152 = $p2$068;
$y4$151 = $y4$067;
while (1) {
$130 = HEAP8[$p2$152 >> 0] | 0;
$131 = ($y4$151 + 1) | 0;
$132 = ($p2$152 + $21) | 0;
$133 = $130 & 255;
_zbar_scan_y($0, $133) | 0;
$exitcond = ($131 | 0) == ($34 | 0);
if ($exitcond) {
break;
} else {
$p2$152 = $132;
$y4$151 = $131;
}
}
$scevgep = ($p2$068 + $129) | 0;
$p2$1$lcssa = $scevgep;
$y4$1$lcssa = $34;
} else {
$p2$1$lcssa = $p2$068;
$y4$1$lcssa = $y4$067;
}
$134 = Math_imul($y4$1$lcssa, $21) | 0;
$$sum = ($134 + $storemerge66) | 0;
$135 = ($37 + $$sum) | 0;
$136 = ($p2$1$lcssa | 0) == ($135 | 0);
if (!$136) {
label = 43;
break;
}
$iscn$idx10$val = HEAP32[$iscn >> 2] | 0;
_zbar_scanner_flush($iscn$idx10$val) | 0;
_zbar_scanner_flush($iscn$idx10$val) | 0;
_zbar_scanner_new_scan($iscn$idx10$val) | 0;
$137 = ($storemerge66 + $99) | 0;
$138 = ($y4$1$lcssa + -1) | 0;
$139 = ($p2$1$lcssa + $122) | 0;
HEAP32[$112 >> 2] = $137;
$140 = $137 >>> 0 < $28 >>> 0;
if (!$140) {
break L46;
}
$141 = HEAP32[80 >> 2] | 0;
$142 = ($141 | 0) > 127;
if ($142) {
HEAP32[$vararg_buffer16 >> 2] = 6512;
$vararg_ptr19 = ($vararg_buffer16 + 4) | 0;
HEAP32[$vararg_ptr19 >> 2] = $137;
$vararg_ptr20 = ($vararg_buffer16 + 8) | 0;
HEAP32[$vararg_ptr20 >> 2] = $138;
$vararg_ptr21 = ($vararg_buffer16 + 12) | 0;
HEAP32[$vararg_ptr21 >> 2] = $139;
_fprintf($117 | 0, 6704 | 0, $vararg_buffer16 | 0) | 0;
}
HEAP32[$118 >> 2] = -1;
HEAP32[$119 >> 2] = -1;
HEAP32[$120 >> 2] = $34;
$143 = ($y4$1$lcssa | 0) > ($124 | 0);
if ($143) {
$144 = ($124 + -1) | 0;
$145 = ($144 - $y4$1$lcssa) | 0;
$146 = Math_imul($21, $145) | 0;
$p2$259 = $139;
$y4$258 = $138;
while (1) {
$147 = HEAP8[$p2$259 >> 0] | 0;
$148 = ($y4$258 + -1) | 0;
$149 = ($p2$259 + $121) | 0;
$150 = $147 & 255;
_zbar_scan_y($0, $150) | 0;
$151 = ($y4$258 | 0) > ($124 | 0);
if ($151) {
$p2$259 = $149;
$y4$258 = $148;
} else {
break;
}
}
$scevgep204$sum = ($99 + $146) | 0;
$scevgep205 = ($p2$1$lcssa + $scevgep204$sum) | 0;
$p2$2$lcssa = $scevgep205;
$y4$2$lcssa = $144;
} else {
$p2$2$lcssa = $139;
$y4$2$lcssa = $138;
}
$152 = Math_imul($y4$2$lcssa, $21) | 0;
$$sum1 = ($152 + $137) | 0;
$153 = ($37 + $$sum1) | 0;
$154 = ($p2$2$lcssa | 0) == ($153 | 0);
if (!$154) {
label = 52;
break;
}
$iscn$idx$val = HEAP32[$iscn >> 2] | 0;
_zbar_scanner_flush($iscn$idx$val) | 0;
_zbar_scanner_flush($iscn$idx$val) | 0;
_zbar_scanner_new_scan($iscn$idx$val) | 0;
$155 = ($137 + $99) | 0;
$156 = ($y4$2$lcssa + 1) | 0;
$157 = ($p2$2$lcssa + $123) | 0;
HEAP32[$112 >> 2] = $155;
$158 = $155 >>> 0 < $28 >>> 0;
if ($158) {
$p2$068 = $157;
$storemerge66 = $155;
$y4$067 = $156;
} else {
break L46;
}
}
if ((label | 0) == 43) {
___assert_fail(6592 | 0, 6336 | 0, 775, 6512 | 0);
// unreachable;
} else if ((label | 0) == 52) {
___assert_fail(6592 | 0, 6336 | 0, 793, 6512 | 0);
// unreachable;
}
}
}
} while (0);
$159 = ($iscn + 32) | 0;
HEAP32[$159 >> 2] = 0;
HEAP32[$11 >> 2] = 0;
$160 = HEAP32[$8 >> 2] | 0;
__zbar_qr_decode($160, $iscn, $img) | 0;
$161 = ($iscn + 92) | 0;
$162 = HEAP32[$161 >> 2] | 0;
$163 = ($162 | 0) == 0;
if ($163) {
$164 = ($99 | 0) == 1;
if ($164) {
$173 = 1;
} else {
$165 = HEAP32[$38 >> 2] | 0;
$166 = ($165 | 0) == 1;
$phitmp = $166 & 1;
$173 = $phitmp;
}
} else {
$173 = 0;
}
$167 = ($syms$0 + 4) | 0;
$168 = HEAP32[$167 >> 2] | 0;
$169 = ($168 | 0) == 0;
if ($169) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$170 = ($syms$0 + 8) | 0;
$171 = HEAP32[$170 >> 2] | 0;
$172 = ($171 | 0) == (0 | 0);
do {
if (!$172) {
$174 = ($173 | 0) == 0;
$175 = ($iscn + 96) | 0;
$339 = $171;
$naddon$0$ph125 = 0;
$nean$0$ph120 = 0;
$symp$0$ph130 = $170;
L88: while (1) {
L90: do {
if ($174) {
$177 = $339;
while (1) {
$176 = ($177 + 56) | 0;
$178 = HEAP32[$176 >> 2] | 0;
$179 = ($178 | 0) < 1;
if (!$179) {
$281 = $177;
$naddon$1 = $naddon$0$ph125;
$nean$1 = $nean$0$ph120;
break L90;
}
$180 = HEAP32[$177 >> 2] | 0;
$$off$us = ($180 + -2) | 0;
$181 = $$off$us >>> 0 < 13;
if ($181) {
$274 = $180;
$340 = $177;
label = 98;
break L90;
}
$cond = ($180 | 0) == 38;
if (!$cond) {
$281 = $177;
$naddon$1 = $naddon$0$ph125;
$nean$1 = $nean$0$ph120;
break L90;
}
$182 = ($177 + 60) | 0;
$183 = HEAP32[$182 >> 2] | 0;
$184 = ($183 | 0) < 4;
if (!$184) {
$281 = $177;
$naddon$1 = $naddon$0$ph125;
$nean$1 = $nean$0$ph120;
break L90;
}
$185 = HEAP32[$161 >> 2] | 0;
$186 = ($185 | 0) == 0;
if (!$186) {
$187 = HEAP32[$175 >> 2] | 0;
$188 = ($187 | 0) == (0 | 0);
if ($188) {
label = 96;
break L88;
}
$189 = ($177 + 16) | 0;
$190 = ($177 + 20) | 0;
$191 = ($177 + 52) | 0;
$341 = 38;
$342 = $187;
$entry$0$ph4$i$us = $175;
L100: while (1) {
$193 = $342;
$195 = $341;
while (1) {
$192 = HEAP32[$193 >> 2] | 0;
$194 = ($192 | 0) == ($195 | 0);
do {
if ($194) {
$196 = ($193 + 16) | 0;
$197 = HEAP32[$196 >> 2] | 0;
$198 = HEAP32[$189 >> 2] | 0;
$199 = ($197 | 0) == ($198 | 0);
if (!$199) {
break;
}
$200 = ($193 + 20) | 0;
$201 = HEAP32[$200 >> 2] | 0;
$202 = HEAP32[$190 >> 2] | 0;
$203 = _memcmp($201, $202, $197) | 0;
$204 = ($203 | 0) == 0;
if ($204) {
break L100;
}
}
} while (0);
$205 = HEAP32[$191 >> 2] | 0;
$206 = ($193 + 52) | 0;
$207 = HEAP32[$206 >> 2] | 0;
$208 = ($205 - $207) | 0;
$209 = $208 >>> 0 > 4000;
$210 = ($193 + 44) | 0;
$211 = HEAP32[$210 >> 2] | 0;
if (!$209) {
break;
}
HEAP32[$210 >> 2] = 0;
$213 = HEAP32[$entry$0$ph4$i$us >> 2] | 0;
__zbar_image_scanner_recycle_syms($iscn, $213);
HEAP32[$entry$0$ph4$i$us >> 2] = $211;
$214 = ($211 | 0) == (0 | 0);
if ($214) {
label = 96;
break L88;
}
$$pre222 = HEAP32[$177 >> 2] | 0;
$193 = $211;
$195 = $$pre222;
}
$212 = ($211 | 0) == (0 | 0);
if ($212) {
label = 96;
break L88;
} else {
$341 = $195;
$342 = $211;
$entry$0$ph4$i$us = $210;
}
}
$215 = ($193 | 0) == (0 | 0);
if ($215) {
label = 96;
break L88;
}
$216 = ($193 + 56) | 0;
$217 = HEAP32[$216 >> 2] | 0;
$218 = ($217 + -1) | 0;
HEAP32[$216 >> 2] = $218;
}
$219 = ($177 + 44) | 0;
$220 = HEAP32[$219 >> 2] | 0;
HEAP32[$symp$0$ph130 >> 2] = $220;
$221 = HEAP32[$167 >> 2] | 0;
$222 = ($221 + -1) | 0;
HEAP32[$167 >> 2] = $222;
HEAP32[$219 >> 2] = 0;
__zbar_image_scanner_recycle_syms($iscn, $177);
$223 = HEAP32[$symp$0$ph130 >> 2] | 0;
$224 = ($223 | 0) == (0 | 0);
if ($224) {
$naddon$0$ph118 = $naddon$0$ph125;
$nean$0$ph108 = $nean$0$ph120;
label = 103;
break L88;
} else {
$177 = $223;
}
}
} else {
$226 = $339;
while (1) {
$225 = ($226 + 56) | 0;
$227 = HEAP32[$225 >> 2] | 0;
$228 = ($227 | 0) < 1;
if (!$228) {
$281 = $226;
$naddon$1 = $naddon$0$ph125;
$nean$1 = $nean$0$ph120;
break L90;
}
$229 = HEAP32[$226 >> 2] | 0;
$$off = ($229 + -2) | 0;
$230 = $$off >>> 0 < 13;
if (!$230) {
if (!((($229 | 0) == 38) | (($229 | 0) == 35) | (($229 | 0) == 34))) {
$281 = $226;
$naddon$1 = $naddon$0$ph125;
$nean$1 = $nean$0$ph120;
break L90;
}
}
$231 = ($226 + 60) | 0;
$232 = HEAP32[$231 >> 2] | 0;
$233 = ($232 | 0) < 4;
if (!$233) {
$274 = $229;
$340 = $226;
label = 98;
break L90;
}
$234 = HEAP32[$161 >> 2] | 0;
$235 = ($234 | 0) == 0;
if (!$235) {
$236 = HEAP32[$175 >> 2] | 0;
$237 = ($236 | 0) == (0 | 0);
if ($237) {
label = 96;
break L88;
}
$238 = ($226 + 16) | 0;
$239 = ($226 + 20) | 0;
$240 = ($226 + 52) | 0;
$343 = $229;
$344 = $236;
$entry$0$ph4$i = $175;
L124: while (1) {
$244 = $344;
$246 = $343;
while (1) {
$243 = HEAP32[$244 >> 2] | 0;
$245 = ($243 | 0) == ($246 | 0);
do {
if ($245) {
$247 = ($244 + 16) | 0;
$248 = HEAP32[$247 >> 2] | 0;
$249 = HEAP32[$238 >> 2] | 0;
$250 = ($248 | 0) == ($249 | 0);
if (!$250) {
break;
}
$251 = ($244 + 20) | 0;
$252 = HEAP32[$251 >> 2] | 0;
$253 = HEAP32[$239 >> 2] | 0;
$254 = _memcmp($252, $253, $248) | 0;
$255 = ($254 | 0) == 0;
if ($255) {
break L124;
}
}
} while (0);
$256 = HEAP32[$240 >> 2] | 0;
$257 = ($244 + 52) | 0;
$258 = HEAP32[$257 >> 2] | 0;
$259 = ($256 - $258) | 0;
$260 = $259 >>> 0 > 4000;
$261 = ($244 + 44) | 0;
$241 = HEAP32[$261 >> 2] | 0;
if (!$260) {
break;
}
HEAP32[$261 >> 2] = 0;
$262 = HEAP32[$entry$0$ph4$i >> 2] | 0;
__zbar_image_scanner_recycle_syms($iscn, $262);
HEAP32[$entry$0$ph4$i >> 2] = $241;
$263 = ($241 | 0) == (0 | 0);
if ($263) {
label = 96;
break L88;
}
$$pre223 = HEAP32[$226 >> 2] | 0;
$244 = $241;
$246 = $$pre223;
}
$242 = ($241 | 0) == (0 | 0);
if ($242) {
label = 96;
break L88;
} else {
$343 = $246;
$344 = $241;
$entry$0$ph4$i = $261;
}
}
$264 = ($244 | 0) == (0 | 0);
if ($264) {
label = 96;
break L88;
}
$265 = ($244 + 56) | 0;
$266 = HEAP32[$265 >> 2] | 0;
$267 = ($266 + -1) | 0;
HEAP32[$265 >> 2] = $267;
}
$268 = ($226 + 44) | 0;
$269 = HEAP32[$268 >> 2] | 0;
HEAP32[$symp$0$ph130 >> 2] = $269;
$270 = HEAP32[$167 >> 2] | 0;
$271 = ($270 + -1) | 0;
HEAP32[$167 >> 2] = $271;
HEAP32[$268 >> 2] = 0;
__zbar_image_scanner_recycle_syms($iscn, $226);
$272 = HEAP32[$symp$0$ph130 >> 2] | 0;
$273 = ($272 | 0) == (0 | 0);
if ($273) {
$naddon$0$ph118 = $naddon$0$ph125;
$nean$0$ph108 = $nean$0$ph120;
label = 103;
break L88;
} else {
$226 = $272;
}
}
}
} while (0);
do {
if ((label | 0) == 98) {
label = 0;
$275 = $274 >>> 0 > 14;
$276 = ($274 | 0) == 10;
$or$cond7 = $275 | $276;
if ($or$cond7) {
$281 = $340;
$naddon$1 = $naddon$0$ph125;
$nean$1 = $nean$0$ph120;
} else {
$277 = $274 >>> 0 > 5;
if ($277) {
$278 = ($nean$0$ph120 + 1) | 0;
$281 = $340;
$naddon$1 = $naddon$0$ph125;
$nean$1 = $278;
break;
} else {
$279 = ($naddon$0$ph125 + 1) | 0;
$281 = $340;
$naddon$1 = $279;
$nean$1 = $nean$0$ph120;
break;
}
}
}
} while (0);
$280 = ($281 + 44) | 0;
$282 = HEAP32[$280 >> 2] | 0;
$283 = ($282 | 0) == (0 | 0);
if ($283) {
$naddon$0$ph118 = $naddon$1;
$nean$0$ph108 = $nean$1;
label = 103;
break;
} else {
$339 = $282;
$naddon$0$ph125 = $naddon$1;
$nean$0$ph120 = $nean$1;
$symp$0$ph130 = $280;
}
}
if ((label | 0) == 96) {
___assert_fail(6400 | 0, 6336 | 0, 831, 6512 | 0);
// unreachable;
} else if ((label | 0) == 103) {
$284 = ($nean$0$ph108 | 0) == 1;
$285 = ($naddon$0$ph118 | 0) == 1;
$or$cond8 = $284 & $285;
if (!$or$cond8) {
break;
}
$286 = ($iscn + 104) | 0;
$287 = HEAP32[$286 >> 2] | 0;
$288 = ($287 | 0) == 0;
if ($288) {
break;
}
$289 = HEAP32[$170 >> 2] | 0;
$290 = ($289 | 0) == (0 | 0);
if ($290) {
___assert_fail(6736 | 0, 6336 | 0, 871, 6512 | 0);
// unreachable;
} else {
$345 = $289;
$addon$0$ph96 = 0;
$ean$0$ph95 = 0;
$symp$1$ph94 = $170;
}
L151: while (1) {
$294 = $345;
$addon$019 = $addon$0$ph96;
$ean$018 = $ean$0$ph95;
while (1) {
$293 = HEAP32[$294 >> 2] | 0;
$$off15 = ($293 + -2) | 0;
$295 = $$off15 >>> 0 < 13;
$296 = ($294 + 44) | 0;
$291 = HEAP32[$296 >> 2] | 0;
if (!$295) {
break;
}
HEAP32[$symp$1$ph94 >> 2] = $291;
$297 = HEAP32[$167 >> 2] | 0;
$298 = ($297 + -1) | 0;
HEAP32[$167 >> 2] = $298;
HEAP32[$296 >> 2] = 0;
$299 = $293 >>> 0 < 6;
$ean$0$ = $299 ? $ean$018 : $294;
$$addon$0 = $299 ? $294 : $addon$019;
$300 = HEAP32[$symp$1$ph94 >> 2] | 0;
$301 = ($300 | 0) == (0 | 0);
if ($301) {
$addon$0$lcssa = $$addon$0;
$ean$0$lcssa = $ean$0$;
break L151;
} else {
$294 = $300;
$addon$019 = $$addon$0;
$ean$018 = $ean$0$;
}
}
$292 = ($291 | 0) == (0 | 0);
if ($292) {
$addon$0$lcssa = $addon$019;
$ean$0$lcssa = $ean$018;
break;
} else {
$345 = $291;
$addon$0$ph96 = $addon$019;
$ean$0$ph95 = $ean$018;
$symp$1$ph94 = $296;
}
}
$302 = ($ean$0$lcssa | 0) == (0 | 0);
if ($302) {
___assert_fail(6736 | 0, 6336 | 0, 871, 6512 | 0);
// unreachable;
}
$303 = ($addon$0$lcssa | 0) == (0 | 0);
if ($303) {
___assert_fail(6744 | 0, 6336 | 0, 872, 6512 | 0);
// unreachable;
} else {
$304 = ($ean$0$lcssa + 16) | 0;
$305 = HEAP32[$304 >> 2] | 0;
$306 = ($addon$0$lcssa + 16) | 0;
$307 = HEAP32[$306 >> 2] | 0;
$308 = ($305 + 1) | 0;
$309 = ($308 + $307) | 0;
$310 = __zbar_image_scanner_alloc_sym($iscn, 15, $309) | 0;
$311 = ($ean$0$lcssa + 36) | 0;
$312 = HEAP32[$311 >> 2] | 0;
$313 = ($310 + 36) | 0;
HEAP32[$313 >> 2] = $312;
$314 = __zbar_symbol_set_create() | 0;
$315 = ($310 + 48) | 0;
HEAP32[$315 >> 2] = $314;
$316 = ($310 + 20) | 0;
$317 = HEAP32[$316 >> 2] | 0;
$318 = ($ean$0$lcssa + 20) | 0;
$319 = HEAP32[$318 >> 2] | 0;
$320 = HEAP32[$304 >> 2] | 0;
_memcpy($317 | 0, $319 | 0, $320 | 0) | 0;
$321 = HEAP32[$316 >> 2] | 0;
$322 = HEAP32[$304 >> 2] | 0;
$323 = ($321 + $322) | 0;
$324 = ($addon$0$lcssa + 20) | 0;
$325 = HEAP32[$324 >> 2] | 0;
$326 = HEAP32[$306 >> 2] | 0;
$327 = ($326 + 1) | 0;
_memcpy($323 | 0, $325 | 0, $327 | 0) | 0;
$328 = HEAP32[$315 >> 2] | 0;
$329 = ($328 + 8) | 0;
HEAP32[$329 >> 2] = $ean$0$lcssa;
$330 = ($ean$0$lcssa + 44) | 0;
HEAP32[$330 >> 2] = $addon$0$lcssa;
$331 = HEAP32[$315 >> 2] | 0;
$332 = ($331 + 4) | 0;
HEAP32[$332 >> 2] = 2;
__zbar_image_scanner_add_sym($iscn, $310);
break;
}
}
}
} while (0);
$$pr14 = HEAP32[$167 >> 2] | 0;
$333 = ($$pr14 | 0) == 0;
if ($333) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$334 = ($iscn + 16) | 0;
$335 = HEAP32[$334 >> 2] | 0;
$336 = ($335 | 0) == (0 | 0);
if ($336) {
$$0 = $$pr14;
STACKTOP = sp;
return $$0 | 0;
}
$337 = ($iscn + 12) | 0;
$338 = HEAP32[$337 >> 2] | 0;
FUNCTION_TABLE_vii[$335 & 0]($img, $338);
$$pre = HEAP32[$167 >> 2] | 0;
$$0 = $$pre;
STACKTOP = sp;
return $$0 | 0;
}
function _zbar_scanner_create($dcode) {
$dcode = $dcode | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
dest = 0,
label = 0,
sp = 0,
stop = 0;
sp = STACKTOP;
$0 = _malloc(48) | 0;
HEAP32[$0 >> 2] = $dcode;
$1 = ($0 + 4) | 0;
HEAP32[$1 >> 2] = 4;
$2 = ($0 + 8) | 0;
dest = ($2 + 0) | 0;
stop = (dest + 40) | 0;
do {
HEAP32[dest >> 2] = 0 | 0;
dest = (dest + 4) | 0;
} while ((dest | 0) < (stop | 0));
$3 = ($0 + 32) | 0;
HEAP32[$3 >> 2] = 4;
$4 = ($dcode | 0) == (0 | 0);
if ($4) {
STACKTOP = sp;
return $0 | 0;
}
_zbar_decoder_reset($dcode);
STACKTOP = sp;
return $0 | 0;
}
function _zbar_scanner_destroy($scn) {
$scn = $scn | 0;
var label = 0,
sp = 0;
sp = STACKTOP;
_free($scn);
STACKTOP = sp;
return;
}
function _zbar_scanner_get_width($scn) {
$scn = $scn | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($scn + 44) | 0;
$1 = HEAP32[$0 >> 2] | 0;
STACKTOP = sp;
return $1 | 0;
}
function _zbar_scanner_get_edge($scn, $offset, $prec) {
$scn = $scn | 0;
$offset = $offset | 0;
$prec = $prec | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($scn + 40) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 - $offset) | 0;
$3 = ($2 + -48) | 0;
$4 = (5 - $prec) | 0;
$5 = ($4 | 0) > 0;
if ($5) {
$6 = $3 >>> $4;
$$0 = $6;
} else {
$7 = ($prec | 0) == 5;
if ($7) {
$$0 = $3;
} else {
$8 = (0 - $4) | 0;
$9 = $3 << $8;
$$0 = $9;
}
}
STACKTOP = sp;
return $$0 | 0;
}
function _zbar_scanner_flush($scn) {
$scn = $scn | 0;
var $$0 = 0,
$$0$i = 0,
$$pre = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0;
var $24 = 0,
$25 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$or$cond = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($scn + 28) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == 0;
if ($2) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$3 = ($scn + 8) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = $4 << 5;
$6 = $5 | 16;
$7 = ($scn + 36) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($8 | 0) != ($6 | 0);
$10 = ($1 | 0) > 0;
$or$cond = $9 | $10;
if (!$or$cond) {
$22 = ($scn + 44) | 0;
HEAP32[$22 >> 2] = 0;
HEAP32[$0 >> 2] = 0;
$23 = HEAP32[$scn >> 2] | 0;
$24 = ($23 | 0) == (0 | 0);
if ($24) {
$$0 = 1;
STACKTOP = sp;
return $$0 | 0;
}
$25 = _zbar_decode_width($23, 0) | 0;
$$0 = $25;
STACKTOP = sp;
return $$0 | 0;
}
$11 = ($scn + 40) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($12 | 0) == 0;
if ($13) {
HEAP32[$11 >> 2] = $8;
$15 = $8;
} else {
$15 = $12;
}
$14 = ($8 - $15) | 0;
$16 = ($scn + 44) | 0;
HEAP32[$16 >> 2] = $14;
HEAP32[$11 >> 2] = $8;
$17 = HEAP32[$scn >> 2] | 0;
$18 = ($17 | 0) == (0 | 0);
if ($18) {
$$0$i = 1;
$21 = $1;
} else {
$19 = _zbar_decode_width($17, $14) | 0;
$$pre = HEAP32[$0 >> 2] | 0;
$$0$i = $19;
$21 = $$pre;
}
HEAP32[$7 >> 2] = $6;
$20 = (0 - $21) | 0;
HEAP32[$0 >> 2] = $20;
$$0 = $$0$i;
STACKTOP = sp;
return $$0 | 0;
}
function _zbar_scanner_new_scan($scn) {
$scn = $scn | 0;
var $$0$i = 0,
$$0$i$i = 0,
$$edge$0 = 0,
$$edge$05 = 0,
$$pre = 0,
$$pre$i = 0,
$$pre$phiZ2D = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0;
var $20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0;
var $8 = 0,
$9 = 0,
$edge$0$lcssa = 0,
$edge$01 = 0,
$or$cond$i = 0,
dest = 0,
label = 0,
sp = 0,
stop = 0;
sp = STACKTOP;
$0 = ($scn + 28) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == 0;
$3 = ($scn + 8) | 0;
L1: do {
if ($2) {
$$pre$phiZ2D = $scn;
$edge$0$lcssa = 0;
} else {
$4 = ($scn + 36) | 0;
$5 = ($scn + 40) | 0;
$6 = ($scn + 44) | 0;
$12 = $1;
$edge$01 = 0;
while (1) {
$7 = HEAP32[$3 >> 2] | 0;
$8 = $7 << 5;
$9 = $8 | 16;
$10 = HEAP32[$4 >> 2] | 0;
$11 = ($10 | 0) != ($9 | 0);
$13 = ($12 | 0) > 0;
$or$cond$i = $11 | $13;
if ($or$cond$i) {
$14 = HEAP32[$5 >> 2] | 0;
$15 = ($14 | 0) == 0;
if ($15) {
HEAP32[$5 >> 2] = $10;
$17 = $10;
} else {
$17 = $14;
}
$16 = ($10 - $17) | 0;
HEAP32[$6 >> 2] = $16;
HEAP32[$5 >> 2] = $10;
$18 = HEAP32[$scn >> 2] | 0;
$19 = ($18 | 0) == (0 | 0);
if ($19) {
$$0$i$i = 1;
$22 = $12;
} else {
$20 = _zbar_decode_width($18, $16) | 0;
$$pre$i = HEAP32[$0 >> 2] | 0;
$$0$i$i = $20;
$22 = $$pre$i;
}
HEAP32[$4 >> 2] = $9;
$21 = (0 - $22) | 0;
HEAP32[$0 >> 2] = $21;
$$0$i = $$0$i$i;
$28 = $21;
} else {
HEAP32[$6 >> 2] = 0;
HEAP32[$0 >> 2] = 0;
$23 = HEAP32[$scn >> 2] | 0;
$24 = ($23 | 0) == (0 | 0);
if ($24) {
break;
}
$26 = _zbar_decode_width($23, 0) | 0;
$$pre = HEAP32[$0 >> 2] | 0;
$$0$i = $26;
$28 = $$pre;
}
$27 = $$0$i >>> 0 > $edge$01 >>> 0;
$$edge$0 = $27 ? $$0$i : $edge$01;
$29 = ($28 | 0) == 0;
if ($29) {
$$pre$phiZ2D = $scn;
$edge$0$lcssa = $$edge$0;
break L1;
} else {
$12 = $28;
$edge$01 = $$edge$0;
}
}
$25 = ($edge$01 | 0) == 0;
$$edge$05 = $25 ? 1 : $edge$01;
$$pre$phiZ2D = $scn;
$edge$0$lcssa = $$edge$05;
}
} while (0);
dest = ($3 + 0) | 0;
stop = (dest + 40) | 0;
do {
HEAP32[dest >> 2] = 0 | 0;
dest = (dest + 4) | 0;
} while ((dest | 0) < (stop | 0));
$30 = ($scn + 4) | 0;
$31 = HEAP32[$30 >> 2] | 0;
$32 = ($scn + 32) | 0;
HEAP32[$32 >> 2] = $31;
$33 = HEAP32[$$pre$phiZ2D >> 2] | 0;
$34 = ($33 | 0) == (0 | 0);
if ($34) {
STACKTOP = sp;
return $edge$0$lcssa | 0;
}
_zbar_decoder_new_scan($33);
STACKTOP = sp;
return $edge$0$lcssa | 0;
}
function _zbar_scan_y($scn, $y) {
$scn = $scn | 0;
$y = $y | 0;
var $$ = 0,
$$0$i = 0,
$$12 = 0,
$$lobit = 0,
$$lobit11 = 0,
$$sink = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0;
var $21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0;
var $4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0;
var $58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0;
var $76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0;
var $94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$edge$015 = 0,
$edge$1 = 0,
$ispos = 0,
$ispos1 = 0,
$ispos3 = 0,
$ispos5 = 0,
$neg = 0,
$neg2 = 0,
$neg4 = 0,
$neg6 = 0,
$y0_0$0 = 0,
$y0_1$0 = 0,
$y1_1$0 = 0,
label = 0;
var sp = 0;
sp = STACKTOP;
$0 = ($scn + 8) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 + 3) | 0;
$3 = $2 & 3;
$4 = ((($scn + ($3 << 2)) | 0) + 12) | 0;
$5 = HEAP32[$4 >> 2] | 0;
$6 = ($1 | 0) == 0;
if ($6) {
$13 = ($scn + 24) | 0;
HEAP32[$13 >> 2] = $y;
$14 = ($scn + 20) | 0;
HEAP32[$14 >> 2] = $y;
$15 = ($scn + 16) | 0;
HEAP32[$15 >> 2] = $y;
$16 = ($scn + 12) | 0;
HEAP32[$16 >> 2] = $y;
$y0_0$0 = $y;
$y0_1$0 = $y;
} else {
$7 = ($y - $5) | 0;
$8 = ($7 * 25) | 0;
$9 = $8 >> 5;
$10 = ($9 + $5) | 0;
$11 = $1 & 3;
$12 = ((($scn + ($11 << 2)) | 0) + 12) | 0;
HEAP32[$12 >> 2] = $10;
$y0_0$0 = $10;
$y0_1$0 = $5;
}
$17 = ($1 + 2) | 0;
$18 = $17 & 3;
$19 = ((($scn + ($18 << 2)) | 0) + 12) | 0;
$20 = HEAP32[$19 >> 2] | 0;
$21 = ($1 + 1) | 0;
$22 = $21 & 3;
$23 = ((($scn + ($22 << 2)) | 0) + 12) | 0;
$24 = HEAP32[$23 >> 2] | 0;
$25 = ($y0_1$0 - $20) | 0;
$26 = ($20 - $24) | 0;
$ispos = ($25 | 0) > -1;
$neg = (0 - $25) | 0;
$27 = $ispos ? $25 : $neg;
$ispos1 = ($26 | 0) > -1;
$neg2 = (0 - $26) | 0;
$28 = $ispos1 ? $26 : $neg2;
$29 = ($27 | 0) < ($28 | 0);
if ($29) {
$$lobit = $25 >>> 31;
$$lobit11 = $26 >>> 31;
$30 = ($$lobit | 0) == ($$lobit11 | 0);
$$ = $30 ? $26 : $25;
$y1_1$0 = $$;
} else {
$y1_1$0 = $25;
}
$31 = $y0_1$0 << 1;
$32 = ($y0_0$0 - $31) | 0;
$33 = ($32 + $20) | 0;
$34 = $20 << 1;
$35 = ($y0_1$0 - $34) | 0;
$36 = ($35 + $24) | 0;
$37 = ($33 | 0) != 0;
do {
if ($37) {
$38 = ($33 | 0) > 0;
if ($38) {
$39 = ($36 | 0) < 0;
if ($39) {
break;
} else {
$edge$1 = 0;
}
HEAP32[$0 >> 2] = $21;
STACKTOP = sp;
return $edge$1 | 0;
} else {
$40 = ($36 | 0) > 0;
if ($40) {
break;
} else {
$edge$1 = 0;
}
HEAP32[$0 >> 2] = $21;
STACKTOP = sp;
return $edge$1 | 0;
}
}
} while (0);
$41 = ($scn + 32) | 0;
$42 = HEAP32[$41 >> 2] | 0;
$43 = ($scn + 4) | 0;
$44 = HEAP32[$43 >> 2] | 0;
$45 = $42 >>> 0 > $44 >>> 0;
do {
if ($45) {
$46 = ($scn + 44) | 0;
$47 = HEAP32[$46 >> 2] | 0;
$48 = ($47 | 0) == 0;
if ($48) {
$$0$i = $44;
} else {
$49 = HEAP32[$0 >> 2] | 0;
$50 = $49 << 5;
$51 = ($scn + 40) | 0;
$52 = HEAP32[$51 >> 2] | 0;
$53 = ($50 - $52) | 0;
$54 = Math_imul($53, $42) | 0;
$55 = (($54 >>> 0) / ($47 >>> 0)) & -1;
$56 = $55 >>> 3;
$57 = $42 >>> 0 > $56 >>> 0;
if ($57) {
$58 = ($42 - $56) | 0;
$59 = $58 >>> 0 > $44 >>> 0;
if ($59) {
$$0$i = $58;
break;
}
}
HEAP32[$41 >> 2] = $44;
$$0$i = $44;
}
} else {
$$0$i = $44;
}
} while (0);
$ispos3 = ($y1_1$0 | 0) > -1;
$neg4 = (0 - $y1_1$0) | 0;
$60 = $ispos3 ? $y1_1$0 : $neg4;
$61 = $$0$i >>> 0 > $60 >>> 0;
if ($61) {
$edge$1 = 0;
HEAP32[$0 >> 2] = $21;
STACKTOP = sp;
return $edge$1 | 0;
}
$62 = ($scn + 28) | 0;
$63 = HEAP32[$62 >> 2] | 0;
$64 = ($63 | 0) > 0;
$65 = ($y1_1$0 | 0) < 0;
$66 = ($y1_1$0 | 0) > 0;
$$sink = $64 ? $65 : $66;
if ($$sink) {
$67 = ($63 | 0) == 0;
if ($67) {
$68 = ($scn + 36) | 0;
HEAP32[$68 >> 2] = 48;
$69 = ($scn + 40) | 0;
HEAP32[$69 >> 2] = 48;
$77 = 48;
$78 = 48;
} else {
$70 = ($scn + 40) | 0;
$71 = HEAP32[$70 >> 2] | 0;
$72 = ($71 | 0) == 0;
$73 = ($scn + 36) | 0;
$74 = HEAP32[$73 >> 2] | 0;
if ($72) {
HEAP32[$70 >> 2] = $74;
$77 = $74;
$78 = $74;
} else {
$77 = $71;
$78 = $74;
}
}
$75 = ($scn + 40) | 0;
$76 = ($78 - $77) | 0;
$79 = ($scn + 44) | 0;
HEAP32[$79 >> 2] = $76;
HEAP32[$75 >> 2] = $78;
$80 = HEAP32[$scn >> 2] | 0;
$81 = ($80 | 0) == (0 | 0);
if ($81) {
$edge$015 = 1;
} else {
$82 = _zbar_decode_width($80, $76) | 0;
$edge$015 = $82;
}
} else {
$ispos5 = ($63 | 0) > -1;
$neg6 = (0 - $63) | 0;
$83 = $ispos5 ? $63 : $neg6;
$84 = ($83 | 0) < ($60 | 0);
if ($84) {
$edge$015 = 0;
} else {
$edge$1 = 0;
HEAP32[$0 >> 2] = $21;
STACKTOP = sp;
return $edge$1 | 0;
}
}
HEAP32[$62 >> 2] = $y1_1$0;
$85 = ($60 * 14) | 0;
$86 = ($85 + 16) | 0;
$87 = $86 >>> 5;
$88 = HEAP32[$43 >> 2] | 0;
$89 = $87 >>> 0 < $88 >>> 0;
$$12 = $89 ? $88 : $87;
HEAP32[$41 >> 2] = $$12;
$90 = ($33 - $36) | 0;
$91 = ($scn + 36) | 0;
HEAP32[$91 >> 2] = 32;
$92 = ($33 | 0) == ($36 | 0);
if ($92) {
HEAP32[$91 >> 2] = 16;
$99 = 16;
} else {
if ($37) {
$93 = $33 << 5;
$94 = $93 | 1;
$95 = (($94 | 0) / ($90 | 0)) & -1;
$96 = (32 - $95) | 0;
HEAP32[$91 >> 2] = $96;
$99 = $96;
} else {
$99 = 32;
}
}
$97 = $1 << 5;
$98 = ($99 + $97) | 0;
HEAP32[$91 >> 2] = $98;
$edge$1 = $edge$015;
HEAP32[$0 >> 2] = $21;
STACKTOP = sp;
return $edge$1 | 0;
}
function __zbar_decoder_get_qr_finder_line($dcode) {
$dcode = $dcode | 0;
var $0 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($dcode + 112) | 0;
STACKTOP = sp;
return $0 | 0;
}
function __zbar_find_qr($dcode) {
$dcode = $dcode | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0;
var $26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0;
var $44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0;
var $62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0;
var $80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$9 = 0,
$or$cond = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP8[$dcode >> 0] | 0;
$1 = $0 & 255;
$2 = ($1 + 10) | 0;
$3 = $2 & 15;
$4 = ((($dcode + ($3 << 2)) | 0) + 4) | 0;
$5 = HEAP32[$4 >> 2] | 0;
$6 = ($dcode + 108) | 0;
$7 = HEAP32[$6 >> 2] | 0;
$8 = ($7 - $5) | 0;
HEAP32[$6 >> 2] = $8;
$9 = ($1 + 15) | 0;
$10 = $9 & 15;
$11 = ((($dcode + ($10 << 2)) | 0) + 4) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($12 + $8) | 0;
HEAP32[$6 >> 2] = $13;
$14 = $0 & 1;
$15 = ($14 << 24) >> 24 != 0;
$16 = $13 >>> 0 < 7;
$or$cond = $15 | $16;
if ($or$cond) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$17 = HEAP32[$11 >> 2] | 0;
$18 = ($1 + 14) | 0;
$19 = $18 & 15;
$20 = ((($dcode + ($19 << 2)) | 0) + 4) | 0;
$21 = HEAP32[$20 >> 2] | 0;
$22 = ($21 + $17) | 0;
$23 = ($22 * 14) | 0;
$24 = $23 | 1;
$25 = (($24 >>> 0) / ($13 >>> 0)) & -1;
$26 = ($25 + 509) | 0;
$27 = $26 & 510;
$28 = ($27 | 0) == 0;
if (!$28) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$29 = ($1 + 13) | 0;
$30 = $29 & 15;
$31 = ((($dcode + ($30 << 2)) | 0) + 4) | 0;
$32 = HEAP32[$31 >> 2] | 0;
$33 = ($32 + $21) | 0;
$34 = ($33 * 14) | 0;
$35 = $34 | 1;
$36 = (($35 >>> 0) / ($13 >>> 0)) & -1;
$37 = ($36 + 509) | 0;
$38 = $37 & 510;
$39 = ($38 | 0) == 4;
if (!$39) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$40 = ($1 + 12) | 0;
$41 = $40 & 15;
$42 = ((($dcode + ($41 << 2)) | 0) + 4) | 0;
$43 = HEAP32[$42 >> 2] | 0;
$44 = ($43 + $32) | 0;
$45 = ($44 * 14) | 0;
$46 = $45 | 1;
$47 = (($46 >>> 0) / ($13 >>> 0)) & -1;
$48 = ($47 + 509) | 0;
$49 = $48 & 510;
$50 = ($49 | 0) == 4;
if (!$50) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$51 = ($1 + 11) | 0;
$52 = $51 & 15;
$53 = ((($dcode + ($52 << 2)) | 0) + 4) | 0;
$54 = HEAP32[$53 >> 2] | 0;
$55 = ($54 + $43) | 0;
$56 = ($55 * 14) | 0;
$57 = $56 | 1;
$58 = (($57 >>> 0) / ($13 >>> 0)) & -1;
$59 = ($58 + 509) | 0;
$60 = $59 & 510;
$61 = ($60 | 0) == 0;
if (!$61) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$62 = $1 & 15;
$63 = ((($dcode + ($62 << 2)) | 0) + 4) | 0;
$64 = HEAP32[$63 >> 2] | 0;
$65 = ($17 + 1) | 0;
$66 = $65 >>> 1;
$67 = ($64 + $66) | 0;
$68 = ($dcode + 128) | 0;
HEAP32[$68 >> 2] = $67;
$69 = ($64 + $17) | 0;
$70 = HEAP32[$20 >> 2] | 0;
$71 = ($69 + $70) | 0;
$72 = ($dcode + 120) | 0;
HEAP32[$72 >> 2] = $71;
$73 = HEAP32[$31 >> 2] | 0;
$74 = ($73 + $71) | 0;
$75 = ($dcode + 112) | 0;
HEAP32[$75 >> 2] = $74;
$76 = ($dcode + 116) | 0;
HEAP32[$76 >> 2] = $74;
$77 = HEAP32[$53 >> 2] | 0;
$78 = HEAP32[$42 >> 2] | 0;
$79 = ($78 + $74) | 0;
$80 = ($77 + 1) | 0;
$81 = $80 >>> 1;
$82 = ($79 + $81) | 0;
$83 = ($dcode + 124) | 0;
HEAP32[$83 >> 2] = $82;
$84 = ($dcode + 80) | 0;
HEAP32[$84 >> 2] = 0;
$85 = ($dcode + 92) | 0;
HEAP32[$85 >> 2] = 0;
$$0 = 64;
STACKTOP = sp;
return $$0 | 0;
}
function __zbar_qr_create() {
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = _calloc(1, 2856) | 0;
$1 = ($0 + 768) | 0;
_isaac_init($1, 0, 0);
_rs_gf256_init($0, 29);
STACKTOP = sp;
return $0 | 0;
}
function __zbar_qr_destroy($reader) {
$reader = $reader | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$vararg_buffer = 0,
$vararg_ptr1 = 0,
$vararg_ptr2 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$vararg_buffer = sp;
$0 = HEAP32[80 >> 2] | 0;
$1 = ($0 | 0) > 0;
if ($1) {
$2 = HEAP32[_stderr >> 2] | 0;
$3 = ($reader + 2840) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($reader + 2852) | 0;
$6 = HEAP32[$5 >> 2] | 0;
HEAP32[$vararg_buffer >> 2] = 7224;
$vararg_ptr1 = ($vararg_buffer + 4) | 0;
HEAP32[$vararg_ptr1 >> 2] = $4;
$vararg_ptr2 = ($vararg_buffer + 8) | 0;
HEAP32[$vararg_ptr2 >> 2] = $6;
_fprintf($2 | 0, 7192 | 0, $vararg_buffer | 0) | 0;
}
$7 = ($reader + 2832) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($8 | 0) == (0 | 0);
if (!$9) {
_free($8);
}
$10 = ($reader + 2844) | 0;
$11 = HEAP32[$10 >> 2] | 0;
$12 = ($11 | 0) == (0 | 0);
if ($12) {
_free($reader);
STACKTOP = sp;
return;
}
_free($11);
_free($reader);
STACKTOP = sp;
return;
}
function __zbar_qr_reset($reader) {
$reader = $reader | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($reader + 2836) | 0;
HEAP32[$0 >> 2] = 0;
$1 = ($reader + 2848) | 0;
HEAP32[$1 >> 2] = 0;
STACKTOP = sp;
return;
}
function _qr_reader_match_centers($_reader, $_qrlist, $_centers, $_ncenters, $_img, $_width, $_height) {
$_reader = $_reader | 0;
$_qrlist = $_qrlist | 0;
$_centers = $_centers | 0;
$_ncenters = $_ncenters | 0;
$_img = $_img | 0;
$_width = $_width | 0;
$_height = $_height | 0;
var $$$i = 0,
$$$i$i = 0,
$$$i$i$i = 0,
$$$i88$i$i = 0,
$$0$i = 0,
$$01$i = 0,
$$1$i = 0,
$$16$i = 0,
$$idx$i = 0,
$$idx$val$i = 0,
$$idx10 = 0,
$$idx10$val = 0,
$$idx16 = 0,
$$idx16$val = 0,
$$idx19$i = 0,
$$idx19$val$i = 0,
$$idx20 = 0,
$$idx20$val = 0,
$$idx21$i = 0,
$$idx21$val$i = 0;
var $$idx22 = 0,
$$idx22$val = 0,
$$idx23$i = 0,
$$idx23$val$i = 0,
$$idx24 = 0,
$$idx24$val = 0,
$$idx25$1$i = 0,
$$idx25$val$1$i = 0,
$$idx31$i = 0,
$$idx31$val$i = 0,
$$idx33$i = 0,
$$idx33$val$i = 0,
$$idx48$val$i$i = 0,
$$idx49$val$i$i = 0,
$$idx54$val$i$i = 0,
$$idx55$val$i$i = 0,
$$idx60$i$i = 0,
$$idx60$val$i$i = 0,
$$idx61$i$i = 0,
$$idx61$val$i$i = 0;
var $$idx66$i$i = 0,
$$idx66$val$i$i = 0,
$$idx67$i$i = 0,
$$idx67$val$i$i = 0,
$$idx69$i$i = 0,
$$idx69$val$i$i = 0,
$$idx71$i$i = 0,
$$idx71$val$i$i = 0,
$$lobit$i = 0,
$$maxd$0$i = 0,
$$neg$i = 0,
$$neg103$i$i = 0,
$$not$i$i$i = 0,
$$not$i80$i$i = 0,
$$not7$i$i$i = 0,
$$not7$i83$i$i = 0,
$$pre$i = 0,
$$pre$i$i = 0,
$$pre$i25 = 0,
$$pre1$i = 0;
var $$pre104$i = 0,
$$pre105$i = 0,
$$pre106$i = 0,
$$pre107$i = 0,
$$pre108$i = 0,
$$pre149$i$i = 0,
$$val$i = 0,
$$val15 = 0,
$$val18$i = 0,
$$val19 = 0,
$$val20$i = 0,
$$val21 = 0,
$$val22$i = 0,
$$val23 = 0,
$$val24$1$i = 0,
$$val30$i = 0,
$$val32$i = 0,
$$val47$i$i = 0,
$$val53$i$i = 0,
$$val59$i$i = 0;
var $$val65$i$i = 0,
$$val68$i$i = 0,
$$val70$i$i = 0,
$$val9 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$1000 = 0,
$1001 = 0,
$1002 = 0,
$1003 = 0,
$1004 = 0,
$1005 = 0,
$1006 = 0,
$1007 = 0,
$1008 = 0,
$1009 = 0,
$101 = 0,
$1010 = 0;
var $1011 = 0,
$1012 = 0,
$1013 = 0,
$1014 = 0,
$1015 = 0,
$1016 = 0,
$1017 = 0,
$1018 = 0,
$1019 = 0,
$102 = 0,
$1020 = 0,
$1021 = 0,
$1022 = 0,
$1023 = 0,
$1024 = 0,
$1025 = 0,
$1026 = 0,
$1027 = 0,
$1028 = 0,
$1029 = 0;
var $103 = 0,
$1030 = 0,
$1031 = 0,
$1032 = 0,
$1033 = 0,
$1034 = 0,
$1035 = 0,
$1036 = 0,
$1037 = 0,
$1038 = 0,
$1039 = 0,
$104 = 0,
$1040 = 0,
$1041 = 0,
$1042 = 0,
$1043 = 0,
$1044 = 0,
$1045 = 0,
$1046 = 0,
$1047 = 0;
var $1048 = 0,
$1049 = 0,
$105 = 0,
$1050 = 0,
$1051 = 0,
$1052 = 0,
$1053 = 0,
$1054 = 0,
$1055 = 0,
$1056 = 0,
$1057 = 0,
$1058 = 0,
$1059 = 0,
$106 = 0,
$1060 = 0,
$1061 = 0,
$1062 = 0,
$1063 = 0,
$1064 = 0,
$1065 = 0;
var $1066 = 0,
$1067 = 0,
$1068 = 0,
$1069 = 0,
$107 = 0,
$1070 = 0,
$1071 = 0,
$1072 = 0,
$1073 = 0,
$1074 = 0,
$1075 = 0,
$1076 = 0,
$1077 = 0,
$1078 = 0,
$1079 = 0,
$108 = 0,
$1080 = 0,
$1081 = 0,
$1082 = 0,
$1083 = 0;
var $1084 = 0,
$1085 = 0,
$1086 = 0,
$1087 = 0,
$1088 = 0,
$1089 = 0,
$109 = 0,
$1090 = 0,
$1091 = 0,
$1092 = 0,
$1093 = 0,
$1094 = 0,
$1095 = 0,
$1096 = 0,
$1097 = 0,
$1098 = 0,
$1099 = 0,
$11 = 0,
$110 = 0,
$1100 = 0;
var $1101 = 0,
$1102 = 0,
$1103 = 0,
$1104 = 0,
$1105 = 0,
$1106 = 0,
$1107 = 0,
$1108 = 0,
$1109 = 0,
$111 = 0,
$1110 = 0,
$1111 = 0,
$1112 = 0,
$1113 = 0,
$1114 = 0,
$1115 = 0,
$1116 = 0,
$1117 = 0,
$1118 = 0,
$1119 = 0;
var $112 = 0,
$1120 = 0,
$1121 = 0,
$1122 = 0,
$1123 = 0,
$1124 = 0,
$1125 = 0,
$1126 = 0,
$1127 = 0,
$1128 = 0,
$1129 = 0,
$113 = 0,
$1130 = 0,
$1131 = 0,
$1132 = 0,
$1133 = 0,
$1134 = 0,
$1135 = 0,
$1136 = 0,
$1137 = 0;
var $1138 = 0,
$1139 = 0,
$114 = 0,
$1140 = 0,
$1141 = 0,
$1142 = 0,
$1143 = 0,
$1144 = 0,
$1145 = 0,
$1146 = 0,
$1147 = 0,
$1148 = 0,
$1149 = 0,
$115 = 0,
$1150 = 0,
$1151 = 0,
$1152 = 0,
$1153 = 0,
$1154 = 0,
$1155 = 0;
var $1156 = 0,
$1157 = 0,
$1158 = 0,
$1159 = 0,
$116 = 0,
$1160 = 0,
$1161 = 0,
$1162 = 0,
$1163 = 0,
$1164 = 0,
$1165 = 0,
$1166 = 0,
$1167 = 0,
$1168 = 0,
$1169 = 0,
$117 = 0,
$1170 = 0,
$1171 = 0,
$1172 = 0,
$1173 = 0;
var $1174 = 0,
$1175 = 0,
$1176 = 0,
$1177 = 0,
$1178 = 0,
$1179 = 0,
$118 = 0,
$1180 = 0,
$1181 = 0,
$1182 = 0,
$1183 = 0,
$1184 = 0,
$1185 = 0,
$1186 = 0,
$1187 = 0,
$1188 = 0,
$1189 = 0,
$119 = 0,
$1190 = 0,
$1191 = 0;
var $1192 = 0,
$1193 = 0,
$1194 = 0,
$1195 = 0,
$1196 = 0,
$1197 = 0,
$1198 = 0,
$1199 = 0,
$12 = 0,
$120 = 0,
$1200 = 0,
$1201 = 0,
$1202 = 0,
$1203 = 0,
$1204 = 0,
$1205 = 0,
$1206 = 0,
$1207 = 0,
$1208 = 0,
$1209 = 0;
var $121 = 0,
$1210 = 0,
$1211 = 0,
$1212 = 0,
$1213 = 0,
$1214 = 0,
$1215 = 0,
$1216 = 0,
$1217 = 0,
$1218 = 0,
$1219 = 0,
$122 = 0,
$1220 = 0,
$1221 = 0,
$1222 = 0,
$1223 = 0,
$1224 = 0,
$1225 = 0,
$1226 = 0,
$1227 = 0;
var $1228 = 0,
$1229 = 0,
$123 = 0,
$1230 = 0,
$1231 = 0,
$1232 = 0,
$1233 = 0,
$1234 = 0,
$1235 = 0,
$1236 = 0,
$1237 = 0,
$1238 = 0,
$1239 = 0,
$124 = 0,
$1240 = 0,
$1241 = 0,
$1242 = 0,
$1243 = 0,
$1244 = 0,
$1245 = 0;
var $1246 = 0,
$1247 = 0,
$1248 = 0,
$1249 = 0,
$125 = 0,
$1250 = 0,
$1251 = 0,
$1252 = 0,
$1253 = 0,
$1254 = 0,
$1255 = 0,
$1256 = 0,
$1257 = 0,
$1258 = 0,
$1259 = 0,
$126 = 0,
$1260 = 0,
$1261 = 0,
$1262 = 0,
$1263 = 0;
var $1264 = 0,
$1265 = 0,
$1266 = 0,
$1267 = 0,
$1268 = 0,
$1269 = 0,
$127 = 0,
$1270 = 0,
$1271 = 0,
$1272 = 0,
$1273 = 0,
$1274 = 0,
$1275 = 0,
$1276 = 0,
$1277 = 0,
$1278 = 0,
$1279 = 0,
$128 = 0,
$1280 = 0,
$1281 = 0;
var $1282 = 0,
$1283 = 0,
$1284 = 0,
$1285 = 0,
$1286 = 0,
$1287 = 0,
$1288 = 0,
$1289 = 0,
$129 = 0,
$1290 = 0,
$1291 = 0,
$1292 = 0,
$1293 = 0,
$1294 = 0,
$1295 = 0,
$1296 = 0,
$1297 = 0,
$1298 = 0,
$1299 = 0,
$13 = 0;
var $130 = 0,
$1300 = 0,
$1301 = 0,
$1302 = 0,
$1303 = 0,
$1304 = 0,
$1305 = 0,
$1306 = 0,
$1307 = 0,
$1308 = 0,
$1309 = 0,
$131 = 0,
$1310 = 0,
$1311 = 0,
$1312 = 0,
$1313 = 0,
$1314 = 0,
$1315 = 0,
$1316 = 0,
$1317 = 0;
var $1318 = 0,
$1319 = 0,
$132 = 0,
$1320 = 0,
$1321 = 0,
$1322 = 0,
$1323 = 0,
$1324 = 0,
$1325 = 0,
$1326 = 0,
$1327 = 0,
$1328 = 0,
$1329 = 0,
$133 = 0,
$1330 = 0,
$1331 = 0,
$1332 = 0,
$1333 = 0,
$1334 = 0,
$1335 = 0;
var $1336 = 0,
$1337 = 0,
$1338 = 0,
$1339 = 0,
$134 = 0,
$1340 = 0,
$1341 = 0,
$1342 = 0,
$1343 = 0,
$1344 = 0,
$1345 = 0,
$1346 = 0,
$1347 = 0,
$1348 = 0,
$1349 = 0,
$135 = 0,
$1350 = 0,
$1351 = 0,
$1352 = 0,
$1353 = 0;
var $1354 = 0,
$1355 = 0,
$1356 = 0,
$1357 = 0,
$1358 = 0,
$1359 = 0,
$136 = 0,
$1360 = 0,
$1361 = 0,
$1362 = 0,
$1363 = 0,
$1364 = 0,
$1365 = 0,
$1366 = 0,
$1367 = 0,
$1368 = 0,
$1369 = 0,
$137 = 0,
$1370 = 0,
$1371 = 0;
var $1372 = 0,
$1373 = 0,
$1374 = 0,
$1375 = 0,
$1376 = 0,
$1377 = 0,
$1378 = 0,
$1379 = 0,
$138 = 0,
$1380 = 0,
$1381 = 0,
$1382 = 0,
$1383 = 0,
$1384 = 0,
$1385 = 0,
$1386 = 0,
$1387 = 0,
$1388 = 0,
$1389 = 0,
$139 = 0;
var $1390 = 0,
$1391 = 0,
$1392 = 0,
$1393 = 0,
$1394 = 0,
$1395 = 0,
$1396 = 0,
$1397 = 0,
$1398 = 0,
$1399 = 0,
$14 = 0,
$140 = 0,
$1400 = 0,
$1401 = 0,
$1402 = 0,
$1403 = 0,
$1404 = 0,
$1405 = 0,
$1406 = 0,
$1407 = 0;
var $1408 = 0,
$1409 = 0,
$141 = 0,
$1410 = 0,
$1411 = 0,
$1412 = 0,
$1413 = 0,
$1414 = 0,
$1415 = 0,
$1416 = 0,
$1417 = 0,
$1418 = 0,
$1419 = 0,
$142 = 0,
$1420 = 0,
$1421 = 0,
$1422 = 0,
$1423 = 0,
$1424 = 0,
$1425 = 0;
var $1426 = 0,
$1427 = 0,
$1428 = 0,
$1429 = 0,
$143 = 0,
$1430 = 0,
$1431 = 0,
$1432 = 0,
$1433 = 0,
$1434 = 0,
$1435 = 0,
$1436 = 0,
$1437 = 0,
$1438 = 0,
$1439 = 0,
$144 = 0,
$1440 = 0,
$1441 = 0,
$1442 = 0,
$1443 = 0;
var $1444 = 0,
$1445 = 0,
$1446 = 0,
$1447 = 0,
$1448 = 0,
$1449 = 0,
$145 = 0,
$1450 = 0,
$1451 = 0,
$1452 = 0,
$1453 = 0,
$1454 = 0,
$1455 = 0,
$1456 = 0,
$1457 = 0,
$1458 = 0,
$1459 = 0,
$146 = 0,
$1460 = 0,
$1461 = 0;
var $1462 = 0,
$1463 = 0,
$1464 = 0,
$1465 = 0,
$1466 = 0,
$1467 = 0,
$1468 = 0,
$1469 = 0,
$147 = 0,
$1470 = 0,
$1471 = 0,
$1472 = 0,
$1473 = 0,
$1474 = 0,
$1475 = 0,
$1476 = 0,
$1477 = 0,
$1478 = 0,
$1479 = 0,
$148 = 0;
var $1480 = 0,
$1481 = 0,
$1482 = 0,
$1483 = 0,
$1484 = 0,
$1485 = 0,
$1486 = 0,
$1487 = 0,
$1488 = 0,
$1489 = 0,
$149 = 0,
$1490 = 0,
$1491 = 0,
$1492 = 0,
$1493 = 0,
$1494 = 0,
$1495 = 0,
$1496 = 0,
$1497 = 0,
$1498 = 0;
var $1499 = 0,
$15 = 0,
$150 = 0,
$1500 = 0,
$1501 = 0,
$1502 = 0,
$1503 = 0,
$1504 = 0,
$1505 = 0,
$1506 = 0,
$1507 = 0,
$1508 = 0,
$1509 = 0,
$151 = 0,
$1510 = 0,
$1511 = 0,
$1512 = 0,
$1513 = 0,
$1514 = 0,
$1515 = 0;
var $1516 = 0,
$1517 = 0,
$1518 = 0,
$1519 = 0,
$152 = 0,
$1520 = 0,
$1521 = 0,
$1522 = 0,
$1523 = 0,
$1524 = 0,
$1525 = 0,
$1526 = 0,
$1527 = 0,
$1528 = 0,
$1529 = 0,
$153 = 0,
$1530 = 0,
$1531 = 0,
$1532 = 0,
$1533 = 0;
var $1534 = 0,
$1535 = 0,
$1536 = 0,
$1537 = 0,
$1538 = 0,
$1539 = 0,
$154 = 0,
$1540 = 0,
$1541 = 0,
$1542 = 0,
$1543 = 0,
$1544 = 0,
$1545 = 0,
$1546 = 0,
$1547 = 0,
$1548 = 0,
$1549 = 0,
$155 = 0,
$1550 = 0,
$1551 = 0;
var $1552 = 0,
$1553 = 0,
$1554 = 0,
$1555 = 0,
$1556 = 0,
$1557 = 0,
$1558 = 0,
$1559 = 0,
$156 = 0,
$1560 = 0,
$1561 = 0,
$1562 = 0,
$1563 = 0,
$1564 = 0,
$1565 = 0,
$1566 = 0,
$1567 = 0,
$1568 = 0,
$1569 = 0,
$157 = 0;
var $1570 = 0,
$1571 = 0,
$1572 = 0,
$1573 = 0,
$1574 = 0,
$1575 = 0,
$1576 = 0,
$1577 = 0,
$1578 = 0,
$1579 = 0,
$158 = 0,
$1580 = 0,
$1581 = 0,
$1582 = 0,
$1583 = 0,
$1584 = 0,
$1585 = 0,
$1586 = 0,
$1587 = 0,
$1588 = 0;
var $1589 = 0,
$159 = 0,
$1590 = 0,
$1591 = 0,
$1592 = 0,
$1593 = 0,
$1594 = 0,
$1595 = 0,
$1596 = 0,
$1597 = 0,
$1598 = 0,
$1599 = 0,
$16 = 0,
$160 = 0,
$1600 = 0,
$1601 = 0,
$1602 = 0,
$1603 = 0,
$1604 = 0,
$1605 = 0;
var $1606 = 0,
$1607 = 0,
$1608 = 0,
$1609 = 0,
$161 = 0,
$1610 = 0,
$1611 = 0,
$1612 = 0,
$1613 = 0,
$1614 = 0,
$1615 = 0,
$1616 = 0,
$1617 = 0,
$1618 = 0,
$1619 = 0,
$162 = 0,
$1620 = 0,
$1621 = 0,
$1622 = 0,
$1623 = 0;
var $1624 = 0,
$1625 = 0,
$1626 = 0,
$1627 = 0,
$1628 = 0,
$1629 = 0,
$163 = 0,
$1630 = 0,
$1631 = 0,
$1632 = 0,
$1633 = 0,
$1634 = 0,
$1635 = 0,
$1636 = 0,
$1637 = 0,
$1638 = 0,
$1639 = 0,
$164 = 0,
$1640 = 0,
$1641 = 0;
var $1642 = 0,
$1643 = 0,
$1644 = 0,
$1645 = 0,
$1646 = 0,
$1647 = 0,
$1648 = 0,
$1649 = 0,
$165 = 0,
$1650 = 0,
$1651 = 0,
$1652 = 0,
$1653 = 0,
$1654 = 0,
$1655 = 0,
$1656 = 0,
$1657 = 0,
$1658 = 0,
$1659 = 0,
$166 = 0;
var $1660 = 0,
$1661 = 0,
$1662 = 0,
$1663 = 0,
$1664 = 0,
$1665 = 0,
$1666 = 0,
$1667 = 0,
$1668 = 0,
$1669 = 0,
$167 = 0,
$1670 = 0,
$1671 = 0,
$1672 = 0,
$1673 = 0,
$1674 = 0,
$1675 = 0,
$1676 = 0,
$1677 = 0,
$1678 = 0;
var $1679 = 0,
$168 = 0,
$1680 = 0,
$1681 = 0,
$1682 = 0,
$1683 = 0,
$1684 = 0,
$1685 = 0,
$1686 = 0,
$1687 = 0,
$1688 = 0,
$1689 = 0,
$169 = 0,
$1690 = 0,
$1691 = 0,
$1692 = 0,
$1693 = 0,
$17 = 0,
$170 = 0,
$171 = 0;
var $172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0,
$189 = 0,
$19 = 0;
var $190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0,
$206 = 0,
$207 = 0;
var $208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0,
$224 = 0,
$225 = 0;
var $226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0,
$242 = 0,
$243 = 0;
var $244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0,
$260 = 0,
$261 = 0;
var $262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0,
$279 = 0,
$28 = 0;
var $280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0,
$297 = 0,
$298 = 0;
var $299 = 0,
$3 = 0,
$30 = 0,
$300 = 0,
$301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0,
$306 = 0,
$307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0,
$313 = 0,
$314 = 0,
$315 = 0;
var $316 = 0,
$317 = 0,
$318 = 0,
$319 = 0,
$32 = 0,
$320 = 0,
$321 = 0,
$322 = 0,
$323 = 0,
$324 = 0,
$325 = 0,
$326 = 0,
$327 = 0,
$328 = 0,
$329 = 0,
$33 = 0,
$330 = 0,
$331 = 0,
$332 = 0,
$333 = 0;
var $334 = 0,
$335 = 0,
$336 = 0,
$337 = 0,
$338 = 0,
$339 = 0,
$34 = 0,
$340 = 0,
$341 = 0,
$342 = 0,
$343 = 0,
$344 = 0,
$345 = 0,
$346 = 0,
$347 = 0,
$348 = 0,
$349 = 0,
$35 = 0,
$350 = 0,
$351 = 0;
var $352 = 0,
$353 = 0,
$354 = 0,
$355 = 0,
$356 = 0,
$357 = 0,
$358 = 0,
$359 = 0,
$36 = 0,
$360 = 0,
$361 = 0,
$362 = 0,
$363 = 0,
$364 = 0,
$365 = 0,
$366 = 0,
$367 = 0,
$368 = 0,
$369 = 0,
$37 = 0;
var $370 = 0,
$371 = 0,
$372 = 0,
$373 = 0,
$374 = 0,
$375 = 0,
$376 = 0,
$377 = 0,
$378 = 0,
$379 = 0,
$38 = 0,
$380 = 0,
$381 = 0,
$382 = 0,
$383 = 0,
$384 = 0,
$385 = 0,
$386 = 0,
$387 = 0,
$388 = 0;
var $389 = 0,
$39 = 0,
$390 = 0,
$391 = 0,
$392 = 0,
$393 = 0,
$394 = 0,
$395 = 0,
$396 = 0,
$397 = 0,
$398 = 0,
$399 = 0,
$4 = 0,
$40 = 0,
$400 = 0,
$401 = 0,
$402 = 0,
$403 = 0,
$404 = 0,
$405 = 0;
var $406 = 0,
$407 = 0,
$408 = 0,
$409 = 0,
$41 = 0,
$410 = 0,
$411 = 0,
$412 = 0,
$413 = 0,
$414 = 0,
$415 = 0,
$416 = 0,
$417 = 0,
$418 = 0,
$419 = 0,
$42 = 0,
$420 = 0,
$421 = 0,
$422 = 0,
$423 = 0;
var $424 = 0,
$425 = 0,
$426 = 0,
$427 = 0,
$428 = 0,
$429 = 0,
$43 = 0,
$430 = 0,
$431 = 0,
$432 = 0,
$433 = 0,
$434 = 0,
$435 = 0,
$436 = 0,
$437 = 0,
$438 = 0,
$439 = 0,
$44 = 0,
$440 = 0,
$441 = 0;
var $442 = 0,
$443 = 0,
$444 = 0,
$445 = 0,
$446 = 0,
$447 = 0,
$448 = 0,
$449 = 0,
$45 = 0,
$450 = 0,
$451 = 0,
$452 = 0,
$453 = 0,
$454 = 0,
$455 = 0,
$456 = 0,
$457 = 0,
$458 = 0,
$459 = 0,
$46 = 0;
var $460 = 0,
$461 = 0,
$462 = 0,
$463 = 0,
$464 = 0,
$465 = 0,
$466 = 0,
$467 = 0,
$468 = 0,
$469 = 0,
$47 = 0,
$470 = 0,
$471 = 0,
$472 = 0,
$473 = 0,
$474 = 0,
$475 = 0,
$476 = 0,
$477 = 0,
$478 = 0;
var $479 = 0,
$48 = 0,
$480 = 0,
$481 = 0,
$482 = 0,
$483 = 0,
$484 = 0,
$485 = 0,
$486 = 0,
$487 = 0,
$488 = 0,
$489 = 0,
$49 = 0,
$490 = 0,
$491 = 0,
$492 = 0,
$493 = 0,
$494 = 0,
$495 = 0,
$496 = 0;
var $497 = 0,
$498 = 0,
$499 = 0,
$5 = 0,
$50 = 0,
$500 = 0,
$501 = 0,
$502 = 0,
$503 = 0,
$504 = 0,
$505 = 0,
$506 = 0,
$507 = 0,
$508 = 0,
$509 = 0,
$51 = 0,
$510 = 0,
$511 = 0,
$512 = 0,
$513 = 0;
var $514 = 0,
$515 = 0,
$516 = 0,
$517 = 0,
$518 = 0,
$519 = 0,
$52 = 0,
$520 = 0,
$521 = 0,
$522 = 0,
$523 = 0,
$524 = 0,
$525 = 0,
$526 = 0,
$527 = 0,
$528 = 0,
$529 = 0,
$53 = 0,
$530 = 0,
$531 = 0;
var $532 = 0,
$533 = 0,
$534 = 0,
$535 = 0,
$536 = 0,
$537 = 0,
$538 = 0,
$539 = 0,
$54 = 0,
$540 = 0,
$541 = 0,
$542 = 0,
$543 = 0,
$544 = 0,
$545 = 0,
$546 = 0,
$547 = 0,
$548 = 0,
$549 = 0,
$55 = 0;
var $550 = 0,
$551 = 0,
$552 = 0,
$553 = 0,
$554 = 0,
$555 = 0,
$556 = 0,
$557 = 0,
$558 = 0,
$559 = 0,
$56 = 0,
$560 = 0,
$561 = 0,
$562 = 0,
$563 = 0,
$564 = 0,
$565 = 0,
$566 = 0,
$567 = 0,
$568 = 0;
var $569 = 0,
$57 = 0,
$570 = 0,
$571 = 0,
$572 = 0,
$573 = 0,
$574 = 0,
$575 = 0,
$576 = 0,
$577 = 0,
$578 = 0,
$579 = 0,
$58 = 0,
$580 = 0,
$581 = 0,
$582 = 0,
$583 = 0,
$584 = 0,
$585 = 0,
$586 = 0;
var $587 = 0,
$588 = 0,
$589 = 0,
$59 = 0,
$590 = 0,
$591 = 0,
$592 = 0,
$593 = 0,
$594 = 0,
$595 = 0,
$596 = 0,
$597 = 0,
$598 = 0,
$599 = 0,
$6 = 0,
$60 = 0,
$600 = 0,
$601 = 0,
$602 = 0,
$603 = 0;
var $604 = 0,
$605 = 0,
$606 = 0,
$607 = 0,
$608 = 0,
$609 = 0,
$61 = 0,
$610 = 0,
$611 = 0,
$612 = 0,
$613 = 0,
$614 = 0,
$615 = 0,
$616 = 0,
$617 = 0,
$618 = 0,
$619 = 0,
$62 = 0,
$620 = 0,
$621 = 0;
var $622 = 0,
$623 = 0,
$624 = 0,
$625 = 0,
$626 = 0,
$627 = 0,
$628 = 0,
$629 = 0,
$63 = 0,
$630 = 0,
$631 = 0,
$632 = 0,
$633 = 0,
$634 = 0,
$635 = 0,
$636 = 0,
$637 = 0,
$638 = 0,
$639 = 0,
$64 = 0;
var $640 = 0,
$641 = 0,
$642 = 0,
$643 = 0,
$644 = 0,
$645 = 0,
$646 = 0,
$647 = 0,
$648 = 0,
$649 = 0,
$65 = 0,
$650 = 0,
$651 = 0,
$652 = 0,
$653 = 0,
$654 = 0,
$655 = 0,
$656 = 0,
$657 = 0,
$658 = 0;
var $659 = 0,
$66 = 0,
$660 = 0,
$661 = 0,
$662 = 0,
$663 = 0,
$664 = 0,
$665 = 0,
$666 = 0,
$667 = 0,
$668 = 0,
$669 = 0,
$67 = 0,
$670 = 0,
$671 = 0,
$672 = 0,
$673 = 0,
$674 = 0,
$675 = 0,
$676 = 0;
var $677 = 0,
$678 = 0,
$679 = 0,
$68 = 0,
$680 = 0,
$681 = 0,
$682 = 0,
$683 = 0,
$684 = 0,
$685 = 0,
$686 = 0,
$687 = 0,
$688 = 0,
$689 = 0,
$69 = 0,
$690 = 0,
$691 = 0,
$692 = 0,
$693 = 0,
$694 = 0;
var $695 = 0,
$696 = 0,
$697 = 0,
$698 = 0,
$699 = 0,
$7 = 0,
$70 = 0,
$700 = 0,
$701 = 0,
$702 = 0,
$703 = 0,
$704 = 0,
$705 = 0,
$706 = 0,
$707 = 0,
$708 = 0,
$709 = 0,
$71 = 0,
$710 = 0,
$711 = 0;
var $712 = 0,
$713 = 0,
$714 = 0,
$715 = 0,
$716 = 0,
$717 = 0,
$718 = 0,
$719 = 0,
$72 = 0,
$720 = 0,
$721 = 0,
$722 = 0,
$723 = 0,
$724 = 0,
$725 = 0,
$726 = 0,
$727 = 0,
$728 = 0,
$729 = 0,
$73 = 0;
var $730 = 0,
$731 = 0,
$732 = 0,
$733 = 0,
$734 = 0,
$735 = 0,
$736 = 0,
$737 = 0,
$738 = 0,
$739 = 0,
$74 = 0,
$740 = 0,
$741 = 0,
$742 = 0,
$743 = 0,
$744 = 0,
$745 = 0,
$746 = 0,
$747 = 0,
$748 = 0;
var $749 = 0,
$75 = 0,
$750 = 0,
$751 = 0,
$752 = 0,
$753 = 0,
$754 = 0,
$755 = 0,
$756 = 0,
$757 = 0,
$758 = 0,
$759 = 0,
$76 = 0,
$760 = 0,
$761 = 0,
$762 = 0,
$763 = 0,
$764 = 0,
$765 = 0,
$766 = 0;
var $767 = 0,
$768 = 0,
$769 = 0,
$77 = 0,
$770 = 0,
$771 = 0,
$772 = 0,
$773 = 0,
$774 = 0,
$775 = 0,
$776 = 0,
$777 = 0,
$778 = 0,
$779 = 0,
$78 = 0,
$780 = 0,
$781 = 0,
$782 = 0,
$783 = 0,
$784 = 0;
var $785 = 0,
$786 = 0,
$787 = 0,
$788 = 0,
$789 = 0,
$79 = 0,
$790 = 0,
$791 = 0,
$792 = 0,
$793 = 0,
$794 = 0,
$795 = 0,
$796 = 0,
$797 = 0,
$798 = 0,
$799 = 0,
$8 = 0,
$80 = 0,
$800 = 0,
$801 = 0;
var $802 = 0,
$803 = 0,
$804 = 0,
$805 = 0,
$806 = 0,
$807 = 0,
$808 = 0,
$809 = 0,
$81 = 0,
$810 = 0,
$811 = 0,
$812 = 0,
$813 = 0,
$814 = 0,
$815 = 0,
$816 = 0,
$817 = 0,
$818 = 0,
$819 = 0,
$82 = 0;
var $820 = 0,
$821 = 0,
$822 = 0,
$823 = 0,
$824 = 0,
$825 = 0,
$826 = 0,
$827 = 0,
$828 = 0,
$829 = 0,
$83 = 0,
$830 = 0,
$831 = 0,
$832 = 0,
$833 = 0,
$834 = 0,
$835 = 0,
$836 = 0,
$837 = 0,
$838 = 0;
var $839 = 0,
$84 = 0,
$840 = 0,
$841 = 0,
$842 = 0,
$843 = 0,
$844 = 0,
$845 = 0,
$846 = 0,
$847 = 0,
$848 = 0,
$849 = 0,
$85 = 0,
$850 = 0,
$851 = 0,
$852 = 0,
$853 = 0,
$854 = 0,
$855 = 0,
$856 = 0;
var $857 = 0,
$858 = 0,
$859 = 0,
$86 = 0,
$860 = 0,
$861 = 0,
$862 = 0,
$863 = 0,
$864 = 0,
$865 = 0,
$866 = 0,
$867 = 0,
$868 = 0,
$869 = 0,
$87 = 0,
$870 = 0,
$871 = 0,
$872 = 0,
$873 = 0,
$874 = 0;
var $875 = 0,
$876 = 0,
$877 = 0,
$878 = 0,
$879 = 0,
$88 = 0,
$880 = 0,
$881 = 0,
$882 = 0,
$883 = 0,
$884 = 0,
$885 = 0,
$886 = 0,
$887 = 0,
$888 = 0,
$889 = 0,
$89 = 0,
$890 = 0,
$891 = 0,
$892 = 0;
var $893 = 0,
$894 = 0,
$895 = 0,
$896 = 0,
$897 = 0,
$898 = 0,
$899 = 0,
$9 = 0,
$90 = 0,
$900 = 0,
$901 = 0,
$902 = 0,
$903 = 0,
$904 = 0,
$905 = 0,
$906 = 0,
$907 = 0,
$908 = 0,
$909 = 0,
$91 = 0;
var $910 = 0,
$911 = 0,
$912 = 0,
$913 = 0,
$914 = 0,
$915 = 0,
$916 = 0,
$917 = 0,
$918 = 0,
$919 = 0,
$92 = 0,
$920 = 0,
$921 = 0,
$922 = 0,
$923 = 0,
$924 = 0,
$925 = 0,
$926 = 0,
$927 = 0,
$928 = 0;
var $929 = 0,
$93 = 0,
$930 = 0,
$931 = 0,
$932 = 0,
$933 = 0,
$934 = 0,
$935 = 0,
$936 = 0,
$937 = 0,
$938 = 0,
$939 = 0,
$94 = 0,
$940 = 0,
$941 = 0,
$942 = 0,
$943 = 0,
$944 = 0,
$945 = 0,
$946 = 0;
var $947 = 0,
$948 = 0,
$949 = 0,
$95 = 0,
$950 = 0,
$951 = 0,
$952 = 0,
$953 = 0,
$954 = 0,
$955 = 0,
$956 = 0,
$957 = 0,
$958 = 0,
$959 = 0,
$96 = 0,
$960 = 0,
$961 = 0,
$962 = 0,
$963 = 0,
$964 = 0;
var $965 = 0,
$966 = 0,
$967 = 0,
$968 = 0,
$969 = 0,
$97 = 0,
$970 = 0,
$971 = 0,
$972 = 0,
$973 = 0,
$974 = 0,
$975 = 0,
$976 = 0,
$977 = 0,
$978 = 0,
$979 = 0,
$98 = 0,
$980 = 0,
$981 = 0,
$982 = 0;
var $983 = 0,
$984 = 0,
$985 = 0,
$986 = 0,
$987 = 0,
$988 = 0,
$989 = 0,
$99 = 0,
$990 = 0,
$991 = 0,
$992 = 0,
$993 = 0,
$994 = 0,
$995 = 0,
$996 = 0,
$997 = 0,
$998 = 0,
$999 = 0,
$_l$idx$val$i$i$i = 0,
$_l$idx$val$i$i54$i = 0;
var $_l$idx1$val$i$i$i = 0,
$_l$idx1$val$i$i56$i = 0,
$_l$val$i$i$i = 0,
$_l$val$i$i52$i = 0,
$aff$i = 0,
$b$0$i$i = 0,
$b$0$ph$i$i = 0,
$b$1$i$i = 0,
$bbox$i = 0,
$blastfit$0$i$i = 0,
$blastfit$0$ph$i$i = 0,
$blastfit$2$i$i = 0,
$brx$2$i$i = 0,
$bry$2$i$i = 0,
$bu$0$i$i = 0,
$bu$0$ph$i$i = 0,
$bu$1$i$i = 0,
$bu$3$i$i = 0,
$bu$4$i$i = 0,
$bv$0$i$i = 0;
var $bv$0$ph$i$i = 0,
$bv$2$i$i = 0,
$bx$0$i$i = 0,
$bx$0$ph$i$i = 0,
$bx$2$i$i = 0,
$by$0$i$i = 0,
$by$0$ph$i$i = 0,
$by$2$i$i = 0,
$c = 0,
$cb$0$i$i = 0,
$cb$0$ph$i$i = 0,
$cb$1$i$i = 0,
$cell$i$i = 0,
$ci$i = 0,
$cr$0$ph$i$i = 0,
$cr$1$i$i = 0,
$d$0$i$i$i = 0,
$dbv$i$i = 0,
$dbxi$0$i$i = 0,
$dbxi$0$ph$i$i = 0;
var $dbxi$3$i$i = 0,
$dbyi$0$i$i = 0,
$dbyi$0$ph$i$i = 0,
$dbyi$3$i$i = 0,
$dl$i = 0,
$dl_version$0$i = 0,
$dru$i$i = 0,
$drxi$0$ph$i$i = 0,
$drxi$3$i$i = 0,
$dryi$0$ph$i$i = 0,
$dryi$3$i$i = 0,
$exitcond = 0,
$exitcond$i = 0,
$exitcond$i$i = 0,
$exitcond$i51$i = 0,
$exitcond90$i = 0,
$exitcond93 = 0,
$exitcond94 = 0,
$hom$i = 0,
$i$0$i0$0$1$i = 0;
var $i$0$i0$0$i = 0,
$i$01$i$i = 0,
$i$01$i50$i = 0,
$i$0121$i$i = 0,
$i$078 = 0,
$i$1$i = 0,
$i$1$lcssa = 0,
$i$1120$i$i = 0,
$i$172 = 0,
$i$2$_ncenters = 0,
$i$2$lcssa = 0,
$i$2108$i$i = 0,
$i$261 = 0,
$i$4 = 0,
$ispos$i = 0,
$ispos$i$i = 0,
$ispos$i$i$i = 0,
$ispos$i34$i = 0,
$ispos10$i = 0,
$ispos10$i$i = 0;
var $ispos11$i$i$i = 0,
$ispos12$i = 0,
$ispos121$i$i$i = 0,
$ispos135$i$i$i = 0,
$ispos139$i$i$i = 0,
$ispos14$i = 0,
$ispos14$i$i = 0,
$ispos15$i$i$i = 0,
$ispos2$i = 0,
$ispos20$i$i = 0,
$ispos21$i$i$i = 0,
$ispos23$i$i$i = 0,
$ispos24$i$i = 0,
$ispos27$i$i$i = 0,
$ispos3$i$i$i = 0,
$ispos30$i$i = 0,
$ispos34$i$i = 0,
$ispos4$i = 0,
$ispos4$i$i = 0,
$ispos43$i$i$i = 0;
var $ispos6$i = 0,
$ispos77$i$i$i = 0,
$ispos8$i = 0,
$ispos9$i$i$i = 0,
$ispos91$i$i$i = 0,
$ispos95$i$i$i = 0,
$j$0 = 0,
$j$0$in71 = 0,
$j$069 = 0,
$j$074 = 0,
$j$1$_ncenters = 0,
$j$1$lcssa = 0,
$j$157 = 0,
$j$3 = 0,
$k$0$_ncenters = 0,
$k$059 = 0,
$k$2 = 0,
$l$147 = 0,
$l$249 = 0,
$l$354 = 0;
var $l$i$i = 0,
$nb$0$i$i = 0,
$nb$0$ph$i$i = 0,
$nb$2$i$i = 0,
$nbempty$0$i$i = 0,
$nbempty$0$ph$i$i = 0,
$nbempty$1$i$i = 0,
$nbempty$2$i$i = 0,
$neg$i = 0,
$neg$i$i = 0,
$neg$i$i$i = 0,
$neg$i35$i = 0,
$neg10$i$i$i = 0,
$neg11$i = 0,
$neg11$i$i = 0,
$neg12$i$i$i = 0,
$neg122$i$i$i = 0,
$neg13$i = 0,
$neg136$i$i$i = 0,
$neg140$i$i$i = 0;
var $neg15$i = 0,
$neg15$i$i = 0,
$neg16$i$i$i = 0,
$neg21$i$i = 0,
$neg22$i$i$i = 0,
$neg24$i$i$i = 0,
$neg25$i$i = 0,
$neg28$i$i$i = 0,
$neg3$i = 0,
$neg31$i$i = 0,
$neg35$i$i = 0,
$neg4$i$i$i = 0,
$neg44$i$i$i = 0,
$neg5$i = 0,
$neg5$i$i = 0,
$neg7$i = 0,
$neg78$i$i$i = 0,
$neg9$i = 0,
$neg92$i$i$i = 0,
$neg96$i$i$i = 0;
var $nfailures$079 = 0,
$nfailures$1$lcssa = 0,
$nfailures$173 = 0,
$nfailures$2$lcssa = 0,
$nfailures$263 = 0,
$nfailures$4 = 0,
$ninside$046 = 0,
$ninside$1 = 0,
$ninside$248 = 0,
$ninside$3 = 0,
$not$$i$i = 0,
$not$98$i$i = 0,
$notlhs$i$i$i = 0,
$notlhs$i76$i$i = 0,
$notrhs$i$i$i = 0,
$notrhs$i77$i$i = 0,
$nr$0$ph$i$i = 0,
$nr$2$i$i = 0,
$nrempty$0$ph$i$i = 0,
$nrempty$1$i$i = 0;
var $nrempty$2$i$i = 0,
$or$cond = 0,
$or$cond$i = 0,
$or$cond$i$i = 0,
$or$cond$not$i$i$i = 0,
$or$cond$not$i78$i$i = 0,
$or$cond1$i$i$i = 0,
$or$cond1$i79$i$i = 0,
$or$cond17$i = 0,
$or$cond2 = 0,
$or$cond2$not$i$i$i = 0,
$or$cond2$not$i81$i$i = 0,
$or$cond256 = 0,
$or$cond3$i$i$i = 0,
$or$cond3$i82$i$i = 0,
$or$cond4$not$i$i$i = 0,
$or$cond4$not$i84$i$i = 0,
$or$cond43$i$i = 0,
$or$cond45$i$i = 0,
$or$cond5$i$i$i = 0;
var $or$cond5$i85$i$i = 0,
$or$cond5$not$i$i$i = 0,
$or$cond5$not$i86$i$i = 0,
$or$cond6$i$i$i = 0,
$or$cond6$i87$i$i = 0,
$or$cond70 = 0,
$p3$i$i = 0,
$qrdata = 0,
$r$0$ph$i$i = 0,
$r$1$i$i = 0,
$ret$0$i$i = 0,
$ret$1$i$i = 0,
$rlastfit$0$ph$i$i = 0,
$rlastfit$2$i$i = 0,
$ru$0$ph$i$i = 0,
$ru$2$i$i = 0,
$rv$0$ph$i$i = 0,
$rv$1$i$i = 0,
$rv$3$i$i = 0,
$rv$4$i$i = 0;
var $rx$0$ph$i$i = 0,
$rx$2$i$i = 0,
$ry$0$ph$i$i = 0,
$ry$2$i$i = 0,
$storemerge63$i = 0,
$storemerge64$i = 0,
$ul$i = 0,
$ur$i = 0,
$ur_version$0$i = 0,
$ur_version$1$i = 0,
$w$0$i$i = 0,
$w$0$i38$i = 0,
$w$0$i43$i = 0,
$x$0$i$i = 0,
$x$0$i$i$i = 0,
$x$0$i36$i = 0,
$x$0$i41$i = 0,
$y$0$i$i = 0,
$y$0$i$i$i = 0,
$y$0$i37$i = 0;
var $y$0$i42$i = 0,
dest = 0,
label = 0,
sp = 0,
src = 0,
stop = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 592) | 0;
$l$i$i = (sp + 544) | 0;
$dru$i$i = (sp + 536) | 0;
$dbv$i$i = (sp + 532) | 0;
$cell$i$i = (sp + 480) | 0;
$p3$i$i = (sp + 472) | 0;
$ci$i = (sp + 440) | 0;
$aff$i = (sp + 392) | 0;
$hom$i = (sp + 324) | 0;
$ul$i = (sp + 248) | 0;
$ur$i = (sp + 172) | 0;
$dl$i = (sp + 96) | 0;
$bbox$i = (sp + 64) | 0;
$c = (sp + 48) | 0;
$qrdata = sp;
$0 = _calloc($_ncenters, 1) | 0;
$1 = Math_imul($_height, $_width) | 0;
$2 = $1 >> 9;
$3 = ($2 | 0) > 8192;
$4 = $3 ? $2 : 8192;
$5 = ($_ncenters | 0) > 0;
if (!$5) {
_free($0);
STACKTOP = sp;
return;
}
$6 = ($c + 4) | 0;
$7 = ($c + 8) | 0;
$8 = ($ci$i + 12) | 0;
$9 = ($ci$i + 24) | 0;
$10 = ($ci$i + 4) | 0;
$11 = ($ci$i + 16) | 0;
$12 = ($ci$i + 8) | 0;
$13 = ($ci$i + 20) | 0;
$14 = ($ul$i + 72) | 0;
$15 = ($ur$i + 72) | 0;
$16 = ($dl$i + 72) | 0;
$17 = ($_height | 0) > ($_width | 0);
$18 = ($_height - $_width) | 0;
$$neg$i = $17 ? $18 : 0;
$19 = ($_width + -1) | 0;
$20 = ($19 + $$neg$i) | 0;
$21 = ($aff$i + 4) | 0;
$22 = ($aff$i + 8) | 0;
$23 = ($aff$i + 12) | 0;
$24 = ($aff$i + 16) | 0;
$25 = ($aff$i + 20) | 0;
$26 = ($aff$i + 24) | 0;
$27 = ($aff$i + 28) | 0;
$28 = ($aff$i + 32) | 0;
$29 = ($aff$i + 36) | 0;
$30 = ($aff$i + 40) | 0;
$31 = ($aff$i + 44) | 0;
$32 = ($ur$i + 64) | 0;
$33 = ($ur$i + 68) | 0;
$34 = ($dl$i + 64) | 0;
$35 = ($dl$i + 68) | 0;
$36 = ($ur$i + 12) | 0;
$37 = ($dl$i + 8) | 0;
$38 = ($ul$i + 64) | 0;
$39 = ($ul$i + 68) | 0;
$40 = ($ul$i + 12) | 0;
$41 = ($ul$i + 8) | 0;
$42 = ($_reader + 768) | 0;
$$idx66$i$i = ($l$i$i + 4) | 0;
$$idx67$i$i = ($l$i$i + 8) | 0;
$43 = ($l$i$i + 24) | 0;
$$idx60$i$i = ($l$i$i + 28) | 0;
$$idx61$i$i = ($l$i$i + 32) | 0;
$44 = ($ur$i + 4) | 0;
$45 = ($l$i$i + 12) | 0;
$46 = ($ur$i + 52) | 0;
$47 = ($l$i$i + 36) | 0;
$48 = ($dl$i + 60) | 0;
$49 = ($dl$i + 4) | 0;
$50 = ($ur$i + 20) | 0;
$51 = ($dl$i + 28) | 0;
$$idx69$i$i = ($l$i$i + 40) | 0;
$$idx71$i$i = ($l$i$i + 16) | 0;
$52 = (0 - $_width) | 0;
$53 = $52 << 2;
$54 = $_width << 3;
$55 = (0 - $_height) | 0;
$56 = $55 << 2;
$57 = $_height << 3;
$58 = ($bbox$i + 24) | 0;
$59 = ($bbox$i + 28) | 0;
$60 = ($ur$i + 8) | 0;
$61 = ($dl$i + 12) | 0;
$62 = ($bbox$i + 4) | 0;
$63 = ($bbox$i + 8) | 0;
$64 = ($bbox$i + 12) | 0;
$65 = ($bbox$i + 16) | 0;
$66 = ($bbox$i + 20) | 0;
$67 = ($p3$i$i + 4) | 0;
$68 = ($hom$i + 4) | 0;
$69 = ($hom$i + 56) | 0;
$70 = ($hom$i + 8) | 0;
$71 = ($hom$i + 12) | 0;
$72 = ($hom$i + 60) | 0;
$73 = ($hom$i + 16) | 0;
$74 = ($hom$i + 20) | 0;
$75 = ($hom$i + 48) | 0;
$76 = ($hom$i + 24) | 0;
$77 = ($hom$i + 28) | 0;
$78 = ($hom$i + 32) | 0;
$79 = ($hom$i + 36) | 0;
$80 = ($hom$i + 40) | 0;
$81 = ($hom$i + 44) | 0;
$82 = ($hom$i + 52) | 0;
$83 = ($hom$i + 64) | 0;
$84 = ($qrdata + 16) | 0;
$85 = ($ul$i + 4) | 0;
$86 = ($l$i$i + 44) | 0;
$87 = ($l$i$i + 20) | 0;
$88 = ($_qrlist + 4) | 0;
$89 = ($_qrlist + 8) | 0;
$90 = ($qrdata + 16) | 0;
$91 = ($qrdata + 24) | 0;
$$idx20 = ($qrdata + 20) | 0;
$$idx22 = ($qrdata + 28) | 0;
$92 = ($qrdata + 40) | 0;
$$idx16 = ($qrdata + 44) | 0;
$93 = ($qrdata + 32) | 0;
$$idx10 = ($qrdata + 36) | 0;
$i$078 = 0;
$nfailures$079 = 0;
while (1) {
$j$069 = ($i$078 + 1) | 0;
$94 = ($0 + $i$078) | 0;
$95 = HEAP8[$94 >> 0] | 0;
$96 = ($95 << 24) >> 24 == 0;
$97 = ($j$069 | 0) < ($_ncenters | 0);
$or$cond70 = $96 & $97;
if ($or$cond70) {
$i$172 = $i$078;
$j$0$in71 = $i$078;
$j$074 = $j$069;
$nfailures$173 = $nfailures$079;
while (1) {
$102 = ($j$0$in71 + 2) | 0;
$103 = ($0 + $j$074) | 0;
$104 = HEAP8[$103 >> 0] | 0;
$105 = ($104 << 24) >> 24 == 0;
$106 = ($102 | 0) < ($_ncenters | 0);
$or$cond256 = $105 & $106;
if ($or$cond256) {
$1631 = $103;
$i$261 = $i$172;
$j$157 = $j$074;
$k$059 = $102;
$nfailures$263 = $nfailures$173;
while (1) {
$107 = ($0 + $k$059) | 0;
$108 = HEAP8[$107 >> 0] | 0;
$109 = ($108 << 24) >> 24 == 0;
L12: do {
if ($109) {
$110 = ($_centers + ($i$261 << 4)) | 0;
HEAP32[$c >> 2] = $110;
$111 = ($_centers + ($j$157 << 4)) | 0;
HEAP32[$6 >> 2] = $111;
$112 = ($_centers + ($k$059 << 4)) | 0;
HEAP32[$7 >> 2] = $112;
$$val$i = HEAP32[$110 >> 2] | 0;
$$idx$i = ((($_centers + ($i$261 << 4)) | 0) + 4) | 0;
$$idx$val$i = HEAP32[$$idx$i >> 2] | 0;
$$val18$i = HEAP32[$111 >> 2] | 0;
$$idx19$i = ((($_centers + ($j$157 << 4)) | 0) + 4) | 0;
$$idx19$val$i = HEAP32[$$idx19$i >> 2] | 0;
$$val20$i = HEAP32[$112 >> 2] | 0;
$$idx21$i = ((($_centers + ($k$059 << 4)) | 0) + 4) | 0;
$$idx21$val$i = HEAP32[$$idx21$i >> 2] | 0;
$113 = ($$val18$i - $$val$i) | 0;
$114 = ($$idx21$val$i - $$idx$val$i) | 0;
$115 = Math_imul($114, $113) | 0;
$116 = ($$idx19$val$i - $$idx$val$i) | 0;
$117 = ($$val20$i - $$val$i) | 0;
$118 = Math_imul($117, $116) | 0;
$119 = ($115 | 0) == ($118 | 0);
L14: do {
if (!$119) {
$120 = ($115 - $118) | 0;
HEAP32[$ci$i >> 2] = 0;
HEAP32[$8 >> 2] = 0;
HEAP32[$9 >> 2] = 0;
$$lobit$i = $120 >>> 31;
$121 = ($$lobit$i + 1) | 0;
HEAP32[$10 >> 2] = $121;
HEAP32[$11 >> 2] = $121;
$122 = (2 - $$lobit$i) | 0;
HEAP32[$12 >> 2] = $122;
HEAP32[$13 >> 2] = $122;
$123 = ($$val18$i - $$val20$i) | 0;
$124 = Math_imul($123, $123) | 0;
$125 = ($$idx19$val$i - $$idx21$val$i) | 0;
$126 = Math_imul($125, $125) | 0;
$127 = ($126 + $124) | 0;
$128 = ($c + ($122 << 2)) | 0;
$129 = HEAP32[$128 >> 2] | 0;
$$val22$i = HEAP32[$129 >> 2] | 0;
$$idx23$i = ($129 + 4) | 0;
$$idx23$val$i = HEAP32[$$idx23$i >> 2] | 0;
$130 = ($$val22$i - $$val$i) | 0;
$131 = Math_imul($130, $130) | 0;
$132 = ($$idx23$val$i - $$idx$val$i) | 0;
$133 = Math_imul($132, $132) | 0;
$134 = ($133 + $131) | 0;
$135 = $134 >>> 0 > $127 >>> 0;
$i$0$i0$0$i = $135 & 1;
$$maxd$0$i = $135 ? $134 : $127;
$136 = ($c + ($121 << 2)) | 0;
$137 = HEAP32[$136 >> 2] | 0;
$$val24$1$i = HEAP32[$137 >> 2] | 0;
$$idx25$1$i = ($137 + 4) | 0;
$$idx25$val$1$i = HEAP32[$$idx25$1$i >> 2] | 0;
$138 = ($$val$i - $$val24$1$i) | 0;
$139 = Math_imul($138, $138) | 0;
$140 = ($$idx$val$i - $$idx25$val$1$i) | 0;
$141 = Math_imul($140, $140) | 0;
$142 = ($141 + $139) | 0;
$143 = $142 >>> 0 > $$maxd$0$i >>> 0;
$i$0$i0$0$1$i = $143 ? 2 : $i$0$i0$0$i;
$144 = ($i$0$i0$0$1$i + 3) | 0;
$$0$i = 0;
$i$1$i = $i$0$i0$0$1$i;
while (1) {
$145 = ($i$1$i | 0) < ($144 | 0);
if (!$145) {
break L14;
}
$146 = ($ci$i + ($i$1$i << 2)) | 0;
$147 = HEAP32[$146 >> 2] | 0;
$148 = ($c + ($147 << 2)) | 0;
$149 = HEAP32[$148 >> 2] | 0;
HEAP32[$14 >> 2] = $149;
$150 = ($i$1$i + 1) | 0;
$151 = ($ci$i + ($150 << 2)) | 0;
$152 = HEAP32[$151 >> 2] | 0;
$153 = ($c + ($152 << 2)) | 0;
$154 = HEAP32[$153 >> 2] | 0;
HEAP32[$15 >> 2] = $154;
$155 = ($i$1$i + 2) | 0;
$156 = ($ci$i + ($155 << 2)) | 0;
$157 = HEAP32[$156 >> 2] | 0;
$158 = ($c + ($157 << 2)) | 0;
$159 = HEAP32[$158 >> 2] | 0;
HEAP32[$16 >> 2] = $159;
$160 = _qr_ilog($20) | 0;
$161 = (28 - $160) | 0;
$$val30$i = HEAP32[$154 >> 2] | 0;
$$idx31$i = ($154 + 4) | 0;
$$idx31$val$i = HEAP32[$$idx31$i >> 2] | 0;
$$val32$i = HEAP32[$159 >> 2] | 0;
$$idx33$i = ($159 + 4) | 0;
$$idx33$val$i = HEAP32[$$idx33$i >> 2] | 0;
$162 = HEAP32[$149 >> 2] | 0;
$163 = ($$val30$i - $162) | 0;
$164 = ($$val32$i - $162) | 0;
$165 = ($149 + 4) | 0;
$166 = HEAP32[$165 >> 2] | 0;
$167 = ($$idx31$val$i - $166) | 0;
$168 = ($$idx33$val$i - $166) | 0;
$169 = Math_imul($168, $163) | 0;
$170 = Math_imul($167, $164) | 0;
$171 = ($169 - $170) | 0;
$ispos$i$i = ($171 | 0) > -1;
$neg$i$i = (0 - $171) | 0;
$172 = $ispos$i$i ? $171 : $neg$i$i;
$173 = _qr_ilog($172) | 0;
$174 = $173 >> 1;
$175 = ($174 + -2) | 0;
$176 = _qr_ilog($172) | 0;
$177 = $176 >> 1;
$178 = ($177 + -2) | 0;
$179 = _qr_ilog($172) | 0;
$180 = $179 >> 1;
$181 = ($180 + -2) | 0;
$182 = $181 >> 31;
$183 = $182 & $178;
$184 = ($175 - $183) | 0;
HEAP32[$aff$i >> 2] = $163;
HEAP32[$21 >> 2] = $164;
HEAP32[$22 >> 2] = $167;
HEAP32[$23 >> 2] = $168;
$185 = $168 << $161;
$186 = $171 >> $184;
$187 = $186 >> 1;
$188 = $185 >> 31;
$189 = ($187 + $188) | 0;
$190 = $189 ^ $188;
$191 = ($190 + $185) | 0;
$192 = (($191 | 0) / ($186 | 0)) & -1;
HEAP32[$24 >> 2] = $192;
$193 = (0 - $164) | 0;
$194 = $193 << $161;
$195 = $194 >> 31;
$196 = ($187 + $195) | 0;
$197 = $196 ^ $195;
$198 = ($197 + $194) | 0;
$199 = (($198 | 0) / ($186 | 0)) & -1;
HEAP32[$25 >> 2] = $199;
$200 = (0 - $167) | 0;
$201 = $200 << $161;
$202 = $201 >> 31;
$203 = ($187 + $202) | 0;
$204 = $203 ^ $202;
$205 = ($204 + $201) | 0;
$206 = (($205 | 0) / ($186 | 0)) & -1;
HEAP32[$26 >> 2] = $206;
$207 = $163 << $161;
$208 = $207 >> 31;
$209 = ($187 + $208) | 0;
$210 = $209 ^ $208;
$211 = ($210 + $207) | 0;
$212 = (($211 | 0) / ($186 | 0)) & -1;
HEAP32[$27 >> 2] = $212;
$213 = HEAP32[$149 >> 2] | 0;
HEAP32[$28 >> 2] = $213;
$214 = HEAP32[$165 >> 2] | 0;
HEAP32[$29 >> 2] = $214;
HEAP32[$30 >> 2] = $161;
HEAP32[$31 >> 2] = $184;
$215 = HEAP32[$154 >> 2] | 0;
$216 = HEAP32[$$idx31$i >> 2] | 0;
$217 = ($215 - $213) | 0;
$218 = Math_imul($217, $192) | 0;
$219 = ($216 - $214) | 0;
$220 = Math_imul($219, $199) | 0;
$221 = 1 << $184;
$222 = $221 >> 1;
$223 = ($218 + $222) | 0;
$224 = ($223 + $220) | 0;
$225 = $224 >> $184;
HEAP32[$32 >> 2] = $225;
$226 = Math_imul($217, $206) | 0;
$227 = Math_imul($219, $212) | 0;
$228 = ($226 + $222) | 0;
$229 = ($228 + $227) | 0;
$230 = $229 >> $184;
HEAP32[$33 >> 2] = $230;
_qr_finder_edge_pts_aff_classify($ur$i, $aff$i);
$231 = 1 << $161;
$232 = _qr_finder_estimate_module_size_and_version($ur$i, $231, $231) | 0;
$233 = ($232 | 0) < 0;
L19: do {
if ($233) {
$$01$i = 0;
$$1$i = $$0$i;
} else {
$234 = HEAP32[$16 >> 2] | 0;
$235 = HEAP32[$234 >> 2] | 0;
$236 = ($234 + 4) | 0;
$237 = HEAP32[$236 >> 2] | 0;
$238 = HEAP32[$24 >> 2] | 0;
$239 = HEAP32[$28 >> 2] | 0;
$240 = ($235 - $239) | 0;
$241 = Math_imul($240, $238) | 0;
$242 = HEAP32[$25 >> 2] | 0;
$243 = HEAP32[$29 >> 2] | 0;
$244 = ($237 - $243) | 0;
$245 = Math_imul($244, $242) | 0;
$246 = ($245 + $241) | 0;
$247 = HEAP32[$31 >> 2] | 0;
$248 = 1 << $247;
$249 = $248 >> 1;
$250 = ($246 + $249) | 0;
$251 = $250 >> $247;
HEAP32[$34 >> 2] = $251;
$252 = HEAP32[$26 >> 2] | 0;
$253 = Math_imul($252, $240) | 0;
$254 = HEAP32[$27 >> 2] | 0;
$255 = Math_imul($254, $244) | 0;
$256 = ($249 + $253) | 0;
$257 = ($256 + $255) | 0;
$258 = $257 >> $247;
HEAP32[$35 >> 2] = $258;
_qr_finder_edge_pts_aff_classify($dl$i, $aff$i);
$259 = _qr_finder_estimate_module_size_and_version($dl$i, $231, $231) | 0;
$260 = ($259 | 0) < 0;
if ($260) {
$$01$i = 0;
$$1$i = $$0$i;
} else {
$261 = HEAP32[$36 >> 2] | 0;
$262 = HEAP32[$37 >> 2] | 0;
$263 = ($261 - $262) | 0;
$ispos$i = ($263 | 0) > -1;
$neg$i = (0 - $263) | 0;
$264 = $ispos$i ? $263 : $neg$i;
$265 = ($264 | 0) > 3;
if ($265) {
$$01$i = 0;
$$1$i = $$0$i;
} else {
$266 = HEAP32[$14 >> 2] | 0;
$267 = HEAP32[$266 >> 2] | 0;
$268 = ($266 + 4) | 0;
$269 = HEAP32[$268 >> 2] | 0;
$270 = HEAP32[$24 >> 2] | 0;
$271 = HEAP32[$28 >> 2] | 0;
$272 = ($267 - $271) | 0;
$273 = Math_imul($272, $270) | 0;
$274 = HEAP32[$25 >> 2] | 0;
$275 = HEAP32[$29 >> 2] | 0;
$276 = ($269 - $275) | 0;
$277 = Math_imul($276, $274) | 0;
$278 = ($277 + $273) | 0;
$279 = HEAP32[$31 >> 2] | 0;
$280 = 1 << $279;
$281 = $280 >> 1;
$282 = ($278 + $281) | 0;
$283 = $282 >> $279;
HEAP32[$38 >> 2] = $283;
$284 = HEAP32[$26 >> 2] | 0;
$285 = Math_imul($284, $272) | 0;
$286 = HEAP32[$27 >> 2] | 0;
$287 = Math_imul($286, $276) | 0;
$288 = ($281 + $285) | 0;
$289 = ($288 + $287) | 0;
$290 = $289 >> $279;
HEAP32[$39 >> 2] = $290;
_qr_finder_edge_pts_aff_classify($ul$i, $aff$i);
$291 = _qr_finder_estimate_module_size_and_version($ul$i, $231, $231) | 0;
$292 = ($291 | 0) < 0;
if ($292) {
$$01$i = 0;
$$1$i = $$0$i;
} else {
$293 = HEAP32[$40 >> 2] | 0;
$294 = ($293 - $261) | 0;
$ispos2$i = ($294 | 0) > -1;
$neg3$i = (0 - $294) | 0;
$295 = $ispos2$i ? $294 : $neg3$i;
$296 = ($295 | 0) > 3;
if ($296) {
$$01$i = 0;
$$1$i = $$0$i;
} else {
$297 = HEAP32[$41 >> 2] | 0;
$298 = ($297 - $262) | 0;
$ispos4$i = ($298 | 0) > -1;
$neg5$i = (0 - $298) | 0;
$299 = $ispos4$i ? $298 : $neg5$i;
$300 = ($299 | 0) > 3;
if ($300) {
$$01$i = 0;
$$1$i = $$0$i;
break;
}
_qr_finder_ransac($ul$i, $aff$i, $42, 0);
_qr_finder_ransac($dl$i, $aff$i, $42, 0);
_qr_line_fit_finder_pair($l$i$i, $aff$i, $ul$i, $dl$i, 0);
$301 = HEAP32[$16 >> 2] | 0;
$302 = HEAP32[$301 >> 2] | 0;
$303 = ($301 + 4) | 0;
$304 = HEAP32[$303 >> 2] | 0;
$$val65$i$i = HEAP32[$l$i$i >> 2] | 0;
$$idx66$val$i$i = HEAP32[$$idx66$i$i >> 2] | 0;
$$idx67$val$i$i = HEAP32[$$idx67$i$i >> 2] | 0;
$305 = Math_imul($$val65$i$i, $302) | 0;
$306 = Math_imul($$idx66$val$i$i, $304) | 0;
$307 = ($$idx67$val$i$i + $305) | 0;
$308 = ($307 + $306) | 0;
$309 = ($308 | 0) < 0;
if ($309) {
$$01$i = 0;
$$1$i = $$0$i;
break;
}
$310 = HEAP32[$15 >> 2] | 0;
$311 = HEAP32[$310 >> 2] | 0;
$312 = ($310 + 4) | 0;
$313 = HEAP32[$312 >> 2] | 0;
$314 = Math_imul($311, $$val65$i$i) | 0;
$315 = Math_imul($313, $$idx66$val$i$i) | 0;
$316 = ($314 + $$idx67$val$i$i) | 0;
$317 = ($316 + $315) | 0;
$318 = ($317 | 0) < 0;
if ($318) {
$$01$i = 0;
$$1$i = $$0$i;
break;
}
_qr_finder_ransac($ul$i, $aff$i, $42, 2);
_qr_finder_ransac($ur$i, $aff$i, $42, 2);
_qr_line_fit_finder_pair($43, $aff$i, $ul$i, $ur$i, 2);
$319 = HEAP32[$301 >> 2] | 0;
$320 = HEAP32[$303 >> 2] | 0;
$$val59$i$i = HEAP32[$43 >> 2] | 0;
$$idx60$val$i$i = HEAP32[$$idx60$i$i >> 2] | 0;
$$idx61$val$i$i = HEAP32[$$idx61$i$i >> 2] | 0;
$321 = Math_imul($$val59$i$i, $319) | 0;
$322 = Math_imul($$idx60$val$i$i, $320) | 0;
$323 = ($$idx61$val$i$i + $321) | 0;
$324 = ($323 + $322) | 0;
$325 = ($324 | 0) < 0;
if ($325) {
$$01$i = 0;
$$1$i = $$0$i;
break;
}
$326 = HEAP32[$15 >> 2] | 0;
$327 = HEAP32[$326 >> 2] | 0;
$328 = ($326 + 4) | 0;
$329 = HEAP32[$328 >> 2] | 0;
$330 = Math_imul($327, $$val59$i$i) | 0;
$331 = Math_imul($329, $$idx60$val$i$i) | 0;
$332 = ($330 + $$idx61$val$i$i) | 0;
$333 = ($332 + $331) | 0;
$334 = ($333 | 0) < 0;
if ($334) {
$$01$i = 0;
$$1$i = $$0$i;
break;
}
$335 = HEAP32[$44 >> 2] | 0;
$336 = $335 >> 1;
_qr_finder_ransac($ur$i, $aff$i, $42, 1);
$337 = HEAP32[$30 >> 2] | 0;
$338 = HEAP32[$46 >> 2] | 0;
$339 = ($338 | 0) < 2;
if ($339) {
HEAP32[$dru$i$i >> 2] = 0;
$384 = 0;
} else {
$340 = $338 << 3;
$341 = _malloc($340) | 0;
$342 = HEAP32[$50 >> 2] | 0;
$i$01$i$i = 0;
while (1) {
$343 = ($342 + ($i$01$i$i << 4)) | 0;
$344 = HEAP32[$343 >> 2] | 0;
$345 = ($341 + ($i$01$i$i << 3)) | 0;
HEAP32[$345 >> 2] = $344;
$346 = ((($342 + ($i$01$i$i << 4)) | 0) + 4) | 0;
$347 = HEAP32[$346 >> 2] | 0;
$348 = ((($341 + ($i$01$i$i << 3)) | 0) + 4) | 0;
HEAP32[$348 >> 2] = $347;
$349 = ($i$01$i$i + 1) | 0;
$exitcond$i$i = ($349 | 0) == ($338 | 0);
if ($exitcond$i$i) {
break;
} else {
$i$01$i$i = $349;
}
}
_qr_line_fit_points($45, $341, $338, $337);
$350 = HEAP32[$15 >> 2] | 0;
$351 = HEAP32[$350 >> 2] | 0;
$352 = ($350 + 4) | 0;
$353 = HEAP32[$352 >> 2] | 0;
$_l$val$i$i$i = HEAP32[$45 >> 2] | 0;
$_l$idx$val$i$i$i = HEAP32[$$idx71$i$i >> 2] | 0;
$_l$idx1$val$i$i$i = HEAP32[$87 >> 2] | 0;
$354 = Math_imul($_l$val$i$i$i, $351) | 0;
$355 = Math_imul($_l$idx$val$i$i$i, $353) | 0;
$356 = ($_l$idx1$val$i$i$i + $354) | 0;
$357 = ($356 + $355) | 0;
$358 = ($357 | 0) < 0;
if ($358) {
$359 = (0 - $_l$val$i$i$i) | 0;
HEAP32[$45 >> 2] = $359;
$360 = (0 - $_l$idx$val$i$i$i) | 0;
HEAP32[$$idx71$i$i >> 2] = $360;
$361 = (0 - $_l$idx1$val$i$i$i) | 0;
HEAP32[$87 >> 2] = $361;
$$idx54$val$i$i = $360;
$$idx55$val$i$i = $361;
$$val53$i$i = $359;
} else {
$$idx54$val$i$i = $_l$idx$val$i$i$i;
$$idx55$val$i$i = $_l$idx1$val$i$i$i;
$$val53$i$i = $_l$val$i$i$i;
}
_free($341);
$362 = HEAP32[$14 >> 2] | 0;
$363 = HEAP32[$362 >> 2] | 0;
$364 = ($362 + 4) | 0;
$365 = HEAP32[$364 >> 2] | 0;
$366 = Math_imul($363, $$val53$i$i) | 0;
$367 = Math_imul($365, $$idx54$val$i$i) | 0;
$368 = ($366 + $$idx55$val$i$i) | 0;
$369 = ($368 + $367) | 0;
$370 = ($369 | 0) < 0;
if ($370) {
$$01$i = 0;
$$1$i = $$0$i;
break;
}
$371 = HEAP32[$301 >> 2] | 0;
$372 = HEAP32[$303 >> 2] | 0;
$373 = Math_imul($371, $$val53$i$i) | 0;
$374 = Math_imul($372, $$idx54$val$i$i) | 0;
$375 = ($373 + $$idx55$val$i$i) | 0;
$376 = ($375 + $374) | 0;
$377 = ($376 | 0) < 0;
if ($377) {
$$01$i = 0;
$$1$i = $$0$i;
break;
}
$378 = _qr_aff_line_step($aff$i, $$val53$i$i, $$idx54$val$i$i, 1, $336, $dru$i$i) | 0;
$379 = ($378 | 0) < 0;
if ($379) {
$$01$i = 0;
$$1$i = $$0$i;
break;
}
$$pre$i$i = HEAP32[$dru$i$i >> 2] | 0;
$384 = $$pre$i$i;
}
$380 = HEAP32[$32 >> 2] | 0;
$381 = HEAP32[$ur$i >> 2] | 0;
$382 = ($381 * 3) | 0;
$383 = $384 << 1;
$385 = ($380 - $383) | 0;
$386 = ($382 + $385) | 0;
$387 = HEAP32[$33 >> 2] | 0;
$388 = $336 << 1;
$389 = ($387 - $388) | 0;
$390 = HEAP32[$dl$i >> 2] | 0;
$391 = $390 >> 1;
_qr_finder_ransac($dl$i, $aff$i, $42, 3);
$392 = HEAP32[$30 >> 2] | 0;
$393 = HEAP32[$48 >> 2] | 0;
$394 = ($393 | 0) < 2;
if ($394) {
HEAP32[$dbv$i$i >> 2] = 0;
$444 = 0;
} else {
$395 = $393 << 3;
$396 = _malloc($395) | 0;
$397 = HEAP32[$51 >> 2] | 0;
$i$01$i50$i = 0;
while (1) {
$398 = ($397 + ($i$01$i50$i << 4)) | 0;
$399 = HEAP32[$398 >> 2] | 0;
$400 = ($396 + ($i$01$i50$i << 3)) | 0;
HEAP32[$400 >> 2] = $399;
$401 = ((($397 + ($i$01$i50$i << 4)) | 0) + 4) | 0;
$402 = HEAP32[$401 >> 2] | 0;
$403 = ((($396 + ($i$01$i50$i << 3)) | 0) + 4) | 0;
HEAP32[$403 >> 2] = $402;
$404 = ($i$01$i50$i + 1) | 0;
$exitcond$i51$i = ($404 | 0) == ($393 | 0);
if ($exitcond$i51$i) {
break;
} else {
$i$01$i50$i = $404;
}
}
_qr_line_fit_points($47, $396, $393, $392);
$405 = HEAP32[$16 >> 2] | 0;
$406 = HEAP32[$405 >> 2] | 0;
$407 = ($405 + 4) | 0;
$408 = HEAP32[$407 >> 2] | 0;
$_l$val$i$i52$i = HEAP32[$47 >> 2] | 0;
$_l$idx$val$i$i54$i = HEAP32[$$idx69$i$i >> 2] | 0;
$_l$idx1$val$i$i56$i = HEAP32[$86 >> 2] | 0;
$409 = Math_imul($_l$val$i$i52$i, $406) | 0;
$410 = Math_imul($_l$idx$val$i$i54$i, $408) | 0;
$411 = ($_l$idx1$val$i$i56$i + $409) | 0;
$412 = ($411 + $410) | 0;
$413 = ($412 | 0) < 0;
if ($413) {
$414 = (0 - $_l$val$i$i52$i) | 0;
HEAP32[$47 >> 2] = $414;
$415 = (0 - $_l$idx$val$i$i54$i) | 0;
HEAP32[$$idx69$i$i >> 2] = $415;
$416 = (0 - $_l$idx1$val$i$i56$i) | 0;
HEAP32[$86 >> 2] = $416;
$$idx48$val$i$i = $415;
$$idx49$val$i$i = $416;
$$val47$i$i = $414;
} else {
$$idx48$val$i$i = $_l$idx$val$i$i54$i;
$$idx49$val$i$i = $_l$idx1$val$i$i56$i;
$$val47$i$i = $_l$val$i$i52$i;
}
_free($396);
$417 = HEAP32[$14 >> 2] | 0;
$418 = HEAP32[$417 >> 2] | 0;
$419 = ($417 + 4) | 0;
$420 = HEAP32[$419 >> 2] | 0;
$421 = Math_imul($418, $$val47$i$i) | 0;
$422 = Math_imul($420, $$idx48$val$i$i) | 0;
$423 = ($421 + $$idx49$val$i$i) | 0;
$424 = ($423 + $422) | 0;
$425 = ($424 | 0) < 0;
if ($425) {
$$01$i = 0;
$$1$i = $$0$i;
break;
}
$426 = HEAP32[$15 >> 2] | 0;
$427 = HEAP32[$426 >> 2] | 0;
$428 = ($426 + 4) | 0;
$429 = HEAP32[$428 >> 2] | 0;
$430 = Math_imul($427, $$val47$i$i) | 0;
$431 = Math_imul($429, $$idx48$val$i$i) | 0;
$432 = ($430 + $$idx49$val$i$i) | 0;
$433 = ($432 + $431) | 0;
$434 = ($433 | 0) < 0;
if ($434) {
$$01$i = 0;
$$1$i = $$0$i;
break;
}
$435 = _qr_aff_line_step($aff$i, $$val47$i$i, $$idx48$val$i$i, 0, $391, $dbv$i$i) | 0;
$436 = ($435 | 0) < 0;
if ($436) {
$$01$i = 0;
$$1$i = $$0$i;
break;
}
$$pre149$i$i = HEAP32[$dbv$i$i >> 2] | 0;
$444 = $$pre149$i$i;
}
$437 = HEAP32[$34 >> 2] | 0;
$438 = $391 << 1;
$439 = ($437 - $438) | 0;
$440 = HEAP32[$35 >> 2] | 0;
$441 = HEAP32[$49 >> 2] | 0;
$442 = ($441 * 3) | 0;
$443 = $444 << 1;
$445 = ($440 - $443) | 0;
$446 = ($442 + $445) | 0;
$447 = ($336 + -1) | 0;
$448 = ($447 - $389) | 0;
$449 = ($448 + $440) | 0;
$450 = (($449 | 0) / ($336 | 0)) & -1;
$451 = ($450 + $338) | 0;
$452 = $451 << 3;
$453 = _malloc($452) | 0;
$454 = ($338 | 0) > 0;
if ($454) {
$455 = HEAP32[$50 >> 2] | 0;
$i$0121$i$i = 0;
while (1) {
$456 = ($453 + ($i$0121$i$i << 3)) | 0;
$457 = ($455 + ($i$0121$i$i << 4)) | 0;
$458 = $457;
$459 = $458;
$460 = HEAP32[$459 >> 2] | 0;
$461 = ($458 + 4) | 0;
$462 = $461;
$463 = HEAP32[$462 >> 2] | 0;
$464 = $456;
$465 = $464;
HEAP32[$465 >> 2] = $460;
$466 = ($464 + 4) | 0;
$467 = $466;
HEAP32[$467 >> 2] = $463;
$468 = ($i$0121$i$i + 1) | 0;
$exitcond$i = ($468 | 0) == ($338 | 0);
if ($exitcond$i) {
break;
} else {
$i$0121$i$i = $468;
}
}
}
$469 = ($380 + -1) | 0;
$470 = ($469 + $391) | 0;
$471 = ($470 - $439) | 0;
$472 = (($471 | 0) / ($391 | 0)) & -1;
$473 = ($472 + $393) | 0;
$474 = $473 << 3;
$475 = _malloc($474) | 0;
$476 = ($393 | 0) > 0;
if ($476) {
$477 = HEAP32[$51 >> 2] | 0;
$i$1120$i$i = 0;
while (1) {
$478 = ($475 + ($i$1120$i$i << 3)) | 0;
$479 = ($477 + ($i$1120$i$i << 4)) | 0;
$480 = $479;
$481 = $480;
$482 = HEAP32[$481 >> 2] | 0;
$483 = ($480 + 4) | 0;
$484 = $483;
$485 = HEAP32[$484 >> 2] | 0;
$486 = $478;
$487 = $486;
HEAP32[$487 >> 2] = $482;
$488 = ($486 + 4) | 0;
$489 = $488;
HEAP32[$489 >> 2] = $485;
$490 = ($i$1120$i$i + 1) | 0;
$exitcond90$i = ($490 | 0) == ($393 | 0);
if ($exitcond90$i) {
break;
} else {
$i$1120$i$i = $490;
}
}
}
$491 = HEAP32[$28 >> 2] | 0;
$492 = HEAP32[$30 >> 2] | 0;
$493 = $491 << $492;
$494 = ($492 + -1) | 0;
$495 = 1 << $494;
$496 = ($495 + $493) | 0;
$497 = HEAP32[$29 >> 2] | 0;
$498 = $497 << $492;
$499 = ($498 + $495) | 0;
$500 = HEAP32[$aff$i >> 2] | 0;
$501 = Math_imul($500, $386) | 0;
$502 = HEAP32[$21 >> 2] | 0;
$503 = Math_imul($502, $389) | 0;
$504 = ($496 + $501) | 0;
$505 = ($504 + $503) | 0;
$506 = HEAP32[$22 >> 2] | 0;
$507 = Math_imul($506, $386) | 0;
$508 = HEAP32[$23 >> 2] | 0;
$509 = Math_imul($508, $389) | 0;
$510 = ($507 + $499) | 0;
$511 = ($510 + $509) | 0;
$512 = Math_imul($500, $384) | 0;
$513 = Math_imul($502, $336) | 0;
$514 = ($513 + $512) | 0;
$515 = Math_imul($506, $384) | 0;
$516 = Math_imul($508, $336) | 0;
$517 = ($516 + $515) | 0;
$518 = Math_imul($500, $381) | 0;
$519 = Math_imul($506, $381) | 0;
$520 = Math_imul($500, $439) | 0;
$521 = Math_imul($502, $446) | 0;
$522 = ($496 + $520) | 0;
$523 = ($522 + $521) | 0;
$524 = Math_imul($506, $439) | 0;
$525 = Math_imul($508, $446) | 0;
$526 = ($524 + $499) | 0;
$527 = ($526 + $525) | 0;
$528 = Math_imul($500, $391) | 0;
$529 = Math_imul($502, $444) | 0;
$530 = ($529 + $528) | 0;
$531 = Math_imul($506, $391) | 0;
$532 = Math_imul($508, $444) | 0;
$533 = ($532 + $531) | 0;
$534 = Math_imul($502, $441) | 0;
$535 = Math_imul($508, $441) | 0;
$536 = ($391 | 0) > 0;
$537 = $536 ? $391 : 0;
$538 = ($336 | 0) > 0;
$539 = $538 ? $336 : 0;
$b$0$ph$i$i = $475;
$blastfit$0$ph$i$i = $393;
$bu$0$ph$i$i = $439;
$bv$0$ph$i$i = $446;
$bx$0$ph$i$i = $523;
$by$0$ph$i$i = $527;
$cb$0$ph$i$i = $473;
$cr$0$ph$i$i = $451;
$dbxi$0$ph$i$i = $530;
$dbyi$0$ph$i$i = $533;
$drxi$0$ph$i$i = $514;
$dryi$0$ph$i$i = $517;
$nb$0$ph$i$i = $393;
$nbempty$0$ph$i$i = 0;
$nr$0$ph$i$i = $338;
$nrempty$0$ph$i$i = 0;
$r$0$ph$i$i = $453;
$rlastfit$0$ph$i$i = $338;
$ru$0$ph$i$i = $386;
$rv$0$ph$i$i = $389;
$rx$0$ph$i$i = $505;
$ry$0$ph$i$i = $511;
L66: while (1) {
$540 = ($nrempty$0$ph$i$i | 0) > 14;
$b$0$i$i = $b$0$ph$i$i;
$blastfit$0$i$i = $blastfit$0$ph$i$i;
$bu$0$i$i = $bu$0$ph$i$i;
$bv$0$i$i = $bv$0$ph$i$i;
$bx$0$i$i = $bx$0$ph$i$i;
$by$0$i$i = $by$0$ph$i$i;
$cb$0$i$i = $cb$0$ph$i$i;
$dbxi$0$i$i = $dbxi$0$ph$i$i;
$dbyi$0$i$i = $dbyi$0$ph$i$i;
$nb$0$i$i = $nb$0$ph$i$i;
$nbempty$0$i$i = $nbempty$0$ph$i$i;
while (1) {
$541 = HEAP32[$35 >> 2] | 0;
$542 = ($541 + $bv$0$i$i) | 0;
$543 = $542 >> 1;
$544 = ($543 | 0) < ($bv$0$i$i | 0);
$545 = $544 ? $543 : $bv$0$i$i;
$not$$i$i = ($rv$0$ph$i$i | 0) >= ($545 | 0);
$$$i$i = $540 | $not$$i$i;
$546 = HEAP32[$32 >> 2] | 0;
$547 = ($546 + $ru$0$ph$i$i) | 0;
$548 = $547 >> 1;
$549 = ($548 | 0) < ($ru$0$ph$i$i | 0);
$550 = $549 ? $548 : $ru$0$ph$i$i;
$551 = ($nbempty$0$i$i | 0) > 14;
$not$98$i$i = ($bu$0$i$i | 0) >= ($550 | 0);
$552 = $551 | $not$98$i$i;
if (!$$$i$i) {
$553 = ($rv$0$ph$i$i | 0) < ($bu$0$i$i | 0);
$or$cond$i$i = $552 | $553;
if ($or$cond$i$i) {
break;
}
}
if ($552) {
break L66;
}
$664 = ($bx$0$i$i + $534) | 0;
$665 = HEAP32[$30 >> 2] | 0;
$666 = ($665 + 2) | 0;
$667 = $664 >> $666;
$668 = ($by$0$i$i + $535) | 0;
$669 = $668 >> $666;
$670 = ($bx$0$i$i - $534) | 0;
$671 = $670 >> $666;
$672 = ($by$0$i$i - $535) | 0;
$673 = $672 >> $666;
$674 = ($nb$0$i$i | 0) < ($cb$0$i$i | 0);
if ($674) {
$b$1$i$i = $b$0$i$i;
$cb$1$i$i = $cb$0$i$i;
} else {
$675 = $cb$0$i$i << 1;
$676 = $675 | 1;
$677 = $676 << 3;
$678 = _realloc($b$0$i$i, $677) | 0;
$b$1$i$i = $678;
$cb$1$i$i = $676;
}
$notlhs$i76$i$i = ($667 | 0) < 0;
$notrhs$i77$i$i = ($667 | 0) >= ($_width | 0);
$or$cond$not$i78$i$i = $notrhs$i77$i$i | $notlhs$i76$i$i;
$679 = ($669 | 0) < 0;
$or$cond1$i79$i$i = $or$cond$not$i78$i$i | $679;
$$not$i80$i$i = ($669 | 0) >= ($_height | 0);
$or$cond2$not$i81$i$i = $or$cond1$i79$i$i | $$not$i80$i$i;
$680 = ($671 | 0) < 0;
$or$cond3$i82$i$i = $or$cond2$not$i81$i$i | $680;
$$not7$i83$i$i = ($671 | 0) >= ($_width | 0);
$or$cond4$not$i84$i$i = $or$cond3$i82$i$i | $$not7$i83$i$i;
$681 = ($673 | 0) < 0;
$or$cond5$i85$i$i = $or$cond4$not$i84$i$i | $681;
$or$cond5$not$i86$i$i = $or$cond5$i85$i$i ^ 1;
$682 = ($673 | 0) < ($_height | 0);
$or$cond6$i87$i$i = $682 & $or$cond5$not$i86$i$i;
do {
if ($or$cond6$i87$i$i) {
$683 = Math_imul($669, $_width) | 0;
$684 = ($683 + $667) | 0;
$685 = ($_img + $684) | 0;
$686 = HEAP8[$685 >> 0] | 0;
$687 = ($686 << 24) >> 24 == 0;
if (!$687) {
$blastfit$2$i$i = $blastfit$0$i$i;
$bu$3$i$i = $bu$0$i$i;
$bv$2$i$i = $bv$0$i$i;
$bx$2$i$i = $bx$0$i$i;
$by$2$i$i = $by$0$i$i;
$dbxi$3$i$i = $dbxi$0$i$i;
$dbyi$3$i$i = $dbyi$0$i$i;
$nb$2$i$i = $nb$0$i$i;
$nbempty$1$i$i = 0;
break;
}
$688 = Math_imul($673, $_width) | 0;
$689 = ($688 + $671) | 0;
$690 = ($_img + $689) | 0;
$691 = HEAP8[$690 >> 0] | 0;
$692 = ($691 << 24) >> 24 == 0;
if (!$692) {
$blastfit$2$i$i = $blastfit$0$i$i;
$bu$3$i$i = $bu$0$i$i;
$bv$2$i$i = $bv$0$i$i;
$bx$2$i$i = $bx$0$i$i;
$by$2$i$i = $by$0$i$i;
$dbxi$3$i$i = $dbxi$0$i$i;
$dbyi$3$i$i = $dbyi$0$i$i;
$nb$2$i$i = $nb$0$i$i;
$nbempty$1$i$i = 0;
break;
}
$693 = ($673 + $669) | 0;
$694 = $693 >> 1;
$695 = Math_imul($694, $_width) | 0;
$696 = ($671 + $667) | 0;
$697 = $696 >> 1;
$698 = ($695 + $697) | 0;
$699 = ($_img + $698) | 0;
$700 = HEAP8[$699 >> 0] | 0;
$701 = ($700 << 24) >> 24 == 0;
$$$i88$i$i = ($701 << 31) >> 31;
if ($701) {
$ret$1$i$i = $$$i88$i$i;
} else {
$702 = ($b$1$i$i + ($nb$0$i$i << 3)) | 0;
$703 = _qr_finder_locate_crossing($_img, $_width, $667, $669, $671, $673, 1, $702) | 0;
$ret$1$i$i = $703;
}
$704 = ($ret$1$i$i | 0) > -1;
if (!$704) {
label = 81;
break;
}
$705 = ($ret$1$i$i | 0) == 0;
if (!$705) {
$blastfit$2$i$i = $blastfit$0$i$i;
$bu$3$i$i = $bu$0$i$i;
$bv$2$i$i = $bv$0$i$i;
$bx$2$i$i = $bx$0$i$i;
$by$2$i$i = $by$0$i$i;
$dbxi$3$i$i = $dbxi$0$i$i;
$dbyi$3$i$i = $dbyi$0$i$i;
$nb$2$i$i = $nb$0$i$i;
$nbempty$1$i$i = 0;
break;
}
$706 = ($b$1$i$i + ($nb$0$i$i << 3)) | 0;
$707 = HEAP32[$706 >> 2] | 0;
$708 = ((($b$1$i$i + ($nb$0$i$i << 3)) | 0) + 4) | 0;
$709 = HEAP32[$708 >> 2] | 0;
$710 = HEAP32[$24 >> 2] | 0;
$711 = HEAP32[$28 >> 2] | 0;
$712 = ($707 - $711) | 0;
$713 = Math_imul($712, $710) | 0;
$714 = HEAP32[$25 >> 2] | 0;
$715 = HEAP32[$29 >> 2] | 0;
$716 = ($709 - $715) | 0;
$717 = Math_imul($716, $714) | 0;
$718 = ($717 + $713) | 0;
$719 = HEAP32[$31 >> 2] | 0;
$720 = 1 << $719;
$721 = $720 >> 1;
$722 = ($718 + $721) | 0;
$723 = $722 >> $719;
$724 = HEAP32[$26 >> 2] | 0;
$725 = Math_imul($724, $712) | 0;
$726 = HEAP32[$27 >> 2] | 0;
$727 = Math_imul($726, $716) | 0;
$728 = ($721 + $725) | 0;
$729 = ($728 + $727) | 0;
$730 = $729 >> $719;
$731 = ($723 + $391) | 0;
$732 = ($731 | 0) > ($bu$0$i$i | 0);
if ($732) {
$733 = ($723 + $bu$0$i$i) | 0;
$734 = $733 >> 1;
$bu$1$i$i = $734;
} else {
$bu$1$i$i = $bu$0$i$i;
}
$735 = ($730 + $bv$0$i$i) | 0;
$736 = $735 >> 1;
$737 = HEAP32[$aff$i >> 2] | 0;
$738 = Math_imul($737, $bu$1$i$i) | 0;
$739 = HEAP32[$21 >> 2] | 0;
$740 = Math_imul($739, $736) | 0;
$741 = ($738 + $496) | 0;
$742 = ($741 + $740) | 0;
$743 = HEAP32[$22 >> 2] | 0;
$744 = Math_imul($743, $bu$1$i$i) | 0;
$745 = HEAP32[$23 >> 2] | 0;
$746 = Math_imul($745, $736) | 0;
$747 = ($744 + $499) | 0;
$748 = ($747 + $746) | 0;
$749 = ($nb$0$i$i + 1) | 0;
$750 = $blastfit$0$i$i >> 2;
$751 = ($750 + $blastfit$0$i$i) | 0;
$752 = ($751 | 0) > 1;
$753 = $752 ? $751 : 1;
$754 = ($nb$0$i$i | 0) < ($753 | 0);
if ($754) {
$blastfit$2$i$i = $blastfit$0$i$i;
$bu$3$i$i = $bu$1$i$i;
$bv$2$i$i = $736;
$bx$2$i$i = $742;
$by$2$i$i = $748;
$dbxi$3$i$i = $dbxi$0$i$i;
$dbyi$3$i$i = $dbyi$0$i$i;
$nb$2$i$i = $749;
$nbempty$1$i$i = 0;
break;
}
$755 = HEAP32[$30 >> 2] | 0;
_qr_line_fit_points($47, $b$1$i$i, $749, $755);
$$val68$i$i = HEAP32[$47 >> 2] | 0;
$$idx69$val$i$i = HEAP32[$$idx69$i$i >> 2] | 0;
$756 = _qr_aff_line_step($aff$i, $$val68$i$i, $$idx69$val$i$i, 0, $391, $dbv$i$i) | 0;
$757 = ($756 | 0) > -1;
if (!$757) {
$blastfit$2$i$i = $749;
$bu$3$i$i = $bu$1$i$i;
$bv$2$i$i = $736;
$bx$2$i$i = $742;
$by$2$i$i = $748;
$dbxi$3$i$i = $dbxi$0$i$i;
$dbyi$3$i$i = $dbyi$0$i$i;
$nb$2$i$i = $749;
$nbempty$1$i$i = 0;
break;
}
$758 = HEAP32[$aff$i >> 2] | 0;
$759 = Math_imul($758, $391) | 0;
$760 = HEAP32[$21 >> 2] | 0;
$761 = HEAP32[$dbv$i$i >> 2] | 0;
$762 = Math_imul($761, $760) | 0;
$763 = ($762 + $759) | 0;
$764 = HEAP32[$22 >> 2] | 0;
$765 = Math_imul($764, $391) | 0;
$766 = HEAP32[$23 >> 2] | 0;
$767 = Math_imul($766, $761) | 0;
$768 = ($767 + $765) | 0;
$blastfit$2$i$i = $749;
$bu$3$i$i = $bu$1$i$i;
$bv$2$i$i = $736;
$bx$2$i$i = $742;
$by$2$i$i = $748;
$dbxi$3$i$i = $763;
$dbyi$3$i$i = $768;
$nb$2$i$i = $749;
$nbempty$1$i$i = 0;
} else {
label = 81;
}
} while (0);
if ((label | 0) == 81) {
label = 0;
$769 = ($nbempty$0$i$i + 1) | 0;
$blastfit$2$i$i = $blastfit$0$i$i;
$bu$3$i$i = $bu$0$i$i;
$bv$2$i$i = $bv$0$i$i;
$bx$2$i$i = $bx$0$i$i;
$by$2$i$i = $by$0$i$i;
$dbxi$3$i$i = $dbxi$0$i$i;
$dbyi$3$i$i = $dbyi$0$i$i;
$nb$2$i$i = $nb$0$i$i;
$nbempty$1$i$i = $769;
}
$bu$4$i$i = ($bu$3$i$i + $537) | 0;
$nbempty$2$i$i = $536 ? $nbempty$1$i$i : 2147483647;
$770 = HEAP32[$dbv$i$i >> 2] | 0;
$771 = ($770 + $bv$2$i$i) | 0;
$772 = ($dbxi$3$i$i + $bx$2$i$i) | 0;
$773 = ($dbyi$3$i$i + $by$2$i$i) | 0;
$b$0$i$i = $b$1$i$i;
$blastfit$0$i$i = $blastfit$2$i$i;
$bu$0$i$i = $bu$4$i$i;
$bv$0$i$i = $771;
$bx$0$i$i = $772;
$by$0$i$i = $773;
$cb$0$i$i = $cb$1$i$i;
$dbxi$0$i$i = $dbxi$3$i$i;
$dbyi$0$i$i = $dbyi$3$i$i;
$nb$0$i$i = $nb$2$i$i;
$nbempty$0$i$i = $nbempty$2$i$i;
}
$554 = ($rx$0$ph$i$i + $518) | 0;
$555 = HEAP32[$30 >> 2] | 0;
$556 = ($555 + 2) | 0;
$557 = $554 >> $556;
$558 = ($ry$0$ph$i$i + $519) | 0;
$559 = $558 >> $556;
$560 = ($rx$0$ph$i$i - $518) | 0;
$561 = $560 >> $556;
$562 = ($ry$0$ph$i$i - $519) | 0;
$563 = $562 >> $556;
$564 = ($nr$0$ph$i$i | 0) < ($cr$0$ph$i$i | 0);
if ($564) {
$cr$1$i$i = $cr$0$ph$i$i;
$r$1$i$i = $r$0$ph$i$i;
} else {
$565 = $cr$0$ph$i$i << 1;
$566 = $565 | 1;
$567 = $566 << 3;
$568 = _realloc($r$0$ph$i$i, $567) | 0;
$cr$1$i$i = $566;
$r$1$i$i = $568;
}
$notlhs$i$i$i = ($557 | 0) < 0;
$notrhs$i$i$i = ($557 | 0) >= ($_width | 0);
$or$cond$not$i$i$i = $notrhs$i$i$i | $notlhs$i$i$i;
$569 = ($559 | 0) < 0;
$or$cond1$i$i$i = $or$cond$not$i$i$i | $569;
$$not$i$i$i = ($559 | 0) >= ($_height | 0);
$or$cond2$not$i$i$i = $or$cond1$i$i$i | $$not$i$i$i;
$570 = ($561 | 0) < 0;
$or$cond3$i$i$i = $or$cond2$not$i$i$i | $570;
$$not7$i$i$i = ($561 | 0) >= ($_width | 0);
$or$cond4$not$i$i$i = $or$cond3$i$i$i | $$not7$i$i$i;
$571 = ($563 | 0) < 0;
$or$cond5$i$i$i = $or$cond4$not$i$i$i | $571;
$or$cond5$not$i$i$i = $or$cond5$i$i$i ^ 1;
$572 = ($563 | 0) < ($_height | 0);
$or$cond6$i$i$i = $572 & $or$cond5$not$i$i$i;
do {
if ($or$cond6$i$i$i) {
$573 = Math_imul($559, $_width) | 0;
$574 = ($573 + $557) | 0;
$575 = ($_img + $574) | 0;
$576 = HEAP8[$575 >> 0] | 0;
$577 = ($576 << 24) >> 24 == 0;
if (!$577) {
$drxi$3$i$i = $drxi$0$ph$i$i;
$dryi$3$i$i = $dryi$0$ph$i$i;
$nr$2$i$i = $nr$0$ph$i$i;
$nrempty$1$i$i = 0;
$rlastfit$2$i$i = $rlastfit$0$ph$i$i;
$ru$2$i$i = $ru$0$ph$i$i;
$rv$3$i$i = $rv$0$ph$i$i;
$rx$2$i$i = $rx$0$ph$i$i;
$ry$2$i$i = $ry$0$ph$i$i;
break;
}
$578 = Math_imul($563, $_width) | 0;
$579 = ($578 + $561) | 0;
$580 = ($_img + $579) | 0;
$581 = HEAP8[$580 >> 0] | 0;
$582 = ($581 << 24) >> 24 == 0;
if (!$582) {
$drxi$3$i$i = $drxi$0$ph$i$i;
$dryi$3$i$i = $dryi$0$ph$i$i;
$nr$2$i$i = $nr$0$ph$i$i;
$nrempty$1$i$i = 0;
$rlastfit$2$i$i = $rlastfit$0$ph$i$i;
$ru$2$i$i = $ru$0$ph$i$i;
$rv$3$i$i = $rv$0$ph$i$i;
$rx$2$i$i = $rx$0$ph$i$i;
$ry$2$i$i = $ry$0$ph$i$i;
break;
}
$583 = ($563 + $559) | 0;
$584 = $583 >> 1;
$585 = Math_imul($584, $_width) | 0;
$586 = ($561 + $557) | 0;
$587 = $586 >> 1;
$588 = ($585 + $587) | 0;
$589 = ($_img + $588) | 0;
$590 = HEAP8[$589 >> 0] | 0;
$591 = ($590 << 24) >> 24 == 0;
$$$i$i$i = ($591 << 31) >> 31;
if ($591) {
$ret$0$i$i = $$$i$i$i;
} else {
$592 = ($r$1$i$i + ($nr$0$ph$i$i << 3)) | 0;
$593 = _qr_finder_locate_crossing($_img, $_width, $557, $559, $561, $563, 1, $592) | 0;
$ret$0$i$i = $593;
}
$594 = ($ret$0$i$i | 0) > -1;
if (!$594) {
label = 64;
break;
}
$595 = ($ret$0$i$i | 0) == 0;
if (!$595) {
$drxi$3$i$i = $drxi$0$ph$i$i;
$dryi$3$i$i = $dryi$0$ph$i$i;
$nr$2$i$i = $nr$0$ph$i$i;
$nrempty$1$i$i = 0;
$rlastfit$2$i$i = $rlastfit$0$ph$i$i;
$ru$2$i$i = $ru$0$ph$i$i;
$rv$3$i$i = $rv$0$ph$i$i;
$rx$2$i$i = $rx$0$ph$i$i;
$ry$2$i$i = $ry$0$ph$i$i;
break;
}
$596 = ($r$1$i$i + ($nr$0$ph$i$i << 3)) | 0;
$597 = HEAP32[$596 >> 2] | 0;
$598 = ((($r$1$i$i + ($nr$0$ph$i$i << 3)) | 0) + 4) | 0;
$599 = HEAP32[$598 >> 2] | 0;
$600 = HEAP32[$24 >> 2] | 0;
$601 = HEAP32[$28 >> 2] | 0;
$602 = ($597 - $601) | 0;
$603 = Math_imul($602, $600) | 0;
$604 = HEAP32[$25 >> 2] | 0;
$605 = HEAP32[$29 >> 2] | 0;
$606 = ($599 - $605) | 0;
$607 = Math_imul($606, $604) | 0;
$608 = ($607 + $603) | 0;
$609 = HEAP32[$31 >> 2] | 0;
$610 = 1 << $609;
$611 = $610 >> 1;
$612 = ($608 + $611) | 0;
$613 = $612 >> $609;
$614 = HEAP32[$26 >> 2] | 0;
$615 = Math_imul($614, $602) | 0;
$616 = HEAP32[$27 >> 2] | 0;
$617 = Math_imul($616, $606) | 0;
$618 = ($611 + $615) | 0;
$619 = ($618 + $617) | 0;
$620 = $619 >> $609;
$621 = ($613 + $ru$0$ph$i$i) | 0;
$622 = $621 >> 1;
$623 = ($620 + $336) | 0;
$624 = ($623 | 0) > ($rv$0$ph$i$i | 0);
if ($624) {
$625 = ($620 + $rv$0$ph$i$i) | 0;
$626 = $625 >> 1;
$rv$1$i$i = $626;
} else {
$rv$1$i$i = $rv$0$ph$i$i;
}
$627 = HEAP32[$aff$i >> 2] | 0;
$628 = Math_imul($627, $622) | 0;
$629 = HEAP32[$21 >> 2] | 0;
$630 = Math_imul($629, $rv$1$i$i) | 0;
$631 = ($628 + $496) | 0;
$632 = ($631 + $630) | 0;
$633 = HEAP32[$22 >> 2] | 0;
$634 = Math_imul($633, $622) | 0;
$635 = HEAP32[$23 >> 2] | 0;
$636 = Math_imul($635, $rv$1$i$i) | 0;
$637 = ($634 + $499) | 0;
$638 = ($637 + $636) | 0;
$639 = ($nr$0$ph$i$i + 1) | 0;
$640 = $rlastfit$0$ph$i$i >> 2;
$641 = ($640 + $rlastfit$0$ph$i$i) | 0;
$642 = ($641 | 0) > 1;
$643 = $642 ? $641 : 1;
$644 = ($nr$0$ph$i$i | 0) < ($643 | 0);
if ($644) {
$drxi$3$i$i = $drxi$0$ph$i$i;
$dryi$3$i$i = $dryi$0$ph$i$i;
$nr$2$i$i = $639;
$nrempty$1$i$i = 0;
$rlastfit$2$i$i = $rlastfit$0$ph$i$i;
$ru$2$i$i = $622;
$rv$3$i$i = $rv$1$i$i;
$rx$2$i$i = $632;
$ry$2$i$i = $638;
break;
}
$645 = HEAP32[$30 >> 2] | 0;
_qr_line_fit_points($45, $r$1$i$i, $639, $645);
$$val70$i$i = HEAP32[$45 >> 2] | 0;
$$idx71$val$i$i = HEAP32[$$idx71$i$i >> 2] | 0;
$646 = _qr_aff_line_step($aff$i, $$val70$i$i, $$idx71$val$i$i, 1, $336, $dru$i$i) | 0;
$647 = ($646 | 0) > -1;
if (!$647) {
$drxi$3$i$i = $drxi$0$ph$i$i;
$dryi$3$i$i = $dryi$0$ph$i$i;
$nr$2$i$i = $639;
$nrempty$1$i$i = 0;
$rlastfit$2$i$i = $639;
$ru$2$i$i = $622;
$rv$3$i$i = $rv$1$i$i;
$rx$2$i$i = $632;
$ry$2$i$i = $638;
break;
}
$648 = HEAP32[$aff$i >> 2] | 0;
$649 = HEAP32[$dru$i$i >> 2] | 0;
$650 = Math_imul($649, $648) | 0;
$651 = HEAP32[$21 >> 2] | 0;
$652 = Math_imul($651, $336) | 0;
$653 = ($652 + $650) | 0;
$654 = HEAP32[$22 >> 2] | 0;
$655 = Math_imul($654, $649) | 0;
$656 = HEAP32[$23 >> 2] | 0;
$657 = Math_imul($656, $336) | 0;
$658 = ($657 + $655) | 0;
$drxi$3$i$i = $653;
$dryi$3$i$i = $658;
$nr$2$i$i = $639;
$nrempty$1$i$i = 0;
$rlastfit$2$i$i = $639;
$ru$2$i$i = $622;
$rv$3$i$i = $rv$1$i$i;
$rx$2$i$i = $632;
$ry$2$i$i = $638;
} else {
label = 64;
}
} while (0);
if ((label | 0) == 64) {
label = 0;
$659 = ($nrempty$0$ph$i$i + 1) | 0;
$drxi$3$i$i = $drxi$0$ph$i$i;
$dryi$3$i$i = $dryi$0$ph$i$i;
$nr$2$i$i = $nr$0$ph$i$i;
$nrempty$1$i$i = $659;
$rlastfit$2$i$i = $rlastfit$0$ph$i$i;
$ru$2$i$i = $ru$0$ph$i$i;
$rv$3$i$i = $rv$0$ph$i$i;
$rx$2$i$i = $rx$0$ph$i$i;
$ry$2$i$i = $ry$0$ph$i$i;
}
$660 = HEAP32[$dru$i$i >> 2] | 0;
$661 = ($660 + $ru$2$i$i) | 0;
$nrempty$2$i$i = $538 ? $nrempty$1$i$i : 2147483647;
$rv$4$i$i = ($rv$3$i$i + $539) | 0;
$662 = ($rx$2$i$i + $drxi$3$i$i) | 0;
$663 = ($dryi$3$i$i + $ry$2$i$i) | 0;
$b$0$ph$i$i = $b$0$i$i;
$blastfit$0$ph$i$i = $blastfit$0$i$i;
$bu$0$ph$i$i = $bu$0$i$i;
$bv$0$ph$i$i = $bv$0$i$i;
$bx$0$ph$i$i = $bx$0$i$i;
$by$0$ph$i$i = $by$0$i$i;
$cb$0$ph$i$i = $cb$0$i$i;
$cr$0$ph$i$i = $cr$1$i$i;
$dbxi$0$ph$i$i = $dbxi$0$i$i;
$dbyi$0$ph$i$i = $dbyi$0$i$i;
$drxi$0$ph$i$i = $drxi$3$i$i;
$dryi$0$ph$i$i = $dryi$3$i$i;
$nb$0$ph$i$i = $nb$0$i$i;
$nbempty$0$ph$i$i = $nbempty$0$i$i;
$nr$0$ph$i$i = $nr$2$i$i;
$nrempty$0$ph$i$i = $nrempty$2$i$i;
$r$0$ph$i$i = $r$1$i$i;
$rlastfit$0$ph$i$i = $rlastfit$2$i$i;
$ru$0$ph$i$i = $661;
$rv$0$ph$i$i = $rv$4$i$i;
$rx$0$ph$i$i = $662;
$ry$0$ph$i$i = $663;
}
$774 = ($nr$0$ph$i$i | 0) > 1;
if ($774) {
$775 = HEAP32[$30 >> 2] | 0;
_qr_line_fit_points($45, $r$0$ph$i$i, $nr$0$ph$i$i, $775);
} else {
$776 = HEAP32[$ur$i >> 2] | 0;
$777 = ($776 * 3) | 0;
$778 = ($777 + $546) | 0;
$779 = HEAP32[$33 >> 2] | 0;
$780 = HEAP32[$aff$i >> 2] | 0;
$781 = Math_imul($780, $778) | 0;
$782 = HEAP32[$21 >> 2] | 0;
$783 = Math_imul($782, $779) | 0;
$784 = ($783 + $781) | 0;
$785 = HEAP32[$30 >> 2] | 0;
$786 = ($785 + -1) | 0;
$787 = 1 << $786;
$788 = ($784 + $787) | 0;
$789 = $788 >> $785;
$790 = HEAP32[$28 >> 2] | 0;
$791 = ($789 + $790) | 0;
$792 = HEAP32[$22 >> 2] | 0;
$793 = Math_imul($792, $778) | 0;
$794 = HEAP32[$23 >> 2] | 0;
$795 = Math_imul($794, $779) | 0;
$796 = ($793 + $787) | 0;
$797 = ($796 + $795) | 0;
$798 = $797 >> $785;
$799 = HEAP32[$29 >> 2] | 0;
$800 = ($798 + $799) | 0;
$ispos$i34$i = ($782 | 0) > -1;
$neg$i35$i = (0 - $782) | 0;
$801 = $ispos$i34$i ? $782 : $neg$i35$i;
$ispos4$i$i = ($794 | 0) > -1;
$neg5$i$i = (0 - $794) | 0;
$802 = $ispos4$i$i ? $794 : $neg5$i$i;
$803 = ($801 - $802) | 0;
$804 = ($802 | 0) > ($801 | 0);
$805 = $804 ? $803 : 0;
$806 = ($801 - $805) | 0;
$807 = _qr_ilog($806) | 0;
$808 = HEAP32[$30 >> 2] | 0;
$809 = ($808 + 1) | 0;
$810 = $809 >> 1;
$811 = HEAP32[$21 >> 2] | 0;
$ispos10$i$i = ($811 | 0) > -1;
$neg11$i$i = (0 - $811) | 0;
$812 = $ispos10$i$i ? $811 : $neg11$i$i;
$813 = HEAP32[$23 >> 2] | 0;
$ispos14$i$i = ($813 | 0) > -1;
$neg15$i$i = (0 - $813) | 0;
$814 = $ispos14$i$i ? $813 : $neg15$i$i;
$815 = ($812 - $814) | 0;
$816 = ($814 | 0) > ($812 | 0);
$817 = $816 ? $815 : 0;
$818 = ($812 - $817) | 0;
$819 = _qr_ilog($818) | 0;
$820 = HEAP32[$30 >> 2] | 0;
$821 = ($820 + 1) | 0;
$822 = $821 >> 1;
$823 = ($819 - $822) | 0;
$824 = ($823 | 0) > 0;
$825 = ($807 - $810) | 0;
$826 = $824 ? $825 : 0;
$827 = 1 << $826;
$828 = $827 >> 1;
$829 = HEAP32[$23 >> 2] | 0;
$830 = ($828 + $829) | 0;
$831 = $830 >> $826;
HEAP32[$45 >> 2] = $831;
$832 = HEAP32[$21 >> 2] | 0;
$833 = ($828 - $832) | 0;
$834 = $833 >> $826;
HEAP32[$$idx71$i$i >> 2] = $834;
$835 = Math_imul($831, $791) | 0;
$836 = Math_imul($834, $800) | 0;
$837 = ($835 + $836) | 0;
$838 = (0 - $837) | 0;
HEAP32[$87 >> 2] = $838;
}
_free($r$0$ph$i$i);
$839 = ($nb$0$i$i | 0) > 1;
if ($839) {
$840 = HEAP32[$30 >> 2] | 0;
_qr_line_fit_points($47, $b$0$i$i, $nb$0$i$i, $840);
} else {
$841 = HEAP32[$34 >> 2] | 0;
$842 = HEAP32[$35 >> 2] | 0;
$843 = HEAP32[$49 >> 2] | 0;
$844 = ($843 * 3) | 0;
$845 = ($844 + $842) | 0;
$846 = HEAP32[$aff$i >> 2] | 0;
$847 = Math_imul($846, $841) | 0;
$848 = HEAP32[$21 >> 2] | 0;
$849 = Math_imul($848, $845) | 0;
$850 = ($849 + $847) | 0;
$851 = HEAP32[$30 >> 2] | 0;
$852 = ($851 + -1) | 0;
$853 = 1 << $852;
$854 = ($850 + $853) | 0;
$855 = $854 >> $851;
$856 = HEAP32[$28 >> 2] | 0;
$857 = ($855 + $856) | 0;
$858 = HEAP32[$22 >> 2] | 0;
$859 = Math_imul($858, $841) | 0;
$860 = HEAP32[$23 >> 2] | 0;
$861 = Math_imul($860, $845) | 0;
$862 = ($859 + $853) | 0;
$863 = ($862 + $861) | 0;
$864 = $863 >> $851;
$865 = HEAP32[$29 >> 2] | 0;
$866 = ($864 + $865) | 0;
$ispos20$i$i = ($848 | 0) > -1;
$neg21$i$i = (0 - $848) | 0;
$867 = $ispos20$i$i ? $848 : $neg21$i$i;
$ispos24$i$i = ($860 | 0) > -1;
$neg25$i$i = (0 - $860) | 0;
$868 = $ispos24$i$i ? $860 : $neg25$i$i;
$869 = ($867 - $868) | 0;
$870 = ($868 | 0) > ($867 | 0);
$871 = $870 ? $869 : 0;
$872 = ($867 - $871) | 0;
$873 = _qr_ilog($872) | 0;
$874 = HEAP32[$30 >> 2] | 0;
$875 = ($874 + 1) | 0;
$876 = $875 >> 1;
$877 = HEAP32[$21 >> 2] | 0;
$ispos30$i$i = ($877 | 0) > -1;
$neg31$i$i = (0 - $877) | 0;
$878 = $ispos30$i$i ? $877 : $neg31$i$i;
$879 = HEAP32[$23 >> 2] | 0;
$ispos34$i$i = ($879 | 0) > -1;
$neg35$i$i = (0 - $879) | 0;
$880 = $ispos34$i$i ? $879 : $neg35$i$i;
$881 = ($878 - $880) | 0;
$882 = ($880 | 0) > ($878 | 0);
$883 = $882 ? $881 : 0;
$884 = ($878 - $883) | 0;
$885 = _qr_ilog($884) | 0;
$886 = HEAP32[$30 >> 2] | 0;
$887 = ($886 + 1) | 0;
$888 = $887 >> 1;
$889 = ($885 - $888) | 0;
$890 = ($889 | 0) > 0;
$891 = ($873 - $876) | 0;
$892 = $890 ? $891 : 0;
$893 = 1 << $892;
$894 = $893 >> 1;
$895 = HEAP32[$22 >> 2] | 0;
$896 = ($894 + $895) | 0;
$897 = $896 >> $892;
HEAP32[$47 >> 2] = $897;
$898 = HEAP32[$aff$i >> 2] | 0;
$899 = ($894 - $898) | 0;
$900 = $899 >> $892;
HEAP32[$$idx69$i$i >> 2] = $900;
$901 = HEAP32[$45 >> 2] | 0;
$902 = Math_imul($901, $857) | 0;
$903 = HEAP32[$$idx71$i$i >> 2] | 0;
$904 = Math_imul($903, $866) | 0;
$905 = ($902 + $904) | 0;
$906 = (0 - $905) | 0;
HEAP32[$86 >> 2] = $906;
}
_free($b$0$i$i);
$i$2108$i$i = 0;
while (1) {
$909 = ($bbox$i + ($i$2108$i$i << 3)) | 0;
$910 = $i$2108$i$i & 1;
$911 = ($l$i$i + (($910 * 12) | 0)) | 0;
$912 = $i$2108$i$i >> 1;
$913 = ($912 + 2) | 0;
$914 = ($l$i$i + (($913 * 12) | 0)) | 0;
$915 = HEAP32[$911 >> 2] | 0;
$916 = ((($l$i$i + (($913 * 12) | 0)) | 0) + 4) | 0;
$917 = HEAP32[$916 >> 2] | 0;
$918 = Math_imul($917, $915) | 0;
$919 = ((($l$i$i + (($910 * 12) | 0)) | 0) + 4) | 0;
$920 = HEAP32[$919 >> 2] | 0;
$921 = HEAP32[$914 >> 2] | 0;
$922 = Math_imul($921, $920) | 0;
$923 = ($918 - $922) | 0;
$924 = ($918 | 0) == ($922 | 0);
if ($924) {
$$01$i = 0;
$$1$i = $$0$i;
break L19;
}
$925 = ((($l$i$i + (($913 * 12) | 0)) | 0) + 8) | 0;
$926 = HEAP32[$925 >> 2] | 0;
$927 = Math_imul($926, $920) | 0;
$928 = ((($l$i$i + (($910 * 12) | 0)) | 0) + 8) | 0;
$929 = HEAP32[$928 >> 2] | 0;
$930 = Math_imul($929, $917) | 0;
$931 = ($927 - $930) | 0;
$932 = Math_imul($929, $921) | 0;
$933 = Math_imul($926, $915) | 0;
$934 = ($932 - $933) | 0;
$935 = ($923 | 0) < 0;
if ($935) {
$936 = (0 - $931) | 0;
$937 = (0 - $934) | 0;
$938 = (0 - $923) | 0;
$d$0$i$i$i = $938;
$x$0$i$i$i = $936;
$y$0$i$i$i = $937;
} else {
$d$0$i$i$i = $923;
$x$0$i$i$i = $931;
$y$0$i$i$i = $934;
}
$939 = $d$0$i$i$i >> 1;
$940 = $x$0$i$i$i >> 31;
$941 = ($940 + $939) | 0;
$942 = $941 ^ $940;
$943 = ($942 + $x$0$i$i$i) | 0;
$944 = (($943 | 0) / ($d$0$i$i$i | 0)) & -1;
HEAP32[$909 >> 2] = $944;
$945 = $y$0$i$i$i >> 31;
$946 = ($945 + $939) | 0;
$947 = $946 ^ $945;
$948 = ($947 + $y$0$i$i$i) | 0;
$949 = (($948 | 0) / ($d$0$i$i$i | 0)) & -1;
$950 = ((($bbox$i + ($i$2108$i$i << 3)) | 0) + 4) | 0;
HEAP32[$950 >> 2] = $949;
$951 = ($944 | 0) >= ($53 | 0);
$952 = ($944 | 0) < ($54 | 0);
$or$cond43$i$i = $951 & $952;
if (!$or$cond43$i$i) {
$$01$i = 0;
$$1$i = $$0$i;
break L19;
}
$953 = ($949 | 0) >= ($56 | 0);
$954 = ($949 | 0) < ($57 | 0);
$or$cond45$i$i = $953 & $954;
$907 = ($i$2108$i$i + 1) | 0;
if (!$or$cond45$i$i) {
$$01$i = 0;
$$1$i = $$0$i;
break L19;
}
$908 = ($907 | 0) < 4;
if ($908) {
$i$2108$i$i = $907;
} else {
break;
}
}
$955 = HEAP32[$58 >> 2] | 0;
$956 = HEAP32[$59 >> 2] | 0;
$957 = HEAP32[$41 >> 2] | 0;
$958 = HEAP32[$40 >> 2] | 0;
$959 = ($958 + $957) | 0;
$960 = HEAP32[$60 >> 2] | 0;
$961 = ($959 + $960) | 0;
$962 = HEAP32[$61 >> 2] | 0;
$963 = ($961 + $962) | 0;
$964 = ($963 | 0) > 4;
do {
if ($964) {
$965 = ($963 + 16) | 0;
$966 = HEAP32[$bbox$i >> 2] | 0;
$967 = HEAP32[$62 >> 2] | 0;
$968 = HEAP32[$63 >> 2] | 0;
$969 = HEAP32[$64 >> 2] | 0;
$970 = HEAP32[$65 >> 2] | 0;
$971 = HEAP32[$66 >> 2] | 0;
_qr_hom_cell_init(
$cell$i$i,
0,
0,
$965,
0,
0,
$965,
$965,
$965,
$966,
$967,
$968,
$969,
$970,
$971,
$955,
$956
);
$972 = ($963 + 10) | 0;
$973 =
_qr_alignment_pattern_search($p3$i$i, $cell$i$i, $972, $972, 4, $_img, $_width, $_height) | 0;
$974 = ($973 | 0) > -1;
if (!$974) {
$1114 = $966;
$1115 = $968;
$1117 = $970;
$1122 = $967;
$1123 = $969;
$1125 = $971;
$brx$2$i$i = $955;
$bry$2$i$i = $956;
break;
}
$975 = Math_imul($970, $969) | 0;
$976 = Math_imul($971, $968) | 0;
$977 = ($975 - $976) | 0;
$978 = ($970 - $968) | 0;
$979 = ($971 - $969) | 0;
$980 = ($972 | 0) < 0;
$981 = ($980 << 31) >> 31;
$982 = ($977 | 0) < 0;
$983 = ($982 << 31) >> 31;
$984 = ___muldi3($977 | 0, $983 | 0, $972 | 0, $981 | 0) | 0;
$985 = tempRet0;
$986 = ($963 + 4) | 0;
$987 = ($986 | 0) < 0;
$988 = ($987 << 31) >> 31;
$989 = Math_imul($979, $966) | 0;
$990 = Math_imul($978, $967) | 0;
$991 = ($989 - $990) | 0;
$992 = ($991 | 0) < 0;
$993 = ($992 << 31) >> 31;
$994 = ___muldi3($991 | 0, $993 | 0, $986 | 0, $988 | 0) | 0;
$995 = tempRet0;
$996 = HEAP32[$p3$i$i >> 2] | 0;
$997 = Math_imul($996, $979) | 0;
$998 = HEAP32[$67 >> 2] | 0;
$999 = Math_imul($998, $978) | 0;
$1000 = ($997 - $999) | 0;
$1001 = ($1000 | 0) < 0;
$1002 = ($1001 << 31) >> 31;
$1003 = ___muldi3($1000 | 0, $1002 | 0, 6, 0) | 0;
$1004 = tempRet0;
$1005 = _i64Add($994 | 0, $995 | 0, $984 | 0, $985 | 0) | 0;
$1006 = tempRet0;
$1007 = _i64Add($1005 | 0, $1006 | 0, $1003 | 0, $1004 | 0) | 0;
$1008 = tempRet0;
$1009 = ($1007 | 0) == 0;
$1010 = ($1008 | 0) == 0;
$1011 = $1009 & $1010;
if ($1011) {
$$01$i = 0;
$$1$i = $$0$i;
break L19;
}
$1012 = _bitshift64Lshr($1007 | 0, $1008 | 0, 63) | 0;
$1013 = tempRet0;
$1014 = (0 - $1012) | 0;
$1015 = ($1014 | 0) < 0;
$1016 = ($1015 << 31) >> 31;
$1017 = _i64Add($1014 | 0, $1016 | 0, $1007 | 0, $1008 | 0) | 0;
$1018 = tempRet0;
$1019 = $1017 ^ $1014;
$1020 = $1018 ^ $1016;
$1021 = Math_imul($966, $972) | 0;
$1022 = ($1021 | 0) < 0;
$1023 = ($1022 << 31) >> 31;
$1024 = ($997 | 0) < 0;
$1025 = ($1024 << 31) >> 31;
$1026 = ___muldi3($997 | 0, $1025 | 0, $1021 | 0, $1023 | 0) | 0;
$1027 = tempRet0;
$1028 = Math_imul($996, $986) | 0;
$1029 = ($1028 | 0) < 0;
$1030 = ($1029 << 31) >> 31;
$1031 = ($977 - $990) | 0;
$1032 = ($1031 | 0) < 0;
$1033 = ($1032 << 31) >> 31;
$1034 = ___muldi3($1028 | 0, $1030 | 0, $1031 | 0, $1033 | 0) | 0;
$1035 = tempRet0;
$1036 = ($966 * 6) | 0;
$1037 = ($1036 | 0) < 0;
$1038 = ($1037 << 31) >> 31;
$1039 = ($977 - $999) | 0;
$1040 = ($1039 | 0) < 0;
$1041 = ($1040 << 31) >> 31;
$1042 = ___muldi3($1039 | 0, $1041 | 0, $1036 | 0, $1038 | 0) | 0;
$1043 = tempRet0;
$1044 = _i64Add($1026 | 0, $1027 | 0, $1034 | 0, $1035 | 0) | 0;
$1045 = tempRet0;
$1046 = _i64Add($1044 | 0, $1045 | 0, $1042 | 0, $1043 | 0) | 0;
$1047 = tempRet0;
$1048 = _i64Add($1046 | 0, $1047 | 0, $1014 | 0, $1016 | 0) | 0;
$1049 = tempRet0;
$1050 = $1048 ^ $1014;
$1051 = $1049 ^ $1016;
$1052 = _bitshift64Ashr($1019 | 0, $1020 | 0, 1) | 0;
$1053 = tempRet0;
$1054 = _bitshift64Lshr($1050 | 0, $1051 | 0, 63) | 0;
$1055 = tempRet0;
$1056 = (0 - $1054) | 0;
$1057 = ($1056 | 0) < 0;
$1058 = ($1057 << 31) >> 31;
$1059 = _i64Add($1056 | 0, $1058 | 0, $1052 | 0, $1053 | 0) | 0;
$1060 = tempRet0;
$1061 = $1059 ^ $1056;
$1062 = $1060 ^ $1058;
$1063 = _i64Add($1061 | 0, $1062 | 0, $1050 | 0, $1051 | 0) | 0;
$1064 = tempRet0;
$1065 = ___divdi3($1063 | 0, $1064 | 0, $1019 | 0, $1020 | 0) | 0;
$1066 = tempRet0;
$1067 = Math_imul($967, $972) | 0;
$1068 = ($1067 | 0) < 0;
$1069 = ($1068 << 31) >> 31;
$1070 = (0 - $978) | 0;
$1071 = Math_imul($998, $1070) | 0;
$1072 = ($1071 | 0) < 0;
$1073 = ($1072 << 31) >> 31;
$1074 = ___muldi3($1071 | 0, $1073 | 0, $1067 | 0, $1069 | 0) | 0;
$1075 = tempRet0;
$1076 = Math_imul($998, $986) | 0;
$1077 = ($1076 | 0) < 0;
$1078 = ($1077 << 31) >> 31;
$1079 = ($977 + $989) | 0;
$1080 = ($1079 | 0) < 0;
$1081 = ($1080 << 31) >> 31;
$1082 = ___muldi3($1076 | 0, $1078 | 0, $1079 | 0, $1081 | 0) | 0;
$1083 = tempRet0;
$1084 = ($967 * 6) | 0;
$1085 = ($1084 | 0) < 0;
$1086 = ($1085 << 31) >> 31;
$1087 = ($997 + $977) | 0;
$1088 = ($1087 | 0) < 0;
$1089 = ($1088 << 31) >> 31;
$1090 = ___muldi3($1087 | 0, $1089 | 0, $1084 | 0, $1086 | 0) | 0;
$1091 = tempRet0;
$1092 = _i64Add($1082 | 0, $1083 | 0, $1090 | 0, $1091 | 0) | 0;
$1093 = tempRet0;
$1094 = _i64Add($1092 | 0, $1093 | 0, $1074 | 0, $1075 | 0) | 0;
$1095 = tempRet0;
$1096 = _i64Add($1094 | 0, $1095 | 0, $1014 | 0, $1016 | 0) | 0;
$1097 = tempRet0;
$1098 = $1096 ^ $1014;
$1099 = $1097 ^ $1016;
$1100 = _bitshift64Lshr($1098 | 0, $1099 | 0, 63) | 0;
$1101 = tempRet0;
$1102 = (0 - $1100) | 0;
$1103 = ($1102 | 0) < 0;
$1104 = ($1103 << 31) >> 31;
$1105 = _i64Add($1102 | 0, $1104 | 0, $1052 | 0, $1053 | 0) | 0;
$1106 = tempRet0;
$1107 = $1105 ^ $1102;
$1108 = $1106 ^ $1104;
$1109 = _i64Add($1107 | 0, $1108 | 0, $1098 | 0, $1099 | 0) | 0;
$1110 = tempRet0;
$1111 = ___divdi3($1109 | 0, $1110 | 0, $1019 | 0, $1020 | 0) | 0;
$1112 = tempRet0;
$1114 = $966;
$1115 = $968;
$1117 = $970;
$1122 = $967;
$1123 = $969;
$1125 = $971;
$brx$2$i$i = $1065;
$bry$2$i$i = $1111;
} else {
$$pre$i = HEAP32[$bbox$i >> 2] | 0;
$$pre104$i = HEAP32[$62 >> 2] | 0;
$$pre105$i = HEAP32[$63 >> 2] | 0;
$$pre106$i = HEAP32[$64 >> 2] | 0;
$$pre107$i = HEAP32[$65 >> 2] | 0;
$$pre108$i = HEAP32[$66 >> 2] | 0;
$1114 = $$pre$i;
$1115 = $$pre105$i;
$1117 = $$pre107$i;
$1122 = $$pre104$i;
$1123 = $$pre106$i;
$1125 = $$pre108$i;
$brx$2$i$i = $955;
$bry$2$i$i = $956;
}
} while (0);
$1113 = ($1115 - $1114) | 0;
$1116 = ($1117 - $1114) | 0;
$1118 = ($brx$2$i$i - $1114) | 0;
$1119 = ($brx$2$i$i - $1115) | 0;
$1120 = ($brx$2$i$i - $1117) | 0;
$1121 = ($1123 - $1122) | 0;
$1124 = ($1125 - $1122) | 0;
$1126 = ($bry$2$i$i - $1122) | 0;
$1127 = ($bry$2$i$i - $1123) | 0;
$1128 = ($bry$2$i$i - $1125) | 0;
$1129 = Math_imul($1120, $1121) | 0;
$1130 = Math_imul($1128, $1113) | 0;
$1131 = ($1129 - $1130) | 0;
$1132 = Math_imul($1127, $1116) | 0;
$1133 = Math_imul($1119, $1124) | 0;
$1134 = ($1132 - $1133) | 0;
$1135 = Math_imul($1127, $1120) | 0;
$1136 = Math_imul($1128, $1119) | 0;
$1137 = ($1135 - $1136) | 0;
$ispos$i$i$i = ($1113 | 0) > -1;
$neg$i$i$i = (0 - $1113) | 0;
$1138 = $ispos$i$i$i ? $1113 : $neg$i$i$i;
$ispos3$i$i$i = ($1121 | 0) > -1;
$neg4$i$i$i = (0 - $1121) | 0;
$1139 = $ispos3$i$i$i ? $1121 : $neg4$i$i$i;
$1140 = ($1138 - $1139) | 0;
$1141 = ($1139 | 0) > ($1138 | 0);
$1142 = $1141 ? $1140 : 0;
$1143 = ($1138 - $1142) | 0;
$1144 = _qr_ilog($1143) | 0;
$1145 = ($1131 + $1137) | 0;
$ispos9$i$i$i = ($1145 | 0) > -1;
$neg10$i$i$i = (0 - $1145) | 0;
$1146 = $ispos9$i$i$i ? $1145 : $neg10$i$i$i;
$1147 = _qr_ilog($1146) | 0;
$1148 = ($1147 + $1144) | 0;
$ispos11$i$i$i = ($1116 | 0) > -1;
$neg12$i$i$i = (0 - $1116) | 0;
$1149 = $ispos11$i$i$i ? $1116 : $neg12$i$i$i;
$ispos15$i$i$i = ($1124 | 0) > -1;
$neg16$i$i$i = (0 - $1124) | 0;
$1150 = $ispos15$i$i$i ? $1124 : $neg16$i$i$i;
$1151 = ($1149 - $1150) | 0;
$1152 = ($1150 | 0) > ($1149 | 0);
$1153 = $1152 ? $1151 : 0;
$1154 = ($1149 - $1153) | 0;
$1155 = _qr_ilog($1154) | 0;
$1156 = ($1134 + $1137) | 0;
$ispos21$i$i$i = ($1156 | 0) > -1;
$neg22$i$i$i = (0 - $1156) | 0;
$1157 = $ispos21$i$i$i ? $1156 : $neg22$i$i$i;
$1158 = _qr_ilog($1157) | 0;
$1159 = ($1158 + $1155) | 0;
$ispos23$i$i$i = ($1131 | 0) > -1;
$neg24$i$i$i = (0 - $1131) | 0;
$1160 = $ispos23$i$i$i ? $1131 : $neg24$i$i$i;
$ispos27$i$i$i = ($1134 | 0) > -1;
$neg28$i$i$i = (0 - $1134) | 0;
$1161 = $ispos27$i$i$i ? $1134 : $neg28$i$i$i;
$1162 = ($1160 - $1161) | 0;
$1163 = ($1161 | 0) > ($1160 | 0);
$1164 = $1163 ? $1162 : 0;
$1165 = ($1160 - $1164) | 0;
$ispos43$i$i$i = ($1137 | 0) > -1;
$neg44$i$i$i = (0 - $1137) | 0;
$1166 = $ispos43$i$i$i ? $1137 : $neg44$i$i$i;
$1167 = ($1165 - $1166) | 0;
$1168 = ($1166 | 0) > ($1165 | 0);
$1169 = $1168 ? $1167 : 0;
$1170 = ($1165 - $1169) | 0;
$1171 = _qr_ilog($1170) | 0;
$1172 = ($1148 - $1159) | 0;
$1173 = ($1159 | 0) > ($1148 | 0);
$1174 = $1173 ? $1172 : 0;
$1175 = ($1148 - $1174) | 0;
$1176 = ($1175 - $1171) | 0;
$1177 = ($1171 | 0) > ($1175 | 0);
$1178 = $1177 ? $1176 : 0;
$1179 = ($1175 - $1178) | 0;
$1180 = ($1179 + -16) | 0;
$1181 = ($1180 | 0) > 0;
$1182 = $1181 ? $1180 : 0;
$1183 = 1 << $1182;
$1184 = $1183 >> 1;
$1185 = ($1113 | 0) < 0;
$1186 = ($1185 << 31) >> 31;
$1187 = ($1145 | 0) < 0;
$1188 = ($1187 << 31) >> 31;
$1189 = ___muldi3($1145 | 0, $1188 | 0, $1113 | 0, $1186 | 0) | 0;
$1190 = tempRet0;
$1191 = ($1184 | 0) < 0;
$1192 = ($1191 << 31) >> 31;
$1193 = _i64Add($1184 | 0, $1192 | 0, $1189 | 0, $1190 | 0) | 0;
$1194 = tempRet0;
$1195 = _bitshift64Ashr($1193 | 0, $1194 | 0, $1182 | 0) | 0;
$1196 = tempRet0;
HEAP32[$hom$i >> 2] = $1195;
$1197 = ($1116 | 0) < 0;
$1198 = ($1197 << 31) >> 31;
$1199 = ($1156 | 0) < 0;
$1200 = ($1199 << 31) >> 31;
$1201 = ___muldi3($1156 | 0, $1200 | 0, $1116 | 0, $1198 | 0) | 0;
$1202 = tempRet0;
$1203 = _i64Add($1184 | 0, $1192 | 0, $1201 | 0, $1202 | 0) | 0;
$1204 = tempRet0;
$1205 = _bitshift64Ashr($1203 | 0, $1204 | 0, $1182 | 0) | 0;
$1206 = tempRet0;
HEAP32[$68 >> 2] = $1205;
HEAP32[$69 >> 2] = $1114;
$1207 = ($1121 | 0) < 0;
$1208 = ($1207 << 31) >> 31;
$1209 = ___muldi3($1145 | 0, $1188 | 0, $1121 | 0, $1208 | 0) | 0;
$1210 = tempRet0;
$1211 = _i64Add($1184 | 0, $1192 | 0, $1209 | 0, $1210 | 0) | 0;
$1212 = tempRet0;
$1213 = _bitshift64Ashr($1211 | 0, $1212 | 0, $1182 | 0) | 0;
$1214 = tempRet0;
HEAP32[$70 >> 2] = $1213;
$1215 = ($1124 | 0) < 0;
$1216 = ($1215 << 31) >> 31;
$1217 = ___muldi3($1156 | 0, $1200 | 0, $1124 | 0, $1216 | 0) | 0;
$1218 = tempRet0;
$1219 = _i64Add($1184 | 0, $1192 | 0, $1217 | 0, $1218 | 0) | 0;
$1220 = tempRet0;
$1221 = _bitshift64Ashr($1219 | 0, $1220 | 0, $1182 | 0) | 0;
$1222 = tempRet0;
HEAP32[$71 >> 2] = $1221;
HEAP32[$72 >> 2] = $1122;
$1223 = ($1184 + $1131) | 0;
$1224 = $1223 >> $1182;
HEAP32[$73 >> 2] = $1224;
$1225 = ($1184 + $1134) | 0;
$1226 = $1225 >> $1182;
HEAP32[$74 >> 2] = $1226;
$1227 = ($1182 | 0) > 14;
if ($1227) {
$1228 = $1183 >> 15;
$1229 = ($1228 + $1137) | 0;
$1230 = ($1182 + -14) | 0;
$1231 = $1229 >> $1230;
$1234 = $1231;
} else {
$1232 = (14 - $1182) | 0;
$1233 = $1137 << $1232;
$1234 = $1233;
}
HEAP32[$75 >> 2] = $1234;
$1235 = ($1138 - $1149) | 0;
$1236 = ($1149 | 0) > ($1138 | 0);
$1237 = $1236 ? $1235 : 0;
$1238 = ($1138 - $1237) | 0;
$ispos77$i$i$i = ($1118 | 0) > -1;
$neg78$i$i$i = (0 - $1118) | 0;
$1239 = $ispos77$i$i$i ? $1118 : $neg78$i$i$i;
$1240 = ($1238 - $1239) | 0;
$1241 = ($1239 | 0) > ($1238 | 0);
$1242 = $1241 ? $1240 : 0;
$1243 = ($1238 - $1242) | 0;
$1244 = _qr_ilog($1243) | 0;
$ispos91$i$i$i = ($1195 | 0) > -1;
$neg92$i$i$i = (0 - $1195) | 0;
$1245 = $ispos91$i$i$i ? $1195 : $neg92$i$i$i;
$ispos95$i$i$i = ($1213 | 0) > -1;
$neg96$i$i$i = (0 - $1213) | 0;
$1246 = $ispos95$i$i$i ? $1213 : $neg96$i$i$i;
$1247 = ($1245 - $1246) | 0;
$1248 = ($1246 | 0) > ($1245 | 0);
$1249 = $1248 ? $1247 : 0;
$1250 = ($1245 - $1249) | 0;
$1251 = _qr_ilog($1250) | 0;
$1252 = ($1251 + $1244) | 0;
$1253 = ($1139 - $1150) | 0;
$1254 = ($1150 | 0) > ($1139 | 0);
$1255 = $1254 ? $1253 : 0;
$1256 = ($1139 - $1255) | 0;
$ispos121$i$i$i = ($1126 | 0) > -1;
$neg122$i$i$i = (0 - $1126) | 0;
$1257 = $ispos121$i$i$i ? $1126 : $neg122$i$i$i;
$1258 = ($1256 - $1257) | 0;
$1259 = ($1257 | 0) > ($1256 | 0);
$1260 = $1259 ? $1258 : 0;
$1261 = ($1256 - $1260) | 0;
$1262 = _qr_ilog($1261) | 0;
$ispos135$i$i$i = ($1205 | 0) > -1;
$neg136$i$i$i = (0 - $1205) | 0;
$1263 = $ispos135$i$i$i ? $1205 : $neg136$i$i$i;
$ispos139$i$i$i = ($1221 | 0) > -1;
$neg140$i$i$i = (0 - $1221) | 0;
$1264 = $ispos139$i$i$i ? $1221 : $neg140$i$i$i;
$1265 = ($1263 - $1264) | 0;
$1266 = ($1264 | 0) > ($1263 | 0);
$1267 = $1266 ? $1265 : 0;
$1268 = ($1263 - $1267) | 0;
$1269 = _qr_ilog($1268) | 0;
$1270 = ($1269 + $1262) | 0;
$1271 = _qr_ilog($1166) | 0;
$1272 = ($1270 | 0) > ($1252 | 0);
$1273 = ($1270 - $1252) | 0;
$$neg103$i$i = $1272 ? $1273 : 0;
$1274 = (-29 - $1182) | 0;
$1275 = ($1274 + $1252) | 0;
$1276 = ($1275 + $1271) | 0;
$1277 = ($1276 + $$neg103$i$i) | 0;
$1278 = ($1277 | 0) > 0;
$1279 = $1278 ? $1277 : 0;
$1280 = 1 << $1279;
$1281 = $1280 >> 1;
$1282 = ($1279 + $1182) | 0;
$1283 = $1184 << $1279;
$1284 = ($1221 | 0) < 0;
$1285 = ($1284 << 31) >> 31;
$1286 = ($1137 | 0) < 0;
$1287 = ($1286 << 31) >> 31;
$1288 = ___muldi3($1221 | 0, $1285 | 0, $1137 | 0, $1287 | 0) | 0;
$1289 = tempRet0;
$1290 = ($1283 | 0) < 0;
$1291 = ($1290 << 31) >> 31;
$1292 = _i64Add($1283 | 0, $1291 | 0, $1288 | 0, $1289 | 0) | 0;
$1293 = tempRet0;
$1294 = _bitshift64Ashr($1292 | 0, $1293 | 0, $1282 | 0) | 0;
$1295 = tempRet0;
HEAP32[$76 >> 2] = $1294;
$1296 = ($neg136$i$i$i | 0) < 0;
$1297 = ($1296 << 31) >> 31;
$1298 = ___muldi3($neg136$i$i$i | 0, $1297 | 0, $1137 | 0, $1287 | 0) | 0;
$1299 = tempRet0;
$1300 = _i64Add($1283 | 0, $1291 | 0, $1298 | 0, $1299 | 0) | 0;
$1301 = tempRet0;
$1302 = _bitshift64Ashr($1300 | 0, $1301 | 0, $1282 | 0) | 0;
$1303 = tempRet0;
HEAP32[$77 >> 2] = $1302;
$1304 = ($neg96$i$i$i | 0) < 0;
$1305 = ($1304 << 31) >> 31;
$1306 = ___muldi3($neg96$i$i$i | 0, $1305 | 0, $1137 | 0, $1287 | 0) | 0;
$1307 = tempRet0;
$1308 = _i64Add($1283 | 0, $1291 | 0, $1306 | 0, $1307 | 0) | 0;
$1309 = tempRet0;
$1310 = _bitshift64Ashr($1308 | 0, $1309 | 0, $1282 | 0) | 0;
$1311 = tempRet0;
HEAP32[$78 >> 2] = $1310;
$1312 = ($1195 | 0) < 0;
$1313 = ($1312 << 31) >> 31;
$1314 = ___muldi3($1195 | 0, $1313 | 0, $1137 | 0, $1287 | 0) | 0;
$1315 = tempRet0;
$1316 = _i64Add($1283 | 0, $1291 | 0, $1314 | 0, $1315 | 0) | 0;
$1317 = tempRet0;
$1318 = _bitshift64Ashr($1316 | 0, $1317 | 0, $1282 | 0) | 0;
$1319 = tempRet0;
HEAP32[$79 >> 2] = $1318;
$1320 = ($1213 | 0) < 0;
$1321 = ($1320 << 31) >> 31;
$1322 = ($1226 | 0) < 0;
$1323 = ($1322 << 31) >> 31;
$1324 = ___muldi3($1213 | 0, $1321 | 0, $1226 | 0, $1323 | 0) | 0;
$1325 = tempRet0;
$1326 = ($1224 | 0) < 0;
$1327 = ($1326 << 31) >> 31;
$1328 = ___muldi3($1221 | 0, $1285 | 0, $1224 | 0, $1327 | 0) | 0;
$1329 = tempRet0;
$1330 = ($1281 | 0) < 0;
$1331 = ($1330 << 31) >> 31;
$1332 = _i64Subtract($1324 | 0, $1325 | 0, $1328 | 0, $1329 | 0) | 0;
$1333 = tempRet0;
$1334 = _i64Subtract($1332 | 0, $1333 | 0, $1281 | 0, $1331 | 0) | 0;
$1335 = tempRet0;
$1336 = _bitshift64Ashr($1334 | 0, $1335 | 0, $1279 | 0) | 0;
$1337 = tempRet0;
HEAP32[$80 >> 2] = $1336;
$1338 = HEAP32[$68 >> 2] | 0;
$1339 = ($1338 | 0) < 0;
$1340 = ($1339 << 31) >> 31;
$1341 = HEAP32[$73 >> 2] | 0;
$1342 = ($1341 | 0) < 0;
$1343 = ($1342 << 31) >> 31;
$1344 = ___muldi3($1341 | 0, $1343 | 0, $1338 | 0, $1340 | 0) | 0;
$1345 = tempRet0;
$1346 = HEAP32[$hom$i >> 2] | 0;
$1347 = ($1346 | 0) < 0;
$1348 = ($1347 << 31) >> 31;
$1349 = HEAP32[$74 >> 2] | 0;
$1350 = ($1349 | 0) < 0;
$1351 = ($1350 << 31) >> 31;
$1352 = ___muldi3($1349 | 0, $1351 | 0, $1346 | 0, $1348 | 0) | 0;
$1353 = tempRet0;
$1354 = _i64Subtract($1344 | 0, $1345 | 0, $1352 | 0, $1353 | 0) | 0;
$1355 = tempRet0;
$1356 = _i64Subtract($1354 | 0, $1355 | 0, $1281 | 0, $1331 | 0) | 0;
$1357 = tempRet0;
$1358 = _bitshift64Ashr($1356 | 0, $1357 | 0, $1279 | 0) | 0;
$1359 = tempRet0;
HEAP32[$81 >> 2] = $1358;
$1360 = HEAP32[$71 >> 2] | 0;
$1361 = ($1360 | 0) < 0;
$1362 = ($1361 << 31) >> 31;
$1363 = ___muldi3($1360 | 0, $1362 | 0, $1346 | 0, $1348 | 0) | 0;
$1364 = tempRet0;
$1365 = HEAP32[$70 >> 2] | 0;
$1366 = ($1365 | 0) < 0;
$1367 = ($1366 << 31) >> 31;
$1368 = ___muldi3($1365 | 0, $1367 | 0, $1338 | 0, $1340 | 0) | 0;
$1369 = tempRet0;
$1370 = _i64Subtract($1363 | 0, $1364 | 0, $1281 | 0, $1331 | 0) | 0;
$1371 = tempRet0;
$1372 = _i64Subtract($1370 | 0, $1371 | 0, $1368 | 0, $1369 | 0) | 0;
$1373 = tempRet0;
$1374 = _bitshift64Ashr($1372 | 0, $1373 | 0, $1279 | 0) | 0;
$1375 = tempRet0;
HEAP32[$82 >> 2] = $1374;
HEAP32[$83 >> 2] = 14;
HEAP32[($84 + 0) >> 2] = HEAP32[($bbox$i + 0) >> 2] | 0;
HEAP32[($84 + 4) >> 2] = HEAP32[($bbox$i + 4) >> 2] | 0;
HEAP32[($84 + 8) >> 2] = HEAP32[($bbox$i + 8) >> 2] | 0;
HEAP32[($84 + 12) >> 2] = HEAP32[($bbox$i + 12) >> 2] | 0;
HEAP32[($84 + 16) >> 2] = HEAP32[($bbox$i + 16) >> 2] | 0;
HEAP32[($84 + 20) >> 2] = HEAP32[($bbox$i + 20) >> 2] | 0;
HEAP32[($84 + 24) >> 2] = HEAP32[($bbox$i + 24) >> 2] | 0;
HEAP32[($84 + 28) >> 2] = HEAP32[($bbox$i + 28) >> 2] | 0;
$1376 = HEAP32[$14 >> 2] | 0;
$1377 = HEAP32[$1376 >> 2] | 0;
$1378 = ($1376 + 4) | 0;
$1379 = HEAP32[$1378 >> 2] | 0;
$1380 = HEAP32[$69 >> 2] | 0;
$1381 = ($1377 - $1380) | 0;
$1382 = HEAP32[$72 >> 2] | 0;
$1383 = ($1379 - $1382) | 0;
$1384 = Math_imul($1381, $1294) | 0;
$1385 = Math_imul($1383, $1302) | 0;
$1386 = ($1385 + $1384) | 0;
$1387 = Math_imul($1381, $1310) | 0;
$1388 = Math_imul($1383, $1318) | 0;
$1389 = ($1388 + $1387) | 0;
$1390 = Math_imul($1381, $1336) | 0;
$1391 = Math_imul($1383, $1358) | 0;
$1392 = ($1374 + 8192) | 0;
$1393 = ($1392 + $1390) | 0;
$1394 = ($1393 + $1391) | 0;
$1395 = $1394 >> 14;
$1396 = ($1395 | 0) == 0;
if ($1396) {
$1397 = $1386 >>> 31;
$1398 = ($1397 + 2147483647) | 0;
HEAP32[$38 >> 2] = $1398;
$1399 = $1389 >>> 31;
$1400 = ($1399 + 2147483647) | 0;
$1416 = $1400;
$1493 = $1398;
} else {
$1401 = ($1395 | 0) < 0;
if ($1401) {
$1402 = (0 - $1386) | 0;
$1403 = (0 - $1389) | 0;
$1404 = (0 - $1395) | 0;
$w$0$i$i = $1404;
$x$0$i$i = $1402;
$y$0$i$i = $1403;
} else {
$w$0$i$i = $1395;
$x$0$i$i = $1386;
$y$0$i$i = $1389;
}
$1405 = $w$0$i$i >> 1;
$1406 = $x$0$i$i >> 31;
$1407 = ($1405 + $1406) | 0;
$1408 = $1407 ^ $1406;
$1409 = ($1408 + $x$0$i$i) | 0;
$1410 = (($1409 | 0) / ($w$0$i$i | 0)) & -1;
HEAP32[$38 >> 2] = $1410;
$1411 = $y$0$i$i >> 31;
$1412 = ($1405 + $1411) | 0;
$1413 = $1412 ^ $1411;
$1414 = ($1413 + $y$0$i$i) | 0;
$1415 = (($1414 | 0) / ($w$0$i$i | 0)) & -1;
$1416 = $1415;
$1493 = $1410;
}
HEAP32[$39 >> 2] = $1416;
$1417 = HEAP32[$15 >> 2] | 0;
$1418 = HEAP32[$1417 >> 2] | 0;
$1419 = ($1417 + 4) | 0;
$1420 = HEAP32[$1419 >> 2] | 0;
$1421 = ($1418 - $1380) | 0;
$1422 = ($1420 - $1382) | 0;
$1423 = Math_imul($1421, $1294) | 0;
$1424 = Math_imul($1422, $1302) | 0;
$1425 = ($1424 + $1423) | 0;
$1426 = Math_imul($1421, $1310) | 0;
$1427 = Math_imul($1422, $1318) | 0;
$1428 = ($1427 + $1426) | 0;
$1429 = Math_imul($1421, $1336) | 0;
$1430 = Math_imul($1422, $1358) | 0;
$1431 = ($1392 + $1429) | 0;
$1432 = ($1431 + $1430) | 0;
$1433 = $1432 >> 14;
$1434 = ($1433 | 0) == 0;
if ($1434) {
$1435 = $1425 >>> 31;
$1436 = ($1435 + 2147483647) | 0;
HEAP32[$32 >> 2] = $1436;
$1437 = $1428 >>> 31;
$1438 = ($1437 + 2147483647) | 0;
$storemerge63$i = $1438;
} else {
$1439 = ($1433 | 0) < 0;
if ($1439) {
$1440 = (0 - $1425) | 0;
$1441 = (0 - $1428) | 0;
$1442 = (0 - $1433) | 0;
$w$0$i38$i = $1442;
$x$0$i36$i = $1440;
$y$0$i37$i = $1441;
} else {
$w$0$i38$i = $1433;
$x$0$i36$i = $1425;
$y$0$i37$i = $1428;
}
$1443 = $w$0$i38$i >> 1;
$1444 = $x$0$i36$i >> 31;
$1445 = ($1443 + $1444) | 0;
$1446 = $1445 ^ $1444;
$1447 = ($1446 + $x$0$i36$i) | 0;
$1448 = (($1447 | 0) / ($w$0$i38$i | 0)) & -1;
HEAP32[$32 >> 2] = $1448;
$1449 = $y$0$i37$i >> 31;
$1450 = ($1443 + $1449) | 0;
$1451 = $1450 ^ $1449;
$1452 = ($1451 + $y$0$i37$i) | 0;
$1453 = (($1452 | 0) / ($w$0$i38$i | 0)) & -1;
$storemerge63$i = $1453;
}
HEAP32[$33 >> 2] = $storemerge63$i;
$1454 = HEAP32[$16 >> 2] | 0;
$1455 = HEAP32[$1454 >> 2] | 0;
$1456 = ($1454 + 4) | 0;
$1457 = HEAP32[$1456 >> 2] | 0;
$1458 = ($1455 - $1380) | 0;
$1459 = ($1457 - $1382) | 0;
$1460 = Math_imul($1458, $1294) | 0;
$1461 = Math_imul($1459, $1302) | 0;
$1462 = ($1461 + $1460) | 0;
$1463 = Math_imul($1458, $1310) | 0;
$1464 = Math_imul($1459, $1318) | 0;
$1465 = ($1464 + $1463) | 0;
$1466 = Math_imul($1458, $1336) | 0;
$1467 = Math_imul($1459, $1358) | 0;
$1468 = ($1392 + $1466) | 0;
$1469 = ($1468 + $1467) | 0;
$1470 = $1469 >> 14;
$1471 = ($1470 | 0) == 0;
if ($1471) {
$1472 = $1462 >>> 31;
$1473 = ($1472 + 2147483647) | 0;
HEAP32[$34 >> 2] = $1473;
$1474 = $1465 >>> 31;
$1475 = ($1474 + 2147483647) | 0;
$storemerge64$i = $1475;
} else {
$1476 = ($1470 | 0) < 0;
if ($1476) {
$1477 = (0 - $1462) | 0;
$1478 = (0 - $1465) | 0;
$1479 = (0 - $1470) | 0;
$w$0$i43$i = $1479;
$x$0$i41$i = $1477;
$y$0$i42$i = $1478;
} else {
$w$0$i43$i = $1470;
$x$0$i41$i = $1462;
$y$0$i42$i = $1465;
}
$1480 = $w$0$i43$i >> 1;
$1481 = $x$0$i41$i >> 31;
$1482 = ($1480 + $1481) | 0;
$1483 = $1482 ^ $1481;
$1484 = ($1483 + $x$0$i41$i) | 0;
$1485 = (($1484 | 0) / ($w$0$i43$i | 0)) & -1;
HEAP32[$34 >> 2] = $1485;
$1486 = $y$0$i42$i >> 31;
$1487 = ($1480 + $1486) | 0;
$1488 = $1487 ^ $1486;
$1489 = ($1488 + $y$0$i42$i) | 0;
$1490 = (($1489 | 0) / ($w$0$i43$i | 0)) & -1;
$storemerge64$i = $1490;
}
HEAP32[$35 >> 2] = $storemerge64$i;
_qr_finder_edge_pts_hom_classify($ur$i, $hom$i);
$1491 = HEAP32[$32 >> 2] | 0;
$1492 = ($1491 - $1493) | 0;
$1494 = _qr_finder_estimate_module_size_and_version($ur$i, $1492, $1492) | 0;
$1495 = ($1494 | 0) < 0;
if ($1495) {
$$01$i = 0;
$$1$i = $$0$i;
break;
}
_qr_finder_edge_pts_hom_classify($dl$i, $hom$i);
$1496 = HEAP32[$35 >> 2] | 0;
$1497 = ($1496 - $1416) | 0;
$1498 = _qr_finder_estimate_module_size_and_version($dl$i, $1497, $1497) | 0;
$1499 = ($1498 | 0) < 0;
if ($1499) {
$$01$i = 0;
$$1$i = $$0$i;
break;
}
$1500 = HEAP32[$36 >> 2] | 0;
$1501 = HEAP32[$37 >> 2] | 0;
$1502 = ($1500 | 0) == ($1501 | 0);
$1503 = ($1500 | 0) < 7;
$or$cond$i = $1502 & $1503;
do {
if ($or$cond$i) {
$1534 = $1500;
$ur_version$1$i = $1500;
} else {
$1504 = ($1500 - $1501) | 0;
$ispos6$i = ($1504 | 0) > -1;
$neg7$i = (0 - $1504) | 0;
$1505 = $ispos6$i ? $1504 : $neg7$i;
$1506 = ($1505 | 0) > 3;
if ($1506) {
$$01$i = 0;
$$1$i = $$0$i;
break L19;
}
$1507 = ($1500 | 0) > 3;
if ($1507) {
$1508 = _qr_finder_version_decode($ur$i, $hom$i, $_img, $_width, $_height, 0) | 0;
$1509 = ($1508 - $1500) | 0;
$ispos14$i = ($1509 | 0) > -1;
$neg15$i = (0 - $1509) | 0;
$1510 = $ispos14$i ? $1509 : $neg15$i;
$1511 = ($1510 | 0) > 3;
$$$i = $1511 ? -1 : $1508;
$ur_version$0$i = $$$i;
} else {
$ur_version$0$i = -1;
}
$1512 = ($1501 | 0) > 3;
if ($1512) {
$1513 = _qr_finder_version_decode($dl$i, $hom$i, $_img, $_width, $_height, 1) | 0;
$1514 = ($1513 - $1501) | 0;
$ispos12$i = ($1514 | 0) > -1;
$neg13$i = (0 - $1514) | 0;
$1515 = $ispos12$i ? $1514 : $neg13$i;
$1516 = ($1515 | 0) > 3;
$$16$i = $1516 ? -1 : $1513;
$dl_version$0$i = $$16$i;
} else {
$dl_version$0$i = -1;
}
$1517 = ($ur_version$0$i | 0) > -1;
$1518 = ($dl_version$0$i | 0) < 0;
if ($1517) {
$1519 = ($dl_version$0$i | 0) == ($ur_version$0$i | 0);
$or$cond17$i = $1518 | $1519;
if ($or$cond17$i) {
$1534 = $1501;
$ur_version$1$i = $ur_version$0$i;
break;
} else {
$$01$i = 0;
$$1$i = $$0$i;
break L19;
}
} else {
if ($1518) {
$$01$i = 0;
$$1$i = $$0$i;
break L19;
} else {
$1534 = $1501;
$ur_version$1$i = $dl_version$0$i;
break;
}
}
}
} while (0);
_qr_finder_edge_pts_hom_classify($ul$i, $hom$i);
$1520 = HEAP32[$32 >> 2] | 0;
$1521 = HEAP32[$34 >> 2] | 0;
$1522 = ($1520 - $1521) | 0;
$1523 = HEAP32[$35 >> 2] | 0;
$1524 = HEAP32[$39 >> 2] | 0;
$1525 = ($1523 - $1524) | 0;
$1526 = _qr_finder_estimate_module_size_and_version($ul$i, $1522, $1525) | 0;
$1527 = ($1526 | 0) < 0;
if ($1527) {
$$01$i = 0;
$$1$i = $$0$i;
break;
}
$1528 = HEAP32[$40 >> 2] | 0;
$1529 = ($1528 - $1500) | 0;
$ispos8$i = ($1529 | 0) > -1;
$neg9$i = (0 - $1529) | 0;
$1530 = $ispos8$i ? $1529 : $neg9$i;
$1531 = ($1530 | 0) > 1;
if ($1531) {
$$01$i = 0;
$$1$i = $$0$i;
break;
}
$1532 = HEAP32[$41 >> 2] | 0;
$1533 = ($1532 - $1534) | 0;
$ispos10$i = ($1533 | 0) > -1;
$neg11$i = (0 - $1533) | 0;
$1535 = $ispos10$i ? $1533 : $neg11$i;
$1536 = ($1535 | 0) > 1;
if ($1536) {
$$01$i = 0;
$$1$i = $$0$i;
break;
}
$1537 = _qr_finder_fmt_info_decode($ul$i, $ur$i, $dl$i, $hom$i, $_img, $_width, $_height) | 0;
$1538 = ($1537 | 0) < 0;
if ($1538) {
label = 135;
} else {
$1539 = HEAP32[$14 >> 2] | 0;
$1540 = HEAP32[$15 >> 2] | 0;
$1541 = HEAP32[$16 >> 2] | 0;
$1542 =
_qr_code_decode(
$qrdata,
$_reader,
$1539,
$1540,
$1541,
$ur_version$1$i,
$1537,
$_img,
$_width,
$_height
) | 0;
$1543 = ($1542 | 0) < 0;
if ($1543) {
label = 135;
}
}
if ((label | 0) == 135) {
label = 0;
$1544 = HEAP32[$76 >> 2] | 0;
$1545 = HEAP32[$78 >> 2] | 0;
HEAP32[$76 >> 2] = $1545;
HEAP32[$78 >> 2] = $1544;
$1546 = HEAP32[$77 >> 2] | 0;
$1547 = HEAP32[$79 >> 2] | 0;
HEAP32[$77 >> 2] = $1547;
HEAP32[$79 >> 2] = $1546;
$1548 = HEAP32[$hom$i >> 2] | 0;
$1549 = HEAP32[$68 >> 2] | 0;
HEAP32[$hom$i >> 2] = $1549;
HEAP32[$68 >> 2] = $1548;
$1550 = HEAP32[$70 >> 2] | 0;
$1551 = HEAP32[$71 >> 2] | 0;
HEAP32[$70 >> 2] = $1551;
HEAP32[$71 >> 2] = $1550;
$1552 = HEAP32[$73 >> 2] | 0;
$1553 = HEAP32[$74 >> 2] | 0;
HEAP32[$73 >> 2] = $1553;
HEAP32[$74 >> 2] = $1552;
$1554 = HEAP32[$38 >> 2] | 0;
$1555 = HEAP32[$39 >> 2] | 0;
HEAP32[$38 >> 2] = $1555;
HEAP32[$39 >> 2] = $1554;
$1556 = HEAP32[$ul$i >> 2] | 0;
$1557 = HEAP32[$85 >> 2] | 0;
HEAP32[$ul$i >> 2] = $1557;
HEAP32[$85 >> 2] = $1556;
$1558 = HEAP32[$32 >> 2] | 0;
$1559 = HEAP32[$33 >> 2] | 0;
HEAP32[$32 >> 2] = $1559;
HEAP32[$33 >> 2] = $1558;
$1560 = HEAP32[$ur$i >> 2] | 0;
$1561 = HEAP32[$44 >> 2] | 0;
HEAP32[$ur$i >> 2] = $1561;
HEAP32[$44 >> 2] = $1560;
$1562 = HEAP32[$34 >> 2] | 0;
$1563 = HEAP32[$35 >> 2] | 0;
HEAP32[$34 >> 2] = $1563;
HEAP32[$35 >> 2] = $1562;
$1564 = HEAP32[$dl$i >> 2] | 0;
$1565 = HEAP32[$49 >> 2] | 0;
HEAP32[$dl$i >> 2] = $1565;
HEAP32[$49 >> 2] = $1564;
$1566 = _qr_finder_fmt_info_decode($ul$i, $dl$i, $ur$i, $hom$i, $_img, $_width, $_height) | 0;
$1567 = ($1566 | 0) < 0;
if ($1567) {
$$01$i = 0;
$$1$i = $$0$i;
break;
}
$1568 = HEAP32[$63 >> 2] | 0;
$1569 = HEAP32[$65 >> 2] | 0;
HEAP32[$63 >> 2] = $1569;
HEAP32[$65 >> 2] = $1568;
$1570 = HEAP32[$64 >> 2] | 0;
$1571 = HEAP32[$66 >> 2] | 0;
HEAP32[$64 >> 2] = $1571;
HEAP32[$66 >> 2] = $1570;
HEAP32[($84 + 0) >> 2] = HEAP32[($bbox$i + 0) >> 2] | 0;
HEAP32[($84 + 4) >> 2] = HEAP32[($bbox$i + 4) >> 2] | 0;
HEAP32[($84 + 8) >> 2] = HEAP32[($bbox$i + 8) >> 2] | 0;
HEAP32[($84 + 12) >> 2] = HEAP32[($bbox$i + 12) >> 2] | 0;
HEAP32[($84 + 16) >> 2] = HEAP32[($bbox$i + 16) >> 2] | 0;
HEAP32[($84 + 20) >> 2] = HEAP32[($bbox$i + 20) >> 2] | 0;
HEAP32[($84 + 24) >> 2] = HEAP32[($bbox$i + 24) >> 2] | 0;
HEAP32[($84 + 28) >> 2] = HEAP32[($bbox$i + 28) >> 2] | 0;
$1572 = HEAP32[$14 >> 2] | 0;
$1573 = HEAP32[$16 >> 2] | 0;
$1574 = HEAP32[$15 >> 2] | 0;
$1575 =
_qr_code_decode(
$qrdata,
$_reader,
$1572,
$1573,
$1574,
$ur_version$1$i,
$1566,
$_img,
$_width,
$_height
) | 0;
$1576 = ($1575 | 0) < 0;
if ($1576) {
$$01$i = 0;
$$1$i = $$0$i;
break;
}
}
$$01$i = 1;
$$1$i = $ur_version$1$i;
}
}
}
}
}
} while (0);
if ($$01$i) {
break;
} else {
$$0$i = $$1$i;
$i$1$i = $150;
}
}
$1577 = ($$1$i | 0) > -1;
if ($1577) {
$1578 = HEAP32[$88 >> 2] | 0;
$1579 = HEAP32[$89 >> 2] | 0;
$1580 = ($1578 | 0) < ($1579 | 0);
if ($1580) {
$$pre1$i = HEAP32[$_qrlist >> 2] | 0;
$1587 = $1578;
$1589 = $$pre1$i;
} else {
$1581 = $1579 << 1;
$1582 = $1581 | 1;
HEAP32[$89 >> 2] = $1582;
$1583 = HEAP32[$_qrlist >> 2] | 0;
$1584 = ($1582 * 48) | 0;
$1585 = _realloc($1583, $1584) | 0;
HEAP32[$_qrlist >> 2] = $1585;
$$pre$i25 = HEAP32[$88 >> 2] | 0;
$1587 = $$pre$i25;
$1589 = $1585;
}
$1586 = ($1587 + 1) | 0;
HEAP32[$88 >> 2] = $1586;
$1588 = ($1589 + (($1587 * 48) | 0)) | 0;
dest = ($1588 + 0) | 0;
src = ($qrdata + 0) | 0;
stop = (dest + 48) | 0;
do {
HEAP32[dest >> 2] = HEAP32[src >> 2] | 0;
dest = (dest + 4) | 0;
src = (src + 4) | 0;
} while ((dest | 0) < (stop | 0));
$1590 = HEAP32[$_qrlist >> 2] | 0;
$1591 = HEAP32[$88 >> 2] | 0;
$1592 = ($1591 + -1) | 0;
$1593 = ((($1590 + (($1592 * 48) | 0)) | 0) + 16) | 0;
$1594 = HEAP32[$1593 >> 2] | 0;
$1595 = $1594 >> 2;
HEAP32[$1593 >> 2] = $1595;
$1596 = HEAP32[$88 >> 2] | 0;
$1597 = ($1596 + -1) | 0;
$1598 = ((($1590 + (($1597 * 48) | 0)) | 0) + 20) | 0;
$1599 = HEAP32[$1598 >> 2] | 0;
$1600 = $1599 >> 2;
HEAP32[$1598 >> 2] = $1600;
$1601 = HEAP32[$88 >> 2] | 0;
$1602 = ($1601 + -1) | 0;
$1603 = ((($1590 + (($1602 * 48) | 0)) | 0) + 24) | 0;
$1604 = HEAP32[$1603 >> 2] | 0;
$1605 = $1604 >> 2;
HEAP32[$1603 >> 2] = $1605;
$1606 = HEAP32[$88 >> 2] | 0;
$1607 = ($1606 + -1) | 0;
$1608 = ((($1590 + (($1607 * 48) | 0)) | 0) + 28) | 0;
$1609 = HEAP32[$1608 >> 2] | 0;
$1610 = $1609 >> 2;
HEAP32[$1608 >> 2] = $1610;
$1611 = HEAP32[$88 >> 2] | 0;
$1612 = ($1611 + -1) | 0;
$1613 = ((($1590 + (($1612 * 48) | 0)) | 0) + 32) | 0;
$1614 = HEAP32[$1613 >> 2] | 0;
$1615 = $1614 >> 2;
HEAP32[$1613 >> 2] = $1615;
$1616 = HEAP32[$88 >> 2] | 0;
$1617 = ($1616 + -1) | 0;
$1618 = ((($1590 + (($1617 * 48) | 0)) | 0) + 36) | 0;
$1619 = HEAP32[$1618 >> 2] | 0;
$1620 = $1619 >> 2;
HEAP32[$1618 >> 2] = $1620;
$1621 = HEAP32[$88 >> 2] | 0;
$1622 = ($1621 + -1) | 0;
$1623 = ((($1590 + (($1622 * 48) | 0)) | 0) + 40) | 0;
$1624 = HEAP32[$1623 >> 2] | 0;
$1625 = $1624 >> 2;
HEAP32[$1623 >> 2] = $1625;
$1626 = HEAP32[$88 >> 2] | 0;
$1627 = ($1626 + -1) | 0;
$1628 = ((($1590 + (($1627 * 48) | 0)) | 0) + 44) | 0;
$1629 = HEAP32[$1628 >> 2] | 0;
$1630 = $1629 >> 2;
HEAP32[$1628 >> 2] = $1630;
HEAP8[$107 >> 0] = 1;
HEAP8[$1631 >> 0] = 1;
$1632 = ($0 + $i$261) | 0;
HEAP8[$1632 >> 0] = 1;
$$val19 = HEAP32[$90 >> 2] | 0;
$$idx20$val = HEAP32[$$idx20 >> 2] | 0;
$$val21 = HEAP32[$91 >> 2] | 0;
$$idx22$val = HEAP32[$$idx22 >> 2] | 0;
$1633 = ($$val21 - $$val19) | 0;
$1634 = ($$idx22$val - $$idx20$val) | 0;
$$val15 = HEAP32[$92 >> 2] | 0;
$$idx16$val = HEAP32[$$idx16 >> 2] | 0;
$1635 = ($$val15 - $$val21) | 0;
$1636 = ($$idx16$val - $$idx22$val) | 0;
$$val9 = HEAP32[$93 >> 2] | 0;
$$idx10$val = HEAP32[$$idx10 >> 2] | 0;
$1637 = ($$val9 - $$val15) | 0;
$1638 = ($$idx10$val - $$idx16$val) | 0;
$1639 = ($$val19 - $$val9) | 0;
$1640 = ($$idx20$val - $$idx10$val) | 0;
$l$147 = 0;
$ninside$046 = 0;
while (1) {
$1641 = ($0 + $l$147) | 0;
$1642 = HEAP8[$1641 >> 0] | 0;
$1643 = ($1642 << 24) >> 24 == 0;
do {
if ($1643) {
$1644 = ($_centers + ($l$147 << 4)) | 0;
$$val23 = HEAP32[$1644 >> 2] | 0;
$$idx24 = ((($_centers + ($l$147 << 4)) | 0) + 4) | 0;
$$idx24$val = HEAP32[$$idx24 >> 2] | 0;
$1645 = ($$idx24$val - $$idx20$val) | 0;
$1646 = Math_imul($1645, $1633) | 0;
$1647 = ($$val23 - $$val19) | 0;
$1648 = Math_imul($1647, $1634) | 0;
$1649 = ($1646 - $1648) | 0;
$1650 = ($1649 | 0) > -1;
if ($1650) {
$1651 = ($$idx24$val - $$idx22$val) | 0;
$1652 = Math_imul($1635, $1651) | 0;
$1653 = ($$val23 - $$val21) | 0;
$1654 = Math_imul($1636, $1653) | 0;
$1655 = ($1652 - $1654) | 0;
$1656 = ($1655 | 0) > -1;
if ($1656) {
$1657 = ($$idx24$val - $$idx16$val) | 0;
$1658 = Math_imul($1637, $1657) | 0;
$1659 = ($$val23 - $$val15) | 0;
$1660 = Math_imul($1638, $1659) | 0;
$1661 = ($1658 - $1660) | 0;
$1662 = ($1661 | 0) > -1;
if ($1662) {
$1663 = ($$idx24$val - $$idx10$val) | 0;
$1664 = Math_imul($1663, $1639) | 0;
$1665 = ($$val23 - $$val9) | 0;
$1666 = Math_imul($1640, $1665) | 0;
$1667 = ($1664 - $1666) | 0;
$1668 = ($1667 | 0) > -1;
if (!$1668) {
$ninside$1 = $ninside$046;
break;
}
HEAP8[$1641 >> 0] = 2;
$1669 = ($ninside$046 + 1) | 0;
$ninside$1 = $1669;
} else {
$ninside$1 = $ninside$046;
}
} else {
$ninside$1 = $ninside$046;
}
} else {
$ninside$1 = $ninside$046;
}
} else {
$ninside$1 = $ninside$046;
}
} while (0);
$1670 = ($l$147 + 1) | 0;
$exitcond = ($1670 | 0) == ($_ncenters | 0);
if ($exitcond) {
break;
} else {
$l$147 = $1670;
$ninside$046 = $ninside$1;
}
}
$1671 = ($ninside$1 | 0) > 2;
if ($1671) {
$1672 = $ninside$1 << 4;
$1673 = _malloc($1672) | 0;
$l$249 = 0;
$ninside$248 = 0;
while (1) {
$1674 = ($0 + $l$249) | 0;
$1675 = HEAP8[$1674 >> 0] | 0;
$1676 = ($1675 << 24) >> 24 == 2;
if ($1676) {
$1677 = ($ninside$248 + 1) | 0;
$1678 = ($1673 + ($ninside$248 << 4)) | 0;
$1679 = ($_centers + ($l$249 << 4)) | 0;
HEAP32[($1678 + 0) >> 2] = HEAP32[($1679 + 0) >> 2] | 0;
HEAP32[($1678 + 4) >> 2] = HEAP32[($1679 + 4) >> 2] | 0;
HEAP32[($1678 + 8) >> 2] = HEAP32[($1679 + 8) >> 2] | 0;
HEAP32[($1678 + 12) >> 2] = HEAP32[($1679 + 12) >> 2] | 0;
$ninside$3 = $1677;
} else {
$ninside$3 = $ninside$248;
}
$1680 = ($l$249 + 1) | 0;
$exitcond93 = ($1680 | 0) == ($_ncenters | 0);
if ($exitcond93) {
break;
} else {
$l$249 = $1680;
$ninside$248 = $ninside$3;
}
}
_qr_reader_match_centers($_reader, $_qrlist, $1673, $ninside$3, $_img, $_width, $_height);
_free($1673);
$l$354 = 0;
} else {
$l$354 = 0;
}
while (1) {
$1681 = ($0 + $l$354) | 0;
$1682 = HEAP8[$1681 >> 0] | 0;
$1683 = ($1682 << 24) >> 24 == 2;
if ($1683) {
HEAP8[$1681 >> 0] = 1;
}
$1684 = ($l$354 + 1) | 0;
$exitcond94 = ($1684 | 0) == ($_ncenters | 0);
if ($exitcond94) {
$i$4 = $i$261;
$j$3 = $j$157;
$k$2 = $k$059;
$nfailures$4 = 0;
break L12;
} else {
$l$354 = $1684;
}
}
}
}
} while (0);
$1685 = ($nfailures$263 + 1) | 0;
$1686 = ($nfailures$263 | 0) < ($4 | 0);
$j$1$_ncenters = $1686 ? $j$157 : $_ncenters;
$k$0$_ncenters = $1686 ? $k$059 : $_ncenters;
$i$2$_ncenters = $1686 ? $i$261 : $_ncenters;
$i$4 = $i$2$_ncenters;
$j$3 = $j$1$_ncenters;
$k$2 = $k$0$_ncenters;
$nfailures$4 = $1685;
} else {
$i$4 = $i$261;
$j$3 = $j$157;
$k$2 = $k$059;
$nfailures$4 = $nfailures$263;
}
} while (0);
$1687 = ($k$2 + 1) | 0;
$1688 = ($0 + $j$3) | 0;
$1689 = HEAP8[$1688 >> 0] | 0;
$1690 = ($1689 << 24) >> 24 == 0;
$1691 = ($1687 | 0) < ($_ncenters | 0);
$or$cond2 = $1690 & $1691;
if ($or$cond2) {
$1631 = $1688;
$i$261 = $i$4;
$j$157 = $j$3;
$k$059 = $1687;
$nfailures$263 = $nfailures$4;
} else {
$i$2$lcssa = $i$4;
$j$1$lcssa = $j$3;
$nfailures$2$lcssa = $nfailures$4;
break;
}
}
} else {
$i$2$lcssa = $i$172;
$j$1$lcssa = $j$074;
$nfailures$2$lcssa = $nfailures$173;
}
$j$0 = ($j$1$lcssa + 1) | 0;
$98 = ($0 + $i$2$lcssa) | 0;
$99 = HEAP8[$98 >> 0] | 0;
$100 = ($99 << 24) >> 24 == 0;
$101 = ($j$0 | 0) < ($_ncenters | 0);
$or$cond = $100 & $101;
if ($or$cond) {
$i$172 = $i$2$lcssa;
$j$0$in71 = $j$1$lcssa;
$j$074 = $j$0;
$nfailures$173 = $nfailures$2$lcssa;
} else {
$i$1$lcssa = $i$2$lcssa;
$nfailures$1$lcssa = $nfailures$2$lcssa;
break;
}
}
} else {
$i$1$lcssa = $i$078;
$nfailures$1$lcssa = $nfailures$079;
}
$1692 = ($i$1$lcssa + 1) | 0;
$1693 = ($1692 | 0) < ($_ncenters | 0);
if ($1693) {
$i$078 = $1692;
$nfailures$079 = $nfailures$1$lcssa;
} else {
break;
}
}
_free($0);
STACKTOP = sp;
return;
}
function __zbar_qr_found_line($reader, $dir, $line) {
$reader = $reader | 0;
$dir = $dir | 0;
$line = $line | 0;
var $$pre = 0,
$$pre1 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ((($reader + (($dir * 12) | 0)) | 0) + 2832) | 0;
$1 = ((($reader + (($dir * 12) | 0)) | 0) + 2836) | 0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ((($reader + (($dir * 12) | 0)) | 0) + 2840) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($2 | 0) < ($4 | 0);
if ($5) {
$$pre1 = HEAP32[$0 >> 2] | 0;
$12 = $2;
$14 = $$pre1;
} else {
$6 = $4 << 1;
$7 = HEAP32[$0 >> 2] | 0;
$8 = $6 | 1;
HEAP32[$3 >> 2] = $8;
$9 = ($8 * 20) | 0;
$10 = _realloc($7, $9) | 0;
HEAP32[$0 >> 2] = $10;
$$pre = HEAP32[$1 >> 2] | 0;
$12 = $$pre;
$14 = $10;
}
$11 = ($12 + 1) | 0;
HEAP32[$1 >> 2] = $11;
$13 = ($14 + (($12 * 20) | 0)) | 0;
HEAP32[($13 + 0) >> 2] = HEAP32[($line + 0) >> 2] | 0;
HEAP32[($13 + 4) >> 2] = HEAP32[($line + 4) >> 2] | 0;
HEAP32[($13 + 8) >> 2] = HEAP32[($line + 8) >> 2] | 0;
HEAP32[($13 + 12) >> 2] = HEAP32[($line + 12) >> 2] | 0;
HEAP32[($13 + 16) >> 2] = HEAP32[($line + 16) >> 2] | 0;
STACKTOP = sp;
return 0;
}
function __zbar_qr_decode($reader, $iscn, $img) {
$reader = $reader | 0;
$iscn = $iscn | 0;
$img = $img | 0;
var $$0 = 0,
$$04$i$i$i = 0,
$$04$i1$i$i = 0,
$$046$i$i = 0,
$$1$i$i = 0,
$$1$lcssa$i$i$i = 0,
$$1$lcssa$i9$i$i = 0,
$$12$i$i$i = 0,
$$12$i5$i$i = 0,
$$2$i$i$i = 0,
$$2$i7$i$i = 0,
$$3$i$i$i = 0,
$$3$i8$i$i = 0,
$$lcssa$i$i = 0,
$$lcssa3$i = 0,
$$pr = 0,
$$pre$i$i = 0,
$$pre3$i$i = 0,
$0 = 0,
$1 = 0;
var $10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0;
var $118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0;
var $136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0,
$152 = 0,
$153 = 0;
var $154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0,
$170 = 0,
$171 = 0;
var $172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0,
$189 = 0,
$19 = 0;
var $190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0,
$206 = 0,
$207 = 0;
var $208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0,
$224 = 0,
$225 = 0;
var $226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0,
$242 = 0,
$243 = 0;
var $244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0,
$260 = 0,
$261 = 0;
var $262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0,
$279 = 0,
$28 = 0;
var $280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0;
var $38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0;
var $56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0;
var $74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0;
var $92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$exitcond$i = 0,
$exitcond$i$i = 0,
$exitcond$i$i$i = 0,
$exitcond$i10$i$i = 0,
$exitcond31$i = 0,
$exitcond61$i$i = 0,
$exitcond62$i$i = 0,
$exitcond63$i$i = 0,
$i$01$i$i = 0,
$i$017$i = 0,
$i$03$i$i$i = 0,
$i$03$i2$i$i = 0;
var $i$04$i = 0,
$i$043$i$i = 0,
$i$114$i = 0,
$j$01$i$i$i = 0,
$j$01$i6$i$i = 0,
$j$022$i$i = 0,
$j$1$i$i = 0,
$j$130$i$i = 0,
$j$13037$i$i = 0,
$j$13040$i$i = 0,
$j$131$i$i = 0,
$ncenters$0$i = 0,
$ncenters$0$lcssa$i$i = 0,
$ncenters$045$i$i = 0,
$ncenters$1$i$i = 0,
$nedge_pts$0$lcssa$i = 0,
$nedge_pts$016$i = 0,
$nedge_pts$1$lcssa$i = 0,
$nedge_pts$113$i = 0,
$nhneighbors$0$ph34$i$i = 0;
var $nhneighbors$0$ph38$i$i = 0,
$nqrdata$04 = 0,
$nqrdata$1 = 0,
$nvneighbors$023$i$i = 0,
$nvneighbors$1$i$i = 0,
$or$cond$i = 0,
$qrlist = 0,
$vararg_buffer = 0,
$vararg_ptr1 = 0,
$vararg_ptr2 = 0,
$vararg_ptr3 = 0,
$x$0$i$i = 0,
$x$1$ph36$i$i = 0,
$x$1$ph39$i$i = 0,
$x$2$i$i = 0,
$y$024$i$i = 0,
$y$1$i$i = 0,
$y$2$i$i = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 32) | 0;
$vararg_buffer = sp;
$qrlist = (sp + 16) | 0;
$0 = ($reader + 2836) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) < 9;
if ($2) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$3 = ($reader + 2848) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($4 | 0) < 9;
if ($5) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$6 = ($reader + 2832) | 0;
$7 = HEAP32[$6 >> 2] | 0;
$8 = ($reader + 2844) | 0;
$9 = HEAP32[$8 >> 2] | 0;
$10 = $1 << 2;
$11 = _malloc($10) | 0;
$12 = $1 >>> 1;
$13 = $12 << 3;
$14 = _malloc($13) | 0;
$15 = _qr_finder_cluster_lines($14, $11, $7, $1, 0) | 0;
_qsort($9, $4, 20, 3);
$16 = $4 << 2;
$17 = _malloc($16) | 0;
$18 = $4 >>> 1;
$19 = $18 << 3;
$20 = _malloc($19) | 0;
$21 = _qr_finder_cluster_lines($20, $17, $9, $4, 1) | 0;
$22 = ($15 | 0) > 2;
$23 = ($21 | 0) > 2;
$or$cond$i = $22 & $23;
if ($or$cond$i) {
$24 = ($15 | 0) > 0;
if ($24) {
$i$017$i = 0;
$nedge_pts$016$i = 0;
while (1) {
$26 = ((($14 + ($i$017$i << 3)) | 0) + 4) | 0;
$27 = HEAP32[$26 >> 2] | 0;
$28 = ($27 + $nedge_pts$016$i) | 0;
$29 = ($i$017$i + 1) | 0;
$exitcond31$i = ($29 | 0) == ($15 | 0);
if ($exitcond31$i) {
$nedge_pts$0$lcssa$i = $28;
break;
} else {
$i$017$i = $29;
$nedge_pts$016$i = $28;
}
}
} else {
$nedge_pts$0$lcssa$i = 0;
}
$25 = ($21 | 0) > 0;
if ($25) {
$i$114$i = 0;
$nedge_pts$113$i = $nedge_pts$0$lcssa$i;
while (1) {
$30 = ((($20 + ($i$114$i << 3)) | 0) + 4) | 0;
$31 = HEAP32[$30 >> 2] | 0;
$32 = ($31 + $nedge_pts$113$i) | 0;
$33 = ($i$114$i + 1) | 0;
$exitcond$i = ($33 | 0) == ($21 | 0);
if ($exitcond$i) {
$nedge_pts$1$lcssa$i = $32;
break;
} else {
$i$114$i = $33;
$nedge_pts$113$i = $32;
}
}
} else {
$nedge_pts$1$lcssa$i = $nedge_pts$0$lcssa$i;
}
$34 = $nedge_pts$1$lcssa$i << 5;
$35 = _malloc($34) | 0;
$36 = ($21 | 0) < ($15 | 0);
$37 = $36 ? $21 : $15;
$38 = $37 << 4;
$39 = _malloc($38) | 0;
$40 = $15 << 2;
$41 = _malloc($40) | 0;
$42 = $21 << 2;
$43 = _malloc($42) | 0;
$44 = _calloc($15, 1) | 0;
$45 = _calloc($21, 1) | 0;
if ($24) {
$$046$i$i = $35;
$i$043$i$i = 0;
$ncenters$045$i$i = 0;
while (1) {
$46 = ($44 + $i$043$i$i) | 0;
$47 = HEAP8[$46 >> 0] | 0;
$48 = ($47 << 24) >> 24 == 0;
if ($48) {
$49 = ($14 + ($i$043$i$i << 3)) | 0;
$50 = ((($14 + ($i$043$i$i << 3)) | 0) + 4) | 0;
$51 = HEAP32[$50 >> 2] | 0;
$52 = $51 >> 1;
$53 = HEAP32[$49 >> 2] | 0;
$54 = ($53 + ($52 << 2)) | 0;
$55 = HEAP32[$54 >> 2] | 0;
if ($25) {
$56 = ($55 + 8) | 0;
$57 = ($55 + 4) | 0;
$j$022$i$i = 0;
$nvneighbors$023$i$i = 0;
$y$024$i$i = 0;
while (1) {
$58 = ($45 + $j$022$i$i) | 0;
$59 = HEAP8[$58 >> 0] | 0;
$60 = ($59 << 24) >> 24 == 0;
if ($60) {
$61 = ($20 + ($j$022$i$i << 3)) | 0;
$62 = ((($20 + ($j$022$i$i << 3)) | 0) + 4) | 0;
$63 = HEAP32[$62 >> 2] | 0;
$64 = $63 >> 1;
$65 = HEAP32[$61 >> 2] | 0;
$66 = ($65 + ($64 << 2)) | 0;
$67 = HEAP32[$66 >> 2] | 0;
$68 = HEAP32[$55 >> 2] | 0;
$69 = HEAP32[$67 >> 2] | 0;
$70 = ($68 | 0) > ($69 | 0);
if ($70) {
$nvneighbors$1$i$i = $nvneighbors$023$i$i;
$y$2$i$i = $y$024$i$i;
} else {
$71 = HEAP32[$56 >> 2] | 0;
$72 = ($71 + $68) | 0;
$73 = ($69 | 0) < ($72 | 0);
if ($73) {
$74 = ($67 + 4) | 0;
$75 = HEAP32[$74 >> 2] | 0;
$76 = HEAP32[$57 >> 2] | 0;
$77 = ($75 | 0) > ($76 | 0);
if ($77) {
$nvneighbors$1$i$i = $nvneighbors$023$i$i;
$y$2$i$i = $y$024$i$i;
} else {
$78 = ($67 + 8) | 0;
$79 = HEAP32[$78 >> 2] | 0;
$80 = ($79 + $75) | 0;
$81 = ($76 | 0) < ($80 | 0);
if ($81) {
HEAP8[$58 >> 0] = 1;
$82 = $75 << 1;
$83 = ($82 + $y$024$i$i) | 0;
$84 = ($83 + $79) | 0;
$85 = ($67 + 12) | 0;
$86 = HEAP32[$85 >> 2] | 0;
$87 = ($86 | 0) > 0;
do {
if ($87) {
$88 = ($67 + 16) | 0;
$89 = HEAP32[$88 >> 2] | 0;
$90 = ($89 | 0) > 0;
if (!$90) {
$y$1$i$i = $84;
break;
}
$91 = ($84 - $86) | 0;
$92 = ($91 + $89) | 0;
$y$1$i$i = $92;
} else {
$y$1$i$i = $84;
}
} while (0);
$93 = ($nvneighbors$023$i$i + 1) | 0;
$94 = ($43 + ($nvneighbors$023$i$i << 2)) | 0;
HEAP32[$94 >> 2] = $61;
$nvneighbors$1$i$i = $93;
$y$2$i$i = $y$1$i$i;
} else {
$nvneighbors$1$i$i = $nvneighbors$023$i$i;
$y$2$i$i = $y$024$i$i;
}
}
} else {
$nvneighbors$1$i$i = $nvneighbors$023$i$i;
$y$2$i$i = $y$024$i$i;
}
}
} else {
$nvneighbors$1$i$i = $nvneighbors$023$i$i;
$y$2$i$i = $y$024$i$i;
}
$95 = ($j$022$i$i + 1) | 0;
$exitcond$i$i = ($95 | 0) == ($21 | 0);
if ($exitcond$i$i) {
break;
} else {
$j$022$i$i = $95;
$nvneighbors$023$i$i = $nvneighbors$1$i$i;
$y$024$i$i = $y$2$i$i;
}
}
$96 = ($nvneighbors$1$i$i | 0) > 0;
if ($96) {
$97 = HEAP32[$55 >> 2] | 0;
$98 = $97 << 1;
$99 = HEAP32[$56 >> 2] | 0;
$100 = ($98 + $99) | 0;
$101 = ($55 + 12) | 0;
$102 = HEAP32[$101 >> 2] | 0;
$103 = ($102 | 0) > 0;
if ($103) {
$104 = ($55 + 16) | 0;
$105 = HEAP32[$104 >> 2] | 0;
$106 = ($105 | 0) > 0;
if ($106) {
$107 = ($100 - $102) | 0;
$108 = ($107 + $105) | 0;
$x$0$i$i = $108;
} else {
$x$0$i$i = $100;
}
} else {
$x$0$i$i = $100;
}
HEAP32[$41 >> 2] = $49;
$109 = $nvneighbors$1$i$i >> 1;
$110 = ($43 + ($109 << 2)) | 0;
$111 = HEAP32[$110 >> 2] | 0;
$112 = ($111 + 4) | 0;
$113 = HEAP32[$112 >> 2] | 0;
$114 = $113 >> 1;
$115 = HEAP32[$111 >> 2] | 0;
$116 = ($115 + ($114 << 2)) | 0;
$117 = HEAP32[$116 >> 2] | 0;
$j$13037$i$i = ($i$043$i$i + 1) | 0;
$118 = ($j$13037$i$i | 0) < ($15 | 0);
L42: do {
if ($118) {
$119 = ($117 + 4) | 0;
$120 = ($117 + 8) | 0;
$j$13040$i$i = $j$13037$i$i;
$nhneighbors$0$ph38$i$i = 1;
$x$1$ph39$i$i = $x$0$i$i;
while (1) {
$j$131$i$i = $j$13040$i$i;
L46: while (1) {
$121 = ($44 + $j$131$i$i) | 0;
$122 = HEAP8[$121 >> 0] | 0;
$123 = ($122 << 24) >> 24 == 0;
do {
if ($123) {
$125 = ($14 + ($j$131$i$i << 3)) | 0;
$126 = ((($14 + ($j$131$i$i << 3)) | 0) + 4) | 0;
$127 = HEAP32[$126 >> 2] | 0;
$128 = $127 >> 1;
$129 = HEAP32[$125 >> 2] | 0;
$130 = ($129 + ($128 << 2)) | 0;
$131 = HEAP32[$130 >> 2] | 0;
$132 = HEAP32[$131 >> 2] | 0;
$133 = HEAP32[$117 >> 2] | 0;
$134 = ($132 | 0) > ($133 | 0);
if ($134) {
break;
}
$135 = ($131 + 8) | 0;
$136 = HEAP32[$135 >> 2] | 0;
$137 = ($136 + $132) | 0;
$138 = ($133 | 0) < ($137 | 0);
if (!$138) {
break;
}
$139 = HEAP32[$119 >> 2] | 0;
$140 = ($131 + 4) | 0;
$141 = HEAP32[$140 >> 2] | 0;
$142 = ($139 | 0) > ($141 | 0);
if ($142) {
break;
}
$143 = HEAP32[$120 >> 2] | 0;
$144 = ($143 + $139) | 0;
$145 = ($141 | 0) < ($144 | 0);
if ($145) {
break L46;
}
}
} while (0);
$j$1$i$i = ($j$131$i$i + 1) | 0;
$124 = ($j$1$i$i | 0) < ($15 | 0);
if ($124) {
$j$131$i$i = $j$1$i$i;
} else {
$nhneighbors$0$ph34$i$i = $nhneighbors$0$ph38$i$i;
$x$1$ph36$i$i = $x$1$ph39$i$i;
break L42;
}
}
HEAP8[$121 >> 0] = 1;
$146 = $132 << 1;
$147 = ($146 + $x$1$ph39$i$i) | 0;
$148 = ($147 + $136) | 0;
$149 = ($131 + 12) | 0;
$150 = HEAP32[$149 >> 2] | 0;
$151 = ($150 | 0) > 0;
if ($151) {
$152 = ($131 + 16) | 0;
$153 = HEAP32[$152 >> 2] | 0;
$154 = ($153 | 0) > 0;
if ($154) {
$155 = ($148 - $150) | 0;
$156 = ($155 + $153) | 0;
$x$2$i$i = $156;
} else {
$x$2$i$i = $148;
}
} else {
$x$2$i$i = $148;
}
$157 = ($nhneighbors$0$ph38$i$i + 1) | 0;
$158 = ($41 + ($nhneighbors$0$ph38$i$i << 2)) | 0;
HEAP32[$158 >> 2] = $125;
$j$130$i$i = ($j$131$i$i + 1) | 0;
$159 = ($j$130$i$i | 0) < ($15 | 0);
if ($159) {
$j$13040$i$i = $j$130$i$i;
$nhneighbors$0$ph38$i$i = $157;
$x$1$ph39$i$i = $x$2$i$i;
} else {
$nhneighbors$0$ph34$i$i = $157;
$x$1$ph36$i$i = $x$2$i$i;
break;
}
}
} else {
$nhneighbors$0$ph34$i$i = 1;
$x$1$ph36$i$i = $x$0$i$i;
}
} while (0);
$160 = ($ncenters$045$i$i + 1) | 0;
$161 = ($nhneighbors$0$ph34$i$i + $x$1$ph36$i$i) | 0;
$162 = $nhneighbors$0$ph34$i$i << 1;
$163 = (($161 | 0) / ($162 | 0)) & -1;
$164 = ($39 + ($ncenters$045$i$i << 4)) | 0;
HEAP32[$164 >> 2] = $163;
$165 = ($y$2$i$i + $nvneighbors$1$i$i) | 0;
$166 = $nvneighbors$1$i$i << 1;
$167 = (($165 | 0) / ($166 | 0)) & -1;
$168 = ((($39 + ($ncenters$045$i$i << 4)) | 0) + 4) | 0;
HEAP32[$168 >> 2] = $167;
$169 = ((($39 + ($ncenters$045$i$i << 4)) | 0) + 8) | 0;
HEAP32[$169 >> 2] = $$046$i$i;
$170 = ($nhneighbors$0$ph34$i$i | 0) > 0;
if ($170) {
$$04$i1$i$i = 0;
$i$03$i2$i$i = 0;
while (1) {
$171 = ($41 + ($i$03$i2$i$i << 2)) | 0;
$172 = HEAP32[$171 >> 2] | 0;
$173 = ($172 + 4) | 0;
$174 = HEAP32[$173 >> 2] | 0;
$175 = ($174 | 0) > 0;
if ($175) {
$176 = HEAP32[$172 >> 2] | 0;
$$12$i5$i$i = $$04$i1$i$i;
$j$01$i6$i$i = 0;
while (1) {
$177 = ($176 + ($j$01$i6$i$i << 2)) | 0;
$178 = HEAP32[$177 >> 2] | 0;
$179 = ($178 + 12) | 0;
$180 = HEAP32[$179 >> 2] | 0;
$181 = ($180 | 0) > 0;
if ($181) {
$182 = HEAP32[$178 >> 2] | 0;
$183 = ($$046$i$i + ($$12$i5$i$i << 4)) | 0;
HEAP32[$183 >> 2] = $182;
$184 = ($178 + 4) | 0;
$185 = HEAP32[$184 >> 2] | 0;
$186 = ((($$046$i$i + ($$12$i5$i$i << 4)) | 0) + 4) | 0;
HEAP32[$186 >> 2] = $185;
$187 = ($182 - $180) | 0;
HEAP32[$183 >> 2] = $187;
$188 = ($$12$i5$i$i + 1) | 0;
$$2$i7$i$i = $188;
} else {
$$2$i7$i$i = $$12$i5$i$i;
}
$189 = ($178 + 16) | 0;
$190 = HEAP32[$189 >> 2] | 0;
$191 = ($190 | 0) > 0;
if ($191) {
$192 = HEAP32[$178 >> 2] | 0;
$193 = ($$046$i$i + ($$2$i7$i$i << 4)) | 0;
HEAP32[$193 >> 2] = $192;
$194 = ($178 + 4) | 0;
$195 = HEAP32[$194 >> 2] | 0;
$196 = ((($$046$i$i + ($$2$i7$i$i << 4)) | 0) + 4) | 0;
HEAP32[$196 >> 2] = $195;
$197 = ($178 + 8) | 0;
$198 = HEAP32[$197 >> 2] | 0;
$199 = ($192 + $190) | 0;
$200 = ($199 + $198) | 0;
HEAP32[$193 >> 2] = $200;
$201 = ($$2$i7$i$i + 1) | 0;
$$3$i8$i$i = $201;
} else {
$$3$i8$i$i = $$2$i7$i$i;
}
$202 = ($j$01$i6$i$i + 1) | 0;
$exitcond61$i$i = ($202 | 0) == ($174 | 0);
if ($exitcond61$i$i) {
$$1$lcssa$i9$i$i = $$3$i8$i$i;
break;
} else {
$$12$i5$i$i = $$3$i8$i$i;
$j$01$i6$i$i = $202;
}
}
} else {
$$1$lcssa$i9$i$i = $$04$i1$i$i;
}
$203 = ($i$03$i2$i$i + 1) | 0;
$exitcond$i10$i$i = ($203 | 0) == ($nhneighbors$0$ph34$i$i | 0);
if ($exitcond$i10$i$i) {
$$04$i$i$i = $$1$lcssa$i9$i$i;
$i$03$i$i$i = 0;
break;
} else {
$$04$i1$i$i = $$1$lcssa$i9$i$i;
$i$03$i2$i$i = $203;
}
}
} else {
$$04$i$i$i = 0;
$i$03$i$i$i = 0;
}
while (1) {
$204 = ($43 + ($i$03$i$i$i << 2)) | 0;
$205 = HEAP32[$204 >> 2] | 0;
$206 = ($205 + 4) | 0;
$207 = HEAP32[$206 >> 2] | 0;
$208 = ($207 | 0) > 0;
if ($208) {
$209 = HEAP32[$205 >> 2] | 0;
$$12$i$i$i = $$04$i$i$i;
$j$01$i$i$i = 0;
while (1) {
$210 = ($209 + ($j$01$i$i$i << 2)) | 0;
$211 = HEAP32[$210 >> 2] | 0;
$212 = ($211 + 12) | 0;
$213 = HEAP32[$212 >> 2] | 0;
$214 = ($213 | 0) > 0;
if ($214) {
$215 = HEAP32[$211 >> 2] | 0;
$216 = ($$046$i$i + ($$12$i$i$i << 4)) | 0;
HEAP32[$216 >> 2] = $215;
$217 = ($211 + 4) | 0;
$218 = HEAP32[$217 >> 2] | 0;
$219 = ((($$046$i$i + ($$12$i$i$i << 4)) | 0) + 4) | 0;
$220 = ($218 - $213) | 0;
HEAP32[$219 >> 2] = $220;
$221 = ($$12$i$i$i + 1) | 0;
$$2$i$i$i = $221;
} else {
$$2$i$i$i = $$12$i$i$i;
}
$222 = ($211 + 16) | 0;
$223 = HEAP32[$222 >> 2] | 0;
$224 = ($223 | 0) > 0;
if ($224) {
$225 = HEAP32[$211 >> 2] | 0;
$226 = ($$046$i$i + ($$2$i$i$i << 4)) | 0;
HEAP32[$226 >> 2] = $225;
$227 = ($211 + 4) | 0;
$228 = HEAP32[$227 >> 2] | 0;
$229 = ((($$046$i$i + ($$2$i$i$i << 4)) | 0) + 4) | 0;
HEAP32[$229 >> 2] = $228;
$230 = ($211 + 8) | 0;
$231 = HEAP32[$230 >> 2] | 0;
$232 = ($228 + $223) | 0;
$233 = ($232 + $231) | 0;
HEAP32[$229 >> 2] = $233;
$234 = ($$2$i$i$i + 1) | 0;
$$3$i$i$i = $234;
} else {
$$3$i$i$i = $$2$i$i$i;
}
$235 = ($j$01$i$i$i + 1) | 0;
$exitcond62$i$i = ($235 | 0) == ($207 | 0);
if ($exitcond62$i$i) {
$$1$lcssa$i$i$i = $$3$i$i$i;
break;
} else {
$$12$i$i$i = $$3$i$i$i;
$j$01$i$i$i = $235;
}
}
} else {
$$1$lcssa$i$i$i = $$04$i$i$i;
}
$236 = ($i$03$i$i$i + 1) | 0;
$exitcond$i$i$i = ($236 | 0) == ($nvneighbors$1$i$i | 0);
if ($exitcond$i$i$i) {
break;
} else {
$$04$i$i$i = $$1$lcssa$i$i$i;
$i$03$i$i$i = $236;
}
}
$237 = ((($39 + ($ncenters$045$i$i << 4)) | 0) + 12) | 0;
HEAP32[$237 >> 2] = $$1$lcssa$i$i$i;
$238 = ($$046$i$i + ($$1$lcssa$i$i$i << 4)) | 0;
$$1$i$i = $238;
$ncenters$1$i$i = $160;
} else {
$$1$i$i = $$046$i$i;
$ncenters$1$i$i = $ncenters$045$i$i;
}
} else {
$$1$i$i = $$046$i$i;
$ncenters$1$i$i = $ncenters$045$i$i;
}
} else {
$$1$i$i = $$046$i$i;
$ncenters$1$i$i = $ncenters$045$i$i;
}
$239 = ($i$043$i$i + 1) | 0;
$exitcond63$i$i = ($239 | 0) == ($15 | 0);
if ($exitcond63$i$i) {
$ncenters$0$lcssa$i$i = $ncenters$1$i$i;
break;
} else {
$$046$i$i = $$1$i$i;
$i$043$i$i = $239;
$ncenters$045$i$i = $ncenters$1$i$i;
}
}
} else {
$ncenters$0$lcssa$i$i = 0;
}
_free($45);
_free($44);
_free($43);
_free($41);
_qsort($39, $ncenters$0$lcssa$i$i, 16, 4);
$257 = $39;
$286 = $35;
$ncenters$0$i = $ncenters$0$lcssa$i$i;
} else {
$257 = 0;
$286 = 0;
$ncenters$0$i = 0;
}
_free($20);
_free($17);
_free($14);
_free($11);
$240 = HEAP32[80 >> 2] | 0;
$241 = ($240 | 0) > 13;
if ($241) {
$242 = HEAP32[_stderr >> 2] | 0;
$243 = HEAP32[$0 >> 2] | 0;
$244 = HEAP32[$3 >> 2] | 0;
HEAP32[$vararg_buffer >> 2] = 7280;
$vararg_ptr1 = ($vararg_buffer + 4) | 0;
HEAP32[$vararg_ptr1 >> 2] = $243;
$vararg_ptr2 = ($vararg_buffer + 8) | 0;
HEAP32[$vararg_ptr2 >> 2] = $244;
$vararg_ptr3 = ($vararg_buffer + 12) | 0;
HEAP32[$vararg_ptr3 >> 2] = $ncenters$0$i;
_fprintf($242 | 0, 7248 | 0, $vararg_buffer | 0) | 0;
}
$245 = ($ncenters$0$i | 0) > 2;
if ($245) {
$246 = ($img + 12) | 0;
$247 = HEAP32[$246 >> 2] | 0;
$248 = ($img + 4) | 0;
$249 = HEAP32[$248 >> 2] | 0;
$250 = ($img + 8) | 0;
$251 = HEAP32[$250 >> 2] | 0;
$252 = _qr_binarize($247, $249, $251) | 0;
HEAP32[$qrlist >> 2] = 0;
$253 = ($qrlist + 8) | 0;
HEAP32[$253 >> 2] = 0;
$254 = ($qrlist + 4) | 0;
HEAP32[$254 >> 2] = 0;
$255 = HEAP32[$248 >> 2] | 0;
$256 = HEAP32[$250 >> 2] | 0;
_qr_reader_match_centers($reader, $qrlist, $257, $ncenters$0$i, $252, $255, $256);
$258 = HEAP32[$254 >> 2] | 0;
$259 = ($258 | 0) > 0;
if ($259) {
$261 = _qr_code_data_list_extract_text($qrlist, $iscn, $img) | 0;
$$pr = HEAP32[$254 >> 2] | 0;
$262 = ($$pr | 0) > 0;
$263 = HEAP32[$qrlist >> 2] | 0;
if ($262) {
$265 = $263;
$i$04$i = 0;
while (1) {
$264 = ((($265 + (($i$04$i * 48) | 0)) | 0) + 4) | 0;
$266 = HEAP32[$264 >> 2] | 0;
$267 = ($266 | 0) > 0;
$268 = ($265 + (($i$04$i * 48) | 0)) | 0;
$269 = HEAP32[$268 >> 2] | 0;
if ($267) {
$271 = $269;
$288 = $266;
$i$01$i$i = 0;
while (1) {
$270 = ($271 + (($i$01$i$i * 12) | 0)) | 0;
$272 = HEAP32[$270 >> 2] | 0;
$273 = ($272 + -1) | 0;
$274 = $273 & $272;
$275 = ($274 | 0) == 0;
if ($275) {
$276 = ((($271 + (($i$01$i$i * 12) | 0)) | 0) + 4) | 0;
$277 = HEAP32[$276 >> 2] | 0;
_free($277);
$$pre$i$i = HEAP32[$264 >> 2] | 0;
$$pre3$i$i = HEAP32[$268 >> 2] | 0;
$280 = $$pre$i$i;
$289 = $$pre3$i$i;
} else {
$280 = $288;
$289 = $271;
}
$278 = ($i$01$i$i + 1) | 0;
$279 = ($278 | 0) < ($280 | 0);
if ($279) {
$271 = $289;
$288 = $280;
$i$01$i$i = $278;
} else {
$$lcssa$i$i = $289;
break;
}
}
} else {
$$lcssa$i$i = $269;
}
_free($$lcssa$i$i);
$281 = ($i$04$i + 1) | 0;
$282 = HEAP32[$254 >> 2] | 0;
$283 = ($281 | 0) < ($282 | 0);
$284 = HEAP32[$qrlist >> 2] | 0;
if ($283) {
$265 = $284;
$i$04$i = $281;
} else {
$$lcssa3$i = $284;
$nqrdata$04 = $261;
break;
}
}
} else {
$$lcssa3$i = $263;
$nqrdata$04 = $261;
}
} else {
$260 = HEAP32[$qrlist >> 2] | 0;
$$lcssa3$i = $260;
$nqrdata$04 = 0;
}
_free($$lcssa3$i);
HEAP32[$qrlist >> 2] = 0;
HEAP32[$253 >> 2] = 0;
HEAP32[$254 >> 2] = 0;
_free($252);
$nqrdata$1 = $nqrdata$04;
} else {
$nqrdata$1 = 0;
}
$285 = ($257 | 0) == (0 | 0);
if (!$285) {
_free($257);
}
$287 = ($286 | 0) == (0 | 0);
if ($287) {
$$0 = $nqrdata$1;
STACKTOP = sp;
return $$0 | 0;
}
_free($286);
$$0 = $nqrdata$1;
STACKTOP = sp;
return $$0 | 0;
}
function _qr_finder_cluster_lines($_clusters, $_neighbors, $_lines, $_nlines, $_v) {
$_clusters = $_clusters | 0;
$_neighbors = $_neighbors | 0;
$_lines = $_lines | 0;
$_nlines = $_nlines | 0;
$_v = $_v | 0;
var $$pre = 0,
$$pre$phiZ2D = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0;
var $25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0;
var $43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0;
var $61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0;
var $8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$9 = 0,
$exitcond = 0,
$exitcond53 = 0,
$i$035 = 0,
$ispos = 0,
$ispos1 = 0,
$ispos3 = 0,
$ispos5 = 0,
$ispos7 = 0,
$j$0 = 0;
var $j$016 = 0,
$j$01629 = 0,
$j$01632 = 0,
$j$017 = 0,
$j$118 = 0,
$len$0$ph24 = 0,
$len$0$ph30 = 0,
$nclusters$0$lcssa = 0,
$nclusters$036 = 0,
$nclusters$1 = 0,
$neg = 0,
$neg2 = 0,
$neg4 = 0,
$neg6 = 0,
$neg8 = 0,
$neighbors$037 = 0,
$neighbors$1 = 0,
$nneighbors$0$ph27 = 0,
$nneighbors$0$ph31 = 0,
label = 0;
var sp = 0;
sp = STACKTOP;
$0 = _calloc($_nlines, 1) | 0;
$1 = ($_nlines + -1) | 0;
$2 = ($1 | 0) > 0;
if (!$2) {
$nclusters$0$lcssa = 0;
_free($0);
STACKTOP = sp;
return $nclusters$0$lcssa | 0;
}
$3 = $_lines;
$4 = (1 - $_v) | 0;
$i$035 = 0;
$nclusters$036 = 0;
$neighbors$037 = $_neighbors;
while (1) {
$5 = ($0 + $i$035) | 0;
$6 = HEAP8[$5 >> 0] | 0;
$7 = ($6 << 24) >> 24 == 0;
if ($7) {
$8 = ($_lines + (($i$035 * 20) | 0)) | 0;
HEAP32[$neighbors$037 >> 2] = $8;
$9 = ((($_lines + (($i$035 * 20) | 0)) | 0) + 8) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$j$01629 = ($i$035 + 1) | 0;
$11 = ($j$01629 | 0) < ($_nlines | 0);
if ($11) {
$18 = $8;
$j$01632 = $j$01629;
$len$0$ph30 = $10;
$nneighbors$0$ph31 = 1;
L8: while (1) {
$j$017 = $j$01632;
L10: while (1) {
$12 = ($0 + $j$017) | 0;
$13 = HEAP8[$12 >> 0] | 0;
$14 = ($13 << 24) >> 24 == 0;
do {
if ($14) {
$16 = ($_lines + (($j$017 * 20) | 0)) | 0;
$17 = ($18 + 8) | 0;
$19 = HEAP32[$17 >> 2] | 0;
$20 = ($19 + 7) | 0;
$21 = $20 >> 2;
$22 = ($18 + ($4 << 2)) | 0;
$23 = HEAP32[$22 >> 2] | 0;
$24 = ((($_lines + (($j$017 * 20) | 0)) | 0) + ($4 << 2)) | 0;
$25 = HEAP32[$24 >> 2] | 0;
$26 = ($23 - $25) | 0;
$ispos = ($26 | 0) > -1;
$neg = (0 - $26) | 0;
$27 = $ispos ? $26 : $neg;
$28 = ($27 | 0) > ($21 | 0);
if ($28) {
$len$0$ph24 = $len$0$ph30;
$nneighbors$0$ph27 = $nneighbors$0$ph31;
break L8;
}
$29 = ($18 + ($_v << 2)) | 0;
$30 = HEAP32[$29 >> 2] | 0;
$31 = ((($_lines + (($j$017 * 20) | 0)) | 0) + ($_v << 2)) | 0;
$32 = HEAP32[$31 >> 2] | 0;
$33 = ($30 - $32) | 0;
$ispos1 = ($33 | 0) > -1;
$neg2 = (0 - $33) | 0;
$34 = $ispos1 ? $33 : $neg2;
$35 = ($34 | 0) > ($21 | 0);
if (!$35) {
$36 = ($30 + $19) | 0;
$37 = ($36 - $32) | 0;
$38 = ((($_lines + (($j$017 * 20) | 0)) | 0) + 8) | 0;
$39 = HEAP32[$38 >> 2] | 0;
$40 = ($37 - $39) | 0;
$ispos3 = ($40 | 0) > -1;
$neg4 = (0 - $40) | 0;
$41 = $ispos3 ? $40 : $neg4;
$42 = ($41 | 0) > ($21 | 0);
if (!$42) {
$43 = ($18 + 12) | 0;
$44 = HEAP32[$43 >> 2] | 0;
$45 = ($44 | 0) > 0;
if ($45) {
$46 = ((($_lines + (($j$017 * 20) | 0)) | 0) + 12) | 0;
$47 = HEAP32[$46 >> 2] | 0;
$48 = ($47 | 0) > 0;
if ($48) {
$49 = ($33 - $44) | 0;
$50 = ($49 + $47) | 0;
$ispos7 = ($50 | 0) > -1;
$neg8 = (0 - $50) | 0;
$51 = $ispos7 ? $50 : $neg8;
$52 = ($51 | 0) > ($21 | 0);
if ($52) {
break;
}
}
}
$53 = ($18 + 16) | 0;
$54 = HEAP32[$53 >> 2] | 0;
$55 = ($54 | 0) > 0;
if (!$55) {
break L10;
}
$56 = ((($_lines + (($j$017 * 20) | 0)) | 0) + 16) | 0;
$57 = HEAP32[$56 >> 2] | 0;
$58 = ($57 | 0) > 0;
if (!$58) {
break L10;
}
$59 = ($54 - $57) | 0;
$60 = ($59 + $30) | 0;
$61 = ($60 + $19) | 0;
$62 = ($61 - $32) | 0;
$63 = ($62 - $39) | 0;
$ispos5 = ($63 | 0) > -1;
$neg6 = (0 - $63) | 0;
$64 = $ispos5 ? $63 : $neg6;
$65 = ($64 | 0) > ($21 | 0);
if (!$65) {
break L10;
}
}
}
}
} while (0);
$j$0 = ($j$017 + 1) | 0;
$15 = ($j$0 | 0) < ($_nlines | 0);
if ($15) {
$j$017 = $j$0;
} else {
$len$0$ph24 = $len$0$ph30;
$nneighbors$0$ph27 = $nneighbors$0$ph31;
break L8;
}
}
$66 = ($nneighbors$0$ph31 + 1) | 0;
$67 = ($neighbors$037 + ($nneighbors$0$ph31 << 2)) | 0;
HEAP32[$67 >> 2] = $16;
$68 = ($39 + $len$0$ph30) | 0;
$j$016 = ($j$017 + 1) | 0;
$69 = ($j$016 | 0) < ($_nlines | 0);
if ($69) {
$18 = $16;
$j$01632 = $j$016;
$len$0$ph30 = $68;
$nneighbors$0$ph31 = $66;
} else {
$len$0$ph24 = $68;
$nneighbors$0$ph27 = $66;
break;
}
}
$70 = ($nneighbors$0$ph27 | 0) < 3;
if ($70) {
$$pre$phiZ2D = $j$01629;
$nclusters$1 = $nclusters$036;
$neighbors$1 = $neighbors$037;
} else {
$71 = $len$0$ph24 << 1;
$72 = ($nneighbors$0$ph27 + $71) | 0;
$73 = $nneighbors$0$ph27 << 1;
$74 = (($72 | 0) / ($73 | 0)) & -1;
$75 = ($nneighbors$0$ph27 * 20) | 0;
$76 = ($75 | 0) < ($74 | 0);
if ($76) {
$$pre$phiZ2D = $j$01629;
$nclusters$1 = $nclusters$036;
$neighbors$1 = $neighbors$037;
} else {
$77 = ($_clusters + ($nclusters$036 << 3)) | 0;
HEAP32[$77 >> 2] = $neighbors$037;
$78 = ((($_clusters + ($nclusters$036 << 3)) | 0) + 4) | 0;
HEAP32[$78 >> 2] = $nneighbors$0$ph27;
$79 = ($nneighbors$0$ph27 | 0) > 0;
if ($79) {
$j$118 = 0;
while (1) {
$80 = ($neighbors$037 + ($j$118 << 2)) | 0;
$81 = HEAP32[$80 >> 2] | 0;
$82 = $81;
$83 = ($82 - $3) | 0;
$84 = (($83 | 0) / 20) & -1;
$85 = ($0 + $84) | 0;
HEAP8[$85 >> 0] = 1;
$86 = ($j$118 + 1) | 0;
$exitcond = ($86 | 0) == ($nneighbors$0$ph27 | 0);
if ($exitcond) {
break;
} else {
$j$118 = $86;
}
}
}
$87 = ($neighbors$037 + ($nneighbors$0$ph27 << 2)) | 0;
$88 = ($nclusters$036 + 1) | 0;
$$pre$phiZ2D = $j$01629;
$nclusters$1 = $88;
$neighbors$1 = $87;
}
}
} else {
$$pre$phiZ2D = $j$01629;
$nclusters$1 = $nclusters$036;
$neighbors$1 = $neighbors$037;
}
} else {
$$pre = ($i$035 + 1) | 0;
$$pre$phiZ2D = $$pre;
$nclusters$1 = $nclusters$036;
$neighbors$1 = $neighbors$037;
}
$exitcond53 = ($$pre$phiZ2D | 0) == ($1 | 0);
if ($exitcond53) {
$nclusters$0$lcssa = $nclusters$1;
break;
} else {
$i$035 = $$pre$phiZ2D;
$nclusters$036 = $nclusters$1;
$neighbors$037 = $neighbors$1;
}
}
_free($0);
STACKTOP = sp;
return $nclusters$0$lcssa | 0;
}
function _qr_finder_vline_cmp($_a, $_b) {
$_a = $_a | 0;
$_b = $_b | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP32[$_a >> 2] | 0;
$1 = HEAP32[$_b >> 2] | 0;
$2 = ($0 | 0) > ($1 | 0);
$3 = $2 & 1;
$4 = ($0 | 0) < ($1 | 0);
$5 = $4 & 1;
$6 = ($3 - $5) | 0;
$7 = $6 << 1;
$8 = ($_a + 4) | 0;
$9 = HEAP32[$8 >> 2] | 0;
$10 = ($_b + 4) | 0;
$11 = HEAP32[$10 >> 2] | 0;
$12 = ($9 | 0) > ($11 | 0);
$13 = $12 & 1;
$14 = $7 | $13;
$15 = ($9 | 0) < ($11 | 0);
$16 = $15 & 1;
$17 = ($14 - $16) | 0;
STACKTOP = sp;
return $17 | 0;
}
function _qr_finder_center_cmp($_a, $_b) {
$_a = $_a | 0;
$_b = $_b | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$28 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($_b + 12) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($_a + 12) | 0;
$3 = HEAP32[$2 >> 2] | 0;
$4 = ($1 | 0) > ($3 | 0);
$5 = $4 & 1;
$6 = ($1 | 0) < ($3 | 0);
$7 = $6 & 1;
$8 = ($5 - $7) | 0;
$9 = $8 << 2;
$10 = ($_a + 4) | 0;
$11 = HEAP32[$10 >> 2] | 0;
$12 = ($_b + 4) | 0;
$13 = HEAP32[$12 >> 2] | 0;
$14 = ($11 | 0) > ($13 | 0);
$15 = $14 & 1;
$16 = ($11 | 0) < ($13 | 0);
$17 = $16 & 1;
$18 = ($15 - $17) | 0;
$19 = $18 << 1;
$20 = ($19 + $9) | 0;
$21 = HEAP32[$_a >> 2] | 0;
$22 = HEAP32[$_b >> 2] | 0;
$23 = ($21 | 0) > ($22 | 0);
$24 = $23 & 1;
$25 = $20 | $24;
$26 = ($21 | 0) < ($22 | 0);
$27 = $26 & 1;
$28 = ($25 - $27) | 0;
STACKTOP = sp;
return $28 | 0;
}
function _qr_finder_edge_pts_aff_classify($_f, $_aff) {
$_f = $_f | 0;
$_aff = $_aff | 0;
var $$lcssa = 0,
$$lobit = 0,
$$phi$trans$insert = 0,
$$phi$trans$insert11 = 0,
$$phi$trans$insert9 = 0,
$$pre = 0,
$$pre10 = 0,
$$pre12 = 0,
$$pre8 = 0,
$$sum = 0,
$$sum16 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0;
var $17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0;
var $35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0;
var $53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0;
var $71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$8 = 0,
$9 = 0,
$i$04 = 0,
$ispos = 0,
$ispos1 = 0,
$neg = 0,
$neg2 = 0,
$q = 0,
$scevgep = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$q = sp;
$0 = ($_f + 72) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$scevgep = ($_f + 32) | 0;
HEAP32[($scevgep + 0) >> 2] = 0 | 0;
HEAP32[($scevgep + 4) >> 2] = 0 | 0;
HEAP32[($scevgep + 8) >> 2] = 0 | 0;
HEAP32[($scevgep + 12) >> 2] = 0 | 0;
$2 = ($1 + 12) | 0;
$3 = HEAP32[$2 >> 2] | 0;
$4 = ($3 | 0) > 0;
if (!$4) {
$$phi$trans$insert11 = ($1 + 8) | 0;
$$pre12 = HEAP32[$$phi$trans$insert11 >> 2] | 0;
$$lcssa = $3;
$64 = $$pre12;
$68 = 0;
$70 = 0;
$73 = 0;
$63 = ($1 + 8) | 0;
_qsort($64, $$lcssa, 16, 5);
$65 = HEAP32[$63 >> 2] | 0;
$66 = ($_f + 16) | 0;
HEAP32[$66 >> 2] = $65;
$67 = ($65 + ($68 << 4)) | 0;
$69 = ($_f + 20) | 0;
HEAP32[$69 >> 2] = $67;
$$sum = ($68 + $70) | 0;
$71 = ($65 + ($$sum << 4)) | 0;
$72 = ($_f + 24) | 0;
HEAP32[$72 >> 2] = $71;
$$sum16 = ($$sum + $73) | 0;
$74 = ($65 + ($$sum16 << 4)) | 0;
$75 = ($_f + 28) | 0;
HEAP32[$75 >> 2] = $74;
STACKTOP = sp;
return;
}
$5 = ($1 + 8) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($_aff + 16) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($_aff + 32) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($_aff + 20) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($_aff + 36) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = ($_aff + 44) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = 1 << $16;
$18 = $17 >> 1;
$19 = ($_aff + 24) | 0;
$20 = HEAP32[$19 >> 2] | 0;
$21 = ($_aff + 28) | 0;
$22 = HEAP32[$21 >> 2] | 0;
$23 = ($q + 4) | 0;
$24 = ($_f + 64) | 0;
$25 = ($_f + 68) | 0;
$i$04 = 0;
while (1) {
$26 = ($6 + ($i$04 << 4)) | 0;
$27 = HEAP32[$26 >> 2] | 0;
$28 = ((($6 + ($i$04 << 4)) | 0) + 4) | 0;
$29 = HEAP32[$28 >> 2] | 0;
$30 = ($27 - $10) | 0;
$31 = Math_imul($30, $8) | 0;
$32 = ($29 - $14) | 0;
$33 = Math_imul($32, $12) | 0;
$34 = ($33 + $31) | 0;
$35 = ($34 + $18) | 0;
$36 = $35 >> $16;
$37 = Math_imul($20, $30) | 0;
$38 = Math_imul($22, $32) | 0;
$39 = ($18 + $37) | 0;
$40 = ($39 + $38) | 0;
$41 = $40 >> $16;
$42 = HEAP32[$24 >> 2] | 0;
$43 = HEAP32[$25 >> 2] | 0;
$44 = ($36 - $42) | 0;
HEAP32[$q >> 2] = $44;
$45 = ($41 - $43) | 0;
HEAP32[$23 >> 2] = $45;
$ispos = ($45 | 0) > -1;
$neg = (0 - $45) | 0;
$46 = $ispos ? $45 : $neg;
$ispos1 = ($44 | 0) > -1;
$neg2 = (0 - $44) | 0;
$47 = $ispos1 ? $44 : $neg2;
$48 = ($46 | 0) > ($47 | 0);
$49 = $48 & 1;
$50 = $49 << 1;
$51 = ($q + ($49 << 2)) | 0;
$52 = HEAP32[$51 >> 2] | 0;
$$lobit = $52 >>> 31;
$53 = $50 | $$lobit;
$54 = $53 ^ 1;
$55 = ((($_f + ($54 << 2)) | 0) + 32) | 0;
$56 = HEAP32[$55 >> 2] | 0;
$57 = ($56 + 1) | 0;
HEAP32[$55 >> 2] = $57;
$58 = ((($6 + ($i$04 << 4)) | 0) + 8) | 0;
HEAP32[$58 >> 2] = $54;
$59 = ((($6 + ($i$04 << 4)) | 0) + 12) | 0;
HEAP32[$59 >> 2] = $52;
$60 = ($i$04 + 1) | 0;
$61 = HEAP32[$2 >> 2] | 0;
$62 = ($60 | 0) < ($61 | 0);
if ($62) {
$i$04 = $60;
} else {
break;
}
}
$$pre = HEAP32[$scevgep >> 2] | 0;
$$phi$trans$insert = ($_f + 36) | 0;
$$pre8 = HEAP32[$$phi$trans$insert >> 2] | 0;
$$phi$trans$insert9 = ($_f + 40) | 0;
$$pre10 = HEAP32[$$phi$trans$insert9 >> 2] | 0;
$$lcssa = $61;
$64 = $6;
$68 = $$pre;
$70 = $$pre8;
$73 = $$pre10;
$63 = ($1 + 8) | 0;
_qsort($64, $$lcssa, 16, 5);
$65 = HEAP32[$63 >> 2] | 0;
$66 = ($_f + 16) | 0;
HEAP32[$66 >> 2] = $65;
$67 = ($65 + ($68 << 4)) | 0;
$69 = ($_f + 20) | 0;
HEAP32[$69 >> 2] = $67;
$$sum = ($68 + $70) | 0;
$71 = ($65 + ($$sum << 4)) | 0;
$72 = ($_f + 24) | 0;
HEAP32[$72 >> 2] = $71;
$$sum16 = ($$sum + $73) | 0;
$74 = ($65 + ($$sum16 << 4)) | 0;
$75 = ($_f + 28) | 0;
HEAP32[$75 >> 2] = $74;
STACKTOP = sp;
return;
}
function _qr_finder_estimate_module_size_and_version($_f, $_width, $_height) {
$_f = $_f | 0;
$_width = $_width | 0;
$_height = $_height | 0;
var $$0 = 0,
$$off = 0,
$$off4 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0;
var $113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0;
var $19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0;
var $37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0;
var $55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0;
var $73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0;
var $91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$e$07 = 0,
$exitcond = 0,
$exitcond8 = 0,
$i$06 = 0,
$ispos = 0,
$neg = 0,
$nsums = 0,
$offs = 0,
$sum$0$lcssa = 0,
$sum$05 = 0,
$sums = 0;
var label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 48) | 0;
$offs = (sp + 32) | 0;
$sums = (sp + 16) | 0;
$nsums = sp;
$0 = ($offs + 4) | 0;
HEAP32[$0 >> 2] = 0;
HEAP32[$offs >> 2] = 0;
$e$07 = 0;
while (1) {
$1 = ((($_f + ($e$07 << 2)) | 0) + 32) | 0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($2 | 0) > 0;
if ($3) {
$4 = ((($_f + ($e$07 << 2)) | 0) + 16) | 0;
$5 = HEAP32[$4 >> 2] | 0;
$6 = $2 >> 2;
$7 = ($2 - $6) | 0;
$8 = ($6 | 0) < ($7 | 0);
if ($8) {
$i$06 = $6;
$sum$05 = 0;
while (1) {
$9 = ((($5 + ($i$06 << 4)) | 0) + 12) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($10 + $sum$05) | 0;
$12 = ($i$06 + 1) | 0;
$exitcond = ($12 | 0) == ($7 | 0);
if ($exitcond) {
$sum$0$lcssa = $11;
break;
} else {
$i$06 = $12;
$sum$05 = $11;
}
}
} else {
$sum$0$lcssa = 0;
}
$13 = $6 << 1;
$14 = ($2 - $13) | 0;
$15 = $14 >> 1;
$16 = $sum$0$lcssa >> 31;
$17 = ($16 + $15) | 0;
$18 = $17 ^ $16;
$19 = ($18 + $sum$0$lcssa) | 0;
$20 = (($19 | 0) / ($14 | 0)) & -1;
$21 = $e$07 >> 1;
$22 = ($offs + ($21 << 2)) | 0;
$23 = HEAP32[$22 >> 2] | 0;
$24 = ($23 + $20) | 0;
HEAP32[$22 >> 2] = $24;
$25 = ($sums + ($e$07 << 2)) | 0;
HEAP32[$25 >> 2] = $sum$0$lcssa;
$26 = ($nsums + ($e$07 << 2)) | 0;
HEAP32[$26 >> 2] = $14;
} else {
$27 = ($sums + ($e$07 << 2)) | 0;
HEAP32[$27 >> 2] = 0;
$28 = ($nsums + ($e$07 << 2)) | 0;
HEAP32[$28 >> 2] = 0;
}
$29 = ($e$07 + 1) | 0;
$exitcond8 = ($29 | 0) == 4;
if ($exitcond8) {
break;
} else {
$e$07 = $29;
}
}
$30 = ($_f + 32) | 0;
$31 = HEAP32[$30 >> 2] | 0;
$32 = ($31 | 0) > 0;
if ($32) {
$33 = ($_f + 36) | 0;
$34 = HEAP32[$33 >> 2] | 0;
$35 = ($34 | 0) > 0;
if ($35) {
$36 = HEAP32[$offs >> 2] | 0;
$37 = $36 >> 1;
$38 = ($_f + 64) | 0;
$39 = HEAP32[$38 >> 2] | 0;
$40 = ($39 - $37) | 0;
HEAP32[$38 >> 2] = $40;
$41 = HEAP32[$nsums >> 2] | 0;
$42 = Math_imul($41, $36) | 0;
$43 = $42 >> 1;
$44 = HEAP32[$sums >> 2] | 0;
$45 = ($44 - $43) | 0;
HEAP32[$sums >> 2] = $45;
$46 = ($nsums + 4) | 0;
$47 = HEAP32[$46 >> 2] | 0;
$48 = Math_imul($47, $36) | 0;
$49 = $48 >> 1;
$50 = ($sums + 4) | 0;
$51 = HEAP32[$50 >> 2] | 0;
$52 = ($51 - $49) | 0;
HEAP32[$50 >> 2] = $52;
}
}
$53 = ($_f + 40) | 0;
$54 = HEAP32[$53 >> 2] | 0;
$55 = ($54 | 0) > 0;
if ($55) {
$56 = ($_f + 44) | 0;
$57 = HEAP32[$56 >> 2] | 0;
$58 = ($57 | 0) > 0;
if ($58) {
$59 = HEAP32[$0 >> 2] | 0;
$60 = $59 >> 1;
$61 = ($_f + 68) | 0;
$62 = HEAP32[$61 >> 2] | 0;
$63 = ($62 - $60) | 0;
HEAP32[$61 >> 2] = $63;
$64 = ($nsums + 8) | 0;
$65 = HEAP32[$64 >> 2] | 0;
$66 = Math_imul($65, $59) | 0;
$67 = $66 >> 1;
$68 = ($sums + 8) | 0;
$69 = HEAP32[$68 >> 2] | 0;
$70 = ($69 - $67) | 0;
HEAP32[$68 >> 2] = $70;
$71 = ($nsums + 12) | 0;
$72 = HEAP32[$71 >> 2] | 0;
$73 = Math_imul($72, $59) | 0;
$74 = $73 >> 1;
$75 = ($sums + 12) | 0;
$76 = HEAP32[$75 >> 2] | 0;
$77 = ($76 - $74) | 0;
HEAP32[$75 >> 2] = $77;
}
}
$78 = HEAP32[$nsums >> 2] | 0;
$79 = ($nsums + 4) | 0;
$80 = HEAP32[$79 >> 2] | 0;
$81 = ($80 + $78) | 0;
$82 = ($81 | 0) < 1;
if ($82) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
$83 = ($81 * 3) | 0;
$84 = ($sums + 4) | 0;
$85 = HEAP32[$84 >> 2] | 0;
$86 = HEAP32[$sums >> 2] | 0;
$87 = ($85 - $86) | 0;
$88 = $87 << 1;
$89 = ($88 + $83) | 0;
$90 = ($81 * 6) | 0;
$91 = (($89 | 0) / ($90 | 0)) & -1;
$92 = ($91 | 0) < 1;
if ($92) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
$93 = $91 << 3;
$94 = ($_width - $93) | 0;
$95 = $91 << 2;
$96 = (($94 | 0) / ($95 | 0)) & -1;
$$off = ($96 + -1) | 0;
$97 = $$off >>> 0 > 42;
if ($97) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
$98 = ($nsums + 8) | 0;
$99 = HEAP32[$98 >> 2] | 0;
$100 = ($nsums + 12) | 0;
$101 = HEAP32[$100 >> 2] | 0;
$102 = ($101 + $99) | 0;
$103 = ($102 | 0) < 1;
if ($103) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
$104 = ($102 * 3) | 0;
$105 = ($sums + 12) | 0;
$106 = HEAP32[$105 >> 2] | 0;
$107 = ($sums + 8) | 0;
$108 = HEAP32[$107 >> 2] | 0;
$109 = ($106 - $108) | 0;
$110 = $109 << 1;
$111 = ($110 + $104) | 0;
$112 = ($102 * 6) | 0;
$113 = (($111 | 0) / ($112 | 0)) & -1;
$114 = ($113 | 0) < 1;
if ($114) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
$115 = $113 << 3;
$116 = ($_height - $115) | 0;
$117 = $113 << 2;
$118 = (($116 | 0) / ($117 | 0)) & -1;
$$off4 = ($118 + -1) | 0;
$119 = $$off4 >>> 0 > 42;
if ($119) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
$120 = ($96 - $118) | 0;
$ispos = ($120 | 0) > -1;
$neg = (0 - $120) | 0;
$121 = $ispos ? $120 : $neg;
$122 = ($121 | 0) > 3;
if ($122) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
HEAP32[$_f >> 2] = $91;
$123 = ($_f + 4) | 0;
HEAP32[$123 >> 2] = $113;
$124 = ($_f + 8) | 0;
HEAP32[$124 >> 2] = $96;
$125 = ($_f + 12) | 0;
HEAP32[$125 >> 2] = $118;
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
function _qr_finder_edge_pts_hom_classify($_f, $_hom) {
$_f = $_f | 0;
$_hom = $_hom | 0;
var $$lcssa = 0,
$$lobit = 0,
$$phi$trans$insert = 0,
$$phi$trans$insert10 = 0,
$$phi$trans$insert12 = 0,
$$pre = 0,
$$pre11 = 0,
$$pre13 = 0,
$$pre9 = 0,
$$sum = 0,
$$sum17 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0;
var $106 = 0,
$107 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0;
var $28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0;
var $46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0;
var $64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0;
var $82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$i$04 = 0;
var $ispos = 0,
$ispos1 = 0,
$neg = 0,
$neg2 = 0,
$q = 0,
$scevgep = 0,
$w$0$i = 0,
$x$0$i = 0,
$y$0$i = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$q = sp;
$0 = ($_f + 72) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$scevgep = ($_f + 32) | 0;
HEAP32[($scevgep + 0) >> 2] = 0 | 0;
HEAP32[($scevgep + 4) >> 2] = 0 | 0;
HEAP32[($scevgep + 8) >> 2] = 0 | 0;
HEAP32[($scevgep + 12) >> 2] = 0 | 0;
$2 = ($1 + 12) | 0;
$3 = HEAP32[$2 >> 2] | 0;
$4 = ($3 | 0) > 0;
if (!$4) {
$$phi$trans$insert12 = ($1 + 8) | 0;
$$pre13 = HEAP32[$$phi$trans$insert12 >> 2] | 0;
$$lcssa = $3;
$100 = 0;
$102 = 0;
$105 = 0;
$96 = $$pre13;
$95 = ($1 + 8) | 0;
_qsort($96, $$lcssa, 16, 5);
$97 = HEAP32[$95 >> 2] | 0;
$98 = ($_f + 16) | 0;
HEAP32[$98 >> 2] = $97;
$99 = ($97 + ($100 << 4)) | 0;
$101 = ($_f + 20) | 0;
HEAP32[$101 >> 2] = $99;
$$sum = ($100 + $102) | 0;
$103 = ($97 + ($$sum << 4)) | 0;
$104 = ($_f + 24) | 0;
HEAP32[$104 >> 2] = $103;
$$sum17 = ($$sum + $105) | 0;
$106 = ($97 + ($$sum17 << 4)) | 0;
$107 = ($_f + 28) | 0;
HEAP32[$107 >> 2] = $106;
STACKTOP = sp;
return;
}
$5 = ($1 + 8) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($_hom + 56) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($_hom + 60) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($_hom + 24) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($_hom + 28) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = ($_hom + 32) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = ($_hom + 36) | 0;
$18 = HEAP32[$17 >> 2] | 0;
$19 = ($_hom + 40) | 0;
$20 = HEAP32[$19 >> 2] | 0;
$21 = ($_hom + 44) | 0;
$22 = HEAP32[$21 >> 2] | 0;
$23 = ($_hom + 52) | 0;
$24 = HEAP32[$23 >> 2] | 0;
$25 = ($_hom + 64) | 0;
$26 = HEAP32[$25 >> 2] | 0;
$27 = ($26 + -1) | 0;
$28 = 1 << $27;
$29 = ($q + 4) | 0;
$30 = ($_f + 64) | 0;
$31 = ($_f + 68) | 0;
$i$04 = 0;
while (1) {
$32 = ($6 + ($i$04 << 4)) | 0;
$33 = HEAP32[$32 >> 2] | 0;
$34 = ((($6 + ($i$04 << 4)) | 0) + 4) | 0;
$35 = HEAP32[$34 >> 2] | 0;
$36 = ($33 - $8) | 0;
$37 = ($35 - $10) | 0;
$38 = Math_imul($12, $36) | 0;
$39 = Math_imul($14, $37) | 0;
$40 = ($39 + $38) | 0;
$41 = Math_imul($16, $36) | 0;
$42 = Math_imul($18, $37) | 0;
$43 = ($42 + $41) | 0;
$44 = Math_imul($20, $36) | 0;
$45 = Math_imul($22, $37) | 0;
$46 = ($45 + $44) | 0;
$47 = ($46 + $24) | 0;
$48 = ($47 + $28) | 0;
$49 = $48 >> $26;
$50 = ($49 | 0) == 0;
if ($50) {
$85 = $40 >>> 31;
$86 = ($85 + 2147483647) | 0;
HEAP32[$q >> 2] = $86;
$87 = $43 >>> 31;
$88 = ($87 + 2147483647) | 0;
HEAP32[$29 >> 2] = $88;
$89 = ((($6 + ($i$04 << 4)) | 0) + 8) | 0;
HEAP32[$89 >> 2] = 4;
$90 = HEAP32[$q >> 2] | 0;
$91 = ((($6 + ($i$04 << 4)) | 0) + 12) | 0;
HEAP32[$91 >> 2] = $90;
} else {
$51 = ($49 | 0) < 0;
if ($51) {
$52 = (0 - $40) | 0;
$53 = (0 - $43) | 0;
$54 = (0 - $49) | 0;
$w$0$i = $54;
$x$0$i = $52;
$y$0$i = $53;
} else {
$w$0$i = $49;
$x$0$i = $40;
$y$0$i = $43;
}
$55 = $w$0$i >> 1;
$56 = $x$0$i >> 31;
$57 = ($55 + $56) | 0;
$58 = $57 ^ $56;
$59 = ($58 + $x$0$i) | 0;
$60 = (($59 | 0) / ($w$0$i | 0)) & -1;
$61 = $y$0$i >> 31;
$62 = ($55 + $61) | 0;
$63 = $62 ^ $61;
$64 = ($63 + $y$0$i) | 0;
$65 = (($64 | 0) / ($w$0$i | 0)) & -1;
$66 = HEAP32[$30 >> 2] | 0;
$67 = HEAP32[$31 >> 2] | 0;
$68 = ($60 - $66) | 0;
HEAP32[$q >> 2] = $68;
$69 = ($65 - $67) | 0;
HEAP32[$29 >> 2] = $69;
$ispos = ($69 | 0) > -1;
$neg = (0 - $69) | 0;
$70 = $ispos ? $69 : $neg;
$ispos1 = ($68 | 0) > -1;
$neg2 = (0 - $68) | 0;
$71 = $ispos1 ? $68 : $neg2;
$72 = ($70 | 0) > ($71 | 0);
$73 = $72 & 1;
$74 = $73 << 1;
$75 = ($q + ($73 << 2)) | 0;
$76 = HEAP32[$75 >> 2] | 0;
$$lobit = $76 >>> 31;
$77 = $74 | $$lobit;
$78 = $77 ^ 1;
$79 = ((($_f + ($78 << 2)) | 0) + 32) | 0;
$80 = HEAP32[$79 >> 2] | 0;
$81 = ($80 + 1) | 0;
HEAP32[$79 >> 2] = $81;
$82 = ((($6 + ($i$04 << 4)) | 0) + 8) | 0;
HEAP32[$82 >> 2] = $78;
$83 = HEAP32[$75 >> 2] | 0;
$84 = ((($6 + ($i$04 << 4)) | 0) + 12) | 0;
HEAP32[$84 >> 2] = $83;
}
$92 = ($i$04 + 1) | 0;
$93 = HEAP32[$2 >> 2] | 0;
$94 = ($92 | 0) < ($93 | 0);
if ($94) {
$i$04 = $92;
} else {
break;
}
}
$$pre = HEAP32[$scevgep >> 2] | 0;
$$phi$trans$insert = ($_f + 36) | 0;
$$pre9 = HEAP32[$$phi$trans$insert >> 2] | 0;
$$phi$trans$insert10 = ($_f + 40) | 0;
$$pre11 = HEAP32[$$phi$trans$insert10 >> 2] | 0;
$$lcssa = $93;
$100 = $$pre;
$102 = $$pre9;
$105 = $$pre11;
$96 = $6;
$95 = ($1 + 8) | 0;
_qsort($96, $$lcssa, 16, 5);
$97 = HEAP32[$95 >> 2] | 0;
$98 = ($_f + 16) | 0;
HEAP32[$98 >> 2] = $97;
$99 = ($97 + ($100 << 4)) | 0;
$101 = ($_f + 20) | 0;
HEAP32[$101 >> 2] = $99;
$$sum = ($100 + $102) | 0;
$103 = ($97 + ($$sum << 4)) | 0;
$104 = ($_f + 24) | 0;
HEAP32[$104 >> 2] = $103;
$$sum17 = ($$sum + $105) | 0;
$106 = ($97 + ($$sum17 << 4)) | 0;
$107 = ($_f + 28) | 0;
HEAP32[$107 >> 2] = $106;
STACKTOP = sp;
return;
}
function _qr_finder_version_decode($_f, $_hom, $_img, $_width, $_height, $_dir) {
$_f = $_f | 0;
$_hom = $_hom | 0;
$_img = $_img | 0;
$_width = $_width | 0;
$_height = $_height | 0;
$_dir = $_dir | 0;
var $$0$i = 0,
$$0$i1 = 0,
$$01$i = 0,
$$02$i = 0,
$$off$i = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0;
var $111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0;
var $13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0;
var $148 = 0,
$149 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0;
var $31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0;
var $5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0;
var $68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0;
var $86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$exitcond = 0,
$exitcond23 = 0,
$i$016 = 0,
$indvars$iv = 0,
$indvars$iv$next = 0;
var $k$017 = 0,
$k$18 = 0,
$or$cond$i$i = 0,
$or$cond$i5$i = 0,
$q = 0,
$ret$03$i$i = 0,
$ret$03$i3$i = 0,
$w$011 = 0,
$w0$013 = 0,
$x$011$i = 0,
$x$09 = 0,
$x0$015 = 0,
$y$010 = 0,
$y$02$i$i = 0,
$y$02$i4$i = 0,
$y0$014 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$q = sp;
$0 = ((($_f + ($_dir << 2)) | 0) + 64) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($_f + ($_dir << 2)) | 0;
$3 = HEAP32[$2 >> 2] | 0;
$4 = Math_imul($3, -7) | 0;
$5 = ($4 + $1) | 0;
$6 = ($q + ($_dir << 2)) | 0;
HEAP32[$6 >> 2] = $5;
$7 = (1 - $_dir) | 0;
$8 = ((($_f + ($7 << 2)) | 0) + 64) | 0;
$9 = HEAP32[$8 >> 2] | 0;
$10 = ($_f + ($7 << 2)) | 0;
$11 = HEAP32[$10 >> 2] | 0;
$12 = Math_imul($11, -3) | 0;
$13 = ($12 + $9) | 0;
$14 = ($q + ($7 << 2)) | 0;
HEAP32[$14 >> 2] = $13;
$15 = HEAP32[$_hom >> 2] | 0;
$16 = HEAP32[$q >> 2] | 0;
$17 = Math_imul($16, $15) | 0;
$18 = ($_hom + 4) | 0;
$19 = HEAP32[$18 >> 2] | 0;
$20 = ($q + 4) | 0;
$21 = HEAP32[$20 >> 2] | 0;
$22 = Math_imul($21, $19) | 0;
$23 = ($22 + $17) | 0;
$24 = ($_hom + 8) | 0;
$25 = HEAP32[$24 >> 2] | 0;
$26 = Math_imul($25, $16) | 0;
$27 = ($_hom + 12) | 0;
$28 = HEAP32[$27 >> 2] | 0;
$29 = Math_imul($28, $21) | 0;
$30 = ($29 + $26) | 0;
$31 = ($_hom + 16) | 0;
$32 = HEAP32[$31 >> 2] | 0;
$33 = Math_imul($32, $16) | 0;
$34 = ($_hom + 20) | 0;
$35 = HEAP32[$34 >> 2] | 0;
$36 = Math_imul($35, $21) | 0;
$37 = ($36 + $33) | 0;
$38 = ($_hom + 48) | 0;
$39 = HEAP32[$38 >> 2] | 0;
$40 = ($37 + $39) | 0;
$41 = ($_hom + ($7 << 2)) | 0;
$42 = HEAP32[$41 >> 2] | 0;
$43 = Math_imul($11, $42) | 0;
$44 = ((($_hom + ($7 << 2)) | 0) + 8) | 0;
$45 = HEAP32[$44 >> 2] | 0;
$46 = Math_imul($45, $11) | 0;
$47 = ((($_hom + ($7 << 2)) | 0) + 16) | 0;
$48 = HEAP32[$47 >> 2] | 0;
$49 = Math_imul($48, $11) | 0;
$50 = ($_hom + ($_dir << 2)) | 0;
$51 = HEAP32[$50 >> 2] | 0;
$52 = Math_imul($3, $51) | 0;
$53 = ((($_hom + ($_dir << 2)) | 0) + 8) | 0;
$54 = HEAP32[$53 >> 2] | 0;
$55 = Math_imul($54, $3) | 0;
$56 = ((($_hom + ($_dir << 2)) | 0) + 16) | 0;
$57 = HEAP32[$56 >> 2] | 0;
$58 = Math_imul($57, $3) | 0;
$59 = ($_height + -1) | 0;
$60 = ($_width + -1) | 0;
$61 = ($_hom + 56) | 0;
$62 = ($_hom + 60) | 0;
$148 = 0;
$i$016 = 0;
$indvars$iv = 3;
$k$017 = 0;
$w0$013 = $40;
$x0$015 = $23;
$y0$014 = $30;
while (1) {
$107 = $148;
$k$18 = $k$017;
$w$011 = $w0$013;
$x$09 = $x0$015;
$y$010 = $y0$014;
while (1) {
$63 = ($w$011 | 0) == 0;
if ($63) {
$64 = $x$09 >>> 31;
$65 = ($64 + 2147483647) | 0;
$66 = $y$010 >>> 31;
$67 = ($66 + 2147483647) | 0;
$88 = $65;
$90 = $67;
} else {
$68 = ($w$011 | 0) < 0;
if ($68) {
$69 = (0 - $x$09) | 0;
$70 = (0 - $y$010) | 0;
$71 = (0 - $w$011) | 0;
$$0$i = $71;
$$01$i = $70;
$$02$i = $69;
} else {
$$0$i = $w$011;
$$01$i = $y$010;
$$02$i = $x$09;
}
$72 = $$0$i >> 1;
$73 = $$02$i >> 31;
$74 = ($72 + $73) | 0;
$75 = $74 ^ $73;
$76 = ($75 + $$02$i) | 0;
$77 = (($76 | 0) / ($$0$i | 0)) & -1;
$78 = HEAP32[$61 >> 2] | 0;
$79 = ($78 + $77) | 0;
$80 = $$01$i >> 31;
$81 = ($72 + $80) | 0;
$82 = $81 ^ $80;
$83 = ($82 + $$01$i) | 0;
$84 = (($83 | 0) / ($$0$i | 0)) & -1;
$85 = HEAP32[$62 >> 2] | 0;
$86 = ($85 + $84) | 0;
$88 = $79;
$90 = $86;
}
$87 = $88 >> 2;
$89 = $90 >> 2;
$91 = ($89 | 0) >= ($_height | 0);
$92 = $91 ? $59 : $89;
$93 = ($92 | 0) > 0;
$94 = $93 ? $92 : 0;
$95 = Math_imul($94, $_width) | 0;
$96 = ($87 | 0) >= ($_width | 0);
$97 = $96 ? $60 : $87;
$98 = ($97 | 0) > 0;
$99 = $98 ? $97 : 0;
$100 = ($95 + $99) | 0;
$101 = ($_img + $100) | 0;
$102 = HEAP8[$101 >> 0] | 0;
$103 = ($102 << 24) >> 24 != 0;
$104 = $103 & 1;
$105 = $104 << $k$18;
$106 = $105 | $107;
$108 = ($x$09 + $52) | 0;
$109 = ($y$010 + $55) | 0;
$110 = ($w$011 + $58) | 0;
$111 = ($k$18 + 1) | 0;
$exitcond = ($111 | 0) == ($indvars$iv | 0);
if ($exitcond) {
break;
} else {
$107 = $106;
$k$18 = $111;
$w$011 = $110;
$x$09 = $108;
$y$010 = $109;
}
}
$112 = ($k$017 + 3) | 0;
$113 = ($x0$015 + $43) | 0;
$114 = ($y0$014 + $46) | 0;
$115 = ($w0$013 + $49) | 0;
$116 = ($i$016 + 1) | 0;
$indvars$iv$next = ($indvars$iv + 3) | 0;
$exitcond23 = ($116 | 0) == 6;
if ($exitcond23) {
break;
} else {
$148 = $106;
$i$016 = $116;
$indvars$iv = $indvars$iv$next;
$k$017 = $112;
$w0$013 = $115;
$x0$015 = $113;
$y0$014 = $114;
}
}
$117 = $106 >>> 12;
$$off$i = ($106 + -28672) | 0;
$118 = $$off$i >>> 0 < 139264;
if ($118) {
$119 = ($117 + -7) | 0;
$120 = (7752 + ($119 << 2)) | 0;
$121 = HEAP32[$120 >> 2] | 0;
$122 = ($121 | 0) == ($106 | 0);
if ($122) {
$146 = $106;
} else {
$123 = $121 ^ $106;
$ret$03$i$i = 0;
$y$02$i$i = $123;
while (1) {
$124 = ($y$02$i$i + -1) | 0;
$125 = $124 & $y$02$i$i;
$126 = ($ret$03$i$i + 1) | 0;
$127 = ($ret$03$i$i | 0) > 2;
$128 = ($125 | 0) == 0;
$or$cond$i$i = $127 | $128;
if ($or$cond$i$i) {
break;
} else {
$ret$03$i$i = $126;
$y$02$i$i = $125;
}
}
$129 = ($126 | 0) < 4;
if ($129) {
$$0$i1 = $126;
$149 = $121;
label = 21;
} else {
$x$011$i = 0;
label = 15;
}
}
} else {
$x$011$i = 0;
label = 15;
}
L20: do {
if ((label | 0) == 15) {
while (1) {
label = 0;
$130 = ($x$011$i + 7) | 0;
$131 = ($130 | 0) == ($117 | 0);
if (!$131) {
$132 = (7752 + ($x$011$i << 2)) | 0;
$133 = HEAP32[$132 >> 2] | 0;
$134 = ($133 | 0) == ($106 | 0);
if ($134) {
$146 = $106;
break L20;
}
$135 = $133 ^ $106;
$ret$03$i3$i = 0;
$y$02$i4$i = $135;
while (1) {
$136 = ($y$02$i4$i + -1) | 0;
$137 = $136 & $y$02$i4$i;
$138 = ($ret$03$i3$i + 1) | 0;
$139 = ($ret$03$i3$i | 0) > 2;
$140 = ($137 | 0) == 0;
$or$cond$i5$i = $139 | $140;
if ($or$cond$i5$i) {
break;
} else {
$ret$03$i3$i = $138;
$y$02$i4$i = $137;
}
}
$141 = ($138 | 0) < 4;
if ($141) {
$$0$i1 = $138;
$149 = $133;
label = 21;
break L20;
}
}
$142 = ($x$011$i + 1) | 0;
$143 = $142 >>> 0 < 34;
if ($143) {
$x$011$i = $142;
label = 15;
} else {
$147 = -1;
break;
}
}
STACKTOP = sp;
return $147 | 0;
}
} while (0);
if ((label | 0) == 21) {
$144 = ($$0$i1 | 0) > -1;
if ($144) {
$146 = $149;
} else {
$147 = $$0$i1;
STACKTOP = sp;
return $147 | 0;
}
}
$145 = $146 >>> 12;
$147 = $145;
STACKTOP = sp;
return $147 | 0;
}
function _qr_finder_fmt_info_decode($_ul, $_ur, $_dl, $_hom, $_img, $_width, $_height) {
$_ul = $_ul | 0;
$_ur = $_ur | 0;
$_dl = $_dl | 0;
$_hom = $_hom | 0;
$_img = $_img | 0;
$_width = $_width | 0;
$_height = $_height | 0;
var $$ = 0,
$$0$i = 0,
$$0$i11 = 0,
$$0$i3 = 0,
$$0$i7 = 0,
$$01$i = 0,
$$01$i10 = 0,
$$01$i2 = 0,
$$01$i6 = 0,
$$02$i = 0,
$$02$i1 = 0,
$$02$i5 = 0,
$$02$i9 = 0,
$$lcssa = 0,
$$pre = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0;
var $102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0;
var $120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0;
var $139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0,
$152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0;
var $157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0,
$170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0;
var $175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0,
$189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0;
var $193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0,
$206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0;
var $210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0,
$224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0;
var $229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0,
$242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0;
var $247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0,
$260 = 0,
$261 = 0,
$262 = 0,
$263 = 0,
$264 = 0;
var $265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0,
$279 = 0,
$28 = 0,
$280 = 0,
$281 = 0,
$282 = 0;
var $283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0,
$297 = 0,
$298 = 0,
$299 = 0,
$3 = 0,
$30 = 0;
var $300 = 0,
$301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0,
$306 = 0,
$307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0,
$313 = 0,
$314 = 0,
$315 = 0,
$316 = 0,
$317 = 0,
$318 = 0;
var $319 = 0,
$32 = 0,
$320 = 0,
$321 = 0,
$322 = 0,
$323 = 0,
$324 = 0,
$325 = 0,
$326 = 0,
$327 = 0,
$328 = 0,
$329 = 0,
$33 = 0,
$330 = 0,
$331 = 0,
$332 = 0,
$333 = 0,
$334 = 0,
$335 = 0,
$336 = 0;
var $337 = 0,
$338 = 0,
$339 = 0,
$34 = 0,
$340 = 0,
$341 = 0,
$342 = 0,
$343 = 0,
$344 = 0,
$345 = 0,
$346 = 0,
$347 = 0,
$348 = 0,
$349 = 0,
$35 = 0,
$350 = 0,
$351 = 0,
$352 = 0,
$353 = 0,
$354 = 0;
var $355 = 0,
$356 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0;
var $52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0;
var $70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0;
var $89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$besti$0$lcssa = 0,
$besti$013 = 0,
$besti$1 = 0,
$count = 0,
$exitcond = 0,
$exitcond56 = 0,
$exitcond58 = 0,
$fmt_info = 0;
var $hi = 0,
$i$0 = 0,
$i$1 = 0,
$i$1$ph = 0,
$i$226 = 0,
$i$314 = 0,
$j$0$lcssa = 0,
$j$019 = 0,
$k$0 = 0,
$k$1 = 0,
$k$2$ph = 0,
$k$338 = 0,
$k$433 = 0,
$lo = 0,
$nerrs = 0,
$nfmt_info$024 = 0,
$nfmt_info$1 = 0,
$v1 = 0,
$w$0 = 0,
$w$1 = 0;
var $w$1$ph = 0,
$w$237 = 0,
$w$332 = 0,
$x$0 = 0,
$x$1 = 0,
$x$1$ph = 0,
$x$235 = 0,
$x$330 = 0,
$y$0 = 0,
$y$1 = 0,
$y$1$ph = 0,
$y$236 = 0,
$y$331 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 80) | 0;
$lo = (sp + 64) | 0;
$hi = (sp + 56) | 0;
$fmt_info = (sp + 40) | 0;
$count = (sp + 24) | 0;
$nerrs = (sp + 8) | 0;
$v1 = sp;
HEAP32[$lo >> 2] = 0;
$0 = ($_ul + 64) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = HEAP32[$_ul >> 2] | 0;
$3 = ($2 * 5) | 0;
$4 = ($3 + $1) | 0;
$5 = ($_ul + 68) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($_ul + 4) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = Math_imul($8, -3) | 0;
$10 = ($9 + $6) | 0;
$11 = HEAP32[$_hom >> 2] | 0;
$12 = Math_imul($11, $4) | 0;
$13 = ($_hom + 4) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = Math_imul($14, $10) | 0;
$16 = ($15 + $12) | 0;
$17 = ($_hom + 8) | 0;
$18 = HEAP32[$17 >> 2] | 0;
$19 = Math_imul($18, $4) | 0;
$20 = ($_hom + 12) | 0;
$21 = HEAP32[$20 >> 2] | 0;
$22 = Math_imul($21, $10) | 0;
$23 = ($22 + $19) | 0;
$24 = ($_hom + 16) | 0;
$25 = HEAP32[$24 >> 2] | 0;
$26 = Math_imul($25, $4) | 0;
$27 = ($_hom + 20) | 0;
$28 = HEAP32[$27 >> 2] | 0;
$29 = Math_imul($28, $10) | 0;
$30 = ($29 + $26) | 0;
$31 = ($_hom + 48) | 0;
$32 = HEAP32[$31 >> 2] | 0;
$33 = ($30 + $32) | 0;
$34 = Math_imul($14, $8) | 0;
$35 = Math_imul($21, $8) | 0;
$36 = Math_imul($28, $8) | 0;
$37 = ($_height + -1) | 0;
$38 = ($_width + -1) | 0;
$39 = ($_hom + 56) | 0;
$40 = ($_hom + 60) | 0;
$87 = 0;
$i$0 = 0;
$k$0 = 0;
$w$0 = $33;
$x$0 = $16;
$y$0 = $23;
while (1) {
$41 = ($i$0 | 0) == 6;
if ($41) {
$356 = $87;
$k$1 = $k$0;
} else {
$42 = ($w$0 | 0) == 0;
if ($42) {
$43 = $x$0 >>> 31;
$44 = ($43 + 2147483647) | 0;
$45 = $y$0 >>> 31;
$46 = ($45 + 2147483647) | 0;
$67 = $44;
$69 = $46;
} else {
$47 = ($w$0 | 0) < 0;
if ($47) {
$48 = (0 - $x$0) | 0;
$49 = (0 - $y$0) | 0;
$50 = (0 - $w$0) | 0;
$$0$i = $50;
$$01$i = $49;
$$02$i = $48;
} else {
$$0$i = $w$0;
$$01$i = $y$0;
$$02$i = $x$0;
}
$51 = $$0$i >> 1;
$52 = $$02$i >> 31;
$53 = ($51 + $52) | 0;
$54 = $53 ^ $52;
$55 = ($54 + $$02$i) | 0;
$56 = (($55 | 0) / ($$0$i | 0)) & -1;
$57 = HEAP32[$39 >> 2] | 0;
$58 = ($57 + $56) | 0;
$59 = $$01$i >> 31;
$60 = ($51 + $59) | 0;
$61 = $60 ^ $59;
$62 = ($61 + $$01$i) | 0;
$63 = (($62 | 0) / ($$0$i | 0)) & -1;
$64 = HEAP32[$40 >> 2] | 0;
$65 = ($64 + $63) | 0;
$67 = $58;
$69 = $65;
}
$66 = $67 >> 2;
$68 = $69 >> 2;
$70 = ($68 | 0) >= ($_height | 0);
$71 = $70 ? $37 : $68;
$72 = ($71 | 0) > 0;
$73 = $72 ? $71 : 0;
$74 = Math_imul($73, $_width) | 0;
$75 = ($66 | 0) >= ($_width | 0);
$76 = $75 ? $38 : $66;
$77 = ($76 | 0) > 0;
$78 = $77 ? $76 : 0;
$79 = ($74 + $78) | 0;
$80 = ($_img + $79) | 0;
$81 = HEAP8[$80 >> 0] | 0;
$82 = ($81 << 24) >> 24 != 0;
$83 = $82 & 1;
$84 = ($k$0 + 1) | 0;
$85 = $83 << $k$0;
$86 = $85 | $87;
$88 = ($i$0 | 0) > 7;
if ($88) {
break;
} else {
$356 = $86;
$k$1 = $84;
}
}
$89 = ($x$0 + $34) | 0;
$90 = ($y$0 + $35) | 0;
$91 = ($w$0 + $36) | 0;
$92 = ($i$0 + 1) | 0;
$87 = $356;
$i$0 = $92;
$k$0 = $k$1;
$w$0 = $91;
$x$0 = $89;
$y$0 = $90;
}
HEAP32[$lo >> 2] = $86;
HEAP32[$hi >> 2] = 0;
$93 = Math_imul($2, $11) | 0;
$94 = Math_imul($18, $2) | 0;
$95 = Math_imul($25, $2) | 0;
$147 = 0;
$i$1$ph = $i$0;
$k$2$ph = $84;
$w$1$ph = $w$0;
$x$1$ph = $x$0;
$y$1$ph = $y$0;
L14: while (1) {
$i$1 = $i$1$ph;
$w$1 = $w$1$ph;
$x$1 = $x$1$ph;
$y$1 = $y$1$ph;
while (1) {
$96 = ($i$1 + -1) | 0;
$97 = ($i$1 | 0) > 0;
if (!$97) {
break L14;
}
$98 = ($x$1 - $93) | 0;
$99 = ($y$1 - $94) | 0;
$100 = ($w$1 - $95) | 0;
$101 = ($96 | 0) == 6;
if ($101) {
$i$1 = 6;
$w$1 = $100;
$x$1 = $98;
$y$1 = $99;
} else {
break;
}
}
$102 = ($w$1 | 0) == ($95 | 0);
if ($102) {
$103 = $98 >>> 31;
$104 = ($103 + 2147483647) | 0;
$105 = $99 >>> 31;
$106 = ($105 + 2147483647) | 0;
$127 = $104;
$129 = $106;
} else {
$107 = ($100 | 0) < 0;
if ($107) {
$108 = (0 - $98) | 0;
$109 = (0 - $99) | 0;
$110 = (0 - $100) | 0;
$$0$i11 = $110;
$$01$i10 = $109;
$$02$i9 = $108;
} else {
$$0$i11 = $100;
$$01$i10 = $99;
$$02$i9 = $98;
}
$111 = $$0$i11 >> 1;
$112 = $$02$i9 >> 31;
$113 = ($111 + $112) | 0;
$114 = $113 ^ $112;
$115 = ($114 + $$02$i9) | 0;
$116 = (($115 | 0) / ($$0$i11 | 0)) & -1;
$117 = HEAP32[$39 >> 2] | 0;
$118 = ($117 + $116) | 0;
$119 = $$01$i10 >> 31;
$120 = ($111 + $119) | 0;
$121 = $120 ^ $119;
$122 = ($121 + $$01$i10) | 0;
$123 = (($122 | 0) / ($$0$i11 | 0)) & -1;
$124 = HEAP32[$40 >> 2] | 0;
$125 = ($124 + $123) | 0;
$127 = $118;
$129 = $125;
}
$126 = $127 >> 2;
$128 = $129 >> 2;
$130 = ($128 | 0) >= ($_height | 0);
$131 = $130 ? $37 : $128;
$132 = ($131 | 0) > 0;
$133 = $132 ? $131 : 0;
$134 = Math_imul($133, $_width) | 0;
$135 = ($126 | 0) >= ($_width | 0);
$136 = $135 ? $38 : $126;
$137 = ($136 | 0) > 0;
$138 = $137 ? $136 : 0;
$139 = ($134 + $138) | 0;
$140 = ($_img + $139) | 0;
$141 = HEAP8[$140 >> 0] | 0;
$142 = ($141 << 24) >> 24 != 0;
$143 = $142 & 1;
$144 = ($k$2$ph + 1) | 0;
$145 = $143 << $k$2$ph;
$146 = $145 | $147;
HEAP32[$hi >> 2] = $146;
$147 = $146;
$i$1$ph = $96;
$k$2$ph = $144;
$w$1$ph = $100;
$x$1$ph = $98;
$y$1$ph = $99;
}
$148 = ($lo + 4) | 0;
HEAP32[$148 >> 2] = 0;
$149 = ($_ur + 64) | 0;
$150 = HEAP32[$149 >> 2] | 0;
$151 = HEAP32[$_ur >> 2] | 0;
$152 = ($151 * 3) | 0;
$153 = ($152 + $150) | 0;
$154 = ($_ur + 68) | 0;
$155 = HEAP32[$154 >> 2] | 0;
$156 = ($_ur + 4) | 0;
$157 = HEAP32[$156 >> 2] | 0;
$158 = ($157 * 5) | 0;
$159 = ($158 + $155) | 0;
$160 = Math_imul($11, $153) | 0;
$161 = Math_imul($14, $159) | 0;
$162 = ($161 + $160) | 0;
$163 = Math_imul($18, $153) | 0;
$164 = Math_imul($21, $159) | 0;
$165 = ($164 + $163) | 0;
$166 = Math_imul($25, $153) | 0;
$167 = Math_imul($28, $159) | 0;
$168 = ($167 + $166) | 0;
$169 = ($168 + $32) | 0;
$170 = Math_imul($11, $151) | 0;
$171 = Math_imul($18, $151) | 0;
$172 = Math_imul($25, $151) | 0;
$217 = 0;
$k$338 = 0;
$w$237 = $169;
$x$235 = $162;
$y$236 = $165;
while (1) {
$173 = ($w$237 | 0) == 0;
if ($173) {
$174 = $x$235 >>> 31;
$175 = ($174 + 2147483647) | 0;
$176 = $y$236 >>> 31;
$177 = ($176 + 2147483647) | 0;
$198 = $175;
$200 = $177;
} else {
$178 = ($w$237 | 0) < 0;
if ($178) {
$179 = (0 - $x$235) | 0;
$180 = (0 - $y$236) | 0;
$181 = (0 - $w$237) | 0;
$$0$i7 = $181;
$$01$i6 = $180;
$$02$i5 = $179;
} else {
$$0$i7 = $w$237;
$$01$i6 = $y$236;
$$02$i5 = $x$235;
}
$182 = $$0$i7 >> 1;
$183 = $$02$i5 >> 31;
$184 = ($182 + $183) | 0;
$185 = $184 ^ $183;
$186 = ($185 + $$02$i5) | 0;
$187 = (($186 | 0) / ($$0$i7 | 0)) & -1;
$188 = HEAP32[$39 >> 2] | 0;
$189 = ($188 + $187) | 0;
$190 = $$01$i6 >> 31;
$191 = ($182 + $190) | 0;
$192 = $191 ^ $190;
$193 = ($192 + $$01$i6) | 0;
$194 = (($193 | 0) / ($$0$i7 | 0)) & -1;
$195 = HEAP32[$40 >> 2] | 0;
$196 = ($195 + $194) | 0;
$198 = $189;
$200 = $196;
}
$197 = $198 >> 2;
$199 = $200 >> 2;
$201 = ($199 | 0) >= ($_height | 0);
$202 = $201 ? $37 : $199;
$203 = ($202 | 0) > 0;
$204 = $203 ? $202 : 0;
$205 = Math_imul($204, $_width) | 0;
$206 = ($197 | 0) >= ($_width | 0);
$207 = $206 ? $38 : $197;
$208 = ($207 | 0) > 0;
$209 = $208 ? $207 : 0;
$210 = ($205 + $209) | 0;
$211 = ($_img + $210) | 0;
$212 = HEAP8[$211 >> 0] | 0;
$213 = ($212 << 24) >> 24 != 0;
$214 = $213 & 1;
$215 = $214 << $k$338;
$216 = $215 | $217;
$218 = ($x$235 - $170) | 0;
$219 = ($y$236 - $171) | 0;
$220 = ($w$237 - $172) | 0;
$221 = ($k$338 + 1) | 0;
$exitcond58 = ($221 | 0) == 8;
if ($exitcond58) {
break;
} else {
$217 = $216;
$k$338 = $221;
$w$237 = $220;
$x$235 = $218;
$y$236 = $219;
}
}
HEAP32[$148 >> 2] = $216;
$222 = ($hi + 4) | 0;
HEAP32[$222 >> 2] = 0;
$223 = ($_dl + 64) | 0;
$224 = HEAP32[$223 >> 2] | 0;
$225 = HEAP32[$_dl >> 2] | 0;
$226 = ($225 * 5) | 0;
$227 = ($226 + $224) | 0;
$228 = ($_dl + 68) | 0;
$229 = HEAP32[$228 >> 2] | 0;
$230 = ($_dl + 4) | 0;
$231 = HEAP32[$230 >> 2] | 0;
$232 = Math_imul($231, -3) | 0;
$233 = ($232 + $229) | 0;
$234 = Math_imul($11, $227) | 0;
$235 = Math_imul($14, $233) | 0;
$236 = ($235 + $234) | 0;
$237 = Math_imul($18, $227) | 0;
$238 = Math_imul($21, $233) | 0;
$239 = ($238 + $237) | 0;
$240 = Math_imul($25, $227) | 0;
$241 = Math_imul($28, $233) | 0;
$242 = ($241 + $240) | 0;
$243 = ($242 + $32) | 0;
$244 = Math_imul($14, $231) | 0;
$245 = Math_imul($21, $231) | 0;
$246 = Math_imul($28, $231) | 0;
$291 = 0;
$k$433 = 8;
$w$332 = $243;
$x$330 = $236;
$y$331 = $239;
while (1) {
$247 = ($w$332 | 0) == 0;
if ($247) {
$248 = $x$330 >>> 31;
$249 = ($248 + 2147483647) | 0;
$250 = $y$331 >>> 31;
$251 = ($250 + 2147483647) | 0;
$272 = $249;
$274 = $251;
} else {
$252 = ($w$332 | 0) < 0;
if ($252) {
$253 = (0 - $x$330) | 0;
$254 = (0 - $y$331) | 0;
$255 = (0 - $w$332) | 0;
$$0$i3 = $255;
$$01$i2 = $254;
$$02$i1 = $253;
} else {
$$0$i3 = $w$332;
$$01$i2 = $y$331;
$$02$i1 = $x$330;
}
$256 = $$0$i3 >> 1;
$257 = $$02$i1 >> 31;
$258 = ($256 + $257) | 0;
$259 = $258 ^ $257;
$260 = ($259 + $$02$i1) | 0;
$261 = (($260 | 0) / ($$0$i3 | 0)) & -1;
$262 = HEAP32[$39 >> 2] | 0;
$263 = ($262 + $261) | 0;
$264 = $$01$i2 >> 31;
$265 = ($256 + $264) | 0;
$266 = $265 ^ $264;
$267 = ($266 + $$01$i2) | 0;
$268 = (($267 | 0) / ($$0$i3 | 0)) & -1;
$269 = HEAP32[$40 >> 2] | 0;
$270 = ($269 + $268) | 0;
$272 = $263;
$274 = $270;
}
$271 = $272 >> 2;
$273 = $274 >> 2;
$275 = ($273 | 0) >= ($_height | 0);
$276 = $275 ? $37 : $273;
$277 = ($276 | 0) > 0;
$278 = $277 ? $276 : 0;
$279 = Math_imul($278, $_width) | 0;
$280 = ($271 | 0) >= ($_width | 0);
$281 = $280 ? $38 : $271;
$282 = ($281 | 0) > 0;
$283 = $282 ? $281 : 0;
$284 = ($279 + $283) | 0;
$285 = ($_img + $284) | 0;
$286 = HEAP8[$285 >> 0] | 0;
$287 = ($286 << 24) >> 24 != 0;
$288 = $287 & 1;
$289 = $288 << $k$433;
$290 = $289 | $291;
$292 = ($x$330 + $244) | 0;
$293 = ($y$331 + $245) | 0;
$294 = ($w$332 + $246) | 0;
$295 = ($k$433 + 1) | 0;
$exitcond56 = ($295 | 0) == 15;
if ($exitcond56) {
break;
} else {
$291 = $290;
$k$433 = $295;
$w$332 = $294;
$x$330 = $292;
$y$331 = $293;
}
}
HEAP32[$222 >> 2] = $290;
$296 = ($147 | 0) != ($290 | 0);
$297 = $296 & 1;
$298 = 2 << $297;
$299 = ($86 | 0) == ($216 | 0);
$300 = $299 ? 2 : 1;
$301 = ($298 | 0) > 0;
if ($301) {
$i$226 = 0;
$nfmt_info$024 = 0;
} else {
$355 = -1;
STACKTOP = sp;
return $355 | 0;
}
while (1) {
$303 = $i$226 & 1;
$304 = ($lo + ($303 << 2)) | 0;
$305 = HEAP32[$304 >> 2] | 0;
$306 = $i$226 >> 1;
$307 = ($hi + ($306 << 2)) | 0;
$308 = HEAP32[$307 >> 2] | 0;
$309 = $308 | $305;
$310 = $309 ^ 21522;
HEAP32[$v1 >> 2] = $310;
$311 = _bch15_5_correct($v1) | 0;
$312 = HEAP32[$v1 >> 2] | 0;
$313 = $312 >>> 10;
HEAP32[$v1 >> 2] = $313;
$314 = ($311 | 0) < 0;
$$ = $314 ? 4 : $311;
$315 = ($nfmt_info$024 | 0) > 0;
L52: do {
if ($315) {
$j$019 = 0;
while (1) {
$322 = ($fmt_info + ($j$019 << 2)) | 0;
$323 = HEAP32[$322 >> 2] | 0;
$324 = ($323 | 0) == ($313 | 0);
$316 = ($j$019 + 1) | 0;
if ($324) {
break;
}
$317 = ($316 | 0) < ($nfmt_info$024 | 0);
if ($317) {
$j$019 = $316;
} else {
$j$0$lcssa = $316;
label = 38;
break L52;
}
}
$325 = ($count + ($j$019 << 2)) | 0;
$326 = HEAP32[$325 >> 2] | 0;
$327 = ($326 + 1) | 0;
HEAP32[$325 >> 2] = $327;
$328 = ($nerrs + ($j$019 << 2)) | 0;
$329 = HEAP32[$328 >> 2] | 0;
$330 = ($$ | 0) < ($329 | 0);
if ($330) {
HEAP32[$328 >> 2] = $$;
$nfmt_info$1 = $nfmt_info$024;
} else {
$nfmt_info$1 = $nfmt_info$024;
}
} else {
$j$0$lcssa = 0;
label = 38;
}
} while (0);
if ((label | 0) == 38) {
label = 0;
$318 = ($fmt_info + ($j$0$lcssa << 2)) | 0;
HEAP32[$318 >> 2] = $313;
$319 = ($count + ($j$0$lcssa << 2)) | 0;
HEAP32[$319 >> 2] = 1;
$320 = ($nerrs + ($j$0$lcssa << 2)) | 0;
HEAP32[$320 >> 2] = $$;
$321 = ($nfmt_info$024 + 1) | 0;
$nfmt_info$1 = $321;
}
$331 = ($i$226 + $300) | 0;
$332 = ($331 | 0) < ($298 | 0);
if ($332) {
$i$226 = $331;
$nfmt_info$024 = $nfmt_info$1;
} else {
break;
}
}
$$pre = HEAP32[$nerrs >> 2] | 0;
$302 = ($nfmt_info$1 | 0) > 1;
if ($302) {
$333 = $$pre;
$347 = $nerrs;
$besti$013 = 0;
$i$314 = 1;
while (1) {
$334 = ($333 | 0) > 3;
if ($334) {
$335 = ($nerrs + ($i$314 << 2)) | 0;
$336 = HEAP32[$335 >> 2] | 0;
$337 = ($336 | 0) < 4;
if ($337) {
label = 48;
} else {
label = 45;
}
} else {
label = 45;
}
if ((label | 0) == 45) {
label = 0;
$338 = ($count + ($i$314 << 2)) | 0;
$339 = HEAP32[$338 >> 2] | 0;
$340 = ($count + ($besti$013 << 2)) | 0;
$341 = HEAP32[$340 >> 2] | 0;
$342 = ($339 | 0) > ($341 | 0);
if ($342) {
label = 48;
} else {
$343 = ($339 | 0) == ($341 | 0);
if ($343) {
$344 = ($nerrs + ($i$314 << 2)) | 0;
$345 = HEAP32[$344 >> 2] | 0;
$346 = HEAP32[$347 >> 2] | 0;
$348 = ($345 | 0) < ($346 | 0);
if ($348) {
label = 48;
} else {
$besti$1 = $besti$013;
}
} else {
$besti$1 = $besti$013;
}
}
}
if ((label | 0) == 48) {
label = 0;
$besti$1 = $i$314;
}
$349 = ($i$314 + 1) | 0;
$350 = ($nerrs + ($besti$1 << 2)) | 0;
$351 = HEAP32[$350 >> 2] | 0;
$exitcond = ($349 | 0) == ($nfmt_info$1 | 0);
if ($exitcond) {
$$lcssa = $351;
$besti$0$lcssa = $besti$1;
break;
} else {
$333 = $351;
$347 = $350;
$besti$013 = $besti$1;
$i$314 = $349;
}
}
} else {
$$lcssa = $$pre;
$besti$0$lcssa = 0;
}
$352 = ($$lcssa | 0) < 4;
if (!$352) {
$355 = -1;
STACKTOP = sp;
return $355 | 0;
}
$353 = ($fmt_info + ($besti$0$lcssa << 2)) | 0;
$354 = HEAP32[$353 >> 2] | 0;
$355 = $354;
STACKTOP = sp;
return $355 | 0;
}
function _qr_code_decode($_qrdata, $_gf, $_ul_pos, $_ur_pos, $_dl_pos, $_version, $_fmt_info, $_img, $_width, $_height) {
$_qrdata = $_qrdata | 0;
$_gf = $_gf | 0;
$_ul_pos = $_ul_pos | 0;
$_ur_pos = $_ur_pos | 0;
$_dl_pos = $_dl_pos | 0;
$_version = $_version | 0;
$_fmt_info = $_fmt_info | 0;
$_img = $_img | 0;
$_width = $_width | 0;
$_height = $_height | 0;
var $$$i = 0,
$$$i17 = 0,
$$0$i = 0,
$$0$i$i = 0,
$$0$i$i18 = 0,
$$0$i102105$i = 0,
$$0$i2128 = 0,
$$0$i27$i = 0,
$$0$i32134$i = 0,
$$0$i52$i = 0,
$$0$i57123$i = 0,
$$0$i67119$i = 0,
$$0$i72117$i = 0,
$$0$i77115$i = 0,
$$0$i82113$i = 0,
$$0$i87111$i = 0,
$$0$i92109$i = 0,
$$0$i97107$i = 0,
$$01$i$i = 0,
$$02$i$i = 0;
var $$58$i = 0,
$$59$i = 0,
$$be$i = 0,
$$be193$i = 0,
$$c$i = 0,
$$in$i = 0,
$$in$i15 = 0,
$$in203$i = 0,
$$in204$i = 0,
$$lcssa$i = 0,
$$lcssa163$i = 0,
$$lcssa165$i = 0,
$$lcssa177$i = 0,
$$lcssa179$i = 0,
$$off$i = 0,
$$off6$i = 0,
$$old = 0,
$$old2 = 0,
$$pn$i = 0,
$$pre = 0;
var $$pre$i = 0,
$$pre$i13 = 0,
$$pre$i23 = 0,
$$pre114 = 0,
$$pre223$i = 0,
$$pre228$i = 0,
$$pre229$i = 0,
$$pre231$i = 0,
$$pre233$i = 0,
$$pre3$i = 0,
$$sum = 0,
$$sum$i = 0,
$$sum$i$i = 0,
$$sum$i24$i = 0,
$$sum$i29$i = 0,
$$sum$i34$i = 0,
$$sum$i49$i = 0,
$$sum$i54$i = 0,
$$sum$i59$i = 0,
$$sum$i64$i = 0;
var $$sum$i69$i = 0,
$$sum$i74$i = 0,
$$sum$i79$i = 0,
$$sum$i84$i = 0,
$$sum$i89$i = 0,
$$sum$i94$i = 0,
$$sum$i99$i = 0,
$$sum1 = 0,
$$sum1$i100$i = 0,
$$sum1$i25$i = 0,
$$sum1$i30$i = 0,
$$sum1$i50$i = 0,
$$sum1$i55$i = 0,
$$sum1$i65$i = 0,
$$sum1$i70$i = 0,
$$sum1$i75$i = 0,
$$sum1$i80$i = 0,
$$sum1$i85$i = 0,
$$sum1$i90$i = 0,
$$sum1$i95$i = 0;
var $$sum2$i = 0,
$$sum3$i = 0,
$$sum4$i = 0,
$$sum5$i = 0,
$$sum6$i = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$1000 = 0,
$1001 = 0,
$1002 = 0,
$1003 = 0,
$1004 = 0,
$1005 = 0,
$1006 = 0,
$1007 = 0,
$1008 = 0,
$1009 = 0,
$101 = 0;
var $1010 = 0,
$1011 = 0,
$1012 = 0,
$1013 = 0,
$1014 = 0,
$1015 = 0,
$1016 = 0,
$1017 = 0,
$1018 = 0,
$1019 = 0,
$102 = 0,
$1020 = 0,
$1021 = 0,
$1022 = 0,
$1023 = 0,
$1024 = 0,
$1025 = 0,
$1026 = 0,
$1027 = 0,
$1028 = 0;
var $1029 = 0,
$103 = 0,
$1030 = 0,
$1031 = 0,
$1032 = 0,
$1033 = 0,
$1034 = 0,
$1035 = 0,
$1036 = 0,
$1037 = 0,
$1038 = 0,
$1039 = 0,
$104 = 0,
$1040 = 0,
$1041 = 0,
$1042 = 0,
$1043 = 0,
$1044 = 0,
$1045 = 0,
$1046 = 0;
var $1047 = 0,
$1048 = 0,
$1049 = 0,
$105 = 0,
$1050 = 0,
$1051 = 0,
$1052 = 0,
$1053 = 0,
$1054 = 0,
$1055 = 0,
$1056 = 0,
$1057 = 0,
$1058 = 0,
$1059 = 0,
$106 = 0,
$1060 = 0,
$1061 = 0,
$1062 = 0,
$1063 = 0,
$1064 = 0;
var $1065 = 0,
$1066 = 0,
$1067 = 0,
$1068 = 0,
$1069 = 0,
$107 = 0,
$1070 = 0,
$1071 = 0,
$1072 = 0,
$1073 = 0,
$1074 = 0,
$1075 = 0,
$1076 = 0,
$1077 = 0,
$1078 = 0,
$1079 = 0,
$108 = 0,
$1080 = 0,
$1081 = 0,
$1082 = 0;
var $1083 = 0,
$1084 = 0,
$1085 = 0,
$1086 = 0,
$1087 = 0,
$1088 = 0,
$1089 = 0,
$109 = 0,
$1090 = 0,
$1091 = 0,
$1092 = 0,
$1093 = 0,
$1094 = 0,
$1095 = 0,
$1096 = 0,
$1097 = 0,
$1098 = 0,
$1099 = 0,
$11 = 0,
$110 = 0;
var $1100 = 0,
$1101 = 0,
$1102 = 0,
$1103 = 0,
$1104 = 0,
$1105 = 0,
$1106 = 0,
$1107 = 0,
$1108 = 0,
$1109 = 0,
$111 = 0,
$1110 = 0,
$1111 = 0,
$1112 = 0,
$1113 = 0,
$1114 = 0,
$1115 = 0,
$1116 = 0,
$1117 = 0,
$1118 = 0;
var $1119 = 0,
$112 = 0,
$1120 = 0,
$1121 = 0,
$1122 = 0,
$1123 = 0,
$1124 = 0,
$1125 = 0,
$1126 = 0,
$1127 = 0,
$1128 = 0,
$1129 = 0,
$113 = 0,
$1130 = 0,
$1131 = 0,
$1132 = 0,
$1133 = 0,
$1134 = 0,
$1135 = 0,
$1136 = 0;
var $1137 = 0,
$1138 = 0,
$1139 = 0,
$114 = 0,
$1140 = 0,
$1141 = 0,
$1142 = 0,
$1143 = 0,
$1144 = 0,
$1145 = 0,
$1146 = 0,
$1147 = 0,
$1148 = 0,
$1149 = 0,
$115 = 0,
$1150 = 0,
$1151 = 0,
$1152 = 0,
$1153 = 0,
$1154 = 0;
var $1155 = 0,
$1156 = 0,
$1157 = 0,
$1158 = 0,
$1159 = 0,
$116 = 0,
$1160 = 0,
$1161 = 0,
$1162 = 0,
$1163 = 0,
$1164 = 0,
$1165 = 0,
$1166 = 0,
$1167 = 0,
$1168 = 0,
$1169 = 0,
$117 = 0,
$1170 = 0,
$1171 = 0,
$1172 = 0;
var $1173 = 0,
$1174 = 0,
$1175 = 0,
$1176 = 0,
$1177 = 0,
$1178 = 0,
$1179 = 0,
$118 = 0,
$1180 = 0,
$1181 = 0,
$1182 = 0,
$1183 = 0,
$1184 = 0,
$1185 = 0,
$1186 = 0,
$1187 = 0,
$1188 = 0,
$1189 = 0,
$119 = 0,
$1190 = 0;
var $1191 = 0,
$1192 = 0,
$1193 = 0,
$1194 = 0,
$1195 = 0,
$1196 = 0,
$1197 = 0,
$1198 = 0,
$1199 = 0,
$12 = 0,
$120 = 0,
$1200 = 0,
$1201 = 0,
$1202 = 0,
$1203 = 0,
$1204 = 0,
$1205 = 0,
$1206 = 0,
$1207 = 0,
$1208 = 0;
var $1209 = 0,
$121 = 0,
$1210 = 0,
$1211 = 0,
$1212 = 0,
$1213 = 0,
$1214 = 0,
$1215 = 0,
$1216 = 0,
$1217 = 0,
$1218 = 0,
$1219 = 0,
$122 = 0,
$1220 = 0,
$1221 = 0,
$1222 = 0,
$1223 = 0,
$1224 = 0,
$1225 = 0,
$1226 = 0;
var $1227 = 0,
$1228 = 0,
$1229 = 0,
$123 = 0,
$1230 = 0,
$1231 = 0,
$1232 = 0,
$1233 = 0,
$1234 = 0,
$1235 = 0,
$1236 = 0,
$1237 = 0,
$1238 = 0,
$1239 = 0,
$124 = 0,
$1240 = 0,
$1241 = 0,
$1242 = 0,
$1243 = 0,
$1244 = 0;
var $1245 = 0,
$1246 = 0,
$1247 = 0,
$1248 = 0,
$1249 = 0,
$125 = 0,
$1250 = 0,
$1251 = 0,
$1252 = 0,
$1253 = 0,
$1254 = 0,
$1255 = 0,
$1256 = 0,
$1257 = 0,
$1258 = 0,
$1259 = 0,
$126 = 0,
$1260 = 0,
$1261 = 0,
$1262 = 0;
var $1263 = 0,
$1264 = 0,
$1265 = 0,
$1266 = 0,
$1267 = 0,
$1268 = 0,
$1269 = 0,
$127 = 0,
$1270 = 0,
$1271 = 0,
$1272 = 0,
$1273 = 0,
$1274 = 0,
$1275 = 0,
$1276 = 0,
$1277 = 0,
$1278 = 0,
$1279 = 0,
$128 = 0,
$1280 = 0;
var $1281 = 0,
$1282 = 0,
$1283 = 0,
$1284 = 0,
$1285 = 0,
$1286 = 0,
$1287 = 0,
$1288 = 0,
$1289 = 0,
$129 = 0,
$1290 = 0,
$1291 = 0,
$1292 = 0,
$1293 = 0,
$1294 = 0,
$1295 = 0,
$1296 = 0,
$1297 = 0,
$1298 = 0,
$1299 = 0;
var $13 = 0,
$130 = 0,
$1300 = 0,
$1301 = 0,
$1302 = 0,
$1303 = 0,
$1304 = 0,
$1305 = 0,
$1306 = 0,
$1307 = 0,
$1308 = 0,
$1309 = 0,
$131 = 0,
$1310 = 0,
$1311 = 0,
$1312 = 0,
$1313 = 0,
$1314 = 0,
$1315 = 0,
$1316 = 0;
var $1317 = 0,
$1318 = 0,
$1319 = 0,
$132 = 0,
$1320 = 0,
$1321 = 0,
$1322 = 0,
$1323 = 0,
$1324 = 0,
$1325 = 0,
$1326 = 0,
$1327 = 0,
$1328 = 0,
$1329 = 0,
$133 = 0,
$1330 = 0,
$1331 = 0,
$1332 = 0,
$1333 = 0,
$1334 = 0;
var $1335 = 0,
$1336 = 0,
$1337 = 0,
$1338 = 0,
$1339 = 0,
$134 = 0,
$1340 = 0,
$1341 = 0,
$1342 = 0,
$1343 = 0,
$1344 = 0,
$1345 = 0,
$1346 = 0,
$1347 = 0,
$1348 = 0,
$1349 = 0,
$135 = 0,
$1350 = 0,
$1351 = 0,
$1352 = 0;
var $1353 = 0,
$1354 = 0,
$1355 = 0,
$1356 = 0,
$1357 = 0,
$1358 = 0,
$1359 = 0,
$136 = 0,
$1360 = 0,
$1361 = 0,
$1362 = 0,
$1363 = 0,
$1364 = 0,
$1365 = 0,
$1366 = 0,
$1367 = 0,
$1368 = 0,
$1369 = 0,
$137 = 0,
$1370 = 0;
var $1371 = 0,
$1372 = 0,
$1373 = 0,
$1374 = 0,
$1375 = 0,
$1376 = 0,
$1377 = 0,
$1378 = 0,
$1379 = 0,
$138 = 0,
$1380 = 0,
$1381 = 0,
$1382 = 0,
$1383 = 0,
$1384 = 0,
$1385 = 0,
$1386 = 0,
$1387 = 0,
$1388 = 0,
$1389 = 0;
var $139 = 0,
$1390 = 0,
$1391 = 0,
$1392 = 0,
$1393 = 0,
$1394 = 0,
$1395 = 0,
$1396 = 0,
$1397 = 0,
$1398 = 0,
$1399 = 0,
$14 = 0,
$140 = 0,
$1400 = 0,
$1401 = 0,
$1402 = 0,
$1403 = 0,
$1404 = 0,
$1405 = 0,
$1406 = 0;
var $1407 = 0,
$1408 = 0,
$1409 = 0,
$141 = 0,
$1410 = 0,
$1411 = 0,
$1412 = 0,
$1413 = 0,
$1414 = 0,
$1415 = 0,
$1416 = 0,
$1417 = 0,
$1418 = 0,
$1419 = 0,
$142 = 0,
$1420 = 0,
$1421 = 0,
$1422 = 0,
$1423 = 0,
$1424 = 0;
var $1425 = 0,
$1426 = 0,
$1427 = 0,
$1428 = 0,
$1429 = 0,
$143 = 0,
$1430 = 0,
$1431 = 0,
$1432 = 0,
$1433 = 0,
$1434 = 0,
$1435 = 0,
$1436 = 0,
$1437 = 0,
$1438 = 0,
$1439 = 0,
$144 = 0,
$1440 = 0,
$1441 = 0,
$1442 = 0;
var $1443 = 0,
$1444 = 0,
$1445 = 0,
$1446 = 0,
$1447 = 0,
$1448 = 0,
$1449 = 0,
$145 = 0,
$1450 = 0,
$1451 = 0,
$1452 = 0,
$1453 = 0,
$1454 = 0,
$1455 = 0,
$1456 = 0,
$1457 = 0,
$1458 = 0,
$1459 = 0,
$146 = 0,
$1460 = 0;
var $1461 = 0,
$1462 = 0,
$1463 = 0,
$1464 = 0,
$1465 = 0,
$1466 = 0,
$1467 = 0,
$1468 = 0,
$1469 = 0,
$147 = 0,
$1470 = 0,
$1471 = 0,
$1472 = 0,
$1473 = 0,
$1474 = 0,
$1475 = 0,
$1476 = 0,
$1477 = 0,
$1478 = 0,
$1479 = 0;
var $148 = 0,
$1480 = 0,
$1481 = 0,
$1482 = 0,
$1483 = 0,
$1484 = 0,
$1485 = 0,
$1486 = 0,
$1487 = 0,
$1488 = 0,
$1489 = 0,
$149 = 0,
$1490 = 0,
$1491 = 0,
$1492 = 0,
$1493 = 0,
$1494 = 0,
$1495 = 0,
$1496 = 0,
$1497 = 0;
var $1498 = 0,
$1499 = 0,
$15 = 0,
$150 = 0,
$1500 = 0,
$1501 = 0,
$1502 = 0,
$1503 = 0,
$1504 = 0,
$1505 = 0,
$1506 = 0,
$1507 = 0,
$1508 = 0,
$1509 = 0,
$151 = 0,
$1510 = 0,
$1511 = 0,
$1512 = 0,
$1513 = 0,
$1514 = 0;
var $1515 = 0,
$1516 = 0,
$1517 = 0,
$1518 = 0,
$1519 = 0,
$152 = 0,
$1520 = 0,
$1521 = 0,
$1522 = 0,
$1523 = 0,
$1524 = 0,
$1525 = 0,
$1526 = 0,
$1527 = 0,
$1528 = 0,
$1529 = 0,
$153 = 0,
$1530 = 0,
$1531 = 0,
$1532 = 0;
var $1533 = 0,
$1534 = 0,
$1535 = 0,
$1536 = 0,
$1537 = 0,
$1538 = 0,
$1539 = 0,
$154 = 0,
$1540 = 0,
$1541 = 0,
$1542 = 0,
$1543 = 0,
$1544 = 0,
$1545 = 0,
$1546 = 0,
$1547 = 0,
$1548 = 0,
$1549 = 0,
$155 = 0,
$1550 = 0;
var $1551 = 0,
$1552 = 0,
$1553 = 0,
$1554 = 0,
$1555 = 0,
$1556 = 0,
$1557 = 0,
$1558 = 0,
$1559 = 0,
$156 = 0,
$1560 = 0,
$1561 = 0,
$1562 = 0,
$1563 = 0,
$1564 = 0,
$1565 = 0,
$1566 = 0,
$1567 = 0,
$1568 = 0,
$1569 = 0;
var $157 = 0,
$1570 = 0,
$1571 = 0,
$1572 = 0,
$1573 = 0,
$1574 = 0,
$1575 = 0,
$1576 = 0,
$1577 = 0,
$1578 = 0,
$1579 = 0,
$158 = 0,
$1580 = 0,
$1581 = 0,
$1582 = 0,
$1583 = 0,
$1584 = 0,
$1585 = 0,
$1586 = 0,
$1587 = 0;
var $1588 = 0,
$1589 = 0,
$159 = 0,
$1590 = 0,
$1591 = 0,
$1592 = 0,
$1593 = 0,
$1594 = 0,
$1595 = 0,
$1596 = 0,
$1597 = 0,
$1598 = 0,
$1599 = 0,
$16 = 0,
$160 = 0,
$1600 = 0,
$1601 = 0,
$1602 = 0,
$1603 = 0,
$1604 = 0;
var $1605 = 0,
$1606 = 0,
$1607 = 0,
$1608 = 0,
$1609 = 0,
$161 = 0,
$1610 = 0,
$1611 = 0,
$1612 = 0,
$1613 = 0,
$1614 = 0,
$1615 = 0,
$1616 = 0,
$1617 = 0,
$1618 = 0,
$1619 = 0,
$162 = 0,
$1620 = 0,
$1621 = 0,
$1622 = 0;
var $1623 = 0,
$1624 = 0,
$1625 = 0,
$1626 = 0,
$1627 = 0,
$1628 = 0,
$1629 = 0,
$163 = 0,
$1630 = 0,
$1631 = 0,
$1632 = 0,
$1633 = 0,
$1634 = 0,
$1635 = 0,
$1636 = 0,
$1637 = 0,
$1638 = 0,
$1639 = 0,
$164 = 0,
$1640 = 0;
var $1641 = 0,
$1642 = 0,
$1643 = 0,
$1644 = 0,
$1645 = 0,
$1646 = 0,
$1647 = 0,
$1648 = 0,
$1649 = 0,
$165 = 0,
$1650 = 0,
$1651 = 0,
$1652 = 0,
$1653 = 0,
$1654 = 0,
$1655 = 0,
$1656 = 0,
$1657 = 0,
$1658 = 0,
$1659 = 0;
var $166 = 0,
$1660 = 0,
$1661 = 0,
$1662 = 0,
$1663 = 0,
$1664 = 0,
$1665 = 0,
$1666 = 0,
$1667 = 0,
$1668 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0,
$170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0;
var $176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0,
$189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0;
var $194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0,
$206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0;
var $211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0,
$224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0;
var $23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0,
$242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0;
var $248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0,
$260 = 0,
$261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0;
var $266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0,
$279 = 0,
$28 = 0,
$280 = 0,
$281 = 0,
$282 = 0,
$283 = 0;
var $284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0,
$297 = 0,
$298 = 0,
$299 = 0,
$3 = 0,
$30 = 0,
$300 = 0;
var $301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0,
$306 = 0,
$307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0,
$313 = 0,
$314 = 0,
$315 = 0,
$316 = 0,
$317 = 0,
$318 = 0,
$319 = 0;
var $32 = 0,
$320 = 0,
$321 = 0,
$322 = 0,
$323 = 0,
$324 = 0,
$325 = 0,
$326 = 0,
$327 = 0,
$328 = 0,
$329 = 0,
$33 = 0,
$330 = 0,
$331 = 0,
$332 = 0,
$333 = 0,
$334 = 0,
$335 = 0,
$336 = 0,
$337 = 0;
var $338 = 0,
$339 = 0,
$34 = 0,
$340 = 0,
$341 = 0,
$342 = 0,
$343 = 0,
$344 = 0,
$345 = 0,
$346 = 0,
$347 = 0,
$348 = 0,
$349 = 0,
$35 = 0,
$350 = 0,
$351 = 0,
$352 = 0,
$353 = 0,
$354 = 0,
$355 = 0;
var $356 = 0,
$357 = 0,
$358 = 0,
$359 = 0,
$36 = 0,
$360 = 0,
$361 = 0,
$362 = 0,
$363 = 0,
$364 = 0,
$365 = 0,
$366 = 0,
$367 = 0,
$368 = 0,
$369 = 0,
$37 = 0,
$370 = 0,
$371 = 0,
$372 = 0,
$373 = 0;
var $374 = 0,
$375 = 0,
$376 = 0,
$377 = 0,
$378 = 0,
$379 = 0,
$38 = 0,
$380 = 0,
$381 = 0,
$382 = 0,
$383 = 0,
$384 = 0,
$385 = 0,
$386 = 0,
$387 = 0,
$388 = 0,
$389 = 0,
$39 = 0,
$390 = 0,
$391 = 0;
var $392 = 0,
$393 = 0,
$394 = 0,
$395 = 0,
$396 = 0,
$397 = 0,
$398 = 0,
$399 = 0,
$4 = 0,
$40 = 0,
$400 = 0,
$401 = 0,
$402 = 0,
$403 = 0,
$404 = 0,
$405 = 0,
$406 = 0,
$407 = 0,
$408 = 0,
$409 = 0;
var $41 = 0,
$410 = 0,
$411 = 0,
$412 = 0,
$413 = 0,
$414 = 0,
$415 = 0,
$416 = 0,
$417 = 0,
$418 = 0,
$419 = 0,
$42 = 0,
$420 = 0,
$421 = 0,
$422 = 0,
$423 = 0,
$424 = 0,
$425 = 0,
$426 = 0,
$427 = 0;
var $428 = 0,
$429 = 0,
$43 = 0,
$430 = 0,
$431 = 0,
$432 = 0,
$433 = 0,
$434 = 0,
$435 = 0,
$436 = 0,
$437 = 0,
$438 = 0,
$439 = 0,
$44 = 0,
$440 = 0,
$441 = 0,
$442 = 0,
$443 = 0,
$444 = 0,
$445 = 0;
var $446 = 0,
$447 = 0,
$448 = 0,
$449 = 0,
$45 = 0,
$450 = 0,
$451 = 0,
$452 = 0,
$453 = 0,
$454 = 0,
$455 = 0,
$456 = 0,
$457 = 0,
$458 = 0,
$459 = 0,
$46 = 0,
$460 = 0,
$461 = 0,
$462 = 0,
$463 = 0;
var $464 = 0,
$465 = 0,
$466 = 0,
$467 = 0,
$468 = 0,
$469 = 0,
$47 = 0,
$470 = 0,
$471 = 0,
$472 = 0,
$473 = 0,
$474 = 0,
$475 = 0,
$476 = 0,
$477 = 0,
$478 = 0,
$479 = 0,
$48 = 0,
$480 = 0,
$481 = 0;
var $482 = 0,
$483 = 0,
$484 = 0,
$485 = 0,
$486 = 0,
$487 = 0,
$488 = 0,
$489 = 0,
$49 = 0,
$490 = 0,
$491 = 0,
$492 = 0,
$493 = 0,
$494 = 0,
$495 = 0,
$496 = 0,
$497 = 0,
$498 = 0,
$499 = 0,
$5 = 0;
var $50 = 0,
$500 = 0,
$501 = 0,
$502 = 0,
$503 = 0,
$504 = 0,
$505 = 0,
$506 = 0,
$507 = 0,
$508 = 0,
$509 = 0,
$51 = 0,
$510 = 0,
$511 = 0,
$512 = 0,
$513 = 0,
$514 = 0,
$515 = 0,
$516 = 0,
$517 = 0;
var $518 = 0,
$519 = 0,
$52 = 0,
$520 = 0,
$521 = 0,
$522 = 0,
$523 = 0,
$524 = 0,
$525 = 0,
$526 = 0,
$527 = 0,
$528 = 0,
$529 = 0,
$53 = 0,
$530 = 0,
$531 = 0,
$532 = 0,
$533 = 0,
$534 = 0,
$535 = 0;
var $536 = 0,
$537 = 0,
$538 = 0,
$539 = 0,
$54 = 0,
$540 = 0,
$541 = 0,
$542 = 0,
$543 = 0,
$544 = 0,
$545 = 0,
$546 = 0,
$547 = 0,
$548 = 0,
$549 = 0,
$55 = 0,
$550 = 0,
$551 = 0,
$552 = 0,
$553 = 0;
var $554 = 0,
$555 = 0,
$556 = 0,
$557 = 0,
$558 = 0,
$559 = 0,
$56 = 0,
$560 = 0,
$561 = 0,
$562 = 0,
$563 = 0,
$564 = 0,
$565 = 0,
$566 = 0,
$567 = 0,
$568 = 0,
$569 = 0,
$57 = 0,
$570 = 0,
$571 = 0;
var $572 = 0,
$573 = 0,
$574 = 0,
$575 = 0,
$576 = 0,
$577 = 0,
$578 = 0,
$579 = 0,
$58 = 0,
$580 = 0,
$581 = 0,
$582 = 0,
$583 = 0,
$584 = 0,
$585 = 0,
$586 = 0,
$587 = 0,
$588 = 0,
$589 = 0,
$59 = 0;
var $590 = 0,
$591 = 0,
$592 = 0,
$593 = 0,
$594 = 0,
$595 = 0,
$596 = 0,
$597 = 0,
$598 = 0,
$599 = 0,
$6 = 0,
$60 = 0,
$600 = 0,
$601 = 0,
$602 = 0,
$603 = 0,
$604 = 0,
$605 = 0,
$606 = 0,
$607 = 0;
var $608 = 0,
$609 = 0,
$61 = 0,
$610 = 0,
$611 = 0,
$612 = 0,
$613 = 0,
$614 = 0,
$615 = 0,
$616 = 0,
$617 = 0,
$618 = 0,
$619 = 0,
$62 = 0,
$620 = 0,
$621 = 0,
$622 = 0,
$623 = 0,
$624 = 0,
$625 = 0;
var $626 = 0,
$627 = 0,
$628 = 0,
$629 = 0,
$63 = 0,
$630 = 0,
$631 = 0,
$632 = 0,
$633 = 0,
$634 = 0,
$635 = 0,
$636 = 0,
$637 = 0,
$638 = 0,
$639 = 0,
$64 = 0,
$640 = 0,
$641 = 0,
$642 = 0,
$643 = 0;
var $644 = 0,
$645 = 0,
$646 = 0,
$647 = 0,
$648 = 0,
$649 = 0,
$65 = 0,
$650 = 0,
$651 = 0,
$652 = 0,
$653 = 0,
$654 = 0,
$655 = 0,
$656 = 0,
$657 = 0,
$658 = 0,
$659 = 0,
$66 = 0,
$660 = 0,
$661 = 0;
var $662 = 0,
$663 = 0,
$664 = 0,
$665 = 0,
$666 = 0,
$667 = 0,
$668 = 0,
$669 = 0,
$67 = 0,
$670 = 0,
$671 = 0,
$672 = 0,
$673 = 0,
$674 = 0,
$675 = 0,
$676 = 0,
$677 = 0,
$678 = 0,
$679 = 0,
$68 = 0;
var $680 = 0,
$681 = 0,
$682 = 0,
$683 = 0,
$684 = 0,
$685 = 0,
$686 = 0,
$687 = 0,
$688 = 0,
$689 = 0,
$69 = 0,
$690 = 0,
$691 = 0,
$692 = 0,
$693 = 0,
$694 = 0,
$695 = 0,
$696 = 0,
$697 = 0,
$698 = 0;
var $699 = 0,
$7 = 0,
$70 = 0,
$700 = 0,
$701 = 0,
$702 = 0,
$703 = 0,
$704 = 0,
$705 = 0,
$706 = 0,
$707 = 0,
$708 = 0,
$709 = 0,
$71 = 0,
$710 = 0,
$711 = 0,
$712 = 0,
$713 = 0,
$714 = 0,
$715 = 0;
var $716 = 0,
$717 = 0,
$718 = 0,
$719 = 0,
$72 = 0,
$720 = 0,
$721 = 0,
$722 = 0,
$723 = 0,
$724 = 0,
$725 = 0,
$726 = 0,
$727 = 0,
$728 = 0,
$729 = 0,
$73 = 0,
$730 = 0,
$731 = 0,
$732 = 0,
$733 = 0;
var $734 = 0,
$735 = 0,
$736 = 0,
$737 = 0,
$738 = 0,
$739 = 0,
$74 = 0,
$740 = 0,
$741 = 0,
$742 = 0,
$743 = 0,
$744 = 0,
$745 = 0,
$746 = 0,
$747 = 0,
$748 = 0,
$749 = 0,
$75 = 0,
$750 = 0,
$751 = 0;
var $752 = 0,
$753 = 0,
$754 = 0,
$755 = 0,
$756 = 0,
$757 = 0,
$758 = 0,
$759 = 0,
$76 = 0,
$760 = 0,
$761 = 0,
$762 = 0,
$763 = 0,
$764 = 0,
$765 = 0,
$766 = 0,
$767 = 0,
$768 = 0,
$769 = 0,
$77 = 0;
var $770 = 0,
$771 = 0,
$772 = 0,
$773 = 0,
$774 = 0,
$775 = 0,
$776 = 0,
$777 = 0,
$778 = 0,
$779 = 0,
$78 = 0,
$780 = 0,
$781 = 0,
$782 = 0,
$783 = 0,
$784 = 0,
$785 = 0,
$786 = 0,
$787 = 0,
$788 = 0;
var $789 = 0,
$79 = 0,
$790 = 0,
$791 = 0,
$792 = 0,
$793 = 0,
$794 = 0,
$795 = 0,
$796 = 0,
$797 = 0,
$798 = 0,
$799 = 0,
$8 = 0,
$80 = 0,
$800 = 0,
$801 = 0,
$802 = 0,
$803 = 0,
$804 = 0,
$805 = 0;
var $806 = 0,
$807 = 0,
$808 = 0,
$809 = 0,
$81 = 0,
$810 = 0,
$811 = 0,
$812 = 0,
$813 = 0,
$814 = 0,
$815 = 0,
$816 = 0,
$817 = 0,
$818 = 0,
$819 = 0,
$82 = 0,
$820 = 0,
$821 = 0,
$822 = 0,
$823 = 0;
var $824 = 0,
$825 = 0,
$826 = 0,
$827 = 0,
$828 = 0,
$829 = 0,
$83 = 0,
$830 = 0,
$831 = 0,
$832 = 0,
$833 = 0,
$834 = 0,
$835 = 0,
$836 = 0,
$837 = 0,
$838 = 0,
$839 = 0,
$84 = 0,
$840 = 0,
$841 = 0;
var $842 = 0,
$843 = 0,
$844 = 0,
$845 = 0,
$846 = 0,
$847 = 0,
$848 = 0,
$849 = 0,
$85 = 0,
$850 = 0,
$851 = 0,
$852 = 0,
$853 = 0,
$854 = 0,
$855 = 0,
$856 = 0,
$857 = 0,
$858 = 0,
$859 = 0,
$86 = 0;
var $860 = 0,
$861 = 0,
$862 = 0,
$863 = 0,
$864 = 0,
$865 = 0,
$866 = 0,
$867 = 0,
$868 = 0,
$869 = 0,
$87 = 0,
$870 = 0,
$871 = 0,
$872 = 0,
$873 = 0,
$874 = 0,
$875 = 0,
$876 = 0,
$877 = 0,
$878 = 0;
var $879 = 0,
$88 = 0,
$880 = 0,
$881 = 0,
$882 = 0,
$883 = 0,
$884 = 0,
$885 = 0,
$886 = 0,
$887 = 0,
$888 = 0,
$889 = 0,
$89 = 0,
$890 = 0,
$891 = 0,
$892 = 0,
$893 = 0,
$894 = 0,
$895 = 0,
$896 = 0;
var $897 = 0,
$898 = 0,
$899 = 0,
$9 = 0,
$90 = 0,
$900 = 0,
$901 = 0,
$902 = 0,
$903 = 0,
$904 = 0,
$905 = 0,
$906 = 0,
$907 = 0,
$908 = 0,
$909 = 0,
$91 = 0,
$910 = 0,
$911 = 0,
$912 = 0,
$913 = 0;
var $914 = 0,
$915 = 0,
$916 = 0,
$917 = 0,
$918 = 0,
$919 = 0,
$92 = 0,
$920 = 0,
$921 = 0,
$922 = 0,
$923 = 0,
$924 = 0,
$925 = 0,
$926 = 0,
$927 = 0,
$928 = 0,
$929 = 0,
$93 = 0,
$930 = 0,
$931 = 0;
var $932 = 0,
$933 = 0,
$934 = 0,
$935 = 0,
$936 = 0,
$937 = 0,
$938 = 0,
$939 = 0,
$94 = 0,
$940 = 0,
$941 = 0,
$942 = 0,
$943 = 0,
$944 = 0,
$945 = 0,
$946 = 0,
$947 = 0,
$948 = 0,
$949 = 0,
$95 = 0;
var $950 = 0,
$951 = 0,
$952 = 0,
$953 = 0,
$954 = 0,
$955 = 0,
$956 = 0,
$957 = 0,
$958 = 0,
$959 = 0,
$96 = 0,
$960 = 0,
$961 = 0,
$962 = 0,
$963 = 0,
$964 = 0,
$965 = 0,
$966 = 0,
$967 = 0,
$968 = 0;
var $969 = 0,
$97 = 0,
$970 = 0,
$971 = 0,
$972 = 0,
$973 = 0,
$974 = 0,
$975 = 0,
$976 = 0,
$977 = 0,
$978 = 0,
$979 = 0,
$98 = 0,
$980 = 0,
$981 = 0,
$982 = 0,
$983 = 0,
$984 = 0,
$985 = 0,
$986 = 0;
var $987 = 0,
$988 = 0,
$989 = 0,
$99 = 0,
$990 = 0,
$991 = 0,
$992 = 0,
$993 = 0,
$994 = 0,
$995 = 0,
$996 = 0,
$997 = 0,
$998 = 0,
$999 = 0,
$_grid$idx$val$i = 0,
$_nshort_blocks$$i = 0,
$align_pos$i = 0,
$base_cell$i = 0,
$biti$037$i = 0,
$biti$16$i = 0;
var $biti$2$i = 0,
$biti$2$ph$i = 0,
$biti$2$ph$ph$i = 0,
$biti$3$i = 0,
$biti$4$i = 0,
$biti$5$lcssa$i = 0,
$biti$525$i = 0,
$biti$6$i = 0,
$biti$6$ph$i = 0,
$biti$6$ph$ph$i = 0,
$biti$7$i = 0,
$biti$8$i = 0,
$bits$036$i = 0,
$bits$15$i = 0,
$bits$2$i = 0,
$bits$2$ph$i = 0,
$bits$2$ph$ph$i = 0,
$bits$3$i = 0,
$bits$4$i = 0,
$bits$5$lcssa$i = 0;
var $bits$524$i = 0,
$bits$6$i = 0,
$bits$6$ph$i = 0,
$bits$6$ph$ph$i = 0,
$bits$7$i = 0,
$bits$8$i = 0,
$blocki$038$i = 0,
$blocki$17$i = 0,
$blocki$2$ph$i = 0,
$blocki$2$ph$ph$i = 0,
$blocki$3$lcssa$i = 0,
$blocki$326$i = 0,
$blocki$4$ph$i = 0,
$blocki$4$ph$ph$i = 0,
$blockj$039$i = 0,
$blockj$18$i = 0,
$blockj$2$ph$ph$i = 0,
$blockj$3$lcssa$i = 0,
$blockj$327$i = 0,
$blockj$4$ph$ph$i = 0;
var $buf$0$lcssa$i = 0,
$buf$0183$i = 0,
$buf1$0$lcssa$i = 0,
$buf1$0169$i = 0,
$buf12$0150$i = 0,
$buf8$0156$i = 0,
$cell$0$i = 0,
$centries$0197$i = 0,
$centries$1$i = 0,
$data1$0$i = 0,
$data1$0$ph$i = 0,
$data1$0$ph$ph$i = 0,
$data2$0$i = 0,
$data2$0$ph$i = 0,
$data2$0$ph$ph$i = 0,
$exitcond = 0,
$exitcond$i = 0,
$exitcond$i$i = 0,
$exitcond$i12 = 0,
$exitcond$i7 = 0;
var $exitcond112 = 0,
$exitcond25$i = 0,
$exitcond66$i$i = 0,
$exitcond67$i$i = 0,
$exitcond68$i$i = 0,
$exitcond69$i$i = 0,
$exitcond70$i$i = 0,
$exitcond72$i$i = 0,
$exitcond74$i$i = 0,
$exitcond75$i$i = 0,
$exitcond77$i$i = 0,
$exitcond78$i$i = 0,
$fold$i = 0,
$fold135$i = 0,
$fold136$i = 0,
$fold137$i = 0,
$fp_mask1$0$i = 0,
$fp_mask1$0$ph$i = 0,
$fp_mask1$0$ph$ph$i = 0,
$fp_mask2$0$i = 0;
var $fp_mask2$0$ph$i = 0,
$fp_mask2$0$ph$ph$i = 0,
$grid = 0,
$i$01$i = 0,
$i$01$us$i12$1$i = 0,
$i$01$us$i12$2$i = 0,
$i$01$us$i12$3$i = 0,
$i$01$us$i12$4$i = 0,
$i$01$us$i12$5$i = 0,
$i$01$us$i12$6$i = 0,
$i$01$us$i12$7$i = 0,
$i$01$us$i12$8$i = 0,
$i$01$us$i12$i = 0,
$i$01$us$i20$1$i = 0,
$i$01$us$i20$2$i = 0,
$i$01$us$i20$3$i = 0,
$i$01$us$i20$4$i = 0,
$i$01$us$i20$5$i = 0,
$i$01$us$i20$i = 0,
$i$01$us$i33$i = 0;
var $i$01$us$i38$i = 0,
$i$011$i = 0,
$i$051$i = 0,
$i$069 = 0,
$i$106$i$i = 0,
$i$122$i$i = 0,
$i$128$i = 0,
$i$149 = 0,
$i$445$i$i = 0,
$i$759$i$i = 0,
$j$013$i$i = 0,
$j$015$i = 0,
$j$02$us$i17$i = 0,
$j$02$us$i25$i = 0,
$j$02$us$i29$i = 0,
$j$02$us$i39$i = 0,
$j$040$i = 0,
$j$043$i = 0,
$j$118$i$i = 0,
$j$228$i$i = 0;
var $j$335$i$i = 0,
$j$451$i$i = 0,
$j$565$i$i = 0,
$j$610$i$i = 0,
$k$044$i = 0,
$len10$0158$i = 0,
$m$014$i$i = 0,
$m1$019$i$i = 0,
$m2$036$i$i = 0,
$m3$246$i$i = 0,
$m4$260$i$i = 0,
$m5$27$i$i = 0,
$mi$023$i$i = 0,
$mj$129$i$i = 0,
$nbits$09$i = 0,
$nbits$1$i = 0,
$nbits$1$ph$i = 0,
$nbits$1$ph$ph$i = 0,
$nbits$2$i = 0,
$nbits$2$ph$i = 0;
var $nbits$2$ph$ph$i = 0,
$ncodewords$051 = 0,
$ndata$0$lcssa116 = 0,
$ndata$050 = 0,
$or$cond$i = 0,
$or$cond$i19 = 0,
$or$cond10$i = 0,
$or$cond11$i = 0,
$or$cond139$i = 0,
$or$cond141$i = 0,
$or$cond143$i = 0,
$or$cond145$i = 0,
$or$cond147$i = 0,
$or$cond4 = 0,
$or$cond9$i = 0,
$or$cond9$i20 = 0,
$p0$i = 0,
$p1$i = 0,
$p2$i = 0,
$phitmp115 = 0;
var $ret$0$i$i = 0,
$ret$0$i101$i = 0,
$ret$0$i26$i = 0,
$ret$0$i31$i = 0,
$ret$0$i36$i = 0,
$ret$0$i41$i = 0,
$ret$0$i46$i = 0,
$ret$0$i51$i = 0,
$ret$0$i56$i = 0,
$ret$0$i61$i = 0,
$ret$0$i66$i = 0,
$ret$0$i71$i = 0,
$ret$0$i76$i = 0,
$ret$0$i81$i = 0,
$ret$0$i86$i = 0,
$ret$0$i91$i = 0,
$ret$0$i96$i = 0,
$ret$2 = 0,
$self_parity$0$be$i = 0,
$self_parity$0$lcssa$i = 0;
var $self_parity$0$lcssa$i$ph = 0,
$self_parity$0198$i = 0,
$self_parity$1$lcssa$i = 0,
$self_parity$1184$i = 0,
$self_parity$2$lcssa$i = 0,
$self_parity$2170$i = 0,
$self_parity$3157$i = 0,
$self_parity$4149$i = 0,
$u$08$i = 0,
$u0$017$i = 0,
$v$04$i = 0,
$v0$010$i = 0,
$val$0$c$i = 0,
$val$0$i = 0,
$w$03$i = 0,
$w0$07$i = 0,
$x$01$i = 0,
$x0$05$i = 0,
$y$02$i = 0,
$y0$06$i = 0;
var dest = 0,
label = 0,
sp = 0,
src = 0,
stop = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 160) | 0;
$base_cell$i = (sp + 108) | 0;
$align_pos$i = (sp + 80) | 0;
$p0$i = (sp + 72) | 0;
$p1$i = (sp + 64) | 0;
$p2$i = (sp + 56) | 0;
$grid = sp;
$0 = $_version << 2;
$1 = ($0 + 17) | 0;
$2 = (($_version | 0) / 7) & -1;
$3 = ($2 + 2) | 0;
$4 = ($0 + 16) | 0;
$5 = ($_qrdata + 16) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($_qrdata + 20) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($_qrdata + 24) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($_qrdata + 28) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($_qrdata + 32) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = ($_qrdata + 36) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = ($_qrdata + 40) | 0;
$18 = HEAP32[$17 >> 2] | 0;
$19 = ($_qrdata + 44) | 0;
$20 = HEAP32[$19 >> 2] | 0;
_qr_hom_cell_init($base_cell$i, 0, 0, $4, 0, 0, $4, $4, $4, $6, $8, $10, $12, $14, $16, $18, $20);
$21 = ($2 + 1) | 0;
$22 = ($grid + 52) | 0;
HEAP32[$22 >> 2] = $21;
$23 = ($21 * 52) | 0;
$24 = Math_imul($23, $21) | 0;
$25 = _malloc($24) | 0;
HEAP32[$grid >> 2] = $25;
$26 = ($_version | 0) > 6;
if ($26) {
$28 = $25;
$29 = $21;
$i$051$i = 1;
while (1) {
$27 = ($28 + (($29 * 52) | 0)) | 0;
$30 = ($grid + ($i$051$i << 2)) | 0;
HEAP32[$30 >> 2] = $27;
$31 = ($i$051$i + 1) | 0;
$32 = HEAP32[$22 >> 2] | 0;
$33 = ($31 | 0) < ($32 | 0);
if ($33) {
$28 = $27;
$29 = $32;
$i$051$i = $31;
} else {
$$pre$i = $32;
break;
}
}
} else {
$$pre$i = $21;
}
$34 = ($0 + 48) | 0;
$35 = $34 >> 5;
$36 = $35 << 2;
$37 = _calloc($1, $36) | 0;
$38 = ($grid + 24) | 0;
HEAP32[$38 >> 2] = $37;
$39 = HEAP32[$37 >> 2] | 0;
$40 = $39 | 511;
HEAP32[$37 >> 2] = $40;
$41 = ($37 + ($35 << 2)) | 0;
$42 = HEAP32[$41 >> 2] | 0;
$43 = $42 | 511;
HEAP32[$41 >> 2] = $43;
$44 = $35 << 1;
$45 = ($37 + ($44 << 2)) | 0;
$46 = HEAP32[$45 >> 2] | 0;
$47 = $46 | 511;
HEAP32[$45 >> 2] = $47;
$48 = ($35 * 3) | 0;
$49 = ($37 + ($48 << 2)) | 0;
$50 = HEAP32[$49 >> 2] | 0;
$51 = $50 | 511;
HEAP32[$49 >> 2] = $51;
$52 = $35 << 2;
$53 = ($37 + ($52 << 2)) | 0;
$54 = HEAP32[$53 >> 2] | 0;
$55 = $54 | 511;
HEAP32[$53 >> 2] = $55;
$56 = ($35 * 5) | 0;
$57 = ($37 + ($56 << 2)) | 0;
$58 = HEAP32[$57 >> 2] | 0;
$59 = $58 | 511;
HEAP32[$57 >> 2] = $59;
$60 = ($35 * 6) | 0;
$61 = ($37 + ($60 << 2)) | 0;
$62 = HEAP32[$61 >> 2] | 0;
$63 = $62 | 511;
HEAP32[$61 >> 2] = $63;
$64 = ($35 * 7) | 0;
$65 = ($37 + ($64 << 2)) | 0;
$66 = HEAP32[$65 >> 2] | 0;
$67 = $66 | 511;
HEAP32[$65 >> 2] = $67;
$68 = $35 << 3;
$69 = ($37 + ($68 << 2)) | 0;
$70 = HEAP32[$69 >> 2] | 0;
$71 = $70 | 511;
HEAP32[$69 >> 2] = $71;
$72 = ($0 + 9) | 0;
$i$01$us$i12$i = $72;
while (1) {
$73 = $i$01$us$i12$i & 31;
$74 = 1 << $73;
$75 = $i$01$us$i12$i >> 5;
$76 = ($37 + ($75 << 2)) | 0;
$77 = HEAP32[$76 >> 2] | 0;
$78 = $74 | $77;
HEAP32[$76 >> 2] = $78;
$79 = ($i$01$us$i12$i + 1) | 0;
$80 = ($79 | 0) < ($1 | 0);
if ($80) {
$i$01$us$i12$i = $79;
} else {
$i$01$us$i12$1$i = $72;
break;
}
}
while (1) {
$366 = $i$01$us$i12$1$i & 31;
$367 = 1 << $366;
$368 = $i$01$us$i12$1$i >> 5;
$369 = ($368 + $35) | 0;
$370 = ($37 + ($369 << 2)) | 0;
$371 = HEAP32[$370 >> 2] | 0;
$372 = $367 | $371;
HEAP32[$370 >> 2] = $372;
$373 = ($i$01$us$i12$1$i + 1) | 0;
$374 = ($373 | 0) < ($1 | 0);
if ($374) {
$i$01$us$i12$1$i = $373;
} else {
break;
}
}
$333 = $35 << 1;
$i$01$us$i12$2$i = $72;
while (1) {
$375 = $i$01$us$i12$2$i & 31;
$376 = 1 << $375;
$377 = $i$01$us$i12$2$i >> 5;
$378 = ($377 + $333) | 0;
$379 = ($37 + ($378 << 2)) | 0;
$380 = HEAP32[$379 >> 2] | 0;
$381 = $376 | $380;
HEAP32[$379 >> 2] = $381;
$382 = ($i$01$us$i12$2$i + 1) | 0;
$383 = ($382 | 0) < ($1 | 0);
if ($383) {
$i$01$us$i12$2$i = $382;
} else {
$i$01$us$i12$3$i = $72;
break;
}
}
while (1) {
$384 = $i$01$us$i12$3$i & 31;
$385 = 1 << $384;
$386 = $i$01$us$i12$3$i >> 5;
$387 = ($386 + $48) | 0;
$388 = ($37 + ($387 << 2)) | 0;
$389 = HEAP32[$388 >> 2] | 0;
$390 = $385 | $389;
HEAP32[$388 >> 2] = $390;
$391 = ($i$01$us$i12$3$i + 1) | 0;
$392 = ($391 | 0) < ($1 | 0);
if ($392) {
$i$01$us$i12$3$i = $391;
} else {
$i$01$us$i12$4$i = $72;
break;
}
}
while (1) {
$393 = $i$01$us$i12$4$i & 31;
$394 = 1 << $393;
$395 = $i$01$us$i12$4$i >> 5;
$396 = ($395 + $36) | 0;
$397 = ($37 + ($396 << 2)) | 0;
$398 = HEAP32[$397 >> 2] | 0;
$399 = $394 | $398;
HEAP32[$397 >> 2] = $399;
$400 = ($i$01$us$i12$4$i + 1) | 0;
$401 = ($400 | 0) < ($1 | 0);
if ($401) {
$i$01$us$i12$4$i = $400;
} else {
$i$01$us$i12$5$i = $72;
break;
}
}
while (1) {
$402 = $i$01$us$i12$5$i & 31;
$403 = 1 << $402;
$404 = $i$01$us$i12$5$i >> 5;
$405 = ($404 + $56) | 0;
$406 = ($37 + ($405 << 2)) | 0;
$407 = HEAP32[$406 >> 2] | 0;
$408 = $403 | $407;
HEAP32[$406 >> 2] = $408;
$409 = ($i$01$us$i12$5$i + 1) | 0;
$410 = ($409 | 0) < ($1 | 0);
if ($410) {
$i$01$us$i12$5$i = $409;
} else {
$i$01$us$i12$6$i = $72;
break;
}
}
while (1) {
$411 = $i$01$us$i12$6$i & 31;
$412 = 1 << $411;
$413 = $i$01$us$i12$6$i >> 5;
$414 = ($413 + $60) | 0;
$415 = ($37 + ($414 << 2)) | 0;
$416 = HEAP32[$415 >> 2] | 0;
$417 = $412 | $416;
HEAP32[$415 >> 2] = $417;
$418 = ($i$01$us$i12$6$i + 1) | 0;
$419 = ($418 | 0) < ($1 | 0);
if ($419) {
$i$01$us$i12$6$i = $418;
} else {
$i$01$us$i12$7$i = $72;
break;
}
}
while (1) {
$420 = $i$01$us$i12$7$i & 31;
$421 = 1 << $420;
$422 = $i$01$us$i12$7$i >> 5;
$423 = ($422 + $64) | 0;
$424 = ($37 + ($423 << 2)) | 0;
$425 = HEAP32[$424 >> 2] | 0;
$426 = $421 | $425;
HEAP32[$424 >> 2] = $426;
$427 = ($i$01$us$i12$7$i + 1) | 0;
$428 = ($427 | 0) < ($1 | 0);
if ($428) {
$i$01$us$i12$7$i = $427;
} else {
break;
}
}
$429 = $35 << 3;
$i$01$us$i12$8$i = $72;
while (1) {
$430 = $i$01$us$i12$8$i & 31;
$431 = 1 << $430;
$432 = $i$01$us$i12$8$i >> 5;
$433 = ($432 + $429) | 0;
$434 = ($37 + ($433 << 2)) | 0;
$435 = HEAP32[$434 >> 2] | 0;
$436 = $431 | $435;
HEAP32[$434 >> 2] = $436;
$437 = ($i$01$us$i12$8$i + 1) | 0;
$438 = ($437 | 0) < ($1 | 0);
if ($438) {
$i$01$us$i12$8$i = $437;
} else {
$j$02$us$i17$i = $72;
break;
}
}
while (1) {
$81 = Math_imul($j$02$us$i17$i, $35) | 0;
$82 = ($37 + ($81 << 2)) | 0;
$83 = HEAP32[$82 >> 2] | 0;
$84 = $83 | 511;
HEAP32[$82 >> 2] = $84;
$85 = ($j$02$us$i17$i + 1) | 0;
$86 = ($85 | 0) < ($1 | 0);
if ($86) {
$j$02$us$i17$i = $85;
} else {
break;
}
}
if ($26) {
$87 = ($0 + 6) | 0;
$i$01$us$i20$i = $87;
while (1) {
$88 = $i$01$us$i20$i & 31;
$89 = 1 << $88;
$90 = $i$01$us$i20$i >> 5;
$91 = ($37 + ($90 << 2)) | 0;
$92 = HEAP32[$91 >> 2] | 0;
$93 = $89 | $92;
HEAP32[$91 >> 2] = $93;
$94 = ($i$01$us$i20$i + 1) | 0;
$95 = ($94 | 0) < ($72 | 0);
if ($95) {
$i$01$us$i20$i = $94;
} else {
$i$01$us$i20$1$i = $87;
break;
}
}
while (1) {
$320 = $i$01$us$i20$1$i & 31;
$321 = 1 << $320;
$322 = $i$01$us$i20$1$i >> 5;
$323 = ($322 + $35) | 0;
$324 = ($37 + ($323 << 2)) | 0;
$325 = HEAP32[$324 >> 2] | 0;
$326 = $321 | $325;
HEAP32[$324 >> 2] = $326;
$327 = ($i$01$us$i20$1$i + 1) | 0;
$328 = ($327 | 0) < ($72 | 0);
if ($328) {
$i$01$us$i20$1$i = $327;
} else {
$i$01$us$i20$2$i = $87;
break;
}
}
while (1) {
$329 = $i$01$us$i20$2$i & 31;
$330 = 1 << $329;
$331 = $i$01$us$i20$2$i >> 5;
$332 = ($331 + $333) | 0;
$334 = ($37 + ($332 << 2)) | 0;
$335 = HEAP32[$334 >> 2] | 0;
$336 = $330 | $335;
HEAP32[$334 >> 2] = $336;
$337 = ($i$01$us$i20$2$i + 1) | 0;
$338 = ($337 | 0) < ($72 | 0);
if ($338) {
$i$01$us$i20$2$i = $337;
} else {
$i$01$us$i20$3$i = $87;
break;
}
}
while (1) {
$339 = $i$01$us$i20$3$i & 31;
$340 = 1 << $339;
$341 = $i$01$us$i20$3$i >> 5;
$342 = ($341 + $48) | 0;
$343 = ($37 + ($342 << 2)) | 0;
$344 = HEAP32[$343 >> 2] | 0;
$345 = $340 | $344;
HEAP32[$343 >> 2] = $345;
$346 = ($i$01$us$i20$3$i + 1) | 0;
$347 = ($346 | 0) < ($72 | 0);
if ($347) {
$i$01$us$i20$3$i = $346;
} else {
$i$01$us$i20$4$i = $87;
break;
}
}
while (1) {
$348 = $i$01$us$i20$4$i & 31;
$349 = 1 << $348;
$350 = $i$01$us$i20$4$i >> 5;
$351 = ($350 + $36) | 0;
$352 = ($37 + ($351 << 2)) | 0;
$353 = HEAP32[$352 >> 2] | 0;
$354 = $349 | $353;
HEAP32[$352 >> 2] = $354;
$355 = ($i$01$us$i20$4$i + 1) | 0;
$356 = ($355 | 0) < ($72 | 0);
if ($356) {
$i$01$us$i20$4$i = $355;
} else {
$i$01$us$i20$5$i = $87;
break;
}
}
while (1) {
$357 = $i$01$us$i20$5$i & 31;
$358 = 1 << $357;
$359 = $i$01$us$i20$5$i >> 5;
$360 = ($359 + $56) | 0;
$361 = ($37 + ($360 << 2)) | 0;
$362 = HEAP32[$361 >> 2] | 0;
$363 = $358 | $362;
HEAP32[$361 >> 2] = $363;
$364 = ($i$01$us$i20$5$i + 1) | 0;
$365 = ($364 | 0) < ($72 | 0);
if ($365) {
$i$01$us$i20$5$i = $364;
} else {
$j$02$us$i25$i = $87;
break;
}
}
while (1) {
$96 = Math_imul($j$02$us$i25$i, $35) | 0;
$97 = ($37 + ($96 << 2)) | 0;
$98 = HEAP32[$97 >> 2] | 0;
$99 = $98 | 63;
HEAP32[$97 >> 2] = $99;
$100 = ($j$02$us$i25$i + 1) | 0;
$101 = ($100 | 0) < ($72 | 0);
if ($101) {
$j$02$us$i25$i = $100;
} else {
break;
}
}
}
$102 = ($0 | 0) > 0;
if ($102) {
$j$02$us$i29$i = 9;
while (1) {
$103 = Math_imul($j$02$us$i29$i, $35) | 0;
$104 = ($37 + ($103 << 2)) | 0;
$105 = HEAP32[$104 >> 2] | 0;
$106 = $105 | 64;
HEAP32[$104 >> 2] = $106;
$107 = ($j$02$us$i29$i + 1) | 0;
$108 = ($107 | 0) < ($72 | 0);
if ($108) {
$j$02$us$i29$i = $107;
} else {
$i$01$us$i33$i = 9;
break;
}
}
while (1) {
$109 = $i$01$us$i33$i & 31;
$110 = 1 << $109;
$111 = $i$01$us$i33$i >> 5;
$112 = ($111 + $60) | 0;
$113 = ($37 + ($112 << 2)) | 0;
$114 = HEAP32[$113 >> 2] | 0;
$115 = $110 | $114;
HEAP32[$113 >> 2] = $115;
$116 = ($i$01$us$i33$i + 1) | 0;
$117 = ($116 | 0) < ($72 | 0);
if ($117) {
$i$01$us$i33$i = $116;
} else {
break;
}
}
}
$118 = ($_version | 0) < 2;
if ($118) {
$119 = HEAP32[$grid >> 2] | 0;
dest = ($119 + 0) | 0;
src = ($base_cell$i + 0) | 0;
stop = (dest + 52) | 0;
do {
HEAP32[dest >> 2] = HEAP32[src >> 2] | 0;
dest = (dest + 4) | 0;
src = (src + 4) | 0;
} while ((dest | 0) < (stop | 0));
} else {
$120 = $3 << 3;
$121 = Math_imul($120, $3) | 0;
$122 = _malloc($121) | 0;
$123 = _malloc($121) | 0;
HEAP32[$align_pos$i >> 2] = 6;
$124 = ($0 + 10) | 0;
$125 = ($align_pos$i + ($21 << 2)) | 0;
HEAP32[$125 >> 2] = $124;
if ($26) {
$126 = ($_version + -7) | 0;
$127 = (7632 + $126) | 0;
$128 = HEAP8[$127 >> 0] | 0;
$129 = $128 & 255;
$131 = $124;
$133 = $2;
while (1) {
$130 = ($131 - $129) | 0;
$132 = ($align_pos$i + ($133 << 2)) | 0;
HEAP32[$132 >> 2] = $130;
$134 = ($133 + -1) | 0;
$135 = ($133 | 0) > 1;
if ($135) {
$131 = $130;
$133 = $134;
} else {
break;
}
}
}
HEAP32[$122 >> 2] = 3;
$136 = ($122 + 4) | 0;
HEAP32[$136 >> 2] = 3;
$137 = HEAP32[$_ul_pos >> 2] | 0;
HEAP32[$123 >> 2] = $137;
$138 = ($_ul_pos + 4) | 0;
$139 = HEAP32[$138 >> 2] | 0;
$140 = ($123 + 4) | 0;
HEAP32[$140 >> 2] = $139;
$141 = ($0 + 13) | 0;
$142 = ($122 + ($21 << 3)) | 0;
HEAP32[$142 >> 2] = $141;
$143 = ((($122 + ($21 << 3)) | 0) + 4) | 0;
HEAP32[$143 >> 2] = 3;
$144 = HEAP32[$_ur_pos >> 2] | 0;
$145 = ($123 + ($21 << 3)) | 0;
HEAP32[$145 >> 2] = $144;
$146 = ($_ur_pos + 4) | 0;
$147 = HEAP32[$146 >> 2] | 0;
$148 = ((($123 + ($21 << 3)) | 0) + 4) | 0;
HEAP32[$148 >> 2] = $147;
$149 = Math_imul($21, $3) | 0;
$150 = ($122 + ($149 << 3)) | 0;
HEAP32[$150 >> 2] = 3;
$151 = ((($122 + ($149 << 3)) | 0) + 4) | 0;
HEAP32[$151 >> 2] = $141;
$152 = HEAP32[$_dl_pos >> 2] | 0;
$153 = ($123 + ($149 << 3)) | 0;
HEAP32[$153 >> 2] = $152;
$154 = ($_dl_pos + 4) | 0;
$155 = HEAP32[$154 >> 2] | 0;
$156 = ((($123 + ($149 << 3)) | 0) + 4) | 0;
HEAP32[$156 >> 2] = $155;
$157 = $3 << 1;
$158 = ($157 + -1) | 0;
$159 = ($158 | 0) > 1;
if ($159) {
$160 = ($p0$i + 4) | 0;
$161 = ($p1$i + 4) | 0;
$162 = ($p2$i + 4) | 0;
$163 = $2 << 1;
$164 = ($163 + 2) | 0;
$k$044$i = 1;
while (1) {
$165 = ($21 | 0) < ($k$044$i | 0);
$166 = $165 ? $21 : $k$044$i;
$167 = ($k$044$i | 0) == ($21 | 0);
$168 = $167 & 1;
$169 = ($166 - $168) | 0;
$170 = ($k$044$i - $21) | 0;
$171 = ($170 | 0) > 0;
$172 = $171 ? $170 : 0;
$173 = ($172 + $168) | 0;
$174 = ($173 | 0) > ($169 | 0);
if (!$174) {
$j$043$i = $173;
while (1) {
$175 = ($173 - $j$043$i) | 0;
$176 = ($175 + $169) | 0;
$177 = Math_imul($176, $3) | 0;
$178 = ($177 + $j$043$i) | 0;
$179 = ($align_pos$i + ($j$043$i << 2)) | 0;
$180 = HEAP32[$179 >> 2] | 0;
$181 = ($align_pos$i + ($176 << 2)) | 0;
$182 = HEAP32[$181 >> 2] | 0;
$183 = ($122 + ($178 << 3)) | 0;
HEAP32[$183 >> 2] = $180;
$184 = ((($122 + ($178 << 3)) | 0) + 4) | 0;
HEAP32[$184 >> 2] = $182;
$185 = ($180 + -2) | 0;
$186 = ($182 + -2) | 0;
$187 = ($182 + 2) | 0;
$188 = ($180 + 2) | 0;
$j$02$us$i39$i = $185;
while (1) {
$195 = Math_imul($j$02$us$i39$i, $35) | 0;
$i$01$us$i38$i = $186;
while (1) {
$191 = $i$01$us$i38$i & 31;
$192 = 1 << $191;
$193 = $i$01$us$i38$i >> 5;
$194 = ($193 + $195) | 0;
$196 = ($37 + ($194 << 2)) | 0;
$197 = HEAP32[$196 >> 2] | 0;
$198 = $192 | $197;
HEAP32[$196 >> 2] = $198;
$199 = ($i$01$us$i38$i + 1) | 0;
$200 = ($i$01$us$i38$i | 0) < ($187 | 0);
if ($200) {
$i$01$us$i38$i = $199;
} else {
break;
}
}
$189 = ($j$02$us$i39$i + 1) | 0;
$190 = ($j$02$us$i39$i | 0) < ($188 | 0);
if ($190) {
$j$02$us$i39$i = $189;
} else {
break;
}
}
$201 = ($176 | 0) > 1;
$202 = ($j$043$i | 0) > 1;
$or$cond$i = $201 & $202;
do {
if ($or$cond$i) {
$203 = ($176 + -2) | 0;
$204 = ($grid + ($203 << 2)) | 0;
$205 = HEAP32[$204 >> 2] | 0;
$$sum5$i = ($j$043$i + -1) | 0;
$206 = ($205 + (($$sum5$i * 52) | 0)) | 0;
_qr_hom_cell_project($p0$i, $206, $180, $182, 0);
$$sum6$i = ($j$043$i + -2) | 0;
$207 = ($205 + (($$sum6$i * 52) | 0)) | 0;
_qr_hom_cell_project($p1$i, $207, $180, $182, 0);
$208 = ($176 + -1) | 0;
$209 = ($grid + ($208 << 2)) | 0;
$210 = HEAP32[$209 >> 2] | 0;
$211 = ($210 + (($$sum6$i * 52) | 0)) | 0;
_qr_hom_cell_project($p2$i, $211, $180, $182, 0);
$212 = HEAP32[$p0$i >> 2] | 0;
$213 = HEAP32[$p1$i >> 2] | 0;
$214 = ($213 | 0) < ($212 | 0);
$215 = $214 ? $213 : $212;
$216 = $213 ^ $212;
$217 = $216 ^ $215;
$218 = HEAP32[$160 >> 2] | 0;
$219 = HEAP32[$161 >> 2] | 0;
$220 = ($219 | 0) < ($218 | 0);
$221 = $220 ? $219 : $218;
$222 = $219 ^ $218;
$223 = $222 ^ $221;
$224 = HEAP32[$p2$i >> 2] | 0;
$225 = ($224 | 0) < ($217 | 0);
$226 = $225 ? $224 : $217;
$227 = $224 ^ $217;
$228 = $227 ^ $226;
HEAP32[$p2$i >> 2] = $228;
$229 = HEAP32[$162 >> 2] | 0;
$230 = ($229 | 0) < ($223 | 0);
$231 = $230 ? $229 : $223;
$232 = $223 ^ $229;
$233 = $232 ^ $231;
HEAP32[$162 >> 2] = $233;
$234 = ($226 | 0) < ($215 | 0);
$235 = $234 ? $226 : $215;
HEAP32[$p0$i >> 2] = $235;
$236 = $226 ^ $215;
$237 = $236 ^ $235;
HEAP32[$p1$i >> 2] = $237;
$238 = ($231 | 0) < ($221 | 0);
$239 = $238 ? $231 : $221;
HEAP32[$160 >> 2] = $239;
$240 = $231 ^ $221;
$241 = $240 ^ $239;
HEAP32[$161 >> 2] = $241;
$242 = ($210 + (($$sum5$i * 52) | 0)) | 0;
$243 = ($178 - $3) | 0;
$244 = ($243 + -1) | 0;
$245 = ($122 + ($244 << 3)) | 0;
$246 = HEAP32[$245 >> 2] | 0;
$247 = ((($122 + ($244 << 3)) | 0) + 4) | 0;
$248 = HEAP32[$247 >> 2] | 0;
$249 = ($122 + ($243 << 3)) | 0;
$250 = HEAP32[$249 >> 2] | 0;
$251 = ((($122 + ($243 << 3)) | 0) + 4) | 0;
$252 = HEAP32[$251 >> 2] | 0;
$253 = ($178 + -1) | 0;
$254 = ($122 + ($253 << 3)) | 0;
$255 = HEAP32[$254 >> 2] | 0;
$256 = ((($122 + ($253 << 3)) | 0) + 4) | 0;
$257 = HEAP32[$256 >> 2] | 0;
$258 = ($123 + ($244 << 3)) | 0;
$259 = HEAP32[$258 >> 2] | 0;
$260 = ((($123 + ($244 << 3)) | 0) + 4) | 0;
$261 = HEAP32[$260 >> 2] | 0;
$262 = ($123 + ($243 << 3)) | 0;
$263 = HEAP32[$262 >> 2] | 0;
$264 = ((($123 + ($243 << 3)) | 0) + 4) | 0;
$265 = HEAP32[$264 >> 2] | 0;
$266 = ($123 + ($253 << 3)) | 0;
$267 = HEAP32[$266 >> 2] | 0;
$268 = ((($123 + ($253 << 3)) | 0) + 4) | 0;
$269 = HEAP32[$268 >> 2] | 0;
_qr_hom_cell_init($242, $246, $248, $250, $252, $255, $257, $180, $182, $259, $261, $263, $265, $267, $269, $237, $241);
$cell$0$i = $242;
} else {
$270 = ($j$043$i | 0) > 0;
$or$cond9$i = $201 & $270;
if ($or$cond9$i) {
$271 = ($176 + -2) | 0;
$272 = ($grid + ($271 << 2)) | 0;
$273 = HEAP32[$272 >> 2] | 0;
$$sum4$i = ($j$043$i + -1) | 0;
$274 = ($273 + (($$sum4$i * 52) | 0)) | 0;
$cell$0$i = $274;
break;
}
$275 = ($176 | 0) > 0;
$or$cond10$i = $275 & $202;
if ($or$cond10$i) {
$276 = ($176 + -1) | 0;
$277 = ($grid + ($276 << 2)) | 0;
$278 = HEAP32[$277 >> 2] | 0;
$$sum3$i = ($j$043$i + -2) | 0;
$279 = ($278 + (($$sum3$i * 52) | 0)) | 0;
$cell$0$i = $279;
} else {
$cell$0$i = $base_cell$i;
}
}
} while (0);
$280 = ($123 + ($178 << 3)) | 0;
_qr_alignment_pattern_search($280, $cell$0$i, $180, $182, 2, $_img, $_width, $_height) | 0;
$281 = ($176 | 0) > 0;
$282 = ($j$043$i | 0) > 0;
$or$cond11$i = $281 & $282;
if ($or$cond11$i) {
$283 = ($176 + -1) | 0;
$284 = ($grid + ($283 << 2)) | 0;
$285 = HEAP32[$284 >> 2] | 0;
$$sum2$i = ($j$043$i + -1) | 0;
$286 = ($285 + (($$sum2$i * 52) | 0)) | 0;
$287 = ($178 - $3) | 0;
$288 = ($287 + -1) | 0;
$289 = ($122 + ($288 << 3)) | 0;
$290 = HEAP32[$289 >> 2] | 0;
$291 = ((($122 + ($288 << 3)) | 0) + 4) | 0;
$292 = HEAP32[$291 >> 2] | 0;
$293 = ($122 + ($287 << 3)) | 0;
$294 = HEAP32[$293 >> 2] | 0;
$295 = ((($122 + ($287 << 3)) | 0) + 4) | 0;
$296 = HEAP32[$295 >> 2] | 0;
$297 = ($178 + -1) | 0;
$298 = ($122 + ($297 << 3)) | 0;
$299 = HEAP32[$298 >> 2] | 0;
$300 = ((($122 + ($297 << 3)) | 0) + 4) | 0;
$301 = HEAP32[$300 >> 2] | 0;
$302 = ($123 + ($288 << 3)) | 0;
$303 = HEAP32[$302 >> 2] | 0;
$304 = ((($123 + ($288 << 3)) | 0) + 4) | 0;
$305 = HEAP32[$304 >> 2] | 0;
$306 = ($123 + ($287 << 3)) | 0;
$307 = HEAP32[$306 >> 2] | 0;
$308 = ((($123 + ($287 << 3)) | 0) + 4) | 0;
$309 = HEAP32[$308 >> 2] | 0;
$310 = ($123 + ($297 << 3)) | 0;
$311 = HEAP32[$310 >> 2] | 0;
$312 = ((($123 + ($297 << 3)) | 0) + 4) | 0;
$313 = HEAP32[$312 >> 2] | 0;
$314 = HEAP32[$280 >> 2] | 0;
$315 = ((($123 + ($178 << 3)) | 0) + 4) | 0;
$316 = HEAP32[$315 >> 2] | 0;
_qr_hom_cell_init($286, $290, $292, $294, $296, $299, $301, $180, $182, $303, $305, $307, $309, $311, $313, $314, $316);
}
$317 = ($j$043$i + 1) | 0;
$318 = ($j$043$i | 0) < ($169 | 0);
if ($318) {
$j$043$i = $317;
} else {
break;
}
}
}
$319 = ($k$044$i + 1) | 0;
$exitcond$i = ($k$044$i | 0) == ($164 | 0);
if ($exitcond$i) {
break;
} else {
$k$044$i = $319;
}
}
}
_free($122);
_free($123);
}
$439 = ($grid + 28) | 0;
$440 = ($align_pos$i + 4) | 0;
$441 = $$pre$i << 2;
$442 = ($441 + -4) | 0;
_memcpy($439 | 0, $440 | 0, $442 | 0) | 0;
$443 = HEAP32[$22 >> 2] | 0;
$444 = ($443 + -1) | 0;
$445 = ((($grid + ($444 << 2)) | 0) + 28) | 0;
HEAP32[$445 >> 2] = $1;
$446 = HEAP32[$grid >> 2] | 0;
_qr_hom_cell_project($5, $446, -1, -1, 1);
$447 = HEAP32[$22 >> 2] | 0;
$$sum$i = ($447 + -1) | 0;
$448 = ($446 + (($$sum$i * 52) | 0)) | 0;
$449 = $1 << 1;
$450 = ($449 + -1) | 0;
_qr_hom_cell_project($9, $448, $450, -1, 1);
$451 = ($grid + ($$sum$i << 2)) | 0;
$452 = HEAP32[$451 >> 2] | 0;
_qr_hom_cell_project($13, $452, -1, $450, 1);
$453 = ($452 + (($$sum$i * 52) | 0)) | 0;
_qr_hom_cell_project($17, $453, $450, $450, 1);
$454 = (0 - $_width) | 0;
$455 = $454 << 2;
$456 = $_width << 3;
$457 = (0 - $_height) | 0;
$458 = $457 << 2;
$459 = $_height << 3;
$460 = HEAP32[$5 >> 2] | 0;
$461 = ($456 | 0) < ($460 | 0);
$462 = $461 ? $456 : $460;
$463 = ($455 - $462) | 0;
$464 = ($462 | 0) > ($455 | 0);
$465 = $464 ? $463 : 0;
$466 = ($455 - $465) | 0;
HEAP32[$5 >> 2] = $466;
$467 = HEAP32[$7 >> 2] | 0;
$468 = ($459 | 0) < ($467 | 0);
$469 = $468 ? $459 : $467;
$470 = ($458 - $469) | 0;
$471 = ($469 | 0) > ($458 | 0);
$472 = $471 ? $470 : 0;
$473 = ($458 - $472) | 0;
HEAP32[$7 >> 2] = $473;
$474 = HEAP32[$9 >> 2] | 0;
$475 = ($456 | 0) < ($474 | 0);
$476 = $475 ? $456 : $474;
$477 = ($455 - $476) | 0;
$478 = ($476 | 0) > ($455 | 0);
$479 = $478 ? $477 : 0;
$480 = ($455 - $479) | 0;
HEAP32[$9 >> 2] = $480;
$481 = HEAP32[$11 >> 2] | 0;
$482 = ($459 | 0) < ($481 | 0);
$483 = $482 ? $459 : $481;
$484 = ($458 - $483) | 0;
$485 = ($483 | 0) > ($458 | 0);
$486 = $485 ? $484 : 0;
$487 = ($458 - $486) | 0;
HEAP32[$11 >> 2] = $487;
$488 = HEAP32[$13 >> 2] | 0;
$489 = ($456 | 0) < ($488 | 0);
$490 = $489 ? $456 : $488;
$491 = ($455 - $490) | 0;
$492 = ($490 | 0) > ($455 | 0);
$493 = $492 ? $491 : 0;
$494 = ($455 - $493) | 0;
HEAP32[$13 >> 2] = $494;
$495 = HEAP32[$15 >> 2] | 0;
$496 = ($459 | 0) < ($495 | 0);
$497 = $496 ? $459 : $495;
$498 = ($458 - $497) | 0;
$499 = ($497 | 0) > ($458 | 0);
$500 = $499 ? $498 : 0;
$501 = ($458 - $500) | 0;
HEAP32[$15 >> 2] = $501;
$502 = HEAP32[$17 >> 2] | 0;
$503 = ($456 | 0) < ($502 | 0);
$504 = $503 ? $456 : $502;
$505 = ($455 - $504) | 0;
$506 = ($504 | 0) > ($455 | 0);
$507 = $506 ? $505 : 0;
$508 = ($455 - $507) | 0;
HEAP32[$17 >> 2] = $508;
$509 = HEAP32[$19 >> 2] | 0;
$510 = ($459 | 0) < ($509 | 0);
$511 = $510 ? $459 : $509;
$512 = ($458 - $511) | 0;
$513 = ($511 | 0) > ($458 | 0);
$514 = $513 ? $512 : 0;
$515 = ($458 - $514) | 0;
HEAP32[$19 >> 2] = $515;
$516 = $1 << 2;
$517 = Math_imul($516, $35) | 0;
$518 = _malloc($517) | 0;
$519 = $_fmt_info & 7;
switch ($519 | 0) {
case 6: {
$520 = ($1 | 0) > 0;
if ($520) {
$521 = ($35 | 0) > 0;
$j$565$i$i = 0;
while (1) {
$607 = ($j$565$i$i | 0) % 3 & -1;
$608 = ($607 + $j$565$i$i) | 0;
$609 = $608 << 1;
$610 = $609 & 2;
$611 = $j$565$i$i << 1;
$612 = ($611 | 0) % 3 & -1;
$613 = ($612 + $611) | 0;
$614 = $613 << 2;
$615 = $614 & 4;
$616 = $615 | $610;
$617 = ($j$565$i$i * 3) | 0;
$618 = ($617 | 0) % 3 & -1;
$619 = ($618 + $617) | 0;
$620 = $619 << 3;
$621 = $620 & 8;
$622 = $616 | $621;
$623 = $j$565$i$i << 2;
$624 = ($623 | 0) % 3 & -1;
$625 = ($624 + $623) | 0;
$626 = $625 << 4;
$627 = $626 & 16;
$628 = $622 | $627;
$629 = ($j$565$i$i * 5) | 0;
$630 = ($629 | 0) % 3 & -1;
$631 = ($630 + $629) | 0;
$632 = $631 << 5;
$633 = $632 & 32;
$634 = $628 | $633;
$635 = $634 ^ 63;
$636 = $635 << 6;
$637 = $636 | $635;
if ($521) {
$638 = $637 << 12;
$639 = $637 << 24;
$640 = $638 | $637;
$641 = $640 | $639;
$642 = Math_imul($j$565$i$i, $35) | 0;
$i$759$i$i = 0;
$m4$260$i$i = $641;
while (1) {
$643 = ($i$759$i$i + $642) | 0;
$644 = ($518 + ($643 << 2)) | 0;
HEAP32[$644 >> 2] = $m4$260$i$i;
$645 = $m4$260$i$i >>> 2;
$646 = $m4$260$i$i << 4;
$647 = $645 | $646;
$648 = ($i$759$i$i + 1) | 0;
$exitcond77$i$i = ($648 | 0) == ($35 | 0);
if ($exitcond77$i$i) {
break;
} else {
$i$759$i$i = $648;
$m4$260$i$i = $647;
}
}
}
$649 = ($j$565$i$i + 1) | 0;
$exitcond78$i$i = ($649 | 0) == ($1 | 0);
if ($exitcond78$i$i) {
break;
} else {
$j$565$i$i = $649;
}
}
}
break;
}
case 5: {
$522 = ($1 | 0) > 0;
if ($522) {
$523 = ($35 | 0) > 0;
$j$451$i$i = 0;
while (1) {
$564 = ($j$451$i$i | 0) % 6 & -1;
$565 = ($564 | 0) == 0;
$566 = $565 & 1;
$567 = $566 << 1;
$568 = $j$451$i$i << 1;
$569 = ($568 | 0) % 6 & -1;
$570 = ($569 | 0) == 0;
$571 = $570 & 1;
$572 = $571 << 2;
$573 = ($j$451$i$i * 3) | 0;
$574 = ($573 | 0) % 6 & -1;
$575 = ($574 | 0) == 0;
$576 = $575 & 1;
$577 = $576 << 3;
$578 = $j$451$i$i << 2;
$579 = ($578 | 0) % 6 & -1;
$580 = ($579 | 0) == 0;
$581 = $580 & 1;
$582 = $581 << 4;
$583 = ($j$451$i$i * 5) | 0;
$584 = ($583 | 0) % 6 & -1;
$585 = ($584 | 0) == 0;
$586 = $585 & 1;
$587 = $586 << 5;
$588 = $567 | $572;
$589 = $588 | $577;
$590 = $589 | $582;
$591 = $590 | $587;
$592 = $591 | 1;
$593 = $592 << 6;
$594 = $593 | $592;
if ($523) {
$595 = $594 << 12;
$596 = $594 << 24;
$597 = $595 | $594;
$598 = $597 | $596;
$599 = Math_imul($j$451$i$i, $35) | 0;
$i$445$i$i = 0;
$m3$246$i$i = $598;
while (1) {
$600 = ($i$445$i$i + $599) | 0;
$601 = ($518 + ($600 << 2)) | 0;
HEAP32[$601 >> 2] = $m3$246$i$i;
$602 = $m3$246$i$i >>> 2;
$603 = $m3$246$i$i << 4;
$604 = $602 | $603;
$605 = ($i$445$i$i + 1) | 0;
$exitcond74$i$i = ($605 | 0) == ($35 | 0);
if ($exitcond74$i$i) {
break;
} else {
$i$445$i$i = $605;
$m3$246$i$i = $604;
}
}
}
$606 = ($j$451$i$i + 1) | 0;
$exitcond75$i$i = ($606 | 0) == ($1 | 0);
if ($exitcond75$i$i) {
break;
} else {
$j$451$i$i = $606;
}
}
}
break;
}
case 4: {
$524 = ($1 | 0) > 0;
if ($524) {
$j$335$i$i = 0;
$m2$036$i$i = 7;
while (1) {
$554 = Math_imul($j$335$i$i, $35) | 0;
$555 = ($518 + ($554 << 2)) | 0;
$556 = $m2$036$i$i & 1;
$557 = (0 - $556) | 0;
$558 = $557 ^ 204;
$559 = $558 & 255;
_memset($555 | 0, $559 | 0, $36 | 0) | 0;
$560 = $m2$036$i$i >>> 1;
$561 = $m2$036$i$i << 5;
$562 = $560 | $561;
$563 = ($j$335$i$i + 1) | 0;
$exitcond72$i$i = ($563 | 0) == ($1 | 0);
if ($exitcond72$i$i) {
break;
} else {
$j$335$i$i = $563;
$m2$036$i$i = $562;
}
}
}
break;
}
case 3: {
$525 = ($1 | 0) > 0;
if ($525) {
$542 = ($35 | 0) > 0;
$j$228$i$i = 0;
$mj$129$i$i = 1227133513;
while (1) {
if ($542) {
$543 = Math_imul($j$228$i$i, $35) | 0;
$i$122$i$i = 0;
$mi$023$i$i = $mj$129$i$i;
while (1) {
$544 = ($i$122$i$i + $543) | 0;
$545 = ($518 + ($544 << 2)) | 0;
HEAP32[$545 >> 2] = $mi$023$i$i;
$546 = $mi$023$i$i >>> 2;
$547 = $mi$023$i$i << 1;
$548 = $546 | $547;
$549 = ($i$122$i$i + 1) | 0;
$exitcond69$i$i = ($549 | 0) == ($35 | 0);
if ($exitcond69$i$i) {
break;
} else {
$i$122$i$i = $549;
$mi$023$i$i = $548;
}
}
}
$550 = $mj$129$i$i >>> 1;
$551 = $mj$129$i$i << 2;
$552 = $550 | $551;
$553 = ($j$228$i$i + 1) | 0;
$exitcond70$i$i = ($553 | 0) == ($1 | 0);
if ($exitcond70$i$i) {
break;
} else {
$j$228$i$i = $553;
$mj$129$i$i = $552;
}
}
}
break;
}
case 2: {
$526 = ($1 | 0) > 0;
if ($526) {
$j$118$i$i = 0;
$m1$019$i$i = 255;
while (1) {
$535 = Math_imul($j$118$i$i, $35) | 0;
$536 = ($518 + ($535 << 2)) | 0;
$537 = $m1$019$i$i & 255;
_memset($536 | 0, $537 | 0, $36 | 0) | 0;
$538 = $m1$019$i$i << 8;
$539 = $m1$019$i$i >>> 16;
$540 = $538 | $539;
$541 = ($j$118$i$i + 1) | 0;
$exitcond68$i$i = ($541 | 0) == ($1 | 0);
if ($exitcond68$i$i) {
break;
} else {
$j$118$i$i = $541;
$m1$019$i$i = $540;
}
}
}
break;
}
case 0: {
$527 = ($1 | 0) > 0;
if ($527) {
$j$013$i$i = 0;
$m$014$i$i = 85;
while (1) {
$530 = Math_imul($j$013$i$i, $35) | 0;
$531 = ($518 + ($530 << 2)) | 0;
$532 = $m$014$i$i & 255;
_memset($531 | 0, $532 | 0, $36 | 0) | 0;
$533 = $m$014$i$i ^ 255;
$534 = ($j$013$i$i + 1) | 0;
$exitcond67$i$i = ($534 | 0) == ($1 | 0);
if ($exitcond67$i$i) {
break;
} else {
$j$013$i$i = $534;
$m$014$i$i = $533;
}
}
}
break;
}
case 1: {
_memset($518 | 0, 85, $517 | 0) | 0;
break;
}
default: {
$528 = ($1 | 0) > 0;
if ($528) {
$529 = ($35 | 0) > 0;
$j$610$i$i = 0;
while (1) {
$650 = $j$610$i$i & 1;
$651 = ($j$610$i$i | 0) % 3 & -1;
$652 = ($j$610$i$i + 1) | 0;
$653 = ($652 + $651) | 0;
$654 = $653 << 1;
$655 = $654 & 2;
$656 = $655 | $650;
$657 = $j$610$i$i << 1;
$658 = ($657 | 0) % 3 & -1;
$659 = ($658 + $j$610$i$i) | 0;
$660 = $659 << 2;
$661 = $660 & 4;
$662 = $656 | $661;
$663 = ($j$610$i$i * 3) | 0;
$664 = ($663 | 0) % 3 & -1;
$665 = ($664 + $652) | 0;
$666 = $665 << 3;
$667 = $666 & 8;
$668 = $662 | $667;
$669 = $j$610$i$i << 2;
$670 = ($669 | 0) % 3 & -1;
$671 = ($670 + $j$610$i$i) | 0;
$672 = $671 << 4;
$673 = $672 & 16;
$674 = $668 | $673;
$675 = ($j$610$i$i * 5) | 0;
$676 = ($675 | 0) % 3 & -1;
$677 = ($676 + $652) | 0;
$678 = $677 << 5;
$679 = $678 & 32;
$680 = $674 | $679;
$681 = $680 ^ 63;
$682 = $681 << 6;
$683 = $682 | $681;
if ($529) {
$684 = $683 << 12;
$685 = $683 << 24;
$686 = $684 | $683;
$687 = $686 | $685;
$688 = Math_imul($j$610$i$i, $35) | 0;
$i$106$i$i = 0;
$m5$27$i$i = $687;
while (1) {
$689 = ($i$106$i$i + $688) | 0;
$690 = ($518 + ($689 << 2)) | 0;
HEAP32[$690 >> 2] = $m5$27$i$i;
$691 = $m5$27$i$i >>> 2;
$692 = $m5$27$i$i << 4;
$693 = $691 | $692;
$694 = ($i$106$i$i + 1) | 0;
$exitcond$i$i = ($694 | 0) == ($35 | 0);
if ($exitcond$i$i) {
break;
} else {
$i$106$i$i = $694;
$m5$27$i$i = $693;
}
}
}
$exitcond66$i$i = ($652 | 0) == ($1 | 0);
if ($exitcond66$i$i) {
break;
} else {
$j$610$i$i = $652;
}
}
}
}
}
$695 = ($447 | 0) > 0;
if ($695) {
$696 = ($_height + -1) | 0;
$697 = ($_width + -1) | 0;
$_grid$idx$val$i = HEAP32[$38 >> 2] | 0;
$j$015$i = 0;
$u0$017$i = 0;
while (1) {
$698 = ((($grid + ($j$015$i << 2)) | 0) + 28) | 0;
$699 = HEAP32[$698 >> 2] | 0;
$700 = ($u0$017$i | 0) < ($699 | 0);
$i$011$i = 0;
$v0$010$i = 0;
while (1) {
$701 = ((($grid + ($i$011$i << 2)) | 0) + 28) | 0;
$702 = HEAP32[$701 >> 2] | 0;
$703 = ($grid + ($i$011$i << 2)) | 0;
$704 = HEAP32[$703 >> 2] | 0;
$705 = ((($704 + (($j$015$i * 52) | 0)) | 0) + 44) | 0;
$706 = HEAP32[$705 >> 2] | 0;
$707 = ($u0$017$i - $706) | 0;
$708 = ((($704 + (($j$015$i * 52) | 0)) | 0) + 48) | 0;
$709 = HEAP32[$708 >> 2] | 0;
$710 = ($v0$010$i - $709) | 0;
if ($700) {
$711 = ((($704 + (($j$015$i * 52) | 0)) | 0) + 28) | 0;
$712 = ((($704 + (($j$015$i * 52) | 0)) | 0) + 24) | 0;
$713 = ((($704 + (($j$015$i * 52) | 0)) | 0) + 16) | 0;
$714 = ((($704 + (($j$015$i * 52) | 0)) | 0) + 12) | 0;
$715 = ((($704 + (($j$015$i * 52) | 0)) | 0) + 4) | 0;
$716 = ($704 + (($j$015$i * 52) | 0)) | 0;
$717 = HEAP32[$711 >> 2] | 0;
$718 = HEAP32[$712 >> 2] | 0;
$719 = HEAP32[$713 >> 2] | 0;
$720 = HEAP32[$714 >> 2] | 0;
$721 = HEAP32[$715 >> 2] | 0;
$722 = HEAP32[$716 >> 2] | 0;
$723 = ((($704 + (($j$015$i * 52) | 0)) | 0) + 32) | 0;
$724 = Math_imul($717, $710) | 0;
$725 = Math_imul($718, $707) | 0;
$726 = ((($704 + (($j$015$i * 52) | 0)) | 0) + 20) | 0;
$727 = Math_imul($719, $710) | 0;
$728 = Math_imul($720, $707) | 0;
$729 = ((($704 + (($j$015$i * 52) | 0)) | 0) + 8) | 0;
$730 = Math_imul($721, $710) | 0;
$731 = Math_imul($722, $707) | 0;
$732 = HEAP32[$723 >> 2] | 0;
$733 = ($725 + $724) | 0;
$734 = HEAP32[$726 >> 2] | 0;
$735 = ($728 + $727) | 0;
$736 = HEAP32[$729 >> 2] | 0;
$737 = ($731 + $730) | 0;
$738 = ($733 + $732) | 0;
$739 = ($735 + $734) | 0;
$740 = ($737 + $736) | 0;
$741 = ($v0$010$i | 0) < ($702 | 0);
$742 = ((($704 + (($j$015$i * 52) | 0)) | 0) + 36) | 0;
$743 = ((($704 + (($j$015$i * 52) | 0)) | 0) + 40) | 0;
$u$08$i = $u0$017$i;
$w0$07$i = $738;
$x0$05$i = $740;
$y0$06$i = $739;
while (1) {
if ($741) {
$744 = Math_imul($u$08$i, $35) | 0;
$v$04$i = $v0$010$i;
$w$03$i = $w0$07$i;
$x$01$i = $x0$05$i;
$y$02$i = $y0$06$i;
while (1) {
$745 = $v$04$i >> 5;
$746 = ($745 + $744) | 0;
$747 = ($_grid$idx$val$i + ($746 << 2)) | 0;
$748 = HEAP32[$747 >> 2] | 0;
$749 = $v$04$i & 31;
$750 = 1 << $749;
$751 = $748 & $750;
$752 = ($751 | 0) == 0;
if ($752) {
$753 = ($w$03$i | 0) == 0;
if ($753) {
$754 = $x$01$i >>> 31;
$755 = ($754 + 2147483647) | 0;
$756 = $y$02$i >>> 31;
$757 = ($756 + 2147483647) | 0;
$778 = $755;
$780 = $757;
} else {
$758 = ($w$03$i | 0) < 0;
if ($758) {
$759 = (0 - $x$01$i) | 0;
$760 = (0 - $y$02$i) | 0;
$761 = (0 - $w$03$i) | 0;
$$0$i$i = $761;
$$01$i$i = $760;
$$02$i$i = $759;
} else {
$$0$i$i = $w$03$i;
$$01$i$i = $y$02$i;
$$02$i$i = $x$01$i;
}
$762 = $$0$i$i >> 1;
$763 = $$02$i$i >> 31;
$764 = ($762 + $763) | 0;
$765 = $764 ^ $763;
$766 = ($765 + $$02$i$i) | 0;
$767 = (($766 | 0) / ($$0$i$i | 0)) & -1;
$768 = HEAP32[$742 >> 2] | 0;
$769 = ($768 + $767) | 0;
$770 = $$01$i$i >> 31;
$771 = ($762 + $770) | 0;
$772 = $771 ^ $770;
$773 = ($772 + $$01$i$i) | 0;
$774 = (($773 | 0) / ($$0$i$i | 0)) & -1;
$775 = HEAP32[$743 >> 2] | 0;
$776 = ($775 + $774) | 0;
$778 = $769;
$780 = $776;
}
$777 = $778 >> 2;
$779 = $780 >> 2;
$781 = ($779 | 0) >= ($_height | 0);
$782 = $781 ? $696 : $779;
$783 = ($782 | 0) > 0;
$784 = $783 ? $782 : 0;
$785 = Math_imul($784, $_width) | 0;
$786 = ($777 | 0) >= ($_width | 0);
$787 = $786 ? $697 : $777;
$788 = ($787 | 0) > 0;
$789 = $788 ? $787 : 0;
$790 = ($785 + $789) | 0;
$791 = ($_img + $790) | 0;
$792 = HEAP8[$791 >> 0] | 0;
$793 = ($792 << 24) >> 24 != 0;
$794 = $793 & 1;
$795 = $794 << $749;
$796 = ($518 + ($746 << 2)) | 0;
$797 = HEAP32[$796 >> 2] | 0;
$798 = $795 ^ $797;
HEAP32[$796 >> 2] = $798;
}
$799 = ($x$01$i + $721) | 0;
$800 = ($y$02$i + $719) | 0;
$801 = ($w$03$i + $717) | 0;
$802 = ($v$04$i + 1) | 0;
$exitcond$i7 = ($802 | 0) == ($702 | 0);
if ($exitcond$i7) {
break;
} else {
$v$04$i = $802;
$w$03$i = $801;
$x$01$i = $799;
$y$02$i = $800;
}
}
}
$803 = ($x0$05$i + $722) | 0;
$804 = ($y0$06$i + $720) | 0;
$805 = ($w0$07$i + $718) | 0;
$806 = ($u$08$i + 1) | 0;
$exitcond25$i = ($806 | 0) == ($699 | 0);
if ($exitcond25$i) {
break;
} else {
$u$08$i = $806;
$w0$07$i = $805;
$x0$05$i = $803;
$y0$06$i = $804;
}
}
}
$807 = ($i$011$i + 1) | 0;
$exitcond = ($807 | 0) == ($447 | 0);
if ($exitcond) {
break;
} else {
$i$011$i = $807;
$v0$010$i = $702;
}
}
$808 = ($j$015$i + 1) | 0;
$exitcond112 = ($808 | 0) == ($447 | 0);
if ($exitcond112) {
break;
} else {
$j$015$i = $808;
$u0$017$i = $699;
}
}
}
$809 = $_fmt_info >> 3;
$810 = $809 ^ 1;
$811 = ($_version + -1) | 0;
$812 = (((7296 + ($811 << 2)) | 0) + $810) | 0;
$813 = HEAP8[$812 >> 0] | 0;
$814 = $813 & 255;
$815 = (7528 + $811) | 0;
$816 = HEAP8[$815 >> 0] | 0;
$817 = $816 & 255;
$$sum = ($817 + $810) | 0;
$818 = (7456 + $$sum) | 0;
$819 = HEAP8[$818 >> 0] | 0;
$820 = $819 & 255;
$821 = ($_version | 0) == 1;
if ($821) {
$$0$i = 26;
} else {
$822 = (($_version >>> 0) / 7) & -1;
$823 = $_version << 4;
$824 = ($_version + 8) | 0;
$825 = Math_imul($823, $824) | 0;
$826 = ($822 * 5) | 0;
$827 = ($826 + 10) | 0;
$828 = ($826 + 8) | 0;
$829 = Math_imul($827, $828) | 0;
$830 = $_version >>> 0 < 7;
$831 = $830 ? 36 : 0;
$832 = ($825 + 83) | 0;
$833 = ($832 + $831) | 0;
$834 = ($833 - $829) | 0;
$835 = $834 >>> 3;
$$0$i = $835;
}
$836 = (($$0$i >>> 0) / ($814 >>> 0)) & -1;
$837 = ($$0$i >>> 0) % ($814 >>> 0) & -1;
$838 = ($814 - $837) | 0;
$839 = $814 << 2;
$840 = _malloc($839) | 0;
$841 = _malloc($$0$i) | 0;
HEAP32[$840 >> 2] = $841;
$842 = ($813 & 255) > 1;
if ($842) {
$846 = $841;
$i$069 = 1;
while (1) {
$843 = ($i$069 | 0) > ($838 | 0);
$844 = $843 & 1;
$$sum1 = ($844 + $836) | 0;
$845 = ($846 + $$sum1) | 0;
$847 = ($840 + ($i$069 << 2)) | 0;
HEAP32[$847 >> 2] = $845;
$848 = ($i$069 + 1) | 0;
$849 = ($848 | 0) < ($814 | 0);
if ($849) {
$846 = $845;
$i$069 = $848;
} else {
break;
}
}
}
$850 = ($836 - $820) | 0;
$851 = HEAP32[$38 >> 2] | 0;
$852 = ($837 | 0) != 0;
$_nshort_blocks$$i = $852 ? $838 : 0;
$853 = ($4 | 0) > 0;
if ($853) {
$854 = $4 & 28;
$855 = $854 | 1;
$856 = ($35 | 0) > 0;
$biti$037$i = 0;
$bits$036$i = 0;
$blocki$038$i = 0;
$blockj$039$i = 0;
$j$040$i = $4;
while (1) {
$857 = Math_imul($j$040$i, $35) | 0;
if ($856) {
$$in$i = $35;
$biti$16$i = $biti$037$i;
$bits$15$i = $bits$036$i;
$blocki$17$i = $blocki$038$i;
$blockj$18$i = $blockj$039$i;
$nbits$09$i = $855;
while (1) {
$861 = ($$in$i + -1) | 0;
$863 = ($861 + $857) | 0;
$864 = ($518 + ($863 << 2)) | 0;
$865 = HEAP32[$864 >> 2] | 0;
$866 = ($851 + ($863 << 2)) | 0;
$867 = HEAP32[$866 >> 2] | 0;
$868 = ($863 - $35) | 0;
$869 = ($518 + ($868 << 2)) | 0;
$870 = HEAP32[$869 >> 2] | 0;
$871 = ($851 + ($868 << 2)) | 0;
$872 = HEAP32[$871 >> 2] | 0;
$biti$2$ph$ph$i = $biti$16$i;
$bits$2$ph$ph$i = $bits$15$i;
$blocki$2$ph$ph$i = $blocki$17$i;
$blockj$2$ph$ph$i = $blockj$18$i;
$nbits$1$ph$ph$i = $nbits$09$i;
L177: while (1) {
$biti$2$ph$i = $biti$2$ph$ph$i;
$bits$2$ph$i = $bits$2$ph$ph$i;
$blocki$2$ph$i = $blocki$2$ph$ph$i;
$nbits$1$ph$i = $nbits$1$ph$ph$i;
while (1) {
$biti$2$i = $biti$2$ph$i;
$bits$2$i = $bits$2$ph$i;
$nbits$1$i = $nbits$1$ph$i;
while (1) {
$873 = ($nbits$1$i + -1) | 0;
$874 = ($nbits$1$i | 0) > 0;
if (!$874) {
break L177;
}
$875 = 1 << $873;
$876 = $875 & $867;
$877 = ($876 | 0) == 0;
if ($877) {
$878 = $bits$2$i << 1;
$879 = $865 >>> $873;
$880 = $879 & 1;
$881 = $880 | $878;
$882 = ($biti$2$i + 1) | 0;
$biti$3$i = $882;
$bits$3$i = $881;
} else {
$biti$3$i = $biti$2$i;
$bits$3$i = $bits$2$i;
}
$883 = $875 & $872;
$884 = ($883 | 0) == 0;
if ($884) {
$885 = $bits$3$i << 1;
$886 = $870 >>> $873;
$887 = $886 & 1;
$888 = $885 | $887;
$889 = ($biti$3$i + 1) | 0;
$biti$4$i = $889;
$bits$4$i = $888;
} else {
$biti$4$i = $biti$3$i;
$bits$4$i = $bits$3$i;
}
$890 = ($biti$4$i | 0) > 7;
if ($890) {
break;
} else {
$biti$2$i = $biti$4$i;
$bits$2$i = $bits$4$i;
$nbits$1$i = $873;
}
}
$891 = ($biti$4$i + -8) | 0;
$892 = $bits$4$i >>> $891;
$893 = $892 & 255;
$894 = ($blocki$2$ph$i + 1) | 0;
$895 = ($840 + ($blocki$2$ph$i << 2)) | 0;
$896 = HEAP32[$895 >> 2] | 0;
$897 = ($896 + 1) | 0;
HEAP32[$895 >> 2] = $897;
HEAP8[$896 >> 0] = $893;
$898 = ($894 | 0) < ($814 | 0);
if ($898) {
$biti$2$ph$i = $891;
$bits$2$ph$i = $bits$4$i;
$blocki$2$ph$i = $894;
$nbits$1$ph$i = $873;
} else {
break;
}
}
$899 = ($blockj$2$ph$ph$i + 1) | 0;
$900 = ($899 | 0) == ($850 | 0);
$901 = $900 ? $_nshort_blocks$$i : 0;
$biti$2$ph$ph$i = $891;
$bits$2$ph$ph$i = $bits$4$i;
$blocki$2$ph$ph$i = $901;
$blockj$2$ph$ph$i = $899;
$nbits$1$ph$ph$i = $873;
}
$862 = ($861 | 0) > 0;
if ($862) {
$$in$i = $861;
$biti$16$i = $biti$2$i;
$bits$15$i = $bits$2$i;
$blocki$17$i = $blocki$2$ph$i;
$blockj$18$i = $blockj$2$ph$ph$i;
$nbits$09$i = 32;
} else {
break;
}
}
$902 = ($j$040$i + -2) | 0;
$903 = ($902 | 0) == 6;
$904 = ($j$040$i + -3) | 0;
$$$i = $903 ? $904 : $902;
$905 = Math_imul($$$i, $35) | 0;
$biti$525$i = $biti$2$i;
$bits$524$i = $bits$2$i;
$blocki$326$i = $blocki$2$ph$i;
$blockj$327$i = $blockj$2$ph$ph$i;
$i$128$i = 0;
while (1) {
$906 = ($i$128$i + $905) | 0;
$907 = ($518 + ($906 << 2)) | 0;
$908 = HEAP32[$907 >> 2] | 0;
$909 = ($851 + ($906 << 2)) | 0;
$910 = HEAP32[$909 >> 2] | 0;
$911 = ($906 - $35) | 0;
$912 = ($518 + ($911 << 2)) | 0;
$913 = HEAP32[$912 >> 2] | 0;
$914 = ($851 + ($911 << 2)) | 0;
$915 = HEAP32[$914 >> 2] | 0;
$916 = $i$128$i << 5;
$917 = ($1 - $916) | 0;
$918 = ($917 | 0) > 32;
$919 = $918 ? 32 : $917;
$biti$6$ph$ph$i = $biti$525$i;
$bits$6$ph$ph$i = $bits$524$i;
$blocki$4$ph$ph$i = $blocki$326$i;
$blockj$4$ph$ph$i = $blockj$327$i;
$data1$0$ph$ph$i = $908;
$data2$0$ph$ph$i = $913;
$fp_mask1$0$ph$ph$i = $910;
$fp_mask2$0$ph$ph$i = $915;
$nbits$2$ph$ph$i = $919;
L196: while (1) {
$biti$6$ph$i = $biti$6$ph$ph$i;
$bits$6$ph$i = $bits$6$ph$ph$i;
$blocki$4$ph$i = $blocki$4$ph$ph$i;
$data1$0$ph$i = $data1$0$ph$ph$i;
$data2$0$ph$i = $data2$0$ph$ph$i;
$fp_mask1$0$ph$i = $fp_mask1$0$ph$ph$i;
$fp_mask2$0$ph$i = $fp_mask2$0$ph$ph$i;
$nbits$2$ph$i = $nbits$2$ph$ph$i;
while (1) {
$biti$6$i = $biti$6$ph$i;
$bits$6$i = $bits$6$ph$i;
$data1$0$i = $data1$0$ph$i;
$data2$0$i = $data2$0$ph$i;
$fp_mask1$0$i = $fp_mask1$0$ph$i;
$fp_mask2$0$i = $fp_mask2$0$ph$i;
$nbits$2$i = $nbits$2$ph$i;
while (1) {
$920 = ($nbits$2$i + -1) | 0;
$921 = ($nbits$2$i | 0) > 0;
if (!$921) {
break L196;
}
$922 = $fp_mask1$0$i & 1;
$923 = ($922 | 0) == 0;
if ($923) {
$924 = $bits$6$i << 1;
$925 = $data1$0$i & 1;
$926 = $925 | $924;
$927 = ($biti$6$i + 1) | 0;
$biti$7$i = $927;
$bits$7$i = $926;
} else {
$biti$7$i = $biti$6$i;
$bits$7$i = $bits$6$i;
}
$928 = $data1$0$i >>> 1;
$929 = $fp_mask1$0$i >>> 1;
$930 = $fp_mask2$0$i & 1;
$931 = ($930 | 0) == 0;
if ($931) {
$932 = $bits$7$i << 1;
$933 = $data2$0$i & 1;
$934 = $932 | $933;
$935 = ($biti$7$i + 1) | 0;
$biti$8$i = $935;
$bits$8$i = $934;
} else {
$biti$8$i = $biti$7$i;
$bits$8$i = $bits$7$i;
}
$936 = $data2$0$i >>> 1;
$937 = $fp_mask2$0$i >>> 1;
$938 = ($biti$8$i | 0) > 7;
if ($938) {
break;
} else {
$biti$6$i = $biti$8$i;
$bits$6$i = $bits$8$i;
$data1$0$i = $928;
$data2$0$i = $936;
$fp_mask1$0$i = $929;
$fp_mask2$0$i = $937;
$nbits$2$i = $920;
}
}
$939 = ($biti$8$i + -8) | 0;
$940 = $bits$8$i >>> $939;
$941 = $940 & 255;
$942 = ($blocki$4$ph$i + 1) | 0;
$943 = ($840 + ($blocki$4$ph$i << 2)) | 0;
$944 = HEAP32[$943 >> 2] | 0;
$945 = ($944 + 1) | 0;
HEAP32[$943 >> 2] = $945;
HEAP8[$944 >> 0] = $941;
$946 = ($942 | 0) < ($814 | 0);
if ($946) {
$biti$6$ph$i = $939;
$bits$6$ph$i = $bits$8$i;
$blocki$4$ph$i = $942;
$data1$0$ph$i = $928;
$data2$0$ph$i = $936;
$fp_mask1$0$ph$i = $929;
$fp_mask2$0$ph$i = $937;
$nbits$2$ph$i = $920;
} else {
break;
}
}
$947 = ($blockj$4$ph$ph$i + 1) | 0;
$948 = ($947 | 0) == ($850 | 0);
$949 = $948 ? $_nshort_blocks$$i : 0;
$biti$6$ph$ph$i = $939;
$bits$6$ph$ph$i = $bits$8$i;
$blocki$4$ph$ph$i = $949;
$blockj$4$ph$ph$i = $947;
$data1$0$ph$ph$i = $928;
$data2$0$ph$ph$i = $936;
$fp_mask1$0$ph$ph$i = $929;
$fp_mask2$0$ph$ph$i = $937;
$nbits$2$ph$ph$i = $920;
}
$950 = ($i$128$i + 1) | 0;
$exitcond$i12 = ($950 | 0) == ($35 | 0);
if ($exitcond$i12) {
$$59$i = $$$i;
$biti$5$lcssa$i = $biti$6$i;
$bits$5$lcssa$i = $bits$6$i;
$blocki$3$lcssa$i = $blocki$4$ph$i;
$blockj$3$lcssa$i = $blockj$4$ph$ph$i;
break;
} else {
$biti$525$i = $biti$6$i;
$bits$524$i = $bits$6$i;
$blocki$326$i = $blocki$4$ph$i;
$blockj$327$i = $blockj$4$ph$ph$i;
$i$128$i = $950;
}
}
} else {
$858 = ($j$040$i + -2) | 0;
$859 = ($858 | 0) == 6;
$860 = ($j$040$i + -3) | 0;
$$58$i = $859 ? $860 : $858;
$$59$i = $$58$i;
$biti$5$lcssa$i = $biti$037$i;
$bits$5$lcssa$i = $bits$036$i;
$blocki$3$lcssa$i = $blocki$038$i;
$blockj$3$lcssa$i = $blockj$039$i;
}
$951 = ($$59$i + -2) | 0;
$952 = ($951 | 0) > 0;
if ($952) {
$biti$037$i = $biti$5$lcssa$i;
$bits$036$i = $bits$5$lcssa$i;
$blocki$038$i = $blocki$3$lcssa$i;
$blockj$039$i = $blockj$3$lcssa$i;
$j$040$i = $951;
} else {
break;
}
}
}
_free($851);
_free($446);
_free($840);
_free($518);
$953 = ($813 << 24) >> 24 == 0;
do {
if ($953) {
$ndata$0$lcssa116 = 0;
} else {
$954 = $810 << 1;
$955 = ($954 + 2) | 0;
$$old = ($809 | 0) == 1;
$i$149 = 0;
$ncodewords$051 = 0;
$ndata$050 = 0;
while (1) {
$956 = ($i$149 | 0) >= ($838 | 0);
$957 = $956 & 1;
$958 = ($957 + $836) | 0;
$959 = ($841 + $ncodewords$051) | 0;
$960 = _rs_correct($_gf, 0, $959, $958, $820, 0, 0) | 0;
$961 = ($960 | 0) < 0;
if ($961) {
$ret$2 = -1;
label = 288;
break;
}
if (($_version | 0) == 1) {
$962 = ($960 | 0) > ($955 | 0);
if ($962) {
$ret$2 = -1;
label = 288;
break;
}
} else if (($_version | 0) == 2) {
$$old2 = ($960 | 0) > 4;
$or$cond4 = $$old & $$old2;
if ($or$cond4) {
$ret$2 = -1;
label = 288;
break;
}
}
$963 = ($958 - $820) | 0;
$964 = ($841 + $ndata$050) | 0;
_memmove($964 | 0, $959 | 0, $963 | 0) | 0;
$965 = ($ncodewords$051 + $958) | 0;
$966 = ($963 + $ndata$050) | 0;
$967 = ($i$149 + 1) | 0;
$968 = ($967 | 0) < ($814 | 0);
if ($968) {
$i$149 = $967;
$ncodewords$051 = $965;
$ndata$050 = $966;
} else {
label = 142;
break;
}
}
if ((label | 0) == 142) {
$969 = ($960 | 0) > -1;
if ($969) {
$ndata$0$lcssa116 = $966;
break;
} else {
$ret$2 = $960;
}
_free($841);
STACKTOP = sp;
return $ret$2 | 0;
} else if ((label | 0) == 288) {
_free($841);
STACKTOP = sp;
return $ret$2 | 0;
}
}
} while (0);
HEAP32[$_qrdata >> 2] = 0;
$970 = ($_qrdata + 4) | 0;
HEAP32[$970 >> 2] = 0;
$971 = ($_qrdata + 11) | 0;
HEAP8[$971 >> 0] = 0;
$972 = ($_version | 0) > 9;
$973 = $972 & 1;
$974 = ($_version | 0) > 26;
$975 = $974 & 1;
$976 = ($973 + $975) | 0;
$977 = $ndata$0$lcssa116 << 3;
$978 = ($977 | 0) > 3;
do {
if ($978) {
$979 = (7568 + ($976 << 2)) | 0;
$980 = (((7568 + ($976 << 2)) | 0) + 1) | 0;
$981 = ($_qrdata + 10) | 0;
$982 = ($_qrdata + 12) | 0;
$983 = (((7568 + ($976 << 2)) | 0) + 2) | 0;
$984 = (((7568 + ($976 << 2)) | 0) + 3) | 0;
$986 = 0;
$987 = $ndata$0$lcssa116;
$993 = 0;
$centries$0197$i = 0;
$self_parity$0198$i = 0;
L232: while (1) {
$985 = ($986 + 4) | 0;
$988 = ($987 | 0) < 3;
if ($988) {
$989 = $987 << 3;
$990 = ($989 | 0) < ($985 | 0);
if ($990) {
$$0$i102105$i = -1;
} else {
$991 = ($985 | 0) == 0;
if ($991) {
$self_parity$0$lcssa$i$ph = $self_parity$0198$i;
label = 280;
break;
} else {
label = 148;
}
}
} else {
label = 148;
}
if ((label | 0) == 148) {
label = 0;
$992 = ($841 + $993) | 0;
$994 = HEAP8[$992 >> 0] | 0;
$995 = $994 & 255;
$996 = ($986 + 8) | 0;
$997 = $995 << $996;
$998 = ($985 | 0) > 8;
if ($998) {
$$sum$i99$i = ($993 + 1) | 0;
$999 = ($841 + $$sum$i99$i) | 0;
$1000 = HEAP8[$999 >> 0] | 0;
$1001 = $1000 & 255;
$1002 = $1001 << $986;
$1003 = $1002 | $997;
$1004 = ($985 | 0) > 16;
if ($1004) {
$$sum1$i100$i = ($993 + 2) | 0;
$1005 = ($841 + $$sum1$i100$i) | 0;
$1006 = HEAP8[$1005 >> 0] | 0;
$1007 = $1006 & 255;
$1008 = (8 - $986) | 0;
$1009 = $1007 >>> $1008;
$1010 = $1009 | $1003;
$ret$0$i101$i = $1010;
} else {
$ret$0$i101$i = $1003;
}
} else {
$ret$0$i101$i = $997;
}
$1011 = $ret$0$i101$i >>> 12;
$1012 = $1011 & 15;
$1013 = ($1012 | 0) == 0;
if ($1013) {
$self_parity$0$lcssa$i$ph = $self_parity$0198$i;
label = 280;
break;
} else {
$$0$i102105$i = $1012;
}
}
$$pn$i = $985 >> 3;
$1014 = $985 & 7;
$1015 = ($$pn$i + $993) | 0;
$1016 = HEAP32[$970 >> 2] | 0;
$1017 = ($1016 | 0) < ($centries$0197$i | 0);
if ($1017) {
$$pre223$i = HEAP32[$_qrdata >> 2] | 0;
$1024 = $1016;
$1026 = $$pre223$i;
$centries$1$i = $centries$0197$i;
} else {
$1018 = $centries$0197$i << 1;
$1019 = $1018 | 1;
$1020 = HEAP32[$_qrdata >> 2] | 0;
$1021 = ($1019 * 12) | 0;
$1022 = _realloc($1020, $1021) | 0;
HEAP32[$_qrdata >> 2] = $1022;
$$pre$i13 = HEAP32[$970 >> 2] | 0;
$1024 = $$pre$i13;
$1026 = $1022;
$centries$1$i = $1019;
}
$1023 = ($1024 + 1) | 0;
HEAP32[$970 >> 2] = $1023;
$1025 = ($1026 + (($1024 * 12) | 0)) | 0;
HEAP32[$1025 >> 2] = $$0$i102105$i;
$1027 = ((($1026 + (($1024 * 12) | 0)) | 0) + 4) | 0;
HEAP32[$1027 >> 2] = 0;
L248: do {
switch ($$0$i102105$i | 0) {
case 1: {
$1028 = HEAP8[$979 >> 0] | 0;
$1029 = $1028 & 255;
$1030 = (16 - $1029) | 0;
$1031 = ($1029 + $1014) | 0;
$1032 = ($ndata$0$lcssa116 - $1015) | 0;
$1033 = ($1032 | 0) < 3;
if ($1033) {
$1034 = $1032 << 3;
$1035 = ($1034 | 0) < ($1031 | 0);
if ($1035) {
break L232;
}
$1036 = ($1031 | 0) == 0;
if ($1036) {
$$0$i97107$i = 0;
$1064 = $1015;
$1067 = $1014;
} else {
label = 159;
}
} else {
label = 159;
}
if ((label | 0) == 159) {
label = 0;
$1037 = ($841 + $1015) | 0;
$1038 = HEAP8[$1037 >> 0] | 0;
$1039 = $1038 & 255;
$1040 = $1014 | 8;
$1041 = $1039 << $1040;
$1042 = ($1031 | 0) > 8;
if ($1042) {
$$sum$i94$i = ($1015 + 1) | 0;
$1043 = ($841 + $$sum$i94$i) | 0;
$1044 = HEAP8[$1043 >> 0] | 0;
$1045 = $1044 & 255;
$1046 = $1045 << $1014;
$1047 = $1046 | $1041;
$1048 = ($1031 | 0) > 16;
if ($1048) {
$$sum1$i95$i = ($1015 + 2) | 0;
$1049 = ($841 + $$sum1$i95$i) | 0;
$1050 = HEAP8[$1049 >> 0] | 0;
$1051 = $1050 & 255;
$1052 = (8 - $1014) | 0;
$1053 = $1051 >>> $1052;
$1054 = $1053 | $1047;
$ret$0$i96$i = $1054;
} else {
$ret$0$i96$i = $1047;
}
} else {
$ret$0$i96$i = $1041;
}
$1055 = $1031 >>> 3;
$1056 = ($1055 + $1015) | 0;
$fold137$i = ($1029 + $985) | 0;
$1057 = $fold137$i & 7;
$1058 = $ret$0$i96$i & 65535;
$1059 = $1058 >>> $1030;
$1060 = ($1059 | 0) < 0;
if ($1060) {
break L232;
} else {
$$0$i97107$i = $1059;
$1064 = $1056;
$1067 = $1057;
}
}
$1061 = (($$0$i97107$i | 0) / 3) & -1;
$1062 = ($$0$i97107$i | 0) % 3 & -1;
$1063 = ($ndata$0$lcssa116 - $1064) | 0;
$1065 = $1063 << 3;
$1066 = ($1065 - $1067) | 0;
$1068 = ($1061 * 10) | 0;
$1069 = $1062 >>> 1;
$1070 = $1069 & 1;
$1071 = (0 - $1070) | 0;
$1072 = $1071 & 7;
$1073 = $1062 << 2;
$1074 = $1073 & 4;
$1075 = ($1074 + $1068) | 0;
$1076 = ($1075 + $1072) | 0;
$1077 = ($1066 | 0) < ($1076 | 0);
if ($1077) {
break L232;
}
$1078 = _malloc($$0$i97107$i) | 0;
HEAP32[$1027 >> 2] = $1078;
$1079 = ((($1026 + (($1024 * 12) | 0)) | 0) + 8) | 0;
HEAP32[$1079 >> 2] = $$0$i97107$i;
$1080 = ($$0$i97107$i | 0) > 2;
if ($1080) {
$$in204$i = $1061;
$1083 = $1067;
$1085 = $1064;
$buf$0183$i = $1078;
$self_parity$1184$i = $self_parity$0198$i;
while (1) {
$1081 = ($$in204$i + -1) | 0;
$1082 = ($1083 + 10) | 0;
$1084 = ($ndata$0$lcssa116 - $1085) | 0;
$1086 = ($1084 | 0) < 3;
if ($1086) {
$1087 = $1084 << 3;
$1088 = ($1087 | 0) < ($1082 | 0);
if ($1088) {
break L232;
}
$1089 = ($1082 | 0) == 0;
if ($1089) {
$$0$i92109$i = 0;
$1652 = $1085;
$1653 = $1083;
} else {
label = 168;
}
} else {
label = 168;
}
if ((label | 0) == 168) {
label = 0;
$1090 = ($841 + $1085) | 0;
$1091 = HEAP8[$1090 >> 0] | 0;
$1092 = $1091 & 255;
$1093 = ($1083 + 8) | 0;
$1094 = $1092 << $1093;
$1095 = ($1082 | 0) > 8;
do {
if ($1095) {
$$sum$i89$i = ($1085 + 1) | 0;
$1096 = ($841 + $$sum$i89$i) | 0;
$1097 = HEAP8[$1096 >> 0] | 0;
$1098 = $1097 & 255;
$1099 = $1098 << $1083;
$1100 = $1099 | $1094;
$1101 = ($1082 | 0) > 16;
if (!$1101) {
$ret$0$i91$i = $1100;
break;
}
$$sum1$i90$i = ($1085 + 2) | 0;
$1102 = ($841 + $$sum1$i90$i) | 0;
$1103 = HEAP8[$1102 >> 0] | 0;
$1104 = $1103 & 255;
$1105 = (8 - $1083) | 0;
$1106 = $1104 >>> $1105;
$1107 = $1106 | $1100;
$ret$0$i91$i = $1107;
} else {
$ret$0$i91$i = $1094;
}
} while (0);
$1108 = $1082 >> 3;
$1109 = ($1108 + $1085) | 0;
$1110 = $1082 & 7;
$1111 = $ret$0$i91$i >>> 6;
$1112 = $1111 & 1023;
$1113 = $1112 >>> 0 > 999;
if ($1113) {
break L232;
} else {
$$0$i92109$i = $1112;
$1652 = $1109;
$1653 = $1110;
}
}
$1114 = (($$0$i92109$i >>> 0) / 100) & -1;
$1115 = $1114 | 48;
$1116 = $1115 ^ $self_parity$1184$i;
$1117 = $1115 & 255;
$1118 = ($buf$0183$i + 1) | 0;
HEAP8[$buf$0183$i >> 0] = $1117;
$1119 = ($$0$i92109$i >>> 0) % 100 & -1;
$1120 = (($1119 >>> 0) / 10) & -1;
$1121 = $1120 | 48;
$1122 = $1116 ^ $1121;
$1123 = $1121 & 255;
$1124 = ($buf$0183$i + 2) | 0;
HEAP8[$1118 >> 0] = $1123;
$1125 = ($1119 >>> 0) % 10 & -1;
$1126 = $1125 | 48;
$1127 = $1122 ^ $1126;
$1128 = $1126 & 255;
$1129 = ($buf$0183$i + 3) | 0;
HEAP8[$1124 >> 0] = $1128;
$1130 = ($1081 | 0) > 0;
if ($1130) {
$$in204$i = $1081;
$1083 = $1653;
$1085 = $1652;
$buf$0183$i = $1129;
$self_parity$1184$i = $1127;
} else {
$$lcssa177$i = $1653;
$$lcssa179$i = $1652;
$buf$0$lcssa$i = $1129;
$self_parity$1$lcssa$i = $1127;
break;
}
}
} else {
$$lcssa177$i = $1067;
$$lcssa179$i = $1064;
$buf$0$lcssa$i = $1078;
$self_parity$1$lcssa$i = $self_parity$0198$i;
}
$1131 = ($1062 | 0) > 1;
if ($1131) {
$1132 = ($$lcssa177$i + 7) | 0;
$1133 = ($ndata$0$lcssa116 - $$lcssa179$i) | 0;
$1134 = ($1133 | 0) < 3;
if ($1134) {
$1135 = $1133 << 3;
$1136 = ($1135 | 0) < ($1132 | 0);
if ($1136) {
break L232;
}
$1137 = ($1132 | 0) == 0;
if ($1137) {
$$0$i87111$i = 0;
$1654 = $$lcssa179$i;
$1655 = $$lcssa177$i;
} else {
label = 177;
}
} else {
label = 177;
}
if ((label | 0) == 177) {
label = 0;
$1138 = ($841 + $$lcssa179$i) | 0;
$1139 = HEAP8[$1138 >> 0] | 0;
$1140 = $1139 & 255;
$1141 = ($$lcssa177$i + 8) | 0;
$1142 = $1140 << $1141;
$1143 = ($1132 | 0) > 8;
do {
if ($1143) {
$$sum$i84$i = ($$lcssa179$i + 1) | 0;
$1144 = ($841 + $$sum$i84$i) | 0;
$1145 = HEAP8[$1144 >> 0] | 0;
$1146 = $1145 & 255;
$1147 = $1146 << $$lcssa177$i;
$1148 = $1147 | $1142;
$1149 = ($1132 | 0) > 16;
if (!$1149) {
$ret$0$i86$i = $1148;
break;
}
$$sum1$i85$i = ($$lcssa179$i + 2) | 0;
$1150 = ($841 + $$sum1$i85$i) | 0;
$1151 = HEAP8[$1150 >> 0] | 0;
$1152 = $1151 & 255;
$1153 = (8 - $$lcssa177$i) | 0;
$1154 = $1152 >>> $1153;
$1155 = $1154 | $1148;
$ret$0$i86$i = $1155;
} else {
$ret$0$i86$i = $1142;
}
} while (0);
$1156 = $1132 >> 3;
$1157 = ($1156 + $$lcssa179$i) | 0;
$1158 = $1132 & 7;
$1159 = $ret$0$i86$i >>> 9;
$1160 = $1159 & 127;
$1161 = $1160 >>> 0 > 99;
if ($1161) {
break L232;
} else {
$$0$i87111$i = $1160;
$1654 = $1157;
$1655 = $1158;
}
}
$1162 = (($$0$i87111$i >>> 0) / 10) & -1;
$1163 = $1162 | 48;
$1164 = $1163 ^ $self_parity$1$lcssa$i;
$1165 = $1163 & 255;
$1166 = ($buf$0$lcssa$i + 1) | 0;
HEAP8[$buf$0$lcssa$i >> 0] = $1165;
$1167 = ($$0$i87111$i >>> 0) % 10 & -1;
$1168 = $1167 | 48;
$1169 = $1164 ^ $1168;
$1170 = $1168 & 255;
HEAP8[$1166 >> 0] = $1170;
$$be$i = $1655;
$$be193$i = $1654;
$self_parity$0$be$i = $1169;
break L248;
}
$1171 = ($1062 | 0) == 0;
if ($1171) {
$$be$i = $$lcssa177$i;
$$be193$i = $$lcssa179$i;
$self_parity$0$be$i = $self_parity$1$lcssa$i;
} else {
$1172 = ($$lcssa177$i + 4) | 0;
$1173 = ($ndata$0$lcssa116 - $$lcssa179$i) | 0;
$1174 = ($1173 | 0) < 3;
if ($1174) {
$1175 = $1173 << 3;
$1176 = ($1175 | 0) < ($1172 | 0);
if ($1176) {
break L232;
}
$1177 = ($1172 | 0) == 0;
if ($1177) {
$$0$i82113$i = 0;
$1656 = $$lcssa179$i;
$1657 = $$lcssa177$i;
} else {
label = 186;
}
} else {
label = 186;
}
if ((label | 0) == 186) {
label = 0;
$1178 = ($841 + $$lcssa179$i) | 0;
$1179 = HEAP8[$1178 >> 0] | 0;
$1180 = $1179 & 255;
$1181 = ($$lcssa177$i + 8) | 0;
$1182 = $1180 << $1181;
$1183 = ($1172 | 0) > 8;
do {
if ($1183) {
$$sum$i79$i = ($$lcssa179$i + 1) | 0;
$1184 = ($841 + $$sum$i79$i) | 0;
$1185 = HEAP8[$1184 >> 0] | 0;
$1186 = $1185 & 255;
$1187 = $1186 << $$lcssa177$i;
$1188 = $1187 | $1182;
$1189 = ($1172 | 0) > 16;
if (!$1189) {
$ret$0$i81$i = $1188;
break;
}
$$sum1$i80$i = ($$lcssa179$i + 2) | 0;
$1190 = ($841 + $$sum1$i80$i) | 0;
$1191 = HEAP8[$1190 >> 0] | 0;
$1192 = $1191 & 255;
$1193 = (8 - $$lcssa177$i) | 0;
$1194 = $1192 >>> $1193;
$1195 = $1194 | $1188;
$ret$0$i81$i = $1195;
} else {
$ret$0$i81$i = $1182;
}
} while (0);
$1196 = $1172 >> 3;
$1197 = ($1196 + $$lcssa179$i) | 0;
$1198 = $1172 & 7;
$1199 = $ret$0$i81$i >>> 12;
$1200 = $1199 & 15;
$1201 = $1200 >>> 0 > 9;
if ($1201) {
break L232;
} else {
$$0$i82113$i = $1200;
$1656 = $1197;
$1657 = $1198;
}
}
$1202 = $$0$i82113$i | 48;
$1203 = $1202 ^ $self_parity$1$lcssa$i;
$1204 = $1202 & 255;
HEAP8[$buf$0$lcssa$i >> 0] = $1204;
$$be$i = $1657;
$$be193$i = $1656;
$self_parity$0$be$i = $1203;
}
break;
}
case 2: {
$1205 = HEAP8[$980 >> 0] | 0;
$1206 = $1205 & 255;
$1207 = (16 - $1206) | 0;
$1208 = ($1206 + $1014) | 0;
$1209 = ($ndata$0$lcssa116 - $1015) | 0;
$1210 = ($1209 | 0) < 3;
if ($1210) {
$1211 = $1209 << 3;
$1212 = ($1211 | 0) < ($1208 | 0);
if ($1212) {
break L232;
}
$1213 = ($1208 | 0) == 0;
if ($1213) {
$$0$i77115$i = 0;
$1241 = $1015;
$1244 = $1014;
} else {
label = 194;
}
} else {
label = 194;
}
if ((label | 0) == 194) {
label = 0;
$1214 = ($841 + $1015) | 0;
$1215 = HEAP8[$1214 >> 0] | 0;
$1216 = $1215 & 255;
$1217 = $1014 | 8;
$1218 = $1216 << $1217;
$1219 = ($1208 | 0) > 8;
if ($1219) {
$$sum$i74$i = ($1015 + 1) | 0;
$1220 = ($841 + $$sum$i74$i) | 0;
$1221 = HEAP8[$1220 >> 0] | 0;
$1222 = $1221 & 255;
$1223 = $1222 << $1014;
$1224 = $1223 | $1218;
$1225 = ($1208 | 0) > 16;
if ($1225) {
$$sum1$i75$i = ($1015 + 2) | 0;
$1226 = ($841 + $$sum1$i75$i) | 0;
$1227 = HEAP8[$1226 >> 0] | 0;
$1228 = $1227 & 255;
$1229 = (8 - $1014) | 0;
$1230 = $1228 >>> $1229;
$1231 = $1230 | $1224;
$ret$0$i76$i = $1231;
} else {
$ret$0$i76$i = $1224;
}
} else {
$ret$0$i76$i = $1218;
}
$1232 = $1208 >>> 3;
$1233 = ($1232 + $1015) | 0;
$fold136$i = ($1206 + $985) | 0;
$1234 = $fold136$i & 7;
$1235 = $ret$0$i76$i & 65535;
$1236 = $1235 >>> $1207;
$1237 = ($1236 | 0) < 0;
if ($1237) {
break L232;
} else {
$$0$i77115$i = $1236;
$1241 = $1233;
$1244 = $1234;
}
}
$1238 = $$0$i77115$i >> 1;
$1239 = $$0$i77115$i & 1;
$1240 = ($ndata$0$lcssa116 - $1241) | 0;
$1242 = $1240 << 3;
$1243 = ($1242 - $1244) | 0;
$1245 = ($1238 * 11) | 0;
$1246 = (0 - $1239) | 0;
$1247 = $1246 & 6;
$1248 = ($1245 + $1247) | 0;
$1249 = ($1243 | 0) < ($1248 | 0);
if ($1249) {
break L232;
}
$1250 = _malloc($$0$i77115$i) | 0;
HEAP32[$1027 >> 2] = $1250;
$1251 = ((($1026 + (($1024 * 12) | 0)) | 0) + 8) | 0;
HEAP32[$1251 >> 2] = $$0$i77115$i;
$1252 = ($1238 | 0) > 0;
if ($1252) {
$$in203$i = $1238;
$1255 = $1244;
$1257 = $1241;
$buf1$0169$i = $1250;
$self_parity$2170$i = $self_parity$0198$i;
while (1) {
$1253 = ($$in203$i + -1) | 0;
$1254 = ($1255 + 11) | 0;
$1256 = ($ndata$0$lcssa116 - $1257) | 0;
$1258 = ($1256 | 0) < 3;
if ($1258) {
$1259 = $1256 << 3;
$1260 = ($1259 | 0) < ($1254 | 0);
if ($1260) {
break L232;
}
$1261 = ($1254 | 0) == 0;
if ($1261) {
$$0$i72117$i = 0;
$1658 = $1257;
$1659 = $1255;
} else {
label = 203;
}
} else {
label = 203;
}
if ((label | 0) == 203) {
label = 0;
$1262 = ($841 + $1257) | 0;
$1263 = HEAP8[$1262 >> 0] | 0;
$1264 = $1263 & 255;
$1265 = ($1255 + 8) | 0;
$1266 = $1264 << $1265;
$1267 = ($1254 | 0) > 8;
do {
if ($1267) {
$$sum$i69$i = ($1257 + 1) | 0;
$1268 = ($841 + $$sum$i69$i) | 0;
$1269 = HEAP8[$1268 >> 0] | 0;
$1270 = $1269 & 255;
$1271 = $1270 << $1255;
$1272 = $1271 | $1266;
$1273 = ($1254 | 0) > 16;
if (!$1273) {
$ret$0$i71$i = $1272;
break;
}
$$sum1$i70$i = ($1257 + 2) | 0;
$1274 = ($841 + $$sum1$i70$i) | 0;
$1275 = HEAP8[$1274 >> 0] | 0;
$1276 = $1275 & 255;
$1277 = (8 - $1255) | 0;
$1278 = $1276 >>> $1277;
$1279 = $1278 | $1272;
$ret$0$i71$i = $1279;
} else {
$ret$0$i71$i = $1266;
}
} while (0);
$1280 = $1254 >> 3;
$1281 = ($1280 + $1257) | 0;
$1282 = $1254 & 7;
$1283 = $ret$0$i71$i >>> 5;
$1284 = $1283 & 2047;
$1285 = $1284 >>> 0 > 2024;
if ($1285) {
break L232;
} else {
$$0$i72117$i = $1284;
$1658 = $1281;
$1659 = $1282;
}
}
$1286 = (($$0$i72117$i >>> 0) / 45) & -1;
$1287 = (7584 + $1286) | 0;
$1288 = HEAP8[$1287 >> 0] | 0;
$1289 = $1288 & 255;
$1290 = $1289 ^ $self_parity$2170$i;
$1291 = ($buf1$0169$i + 1) | 0;
HEAP8[$buf1$0169$i >> 0] = $1288;
$1292 = ($$0$i72117$i >>> 0) % 45 & -1;
$1293 = (7584 + $1292) | 0;
$1294 = HEAP8[$1293 >> 0] | 0;
$1295 = $1294 & 255;
$1296 = $1290 ^ $1295;
$1297 = ($buf1$0169$i + 2) | 0;
HEAP8[$1291 >> 0] = $1294;
$1298 = ($1253 | 0) > 0;
if ($1298) {
$$in203$i = $1253;
$1255 = $1659;
$1257 = $1658;
$buf1$0169$i = $1297;
$self_parity$2170$i = $1296;
} else {
$$lcssa163$i = $1659;
$$lcssa165$i = $1658;
$buf1$0$lcssa$i = $1297;
$self_parity$2$lcssa$i = $1296;
break;
}
}
} else {
$$lcssa163$i = $1244;
$$lcssa165$i = $1241;
$buf1$0$lcssa$i = $1250;
$self_parity$2$lcssa$i = $self_parity$0198$i;
}
$1299 = ($1239 | 0) == 0;
if ($1299) {
$$be$i = $$lcssa163$i;
$$be193$i = $$lcssa165$i;
$self_parity$0$be$i = $self_parity$2$lcssa$i;
} else {
$1300 = ($$lcssa163$i + 6) | 0;
$1301 = ($ndata$0$lcssa116 - $$lcssa165$i) | 0;
$1302 = ($1301 | 0) < 3;
if ($1302) {
$1303 = $1301 << 3;
$1304 = ($1303 | 0) < ($1300 | 0);
if ($1304) {
break L232;
}
$1305 = ($1300 | 0) == 0;
if ($1305) {
$$0$i67119$i = 0;
$1660 = $$lcssa165$i;
$1661 = $$lcssa163$i;
} else {
label = 212;
}
} else {
label = 212;
}
if ((label | 0) == 212) {
label = 0;
$1306 = ($841 + $$lcssa165$i) | 0;
$1307 = HEAP8[$1306 >> 0] | 0;
$1308 = $1307 & 255;
$1309 = ($$lcssa163$i + 8) | 0;
$1310 = $1308 << $1309;
$1311 = ($1300 | 0) > 8;
do {
if ($1311) {
$$sum$i64$i = ($$lcssa165$i + 1) | 0;
$1312 = ($841 + $$sum$i64$i) | 0;
$1313 = HEAP8[$1312 >> 0] | 0;
$1314 = $1313 & 255;
$1315 = $1314 << $$lcssa163$i;
$1316 = $1315 | $1310;
$1317 = ($1300 | 0) > 16;
if (!$1317) {
$ret$0$i66$i = $1316;
break;
}
$$sum1$i65$i = ($$lcssa165$i + 2) | 0;
$1318 = ($841 + $$sum1$i65$i) | 0;
$1319 = HEAP8[$1318 >> 0] | 0;
$1320 = $1319 & 255;
$1321 = (8 - $$lcssa163$i) | 0;
$1322 = $1320 >>> $1321;
$1323 = $1322 | $1316;
$ret$0$i66$i = $1323;
} else {
$ret$0$i66$i = $1310;
}
} while (0);
$1324 = $1300 >> 3;
$1325 = ($1324 + $$lcssa165$i) | 0;
$1326 = $1300 & 7;
$1327 = $ret$0$i66$i >>> 10;
$1328 = $1327 & 63;
$1329 = $1328 >>> 0 > 44;
if ($1329) {
break L232;
} else {
$$0$i67119$i = $1328;
$1660 = $1325;
$1661 = $1326;
}
}
$1330 = (7584 + $$0$i67119$i) | 0;
$1331 = HEAP8[$1330 >> 0] | 0;
$1332 = $1331 & 255;
$1333 = $1332 ^ $self_parity$2$lcssa$i;
HEAP8[$buf1$0$lcssa$i >> 0] = $1331;
$$be$i = $1661;
$$be193$i = $1660;
$self_parity$0$be$i = $1333;
}
break;
}
case 3: {
$1334 = $1014 | 16;
$1335 = ($ndata$0$lcssa116 - $1015) | 0;
$1336 = ($1335 | 0) < 3;
$1337 = $1335 << 3;
$1338 = ($1337 | 0) < ($1334 | 0);
$or$cond139$i = $1336 & $1338;
if ($or$cond139$i) {
break L232;
}
$1339 = ($841 + $1015) | 0;
$1340 = HEAP8[$1339 >> 0] | 0;
$1341 = $1340 & 255;
$1342 = $1014 | 8;
$1343 = $1341 << $1342;
$$sum$i59$i = ($1015 + 1) | 0;
$1344 = ($841 + $$sum$i59$i) | 0;
$1345 = HEAP8[$1344 >> 0] | 0;
$1346 = $1345 & 255;
$1347 = $1346 << $1014;
$1348 = $1347 | $1343;
$1349 = ($1334 | 0) == 16;
$$pre228$i = ($1015 + 2) | 0;
if ($1349) {
$ret$0$i61$i = $1348;
} else {
$1350 = ($841 + $$pre228$i) | 0;
$1351 = HEAP8[$1350 >> 0] | 0;
$1352 = $1351 & 255;
$1353 = (8 - $1014) | 0;
$1354 = $1352 >>> $1353;
$1355 = $1354 | $1348;
$ret$0$i61$i = $1355;
}
$1356 = HEAP8[$971 >> 0] | 0;
$1357 = ($1356 << 24) >> 24 == 0;
if ($1357) {
$1362 = $ret$0$i61$i >>> 12;
$1363 = $1362 & 15;
$1364 = $1363 & 255;
HEAP8[$1027 >> 0] = $1364;
HEAP8[$981 >> 0] = $1364;
$1365 = $ret$0$i61$i >>> 8;
$1366 = $1365 & 15;
$1367 = ($1366 + 1) | 0;
$1368 = $1367 & 255;
$1369 = ($1027 + 1) | 0;
HEAP8[$1369 >> 0] = $1368;
HEAP8[$971 >> 0] = $1368;
$1370 = $ret$0$i61$i & 255;
$1371 = ($1027 + 2) | 0;
HEAP8[$1371 >> 0] = $1370;
HEAP8[$982 >> 0] = $1370;
$$be$i = $1014;
$$be193$i = $$pre228$i;
$self_parity$0$be$i = $self_parity$0198$i;
} else {
$$be$i = $1014;
$$be193$i = $$pre228$i;
$self_parity$0$be$i = $self_parity$0198$i;
}
break;
}
case 4: {
$1372 = HEAP8[$983 >> 0] | 0;
$1373 = $1372 & 255;
$1374 = (16 - $1373) | 0;
$1375 = ($1373 + $1014) | 0;
$1376 = ($ndata$0$lcssa116 - $1015) | 0;
$1377 = ($1376 | 0) < 3;
if ($1377) {
$1378 = $1376 << 3;
$1379 = ($1378 | 0) < ($1375 | 0);
if ($1379) {
break L232;
}
$1380 = ($1375 | 0) == 0;
if ($1380) {
$$0$i57123$i = 0;
$1406 = $1015;
$1409 = $1014;
} else {
label = 226;
}
} else {
label = 226;
}
if ((label | 0) == 226) {
label = 0;
$1381 = ($841 + $1015) | 0;
$1382 = HEAP8[$1381 >> 0] | 0;
$1383 = $1382 & 255;
$1384 = $1014 | 8;
$1385 = $1383 << $1384;
$1386 = ($1375 | 0) > 8;
if ($1386) {
$$sum$i54$i = ($1015 + 1) | 0;
$1387 = ($841 + $$sum$i54$i) | 0;
$1388 = HEAP8[$1387 >> 0] | 0;
$1389 = $1388 & 255;
$1390 = $1389 << $1014;
$1391 = $1390 | $1385;
$1392 = ($1375 | 0) > 16;
if ($1392) {
$$sum1$i55$i = ($1015 + 2) | 0;
$1393 = ($841 + $$sum1$i55$i) | 0;
$1394 = HEAP8[$1393 >> 0] | 0;
$1395 = $1394 & 255;
$1396 = (8 - $1014) | 0;
$1397 = $1395 >>> $1396;
$1398 = $1397 | $1391;
$ret$0$i56$i = $1398;
} else {
$ret$0$i56$i = $1391;
}
} else {
$ret$0$i56$i = $1385;
}
$1399 = $1375 >>> 3;
$1400 = ($1399 + $1015) | 0;
$fold135$i = ($1373 + $985) | 0;
$1401 = $fold135$i & 7;
$1402 = $ret$0$i56$i & 65535;
$1403 = $1402 >>> $1374;
$1404 = ($1403 | 0) < 0;
if ($1404) {
break L232;
} else {
$$0$i57123$i = $1403;
$1406 = $1400;
$1409 = $1401;
}
}
$1405 = ($ndata$0$lcssa116 - $1406) | 0;
$1407 = $1405 << 3;
$1408 = ($1407 - $1409) | 0;
$1410 = $$0$i57123$i << 3;
$1411 = ($1408 | 0) < ($1410 | 0);
if ($1411) {
break L232;
}
$1412 = _malloc($$0$i57123$i) | 0;
HEAP32[$1027 >> 2] = $1412;
$1413 = ((($1026 + (($1024 * 12) | 0)) | 0) + 8) | 0;
HEAP32[$1413 >> 2] = $$0$i57123$i;
$1414 = ($$0$i57123$i | 0) > 0;
if ($1414) {
$1417 = $1409;
$1419 = $1406;
$buf8$0156$i = $1412;
$len10$0158$i = $$0$i57123$i;
$self_parity$3157$i = $self_parity$0198$i;
while (1) {
$1415 = ($len10$0158$i + -1) | 0;
$1416 = ($1417 + 8) | 0;
$1418 = ($ndata$0$lcssa116 - $1419) | 0;
$1420 = ($1418 | 0) < 3;
do {
if ($1420) {
$1421 = $1418 << 3;
$1422 = ($1421 | 0) < ($1416 | 0);
if ($1422) {
$1423 = $1416 >> 3;
$1424 = ($1423 + $1419) | 0;
$1425 = $1416 & 7;
$$0$i52$i = -1;
$1662 = $1425;
$1663 = $1424;
break;
} else {
$1426 = ($1416 | 0) == 0;
if ($1426) {
$$0$i52$i = 0;
$1662 = $1417;
$1663 = $1419;
break;
} else {
label = 236;
break;
}
}
} else {
label = 236;
}
} while (0);
if ((label | 0) == 236) {
label = 0;
$1427 = ($841 + $1419) | 0;
$1428 = HEAP8[$1427 >> 0] | 0;
$1429 = $1428 & 255;
$1430 = $1429 << $1416;
$1431 = ($1417 | 0) > 0;
do {
if ($1431) {
$$sum$i49$i = ($1419 + 1) | 0;
$1432 = ($841 + $$sum$i49$i) | 0;
$1433 = HEAP8[$1432 >> 0] | 0;
$1434 = $1433 & 255;
$1435 = $1434 << $1417;
$1436 = $1435 | $1430;
$1437 = ($1416 | 0) > 16;
if (!$1437) {
$ret$0$i51$i = $1436;
break;
}
$$sum1$i50$i = ($1419 + 2) | 0;
$1438 = ($841 + $$sum1$i50$i) | 0;
$1439 = HEAP8[$1438 >> 0] | 0;
$1440 = $1439 & 255;
$1441 = (8 - $1417) | 0;
$1442 = $1440 >>> $1441;
$1443 = $1442 | $1436;
$ret$0$i51$i = $1443;
} else {
$ret$0$i51$i = $1430;
}
} while (0);
$1444 = $1416 >> 3;
$1445 = ($1444 + $1419) | 0;
$1446 = $1416 & 7;
$1447 = $ret$0$i51$i >>> 8;
$1448 = $1447 & 255;
$$0$i52$i = $1448;
$1662 = $1446;
$1663 = $1445;
}
$1449 = $$0$i52$i ^ $self_parity$3157$i;
$1450 = $$0$i52$i & 255;
$1451 = ($buf8$0156$i + 1) | 0;
HEAP8[$buf8$0156$i >> 0] = $1450;
$1452 = ($1415 | 0) > 0;
if ($1452) {
$1417 = $1662;
$1419 = $1663;
$buf8$0156$i = $1451;
$len10$0158$i = $1415;
$self_parity$3157$i = $1449;
} else {
$$be$i = $1662;
$$be193$i = $1663;
$self_parity$0$be$i = $1449;
break;
}
}
} else {
$$be$i = $1409;
$$be193$i = $1406;
$self_parity$0$be$i = $self_parity$0198$i;
}
break;
}
case 5: {
$$be$i = $1014;
$$be193$i = $1015;
$self_parity$0$be$i = $self_parity$0198$i;
break;
}
case 7: {
$1453 = $1014 | 8;
$1454 = ($ndata$0$lcssa116 - $1015) | 0;
$1455 = ($1454 | 0) < 3;
$1456 = $1454 << 3;
$1457 = ($1456 | 0) < ($1453 | 0);
$or$cond141$i = $1455 & $1457;
if ($or$cond141$i) {
break L232;
}
$1458 = ($841 + $1015) | 0;
$1459 = HEAP8[$1458 >> 0] | 0;
$1460 = $1459 & 255;
$1461 = $1460 << $1453;
$1462 = ($1453 | 0) == 8;
$$pre229$i = ($1015 + 1) | 0;
if ($1462) {
$ret$0$i46$i = $1461;
} else {
$1463 = ($841 + $$pre229$i) | 0;
$1464 = HEAP8[$1463 >> 0] | 0;
$1465 = $1464 & 255;
$1466 = $1465 << $1014;
$1467 = $1466 | $1461;
$ret$0$i46$i = $1467;
}
$1468 = $ret$0$i46$i >>> 8;
$1469 = $1468 & 255;
$1470 = $1468 & 128;
$1471 = ($1470 | 0) == 0;
do {
if ($1471) {
$1664 = $$pre229$i;
$val$0$i = $1469;
} else {
$1472 = $1468 & 64;
$1473 = ($1472 | 0) == 0;
if ($1473) {
$1474 = ($ndata$0$lcssa116 - $$pre229$i) | 0;
$1475 = ($1474 | 0) < 3;
$1476 = $1474 << 3;
$1477 = ($1476 | 0) < ($1453 | 0);
$or$cond143$i = $1475 & $1477;
if ($or$cond143$i) {
break L232;
}
$1478 = ($841 + $$pre229$i) | 0;
$1479 = HEAP8[$1478 >> 0] | 0;
$1480 = $1479 & 255;
$1481 = $1480 << $1453;
$$pre231$i = ($1015 + 2) | 0;
if ($1462) {
$ret$0$i41$i = $1481;
} else {
$1482 = ($841 + $$pre231$i) | 0;
$1483 = HEAP8[$1482 >> 0] | 0;
$1484 = $1483 & 255;
$1485 = $1484 << $1014;
$1486 = $1485 | $1481;
$ret$0$i41$i = $1486;
}
$1487 = $ret$0$i41$i >>> 8;
$1488 = $1487 & 255;
$1664 = $$pre231$i;
$val$0$i = $1488;
break;
}
$1489 = $1468 & 32;
$1490 = ($1489 | 0) == 0;
if (!$1490) {
break L232;
}
$1491 = $1014 | 16;
$1492 = ($ndata$0$lcssa116 - $$pre229$i) | 0;
$1493 = ($1492 | 0) < 3;
$1494 = $1492 << 3;
$1495 = ($1494 | 0) < ($1491 | 0);
$or$cond145$i = $1493 & $1495;
if ($or$cond145$i) {
break L232;
}
$1496 = ($841 + $$pre229$i) | 0;
$1497 = HEAP8[$1496 >> 0] | 0;
$1498 = $1497 & 255;
$1499 = $1498 << $1453;
$$sum$i34$i = ($1015 + 2) | 0;
$1500 = ($841 + $$sum$i34$i) | 0;
$1501 = HEAP8[$1500 >> 0] | 0;
$1502 = $1501 & 255;
$1503 = $1502 << $1014;
$1504 = $1503 | $1499;
$1505 = ($1491 | 0) == 16;
$$pre233$i = ($1015 + 3) | 0;
if ($1505) {
$ret$0$i36$i = $1504;
} else {
$1506 = ($841 + $$pre233$i) | 0;
$1507 = HEAP8[$1506 >> 0] | 0;
$1508 = $1507 & 255;
$1509 = (8 - $1014) | 0;
$1510 = $1508 >>> $1509;
$1511 = $1510 | $1504;
$ret$0$i36$i = $1511;
}
$1512 = $ret$0$i36$i & 65535;
$1664 = $$pre233$i;
$val$0$i = $1512;
}
} while (0);
$val$0$c$i = $val$0$i;
HEAP32[$1027 >> 2] = $val$0$c$i;
$$be$i = $1014;
$$be193$i = $1664;
$self_parity$0$be$i = $self_parity$0198$i;
break;
}
case 8: {
$1513 = HEAP8[$984 >> 0] | 0;
$1514 = $1513 & 255;
$1515 = (16 - $1514) | 0;
$1516 = ($1514 + $1014) | 0;
$1517 = ($ndata$0$lcssa116 - $1015) | 0;
$1518 = ($1517 | 0) < 3;
if ($1518) {
$1519 = $1517 << 3;
$1520 = ($1519 | 0) < ($1516 | 0);
if ($1520) {
break L232;
}
$1521 = ($1516 | 0) == 0;
if ($1521) {
$$0$i32134$i = 0;
$1547 = $1015;
$1550 = $1014;
} else {
label = 259;
}
} else {
label = 259;
}
if ((label | 0) == 259) {
label = 0;
$1522 = ($841 + $1015) | 0;
$1523 = HEAP8[$1522 >> 0] | 0;
$1524 = $1523 & 255;
$1525 = $1014 | 8;
$1526 = $1524 << $1525;
$1527 = ($1516 | 0) > 8;
if ($1527) {
$$sum$i29$i = ($1015 + 1) | 0;
$1528 = ($841 + $$sum$i29$i) | 0;
$1529 = HEAP8[$1528 >> 0] | 0;
$1530 = $1529 & 255;
$1531 = $1530 << $1014;
$1532 = $1531 | $1526;
$1533 = ($1516 | 0) > 16;
if ($1533) {
$$sum1$i30$i = ($1015 + 2) | 0;
$1534 = ($841 + $$sum1$i30$i) | 0;
$1535 = HEAP8[$1534 >> 0] | 0;
$1536 = $1535 & 255;
$1537 = (8 - $1014) | 0;
$1538 = $1536 >>> $1537;
$1539 = $1538 | $1532;
$ret$0$i31$i = $1539;
} else {
$ret$0$i31$i = $1532;
}
} else {
$ret$0$i31$i = $1526;
}
$1540 = $1516 >>> 3;
$1541 = ($1540 + $1015) | 0;
$fold$i = ($1514 + $985) | 0;
$1542 = $fold$i & 7;
$1543 = $ret$0$i31$i & 65535;
$1544 = $1543 >>> $1515;
$1545 = ($1544 | 0) < 0;
if ($1545) {
break L232;
} else {
$$0$i32134$i = $1544;
$1547 = $1541;
$1550 = $1542;
}
}
$1546 = ($ndata$0$lcssa116 - $1547) | 0;
$1548 = $1546 << 3;
$1549 = ($1548 - $1550) | 0;
$1551 = ($$0$i32134$i * 13) | 0;
$1552 = ($1549 | 0) < ($1551 | 0);
if ($1552) {
break L232;
}
$1553 = $$0$i32134$i << 1;
$1554 = _malloc($1553) | 0;
HEAP32[$1027 >> 2] = $1554;
$1555 = ((($1026 + (($1024 * 12) | 0)) | 0) + 8) | 0;
HEAP32[$1555 >> 2] = $1553;
$1556 = ($$0$i32134$i | 0) > 0;
if ($1556) {
$$in$i15 = $$0$i32134$i;
$1559 = $1550;
$1561 = $1547;
$buf12$0150$i = $1554;
$self_parity$4149$i = $self_parity$0198$i;
while (1) {
$1557 = ($$in$i15 + -1) | 0;
$1558 = ($1559 + 13) | 0;
$1560 = ($ndata$0$lcssa116 - $1561) | 0;
$1562 = ($1560 | 0) < 3;
do {
if ($1562) {
$1563 = $1560 << 3;
$1564 = ($1563 | 0) < ($1558 | 0);
if ($1564) {
$1565 = $1558 >> 3;
$1566 = ($1565 + $1561) | 0;
$1567 = $1558 & 7;
$$0$i27$i = -1;
$1665 = $1567;
$1666 = $1566;
break;
} else {
$1568 = ($1558 | 0) == 0;
if ($1568) {
$$0$i27$i = 0;
$1665 = $1559;
$1666 = $1561;
break;
} else {
label = 269;
break;
}
}
} else {
label = 269;
}
} while (0);
if ((label | 0) == 269) {
label = 0;
$1569 = ($841 + $1561) | 0;
$1570 = HEAP8[$1569 >> 0] | 0;
$1571 = $1570 & 255;
$1572 = ($1559 + 8) | 0;
$1573 = $1571 << $1572;
$1574 = ($1558 | 0) > 8;
do {
if ($1574) {
$$sum$i24$i = ($1561 + 1) | 0;
$1575 = ($841 + $$sum$i24$i) | 0;
$1576 = HEAP8[$1575 >> 0] | 0;
$1577 = $1576 & 255;
$1578 = $1577 << $1559;
$1579 = $1578 | $1573;
$1580 = ($1558 | 0) > 16;
if (!$1580) {
$ret$0$i26$i = $1579;
break;
}
$$sum1$i25$i = ($1561 + 2) | 0;
$1581 = ($841 + $$sum1$i25$i) | 0;
$1582 = HEAP8[$1581 >> 0] | 0;
$1583 = $1582 & 255;
$1584 = (8 - $1559) | 0;
$1585 = $1583 >>> $1584;
$1586 = $1585 | $1579;
$ret$0$i26$i = $1586;
} else {
$ret$0$i26$i = $1573;
}
} while (0);
$1587 = $1558 >> 3;
$1588 = ($1587 + $1561) | 0;
$1589 = $1558 & 7;
$1590 = $ret$0$i26$i >>> 3;
$1591 = $1590 & 8191;
$$0$i27$i = $1591;
$1665 = $1589;
$1666 = $1588;
}
$1592 = (($$0$i27$i >>> 0) / 192) & -1;
$1593 = $1592 << 8;
$1594 = ($$0$i27$i >>> 0) % 192 & -1;
$1595 = $1593 | $1594;
$1596 = ($1595 + 33088) | 0;
$1597 = $1596 >>> 0 > 40959;
$1598 = ($1595 + 49472) | 0;
$$$i17 = $1597 ? $1598 : $1596;
$1599 = $$$i17 ^ $self_parity$4149$i;
$1600 = $$$i17 >>> 8;
$1601 = $1600 & 255;
$1602 = ($buf12$0150$i + 1) | 0;
HEAP8[$buf12$0150$i >> 0] = $1601;
$1603 = $$$i17 & 255;
$1604 = ($buf12$0150$i + 2) | 0;
HEAP8[$1602 >> 0] = $1603;
$1605 = ($1557 | 0) > 0;
if ($1605) {
$$in$i15 = $1557;
$1559 = $1665;
$1561 = $1666;
$buf12$0150$i = $1604;
$self_parity$4149$i = $1599;
} else {
$$be$i = $1665;
$$be193$i = $1666;
$self_parity$0$be$i = $1599;
break;
}
}
} else {
$$be$i = $1550;
$$be193$i = $1547;
$self_parity$0$be$i = $self_parity$0198$i;
}
break;
}
case 9: {
$1606 = $1014 | 8;
$1607 = ($ndata$0$lcssa116 - $1015) | 0;
$1608 = ($1607 | 0) < 3;
$1609 = $1607 << 3;
$1610 = ($1609 | 0) < ($1606 | 0);
$or$cond147$i = $1608 & $1610;
if ($or$cond147$i) {
$$0$i$i18 = -1;
} else {
$1611 = ($841 + $1015) | 0;
$1612 = HEAP8[$1611 >> 0] | 0;
$1613 = $1612 & 255;
$1614 = $1613 << $1606;
$1615 = ($1606 | 0) == 8;
if ($1615) {
$ret$0$i$i = $1614;
} else {
$$sum$i$i = ($1015 + 1) | 0;
$1616 = ($841 + $$sum$i$i) | 0;
$1617 = HEAP8[$1616 >> 0] | 0;
$1618 = $1617 & 255;
$1619 = $1618 << $1014;
$1620 = $1619 | $1614;
$ret$0$i$i = $1620;
}
$1621 = $ret$0$i$i >>> 8;
$1622 = $1621 & 255;
$$0$i$i18 = $1622;
}
$1623 = $$0$i$i18 >>> 0 < 100;
$$off$i = ($$0$i$i18 + -165) | 0;
$1624 = $$off$i >>> 0 < 26;
$or$cond$i19 = $1623 | $1624;
$$off6$i = ($$0$i$i18 + -197) | 0;
$1625 = $$off6$i >>> 0 < 26;
$or$cond9$i20 = $or$cond$i19 | $1625;
if (!$or$cond9$i20) {
break L232;
}
$1626 = ($1015 + 1) | 0;
$$c$i = $$0$i$i18;
HEAP32[$1027 >> 2] = $$c$i;
$$be$i = $1014;
$$be193$i = $1626;
$self_parity$0$be$i = $self_parity$0198$i;
break;
}
default: {
break L232;
}
}
} while (0);
$1358 = ($ndata$0$lcssa116 - $$be193$i) | 0;
$1359 = $1358 << 3;
$1360 = ($1359 - $$be$i) | 0;
$1361 = ($1360 | 0) > 3;
if ($1361) {
$986 = $$be$i;
$987 = $1358;
$993 = $$be193$i;
$centries$0197$i = $centries$1$i;
$self_parity$0198$i = $self_parity$0$be$i;
} else {
$self_parity$0$lcssa$i$ph = $self_parity$0$be$i;
label = 280;
break;
}
}
if ((label | 0) == 280) {
$$pre = HEAP32[$_qrdata >> 2] | 0;
$$pre114 = HEAP32[$970 >> 2] | 0;
$phitmp115 = ($$pre114 * 12) | 0;
$1631 = $$pre;
$1632 = $phitmp115;
$self_parity$0$lcssa$i = $self_parity$0$lcssa$i$ph;
label = 281;
break;
}
$1634 = HEAP32[$970 >> 2] | 0;
$1635 = ($1634 | 0) > 0;
$1636 = HEAP32[$_qrdata >> 2] | 0;
if ($1635) {
$1638 = $1636;
$1667 = $1634;
$i$01$i = 0;
while (1) {
$1637 = ($1638 + (($i$01$i * 12) | 0)) | 0;
$1639 = HEAP32[$1637 >> 2] | 0;
$1640 = ($1639 + -1) | 0;
$1641 = $1640 & $1639;
$1642 = ($1641 | 0) == 0;
if ($1642) {
$1643 = ((($1638 + (($i$01$i * 12) | 0)) | 0) + 4) | 0;
$1644 = HEAP32[$1643 >> 2] | 0;
_free($1644);
$$pre$i23 = HEAP32[$970 >> 2] | 0;
$$pre3$i = HEAP32[$_qrdata >> 2] | 0;
$1647 = $$pre$i23;
$1668 = $$pre3$i;
} else {
$1647 = $1667;
$1668 = $1638;
}
$1645 = ($i$01$i + 1) | 0;
$1646 = ($1645 | 0) < ($1647 | 0);
if ($1646) {
$1638 = $1668;
$1667 = $1647;
$i$01$i = $1645;
} else {
$$lcssa$i = $1668;
break;
}
}
} else {
$$lcssa$i = $1636;
}
_free($$lcssa$i);
$$0$i2128 = -1;
} else {
$1631 = 0;
$1632 = 0;
$self_parity$0$lcssa$i = 0;
label = 281;
}
} while (0);
if ((label | 0) == 281) {
$1627 = $self_parity$0$lcssa$i >>> 8;
$1628 = $1627 ^ $self_parity$0$lcssa$i;
$1629 = $1628 & 255;
$1630 = ($_qrdata + 13) | 0;
HEAP8[$1630 >> 0] = $1629;
$1633 = _realloc($1631, $1632) | 0;
HEAP32[$_qrdata >> 2] = $1633;
$$0$i2128 = 0;
}
$1648 = $_version & 255;
$1649 = ($_qrdata + 8) | 0;
HEAP8[$1649 >> 0] = $1648;
$1650 = $810 & 255;
$1651 = ($_qrdata + 9) | 0;
HEAP8[$1651 >> 0] = $1650;
$ret$2 = $$0$i2128;
_free($841);
STACKTOP = sp;
return $ret$2 | 0;
}
function _qr_hom_cell_init($_cell, $_u0, $_v0, $_u1, $_v1, $_u2, $_v2, $_u3, $_v3, $_x0, $_y0, $_x1, $_y1, $_x2, $_y2, $_x3, $_y3) {
$_cell = $_cell | 0;
$_u0 = $_u0 | 0;
$_v0 = $_v0 | 0;
$_u1 = $_u1 | 0;
$_v1 = $_v1 | 0;
$_u2 = $_u2 | 0;
$_v2 = $_v2 | 0;
$_u3 = $_u3 | 0;
$_v3 = $_v3 | 0;
$_x0 = $_x0 | 0;
$_y0 = $_y0 | 0;
$_x1 = $_x1 | 0;
$_y1 = $_y1 | 0;
$_x2 = $_x2 | 0;
$_y2 = $_y2 | 0;
$_x3 = $_x3 | 0;
$_y3 = $_y3 | 0;
var $$neg82 = 0,
$$neg85 = 0,
$$neg88 = 0,
$$neg91 = 0,
$$neg94 = 0,
$$neg97 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0;
var $110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0;
var $129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0;
var $147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0,
$152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0;
var $165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0,
$170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0;
var $183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0,
$189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0;
var $200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0,
$206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0;
var $219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0,
$224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0;
var $237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0,
$242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0;
var $255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0,
$260 = 0,
$261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0;
var $273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0,
$279 = 0,
$28 = 0,
$280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0;
var $291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0,
$297 = 0,
$298 = 0,
$299 = 0,
$3 = 0,
$30 = 0,
$300 = 0,
$301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0,
$306 = 0,
$307 = 0,
$308 = 0;
var $309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0,
$313 = 0,
$314 = 0,
$315 = 0,
$316 = 0,
$317 = 0,
$318 = 0,
$319 = 0,
$32 = 0,
$320 = 0,
$321 = 0,
$322 = 0,
$323 = 0,
$324 = 0,
$325 = 0,
$326 = 0;
var $327 = 0,
$328 = 0,
$329 = 0,
$33 = 0,
$330 = 0,
$331 = 0,
$332 = 0,
$333 = 0,
$334 = 0,
$335 = 0,
$336 = 0,
$337 = 0,
$338 = 0,
$339 = 0,
$34 = 0,
$340 = 0,
$341 = 0,
$342 = 0,
$343 = 0,
$344 = 0;
var $345 = 0,
$346 = 0,
$347 = 0,
$348 = 0,
$349 = 0,
$35 = 0,
$350 = 0,
$351 = 0,
$352 = 0,
$353 = 0,
$354 = 0,
$355 = 0,
$356 = 0,
$357 = 0,
$358 = 0,
$359 = 0,
$36 = 0,
$360 = 0,
$361 = 0,
$362 = 0;
var $363 = 0,
$364 = 0,
$365 = 0,
$366 = 0,
$367 = 0,
$368 = 0,
$369 = 0,
$37 = 0,
$370 = 0,
$371 = 0,
$372 = 0,
$373 = 0,
$374 = 0,
$375 = 0,
$376 = 0,
$377 = 0,
$378 = 0,
$379 = 0,
$38 = 0,
$380 = 0;
var $381 = 0,
$382 = 0,
$383 = 0,
$384 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0;
var $53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0;
var $71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0;
var $9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$a22$0 = 0,
$i00$0 = 0,
$i01$0 = 0,
$i10$0 = 0,
$i11$0 = 0,
$i20$0 = 0,
$i21$0 = 0,
$ispos = 0,
$ispos11 = 0;
var $ispos15 = 0,
$ispos21 = 0,
$ispos23 = 0,
$ispos27 = 0,
$ispos3 = 0,
$ispos43 = 0,
$ispos57 = 0,
$ispos61 = 0,
$ispos65 = 0,
$ispos69 = 0,
$ispos73 = 0,
$ispos77 = 0,
$ispos9 = 0,
$neg = 0,
$neg10 = 0,
$neg12 = 0,
$neg16 = 0,
$neg22 = 0,
$neg24 = 0,
$neg28 = 0;
var $neg4 = 0,
$neg44 = 0,
$neg58 = 0,
$neg62 = 0,
$neg66 = 0,
$neg70 = 0,
$neg74 = 0,
$neg78 = 0,
$or$cond = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($_u1 - $_u0) | 0;
$1 = ($_u2 - $_u0) | 0;
$2 = ($_u3 - $_u0) | 0;
$3 = ($_u3 - $_u1) | 0;
$4 = ($_u3 - $_u2) | 0;
$5 = ($_v1 - $_v0) | 0;
$6 = ($_v2 - $_v0) | 0;
$7 = ($_v3 - $_v0) | 0;
$8 = ($_v3 - $_v1) | 0;
$9 = ($_v3 - $_v2) | 0;
$10 = Math_imul($4, $5) | 0;
$11 = Math_imul($9, $0) | 0;
$12 = ($10 - $11) | 0;
$13 = Math_imul($8, $1) | 0;
$14 = Math_imul($3, $6) | 0;
$15 = ($13 - $14) | 0;
$16 = ($10 | 0) == ($11 | 0);
$17 = ($13 | 0) == ($14 | 0);
$or$cond = $16 & $17;
if ($or$cond) {
$a22$0 = 1;
} else {
$18 = Math_imul($8, $4) | 0;
$19 = Math_imul($9, $3) | 0;
$20 = ($18 - $19) | 0;
$a22$0 = $20;
}
$21 = ($a22$0 + $12) | 0;
$22 = Math_imul($21, $0) | 0;
$23 = ($a22$0 + $15) | 0;
$24 = Math_imul($23, $1) | 0;
$25 = Math_imul($21, $5) | 0;
$26 = Math_imul($23, $6) | 0;
$27 = Math_imul($26, $a22$0) | 0;
$28 = (0 - $a22$0) | 0;
$29 = Math_imul($24, $28) | 0;
$30 = Math_imul($25, $28) | 0;
$31 = Math_imul($22, $a22$0) | 0;
$32 = Math_imul($25, $15) | 0;
$33 = Math_imul($26, $12) | 0;
$34 = ($32 - $33) | 0;
$35 = Math_imul($24, $12) | 0;
$36 = Math_imul($22, $15) | 0;
$37 = ($35 - $36) | 0;
$38 = Math_imul($22, $26) | 0;
$39 = Math_imul($24, $25) | 0;
$40 = ($38 - $39) | 0;
$41 = ($27 | 0) == 0;
if ($41) {
$i00$0 = 0;
} else {
$ispos77 = ($27 | 0) > -1;
$neg78 = (0 - $27) | 0;
$42 = $ispos77 ? $27 : $neg78;
$43 = $42 >> 1;
$44 = $40 >> 31;
$45 = ($43 + $44) | 0;
$46 = $45 ^ $44;
$47 = ($46 + $40) | 0;
$48 = (($47 | 0) / ($42 | 0)) & -1;
$49 = $27 >> 31;
$50 = ($48 + $49) | 0;
$51 = $50 ^ $49;
$i00$0 = $51;
}
$52 = ($29 | 0) == 0;
if ($52) {
$i01$0 = 0;
} else {
$ispos73 = ($29 | 0) > -1;
$neg74 = (0 - $29) | 0;
$53 = $ispos73 ? $29 : $neg74;
$54 = $53 >> 1;
$55 = $40 >> 31;
$56 = ($54 + $55) | 0;
$57 = $56 ^ $55;
$58 = ($57 + $40) | 0;
$59 = (($58 | 0) / ($53 | 0)) & -1;
$60 = $29 >> 31;
$61 = ($59 + $60) | 0;
$62 = $61 ^ $60;
$i01$0 = $62;
}
$63 = ($30 | 0) == 0;
if ($63) {
$i10$0 = 0;
} else {
$ispos69 = ($30 | 0) > -1;
$neg70 = (0 - $30) | 0;
$64 = $ispos69 ? $30 : $neg70;
$65 = $64 >> 1;
$66 = $40 >> 31;
$67 = ($65 + $66) | 0;
$68 = $67 ^ $66;
$69 = ($68 + $40) | 0;
$70 = (($69 | 0) / ($64 | 0)) & -1;
$71 = $30 >> 31;
$72 = ($70 + $71) | 0;
$73 = $72 ^ $71;
$i10$0 = $73;
}
$74 = ($31 | 0) == 0;
if ($74) {
$i11$0 = 0;
} else {
$ispos65 = ($31 | 0) > -1;
$neg66 = (0 - $31) | 0;
$75 = $ispos65 ? $31 : $neg66;
$76 = $75 >> 1;
$77 = $40 >> 31;
$78 = ($76 + $77) | 0;
$79 = $78 ^ $77;
$80 = ($79 + $40) | 0;
$81 = (($80 | 0) / ($75 | 0)) & -1;
$82 = $31 >> 31;
$83 = ($81 + $82) | 0;
$84 = $83 ^ $82;
$i11$0 = $84;
}
$85 = ($32 | 0) == ($33 | 0);
if ($85) {
$i20$0 = $34;
} else {
$ispos61 = ($34 | 0) > -1;
$neg62 = (0 - $34) | 0;
$86 = $ispos61 ? $34 : $neg62;
$87 = $86 >> 1;
$88 = $40 >> 31;
$89 = ($87 + $88) | 0;
$90 = $89 ^ $88;
$91 = ($90 + $40) | 0;
$92 = (($91 | 0) / ($86 | 0)) & -1;
$93 = $34 >> 31;
$94 = ($92 + $93) | 0;
$95 = $94 ^ $93;
$i20$0 = $95;
}
$96 = ($35 | 0) == ($36 | 0);
if ($96) {
$i21$0 = $37;
} else {
$ispos57 = ($37 | 0) > -1;
$neg58 = (0 - $37) | 0;
$97 = $ispos57 ? $37 : $neg58;
$98 = $97 >> 1;
$99 = $40 >> 31;
$100 = ($98 + $99) | 0;
$101 = $100 ^ $99;
$102 = ($101 + $40) | 0;
$103 = (($102 | 0) / ($97 | 0)) & -1;
$104 = $37 >> 31;
$105 = ($103 + $104) | 0;
$106 = $105 ^ $104;
$i21$0 = $106;
}
$107 = ($_x1 - $_x0) | 0;
$108 = ($_x2 - $_x0) | 0;
$109 = ($_x3 - $_x0) | 0;
$110 = ($_x3 - $_x1) | 0;
$111 = ($_x3 - $_x2) | 0;
$112 = ($_y1 - $_y0) | 0;
$113 = ($_y2 - $_y0) | 0;
$114 = ($_y3 - $_y0) | 0;
$115 = ($_y3 - $_y1) | 0;
$116 = ($_y3 - $_y2) | 0;
$117 = Math_imul($111, $112) | 0;
$118 = Math_imul($116, $107) | 0;
$119 = ($117 - $118) | 0;
$120 = Math_imul($115, $108) | 0;
$121 = Math_imul($110, $113) | 0;
$122 = ($120 - $121) | 0;
$123 = Math_imul($115, $111) | 0;
$124 = Math_imul($116, $110) | 0;
$125 = ($123 - $124) | 0;
$ispos = ($107 | 0) > -1;
$neg = (0 - $107) | 0;
$126 = $ispos ? $107 : $neg;
$ispos3 = ($112 | 0) > -1;
$neg4 = (0 - $112) | 0;
$127 = $ispos3 ? $112 : $neg4;
$128 = ($126 - $127) | 0;
$129 = ($127 | 0) > ($126 | 0);
$130 = $129 ? $128 : 0;
$131 = ($126 - $130) | 0;
$132 = _qr_ilog($131) | 0;
$133 = ($119 + $125) | 0;
$ispos9 = ($133 | 0) > -1;
$neg10 = (0 - $133) | 0;
$134 = $ispos9 ? $133 : $neg10;
$135 = _qr_ilog($134) | 0;
$136 = ($135 + $132) | 0;
$ispos11 = ($108 | 0) > -1;
$neg12 = (0 - $108) | 0;
$137 = $ispos11 ? $108 : $neg12;
$ispos15 = ($113 | 0) > -1;
$neg16 = (0 - $113) | 0;
$138 = $ispos15 ? $113 : $neg16;
$139 = ($137 - $138) | 0;
$140 = ($138 | 0) > ($137 | 0);
$141 = $140 ? $139 : 0;
$142 = ($137 - $141) | 0;
$143 = _qr_ilog($142) | 0;
$144 = ($122 + $125) | 0;
$ispos21 = ($144 | 0) > -1;
$neg22 = (0 - $144) | 0;
$145 = $ispos21 ? $144 : $neg22;
$146 = _qr_ilog($145) | 0;
$147 = ($146 + $143) | 0;
$ispos23 = ($119 | 0) > -1;
$neg24 = (0 - $119) | 0;
$148 = $ispos23 ? $119 : $neg24;
$ispos27 = ($122 | 0) > -1;
$neg28 = (0 - $122) | 0;
$149 = $ispos27 ? $122 : $neg28;
$150 = ($148 - $149) | 0;
$151 = ($149 | 0) > ($148 | 0);
$152 = $151 ? $150 : 0;
$153 = ($148 - $152) | 0;
$ispos43 = ($125 | 0) > -1;
$neg44 = (0 - $125) | 0;
$154 = $ispos43 ? $125 : $neg44;
$155 = ($153 - $154) | 0;
$156 = ($154 | 0) > ($153 | 0);
$157 = $156 ? $155 : 0;
$158 = ($153 - $157) | 0;
$159 = _qr_ilog($158) | 0;
$160 = ($136 - $147) | 0;
$161 = ($147 | 0) > ($136 | 0);
$162 = $161 ? $160 : 0;
$163 = ($136 - $162) | 0;
$164 = ($163 - $159) | 0;
$165 = ($159 | 0) > ($163 | 0);
$166 = $165 ? $164 : 0;
$167 = ($163 - $166) | 0;
$168 = ($167 + -27) | 0;
$169 = ($168 | 0) > 0;
$170 = $169 ? $168 : 0;
$171 = 1 << $170;
$172 = $171 >> 1;
$173 = ($107 | 0) < 0;
$174 = ($173 << 31) >> 31;
$175 = ($133 | 0) < 0;
$176 = ($175 << 31) >> 31;
$177 = ___muldi3($133 | 0, $176 | 0, $107 | 0, $174 | 0) | 0;
$178 = tempRet0;
$179 = ($172 | 0) < 0;
$180 = ($179 << 31) >> 31;
$181 = _i64Add($172 | 0, $180 | 0, $177 | 0, $178 | 0) | 0;
$182 = tempRet0;
$183 = _bitshift64Ashr($181 | 0, $182 | 0, $170 | 0) | 0;
$184 = tempRet0;
$185 = ($108 | 0) < 0;
$186 = ($185 << 31) >> 31;
$187 = ($144 | 0) < 0;
$188 = ($187 << 31) >> 31;
$189 = ___muldi3($144 | 0, $188 | 0, $108 | 0, $186 | 0) | 0;
$190 = tempRet0;
$191 = _i64Add($172 | 0, $180 | 0, $189 | 0, $190 | 0) | 0;
$192 = tempRet0;
$193 = _bitshift64Ashr($191 | 0, $192 | 0, $170 | 0) | 0;
$194 = tempRet0;
$195 = ($112 | 0) < 0;
$196 = ($195 << 31) >> 31;
$197 = ___muldi3($133 | 0, $176 | 0, $112 | 0, $196 | 0) | 0;
$198 = tempRet0;
$199 = _i64Add($172 | 0, $180 | 0, $197 | 0, $198 | 0) | 0;
$200 = tempRet0;
$201 = _bitshift64Ashr($199 | 0, $200 | 0, $170 | 0) | 0;
$202 = tempRet0;
$203 = ($113 | 0) < 0;
$204 = ($203 << 31) >> 31;
$205 = ___muldi3($144 | 0, $188 | 0, $113 | 0, $204 | 0) | 0;
$206 = tempRet0;
$207 = _i64Add($172 | 0, $180 | 0, $205 | 0, $206 | 0) | 0;
$208 = tempRet0;
$209 = _bitshift64Ashr($207 | 0, $208 | 0, $170 | 0) | 0;
$210 = tempRet0;
$211 = ($i00$0 | 0) != 0;
if ($211) {
$212 = $i00$0 >> 1;
$213 = $183 >> 31;
$214 = ($213 + $212) | 0;
$215 = $214 ^ $213;
$216 = ($215 + $183) | 0;
$217 = (($216 | 0) / ($i00$0 | 0)) & -1;
$226 = $217;
} else {
$226 = 0;
}
$218 = ($i10$0 | 0) != 0;
if ($218) {
$219 = $i10$0 >> 1;
$220 = $193 >> 31;
$221 = ($220 + $219) | 0;
$222 = $221 ^ $220;
$223 = ($222 + $193) | 0;
$224 = (($223 | 0) / ($i10$0 | 0)) & -1;
$227 = $224;
} else {
$227 = 0;
}
$225 = ($227 + $226) | 0;
HEAP32[$_cell >> 2] = $225;
$228 = ($i01$0 | 0) != 0;
if ($228) {
$229 = $i01$0 >> 1;
$230 = $183 >> 31;
$231 = ($230 + $229) | 0;
$232 = $231 ^ $230;
$233 = ($232 + $183) | 0;
$234 = (($233 | 0) / ($i01$0 | 0)) & -1;
$243 = $234;
} else {
$243 = 0;
}
$235 = ($i11$0 | 0) != 0;
if ($235) {
$236 = $i11$0 >> 1;
$237 = $193 >> 31;
$238 = ($237 + $236) | 0;
$239 = $238 ^ $237;
$240 = ($239 + $193) | 0;
$241 = (($240 | 0) / ($i11$0 | 0)) & -1;
$244 = $241;
} else {
$244 = 0;
}
$242 = ($244 + $243) | 0;
$245 = ($_cell + 4) | 0;
HEAP32[$245 >> 2] = $242;
if ($211) {
$246 = $i00$0 >> 1;
$247 = $201 >> 31;
$248 = ($247 + $246) | 0;
$249 = $248 ^ $247;
$250 = ($249 + $201) | 0;
$251 = (($250 | 0) / ($i00$0 | 0)) & -1;
$259 = $251;
} else {
$259 = 0;
}
if ($218) {
$252 = $i10$0 >> 1;
$253 = $209 >> 31;
$254 = ($253 + $252) | 0;
$255 = $254 ^ $253;
$256 = ($255 + $209) | 0;
$257 = (($256 | 0) / ($i10$0 | 0)) & -1;
$260 = $257;
} else {
$260 = 0;
}
$258 = ($260 + $259) | 0;
$261 = ($_cell + 12) | 0;
HEAP32[$261 >> 2] = $258;
if ($228) {
$262 = $i01$0 >> 1;
$263 = $201 >> 31;
$264 = ($263 + $262) | 0;
$265 = $264 ^ $263;
$266 = ($265 + $201) | 0;
$267 = (($266 | 0) / ($i01$0 | 0)) & -1;
$275 = $267;
} else {
$275 = 0;
}
if ($235) {
$268 = $i11$0 >> 1;
$269 = $209 >> 31;
$270 = ($269 + $268) | 0;
$271 = $270 ^ $269;
$272 = ($271 + $209) | 0;
$273 = (($272 | 0) / ($i11$0 | 0)) & -1;
$276 = $273;
} else {
$276 = 0;
}
$274 = ($276 + $275) | 0;
$277 = ($_cell + 16) | 0;
HEAP32[$277 >> 2] = $274;
if ($211) {
$278 = $i00$0 >> 1;
$279 = $119 >> 31;
$280 = ($278 + $279) | 0;
$281 = $280 ^ $279;
$282 = ($281 + $119) | 0;
$283 = (($282 | 0) / ($i00$0 | 0)) & -1;
$298 = $283;
} else {
$298 = 0;
}
if ($218) {
$284 = $i10$0 >> 1;
$285 = $122 >> 31;
$286 = ($284 + $285) | 0;
$287 = $286 ^ $285;
$288 = ($287 + $122) | 0;
$289 = (($288 | 0) / ($i10$0 | 0)) & -1;
$300 = $289;
} else {
$300 = 0;
}
$290 = ($i20$0 | 0) == 0;
if ($290) {
$302 = 0;
} else {
$291 = $i20$0 >> 1;
$292 = $125 >> 31;
$293 = ($291 + $292) | 0;
$294 = $293 ^ $292;
$295 = ($294 + $125) | 0;
$296 = (($295 | 0) / ($i20$0 | 0)) & -1;
$302 = $296;
}
$297 = ($298 + $172) | 0;
$299 = ($297 + $300) | 0;
$301 = ($299 + $302) | 0;
$303 = $301 >> $170;
$304 = ($_cell + 24) | 0;
HEAP32[$304 >> 2] = $303;
if ($228) {
$305 = $i01$0 >> 1;
$306 = $119 >> 31;
$307 = ($305 + $306) | 0;
$308 = $307 ^ $306;
$309 = ($308 + $119) | 0;
$310 = (($309 | 0) / ($i01$0 | 0)) & -1;
$325 = $310;
} else {
$325 = 0;
}
if ($235) {
$311 = $i11$0 >> 1;
$312 = $122 >> 31;
$313 = ($311 + $312) | 0;
$314 = $313 ^ $312;
$315 = ($314 + $122) | 0;
$316 = (($315 | 0) / ($i11$0 | 0)) & -1;
$327 = $316;
} else {
$327 = 0;
}
$317 = ($i21$0 | 0) == 0;
if ($317) {
$329 = 0;
$324 = ($325 + $172) | 0;
$326 = ($324 + $327) | 0;
$328 = ($326 + $329) | 0;
$330 = $328 >> $170;
$331 = ($_cell + 28) | 0;
HEAP32[$331 >> 2] = $330;
$332 = ($172 + $125) | 0;
$333 = $332 >> $170;
$334 = ($_cell + 32) | 0;
HEAP32[$334 >> 2] = $333;
$335 = Math_imul($225, $0) | 0;
$336 = Math_imul($242, $5) | 0;
$337 = Math_imul($258, $0) | 0;
$338 = Math_imul($274, $5) | 0;
$339 = Math_imul($303, $0) | 0;
$340 = Math_imul($330, $5) | 0;
$341 = ($339 + $333) | 0;
$342 = ($341 + $340) | 0;
$343 = Math_imul($342, $107) | 0;
$344 = Math_imul($342, $112) | 0;
$345 = Math_imul($225, $1) | 0;
$346 = Math_imul($242, $6) | 0;
$347 = Math_imul($258, $1) | 0;
$348 = Math_imul($274, $6) | 0;
$349 = Math_imul($303, $1) | 0;
$350 = Math_imul($330, $6) | 0;
$351 = ($349 + $333) | 0;
$352 = ($351 + $350) | 0;
$353 = Math_imul($352, $108) | 0;
$354 = Math_imul($352, $113) | 0;
$355 = Math_imul($225, $2) | 0;
$356 = Math_imul($242, $7) | 0;
$357 = Math_imul($258, $2) | 0;
$358 = Math_imul($274, $7) | 0;
$359 = Math_imul($303, $2) | 0;
$360 = Math_imul($330, $7) | 0;
$361 = ($359 + $333) | 0;
$362 = ($361 + $360) | 0;
$363 = Math_imul($362, $109) | 0;
$364 = Math_imul($362, $114) | 0;
$$neg94 = (2 - $335) | 0;
$365 = ($$neg94 - $345) | 0;
$$neg88 = ($365 - $355) | 0;
$366 = ($$neg88 - $336) | 0;
$$neg82 = ($366 - $346) | 0;
$367 = ($$neg82 - $356) | 0;
$368 = ($367 + $343) | 0;
$369 = ($368 + $353) | 0;
$370 = ($369 + $363) | 0;
$371 = $370 >> 2;
$372 = ($_cell + 8) | 0;
HEAP32[$372 >> 2] = $371;
$$neg97 = (2 - $337) | 0;
$373 = ($$neg97 - $347) | 0;
$$neg91 = ($373 - $357) | 0;
$374 = ($$neg91 - $338) | 0;
$$neg85 = ($374 - $348) | 0;
$375 = ($$neg85 - $358) | 0;
$376 = ($375 + $344) | 0;
$377 = ($376 + $354) | 0;
$378 = ($377 + $364) | 0;
$379 = $378 >> 2;
$380 = ($_cell + 20) | 0;
HEAP32[$380 >> 2] = $379;
$381 = ($_cell + 36) | 0;
HEAP32[$381 >> 2] = $_x0;
$382 = ($_cell + 40) | 0;
HEAP32[$382 >> 2] = $_y0;
$383 = ($_cell + 44) | 0;
HEAP32[$383 >> 2] = $_u0;
$384 = ($_cell + 48) | 0;
HEAP32[$384 >> 2] = $_v0;
STACKTOP = sp;
return;
}
$318 = $i21$0 >> 1;
$319 = $125 >> 31;
$320 = ($318 + $319) | 0;
$321 = $320 ^ $319;
$322 = ($321 + $125) | 0;
$323 = (($322 | 0) / ($i21$0 | 0)) & -1;
$329 = $323;
$324 = ($325 + $172) | 0;
$326 = ($324 + $327) | 0;
$328 = ($326 + $329) | 0;
$330 = $328 >> $170;
$331 = ($_cell + 28) | 0;
HEAP32[$331 >> 2] = $330;
$332 = ($172 + $125) | 0;
$333 = $332 >> $170;
$334 = ($_cell + 32) | 0;
HEAP32[$334 >> 2] = $333;
$335 = Math_imul($225, $0) | 0;
$336 = Math_imul($242, $5) | 0;
$337 = Math_imul($258, $0) | 0;
$338 = Math_imul($274, $5) | 0;
$339 = Math_imul($303, $0) | 0;
$340 = Math_imul($330, $5) | 0;
$341 = ($339 + $333) | 0;
$342 = ($341 + $340) | 0;
$343 = Math_imul($342, $107) | 0;
$344 = Math_imul($342, $112) | 0;
$345 = Math_imul($225, $1) | 0;
$346 = Math_imul($242, $6) | 0;
$347 = Math_imul($258, $1) | 0;
$348 = Math_imul($274, $6) | 0;
$349 = Math_imul($303, $1) | 0;
$350 = Math_imul($330, $6) | 0;
$351 = ($349 + $333) | 0;
$352 = ($351 + $350) | 0;
$353 = Math_imul($352, $108) | 0;
$354 = Math_imul($352, $113) | 0;
$355 = Math_imul($225, $2) | 0;
$356 = Math_imul($242, $7) | 0;
$357 = Math_imul($258, $2) | 0;
$358 = Math_imul($274, $7) | 0;
$359 = Math_imul($303, $2) | 0;
$360 = Math_imul($330, $7) | 0;
$361 = ($359 + $333) | 0;
$362 = ($361 + $360) | 0;
$363 = Math_imul($362, $109) | 0;
$364 = Math_imul($362, $114) | 0;
$$neg94 = (2 - $335) | 0;
$365 = ($$neg94 - $345) | 0;
$$neg88 = ($365 - $355) | 0;
$366 = ($$neg88 - $336) | 0;
$$neg82 = ($366 - $346) | 0;
$367 = ($$neg82 - $356) | 0;
$368 = ($367 + $343) | 0;
$369 = ($368 + $353) | 0;
$370 = ($369 + $363) | 0;
$371 = $370 >> 2;
$372 = ($_cell + 8) | 0;
HEAP32[$372 >> 2] = $371;
$$neg97 = (2 - $337) | 0;
$373 = ($$neg97 - $347) | 0;
$$neg91 = ($373 - $357) | 0;
$374 = ($$neg91 - $338) | 0;
$$neg85 = ($374 - $348) | 0;
$375 = ($$neg85 - $358) | 0;
$376 = ($375 + $344) | 0;
$377 = ($376 + $354) | 0;
$378 = ($377 + $364) | 0;
$379 = $378 >> 2;
$380 = ($_cell + 20) | 0;
HEAP32[$380 >> 2] = $379;
$381 = ($_cell + 36) | 0;
HEAP32[$381 >> 2] = $_x0;
$382 = ($_cell + 40) | 0;
HEAP32[$382 >> 2] = $_y0;
$383 = ($_cell + 44) | 0;
HEAP32[$383 >> 2] = $_u0;
$384 = ($_cell + 48) | 0;
HEAP32[$384 >> 2] = $_v0;
STACKTOP = sp;
return;
}
function _qr_hom_cell_project($_p, $_cell, $_u, $_v, $_res) {
$_p = $_p | 0;
$_cell = $_cell | 0;
$_u = $_u | 0;
$_v = $_v | 0;
$_res = $_res | 0;
var $$0$i = 0,
$$01$i = 0,
$$02$i = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0;
var $24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0;
var $42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0;
var $60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($_cell + 44) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = $1 << $_res;
$3 = ($_u - $2) | 0;
$4 = ($_cell + 48) | 0;
$5 = HEAP32[$4 >> 2] | 0;
$6 = $5 << $_res;
$7 = ($_v - $6) | 0;
$8 = HEAP32[$_cell >> 2] | 0;
$9 = Math_imul($8, $3) | 0;
$10 = ($_cell + 4) | 0;
$11 = HEAP32[$10 >> 2] | 0;
$12 = Math_imul($11, $7) | 0;
$13 = ($12 + $9) | 0;
$14 = ($_cell + 8) | 0;
$15 = HEAP32[$14 >> 2] | 0;
$16 = $15 << $_res;
$17 = ($13 + $16) | 0;
$18 = ($_cell + 12) | 0;
$19 = HEAP32[$18 >> 2] | 0;
$20 = Math_imul($19, $3) | 0;
$21 = ($_cell + 16) | 0;
$22 = HEAP32[$21 >> 2] | 0;
$23 = Math_imul($22, $7) | 0;
$24 = ($23 + $20) | 0;
$25 = ($_cell + 20) | 0;
$26 = HEAP32[$25 >> 2] | 0;
$27 = $26 << $_res;
$28 = ($24 + $27) | 0;
$29 = ($_cell + 24) | 0;
$30 = HEAP32[$29 >> 2] | 0;
$31 = Math_imul($30, $3) | 0;
$32 = ($_cell + 28) | 0;
$33 = HEAP32[$32 >> 2] | 0;
$34 = Math_imul($33, $7) | 0;
$35 = ($34 + $31) | 0;
$36 = ($_cell + 32) | 0;
$37 = HEAP32[$36 >> 2] | 0;
$38 = $37 << $_res;
$39 = ($35 + $38) | 0;
$40 = ($39 | 0) == 0;
if ($40) {
$41 = $17 >>> 31;
$42 = ($41 + 2147483647) | 0;
HEAP32[$_p >> 2] = $42;
$43 = $28 >>> 31;
$44 = ($43 + 2147483647) | 0;
$45 = ($_p + 4) | 0;
HEAP32[$45 >> 2] = $44;
STACKTOP = sp;
return;
}
$46 = ($39 | 0) < 0;
if ($46) {
$47 = (0 - $17) | 0;
$48 = (0 - $28) | 0;
$49 = (0 - $39) | 0;
$$0$i = $49;
$$01$i = $48;
$$02$i = $47;
} else {
$$0$i = $39;
$$01$i = $28;
$$02$i = $17;
}
$50 = $$0$i >> 1;
$51 = $$02$i >> 31;
$52 = ($50 + $51) | 0;
$53 = $52 ^ $51;
$54 = ($53 + $$02$i) | 0;
$55 = (($54 | 0) / ($$0$i | 0)) & -1;
$56 = ($_cell + 36) | 0;
$57 = HEAP32[$56 >> 2] | 0;
$58 = ($57 + $55) | 0;
HEAP32[$_p >> 2] = $58;
$59 = $$01$i >> 31;
$60 = ($50 + $59) | 0;
$61 = $60 ^ $59;
$62 = ($61 + $$01$i) | 0;
$63 = (($62 | 0) / ($$0$i | 0)) & -1;
$64 = ($_cell + 40) | 0;
$65 = HEAP32[$64 >> 2] | 0;
$66 = ($65 + $63) | 0;
$67 = ($_p + 4) | 0;
HEAP32[$67 >> 2] = $66;
STACKTOP = sp;
return;
}
function _qr_alignment_pattern_search($_p, $_cell, $_u, $_v, $_r, $_img, $_width, $_height) {
$_p = $_p | 0;
$_cell = $_cell | 0;
$_u = $_u | 0;
$_v = $_v | 0;
$_r = $_r | 0;
$_img = $_img | 0;
$_width = $_width | 0;
$_height = $_height | 0;
var $$0 = 0,
$$0$i = 0,
$$0$i13 = 0,
$$01$i = 0,
$$01$i12 = 0,
$$02$i = 0,
$$02$i11 = 0,
$$best_match$156 = 0,
$$bestx$153 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0;
var $108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0;
var $126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0;
var $144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0,
$152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0;
var $162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0,
$170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0;
var $180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0,
$189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0;
var $199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0,
$206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0;
var $216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0,
$224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0;
var $234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0,
$242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0;
var $252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0,
$260 = 0,
$261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0;
var $270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0,
$279 = 0,
$28 = 0,
$280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0;
var $289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0,
$297 = 0,
$298 = 0,
$299 = 0,
$3 = 0,
$30 = 0,
$300 = 0,
$301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0;
var $306 = 0,
$307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0,
$313 = 0,
$314 = 0,
$315 = 0,
$316 = 0,
$317 = 0,
$318 = 0,
$319 = 0,
$32 = 0,
$320 = 0,
$321 = 0,
$322 = 0,
$323 = 0;
var $324 = 0,
$325 = 0,
$326 = 0,
$327 = 0,
$328 = 0,
$329 = 0,
$33 = 0,
$330 = 0,
$331 = 0,
$332 = 0,
$333 = 0,
$334 = 0,
$335 = 0,
$336 = 0,
$337 = 0,
$338 = 0,
$339 = 0,
$34 = 0,
$340 = 0,
$341 = 0;
var $342 = 0,
$343 = 0,
$344 = 0,
$345 = 0,
$346 = 0,
$347 = 0,
$348 = 0,
$349 = 0,
$35 = 0,
$350 = 0,
$351 = 0,
$352 = 0,
$353 = 0,
$354 = 0,
$355 = 0,
$356 = 0,
$357 = 0,
$358 = 0,
$359 = 0,
$36 = 0;
var $360 = 0,
$361 = 0,
$362 = 0,
$363 = 0,
$364 = 0,
$365 = 0,
$366 = 0,
$367 = 0,
$368 = 0,
$369 = 0,
$37 = 0,
$370 = 0,
$371 = 0,
$372 = 0,
$373 = 0,
$374 = 0,
$375 = 0,
$38 = 0,
$39 = 0,
$4 = 0;
var $40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0;
var $59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0;
var $77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0;
var $95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$best_dist$0$lcssa = 0,
$best_dist$078 = 0,
$best_dist$1$lcssa = 0,
$best_dist$154 = 0,
$best_dist$425 = 0,
$best_match$0$lcssa = 0,
$best_match$079 = 0,
$best_match$1$lcssa = 0,
$best_match$156 = 0,
$best_match$426 = 0,
$bestx$0$lcssa = 0,
$bestx$077 = 0,
$bestx$1$lcssa = 0,
$bestx$153 = 0,
$bestx$4$ = 0;
var $bestx$424 = 0,
$bestx$5 = 0,
$besty$0$lcssa = 0,
$besty$076 = 0,
$besty$1$lcssa = 0,
$besty$152 = 0,
$besty$4$ = 0,
$besty$423 = 0,
$besty$5 = 0,
$c = 0,
$cx$0 = 0,
$cy$0 = 0,
$exitcond = 0,
$exitcond113 = 0,
$exitcond114 = 0,
$i$097 = 0,
$i$175 = 0,
$i$238 = 0,
$j$092 = 0,
$j$151 = 0;
var $nc = 0,
$or$cond = 0,
$or$cond$i = 0,
$or$cond$i19 = 0,
$or$cond$i8 = 0,
$or$cond1 = 0,
$or$cond1$i = 0,
$or$cond1$i15 = 0,
$or$cond2 = 0,
$or$cond3 = 0,
$or$cond4 = 0,
$or$cond4$1 = 0,
$p = 0,
$pc = 0,
$ret$0$lcssa$i = 0,
$ret$0$lcssa$i20 = 0,
$ret$0$lcssa$i20$best_dist$154 = 0,
$ret$03$i = 0,
$ret$03$i17 = 0,
$ret$03$i6 = 0;
var $storemerge = 0,
$storemerge$1 = 0,
$storemerge$besty$152 = 0,
$sum = 0,
$sum98 = 0,
$sum99 = 0,
$w$089 = 0,
$w$172 = 0,
$w$2$lcssa = 0,
$w$248 = 0,
$w$3 = 0,
$w0$094 = 0,
$w3$0 = 0,
$x$091 = 0,
$x$174 = 0,
$x$2$lcssa = 0,
$x$250 = 0,
$x$3 = 0,
$x0$096 = 0,
$y$02$i = 0;
var $y$02$i18 = 0,
$y$02$i7 = 0,
$y$090 = 0,
$y$173 = 0,
$y$2$lcssa = 0,
$y$249 = 0,
$y$3 = 0,
$y0$095 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 256) | 0;
$c = (sp + 224) | 0;
$nc = (sp + 208) | 0;
$p = (sp + 8) | 0;
$pc = sp;
$0 = ($_u + -2) | 0;
$1 = ($_cell + 44) | 0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($0 - $2) | 0;
$4 = ($_v + -2) | 0;
$5 = ($_cell + 48) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($4 - $6) | 0;
$8 = HEAP32[$_cell >> 2] | 0;
$9 = Math_imul($8, $3) | 0;
$10 = ($_cell + 4) | 0;
$11 = HEAP32[$10 >> 2] | 0;
$12 = Math_imul($11, $7) | 0;
$13 = ($12 + $9) | 0;
$14 = ($_cell + 8) | 0;
$15 = HEAP32[$14 >> 2] | 0;
$16 = ($13 + $15) | 0;
$17 = ($_cell + 12) | 0;
$18 = HEAP32[$17 >> 2] | 0;
$19 = Math_imul($18, $3) | 0;
$20 = ($_cell + 16) | 0;
$21 = HEAP32[$20 >> 2] | 0;
$22 = Math_imul($21, $7) | 0;
$23 = ($22 + $19) | 0;
$24 = ($_cell + 20) | 0;
$25 = HEAP32[$24 >> 2] | 0;
$26 = ($23 + $25) | 0;
$27 = ($_cell + 24) | 0;
$28 = HEAP32[$27 >> 2] | 0;
$29 = Math_imul($28, $3) | 0;
$30 = ($_cell + 28) | 0;
$31 = HEAP32[$30 >> 2] | 0;
$32 = Math_imul($31, $7) | 0;
$33 = ($32 + $29) | 0;
$34 = ($_cell + 32) | 0;
$35 = HEAP32[$34 >> 2] | 0;
$36 = ($33 + $35) | 0;
$37 = ($_cell + 36) | 0;
$38 = ($_cell + 40) | 0;
$i$097 = 0;
$w0$094 = $36;
$x0$096 = $16;
$y0$095 = $26;
while (1) {
$j$092 = 0;
$w$089 = $w0$094;
$x$091 = $x0$096;
$y$090 = $y0$095;
while (1) {
$39 = ((($p + (($i$097 * 40) | 0)) | 0) + ($j$092 << 3)) | 0;
$40 = ($w$089 | 0) == 0;
if ($40) {
$41 = $x$091 >>> 31;
$42 = ($41 + 2147483647) | 0;
HEAP32[$39 >> 2] = $42;
$43 = $y$090 >>> 31;
$44 = ($43 + 2147483647) | 0;
$45 = ((((($p + (($i$097 * 40) | 0)) | 0) + ($j$092 << 3)) | 0) + 4) | 0;
HEAP32[$45 >> 2] = $44;
} else {
$46 = ($w$089 | 0) < 0;
if ($46) {
$47 = (0 - $x$091) | 0;
$48 = (0 - $y$090) | 0;
$49 = (0 - $w$089) | 0;
$$0$i = $49;
$$01$i = $48;
$$02$i = $47;
} else {
$$0$i = $w$089;
$$01$i = $y$090;
$$02$i = $x$091;
}
$50 = $$0$i >> 1;
$51 = $$02$i >> 31;
$52 = ($50 + $51) | 0;
$53 = $52 ^ $51;
$54 = ($53 + $$02$i) | 0;
$55 = (($54 | 0) / ($$0$i | 0)) & -1;
$56 = HEAP32[$37 >> 2] | 0;
$57 = ($56 + $55) | 0;
HEAP32[$39 >> 2] = $57;
$58 = $$01$i >> 31;
$59 = ($50 + $58) | 0;
$60 = $59 ^ $58;
$61 = ($60 + $$01$i) | 0;
$62 = (($61 | 0) / ($$0$i | 0)) & -1;
$63 = HEAP32[$38 >> 2] | 0;
$64 = ($63 + $62) | 0;
$65 = ((((($p + (($i$097 * 40) | 0)) | 0) + ($j$092 << 3)) | 0) + 4) | 0;
HEAP32[$65 >> 2] = $64;
}
$66 = ($x$091 + $8) | 0;
$67 = ($y$090 + $18) | 0;
$68 = ($w$089 + $28) | 0;
$69 = ($j$092 + 1) | 0;
$exitcond113 = ($69 | 0) == 5;
if ($exitcond113) {
break;
} else {
$j$092 = $69;
$w$089 = $68;
$x$091 = $66;
$y$090 = $67;
}
}
$70 = ($x0$096 + $11) | 0;
$71 = ($y0$095 + $21) | 0;
$72 = ($w0$094 + $31) | 0;
$73 = ($i$097 + 1) | 0;
$exitcond114 = ($73 | 0) == 5;
if ($exitcond114) {
break;
} else {
$i$097 = $73;
$w0$094 = $72;
$x0$096 = $70;
$y0$095 = $71;
}
}
$74 = ($p + 96) | 0;
$75 = HEAP32[$74 >> 2] | 0;
$76 = ($p + 100) | 0;
$77 = HEAP32[$76 >> 2] | 0;
$78 = _qr_alignment_pattern_fetch($p, $75, $77, $_img, $_width, $_height) | 0;
$79 = ($78 | 0) == 33084991;
L14: do {
if ($79) {
$best_dist$425 = 0;
$best_match$426 = 33084991;
$bestx$424 = $75;
$besty$423 = $77;
} else {
$80 = $78 ^ 33084991;
$ret$03$i6 = 0;
$y$02$i7 = $80;
while (1) {
$81 = ($y$02$i7 + -1) | 0;
$82 = $81 & $y$02$i7;
$83 = ($ret$03$i6 + 1) | 0;
$84 = ($ret$03$i6 | 0) > 23;
$85 = ($82 | 0) == 0;
$or$cond$i8 = $84 | $85;
if ($or$cond$i8) {
break;
} else {
$ret$03$i6 = $83;
$y$02$i7 = $82;
}
}
$86 = ($ret$03$i6 | 0) > -1;
if ($86) {
$87 = ($_u - $2) | 0;
$88 = ($_v - $6) | 0;
$89 = $_r << 2;
$90 = ($89 | 0) > 1;
if ($90) {
$91 = Math_imul($31, $88) | 0;
$92 = Math_imul($28, $87) | 0;
$93 = Math_imul($21, $88) | 0;
$94 = Math_imul($18, $87) | 0;
$95 = Math_imul($11, $88) | 0;
$96 = Math_imul($8, $87) | 0;
$97 = ($91 + $92) | 0;
$98 = ($93 + $94) | 0;
$99 = ($95 + $96) | 0;
$100 = ($97 + $35) | 0;
$101 = ($98 + $25) | 0;
$102 = ($99 + $15) | 0;
$103 = $100 << 2;
$104 = $101 << 2;
$105 = $102 << 2;
$sum = ($11 + $8) | 0;
$sum98 = ($21 + $18) | 0;
$sum99 = ($31 + $28) | 0;
$106 = ($pc + 4) | 0;
$best_dist$078 = $83;
$best_match$079 = $78;
$bestx$077 = $75;
$besty$076 = $77;
$i$175 = 1;
$w$172 = $103;
$x$174 = $105;
$y$173 = $104;
while (1) {
$109 = $i$175 << 1;
$110 = ($109 + -1) | 0;
$111 = ($x$174 - $sum) | 0;
$112 = ($y$173 - $sum98) | 0;
$113 = ($w$172 - $sum99) | 0;
$114 = $110 << 2;
$115 = ($110 | 0) > 0;
if ($115) {
$116 = $110 << 1;
$117 = ($110 * 3) | 0;
$best_dist$154 = $best_dist$078;
$best_match$156 = $best_match$079;
$bestx$153 = $bestx$077;
$besty$152 = $besty$076;
$j$151 = 0;
$w$248 = $113;
$x$250 = $111;
$y$249 = $112;
while (1) {
$120 = ($w$248 | 0) == 0;
if ($120) {
$121 = $x$250 >>> 31;
$122 = ($121 + 2147483647) | 0;
HEAP32[$pc >> 2] = $122;
$123 = $y$249 >>> 31;
$124 = ($123 + 2147483647) | 0;
$144 = $122;
$storemerge = $124;
} else {
$125 = ($w$248 | 0) < 0;
if ($125) {
$126 = (0 - $x$250) | 0;
$127 = (0 - $y$249) | 0;
$128 = (0 - $w$248) | 0;
$$0$i13 = $128;
$$01$i12 = $127;
$$02$i11 = $126;
} else {
$$0$i13 = $w$248;
$$01$i12 = $y$249;
$$02$i11 = $x$250;
}
$129 = $$0$i13 >> 1;
$130 = $$02$i11 >> 31;
$131 = ($129 + $130) | 0;
$132 = $131 ^ $130;
$133 = ($132 + $$02$i11) | 0;
$134 = (($133 | 0) / ($$0$i13 | 0)) & -1;
$135 = HEAP32[$37 >> 2] | 0;
$136 = ($135 + $134) | 0;
HEAP32[$pc >> 2] = $136;
$137 = $$01$i12 >> 31;
$138 = ($129 + $137) | 0;
$139 = $138 ^ $137;
$140 = ($139 + $$01$i12) | 0;
$141 = (($140 | 0) / ($$0$i13 | 0)) & -1;
$142 = HEAP32[$38 >> 2] | 0;
$143 = ($142 + $141) | 0;
$144 = $136;
$storemerge = $143;
}
HEAP32[$106 >> 2] = $storemerge;
$145 = _qr_alignment_pattern_fetch($p, $144, $storemerge, $_img, $_width, $_height) | 0;
$146 = ($best_dist$154 | 0) < 0;
$147 = ($145 | 0) == 33084991;
$or$cond1$i15 = $146 | $147;
if ($or$cond1$i15) {
$ret$0$lcssa$i20 = 0;
} else {
$148 = $145 ^ 33084991;
$ret$03$i17 = 0;
$y$02$i18 = $148;
while (1) {
$149 = ($y$02$i18 + -1) | 0;
$150 = $149 & $y$02$i18;
$151 = ($ret$03$i17 + 1) | 0;
$152 = ($ret$03$i17 | 0) >= ($best_dist$154 | 0);
$153 = ($150 | 0) == 0;
$or$cond$i19 = $152 | $153;
if ($or$cond$i19) {
$ret$0$lcssa$i20 = $151;
break;
} else {
$ret$03$i17 = $151;
$y$02$i18 = $150;
}
}
}
$154 = ($ret$0$lcssa$i20 | 0) < ($best_dist$154 | 0);
$storemerge$besty$152 = $154 ? $storemerge : $besty$152;
$$bestx$153 = $154 ? $144 : $bestx$153;
$ret$0$lcssa$i20$best_dist$154 = $154 ? $ret$0$lcssa$i20 : $best_dist$154;
$$best_match$156 = $154 ? $145 : $best_match$156;
$155 = ($j$151 | 0) < ($116 | 0);
if ($155) {
$156 = ($j$151 | 0) >= ($110 | 0);
$157 = $156 & 1;
$158 = ($_cell + ($157 << 2)) | 0;
$159 = HEAP32[$158 >> 2] | 0;
$160 = ($159 + $x$250) | 0;
$161 = ((($_cell + ($157 << 2)) | 0) + 12) | 0;
$162 = HEAP32[$161 >> 2] | 0;
$163 = ($162 + $y$249) | 0;
$164 = ((($_cell + ($157 << 2)) | 0) + 24) | 0;
$165 = HEAP32[$164 >> 2] | 0;
$166 = ($165 + $w$248) | 0;
$w$3 = $166;
$x$3 = $160;
$y$3 = $163;
} else {
$167 = ($j$151 | 0) >= ($117 | 0);
$168 = $167 & 1;
$169 = ($_cell + ($168 << 2)) | 0;
$170 = HEAP32[$169 >> 2] | 0;
$171 = ($x$250 - $170) | 0;
$172 = ((($_cell + ($168 << 2)) | 0) + 12) | 0;
$173 = HEAP32[$172 >> 2] | 0;
$174 = ($y$249 - $173) | 0;
$175 = ((($_cell + ($168 << 2)) | 0) + 24) | 0;
$176 = HEAP32[$175 >> 2] | 0;
$177 = ($w$248 - $176) | 0;
$w$3 = $177;
$x$3 = $171;
$y$3 = $174;
}
$178 = ($ret$0$lcssa$i20$best_dist$154 | 0) == 0;
$118 = ($j$151 + 1) | 0;
if ($178) {
$best_dist$425 = 0;
$best_match$426 = $$best_match$156;
$bestx$424 = $$bestx$153;
$besty$423 = $storemerge$besty$152;
break L14;
}
$119 = ($118 | 0) < ($114 | 0);
if ($119) {
$best_dist$154 = $ret$0$lcssa$i20$best_dist$154;
$best_match$156 = $$best_match$156;
$bestx$153 = $$bestx$153;
$besty$152 = $storemerge$besty$152;
$j$151 = $118;
$w$248 = $w$3;
$x$250 = $x$3;
$y$249 = $y$3;
} else {
$best_dist$1$lcssa = $ret$0$lcssa$i20$best_dist$154;
$best_match$1$lcssa = $$best_match$156;
$bestx$1$lcssa = $$bestx$153;
$besty$1$lcssa = $storemerge$besty$152;
$w$2$lcssa = $w$3;
$x$2$lcssa = $x$3;
$y$2$lcssa = $y$3;
break;
}
}
} else {
$best_dist$1$lcssa = $best_dist$078;
$best_match$1$lcssa = $best_match$079;
$bestx$1$lcssa = $bestx$077;
$besty$1$lcssa = $besty$076;
$w$2$lcssa = $113;
$x$2$lcssa = $111;
$y$2$lcssa = $112;
}
$179 = ($best_dist$1$lcssa | 0) == 0;
$107 = ($i$175 + 1) | 0;
if ($179) {
$best_dist$425 = 0;
$best_match$426 = $best_match$1$lcssa;
$bestx$424 = $bestx$1$lcssa;
$besty$423 = $besty$1$lcssa;
break L14;
}
$108 = ($107 | 0) < ($89 | 0);
if ($108) {
$best_dist$078 = $best_dist$1$lcssa;
$best_match$079 = $best_match$1$lcssa;
$bestx$077 = $bestx$1$lcssa;
$besty$076 = $besty$1$lcssa;
$i$175 = $107;
$w$172 = $w$2$lcssa;
$x$174 = $x$2$lcssa;
$y$173 = $y$2$lcssa;
} else {
$best_dist$0$lcssa = $best_dist$1$lcssa;
$best_match$0$lcssa = $best_match$1$lcssa;
$bestx$0$lcssa = $bestx$1$lcssa;
$besty$0$lcssa = $besty$1$lcssa;
break;
}
}
} else {
$best_dist$0$lcssa = $83;
$best_match$0$lcssa = $78;
$bestx$0$lcssa = $75;
$besty$0$lcssa = $77;
}
$180 = ($best_dist$0$lcssa | 0) > 6;
if ($180) {
HEAP32[$_p >> 2] = $75;
$181 = ($_p + 4) | 0;
HEAP32[$181 >> 2] = $77;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
} else {
$best_dist$425 = $best_dist$0$lcssa;
$best_match$426 = $best_match$0$lcssa;
$bestx$424 = $bestx$0$lcssa;
$besty$423 = $besty$0$lcssa;
}
} else {
$best_dist$425 = $83;
$best_match$426 = $78;
$bestx$424 = $75;
$besty$423 = $77;
}
}
} while (0);
$182 = ($bestx$424 - $75) | 0;
$183 = ($besty$423 - $77) | 0;
HEAP32[($nc + 0) >> 2] = 0 | 0;
HEAP32[($nc + 4) >> 2] = 0 | 0;
HEAP32[($nc + 8) >> 2] = 0 | 0;
HEAP32[($nc + 12) >> 2] = 0 | 0;
HEAP32[($c + 0) >> 2] = 0 | 0;
HEAP32[($c + 4) >> 2] = 0 | 0;
HEAP32[($c + 8) >> 2] = 0 | 0;
HEAP32[($c + 12) >> 2] = 0 | 0;
HEAP32[($c + 16) >> 2] = 0 | 0;
HEAP32[($c + 20) >> 2] = 0 | 0;
HEAP32[($c + 24) >> 2] = 0 | 0;
HEAP32[($c + 28) >> 2] = 0 | 0;
$184 = ($pc + 4) | 0;
$i$238 = 0;
while (1) {
$190 = (7672 + ($i$238 << 3)) | 0;
$191 = HEAP32[$190 >> 2] | 0;
$192 = $191 & $best_match$426;
$193 = (((7672 + ($i$238 << 3)) | 0) + 4) | 0;
$194 = HEAP32[$193 >> 2] | 0;
$195 = ($192 | 0) == ($194 | 0);
if ($195) {
$196 = (7736 + ($i$238 << 1)) | 0;
$197 = HEAP8[$196 >> 0] | 0;
$198 = $197 & 255;
$199 = (((7736 + ($i$238 << 1)) | 0) + 1) | 0;
$200 = HEAP8[$199 >> 0] | 0;
$201 = $200 & 255;
$202 = ((($p + (($201 * 40) | 0)) | 0) + ($198 << 3)) | 0;
$203 = HEAP32[$202 >> 2] | 0;
$204 = ($203 + $182) | 0;
$205 = $204 >> 2;
$206 = ($205 | 0) > -1;
$207 = ($205 | 0) < ($_width | 0);
$or$cond = $206 & $207;
if ($or$cond) {
$208 = ((((($p + (($201 * 40) | 0)) | 0) + ($198 << 3)) | 0) + 4) | 0;
$209 = HEAP32[$208 >> 2] | 0;
$210 = ($209 + $183) | 0;
$211 = $210 >> 2;
$212 = ($211 | 0) > -1;
$213 = ($211 | 0) < ($_height | 0);
$or$cond1 = $212 & $213;
if ($or$cond1) {
$214 = (4 - $198) | 0;
$215 = (4 - $201) | 0;
$216 = ((($p + (($215 * 40) | 0)) | 0) + ($214 << 3)) | 0;
$217 = HEAP32[$216 >> 2] | 0;
$218 = ($217 + $182) | 0;
$219 = $218 >> 2;
$220 = ($219 | 0) > -1;
$221 = ($219 | 0) < ($_width | 0);
$or$cond2 = $220 & $221;
if ($or$cond2) {
$222 = ((((($p + (($215 * 40) | 0)) | 0) + ($214 << 3)) | 0) + 4) | 0;
$223 = HEAP32[$222 >> 2] | 0;
$224 = ($223 + $183) | 0;
$225 = $224 >> 2;
$226 = ($225 | 0) > -1;
$227 = ($225 | 0) < ($_height | 0);
$or$cond3 = $226 & $227;
if ($or$cond3) {
$228 = $i$238 & 1;
$229 = _qr_finder_locate_crossing($_img, $_width, $205, $211, $219, $225, $228, $pc) | 0;
$230 = ($229 | 0) == 0;
if ($230) {
$231 = HEAP32[$pc >> 2] | 0;
$232 = ($231 - $bestx$424) | 0;
$233 = HEAP32[$184 >> 2] | 0;
$234 = ($233 - $besty$423) | 0;
$235 = ($228 | 0) == 0;
if ($235) {
$cx$0 = $232;
$cy$0 = $234;
$w3$0 = 1;
} else {
$236 = ($232 * 3) | 0;
$237 = ($234 * 3) | 0;
$cx$0 = $236;
$cy$0 = $237;
$w3$0 = 3;
}
$238 = $i$238 >> 1;
$239 = ($nc + ($238 << 2)) | 0;
$240 = HEAP32[$239 >> 2] | 0;
$241 = ($240 + $w3$0) | 0;
HEAP32[$239 >> 2] = $241;
$242 = ($c + ($238 << 3)) | 0;
$243 = HEAP32[$242 >> 2] | 0;
$244 = ($243 + $cx$0) | 0;
HEAP32[$242 >> 2] = $244;
$245 = ((($c + ($238 << 3)) | 0) + 4) | 0;
$246 = HEAP32[$245 >> 2] | 0;
$247 = ($246 + $cy$0) | 0;
HEAP32[$245 >> 2] = $247;
}
}
}
}
}
}
$248 = ($i$238 + 1) | 0;
$exitcond = ($248 | 0) == 8;
if ($exitcond) {
break;
} else {
$i$238 = $248;
}
}
$185 = HEAP32[$nc >> 2] | 0;
$186 = ($nc + 4) | 0;
$187 = HEAP32[$186 >> 2] | 0;
$188 = ($185 | 0) == 0;
$189 = ($187 | 0) == 0;
$or$cond4 = $188 | $189;
if ($or$cond4) {
$281 = ($c + 8) | 0;
$282 = HEAP32[$281 >> 2] | 0;
$283 = HEAP32[$c >> 2] | 0;
$284 = ($283 + $282) | 0;
HEAP32[$c >> 2] = $284;
$285 = ($c + 12) | 0;
$286 = HEAP32[$285 >> 2] | 0;
$287 = ($c + 4) | 0;
$288 = HEAP32[$287 >> 2] | 0;
$289 = ($288 + $286) | 0;
HEAP32[$287 >> 2] = $289;
$290 = ($185 + $187) | 0;
$291 = $290;
$371 = $284;
$374 = $289;
} else {
$249 = ($185 - $187) | 0;
$250 = ($187 | 0) > ($185 | 0);
$251 = $250 ? $249 : 0;
$252 = ($185 - $251) | 0;
$253 = HEAP32[$c >> 2] | 0;
$254 = Math_imul($253, $187) | 0;
$255 = ($c + 8) | 0;
$256 = HEAP32[$255 >> 2] | 0;
$257 = Math_imul($256, $185) | 0;
$258 = ($257 + $254) | 0;
$259 = Math_imul($258, $252) | 0;
$260 = Math_imul($187, $185) | 0;
$261 = $260 >> 1;
$262 = $259 >> 31;
$263 = ($262 + $261) | 0;
$264 = $263 ^ $262;
$265 = ($264 + $259) | 0;
$266 = (($265 | 0) / ($260 | 0)) & -1;
HEAP32[$c >> 2] = $266;
$267 = ($c + 4) | 0;
$268 = HEAP32[$267 >> 2] | 0;
$269 = Math_imul($268, $187) | 0;
$270 = ($c + 12) | 0;
$271 = HEAP32[$270 >> 2] | 0;
$272 = Math_imul($271, $185) | 0;
$273 = ($272 + $269) | 0;
$274 = Math_imul($273, $252) | 0;
$275 = $274 >> 31;
$276 = ($275 + $261) | 0;
$277 = $276 ^ $275;
$278 = ($277 + $274) | 0;
$279 = (($278 | 0) / ($260 | 0)) & -1;
HEAP32[$267 >> 2] = $279;
$280 = $252 << 1;
$291 = $280;
$371 = $266;
$374 = $279;
}
HEAP32[$nc >> 2] = $291;
$292 = ($nc + 8) | 0;
$293 = HEAP32[$292 >> 2] | 0;
$294 = ($nc + 12) | 0;
$295 = HEAP32[$294 >> 2] | 0;
$296 = ($293 | 0) == 0;
$297 = ($295 | 0) == 0;
$or$cond4$1 = $296 | $297;
if ($or$cond4$1) {
$359 = ($c + 24) | 0;
$360 = HEAP32[$359 >> 2] | 0;
$361 = ($c + 16) | 0;
$362 = HEAP32[$361 >> 2] | 0;
$363 = ($362 + $360) | 0;
HEAP32[$361 >> 2] = $363;
$364 = ($c + 28) | 0;
$365 = HEAP32[$364 >> 2] | 0;
$366 = ($c + 20) | 0;
$367 = HEAP32[$366 >> 2] | 0;
$368 = ($367 + $365) | 0;
HEAP32[$366 >> 2] = $368;
$369 = ($293 + $295) | 0;
$370 = $363;
$373 = $368;
$storemerge$1 = $369;
} else {
$326 = ($293 - $295) | 0;
$327 = ($295 | 0) > ($293 | 0);
$328 = $327 ? $326 : 0;
$329 = ($293 - $328) | 0;
$330 = ($c + 16) | 0;
$331 = HEAP32[$330 >> 2] | 0;
$332 = Math_imul($331, $295) | 0;
$333 = ($c + 24) | 0;
$334 = HEAP32[$333 >> 2] | 0;
$335 = Math_imul($334, $293) | 0;
$336 = ($335 + $332) | 0;
$337 = Math_imul($336, $329) | 0;
$338 = Math_imul($295, $293) | 0;
$339 = $338 >> 1;
$340 = $337 >> 31;
$341 = ($340 + $339) | 0;
$342 = $341 ^ $340;
$343 = ($342 + $337) | 0;
$344 = (($343 | 0) / ($338 | 0)) & -1;
HEAP32[$330 >> 2] = $344;
$345 = ($c + 20) | 0;
$346 = HEAP32[$345 >> 2] | 0;
$347 = Math_imul($346, $295) | 0;
$348 = ($c + 28) | 0;
$349 = HEAP32[$348 >> 2] | 0;
$350 = Math_imul($349, $293) | 0;
$351 = ($350 + $347) | 0;
$352 = Math_imul($351, $329) | 0;
$353 = $352 >> 31;
$354 = ($353 + $339) | 0;
$355 = $354 ^ $353;
$356 = ($355 + $352) | 0;
$357 = (($356 | 0) / ($338 | 0)) & -1;
HEAP32[$345 >> 2] = $357;
$358 = $329 << 1;
$370 = $344;
$373 = $357;
$storemerge$1 = $358;
}
HEAP32[$292 >> 2] = $storemerge$1;
$301 = ($371 + $370) | 0;
HEAP32[$c >> 2] = $301;
$372 = ($c + 4) | 0;
$307 = ($374 + $373) | 0;
HEAP32[$372 >> 2] = $307;
$299 = ($291 + $storemerge$1) | 0;
HEAP32[$nc >> 2] = $299;
$375 = ($299 | 0) == 0;
if ($375) {
$bestx$5 = $bestx$424;
$besty$5 = $besty$423;
} else {
$298 = $299 >> 1;
$300 = $301 >> 31;
$302 = ($300 + $298) | 0;
$303 = $302 ^ $300;
$304 = ($303 + $301) | 0;
$305 = (($304 | 0) / ($299 | 0)) & -1;
$306 = $307 >> 31;
$308 = ($306 + $298) | 0;
$309 = $308 ^ $306;
$310 = ($309 + $307) | 0;
$311 = (($310 | 0) / ($299 | 0)) & -1;
$312 = ($305 + $bestx$424) | 0;
$313 = ($311 + $besty$423) | 0;
$314 = _qr_alignment_pattern_fetch($p, $312, $313, $_img, $_width, $_height) | 0;
$315 = ($best_dist$425 + 1) | 0;
$316 = ($best_dist$425 | 0) < 0;
$317 = ($314 | 0) == 33084991;
$or$cond1$i = $316 | $317;
if ($or$cond1$i) {
$ret$0$lcssa$i = 0;
} else {
$318 = $314 ^ 33084991;
$ret$03$i = 0;
$y$02$i = $318;
while (1) {
$319 = ($y$02$i + -1) | 0;
$320 = $319 & $y$02$i;
$321 = ($ret$03$i + 1) | 0;
$322 = ($321 | 0) >= ($315 | 0);
$323 = ($320 | 0) == 0;
$or$cond$i = $322 | $323;
if ($or$cond$i) {
$ret$0$lcssa$i = $321;
break;
} else {
$ret$03$i = $321;
$y$02$i = $320;
}
}
}
$324 = ($ret$0$lcssa$i | 0) > ($315 | 0);
$besty$4$ = $324 ? $besty$423 : $313;
$bestx$4$ = $324 ? $bestx$424 : $312;
$bestx$5 = $bestx$4$;
$besty$5 = $besty$4$;
}
HEAP32[$_p >> 2] = $bestx$5;
$325 = ($_p + 4) | 0;
HEAP32[$325 >> 2] = $besty$5;
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
function _qr_alignment_pattern_fetch($_p, $_x0, $_y0, $_img, $_width, $_height) {
$_p = $_p | 0;
$_x0 = $_x0 | 0;
$_y0 = $_y0 | 0;
$_img = $_img | 0;
$_width = $_width | 0;
$_height = $_height | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0;
var $116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0;
var $14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0;
var $32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0;
var $50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0;
var $69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0;
var $87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$exitcond = 0,
$i$06 = 0,
$k$05 = 0,
$v$07 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($_p + 96) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($_x0 - $1) | 0;
$3 = ($_p + 100) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($_y0 - $4) | 0;
$6 = ($_height + -1) | 0;
$7 = ($_width + -1) | 0;
$i$06 = 0;
$k$05 = 0;
$v$07 = 0;
while (1) {
$8 = ($_p + (($i$06 * 40) | 0)) | 0;
$9 = HEAP32[$8 >> 2] | 0;
$10 = ($2 + $9) | 0;
$11 = ((($_p + (($i$06 * 40) | 0)) | 0) + 4) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($5 + $12) | 0;
$14 = $10 >> 2;
$15 = $13 >> 2;
$16 = ($15 | 0) >= ($_height | 0);
$17 = $16 ? $6 : $15;
$18 = ($17 | 0) > 0;
$19 = $18 ? $17 : 0;
$20 = Math_imul($19, $_width) | 0;
$21 = ($14 | 0) >= ($_width | 0);
$22 = $21 ? $7 : $14;
$23 = ($22 | 0) > 0;
$24 = $23 ? $22 : 0;
$25 = ($20 + $24) | 0;
$26 = ($_img + $25) | 0;
$27 = HEAP8[$26 >> 0] | 0;
$28 = ($27 << 24) >> 24 != 0;
$29 = $28 & 1;
$30 = $29 << $k$05;
$31 = $30 | $v$07;
$32 = ($k$05 + 1) | 0;
$33 = ((($_p + (($i$06 * 40) | 0)) | 0) + 8) | 0;
$34 = HEAP32[$33 >> 2] | 0;
$35 = ($2 + $34) | 0;
$36 = ((($_p + (($i$06 * 40) | 0)) | 0) + 12) | 0;
$37 = HEAP32[$36 >> 2] | 0;
$38 = ($5 + $37) | 0;
$39 = $35 >> 2;
$40 = $38 >> 2;
$41 = ($40 | 0) >= ($_height | 0);
$42 = $41 ? $6 : $40;
$43 = ($42 | 0) > 0;
$44 = $43 ? $42 : 0;
$45 = Math_imul($44, $_width) | 0;
$46 = ($39 | 0) >= ($_width | 0);
$47 = $46 ? $7 : $39;
$48 = ($47 | 0) > 0;
$49 = $48 ? $47 : 0;
$50 = ($45 + $49) | 0;
$51 = ($_img + $50) | 0;
$52 = HEAP8[$51 >> 0] | 0;
$53 = ($52 << 24) >> 24 != 0;
$54 = $53 & 1;
$55 = $54 << $32;
$56 = $55 | $31;
$57 = ($k$05 + 2) | 0;
$58 = ((($_p + (($i$06 * 40) | 0)) | 0) + 16) | 0;
$59 = HEAP32[$58 >> 2] | 0;
$60 = ($2 + $59) | 0;
$61 = ((($_p + (($i$06 * 40) | 0)) | 0) + 20) | 0;
$62 = HEAP32[$61 >> 2] | 0;
$63 = ($5 + $62) | 0;
$64 = $60 >> 2;
$65 = $63 >> 2;
$66 = ($65 | 0) >= ($_height | 0);
$67 = $66 ? $6 : $65;
$68 = ($67 | 0) > 0;
$69 = $68 ? $67 : 0;
$70 = Math_imul($69, $_width) | 0;
$71 = ($64 | 0) >= ($_width | 0);
$72 = $71 ? $7 : $64;
$73 = ($72 | 0) > 0;
$74 = $73 ? $72 : 0;
$75 = ($70 + $74) | 0;
$76 = ($_img + $75) | 0;
$77 = HEAP8[$76 >> 0] | 0;
$78 = ($77 << 24) >> 24 != 0;
$79 = $78 & 1;
$80 = $79 << $57;
$81 = $80 | $56;
$82 = ($k$05 + 3) | 0;
$83 = ((($_p + (($i$06 * 40) | 0)) | 0) + 24) | 0;
$84 = HEAP32[$83 >> 2] | 0;
$85 = ($2 + $84) | 0;
$86 = ((($_p + (($i$06 * 40) | 0)) | 0) + 28) | 0;
$87 = HEAP32[$86 >> 2] | 0;
$88 = ($5 + $87) | 0;
$89 = $85 >> 2;
$90 = $88 >> 2;
$91 = ($90 | 0) >= ($_height | 0);
$92 = $91 ? $6 : $90;
$93 = ($92 | 0) > 0;
$94 = $93 ? $92 : 0;
$95 = Math_imul($94, $_width) | 0;
$96 = ($89 | 0) >= ($_width | 0);
$97 = $96 ? $7 : $89;
$98 = ($97 | 0) > 0;
$99 = $98 ? $97 : 0;
$100 = ($95 + $99) | 0;
$101 = ($_img + $100) | 0;
$102 = HEAP8[$101 >> 0] | 0;
$103 = ($102 << 24) >> 24 != 0;
$104 = $103 & 1;
$105 = $104 << $82;
$106 = $105 | $81;
$107 = ($k$05 + 4) | 0;
$108 = ((($_p + (($i$06 * 40) | 0)) | 0) + 32) | 0;
$109 = HEAP32[$108 >> 2] | 0;
$110 = ($2 + $109) | 0;
$111 = ((($_p + (($i$06 * 40) | 0)) | 0) + 36) | 0;
$112 = HEAP32[$111 >> 2] | 0;
$113 = ($5 + $112) | 0;
$114 = $110 >> 2;
$115 = $113 >> 2;
$116 = ($115 | 0) >= ($_height | 0);
$117 = $116 ? $6 : $115;
$118 = ($117 | 0) > 0;
$119 = $118 ? $117 : 0;
$120 = Math_imul($119, $_width) | 0;
$121 = ($114 | 0) >= ($_width | 0);
$122 = $121 ? $7 : $114;
$123 = ($122 | 0) > 0;
$124 = $123 ? $122 : 0;
$125 = ($120 + $124) | 0;
$126 = ($_img + $125) | 0;
$127 = HEAP8[$126 >> 0] | 0;
$128 = ($127 << 24) >> 24 != 0;
$129 = $128 & 1;
$130 = $129 << $107;
$131 = $130 | $106;
$132 = ($k$05 + 5) | 0;
$133 = ($i$06 + 1) | 0;
$exitcond = ($133 | 0) == 5;
if ($exitcond) {
break;
} else {
$i$06 = $133;
$k$05 = $132;
$v$07 = $131;
}
}
STACKTOP = sp;
return $131 | 0;
}
function _qr_finder_locate_crossing($_img, $_width, $_x0, $_y0, $_x1, $_y1, $_v, $_p) {
$_img = $_img | 0;
$_width = $_width | 0;
$_x0 = $_x0 | 0;
$_y0 = $_y0 | 0;
$_x1 = $_x1 | 0;
$_y1 = $_y1 | 0;
$_v = $_v | 0;
$_p = $_p | 0;
var $$0 = 0,
$$pre = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0;
var $25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0;
var $43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0;
var $61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0;
var $8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$9 = 0,
$dx = 0,
$err$0 = 0,
$err$1 = 0,
$err$2 = 0,
$err$3 = 0,
$ispos = 0,
$ispos1 = 0,
$neg = 0,
$neg2 = 0,
$step = 0,
$x0 = 0,
$x1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 32) | 0;
$x0 = (sp + 24) | 0;
$x1 = (sp + 16) | 0;
$dx = (sp + 8) | 0;
$step = sp;
HEAP32[$x0 >> 2] = $_x0;
$0 = ($x0 + 4) | 0;
HEAP32[$0 >> 2] = $_y0;
HEAP32[$x1 >> 2] = $_x1;
$1 = ($x1 + 4) | 0;
HEAP32[$1 >> 2] = $_y1;
$2 = ($_x1 - $_x0) | 0;
$ispos = ($2 | 0) > -1;
$neg = (0 - $2) | 0;
$3 = $ispos ? $2 : $neg;
HEAP32[$dx >> 2] = $3;
$4 = ($_y1 - $_y0) | 0;
$ispos1 = ($4 | 0) > -1;
$neg2 = (0 - $4) | 0;
$5 = $ispos1 ? $4 : $neg2;
$6 = ($dx + 4) | 0;
HEAP32[$6 >> 2] = $5;
$7 = ($5 | 0) > ($3 | 0);
$8 = $7 & 1;
$9 = $8 ^ 1;
$10 = ($dx + ($9 << 2)) | 0;
$11 = HEAP32[$10 >> 2] | 0;
$12 = ($_x0 | 0) < ($_x1 | 0);
$13 = $12 & 1;
$14 = $13 << 1;
$15 = ($14 + -1) | 0;
HEAP32[$step >> 2] = $15;
$16 = ($_y0 | 0) < ($_y1 | 0);
$17 = $16 & 1;
$18 = $17 << 1;
$19 = ($18 + -1) | 0;
$20 = ($step + 4) | 0;
HEAP32[$20 >> 2] = $19;
$21 = ($x0 + ($8 << 2)) | 0;
$22 = ($x1 + ($8 << 2)) | 0;
$23 = HEAP32[$22 >> 2] | 0;
$24 = ($step + ($8 << 2)) | 0;
$25 = ($dx + ($8 << 2)) | 0;
$26 = ($step + ($9 << 2)) | 0;
$27 = ($x0 + ($9 << 2)) | 0;
$err$0 = 0;
while (1) {
$28 = HEAP32[$21 >> 2] | 0;
$29 = ($28 | 0) == ($23 | 0);
if ($29) {
$$0 = -1;
label = 13;
break;
}
$30 = HEAP32[$24 >> 2] | 0;
$31 = ($30 + $28) | 0;
HEAP32[$21 >> 2] = $31;
$32 = ($err$0 + $11) | 0;
$33 = $32 << 1;
$34 = HEAP32[$25 >> 2] | 0;
$35 = ($33 | 0) > ($34 | 0);
if ($35) {
$36 = HEAP32[$26 >> 2] | 0;
$37 = HEAP32[$27 >> 2] | 0;
$38 = ($37 + $36) | 0;
HEAP32[$27 >> 2] = $38;
$39 = ($32 - $34) | 0;
$err$1 = $39;
} else {
$err$1 = $32;
}
$40 = HEAP32[$0 >> 2] | 0;
$41 = Math_imul($40, $_width) | 0;
$42 = HEAP32[$x0 >> 2] | 0;
$43 = ($41 + $42) | 0;
$44 = ($_img + $43) | 0;
$45 = HEAP8[$44 >> 0] | 0;
$46 = ($45 << 24) >> 24 == 0;
$47 = $46 & 1;
$48 = ($47 | 0) == ($_v | 0);
if ($48) {
$err$0 = $err$1;
} else {
break;
}
}
if ((label | 0) == 13) {
STACKTOP = sp;
return $$0 | 0;
}
$49 = HEAP32[$21 >> 2] | 0;
$50 = ($x1 + ($9 << 2)) | 0;
$52 = $23;
$81 = $_y1;
$82 = $_x1;
$err$2 = 0;
while (1) {
$51 = ($49 | 0) == ($52 | 0);
if ($51) {
$71 = $82;
$76 = $81;
break;
}
$53 = ($52 - $30) | 0;
HEAP32[$22 >> 2] = $53;
$54 = ($err$2 + $11) | 0;
$55 = $54 << 1;
$56 = ($55 | 0) > ($34 | 0);
if ($56) {
$57 = HEAP32[$26 >> 2] | 0;
$58 = HEAP32[$50 >> 2] | 0;
$59 = ($58 - $57) | 0;
HEAP32[$50 >> 2] = $59;
$60 = ($54 - $34) | 0;
$err$3 = $60;
} else {
$err$3 = $54;
}
$61 = HEAP32[$1 >> 2] | 0;
$62 = Math_imul($61, $_width) | 0;
$63 = HEAP32[$x1 >> 2] | 0;
$64 = ($62 + $63) | 0;
$65 = ($_img + $64) | 0;
$66 = HEAP8[$65 >> 0] | 0;
$67 = ($66 << 24) >> 24 == 0;
$68 = $67 & 1;
$69 = ($68 | 0) == ($_v | 0);
if (!$69) {
$71 = $63;
$76 = $61;
break;
}
$$pre = HEAP32[$22 >> 2] | 0;
$52 = $$pre;
$81 = $61;
$82 = $63;
$err$2 = $err$3;
}
$70 = ($71 + $42) | 0;
$72 = $70 << 2;
$73 = ($72 + 4) | 0;
$74 = $73 >> 1;
HEAP32[$_p >> 2] = $74;
$75 = ($76 + $40) | 0;
$77 = $75 << 2;
$78 = ($77 + 4) | 0;
$79 = $78 >> 1;
$80 = ($_p + 4) | 0;
HEAP32[$80 >> 2] = $79;
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
function _qr_cmp_edge_pt($_a, $_b) {
$_a = $_a | 0;
$_b = $_b | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0;
var label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($_a + 8) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($_b + 8) | 0;
$3 = HEAP32[$2 >> 2] | 0;
$4 = ($1 | 0) > ($3 | 0);
$5 = $4 & 1;
$6 = ($1 | 0) < ($3 | 0);
$7 = $6 & 1;
$8 = ($5 - $7) | 0;
$9 = $8 << 1;
$10 = ($_a + 12) | 0;
$11 = HEAP32[$10 >> 2] | 0;
$12 = ($_b + 12) | 0;
$13 = HEAP32[$12 >> 2] | 0;
$14 = ($11 | 0) > ($13 | 0);
$15 = $14 & 1;
$16 = $9 | $15;
$17 = ($11 | 0) < ($13 | 0);
$18 = $17 & 1;
$19 = ($16 - $18) | 0;
STACKTOP = sp;
return $19 | 0;
}
function _qr_finder_ransac($_f, $_hom, $_isaac, $_e) {
$_f = $_f | 0;
$_hom = $_hom | 0;
$_isaac = $_isaac | 0;
$_e = $_e | 0;
var $$$us = 0,
$$idx$val$us = 0,
$$idx6$val$us = 0,
$$idx8$us = 0,
$$idx8$val$us = 0,
$$val$us = 0,
$$val5$us = 0,
$$val7$us = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0;
var $109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0;
var $127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0;
var $45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0;
var $63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0;
var $81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0;
var $best_ninliers$025$us = 0,
$best_ninliers$1$us = 0,
$best_ninliers$2 = 0,
$exitcond = 0,
$exitcond26 = 0,
$i$023$us = 0,
$i$114 = 0,
$ispos$us = 0,
$ispos1$us = 0,
$ispos3$us = 0,
$j$013 = 0,
$j$1 = 0,
$j1$016$us = 0,
$j1$119$us = 0,
$max_iters$024$us = 0,
$max_iters$1$us = 0,
$neg$us = 0,
$neg2$us = 0,
$neg4$us = 0,
$ninliers$015$us = 0;
var $ninliers$1$us = 0,
$not$$us = 0,
$q0 = 0,
$q1 = 0,
$tmp = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 32) | 0;
$q0 = (sp + 24) | 0;
$q1 = (sp + 16) | 0;
$tmp = sp;
$0 = ((($_f + ($_e << 2)) | 0) + 16) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ((($_f + ($_e << 2)) | 0) + 32) | 0;
$3 = HEAP32[$2 >> 2] | 0;
$4 = ($3 | 0) > 1;
if (!$4) {
$best_ninliers$2 = 0;
$131 = ((($_f + ($_e << 2)) | 0) + 48) | 0;
HEAP32[$131 >> 2] = $best_ninliers$2;
STACKTOP = sp;
return;
}
$5 = ($3 + -1) | 0;
$6 = ($_hom + 16) | 0;
$7 = HEAP32[$6 >> 2] | 0;
$8 = ($_hom + 32) | 0;
$9 = HEAP32[$8 >> 2] | 0;
$10 = ($_hom + 20) | 0;
$11 = HEAP32[$10 >> 2] | 0;
$12 = ($_hom + 36) | 0;
$13 = HEAP32[$12 >> 2] | 0;
$14 = ($_hom + 44) | 0;
$15 = HEAP32[$14 >> 2] | 0;
$16 = 1 << $15;
$17 = $16 >> 1;
$18 = ($_hom + 24) | 0;
$19 = HEAP32[$18 >> 2] | 0;
$20 = ($_hom + 28) | 0;
$21 = HEAP32[$20 >> 2] | 0;
$22 = ($q0 + 4) | 0;
$23 = ($q1 + 4) | 0;
$24 = ($_f + 64) | 0;
$25 = ($_f + 68) | 0;
$26 = $_e >> 1;
$27 = ($q0 + ($26 << 2)) | 0;
$28 = ($q1 + ($26 << 2)) | 0;
$29 = (1 - $26) | 0;
$30 = ($q0 + ($29 << 2)) | 0;
$31 = ($q1 + ($29 << 2)) | 0;
$32 = $3 >> 1;
$33 = ($3 * 67) | 0;
$34 = ($33 + -1) | 0;
$35 = $3 << 1;
$best_ninliers$025$us = 0;
$i$023$us = 0;
$max_iters$024$us = 17;
while (1) {
$36 = _isaac_next_uint($_isaac, $3) | 0;
$37 = _isaac_next_uint($_isaac, $5) | 0;
$not$$us = ($37 | 0) >= ($36 | 0);
$38 = $not$$us & 1;
$$$us = ($38 + $37) | 0;
$39 = ($1 + ($36 << 4)) | 0;
$40 = ($1 + ($$$us << 4)) | 0;
$41 = HEAP32[$39 >> 2] | 0;
$42 = ((($1 + ($36 << 4)) | 0) + 4) | 0;
$43 = HEAP32[$42 >> 2] | 0;
$44 = ($41 - $9) | 0;
$45 = Math_imul($44, $7) | 0;
$46 = ($43 - $13) | 0;
$47 = Math_imul($46, $11) | 0;
$48 = ($47 + $45) | 0;
$49 = ($48 + $17) | 0;
$50 = $49 >> $15;
$51 = Math_imul($19, $44) | 0;
$52 = Math_imul($21, $46) | 0;
$53 = ($17 + $51) | 0;
$54 = ($53 + $52) | 0;
$55 = $54 >> $15;
$56 = HEAP32[$40 >> 2] | 0;
$57 = ((($1 + ($$$us << 4)) | 0) + 4) | 0;
$58 = HEAP32[$57 >> 2] | 0;
$59 = ($56 - $9) | 0;
$60 = Math_imul($59, $7) | 0;
$61 = ($58 - $13) | 0;
$62 = Math_imul($61, $11) | 0;
$63 = ($62 + $60) | 0;
$64 = ($63 + $17) | 0;
$65 = $64 >> $15;
$66 = Math_imul($19, $59) | 0;
$67 = Math_imul($21, $61) | 0;
$68 = ($17 + $66) | 0;
$69 = ($68 + $67) | 0;
$70 = $69 >> $15;
$71 = HEAP32[$24 >> 2] | 0;
$72 = HEAP32[$25 >> 2] | 0;
$73 = ($50 - $71) | 0;
HEAP32[$q0 >> 2] = $73;
$74 = ($55 - $72) | 0;
HEAP32[$22 >> 2] = $74;
$75 = ($65 - $71) | 0;
HEAP32[$q1 >> 2] = $75;
$76 = ($70 - $72) | 0;
HEAP32[$23 >> 2] = $76;
$77 = HEAP32[$27 >> 2] | 0;
$78 = HEAP32[$28 >> 2] | 0;
$79 = ($77 - $78) | 0;
$ispos$us = ($79 | 0) > -1;
$neg$us = (0 - $79) | 0;
$80 = $ispos$us ? $79 : $neg$us;
$81 = HEAP32[$30 >> 2] | 0;
$82 = HEAP32[$31 >> 2] | 0;
$83 = ($81 - $82) | 0;
$ispos1$us = ($83 | 0) > -1;
$neg2$us = (0 - $83) | 0;
$84 = $ispos1$us ? $83 : $neg2$us;
$85 = ($80 | 0) > ($84 | 0);
if ($85) {
$best_ninliers$1$us = $best_ninliers$025$us;
$max_iters$1$us = $max_iters$024$us;
} else {
$114 = ($41 - $56) | 0;
$115 = Math_imul($114, $114) | 0;
$116 = ($43 - $58) | 0;
$117 = Math_imul($116, $116) | 0;
$118 = ($117 + $115) | 0;
$119 = $118 << 5;
$105 = _qr_isqrt($119) | 0;
$$val$us = HEAP32[$39 >> 2] | 0;
$$idx$val$us = HEAP32[$42 >> 2] | 0;
$$val5$us = HEAP32[$40 >> 2] | 0;
$$idx6$val$us = HEAP32[$57 >> 2] | 0;
$98 = ($$val5$us - $$val$us) | 0;
$101 = ($$idx6$val$us - $$idx$val$us) | 0;
$j1$016$us = 0;
$ninliers$015$us = 0;
while (1) {
$95 = ($1 + ($j1$016$us << 4)) | 0;
$$val7$us = HEAP32[$95 >> 2] | 0;
$$idx8$us = ((($1 + ($j1$016$us << 4)) | 0) + 4) | 0;
$$idx8$val$us = HEAP32[$$idx8$us >> 2] | 0;
$96 = ($$idx8$val$us - $$idx$val$us) | 0;
$97 = Math_imul($96, $98) | 0;
$99 = ($$val7$us - $$val$us) | 0;
$100 = Math_imul($99, $101) | 0;
$102 = ($97 - $100) | 0;
$ispos3$us = ($102 | 0) > -1;
$neg4$us = (0 - $102) | 0;
$103 = $ispos3$us ? $102 : $neg4$us;
$104 = ($103 | 0) > ($105 | 0);
$106 = ((($1 + ($j1$016$us << 4)) | 0) + 12) | 0;
$107 = HEAP32[$106 >> 2] | 0;
if ($104) {
$110 = $107 & -2;
HEAP32[$106 >> 2] = $110;
$ninliers$1$us = $ninliers$015$us;
} else {
$108 = $107 | 1;
HEAP32[$106 >> 2] = $108;
$109 = ($ninliers$015$us + 1) | 0;
$ninliers$1$us = $109;
}
$111 = ($j1$016$us + 1) | 0;
$exitcond = ($111 | 0) == ($3 | 0);
if ($exitcond) {
break;
} else {
$j1$016$us = $111;
$ninliers$015$us = $ninliers$1$us;
}
}
$86 = ($ninliers$1$us | 0) > ($best_ninliers$025$us | 0);
if ($86) {
$j1$119$us = 0;
while (1) {
$91 = ((($1 + ($j1$119$us << 4)) | 0) + 12) | 0;
$92 = HEAP32[$91 >> 2] | 0;
$93 = $92 << 1;
HEAP32[$91 >> 2] = $93;
$94 = ($j1$119$us + 1) | 0;
$exitcond26 = ($94 | 0) == ($3 | 0);
if ($exitcond26) {
break;
} else {
$j1$119$us = $94;
}
}
$87 = ($ninliers$1$us | 0) > ($32 | 0);
if ($87) {
$88 = Math_imul($ninliers$1$us, -63) | 0;
$89 = ($34 + $88) | 0;
$90 = (($89 | 0) / ($35 | 0)) & -1;
$best_ninliers$1$us = $ninliers$1$us;
$max_iters$1$us = $90;
} else {
$best_ninliers$1$us = $ninliers$1$us;
$max_iters$1$us = $max_iters$024$us;
}
} else {
$best_ninliers$1$us = $best_ninliers$025$us;
$max_iters$1$us = $max_iters$024$us;
}
}
$112 = ($i$023$us + 1) | 0;
$113 = ($112 | 0) < ($max_iters$1$us | 0);
if ($113) {
$best_ninliers$025$us = $best_ninliers$1$us;
$i$023$us = $112;
$max_iters$024$us = $max_iters$1$us;
} else {
break;
}
}
$120 = ($best_ninliers$1$us | 0) > 0;
if (!$120) {
$best_ninliers$2 = $best_ninliers$1$us;
$131 = ((($_f + ($_e << 2)) | 0) + 48) | 0;
HEAP32[$131 >> 2] = $best_ninliers$2;
STACKTOP = sp;
return;
}
$i$114 = 0;
$j$013 = 0;
while (1) {
$121 = ($1 + ($i$114 << 4)) | 0;
$122 = ((($1 + ($i$114 << 4)) | 0) + 12) | 0;
$123 = HEAP32[$122 >> 2] | 0;
$124 = $123 & 2;
$125 = ($124 | 0) == 0;
if ($125) {
$j$1 = $j$013;
} else {
$126 = ($j$013 | 0) < ($i$114 | 0);
if ($126) {
HEAP32[($tmp + 0) >> 2] = HEAP32[($121 + 0) >> 2] | 0;
HEAP32[($tmp + 4) >> 2] = HEAP32[($121 + 4) >> 2] | 0;
HEAP32[($tmp + 8) >> 2] = HEAP32[($121 + 8) >> 2] | 0;
HEAP32[($tmp + 12) >> 2] = HEAP32[($121 + 12) >> 2] | 0;
$127 = ($1 + ($j$013 << 4)) | 0;
HEAP32[($127 + 0) >> 2] = HEAP32[($121 + 0) >> 2] | 0;
HEAP32[($127 + 4) >> 2] = HEAP32[($121 + 4) >> 2] | 0;
HEAP32[($127 + 8) >> 2] = HEAP32[($121 + 8) >> 2] | 0;
HEAP32[($127 + 12) >> 2] = HEAP32[($121 + 12) >> 2] | 0;
HEAP32[($121 + 0) >> 2] = HEAP32[($tmp + 0) >> 2] | 0;
HEAP32[($121 + 4) >> 2] = HEAP32[($tmp + 4) >> 2] | 0;
HEAP32[($121 + 8) >> 2] = HEAP32[($tmp + 8) >> 2] | 0;
HEAP32[($121 + 12) >> 2] = HEAP32[($tmp + 12) >> 2] | 0;
}
$128 = ($j$013 + 1) | 0;
$j$1 = $128;
}
$129 = ($i$114 + 1) | 0;
$130 = ($j$1 | 0) < ($best_ninliers$1$us | 0);
if ($130) {
$i$114 = $129;
$j$013 = $j$1;
} else {
$best_ninliers$2 = $best_ninliers$1$us;
break;
}
}
$131 = ((($_f + ($_e << 2)) | 0) + 48) | 0;
HEAP32[$131 >> 2] = $best_ninliers$2;
STACKTOP = sp;
return;
}
function _qr_line_fit_finder_pair($_l, $_aff, $_f0, $_f1, $_e) {
$_l = $_l | 0;
$_aff = $_aff | 0;
$_f0 = $_f0 | 0;
$_f1 = $_f1 | 0;
$_e = $_e | 0;
var $$phi$trans$insert = 0,
$$pre = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0;
var $114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0;
var $132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0;
var $23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0;
var $41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0;
var $6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0;
var $78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0;
var $96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$_l$idx$i = 0,
$_l$idx$val$i = 0,
$_l$idx1$i = 0,
$_l$idx1$val$i = 0,
$_l$val$i = 0,
$exitcond = 0,
$exitcond5 = 0,
$i$03 = 0,
$i$11 = 0,
$n0$0 = 0,
$q = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$q = sp;
$0 = ((($_f0 + ($_e << 2)) | 0) + 48) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ((($_f1 + ($_e << 2)) | 0) + 48) | 0;
$3 = HEAP32[$2 >> 2] | 0;
$4 = ($1 + -1) | 0;
$5 = ($1 | 0) < 1;
$6 = $5 ? $4 : 0;
$7 = ($1 - $6) | 0;
$8 = ($3 + -1) | 0;
$9 = ($3 | 0) < 1;
$10 = $9 ? $8 : 0;
$11 = ($3 - $10) | 0;
$12 = ($11 + $7) | 0;
$13 = $12 << 3;
$14 = _malloc($13) | 0;
$15 = ($1 | 0) > 0;
if ($15) {
$16 = ((($_f0 + ($_e << 2)) | 0) + 16) | 0;
$17 = HEAP32[$16 >> 2] | 0;
$i$03 = 0;
while (1) {
$18 = ($17 + ($i$03 << 4)) | 0;
$19 = HEAP32[$18 >> 2] | 0;
$20 = ($14 + ($i$03 << 3)) | 0;
HEAP32[$20 >> 2] = $19;
$21 = ((($17 + ($i$03 << 4)) | 0) + 4) | 0;
$22 = HEAP32[$21 >> 2] | 0;
$23 = ((($14 + ($i$03 << 3)) | 0) + 4) | 0;
HEAP32[$23 >> 2] = $22;
$24 = ($i$03 + 1) | 0;
$exitcond5 = ($24 | 0) == ($1 | 0);
if ($exitcond5) {
$n0$0 = $1;
break;
} else {
$i$03 = $24;
}
}
} else {
$25 = ($_f0 + 64) | 0;
$26 = HEAP32[$25 >> 2] | 0;
HEAP32[$q >> 2] = $26;
$27 = ($_f0 + 68) | 0;
$28 = HEAP32[$27 >> 2] | 0;
$29 = ($q + 4) | 0;
HEAP32[$29 >> 2] = $28;
$30 = $_e >> 1;
$31 = ($_f0 + ($30 << 2)) | 0;
$32 = HEAP32[$31 >> 2] | 0;
$33 = $_e << 1;
$34 = $33 & 2;
$35 = ($34 + -1) | 0;
$36 = Math_imul($32, $35) | 0;
$37 = ($q + ($30 << 2)) | 0;
$38 = HEAP32[$37 >> 2] | 0;
$39 = ($38 + $36) | 0;
HEAP32[$37 >> 2] = $39;
$40 = HEAP32[$q >> 2] | 0;
$41 = HEAP32[$29 >> 2] | 0;
$42 = HEAP32[$_aff >> 2] | 0;
$43 = Math_imul($42, $40) | 0;
$44 = ($_aff + 4) | 0;
$45 = HEAP32[$44 >> 2] | 0;
$46 = Math_imul($45, $41) | 0;
$47 = ($46 + $43) | 0;
$48 = ($_aff + 40) | 0;
$49 = HEAP32[$48 >> 2] | 0;
$50 = ($49 + -1) | 0;
$51 = 1 << $50;
$52 = ($47 + $51) | 0;
$53 = $52 >> $49;
$54 = ($_aff + 32) | 0;
$55 = HEAP32[$54 >> 2] | 0;
$56 = ($53 + $55) | 0;
HEAP32[$14 >> 2] = $56;
$57 = ($_aff + 8) | 0;
$58 = HEAP32[$57 >> 2] | 0;
$59 = Math_imul($58, $40) | 0;
$60 = ($_aff + 12) | 0;
$61 = HEAP32[$60 >> 2] | 0;
$62 = Math_imul($61, $41) | 0;
$63 = ($59 + $51) | 0;
$64 = ($63 + $62) | 0;
$65 = $64 >> $49;
$66 = ($_aff + 36) | 0;
$67 = HEAP32[$66 >> 2] | 0;
$68 = ($65 + $67) | 0;
$69 = ($14 + 4) | 0;
HEAP32[$69 >> 2] = $68;
$70 = ($1 + 1) | 0;
$n0$0 = $70;
}
$71 = ($3 | 0) > 0;
if ($71) {
$72 = ((($_f1 + ($_e << 2)) | 0) + 16) | 0;
$73 = HEAP32[$72 >> 2] | 0;
$i$11 = 0;
while (1) {
$74 = ($73 + ($i$11 << 4)) | 0;
$75 = HEAP32[$74 >> 2] | 0;
$76 = ($i$11 + $n0$0) | 0;
$77 = ($14 + ($76 << 3)) | 0;
HEAP32[$77 >> 2] = $75;
$78 = ((($73 + ($i$11 << 4)) | 0) + 4) | 0;
$79 = HEAP32[$78 >> 2] | 0;
$80 = ((($14 + ($76 << 3)) | 0) + 4) | 0;
HEAP32[$80 >> 2] = $79;
$81 = ($i$11 + 1) | 0;
$exitcond = ($81 | 0) == ($3 | 0);
if ($exitcond) {
break;
} else {
$i$11 = $81;
}
}
$$phi$trans$insert = ($_aff + 40) | 0;
$$pre = HEAP32[$$phi$trans$insert >> 2] | 0;
$128 = $$pre;
} else {
$82 = ($_f1 + 64) | 0;
$83 = HEAP32[$82 >> 2] | 0;
HEAP32[$q >> 2] = $83;
$84 = ($_f1 + 68) | 0;
$85 = HEAP32[$84 >> 2] | 0;
$86 = ($q + 4) | 0;
HEAP32[$86 >> 2] = $85;
$87 = $_e >> 1;
$88 = ($_f1 + ($87 << 2)) | 0;
$89 = HEAP32[$88 >> 2] | 0;
$90 = $_e << 1;
$91 = $90 & 2;
$92 = ($91 + -1) | 0;
$93 = Math_imul($89, $92) | 0;
$94 = ($q + ($87 << 2)) | 0;
$95 = HEAP32[$94 >> 2] | 0;
$96 = ($95 + $93) | 0;
HEAP32[$94 >> 2] = $96;
$97 = ($14 + ($n0$0 << 3)) | 0;
$98 = HEAP32[$q >> 2] | 0;
$99 = HEAP32[$86 >> 2] | 0;
$100 = HEAP32[$_aff >> 2] | 0;
$101 = Math_imul($100, $98) | 0;
$102 = ($_aff + 4) | 0;
$103 = HEAP32[$102 >> 2] | 0;
$104 = Math_imul($103, $99) | 0;
$105 = ($104 + $101) | 0;
$106 = ($_aff + 40) | 0;
$107 = HEAP32[$106 >> 2] | 0;
$108 = ($107 + -1) | 0;
$109 = 1 << $108;
$110 = ($105 + $109) | 0;
$111 = $110 >> $107;
$112 = ($_aff + 32) | 0;
$113 = HEAP32[$112 >> 2] | 0;
$114 = ($111 + $113) | 0;
HEAP32[$97 >> 2] = $114;
$115 = ($_aff + 8) | 0;
$116 = HEAP32[$115 >> 2] | 0;
$117 = Math_imul($116, $98) | 0;
$118 = ($_aff + 12) | 0;
$119 = HEAP32[$118 >> 2] | 0;
$120 = Math_imul($119, $99) | 0;
$121 = ($117 + $109) | 0;
$122 = ($121 + $120) | 0;
$123 = $122 >> $107;
$124 = ($_aff + 36) | 0;
$125 = HEAP32[$124 >> 2] | 0;
$126 = ($123 + $125) | 0;
$127 = ((($14 + ($n0$0 << 3)) | 0) + 4) | 0;
HEAP32[$127 >> 2] = $126;
$128 = $107;
}
_qr_line_fit_points($_l, $14, $12, $128);
$129 = ($_f0 + 72) | 0;
$130 = HEAP32[$129 >> 2] | 0;
$131 = HEAP32[$130 >> 2] | 0;
$132 = ($130 + 4) | 0;
$133 = HEAP32[$132 >> 2] | 0;
$_l$val$i = HEAP32[$_l >> 2] | 0;
$_l$idx$i = ($_l + 4) | 0;
$_l$idx$val$i = HEAP32[$_l$idx$i >> 2] | 0;
$_l$idx1$i = ($_l + 8) | 0;
$_l$idx1$val$i = HEAP32[$_l$idx1$i >> 2] | 0;
$134 = Math_imul($_l$val$i, $131) | 0;
$135 = Math_imul($_l$idx$val$i, $133) | 0;
$136 = ($_l$idx1$val$i + $134) | 0;
$137 = ($136 + $135) | 0;
$138 = ($137 | 0) < 0;
if (!$138) {
_free($14);
STACKTOP = sp;
return;
}
$139 = (0 - $_l$val$i) | 0;
HEAP32[$_l >> 2] = $139;
$140 = (0 - $_l$idx$val$i) | 0;
HEAP32[$_l$idx$i >> 2] = $140;
$141 = (0 - $_l$idx1$val$i) | 0;
HEAP32[$_l$idx1$i >> 2] = $141;
_free($14);
STACKTOP = sp;
return;
}
function _qr_aff_line_step($_aff, $_l$val, $_l$1$val, $_v, $_du, $_dv) {
$_aff = $_aff | 0;
$_l$val = $_l$val | 0;
$_l$1$val = $_l$1$val | 0;
$_v = $_v | 0;
$_du = $_du | 0;
$_dv = $_dv | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0;
var $26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0;
var $44 = 0,
$45 = 0,
$46 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$d$0 = 0,
$ispos = 0,
$ispos3 = 0,
$ispos5 = 0,
$n$0 = 0,
$neg = 0,
$neg4 = 0,
$neg6 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($_aff + ($_v << 2)) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = Math_imul($1, $_l$val) | 0;
$3 = ((($_aff + ($_v << 2)) | 0) + 8) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = Math_imul($4, $_l$1$val) | 0;
$6 = ($5 + $2) | 0;
$7 = (1 - $_v) | 0;
$8 = ($_aff + ($7 << 2)) | 0;
$9 = HEAP32[$8 >> 2] | 0;
$10 = Math_imul($9, $_l$val) | 0;
$11 = ((($_aff + ($7 << 2)) | 0) + 8) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = Math_imul($12, $_l$1$val) | 0;
$14 = ($13 + $10) | 0;
$15 = ($14 | 0) < 0;
if ($15) {
$16 = (0 - $6) | 0;
$17 = (0 - $14) | 0;
$d$0 = $17;
$n$0 = $16;
} else {
$d$0 = $14;
$n$0 = $6;
}
$18 = _qr_ilog($_du) | 0;
$ispos = ($n$0 | 0) > -1;
$neg = (0 - $n$0) | 0;
$19 = $ispos ? $n$0 : $neg;
$20 = _qr_ilog($19) | 0;
$21 = _qr_ilog($_du) | 0;
$22 = _qr_ilog($19) | 0;
$23 = ($21 + -29) | 0;
$24 = ($23 + $22) | 0;
$25 = ($24 | 0) > 0;
$26 = ($18 + -29) | 0;
$27 = ($26 + $20) | 0;
$28 = $25 ? $27 : 0;
$29 = 1 << $28;
$30 = $29 >> 1;
$31 = ($30 + $n$0) | 0;
$32 = $31 >> $28;
$33 = ($30 + $d$0) | 0;
$34 = $33 >> $28;
$ispos3 = ($32 | 0) > -1;
$neg4 = (0 - $32) | 0;
$35 = $ispos3 ? $32 : $neg4;
$36 = ($35 | 0) < ($34 | 0);
if (!$36) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
$37 = (0 - $_du) | 0;
$38 = Math_imul($32, $37) | 0;
$39 = $34 >> 1;
$40 = $38 >> 31;
$41 = ($40 + $39) | 0;
$42 = $41 ^ $40;
$43 = ($42 + $38) | 0;
$44 = (($43 | 0) / ($34 | 0)) & -1;
$ispos5 = ($44 | 0) > -1;
$neg6 = (0 - $44) | 0;
$45 = $ispos5 ? $44 : $neg6;
$46 = ($45 | 0) < ($_du | 0);
if (!$46) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
HEAP32[$_dv >> 2] = $44;
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
function _qr_line_fit_points($_l, $_p, $_np, $_res) {
$_l = $_l | 0;
$_p = $_p | 0;
$_np = $_np | 0;
$_res = $_res | 0;
var $$neg$i = 0,
$$neg9$i = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0;
var $114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0;
var $45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0;
var $63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0;
var $81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0;
var $exitcond = 0,
$exitcond32 = 0,
$i$014 = 0,
$i$15 = 0,
$ispos$i = 0,
$ispos1$i = 0,
$neg$i = 0,
$neg2$i = 0,
$sx$0$lcssa = 0,
$sx$013 = 0,
$sxx$0$lcssa = 0,
$sxx$02 = 0,
$sxy$0$lcssa = 0,
$sxy$03 = 0,
$sy$0$lcssa = 0,
$sy$012 = 0,
$syy$0$lcssa = 0,
$syy$04 = 0,
$xmax$0$lcssa = 0,
$xmax$010 = 0;
var $xmin$0$lcssa = 0,
$xmin$011 = 0,
$ymax$0$lcssa = 0,
$ymax$08 = 0,
$ymin$0$lcssa = 0,
$ymin$09 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($_np | 0) > 0;
if ($0) {
$i$014 = 0;
$sx$013 = 0;
$sy$012 = 0;
$xmax$010 = -2147483648;
$xmin$011 = 2147483647;
$ymax$08 = -2147483648;
$ymin$09 = 2147483647;
while (1) {
$1 = ($_p + ($i$014 << 3)) | 0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($2 + $sx$013) | 0;
$4 = ($2 | 0) < ($xmin$011 | 0);
$5 = $4 ? $2 : $xmin$011;
$6 = ($xmax$010 - $2) | 0;
$7 = ($2 | 0) > ($xmax$010 | 0);
$8 = $7 ? $6 : 0;
$9 = ($xmax$010 - $8) | 0;
$10 = ((($_p + ($i$014 << 3)) | 0) + 4) | 0;
$11 = HEAP32[$10 >> 2] | 0;
$12 = ($11 + $sy$012) | 0;
$13 = ($11 | 0) < ($ymin$09 | 0);
$14 = $13 ? $11 : $ymin$09;
$15 = ($ymax$08 - $11) | 0;
$16 = ($11 | 0) > ($ymax$08 | 0);
$17 = $16 ? $15 : 0;
$18 = ($ymax$08 - $17) | 0;
$19 = ($i$014 + 1) | 0;
$exitcond32 = ($19 | 0) == ($_np | 0);
if ($exitcond32) {
$sx$0$lcssa = $3;
$sy$0$lcssa = $12;
$xmax$0$lcssa = $9;
$xmin$0$lcssa = $5;
$ymax$0$lcssa = $18;
$ymin$0$lcssa = $14;
break;
} else {
$i$014 = $19;
$sx$013 = $3;
$sy$012 = $12;
$xmax$010 = $9;
$xmin$011 = $5;
$ymax$08 = $18;
$ymin$09 = $14;
}
}
} else {
$sx$0$lcssa = 0;
$sy$0$lcssa = 0;
$xmax$0$lcssa = -2147483648;
$xmin$0$lcssa = 2147483647;
$ymax$0$lcssa = -2147483648;
$ymin$0$lcssa = 2147483647;
}
$20 = $_np >> 1;
$21 = ($sx$0$lcssa + $20) | 0;
$22 = (($21 | 0) / ($_np | 0)) & -1;
$23 = ($sy$0$lcssa + $20) | 0;
$24 = (($23 | 0) / ($_np | 0)) & -1;
$25 = ($xmax$0$lcssa - $22) | 0;
$26 = ($22 - $xmin$0$lcssa) | 0;
$27 = ($25 - $26) | 0;
$28 = ($26 | 0) > ($25 | 0);
$29 = $28 ? $27 : 0;
$30 = ($25 - $29) | 0;
$31 = ($ymax$0$lcssa - $24) | 0;
$32 = ($24 - $ymin$0$lcssa) | 0;
$33 = ($31 - $32) | 0;
$34 = ($32 | 0) > ($31 | 0);
$35 = $34 ? $33 : 0;
$36 = ($31 - $35) | 0;
$37 = ($30 - $36) | 0;
$38 = ($36 | 0) > ($30 | 0);
$39 = $38 ? $37 : 0;
$40 = ($30 - $39) | 0;
$41 = Math_imul($40, $_np) | 0;
$42 = _qr_ilog($41) | 0;
$43 = _qr_ilog($41) | 0;
$44 = ($43 + -15) | 0;
$45 = ($44 | 0) > 0;
$46 = ($42 + -15) | 0;
$47 = $45 ? $46 : 0;
$48 = 1 << $47;
$49 = $48 >> 1;
if ($0) {
$50 = ($49 - $22) | 0;
$51 = ($49 - $24) | 0;
$i$15 = 0;
$sxx$02 = 0;
$sxy$03 = 0;
$syy$04 = 0;
while (1) {
$52 = ($_p + ($i$15 << 3)) | 0;
$53 = HEAP32[$52 >> 2] | 0;
$54 = ($50 + $53) | 0;
$55 = $54 >> $47;
$56 = ((($_p + ($i$15 << 3)) | 0) + 4) | 0;
$57 = HEAP32[$56 >> 2] | 0;
$58 = ($51 + $57) | 0;
$59 = $58 >> $47;
$60 = Math_imul($55, $55) | 0;
$61 = ($60 + $sxx$02) | 0;
$62 = Math_imul($59, $55) | 0;
$63 = ($62 + $sxy$03) | 0;
$64 = Math_imul($59, $59) | 0;
$65 = ($64 + $syy$04) | 0;
$66 = ($i$15 + 1) | 0;
$exitcond = ($66 | 0) == ($_np | 0);
if ($exitcond) {
$sxx$0$lcssa = $61;
$sxy$0$lcssa = $63;
$syy$0$lcssa = $65;
break;
} else {
$i$15 = $66;
$sxx$02 = $61;
$sxy$03 = $63;
$syy$04 = $65;
}
}
} else {
$sxx$0$lcssa = 0;
$sxy$0$lcssa = 0;
$syy$0$lcssa = 0;
}
$67 = ($sxx$0$lcssa - $syy$0$lcssa) | 0;
$ispos$i = ($67 | 0) > -1;
$neg$i = (0 - $67) | 0;
$68 = $ispos$i ? $67 : $neg$i;
$69 = (0 - $sxy$0$lcssa) | 0;
$70 = $69 << 1;
$71 = _qr_ihypot($68, $70) | 0;
$72 = _qr_ilog($68) | 0;
$73 = _qr_ilog($68) | 0;
$ispos1$i = ($70 | 0) > -1;
$neg2$i = (0 - $70) | 0;
$74 = $ispos1$i ? $70 : $neg2$i;
$75 = _qr_ilog($74) | 0;
$76 = _qr_ilog($74) | 0;
$77 = _qr_ilog($68) | 0;
$78 = ($76 | 0) > ($77 | 0);
$79 = ($75 - $73) | 0;
$$neg$i = $78 ? $79 : 0;
$80 = ($_res + 1) | 0;
$81 = $80 >> 1;
$82 = _qr_ilog($68) | 0;
$83 = _qr_ilog($68) | 0;
$84 = _qr_ilog($74) | 0;
$85 = _qr_ilog($74) | 0;
$86 = _qr_ilog($68) | 0;
$87 = ($85 | 0) > ($86 | 0);
$88 = ($84 - $83) | 0;
$$neg9$i = $87 ? $88 : 0;
$89 = (1 - $81) | 0;
$90 = ($82 + $89) | 0;
$91 = ($90 + $$neg9$i) | 0;
$92 = ($91 | 0) > 0;
$93 = ($72 + $89) | 0;
$94 = ($93 + $$neg$i) | 0;
$95 = $92 ? $94 : 0;
$96 = 1 << $95;
$97 = $96 >> 1;
$98 = ($sxx$0$lcssa | 0) > ($syy$0$lcssa | 0);
if ($98) {
$99 = ($97 + $70) | 0;
$100 = $99 >> $95;
HEAP32[$_l >> 2] = $100;
$101 = ($71 + $68) | 0;
$102 = ($101 + $97) | 0;
$103 = $102 >> $95;
$104 = ($_l + 4) | 0;
HEAP32[$104 >> 2] = $103;
$112 = $100;
$114 = $103;
$111 = Math_imul($112, $22) | 0;
$113 = Math_imul($114, $24) | 0;
$115 = ($111 + $113) | 0;
$116 = (0 - $115) | 0;
$117 = ($_l + 8) | 0;
HEAP32[$117 >> 2] = $116;
STACKTOP = sp;
return;
} else {
$105 = ($71 + $68) | 0;
$106 = ($105 + $97) | 0;
$107 = $106 >> $95;
HEAP32[$_l >> 2] = $107;
$108 = ($97 + $70) | 0;
$109 = $108 >> $95;
$110 = ($_l + 4) | 0;
HEAP32[$110 >> 2] = $109;
$112 = $107;
$114 = $109;
$111 = Math_imul($112, $22) | 0;
$113 = Math_imul($114, $24) | 0;
$115 = ($111 + $113) | 0;
$116 = (0 - $115) | 0;
$117 = ($_l + 8) | 0;
HEAP32[$117 >> 2] = $116;
STACKTOP = sp;
return;
}
}
function _qr_code_data_list_extract_text($_qrlist, $iscn, $img) {
$_qrlist = $_qrlist | 0;
$iscn = $iscn | 0;
$img = $img | 0;
var $$fnc1$1 = 0,
$$in$i = 0,
$$in$i26 = 0,
$$in$i41 = 0,
$$in$i54 = 0,
$$lobit = 0,
$$neg68 = 0,
$$neg69 = 0,
$$op = 0,
$$op241 = 0,
$$phi$trans$insert = 0,
$$phi$trans$insert$i = 0,
$$phi$trans$insert$i11 = 0,
$$phi$trans$insert$i11$phi$trans$insert = 0,
$$phi$trans$insert$i14 = 0,
$$phi$trans$insert$i14$phi$trans$insert = 0,
$$phi$trans$insert$i17 = 0,
$$phi$trans$insert$i17$phi$trans$insert = 0,
$$phi$trans$insert$i45 = 0,
$$phi$trans$insert239 = 0;
var $$pre = 0,
$$pre$i = 0,
$$pre$i12 = 0,
$$pre$i12$pre = 0,
$$pre$i15 = 0,
$$pre$i15$pre = 0,
$$pre$i18 = 0,
$$pre$i18$pre = 0,
$$pre$i21 = 0,
$$pre$i31 = 0,
$$pre$i36 = 0,
$$pre$i46 = 0,
$$pre219 = 0,
$$pre221 = 0,
$$pre223 = 0,
$$pre225 = 0,
$$pre226 = 0,
$$pre240 = 0,
$0 = 0,
$1 = 0;
var $10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0;
var $118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0;
var $136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0,
$152 = 0,
$153 = 0;
var $154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0,
$170 = 0,
$171 = 0;
var $172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0,
$189 = 0,
$19 = 0;
var $190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0,
$206 = 0,
$207 = 0;
var $208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0,
$224 = 0,
$225 = 0;
var $226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0,
$242 = 0,
$243 = 0;
var $244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0,
$260 = 0,
$261 = 0;
var $262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0,
$279 = 0,
$28 = 0;
var $280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0,
$297 = 0,
$298 = 0;
var $299 = 0,
$3 = 0,
$30 = 0,
$300 = 0,
$301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0,
$306 = 0,
$307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0,
$313 = 0,
$314 = 0,
$315 = 0;
var $316 = 0,
$317 = 0,
$318 = 0,
$319 = 0,
$32 = 0,
$320 = 0,
$321 = 0,
$322 = 0,
$323 = 0,
$324 = 0,
$325 = 0,
$326 = 0,
$327 = 0,
$328 = 0,
$329 = 0,
$33 = 0,
$330 = 0,
$331 = 0,
$332 = 0,
$333 = 0;
var $334 = 0,
$335 = 0,
$336 = 0,
$337 = 0,
$338 = 0,
$339 = 0,
$34 = 0,
$340 = 0,
$341 = 0,
$342 = 0,
$343 = 0,
$344 = 0,
$345 = 0,
$346 = 0,
$347 = 0,
$348 = 0,
$349 = 0,
$35 = 0,
$350 = 0,
$351 = 0;
var $352 = 0,
$353 = 0,
$354 = 0,
$355 = 0,
$356 = 0,
$357 = 0,
$358 = 0,
$359 = 0,
$36 = 0,
$360 = 0,
$361 = 0,
$362 = 0,
$363 = 0,
$364 = 0,
$365 = 0,
$366 = 0,
$367 = 0,
$368 = 0,
$369 = 0,
$37 = 0;
var $370 = 0,
$371 = 0,
$372 = 0,
$373 = 0,
$374 = 0,
$375 = 0,
$376 = 0,
$377 = 0,
$378 = 0,
$379 = 0,
$38 = 0,
$380 = 0,
$381 = 0,
$382 = 0,
$383 = 0,
$384 = 0,
$385 = 0,
$386 = 0,
$387 = 0,
$388 = 0;
var $389 = 0,
$39 = 0,
$390 = 0,
$391 = 0,
$392 = 0,
$393 = 0,
$394 = 0,
$395 = 0,
$396 = 0,
$397 = 0,
$398 = 0,
$399 = 0,
$4 = 0,
$40 = 0,
$400 = 0,
$401 = 0,
$402 = 0,
$403 = 0,
$404 = 0,
$405 = 0;
var $406 = 0,
$407 = 0,
$408 = 0,
$409 = 0,
$41 = 0,
$410 = 0,
$411 = 0,
$412 = 0,
$413 = 0,
$414 = 0,
$415 = 0,
$416 = 0,
$417 = 0,
$418 = 0,
$419 = 0,
$42 = 0,
$420 = 0,
$421 = 0,
$422 = 0,
$423 = 0;
var $424 = 0,
$425 = 0,
$426 = 0,
$427 = 0,
$428 = 0,
$429 = 0,
$43 = 0,
$430 = 0,
$431 = 0,
$432 = 0,
$433 = 0,
$434 = 0,
$435 = 0,
$436 = 0,
$437 = 0,
$438 = 0,
$439 = 0,
$44 = 0,
$440 = 0,
$441 = 0;
var $442 = 0,
$443 = 0,
$444 = 0,
$445 = 0,
$446 = 0,
$447 = 0,
$448 = 0,
$449 = 0,
$45 = 0,
$450 = 0,
$451 = 0,
$452 = 0,
$453 = 0,
$454 = 0,
$455 = 0,
$456 = 0,
$457 = 0,
$458 = 0,
$459 = 0,
$46 = 0;
var $460 = 0,
$461 = 0,
$462 = 0,
$463 = 0,
$464 = 0,
$465 = 0,
$466 = 0,
$467 = 0,
$468 = 0,
$469 = 0,
$47 = 0,
$470 = 0,
$471 = 0,
$472 = 0,
$473 = 0,
$474 = 0,
$475 = 0,
$476 = 0,
$477 = 0,
$478 = 0;
var $479 = 0,
$48 = 0,
$480 = 0,
$481 = 0,
$482 = 0,
$483 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0;
var $61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0;
var $8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0;
var $98 = 0,
$99 = 0,
$buf = 0,
$c$0 = 0,
$dir = 0,
$eci$0151 = 0,
$eci$1$lcssa = 0,
$eci$1128 = 0,
$eci$2 = 0,
$eci$3 = 0,
$eci_cd$0146 = 0,
$eci_cd$0155 = 0,
$eci_cd$1$lcssa = 0,
$eci_cd$1134 = 0,
$eci_cd$2 = 0,
$ei$0114 = 0,
$ej$0 = 0,
$ej$0$in107 = 0,
$ej$0$in107$phi = 0,
$ej$0106 = 0;
var $ej$0108 = 0,
$enc$0 = 0,
$enc_list = 0,
$err$1$lcssa = 0,
$err$3113 = 0,
$err$4 = 0,
$err$5 = 0,
$exitcond = 0,
$exitcond203 = 0,
$fnc1$0$lcssa248251264270 = 0,
$fnc1$0$lcssa248254 = 0,
$fnc1$088 = 0,
$fnc1$177 = 0,
$fnc1$2 = 0,
$fnc1$3 = 0,
$fnc1_2ai$089 = 0,
$fnc1_2ai$178 = 0,
$fnc1_2ai$2 = 0,
$fnc1_2ai$3 = 0,
$has_kanji$090 = 0;
var $has_kanji$179 = 0,
$has_kanji$2 = 0,
$has_kanji$3 = 0,
$has_kanji$4 = 0,
$has_kanji$5 = 0,
$i$01$i = 0,
$i$01$i49 = 0,
$i$0193 = 0,
$i$03$i = 0,
$i$03$i24 = 0,
$i$03$i39 = 0,
$i$03$i52 = 0,
$in = 0,
$inleft = 0,
$ispos = 0,
$ispos6 = 0,
$j$173 = 0,
$j$291 = 0,
$j$3153 = 0,
$j$4 = 0;
var $j$4$in = 0,
$j$5 = 0,
$j$6164 = 0,
$k$080 = 0,
$k$1132 = 0,
$neg = 0,
$neg7 = 0,
$or$cond = 0,
$or$cond$i = 0,
$or$cond10 = 0,
$or$cond8 = 0,
$or$cond9 = 0,
$out = 0,
$outleft = 0,
$p$0 = 0,
$phitmp = 0,
$plen$0 = 0,
$sa = 0,
$sa_ctext$087 = 0,
$sa_ctext$176 = 0;
var $sa_ctext$2 = 0,
$sa_ctext$3 = 0,
$sa_ntext$0257 = 0,
$sa_ntext$1144 = 0,
$sa_ntext$1144266268 = 0,
$sa_ntext$1150 = 0,
$sa_ntext$2 = 0,
$sa_ntext$3$lcssa = 0,
$sa_ntext$3127 = 0,
$sa_ntext$4123 = 0,
$sa_ntext$5$ph = 0,
$sa_ntext$6 = 0,
$sa_size$0242 = 0,
$sa_size$0244265269 = 0,
$sa_sym$0 = 0,
$sa_text$0 = 0,
$shift$0 = 0,
$sym$0154 = 0,
$sym$1 = 0,
$syms = 0;
var $vararg_buffer = 0,
$xmax$0183 = 0,
$xmax$1166 = 0,
$xmax$2 = 0,
$xmax$3 = 0,
$xmin$0182 = 0,
$xmin$1$ = 0,
$xmin$1165 = 0,
$xmin$3 = 0,
$ymax$0185 = 0,
$ymax$1168 = 0,
$ymax$2 = 0,
$ymax$3 = 0,
$ymin$0184 = 0,
$ymin$1$ = 0,
$ymin$1167 = 0,
$ymin$3 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 144) | 0;
$vararg_buffer = sp;
$enc_list = (sp + 104) | 0;
$sa = (sp + 40) | 0;
$syms = (sp + 32) | 0;
$dir = (sp + 24) | 0;
$inleft = (sp + 16) | 0;
$outleft = (sp + 12) | 0;
$in = (sp + 8) | 0;
$out = (sp + 4) | 0;
$buf = (sp + 120) | 0;
$0 = HEAP32[$_qrlist >> 2] | 0;
$1 = ($_qrlist + 4) | 0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = _calloc($2, 1) | 0;
$4 = _iconv_open(7888, 7896) | 0;
$5 = _iconv_open(7888, 7912) | 0;
$6 = _iconv_open(7888, 7888) | 0;
$7 = ($2 | 0) > 0;
L1: do {
if ($7) {
$8 = ($enc_list + 4) | 0;
$9 = ($enc_list + 8) | 0;
$10 = ($img + 4) | 0;
$11 = ($img + 8) | 0;
$12 = ($dir + 4) | 0;
$13 = ($6 | 0) == (-1 | 0);
$i$0193 = 0;
L3: while (1) {
$14 = ($3 + $i$0193) | 0;
$15 = HEAP8[$14 >> 0] | 0;
$16 = ($15 << 24) >> 24 == 0;
L5: do {
if ($16) {
HEAP32[$syms >> 2] = 0;
$17 = ((($0 + (($i$0193 * 48) | 0)) | 0) + 11) | 0;
$18 = HEAP8[$17 >> 0] | 0;
$19 = ($18 << 24) >> 24 == 0;
if ($19) {
HEAP32[$sa >> 2] = $i$0193;
$sa_size$0242 = 1;
label = 16;
} else {
$20 = $18 & 255;
$21 = ((($0 + (($i$0193 * 48) | 0)) | 0) + 12) | 0;
$22 = HEAP8[$21 >> 0] | 0;
$23 = ($18 & 255) > 1;
$$op241 = $20 << 2;
$24 = $23 ? $$op241 : 4;
_memset($sa | 0, -1, $24 | 0) | 0;
$479 = 1;
$j$173 = $i$0193;
while (1) {
$25 = ($3 + $j$173) | 0;
if ($479) {
$26 = ((($0 + (($j$173 * 48) | 0)) | 0) + 11) | 0;
$27 = HEAP8[$26 >> 0] | 0;
$28 = ($27 << 24) >> 24 == ($18 << 24) >> 24;
if ($28) {
$29 = ((($0 + (($j$173 * 48) | 0)) | 0) + 12) | 0;
$30 = HEAP8[$29 >> 0] | 0;
$31 = ($30 << 24) >> 24 == ($22 << 24) >> 24;
if ($31) {
$32 = ((($0 + (($j$173 * 48) | 0)) | 0) + 10) | 0;
$33 = HEAP8[$32 >> 0] | 0;
$34 = $33 & 255;
$35 = ($sa + ($34 << 2)) | 0;
$36 = HEAP32[$35 >> 2] | 0;
$37 = ($36 | 0) < 0;
if ($37) {
HEAP32[$35 >> 2] = $j$173;
HEAP8[$25 >> 0] = 1;
}
}
}
}
$38 = ($j$173 + 1) | 0;
$exitcond = ($38 | 0) == ($2 | 0);
if ($exitcond) {
break;
}
$$phi$trans$insert239 = ($3 + $38) | 0;
$$pre240 = HEAP8[$$phi$trans$insert239 >> 0] | 0;
$phitmp = ($$pre240 << 24) >> 24 == 0;
$479 = $phitmp;
$j$173 = $38;
}
$39 = ($18 << 24) >> 24 == 0;
if ($39) {
$40 = _malloc(1) | 0;
HEAP32[$enc_list >> 2] = $5;
HEAP32[$8 >> 2] = $4;
HEAP32[$9 >> 2] = $6;
$375 = $40;
$376 = 1;
$fnc1$0$lcssa248251264270 = 0;
$sa_ntext$1144266268 = 0;
$sa_size$0244265269 = 0;
} else {
$sa_size$0242 = $20;
label = 16;
}
}
do {
if ((label | 0) == 16) {
label = 0;
$fnc1$088 = 0;
$fnc1_2ai$089 = 0;
$has_kanji$090 = 0;
$j$291 = 0;
$sa_ctext$087 = 0;
while (1) {
$41 = ($sa + ($j$291 << 2)) | 0;
$42 = HEAP32[$41 >> 2] | 0;
$43 = ($42 | 0) > -1;
if ($43) {
$44 = ((($0 + (($42 * 48) | 0)) | 0) + 4) | 0;
$45 = HEAP32[$44 >> 2] | 0;
$46 = ($45 | 0) > 0;
if ($46) {
$47 = ($0 + (($42 * 48) | 0)) | 0;
$48 = HEAP32[$47 >> 2] | 0;
$fnc1$177 = $fnc1$088;
$fnc1_2ai$178 = $fnc1_2ai$089;
$has_kanji$179 = $has_kanji$090;
$k$080 = 0;
$sa_ctext$176 = $sa_ctext$087;
while (1) {
$49 = ($48 + (($k$080 * 12) | 0)) | 0;
$50 = HEAP32[$49 >> 2] | 0;
if (($50 | 0) == 5) {
$51 = ($fnc1$177 | 0) == 0;
$$fnc1$1 = $51 ? 1 : $fnc1$177;
$fnc1$2 = $$fnc1$1;
$fnc1_2ai$2 = $fnc1_2ai$178;
$has_kanji$4 = $has_kanji$179;
$sa_ctext$2 = $sa_ctext$176;
} else if (($50 | 0) == 8) {
$has_kanji$2 = 1;
label = 25;
} else if (($50 | 0) == 4) {
$has_kanji$2 = $has_kanji$179;
label = 25;
} else if (($50 | 0) == 9) {
$52 = ($fnc1$177 | 0) == 0;
if ($52) {
$53 = ((($48 + (($k$080 * 12) | 0)) | 0) + 4) | 0;
$54 = HEAP32[$53 >> 2] | 0;
$55 = ($sa_ctext$176 + 2) | 0;
$fnc1$2 = 2;
$fnc1_2ai$2 = $54;
$has_kanji$4 = $has_kanji$179;
$sa_ctext$2 = $55;
} else {
$fnc1$2 = $fnc1$177;
$fnc1_2ai$2 = $fnc1_2ai$178;
$has_kanji$4 = $has_kanji$179;
$sa_ctext$2 = $sa_ctext$176;
}
} else {
$has_kanji$3 = $has_kanji$179;
$shift$0 = 0;
label = 26;
}
if ((label | 0) == 25) {
label = 0;
$has_kanji$3 = $has_kanji$2;
$shift$0 = 2;
label = 26;
}
if ((label | 0) == 26) {
label = 0;
$56 = ($50 + -1) | 0;
$57 = $56 & $50;
$58 = ($57 | 0) == 0;
if ($58) {
$59 = ((($48 + (($k$080 * 12) | 0)) | 0) + 8) | 0;
$60 = HEAP32[$59 >> 2] | 0;
$61 = $60 << $shift$0;
$62 = ($61 + $sa_ctext$176) | 0;
$fnc1$2 = $fnc1$177;
$fnc1_2ai$2 = $fnc1_2ai$178;
$has_kanji$4 = $has_kanji$3;
$sa_ctext$2 = $62;
} else {
$fnc1$2 = $fnc1$177;
$fnc1_2ai$2 = $fnc1_2ai$178;
$has_kanji$4 = $has_kanji$3;
$sa_ctext$2 = $sa_ctext$176;
}
}
$63 = ($k$080 + 1) | 0;
$64 = ($63 | 0) < ($45 | 0);
if ($64) {
$fnc1$177 = $fnc1$2;
$fnc1_2ai$178 = $fnc1_2ai$2;
$has_kanji$179 = $has_kanji$4;
$k$080 = $63;
$sa_ctext$176 = $sa_ctext$2;
} else {
$fnc1$3 = $fnc1$2;
$fnc1_2ai$3 = $fnc1_2ai$2;
$has_kanji$5 = $has_kanji$4;
$sa_ctext$3 = $sa_ctext$2;
break;
}
}
} else {
$fnc1$3 = $fnc1$088;
$fnc1_2ai$3 = $fnc1_2ai$089;
$has_kanji$5 = $has_kanji$090;
$sa_ctext$3 = $sa_ctext$087;
}
} else {
$fnc1$3 = $fnc1$088;
$fnc1_2ai$3 = $fnc1_2ai$089;
$has_kanji$5 = $has_kanji$090;
$sa_ctext$3 = $sa_ctext$087;
}
$65 = ($j$291 + 1) | 0;
$66 = ($65 | 0) < ($sa_size$0242 | 0);
if ($66) {
$fnc1$088 = $fnc1$3;
$fnc1_2ai$089 = $fnc1_2ai$3;
$has_kanji$090 = $has_kanji$5;
$j$291 = $65;
$sa_ctext$087 = $sa_ctext$3;
} else {
break;
}
}
$67 = ($sa_ctext$3 + 1) | 0;
$68 = _malloc($67) | 0;
$69 = ($fnc1$3 | 0) == 2;
do {
if ($69) {
$70 = ($fnc1_2ai$3 | 0) < 100;
if ($70) {
$71 = (($fnc1_2ai$3 | 0) / 10) & -1;
$72 = ($71 + 48) | 0;
$73 = $72 & 255;
HEAP8[$68 >> 0] = $73;
$74 = ($fnc1_2ai$3 | 0) % 10 & -1;
$75 = ($74 + 48) | 0;
$76 = $75 & 255;
$77 = ($68 + 1) | 0;
HEAP8[$77 >> 0] = $76;
HEAP32[$enc_list >> 2] = $5;
HEAP32[$8 >> 2] = $4;
HEAP32[$9 >> 2] = $6;
$fnc1$0$lcssa248254 = $fnc1$3;
$sa_ntext$0257 = 2;
break;
} else {
$78 = ($fnc1_2ai$3 + 156) | 0;
$79 = $78 & 255;
HEAP8[$68 >> 0] = $79;
HEAP32[$enc_list >> 2] = $5;
HEAP32[$8 >> 2] = $4;
HEAP32[$9 >> 2] = $6;
$fnc1$0$lcssa248254 = 2;
$sa_ntext$0257 = 1;
break;
}
} else {
HEAP32[$enc_list >> 2] = $5;
HEAP32[$8 >> 2] = $4;
HEAP32[$9 >> 2] = $6;
$fnc1$0$lcssa248254 = $fnc1$3;
$sa_ntext$0257 = 0;
}
} while (0);
$80 = ($fnc1$0$lcssa248254 | 0) == 0;
$81 = ($has_kanji$5 | 0) == 0;
$82 = $68;
$eci$0151 = -1;
$eci_cd$0155 = -1;
$j$3153 = 0;
$sa_ntext$1150 = $sa_ntext$0257;
$sym$0154 = $syms;
L50: while (1) {
$83 = __zbar_image_scanner_alloc_sym($iscn, 64, 0) | 0;
HEAP32[$sym$0154 >> 2] = $83;
$84 = ($83 + 16) | 0;
HEAP32[$84 >> 2] = $sa_ntext$1150;
$85 = ($sa + ($j$3153 << 2)) | 0;
$86 = HEAP32[$85 >> 2] | 0;
$87 = ($86 | 0) < 0;
if ($87) {
HEAP32[$83 >> 2] = 1;
$j$4$in = $j$3153;
while (1) {
$j$4 = ($j$4$in + 1) | 0;
$88 = ($j$4 | 0) < ($sa_size$0242 | 0);
if (!$88) {
$480 = 1;
$eci_cd$0146 = $eci_cd$0155;
$sa_ntext$1144 = $sa_ntext$1150;
break L50;
}
$89 = ($sa + ($j$4 << 2)) | 0;
$90 = HEAP32[$89 >> 2] | 0;
$91 = ($90 | 0) < 0;
if ($91) {
$j$4$in = $j$4;
} else {
break;
}
}
$92 = ($sa_ntext$1150 + 1) | 0;
$93 = ($68 + $sa_ntext$1150) | 0;
HEAP8[$93 >> 0] = 0;
$94 = HEAP32[$sym$0154 >> 2] | 0;
$95 = ($94 + 16) | 0;
HEAP32[$95 >> 2] = $92;
$96 = ($94 + 44) | 0;
$97 = __zbar_image_scanner_alloc_sym($iscn, 64, 0) | 0;
HEAP32[$96 >> 2] = $97;
$104 = $97;
$99 = $90;
$j$5 = $j$4;
$sa_ntext$2 = $92;
$sym$1 = $96;
} else {
$104 = $83;
$99 = $86;
$j$5 = $j$3153;
$sa_ntext$2 = $sa_ntext$1150;
$sym$1 = $sym$0154;
}
$98 = ((($0 + (($99 * 48) | 0)) | 0) + 16) | 0;
$100 = HEAP32[$98 >> 2] | 0;
$101 = ((($0 + (($99 * 48) | 0)) | 0) + 20) | 0;
$102 = HEAP32[$101 >> 2] | 0;
$103 = ($104 + 28) | 0;
$105 = HEAP32[$103 >> 2] | 0;
$106 = ($105 + 1) | 0;
HEAP32[$103 >> 2] = $106;
$107 = ($104 + 24) | 0;
$108 = HEAP32[$107 >> 2] | 0;
$109 = $106 >>> 0 < $108 >>> 0;
$$phi$trans$insert$i = ($104 + 32) | 0;
$$pre$i = HEAP32[$$phi$trans$insert$i >> 2] | 0;
if ($109) {
$$pre$i12 = $$pre$i;
$114 = $$pre$i;
$121 = $104;
} else {
$110 = ($108 + 1) | 0;
HEAP32[$107 >> 2] = $110;
$111 = $110 << 3;
$112 = _realloc($$pre$i, $111) | 0;
HEAP32[$$phi$trans$insert$i >> 2] = $112;
$$pre219 = HEAP32[$sym$1 >> 2] | 0;
$$phi$trans$insert$i11$phi$trans$insert = ($$pre219 + 32) | 0;
$$pre$i12$pre = HEAP32[$$phi$trans$insert$i11$phi$trans$insert >> 2] | 0;
$$pre$i12 = $$pre$i12$pre;
$114 = $112;
$121 = $$pre219;
}
$113 = ($114 + ($105 << 3)) | 0;
HEAP32[$113 >> 2] = $100;
$115 = ((($114 + ($105 << 3)) | 0) + 4) | 0;
HEAP32[$115 >> 2] = $102;
$116 = ((($0 + (($99 * 48) | 0)) | 0) + 32) | 0;
$117 = HEAP32[$116 >> 2] | 0;
$118 = ((($0 + (($99 * 48) | 0)) | 0) + 36) | 0;
$119 = HEAP32[$118 >> 2] | 0;
$120 = ($121 + 28) | 0;
$122 = HEAP32[$120 >> 2] | 0;
$123 = ($122 + 1) | 0;
HEAP32[$120 >> 2] = $123;
$124 = ($121 + 24) | 0;
$125 = HEAP32[$124 >> 2] | 0;
$126 = $123 >>> 0 < $125 >>> 0;
if ($126) {
$$pre$i15 = $$pre$i12;
$131 = $$pre$i12;
$138 = $121;
} else {
$$phi$trans$insert$i11 = ($121 + 32) | 0;
$127 = ($125 + 1) | 0;
HEAP32[$124 >> 2] = $127;
$128 = $127 << 3;
$129 = _realloc($$pre$i12, $128) | 0;
HEAP32[$$phi$trans$insert$i11 >> 2] = $129;
$$pre221 = HEAP32[$sym$1 >> 2] | 0;
$$phi$trans$insert$i14$phi$trans$insert = ($$pre221 + 32) | 0;
$$pre$i15$pre = HEAP32[$$phi$trans$insert$i14$phi$trans$insert >> 2] | 0;
$$pre$i15 = $$pre$i15$pre;
$131 = $129;
$138 = $$pre221;
}
$130 = ($131 + ($122 << 3)) | 0;
HEAP32[$130 >> 2] = $117;
$132 = ((($131 + ($122 << 3)) | 0) + 4) | 0;
HEAP32[$132 >> 2] = $119;
$133 = ((($0 + (($99 * 48) | 0)) | 0) + 40) | 0;
$134 = HEAP32[$133 >> 2] | 0;
$135 = ((($0 + (($99 * 48) | 0)) | 0) + 44) | 0;
$136 = HEAP32[$135 >> 2] | 0;
$137 = ($138 + 28) | 0;
$139 = HEAP32[$137 >> 2] | 0;
$140 = ($139 + 1) | 0;
HEAP32[$137 >> 2] = $140;
$141 = ($138 + 24) | 0;
$142 = HEAP32[$141 >> 2] | 0;
$143 = $140 >>> 0 < $142 >>> 0;
if ($143) {
$$pre$i18 = $$pre$i15;
$148 = $$pre$i15;
$155 = $138;
} else {
$$phi$trans$insert$i14 = ($138 + 32) | 0;
$144 = ($142 + 1) | 0;
HEAP32[$141 >> 2] = $144;
$145 = $144 << 3;
$146 = _realloc($$pre$i15, $145) | 0;
HEAP32[$$phi$trans$insert$i14 >> 2] = $146;
$$pre223 = HEAP32[$sym$1 >> 2] | 0;
$$phi$trans$insert$i17$phi$trans$insert = ($$pre223 + 32) | 0;
$$pre$i18$pre = HEAP32[$$phi$trans$insert$i17$phi$trans$insert >> 2] | 0;
$$pre$i18 = $$pre$i18$pre;
$148 = $146;
$155 = $$pre223;
}
$147 = ($148 + ($139 << 3)) | 0;
HEAP32[$147 >> 2] = $134;
$149 = ((($148 + ($139 << 3)) | 0) + 4) | 0;
HEAP32[$149 >> 2] = $136;
$150 = ((($0 + (($99 * 48) | 0)) | 0) + 24) | 0;
$151 = HEAP32[$150 >> 2] | 0;
$152 = ((($0 + (($99 * 48) | 0)) | 0) + 28) | 0;
$153 = HEAP32[$152 >> 2] | 0;
$154 = ($155 + 28) | 0;
$156 = HEAP32[$154 >> 2] | 0;
$157 = ($156 + 1) | 0;
HEAP32[$154 >> 2] = $157;
$158 = ($155 + 24) | 0;
$159 = HEAP32[$158 >> 2] | 0;
$160 = $157 >>> 0 < $159 >>> 0;
if ($160) {
$165 = $$pre$i18;
$191 = $155;
} else {
$$phi$trans$insert$i17 = ($155 + 32) | 0;
$161 = ($159 + 1) | 0;
HEAP32[$158 >> 2] = $161;
$162 = $161 << 3;
$163 = _realloc($$pre$i18, $162) | 0;
HEAP32[$$phi$trans$insert$i17 >> 2] = $163;
$$pre225 = HEAP32[$sym$1 >> 2] | 0;
$165 = $163;
$191 = $$pre225;
}
$164 = ($165 + ($156 << 3)) | 0;
HEAP32[$164 >> 2] = $151;
$166 = ((($165 + ($156 << 3)) | 0) + 4) | 0;
HEAP32[$166 >> 2] = $153;
$167 = HEAP32[$98 >> 2] | 0;
$168 = HEAP32[$116 >> 2] | 0;
$169 = ($167 - $168) | 0;
$170 = HEAP32[$150 >> 2] | 0;
$171 = ($169 + $170) | 0;
$172 = HEAP32[$133 >> 2] | 0;
$173 = ($171 - $172) | 0;
HEAP32[$dir >> 2] = $173;
$174 = HEAP32[$118 >> 2] | 0;
$175 = HEAP32[$101 >> 2] | 0;
$176 = ($174 - $175) | 0;
$177 = HEAP32[$135 >> 2] | 0;
$178 = ($176 + $177) | 0;
$179 = HEAP32[$152 >> 2] | 0;
$180 = ($178 - $179) | 0;
HEAP32[$12 >> 2] = $180;
$ispos = ($173 | 0) > -1;
$neg = (0 - $173) | 0;
$181 = $ispos ? $173 : $neg;
$ispos6 = ($180 | 0) > -1;
$neg7 = (0 - $180) | 0;
$182 = $ispos6 ? $180 : $neg7;
$183 = ($181 | 0) > ($182 | 0);
$184 = $183 & 1;
$185 = $184 ^ 1;
$186 = ($dir + ($185 << 2)) | 0;
$187 = HEAP32[$186 >> 2] | 0;
$$lobit = $187 >>> 31;
$188 = $$lobit << 1;
$189 = $184 | $188;
$190 = ($191 + 36) | 0;
HEAP32[$190 >> 2] = $189;
$192 = ((($0 + (($99 * 48) | 0)) | 0) + 4) | 0;
$193 = HEAP32[$192 >> 2] | 0;
$194 = ($193 | 0) > 0;
L71: do {
if ($194) {
$195 = ($0 + (($99 * 48) | 0)) | 0;
$eci$1128 = $eci$0151;
$eci_cd$1134 = $eci_cd$0155;
$k$1132 = 0;
$sa_ntext$3127 = $sa_ntext$2;
while (1) {
$196 = HEAP32[$195 >> 2] | 0;
$197 = ($196 + (($k$1132 * 12) | 0)) | 0;
$198 = HEAP32[$197 >> 2] | 0;
L75: do {
switch ($198 | 0) {
case 2: {
$208 = ((($196 + (($k$1132 * 12) | 0)) | 0) + 4) | 0;
$209 = HEAP32[$208 >> 2] | 0;
HEAP32[$in >> 2] = $209;
$210 = ((($196 + (($k$1132 * 12) | 0)) | 0) + 8) | 0;
$211 = HEAP32[$210 >> 2] | 0;
HEAP32[$inleft >> 2] = $211;
do {
if ($80) {
$237 = $211;
$239 = $209;
$sa_ntext$5$ph = $sa_ntext$3127;
} else {
$212 = _memchr($209, 37, $211) | 0;
$213 = ($212 | 0) == (0 | 0);
if ($213) {
$237 = $211;
$239 = $209;
$sa_ntext$5$ph = $sa_ntext$3127;
break;
} else {
$214 = $212;
$216 = $209;
$225 = $211;
$sa_ntext$4123 = $sa_ntext$3127;
}
while (1) {
$215 = $214;
$217 = $216;
$218 = ($215 - $217) | 0;
$219 = ($sa_ctext$3 - $sa_ntext$4123) | 0;
$220 = ($218 + 1) | 0;
$221 = $219 >>> 0 < $220 >>> 0;
if ($221) {
$eci$1$lcssa = $eci$1128;
$eci_cd$1$lcssa = $eci_cd$1134;
$err$1$lcssa = 1;
$sa_ntext$3$lcssa = $sa_ntext$4123;
break L71;
}
$222 = ($68 + $sa_ntext$4123) | 0;
_memcpy($222 | 0, $216 | 0, $218 | 0) | 0;
$223 = ($218 + $sa_ntext$4123) | 0;
$224 = $220 >>> 0 < $225 >>> 0;
if ($224) {
$226 = ($214 + 1) | 0;
$227 = HEAP8[$226 >> 0] | 0;
$228 = ($227 << 24) >> 24 == 37;
if ($228) {
$c$0 = 37;
$p$0 = $226;
$plen$0 = $220;
} else {
label = 59;
}
} else {
label = 59;
}
if ((label | 0) == 59) {
label = 0;
$c$0 = 29;
$p$0 = $214;
$plen$0 = $218;
}
$229 = ($223 + 1) | 0;
$230 = ($68 + $223) | 0;
HEAP8[$230 >> 0] = $c$0;
$$neg68 = $plen$0 ^ -1;
$231 = ($225 + $$neg68) | 0;
HEAP32[$inleft >> 2] = $231;
$232 = ($p$0 + 1) | 0;
HEAP32[$in >> 2] = $232;
$233 = _memchr($232, 37, $231) | 0;
$234 = ($233 | 0) == (0 | 0);
if ($234) {
$237 = $231;
$239 = $232;
$sa_ntext$5$ph = $229;
break;
} else {
$214 = $233;
$216 = $232;
$225 = $231;
$sa_ntext$4123 = $229;
}
}
}
} while (0);
$235 = ($sa_ctext$3 - $sa_ntext$5$ph) | 0;
$236 = $235 >>> 0 < $237 >>> 0;
if ($236) {
$eci$1$lcssa = $eci$1128;
$eci_cd$1$lcssa = $eci_cd$1134;
$err$1$lcssa = 1;
$sa_ntext$3$lcssa = $sa_ntext$5$ph;
break L71;
}
$238 = ($68 + $sa_ntext$5$ph) | 0;
_memcpy($238 | 0, $239 | 0, $237 | 0) | 0;
$240 = ($237 + $sa_ntext$5$ph) | 0;
$eci$2 = $eci$1128;
$eci_cd$2 = $eci_cd$1134;
$err$5 = 0;
$sa_ntext$6 = $240;
break;
}
case 1: {
$199 = ($sa_ctext$3 - $sa_ntext$3127) | 0;
$200 = ((($196 + (($k$1132 * 12) | 0)) | 0) + 8) | 0;
$201 = HEAP32[$200 >> 2] | 0;
$202 = $199 >>> 0 < $201 >>> 0;
if ($202) {
$eci$1$lcssa = $eci$1128;
$eci_cd$1$lcssa = $eci_cd$1134;
$err$1$lcssa = 1;
$sa_ntext$3$lcssa = $sa_ntext$3127;
break L71;
}
$203 = ($68 + $sa_ntext$3127) | 0;
$204 = ((($196 + (($k$1132 * 12) | 0)) | 0) + 4) | 0;
$205 = HEAP32[$204 >> 2] | 0;
_memcpy($203 | 0, $205 | 0, $201 | 0) | 0;
$206 = HEAP32[$200 >> 2] | 0;
$207 = ($206 + $sa_ntext$3127) | 0;
$eci$2 = $eci$1128;
$eci_cd$2 = $eci_cd$1134;
$err$5 = 0;
$sa_ntext$6 = $207;
break;
}
case 7: {
$353 = ((($196 + (($k$1132 * 12) | 0)) | 0) + 4) | 0;
$354 = HEAP32[$353 >> 2] | 0;
$355 = $354 >>> 0 < 19;
$356 = ($354 | 0) != 14;
$or$cond = $355 & $356;
do {
if ($or$cond) {
if ((($354 | 0) == 0) | (($354 | 0) == 2)) {
$enc$0 = 7936;
break;
}
$357 = $354 >>> 0 < 3;
$$op = (3 - $354) | 0;
$$neg69 = $357 ? $$op : 0;
$358 = ($354 + -2) | 0;
$359 = ($358 + $$neg69) | 0;
HEAP32[$vararg_buffer >> 2] = $359;
_sprintf($buf, 7920, $vararg_buffer) | 0;
$enc$0 = $buf;
} else {
if (($354 | 0) == 20) {
$enc$0 = 7912;
break;
} else if (!(($354 | 0) == 26)) {
$eci$2 = $eci$1128;
$eci_cd$2 = $eci_cd$1134;
$err$5 = 0;
$sa_ntext$6 = $sa_ntext$3127;
break L75;
}
$enc$0 = 7888;
}
} while (0);
$360 = _iconv_open(7888, $enc$0) | 0;
$eci$2 = $354;
$eci_cd$2 = $360;
$err$5 = 0;
$sa_ntext$6 = $sa_ntext$3127;
break;
}
case 8:
case 4: {
$241 = ((($196 + (($k$1132 * 12) | 0)) | 0) + 4) | 0;
$242 = HEAP32[$241 >> 2] | 0;
HEAP32[$in >> 2] = $242;
$243 = ((($196 + (($k$1132 * 12) | 0)) | 0) + 8) | 0;
$244 = HEAP32[$243 >> 2] | 0;
HEAP32[$inleft >> 2] = $244;
$245 = ($68 + $sa_ntext$3127) | 0;
HEAP32[$out >> 2] = $245;
$246 = ($sa_ctext$3 - $sa_ntext$3127) | 0;
HEAP32[$outleft >> 2] = $246;
$247 = ($eci$1128 | 0) < 0;
if (!$247) {
$346 = ($eci_cd$1134 | 0) == (-1 | 0);
if ($346) {
$eci$1$lcssa = $eci$1128;
$eci_cd$1$lcssa = -1;
$err$1$lcssa = 1;
$sa_ntext$3$lcssa = $sa_ntext$3127;
break L71;
}
$347 = _iconv($eci_cd$1134, $in, $inleft, $out, $outleft) | 0;
$348 = ($347 | 0) == -1;
$349 = $348 & 1;
if ($348) {
$eci$2 = $eci$1128;
$eci_cd$2 = $eci_cd$1134;
$err$5 = $349;
$sa_ntext$6 = $sa_ntext$3127;
break L75;
}
$350 = HEAP32[$out >> 2] | 0;
$351 = $350;
$352 = ($351 - $82) | 0;
$eci$2 = $eci$1128;
$eci_cd$2 = $eci_cd$1134;
$err$5 = $349;
$sa_ntext$6 = $352;
break L75;
}
L104: do {
if ($81) {
$259 = $244 >>> 0 > 2;
do {
if ($259) {
$260 = HEAP8[$242 >> 0] | 0;
$261 = ($260 << 24) >> 24 == -17;
if (!$261) {
break;
}
$262 = ($242 + 1) | 0;
$263 = HEAP8[$262 >> 0] | 0;
$264 = ($263 << 24) >> 24 == -69;
if (!$264) {
break;
}
$265 = ($242 + 2) | 0;
$266 = HEAP8[$265 >> 0] | 0;
$267 = ($266 << 24) >> 24 == -65;
if (!$267) {
break;
}
$268 = ($242 + 3) | 0;
HEAP32[$in >> 2] = $268;
$269 = ($244 + -3) | 0;
HEAP32[$inleft >> 2] = $269;
do {
if ($13) {
$481 = 1;
} else {
$270 = _iconv($6, $in, $inleft, $out, $outleft) | 0;
$271 = ($270 | 0) == -1;
$272 = $271 & 1;
if ($271) {
$481 = $272;
break;
}
$273 = HEAP32[$out >> 2] | 0;
$274 = $273;
$275 = ($274 - $82) | 0;
$i$03$i24 = 0;
while (1) {
$278 = ($enc_list + ($i$03$i24 << 2)) | 0;
$279 = HEAP32[$278 >> 2] | 0;
$280 = ($279 | 0) == ($6 | 0);
$276 = ($i$03$i24 + 1) | 0;
if ($280) {
break;
}
$277 = ($276 | 0) < 3;
if ($277) {
$i$03$i24 = $276;
} else {
$eci$2 = $eci$1128;
$eci_cd$2 = $eci_cd$1134;
$err$5 = $272;
$sa_ntext$6 = $275;
break L75;
}
}
$281 = ($i$03$i24 | 0) > 0;
if ($281) {
$$in$i26 = $i$03$i24;
while (1) {
$282 = ($$in$i26 + -1) | 0;
$283 = ($enc_list + ($282 << 2)) | 0;
$284 = HEAP32[$283 >> 2] | 0;
$285 = ($enc_list + ($$in$i26 << 2)) | 0;
HEAP32[$285 >> 2] = $284;
$286 = ($282 | 0) > 0;
if ($286) {
$$in$i26 = $282;
} else {
break;
}
}
}
HEAP32[$enc_list >> 2] = $6;
$eci$2 = $eci$1128;
$eci_cd$2 = $eci_cd$1134;
$err$5 = $272;
$sa_ntext$6 = $275;
break L75;
}
} while (0);
$287 = HEAP32[$241 >> 2] | 0;
HEAP32[$in >> 2] = $287;
$288 = HEAP32[$243 >> 2] | 0;
HEAP32[$inleft >> 2] = $288;
HEAP32[$out >> 2] = $245;
HEAP32[$outleft >> 2] = $246;
$311 = $288;
$316 = $287;
$ei$0114 = 0;
$err$3113 = $481;
break L104;
}
} while (0);
$289 = ($244 | 0) > 0;
if ($289) {
$i$01$i = 0;
while (1) {
$292 = ($242 + $i$01$i) | 0;
$293 = HEAP8[$292 >> 0] | 0;
$294 = ($293 << 24) >> 24 < 0;
$290 = ($i$01$i + 1) | 0;
if ($294) {
$311 = $244;
$316 = $242;
$ei$0114 = 0;
$err$3113 = 0;
break L104;
}
$291 = ($290 | 0) < ($244 | 0);
if ($291) {
$i$01$i = $290;
} else {
$i$03$i39 = 0;
break;
}
}
} else {
$i$03$i39 = 0;
}
while (1) {
$297 = ($enc_list + ($i$03$i39 << 2)) | 0;
$298 = HEAP32[$297 >> 2] | 0;
$299 = ($298 | 0) == ($6 | 0);
$295 = ($i$03$i39 + 1) | 0;
if ($299) {
break;
}
$296 = ($295 | 0) < 3;
if ($296) {
$i$03$i39 = $295;
} else {
$311 = $244;
$316 = $242;
$ei$0114 = 0;
$err$3113 = 0;
break L104;
}
}
$300 = ($i$03$i39 | 0) > 0;
if ($300) {
$$in$i41 = $i$03$i39;
while (1) {
$301 = ($$in$i41 + -1) | 0;
$302 = ($enc_list + ($301 << 2)) | 0;
$303 = HEAP32[$302 >> 2] | 0;
$304 = ($enc_list + ($$in$i41 << 2)) | 0;
HEAP32[$304 >> 2] = $303;
$305 = ($301 | 0) > 0;
if ($305) {
$$in$i41 = $301;
} else {
break;
}
}
}
HEAP32[$enc_list >> 2] = $6;
$311 = $244;
$316 = $242;
$ei$0114 = 0;
$err$3113 = 0;
} else {
$i$03$i = 0;
while (1) {
$250 = ($enc_list + ($i$03$i << 2)) | 0;
$251 = HEAP32[$250 >> 2] | 0;
$252 = ($251 | 0) == ($5 | 0);
$248 = ($i$03$i + 1) | 0;
if ($252) {
break;
}
$249 = ($248 | 0) < 3;
if ($249) {
$i$03$i = $248;
} else {
$311 = $244;
$316 = $242;
$ei$0114 = 0;
$err$3113 = 0;
break L104;
}
}
$253 = ($i$03$i | 0) > 0;
if ($253) {
$$in$i = $i$03$i;
while (1) {
$254 = ($$in$i + -1) | 0;
$255 = ($enc_list + ($254 << 2)) | 0;
$256 = HEAP32[$255 >> 2] | 0;
$257 = ($enc_list + ($$in$i << 2)) | 0;
HEAP32[$257 >> 2] = $256;
$258 = ($254 | 0) > 0;
if ($258) {
$$in$i = $254;
} else {
break;
}
}
}
HEAP32[$enc_list >> 2] = $5;
$311 = $244;
$316 = $242;
$ei$0114 = 0;
$err$3113 = 0;
}
} while (0);
while (1) {
$306 = ($enc_list + ($ei$0114 << 2)) | 0;
$307 = HEAP32[$306 >> 2] | 0;
$308 = ($307 | 0) == (-1 | 0);
if ($308) {
$482 = $311;
$483 = $316;
$err$4 = $err$3113;
} else {
$309 = ($ei$0114 | 0) < 2;
$310 = ($307 | 0) == ($4 | 0);
$or$cond10 = $309 & $310;
L148: do {
if ($or$cond10) {
$312 = ($311 | 0) > 0;
if ($312) {
$i$01$i49 = 0;
} else {
$324 = $4;
break;
}
while (1) {
$315 = ($316 + $i$01$i49) | 0;
$317 = HEAP8[$315 >> 0] | 0;
$318 = ($317 << 24) >> 24 < 0;
$319 = ($317 & 255) < 160;
$or$cond$i = $318 & $319;
$313 = ($i$01$i49 + 1) | 0;
if ($or$cond$i) {
break;
}
$314 = ($313 | 0) < ($311 | 0);
if ($314) {
$i$01$i49 = $313;
} else {
$324 = $4;
break L148;
}
}
$ej$0106 = ($ei$0114 + 1) | 0;
$320 = ($ej$0106 | 0) < 3;
if ($320) {
$ej$0$in107 = $ei$0114;
$ej$0108 = $ej$0106;
while (1) {
$321 = ($enc_list + ($ej$0108 << 2)) | 0;
$322 = HEAP32[$321 >> 2] | 0;
$323 = ($enc_list + ($ej$0$in107 << 2)) | 0;
HEAP32[$323 >> 2] = $322;
$ej$0 = ($ej$0108 + 1) | 0;
$exitcond203 = ($ej$0 | 0) == 3;
if ($exitcond203) {
break;
} else {
$ej$0$in107$phi = $ej$0108;
$ej$0108 = $ej$0;
$ej$0$in107 = $ej$0$in107$phi;
}
}
}
HEAP32[$9 >> 2] = $4;
$$pre226 = HEAP32[$306 >> 2] | 0;
$324 = $$pre226;
} else {
$324 = $307;
}
} while (0);
$325 = _iconv($324, $in, $inleft, $out, $outleft) | 0;
$326 = ($325 | 0) == -1;
$327 = $326 & 1;
if (!$326) {
break;
}
$342 = HEAP32[$241 >> 2] | 0;
HEAP32[$in >> 2] = $342;
$343 = HEAP32[$243 >> 2] | 0;
HEAP32[$inleft >> 2] = $343;
HEAP32[$out >> 2] = $245;
HEAP32[$outleft >> 2] = $246;
$482 = $343;
$483 = $342;
$err$4 = $327;
}
$344 = ($ei$0114 + 1) | 0;
$345 = ($344 | 0) < 3;
if ($345) {
$311 = $482;
$316 = $483;
$ei$0114 = $344;
$err$3113 = $err$4;
} else {
$eci$2 = $eci$1128;
$eci_cd$2 = $eci_cd$1134;
$err$5 = $err$4;
$sa_ntext$6 = $sa_ntext$3127;
break L75;
}
}
$328 = HEAP32[$out >> 2] | 0;
$329 = $328;
$330 = ($329 - $82) | 0;
$i$03$i52 = 0;
while (1) {
$333 = ($enc_list + ($i$03$i52 << 2)) | 0;
$334 = HEAP32[$333 >> 2] | 0;
$335 = ($334 | 0) == ($324 | 0);
$331 = ($i$03$i52 + 1) | 0;
if ($335) {
break;
}
$332 = ($331 | 0) < 3;
if ($332) {
$i$03$i52 = $331;
} else {
$eci$2 = $eci$1128;
$eci_cd$2 = $eci_cd$1134;
$err$5 = $327;
$sa_ntext$6 = $330;
break L75;
}
}
$336 = ($i$03$i52 | 0) > 0;
if ($336) {
$$in$i54 = $i$03$i52;
while (1) {
$337 = ($$in$i54 + -1) | 0;
$338 = ($enc_list + ($337 << 2)) | 0;
$339 = HEAP32[$338 >> 2] | 0;
$340 = ($enc_list + ($$in$i54 << 2)) | 0;
HEAP32[$340 >> 2] = $339;
$341 = ($337 | 0) > 0;
if ($341) {
$$in$i54 = $337;
} else {
break;
}
}
}
HEAP32[$enc_list >> 2] = $324;
$eci$2 = $eci$1128;
$eci_cd$2 = $eci_cd$1134;
$err$5 = $327;
$sa_ntext$6 = $330;
break;
}
default: {
$eci$2 = $eci$1128;
$eci_cd$2 = $eci_cd$1134;
$err$5 = 0;
$sa_ntext$6 = $sa_ntext$3127;
}
}
} while (0);
$361 = ($k$1132 + 1) | 0;
$362 = HEAP32[$192 >> 2] | 0;
$363 = ($361 | 0) < ($362 | 0);
$364 = ($err$5 | 0) == 0;
$or$cond9 = $363 & $364;
if ($or$cond9) {
$eci$1128 = $eci$2;
$eci_cd$1134 = $eci_cd$2;
$k$1132 = $361;
$sa_ntext$3127 = $sa_ntext$6;
} else {
$eci$1$lcssa = $eci$2;
$eci_cd$1$lcssa = $eci_cd$2;
$err$1$lcssa = $err$5;
$sa_ntext$3$lcssa = $sa_ntext$6;
break L71;
}
}
} else {
$eci$1$lcssa = $eci$0151;
$eci_cd$1$lcssa = $eci_cd$0155;
$err$1$lcssa = 0;
$sa_ntext$3$lcssa = $sa_ntext$2;
}
} while (0);
$365 = ($eci$1$lcssa | 0) < 2;
if ($365) {
$366 = ($eci_cd$1$lcssa | 0) == (-1 | 0);
if ($366) {
$eci$3 = -1;
} else {
$eci$3 = -1;
}
} else {
$eci$3 = $eci$1$lcssa;
}
$367 = ($j$5 + 1) | 0;
$368 = ($367 | 0) < ($sa_size$0242 | 0);
$369 = ($err$1$lcssa | 0) == 0;
$or$cond8 = $368 & $369;
if (!$or$cond8) {
$480 = $369;
$eci_cd$0146 = $eci_cd$1$lcssa;
$sa_ntext$1144 = $sa_ntext$3$lcssa;
break;
}
$370 = HEAP32[$sym$1 >> 2] | 0;
$371 = ($370 + 44) | 0;
$eci$0151 = $eci$3;
$eci_cd$0155 = $eci_cd$1$lcssa;
$j$3153 = $367;
$sa_ntext$1150 = $sa_ntext$3$lcssa;
$sym$0154 = $371;
}
$372 = ($eci_cd$0146 | 0) == (-1 | 0);
if ($372) {
if ($480) {
$375 = $68;
$376 = $67;
$fnc1$0$lcssa248251264270 = $fnc1$0$lcssa248254;
$sa_ntext$1144266268 = $sa_ntext$1144;
$sa_size$0244265269 = $sa_size$0242;
break;
}
} else {
if ($480) {
$375 = $68;
$376 = $67;
$fnc1$0$lcssa248251264270 = $fnc1$0$lcssa248254;
$sa_ntext$1144266268 = $sa_ntext$1144;
$sa_size$0244265269 = $sa_size$0242;
break;
}
}
$473 = HEAP32[$syms >> 2] | 0;
__zbar_image_scanner_recycle_syms($iscn, $473);
_free($68);
break L5;
}
} while (0);
$373 = ($sa_ntext$1144266268 + 1) | 0;
$374 = ($375 + $sa_ntext$1144266268) | 0;
HEAP8[$374 >> 0] = 0;
$377 = $376 >>> 0 > $373 >>> 0;
if ($377) {
$378 = _realloc($375, $373) | 0;
$sa_text$0 = $378;
} else {
$sa_text$0 = $375;
}
$379 = ($sa_size$0244265269 | 0) == 1;
if ($379) {
$380 = HEAP32[$syms >> 2] | 0;
$sa_sym$0 = $380;
} else {
$381 = HEAP32[$10 >> 2] | 0;
$382 = HEAP32[$11 >> 2] | 0;
$383 = __zbar_image_scanner_alloc_sym($iscn, 64, 0) | 0;
$384 = __zbar_symbol_set_create() | 0;
$385 = ($383 + 48) | 0;
HEAP32[$385 >> 2] = $384;
$386 = HEAP32[$syms >> 2] | 0;
$387 = ($384 + 8) | 0;
HEAP32[$387 >> 2] = $386;
$388 = ($386 | 0) == (0 | 0);
if ($388) {
$sa_sym$0 = $383;
} else {
$390 = $386;
$xmax$0183 = -2;
$xmin$0182 = $381;
$ymax$0185 = -2;
$ymin$0184 = $382;
while (1) {
$389 = ($390 + 40) | 0;
$391 = HEAP32[$389 >> 2] | 0;
$392 = ($391 + 1) | 0;
HEAP32[$389 >> 2] = $392;
$393 = ($391 | 0) > -2;
if (!$393) {
label = 133;
break L3;
}
$394 = HEAP32[$390 >> 2] | 0;
$395 = ($394 | 0) == 1;
if ($395) {
HEAP32[$383 >> 2] = 1;
$xmax$3 = $xmax$0183;
$xmin$3 = $xmin$0182;
$ymax$3 = $ymax$0185;
$ymin$3 = $ymin$0184;
} else {
$396 = ($390 + 28) | 0;
$397 = HEAP32[$396 >> 2] | 0;
$398 = ($397 | 0) == 0;
if ($398) {
$xmax$3 = $xmax$0183;
$xmin$3 = $xmin$0182;
$ymax$3 = $ymax$0185;
$ymin$3 = $ymin$0184;
} else {
$$phi$trans$insert = ($390 + 32) | 0;
$$pre = HEAP32[$$phi$trans$insert >> 2] | 0;
$j$6164 = 0;
$xmax$1166 = $xmax$0183;
$xmin$1165 = $xmin$0182;
$ymax$1168 = $ymax$0185;
$ymin$1167 = $ymin$0184;
while (1) {
$399 = ($$pre + ($j$6164 << 3)) | 0;
$400 = HEAP32[$399 >> 2] | 0;
$401 = ($xmin$1165 | 0) < ($400 | 0);
$402 = ($400 + -1) | 0;
$xmin$1$ = $401 ? $xmin$1165 : $402;
$403 = ($xmax$1166 | 0) > ($400 | 0);
$404 = ($400 + 1) | 0;
$xmax$2 = $403 ? $xmax$1166 : $404;
$405 = ((($$pre + ($j$6164 << 3)) | 0) + 4) | 0;
$406 = HEAP32[$405 >> 2] | 0;
$407 = ($ymin$1167 | 0) < ($406 | 0);
$408 = ($406 + -1) | 0;
$ymin$1$ = $407 ? $ymin$1167 : $408;
$409 = ($ymax$1168 | 0) > ($406 | 0);
$410 = ($406 + 1) | 0;
$ymax$2 = $409 ? $ymax$1168 : $410;
$411 = ($j$6164 + 1) | 0;
$412 = $411 >>> 0 < $397 >>> 0;
if ($412) {
$j$6164 = $411;
$xmax$1166 = $xmax$2;
$xmin$1165 = $xmin$1$;
$ymax$1168 = $ymax$2;
$ymin$1167 = $ymin$1$;
} else {
$xmax$3 = $xmax$2;
$xmin$3 = $xmin$1$;
$ymax$3 = $ymax$2;
$ymin$3 = $ymin$1$;
break;
}
}
}
}
$413 = ($390 + 16) | 0;
$414 = HEAP32[$413 >> 2] | 0;
$415 = ($sa_text$0 + $414) | 0;
$416 = ($390 + 20) | 0;
HEAP32[$416 >> 2] = $415;
$417 = HEAP32[$syms >> 2] | 0;
$418 = ($417 + 44) | 0;
$419 = HEAP32[$418 >> 2] | 0;
$420 = ($419 | 0) == (0 | 0);
if ($420) {
$425 = $373;
} else {
$421 = ($419 + 16) | 0;
$422 = HEAP32[$421 >> 2] | 0;
$425 = $422;
}
$423 = ($417 + 16) | 0;
$424 = HEAP32[$423 >> 2] | 0;
$426 = $425 >>> 0 > $424 >>> 0;
if (!$426) {
label = 142;
break L3;
}
$427 = ($425 + -1) | 0;
$428 = ($427 - $424) | 0;
HEAP32[$423 >> 2] = $428;
HEAP32[$syms >> 2] = $419;
if ($420) {
break;
} else {
$390 = $419;
$xmax$0183 = $xmax$3;
$xmin$0182 = $xmin$3;
$ymax$0185 = $ymax$3;
$ymin$0184 = $ymin$3;
}
}
$429 = ($xmax$3 | 0) > -2;
if ($429) {
$430 = ($383 + 28) | 0;
$431 = HEAP32[$430 >> 2] | 0;
$432 = ($431 + 1) | 0;
HEAP32[$430 >> 2] = $432;
$433 = ($383 + 24) | 0;
$434 = HEAP32[$433 >> 2] | 0;
$435 = $432 >>> 0 < $434 >>> 0;
$$phi$trans$insert$i45 = ($383 + 32) | 0;
$$pre$i46 = HEAP32[$$phi$trans$insert$i45 >> 2] | 0;
if ($435) {
$$pre$i36 = $$pre$i46;
} else {
$436 = ($434 + 1) | 0;
HEAP32[$433 >> 2] = $436;
$437 = $436 << 3;
$438 = _realloc($$pre$i46, $437) | 0;
HEAP32[$$phi$trans$insert$i45 >> 2] = $438;
$$pre$i36 = $438;
}
$439 = ($$pre$i36 + ($431 << 3)) | 0;
HEAP32[$439 >> 2] = $xmin$3;
$440 = ((($$pre$i36 + ($431 << 3)) | 0) + 4) | 0;
HEAP32[$440 >> 2] = $ymin$3;
$441 = HEAP32[$430 >> 2] | 0;
$442 = ($441 + 1) | 0;
HEAP32[$430 >> 2] = $442;
$443 = HEAP32[$433 >> 2] | 0;
$444 = $442 >>> 0 < $443 >>> 0;
if ($444) {
$$pre$i31 = $$pre$i36;
} else {
$445 = ($443 + 1) | 0;
HEAP32[$433 >> 2] = $445;
$446 = $445 << 3;
$447 = _realloc($$pre$i36, $446) | 0;
HEAP32[$$phi$trans$insert$i45 >> 2] = $447;
$$pre$i31 = $447;
}
$448 = ($$pre$i31 + ($441 << 3)) | 0;
HEAP32[$448 >> 2] = $xmin$3;
$449 = ((($$pre$i31 + ($441 << 3)) | 0) + 4) | 0;
HEAP32[$449 >> 2] = $ymax$3;
$450 = HEAP32[$430 >> 2] | 0;
$451 = ($450 + 1) | 0;
HEAP32[$430 >> 2] = $451;
$452 = HEAP32[$433 >> 2] | 0;
$453 = $451 >>> 0 < $452 >>> 0;
if ($453) {
$$pre$i21 = $$pre$i31;
} else {
$454 = ($452 + 1) | 0;
HEAP32[$433 >> 2] = $454;
$455 = $454 << 3;
$456 = _realloc($$pre$i31, $455) | 0;
HEAP32[$$phi$trans$insert$i45 >> 2] = $456;
$$pre$i21 = $456;
}
$457 = ($$pre$i21 + ($450 << 3)) | 0;
HEAP32[$457 >> 2] = $xmax$3;
$458 = ((($$pre$i21 + ($450 << 3)) | 0) + 4) | 0;
HEAP32[$458 >> 2] = $ymax$3;
$459 = HEAP32[$430 >> 2] | 0;
$460 = ($459 + 1) | 0;
HEAP32[$430 >> 2] = $460;
$461 = HEAP32[$433 >> 2] | 0;
$462 = $460 >>> 0 < $461 >>> 0;
if ($462) {
$467 = $$pre$i21;
} else {
$463 = ($461 + 1) | 0;
HEAP32[$433 >> 2] = $463;
$464 = $463 << 3;
$465 = _realloc($$pre$i21, $464) | 0;
HEAP32[$$phi$trans$insert$i45 >> 2] = $465;
$467 = $465;
}
$466 = ($467 + ($459 << 3)) | 0;
HEAP32[$466 >> 2] = $xmax$3;
$468 = ((($467 + ($459 << 3)) | 0) + 4) | 0;
HEAP32[$468 >> 2] = $ymin$3;
$sa_sym$0 = $383;
} else {
$sa_sym$0 = $383;
}
}
}
$469 = ($sa_sym$0 + 20) | 0;
HEAP32[$469 >> 2] = $sa_text$0;
$470 = ($sa_sym$0 + 12) | 0;
HEAP32[$470 >> 2] = $373;
$471 = ($sa_sym$0 + 16) | 0;
HEAP32[$471 >> 2] = $sa_ntext$1144266268;
$472 = ($sa_sym$0 + 8) | 0;
HEAP32[$472 >> 2] = $fnc1$0$lcssa248251264270;
__zbar_image_scanner_add_sym($iscn, $sa_sym$0);
}
} while (0);
$474 = ($i$0193 + 1) | 0;
$475 = ($474 | 0) < ($2 | 0);
if ($475) {
$i$0193 = $474;
} else {
break L1;
}
}
if ((label | 0) == 133) {
___assert_fail(8024 | 0, 8032 | 0, 87, 8048 | 0);
// unreachable;
} else if ((label | 0) == 142) {
___assert_fail(7944 | 0, 7968 | 0, 516, 7992 | 0);
// unreachable;
}
}
} while (0);
$476 = ($6 | 0) == (-1 | 0);
if (!$476) {
}
$477 = ($5 | 0) == (-1 | 0);
if (!$477) {
}
$478 = ($4 | 0) == (-1 | 0);
if ($478) {
_free($3);
STACKTOP = sp;
return 0;
}
_free($3);
STACKTOP = sp;
return 0;
}
function _rs_gf256_init($_gf, $_ppoly) {
$_gf = $_gf | 0;
$_ppoly = $_ppoly | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$exitcond = 0,
$exitcond4 = 0,
$i$03 = 0;
var $i$11 = 0,
$p$02 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$i$03 = 0;
$p$02 = 1;
while (1) {
$0 = $p$02 & 255;
$1 = ($i$03 + 255) | 0;
$2 = ((($_gf + $1) | 0) + 256) | 0;
HEAP8[$2 >> 0] = $0;
$3 = ((($_gf + $i$03) | 0) + 256) | 0;
HEAP8[$3 >> 0] = $0;
$4 = $p$02 << 1;
$5 = $p$02 >>> 7;
$6 = (0 - $5) | 0;
$7 = $6 & $_ppoly;
$8 = $7 ^ $4;
$9 = $8 & 255;
$10 = ($i$03 + 1) | 0;
$exitcond4 = ($10 | 0) == 256;
if ($exitcond4) {
$i$11 = 0;
break;
} else {
$i$03 = $10;
$p$02 = $9;
}
}
while (1) {
$11 = $i$11 & 255;
$12 = ((($_gf + $i$11) | 0) + 256) | 0;
$13 = HEAP8[$12 >> 0] | 0;
$14 = $13 & 255;
$15 = ($_gf + $14) | 0;
HEAP8[$15 >> 0] = $11;
$16 = ($i$11 + 1) | 0;
$exitcond = ($16 | 0) == 255;
if ($exitcond) {
break;
} else {
$i$11 = $16;
}
}
HEAP8[$_gf >> 0] = 0;
STACKTOP = sp;
return;
}
function _rs_correct($_gf, $_m0, $_data, $_ndata, $_npar, $_erasures, $_nerasures) {
$_gf = $_gf | 0;
$_m0 = $_m0 | 0;
$_data = $_data | 0;
$_ndata = $_ndata | 0;
$_npar = $_npar | 0;
$_erasures = $_erasures | 0;
$_nerasures = $_nerasures | 0;
var $$0 = 0,
$$0$i = 0,
$$_fp1$i$i = 0,
$$phi$trans$insert$i = 0,
$$phi$trans$insert40$i = 0,
$$pre$i = 0,
$$pre41$i = 0,
$$pre42$i = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0;
var $109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0;
var $127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0;
var $145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0,
$152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0;
var $163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0,
$170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0;
var $181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0,
$189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0;
var $2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0,
$206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0;
var $217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0,
$224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0;
var $235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0,
$242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0;
var $253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0,
$260 = 0,
$261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0;
var $271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0,
$279 = 0,
$28 = 0,
$280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0;
var $29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0,
$297 = 0,
$298 = 0,
$299 = 0,
$3 = 0,
$30 = 0,
$300 = 0,
$301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0,
$306 = 0;
var $307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0,
$313 = 0,
$314 = 0,
$315 = 0,
$316 = 0,
$317 = 0,
$318 = 0,
$319 = 0,
$32 = 0,
$320 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0;
var $37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0;
var $55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0;
var $73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0;
var $91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$_npar$op$i$i = 0,
$a$010 = 0,
$alpha$010$i = 0,
$alphai$04$i = 0,
$alphanj$011 = 0,
$alphanj$114 = 0,
$b$0$lcssa = 0,
$b$013 = 0,
$d$09$i = 0,
$epos = 0,
$exitcond = 0;
var $exitcond$i = 0,
$exitcond$i$i = 0,
$exitcond$i2 = 0,
$exitcond$i4$i = 0,
$exitcond$i5 = 0,
$exitcond13$i = 0,
$exitcond14$i = 0,
$exitcond15$i = 0,
$exitcond33$i = 0,
$exitcond37 = 0,
$exitcond38$i = 0,
$exitcond7$i = 0,
$exitcond7$i$i = 0,
$i$01$us$i = 0,
$i$010$i = 0,
$i$02$i = 0,
$i$02$i$i = 0,
$i$02$i1$i = 0,
$i$033 = 0,
$i$114$i = 0;
var $i$119 = 0,
$i$13$i = 0,
$i$211$i = 0,
$indvars$iv$i$i = 0,
$indvars$iv$next$i$i = 0,
$j$01$i$i = 0,
$j$01$i2$i = 0,
$j$03$us$i = 0,
$j$09 = 0,
$j$112 = 0,
$k$0$ph28$i = 0,
$l$0$ph26$i = 0,
$l$0$ph29$i = 0,
$lambda = 0,
$n$01931$in$i = 0,
$n$021$i = 0,
$n$021$in$i = 0,
$nroots$01$i = 0,
$nroots$1$i = 0,
$nroots$211$i = 0;
var $nroots$211$us$i = 0,
$nroots$3$i = 0,
$omega = 0,
$or$cond$i$i = 0,
$phitmp$i = 0,
$phitmp$i3 = 0,
$s = 0,
$sj$02$us$i = 0,
$smax$i$i = 0,
$smax6$i$i = 0,
$sum$05$i = 0,
$tt$i = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 1280) | 0;
$tt$i = (sp + 1024) | 0;
$lambda = (sp + 768) | 0;
$omega = (sp + 512) | 0;
$epos = (sp + 256) | 0;
$s = sp;
$0 = ($_nerasures | 0) > ($_npar | 0);
if ($0) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
$1 = ($_npar | 0) > 0;
if (!$1) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$2 = ($_ndata | 0) > 0;
if ($2) {
$j$03$us$i = 0;
while (1) {
$20 = ($j$03$us$i + $_m0) | 0;
$21 = ((($_gf + $20) | 0) + 256) | 0;
$22 = HEAP8[$21 >> 0] | 0;
$23 = $22 & 255;
$24 = ($_gf + $23) | 0;
$25 = HEAP8[$24 >> 0] | 0;
$14 = $25 & 255;
$i$01$us$i = 0;
$sj$02$us$i = 0;
while (1) {
$6 = ($_data + $i$01$us$i) | 0;
$7 = HEAP8[$6 >> 0] | 0;
$8 = $7 & 255;
$9 = ($sj$02$us$i | 0) == 0;
if ($9) {
$18 = 0;
} else {
$10 = ($_gf + $sj$02$us$i) | 0;
$11 = HEAP8[$10 >> 0] | 0;
$12 = $11 & 255;
$13 = ($12 + $14) | 0;
$15 = ((($_gf + $13) | 0) + 256) | 0;
$16 = HEAP8[$15 >> 0] | 0;
$17 = $16 & 255;
$18 = $17;
}
$3 = $18 ^ $8;
$19 = ($i$01$us$i + 1) | 0;
$exitcond$i = ($19 | 0) == ($_ndata | 0);
if ($exitcond$i) {
break;
} else {
$i$01$us$i = $19;
$sj$02$us$i = $3;
}
}
$phitmp$i = $3 & 255;
$4 = ($s + $j$03$us$i) | 0;
HEAP8[$4 >> 0] = $phitmp$i;
$5 = ($j$03$us$i + 1) | 0;
$exitcond7$i = ($5 | 0) == ($_npar | 0);
if ($exitcond7$i) {
break;
} else {
$j$03$us$i = $5;
}
}
if ($1) {
$i$033 = 0;
} else {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
} else {
_memset($s | 0, 0, $_npar | 0) | 0;
$i$033 = 0;
}
while (1) {
$28 = ($s + $i$033) | 0;
$29 = HEAP8[$28 >> 0] | 0;
$30 = ($29 << 24) >> 24 == 0;
$26 = ($i$033 + 1) | 0;
if (!$30) {
break;
}
$27 = ($26 | 0) < ($_npar | 0);
if ($27) {
$i$033 = $26;
} else {
$$0 = 0;
label = 86;
break;
}
}
if ((label | 0) == 86) {
STACKTOP = sp;
return $$0 | 0;
}
$31 = ($_npar | 0) < 4;
$_npar$op$i$i = ($_npar + 1) | 0;
$32 = $31 ? 5 : $_npar$op$i$i;
_memset($lambda | 0, 0, $32 | 0) | 0;
HEAP8[$lambda >> 0] = 1;
$33 = ($_nerasures | 0) > 0;
if ($33) {
$34 = ($_ndata + -1) | 0;
$i$02$i$i = 0;
while (1) {
$35 = ($i$02$i$i + 1) | 0;
$36 = ($_erasures + $i$02$i$i) | 0;
$j$01$i$i = $35;
while (1) {
$37 = ($j$01$i$i + -1) | 0;
$38 = ($lambda + $37) | 0;
$39 = HEAP8[$38 >> 0] | 0;
$40 = ($39 << 24) >> 24 == 0;
if ($40) {
$56 = 0;
} else {
$41 = HEAP8[$36 >> 0] | 0;
$42 = $41 & 255;
$43 = $39 & 255;
$44 = ($34 - $42) | 0;
$45 = ($_gf + $43) | 0;
$46 = HEAP8[$45 >> 0] | 0;
$47 = $46 & 255;
$48 = ($44 + $47) | 0;
$49 = ((($_gf + $48) | 0) + 256) | 0;
$50 = HEAP8[$49 >> 0] | 0;
$51 = $50 & 255;
$56 = $51;
}
$52 = ($lambda + $j$01$i$i) | 0;
$53 = HEAP8[$52 >> 0] | 0;
$54 = $53 & 255;
$55 = $54 ^ $56;
$57 = $55 & 255;
HEAP8[$52 >> 0] = $57;
$58 = ($37 | 0) > 0;
if ($58) {
$j$01$i$i = $37;
} else {
break;
}
}
$exitcond$i$i = ($35 | 0) == ($_nerasures | 0);
if ($exitcond$i$i) {
break;
} else {
$i$02$i$i = $35;
}
}
}
_memcpy($tt$i | 0, $lambda | 0, $_npar$op$i$i | 0) | 0;
$59 = ($_nerasures | 0) < ($_npar | 0);
L36: do {
if ($59) {
$60 = ($tt$i + 1) | 0;
$k$0$ph28$i = 0;
$l$0$ph29$i = $_nerasures;
$n$01931$in$i = $_nerasures;
while (1) {
$61 = ($l$0$ph29$i | 0) < 0;
$62 = ($l$0$ph29$i + 1) | 0;
$n$021$in$i = $n$01931$in$i;
L40: while (1) {
$n$021$i = ($n$021$in$i + 1) | 0;
$63 = ($n$021$i - $k$0$ph28$i) | 0;
_memmove($60 | 0, $tt$i | 0, $63 | 0) | 0;
HEAP8[$tt$i >> 0] = 0;
L42: do {
if (!$61) {
$d$09$i = 0;
$i$010$i = 0;
while (1) {
$64 = ($lambda + $i$010$i) | 0;
$65 = HEAP8[$64 >> 0] | 0;
$66 = ($n$021$in$i - $i$010$i) | 0;
$67 = ($s + $66) | 0;
$68 = HEAP8[$67 >> 0] | 0;
$69 = ($65 << 24) >> 24 == 0;
$70 = ($68 << 24) >> 24 == 0;
$or$cond$i$i = $69 | $70;
if ($or$cond$i$i) {
$84 = 0;
} else {
$71 = $68 & 255;
$72 = $65 & 255;
$73 = ($_gf + $72) | 0;
$74 = HEAP8[$73 >> 0] | 0;
$75 = $74 & 255;
$76 = ($_gf + $71) | 0;
$77 = HEAP8[$76 >> 0] | 0;
$78 = $77 & 255;
$79 = ($78 + $75) | 0;
$80 = ((($_gf + $79) | 0) + 256) | 0;
$81 = HEAP8[$80 >> 0] | 0;
$82 = $81 & 255;
$84 = $82;
}
$83 = $84 ^ $d$09$i;
$85 = ($i$010$i + 1) | 0;
$exitcond$i5 = ($85 | 0) == ($62 | 0);
if ($exitcond$i5) {
break;
} else {
$d$09$i = $83;
$i$010$i = $85;
}
}
$86 = ($84 | 0) == ($d$09$i | 0);
if (!$86) {
$88 = ($_gf + $83) | 0;
$89 = HEAP8[$88 >> 0] | 0;
$90 = $89 & 255;
$91 = ($l$0$ph29$i | 0) < ($63 | 0);
if ($91) {
break L40;
} else {
$124 = 0;
$i$211$i = 0;
}
while (1) {
$121 = ($lambda + $i$211$i) | 0;
$122 = HEAP8[$121 >> 0] | 0;
$123 = $122 & 255;
$125 = ($124 << 24) >> 24 == 0;
if ($125) {
$135 = 0;
} else {
$126 = $124 & 255;
$127 = ($_gf + $126) | 0;
$128 = HEAP8[$127 >> 0] | 0;
$129 = $128 & 255;
$130 = ($129 + $90) | 0;
$131 = ((($_gf + $130) | 0) + 256) | 0;
$132 = HEAP8[$131 >> 0] | 0;
$133 = $132 & 255;
$135 = $133;
}
$134 = $135 ^ $123;
$136 = $134 & 255;
HEAP8[$121 >> 0] = $136;
$137 = ($i$211$i + 1) | 0;
$exitcond33$i = ($137 | 0) == ($62 | 0);
if ($exitcond33$i) {
break L42;
}
$$phi$trans$insert$i = ($tt$i + $137) | 0;
$$pre$i = HEAP8[$$phi$trans$insert$i >> 0] | 0;
$124 = $$pre$i;
$i$211$i = $137;
}
}
}
} while (0);
$87 = ($n$021$i | 0) < ($_npar | 0);
if ($87) {
$n$021$in$i = $n$021$i;
} else {
$l$0$ph26$i = $l$0$ph29$i;
break L36;
}
}
$92 = ($63 | 0) < 0;
L58: do {
if (!$92) {
$93 = $90 ^ 255;
$96 = 0;
$i$114$i = 0;
while (1) {
$94 = ($tt$i + $i$114$i) | 0;
$95 = $96 & 255;
$97 = ($lambda + $i$114$i) | 0;
$98 = HEAP8[$97 >> 0] | 0;
$99 = ($98 << 24) >> 24 == 0;
$$pre42$i = $98 & 255;
if ($99) {
$106 = 0;
} else {
$100 = ($_gf + $$pre42$i) | 0;
$101 = HEAP8[$100 >> 0] | 0;
$102 = $101 & 255;
$103 = ($102 + $93) | 0;
$104 = ((($_gf + $103) | 0) + 256) | 0;
$105 = HEAP8[$104 >> 0] | 0;
$106 = $105;
}
HEAP8[$94 >> 0] = $106;
$107 = ($96 << 24) >> 24 == 0;
if ($107) {
$116 = 0;
} else {
$108 = ($_gf + $95) | 0;
$109 = HEAP8[$108 >> 0] | 0;
$110 = $109 & 255;
$111 = ($110 + $90) | 0;
$112 = ((($_gf + $111) | 0) + 256) | 0;
$113 = HEAP8[$112 >> 0] | 0;
$114 = $113 & 255;
$116 = $114;
}
$115 = $116 ^ $$pre42$i;
$117 = $115 & 255;
HEAP8[$97 >> 0] = $117;
$118 = ($i$114$i + 1) | 0;
$exitcond38$i = ($i$114$i | 0) == ($63 | 0);
if ($exitcond38$i) {
break L58;
}
$$phi$trans$insert40$i = ($tt$i + $118) | 0;
$$pre41$i = HEAP8[$$phi$trans$insert40$i >> 0] | 0;
$96 = $$pre41$i;
$i$114$i = $118;
}
}
} while (0);
$119 = ($n$021$i - $l$0$ph29$i) | 0;
$120 = ($n$021$i | 0) < ($_npar | 0);
if ($120) {
$k$0$ph28$i = $119;
$l$0$ph29$i = $63;
$n$01931$in$i = $n$021$i;
} else {
$l$0$ph26$i = $63;
break;
}
}
} else {
$l$0$ph26$i = $_nerasures;
}
} while (0);
$138 = ($l$0$ph26$i + 1) | 0;
_memset($omega | 0, 0, $_npar | 0) | 0;
$139 = ($138 | 0) < ($_npar | 0);
$140 = $139 ? $138 : $_npar;
$141 = ($140 | 0) > 0;
L71: do {
if ($141) {
$142 = $_npar ^ -1;
$143 = (-2 - $l$0$ph26$i) | 0;
$144 = ($143 | 0) > ($142 | 0);
$smax6$i$i = $144 ? $143 : $142;
$145 = $smax6$i$i ^ -1;
$i$02$i1$i = 0;
$indvars$iv$i$i = $142;
while (1) {
$146 = ($indvars$iv$i$i | 0) > ($142 | 0);
$smax$i$i = $146 ? $indvars$iv$i$i : $142;
$147 = $smax$i$i ^ -1;
$148 = ($lambda + $i$02$i1$i) | 0;
$149 = HEAP8[$148 >> 0] | 0;
$150 = ($149 << 24) >> 24 == 0;
if (!$150) {
$151 = ($_npar - $i$02$i1$i) | 0;
$152 = ($151 | 0) < ($_npar | 0);
$$_fp1$i$i = $152 ? $151 : $_npar;
$153 = $149 & 255;
$154 = ($_gf + $153) | 0;
$155 = HEAP8[$154 >> 0] | 0;
$156 = $155 & 255;
$157 = ($$_fp1$i$i | 0) > 0;
if ($157) {
$j$01$i2$i = 0;
while (1) {
$158 = ($s + $j$01$i2$i) | 0;
$159 = HEAP8[$158 >> 0] | 0;
$160 = ($159 << 24) >> 24 == 0;
if ($160) {
$174 = 0;
} else {
$161 = $159 & 255;
$162 = ($_gf + $161) | 0;
$163 = HEAP8[$162 >> 0] | 0;
$164 = $163 & 255;
$165 = ($164 + $156) | 0;
$166 = ((($_gf + $165) | 0) + 256) | 0;
$167 = HEAP8[$166 >> 0] | 0;
$168 = $167 & 255;
$174 = $168;
}
$169 = ($j$01$i2$i + $i$02$i1$i) | 0;
$170 = ($omega + $169) | 0;
$171 = HEAP8[$170 >> 0] | 0;
$172 = $171 & 255;
$173 = $172 ^ $174;
$175 = $173 & 255;
HEAP8[$170 >> 0] = $175;
$176 = ($j$01$i2$i + 1) | 0;
$exitcond$i4$i = ($176 | 0) == ($147 | 0);
if ($exitcond$i4$i) {
break;
} else {
$j$01$i2$i = $176;
}
}
}
}
$177 = ($i$02$i1$i + 1) | 0;
$exitcond7$i$i = ($177 | 0) == ($145 | 0);
if ($exitcond7$i$i) {
break L71;
}
$indvars$iv$next$i$i = ($indvars$iv$i$i + 1) | 0;
$i$02$i1$i = $177;
$indvars$iv$i$i = $indvars$iv$next$i$i;
}
}
} while (0);
$178 = ($l$0$ph26$i | 0) < 1;
if ($178) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
$179 = ($l$0$ph26$i - $_nerasures) | 0;
$180 = ($_npar - $_nerasures) | 0;
$181 = $180 >> 1;
$182 = ($179 | 0) > ($181 | 0);
if ($182) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
$183 = ($l$0$ph26$i | 0) < 5;
L91: do {
if ($183) {
$189 = ($lambda + 1) | 0;
$190 = HEAP8[$189 >> 0] | 0;
$191 = $190 & 255;
$192 = ($lambda + 2) | 0;
$193 = HEAP8[$192 >> 0] | 0;
$194 = $193 & 255;
$195 = ($lambda + 3) | 0;
$196 = HEAP8[$195 >> 0] | 0;
$197 = $196 & 255;
$198 = ($lambda + 4) | 0;
$199 = HEAP8[$198 >> 0] | 0;
$200 = $199 & 255;
$201 = _rs_quartic_solve($_gf, $191, $194, $197, $200, $epos) | 0;
$202 = ($201 | 0) > 0;
if ($202) {
$i$02$i = 0;
$nroots$01$i = 0;
while (1) {
$203 = ($epos + $i$02$i) | 0;
$204 = HEAP8[$203 >> 0] | 0;
$205 = ($204 << 24) >> 24 == 0;
if ($205) {
$nroots$1$i = $nroots$01$i;
} else {
$206 = $204 & 255;
$207 = ($_gf + $206) | 0;
$208 = HEAP8[$207 >> 0] | 0;
$209 = $208 & 255;
$210 = ($209 | 0) < ($_ndata | 0);
if ($210) {
$211 = ($nroots$01$i + 1) | 0;
$212 = ($epos + $nroots$01$i) | 0;
HEAP8[$212 >> 0] = $208;
$nroots$1$i = $211;
} else {
$nroots$1$i = $nroots$01$i;
}
}
$213 = ($i$02$i + 1) | 0;
$exitcond$i2 = ($213 | 0) == ($201 | 0);
if ($exitcond$i2) {
$$0$i = $nroots$1$i;
break;
} else {
$i$02$i = $213;
$nroots$01$i = $nroots$1$i;
}
}
} else {
$$0$i = 0;
}
} else {
$184 = ($_ndata | 0) > 0;
if ($184) {
$185 = ($l$0$ph26$i | 0) < 0;
if ($185) {
$nroots$211$us$i = 0;
while (1) {
$186 = $nroots$211$us$i & 255;
$187 = ($nroots$211$us$i + 1) | 0;
$188 = ($epos + $nroots$211$us$i) | 0;
HEAP8[$188 >> 0] = $186;
$exitcond15$i = ($187 | 0) == ($_ndata | 0);
if ($exitcond15$i) {
$$0$i = $_ndata;
break L91;
} else {
$nroots$211$us$i = $187;
}
}
} else {
$alpha$010$i = 0;
$nroots$211$i = 0;
}
while (1) {
$alphai$04$i = 0;
$i$13$i = 0;
$sum$05$i = 0;
while (1) {
$214 = ($l$0$ph26$i - $i$13$i) | 0;
$215 = ($lambda + $214) | 0;
$216 = HEAP8[$215 >> 0] | 0;
$217 = ($216 << 24) >> 24 == 0;
if ($217) {
$227 = 0;
} else {
$218 = $216 & 255;
$219 = ($_gf + $218) | 0;
$220 = HEAP8[$219 >> 0] | 0;
$221 = $220 & 255;
$222 = ($221 + $alphai$04$i) | 0;
$223 = ((($_gf + $222) | 0) + 256) | 0;
$224 = HEAP8[$223 >> 0] | 0;
$225 = $224 & 255;
$227 = $225;
}
$226 = $227 ^ $sum$05$i;
$228 = ($alphai$04$i + $alpha$010$i) | 0;
$229 = ((($_gf + $228) | 0) + 256) | 0;
$230 = HEAP8[$229 >> 0] | 0;
$231 = $230 & 255;
$232 = ($_gf + $231) | 0;
$233 = HEAP8[$232 >> 0] | 0;
$234 = $233 & 255;
$235 = ($i$13$i + 1) | 0;
$exitcond13$i = ($i$13$i | 0) == ($l$0$ph26$i | 0);
if ($exitcond13$i) {
break;
} else {
$alphai$04$i = $234;
$i$13$i = $235;
$sum$05$i = $226;
}
}
$phitmp$i3 = ($227 | 0) == ($sum$05$i | 0);
if ($phitmp$i3) {
$236 = $alpha$010$i & 255;
$237 = ($nroots$211$i + 1) | 0;
$238 = ($epos + $nroots$211$i) | 0;
HEAP8[$238 >> 0] = $236;
$nroots$3$i = $237;
} else {
$nroots$3$i = $nroots$211$i;
}
$239 = ($alpha$010$i + 1) | 0;
$exitcond14$i = ($239 | 0) == ($_ndata | 0);
if ($exitcond14$i) {
$$0$i = $nroots$3$i;
break;
} else {
$alpha$010$i = $239;
$nroots$211$i = $nroots$3$i;
}
}
} else {
$$0$i = 0;
}
}
} while (0);
$240 = ($$0$i | 0) < ($l$0$ph26$i | 0);
if ($240) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
$241 = ($l$0$ph26$i | 0) > 0;
if (!$241) {
$$0 = $l$0$ph26$i;
STACKTOP = sp;
return $$0 | 0;
}
$242 = ($_npar | 0) < 1;
$243 = ($_ndata + -1) | 0;
$i$119 = 0;
while (1) {
$244 = ($epos + $i$119) | 0;
$245 = HEAP8[$244 >> 0] | 0;
$246 = $245 & 255;
$247 = $246 ^ 255;
$a$010 = 0;
$alphanj$011 = 0;
$j$09 = 0;
while (1) {
$248 = ($omega + $j$09) | 0;
$249 = HEAP8[$248 >> 0] | 0;
$250 = ($249 << 24) >> 24 == 0;
if ($250) {
$260 = 0;
} else {
$251 = $249 & 255;
$252 = ($_gf + $251) | 0;
$253 = HEAP8[$252 >> 0] | 0;
$254 = $253 & 255;
$255 = ($254 + $alphanj$011) | 0;
$256 = ((($_gf + $255) | 0) + 256) | 0;
$257 = HEAP8[$256 >> 0] | 0;
$258 = $257 & 255;
$260 = $258;
}
$259 = $260 ^ $a$010;
$261 = ($alphanj$011 + $247) | 0;
$262 = ((($_gf + $261) | 0) + 256) | 0;
$263 = HEAP8[$262 >> 0] | 0;
$264 = $263 & 255;
$265 = ($_gf + $264) | 0;
$266 = HEAP8[$265 >> 0] | 0;
$267 = $266 & 255;
$268 = ($j$09 + 1) | 0;
$exitcond = ($268 | 0) == ($_npar | 0);
if ($exitcond) {
break;
} else {
$a$010 = $259;
$alphanj$011 = $267;
$j$09 = $268;
}
}
$269 = $247 << 1;
$270 = ((($_gf + $269) | 0) + 256) | 0;
$271 = HEAP8[$270 >> 0] | 0;
$272 = $271 & 255;
$273 = ($_gf + $272) | 0;
$274 = HEAP8[$273 >> 0] | 0;
$275 = $274 & 255;
L130: do {
if ($242) {
$b$0$lcssa = 0;
} else {
$276 = Math_imul($246, $_m0) | 0;
$277 = ($276 >>> 0) % 255 & -1;
$278 = ($277 + $247) | 0;
$alphanj$114 = $278;
$b$013 = 0;
$j$112 = 1;
while (1) {
$279 = ($lambda + $j$112) | 0;
$280 = HEAP8[$279 >> 0] | 0;
$281 = ($280 << 24) >> 24 == 0;
if ($281) {
$291 = 0;
} else {
$282 = $280 & 255;
$283 = ($_gf + $282) | 0;
$284 = HEAP8[$283 >> 0] | 0;
$285 = $284 & 255;
$286 = ($285 + $alphanj$114) | 0;
$287 = ((($_gf + $286) | 0) + 256) | 0;
$288 = HEAP8[$287 >> 0] | 0;
$289 = $288 & 255;
$291 = $289;
}
$290 = $291 ^ $b$013;
$292 = ($j$112 + 2) | 0;
$293 = ($292 | 0) > ($_npar | 0);
if ($293) {
$b$0$lcssa = $290;
break L130;
}
$294 = ($alphanj$114 + $275) | 0;
$295 = ((($_gf + $294) | 0) + 256) | 0;
$296 = HEAP8[$295 >> 0] | 0;
$297 = $296 & 255;
$298 = ($_gf + $297) | 0;
$299 = HEAP8[$298 >> 0] | 0;
$300 = $299 & 255;
$alphanj$114 = $300;
$b$013 = $290;
$j$112 = $292;
}
}
} while (0);
$301 = ($260 | 0) == ($a$010 | 0);
if ($301) {
$318 = 0;
} else {
$302 = ($_gf + $259) | 0;
$303 = HEAP8[$302 >> 0] | 0;
$304 = $303 & 255;
$305 = ($304 + 255) | 0;
$306 = ($_gf + $b$0$lcssa) | 0;
$307 = HEAP8[$306 >> 0] | 0;
$308 = $307 & 255;
$309 = ($305 - $308) | 0;
$310 = ((($_gf + $309) | 0) + 256) | 0;
$311 = HEAP8[$310 >> 0] | 0;
$312 = $311 & 255;
$318 = $312;
}
$313 = ($243 - $246) | 0;
$314 = ($_data + $313) | 0;
$315 = HEAP8[$314 >> 0] | 0;
$316 = $315 & 255;
$317 = $316 ^ $318;
$319 = $317 & 255;
HEAP8[$314 >> 0] = $319;
$320 = ($i$119 + 1) | 0;
$exitcond37 = ($320 | 0) == ($l$0$ph26$i | 0);
if ($exitcond37) {
$$0 = $l$0$ph26$i;
break;
} else {
$i$119 = $320;
}
}
STACKTOP = sp;
return $$0 | 0;
}
function _rs_quartic_solve($_gf, $_a, $_b, $_c, $_d, $_x) {
$_gf = $_gf | 0;
$_a = $_a | 0;
$_b = $_b | 0;
$_c = $_c | 0;
$_d = $_d | 0;
$_x = $_x | 0;
var $$0 = 0,
$$0$i1113 = 0,
$$0$i7 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0;
var $113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0;
var $131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0;
var $15 = 0,
$150 = 0,
$151 = 0,
$152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0;
var $26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0;
var $44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0;
var $62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0;
var $80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0;
var $99 = 0,
$exitcond = 0,
$i$015 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($_d | 0) == 0;
if ($0) {
$1 = _rs_cubic_solve($_gf, $_a, $_b, $_c, $_x) | 0;
$2 = ($_c | 0) == 0;
if ($2) {
$$0 = $1;
STACKTOP = sp;
return $$0 | 0;
}
$3 = ($1 + 1) | 0;
$4 = ($_x + $1) | 0;
HEAP8[$4 >> 0] = 0;
$$0 = $3;
STACKTOP = sp;
return $$0 | 0;
}
$5 = ($_a | 0) == 0;
if ($5) {
$106 = ($_c | 0) == 0;
if ($106) {
$107 = ($_b | 0) == 0;
if ($107) {
$$0$i7 = 0;
} else {
$108 = ($_gf + $_b) | 0;
$109 = HEAP8[$108 >> 0] | 0;
$110 = $109 & 255;
$111 = $110 & 1;
$112 = (0 - $111) | 0;
$113 = $112 & 255;
$114 = ($113 + $110) | 0;
$115 = $114 >>> 1;
$116 = ((($_gf + $115) | 0) + 256) | 0;
$117 = HEAP8[$116 >> 0] | 0;
$118 = $117 & 255;
$$0$i7 = $118;
}
$119 = ($_gf + $_d) | 0;
$120 = HEAP8[$119 >> 0] | 0;
$121 = $120 & 255;
$122 = $121 & 1;
$123 = (0 - $122) | 0;
$124 = $123 & 255;
$125 = ($124 + $121) | 0;
$126 = $125 >>> 1;
$127 = ((($_gf + $126) | 0) + 256) | 0;
$128 = HEAP8[$127 >> 0] | 0;
$129 = $128 & 255;
$130 = _rs_quadratic_solve($_gf, $$0$i7, $129, $_x) | 0;
$$0 = $130;
STACKTOP = sp;
return $$0 | 0;
}
$131 = _rs_cubic_solve($_gf, 0, $_b, $_c, $_x) | 0;
$132 = ($131 | 0) < 1;
if ($132) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$133 = HEAP8[$_x >> 0] | 0;
$134 = $133 & 255;
$135 = ($_gf + $_c) | 0;
$136 = HEAP8[$135 >> 0] | 0;
$137 = $136 & 255;
$138 = ($137 + 255) | 0;
$139 = ($_gf + $134) | 0;
$140 = HEAP8[$139 >> 0] | 0;
$141 = $140 & 255;
$142 = ($138 - $141) | 0;
$143 = ((($_gf + $142) | 0) + 256) | 0;
$144 = HEAP8[$143 >> 0] | 0;
$145 = $144 & 255;
$146 = _rs_quadratic_solve($_gf, $145, $_d, $_x) | 0;
$147 = ($146 | 0) < 2;
if ($147) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$148 = HEAP8[$_x >> 0] | 0;
$149 = $148 & 255;
$150 = ($_x + 1) | 0;
$151 = HEAP8[$150 >> 0] | 0;
$152 = $151 & 255;
$153 = _rs_quadratic_solve($_gf, $134, $149, $_x) | 0;
$154 = ($_x + $153) | 0;
$155 = _rs_quadratic_solve($_gf, $134, $152, $154) | 0;
$156 = ($155 + $153) | 0;
$$0 = $156;
STACKTOP = sp;
return $$0 | 0;
}
$6 = ($_gf + $_a) | 0;
$7 = HEAP8[$6 >> 0] | 0;
$8 = $7 & 255;
$9 = ($_c | 0) == 0;
if ($9) {
$$0$i1113 = 0;
$43 = $_d;
$45 = 0;
$93 = 0;
} else {
$10 = $8 ^ 255;
$11 = ($_gf + $_c) | 0;
$12 = HEAP8[$11 >> 0] | 0;
$13 = $12 & 255;
$14 = ($13 + $10) | 0;
$15 = ((($_gf + $14) | 0) + 256) | 0;
$16 = HEAP8[$15 >> 0] | 0;
$17 = $16 & 255;
$18 = ($16 << 24) >> 24 == 0;
if ($18) {
$$0$i1113 = 0;
$43 = $_d;
$45 = 0;
$93 = 0;
} else {
$19 = ($_gf + $17) | 0;
$20 = HEAP8[$19 >> 0] | 0;
$21 = $20 & 255;
$22 = $21 & 1;
$23 = (0 - $22) | 0;
$24 = $23 & 255;
$25 = ($24 + $21) | 0;
$26 = $25 >>> 1;
$27 = ((($_gf + $26) | 0) + 256) | 0;
$28 = HEAP8[$27 >> 0] | 0;
$29 = $28 & 255;
$30 = ($_b | 0) == 0;
if ($30) {
$157 = $_d;
} else {
$31 = ($_gf + $_b) | 0;
$32 = HEAP8[$31 >> 0] | 0;
$33 = $32 & 255;
$34 = ($21 + $33) | 0;
$35 = ((($_gf + $34) | 0) + 256) | 0;
$36 = HEAP8[$35 >> 0] | 0;
$37 = $36 & 255;
$38 = $37 ^ $_d;
$157 = $38;
}
$39 = $21 << 1;
$40 = ((($_gf + $39) | 0) + 256) | 0;
$41 = HEAP8[$40 >> 0] | 0;
$42 = $41 & 255;
$$0$i1113 = $29;
$43 = $157;
$45 = $42;
$93 = $17;
}
}
$44 = ($43 | 0) == ($45 | 0);
if ($44) {
$92 = $93 ^ $_b;
$94 = _rs_quadratic_solve($_gf, $_a, $92, $_x) | 0;
$95 = ($94 | 0) == 2;
if ($95) {
$96 = HEAP8[$_x >> 0] | 0;
$97 = $96 & 255;
$98 = ($97 | 0) == ($$0$i1113 | 0);
if ($98) {
$$0 = 2;
STACKTOP = sp;
return $$0 | 0;
}
$99 = ($_x + 1) | 0;
$100 = HEAP8[$99 >> 0] | 0;
$101 = $100 & 255;
$102 = ($101 | 0) == ($$0$i1113 | 0);
if ($102) {
$$0 = 2;
STACKTOP = sp;
return $$0 | 0;
}
}
$103 = $$0$i1113 & 255;
$104 = ($94 + 1) | 0;
$105 = ($_x + $94) | 0;
HEAP8[$105 >> 0] = $103;
$$0 = $104;
STACKTOP = sp;
return $$0 | 0;
}
$46 = $45 ^ $43;
$47 = ($_gf + $46) | 0;
$48 = HEAP8[$47 >> 0] | 0;
$49 = $48 & 255;
$50 = $49 ^ 255;
$51 = ($$0$i1113 | 0) == 0;
if ($51) {
$59 = 0;
} else {
$52 = ($_gf + $$0$i1113) | 0;
$53 = HEAP8[$52 >> 0] | 0;
$54 = $53 & 255;
$55 = ($54 + $8) | 0;
$56 = ((($_gf + $55) | 0) + 256) | 0;
$57 = HEAP8[$56 >> 0] | 0;
$58 = $57 & 255;
$59 = $58;
}
$60 = ($59 | 0) == ($_b | 0);
if ($60) {
$76 = 0;
} else {
$61 = $59 ^ $_b;
$62 = ($_gf + $61) | 0;
$63 = HEAP8[$62 >> 0] | 0;
$64 = $63 & 255;
$65 = ($64 + $50) | 0;
$66 = ((($_gf + $65) | 0) + 256) | 0;
$67 = HEAP8[$66 >> 0] | 0;
$68 = $67 & 255;
$76 = $68;
}
$69 = ($50 + $8) | 0;
$70 = ((($_gf + $69) | 0) + 256) | 0;
$71 = HEAP8[$70 >> 0] | 0;
$72 = $71 & 255;
$73 = ((($_gf + $50) | 0) + 256) | 0;
$74 = HEAP8[$73 >> 0] | 0;
$75 = $74 & 255;
$77 = _rs_quartic_solve($_gf, 0, $76, $72, $75, $_x) | 0;
$78 = ($77 | 0) > 0;
if ($78) {
$i$015 = 0;
} else {
$$0 = $77;
STACKTOP = sp;
return $$0 | 0;
}
while (1) {
$79 = ($_x + $i$015) | 0;
$80 = HEAP8[$79 >> 0] | 0;
$81 = $80 & 255;
$82 = ($_gf + $81) | 0;
$83 = HEAP8[$82 >> 0] | 0;
$84 = $83 & 255;
$85 = $84 ^ 255;
$86 = ((($_gf + $85) | 0) + 256) | 0;
$87 = HEAP8[$86 >> 0] | 0;
$88 = $87 & 255;
$89 = $88 ^ $$0$i1113;
$90 = $89 & 255;
HEAP8[$79 >> 0] = $90;
$91 = ($i$015 + 1) | 0;
$exitcond = ($91 | 0) == ($77 | 0);
if ($exitcond) {
$$0 = $77;
break;
} else {
$i$015 = $91;
}
}
STACKTOP = sp;
return $$0 | 0;
}
function _rs_cubic_solve($_gf, $_a, $_b, $_c, $_x) {
$_gf = $_gf | 0;
$_a = $_a | 0;
$_b = $_b | 0;
$_c = $_c | 0;
$_x = $_x | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0;
var $115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0;
var $24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0;
var $42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0;
var $60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0;
var $79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0;
var $97 = 0,
$98 = 0,
$99 = 0,
$div = 0,
$div1 = 0,
$or$cond$i = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($_c | 0) == 0;
if ($0) {
$1 = _rs_quadratic_solve($_gf, $_a, $_b, $_x) | 0;
$2 = ($_b | 0) == 0;
if ($2) {
$$0 = $1;
STACKTOP = sp;
return $$0 | 0;
}
$3 = ($1 + 1) | 0;
$4 = ($_x + $1) | 0;
HEAP8[$4 >> 0] = 0;
$$0 = $3;
STACKTOP = sp;
return $$0 | 0;
}
$5 = ($_a | 0) == 0;
$6 = ($_b | 0) == 0;
$or$cond$i = $5 | $6;
if ($or$cond$i) {
$18 = 0;
} else {
$7 = ($_gf + $_a) | 0;
$8 = HEAP8[$7 >> 0] | 0;
$9 = $8 & 255;
$10 = ($_gf + $_b) | 0;
$11 = HEAP8[$10 >> 0] | 0;
$12 = $11 & 255;
$13 = ($12 + $9) | 0;
$14 = ((($_gf + $13) | 0) + 256) | 0;
$15 = HEAP8[$14 >> 0] | 0;
$16 = $15 & 255;
$18 = $16;
}
$17 = $18 ^ $_c;
if ($5) {
$26 = 0;
} else {
$19 = ($_gf + $_a) | 0;
$20 = HEAP8[$19 >> 0] | 0;
$21 = $20 & 255;
$22 = $21 << 1;
$23 = ((($_gf + $22) | 0) + 256) | 0;
$24 = HEAP8[$23 >> 0] | 0;
$25 = $24 & 255;
$26 = $25;
}
$27 = ($26 | 0) == ($_b | 0);
if ($27) {
$28 = ($18 | 0) == ($_c | 0);
if ($28) {
$29 = $_a & 255;
HEAP8[$_x >> 0] = $29;
$$0 = 1;
STACKTOP = sp;
return $$0 | 0;
}
$30 = ($_gf + $17) | 0;
$31 = HEAP8[$30 >> 0] | 0;
$32 = ($31 & 255) % 3 & -1;
$33 = ($32 << 24) >> 24 == 0;
if (!$33) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$div = (($31 & 255) / 3) & -1;
$34 = $div & 255;
$35 = ((($_gf + $34) | 0) + 256) | 0;
$36 = HEAP8[$35 >> 0] | 0;
$37 = $36 & 255;
$38 = $37 ^ $_a;
$39 = $38 & 255;
HEAP8[$_x >> 0] = $39;
$40 = ($34 + 85) | 0;
$41 = ((($_gf + $40) | 0) + 256) | 0;
$42 = HEAP8[$41 >> 0] | 0;
$43 = $42 & 255;
$44 = $43 ^ $_a;
$45 = $44 & 255;
$46 = ($_x + 1) | 0;
HEAP8[$46 >> 0] = $45;
$47 = $39 ^ $42;
$48 = ($_x + 2) | 0;
HEAP8[$48 >> 0] = $47;
$$0 = 3;
STACKTOP = sp;
return $$0 | 0;
}
$49 = $26 ^ $_b;
$50 = ($_gf + $49) | 0;
$51 = HEAP8[$50 >> 0] | 0;
$52 = $51 & 255;
$53 = $52 & 1;
$54 = (0 - $53) | 0;
$55 = $54 & 255;
$56 = ($55 + $52) | 0;
$57 = $56 >>> 1;
$58 = ($18 | 0) == ($_c | 0);
if ($58) {
$74 = 0;
} else {
$59 = ($57 + $52) | 0;
$60 = ((($_gf + $59) | 0) + 256) | 0;
$61 = HEAP8[$60 >> 0] | 0;
$62 = $61 & 255;
$63 = ($_gf + $17) | 0;
$64 = HEAP8[$63 >> 0] | 0;
$65 = $64 & 255;
$66 = ($65 + 255) | 0;
$67 = ($_gf + $62) | 0;
$68 = HEAP8[$67 >> 0] | 0;
$69 = $68 & 255;
$70 = ($66 - $69) | 0;
$71 = ((($_gf + $70) | 0) + 256) | 0;
$72 = HEAP8[$71 >> 0] | 0;
$73 = $72 & 255;
$74 = $73;
}
$75 = _rs_quadratic_solve($_gf, $74, 1, $_x) | 0;
$76 = ($75 | 0) < 1;
if ($76) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$77 = HEAP8[$_x >> 0] | 0;
$78 = $77 & 255;
$79 = ($_gf + $78) | 0;
$80 = HEAP8[$79 >> 0] | 0;
$81 = ($80 << 24) >> 24 == 0;
if ($81) {
$121 = $_a & 255;
HEAP8[$_x >> 0] = $121;
$$0 = 1;
STACKTOP = sp;
return $$0 | 0;
}
$82 = ($80 & 255) % 3 & -1;
$83 = ($82 << 24) >> 24 == 0;
if (!$83) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$div1 = (($80 & 255) / 3) & -1;
$84 = $div1 & 255;
$85 = ((($_gf + $84) | 0) + 256) | 0;
$86 = HEAP8[$85 >> 0] | 0;
$87 = $84 ^ 255;
$88 = ((($_gf + $87) | 0) + 256) | 0;
$89 = HEAP8[$88 >> 0] | 0;
$90 = $89 ^ $86;
$91 = $90 & 255;
$92 = ($_gf + $91) | 0;
$93 = HEAP8[$92 >> 0] | 0;
$94 = $93 & 255;
$95 = ($94 + $57) | 0;
$96 = ((($_gf + $95) | 0) + 256) | 0;
$97 = HEAP8[$96 >> 0] | 0;
$98 = $97 & 255;
$99 = $98 ^ $_a;
$100 = $99 & 255;
HEAP8[$_x >> 0] = $100;
$101 = ($84 + 85) | 0;
$102 = ((($_gf + $101) | 0) + 256) | 0;
$103 = HEAP8[$102 >> 0] | 0;
$104 = (170 - $84) | 0;
$105 = ((($_gf + $104) | 0) + 256) | 0;
$106 = HEAP8[$105 >> 0] | 0;
$107 = $106 ^ $103;
$108 = $107 & 255;
$109 = ($_gf + $108) | 0;
$110 = HEAP8[$109 >> 0] | 0;
$111 = $110 & 255;
$112 = ($111 + $57) | 0;
$113 = ((($_gf + $112) | 0) + 256) | 0;
$114 = HEAP8[$113 >> 0] | 0;
$115 = $114 & 255;
$116 = $115 ^ $_a;
$117 = $116 & 255;
$118 = ($_x + 1) | 0;
HEAP8[$118 >> 0] = $117;
$119 = $100 ^ $114;
$120 = ($_x + 2) | 0;
HEAP8[$120 >> 0] = $119;
$$0 = 3;
STACKTOP = sp;
return $$0 | 0;
}
function _rs_quadratic_solve($_gf, $_b, $_c, $_x) {
$_gf = $_gf | 0;
$_b = $_b | 0;
$_c = $_c | 0;
$_x = $_x | 0;
var $$0 = 0,
$$0$i = 0,
$$01 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0;
var $113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0;
var $131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0;
var $15 = 0,
$150 = 0,
$151 = 0,
$152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0;
var $168 = 0,
$169 = 0,
$17 = 0,
$170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0;
var $186 = 0,
$187 = 0,
$188 = 0,
$189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0;
var $203 = 0,
$204 = 0,
$205 = 0,
$206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0;
var $221 = 0,
$222 = 0,
$223 = 0,
$224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0;
var $24 = 0,
$240 = 0,
$241 = 0,
$242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0;
var $258 = 0,
$259 = 0,
$26 = 0,
$260 = 0,
$261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0;
var $36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0;
var $54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0;
var $72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0;
var $90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$b$0 = 0,
$logb$0 = 0,
$logc$0 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($_b | 0) == 0;
$1 = ($_c | 0) == 0;
if ($0) {
if ($1) {
$$0$i = 0;
} else {
$2 = ($_gf + $_c) | 0;
$3 = HEAP8[$2 >> 0] | 0;
$4 = $3 & 255;
$5 = $4 & 1;
$6 = (0 - $5) | 0;
$7 = $6 & 255;
$8 = ($7 + $4) | 0;
$9 = $8 >>> 1;
$10 = ((($_gf + $9) | 0) + 256) | 0;
$11 = HEAP8[$10 >> 0] | 0;
$$0$i = $11;
}
HEAP8[$_x >> 0] = $$0$i;
$$0 = 1;
STACKTOP = sp;
return $$0 | 0;
}
if ($1) {
HEAP8[$_x >> 0] = 0;
$12 = $_b & 255;
$13 = ($_x + 1) | 0;
HEAP8[$13 >> 0] = $12;
$$0 = 2;
STACKTOP = sp;
return $$0 | 0;
}
$14 = ($_gf + $_b) | 0;
$15 = HEAP8[$14 >> 0] | 0;
$16 = $15 & 255;
$17 = ($_gf + $_c) | 0;
$18 = HEAP8[$17 >> 0] | 0;
$19 = $18 & 255;
$20 = ($15 & 255) % 17 & -1;
$21 = ($20 << 24) >> 24 == 0;
$22 = $21 & 1;
if ($21) {
$23 = ($16 + 254) | 0;
$24 = ((($_gf + $23) | 0) + 256) | 0;
$25 = HEAP8[$24 >> 0] | 0;
$26 = $25 & 255;
$27 = ($_gf + $26) | 0;
$28 = HEAP8[$27 >> 0] | 0;
$29 = $28 & 255;
$30 = ($19 + 253) | 0;
$31 = ((($_gf + $30) | 0) + 256) | 0;
$32 = HEAP8[$31 >> 0] | 0;
$33 = $32 & 255;
$34 = ($_gf + $33) | 0;
$35 = HEAP8[$34 >> 0] | 0;
$36 = $35 & 255;
$$01 = $33;
$b$0 = $26;
$logb$0 = $29;
$logc$0 = $36;
} else {
$$01 = $_c;
$b$0 = $_b;
$logb$0 = $16;
$logc$0 = $19;
}
$37 = $logb$0 << 1;
$38 = ((($_gf + $37) | 0) + 256) | 0;
$39 = HEAP8[$38 >> 0] | 0;
$40 = $39 & 255;
$41 = ($_gf + $40) | 0;
$42 = HEAP8[$41 >> 0] | 0;
$43 = $42 & 255;
$44 = $43 << 1;
$45 = ((($_gf + $44) | 0) + 256) | 0;
$46 = HEAP8[$45 >> 0] | 0;
$47 = $46 & 255;
$48 = ($_gf + $47) | 0;
$49 = HEAP8[$48 >> 0] | 0;
$50 = $49 & 255;
$51 = $50 << 1;
$52 = ((($_gf + $51) | 0) + 256) | 0;
$53 = HEAP8[$52 >> 0] | 0;
$54 = $53 & 255;
$55 = ($_gf + $54) | 0;
$56 = HEAP8[$55 >> 0] | 0;
$57 = $56 & 255;
$58 = ($57 + $50) | 0;
$59 = ((($_gf + $58) | 0) + 256) | 0;
$60 = HEAP8[$59 >> 0] | 0;
$61 = $60 & 255;
$62 = ($_gf + $61) | 0;
$63 = HEAP8[$62 >> 0] | 0;
$64 = $63 & 255;
$65 = ($64 + $43) | 0;
$66 = ((($_gf + $65) | 0) + 256) | 0;
$67 = HEAP8[$66 >> 0] | 0;
$68 = $67 & 255;
$69 = ($_gf + $68) | 0;
$70 = HEAP8[$69 >> 0] | 0;
$71 = $70 & 255;
$72 = $logc$0 << 1;
$73 = ((($_gf + $72) | 0) + 256) | 0;
$74 = HEAP8[$73 >> 0] | 0;
$75 = $74 & 255;
$76 = ($_gf + $75) | 0;
$77 = HEAP8[$76 >> 0] | 0;
$78 = $77 & 255;
$79 = $78 << 1;
$80 = ((($_gf + $79) | 0) + 256) | 0;
$81 = HEAP8[$80 >> 0] | 0;
$82 = $81 & 255;
$83 = ($_gf + $82) | 0;
$84 = HEAP8[$83 >> 0] | 0;
$85 = $84 & 255;
$86 = $85 << 1;
$87 = ((($_gf + $86) | 0) + 256) | 0;
$88 = HEAP8[$87 >> 0] | 0;
$89 = ($71 + $logc$0) | 0;
$90 = ((($_gf + $89) | 0) + 256) | 0;
$91 = HEAP8[$90 >> 0] | 0;
$92 = ($78 + $64) | 0;
$93 = ((($_gf + $92) | 0) + 256) | 0;
$94 = HEAP8[$93 >> 0] | 0;
$95 = $94 ^ $91;
$96 = ($85 + $57) | 0;
$97 = ((($_gf + $96) | 0) + 256) | 0;
$98 = HEAP8[$97 >> 0] | 0;
$99 = $95 ^ $98;
$100 = ($99 << 24) >> 24 == ($88 << 24) >> 24;
if ($100) {
$111 = 0;
} else {
$101 = $99 ^ $88;
$102 = $101 & 255;
$103 = ($_gf + $102) | 0;
$104 = HEAP8[$103 >> 0] | 0;
$105 = $104 & 255;
$106 = ($105 + $logb$0) | 0;
$107 = ((($_gf + $106) | 0) + 256) | 0;
$108 = HEAP8[$107 >> 0] | 0;
$109 = $108 & 255;
$111 = $109;
}
$110 = ($_gf + $111) | 0;
$112 = HEAP8[$110 >> 0] | 0;
$113 = ($112 & 255) % 17 & -1;
$114 = ($113 << 24) >> 24 == 0;
if (!$114) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$115 = ($111 | 0) == 0;
if ($115) {
$143 = 0;
$144 = 0;
$254 = 0;
} else {
$116 = $57 << 1;
$117 = ((($_gf + $116) | 0) + 256) | 0;
$118 = HEAP8[$117 >> 0] | 0;
$119 = $118 & 255;
$120 = $119 ^ $b$0;
$121 = $112 & 255;
$122 = ($121 + 255) | 0;
$123 = ($_gf + $120) | 0;
$124 = HEAP8[$123 >> 0] | 0;
$125 = $124 & 255;
$126 = ($122 - $125) | 0;
$127 = ((($_gf + $126) | 0) + 256) | 0;
$128 = HEAP8[$127 >> 0] | 0;
$129 = $128 & 255;
$130 = ($128 << 24) >> 24 == 0;
if ($130) {
$143 = 0;
$144 = 0;
$254 = 0;
} else {
$131 = ($_gf + $129) | 0;
$132 = HEAP8[$131 >> 0] | 0;
$133 = $132 & 255;
$134 = $133 << 1;
$135 = ((($_gf + $134) | 0) + 256) | 0;
$136 = HEAP8[$135 >> 0] | 0;
$137 = $136 & 255;
$138 = ($133 + $logb$0) | 0;
$139 = ((($_gf + $138) | 0) + 256) | 0;
$140 = HEAP8[$139 >> 0] | 0;
$141 = $140 & 255;
$143 = $137;
$144 = $141;
$254 = $129;
}
}
$142 = $144 ^ $143;
$145 = ($142 | 0) == ($$01 | 0);
if ($145) {
$214 = 0;
$215 = 0;
$217 = 0;
$235 = 0;
$266 = 1;
} else {
$146 = $142 ^ $$01;
$147 = $43 ^ 255;
$148 = ($_gf + $146) | 0;
$149 = HEAP8[$148 >> 0] | 0;
$150 = $149 & 255;
$151 = ($150 + $147) | 0;
$152 = ((($_gf + $151) | 0) + 256) | 0;
$153 = HEAP8[$152 >> 0] | 0;
$154 = ($153 << 24) >> 24 == 0;
if ($154) {
$214 = 0;
$215 = 0;
$217 = 0;
$235 = 0;
$266 = 1;
} else {
$155 = $153 & 255;
$156 = ($_gf + $155) | 0;
$157 = HEAP8[$156 >> 0] | 0;
$158 = $157 & 255;
$159 = ($158 + 221) | 0;
$160 = ((($_gf + $159) | 0) + 256) | 0;
$161 = HEAP8[$160 >> 0] | 0;
$162 = $161 & 255;
$163 = ($161 << 24) >> 24 == 0;
if ($163) {
$214 = 0;
$215 = 0;
$217 = 0;
$235 = 0;
$266 = 1;
} else {
$164 = ($_gf + $162) | 0;
$165 = HEAP8[$164 >> 0] | 0;
$166 = $165 & 255;
$167 = ($166 + 221) | 0;
$168 = ((($_gf + $167) | 0) + 256) | 0;
$169 = HEAP8[$168 >> 0] | 0;
$170 = $166 << 1;
$171 = ((($_gf + $170) | 0) + 256) | 0;
$172 = HEAP8[$171 >> 0] | 0;
$173 = ($169 << 24) >> 24 == ($172 << 24) >> 24;
if ($173) {
$214 = 0;
$215 = 0;
$217 = $162;
$235 = 0;
$266 = 1;
} else {
$174 = $172 ^ $169;
$175 = $174 & 255;
$176 = ($_gf + $175) | 0;
$177 = HEAP8[$176 >> 0] | 0;
$178 = $177 & 255;
$179 = ($178 + 238) | 0;
$180 = ((($_gf + $179) | 0) + 256) | 0;
$181 = HEAP8[$180 >> 0] | 0;
$182 = ($181 << 24) >> 24 == 0;
if ($182) {
$214 = 0;
$215 = 0;
$217 = $162;
$235 = 0;
$266 = 1;
} else {
$183 = $181 & 255;
$184 = ($_gf + 494) | 0;
$185 = ($_gf + 443) | 0;
$186 = HEAP8[$184 >> 0] | 0;
$187 = HEAP8[$185 >> 0] | 0;
$188 = $187 ^ $186;
$189 = $188 & 255;
$190 = ($_gf + $183) | 0;
$191 = HEAP8[$190 >> 0] | 0;
$192 = $191 & 255;
$193 = ($192 + 255) | 0;
$194 = ($_gf + $189) | 0;
$195 = HEAP8[$194 >> 0] | 0;
$196 = $195 & 255;
$197 = ($193 - $196) | 0;
$198 = ((($_gf + $197) | 0) + 256) | 0;
$199 = HEAP8[$198 >> 0] | 0;
$200 = $199 & 255;
$201 = ($199 << 24) >> 24 == 0;
if ($201) {
$214 = 0;
$215 = 0;
$217 = $162;
$235 = 0;
$266 = 1;
} else {
$202 = ($_gf + $200) | 0;
$203 = HEAP8[$202 >> 0] | 0;
$204 = $203 & 255;
$205 = $204 << 1;
$206 = ((($_gf + $205) | 0) + 256) | 0;
$207 = HEAP8[$206 >> 0] | 0;
$208 = $207 & 255;
$209 = ($204 + 238) | 0;
$210 = ((($_gf + $209) | 0) + 256) | 0;
$211 = HEAP8[$210 >> 0] | 0;
$212 = $211 & 255;
$214 = $208;
$215 = $212;
$217 = $162;
$235 = $200;
$266 = 0;
}
}
}
}
}
}
$213 = $215 ^ $214;
$216 = ($213 | 0) == ($217 | 0);
if ($216) {
$242 = 0;
} else {
$218 = $213 ^ $217;
$219 = ($_gf + $218) | 0;
$220 = HEAP8[$219 >> 0] | 0;
$221 = $220 & 255;
$222 = ($221 + 34) | 0;
$223 = ((($_gf + $222) | 0) + 256) | 0;
$224 = HEAP8[$223 >> 0] | 0;
$225 = ($224 << 24) >> 24 == 0;
if ($225) {
$242 = 0;
} else {
$226 = $224 & 255;
$227 = ($_gf + $226) | 0;
$228 = HEAP8[$227 >> 0] | 0;
$229 = $228 & 255;
$230 = ($229 + 85) | 0;
$231 = ((($_gf + $230) | 0) + 256) | 0;
$232 = HEAP8[$231 >> 0] | 0;
$233 = $232 & 255;
$242 = $233;
}
}
if ($266) {
$244 = 0;
} else {
$234 = ($_gf + $235) | 0;
$236 = HEAP8[$234 >> 0] | 0;
$237 = $236 & 255;
$238 = ($237 + 17) | 0;
$239 = ((($_gf + $238) | 0) + 256) | 0;
$240 = HEAP8[$239 >> 0] | 0;
$241 = $240 & 255;
$244 = $241;
}
$243 = ($242 | 0) == ($244 | 0);
if ($243) {
$255 = 0;
} else {
$245 = $244 ^ $242;
$246 = ($_gf + $245) | 0;
$247 = HEAP8[$246 >> 0] | 0;
$248 = $247 & 255;
$249 = ($248 + $logb$0) | 0;
$250 = ((($_gf + $249) | 0) + 256) | 0;
$251 = HEAP8[$250 >> 0] | 0;
$252 = $251 & 255;
$255 = $252;
}
$253 = $255 ^ $254;
$256 = ($_gf + $253) | 0;
$257 = HEAP8[$256 >> 0] | 0;
$258 = $257 & 255;
$259 = ($258 + $22) | 0;
$260 = ((($_gf + $259) | 0) + 256) | 0;
$261 = HEAP8[$260 >> 0] | 0;
HEAP8[$_x >> 0] = $261;
$262 = $261 & 255;
$263 = $262 ^ $_b;
$264 = $263 & 255;
$265 = ($_x + 1) | 0;
HEAP8[$265 >> 0] = $264;
$$0 = 2;
STACKTOP = sp;
return $$0 | 0;
}
function _qr_isqrt($_val) {
$_val = $_val | 0;
var $$03 = 0,
$$1 = 0,
$0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$b$02 = 0,
$g$01 = 0,
$g$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$$03 = $_val;
$3 = 15;
$b$02 = 32768;
$g$01 = 0;
while (1) {
$0 = $g$01 << 1;
$1 = ($0 + $b$02) | 0;
$2 = $1 << $3;
$4 = $2 >>> 0 > $$03 >>> 0;
if ($4) {
$$1 = $$03;
$g$1 = $g$01;
} else {
$5 = ($b$02 + $g$01) | 0;
$6 = ($$03 - $2) | 0;
$$1 = $6;
$g$1 = $5;
}
$7 = $b$02 >>> 1;
$8 = ($3 + -1) | 0;
$9 = ($3 | 0) > 0;
if ($9) {
$$03 = $$1;
$3 = $8;
$b$02 = $7;
$g$01 = $g$1;
} else {
break;
}
}
STACKTOP = sp;
return $g$1 | 0;
}
function _qr_ihypot($_x, $_y) {
$_x = $_x | 0;
$_y = $_y | 0;
var $$09 = 0,
$$lobit$i = 0,
$$neg5 = 0,
$$neg6 = 0,
$$not = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0;
var $22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0;
var $40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0;
var $59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0;
var $77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$9 = 0,
$exitcond = 0,
$i$08 = 0,
$ispos = 0,
$ispos1 = 0,
$neg = 0,
$neg2 = 0,
$x$07 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$ispos = ($_x | 0) > -1;
$neg = (0 - $_x) | 0;
$0 = $ispos ? $_x : $neg;
$ispos1 = ($_y | 0) > -1;
$neg2 = (0 - $_y) | 0;
$1 = $ispos1 ? $_y : $neg2;
$2 = $0 >>> 0 > $1 >>> 0;
$3 = $1 ^ $0;
$4 = $2 ? $3 : 0;
$5 = $4 ^ $0;
$6 = $4 ^ $1;
$7 = $6 >>> 0 > 65535;
$8 = $7 & 1;
$9 = $8 << 4;
$10 = $6 >>> $9;
$11 = $10 & 65280;
$12 = ($11 | 0) != 0;
$13 = $12 & 1;
$14 = $13 << 3;
$15 = $10 >>> $14;
$16 = $14 | $9;
$17 = $15 & 240;
$18 = ($17 | 0) != 0;
$19 = $18 & 1;
$20 = $19 << 2;
$21 = $15 >>> $20;
$22 = $16 | $20;
$23 = $21 & 12;
$24 = ($23 | 0) != 0;
$25 = $24 & 1;
$26 = $25 << 1;
$27 = $21 >>> $26;
$28 = $22 | $26;
$29 = $27 >>> 1;
$$lobit$i = $29 & 1;
$30 = $28 | $$lobit$i;
$31 = ($27 | 0) != 0;
$$neg5 = ($31 << 31) >> 31;
$$neg6 = ($$neg5 + 31) | 0;
$32 = ($$neg6 - $30) | 0;
$33 = $32 >> 31;
$$not = $33 ^ -1;
$34 = $32 & $$not;
$35 = $5 << $34;
___muldi3($35 | 0, 0, -1686835798, 0) | 0;
$36 = tempRet0;
$37 = $6 << $34;
$38 = ($37 | 0) < 0;
$39 = ($38 << 31) >> 31;
$40 = ___muldi3($37 | 0, $39 | 0, -1686835799, 0) | 0;
$41 = tempRet0;
$42 = _bitshift64Lshr($40 | 0, $41 | 0, 63) | 0;
$43 = tempRet0;
$44 = (0 - $42) | 0;
$45 = ($41 - $42) | 0;
$46 = $45 ^ $44;
$47 = ($46 + $36) | 0;
$48 = ($36 - $42) | 0;
$49 = $48 ^ $44;
$50 = ($41 - $49) | 0;
$51 = ($47 + 1) | 0;
$52 = $51 >>> 1;
$53 = ($50 + 1) | 0;
$54 = $53 >> 1;
$55 = $50 >> 31;
$56 = ($54 + $55) | 0;
$57 = $56 ^ $55;
$58 = ($57 + $47) | 0;
$59 = ($52 + $55) | 0;
$60 = $59 ^ $55;
$61 = ($50 - $60) | 0;
$$09 = $61;
$i$08 = 1;
$x$07 = $58;
while (1) {
$62 = ($x$07 + 1) | 0;
$63 = $62 >>> 2;
$64 = $i$08 << 1;
$65 = 1 << $64;
$66 = $65 >> 1;
$67 = ($66 + $$09) | 0;
$68 = $67 >> $64;
$69 = $$09 >> 31;
$70 = ($68 + $69) | 0;
$71 = $70 ^ $69;
$72 = ($71 + $x$07) | 0;
$73 = ($69 + $63) | 0;
$74 = $73 ^ $69;
$75 = ($$09 - $74) | 0;
$76 = $75 << 1;
$77 = ($i$08 + 1) | 0;
$exitcond = ($77 | 0) == 16;
if ($exitcond) {
break;
} else {
$$09 = $76;
$i$08 = $77;
$x$07 = $72;
}
}
$78 = 1 << $34;
$79 = $78 >>> 1;
$80 = ($72 + $79) | 0;
$81 = $80 >>> $34;
STACKTOP = sp;
return $81 | 0;
}
function _qr_ilog($_v) {
$_v = $_v | 0;
var $$lobit = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0;
var $26 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = $_v >>> 0 > 65535;
$1 = $0 & 1;
$2 = $1 << 4;
$3 = $_v >>> $2;
$4 = $3 & 65280;
$5 = ($4 | 0) != 0;
$6 = $5 & 1;
$7 = $6 << 3;
$8 = $3 >>> $7;
$9 = $7 | $2;
$10 = $8 & 240;
$11 = ($10 | 0) != 0;
$12 = $11 & 1;
$13 = $12 << 2;
$14 = $8 >>> $13;
$15 = $9 | $13;
$16 = $14 & 12;
$17 = ($16 | 0) != 0;
$18 = $17 & 1;
$19 = $18 << 1;
$20 = $14 >>> $19;
$21 = $15 | $19;
$22 = $20 >>> 1;
$$lobit = $22 & 1;
$23 = $21 | $$lobit;
$24 = ($20 | 0) != 0;
$25 = $24 & 1;
$26 = ($23 + $25) | 0;
STACKTOP = sp;
return $26 | 0;
}
function _zbar_decoder_create() {
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
dest = 0,
label = 0,
sp = 0,
stop = 0;
sp = STACKTOP;
$0 = _calloc(1, 136) | 0;
$1 = ($0 + 88) | 0;
HEAP32[$1 >> 2] = 32;
$2 = _malloc(32) | 0;
$3 = ($0 + 96) | 0;
HEAP32[$3 >> 2] = $2;
$4 = ($0 + 132) | 0;
HEAP32[$4 >> 2] = 1;
dest = ($0 + 0) | 0;
stop = (dest + 88) | 0;
do {
HEAP32[dest >> 2] = 0 | 0;
dest = (dest + 4) | 0;
} while ((dest | 0) < (stop | 0));
$5 = ($0 + 108) | 0;
HEAP32[$5 >> 2] = 0;
STACKTOP = sp;
return $0 | 0;
}
function _zbar_decoder_reset($dcode) {
$dcode = $dcode | 0;
var $0 = 0,
dest = 0,
label = 0,
sp = 0,
stop = 0;
sp = STACKTOP;
dest = ($dcode + 0) | 0;
stop = (dest + 88) | 0;
do {
HEAP32[dest >> 2] = 0 | 0;
dest = (dest + 4) | 0;
} while ((dest | 0) < (stop | 0));
$0 = ($dcode + 108) | 0;
HEAP32[$0 >> 2] = 0;
STACKTOP = sp;
return;
}
function _zbar_decoder_destroy($dcode) {
$dcode = $dcode | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($dcode + 96) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == (0 | 0);
if (!$2) {
_free($1);
}
_free($dcode);
STACKTOP = sp;
return;
}
function _zbar_decoder_new_scan($dcode) {
$dcode = $dcode | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
dest = 0,
label = 0,
sp = 0,
stop = 0;
sp = STACKTOP;
$0 = ($dcode + 4) | 0;
dest = ($0 + 0) | 0;
stop = (dest + 64) | 0;
do {
HEAP32[dest >> 2] = 0 | 0;
dest = (dest + 4) | 0;
} while ((dest | 0) < (stop | 0));
$1 = ($dcode + 72) | 0;
HEAP32[$1 >> 2] = 0;
HEAP8[$dcode >> 0] = 0;
$2 = ($dcode + 84) | 0;
HEAP32[$2 >> 2] = 0;
$3 = ($dcode + 108) | 0;
HEAP32[$3 >> 2] = 0;
STACKTOP = sp;
return;
}
function _zbar_decoder_get_data($dcode) {
$dcode = $dcode | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($dcode + 96) | 0;
$1 = HEAP32[$0 >> 2] | 0;
STACKTOP = sp;
return $1 | 0;
}
function _zbar_decoder_get_data_length($dcode) {
$dcode = $dcode | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($dcode + 92) | 0;
$1 = HEAP32[$0 >> 2] | 0;
STACKTOP = sp;
return $1 | 0;
}
function _zbar_decoder_get_direction($dcode) {
$dcode = $dcode | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($dcode + 80) | 0;
$1 = HEAP32[$0 >> 2] | 0;
STACKTOP = sp;
return $1 | 0;
}
function _zbar_decoder_set_handler($dcode, $handler) {
$dcode = $dcode | 0;
$handler = $handler | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($dcode + 104) | 0;
$1 = HEAP32[$0 >> 2] | 0;
HEAP32[$0 >> 2] = $handler;
STACKTOP = sp;
return $1 | 0;
}
function _zbar_decoder_set_userdata($dcode, $userdata) {
$dcode = $dcode | 0;
$userdata = $userdata | 0;
var $0 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($dcode + 100) | 0;
HEAP32[$0 >> 2] = $userdata;
STACKTOP = sp;
return;
}
function _zbar_decoder_get_userdata($dcode) {
$dcode = $dcode | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($dcode + 100) | 0;
$1 = HEAP32[$0 >> 2] | 0;
STACKTOP = sp;
return $1 | 0;
}
function _zbar_decoder_get_type($dcode) {
$dcode = $dcode | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($dcode + 68) | 0;
$1 = HEAP32[$0 >> 2] | 0;
STACKTOP = sp;
return $1 | 0;
}
function _zbar_decoder_get_modifiers($dcode) {
$dcode = $dcode | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($dcode + 76) | 0;
$1 = HEAP32[$0 >> 2] | 0;
STACKTOP = sp;
return $1 | 0;
}
function _zbar_decode_width($dcode, $w) {
$dcode = $dcode | 0;
$w = $w | 0;
var $$ = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0;
var $26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$sym$02 = 0;
var $vararg_buffer = 0,
$vararg_ptr1 = 0,
$vararg_ptr2 = 0,
$vararg_ptr3 = 0,
$vararg_ptr4 = 0,
$vararg_ptr5 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 32) | 0;
$vararg_buffer = sp;
$0 = HEAP8[$dcode >> 0] | 0;
$1 = $0 & 255;
$2 = $1 & 15;
$3 = ((($dcode + ($2 << 2)) | 0) + 4) | 0;
HEAP32[$3 >> 2] = $w;
$4 = HEAP8[$dcode >> 0] | 0;
$5 = $4 & 255;
$6 = ($5 + 9) | 0;
$7 = $6 & 15;
$8 = ((($dcode + ($7 << 2)) | 0) + 4) | 0;
$9 = HEAP32[$8 >> 2] | 0;
$10 = ($dcode + 84) | 0;
$11 = HEAP32[$10 >> 2] | 0;
$12 = ($11 - $9) | 0;
HEAP32[$10 >> 2] = $12;
$13 = ($5 + 15) | 0;
$14 = $13 & 15;
$15 = ((($dcode + ($14 << 2)) | 0) + 4) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = ($16 + $12) | 0;
HEAP32[$10 >> 2] = $17;
$18 = ($dcode + 132) | 0;
$19 = HEAP32[$18 >> 2] | 0;
$20 = $19 & 1;
$21 = ($20 | 0) == 0;
if ($21) {
$22 = (($4 + 1) << 24) >> 24;
HEAP8[$dcode >> 0] = $22;
$23 = ($dcode + 68) | 0;
HEAP32[$23 >> 2] = 0;
$sym$02 = 0;
STACKTOP = sp;
return $sym$02 | 0;
}
$24 = __zbar_find_qr($dcode) | 0;
$25 = $24 >>> 0 > 1;
$$ = $25 ? $24 : 0;
$26 = HEAP8[$dcode >> 0] | 0;
$27 = (($26 + 1) << 24) >> 24;
HEAP8[$dcode >> 0] = $27;
$28 = ($dcode + 68) | 0;
HEAP32[$28 >> 2] = $$;
$29 = ($$ | 0) == 0;
if ($29) {
$sym$02 = 0;
STACKTOP = sp;
return $sym$02 | 0;
}
$30 = ($dcode + 72) | 0;
$31 = HEAP32[$30 >> 2] | 0;
$32 = ($31 | 0) == 0;
do {
if (!$32) {
if (!((($$ | 0) == 1) | (($$ | 0) == 64))) {
$33 = ($31 | 0) == ($$ | 0);
if ($33) {
HEAP32[$30 >> 2] = 0;
break;
} else {
$34 = HEAP32[_stderr >> 2] | 0;
HEAP32[$vararg_buffer >> 2] = 8128;
$vararg_ptr1 = ($vararg_buffer + 4) | 0;
HEAP32[$vararg_ptr1 >> 2] = 263;
$vararg_ptr2 = ($vararg_buffer + 8) | 0;
HEAP32[$vararg_ptr2 >> 2] = 8152;
$vararg_ptr3 = ($vararg_buffer + 12) | 0;
HEAP32[$vararg_ptr3 >> 2] = 8168;
$vararg_ptr4 = ($vararg_buffer + 16) | 0;
HEAP32[$vararg_ptr4 >> 2] = $31;
$vararg_ptr5 = ($vararg_buffer + 20) | 0;
HEAP32[$vararg_ptr5 >> 2] = $$;
_fprintf($34 | 0, 8064 | 0, $vararg_buffer | 0) | 0;
break;
}
}
}
} while (0);
$35 = ($dcode + 104) | 0;
$36 = HEAP32[$35 >> 2] | 0;
$37 = ($36 | 0) == (0 | 0);
if ($37) {
$sym$02 = $$;
STACKTOP = sp;
return $sym$02 | 0;
}
FUNCTION_TABLE_vi[$36 & 7]($dcode);
$sym$02 = $$;
STACKTOP = sp;
return $sym$02 | 0;
}
function _zbar_decoder_get_configs($dcode, $sym) {
$dcode = $dcode | 0;
$sym = $sym | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
$2 = 0,
$cond$i = 0,
$config$0$i = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$cond$i = ($sym | 0) == 64;
$0 = ($dcode + 132) | 0;
$config$0$i = $cond$i ? $0 : 0;
$1 = ($config$0$i | 0) == (0 | 0);
if ($1) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$2 = HEAP32[$config$0$i >> 2] | 0;
$$0 = $2;
STACKTOP = sp;
return $$0 | 0;
}
function _bch15_5_correct($_y) {
$_y = $_y | 0;
var $$0 = 0,
$$lobit$i = 0,
$$lobit16$i = 0,
$$lobit17$i = 0,
$$lobit18$i = 0,
$$lobit19$i = 0,
$$lobit20$i = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0;
var $11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0;
var $128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0;
var $146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0,
$152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0;
var $164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0,
$170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0;
var $182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0,
$189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0;
var $20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0,
$206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0;
var $218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0,
$224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0;
var $236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0,
$242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$26 = 0,
$27 = 0,
$28 = 0;
var $29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0;
var $47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0;
var $65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0;
var $83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$d$0$i$i = 0,
$epos = 0;
var $exitcond = 0,
$exitcond$i = 0,
$exitcond$i1 = 0,
$exitcond11$i = 0,
$exitcond11$i$us = 0,
$exitcond12$i = 0,
$i$011$i = 0,
$i$03$i = 0,
$i$03$us$i = 0,
$i$03$us$i$us = 0,
$i$03$us4$i = 0,
$i$06 = 0,
$nerrors$0$lcssa$i = 0,
$nerrors$02$i = 0,
$nerrors$02$us$i = 0,
$nerrors$02$us$i$us = 0,
$nerrors$02$us5$i = 0,
$nerrors$1$i = 0,
$nerrors$1$us$i = 0,
$nerrors$1$us$i$us = 0;
var $nerrors$1$us8$i = 0,
$nerrors$2$i3$ph14 = 0,
$nerrors$2$i3$ph15 = 0,
$o$i = 0,
$or$cond = 0,
$or$cond$i$i = 0,
$p$010$i = 0,
$p$4$1$$i = 0,
$p$4$1$2$$i = 0,
$p$4$1$2$i = 0,
$p$4$114$$i = 0,
$p$4$114$i = 0,
$p$4$2$1$$i = 0,
$p$4$2$1$i = 0,
$p$4$3$$i = 0,
$p$4$3$2$$i = 0,
$p$4$3$2$i = 0,
$p$4$3$i = 0,
$p$4$4$1$$i = 0,
$p$4$4$1$i = 0;
var $p$7$$i = 0,
$p$7$1$1$$i = 0,
$p$7$1$1$i = 0,
$p$7$1$3$$i = 0,
$p$7$1$3$i = 0,
$p$7$2$$i = 0,
$p$7$2$2$$i = 0,
$p$7$2$2$i = 0,
$p$7$2$4$i = 0,
$p$7$2$i = 0,
$p$7$213$$i = 0,
$p$7$213$i = 0,
$p$7$4$$i = 0,
$p$7$4$i = 0,
$y$0$lcssa = 0,
$y$05 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 32) | 0;
$o$i = (sp + 12) | 0;
$epos = sp;
$0 = HEAP32[$_y >> 2] | 0;
$i$011$i = 0;
$p$010$i = 0;
while (1) {
$1 = 1 << $i$011$i;
$2 = $1 & $0;
$3 = ($2 | 0) == 0;
if ($3) {
$61 = $p$010$i;
} else {
$4 = (8208 + $i$011$i) | 0;
$5 = HEAP8[$4 >> 0] | 0;
$6 = $5 & 255;
$7 = $6 ^ $p$010$i;
$61 = $7;
}
$8 = ($i$011$i + 1) | 0;
$exitcond$i = ($8 | 0) == 15;
if ($exitcond$i) {
break;
} else {
$i$011$i = $8;
$p$010$i = $61;
}
}
$9 = $0 & 1;
$10 = $0 & 2;
$11 = ($10 | 0) == 0;
$12 = $10 << 2;
$13 = $12 | $9;
$14 = $0 & 4;
$15 = ($14 | 0) == 0;
$16 = $13 ^ 12;
$p$4$1$$i = $15 ? $13 : $16;
$17 = $0 & 8;
$18 = ($17 | 0) == 0;
$19 = $p$4$1$$i ^ 10;
$p$4$3$i = $18 ? $p$4$1$$i : $19;
$20 = $0 & 16;
$21 = ($20 | 0) == 0;
$22 = $p$4$3$i ^ 15;
$p$4$3$$i = $21 ? $p$4$3$i : $22;
$23 = $0 & 32;
$24 = ($23 | 0) == 0;
$$lobit$i = $23 >>> 5;
$p$4$114$i = $p$4$3$$i ^ $$lobit$i;
$25 = $0 & 64;
$26 = ($25 | 0) == 0;
$27 = $p$4$114$i ^ 8;
$p$4$114$$i = $26 ? $p$4$114$i : $27;
$28 = $0 & 128;
$29 = ($28 | 0) == 0;
$30 = $p$4$114$$i ^ 12;
$p$4$2$1$i = $29 ? $p$4$114$$i : $30;
$31 = $0 & 256;
$32 = ($31 | 0) == 0;
$33 = $p$4$2$1$i ^ 10;
$p$4$2$1$$i = $32 ? $p$4$2$1$i : $33;
$34 = $0 & 512;
$35 = ($34 | 0) == 0;
$36 = $p$4$2$1$$i ^ 15;
$p$4$4$1$i = $35 ? $p$4$2$1$$i : $36;
$37 = $0 & 1024;
$38 = ($37 | 0) == 0;
$$lobit16$i = $37 >>> 10;
$p$4$4$1$$i = $p$4$4$1$i ^ $$lobit16$i;
$39 = $0 & 2048;
$40 = ($39 | 0) == 0;
$41 = $p$4$4$1$$i ^ 8;
$p$4$1$2$i = $40 ? $p$4$4$1$$i : $41;
$42 = $0 & 4096;
$43 = ($42 | 0) == 0;
$44 = $p$4$1$2$i ^ 12;
$p$4$1$2$$i = $43 ? $p$4$1$2$i : $44;
$45 = $0 & 8192;
$46 = ($45 | 0) == 0;
$47 = $p$4$1$2$$i ^ 10;
$p$4$3$2$i = $46 ? $p$4$1$2$$i : $47;
$48 = $0 & 16384;
$49 = ($48 | 0) == 0;
$50 = $p$4$3$2$i ^ 15;
$p$4$3$2$$i = $49 ? $p$4$3$2$i : $50;
$51 = $9 | 6;
$p$7$$i = $11 ? $9 : $51;
$52 = $p$7$$i ^ 7;
$p$7$2$i = $15 ? $p$7$$i : $52;
$$lobit17$i = $17 >>> 3;
$p$7$2$$i = $p$7$2$i ^ $$lobit17$i;
$53 = $p$7$2$$i ^ 6;
$p$7$1$1$i = $21 ? $p$7$2$$i : $53;
$54 = $p$7$1$1$i ^ 7;
$p$7$1$1$$i = $24 ? $p$7$1$1$i : $54;
$$lobit18$i = $25 >>> 6;
$p$7$213$i = $p$7$1$1$$i ^ $$lobit18$i;
$55 = $p$7$213$i ^ 6;
$p$7$213$$i = $29 ? $p$7$213$i : $55;
$56 = $p$7$213$$i ^ 7;
$p$7$2$2$i = $32 ? $p$7$213$$i : $56;
$$lobit19$i = $34 >>> 9;
$p$7$2$2$$i = $p$7$2$2$i ^ $$lobit19$i;
$57 = $p$7$2$2$$i ^ 6;
$p$7$1$3$i = $38 ? $p$7$2$2$$i : $57;
$58 = $p$7$1$3$i ^ 7;
$p$7$1$3$$i = $40 ? $p$7$1$3$i : $58;
$$lobit20$i = $42 >>> 12;
$p$7$4$i = $p$7$1$3$$i ^ $$lobit20$i;
$59 = $p$7$4$i ^ 6;
$p$7$4$$i = $46 ? $p$7$4$i : $59;
$60 = $p$7$4$$i ^ 7;
$p$7$2$4$i = $49 ? $p$7$4$$i : $60;
$62 = ($61 | 0) == 0;
do {
if ($62) {
$63 = $p$4$3$2$$i | $p$7$2$4$i;
$64 = ($63 | 0) == 0;
if ($64) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
} else {
HEAP32[$o$i >> 2] = $61;
$100 = $p$4$3$2$$i;
$193 = $epos;
$250 = $o$i;
$88 = $p$4$3$2$$i;
$90 = 0;
$92 = 0;
break;
}
} else {
HEAP32[$o$i >> 2] = $61;
$65 = (8192 + $61) | 0;
$66 = HEAP8[$65 >> 0] | 0;
$67 = ($66 << 24) >> 24;
$68 = $67 << 1;
$69 = (8208 + $68) | 0;
$70 = HEAP8[$69 >> 0] | 0;
$71 = $70 & 255;
$72 = (8192 + $71) | 0;
$73 = HEAP8[$72 >> 0] | 0;
$74 = ($73 << 24) >> 24;
$75 = ($74 + $67) | 0;
$76 = (8208 + $75) | 0;
$77 = HEAP8[$76 >> 0] | 0;
$78 = $77 & 255;
$79 = $78 ^ $p$4$3$2$$i;
$80 = ($p$4$3$2$$i | 0) == 0;
if ($80) {
$100 = $79;
$193 = $epos;
$250 = $o$i;
$88 = 0;
$90 = $78;
$92 = 0;
} else {
$81 = (8192 + $p$4$3$2$$i) | 0;
$82 = HEAP8[$81 >> 0] | 0;
$83 = ($82 << 24) >> 24;
$84 = ($83 + $74) | 0;
$85 = (8208 + $84) | 0;
$86 = HEAP8[$85 >> 0] | 0;
$87 = $86 & 255;
$100 = $79;
$193 = $epos;
$250 = $o$i;
$88 = $p$4$3$2$$i;
$90 = $78;
$92 = $87;
}
}
} while (0);
$89 = ($88 | 0) == ($90 | 0);
$91 = ($p$7$2$4$i | 0) == ($92 | 0);
$or$cond$i$i = $89 | $91;
if ($or$cond$i$i) {
$93 = ($o$i + 4) | 0;
HEAP32[$93 >> 2] = 0;
$119 = 0;
$127 = 0;
} else {
$94 = $92 ^ $p$7$2$4$i;
$95 = (8192 + $94) | 0;
$96 = HEAP8[$95 >> 0] | 0;
$97 = ($96 << 24) >> 24;
$98 = ($97 + 15) | 0;
$99 = (8192 + $100) | 0;
$101 = HEAP8[$99 >> 0] | 0;
$102 = ($101 << 24) >> 24;
$103 = ($98 - $102) | 0;
$104 = (8208 + $103) | 0;
$105 = HEAP8[$104 >> 0] | 0;
$106 = $105 & 255;
$107 = ($o$i + 4) | 0;
HEAP32[$107 >> 2] = $106;
if ($62) {
$119 = 0;
$127 = $106;
} else {
$108 = (8192 + $61) | 0;
$109 = HEAP8[$108 >> 0] | 0;
$110 = ($109 << 24) >> 24;
$111 = (8192 + $106) | 0;
$112 = HEAP8[$111 >> 0] | 0;
$113 = ($112 << 24) >> 24;
$114 = ($113 + $110) | 0;
$115 = (8208 + $114) | 0;
$116 = HEAP8[$115 >> 0] | 0;
$117 = $116 & 255;
$119 = $117;
$127 = $106;
}
}
$118 = $119 ^ $100;
$120 = ($o$i + 8) | 0;
HEAP32[$120 >> 2] = $118;
$d$0$i$i = 3;
while (1) {
$121 = ($d$0$i$i | 0) > 0;
if (!$121) {
$$0 = -1;
label = 41;
break;
}
$122 = ($d$0$i$i + -1) | 0;
$123 = ($o$i + ($122 << 2)) | 0;
$124 = HEAP32[$123 >> 2] | 0;
$125 = ($124 | 0) == 0;
if ($125) {
$d$0$i$i = $122;
} else {
break;
}
}
if ((label | 0) == 41) {
STACKTOP = sp;
return $$0 | 0;
}
$126 = ($d$0$i$i | 0) == 1;
do {
if ($126) {
$190 = (8192 + $61) | 0;
$191 = HEAP8[$190 >> 0] | 0;
$192 = ($191 << 24) >> 24;
HEAP32[$193 >> 2] = $192;
$nerrors$2$i3$ph15 = 1;
label = 37;
} else {
$128 = ($127 | 0) == 0;
$129 = (8192 + $127) | 0;
L28: do {
if ($62) {
if ($128) {
$i$03$us$i$us = 0;
$nerrors$02$us$i$us = 0;
while (1) {
$130 = $i$03$us$i$us << 1;
$131 = (8208 + $130) | 0;
$132 = HEAP8[$131 >> 0] | 0;
$133 = $132 & 255;
$134 = (8192 + $133) | 0;
$135 = HEAP8[$134 >> 0] | 0;
$136 = ($135 << 24) >> 24;
$137 = ($136 + $i$03$us$i$us) | 0;
$138 = (8208 + $137) | 0;
$139 = HEAP8[$138 >> 0] | 0;
$140 = $139 & 255;
$141 = ($140 | 0) == ($118 | 0);
if ($141) {
$142 = ($nerrors$02$us$i$us + 1) | 0;
$143 = ($epos + ($nerrors$02$us$i$us << 2)) | 0;
HEAP32[$143 >> 2] = $i$03$us$i$us;
$nerrors$1$us$i$us = $142;
} else {
$nerrors$1$us$i$us = $nerrors$02$us$i$us;
}
$144 = ($i$03$us$i$us + 1) | 0;
$exitcond11$i$us = ($144 | 0) == 15;
if ($exitcond11$i$us) {
$nerrors$0$lcssa$i = $nerrors$1$us$i$us;
break;
} else {
$i$03$us$i$us = $144;
$nerrors$02$us$i$us = $nerrors$1$us$i$us;
}
}
} else {
$i$03$us$i = 0;
$nerrors$02$us$i = 0;
while (1) {
$150 = $i$03$us$i << 1;
$151 = (8208 + $150) | 0;
$152 = HEAP8[$151 >> 0] | 0;
$153 = $152 & 255;
$154 = (8192 + $153) | 0;
$155 = HEAP8[$154 >> 0] | 0;
$156 = ($155 << 24) >> 24;
$157 = ($156 + $i$03$us$i) | 0;
$158 = (8208 + $157) | 0;
$159 = HEAP8[$158 >> 0] | 0;
$160 = HEAP8[$129 >> 0] | 0;
$161 = ($160 << 24) >> 24;
$162 = ($161 + $i$03$us$i) | 0;
$163 = (8208 + $162) | 0;
$164 = HEAP8[$163 >> 0] | 0;
$165 = $164 ^ $159;
$166 = $165 & 255;
$167 = ($166 | 0) == ($118 | 0);
if ($167) {
$168 = ($nerrors$02$us$i + 1) | 0;
$169 = ($epos + ($nerrors$02$us$i << 2)) | 0;
HEAP32[$169 >> 2] = $i$03$us$i;
$nerrors$1$us$i = $168;
} else {
$nerrors$1$us$i = $nerrors$02$us$i;
}
$170 = ($i$03$us$i + 1) | 0;
$exitcond11$i = ($170 | 0) == 15;
if ($exitcond11$i) {
$nerrors$0$lcssa$i = $nerrors$1$us$i;
break;
} else {
$i$03$us$i = $170;
$nerrors$02$us$i = $nerrors$1$us$i;
}
}
}
} else {
$145 = (8192 + $61) | 0;
$146 = HEAP8[$145 >> 0] | 0;
$147 = ($146 << 24) >> 24;
if ($128) {
$i$03$us4$i = 0;
$nerrors$02$us5$i = 0;
while (1) {
$171 = $i$03$us4$i << 1;
$172 = (8208 + $171) | 0;
$173 = HEAP8[$172 >> 0] | 0;
$174 = $173 & 255;
$175 = (8192 + $174) | 0;
$176 = HEAP8[$175 >> 0] | 0;
$177 = ($176 << 24) >> 24;
$178 = ($177 + $i$03$us4$i) | 0;
$179 = (8208 + $178) | 0;
$180 = HEAP8[$179 >> 0] | 0;
$181 = ($147 + $177) | 0;
$182 = (8208 + $181) | 0;
$183 = HEAP8[$182 >> 0] | 0;
$184 = $183 ^ $180;
$185 = $184 & 255;
$186 = ($185 | 0) == ($118 | 0);
if ($186) {
$187 = ($nerrors$02$us5$i + 1) | 0;
$188 = ($epos + ($nerrors$02$us5$i << 2)) | 0;
HEAP32[$188 >> 2] = $i$03$us4$i;
$nerrors$1$us8$i = $187;
} else {
$nerrors$1$us8$i = $nerrors$02$us5$i;
}
$189 = ($i$03$us4$i + 1) | 0;
$exitcond12$i = ($189 | 0) == 15;
if ($exitcond12$i) {
$nerrors$0$lcssa$i = $nerrors$1$us8$i;
break L28;
} else {
$i$03$us4$i = $189;
$nerrors$02$us5$i = $nerrors$1$us8$i;
}
}
}
$148 = HEAP8[$129 >> 0] | 0;
$149 = ($148 << 24) >> 24;
$i$03$i = 0;
$nerrors$02$i = 0;
while (1) {
$194 = $i$03$i << 1;
$195 = (8208 + $194) | 0;
$196 = HEAP8[$195 >> 0] | 0;
$197 = $196 & 255;
$198 = (8192 + $197) | 0;
$199 = HEAP8[$198 >> 0] | 0;
$200 = ($199 << 24) >> 24;
$201 = ($200 + $i$03$i) | 0;
$202 = (8208 + $201) | 0;
$203 = HEAP8[$202 >> 0] | 0;
$204 = ($147 + $200) | 0;
$205 = (8208 + $204) | 0;
$206 = HEAP8[$205 >> 0] | 0;
$207 = $206 ^ $203;
$208 = ($149 + $i$03$i) | 0;
$209 = (8208 + $208) | 0;
$210 = HEAP8[$209 >> 0] | 0;
$211 = $207 ^ $210;
$212 = $211 & 255;
$213 = ($212 | 0) == ($118 | 0);
if ($213) {
$214 = ($nerrors$02$i + 1) | 0;
$215 = ($epos + ($nerrors$02$i << 2)) | 0;
HEAP32[$215 >> 2] = $i$03$i;
$nerrors$1$i = $214;
} else {
$nerrors$1$i = $nerrors$02$i;
}
$216 = ($i$03$i + 1) | 0;
$exitcond$i1 = ($216 | 0) == 15;
if ($exitcond$i1) {
$nerrors$0$lcssa$i = $nerrors$1$i;
break;
} else {
$i$03$i = $216;
$nerrors$02$i = $nerrors$1$i;
}
}
}
} while (0);
$217 = ($nerrors$0$lcssa$i | 0) >= ($d$0$i$i | 0);
$218 = ($nerrors$0$lcssa$i | 0) > 0;
$or$cond = $217 & $218;
if ($or$cond) {
$219 = ($nerrors$0$lcssa$i | 0) > 0;
if ($219) {
$nerrors$2$i3$ph15 = $nerrors$0$lcssa$i;
label = 37;
break;
} else {
$nerrors$2$i3$ph14 = $nerrors$0$lcssa$i;
$y$0$lcssa = $0;
break;
}
} else {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
}
} while (0);
if ((label | 0) == 37) {
$i$06 = 0;
$y$05 = $0;
while (1) {
$220 = ($epos + ($i$06 << 2)) | 0;
$221 = HEAP32[$220 >> 2] | 0;
$222 = 1 << $221;
$223 = $222 ^ $y$05;
$224 = ($i$06 + 1) | 0;
$exitcond = ($224 | 0) == ($nerrors$2$i3$ph15 | 0);
if ($exitcond) {
$nerrors$2$i3$ph14 = $nerrors$2$i3$ph15;
$y$0$lcssa = $223;
break;
} else {
$i$06 = $224;
$y$05 = $223;
}
}
}
$225 = $y$0$lcssa >>> 10;
$226 = $225 & 1;
$227 = (0 - $226) | 0;
$228 = $227 & 1335;
$229 = $y$0$lcssa >>> 11;
$230 = $229 & 1;
$231 = (0 - $230) | 0;
$232 = $231 & 2670;
$233 = $232 ^ $228;
$234 = $y$0$lcssa >>> 12;
$235 = $234 & 1;
$236 = (0 - $235) | 0;
$237 = $236 & 4587;
$238 = $233 ^ $237;
$239 = $y$0$lcssa >>> 13;
$240 = $239 & 1;
$241 = (0 - $240) | 0;
$242 = $241 & 9174;
$243 = $238 ^ $242;
$244 = $y$0$lcssa >>> 14;
$245 = $244 & 1;
$246 = (0 - $245) | 0;
$247 = $246 & 17051;
$248 = $243 ^ $247;
$249 = ($248 | 0) == ($y$0$lcssa | 0);
if (!$249) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
HEAP32[$_y >> 2] = $y$0$lcssa;
$$0 = $nerrors$2$i3$ph14;
STACKTOP = sp;
return $$0 | 0;
}
function _qr_binarize($_img, $_width, $_height) {
$_img = $_img | 0;
$_width = $_width | 0;
$_height = $_height | 0;
var $$phi$trans$insert = 0,
$$phi$trans$insert36 = 0,
$$pre = 0,
$$pre37 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0;
var $112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0;
var $130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0;
var $149 = 0,
$15 = 0,
$150 = 0,
$151 = 0,
$152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0;
var $167 = 0,
$168 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0;
var $33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0;
var $51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0;
var $7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0;
var $88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$exitcond = 0,
$exitcond32 = 0,
$logwindh$0$lcssa = 0,
$logwindh$025 = 0,
$logwindw$0$lcssa = 0,
$logwindw$026 = 0,
$m$03$us = 0;
var $m$1$ph = 0,
$m$1$ph$us = 0,
$mask$0 = 0,
$or$cond = 0,
$x$022 = 0,
$x$112$us = 0,
$x$22$us = 0,
$x$3 = 0,
$x$3$ph = 0,
$x$3$ph$us = 0,
$x$3$us = 0,
$x$48 = 0,
$x$48$us = 0,
$y$018$us = 0,
$y$110 = 0,
$y$110$us = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = (($_width | 0) / 4) & -1;
$1 = (($_height | 0) / 4) & -1;
$2 = ($_width | 0) > 0;
$3 = ($_height | 0) > 0;
$or$cond = $2 & $3;
if (!$or$cond) {
$mask$0 = 0;
STACKTOP = sp;
return $mask$0 | 0;
}
$4 = Math_imul($_height, $_width) | 0;
$5 = _malloc($4) | 0;
$6 = ($_width + 7) | 0;
$7 = $6 >> 3;
$logwindw$026 = 4;
while (1) {
$10 = 1 << $logwindw$026;
$11 = ($10 | 0) < ($7 | 0);
$8 = ($logwindw$026 + 1) | 0;
if (!$11) {
$logwindw$0$lcssa = $logwindw$026;
break;
}
$9 = ($8 | 0) < 8;
if ($9) {
$logwindw$026 = $8;
} else {
$logwindw$0$lcssa = $8;
break;
}
}
$12 = ($_height + 7) | 0;
$13 = $12 >> 3;
$logwindh$025 = 4;
while (1) {
$16 = 1 << $logwindh$025;
$17 = ($16 | 0) < ($13 | 0);
$14 = ($logwindh$025 + 1) | 0;
if (!$17) {
$logwindh$0$lcssa = $logwindh$025;
break;
}
$15 = ($14 | 0) < 8;
if ($15) {
$logwindh$025 = $14;
} else {
$logwindh$0$lcssa = $14;
break;
}
}
$18 = 1 << $logwindw$0$lcssa;
$19 = 1 << $logwindh$0$lcssa;
$20 = $_width << 2;
$21 = _malloc($20) | 0;
$22 = $0 << 2;
$23 = ($_width | 0) > 3;
if ($23) {
$24 = ($logwindh$0$lcssa + -1) | 0;
$x$022 = 0;
while (1) {
$41 = ($_img + $x$022) | 0;
$42 = HEAP8[$41 >> 0] | 0;
$43 = $42 & 255;
$44 = $43 << $24;
$45 = ($44 + $43) | 0;
$46 = ($21 + ($x$022 << 2)) | 0;
HEAP32[$46 >> 2] = $45;
$47 = ($x$022 + 1) | 0;
$48 = ($47 | 0) < ($22 | 0);
if ($48) {
$x$022 = $47;
} else {
break;
}
}
}
$25 = $19 >> 1;
$26 = ($25 | 0) > 1;
if ($26) {
$27 = ($_height + -1) | 0;
if ($23) {
$y$018$us = 1;
while (1) {
$39 = ($y$018$us | 0) >= ($_height | 0);
$40 = $39 ? $27 : $y$018$us;
$30 = Math_imul($40, $_width) | 0;
$x$112$us = 0;
while (1) {
$29 = ($x$112$us + $30) | 0;
$31 = ($_img + $29) | 0;
$32 = HEAP8[$31 >> 0] | 0;
$33 = $32 & 255;
$34 = ($21 + ($x$112$us << 2)) | 0;
$35 = HEAP32[$34 >> 2] | 0;
$36 = ($35 + $33) | 0;
HEAP32[$34 >> 2] = $36;
$37 = ($x$112$us + 1) | 0;
$38 = ($37 | 0) < ($22 | 0);
if ($38) {
$x$112$us = $37;
} else {
break;
}
}
$28 = ($y$018$us + 1) | 0;
$exitcond32 = ($28 | 0) == ($25 | 0);
if ($exitcond32) {
break;
} else {
$y$018$us = $28;
}
}
}
}
$49 = $1 << 2;
$50 = ($_height | 0) > 3;
L25: do {
if ($50) {
$51 = ($logwindw$0$lcssa + -1) | 0;
$52 = $18 >> 1;
$53 = ($52 | 0) > 1;
$54 = ($logwindh$0$lcssa + $logwindw$0$lcssa) | 0;
$55 = ($_width + -1) | 0;
$56 = ($_height + -1) | 0;
if ($53) {
$y$110$us = 0;
} else {
$y$110 = 0;
while (1) {
$116 = HEAP32[$21 >> 2] | 0;
$117 = $116 << $51;
$118 = ($117 + $116) | 0;
$119 = Math_imul($y$110, $_width) | 0;
$m$1$ph = $118;
$x$3$ph = 0;
L30: while (1) {
$x$3 = $x$3$ph;
while (1) {
$120 = ($x$3 | 0) < ($22 | 0);
if (!$120) {
break L30;
}
$121 = ($x$3 + $119) | 0;
$122 = ($_img + $121) | 0;
$123 = HEAP8[$122 >> 0] | 0;
$124 = $123 & 255;
$125 = ($124 + 3) | 0;
$126 = $125 << $54;
$127 = $126 >>> 0 < $m$1$ph >>> 0;
$128 = ($127 << 31) >> 31;
$129 = ($5 + $121) | 0;
HEAP8[$129 >> 0] = $128;
$130 = ($x$3 + 1) | 0;
$131 = ($130 | 0) < ($_width | 0);
if ($131) {
break;
} else {
$x$3 = $130;
}
}
$132 = ($x$3 - $52) | 0;
$133 = ($132 | 0) > 0;
$134 = $133 ? $132 : 0;
$135 = ($x$3 + $52) | 0;
$136 = ($135 | 0) >= ($_width | 0);
$137 = $136 ? $55 : $135;
$138 = ($21 + ($137 << 2)) | 0;
$139 = HEAP32[$138 >> 2] | 0;
$140 = ($21 + ($134 << 2)) | 0;
$141 = HEAP32[$140 >> 2] | 0;
$142 = ($139 + $m$1$ph) | 0;
$143 = ($142 - $141) | 0;
$m$1$ph = $143;
$x$3$ph = $130;
}
$144 = ($y$110 + 1) | 0;
$145 = ($144 | 0) < ($_height | 0);
L37: do {
if ($145) {
$147 = ($y$110 - $25) | 0;
$148 = ($147 | 0) > 0;
$149 = $148 ? $147 : 0;
$150 = Math_imul($149, $_width) | 0;
$151 = ($y$110 + $25) | 0;
$152 = ($151 | 0) >= ($_height | 0);
$153 = $152 ? $56 : $151;
$154 = Math_imul($153, $_width) | 0;
if ($23) {
$161 = $116;
$x$48 = 0;
while (1) {
$155 = ($x$48 + $150) | 0;
$156 = ($_img + $155) | 0;
$157 = HEAP8[$156 >> 0] | 0;
$158 = $157 & 255;
$159 = ($21 + ($x$48 << 2)) | 0;
$160 = ($161 - $158) | 0;
$162 = ($x$48 + $154) | 0;
$163 = ($_img + $162) | 0;
$164 = HEAP8[$163 >> 0] | 0;
$165 = $164 & 255;
$166 = ($165 + $160) | 0;
HEAP32[$159 >> 2] = $166;
$167 = ($x$48 + 1) | 0;
$168 = ($167 | 0) < ($22 | 0);
if (!$168) {
break L37;
}
$$phi$trans$insert36 = ($21 + ($167 << 2)) | 0;
$$pre37 = HEAP32[$$phi$trans$insert36 >> 2] | 0;
$161 = $$pre37;
$x$48 = $167;
}
}
}
} while (0);
$146 = ($144 | 0) < ($49 | 0);
if ($146) {
$y$110 = $144;
} else {
break L25;
}
}
}
while (1) {
$112 = HEAP32[$21 >> 2] | 0;
$113 = $112 << $51;
$114 = ($113 + $112) | 0;
$m$03$us = $114;
$x$22$us = 1;
while (1) {
$106 = ($x$22$us | 0) >= ($_width | 0);
$107 = $106 ? $55 : $x$22$us;
$108 = ($21 + ($107 << 2)) | 0;
$109 = HEAP32[$108 >> 2] | 0;
$110 = ($109 + $m$03$us) | 0;
$111 = ($x$22$us + 1) | 0;
$exitcond = ($111 | 0) == ($52 | 0);
if ($exitcond) {
break;
} else {
$m$03$us = $110;
$x$22$us = $111;
}
}
$83 = Math_imul($y$110$us, $_width) | 0;
$m$1$ph$us = $110;
$x$3$ph$us = 0;
L48: while (1) {
$x$3$us = $x$3$ph$us;
while (1) {
$57 = ($x$3$us | 0) < ($22 | 0);
if (!$57) {
break L48;
}
$82 = ($x$3$us + $83) | 0;
$84 = ($_img + $82) | 0;
$85 = HEAP8[$84 >> 0] | 0;
$86 = $85 & 255;
$87 = ($86 + 3) | 0;
$88 = $87 << $54;
$89 = $88 >>> 0 < $m$1$ph$us >>> 0;
$90 = ($89 << 31) >> 31;
$91 = ($5 + $82) | 0;
HEAP8[$91 >> 0] = $90;
$92 = ($x$3$us + 1) | 0;
$93 = ($92 | 0) < ($_width | 0);
if ($93) {
break;
} else {
$x$3$us = $92;
}
}
$94 = ($x$3$us - $52) | 0;
$95 = ($94 | 0) > 0;
$96 = $95 ? $94 : 0;
$97 = ($x$3$us + $52) | 0;
$98 = ($97 | 0) >= ($_width | 0);
$99 = $98 ? $55 : $97;
$100 = ($21 + ($99 << 2)) | 0;
$101 = HEAP32[$100 >> 2] | 0;
$102 = ($21 + ($96 << 2)) | 0;
$103 = HEAP32[$102 >> 2] | 0;
$104 = ($101 + $m$1$ph$us) | 0;
$105 = ($104 - $103) | 0;
$m$1$ph$us = $105;
$x$3$ph$us = $92;
}
$58 = ($y$110$us + 1) | 0;
$59 = ($58 | 0) < ($_height | 0);
L55: do {
if ($59) {
$60 = ($y$110$us - $25) | 0;
$61 = ($60 | 0) > 0;
$62 = $61 ? $60 : 0;
$63 = Math_imul($62, $_width) | 0;
$64 = ($y$110$us + $25) | 0;
$65 = ($64 | 0) >= ($_height | 0);
$66 = $65 ? $56 : $64;
$67 = Math_imul($66, $_width) | 0;
if ($23) {
$74 = $112;
$x$48$us = 0;
while (1) {
$68 = ($x$48$us + $63) | 0;
$69 = ($_img + $68) | 0;
$70 = HEAP8[$69 >> 0] | 0;
$71 = $70 & 255;
$72 = ($21 + ($x$48$us << 2)) | 0;
$73 = ($74 - $71) | 0;
$75 = ($x$48$us + $67) | 0;
$76 = ($_img + $75) | 0;
$77 = HEAP8[$76 >> 0] | 0;
$78 = $77 & 255;
$79 = ($78 + $73) | 0;
HEAP32[$72 >> 2] = $79;
$80 = ($x$48$us + 1) | 0;
$81 = ($80 | 0) < ($22 | 0);
if (!$81) {
break L55;
}
$$phi$trans$insert = ($21 + ($80 << 2)) | 0;
$$pre = HEAP32[$$phi$trans$insert >> 2] | 0;
$74 = $$pre;
$x$48$us = $80;
}
}
}
} while (0);
$115 = ($58 | 0) < ($49 | 0);
if ($115) {
$y$110$us = $58;
} else {
break;
}
}
}
} while (0);
_free($21);
$mask$0 = $5;
STACKTOP = sp;
return $mask$0 | 0;
}
function _isaac_init($_ctx, $_seed, $_nseed) {
$_ctx = $_ctx | 0;
$_seed = $_seed | 0;
$_nseed = $_nseed | 0;
var $$_nseed = 0,
$$phi$trans$insert = 0,
$$phi$trans$insert23 = 0,
$$pre = 0,
$$pre24 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0;
var $111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0;
var $13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0;
var $148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0,
$152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0;
var $166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0,
$170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0;
var $184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0,
$189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0;
var $201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0,
$206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0;
var $22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0,
$224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0;
var $238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0,
$242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0;
var $30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0;
var $49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0;
var $67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0;
var $85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$exitcond = 0,
$exitcond19 = 0,
$i$01$i = 0,
$i$01$i1 = 0;
var $i$01$i3 = 0,
$i$018 = 0,
$i$1$lcssa = 0,
$i$113 = 0,
$i$2 = 0,
$i$311 = 0,
$i$47 = 0,
$j$012 = 0,
$x = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 32) | 0;
$x = sp;
$0 = ($_ctx + 2060) | 0;
HEAP32[$0 >> 2] = 0;
$1 = ($_ctx + 2056) | 0;
HEAP32[$1 >> 2] = 0;
$2 = ($_ctx + 2052) | 0;
HEAP32[$2 >> 2] = 0;
$3 = ($x + 28) | 0;
HEAP32[$3 >> 2] = -1640531527;
$4 = ($x + 24) | 0;
HEAP32[$4 >> 2] = -1640531527;
$5 = ($x + 20) | 0;
HEAP32[$5 >> 2] = -1640531527;
$6 = ($x + 16) | 0;
HEAP32[$6 >> 2] = -1640531527;
$7 = ($x + 12) | 0;
HEAP32[$7 >> 2] = -1640531527;
$8 = ($x + 8) | 0;
HEAP32[$8 >> 2] = -1640531527;
$9 = ($x + 4) | 0;
HEAP32[$9 >> 2] = -1640531527;
HEAP32[$x >> 2] = -1640531527;
$i$018 = 0;
while (1) {
$i$01$i = 0;
while (1) {
$10 = $i$01$i | 1;
$11 = ($x + ($10 << 2)) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = (8240 + $i$01$i) | 0;
$14 = HEAP8[$13 >> 0] | 0;
$15 = $14 & 255;
$16 = $12 << $15;
$17 = ($x + ($i$01$i << 2)) | 0;
$18 = HEAP32[$17 >> 2] | 0;
$19 = $16 ^ $18;
HEAP32[$17 >> 2] = $19;
$20 = ($i$01$i + 3) | 0;
$21 = $20 & 7;
$22 = ($x + ($21 << 2)) | 0;
$23 = HEAP32[$22 >> 2] | 0;
$24 = ($19 + $23) | 0;
HEAP32[$22 >> 2] = $24;
$25 = ($i$01$i + 2) | 0;
$26 = $25 & 6;
$27 = ($x + ($26 << 2)) | 0;
$28 = HEAP32[$27 >> 2] | 0;
$29 = HEAP32[$11 >> 2] | 0;
$30 = ($29 + $28) | 0;
HEAP32[$11 >> 2] = $30;
$31 = HEAP32[$27 >> 2] | 0;
$32 = (8240 + $10) | 0;
$33 = HEAP8[$32 >> 0] | 0;
$34 = $33 & 255;
$35 = $31 >>> $34;
$36 = $35 ^ $30;
HEAP32[$11 >> 2] = $36;
$37 = ($i$01$i + 4) | 0;
$38 = $37 & 6;
$39 = ($x + ($38 << 2)) | 0;
$40 = HEAP32[$39 >> 2] | 0;
$41 = ($36 + $40) | 0;
HEAP32[$39 >> 2] = $41;
$42 = HEAP32[$22 >> 2] | 0;
$43 = HEAP32[$27 >> 2] | 0;
$44 = ($43 + $42) | 0;
HEAP32[$27 >> 2] = $44;
$45 = ($25 | 0) < 8;
if ($45) {
$i$01$i = $25;
} else {
break;
}
}
$46 = ($i$018 + 1) | 0;
$exitcond19 = ($46 | 0) == 4;
if ($exitcond19) {
break;
} else {
$i$018 = $46;
}
}
$47 = ($_nseed | 0) > 1024;
$$_nseed = $47 ? 1024 : $_nseed;
$48 = $$_nseed >> 2;
$49 = ($48 | 0) > 0;
if ($49) {
$i$113 = 0;
while (1) {
$50 = $i$113 << 2;
$51 = $50 | 3;
$52 = ($_seed + $51) | 0;
$53 = HEAP8[$52 >> 0] | 0;
$54 = $53 & 255;
$55 = $54 << 24;
$56 = $50 | 2;
$57 = ($_seed + $56) | 0;
$58 = HEAP8[$57 >> 0] | 0;
$59 = $58 & 255;
$60 = $59 << 16;
$61 = $60 | $55;
$62 = $50 | 1;
$63 = ($_seed + $62) | 0;
$64 = HEAP8[$63 >> 0] | 0;
$65 = $64 & 255;
$66 = $65 << 8;
$67 = $61 | $66;
$68 = ($_seed + $50) | 0;
$69 = HEAP8[$68 >> 0] | 0;
$70 = $69 & 255;
$71 = $67 | $70;
$72 = ((($_ctx + ($i$113 << 2)) | 0) + 4) | 0;
HEAP32[$72 >> 2] = $71;
$73 = ($i$113 + 1) | 0;
$exitcond = ($73 | 0) == ($48 | 0);
if ($exitcond) {
$i$1$lcssa = $48;
break;
} else {
$i$113 = $73;
}
}
} else {
$i$1$lcssa = 0;
}
$74 = $$_nseed & 3;
$75 = ($74 | 0) == 0;
if ($75) {
$i$2 = $i$1$lcssa;
} else {
$76 = $i$1$lcssa << 2;
$77 = ($_seed + $76) | 0;
$78 = HEAP8[$77 >> 0] | 0;
$79 = $78 & 255;
$80 = ((($_ctx + ($i$1$lcssa << 2)) | 0) + 4) | 0;
HEAP32[$80 >> 2] = $79;
$81 = $74 >>> 0 > 1;
if ($81) {
$89 = $79;
$j$012 = 1;
while (1) {
$82 = $j$012 | $76;
$83 = ($_seed + $82) | 0;
$84 = HEAP8[$83 >> 0] | 0;
$85 = $84 & 255;
$86 = $j$012 << 3;
$87 = $85 << $86;
$88 = ($87 + $89) | 0;
HEAP32[$80 >> 2] = $88;
$90 = ($j$012 + 1) | 0;
$91 = ($90 | 0) < ($74 | 0);
if ($91) {
$89 = $88;
$j$012 = $90;
} else {
break;
}
}
}
$92 = ($i$1$lcssa + 1) | 0;
$i$2 = $92;
}
$93 = ((($_ctx + ($i$2 << 2)) | 0) + 4) | 0;
$94 = (256 - $i$2) | 0;
$95 = $94 << 2;
_memset($93 | 0, 0, $95 | 0) | 0;
$i$311 = 0;
while (1) {
$96 = ((($_ctx + ($i$311 << 2)) | 0) + 4) | 0;
$97 = HEAP32[$96 >> 2] | 0;
$98 = HEAP32[$x >> 2] | 0;
$99 = ($98 + $97) | 0;
HEAP32[$x >> 2] = $99;
$100 = $i$311 | 1;
$101 = ((($_ctx + ($100 << 2)) | 0) + 4) | 0;
$102 = HEAP32[$101 >> 2] | 0;
$103 = HEAP32[$9 >> 2] | 0;
$104 = ($103 + $102) | 0;
HEAP32[$9 >> 2] = $104;
$105 = $i$311 | 2;
$106 = ((($_ctx + ($105 << 2)) | 0) + 4) | 0;
$107 = HEAP32[$106 >> 2] | 0;
$108 = HEAP32[$8 >> 2] | 0;
$109 = ($108 + $107) | 0;
HEAP32[$8 >> 2] = $109;
$110 = $i$311 | 3;
$111 = ((($_ctx + ($110 << 2)) | 0) + 4) | 0;
$112 = HEAP32[$111 >> 2] | 0;
$113 = HEAP32[$7 >> 2] | 0;
$114 = ($113 + $112) | 0;
HEAP32[$7 >> 2] = $114;
$115 = $i$311 | 4;
$116 = ((($_ctx + ($115 << 2)) | 0) + 4) | 0;
$117 = HEAP32[$116 >> 2] | 0;
$118 = HEAP32[$6 >> 2] | 0;
$119 = ($118 + $117) | 0;
HEAP32[$6 >> 2] = $119;
$120 = $i$311 | 5;
$121 = ((($_ctx + ($120 << 2)) | 0) + 4) | 0;
$122 = HEAP32[$121 >> 2] | 0;
$123 = HEAP32[$5 >> 2] | 0;
$124 = ($123 + $122) | 0;
HEAP32[$5 >> 2] = $124;
$125 = $i$311 | 6;
$126 = ((($_ctx + ($125 << 2)) | 0) + 4) | 0;
$127 = HEAP32[$126 >> 2] | 0;
$128 = HEAP32[$4 >> 2] | 0;
$129 = ($128 + $127) | 0;
HEAP32[$4 >> 2] = $129;
$130 = $i$311 | 7;
$131 = ((($_ctx + ($130 << 2)) | 0) + 4) | 0;
$132 = HEAP32[$131 >> 2] | 0;
$133 = HEAP32[$3 >> 2] | 0;
$134 = ($133 + $132) | 0;
HEAP32[$3 >> 2] = $134;
$144 = $99;
$i$01$i1 = 0;
while (1) {
$135 = $i$01$i1 | 1;
$136 = ($x + ($135 << 2)) | 0;
$137 = HEAP32[$136 >> 2] | 0;
$138 = (8240 + $i$01$i1) | 0;
$139 = HEAP8[$138 >> 0] | 0;
$140 = $139 & 255;
$141 = $137 << $140;
$142 = ($x + ($i$01$i1 << 2)) | 0;
$143 = $141 ^ $144;
HEAP32[$142 >> 2] = $143;
$145 = ($i$01$i1 + 3) | 0;
$146 = $145 & 7;
$147 = ($x + ($146 << 2)) | 0;
$148 = HEAP32[$147 >> 2] | 0;
$149 = ($143 + $148) | 0;
HEAP32[$147 >> 2] = $149;
$150 = ($i$01$i1 + 2) | 0;
$151 = $150 & 6;
$152 = ($x + ($151 << 2)) | 0;
$153 = HEAP32[$152 >> 2] | 0;
$154 = HEAP32[$136 >> 2] | 0;
$155 = ($154 + $153) | 0;
HEAP32[$136 >> 2] = $155;
$156 = HEAP32[$152 >> 2] | 0;
$157 = (8240 + $135) | 0;
$158 = HEAP8[$157 >> 0] | 0;
$159 = $158 & 255;
$160 = $156 >>> $159;
$161 = $160 ^ $155;
HEAP32[$136 >> 2] = $161;
$162 = ($i$01$i1 + 4) | 0;
$163 = $162 & 6;
$164 = ($x + ($163 << 2)) | 0;
$165 = HEAP32[$164 >> 2] | 0;
$166 = ($161 + $165) | 0;
HEAP32[$164 >> 2] = $166;
$167 = HEAP32[$147 >> 2] | 0;
$168 = HEAP32[$152 >> 2] | 0;
$169 = ($168 + $167) | 0;
HEAP32[$152 >> 2] = $169;
$170 = ($150 | 0) < 8;
if (!$170) {
break;
}
$$phi$trans$insert = ($x + ($150 << 2)) | 0;
$$pre = HEAP32[$$phi$trans$insert >> 2] | 0;
$144 = $$pre;
$i$01$i1 = $150;
}
$171 = ((($_ctx + ($i$311 << 2)) | 0) + 1028) | 0;
HEAP32[($171 + 0) >> 2] = HEAP32[($x + 0) >> 2] | 0;
HEAP32[($171 + 4) >> 2] = HEAP32[($x + 4) >> 2] | 0;
HEAP32[($171 + 8) >> 2] = HEAP32[($x + 8) >> 2] | 0;
HEAP32[($171 + 12) >> 2] = HEAP32[($x + 12) >> 2] | 0;
HEAP32[($171 + 16) >> 2] = HEAP32[($x + 16) >> 2] | 0;
HEAP32[($171 + 20) >> 2] = HEAP32[($x + 20) >> 2] | 0;
HEAP32[($171 + 24) >> 2] = HEAP32[($x + 24) >> 2] | 0;
HEAP32[($171 + 28) >> 2] = HEAP32[($x + 28) >> 2] | 0;
$172 = ($i$311 + 8) | 0;
$173 = ($172 | 0) < 256;
if ($173) {
$i$311 = $172;
} else {
$i$47 = 0;
break;
}
}
while (1) {
$174 = ((($_ctx + ($i$47 << 2)) | 0) + 1028) | 0;
$175 = HEAP32[$174 >> 2] | 0;
$176 = HEAP32[$x >> 2] | 0;
$177 = ($176 + $175) | 0;
HEAP32[$x >> 2] = $177;
$178 = $i$47 | 1;
$179 = ((($_ctx + ($178 << 2)) | 0) + 1028) | 0;
$180 = HEAP32[$179 >> 2] | 0;
$181 = HEAP32[$9 >> 2] | 0;
$182 = ($181 + $180) | 0;
HEAP32[$9 >> 2] = $182;
$183 = $i$47 | 2;
$184 = ((($_ctx + ($183 << 2)) | 0) + 1028) | 0;
$185 = HEAP32[$184 >> 2] | 0;
$186 = HEAP32[$8 >> 2] | 0;
$187 = ($186 + $185) | 0;
HEAP32[$8 >> 2] = $187;
$188 = $i$47 | 3;
$189 = ((($_ctx + ($188 << 2)) | 0) + 1028) | 0;
$190 = HEAP32[$189 >> 2] | 0;
$191 = HEAP32[$7 >> 2] | 0;
$192 = ($191 + $190) | 0;
HEAP32[$7 >> 2] = $192;
$193 = $i$47 | 4;
$194 = ((($_ctx + ($193 << 2)) | 0) + 1028) | 0;
$195 = HEAP32[$194 >> 2] | 0;
$196 = HEAP32[$6 >> 2] | 0;
$197 = ($196 + $195) | 0;
HEAP32[$6 >> 2] = $197;
$198 = $i$47 | 5;
$199 = ((($_ctx + ($198 << 2)) | 0) + 1028) | 0;
$200 = HEAP32[$199 >> 2] | 0;
$201 = HEAP32[$5 >> 2] | 0;
$202 = ($201 + $200) | 0;
HEAP32[$5 >> 2] = $202;
$203 = $i$47 | 6;
$204 = ((($_ctx + ($203 << 2)) | 0) + 1028) | 0;
$205 = HEAP32[$204 >> 2] | 0;
$206 = HEAP32[$4 >> 2] | 0;
$207 = ($206 + $205) | 0;
HEAP32[$4 >> 2] = $207;
$208 = $i$47 | 7;
$209 = ((($_ctx + ($208 << 2)) | 0) + 1028) | 0;
$210 = HEAP32[$209 >> 2] | 0;
$211 = HEAP32[$3 >> 2] | 0;
$212 = ($211 + $210) | 0;
HEAP32[$3 >> 2] = $212;
$222 = $177;
$i$01$i3 = 0;
while (1) {
$213 = $i$01$i3 | 1;
$214 = ($x + ($213 << 2)) | 0;
$215 = HEAP32[$214 >> 2] | 0;
$216 = (8240 + $i$01$i3) | 0;
$217 = HEAP8[$216 >> 0] | 0;
$218 = $217 & 255;
$219 = $215 << $218;
$220 = ($x + ($i$01$i3 << 2)) | 0;
$221 = $219 ^ $222;
HEAP32[$220 >> 2] = $221;
$223 = ($i$01$i3 + 3) | 0;
$224 = $223 & 7;
$225 = ($x + ($224 << 2)) | 0;
$226 = HEAP32[$225 >> 2] | 0;
$227 = ($221 + $226) | 0;
HEAP32[$225 >> 2] = $227;
$228 = ($i$01$i3 + 2) | 0;
$229 = $228 & 6;
$230 = ($x + ($229 << 2)) | 0;
$231 = HEAP32[$230 >> 2] | 0;
$232 = HEAP32[$214 >> 2] | 0;
$233 = ($232 + $231) | 0;
HEAP32[$214 >> 2] = $233;
$234 = HEAP32[$230 >> 2] | 0;
$235 = (8240 + $213) | 0;
$236 = HEAP8[$235 >> 0] | 0;
$237 = $236 & 255;
$238 = $234 >>> $237;
$239 = $238 ^ $233;
HEAP32[$214 >> 2] = $239;
$240 = ($i$01$i3 + 4) | 0;
$241 = $240 & 6;
$242 = ($x + ($241 << 2)) | 0;
$243 = HEAP32[$242 >> 2] | 0;
$244 = ($239 + $243) | 0;
HEAP32[$242 >> 2] = $244;
$245 = HEAP32[$225 >> 2] | 0;
$246 = HEAP32[$230 >> 2] | 0;
$247 = ($246 + $245) | 0;
HEAP32[$230 >> 2] = $247;
$248 = ($228 | 0) < 8;
if (!$248) {
break;
}
$$phi$trans$insert23 = ($x + ($228 << 2)) | 0;
$$pre24 = HEAP32[$$phi$trans$insert23 >> 2] | 0;
$222 = $$pre24;
$i$01$i3 = $228;
}
HEAP32[($174 + 0) >> 2] = HEAP32[($x + 0) >> 2] | 0;
HEAP32[($174 + 4) >> 2] = HEAP32[($x + 4) >> 2] | 0;
HEAP32[($174 + 8) >> 2] = HEAP32[($x + 8) >> 2] | 0;
HEAP32[($174 + 12) >> 2] = HEAP32[($x + 12) >> 2] | 0;
HEAP32[($174 + 16) >> 2] = HEAP32[($x + 16) >> 2] | 0;
HEAP32[($174 + 20) >> 2] = HEAP32[($x + 20) >> 2] | 0;
HEAP32[($174 + 24) >> 2] = HEAP32[($x + 24) >> 2] | 0;
HEAP32[($174 + 28) >> 2] = HEAP32[($x + 28) >> 2] | 0;
$249 = ($i$47 + 8) | 0;
$250 = ($249 | 0) < 256;
if ($250) {
$i$47 = $249;
} else {
break;
}
}
_isaac_update($_ctx);
STACKTOP = sp;
return;
}
function _isaac_update($_ctx) {
$_ctx = $_ctx | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0;
var $116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0;
var $134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0;
var $152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0;
var $170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0;
var $29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0;
var $47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0;
var $65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0;
var $83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$a$04 = 0,
$a$11 = 0;
var $b$05 = 0,
$b$12 = 0,
$i$06 = 0,
$i$13 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($_ctx + 2052) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($_ctx + 2056) | 0;
$3 = HEAP32[$2 >> 2] | 0;
$4 = ($_ctx + 2060) | 0;
$5 = HEAP32[$4 >> 2] | 0;
$6 = ($5 + 1) | 0;
HEAP32[$4 >> 2] = $6;
$7 = ($6 + $3) | 0;
$a$04 = $1;
$b$05 = $7;
$i$06 = 0;
while (1) {
$8 = ((($_ctx + ($i$06 << 2)) | 0) + 1028) | 0;
$9 = HEAP32[$8 >> 2] | 0;
$10 = $a$04 << 13;
$11 = $10 ^ $a$04;
$12 = ($i$06 + 128) | 0;
$13 = ((($_ctx + ($12 << 2)) | 0) + 1028) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = ($14 + $11) | 0;
$16 = $9 >>> 2;
$17 = $16 & 255;
$18 = ((($_ctx + ($17 << 2)) | 0) + 1028) | 0;
$19 = HEAP32[$18 >> 2] | 0;
$20 = ($15 + $b$05) | 0;
$21 = ($20 + $19) | 0;
HEAP32[$8 >> 2] = $21;
$22 = $21 >>> 10;
$23 = $22 & 255;
$24 = ((($_ctx + ($23 << 2)) | 0) + 1028) | 0;
$25 = HEAP32[$24 >> 2] | 0;
$26 = ($25 + $9) | 0;
$27 = ((($_ctx + ($i$06 << 2)) | 0) + 4) | 0;
HEAP32[$27 >> 2] = $26;
$28 = $i$06 | 1;
$29 = ((($_ctx + ($28 << 2)) | 0) + 1028) | 0;
$30 = HEAP32[$29 >> 2] | 0;
$31 = $15 >>> 6;
$32 = $31 ^ $15;
$33 = ($i$06 + 129) | 0;
$34 = ((($_ctx + ($33 << 2)) | 0) + 1028) | 0;
$35 = HEAP32[$34 >> 2] | 0;
$36 = ($35 + $32) | 0;
$37 = $30 >>> 2;
$38 = $37 & 255;
$39 = ((($_ctx + ($38 << 2)) | 0) + 1028) | 0;
$40 = HEAP32[$39 >> 2] | 0;
$41 = ($36 + $26) | 0;
$42 = ($41 + $40) | 0;
HEAP32[$29 >> 2] = $42;
$43 = $42 >>> 10;
$44 = $43 & 255;
$45 = ((($_ctx + ($44 << 2)) | 0) + 1028) | 0;
$46 = HEAP32[$45 >> 2] | 0;
$47 = ($46 + $30) | 0;
$48 = ((($_ctx + ($28 << 2)) | 0) + 4) | 0;
HEAP32[$48 >> 2] = $47;
$49 = $i$06 | 2;
$50 = ((($_ctx + ($49 << 2)) | 0) + 1028) | 0;
$51 = HEAP32[$50 >> 2] | 0;
$52 = $36 << 2;
$53 = $52 ^ $36;
$54 = ($i$06 + 130) | 0;
$55 = ((($_ctx + ($54 << 2)) | 0) + 1028) | 0;
$56 = HEAP32[$55 >> 2] | 0;
$57 = ($56 + $53) | 0;
$58 = $51 >>> 2;
$59 = $58 & 255;
$60 = ((($_ctx + ($59 << 2)) | 0) + 1028) | 0;
$61 = HEAP32[$60 >> 2] | 0;
$62 = ($57 + $47) | 0;
$63 = ($62 + $61) | 0;
HEAP32[$50 >> 2] = $63;
$64 = $63 >>> 10;
$65 = $64 & 255;
$66 = ((($_ctx + ($65 << 2)) | 0) + 1028) | 0;
$67 = HEAP32[$66 >> 2] | 0;
$68 = ($67 + $51) | 0;
$69 = ((($_ctx + ($49 << 2)) | 0) + 4) | 0;
HEAP32[$69 >> 2] = $68;
$70 = $i$06 | 3;
$71 = ((($_ctx + ($70 << 2)) | 0) + 1028) | 0;
$72 = HEAP32[$71 >> 2] | 0;
$73 = $57 >>> 16;
$74 = $73 ^ $57;
$75 = ($i$06 + 131) | 0;
$76 = ((($_ctx + ($75 << 2)) | 0) + 1028) | 0;
$77 = HEAP32[$76 >> 2] | 0;
$78 = ($77 + $74) | 0;
$79 = $72 >>> 2;
$80 = $79 & 255;
$81 = ((($_ctx + ($80 << 2)) | 0) + 1028) | 0;
$82 = HEAP32[$81 >> 2] | 0;
$83 = ($78 + $68) | 0;
$84 = ($83 + $82) | 0;
HEAP32[$71 >> 2] = $84;
$85 = $84 >>> 10;
$86 = $85 & 255;
$87 = ((($_ctx + ($86 << 2)) | 0) + 1028) | 0;
$88 = HEAP32[$87 >> 2] | 0;
$89 = ($88 + $72) | 0;
$90 = ((($_ctx + ($70 << 2)) | 0) + 4) | 0;
HEAP32[$90 >> 2] = $89;
$91 = ($i$06 + 4) | 0;
$92 = ($91 | 0) < 128;
if ($92) {
$a$04 = $78;
$b$05 = $89;
$i$06 = $91;
} else {
$a$11 = $78;
$b$12 = $89;
$i$13 = 128;
break;
}
}
while (1) {
$93 = ((($_ctx + ($i$13 << 2)) | 0) + 1028) | 0;
$94 = HEAP32[$93 >> 2] | 0;
$95 = $a$11 << 13;
$96 = $95 ^ $a$11;
$97 = ($i$13 + -128) | 0;
$98 = ((($_ctx + ($97 << 2)) | 0) + 1028) | 0;
$99 = HEAP32[$98 >> 2] | 0;
$100 = ($99 + $96) | 0;
$101 = $94 >>> 2;
$102 = $101 & 255;
$103 = ((($_ctx + ($102 << 2)) | 0) + 1028) | 0;
$104 = HEAP32[$103 >> 2] | 0;
$105 = ($100 + $b$12) | 0;
$106 = ($105 + $104) | 0;
HEAP32[$93 >> 2] = $106;
$107 = $106 >>> 10;
$108 = $107 & 255;
$109 = ((($_ctx + ($108 << 2)) | 0) + 1028) | 0;
$110 = HEAP32[$109 >> 2] | 0;
$111 = ($110 + $94) | 0;
$112 = ((($_ctx + ($i$13 << 2)) | 0) + 4) | 0;
HEAP32[$112 >> 2] = $111;
$113 = $i$13 | 1;
$114 = ((($_ctx + ($113 << 2)) | 0) + 1028) | 0;
$115 = HEAP32[$114 >> 2] | 0;
$116 = $100 >>> 6;
$117 = $116 ^ $100;
$118 = ($i$13 + -127) | 0;
$119 = ((($_ctx + ($118 << 2)) | 0) + 1028) | 0;
$120 = HEAP32[$119 >> 2] | 0;
$121 = ($120 + $117) | 0;
$122 = $115 >>> 2;
$123 = $122 & 255;
$124 = ((($_ctx + ($123 << 2)) | 0) + 1028) | 0;
$125 = HEAP32[$124 >> 2] | 0;
$126 = ($121 + $111) | 0;
$127 = ($126 + $125) | 0;
HEAP32[$114 >> 2] = $127;
$128 = $127 >>> 10;
$129 = $128 & 255;
$130 = ((($_ctx + ($129 << 2)) | 0) + 1028) | 0;
$131 = HEAP32[$130 >> 2] | 0;
$132 = ($131 + $115) | 0;
$133 = ((($_ctx + ($113 << 2)) | 0) + 4) | 0;
HEAP32[$133 >> 2] = $132;
$134 = $i$13 | 2;
$135 = ((($_ctx + ($134 << 2)) | 0) + 1028) | 0;
$136 = HEAP32[$135 >> 2] | 0;
$137 = $121 << 2;
$138 = $137 ^ $121;
$139 = ($i$13 + -126) | 0;
$140 = ((($_ctx + ($139 << 2)) | 0) + 1028) | 0;
$141 = HEAP32[$140 >> 2] | 0;
$142 = ($141 + $138) | 0;
$143 = $136 >>> 2;
$144 = $143 & 255;
$145 = ((($_ctx + ($144 << 2)) | 0) + 1028) | 0;
$146 = HEAP32[$145 >> 2] | 0;
$147 = ($142 + $132) | 0;
$148 = ($147 + $146) | 0;
HEAP32[$135 >> 2] = $148;
$149 = $148 >>> 10;
$150 = $149 & 255;
$151 = ((($_ctx + ($150 << 2)) | 0) + 1028) | 0;
$152 = HEAP32[$151 >> 2] | 0;
$153 = ($152 + $136) | 0;
$154 = ((($_ctx + ($134 << 2)) | 0) + 4) | 0;
HEAP32[$154 >> 2] = $153;
$155 = $i$13 | 3;
$156 = ((($_ctx + ($155 << 2)) | 0) + 1028) | 0;
$157 = HEAP32[$156 >> 2] | 0;
$158 = $142 >>> 16;
$159 = $158 ^ $142;
$160 = ($i$13 + -125) | 0;
$161 = ((($_ctx + ($160 << 2)) | 0) + 1028) | 0;
$162 = HEAP32[$161 >> 2] | 0;
$163 = ($162 + $159) | 0;
$164 = $157 >>> 2;
$165 = $164 & 255;
$166 = ((($_ctx + ($165 << 2)) | 0) + 1028) | 0;
$167 = HEAP32[$166 >> 2] | 0;
$168 = ($163 + $153) | 0;
$169 = ($168 + $167) | 0;
HEAP32[$156 >> 2] = $169;
$170 = $169 >>> 10;
$171 = $170 & 255;
$172 = ((($_ctx + ($171 << 2)) | 0) + 1028) | 0;
$173 = HEAP32[$172 >> 2] | 0;
$174 = ($173 + $157) | 0;
$175 = ((($_ctx + ($155 << 2)) | 0) + 4) | 0;
HEAP32[$175 >> 2] = $174;
$176 = ($i$13 + 4) | 0;
$177 = ($176 | 0) < 256;
if ($177) {
$a$11 = $163;
$b$12 = $174;
$i$13 = $176;
} else {
break;
}
}
HEAP32[$2 >> 2] = $174;
HEAP32[$0 >> 2] = $163;
HEAP32[$_ctx >> 2] = 256;
STACKTOP = sp;
return;
}
function _isaac_next_uint($_ctx, $_n) {
$_ctx = $_ctx | 0;
$_n = $_n | 0;
var $$pre = 0,
$$pre$i = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($_n + -1) | 0;
$$pre = HEAP32[$_ctx >> 2] | 0;
$1 = $$pre;
while (1) {
$2 = ($1 | 0) == 0;
if ($2) {
_isaac_update($_ctx);
$$pre$i = HEAP32[$_ctx >> 2] | 0;
$4 = $$pre$i;
} else {
$4 = $1;
}
$3 = ($4 + -1) | 0;
HEAP32[$_ctx >> 2] = $3;
$5 = ((($_ctx + ($3 << 2)) | 0) + 4) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($6 >>> 0) % ($_n >>> 0) & -1;
$8 = ($6 - $7) | 0;
$9 = ($0 + $8) | 0;
$10 = $9 >>> 0 < $8 >>> 0;
if ($10) {
$1 = $3;
} else {
break;
}
}
STACKTOP = sp;
return $7 | 0;
}
function _iconv_open($to, $from) {
$to = $to | 0;
$from = $from | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = _find_charmap($to) | 0;
$1 = ($0 | 0) == -1;
if (!$1) {
$2 = _find_charmap($from) | 0;
$3 = ($2 | 0) == -1;
if (!$3) {
$4 = (8248 + $0) | 0;
$5 = HEAP8[$4 >> 0] | 0;
$6 = ($5 & 255) > 207;
if (!$6) {
$8 = $2 << 16;
$9 = $8 | $0;
$10 = $9;
$$0 = $10;
STACKTOP = sp;
return $$0 | 0;
}
}
}
$7 = ___errno_location() | 0;
HEAP32[$7 >> 2] = 22;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
function _find_charmap($name) {
$name = $name | 0;
var $$0 = 0,
$$0$lcssa$i$ph = 0,
$$010$i = 0,
$$019$i = 0,
$$1$lcssa$i = 0,
$$16$i = 0,
$$ph4 = 0,
$$pre = 0,
$$sum = 0,
$$sum$us = 0,
$$sum1 = 0,
$$sum1$us = 0,
$$sum2 = 0,
$$sum2$us = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0;
var $14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0;
var $32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0;
var $50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0;
var $69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$8 = 0,
$9 = 0,
$or$cond$i = 0,
$phitmp = 0,
$s$0$be = 0,
$s$0$be$us = 0,
$s$06 = 0,
$s$06$us = 0,
$s$1$lcssa = 0,
$s$13 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP8[$name >> 0] | 0;
$1 = ($0 << 24) >> 24 == 0;
L1: do {
if ($1) {
$s$06$us = 8248;
while (1) {
$2 = HEAP8[$s$06$us >> 0] | 0;
$3 = ($2 << 24) >> 24 == 0;
if ($3) {
$s$1$lcssa = $s$06$us;
break L1;
}
$4 = _strlen($s$06$us | 0) | 0;
$5 = ($4 + 1) | 0;
$6 = ($s$06$us + $5) | 0;
$7 = HEAP8[$6 >> 0] | 0;
$8 = ($7 << 24) >> 24 == 0;
do {
if ($8) {
$$sum$us = ($4 + 2) | 0;
$9 = ($s$06$us + $$sum$us) | 0;
$10 = HEAP8[$9 >> 0] | 0;
$11 = ($10 & 255) > 128;
if ($11) {
$$sum2$us = ($4 + 3) | 0;
$18 = ($s$06$us + $$sum2$us) | 0;
$s$0$be$us = $18;
break;
} else {
$12 = $10 & 255;
$13 = (128 - $12) | 0;
$14 = $13 >>> 2;
$15 = ($14 * 5) | 0;
$16 = ($4 + 3) | 0;
$$sum1$us = ($16 + $15) | 0;
$17 = ($s$06$us + $$sum1$us) | 0;
$s$0$be$us = $17;
break;
}
} else {
$s$0$be$us = $6;
}
} while (0);
$19 = HEAP8[$s$0$be$us >> 0] | 0;
$20 = ($19 << 24) >> 24 == 0;
if ($20) {
$$0 = -1;
break;
} else {
$s$06$us = $s$0$be$us;
}
}
STACKTOP = sp;
return $$0 | 0;
} else {
$s$06 = 8248;
while (1) {
$$010$i = $s$06;
$$019$i = $name;
$23 = $0;
while (1) {
$21 = HEAP8[$$010$i >> 0] | 0;
$22 = ($21 << 24) >> 24 == 0;
if ($22) {
$$0$lcssa$i$ph = $$010$i;
$$ph4 = $23;
label = 16;
break;
}
$24 = ($23 << 24) >> 24 == 0;
L17: do {
if ($24) {
$$1$lcssa$i = $$019$i;
$37 = 0;
} else {
$25 = $23 & 255;
$$16$i = $$019$i;
$31 = $25;
$72 = $23;
while (1) {
$30 = $31 | 32;
$32 = ($30 + -97) | 0;
$33 = $32 >>> 0 > 26;
$34 = ($31 + -48) | 0;
$35 = $34 >>> 0 > 10;
$or$cond$i = $33 & $35;
$27 = ($$16$i + 1) | 0;
if (!$or$cond$i) {
$$1$lcssa$i = $$16$i;
$37 = $72;
break L17;
}
$26 = HEAP8[$27 >> 0] | 0;
$28 = $26 & 255;
$29 = ($26 << 24) >> 24 == 0;
if ($29) {
$$1$lcssa$i = $27;
$37 = 0;
break;
} else {
$$16$i = $27;
$31 = $28;
$72 = $26;
}
}
}
} while (0);
$36 = $37 & 255;
$38 = $36 | 32;
$39 = $21 & 255;
$40 = ($38 | 0) == ($39 | 0);
if (!$40) {
break;
}
$41 = ($$1$lcssa$i + 1) | 0;
$42 = ($$010$i + 1) | 0;
$43 = HEAP8[$41 >> 0] | 0;
$44 = ($43 << 24) >> 24 == 0;
if ($44) {
$$0$lcssa$i$ph = $42;
$$ph4 = 0;
label = 16;
break;
} else {
$$010$i = $42;
$$019$i = $41;
$23 = $43;
}
}
if ((label | 0) == 16) {
label = 0;
$45 = HEAP8[$$0$lcssa$i$ph >> 0] | 0;
$46 = ($$ph4 << 24) >> 24 == ($45 << 24) >> 24;
if ($46) {
break;
}
}
$55 = _strlen($s$06 | 0) | 0;
$56 = ($55 + 1) | 0;
$57 = ($s$06 + $56) | 0;
$58 = HEAP8[$57 >> 0] | 0;
$59 = ($58 << 24) >> 24 == 0;
do {
if ($59) {
$$sum = ($55 + 2) | 0;
$60 = ($s$06 + $$sum) | 0;
$61 = HEAP8[$60 >> 0] | 0;
$62 = ($61 & 255) > 128;
if ($62) {
$$sum2 = ($55 + 3) | 0;
$63 = ($s$06 + $$sum2) | 0;
$s$0$be = $63;
break;
} else {
$66 = $61 & 255;
$67 = (128 - $66) | 0;
$68 = $67 >>> 2;
$69 = ($68 * 5) | 0;
$70 = ($55 + 3) | 0;
$$sum1 = ($70 + $69) | 0;
$71 = ($s$06 + $$sum1) | 0;
$s$0$be = $71;
break;
}
} else {
$s$0$be = $57;
}
} while (0);
$64 = HEAP8[$s$0$be >> 0] | 0;
$65 = ($64 << 24) >> 24 == 0;
if ($65) {
$$0 = -1;
label = 25;
break;
} else {
$s$06 = $s$0$be;
}
}
if ((label | 0) == 25) {
STACKTOP = sp;
return $$0 | 0;
}
$$pre = HEAP8[$s$06 >> 0] | 0;
$phitmp = ($$pre << 24) >> 24 == 0;
if ($phitmp) {
$s$1$lcssa = $s$06;
} else {
$s$13 = $s$06;
while (1) {
$47 = _strlen($s$13 | 0) | 0;
$48 = ($47 + 1) | 0;
$49 = ($s$13 + $48) | 0;
$50 = HEAP8[$49 >> 0] | 0;
$51 = ($50 << 24) >> 24 == 0;
if ($51) {
$s$1$lcssa = $49;
break;
} else {
$s$13 = $49;
}
}
}
}
} while (0);
$52 = ($s$1$lcssa + 1) | 0;
$53 = $52;
$54 = ($53 - 8248) | 0;
$$0 = $54;
STACKTOP = sp;
return $$0 | 0;
}
function _iconv_close($cd) {
$cd = $cd | 0;
var label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = sp;
return 0;
}
function _iconv($cd0, $in, $inb, $out, $outb) {
$cd0 = $cd0 | 0;
$in = $in | 0;
$inb = $inb | 0;
$out = $out | 0;
$outb = $outb | 0;
var $$ = 0,
$$0 = 0,
$$13 = 0,
$$14 = 0,
$$18 = 0,
$$21 = 0,
$$c$8 = 0,
$$lobit = 0,
$$mask = 0,
$$pn = 0,
$$sum = 0,
$$sum10 = 0,
$$sum11 = 0,
$$sum12 = 0,
$$sum2425 = 0,
$$sum2627 = 0,
$$sum2930 = 0,
$$sum3132 = 0,
$$sum6 = 0,
$$sum9 = 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0;
var $116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0;
var $134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0;
var $152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0;
var $170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0;
var $189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0;
var $206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0;
var $224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0;
var $242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0;
var $260 = 0,
$261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0;
var $279 = 0,
$28 = 0,
$280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0;
var $297 = 0,
$298 = 0,
$299 = 0,
$3 = 0,
$30 = 0,
$300 = 0,
$301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0,
$306 = 0,
$307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0,
$313 = 0;
var $314 = 0,
$315 = 0,
$316 = 0,
$317 = 0,
$318 = 0,
$319 = 0,
$32 = 0,
$320 = 0,
$321 = 0,
$322 = 0,
$323 = 0,
$324 = 0,
$325 = 0,
$326 = 0,
$327 = 0,
$328 = 0,
$329 = 0,
$33 = 0,
$330 = 0,
$331 = 0;
var $332 = 0,
$333 = 0,
$334 = 0,
$335 = 0,
$336 = 0,
$337 = 0,
$338 = 0,
$339 = 0,
$34 = 0,
$340 = 0,
$341 = 0,
$342 = 0,
$343 = 0,
$344 = 0,
$345 = 0,
$346 = 0,
$347 = 0,
$348 = 0,
$349 = 0,
$35 = 0;
var $350 = 0,
$351 = 0,
$352 = 0,
$353 = 0,
$354 = 0,
$355 = 0,
$356 = 0,
$357 = 0,
$358 = 0,
$359 = 0,
$36 = 0,
$360 = 0,
$361 = 0,
$362 = 0,
$363 = 0,
$364 = 0,
$365 = 0,
$366 = 0,
$367 = 0,
$368 = 0;
var $369 = 0,
$37 = 0,
$370 = 0,
$371 = 0,
$372 = 0,
$373 = 0,
$374 = 0,
$375 = 0,
$376 = 0,
$377 = 0,
$378 = 0,
$379 = 0,
$38 = 0,
$380 = 0,
$381 = 0,
$382 = 0,
$383 = 0,
$384 = 0,
$385 = 0,
$386 = 0;
var $387 = 0,
$388 = 0,
$389 = 0,
$39 = 0,
$390 = 0,
$391 = 0,
$392 = 0,
$393 = 0,
$394 = 0,
$395 = 0,
$396 = 0,
$397 = 0,
$398 = 0,
$399 = 0,
$4 = 0,
$40 = 0,
$400 = 0,
$401 = 0,
$402 = 0,
$403 = 0;
var $404 = 0,
$405 = 0,
$406 = 0,
$407 = 0,
$408 = 0,
$409 = 0,
$41 = 0,
$410 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0;
var $53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0;
var $71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0;
var $9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$brmerge = 0,
$brmerge73 = 0,
$c$0 = 0,
$c$1 = 0,
$c$10 = 0,
$c$1152 = 0,
$c$2 = 0,
$c$347 = 0,
$c$4 = 0;
var $c$5 = 0,
$c$638 = 0,
$c$8 = 0,
$c$9 = 0,
$d$1 = 0,
$d$248 = 0,
$d$5 = 0,
$d$639 = 0,
$err$0 = 0,
$err$0$ph = 0,
$exitcond = 0,
$exitcond61 = 0,
$exitcond62 = 0,
$exitcond63 = 0,
$i$045 = 0,
$i1$037 = 0,
$j$042 = 0,
$j2$034 = 0,
$k$044 = 0,
$k$1$ = 0;
var $k$141 = 0,
$k$3 = 0,
$k$436 = 0,
$k$5$ = 0,
$k$533 = 0,
$k$7 = 0,
$l$0 = 0,
$l$2 = 0,
$l$3 = 0,
$not$ = 0,
$not$28 = 0,
$or$cond = 0,
$or$cond15 = 0,
$or$cond16 = 0,
$or$cond17 = 0,
$or$cond20 = 0,
$or$cond22 = 0,
$or$cond23 = 0,
$or$cond3 = 0,
$st = 0;
var $tmp = 0,
$wc = 0,
$x$058 = 0,
$x$1 = 0,
$x$2 = 0,
$x$3 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 32) | 0;
$st = sp;
$wc = (sp + 16) | 0;
$0 = (sp + 12) | 0;
$1 = (sp + 8) | 0;
$tmp = (sp + 20) | 0;
$2 = $cd0;
$3 = $2 & 65535;
$4 = $2 >>> 16;
$$sum = ($4 + 1) | 0;
$$sum6 = ($3 + 1) | 0;
$5 = $st;
$6 = $5;
HEAP32[$6 >> 2] = 0;
$7 = ($5 + 4) | 0;
$8 = $7;
HEAP32[$8 >> 2] = 0;
$9 = (8248 + $4) | 0;
$10 = HEAP8[$9 >> 0] | 0;
$11 = (8248 + $3) | 0;
$12 = HEAP8[$11 >> 0] | 0;
$13 = ($in | 0) == (0 | 0);
if ($13) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$14 = HEAP32[$in >> 2] | 0;
$15 = ($14 | 0) == (0 | 0);
if ($15) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$16 = HEAP32[$inb >> 2] | 0;
$17 = ($16 | 0) == 0;
if ($17) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$18 = $10 & 255;
$19 = ($18 + 128) | 0;
$20 = ($4 + 2) | 0;
$21 = $18 & 3;
$22 = $21 ^ 1;
$23 = $21 ^ 2;
$24 = $21 ^ 3;
$25 = $18 & 1;
$26 = $25 ^ 1;
$27 = ($18 + -196) | 0;
$28 = $27 >>> 0 < 2;
$$sum2930 = $25 | 2;
$$sum3132 = $26 | 2;
$29 = ($10 << 24) >> 24 == -38;
$30 = ($10 << 24) >> 24 == -40;
$31 = $12 & 255;
$32 = ($31 + -192) | 0;
$33 = $32 >>> 0 > 8;
$34 = $3;
$35 = (86296 + $32) | 0;
$36 = ($31 + 128) | 0;
$37 = (128 - $31) | 0;
$38 = ($12 << 24) >> 24 == -128;
$39 = ($3 + 2) | 0;
$40 = $31 & 1;
$41 = $40 ^ 1;
$$sum2425 = $40 | 2;
$$sum2627 = $41 | 2;
$42 = $31 & 3;
$43 = $42 ^ 1;
$44 = $42 ^ 2;
$45 = $42 ^ 3;
$46 = ($18 + -192) | 0;
$47 = $46 >>> 0 < 7;
$49 = $14;
$52 = $16;
$x$058 = 0;
L10: while (1) {
$48 = HEAP8[$49 >> 0] | 0;
$50 = $48 & 255;
$51 = ($48 << 24) >> 24 < 0;
$brmerge = $51 | $47;
L12: do {
if ($brmerge) {
do {
switch ($18 | 0) {
case 209: {
$106 = ($50 + -161) | 0;
$107 = $106 >>> 0 < 63;
if ($107) {
$108 = ($50 + 65216) | 0;
$c$8 = $108;
$l$2 = 1;
label = 90;
break L12;
}
$109 = $52 >>> 0 < 2;
if ($109) {
$err$0 = 22;
break L10;
}
$110 = ($49 + 1) | 0;
$111 = HEAP8[$110 >> 0] | 0;
$112 = $111 & 255;
$113 = ($50 + -129) | 0;
$114 = $113 >>> 0 < 31;
if ($114) {
$c$1 = $113;
} else {
$115 = ($50 + -224) | 0;
$116 = $115 >>> 0 < 16;
if (!$116) {
$err$0$ph = 84;
label = 115;
break L10;
}
$117 = ($50 + -193) | 0;
$c$1 = $117;
}
$118 = $c$1 << 1;
$119 = ($112 + -64) | 0;
$120 = $119 >>> 0 < 95;
if ($120) {
$121 = ($111 << 24) >> 24 == 127;
if ($121) {
$err$0$ph = 84;
label = 115;
break L10;
}
$$lobit = (($111 << 24) >> 24) >> 7;
$122 = ($$lobit << 24) >> 24;
$123 = ($119 + $122) | 0;
$c$2 = $118;
$d$1 = $123;
} else {
$124 = ($112 + -159) | 0;
$125 = $124 >>> 0 < 94;
$126 = $125 & 1;
$$13 = $118 | $126;
$$14 = $125 ? $124 : $112;
$c$2 = $$13;
$d$1 = $$14;
}
$127 = (((12280 + (($c$2 * 188) | 0)) | 0) + ($d$1 << 1)) | 0;
$128 = HEAP16[$127 >> 1] | 0;
$129 = $128 & 65535;
$130 = ($128 << 16) >> 16 == 0;
if ($130) {
$err$0$ph = 84;
label = 115;
break L10;
} else {
$c$8 = $129;
$l$2 = 2;
label = 90;
break L12;
}
break;
}
case 195:
case 192: {
$57 = $52 >>> 0 < 4;
if ($57) {
$err$0 = 22;
break L10;
}
$58 = ($49 + $21) | 0;
$59 = HEAP8[$58 >> 0] | 0;
$60 = $59 & 255;
$61 = $60 << 24;
$62 = ($49 + $22) | 0;
$63 = HEAP8[$62 >> 0] | 0;
$64 = $63 & 255;
$65 = $64 << 16;
$66 = $65 | $61;
$67 = ($49 + $23) | 0;
$68 = HEAP8[$67 >> 0] | 0;
$69 = $68 & 255;
$70 = $69 << 8;
$71 = $66 | $70;
$72 = ($49 + $24) | 0;
$73 = HEAP8[$72 >> 0] | 0;
$74 = $73 & 255;
$75 = $71 | $74;
$c$0 = $75;
label = 14;
break;
}
case 224: {
$194 = $52 >>> 0 < 2;
if ($194) {
$err$0 = 22;
break L10;
}
$195 = ($49 + 1) | 0;
$196 = HEAP8[$195 >> 0] | 0;
$197 = $196 & 255;
$198 = ($197 + -64) | 0;
$199 = $198 >>> 0 > 190;
$200 = ($197 + -127) | 0;
$201 = $200 >>> 0 < 34;
$or$cond20 = $199 | $201;
if ($or$cond20) {
$err$0$ph = 84;
label = 115;
break L10;
}
$202 = $198 >>> 0 > 62;
$203 = ($197 + -98) | 0;
$$21 = $202 ? $203 : $198;
$204 = ($50 + -161) | 0;
$205 = $204 >>> 0 > 88;
if (!$205) {
$235 = (((86336 + (($204 * 314) | 0)) | 0) + ($$21 << 1)) | 0;
$236 = HEAP16[$235 >> 1] | 0;
$237 = $236 & 65535;
$238 = ($204 | 0) == 39;
if ($238) {
if ((($$21 | 0) == 66) | (($$21 | 0) == 58) | (($$21 | 0) == 60)) {
$240 = 131072;
} else {
$240 = 0;
}
} else {
$240 = 0;
}
$239 = $240 | $237;
$241 = ($239 | 0) == 0;
if ($241) {
$err$0$ph = 84;
label = 115;
break L10;
} else {
$c$8 = $239;
$l$2 = 2;
label = 90;
break L12;
}
}
$206 = ($50 + -135) | 0;
$207 = $206 >>> 0 > 119;
if ($207) {
$err$0$ph = 84;
label = 115;
break L10;
}
$208 = ($48 & 255) < 161;
$209 = ($50 + -224) | 0;
$c$4 = $208 ? $206 : $209;
$210 = ($c$4 * 157) | 0;
$211 = ($$21 + $210) | 0;
$212 = $211 >>> 4;
$213 = ($212 + 4867) | 0;
$214 = (75952 + ($213 << 1)) | 0;
$215 = HEAP16[$214 >> 1] | 0;
$216 = $215 & 65535;
$217 = $211 & 15;
$218 = $216 >>> $217;
$219 = ($218 | 0) % 2 & -1;
$220 = $219 << 17;
$221 = (75952 + ($211 << 1)) | 0;
$222 = HEAP16[$221 >> 1] | 0;
$223 = $222 & 65535;
$224 = $223 | $220;
$$mask = $224 & -65792;
$225 = ($$mask | 0) == 56320;
if (!$225) {
$234 = ($224 | 0) == 0;
if ($234) {
$err$0$ph = 84;
label = 115;
break L10;
} else {
$c$8 = $224;
$l$2 = 2;
label = 90;
break L12;
}
}
if ($33) {
$k$3 = 2;
} else {
$226 = HEAP8[$35 >> 0] | 0;
$227 = ($226 << 24) >> 24;
$k$3 = $227;
}
$228 = HEAP32[$outb >> 2] | 0;
$229 = $k$3 >>> 0 > $228 >>> 0;
if ($229) {
$err$0$ph = 7;
label = 115;
break L10;
}
$230 = $223 & 255;
$231 = (86312 + $230) | 0;
HEAP32[$0 >> 2] = $231;
HEAP32[$1 >> 2] = 4;
$232 = _iconv($34, $0, $1, $out, $outb) | 0;
$233 = ($232 + $x$058) | 0;
$l$3 = 2;
$x$3 = $233;
break L12;
break;
}
case 193:
case 194:
case 197:
case 196: {
$79 = $52 >>> 0 < 2;
if ($79) {
$err$0 = 22;
break L10;
}
$80 = ($49 + $25) | 0;
$81 = HEAP8[$80 >> 0] | 0;
$82 = $81 & 255;
$83 = $82 << 8;
$84 = ($49 + $26) | 0;
$85 = HEAP8[$84 >> 0] | 0;
$86 = $85 & 255;
$87 = $83 | $86;
$88 = ($87 + -56320) | 0;
$89 = $88 >>> 0 < 1024;
if ($89) {
$err$0$ph = 84;
label = 115;
break L10;
}
$90 = ($87 + -55296) | 0;
$91 = $90 >>> 0 < 1024;
if (!$91) {
$c$8 = $87;
$l$2 = 2;
label = 90;
break L12;
}
if ($28) {
$err$0$ph = 84;
label = 115;
break L10;
}
$92 = $52 >>> 0 < 4;
if ($92) {
$err$0 = 22;
break L10;
}
$93 = ($49 + $$sum2930) | 0;
$94 = HEAP8[$93 >> 0] | 0;
$95 = $94 & 255;
$96 = $95 << 8;
$97 = ($49 + $$sum3132) | 0;
$98 = HEAP8[$97 >> 0] | 0;
$99 = $98 & 255;
$100 = $96 | $99;
$101 = ($100 + -56320) | 0;
$102 = $101 >>> 0 > 1023;
if ($102) {
$err$0$ph = 84;
label = 115;
break L10;
}
$103 = $87 << 10;
$104 = ($103 + -56557568) | 0;
$105 = ($104 + $101) | 0;
$c$8 = $105;
$l$2 = 4;
label = 90;
break L12;
break;
}
case 216:
case 217: {
break;
}
case 208: {
$131 = $52 >>> 0 < 2;
if ($131) {
$err$0 = 22;
break L10;
}
$132 = ($49 + 1) | 0;
$133 = HEAP8[$132 >> 0] | 0;
$134 = $133 & 255;
$135 = ($48 << 24) >> 24 == -114;
if ($135) {
$136 = ($134 + -161) | 0;
$137 = $136 >>> 0 > 62;
if ($137) {
$err$0$ph = 84;
label = 115;
break L10;
}
$138 = ($134 + 65216) | 0;
$c$8 = $138;
$l$2 = 2;
label = 90;
break L12;
} else {
$139 = ($50 + -161) | 0;
$140 = ($134 + -161) | 0;
$141 = $139 >>> 0 > 83;
$142 = $140 >>> 0 > 93;
$or$cond15 = $141 | $142;
if ($or$cond15) {
$err$0$ph = 84;
label = 115;
break L10;
}
$143 = (((12280 + (($139 * 188) | 0)) | 0) + ($140 << 1)) | 0;
$144 = HEAP16[$143 >> 1] | 0;
$145 = $144 & 65535;
$146 = ($144 << 16) >> 16 == 0;
if ($146) {
$err$0$ph = 84;
label = 115;
break L10;
} else {
$c$8 = $145;
$l$2 = 2;
label = 90;
break L12;
}
}
break;
}
case 198: {
$55 = $52 >>> 0 < 4;
if ($55) {
$err$0 = 22;
break L10;
}
$56 = HEAP32[$49 >> 2] | 0;
$c$0 = $56;
label = 14;
break;
}
case 232: {
$242 = $52 >>> 0 < 2;
if ($242) {
$err$0 = 22;
break L10;
}
$243 = ($49 + 1) | 0;
$244 = HEAP8[$243 >> 0] | 0;
$245 = $244 & 255;
$246 = ($50 + -161) | 0;
$247 = ($245 + -161) | 0;
$248 = $246 >>> 0 > 92;
$249 = $247 >>> 0 > 93;
$or$cond22 = $248 | $249;
if (!$or$cond22) {
$279 = (((114288 + (($246 * 188) | 0)) | 0) + ($247 << 1)) | 0;
$280 = HEAP16[$279 >> 1] | 0;
$281 = $280 & 65535;
$282 = ($280 << 16) >> 16 == 0;
if ($282) {
$err$0$ph = 84;
label = 115;
break L10;
} else {
$c$8 = $281;
$l$2 = 2;
label = 90;
break L12;
}
}
$250 = ($50 + -129) | 0;
$251 = $250 >>> 0 > 92;
if ($251) {
$err$0$ph = 84;
label = 115;
break L10;
}
$252 = $250 >>> 0 > 68;
$253 = ($244 & 255) > 82;
$or$cond23 = $252 & $253;
if ($or$cond23) {
$err$0$ph = 84;
label = 115;
break L10;
}
$254 = ($245 + -65) | 0;
$255 = $254 >>> 0 < 26;
do {
if ($255) {
$d$5 = $254;
} else {
$256 = ($245 + -97) | 0;
$257 = $256 >>> 0 < 26;
if ($257) {
$258 = ($245 + -71) | 0;
$d$5 = $258;
break;
}
$259 = ($245 + -129) | 0;
$260 = $259 >>> 0 < 126;
if (!$260) {
$err$0$ph = 84;
label = 115;
break L10;
}
$261 = ($245 + -77) | 0;
$d$5 = $261;
}
} while (0);
$262 = $250 >>> 0 < 32;
if ($262) {
$263 = ($250 * 178) | 0;
$$pn = $263;
} else {
$264 = ($246 * 84) | 0;
$265 = ($264 + 5696) | 0;
$$pn = $265;
}
$c$5 = ($d$5 + 44032) | 0;
$266 = ($c$5 + $$pn) | 0;
$267 = $266 >>> 0 < 44032;
if ($267) {
$c$8 = $266;
$l$2 = 2;
label = 90;
break L12;
} else {
$c$638 = $266;
$d$639 = 44032;
}
while (1) {
$268 = ($c$638 - $d$639) | 0;
$i1$037 = 0;
$k$436 = 0;
while (1) {
$j2$034 = 0;
$k$533 = $k$436;
while (1) {
$269 = (((114288 + (($i1$037 * 188) | 0)) | 0) + ($j2$034 << 1)) | 0;
$270 = HEAP16[$269 >> 1] | 0;
$271 = $270 & 65535;
$272 = ($271 - $d$639) | 0;
$not$ = $272 >>> 0 <= $268 >>> 0;
$273 = $not$ & 1;
$k$5$ = ($273 + $k$533) | 0;
$274 = ($j2$034 + 1) | 0;
$exitcond = ($274 | 0) == 94;
if ($exitcond) {
break;
} else {
$j2$034 = $274;
$k$533 = $k$5$;
}
}
$275 = ($i1$037 + 1) | 0;
$exitcond61 = ($275 | 0) == 93;
if ($exitcond61) {
break;
} else {
$i1$037 = $275;
$k$436 = $k$5$;
}
}
$276 = ($c$638 + 1) | 0;
$277 = ($k$5$ + $c$638) | 0;
$278 = $276 >>> 0 > $277 >>> 0;
if ($278) {
$c$8 = $277;
$l$2 = 2;
label = 90;
break L12;
} else {
$c$638 = $277;
$d$639 = $276;
}
}
break;
}
case 218: {
$147 = ($48 & 255) < 161;
if ($147) {
$err$0$ph = 84;
label = 115;
break L10;
}
break;
}
case 199: {
$err$0$ph = 84;
label = 115;
break L10;
break;
}
case 200: {
$53 = _mbrtowc($wc, $49, $52, $st) | 0;
if (($53 | 0) == 0) {
$l$0 = 1;
} else if (($53 | 0) == -1) {
$err$0$ph = 84;
label = 115;
break L10;
} else if (($53 | 0) == -2) {
$err$0 = 22;
break L10;
} else {
$l$0 = $53;
}
$54 = HEAP32[$wc >> 2] | 0;
$c$8 = $54;
$l$2 = $l$0;
label = 90;
break L12;
break;
}
default: {
$283 = $50 >>> 0 < $19 >>> 0;
if ($283) {
$c$8 = $50;
$l$2 = 1;
label = 90;
break L12;
}
$284 = ($50 - $19) | 0;
$285 = ($284 * 5) | 0;
$286 = $285 >>> 2;
$$sum11 = ($286 + $$sum) | 0;
$287 = (8248 + $$sum11) | 0;
$288 = HEAP8[$287 >> 0] | 0;
$289 = $288 & 255;
$290 = $284 << 1;
$291 = $290 & 6;
$292 = $289 >>> $291;
$$sum12 = ($20 + $286) | 0;
$293 = (8248 + $$sum12) | 0;
$294 = HEAP8[$293 >> 0] | 0;
$295 = $294 & 255;
$296 = (8 - $291) | 0;
$297 = $295 << $296;
$298 = $297 & 1023;
$299 = $298 | $292;
$300 = (131776 + ($299 << 1)) | 0;
$301 = HEAP16[$300 >> 1] | 0;
$302 = $301 & 65535;
$303 = ($299 | 0) == 0;
$$ = $303 ? $50 : $302;
$304 = ($$ | 0) == 1;
if ($304) {
$err$0$ph = 84;
label = 115;
break L10;
} else {
$c$8 = $$;
$l$2 = 1;
label = 90;
break L12;
}
}
}
} while (0);
if ((label | 0) == 14) {
label = 0;
$76 = ($c$0 + -55296) | 0;
$77 = $76 >>> 0 < 2048;
$78 = $c$0 >>> 0 > 1114111;
$or$cond = $77 | $78;
if ($or$cond) {
$err$0$ph = 84;
label = 115;
break L10;
} else {
$c$8 = $c$0;
$l$2 = 4;
label = 90;
break;
}
}
$148 = ($50 + -129) | 0;
$149 = $148 >>> 0 > 125;
if ($149) {
$err$0$ph = 84;
label = 115;
break L10;
}
$150 = $52 >>> 0 < 2;
if ($150) {
$err$0 = 22;
break L10;
}
$151 = ($49 + 1) | 0;
$152 = HEAP8[$151 >> 0] | 0;
$153 = $152 & 255;
$154 = ($152 & 255) < 161;
$or$cond16 = $154 & $29;
if ($or$cond16) {
$err$0$ph = 84;
label = 115;
break L10;
}
$155 = ($153 + -64) | 0;
$156 = $155 >>> 0 > 190;
$157 = ($152 << 24) >> 24 == 127;
$or$cond3 = $156 | $157;
if (!$or$cond3) {
$189 = $155 >>> 0 > 63;
$190 = ($153 + -65) | 0;
$$18 = $189 ? $190 : $155;
$191 = (((28072 + (($148 * 380) | 0)) | 0) + ($$18 << 1)) | 0;
$192 = HEAP16[$191 >> 1] | 0;
$193 = $192 & 65535;
$c$8 = $193;
$l$2 = 2;
label = 90;
break;
}
$158 = ($153 + -48) | 0;
$159 = $158 >>> 0 < 10;
$or$cond17 = $159 & $30;
if (!$or$cond17) {
$err$0$ph = 84;
label = 115;
break L10;
}
$160 = $52 >>> 0 < 4;
if ($160) {
$err$0 = 22;
break L10;
}
$161 = ($49 + 2) | 0;
$162 = HEAP8[$161 >> 0] | 0;
$163 = $162 & 255;
$164 = ($163 + -129) | 0;
$165 = $164 >>> 0 > 126;
if ($165) {
$err$0$ph = 84;
label = 115;
break L10;
}
$166 = ($49 + 3) | 0;
$167 = HEAP8[$166 >> 0] | 0;
$168 = $167 & 255;
$169 = ($168 + -48) | 0;
$170 = $169 >>> 0 > 9;
if ($170) {
$err$0$ph = 84;
label = 115;
break L10;
}
$171 = ($148 * 10) | 0;
$172 = ($153 + $171) | 0;
$173 = ($172 * 1260) | 0;
$174 = ($164 * 10) | 0;
$175 = ($173 + -60352) | 0;
$176 = ($175 + $174) | 0;
$177 = ($176 + $169) | 0;
$c$347 = $177;
$d$248 = 0;
while (1) {
$178 = ($c$347 - $d$248) | 0;
$i$045 = 0;
$k$044 = 0;
while (1) {
$j$042 = 0;
$k$141 = $k$044;
while (1) {
$179 = (((28072 + (($i$045 * 380) | 0)) | 0) + ($j$042 << 1)) | 0;
$180 = HEAP16[$179 >> 1] | 0;
$181 = $180 & 65535;
$182 = ($181 - $d$248) | 0;
$not$28 = $182 >>> 0 <= $178 >>> 0;
$183 = $not$28 & 1;
$k$1$ = ($183 + $k$141) | 0;
$184 = ($j$042 + 1) | 0;
$exitcond62 = ($184 | 0) == 190;
if ($exitcond62) {
break;
} else {
$j$042 = $184;
$k$141 = $k$1$;
}
}
$185 = ($i$045 + 1) | 0;
$exitcond63 = ($185 | 0) == 126;
if ($exitcond63) {
break;
} else {
$i$045 = $185;
$k$044 = $k$1$;
}
}
$186 = ($c$347 + 1) | 0;
$187 = ($k$1$ + $c$347) | 0;
$188 = $186 >>> 0 > $187 >>> 0;
if ($188) {
$c$8 = $187;
$l$2 = 4;
label = 90;
break;
} else {
$c$347 = $187;
$d$248 = $186;
}
}
} else {
$c$8 = $50;
$l$2 = 1;
label = 90;
}
} while (0);
L119: do {
if ((label | 0) == 90) {
label = 0;
switch ($31 | 0) {
case 193:
case 194:
case 197:
case 196: {
$355 = $c$8 >>> 0 < 65536;
$brmerge73 = $355 | $28;
if ($brmerge73) {
$356 = $c$8 >>> 0 > 65535;
$$c$8 = $356 ? 65533 : $c$8;
$357 = HEAP32[$outb >> 2] | 0;
$358 = $357 >>> 0 < 2;
if ($358) {
$err$0$ph = 7;
label = 115;
break L10;
}
$359 = HEAP32[$out >> 2] | 0;
$360 = $$c$8 >>> 8;
$361 = $360 & 255;
$362 = ($359 + $40) | 0;
HEAP8[$362 >> 0] = $361;
$363 = $$c$8 & 255;
$364 = ($359 + $41) | 0;
HEAP8[$364 >> 0] = $363;
$365 = ($359 + 2) | 0;
HEAP32[$out >> 2] = $365;
$366 = HEAP32[$outb >> 2] | 0;
$367 = ($366 + -2) | 0;
HEAP32[$outb >> 2] = $367;
$l$3 = $l$2;
$x$3 = $x$058;
break L119;
} else {
$368 = HEAP32[$outb >> 2] | 0;
$369 = $368 >>> 0 < 4;
if ($369) {
$err$0$ph = 7;
label = 115;
break L10;
}
$370 = ($c$8 + -65536) | 0;
$371 = HEAP32[$out >> 2] | 0;
$372 = $370 >>> 10;
$373 = $370 >>> 18;
$374 = $373 | 216;
$375 = $374 & 255;
$376 = ($371 + $40) | 0;
HEAP8[$376 >> 0] = $375;
$377 = $372 & 255;
$378 = ($371 + $41) | 0;
HEAP8[$378 >> 0] = $377;
$379 = $370 >>> 8;
$380 = $379 & 3;
$381 = $380 | 220;
$382 = $381 & 255;
$383 = ($371 + $$sum2425) | 0;
HEAP8[$383 >> 0] = $382;
$384 = $370 & 255;
$385 = ($371 + $$sum2627) | 0;
HEAP8[$385 >> 0] = $384;
$386 = ($371 + 4) | 0;
HEAP32[$out >> 2] = $386;
$387 = HEAP32[$outb >> 2] | 0;
$388 = ($387 + -4) | 0;
HEAP32[$outb >> 2] = $388;
$l$3 = $l$2;
$x$3 = $x$058;
break L119;
}
break;
}
case 195:
case 192: {
$389 = HEAP32[$outb >> 2] | 0;
$390 = $389 >>> 0 < 4;
if ($390) {
$err$0$ph = 7;
label = 115;
break L10;
}
$391 = HEAP32[$out >> 2] | 0;
$392 = $c$8 >>> 24;
$393 = $392 & 255;
$394 = ($391 + $42) | 0;
HEAP8[$394 >> 0] = $393;
$395 = $c$8 >>> 16;
$396 = $395 & 255;
$397 = ($391 + $43) | 0;
HEAP8[$397 >> 0] = $396;
$398 = $c$8 >>> 8;
$399 = $398 & 255;
$400 = ($391 + $44) | 0;
HEAP8[$400 >> 0] = $399;
$401 = $c$8 & 255;
$402 = ($391 + $45) | 0;
HEAP8[$402 >> 0] = $401;
$403 = ($391 + 4) | 0;
HEAP32[$out >> 2] = $403;
$404 = HEAP32[$outb >> 2] | 0;
$405 = ($404 + -4) | 0;
HEAP32[$outb >> 2] = $405;
$l$3 = $l$2;
$x$3 = $x$058;
break L119;
break;
}
case 198: {
$305 = HEAP32[$outb >> 2] | 0;
$306 = $305 >>> 0 < 4;
if ($306) {
$err$0$ph = 7;
label = 115;
break L10;
}
$307 = HEAP32[$out >> 2] | 0;
HEAP32[$307 >> 2] = $c$8;
$308 = ($307 + 4) | 0;
HEAP32[$out >> 2] = $308;
$309 = HEAP32[$outb >> 2] | 0;
$310 = ($309 + -4) | 0;
HEAP32[$outb >> 2] = $310;
$l$3 = $l$2;
$x$3 = $x$058;
break L119;
break;
}
case 200: {
$311 = HEAP32[$outb >> 2] | 0;
$312 = $311 >>> 0 < 4;
if ($312) {
$313 = _wctomb($tmp, $c$8) | 0;
$314 = HEAP32[$outb >> 2] | 0;
$315 = $314 >>> 0 < $313 >>> 0;
if ($315) {
$err$0$ph = 7;
label = 115;
break L10;
}
$316 = HEAP32[$out >> 2] | 0;
_memcpy($316 | 0, $tmp | 0, $313 | 0) | 0;
$320 = $316;
$k$7 = $313;
} else {
$317 = HEAP32[$out >> 2] | 0;
$318 = _wctomb($317, $c$8) | 0;
$320 = $317;
$k$7 = $318;
}
$319 = ($320 + $k$7) | 0;
HEAP32[$out >> 2] = $319;
$321 = HEAP32[$outb >> 2] | 0;
$322 = ($321 - $k$7) | 0;
HEAP32[$outb >> 2] = $322;
$l$3 = $l$2;
$x$3 = $x$058;
break L119;
break;
}
case 199: {
$323 = $c$8 >>> 0 > 127;
if ($323) {
$x$1 = $x$058;
label = 99;
} else {
$c$9 = $c$8;
$x$2 = $x$058;
}
break;
}
default: {
$c$9 = $c$8;
$x$2 = $x$058;
}
}
L139: while (1) {
if ((label | 0) == 99) {
label = 0;
$324 = ($x$1 + 1) | 0;
$c$9 = 42;
$x$2 = $324;
}
$325 = HEAP32[$outb >> 2] | 0;
$326 = ($325 | 0) == 0;
if ($326) {
$err$0$ph = 7;
label = 115;
break L10;
}
$327 = $c$9 >>> 0 < $36 >>> 0;
if ($327) {
$c$10 = $c$9;
break;
}
if ($38) {
$x$1 = $x$2;
label = 99;
continue;
} else {
$c$1152 = 0;
}
while (1) {
$335 = ($c$1152 * 5) | 0;
$336 = $335 >>> 2;
$$sum9 = ($336 + $$sum6) | 0;
$337 = (8248 + $$sum9) | 0;
$338 = HEAP8[$337 >> 0] | 0;
$339 = $338 & 255;
$340 = $c$1152 << 1;
$341 = $340 & 6;
$342 = $339 >>> $341;
$$sum10 = ($39 + $336) | 0;
$343 = (8248 + $$sum10) | 0;
$344 = HEAP8[$343 >> 0] | 0;
$345 = $344 & 255;
$346 = (8 - $341) | 0;
$347 = $345 << $346;
$348 = $347 & 1023;
$349 = $348 | $342;
$350 = (131776 + ($349 << 1)) | 0;
$351 = HEAP16[$350 >> 1] | 0;
$352 = $351 & 65535;
$353 = ($c$9 | 0) == ($352 | 0);
$333 = ($c$1152 + 1) | 0;
if ($353) {
label = 106;
break L139;
}
$334 = $333 >>> 0 < $37 >>> 0;
if ($334) {
$c$1152 = $333;
} else {
$x$1 = $x$2;
label = 99;
continue L139;
}
}
}
if ((label | 0) == 106) {
label = 0;
$354 = ($c$1152 + 128) | 0;
$c$10 = $354;
}
$328 = $c$10 & 255;
$329 = HEAP32[$out >> 2] | 0;
$330 = ($329 + 1) | 0;
HEAP32[$out >> 2] = $330;
HEAP8[$329 >> 0] = $328;
$331 = HEAP32[$outb >> 2] | 0;
$332 = ($331 + -1) | 0;
HEAP32[$outb >> 2] = $332;
$l$3 = $l$2;
$x$3 = $x$2;
}
} while (0);
$406 = HEAP32[$in >> 2] | 0;
$407 = ($406 + $l$3) | 0;
HEAP32[$in >> 2] = $407;
$408 = ($52 - $l$3) | 0;
HEAP32[$inb >> 2] = $408;
$409 = ($52 | 0) == ($l$3 | 0);
if ($409) {
$$0 = $x$3;
label = 117;
break;
} else {
$49 = $407;
$52 = $408;
$x$058 = $x$3;
}
}
if ((label | 0) == 115) {
$err$0 = $err$0$ph;
} else if ((label | 0) == 117) {
STACKTOP = sp;
return $$0 | 0;
}
$410 = ___errno_location() | 0;
HEAP32[$410 >> 2] = $err$0;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
function _mbrtowc($wc, $src, $n, $st) {
$wc = $wc | 0;
$src = $src | 0;
$n = $n | 0;
$st = $st | 0;
var $$0 = 0,
$$01 = 0,
$$02 = 0,
$$1 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0;
var $23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0;
var $41 = 0,
$42 = 0,
$43 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$c$0 = 0,
$c$1 = 0,
$c$2 = 0,
$s$0 = 0,
$s$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$0 = sp;
HEAP32[$0 >> 2] = $wc;
$1 = ($st | 0) == (0 | 0);
$$01 = $1 ? 133232 : $st;
$2 = HEAP32[$$01 >> 2] | 0;
$3 = ($src | 0) == (0 | 0);
L1: do {
if ($3) {
$4 = ($2 | 0) == 0;
if ($4) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
} else {
$5 = ($wc | 0) == (0 | 0);
if ($5) {
HEAP32[$0 >> 2] = $0;
$11 = $0;
} else {
$11 = $wc;
}
$6 = ($n | 0) == 0;
if ($6) {
$$0 = -2;
STACKTOP = sp;
return $$0 | 0;
}
$7 = ($2 | 0) == 0;
do {
if ($7) {
$8 = HEAP8[$src >> 0] | 0;
$9 = $8 & 255;
$10 = ($8 << 24) >> 24 > -1;
if ($10) {
HEAP32[$11 >> 2] = $9;
$12 = ($8 << 24) >> 24 != 0;
$13 = $12 & 1;
$$0 = $13;
STACKTOP = sp;
return $$0 | 0;
} else {
$14 = ($9 + -194) | 0;
$15 = $14 >>> 0 > 50;
if ($15) {
break L1;
}
$16 = ($src + 1) | 0;
$17 = (133024 + ($14 << 2)) | 0;
$18 = HEAP32[$17 >> 2] | 0;
$19 = ($n + -1) | 0;
$$02 = $19;
$c$0 = $18;
$s$0 = $16;
break;
}
} else {
$$02 = $n;
$c$0 = $2;
$s$0 = $src;
}
} while (0);
$20 = ($$02 | 0) == 0;
L17: do {
if ($20) {
$c$2 = $c$0;
} else {
$21 = HEAP8[$s$0 >> 0] | 0;
$22 = $21 & 255;
$23 = $22 >>> 3;
$24 = ($23 + -16) | 0;
$25 = $c$0 >> 26;
$26 = ($23 + $25) | 0;
$27 = $24 | $26;
$28 = $27 >>> 0 > 7;
if ($28) {
break L1;
} else {
$$1 = $$02;
$32 = $21;
$c$1 = $c$0;
$s$1 = $s$0;
}
while (1) {
$29 = $c$1 << 6;
$30 = ($s$1 + 1) | 0;
$31 = $32 & 255;
$33 = ($31 + -128) | 0;
$34 = $33 | $29;
$35 = ($$1 + -1) | 0;
$36 = ($34 | 0) < 0;
if (!$36) {
break;
}
$38 = ($35 | 0) == 0;
if ($38) {
$c$2 = $34;
break L17;
}
$39 = HEAP8[$30 >> 0] | 0;
$40 = $39 & 255;
$41 = ($40 + -128) | 0;
$42 = $41 >>> 0 > 63;
if ($42) {
break L1;
} else {
$$1 = $35;
$32 = $39;
$c$1 = $34;
$s$1 = $30;
}
}
HEAP32[$$01 >> 2] = 0;
HEAP32[$11 >> 2] = $34;
$37 = ($n - $35) | 0;
$$0 = $37;
STACKTOP = sp;
return $$0 | 0;
}
} while (0);
HEAP32[$$01 >> 2] = $c$2;
$$0 = -2;
STACKTOP = sp;
return $$0 | 0;
}
} while (0);
HEAP32[$$01 >> 2] = 0;
$43 = ___errno_location() | 0;
HEAP32[$43 >> 2] = 84;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
function _qsort($base, $nel, $width, $cmp) {
$base = $base | 0;
$nel = $nel | 0;
$width = $width | 0;
$cmp = $cmp | 0;
var $$ = 0,
$$$i = 0,
$$0$be$i = 0,
$$0$be$i20 = 0,
$$0$i50 = 0,
$$01$be$i = 0,
$$01$be$i19 = 0,
$$01$i5$i = 0,
$$012$i = 0,
$$012$i16 = 0,
$$02$i$i = 0,
$$02$i3$i = 0,
$$02$i3469 = 0,
$$02$i72 = 0,
$$02$us$i = 0,
$$02$us$i32 = 0,
$$03$i = 0,
$$03$i15 = 0,
$$66 = 0,
$$67 = 0;
var $$lcssa75 = 0,
$$lcssa76 = 0,
$$pre = 0,
$$pre$i = 0,
$$pre$i22 = 0,
$$pre$i28 = 0,
$$pre$i9 = 0,
$$sum = 0,
$$sum$i = 0,
$$sum$i18 = 0,
$$sum2 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0;
var $106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0;
var $124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0;
var $142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0,
$152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0;
var $160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0,
$170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0;
var $179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0;
var $32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$4$phi = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0;
var $5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0;
var $68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0;
var $86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$ar$i = 0,
$exitcond$i = 0,
$exitcond$i31 = 0,
$head$0$lcssa = 0,
$head$077 = 0;
var $head$1 = 0,
$i$0 = 0,
$i$0$lcssa$i = 0,
$i$0$lcssa$i24 = 0,
$i$01$us$i = 0,
$i$01$us$i30 = 0,
$i$04$i = 0,
$i$04$i14 = 0,
$lp = 0,
$nTrailingZeros$03$i$i = 0,
$nTrailingZeros$03$i2$i = 0,
$pshift$0$lcssa = 0,
$pshift$078 = 0,
$pshift$1 = 0,
$pshift$2 = 0,
$sum = 0,
$sum$i = 0,
$sum$i17 = 0,
$tmp$i = 0,
$tmp$i26 = 0;
var label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 944) | 0;
$tmp$i26 = (sp + 680) | 0;
$tmp$i = (sp + 424) | 0;
$ar$i = (sp + 192) | 0;
$lp = sp;
$0 = Math_imul($width, $nel) | 0;
$1 = ($0 | 0) == 0;
if ($1) {
STACKTOP = sp;
return;
}
$$sum = ($0 - $width) | 0;
$2 = ($lp + 4) | 0;
HEAP32[$2 >> 2] = $width;
HEAP32[$lp >> 2] = $width;
$4 = $width;
$6 = $width;
$i$0 = 2;
while (1) {
$3 = ($4 + $width) | 0;
$5 = ($3 + $6) | 0;
$7 = ($lp + ($i$0 << 2)) | 0;
HEAP32[$7 >> 2] = $5;
$8 = $5 >>> 0 < $0 >>> 0;
$9 = ($i$0 + 1) | 0;
if ($8) {
$4$phi = $6;
$6 = $5;
$i$0 = $9;
$4 = $4$phi;
} else {
break;
}
}
$10 = (0 - $width) | 0;
$11 = ($base + $$sum) | 0;
$12 = ($$sum | 0) > 0;
if ($12) {
$13 = ($width | 0) == 0;
$14 = $width >>> 0 > 256;
$15 = $14 ? 256 : $width;
$16 = ($15 | 0) == ($width | 0);
$17 = $11;
$19 = 1;
$61 = 0;
$head$077 = $base;
$pshift$078 = 1;
while (1) {
$18 = $19 & 3;
$20 = ($18 | 0) == 3;
do {
if ($20) {
HEAP32[$ar$i >> 2] = $head$077;
$21 = ($pshift$078 | 0) > 1;
L44: do {
if ($21) {
$$012$i = $pshift$078;
$$03$i = $head$077;
$27 = $head$077;
$i$04$i = 1;
while (1) {
$22 = ($$03$i + $10) | 0;
$23 = ($$012$i + -2) | 0;
$24 = ($lp + ($23 << 2)) | 0;
$25 = HEAP32[$24 >> 2] | 0;
$sum$i = ($25 + $width) | 0;
$$sum$i = (0 - $sum$i) | 0;
$26 = ($$03$i + $$sum$i) | 0;
$28 = FUNCTION_TABLE_iii[$cmp & 7]($27, $26) | 0;
$29 = ($28 | 0) > -1;
if ($29) {
$30 = FUNCTION_TABLE_iii[$cmp & 7]($27, $22) | 0;
$31 = ($30 | 0) > -1;
if ($31) {
$i$0$lcssa$i = $i$04$i;
break;
}
}
$32 = FUNCTION_TABLE_iii[$cmp & 7]($26, $22) | 0;
$33 = ($32 | 0) > -1;
$34 = ($i$04$i + 1) | 0;
$35 = ($ar$i + ($i$04$i << 2)) | 0;
if ($33) {
HEAP32[$35 >> 2] = $26;
$36 = ($$012$i + -1) | 0;
$$0$be$i = $26;
$$01$be$i = $36;
} else {
HEAP32[$35 >> 2] = $22;
$$0$be$i = $22;
$$01$be$i = $23;
}
$37 = ($$01$be$i | 0) > 1;
if (!$37) {
$i$0$lcssa$i = $34;
break;
}
$$pre$i = HEAP32[$ar$i >> 2] | 0;
$$012$i = $$01$be$i;
$$03$i = $$0$be$i;
$27 = $$pre$i;
$i$04$i = $34;
}
$38 = ($i$0$lcssa$i | 0) < 2;
if (!$38) {
$39 = ($ar$i + ($i$0$lcssa$i << 2)) | 0;
HEAP32[$39 >> 2] = $tmp$i;
if (!$13) {
$40 = ($i$0$lcssa$i | 0) > 0;
if ($40) {
$$02$us$i = $width;
$53 = $tmp$i;
} else {
$41 = HEAP32[$ar$i >> 2] | 0;
_memcpy($tmp$i | 0, $41 | 0, $15 | 0) | 0;
if ($16) {
break;
} else {
$$02$i72 = $width;
$55 = $15;
}
while (1) {
$54 = ($$02$i72 - $55) | 0;
$56 = $54 >>> 0 > 256;
$57 = $56 ? 256 : $54;
_memcpy($tmp$i | 0, $41 | 0, $57 | 0) | 0;
$58 = ($54 | 0) == ($57 | 0);
if ($58) {
break L44;
} else {
$$02$i72 = $54;
$55 = $57;
}
}
}
while (1) {
$51 = $$02$us$i >>> 0 > 256;
$43 = $51 ? 256 : $$02$us$i;
$52 = HEAP32[$ar$i >> 2] | 0;
_memcpy($53 | 0, $52 | 0, $43 | 0) | 0;
$49 = $52;
$i$01$us$i = 0;
while (1) {
$45 = ($ar$i + ($i$01$us$i << 2)) | 0;
$46 = ($i$01$us$i + 1) | 0;
$47 = ($ar$i + ($46 << 2)) | 0;
$48 = HEAP32[$47 >> 2] | 0;
_memcpy($49 | 0, $48 | 0, $43 | 0) | 0;
$50 = ($49 + $43) | 0;
HEAP32[$45 >> 2] = $50;
$exitcond$i = ($46 | 0) == ($i$0$lcssa$i | 0);
if ($exitcond$i) {
break;
} else {
$49 = $48;
$i$01$us$i = $46;
}
}
$42 = ($$02$us$i | 0) == ($43 | 0);
if ($42) {
break L44;
}
$44 = ($$02$us$i - $43) | 0;
$$pre$i9 = HEAP32[$39 >> 2] | 0;
$$02$us$i = $44;
$53 = $$pre$i9;
}
}
}
}
} while (0);
$59 = $19 >>> 2;
$60 = $61 << 30;
$62 = $59 | $60;
$63 = $61 >>> 2;
$64 = ($pshift$078 + 2) | 0;
$122 = $62;
$182 = $63;
$pshift$1 = $64;
} else {
$65 = ($pshift$078 + -1) | 0;
$66 = ($lp + ($65 << 2)) | 0;
$67 = HEAP32[$66 >> 2] | 0;
$68 = $head$077;
$69 = ($17 - $68) | 0;
$70 = $67 >>> 0 < $69 >>> 0;
L13: do {
if ($70) {
HEAP32[$ar$i >> 2] = $head$077;
$71 = ($pshift$078 | 0) > 1;
if ($71) {
$$012$i16 = $pshift$078;
$$03$i15 = $head$077;
$77 = $head$077;
$i$04$i14 = 1;
while (1) {
$72 = ($$03$i15 + $10) | 0;
$73 = ($$012$i16 + -2) | 0;
$74 = ($lp + ($73 << 2)) | 0;
$75 = HEAP32[$74 >> 2] | 0;
$sum$i17 = ($75 + $width) | 0;
$$sum$i18 = (0 - $sum$i17) | 0;
$76 = ($$03$i15 + $$sum$i18) | 0;
$78 = FUNCTION_TABLE_iii[$cmp & 7]($77, $76) | 0;
$79 = ($78 | 0) > -1;
if ($79) {
$80 = FUNCTION_TABLE_iii[$cmp & 7]($77, $72) | 0;
$81 = ($80 | 0) > -1;
if ($81) {
$i$0$lcssa$i24 = $i$04$i14;
break;
}
}
$82 = FUNCTION_TABLE_iii[$cmp & 7]($76, $72) | 0;
$83 = ($82 | 0) > -1;
$84 = ($i$04$i14 + 1) | 0;
$85 = ($ar$i + ($i$04$i14 << 2)) | 0;
if ($83) {
HEAP32[$85 >> 2] = $76;
$86 = ($$012$i16 + -1) | 0;
$$0$be$i20 = $76;
$$01$be$i19 = $86;
} else {
HEAP32[$85 >> 2] = $72;
$$0$be$i20 = $72;
$$01$be$i19 = $73;
}
$87 = ($$01$be$i19 | 0) > 1;
if (!$87) {
$i$0$lcssa$i24 = $84;
break;
}
$$pre$i22 = HEAP32[$ar$i >> 2] | 0;
$$012$i16 = $$01$be$i19;
$$03$i15 = $$0$be$i20;
$77 = $$pre$i22;
$i$04$i14 = $84;
}
$88 = ($i$0$lcssa$i24 | 0) < 2;
if (!$88) {
$89 = ($ar$i + ($i$0$lcssa$i24 << 2)) | 0;
HEAP32[$89 >> 2] = $tmp$i26;
if (!$13) {
$90 = ($i$0$lcssa$i24 | 0) > 0;
if ($90) {
$$02$us$i32 = $width;
$103 = $tmp$i26;
} else {
$91 = HEAP32[$ar$i >> 2] | 0;
_memcpy($tmp$i26 | 0, $91 | 0, $15 | 0) | 0;
if ($16) {
break;
} else {
$$02$i3469 = $width;
$105 = $15;
}
while (1) {
$104 = ($$02$i3469 - $105) | 0;
$106 = $104 >>> 0 > 256;
$107 = $106 ? 256 : $104;
_memcpy($tmp$i26 | 0, $91 | 0, $107 | 0) | 0;
$108 = ($104 | 0) == ($107 | 0);
if ($108) {
break L13;
} else {
$$02$i3469 = $104;
$105 = $107;
}
}
}
while (1) {
$101 = $$02$us$i32 >>> 0 > 256;
$93 = $101 ? 256 : $$02$us$i32;
$102 = HEAP32[$ar$i >> 2] | 0;
_memcpy($103 | 0, $102 | 0, $93 | 0) | 0;
$99 = $102;
$i$01$us$i30 = 0;
while (1) {
$95 = ($ar$i + ($i$01$us$i30 << 2)) | 0;
$96 = ($i$01$us$i30 + 1) | 0;
$97 = ($ar$i + ($96 << 2)) | 0;
$98 = HEAP32[$97 >> 2] | 0;
_memcpy($99 | 0, $98 | 0, $93 | 0) | 0;
$100 = ($99 + $93) | 0;
HEAP32[$95 >> 2] = $100;
$exitcond$i31 = ($96 | 0) == ($i$0$lcssa$i24 | 0);
if ($exitcond$i31) {
break;
} else {
$99 = $98;
$i$01$us$i30 = $96;
}
}
$92 = ($$02$us$i32 | 0) == ($93 | 0);
if ($92) {
break L13;
}
$94 = ($$02$us$i32 - $93) | 0;
$$pre$i28 = HEAP32[$89 >> 2] | 0;
$$02$us$i32 = $94;
$103 = $$pre$i28;
}
}
}
}
} else {
_trinkle($head$077, $width, $cmp, $19, $61, $pshift$078, 0, $lp);
}
} while (0);
$109 = ($pshift$078 | 0) == 1;
if ($109) {
$110 = $61 << 1;
$111 = $19 >>> 31;
$112 = $111 | $110;
$113 = $19 << 1;
$122 = $113;
$182 = $112;
$pshift$1 = 0;
break;
} else {
$114 = $65 >>> 0 > 31;
$115 = ($pshift$078 + -33) | 0;
$$ = $114 ? 0 : $19;
$$66 = $114 ? $19 : $61;
$$67 = $114 ? $115 : $65;
$116 = $$66 << $$67;
$117 = (32 - $$67) | 0;
$118 = $$ >>> $117;
$119 = $118 | $116;
$120 = $$ << $$67;
$122 = $120;
$182 = $119;
$pshift$1 = 1;
break;
}
}
} while (0);
$121 = $122 | 1;
$123 = ($head$077 + $width) | 0;
$124 = $123 >>> 0 < $11 >>> 0;
if ($124) {
$19 = $121;
$61 = $182;
$head$077 = $123;
$pshift$078 = $pshift$1;
} else {
$$lcssa75 = $182;
$$lcssa76 = $121;
$head$0$lcssa = $123;
$pshift$0$lcssa = $pshift$1;
break;
}
}
} else {
$$lcssa75 = 0;
$$lcssa76 = 1;
$head$0$lcssa = $base;
$pshift$0$lcssa = 1;
}
_trinkle($head$0$lcssa, $width, $cmp, $$lcssa76, $$lcssa75, $pshift$0$lcssa, 0, $lp);
$126 = $$lcssa76;
$128 = $$lcssa75;
$head$1 = $head$0$lcssa;
$pshift$2 = $pshift$0$lcssa;
while (1) {
$125 = ($pshift$2 | 0) == 1;
if ($125) {
$127 = ($126 | 0) == 1;
if ($127) {
$129 = ($128 | 0) == 0;
if ($129) {
break;
} else {
label = 52;
}
}
} else {
label = 52;
}
if ((label | 0) == 52) {
label = 0;
$130 = ($pshift$2 | 0) < 2;
if (!$130) {
$162 = $128 << 2;
$163 = $126 >>> 30;
$164 = $163 | $162;
$165 = ($pshift$2 + -2) | 0;
$166 = $126 << 1;
$167 = $166 & 2147483646;
$168 = $163 << 31;
$169 = $167 | $168;
$170 = $169 ^ 3;
$171 = $164 >>> 1;
$172 = ($lp + ($165 << 2)) | 0;
$173 = HEAP32[$172 >> 2] | 0;
$sum = ($173 + $width) | 0;
$$sum2 = (0 - $sum) | 0;
$174 = ($head$1 + $$sum2) | 0;
$175 = ($pshift$2 + -1) | 0;
_trinkle($174, $width, $cmp, $170, $171, $175, 1, $lp);
$176 = $171 << 1;
$177 = $163 & 1;
$178 = $176 | $177;
$179 = $170 << 1;
$180 = $179 | 1;
$181 = ($head$1 + $10) | 0;
_trinkle($181, $width, $cmp, $180, $178, $165, 1, $lp);
$126 = $180;
$128 = $178;
$head$1 = $181;
$pshift$2 = $165;
continue;
}
}
$131 = ($126 + -1) | 0;
$132 = ($131 | 0) == 0;
if ($132) {
$152 = 32;
label = 62;
} else {
$133 = $131 & 1;
$134 = ($133 | 0) == 0;
if ($134) {
$$02$i$i = $131;
$nTrailingZeros$03$i$i = 0;
while (1) {
$135 = ($nTrailingZeros$03$i$i + 1) | 0;
$136 = $$02$i$i >>> 1;
$137 = $136 & 1;
$138 = ($137 | 0) == 0;
if ($138) {
$$02$i$i = $136;
$nTrailingZeros$03$i$i = $135;
} else {
break;
}
}
$139 = ($135 | 0) == 0;
if ($139) {
label = 57;
} else {
$149 = $135;
}
} else {
label = 57;
}
if ((label | 0) == 57) {
label = 0;
$140 = ($128 | 0) == 0;
if ($140) {
$$01$i5$i = 32;
} else {
$141 = $128 & 1;
$142 = ($141 | 0) == 0;
if ($142) {
$$02$i3$i = $128;
$nTrailingZeros$03$i2$i = 0;
while (1) {
$143 = ($nTrailingZeros$03$i2$i + 1) | 0;
$144 = $$02$i3$i >>> 1;
$145 = $144 & 1;
$146 = ($145 | 0) == 0;
if ($146) {
$$02$i3$i = $144;
$nTrailingZeros$03$i2$i = $143;
} else {
$$01$i5$i = $143;
break;
}
}
} else {
$$01$i5$i = 0;
}
}
$147 = ($$01$i5$i + 32) | 0;
$148 = ($$01$i5$i | 0) == 0;
$$$i = $148 ? 0 : $147;
$149 = $$$i;
}
$150 = $149 >>> 0 > 31;
if ($150) {
$152 = $149;
label = 62;
} else {
$$0$i50 = $149;
$154 = $126;
$157 = $128;
$161 = $149;
}
}
if ((label | 0) == 62) {
label = 0;
$151 = ($152 + -32) | 0;
$$0$i50 = $151;
$154 = $128;
$157 = 0;
$161 = $152;
}
$153 = $154 >>> $$0$i50;
$155 = (32 - $$0$i50) | 0;
$156 = $157 << $155;
$158 = $156 | $153;
$159 = $157 >>> $$0$i50;
$160 = ($161 + $pshift$2) | 0;
$$pre = ($head$1 + $10) | 0;
$126 = $158;
$128 = $159;
$head$1 = $$pre;
$pshift$2 = $160;
}
STACKTOP = sp;
return;
}
function _trinkle($head, $width, $cmp, $pp$val, $pp$1$val, $pshift, $trusty, $lp) {
$head = $head | 0;
$width = $width | 0;
$cmp = $cmp | 0;
$pp$val = $pp$val | 0;
$pp$1$val = $pp$1$val | 0;
$pshift = $pshift | 0;
$trusty = $trusty | 0;
$lp = $lp | 0;
var $$$i = 0,
$$0$be$i = 0,
$$0$i = 0,
$$0$lcssa = 0,
$$0$lcssa26 = 0,
$$01$be$i = 0,
$$01$i5$i = 0,
$$01$lcssa = 0,
$$01$lcssa28 = 0,
$$0110 = 0,
$$012 = 0,
$$012$i = 0,
$$02$i$i = 0,
$$02$i146 = 0,
$$02$i3 = 0,
$$02$i3$i = 0,
$$02$lcssa = 0,
$$02$us$i = 0,
$$02$us$i12 = 0,
$$029 = 0;
var $$03$i = 0,
$$pre = 0,
$$pre$i = 0,
$$pre$i3 = 0,
$$pre$i8 = 0,
$$sum = 0,
$$sum$i = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0;
var $11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$13 = 0;
var $14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0;
var $32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0;
var $50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0;
var $69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0;
var $87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$ar = 0,
$ar$i = 0,
$exitcond$i = 0,
$exitcond$i11 = 0,
$i$0$lcssa = 0,
$i$0$lcssa$i = 0;
var $i$0$lcssa27 = 0,
$i$01$us$i = 0,
$i$01$us$i10 = 0,
$i$011 = 0,
$i$04$i = 0,
$nTrailingZeros$03$i$i = 0,
$nTrailingZeros$03$i2$i = 0,
$or$cond = 0,
$or$cond1 = 0,
$or$cond18 = 0,
$sum = 0,
$sum$i = 0,
$tmp$i6 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 720) | 0;
$tmp$i6 = (sp + 456) | 0;
$ar$i = (sp + 228) | 0;
$ar = sp;
HEAP32[$ar >> 2] = $head;
$0 = (0 - $width) | 0;
$1 = ($pp$val | 0) == 1;
$2 = ($pp$1$val | 0) == 0;
$or$cond18 = $1 & $2;
L1: do {
if ($or$cond18) {
$$0$lcssa = $head;
$$01$lcssa = $pshift;
$$02$lcssa = $trusty;
$i$0$lcssa = 1;
label = 18;
} else {
$$0110 = $pshift;
$$012 = $head;
$$029 = $trusty;
$24 = $pp$val;
$33 = $pp$1$val;
$7 = $head;
$i$011 = 1;
while (1) {
$3 = ($lp + ($$0110 << 2)) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = (0 - $4) | 0;
$6 = ($$012 + $5) | 0;
$8 = FUNCTION_TABLE_iii[$cmp & 7]($6, $7) | 0;
$9 = ($8 | 0) < 1;
if ($9) {
$$0$lcssa = $$012;
$$01$lcssa = $$0110;
$$02$lcssa = $$029;
$i$0$lcssa = $i$011;
label = 18;
break L1;
}
$10 = ($$029 | 0) == 0;
$11 = ($$0110 | 0) > 1;
$or$cond = $10 & $11;
if ($or$cond) {
$12 = ($$012 + $0) | 0;
$13 = ($$0110 + -2) | 0;
$14 = ($lp + ($13 << 2)) | 0;
$15 = HEAP32[$14 >> 2] | 0;
$16 = FUNCTION_TABLE_iii[$cmp & 7]($12, $6) | 0;
$17 = ($16 | 0) > -1;
if ($17) {
$$0$lcssa26 = $$012;
$$01$lcssa28 = $$0110;
$i$0$lcssa27 = $i$011;
break L1;
}
$sum = ($15 + $width) | 0;
$$sum = (0 - $sum) | 0;
$18 = ($$012 + $$sum) | 0;
$19 = FUNCTION_TABLE_iii[$cmp & 7]($18, $6) | 0;
$20 = ($19 | 0) > -1;
if ($20) {
$$0$lcssa26 = $$012;
$$01$lcssa28 = $$0110;
$i$0$lcssa27 = $i$011;
break L1;
}
}
$21 = ($i$011 + 1) | 0;
$22 = ($ar + ($i$011 << 2)) | 0;
HEAP32[$22 >> 2] = $6;
$23 = ($24 + -1) | 0;
$25 = ($23 | 0) == 0;
if ($25) {
$46 = 32;
label = 15;
} else {
$26 = $23 & 1;
$27 = ($26 | 0) == 0;
if ($27) {
$$02$i$i = $23;
$nTrailingZeros$03$i$i = 0;
while (1) {
$28 = ($nTrailingZeros$03$i$i + 1) | 0;
$29 = $$02$i$i >>> 1;
$30 = $29 & 1;
$31 = ($30 | 0) == 0;
if ($31) {
$$02$i$i = $29;
$nTrailingZeros$03$i$i = $28;
} else {
break;
}
}
$32 = ($28 | 0) == 0;
if ($32) {
label = 10;
} else {
$43 = $28;
}
} else {
label = 10;
}
if ((label | 0) == 10) {
label = 0;
$34 = ($33 | 0) == 0;
if ($34) {
$$01$i5$i = 32;
} else {
$35 = $33 & 1;
$36 = ($35 | 0) == 0;
if ($36) {
$$02$i3$i = $33;
$nTrailingZeros$03$i2$i = 0;
while (1) {
$37 = ($nTrailingZeros$03$i2$i + 1) | 0;
$38 = $$02$i3$i >>> 1;
$39 = $38 & 1;
$40 = ($39 | 0) == 0;
if ($40) {
$$02$i3$i = $38;
$nTrailingZeros$03$i2$i = $37;
} else {
$$01$i5$i = $37;
break;
}
}
} else {
$$01$i5$i = 0;
}
}
$41 = ($$01$i5$i + 32) | 0;
$42 = ($$01$i5$i | 0) == 0;
$$$i = $42 ? 0 : $41;
$43 = $$$i;
}
$44 = $43 >>> 0 > 31;
if ($44) {
$46 = $43;
label = 15;
} else {
$$0$i = $43;
$48 = $24;
$51 = $33;
$55 = $43;
}
}
if ((label | 0) == 15) {
label = 0;
$45 = ($46 + -32) | 0;
$$0$i = $45;
$48 = $33;
$51 = 0;
$55 = $46;
}
$47 = $48 >>> $$0$i;
$49 = (32 - $$0$i) | 0;
$50 = $51 << $49;
$52 = $50 | $47;
$53 = $51 >>> $$0$i;
$54 = ($55 + $$0110) | 0;
$56 = ($52 | 0) == 1;
$57 = ($53 | 0) == 0;
$or$cond1 = $56 & $57;
if ($or$cond1) {
$$0$lcssa26 = $6;
$$01$lcssa28 = $54;
$i$0$lcssa27 = $21;
break L1;
}
$$pre = HEAP32[$ar >> 2] | 0;
$$0110 = $54;
$$012 = $6;
$$029 = 0;
$24 = $52;
$33 = $53;
$7 = $$pre;
$i$011 = $21;
}
}
} while (0);
if ((label | 0) == 18) {
$58 = ($$02$lcssa | 0) == 0;
if ($58) {
$$0$lcssa26 = $$0$lcssa;
$$01$lcssa28 = $$01$lcssa;
$i$0$lcssa27 = $i$0$lcssa;
} else {
STACKTOP = sp;
return;
}
}
$59 = ($i$0$lcssa27 | 0) < 2;
L31: do {
if (!$59) {
$60 = ($ar + ($i$0$lcssa27 << 2)) | 0;
HEAP32[$60 >> 2] = $tmp$i6;
$61 = ($width | 0) == 0;
if (!$61) {
$62 = ($i$0$lcssa27 | 0) > 0;
if ($62) {
$$02$us$i12 = $width;
$78 = $tmp$i6;
} else {
$63 = $width >>> 0 > 256;
$64 = $63 ? 256 : $width;
$65 = HEAP32[$ar >> 2] | 0;
_memcpy($tmp$i6 | 0, $65 | 0, $64 | 0) | 0;
$66 = ($64 | 0) == ($width | 0);
if ($66) {
break;
} else {
$$02$i146 = $width;
$80 = $64;
}
while (1) {
$79 = ($$02$i146 - $80) | 0;
$81 = $79 >>> 0 > 256;
$82 = $81 ? 256 : $79;
_memcpy($tmp$i6 | 0, $65 | 0, $82 | 0) | 0;
$83 = ($79 | 0) == ($82 | 0);
if ($83) {
break L31;
} else {
$$02$i146 = $79;
$80 = $82;
}
}
}
while (1) {
$76 = $$02$us$i12 >>> 0 > 256;
$68 = $76 ? 256 : $$02$us$i12;
$77 = HEAP32[$ar >> 2] | 0;
_memcpy($78 | 0, $77 | 0, $68 | 0) | 0;
$74 = $77;
$i$01$us$i10 = 0;
while (1) {
$70 = ($ar + ($i$01$us$i10 << 2)) | 0;
$71 = ($i$01$us$i10 + 1) | 0;
$72 = ($ar + ($71 << 2)) | 0;
$73 = HEAP32[$72 >> 2] | 0;
_memcpy($74 | 0, $73 | 0, $68 | 0) | 0;
$75 = ($74 + $68) | 0;
HEAP32[$70 >> 2] = $75;
$exitcond$i11 = ($71 | 0) == ($i$0$lcssa27 | 0);
if ($exitcond$i11) {
break;
} else {
$74 = $73;
$i$01$us$i10 = $71;
}
}
$67 = ($$02$us$i12 | 0) == ($68 | 0);
if ($67) {
break L31;
}
$69 = ($$02$us$i12 - $68) | 0;
$$pre$i8 = HEAP32[$60 >> 2] | 0;
$$02$us$i12 = $69;
$78 = $$pre$i8;
}
}
}
} while (0);
HEAP32[$ar$i >> 2] = $$0$lcssa26;
$84 = ($$01$lcssa28 | 0) > 1;
L45: do {
if ($84) {
$$012$i = $$01$lcssa28;
$$03$i = $$0$lcssa26;
$90 = $$0$lcssa26;
$i$04$i = 1;
while (1) {
$85 = ($$03$i + $0) | 0;
$86 = ($$012$i + -2) | 0;
$87 = ($lp + ($86 << 2)) | 0;
$88 = HEAP32[$87 >> 2] | 0;
$sum$i = ($88 + $width) | 0;
$$sum$i = (0 - $sum$i) | 0;
$89 = ($$03$i + $$sum$i) | 0;
$91 = FUNCTION_TABLE_iii[$cmp & 7]($90, $89) | 0;
$92 = ($91 | 0) > -1;
if ($92) {
$93 = FUNCTION_TABLE_iii[$cmp & 7]($90, $85) | 0;
$94 = ($93 | 0) > -1;
if ($94) {
$i$0$lcssa$i = $i$04$i;
break;
}
}
$95 = FUNCTION_TABLE_iii[$cmp & 7]($89, $85) | 0;
$96 = ($95 | 0) > -1;
$97 = ($i$04$i + 1) | 0;
$98 = ($ar$i + ($i$04$i << 2)) | 0;
if ($96) {
HEAP32[$98 >> 2] = $89;
$99 = ($$012$i + -1) | 0;
$$0$be$i = $89;
$$01$be$i = $99;
} else {
HEAP32[$98 >> 2] = $85;
$$0$be$i = $85;
$$01$be$i = $86;
}
$100 = ($$01$be$i | 0) > 1;
if (!$100) {
$i$0$lcssa$i = $97;
break;
}
$$pre$i = HEAP32[$ar$i >> 2] | 0;
$$012$i = $$01$be$i;
$$03$i = $$0$be$i;
$90 = $$pre$i;
$i$04$i = $97;
}
$101 = ($i$0$lcssa$i | 0) < 2;
if ($101) {
$126 = $tmp$i6;
} else {
$102 = ($ar$i + ($i$0$lcssa$i << 2)) | 0;
HEAP32[$102 >> 2] = $tmp$i6;
$103 = ($width | 0) == 0;
if ($103) {
$126 = $tmp$i6;
} else {
$104 = ($i$0$lcssa$i | 0) > 0;
if ($104) {
$$02$us$i = $width;
$120 = $tmp$i6;
} else {
$105 = $width >>> 0 > 256;
$106 = $105 ? 256 : $width;
$107 = HEAP32[$ar$i >> 2] | 0;
_memcpy($tmp$i6 | 0, $107 | 0, $106 | 0) | 0;
$108 = ($106 | 0) == ($width | 0);
if ($108) {
$126 = $tmp$i6;
break;
} else {
$$02$i3 = $width;
$122 = $106;
}
while (1) {
$121 = ($$02$i3 - $122) | 0;
$123 = $121 >>> 0 > 256;
$124 = $123 ? 256 : $121;
_memcpy($tmp$i6 | 0, $107 | 0, $124 | 0) | 0;
$125 = ($121 | 0) == ($124 | 0);
if ($125) {
$126 = $tmp$i6;
break L45;
} else {
$$02$i3 = $121;
$122 = $124;
}
}
}
while (1) {
$118 = $$02$us$i >>> 0 > 256;
$110 = $118 ? 256 : $$02$us$i;
$119 = HEAP32[$ar$i >> 2] | 0;
_memcpy($120 | 0, $119 | 0, $110 | 0) | 0;
$116 = $119;
$i$01$us$i = 0;
while (1) {
$112 = ($ar$i + ($i$01$us$i << 2)) | 0;
$113 = ($i$01$us$i + 1) | 0;
$114 = ($ar$i + ($113 << 2)) | 0;
$115 = HEAP32[$114 >> 2] | 0;
_memcpy($116 | 0, $115 | 0, $110 | 0) | 0;
$117 = ($116 + $110) | 0;
HEAP32[$112 >> 2] = $117;
$exitcond$i = ($113 | 0) == ($i$0$lcssa$i | 0);
if ($exitcond$i) {
break;
} else {
$116 = $115;
$i$01$us$i = $113;
}
}
$109 = ($$02$us$i | 0) == ($110 | 0);
if ($109) {
$126 = $tmp$i6;
break L45;
}
$111 = ($$02$us$i - $110) | 0;
$$pre$i3 = HEAP32[$102 >> 2] | 0;
$$02$us$i = $111;
$120 = $$pre$i3;
}
}
}
} else {
$126 = $tmp$i6;
}
} while (0);
STACKTOP = sp;
return;
}
function _strchr($s, $c) {
$s = $s | 0;
$c = $c | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ___strchrnul($s, $c) | 0;
$1 = HEAP8[$0 >> 0] | 0;
$2 = $c & 255;
$3 = ($1 << 24) >> 24 == ($2 << 24) >> 24;
$4 = $3 ? $0 : 0;
STACKTOP = sp;
return $4 | 0;
}
function ___strchrnul($s, $c) {
$s = $s | 0;
$c = $c | 0;
var $$0 = 0,
$$02$lcssa = 0,
$$026 = 0,
$$1 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0;
var $23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0;
var $5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$or$cond = 0,
$w$0$lcssa = 0,
$w$03 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = $c & 255;
$1 = ($0 | 0) == 0;
if ($1) {
$6 = _strlen($s | 0) | 0;
$7 = ($s + $6) | 0;
$$0 = $7;
STACKTOP = sp;
return $$0 | 0;
}
$2 = $s;
$3 = $2 & 3;
$4 = ($3 | 0) == 0;
L5: do {
if ($4) {
$$02$lcssa = $s;
} else {
$5 = $c & 255;
$$026 = $s;
while (1) {
$12 = HEAP8[$$026 >> 0] | 0;
$13 = ($12 << 24) >> 24 == 0;
if ($13) {
$$0 = $$026;
label = 13;
break;
}
$14 = ($12 << 24) >> 24 == ($5 << 24) >> 24;
$8 = ($$026 + 1) | 0;
if ($14) {
$$0 = $$026;
label = 13;
break;
}
$9 = $8;
$10 = $9 & 3;
$11 = ($10 | 0) == 0;
if ($11) {
$$02$lcssa = $8;
break L5;
} else {
$$026 = $8;
}
}
if ((label | 0) == 13) {
STACKTOP = sp;
return $$0 | 0;
}
}
} while (0);
$15 = Math_imul($0, 16843009) | 0;
$16 = HEAP32[$$02$lcssa >> 2] | 0;
$17 = ($16 + -16843009) | 0;
$18 = $16 & -2139062144;
$19 = $18 ^ -2139062144;
$20 = $19 & $17;
$21 = ($20 | 0) == 0;
L15: do {
if ($21) {
$30 = $16;
$w$03 = $$02$lcssa;
while (1) {
$29 = $30 ^ $15;
$31 = ($29 + -16843009) | 0;
$32 = $29 & -2139062144;
$33 = $32 ^ -2139062144;
$34 = $33 & $31;
$35 = ($34 | 0) == 0;
$23 = ($w$03 + 4) | 0;
if (!$35) {
$w$0$lcssa = $w$03;
break L15;
}
$22 = HEAP32[$23 >> 2] | 0;
$24 = ($22 + -16843009) | 0;
$25 = $22 & -2139062144;
$26 = $25 ^ -2139062144;
$27 = $26 & $24;
$28 = ($27 | 0) == 0;
if ($28) {
$30 = $22;
$w$03 = $23;
} else {
$w$0$lcssa = $23;
break;
}
}
} else {
$w$0$lcssa = $$02$lcssa;
}
} while (0);
$36 = $c & 255;
$$1 = $w$0$lcssa;
while (1) {
$37 = HEAP8[$$1 >> 0] | 0;
$38 = ($37 << 24) >> 24 == 0;
$39 = ($37 << 24) >> 24 == ($36 << 24) >> 24;
$or$cond = $38 | $39;
$40 = ($$1 + 1) | 0;
if ($or$cond) {
$$0 = $$1;
break;
} else {
$$1 = $40;
}
}
STACKTOP = sp;
return $$0 | 0;
}
function ___strdup($s) {
$s = $s | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = _strlen($s | 0) | 0;
$1 = ($0 + 1) | 0;
$2 = _malloc($1) | 0;
$3 = ($2 | 0) == (0 | 0);
if ($3) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
_memcpy($2 | 0, $s | 0, $1 | 0) | 0;
$$0 = $2;
STACKTOP = sp;
return $$0 | 0;
}
function _strstr($h, $n) {
$h = $h | 0;
$n = $n | 0;
var $$$i = 0,
$$$i16 = 0,
$$$i8 = 0,
$$0 = 0,
$$0$lcssa$i = 0,
$$0$lcssa$i15 = 0,
$$0$lcssa$i7 = 0,
$$01$i = 0,
$$02$i = 0,
$$02$i11 = 0,
$$02$i5 = 0,
$$02$us$i = 0,
$$lcssa$i = 0,
$$lcssa$i14 = 0,
$$mem$0$us$i = 0,
$$pr$i = 0,
$$pr$us$i = 0,
$0 = 0,
$1 = 0,
$10 = 0;
var $100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0;
var $119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0;
var $137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0,
$152 = 0,
$153 = 0,
$154 = 0;
var $155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0,
$170 = 0,
$171 = 0,
$172 = 0;
var $173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0,
$189 = 0,
$19 = 0,
$190 = 0;
var $191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0,
$206 = 0,
$207 = 0,
$208 = 0;
var $209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0,
$224 = 0,
$225 = 0,
$226 = 0;
var $227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0,
$242 = 0,
$243 = 0,
$244 = 0;
var $245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0,
$260 = 0,
$261 = 0,
$262 = 0;
var $263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0;
var $32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0;
var $50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0;
var $69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0;
var $87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$byteset$i = 0,
$hw$0$in2$i = 0,
$hw$03$i = 0,
$hw$03$i10 = 0,
$ip$0$ph78$i = 0,
$ip$0$ph78146$i = 0;
var $ip$0$ph81$i = 0,
$ip$1$ip$0$$i = 0,
$ip$1$ip$0$i = 0,
$ip$1$ph58$i = 0,
$ip$1$ph61$i = 0,
$jp$0$ph22$ph72$i = 0,
$jp$0$ph2266$i = 0,
$jp$0$ph82$i = 0,
$jp$1$ph11$ph52$i = 0,
$jp$1$ph1146$i = 0,
$jp$1$ph62$i = 0,
$k$030$i = 0,
$k$117$i = 0,
$k$2$us$i = 0,
$k$37$i = 0,
$k$37$us$i = 0,
$k$4$i = 0,
$k$4$us$i = 0,
$l$039$i = 0,
$mem$0$us$i = 0;
var $notlhs$i = 0,
$notrhs$us$i = 0,
$or$cond$i = 0,
$or$cond$i12 = 0,
$or$cond3$us$i = 0,
$p$0$ph$ph70$i = 0,
$p$0$ph$ph70150$i = 0,
$p$0$ph$ph73$i = 0,
$p$1$p$0$i = 0,
$p$1$ph$ph50$i = 0,
$p$1$ph$ph53$i = 0,
$p$3155$i = 0,
$shift$i = 0,
$z$0$i = 0,
$z$0$us$i = 0,
$z$1$i = 0,
$z$1$us$i = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 1056) | 0;
$byteset$i = (sp + 1024) | 0;
$shift$i = sp;
$0 = HEAP8[$n >> 0] | 0;
$1 = ($0 << 24) >> 24 == 0;
if ($1) {
$$0 = $h;
STACKTOP = sp;
return $$0 | 0;
}
$2 = ($0 << 24) >> 24;
$3 = _strchr($h, $2) | 0;
$4 = ($3 | 0) == (0 | 0);
if ($4) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$5 = ($n + 1) | 0;
$6 = HEAP8[$5 >> 0] | 0;
$7 = ($6 << 24) >> 24 == 0;
if ($7) {
$$0 = $3;
STACKTOP = sp;
return $$0 | 0;
}
$8 = ($3 + 1) | 0;
$9 = HEAP8[$8 >> 0] | 0;
$10 = ($9 << 24) >> 24 == 0;
if ($10) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$11 = ($n + 2) | 0;
$12 = HEAP8[$11 >> 0] | 0;
$13 = ($12 << 24) >> 24 == 0;
if ($13) {
$14 = $0 & 255;
$15 = $14 << 8;
$16 = $6 & 255;
$17 = $16 | $15;
$18 = HEAP8[$3 >> 0] | 0;
$19 = $18 & 255;
$20 = $9 & 255;
$21 = $19 << 8;
$22 = $21 | $20;
$$01$i = $8;
$270 = $9;
$hw$0$in2$i = $22;
while (1) {
$23 = $hw$0$in2$i & 65535;
$24 = ($23 | 0) == ($17 | 0);
if ($24) {
$$0$lcssa$i = $$01$i;
$31 = $270;
break;
}
$25 = $23 << 8;
$26 = ($$01$i + 1) | 0;
$27 = HEAP8[$26 >> 0] | 0;
$28 = $27 & 255;
$29 = $28 | $25;
$30 = ($27 << 24) >> 24 == 0;
if ($30) {
$$0$lcssa$i = $26;
$31 = 0;
break;
} else {
$$01$i = $26;
$270 = $27;
$hw$0$in2$i = $29;
}
}
$32 = ($31 << 24) >> 24 == 0;
$33 = ($$0$lcssa$i + -1) | 0;
$$$i = $32 ? 0 : $33;
$$0 = $$$i;
STACKTOP = sp;
return $$0 | 0;
}
$34 = ($3 + 2) | 0;
$35 = HEAP8[$34 >> 0] | 0;
$36 = ($35 << 24) >> 24 == 0;
if ($36) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$37 = ($n + 3) | 0;
$38 = HEAP8[$37 >> 0] | 0;
$39 = ($38 << 24) >> 24 == 0;
if ($39) {
$40 = $0 & 255;
$41 = $40 << 24;
$42 = $6 & 255;
$43 = $42 << 16;
$44 = $43 | $41;
$45 = $12 & 255;
$46 = $45 << 8;
$47 = $44 | $46;
$48 = HEAP8[$3 >> 0] | 0;
$49 = $48 & 255;
$50 = $49 << 24;
$51 = $9 & 255;
$52 = $51 << 16;
$53 = $35 & 255;
$54 = $53 << 8;
$55 = $54 | $52;
$56 = $55 | $50;
$57 = ($56 | 0) == ($47 | 0);
if ($57) {
$$0$lcssa$i7 = $34;
$$lcssa$i = 0;
} else {
$$02$i5 = $34;
$hw$03$i = $56;
while (1) {
$58 = ($$02$i5 + 1) | 0;
$59 = HEAP8[$58 >> 0] | 0;
$60 = $59 & 255;
$61 = $60 | $hw$03$i;
$62 = $61 << 8;
$63 = ($59 << 24) >> 24 == 0;
$64 = ($62 | 0) == ($47 | 0);
$or$cond$i = $63 | $64;
if ($or$cond$i) {
$$0$lcssa$i7 = $58;
$$lcssa$i = $63;
break;
} else {
$$02$i5 = $58;
$hw$03$i = $62;
}
}
}
$65 = ($$0$lcssa$i7 + -2) | 0;
$$$i8 = $$lcssa$i ? 0 : $65;
$$0 = $$$i8;
STACKTOP = sp;
return $$0 | 0;
}
$66 = ($3 + 3) | 0;
$67 = HEAP8[$66 >> 0] | 0;
$68 = ($67 << 24) >> 24 == 0;
if ($68) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
$69 = ($n + 4) | 0;
$70 = HEAP8[$69 >> 0] | 0;
$71 = ($70 << 24) >> 24 == 0;
if ($71) {
$72 = $0 & 255;
$73 = $72 << 24;
$74 = $6 & 255;
$75 = $74 << 16;
$76 = $75 | $73;
$77 = $12 & 255;
$78 = $77 << 8;
$79 = $76 | $78;
$80 = $38 & 255;
$81 = $79 | $80;
$82 = HEAP8[$3 >> 0] | 0;
$83 = $82 & 255;
$84 = $83 << 24;
$85 = $9 & 255;
$86 = $85 << 16;
$87 = $35 & 255;
$88 = $87 << 8;
$89 = $67 & 255;
$90 = $88 | $86;
$91 = $90 | $89;
$92 = $91 | $84;
$93 = ($92 | 0) == ($81 | 0);
if ($93) {
$$0$lcssa$i15 = $66;
$$lcssa$i14 = 0;
} else {
$$02$i11 = $66;
$hw$03$i10 = $92;
while (1) {
$94 = $hw$03$i10 << 8;
$95 = ($$02$i11 + 1) | 0;
$96 = HEAP8[$95 >> 0] | 0;
$97 = $96 & 255;
$98 = $97 | $94;
$99 = ($96 << 24) >> 24 == 0;
$100 = ($98 | 0) == ($81 | 0);
$or$cond$i12 = $99 | $100;
if ($or$cond$i12) {
$$0$lcssa$i15 = $95;
$$lcssa$i14 = $99;
break;
} else {
$$02$i11 = $95;
$hw$03$i10 = $98;
}
}
}
$101 = ($$0$lcssa$i15 + -3) | 0;
$$$i16 = $$lcssa$i14 ? 0 : $101;
$$0 = $$$i16;
STACKTOP = sp;
return $$0 | 0;
}
HEAP32[($byteset$i + 0) >> 2] = 0 | 0;
HEAP32[($byteset$i + 4) >> 2] = 0 | 0;
HEAP32[($byteset$i + 8) >> 2] = 0 | 0;
HEAP32[($byteset$i + 12) >> 2] = 0 | 0;
HEAP32[($byteset$i + 16) >> 2] = 0 | 0;
HEAP32[($byteset$i + 20) >> 2] = 0 | 0;
HEAP32[($byteset$i + 24) >> 2] = 0 | 0;
HEAP32[($byteset$i + 28) >> 2] = 0 | 0;
$106 = $0;
$l$039$i = 0;
while (1) {
$102 = ($3 + $l$039$i) | 0;
$103 = HEAP8[$102 >> 0] | 0;
$104 = ($103 << 24) >> 24 == 0;
if ($104) {
$$0 = 0;
label = 79;
break;
}
$105 = $106 & 255;
$107 = $105 & 31;
$108 = 1 << $107;
$109 = $105 >>> 5;
$110 = ($byteset$i + ($109 << 2)) | 0;
$111 = HEAP32[$110 >> 2] | 0;
$112 = $111 | $108;
HEAP32[$110 >> 2] = $112;
$113 = ($l$039$i + 1) | 0;
$114 = ($shift$i + ($105 << 2)) | 0;
HEAP32[$114 >> 2] = $113;
$115 = ($n + $113) | 0;
$116 = HEAP8[$115 >> 0] | 0;
$117 = ($116 << 24) >> 24 == 0;
if ($117) {
break;
} else {
$106 = $116;
$l$039$i = $113;
}
}
if ((label | 0) == 79) {
STACKTOP = sp;
return $$0 | 0;
}
$118 = $113 >>> 0 > 1;
L49: do {
if ($118) {
$271 = 1;
$ip$0$ph81$i = -1;
$jp$0$ph82$i = 0;
L50: while (1) {
$272 = $271;
$jp$0$ph22$ph72$i = $jp$0$ph82$i;
$p$0$ph$ph73$i = 1;
while (1) {
$273 = $272;
$jp$0$ph2266$i = $jp$0$ph22$ph72$i;
L54: while (1) {
$120 = $273;
$k$030$i = 1;
while (1) {
$125 = ($k$030$i + $ip$0$ph81$i) | 0;
$126 = ($n + $125) | 0;
$127 = HEAP8[$126 >> 0] | 0;
$128 = ($n + $120) | 0;
$129 = HEAP8[$128 >> 0] | 0;
$130 = ($127 << 24) >> 24 == ($129 << 24) >> 24;
if (!$130) {
break L54;
}
$131 = ($k$030$i | 0) == ($p$0$ph$ph73$i | 0);
$123 = ($k$030$i + 1) | 0;
if ($131) {
break;
}
$122 = ($123 + $jp$0$ph2266$i) | 0;
$124 = $122 >>> 0 < $113 >>> 0;
if ($124) {
$120 = $122;
$k$030$i = $123;
} else {
$ip$0$ph78$i = $ip$0$ph81$i;
$p$0$ph$ph70$i = $p$0$ph$ph73$i;
break L50;
}
}
$132 = ($jp$0$ph2266$i + $p$0$ph$ph73$i) | 0;
$133 = ($132 + 1) | 0;
$134 = $133 >>> 0 < $113 >>> 0;
if ($134) {
$273 = $133;
$jp$0$ph2266$i = $132;
} else {
$ip$0$ph78$i = $ip$0$ph81$i;
$p$0$ph$ph70$i = $p$0$ph$ph73$i;
break L50;
}
}
$135 = ($127 & 255) > ($129 & 255);
$136 = ($120 - $ip$0$ph81$i) | 0;
if (!$135) {
break;
}
$119 = ($120 + 1) | 0;
$121 = $119 >>> 0 < $113 >>> 0;
if ($121) {
$272 = $119;
$jp$0$ph22$ph72$i = $120;
$p$0$ph$ph73$i = $136;
} else {
$ip$0$ph78$i = $ip$0$ph81$i;
$p$0$ph$ph70$i = $136;
break L50;
}
}
$137 = ($jp$0$ph2266$i + 1) | 0;
$138 = ($jp$0$ph2266$i + 2) | 0;
$139 = $138 >>> 0 < $113 >>> 0;
if ($139) {
$271 = $138;
$ip$0$ph81$i = $jp$0$ph2266$i;
$jp$0$ph82$i = $137;
} else {
$ip$0$ph78$i = $jp$0$ph2266$i;
$p$0$ph$ph70$i = 1;
break;
}
}
$274 = 1;
$ip$1$ph61$i = -1;
$jp$1$ph62$i = 0;
while (1) {
$276 = $274;
$jp$1$ph11$ph52$i = $jp$1$ph62$i;
$p$1$ph$ph53$i = 1;
while (1) {
$275 = $276;
$jp$1$ph1146$i = $jp$1$ph11$ph52$i;
L69: while (1) {
$147 = $275;
$k$117$i = 1;
while (1) {
$143 = ($k$117$i + $ip$1$ph61$i) | 0;
$144 = ($n + $143) | 0;
$145 = HEAP8[$144 >> 0] | 0;
$146 = ($n + $147) | 0;
$148 = HEAP8[$146 >> 0] | 0;
$149 = ($145 << 24) >> 24 == ($148 << 24) >> 24;
if (!$149) {
break L69;
}
$150 = ($k$117$i | 0) == ($p$1$ph$ph53$i | 0);
$141 = ($k$117$i + 1) | 0;
if ($150) {
break;
}
$140 = ($141 + $jp$1$ph1146$i) | 0;
$142 = $140 >>> 0 < $113 >>> 0;
if ($142) {
$147 = $140;
$k$117$i = $141;
} else {
$ip$0$ph78146$i = $ip$0$ph78$i;
$ip$1$ph58$i = $ip$1$ph61$i;
$p$0$ph$ph70150$i = $p$0$ph$ph70$i;
$p$1$ph$ph50$i = $p$1$ph$ph53$i;
break L49;
}
}
$151 = ($jp$1$ph1146$i + $p$1$ph$ph53$i) | 0;
$152 = ($151 + 1) | 0;
$153 = $152 >>> 0 < $113 >>> 0;
if ($153) {
$275 = $152;
$jp$1$ph1146$i = $151;
} else {
$ip$0$ph78146$i = $ip$0$ph78$i;
$ip$1$ph58$i = $ip$1$ph61$i;
$p$0$ph$ph70150$i = $p$0$ph$ph70$i;
$p$1$ph$ph50$i = $p$1$ph$ph53$i;
break L49;
}
}
$154 = ($145 & 255) < ($148 & 255);
$155 = ($147 - $ip$1$ph61$i) | 0;
if (!$154) {
break;
}
$156 = ($147 + 1) | 0;
$157 = $156 >>> 0 < $113 >>> 0;
if ($157) {
$276 = $156;
$jp$1$ph11$ph52$i = $147;
$p$1$ph$ph53$i = $155;
} else {
$ip$0$ph78146$i = $ip$0$ph78$i;
$ip$1$ph58$i = $ip$1$ph61$i;
$p$0$ph$ph70150$i = $p$0$ph$ph70$i;
$p$1$ph$ph50$i = $155;
break L49;
}
}
$158 = ($jp$1$ph1146$i + 1) | 0;
$159 = ($jp$1$ph1146$i + 2) | 0;
$160 = $159 >>> 0 < $113 >>> 0;
if ($160) {
$274 = $159;
$ip$1$ph61$i = $jp$1$ph1146$i;
$jp$1$ph62$i = $158;
} else {
$ip$0$ph78146$i = $ip$0$ph78$i;
$ip$1$ph58$i = $jp$1$ph1146$i;
$p$0$ph$ph70150$i = $p$0$ph$ph70$i;
$p$1$ph$ph50$i = 1;
break;
}
}
} else {
$ip$0$ph78146$i = -1;
$ip$1$ph58$i = -1;
$p$0$ph$ph70150$i = 1;
$p$1$ph$ph50$i = 1;
}
} while (0);
$161 = ($ip$1$ph58$i + 1) | 0;
$162 = ($ip$0$ph78146$i + 1) | 0;
$163 = $161 >>> 0 > $162 >>> 0;
$p$1$p$0$i = $163 ? $p$1$ph$ph50$i : $p$0$ph$ph70150$i;
$ip$1$ip$0$i = $163 ? $ip$1$ph58$i : $ip$0$ph78146$i;
$164 = ($n + $p$1$p$0$i) | 0;
$165 = ($ip$1$ip$0$i + 1) | 0;
$166 = _memcmp($n, $164, $165) | 0;
$167 = ($166 | 0) == 0;
if ($167) {
$173 = ($113 - $p$1$p$0$i) | 0;
$174 = $113 | 63;
$notlhs$i = ($113 | 0) == ($p$1$p$0$i | 0);
if ($notlhs$i) {
$228 = $174;
$p$3155$i = $113;
} else {
$$02$us$i = $3;
$mem$0$us$i = 0;
$z$0$us$i = $3;
L83: while (1) {
$176 = $z$0$us$i;
$177 = $$02$us$i;
$178 = ($176 - $177) | 0;
$179 = $178 >>> 0 < $113 >>> 0;
do {
if ($179) {
$180 = _memchr($z$0$us$i, 0, $174) | 0;
$181 = ($180 | 0) == (0 | 0);
if ($181) {
$185 = ($z$0$us$i + $174) | 0;
$z$1$us$i = $185;
break;
} else {
$182 = $180;
$183 = ($182 - $177) | 0;
$184 = $183 >>> 0 < $113 >>> 0;
if ($184) {
$$0 = 0;
label = 79;
break L83;
} else {
$z$1$us$i = $180;
break;
}
}
} else {
$z$1$us$i = $z$0$us$i;
}
} while (0);
$186 = ($$02$us$i + $l$039$i) | 0;
$187 = HEAP8[$186 >> 0] | 0;
$188 = $187 & 255;
$189 = $188 >>> 5;
$190 = ($byteset$i + ($189 << 2)) | 0;
$191 = HEAP32[$190 >> 2] | 0;
$192 = $188 & 31;
$193 = 1 << $192;
$194 = $193 & $191;
$195 = ($194 | 0) == 0;
if ($195) {
$223 = ($$02$us$i + $113) | 0;
$$02$us$i = $223;
$mem$0$us$i = 0;
$z$0$us$i = $z$1$us$i;
continue;
}
$196 = ($shift$i + ($188 << 2)) | 0;
$197 = HEAP32[$196 >> 2] | 0;
$198 = ($113 - $197) | 0;
$199 = ($113 | 0) == ($197 | 0);
if (!$199) {
$notrhs$us$i = ($mem$0$us$i | 0) != 0;
$200 = $198 >>> 0 < $p$1$p$0$i >>> 0;
$or$cond3$us$i = $notrhs$us$i & $200;
$k$2$us$i = $or$cond3$us$i ? $173 : $198;
$201 = ($$02$us$i + $k$2$us$i) | 0;
$$02$us$i = $201;
$mem$0$us$i = 0;
$z$0$us$i = $z$1$us$i;
continue;
}
$202 = $165 >>> 0 > $mem$0$us$i >>> 0;
$$mem$0$us$i = $202 ? $165 : $mem$0$us$i;
$203 = ($n + $$mem$0$us$i) | 0;
$204 = HEAP8[$203 >> 0] | 0;
$205 = ($204 << 24) >> 24 == 0;
L97: do {
if ($205) {
$k$4$us$i = $165;
} else {
$$pr$us$i = $204;
$k$37$us$i = $$mem$0$us$i;
while (1) {
$210 = ($$02$us$i + $k$37$us$i) | 0;
$211 = HEAP8[$210 >> 0] | 0;
$212 = ($$pr$us$i << 24) >> 24 == ($211 << 24) >> 24;
$207 = ($k$37$us$i + 1) | 0;
if (!$212) {
break;
}
$206 = ($n + $207) | 0;
$208 = HEAP8[$206 >> 0] | 0;
$209 = ($208 << 24) >> 24 == 0;
if ($209) {
$k$4$us$i = $165;
break L97;
} else {
$$pr$us$i = $208;
$k$37$us$i = $207;
}
}
$213 = ($k$37$us$i - $ip$1$ip$0$i) | 0;
$214 = ($$02$us$i + $213) | 0;
$$02$us$i = $214;
$mem$0$us$i = 0;
$z$0$us$i = $z$1$us$i;
continue L83;
}
} while (0);
while (1) {
$215 = $k$4$us$i >>> 0 > $mem$0$us$i >>> 0;
if (!$215) {
$$0 = $$02$us$i;
label = 79;
break L83;
}
$216 = ($k$4$us$i + -1) | 0;
$217 = ($n + $216) | 0;
$218 = HEAP8[$217 >> 0] | 0;
$219 = ($$02$us$i + $216) | 0;
$220 = HEAP8[$219 >> 0] | 0;
$221 = ($218 << 24) >> 24 == ($220 << 24) >> 24;
if ($221) {
$k$4$us$i = $216;
} else {
break;
}
}
$222 = ($$02$us$i + $p$1$p$0$i) | 0;
$$02$us$i = $222;
$mem$0$us$i = $173;
$z$0$us$i = $z$1$us$i;
}
if ((label | 0) == 79) {
STACKTOP = sp;
return $$0 | 0;
}
}
} else {
$168 = ($113 - $ip$1$ip$0$i) | 0;
$169 = ($168 + -1) | 0;
$170 = $ip$1$ip$0$i >>> 0 > $169 >>> 0;
$ip$1$ip$0$$i = $170 ? $ip$1$ip$0$i : $169;
$171 = ($ip$1$ip$0$$i + 1) | 0;
$172 = $113 | 63;
$228 = $172;
$p$3155$i = $171;
}
$175 = ($n + $165) | 0;
$$02$i = $3;
$z$0$i = $3;
L110: while (1) {
$224 = $z$0$i;
$225 = $$02$i;
$226 = ($224 - $225) | 0;
$227 = $226 >>> 0 < $113 >>> 0;
do {
if ($227) {
$229 = _memchr($z$0$i, 0, $228) | 0;
$230 = ($229 | 0) == (0 | 0);
if ($230) {
$234 = ($z$0$i + $228) | 0;
$z$1$i = $234;
break;
} else {
$231 = $229;
$232 = ($231 - $225) | 0;
$233 = $232 >>> 0 < $113 >>> 0;
if ($233) {
$$0 = 0;
label = 79;
break L110;
} else {
$z$1$i = $229;
break;
}
}
} else {
$z$1$i = $z$0$i;
}
} while (0);
$235 = ($$02$i + $l$039$i) | 0;
$236 = HEAP8[$235 >> 0] | 0;
$237 = $236 & 255;
$238 = $237 >>> 5;
$239 = ($byteset$i + ($238 << 2)) | 0;
$240 = HEAP32[$239 >> 2] | 0;
$241 = $237 & 31;
$242 = 1 << $241;
$243 = $242 & $240;
$244 = ($243 | 0) == 0;
if ($244) {
$250 = ($$02$i + $113) | 0;
$$02$i = $250;
$z$0$i = $z$1$i;
continue;
}
$245 = ($shift$i + ($237 << 2)) | 0;
$246 = HEAP32[$245 >> 2] | 0;
$247 = ($113 | 0) == ($246 | 0);
if (!$247) {
$248 = ($113 - $246) | 0;
$249 = ($$02$i + $248) | 0;
$$02$i = $249;
$z$0$i = $z$1$i;
continue;
}
$251 = HEAP8[$175 >> 0] | 0;
$252 = ($251 << 24) >> 24 == 0;
L124: do {
if ($252) {
$k$4$i = $165;
} else {
$$pr$i = $251;
$k$37$i = $165;
while (1) {
$257 = ($$02$i + $k$37$i) | 0;
$258 = HEAP8[$257 >> 0] | 0;
$259 = ($$pr$i << 24) >> 24 == ($258 << 24) >> 24;
$254 = ($k$37$i + 1) | 0;
if (!$259) {
break;
}
$253 = ($n + $254) | 0;
$255 = HEAP8[$253 >> 0] | 0;
$256 = ($255 << 24) >> 24 == 0;
if ($256) {
$k$4$i = $165;
break L124;
} else {
$$pr$i = $255;
$k$37$i = $254;
}
}
$260 = ($k$37$i - $ip$1$ip$0$i) | 0;
$261 = ($$02$i + $260) | 0;
$$02$i = $261;
$z$0$i = $z$1$i;
continue L110;
}
} while (0);
while (1) {
$262 = ($k$4$i | 0) == 0;
if ($262) {
$$0 = $$02$i;
label = 79;
break L110;
}
$263 = ($k$4$i + -1) | 0;
$264 = ($n + $263) | 0;
$265 = HEAP8[$264 >> 0] | 0;
$266 = ($$02$i + $263) | 0;
$267 = HEAP8[$266 >> 0] | 0;
$268 = ($265 << 24) >> 24 == ($267 << 24) >> 24;
if ($268) {
$k$4$i = $263;
} else {
break;
}
}
$269 = ($$02$i + $p$3155$i) | 0;
$$02$i = $269;
$z$0$i = $z$1$i;
}
if ((label | 0) == 79) {
STACKTOP = sp;
return $$0 | 0;
}
return 0 | 0;
}
function _malloc($bytes) {
$bytes = $bytes | 0;
var $$$i = 0,
$$3$i = 0,
$$4$i = 0,
$$pre = 0,
$$pre$i = 0,
$$pre$i$i = 0,
$$pre$i25 = 0,
$$pre$i25$i = 0,
$$pre$phi$i$iZ2D = 0,
$$pre$phi$i26$iZ2D = 0,
$$pre$phi$i26Z2D = 0,
$$pre$phi$iZ2D = 0,
$$pre$phi58$i$iZ2D = 0,
$$pre$phiZ2D = 0,
$$pre57$i$i = 0,
$$rsize$0$i = 0,
$$rsize$3$i = 0,
$$sum = 0,
$$sum$i$i = 0,
$$sum$i$i$i = 0;
var $$sum$i14$i = 0,
$$sum$i15$i = 0,
$$sum$i18$i = 0,
$$sum$i21$i = 0,
$$sum$i2334 = 0,
$$sum$i32 = 0,
$$sum$i35 = 0,
$$sum1 = 0,
$$sum1$i = 0,
$$sum1$i$i = 0,
$$sum1$i16$i = 0,
$$sum1$i22$i = 0,
$$sum1$i24 = 0,
$$sum10 = 0,
$$sum10$i = 0,
$$sum10$i$i = 0,
$$sum10$pre$i$i = 0,
$$sum107$i = 0,
$$sum108$i = 0,
$$sum109$i = 0;
var $$sum11$i = 0,
$$sum11$i$i = 0,
$$sum11$i24$i = 0,
$$sum110$i = 0,
$$sum111$i = 0,
$$sum1112 = 0,
$$sum112$i = 0,
$$sum113$i = 0,
$$sum114$i = 0,
$$sum115$i = 0,
$$sum116$i = 0,
$$sum117$i = 0,
$$sum118$i = 0,
$$sum119$i = 0,
$$sum12$i = 0,
$$sum12$i$i = 0,
$$sum120$i = 0,
$$sum13$i = 0,
$$sum13$i$i = 0,
$$sum14$i$i = 0;
var $$sum14$pre$i = 0,
$$sum15$i = 0,
$$sum15$i$i = 0,
$$sum16$i = 0,
$$sum16$i$i = 0,
$$sum17$i = 0,
$$sum17$i$i = 0,
$$sum18$i = 0,
$$sum1819$i$i = 0,
$$sum2 = 0,
$$sum2$i = 0,
$$sum2$i$i = 0,
$$sum2$i$i$i = 0,
$$sum2$i17$i = 0,
$$sum2$i19$i = 0,
$$sum2$i23$i = 0,
$$sum2$pre$i = 0,
$$sum20$i$i = 0,
$$sum21$i$i = 0,
$$sum22$i$i = 0;
var $$sum23$i$i = 0,
$$sum24$i$i = 0,
$$sum25$i$i = 0,
$$sum26$pre$i$i = 0,
$$sum27$i$i = 0,
$$sum28$i$i = 0,
$$sum29$i$i = 0,
$$sum3$i = 0,
$$sum3$i$i = 0,
$$sum3$i27 = 0,
$$sum30$i$i = 0,
$$sum3132$i$i = 0,
$$sum34$i$i = 0,
$$sum3536$i$i = 0,
$$sum3738$i$i = 0,
$$sum39$i$i = 0,
$$sum4 = 0,
$$sum4$i = 0,
$$sum4$i28 = 0,
$$sum40$i$i = 0;
var $$sum41$i$i = 0,
$$sum42$i$i = 0,
$$sum5$i = 0,
$$sum5$i$i = 0,
$$sum56 = 0,
$$sum6$i = 0,
$$sum67$i$i = 0,
$$sum7$i = 0,
$$sum8$i = 0,
$$sum8$pre = 0,
$$sum9 = 0,
$$sum9$i = 0,
$$sum9$i$i = 0,
$$tsize$1$i = 0,
$$v$0$i = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$1000 = 0;
var $1001 = 0,
$1002 = 0,
$1003 = 0,
$1004 = 0,
$1005 = 0,
$1006 = 0,
$1007 = 0,
$1008 = 0,
$1009 = 0,
$101 = 0,
$1010 = 0,
$1011 = 0,
$1012 = 0,
$1013 = 0,
$1014 = 0,
$1015 = 0,
$1016 = 0,
$1017 = 0,
$1018 = 0,
$1019 = 0;
var $102 = 0,
$1020 = 0,
$1021 = 0,
$1022 = 0,
$1023 = 0,
$1024 = 0,
$1025 = 0,
$1026 = 0,
$1027 = 0,
$1028 = 0,
$1029 = 0,
$103 = 0,
$1030 = 0,
$1031 = 0,
$1032 = 0,
$1033 = 0,
$1034 = 0,
$1035 = 0,
$1036 = 0,
$1037 = 0;
var $1038 = 0,
$1039 = 0,
$104 = 0,
$1040 = 0,
$1041 = 0,
$1042 = 0,
$1043 = 0,
$1044 = 0,
$1045 = 0,
$1046 = 0,
$1047 = 0,
$1048 = 0,
$1049 = 0,
$105 = 0,
$1050 = 0,
$1051 = 0,
$1052 = 0,
$1053 = 0,
$1054 = 0,
$1055 = 0;
var $1056 = 0,
$1057 = 0,
$1058 = 0,
$1059 = 0,
$106 = 0,
$1060 = 0,
$1061 = 0,
$1062 = 0,
$1063 = 0,
$1064 = 0,
$1065 = 0,
$1066 = 0,
$1067 = 0,
$1068 = 0,
$1069 = 0,
$107 = 0,
$1070 = 0,
$1071 = 0,
$1072 = 0,
$1073 = 0;
var $1074 = 0,
$1075 = 0,
$1076 = 0,
$1077 = 0,
$1078 = 0,
$1079 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0;
var $120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0;
var $139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0,
$152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0;
var $157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0,
$170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0;
var $175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0,
$189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0;
var $193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0,
$206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0;
var $210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0,
$224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0;
var $229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0,
$242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0;
var $247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0,
$260 = 0,
$261 = 0,
$262 = 0,
$263 = 0,
$264 = 0;
var $265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0,
$279 = 0,
$28 = 0,
$280 = 0,
$281 = 0,
$282 = 0;
var $283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0,
$297 = 0,
$298 = 0,
$299 = 0,
$3 = 0,
$30 = 0;
var $300 = 0,
$301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0,
$306 = 0,
$307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0,
$313 = 0,
$314 = 0,
$315 = 0,
$316 = 0,
$317 = 0,
$318 = 0;
var $319 = 0,
$32 = 0,
$320 = 0,
$321 = 0,
$322 = 0,
$323 = 0,
$324 = 0,
$325 = 0,
$326 = 0,
$327 = 0,
$328 = 0,
$329 = 0,
$33 = 0,
$330 = 0,
$331 = 0,
$332 = 0,
$333 = 0,
$334 = 0,
$335 = 0,
$336 = 0;
var $337 = 0,
$338 = 0,
$339 = 0,
$34 = 0,
$340 = 0,
$341 = 0,
$342 = 0,
$343 = 0,
$344 = 0,
$345 = 0,
$346 = 0,
$347 = 0,
$348 = 0,
$349 = 0,
$35 = 0,
$350 = 0,
$351 = 0,
$352 = 0,
$353 = 0,
$354 = 0;
var $355 = 0,
$356 = 0,
$357 = 0,
$358 = 0,
$359 = 0,
$36 = 0,
$360 = 0,
$361 = 0,
$362 = 0,
$363 = 0,
$364 = 0,
$365 = 0,
$366 = 0,
$367 = 0,
$368 = 0,
$369 = 0,
$37 = 0,
$370 = 0,
$371 = 0,
$372 = 0;
var $373 = 0,
$374 = 0,
$375 = 0,
$376 = 0,
$377 = 0,
$378 = 0,
$379 = 0,
$38 = 0,
$380 = 0,
$381 = 0,
$382 = 0,
$383 = 0,
$384 = 0,
$385 = 0,
$386 = 0,
$387 = 0,
$388 = 0,
$389 = 0,
$39 = 0,
$390 = 0;
var $391 = 0,
$392 = 0,
$393 = 0,
$394 = 0,
$395 = 0,
$396 = 0,
$397 = 0,
$398 = 0,
$399 = 0,
$4 = 0,
$40 = 0,
$400 = 0,
$401 = 0,
$402 = 0,
$403 = 0,
$404 = 0,
$405 = 0,
$406 = 0,
$407 = 0,
$408 = 0;
var $409 = 0,
$41 = 0,
$410 = 0,
$411 = 0,
$412 = 0,
$413 = 0,
$414 = 0,
$415 = 0,
$416 = 0,
$417 = 0,
$418 = 0,
$419 = 0,
$42 = 0,
$420 = 0,
$421 = 0,
$422 = 0,
$423 = 0,
$424 = 0,
$425 = 0,
$426 = 0;
var $427 = 0,
$428 = 0,
$429 = 0,
$43 = 0,
$430 = 0,
$431 = 0,
$432 = 0,
$433 = 0,
$434 = 0,
$435 = 0,
$436 = 0,
$437 = 0,
$438 = 0,
$439 = 0,
$44 = 0,
$440 = 0,
$441 = 0,
$442 = 0,
$443 = 0,
$444 = 0;
var $445 = 0,
$446 = 0,
$447 = 0,
$448 = 0,
$449 = 0,
$45 = 0,
$450 = 0,
$451 = 0,
$452 = 0,
$453 = 0,
$454 = 0,
$455 = 0,
$456 = 0,
$457 = 0,
$458 = 0,
$459 = 0,
$46 = 0,
$460 = 0,
$461 = 0,
$462 = 0;
var $463 = 0,
$464 = 0,
$465 = 0,
$466 = 0,
$467 = 0,
$468 = 0,
$469 = 0,
$47 = 0,
$470 = 0,
$471 = 0,
$472 = 0,
$473 = 0,
$474 = 0,
$475 = 0,
$476 = 0,
$477 = 0,
$478 = 0,
$479 = 0,
$48 = 0,
$480 = 0;
var $481 = 0,
$482 = 0,
$483 = 0,
$484 = 0,
$485 = 0,
$486 = 0,
$487 = 0,
$488 = 0,
$489 = 0,
$49 = 0,
$490 = 0,
$491 = 0,
$492 = 0,
$493 = 0,
$494 = 0,
$495 = 0,
$496 = 0,
$497 = 0,
$498 = 0,
$499 = 0;
var $5 = 0,
$50 = 0,
$500 = 0,
$501 = 0,
$502 = 0,
$503 = 0,
$504 = 0,
$505 = 0,
$506 = 0,
$507 = 0,
$508 = 0,
$509 = 0,
$51 = 0,
$510 = 0,
$511 = 0,
$512 = 0,
$513 = 0,
$514 = 0,
$515 = 0,
$516 = 0;
var $517 = 0,
$518 = 0,
$519 = 0,
$52 = 0,
$520 = 0,
$521 = 0,
$522 = 0,
$523 = 0,
$524 = 0,
$525 = 0,
$526 = 0,
$527 = 0,
$528 = 0,
$529 = 0,
$53 = 0,
$530 = 0,
$531 = 0,
$532 = 0,
$533 = 0,
$534 = 0;
var $535 = 0,
$536 = 0,
$537 = 0,
$538 = 0,
$539 = 0,
$54 = 0,
$540 = 0,
$541 = 0,
$542 = 0,
$543 = 0,
$544 = 0,
$545 = 0,
$546 = 0,
$547 = 0,
$548 = 0,
$549 = 0,
$55 = 0,
$550 = 0,
$551 = 0,
$552 = 0;
var $553 = 0,
$554 = 0,
$555 = 0,
$556 = 0,
$557 = 0,
$558 = 0,
$559 = 0,
$56 = 0,
$560 = 0,
$561 = 0,
$562 = 0,
$563 = 0,
$564 = 0,
$565 = 0,
$566 = 0,
$567 = 0,
$568 = 0,
$569 = 0,
$57 = 0,
$570 = 0;
var $571 = 0,
$572 = 0,
$573 = 0,
$574 = 0,
$575 = 0,
$576 = 0,
$577 = 0,
$578 = 0,
$579 = 0,
$58 = 0,
$580 = 0,
$581 = 0,
$582 = 0,
$583 = 0,
$584 = 0,
$585 = 0,
$586 = 0,
$587 = 0,
$588 = 0,
$589 = 0;
var $59 = 0,
$590 = 0,
$591 = 0,
$592 = 0,
$593 = 0,
$594 = 0,
$595 = 0,
$596 = 0,
$597 = 0,
$598 = 0,
$599 = 0,
$6 = 0,
$60 = 0,
$600 = 0,
$601 = 0,
$602 = 0,
$603 = 0,
$604 = 0,
$605 = 0,
$606 = 0;
var $607 = 0,
$608 = 0,
$609 = 0,
$61 = 0,
$610 = 0,
$611 = 0,
$612 = 0,
$613 = 0,
$614 = 0,
$615 = 0,
$616 = 0,
$617 = 0,
$618 = 0,
$619 = 0,
$62 = 0,
$620 = 0,
$621 = 0,
$622 = 0,
$623 = 0,
$624 = 0;
var $625 = 0,
$626 = 0,
$627 = 0,
$628 = 0,
$629 = 0,
$63 = 0,
$630 = 0,
$631 = 0,
$632 = 0,
$633 = 0,
$634 = 0,
$635 = 0,
$636 = 0,
$637 = 0,
$638 = 0,
$639 = 0,
$64 = 0,
$640 = 0,
$641 = 0,
$642 = 0;
var $643 = 0,
$644 = 0,
$645 = 0,
$646 = 0,
$647 = 0,
$648 = 0,
$649 = 0,
$65 = 0,
$650 = 0,
$651 = 0,
$652 = 0,
$653 = 0,
$654 = 0,
$655 = 0,
$656 = 0,
$657 = 0,
$658 = 0,
$659 = 0,
$66 = 0,
$660 = 0;
var $661 = 0,
$662 = 0,
$663 = 0,
$664 = 0,
$665 = 0,
$666 = 0,
$667 = 0,
$668 = 0,
$669 = 0,
$67 = 0,
$670 = 0,
$671 = 0,
$672 = 0,
$673 = 0,
$674 = 0,
$675 = 0,
$676 = 0,
$677 = 0,
$678 = 0,
$679 = 0;
var $68 = 0,
$680 = 0,
$681 = 0,
$682 = 0,
$683 = 0,
$684 = 0,
$685 = 0,
$686 = 0,
$687 = 0,
$688 = 0,
$689 = 0,
$69 = 0,
$690 = 0,
$691 = 0,
$692 = 0,
$693 = 0,
$694 = 0,
$695 = 0,
$696 = 0,
$697 = 0;
var $698 = 0,
$699 = 0,
$7 = 0,
$70 = 0,
$700 = 0,
$701 = 0,
$702 = 0,
$703 = 0,
$704 = 0,
$705 = 0,
$706 = 0,
$707 = 0,
$708 = 0,
$709 = 0,
$71 = 0,
$710 = 0,
$711 = 0,
$712 = 0,
$713 = 0,
$714 = 0;
var $715 = 0,
$716 = 0,
$717 = 0,
$718 = 0,
$719 = 0,
$72 = 0,
$720 = 0,
$721 = 0,
$722 = 0,
$723 = 0,
$724 = 0,
$725 = 0,
$726 = 0,
$727 = 0,
$728 = 0,
$729 = 0,
$73 = 0,
$730 = 0,
$731 = 0,
$732 = 0;
var $733 = 0,
$734 = 0,
$735 = 0,
$736 = 0,
$737 = 0,
$738 = 0,
$739 = 0,
$74 = 0,
$740 = 0,
$741 = 0,
$742 = 0,
$743 = 0,
$744 = 0,
$745 = 0,
$746 = 0,
$747 = 0,
$748 = 0,
$749 = 0,
$75 = 0,
$750 = 0;
var $751 = 0,
$752 = 0,
$753 = 0,
$754 = 0,
$755 = 0,
$756 = 0,
$757 = 0,
$758 = 0,
$759 = 0,
$76 = 0,
$760 = 0,
$761 = 0,
$762 = 0,
$763 = 0,
$764 = 0,
$765 = 0,
$766 = 0,
$767 = 0,
$768 = 0,
$769 = 0;
var $77 = 0,
$770 = 0,
$771 = 0,
$772 = 0,
$773 = 0,
$774 = 0,
$775 = 0,
$776 = 0,
$777 = 0,
$778 = 0,
$779 = 0,
$78 = 0,
$780 = 0,
$781 = 0,
$782 = 0,
$783 = 0,
$784 = 0,
$785 = 0,
$786 = 0,
$787 = 0;
var $788 = 0,
$789 = 0,
$79 = 0,
$790 = 0,
$791 = 0,
$792 = 0,
$793 = 0,
$794 = 0,
$795 = 0,
$796 = 0,
$797 = 0,
$798 = 0,
$799 = 0,
$8 = 0,
$80 = 0,
$800 = 0,
$801 = 0,
$802 = 0,
$803 = 0,
$804 = 0;
var $805 = 0,
$806 = 0,
$807 = 0,
$808 = 0,
$809 = 0,
$81 = 0,
$810 = 0,
$811 = 0,
$812 = 0,
$813 = 0,
$814 = 0,
$815 = 0,
$816 = 0,
$817 = 0,
$818 = 0,
$819 = 0,
$82 = 0,
$820 = 0,
$821 = 0,
$822 = 0;
var $823 = 0,
$824 = 0,
$825 = 0,
$826 = 0,
$827 = 0,
$828 = 0,
$829 = 0,
$83 = 0,
$830 = 0,
$831 = 0,
$832 = 0,
$833 = 0,
$834 = 0,
$835 = 0,
$836 = 0,
$837 = 0,
$838 = 0,
$839 = 0,
$84 = 0,
$840 = 0;
var $841 = 0,
$842 = 0,
$843 = 0,
$844 = 0,
$845 = 0,
$846 = 0,
$847 = 0,
$848 = 0,
$849 = 0,
$85 = 0,
$850 = 0,
$851 = 0,
$852 = 0,
$853 = 0,
$854 = 0,
$855 = 0,
$856 = 0,
$857 = 0,
$858 = 0,
$859 = 0;
var $86 = 0,
$860 = 0,
$861 = 0,
$862 = 0,
$863 = 0,
$864 = 0,
$865 = 0,
$866 = 0,
$867 = 0,
$868 = 0,
$869 = 0,
$87 = 0,
$870 = 0,
$871 = 0,
$872 = 0,
$873 = 0,
$874 = 0,
$875 = 0,
$876 = 0,
$877 = 0;
var $878 = 0,
$879 = 0,
$88 = 0,
$880 = 0,
$881 = 0,
$882 = 0,
$883 = 0,
$884 = 0,
$885 = 0,
$886 = 0,
$887 = 0,
$888 = 0,
$889 = 0,
$89 = 0,
$890 = 0,
$891 = 0,
$892 = 0,
$893 = 0,
$894 = 0,
$895 = 0;
var $896 = 0,
$897 = 0,
$898 = 0,
$899 = 0,
$9 = 0,
$90 = 0,
$900 = 0,
$901 = 0,
$902 = 0,
$903 = 0,
$904 = 0,
$905 = 0,
$906 = 0,
$907 = 0,
$908 = 0,
$909 = 0,
$91 = 0,
$910 = 0,
$911 = 0,
$912 = 0;
var $913 = 0,
$914 = 0,
$915 = 0,
$916 = 0,
$917 = 0,
$918 = 0,
$919 = 0,
$92 = 0,
$920 = 0,
$921 = 0,
$922 = 0,
$923 = 0,
$924 = 0,
$925 = 0,
$926 = 0,
$927 = 0,
$928 = 0,
$929 = 0,
$93 = 0,
$930 = 0;
var $931 = 0,
$932 = 0,
$933 = 0,
$934 = 0,
$935 = 0,
$936 = 0,
$937 = 0,
$938 = 0,
$939 = 0,
$94 = 0,
$940 = 0,
$941 = 0,
$942 = 0,
$943 = 0,
$944 = 0,
$945 = 0,
$946 = 0,
$947 = 0,
$948 = 0,
$949 = 0;
var $95 = 0,
$950 = 0,
$951 = 0,
$952 = 0,
$953 = 0,
$954 = 0,
$955 = 0,
$956 = 0,
$957 = 0,
$958 = 0,
$959 = 0,
$96 = 0,
$960 = 0,
$961 = 0,
$962 = 0,
$963 = 0,
$964 = 0,
$965 = 0,
$966 = 0,
$967 = 0;
var $968 = 0,
$969 = 0,
$97 = 0,
$970 = 0,
$971 = 0,
$972 = 0,
$973 = 0,
$974 = 0,
$975 = 0,
$976 = 0,
$977 = 0,
$978 = 0,
$979 = 0,
$98 = 0,
$980 = 0,
$981 = 0,
$982 = 0,
$983 = 0,
$984 = 0,
$985 = 0;
var $986 = 0,
$987 = 0,
$988 = 0,
$989 = 0,
$99 = 0,
$990 = 0,
$991 = 0,
$992 = 0,
$993 = 0,
$994 = 0,
$995 = 0,
$996 = 0,
$997 = 0,
$998 = 0,
$999 = 0,
$F$0$i$i = 0,
$F1$0$i = 0,
$F4$0 = 0,
$F4$0$i$i = 0,
$F5$0$i = 0;
var $I1$0$c$i$i = 0,
$I1$0$i$i = 0,
$I7$0$i = 0,
$I7$0$i$i = 0,
$K12$025$i = 0,
$K2$014$i$i = 0,
$K8$052$i$i = 0,
$R$0$i = 0,
$R$0$i$i = 0,
$R$0$i18 = 0,
$R$1$i = 0,
$R$1$i$i = 0,
$R$1$i20 = 0,
$RP$0$i = 0,
$RP$0$i$i = 0,
$RP$0$i17 = 0,
$T$0$lcssa$i = 0,
$T$0$lcssa$i$i = 0,
$T$0$lcssa$i28$i = 0,
$T$013$i$i = 0;
var $T$024$i = 0,
$T$051$i$i = 0,
$br$0$i = 0,
$cond$i = 0,
$cond$i$i = 0,
$cond$i21 = 0,
$exitcond$i$i = 0,
$i$02$i$i = 0,
$idx$0$i = 0,
$mem$0 = 0,
$nb$0 = 0,
$notlhs$i = 0,
$notrhs$i = 0,
$oldfirst$0$i$i = 0,
$or$cond$i = 0,
$or$cond$i29 = 0,
$or$cond1$i = 0,
$or$cond10$i = 0,
$or$cond19$i = 0,
$or$cond2$i = 0;
var $or$cond49$i = 0,
$or$cond5$i = 0,
$or$cond6$i = 0,
$or$cond8$not$i = 0,
$or$cond9$i = 0,
$qsize$0$i$i = 0,
$rsize$0$i = 0,
$rsize$0$i15 = 0,
$rsize$1$i = 0,
$rsize$2$i = 0,
$rsize$3$lcssa$i = 0,
$rsize$329$i = 0,
$rst$0$i = 0,
$rst$1$i = 0,
$sizebits$0$i = 0,
$sp$0$i$i = 0,
$sp$0$i$i$i = 0,
$sp$075$i = 0,
$sp$168$i = 0,
$ssize$0$$i = 0;
var $ssize$0$i = 0,
$ssize$1$i = 0,
$ssize$2$i = 0,
$t$0$i = 0,
$t$0$i14 = 0,
$t$1$i = 0,
$t$2$ph$i = 0,
$t$2$v$3$i = 0,
$t$228$i = 0,
$tbase$0$i = 0,
$tbase$247$i = 0,
$tsize$0$i = 0,
$tsize$0323841$i = 0,
$tsize$1$i = 0,
$tsize$246$i = 0,
$v$0$i = 0,
$v$0$i16 = 0,
$v$1$i = 0,
$v$2$i = 0,
$v$3$lcssa$i = 0;
var $v$330$i = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = $bytes >>> 0 < 245;
do {
if ($0) {
$1 = $bytes >>> 0 < 11;
if ($1) {
$5 = 16;
} else {
$2 = ($bytes + 11) | 0;
$3 = $2 & -8;
$5 = $3;
}
$4 = $5 >>> 3;
$6 = HEAP32[133240 >> 2] | 0;
$7 = $6 >>> $4;
$8 = $7 & 3;
$9 = ($8 | 0) == 0;
if (!$9) {
$10 = $7 & 1;
$11 = $10 ^ 1;
$12 = ($11 + $4) | 0;
$13 = $12 << 1;
$14 = (((133240 + ($13 << 2)) | 0) + 40) | 0;
$$sum10 = ($13 + 2) | 0;
$15 = (((133240 + ($$sum10 << 2)) | 0) + 40) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = ($16 + 8) | 0;
$18 = HEAP32[$17 >> 2] | 0;
$19 = ($14 | 0) == ($18 | 0);
do {
if ($19) {
$20 = 1 << $12;
$21 = $20 ^ -1;
$22 = $6 & $21;
HEAP32[133240 >> 2] = $22;
} else {
$23 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$24 = $18 >>> 0 < $23 >>> 0;
if ($24) {
_abort();
// unreachable;
}
$25 = ($18 + 12) | 0;
$26 = HEAP32[$25 >> 2] | 0;
$27 = ($26 | 0) == ($16 | 0);
if ($27) {
HEAP32[$25 >> 2] = $14;
HEAP32[$15 >> 2] = $18;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$28 = $12 << 3;
$29 = $28 | 3;
$30 = ($16 + 4) | 0;
HEAP32[$30 >> 2] = $29;
$$sum1112 = $28 | 4;
$31 = ($16 + $$sum1112) | 0;
$32 = HEAP32[$31 >> 2] | 0;
$33 = $32 | 1;
HEAP32[$31 >> 2] = $33;
$mem$0 = $17;
STACKTOP = sp;
return $mem$0 | 0;
}
$34 = HEAP32[((133240 + 8) | 0) >> 2] | 0;
$35 = $5 >>> 0 > $34 >>> 0;
if ($35) {
$36 = ($7 | 0) == 0;
if (!$36) {
$37 = $7 << $4;
$38 = 2 << $4;
$39 = (0 - $38) | 0;
$40 = $38 | $39;
$41 = $37 & $40;
$42 = (0 - $41) | 0;
$43 = $41 & $42;
$44 = ($43 + -1) | 0;
$45 = $44 >>> 12;
$46 = $45 & 16;
$47 = $44 >>> $46;
$48 = $47 >>> 5;
$49 = $48 & 8;
$50 = $49 | $46;
$51 = $47 >>> $49;
$52 = $51 >>> 2;
$53 = $52 & 4;
$54 = $50 | $53;
$55 = $51 >>> $53;
$56 = $55 >>> 1;
$57 = $56 & 2;
$58 = $54 | $57;
$59 = $55 >>> $57;
$60 = $59 >>> 1;
$61 = $60 & 1;
$62 = $58 | $61;
$63 = $59 >>> $61;
$64 = ($62 + $63) | 0;
$65 = $64 << 1;
$66 = (((133240 + ($65 << 2)) | 0) + 40) | 0;
$$sum4 = ($65 + 2) | 0;
$67 = (((133240 + ($$sum4 << 2)) | 0) + 40) | 0;
$68 = HEAP32[$67 >> 2] | 0;
$69 = ($68 + 8) | 0;
$70 = HEAP32[$69 >> 2] | 0;
$71 = ($66 | 0) == ($70 | 0);
do {
if ($71) {
$72 = 1 << $64;
$73 = $72 ^ -1;
$74 = $6 & $73;
HEAP32[133240 >> 2] = $74;
} else {
$75 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$76 = $70 >>> 0 < $75 >>> 0;
if ($76) {
_abort();
// unreachable;
}
$77 = ($70 + 12) | 0;
$78 = HEAP32[$77 >> 2] | 0;
$79 = ($78 | 0) == ($68 | 0);
if ($79) {
HEAP32[$77 >> 2] = $66;
HEAP32[$67 >> 2] = $70;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$80 = $64 << 3;
$81 = ($80 - $5) | 0;
$82 = $5 | 3;
$83 = ($68 + 4) | 0;
HEAP32[$83 >> 2] = $82;
$84 = ($68 + $5) | 0;
$85 = $81 | 1;
$$sum56 = $5 | 4;
$86 = ($68 + $$sum56) | 0;
HEAP32[$86 >> 2] = $85;
$87 = ($68 + $80) | 0;
HEAP32[$87 >> 2] = $81;
$88 = HEAP32[((133240 + 8) | 0) >> 2] | 0;
$89 = ($88 | 0) == 0;
if (!$89) {
$90 = HEAP32[((133240 + 20) | 0) >> 2] | 0;
$91 = $88 >>> 3;
$92 = $91 << 1;
$93 = (((133240 + ($92 << 2)) | 0) + 40) | 0;
$94 = HEAP32[133240 >> 2] | 0;
$95 = 1 << $91;
$96 = $94 & $95;
$97 = ($96 | 0) == 0;
if ($97) {
$98 = $94 | $95;
HEAP32[133240 >> 2] = $98;
$$sum8$pre = ($92 + 2) | 0;
$$pre = (((133240 + ($$sum8$pre << 2)) | 0) + 40) | 0;
$$pre$phiZ2D = $$pre;
$F4$0 = $93;
} else {
$$sum9 = ($92 + 2) | 0;
$99 = (((133240 + ($$sum9 << 2)) | 0) + 40) | 0;
$100 = HEAP32[$99 >> 2] | 0;
$101 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$102 = $100 >>> 0 < $101 >>> 0;
if ($102) {
_abort();
// unreachable;
} else {
$$pre$phiZ2D = $99;
$F4$0 = $100;
}
}
HEAP32[$$pre$phiZ2D >> 2] = $90;
$103 = ($F4$0 + 12) | 0;
HEAP32[$103 >> 2] = $90;
$104 = ($90 + 8) | 0;
HEAP32[$104 >> 2] = $F4$0;
$105 = ($90 + 12) | 0;
HEAP32[$105 >> 2] = $93;
}
HEAP32[((133240 + 8) | 0) >> 2] = $81;
HEAP32[((133240 + 20) | 0) >> 2] = $84;
$mem$0 = $69;
STACKTOP = sp;
return $mem$0 | 0;
}
$106 = HEAP32[((133240 + 4) | 0) >> 2] | 0;
$107 = ($106 | 0) == 0;
if ($107) {
$nb$0 = $5;
} else {
$108 = (0 - $106) | 0;
$109 = $106 & $108;
$110 = ($109 + -1) | 0;
$111 = $110 >>> 12;
$112 = $111 & 16;
$113 = $110 >>> $112;
$114 = $113 >>> 5;
$115 = $114 & 8;
$116 = $115 | $112;
$117 = $113 >>> $115;
$118 = $117 >>> 2;
$119 = $118 & 4;
$120 = $116 | $119;
$121 = $117 >>> $119;
$122 = $121 >>> 1;
$123 = $122 & 2;
$124 = $120 | $123;
$125 = $121 >>> $123;
$126 = $125 >>> 1;
$127 = $126 & 1;
$128 = $124 | $127;
$129 = $125 >>> $127;
$130 = ($128 + $129) | 0;
$131 = (((133240 + ($130 << 2)) | 0) + 304) | 0;
$132 = HEAP32[$131 >> 2] | 0;
$133 = ($132 + 4) | 0;
$134 = HEAP32[$133 >> 2] | 0;
$135 = $134 & -8;
$136 = ($135 - $5) | 0;
$rsize$0$i = $136;
$t$0$i = $132;
$v$0$i = $132;
while (1) {
$137 = ($t$0$i + 16) | 0;
$138 = HEAP32[$137 >> 2] | 0;
$139 = ($138 | 0) == (0 | 0);
if ($139) {
$140 = ($t$0$i + 20) | 0;
$141 = HEAP32[$140 >> 2] | 0;
$142 = ($141 | 0) == (0 | 0);
if ($142) {
break;
} else {
$144 = $141;
}
} else {
$144 = $138;
}
$143 = ($144 + 4) | 0;
$145 = HEAP32[$143 >> 2] | 0;
$146 = $145 & -8;
$147 = ($146 - $5) | 0;
$148 = $147 >>> 0 < $rsize$0$i >>> 0;
$$rsize$0$i = $148 ? $147 : $rsize$0$i;
$$v$0$i = $148 ? $144 : $v$0$i;
$rsize$0$i = $$rsize$0$i;
$t$0$i = $144;
$v$0$i = $$v$0$i;
}
$149 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$150 = $v$0$i >>> 0 < $149 >>> 0;
if ($150) {
_abort();
// unreachable;
}
$151 = ($v$0$i + $5) | 0;
$152 = $v$0$i >>> 0 < $151 >>> 0;
if (!$152) {
_abort();
// unreachable;
}
$153 = ($v$0$i + 24) | 0;
$154 = HEAP32[$153 >> 2] | 0;
$155 = ($v$0$i + 12) | 0;
$156 = HEAP32[$155 >> 2] | 0;
$157 = ($156 | 0) == ($v$0$i | 0);
do {
if ($157) {
$167 = ($v$0$i + 20) | 0;
$168 = HEAP32[$167 >> 2] | 0;
$169 = ($168 | 0) == (0 | 0);
if ($169) {
$170 = ($v$0$i + 16) | 0;
$171 = HEAP32[$170 >> 2] | 0;
$172 = ($171 | 0) == (0 | 0);
if ($172) {
$R$1$i = 0;
break;
} else {
$R$0$i = $171;
$RP$0$i = $170;
}
} else {
$R$0$i = $168;
$RP$0$i = $167;
}
while (1) {
$173 = ($R$0$i + 20) | 0;
$174 = HEAP32[$173 >> 2] | 0;
$175 = ($174 | 0) == (0 | 0);
if (!$175) {
$R$0$i = $174;
$RP$0$i = $173;
continue;
}
$176 = ($R$0$i + 16) | 0;
$177 = HEAP32[$176 >> 2] | 0;
$178 = ($177 | 0) == (0 | 0);
if ($178) {
break;
} else {
$R$0$i = $177;
$RP$0$i = $176;
}
}
$179 = $RP$0$i >>> 0 < $149 >>> 0;
if ($179) {
_abort();
// unreachable;
} else {
HEAP32[$RP$0$i >> 2] = 0;
$R$1$i = $R$0$i;
break;
}
} else {
$158 = ($v$0$i + 8) | 0;
$159 = HEAP32[$158 >> 2] | 0;
$160 = $159 >>> 0 < $149 >>> 0;
if ($160) {
_abort();
// unreachable;
}
$161 = ($159 + 12) | 0;
$162 = HEAP32[$161 >> 2] | 0;
$163 = ($162 | 0) == ($v$0$i | 0);
if (!$163) {
_abort();
// unreachable;
}
$164 = ($156 + 8) | 0;
$165 = HEAP32[$164 >> 2] | 0;
$166 = ($165 | 0) == ($v$0$i | 0);
if ($166) {
HEAP32[$161 >> 2] = $156;
HEAP32[$164 >> 2] = $159;
$R$1$i = $156;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$180 = ($154 | 0) == (0 | 0);
do {
if (!$180) {
$181 = ($v$0$i + 28) | 0;
$182 = HEAP32[$181 >> 2] | 0;
$183 = (((133240 + ($182 << 2)) | 0) + 304) | 0;
$184 = HEAP32[$183 >> 2] | 0;
$185 = ($v$0$i | 0) == ($184 | 0);
if ($185) {
HEAP32[$183 >> 2] = $R$1$i;
$cond$i = ($R$1$i | 0) == (0 | 0);
if ($cond$i) {
$186 = 1 << $182;
$187 = $186 ^ -1;
$188 = HEAP32[((133240 + 4) | 0) >> 2] | 0;
$189 = $188 & $187;
HEAP32[((133240 + 4) | 0) >> 2] = $189;
break;
}
} else {
$190 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$191 = $154 >>> 0 < $190 >>> 0;
if ($191) {
_abort();
// unreachable;
}
$192 = ($154 + 16) | 0;
$193 = HEAP32[$192 >> 2] | 0;
$194 = ($193 | 0) == ($v$0$i | 0);
if ($194) {
HEAP32[$192 >> 2] = $R$1$i;
} else {
$195 = ($154 + 20) | 0;
HEAP32[$195 >> 2] = $R$1$i;
}
$196 = ($R$1$i | 0) == (0 | 0);
if ($196) {
break;
}
}
$197 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$198 = $R$1$i >>> 0 < $197 >>> 0;
if ($198) {
_abort();
// unreachable;
}
$199 = ($R$1$i + 24) | 0;
HEAP32[$199 >> 2] = $154;
$200 = ($v$0$i + 16) | 0;
$201 = HEAP32[$200 >> 2] | 0;
$202 = ($201 | 0) == (0 | 0);
do {
if (!$202) {
$203 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$204 = $201 >>> 0 < $203 >>> 0;
if ($204) {
_abort();
// unreachable;
} else {
$205 = ($R$1$i + 16) | 0;
HEAP32[$205 >> 2] = $201;
$206 = ($201 + 24) | 0;
HEAP32[$206 >> 2] = $R$1$i;
break;
}
}
} while (0);
$207 = ($v$0$i + 20) | 0;
$208 = HEAP32[$207 >> 2] | 0;
$209 = ($208 | 0) == (0 | 0);
if (!$209) {
$210 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$211 = $208 >>> 0 < $210 >>> 0;
if ($211) {
_abort();
// unreachable;
} else {
$212 = ($R$1$i + 20) | 0;
HEAP32[$212 >> 2] = $208;
$213 = ($208 + 24) | 0;
HEAP32[$213 >> 2] = $R$1$i;
break;
}
}
}
} while (0);
$214 = $rsize$0$i >>> 0 < 16;
if ($214) {
$215 = ($rsize$0$i + $5) | 0;
$216 = $215 | 3;
$217 = ($v$0$i + 4) | 0;
HEAP32[$217 >> 2] = $216;
$$sum4$i = ($215 + 4) | 0;
$218 = ($v$0$i + $$sum4$i) | 0;
$219 = HEAP32[$218 >> 2] | 0;
$220 = $219 | 1;
HEAP32[$218 >> 2] = $220;
} else {
$221 = $5 | 3;
$222 = ($v$0$i + 4) | 0;
HEAP32[$222 >> 2] = $221;
$223 = $rsize$0$i | 1;
$$sum$i35 = $5 | 4;
$224 = ($v$0$i + $$sum$i35) | 0;
HEAP32[$224 >> 2] = $223;
$$sum1$i = ($rsize$0$i + $5) | 0;
$225 = ($v$0$i + $$sum1$i) | 0;
HEAP32[$225 >> 2] = $rsize$0$i;
$226 = HEAP32[((133240 + 8) | 0) >> 2] | 0;
$227 = ($226 | 0) == 0;
if (!$227) {
$228 = HEAP32[((133240 + 20) | 0) >> 2] | 0;
$229 = $226 >>> 3;
$230 = $229 << 1;
$231 = (((133240 + ($230 << 2)) | 0) + 40) | 0;
$232 = HEAP32[133240 >> 2] | 0;
$233 = 1 << $229;
$234 = $232 & $233;
$235 = ($234 | 0) == 0;
if ($235) {
$236 = $232 | $233;
HEAP32[133240 >> 2] = $236;
$$sum2$pre$i = ($230 + 2) | 0;
$$pre$i = (((133240 + ($$sum2$pre$i << 2)) | 0) + 40) | 0;
$$pre$phi$iZ2D = $$pre$i;
$F1$0$i = $231;
} else {
$$sum3$i = ($230 + 2) | 0;
$237 = (((133240 + ($$sum3$i << 2)) | 0) + 40) | 0;
$238 = HEAP32[$237 >> 2] | 0;
$239 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$240 = $238 >>> 0 < $239 >>> 0;
if ($240) {
_abort();
// unreachable;
} else {
$$pre$phi$iZ2D = $237;
$F1$0$i = $238;
}
}
HEAP32[$$pre$phi$iZ2D >> 2] = $228;
$241 = ($F1$0$i + 12) | 0;
HEAP32[$241 >> 2] = $228;
$242 = ($228 + 8) | 0;
HEAP32[$242 >> 2] = $F1$0$i;
$243 = ($228 + 12) | 0;
HEAP32[$243 >> 2] = $231;
}
HEAP32[((133240 + 8) | 0) >> 2] = $rsize$0$i;
HEAP32[((133240 + 20) | 0) >> 2] = $151;
}
$244 = ($v$0$i + 8) | 0;
$mem$0 = $244;
STACKTOP = sp;
return $mem$0 | 0;
}
} else {
$nb$0 = $5;
}
} else {
$245 = $bytes >>> 0 > 4294967231;
if ($245) {
$nb$0 = -1;
} else {
$246 = ($bytes + 11) | 0;
$247 = $246 & -8;
$248 = HEAP32[((133240 + 4) | 0) >> 2] | 0;
$249 = ($248 | 0) == 0;
if ($249) {
$nb$0 = $247;
} else {
$250 = (0 - $247) | 0;
$251 = $246 >>> 8;
$252 = ($251 | 0) == 0;
if ($252) {
$idx$0$i = 0;
} else {
$253 = $247 >>> 0 > 16777215;
if ($253) {
$idx$0$i = 31;
} else {
$254 = ($251 + 1048320) | 0;
$255 = $254 >>> 16;
$256 = $255 & 8;
$257 = $251 << $256;
$258 = ($257 + 520192) | 0;
$259 = $258 >>> 16;
$260 = $259 & 4;
$261 = $260 | $256;
$262 = $257 << $260;
$263 = ($262 + 245760) | 0;
$264 = $263 >>> 16;
$265 = $264 & 2;
$266 = $261 | $265;
$267 = (14 - $266) | 0;
$268 = $262 << $265;
$269 = $268 >>> 15;
$270 = ($267 + $269) | 0;
$271 = $270 << 1;
$272 = ($270 + 7) | 0;
$273 = $247 >>> $272;
$274 = $273 & 1;
$275 = $274 | $271;
$idx$0$i = $275;
}
}
$276 = (((133240 + ($idx$0$i << 2)) | 0) + 304) | 0;
$277 = HEAP32[$276 >> 2] | 0;
$278 = ($277 | 0) == (0 | 0);
L126: do {
if ($278) {
$rsize$2$i = $250;
$t$1$i = 0;
$v$2$i = 0;
} else {
$279 = ($idx$0$i | 0) == 31;
if ($279) {
$283 = 0;
} else {
$280 = $idx$0$i >>> 1;
$281 = (25 - $280) | 0;
$283 = $281;
}
$282 = $247 << $283;
$rsize$0$i15 = $250;
$rst$0$i = 0;
$sizebits$0$i = $282;
$t$0$i14 = $277;
$v$0$i16 = 0;
while (1) {
$284 = ($t$0$i14 + 4) | 0;
$285 = HEAP32[$284 >> 2] | 0;
$286 = $285 & -8;
$287 = ($286 - $247) | 0;
$288 = $287 >>> 0 < $rsize$0$i15 >>> 0;
if ($288) {
$289 = ($286 | 0) == ($247 | 0);
if ($289) {
$rsize$2$i = $287;
$t$1$i = $t$0$i14;
$v$2$i = $t$0$i14;
break L126;
} else {
$rsize$1$i = $287;
$v$1$i = $t$0$i14;
}
} else {
$rsize$1$i = $rsize$0$i15;
$v$1$i = $v$0$i16;
}
$290 = ($t$0$i14 + 20) | 0;
$291 = HEAP32[$290 >> 2] | 0;
$292 = $sizebits$0$i >>> 31;
$293 = ((($t$0$i14 + ($292 << 2)) | 0) + 16) | 0;
$294 = HEAP32[$293 >> 2] | 0;
$295 = ($291 | 0) == (0 | 0);
$296 = ($291 | 0) == ($294 | 0);
$or$cond$i = $295 | $296;
$rst$1$i = $or$cond$i ? $rst$0$i : $291;
$297 = ($294 | 0) == (0 | 0);
$298 = $sizebits$0$i << 1;
if ($297) {
$rsize$2$i = $rsize$1$i;
$t$1$i = $rst$1$i;
$v$2$i = $v$1$i;
break;
} else {
$rsize$0$i15 = $rsize$1$i;
$rst$0$i = $rst$1$i;
$sizebits$0$i = $298;
$t$0$i14 = $294;
$v$0$i16 = $v$1$i;
}
}
}
} while (0);
$299 = ($t$1$i | 0) == (0 | 0);
$300 = ($v$2$i | 0) == (0 | 0);
$or$cond19$i = $299 & $300;
if ($or$cond19$i) {
$301 = 2 << $idx$0$i;
$302 = (0 - $301) | 0;
$303 = $301 | $302;
$304 = $248 & $303;
$305 = ($304 | 0) == 0;
if ($305) {
$nb$0 = $247;
break;
}
$306 = (0 - $304) | 0;
$307 = $304 & $306;
$308 = ($307 + -1) | 0;
$309 = $308 >>> 12;
$310 = $309 & 16;
$311 = $308 >>> $310;
$312 = $311 >>> 5;
$313 = $312 & 8;
$314 = $313 | $310;
$315 = $311 >>> $313;
$316 = $315 >>> 2;
$317 = $316 & 4;
$318 = $314 | $317;
$319 = $315 >>> $317;
$320 = $319 >>> 1;
$321 = $320 & 2;
$322 = $318 | $321;
$323 = $319 >>> $321;
$324 = $323 >>> 1;
$325 = $324 & 1;
$326 = $322 | $325;
$327 = $323 >>> $325;
$328 = ($326 + $327) | 0;
$329 = (((133240 + ($328 << 2)) | 0) + 304) | 0;
$330 = HEAP32[$329 >> 2] | 0;
$t$2$ph$i = $330;
} else {
$t$2$ph$i = $t$1$i;
}
$331 = ($t$2$ph$i | 0) == (0 | 0);
if ($331) {
$rsize$3$lcssa$i = $rsize$2$i;
$v$3$lcssa$i = $v$2$i;
} else {
$rsize$329$i = $rsize$2$i;
$t$228$i = $t$2$ph$i;
$v$330$i = $v$2$i;
while (1) {
$332 = ($t$228$i + 4) | 0;
$333 = HEAP32[$332 >> 2] | 0;
$334 = $333 & -8;
$335 = ($334 - $247) | 0;
$336 = $335 >>> 0 < $rsize$329$i >>> 0;
$$rsize$3$i = $336 ? $335 : $rsize$329$i;
$t$2$v$3$i = $336 ? $t$228$i : $v$330$i;
$337 = ($t$228$i + 16) | 0;
$338 = HEAP32[$337 >> 2] | 0;
$339 = ($338 | 0) == (0 | 0);
if (!$339) {
$rsize$329$i = $$rsize$3$i;
$t$228$i = $338;
$v$330$i = $t$2$v$3$i;
continue;
}
$340 = ($t$228$i + 20) | 0;
$341 = HEAP32[$340 >> 2] | 0;
$342 = ($341 | 0) == (0 | 0);
if ($342) {
$rsize$3$lcssa$i = $$rsize$3$i;
$v$3$lcssa$i = $t$2$v$3$i;
break;
} else {
$rsize$329$i = $$rsize$3$i;
$t$228$i = $341;
$v$330$i = $t$2$v$3$i;
}
}
}
$343 = ($v$3$lcssa$i | 0) == (0 | 0);
if ($343) {
$nb$0 = $247;
} else {
$344 = HEAP32[((133240 + 8) | 0) >> 2] | 0;
$345 = ($344 - $247) | 0;
$346 = $rsize$3$lcssa$i >>> 0 < $345 >>> 0;
if ($346) {
$347 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$348 = $v$3$lcssa$i >>> 0 < $347 >>> 0;
if ($348) {
_abort();
// unreachable;
}
$349 = ($v$3$lcssa$i + $247) | 0;
$350 = $v$3$lcssa$i >>> 0 < $349 >>> 0;
if (!$350) {
_abort();
// unreachable;
}
$351 = ($v$3$lcssa$i + 24) | 0;
$352 = HEAP32[$351 >> 2] | 0;
$353 = ($v$3$lcssa$i + 12) | 0;
$354 = HEAP32[$353 >> 2] | 0;
$355 = ($354 | 0) == ($v$3$lcssa$i | 0);
do {
if ($355) {
$365 = ($v$3$lcssa$i + 20) | 0;
$366 = HEAP32[$365 >> 2] | 0;
$367 = ($366 | 0) == (0 | 0);
if ($367) {
$368 = ($v$3$lcssa$i + 16) | 0;
$369 = HEAP32[$368 >> 2] | 0;
$370 = ($369 | 0) == (0 | 0);
if ($370) {
$R$1$i20 = 0;
break;
} else {
$R$0$i18 = $369;
$RP$0$i17 = $368;
}
} else {
$R$0$i18 = $366;
$RP$0$i17 = $365;
}
while (1) {
$371 = ($R$0$i18 + 20) | 0;
$372 = HEAP32[$371 >> 2] | 0;
$373 = ($372 | 0) == (0 | 0);
if (!$373) {
$R$0$i18 = $372;
$RP$0$i17 = $371;
continue;
}
$374 = ($R$0$i18 + 16) | 0;
$375 = HEAP32[$374 >> 2] | 0;
$376 = ($375 | 0) == (0 | 0);
if ($376) {
break;
} else {
$R$0$i18 = $375;
$RP$0$i17 = $374;
}
}
$377 = $RP$0$i17 >>> 0 < $347 >>> 0;
if ($377) {
_abort();
// unreachable;
} else {
HEAP32[$RP$0$i17 >> 2] = 0;
$R$1$i20 = $R$0$i18;
break;
}
} else {
$356 = ($v$3$lcssa$i + 8) | 0;
$357 = HEAP32[$356 >> 2] | 0;
$358 = $357 >>> 0 < $347 >>> 0;
if ($358) {
_abort();
// unreachable;
}
$359 = ($357 + 12) | 0;
$360 = HEAP32[$359 >> 2] | 0;
$361 = ($360 | 0) == ($v$3$lcssa$i | 0);
if (!$361) {
_abort();
// unreachable;
}
$362 = ($354 + 8) | 0;
$363 = HEAP32[$362 >> 2] | 0;
$364 = ($363 | 0) == ($v$3$lcssa$i | 0);
if ($364) {
HEAP32[$359 >> 2] = $354;
HEAP32[$362 >> 2] = $357;
$R$1$i20 = $354;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$378 = ($352 | 0) == (0 | 0);
do {
if (!$378) {
$379 = ($v$3$lcssa$i + 28) | 0;
$380 = HEAP32[$379 >> 2] | 0;
$381 = (((133240 + ($380 << 2)) | 0) + 304) | 0;
$382 = HEAP32[$381 >> 2] | 0;
$383 = ($v$3$lcssa$i | 0) == ($382 | 0);
if ($383) {
HEAP32[$381 >> 2] = $R$1$i20;
$cond$i21 = ($R$1$i20 | 0) == (0 | 0);
if ($cond$i21) {
$384 = 1 << $380;
$385 = $384 ^ -1;
$386 = HEAP32[((133240 + 4) | 0) >> 2] | 0;
$387 = $386 & $385;
HEAP32[((133240 + 4) | 0) >> 2] = $387;
break;
}
} else {
$388 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$389 = $352 >>> 0 < $388 >>> 0;
if ($389) {
_abort();
// unreachable;
}
$390 = ($352 + 16) | 0;
$391 = HEAP32[$390 >> 2] | 0;
$392 = ($391 | 0) == ($v$3$lcssa$i | 0);
if ($392) {
HEAP32[$390 >> 2] = $R$1$i20;
} else {
$393 = ($352 + 20) | 0;
HEAP32[$393 >> 2] = $R$1$i20;
}
$394 = ($R$1$i20 | 0) == (0 | 0);
if ($394) {
break;
}
}
$395 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$396 = $R$1$i20 >>> 0 < $395 >>> 0;
if ($396) {
_abort();
// unreachable;
}
$397 = ($R$1$i20 + 24) | 0;
HEAP32[$397 >> 2] = $352;
$398 = ($v$3$lcssa$i + 16) | 0;
$399 = HEAP32[$398 >> 2] | 0;
$400 = ($399 | 0) == (0 | 0);
do {
if (!$400) {
$401 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$402 = $399 >>> 0 < $401 >>> 0;
if ($402) {
_abort();
// unreachable;
} else {
$403 = ($R$1$i20 + 16) | 0;
HEAP32[$403 >> 2] = $399;
$404 = ($399 + 24) | 0;
HEAP32[$404 >> 2] = $R$1$i20;
break;
}
}
} while (0);
$405 = ($v$3$lcssa$i + 20) | 0;
$406 = HEAP32[$405 >> 2] | 0;
$407 = ($406 | 0) == (0 | 0);
if (!$407) {
$408 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$409 = $406 >>> 0 < $408 >>> 0;
if ($409) {
_abort();
// unreachable;
} else {
$410 = ($R$1$i20 + 20) | 0;
HEAP32[$410 >> 2] = $406;
$411 = ($406 + 24) | 0;
HEAP32[$411 >> 2] = $R$1$i20;
break;
}
}
}
} while (0);
$412 = $rsize$3$lcssa$i >>> 0 < 16;
L204: do {
if ($412) {
$413 = ($rsize$3$lcssa$i + $247) | 0;
$414 = $413 | 3;
$415 = ($v$3$lcssa$i + 4) | 0;
HEAP32[$415 >> 2] = $414;
$$sum18$i = ($413 + 4) | 0;
$416 = ($v$3$lcssa$i + $$sum18$i) | 0;
$417 = HEAP32[$416 >> 2] | 0;
$418 = $417 | 1;
HEAP32[$416 >> 2] = $418;
} else {
$419 = $247 | 3;
$420 = ($v$3$lcssa$i + 4) | 0;
HEAP32[$420 >> 2] = $419;
$421 = $rsize$3$lcssa$i | 1;
$$sum$i2334 = $247 | 4;
$422 = ($v$3$lcssa$i + $$sum$i2334) | 0;
HEAP32[$422 >> 2] = $421;
$$sum1$i24 = ($rsize$3$lcssa$i + $247) | 0;
$423 = ($v$3$lcssa$i + $$sum1$i24) | 0;
HEAP32[$423 >> 2] = $rsize$3$lcssa$i;
$424 = $rsize$3$lcssa$i >>> 3;
$425 = $rsize$3$lcssa$i >>> 0 < 256;
if ($425) {
$426 = $424 << 1;
$427 = (((133240 + ($426 << 2)) | 0) + 40) | 0;
$428 = HEAP32[133240 >> 2] | 0;
$429 = 1 << $424;
$430 = $428 & $429;
$431 = ($430 | 0) == 0;
do {
if ($431) {
$432 = $428 | $429;
HEAP32[133240 >> 2] = $432;
$$sum14$pre$i = ($426 + 2) | 0;
$$pre$i25 = (((133240 + ($$sum14$pre$i << 2)) | 0) + 40) | 0;
$$pre$phi$i26Z2D = $$pre$i25;
$F5$0$i = $427;
} else {
$$sum17$i = ($426 + 2) | 0;
$433 = (((133240 + ($$sum17$i << 2)) | 0) + 40) | 0;
$434 = HEAP32[$433 >> 2] | 0;
$435 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$436 = $434 >>> 0 < $435 >>> 0;
if (!$436) {
$$pre$phi$i26Z2D = $433;
$F5$0$i = $434;
break;
}
_abort();
// unreachable;
}
} while (0);
HEAP32[$$pre$phi$i26Z2D >> 2] = $349;
$437 = ($F5$0$i + 12) | 0;
HEAP32[$437 >> 2] = $349;
$$sum15$i = ($247 + 8) | 0;
$438 = ($v$3$lcssa$i + $$sum15$i) | 0;
HEAP32[$438 >> 2] = $F5$0$i;
$$sum16$i = ($247 + 12) | 0;
$439 = ($v$3$lcssa$i + $$sum16$i) | 0;
HEAP32[$439 >> 2] = $427;
break;
}
$440 = $rsize$3$lcssa$i >>> 8;
$441 = ($440 | 0) == 0;
if ($441) {
$I7$0$i = 0;
} else {
$442 = $rsize$3$lcssa$i >>> 0 > 16777215;
if ($442) {
$I7$0$i = 31;
} else {
$443 = ($440 + 1048320) | 0;
$444 = $443 >>> 16;
$445 = $444 & 8;
$446 = $440 << $445;
$447 = ($446 + 520192) | 0;
$448 = $447 >>> 16;
$449 = $448 & 4;
$450 = $449 | $445;
$451 = $446 << $449;
$452 = ($451 + 245760) | 0;
$453 = $452 >>> 16;
$454 = $453 & 2;
$455 = $450 | $454;
$456 = (14 - $455) | 0;
$457 = $451 << $454;
$458 = $457 >>> 15;
$459 = ($456 + $458) | 0;
$460 = $459 << 1;
$461 = ($459 + 7) | 0;
$462 = $rsize$3$lcssa$i >>> $461;
$463 = $462 & 1;
$464 = $463 | $460;
$I7$0$i = $464;
}
}
$465 = (((133240 + ($I7$0$i << 2)) | 0) + 304) | 0;
$$sum2$i = ($247 + 28) | 0;
$466 = ($v$3$lcssa$i + $$sum2$i) | 0;
HEAP32[$466 >> 2] = $I7$0$i;
$$sum3$i27 = ($247 + 16) | 0;
$467 = ($v$3$lcssa$i + $$sum3$i27) | 0;
$$sum4$i28 = ($247 + 20) | 0;
$468 = ($v$3$lcssa$i + $$sum4$i28) | 0;
HEAP32[$468 >> 2] = 0;
HEAP32[$467 >> 2] = 0;
$469 = HEAP32[((133240 + 4) | 0) >> 2] | 0;
$470 = 1 << $I7$0$i;
$471 = $469 & $470;
$472 = ($471 | 0) == 0;
if ($472) {
$473 = $469 | $470;
HEAP32[((133240 + 4) | 0) >> 2] = $473;
HEAP32[$465 >> 2] = $349;
$$sum5$i = ($247 + 24) | 0;
$474 = ($v$3$lcssa$i + $$sum5$i) | 0;
HEAP32[$474 >> 2] = $465;
$$sum6$i = ($247 + 12) | 0;
$475 = ($v$3$lcssa$i + $$sum6$i) | 0;
HEAP32[$475 >> 2] = $349;
$$sum7$i = ($247 + 8) | 0;
$476 = ($v$3$lcssa$i + $$sum7$i) | 0;
HEAP32[$476 >> 2] = $349;
break;
}
$477 = HEAP32[$465 >> 2] | 0;
$478 = ($I7$0$i | 0) == 31;
if ($478) {
$486 = 0;
} else {
$479 = $I7$0$i >>> 1;
$480 = (25 - $479) | 0;
$486 = $480;
}
$481 = ($477 + 4) | 0;
$482 = HEAP32[$481 >> 2] | 0;
$483 = $482 & -8;
$484 = ($483 | 0) == ($rsize$3$lcssa$i | 0);
L225: do {
if ($484) {
$T$0$lcssa$i = $477;
} else {
$485 = $rsize$3$lcssa$i << $486;
$K12$025$i = $485;
$T$024$i = $477;
while (1) {
$493 = $K12$025$i >>> 31;
$494 = ((($T$024$i + ($493 << 2)) | 0) + 16) | 0;
$489 = HEAP32[$494 >> 2] | 0;
$495 = ($489 | 0) == (0 | 0);
if ($495) {
break;
}
$487 = $K12$025$i << 1;
$488 = ($489 + 4) | 0;
$490 = HEAP32[$488 >> 2] | 0;
$491 = $490 & -8;
$492 = ($491 | 0) == ($rsize$3$lcssa$i | 0);
if ($492) {
$T$0$lcssa$i = $489;
break L225;
} else {
$K12$025$i = $487;
$T$024$i = $489;
}
}
$496 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$497 = $494 >>> 0 < $496 >>> 0;
if ($497) {
_abort();
// unreachable;
} else {
HEAP32[$494 >> 2] = $349;
$$sum11$i = ($247 + 24) | 0;
$498 = ($v$3$lcssa$i + $$sum11$i) | 0;
HEAP32[$498 >> 2] = $T$024$i;
$$sum12$i = ($247 + 12) | 0;
$499 = ($v$3$lcssa$i + $$sum12$i) | 0;
HEAP32[$499 >> 2] = $349;
$$sum13$i = ($247 + 8) | 0;
$500 = ($v$3$lcssa$i + $$sum13$i) | 0;
HEAP32[$500 >> 2] = $349;
break L204;
}
}
} while (0);
$501 = ($T$0$lcssa$i + 8) | 0;
$502 = HEAP32[$501 >> 2] | 0;
$503 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$504 = $T$0$lcssa$i >>> 0 < $503 >>> 0;
if ($504) {
_abort();
// unreachable;
}
$505 = $502 >>> 0 < $503 >>> 0;
if ($505) {
_abort();
// unreachable;
} else {
$506 = ($502 + 12) | 0;
HEAP32[$506 >> 2] = $349;
HEAP32[$501 >> 2] = $349;
$$sum8$i = ($247 + 8) | 0;
$507 = ($v$3$lcssa$i + $$sum8$i) | 0;
HEAP32[$507 >> 2] = $502;
$$sum9$i = ($247 + 12) | 0;
$508 = ($v$3$lcssa$i + $$sum9$i) | 0;
HEAP32[$508 >> 2] = $T$0$lcssa$i;
$$sum10$i = ($247 + 24) | 0;
$509 = ($v$3$lcssa$i + $$sum10$i) | 0;
HEAP32[$509 >> 2] = 0;
break;
}
}
} while (0);
$510 = ($v$3$lcssa$i + 8) | 0;
$mem$0 = $510;
STACKTOP = sp;
return $mem$0 | 0;
} else {
$nb$0 = $247;
}
}
}
}
}
} while (0);
$511 = HEAP32[((133240 + 8) | 0) >> 2] | 0;
$512 = $nb$0 >>> 0 > $511 >>> 0;
if (!$512) {
$513 = ($511 - $nb$0) | 0;
$514 = HEAP32[((133240 + 20) | 0) >> 2] | 0;
$515 = $513 >>> 0 > 15;
if ($515) {
$516 = ($514 + $nb$0) | 0;
HEAP32[((133240 + 20) | 0) >> 2] = $516;
HEAP32[((133240 + 8) | 0) >> 2] = $513;
$517 = $513 | 1;
$$sum2 = ($nb$0 + 4) | 0;
$518 = ($514 + $$sum2) | 0;
HEAP32[$518 >> 2] = $517;
$519 = ($514 + $511) | 0;
HEAP32[$519 >> 2] = $513;
$520 = $nb$0 | 3;
$521 = ($514 + 4) | 0;
HEAP32[$521 >> 2] = $520;
} else {
HEAP32[((133240 + 8) | 0) >> 2] = 0;
HEAP32[((133240 + 20) | 0) >> 2] = 0;
$522 = $511 | 3;
$523 = ($514 + 4) | 0;
HEAP32[$523 >> 2] = $522;
$$sum1 = ($511 + 4) | 0;
$524 = ($514 + $$sum1) | 0;
$525 = HEAP32[$524 >> 2] | 0;
$526 = $525 | 1;
HEAP32[$524 >> 2] = $526;
}
$527 = ($514 + 8) | 0;
$mem$0 = $527;
STACKTOP = sp;
return $mem$0 | 0;
}
$528 = HEAP32[((133240 + 12) | 0) >> 2] | 0;
$529 = $nb$0 >>> 0 < $528 >>> 0;
if ($529) {
$530 = ($528 - $nb$0) | 0;
HEAP32[((133240 + 12) | 0) >> 2] = $530;
$531 = HEAP32[((133240 + 24) | 0) >> 2] | 0;
$532 = ($531 + $nb$0) | 0;
HEAP32[((133240 + 24) | 0) >> 2] = $532;
$533 = $530 | 1;
$$sum = ($nb$0 + 4) | 0;
$534 = ($531 + $$sum) | 0;
HEAP32[$534 >> 2] = $533;
$535 = $nb$0 | 3;
$536 = ($531 + 4) | 0;
HEAP32[$536 >> 2] = $535;
$537 = ($531 + 8) | 0;
$mem$0 = $537;
STACKTOP = sp;
return $mem$0 | 0;
}
$538 = HEAP32[133712 >> 2] | 0;
$539 = ($538 | 0) == 0;
do {
if ($539) {
$540 = _sysconf(30) | 0;
$541 = ($540 + -1) | 0;
$542 = $541 & $540;
$543 = ($542 | 0) == 0;
if ($543) {
HEAP32[((133712 + 8) | 0) >> 2] = $540;
HEAP32[((133712 + 4) | 0) >> 2] = $540;
HEAP32[((133712 + 12) | 0) >> 2] = -1;
HEAP32[((133712 + 16) | 0) >> 2] = -1;
HEAP32[((133712 + 20) | 0) >> 2] = 0;
HEAP32[((133240 + 444) | 0) >> 2] = 0;
$544 = _time(0 | 0) | 0;
$545 = $544 & -16;
$546 = $545 ^ 1431655768;
HEAP32[133712 >> 2] = $546;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$547 = ($nb$0 + 48) | 0;
$548 = HEAP32[((133712 + 8) | 0) >> 2] | 0;
$549 = ($nb$0 + 47) | 0;
$550 = ($548 + $549) | 0;
$551 = (0 - $548) | 0;
$552 = $550 & $551;
$553 = $552 >>> 0 > $nb$0 >>> 0;
if (!$553) {
$mem$0 = 0;
STACKTOP = sp;
return $mem$0 | 0;
}
$554 = HEAP32[((133240 + 440) | 0) >> 2] | 0;
$555 = ($554 | 0) == 0;
if (!$555) {
$556 = HEAP32[((133240 + 432) | 0) >> 2] | 0;
$557 = ($556 + $552) | 0;
$558 = $557 >>> 0 <= $556 >>> 0;
$559 = $557 >>> 0 > $554 >>> 0;
$or$cond1$i = $558 | $559;
if ($or$cond1$i) {
$mem$0 = 0;
STACKTOP = sp;
return $mem$0 | 0;
}
}
$560 = HEAP32[((133240 + 444) | 0) >> 2] | 0;
$561 = $560 & 4;
$562 = ($561 | 0) == 0;
L269: do {
if ($562) {
$563 = HEAP32[((133240 + 24) | 0) >> 2] | 0;
$564 = ($563 | 0) == (0 | 0);
L271: do {
if ($564) {
label = 182;
} else {
$sp$0$i$i = (133240 + 448) | 0;
while (1) {
$565 = HEAP32[$sp$0$i$i >> 2] | 0;
$566 = $565 >>> 0 > $563 >>> 0;
if (!$566) {
$567 = ($sp$0$i$i + 4) | 0;
$568 = HEAP32[$567 >> 2] | 0;
$569 = ($565 + $568) | 0;
$570 = $569 >>> 0 > $563 >>> 0;
if ($570) {
break;
}
}
$571 = ($sp$0$i$i + 8) | 0;
$572 = HEAP32[$571 >> 2] | 0;
$573 = ($572 | 0) == (0 | 0);
if ($573) {
label = 182;
break L271;
} else {
$sp$0$i$i = $572;
}
}
$574 = ($sp$0$i$i | 0) == (0 | 0);
if ($574) {
label = 182;
} else {
$597 = HEAP32[((133240 + 12) | 0) >> 2] | 0;
$598 = ($550 - $597) | 0;
$599 = $598 & $551;
$600 = $599 >>> 0 < 2147483647;
if ($600) {
$601 = _sbrk($599 | 0) | 0;
$602 = HEAP32[$sp$0$i$i >> 2] | 0;
$603 = HEAP32[$567 >> 2] | 0;
$604 = ($602 + $603) | 0;
$605 = ($601 | 0) == ($604 | 0);
$$3$i = $605 ? $599 : 0;
$$4$i = $605 ? $601 : -1;
$br$0$i = $601;
$ssize$1$i = $599;
$tbase$0$i = $$4$i;
$tsize$0$i = $$3$i;
label = 191;
} else {
$tsize$0323841$i = 0;
}
}
}
} while (0);
do {
if ((label | 0) == 182) {
$575 = _sbrk(0) | 0;
$576 = ($575 | 0) == (-1 | 0);
if ($576) {
$tsize$0323841$i = 0;
} else {
$577 = $575;
$578 = HEAP32[((133712 + 4) | 0) >> 2] | 0;
$579 = ($578 + -1) | 0;
$580 = $579 & $577;
$581 = ($580 | 0) == 0;
if ($581) {
$ssize$0$i = $552;
} else {
$582 = ($579 + $577) | 0;
$583 = (0 - $578) | 0;
$584 = $582 & $583;
$585 = ($552 - $577) | 0;
$586 = ($585 + $584) | 0;
$ssize$0$i = $586;
}
$587 = HEAP32[((133240 + 432) | 0) >> 2] | 0;
$588 = ($587 + $ssize$0$i) | 0;
$589 = $ssize$0$i >>> 0 > $nb$0 >>> 0;
$590 = $ssize$0$i >>> 0 < 2147483647;
$or$cond$i29 = $589 & $590;
if ($or$cond$i29) {
$591 = HEAP32[((133240 + 440) | 0) >> 2] | 0;
$592 = ($591 | 0) == 0;
if (!$592) {
$593 = $588 >>> 0 <= $587 >>> 0;
$594 = $588 >>> 0 > $591 >>> 0;
$or$cond2$i = $593 | $594;
if ($or$cond2$i) {
$tsize$0323841$i = 0;
break;
}
}
$595 = _sbrk($ssize$0$i | 0) | 0;
$596 = ($595 | 0) == ($575 | 0);
$ssize$0$$i = $596 ? $ssize$0$i : 0;
$$$i = $596 ? $575 : -1;
$br$0$i = $595;
$ssize$1$i = $ssize$0$i;
$tbase$0$i = $$$i;
$tsize$0$i = $ssize$0$$i;
label = 191;
} else {
$tsize$0323841$i = 0;
}
}
}
} while (0);
L291: do {
if ((label | 0) == 191) {
$606 = (0 - $ssize$1$i) | 0;
$607 = ($tbase$0$i | 0) == (-1 | 0);
if (!$607) {
$tbase$247$i = $tbase$0$i;
$tsize$246$i = $tsize$0$i;
label = 202;
break L269;
}
$608 = ($br$0$i | 0) != (-1 | 0);
$609 = $ssize$1$i >>> 0 < 2147483647;
$or$cond5$i = $608 & $609;
$610 = $ssize$1$i >>> 0 < $547 >>> 0;
$or$cond6$i = $or$cond5$i & $610;
do {
if ($or$cond6$i) {
$611 = HEAP32[((133712 + 8) | 0) >> 2] | 0;
$612 = ($549 - $ssize$1$i) | 0;
$613 = ($612 + $611) | 0;
$614 = (0 - $611) | 0;
$615 = $613 & $614;
$616 = $615 >>> 0 < 2147483647;
if ($616) {
$617 = _sbrk($615 | 0) | 0;
$618 = ($617 | 0) == (-1 | 0);
if ($618) {
_sbrk($606 | 0) | 0;
$tsize$0323841$i = $tsize$0$i;
break L291;
} else {
$619 = ($615 + $ssize$1$i) | 0;
$ssize$2$i = $619;
break;
}
} else {
$ssize$2$i = $ssize$1$i;
}
} else {
$ssize$2$i = $ssize$1$i;
}
} while (0);
$620 = ($br$0$i | 0) == (-1 | 0);
if ($620) {
$tsize$0323841$i = $tsize$0$i;
} else {
$tbase$247$i = $br$0$i;
$tsize$246$i = $ssize$2$i;
label = 202;
break L269;
}
}
} while (0);
$621 = HEAP32[((133240 + 444) | 0) >> 2] | 0;
$622 = $621 | 4;
HEAP32[((133240 + 444) | 0) >> 2] = $622;
$tsize$1$i = $tsize$0323841$i;
label = 199;
} else {
$tsize$1$i = 0;
label = 199;
}
} while (0);
if ((label | 0) == 199) {
$623 = $552 >>> 0 < 2147483647;
if ($623) {
$624 = _sbrk($552 | 0) | 0;
$625 = _sbrk(0) | 0;
$notlhs$i = ($624 | 0) != (-1 | 0);
$notrhs$i = ($625 | 0) != (-1 | 0);
$or$cond8$not$i = $notrhs$i & $notlhs$i;
$626 = $624 >>> 0 < $625 >>> 0;
$or$cond9$i = $or$cond8$not$i & $626;
if ($or$cond9$i) {
$627 = $625;
$628 = $624;
$629 = ($627 - $628) | 0;
$630 = ($nb$0 + 40) | 0;
$631 = $629 >>> 0 > $630 >>> 0;
$$tsize$1$i = $631 ? $629 : $tsize$1$i;
if ($631) {
$tbase$247$i = $624;
$tsize$246$i = $$tsize$1$i;
label = 202;
}
}
}
}
if ((label | 0) == 202) {
$632 = HEAP32[((133240 + 432) | 0) >> 2] | 0;
$633 = ($632 + $tsize$246$i) | 0;
HEAP32[((133240 + 432) | 0) >> 2] = $633;
$634 = HEAP32[((133240 + 436) | 0) >> 2] | 0;
$635 = $633 >>> 0 > $634 >>> 0;
if ($635) {
HEAP32[((133240 + 436) | 0) >> 2] = $633;
}
$636 = HEAP32[((133240 + 24) | 0) >> 2] | 0;
$637 = ($636 | 0) == (0 | 0);
L311: do {
if ($637) {
$638 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$639 = ($638 | 0) == (0 | 0);
$640 = $tbase$247$i >>> 0 < $638 >>> 0;
$or$cond10$i = $639 | $640;
if ($or$cond10$i) {
HEAP32[((133240 + 16) | 0) >> 2] = $tbase$247$i;
}
HEAP32[((133240 + 448) | 0) >> 2] = $tbase$247$i;
HEAP32[((133240 + 452) | 0) >> 2] = $tsize$246$i;
HEAP32[((133240 + 460) | 0) >> 2] = 0;
$641 = HEAP32[133712 >> 2] | 0;
HEAP32[((133240 + 36) | 0) >> 2] = $641;
HEAP32[((133240 + 32) | 0) >> 2] = -1;
$i$02$i$i = 0;
while (1) {
$642 = $i$02$i$i << 1;
$643 = (((133240 + ($642 << 2)) | 0) + 40) | 0;
$$sum$i$i = ($642 + 3) | 0;
$644 = (((133240 + ($$sum$i$i << 2)) | 0) + 40) | 0;
HEAP32[$644 >> 2] = $643;
$$sum1$i$i = ($642 + 2) | 0;
$645 = (((133240 + ($$sum1$i$i << 2)) | 0) + 40) | 0;
HEAP32[$645 >> 2] = $643;
$646 = ($i$02$i$i + 1) | 0;
$exitcond$i$i = ($646 | 0) == 32;
if ($exitcond$i$i) {
break;
} else {
$i$02$i$i = $646;
}
}
$647 = ($tsize$246$i + -40) | 0;
$648 = ($tbase$247$i + 8) | 0;
$649 = $648;
$650 = $649 & 7;
$651 = ($650 | 0) == 0;
if ($651) {
$655 = 0;
} else {
$652 = (0 - $649) | 0;
$653 = $652 & 7;
$655 = $653;
}
$654 = ($tbase$247$i + $655) | 0;
$656 = ($647 - $655) | 0;
HEAP32[((133240 + 24) | 0) >> 2] = $654;
HEAP32[((133240 + 12) | 0) >> 2] = $656;
$657 = $656 | 1;
$$sum$i14$i = ($655 + 4) | 0;
$658 = ($tbase$247$i + $$sum$i14$i) | 0;
HEAP32[$658 >> 2] = $657;
$$sum2$i$i = ($tsize$246$i + -36) | 0;
$659 = ($tbase$247$i + $$sum2$i$i) | 0;
HEAP32[$659 >> 2] = 40;
$660 = HEAP32[((133712 + 16) | 0) >> 2] | 0;
HEAP32[((133240 + 28) | 0) >> 2] = $660;
} else {
$sp$075$i = (133240 + 448) | 0;
while (1) {
$661 = HEAP32[$sp$075$i >> 2] | 0;
$662 = ($sp$075$i + 4) | 0;
$663 = HEAP32[$662 >> 2] | 0;
$664 = ($661 + $663) | 0;
$665 = ($tbase$247$i | 0) == ($664 | 0);
if ($665) {
label = 214;
break;
}
$666 = ($sp$075$i + 8) | 0;
$667 = HEAP32[$666 >> 2] | 0;
$668 = ($667 | 0) == (0 | 0);
if ($668) {
break;
} else {
$sp$075$i = $667;
}
}
if ((label | 0) == 214) {
$669 = ($sp$075$i + 12) | 0;
$670 = HEAP32[$669 >> 2] | 0;
$671 = $670 & 8;
$672 = ($671 | 0) == 0;
if ($672) {
$673 = $636 >>> 0 >= $661 >>> 0;
$674 = $636 >>> 0 < $tbase$247$i >>> 0;
$or$cond49$i = $673 & $674;
if ($or$cond49$i) {
$675 = ($663 + $tsize$246$i) | 0;
HEAP32[$662 >> 2] = $675;
$676 = HEAP32[((133240 + 12) | 0) >> 2] | 0;
$677 = ($676 + $tsize$246$i) | 0;
$678 = ($636 + 8) | 0;
$679 = $678;
$680 = $679 & 7;
$681 = ($680 | 0) == 0;
if ($681) {
$685 = 0;
} else {
$682 = (0 - $679) | 0;
$683 = $682 & 7;
$685 = $683;
}
$684 = ($636 + $685) | 0;
$686 = ($677 - $685) | 0;
HEAP32[((133240 + 24) | 0) >> 2] = $684;
HEAP32[((133240 + 12) | 0) >> 2] = $686;
$687 = $686 | 1;
$$sum$i18$i = ($685 + 4) | 0;
$688 = ($636 + $$sum$i18$i) | 0;
HEAP32[$688 >> 2] = $687;
$$sum2$i19$i = ($677 + 4) | 0;
$689 = ($636 + $$sum2$i19$i) | 0;
HEAP32[$689 >> 2] = 40;
$690 = HEAP32[((133712 + 16) | 0) >> 2] | 0;
HEAP32[((133240 + 28) | 0) >> 2] = $690;
break;
}
}
}
$691 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$692 = $tbase$247$i >>> 0 < $691 >>> 0;
if ($692) {
HEAP32[((133240 + 16) | 0) >> 2] = $tbase$247$i;
}
$693 = ($tbase$247$i + $tsize$246$i) | 0;
$sp$168$i = (133240 + 448) | 0;
while (1) {
$694 = HEAP32[$sp$168$i >> 2] | 0;
$695 = ($694 | 0) == ($693 | 0);
if ($695) {
label = 224;
break;
}
$696 = ($sp$168$i + 8) | 0;
$697 = HEAP32[$696 >> 2] | 0;
$698 = ($697 | 0) == (0 | 0);
if ($698) {
break;
} else {
$sp$168$i = $697;
}
}
if ((label | 0) == 224) {
$699 = ($sp$168$i + 12) | 0;
$700 = HEAP32[$699 >> 2] | 0;
$701 = $700 & 8;
$702 = ($701 | 0) == 0;
if ($702) {
HEAP32[$sp$168$i >> 2] = $tbase$247$i;
$703 = ($sp$168$i + 4) | 0;
$704 = HEAP32[$703 >> 2] | 0;
$705 = ($704 + $tsize$246$i) | 0;
HEAP32[$703 >> 2] = $705;
$706 = ($tbase$247$i + 8) | 0;
$707 = $706;
$708 = $707 & 7;
$709 = ($708 | 0) == 0;
if ($709) {
$713 = 0;
} else {
$710 = (0 - $707) | 0;
$711 = $710 & 7;
$713 = $711;
}
$712 = ($tbase$247$i + $713) | 0;
$$sum107$i = ($tsize$246$i + 8) | 0;
$714 = ($tbase$247$i + $$sum107$i) | 0;
$715 = $714;
$716 = $715 & 7;
$717 = ($716 | 0) == 0;
if ($717) {
$720 = 0;
} else {
$718 = (0 - $715) | 0;
$719 = $718 & 7;
$720 = $719;
}
$$sum108$i = ($720 + $tsize$246$i) | 0;
$721 = ($tbase$247$i + $$sum108$i) | 0;
$722 = $721;
$723 = $712;
$724 = ($722 - $723) | 0;
$$sum$i21$i = ($713 + $nb$0) | 0;
$725 = ($tbase$247$i + $$sum$i21$i) | 0;
$726 = ($724 - $nb$0) | 0;
$727 = $nb$0 | 3;
$$sum1$i22$i = ($713 + 4) | 0;
$728 = ($tbase$247$i + $$sum1$i22$i) | 0;
HEAP32[$728 >> 2] = $727;
$729 = HEAP32[((133240 + 24) | 0) >> 2] | 0;
$730 = ($721 | 0) == ($729 | 0);
L338: do {
if ($730) {
$731 = HEAP32[((133240 + 12) | 0) >> 2] | 0;
$732 = ($731 + $726) | 0;
HEAP32[((133240 + 12) | 0) >> 2] = $732;
HEAP32[((133240 + 24) | 0) >> 2] = $725;
$733 = $732 | 1;
$$sum42$i$i = ($$sum$i21$i + 4) | 0;
$734 = ($tbase$247$i + $$sum42$i$i) | 0;
HEAP32[$734 >> 2] = $733;
} else {
$735 = HEAP32[((133240 + 20) | 0) >> 2] | 0;
$736 = ($721 | 0) == ($735 | 0);
if ($736) {
$737 = HEAP32[((133240 + 8) | 0) >> 2] | 0;
$738 = ($737 + $726) | 0;
HEAP32[((133240 + 8) | 0) >> 2] = $738;
HEAP32[((133240 + 20) | 0) >> 2] = $725;
$739 = $738 | 1;
$$sum40$i$i = ($$sum$i21$i + 4) | 0;
$740 = ($tbase$247$i + $$sum40$i$i) | 0;
HEAP32[$740 >> 2] = $739;
$$sum41$i$i = ($738 + $$sum$i21$i) | 0;
$741 = ($tbase$247$i + $$sum41$i$i) | 0;
HEAP32[$741 >> 2] = $738;
break;
}
$$sum2$i23$i = ($tsize$246$i + 4) | 0;
$$sum109$i = ($$sum2$i23$i + $720) | 0;
$742 = ($tbase$247$i + $$sum109$i) | 0;
$743 = HEAP32[$742 >> 2] | 0;
$744 = $743 & 3;
$745 = ($744 | 0) == 1;
if ($745) {
$746 = $743 & -8;
$747 = $743 >>> 3;
$748 = $743 >>> 0 < 256;
L346: do {
if ($748) {
$$sum3738$i$i = $720 | 8;
$$sum119$i = ($$sum3738$i$i + $tsize$246$i) | 0;
$749 = ($tbase$247$i + $$sum119$i) | 0;
$750 = HEAP32[$749 >> 2] | 0;
$$sum39$i$i = ($tsize$246$i + 12) | 0;
$$sum120$i = ($$sum39$i$i + $720) | 0;
$751 = ($tbase$247$i + $$sum120$i) | 0;
$752 = HEAP32[$751 >> 2] | 0;
$753 = $747 << 1;
$754 = (((133240 + ($753 << 2)) | 0) + 40) | 0;
$755 = ($750 | 0) == ($754 | 0);
do {
if (!$755) {
$756 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$757 = $750 >>> 0 < $756 >>> 0;
if ($757) {
_abort();
// unreachable;
}
$758 = ($750 + 12) | 0;
$759 = HEAP32[$758 >> 2] | 0;
$760 = ($759 | 0) == ($721 | 0);
if ($760) {
break;
}
_abort();
// unreachable;
}
} while (0);
$761 = ($752 | 0) == ($750 | 0);
if ($761) {
$762 = 1 << $747;
$763 = $762 ^ -1;
$764 = HEAP32[133240 >> 2] | 0;
$765 = $764 & $763;
HEAP32[133240 >> 2] = $765;
break;
}
$766 = ($752 | 0) == ($754 | 0);
do {
if ($766) {
$$pre57$i$i = ($752 + 8) | 0;
$$pre$phi58$i$iZ2D = $$pre57$i$i;
} else {
$767 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$768 = $752 >>> 0 < $767 >>> 0;
if ($768) {
_abort();
// unreachable;
}
$769 = ($752 + 8) | 0;
$770 = HEAP32[$769 >> 2] | 0;
$771 = ($770 | 0) == ($721 | 0);
if ($771) {
$$pre$phi58$i$iZ2D = $769;
break;
}
_abort();
// unreachable;
}
} while (0);
$772 = ($750 + 12) | 0;
HEAP32[$772 >> 2] = $752;
HEAP32[$$pre$phi58$i$iZ2D >> 2] = $750;
} else {
$$sum34$i$i = $720 | 24;
$$sum110$i = ($$sum34$i$i + $tsize$246$i) | 0;
$773 = ($tbase$247$i + $$sum110$i) | 0;
$774 = HEAP32[$773 >> 2] | 0;
$$sum5$i$i = ($tsize$246$i + 12) | 0;
$$sum111$i = ($$sum5$i$i + $720) | 0;
$775 = ($tbase$247$i + $$sum111$i) | 0;
$776 = HEAP32[$775 >> 2] | 0;
$777 = ($776 | 0) == ($721 | 0);
do {
if ($777) {
$$sum67$i$i = $720 | 16;
$$sum117$i = ($$sum2$i23$i + $$sum67$i$i) | 0;
$788 = ($tbase$247$i + $$sum117$i) | 0;
$789 = HEAP32[$788 >> 2] | 0;
$790 = ($789 | 0) == (0 | 0);
if ($790) {
$$sum118$i = ($$sum67$i$i + $tsize$246$i) | 0;
$791 = ($tbase$247$i + $$sum118$i) | 0;
$792 = HEAP32[$791 >> 2] | 0;
$793 = ($792 | 0) == (0 | 0);
if ($793) {
$R$1$i$i = 0;
break;
} else {
$R$0$i$i = $792;
$RP$0$i$i = $791;
}
} else {
$R$0$i$i = $789;
$RP$0$i$i = $788;
}
while (1) {
$794 = ($R$0$i$i + 20) | 0;
$795 = HEAP32[$794 >> 2] | 0;
$796 = ($795 | 0) == (0 | 0);
if (!$796) {
$R$0$i$i = $795;
$RP$0$i$i = $794;
continue;
}
$797 = ($R$0$i$i + 16) | 0;
$798 = HEAP32[$797 >> 2] | 0;
$799 = ($798 | 0) == (0 | 0);
if ($799) {
break;
} else {
$R$0$i$i = $798;
$RP$0$i$i = $797;
}
}
$800 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$801 = $RP$0$i$i >>> 0 < $800 >>> 0;
if ($801) {
_abort();
// unreachable;
} else {
HEAP32[$RP$0$i$i >> 2] = 0;
$R$1$i$i = $R$0$i$i;
break;
}
} else {
$$sum3536$i$i = $720 | 8;
$$sum112$i = ($$sum3536$i$i + $tsize$246$i) | 0;
$778 = ($tbase$247$i + $$sum112$i) | 0;
$779 = HEAP32[$778 >> 2] | 0;
$780 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$781 = $779 >>> 0 < $780 >>> 0;
if ($781) {
_abort();
// unreachable;
}
$782 = ($779 + 12) | 0;
$783 = HEAP32[$782 >> 2] | 0;
$784 = ($783 | 0) == ($721 | 0);
if (!$784) {
_abort();
// unreachable;
}
$785 = ($776 + 8) | 0;
$786 = HEAP32[$785 >> 2] | 0;
$787 = ($786 | 0) == ($721 | 0);
if ($787) {
HEAP32[$782 >> 2] = $776;
HEAP32[$785 >> 2] = $779;
$R$1$i$i = $776;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$802 = ($774 | 0) == (0 | 0);
if ($802) {
break;
}
$$sum30$i$i = ($tsize$246$i + 28) | 0;
$$sum113$i = ($$sum30$i$i + $720) | 0;
$803 = ($tbase$247$i + $$sum113$i) | 0;
$804 = HEAP32[$803 >> 2] | 0;
$805 = (((133240 + ($804 << 2)) | 0) + 304) | 0;
$806 = HEAP32[$805 >> 2] | 0;
$807 = ($721 | 0) == ($806 | 0);
do {
if ($807) {
HEAP32[$805 >> 2] = $R$1$i$i;
$cond$i$i = ($R$1$i$i | 0) == (0 | 0);
if (!$cond$i$i) {
break;
}
$808 = 1 << $804;
$809 = $808 ^ -1;
$810 = HEAP32[((133240 + 4) | 0) >> 2] | 0;
$811 = $810 & $809;
HEAP32[((133240 + 4) | 0) >> 2] = $811;
break L346;
} else {
$812 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$813 = $774 >>> 0 < $812 >>> 0;
if ($813) {
_abort();
// unreachable;
}
$814 = ($774 + 16) | 0;
$815 = HEAP32[$814 >> 2] | 0;
$816 = ($815 | 0) == ($721 | 0);
if ($816) {
HEAP32[$814 >> 2] = $R$1$i$i;
} else {
$817 = ($774 + 20) | 0;
HEAP32[$817 >> 2] = $R$1$i$i;
}
$818 = ($R$1$i$i | 0) == (0 | 0);
if ($818) {
break L346;
}
}
} while (0);
$819 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$820 = $R$1$i$i >>> 0 < $819 >>> 0;
if ($820) {
_abort();
// unreachable;
}
$821 = ($R$1$i$i + 24) | 0;
HEAP32[$821 >> 2] = $774;
$$sum3132$i$i = $720 | 16;
$$sum114$i = ($$sum3132$i$i + $tsize$246$i) | 0;
$822 = ($tbase$247$i + $$sum114$i) | 0;
$823 = HEAP32[$822 >> 2] | 0;
$824 = ($823 | 0) == (0 | 0);
do {
if (!$824) {
$825 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$826 = $823 >>> 0 < $825 >>> 0;
if ($826) {
_abort();
// unreachable;
} else {
$827 = ($R$1$i$i + 16) | 0;
HEAP32[$827 >> 2] = $823;
$828 = ($823 + 24) | 0;
HEAP32[$828 >> 2] = $R$1$i$i;
break;
}
}
} while (0);
$$sum115$i = ($$sum2$i23$i + $$sum3132$i$i) | 0;
$829 = ($tbase$247$i + $$sum115$i) | 0;
$830 = HEAP32[$829 >> 2] | 0;
$831 = ($830 | 0) == (0 | 0);
if ($831) {
break;
}
$832 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$833 = $830 >>> 0 < $832 >>> 0;
if ($833) {
_abort();
// unreachable;
} else {
$834 = ($R$1$i$i + 20) | 0;
HEAP32[$834 >> 2] = $830;
$835 = ($830 + 24) | 0;
HEAP32[$835 >> 2] = $R$1$i$i;
break;
}
}
} while (0);
$$sum9$i$i = $746 | $720;
$$sum116$i = ($$sum9$i$i + $tsize$246$i) | 0;
$836 = ($tbase$247$i + $$sum116$i) | 0;
$837 = ($746 + $726) | 0;
$oldfirst$0$i$i = $836;
$qsize$0$i$i = $837;
} else {
$oldfirst$0$i$i = $721;
$qsize$0$i$i = $726;
}
$838 = ($oldfirst$0$i$i + 4) | 0;
$839 = HEAP32[$838 >> 2] | 0;
$840 = $839 & -2;
HEAP32[$838 >> 2] = $840;
$841 = $qsize$0$i$i | 1;
$$sum10$i$i = ($$sum$i21$i + 4) | 0;
$842 = ($tbase$247$i + $$sum10$i$i) | 0;
HEAP32[$842 >> 2] = $841;
$$sum11$i24$i = ($qsize$0$i$i + $$sum$i21$i) | 0;
$843 = ($tbase$247$i + $$sum11$i24$i) | 0;
HEAP32[$843 >> 2] = $qsize$0$i$i;
$844 = $qsize$0$i$i >>> 3;
$845 = $qsize$0$i$i >>> 0 < 256;
if ($845) {
$846 = $844 << 1;
$847 = (((133240 + ($846 << 2)) | 0) + 40) | 0;
$848 = HEAP32[133240 >> 2] | 0;
$849 = 1 << $844;
$850 = $848 & $849;
$851 = ($850 | 0) == 0;
do {
if ($851) {
$852 = $848 | $849;
HEAP32[133240 >> 2] = $852;
$$sum26$pre$i$i = ($846 + 2) | 0;
$$pre$i25$i = (((133240 + ($$sum26$pre$i$i << 2)) | 0) + 40) | 0;
$$pre$phi$i26$iZ2D = $$pre$i25$i;
$F4$0$i$i = $847;
} else {
$$sum29$i$i = ($846 + 2) | 0;
$853 = (((133240 + ($$sum29$i$i << 2)) | 0) + 40) | 0;
$854 = HEAP32[$853 >> 2] | 0;
$855 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$856 = $854 >>> 0 < $855 >>> 0;
if (!$856) {
$$pre$phi$i26$iZ2D = $853;
$F4$0$i$i = $854;
break;
}
_abort();
// unreachable;
}
} while (0);
HEAP32[$$pre$phi$i26$iZ2D >> 2] = $725;
$857 = ($F4$0$i$i + 12) | 0;
HEAP32[$857 >> 2] = $725;
$$sum27$i$i = ($$sum$i21$i + 8) | 0;
$858 = ($tbase$247$i + $$sum27$i$i) | 0;
HEAP32[$858 >> 2] = $F4$0$i$i;
$$sum28$i$i = ($$sum$i21$i + 12) | 0;
$859 = ($tbase$247$i + $$sum28$i$i) | 0;
HEAP32[$859 >> 2] = $847;
break;
}
$860 = $qsize$0$i$i >>> 8;
$861 = ($860 | 0) == 0;
do {
if ($861) {
$I7$0$i$i = 0;
} else {
$862 = $qsize$0$i$i >>> 0 > 16777215;
if ($862) {
$I7$0$i$i = 31;
break;
}
$863 = ($860 + 1048320) | 0;
$864 = $863 >>> 16;
$865 = $864 & 8;
$866 = $860 << $865;
$867 = ($866 + 520192) | 0;
$868 = $867 >>> 16;
$869 = $868 & 4;
$870 = $869 | $865;
$871 = $866 << $869;
$872 = ($871 + 245760) | 0;
$873 = $872 >>> 16;
$874 = $873 & 2;
$875 = $870 | $874;
$876 = (14 - $875) | 0;
$877 = $871 << $874;
$878 = $877 >>> 15;
$879 = ($876 + $878) | 0;
$880 = $879 << 1;
$881 = ($879 + 7) | 0;
$882 = $qsize$0$i$i >>> $881;
$883 = $882 & 1;
$884 = $883 | $880;
$I7$0$i$i = $884;
}
} while (0);
$885 = (((133240 + ($I7$0$i$i << 2)) | 0) + 304) | 0;
$$sum12$i$i = ($$sum$i21$i + 28) | 0;
$886 = ($tbase$247$i + $$sum12$i$i) | 0;
HEAP32[$886 >> 2] = $I7$0$i$i;
$$sum13$i$i = ($$sum$i21$i + 16) | 0;
$887 = ($tbase$247$i + $$sum13$i$i) | 0;
$$sum14$i$i = ($$sum$i21$i + 20) | 0;
$888 = ($tbase$247$i + $$sum14$i$i) | 0;
HEAP32[$888 >> 2] = 0;
HEAP32[$887 >> 2] = 0;
$889 = HEAP32[((133240 + 4) | 0) >> 2] | 0;
$890 = 1 << $I7$0$i$i;
$891 = $889 & $890;
$892 = ($891 | 0) == 0;
if ($892) {
$893 = $889 | $890;
HEAP32[((133240 + 4) | 0) >> 2] = $893;
HEAP32[$885 >> 2] = $725;
$$sum15$i$i = ($$sum$i21$i + 24) | 0;
$894 = ($tbase$247$i + $$sum15$i$i) | 0;
HEAP32[$894 >> 2] = $885;
$$sum16$i$i = ($$sum$i21$i + 12) | 0;
$895 = ($tbase$247$i + $$sum16$i$i) | 0;
HEAP32[$895 >> 2] = $725;
$$sum17$i$i = ($$sum$i21$i + 8) | 0;
$896 = ($tbase$247$i + $$sum17$i$i) | 0;
HEAP32[$896 >> 2] = $725;
break;
}
$897 = HEAP32[$885 >> 2] | 0;
$898 = ($I7$0$i$i | 0) == 31;
if ($898) {
$906 = 0;
} else {
$899 = $I7$0$i$i >>> 1;
$900 = (25 - $899) | 0;
$906 = $900;
}
$901 = ($897 + 4) | 0;
$902 = HEAP32[$901 >> 2] | 0;
$903 = $902 & -8;
$904 = ($903 | 0) == ($qsize$0$i$i | 0);
L435: do {
if ($904) {
$T$0$lcssa$i28$i = $897;
} else {
$905 = $qsize$0$i$i << $906;
$K8$052$i$i = $905;
$T$051$i$i = $897;
while (1) {
$913 = $K8$052$i$i >>> 31;
$914 = ((($T$051$i$i + ($913 << 2)) | 0) + 16) | 0;
$909 = HEAP32[$914 >> 2] | 0;
$915 = ($909 | 0) == (0 | 0);
if ($915) {
break;
}
$907 = $K8$052$i$i << 1;
$908 = ($909 + 4) | 0;
$910 = HEAP32[$908 >> 2] | 0;
$911 = $910 & -8;
$912 = ($911 | 0) == ($qsize$0$i$i | 0);
if ($912) {
$T$0$lcssa$i28$i = $909;
break L435;
} else {
$K8$052$i$i = $907;
$T$051$i$i = $909;
}
}
$916 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$917 = $914 >>> 0 < $916 >>> 0;
if ($917) {
_abort();
// unreachable;
} else {
HEAP32[$914 >> 2] = $725;
$$sum23$i$i = ($$sum$i21$i + 24) | 0;
$918 = ($tbase$247$i + $$sum23$i$i) | 0;
HEAP32[$918 >> 2] = $T$051$i$i;
$$sum24$i$i = ($$sum$i21$i + 12) | 0;
$919 = ($tbase$247$i + $$sum24$i$i) | 0;
HEAP32[$919 >> 2] = $725;
$$sum25$i$i = ($$sum$i21$i + 8) | 0;
$920 = ($tbase$247$i + $$sum25$i$i) | 0;
HEAP32[$920 >> 2] = $725;
break L338;
}
}
} while (0);
$921 = ($T$0$lcssa$i28$i + 8) | 0;
$922 = HEAP32[$921 >> 2] | 0;
$923 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$924 = $T$0$lcssa$i28$i >>> 0 < $923 >>> 0;
if ($924) {
_abort();
// unreachable;
}
$925 = $922 >>> 0 < $923 >>> 0;
if ($925) {
_abort();
// unreachable;
} else {
$926 = ($922 + 12) | 0;
HEAP32[$926 >> 2] = $725;
HEAP32[$921 >> 2] = $725;
$$sum20$i$i = ($$sum$i21$i + 8) | 0;
$927 = ($tbase$247$i + $$sum20$i$i) | 0;
HEAP32[$927 >> 2] = $922;
$$sum21$i$i = ($$sum$i21$i + 12) | 0;
$928 = ($tbase$247$i + $$sum21$i$i) | 0;
HEAP32[$928 >> 2] = $T$0$lcssa$i28$i;
$$sum22$i$i = ($$sum$i21$i + 24) | 0;
$929 = ($tbase$247$i + $$sum22$i$i) | 0;
HEAP32[$929 >> 2] = 0;
break;
}
}
} while (0);
$$sum1819$i$i = $713 | 8;
$930 = ($tbase$247$i + $$sum1819$i$i) | 0;
$mem$0 = $930;
STACKTOP = sp;
return $mem$0 | 0;
}
}
$sp$0$i$i$i = (133240 + 448) | 0;
while (1) {
$931 = HEAP32[$sp$0$i$i$i >> 2] | 0;
$932 = $931 >>> 0 > $636 >>> 0;
if (!$932) {
$933 = ($sp$0$i$i$i + 4) | 0;
$934 = HEAP32[$933 >> 2] | 0;
$935 = ($931 + $934) | 0;
$936 = $935 >>> 0 > $636 >>> 0;
if ($936) {
break;
}
}
$937 = ($sp$0$i$i$i + 8) | 0;
$938 = HEAP32[$937 >> 2] | 0;
$sp$0$i$i$i = $938;
}
$$sum$i15$i = ($934 + -47) | 0;
$$sum1$i16$i = ($934 + -39) | 0;
$939 = ($931 + $$sum1$i16$i) | 0;
$940 = $939;
$941 = $940 & 7;
$942 = ($941 | 0) == 0;
if ($942) {
$945 = 0;
} else {
$943 = (0 - $940) | 0;
$944 = $943 & 7;
$945 = $944;
}
$$sum2$i17$i = ($$sum$i15$i + $945) | 0;
$946 = ($931 + $$sum2$i17$i) | 0;
$947 = ($636 + 16) | 0;
$948 = $946 >>> 0 < $947 >>> 0;
$949 = $948 ? $636 : $946;
$950 = ($949 + 8) | 0;
$951 = ($tsize$246$i + -40) | 0;
$952 = ($tbase$247$i + 8) | 0;
$953 = $952;
$954 = $953 & 7;
$955 = ($954 | 0) == 0;
if ($955) {
$959 = 0;
} else {
$956 = (0 - $953) | 0;
$957 = $956 & 7;
$959 = $957;
}
$958 = ($tbase$247$i + $959) | 0;
$960 = ($951 - $959) | 0;
HEAP32[((133240 + 24) | 0) >> 2] = $958;
HEAP32[((133240 + 12) | 0) >> 2] = $960;
$961 = $960 | 1;
$$sum$i$i$i = ($959 + 4) | 0;
$962 = ($tbase$247$i + $$sum$i$i$i) | 0;
HEAP32[$962 >> 2] = $961;
$$sum2$i$i$i = ($tsize$246$i + -36) | 0;
$963 = ($tbase$247$i + $$sum2$i$i$i) | 0;
HEAP32[$963 >> 2] = 40;
$964 = HEAP32[((133712 + 16) | 0) >> 2] | 0;
HEAP32[((133240 + 28) | 0) >> 2] = $964;
$965 = ($949 + 4) | 0;
HEAP32[$965 >> 2] = 27;
HEAP32[($950 + 0) >> 2] = HEAP32[(((133240 + 448) | 0) + 0) >> 2] | 0;
HEAP32[($950 + 4) >> 2] = HEAP32[(((133240 + 448) | 0) + 4) >> 2] | 0;
HEAP32[($950 + 8) >> 2] = HEAP32[(((133240 + 448) | 0) + 8) >> 2] | 0;
HEAP32[($950 + 12) >> 2] = HEAP32[(((133240 + 448) | 0) + 12) >> 2] | 0;
HEAP32[((133240 + 448) | 0) >> 2] = $tbase$247$i;
HEAP32[((133240 + 452) | 0) >> 2] = $tsize$246$i;
HEAP32[((133240 + 460) | 0) >> 2] = 0;
HEAP32[((133240 + 456) | 0) >> 2] = $950;
$966 = ($949 + 28) | 0;
HEAP32[$966 >> 2] = 7;
$967 = ($949 + 32) | 0;
$968 = $967 >>> 0 < $935 >>> 0;
if ($968) {
$970 = $966;
while (1) {
$969 = ($970 + 4) | 0;
HEAP32[$969 >> 2] = 7;
$971 = ($970 + 8) | 0;
$972 = $971 >>> 0 < $935 >>> 0;
if ($972) {
$970 = $969;
} else {
break;
}
}
}
$973 = ($949 | 0) == ($636 | 0);
if (!$973) {
$974 = $949;
$975 = $636;
$976 = ($974 - $975) | 0;
$977 = ($636 + $976) | 0;
$$sum3$i$i = ($976 + 4) | 0;
$978 = ($636 + $$sum3$i$i) | 0;
$979 = HEAP32[$978 >> 2] | 0;
$980 = $979 & -2;
HEAP32[$978 >> 2] = $980;
$981 = $976 | 1;
$982 = ($636 + 4) | 0;
HEAP32[$982 >> 2] = $981;
HEAP32[$977 >> 2] = $976;
$983 = $976 >>> 3;
$984 = $976 >>> 0 < 256;
if ($984) {
$985 = $983 << 1;
$986 = (((133240 + ($985 << 2)) | 0) + 40) | 0;
$987 = HEAP32[133240 >> 2] | 0;
$988 = 1 << $983;
$989 = $987 & $988;
$990 = ($989 | 0) == 0;
do {
if ($990) {
$991 = $987 | $988;
HEAP32[133240 >> 2] = $991;
$$sum10$pre$i$i = ($985 + 2) | 0;
$$pre$i$i = (((133240 + ($$sum10$pre$i$i << 2)) | 0) + 40) | 0;
$$pre$phi$i$iZ2D = $$pre$i$i;
$F$0$i$i = $986;
} else {
$$sum11$i$i = ($985 + 2) | 0;
$992 = (((133240 + ($$sum11$i$i << 2)) | 0) + 40) | 0;
$993 = HEAP32[$992 >> 2] | 0;
$994 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$995 = $993 >>> 0 < $994 >>> 0;
if (!$995) {
$$pre$phi$i$iZ2D = $992;
$F$0$i$i = $993;
break;
}
_abort();
// unreachable;
}
} while (0);
HEAP32[$$pre$phi$i$iZ2D >> 2] = $636;
$996 = ($F$0$i$i + 12) | 0;
HEAP32[$996 >> 2] = $636;
$997 = ($636 + 8) | 0;
HEAP32[$997 >> 2] = $F$0$i$i;
$998 = ($636 + 12) | 0;
HEAP32[$998 >> 2] = $986;
break;
}
$999 = $976 >>> 8;
$1000 = ($999 | 0) == 0;
if ($1000) {
$I1$0$i$i = 0;
} else {
$1001 = $976 >>> 0 > 16777215;
if ($1001) {
$I1$0$i$i = 31;
} else {
$1002 = ($999 + 1048320) | 0;
$1003 = $1002 >>> 16;
$1004 = $1003 & 8;
$1005 = $999 << $1004;
$1006 = ($1005 + 520192) | 0;
$1007 = $1006 >>> 16;
$1008 = $1007 & 4;
$1009 = $1008 | $1004;
$1010 = $1005 << $1008;
$1011 = ($1010 + 245760) | 0;
$1012 = $1011 >>> 16;
$1013 = $1012 & 2;
$1014 = $1009 | $1013;
$1015 = (14 - $1014) | 0;
$1016 = $1010 << $1013;
$1017 = $1016 >>> 15;
$1018 = ($1015 + $1017) | 0;
$1019 = $1018 << 1;
$1020 = ($1018 + 7) | 0;
$1021 = $976 >>> $1020;
$1022 = $1021 & 1;
$1023 = $1022 | $1019;
$I1$0$i$i = $1023;
}
}
$1024 = (((133240 + ($I1$0$i$i << 2)) | 0) + 304) | 0;
$1025 = ($636 + 28) | 0;
$I1$0$c$i$i = $I1$0$i$i;
HEAP32[$1025 >> 2] = $I1$0$c$i$i;
$1026 = ($636 + 20) | 0;
HEAP32[$1026 >> 2] = 0;
$1027 = ($636 + 16) | 0;
HEAP32[$1027 >> 2] = 0;
$1028 = HEAP32[((133240 + 4) | 0) >> 2] | 0;
$1029 = 1 << $I1$0$i$i;
$1030 = $1028 & $1029;
$1031 = ($1030 | 0) == 0;
if ($1031) {
$1032 = $1028 | $1029;
HEAP32[((133240 + 4) | 0) >> 2] = $1032;
HEAP32[$1024 >> 2] = $636;
$1033 = ($636 + 24) | 0;
HEAP32[$1033 >> 2] = $1024;
$1034 = ($636 + 12) | 0;
HEAP32[$1034 >> 2] = $636;
$1035 = ($636 + 8) | 0;
HEAP32[$1035 >> 2] = $636;
break;
}
$1036 = HEAP32[$1024 >> 2] | 0;
$1037 = ($I1$0$i$i | 0) == 31;
if ($1037) {
$1045 = 0;
} else {
$1038 = $I1$0$i$i >>> 1;
$1039 = (25 - $1038) | 0;
$1045 = $1039;
}
$1040 = ($1036 + 4) | 0;
$1041 = HEAP32[$1040 >> 2] | 0;
$1042 = $1041 & -8;
$1043 = ($1042 | 0) == ($976 | 0);
L489: do {
if ($1043) {
$T$0$lcssa$i$i = $1036;
} else {
$1044 = $976 << $1045;
$K2$014$i$i = $1044;
$T$013$i$i = $1036;
while (1) {
$1052 = $K2$014$i$i >>> 31;
$1053 = ((($T$013$i$i + ($1052 << 2)) | 0) + 16) | 0;
$1048 = HEAP32[$1053 >> 2] | 0;
$1054 = ($1048 | 0) == (0 | 0);
if ($1054) {
break;
}
$1046 = $K2$014$i$i << 1;
$1047 = ($1048 + 4) | 0;
$1049 = HEAP32[$1047 >> 2] | 0;
$1050 = $1049 & -8;
$1051 = ($1050 | 0) == ($976 | 0);
if ($1051) {
$T$0$lcssa$i$i = $1048;
break L489;
} else {
$K2$014$i$i = $1046;
$T$013$i$i = $1048;
}
}
$1055 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$1056 = $1053 >>> 0 < $1055 >>> 0;
if ($1056) {
_abort();
// unreachable;
} else {
HEAP32[$1053 >> 2] = $636;
$1057 = ($636 + 24) | 0;
HEAP32[$1057 >> 2] = $T$013$i$i;
$1058 = ($636 + 12) | 0;
HEAP32[$1058 >> 2] = $636;
$1059 = ($636 + 8) | 0;
HEAP32[$1059 >> 2] = $636;
break L311;
}
}
} while (0);
$1060 = ($T$0$lcssa$i$i + 8) | 0;
$1061 = HEAP32[$1060 >> 2] | 0;
$1062 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$1063 = $T$0$lcssa$i$i >>> 0 < $1062 >>> 0;
if ($1063) {
_abort();
// unreachable;
}
$1064 = $1061 >>> 0 < $1062 >>> 0;
if ($1064) {
_abort();
// unreachable;
} else {
$1065 = ($1061 + 12) | 0;
HEAP32[$1065 >> 2] = $636;
HEAP32[$1060 >> 2] = $636;
$1066 = ($636 + 8) | 0;
HEAP32[$1066 >> 2] = $1061;
$1067 = ($636 + 12) | 0;
HEAP32[$1067 >> 2] = $T$0$lcssa$i$i;
$1068 = ($636 + 24) | 0;
HEAP32[$1068 >> 2] = 0;
break;
}
}
}
} while (0);
$1069 = HEAP32[((133240 + 12) | 0) >> 2] | 0;
$1070 = $1069 >>> 0 > $nb$0 >>> 0;
if ($1070) {
$1071 = ($1069 - $nb$0) | 0;
HEAP32[((133240 + 12) | 0) >> 2] = $1071;
$1072 = HEAP32[((133240 + 24) | 0) >> 2] | 0;
$1073 = ($1072 + $nb$0) | 0;
HEAP32[((133240 + 24) | 0) >> 2] = $1073;
$1074 = $1071 | 1;
$$sum$i32 = ($nb$0 + 4) | 0;
$1075 = ($1072 + $$sum$i32) | 0;
HEAP32[$1075 >> 2] = $1074;
$1076 = $nb$0 | 3;
$1077 = ($1072 + 4) | 0;
HEAP32[$1077 >> 2] = $1076;
$1078 = ($1072 + 8) | 0;
$mem$0 = $1078;
STACKTOP = sp;
return $mem$0 | 0;
}
}
$1079 = ___errno_location() | 0;
HEAP32[$1079 >> 2] = 12;
$mem$0 = 0;
STACKTOP = sp;
return $mem$0 | 0;
}
function _free($mem) {
$mem = $mem | 0;
var $$pre = 0,
$$pre$phi68Z2D = 0,
$$pre$phi70Z2D = 0,
$$pre$phiZ2D = 0,
$$pre67 = 0,
$$pre69 = 0,
$$sum = 0,
$$sum16$pre = 0,
$$sum17 = 0,
$$sum18 = 0,
$$sum19 = 0,
$$sum2 = 0,
$$sum20 = 0,
$$sum2324 = 0,
$$sum25 = 0,
$$sum26 = 0,
$$sum28 = 0,
$$sum29 = 0,
$$sum3 = 0,
$$sum30 = 0;
var $$sum31 = 0,
$$sum32 = 0,
$$sum33 = 0,
$$sum34 = 0,
$$sum35 = 0,
$$sum36 = 0,
$$sum37 = 0,
$$sum5 = 0,
$$sum67 = 0,
$$sum8 = 0,
$$sum9 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0;
var $106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0;
var $124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0;
var $142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0,
$152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0;
var $160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0,
$170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0;
var $179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0,
$189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0;
var $197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0,
$206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0;
var $214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0,
$224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0;
var $232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0,
$242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0;
var $250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0,
$260 = 0,
$261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0;
var $269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0,
$279 = 0,
$28 = 0,
$280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0;
var $287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0,
$297 = 0,
$298 = 0,
$299 = 0,
$3 = 0,
$30 = 0,
$300 = 0,
$301 = 0,
$302 = 0,
$303 = 0;
var $304 = 0,
$305 = 0,
$306 = 0,
$307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0,
$313 = 0,
$314 = 0,
$315 = 0,
$316 = 0,
$317 = 0,
$318 = 0,
$319 = 0,
$32 = 0,
$320 = 0,
$321 = 0;
var $322 = 0,
$323 = 0,
$324 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0;
var $49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0;
var $67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0;
var $85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$F16$0 = 0,
$I18$0 = 0,
$I18$0$c = 0,
$K19$057 = 0;
var $R$0 = 0,
$R$1 = 0,
$R7$0 = 0,
$R7$1 = 0,
$RP$0 = 0,
$RP9$0 = 0,
$T$0$lcssa = 0,
$T$056 = 0,
$cond = 0,
$cond54 = 0,
$p$0 = 0,
$psize$0 = 0,
$psize$1 = 0,
$sp$0$i = 0,
$sp$0$in$i = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($mem | 0) == (0 | 0);
if ($0) {
STACKTOP = sp;
return;
}
$1 = ($mem + -8) | 0;
$2 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$3 = $1 >>> 0 < $2 >>> 0;
if ($3) {
_abort();
// unreachable;
}
$4 = ($mem + -4) | 0;
$5 = HEAP32[$4 >> 2] | 0;
$6 = $5 & 3;
$7 = ($6 | 0) == 1;
if ($7) {
_abort();
// unreachable;
}
$8 = $5 & -8;
$$sum = ($8 + -8) | 0;
$9 = ($mem + $$sum) | 0;
$10 = $5 & 1;
$11 = ($10 | 0) == 0;
do {
if ($11) {
$12 = HEAP32[$1 >> 2] | 0;
$13 = ($6 | 0) == 0;
if ($13) {
STACKTOP = sp;
return;
}
$$sum2 = (-8 - $12) | 0;
$14 = ($mem + $$sum2) | 0;
$15 = ($12 + $8) | 0;
$16 = $14 >>> 0 < $2 >>> 0;
if ($16) {
_abort();
// unreachable;
}
$17 = HEAP32[((133240 + 20) | 0) >> 2] | 0;
$18 = ($14 | 0) == ($17 | 0);
if ($18) {
$$sum3 = ($8 + -4) | 0;
$104 = ($mem + $$sum3) | 0;
$105 = HEAP32[$104 >> 2] | 0;
$106 = $105 & 3;
$107 = ($106 | 0) == 3;
if (!$107) {
$p$0 = $14;
$psize$0 = $15;
break;
}
HEAP32[((133240 + 8) | 0) >> 2] = $15;
$108 = HEAP32[$104 >> 2] | 0;
$109 = $108 & -2;
HEAP32[$104 >> 2] = $109;
$110 = $15 | 1;
$$sum26 = ($$sum2 + 4) | 0;
$111 = ($mem + $$sum26) | 0;
HEAP32[$111 >> 2] = $110;
HEAP32[$9 >> 2] = $15;
STACKTOP = sp;
return;
}
$19 = $12 >>> 3;
$20 = $12 >>> 0 < 256;
if ($20) {
$$sum36 = ($$sum2 + 8) | 0;
$21 = ($mem + $$sum36) | 0;
$22 = HEAP32[$21 >> 2] | 0;
$$sum37 = ($$sum2 + 12) | 0;
$23 = ($mem + $$sum37) | 0;
$24 = HEAP32[$23 >> 2] | 0;
$25 = $19 << 1;
$26 = (((133240 + ($25 << 2)) | 0) + 40) | 0;
$27 = ($22 | 0) == ($26 | 0);
if (!$27) {
$28 = $22 >>> 0 < $2 >>> 0;
if ($28) {
_abort();
// unreachable;
}
$29 = ($22 + 12) | 0;
$30 = HEAP32[$29 >> 2] | 0;
$31 = ($30 | 0) == ($14 | 0);
if (!$31) {
_abort();
// unreachable;
}
}
$32 = ($24 | 0) == ($22 | 0);
if ($32) {
$33 = 1 << $19;
$34 = $33 ^ -1;
$35 = HEAP32[133240 >> 2] | 0;
$36 = $35 & $34;
HEAP32[133240 >> 2] = $36;
$p$0 = $14;
$psize$0 = $15;
break;
}
$37 = ($24 | 0) == ($26 | 0);
if ($37) {
$$pre69 = ($24 + 8) | 0;
$$pre$phi70Z2D = $$pre69;
} else {
$38 = $24 >>> 0 < $2 >>> 0;
if ($38) {
_abort();
// unreachable;
}
$39 = ($24 + 8) | 0;
$40 = HEAP32[$39 >> 2] | 0;
$41 = ($40 | 0) == ($14 | 0);
if ($41) {
$$pre$phi70Z2D = $39;
} else {
_abort();
// unreachable;
}
}
$42 = ($22 + 12) | 0;
HEAP32[$42 >> 2] = $24;
HEAP32[$$pre$phi70Z2D >> 2] = $22;
$p$0 = $14;
$psize$0 = $15;
break;
}
$$sum28 = ($$sum2 + 24) | 0;
$43 = ($mem + $$sum28) | 0;
$44 = HEAP32[$43 >> 2] | 0;
$$sum29 = ($$sum2 + 12) | 0;
$45 = ($mem + $$sum29) | 0;
$46 = HEAP32[$45 >> 2] | 0;
$47 = ($46 | 0) == ($14 | 0);
do {
if ($47) {
$$sum31 = ($$sum2 + 20) | 0;
$57 = ($mem + $$sum31) | 0;
$58 = HEAP32[$57 >> 2] | 0;
$59 = ($58 | 0) == (0 | 0);
if ($59) {
$$sum30 = ($$sum2 + 16) | 0;
$60 = ($mem + $$sum30) | 0;
$61 = HEAP32[$60 >> 2] | 0;
$62 = ($61 | 0) == (0 | 0);
if ($62) {
$R$1 = 0;
break;
} else {
$R$0 = $61;
$RP$0 = $60;
}
} else {
$R$0 = $58;
$RP$0 = $57;
}
while (1) {
$63 = ($R$0 + 20) | 0;
$64 = HEAP32[$63 >> 2] | 0;
$65 = ($64 | 0) == (0 | 0);
if (!$65) {
$R$0 = $64;
$RP$0 = $63;
continue;
}
$66 = ($R$0 + 16) | 0;
$67 = HEAP32[$66 >> 2] | 0;
$68 = ($67 | 0) == (0 | 0);
if ($68) {
break;
} else {
$R$0 = $67;
$RP$0 = $66;
}
}
$69 = $RP$0 >>> 0 < $2 >>> 0;
if ($69) {
_abort();
// unreachable;
} else {
HEAP32[$RP$0 >> 2] = 0;
$R$1 = $R$0;
break;
}
} else {
$$sum35 = ($$sum2 + 8) | 0;
$48 = ($mem + $$sum35) | 0;
$49 = HEAP32[$48 >> 2] | 0;
$50 = $49 >>> 0 < $2 >>> 0;
if ($50) {
_abort();
// unreachable;
}
$51 = ($49 + 12) | 0;
$52 = HEAP32[$51 >> 2] | 0;
$53 = ($52 | 0) == ($14 | 0);
if (!$53) {
_abort();
// unreachable;
}
$54 = ($46 + 8) | 0;
$55 = HEAP32[$54 >> 2] | 0;
$56 = ($55 | 0) == ($14 | 0);
if ($56) {
HEAP32[$51 >> 2] = $46;
HEAP32[$54 >> 2] = $49;
$R$1 = $46;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$70 = ($44 | 0) == (0 | 0);
if ($70) {
$p$0 = $14;
$psize$0 = $15;
} else {
$$sum32 = ($$sum2 + 28) | 0;
$71 = ($mem + $$sum32) | 0;
$72 = HEAP32[$71 >> 2] | 0;
$73 = (((133240 + ($72 << 2)) | 0) + 304) | 0;
$74 = HEAP32[$73 >> 2] | 0;
$75 = ($14 | 0) == ($74 | 0);
if ($75) {
HEAP32[$73 >> 2] = $R$1;
$cond = ($R$1 | 0) == (0 | 0);
if ($cond) {
$76 = 1 << $72;
$77 = $76 ^ -1;
$78 = HEAP32[((133240 + 4) | 0) >> 2] | 0;
$79 = $78 & $77;
HEAP32[((133240 + 4) | 0) >> 2] = $79;
$p$0 = $14;
$psize$0 = $15;
break;
}
} else {
$80 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$81 = $44 >>> 0 < $80 >>> 0;
if ($81) {
_abort();
// unreachable;
}
$82 = ($44 + 16) | 0;
$83 = HEAP32[$82 >> 2] | 0;
$84 = ($83 | 0) == ($14 | 0);
if ($84) {
HEAP32[$82 >> 2] = $R$1;
} else {
$85 = ($44 + 20) | 0;
HEAP32[$85 >> 2] = $R$1;
}
$86 = ($R$1 | 0) == (0 | 0);
if ($86) {
$p$0 = $14;
$psize$0 = $15;
break;
}
}
$87 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$88 = $R$1 >>> 0 < $87 >>> 0;
if ($88) {
_abort();
// unreachable;
}
$89 = ($R$1 + 24) | 0;
HEAP32[$89 >> 2] = $44;
$$sum33 = ($$sum2 + 16) | 0;
$90 = ($mem + $$sum33) | 0;
$91 = HEAP32[$90 >> 2] | 0;
$92 = ($91 | 0) == (0 | 0);
do {
if (!$92) {
$93 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$94 = $91 >>> 0 < $93 >>> 0;
if ($94) {
_abort();
// unreachable;
} else {
$95 = ($R$1 + 16) | 0;
HEAP32[$95 >> 2] = $91;
$96 = ($91 + 24) | 0;
HEAP32[$96 >> 2] = $R$1;
break;
}
}
} while (0);
$$sum34 = ($$sum2 + 20) | 0;
$97 = ($mem + $$sum34) | 0;
$98 = HEAP32[$97 >> 2] | 0;
$99 = ($98 | 0) == (0 | 0);
if ($99) {
$p$0 = $14;
$psize$0 = $15;
} else {
$100 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$101 = $98 >>> 0 < $100 >>> 0;
if ($101) {
_abort();
// unreachable;
} else {
$102 = ($R$1 + 20) | 0;
HEAP32[$102 >> 2] = $98;
$103 = ($98 + 24) | 0;
HEAP32[$103 >> 2] = $R$1;
$p$0 = $14;
$psize$0 = $15;
break;
}
}
}
} else {
$p$0 = $1;
$psize$0 = $8;
}
} while (0);
$112 = $p$0 >>> 0 < $9 >>> 0;
if (!$112) {
_abort();
// unreachable;
}
$$sum25 = ($8 + -4) | 0;
$113 = ($mem + $$sum25) | 0;
$114 = HEAP32[$113 >> 2] | 0;
$115 = $114 & 1;
$116 = ($115 | 0) == 0;
if ($116) {
_abort();
// unreachable;
}
$117 = $114 & 2;
$118 = ($117 | 0) == 0;
if ($118) {
$119 = HEAP32[((133240 + 24) | 0) >> 2] | 0;
$120 = ($9 | 0) == ($119 | 0);
if ($120) {
$121 = HEAP32[((133240 + 12) | 0) >> 2] | 0;
$122 = ($121 + $psize$0) | 0;
HEAP32[((133240 + 12) | 0) >> 2] = $122;
HEAP32[((133240 + 24) | 0) >> 2] = $p$0;
$123 = $122 | 1;
$124 = ($p$0 + 4) | 0;
HEAP32[$124 >> 2] = $123;
$125 = HEAP32[((133240 + 20) | 0) >> 2] | 0;
$126 = ($p$0 | 0) == ($125 | 0);
if (!$126) {
STACKTOP = sp;
return;
}
HEAP32[((133240 + 20) | 0) >> 2] = 0;
HEAP32[((133240 + 8) | 0) >> 2] = 0;
STACKTOP = sp;
return;
}
$127 = HEAP32[((133240 + 20) | 0) >> 2] | 0;
$128 = ($9 | 0) == ($127 | 0);
if ($128) {
$129 = HEAP32[((133240 + 8) | 0) >> 2] | 0;
$130 = ($129 + $psize$0) | 0;
HEAP32[((133240 + 8) | 0) >> 2] = $130;
HEAP32[((133240 + 20) | 0) >> 2] = $p$0;
$131 = $130 | 1;
$132 = ($p$0 + 4) | 0;
HEAP32[$132 >> 2] = $131;
$133 = ($p$0 + $130) | 0;
HEAP32[$133 >> 2] = $130;
STACKTOP = sp;
return;
}
$134 = $114 & -8;
$135 = ($134 + $psize$0) | 0;
$136 = $114 >>> 3;
$137 = $114 >>> 0 < 256;
do {
if ($137) {
$138 = ($mem + $8) | 0;
$139 = HEAP32[$138 >> 2] | 0;
$$sum2324 = $8 | 4;
$140 = ($mem + $$sum2324) | 0;
$141 = HEAP32[$140 >> 2] | 0;
$142 = $136 << 1;
$143 = (((133240 + ($142 << 2)) | 0) + 40) | 0;
$144 = ($139 | 0) == ($143 | 0);
if (!$144) {
$145 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$146 = $139 >>> 0 < $145 >>> 0;
if ($146) {
_abort();
// unreachable;
}
$147 = ($139 + 12) | 0;
$148 = HEAP32[$147 >> 2] | 0;
$149 = ($148 | 0) == ($9 | 0);
if (!$149) {
_abort();
// unreachable;
}
}
$150 = ($141 | 0) == ($139 | 0);
if ($150) {
$151 = 1 << $136;
$152 = $151 ^ -1;
$153 = HEAP32[133240 >> 2] | 0;
$154 = $153 & $152;
HEAP32[133240 >> 2] = $154;
break;
}
$155 = ($141 | 0) == ($143 | 0);
if ($155) {
$$pre67 = ($141 + 8) | 0;
$$pre$phi68Z2D = $$pre67;
} else {
$156 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$157 = $141 >>> 0 < $156 >>> 0;
if ($157) {
_abort();
// unreachable;
}
$158 = ($141 + 8) | 0;
$159 = HEAP32[$158 >> 2] | 0;
$160 = ($159 | 0) == ($9 | 0);
if ($160) {
$$pre$phi68Z2D = $158;
} else {
_abort();
// unreachable;
}
}
$161 = ($139 + 12) | 0;
HEAP32[$161 >> 2] = $141;
HEAP32[$$pre$phi68Z2D >> 2] = $139;
} else {
$$sum5 = ($8 + 16) | 0;
$162 = ($mem + $$sum5) | 0;
$163 = HEAP32[$162 >> 2] | 0;
$$sum67 = $8 | 4;
$164 = ($mem + $$sum67) | 0;
$165 = HEAP32[$164 >> 2] | 0;
$166 = ($165 | 0) == ($9 | 0);
do {
if ($166) {
$$sum9 = ($8 + 12) | 0;
$177 = ($mem + $$sum9) | 0;
$178 = HEAP32[$177 >> 2] | 0;
$179 = ($178 | 0) == (0 | 0);
if ($179) {
$$sum8 = ($8 + 8) | 0;
$180 = ($mem + $$sum8) | 0;
$181 = HEAP32[$180 >> 2] | 0;
$182 = ($181 | 0) == (0 | 0);
if ($182) {
$R7$1 = 0;
break;
} else {
$R7$0 = $181;
$RP9$0 = $180;
}
} else {
$R7$0 = $178;
$RP9$0 = $177;
}
while (1) {
$183 = ($R7$0 + 20) | 0;
$184 = HEAP32[$183 >> 2] | 0;
$185 = ($184 | 0) == (0 | 0);
if (!$185) {
$R7$0 = $184;
$RP9$0 = $183;
continue;
}
$186 = ($R7$0 + 16) | 0;
$187 = HEAP32[$186 >> 2] | 0;
$188 = ($187 | 0) == (0 | 0);
if ($188) {
break;
} else {
$R7$0 = $187;
$RP9$0 = $186;
}
}
$189 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$190 = $RP9$0 >>> 0 < $189 >>> 0;
if ($190) {
_abort();
// unreachable;
} else {
HEAP32[$RP9$0 >> 2] = 0;
$R7$1 = $R7$0;
break;
}
} else {
$167 = ($mem + $8) | 0;
$168 = HEAP32[$167 >> 2] | 0;
$169 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$170 = $168 >>> 0 < $169 >>> 0;
if ($170) {
_abort();
// unreachable;
}
$171 = ($168 + 12) | 0;
$172 = HEAP32[$171 >> 2] | 0;
$173 = ($172 | 0) == ($9 | 0);
if (!$173) {
_abort();
// unreachable;
}
$174 = ($165 + 8) | 0;
$175 = HEAP32[$174 >> 2] | 0;
$176 = ($175 | 0) == ($9 | 0);
if ($176) {
HEAP32[$171 >> 2] = $165;
HEAP32[$174 >> 2] = $168;
$R7$1 = $165;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$191 = ($163 | 0) == (0 | 0);
if (!$191) {
$$sum18 = ($8 + 20) | 0;
$192 = ($mem + $$sum18) | 0;
$193 = HEAP32[$192 >> 2] | 0;
$194 = (((133240 + ($193 << 2)) | 0) + 304) | 0;
$195 = HEAP32[$194 >> 2] | 0;
$196 = ($9 | 0) == ($195 | 0);
if ($196) {
HEAP32[$194 >> 2] = $R7$1;
$cond54 = ($R7$1 | 0) == (0 | 0);
if ($cond54) {
$197 = 1 << $193;
$198 = $197 ^ -1;
$199 = HEAP32[((133240 + 4) | 0) >> 2] | 0;
$200 = $199 & $198;
HEAP32[((133240 + 4) | 0) >> 2] = $200;
break;
}
} else {
$201 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$202 = $163 >>> 0 < $201 >>> 0;
if ($202) {
_abort();
// unreachable;
}
$203 = ($163 + 16) | 0;
$204 = HEAP32[$203 >> 2] | 0;
$205 = ($204 | 0) == ($9 | 0);
if ($205) {
HEAP32[$203 >> 2] = $R7$1;
} else {
$206 = ($163 + 20) | 0;
HEAP32[$206 >> 2] = $R7$1;
}
$207 = ($R7$1 | 0) == (0 | 0);
if ($207) {
break;
}
}
$208 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$209 = $R7$1 >>> 0 < $208 >>> 0;
if ($209) {
_abort();
// unreachable;
}
$210 = ($R7$1 + 24) | 0;
HEAP32[$210 >> 2] = $163;
$$sum19 = ($8 + 8) | 0;
$211 = ($mem + $$sum19) | 0;
$212 = HEAP32[$211 >> 2] | 0;
$213 = ($212 | 0) == (0 | 0);
do {
if (!$213) {
$214 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$215 = $212 >>> 0 < $214 >>> 0;
if ($215) {
_abort();
// unreachable;
} else {
$216 = ($R7$1 + 16) | 0;
HEAP32[$216 >> 2] = $212;
$217 = ($212 + 24) | 0;
HEAP32[$217 >> 2] = $R7$1;
break;
}
}
} while (0);
$$sum20 = ($8 + 12) | 0;
$218 = ($mem + $$sum20) | 0;
$219 = HEAP32[$218 >> 2] | 0;
$220 = ($219 | 0) == (0 | 0);
if (!$220) {
$221 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$222 = $219 >>> 0 < $221 >>> 0;
if ($222) {
_abort();
// unreachable;
} else {
$223 = ($R7$1 + 20) | 0;
HEAP32[$223 >> 2] = $219;
$224 = ($219 + 24) | 0;
HEAP32[$224 >> 2] = $R7$1;
break;
}
}
}
}
} while (0);
$225 = $135 | 1;
$226 = ($p$0 + 4) | 0;
HEAP32[$226 >> 2] = $225;
$227 = ($p$0 + $135) | 0;
HEAP32[$227 >> 2] = $135;
$228 = HEAP32[((133240 + 20) | 0) >> 2] | 0;
$229 = ($p$0 | 0) == ($228 | 0);
if ($229) {
HEAP32[((133240 + 8) | 0) >> 2] = $135;
STACKTOP = sp;
return;
} else {
$psize$1 = $135;
}
} else {
$230 = $114 & -2;
HEAP32[$113 >> 2] = $230;
$231 = $psize$0 | 1;
$232 = ($p$0 + 4) | 0;
HEAP32[$232 >> 2] = $231;
$233 = ($p$0 + $psize$0) | 0;
HEAP32[$233 >> 2] = $psize$0;
$psize$1 = $psize$0;
}
$234 = $psize$1 >>> 3;
$235 = $psize$1 >>> 0 < 256;
if ($235) {
$236 = $234 << 1;
$237 = (((133240 + ($236 << 2)) | 0) + 40) | 0;
$238 = HEAP32[133240 >> 2] | 0;
$239 = 1 << $234;
$240 = $238 & $239;
$241 = ($240 | 0) == 0;
if ($241) {
$242 = $238 | $239;
HEAP32[133240 >> 2] = $242;
$$sum16$pre = ($236 + 2) | 0;
$$pre = (((133240 + ($$sum16$pre << 2)) | 0) + 40) | 0;
$$pre$phiZ2D = $$pre;
$F16$0 = $237;
} else {
$$sum17 = ($236 + 2) | 0;
$243 = (((133240 + ($$sum17 << 2)) | 0) + 40) | 0;
$244 = HEAP32[$243 >> 2] | 0;
$245 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$246 = $244 >>> 0 < $245 >>> 0;
if ($246) {
_abort();
// unreachable;
} else {
$$pre$phiZ2D = $243;
$F16$0 = $244;
}
}
HEAP32[$$pre$phiZ2D >> 2] = $p$0;
$247 = ($F16$0 + 12) | 0;
HEAP32[$247 >> 2] = $p$0;
$248 = ($p$0 + 8) | 0;
HEAP32[$248 >> 2] = $F16$0;
$249 = ($p$0 + 12) | 0;
HEAP32[$249 >> 2] = $237;
STACKTOP = sp;
return;
}
$250 = $psize$1 >>> 8;
$251 = ($250 | 0) == 0;
if ($251) {
$I18$0 = 0;
} else {
$252 = $psize$1 >>> 0 > 16777215;
if ($252) {
$I18$0 = 31;
} else {
$253 = ($250 + 1048320) | 0;
$254 = $253 >>> 16;
$255 = $254 & 8;
$256 = $250 << $255;
$257 = ($256 + 520192) | 0;
$258 = $257 >>> 16;
$259 = $258 & 4;
$260 = $259 | $255;
$261 = $256 << $259;
$262 = ($261 + 245760) | 0;
$263 = $262 >>> 16;
$264 = $263 & 2;
$265 = $260 | $264;
$266 = (14 - $265) | 0;
$267 = $261 << $264;
$268 = $267 >>> 15;
$269 = ($266 + $268) | 0;
$270 = $269 << 1;
$271 = ($269 + 7) | 0;
$272 = $psize$1 >>> $271;
$273 = $272 & 1;
$274 = $273 | $270;
$I18$0 = $274;
}
}
$275 = (((133240 + ($I18$0 << 2)) | 0) + 304) | 0;
$276 = ($p$0 + 28) | 0;
$I18$0$c = $I18$0;
HEAP32[$276 >> 2] = $I18$0$c;
$277 = ($p$0 + 20) | 0;
HEAP32[$277 >> 2] = 0;
$278 = ($p$0 + 16) | 0;
HEAP32[$278 >> 2] = 0;
$279 = HEAP32[((133240 + 4) | 0) >> 2] | 0;
$280 = 1 << $I18$0;
$281 = $279 & $280;
$282 = ($281 | 0) == 0;
L199: do {
if ($282) {
$283 = $279 | $280;
HEAP32[((133240 + 4) | 0) >> 2] = $283;
HEAP32[$275 >> 2] = $p$0;
$284 = ($p$0 + 24) | 0;
HEAP32[$284 >> 2] = $275;
$285 = ($p$0 + 12) | 0;
HEAP32[$285 >> 2] = $p$0;
$286 = ($p$0 + 8) | 0;
HEAP32[$286 >> 2] = $p$0;
} else {
$287 = HEAP32[$275 >> 2] | 0;
$288 = ($I18$0 | 0) == 31;
if ($288) {
$296 = 0;
} else {
$289 = $I18$0 >>> 1;
$290 = (25 - $289) | 0;
$296 = $290;
}
$291 = ($287 + 4) | 0;
$292 = HEAP32[$291 >> 2] | 0;
$293 = $292 & -8;
$294 = ($293 | 0) == ($psize$1 | 0);
L205: do {
if ($294) {
$T$0$lcssa = $287;
} else {
$295 = $psize$1 << $296;
$K19$057 = $295;
$T$056 = $287;
while (1) {
$303 = $K19$057 >>> 31;
$304 = ((($T$056 + ($303 << 2)) | 0) + 16) | 0;
$299 = HEAP32[$304 >> 2] | 0;
$305 = ($299 | 0) == (0 | 0);
if ($305) {
break;
}
$297 = $K19$057 << 1;
$298 = ($299 + 4) | 0;
$300 = HEAP32[$298 >> 2] | 0;
$301 = $300 & -8;
$302 = ($301 | 0) == ($psize$1 | 0);
if ($302) {
$T$0$lcssa = $299;
break L205;
} else {
$K19$057 = $297;
$T$056 = $299;
}
}
$306 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$307 = $304 >>> 0 < $306 >>> 0;
if ($307) {
_abort();
// unreachable;
} else {
HEAP32[$304 >> 2] = $p$0;
$308 = ($p$0 + 24) | 0;
HEAP32[$308 >> 2] = $T$056;
$309 = ($p$0 + 12) | 0;
HEAP32[$309 >> 2] = $p$0;
$310 = ($p$0 + 8) | 0;
HEAP32[$310 >> 2] = $p$0;
break L199;
}
}
} while (0);
$311 = ($T$0$lcssa + 8) | 0;
$312 = HEAP32[$311 >> 2] | 0;
$313 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$314 = $T$0$lcssa >>> 0 < $313 >>> 0;
if ($314) {
_abort();
// unreachable;
}
$315 = $312 >>> 0 < $313 >>> 0;
if ($315) {
_abort();
// unreachable;
} else {
$316 = ($312 + 12) | 0;
HEAP32[$316 >> 2] = $p$0;
HEAP32[$311 >> 2] = $p$0;
$317 = ($p$0 + 8) | 0;
HEAP32[$317 >> 2] = $312;
$318 = ($p$0 + 12) | 0;
HEAP32[$318 >> 2] = $T$0$lcssa;
$319 = ($p$0 + 24) | 0;
HEAP32[$319 >> 2] = 0;
break;
}
}
} while (0);
$320 = HEAP32[((133240 + 32) | 0) >> 2] | 0;
$321 = ($320 + -1) | 0;
HEAP32[((133240 + 32) | 0) >> 2] = $321;
$322 = ($321 | 0) == 0;
if ($322) {
$sp$0$in$i = (133240 + 456) | 0;
} else {
STACKTOP = sp;
return;
}
while (1) {
$sp$0$i = HEAP32[$sp$0$in$i >> 2] | 0;
$323 = ($sp$0$i | 0) == (0 | 0);
$324 = ($sp$0$i + 8) | 0;
if ($323) {
break;
} else {
$sp$0$in$i = $324;
}
}
HEAP32[((133240 + 32) | 0) >> 2] = -1;
STACKTOP = sp;
return;
}
function _calloc($n_elements, $elem_size) {
$n_elements = $n_elements | 0;
$elem_size = $elem_size | 0;
var $$ = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$req$0 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($n_elements | 0) == 0;
if ($0) {
$req$0 = 0;
} else {
$1 = Math_imul($elem_size, $n_elements) | 0;
$2 = $elem_size | $n_elements;
$3 = $2 >>> 0 > 65535;
if ($3) {
$4 = (($1 >>> 0) / ($n_elements >>> 0)) & -1;
$5 = ($4 | 0) == ($elem_size | 0);
$$ = $5 ? $1 : -1;
$req$0 = $$;
} else {
$req$0 = $1;
}
}
$6 = _malloc($req$0) | 0;
$7 = ($6 | 0) == (0 | 0);
if ($7) {
STACKTOP = sp;
return $6 | 0;
}
$8 = ($6 + -4) | 0;
$9 = HEAP32[$8 >> 2] | 0;
$10 = $9 & 3;
$11 = ($10 | 0) == 0;
if ($11) {
STACKTOP = sp;
return $6 | 0;
}
_memset($6 | 0, 0, $req$0 | 0) | 0;
STACKTOP = sp;
return $6 | 0;
}
function _realloc($oldmem, $bytes) {
$oldmem = $oldmem | 0;
$bytes = $bytes | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0;
var $7 = 0,
$8 = 0,
$9 = 0,
$mem$0 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($oldmem | 0) == (0 | 0);
do {
if ($0) {
$1 = _malloc($bytes) | 0;
$mem$0 = $1;
} else {
$2 = $bytes >>> 0 > 4294967231;
if ($2) {
$3 = ___errno_location() | 0;
HEAP32[$3 >> 2] = 12;
$mem$0 = 0;
break;
}
$4 = $bytes >>> 0 < 11;
if ($4) {
$8 = 16;
} else {
$5 = ($bytes + 11) | 0;
$6 = $5 & -8;
$8 = $6;
}
$7 = ($oldmem + -8) | 0;
$9 = _try_realloc_chunk($7, $8) | 0;
$10 = ($9 | 0) == (0 | 0);
if (!$10) {
$11 = ($9 + 8) | 0;
$mem$0 = $11;
break;
}
$12 = _malloc($bytes) | 0;
$13 = ($12 | 0) == (0 | 0);
if ($13) {
$mem$0 = 0;
} else {
$14 = ($oldmem + -4) | 0;
$15 = HEAP32[$14 >> 2] | 0;
$16 = $15 & -8;
$17 = $15 & 3;
$18 = ($17 | 0) == 0;
$19 = $18 ? 8 : 4;
$20 = ($16 - $19) | 0;
$21 = $20 >>> 0 < $bytes >>> 0;
$22 = $21 ? $20 : $bytes;
_memcpy($12 | 0, $oldmem | 0, $22 | 0) | 0;
_free($oldmem);
$mem$0 = $12;
}
}
} while (0);
STACKTOP = sp;
return $mem$0 | 0;
}
function _try_realloc_chunk($p, $nb) {
$p = $p | 0;
$nb = $nb | 0;
var $$pre = 0,
$$pre$phiZ2D = 0,
$$sum = 0,
$$sum11 = 0,
$$sum12 = 0,
$$sum13 = 0,
$$sum14 = 0,
$$sum15 = 0,
$$sum16 = 0,
$$sum17 = 0,
$$sum19 = 0,
$$sum2 = 0,
$$sum20 = 0,
$$sum22 = 0,
$$sum23 = 0,
$$sum2728 = 0,
$$sum3 = 0,
$$sum4 = 0,
$$sum5 = 0,
$$sum78 = 0;
var $$sum910 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0;
var $115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0;
var $133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0;
var $151 = 0,
$152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0;
var $17 = 0,
$170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0;
var $3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0;
var $48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0;
var $66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0;
var $84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$R$0 = 0,
$R$1 = 0,
$RP$0 = 0;
var $cond = 0,
$newp$0 = 0,
$or$cond = 0,
$storemerge = 0,
$storemerge21 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($p + 4) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = $1 & -8;
$3 = ($p + $2) | 0;
$4 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$5 = $p >>> 0 < $4 >>> 0;
if ($5) {
_abort();
// unreachable;
}
$6 = $1 & 3;
$7 = ($6 | 0) != 1;
$8 = $p >>> 0 < $3 >>> 0;
$or$cond = $7 & $8;
if (!$or$cond) {
_abort();
// unreachable;
}
$$sum2728 = $2 | 4;
$9 = ($p + $$sum2728) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = $10 & 1;
$12 = ($11 | 0) == 0;
if ($12) {
_abort();
// unreachable;
}
$13 = ($6 | 0) == 0;
if ($13) {
$14 = $nb >>> 0 < 256;
if ($14) {
$newp$0 = 0;
STACKTOP = sp;
return $newp$0 | 0;
}
$15 = ($nb + 4) | 0;
$16 = $2 >>> 0 < $15 >>> 0;
if (!$16) {
$17 = ($2 - $nb) | 0;
$18 = HEAP32[((133712 + 8) | 0) >> 2] | 0;
$19 = $18 << 1;
$20 = $17 >>> 0 > $19 >>> 0;
if (!$20) {
$newp$0 = $p;
STACKTOP = sp;
return $newp$0 | 0;
}
}
$newp$0 = 0;
STACKTOP = sp;
return $newp$0 | 0;
}
$21 = $2 >>> 0 < $nb >>> 0;
if (!$21) {
$22 = ($2 - $nb) | 0;
$23 = $22 >>> 0 > 15;
if (!$23) {
$newp$0 = $p;
STACKTOP = sp;
return $newp$0 | 0;
}
$24 = ($p + $nb) | 0;
$25 = $1 & 1;
$26 = $25 | $nb;
$27 = $26 | 2;
HEAP32[$0 >> 2] = $27;
$$sum23 = ($nb + 4) | 0;
$28 = ($p + $$sum23) | 0;
$29 = $22 | 3;
HEAP32[$28 >> 2] = $29;
$30 = HEAP32[$9 >> 2] | 0;
$31 = $30 | 1;
HEAP32[$9 >> 2] = $31;
_dispose_chunk($24, $22);
$newp$0 = $p;
STACKTOP = sp;
return $newp$0 | 0;
}
$32 = HEAP32[((133240 + 24) | 0) >> 2] | 0;
$33 = ($3 | 0) == ($32 | 0);
if ($33) {
$34 = HEAP32[((133240 + 12) | 0) >> 2] | 0;
$35 = ($34 + $2) | 0;
$36 = $35 >>> 0 > $nb >>> 0;
if (!$36) {
$newp$0 = 0;
STACKTOP = sp;
return $newp$0 | 0;
}
$37 = ($35 - $nb) | 0;
$38 = ($p + $nb) | 0;
$39 = $1 & 1;
$40 = $39 | $nb;
$41 = $40 | 2;
HEAP32[$0 >> 2] = $41;
$$sum22 = ($nb + 4) | 0;
$42 = ($p + $$sum22) | 0;
$43 = $37 | 1;
HEAP32[$42 >> 2] = $43;
HEAP32[((133240 + 24) | 0) >> 2] = $38;
HEAP32[((133240 + 12) | 0) >> 2] = $37;
$newp$0 = $p;
STACKTOP = sp;
return $newp$0 | 0;
}
$44 = HEAP32[((133240 + 20) | 0) >> 2] | 0;
$45 = ($3 | 0) == ($44 | 0);
if ($45) {
$46 = HEAP32[((133240 + 8) | 0) >> 2] | 0;
$47 = ($46 + $2) | 0;
$48 = $47 >>> 0 < $nb >>> 0;
if ($48) {
$newp$0 = 0;
STACKTOP = sp;
return $newp$0 | 0;
}
$49 = ($47 - $nb) | 0;
$50 = $49 >>> 0 > 15;
if ($50) {
$51 = ($p + $nb) | 0;
$52 = ($p + $47) | 0;
$53 = $1 & 1;
$54 = $53 | $nb;
$55 = $54 | 2;
HEAP32[$0 >> 2] = $55;
$$sum19 = ($nb + 4) | 0;
$56 = ($p + $$sum19) | 0;
$57 = $49 | 1;
HEAP32[$56 >> 2] = $57;
HEAP32[$52 >> 2] = $49;
$$sum20 = ($47 + 4) | 0;
$58 = ($p + $$sum20) | 0;
$59 = HEAP32[$58 >> 2] | 0;
$60 = $59 & -2;
HEAP32[$58 >> 2] = $60;
$storemerge = $51;
$storemerge21 = $49;
} else {
$61 = $1 & 1;
$62 = $61 | $47;
$63 = $62 | 2;
HEAP32[$0 >> 2] = $63;
$$sum17 = ($47 + 4) | 0;
$64 = ($p + $$sum17) | 0;
$65 = HEAP32[$64 >> 2] | 0;
$66 = $65 | 1;
HEAP32[$64 >> 2] = $66;
$storemerge = 0;
$storemerge21 = 0;
}
HEAP32[((133240 + 8) | 0) >> 2] = $storemerge21;
HEAP32[((133240 + 20) | 0) >> 2] = $storemerge;
$newp$0 = $p;
STACKTOP = sp;
return $newp$0 | 0;
}
$67 = $10 & 2;
$68 = ($67 | 0) == 0;
if (!$68) {
$newp$0 = 0;
STACKTOP = sp;
return $newp$0 | 0;
}
$69 = $10 & -8;
$70 = ($69 + $2) | 0;
$71 = $70 >>> 0 < $nb >>> 0;
if ($71) {
$newp$0 = 0;
STACKTOP = sp;
return $newp$0 | 0;
}
$72 = ($70 - $nb) | 0;
$73 = $10 >>> 3;
$74 = $10 >>> 0 < 256;
do {
if ($74) {
$$sum15 = ($2 + 8) | 0;
$75 = ($p + $$sum15) | 0;
$76 = HEAP32[$75 >> 2] | 0;
$$sum16 = ($2 + 12) | 0;
$77 = ($p + $$sum16) | 0;
$78 = HEAP32[$77 >> 2] | 0;
$79 = $73 << 1;
$80 = (((133240 + ($79 << 2)) | 0) + 40) | 0;
$81 = ($76 | 0) == ($80 | 0);
if (!$81) {
$82 = $76 >>> 0 < $4 >>> 0;
if ($82) {
_abort();
// unreachable;
}
$83 = ($76 + 12) | 0;
$84 = HEAP32[$83 >> 2] | 0;
$85 = ($84 | 0) == ($3 | 0);
if (!$85) {
_abort();
// unreachable;
}
}
$86 = ($78 | 0) == ($76 | 0);
if ($86) {
$87 = 1 << $73;
$88 = $87 ^ -1;
$89 = HEAP32[133240 >> 2] | 0;
$90 = $89 & $88;
HEAP32[133240 >> 2] = $90;
break;
}
$91 = ($78 | 0) == ($80 | 0);
if ($91) {
$$pre = ($78 + 8) | 0;
$$pre$phiZ2D = $$pre;
} else {
$92 = $78 >>> 0 < $4 >>> 0;
if ($92) {
_abort();
// unreachable;
}
$93 = ($78 + 8) | 0;
$94 = HEAP32[$93 >> 2] | 0;
$95 = ($94 | 0) == ($3 | 0);
if ($95) {
$$pre$phiZ2D = $93;
} else {
_abort();
// unreachable;
}
}
$96 = ($76 + 12) | 0;
HEAP32[$96 >> 2] = $78;
HEAP32[$$pre$phiZ2D >> 2] = $76;
} else {
$$sum = ($2 + 24) | 0;
$97 = ($p + $$sum) | 0;
$98 = HEAP32[$97 >> 2] | 0;
$$sum2 = ($2 + 12) | 0;
$99 = ($p + $$sum2) | 0;
$100 = HEAP32[$99 >> 2] | 0;
$101 = ($100 | 0) == ($3 | 0);
do {
if ($101) {
$$sum4 = ($2 + 20) | 0;
$111 = ($p + $$sum4) | 0;
$112 = HEAP32[$111 >> 2] | 0;
$113 = ($112 | 0) == (0 | 0);
if ($113) {
$$sum3 = ($2 + 16) | 0;
$114 = ($p + $$sum3) | 0;
$115 = HEAP32[$114 >> 2] | 0;
$116 = ($115 | 0) == (0 | 0);
if ($116) {
$R$1 = 0;
break;
} else {
$R$0 = $115;
$RP$0 = $114;
}
} else {
$R$0 = $112;
$RP$0 = $111;
}
while (1) {
$117 = ($R$0 + 20) | 0;
$118 = HEAP32[$117 >> 2] | 0;
$119 = ($118 | 0) == (0 | 0);
if (!$119) {
$R$0 = $118;
$RP$0 = $117;
continue;
}
$120 = ($R$0 + 16) | 0;
$121 = HEAP32[$120 >> 2] | 0;
$122 = ($121 | 0) == (0 | 0);
if ($122) {
break;
} else {
$R$0 = $121;
$RP$0 = $120;
}
}
$123 = $RP$0 >>> 0 < $4 >>> 0;
if ($123) {
_abort();
// unreachable;
} else {
HEAP32[$RP$0 >> 2] = 0;
$R$1 = $R$0;
break;
}
} else {
$$sum14 = ($2 + 8) | 0;
$102 = ($p + $$sum14) | 0;
$103 = HEAP32[$102 >> 2] | 0;
$104 = $103 >>> 0 < $4 >>> 0;
if ($104) {
_abort();
// unreachable;
}
$105 = ($103 + 12) | 0;
$106 = HEAP32[$105 >> 2] | 0;
$107 = ($106 | 0) == ($3 | 0);
if (!$107) {
_abort();
// unreachable;
}
$108 = ($100 + 8) | 0;
$109 = HEAP32[$108 >> 2] | 0;
$110 = ($109 | 0) == ($3 | 0);
if ($110) {
HEAP32[$105 >> 2] = $100;
HEAP32[$108 >> 2] = $103;
$R$1 = $100;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$124 = ($98 | 0) == (0 | 0);
if (!$124) {
$$sum11 = ($2 + 28) | 0;
$125 = ($p + $$sum11) | 0;
$126 = HEAP32[$125 >> 2] | 0;
$127 = (((133240 + ($126 << 2)) | 0) + 304) | 0;
$128 = HEAP32[$127 >> 2] | 0;
$129 = ($3 | 0) == ($128 | 0);
if ($129) {
HEAP32[$127 >> 2] = $R$1;
$cond = ($R$1 | 0) == (0 | 0);
if ($cond) {
$130 = 1 << $126;
$131 = $130 ^ -1;
$132 = HEAP32[((133240 + 4) | 0) >> 2] | 0;
$133 = $132 & $131;
HEAP32[((133240 + 4) | 0) >> 2] = $133;
break;
}
} else {
$134 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$135 = $98 >>> 0 < $134 >>> 0;
if ($135) {
_abort();
// unreachable;
}
$136 = ($98 + 16) | 0;
$137 = HEAP32[$136 >> 2] | 0;
$138 = ($137 | 0) == ($3 | 0);
if ($138) {
HEAP32[$136 >> 2] = $R$1;
} else {
$139 = ($98 + 20) | 0;
HEAP32[$139 >> 2] = $R$1;
}
$140 = ($R$1 | 0) == (0 | 0);
if ($140) {
break;
}
}
$141 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$142 = $R$1 >>> 0 < $141 >>> 0;
if ($142) {
_abort();
// unreachable;
}
$143 = ($R$1 + 24) | 0;
HEAP32[$143 >> 2] = $98;
$$sum12 = ($2 + 16) | 0;
$144 = ($p + $$sum12) | 0;
$145 = HEAP32[$144 >> 2] | 0;
$146 = ($145 | 0) == (0 | 0);
do {
if (!$146) {
$147 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$148 = $145 >>> 0 < $147 >>> 0;
if ($148) {
_abort();
// unreachable;
} else {
$149 = ($R$1 + 16) | 0;
HEAP32[$149 >> 2] = $145;
$150 = ($145 + 24) | 0;
HEAP32[$150 >> 2] = $R$1;
break;
}
}
} while (0);
$$sum13 = ($2 + 20) | 0;
$151 = ($p + $$sum13) | 0;
$152 = HEAP32[$151 >> 2] | 0;
$153 = ($152 | 0) == (0 | 0);
if (!$153) {
$154 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$155 = $152 >>> 0 < $154 >>> 0;
if ($155) {
_abort();
// unreachable;
} else {
$156 = ($R$1 + 20) | 0;
HEAP32[$156 >> 2] = $152;
$157 = ($152 + 24) | 0;
HEAP32[$157 >> 2] = $R$1;
break;
}
}
}
}
} while (0);
$158 = $72 >>> 0 < 16;
if ($158) {
$159 = HEAP32[$0 >> 2] | 0;
$160 = $159 & 1;
$161 = $70 | $160;
$162 = $161 | 2;
HEAP32[$0 >> 2] = $162;
$$sum910 = $70 | 4;
$163 = ($p + $$sum910) | 0;
$164 = HEAP32[$163 >> 2] | 0;
$165 = $164 | 1;
HEAP32[$163 >> 2] = $165;
$newp$0 = $p;
STACKTOP = sp;
return $newp$0 | 0;
} else {
$166 = ($p + $nb) | 0;
$167 = HEAP32[$0 >> 2] | 0;
$168 = $167 & 1;
$169 = $168 | $nb;
$170 = $169 | 2;
HEAP32[$0 >> 2] = $170;
$$sum5 = ($nb + 4) | 0;
$171 = ($p + $$sum5) | 0;
$172 = $72 | 3;
HEAP32[$171 >> 2] = $172;
$$sum78 = $70 | 4;
$173 = ($p + $$sum78) | 0;
$174 = HEAP32[$173 >> 2] | 0;
$175 = $174 | 1;
HEAP32[$173 >> 2] = $175;
_dispose_chunk($166, $72);
$newp$0 = $p;
STACKTOP = sp;
return $newp$0 | 0;
}
return 0 | 0;
}
function _dispose_chunk($p, $psize) {
$p = $p | 0;
$psize = $psize | 0;
var $$0 = 0,
$$02 = 0,
$$1 = 0,
$$pre = 0,
$$pre$phi63Z2D = 0,
$$pre$phi65Z2D = 0,
$$pre$phiZ2D = 0,
$$pre62 = 0,
$$pre64 = 0,
$$sum = 0,
$$sum1 = 0,
$$sum12$pre = 0,
$$sum13 = 0,
$$sum14 = 0,
$$sum15 = 0,
$$sum16 = 0,
$$sum17 = 0,
$$sum18 = 0,
$$sum19 = 0,
$$sum2 = 0;
var $$sum20 = 0,
$$sum22 = 0,
$$sum23 = 0,
$$sum24 = 0,
$$sum25 = 0,
$$sum26 = 0,
$$sum27 = 0,
$$sum28 = 0,
$$sum29 = 0,
$$sum3 = 0,
$$sum30 = 0,
$$sum31 = 0,
$$sum4 = 0,
$$sum5 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0;
var $103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0;
var $121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0;
var $14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0,
$152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0;
var $158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0,
$170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0;
var $176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0,
$189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0;
var $194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0,
$206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0;
var $211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0,
$224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0;
var $23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0,
$242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0;
var $248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0,
$260 = 0,
$261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0;
var $266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0,
$279 = 0,
$28 = 0,
$280 = 0,
$281 = 0,
$282 = 0,
$283 = 0;
var $284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0,
$297 = 0,
$298 = 0,
$299 = 0,
$3 = 0,
$30 = 0,
$300 = 0;
var $301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0,
$306 = 0,
$307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0;
var $40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0;
var $59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0;
var $77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0;
var $95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$F16$0 = 0,
$I19$0 = 0,
$I19$0$c = 0,
$K20$049 = 0,
$R$0 = 0,
$R$1 = 0,
$R7$0 = 0,
$R7$1 = 0,
$RP$0 = 0,
$RP9$0 = 0,
$T$0$lcssa = 0,
$T$048 = 0,
$cond = 0,
$cond46 = 0,
label = 0;
var sp = 0;
sp = STACKTOP;
$0 = ($p + $psize) | 0;
$1 = ($p + 4) | 0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = $2 & 1;
$4 = ($3 | 0) == 0;
do {
if ($4) {
$5 = HEAP32[$p >> 2] | 0;
$6 = $2 & 3;
$7 = ($6 | 0) == 0;
if ($7) {
STACKTOP = sp;
return;
}
$8 = (0 - $5) | 0;
$9 = ($p + $8) | 0;
$10 = ($5 + $psize) | 0;
$11 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$12 = $9 >>> 0 < $11 >>> 0;
if ($12) {
_abort();
// unreachable;
}
$13 = HEAP32[((133240 + 20) | 0) >> 2] | 0;
$14 = ($9 | 0) == ($13 | 0);
if ($14) {
$$sum = ($psize + 4) | 0;
$100 = ($p + $$sum) | 0;
$101 = HEAP32[$100 >> 2] | 0;
$102 = $101 & 3;
$103 = ($102 | 0) == 3;
if (!$103) {
$$0 = $9;
$$02 = $10;
break;
}
HEAP32[((133240 + 8) | 0) >> 2] = $10;
$104 = HEAP32[$100 >> 2] | 0;
$105 = $104 & -2;
HEAP32[$100 >> 2] = $105;
$106 = $10 | 1;
$$sum20 = (4 - $5) | 0;
$107 = ($p + $$sum20) | 0;
HEAP32[$107 >> 2] = $106;
HEAP32[$0 >> 2] = $10;
STACKTOP = sp;
return;
}
$15 = $5 >>> 3;
$16 = $5 >>> 0 < 256;
if ($16) {
$$sum30 = (8 - $5) | 0;
$17 = ($p + $$sum30) | 0;
$18 = HEAP32[$17 >> 2] | 0;
$$sum31 = (12 - $5) | 0;
$19 = ($p + $$sum31) | 0;
$20 = HEAP32[$19 >> 2] | 0;
$21 = $15 << 1;
$22 = (((133240 + ($21 << 2)) | 0) + 40) | 0;
$23 = ($18 | 0) == ($22 | 0);
if (!$23) {
$24 = $18 >>> 0 < $11 >>> 0;
if ($24) {
_abort();
// unreachable;
}
$25 = ($18 + 12) | 0;
$26 = HEAP32[$25 >> 2] | 0;
$27 = ($26 | 0) == ($9 | 0);
if (!$27) {
_abort();
// unreachable;
}
}
$28 = ($20 | 0) == ($18 | 0);
if ($28) {
$29 = 1 << $15;
$30 = $29 ^ -1;
$31 = HEAP32[133240 >> 2] | 0;
$32 = $31 & $30;
HEAP32[133240 >> 2] = $32;
$$0 = $9;
$$02 = $10;
break;
}
$33 = ($20 | 0) == ($22 | 0);
if ($33) {
$$pre64 = ($20 + 8) | 0;
$$pre$phi65Z2D = $$pre64;
} else {
$34 = $20 >>> 0 < $11 >>> 0;
if ($34) {
_abort();
// unreachable;
}
$35 = ($20 + 8) | 0;
$36 = HEAP32[$35 >> 2] | 0;
$37 = ($36 | 0) == ($9 | 0);
if ($37) {
$$pre$phi65Z2D = $35;
} else {
_abort();
// unreachable;
}
}
$38 = ($18 + 12) | 0;
HEAP32[$38 >> 2] = $20;
HEAP32[$$pre$phi65Z2D >> 2] = $18;
$$0 = $9;
$$02 = $10;
break;
}
$$sum22 = (24 - $5) | 0;
$39 = ($p + $$sum22) | 0;
$40 = HEAP32[$39 >> 2] | 0;
$$sum23 = (12 - $5) | 0;
$41 = ($p + $$sum23) | 0;
$42 = HEAP32[$41 >> 2] | 0;
$43 = ($42 | 0) == ($9 | 0);
do {
if ($43) {
$$sum24 = (16 - $5) | 0;
$$sum25 = ($$sum24 + 4) | 0;
$53 = ($p + $$sum25) | 0;
$54 = HEAP32[$53 >> 2] | 0;
$55 = ($54 | 0) == (0 | 0);
if ($55) {
$56 = ($p + $$sum24) | 0;
$57 = HEAP32[$56 >> 2] | 0;
$58 = ($57 | 0) == (0 | 0);
if ($58) {
$R$1 = 0;
break;
} else {
$R$0 = $57;
$RP$0 = $56;
}
} else {
$R$0 = $54;
$RP$0 = $53;
}
while (1) {
$59 = ($R$0 + 20) | 0;
$60 = HEAP32[$59 >> 2] | 0;
$61 = ($60 | 0) == (0 | 0);
if (!$61) {
$R$0 = $60;
$RP$0 = $59;
continue;
}
$62 = ($R$0 + 16) | 0;
$63 = HEAP32[$62 >> 2] | 0;
$64 = ($63 | 0) == (0 | 0);
if ($64) {
break;
} else {
$R$0 = $63;
$RP$0 = $62;
}
}
$65 = $RP$0 >>> 0 < $11 >>> 0;
if ($65) {
_abort();
// unreachable;
} else {
HEAP32[$RP$0 >> 2] = 0;
$R$1 = $R$0;
break;
}
} else {
$$sum29 = (8 - $5) | 0;
$44 = ($p + $$sum29) | 0;
$45 = HEAP32[$44 >> 2] | 0;
$46 = $45 >>> 0 < $11 >>> 0;
if ($46) {
_abort();
// unreachable;
}
$47 = ($45 + 12) | 0;
$48 = HEAP32[$47 >> 2] | 0;
$49 = ($48 | 0) == ($9 | 0);
if (!$49) {
_abort();
// unreachable;
}
$50 = ($42 + 8) | 0;
$51 = HEAP32[$50 >> 2] | 0;
$52 = ($51 | 0) == ($9 | 0);
if ($52) {
HEAP32[$47 >> 2] = $42;
HEAP32[$50 >> 2] = $45;
$R$1 = $42;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$66 = ($40 | 0) == (0 | 0);
if ($66) {
$$0 = $9;
$$02 = $10;
} else {
$$sum26 = (28 - $5) | 0;
$67 = ($p + $$sum26) | 0;
$68 = HEAP32[$67 >> 2] | 0;
$69 = (((133240 + ($68 << 2)) | 0) + 304) | 0;
$70 = HEAP32[$69 >> 2] | 0;
$71 = ($9 | 0) == ($70 | 0);
if ($71) {
HEAP32[$69 >> 2] = $R$1;
$cond = ($R$1 | 0) == (0 | 0);
if ($cond) {
$72 = 1 << $68;
$73 = $72 ^ -1;
$74 = HEAP32[((133240 + 4) | 0) >> 2] | 0;
$75 = $74 & $73;
HEAP32[((133240 + 4) | 0) >> 2] = $75;
$$0 = $9;
$$02 = $10;
break;
}
} else {
$76 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$77 = $40 >>> 0 < $76 >>> 0;
if ($77) {
_abort();
// unreachable;
}
$78 = ($40 + 16) | 0;
$79 = HEAP32[$78 >> 2] | 0;
$80 = ($79 | 0) == ($9 | 0);
if ($80) {
HEAP32[$78 >> 2] = $R$1;
} else {
$81 = ($40 + 20) | 0;
HEAP32[$81 >> 2] = $R$1;
}
$82 = ($R$1 | 0) == (0 | 0);
if ($82) {
$$0 = $9;
$$02 = $10;
break;
}
}
$83 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$84 = $R$1 >>> 0 < $83 >>> 0;
if ($84) {
_abort();
// unreachable;
}
$85 = ($R$1 + 24) | 0;
HEAP32[$85 >> 2] = $40;
$$sum27 = (16 - $5) | 0;
$86 = ($p + $$sum27) | 0;
$87 = HEAP32[$86 >> 2] | 0;
$88 = ($87 | 0) == (0 | 0);
do {
if (!$88) {
$89 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$90 = $87 >>> 0 < $89 >>> 0;
if ($90) {
_abort();
// unreachable;
} else {
$91 = ($R$1 + 16) | 0;
HEAP32[$91 >> 2] = $87;
$92 = ($87 + 24) | 0;
HEAP32[$92 >> 2] = $R$1;
break;
}
}
} while (0);
$$sum28 = ($$sum27 + 4) | 0;
$93 = ($p + $$sum28) | 0;
$94 = HEAP32[$93 >> 2] | 0;
$95 = ($94 | 0) == (0 | 0);
if ($95) {
$$0 = $9;
$$02 = $10;
} else {
$96 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$97 = $94 >>> 0 < $96 >>> 0;
if ($97) {
_abort();
// unreachable;
} else {
$98 = ($R$1 + 20) | 0;
HEAP32[$98 >> 2] = $94;
$99 = ($94 + 24) | 0;
HEAP32[$99 >> 2] = $R$1;
$$0 = $9;
$$02 = $10;
break;
}
}
}
} else {
$$0 = $p;
$$02 = $psize;
}
} while (0);
$108 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$109 = $0 >>> 0 < $108 >>> 0;
if ($109) {
_abort();
// unreachable;
}
$$sum1 = ($psize + 4) | 0;
$110 = ($p + $$sum1) | 0;
$111 = HEAP32[$110 >> 2] | 0;
$112 = $111 & 2;
$113 = ($112 | 0) == 0;
if ($113) {
$114 = HEAP32[((133240 + 24) | 0) >> 2] | 0;
$115 = ($0 | 0) == ($114 | 0);
if ($115) {
$116 = HEAP32[((133240 + 12) | 0) >> 2] | 0;
$117 = ($116 + $$02) | 0;
HEAP32[((133240 + 12) | 0) >> 2] = $117;
HEAP32[((133240 + 24) | 0) >> 2] = $$0;
$118 = $117 | 1;
$119 = ($$0 + 4) | 0;
HEAP32[$119 >> 2] = $118;
$120 = HEAP32[((133240 + 20) | 0) >> 2] | 0;
$121 = ($$0 | 0) == ($120 | 0);
if (!$121) {
STACKTOP = sp;
return;
}
HEAP32[((133240 + 20) | 0) >> 2] = 0;
HEAP32[((133240 + 8) | 0) >> 2] = 0;
STACKTOP = sp;
return;
}
$122 = HEAP32[((133240 + 20) | 0) >> 2] | 0;
$123 = ($0 | 0) == ($122 | 0);
if ($123) {
$124 = HEAP32[((133240 + 8) | 0) >> 2] | 0;
$125 = ($124 + $$02) | 0;
HEAP32[((133240 + 8) | 0) >> 2] = $125;
HEAP32[((133240 + 20) | 0) >> 2] = $$0;
$126 = $125 | 1;
$127 = ($$0 + 4) | 0;
HEAP32[$127 >> 2] = $126;
$128 = ($$0 + $125) | 0;
HEAP32[$128 >> 2] = $125;
STACKTOP = sp;
return;
}
$129 = $111 & -8;
$130 = ($129 + $$02) | 0;
$131 = $111 >>> 3;
$132 = $111 >>> 0 < 256;
do {
if ($132) {
$$sum18 = ($psize + 8) | 0;
$133 = ($p + $$sum18) | 0;
$134 = HEAP32[$133 >> 2] | 0;
$$sum19 = ($psize + 12) | 0;
$135 = ($p + $$sum19) | 0;
$136 = HEAP32[$135 >> 2] | 0;
$137 = $131 << 1;
$138 = (((133240 + ($137 << 2)) | 0) + 40) | 0;
$139 = ($134 | 0) == ($138 | 0);
if (!$139) {
$140 = $134 >>> 0 < $108 >>> 0;
if ($140) {
_abort();
// unreachable;
}
$141 = ($134 + 12) | 0;
$142 = HEAP32[$141 >> 2] | 0;
$143 = ($142 | 0) == ($0 | 0);
if (!$143) {
_abort();
// unreachable;
}
}
$144 = ($136 | 0) == ($134 | 0);
if ($144) {
$145 = 1 << $131;
$146 = $145 ^ -1;
$147 = HEAP32[133240 >> 2] | 0;
$148 = $147 & $146;
HEAP32[133240 >> 2] = $148;
break;
}
$149 = ($136 | 0) == ($138 | 0);
if ($149) {
$$pre62 = ($136 + 8) | 0;
$$pre$phi63Z2D = $$pre62;
} else {
$150 = $136 >>> 0 < $108 >>> 0;
if ($150) {
_abort();
// unreachable;
}
$151 = ($136 + 8) | 0;
$152 = HEAP32[$151 >> 2] | 0;
$153 = ($152 | 0) == ($0 | 0);
if ($153) {
$$pre$phi63Z2D = $151;
} else {
_abort();
// unreachable;
}
}
$154 = ($134 + 12) | 0;
HEAP32[$154 >> 2] = $136;
HEAP32[$$pre$phi63Z2D >> 2] = $134;
} else {
$$sum2 = ($psize + 24) | 0;
$155 = ($p + $$sum2) | 0;
$156 = HEAP32[$155 >> 2] | 0;
$$sum3 = ($psize + 12) | 0;
$157 = ($p + $$sum3) | 0;
$158 = HEAP32[$157 >> 2] | 0;
$159 = ($158 | 0) == ($0 | 0);
do {
if ($159) {
$$sum5 = ($psize + 20) | 0;
$169 = ($p + $$sum5) | 0;
$170 = HEAP32[$169 >> 2] | 0;
$171 = ($170 | 0) == (0 | 0);
if ($171) {
$$sum4 = ($psize + 16) | 0;
$172 = ($p + $$sum4) | 0;
$173 = HEAP32[$172 >> 2] | 0;
$174 = ($173 | 0) == (0 | 0);
if ($174) {
$R7$1 = 0;
break;
} else {
$R7$0 = $173;
$RP9$0 = $172;
}
} else {
$R7$0 = $170;
$RP9$0 = $169;
}
while (1) {
$175 = ($R7$0 + 20) | 0;
$176 = HEAP32[$175 >> 2] | 0;
$177 = ($176 | 0) == (0 | 0);
if (!$177) {
$R7$0 = $176;
$RP9$0 = $175;
continue;
}
$178 = ($R7$0 + 16) | 0;
$179 = HEAP32[$178 >> 2] | 0;
$180 = ($179 | 0) == (0 | 0);
if ($180) {
break;
} else {
$R7$0 = $179;
$RP9$0 = $178;
}
}
$181 = $RP9$0 >>> 0 < $108 >>> 0;
if ($181) {
_abort();
// unreachable;
} else {
HEAP32[$RP9$0 >> 2] = 0;
$R7$1 = $R7$0;
break;
}
} else {
$$sum17 = ($psize + 8) | 0;
$160 = ($p + $$sum17) | 0;
$161 = HEAP32[$160 >> 2] | 0;
$162 = $161 >>> 0 < $108 >>> 0;
if ($162) {
_abort();
// unreachable;
}
$163 = ($161 + 12) | 0;
$164 = HEAP32[$163 >> 2] | 0;
$165 = ($164 | 0) == ($0 | 0);
if (!$165) {
_abort();
// unreachable;
}
$166 = ($158 + 8) | 0;
$167 = HEAP32[$166 >> 2] | 0;
$168 = ($167 | 0) == ($0 | 0);
if ($168) {
HEAP32[$163 >> 2] = $158;
HEAP32[$166 >> 2] = $161;
$R7$1 = $158;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$182 = ($156 | 0) == (0 | 0);
if (!$182) {
$$sum14 = ($psize + 28) | 0;
$183 = ($p + $$sum14) | 0;
$184 = HEAP32[$183 >> 2] | 0;
$185 = (((133240 + ($184 << 2)) | 0) + 304) | 0;
$186 = HEAP32[$185 >> 2] | 0;
$187 = ($0 | 0) == ($186 | 0);
if ($187) {
HEAP32[$185 >> 2] = $R7$1;
$cond46 = ($R7$1 | 0) == (0 | 0);
if ($cond46) {
$188 = 1 << $184;
$189 = $188 ^ -1;
$190 = HEAP32[((133240 + 4) | 0) >> 2] | 0;
$191 = $190 & $189;
HEAP32[((133240 + 4) | 0) >> 2] = $191;
break;
}
} else {
$192 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$193 = $156 >>> 0 < $192 >>> 0;
if ($193) {
_abort();
// unreachable;
}
$194 = ($156 + 16) | 0;
$195 = HEAP32[$194 >> 2] | 0;
$196 = ($195 | 0) == ($0 | 0);
if ($196) {
HEAP32[$194 >> 2] = $R7$1;
} else {
$197 = ($156 + 20) | 0;
HEAP32[$197 >> 2] = $R7$1;
}
$198 = ($R7$1 | 0) == (0 | 0);
if ($198) {
break;
}
}
$199 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$200 = $R7$1 >>> 0 < $199 >>> 0;
if ($200) {
_abort();
// unreachable;
}
$201 = ($R7$1 + 24) | 0;
HEAP32[$201 >> 2] = $156;
$$sum15 = ($psize + 16) | 0;
$202 = ($p + $$sum15) | 0;
$203 = HEAP32[$202 >> 2] | 0;
$204 = ($203 | 0) == (0 | 0);
do {
if (!$204) {
$205 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$206 = $203 >>> 0 < $205 >>> 0;
if ($206) {
_abort();
// unreachable;
} else {
$207 = ($R7$1 + 16) | 0;
HEAP32[$207 >> 2] = $203;
$208 = ($203 + 24) | 0;
HEAP32[$208 >> 2] = $R7$1;
break;
}
}
} while (0);
$$sum16 = ($psize + 20) | 0;
$209 = ($p + $$sum16) | 0;
$210 = HEAP32[$209 >> 2] | 0;
$211 = ($210 | 0) == (0 | 0);
if (!$211) {
$212 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$213 = $210 >>> 0 < $212 >>> 0;
if ($213) {
_abort();
// unreachable;
} else {
$214 = ($R7$1 + 20) | 0;
HEAP32[$214 >> 2] = $210;
$215 = ($210 + 24) | 0;
HEAP32[$215 >> 2] = $R7$1;
break;
}
}
}
}
} while (0);
$216 = $130 | 1;
$217 = ($$0 + 4) | 0;
HEAP32[$217 >> 2] = $216;
$218 = ($$0 + $130) | 0;
HEAP32[$218 >> 2] = $130;
$219 = HEAP32[((133240 + 20) | 0) >> 2] | 0;
$220 = ($$0 | 0) == ($219 | 0);
if ($220) {
HEAP32[((133240 + 8) | 0) >> 2] = $130;
STACKTOP = sp;
return;
} else {
$$1 = $130;
}
} else {
$221 = $111 & -2;
HEAP32[$110 >> 2] = $221;
$222 = $$02 | 1;
$223 = ($$0 + 4) | 0;
HEAP32[$223 >> 2] = $222;
$224 = ($$0 + $$02) | 0;
HEAP32[$224 >> 2] = $$02;
$$1 = $$02;
}
$225 = $$1 >>> 3;
$226 = $$1 >>> 0 < 256;
if ($226) {
$227 = $225 << 1;
$228 = (((133240 + ($227 << 2)) | 0) + 40) | 0;
$229 = HEAP32[133240 >> 2] | 0;
$230 = 1 << $225;
$231 = $229 & $230;
$232 = ($231 | 0) == 0;
if ($232) {
$233 = $229 | $230;
HEAP32[133240 >> 2] = $233;
$$sum12$pre = ($227 + 2) | 0;
$$pre = (((133240 + ($$sum12$pre << 2)) | 0) + 40) | 0;
$$pre$phiZ2D = $$pre;
$F16$0 = $228;
} else {
$$sum13 = ($227 + 2) | 0;
$234 = (((133240 + ($$sum13 << 2)) | 0) + 40) | 0;
$235 = HEAP32[$234 >> 2] | 0;
$236 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$237 = $235 >>> 0 < $236 >>> 0;
if ($237) {
_abort();
// unreachable;
} else {
$$pre$phiZ2D = $234;
$F16$0 = $235;
}
}
HEAP32[$$pre$phiZ2D >> 2] = $$0;
$238 = ($F16$0 + 12) | 0;
HEAP32[$238 >> 2] = $$0;
$239 = ($$0 + 8) | 0;
HEAP32[$239 >> 2] = $F16$0;
$240 = ($$0 + 12) | 0;
HEAP32[$240 >> 2] = $228;
STACKTOP = sp;
return;
}
$241 = $$1 >>> 8;
$242 = ($241 | 0) == 0;
if ($242) {
$I19$0 = 0;
} else {
$243 = $$1 >>> 0 > 16777215;
if ($243) {
$I19$0 = 31;
} else {
$244 = ($241 + 1048320) | 0;
$245 = $244 >>> 16;
$246 = $245 & 8;
$247 = $241 << $246;
$248 = ($247 + 520192) | 0;
$249 = $248 >>> 16;
$250 = $249 & 4;
$251 = $250 | $246;
$252 = $247 << $250;
$253 = ($252 + 245760) | 0;
$254 = $253 >>> 16;
$255 = $254 & 2;
$256 = $251 | $255;
$257 = (14 - $256) | 0;
$258 = $252 << $255;
$259 = $258 >>> 15;
$260 = ($257 + $259) | 0;
$261 = $260 << 1;
$262 = ($260 + 7) | 0;
$263 = $$1 >>> $262;
$264 = $263 & 1;
$265 = $264 | $261;
$I19$0 = $265;
}
}
$266 = (((133240 + ($I19$0 << 2)) | 0) + 304) | 0;
$267 = ($$0 + 28) | 0;
$I19$0$c = $I19$0;
HEAP32[$267 >> 2] = $I19$0$c;
$268 = ($$0 + 20) | 0;
HEAP32[$268 >> 2] = 0;
$269 = ($$0 + 16) | 0;
HEAP32[$269 >> 2] = 0;
$270 = HEAP32[((133240 + 4) | 0) >> 2] | 0;
$271 = 1 << $I19$0;
$272 = $270 & $271;
$273 = ($272 | 0) == 0;
if ($273) {
$274 = $270 | $271;
HEAP32[((133240 + 4) | 0) >> 2] = $274;
HEAP32[$266 >> 2] = $$0;
$275 = ($$0 + 24) | 0;
HEAP32[$275 >> 2] = $266;
$276 = ($$0 + 12) | 0;
HEAP32[$276 >> 2] = $$0;
$277 = ($$0 + 8) | 0;
HEAP32[$277 >> 2] = $$0;
STACKTOP = sp;
return;
}
$278 = HEAP32[$266 >> 2] | 0;
$279 = ($I19$0 | 0) == 31;
if ($279) {
$287 = 0;
} else {
$280 = $I19$0 >>> 1;
$281 = (25 - $280) | 0;
$287 = $281;
}
$282 = ($278 + 4) | 0;
$283 = HEAP32[$282 >> 2] | 0;
$284 = $283 & -8;
$285 = ($284 | 0) == ($$1 | 0);
L194: do {
if ($285) {
$T$0$lcssa = $278;
} else {
$286 = $$1 << $287;
$K20$049 = $286;
$T$048 = $278;
while (1) {
$294 = $K20$049 >>> 31;
$295 = ((($T$048 + ($294 << 2)) | 0) + 16) | 0;
$290 = HEAP32[$295 >> 2] | 0;
$296 = ($290 | 0) == (0 | 0);
if ($296) {
break;
}
$288 = $K20$049 << 1;
$289 = ($290 + 4) | 0;
$291 = HEAP32[$289 >> 2] | 0;
$292 = $291 & -8;
$293 = ($292 | 0) == ($$1 | 0);
if ($293) {
$T$0$lcssa = $290;
break L194;
} else {
$K20$049 = $288;
$T$048 = $290;
}
}
$297 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$298 = $295 >>> 0 < $297 >>> 0;
if ($298) {
_abort();
// unreachable;
}
HEAP32[$295 >> 2] = $$0;
$299 = ($$0 + 24) | 0;
HEAP32[$299 >> 2] = $T$048;
$300 = ($$0 + 12) | 0;
HEAP32[$300 >> 2] = $$0;
$301 = ($$0 + 8) | 0;
HEAP32[$301 >> 2] = $$0;
STACKTOP = sp;
return;
}
} while (0);
$302 = ($T$0$lcssa + 8) | 0;
$303 = HEAP32[$302 >> 2] | 0;
$304 = HEAP32[((133240 + 16) | 0) >> 2] | 0;
$305 = $T$0$lcssa >>> 0 < $304 >>> 0;
if ($305) {
_abort();
// unreachable;
}
$306 = $303 >>> 0 < $304 >>> 0;
if ($306) {
_abort();
// unreachable;
}
$307 = ($303 + 12) | 0;
HEAP32[$307 >> 2] = $$0;
HEAP32[$302 >> 2] = $$0;
$308 = ($$0 + 8) | 0;
HEAP32[$308 >> 2] = $303;
$309 = ($$0 + 12) | 0;
HEAP32[$309 >> 2] = $T$0$lcssa;
$310 = ($$0 + 24) | 0;
HEAP32[$310 >> 2] = 0;
STACKTOP = sp;
return;
}
function _frexp($x, $e) {
$x = +$x;
$e = $e | 0;
var $$0 = 0.0,
$$01 = 0.0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0.0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0.0,
$7 = 0.0,
$8 = 0,
$9 = 0,
$storemerge = 0,
label = 0,
sp = 0;
sp = STACKTOP;
HEAPF64[tempDoublePtr >> 3] = $x;
$0 = HEAP32[tempDoublePtr >> 2] | 0;
$1 = HEAP32[(tempDoublePtr + 4) >> 2] | 0;
$2 = _bitshift64Lshr($0 | 0, $1 | 0, 52) | 0;
$3 = tempRet0;
$4 = $2 & 2047;
if (($4 | 0) == 0) {
$5 = $x != 0.0;
if ($5) {
$6 = $x * 1.8446744073709552e19;
$7 = +_frexp($6, $e);
$8 = HEAP32[$e >> 2] | 0;
$9 = ($8 + -64) | 0;
$$01 = $7;
$storemerge = $9;
} else {
$$01 = $x;
$storemerge = 0;
}
HEAP32[$e >> 2] = $storemerge;
$$0 = $$01;
STACKTOP = sp;
return +$$0;
} else if (($4 | 0) == 2047) {
$$0 = $x;
STACKTOP = sp;
return +$$0;
} else {
$10 = ($4 + -1022) | 0;
HEAP32[$e >> 2] = $10;
$11 = $1 & -2146435073;
$12 = $11 | 1071644672;
HEAP32[tempDoublePtr >> 2] = $0;
HEAP32[(tempDoublePtr + 4) >> 2] = $12;
$13 = +HEAPF64[tempDoublePtr >> 3];
$$0 = $13;
STACKTOP = sp;
return +$$0;
}
return +0;
}
function _frexpl($x, $e) {
$x = +$x;
$e = $e | 0;
var $0 = 0.0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = +_frexp($x, $e);
STACKTOP = sp;
return +$0;
}
function _wctomb($s, $wc) {
$s = $s | 0;
$wc = $wc | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($s | 0) == (0 | 0);
if ($0) {
$$0 = 0;
} else {
$1 = _wcrtomb($s, $wc, 0) | 0;
$$0 = $1;
}
STACKTOP = sp;
return $$0 | 0;
}
function _wcrtomb($s, $wc, $st) {
$s = $s | 0;
$wc = $wc | 0;
$st = $st | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0;
var $26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0;
var $44 = 0,
$45 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$or$cond = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($s | 0) == (0 | 0);
if ($0) {
$$0 = 1;
STACKTOP = sp;
return $$0 | 0;
}
$1 = $wc >>> 0 < 128;
if ($1) {
$2 = $wc & 255;
HEAP8[$s >> 0] = $2;
$$0 = 1;
STACKTOP = sp;
return $$0 | 0;
}
$3 = $wc >>> 0 < 2048;
if ($3) {
$4 = $wc >>> 6;
$5 = $4 | 192;
$6 = $5 & 255;
$7 = ($s + 1) | 0;
HEAP8[$s >> 0] = $6;
$8 = $wc & 63;
$9 = $8 | 128;
$10 = $9 & 255;
HEAP8[$7 >> 0] = $10;
$$0 = 2;
STACKTOP = sp;
return $$0 | 0;
}
$11 = $wc >>> 0 < 55296;
$12 = ($wc + -57344) | 0;
$13 = $12 >>> 0 < 8192;
$or$cond = $11 | $13;
if ($or$cond) {
$14 = $wc >>> 12;
$15 = $14 | 224;
$16 = $15 & 255;
$17 = ($s + 1) | 0;
HEAP8[$s >> 0] = $16;
$18 = $wc >>> 6;
$19 = $18 & 63;
$20 = $19 | 128;
$21 = $20 & 255;
$22 = ($s + 2) | 0;
HEAP8[$17 >> 0] = $21;
$23 = $wc & 63;
$24 = $23 | 128;
$25 = $24 & 255;
HEAP8[$22 >> 0] = $25;
$$0 = 3;
STACKTOP = sp;
return $$0 | 0;
}
$26 = ($wc + -65536) | 0;
$27 = $26 >>> 0 < 1048576;
if ($27) {
$28 = $wc >>> 18;
$29 = $28 | 240;
$30 = $29 & 255;
$31 = ($s + 1) | 0;
HEAP8[$s >> 0] = $30;
$32 = $wc >>> 12;
$33 = $32 & 63;
$34 = $33 | 128;
$35 = $34 & 255;
$36 = ($s + 2) | 0;
HEAP8[$31 >> 0] = $35;
$37 = $wc >>> 6;
$38 = $37 & 63;
$39 = $38 | 128;
$40 = $39 & 255;
$41 = ($s + 3) | 0;
HEAP8[$36 >> 0] = $40;
$42 = $wc & 63;
$43 = $42 | 128;
$44 = $43 & 255;
HEAP8[$41 >> 0] = $44;
$$0 = 4;
STACKTOP = sp;
return $$0 | 0;
} else {
$45 = ___errno_location() | 0;
HEAP32[$45 >> 2] = 84;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
return 0 | 0;
}
function ___towrite($f) {
$f = $f | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0;
var $9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($f + 74) | 0;
$1 = HEAP8[$0 >> 0] | 0;
$2 = ($1 << 24) >> 24;
$3 = ($2 + 255) | 0;
$4 = $3 | $2;
$5 = $4 & 255;
HEAP8[$0 >> 0] = $5;
$6 = HEAP32[$f >> 2] | 0;
$7 = $6 & 8;
$8 = ($7 | 0) == 0;
if ($8) {
$10 = ($f + 8) | 0;
HEAP32[$10 >> 2] = 0;
$11 = ($f + 4) | 0;
HEAP32[$11 >> 2] = 0;
$12 = ($f + 44) | 0;
$13 = HEAP32[$12 >> 2] | 0;
$14 = ($f + 28) | 0;
HEAP32[$14 >> 2] = $13;
$15 = ($f + 20) | 0;
HEAP32[$15 >> 2] = $13;
$16 = ($f + 48) | 0;
$17 = HEAP32[$16 >> 2] | 0;
$18 = ($13 + $17) | 0;
$19 = ($f + 16) | 0;
HEAP32[$19 >> 2] = $18;
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
} else {
$9 = $6 | 32;
HEAP32[$f >> 2] = $9;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
return 0 | 0;
}
function ___fwritex($s, $l, $f) {
$s = $s | 0;
$l = $l | 0;
$f = $f | 0;
var $$0 = 0,
$$01 = 0,
$$02 = 0,
$$pre = 0,
$$pre6 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0;
var $22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$i$0 = 0,
$i$1 = 0;
var label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($f + 16) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($1 | 0) == (0 | 0);
do {
if ($2) {
$3 = ___towrite($f) | 0;
$4 = ($3 | 0) == 0;
if ($4) {
$$pre6 = HEAP32[$0 >> 2] | 0;
$7 = $$pre6;
break;
} else {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
} else {
$7 = $1;
}
} while (0);
$5 = ($f + 20) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$8 = $7;
$9 = $6;
$10 = ($8 - $9) | 0;
$11 = $10 >>> 0 < $l >>> 0;
if ($11) {
$12 = ($f + 36) | 0;
$13 = HEAP32[$12 >> 2] | 0;
$14 = FUNCTION_TABLE_iiii[$13 & 1]($f, $s, $l) | 0;
$$0 = $14;
STACKTOP = sp;
return $$0 | 0;
}
$15 = ($f + 75) | 0;
$16 = HEAP8[$15 >> 0] | 0;
$17 = ($16 << 24) >> 24 > -1;
L11: do {
if ($17) {
$i$0 = $l;
while (1) {
$18 = ($i$0 | 0) == 0;
if ($18) {
$$01 = $l;
$$02 = $s;
$29 = $6;
$i$1 = 0;
break L11;
}
$19 = ($i$0 + -1) | 0;
$20 = ($s + $19) | 0;
$21 = HEAP8[$20 >> 0] | 0;
$22 = ($21 << 24) >> 24 == 10;
if ($22) {
break;
} else {
$i$0 = $19;
}
}
$23 = ($f + 36) | 0;
$24 = HEAP32[$23 >> 2] | 0;
$25 = FUNCTION_TABLE_iiii[$24 & 1]($f, $s, $i$0) | 0;
$26 = $25 >>> 0 < $i$0 >>> 0;
if ($26) {
$$0 = $i$0;
STACKTOP = sp;
return $$0 | 0;
} else {
$27 = ($s + $i$0) | 0;
$28 = ($l - $i$0) | 0;
$$pre = HEAP32[$5 >> 2] | 0;
$$01 = $28;
$$02 = $27;
$29 = $$pre;
$i$1 = $i$0;
break;
}
} else {
$$01 = $l;
$$02 = $s;
$29 = $6;
$i$1 = 0;
}
} while (0);
_memcpy($29 | 0, $$02 | 0, $$01 | 0) | 0;
$30 = HEAP32[$5 >> 2] | 0;
$31 = ($30 + $$01) | 0;
HEAP32[$5 >> 2] = $31;
$32 = ($i$1 + $$01) | 0;
$$0 = $32;
STACKTOP = sp;
return $$0 | 0;
}
function _snprintf($s, $n, $fmt, $varargs) {
$s = $s | 0;
$n = $n | 0;
$fmt = $fmt | 0;
$varargs = $varargs | 0;
var $0 = 0,
$ap = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$ap = sp;
HEAP32[$ap >> 2] = $varargs;
$0 = _vsnprintf($s, $n, $fmt, $ap) | 0;
STACKTOP = sp;
return $0 | 0;
}
function _sprintf($s, $fmt, $varargs) {
$s = $s | 0;
$fmt = $fmt | 0;
$varargs = $varargs | 0;
var $0 = 0,
$ap = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 16) | 0;
$ap = sp;
HEAP32[$ap >> 2] = $varargs;
$0 = _vsprintf($s, $fmt, $ap) | 0;
STACKTOP = sp;
return $0 | 0;
}
function _MUSL_vfprintf($f, $fmt, $ap) {
$f = $f | 0;
$fmt = $fmt | 0;
$ap = $ap | 0;
var $$ = 0,
$$0 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0;
var $ap2 = 0,
$internal_buf = 0,
$nl_arg = 0,
$nl_type = 0,
$ret$1 = 0,
$vacopy_currentptr = 0,
dest = 0,
label = 0,
sp = 0,
stop = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 224) | 0;
$ap2 = (sp + 120) | 0;
$nl_type = (sp + 80) | 0;
$nl_arg = sp;
$internal_buf = (sp + 136) | 0;
dest = ($nl_type + 0) | 0;
stop = (dest + 40) | 0;
do {
HEAP32[dest >> 2] = 0 | 0;
dest = (dest + 4) | 0;
} while ((dest | 0) < (stop | 0));
$vacopy_currentptr = HEAP32[$ap >> 2] | 0;
HEAP32[$ap2 >> 2] = $vacopy_currentptr;
$0 = _printf_core(0, $fmt, $ap2, $nl_arg, $nl_type) | 0;
$1 = ($0 | 0) < 0;
if ($1) {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
$2 = ($f + 48) | 0;
$3 = HEAP32[$2 >> 2] | 0;
$4 = ($3 | 0) == 0;
if ($4) {
$6 = ($f + 44) | 0;
$7 = HEAP32[$6 >> 2] | 0;
HEAP32[$6 >> 2] = $internal_buf;
$8 = ($f + 28) | 0;
HEAP32[$8 >> 2] = $internal_buf;
$9 = ($f + 20) | 0;
HEAP32[$9 >> 2] = $internal_buf;
HEAP32[$2 >> 2] = 80;
$10 = ($internal_buf + 80) | 0;
$11 = ($f + 16) | 0;
HEAP32[$11 >> 2] = $10;
$12 = _printf_core($f, $fmt, $ap2, $nl_arg, $nl_type) | 0;
$13 = ($7 | 0) == (0 | 0);
if ($13) {
$ret$1 = $12;
} else {
$14 = ($f + 36) | 0;
$15 = HEAP32[$14 >> 2] | 0;
FUNCTION_TABLE_iiii[$15 & 1]($f, 0, 0) | 0;
$16 = HEAP32[$9 >> 2] | 0;
$17 = ($16 | 0) == (0 | 0);
$$ = $17 ? -1 : $12;
HEAP32[$6 >> 2] = $7;
HEAP32[$2 >> 2] = 0;
HEAP32[$11 >> 2] = 0;
HEAP32[$8 >> 2] = 0;
HEAP32[$9 >> 2] = 0;
$ret$1 = $$;
}
} else {
$5 = _printf_core($f, $fmt, $ap2, $nl_arg, $nl_type) | 0;
$ret$1 = $5;
}
$$0 = $ret$1;
STACKTOP = sp;
return $$0 | 0;
}
function _printf_core($f, $fmt, $ap, $nl_arg, $nl_type) {
$f = $f | 0;
$fmt = $fmt | 0;
$ap = $ap | 0;
$nl_arg = $nl_arg | 0;
$nl_type = $nl_type | 0;
var $$ = 0,
$$$5$i = 0,
$$$i = 0,
$$$p$i = 0,
$$0 = 0,
$$0$lcssa$i = 0,
$$0$lcssa$i$i = 0,
$$0$lcssa$i103$i = 0,
$$0$lcssa$i127$i = 0,
$$0$lcssa$i142$i = 0,
$$0$lcssa$i37 = 0,
$$0$lcssa$i38$i = 0,
$$0$lcssa$i43 = 0,
$$0$lcssa$i45 = 0,
$$0$lcssa$i45$i = 0,
$$0$lcssa$i48$i = 0,
$$0$lcssa$i52 = 0,
$$0$lcssa$i55$i = 0,
$$0$lcssa$i59 = 0,
$$0$lcssa$i62$i = 0;
var $$0$lcssa$i66 = 0,
$$0$lcssa$i68$i = 0,
$$0$lcssa$i75$i = 0,
$$0$lcssa$i76 = 0,
$$0$lcssa$i84$i = 0,
$$0$lcssa$i96$i = 0,
$$01$i = 0,
$$01$i$i = 0,
$$01$i101$i = 0,
$$01$i125$i = 0,
$$01$i140$i = 0,
$$01$i35 = 0,
$$01$i36$i = 0,
$$01$i43$i = 0,
$$01$i50 = 0,
$$01$i53$i = 0,
$$01$i57 = 0,
$$01$i60$i = 0,
$$01$i64 = 0,
$$01$i66$i = 0;
var $$01$i73$i = 0,
$$01$i74 = 0,
$$01$i94$i = 0,
$$01$lcssa$off0$i = 0,
$$01$lcssa$off0$i$i = 0,
$$01$lcssa$off0$i85$i = 0,
$$012$i = 0,
$$013$i = 0,
$$03$i40 = 0,
$$05$i = 0,
$$05$i$i = 0,
$$05$i79$i = 0,
$$07$i = 0.0,
$$1$i = 0.0,
$$1$lcssa$i$i = 0,
$$1$lcssa$i112$i = 0,
$$114$i = 0,
$$12$i = 0,
$$12$i$i = 0,
$$12$i110$i = 0;
var $$12$i119$i = 0,
$$12$i134$i = 0,
$$12$i87$i = 0,
$$13 = 0,
$$14 = 0,
$$15 = 0,
$$17 = 0,
$$2$i = 0.0,
$$2$us$i = 0.0,
$$2$us$us$i = 0.0,
$$2$us159$i = 0.0,
$$20$i = 0,
$$20$us$i = 0,
$$21$i = 0,
$$210$$23$i = 0,
$$210$$25$i = 0,
$$210$i = 0,
$$22$i = 0.0,
$$23$i = 0,
$$25$i = 0;
var $$3$i = 0.0,
$$31$i = 0,
$$311$i = 0,
$$4$i = 0.0,
$$412$lcssa$i = 0,
$$412175$i = 0,
$$5193$i = 0,
$$a$3$i = 0,
$$a$3$us$i = 0,
$$a$3$us322$i = 0,
$$a$3$us323$i = 0,
$$a$3324$i = 0,
$$a$3325$i = 0,
$$fl$4 = 0,
$$lcssa300$i = 0,
$$lcssa92 = 0,
$$mask$i = 0,
$$mask$i30 = 0,
$$mask1$i = 0,
$$mask1$i29 = 0;
var $$neg151$i = 0,
$$neg152$i = 0,
$$not$i = 0,
$$p$5 = 0,
$$p$i = 0,
$$pn$i = 0,
$$pr$i = 0,
$$pr146$i = 0,
$$pre = 0,
$$pre$i = 0,
$$pre290 = 0,
$$pre292 = 0,
$$pre319$i = 0,
$$sum$i = 0,
$$sum15$i = 0,
$$sum16$i = 0,
$$z$3$i = 0,
$$z$4$us$i = 0,
$0 = 0,
$1 = 0;
var $10 = 0,
$100 = 0,
$1000 = 0,
$1001 = 0,
$1002 = 0,
$1003 = 0,
$1004 = 0,
$1005 = 0,
$1006 = 0,
$1007 = 0,
$1008 = 0,
$1009 = 0,
$101 = 0,
$1010 = 0,
$1011 = 0,
$1012 = 0,
$1013 = 0,
$1014 = 0,
$1015 = 0,
$1016 = 0;
var $1017 = 0,
$1018 = 0,
$1019 = 0,
$102 = 0,
$1020 = 0,
$1021 = 0,
$1022 = 0,
$1023 = 0,
$1024 = 0,
$1025 = 0,
$1026 = 0,
$1027 = 0,
$1028 = 0,
$1029 = 0,
$103 = 0,
$1030 = 0,
$1031 = 0,
$1032 = 0,
$1033 = 0,
$1034 = 0;
var $1035 = 0,
$1036 = 0.0,
$1037 = 0.0,
$1038 = 0,
$1039 = 0,
$104 = 0,
$1040 = 0,
$1041 = 0,
$1042 = 0,
$1043 = 0,
$1044 = 0,
$1045 = 0,
$1045$phi = 0,
$1046 = 0,
$1046$phi = 0,
$1047 = 0,
$1048 = 0,
$1049 = 0,
$105 = 0,
$1050 = 0;
var $1051 = 0,
$1052 = 0,
$1053 = 0,
$1054 = 0,
$1055 = 0,
$1056 = 0,
$1057 = 0,
$1058 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0;
var $117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0;
var $135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0,
$152 = 0;
var $153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0,
$170 = 0;
var $171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0,
$189 = 0;
var $19 = 0,
$190 = 0.0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0.0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0,
$206 = 0;
var $207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0,
$224 = 0;
var $225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0,
$242 = 0;
var $243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0,
$260 = 0;
var $261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0,
$279 = 0;
var $28 = 0,
$280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0,
$297 = 0;
var $298 = 0,
$299 = 0,
$3 = 0,
$30 = 0,
$300 = 0,
$301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0,
$306 = 0,
$307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0,
$313 = 0,
$314 = 0;
var $315 = 0,
$316 = 0,
$317 = 0,
$318 = 0,
$319 = 0,
$32 = 0,
$320 = 0,
$321 = 0,
$322 = 0,
$323 = 0,
$324 = 0,
$325 = 0,
$326 = 0,
$327 = 0,
$328 = 0,
$329 = 0,
$33 = 0,
$330 = 0,
$331 = 0,
$332 = 0;
var $333 = 0,
$334 = 0,
$335 = 0,
$336 = 0,
$337 = 0,
$338 = 0,
$339 = 0,
$34 = 0,
$340 = 0,
$341 = 0,
$342 = 0,
$343 = 0,
$344 = 0,
$345 = 0,
$346 = 0,
$347 = 0,
$348 = 0,
$349 = 0,
$35 = 0,
$350 = 0;
var $351 = 0,
$352 = 0,
$353 = 0,
$354 = 0,
$355 = 0,
$356 = 0,
$357 = 0,
$358 = 0,
$359 = 0,
$36 = 0,
$360 = 0,
$361 = 0,
$362 = 0,
$363 = 0,
$364 = 0,
$365 = 0,
$366 = 0,
$367 = 0,
$368 = 0,
$369 = 0.0;
var $37 = 0,
$370 = 0,
$371 = 0.0,
$372 = 0,
$373 = 0,
$374 = 0,
$375 = 0,
$376 = 0,
$377 = 0,
$378 = 0,
$379 = 0,
$38 = 0,
$380 = 0,
$381 = 0,
$382 = 0,
$383 = 0,
$384 = 0,
$385 = 0,
$386 = 0,
$387 = 0;
var $388 = 0,
$389 = 0,
$39 = 0,
$390 = 0,
$391 = 0,
$392 = 0,
$393 = 0,
$394 = 0,
$395 = 0,
$396 = 0,
$397 = 0,
$398 = 0,
$399 = 0,
$4 = 0,
$40 = 0,
$400 = 0,
$401 = 0,
$402 = 0,
$403 = 0,
$404 = 0;
var $405 = 0,
$406 = 0,
$407 = 0.0,
$408 = 0.0,
$409 = 0,
$41 = 0,
$410 = 0,
$411 = 0,
$412 = 0,
$413 = 0,
$414 = 0,
$415 = 0,
$416 = 0,
$417 = 0,
$418 = 0,
$419 = 0,
$42 = 0,
$420 = 0,
$421 = 0,
$422 = 0.0;
var $423 = 0,
$424 = 0,
$425 = 0,
$426 = 0.0,
$427 = 0.0,
$428 = 0.0,
$429 = 0.0,
$43 = 0,
$430 = 0.0,
$431 = 0.0,
$432 = 0,
$433 = 0,
$434 = 0,
$435 = 0,
$436 = 0,
$437 = 0,
$438 = 0,
$439 = 0,
$44 = 0,
$440 = 0;
var $441 = 0,
$442 = 0,
$443 = 0,
$444 = 0,
$445 = 0,
$446 = 0,
$447 = 0,
$448 = 0,
$449 = 0,
$45 = 0,
$450 = 0,
$451 = 0,
$452 = 0,
$453 = 0,
$454 = 0,
$455 = 0,
$456 = 0,
$457 = 0,
$458 = 0,
$459 = 0;
var $46 = 0,
$460 = 0,
$461 = 0,
$462 = 0,
$463 = 0,
$464 = 0,
$465 = 0,
$466 = 0,
$467 = 0,
$468 = 0,
$469 = 0,
$47 = 0,
$470 = 0,
$471 = 0,
$472 = 0,
$473 = 0,
$474 = 0,
$475 = 0,
$476 = 0,
$477 = 0;
var $478 = 0,
$479 = 0,
$48 = 0,
$480 = 0.0,
$481 = 0.0,
$482 = 0.0,
$483 = 0,
$484 = 0,
$485 = 0,
$486 = 0,
$487 = 0,
$488 = 0,
$489 = 0,
$49 = 0,
$490 = 0,
$491 = 0,
$492 = 0,
$493 = 0,
$494 = 0,
$495 = 0.0;
var $496 = 0.0,
$497 = 0.0,
$498 = 0,
$499 = 0,
$5 = 0,
$50 = 0,
$500 = 0,
$501 = 0,
$502 = 0,
$503 = 0,
$504 = 0,
$505 = 0,
$506 = 0,
$507 = 0,
$508 = 0,
$509 = 0,
$51 = 0,
$510 = 0.0,
$511 = 0.0,
$512 = 0.0;
var $513 = 0,
$514 = 0,
$515 = 0,
$516 = 0,
$517 = 0,
$518 = 0,
$519 = 0,
$52 = 0,
$520 = 0,
$521 = 0,
$522 = 0,
$523 = 0,
$524 = 0,
$525 = 0.0,
$526 = 0.0,
$527 = 0.0,
$528 = 0,
$529 = 0,
$53 = 0,
$530 = 0;
var $531 = 0,
$532 = 0,
$533 = 0,
$534 = 0,
$535 = 0,
$536 = 0,
$537 = 0,
$538 = 0,
$539 = 0,
$54 = 0,
$540 = 0,
$541 = 0,
$542 = 0,
$543 = 0,
$544 = 0,
$545 = 0,
$546 = 0,
$547 = 0,
$548 = 0,
$549 = 0;
var $55 = 0,
$550 = 0,
$551 = 0,
$552 = 0,
$553 = 0,
$554 = 0,
$555 = 0,
$556 = 0,
$557 = 0,
$558 = 0,
$559 = 0,
$56 = 0,
$560 = 0,
$561 = 0,
$562 = 0,
$563 = 0,
$564 = 0,
$565 = 0,
$566 = 0,
$567 = 0;
var $568 = 0,
$569 = 0,
$57 = 0,
$570 = 0,
$571 = 0,
$572 = 0,
$573 = 0,
$574 = 0,
$575 = 0,
$576 = 0,
$577 = 0,
$578 = 0.0,
$579 = 0,
$58 = 0,
$580 = 0,
$581 = 0,
$582 = 0,
$583 = 0,
$584 = 0,
$585 = 0.0;
var $586 = 0.0,
$587 = 0.0,
$588 = 0,
$589 = 0,
$59 = 0,
$590 = 0,
$591 = 0,
$592 = 0,
$593 = 0,
$594 = 0,
$595 = 0,
$596 = 0,
$597 = 0,
$598 = 0,
$599 = 0,
$6 = 0,
$60 = 0,
$600 = 0,
$601 = 0,
$602 = 0;
var $603 = 0,
$604 = 0,
$605 = 0,
$606 = 0,
$607 = 0,
$608 = 0,
$609 = 0,
$61 = 0,
$610 = 0,
$611 = 0,
$612 = 0,
$613 = 0,
$614 = 0,
$615 = 0,
$616 = 0,
$617 = 0,
$618 = 0,
$619 = 0,
$62 = 0,
$620 = 0;
var $621 = 0,
$622 = 0,
$623 = 0,
$624 = 0,
$625 = 0,
$626 = 0,
$627 = 0,
$628 = 0,
$629 = 0,
$63 = 0,
$630 = 0,
$631 = 0,
$632 = 0,
$633 = 0,
$634 = 0,
$635 = 0,
$636 = 0,
$637 = 0,
$638 = 0,
$639 = 0;
var $64 = 0,
$640 = 0,
$641 = 0,
$642 = 0,
$643 = 0,
$644 = 0,
$645 = 0,
$646 = 0,
$647 = 0,
$648 = 0,
$649 = 0,
$65 = 0,
$650 = 0,
$651 = 0,
$652 = 0,
$653 = 0,
$654 = 0,
$655 = 0,
$656 = 0,
$657 = 0;
var $658 = 0,
$659 = 0,
$66 = 0,
$660 = 0,
$661 = 0,
$662 = 0,
$663 = 0,
$664 = 0,
$665 = 0,
$666 = 0,
$667 = 0,
$668 = 0,
$669 = 0,
$67 = 0,
$670 = 0,
$671 = 0,
$672 = 0,
$673 = 0,
$674 = 0,
$675 = 0;
var $676 = 0,
$677 = 0,
$678 = 0,
$679 = 0,
$68 = 0,
$680 = 0,
$681 = 0,
$682 = 0,
$683 = 0,
$684 = 0,
$685 = 0,
$686 = 0,
$687 = 0,
$688 = 0,
$689 = 0,
$69 = 0,
$690 = 0,
$691 = 0,
$692 = 0,
$693 = 0;
var $694 = 0,
$695 = 0,
$696 = 0,
$697 = 0,
$698 = 0,
$699 = 0,
$7 = 0,
$70 = 0,
$700 = 0,
$701 = 0,
$702 = 0,
$703 = 0,
$704 = 0,
$705 = 0,
$706 = 0,
$707 = 0,
$708 = 0,
$709 = 0,
$71 = 0,
$710 = 0;
var $711 = 0,
$712 = 0,
$713 = 0,
$714 = 0,
$715 = 0,
$716 = 0,
$717 = 0,
$718 = 0,
$719 = 0,
$72 = 0,
$720 = 0,
$721 = 0,
$722 = 0,
$723 = 0,
$724 = 0,
$725 = 0.0,
$726 = 0.0,
$727 = 0,
$728 = 0.0,
$729 = 0;
var $73 = 0,
$730 = 0,
$731 = 0,
$732 = 0,
$733 = 0,
$734 = 0,
$735 = 0,
$736 = 0,
$737 = 0,
$738 = 0,
$739 = 0,
$74 = 0,
$740 = 0,
$741 = 0,
$742 = 0,
$743 = 0,
$744 = 0,
$745 = 0,
$746 = 0,
$747 = 0;
var $748 = 0,
$749 = 0,
$75 = 0,
$750 = 0,
$751 = 0,
$752 = 0,
$753 = 0,
$754 = 0,
$755 = 0,
$756 = 0,
$757 = 0,
$758 = 0,
$759 = 0,
$76 = 0,
$760 = 0,
$761 = 0,
$762 = 0,
$763 = 0,
$764 = 0,
$765 = 0;
var $766 = 0,
$767 = 0,
$768 = 0,
$769 = 0,
$77 = 0,
$770 = 0,
$771 = 0,
$772 = 0,
$773 = 0,
$774 = 0,
$775 = 0,
$776 = 0,
$777 = 0,
$778 = 0,
$779 = 0,
$78 = 0,
$780 = 0,
$781 = 0,
$782 = 0,
$783 = 0;
var $784 = 0,
$785 = 0,
$786 = 0,
$787 = 0,
$788 = 0,
$789 = 0,
$79 = 0,
$790 = 0,
$791 = 0,
$792 = 0,
$793 = 0,
$794 = 0,
$795 = 0,
$796 = 0,
$797 = 0,
$798 = 0,
$799 = 0,
$8 = 0,
$80 = 0,
$800 = 0;
var $801 = 0,
$802 = 0,
$803 = 0,
$804 = 0,
$805 = 0,
$806 = 0,
$807 = 0,
$808 = 0,
$809 = 0,
$81 = 0,
$810 = 0,
$811 = 0,
$812 = 0,
$813 = 0,
$814 = 0,
$815 = 0,
$816 = 0,
$817 = 0,
$818 = 0,
$819 = 0;
var $82 = 0,
$820 = 0,
$821 = 0,
$822 = 0,
$823 = 0,
$824 = 0,
$825 = 0,
$826 = 0,
$827 = 0,
$828 = 0,
$829 = 0,
$83 = 0,
$830 = 0,
$831 = 0,
$832 = 0,
$833 = 0,
$834 = 0,
$835 = 0,
$836 = 0,
$837 = 0;
var $838 = 0,
$839 = 0,
$84 = 0,
$840 = 0,
$841 = 0,
$842 = 0,
$843 = 0,
$844 = 0,
$845 = 0,
$846 = 0,
$847 = 0,
$848 = 0,
$849 = 0,
$85 = 0,
$850 = 0,
$851 = 0,
$852 = 0,
$853 = 0,
$854 = 0,
$855 = 0;
var $856 = 0,
$857 = 0,
$858 = 0,
$859 = 0,
$86 = 0,
$860 = 0,
$861 = 0,
$862 = 0,
$863 = 0,
$864 = 0,
$865 = 0,
$866 = 0,
$867 = 0,
$868 = 0,
$869 = 0,
$87 = 0,
$870 = 0,
$871 = 0,
$872 = 0,
$873 = 0;
var $874 = 0,
$875 = 0,
$876 = 0,
$877 = 0,
$878 = 0,
$879 = 0,
$88 = 0,
$880 = 0,
$881 = 0,
$882 = 0,
$883 = 0,
$884 = 0,
$885 = 0,
$886 = 0,
$887 = 0,
$888 = 0,
$889 = 0,
$89 = 0,
$890 = 0,
$891 = 0;
var $892 = 0,
$893 = 0,
$894 = 0,
$895 = 0,
$896 = 0,
$897 = 0,
$898 = 0,
$899 = 0,
$9 = 0,
$90 = 0,
$900 = 0,
$901 = 0,
$902 = 0,
$903 = 0,
$904 = 0,
$905 = 0,
$906 = 0,
$907 = 0,
$908 = 0,
$909 = 0;
var $91 = 0,
$910 = 0,
$911 = 0,
$912 = 0,
$913 = 0,
$914 = 0,
$915 = 0,
$916 = 0,
$917 = 0,
$918 = 0,
$919 = 0,
$92 = 0,
$920 = 0,
$921 = 0,
$922 = 0,
$923 = 0,
$924 = 0,
$925 = 0,
$926 = 0,
$927 = 0;
var $928 = 0,
$929 = 0,
$93 = 0,
$930 = 0,
$931 = 0,
$932 = 0,
$933 = 0,
$934 = 0,
$935 = 0,
$936 = 0,
$937 = 0,
$938 = 0,
$939 = 0,
$94 = 0,
$940 = 0,
$941 = 0,
$942 = 0,
$943 = 0,
$944 = 0,
$945 = 0;
var $946 = 0,
$947 = 0,
$948 = 0,
$949 = 0,
$95 = 0,
$950 = 0,
$951 = 0,
$952 = 0,
$953 = 0,
$954 = 0,
$955 = 0,
$956 = 0,
$957 = 0,
$958 = 0,
$959 = 0,
$96 = 0,
$960 = 0,
$961 = 0,
$962 = 0,
$963 = 0;
var $964 = 0,
$965 = 0,
$966 = 0,
$967 = 0,
$968 = 0,
$969 = 0,
$97 = 0,
$970 = 0,
$971 = 0,
$972 = 0,
$973 = 0,
$974 = 0,
$975 = 0,
$976 = 0,
$977 = 0,
$978 = 0,
$979 = 0,
$98 = 0,
$980 = 0,
$981 = 0;
var $982 = 0,
$983 = 0,
$984 = 0,
$985 = 0,
$986 = 0,
$987 = 0,
$988 = 0,
$989 = 0,
$99 = 0,
$990 = 0,
$991 = 0,
$992 = 0,
$993 = 0,
$994 = 0,
$995 = 0,
$996 = 0,
$997 = 0,
$998 = 0,
$999 = 0,
$a$0 = 0;
var $a$1 = 0,
$a$1$lcssa$i = 0,
$a$1263$i = 0,
$a$2 = 0,
$a$2$ph$i = 0,
$a$3$lcssa$i = 0,
$a$3249$i = 0,
$a$3249$us$i = 0,
$a$5$lcssa$i = 0,
$a$5223$i = 0,
$a$6$i = 0,
$a$7$i = 0,
$a$8$ph$i = 0,
$arglist_current = 0,
$arglist_current11 = 0,
$arglist_current14 = 0,
$arglist_current17 = 0,
$arglist_current2 = 0,
$arglist_current20 = 0,
$arglist_current23 = 0;
var $arglist_current26 = 0,
$arglist_current29 = 0,
$arglist_current32 = 0,
$arglist_current35 = 0,
$arglist_current38 = 0,
$arglist_current41 = 0,
$arglist_current44 = 0,
$arglist_current47 = 0,
$arglist_current5 = 0,
$arglist_current50 = 0,
$arglist_current53 = 0,
$arglist_current56 = 0,
$arglist_current59 = 0,
$arglist_current62 = 0,
$arglist_current8 = 0,
$arglist_next = 0,
$arglist_next12 = 0,
$arglist_next15 = 0,
$arglist_next18 = 0,
$arglist_next21 = 0;
var $arglist_next24 = 0,
$arglist_next27 = 0,
$arglist_next3 = 0,
$arglist_next30 = 0,
$arglist_next33 = 0,
$arglist_next36 = 0,
$arglist_next39 = 0,
$arglist_next42 = 0,
$arglist_next45 = 0,
$arglist_next48 = 0,
$arglist_next51 = 0,
$arglist_next54 = 0,
$arglist_next57 = 0,
$arglist_next6 = 0,
$arglist_next60 = 0,
$arglist_next63 = 0,
$arglist_next9 = 0,
$argpos$0 = 0,
$big$i = 0,
$brmerge$i = 0;
var $buf = 0,
$buf$i = 0,
$carry$0255$i = 0,
$carry3$0243$i = 0,
$carry3$0243$us$i = 0,
$cnt$0 = 0,
$cnt$1 = 0,
$d$0$i = 0,
$d$0254$i = 0,
$d$0256$i = 0,
$d$1242$i = 0,
$d$1242$us$i = 0,
$d$2$lcssa$i = 0,
$d$2222$i = 0,
$d$3$i = 0,
$d$4183$i = 0,
$d$5174$i = 0,
$d$6192$i = 0,
$e$0238$i = 0,
$e$1$i = 0;
var $e$2218$i = 0,
$e$3$i = 0,
$e$4$ph$i = 0,
$e2$i = 0,
$ebuf0$i = 0,
$estr$0$i = 0,
$estr$1$lcssa$i = 0,
$estr$1$ph$i = 0,
$estr$1200$i = 0,
$estr$2$i = 0,
$exitcond$i = 0,
$fl$0100 = 0,
$fl$0104 = 0,
$fl$1 = 0,
$fl$1$ = 0,
$fl$3 = 0,
$fl$4 = 0,
$fl$6 = 0,
$i$0$lcssa = 0,
$i$0166 = 0;
var $i$0168 = 0,
$i$0237$i = 0,
$i$03$i = 0,
$i$03$i22 = 0,
$i$1$lcssa$i = 0,
$i$1174 = 0,
$i$1230$i = 0,
$i$2217$i = 0,
$i$289 = 0,
$i$3209$i = 0,
$i$388 = 0,
$isdigit = 0,
$isdigit$i = 0,
$isdigit$i24 = 0,
$isdigit11 = 0,
$isdigit2$i = 0,
$isdigit2$i21 = 0,
$isdigit9 = 0,
$isdigittmp = 0,
$isdigittmp$i = 0;
var $isdigittmp$i23 = 0,
$isdigittmp1$i = 0,
$isdigittmp1$i20 = 0,
$isdigittmp10 = 0,
$isdigittmp8 = 0,
$j$0$i = 0,
$j$0229$i = 0,
$j$0231$i = 0,
$j$1210$i = 0,
$j$2$i = 0,
$l$0 = 0,
$l$0$i = 0,
$l$1$i = 0,
$l$1$lcssa = 0,
$l$1167 = 0,
$l10n$0 = 0,
$l10n$0$phi = 0,
$l10n$1 = 0,
$l10n$2 = 0,
$l10n$3 = 0;
var $mb = 0,
$or$cond = 0,
$or$cond$i = 0,
$or$cond$i$i = 0,
$or$cond$i100$i = 0,
$or$cond$i35$i = 0,
$or$cond$i42$i = 0,
$or$cond$i49 = 0,
$or$cond$i52$i = 0,
$or$cond$i56 = 0,
$or$cond$i59$i = 0,
$or$cond$i63 = 0,
$or$cond$i71 = 0,
$or$cond$i72$i = 0,
$or$cond$i73 = 0,
$or$cond$i93$i = 0,
$or$cond28$i = 0,
$or$cond28173$i = 0,
$or$cond29$i = 0,
$or$cond4$i = 0;
var $p$0 = 0,
$p$1 = 0,
$p$2 = 0,
$p$2$ = 0,
$p$4296 = 0,
$p$5 = 0,
$pad$i = 0,
$pl$0 = 0,
$pl$0$i = 0,
$pl$1 = 0,
$pl$1$i = 0,
$pl$2 = 0,
$prefix$0 = 0,
$prefix$0$$i = 0,
$prefix$0$i = 0,
$prefix$1 = 0,
$prefix$2 = 0,
$r$0$a$8$i = 0,
$re$0$i = 0,
$re$1165$i = 0;
var $round$0164$i = 0.0,
$round6$1$i = 0.0,
$s$0$i = 0,
$s$0$us$i = 0,
$s$0$us$us$i = 0,
$s$0$us158$i = 0,
$s$1$i = 0,
$s$1$lcssa$i = 0,
$s$1$us$i = 0,
$s$1$us$us$i = 0,
$s$1$us160$i = 0,
$s1$0$i = 0,
$s7$0180$i = 0,
$s7$1$i = 0,
$s8$0$lcssa$i = 0,
$s8$0169$i = 0,
$s9$0$i = 0,
$s9$1188$i = 0,
$s9$2$i = 0,
$sext = 0;
var $sext84 = 0,
$small$0$i = 0.0,
$small$1$i = 0.0,
$st$0 = 0,
$storemerge = 0,
$storemerge12 = 0,
$storemerge7103 = 0,
$storemerge798 = 0,
$t$0 = 0,
$t$1 = 0,
$w$$i = 0,
$w$0 = 0,
$w$1 = 0,
$w$18$i = 0,
$w$2 = 0,
$w$30$i = 0,
$wc = 0,
$ws$0169 = 0,
$ws$1175 = 0,
$y$03$i = 0;
var $y$03$i$i = 0,
$y$03$i109$i = 0,
$y$03$i118$i = 0,
$y$03$i133$i = 0,
$y$03$i86$i = 0,
$z$0$i = 0,
$z$0$lcssa = 0,
$z$093 = 0,
$z$1$lcssa$i = 0,
$z$1262$i = 0,
$z$2 = 0,
$z$2$i = 0,
$z$3$lcssa$i = 0,
$z$3248$i = 0,
$z$3248$us$i = 0,
$z$4$i = 0,
$z$4$us$i = 0,
$z$5$i = 0,
$z$6$$i = 0,
$z$6$i = 0;
var $z$6$ph$i = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 864) | 0;
$big$i = (sp + 16) | 0;
$e2$i = (sp + 8) | 0;
$buf$i = (sp + 836) | 0;
$0 = $buf$i;
$ebuf0$i = (sp + 824) | 0;
$pad$i = (sp + 568) | 0;
$buf = (sp + 528) | 0;
$wc = sp;
$mb = (sp + 520) | 0;
$1 = ($f | 0) != (0 | 0);
$2 = ($buf + 40) | 0;
$3 = $2;
$4 = ($buf + 39) | 0;
$5 = ($wc + 4) | 0;
$6 = ($ebuf0$i + 12) | 0;
$7 = ($ebuf0$i + 11) | 0;
$8 = $6;
$9 = ($8 - $0) | 0;
$10 = (-2 - $0) | 0;
$11 = ($8 + 2) | 0;
$12 = ($big$i + 288) | 0;
$13 = ($buf$i + 9) | 0;
$14 = $13;
$15 = ($buf$i + 8) | 0;
$1045 = 0;
$1046 = 0;
$22 = $fmt;
$cnt$0 = 0;
$l$0 = 0;
$l10n$0 = 0;
L1: while (1) {
$16 = ($cnt$0 | 0) > -1;
do {
if ($16) {
$17 = (2147483647 - $cnt$0) | 0;
$18 = ($l$0 | 0) > ($17 | 0);
if ($18) {
$19 = ___errno_location() | 0;
HEAP32[$19 >> 2] = 75;
$cnt$1 = -1;
break;
} else {
$20 = ($l$0 + $cnt$0) | 0;
$cnt$1 = $20;
break;
}
} else {
$cnt$1 = $cnt$0;
}
} while (0);
$21 = HEAP8[$22 >> 0] | 0;
$23 = ($21 << 24) >> 24 == 0;
if ($23) {
label = 344;
break;
} else {
$1047 = $21;
$25 = $22;
}
while (1) {
if (($1047 << 24) >> 24 == 37) {
$27 = $25;
$z$093 = $25;
label = 9;
break;
} else if (($1047 << 24) >> 24 == 0) {
$$lcssa92 = $25;
$z$0$lcssa = $25;
break;
}
$24 = ($25 + 1) | 0;
$$pre = HEAP8[$24 >> 0] | 0;
$1047 = $$pre;
$25 = $24;
}
L12: do {
if ((label | 0) == 9) {
while (1) {
label = 0;
$26 = ($27 + 1) | 0;
$28 = HEAP8[$26 >> 0] | 0;
$29 = ($28 << 24) >> 24 == 37;
if (!$29) {
$$lcssa92 = $27;
$z$0$lcssa = $z$093;
break L12;
}
$30 = ($z$093 + 1) | 0;
$31 = ($27 + 2) | 0;
$32 = HEAP8[$31 >> 0] | 0;
$33 = ($32 << 24) >> 24 == 37;
if ($33) {
$27 = $31;
$z$093 = $30;
label = 9;
} else {
$$lcssa92 = $31;
$z$0$lcssa = $30;
break;
}
}
}
} while (0);
$34 = $z$0$lcssa;
$35 = $22;
$36 = ($34 - $35) | 0;
if ($1) {
___fwritex($22, $36, $f) | 0;
}
$37 = ($z$0$lcssa | 0) == ($22 | 0);
if (!$37) {
$l10n$0$phi = $l10n$0;
$1046$phi = $1046;
$1045$phi = $1045;
$22 = $$lcssa92;
$cnt$0 = $cnt$1;
$l$0 = $36;
$l10n$0 = $l10n$0$phi;
$1046 = $1046$phi;
$1045 = $1045$phi;
continue;
}
$38 = ($$lcssa92 + 1) | 0;
$39 = HEAP8[$38 >> 0] | 0;
$40 = ($39 << 24) >> 24;
$isdigittmp = ($40 + -48) | 0;
$isdigit = $isdigittmp >>> 0 < 10;
if ($isdigit) {
$41 = ($$lcssa92 + 2) | 0;
$42 = HEAP8[$41 >> 0] | 0;
$43 = ($42 << 24) >> 24 == 36;
if ($43) {
$44 = ($$lcssa92 + 3) | 0;
$$pre290 = HEAP8[$44 >> 0] | 0;
$46 = $$pre290;
$argpos$0 = $isdigittmp;
$l10n$1 = 1;
$storemerge = $44;
} else {
$46 = $39;
$argpos$0 = -1;
$l10n$1 = $l10n$0;
$storemerge = $38;
}
} else {
$46 = $39;
$argpos$0 = -1;
$l10n$1 = $l10n$0;
$storemerge = $38;
}
$45 = ($46 << 24) >> 24;
$47 = ($45 + -32) | 0;
$48 = $47 >>> 0 < 32;
L25: do {
if ($48) {
$50 = $45;
$55 = $46;
$fl$0104 = 0;
$storemerge7103 = $storemerge;
while (1) {
$49 = ($50 + -32) | 0;
$51 = 1 << $49;
$52 = $51 & 75913;
$53 = ($52 | 0) == 0;
if ($53) {
$64 = $55;
$fl$0100 = $fl$0104;
$storemerge798 = $storemerge7103;
break L25;
}
$54 = ($55 << 24) >> 24;
$56 = ($54 + -32) | 0;
$57 = 1 << $56;
$58 = $57 | $fl$0104;
$59 = ($storemerge7103 + 1) | 0;
$60 = HEAP8[$59 >> 0] | 0;
$61 = ($60 << 24) >> 24;
$62 = ($61 + -32) | 0;
$63 = $62 >>> 0 < 32;
if ($63) {
$50 = $61;
$55 = $60;
$fl$0104 = $58;
$storemerge7103 = $59;
} else {
$64 = $60;
$fl$0100 = $58;
$storemerge798 = $59;
break;
}
}
} else {
$64 = $46;
$fl$0100 = 0;
$storemerge798 = $storemerge;
}
} while (0);
$65 = ($64 << 24) >> 24 == 42;
do {
if ($65) {
$66 = ($storemerge798 + 1) | 0;
$67 = HEAP8[$66 >> 0] | 0;
$68 = ($67 << 24) >> 24;
$isdigittmp10 = ($68 + -48) | 0;
$isdigit11 = $isdigittmp10 >>> 0 < 10;
if ($isdigit11) {
$69 = ($storemerge798 + 2) | 0;
$70 = HEAP8[$69 >> 0] | 0;
$71 = ($70 << 24) >> 24 == 36;
if ($71) {
$72 = ($nl_type + ($isdigittmp10 << 2)) | 0;
HEAP32[$72 >> 2] = 10;
$73 = HEAP8[$66 >> 0] | 0;
$74 = ($73 << 24) >> 24;
$75 = ($74 + -48) | 0;
$76 = ($nl_arg + ($75 << 3)) | 0;
$77 = $76;
$78 = $77;
$79 = HEAP32[$78 >> 2] | 0;
$80 = ($77 + 4) | 0;
$81 = $80;
$82 = HEAP32[$81 >> 2] | 0;
$83 = ($storemerge798 + 3) | 0;
$l10n$2 = 1;
$storemerge12 = $83;
$w$0 = $79;
} else {
label = 24;
}
} else {
label = 24;
}
if ((label | 0) == 24) {
label = 0;
$84 = ($l10n$1 | 0) == 0;
if (!$84) {
$$0 = -1;
label = 362;
break L1;
}
if (!$1) {
$100 = $66;
$fl$1 = $fl$0100;
$l10n$3 = 0;
$w$1 = 0;
break;
}
$arglist_current = HEAP32[$ap >> 2] | 0;
$85 = HEAP32[$arglist_current >> 2] | 0;
$arglist_next = ($arglist_current + 4) | 0;
HEAP32[$ap >> 2] = $arglist_next;
$l10n$2 = 0;
$storemerge12 = $66;
$w$0 = $85;
}
$86 = ($w$0 | 0) < 0;
if ($86) {
$87 = $fl$0100 | 8192;
$88 = (0 - $w$0) | 0;
$100 = $storemerge12;
$fl$1 = $87;
$l10n$3 = $l10n$2;
$w$1 = $88;
} else {
$100 = $storemerge12;
$fl$1 = $fl$0100;
$l10n$3 = $l10n$2;
$w$1 = $w$0;
}
} else {
$89 = ($64 << 24) >> 24;
$isdigittmp1$i = ($89 + -48) | 0;
$isdigit2$i = $isdigittmp1$i >>> 0 < 10;
if ($isdigit2$i) {
$92 = $89;
$95 = $storemerge798;
$i$03$i = 0;
while (1) {
$90 = ($i$03$i * 10) | 0;
$91 = ($92 + -48) | 0;
$93 = ($91 + $90) | 0;
$94 = ($95 + 1) | 0;
$96 = HEAP8[$94 >> 0] | 0;
$97 = ($96 << 24) >> 24;
$isdigittmp$i = ($97 + -48) | 0;
$isdigit$i = $isdigittmp$i >>> 0 < 10;
if ($isdigit$i) {
$92 = $97;
$95 = $94;
$i$03$i = $93;
} else {
break;
}
}
$98 = ($93 | 0) < 0;
if ($98) {
$$0 = -1;
label = 362;
break L1;
} else {
$100 = $94;
$fl$1 = $fl$0100;
$l10n$3 = $l10n$1;
$w$1 = $93;
}
} else {
$100 = $storemerge798;
$fl$1 = $fl$0100;
$l10n$3 = $l10n$1;
$w$1 = 0;
}
}
} while (0);
$99 = HEAP8[$100 >> 0] | 0;
$101 = ($99 << 24) >> 24 == 46;
L46: do {
if ($101) {
$102 = ($100 + 1) | 0;
$103 = HEAP8[$102 >> 0] | 0;
$104 = ($103 << 24) >> 24 == 42;
if (!$104) {
$125 = ($103 << 24) >> 24;
$isdigittmp1$i20 = ($125 + -48) | 0;
$isdigit2$i21 = $isdigittmp1$i20 >>> 0 < 10;
if ($isdigit2$i21) {
$128 = $125;
$131 = $102;
$i$03$i22 = 0;
} else {
$1048 = $102;
$p$0 = 0;
break;
}
while (1) {
$126 = ($i$03$i22 * 10) | 0;
$127 = ($128 + -48) | 0;
$129 = ($127 + $126) | 0;
$130 = ($131 + 1) | 0;
$132 = HEAP8[$130 >> 0] | 0;
$133 = ($132 << 24) >> 24;
$isdigittmp$i23 = ($133 + -48) | 0;
$isdigit$i24 = $isdigittmp$i23 >>> 0 < 10;
if ($isdigit$i24) {
$128 = $133;
$131 = $130;
$i$03$i22 = $129;
} else {
$1048 = $130;
$p$0 = $129;
break L46;
}
}
}
$105 = ($100 + 2) | 0;
$106 = HEAP8[$105 >> 0] | 0;
$107 = ($106 << 24) >> 24;
$isdigittmp8 = ($107 + -48) | 0;
$isdigit9 = $isdigittmp8 >>> 0 < 10;
if ($isdigit9) {
$108 = ($100 + 3) | 0;
$109 = HEAP8[$108 >> 0] | 0;
$110 = ($109 << 24) >> 24 == 36;
if ($110) {
$111 = ($nl_type + ($isdigittmp8 << 2)) | 0;
HEAP32[$111 >> 2] = 10;
$112 = HEAP8[$105 >> 0] | 0;
$113 = ($112 << 24) >> 24;
$114 = ($113 + -48) | 0;
$115 = ($nl_arg + ($114 << 3)) | 0;
$116 = $115;
$117 = $116;
$118 = HEAP32[$117 >> 2] | 0;
$119 = ($116 + 4) | 0;
$120 = $119;
$121 = HEAP32[$120 >> 2] | 0;
$122 = ($100 + 4) | 0;
$1048 = $122;
$p$0 = $118;
break;
}
}
$123 = ($l10n$3 | 0) == 0;
if (!$123) {
$$0 = -1;
label = 362;
break L1;
}
if ($1) {
$arglist_current2 = HEAP32[$ap >> 2] | 0;
$124 = HEAP32[$arglist_current2 >> 2] | 0;
$arglist_next3 = ($arglist_current2 + 4) | 0;
HEAP32[$ap >> 2] = $arglist_next3;
$1048 = $105;
$p$0 = $124;
} else {
$1048 = $105;
$p$0 = 0;
}
} else {
$1048 = $100;
$p$0 = -1;
}
} while (0);
$135 = $1048;
$st$0 = 0;
while (1) {
$134 = HEAP8[$135 >> 0] | 0;
$136 = ($134 << 24) >> 24;
$137 = ($136 + -65) | 0;
$138 = $137 >>> 0 > 57;
if ($138) {
$$0 = -1;
label = 362;
break L1;
}
$139 = ($135 + 1) | 0;
$140 = (((133736 + (($st$0 * 58) | 0)) | 0) + $137) | 0;
$141 = HEAP8[$140 >> 0] | 0;
$142 = $141 & 255;
$143 = ($142 + -1) | 0;
$144 = $143 >>> 0 < 8;
if ($144) {
$135 = $139;
$st$0 = $142;
} else {
break;
}
}
$145 = ($141 << 24) >> 24 == 0;
if ($145) {
$$0 = -1;
label = 362;
break;
}
$146 = ($141 << 24) >> 24 == 19;
$147 = ($argpos$0 | 0) > -1;
L65: do {
if ($146) {
if ($147) {
$$0 = -1;
label = 362;
break L1;
} else {
$1049 = $1045;
$1050 = $1046;
label = 63;
}
} else {
if ($147) {
$148 = ($nl_type + ($argpos$0 << 2)) | 0;
HEAP32[$148 >> 2] = $142;
$149 = ($nl_arg + ($argpos$0 << 3)) | 0;
$150 = $149;
$151 = $150;
$152 = HEAP32[$151 >> 2] | 0;
$153 = ($150 + 4) | 0;
$154 = $153;
$155 = HEAP32[$154 >> 2] | 0;
$156 = $152;
$1049 = $155;
$1050 = $156;
label = 63;
break;
}
if (!$1) {
$$0 = 0;
label = 362;
break L1;
}
$157 = ($141 & 255) > 20;
if ($157) {
$199 = $134;
$207 = $1046;
$228 = $1045;
} else {
do {
switch ($142 | 0) {
case 14: {
$arglist_current20 = HEAP32[$ap >> 2] | 0;
$179 = HEAP32[$arglist_current20 >> 2] | 0;
$arglist_next21 = ($arglist_current20 + 4) | 0;
HEAP32[$ap >> 2] = $arglist_next21;
$$mask1$i29 = $179 & 65535;
$180 = $$mask1$i29;
$1051 = $180;
$1052 = 0;
label = 64;
break L65;
break;
}
case 12: {
$arglist_current14 = HEAP32[$ap >> 2] | 0;
$165 = $arglist_current14;
$166 = $165;
$167 = HEAP32[$166 >> 2] | 0;
$168 = ($165 + 4) | 0;
$169 = $168;
$170 = HEAP32[$169 >> 2] | 0;
$arglist_next15 = ($arglist_current14 + 8) | 0;
HEAP32[$ap >> 2] = $arglist_next15;
$171 = $167;
$1051 = $171;
$1052 = $170;
label = 64;
break L65;
break;
}
case 13: {
$arglist_current17 = HEAP32[$ap >> 2] | 0;
$172 = HEAP32[$arglist_current17 >> 2] | 0;
$arglist_next18 = ($arglist_current17 + 4) | 0;
HEAP32[$ap >> 2] = $arglist_next18;
$173 = $172 & 65535;
$174 = ($173 << 16) >> 16;
$175 = ($174 | 0) < 0;
$176 = ($175 << 31) >> 31;
$sext84 = $172 << 16;
$177 = $sext84 >> 16;
$178 = $177;
$1051 = $178;
$1052 = $176;
label = 64;
break L65;
break;
}
case 18: {
$arglist_current32 = HEAP32[$ap >> 2] | 0;
HEAP32[tempDoublePtr >> 2] = HEAP32[$arglist_current32 >> 2];
HEAP32[(tempDoublePtr + 4) >> 2] = HEAP32[($arglist_current32 + 4) >> 2];
$194 = +HEAPF64[tempDoublePtr >> 3];
$arglist_next33 = ($arglist_current32 + 8) | 0;
HEAP32[$ap >> 2] = $arglist_next33;
HEAPF64[tempDoublePtr >> 3] = $194;
$195 = HEAP32[tempDoublePtr >> 2] | 0;
$196 = HEAP32[(tempDoublePtr + 4) >> 2] | 0;
$197 = $195;
$1049 = $196;
$1050 = $197;
label = 63;
break L65;
break;
}
case 9: {
$arglist_current5 = HEAP32[$ap >> 2] | 0;
$158 = HEAP32[$arglist_current5 >> 2] | 0;
$arglist_next6 = ($arglist_current5 + 4) | 0;
HEAP32[$ap >> 2] = $arglist_next6;
$1051 = $158;
$1052 = $1045;
label = 64;
break L65;
break;
}
case 11: {
$arglist_current11 = HEAP32[$ap >> 2] | 0;
$163 = HEAP32[$arglist_current11 >> 2] | 0;
$arglist_next12 = ($arglist_current11 + 4) | 0;
HEAP32[$ap >> 2] = $arglist_next12;
$164 = $163;
$1051 = $164;
$1052 = 0;
label = 64;
break L65;
break;
}
case 15: {
$arglist_current23 = HEAP32[$ap >> 2] | 0;
$181 = HEAP32[$arglist_current23 >> 2] | 0;
$arglist_next24 = ($arglist_current23 + 4) | 0;
HEAP32[$ap >> 2] = $arglist_next24;
$182 = $181 & 255;
$183 = ($182 << 24) >> 24;
$184 = ($183 | 0) < 0;
$185 = ($184 << 31) >> 31;
$sext = $181 << 24;
$186 = $sext >> 24;
$187 = $186;
$1051 = $187;
$1052 = $185;
label = 64;
break L65;
break;
}
case 17: {
$arglist_current29 = HEAP32[$ap >> 2] | 0;
HEAP32[tempDoublePtr >> 2] = HEAP32[$arglist_current29 >> 2];
HEAP32[(tempDoublePtr + 4) >> 2] = HEAP32[($arglist_current29 + 4) >> 2];
$190 = +HEAPF64[tempDoublePtr >> 3];
$arglist_next30 = ($arglist_current29 + 8) | 0;
HEAP32[$ap >> 2] = $arglist_next30;
HEAPF64[tempDoublePtr >> 3] = $190;
$191 = HEAP32[tempDoublePtr >> 2] | 0;
$192 = HEAP32[(tempDoublePtr + 4) >> 2] | 0;
$193 = $191;
$1051 = $193;
$1052 = $192;
label = 64;
break L65;
break;
}
case 10: {
$arglist_current8 = HEAP32[$ap >> 2] | 0;
$159 = HEAP32[$arglist_current8 >> 2] | 0;
$arglist_next9 = ($arglist_current8 + 4) | 0;
HEAP32[$ap >> 2] = $arglist_next9;
$160 = ($159 | 0) < 0;
$161 = ($160 << 31) >> 31;
$162 = $159;
$1051 = $162;
$1052 = $161;
label = 64;
break L65;
break;
}
case 16: {
$arglist_current26 = HEAP32[$ap >> 2] | 0;
$188 = HEAP32[$arglist_current26 >> 2] | 0;
$arglist_next27 = ($arglist_current26 + 4) | 0;
HEAP32[$ap >> 2] = $arglist_next27;
$$mask$i30 = $188 & 255;
$189 = $$mask$i30;
$1051 = $189;
$1052 = 0;
label = 64;
break L65;
break;
}
default: {
$1051 = $1046;
$1052 = $1045;
label = 64;
break L65;
}
}
} while (0);
}
}
} while (0);
if ((label | 0) == 63) {
label = 0;
if ($1) {
$1051 = $1050;
$1052 = $1049;
label = 64;
} else {
$1045 = $1049;
$1046 = $1050;
$22 = $139;
$cnt$0 = $cnt$1;
$l$0 = $36;
$l10n$0 = $l10n$3;
continue;
}
}
if ((label | 0) == 64) {
label = 0;
$$pre292 = HEAP8[$135 >> 0] | 0;
$199 = $$pre292;
$207 = $1051;
$228 = $1052;
}
$198 = ($199 << 24) >> 24;
$200 = ($st$0 | 0) == 0;
if ($200) {
$t$0 = $198;
} else {
$201 = $198 & 15;
$202 = ($201 | 0) == 3;
$203 = $198 & -33;
$$ = $202 ? $203 : $198;
$t$0 = $$;
}
$204 = $fl$1 & 8192;
$205 = ($204 | 0) == 0;
$206 = $fl$1 & -65537;
$fl$1$ = $205 ? $fl$1 : $206;
L92: do {
switch ($t$0 | 0) {
case 117: {
$276 = $207;
$278 = $228;
$pl$0 = 0;
$prefix$0 = 134200;
label = 89;
break;
}
case 65:
case 71:
case 70:
case 69:
case 97:
case 103:
case 102:
case 101: {
$368 = $207;
HEAP32[tempDoublePtr >> 2] = $368;
HEAP32[(tempDoublePtr + 4) >> 2] = $228;
$369 = +HEAPF64[tempDoublePtr >> 3];
HEAP32[$e2$i >> 2] = 0;
$370 = ($228 | 0) < 0;
if ($370) {
$371 = -$369;
$$07$i = $371;
$pl$0$i = 1;
$prefix$0$i = 134224;
} else {
$372 = $fl$1$ & 2048;
$373 = ($372 | 0) == 0;
if ($373) {
$374 = $fl$1$ & 1;
$375 = ($374 | 0) == 0;
$$$i = $375 ? (134224 + 1) | 0 : (134224 + 6) | 0;
$$07$i = $369;
$pl$0$i = $374;
$prefix$0$i = $$$i;
} else {
$$07$i = $369;
$pl$0$i = 1;
$prefix$0$i = (134224 + 3) | 0;
}
}
HEAPF64[tempDoublePtr >> 3] = $$07$i;
$376 = HEAP32[tempDoublePtr >> 2] | 0;
$377 = HEAP32[(tempDoublePtr + 4) >> 2] | 0;
$378 = $377 & 2146435072;
$379 = $378 >>> 0 < 2146435072;
$380 = ($378 | 0) == 2146435072;
$381 = 0 < 0;
$382 = $380 & $381;
$383 = $379 | $382;
if (!$383) {
$384 = $t$0 & 32;
$385 = ($384 | 0) != 0;
$386 = $385 ? 134248 : 134256;
$387 = ($$07$i != $$07$i) | (0.0 != 0.0);
if ($387) {
$388 = $385 ? 134264 : 134272;
$pl$1$i = 0;
$s1$0$i = $388;
} else {
$pl$1$i = $pl$0$i;
$s1$0$i = $386;
}
$389 = ($pl$1$i + 3) | 0;
$390 = $fl$1$ & 8192;
$391 = ($390 | 0) == 0;
$392 = ($389 | 0) < ($w$1 | 0);
$or$cond$i35$i = $391 & $392;
if ($or$cond$i35$i) {
$393 = ($w$1 - $389) | 0;
$394 = $393 >>> 0 > 256;
$395 = $394 ? 256 : $393;
_memset($pad$i | 0, 32, $395 | 0) | 0;
$396 = $393 >>> 0 > 255;
if ($396) {
$$01$i36$i = $393;
while (1) {
___fwritex($pad$i, 256, $f) | 0;
$397 = ($$01$i36$i + -256) | 0;
$398 = $397 >>> 0 > 255;
if ($398) {
$$01$i36$i = $397;
} else {
$$0$lcssa$i38$i = $397;
break;
}
}
} else {
$$0$lcssa$i38$i = $393;
}
___fwritex($pad$i, $$0$lcssa$i38$i, $f) | 0;
}
___fwritex($prefix$0$i, $pl$1$i, $f) | 0;
___fwritex($s1$0$i, 3, $f) | 0;
$399 = $fl$1$ & 73728;
$400 = ($399 | 0) == 8192;
$or$cond$i42$i = $400 & $392;
if ($or$cond$i42$i) {
$401 = ($w$1 - $389) | 0;
$402 = $401 >>> 0 > 256;
$403 = $402 ? 256 : $401;
_memset($pad$i | 0, 32, $403 | 0) | 0;
$404 = $401 >>> 0 > 255;
if ($404) {
$$01$i43$i = $401;
while (1) {
___fwritex($pad$i, 256, $f) | 0;
$405 = ($$01$i43$i + -256) | 0;
$406 = $405 >>> 0 > 255;
if ($406) {
$$01$i43$i = $405;
} else {
$$0$lcssa$i45$i = $405;
break;
}
}
} else {
$$0$lcssa$i45$i = $401;
}
___fwritex($pad$i, $$0$lcssa$i45$i, $f) | 0;
}
$w$$i = $392 ? $w$1 : $389;
$1045 = $228;
$1046 = $207;
$22 = $139;
$cnt$0 = $cnt$1;
$l$0 = $w$$i;
$l10n$0 = $l10n$3;
continue L1;
}
$407 = +_frexpl($$07$i, $e2$i);
$408 = $407 * 2.0;
$409 = $408 != 0.0;
if ($409) {
$410 = HEAP32[$e2$i >> 2] | 0;
$411 = ($410 + -1) | 0;
HEAP32[$e2$i >> 2] = $411;
}
$412 = $t$0 | 32;
$413 = ($412 | 0) == 97;
if ($413) {
$414 = $t$0 & 32;
$415 = ($414 | 0) == 0;
$416 = ($prefix$0$i + 9) | 0;
$prefix$0$$i = $415 ? $prefix$0$i : $416;
$417 = $pl$0$i | 2;
$418 = $p$0 >>> 0 > 11;
$419 = (12 - $p$0) | 0;
$re$0$i = $418 ? 0 : $419;
$420 = ($re$0$i | 0) == 0;
do {
if ($420) {
$$1$i = $408;
} else {
$re$1165$i = $re$0$i;
$round$0164$i = 8.0;
while (1) {
$421 = ($re$1165$i + -1) | 0;
$422 = $round$0164$i * 16.0;
$423 = ($421 | 0) == 0;
if ($423) {
break;
} else {
$re$1165$i = $421;
$round$0164$i = $422;
}
}
$424 = HEAP8[$prefix$0$$i >> 0] | 0;
$425 = ($424 << 24) >> 24 == 45;
if ($425) {
$426 = -$408;
$427 = $426 - $422;
$428 = $422 + $427;
$429 = -$428;
$$1$i = $429;
break;
} else {
$430 = $408 + $422;
$431 = $430 - $422;
$$1$i = $431;
break;
}
}
} while (0);
$432 = HEAP32[$e2$i >> 2] | 0;
$433 = ($432 | 0) < 0;
$434 = (0 - $432) | 0;
$435 = $433 ? $434 : $432;
$436 = ($435 | 0) < 0;
if ($436) {
$437 = ($435 | 0) < 0;
$438 = ($437 << 31) >> 31;
$$05$i$i = $6;
$439 = $435;
$440 = $438;
while (1) {
$441 = ___uremdi3($439 | 0, $440 | 0, 10, 0) | 0;
$442 = tempRet0;
$443 = $441 | 48;
$444 = $443 & 255;
$445 = ($$05$i$i + -1) | 0;
HEAP8[$445 >> 0] = $444;
$446 = ___udivdi3($439 | 0, $440 | 0, 10, 0) | 0;
$447 = tempRet0;
$448 = $440 >>> 0 > 9;
$449 = ($440 | 0) == 9;
$450 = $439 >>> 0 > 4294967295;
$451 = $449 & $450;
$452 = $448 | $451;
if ($452) {
$$05$i$i = $445;
$439 = $446;
$440 = $447;
} else {
break;
}
}
$$0$lcssa$i48$i = $445;
$$01$lcssa$off0$i$i = $446;
} else {
$$0$lcssa$i48$i = $6;
$$01$lcssa$off0$i$i = $435;
}
$453 = ($$01$lcssa$off0$i$i | 0) == 0;
if ($453) {
$$1$lcssa$i$i = $$0$lcssa$i48$i;
} else {
$$12$i$i = $$0$lcssa$i48$i;
$y$03$i$i = $$01$lcssa$off0$i$i;
while (1) {
$454 = ($y$03$i$i >>> 0) % 10 & -1;
$455 = $454 | 48;
$456 = $455 & 255;
$457 = ($$12$i$i + -1) | 0;
HEAP8[$457 >> 0] = $456;
$458 = (($y$03$i$i >>> 0) / 10) & -1;
$459 = $y$03$i$i >>> 0 < 10;
if ($459) {
$$1$lcssa$i$i = $457;
break;
} else {
$$12$i$i = $457;
$y$03$i$i = $458;
}
}
}
$460 = ($$1$lcssa$i$i | 0) == ($6 | 0);
if ($460) {
HEAP8[$7 >> 0] = 48;
$estr$0$i = $7;
} else {
$estr$0$i = $$1$lcssa$i$i;
}
$461 = HEAP32[$e2$i >> 2] | 0;
$462 = $461 >> 31;
$463 = $462 & 2;
$464 = ($463 + 43) | 0;
$465 = $464 & 255;
$466 = ($estr$0$i + -1) | 0;
HEAP8[$466 >> 0] = $465;
$467 = ($t$0 + 15) | 0;
$468 = $467 & 255;
$469 = ($estr$0$i + -2) | 0;
HEAP8[$469 >> 0] = $468;
$470 = ($p$0 | 0) > 0;
$471 = $fl$1$ & 8;
$472 = ($471 | 0) == 0;
if ($470) {
if ($472) {
$$2$us$us$i = $$1$i;
$s$0$us$us$i = $buf$i;
while (1) {
$473 = ~~$$2$us$us$i;
$474 = (134280 + $473) | 0;
$475 = HEAP8[$474 >> 0] | 0;
$476 = $475 & 255;
$477 = $476 | $414;
$478 = $477 & 255;
$479 = ($s$0$us$us$i + 1) | 0;
HEAP8[$s$0$us$us$i >> 0] = $478;
$480 = +($473 | 0);
$481 = $$2$us$us$i - $480;
$482 = $481 * 16.0;
$483 = $479;
$484 = ($483 - $0) | 0;
$485 = ($484 | 0) == 1;
if ($485) {
$486 = ($s$0$us$us$i + 2) | 0;
HEAP8[$479 >> 0] = 46;
$s$1$us$us$i = $486;
} else {
$s$1$us$us$i = $479;
}
$487 = $482 != 0.0;
if ($487) {
$$2$us$us$i = $482;
$s$0$us$us$i = $s$1$us$us$i;
} else {
$s$1$lcssa$i = $s$1$us$us$i;
break;
}
}
} else {
$$2$us$i = $$1$i;
$s$0$us$i = $buf$i;
while (1) {
$488 = ~~$$2$us$i;
$489 = (134280 + $488) | 0;
$490 = HEAP8[$489 >> 0] | 0;
$491 = $490 & 255;
$492 = $491 | $414;
$493 = $492 & 255;
$494 = ($s$0$us$i + 1) | 0;
HEAP8[$s$0$us$i >> 0] = $493;
$495 = +($488 | 0);
$496 = $$2$us$i - $495;
$497 = $496 * 16.0;
$498 = $494;
$499 = ($498 - $0) | 0;
$500 = ($499 | 0) == 1;
if ($500) {
$501 = ($s$0$us$i + 2) | 0;
HEAP8[$494 >> 0] = 46;
$s$1$us$i = $501;
} else {
$s$1$us$i = $494;
}
$502 = $497 != 0.0;
if ($502) {
$$2$us$i = $497;
$s$0$us$i = $s$1$us$i;
} else {
$s$1$lcssa$i = $s$1$us$i;
break;
}
}
}
} else {
if ($472) {
$$2$us159$i = $$1$i;
$s$0$us158$i = $buf$i;
while (1) {
$503 = ~~$$2$us159$i;
$504 = (134280 + $503) | 0;
$505 = HEAP8[$504 >> 0] | 0;
$506 = $505 & 255;
$507 = $506 | $414;
$508 = $507 & 255;
$509 = ($s$0$us158$i + 1) | 0;
HEAP8[$s$0$us158$i >> 0] = $508;
$510 = +($503 | 0);
$511 = $$2$us159$i - $510;
$512 = $511 * 16.0;
$513 = $509;
$514 = ($513 - $0) | 0;
$515 = ($514 | 0) == 1;
$516 = $512 != 0.0;
$or$cond$i71 = $515 & $516;
if ($or$cond$i71) {
$517 = ($s$0$us158$i + 2) | 0;
HEAP8[$509 >> 0] = 46;
$s$1$us160$i = $517;
} else {
$s$1$us160$i = $509;
}
if ($516) {
$$2$us159$i = $512;
$s$0$us158$i = $s$1$us160$i;
} else {
$s$1$lcssa$i = $s$1$us160$i;
break;
}
}
} else {
$$2$i = $$1$i;
$s$0$i = $buf$i;
while (1) {
$518 = ~~$$2$i;
$519 = (134280 + $518) | 0;
$520 = HEAP8[$519 >> 0] | 0;
$521 = $520 & 255;
$522 = $521 | $414;
$523 = $522 & 255;
$524 = ($s$0$i + 1) | 0;
HEAP8[$s$0$i >> 0] = $523;
$525 = +($518 | 0);
$526 = $$2$i - $525;
$527 = $526 * 16.0;
$528 = $524;
$529 = ($528 - $0) | 0;
$530 = ($529 | 0) == 1;
if ($530) {
$531 = ($s$0$i + 2) | 0;
HEAP8[$524 >> 0] = 46;
$s$1$i = $531;
} else {
$s$1$i = $524;
}
$532 = $527 != 0.0;
if ($532) {
$$2$i = $527;
$s$0$i = $s$1$i;
} else {
$s$1$lcssa$i = $s$1$i;
break;
}
}
}
}
$533 = ($p$0 | 0) == 0;
$$pre319$i = $s$1$lcssa$i;
do {
if ($533) {
label = 173;
} else {
$534 = ($10 + $$pre319$i) | 0;
$535 = ($534 | 0) < ($p$0 | 0);
if (!$535) {
label = 173;
break;
}
$536 = $469;
$537 = ($11 + $p$0) | 0;
$538 = ($537 - $536) | 0;
$l$0$i = $538;
}
} while (0);
if ((label | 0) == 173) {
label = 0;
$539 = $469;
$540 = ($9 - $539) | 0;
$541 = ($540 + $$pre319$i) | 0;
$l$0$i = $541;
}
$542 = ($l$0$i + $417) | 0;
$543 = $fl$1$ & 73728;
$544 = ($543 | 0) == 0;
$545 = ($542 | 0) < ($w$1 | 0);
$or$cond$i52$i = $544 & $545;
if ($or$cond$i52$i) {
$546 = ($w$1 - $542) | 0;
$547 = $546 >>> 0 > 256;
$548 = $547 ? 256 : $546;
_memset($pad$i | 0, 32, $548 | 0) | 0;
$549 = $546 >>> 0 > 255;
if ($549) {
$$01$i53$i = $546;
while (1) {
___fwritex($pad$i, 256, $f) | 0;
$550 = ($$01$i53$i + -256) | 0;
$551 = $550 >>> 0 > 255;
if ($551) {
$$01$i53$i = $550;
} else {
$$0$lcssa$i55$i = $550;
break;
}
}
} else {
$$0$lcssa$i55$i = $546;
}
___fwritex($pad$i, $$0$lcssa$i55$i, $f) | 0;
}
___fwritex($prefix$0$$i, $417, $f) | 0;
$552 = ($543 | 0) == 65536;
$or$cond$i59$i = $552 & $545;
if ($or$cond$i59$i) {
$553 = ($w$1 - $542) | 0;
$554 = $553 >>> 0 > 256;
$555 = $554 ? 256 : $553;
_memset($pad$i | 0, 48, $555 | 0) | 0;
$556 = $553 >>> 0 > 255;
if ($556) {
$$01$i60$i = $553;
while (1) {
___fwritex($pad$i, 256, $f) | 0;
$557 = ($$01$i60$i + -256) | 0;
$558 = $557 >>> 0 > 255;
if ($558) {
$$01$i60$i = $557;
} else {
$$0$lcssa$i62$i = $557;
break;
}
}
} else {
$$0$lcssa$i62$i = $553;
}
___fwritex($pad$i, $$0$lcssa$i62$i, $f) | 0;
}
$559 = ($$pre319$i - $0) | 0;
___fwritex($buf$i, $559, $f) | 0;
$560 = $469;
$561 = ($8 - $560) | 0;
$562 = ($l$0$i - $561) | 0;
$563 = ($562 - $559) | 0;
$564 = ($563 | 0) > 0;
if ($564) {
$565 = $563 >>> 0 > 256;
$566 = $565 ? 256 : $563;
_memset($pad$i | 0, 48, $566 | 0) | 0;
$567 = $563 >>> 0 > 255;
if ($567) {
$$01$i66$i = $563;
while (1) {
___fwritex($pad$i, 256, $f) | 0;
$568 = ($$01$i66$i + -256) | 0;
$569 = $568 >>> 0 > 255;
if ($569) {
$$01$i66$i = $568;
} else {
$$0$lcssa$i68$i = $568;
break;
}
}
} else {
$$0$lcssa$i68$i = $563;
}
___fwritex($pad$i, $$0$lcssa$i68$i, $f) | 0;
}
___fwritex($469, $561, $f) | 0;
$570 = ($543 | 0) == 8192;
$or$cond$i72$i = $570 & $545;
if ($or$cond$i72$i) {
$571 = ($w$1 - $542) | 0;
$572 = $571 >>> 0 > 256;
$573 = $572 ? 256 : $571;
_memset($pad$i | 0, 32, $573 | 0) | 0;
$574 = $571 >>> 0 > 255;
if ($574) {
$$01$i73$i = $571;
while (1) {
___fwritex($pad$i, 256, $f) | 0;
$575 = ($$01$i73$i + -256) | 0;
$576 = $575 >>> 0 > 255;
if ($576) {
$$01$i73$i = $575;
} else {
$$0$lcssa$i75$i = $575;
break;
}
}
} else {
$$0$lcssa$i75$i = $571;
}
___fwritex($pad$i, $$0$lcssa$i75$i, $f) | 0;
}
$w$18$i = $545 ? $w$1 : $542;
$1045 = $228;
$1046 = $207;
$22 = $139;
$cnt$0 = $cnt$1;
$l$0 = $w$18$i;
$l10n$0 = $l10n$3;
continue L1;
}
$577 = ($p$0 | 0) < 0;
$$p$i = $577 ? 6 : $p$0;
if ($409) {
$578 = $408 * 268435456.0;
$579 = HEAP32[$e2$i >> 2] | 0;
$580 = ($579 + -28) | 0;
HEAP32[$e2$i >> 2] = $580;
$$3$i = $578;
$581 = $580;
} else {
$$pre$i = HEAP32[$e2$i >> 2] | 0;
$$3$i = $408;
$581 = $$pre$i;
}
$582 = ($581 | 0) < 0;
$$31$i = $582 ? $big$i : $12;
$$4$i = $$3$i;
$z$0$i = $$31$i;
while (1) {
$583 = ~~$$4$i >>> 0;
HEAP32[$z$0$i >> 2] = $583;
$584 = ($z$0$i + 4) | 0;
$585 = +($583 >>> 0);
$586 = $$4$i - $585;
$587 = $586 * 1.0e9;
$588 = $587 != 0.0;
if ($588) {
$$4$i = $587;
$z$0$i = $584;
} else {
break;
}
}
$$pr$i = HEAP32[$e2$i >> 2] | 0;
$589 = ($$pr$i | 0) > 0;
if ($589) {
$590 = $$pr$i;
$a$1263$i = $$31$i;
$z$1262$i = $584;
while (1) {
$591 = ($590 | 0) > 29;
$592 = $591 ? 29 : $590;
$d$0254$i = ($z$1262$i + -4) | 0;
$593 = $d$0254$i >>> 0 < $a$1263$i >>> 0;
do {
if ($593) {
$a$2$ph$i = $a$1263$i;
} else {
$carry$0255$i = 0;
$d$0256$i = $d$0254$i;
while (1) {
$594 = HEAP32[$d$0256$i >> 2] | 0;
$595 = _bitshift64Shl($594 | 0, 0, $592 | 0) | 0;
$596 = tempRet0;
$597 = _i64Add($595 | 0, $596 | 0, $carry$0255$i | 0, 0) | 0;
$598 = tempRet0;
$599 = ___uremdi3($597 | 0, $598 | 0, 1000000000, 0) | 0;
$600 = tempRet0;
HEAP32[$d$0256$i >> 2] = $599;
$601 = ___udivdi3($597 | 0, $598 | 0, 1000000000, 0) | 0;
$602 = tempRet0;
$d$0$i = ($d$0256$i + -4) | 0;
$603 = $d$0$i >>> 0 < $a$1263$i >>> 0;
if ($603) {
break;
} else {
$carry$0255$i = $601;
$d$0256$i = $d$0$i;
}
}
$604 = ($601 | 0) == 0;
if ($604) {
$a$2$ph$i = $a$1263$i;
break;
}
$605 = ($a$1263$i + -4) | 0;
HEAP32[$605 >> 2] = $601;
$a$2$ph$i = $605;
}
} while (0);
$z$2$i = $z$1262$i;
while (1) {
$606 = $z$2$i >>> 0 > $a$2$ph$i >>> 0;
if (!$606) {
break;
}
$607 = ($z$2$i + -4) | 0;
$608 = HEAP32[$607 >> 2] | 0;
$609 = ($608 | 0) == 0;
if ($609) {
$z$2$i = $607;
} else {
break;
}
}
$610 = HEAP32[$e2$i >> 2] | 0;
$611 = ($610 - $592) | 0;
HEAP32[$e2$i >> 2] = $611;
$612 = ($611 | 0) > 0;
if ($612) {
$590 = $611;
$a$1263$i = $a$2$ph$i;
$z$1262$i = $z$2$i;
} else {
$$pr146$i = $611;
$a$1$lcssa$i = $a$2$ph$i;
$z$1$lcssa$i = $z$2$i;
break;
}
}
} else {
$$pr146$i = $$pr$i;
$a$1$lcssa$i = $$31$i;
$z$1$lcssa$i = $584;
}
$613 = ($$pr146$i | 0) < 0;
L228: do {
if ($613) {
$614 = ($$p$i + 25) | 0;
$615 = (($614 | 0) / 9) & -1;
$616 = ($615 + 1) | 0;
$617 = ($412 | 0) == 102;
if ($617) {
$618 = $$31$i;
$619 = ($$31$i + ($616 << 2)) | 0;
$621 = $$pr146$i;
$a$3249$us$i = $a$1$lcssa$i;
$z$3248$us$i = $z$1$lcssa$i;
while (1) {
$620 = (0 - $621) | 0;
$622 = ($620 | 0) > 9;
$$20$us$i = $622 ? 9 : $620;
$623 = $a$3249$us$i >>> 0 < $z$3248$us$i >>> 0;
do {
if ($623) {
$648 = 1 << $$20$us$i;
$642 = ($648 + -1) | 0;
$645 = 1000000000 >>> $$20$us$i;
$carry3$0243$us$i = 0;
$d$1242$us$i = $a$3249$us$i;
while (1) {
$640 = HEAP32[$d$1242$us$i >> 2] | 0;
$641 = $640 & $642;
$643 = $640 >>> $$20$us$i;
$644 = ($643 + $carry3$0243$us$i) | 0;
HEAP32[$d$1242$us$i >> 2] = $644;
$630 = Math_imul($641, $645) | 0;
$646 = ($d$1242$us$i + 4) | 0;
$647 = $646 >>> 0 < $z$3248$us$i >>> 0;
if ($647) {
$carry3$0243$us$i = $630;
$d$1242$us$i = $646;
} else {
break;
}
}
$627 = HEAP32[$a$3249$us$i >> 2] | 0;
$628 = ($627 | 0) == 0;
$629 = ($a$3249$us$i + 4) | 0;
$$a$3$us$i = $628 ? $629 : $a$3249$us$i;
$631 = ($630 | 0) == 0;
if ($631) {
$$a$3$us323$i = $$a$3$us$i;
$z$4$us$i = $z$3248$us$i;
break;
}
$632 = ($z$3248$us$i + 4) | 0;
HEAP32[$z$3248$us$i >> 2] = $630;
$$a$3$us323$i = $$a$3$us$i;
$z$4$us$i = $632;
} else {
$624 = HEAP32[$a$3249$us$i >> 2] | 0;
$625 = ($624 | 0) == 0;
$626 = ($a$3249$us$i + 4) | 0;
$$a$3$us322$i = $625 ? $626 : $a$3249$us$i;
$$a$3$us323$i = $$a$3$us322$i;
$z$4$us$i = $z$3248$us$i;
}
} while (0);
$633 = $z$4$us$i;
$634 = ($633 - $618) | 0;
$635 = $634 >> 2;
$636 = ($635 | 0) > ($616 | 0);
$$z$4$us$i = $636 ? $619 : $z$4$us$i;
$637 = HEAP32[$e2$i >> 2] | 0;
$638 = ($637 + $$20$us$i) | 0;
HEAP32[$e2$i >> 2] = $638;
$639 = ($638 | 0) < 0;
if ($639) {
$621 = $638;
$a$3249$us$i = $$a$3$us323$i;
$z$3248$us$i = $$z$4$us$i;
} else {
$a$3$lcssa$i = $$a$3$us323$i;
$z$3$lcssa$i = $$z$4$us$i;
break L228;
}
}
} else {
$650 = $$pr146$i;
$a$3249$i = $a$1$lcssa$i;
$z$3248$i = $z$1$lcssa$i;
}
while (1) {
$649 = (0 - $650) | 0;
$651 = ($649 | 0) > 9;
$$20$i = $651 ? 9 : $649;
$652 = $a$3249$i >>> 0 < $z$3248$i >>> 0;
do {
if ($652) {
$656 = 1 << $$20$i;
$657 = ($656 + -1) | 0;
$658 = 1000000000 >>> $$20$i;
$carry3$0243$i = 0;
$d$1242$i = $a$3249$i;
while (1) {
$659 = HEAP32[$d$1242$i >> 2] | 0;
$660 = $659 & $657;
$661 = $659 >>> $$20$i;
$662 = ($661 + $carry3$0243$i) | 0;
HEAP32[$d$1242$i >> 2] = $662;
$663 = Math_imul($660, $658) | 0;
$664 = ($d$1242$i + 4) | 0;
$665 = $664 >>> 0 < $z$3248$i >>> 0;
if ($665) {
$carry3$0243$i = $663;
$d$1242$i = $664;
} else {
break;
}
}
$666 = HEAP32[$a$3249$i >> 2] | 0;
$667 = ($666 | 0) == 0;
$668 = ($a$3249$i + 4) | 0;
$$a$3$i = $667 ? $668 : $a$3249$i;
$669 = ($663 | 0) == 0;
if ($669) {
$$a$3325$i = $$a$3$i;
$z$4$i = $z$3248$i;
break;
}
$670 = ($z$3248$i + 4) | 0;
HEAP32[$z$3248$i >> 2] = $663;
$$a$3325$i = $$a$3$i;
$z$4$i = $670;
} else {
$653 = HEAP32[$a$3249$i >> 2] | 0;
$654 = ($653 | 0) == 0;
$655 = ($a$3249$i + 4) | 0;
$$a$3324$i = $654 ? $655 : $a$3249$i;
$$a$3325$i = $$a$3324$i;
$z$4$i = $z$3248$i;
}
} while (0);
$671 = $z$4$i;
$672 = $$a$3325$i;
$673 = ($671 - $672) | 0;
$674 = $673 >> 2;
$675 = ($674 | 0) > ($616 | 0);
if ($675) {
$676 = ($$a$3325$i + ($616 << 2)) | 0;
$z$5$i = $676;
} else {
$z$5$i = $z$4$i;
}
$677 = HEAP32[$e2$i >> 2] | 0;
$678 = ($677 + $$20$i) | 0;
HEAP32[$e2$i >> 2] = $678;
$679 = ($678 | 0) < 0;
if ($679) {
$650 = $678;
$a$3249$i = $$a$3325$i;
$z$3248$i = $z$5$i;
} else {
$a$3$lcssa$i = $$a$3325$i;
$z$3$lcssa$i = $z$5$i;
break;
}
}
} else {
$a$3$lcssa$i = $a$1$lcssa$i;
$z$3$lcssa$i = $z$1$lcssa$i;
}
} while (0);
$680 = $a$3$lcssa$i >>> 0 < $z$3$lcssa$i >>> 0;
$681 = $$31$i;
do {
if ($680) {
$682 = $a$3$lcssa$i;
$683 = ($681 - $682) | 0;
$684 = $683 >> 2;
$685 = ($684 * 9) | 0;
$686 = HEAP32[$a$3$lcssa$i >> 2] | 0;
$687 = $686 >>> 0 < 10;
if ($687) {
$e$1$i = $685;
break;
} else {
$e$0238$i = $685;
$i$0237$i = 10;
}
while (1) {
$688 = ($i$0237$i * 10) | 0;
$689 = ($e$0238$i + 1) | 0;
$690 = $686 >>> 0 < $688 >>> 0;
if ($690) {
$e$1$i = $689;
break;
} else {
$e$0238$i = $689;
$i$0237$i = $688;
}
}
} else {
$e$1$i = 0;
}
} while (0);
$691 = ($412 | 0) != 102;
$692 = $691 ? $e$1$i : 0;
$693 = ($$p$i - $692) | 0;
$694 = ($412 | 0) == 103;
$695 = ($$p$i | 0) != 0;
$$21$i = $694 & $695;
$$neg151$i = ($$21$i << 31) >> 31;
$696 = ($693 + $$neg151$i) | 0;
$697 = $z$3$lcssa$i;
$698 = ($697 - $681) | 0;
$699 = $698 >> 2;
$700 = ($699 * 9) | 0;
$701 = ($700 + -9) | 0;
$702 = ($696 | 0) < ($701 | 0);
if ($702) {
$703 = ($696 + 9216) | 0;
$704 = (($703 | 0) / 9) & -1;
$$sum$i = ($704 + -1023) | 0;
$705 = ($$31$i + ($$sum$i << 2)) | 0;
$706 = ($703 | 0) % 9 & -1;
$j$0229$i = ($706 + 1) | 0;
$707 = ($j$0229$i | 0) < 9;
if ($707) {
$i$1230$i = 10;
$j$0231$i = $j$0229$i;
while (1) {
$708 = ($i$1230$i * 10) | 0;
$j$0$i = ($j$0231$i + 1) | 0;
$exitcond$i = ($j$0$i | 0) == 9;
if ($exitcond$i) {
$i$1$lcssa$i = $708;
break;
} else {
$i$1230$i = $708;
$j$0231$i = $j$0$i;
}
}
} else {
$i$1$lcssa$i = 10;
}
$709 = HEAP32[$705 >> 2] | 0;
$710 = ($709 >>> 0) % ($i$1$lcssa$i >>> 0) & -1;
$711 = ($710 | 0) == 0;
if ($711) {
$$sum15$i = ($704 + -1022) | 0;
$712 = ($$31$i + ($$sum15$i << 2)) | 0;
$713 = ($712 | 0) == ($z$3$lcssa$i | 0);
if ($713) {
$a$7$i = $a$3$lcssa$i;
$d$3$i = $705;
$e$3$i = $e$1$i;
} else {
label = 233;
}
} else {
label = 233;
}
do {
if ((label | 0) == 233) {
label = 0;
$714 = (($709 >>> 0) / ($i$1$lcssa$i >>> 0)) & -1;
$715 = $714 & 1;
$716 = ($715 | 0) == 0;
$$22$i = $716 ? 9007199254740992.0 : 9007199254740994.0;
$717 = (($i$1$lcssa$i | 0) / 2) & -1;
$718 = $710 >>> 0 < $717 >>> 0;
do {
if ($718) {
$small$0$i = 0.5;
} else {
$719 = ($710 | 0) == ($717 | 0);
if ($719) {
$$sum16$i = ($704 + -1022) | 0;
$720 = ($$31$i + ($$sum16$i << 2)) | 0;
$721 = ($720 | 0) == ($z$3$lcssa$i | 0);
if ($721) {
$small$0$i = 1.0;
break;
}
}
$small$0$i = 1.5;
}
} while (0);
$722 = ($pl$0$i | 0) == 0;
do {
if ($722) {
$round6$1$i = $$22$i;
$small$1$i = $small$0$i;
} else {
$723 = HEAP8[$prefix$0$i >> 0] | 0;
$724 = ($723 << 24) >> 24 == 45;
if (!$724) {
$round6$1$i = $$22$i;
$small$1$i = $small$0$i;
break;
}
$725 = $$22$i * -1.0;
$726 = $small$0$i * -1.0;
$round6$1$i = $725;
$small$1$i = $726;
}
} while (0);
$727 = ($709 - $710) | 0;
HEAP32[$705 >> 2] = $727;
$728 = $round6$1$i + $small$1$i;
$729 = $728 != $round6$1$i;
if (!$729) {
$a$7$i = $a$3$lcssa$i;
$d$3$i = $705;
$e$3$i = $e$1$i;
break;
}
$730 = ($727 + $i$1$lcssa$i) | 0;
HEAP32[$705 >> 2] = $730;
$731 = $730 >>> 0 > 999999999;
if ($731) {
$a$5223$i = $a$3$lcssa$i;
$d$2222$i = $705;
while (1) {
$732 = ($d$2222$i + -4) | 0;
HEAP32[$d$2222$i >> 2] = 0;
$733 = $732 >>> 0 < $a$5223$i >>> 0;
if ($733) {
$734 = ($a$5223$i + -4) | 0;
HEAP32[$734 >> 2] = 0;
$a$6$i = $734;
} else {
$a$6$i = $a$5223$i;
}
$735 = HEAP32[$732 >> 2] | 0;
$736 = ($735 + 1) | 0;
HEAP32[$732 >> 2] = $736;
$737 = $736 >>> 0 > 999999999;
if ($737) {
$a$5223$i = $a$6$i;
$d$2222$i = $732;
} else {
$a$5$lcssa$i = $a$6$i;
$d$2$lcssa$i = $732;
break;
}
}
} else {
$a$5$lcssa$i = $a$3$lcssa$i;
$d$2$lcssa$i = $705;
}
$738 = $a$5$lcssa$i;
$739 = ($681 - $738) | 0;
$740 = $739 >> 2;
$741 = ($740 * 9) | 0;
$742 = HEAP32[$a$5$lcssa$i >> 2] | 0;
$743 = $742 >>> 0 < 10;
if ($743) {
$a$7$i = $a$5$lcssa$i;
$d$3$i = $d$2$lcssa$i;
$e$3$i = $741;
break;
} else {
$e$2218$i = $741;
$i$2217$i = 10;
}
while (1) {
$744 = ($i$2217$i * 10) | 0;
$745 = ($e$2218$i + 1) | 0;
$746 = $742 >>> 0 < $744 >>> 0;
if ($746) {
$a$7$i = $a$5$lcssa$i;
$d$3$i = $d$2$lcssa$i;
$e$3$i = $745;
break;
} else {
$e$2218$i = $745;
$i$2217$i = $744;
}
}
}
} while (0);
$747 = ($d$3$i + 4) | 0;
$748 = $z$3$lcssa$i >>> 0 > $747 >>> 0;
$$z$3$i = $748 ? $747 : $z$3$lcssa$i;
$a$8$ph$i = $a$7$i;
$e$4$ph$i = $e$3$i;
$z$6$ph$i = $$z$3$i;
} else {
$a$8$ph$i = $a$3$lcssa$i;
$e$4$ph$i = $e$1$i;
$z$6$ph$i = $z$3$lcssa$i;
}
$749 = (0 - $e$4$ph$i) | 0;
$z$6$i = $z$6$ph$i;
while (1) {
$750 = $z$6$i >>> 0 > $a$8$ph$i >>> 0;
if (!$750) {
$$lcssa300$i = 0;
break;
}
$751 = ($z$6$i + -4) | 0;
$752 = HEAP32[$751 >> 2] | 0;
$753 = ($752 | 0) == 0;
if ($753) {
$z$6$i = $751;
} else {
$$lcssa300$i = 1;
break;
}
}
do {
if ($694) {
$754 = ($$p$i | 0) == 0;
$755 = $754 & 1;
$$$p$i = ($755 + $$p$i) | 0;
$756 = ($$$p$i | 0) > ($e$4$ph$i | 0);
$757 = ($e$4$ph$i | 0) > -5;
$or$cond4$i = $756 & $757;
if ($or$cond4$i) {
$758 = ($t$0 + -1) | 0;
$$neg152$i = ($$$p$i + -1) | 0;
$759 = ($$neg152$i - $e$4$ph$i) | 0;
$$013$i = $758;
$$210$i = $759;
} else {
$760 = ($t$0 + -2) | 0;
$761 = ($$$p$i + -1) | 0;
$$013$i = $760;
$$210$i = $761;
}
$762 = $fl$1$ & 8;
$763 = ($762 | 0) == 0;
if (!$763) {
$$114$i = $$013$i;
$$311$i = $$210$i;
break;
}
do {
if ($$lcssa300$i) {
$764 = ($z$6$i + -4) | 0;
$765 = HEAP32[$764 >> 2] | 0;
$766 = ($765 | 0) == 0;
if ($766) {
$j$2$i = 9;
break;
}
$767 = ($765 >>> 0) % 10 & -1;
$768 = ($767 | 0) == 0;
if ($768) {
$i$3209$i = 10;
$j$1210$i = 0;
} else {
$j$2$i = 0;
break;
}
while (1) {
$769 = ($i$3209$i * 10) | 0;
$770 = ($j$1210$i + 1) | 0;
$771 = ($765 >>> 0) % ($769 >>> 0) & -1;
$772 = ($771 | 0) == 0;
if ($772) {
$i$3209$i = $769;
$j$1210$i = $770;
} else {
$j$2$i = $770;
break;
}
}
} else {
$j$2$i = 9;
}
} while (0);
$773 = $$013$i | 32;
$774 = ($773 | 0) == 102;
$775 = $z$6$i;
$776 = ($775 - $681) | 0;
$777 = $776 >> 2;
$778 = ($777 * 9) | 0;
$779 = ($778 + -9) | 0;
if ($774) {
$780 = ($779 - $j$2$i) | 0;
$781 = ($780 | 0) < 0;
$$23$i = $781 ? 0 : $780;
$782 = ($$210$i | 0) < ($$23$i | 0);
$$210$$23$i = $782 ? $$210$i : $$23$i;
$$114$i = $$013$i;
$$311$i = $$210$$23$i;
break;
} else {
$783 = ($779 + $e$4$ph$i) | 0;
$784 = ($783 - $j$2$i) | 0;
$785 = ($784 | 0) < 0;
$$25$i = $785 ? 0 : $784;
$786 = ($$210$i | 0) < ($$25$i | 0);
$$210$$25$i = $786 ? $$210$i : $$25$i;
$$114$i = $$013$i;
$$311$i = $$210$$25$i;
break;
}
} else {
$$114$i = $t$0;
$$311$i = $$p$i;
}
} while (0);
$787 = ($$311$i | 0) != 0;
if ($787) {
$791 = 1;
} else {
$788 = $fl$1$ & 8;
$789 = ($788 | 0) != 0;
$791 = $789;
}
$790 = $791 & 1;
$792 = $$114$i | 32;
$793 = ($792 | 0) == 102;
if ($793) {
$794 = ($e$4$ph$i | 0) > 0;
$795 = $794 ? $e$4$ph$i : 0;
$$pn$i = $795;
$estr$2$i = 0;
} else {
$796 = ($e$4$ph$i | 0) < 0;
$797 = $796 ? $749 : $e$4$ph$i;
$798 = ($797 | 0) < 0;
if ($798) {
$799 = ($797 | 0) < 0;
$800 = ($799 << 31) >> 31;
$$05$i79$i = $6;
$801 = $797;
$802 = $800;
while (1) {
$803 = ___uremdi3($801 | 0, $802 | 0, 10, 0) | 0;
$804 = tempRet0;
$805 = $803 | 48;
$806 = $805 & 255;
$807 = ($$05$i79$i + -1) | 0;
HEAP8[$807 >> 0] = $806;
$808 = ___udivdi3($801 | 0, $802 | 0, 10, 0) | 0;
$809 = tempRet0;
$810 = $802 >>> 0 > 9;
$811 = ($802 | 0) == 9;
$812 = $801 >>> 0 > 4294967295;
$813 = $811 & $812;
$814 = $810 | $813;
if ($814) {
$$05$i79$i = $807;
$801 = $808;
$802 = $809;
} else {
break;
}
}
$$0$lcssa$i84$i = $807;
$$01$lcssa$off0$i85$i = $808;
} else {
$$0$lcssa$i84$i = $6;
$$01$lcssa$off0$i85$i = $797;
}
$815 = ($$01$lcssa$off0$i85$i | 0) == 0;
if ($815) {
$estr$1$ph$i = $$0$lcssa$i84$i;
} else {
$$12$i87$i = $$0$lcssa$i84$i;
$y$03$i86$i = $$01$lcssa$off0$i85$i;
while (1) {
$816 = ($y$03$i86$i >>> 0) % 10 & -1;
$817 = $816 | 48;
$818 = $817 & 255;
$819 = ($$12$i87$i + -1) | 0;
HEAP8[$819 >> 0] = $818;
$820 = (($y$03$i86$i >>> 0) / 10) & -1;
$821 = $y$03$i86$i >>> 0 < 10;
if ($821) {
$estr$1$ph$i = $819;
break;
} else {
$$12$i87$i = $819;
$y$03$i86$i = $820;
}
}
}
$822 = $estr$1$ph$i;
$823 = ($8 - $822) | 0;
$824 = ($823 | 0) < 2;
if ($824) {
$estr$1200$i = $estr$1$ph$i;
while (1) {
$825 = ($estr$1200$i + -1) | 0;
HEAP8[$825 >> 0] = 48;
$826 = $825;
$827 = ($8 - $826) | 0;
$828 = ($827 | 0) < 2;
if ($828) {
$estr$1200$i = $825;
} else {
$estr$1$lcssa$i = $825;
break;
}
}
} else {
$estr$1$lcssa$i = $estr$1$ph$i;
}
$829 = $e$4$ph$i >> 31;
$830 = $829 & 2;
$831 = ($830 + 43) | 0;
$832 = $831 & 255;
$833 = ($estr$1$lcssa$i + -1) | 0;
HEAP8[$833 >> 0] = $832;
$834 = $$114$i & 255;
$835 = ($estr$1$lcssa$i + -2) | 0;
HEAP8[$835 >> 0] = $834;
$836 = $835;
$837 = ($8 - $836) | 0;
$$pn$i = $837;
$estr$2$i = $835;
}
$838 = ($pl$0$i + 1) | 0;
$839 = ($838 + $$311$i) | 0;
$l$1$i = ($839 + $790) | 0;
$840 = ($l$1$i + $$pn$i) | 0;
$841 = $fl$1$ & 73728;
$842 = ($841 | 0) == 0;
$843 = ($840 | 0) < ($w$1 | 0);
$or$cond$i93$i = $842 & $843;
if ($or$cond$i93$i) {
$844 = ($w$1 - $840) | 0;
$845 = $844 >>> 0 > 256;
$846 = $845 ? 256 : $844;
_memset($pad$i | 0, 32, $846 | 0) | 0;
$847 = $844 >>> 0 > 255;
if ($847) {
$$01$i94$i = $844;
while (1) {
___fwritex($pad$i, 256, $f) | 0;
$848 = ($$01$i94$i + -256) | 0;
$849 = $848 >>> 0 > 255;
if ($849) {
$$01$i94$i = $848;
} else {
$$0$lcssa$i96$i = $848;
break;
}
}
} else {
$$0$lcssa$i96$i = $844;
}
___fwritex($pad$i, $$0$lcssa$i96$i, $f) | 0;
}
___fwritex($prefix$0$i, $pl$0$i, $f) | 0;
$850 = ($841 | 0) == 65536;
$or$cond$i100$i = $850 & $843;
if ($or$cond$i100$i) {
$851 = ($w$1 - $840) | 0;
$852 = $851 >>> 0 > 256;
$853 = $852 ? 256 : $851;
_memset($pad$i | 0, 48, $853 | 0) | 0;
$854 = $851 >>> 0 > 255;
if ($854) {
$$01$i101$i = $851;
while (1) {
___fwritex($pad$i, 256, $f) | 0;
$855 = ($$01$i101$i + -256) | 0;
$856 = $855 >>> 0 > 255;
if ($856) {
$$01$i101$i = $855;
} else {
$$0$lcssa$i103$i = $855;
break;
}
}
} else {
$$0$lcssa$i103$i = $851;
}
___fwritex($pad$i, $$0$lcssa$i103$i, $f) | 0;
}
do {
if ($793) {
$857 = $a$8$ph$i >>> 0 > $$31$i >>> 0;
$r$0$a$8$i = $857 ? $$31$i : $a$8$ph$i;
$d$4183$i = $r$0$a$8$i;
while (1) {
$858 = HEAP32[$d$4183$i >> 2] | 0;
$859 = ($858 | 0) == 0;
if ($859) {
$$1$lcssa$i112$i = $13;
} else {
$$12$i110$i = $13;
$y$03$i109$i = $858;
while (1) {
$860 = ($y$03$i109$i >>> 0) % 10 & -1;
$861 = $860 | 48;
$862 = $861 & 255;
$863 = ($$12$i110$i + -1) | 0;
HEAP8[$863 >> 0] = $862;
$864 = (($y$03$i109$i >>> 0) / 10) & -1;
$865 = $y$03$i109$i >>> 0 < 10;
if ($865) {
$$1$lcssa$i112$i = $863;
break;
} else {
$$12$i110$i = $863;
$y$03$i109$i = $864;
}
}
}
$866 = ($d$4183$i | 0) == ($r$0$a$8$i | 0);
do {
if ($866) {
$870 = ($$1$lcssa$i112$i | 0) == ($13 | 0);
if (!$870) {
$s7$1$i = $$1$lcssa$i112$i;
break;
}
HEAP8[$15 >> 0] = 48;
$s7$1$i = $15;
} else {
$867 = $$1$lcssa$i112$i >>> 0 > $buf$i >>> 0;
if ($867) {
$s7$0180$i = $$1$lcssa$i112$i;
} else {
$s7$1$i = $$1$lcssa$i112$i;
break;
}
while (1) {
$868 = ($s7$0180$i + -1) | 0;
HEAP8[$868 >> 0] = 48;
$869 = $868 >>> 0 > $buf$i >>> 0;
if ($869) {
$s7$0180$i = $868;
} else {
$s7$1$i = $868;
break;
}
}
}
} while (0);
$871 = $s7$1$i;
$872 = ($14 - $871) | 0;
___fwritex($s7$1$i, $872, $f) | 0;
$873 = ($d$4183$i + 4) | 0;
$874 = $873 >>> 0 > $$31$i >>> 0;
if ($874) {
break;
} else {
$d$4183$i = $873;
}
}
if (!$787) {
$875 = $fl$1$ & 8;
$876 = ($875 | 0) == 0;
if ($876) {
break;
}
}
___fwritex(134296, 1, $f) | 0;
$877 = $873 >>> 0 < $z$6$i >>> 0;
$878 = ($$311$i | 0) > 0;
$or$cond28173$i = $877 & $878;
if ($or$cond28173$i) {
$$412175$i = $$311$i;
$d$5174$i = $873;
while (1) {
$879 = HEAP32[$d$5174$i >> 2] | 0;
$880 = ($879 | 0) == 0;
if ($880) {
$s8$0169$i = $13;
label = 300;
} else {
$$12$i119$i = $13;
$y$03$i118$i = $879;
while (1) {
$881 = ($y$03$i118$i >>> 0) % 10 & -1;
$882 = $881 | 48;
$883 = $882 & 255;
$884 = ($$12$i119$i + -1) | 0;
HEAP8[$884 >> 0] = $883;
$885 = (($y$03$i118$i >>> 0) / 10) & -1;
$886 = $y$03$i118$i >>> 0 < 10;
if ($886) {
break;
} else {
$$12$i119$i = $884;
$y$03$i118$i = $885;
}
}
$887 = $884 >>> 0 > $buf$i >>> 0;
if ($887) {
$s8$0169$i = $884;
label = 300;
} else {
$s8$0$lcssa$i = $884;
}
}
if ((label | 0) == 300) {
while (1) {
label = 0;
$888 = ($s8$0169$i + -1) | 0;
HEAP8[$888 >> 0] = 48;
$889 = $888 >>> 0 > $buf$i >>> 0;
if ($889) {
$s8$0169$i = $888;
label = 300;
} else {
$s8$0$lcssa$i = $888;
break;
}
}
}
$890 = ($$412175$i | 0) > 9;
$891 = $890 ? 9 : $$412175$i;
___fwritex($s8$0$lcssa$i, $891, $f) | 0;
$892 = ($d$5174$i + 4) | 0;
$893 = ($$412175$i + -9) | 0;
$894 = $892 >>> 0 < $z$6$i >>> 0;
$895 = ($893 | 0) > 0;
$or$cond28$i = $894 & $895;
if ($or$cond28$i) {
$$412175$i = $893;
$d$5174$i = $892;
} else {
$$412$lcssa$i = $893;
break;
}
}
} else {
$$412$lcssa$i = $$311$i;
}
$896 = ($$412$lcssa$i | 0) > 0;
if (!$896) {
break;
}
$897 = $$412$lcssa$i >>> 0 > 256;
$898 = $897 ? 256 : $$412$lcssa$i;
_memset($pad$i | 0, 48, $898 | 0) | 0;
$899 = $$412$lcssa$i >>> 0 > 255;
if ($899) {
$$01$i125$i = $$412$lcssa$i;
while (1) {
___fwritex($pad$i, 256, $f) | 0;
$900 = ($$01$i125$i + -256) | 0;
$901 = $900 >>> 0 > 255;
if ($901) {
$$01$i125$i = $900;
} else {
$$0$lcssa$i127$i = $900;
break;
}
}
} else {
$$0$lcssa$i127$i = $$412$lcssa$i;
}
___fwritex($pad$i, $$0$lcssa$i127$i, $f) | 0;
} else {
$902 = ($a$8$ph$i + 4) | 0;
$z$6$$i = $$lcssa300$i ? $z$6$i : $902;
$903 = ($$311$i | 0) > -1;
do {
if ($903) {
$904 = $fl$1$ & 8;
$$not$i = ($904 | 0) != 0;
$$5193$i = $$311$i;
$d$6192$i = $a$8$ph$i;
while (1) {
$905 = HEAP32[$d$6192$i >> 2] | 0;
$906 = ($905 | 0) == 0;
if ($906) {
label = 311;
} else {
$$12$i134$i = $13;
$y$03$i133$i = $905;
while (1) {
$907 = ($y$03$i133$i >>> 0) % 10 & -1;
$908 = $907 | 48;
$909 = $908 & 255;
$910 = ($$12$i134$i + -1) | 0;
HEAP8[$910 >> 0] = $909;
$911 = (($y$03$i133$i >>> 0) / 10) & -1;
$912 = $y$03$i133$i >>> 0 < 10;
if ($912) {
break;
} else {
$$12$i134$i = $910;
$y$03$i133$i = $911;
}
}
$913 = ($910 | 0) == ($13 | 0);
if ($913) {
label = 311;
} else {
$s9$0$i = $910;
}
}
if ((label | 0) == 311) {
label = 0;
HEAP8[$15 >> 0] = 48;
$s9$0$i = $15;
}
$914 = ($d$6192$i | 0) == ($a$8$ph$i | 0);
do {
if ($914) {
$918 = ($s9$0$i + 1) | 0;
___fwritex($s9$0$i, 1, $f) | 0;
$919 = ($$5193$i | 0) > 0;
$brmerge$i = $919 | $$not$i;
if (!$brmerge$i) {
$s9$2$i = $918;
break;
}
___fwritex(134296, 1, $f) | 0;
$s9$2$i = $918;
} else {
$915 = $s9$0$i >>> 0 > $buf$i >>> 0;
if ($915) {
$s9$1188$i = $s9$0$i;
} else {
$s9$2$i = $s9$0$i;
break;
}
while (1) {
$916 = ($s9$1188$i + -1) | 0;
HEAP8[$916 >> 0] = 48;
$917 = $916 >>> 0 > $buf$i >>> 0;
if ($917) {
$s9$1188$i = $916;
} else {
$s9$2$i = $916;
break;
}
}
}
} while (0);
$920 = $s9$2$i;
$921 = ($14 - $920) | 0;
$922 = ($921 | 0) < ($$5193$i | 0);
$$$5$i = $922 ? $921 : $$5193$i;
___fwritex($s9$2$i, $$$5$i, $f) | 0;
$923 = ($$5193$i - $921) | 0;
$924 = ($d$6192$i + 4) | 0;
$925 = $924 >>> 0 < $z$6$$i >>> 0;
$926 = ($923 | 0) > -1;
$or$cond29$i = $925 & $926;
if ($or$cond29$i) {
$$5193$i = $923;
$d$6192$i = $924;
} else {
break;
}
}
$927 = ($923 | 0) > 0;
if (!$927) {
break;
}
$928 = $923 >>> 0 > 256;
$929 = $928 ? 256 : $923;
_memset($pad$i | 0, 48, $929 | 0) | 0;
$930 = $923 >>> 0 > 255;
if ($930) {
$$01$i140$i = $923;
while (1) {
___fwritex($pad$i, 256, $f) | 0;
$931 = ($$01$i140$i + -256) | 0;
$932 = $931 >>> 0 > 255;
if ($932) {
$$01$i140$i = $931;
} else {
$$0$lcssa$i142$i = $931;
break;
}
}
} else {
$$0$lcssa$i142$i = $923;
}
___fwritex($pad$i, $$0$lcssa$i142$i, $f) | 0;
}
} while (0);
$933 = $estr$2$i;
$934 = ($8 - $933) | 0;
___fwritex($estr$2$i, $934, $f) | 0;
}
} while (0);
$935 = ($841 | 0) == 8192;
$or$cond$i$i = $935 & $843;
if ($or$cond$i$i) {
$936 = ($w$1 - $840) | 0;
$937 = $936 >>> 0 > 256;
$938 = $937 ? 256 : $936;
_memset($pad$i | 0, 32, $938 | 0) | 0;
$939 = $936 >>> 0 > 255;
if ($939) {
$$01$i$i = $936;
while (1) {
___fwritex($pad$i, 256, $f) | 0;
$940 = ($$01$i$i + -256) | 0;
$941 = $940 >>> 0 > 255;
if ($941) {
$$01$i$i = $940;
} else {
$$0$lcssa$i$i = $940;
break;
}
}
} else {
$$0$lcssa$i$i = $936;
}
___fwritex($pad$i, $$0$lcssa$i$i, $f) | 0;
}
$w$30$i = $843 ? $w$1 : $840;
$1045 = $228;
$1046 = $207;
$22 = $139;
$cnt$0 = $cnt$1;
$l$0 = $w$30$i;
$l10n$0 = $l10n$3;
continue L1;
break;
}
case 115: {
$324 = ($207 | 0) == (0 | 0);
$$17 = $324 ? 134216 : $207;
$a$1 = $$17;
label = 99;
break;
}
case 105:
case 100: {
$267 = $207;
$268 = ($228 | 0) < 0;
if ($268) {
$269 = _i64Subtract(0, 0, $267 | 0, $228 | 0) | 0;
$270 = tempRet0;
$271 = $269;
$276 = $271;
$278 = $270;
$pl$0 = 1;
$prefix$0 = 134200;
label = 89;
break L92;
}
$272 = $fl$1$ & 2048;
$273 = ($272 | 0) == 0;
if ($273) {
$274 = $fl$1$ & 1;
$275 = ($274 | 0) == 0;
$$15 = $275 ? 134200 : (134200 + 2) | 0;
$276 = $207;
$278 = $228;
$pl$0 = $274;
$prefix$0 = $$15;
label = 89;
} else {
$276 = $207;
$278 = $228;
$pl$0 = 1;
$prefix$0 = (134200 + 1) | 0;
label = 89;
}
break;
}
case 110: {
switch ($st$0 | 0) {
case 7: {
$216 = ($cnt$1 | 0) < 0;
$217 = ($216 << 31) >> 31;
$218 = $207;
$219 = $218;
HEAP32[$219 >> 2] = $cnt$1;
$220 = ($218 + 4) | 0;
$221 = $220;
HEAP32[$221 >> 2] = $217;
$1045 = $228;
$1046 = $207;
$22 = $139;
$cnt$0 = $cnt$1;
$l$0 = $36;
$l10n$0 = $l10n$3;
continue L1;
break;
}
case 2: {
$208 = ($cnt$1 | 0) < 0;
$209 = ($208 << 31) >> 31;
$210 = $207;
$211 = $210;
HEAP32[$211 >> 2] = $cnt$1;
$212 = ($210 + 4) | 0;
$213 = $212;
HEAP32[$213 >> 2] = $209;
$1045 = $228;
$1046 = $207;
$22 = $139;
$cnt$0 = $cnt$1;
$l$0 = $36;
$l10n$0 = $l10n$3;
continue L1;
break;
}
case 3: {
$214 = $cnt$1 & 65535;
HEAP16[$207 >> 1] = $214;
$1045 = $228;
$1046 = $207;
$22 = $139;
$cnt$0 = $cnt$1;
$l$0 = $36;
$l10n$0 = $l10n$3;
continue L1;
break;
}
case 4: {
$215 = $cnt$1 & 255;
HEAP8[$207 >> 0] = $215;
$1045 = $228;
$1046 = $207;
$22 = $139;
$cnt$0 = $cnt$1;
$l$0 = $36;
$l10n$0 = $l10n$3;
continue L1;
break;
}
case 6: {
HEAP32[$207 >> 2] = $cnt$1;
$1045 = $228;
$1046 = $207;
$22 = $139;
$cnt$0 = $cnt$1;
$l$0 = $36;
$l10n$0 = $l10n$3;
continue L1;
break;
}
case 0: {
HEAP32[$207 >> 2] = $cnt$1;
$1045 = $228;
$1046 = $207;
$22 = $139;
$cnt$0 = $cnt$1;
$l$0 = $36;
$l10n$0 = $l10n$3;
continue L1;
break;
}
case 1: {
HEAP32[$207 >> 2] = $cnt$1;
$1045 = $228;
$1046 = $207;
$22 = $139;
$cnt$0 = $cnt$1;
$l$0 = $36;
$l10n$0 = $l10n$3;
continue L1;
break;
}
default: {
$1045 = $228;
$1046 = $207;
$22 = $139;
$cnt$0 = $cnt$1;
$l$0 = $36;
$l10n$0 = $l10n$3;
continue L1;
}
}
break;
}
case 112: {
$222 = $p$0 >>> 0 > 8;
$223 = $222 ? $p$0 : 8;
$224 = $fl$1$ | 8;
$fl$3 = $224;
$p$1 = $223;
$t$1 = 120;
label = 77;
break;
}
case 99: {
$319 = $207;
$320 = $319 & 255;
HEAP8[$4 >> 0] = $320;
$1053 = $228;
$1054 = $207;
$a$2 = $4;
$fl$6 = $206;
$p$5 = 1;
$pl$2 = 0;
$prefix$2 = 134200;
$z$2 = $2;
break;
}
case 67: {
$331 = $207;
HEAP32[$wc >> 2] = $331;
HEAP32[$5 >> 2] = 0;
$1055 = $wc;
$1056 = $wc;
$p$4296 = -1;
label = 104;
break;
}
case 83: {
$332 = ($p$0 | 0) == 0;
if ($332) {
$1057 = $207;
$1058 = $207;
$i$0166 = 0;
label = 110;
} else {
$1055 = $207;
$1056 = $207;
$p$4296 = $p$0;
label = 104;
}
break;
}
case 88:
case 120: {
$fl$3 = $fl$1$;
$p$1 = $p$0;
$t$1 = $t$0;
label = 77;
break;
}
case 111: {
$249 = $207;
$250 = ($249 | 0) == 0;
$251 = ($228 | 0) == 0;
$252 = $250 & $251;
if ($252) {
$$0$lcssa$i43 = $2;
} else {
$$03$i40 = $2;
$254 = $249;
$258 = $228;
while (1) {
$253 = $254 & 7;
$255 = $253 | 48;
$256 = $255 & 255;
$257 = ($$03$i40 + -1) | 0;
HEAP8[$257 >> 0] = $256;
$259 = _bitshift64Lshr($254 | 0, $258 | 0, 3) | 0;
$260 = tempRet0;
$261 = ($259 | 0) == 0;
$262 = ($260 | 0) == 0;
$263 = $261 & $262;
if ($263) {
$$0$lcssa$i43 = $257;
break;
} else {
$$03$i40 = $257;
$254 = $259;
$258 = $260;
}
}
}
$264 = $fl$1$ & 8;
$265 = ($264 | 0) == 0;
if ($265) {
$307 = $207;
$310 = $228;
$a$0 = $$0$lcssa$i43;
$fl$4 = $fl$1$;
$p$2 = $p$0;
$pl$1 = 0;
$prefix$1 = 134200;
label = 94;
} else {
$$13 = $252 ? 134200 : (134200 + 5) | 0;
$266 = $252 & 1;
$$14 = $266 ^ 1;
$307 = $207;
$310 = $228;
$a$0 = $$0$lcssa$i43;
$fl$4 = $fl$1$;
$p$2 = $p$0;
$pl$1 = $$14;
$prefix$1 = $$13;
label = 94;
}
break;
}
case 109: {
$321 = ___errno_location() | 0;
$322 = HEAP32[$321 >> 2] | 0;
$323 = _strerror($322 | 0) | 0;
$a$1 = $323;
label = 99;
break;
}
default: {
$1053 = $228;
$1054 = $207;
$a$2 = $22;
$fl$6 = $fl$1$;
$p$5 = $p$0;
$pl$2 = 0;
$prefix$2 = 134200;
$z$2 = $2;
}
}
} while (0);
L445: do {
if ((label | 0) == 77) {
label = 0;
$225 = $207;
$226 = $t$1 & 32;
$227 = ($225 | 0) == 0;
$229 = ($228 | 0) == 0;
$230 = $227 & $229;
if ($230) {
$307 = $207;
$310 = $228;
$a$0 = $2;
$fl$4 = $fl$3;
$p$2 = $p$1;
$pl$1 = 0;
$prefix$1 = 134200;
label = 94;
} else {
$$012$i = $2;
$232 = $225;
$239 = $228;
while (1) {
$231 = $232 & 15;
$233 = (134280 + $231) | 0;
$234 = HEAP8[$233 >> 0] | 0;
$235 = $234 & 255;
$236 = $235 | $226;
$237 = $236 & 255;
$238 = ($$012$i + -1) | 0;
HEAP8[$238 >> 0] = $237;
$240 = _bitshift64Lshr($232 | 0, $239 | 0, 4) | 0;
$241 = tempRet0;
$242 = ($240 | 0) == 0;
$243 = ($241 | 0) == 0;
$244 = $242 & $243;
if ($244) {
break;
} else {
$$012$i = $238;
$232 = $240;
$239 = $241;
}
}
$245 = $fl$3 & 8;
$246 = ($245 | 0) == 0;
if ($246) {
$307 = $207;
$310 = $228;
$a$0 = $238;
$fl$4 = $fl$3;
$p$2 = $p$1;
$pl$1 = 0;
$prefix$1 = 134200;
label = 94;
} else {
$247 = $t$1 >> 4;
$248 = (134200 + $247) | 0;
$307 = $207;
$310 = $228;
$a$0 = $238;
$fl$4 = $fl$3;
$p$2 = $p$1;
$pl$1 = 2;
$prefix$1 = $248;
label = 94;
}
}
} else if ((label | 0) == 89) {
label = 0;
$277 = $276;
$279 = $278 >>> 0 > 0;
$280 = ($278 | 0) == 0;
$281 = $277 >>> 0 > 4294967295;
$282 = $280 & $281;
$283 = $279 | $282;
if ($283) {
$$05$i = $2;
$284 = $277;
$285 = $278;
while (1) {
$286 = ___uremdi3($284 | 0, $285 | 0, 10, 0) | 0;
$287 = tempRet0;
$288 = $286 | 48;
$289 = $288 & 255;
$290 = ($$05$i + -1) | 0;
HEAP8[$290 >> 0] = $289;
$291 = ___udivdi3($284 | 0, $285 | 0, 10, 0) | 0;
$292 = tempRet0;
$293 = $285 >>> 0 > 9;
$294 = ($285 | 0) == 9;
$295 = $284 >>> 0 > 4294967295;
$296 = $294 & $295;
$297 = $293 | $296;
if ($297) {
$$05$i = $290;
$284 = $291;
$285 = $292;
} else {
break;
}
}
$$0$lcssa$i45 = $290;
$$01$lcssa$off0$i = $291;
} else {
$$0$lcssa$i45 = $2;
$$01$lcssa$off0$i = $277;
}
$298 = ($$01$lcssa$off0$i | 0) == 0;
if ($298) {
$307 = $276;
$310 = $278;
$a$0 = $$0$lcssa$i45;
$fl$4 = $fl$1$;
$p$2 = $p$0;
$pl$1 = $pl$0;
$prefix$1 = $prefix$0;
label = 94;
} else {
$$12$i = $$0$lcssa$i45;
$y$03$i = $$01$lcssa$off0$i;
while (1) {
$299 = ($y$03$i >>> 0) % 10 & -1;
$300 = $299 | 48;
$301 = $300 & 255;
$302 = ($$12$i + -1) | 0;
HEAP8[$302 >> 0] = $301;
$303 = (($y$03$i >>> 0) / 10) & -1;
$304 = $y$03$i >>> 0 < 10;
if ($304) {
$307 = $276;
$310 = $278;
$a$0 = $302;
$fl$4 = $fl$1$;
$p$2 = $p$0;
$pl$1 = $pl$0;
$prefix$1 = $prefix$0;
label = 94;
break;
} else {
$$12$i = $302;
$y$03$i = $303;
}
}
}
} else if ((label | 0) == 99) {
label = 0;
$325 = _memchr($a$1, 0, $p$0) | 0;
$326 = ($325 | 0) == (0 | 0);
if ($326) {
$327 = ($a$1 + $p$0) | 0;
$1053 = $228;
$1054 = $207;
$a$2 = $a$1;
$fl$6 = $206;
$p$5 = $p$0;
$pl$2 = 0;
$prefix$2 = 134200;
$z$2 = $327;
break;
} else {
$328 = $325;
$329 = $a$1;
$330 = ($328 - $329) | 0;
$1053 = $228;
$1054 = $207;
$a$2 = $a$1;
$fl$6 = $206;
$p$5 = $330;
$pl$2 = 0;
$prefix$2 = 134200;
$z$2 = $325;
break;
}
} else if ((label | 0) == 104) {
label = 0;
$i$0168 = 0;
$l$1167 = 0;
$ws$0169 = $1055;
while (1) {
$336 = HEAP32[$ws$0169 >> 2] | 0;
$337 = ($336 | 0) == 0;
if ($337) {
$i$0$lcssa = $i$0168;
$l$1$lcssa = $l$1167;
break;
}
$338 = _wctomb($mb, $336) | 0;
$339 = ($338 | 0) > -1;
if (!$339) {
$$0 = -1;
label = 362;
break L1;
}
$340 = ($p$4296 - $i$0168) | 0;
$341 = $338 >>> 0 > $340 >>> 0;
$334 = ($338 + $i$0168) | 0;
if ($341) {
$1057 = $1055;
$1058 = $1056;
$i$0166 = $i$0168;
label = 110;
break L445;
}
$333 = ($ws$0169 + 4) | 0;
$335 = $334 >>> 0 < $p$4296 >>> 0;
if ($335) {
$i$0168 = $334;
$l$1167 = $338;
$ws$0169 = $333;
} else {
$i$0$lcssa = $334;
$l$1$lcssa = $338;
break;
}
}
$342 = ($l$1$lcssa | 0) < 0;
if ($342) {
$$0 = -1;
label = 362;
break L1;
} else {
$1057 = $1055;
$1058 = $1056;
$i$0166 = $i$0$lcssa;
label = 110;
}
}
} while (0);
if ((label | 0) == 94) {
label = 0;
$305 = ($p$2 | 0) > -1;
$306 = $fl$4 & -65537;
$$fl$4 = $305 ? $306 : $fl$4;
$308 = $307;
$309 = ($308 | 0) == 0;
$311 = ($310 | 0) == 0;
$312 = $309 & $311;
$313 = ($p$2 | 0) == 0;
$or$cond = $312 & $313;
if ($or$cond) {
$1053 = $310;
$1054 = $307;
$a$2 = $2;
$fl$6 = $$fl$4;
$p$5 = 0;
$pl$2 = $pl$1;
$prefix$2 = $prefix$1;
$z$2 = $2;
} else {
$314 = $a$0;
$315 = ($3 - $314) | 0;
$316 = $312 & 1;
$317 = ($316 + $315) | 0;
$318 = ($p$2 | 0) > ($317 | 0);
$p$2$ = $318 ? $p$2 : $317;
$1053 = $310;
$1054 = $307;
$a$2 = $a$0;
$fl$6 = $$fl$4;
$p$5 = $p$2$;
$pl$2 = $pl$1;
$prefix$2 = $prefix$1;
$z$2 = $2;
}
} else if ((label | 0) == 110) {
label = 0;
$343 = $fl$1$ & 73728;
$344 = ($343 | 0) == 0;
$345 = ($i$0166 | 0) < ($w$1 | 0);
$or$cond$i56 = $344 & $345;
if ($or$cond$i56) {
$346 = ($w$1 - $i$0166) | 0;
$347 = $346 >>> 0 > 256;
$348 = $347 ? 256 : $346;
_memset($pad$i | 0, 32, $348 | 0) | 0;
$349 = $346 >>> 0 > 255;
if ($349) {
$$01$i57 = $346;
while (1) {
___fwritex($pad$i, 256, $f) | 0;
$350 = ($$01$i57 + -256) | 0;
$351 = $350 >>> 0 > 255;
if ($351) {
$$01$i57 = $350;
} else {
$$0$lcssa$i59 = $350;
break;
}
}
} else {
$$0$lcssa$i59 = $346;
}
___fwritex($pad$i, $$0$lcssa$i59, $f) | 0;
}
$352 = ($i$0166 | 0) == 0;
L481: do {
if (!$352) {
$i$1174 = 0;
$ws$1175 = $1057;
while (1) {
$353 = HEAP32[$ws$1175 >> 2] | 0;
$354 = ($353 | 0) == 0;
if ($354) {
break L481;
}
$355 = _wctomb($mb, $353) | 0;
$356 = ($355 + $i$1174) | 0;
$357 = ($356 | 0) > ($i$0166 | 0);
if ($357) {
break L481;
}
$358 = ($ws$1175 + 4) | 0;
___fwritex($mb, $355, $f) | 0;
$359 = $356 >>> 0 < $i$0166 >>> 0;
if ($359) {
$i$1174 = $356;
$ws$1175 = $358;
} else {
break;
}
}
}
} while (0);
$360 = ($343 | 0) == 8192;
$or$cond$i63 = $360 & $345;
if ($or$cond$i63) {
$361 = ($w$1 - $i$0166) | 0;
$362 = $361 >>> 0 > 256;
$363 = $362 ? 256 : $361;
_memset($pad$i | 0, 32, $363 | 0) | 0;
$364 = $361 >>> 0 > 255;
if ($364) {
$$01$i64 = $361;
while (1) {
___fwritex($pad$i, 256, $f) | 0;
$365 = ($$01$i64 + -256) | 0;
$366 = $365 >>> 0 > 255;
if ($366) {
$$01$i64 = $365;
} else {
$$0$lcssa$i66 = $365;
break;
}
}
} else {
$$0$lcssa$i66 = $361;
}
___fwritex($pad$i, $$0$lcssa$i66, $f) | 0;
}
$367 = $345 ? $w$1 : $i$0166;
$1045 = $228;
$1046 = $1058;
$22 = $139;
$cnt$0 = $cnt$1;
$l$0 = $367;
$l10n$0 = $l10n$3;
continue;
}
$942 = $z$2;
$943 = $a$2;
$944 = ($942 - $943) | 0;
$945 = ($p$5 | 0) < ($944 | 0);
$$p$5 = $945 ? $944 : $p$5;
$946 = ($pl$2 + $$p$5) | 0;
$947 = ($w$1 | 0) < ($946 | 0);
$w$2 = $947 ? $946 : $w$1;
$948 = $fl$6 & 73728;
$949 = ($948 | 0) == 0;
$950 = ($946 | 0) < ($w$2 | 0);
$or$cond$i73 = $949 & $950;
if ($or$cond$i73) {
$951 = ($w$2 - $946) | 0;
$952 = $951 >>> 0 > 256;
$953 = $952 ? 256 : $951;
_memset($pad$i | 0, 32, $953 | 0) | 0;
$954 = $951 >>> 0 > 255;
if ($954) {
$$01$i74 = $951;
while (1) {
___fwritex($pad$i, 256, $f) | 0;
$955 = ($$01$i74 + -256) | 0;
$956 = $955 >>> 0 > 255;
if ($956) {
$$01$i74 = $955;
} else {
$$0$lcssa$i76 = $955;
break;
}
}
} else {
$$0$lcssa$i76 = $951;
}
___fwritex($pad$i, $$0$lcssa$i76, $f) | 0;
}
___fwritex($prefix$2, $pl$2, $f) | 0;
$957 = ($948 | 0) == 65536;
$or$cond$i49 = $957 & $950;
if ($or$cond$i49) {
$958 = ($w$2 - $946) | 0;
$959 = $958 >>> 0 > 256;
$960 = $959 ? 256 : $958;
_memset($pad$i | 0, 48, $960 | 0) | 0;
$961 = $958 >>> 0 > 255;
if ($961) {
$$01$i50 = $958;
while (1) {
___fwritex($pad$i, 256, $f) | 0;
$962 = ($$01$i50 + -256) | 0;
$963 = $962 >>> 0 > 255;
if ($963) {
$$01$i50 = $962;
} else {
$$0$lcssa$i52 = $962;
break;
}
}
} else {
$$0$lcssa$i52 = $958;
}
___fwritex($pad$i, $$0$lcssa$i52, $f) | 0;
}
$964 = ($944 | 0) < ($$p$5 | 0);
if ($964) {
$965 = ($$p$5 - $944) | 0;
$966 = $965 >>> 0 > 256;
$967 = $966 ? 256 : $965;
_memset($pad$i | 0, 48, $967 | 0) | 0;
$968 = $965 >>> 0 > 255;
if ($968) {
$$01$i35 = $965;
while (1) {
___fwritex($pad$i, 256, $f) | 0;
$969 = ($$01$i35 + -256) | 0;
$970 = $969 >>> 0 > 255;
if ($970) {
$$01$i35 = $969;
} else {
$$0$lcssa$i37 = $969;
break;
}
}
} else {
$$0$lcssa$i37 = $965;
}
___fwritex($pad$i, $$0$lcssa$i37, $f) | 0;
}
___fwritex($a$2, $944, $f) | 0;
$971 = ($948 | 0) == 8192;
$or$cond$i = $971 & $950;
if (!$or$cond$i) {
$1045 = $1053;
$1046 = $1054;
$22 = $139;
$cnt$0 = $cnt$1;
$l$0 = $w$2;
$l10n$0 = $l10n$3;
continue;
}
$972 = ($w$2 - $946) | 0;
$973 = $972 >>> 0 > 256;
$974 = $973 ? 256 : $972;
_memset($pad$i | 0, 32, $974 | 0) | 0;
$975 = $972 >>> 0 > 255;
if ($975) {
$$01$i = $972;
while (1) {
___fwritex($pad$i, 256, $f) | 0;
$976 = ($$01$i + -256) | 0;
$977 = $976 >>> 0 > 255;
if ($977) {
$$01$i = $976;
} else {
$$0$lcssa$i = $976;
break;
}
}
} else {
$$0$lcssa$i = $972;
}
___fwritex($pad$i, $$0$lcssa$i, $f) | 0;
$1045 = $1053;
$1046 = $1054;
$22 = $139;
$cnt$0 = $cnt$1;
$l$0 = $w$2;
$l10n$0 = $l10n$3;
}
if ((label | 0) == 344) {
$978 = ($f | 0) == (0 | 0);
if (!$978) {
$$0 = $cnt$1;
STACKTOP = sp;
return $$0 | 0;
}
$979 = ($l10n$0 | 0) == 0;
if ($979) {
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
} else {
$i$289 = 1;
}
while (1) {
$980 = ($nl_type + ($i$289 << 2)) | 0;
$981 = HEAP32[$980 >> 2] | 0;
$982 = ($981 | 0) == 0;
if ($982) {
$i$388 = $i$289;
break;
}
$983 = ($nl_arg + ($i$289 << 3)) | 0;
$984 = $981 >>> 0 > 20;
L540: do {
if (!$984) {
do {
switch ($981 | 0) {
case 9: {
$arglist_current35 = HEAP32[$ap >> 2] | 0;
$985 = HEAP32[$arglist_current35 >> 2] | 0;
$arglist_next36 = ($arglist_current35 + 4) | 0;
HEAP32[$ap >> 2] = $arglist_next36;
HEAP32[$983 >> 2] = $985;
break L540;
break;
}
case 10: {
$arglist_current38 = HEAP32[$ap >> 2] | 0;
$986 = HEAP32[$arglist_current38 >> 2] | 0;
$arglist_next39 = ($arglist_current38 + 4) | 0;
HEAP32[$ap >> 2] = $arglist_next39;
$987 = ($986 | 0) < 0;
$988 = ($987 << 31) >> 31;
$989 = $983;
$990 = $989;
HEAP32[$990 >> 2] = $986;
$991 = ($989 + 4) | 0;
$992 = $991;
HEAP32[$992 >> 2] = $988;
break L540;
break;
}
case 11: {
$arglist_current41 = HEAP32[$ap >> 2] | 0;
$993 = HEAP32[$arglist_current41 >> 2] | 0;
$arglist_next42 = ($arglist_current41 + 4) | 0;
HEAP32[$ap >> 2] = $arglist_next42;
$994 = $983;
$995 = $994;
HEAP32[$995 >> 2] = $993;
$996 = ($994 + 4) | 0;
$997 = $996;
HEAP32[$997 >> 2] = 0;
break L540;
break;
}
case 12: {
$arglist_current44 = HEAP32[$ap >> 2] | 0;
$998 = $arglist_current44;
$999 = $998;
$1000 = HEAP32[$999 >> 2] | 0;
$1001 = ($998 + 4) | 0;
$1002 = $1001;
$1003 = HEAP32[$1002 >> 2] | 0;
$arglist_next45 = ($arglist_current44 + 8) | 0;
HEAP32[$ap >> 2] = $arglist_next45;
$1004 = $983;
$1005 = $1004;
HEAP32[$1005 >> 2] = $1000;
$1006 = ($1004 + 4) | 0;
$1007 = $1006;
HEAP32[$1007 >> 2] = $1003;
break L540;
break;
}
case 13: {
$arglist_current47 = HEAP32[$ap >> 2] | 0;
$1008 = HEAP32[$arglist_current47 >> 2] | 0;
$arglist_next48 = ($arglist_current47 + 4) | 0;
HEAP32[$ap >> 2] = $arglist_next48;
$1009 = $1008 & 65535;
$1010 = ($1009 << 16) >> 16;
$1011 = ($1010 | 0) < 0;
$1012 = ($1011 << 31) >> 31;
$1013 = $983;
$1014 = $1013;
HEAP32[$1014 >> 2] = $1010;
$1015 = ($1013 + 4) | 0;
$1016 = $1015;
HEAP32[$1016 >> 2] = $1012;
break L540;
break;
}
case 14: {
$arglist_current50 = HEAP32[$ap >> 2] | 0;
$1017 = HEAP32[$arglist_current50 >> 2] | 0;
$arglist_next51 = ($arglist_current50 + 4) | 0;
HEAP32[$ap >> 2] = $arglist_next51;
$$mask1$i = $1017 & 65535;
$1018 = $983;
$1019 = $1018;
HEAP32[$1019 >> 2] = $$mask1$i;
$1020 = ($1018 + 4) | 0;
$1021 = $1020;
HEAP32[$1021 >> 2] = 0;
break L540;
break;
}
case 15: {
$arglist_current53 = HEAP32[$ap >> 2] | 0;
$1022 = HEAP32[$arglist_current53 >> 2] | 0;
$arglist_next54 = ($arglist_current53 + 4) | 0;
HEAP32[$ap >> 2] = $arglist_next54;
$1023 = $1022 & 255;
$1024 = ($1023 << 24) >> 24;
$1025 = ($1024 | 0) < 0;
$1026 = ($1025 << 31) >> 31;
$1027 = $983;
$1028 = $1027;
HEAP32[$1028 >> 2] = $1024;
$1029 = ($1027 + 4) | 0;
$1030 = $1029;
HEAP32[$1030 >> 2] = $1026;
break L540;
break;
}
case 16: {
$arglist_current56 = HEAP32[$ap >> 2] | 0;
$1031 = HEAP32[$arglist_current56 >> 2] | 0;
$arglist_next57 = ($arglist_current56 + 4) | 0;
HEAP32[$ap >> 2] = $arglist_next57;
$$mask$i = $1031 & 255;
$1032 = $983;
$1033 = $1032;
HEAP32[$1033 >> 2] = $$mask$i;
$1034 = ($1032 + 4) | 0;
$1035 = $1034;
HEAP32[$1035 >> 2] = 0;
break L540;
break;
}
case 17: {
$arglist_current59 = HEAP32[$ap >> 2] | 0;
HEAP32[tempDoublePtr >> 2] = HEAP32[$arglist_current59 >> 2];
HEAP32[(tempDoublePtr + 4) >> 2] = HEAP32[($arglist_current59 + 4) >> 2];
$1036 = +HEAPF64[tempDoublePtr >> 3];
$arglist_next60 = ($arglist_current59 + 8) | 0;
HEAP32[$ap >> 2] = $arglist_next60;
HEAPF64[$983 >> 3] = $1036;
break L540;
break;
}
case 18: {
$arglist_current62 = HEAP32[$ap >> 2] | 0;
HEAP32[tempDoublePtr >> 2] = HEAP32[$arglist_current62 >> 2];
HEAP32[(tempDoublePtr + 4) >> 2] = HEAP32[($arglist_current62 + 4) >> 2];
$1037 = +HEAPF64[tempDoublePtr >> 3];
$arglist_next63 = ($arglist_current62 + 8) | 0;
HEAP32[$ap >> 2] = $arglist_next63;
HEAPF64[$983 >> 3] = $1037;
break L540;
break;
}
default: {
break L540;
}
}
} while (0);
}
} while (0);
$1038 = ($i$289 + 1) | 0;
$1039 = ($1038 | 0) < 10;
if ($1039) {
$i$289 = $1038;
} else {
$$0 = 1;
label = 362;
break;
}
}
if ((label | 0) == 362) {
STACKTOP = sp;
return $$0 | 0;
}
while (1) {
$1042 = ($nl_type + ($i$388 << 2)) | 0;
$1043 = HEAP32[$1042 >> 2] | 0;
$1044 = ($1043 | 0) == 0;
$1040 = ($i$388 + 1) | 0;
if (!$1044) {
$$0 = -1;
label = 362;
break;
}
$1041 = ($1040 | 0) < 10;
if ($1041) {
$i$388 = $1040;
} else {
$$0 = 1;
label = 362;
break;
}
}
if ((label | 0) == 362) {
STACKTOP = sp;
return $$0 | 0;
}
} else if ((label | 0) == 362) {
STACKTOP = sp;
return $$0 | 0;
}
return 0 | 0;
}
function _vsnprintf($s, $n, $fmt, $ap) {
$s = $s | 0;
$n = $n | 0;
$fmt = $fmt | 0;
$ap = $ap | 0;
var $$$02 = 0,
$$0 = 0,
$$01 = 0,
$$02 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0;
var $6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$b = 0,
$f = 0,
dest = 0,
label = 0,
sp = 0,
src = 0,
stop = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 128) | 0;
$b = (sp + 112) | 0;
$f = sp;
dest = ($f + 0) | 0;
src = (134304 + 0) | 0;
stop = (dest + 112) | 0;
do {
HEAP32[dest >> 2] = HEAP32[src >> 2] | 0;
dest = (dest + 4) | 0;
src = (src + 4) | 0;
} while ((dest | 0) < (stop | 0));
$0 = ($n + -1) | 0;
$1 = $0 >>> 0 > 2147483646;
if ($1) {
$2 = ($n | 0) == 0;
if ($2) {
$$01 = $b;
$$02 = 1;
} else {
$3 = ___errno_location() | 0;
HEAP32[$3 >> 2] = 75;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
} else {
$$01 = $s;
$$02 = $n;
}
$4 = $$01;
$5 = (-2 - $4) | 0;
$6 = $$02 >>> 0 > $5 >>> 0;
$$$02 = $6 ? $5 : $$02;
$7 = ($f + 48) | 0;
HEAP32[$7 >> 2] = $$$02;
$8 = ($f + 20) | 0;
HEAP32[$8 >> 2] = $$01;
$9 = ($f + 44) | 0;
HEAP32[$9 >> 2] = $$01;
$10 = ($$01 + $$$02) | 0;
$11 = ($f + 16) | 0;
HEAP32[$11 >> 2] = $10;
$12 = ($f + 28) | 0;
HEAP32[$12 >> 2] = $10;
$13 = _MUSL_vfprintf($f, $fmt, $ap) | 0;
$14 = ($$$02 | 0) == 0;
if ($14) {
$$0 = $13;
STACKTOP = sp;
return $$0 | 0;
}
$15 = HEAP32[$8 >> 2] | 0;
$16 = HEAP32[$11 >> 2] | 0;
$17 = ($15 | 0) == ($16 | 0);
$18 = ($17 << 31) >> 31;
$19 = ($15 + $18) | 0;
HEAP8[$19 >> 0] = 0;
$$0 = $13;
STACKTOP = sp;
return $$0 | 0;
}
function _sn_write($f, $s, $l) {
$f = $f | 0;
$s = $s | 0;
$l = $l | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$l$ = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($f + 16) | 0;
$1 = HEAP32[$0 >> 2] | 0;
$2 = ($f + 20) | 0;
$3 = HEAP32[$2 >> 2] | 0;
$4 = $1;
$5 = $3;
$6 = ($4 - $5) | 0;
$7 = $6 >>> 0 > $l >>> 0;
$l$ = $7 ? $l : $6;
_memcpy($3 | 0, $s | 0, $l$ | 0) | 0;
$8 = HEAP32[$2 >> 2] | 0;
$9 = ($8 + $l$) | 0;
HEAP32[$2 >> 2] = $9;
STACKTOP = sp;
return $l | 0;
}
function _vsprintf($s, $fmt, $ap) {
$s = $s | 0;
$fmt = $fmt | 0;
$ap = $ap | 0;
var $0 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = _vsnprintf($s, 2147483647, $fmt, $ap) | 0;
STACKTOP = sp;
return $0 | 0;
}
function _memchr($src, $c, $n) {
$src = $src | 0;
$c = $c | 0;
$n = $n | 0;
var $$0$lcssa = 0,
$$0$lcssa34 = 0,
$$013 = 0,
$$1$lcssa = 0,
$$17 = 0,
$$24 = 0,
$$3 = 0,
$$lcssa = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0;
var $2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$4 = 0;
var $5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$or$cond = 0,
$or$cond12 = 0,
$s$0$lcssa = 0,
$s$0$lcssa33 = 0,
$s$014 = 0,
$s$15 = 0,
$s$2 = 0,
$w$0$lcssa = 0,
$w$08 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = $c & 255;
$1 = $src;
$2 = $1 & 3;
$3 = ($2 | 0) == 0;
$4 = ($n | 0) == 0;
$or$cond12 = $3 | $4;
L1: do {
if ($or$cond12) {
$$0$lcssa = $n;
$$lcssa = $4;
$s$0$lcssa = $src;
label = 5;
} else {
$5 = $c & 255;
$$013 = $n;
$s$014 = $src;
while (1) {
$6 = HEAP8[$s$014 >> 0] | 0;
$7 = ($6 << 24) >> 24 == ($5 << 24) >> 24;
if ($7) {
$$0$lcssa34 = $$013;
$s$0$lcssa33 = $s$014;
label = 6;
break L1;
}
$8 = ($s$014 + 1) | 0;
$9 = ($$013 + -1) | 0;
$10 = $8;
$11 = $10 & 3;
$12 = ($11 | 0) == 0;
$13 = ($9 | 0) == 0;
$or$cond = $12 | $13;
if ($or$cond) {
$$0$lcssa = $9;
$$lcssa = $13;
$s$0$lcssa = $8;
label = 5;
break;
} else {
$$013 = $9;
$s$014 = $8;
}
}
}
} while (0);
if ((label | 0) == 5) {
if ($$lcssa) {
$$3 = 0;
$s$2 = $s$0$lcssa;
} else {
$$0$lcssa34 = $$0$lcssa;
$s$0$lcssa33 = $s$0$lcssa;
label = 6;
}
}
L8: do {
if ((label | 0) == 6) {
$14 = HEAP8[$s$0$lcssa33 >> 0] | 0;
$15 = $c & 255;
$16 = ($14 << 24) >> 24 == ($15 << 24) >> 24;
if ($16) {
$$3 = $$0$lcssa34;
$s$2 = $s$0$lcssa33;
} else {
$17 = Math_imul($0, 16843009) | 0;
$18 = $$0$lcssa34 >>> 0 > 3;
L11: do {
if ($18) {
$$17 = $$0$lcssa34;
$w$08 = $s$0$lcssa33;
while (1) {
$19 = HEAP32[$w$08 >> 2] | 0;
$20 = $19 ^ $17;
$21 = ($20 + -16843009) | 0;
$22 = $20 & -2139062144;
$23 = $22 ^ -2139062144;
$24 = $23 & $21;
$25 = ($24 | 0) == 0;
if (!$25) {
$$1$lcssa = $$17;
$w$0$lcssa = $w$08;
break L11;
}
$26 = ($w$08 + 4) | 0;
$27 = ($$17 + -4) | 0;
$28 = $27 >>> 0 > 3;
if ($28) {
$$17 = $27;
$w$08 = $26;
} else {
$$1$lcssa = $27;
$w$0$lcssa = $26;
break;
}
}
} else {
$$1$lcssa = $$0$lcssa34;
$w$0$lcssa = $s$0$lcssa33;
}
} while (0);
$29 = ($$1$lcssa | 0) == 0;
if ($29) {
$$3 = 0;
$s$2 = $w$0$lcssa;
} else {
$$24 = $$1$lcssa;
$s$15 = $w$0$lcssa;
while (1) {
$30 = HEAP8[$s$15 >> 0] | 0;
$31 = ($30 << 24) >> 24 == ($15 << 24) >> 24;
if ($31) {
$$3 = $$24;
$s$2 = $s$15;
break L8;
}
$32 = ($s$15 + 1) | 0;
$33 = ($$24 + -1) | 0;
$34 = ($33 | 0) == 0;
if ($34) {
$$3 = 0;
$s$2 = $32;
break;
} else {
$$24 = $33;
$s$15 = $32;
}
}
}
}
}
} while (0);
$35 = ($$3 | 0) != 0;
$36 = $35 ? $s$2 : 0;
STACKTOP = sp;
return $36 | 0;
}
function _memcmp($vl, $vr, $n) {
$vl = $vl | 0;
$vr = $vr | 0;
$n = $n | 0;
var $$03 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$l$04 = 0,
$r$05 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($n | 0) == 0;
L1: do {
if ($0) {
$11 = 0;
} else {
$$03 = $n;
$l$04 = $vl;
$r$05 = $vr;
while (1) {
$1 = HEAP8[$l$04 >> 0] | 0;
$2 = HEAP8[$r$05 >> 0] | 0;
$3 = ($1 << 24) >> 24 == ($2 << 24) >> 24;
if (!$3) {
break;
}
$4 = ($$03 + -1) | 0;
$5 = ($l$04 + 1) | 0;
$6 = ($r$05 + 1) | 0;
$7 = ($4 | 0) == 0;
if ($7) {
$11 = 0;
break L1;
} else {
$$03 = $4;
$l$04 = $5;
$r$05 = $6;
}
}
$8 = $1 & 255;
$9 = $2 & 255;
$10 = ($8 - $9) | 0;
$11 = $10;
}
} while (0);
STACKTOP = sp;
return $11 | 0;
}
function runPostSets() {}
function _i64Subtract(a, b, c, d) {
a = a | 0;
b = b | 0;
c = c | 0;
d = d | 0;
var l = 0,
h = 0;
l = (a - c) >>> 0;
h = (b - d) >>> 0;
h = (b - d - ((c >>> 0 > a >>> 0) | 0)) >>> 0; // Borrow one from high word to low word on underflow.
return ((tempRet0 = h), l | 0) | 0;
}
function _memset(ptr, value, num) {
ptr = ptr | 0;
value = value | 0;
num = num | 0;
var stop = 0,
value4 = 0,
stop4 = 0,
unaligned = 0;
stop = (ptr + num) | 0;
if ((num | 0) >= 20) {
// This is unaligned, but quite large, so work hard to get to aligned settings
value = value & 0xff;
unaligned = ptr & 3;
value4 = value | (value << 8) | (value << 16) | (value << 24);
stop4 = stop & ~3;
if (unaligned) {
unaligned = (ptr + 4 - unaligned) | 0;
while ((ptr | 0) < (unaligned | 0)) {
// no need to check for stop, since we have large num
HEAP8[ptr >> 0] = value;
ptr = (ptr + 1) | 0;
}
}
while ((ptr | 0) < (stop4 | 0)) {
HEAP32[ptr >> 2] = value4;
ptr = (ptr + 4) | 0;
}
}
while ((ptr | 0) < (stop | 0)) {
HEAP8[ptr >> 0] = value;
ptr = (ptr + 1) | 0;
}
return (ptr - num) | 0;
}
function _bitshift64Shl(low, high, bits) {
low = low | 0;
high = high | 0;
bits = bits | 0;
var ander = 0;
if ((bits | 0) < 32) {
ander = ((1 << bits) - 1) | 0;
tempRet0 = (high << bits) | ((low & (ander << (32 - bits))) >>> (32 - bits));
return low << bits;
}
tempRet0 = low << (bits - 32);
return 0;
}
function _strlen(ptr) {
ptr = ptr | 0;
var curr = 0;
curr = ptr;
while (HEAP8[curr >> 0] | 0) {
curr = (curr + 1) | 0;
}
return (curr - ptr) | 0;
}
function _i64Add(a, b, c, d) {
/*
x = a + b*2^32
y = c + d*2^32
result = l + h*2^32
*/
a = a | 0;
b = b | 0;
c = c | 0;
d = d | 0;
var l = 0,
h = 0;
l = (a + c) >>> 0;
h = (b + d + ((l >>> 0 < a >>> 0) | 0)) >>> 0; // Add carry from low word to high word on overflow.
return ((tempRet0 = h), l | 0) | 0;
}
function _bitshift64Ashr(low, high, bits) {
low = low | 0;
high = high | 0;
bits = bits | 0;
var ander = 0;
if ((bits | 0) < 32) {
ander = ((1 << bits) - 1) | 0;
tempRet0 = high >> bits;
return (low >>> bits) | ((high & ander) << (32 - bits));
}
tempRet0 = (high | 0) < 0 ? -1 : 0;
return (high >> (bits - 32)) | 0;
}
function _bitshift64Lshr(low, high, bits) {
low = low | 0;
high = high | 0;
bits = bits | 0;
var ander = 0;
if ((bits | 0) < 32) {
ander = ((1 << bits) - 1) | 0;
tempRet0 = high >>> bits;
return (low >>> bits) | ((high & ander) << (32 - bits));
}
tempRet0 = 0;
return (high >>> (bits - 32)) | 0;
}
function _memcpy(dest, src, num) {
dest = dest | 0;
src = src | 0;
num = num | 0;
var ret = 0;
if ((num | 0) >= 4096) return _emscripten_memcpy_big(dest | 0, src | 0, num | 0) | 0;
ret = dest | 0;
if ((dest & 3) == (src & 3)) {
while (dest & 3) {
if ((num | 0) == 0) return ret | 0;
HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
dest = (dest + 1) | 0;
src = (src + 1) | 0;
num = (num - 1) | 0;
}
while ((num | 0) >= 4) {
HEAP32[dest >> 2] = HEAP32[src >> 2] | 0;
dest = (dest + 4) | 0;
src = (src + 4) | 0;
num = (num - 4) | 0;
}
}
while ((num | 0) > 0) {
HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
dest = (dest + 1) | 0;
src = (src + 1) | 0;
num = (num - 1) | 0;
}
return ret | 0;
}
function _memmove(dest, src, num) {
dest = dest | 0;
src = src | 0;
num = num | 0;
var ret = 0;
if (((src | 0) < (dest | 0)) & ((dest | 0) < ((src + num) | 0))) {
// Unlikely case: Copy backwards in a safe manner
ret = dest;
src = (src + num) | 0;
dest = (dest + num) | 0;
while ((num | 0) > 0) {
dest = (dest - 1) | 0;
src = (src - 1) | 0;
num = (num - 1) | 0;
HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
}
dest = ret;
} else {
_memcpy(dest, src, num) | 0;
}
return dest | 0;
}
function _strcpy(pdest, psrc) {
pdest = pdest | 0;
psrc = psrc | 0;
var i = 0;
do {
HEAP8[((pdest + i) | 0) >> 0] = HEAP8[((psrc + i) | 0) >> 0];
i = (i + 1) | 0;
} while (HEAP8[(psrc + (i - 1)) >> 0] | 0);
return pdest | 0;
}
function _llvm_ctlz_i32(x) {
x = x | 0;
var ret = 0;
ret = HEAP8[(ctlz_i8 + (x >>> 24)) >> 0] | 0;
if ((ret | 0) < 8) return ret | 0;
ret = HEAP8[(ctlz_i8 + ((x >> 16) & 0xff)) >> 0] | 0;
if ((ret | 0) < 8) return (ret + 8) | 0;
ret = HEAP8[(ctlz_i8 + ((x >> 8) & 0xff)) >> 0] | 0;
if ((ret | 0) < 8) return (ret + 16) | 0;
return ((HEAP8[(ctlz_i8 + (x & 0xff)) >> 0] | 0) + 24) | 0;
}
function _llvm_cttz_i32(x) {
x = x | 0;
var ret = 0;
ret = HEAP8[(cttz_i8 + (x & 0xff)) >> 0] | 0;
if ((ret | 0) < 8) return ret | 0;
ret = HEAP8[(cttz_i8 + ((x >> 8) & 0xff)) >> 0] | 0;
if ((ret | 0) < 8) return (ret + 8) | 0;
ret = HEAP8[(cttz_i8 + ((x >> 16) & 0xff)) >> 0] | 0;
if ((ret | 0) < 8) return (ret + 16) | 0;
return ((HEAP8[(cttz_i8 + (x >>> 24)) >> 0] | 0) + 24) | 0;
}
// ======== compiled code from system/lib/compiler-rt , see readme therein
function ___muldsi3($a, $b) {
$a = $a | 0;
$b = $b | 0;
var $1 = 0,
$2 = 0,
$3 = 0,
$6 = 0,
$8 = 0,
$11 = 0,
$12 = 0;
$1 = $a & 65535;
$2 = $b & 65535;
$3 = Math_imul($2, $1) | 0;
$6 = $a >>> 16;
$8 = (($3 >>> 16) + (Math_imul($2, $6) | 0)) | 0;
$11 = $b >>> 16;
$12 = Math_imul($11, $1) | 0;
return (
((tempRet0 = (((($8 >>> 16) + (Math_imul($11, $6) | 0)) | 0) + (((($8 & 65535) + $12) | 0) >>> 16)) | 0),
0 | ((($8 + $12) << 16) | ($3 & 65535))) | 0
);
}
function ___divdi3($a$0, $a$1, $b$0, $b$1) {
$a$0 = $a$0 | 0;
$a$1 = $a$1 | 0;
$b$0 = $b$0 | 0;
$b$1 = $b$1 | 0;
var $1$0 = 0,
$1$1 = 0,
$2$0 = 0,
$2$1 = 0,
$4$0 = 0,
$4$1 = 0,
$6$0 = 0,
$7$0 = 0,
$7$1 = 0,
$8$0 = 0,
$10$0 = 0;
$1$0 = ($a$1 >> 31) | ((($a$1 | 0) < 0 ? -1 : 0) << 1);
$1$1 = ((($a$1 | 0) < 0 ? -1 : 0) >> 31) | ((($a$1 | 0) < 0 ? -1 : 0) << 1);
$2$0 = ($b$1 >> 31) | ((($b$1 | 0) < 0 ? -1 : 0) << 1);
$2$1 = ((($b$1 | 0) < 0 ? -1 : 0) >> 31) | ((($b$1 | 0) < 0 ? -1 : 0) << 1);
$4$0 = _i64Subtract($1$0 ^ $a$0, $1$1 ^ $a$1, $1$0, $1$1) | 0;
$4$1 = tempRet0;
$6$0 = _i64Subtract($2$0 ^ $b$0, $2$1 ^ $b$1, $2$0, $2$1) | 0;
$7$0 = $2$0 ^ $1$0;
$7$1 = $2$1 ^ $1$1;
$8$0 = ___udivmoddi4($4$0, $4$1, $6$0, tempRet0, 0) | 0;
$10$0 = _i64Subtract($8$0 ^ $7$0, tempRet0 ^ $7$1, $7$0, $7$1) | 0;
return ((tempRet0 = tempRet0), $10$0) | 0;
}
function ___remdi3($a$0, $a$1, $b$0, $b$1) {
$a$0 = $a$0 | 0;
$a$1 = $a$1 | 0;
$b$0 = $b$0 | 0;
$b$1 = $b$1 | 0;
var $rem = 0,
$1$0 = 0,
$1$1 = 0,
$2$0 = 0,
$2$1 = 0,
$4$0 = 0,
$4$1 = 0,
$6$0 = 0,
$10$0 = 0,
$10$1 = 0,
__stackBase__ = 0;
__stackBase__ = STACKTOP;
STACKTOP = (STACKTOP + 8) | 0;
$rem = __stackBase__ | 0;
$1$0 = ($a$1 >> 31) | ((($a$1 | 0) < 0 ? -1 : 0) << 1);
$1$1 = ((($a$1 | 0) < 0 ? -1 : 0) >> 31) | ((($a$1 | 0) < 0 ? -1 : 0) << 1);
$2$0 = ($b$1 >> 31) | ((($b$1 | 0) < 0 ? -1 : 0) << 1);
$2$1 = ((($b$1 | 0) < 0 ? -1 : 0) >> 31) | ((($b$1 | 0) < 0 ? -1 : 0) << 1);
$4$0 = _i64Subtract($1$0 ^ $a$0, $1$1 ^ $a$1, $1$0, $1$1) | 0;
$4$1 = tempRet0;
$6$0 = _i64Subtract($2$0 ^ $b$0, $2$1 ^ $b$1, $2$0, $2$1) | 0;
___udivmoddi4($4$0, $4$1, $6$0, tempRet0, $rem) | 0;
$10$0 = _i64Subtract(HEAP32[$rem >> 2] ^ $1$0, HEAP32[($rem + 4) >> 2] ^ $1$1, $1$0, $1$1) | 0;
$10$1 = tempRet0;
STACKTOP = __stackBase__;
return ((tempRet0 = $10$1), $10$0) | 0;
}
function ___muldi3($a$0, $a$1, $b$0, $b$1) {
$a$0 = $a$0 | 0;
$a$1 = $a$1 | 0;
$b$0 = $b$0 | 0;
$b$1 = $b$1 | 0;
var $x_sroa_0_0_extract_trunc = 0,
$y_sroa_0_0_extract_trunc = 0,
$1$0 = 0,
$1$1 = 0,
$2 = 0;
$x_sroa_0_0_extract_trunc = $a$0;
$y_sroa_0_0_extract_trunc = $b$0;
$1$0 = ___muldsi3($x_sroa_0_0_extract_trunc, $y_sroa_0_0_extract_trunc) | 0;
$1$1 = tempRet0;
$2 = Math_imul($a$1, $y_sroa_0_0_extract_trunc) | 0;
return ((tempRet0 = ((((Math_imul($b$1, $x_sroa_0_0_extract_trunc) | 0) + $2) | 0) + $1$1) | ($1$1 & 0)), 0 | ($1$0 & -1)) | 0;
}
function ___udivdi3($a$0, $a$1, $b$0, $b$1) {
$a$0 = $a$0 | 0;
$a$1 = $a$1 | 0;
$b$0 = $b$0 | 0;
$b$1 = $b$1 | 0;
var $1$0 = 0;
$1$0 = ___udivmoddi4($a$0, $a$1, $b$0, $b$1, 0) | 0;
return ((tempRet0 = tempRet0), $1$0) | 0;
}
function ___uremdi3($a$0, $a$1, $b$0, $b$1) {
$a$0 = $a$0 | 0;
$a$1 = $a$1 | 0;
$b$0 = $b$0 | 0;
$b$1 = $b$1 | 0;
var $rem = 0,
__stackBase__ = 0;
__stackBase__ = STACKTOP;
STACKTOP = (STACKTOP + 8) | 0;
$rem = __stackBase__ | 0;
___udivmoddi4($a$0, $a$1, $b$0, $b$1, $rem) | 0;
STACKTOP = __stackBase__;
return ((tempRet0 = HEAP32[($rem + 4) >> 2] | 0), HEAP32[$rem >> 2] | 0) | 0;
}
function ___udivmoddi4($a$0, $a$1, $b$0, $b$1, $rem) {
$a$0 = $a$0 | 0;
$a$1 = $a$1 | 0;
$b$0 = $b$0 | 0;
$b$1 = $b$1 | 0;
$rem = $rem | 0;
var $n_sroa_0_0_extract_trunc = 0,
$n_sroa_1_4_extract_shift$0 = 0,
$n_sroa_1_4_extract_trunc = 0,
$d_sroa_0_0_extract_trunc = 0,
$d_sroa_1_4_extract_shift$0 = 0,
$d_sroa_1_4_extract_trunc = 0,
$4 = 0,
$17 = 0,
$37 = 0,
$49 = 0,
$51 = 0,
$57 = 0,
$58 = 0,
$66 = 0,
$78 = 0,
$86 = 0,
$88 = 0,
$89 = 0,
$91 = 0,
$92 = 0,
$95 = 0,
$105 = 0,
$117 = 0,
$119 = 0,
$125 = 0,
$126 = 0,
$130 = 0,
$q_sroa_1_1_ph = 0,
$q_sroa_0_1_ph = 0,
$r_sroa_1_1_ph = 0,
$r_sroa_0_1_ph = 0,
$sr_1_ph = 0,
$d_sroa_0_0_insert_insert99$0 = 0,
$d_sroa_0_0_insert_insert99$1 = 0,
$137$0 = 0,
$137$1 = 0,
$carry_0203 = 0,
$sr_1202 = 0,
$r_sroa_0_1201 = 0,
$r_sroa_1_1200 = 0,
$q_sroa_0_1199 = 0,
$q_sroa_1_1198 = 0,
$147 = 0,
$149 = 0,
$r_sroa_0_0_insert_insert42$0 = 0,
$r_sroa_0_0_insert_insert42$1 = 0,
$150$1 = 0,
$151$0 = 0,
$152 = 0,
$154$0 = 0,
$r_sroa_0_0_extract_trunc = 0,
$r_sroa_1_4_extract_trunc = 0,
$155 = 0,
$carry_0_lcssa$0 = 0,
$carry_0_lcssa$1 = 0,
$r_sroa_0_1_lcssa = 0,
$r_sroa_1_1_lcssa = 0,
$q_sroa_0_1_lcssa = 0,
$q_sroa_1_1_lcssa = 0,
$q_sroa_0_0_insert_ext75$0 = 0,
$q_sroa_0_0_insert_ext75$1 = 0,
$q_sroa_0_0_insert_insert77$1 = 0,
$_0$0 = 0,
$_0$1 = 0;
$n_sroa_0_0_extract_trunc = $a$0;
$n_sroa_1_4_extract_shift$0 = $a$1;
$n_sroa_1_4_extract_trunc = $n_sroa_1_4_extract_shift$0;
$d_sroa_0_0_extract_trunc = $b$0;
$d_sroa_1_4_extract_shift$0 = $b$1;
$d_sroa_1_4_extract_trunc = $d_sroa_1_4_extract_shift$0;
if (($n_sroa_1_4_extract_trunc | 0) == 0) {
$4 = ($rem | 0) != 0;
if (($d_sroa_1_4_extract_trunc | 0) == 0) {
if ($4) {
HEAP32[$rem >> 2] = ($n_sroa_0_0_extract_trunc >>> 0) % ($d_sroa_0_0_extract_trunc >>> 0);
HEAP32[($rem + 4) >> 2] = 0;
}
$_0$1 = 0;
$_0$0 = (($n_sroa_0_0_extract_trunc >>> 0) / ($d_sroa_0_0_extract_trunc >>> 0)) >>> 0;
return ((tempRet0 = $_0$1), $_0$0) | 0;
} else {
if (!$4) {
$_0$1 = 0;
$_0$0 = 0;
return ((tempRet0 = $_0$1), $_0$0) | 0;
}
HEAP32[$rem >> 2] = $a$0 & -1;
HEAP32[($rem + 4) >> 2] = $a$1 & 0;
$_0$1 = 0;
$_0$0 = 0;
return ((tempRet0 = $_0$1), $_0$0) | 0;
}
}
$17 = ($d_sroa_1_4_extract_trunc | 0) == 0;
do {
if (($d_sroa_0_0_extract_trunc | 0) == 0) {
if ($17) {
if (($rem | 0) != 0) {
HEAP32[$rem >> 2] = ($n_sroa_1_4_extract_trunc >>> 0) % ($d_sroa_0_0_extract_trunc >>> 0);
HEAP32[($rem + 4) >> 2] = 0;
}
$_0$1 = 0;
$_0$0 = (($n_sroa_1_4_extract_trunc >>> 0) / ($d_sroa_0_0_extract_trunc >>> 0)) >>> 0;
return ((tempRet0 = $_0$1), $_0$0) | 0;
}
if (($n_sroa_0_0_extract_trunc | 0) == 0) {
if (($rem | 0) != 0) {
HEAP32[$rem >> 2] = 0;
HEAP32[($rem + 4) >> 2] = ($n_sroa_1_4_extract_trunc >>> 0) % ($d_sroa_1_4_extract_trunc >>> 0);
}
$_0$1 = 0;
$_0$0 = (($n_sroa_1_4_extract_trunc >>> 0) / ($d_sroa_1_4_extract_trunc >>> 0)) >>> 0;
return ((tempRet0 = $_0$1), $_0$0) | 0;
}
$37 = ($d_sroa_1_4_extract_trunc - 1) | 0;
if ((($37 & $d_sroa_1_4_extract_trunc) | 0) == 0) {
if (($rem | 0) != 0) {
HEAP32[$rem >> 2] = 0 | ($a$0 & -1);
HEAP32[($rem + 4) >> 2] = ($37 & $n_sroa_1_4_extract_trunc) | ($a$1 & 0);
}
$_0$1 = 0;
$_0$0 = $n_sroa_1_4_extract_trunc >>> ((_llvm_cttz_i32($d_sroa_1_4_extract_trunc | 0) | 0) >>> 0);
return ((tempRet0 = $_0$1), $_0$0) | 0;
}
$49 = _llvm_ctlz_i32($d_sroa_1_4_extract_trunc | 0) | 0;
$51 = ($49 - (_llvm_ctlz_i32($n_sroa_1_4_extract_trunc | 0) | 0)) | 0;
if ($51 >>> 0 <= 30) {
$57 = ($51 + 1) | 0;
$58 = (31 - $51) | 0;
$sr_1_ph = $57;
$r_sroa_0_1_ph = ($n_sroa_1_4_extract_trunc << $58) | ($n_sroa_0_0_extract_trunc >>> ($57 >>> 0));
$r_sroa_1_1_ph = $n_sroa_1_4_extract_trunc >>> ($57 >>> 0);
$q_sroa_0_1_ph = 0;
$q_sroa_1_1_ph = $n_sroa_0_0_extract_trunc << $58;
break;
}
if (($rem | 0) == 0) {
$_0$1 = 0;
$_0$0 = 0;
return ((tempRet0 = $_0$1), $_0$0) | 0;
}
HEAP32[$rem >> 2] = 0 | ($a$0 & -1);
HEAP32[($rem + 4) >> 2] = $n_sroa_1_4_extract_shift$0 | ($a$1 & 0);
$_0$1 = 0;
$_0$0 = 0;
return ((tempRet0 = $_0$1), $_0$0) | 0;
} else {
if (!$17) {
$117 = _llvm_ctlz_i32($d_sroa_1_4_extract_trunc | 0) | 0;
$119 = ($117 - (_llvm_ctlz_i32($n_sroa_1_4_extract_trunc | 0) | 0)) | 0;
if ($119 >>> 0 <= 31) {
$125 = ($119 + 1) | 0;
$126 = (31 - $119) | 0;
$130 = ($119 - 31) >> 31;
$sr_1_ph = $125;
$r_sroa_0_1_ph = (($n_sroa_0_0_extract_trunc >>> ($125 >>> 0)) & $130) | ($n_sroa_1_4_extract_trunc << $126);
$r_sroa_1_1_ph = ($n_sroa_1_4_extract_trunc >>> ($125 >>> 0)) & $130;
$q_sroa_0_1_ph = 0;
$q_sroa_1_1_ph = $n_sroa_0_0_extract_trunc << $126;
break;
}
if (($rem | 0) == 0) {
$_0$1 = 0;
$_0$0 = 0;
return ((tempRet0 = $_0$1), $_0$0) | 0;
}
HEAP32[$rem >> 2] = 0 | ($a$0 & -1);
HEAP32[($rem + 4) >> 2] = $n_sroa_1_4_extract_shift$0 | ($a$1 & 0);
$_0$1 = 0;
$_0$0 = 0;
return ((tempRet0 = $_0$1), $_0$0) | 0;
}
$66 = ($d_sroa_0_0_extract_trunc - 1) | 0;
if ((($66 & $d_sroa_0_0_extract_trunc) | 0) != 0) {
$86 = ((_llvm_ctlz_i32($d_sroa_0_0_extract_trunc | 0) | 0) + 33) | 0;
$88 = ($86 - (_llvm_ctlz_i32($n_sroa_1_4_extract_trunc | 0) | 0)) | 0;
$89 = (64 - $88) | 0;
$91 = (32 - $88) | 0;
$92 = $91 >> 31;
$95 = ($88 - 32) | 0;
$105 = $95 >> 31;
$sr_1_ph = $88;
$r_sroa_0_1_ph =
((($91 - 1) >> 31) & ($n_sroa_1_4_extract_trunc >>> ($95 >>> 0))) |
((($n_sroa_1_4_extract_trunc << $91) | ($n_sroa_0_0_extract_trunc >>> ($88 >>> 0))) & $105);
$r_sroa_1_1_ph = $105 & ($n_sroa_1_4_extract_trunc >>> ($88 >>> 0));
$q_sroa_0_1_ph = ($n_sroa_0_0_extract_trunc << $89) & $92;
$q_sroa_1_1_ph =
((($n_sroa_1_4_extract_trunc << $89) | ($n_sroa_0_0_extract_trunc >>> ($95 >>> 0))) & $92) |
(($n_sroa_0_0_extract_trunc << $91) & (($88 - 33) >> 31));
break;
}
if (($rem | 0) != 0) {
HEAP32[$rem >> 2] = $66 & $n_sroa_0_0_extract_trunc;
HEAP32[($rem + 4) >> 2] = 0;
}
if (($d_sroa_0_0_extract_trunc | 0) == 1) {
$_0$1 = $n_sroa_1_4_extract_shift$0 | ($a$1 & 0);
$_0$0 = 0 | ($a$0 & -1);
return ((tempRet0 = $_0$1), $_0$0) | 0;
} else {
$78 = _llvm_cttz_i32($d_sroa_0_0_extract_trunc | 0) | 0;
$_0$1 = 0 | ($n_sroa_1_4_extract_trunc >>> ($78 >>> 0));
$_0$0 = ($n_sroa_1_4_extract_trunc << (32 - $78)) | ($n_sroa_0_0_extract_trunc >>> ($78 >>> 0)) | 0;
return ((tempRet0 = $_0$1), $_0$0) | 0;
}
}
} while (0);
if (($sr_1_ph | 0) == 0) {
$q_sroa_1_1_lcssa = $q_sroa_1_1_ph;
$q_sroa_0_1_lcssa = $q_sroa_0_1_ph;
$r_sroa_1_1_lcssa = $r_sroa_1_1_ph;
$r_sroa_0_1_lcssa = $r_sroa_0_1_ph;
$carry_0_lcssa$1 = 0;
$carry_0_lcssa$0 = 0;
} else {
$d_sroa_0_0_insert_insert99$0 = 0 | ($b$0 & -1);
$d_sroa_0_0_insert_insert99$1 = $d_sroa_1_4_extract_shift$0 | ($b$1 & 0);
$137$0 = _i64Add($d_sroa_0_0_insert_insert99$0, $d_sroa_0_0_insert_insert99$1, -1, -1) | 0;
$137$1 = tempRet0;
$q_sroa_1_1198 = $q_sroa_1_1_ph;
$q_sroa_0_1199 = $q_sroa_0_1_ph;
$r_sroa_1_1200 = $r_sroa_1_1_ph;
$r_sroa_0_1201 = $r_sroa_0_1_ph;
$sr_1202 = $sr_1_ph;
$carry_0203 = 0;
while (1) {
$147 = ($q_sroa_0_1199 >>> 31) | ($q_sroa_1_1198 << 1);
$149 = $carry_0203 | ($q_sroa_0_1199 << 1);
$r_sroa_0_0_insert_insert42$0 = 0 | (($r_sroa_0_1201 << 1) | ($q_sroa_1_1198 >>> 31));
$r_sroa_0_0_insert_insert42$1 = ($r_sroa_0_1201 >>> 31) | ($r_sroa_1_1200 << 1) | 0;
_i64Subtract($137$0, $137$1, $r_sroa_0_0_insert_insert42$0, $r_sroa_0_0_insert_insert42$1) | 0;
$150$1 = tempRet0;
$151$0 = ($150$1 >> 31) | ((($150$1 | 0) < 0 ? -1 : 0) << 1);
$152 = $151$0 & 1;
$154$0 =
_i64Subtract(
$r_sroa_0_0_insert_insert42$0,
$r_sroa_0_0_insert_insert42$1,
$151$0 & $d_sroa_0_0_insert_insert99$0,
(((($150$1 | 0) < 0 ? -1 : 0) >> 31) | ((($150$1 | 0) < 0 ? -1 : 0) << 1)) & $d_sroa_0_0_insert_insert99$1
) | 0;
$r_sroa_0_0_extract_trunc = $154$0;
$r_sroa_1_4_extract_trunc = tempRet0;
$155 = ($sr_1202 - 1) | 0;
if (($155 | 0) == 0) {
break;
} else {
$q_sroa_1_1198 = $147;
$q_sroa_0_1199 = $149;
$r_sroa_1_1200 = $r_sroa_1_4_extract_trunc;
$r_sroa_0_1201 = $r_sroa_0_0_extract_trunc;
$sr_1202 = $155;
$carry_0203 = $152;
}
}
$q_sroa_1_1_lcssa = $147;
$q_sroa_0_1_lcssa = $149;
$r_sroa_1_1_lcssa = $r_sroa_1_4_extract_trunc;
$r_sroa_0_1_lcssa = $r_sroa_0_0_extract_trunc;
$carry_0_lcssa$1 = 0;
$carry_0_lcssa$0 = $152;
}
$q_sroa_0_0_insert_ext75$0 = $q_sroa_0_1_lcssa;
$q_sroa_0_0_insert_ext75$1 = 0;
$q_sroa_0_0_insert_insert77$1 = $q_sroa_1_1_lcssa | $q_sroa_0_0_insert_ext75$1;
if (($rem | 0) != 0) {
HEAP32[$rem >> 2] = 0 | $r_sroa_0_1_lcssa;
HEAP32[($rem + 4) >> 2] = $r_sroa_1_1_lcssa | 0;
}
$_0$1 =
((0 | $q_sroa_0_0_insert_ext75$0) >>> 31) |
($q_sroa_0_0_insert_insert77$1 << 1) |
((($q_sroa_0_0_insert_ext75$1 << 1) | ($q_sroa_0_0_insert_ext75$0 >>> 31)) & 0) |
$carry_0_lcssa$1;
$_0$0 = ((($q_sroa_0_0_insert_ext75$0 << 1) | (0 >>> 31)) & -2) | $carry_0_lcssa$0;
return ((tempRet0 = $_0$1), $_0$0) | 0;
}
// =======================================================================
// EMSCRIPTEN_END_FUNCS
function dynCall_iiii(index, a1, a2, a3) {
index = index | 0;
a1 = a1 | 0;
a2 = a2 | 0;
a3 = a3 | 0;
return FUNCTION_TABLE_iiii[index & 1](a1 | 0, a2 | 0, a3 | 0) | 0;
}
function dynCall_vi(index, a1) {
index = index | 0;
a1 = a1 | 0;
FUNCTION_TABLE_vi[index & 7](a1 | 0);
}
function dynCall_vii(index, a1, a2) {
index = index | 0;
a1 = a1 | 0;
a2 = a2 | 0;
FUNCTION_TABLE_vii[index & 0](a1 | 0, a2 | 0);
}
function dynCall_ii(index, a1) {
index = index | 0;
a1 = a1 | 0;
return FUNCTION_TABLE_ii[index & 0](a1 | 0) | 0;
}
function dynCall_iii(index, a1, a2) {
index = index | 0;
a1 = a1 | 0;
a2 = a2 | 0;
return FUNCTION_TABLE_iii[index & 7](a1 | 0, a2 | 0) | 0;
}
function dynCall_viiii(index, a1, a2, a3, a4) {
index = index | 0;
a1 = a1 | 0;
a2 = a2 | 0;
a3 = a3 | 0;
a4 = a4 | 0;
FUNCTION_TABLE_viiii[index & 15](a1 | 0, a2 | 0, a3 | 0, a4 | 0);
}
function b0(p0, p1, p2) {
p0 = p0 | 0;
p1 = p1 | 0;
p2 = p2 | 0;
abort(0);
return 0;
}
function b1(p0) {
p0 = p0 | 0;
abort(1);
}
function b2(p0, p1) {
p0 = p0 | 0;
p1 = p1 | 0;
abort(2);
}
function b3(p0) {
p0 = p0 | 0;
abort(3);
return 0;
}
function b4(p0, p1) {
p0 = p0 | 0;
p1 = p1 | 0;
abort(4);
return 0;
}
function b5(p0, p1, p2, p3) {
p0 = p0 | 0;
p1 = p1 | 0;
p2 = p2 | 0;
p3 = p3 | 0;
abort(5);
}
// EMSCRIPTEN_END_FUNCS
var FUNCTION_TABLE_iiii = [b0, _sn_write];
var FUNCTION_TABLE_vi = [
b1,
_zbar_image_free_data,
__zbar_video_recycle_image,
__zbar_video_recycle_shadow,
_cleanup_ref,
_symbol_handler,
b1,
b1
];
var FUNCTION_TABLE_vii = [b2];
var FUNCTION_TABLE_ii = [b3];
var FUNCTION_TABLE_iii = [
b4,
_proc_kick_handler,
_proc_video_handler,
_qr_finder_vline_cmp,
_qr_finder_center_cmp,
_qr_cmp_edge_pt,
b4,
b4
];
var FUNCTION_TABLE_viiii = [
b5,
_convert_copy,
_convert_uvp_append,
_convert_yuv_pack,
_convert_yuvp_to_rgb,
_convert_uvp_resample,
_convert_yuv_unpack,
_convert_uv_resample,
_convert_yuv_to_rgb,
_convert_rgb_to_yuvp,
_convert_rgb_to_yuv,
_convert_rgb_resample,
b5,
b5,
b5,
b5
];
return {
_i64Subtract: _i64Subtract,
_free: _free,
_main: _main,
_realloc: _realloc,
_i64Add: _i64Add,
_memmove: _memmove,
_bitshift64Ashr: _bitshift64Ashr,
_strlen: _strlen,
_memset: _memset,
_malloc: _malloc,
_memcpy: _memcpy,
_bitshift64Lshr: _bitshift64Lshr,
_strcpy: _strcpy,
_calloc: _calloc,
_bitshift64Shl: _bitshift64Shl,
runPostSets: runPostSets,
stackAlloc: stackAlloc,
stackSave: stackSave,
stackRestore: stackRestore,
setThrew: setThrew,
setTempRet0: setTempRet0,
getTempRet0: getTempRet0,
dynCall_iiii: dynCall_iiii,
dynCall_vi: dynCall_vi,
dynCall_vii: dynCall_vii,
dynCall_ii: dynCall_ii,
dynCall_iii: dynCall_iii,
dynCall_viiii: dynCall_viiii
};
})(
// EMSCRIPTEN_END_ASM
Module.asmGlobalArg,
Module.asmLibraryArg,
buffer
);
var _i64Subtract = (Module['_i64Subtract'] = asm['_i64Subtract']);
var _free = (Module['_free'] = asm['_free']);
var _main = (Module['_main'] = asm['_main']);
var _realloc = (Module['_realloc'] = asm['_realloc']);
var _i64Add = (Module['_i64Add'] = asm['_i64Add']);
var _memmove = (Module['_memmove'] = asm['_memmove']);
var _bitshift64Ashr = (Module['_bitshift64Ashr'] = asm['_bitshift64Ashr']);
var _strlen = (Module['_strlen'] = asm['_strlen']);
var _memset = (Module['_memset'] = asm['_memset']);
var _malloc = (Module['_malloc'] = asm['_malloc']);
var _memcpy = (Module['_memcpy'] = asm['_memcpy']);
var _bitshift64Lshr = (Module['_bitshift64Lshr'] = asm['_bitshift64Lshr']);
var _strcpy = (Module['_strcpy'] = asm['_strcpy']);
var _calloc = (Module['_calloc'] = asm['_calloc']);
var _bitshift64Shl = (Module['_bitshift64Shl'] = asm['_bitshift64Shl']);
var runPostSets = (Module['runPostSets'] = asm['runPostSets']);
var dynCall_iiii = (Module['dynCall_iiii'] = asm['dynCall_iiii']);
var dynCall_vi = (Module['dynCall_vi'] = asm['dynCall_vi']);
var dynCall_vii = (Module['dynCall_vii'] = asm['dynCall_vii']);
var dynCall_ii = (Module['dynCall_ii'] = asm['dynCall_ii']);
var dynCall_iii = (Module['dynCall_iii'] = asm['dynCall_iii']);
var dynCall_viiii = (Module['dynCall_viiii'] = asm['dynCall_viiii']);
Runtime.stackAlloc = asm['stackAlloc'];
Runtime.stackSave = asm['stackSave'];
Runtime.stackRestore = asm['stackRestore'];
Runtime.setTempRet0 = asm['setTempRet0'];
Runtime.getTempRet0 = asm['getTempRet0'];
// TODO: strip out parts of this we do not need
//======= begin closure i64 code =======
// Copyright 2009 The Closure Library Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS-IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
/**
* @fileoverview Defines a Long class for representing a 64-bit two's-complement
* integer value, which faithfully simulates the behavior of a Java "long". This
* implementation is derived from LongLib in GWT.
*
*/
var i64Math = (function() {
// Emscripten wrapper
var goog = { math: {} };
/**
* Constructs a 64-bit two's-complement integer, given its low and high 32-bit
* values as *signed* integers. See the from* functions below for more
* convenient ways of constructing Longs.
*
* The internal representation of a long is the two given signed, 32-bit values.
* We use 32-bit pieces because these are the size of integers on which
* Javascript performs bit-operations. For operations like addition and
* multiplication, we split each number into 16-bit pieces, which can easily be
* multiplied within Javascript's floating-point representation without overflow
* or change in sign.
*
* In the algorithms below, we frequently reduce the negative case to the
* positive case by negating the input(s) and then post-processing the result.
* Note that we must ALWAYS check specially whether those values are MIN_VALUE
* (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as
* a positive number, it overflows back into a negative). Not handling this
* case would often result in infinite recursion.
*
* @param {number} low The low (signed) 32 bits of the long.
* @param {number} high The high (signed) 32 bits of the long.
* @constructor
*/
goog.math.Long = function(low, high) {
/**
* @type {number}
* @private
*/
this.low_ = low | 0; // force into 32 signed bits.
/**
* @type {number}
* @private
*/
this.high_ = high | 0; // force into 32 signed bits.
};
// NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the
// from* methods on which they depend.
/**
* A cache of the Long representations of small integer values.
* @type {!Object}
* @private
*/
goog.math.Long.IntCache_ = {};
/**
* Returns a Long representing the given (32-bit) integer value.
* @param {number} value The 32-bit integer in question.
* @return {!goog.math.Long} The corresponding Long value.
*/
goog.math.Long.fromInt = function(value) {
if (-128 <= value && value < 128) {
var cachedObj = goog.math.Long.IntCache_[value];
if (cachedObj) {
return cachedObj;
}
}
var obj = new goog.math.Long(value | 0, value < 0 ? -1 : 0);
if (-128 <= value && value < 128) {
goog.math.Long.IntCache_[value] = obj;
}
return obj;
};
/**
* Returns a Long representing the given value, provided that it is a finite
* number. Otherwise, zero is returned.
* @param {number} value The number in question.
* @return {!goog.math.Long} The corresponding Long value.
*/
goog.math.Long.fromNumber = function(value) {
if (isNaN(value) || !isFinite(value)) {
return goog.math.Long.ZERO;
} else if (value <= -goog.math.Long.TWO_PWR_63_DBL_) {
return goog.math.Long.MIN_VALUE;
} else if (value + 1 >= goog.math.Long.TWO_PWR_63_DBL_) {
return goog.math.Long.MAX_VALUE;
} else if (value < 0) {
return goog.math.Long.fromNumber(-value).negate();
} else {
return new goog.math.Long(value % goog.math.Long.TWO_PWR_32_DBL_ | 0, (value / goog.math.Long.TWO_PWR_32_DBL_) | 0);
}
};
/**
* Returns a Long representing the 64-bit integer that comes by concatenating
* the given high and low bits. Each is assumed to use 32 bits.
* @param {number} lowBits The low 32-bits.
* @param {number} highBits The high 32-bits.
* @return {!goog.math.Long} The corresponding Long value.
*/
goog.math.Long.fromBits = function(lowBits, highBits) {
return new goog.math.Long(lowBits, highBits);
};
/**
* Returns a Long representation of the given string, written using the given
* radix.
* @param {string} str The textual representation of the Long.
* @param {number=} opt_radix The radix in which the text is written.
* @return {!goog.math.Long} The corresponding Long value.
*/
goog.math.Long.fromString = function(str, opt_radix) {
if (str.length == 0) {
throw Error('number format error: empty string');
}
var radix = opt_radix || 10;
if (radix < 2 || 36 < radix) {
throw Error('radix out of range: ' + radix);
}
if (str.charAt(0) == '-') {
return goog.math.Long.fromString(str.substring(1), radix).negate();
} else if (str.indexOf('-') >= 0) {
throw Error('number format error: interior "-" character: ' + str);
}
// Do several (8) digits each time through the loop, so as to
// minimize the calls to the very expensive emulated div.
var radixToPower = goog.math.Long.fromNumber(Math.pow(radix, 8));
var result = goog.math.Long.ZERO;
for (var i = 0; i < str.length; i += 8) {
var size = Math.min(8, str.length - i);
var value = parseInt(str.substring(i, i + size), radix);
if (size < 8) {
var power = goog.math.Long.fromNumber(Math.pow(radix, size));
result = result.multiply(power).add(goog.math.Long.fromNumber(value));
} else {
result = result.multiply(radixToPower);
result = result.add(goog.math.Long.fromNumber(value));
}
}
return result;
};
// NOTE: the compiler should inline these constant values below and then remove
// these variables, so there should be no runtime penalty for these.
/**
* Number used repeated below in calculations. This must appear before the
* first call to any from* function below.
* @type {number}
* @private
*/
goog.math.Long.TWO_PWR_16_DBL_ = 1 << 16;
/**
* @type {number}
* @private
*/
goog.math.Long.TWO_PWR_24_DBL_ = 1 << 24;
/**
* @type {number}
* @private
*/
goog.math.Long.TWO_PWR_32_DBL_ = goog.math.Long.TWO_PWR_16_DBL_ * goog.math.Long.TWO_PWR_16_DBL_;
/**
* @type {number}
* @private
*/
goog.math.Long.TWO_PWR_31_DBL_ = goog.math.Long.TWO_PWR_32_DBL_ / 2;
/**
* @type {number}
* @private
*/
goog.math.Long.TWO_PWR_48_DBL_ = goog.math.Long.TWO_PWR_32_DBL_ * goog.math.Long.TWO_PWR_16_DBL_;
/**
* @type {number}
* @private
*/
goog.math.Long.TWO_PWR_64_DBL_ = goog.math.Long.TWO_PWR_32_DBL_ * goog.math.Long.TWO_PWR_32_DBL_;
/**
* @type {number}
* @private
*/
goog.math.Long.TWO_PWR_63_DBL_ = goog.math.Long.TWO_PWR_64_DBL_ / 2;
/** @type {!goog.math.Long} */
goog.math.Long.ZERO = goog.math.Long.fromInt(0);
/** @type {!goog.math.Long} */
goog.math.Long.ONE = goog.math.Long.fromInt(1);
/** @type {!goog.math.Long} */
goog.math.Long.NEG_ONE = goog.math.Long.fromInt(-1);
/** @type {!goog.math.Long} */
goog.math.Long.MAX_VALUE = goog.math.Long.fromBits(0xffffffff | 0, 0x7fffffff | 0);
/** @type {!goog.math.Long} */
goog.math.Long.MIN_VALUE = goog.math.Long.fromBits(0, 0x80000000 | 0);
/**
* @type {!goog.math.Long}
* @private
*/
goog.math.Long.TWO_PWR_24_ = goog.math.Long.fromInt(1 << 24);
/** @return {number} The value, assuming it is a 32-bit integer. */
goog.math.Long.prototype.toInt = function() {
return this.low_;
};
/** @return {number} The closest floating-point representation to this value. */
goog.math.Long.prototype.toNumber = function() {
return this.high_ * goog.math.Long.TWO_PWR_32_DBL_ + this.getLowBitsUnsigned();
};
/**
* @param {number=} opt_radix The radix in which the text should be written.
* @return {string} The textual representation of this value.
*/
goog.math.Long.prototype.toString = function(opt_radix) {
var radix = opt_radix || 10;
if (radix < 2 || 36 < radix) {
throw Error('radix out of range: ' + radix);
}
if (this.isZero()) {
return '0';
}
if (this.isNegative()) {
if (this.equals(goog.math.Long.MIN_VALUE)) {
// We need to change the Long value before it can be negated, so we remove
// the bottom-most digit in this base and then recurse to do the rest.
var radixLong = goog.math.Long.fromNumber(radix);
var div = this.div(radixLong);
var rem = div.multiply(radixLong).subtract(this);
return div.toString(radix) + rem.toInt().toString(radix);
} else {
return '-' + this.negate().toString(radix);
}
}
// Do several (6) digits each time through the loop, so as to
// minimize the calls to the very expensive emulated div.
var radixToPower = goog.math.Long.fromNumber(Math.pow(radix, 6));
var rem = this;
var result = '';
while (true) {
var remDiv = rem.div(radixToPower);
var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt();
var digits = intval.toString(radix);
rem = remDiv;
if (rem.isZero()) {
return digits + result;
} else {
while (digits.length < 6) {
digits = '0' + digits;
}
result = '' + digits + result;
}
}
};
/** @return {number} The high 32-bits as a signed value. */
goog.math.Long.prototype.getHighBits = function() {
return this.high_;
};
/** @return {number} The low 32-bits as a signed value. */
goog.math.Long.prototype.getLowBits = function() {
return this.low_;
};
/** @return {number} The low 32-bits as an unsigned value. */
goog.math.Long.prototype.getLowBitsUnsigned = function() {
return this.low_ >= 0 ? this.low_ : goog.math.Long.TWO_PWR_32_DBL_ + this.low_;
};
/**
* @return {number} Returns the number of bits needed to represent the absolute
* value of this Long.
*/
goog.math.Long.prototype.getNumBitsAbs = function() {
if (this.isNegative()) {
if (this.equals(goog.math.Long.MIN_VALUE)) {
return 64;
} else {
return this.negate().getNumBitsAbs();
}
} else {
var val = this.high_ != 0 ? this.high_ : this.low_;
for (var bit = 31; bit > 0; bit--) {
if ((val & (1 << bit)) != 0) {
break;
}
}
return this.high_ != 0 ? bit + 33 : bit + 1;
}
};
/** @return {boolean} Whether this value is zero. */
goog.math.Long.prototype.isZero = function() {
return this.high_ == 0 && this.low_ == 0;
};
/** @return {boolean} Whether this value is negative. */
goog.math.Long.prototype.isNegative = function() {
return this.high_ < 0;
};
/** @return {boolean} Whether this value is odd. */
goog.math.Long.prototype.isOdd = function() {
return (this.low_ & 1) == 1;
};
/**
* @param {goog.math.Long} other Long to compare against.
* @return {boolean} Whether this Long equals the other.
*/
goog.math.Long.prototype.equals = function(other) {
return this.high_ == other.high_ && this.low_ == other.low_;
};
/**
* @param {goog.math.Long} other Long to compare against.
* @return {boolean} Whether this Long does not equal the other.
*/
goog.math.Long.prototype.notEquals = function(other) {
return this.high_ != other.high_ || this.low_ != other.low_;
};
/**
* @param {goog.math.Long} other Long to compare against.
* @return {boolean} Whether this Long is less than the other.
*/
goog.math.Long.prototype.lessThan = function(other) {
return this.compare(other) < 0;
};
/**
* @param {goog.math.Long} other Long to compare against.
* @return {boolean} Whether this Long is less than or equal to the other.
*/
goog.math.Long.prototype.lessThanOrEqual = function(other) {
return this.compare(other) <= 0;
};
/**
* @param {goog.math.Long} other Long to compare against.
* @return {boolean} Whether this Long is greater than the other.
*/
goog.math.Long.prototype.greaterThan = function(other) {
return this.compare(other) > 0;
};
/**
* @param {goog.math.Long} other Long to compare against.
* @return {boolean} Whether this Long is greater than or equal to the other.
*/
goog.math.Long.prototype.greaterThanOrEqual = function(other) {
return this.compare(other) >= 0;
};
/**
* Compares this Long with the given one.
* @param {goog.math.Long} other Long to compare against.
* @return {number} 0 if they are the same, 1 if the this is greater, and -1
* if the given one is greater.
*/
goog.math.Long.prototype.compare = function(other) {
if (this.equals(other)) {
return 0;
}
var thisNeg = this.isNegative();
var otherNeg = other.isNegative();
if (thisNeg && !otherNeg) {
return -1;
}
if (!thisNeg && otherNeg) {
return 1;
}
// at this point, the signs are the same, so subtraction will not overflow
if (this.subtract(other).isNegative()) {
return -1;
} else {
return 1;
}
};
/** @return {!goog.math.Long} The negation of this value. */
goog.math.Long.prototype.negate = function() {
if (this.equals(goog.math.Long.MIN_VALUE)) {
return goog.math.Long.MIN_VALUE;
} else {
return this.not().add(goog.math.Long.ONE);
}
};
/**
* Returns the sum of this and the given Long.
* @param {goog.math.Long} other Long to add to this one.
* @return {!goog.math.Long} The sum of this and the given Long.
*/
goog.math.Long.prototype.add = function(other) {
// Divide each number into 4 chunks of 16 bits, and then sum the chunks.
var a48 = this.high_ >>> 16;
var a32 = this.high_ & 0xffff;
var a16 = this.low_ >>> 16;
var a00 = this.low_ & 0xffff;
var b48 = other.high_ >>> 16;
var b32 = other.high_ & 0xffff;
var b16 = other.low_ >>> 16;
var b00 = other.low_ & 0xffff;
var c48 = 0,
c32 = 0,
c16 = 0,
c00 = 0;
c00 += a00 + b00;
c16 += c00 >>> 16;
c00 &= 0xffff;
c16 += a16 + b16;
c32 += c16 >>> 16;
c16 &= 0xffff;
c32 += a32 + b32;
c48 += c32 >>> 16;
c32 &= 0xffff;
c48 += a48 + b48;
c48 &= 0xffff;
return goog.math.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32);
};
/**
* Returns the difference of this and the given Long.
* @param {goog.math.Long} other Long to subtract from this.
* @return {!goog.math.Long} The difference of this and the given Long.
*/
goog.math.Long.prototype.subtract = function(other) {
return this.add(other.negate());
};
/**
* Returns the product of this and the given long.
* @param {goog.math.Long} other Long to multiply with this.
* @return {!goog.math.Long} The product of this and the other.
*/
goog.math.Long.prototype.multiply = function(other) {
if (this.isZero()) {
return goog.math.Long.ZERO;
} else if (other.isZero()) {
return goog.math.Long.ZERO;
}
if (this.equals(goog.math.Long.MIN_VALUE)) {
return other.isOdd() ? goog.math.Long.MIN_VALUE : goog.math.Long.ZERO;
} else if (other.equals(goog.math.Long.MIN_VALUE)) {
return this.isOdd() ? goog.math.Long.MIN_VALUE : goog.math.Long.ZERO;
}
if (this.isNegative()) {
if (other.isNegative()) {
return this.negate().multiply(other.negate());
} else {
return this.negate()
.multiply(other)
.negate();
}
} else if (other.isNegative()) {
return this.multiply(other.negate()).negate();
}
// If both longs are small, use float multiplication
if (this.lessThan(goog.math.Long.TWO_PWR_24_) && other.lessThan(goog.math.Long.TWO_PWR_24_)) {
return goog.math.Long.fromNumber(this.toNumber() * other.toNumber());
}
// Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.
// We can skip products that would overflow.
var a48 = this.high_ >>> 16;
var a32 = this.high_ & 0xffff;
var a16 = this.low_ >>> 16;
var a00 = this.low_ & 0xffff;
var b48 = other.high_ >>> 16;
var b32 = other.high_ & 0xffff;
var b16 = other.low_ >>> 16;
var b00 = other.low_ & 0xffff;
var c48 = 0,
c32 = 0,
c16 = 0,
c00 = 0;
c00 += a00 * b00;
c16 += c00 >>> 16;
c00 &= 0xffff;
c16 += a16 * b00;
c32 += c16 >>> 16;
c16 &= 0xffff;
c16 += a00 * b16;
c32 += c16 >>> 16;
c16 &= 0xffff;
c32 += a32 * b00;
c48 += c32 >>> 16;
c32 &= 0xffff;
c32 += a16 * b16;
c48 += c32 >>> 16;
c32 &= 0xffff;
c32 += a00 * b32;
c48 += c32 >>> 16;
c32 &= 0xffff;
c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;
c48 &= 0xffff;
return goog.math.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32);
};
/**
* Returns this Long divided by the given one.
* @param {goog.math.Long} other Long by which to divide.
* @return {!goog.math.Long} This Long divided by the given one.
*/
goog.math.Long.prototype.div = function(other) {
if (other.isZero()) {
throw Error('division by zero');
} else if (this.isZero()) {
return goog.math.Long.ZERO;
}
if (this.equals(goog.math.Long.MIN_VALUE)) {
if (other.equals(goog.math.Long.ONE) || other.equals(goog.math.Long.NEG_ONE)) {
return goog.math.Long.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE
} else if (other.equals(goog.math.Long.MIN_VALUE)) {
return goog.math.Long.ONE;
} else {
// At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.
var halfThis = this.shiftRight(1);
var approx = halfThis.div(other).shiftLeft(1);
if (approx.equals(goog.math.Long.ZERO)) {
return other.isNegative() ? goog.math.Long.ONE : goog.math.Long.NEG_ONE;
} else {
var rem = this.subtract(other.multiply(approx));
var result = approx.add(rem.div(other));
return result;
}
}
} else if (other.equals(goog.math.Long.MIN_VALUE)) {
return goog.math.Long.ZERO;
}
if (this.isNegative()) {
if (other.isNegative()) {
return this.negate().div(other.negate());
} else {
return this.negate()
.div(other)
.negate();
}
} else if (other.isNegative()) {
return this.div(other.negate()).negate();
}
// Repeat the following until the remainder is less than other: find a
// floating-point that approximates remainder / other *from below*, add this
// into the result, and subtract it from the remainder. It is critical that
// the approximate value is less than or equal to the real value so that the
// remainder never becomes negative.
var res = goog.math.Long.ZERO;
var rem = this;
while (rem.greaterThanOrEqual(other)) {
// Approximate the result of division. This may be a little greater or
// smaller than the actual value.
var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber()));
// We will tweak the approximate result by changing it in the 48-th digit or
// the smallest non-fractional digit, whichever is larger.
var log2 = Math.ceil(Math.log(approx) / Math.LN2);
var delta = log2 <= 48 ? 1 : Math.pow(2, log2 - 48);
// Decrease the approximation until it is smaller than the remainder. Note
// that if it is too large, the product overflows and is negative.
var approxRes = goog.math.Long.fromNumber(approx);
var approxRem = approxRes.multiply(other);
while (approxRem.isNegative() || approxRem.greaterThan(rem)) {
approx -= delta;
approxRes = goog.math.Long.fromNumber(approx);
approxRem = approxRes.multiply(other);
}
// We know the answer can't be zero... and actually, zero would cause
// infinite recursion since we would make no progress.
if (approxRes.isZero()) {
approxRes = goog.math.Long.ONE;
}
res = res.add(approxRes);
rem = rem.subtract(approxRem);
}
return res;
};
/**
* Returns this Long modulo the given one.
* @param {goog.math.Long} other Long by which to mod.
* @return {!goog.math.Long} This Long modulo the given one.
*/
goog.math.Long.prototype.modulo = function(other) {
return this.subtract(this.div(other).multiply(other));
};
/** @return {!goog.math.Long} The bitwise-NOT of this value. */
goog.math.Long.prototype.not = function() {
return goog.math.Long.fromBits(~this.low_, ~this.high_);
};
/**
* Returns the bitwise-AND of this Long and the given one.
* @param {goog.math.Long} other The Long with which to AND.
* @return {!goog.math.Long} The bitwise-AND of this and the other.
*/
goog.math.Long.prototype.and = function(other) {
return goog.math.Long.fromBits(this.low_ & other.low_, this.high_ & other.high_);
};
/**
* Returns the bitwise-OR of this Long and the given one.
* @param {goog.math.Long} other The Long with which to OR.
* @return {!goog.math.Long} The bitwise-OR of this and the other.
*/
goog.math.Long.prototype.or = function(other) {
return goog.math.Long.fromBits(this.low_ | other.low_, this.high_ | other.high_);
};
/**
* Returns the bitwise-XOR of this Long and the given one.
* @param {goog.math.Long} other The Long with which to XOR.
* @return {!goog.math.Long} The bitwise-XOR of this and the other.
*/
goog.math.Long.prototype.xor = function(other) {
return goog.math.Long.fromBits(this.low_ ^ other.low_, this.high_ ^ other.high_);
};
/**
* Returns this Long with bits shifted to the left by the given amount.
* @param {number} numBits The number of bits by which to shift.
* @return {!goog.math.Long} This shifted to the left by the given amount.
*/
goog.math.Long.prototype.shiftLeft = function(numBits) {
numBits &= 63;
if (numBits == 0) {
return this;
} else {
var low = this.low_;
if (numBits < 32) {
var high = this.high_;
return goog.math.Long.fromBits(low << numBits, (high << numBits) | (low >>> (32 - numBits)));
} else {
return goog.math.Long.fromBits(0, low << (numBits - 32));
}
}
};
/**
* Returns this Long with bits shifted to the right by the given amount.
* @param {number} numBits The number of bits by which to shift.
* @return {!goog.math.Long} This shifted to the right by the given amount.
*/
goog.math.Long.prototype.shiftRight = function(numBits) {
numBits &= 63;
if (numBits == 0) {
return this;
} else {
var high = this.high_;
if (numBits < 32) {
var low = this.low_;
return goog.math.Long.fromBits((low >>> numBits) | (high << (32 - numBits)), high >> numBits);
} else {
return goog.math.Long.fromBits(high >> (numBits - 32), high >= 0 ? 0 : -1);
}
}
};
/**
* Returns this Long with bits shifted to the right by the given amount, with
* the new top bits matching the current sign bit.
* @param {number} numBits The number of bits by which to shift.
* @return {!goog.math.Long} This shifted to the right by the given amount, with
* zeros placed into the new leading bits.
*/
goog.math.Long.prototype.shiftRightUnsigned = function(numBits) {
numBits &= 63;
if (numBits == 0) {
return this;
} else {
var high = this.high_;
if (numBits < 32) {
var low = this.low_;
return goog.math.Long.fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits);
} else if (numBits == 32) {
return goog.math.Long.fromBits(high, 0);
} else {
return goog.math.Long.fromBits(high >>> (numBits - 32), 0);
}
}
};
//======= begin jsbn =======
var navigator = { appName: 'Modern Browser' }; // polyfill a little
// Copyright (c) 2005 Tom Wu
// All Rights Reserved.
// http://www-cs-students.stanford.edu/~tjw/jsbn/
/*
* Copyright (c) 2003-2005 Tom Wu
* All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
* INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER
* RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF
* THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* In addition, the following condition applies:
*
* All redistributions must retain an intact copy of this copyright notice
* and disclaimer.
*/
// Basic JavaScript BN library - subset useful for RSA encryption.
// Bits per digit
var dbits;
// JavaScript engine analysis
var canary = 0xdeadbeefcafe;
var j_lm = (canary & 0xffffff) == 0xefcafe;
// (public) Constructor
function BigInteger(a, b, c) {
if (a != null)
if ('number' == typeof a) this.fromNumber(a, b, c);
else if (b == null && 'string' != typeof a) this.fromString(a, 256);
else this.fromString(a, b);
}
// return new, unset BigInteger
function nbi() {
return new BigInteger(null);
}
// am: Compute w_j += (x*this_i), propagate carries,
// c is initial carry, returns final carry.
// c < 3*dvalue, x < 2*dvalue, this_i < dvalue
// We need to select the fastest one that works in this environment.
// am1: use a single mult and divide to get the high bits,
// max digit bits should be 26 because
// max internal value = 2*dvalue^2-2*dvalue (< 2^53)
function am1(i, x, w, j, c, n) {
while (--n >= 0) {
var v = x * this[i++] + w[j] + c;
c = Math.floor(v / 0x4000000);
w[j++] = v & 0x3ffffff;
}
return c;
}
// am2 avoids a big mult-and-extract completely.
// Max digit bits should be <= 30 because we do bitwise ops
// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
function am2(i, x, w, j, c, n) {
var xl = x & 0x7fff,
xh = x >> 15;
while (--n >= 0) {
var l = this[i] & 0x7fff;
var h = this[i++] >> 15;
var m = xh * l + h * xl;
l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff);
c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30);
w[j++] = l & 0x3fffffff;
}
return c;
}
// Alternately, set max digit bits to 28 since some
// browsers slow down when dealing with 32-bit numbers.
function am3(i, x, w, j, c, n) {
var xl = x & 0x3fff,
xh = x >> 14;
while (--n >= 0) {
var l = this[i] & 0x3fff;
var h = this[i++] >> 14;
var m = xh * l + h * xl;
l = xl * l + ((m & 0x3fff) << 14) + w[j] + c;
c = (l >> 28) + (m >> 14) + xh * h;
w[j++] = l & 0xfffffff;
}
return c;
}
if (j_lm && navigator.appName == 'Microsoft Internet Explorer') {
BigInteger.prototype.am = am2;
dbits = 30;
} else if (j_lm && navigator.appName != 'Netscape') {
BigInteger.prototype.am = am1;
dbits = 26;
} else {
// Mozilla/Netscape seems to prefer am3
BigInteger.prototype.am = am3;
dbits = 28;
}
BigInteger.prototype.DB = dbits;
BigInteger.prototype.DM = (1 << dbits) - 1;
BigInteger.prototype.DV = 1 << dbits;
var BI_FP = 52;
BigInteger.prototype.FV = Math.pow(2, BI_FP);
BigInteger.prototype.F1 = BI_FP - dbits;
BigInteger.prototype.F2 = 2 * dbits - BI_FP;
// Digit conversions
var BI_RM = '0123456789abcdefghijklmnopqrstuvwxyz';
var BI_RC = new Array();
var rr, vv;
rr = '0'.charCodeAt(0);
for (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;
rr = 'a'.charCodeAt(0);
for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
rr = 'A'.charCodeAt(0);
for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
function int2char(n) {
return BI_RM.charAt(n);
}
function intAt(s, i) {
var c = BI_RC[s.charCodeAt(i)];
return c == null ? -1 : c;
}
// (protected) copy this to r
function bnpCopyTo(r) {
for (var i = this.t - 1; i >= 0; --i) r[i] = this[i];
r.t = this.t;
r.s = this.s;
}
// (protected) set from integer value x, -DV <= x < DV
function bnpFromInt(x) {
this.t = 1;
this.s = x < 0 ? -1 : 0;
if (x > 0) this[0] = x;
else if (x < -1) this[0] = x + DV;
else this.t = 0;
}
// return bigint initialized to value
function nbv(i) {
var r = nbi();
r.fromInt(i);
return r;
}
// (protected) set from string and radix
function bnpFromString(s, b) {
var k;
if (b == 16) k = 4;
else if (b == 8) k = 3;
else if (b == 256) k = 8;
// byte array
else if (b == 2) k = 1;
else if (b == 32) k = 5;
else if (b == 4) k = 2;
else {
this.fromRadix(s, b);
return;
}
this.t = 0;
this.s = 0;
var i = s.length,
mi = false,
sh = 0;
while (--i >= 0) {
var x = k == 8 ? s[i] & 0xff : intAt(s, i);
if (x < 0) {
if (s.charAt(i) == '-') mi = true;
continue;
}
mi = false;
if (sh == 0) this[this.t++] = x;
else if (sh + k > this.DB) {
this[this.t - 1] |= (x & ((1 << (this.DB - sh)) - 1)) << sh;
this[this.t++] = x >> (this.DB - sh);
} else this[this.t - 1] |= x << sh;
sh += k;
if (sh >= this.DB) sh -= this.DB;
}
if (k == 8 && (s[0] & 0x80) != 0) {
this.s = -1;
if (sh > 0) this[this.t - 1] |= ((1 << (this.DB - sh)) - 1) << sh;
}
this.clamp();
if (mi) BigInteger.ZERO.subTo(this, this);
}
// (protected) clamp off excess high words
function bnpClamp() {
var c = this.s & this.DM;
while (this.t > 0 && this[this.t - 1] == c) --this.t;
}
// (public) return string representation in given radix
function bnToString(b) {
if (this.s < 0) return '-' + this.negate().toString(b);
var k;
if (b == 16) k = 4;
else if (b == 8) k = 3;
else if (b == 2) k = 1;
else if (b == 32) k = 5;
else if (b == 4) k = 2;
else return this.toRadix(b);
var km = (1 << k) - 1,
d,
m = false,
r = '',
i = this.t;
var p = this.DB - ((i * this.DB) % k);
if (i-- > 0) {
if (p < this.DB && (d = this[i] >> p) > 0) {
m = true;
r = int2char(d);
}
while (i >= 0) {
if (p < k) {
d = (this[i] & ((1 << p) - 1)) << (k - p);
d |= this[--i] >> (p += this.DB - k);
} else {
d = (this[i] >> (p -= k)) & km;
if (p <= 0) {
p += this.DB;
--i;
}
}
if (d > 0) m = true;
if (m) r += int2char(d);
}
}
return m ? r : '0';
}
// (public) -this
function bnNegate() {
var r = nbi();
BigInteger.ZERO.subTo(this, r);
return r;
}
// (public) |this|
function bnAbs() {
return this.s < 0 ? this.negate() : this;
}
// (public) return + if this > a, - if this < a, 0 if equal
function bnCompareTo(a) {
var r = this.s - a.s;
if (r != 0) return r;
var i = this.t;
r = i - a.t;
if (r != 0) return this.s < 0 ? -r : r;
while (--i >= 0) if ((r = this[i] - a[i]) != 0) return r;
return 0;
}
// returns bit length of the integer x
function nbits(x) {
var r = 1,
t;
if ((t = x >>> 16) != 0) {
x = t;
r += 16;
}
if ((t = x >> 8) != 0) {
x = t;
r += 8;
}
if ((t = x >> 4) != 0) {
x = t;
r += 4;
}
if ((t = x >> 2) != 0) {
x = t;
r += 2;
}
if ((t = x >> 1) != 0) {
x = t;
r += 1;
}
return r;
}
// (public) return the number of bits in "this"
function bnBitLength() {
if (this.t <= 0) return 0;
return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM));
}
// (protected) r = this << n*DB
function bnpDLShiftTo(n, r) {
var i;
for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i];
for (i = n - 1; i >= 0; --i) r[i] = 0;
r.t = this.t + n;
r.s = this.s;
}
// (protected) r = this >> n*DB
function bnpDRShiftTo(n, r) {
for (var i = n; i < this.t; ++i) r[i - n] = this[i];
r.t = Math.max(this.t - n, 0);
r.s = this.s;
}
// (protected) r = this << n
function bnpLShiftTo(n, r) {
var bs = n % this.DB;
var cbs = this.DB - bs;
var bm = (1 << cbs) - 1;
var ds = Math.floor(n / this.DB),
c = (this.s << bs) & this.DM,
i;
for (i = this.t - 1; i >= 0; --i) {
r[i + ds + 1] = (this[i] >> cbs) | c;
c = (this[i] & bm) << bs;
}
for (i = ds - 1; i >= 0; --i) r[i] = 0;
r[ds] = c;
r.t = this.t + ds + 1;
r.s = this.s;
r.clamp();
}
// (protected) r = this >> n
function bnpRShiftTo(n, r) {
r.s = this.s;
var ds = Math.floor(n / this.DB);
if (ds >= this.t) {
r.t = 0;
return;
}
var bs = n % this.DB;
var cbs = this.DB - bs;
var bm = (1 << bs) - 1;
r[0] = this[ds] >> bs;
for (var i = ds + 1; i < this.t; ++i) {
r[i - ds - 1] |= (this[i] & bm) << cbs;
r[i - ds] = this[i] >> bs;
}
if (bs > 0) r[this.t - ds - 1] |= (this.s & bm) << cbs;
r.t = this.t - ds;
r.clamp();
}
// (protected) r = this - a
function bnpSubTo(a, r) {
var i = 0,
c = 0,
m = Math.min(a.t, this.t);
while (i < m) {
c += this[i] - a[i];
r[i++] = c & this.DM;
c >>= this.DB;
}
if (a.t < this.t) {
c -= a.s;
while (i < this.t) {
c += this[i];
r[i++] = c & this.DM;
c >>= this.DB;
}
c += this.s;
} else {
c += this.s;
while (i < a.t) {
c -= a[i];
r[i++] = c & this.DM;
c >>= this.DB;
}
c -= a.s;
}
r.s = c < 0 ? -1 : 0;
if (c < -1) r[i++] = this.DV + c;
else if (c > 0) r[i++] = c;
r.t = i;
r.clamp();
}
// (protected) r = this * a, r != this,a (HAC 14.12)
// "this" should be the larger one if appropriate.
function bnpMultiplyTo(a, r) {
var x = this.abs(),
y = a.abs();
var i = x.t;
r.t = i + y.t;
while (--i >= 0) r[i] = 0;
for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t);
r.s = 0;
r.clamp();
if (this.s != a.s) BigInteger.ZERO.subTo(r, r);
}
// (protected) r = this^2, r != this (HAC 14.16)
function bnpSquareTo(r) {
var x = this.abs();
var i = (r.t = 2 * x.t);
while (--i >= 0) r[i] = 0;
for (i = 0; i < x.t - 1; ++i) {
var c = x.am(i, x[i], r, 2 * i, 0, 1);
if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {
r[i + x.t] -= x.DV;
r[i + x.t + 1] = 1;
}
}
if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1);
r.s = 0;
r.clamp();
}
// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
// r != q, this != m. q or r may be null.
function bnpDivRemTo(m, q, r) {
var pm = m.abs();
if (pm.t <= 0) return;
var pt = this.abs();
if (pt.t < pm.t) {
if (q != null) q.fromInt(0);
if (r != null) this.copyTo(r);
return;
}
if (r == null) r = nbi();
var y = nbi(),
ts = this.s,
ms = m.s;
var nsh = this.DB - nbits(pm[pm.t - 1]); // normalize modulus
if (nsh > 0) {
pm.lShiftTo(nsh, y);
pt.lShiftTo(nsh, r);
} else {
pm.copyTo(y);
pt.copyTo(r);
}
var ys = y.t;
var y0 = y[ys - 1];
if (y0 == 0) return;
var yt = y0 * (1 << this.F1) + (ys > 1 ? y[ys - 2] >> this.F2 : 0);
var d1 = this.FV / yt,
d2 = (1 << this.F1) / yt,
e = 1 << this.F2;
var i = r.t,
j = i - ys,
t = q == null ? nbi() : q;
y.dlShiftTo(j, t);
if (r.compareTo(t) >= 0) {
r[r.t++] = 1;
r.subTo(t, r);
}
BigInteger.ONE.dlShiftTo(ys, t);
t.subTo(y, y); // "negative" y so we can replace sub with am later
while (y.t < ys) y[y.t++] = 0;
while (--j >= 0) {
// Estimate quotient digit
var qd = r[--i] == y0 ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2);
if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) {
// Try it out
y.dlShiftTo(j, t);
r.subTo(t, r);
while (r[i] < --qd) r.subTo(t, r);
}
}
if (q != null) {
r.drShiftTo(ys, q);
if (ts != ms) BigInteger.ZERO.subTo(q, q);
}
r.t = ys;
r.clamp();
if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder
if (ts < 0) BigInteger.ZERO.subTo(r, r);
}
// (public) this mod a
function bnMod(a) {
var r = nbi();
this.abs().divRemTo(a, null, r);
if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r);
return r;
}
// Modular reduction using "classic" algorithm
function Classic(m) {
this.m = m;
}
function cConvert(x) {
if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);
else return x;
}
function cRevert(x) {
return x;
}
function cReduce(x) {
x.divRemTo(this.m, null, x);
}
function cMulTo(x, y, r) {
x.multiplyTo(y, r);
this.reduce(r);
}
function cSqrTo(x, r) {
x.squareTo(r);
this.reduce(r);
}
Classic.prototype.convert = cConvert;
Classic.prototype.revert = cRevert;
Classic.prototype.reduce = cReduce;
Classic.prototype.mulTo = cMulTo;
Classic.prototype.sqrTo = cSqrTo;
// (protected) return "-1/this % 2^DB"; useful for Mont. reduction
// justification:
// xy == 1 (mod m)
// xy = 1+km
// xy(2-xy) = (1+km)(1-km)
// x[y(2-xy)] = 1-k^2m^2
// x[y(2-xy)] == 1 (mod m^2)
// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
// JS multiply "overflows" differently from C/C++, so care is needed here.
function bnpInvDigit() {
if (this.t < 1) return 0;
var x = this[0];
if ((x & 1) == 0) return 0;
var y = x & 3; // y == 1/x mod 2^2
y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4
y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8
y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16
// last step - calculate inverse mod DV directly;
// assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
y = (y * (2 - ((x * y) % this.DV))) % this.DV; // y == 1/x mod 2^dbits
// we really want the negative inverse, and -DV < y < DV
return y > 0 ? this.DV - y : -y;
}
// Montgomery reduction
function Montgomery(m) {
this.m = m;
this.mp = m.invDigit();
this.mpl = this.mp & 0x7fff;
this.mph = this.mp >> 15;
this.um = (1 << (m.DB - 15)) - 1;
this.mt2 = 2 * m.t;
}
// xR mod m
function montConvert(x) {
var r = nbi();
x.abs().dlShiftTo(this.m.t, r);
r.divRemTo(this.m, null, r);
if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r);
return r;
}
// x/R mod m
function montRevert(x) {
var r = nbi();
x.copyTo(r);
this.reduce(r);
return r;
}
// x = x/R mod m (HAC 14.32)
function montReduce(x) {
while (
x.t <= this.mt2 // pad x so am has enough room later
)
x[x.t++] = 0;
for (var i = 0; i < this.m.t; ++i) {
// faster way of calculating u0 = x[i]*mp mod DV
var j = x[i] & 0x7fff;
var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM;
// use am to combine the multiply-shift-add into one call
j = i + this.m.t;
x[j] += this.m.am(0, u0, x, i, 0, this.m.t);
// propagate carry
while (x[j] >= x.DV) {
x[j] -= x.DV;
x[++j]++;
}
}
x.clamp();
x.drShiftTo(this.m.t, x);
if (x.compareTo(this.m) >= 0) x.subTo(this.m, x);
}
// r = "x^2/R mod m"; x != r
function montSqrTo(x, r) {
x.squareTo(r);
this.reduce(r);
}
// r = "xy/R mod m"; x,y != r
function montMulTo(x, y, r) {
x.multiplyTo(y, r);
this.reduce(r);
}
Montgomery.prototype.convert = montConvert;
Montgomery.prototype.revert = montRevert;
Montgomery.prototype.reduce = montReduce;
Montgomery.prototype.mulTo = montMulTo;
Montgomery.prototype.sqrTo = montSqrTo;
// (protected) true iff this is even
function bnpIsEven() {
return (this.t > 0 ? this[0] & 1 : this.s) == 0;
}
// (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
function bnpExp(e, z) {
if (e > 0xffffffff || e < 1) return BigInteger.ONE;
var r = nbi(),
r2 = nbi(),
g = z.convert(this),
i = nbits(e) - 1;
g.copyTo(r);
while (--i >= 0) {
z.sqrTo(r, r2);
if ((e & (1 << i)) > 0) z.mulTo(r2, g, r);
else {
var t = r;
r = r2;
r2 = t;
}
}
return z.revert(r);
}
// (public) this^e % m, 0 <= e < 2^32
function bnModPowInt(e, m) {
var z;
if (e < 256 || m.isEven()) z = new Classic(m);
else z = new Montgomery(m);
return this.exp(e, z);
}
// protected
BigInteger.prototype.copyTo = bnpCopyTo;
BigInteger.prototype.fromInt = bnpFromInt;
BigInteger.prototype.fromString = bnpFromString;
BigInteger.prototype.clamp = bnpClamp;
BigInteger.prototype.dlShiftTo = bnpDLShiftTo;
BigInteger.prototype.drShiftTo = bnpDRShiftTo;
BigInteger.prototype.lShiftTo = bnpLShiftTo;
BigInteger.prototype.rShiftTo = bnpRShiftTo;
BigInteger.prototype.subTo = bnpSubTo;
BigInteger.prototype.multiplyTo = bnpMultiplyTo;
BigInteger.prototype.squareTo = bnpSquareTo;
BigInteger.prototype.divRemTo = bnpDivRemTo;
BigInteger.prototype.invDigit = bnpInvDigit;
BigInteger.prototype.isEven = bnpIsEven;
BigInteger.prototype.exp = bnpExp;
// public
BigInteger.prototype.toString = bnToString;
BigInteger.prototype.negate = bnNegate;
BigInteger.prototype.abs = bnAbs;
BigInteger.prototype.compareTo = bnCompareTo;
BigInteger.prototype.bitLength = bnBitLength;
BigInteger.prototype.mod = bnMod;
BigInteger.prototype.modPowInt = bnModPowInt;
// "constants"
BigInteger.ZERO = nbv(0);
BigInteger.ONE = nbv(1);
// jsbn2 stuff
// (protected) convert from radix string
function bnpFromRadix(s, b) {
this.fromInt(0);
if (b == null) b = 10;
var cs = this.chunkSize(b);
var d = Math.pow(b, cs),
mi = false,
j = 0,
w = 0;
for (var i = 0; i < s.length; ++i) {
var x = intAt(s, i);
if (x < 0) {
if (s.charAt(i) == '-' && this.signum() == 0) mi = true;
continue;
}
w = b * w + x;
if (++j >= cs) {
this.dMultiply(d);
this.dAddOffset(w, 0);
j = 0;
w = 0;
}
}
if (j > 0) {
this.dMultiply(Math.pow(b, j));
this.dAddOffset(w, 0);
}
if (mi) BigInteger.ZERO.subTo(this, this);
}
// (protected) return x s.t. r^x < DV
function bnpChunkSize(r) {
return Math.floor((Math.LN2 * this.DB) / Math.log(r));
}
// (public) 0 if this == 0, 1 if this > 0
function bnSigNum() {
if (this.s < 0) return -1;
else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;
else return 1;
}
// (protected) this *= n, this >= 0, 1 < n < DV
function bnpDMultiply(n) {
this[this.t] = this.am(0, n - 1, this, 0, 0, this.t);
++this.t;
this.clamp();
}
// (protected) this += n << w words, this >= 0
function bnpDAddOffset(n, w) {
if (n == 0) return;
while (this.t <= w) this[this.t++] = 0;
this[w] += n;
while (this[w] >= this.DV) {
this[w] -= this.DV;
if (++w >= this.t) this[this.t++] = 0;
++this[w];
}
}
// (protected) convert to radix string
function bnpToRadix(b) {
if (b == null) b = 10;
if (this.signum() == 0 || b < 2 || b > 36) return '0';
var cs = this.chunkSize(b);
var a = Math.pow(b, cs);
var d = nbv(a),
y = nbi(),
z = nbi(),
r = '';
this.divRemTo(d, y, z);
while (y.signum() > 0) {
r = (a + z.intValue()).toString(b).substr(1) + r;
y.divRemTo(d, y, z);
}
return z.intValue().toString(b) + r;
}
// (public) return value as integer
function bnIntValue() {
if (this.s < 0) {
if (this.t == 1) return this[0] - this.DV;
else if (this.t == 0) return -1;
} else if (this.t == 1) return this[0];
else if (this.t == 0) return 0;
// assumes 16 < DB < 32
return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0];
}
// (protected) r = this + a
function bnpAddTo(a, r) {
var i = 0,
c = 0,
m = Math.min(a.t, this.t);
while (i < m) {
c += this[i] + a[i];
r[i++] = c & this.DM;
c >>= this.DB;
}
if (a.t < this.t) {
c += a.s;
while (i < this.t) {
c += this[i];
r[i++] = c & this.DM;
c >>= this.DB;
}
c += this.s;
} else {
c += this.s;
while (i < a.t) {
c += a[i];
r[i++] = c & this.DM;
c >>= this.DB;
}
c += a.s;
}
r.s = c < 0 ? -1 : 0;
if (c > 0) r[i++] = c;
else if (c < -1) r[i++] = this.DV + c;
r.t = i;
r.clamp();
}
BigInteger.prototype.fromRadix = bnpFromRadix;
BigInteger.prototype.chunkSize = bnpChunkSize;
BigInteger.prototype.signum = bnSigNum;
BigInteger.prototype.dMultiply = bnpDMultiply;
BigInteger.prototype.dAddOffset = bnpDAddOffset;
BigInteger.prototype.toRadix = bnpToRadix;
BigInteger.prototype.intValue = bnIntValue;
BigInteger.prototype.addTo = bnpAddTo;
//======= end jsbn =======
// Emscripten wrapper
var Wrapper = {
abs: function(l, h) {
var x = new goog.math.Long(l, h);
var ret;
if (x.isNegative()) {
ret = x.negate();
} else {
ret = x;
}
HEAP32[tempDoublePtr >> 2] = ret.low_;
HEAP32[(tempDoublePtr + 4) >> 2] = ret.high_;
},
ensureTemps: function() {
if (Wrapper.ensuredTemps) return;
Wrapper.ensuredTemps = true;
Wrapper.two32 = new BigInteger();
Wrapper.two32.fromString('4294967296', 10);
Wrapper.two64 = new BigInteger();
Wrapper.two64.fromString('18446744073709551616', 10);
Wrapper.temp1 = new BigInteger();
Wrapper.temp2 = new BigInteger();
},
lh2bignum: function(l, h) {
var a = new BigInteger();
a.fromString(h.toString(), 10);
var b = new BigInteger();
a.multiplyTo(Wrapper.two32, b);
var c = new BigInteger();
c.fromString(l.toString(), 10);
var d = new BigInteger();
c.addTo(b, d);
return d;
},
stringify: function(l, h, unsigned) {
var ret = new goog.math.Long(l, h).toString();
if (unsigned && ret[0] == '-') {
// unsign slowly using jsbn bignums
Wrapper.ensureTemps();
var bignum = new BigInteger();
bignum.fromString(ret, 10);
ret = new BigInteger();
Wrapper.two64.addTo(bignum, ret);
ret = ret.toString(10);
}
return ret;
},
fromString: function(str, base, min, max, unsigned) {
Wrapper.ensureTemps();
var bignum = new BigInteger();
bignum.fromString(str, base);
var bigmin = new BigInteger();
bigmin.fromString(min, 10);
var bigmax = new BigInteger();
bigmax.fromString(max, 10);
if (unsigned && bignum.compareTo(BigInteger.ZERO) < 0) {
var temp = new BigInteger();
bignum.addTo(Wrapper.two64, temp);
bignum = temp;
}
var error = false;
if (bignum.compareTo(bigmin) < 0) {
bignum = bigmin;
error = true;
} else if (bignum.compareTo(bigmax) > 0) {
bignum = bigmax;
error = true;
}
var ret = goog.math.Long.fromString(bignum.toString()); // min-max checks should have clamped this to a range goog.math.Long can handle well
HEAP32[tempDoublePtr >> 2] = ret.low_;
HEAP32[(tempDoublePtr + 4) >> 2] = ret.high_;
if (error) throw 'range error';
}
};
return Wrapper;
})();
//======= end closure i64 code =======
// === Auto-generated postamble setup entry stuff ===
if (memoryInitializer) {
if (typeof Module['locateFile'] === 'function') {
memoryInitializer = Module['locateFile'](memoryInitializer);
} else if (Module['memoryInitializerPrefixURL']) {
memoryInitializer = Module['memoryInitializerPrefixURL'] + memoryInitializer;
}
if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) {
var data = Module['readBinary'](memoryInitializer);
HEAPU8.set(data, STATIC_BASE);
} else {
addRunDependency('memory initializer');
Browser.asyncLoad(
memoryInitializer,
function(data) {
HEAPU8.set(data, STATIC_BASE);
removeRunDependency('memory initializer');
},
function(data) {
throw 'could not load memory initializer ' + memoryInitializer;
}
);
}
}
function ExitStatus(status) {
this.name = 'ExitStatus';
this.message = 'Program terminated with exit(' + status + ')';
this.status = status;
}
ExitStatus.prototype = new Error();
ExitStatus.prototype.constructor = ExitStatus;
var initialStackTop;
var preloadStartTime = null;
var calledMain = false;
dependenciesFulfilled = function runCaller() {
// If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false)
if (!Module['calledRun'] && shouldRunNow) run();
if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled
};
Module['callMain'] = Module.callMain = function callMain(args) {
assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)');
assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called');
args = args || [];
ensureInitRuntime();
var argc = args.length + 1;
function pad() {
for (var i = 0; i < 4 - 1; i++) {
argv.push(0);
}
}
var argv = [allocate(intArrayFromString(Module['thisProgram']), 'i8', ALLOC_NORMAL)];
pad();
for (var i = 0; i < argc - 1; i = i + 1) {
argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL));
pad();
}
argv.push(0);
argv = allocate(argv, 'i32', ALLOC_NORMAL);
initialStackTop = STACKTOP;
try {
var ret = Module['_main'](argc, argv, 0);
// if we're not running an evented main loop, it's time to exit
exit(ret);
} catch (e) {
if (e instanceof ExitStatus) {
// exit() throws this once it's done to make sure execution
// has been stopped completely
return;
} else if (e == 'SimulateInfiniteLoop') {
// running an evented main loop, don't immediately exit
Module['noExitRuntime'] = true;
return;
} else {
if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]);
throw e;
}
} finally {
calledMain = true;
}
};
function run(args) {
args = args || Module['arguments'];
if (preloadStartTime === null) preloadStartTime = Date.now();
if (runDependencies > 0) {
return;
}
preRun();
if (runDependencies > 0) return; // a preRun added a dependency, run will be called later
if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame
function doRun() {
if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening
Module['calledRun'] = true;
if (ABORT) return;
ensureInitRuntime();
preMain();
if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) {
Module.printErr('pre-main prep time: ' + (Date.now() - preloadStartTime) + ' ms');
}
if (Module['_main'] && shouldRunNow) {
Module['callMain'](args);
}
postRun();
}
if (Module['setStatus']) {
Module['setStatus']('Running...');
setTimeout(function() {
setTimeout(function() {
Module['setStatus']('');
}, 1);
doRun();
}, 1);
} else {
doRun();
}
}
Module['run'] = Module.run = run;
function exit(status) {
if (Module['noExitRuntime']) {
return;
}
ABORT = true;
EXITSTATUS = status;
STACKTOP = initialStackTop;
// exit the runtime
exitRuntime();
if (ENVIRONMENT_IS_NODE) {
// Work around a node.js bug where stdout buffer is not flushed at process exit:
// Instead of process.exit() directly, wait for stdout flush event.
// See https://github.com/joyent/node/issues/1669 and https://github.com/kripken/emscripten/issues/2582
// Workaround is based on https://github.com/RReverser/acorn/commit/50ab143cecc9ed71a2d66f78b4aec3bb2e9844f6
process['stdout']['once']('drain', function() {
process['exit'](status);
});
console.log(' '); // Make sure to print something to force the drain event to occur, in case the stdout buffer was empty.
// Work around another node bug where sometimes 'drain' is never fired - make another effort
// to emit the exit status, after a significant delay (if node hasn't fired drain by then, give up)
setTimeout(function() {
process['exit'](status);
}, 500);
} else if (ENVIRONMENT_IS_SHELL && typeof quit === 'function') {
quit(status);
}
// if we reach here, we must throw an exception to halt the current execution
throw new ExitStatus(status);
}
Module['exit'] = Module.exit = exit;
function abort(text) {
if (text) {
Module.print(text);
Module.printErr(text);
}
ABORT = true;
EXITSTATUS = 1;
var extra = '\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.';
throw 'abort() at ' + stackTrace() + extra;
}
Module['abort'] = Module.abort = abort;
// {{PRE_RUN_ADDITIONS}}
if (Module['preInit']) {
if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']];
while (Module['preInit'].length > 0) {
Module['preInit'].pop()();
}
}
// shouldRunNow refers to calling main(), not run().
var shouldRunNow = true;
if (Module['noInitialRun']) {
shouldRunNow = false;
}
run();
// {{POST_RUN_ADDITIONS}}
// {{MODULE_ADDITIONS}}
return result;
}
================================================
FILE: public/index.html
================================================
QR Code Scanner
About
QR Code Scanner is the fastest and most user-friendly progressive web application.
v1.0.2
Close
================================================
FILE: public/manifest.json
================================================
{
"short_name": "QR Scanner",
"name": "QR Code Scanner",
"description": "Easily scan a QR code. This is a simple, tiny, and super fast web application that works offline.",
"display": "standalone",
"orientation": "portrait",
"icons": [
{
"src": "/images/touch/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/images/touch/android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png"
}],
"start_url": "/index.html?utm_source=homescreen",
"theme_color": "#e4e4e4",
"background_color": "#fff",
"screenshots": [
{
"src": "/images/screenshots/screenshot1.png",
"type": "image/png",
"sizes": "586x1041"
},
{
"src": "/images/screenshots/screenshot2.png",
"type": "image/png",
"sizes": "586x1041"
},
{
"src": "/images/screenshots/screenshot3.png",
"type": "image/png",
"sizes": "586x1041"
}
]
}
================================================
FILE: public/robots.txt
================================================
User-agent: Googlebot
Disallow: /nogooglebot/
User-agent: *
Allow: /
Sitemap: https://www.qrcodescan.in/sitemap.xml
Sitemap: http://www.qrcodescan.in/sitemap.xml
================================================
FILE: public/sitemap.xml
================================================
https://qrcodescan.in/
================================================
FILE: rollup.config.js
================================================
import { terser } from 'rollup-plugin-terser';
import del from 'rollup-plugin-delete';
import { generateSW } from 'rollup-plugin-workbox';
import sizes from 'rollup-plugin-sizes';
import css from 'rollup-plugin-css-only';
const isProd = process.env.NODE_ENV === 'production';
export default {
input: ['src/js/index.js'],
output: [
{
file: 'public/bundle.js',
format: 'cjs',
assetFileNames: '[name]-[hash][extname]',
},
],
plugins: [
del({ targets: ['public/workbox-*.js', 'public/sw.js', 'public/bundle.js', 'public/bundle.css'] }),
css({ output: 'bundle.css' }),
terser(),
isProd &&
generateSW({
swDest: 'public/service-worker.js',
globDirectory: './public',
clientsClaim: true,
skipWaiting: true,
runtimeCaching: [
{
urlPattern: isProd ? /https:\/\/qrcodescan.in\// : /http:\/\/localhost:5000\//,
handler: 'CacheFirst',
options: {
cacheName: 'pages',
cacheableResponse: { statuses: [200] },
},
},
],
}),
sizes(),
],
};
================================================
FILE: src/css/styles.css
================================================
html,
body,
p,
ol,
ul,
li,
dl,
dt,
dd,
blockquote,
figure,
fieldset,
legend,
textarea,
pre,
iframe,
hr,
h1,
h2,
h3,
h4,
h5,
h6 {
margin: 0;
padding: 0;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-size: 100%;
font-weight: normal;
}
ul {
list-style: none;
}
button,
input,
select,
textarea {
margin: 0
}
html {
box-sizing: border-box
}
*,
*:before,
*:after {
box-sizing: inherit
}
img,
embed,
object,
audio {
height: auto;
max-width: 100%
}
iframe {
border: 0
}
table {
border-collapse: collapse;
border-spacing: 0
}
td,
th {
padding: 0;
text-align: left
}
body {
font-family: Roboto, Helvetica,Arial,sans-serif;
-webkit-font-smoothing: antialiased;
}
.app__layout {
position: absolute;
width: 100%;
height: 100%;
overflow: hidden;
background-color: rgba(0, 0, 0, 0.5);
}
.app__header {
width: 100%;
height: 56px;
color: #fff;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 10;
}
.app__header-icon {
width: 35px;
height: 35px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
cursor: pointer;
position: absolute;
right: 20px;
top: 20px;
}
.app__header-icon:active {
opacity: 0.8;
}
.app__header-title {
margin-left: 5px;
font-size: 19px;
user-select: none;
}
.app__layout-content {
height: inherit;
/*margin-top: 56px;*/
}
.custom-menu-icon {
font-size: 28px;
line-height: 47px;
}
.custom-title,
.custom-menu-icon {
color: #fff;
}
.custom-btn {
position: fixed;
right: 26px;
bottom: 26px;
background: #448aff;
border-radius: 50%;
border: none;
width: 56px;
height: 56px;
outline: none;
box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.2), 0 1px 5px 0 rgba(0,0,0,.12);
z-index: 9999;
}
.custom-btn:active {
box-shadow: none;
}
.custom-msg {
text-align: center;
width: 90%;
height: 50%;
overflow: auto;
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
font-size: 16px;
}
.custom-fab-icon {
color: #fff;
font-size: 30px;
margin-top: 2px;
user-select: none;
}
video {
transform: translateX(-50%) translateY(-50%);
top: 50%;
left: 50%;
min-width: 100%;
min-height: 100%;
width: auto;
height: auto;
position: absolute;
}
#list li {
list-style-type: none;
text-decoration: underline;
color: #00F;
}
.custom-copy-btn {
opacity: 0;
}
.hide {
display: none;
}
@-webkit-keyframes scanner {
0% {
bottom: 90%;
}
50% {
bottom: 10%;
}
100% {
bottom: 90%;
}
}
@-moz-keyframes scanner {
0% {
bottom: 90%;
}
50% {
bottom: 10%;
}
100% {
bottom: 90%;
}
}
@-o-keyframes scanner {
0% {
bottom: 90%;
}
50% {
bottom: 10%;
}
100% {
bottom: 90%;
}
}
@keyframes scanner {
0% {
bottom: 90%;
}
50% {
bottom: 10%;
}
100% {
bottom: 90%;
}
}
.custom-scanner {
width: 270px;
height: 2px;
background: #4CAF50;
position: absolute;
-webkit-transition: all 200ms linear;
-moz-transition: all 200ms linear;
transition: all 200ms linear;
-webkit-animation: scanner 3s infinite linear;
-moz-animation: scanner 3s infinite linear;
-o-animation: scanner 3s infinite linear;
animation: scanner 3s infinite linear;
box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.4);
display: none;
left: -10px;
right: 0;
margin: auto;
}
#camera {
opacity: 0;
}
.no-support {
font-size: 20px;
text-align: center;
}
.app__snackbar {
position: fixed;
bottom: 15px;
left: 20px;
pointer-events: none;
z-index: 9999;
}
.app__snackbar-msg {
width: 250px;
min-height: 50px;
background-color: #404040;
color: #fff;
border-radius: 3px;
box-shadow: 0 0 2px rgba(0,0,0,.12), 0 2px 4px rgba(0,0,0,.24);
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
font-size: 14px;
font-weight: 500;
padding-left: 15px;
padding-right: 10px;
word-break: break-all;
-webkit-transition: opacity 3s cubic-bezier(0, 0, 0.30, 1) 0;
transition: opacity 0.30s cubic-bezier(0, 0, 0.30, 1) 0;
text-transform: initial;
margin-bottom: 10px;
z-index: 9999;
}
.app__snackbar--hide {
opacity: 0;
}
.app__infodialog,
.app__dialog {
z-index: 12;
background-color: #fff;
width: 290px;
height: 180px;
border-radius: 8px;
display: flex;
position: absolute;
left: 0;
right: 0;
bottom: 0;
top: 0;
margin: auto;
box-shadow: 0 9px 46px 8px rgba(0,0,0,.14), 0 11px 15px -7px rgba(0,0,0,.12), 0 24px 38px 3px rgba(0,0,0,.2);
}
.app__infodialog {
max-width: 480px;
width: 95%;
height: 240px;
}
.app__dialog-content,
.app__infodialog-content {
width: 100%;
padding: 15px;
}
.app__infodialog-subcontent {
margin-top: 18px;
}
.app__infodialog-subcontent a {
color: #1b1eb5;
}
.app__infodialog-subcontent p:not(:first-child) {
margin-top: 10px;
}
.app__dialog-content h1,
.app__infodialog h1 {
margin-top: 5px;
margin-bottom: 15px;
font-weight: 600;
font-size: 19px;
}
.app__dialog input {
width: 250px;
height: 30px;
border: none;
border-bottom: 1px solid rgba(0,0,0,.24);
outline: none;
font-size: 15px;
color: #1b1eb5;
font-weight: 500;
}
.app__dialog-actions,
.app__infodialog-actions {
display: block;
position: absolute;
bottom: 13px;
right: 20px;
}
.app__infodialog-open,
.app__infodialog-close,
.app__dialog-open,
.app__dialog-close {
border: 0;
height: 35px;
width: 70px;
font-size: 16px;
background: transparent;
font-weight: 500;
outline: none;
cursor: pointer;
margin-right: -15px;
}
.app__dialog-open {
display: none;
}
.app__infodialog-open:active,
.app__infodialog-close:active,
.app__dialog-open:active,
.app__dialog-close:active {
opacity: 0.9;
}
.app__infodialog--hide,
.app__dialog--hide {
display: none;
}
.app__overlay {
position: fixed;
top: 0;
bottom: 0;
right: 0;
left: 0;
transition: all 200ms ease-in;
width: 310px;
height: 310px;
margin: auto;
}
.app__overlay-left,
.app__overlay-right {
width: 52px;
height: 340px;
background: #7f7f7f;
}
.app__overlay-left {
margin-left: -57px;
margin-top: -10px;
}
.app__overlay-right {
margin-right: -57px;
margin-top: -340px;
float: right;
}
.app__overlay {
border: 0;
}
.app__help-text,
.app__select-photos {
color: #fff;
position: absolute;
bottom: -70px;
font-size: 18px;
right: 0;
text-align: center;
user-select: none;
}
.app__help-text {
display: none;
left: 0;
}
.app__dialog-overlay,
.app__infodialog-overlay {
position: fixed;
left: 0;
right: 0;
bottom: 0;
top: 0;
background: rgba(0, 0, 0, 0.55);
z-index: 11;
}
.camera__icon,
.focus__icon {
position: relative;
left: 10px;
display: none;
}
.app__select-photos {
width: 58px;
height: 58px;
cursor: pointer;
position: fixed;
bottom: 20px;
right: 20px;
border-radius: 50%;
background-color: #3F51B5;
display: flex;
align-items: center;
justify-content: center;
}
.app__select-photos:active {
opacity: 0.8;
}
input[type='file'] {
display: none;
}
#frame {
width: auto;
height: auto;
}
.app__version {
position: absolute;
bottom: 20px;
font-size: 12px;
color: #737373;
margin-top: 15px;
display: inline-block;
}
.app__scanner-img {
z-index: 1;
position: relative;
display: none;
}
@media screen and (max-width: 480px) {
.app__infodialog {
width: 90%;
}
.app__infodialog-content {
padding: 12px 13px;
}
}
================================================
FILE: src/js/index.js
================================================
import QRReader from './vendor/qrscan.js';
import snackbar from './snackbar.js';
import { isURL, hasProtocolInUrl } from './utils';
import '../css/styles.css';
//If service worker is installed, show offline usage notification
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker
.register('/service-worker.js')
.then((reg) => {
// console.log('SW registered: ', reg);
if (!localStorage.getItem('offline')) {
localStorage.setItem('offline', true);
snackbar.show('App is ready for offline usage.', 5000);
}
})
.catch((regError) => {
console.log('SW registration failed: ', regError);
});
});
}
window.addEventListener('DOMContentLoaded', () => {
//To check the device and add iOS support
window.iOS = ['iPad', 'iPhone', 'iPod'].indexOf(navigator.platform) >= 0;
window.isMediaStreamAPISupported = navigator && navigator.mediaDevices && 'enumerateDevices' in navigator.mediaDevices;
window.noCameraPermission = false;
var copiedText = null;
var frame = null;
var selectPhotoBtn = document.querySelector('.app__select-photos');
var dialogElement = document.querySelector('.app__dialog');
var dialogOverlayElement = document.querySelector('.app__dialog-overlay');
var dialogOpenBtnElement = document.querySelector('.app__dialog-open');
var dialogCloseBtnElement = document.querySelector('.app__dialog-close');
var scanningEle = document.querySelector('.custom-scanner');
var appScanningEle = document.querySelector('.app__scanner-img');
var textBoxEle = document.querySelector('#result');
var helpTextEle = document.querySelector('.app__help-text');
var infoSvg = document.querySelector('.app__header-icon svg');
var videoElement = document.querySelector('video');
var headerIcon = document.querySelector('.app__header-icon');
var infoDialogElement = document.querySelector('.app__infodialog');
var infoDialogCloseBtnElement = document.querySelector('.app__infodialog-close');
var infoDialogOverlayElement = document.querySelector('.app__infodialog-overlay');
window.appOverlay = document.querySelector('.app__overlay');
//Initializing qr scanner
window.addEventListener('load', (event) => {
QRReader.init(); //To initialize QR Scanner
// Set camera overlay size
setTimeout(() => {
setCameraOverlay();
if (window.isMediaStreamAPISupported) {
scan();
}
}, 1000);
// To support other browsers who dont have mediaStreamAPI
selectFromPhoto();
});
function setCameraOverlay() {
window.appOverlay.style.borderStyle = 'solid';
}
function createFrame() {
frame = document.createElement('img');
frame.src = '';
frame.id = 'frame';
}
//Dialog close btn event
dialogCloseBtnElement.addEventListener('click', hideDialog, false);
infoDialogCloseBtnElement.addEventListener('click', closeInfoDialog, false);
dialogOpenBtnElement.addEventListener('click', openInBrowser, false);
headerIcon.addEventListener('click', showInfo, false);
//To open result in browser
function openInBrowser() {
// console.log('Result: ', copiedText);
if (!hasProtocolInUrl(copiedText)) {
copiedText = `//${copiedText}`;
}
window.open(copiedText, '_blank', 'toolbar=0,location=0,menubar=0');
copiedText = null;
hideDialog();
}
//Scan
function scan(forSelectedPhotos = false) {
if (window.isMediaStreamAPISupported && !window.noCameraPermission) {
scanningEle.style.display = 'block';
appScanningEle.style.display = 'block';
}
if (forSelectedPhotos) {
scanningEle.style.display = 'block';
appScanningEle.style.display = 'block';
}
QRReader.scan((result) => {
copiedText = result;
textBoxEle.value = result;
textBoxEle.select();
scanningEle.style.display = 'none';
appScanningEle.style.display = 'none';
if (isURL(result)) {
dialogOpenBtnElement.style.display = 'inline-block';
}
dialogElement.classList.remove('app__dialog--hide');
dialogOverlayElement.classList.remove('app__dialog--hide');
}, forSelectedPhotos);
}
//Hide dialog
function hideDialog() {
copiedText = null;
textBoxEle.value = '';
if (!window.isMediaStreamAPISupported) {
frame.src = '';
frame.className = '';
}
dialogElement.classList.add('app__dialog--hide');
dialogOverlayElement.classList.add('app__dialog--hide');
scan();
}
function selectFromPhoto() {
//Creating the camera element
var camera = document.createElement('input');
camera.setAttribute('type', 'file');
camera.setAttribute('capture', 'camera');
camera.id = 'camera';
window.appOverlay.style.borderStyle = '';
selectPhotoBtn.style.display = 'flex';
createFrame();
//Add the camera and img element to DOM
var pageContentElement = document.querySelector('.app__layout-content');
pageContentElement.appendChild(camera);
pageContentElement.appendChild(frame);
//Click of camera fab icon
selectPhotoBtn.addEventListener('click', () => {
scanningEle.style.display = 'none';
appScanningEle.style.display = 'none';
document.querySelector('#camera').click();
});
//On camera change
camera.addEventListener('change', (event) => {
if (event.target && event.target.files.length > 0) {
frame.className = 'app__overlay';
frame.src = URL.createObjectURL(event.target.files[0]);
if (!window.noCameraPermission) {
scanningEle.style.display = 'block';
appScanningEle.style.display = 'block';
}
window.appOverlay.style.borderColor = 'rgb(62, 78, 184)';
scan(true);
}
});
}
function showInfo() {
infoDialogElement.classList.remove('app__infodialog--hide');
infoDialogOverlayElement.classList.remove('app__infodialog--hide');
}
function closeInfoDialog() {
infoDialogElement.classList.add('app__infodialog--hide');
infoDialogOverlayElement.classList.add('app__infodialog--hide');
}
});
================================================
FILE: src/js/snackbar.js
================================================
var snackbar = {};
var snackBarElement = document.querySelector('.app__snackbar');
var snackbarMsg = null;
//To show notification
snackbar.show = (msg, options = 4000) => {
if (!msg) return;
if (snackbarMsg) {
snackbarMsg.remove();
}
snackbarMsg = document.createElement('div');
snackbarMsg.className = 'app__snackbar-msg';
snackbarMsg.textContent = msg;
snackBarElement.appendChild(snackbarMsg);
//Show toast for 3secs and hide it
setTimeout(() => {
snackbarMsg.remove();
}, options);
};
export default snackbar;
================================================
FILE: src/js/utils.js
================================================
export const isURL = (url = '') => {
if (!url || typeof url !== 'string') {
return false;
}
const protocol = '^(https?:\\/\\/)?';
const domain = '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|';
const ip = '((\\d{1,3}\\.){3}\\d{1,3}))';
const port = '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*';
const queryString = '(\\?[;&a-z\\d%_.~+=-]*)?';
const fragmentLocater = '(\\#[-a-z\\d_]*)?$';
const regex = new RegExp(`${protocol + domain + ip + port + queryString + fragmentLocater}`, 'i');
return regex.test(url);
};
export const hasProtocolInUrl = (url = '') => {
const protocol = '^(https?:\\/\\/)';
const regex = new RegExp(protocol, 'i');
return regex.test(url);
};
================================================
FILE: src/js/vendor/qrscan.js
================================================
import snackbar from '../snackbar.js';
var QRReader = {};
QRReader.active = false;
QRReader.webcam = null;
QRReader.canvas = null;
QRReader.ctx = null;
QRReader.decoder = null;
QRReader.setCanvas = () => {
QRReader.canvas = document.createElement('canvas');
QRReader.ctx = QRReader.canvas.getContext('2d');
};
function setPhotoSourceToScan(forSelectedPhotos) {
if (!forSelectedPhotos && window.isMediaStreamAPISupported) {
QRReader.webcam = document.querySelector('video');
} else {
QRReader.webcam = document.querySelector('img');
}
}
QRReader.init = () => {
var baseurl = '';
var streaming = false;
// Init Webcam + Canvas
setPhotoSourceToScan();
QRReader.setCanvas();
QRReader.decoder = new Worker(baseurl + 'decoder.js');
if (window.isMediaStreamAPISupported) {
// Resize webcam according to input
QRReader.webcam.addEventListener(
'play',
function(ev) {
if (!streaming) {
setCanvasProperties();
streaming = true;
}
},
false
);
} else {
setCanvasProperties();
}
function setCanvasProperties() {
QRReader.canvas.width = window.innerWidth;
QRReader.canvas.height = window.innerHeight;
}
function startCapture(constraints) {
navigator.mediaDevices
.getUserMedia(constraints)
.then(function(stream) {
QRReader.webcam.srcObject = stream;
QRReader.webcam.setAttribute('playsinline', true);
QRReader.webcam.setAttribute('controls', true);
setTimeout(() => {
document.querySelector('video').removeAttribute('controls');
});
})
.catch(function(err) {
console.log('Error occurred ', err);
showErrorMsg();
});
}
if (window.isMediaStreamAPISupported) {
navigator.mediaDevices
.enumerateDevices()
.then(function(devices) {
var device = devices.filter(function(device) {
var deviceLabel = device.label.split(',')[1];
if (device.kind == 'videoinput') {
return device;
}
});
var constraints;
if (device.length > 1) {
constraints = {
video: {
mandatory: {
sourceId: device[device.length - 1].deviceId ? device[device.length - 1].deviceId : null
}
},
audio: false
};
if (window.iOS) {
constraints.video.facingMode = 'environment';
}
startCapture(constraints);
} else if (device.length) {
constraints = {
video: {
mandatory: {
sourceId: device[0].deviceId ? device[0].deviceId : null
}
},
audio: false
};
if (window.iOS) {
constraints.video.facingMode = 'environment';
}
if (!constraints.video.mandatory.sourceId && !window.iOS) {
startCapture({ video: true });
} else {
startCapture(constraints);
}
} else {
startCapture({ video: true });
}
})
.catch(function(error) {
showErrorMsg();
console.error('Error occurred : ', error);
});
}
function showErrorMsg() {
window.noCameraPermission = true;
document.querySelector('.custom-scanner').style.display = 'none';
snackbar.show('Unable to access the camera', 10000);
}
};
/**
* \brief QRReader Scan Action
* Call this to start scanning for QR codes.
*
* \param A function(scan_result)
*/
QRReader.scan = function(callback, forSelectedPhotos) {
QRReader.active = true;
QRReader.setCanvas();
function onDecoderMessage(event) {
if (event.data.length > 0) {
var qrid = event.data[0][2];
QRReader.active = false;
callback(qrid);
}
setTimeout(newDecoderFrame, 0);
}
QRReader.decoder.onmessage = onDecoderMessage;
setTimeout(() => {
setPhotoSourceToScan(forSelectedPhotos);
});
// Start QR-decoder
function newDecoderFrame() {
if (!QRReader.active) return;
try {
QRReader.ctx.drawImage(QRReader.webcam, 0, 0, QRReader.canvas.width, QRReader.canvas.height);
var imgData = QRReader.ctx.getImageData(0, 0, QRReader.canvas.width, QRReader.canvas.height);
if (imgData.data) {
QRReader.decoder.postMessage(imgData);
}
} catch (e) {
// Try-Catch to circumvent Firefox Bug #879717
if (e.name == 'NS_ERROR_NOT_AVAILABLE') setTimeout(newDecoderFrame, 0);
}
}
newDecoderFrame();
};
export default QRReader;